release 3.5.0
diff --git a/dist/echarts.common.js b/dist/echarts.common.js
index 7560f46..d05d8ec 100644
--- a/dist/echarts.common.js
+++ b/dist/echarts.common.js
@@ -59,24 +59,25 @@
 	 */
 	module.exports = __webpack_require__(1);
 
-	__webpack_require__(100);
-	__webpack_require__(134);
-	__webpack_require__(141);
-	__webpack_require__(150);
-	__webpack_require__(292);
-	__webpack_require__(299);
-	__webpack_require__(293);
+	__webpack_require__(112);
+	__webpack_require__(148);
+	__webpack_require__(155);
+	__webpack_require__(164);
+	__webpack_require__(308);
+	__webpack_require__(315);
+	__webpack_require__(142);
+	__webpack_require__(309);
 
-	__webpack_require__(113);
-	__webpack_require__(328);
+	__webpack_require__(122);
+	__webpack_require__(349);
 
-	__webpack_require__(358);
-	__webpack_require__(364);
-	__webpack_require__(367);
-	__webpack_require__(329);
 	__webpack_require__(379);
+	__webpack_require__(385);
+	__webpack_require__(388);
+	__webpack_require__(350);
+	__webpack_require__(400);
 
-	__webpack_require__(391);
+	__webpack_require__(412);
 
 /***/ },
 /* 1 */
@@ -122,8 +123,8 @@
 	    var SeriesModel = __webpack_require__(28);
 
 	    var ComponentView = __webpack_require__(29);
-	    var ChartView = __webpack_require__(42);
-	    var graphic = __webpack_require__(43);
+	    var ChartView = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 	    var modelUtil = __webpack_require__(5);
 	    var throttle = __webpack_require__(81);
 
@@ -180,7 +181,7 @@
 	    /**
 	     * @module echarts~ECharts
 	     */
-	    function ECharts (dom, theme, opts) {
+	    function ECharts(dom, theme, opts) {
 	        opts = opts || {};
 
 	        // Get theme by name
@@ -251,17 +252,17 @@
 	        this._componentsMap = {};
 
 	        /**
-	         * @type {module:echarts/ExtensionAPI}
-	         * @private
-	         */
-	        this._api = new ExtensionAPI(this);
-
-	        /**
 	         * @type {module:echarts/CoordinateSystem}
 	         * @private
 	         */
 	        this._coordSysMgr = new CoordinateSystemManager();
 
+	        /**
+	         * @type {module:echarts/ExtensionAPI}
+	         * @private
+	         */
+	        this._api = new ExtensionAPI(this, this._coordSysMgr);
+
 	        Eventful.call(this);
 
 	        /**
@@ -286,6 +287,9 @@
 	        timsort(dataProcessorFuncs, prioritySortFunc);
 
 	        zr.animation.on('frame', this._onframe, this);
+
+	        // ECharts instance can be used as value.
+	        zrUtil.setAsPrimitive(this);
 	    }
 
 	    var echartsProto = ECharts.prototype;
@@ -364,7 +368,7 @@
 	            mainType !== 'graphic' && (this.__lastOnlyGraphic = false);
 	        }, this);
 
-	        this._model.setOption(option, optionPreprocessorFuncs);
+	        this._model.setOption(option, optionPreprocessorFuncs, this.__lastOnlyGraphic);
 
 	        if (lazyUpdate) {
 	            this[OPTION_UPDATED] = {silent: silent};
@@ -420,6 +424,13 @@
 	    };
 
 	    /**
+	     * @return {number}
+	     */
+	    echartsProto.getDevicePixelRatio = function () {
+	        return this._zr.painter.dpr || window.devicePixelRatio || 1;
+	    };
+
+	    /**
 	     * Get canvas which has all thing rendered
 	     * @param {Object} opts
 	     * @param {string} [opts.backgroundColor]
@@ -622,7 +633,7 @@
 	     *            geoIndex / geoId / geoName,
 	     *            bmapIndex / bmapId / bmapName,
 	     *            xAxisIndex / xAxisId / xAxisName,
-	     *            yAxisIndex / yAxisId / yAxisName
+	     *            yAxisIndex / yAxisId / yAxisName,
 	     *            gridIndex / gridId / gridName,
 	     *            ... (can be extended)
 	     *        }
@@ -707,6 +718,24 @@
 	            : data.getVisual(visualType);
 	    };
 
+	    /**
+	     * Get view of corresponding component model
+	     * @param  {module:echarts/model/Component} componentModel
+	     * @return {module:echarts/view/Component}
+	     */
+	    echartsProto.getViewOfComponentModel = function (componentModel) {
+	        return this._componentsMap[componentModel.__viewId];
+	    };
+
+	    /**
+	     * Get view of corresponding series model
+	     * @param  {module:echarts/model/Series} seriesModel
+	     * @return {module:echarts/view/Chart}
+	     */
+	    echartsProto.getViewOfSeriesModel = function (seriesModel) {
+	        return this._chartsMap[seriesModel.__viewId];
+	    };
+
 
 	    var updateMethods = {
 
@@ -715,7 +744,7 @@
 	         * @private
 	         */
 	        update: function (payload) {
-	            // console.time && console.time('update');
+	            // console.profile && console.profile('update');
 
 	            var ecModel = this._model;
 	            var api = this._api;
@@ -788,7 +817,11 @@
 	                }
 	            }
 
-	            // console.time && console.timeEnd('update');
+	            each(postUpdateFuncs, function (func) {
+	                func(ecModel, api);
+	            });
+
+	            // console.profile && console.profileEnd('update');
 	        },
 
 	        /**
@@ -884,6 +917,13 @@
 	     */
 	    function updateDirectly(ecIns, method, payload, mainType, subType) {
 	        var ecModel = ecIns._model;
+
+	        // broadcast
+	        if (!mainType) {
+	            each(ecIns._componentsViews.concat(ecIns._chartsViews), callView);
+	            return;
+	        }
+
 	        var query = {};
 	        query[mainType + 'Id'] = payload[mainType + 'Id'];
 	        query[mainType + 'Index'] = payload[mainType + 'Index'];
@@ -894,13 +934,16 @@
 
 	        // If dispatchAction before setOption, do nothing.
 	        ecModel && ecModel.eachComponent(condition, function (model, index) {
-	            var view = ecIns[
+	            callView(ecIns[
 	                mainType === 'series' ? '_chartsMap' : '_componentsMap'
-	            ][model.__viewId];
-	            if (view && view.__alive) {
-	                view[method](model, ecModel, ecIns._api, payload);
-	            }
+	            ][model.__viewId]);
 	        }, ecIns);
+
+	        function callView(view) {
+	            view && view.__alive && view[method] && view[method](
+	                view.__model, ecModel, ecIns._api, payload
+	            );
+	        }
 	    }
 
 	    /**
@@ -1001,14 +1044,6 @@
 	            return;
 	        }
 
-	        // if (__DEV__) {
-	        //     zrUtil.assert(
-	        //         !this[IN_MAIN_PROCESS],
-	        //         '`dispatchAction` should not be called during main process.'
-	        //         + 'unless updateMathod is "none".'
-	        //     );
-	        // }
-
 	        // May dispatchAction in rendering procedure
 	        if (this[IN_MAIN_PROCESS]) {
 	            this._pendingActions.push(payload);
@@ -1036,12 +1071,13 @@
 
 	    function doDispatchAction(payload, silent) {
 	        var payloadType = payload.type;
+	        var escapeConnect = payload.escapeConnect;
 	        var actionWrap = actions[payloadType];
 	        var actionInfo = actionWrap.actionInfo;
 
 	        var cptType = (actionInfo.update || 'update').split(':');
 	        var updateMethod = cptType.pop();
-	        cptType = cptType[0] && parseClassType(cptType[0]);
+	        cptType = cptType[0] != null && parseClassType(cptType[0]);
 
 	        this[IN_MAIN_PROCESS] = true;
 
@@ -1061,10 +1097,9 @@
 	        var eventObj;
 	        var isHighDown = payloadType === 'highlight' || payloadType === 'downplay';
 
-	        for (var i = 0; i < payloads.length; i++) {
-	            var batchItem = payloads[i];
+	        each(payloads, function (batchItem) {
 	            // Action can specify the event by return it.
-	            eventObj = actionWrap.action(batchItem, this._model);
+	            eventObj = actionWrap.action(batchItem, this._model, this._api);
 	            // Emit event outside
 	            eventObj = eventObj || zrUtil.extend({}, batchItem);
 	            // Convert type to eventType
@@ -1079,7 +1114,7 @@
 	            else if (cptType) {
 	                updateDirectly(this, updateMethod, batchItem, cptType.main, cptType.sub);
 	            }
-	        }
+	        }, this);
 
 	        if (updateMethod !== 'none' && !isHighDown && !cptType) {
 	            // Still dirty
@@ -1097,6 +1132,7 @@
 	        if (batched) {
 	            eventObj = {
 	                type: actionInfo.event || payloadType,
+	                escapeConnect: escapeConnect,
 	                batch: eventObjBatch
 	            };
 	        }
@@ -1156,6 +1192,11 @@
 
 	        // If use hover layer
 	        updateHoverLayerStatus(this._zr, ecModel);
+
+	        // Post render
+	        each(postUpdateFuncs, function (func) {
+	            func(ecModel, api);
+	        });
 	    }
 
 	    /**
@@ -1492,10 +1533,10 @@
 	        });
 	    }
 	    /**
-	     * @type {Array.<Function>}
+	     * @type {Object} key: actionType.
 	     * @inner
 	     */
-	    var actions = [];
+	    var actions = {};
 
 	    /**
 	     * Map eventType to actionType
@@ -1517,6 +1558,12 @@
 	    var optionPreprocessorFuncs = [];
 
 	    /**
+	     * @type {Array.<Function>}
+	     * @inner
+	     */
+	    var postUpdateFuncs = [];
+
+	    /**
 	     * Visual encoding functions of each stage
 	     * @type {Array.<Object.<string, Function>>}
 	     * @inner
@@ -1546,27 +1593,32 @@
 	        /**
 	         * @type {number}
 	         */
-	        version: '3.4.0',
+	        version: '3.5.0',
 	        dependencies: {
-	            zrender: '3.3.0'
+	            zrender: '3.4.0'
 	        }
 	    };
 
 	    function enableConnect(chart) {
-
 	        var STATUS_PENDING = 0;
 	        var STATUS_UPDATING = 1;
 	        var STATUS_UPDATED = 2;
 	        var STATUS_KEY = '__connectUpdateStatus';
+
 	        function updateConnectedChartsStatus(charts, status) {
 	            for (var i = 0; i < charts.length; i++) {
 	                var otherChart = charts[i];
 	                otherChart[STATUS_KEY] = status;
 	            }
 	        }
+
 	        zrUtil.each(eventActionMap, function (actionType, eventType) {
 	            chart._messageCenter.on(eventType, function (event) {
 	                if (connectedGroups[chart.group] && chart[STATUS_KEY] !== STATUS_PENDING) {
+	                    if (event && event.escapeConnect) {
+	                        return;
+	                    }
+
 	                    var action = chart.makeActionFromEvent(event);
 	                    var otherCharts = [];
 
@@ -1586,8 +1638,8 @@
 	                }
 	            });
 	        });
-
 	    }
+
 	    /**
 	     * @param {HTMLDomElement} dom
 	     * @param {Object} [theme]
@@ -1613,7 +1665,13 @@
 	            if (!dom) {
 	                throw new Error('Initialize failed: invalid dom.');
 	            }
-	            if (zrUtil.isDom(dom) && dom.nodeName.toUpperCase() !== 'CANVAS' && (!dom.clientWidth || !dom.clientHeight)) {
+	            if (zrUtil.isDom(dom)
+	                && dom.nodeName.toUpperCase() !== 'CANVAS'
+	                && (
+	                    (!dom.clientWidth && (!opts || opts.width == null))
+	                    || (!dom.clientHeight && (!opts || opts.height == null))
+	                )
+	            ) {
 	                console.warn('Can\'t get dom width or height');
 	            }
 	        }
@@ -1654,6 +1712,7 @@
 	    };
 
 	    /**
+	     * @DEPRECATED
 	     * @return {string} groupId
 	     */
 	    echarts.disConnect = function (groupId) {
@@ -1661,6 +1720,11 @@
 	    };
 
 	    /**
+	     * @return {string} groupId
+	     */
+	    echarts.disconnect = echarts.disConnect;
+
+	    /**
 	     * Dispose a chart instance
 	     * @param  {module:echarts~ECharts|HTMLDomElement|string} chart
 	     */
@@ -1728,6 +1792,14 @@
 	    };
 
 	    /**
+	     * Register postUpdater
+	     * @param {Function} postUpdateFunc
+	     */
+	    echarts.registerPostUpdate = function (postUpdateFunc) {
+	        postUpdateFuncs.push(postUpdateFunc);
+	    };
+
+	    /**
 	     * Usage:
 	     * registerAction('someAction', 'someEvent', function () { ... });
 	     * registerAction('someAction', function () { ... });
@@ -1921,11 +1993,14 @@
 	    // --------
 	    // Exports
 	    // --------
-	    //
+	    echarts.zrender = zrender;
+
 	    echarts.List = __webpack_require__(98);
 	    echarts.Model = __webpack_require__(12);
 
-	    echarts.graphic = __webpack_require__(43);
+	    echarts.Axis = __webpack_require__(100);
+
+	    echarts.graphic = __webpack_require__(44);
 	    echarts.number = __webpack_require__(7);
 	    echarts.format = __webpack_require__(6);
 	    echarts.throttle = throttle.throttle;
@@ -1937,13 +2012,16 @@
 	    each([
 	            'map', 'each', 'filter', 'indexOf', 'inherits', 'reduce', 'filter',
 	            'bind', 'curry', 'isArray', 'isString', 'isObject', 'isFunction',
-	            'extend', 'defaults', 'clone'
+	            'extend', 'defaults', 'clone', 'merge'
 	        ],
 	        function (name) {
 	            echarts.util[name] = zrUtil[name];
 	        }
 	    );
 
+	    echarts.helper = __webpack_require__(101);
+
+
 	    // PRIORITY
 	    echarts.PRIORITY = {
 	        PROCESSOR: {
@@ -2165,7 +2243,7 @@
 	            this._optionManager = optionManager;
 	        },
 
-	        setOption: function (option, optionPreprocessorFuncs) {
+	        setOption: function (option, optionPreprocessorFuncs, onlyGraphic) {
 	            zrUtil.assert(
 	                !(OPTION_INNER_KEY in option),
 	                'please use chart.getOption()'
@@ -2173,7 +2251,7 @@
 
 	            this._optionManager.setOption(option, optionPreprocessorFuncs);
 
-	            this.resetOption();
+	            this.resetOption(null, onlyGraphic);
 	        },
 
 	        /**
@@ -2183,7 +2261,7 @@
 	         *                      'media': only reset media query option
 	         * @return {boolean} Whether option changed.
 	         */
-	        resetOption: function (type) {
+	        resetOption: function (type, onlyGraphic) {
 	            var optionChanged = false;
 	            var optionManager = this._optionManager;
 
@@ -2194,7 +2272,11 @@
 	                    initBase.call(this, baseOption);
 	                }
 	                else {
-	                    this.restoreData();
+	                    // If only graphic, other series and component will not
+	                    // go through update process, data should not be restored.
+	                    // Otherwise grphic els mounted on data will be eliminated
+	                    // and downplay will not work.
+	                    !onlyGraphic && this.restoreData();
 	                    this.mergeOption(baseOption);
 	                }
 	                optionChanged = true;
@@ -2435,7 +2517,7 @@
 	            }
 	            else {
 	                // Return all components with mainType
-	                result = cpts;
+	                result = cpts.slice();
 	            }
 
 	            return filterBySubType(result, condition);
@@ -2714,10 +2796,12 @@
 	        this.option[OPTION_INNER_KEY] = 1;
 
 	        /**
+	         * Init with series: [], in case of calling findSeries method
+	         * before series initialized.
 	         * @type {Object.<string, Array.<module:echarts/model/Model>>}
 	         * @private
 	         */
-	        this._componentsMap = {};
+	        this._componentsMap = {series: []};
 
 	        /**
 	         * Mapping between filtered series list and raw series list.
@@ -2884,7 +2968,7 @@
 	        else if (TYPED_ARRAY[typeStr]) {
 	            result = source.constructor.from(source);
 	        }
-	        else if (!BUILTIN_OBJECT[typeStr] && !isDom(source)) {
+	        else if (!BUILTIN_OBJECT[typeStr] && !isPrimitive(source) && !isDom(source)) {
 	            result = {};
 	            for (var key in source) {
 	                if (source.hasOwnProperty(key)) {
@@ -2920,8 +3004,10 @@
 	                    && !isArray(targetProp)
 	                    && !isDom(sourceProp)
 	                    && !isDom(targetProp)
-	                    && !isBuildInObject(sourceProp)
-	                    && !isBuildInObject(targetProp)
+	                    && !isBuiltInObject(sourceProp)
+	                    && !isBuiltInObject(targetProp)
+	                    && !isPrimitive(sourceProp)
+	                    && !isPrimitive(targetProp)
 	                ) {
 	                    // 如果需要递归覆盖,就递归调用merge
 	                    merge(targetProp, sourceProp, overwrite);
@@ -3248,7 +3334,7 @@
 	     * @param {*} value
 	     * @return {boolean}
 	     */
-	    function isBuildInObject(value) {
+	    function isBuiltInObject(value) {
 	        return !!BUILTIN_OBJECT[objToString.call(value)];
 	    }
 
@@ -3307,6 +3393,18 @@
 	        }
 	    }
 
+	    var primitiveKey = '__ec_primitive__';
+	    /**
+	     * Set an object as primitive to be ignored traversing children in clone or merge
+	     */
+	    function setAsPrimitive(obj) {
+	        obj[primitiveKey] = true;
+	    }
+
+	    function isPrimitive(obj) {
+	        return obj[primitiveKey];
+	    }
+
 	    var util = {
 	        inherits: inherits,
 	        mixin: mixin,
@@ -3331,11 +3429,12 @@
 	        isString: isString,
 	        isObject: isObject,
 	        isFunction: isFunction,
-	        isBuildInObject: isBuildInObject,
+	        isBuiltInObject: isBuiltInObject,
 	        isDom: isDom,
 	        eqNaN: eqNaN,
 	        retrieve: retrieve,
 	        assert: assert,
+	        setAsPrimitive: setAsPrimitive,
 	        noop: function () {}
 	    };
 	    module.exports = util;
@@ -3440,7 +3539,12 @@
 	            return value;
 	        }
 
-	        if (dimType === 'time' && !isFinite(value) && value != null && value !== '-') {
+	        if (dimType === 'time'
+	            // spead up when using timestamp
+	            && typeof value !== 'number'
+	            && value != null
+	            && value !== '-'
+	        ) {
 	            value = +nubmerUtil.parseDate(value);
 	        }
 
@@ -3484,10 +3588,6 @@
 	         */
 	        getDataParams: function (dataIndex, dataType) {
 	            var data = this.getData(dataType);
-
-	            var seriesIndex = this.seriesIndex;
-	            var seriesName = this.name;
-
 	            var rawValue = this.getRawValue(dataIndex, dataType);
 	            var rawDataIndex = data.getRawIndex(dataIndex);
 	            var name = data.getName(dataIndex, true);
@@ -3497,8 +3597,9 @@
 	                componentType: this.mainType,
 	                componentSubType: this.subType,
 	                seriesType: this.mainType === 'series' ? this.subType : null,
-	                seriesIndex: seriesIndex,
-	                seriesName: seriesName,
+	                seriesIndex: this.seriesIndex,
+	                seriesId: this.id,
+	                seriesName: this.name,
 	                name: name,
 	                dataIndex: rawDataIndex,
 	                data: itemOpt,
@@ -3716,7 +3817,7 @@
 	                ? opt.name + ''
 	                : existCpt
 	                ? existCpt.name
-	                : '\0-';
+	                : '\0-'; // name may be displayed on screen, so use '-'.
 
 	            if (existCpt) {
 	                keyInfo.id = existCpt.id;
@@ -3832,13 +3933,37 @@
 	    };
 
 	    /**
+	     * Enable property storage to any host object.
+	     * Notice: Serialization is not supported.
+	     *
+	     * For example:
+	     * var get = modelUitl.makeGetter();
+	     *
+	     * function some(hostObj) {
+	     *      get(hostObj)._someProperty = 1212;
+	     *      ...
+	     * }
+	     *
+	     * @return {Function}
+	     */
+	    modelUtil.makeGetter = (function () {
+	        var index = 0;
+	        return function () {
+	            var key = '\0__ec_prop_getter_' + index++;
+	            return function (hostObj) {
+	                return hostObj[key] || (hostObj[key] = {});
+	            };
+	        };
+	    })();
+
+	    /**
 	     * @param {module:echarts/model/Global} ecModel
 	     * @param {string|Object} finder
 	     *        If string, e.g., 'geo', means {geoIndex: 0}.
 	     *        If Object, could contain some of these properties below:
 	     *        {
 	     *            seriesIndex, seriesId, seriesName,
-	     *            geoIndex, geoId, goeName,
+	     *            geoIndex, geoId, geoName,
 	     *            bmapIndex, bmapId, bmapName,
 	     *            xAxisIndex, xAxisId, xAxisName,
 	     *            yAxisIndex, yAxisId, yAxisName,
@@ -3852,8 +3977,11 @@
 	     *            geoId: ['aa', 'cc'],
 	     *            gridName: ['xx', 'rr']
 	     *        }
+	     *        xxxIndex can be set as 'all' (means all xxx) or 'none' (means not specify)
+	     *        If nothing or null/undefined specified, return nothing.
 	     * @param {Object} [opt]
 	     * @param {string} [opt.defaultMainType]
+	     * @param {Array.<string>} [opt.includeMainTypes]
 	     * @return {Object} result like:
 	     *        {
 	     *            seriesModels: [seriesModel1, seriesModel2],
@@ -3892,14 +4020,22 @@
 
 	            var parsedKey = key.match(/^(\w+)(Index|Id|Name)$/) || [];
 	            var mainType = parsedKey[1];
-	            var queryType = parsedKey[2];
+	            var queryType = (parsedKey[2] || '').toLowerCase();
 
-	            if (!mainType || !queryType) {
+	            if (!mainType
+	                || !queryType
+	                || value == null
+	                || (queryType === 'index' && value === 'none')
+	                || (opt && opt.includeMainTypes && zrUtil.indexOf(opt.includeMainTypes, mainType) < 0)
+	            ) {
 	                return;
 	            }
 
 	            var queryParam = {mainType: mainType};
-	            queryParam[queryType.toLowerCase()] = value;
+	            if (queryType !== 'index' || value !== 'all') {
+	                queryParam[queryType] = value;
+	            }
+
 	            var models = ecModel.queryComponents(queryParam);
 	            result[mainType + 'Models'] = models;
 	            result[mainType + 'Model'] = models[0];
@@ -3915,6 +4051,7 @@
 	    module.exports = modelUtil;
 
 
+
 /***/ },
 /* 6 */
 /***/ function(module, exports, __webpack_require__) {
@@ -4030,6 +4167,24 @@
 	        return tpl;
 	    };
 
+	    /**
+	     * simple Template formatter
+	     *
+	     * @param {string} tpl
+	     * @param {Object} param
+	     * @param {boolean} [encode=false]
+	     * @return {string}
+	     */
+	    formatUtil.formatTplSimple = function (tpl, param, encode) {
+	        zrUtil.each(param, function (value, key) {
+	            tpl = tpl.replace(
+	                '{' + key + '}',
+	                encode ? encodeHTML(value) : value
+	            );
+	        });
+	        return tpl;
+	    };
+
 
 	    /**
 	     * @param {string} str
@@ -4044,9 +4199,15 @@
 	     * ISO Date format
 	     * @param {string} tpl
 	     * @param {number} value
+	     * @param {boolean} [isLocal=false] Default use UTC
+	     *  Why default UTC? In most case, time provided by user is
+	     *  understood in UTC. For example, new Date('2012-01-01')
+	     *  or a string '2012-01-01' or a timestamp. So it is
+	     *  recommended to format time in UTC.
+	     *  (see `echarts/util/number.js#parseDate`);
 	     * @inner
 	     */
-	    formatUtil.formatTime = function (tpl, value) {
+	    formatUtil.formatTime = function (tpl, value, isLocal) {
 	        if (tpl === 'week'
 	            || tpl === 'month'
 	            || tpl === 'quarter'
@@ -4057,12 +4218,13 @@
 	        }
 
 	        var date = numberUtil.parseDate(value);
-	        var y = date.getFullYear();
-	        var M = date.getMonth() + 1;
-	        var d = date.getDate();
-	        var h = date.getHours();
-	        var m = date.getMinutes();
-	        var s = date.getSeconds();
+	        var utc = isLocal ? '' : 'UTC';
+	        var y = date['get' + utc + 'FullYear']();
+	        var M = date['get' + utc + 'Month']() + 1;
+	        var d = date['get' + utc + 'Date']();
+	        var h = date['get' + utc + 'Hours']();
+	        var m = date['get' + utc + 'Minutes']();
+	        var s = date['get' + utc + 'Seconds']();
 
 	        tpl = tpl.replace('MM', s2d(M))
 	            .toLowerCase()
@@ -4094,6 +4256,7 @@
 	    module.exports = formatUtil;
 
 
+
 /***/ },
 /* 7 */
 /***/ function(module, exports) {
@@ -4204,15 +4367,18 @@
 	    /**
 	     * Fix rounding error of float numbers
 	     * @param {number} x
-	     * @return {number}
+	     * @param {number} [precision]
+	     * @param {boolean} [returnStr]
+	     * @return {number|string}
 	     */
-	    number.round = function (x, precision) {
+	    number.round = function (x, precision, returnStr) {
 	        if (precision == null) {
 	            precision = 10;
 	        }
 	        // Avoid range error
 	        precision = Math.min(Math.max(0, precision), 20);
-	        return +(+x).toFixed(precision);
+	        x = (+x).toFixed(precision);
+	        return returnStr ? x : +x;
 	    };
 
 	    number.asc = function (arr) {
@@ -4290,8 +4456,22 @@
 	        return val > -RADIAN_EPSILON && val < RADIAN_EPSILON;
 	    };
 
+	    var TIME_REG = /^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d\d)(?::(\d\d)(?:[.,](\d+))?)?)?(?:Z|([\+\-]\d\d):?\d\d)?)?)?)?)?$/; // jshint ignore:line
+	    var TIMEZONE_OFFSET = (new Date()).getTimezoneOffset();
+
 	    /**
-	     * @param {string|Date|number} value
+	     * @param {string|Date|number} value These values can be accepted:
+	     *   + An instance of Date, represent a time in its own time zone.
+	     *   + Or string in a subset of ISO 8601, only including:
+	     *     + only year, month, date: '2012-03', '2012-03-01', '2012-03-01 05', '2012-03-01 05:06',
+	     *     + separated with T or space: '2012-03-01T12:22:33.123', '2012-03-01 12:22:33.123',
+	     *     + time zone: '2012-03-01T12:22:33Z', '2012-03-01T12:22:33+8000', '2012-03-01T12:22:33-05:00',
+	     *     all of which will be treated as they reperent a time in UTC
+	     *     if time zone is not specified.
+	     *   + Or other string format, including:
+	     *     '2012', '2012-3-1', '2012/3/1', '2012/03/01',
+	     *     '2009/6/12 2:00', '2009/6/12 2:05:08', '2009/6/12 2:05:08.123'
+	     *   + a timestamp, which represent a time in UTC.
 	     * @return {Date} date
 	     */
 	    number.parseDate = function (value) {
@@ -4299,13 +4479,32 @@
 	            return value;
 	        }
 	        else if (typeof value === 'string') {
-	            // Treat as ISO format. See issue #3623
-	            var ret = new Date(value);
-	            if (isNaN(+ret)) {
-	                // FIXME new Date('1970-01-01') is UTC, new Date('1970/01/01') is local
-	                ret = new Date(new Date(value.replace(/-/g, '/')) - new Date('1970/01/01'));
+	            // Different browsers parse date in different way, so we parse it manually.
+	            // Some other issues:
+	            // new Date('1970-01-01') is UTC,
+	            // new Date('1970/01/01') and new Date('1970-1-01') is local.
+	            // See issue #3623
+	            var match = TIME_REG.exec(value);
+
+	            if (!match) {
+	                // return Invalid Date.
+	                return new Date(NaN);
 	            }
-	            return ret;
+
+	            // match[n] can only be string or undefined.
+	            // But take care of '12' + 1 => '121'.
+	            return new Date(
+	                +match[1],
+	                +(match[2] || 1) - 1,
+	                +match[3] || 1,
+	                +match[4] || 0,
+	                +(match[5] || 0) - (match[8] || 0) * 60 - TIMEZONE_OFFSET,
+	                +match[6] || 0,
+	                +match[7] || 0
+	            );
+	        }
+	        else if (value == null) {
+	            return new Date(NaN);
 	        }
 
 	        return new Date(Math.round(value));
@@ -5606,6 +5805,7 @@
 	    };
 
 	    /**
+	     * Notice, parseClassType('') should returns {main: '', sub: ''}
 	     * @public
 	     */
 	    var parseClassType = clazz.parseClassType = function (componentType) {
@@ -5889,11 +6089,13 @@
 	               properties[i][1] = properties[i][0];
 	            }
 	        }
-	        return function (excludes) {
+	        return function (excludes, includes) {
 	            var style = {};
 	            for (var i = 0; i < properties.length; i++) {
 	                var propName = properties[i][1];
-	                if (excludes && zrUtil.indexOf(excludes, propName) >= 0) {
+	                if ((excludes && zrUtil.indexOf(excludes, propName) >= 0)
+	                    || (includes && zrUtil.indexOf(includes, propName) < 0)
+	                ) {
 	                    continue;
 	                }
 	                var val = this.getShallow(propName);
@@ -6001,8 +6203,8 @@
 	        ]
 	    );
 	    module.exports = {
-	        getItemStyle: function (excludes) {
-	            var style = getItemStyle.call(this, excludes);
+	        getItemStyle: function (excludes, includes) {
+	            var style = getItemStyle.call(this, excludes, includes);
 	            var lineDash = this.getBorderLineDash();
 	            lineDash && (style.lineDash = lineDash);
 	            return style;
@@ -6413,10 +6615,21 @@
 
 	    var layout = {};
 
+	    /**
+	     * @public
+	     */
 	    var LOCATION_PARAMS = layout.LOCATION_PARAMS = [
 	        'left', 'right', 'top', 'bottom', 'width', 'height'
 	    ];
 
+	    /**
+	     * @public
+	     */
+	    var HV_NAMES = layout.HV_NAMES = [
+	        ['width', 'left', 'right'],
+	        ['height', 'top', 'bottom']
+	    ];
+
 	    function boxLayout(orient, group, gap, maxWidth, maxHeight) {
 	        var x = 0;
 	        var y = 0;
@@ -6733,6 +6946,15 @@
 	    };
 
 	    /**
+	     * @param {Object} option Contains some of the properties in HV_NAMES.
+	     * @param {number} hvIdx 0: horizontal; 1: vertical.
+	     */
+	    layout.sizeCalculable = function (option, hvIdx) {
+	        return option[HV_NAMES[hvIdx][0]] != null
+	            || (option[HV_NAMES[hvIdx][1]] != null && option[HV_NAMES[hvIdx][2]] != null);
+	    };
+
+	    /**
 	     * Consider Case:
 	     * When defulat option has {left: 0, width: 100}, and we set {right: 0}
 	     * through setOption or media query, using normal zrUtil.merge will cause
@@ -6754,24 +6976,26 @@
 	     * @param {Object} targetOption
 	     * @param {Object} newOption
 	     * @param {Object|string} [opt]
-	     * @param {boolean} [opt.ignoreSize=false] Some component must has width and height.
+	     * @param {boolean|Array.<boolean>} [opt.ignoreSize=false] Some component must has width and height.
 	     */
 	    layout.mergeLayoutParam = function (targetOption, newOption, opt) {
 	        !zrUtil.isObject(opt) && (opt = {});
-	        var hNames = ['width', 'left', 'right']; // Order by priority.
-	        var vNames = ['height', 'top', 'bottom']; // Order by priority.
-	        var hResult = merge(hNames);
-	        var vResult = merge(vNames);
 
-	        copy(hNames, targetOption, hResult);
-	        copy(vNames, targetOption, vResult);
+	        var ignoreSize = opt.ignoreSize;
+	        !zrUtil.isArray(ignoreSize) && (ignoreSize = [ignoreSize, ignoreSize]);
 
-	        function merge(names) {
+	        var hResult = merge(HV_NAMES[0], 0);
+	        var vResult = merge(HV_NAMES[1], 1);
+
+	        copy(HV_NAMES[0], targetOption, hResult);
+	        copy(HV_NAMES[1], targetOption, vResult);
+
+	        function merge(names, hvIdx) {
 	            var newParams = {};
 	            var newValueCount = 0;
 	            var merged = {};
 	            var mergedValueCount = 0;
-	            var enoughParamNumber = opt.ignoreSize ? 1 : 2;
+	            var enoughParamNumber = 2;
 
 	            each(names, function (name) {
 	                merged[name] = targetOption[name];
@@ -6784,6 +7008,13 @@
 	                hasValue(merged, name) && mergedValueCount++;
 	            });
 
+	            if (ignoreSize[hvIdx]) {
+	                // Only one of left/height is premitted to exist.
+	                hasValue(newOption, names[2]) && (merged[names[1]] = null);
+	                hasValue(newOption, names[1]) && (merged[names[2]] = null);
+	                return merged;
+	            }
+
 	            // Case: newOption: {width: ..., right: ...},
 	            // or targetOption: {right: ...} and newOption: {width: ...},
 	            // There is no conflict when merged only has params count
@@ -6799,7 +7030,6 @@
 	            }
 	            else {
 	                // Chose another param from targetOption by priority.
-	                // When 'ignoreSize', enoughParamNumber is 1 and those will not happen.
 	                for (var i = 0; i < names.length; i++) {
 	                    var name = names[i];
 	                    if (!hasProp(newParams, name) && hasProp(targetOption, name)) {
@@ -6850,6 +7080,7 @@
 	    module.exports = layout;
 
 
+
 /***/ },
 /* 22 */
 /***/ function(module, exports) {
@@ -6911,7 +7142,7 @@
 	        // Default is source-over
 	        blendMode: null,
 
-	        animation: true,
+	        animation: 'auto',
 	        animationDuration: 1000,
 	        animationDurationUpdate: 300,
 	        animationEasing: 'exponentialOut',
@@ -6980,14 +7211,18 @@
 	    var zrUtil = __webpack_require__(4);
 
 	    var echartsAPIList = [
-	        'getDom', 'getZr', 'getWidth', 'getHeight', 'dispatchAction', 'isDisposed',
-	        'on', 'off', 'getDataURL', 'getConnectedDataURL', 'getModel', 'getOption'
+	        'getDom', 'getZr', 'getWidth', 'getHeight', 'getDevicePixelRatio', 'dispatchAction', 'isDisposed',
+	        'on', 'off', 'getDataURL', 'getConnectedDataURL', 'getModel', 'getOption',
+	        'getViewOfComponentModel', 'getViewOfSeriesModel'
 	    ];
 
-	    function ExtensionAPI(chartInstance) {
+	    function ExtensionAPI(chartInstance, coordSysMgr) {
 	        zrUtil.each(echartsAPIList, function (name) {
 	            this[name] = zrUtil.bind(chartInstance[name], chartInstance);
 	        }, this);
+
+	        // Inject getCoordinateSystems to ecModel
+	        this.getCoordinateSystems = zrUtil.bind(coordSysMgr.getCoordinateSystems, coordSysMgr);
 	    }
 
 	    module.exports = ExtensionAPI;
@@ -7002,34 +7237,6 @@
 
 	    var zrUtil = __webpack_require__(4);
 
-	    /**
-	     * Interface of Coordinate System Class
-	     *
-	     * create:
-	     *     @param {module:echarts/model/Global} ecModel
-	     *     @param {module:echarts/ExtensionAPI} api
-	     *     @return {Object} coordinate system instance
-	     *
-	     * update:
-	     *     @param {module:echarts/model/Global} ecModel
-	     *     @param {module:echarts/ExtensionAPI} api
-	     *
-	     * convertToPixel:
-	     * convertFromPixel:
-	     *     These two methods is also responsible for determine whether this
-	     *     coodinate system is applicable to the given `finder`.
-	     *     Each coordinate system will be tried, util one returns none
-	     *     null/undefined value.
-	     *     @param {module:echarts/model/Global} ecModel
-	     *     @param {Object} finder
-	     *     @param {Array|number} value
-	     *     @return {Array|number} convert result.
-	     *
-	     * containPoint:
-	     *     @param {Array.<number>} point In pixel coordinate system.
-	     *     @return {boolean}
-	     */
-
 	    var coordinateSystemCreators = {};
 
 	    function CoordinateSystemManager() {
@@ -7583,11 +7790,15 @@
 
 	            this.mergeDefaultAndTheme(option, ecModel);
 
+	            var data = this.getInitialData(option, ecModel);
+	            if (true) {
+	                zrUtil.assert(data, 'getInitialData returned invalid data.');
+	            }
 	            /**
 	             * @type {module:echarts/data/List|module:echarts/data/Tree|module:echarts/data/Graph}
 	             * @private
 	             */
-	            set(this, 'dataBeforeProcessed', this.getInitialData(option, ecModel));
+	            set(this, 'dataBeforeProcessed', data);
 
 	            // If we reverse the order (make data firstly, and then make
 	            // dataBeforeProcessed by cloneShallow), cloneShallow will
@@ -7824,9 +8035,9 @@
 	         * @param {Array.<string>|string} dim
 	         * @param {Array.<number>} value
 	         * @param {module:echarts/coord/single/SingleAxis} baseAxis
-	         * @return {Array.<number>} data indices.
+	         * @return {Object} {dataIndices, nestestValue}.
 	         */
-	        getAxisTooltipDataIndex: null,
+	        getAxisTooltipData: null,
 
 	        /**
 	         * See tooltip.
@@ -9083,7 +9294,7 @@
 	    var isString = util.isString;
 	    var isFunction = util.isFunction;
 	    var isObject = util.isObject;
-	    var log = __webpack_require__(40);
+	    var log = __webpack_require__(41);
 
 	    /**
 	     * @alias modue:zrender/mixin/Animatable
@@ -9860,6 +10071,24 @@
 	            return this;
 	        },
 
+	        pause: function () {
+	            for (var i = 0; i < this._clipList.length; i++) {
+	                this._clipList[i].pause();
+	            }
+	            this._paused = true;
+	        },
+
+	        resume: function () {
+	            for (var i = 0; i < this._clipList.length; i++) {
+	                this._clipList[i].resume();
+	            }
+	            this._paused = false;
+	        },
+
+	        isPaused: function () {
+	            return !!this._paused;
+	        },
+
 	        _doneCallback: function () {
 	            // Clear all tracks
 	            this._tracks = {};
@@ -10022,13 +10251,16 @@
 	        this.onframe = options.onframe;
 	        this.ondestroy = options.ondestroy;
 	        this.onrestart = options.onrestart;
+
+	        this._pausedTime = 0;
+	        this._paused = false;
 	    }
 
 	    Clip.prototype = {
 
 	        constructor: Clip,
 
-	        step: function (globalTime) {
+	        step: function (globalTime, deltaTime) {
 	            // Set startTime on first step, or _startTime may has milleseconds different between clips
 	            // PENDING
 	            if (!this._initialized) {
@@ -10036,7 +10268,12 @@
 	                this._initialized = true;
 	            }
 
-	            var percent = (globalTime - this._startTime) / this._life;
+	            if (this._paused) {
+	                this._pausedTime += deltaTime;
+	                return;
+	            }
+
+	            var percent = (globalTime - this._startTime - this._pausedTime) / this._life;
 
 	            // 还没开始
 	            if (percent < 0) {
@@ -10072,17 +10309,26 @@
 	        },
 
 	        restart: function (globalTime) {
-	            var remainder = (globalTime - this._startTime) % this._life;
+	            var remainder = (globalTime - this._startTime - this._pausedTime) % this._life;
 	            this._startTime = globalTime - remainder + this.gap;
+	            this._pausedTime = 0;
 
 	            this._needsRemove = false;
 	        },
 
-	        fire: function(eventType, arg) {
+	        fire: function (eventType, arg) {
 	            eventType = 'on' + eventType;
 	            if (this[eventType]) {
 	                this[eventType](this._target, arg);
 	            }
+	        },
+
+	        pause: function () {
+	            this._paused = true;
+	        },
+
+	        resume: function () {
+	            this._paused = false;
 	        }
 	    };
 
@@ -10443,13 +10689,15 @@
 
 /***/ },
 /* 39 */
-/***/ function(module, exports) {
+/***/ function(module, exports, __webpack_require__) {
 
 	/**
 	 * @module zrender/tool/color
 	 */
 
 
+	    var LRU = __webpack_require__(40);
+
 	    var kCSSColorTable = {
 	        'transparent': [0,0,0,0], 'aliceblue': [240,248,255,1],
 	        'antiquewhite': [250,235,215,1], 'aqua': [0,255,255,1],
@@ -10579,15 +10827,40 @@
 	        return a + (b - a) * p;
 	    }
 
+	    function setRgba(out, r, g, b, a) {
+	        out[0] = r; out[1] = g; out[2] = b; out[3] = a;
+	        return out;
+	    }
+	    function copyRgba(out, a) {
+	        out[0] = a[0]; out[1] = a[1]; out[2] = a[2]; out[3] = a[3];
+	        return out;
+	    }
+	    var colorCache = new LRU(20);
+	    var lastRemovedArr = null;
+	    function putToCache(colorStr, rgbaArr) {
+	        // Reuse removed array
+	        if (lastRemovedArr) {
+	            copyRgba(lastRemovedArr, rgbaArr);
+	        }
+	        lastRemovedArr = colorCache.put(colorStr, lastRemovedArr || (rgbaArr.slice()));
+	    }
 	    /**
 	     * @param {string} colorStr
+	     * @param {Array.<number>} out
 	     * @return {Array.<number>}
 	     * @memberOf module:zrender/util/color
 	     */
-	    function parse(colorStr) {
+	    function parse(colorStr, rgbaArr) {
 	        if (!colorStr) {
 	            return;
 	        }
+	        rgbaArr = rgbaArr || [];
+
+	        var cached = colorCache.get(colorStr);
+	        if (cached) {
+	            return copyRgba(rgbaArr, cached);
+	        }
+
 	        // colorStr may be not string
 	        colorStr = colorStr + '';
 	        // Remove all whitespace, not compliant, but should just be more accepting.
@@ -10595,7 +10868,9 @@
 
 	        // Color keywords (and transparent) lookup.
 	        if (str in kCSSColorTable) {
-	            return kCSSColorTable[str].slice();  // dup.
+	            copyRgba(rgbaArr, kCSSColorTable[str]);
+	            putToCache(colorStr, rgbaArr);
+	            return rgbaArr;
 	        }
 
 	        // #abc and #abc123 syntax.
@@ -10603,26 +10878,32 @@
 	            if (str.length === 4) {
 	                var iv = parseInt(str.substr(1), 16);  // TODO(deanm): Stricter parsing.
 	                if (!(iv >= 0 && iv <= 0xfff)) {
+	                    setRgba(rgbaArr, 0, 0, 0, 1);
 	                    return;  // Covers NaN.
 	                }
-	                return [
+	                setRgba(rgbaArr,
 	                    ((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8),
 	                    (iv & 0xf0) | ((iv & 0xf0) >> 4),
 	                    (iv & 0xf) | ((iv & 0xf) << 4),
 	                    1
-	                ];
+	                );
+	                putToCache(colorStr, rgbaArr);
+	                return rgbaArr;
 	            }
 	            else if (str.length === 7) {
 	                var iv = parseInt(str.substr(1), 16);  // TODO(deanm): Stricter parsing.
 	                if (!(iv >= 0 && iv <= 0xffffff)) {
+	                    setRgba(rgbaArr, 0, 0, 0, 1);
 	                    return;  // Covers NaN.
 	                }
-	                return [
+	                setRgba(rgbaArr,
 	                    (iv & 0xff0000) >> 16,
 	                    (iv & 0xff00) >> 8,
 	                    iv & 0xff,
 	                    1
-	                ];
+	                );
+	                putToCache(colorStr, rgbaArr);
+	                return rgbaArr;
 	            }
 
 	            return;
@@ -10635,44 +10916,56 @@
 	            switch (fname) {
 	                case 'rgba':
 	                    if (params.length !== 4) {
+	                        setRgba(rgbaArr, 0, 0, 0, 1);
 	                        return;
 	                    }
 	                    alpha = parseCssFloat(params.pop()); // jshint ignore:line
 	                // Fall through.
 	                case 'rgb':
 	                    if (params.length !== 3) {
+	                        setRgba(rgbaArr, 0, 0, 0, 1);
 	                        return;
 	                    }
-	                    return [
+	                    setRgba(rgbaArr,
 	                        parseCssInt(params[0]),
 	                        parseCssInt(params[1]),
 	                        parseCssInt(params[2]),
 	                        alpha
-	                    ];
+	                    );
+	                    putToCache(colorStr, rgbaArr);
+	                    return rgbaArr;
 	                case 'hsla':
 	                    if (params.length !== 4) {
+	                        setRgba(rgbaArr, 0, 0, 0, 1);
 	                        return;
 	                    }
 	                    params[3] = parseCssFloat(params[3]);
-	                    return hsla2rgba(params);
+	                    hsla2rgba(params, rgbaArr);
+	                    putToCache(colorStr, rgbaArr);
+	                    return rgbaArr;
 	                case 'hsl':
 	                    if (params.length !== 3) {
+	                        setRgba(rgbaArr, 0, 0, 0, 1);
 	                        return;
 	                    }
-	                    return hsla2rgba(params);
+	                    hsla2rgba(params, rgbaArr);
+	                    putToCache(colorStr, rgbaArr);
+	                    return rgbaArr;
 	                default:
 	                    return;
 	            }
 	        }
 
+	        setRgba(rgbaArr, 0, 0, 0, 1);
 	        return;
 	    }
 
 	    /**
 	     * @param {Array.<number>} hsla
+	     * @param {Array.<number>} rgba
 	     * @return {Array.<number>} rgba
 	     */
-	    function hsla2rgba(hsla) {
+	    function hsla2rgba(hsla, rgba) {
 	        var h = (((parseFloat(hsla[0]) % 360) + 360) % 360) / 360;  // 0 .. 1
 	        // NOTE(deanm): According to the CSS spec s/l should only be
 	        // percentages, but we don't bother and let float or percentage.
@@ -10681,11 +10974,13 @@
 	        var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;
 	        var m1 = l * 2 - m2;
 
-	        var rgba = [
+	        rgba = rgba || [];
+	        setRgba(rgba,
 	            clampCssByte(cssHueToRgb(m1, m2, h + 1 / 3) * 255),
 	            clampCssByte(cssHueToRgb(m1, m2, h) * 255),
-	            clampCssByte(cssHueToRgb(m1, m2, h - 1 / 3) * 255)
-	        ];
+	            clampCssByte(cssHueToRgb(m1, m2, h - 1 / 3) * 255),
+	            1
+	        );
 
 	        if (hsla.length === 4) {
 	            rgba[3] = hsla[3];
@@ -10801,12 +11096,12 @@
 	     * @return {Array.<number>}
 	     */
 	    function fastMapToColor(normalizedValue, colors, out) {
+	        out = out || [0, 0, 0, 0];
 	        if (!(colors && colors.length)
 	            || !(normalizedValue >= 0 && normalizedValue <= 1)
 	        ) {
-	            return;
+	            return out;
 	        }
-	        out = out || [0, 0, 0, 0];
 	        var value = normalizedValue * (colors.length - 1);
 	        var leftIndex = Math.floor(value);
 	        var rightIndex = Math.ceil(value);
@@ -10900,9 +11195,12 @@
 	    /**
 	     * @param {Array.<string>} colors Color list.
 	     * @param {string} type 'rgba', 'hsva', ...
-	     * @return {string} Result color.
+	     * @return {string} Result color. (If input illegal, return undefined).
 	     */
 	    function stringify(arrColor, type) {
+	        if (!arrColor) {
+	            return;
+	        }
 	        var colorStr = arrColor[0] + ',' + arrColor[1] + ',' + arrColor[2];
 	        if (type === 'rgba' || type === 'hsva' || type === 'hsla') {
 	            colorStr += ',' + arrColor[3];
@@ -10926,10 +11224,212 @@
 
 /***/ },
 /* 40 */
+/***/ function(module, exports) {
+
+	// Simple LRU cache use doubly linked list
+	// @module zrender/core/LRU
+
+
+	    /**
+	     * Simple double linked list. Compared with array, it has O(1) remove operation.
+	     * @constructor
+	     */
+	    var LinkedList = function () {
+
+	        /**
+	         * @type {module:zrender/core/LRU~Entry}
+	         */
+	        this.head = null;
+
+	        /**
+	         * @type {module:zrender/core/LRU~Entry}
+	         */
+	        this.tail = null;
+
+	        this._len = 0;
+	    };
+
+	    var linkedListProto = LinkedList.prototype;
+	    /**
+	     * Insert a new value at the tail
+	     * @param  {} val
+	     * @return {module:zrender/core/LRU~Entry}
+	     */
+	    linkedListProto.insert = function (val) {
+	        var entry = new Entry(val);
+	        this.insertEntry(entry);
+	        return entry;
+	    };
+
+	    /**
+	     * Insert an entry at the tail
+	     * @param  {module:zrender/core/LRU~Entry} entry
+	     */
+	    linkedListProto.insertEntry = function (entry) {
+	        if (!this.head) {
+	            this.head = this.tail = entry;
+	        }
+	        else {
+	            this.tail.next = entry;
+	            entry.prev = this.tail;
+	            entry.next = null;
+	            this.tail = entry;
+	        }
+	        this._len++;
+	    };
+
+	    /**
+	     * Remove entry.
+	     * @param  {module:zrender/core/LRU~Entry} entry
+	     */
+	    linkedListProto.remove = function (entry) {
+	        var prev = entry.prev;
+	        var next = entry.next;
+	        if (prev) {
+	            prev.next = next;
+	        }
+	        else {
+	            // Is head
+	            this.head = next;
+	        }
+	        if (next) {
+	            next.prev = prev;
+	        }
+	        else {
+	            // Is tail
+	            this.tail = prev;
+	        }
+	        entry.next = entry.prev = null;
+	        this._len--;
+	    };
+
+	    /**
+	     * @return {number}
+	     */
+	    linkedListProto.len = function () {
+	        return this._len;
+	    };
+
+	    /**
+	     * Clear list
+	     */
+	    linkedListProto.clear = function () {
+	        this.head = this.tail = null;
+	        this._len = 0;
+	    };
+
+	    /**
+	     * @constructor
+	     * @param {} val
+	     */
+	    var Entry = function (val) {
+	        /**
+	         * @type {}
+	         */
+	        this.value = val;
+
+	        /**
+	         * @type {module:zrender/core/LRU~Entry}
+	         */
+	        this.next;
+
+	        /**
+	         * @type {module:zrender/core/LRU~Entry}
+	         */
+	        this.prev;
+	    };
+
+	    /**
+	     * LRU Cache
+	     * @constructor
+	     * @alias module:zrender/core/LRU
+	     */
+	    var LRU = function (maxSize) {
+
+	        this._list = new LinkedList();
+
+	        this._map = {};
+
+	        this._maxSize = maxSize || 10;
+
+	        this._lastRemovedEntry = null;
+	    };
+
+	    var LRUProto = LRU.prototype;
+
+	    /**
+	     * @param  {string} key
+	     * @param  {} value
+	     * @return {} Removed value
+	     */
+	    LRUProto.put = function (key, value) {
+	        var list = this._list;
+	        var map = this._map;
+	        var removed = null;
+	        if (map[key] == null) {
+	            var len = list.len();
+	            // Reuse last removed entry
+	            var entry = this._lastRemovedEntry;
+
+	            if (len >= this._maxSize && len > 0) {
+	                // Remove the least recently used
+	                var leastUsedEntry = list.head;
+	                list.remove(leastUsedEntry);
+	                delete map[leastUsedEntry.key];
+
+	                removed = leastUsedEntry.value;
+	                this._lastRemovedEntry = leastUsedEntry;
+	            }
+
+	            if (entry) {
+	                entry.value = value;
+	            }
+	            else {
+	                entry = new Entry(value);
+	            }
+	            entry.key = key;
+	            list.insertEntry(entry);
+	            map[key] = entry;
+	        }
+
+	        return removed;
+	    };
+
+	    /**
+	     * @param  {string} key
+	     * @return {}
+	     */
+	    LRUProto.get = function (key) {
+	        var entry = this._map[key];
+	        var list = this._list;
+	        if (entry != null) {
+	            // Put the latest used entry in the tail
+	            if (entry !== list.tail) {
+	                list.remove(entry);
+	                list.insertEntry(entry);
+	            }
+
+	            return entry.value;
+	        }
+	    };
+
+	    /**
+	     * Clear the cache
+	     */
+	    LRUProto.clear = function () {
+	        this._list.clear();
+	        this._map = {};
+	    };
+
+	    module.exports = LRU;
+
+
+/***/ },
+/* 41 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
-	        var config = __webpack_require__(41);
+	        var config = __webpack_require__(42);
 
 	        /**
 	         * @exports zrender/tool/log
@@ -10963,7 +11463,7 @@
 
 
 /***/ },
-/* 41 */
+/* 42 */
 /***/ function(module, exports) {
 
 	
@@ -10995,7 +11495,7 @@
 
 
 /***/ },
-/* 42 */
+/* 43 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -11143,7 +11643,7 @@
 
 
 /***/ },
-/* 43 */
+/* 44 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -11151,9 +11651,9 @@
 
 	    var zrUtil = __webpack_require__(4);
 
-	    var pathTool = __webpack_require__(44);
+	    var pathTool = __webpack_require__(45);
 	    var round = Math.round;
-	    var Path = __webpack_require__(45);
+	    var Path = __webpack_require__(46);
 	    var colorTool = __webpack_require__(39);
 	    var matrix = __webpack_require__(11);
 	    var vector = __webpack_require__(10);
@@ -11162,7 +11662,7 @@
 
 	    graphic.Group = __webpack_require__(30);
 
-	    graphic.Image = __webpack_require__(61);
+	    graphic.Image = __webpack_require__(62);
 
 	    graphic.Text = __webpack_require__(63);
 
@@ -11496,7 +11996,8 @@
 	    }
 
 	    /**
-	     * Set hover style of element
+	     * Set hover style of element.
+	     * This method can be called repeatly without side-effects.
 	     * @param {module:zrender/Element} el
 	     * @param {Object} [hoverStyle]
 	     * @param {Object} [opt]
@@ -11729,14 +12230,14 @@
 
 
 /***/ },
-/* 44 */
+/* 45 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var Path = __webpack_require__(45);
-	    var PathProxy = __webpack_require__(49);
-	    var transformPath = __webpack_require__(60);
+	    var Path = __webpack_require__(46);
+	    var PathProxy = __webpack_require__(50);
+	    var transformPath = __webpack_require__(61);
 	    var matrix = __webpack_require__(11);
 
 	    // command chars
@@ -12137,7 +12638,7 @@
 
 
 /***/ },
-/* 45 */
+/* 46 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -12147,12 +12648,12 @@
 
 
 
-	    var Displayable = __webpack_require__(46);
+	    var Displayable = __webpack_require__(47);
 	    var zrUtil = __webpack_require__(4);
-	    var PathProxy = __webpack_require__(49);
-	    var pathContain = __webpack_require__(52);
+	    var PathProxy = __webpack_require__(50);
+	    var pathContain = __webpack_require__(53);
 
-	    var Pattern = __webpack_require__(59);
+	    var Pattern = __webpack_require__(60);
 	    var getCanvasPattern = Pattern.prototype.getCanvasPattern;
 
 	    var abs = Math.abs;
@@ -12502,7 +13003,7 @@
 
 
 /***/ },
-/* 46 */
+/* 47 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -12515,10 +13016,10 @@
 
 	    var zrUtil = __webpack_require__(4);
 
-	    var Style = __webpack_require__(47);
+	    var Style = __webpack_require__(48);
 
 	    var Element = __webpack_require__(31);
-	    var RectText = __webpack_require__(48);
+	    var RectText = __webpack_require__(49);
 	    // var Stateful = require('./mixin/Stateful');
 
 	    /**
@@ -12776,7 +13277,7 @@
 
 
 /***/ },
-/* 47 */
+/* 48 */
 /***/ function(module, exports) {
 
 	/**
@@ -13098,7 +13599,7 @@
 
 
 /***/ },
-/* 48 */
+/* 49 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -13240,8 +13741,9 @@
 	            }
 
 	            for (var i = 0; i < textLines.length; i++) {
-	                textFill && ctx.fillText(textLines[i], x, y);
+	                    // Fill after stroke so the outline will not cover the main part.
 	                textStroke && ctx.strokeText(textLines[i], x, y);
+	                textFill && ctx.fillText(textLines[i], x, y);
 	                y += textRect.lineHeight;
 	            }
 
@@ -13253,7 +13755,7 @@
 
 
 /***/ },
-/* 49 */
+/* 50 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -13268,11 +13770,11 @@
 	 // TODO getTotalLength, getPointAtLength
 
 
-	    var curve = __webpack_require__(50);
+	    var curve = __webpack_require__(51);
 	    var vec2 = __webpack_require__(10);
-	    var bbox = __webpack_require__(51);
+	    var bbox = __webpack_require__(52);
 	    var BoundingRect = __webpack_require__(9);
-	    var dpr = __webpack_require__(41).devicePixelRatio;
+	    var dpr = __webpack_require__(42).devicePixelRatio;
 
 	    var CMD = {
 	        M: 1,
@@ -14028,7 +14530,7 @@
 
 
 /***/ },
-/* 50 */
+/* 51 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -14574,7 +15076,7 @@
 
 
 /***/ },
-/* 51 */
+/* 52 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -14583,7 +15085,7 @@
 
 
 	    var vec2 = __webpack_require__(10);
-	    var curve = __webpack_require__(50);
+	    var curve = __webpack_require__(51);
 
 	    var bbox = {};
 	    var mathMin = Math.min;
@@ -14810,21 +15312,21 @@
 
 
 /***/ },
-/* 52 */
+/* 53 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
 
 
-	    var CMD = __webpack_require__(49).CMD;
-	    var line = __webpack_require__(53);
-	    var cubic = __webpack_require__(54);
-	    var quadratic = __webpack_require__(55);
-	    var arc = __webpack_require__(56);
-	    var normalizeRadian = __webpack_require__(57).normalizeRadian;
-	    var curve = __webpack_require__(50);
+	    var CMD = __webpack_require__(50).CMD;
+	    var line = __webpack_require__(54);
+	    var cubic = __webpack_require__(55);
+	    var quadratic = __webpack_require__(56);
+	    var arc = __webpack_require__(57);
+	    var normalizeRadian = __webpack_require__(58).normalizeRadian;
+	    var curve = __webpack_require__(51);
 
-	    var windingLine = __webpack_require__(58);
+	    var windingLine = __webpack_require__(59);
 
 	    var containStroke = line.containStroke;
 
@@ -15216,7 +15718,7 @@
 
 
 /***/ },
-/* 53 */
+/* 54 */
 /***/ function(module, exports) {
 
 	
@@ -15264,12 +15766,12 @@
 
 
 /***/ },
-/* 54 */
+/* 55 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var curve = __webpack_require__(50);
+	    var curve = __webpack_require__(51);
 
 	    module.exports = {
 	        /**
@@ -15311,12 +15813,12 @@
 
 
 /***/ },
-/* 55 */
+/* 56 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var curve = __webpack_require__(50);
+	    var curve = __webpack_require__(51);
 
 	    module.exports = {
 	        /**
@@ -15356,12 +15858,12 @@
 
 
 /***/ },
-/* 56 */
+/* 57 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var normalizeRadian = __webpack_require__(57).normalizeRadian;
+	    var normalizeRadian = __webpack_require__(58).normalizeRadian;
 	    var PI2 = Math.PI * 2;
 
 	    module.exports = {
@@ -15422,7 +15924,7 @@
 
 
 /***/ },
-/* 57 */
+/* 58 */
 /***/ function(module, exports) {
 
 	
@@ -15440,7 +15942,7 @@
 
 
 /***/ },
-/* 58 */
+/* 59 */
 /***/ function(module, exports) {
 
 	
@@ -15467,7 +15969,7 @@
 
 
 /***/ },
-/* 59 */
+/* 60 */
 /***/ function(module, exports) {
 
 	
@@ -15490,12 +15992,12 @@
 
 
 /***/ },
-/* 60 */
+/* 61 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var CMD = __webpack_require__(49).CMD;
+	    var CMD = __webpack_require__(50).CMD;
 	    var vec2 = __webpack_require__(10);
 	    var v2ApplyTransform = vec2.applyTransform;
 
@@ -15591,7 +16093,7 @@
 
 
 /***/ },
-/* 61 */
+/* 62 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -15601,11 +16103,11 @@
 
 
 
-	    var Displayable = __webpack_require__(46);
+	    var Displayable = __webpack_require__(47);
 	    var BoundingRect = __webpack_require__(9);
 	    var zrUtil = __webpack_require__(4);
 
-	    var LRU = __webpack_require__(62);
+	    var LRU = __webpack_require__(40);
 	    var globalImageCache = new LRU(50);
 	    /**
 	     * @alias zrender/graphic/Image
@@ -15680,19 +16182,30 @@
 	                // }
 	                // Else is canvas
 
-	                var width = style.width || image.width;
-	                var height = style.height || image.height;
 	                var x = style.x || 0;
 	                var y = style.y || 0;
 	                // 图片加载失败
 	                if (!image.width || !image.height) {
 	                    return;
 	                }
+	                var width = style.width;
+	                var height = style.height;
+	                var aspect = image.width / image.height;
+	                if (width == null && height != null) {
+	                    // Keep image/height ratio
+	                    width = height * aspect;
+	                }
+	                else if (height == null && width != null) {
+	                    height = width / aspect;
+	                }
+	                else if (width == null && height == null) {
+	                    width = image.width;
+	                    height = image.height;
+	                }
 
 	                // 设置transform
 	                this.setTransform(ctx);
 
-
 	                if (style.sWidth && style.sHeight) {
 	                    var sx = style.sx || 0;
 	                    var sy = style.sy || 0;
@@ -15717,14 +16230,6 @@
 	                    ctx.drawImage(image, x, y, width, height);
 	                }
 
-	                // 如果没设置宽和高的话自动根据图片宽高设置
-	                if (style.width == null) {
-	                    style.width = width;
-	                }
-	                if (style.height == null) {
-	                    style.height = height;
-	                }
-
 	                this.restoreTransform(ctx);
 
 	                // Draw rect text
@@ -15752,181 +16257,6 @@
 
 
 /***/ },
-/* 62 */
-/***/ function(module, exports) {
-
-	// Simple LRU cache use doubly linked list
-	// @module zrender/core/LRU
-
-
-	    /**
-	     * Simple double linked list. Compared with array, it has O(1) remove operation.
-	     * @constructor
-	     */
-	    var LinkedList = function() {
-
-	        /**
-	         * @type {module:zrender/core/LRU~Entry}
-	         */
-	        this.head = null;
-
-	        /**
-	         * @type {module:zrender/core/LRU~Entry}
-	         */
-	        this.tail = null;
-
-	        this._len = 0;
-	    };
-
-	    var linkedListProto = LinkedList.prototype;
-	    /**
-	     * Insert a new value at the tail
-	     * @param  {} val
-	     * @return {module:zrender/core/LRU~Entry}
-	     */
-	    linkedListProto.insert = function(val) {
-	        var entry = new Entry(val);
-	        this.insertEntry(entry);
-	        return entry;
-	    };
-
-	    /**
-	     * Insert an entry at the tail
-	     * @param  {module:zrender/core/LRU~Entry} entry
-	     */
-	    linkedListProto.insertEntry = function(entry) {
-	        if (!this.head) {
-	            this.head = this.tail = entry;
-	        }
-	        else {
-	            this.tail.next = entry;
-	            entry.prev = this.tail;
-	            this.tail = entry;
-	        }
-	        this._len++;
-	    };
-
-	    /**
-	     * Remove entry.
-	     * @param  {module:zrender/core/LRU~Entry} entry
-	     */
-	    linkedListProto.remove = function(entry) {
-	        var prev = entry.prev;
-	        var next = entry.next;
-	        if (prev) {
-	            prev.next = next;
-	        }
-	        else {
-	            // Is head
-	            this.head = next;
-	        }
-	        if (next) {
-	            next.prev = prev;
-	        }
-	        else {
-	            // Is tail
-	            this.tail = prev;
-	        }
-	        entry.next = entry.prev = null;
-	        this._len--;
-	    };
-
-	    /**
-	     * @return {number}
-	     */
-	    linkedListProto.len = function() {
-	        return this._len;
-	    };
-
-	    /**
-	     * @constructor
-	     * @param {} val
-	     */
-	    var Entry = function(val) {
-	        /**
-	         * @type {}
-	         */
-	        this.value = val;
-
-	        /**
-	         * @type {module:zrender/core/LRU~Entry}
-	         */
-	        this.next;
-
-	        /**
-	         * @type {module:zrender/core/LRU~Entry}
-	         */
-	        this.prev;
-	    };
-
-	    /**
-	     * LRU Cache
-	     * @constructor
-	     * @alias module:zrender/core/LRU
-	     */
-	    var LRU = function(maxSize) {
-
-	        this._list = new LinkedList();
-
-	        this._map = {};
-
-	        this._maxSize = maxSize || 10;
-	    };
-
-	    var LRUProto = LRU.prototype;
-
-	    /**
-	     * @param  {string} key
-	     * @param  {} value
-	     */
-	    LRUProto.put = function(key, value) {
-	        var list = this._list;
-	        var map = this._map;
-	        if (map[key] == null) {
-	            var len = list.len();
-	            if (len >= this._maxSize && len > 0) {
-	                // Remove the least recently used
-	                var leastUsedEntry = list.head;
-	                list.remove(leastUsedEntry);
-	                delete map[leastUsedEntry.key];
-	            }
-
-	            var entry = list.insert(value);
-	            entry.key = key;
-	            map[key] = entry;
-	        }
-	    };
-
-	    /**
-	     * @param  {string} key
-	     * @return {}
-	     */
-	    LRUProto.get = function(key) {
-	        var entry = this._map[key];
-	        var list = this._list;
-	        if (entry != null) {
-	            // Put the latest used entry in the tail
-	            if (entry !== list.tail) {
-	                list.remove(entry);
-	                list.insertEntry(entry);
-	            }
-
-	            return entry.value;
-	        }
-	    };
-
-	    /**
-	     * Clear the cache
-	     */
-	    LRUProto.clear = function() {
-	        this._list.clear();
-	        this._map = {};
-	    };
-
-	    module.exports = LRU;
-
-
-/***/ },
 /* 63 */
 /***/ function(module, exports, __webpack_require__) {
 
@@ -15941,7 +16271,7 @@
 
 
 
-	    var Displayable = __webpack_require__(46);
+	    var Displayable = __webpack_require__(47);
 	    var zrUtil = __webpack_require__(4);
 	    var textContain = __webpack_require__(8);
 
@@ -16009,6 +16339,7 @@
 	                if (ctx.textAlign !== textAlign) {
 	                    ctx.textAlign = 'left';
 	                }
+	                // FIXME in text contain default is top
 	                ctx.textBaseline = textBaseline || 'alphabetic';
 	                // Use canvas default alphabetic baseline
 	                if (ctx.textBaseline !== textBaseline) {
@@ -16019,8 +16350,9 @@
 
 	                var textLines = text.split('\n');
 	                for (var i = 0; i < textLines.length; i++) {
-	                    style.hasFill() && ctx.fillText(textLines[i], x, y);
+	                    // Fill after stroke so the outline will not cover the main part.
 	                    style.hasStroke() && ctx.strokeText(textLines[i], x, y);
+	                    style.hasFill() && ctx.fillText(textLines[i], x, y);
 	                    y += lineHeight;
 	                }
 
@@ -16029,8 +16361,8 @@
 	        },
 
 	        getBoundingRect: function () {
+	            var style = this.style;
 	            if (!this._rect) {
-	                var style = this.style;
 	                var textVerticalAlign = style.textVerticalAlign;
 	                var rect = textContain.getBoundingRect(
 	                    style.text + '', style.textFont || style.font, style.textAlign,
@@ -16046,8 +16378,16 @@
 	                }
 	                rect.x += style.x || 0;
 	                rect.y += style.y || 0;
+	                if (style.hasStroke()) {
+	                    var w = style.lineWidth;
+	                    rect.x -= w / 2;
+	                    rect.y -= w / 2;
+	                    rect.width += w;
+	                    rect.height += w;
+	                }
 	                this._rect = rect;
 	            }
+
 	            return this._rect;
 	        }
 	    };
@@ -16069,7 +16409,7 @@
 
 
 
-	    module.exports = __webpack_require__(45).extend({
+	    module.exports = __webpack_require__(46).extend({
 
 	        type: 'circle',
 
@@ -16106,7 +16446,7 @@
 
 
 	    var env = __webpack_require__(2);
-	    var Path = __webpack_require__(45);
+	    var Path = __webpack_require__(46);
 
 	    var shadowTemp = [
 	        ['shadowBlur', 0],
@@ -16223,7 +16563,7 @@
 	 */
 
 
-	    module.exports = __webpack_require__(45).extend({
+	    module.exports = __webpack_require__(46).extend({
 
 	        type: 'ring',
 
@@ -16259,7 +16599,7 @@
 
 	    var polyHelper = __webpack_require__(68);
 
-	    module.exports = __webpack_require__(45).extend({
+	    module.exports = __webpack_require__(46).extend({
 	        
 	        type: 'polygon',
 
@@ -16518,7 +16858,7 @@
 
 	    var polyHelper = __webpack_require__(68);
 
-	    module.exports = __webpack_require__(45).extend({
+	    module.exports = __webpack_require__(46).extend({
 	        
 	        type: 'polyline',
 
@@ -16554,7 +16894,7 @@
 
 	    var roundRectHelper = __webpack_require__(73);
 
-	    module.exports = __webpack_require__(45).extend({
+	    module.exports = __webpack_require__(46).extend({
 
 	        type: 'rect',
 
@@ -16694,7 +17034,7 @@
 	 * @module zrender/graphic/shape/Line
 	 */
 
-	    module.exports = __webpack_require__(45).extend({
+	    module.exports = __webpack_require__(46).extend({
 
 	        type: 'line',
 
@@ -16761,7 +17101,7 @@
 	 */
 
 
-	    var curveTool = __webpack_require__(50);
+	    var curveTool = __webpack_require__(51);
 	    var vec2 = __webpack_require__(10);
 	    var quadraticSubdivide = curveTool.quadraticSubdivide;
 	    var cubicSubdivide = curveTool.cubicSubdivide;
@@ -16788,7 +17128,7 @@
 	            ];
 	        }
 	    }
-	    module.exports = __webpack_require__(45).extend({
+	    module.exports = __webpack_require__(46).extend({
 
 	        type: 'bezier-curve',
 
@@ -16901,7 +17241,7 @@
 	 */
 	 
 
-	    module.exports = __webpack_require__(45).extend({
+	    module.exports = __webpack_require__(46).extend({
 
 	        type: 'arc',
 
@@ -16952,7 +17292,7 @@
 	// CompoundPath to improve performance
 
 
-	    var Path = __webpack_require__(45);
+	    var Path = __webpack_require__(46);
 	    module.exports = Path.extend({
 
 	        type: 'compound',
@@ -17313,7 +17653,7 @@
 	    /**
 	     * @type {string}
 	     */
-	    zrender.version = '3.3.0';
+	    zrender.version = '3.4.0';
 
 	    /**
 	     * Initializing a zrender instance
@@ -17400,6 +17740,7 @@
 	        var storage = new Storage();
 
 	        var rendererType = opts.renderer;
+	        // TODO WebGL
 	        if (useVML) {
 	            if (!painterCtors.vml) {
 	                throw new Error('You need to require \'zrender/vml/vml\' to support IE8');
@@ -17630,9 +17971,8 @@
 	         * @param {number} width
 	         * @param {number} height
 	         */
-	        pathToImage: function(e, width, height) {
-	            var id = guid();
-	            return this.painter.pathToImage(id, e, width, height);
+	        pathToImage: function(e, dpr) {
+	            return this.painter.pathToImage(e, dpr);
 	        },
 
 	        /**
@@ -19189,7 +19529,7 @@
 	            var deferredClips = [];
 	            for (var i = 0; i < len; i++) {
 	                var clip = clips[i];
-	                var e = clip.step(time);
+	                var e = clip.step(time, delta);
 	                // Throw out the events need to be called after
 	                // stage.update, like destroy
 	                if (e) {
@@ -20012,9 +20352,9 @@
 	 */
 	 
 
-	    var config = __webpack_require__(41);
+	    var config = __webpack_require__(42);
 	    var util = __webpack_require__(4);
-	    var log = __webpack_require__(40);
+	    var log = __webpack_require__(41);
 	    var BoundingRect = __webpack_require__(9);
 	    var timsort = __webpack_require__(86);
 
@@ -20037,7 +20377,7 @@
 	            return false;
 	        }
 
-	        if (layer.isBuildin) {
+	        if (layer.__builtin__) {
 	            return true;
 	        }
 
@@ -20191,6 +20531,12 @@
 	            root.appendChild(domRoot);
 	        }
 	        else {
+	            if (opts.width != null) {
+	                root.width = opts.width;
+	            }
+	            if (opts.height != null) {
+	                root.height = opts.height;
+	            }
 	            // Use canvas width and height directly
 	            var width = root.width;
 	            var height = root.height;
@@ -20209,8 +20555,6 @@
 	            this._domRoot = root;
 	        }
 
-	        this.pathToImage = this._createPathToImage();
-
 	        // Layers for progressive rendering
 	        this._progressiveLayers = [];
 
@@ -20257,7 +20601,7 @@
 	            for (var i = 0; i < zlevelList.length; i++) {
 	                var z = zlevelList[i];
 	                var layer = this._layers[z];
-	                if (!layer.isBuildin && layer.refresh) {
+	                if (!layer.__builtin__ && layer.refresh) {
 	                    layer.refresh();
 	                }
 	            }
@@ -20400,11 +20744,11 @@
 
 	            this._clearProgressive();
 
-	            this.eachBuildinLayer(preProcessLayer);
+	            this.eachBuiltinLayer(preProcessLayer);
 
 	            this._doPaintList(list, paintAll);
 
-	            this.eachBuildinLayer(postProcessLayer);
+	            this.eachBuiltinLayer(postProcessLayer);
 	        },
 
 	        _doPaintList: function (list, paintAll) {
@@ -20460,7 +20804,7 @@
 	                    currentZLevel = elZLevel;
 	                    currentLayer = this.getLayer(currentZLevel);
 
-	                    if (!currentLayer.isBuildin) {
+	                    if (!currentLayer.__builtin__) {
 	                        log(
 	                            'ZLevel ' + currentZLevel
 	                            + ' has been used by unkown layer ' + currentLayer.id
@@ -20605,7 +20949,7 @@
 	            if (!layer) {
 	                // Create a new layer
 	                layer = new Layer('zr_' + zlevel, this, this.dpr);
-	                layer.isBuildin = true;
+	                layer.__builtin__ = true;
 
 	                if (this._layerConfig[zlevel]) {
 	                    util.merge(layer, this._layerConfig[zlevel], true);
@@ -20653,28 +20997,33 @@
 	            }
 	            zlevelList.splice(i + 1, 0, zlevel);
 
-	            if (prevLayer) {
-	                var prevDom = prevLayer.dom;
-	                if (prevDom.nextSibling) {
-	                    domRoot.insertBefore(
-	                        layer.dom,
-	                        prevDom.nextSibling
-	                    );
-	                }
-	                else {
-	                    domRoot.appendChild(layer.dom);
-	                }
-	            }
-	            else {
-	                if (domRoot.firstChild) {
-	                    domRoot.insertBefore(layer.dom, domRoot.firstChild);
-	                }
-	                else {
-	                    domRoot.appendChild(layer.dom);
-	                }
-	            }
-
 	            layersMap[zlevel] = layer;
+
+	            // Vitual layer will not directly show on the screen.
+	            // (It can be a WebGL layer and assigned to a ZImage element)
+	            // But it still under management of zrender.
+	            if (!layer.virtual) {
+	                if (prevLayer) {
+	                    var prevDom = prevLayer.dom;
+	                    if (prevDom.nextSibling) {
+	                        domRoot.insertBefore(
+	                            layer.dom,
+	                            prevDom.nextSibling
+	                        );
+	                    }
+	                    else {
+	                        domRoot.appendChild(layer.dom);
+	                    }
+	                }
+	                else {
+	                    if (domRoot.firstChild) {
+	                        domRoot.insertBefore(layer.dom, domRoot.firstChild);
+	                    }
+	                    else {
+	                        domRoot.appendChild(layer.dom);
+	                    }
+	                }
+	            }
 	        },
 
 	        // Iterate each layer
@@ -20689,7 +21038,7 @@
 	        },
 
 	        // Iterate each buildin layer
-	        eachBuildinLayer: function (cb, context) {
+	        eachBuiltinLayer: function (cb, context) {
 	            var zlevelList = this._zlevelList;
 	            var layer;
 	            var z;
@@ -20697,7 +21046,7 @@
 	            for (i = 0; i < zlevelList.length; i++) {
 	                z = zlevelList[i];
 	                layer = this._layers[z];
-	                if (layer.isBuildin) {
+	                if (layer.__builtin__) {
 	                    cb.call(context, layer, z);
 	                }
 	            }
@@ -20712,7 +21061,7 @@
 	            for (i = 0; i < zlevelList.length; i++) {
 	                z = zlevelList[i];
 	                layer = this._layers[z];
-	                if (! layer.isBuildin) {
+	                if (!layer.__builtin__) {
 	                    cb.call(context, layer, z);
 	                }
 	            }
@@ -20734,7 +21083,7 @@
 	            var elCountsLastFrame = {};
 	            var progressiveElCountsLastFrame = {};
 
-	            this.eachBuildinLayer(function (layer, z) {
+	            this.eachBuiltinLayer(function (layer, z) {
 	                elCountsLastFrame[z] = layer.elCount;
 	                layer.elCount = 0;
 	                layer.__dirty = false;
@@ -20808,7 +21157,7 @@
 	            }
 
 	            // 层中的元素数量有发生变化
-	            this.eachBuildinLayer(function (layer, z) {
+	            this.eachBuiltinLayer(function (layer, z) {
 	                if (elCountsLastFrame[z] !== layer.elCount) {
 	                    layer.__dirty = true;
 	                }
@@ -20829,7 +21178,7 @@
 	         * 清除hover层外所有内容
 	         */
 	        clear: function () {
-	            this.eachBuildinLayer(this._clearLayer);
+	            this.eachBuiltinLayer(this._clearLayer);
 	            return this;
 	        },
 
@@ -21009,30 +21358,47 @@
 	            ) | 0;
 	        },
 
-	        _pathToImage: function (id, path, width, height, dpr) {
+	        pathToImage: function (path, dpr) {
+	            dpr = dpr || this.dpr;
+
 	            var canvas = document.createElement('canvas');
 	            var ctx = canvas.getContext('2d');
+	            var rect = path.getBoundingRect();
+	            var style = path.style;
+	            var shadowBlurSize = style.shadowBlur;
+	            var shadowOffsetX = style.shadowOffsetX;
+	            var shadowOffsetY = style.shadowOffsetY;
+	            var lineWidth = style.hasStroke() ? style.lineWidth : 0;
+
+	            var leftMargin = Math.max(lineWidth / 2, -shadowOffsetX + shadowBlurSize);
+	            var rightMargin = Math.max(lineWidth / 2, shadowOffsetX + shadowBlurSize);
+	            var topMargin = Math.max(lineWidth / 2, -shadowOffsetY + shadowBlurSize);
+	            var bottomMargin = Math.max(lineWidth / 2, shadowOffsetY + shadowBlurSize);
+	            var width = rect.width + leftMargin + rightMargin;
+	            var height = rect.height + topMargin + bottomMargin;
 
 	            canvas.width = width * dpr;
 	            canvas.height = height * dpr;
 
-	            ctx.clearRect(0, 0, width * dpr, height * dpr);
+	            ctx.scale(dpr, dpr);
+	            ctx.clearRect(0, 0, width, height);
+	            ctx.dpr = dpr;
 
 	            var pathTransform = {
 	                position: path.position,
 	                rotation: path.rotation,
 	                scale: path.scale
 	            };
-	            path.position = [0, 0, 0];
+	            path.position = [leftMargin - rect.x, topMargin - rect.y];
 	            path.rotation = 0;
 	            path.scale = [1, 1];
+	            path.updateTransform();
 	            if (path) {
 	                path.brush(ctx);
 	            }
 
-	            var ImageShape = __webpack_require__(61);
+	            var ImageShape = __webpack_require__(62);
 	            var imgShape = new ImageShape({
-	                id: id,
 	                style: {
 	                    x: 0,
 	                    y: 0,
@@ -21053,16 +21419,6 @@
 	            }
 
 	            return imgShape;
-	        },
-
-	        _createPathToImage: function () {
-	            var me = this;
-
-	            return function (id, e, width, height) {
-	                return me._pathToImage(
-	                    id, e, width, height, me.dpr
-	                );
-	            };
 	        }
 	    };
 
@@ -21081,9 +21437,9 @@
 
 
 	    var util = __webpack_require__(4);
-	    var config = __webpack_require__(41);
-	    var Style = __webpack_require__(47);
-	    var Pattern = __webpack_require__(59);
+	    var config = __webpack_require__(42);
+	    var Style = __webpack_require__(48);
+	    var Pattern = __webpack_require__(60);
 
 	    function returnFalse() {
 	        return false;
@@ -21542,7 +21898,7 @@
 
 	
 
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 	    var zrUtil = __webpack_require__(4);
 	    var PI = Math.PI;
 	    /**
@@ -21690,8 +22046,9 @@
 	     * @constructor
 	     * @alias module:echarts/data/List
 	     *
-	     * @param {Array.<string>} dimensions
-	     *        Dimensions should be concrete names like x, y, z, lng, lat, angle, radius
+	     * @param {Array.<string|Object>} dimensions
+	     *      For example, ['someDimName', {name: 'someDimName', type: 'someDimType'}, ...].
+	     *      Dimensions should be concrete names like x, y, z, lng, lat, angle, radius
 	     * @param {module:echarts/model/Model} hostModel
 	     */
 	    var List = function (dimensions, hostModel) {
@@ -22191,37 +22548,39 @@
 	     * @param {number} value
 	     * @param {boolean} stack If given value is after stacked
 	     * @param {number} [maxDistance=Infinity]
-	     * @return {number}
+	     * @return {Array.<number>} Considere multiple points has the same value.
 	     */
 	    listProto.indexOfNearest = function (dim, value, stack, maxDistance) {
 	        var storage = this._storage;
 	        var dimData = storage[dim];
+	        var nearestIndices = [];
+
+	        if (!dimData) {
+	            return nearestIndices;
+	        }
 
 	        if (maxDistance == null) {
 	            maxDistance = Infinity;
 	        }
 
-	        var nearestIdx = -1;
-	        if (dimData) {
-	            var minDist = Number.MAX_VALUE;
-	            for (var i = 0, len = this.count(); i < len; i++) {
-	                var diff = value - this.get(dim, i, stack);
-	                var dist = Math.abs(diff);
-	                if (
-	                    diff <= maxDistance
-	                    && (dist < minDist
-	                        // For the case of two data are same on xAxis, which has sequence data.
-	                        // Show the nearest index
-	                        // https://github.com/ecomfe/echarts/issues/2869
-	                        || (dist === minDist && diff > 0)
-	                    )
-	                ) {
+	        var minDist = Number.MAX_VALUE;
+	        var minDiff = -1;
+	        for (var i = 0, len = this.count(); i < len; i++) {
+	            var diff = value - this.get(dim, i, stack);
+	            var dist = Math.abs(diff);
+	            if (diff <= maxDistance && dist <= minDist) {
+	                // For the case of two data are same on xAxis, which has sequence data.
+	                // Show the nearest index
+	                // https://github.com/ecomfe/echarts/issues/2869
+	                if (dist < minDist || (diff >= 0 && minDiff < 0)) {
 	                    minDist = dist;
-	                    nearestIdx = i;
+	                    minDiff = diff;
+	                    nearestIndices.length = 0;
 	                }
+	                nearestIndices.push(i);
 	            }
 	        }
-	        return nearestIdx;
+	        return nearestIndices;
 	    };
 
 	    /**
@@ -22923,118 +23282,320 @@
 
 	
 
+	    var numberUtil = __webpack_require__(7);
+	    var linearMap = numberUtil.linearMap;
 	    var zrUtil = __webpack_require__(4);
-	    var echarts = __webpack_require__(1);
-	    var PRIORITY = echarts.PRIORITY;
 
-	    __webpack_require__(101);
-	    __webpack_require__(104);
+	    function fixExtentWithBands(extent, nTick) {
+	        var size = extent[1] - extent[0];
+	        var len = nTick;
+	        var margin = size / len / 2;
+	        extent[0] += margin;
+	        extent[1] -= margin;
+	    }
 
-	    echarts.registerVisual(zrUtil.curry(
-	        __webpack_require__(110), 'line', 'circle', 'line'
-	    ));
-	    echarts.registerLayout(zrUtil.curry(
-	        __webpack_require__(111), 'line'
-	    ));
+	    var normalizedExtent = [0, 1];
+	    /**
+	     * @name module:echarts/coord/CartesianAxis
+	     * @constructor
+	     */
+	    var Axis = function (dim, scale, extent) {
 
-	    // Down sample after filter
-	    echarts.registerProcessor(PRIORITY.PROCESSOR.STATISTIC, zrUtil.curry(
-	        __webpack_require__(112), 'line'
-	    ));
+	        /**
+	         * Axis dimension. Such as 'x', 'y', 'z', 'angle', 'radius'
+	         * @type {string}
+	         */
+	        this.dim = dim;
 
-	    // In case developer forget to include grid component
-	    __webpack_require__(113);
+	        /**
+	         * Axis scale
+	         * @type {module:echarts/coord/scale/*}
+	         */
+	        this.scale = scale;
+
+	        /**
+	         * @type {Array.<number>}
+	         * @private
+	         */
+	        this._extent = extent || [0, 0];
+
+	        /**
+	         * @type {boolean}
+	         */
+	        this.inverse = false;
+
+	        /**
+	         * Usually true when axis has a ordinal scale
+	         * @type {boolean}
+	         */
+	        this.onBand = false;
+	    };
+
+	    Axis.prototype = {
+
+	        constructor: Axis,
+
+	        /**
+	         * If axis extent contain given coord
+	         * @param {number} coord
+	         * @return {boolean}
+	         */
+	        contain: function (coord) {
+	            var extent = this._extent;
+	            var min = Math.min(extent[0], extent[1]);
+	            var max = Math.max(extent[0], extent[1]);
+	            return coord >= min && coord <= max;
+	        },
+
+	        /**
+	         * If axis extent contain given data
+	         * @param {number} data
+	         * @return {boolean}
+	         */
+	        containData: function (data) {
+	            return this.contain(this.dataToCoord(data));
+	        },
+
+	        /**
+	         * Get coord extent.
+	         * @return {Array.<number>}
+	         */
+	        getExtent: function () {
+	            var ret = this._extent.slice();
+	            return ret;
+	        },
+
+	        /**
+	         * Get precision used for formatting
+	         * @param {Array.<number>} [dataExtent]
+	         * @return {number}
+	         */
+	        getPixelPrecision: function (dataExtent) {
+	            return numberUtil.getPixelPrecision(
+	                dataExtent || this.scale.getExtent(),
+	                this._extent
+	            );
+	        },
+
+	        /**
+	         * Set coord extent
+	         * @param {number} start
+	         * @param {number} end
+	         */
+	        setExtent: function (start, end) {
+	            var extent = this._extent;
+	            extent[0] = start;
+	            extent[1] = end;
+	        },
+
+	        /**
+	         * Convert data to coord. Data is the rank if it has a ordinal scale
+	         * @param {number} data
+	         * @param  {boolean} clamp
+	         * @return {number}
+	         */
+	        dataToCoord: function (data, clamp) {
+	            var extent = this._extent;
+	            var scale = this.scale;
+	            data = scale.normalize(data);
+
+	            if (this.onBand && scale.type === 'ordinal') {
+	                extent = extent.slice();
+	                fixExtentWithBands(extent, scale.count());
+	            }
+
+	            return linearMap(data, normalizedExtent, extent, clamp);
+	        },
+
+	        /**
+	         * Convert coord to data. Data is the rank if it has a ordinal scale
+	         * @param {number} coord
+	         * @param  {boolean} clamp
+	         * @return {number}
+	         */
+	        coordToData: function (coord, clamp) {
+	            var extent = this._extent;
+	            var scale = this.scale;
+
+	            if (this.onBand && scale.type === 'ordinal') {
+	                extent = extent.slice();
+	                fixExtentWithBands(extent, scale.count());
+	            }
+
+	            var t = linearMap(coord, extent, normalizedExtent, clamp);
+
+	            return this.scale.scale(t);
+	        },
+
+	        /**
+	         * Convert pixel point to data in axis
+	         * @param {Array.<number>} point
+	         * @param  {boolean} clamp
+	         * @return {number} data
+	         */
+	        pointToData: function (point, clamp) {
+	            // Should be implemented in derived class if necessary.
+	        },
+
+	        /**
+	         * @return {Array.<number>}
+	         */
+	        getTicksCoords: function (alignWithLabel) {
+	            if (this.onBand && !alignWithLabel) {
+	                var bands = this.getBands();
+	                var coords = [];
+	                for (var i = 0; i < bands.length; i++) {
+	                    coords.push(bands[i][0]);
+	                }
+	                if (bands[i - 1]) {
+	                    coords.push(bands[i - 1][1]);
+	                }
+	                return coords;
+	            }
+	            else {
+	                return zrUtil.map(this.scale.getTicks(), this.dataToCoord, this);
+	            }
+	        },
+
+	        /**
+	         * Coords of labels are on the ticks or on the middle of bands
+	         * @return {Array.<number>}
+	         */
+	        getLabelsCoords: function () {
+	            return zrUtil.map(this.scale.getTicks(), this.dataToCoord, this);
+	        },
+
+	        /**
+	         * Get bands.
+	         *
+	         * If axis has labels [1, 2, 3, 4]. Bands on the axis are
+	         * |---1---|---2---|---3---|---4---|.
+	         *
+	         * @return {Array}
+	         */
+	         // FIXME Situation when labels is on ticks
+	        getBands: function () {
+	            var extent = this.getExtent();
+	            var bands = [];
+	            var len = this.scale.count();
+	            var start = extent[0];
+	            var end = extent[1];
+	            var span = end - start;
+
+	            for (var i = 0; i < len; i++) {
+	                bands.push([
+	                    span * i / len + start,
+	                    span * (i + 1) / len + start
+	                ]);
+	            }
+	            return bands;
+	        },
+
+	        /**
+	         * Get width of band
+	         * @return {number}
+	         */
+	        getBandWidth: function () {
+	            var axisExtent = this._extent;
+	            var dataExtent = this.scale.getExtent();
+
+	            var len = dataExtent[1] - dataExtent[0] + (this.onBand ? 1 : 0);
+	            // Fix #2728, avoid NaN when only one data.
+	            len === 0 && (len = 1);
+
+	            var size = Math.abs(axisExtent[1] - axisExtent[0]);
+
+	            return Math.abs(size) / len;
+	        }
+
+	    };
+
+	    module.exports = Axis;
 
 
 /***/ },
 /* 101 */
 /***/ function(module, exports, __webpack_require__) {
 
-	'use strict';
-
+	
 
 	    var createListFromArray = __webpack_require__(102);
-	    var SeriesModel = __webpack_require__(28);
+	    var symbolUtil = __webpack_require__(104);
+	    var axisHelper = __webpack_require__(105);
+	    var axisModelCommonMixin = __webpack_require__(111);
+	    var Model = __webpack_require__(12);
+	    var util = __webpack_require__(4);
 
-	    module.exports = SeriesModel.extend({
-
-	        type: 'series.line',
-
-	        dependencies: ['grid', 'polar'],
-
-	        getInitialData: function (option, ecModel) {
-	            if (true) {
-	                var coordSys = option.coordinateSystem;
-	                if (coordSys !== 'polar' && coordSys !== 'cartesian2d') {
-	                    throw new Error('Line not support coordinateSystem besides cartesian and polar');
-	                }
-	            }
-	            return createListFromArray(option.data, this, ecModel);
+	    module.exports = {
+	        /**
+	         * Create a muti dimension List structure from seriesModel.
+	         * @param  {module:echarts/model/Model} seriesModel
+	         * @return {module:echarts/data/List} list
+	         */
+	        createList: function (seriesModel) {
+	            var data = seriesModel.get('data');
+	            return createListFromArray(data, seriesModel, seriesModel.ecModel);
 	        },
 
-	        defaultOption: {
-	            zlevel: 0,                  // 一级层叠
-	            z: 2,                       // 二级层叠
-	            coordinateSystem: 'cartesian2d',
-	            legendHoverLink: true,
+	        /**
+	         * Complete the dimensions array guessed from the data structure.
+	         * @param  {Array.<string>} dimensions Necessary dimensions, like ['x', 'y']
+	         * @param  {Array} data Data list. [[1, 2, 3], [2, 3, 4]]
+	         * @param  {Object} [opt]
+	         * @param  {Array.<string>} [opt.defaultNames] Default names to fill not necessary dimensions, like ['value']
+	         * @param  {string} [opt.extraPrefix] Prefix of name when filling the left dimensions.
+	         * @param  {number} [opt.dimCount] If not specified, guess by the first data item.
+	         * @return {Array.<string>}
+	         */
+	        completeDimensions: __webpack_require__(103),
 
-	            hoverAnimation: true,
-	            // stack: null
-	            // xAxisIndex: 0,
-	            // yAxisIndex: 0,
+	        /**
+	         * Create a symbol element with given symbol configuration: shape, x, y, width, height, color
+	         * @see http://echarts.baidu.com/option.html#series-scatter.symbol
+	         * @param {string} symbolDesc
+	         * @param {number} x
+	         * @param {number} y
+	         * @param {number} w
+	         * @param {number} h
+	         * @param {string} color
+	         */
+	        createSymbol: symbolUtil.createSymbol,
 
-	            // polarIndex: 0,
+	        /**
+	         * Create scale
+	         * @param {Array.<number>} dataExtent
+	         * @param {Object|module:echarts/Model} option
+	         */
+	        createScale: function (dataExtent, option) {
+	            var axisModel = option;
+	            if (!(option instanceof Model)) {
+	                axisModel = new Model(option);
+	                util.mixin(axisModel, axisModelCommonMixin);
+	            }
 
-	            // If clip the overflow value
-	            clipOverflow: true,
+	            var scale = axisHelper.createScaleByModel(axisModel);
+	            scale.setExtent(dataExtent[0], dataExtent[1]);
 
-	            label: {
-	                normal: {
-	                    position: 'top'
-	                }
-	            },
-	            // itemStyle: {
-	            //     normal: {},
-	            //     emphasis: {}
-	            // },
-	            lineStyle: {
-	                normal: {
-	                    width: 2,
-	                    type: 'solid'
-	                }
-	            },
-	            // areaStyle: {},
-	            // false, 'start', 'end', 'middle'
-	            step: false,
+	            axisHelper.niceScaleExtent(scale, axisModel);
+	            return scale;
+	        },
 
-	            // Disabled if step is true
-	            smooth: false,
-	            smoothMonotone: null,
-	            // 拐点图形类型
-	            symbol: 'emptyCircle',
-	            // 拐点图形大小
-	            symbolSize: 4,
-	            // 拐点图形旋转控制
-	            symbolRotate: null,
-
-	            // 是否显示 symbol, 只有在 tooltip hover 的时候显示
-	            showSymbol: true,
-	            // 标志图形默认只有主轴显示(随主轴标签间隔隐藏策略)
-	            showAllSymbol: false,
-
-	            // 是否连接断点
-	            connectNulls: false,
-
-	            // 数据过滤,'average', 'max', 'min', 'sum'
-	            sampling: 'none',
-
-	            animationEasing: 'linear',
-
-	            // Disable progressive
-	            progressive: 0,
-	            hoverLayerThreshold: Infinity
+	        /**
+	         * Mixin common methods to axis model,
+	         *
+	         * Inlcude methods
+	         * `getFormattedLabels() => Array.<string>`
+	         * `getCategories() => Array.<string>`
+	         * `getMin(origin: boolean) => number`
+	         * `getMax(origin: boolean) => number`
+	         * `getNeedCrossZero() => boolean`
+	         * `setRange(start: number, end: number)`
+	         * `resetRange()`
+	         */
+	        mixinAxisModelCommonMethods: function (Model) {
+	            util.mixin(Model, axisModelCommonMixin);
 	        }
-	    });
+	    };
 
 
 /***/ },
@@ -23086,9 +23647,14 @@
 	        var dimensions = axesInfo && axesInfo.dimensions;
 	        if (!dimensions) {
 	            // Get dimensions from registered coordinate system
-	            dimensions = (registeredCoordSys && registeredCoordSys.dimensions) || ['x', 'y'];
-	            dimensions = completeDimensions(dimensions, data, dimensions.concat(['value']));
+	            dimensions = (registeredCoordSys && (
+	                registeredCoordSys.getDimensionsInfo
+	                    ? registeredCoordSys.getDimensionsInfo()
+	                    : registeredCoordSys.dimensions.slice()
+	            )) || ['x', 'y'];
+	            dimensions = completeDimensions(dimensions, data, {defaultNames: dimensions.concat(['value'])});
 	        }
+
 	        var categoryIndex = axesInfo ? axesInfo.categoryIndex : -1;
 
 	        var list = new List(dimensions, seriesModel);
@@ -23205,7 +23771,7 @@
 	            var isXAxisCateogry = xAxisType === 'category';
 	            var isYAxisCategory = yAxisType === 'category';
 
-	            completeDimensions(dimensions, data, ['x', 'y', 'z']);
+	            completeDimensions(dimensions, data, {defaultNames: ['x', 'y', 'z']});
 
 	            var categoryAxesModels = {};
 	            if (isXAxisCateogry) {
@@ -23295,7 +23861,7 @@
 	            var isAngleAxisCateogry = angleAxisType === 'category';
 	            var isRadiusAxisCateogry = radiusAxisType === 'category';
 
-	            completeDimensions(dimensions, data, ['radius', 'angle', 'value']);
+	            completeDimensions(dimensions, data, {defaultNames: ['radius', 'angle', 'value']});
 
 	            var categoryAxesModels = {};
 	            if (isRadiusAxisCateogry) {
@@ -23318,7 +23884,7 @@
 	                dimensions: completeDimensions([
 	                    {name: 'lng'},
 	                    {name: 'lat'}
-	                ], data, ['lng', 'lat', 'value'])
+	                ], data, {defaultNames: ['lng', 'lat', 'value']})
 	            };
 	        }
 	    };
@@ -23373,23 +23939,30 @@
 
 	    /**
 	     * Complete the dimensions array guessed from the data structure.
-	     * @param  {Array.<string>} dimensions      Necessary dimensions, like ['x', 'y']
-	     * @param  {Array} data                     Data list. [[1, 2, 3], [2, 3, 4]]
-	     * @param  {Array.<string>} [defaultNames]    Default names to fill not necessary dimensions, like ['value']
-	     * @param  {string} [extraPrefix]             Prefix of name when filling the left dimensions.
+	     * @param  {Array.<string>} dimensions Necessary dimensions, like ['x', 'y']
+	     * @param  {Array} data Data list. [[1, 2, 3], [2, 3, 4]]
+	     * @param  {Object} [opt]
+	     * @param  {Array.<string>} [opt.defaultNames] Default names to fill not necessary dimensions, like ['value']
+	     * @param  {string} [opt.extraPrefix] Prefix of name when filling the left dimensions.
+	     * @param  {number} [opt.dimCount] If not specified, guess by the first data item.
 	     * @return {Array.<string>}
 	     */
-	    function completeDimensions(dimensions, data, defaultNames, extraPrefix) {
+	    function completeDimensions(dimensions, data, opt) {
 	        if (!data) {
 	            return dimensions;
 	        }
 
-	        var value0 = retrieveValue(data[0]);
-	        var dimSize = zrUtil.isArray(value0) && value0.length || 1;
+	        opt = opt || {};
 
-	        defaultNames = defaultNames || [];
-	        extraPrefix = extraPrefix || 'extra';
-	        for (var i = 0; i < dimSize; i++) {
+	        var dimCount = opt.dimCount;
+	        if (dimCount == null) {
+	            var value0 = retrieveValue(data[0]);
+	            dimCount = zrUtil.isArray(value0) && value0.length || 1;
+	        }
+
+	        var defaultNames = opt.defaultNames || [];
+	        var extraPrefix = opt.extraPrefix || 'extra';
+	        for (var i = 0; i < dimCount; i++) {
 	            if (!dimensions[i]) {
 	                var name = defaultNames[i] || (extraPrefix + (i - defaultNames.length));
 	                dimensions[i] = guessOrdinal(data, i)
@@ -23435,17 +24008,1727 @@
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
+	// Symbol factory
+
+
+	    var graphic = __webpack_require__(44);
+	    var BoundingRect = __webpack_require__(9);
+
+	    /**
+	     * Triangle shape
+	     * @inner
+	     */
+	    var Triangle = graphic.extendShape({
+	        type: 'triangle',
+	        shape: {
+	            cx: 0,
+	            cy: 0,
+	            width: 0,
+	            height: 0
+	        },
+	        buildPath: function (path, shape) {
+	            var cx = shape.cx;
+	            var cy = shape.cy;
+	            var width = shape.width / 2;
+	            var height = shape.height / 2;
+	            path.moveTo(cx, cy - height);
+	            path.lineTo(cx + width, cy + height);
+	            path.lineTo(cx - width, cy + height);
+	            path.closePath();
+	        }
+	    });
+	    /**
+	     * Diamond shape
+	     * @inner
+	     */
+	    var Diamond = graphic.extendShape({
+	        type: 'diamond',
+	        shape: {
+	            cx: 0,
+	            cy: 0,
+	            width: 0,
+	            height: 0
+	        },
+	        buildPath: function (path, shape) {
+	            var cx = shape.cx;
+	            var cy = shape.cy;
+	            var width = shape.width / 2;
+	            var height = shape.height / 2;
+	            path.moveTo(cx, cy - height);
+	            path.lineTo(cx + width, cy);
+	            path.lineTo(cx, cy + height);
+	            path.lineTo(cx - width, cy);
+	            path.closePath();
+	        }
+	    });
+
+	    /**
+	     * Pin shape
+	     * @inner
+	     */
+	    var Pin = graphic.extendShape({
+	        type: 'pin',
+	        shape: {
+	            // x, y on the cusp
+	            x: 0,
+	            y: 0,
+	            width: 0,
+	            height: 0
+	        },
+
+	        buildPath: function (path, shape) {
+	            var x = shape.x;
+	            var y = shape.y;
+	            var w = shape.width / 5 * 3;
+	            // Height must be larger than width
+	            var h = Math.max(w, shape.height);
+	            var r = w / 2;
+
+	            // Dist on y with tangent point and circle center
+	            var dy = r * r / (h - r);
+	            var cy = y - h + r + dy;
+	            var angle = Math.asin(dy / r);
+	            // Dist on x with tangent point and circle center
+	            var dx = Math.cos(angle) * r;
+
+	            var tanX = Math.sin(angle);
+	            var tanY = Math.cos(angle);
+
+	            path.arc(
+	                x, cy, r,
+	                Math.PI - angle,
+	                Math.PI * 2 + angle
+	            );
+
+	            var cpLen = r * 0.6;
+	            var cpLen2 = r * 0.7;
+	            path.bezierCurveTo(
+	                x + dx - tanX * cpLen, cy + dy + tanY * cpLen,
+	                x, y - cpLen2,
+	                x, y
+	            );
+	            path.bezierCurveTo(
+	                x, y - cpLen2,
+	                x - dx + tanX * cpLen, cy + dy + tanY * cpLen,
+	                x - dx, cy + dy
+	            );
+	            path.closePath();
+	        }
+	    });
+
+	    /**
+	     * Arrow shape
+	     * @inner
+	     */
+	    var Arrow = graphic.extendShape({
+
+	        type: 'arrow',
+
+	        shape: {
+	            x: 0,
+	            y: 0,
+	            width: 0,
+	            height: 0
+	        },
+
+	        buildPath: function (ctx, shape) {
+	            var height = shape.height;
+	            var width = shape.width;
+	            var x = shape.x;
+	            var y = shape.y;
+	            var dx = width / 3 * 2;
+	            ctx.moveTo(x, y);
+	            ctx.lineTo(x + dx, y + height);
+	            ctx.lineTo(x, y + height / 4 * 3);
+	            ctx.lineTo(x - dx, y + height);
+	            ctx.lineTo(x, y);
+	            ctx.closePath();
+	        }
+	    });
+
+	    /**
+	     * Map of path contructors
+	     * @type {Object.<string, module:zrender/graphic/Path>}
+	     */
+	    var symbolCtors = {
+	        line: graphic.Line,
+
+	        rect: graphic.Rect,
+
+	        roundRect: graphic.Rect,
+
+	        square: graphic.Rect,
+
+	        circle: graphic.Circle,
+
+	        diamond: Diamond,
+
+	        pin: Pin,
+
+	        arrow: Arrow,
+
+	        triangle: Triangle
+	    };
+
+	    var symbolShapeMakers = {
+
+	        line: function (x, y, w, h, shape) {
+	            // FIXME
+	            shape.x1 = x;
+	            shape.y1 = y + h / 2;
+	            shape.x2 = x + w;
+	            shape.y2 = y + h / 2;
+	        },
+
+	        rect: function (x, y, w, h, shape) {
+	            shape.x = x;
+	            shape.y = y;
+	            shape.width = w;
+	            shape.height = h;
+	        },
+
+	        roundRect: function (x, y, w, h, shape) {
+	            shape.x = x;
+	            shape.y = y;
+	            shape.width = w;
+	            shape.height = h;
+	            shape.r = Math.min(w, h) / 4;
+	        },
+
+	        square: function (x, y, w, h, shape) {
+	            var size = Math.min(w, h);
+	            shape.x = x;
+	            shape.y = y;
+	            shape.width = size;
+	            shape.height = size;
+	        },
+
+	        circle: function (x, y, w, h, shape) {
+	            // Put circle in the center of square
+	            shape.cx = x + w / 2;
+	            shape.cy = y + h / 2;
+	            shape.r = Math.min(w, h) / 2;
+	        },
+
+	        diamond: function (x, y, w, h, shape) {
+	            shape.cx = x + w / 2;
+	            shape.cy = y + h / 2;
+	            shape.width = w;
+	            shape.height = h;
+	        },
+
+	        pin: function (x, y, w, h, shape) {
+	            shape.x = x + w / 2;
+	            shape.y = y + h / 2;
+	            shape.width = w;
+	            shape.height = h;
+	        },
+
+	        arrow: function (x, y, w, h, shape) {
+	            shape.x = x + w / 2;
+	            shape.y = y + h / 2;
+	            shape.width = w;
+	            shape.height = h;
+	        },
+
+	        triangle: function (x, y, w, h, shape) {
+	            shape.cx = x + w / 2;
+	            shape.cy = y + h / 2;
+	            shape.width = w;
+	            shape.height = h;
+	        }
+	    };
+
+	    var symbolBuildProxies = {};
+	    for (var name in symbolCtors) {
+	        if (symbolCtors.hasOwnProperty(name)) {
+	            symbolBuildProxies[name] = new symbolCtors[name]();
+	        }
+	    }
+
+	    var Symbol = graphic.extendShape({
+
+	        type: 'symbol',
+
+	        shape: {
+	            symbolType: '',
+	            x: 0,
+	            y: 0,
+	            width: 0,
+	            height: 0
+	        },
+
+	        beforeBrush: function () {
+	            var style = this.style;
+	            var shape = this.shape;
+	            // FIXME
+	            if (shape.symbolType === 'pin' && style.textPosition === 'inside') {
+	                style.textPosition = ['50%', '40%'];
+	                style.textAlign = 'center';
+	                style.textVerticalAlign = 'middle';
+	            }
+	        },
+
+	        buildPath: function (ctx, shape, inBundle) {
+	            var symbolType = shape.symbolType;
+	            var proxySymbol = symbolBuildProxies[symbolType];
+	            if (shape.symbolType !== 'none') {
+	                if (!proxySymbol) {
+	                    // Default rect
+	                    symbolType = 'rect';
+	                    proxySymbol = symbolBuildProxies[symbolType];
+	                }
+	                symbolShapeMakers[symbolType](
+	                    shape.x, shape.y, shape.width, shape.height, proxySymbol.shape
+	                );
+	                proxySymbol.buildPath(ctx, proxySymbol.shape, inBundle);
+	            }
+	        }
+	    });
+
+	    // Provide setColor helper method to avoid determine if set the fill or stroke outside
+	    var symbolPathSetColor = function (color) {
+	        if (this.type !== 'image') {
+	            var symbolStyle = this.style;
+	            var symbolShape = this.shape;
+	            if (symbolShape && symbolShape.symbolType === 'line') {
+	                symbolStyle.stroke = color;
+	            }
+	            else if (this.__isEmptyBrush) {
+	                symbolStyle.stroke = color;
+	                symbolStyle.fill = '#fff';
+	            }
+	            else {
+	                // FIXME 判断图形默认是填充还是描边,使用 onlyStroke ?
+	                symbolStyle.fill && (symbolStyle.fill = color);
+	                symbolStyle.stroke && (symbolStyle.stroke = color);
+	            }
+	            this.dirty(false);
+	        }
+	    };
+
+	    var symbolUtil = {
+	        /**
+	         * Create a symbol element with given symbol configuration: shape, x, y, width, height, color
+	         * @param {string} symbolType
+	         * @param {number} x
+	         * @param {number} y
+	         * @param {number} w
+	         * @param {number} h
+	         * @param {string} color
+	         */
+	        createSymbol: function (symbolType, x, y, w, h, color) {
+	            // TODO Support image object, DynamicImage.
+
+	            var isEmpty = symbolType.indexOf('empty') === 0;
+	            if (isEmpty) {
+	                symbolType = symbolType.substr(5, 1).toLowerCase() + symbolType.substr(6);
+	            }
+	            var symbolPath;
+
+	            if (symbolType.indexOf('image://') === 0) {
+	                symbolPath = new graphic.Image({
+	                    style: {
+	                        image: symbolType.slice(8),
+	                        x: x,
+	                        y: y,
+	                        width: w,
+	                        height: h
+	                    }
+	                });
+	            }
+	            else if (symbolType.indexOf('path://') === 0) {
+	                symbolPath = graphic.makePath(symbolType.slice(7), {}, new BoundingRect(x, y, w, h));
+	            }
+	            else {
+	                symbolPath = new Symbol({
+	                    shape: {
+	                        symbolType: symbolType,
+	                        x: x,
+	                        y: y,
+	                        width: w,
+	                        height: h
+	                    }
+	                });
+	            }
+
+	            symbolPath.__isEmptyBrush = isEmpty;
+
+	            symbolPath.setColor = symbolPathSetColor;
+
+	            symbolPath.setColor(color);
+
+	            return symbolPath;
+	        }
+	    };
+
+	    module.exports = symbolUtil;
+
+
+/***/ },
+/* 105 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+
+	    var OrdinalScale = __webpack_require__(106);
+	    var IntervalScale = __webpack_require__(108);
+	    __webpack_require__(109);
+	    __webpack_require__(110);
+	    var Scale = __webpack_require__(107);
+
+	    var numberUtil = __webpack_require__(7);
+	    var zrUtil = __webpack_require__(4);
+	    var textContain = __webpack_require__(8);
+	    var axisHelper = {};
+
+	    /**
+	     * Get axis scale extent before niced.
+	     * Item of returned array can only be number (including Infinity and NaN).
+	     */
+	    axisHelper.getScaleExtent = function (scale, model) {
+	        var scaleType = scale.type;
+
+	        var min = model.getMin();
+	        var max = model.getMax();
+	        var fixMin = min != null;
+	        var fixMax = max != null;
+	        var originalExtent = scale.getExtent();
+
+	        var axisDataLen;
+	        var boundaryGap;
+	        var span;
+	        if (scaleType === 'ordinal') {
+	            axisDataLen = (model.get('data') || []).length;
+	        }
+	        else {
+	            boundaryGap = model.get('boundaryGap');
+	            if (!zrUtil.isArray(boundaryGap)) {
+	                boundaryGap = [boundaryGap || 0, boundaryGap || 0];
+	            }
+	            boundaryGap[0] = numberUtil.parsePercent(boundaryGap[0], 1);
+	            boundaryGap[1] = numberUtil.parsePercent(boundaryGap[1], 1);
+	            span = originalExtent[1] - originalExtent[0];
+	        }
+
+	        if (min == null) {
+	            min = scaleType === 'ordinal'
+	                ? (axisDataLen ? 0 : NaN)
+	                : originalExtent[0] - boundaryGap[0] * span;
+	        }
+	        if (max == null) {
+	            max = scaleType === 'ordinal'
+	                ? (axisDataLen ? axisDataLen - 1 : NaN)
+	                : originalExtent[1] + boundaryGap[1] * span;
+	        }
+
+	        if (min === 'dataMin') {
+	            min = originalExtent[0];
+	        }
+	        if (max === 'dataMax') {
+	            max = originalExtent[1];
+	        }
+
+	        (min == null || !isFinite(min)) && (min = NaN);
+	        (max == null || !isFinite(max)) && (max = NaN);
+
+	        scale.setBlank(zrUtil.eqNaN(min) || zrUtil.eqNaN(max));
+
+	        // Evaluate if axis needs cross zero
+	        if (model.getNeedCrossZero()) {
+	            // Axis is over zero and min is not set
+	            if (min > 0 && max > 0 && !fixMin) {
+	                min = 0;
+	            }
+	            // Axis is under zero and max is not set
+	            if (min < 0 && max < 0 && !fixMax) {
+	                max = 0;
+	            }
+	        }
+
+	        return [min, max];
+	    };
+
+	    axisHelper.niceScaleExtent = function (scale, model) {
+	        var extent = axisHelper.getScaleExtent(scale, model);
+	        var fixMin = model.getMin() != null;
+	        var fixMax = model.getMax() != null;
+	        var splitNumber = model.get('splitNumber');
+
+	        if (scale.type === 'log') {
+	            scale.base = model.get('logBase');
+	        }
+
+	        scale.setExtent(extent[0], extent[1]);
+	        scale.niceExtent(splitNumber, fixMin, fixMax);
+
+	        // Use minInterval to constraint the calculated interval.
+	        // If calculated interval is less than minInterval. increase the interval quantity until
+	        // it is larger than minInterval.
+	        // For example:
+	        //  minInterval is 1, calculated interval is 0.2, so increase it to be 1. In this way we can get
+	        //  an integer axis.
+	        var minInterval = model.get('minInterval');
+	        if (isFinite(minInterval) && !fixMin && !fixMax && scale.type === 'interval') {
+	            var interval = scale.getInterval();
+	            var intervalScale = Math.max(Math.abs(interval), minInterval) / interval;
+	            // while (interval < minInterval) {
+	            //     var quantity = numberUtil.quantity(interval);
+	            //     interval = quantity * 10;
+	            //     scaleQuantity *= 10;
+	            // }
+	            extent = scale.getExtent();
+	            var origin = (extent[1] + extent[0]) / 2;
+	            scale.setExtent(
+	                intervalScale * (extent[0] - origin) + origin,
+	                intervalScale * (extent[1] - origin) + origin
+	            );
+	            scale.niceExtent(splitNumber);
+	        }
+
+	        // If some one specified the min, max. And the default calculated interval
+	        // is not good enough. He can specify the interval. It is often appeared
+	        // in angle axis with angle 0 - 360. Interval calculated in interval scale is hard
+	        // to be 60.
+	        // FIXME
+	        var interval = model.get('interval');
+	        if (interval != null) {
+	            scale.setInterval && scale.setInterval(interval);
+	        }
+	    };
+
+	    /**
+	     * @param {module:echarts/model/Model} model
+	     * @param {string} [axisType] Default retrieve from model.type
+	     * @return {module:echarts/scale/*}
+	     */
+	    axisHelper.createScaleByModel = function(model, axisType) {
+	        axisType = axisType || model.get('type');
+	        if (axisType) {
+	            switch (axisType) {
+	                // Buildin scale
+	                case 'category':
+	                    return new OrdinalScale(
+	                        model.getCategories(), [Infinity, -Infinity]
+	                    );
+	                case 'value':
+	                    return new IntervalScale();
+	                // Extended scale, like time and log
+	                default:
+	                    return (Scale.getClass(axisType) || IntervalScale).create(model);
+	            }
+	        }
+	    };
+
+	    /**
+	     * Check if the axis corss 0
+	     */
+	    axisHelper.ifAxisCrossZero = function (axis) {
+	        var dataExtent = axis.scale.getExtent();
+	        var min = dataExtent[0];
+	        var max = dataExtent[1];
+	        return !((min > 0 && max > 0) || (min < 0 && max < 0));
+	    };
+
+	    /**
+	     * @param {Array.<number>} tickCoords In axis self coordinate.
+	     * @param {Array.<string>} labels
+	     * @param {string} font
+	     * @param {boolean} isAxisHorizontal
+	     * @return {number}
+	     */
+	    axisHelper.getAxisLabelInterval = function (tickCoords, labels, font, isAxisHorizontal) {
+	        // FIXME
+	        // 不同角的axis和label,不只是horizontal和vertical.
+
+	        var textSpaceTakenRect;
+	        var autoLabelInterval = 0;
+	        var accumulatedLabelInterval = 0;
+
+	        var step = 1;
+	        if (labels.length > 40) {
+	            // Simple optimization for large amount of labels
+	            step = Math.floor(labels.length / 40);
+	        }
+
+	        for (var i = 0; i < tickCoords.length; i += step) {
+	            var tickCoord = tickCoords[i];
+	            var rect = textContain.getBoundingRect(
+	                labels[i], font, 'center', 'top'
+	            );
+	            rect[isAxisHorizontal ? 'x' : 'y'] += tickCoord;
+	            // FIXME Magic number 1.5
+	            rect[isAxisHorizontal ? 'width' : 'height'] *= 1.3;
+	            if (!textSpaceTakenRect) {
+	                textSpaceTakenRect = rect.clone();
+	            }
+	            // There is no space for current label;
+	            else if (textSpaceTakenRect.intersect(rect)) {
+	                accumulatedLabelInterval++;
+	                autoLabelInterval = Math.max(autoLabelInterval, accumulatedLabelInterval);
+	            }
+	            else {
+	                textSpaceTakenRect.union(rect);
+	                // Reset
+	                accumulatedLabelInterval = 0;
+	            }
+	        }
+	        if (autoLabelInterval === 0 && step > 1) {
+	            return step;
+	        }
+	        return (autoLabelInterval + 1) * step - 1;
+	    };
+
+	    /**
+	     * @param {Object} axis
+	     * @param {Function} labelFormatter
+	     * @return {Array.<string>}
+	     */
+	    axisHelper.getFormattedLabels = function (axis, labelFormatter) {
+	        var scale = axis.scale;
+	        var labels = scale.getTicksLabels();
+	        var ticks = scale.getTicks();
+	        if (typeof labelFormatter === 'string') {
+	            labelFormatter = (function (tpl) {
+	                return function (val) {
+	                    return tpl.replace('{value}', val != null ? val : '');
+	                };
+	            })(labelFormatter);
+	            // Consider empty array
+	            return zrUtil.map(labels, labelFormatter);
+	        }
+	        else if (typeof labelFormatter === 'function') {
+	            return zrUtil.map(ticks, function (tick, idx) {
+	                return labelFormatter(
+	                    axisHelper.getAxisRawValue(axis, tick),
+	                    idx
+	                );
+	            }, this);
+	        }
+	        else {
+	            return labels;
+	        }
+	    };
+
+	    axisHelper.getAxisRawValue = function (axis, value) {
+	        // In category axis with data zoom, tick is not the original
+	        // index of axis.data. So tick should not be exposed to user
+	        // in category axis.
+	        return axis.type === 'category' ? axis.scale.getLabel(value) : value;
+	    };
+
+	    module.exports = axisHelper;
+
+
+/***/ },
+/* 106 */
+/***/ function(module, exports, __webpack_require__) {
+
+	/**
+	 * Linear continuous scale
+	 * @module echarts/coord/scale/Ordinal
+	 *
+	 * http://en.wikipedia.org/wiki/Level_of_measurement
+	 */
+
+	// FIXME only one data
+
+
+	    var zrUtil = __webpack_require__(4);
+	    var Scale = __webpack_require__(107);
+
+	    var scaleProto = Scale.prototype;
+
+	    var OrdinalScale = Scale.extend({
+
+	        type: 'ordinal',
+
+	        init: function (data, extent) {
+	            this._data = data;
+	            this._extent = extent || [0, data.length - 1];
+	        },
+
+	        parse: function (val) {
+	            return typeof val === 'string'
+	                ? zrUtil.indexOf(this._data, val)
+	                // val might be float.
+	                : Math.round(val);
+	        },
+
+	        contain: function (rank) {
+	            rank = this.parse(rank);
+	            return scaleProto.contain.call(this, rank)
+	                && this._data[rank] != null;
+	        },
+
+	        /**
+	         * Normalize given rank or name to linear [0, 1]
+	         * @param {number|string} [val]
+	         * @return {number}
+	         */
+	        normalize: function (val) {
+	            return scaleProto.normalize.call(this, this.parse(val));
+	        },
+
+	        scale: function (val) {
+	            return Math.round(scaleProto.scale.call(this, val));
+	        },
+
+	        /**
+	         * @return {Array}
+	         */
+	        getTicks: function () {
+	            var ticks = [];
+	            var extent = this._extent;
+	            var rank = extent[0];
+
+	            while (rank <= extent[1]) {
+	                ticks.push(rank);
+	                rank++;
+	            }
+
+	            return ticks;
+	        },
+
+	        /**
+	         * Get item on rank n
+	         * @param {number} n
+	         * @return {string}
+	         */
+	        getLabel: function (n) {
+	            return this._data[n];
+	        },
+
+	        /**
+	         * @return {number}
+	         */
+	        count: function () {
+	            return this._extent[1] - this._extent[0] + 1;
+	        },
+
+	        /**
+	         * @override
+	         */
+	        unionExtentFromData: function (data, dim) {
+	            this.unionExtent(data.getDataExtent(dim, false));
+	        },
+
+	        niceTicks: zrUtil.noop,
+	        niceExtent: zrUtil.noop
+	    });
+
+	    /**
+	     * @return {module:echarts/scale/Time}
+	     */
+	    OrdinalScale.create = function () {
+	        return new OrdinalScale();
+	    };
+
+	    module.exports = OrdinalScale;
+
+
+/***/ },
+/* 107 */
+/***/ function(module, exports, __webpack_require__) {
+
+	/**
+	 * // Scale class management
+	 * @module echarts/scale/Scale
+	 */
+
+
+	    var clazzUtil = __webpack_require__(13);
+
+	    function Scale() {
+	        /**
+	         * Extent
+	         * @type {Array.<number>}
+	         * @protected
+	         */
+	        this._extent = [Infinity, -Infinity];
+
+	        /**
+	         * Step is calculated in adjustExtent
+	         * @type {Array.<number>}
+	         * @protected
+	         */
+	        this._interval = 0;
+
+	        this.init && this.init.apply(this, arguments);
+	    }
+
+	    var scaleProto = Scale.prototype;
+
+	    /**
+	     * Parse input val to valid inner number.
+	     * @param {*} val
+	     * @return {number}
+	     */
+	    scaleProto.parse = function (val) {
+	        // Notice: This would be a trap here, If the implementation
+	        // of this method depends on extent, and this method is used
+	        // before extent set (like in dataZoom), it would be wrong.
+	        // Nevertheless, parse does not depend on extent generally.
+	        return val;
+	    };
+
+	    scaleProto.contain = function (val) {
+	        var extent = this._extent;
+	        return val >= extent[0] && val <= extent[1];
+	    };
+
+	    /**
+	     * Normalize value to linear [0, 1], return 0.5 if extent span is 0
+	     * @param {number} val
+	     * @return {number}
+	     */
+	    scaleProto.normalize = function (val) {
+	        var extent = this._extent;
+	        if (extent[1] === extent[0]) {
+	            return 0.5;
+	        }
+	        return (val - extent[0]) / (extent[1] - extent[0]);
+	    };
+
+	    /**
+	     * Scale normalized value
+	     * @param {number} val
+	     * @return {number}
+	     */
+	    scaleProto.scale = function (val) {
+	        var extent = this._extent;
+	        return val * (extent[1] - extent[0]) + extent[0];
+	    };
+
+	    /**
+	     * Set extent from data
+	     * @param {Array.<number>} other
+	     */
+	    scaleProto.unionExtent = function (other) {
+	        var extent = this._extent;
+	        other[0] < extent[0] && (extent[0] = other[0]);
+	        other[1] > extent[1] && (extent[1] = other[1]);
+	        // not setExtent because in log axis it may transformed to power
+	        // this.setExtent(extent[0], extent[1]);
+	    };
+
+	    /**
+	     * Set extent from data
+	     * @param {module:echarts/data/List} data
+	     * @param {string} dim
+	     */
+	    scaleProto.unionExtentFromData = function (data, dim) {
+	        this.unionExtent(data.getDataExtent(dim, true));
+	    };
+
+	    /**
+	     * Get extent
+	     * @return {Array.<number>}
+	     */
+	    scaleProto.getExtent = function () {
+	        return this._extent.slice();
+	    };
+
+	    /**
+	     * Set extent
+	     * @param {number} start
+	     * @param {number} end
+	     */
+	    scaleProto.setExtent = function (start, end) {
+	        var thisExtent = this._extent;
+	        if (!isNaN(start)) {
+	            thisExtent[0] = start;
+	        }
+	        if (!isNaN(end)) {
+	            thisExtent[1] = end;
+	        }
+	    };
+
+	    /**
+	     * @return {Array.<string>}
+	     */
+	    scaleProto.getTicksLabels = function () {
+	        var labels = [];
+	        var ticks = this.getTicks();
+	        for (var i = 0; i < ticks.length; i++) {
+	            labels.push(this.getLabel(ticks[i]));
+	        }
+	        return labels;
+	    };
+
+	    /**
+	     * When axis extent depends on data and no data exists,
+	     * axis ticks should not be drawn, which is named 'blank'.
+	     */
+	    scaleProto.isBlank = function () {
+	        return this._isBlank;
+	    },
+
+	    /**
+	     * When axis extent depends on data and no data exists,
+	     * axis ticks should not be drawn, which is named 'blank'.
+	     */
+	    scaleProto.setBlank = function (isBlank) {
+	        this._isBlank = isBlank;
+	    };
+
+
+	    clazzUtil.enableClassExtend(Scale);
+	    clazzUtil.enableClassManagement(Scale, {
+	        registerWhenExtend: true
+	    });
+
+	    module.exports = Scale;
+
+
+/***/ },
+/* 108 */
+/***/ function(module, exports, __webpack_require__) {
+
+	/**
+	 * Interval scale
+	 * @module echarts/scale/Interval
+	 */
+
+
+
+	    var numberUtil = __webpack_require__(7);
+	    var formatUtil = __webpack_require__(6);
+	    var Scale = __webpack_require__(107);
+
+	    var mathFloor = Math.floor;
+	    var mathCeil = Math.ceil;
+
+	    var getPrecisionSafe = numberUtil.getPrecisionSafe;
+	    var roundingErrorFix = numberUtil.round;
+	    /**
+	     * @alias module:echarts/coord/scale/Interval
+	     * @constructor
+	     */
+	    var IntervalScale = Scale.extend({
+
+	        type: 'interval',
+
+	        _interval: 0,
+
+	        _intervalPrecision: 2,
+
+	        setExtent: function (start, end) {
+	            var thisExtent = this._extent;
+	            //start,end may be a Number like '25',so...
+	            if (!isNaN(start)) {
+	                thisExtent[0] = parseFloat(start);
+	            }
+	            if (!isNaN(end)) {
+	                thisExtent[1] = parseFloat(end);
+	            }
+	        },
+
+	        unionExtent: function (other) {
+	            var extent = this._extent;
+	            other[0] < extent[0] && (extent[0] = other[0]);
+	            other[1] > extent[1] && (extent[1] = other[1]);
+
+	            // unionExtent may called by it's sub classes
+	            IntervalScale.prototype.setExtent.call(this, extent[0], extent[1]);
+	        },
+	        /**
+	         * Get interval
+	         */
+	        getInterval: function () {
+	            if (!this._interval) {
+	                this.niceTicks();
+	            }
+	            return this._interval;
+	        },
+
+	        /**
+	         * Set interval
+	         */
+	        setInterval: function (interval) {
+	            this._interval = interval;
+	            // Dropped auto calculated niceExtent and use user setted extent
+	            // We assume user wan't to set both interval, min, max to get a better result
+	            this._niceExtent = this._extent.slice();
+	        },
+
+	        /**
+	         * @return {Array.<number>}
+	         */
+	        getTicks: function () {
+	            if (!this._interval) {
+	                this.niceTicks();
+	            }
+	            var interval = this._interval;
+	            var extent = this._extent;
+	            var ticks = [];
+
+	            // Consider this case: using dataZoom toolbox, zoom and zoom.
+	            var safeLimit = 10000;
+
+	            if (interval) {
+	                var niceExtent = this._niceExtent;
+	                var precision = this._intervalPrecision = getPrecisionSafe(interval);
+	                // FIXME
+	                precision += 2;
+
+	                if (extent[0] < niceExtent[0]) {
+	                    ticks.push(extent[0]);
+	                }
+	                var tick = niceExtent[0];
+
+	                while (tick <= niceExtent[1]) {
+	                    ticks.push(tick);
+	                    // Avoid rounding error
+	                    tick = roundingErrorFix(tick + interval, precision);
+	                    if (ticks.length > safeLimit) {
+	                        return [];
+	                    }
+	                }
+	                // Consider this case: the last item of ticks is smaller
+	                // than niceExtent[1] and niceExtent[1] === extent[1].
+	                if (extent[1] > (ticks.length ? ticks[ticks.length - 1] : niceExtent[1])) {
+	                    ticks.push(extent[1]);
+	                }
+	            }
+
+	            return ticks;
+	        },
+
+	        /**
+	         * @return {Array.<string>}
+	         */
+	        getTicksLabels: function () {
+	            var labels = [];
+	            var ticks = this.getTicks();
+	            for (var i = 0; i < ticks.length; i++) {
+	                labels.push(this.getLabel(ticks[i]));
+	            }
+	            return labels;
+	        },
+
+	        /**
+	         * @param {number} data
+	         * @param {Object} [opt]
+	         * @param {number|string} [opt.precision] If 'auto', use nice presision.
+	         * @param {boolean} [opt.pad] returns 1.50 but not 1.5 if precision is 2.
+	         * @return {number}
+	         */
+	        getLabel: function (data, opt) {
+	            var precision = opt && opt.precision;
+	            if (data != null && precision != null) {
+	                // Should be more precise then tick.
+	                precision === 'auto' && (precision = this._intervalPrecision + 2);
+	                data = roundingErrorFix(data, precision, opt && opt.pad);
+	            }
+	            return formatUtil.addCommas(data);
+	        },
+
+	        /**
+	         * Update interval and extent of intervals for nice ticks
+	         *
+	         * @param {number} [splitNumber = 5] Desired number of ticks
+	         */
+	        niceTicks: function (splitNumber) {
+	            splitNumber = splitNumber || 5;
+	            var extent = this._extent;
+	            var span = extent[1] - extent[0];
+	            if (!isFinite(span)) {
+	                return;
+	            }
+	            // User may set axis min 0 and data are all negative
+	            // FIXME If it needs to reverse ?
+	            if (span < 0) {
+	                span = -span;
+	                extent.reverse();
+	            }
+
+	            // From "Nice Numbers for Graph Labels" of Graphic Gems
+	            // var niceSpan = numberUtil.nice(span, false);
+	            var step = roundingErrorFix(
+	                numberUtil.nice(span / splitNumber, true),
+	                Math.max(
+	                    getPrecisionSafe(extent[0]),
+	                    getPrecisionSafe(extent[1])
+	                // extent may be [0, 1], and step should have 1 more digits.
+	                // To make it safe we add 2 more digits
+	                ) + 2
+	            );
+
+	            var precision = getPrecisionSafe(step) + 2;
+	            // Niced extent inside original extent
+	            var niceExtent = [
+	                roundingErrorFix(mathCeil(extent[0] / step) * step, precision),
+	                roundingErrorFix(mathFloor(extent[1] / step) * step, precision)
+	            ];
+
+	            this._interval = step;
+	            this._niceExtent = niceExtent;
+	        },
+
+	        /**
+	         * Nice extent.
+	         * @param {number} [splitNumber = 5] Given approx tick number
+	         * @param {boolean} [fixMin=false]
+	         * @param {boolean} [fixMax=false]
+	         */
+	        niceExtent: function (splitNumber, fixMin, fixMax) {
+	            var extent = this._extent;
+	            // If extent start and end are same, expand them
+	            if (extent[0] === extent[1]) {
+	                if (extent[0] !== 0) {
+	                    // Expand extent
+	                    var expandSize = extent[0];
+	                    // In the fowllowing case
+	                    //      Axis has been fixed max 100
+	                    //      Plus data are all 100 and axis extent are [100, 100].
+	                    // Extend to the both side will cause expanded max is larger than fixed max.
+	                    // So only expand to the smaller side.
+	                    if (!fixMax) {
+	                        extent[1] += expandSize / 2;
+	                        extent[0] -= expandSize / 2;
+	                    }
+	                    else {
+	                        extent[0] -= expandSize / 2;
+	                    }
+	                }
+	                else {
+	                    extent[1] = 1;
+	                }
+	            }
+	            var span = extent[1] - extent[0];
+	            // If there are no data and extent are [Infinity, -Infinity]
+	            if (!isFinite(span)) {
+	                extent[0] = 0;
+	                extent[1] = 1;
+	            }
+
+	            this.niceTicks(splitNumber);
+
+	            // var extent = this._extent;
+	            var interval = this._interval;
+
+	            if (!fixMin) {
+	                extent[0] = roundingErrorFix(mathFloor(extent[0] / interval) * interval);
+	            }
+	            if (!fixMax) {
+	                extent[1] = roundingErrorFix(mathCeil(extent[1] / interval) * interval);
+	            }
+	        }
+	    });
+
+	    /**
+	     * @return {module:echarts/scale/Time}
+	     */
+	    IntervalScale.create = function () {
+	        return new IntervalScale();
+	    };
+
+	    module.exports = IntervalScale;
+
+
+
+/***/ },
+/* 109 */
+/***/ function(module, exports, __webpack_require__) {
+
+	/**
+	 * Interval scale
+	 * @module echarts/coord/scale/Time
+	 */
+
+
+
+	    var zrUtil = __webpack_require__(4);
+	    var numberUtil = __webpack_require__(7);
+	    var formatUtil = __webpack_require__(6);
+
+	    var IntervalScale = __webpack_require__(108);
+
+	    var intervalScaleProto = IntervalScale.prototype;
+
+	    var mathCeil = Math.ceil;
+	    var mathFloor = Math.floor;
+	    var ONE_SECOND = 1000;
+	    var ONE_MINUTE = ONE_SECOND * 60;
+	    var ONE_HOUR = ONE_MINUTE * 60;
+	    var ONE_DAY = ONE_HOUR * 24;
+
+	    // FIXME 公用?
+	    var bisect = function (a, x, lo, hi) {
+	        while (lo < hi) {
+	            var mid = lo + hi >>> 1;
+	            if (a[mid][2] < x) {
+	                lo = mid + 1;
+	            }
+	            else {
+	                hi  = mid;
+	            }
+	        }
+	        return lo;
+	    };
+
+	    /**
+	     * @alias module:echarts/coord/scale/Time
+	     * @constructor
+	     */
+	    var TimeScale = IntervalScale.extend({
+	        type: 'time',
+
+	        // Overwrite
+	        getLabel: function (val) {
+	            var stepLvl = this._stepLvl;
+
+	            var date = new Date(val);
+
+	            return formatUtil.formatTime(stepLvl[0], date);
+	        },
+
+	        // Overwrite
+	        niceExtent: function (approxTickNum, fixMin, fixMax) {
+	            var extent = this._extent;
+	            // If extent start and end are same, expand them
+	            if (extent[0] === extent[1]) {
+	                // Expand extent
+	                extent[0] -= ONE_DAY;
+	                extent[1] += ONE_DAY;
+	            }
+	            // If there are no data and extent are [Infinity, -Infinity]
+	            if (extent[1] === -Infinity && extent[0] === Infinity) {
+	                var d = new Date();
+	                extent[1] = new Date(d.getFullYear(), d.getMonth(), d.getDate());
+	                extent[0] = extent[1] - ONE_DAY;
+	            }
+
+	            this.niceTicks(approxTickNum);
+
+	            // var extent = this._extent;
+	            var interval = this._interval;
+
+	            if (!fixMin) {
+	                extent[0] = numberUtil.round(mathFloor(extent[0] / interval) * interval);
+	            }
+	            if (!fixMax) {
+	                extent[1] = numberUtil.round(mathCeil(extent[1] / interval) * interval);
+	            }
+	        },
+
+	        // Overwrite
+	        niceTicks: function (approxTickNum) {
+	            approxTickNum = approxTickNum || 10;
+
+	            var extent = this._extent;
+	            var span = extent[1] - extent[0];
+	            var approxInterval = span / approxTickNum;
+	            var scaleLevelsLen = scaleLevels.length;
+	            var idx = bisect(scaleLevels, approxInterval, 0, scaleLevelsLen);
+
+	            var level = scaleLevels[Math.min(idx, scaleLevelsLen - 1)];
+	            var interval = level[2];
+	            // Same with interval scale if span is much larger than 1 year
+	            if (level[0] === 'year') {
+	                var yearSpan = span / interval;
+
+	                // From "Nice Numbers for Graph Labels" of Graphic Gems
+	                // var niceYearSpan = numberUtil.nice(yearSpan, false);
+	                var yearStep = numberUtil.nice(yearSpan / approxTickNum, true);
+
+	                interval *= yearStep;
+	            }
+
+	            var niceExtent = [
+	                mathCeil(extent[0] / interval) * interval,
+	                mathFloor(extent[1] / interval) * interval
+	            ];
+
+	            this._stepLvl = level;
+	            // Interval will be used in getTicks
+	            this._interval = interval;
+	            this._niceExtent = niceExtent;
+	        },
+
+	        parse: function (val) {
+	            // val might be float.
+	            return +numberUtil.parseDate(val);
+	        }
+	    });
+
+	    zrUtil.each(['contain', 'normalize'], function (methodName) {
+	        TimeScale.prototype[methodName] = function (val) {
+	            return intervalScaleProto[methodName].call(this, this.parse(val));
+	        };
+	    });
+
+	    // Steps from d3
+	    var scaleLevels = [
+	        // Format       step    interval
+	        ['hh:mm:ss',    1,      ONE_SECOND],           // 1s
+	        ['hh:mm:ss',    5,      ONE_SECOND * 5],       // 5s
+	        ['hh:mm:ss',    10,     ONE_SECOND * 10],      // 10s
+	        ['hh:mm:ss',    15,     ONE_SECOND * 15],      // 15s
+	        ['hh:mm:ss',    30,     ONE_SECOND * 30],      // 30s
+	        ['hh:mm\nMM-dd',1,      ONE_MINUTE],          // 1m
+	        ['hh:mm\nMM-dd',5,      ONE_MINUTE * 5],      // 5m
+	        ['hh:mm\nMM-dd',10,     ONE_MINUTE * 10],     // 10m
+	        ['hh:mm\nMM-dd',15,     ONE_MINUTE * 15],     // 15m
+	        ['hh:mm\nMM-dd',30,     ONE_MINUTE * 30],     // 30m
+	        ['hh:mm\nMM-dd',1,      ONE_HOUR],        // 1h
+	        ['hh:mm\nMM-dd',2,      ONE_HOUR * 2],    // 2h
+	        ['hh:mm\nMM-dd',6,      ONE_HOUR * 6],    // 6h
+	        ['hh:mm\nMM-dd',12,     ONE_HOUR * 12],   // 12h
+	        ['MM-dd\nyyyy', 1,      ONE_DAY],   // 1d
+	        ['week',        7,      ONE_DAY * 7],        // 7d
+	        ['month',       1,      ONE_DAY * 31],       // 1M
+	        ['quarter',     3,      ONE_DAY * 380 / 4],  // 3M
+	        ['half-year',   6,      ONE_DAY * 380 / 2],  // 6M
+	        ['year',        1,      ONE_DAY * 380]       // 1Y
+	    ];
+
+	    /**
+	     * @return {module:echarts/scale/Time}
+	     */
+	    TimeScale.create = function () {
+	        return new TimeScale();
+	    };
+
+	    module.exports = TimeScale;
+
+
+/***/ },
+/* 110 */
+/***/ function(module, exports, __webpack_require__) {
+
+	/**
+	 * Log scale
+	 * @module echarts/scale/Log
+	 */
+
+
+	    var zrUtil = __webpack_require__(4);
+	    var Scale = __webpack_require__(107);
+	    var numberUtil = __webpack_require__(7);
+
+	    // Use some method of IntervalScale
+	    var IntervalScale = __webpack_require__(108);
+
+	    var scaleProto = Scale.prototype;
+	    var intervalScaleProto = IntervalScale.prototype;
+
+	    var getPrecisionSafe = numberUtil.getPrecisionSafe;
+	    var roundingErrorFix = numberUtil.round;
+
+	    var mathFloor = Math.floor;
+	    var mathCeil = Math.ceil;
+	    var mathPow = Math.pow;
+
+	    var mathLog = Math.log;
+
+	    var LogScale = Scale.extend({
+
+	        type: 'log',
+
+	        base: 10,
+
+	        $constructor: function () {
+	            Scale.apply(this, arguments);
+	            this._originalScale = new IntervalScale();
+	        },
+
+	        /**
+	         * @return {Array.<number>}
+	         */
+	        getTicks: function () {
+	            var originalScale = this._originalScale;
+	            var extent = this._extent;
+	            var originalExtent = originalScale.getExtent();
+
+	            return zrUtil.map(intervalScaleProto.getTicks.call(this), function (val) {
+	                var powVal = numberUtil.round(mathPow(this.base, val));
+
+	                // Fix #4158
+	                powVal = (val === extent[0] && originalScale.__fixMin)
+	                    ? fixRoundingError(powVal, originalExtent[0])
+	                    : powVal;
+	                powVal = (val === extent[1] && originalScale.__fixMax)
+	                    ? fixRoundingError(powVal, originalExtent[1])
+	                    : powVal;
+
+	                return powVal;
+	            }, this);
+	        },
+
+	        /**
+	         * @param {number} val
+	         * @return {string}
+	         */
+	        getLabel: intervalScaleProto.getLabel,
+
+	        /**
+	         * @param  {number} val
+	         * @return {number}
+	         */
+	        scale: function (val) {
+	            val = scaleProto.scale.call(this, val);
+	            return mathPow(this.base, val);
+	        },
+
+	        /**
+	         * @param {number} start
+	         * @param {number} end
+	         */
+	        setExtent: function (start, end) {
+	            var base = this.base;
+	            start = mathLog(start) / mathLog(base);
+	            end = mathLog(end) / mathLog(base);
+	            intervalScaleProto.setExtent.call(this, start, end);
+	        },
+
+	        /**
+	         * @return {number} end
+	         */
+	        getExtent: function () {
+	            var base = this.base;
+	            var extent = scaleProto.getExtent.call(this);
+	            extent[0] = mathPow(base, extent[0]);
+	            extent[1] = mathPow(base, extent[1]);
+
+	            // Fix #4158
+	            var originalScale = this._originalScale;
+	            var originalExtent = originalScale.getExtent();
+	            originalScale.__fixMin && (extent[0] = fixRoundingError(extent[0], originalExtent[0]));
+	            originalScale.__fixMax && (extent[1] = fixRoundingError(extent[1], originalExtent[1]));
+
+	            return extent;
+	        },
+
+	        /**
+	         * @param  {Array.<number>} extent
+	         */
+	        unionExtent: function (extent) {
+	            this._originalScale.unionExtent(extent);
+
+	            var base = this.base;
+	            extent[0] = mathLog(extent[0]) / mathLog(base);
+	            extent[1] = mathLog(extent[1]) / mathLog(base);
+	            scaleProto.unionExtent.call(this, extent);
+	        },
+
+	        /**
+	         * @override
+	         */
+	        unionExtentFromData: function (data, dim) {
+	            this.unionExtent(data.getDataExtent(dim, true, function (val) {
+	                return val > 0;
+	            }));
+	        },
+
+	        /**
+	         * Update interval and extent of intervals for nice ticks
+	         * @param  {number} [approxTickNum = 10] Given approx tick number
+	         */
+	        niceTicks: function (approxTickNum) {
+	            approxTickNum = approxTickNum || 10;
+	            var extent = this._extent;
+	            var span = extent[1] - extent[0];
+	            if (span === Infinity || span <= 0) {
+	                return;
+	            }
+
+	            var interval = numberUtil.quantity(span);
+	            var err = approxTickNum / span * interval;
+
+	            // Filter ticks to get closer to the desired count.
+	            if (err <= 0.5) {
+	                interval *= 10;
+	            }
+
+	            // Interval should be integer
+	            while (!isNaN(interval) && Math.abs(interval) < 1 && Math.abs(interval) > 0) {
+	                interval *= 10;
+	            }
+
+	            var niceExtent = [
+	                numberUtil.round(mathCeil(extent[0] / interval) * interval),
+	                numberUtil.round(mathFloor(extent[1] / interval) * interval)
+	            ];
+
+	            this._interval = interval;
+	            this._niceExtent = niceExtent;
+	        },
+
+	        /**
+	         * Nice extent.
+	         * @param {number} [approxTickNum = 10] Given approx tick number
+	         * @param {boolean} [fixMin=false]
+	         * @param {boolean} [fixMax=false]
+	         */
+	        niceExtent: function (splitNumber, fixMin, fixMax) {
+	            intervalScaleProto.niceExtent.call(this, splitNumber, fixMin, fixMax);
+
+	            var originalScale = this._originalScale;
+	            originalScale.__fixMin = fixMin;
+	            originalScale.__fixMax = fixMax;
+	        }
+
+	    });
+
+	    zrUtil.each(['contain', 'normalize'], function (methodName) {
+	        LogScale.prototype[methodName] = function (val) {
+	            val = mathLog(val) / mathLog(this.base);
+	            return scaleProto[methodName].call(this, val);
+	        };
+	    });
+
+	    LogScale.create = function () {
+	        return new LogScale();
+	    };
+
+	    function fixRoundingError(val, originalVal) {
+	        return roundingErrorFix(val, getPrecisionSafe(originalVal));
+	    }
+
+	    module.exports = LogScale;
+
+
+/***/ },
+/* 111 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+
+	    var zrUtil = __webpack_require__(4);
+	    var axisHelper = __webpack_require__(105);
+
+	    function getName(obj) {
+	        if (zrUtil.isObject(obj) && obj.value != null) {
+	            return obj.value;
+	        }
+	        else {
+	            return obj;
+	        }
+	    }
+
+	    module.exports = {
+
+	        /**
+	         * Format labels
+	         * @return {Array.<string>}
+	         */
+	        getFormattedLabels: function () {
+	            return axisHelper.getFormattedLabels(
+	                this.axis,
+	                this.get('axisLabel.formatter')
+	            );
+	        },
+
+	        /**
+	         * Get categories
+	         */
+	        getCategories: function () {
+	            return this.get('type') === 'category'
+	                && zrUtil.map(this.get('data'), getName);
+	        },
+
+	        /**
+	         * @param {boolean} origin
+	         * @return {number|string} min value or 'dataMin' or null/undefined (means auto) or NaN
+	         */
+	        getMin: function (origin) {
+	            var option = this.option;
+	            var min = (!origin && option.rangeStart != null)
+	                ? option.rangeStart : option.min;
+
+	            if (this.axis && min != null && min !== 'dataMin' && !zrUtil.eqNaN(min)) {
+	                min = this.axis.scale.parse(min);
+	            }
+	            return min;
+	        },
+
+	        /**
+	         * @param {boolean} origin
+	         * @return {number|string} max value or 'dataMax' or null/undefined (means auto) or NaN
+	         */
+	        getMax: function (origin) {
+	            var option = this.option;
+	            var max = (!origin && option.rangeEnd != null)
+	                ? option.rangeEnd : option.max;
+
+	            if (this.axis && max != null && max !== 'dataMax' && !zrUtil.eqNaN(max)) {
+	                max = this.axis.scale.parse(max);
+	            }
+	            return max;
+	        },
+
+	        /**
+	         * @return {boolean}
+	         */
+	        getNeedCrossZero: function () {
+	            var option = this.option;
+	            return (option.rangeStart != null || option.rangeEnd != null)
+	                ? false : !option.scale;
+	        },
+
+	        /**
+	         * Should be implemented by each axis model if necessary.
+	         * @return {module:echarts/model/Component} coordinate system model
+	         */
+	        getCoordSysModel: zrUtil.noop,
+
+	        /**
+	         * @param {number} rangeStart Can only be finite number or null/undefined or NaN.
+	         * @param {number} rangeEnd Can only be finite number or null/undefined or NaN.
+	         */
+	        setRange: function (rangeStart, rangeEnd) {
+	            this.option.rangeStart = rangeStart;
+	            this.option.rangeEnd = rangeEnd;
+	        },
+
+	        /**
+	         * Reset range
+	         */
+	        resetRange: function () {
+	            // rangeStart and rangeEnd is readonly.
+	            this.option.rangeStart = this.option.rangeEnd = null;
+	        }
+	    };
+
+
+/***/ },
+/* 112 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+
+	    var zrUtil = __webpack_require__(4);
+	    var echarts = __webpack_require__(1);
+	    var PRIORITY = echarts.PRIORITY;
+
+	    __webpack_require__(113);
+	    __webpack_require__(114);
+
+	    echarts.registerVisual(zrUtil.curry(
+	        __webpack_require__(119), 'line', 'circle', 'line'
+	    ));
+	    echarts.registerLayout(zrUtil.curry(
+	        __webpack_require__(120), 'line'
+	    ));
+
+	    // Down sample after filter
+	    echarts.registerProcessor(PRIORITY.PROCESSOR.STATISTIC, zrUtil.curry(
+	        __webpack_require__(121), 'line'
+	    ));
+
+	    // In case developer forget to include grid component
+	    __webpack_require__(122);
+
+
+/***/ },
+/* 113 */
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+
+	    var createListFromArray = __webpack_require__(102);
+	    var SeriesModel = __webpack_require__(28);
+
+	    module.exports = SeriesModel.extend({
+
+	        type: 'series.line',
+
+	        dependencies: ['grid', 'polar'],
+
+	        getInitialData: function (option, ecModel) {
+	            if (true) {
+	                var coordSys = option.coordinateSystem;
+	                if (coordSys !== 'polar' && coordSys !== 'cartesian2d') {
+	                    throw new Error('Line not support coordinateSystem besides cartesian and polar');
+	                }
+	            }
+	            return createListFromArray(option.data, this, ecModel);
+	        },
+
+	        defaultOption: {
+	            zlevel: 0,                  // 一级层叠
+	            z: 2,                       // 二级层叠
+	            coordinateSystem: 'cartesian2d',
+	            legendHoverLink: true,
+
+	            hoverAnimation: true,
+	            // stack: null
+	            // xAxisIndex: 0,
+	            // yAxisIndex: 0,
+
+	            // polarIndex: 0,
+
+	            // If clip the overflow value
+	            clipOverflow: true,
+
+	            label: {
+	                normal: {
+	                    position: 'top'
+	                }
+	            },
+	            // itemStyle: {
+	            //     normal: {},
+	            //     emphasis: {}
+	            // },
+	            lineStyle: {
+	                normal: {
+	                    width: 2,
+	                    type: 'solid'
+	                }
+	            },
+	            // areaStyle: {},
+	            // false, 'start', 'end', 'middle'
+	            step: false,
+
+	            // Disabled if step is true
+	            smooth: false,
+	            smoothMonotone: null,
+	            // 拐点图形类型
+	            symbol: 'emptyCircle',
+	            // 拐点图形大小
+	            symbolSize: 4,
+	            // 拐点图形旋转控制
+	            symbolRotate: null,
+
+	            // 是否显示 symbol, 只有在 tooltip hover 的时候显示
+	            showSymbol: true,
+	            // 标志图形默认只有主轴显示(随主轴标签间隔隐藏策略)
+	            showAllSymbol: false,
+
+	            // 是否连接断点
+	            connectNulls: false,
+
+	            // 数据过滤,'average', 'max', 'min', 'sum'
+	            sampling: 'none',
+
+	            animationEasing: 'linear',
+
+	            // Disable progressive
+	            progressive: 0,
+	            hoverLayerThreshold: Infinity
+	        }
+	    });
+
+
+/***/ },
+/* 114 */
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
 	// FIXME step not support polar
 
 
 	    var zrUtil = __webpack_require__(4);
-	    var SymbolDraw = __webpack_require__(105);
-	    var Symbol = __webpack_require__(106);
-	    var lineAnimationDiff = __webpack_require__(108);
-	    var graphic = __webpack_require__(43);
+	    var SymbolDraw = __webpack_require__(115);
+	    var Symbol = __webpack_require__(116);
+	    var lineAnimationDiff = __webpack_require__(117);
+	    var graphic = __webpack_require__(44);
 	    var modelUtil = __webpack_require__(5);
-	    var polyHelper = __webpack_require__(109);
-	    var ChartView = __webpack_require__(42);
+	    var polyHelper = __webpack_require__(118);
+	    var ChartView = __webpack_require__(43);
 
 	    function isPointsSame(points1, points2) {
 	        if (points1.length !== points2.length) {
@@ -23965,6 +26248,8 @@
 	                }
 	            }
 	            else {
+	                // FIXME
+	                // can not downplay completely.
 	                // Downplay whole series
 	                ChartView.prototype.downplay.call(
 	                    this, seriesModel, ecModel, api, payload
@@ -24137,7 +26422,7 @@
 
 
 /***/ },
-/* 105 */
+/* 115 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -24145,8 +26430,8 @@
 	 */
 
 
-	    var graphic = __webpack_require__(43);
-	    var Symbol = __webpack_require__(106);
+	    var graphic = __webpack_require__(44);
+	    var Symbol = __webpack_require__(116);
 
 	    /**
 	     * @constructor
@@ -24269,7 +26554,7 @@
 
 
 /***/ },
-/* 106 */
+/* 116 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -24278,8 +26563,8 @@
 
 
 	    var zrUtil = __webpack_require__(4);
-	    var symbolUtil = __webpack_require__(107);
-	    var graphic = __webpack_require__(43);
+	    var symbolUtil = __webpack_require__(104);
+	    var graphic = __webpack_require__(44);
 	    var numberUtil = __webpack_require__(7);
 
 	    function getSymbolSize(data, idx) {
@@ -24415,6 +26700,7 @@
 	        }
 	        else {
 	            var symbolPath = this.childAt(0);
+	            symbolPath.silent = false;
 	            graphic.updateProps(symbolPath, {
 	                scale: getScale(symbolSize)
 	            }, seriesModel, idx);
@@ -24559,7 +26845,7 @@
 	    symbolProto.fadeOut = function (cb) {
 	        var symbolPath = this.childAt(0);
 	        // Avoid mistaken hover when fading out
-	        this.silent = true;
+	        this.silent = symbolPath.silent = true;
 	        // Not show text when animating
 	        symbolPath.style.text = '';
 	        graphic.updateProps(symbolPath, {
@@ -24573,367 +26859,7 @@
 
 
 /***/ },
-/* 107 */
-/***/ function(module, exports, __webpack_require__) {
-
-	'use strict';
-	// Symbol factory
-
-
-	    var graphic = __webpack_require__(43);
-	    var BoundingRect = __webpack_require__(9);
-
-	    /**
-	     * Triangle shape
-	     * @inner
-	     */
-	    var Triangle = graphic.extendShape({
-	        type: 'triangle',
-	        shape: {
-	            cx: 0,
-	            cy: 0,
-	            width: 0,
-	            height: 0
-	        },
-	        buildPath: function (path, shape) {
-	            var cx = shape.cx;
-	            var cy = shape.cy;
-	            var width = shape.width / 2;
-	            var height = shape.height / 2;
-	            path.moveTo(cx, cy - height);
-	            path.lineTo(cx + width, cy + height);
-	            path.lineTo(cx - width, cy + height);
-	            path.closePath();
-	        }
-	    });
-	    /**
-	     * Diamond shape
-	     * @inner
-	     */
-	    var Diamond = graphic.extendShape({
-	        type: 'diamond',
-	        shape: {
-	            cx: 0,
-	            cy: 0,
-	            width: 0,
-	            height: 0
-	        },
-	        buildPath: function (path, shape) {
-	            var cx = shape.cx;
-	            var cy = shape.cy;
-	            var width = shape.width / 2;
-	            var height = shape.height / 2;
-	            path.moveTo(cx, cy - height);
-	            path.lineTo(cx + width, cy);
-	            path.lineTo(cx, cy + height);
-	            path.lineTo(cx - width, cy);
-	            path.closePath();
-	        }
-	    });
-
-	    /**
-	     * Pin shape
-	     * @inner
-	     */
-	    var Pin = graphic.extendShape({
-	        type: 'pin',
-	        shape: {
-	            // x, y on the cusp
-	            x: 0,
-	            y: 0,
-	            width: 0,
-	            height: 0
-	        },
-
-	        buildPath: function (path, shape) {
-	            var x = shape.x;
-	            var y = shape.y;
-	            var w = shape.width / 5 * 3;
-	            // Height must be larger than width
-	            var h = Math.max(w, shape.height);
-	            var r = w / 2;
-
-	            // Dist on y with tangent point and circle center
-	            var dy = r * r / (h - r);
-	            var cy = y - h + r + dy;
-	            var angle = Math.asin(dy / r);
-	            // Dist on x with tangent point and circle center
-	            var dx = Math.cos(angle) * r;
-
-	            var tanX = Math.sin(angle);
-	            var tanY = Math.cos(angle);
-
-	            path.arc(
-	                x, cy, r,
-	                Math.PI - angle,
-	                Math.PI * 2 + angle
-	            );
-
-	            var cpLen = r * 0.6;
-	            var cpLen2 = r * 0.7;
-	            path.bezierCurveTo(
-	                x + dx - tanX * cpLen, cy + dy + tanY * cpLen,
-	                x, y - cpLen2,
-	                x, y
-	            );
-	            path.bezierCurveTo(
-	                x, y - cpLen2,
-	                x - dx + tanX * cpLen, cy + dy + tanY * cpLen,
-	                x - dx, cy + dy
-	            );
-	            path.closePath();
-	        }
-	    });
-
-	    /**
-	     * Arrow shape
-	     * @inner
-	     */
-	    var Arrow = graphic.extendShape({
-
-	        type: 'arrow',
-
-	        shape: {
-	            x: 0,
-	            y: 0,
-	            width: 0,
-	            height: 0
-	        },
-
-	        buildPath: function (ctx, shape) {
-	            var height = shape.height;
-	            var width = shape.width;
-	            var x = shape.x;
-	            var y = shape.y;
-	            var dx = width / 3 * 2;
-	            ctx.moveTo(x, y);
-	            ctx.lineTo(x + dx, y + height);
-	            ctx.lineTo(x, y + height / 4 * 3);
-	            ctx.lineTo(x - dx, y + height);
-	            ctx.lineTo(x, y);
-	            ctx.closePath();
-	        }
-	    });
-
-	    /**
-	     * Map of path contructors
-	     * @type {Object.<string, module:zrender/graphic/Path>}
-	     */
-	    var symbolCtors = {
-	        line: graphic.Line,
-
-	        rect: graphic.Rect,
-
-	        roundRect: graphic.Rect,
-
-	        square: graphic.Rect,
-
-	        circle: graphic.Circle,
-
-	        diamond: Diamond,
-
-	        pin: Pin,
-
-	        arrow: Arrow,
-
-	        triangle: Triangle
-	    };
-
-	    var symbolShapeMakers = {
-
-	        line: function (x, y, w, h, shape) {
-	            // FIXME
-	            shape.x1 = x;
-	            shape.y1 = y + h / 2;
-	            shape.x2 = x + w;
-	            shape.y2 = y + h / 2;
-	        },
-
-	        rect: function (x, y, w, h, shape) {
-	            shape.x = x;
-	            shape.y = y;
-	            shape.width = w;
-	            shape.height = h;
-	        },
-
-	        roundRect: function (x, y, w, h, shape) {
-	            shape.x = x;
-	            shape.y = y;
-	            shape.width = w;
-	            shape.height = h;
-	            shape.r = Math.min(w, h) / 4;
-	        },
-
-	        square: function (x, y, w, h, shape) {
-	            var size = Math.min(w, h);
-	            shape.x = x;
-	            shape.y = y;
-	            shape.width = size;
-	            shape.height = size;
-	        },
-
-	        circle: function (x, y, w, h, shape) {
-	            // Put circle in the center of square
-	            shape.cx = x + w / 2;
-	            shape.cy = y + h / 2;
-	            shape.r = Math.min(w, h) / 2;
-	        },
-
-	        diamond: function (x, y, w, h, shape) {
-	            shape.cx = x + w / 2;
-	            shape.cy = y + h / 2;
-	            shape.width = w;
-	            shape.height = h;
-	        },
-
-	        pin: function (x, y, w, h, shape) {
-	            shape.x = x + w / 2;
-	            shape.y = y + h / 2;
-	            shape.width = w;
-	            shape.height = h;
-	        },
-
-	        arrow: function (x, y, w, h, shape) {
-	            shape.x = x + w / 2;
-	            shape.y = y + h / 2;
-	            shape.width = w;
-	            shape.height = h;
-	        },
-
-	        triangle: function (x, y, w, h, shape) {
-	            shape.cx = x + w / 2;
-	            shape.cy = y + h / 2;
-	            shape.width = w;
-	            shape.height = h;
-	        }
-	    };
-
-	    var symbolBuildProxies = {};
-	    for (var name in symbolCtors) {
-	        if (symbolCtors.hasOwnProperty(name)) {
-	            symbolBuildProxies[name] = new symbolCtors[name]();
-	        }
-	    }
-
-	    var Symbol = graphic.extendShape({
-
-	        type: 'symbol',
-
-	        shape: {
-	            symbolType: '',
-	            x: 0,
-	            y: 0,
-	            width: 0,
-	            height: 0
-	        },
-
-	        beforeBrush: function () {
-	            var style = this.style;
-	            var shape = this.shape;
-	            // FIXME
-	            if (shape.symbolType === 'pin' && style.textPosition === 'inside') {
-	                style.textPosition = ['50%', '40%'];
-	                style.textAlign = 'center';
-	                style.textVerticalAlign = 'middle';
-	            }
-	        },
-
-	        buildPath: function (ctx, shape, inBundle) {
-	            var symbolType = shape.symbolType;
-	            var proxySymbol = symbolBuildProxies[symbolType];
-	            if (shape.symbolType !== 'none') {
-	                if (!proxySymbol) {
-	                    // Default rect
-	                    symbolType = 'rect';
-	                    proxySymbol = symbolBuildProxies[symbolType];
-	                }
-	                symbolShapeMakers[symbolType](
-	                    shape.x, shape.y, shape.width, shape.height, proxySymbol.shape
-	                );
-	                proxySymbol.buildPath(ctx, proxySymbol.shape, inBundle);
-	            }
-	        }
-	    });
-
-	    // Provide setColor helper method to avoid determine if set the fill or stroke outside
-	    var symbolPathSetColor = function (color) {
-	        if (this.type !== 'image') {
-	            var symbolStyle = this.style;
-	            var symbolShape = this.shape;
-	            if (symbolShape && symbolShape.symbolType === 'line') {
-	                symbolStyle.stroke = color;
-	            }
-	            else if (this.__isEmptyBrush) {
-	                symbolStyle.stroke = color;
-	                symbolStyle.fill = '#fff';
-	            }
-	            else {
-	                // FIXME 判断图形默认是填充还是描边,使用 onlyStroke ?
-	                symbolStyle.fill && (symbolStyle.fill = color);
-	                symbolStyle.stroke && (symbolStyle.stroke = color);
-	            }
-	            this.dirty(false);
-	        }
-	    };
-
-	    var symbolUtil = {
-	        /**
-	         * Create a symbol element with given symbol configuration: shape, x, y, width, height, color
-	         * @param {string} symbolType
-	         * @param {number} x
-	         * @param {number} y
-	         * @param {number} w
-	         * @param {number} h
-	         * @param {string} color
-	         */
-	        createSymbol: function (symbolType, x, y, w, h, color) {
-	            var isEmpty = symbolType.indexOf('empty') === 0;
-	            if (isEmpty) {
-	                symbolType = symbolType.substr(5, 1).toLowerCase() + symbolType.substr(6);
-	            }
-	            var symbolPath;
-
-	            if (symbolType.indexOf('image://') === 0) {
-	                symbolPath = new graphic.Image({
-	                    style: {
-	                        image: symbolType.slice(8),
-	                        x: x,
-	                        y: y,
-	                        width: w,
-	                        height: h
-	                    }
-	                });
-	            }
-	            else if (symbolType.indexOf('path://') === 0) {
-	                symbolPath = graphic.makePath(symbolType.slice(7), {}, new BoundingRect(x, y, w, h));
-	            }
-	            else {
-	                symbolPath = new Symbol({
-	                    shape: {
-	                        symbolType: symbolType,
-	                        x: x,
-	                        y: y,
-	                        width: w,
-	                        height: h
-	                    }
-	                });
-	            }
-
-	            symbolPath.__isEmptyBrush = isEmpty;
-
-	            symbolPath.setColor = symbolPathSetColor;
-
-	            symbolPath.setColor(color);
-
-	            return symbolPath;
-	        }
-	    };
-
-	    module.exports = symbolUtil;
-
-
-/***/ },
-/* 108 */
+/* 117 */
 /***/ function(module, exports) {
 
 	
@@ -25147,13 +27073,13 @@
 
 
 /***/ },
-/* 109 */
+/* 118 */
 /***/ function(module, exports, __webpack_require__) {
 
 	// Poly path support NaN point
 
 
-	    var Path = __webpack_require__(45);
+	    var Path = __webpack_require__(46);
 	    var vec2 = __webpack_require__(10);
 
 	    var vec2Min = vec2.min;
@@ -25402,7 +27328,7 @@
 
 
 /***/ },
-/* 110 */
+/* 119 */
 /***/ function(module, exports) {
 
 	
@@ -25451,7 +27377,7 @@
 
 
 /***/ },
-/* 111 */
+/* 120 */
 /***/ function(module, exports) {
 
 	
@@ -25464,13 +27390,13 @@
 	            if (coordSys) {
 	                var dims = coordSys.dimensions;
 
-	                if (coordSys.type === 'singleAxis') {
+	                if (dims.length === 1) {
 	                    data.each(dims[0], function (x, idx) {
 	                        // Also {Array.<number>}, not undefined to avoid if...else... statement
 	                        data.setItemLayout(idx, isNaN(x) ? [NaN, NaN] : coordSys.dataToPoint(x));
 	                    });
 	                }
-	                else {
+	                else if (dims.length === 2) {
 	                    data.each(dims, function (x, y, idx) {
 	                        // Also {Array.<number>}, not undefined to avoid if...else... statement
 	                        data.setItemLayout(
@@ -25483,8 +27409,9 @@
 	    };
 
 
+
 /***/ },
-/* 112 */
+/* 121 */
 /***/ function(module, exports) {
 
 	
@@ -25567,19 +27494,31 @@
 
 
 /***/ },
-/* 113 */
+/* 122 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+
+	    __webpack_require__(123);
+
+	    __webpack_require__(142);
+
+
+
+/***/ },
+/* 123 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
 
 
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 	    var zrUtil = __webpack_require__(4);
 	    var echarts = __webpack_require__(1);
 
-	    __webpack_require__(114);
+	    __webpack_require__(124);
 
-	    __webpack_require__(131);
+	    __webpack_require__(133);
 
 	    // Grid view
 	    echarts.extendComponentView({
@@ -25611,7 +27550,7 @@
 
 
 /***/ },
-/* 114 */
+/* 124 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -25622,11 +27561,11 @@
 	var factory = exports;
 
 	    var layout = __webpack_require__(21);
-	    var axisHelper = __webpack_require__(115);
+	    var axisHelper = __webpack_require__(105);
 
 	    var zrUtil = __webpack_require__(4);
-	    var Cartesian2D = __webpack_require__(121);
-	    var Axis2D = __webpack_require__(123);
+	    var Cartesian2D = __webpack_require__(125);
+	    var Axis2D = __webpack_require__(127);
 
 	    var each = zrUtil.each;
 
@@ -25634,7 +27573,7 @@
 	    var niceScaleExtent = axisHelper.niceScaleExtent;
 
 	    // 依赖 GridModel, AxisModel 做预处理
-	    __webpack_require__(126);
+	    __webpack_require__(129);
 
 	    /**
 	     * Check if the axis is used in the specified grid
@@ -25692,13 +27631,15 @@
 
 	        this._initCartesian(gridModel, ecModel, api);
 
-	        this._model = gridModel;
+	        this.model = gridModel;
 	    }
 
 	    var gridProto = Grid.prototype;
 
 	    gridProto.type = 'grid';
 
+	    gridProto.axisPointerEnabled = true;
+
 	    gridProto.getRect = function () {
 	        return this._rect;
 	    };
@@ -25707,7 +27648,7 @@
 
 	        var axesMap = this._axesMap;
 
-	        this._updateScale(ecModel, this._model);
+	        this._updateScale(ecModel, this.model);
 
 	        function ifAxisCanNotOnZero(otherAxisDim) {
 	            var axes = axesMap[otherAxisDim];
@@ -25723,10 +27664,10 @@
 	        }
 
 	        each(axesMap.x, function (xAxis) {
-	            niceScaleExtent(xAxis, xAxis.model);
+	            niceScaleExtent(xAxis.scale, xAxis.model);
 	        });
 	        each(axesMap.y, function (yAxis) {
-	            niceScaleExtent(yAxis, yAxis.model);
+	            niceScaleExtent(yAxis.scale, yAxis.model);
 	        });
 	        // Fix configuration
 	        each(axesMap.x, function (xAxis) {
@@ -25745,7 +27686,7 @@
 
 	        // Resize again if containLabel is enabled
 	        // FIXME It may cause getting wrong grid size in data processing stage
-	        this.resize(this._model, api);
+	        this.resize(this.model, api);
 	    };
 
 	    /**
@@ -25819,23 +27760,47 @@
 	        }
 	    };
 
+	    /**
+	     * @return {Array.<module:echarts/coord/Axis>}
+	     */
+	    gridProto.getAxes = function () {
+	        return this._axesList.slice();
+	    };
+
+	    /**
+	     * Usage:
+	     *      grid.getCartesian(xAxisIndex, yAxisIndex);
+	     *      grid.getCartesian(xAxisIndex);
+	     *      grid.getCartesian(null, yAxisIndex);
+	     *      grid.getCartesian({xAxisIndex: ..., yAxisIndex: ...});
+	     *
+	     * @param {number|Object} [xAxisIndex]
+	     * @param {number} [yAxisIndex]
+	     */
 	    gridProto.getCartesian = function (xAxisIndex, yAxisIndex) {
 	        if (xAxisIndex != null && yAxisIndex != null) {
 	            var key = 'x' + xAxisIndex + 'y' + yAxisIndex;
 	            return this._coordsMap[key];
 	        }
-	        else {
-	            // When only xAxisIndex or yAxisIndex given, find its first cartesian.
-	            for (var i = 0, coordList = this._coordsList; i < coordList.length; i++) {
-	                if (coordList[i].getAxis('x').index === xAxisIndex
-	                    || coordList[i].getAxis('y').index === yAxisIndex
-	                ) {
-	                    return coordList[i];
-	                }
+
+	        if (zrUtil.isObject(xAxisIndex)) {
+	            yAxisIndex = xAxisIndex.yAxisIndex;
+	            xAxisIndex = xAxisIndex.xAxisIndex;
+	        }
+	        // When only xAxisIndex or yAxisIndex given, find its first cartesian.
+	        for (var i = 0, coordList = this._coordsList; i < coordList.length; i++) {
+	            if (coordList[i].getAxis('x').index === xAxisIndex
+	                || coordList[i].getAxis('y').index === yAxisIndex
+	            ) {
+	                return coordList[i];
 	            }
 	        }
 	    };
 
+	    gridProto.getCartesians = function () {
+	        return this._coordsList.slice();
+	    };
+
 	    /**
 	     * @implements
 	     * see {module:echarts/CoodinateSystem}
@@ -25954,6 +27919,7 @@
 	                var cartesian = new Cartesian2D(key);
 
 	                cartesian.grid = this;
+	                cartesian.model = gridModel;
 
 	                this._coordsMap[key] = cartesian;
 	                this._coordsList.push(cartesian);
@@ -26069,6 +28035,25 @@
 	    };
 
 	    /**
+	     * @param {string} [dim] 'x' or 'y' or 'auto' or null/undefined
+	     * @return {Object} {baseAxes: [], otherAxes: []}
+	     */
+	    gridProto.getTooltipAxes = function (dim) {
+	        var baseAxes = [];
+	        var otherAxes = [];
+
+	        each(this.getCartesians(), function (cartesian) {
+	            var baseAxis = (dim != null && dim !== 'auto')
+	                ? cartesian.getAxis(dim) : cartesian.getBaseAxis();
+	            var otherAxis = cartesian.getOtherAxis(baseAxis);
+	            zrUtil.indexOf(baseAxes, baseAxis) < 0 && baseAxes.push(baseAxis);
+	            zrUtil.indexOf(otherAxes, otherAxis) < 0 && otherAxes.push(otherAxis);
+	        });
+
+	        return {baseAxes: baseAxes, otherAxes: otherAxes};
+	    };
+
+	    /**
 	     * @inner
 	     */
 	    function updateAxisTransfrom(axis, coordBase) {
@@ -26170,7 +28155,7 @@
 	    };
 
 	    // For deciding which dimensions to use when creating list data
-	    Grid.dimensions = Cartesian2D.prototype.dimensions;
+	    Grid.dimensions = Grid.prototype.dimensions = Cartesian2D.prototype.dimensions;
 
 	    __webpack_require__(26).register('cartesian2d', Grid);
 
@@ -26178,1104 +28163,14 @@
 
 
 /***/ },
-/* 115 */
-/***/ function(module, exports, __webpack_require__) {
-
-	
-
-	    var OrdinalScale = __webpack_require__(116);
-	    var IntervalScale = __webpack_require__(118);
-	    __webpack_require__(119);
-	    __webpack_require__(120);
-	    var Scale = __webpack_require__(117);
-
-	    var numberUtil = __webpack_require__(7);
-	    var zrUtil = __webpack_require__(4);
-	    var textContain = __webpack_require__(8);
-	    var axisHelper = {};
-
-	    /**
-	     * Get axis scale extent before niced.
-	     * Item of returned array can only be number (including Infinity and NaN).
-	     */
-	    axisHelper.getScaleExtent = function (axis, model) {
-	        var scale = axis.scale;
-	        var scaleType = scale.type;
-
-	        var min = model.getMin();
-	        var max = model.getMax();
-	        var fixMin = min != null;
-	        var fixMax = max != null;
-	        var originalExtent = scale.getExtent();
-
-	        var axisDataLen;
-	        var boundaryGap;
-	        var span;
-	        if (scaleType === 'ordinal') {
-	            axisDataLen = (model.get('data') || []).length;
-	        }
-	        else {
-	            boundaryGap = model.get('boundaryGap');
-	            if (!zrUtil.isArray(boundaryGap)) {
-	                boundaryGap = [boundaryGap || 0, boundaryGap || 0];
-	            }
-	            boundaryGap[0] = numberUtil.parsePercent(boundaryGap[0], 1);
-	            boundaryGap[1] = numberUtil.parsePercent(boundaryGap[1], 1);
-	            span = originalExtent[1] - originalExtent[0];
-	        }
-
-	        if (min == null) {
-	            min = scaleType === 'ordinal'
-	                ? (axisDataLen ? 0 : NaN)
-	                : originalExtent[0] - boundaryGap[0] * span;
-	        }
-	        if (max == null) {
-	            max = scaleType === 'ordinal'
-	                ? (axisDataLen ? axisDataLen - 1 : NaN)
-	                : originalExtent[1] + boundaryGap[1] * span;
-	        }
-
-	        if (min === 'dataMin') {
-	            min = originalExtent[0];
-	        }
-	        if (max === 'dataMax') {
-	            max = originalExtent[1];
-	        }
-
-	        (min == null || !isFinite(min)) && (min = NaN);
-	        (max == null || !isFinite(max)) && (max = NaN);
-
-	        axis.setBlank(zrUtil.eqNaN(min) || zrUtil.eqNaN(max));
-
-	        // Evaluate if axis needs cross zero
-	        if (model.getNeedCrossZero()) {
-	            // Axis is over zero and min is not set
-	            if (min > 0 && max > 0 && !fixMin) {
-	                min = 0;
-	            }
-	            // Axis is under zero and max is not set
-	            if (min < 0 && max < 0 && !fixMax) {
-	                max = 0;
-	            }
-	        }
-
-	        return [min, max];
-	    };
-
-	    axisHelper.niceScaleExtent = function (axis, model) {
-	        var scale = axis.scale;
-	        var extent = axisHelper.getScaleExtent(axis, model);
-	        var fixMin = model.getMin() != null;
-	        var fixMax = model.getMax() != null;
-	        var splitNumber = model.get('splitNumber');
-
-	        if (scale.type === 'log') {
-	            scale.base = model.get('logBase');
-	        }
-
-	        scale.setExtent(extent[0], extent[1]);
-	        scale.niceExtent(splitNumber, fixMin, fixMax);
-
-	        // Use minInterval to constraint the calculated interval.
-	        // If calculated interval is less than minInterval. increase the interval quantity until
-	        // it is larger than minInterval.
-	        // For example:
-	        //  minInterval is 1, calculated interval is 0.2, so increase it to be 1. In this way we can get
-	        //  an integer axis.
-	        var minInterval = model.get('minInterval');
-	        if (isFinite(minInterval) && !fixMin && !fixMax && scale.type === 'interval') {
-	            var interval = scale.getInterval();
-	            var intervalScale = Math.max(Math.abs(interval), minInterval) / interval;
-	            // while (interval < minInterval) {
-	            //     var quantity = numberUtil.quantity(interval);
-	            //     interval = quantity * 10;
-	            //     scaleQuantity *= 10;
-	            // }
-	            extent = scale.getExtent();
-	            var origin = (extent[1] + extent[0]) / 2;
-	            scale.setExtent(
-	                intervalScale * (extent[0] - origin) + origin,
-	                intervalScale * (extent[1] - origin) + origin
-	            );
-	            scale.niceExtent(splitNumber);
-	        }
-
-	        // If some one specified the min, max. And the default calculated interval
-	        // is not good enough. He can specify the interval. It is often appeared
-	        // in angle axis with angle 0 - 360. Interval calculated in interval scale is hard
-	        // to be 60.
-	        // FIXME
-	        var interval = model.get('interval');
-	        if (interval != null) {
-	            scale.setInterval && scale.setInterval(interval);
-	        }
-	    };
-
-	    /**
-	     * @param {module:echarts/model/Model} model
-	     * @param {string} [axisType] Default retrieve from model.type
-	     * @return {module:echarts/scale/*}
-	     */
-	    axisHelper.createScaleByModel = function(model, axisType) {
-	        axisType = axisType || model.get('type');
-	        if (axisType) {
-	            switch (axisType) {
-	                // Buildin scale
-	                case 'category':
-	                    return new OrdinalScale(
-	                        model.getCategories(), [Infinity, -Infinity]
-	                    );
-	                case 'value':
-	                    return new IntervalScale();
-	                // Extended scale, like time and log
-	                default:
-	                    return (Scale.getClass(axisType) || IntervalScale).create(model);
-	            }
-	        }
-	    };
-
-	    /**
-	     * Check if the axis corss 0
-	     */
-	    axisHelper.ifAxisCrossZero = function (axis) {
-	        var dataExtent = axis.scale.getExtent();
-	        var min = dataExtent[0];
-	        var max = dataExtent[1];
-	        return !((min > 0 && max > 0) || (min < 0 && max < 0));
-	    };
-
-	    /**
-	     * @param {Array.<number>} tickCoords In axis self coordinate.
-	     * @param {Array.<string>} labels
-	     * @param {string} font
-	     * @param {boolean} isAxisHorizontal
-	     * @return {number}
-	     */
-	    axisHelper.getAxisLabelInterval = function (tickCoords, labels, font, isAxisHorizontal) {
-	        // FIXME
-	        // 不同角的axis和label,不只是horizontal和vertical.
-
-	        var textSpaceTakenRect;
-	        var autoLabelInterval = 0;
-	        var accumulatedLabelInterval = 0;
-
-	        var step = 1;
-	        if (labels.length > 40) {
-	            // Simple optimization for large amount of labels
-	            step = Math.floor(labels.length / 40);
-	        }
-
-	        for (var i = 0; i < tickCoords.length; i += step) {
-	            var tickCoord = tickCoords[i];
-	            var rect = textContain.getBoundingRect(
-	                labels[i], font, 'center', 'top'
-	            );
-	            rect[isAxisHorizontal ? 'x' : 'y'] += tickCoord;
-	            // FIXME Magic number 1.5
-	            rect[isAxisHorizontal ? 'width' : 'height'] *= 1.3;
-	            if (!textSpaceTakenRect) {
-	                textSpaceTakenRect = rect.clone();
-	            }
-	            // There is no space for current label;
-	            else if (textSpaceTakenRect.intersect(rect)) {
-	                accumulatedLabelInterval++;
-	                autoLabelInterval = Math.max(autoLabelInterval, accumulatedLabelInterval);
-	            }
-	            else {
-	                textSpaceTakenRect.union(rect);
-	                // Reset
-	                accumulatedLabelInterval = 0;
-	            }
-	        }
-	        if (autoLabelInterval === 0 && step > 1) {
-	            return step;
-	        }
-	        return (autoLabelInterval + 1) * step - 1;
-	    };
-
-	    /**
-	     * @param {Object} axis
-	     * @param {Function} labelFormatter
-	     * @return {Array.<string>}
-	     */
-	    axisHelper.getFormattedLabels = function (axis, labelFormatter) {
-	        var scale = axis.scale;
-	        var labels = scale.getTicksLabels();
-	        var ticks = scale.getTicks();
-	        if (typeof labelFormatter === 'string') {
-	            labelFormatter = (function (tpl) {
-	                return function (val) {
-	                    return tpl.replace('{value}', val != null ? val : '');
-	                };
-	            })(labelFormatter);
-	            // Consider empty array
-	            return zrUtil.map(labels, labelFormatter);
-	        }
-	        else if (typeof labelFormatter === 'function') {
-	            return zrUtil.map(ticks, function (tick, idx) {
-	                return labelFormatter(
-	                    axis.type === 'category' ? scale.getLabel(tick) : tick,
-	                    idx
-	                );
-	            }, this);
-	        }
-	        else {
-	            return labels;
-	        }
-	    };
-
-	    module.exports = axisHelper;
-
-
-/***/ },
-/* 116 */
-/***/ function(module, exports, __webpack_require__) {
-
-	/**
-	 * Linear continuous scale
-	 * @module echarts/coord/scale/Ordinal
-	 *
-	 * http://en.wikipedia.org/wiki/Level_of_measurement
-	 */
-
-	// FIXME only one data
-
-
-	    var zrUtil = __webpack_require__(4);
-	    var Scale = __webpack_require__(117);
-
-	    var scaleProto = Scale.prototype;
-
-	    var OrdinalScale = Scale.extend({
-
-	        type: 'ordinal',
-
-	        init: function (data, extent) {
-	            this._data = data;
-	            this._extent = extent || [0, data.length - 1];
-	        },
-
-	        parse: function (val) {
-	            return typeof val === 'string'
-	                ? zrUtil.indexOf(this._data, val)
-	                // val might be float.
-	                : Math.round(val);
-	        },
-
-	        contain: function (rank) {
-	            rank = this.parse(rank);
-	            return scaleProto.contain.call(this, rank)
-	                && this._data[rank] != null;
-	        },
-
-	        /**
-	         * Normalize given rank or name to linear [0, 1]
-	         * @param {number|string} [val]
-	         * @return {number}
-	         */
-	        normalize: function (val) {
-	            return scaleProto.normalize.call(this, this.parse(val));
-	        },
-
-	        scale: function (val) {
-	            return Math.round(scaleProto.scale.call(this, val));
-	        },
-
-	        /**
-	         * @return {Array}
-	         */
-	        getTicks: function () {
-	            var ticks = [];
-	            var extent = this._extent;
-	            var rank = extent[0];
-
-	            while (rank <= extent[1]) {
-	                ticks.push(rank);
-	                rank++;
-	            }
-
-	            return ticks;
-	        },
-
-	        /**
-	         * Get item on rank n
-	         * @param {number} n
-	         * @return {string}
-	         */
-	        getLabel: function (n) {
-	            return this._data[n];
-	        },
-
-	        /**
-	         * @return {number}
-	         */
-	        count: function () {
-	            return this._extent[1] - this._extent[0] + 1;
-	        },
-
-	        /**
-	         * @override
-	         */
-	        unionExtentFromData: function (data, dim) {
-	            this.unionExtent(data.getDataExtent(dim, false));
-	        },
-
-	        niceTicks: zrUtil.noop,
-	        niceExtent: zrUtil.noop
-	    });
-
-	    /**
-	     * @return {module:echarts/scale/Time}
-	     */
-	    OrdinalScale.create = function () {
-	        return new OrdinalScale();
-	    };
-
-	    module.exports = OrdinalScale;
-
-
-/***/ },
-/* 117 */
-/***/ function(module, exports, __webpack_require__) {
-
-	/**
-	 * // Scale class management
-	 * @module echarts/scale/Scale
-	 */
-
-
-	    var clazzUtil = __webpack_require__(13);
-
-	    function Scale() {
-	        /**
-	         * Extent
-	         * @type {Array.<number>}
-	         * @protected
-	         */
-	        this._extent = [Infinity, -Infinity];
-
-	        /**
-	         * Step is calculated in adjustExtent
-	         * @type {Array.<number>}
-	         * @protected
-	         */
-	        this._interval = 0;
-
-	        this.init && this.init.apply(this, arguments);
-	    }
-
-	    var scaleProto = Scale.prototype;
-
-	    /**
-	     * Parse input val to valid inner number.
-	     * @param {*} val
-	     * @return {number}
-	     */
-	    scaleProto.parse = function (val) {
-	        // Notice: This would be a trap here, If the implementation
-	        // of this method depends on extent, and this method is used
-	        // before extent set (like in dataZoom), it would be wrong.
-	        // Nevertheless, parse does not depend on extent generally.
-	        return val;
-	    };
-
-	    scaleProto.contain = function (val) {
-	        var extent = this._extent;
-	        return val >= extent[0] && val <= extent[1];
-	    };
-
-	    /**
-	     * Normalize value to linear [0, 1], return 0.5 if extent span is 0
-	     * @param {number} val
-	     * @return {number}
-	     */
-	    scaleProto.normalize = function (val) {
-	        var extent = this._extent;
-	        if (extent[1] === extent[0]) {
-	            return 0.5;
-	        }
-	        return (val - extent[0]) / (extent[1] - extent[0]);
-	    };
-
-	    /**
-	     * Scale normalized value
-	     * @param {number} val
-	     * @return {number}
-	     */
-	    scaleProto.scale = function (val) {
-	        var extent = this._extent;
-	        return val * (extent[1] - extent[0]) + extent[0];
-	    };
-
-	    /**
-	     * Set extent from data
-	     * @param {Array.<number>} other
-	     */
-	    scaleProto.unionExtent = function (other) {
-	        var extent = this._extent;
-	        other[0] < extent[0] && (extent[0] = other[0]);
-	        other[1] > extent[1] && (extent[1] = other[1]);
-	        // not setExtent because in log axis it may transformed to power
-	        // this.setExtent(extent[0], extent[1]);
-	    };
-
-	    /**
-	     * Set extent from data
-	     * @param {module:echarts/data/List} data
-	     * @param {string} dim
-	     */
-	    scaleProto.unionExtentFromData = function (data, dim) {
-	        this.unionExtent(data.getDataExtent(dim, true));
-	    };
-
-	    /**
-	     * Get extent
-	     * @return {Array.<number>}
-	     */
-	    scaleProto.getExtent = function () {
-	        return this._extent.slice();
-	    };
-
-	    /**
-	     * Set extent
-	     * @param {number} start
-	     * @param {number} end
-	     */
-	    scaleProto.setExtent = function (start, end) {
-	        var thisExtent = this._extent;
-	        if (!isNaN(start)) {
-	            thisExtent[0] = start;
-	        }
-	        if (!isNaN(end)) {
-	            thisExtent[1] = end;
-	        }
-	    };
-
-	    /**
-	     * @return {Array.<string>}
-	     */
-	    scaleProto.getTicksLabels = function () {
-	        var labels = [];
-	        var ticks = this.getTicks();
-	        for (var i = 0; i < ticks.length; i++) {
-	            labels.push(this.getLabel(ticks[i]));
-	        }
-	        return labels;
-	    };
-
-	    clazzUtil.enableClassExtend(Scale);
-	    clazzUtil.enableClassManagement(Scale, {
-	        registerWhenExtend: true
-	    });
-
-	    module.exports = Scale;
-
-
-/***/ },
-/* 118 */
-/***/ function(module, exports, __webpack_require__) {
-
-	/**
-	 * Interval scale
-	 * @module echarts/scale/Interval
-	 */
-
-
-
-	    var numberUtil = __webpack_require__(7);
-	    var formatUtil = __webpack_require__(6);
-	    var Scale = __webpack_require__(117);
-
-	    var mathFloor = Math.floor;
-	    var mathCeil = Math.ceil;
-
-	    var getPrecisionSafe = numberUtil.getPrecisionSafe;
-	    var roundingErrorFix = numberUtil.round;
-	    /**
-	     * @alias module:echarts/coord/scale/Interval
-	     * @constructor
-	     */
-	    var IntervalScale = Scale.extend({
-
-	        type: 'interval',
-
-	        _interval: 0,
-
-	        setExtent: function (start, end) {
-	            var thisExtent = this._extent;
-	            //start,end may be a Number like '25',so...
-	            if (!isNaN(start)) {
-	                thisExtent[0] = parseFloat(start);
-	            }
-	            if (!isNaN(end)) {
-	                thisExtent[1] = parseFloat(end);
-	            }
-	        },
-
-	        unionExtent: function (other) {
-	            var extent = this._extent;
-	            other[0] < extent[0] && (extent[0] = other[0]);
-	            other[1] > extent[1] && (extent[1] = other[1]);
-
-	            // unionExtent may called by it's sub classes
-	            IntervalScale.prototype.setExtent.call(this, extent[0], extent[1]);
-	        },
-	        /**
-	         * Get interval
-	         */
-	        getInterval: function () {
-	            if (!this._interval) {
-	                this.niceTicks();
-	            }
-	            return this._interval;
-	        },
-
-	        /**
-	         * Set interval
-	         */
-	        setInterval: function (interval) {
-	            this._interval = interval;
-	            // Dropped auto calculated niceExtent and use user setted extent
-	            // We assume user wan't to set both interval, min, max to get a better result
-	            this._niceExtent = this._extent.slice();
-	        },
-
-	        /**
-	         * @return {Array.<number>}
-	         */
-	        getTicks: function () {
-	            if (!this._interval) {
-	                this.niceTicks();
-	            }
-	            var interval = this._interval;
-	            var extent = this._extent;
-	            var ticks = [];
-
-	            // Consider this case: using dataZoom toolbox, zoom and zoom.
-	            var safeLimit = 10000;
-
-	            if (interval) {
-	                var niceExtent = this._niceExtent;
-	                var precision = getPrecisionSafe(interval) + 2;
-
-	                if (extent[0] < niceExtent[0]) {
-	                    ticks.push(extent[0]);
-	                }
-	                var tick = niceExtent[0];
-
-	                while (tick <= niceExtent[1]) {
-	                    ticks.push(tick);
-	                    // Avoid rounding error
-	                    tick = roundingErrorFix(tick + interval, precision);
-	                    if (ticks.length > safeLimit) {
-	                        return [];
-	                    }
-	                }
-	                // Consider this case: the last item of ticks is smaller
-	                // than niceExtent[1] and niceExtent[1] === extent[1].
-	                if (extent[1] > (ticks.length ? ticks[ticks.length - 1] : niceExtent[1])) {
-	                    ticks.push(extent[1]);
-	                }
-	            }
-
-	            return ticks;
-	        },
-
-	        /**
-	         * @return {Array.<string>}
-	         */
-	        getTicksLabels: function () {
-	            var labels = [];
-	            var ticks = this.getTicks();
-	            for (var i = 0; i < ticks.length; i++) {
-	                labels.push(this.getLabel(ticks[i]));
-	            }
-	            return labels;
-	        },
-
-	        /**
-	         * @param {number} n
-	         * @return {number}
-	         */
-	        getLabel: function (data) {
-	            return formatUtil.addCommas(data);
-	        },
-
-	        /**
-	         * Update interval and extent of intervals for nice ticks
-	         *
-	         * @param {number} [splitNumber = 5] Desired number of ticks
-	         */
-	        niceTicks: function (splitNumber) {
-	            splitNumber = splitNumber || 5;
-	            var extent = this._extent;
-	            var span = extent[1] - extent[0];
-	            if (!isFinite(span)) {
-	                return;
-	            }
-	            // User may set axis min 0 and data are all negative
-	            // FIXME If it needs to reverse ?
-	            if (span < 0) {
-	                span = -span;
-	                extent.reverse();
-	            }
-
-	            // From "Nice Numbers for Graph Labels" of Graphic Gems
-	            // var niceSpan = numberUtil.nice(span, false);
-	            var step = roundingErrorFix(
-	                numberUtil.nice(span / splitNumber, true),
-	                Math.max(
-	                    getPrecisionSafe(extent[0]),
-	                    getPrecisionSafe(extent[1])
-	                // extent may be [0, 1], and step should have 1 more digits.
-	                // To make it safe we add 2 more digits
-	                ) + 2
-	            );
-
-	            var precision = getPrecisionSafe(step) + 2;
-	            // Niced extent inside original extent
-	            var niceExtent = [
-	                roundingErrorFix(mathCeil(extent[0] / step) * step, precision),
-	                roundingErrorFix(mathFloor(extent[1] / step) * step, precision)
-	            ];
-
-	            this._interval = step;
-	            this._niceExtent = niceExtent;
-	        },
-
-	        /**
-	         * Nice extent.
-	         * @param {number} [splitNumber = 5] Given approx tick number
-	         * @param {boolean} [fixMin=false]
-	         * @param {boolean} [fixMax=false]
-	         */
-	        niceExtent: function (splitNumber, fixMin, fixMax) {
-	            var extent = this._extent;
-	            // If extent start and end are same, expand them
-	            if (extent[0] === extent[1]) {
-	                if (extent[0] !== 0) {
-	                    // Expand extent
-	                    var expandSize = extent[0];
-	                    // In the fowllowing case
-	                    //      Axis has been fixed max 100
-	                    //      Plus data are all 100 and axis extent are [100, 100].
-	                    // Extend to the both side will cause expanded max is larger than fixed max.
-	                    // So only expand to the smaller side.
-	                    if (!fixMax) {
-	                        extent[1] += expandSize / 2;
-	                        extent[0] -= expandSize / 2;
-	                    }
-	                    else {
-	                        extent[0] -= expandSize / 2;
-	                    }
-	                }
-	                else {
-	                    extent[1] = 1;
-	                }
-	            }
-	            var span = extent[1] - extent[0];
-	            // If there are no data and extent are [Infinity, -Infinity]
-	            if (!isFinite(span)) {
-	                extent[0] = 0;
-	                extent[1] = 1;
-	            }
-
-	            this.niceTicks(splitNumber);
-
-	            // var extent = this._extent;
-	            var interval = this._interval;
-
-	            if (!fixMin) {
-	                extent[0] = roundingErrorFix(mathFloor(extent[0] / interval) * interval);
-	            }
-	            if (!fixMax) {
-	                extent[1] = roundingErrorFix(mathCeil(extent[1] / interval) * interval);
-	            }
-	        }
-	    });
-
-	    /**
-	     * @return {module:echarts/scale/Time}
-	     */
-	    IntervalScale.create = function () {
-	        return new IntervalScale();
-	    };
-
-	    module.exports = IntervalScale;
-
-
-
-/***/ },
-/* 119 */
-/***/ function(module, exports, __webpack_require__) {
-
-	/**
-	 * Interval scale
-	 * @module echarts/coord/scale/Time
-	 */
-
-
-
-	    var zrUtil = __webpack_require__(4);
-	    var numberUtil = __webpack_require__(7);
-	    var formatUtil = __webpack_require__(6);
-
-	    var IntervalScale = __webpack_require__(118);
-
-	    var intervalScaleProto = IntervalScale.prototype;
-
-	    var mathCeil = Math.ceil;
-	    var mathFloor = Math.floor;
-	    var ONE_SECOND = 1000;
-	    var ONE_MINUTE = ONE_SECOND * 60;
-	    var ONE_HOUR = ONE_MINUTE * 60;
-	    var ONE_DAY = ONE_HOUR * 24;
-
-	    // FIXME 公用?
-	    var bisect = function (a, x, lo, hi) {
-	        while (lo < hi) {
-	            var mid = lo + hi >>> 1;
-	            if (a[mid][2] < x) {
-	                lo = mid + 1;
-	            }
-	            else {
-	                hi  = mid;
-	            }
-	        }
-	        return lo;
-	    };
-
-	    /**
-	     * @alias module:echarts/coord/scale/Time
-	     * @constructor
-	     */
-	    var TimeScale = IntervalScale.extend({
-	        type: 'time',
-
-	        // Overwrite
-	        getLabel: function (val) {
-	            var stepLvl = this._stepLvl;
-
-	            var date = new Date(val);
-
-	            return formatUtil.formatTime(stepLvl[0], date);
-	        },
-
-	        // Overwrite
-	        niceExtent: function (approxTickNum, fixMin, fixMax) {
-	            var extent = this._extent;
-	            // If extent start and end are same, expand them
-	            if (extent[0] === extent[1]) {
-	                // Expand extent
-	                extent[0] -= ONE_DAY;
-	                extent[1] += ONE_DAY;
-	            }
-	            // If there are no data and extent are [Infinity, -Infinity]
-	            if (extent[1] === -Infinity && extent[0] === Infinity) {
-	                var d = new Date();
-	                extent[1] = new Date(d.getFullYear(), d.getMonth(), d.getDate());
-	                extent[0] = extent[1] - ONE_DAY;
-	            }
-
-	            this.niceTicks(approxTickNum);
-
-	            // var extent = this._extent;
-	            var interval = this._interval;
-
-	            if (!fixMin) {
-	                extent[0] = numberUtil.round(mathFloor(extent[0] / interval) * interval);
-	            }
-	            if (!fixMax) {
-	                extent[1] = numberUtil.round(mathCeil(extent[1] / interval) * interval);
-	            }
-	        },
-
-	        // Overwrite
-	        niceTicks: function (approxTickNum) {
-	            approxTickNum = approxTickNum || 10;
-
-	            var extent = this._extent;
-	            var span = extent[1] - extent[0];
-	            var approxInterval = span / approxTickNum;
-	            var scaleLevelsLen = scaleLevels.length;
-	            var idx = bisect(scaleLevels, approxInterval, 0, scaleLevelsLen);
-
-	            var level = scaleLevels[Math.min(idx, scaleLevelsLen - 1)];
-	            var interval = level[2];
-	            // Same with interval scale if span is much larger than 1 year
-	            if (level[0] === 'year') {
-	                var yearSpan = span / interval;
-
-	                // From "Nice Numbers for Graph Labels" of Graphic Gems
-	                // var niceYearSpan = numberUtil.nice(yearSpan, false);
-	                var yearStep = numberUtil.nice(yearSpan / approxTickNum, true);
-
-	                interval *= yearStep;
-	            }
-
-	            var niceExtent = [
-	                mathCeil(extent[0] / interval) * interval,
-	                mathFloor(extent[1] / interval) * interval
-	            ];
-
-	            this._stepLvl = level;
-	            // Interval will be used in getTicks
-	            this._interval = interval;
-	            this._niceExtent = niceExtent;
-	        },
-
-	        parse: function (val) {
-	            // val might be float.
-	            return +numberUtil.parseDate(val);
-	        }
-	    });
-
-	    zrUtil.each(['contain', 'normalize'], function (methodName) {
-	        TimeScale.prototype[methodName] = function (val) {
-	            return intervalScaleProto[methodName].call(this, this.parse(val));
-	        };
-	    });
-
-	    // Steps from d3
-	    var scaleLevels = [
-	        // Format       step    interval
-	        ['hh:mm:ss',    1,      ONE_SECOND],           // 1s
-	        ['hh:mm:ss',    5,      ONE_SECOND * 5],       // 5s
-	        ['hh:mm:ss',    10,     ONE_SECOND * 10],      // 10s
-	        ['hh:mm:ss',    15,     ONE_SECOND * 15],      // 15s
-	        ['hh:mm:ss',    30,     ONE_SECOND * 30],      // 30s
-	        ['hh:mm\nMM-dd',1,      ONE_MINUTE],          // 1m
-	        ['hh:mm\nMM-dd',5,      ONE_MINUTE * 5],      // 5m
-	        ['hh:mm\nMM-dd',10,     ONE_MINUTE * 10],     // 10m
-	        ['hh:mm\nMM-dd',15,     ONE_MINUTE * 15],     // 15m
-	        ['hh:mm\nMM-dd',30,     ONE_MINUTE * 30],     // 30m
-	        ['hh:mm\nMM-dd',1,      ONE_HOUR],        // 1h
-	        ['hh:mm\nMM-dd',2,      ONE_HOUR * 2],    // 2h
-	        ['hh:mm\nMM-dd',6,      ONE_HOUR * 6],    // 6h
-	        ['hh:mm\nMM-dd',12,     ONE_HOUR * 12],   // 12h
-	        ['MM-dd\nyyyy', 1,      ONE_DAY],   // 1d
-	        ['week',        7,      ONE_DAY * 7],        // 7d
-	        ['month',       1,      ONE_DAY * 31],       // 1M
-	        ['quarter',     3,      ONE_DAY * 380 / 4],  // 3M
-	        ['half-year',   6,      ONE_DAY * 380 / 2],  // 6M
-	        ['year',        1,      ONE_DAY * 380]       // 1Y
-	    ];
-
-	    /**
-	     * @return {module:echarts/scale/Time}
-	     */
-	    TimeScale.create = function () {
-	        return new TimeScale();
-	    };
-
-	    module.exports = TimeScale;
-
-
-/***/ },
-/* 120 */
-/***/ function(module, exports, __webpack_require__) {
-
-	/**
-	 * Log scale
-	 * @module echarts/scale/Log
-	 */
-
-
-	    var zrUtil = __webpack_require__(4);
-	    var Scale = __webpack_require__(117);
-	    var numberUtil = __webpack_require__(7);
-
-	    // Use some method of IntervalScale
-	    var IntervalScale = __webpack_require__(118);
-
-	    var scaleProto = Scale.prototype;
-	    var intervalScaleProto = IntervalScale.prototype;
-
-	    var getPrecisionSafe = numberUtil.getPrecisionSafe;
-	    var roundingErrorFix = numberUtil.round;
-
-	    var mathFloor = Math.floor;
-	    var mathCeil = Math.ceil;
-	    var mathPow = Math.pow;
-
-	    var mathLog = Math.log;
-
-	    var LogScale = Scale.extend({
-
-	        type: 'log',
-
-	        base: 10,
-
-	        $constructor: function () {
-	            Scale.apply(this, arguments);
-	            this._originalScale = new IntervalScale();
-	        },
-
-	        /**
-	         * @return {Array.<number>}
-	         */
-	        getTicks: function () {
-	            var originalScale = this._originalScale;
-	            var extent = this._extent;
-	            var originalExtent = originalScale.getExtent();
-
-	            return zrUtil.map(intervalScaleProto.getTicks.call(this), function (val) {
-	                var powVal = numberUtil.round(mathPow(this.base, val));
-
-	                // Fix #4158
-	                powVal = (val === extent[0] && originalScale.__fixMin)
-	                    ? fixRoundingError(powVal, originalExtent[0])
-	                    : powVal;
-	                powVal = (val === extent[1] && originalScale.__fixMax)
-	                    ? fixRoundingError(powVal, originalExtent[1])
-	                    : powVal;
-
-	                return powVal;
-	            }, this);
-	        },
-
-	        /**
-	         * @param {number} val
-	         * @return {string}
-	         */
-	        getLabel: intervalScaleProto.getLabel,
-
-	        /**
-	         * @param  {number} val
-	         * @return {number}
-	         */
-	        scale: function (val) {
-	            val = scaleProto.scale.call(this, val);
-	            return mathPow(this.base, val);
-	        },
-
-	        /**
-	         * @param {number} start
-	         * @param {number} end
-	         */
-	        setExtent: function (start, end) {
-	            var base = this.base;
-	            start = mathLog(start) / mathLog(base);
-	            end = mathLog(end) / mathLog(base);
-	            intervalScaleProto.setExtent.call(this, start, end);
-	        },
-
-	        /**
-	         * @return {number} end
-	         */
-	        getExtent: function () {
-	            var base = this.base;
-	            var extent = scaleProto.getExtent.call(this);
-	            extent[0] = mathPow(base, extent[0]);
-	            extent[1] = mathPow(base, extent[1]);
-
-	            // Fix #4158
-	            var originalScale = this._originalScale;
-	            var originalExtent = originalScale.getExtent();
-	            originalScale.__fixMin && (extent[0] = fixRoundingError(extent[0], originalExtent[0]));
-	            originalScale.__fixMax && (extent[1] = fixRoundingError(extent[1], originalExtent[1]));
-
-	            return extent;
-	        },
-
-	        /**
-	         * @param  {Array.<number>} extent
-	         */
-	        unionExtent: function (extent) {
-	            this._originalScale.unionExtent(extent);
-
-	            var base = this.base;
-	            extent[0] = mathLog(extent[0]) / mathLog(base);
-	            extent[1] = mathLog(extent[1]) / mathLog(base);
-	            scaleProto.unionExtent.call(this, extent);
-	        },
-
-	        /**
-	         * @override
-	         */
-	        unionExtentFromData: function (data, dim) {
-	            this.unionExtent(data.getDataExtent(dim, true, function (val) {
-	                return val > 0;
-	            }));
-	        },
-
-	        /**
-	         * Update interval and extent of intervals for nice ticks
-	         * @param  {number} [approxTickNum = 10] Given approx tick number
-	         */
-	        niceTicks: function (approxTickNum) {
-	            approxTickNum = approxTickNum || 10;
-	            var extent = this._extent;
-	            var span = extent[1] - extent[0];
-	            if (span === Infinity || span <= 0) {
-	                return;
-	            }
-
-	            var interval = numberUtil.quantity(span);
-	            var err = approxTickNum / span * interval;
-
-	            // Filter ticks to get closer to the desired count.
-	            if (err <= 0.5) {
-	                interval *= 10;
-	            }
-
-	            // Interval should be integer
-	            while (!isNaN(interval) && Math.abs(interval) < 1 && Math.abs(interval) > 0) {
-	                interval *= 10;
-	            }
-
-	            var niceExtent = [
-	                numberUtil.round(mathCeil(extent[0] / interval) * interval),
-	                numberUtil.round(mathFloor(extent[1] / interval) * interval)
-	            ];
-
-	            this._interval = interval;
-	            this._niceExtent = niceExtent;
-	        },
-
-	        /**
-	         * Nice extent.
-	         * @param {number} [approxTickNum = 10] Given approx tick number
-	         * @param {boolean} [fixMin=false]
-	         * @param {boolean} [fixMax=false]
-	         */
-	        niceExtent: function (splitNumber, fixMin, fixMax) {
-	            intervalScaleProto.niceExtent.call(this, splitNumber, fixMin, fixMax);
-
-	            var originalScale = this._originalScale;
-	            originalScale.__fixMin = fixMin;
-	            originalScale.__fixMax = fixMax;
-	        }
-
-	    });
-
-	    zrUtil.each(['contain', 'normalize'], function (methodName) {
-	        LogScale.prototype[methodName] = function (val) {
-	            val = mathLog(val) / mathLog(this.base);
-	            return scaleProto[methodName].call(this, val);
-	        };
-	    });
-
-	    LogScale.create = function () {
-	        return new LogScale();
-	    };
-
-	    function fixRoundingError(val, originalVal) {
-	        return roundingErrorFix(val, getPrecisionSafe(originalVal));
-	    }
-
-	    module.exports = LogScale;
-
-
-/***/ },
-/* 121 */
+/* 125 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
 
 
 	    var zrUtil = __webpack_require__(4);
-	    var Cartesian = __webpack_require__(122);
+	    var Cartesian = __webpack_require__(126);
 
 	    function Cartesian2D(name) {
 
@@ -27384,7 +28279,7 @@
 
 
 /***/ },
-/* 122 */
+/* 126 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -27502,14 +28397,14 @@
 
 
 /***/ },
-/* 123 */
+/* 127 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    var zrUtil = __webpack_require__(4);
-	    var Axis = __webpack_require__(124);
-	    var axisLabelInterval = __webpack_require__(125);
+	    var Axis = __webpack_require__(100);
+	    var axisLabelInterval = __webpack_require__(128);
 
 	    /**
 	     * Extend axis 2d
@@ -27568,13 +28463,26 @@
 	            return position === 'top' || position === 'bottom';
 	        },
 
-	        getGlobalExtent: function () {
+	        /**
+	         * Each item cooresponds to this.getExtent(), which
+	         * means globalExtent[0] may greater than globalExtent[1],
+	         * unless `asc` is input.
+	         *
+	         * @param {boolean} [asc]
+	         * @return {Array.<number>}
+	         */
+	        getGlobalExtent: function (asc) {
 	            var ret = this.getExtent();
 	            ret[0] = this.toGlobalCoord(ret[0]);
 	            ret[1] = this.toGlobalCoord(ret[1]);
+	            asc && ret[0] > ret[1] && ret.reverse();
 	            return ret;
 	        },
 
+	        getOtherAxis: function () {
+	            this.grid.getOtherAxis();
+	        },
+
 	        /**
 	         * @return {number}
 	         */
@@ -27602,6 +28510,13 @@
 	        },
 
 	        /**
+	         * @override
+	         */
+	        pointToData: function (point, clamp) {
+	            return this.coordToData(this.toLocalCoord(point[this.dim === 'x' ? 0 : 1]), clamp);
+	        },
+
+	        /**
 	         * Transform global coord to local coord,
 	         * i.e. var localCoord = axis.toLocalCoord(80);
 	         * designate by module:echarts/coord/cartesian/Grid.
@@ -27624,249 +28539,7 @@
 
 
 /***/ },
-/* 124 */
-/***/ function(module, exports, __webpack_require__) {
-
-	
-
-	    var numberUtil = __webpack_require__(7);
-	    var linearMap = numberUtil.linearMap;
-	    var zrUtil = __webpack_require__(4);
-
-	    function fixExtentWithBands(extent, nTick) {
-	        var size = extent[1] - extent[0];
-	        var len = nTick;
-	        var margin = size / len / 2;
-	        extent[0] += margin;
-	        extent[1] -= margin;
-	    }
-
-	    var normalizedExtent = [0, 1];
-	    /**
-	     * @name module:echarts/coord/CartesianAxis
-	     * @constructor
-	     */
-	    var Axis = function (dim, scale, extent) {
-
-	        /**
-	         * Axis dimension. Such as 'x', 'y', 'z', 'angle', 'radius'
-	         * @type {string}
-	         */
-	        this.dim = dim;
-
-	        /**
-	         * Axis scale
-	         * @type {module:echarts/coord/scale/*}
-	         */
-	        this.scale = scale;
-
-	        /**
-	         * @type {Array.<number>}
-	         * @private
-	         */
-	        this._extent = extent || [0, 0];
-
-	        /**
-	         * @type {boolean}
-	         */
-	        this.inverse = false;
-
-	        /**
-	         * Usually true when axis has a ordinal scale
-	         * @type {boolean}
-	         */
-	        this.onBand = false;
-	    };
-
-	    Axis.prototype = {
-
-	        constructor: Axis,
-
-	        /**
-	         * If axis extent contain given coord
-	         * @param {number} coord
-	         * @return {boolean}
-	         */
-	        contain: function (coord) {
-	            var extent = this._extent;
-	            var min = Math.min(extent[0], extent[1]);
-	            var max = Math.max(extent[0], extent[1]);
-	            return coord >= min && coord <= max;
-	        },
-
-	        /**
-	         * If axis extent contain given data
-	         * @param {number} data
-	         * @return {boolean}
-	         */
-	        containData: function (data) {
-	            return this.contain(this.dataToCoord(data));
-	        },
-
-	        /**
-	         * Get coord extent.
-	         * @return {Array.<number>}
-	         */
-	        getExtent: function () {
-	            var ret = this._extent.slice();
-	            return ret;
-	        },
-
-	        /**
-	         * Get precision used for formatting
-	         * @param {Array.<number>} [dataExtent]
-	         * @return {number}
-	         */
-	        getPixelPrecision: function (dataExtent) {
-	            return numberUtil.getPixelPrecision(
-	                dataExtent || this.scale.getExtent(),
-	                this._extent
-	            );
-	        },
-
-	        /**
-	         * Set coord extent
-	         * @param {number} start
-	         * @param {number} end
-	         */
-	        setExtent: function (start, end) {
-	            var extent = this._extent;
-	            extent[0] = start;
-	            extent[1] = end;
-	        },
-
-	        /**
-	         * Convert data to coord. Data is the rank if it has a ordinal scale
-	         * @param {number} data
-	         * @param  {boolean} clamp
-	         * @return {number}
-	         */
-	        dataToCoord: function (data, clamp) {
-	            var extent = this._extent;
-	            var scale = this.scale;
-	            data = scale.normalize(data);
-
-	            if (this.onBand && scale.type === 'ordinal') {
-	                extent = extent.slice();
-	                fixExtentWithBands(extent, scale.count());
-	            }
-
-	            return linearMap(data, normalizedExtent, extent, clamp);
-	        },
-
-	        /**
-	         * Convert coord to data. Data is the rank if it has a ordinal scale
-	         * @param {number} coord
-	         * @param  {boolean} clamp
-	         * @return {number}
-	         */
-	        coordToData: function (coord, clamp) {
-	            var extent = this._extent;
-	            var scale = this.scale;
-
-	            if (this.onBand && scale.type === 'ordinal') {
-	                extent = extent.slice();
-	                fixExtentWithBands(extent, scale.count());
-	            }
-
-	            var t = linearMap(coord, extent, normalizedExtent, clamp);
-
-	            return this.scale.scale(t);
-	        },
-	        /**
-	         * @return {Array.<number>}
-	         */
-	        getTicksCoords: function (alignWithLabel) {
-	            if (this.onBand && !alignWithLabel) {
-	                var bands = this.getBands();
-	                var coords = [];
-	                for (var i = 0; i < bands.length; i++) {
-	                    coords.push(bands[i][0]);
-	                }
-	                if (bands[i - 1]) {
-	                    coords.push(bands[i - 1][1]);
-	                }
-	                return coords;
-	            }
-	            else {
-	                return zrUtil.map(this.scale.getTicks(), this.dataToCoord, this);
-	            }
-	        },
-
-	        /**
-	         * Coords of labels are on the ticks or on the middle of bands
-	         * @return {Array.<number>}
-	         */
-	        getLabelsCoords: function () {
-	            return zrUtil.map(this.scale.getTicks(), this.dataToCoord, this);
-	        },
-
-	        /**
-	         * Get bands.
-	         *
-	         * If axis has labels [1, 2, 3, 4]. Bands on the axis are
-	         * |---1---|---2---|---3---|---4---|.
-	         *
-	         * @return {Array}
-	         */
-	         // FIXME Situation when labels is on ticks
-	        getBands: function () {
-	            var extent = this.getExtent();
-	            var bands = [];
-	            var len = this.scale.count();
-	            var start = extent[0];
-	            var end = extent[1];
-	            var span = end - start;
-
-	            for (var i = 0; i < len; i++) {
-	                bands.push([
-	                    span * i / len + start,
-	                    span * (i + 1) / len + start
-	                ]);
-	            }
-	            return bands;
-	        },
-
-	        /**
-	         * Get width of band
-	         * @return {number}
-	         */
-	        getBandWidth: function () {
-	            var axisExtent = this._extent;
-	            var dataExtent = this.scale.getExtent();
-
-	            var len = dataExtent[1] - dataExtent[0] + (this.onBand ? 1 : 0);
-	            // Fix #2728, avoid NaN when only one data.
-	            len === 0 && (len = 1);
-
-	            var size = Math.abs(axisExtent[1] - axisExtent[0]);
-
-	            return Math.abs(size) / len;
-	        },
-
-	        /**
-	         * When axis extent depends on data and no data exists,
-	         * axis ticks should not be drawn, which is named 'blank'.
-	         */
-	        isBlank: function () {
-	            return this._isBlank;
-	        },
-
-	        /**
-	         * When axis extent depends on data and no data exists,
-	         * axis ticks should not be drawn, which is named 'blank'.
-	         */
-	        setBlank: function (isBlank) {
-	            this._isBlank = isBlank;
-	        }
-
-	    };
-
-	    module.exports = Axis;
-
-
-/***/ },
-/* 125 */
+/* 128 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -27877,7 +28550,7 @@
 
 
 	    var zrUtil = __webpack_require__(4);
-	    var axisHelper = __webpack_require__(115);
+	    var axisHelper = __webpack_require__(105);
 
 	    module.exports = function (axis) {
 	        var axisModel = axis.model;
@@ -27897,7 +28570,7 @@
 
 
 /***/ },
-/* 126 */
+/* 129 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -27905,7 +28578,8 @@
 	// 所以这里也要被 Cartesian2D 依赖
 
 
-	    __webpack_require__(127);
+	    __webpack_require__(130);
+
 	    var ComponentModel = __webpack_require__(19);
 
 	    module.exports = ComponentModel.extend({
@@ -27941,7 +28615,7 @@
 
 
 /***/ },
-/* 127 */
+/* 130 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -27949,7 +28623,7 @@
 
 	    var ComponentModel = __webpack_require__(19);
 	    var zrUtil = __webpack_require__(4);
-	    var axisModelCreator = __webpack_require__(128);
+	    var axisModelCreator = __webpack_require__(131);
 
 	    var AxisModel = ComponentModel.extend({
 
@@ -28003,7 +28677,7 @@
 	        return option.type || (option.data ? 'category' : 'value');
 	    }
 
-	    zrUtil.merge(AxisModel.prototype, __webpack_require__(130));
+	    zrUtil.merge(AxisModel.prototype, __webpack_require__(111));
 
 	    var extraOption = {
 	        // gridIndex: 0,
@@ -28020,12 +28694,12 @@
 
 
 /***/ },
-/* 128 */
+/* 131 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var axisDefault = __webpack_require__(129);
+	    var axisDefault = __webpack_require__(132);
 	    var zrUtil = __webpack_require__(4);
 	    var ComponentModel = __webpack_require__(19);
 	    var layout = __webpack_require__(21);
@@ -28083,7 +28757,7 @@
 
 
 /***/ },
-/* 129 */
+/* 132 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -28120,6 +28794,8 @@
 	            show: false
 	        },
 
+	        axisPointer: {},
+
 	        // 坐标轴线
 	        axisLine: {
 	            // 默认显示,属性show控制显示与否
@@ -28192,7 +28868,6 @@
 	        // 坐标轴小标记
 	        axisTick: {
 	            // If tick is align with label when boundaryGap is true
-	            // Default with axisTick
 	            alignWithLabel: false,
 	            interval: 'auto'
 	        },
@@ -28241,130 +28916,30 @@
 
 
 /***/ },
-/* 130 */
-/***/ function(module, exports, __webpack_require__) {
-
-	
-
-	    var zrUtil = __webpack_require__(4);
-	    var axisHelper = __webpack_require__(115);
-
-	    function getName(obj) {
-	        if (zrUtil.isObject(obj) && obj.value != null) {
-	            return obj.value;
-	        }
-	        else {
-	            return obj;
-	        }
-	    }
-
-	    module.exports = {
-
-	        /**
-	         * Format labels
-	         * @return {Array.<string>}
-	         */
-	        getFormattedLabels: function () {
-	            return axisHelper.getFormattedLabels(
-	                this.axis,
-	                this.get('axisLabel.formatter')
-	            );
-	        },
-
-	        /**
-	         * Get categories
-	         */
-	        getCategories: function () {
-	            return this.get('type') === 'category'
-	                && zrUtil.map(this.get('data'), getName);
-	        },
-
-	        /**
-	         * @param {boolean} origin
-	         * @return {number|string} min value or 'dataMin' or null/undefined (means auto) or NaN
-	         */
-	        getMin: function (origin) {
-	            var option = this.option;
-	            var min = (!origin && option.rangeStart != null)
-	                ? option.rangeStart : option.min;
-
-	            if (min != null && min !== 'dataMin' && !zrUtil.eqNaN(min)) {
-	                min = this.axis.scale.parse(min);
-	            }
-	            return min;
-	        },
-
-	        /**
-	         * @param {boolean} origin
-	         * @return {number|string} max value or 'dataMax' or null/undefined (means auto) or NaN
-	         */
-	        getMax: function (origin) {
-	            var option = this.option;
-	            var max = (!origin && option.rangeEnd != null)
-	                ? option.rangeEnd : option.max;
-
-	            if (max != null && max !== 'dataMax' && !zrUtil.eqNaN(max)) {
-	                max = this.axis.scale.parse(max);
-	            }
-	            return max;
-	        },
-
-	        /**
-	         * @return {boolean}
-	         */
-	        getNeedCrossZero: function () {
-	            var option = this.option;
-	            return (option.rangeStart != null || option.rangeEnd != null)
-	                ? false : !option.scale;
-	        },
-
-	        /**
-	         * Should be implemented by each axis model if necessary.
-	         * @return {module:echarts/model/Component} coordinate system model
-	         */
-	        getCoordSysModel: zrUtil.noop,
-
-	        /**
-	         * @param {number} rangeStart Can only be finite number or null/undefined or NaN.
-	         * @param {number} rangeEnd Can only be finite number or null/undefined or NaN.
-	         */
-	        setRange: function (rangeStart, rangeEnd) {
-	            this.option.rangeStart = rangeStart;
-	            this.option.rangeEnd = rangeEnd;
-	        },
-
-	        /**
-	         * Reset range
-	         */
-	        resetRange: function () {
-	            // rangeStart and rangeEnd is readonly.
-	            this.option.rangeStart = this.option.rangeEnd = null;
-	        }
-	    };
-
-
-/***/ },
-/* 131 */
+/* 133 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
 	// TODO boundaryGap
 
 
-	    __webpack_require__(127);
+	    __webpack_require__(130);
 
-	    __webpack_require__(132);
+	    __webpack_require__(134);
 
 
 /***/ },
-/* 132 */
+/* 134 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    var zrUtil = __webpack_require__(4);
-	    var graphic = __webpack_require__(43);
-	    var AxisBuilder = __webpack_require__(133);
+	    var graphic = __webpack_require__(44);
+	    var AxisBuilder = __webpack_require__(135);
+	    var CartesianAxisPointer = __webpack_require__(136);
+	    var AxisView = __webpack_require__(141);
+	    var cartesianAxisHelper = __webpack_require__(140);
 	    var ifIgnoreOnTick = AxisBuilder.ifIgnoreOnTick;
 	    var getInterval = AxisBuilder.getInterval;
 
@@ -28383,11 +28958,16 @@
 	    //     return alignWithLabel;
 	    // }
 
-	    var AxisView = __webpack_require__(1).extendComponentView({
+	    var CartesianAxisView = AxisView.extend({
 
-	        type: 'axis',
+	        type: 'cartesianAxis',
 
-	        render: function (axisModel, ecModel) {
+	        axisPointerClass: CartesianAxisPointer,
+
+	        /**
+	         * @override
+	         */
+	        render: function (axisModel, ecModel, api, payload) {
 
 	            this.group.removeAll();
 
@@ -28402,7 +28982,7 @@
 
 	            var gridModel = axisModel.getCoordSysModel();
 
-	            var layout = layoutAxis(gridModel, axisModel);
+	            var layout = cartesianAxisHelper.layout(gridModel, axisModel);
 
 	            var axisBuilder = new AxisBuilder(axisModel, layout);
 
@@ -28417,6 +28997,8 @@
 	            }, this);
 
 	            graphic.groupTransition(oldAxisGroup, this._axisGroup, axisModel);
+
+	            CartesianAxisView.superCall(this, 'render', axisModel, ecModel, api, payload);
 	        },
 
 	        /**
@@ -28428,7 +29010,7 @@
 	        _splitLine: function (axisModel, gridModel, labelInterval) {
 	            var axis = axisModel.axis;
 
-	            if (axis.isBlank()) {
+	            if (axis.scale.isBlank()) {
 	                return;
 	            }
 
@@ -28502,7 +29084,7 @@
 	        _splitArea: function (axisModel, gridModel, labelInterval) {
 	            var axis = axisModel.axis;
 
-	            if (axis.isBlank()) {
+	            if (axis.scale.isBlank()) {
 	                return;
 	            }
 
@@ -28573,91 +29155,24 @@
 	        }
 	    });
 
-	    AxisView.extend({
+	    CartesianAxisView.extend({
 	        type: 'xAxis'
 	    });
-	    AxisView.extend({
+	    CartesianAxisView.extend({
 	        type: 'yAxis'
 	    });
 
-	    /**
-	     * @inner
-	     */
-	    function layoutAxis(gridModel, axisModel) {
-	        var grid = gridModel.coordinateSystem;
-	        var axis = axisModel.axis;
-	        var layout = {};
-
-	        var rawAxisPosition = axis.position;
-	        var axisPosition = axis.onZero ? 'onZero' : rawAxisPosition;
-	        var axisDim = axis.dim;
-
-	        // [left, right, top, bottom]
-	        var rect = grid.getRect();
-	        var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height];
-
-	        var axisOffset = axisModel.get('offset') || 0;
-
-	        var posMap = {
-	            x: { top: rectBound[2] - axisOffset, bottom: rectBound[3] + axisOffset },
-	            y: { left: rectBound[0] - axisOffset, right: rectBound[1] + axisOffset }
-	        };
-
-	        posMap.x.onZero = Math.max(Math.min(getZero('y'), posMap.x.bottom), posMap.x.top);
-	        posMap.y.onZero = Math.max(Math.min(getZero('x'), posMap.y.right), posMap.y.left);
-
-	        function getZero(dim, val) {
-	            var theAxis = grid.getAxis(dim);
-	            return theAxis.toGlobalCoord(theAxis.dataToCoord(0));
-	        }
-
-	        // Axis position
-	        layout.position = [
-	            axisDim === 'y' ? posMap.y[axisPosition] : rectBound[0],
-	            axisDim === 'x' ? posMap.x[axisPosition] : rectBound[3]
-	        ];
-
-	        // Axis rotation
-	        layout.rotation = Math.PI / 2 * (axisDim === 'x' ? 0 : 1);
-
-	        // Tick and label direction, x y is axisDim
-	        var dirMap = {top: -1, bottom: 1, left: -1, right: 1};
-
-	        layout.labelDirection = layout.tickDirection = layout.nameDirection = dirMap[rawAxisPosition];
-	        if (axis.onZero) {
-	            layout.labelOffset = posMap[axisDim][rawAxisPosition] - posMap[axisDim].onZero;
-	        }
-
-	        if (axisModel.getModel('axisTick').get('inside')) {
-	            layout.tickDirection = -layout.tickDirection;
-	        }
-	        if (axisModel.getModel('axisLabel').get('inside')) {
-	            layout.labelDirection = -layout.labelDirection;
-	        }
-
-	        // Special label rotation
-	        var labelRotation = axisModel.getModel('axisLabel').get('rotate');
-	        layout.labelRotation = axisPosition === 'top' ? -labelRotation : labelRotation;
-
-	        // label interval when auto mode.
-	        layout.labelInterval = axis.getLabelInterval();
-
-	        // Over splitLine and splitArea
-	        layout.z2 = 1;
-
-	        return layout;
-	    }
 
 
 /***/ },
-/* 133 */
+/* 135 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    var zrUtil = __webpack_require__(4);
 	    var formatUtil = __webpack_require__(6);
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 	    var Model = __webpack_require__(12);
 	    var numberUtil = __webpack_require__(7);
 	    var remRadian = numberUtil.remRadian;
@@ -28710,7 +29225,7 @@
 	     * @param {string} [opt.axisLabelShow] default get from axisModel.
 	     * @param {string} [opt.axisName] default get from axisModel.
 	     * @param {number} [opt.axisNameAvailableWidth]
-	     * @param {number} [opt.labelRotation] by degree, default get from axisModel.
+	     * @param {number} [opt.labelRotate] by degree, default get from axisModel.
 	     * @param {number} [opt.labelInterval] Default label interval when label
 	     *                                     interval from model is null or 'auto'.
 	     * @param {number} [opt.strokeContainThreshold] Default label interval when label
@@ -28828,7 +29343,7 @@
 	            var axisModel = this.axisModel;
 	            var axis = axisModel.axis;
 
-	            if (!axisModel.get('axisTick.show') || axis.isBlank()) {
+	            if (!axisModel.get('axisTick.show') || axis.scale.isBlank()) {
 	                return;
 	            }
 
@@ -28898,7 +29413,7 @@
 	            var axis = axisModel.axis;
 	            var show = retrieve(opt.axisLabelShow, axisModel.get('axisLabel.show'));
 
-	            if (!show || axis.isBlank()) {
+	            if (!show || axis.scale.isBlank()) {
 	                return;
 	            }
 
@@ -28909,11 +29424,11 @@
 	            var labels = axisModel.getFormattedLabels();
 
 	            // Special label rotate.
-	            var labelRotation = retrieve(opt.labelRotation, labelModel.get('rotate')) || 0;
-	            // To radian.
-	            labelRotation = labelRotation * PI / 180;
+	            var labelRotation = (
+	                retrieve(opt.labelRotate, labelModel.get('rotate')) || 0
+	            ) * PI / 180;
 
-	            var labelLayout = innerTextLayout(opt, labelRotation, opt.labelDirection);
+	            var labelLayout = innerTextLayout(opt.rotation, labelRotation, opt.labelDirection);
 	            var categoryData = axisModel.get('data');
 
 	            var textEls = [];
@@ -28939,7 +29454,7 @@
 	                    tickCoord,
 	                    opt.labelOffset + opt.labelDirection * labelMargin
 	                ];
-	                var labelBeforeFormat = axis.scale.getLabel(tickVal);
+	                var labelStr = axis.scale.getLabel(tickVal);
 
 	                var textEl = new graphic.Text({
 
@@ -28949,9 +29464,21 @@
 	                    style: {
 	                        text: labels[index],
 	                        textAlign: itemTextStyleModel.get('align', true) || labelLayout.textAlign,
-	                        textVerticalAlign: itemTextStyleModel.get('baseline', true) || labelLayout.verticalAlign,
+	                        textVerticalAlign: itemTextStyleModel.get('baseline', true) || labelLayout.textVerticalAlign,
 	                        textFont: itemTextStyleModel.getFont(),
-	                        fill: typeof textColor === 'function' ? textColor(labelBeforeFormat) : textColor
+	                        fill: typeof textColor === 'function'
+	                            ? textColor(
+	                                // (1) In category axis with data zoom, tick is not the original
+	                                // index of axis.data. So tick should not be exposed to user
+	                                // in category axis.
+	                                // (2) Compatible with previous version, which always returns labelStr.
+	                                // But in interval scale labelStr is like '223,445', which maked
+	                                // user repalce ','. So we modify it to return original val but remain
+	                                // it as 'string' to avoid error in replacing.
+	                                axis.type === 'category' ? labelStr : axis.type === 'value' ? tickVal + '' : tickVal,
+	                                index
+	                            )
+	                            : textColor
 	                    },
 	                    position: pos,
 	                    rotation: labelLayout.rotation,
@@ -28963,7 +29490,7 @@
 	                if (triggerEvent) {
 	                    textEl.eventData = makeAxisEventDataBase(axisModel);
 	                    textEl.eventData.targetType = 'axisLabel';
-	                    textEl.eventData.value = labelBeforeFormat;
+	                    textEl.eventData.value = labelStr;
 	                }
 
 	                // FIXME
@@ -29046,7 +29573,7 @@
 
 	            if (nameLocation === 'middle') {
 	                labelLayout = innerTextLayout(
-	                    opt,
+	                    opt.rotation,
 	                    nameRotation != null ? nameRotation : opt.rotation, // Adapt to axis.
 	                    nameDirection
 	                );
@@ -29101,7 +29628,7 @@
 	                    fill: textStyleModel.getTextColor()
 	                        || axisModel.get('axisLine.lineStyle.color'),
 	                    textAlign: labelLayout.textAlign,
-	                    textVerticalAlign: labelLayout.verticalAlign
+	                    textVerticalAlign: labelLayout.textVerticalAlign
 	                },
 	                position: pos,
 	                rotation: labelLayout.rotation,
@@ -29136,23 +29663,33 @@
 	    };
 
 	    /**
-	     * @inner
+	     * @public
+	     * @static
+	     * @param {Object} opt
+	     * @param {number} axisRotation in radian
+	     * @param {number} textRotation in radian
+	     * @param {number} direction
+	     * @return {Object} {
+	     *  rotation, // according to axis
+	     *  textAlign,
+	     *  textVerticalAlign
+	     * }
 	     */
-	    function innerTextLayout(opt, textRotation, direction) {
-	        var rotationDiff = remRadian(textRotation - opt.rotation);
+	    var innerTextLayout = AxisBuilder.innerTextLayout = function (axisRotation, textRotation, direction) {
+	        var rotationDiff = remRadian(textRotation - axisRotation);
 	        var textAlign;
-	        var verticalAlign;
+	        var textVerticalAlign;
 
 	        if (isRadianAroundZero(rotationDiff)) { // Label is parallel with axis line.
-	            verticalAlign = direction > 0 ? 'top' : 'bottom';
+	            textVerticalAlign = direction > 0 ? 'top' : 'bottom';
 	            textAlign = 'center';
 	        }
 	        else if (isRadianAroundZero(rotationDiff - PI)) { // Label is inverse parallel with axis line.
-	            verticalAlign = direction > 0 ? 'bottom' : 'top';
+	            textVerticalAlign = direction > 0 ? 'bottom' : 'top';
 	            textAlign = 'center';
 	        }
 	        else {
-	            verticalAlign = 'middle';
+	            textVerticalAlign = 'middle';
 
 	            if (rotationDiff > 0 && rotationDiff < PI) {
 	                textAlign = direction > 0 ? 'right' : 'left';
@@ -29165,9 +29702,9 @@
 	        return {
 	            rotation: rotationDiff,
 	            textAlign: textAlign,
-	            verticalAlign: verticalAlign
+	            textVerticalAlign: textVerticalAlign
 	        };
-	    }
+	    };
 
 	    /**
 	     * @inner
@@ -29175,21 +29712,21 @@
 	    function endTextLayout(opt, textPosition, textRotate, extent) {
 	        var rotationDiff = remRadian(textRotate - opt.rotation);
 	        var textAlign;
-	        var verticalAlign;
+	        var textVerticalAlign;
 	        var inverse = extent[0] > extent[1];
 	        var onLeft = (textPosition === 'start' && !inverse)
 	            || (textPosition !== 'start' && inverse);
 
 	        if (isRadianAroundZero(rotationDiff - PI / 2)) {
-	            verticalAlign = onLeft ? 'bottom' : 'top';
+	            textVerticalAlign = onLeft ? 'bottom' : 'top';
 	            textAlign = 'center';
 	        }
 	        else if (isRadianAroundZero(rotationDiff - PI * 1.5)) {
-	            verticalAlign = onLeft ? 'top' : 'bottom';
+	            textVerticalAlign = onLeft ? 'top' : 'bottom';
 	            textAlign = 'center';
 	        }
 	        else {
-	            verticalAlign = 'middle';
+	            textVerticalAlign = 'middle';
 	            if (rotationDiff < PI * 1.5 && rotationDiff > PI / 2) {
 	                textAlign = onLeft ? 'left' : 'right';
 	            }
@@ -29201,7 +29738,7 @@
 	        return {
 	            rotation: rotationDiff,
 	            textAlign: textAlign,
-	            verticalAlign: verticalAlign
+	            textVerticalAlign: textVerticalAlign
 	        };
 	    }
 
@@ -29250,19 +29787,2212 @@
 
 
 /***/ },
-/* 134 */
+/* 136 */
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+
+	    var graphic = __webpack_require__(44);
+	    var BaseAxisPointer = __webpack_require__(137);
+	    var viewHelper = __webpack_require__(139);
+	    var cartesianAxisHelper = __webpack_require__(140);
+
+	    var CartesianAxisPointer = BaseAxisPointer.extend({
+
+	        /**
+	         * @override
+	         */
+	        makeElOption: function (elOption, value, axisModel, axisPointerModel, api) {
+	            var axis = axisModel.axis;
+	            var grid = axis.grid;
+	            var axisPointerType = axisPointerModel.get('type');
+	            var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent();
+	            var pixelValue = axis.toGlobalCoord(axis.dataToCoord(value, true));
+
+	            var elStyle = viewHelper.buildElStyle(axisPointerModel);
+	            var pointerOption = pointerShapeBuilder[axisPointerType](axis, pixelValue, otherExtent, elStyle);
+	            pointerOption.style = elStyle;
+
+	            elOption.graphicKey = pointerOption.type;
+	            elOption.pointer = pointerOption;
+
+	            var layoutInfo = cartesianAxisHelper.layout(grid.model, axisModel);
+	            viewHelper.buildCartesianSingleLabelElOption(
+	                value, elOption, layoutInfo, axisModel, axisPointerModel, api
+	            );
+	        },
+
+	        /**
+	         * @override
+	         */
+	        getHandleTransform: function (value, axisModel, axisPointerModel) {
+	            var layoutInfo = cartesianAxisHelper.layout(axisModel.axis.grid.model, axisModel, {
+	                labelInside: false
+	            });
+	            layoutInfo.labelMargin = axisPointerModel.get('handle.margin');
+	            return {
+	                position: viewHelper.getTransformedPosition(axisModel.axis, value, layoutInfo),
+	                rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0)
+	            };
+	        },
+
+	        /**
+	         * @override
+	         */
+	        updateHandleTransform: function (transform, delta, axisModel, axisPointerModel) {
+	            var axis = axisModel.axis;
+	            var grid = axis.grid;
+	            var axisExtent = axis.getGlobalExtent(true);
+	            var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent();
+	            var dimIndex = axis.dim === 'x' ? 0 : 1;
+
+	            var currPosition = transform.position;
+	            currPosition[dimIndex] += delta[dimIndex];
+	            currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]);
+	            currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]);
+
+	            var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2;
+	            var cursorPoint = [cursorOtherValue, cursorOtherValue];
+	            cursorPoint[dimIndex] = currPosition[dimIndex];
+
+	            // Make tooltip do not overlap axisPointer and in the middle of the grid.
+	            var tooltipOptions = [{verticalAlign: 'middle'}, {align: 'center'}];
+
+	            return {
+	                position: currPosition,
+	                rotation: transform.rotation,
+	                cursorPoint: cursorPoint,
+	                tooltipOption: tooltipOptions[dimIndex]
+	            };
+	        }
+
+	    });
+
+	    function getCartesian(grid, axis) {
+	        var opt = {};
+	        opt[axis.dim + 'AxisIndex'] = axis.index;
+	        return grid.getCartesian(opt);
+	    }
+
+	    var pointerShapeBuilder = {
+
+	        line: function (axis, pixelValue, otherExtent, elStyle) {
+	            var targetShape = viewHelper.makeLineShape(
+	                [pixelValue, otherExtent[0]],
+	                [pixelValue, otherExtent[1]],
+	                getAxisDimIndex(axis)
+	            );
+	            graphic.subPixelOptimizeLine({
+	                shape: targetShape,
+	                style: elStyle
+	            });
+	            return {
+	                type: 'Line',
+	                shape: targetShape
+	            };
+	        },
+
+	        shadow: function (axis, pixelValue, otherExtent, elStyle) {
+	            var bandWidth = axis.getBandWidth();
+	            var span = otherExtent[1] - otherExtent[0];
+	            return {
+	                type: 'Rect',
+	                shape: viewHelper.makeRectShape(
+	                    [pixelValue - bandWidth / 2, otherExtent[0]],
+	                    [bandWidth, span],
+	                    getAxisDimIndex(axis)
+	                )
+	            };
+	        }
+	    };
+
+	    function getAxisDimIndex(axis) {
+	        return axis.dim === 'x' ? 0 : 1;
+	    }
+
+	    module.exports = CartesianAxisPointer;
+
+
+/***/ },
+/* 137 */
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+
+	    var zrUtil = __webpack_require__(4);
+	    var clazzUtil = __webpack_require__(13);
+	    var graphic = __webpack_require__(44);
+	    var get = __webpack_require__(5).makeGetter();
+	    var axisPointerModelHelper = __webpack_require__(138);
+	    var eventTool = __webpack_require__(88);
+	    var throttle = __webpack_require__(81);
+
+	    var clone = zrUtil.clone;
+	    var bind = zrUtil.bind;
+
+	    /**
+	     * Base axis pointer class in 2D.
+	     * Implemenents {module:echarts/component/axis/IAxisPointer}.
+	     */
+	    function BaseAxisPointer () {
+	    }
+
+	    BaseAxisPointer.prototype = {
+
+	        /**
+	         * @private
+	         */
+	        _group: null,
+
+	        /**
+	         * @private
+	         */
+	        _lastGraphicKey: null,
+
+	        /**
+	         * @private
+	         */
+	        _handle: null,
+
+	        /**
+	         * @private
+	         */
+	        _dragging: false,
+
+	        /**
+	         * @private
+	         */
+	        _lastValue: null,
+
+	        /**
+	         * @private
+	         */
+	        _lastStatus: null,
+
+	        /**
+	         * @private
+	         */
+	        _payloadInfo: null,
+
+	        /**
+	         * In px, arbitrary value. Do not set too small,
+	         * no animation is ok for most cases.
+	         * @protected
+	         */
+	        animationThreshold: 15,
+
+	        /**
+	         * @implement
+	         */
+	        render: function (axisModel, axisPointerModel, api, forceRender) {
+	            var value = axisPointerModel.get('value');
+	            var status = axisPointerModel.get('status');
+
+	            // Bind them to `this`, not in closure, otherwise they will not
+	            // be replaced when user calling setOption in not merge mode.
+	            this._axisModel = axisModel;
+	            this._axisPointerModel = axisPointerModel;
+	            this._api = api;
+
+	            // Optimize: `render` will be called repeatly during mouse move.
+	            // So it is power consuming if performing `render` each time,
+	            // especially on mobile device.
+	            if (!forceRender
+	                && this._lastValue === value
+	                && this._lastStatus === status
+	            ) {
+	                return;
+	            }
+	            this._lastValue = value;
+	            this._lastStatus = status;
+
+	            var group = this._group;
+	            var handle = this._handle;
+
+	            if (!status || status === 'hide') {
+	                // Do not clear here, for animation better.
+	                group && group.hide();
+	                handle && handle.hide();
+	                return;
+	            }
+	            group && group.show();
+	            handle && handle.show();
+
+	            // Otherwise status is 'show'
+	            var elOption = {};
+	            this.makeElOption(elOption, value, axisModel, axisPointerModel, api);
+
+	            // Enable change axis pointer type.
+	            var graphicKey = elOption.graphicKey;
+	            if (graphicKey !== this._lastGraphicKey) {
+	                this.clear(api);
+	            }
+	            this._lastGraphicKey = graphicKey;
+
+	            var moveAnimation = this._moveAnimation =
+	                this.determineAnimation(axisModel, axisPointerModel);
+
+	            if (!group) {
+	                group = this._group = new graphic.Group();
+	                this.createPointerEl(group, elOption, axisModel, axisPointerModel);
+	                this.createLabelEl(group, elOption, axisModel, axisPointerModel);
+	                api.getZr().add(group);
+	            }
+	            else {
+	                var doUpdateProps = zrUtil.curry(updateProps, axisPointerModel, moveAnimation);
+	                this.updatePointerEl(group, elOption, doUpdateProps, axisPointerModel);
+	                this.updateLabelEl(group, elOption, doUpdateProps, axisPointerModel);
+	            }
+
+	            updateMandatoryProps(group, axisPointerModel, true);
+
+	            this._renderHandle(value);
+	        },
+
+	        /**
+	         * @implement
+	         */
+	        remove: function (api) {
+	            this.clear(api);
+	        },
+
+	        /**
+	         * @implement
+	         */
+	        dispose: function (api) {
+	            this.clear(api);
+	        },
+
+	        /**
+	         * @protected
+	         */
+	        determineAnimation: function (axisModel, axisPointerModel) {
+	            var animation = axisPointerModel.get('animation');
+	            var axis = axisModel.axis;
+	            var isCategoryAxis = axis.type === 'category';
+	            var useSnap = axisPointerModel.get('snap');
+
+	            // Value axis without snap always do not snap.
+	            if (!useSnap && !isCategoryAxis) {
+	                return false;
+	            }
+
+	            if (animation === 'auto' || animation == null) {
+	                var animationThreshold = this.animationThreshold;
+	                if (isCategoryAxis && axis.getBandWidth() > animationThreshold) {
+	                    return true;
+	                }
+
+	                // It is important to auto animation when snap used. Consider if there is
+	                // a dataZoom, animation will be disabled when too many points exist, while
+	                // it will be enabled for better visual effect when little points exist.
+	                if (useSnap) {
+	                    var seriesDataCount = axisPointerModelHelper.getAxisInfo(axisModel).seriesDataCount;
+	                    var axisExtent = axis.getExtent();
+	                    // Approximate band width
+	                    return Math.abs(axisExtent[0] - axisExtent[1]) / seriesDataCount > animationThreshold;
+	                }
+
+	                return false;
+	            }
+
+	            return animation === true;
+	        },
+
+	        /**
+	         * add {pointer, label, graphicKey} to elOption
+	         * @protected
+	         */
+	        makeElOption: function (elOption, value, axisModel, axisPointerModel, api) {
+	            // Shoule be implemenented by sub-class.
+	        },
+
+	        /**
+	         * @protected
+	         */
+	        createPointerEl: function (group, elOption, axisModel, axisPointerModel) {
+	            var pointerOption = elOption.pointer;
+	            var pointerEl = get(group).pointerEl = new graphic[pointerOption.type](
+	                clone(elOption.pointer)
+	            );
+	            group.add(pointerEl);
+	        },
+
+	        /**
+	         * @protected
+	         */
+	        createLabelEl: function (group, elOption, axisModel, axisPointerModel) {
+	            var labelEl = get(group).labelEl = new graphic.Rect(
+	                clone(elOption.label)
+	            );
+
+	            group.add(labelEl);
+	            updateLabelShowHide(labelEl, axisPointerModel);
+	        },
+
+	        /**
+	         * @protected
+	         */
+	        updatePointerEl: function (group, elOption, updateProps) {
+	            var pointerEl = get(group).pointerEl;
+	            if (pointerEl) {
+	                pointerEl.setStyle(elOption.pointer.style);
+	                updateProps(pointerEl, {shape: elOption.pointer.shape});
+	            }
+	        },
+
+	        /**
+	         * @protected
+	         */
+	        updateLabelEl: function (group, elOption, updateProps, axisPointerModel) {
+	            var labelEl = get(group).labelEl;
+	            if (labelEl) {
+	                labelEl.setStyle(elOption.label.style);
+	                updateProps(labelEl, {
+	                    // Consider text length change in vertical axis, animation should
+	                    // be used on shape, otherwise the effect will be weird.
+	                    shape: elOption.label.shape,
+	                    position: elOption.label.position
+	                });
+
+	                updateLabelShowHide(labelEl, axisPointerModel);
+	            }
+	        },
+
+	        /**
+	         * @private
+	         */
+	        _renderHandle: function (value) {
+	            if (this._dragging || !this.updateHandleTransform) {
+	                return;
+	            }
+
+	            var axisPointerModel = this._axisPointerModel;
+	            var zr = this._api.getZr();
+	            var handle = this._handle;
+	            var handleModel = axisPointerModel.getModel('handle');
+
+	            var status = axisPointerModel.get('status');
+	            if (!handleModel.get('show') || !status || status === 'hide') {
+	                handle && zr.remove(handle);
+	                this._handle = null;
+	                return;
+	            }
+
+	            var isInit;
+	            if (!this._handle) {
+	                isInit = true;
+	                handle = this._handle = createIcon(handleModel, {
+	                    onmousemove: function (e) {
+	                        // Fot mobile devicem, prevent screen slider on the button.
+	                        eventTool.stop(e.event);
+	                    },
+	                    onmousedown: bind(this._onHandleDragMove, this, 0, 0),
+	                    drift: bind(this._onHandleDragMove, this),
+	                    ondragend: bind(this._onHandleDragEnd, this)
+	                });
+	                zr.add(handle);
+	            }
+
+	            updateMandatoryProps(handle, axisPointerModel, false);
+
+	            // update style
+	            var includeStyles = [
+	                'color', 'borderColor', 'borderWidth', 'opacity',
+	                'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY'
+	            ];
+	            handle.setStyle(handleModel.getItemStyle(null, includeStyles));
+
+	            // update position
+	            var handleSize = handleModel.get('size');
+	            if (!zrUtil.isArray(handleSize)) {
+	                handleSize = [handleSize, handleSize];
+	            }
+	            handle.attr('scale', [handleSize[0] / 2, handleSize[1] / 2]);
+
+	            throttle.createOrUpdate(
+	                this,
+	                '_doDispatchAxisPointer',
+	                handleModel.get('throttle') || 0,
+	                'fixRate'
+	            );
+
+	            this._moveHandleToValue(value, isInit);
+	        },
+
+	        /**
+	         * @private
+	         */
+	        _moveHandleToValue: function (value, isInit) {
+	            updateProps(
+	                this._axisPointerModel,
+	                !isInit && this._moveAnimation,
+	                this._handle,
+	                getHandleTransProps(this.getHandleTransform(
+	                    value, this._axisModel, this._axisPointerModel
+	                ))
+	            );
+	        },
+
+	        /**
+	         * @private
+	         */
+	        _onHandleDragMove: function (dx, dy) {
+	            var handle = this._handle;
+	            if (!handle) {
+	                return;
+	            }
+
+	            this._dragging = true;
+
+	            // Persistent for throttle.
+	            var trans = this.updateHandleTransform(
+	                getHandleTransProps(handle),
+	                [dx, dy],
+	                this._axisModel,
+	                this._axisPointerModel
+	            );
+	            this._payloadInfo = trans;
+
+	            handle.stopAnimation();
+	            handle.attr(getHandleTransProps(trans));
+	            get(handle).lastProp = null;
+
+	            this._doDispatchAxisPointer();
+	        },
+
+	        /**
+	         * Throttled method.
+	         * @private
+	         */
+	        _doDispatchAxisPointer: function () {
+	            var handle = this._handle;
+	            if (!handle) {
+	                return;
+	            }
+
+	            var payloadInfo = this._payloadInfo;
+	            var payload = {
+	                type: 'updateAxisPointer',
+	                x: payloadInfo.cursorPoint[0],
+	                y: payloadInfo.cursorPoint[1],
+	                tooltipOption: payloadInfo.tooltipOption,
+	                highDownKey: 'axisPointerHandle'
+	            };
+	            var axis = this._axisModel.axis;
+	            payload[axis.dim + 'AxisId'] = this._axisModel.id;
+	            this._api.dispatchAction(payload);
+	        },
+
+	        /**
+	         * @private
+	         */
+	        _onHandleDragEnd: function (moveAnimation) {
+	            this._dragging = false;
+	            var handle = this._handle;
+	            if (!handle) {
+	                return;
+	            }
+
+	            var value = this._axisPointerModel.get('value');
+	            // Consider snap or categroy axis, handle may be not consistent with
+	            // axisPointer. So move handle to align the exact value position when
+	            // drag ended.
+	            this._moveHandleToValue(value);
+
+	            // For the effect: tooltip will be shown when finger holding on handle
+	            // button, and will be hidden after finger left handle button.
+	            this._api.dispatchAction({
+	                type: 'hideTip'
+	            });
+	        },
+
+	        /**
+	         * Should be implemenented by sub-class if support `handle`.
+	         * @protected
+	         * @param {number} value
+	         * @param {module:echarts/model/Model} axisModel
+	         * @param {module:echarts/model/Model} axisPointerModel
+	         * @return {Object} {position: [x, y], rotation: 0}
+	         */
+	        getHandleTransform: null,
+
+	        /**
+	         * * Should be implemenented by sub-class if support `handle`.
+	         * @protected
+	         * @param {Object} transform {position, rotation}
+	         * @param {Array.<number>} delta [dx, dy]
+	         * @param {module:echarts/model/Model} axisModel
+	         * @param {module:echarts/model/Model} axisPointerModel
+	         * @return {Object} {position: [x, y], rotation: 0, cursorPoint: [x, y]}
+	         */
+	        updateHandleTransform: null,
+
+	        /**
+	         * @private
+	         */
+	        clear: function (api) {
+	            this._lastValue = null;
+	            this._lastStatus = null;
+
+	            var zr = api.getZr();
+	            var group = this._group;
+	            var handle = this._handle;
+	            if (zr && group) {
+	                this._lastGraphicKey = null;
+	                group && zr.remove(group);
+	                handle && zr.remove(handle);
+	                this._group = null;
+	                this._handle = null;
+	                this._payloadInfo = null;
+	            }
+	        },
+
+	        /**
+	         * @protected
+	         */
+	        doClear: function () {
+	            // Implemented by sub-class if necessary.
+	        },
+
+	        /**
+	         * @protected
+	         * @param {Array.<number>} xy
+	         * @param {Array.<number>} wh
+	         * @param {number} [xDimIndex=0] or 1
+	         */
+	        buildLabel: function (xy, wh, xDimIndex) {
+	            xDimIndex = xDimIndex || 0;
+	            return {
+	                x: xy[xDimIndex],
+	                y: xy[1 - xDimIndex],
+	                width: wh[xDimIndex],
+	                height: wh[1 - xDimIndex]
+	            };
+	        }
+	    };
+
+	    BaseAxisPointer.prototype.constructor = BaseAxisPointer;
+
+
+	    function updateProps(animationModel, moveAnimation, el, props) {
+	        // Animation optimize.
+	        if (!propsEqual(get(el).lastProp, props)) {
+	            get(el).lastProp = props;
+	            moveAnimation
+	                ? graphic.updateProps(el, props, animationModel)
+	                : (el.stopAnimation(), el.attr(props));
+	        }
+	    }
+
+	    function propsEqual(lastProps, newProps) {
+	        if (zrUtil.isObject(lastProps) && zrUtil.isObject(newProps)) {
+	            var equals = true;
+	            zrUtil.each(newProps, function (item, key) {
+	                equals &= propsEqual(lastProps[key], item);
+	            });
+	            return !!equals;
+	        }
+	        else {
+	            return lastProps === newProps;
+	        }
+	    }
+
+	    function updateLabelShowHide(labelEl, axisPointerModel) {
+	        labelEl[axisPointerModel.get('label.show') ? 'show' : 'hide']();
+	    }
+
+	    function getHandleTransProps(trans) {
+	        return {
+	            position: trans.position.slice(),
+	            rotation: trans.rotation || 0
+	        };
+	    }
+
+	    function createIcon(handleModel, handlers) {
+	        var iconStr = handleModel.get('icon');
+	        var style = {
+	            x: -1, y: -1, width: 2, height: 2
+	        };
+	        var opt = zrUtil.extend({
+	            style: {
+	                strokeNoScale: true
+	            },
+	            rectHover: true,
+	            cursor: 'move',
+	            draggable: true
+	        }, handlers);
+
+	        return iconStr.indexOf('image://') === 0
+	            ? (
+	                style.image = iconStr.slice(8),
+	                opt.style = style,
+	                new graphic.Image(opt)
+	            )
+	            : graphic.makePath(
+	                iconStr.replace('path://', ''),
+	                opt,
+	                style,
+	                'center'
+	            );
+	    }
+
+	    function updateMandatoryProps(group, axisPointerModel, silent) {
+	        var z = axisPointerModel.get('z');
+	        var zlevel = axisPointerModel.get('zlevel');
+
+	        group && group.traverse(function (el) {
+	            if (el.type !== 'group') {
+	                z != null && (el.z = z);
+	                zlevel != null && (el.zlevel = zlevel);
+	                el.silent = silent;
+	            }
+	        });
+	    }
+
+	    clazzUtil.enableClassExtend(BaseAxisPointer);
+
+	    module.exports = BaseAxisPointer;
+
+
+/***/ },
+/* 138 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+
+	    var zrUtil = __webpack_require__(4);
+	    var Model = __webpack_require__(12);
+	    var each = zrUtil.each;
+	    var curry = zrUtil.curry;
+
+	    var helper = {};
+
+	    // Build axisPointerModel, mergin tooltip.axisPointer model for each axis.
+	    // allAxesInfo should be updated when setOption performed.
+	    helper.collect = function (ecModel, api) {
+	        var result = {
+	            /**
+	             * key: makeKey(axis.model)
+	             * value: {
+	             *      axis,
+	             *      coordSys,
+	             *      axisPointerModel,
+	             *      triggerTooltip,
+	             *      involveSeries,
+	             *      snap,
+	             *      seriesModels,
+	             *      seriesDataCount
+	             * }
+	             */
+	            axesInfo: {},
+	            seriesInvolved: false,
+	            /**
+	             * key: makeKey(coordSys.model)
+	             * value: Object: key makeKey(axis.model), value: axisInfo
+	             */
+	            coordSysAxesInfo: {},
+	            coordSysMap: {}
+	        };
+
+	        collectAxesInfo(result, ecModel, api);
+
+	        // Check seriesInvolved for performance, in case too many series in some chart.
+	        result.seriesInvolved && collectSeriesInfo(result, ecModel);
+
+	        return result;
+	    };
+
+	    function collectAxesInfo(result, ecModel, api) {
+	        var globalTooltipModel = ecModel.getComponent('tooltip');
+	        var globalAxisPointerModel = ecModel.getComponent('axisPointer');
+	        // links can only be set on global.
+	        var linksOption = globalAxisPointerModel.get('link', true) || [];
+	        var linkGroups = [];
+
+	        // Collect axes info.
+	        each(api.getCoordinateSystems(), function (coordSys) {
+	            // Some coordinate system do not support axes, like geo.
+	            if (!coordSys.axisPointerEnabled) {
+	                return;
+	            }
+
+	            var coordSysKey = makeKey(coordSys.model);
+	            var axesInfoInCoordSys = result.coordSysAxesInfo[coordSysKey] = {};
+	            result.coordSysMap[coordSysKey] = coordSys;
+
+	            // Set tooltip (like 'cross') is a convienent way to show axisPointer
+	            // for user. So we enable seting tooltip on coordSys model.
+	            var coordSysModel = coordSys.model;
+	            var baseTooltipModel = coordSysModel.getModel('tooltip', globalTooltipModel);
+
+	            each(coordSys.getAxes(), curry(saveTooltipAxisInfo, false, null));
+
+	            // If axis tooltip used, choose tooltip axis for each coordSys.
+	            // Notice this case: coordSys is `grid` but not `cartesian2D` here.
+	            if (coordSys.getTooltipAxes
+	                && globalTooltipModel
+	                // If tooltip.showContent is set as false, tooltip will not
+	                // show but axisPointer will show as normal.
+	                && baseTooltipModel.get('show')
+	            ) {
+	                // Compatible with previous logic. But series.tooltip.trigger: 'axis'
+	                // or series.data[n].tooltip.trigger: 'axis' are not support any more.
+	                var triggerAxis = baseTooltipModel.get('trigger') === 'axis';
+	                var cross = baseTooltipModel.get('axisPointer.type') === 'cross';
+	                var tooltipAxes = coordSys.getTooltipAxes(baseTooltipModel.get('axisPointer.axis'));
+	                if (triggerAxis || cross) {
+	                    each(tooltipAxes.baseAxes, curry(
+	                        saveTooltipAxisInfo, cross ? 'cross' : true, triggerAxis
+	                    ));
+	                }
+	                if (cross) {
+	                    each(tooltipAxes.otherAxes, curry(saveTooltipAxisInfo, 'cross', false));
+	                }
+	            }
+
+	            // fromTooltip: true | false | 'cross'
+	            // triggerTooltip: true | false | null
+	            function saveTooltipAxisInfo(fromTooltip, triggerTooltip, axis) {
+	                var axisPointerModel = axis.model.getModel('axisPointer', globalAxisPointerModel);
+
+	                var axisPointerShow = axisPointerModel.get('show');
+	                if (!axisPointerShow || (
+	                    axisPointerShow === 'auto'
+	                    && !fromTooltip
+	                    && !isHandleTrigger(axisPointerModel)
+	                )) {
+	                    return;
+	                }
+
+	                if (triggerTooltip == null) {
+	                    triggerTooltip = axisPointerModel.get('triggerTooltip');
+	                }
+
+	                axisPointerModel = fromTooltip
+	                    ? makeAxisPointerModel(
+	                        axis, baseTooltipModel, globalAxisPointerModel, ecModel,
+	                        fromTooltip, triggerTooltip
+	                    )
+	                    : axisPointerModel;
+
+	                var snap = axisPointerModel.get('snap');
+	                var key = makeKey(axis.model);
+	                var involveSeries = triggerTooltip || snap || axis.type === 'category';
+
+	                // If result.axesInfo[key] exist, override it (tooltip has higher priority).
+	                var axisInfo = result.axesInfo[key] = {
+	                    key: key,
+	                    axis: axis,
+	                    coordSys: coordSys,
+	                    axisPointerModel: axisPointerModel,
+	                    triggerTooltip: triggerTooltip,
+	                    involveSeries: involveSeries,
+	                    snap: snap,
+	                    useHandle: isHandleTrigger(axisPointerModel),
+	                    seriesModels: []
+	                };
+	                axesInfoInCoordSys[key] = axisInfo;
+	                result.seriesInvolved |= involveSeries;
+
+	                var groupIndex = getLinkGroupIndex(linksOption, axis);
+	                if (groupIndex != null) {
+	                    var linkGroup = linkGroups[groupIndex] || (linkGroups[groupIndex] = {axesInfo: {}});
+	                    linkGroup.axesInfo[key] = axisInfo;
+	                    linkGroup.mapper = linksOption[groupIndex].mapper;
+	                    axisInfo.linkGroup = linkGroup;
+	                }
+	            }
+	        });
+	    }
+
+	    function makeAxisPointerModel(
+	        axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip
+	    ) {
+	        var tooltipAxisPointerModel = baseTooltipModel.getModel('axisPointer');
+	        var volatileOption = {};
+
+	        each(
+	            [
+	                'type', 'snap', 'lineStyle', 'shadowStyle', 'label',
+	                'animation', 'animationDurationUpdate', 'animationEasingUpdate', 'z'
+	            ],
+	            function (field) {
+	                volatileOption[field] = zrUtil.clone(tooltipAxisPointerModel.get(field));
+	            }
+	        );
+
+	        // category axis do not auto snap, otherwise some tick that do not
+	        // has value can not be hovered. value/time/log axis default snap if
+	        // triggered from tooltip and trigger tooltip.
+	        volatileOption.snap = axis.type !== 'category' && !!triggerTooltip;
+
+	        // Compatibel with previous behavior, tooltip axis do not show label by default.
+	        // Only these properties can be overrided from tooltip to axisPointer.
+	        if (tooltipAxisPointerModel.get('type') === 'cross') {
+	            volatileOption.type = 'line';
+	        }
+	        var labelOption = volatileOption.label || (volatileOption.label = {});
+	        // Follow the convention, do not show label when triggered by tooltip by default.
+	        labelOption.show == null && (labelOption.show = false);
+
+	        if (fromTooltip === 'cross') {
+	            // When 'cross', both axes show labels.
+	            labelOption.show = true;
+	            // If triggerTooltip, this is a base axis, which should better not use cross style
+	            // (cross style is dashed by default)
+	            if (!triggerTooltip) {
+	                var crossStyle = volatileOption.lineStyle = tooltipAxisPointerModel.get('crossStyle');
+	                crossStyle && zrUtil.defaults(
+	                    labelOption.textStyle || (labelOption.textStyle = {}),
+	                    crossStyle.textStyle
+	                );
+	            }
+	        }
+
+	        return axis.model.getModel(
+	            'axisPointer',
+	            new Model(volatileOption, globalAxisPointerModel, ecModel)
+	        );
+	    }
+
+	    function collectSeriesInfo(result, ecModel) {
+	        // Prepare data for axis trigger
+	        ecModel.eachSeries(function (seriesModel) {
+
+	            // Notice this case: this coordSys is `cartesian2D` but not `grid`.
+	            var coordSys = seriesModel.coordinateSystem;
+	            var seriesTooltipTrigger = seriesModel.get('tooltip.trigger', true);
+	            if (!coordSys
+	                || seriesTooltipTrigger === 'none'
+	                || seriesTooltipTrigger === false
+	                || seriesTooltipTrigger === 'item'
+	                || seriesModel.get('axisPointer.show', true) === false
+	            ) {
+	                return;
+	            }
+
+	            each(result.coordSysAxesInfo[makeKey(coordSys.model)], function (axisInfo) {
+	                var axis = axisInfo.axis;
+	                if (coordSys.getAxis(axis.dim) === axis) {
+	                    axisInfo.seriesModels.push(seriesModel);
+	                    axisInfo.seriesDataCount == null && (axisInfo.seriesDataCount = 0);
+	                    axisInfo.seriesDataCount += seriesModel.getData().count();
+	                }
+	            });
+
+	        }, this);
+	    }
+
+	    /**
+	     * For example:
+	     * {
+	     *     axisPointer: {
+	     *         links: [{
+	     *             xAxisIndex: [2, 4],
+	     *             yAxisIndex: 'all'
+	     *         }, {
+	     *             xAxisId: ['a5', 'a7'],
+	     *             xAxisName: 'xxx'
+	     *         }]
+	     *     }
+	     * }
+	     */
+	    function getLinkGroupIndex(linksOption, axis) {
+	        var axisModel = axis.model;
+	        var dim = axis.dim;
+	        for (var i = 0; i < linksOption.length; i++) {
+	            var linkOption = linksOption[i] || {};
+	            if (checkPropInLink(linkOption[dim + 'AxisId'], axisModel.id)
+	                || checkPropInLink(linkOption[dim + 'AxisIndex'], axisModel.componentIndex)
+	                || checkPropInLink(linkOption[dim + 'AxisName'], axisModel.name)
+	            ) {
+	                return i;
+	            }
+	        }
+	    }
+
+	    function checkPropInLink(linkPropValue, axisPropValue) {
+	        return linkPropValue === 'all'
+	            || (zrUtil.isArray(linkPropValue) && zrUtil.indexOf(linkPropValue, axisPropValue) >= 0)
+	            || linkPropValue === axisPropValue;
+	    }
+
+	    helper.fixValue = function (axisModel) {
+	        var axisInfo = helper.getAxisInfo(axisModel);
+	        if (!axisInfo) {
+	            return;
+	        }
+
+	        var axisPointerModel = axisInfo.axisPointerModel;
+	        var scale = axisInfo.axis.scale;
+	        var option = axisPointerModel.option;
+	        var status = axisPointerModel.get('status');
+	        var value = axisPointerModel.get('value');
+
+	        // Parse init value for category and time axis.
+	        if (value != null) {
+	            value = scale.parse(value);
+	        }
+
+	        var useHandle = isHandleTrigger(axisPointerModel);
+	        // If `handle` used, `axisPointer` will always be displayed, so value
+	        // and status should be initialized.
+	        if (status == null) {
+	            option.status = useHandle ? 'show' : 'hide';
+	        }
+
+	        var extent = scale.getExtent().slice();
+	        extent[0] > extent[1] && extent.reverse();
+
+	        if (// Pick a value on axis when initializing.
+	            value == null
+	            // If both `handle` and `dataZoom` are used, value may be out of axis extent,
+	            // where we should re-pick a value to keep `handle` displaying normally.
+	            || value > extent[1]
+	        ) {
+	            // Make handle displayed on the end of the axis when init, which looks better.
+	            value = extent[1];
+	        }
+	        if (value < extent[0]) {
+	            value = extent[0];
+	        }
+
+	        option.value = value;
+
+	        if (useHandle) {
+	            option.status = axisInfo.axis.scale.isBlank() ? 'hide' : 'show';
+	        }
+	    };
+
+	    helper.getAxisInfo = function (axisModel) {
+	        var coordSysAxesInfo = axisModel.ecModel.getComponent('axisPointer').coordSysAxesInfo;
+	        return coordSysAxesInfo && coordSysAxesInfo.axesInfo[makeKey(axisModel)];
+	    };
+
+	    helper.getAxisPointerModel = function (axisModel) {
+	        var axisInfo = helper.getAxisInfo(axisModel);
+	        return axisInfo && axisInfo.axisPointerModel;
+	    };
+
+	    function isHandleTrigger(axisPointerModel) {
+	        return !!axisPointerModel.get('handle.show');
+	    }
+
+	    /**
+	     * @param {module:echarts/model/Model} model
+	     * @return {string} unique key
+	     */
+	    var makeKey = helper.makeKey = function (model) {
+	        return model.type + '||' + model.id;
+	    };
+
+	    module.exports = helper;
+
+
+
+/***/ },
+/* 139 */
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+
+	    var zrUtil = __webpack_require__(4);
+	    var graphic = __webpack_require__(44);
+	    var textContain = __webpack_require__(8);
+	    var formatUtil = __webpack_require__(6);
+	    var matrix = __webpack_require__(11);
+	    var axisHelper = __webpack_require__(105);
+	    var AxisBuilder = __webpack_require__(135);
+
+	    var helper = {};
+
+	    /**
+	     * @param {module:echarts/model/Model} axisPointerModel
+	     */
+	    helper.buildElStyle = function (axisPointerModel) {
+	        var axisPointerType = axisPointerModel.get('type');
+	        var styleModel = axisPointerModel.getModel(axisPointerType + 'Style');
+	        var style;
+	        if (axisPointerType === 'line') {
+	            style = styleModel.getLineStyle();
+	            style.fill = null;
+	        }
+	        else if (axisPointerType === 'shadow') {
+	            style = styleModel.getAreaStyle();
+	            style.stroke = null;
+	        }
+	        return style;
+	    };
+
+	    /**
+	     * @param {Function} labelPos {align, verticalAlign, position}
+	     */
+	    helper.buildLabelElOption = function (
+	        elOption, axisModel, axisPointerModel, api, labelPos
+	    ) {
+	        var value = axisPointerModel.get('value');
+	        var text = helper.getValueLabel(
+	            value, axisModel.axis, axisModel.ecModel,
+	            axisPointerModel.get('seriesDataIndices'),
+	            {
+	                precision: axisPointerModel.get('label.precision'),
+	                formatter: axisPointerModel.get('label.formatter')
+	            }
+	        );
+	        var labelModel = axisPointerModel.getModel('label');
+	        var textStyleModel = labelModel.getModel('textStyle');
+	        var paddings = formatUtil.normalizeCssArray(labelModel.get('padding') || 0);
+
+	        var font = textStyleModel.getFont();
+	        var textRect = textContain.getBoundingRect(
+	            text, font, labelPos.textAlign, labelPos.textBaseline
+	        );
+
+	        var position = labelPos.position;
+	        var width = textRect.width + paddings[1] + paddings[3];
+	        var height = textRect.height + paddings[0] + paddings[2];
+
+	        // Adjust by align.
+	        var align = labelPos.align;
+	        align === 'right' && (position[0] -= width);
+	        align === 'center' && (position[0] -= width / 2);
+	        var verticalAlign = labelPos.verticalAlign;
+	        verticalAlign === 'bottom' && (position[1] -= height);
+	        verticalAlign === 'middle' && (position[1] -= height / 2);
+
+	        // Not overflow ec container
+	        confineInContainer(position, width, height, api);
+
+	        var bgColor = labelModel.get('backgroundColor');
+	        if (!bgColor || bgColor === 'auto') {
+	            bgColor = axisModel.get('axisLine.lineStyle.color');
+	        }
+
+	        elOption.label = {
+	            shape: {x: 0, y: 0, width: width, height: height, r: labelModel.get('borderRadius')},
+	            position: position.slice(),
+	            style: {
+	                text: text,
+	                textFont: font,
+	                textFill: textStyleModel.getTextColor(),
+	                textPosition: 'inside',
+	                fill: bgColor,
+	                stroke: labelModel.get('borderColor') || 'transparent',
+	                lineWidth: labelModel.get('borderWidth') || 0,
+	                shadowBlur: labelModel.get('shadowBlur'),
+	                shadowColor: labelModel.get('shadowColor'),
+	                shadowOffsetX: labelModel.get('shadowOffsetX'),
+	                shadowOffsetY: labelModel.get('shadowOffsetY')
+	            }
+	        };
+	    };
+
+	    // Do not overflow ec container
+	    function confineInContainer(position, width, height, api) {
+	        var viewWidth = api.getWidth();
+	        var viewHeight = api.getHeight();
+	        position[0] = Math.min(position[0] + width, viewWidth) - width;
+	        position[1] = Math.min(position[1] + height, viewHeight) - height;
+	        position[0] = Math.max(position[0], 0);
+	        position[1] = Math.max(position[1], 0);
+	    }
+
+	    /**
+	     * @param {number} value
+	     * @param {module:echarts/coord/Axis} axis
+	     * @param {module:echarts/model/Global} ecModel
+	     * @param {Object} opt
+	     * @param {Array.<Object>} seriesDataIndices
+	     * @param {number|string} opt.precision 'auto' or a number
+	     * @param {string|Function} opt.formatter label formatter
+	     */
+	    helper.getValueLabel = function (value, axis, ecModel, seriesDataIndices, opt) {
+	        var text = axis.scale.getLabel(
+	            // Use 'pad' to try to fix width, which helps to debounce when when moving label.
+	            value, {precision: opt.precision, pad: true}
+	        );
+	        var formatter = opt.formatter;
+
+	        if (formatter) {
+	            var params = {
+	                value: axisHelper.getAxisRawValue(axis, value),
+	                seriesData: []
+	            };
+	            zrUtil.each(seriesDataIndices, function (idxItem) {
+	                var series = ecModel.getSeriesByIndex(idxItem.seriesIndex);
+	                var dataIndex = idxItem.dataIndexInside;
+	                var dataParams = series && series.getDataParams(dataIndex);
+	                dataParams && params.seriesData.push(dataParams);
+	            });
+
+	            if (zrUtil.isString(formatter)) {
+	                text = formatter.replace('{value}', text);
+	            }
+	            else if (zrUtil.isFunction(formatter)) {
+	                text = formatter(params);
+	            }
+	        }
+
+	        return text;
+	    };
+
+	    /**
+	     * @param {module:echarts/coord/Axis} axis
+	     * @param {number} value
+	     * @param {Object} layoutInfo {
+	     *  rotation, position, labelOffset, labelDirection, labelMargin
+	     * }
+	     */
+	    helper.getTransformedPosition = function (axis, value, layoutInfo) {
+	        var transform = matrix.create();
+	        matrix.rotate(transform, transform, layoutInfo.rotation);
+	        matrix.translate(transform, transform, layoutInfo.position);
+
+	        return graphic.applyTransform([
+	            axis.dataToCoord(value),
+	            (layoutInfo.labelOffset || 0)
+	                + (layoutInfo.labelDirection || 1) * (layoutInfo.labelMargin || 0)
+	        ], transform);
+	    };
+
+	    helper.buildCartesianSingleLabelElOption = function (
+	        value, elOption, layoutInfo, axisModel, axisPointerModel, api
+	    ) {
+	        var textLayout = AxisBuilder.innerTextLayout(
+	            layoutInfo.rotation, 0, layoutInfo.labelDirection
+	        );
+	        layoutInfo.labelMargin = axisPointerModel.get('label.margin');
+	        helper.buildLabelElOption(elOption, axisModel, axisPointerModel, api, {
+	            position: helper.getTransformedPosition(axisModel.axis, value, layoutInfo),
+	            align: textLayout.textAlign,
+	            verticalAlign: textLayout.textVerticalAlign
+	        });
+	    };
+
+	    /**
+	     * @param {Array.<number>} p1
+	     * @param {Array.<number>} p2
+	     * @param {number} [xDimIndex=0] or 1
+	     */
+	    helper.makeLineShape = function (p1, p2, xDimIndex) {
+	        xDimIndex = xDimIndex || 0;
+	        return {
+	            x1: p1[xDimIndex],
+	            y1: p1[1 - xDimIndex],
+	            x2: p2[xDimIndex],
+	            y2: p2[1 - xDimIndex]
+	        };
+	    };
+
+	    /**
+	     * @param {Array.<number>} xy
+	     * @param {Array.<number>} wh
+	     * @param {number} [xDimIndex=0] or 1
+	     */
+	    helper.makeRectShape = function (xy, wh, xDimIndex) {
+	        xDimIndex = xDimIndex || 0;
+	        return {
+	            x: xy[xDimIndex],
+	            y: xy[1 - xDimIndex],
+	            width: wh[xDimIndex],
+	            height: wh[1 - xDimIndex]
+	        };
+	    };
+
+	    helper.makeSectorShape = function (cx, cy, r0, r, startAngle, endAngle) {
+	        return {
+	            cx: cx,
+	            cy: cy,
+	            r0: r0,
+	            r: r,
+	            startAngle: startAngle,
+	            endAngle: endAngle,
+	            clockwise: true
+	        };
+	    };
+
+	    module.exports = helper;
+
+
+/***/ },
+/* 140 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    var zrUtil = __webpack_require__(4);
 
-	    __webpack_require__(114);
+	    var helper = {};
 
-	    __webpack_require__(135);
-	    __webpack_require__(137);
+	    /**
+	     * @param {Object} opt {labelInside}
+	     * @return {Object} {
+	     *  position, rotation, labelDirection, labelOffset,
+	     *  tickDirection, labelRotate, labelInterval, z2
+	     * }
+	     */
+	    helper.layout = function (gridModel, axisModel, opt) {
+	        opt = opt || {};
+	        var grid = gridModel.coordinateSystem;
+	        var axis = axisModel.axis;
+	        var layout = {};
 
-	    var barLayoutGrid = __webpack_require__(140);
+	        var rawAxisPosition = axis.position;
+	        var axisPosition = axis.onZero ? 'onZero' : rawAxisPosition;
+	        var axisDim = axis.dim;
+
+	        // [left, right, top, bottom]
+	        var rect = grid.getRect();
+	        var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height];
+
+	        var axisOffset = axisModel.get('offset') || 0;
+
+	        var posMap = {
+	            x: { top: rectBound[2] - axisOffset, bottom: rectBound[3] + axisOffset },
+	            y: { left: rectBound[0] - axisOffset, right: rectBound[1] + axisOffset }
+	        };
+
+	        posMap.x.onZero = Math.max(Math.min(getZero('y'), posMap.x.bottom), posMap.x.top);
+	        posMap.y.onZero = Math.max(Math.min(getZero('x'), posMap.y.right), posMap.y.left);
+
+	        function getZero(dim, val) {
+	            var theAxis = grid.getAxis(dim);
+	            return theAxis.toGlobalCoord(theAxis.dataToCoord(0));
+	        }
+
+	        // Axis position
+	        layout.position = [
+	            axisDim === 'y' ? posMap.y[axisPosition] : rectBound[0],
+	            axisDim === 'x' ? posMap.x[axisPosition] : rectBound[3]
+	        ];
+
+	        // Axis rotation
+	        layout.rotation = Math.PI / 2 * (axisDim === 'x' ? 0 : 1);
+
+	        // Tick and label direction, x y is axisDim
+	        var dirMap = {top: -1, bottom: 1, left: -1, right: 1};
+
+	        layout.labelDirection = layout.tickDirection = layout.nameDirection = dirMap[rawAxisPosition];
+	        layout.labelOffset = axis.onZero ? posMap[axisDim][rawAxisPosition] - posMap[axisDim].onZero : 0;
+
+	        if (axisModel.get('axisTick.inside')) {
+	            layout.tickDirection = -layout.tickDirection;
+	        }
+	        if (zrUtil.retrieve(opt.labelInside, axisModel.get('axisLabel.inside'))) {
+	            layout.labelDirection = -layout.labelDirection;
+	        }
+
+	        // Special label rotation
+	        var labelRotate = axisModel.get('axisLabel.rotate');
+	        layout.labelRotate = axisPosition === 'top' ? -labelRotate : labelRotate;
+
+	        // label interval when auto mode.
+	        layout.labelInterval = axis.getLabelInterval();
+
+	        // Over splitLine and splitArea
+	        layout.z2 = 1;
+
+	        return layout;
+	    };
+
+	    module.exports = helper;
+
+
+
+/***/ },
+/* 141 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+
+	    var axisPointerModelHelper = __webpack_require__(138);
+
+	    /**
+	     * Base class of AxisView.
+	     */
+	    var AxisView = __webpack_require__(1).extendComponentView({
+
+	        type: 'axis',
+
+	        /**
+	         * @private
+	         */
+	        _axisPointer: null,
+
+	        axisPointerClass: null,
+
+	        /**
+	         * @override
+	         */
+	        render: function (axisModel, ecModel, api, payload) {
+	            // FIXME
+	            // This process should proformed after coordinate systems updated
+	            // (axis scale updated), and should be performed each time update.
+	            // So put it here temporarily, although it is not appropriate to
+	            // put a model-writing procedure in `view`.
+	            axisPointerModelHelper.fixValue(axisModel);
+
+	            AxisView.superApply(this, 'render', arguments);
+	            updateAxisPointer(this, axisModel, ecModel, api, payload, true);
+	        },
+
+	        /**
+	         * Action handler.
+	         * @public
+	         * @param {module:echarts/coord/cartesian/AxisModel} axisModel
+	         * @param {module:echarts/model/Global} ecModel
+	         * @param {module:echarts/ExtensionAPI} api
+	         * @param {Object} payload
+	         */
+	        updateAxisPointer: function (axisModel, ecModel, api, payload, force) {
+	            updateAxisPointer(this, axisModel, ecModel, api, payload, false);
+	        },
+
+	        /**
+	         * @override
+	         */
+	        remove: function (ecModel, api) {
+	            var axisPointer = this._axisPointer;
+	            axisPointer && axisPointer.remove(api);
+	            AxisView.superApply(this, 'remove', arguments);
+	        },
+
+	        /**
+	         * @override
+	         */
+	        dispose: function (ecModel, api) {
+	            disposeAxisPointer(this, api);
+	            AxisView.superApply(this, 'dispose', arguments);
+	        }
+
+	    });
+
+	    function updateAxisPointer(axisView, axisModel, ecModel, api, payload, forceRender) {
+	        if (!axisView.axisPointerClass) {
+	            return;
+	        }
+	        var axisPointerModel = axisPointerModelHelper.getAxisPointerModel(axisModel);
+	        axisPointerModel
+	            ? (axisView._axisPointer || (axisView._axisPointer = new axisView.axisPointerClass()))
+	                .render(axisModel, axisPointerModel, api, forceRender)
+	            : disposeAxisPointer(axisView, api);
+	    }
+
+	    function disposeAxisPointer(axisView, ecModel, api) {
+	        var axisPointer = axisView._axisPointer;
+	        axisPointer && axisPointer.dispose(ecModel, api);
+	        axisView._axisPointer = null;
+	    }
+
+	    module.exports = AxisView;
+
+
+/***/ },
+/* 142 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+
+	    var echarts = __webpack_require__(1);
+	    var axisPointerModelHelper = __webpack_require__(138);
+	    var axisTrigger = __webpack_require__(143);
+	    var zrUtil = __webpack_require__(4);
+
+	    __webpack_require__(145);
+	    __webpack_require__(146);
+
+	    echarts.registerPreprocessor(function (option) {
+	        // Always has a global axisPointerModel for default setting.
+	        if (option) {
+	            (!option.axisPointer || option.axisPointer.length === 0)
+	                && (option.axisPointer = {});
+
+	            var link = option.axisPointer.link;
+	            // Normalize to array to avoid object mergin. But if link
+	            // is not set, remain null/undefined, otherwise it will
+	            // override existent link setting.
+	            if (link && !zrUtil.isArray(link)) {
+	                option.axisPointer.link = [link];
+	            }
+	        }
+	    });
+
+	    // This process should proformed after coordinate systems created
+	    // and series data processed. So put it on statistic processing stage.
+	    echarts.registerProcessor(echarts.PRIORITY.PROCESSOR.STATISTIC, function (ecModel, api) {
+	        // Build axisPointerModel, mergin tooltip.axisPointer model for each axis.
+	        // allAxesInfo should be updated when setOption performed.
+	        ecModel.getComponent('axisPointer').coordSysAxesInfo
+	            = axisPointerModelHelper.collect(ecModel, api);
+	    });
+
+	    // Broadcast to all views.
+	    echarts.registerAction({
+	        type: 'updateAxisPointer',
+	        event: 'updateAxisPointer',
+	        update: ':updateAxisPointer'
+	    }, function (payload, ecModel, api) {
+	        var outputFinder = axisTrigger(
+	            ecModel.getComponent('axisPointer').coordSysAxesInfo,
+	            payload.currTrigger,
+	            payload,
+	            payload.dispatchAction || zrUtil.bind(api.dispatchAction, api),
+	            ecModel,
+	            api,
+	            payload.tooltipOption,
+	            payload.highDownKey
+	        );
+
+	        return outputFinder;
+	    });
+
+
+
+/***/ },
+/* 143 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+
+	    var zrUtil = __webpack_require__(4);
+	    var modelUtil = __webpack_require__(5);
+	    var modelHelper = __webpack_require__(138);
+	    var findPointFromSeries = __webpack_require__(144);
+
+	    var each = zrUtil.each;
+	    var curry = zrUtil.curry;
+	    var get = modelUtil.makeGetter();
+
+	    /**
+	     * Basic logic: check all axis, if they do not demand show/highlight,
+	     * then hide/downplay them.
+	     *
+	     * @param {Object} coordSysAxesInfo
+	     * @param {string} currTrigger 'click' | 'mousemove' | 'leave'
+	     * @param {Object} finder {x, y, xAxisId: ...[], yAxisName: ...[], angleAxisIndex: ...[]}
+	     *              x and y, which are mandatory, specify a point to tigger axisPointer and tooltip.
+	     *              other properties, which are optional, restrict target axes.
+	     * @param {Function} dispatchAction
+	     * @param {module:echarts/ExtensionAPI} api
+	     * @param {Object} tooltipOption
+	     * @param {string} [highDownKey]
+	     * @return {Object} content of event obj for echarts.connect.
+	     */
+	    function axisTrigger(
+	        coordSysAxesInfo, currTrigger, finder, dispatchAction,
+	        ecModel, api, tooltipOption, highDownKey
+	    ) {
+	        var point = [];
+	        if (finder.x != null && finder.y != null) {
+	            point = [finder.x, finder.y];
+	        }
+	        else {
+	            point = findPointFromSeries({
+	                seriesIndex: finder.seriesIndex,
+	                // Do not use dataIndexInside from other ec instance.
+	                // FIXME: auto detect it?
+	                dataIndex: finder.dataIndex
+	            }, ecModel).point;
+	        }
+
+	        var axesInfo = coordSysAxesInfo.axesInfo;
+	        var shouldHide = currTrigger === 'leave' || illegalPoint(point);
+	        var outputFinder = {};
+
+	        var showValueMap = {};
+	        var dataByCoordSys = {list: [], map: {}};
+	        var highlightBatch = [];
+	        var updaters = {
+	            showPointer: curry(showPointer, showValueMap),
+	            showTooltip: curry(showTooltip, dataByCoordSys),
+	            highlight: curry(highlight, highlightBatch)
+	        };
+
+	        // Process for triggered axes.
+	        each(coordSysAxesInfo.coordSysMap, function (coordSys, coordSysKey) {
+	            var coordSysContainsPoint = coordSys.containPoint(point);
+
+	            each(coordSysAxesInfo.coordSysAxesInfo[coordSysKey], function (axisInfo, key) {
+	                var axis = axisInfo.axis;
+	                if (!shouldHide && coordSysContainsPoint && !notTargetAxis(finder, axis)) {
+	                    processOnAxis(axisInfo, axis.pointToData(point), updaters, false, outputFinder);
+	                }
+	            });
+	        });
+
+	        // Process for linked axes.
+	        each(axesInfo, function (tarAxisInfo, tarKey) {
+	            var linkGroup = tarAxisInfo.linkGroup;
+
+	            // If axis has been triggered in the previous stage, it should not be triggered by link.
+	            linkGroup && !showValueMap[tarKey] && each(linkGroup.axesInfo, function (srcAxisInfo, srcKey) {
+	                var srcValItem = showValueMap[srcKey];
+	                // If srcValItem exist, source axis is triggered, so link to target axis.
+	                if (srcAxisInfo !== tarAxisInfo && srcValItem) {
+	                    var val = srcValItem.value;
+	                    linkGroup.mapper && (val = tarAxisInfo.axis.scale.parse(linkGroup.mapper(
+	                        val, makeMapperParam(srcAxisInfo), makeMapperParam(tarAxisInfo)
+	                    )));
+	                    processOnAxis(tarAxisInfo, val, updaters, true, outputFinder);
+	                }
+	            });
+	        });
+
+	        updateModelActually(showValueMap, axesInfo);
+	        dispatchTooltipActually(dataByCoordSys, point, tooltipOption, dispatchAction);
+	        dispatchHighDownActually(highlightBatch, dispatchAction, api, highDownKey);
+
+	        return outputFinder;
+	    }
+
+	    function processOnAxis(axisInfo, newValue, updaters, dontSnap, outputFinder) {
+	        var axis = axisInfo.axis;
+
+	        if (axis.scale.isBlank() || !axis.containData(newValue)) {
+	            return;
+	        }
+
+	        if (!axisInfo.involveSeries) {
+	            updaters.showPointer(axisInfo, newValue);
+	            return;
+	        }
+
+	        // Heavy calculation. So put it after axis.containData checking.
+	        var payloadInfo = buildPayloadsBySeries(newValue, axisInfo);
+	        var payloadBatch = payloadInfo.payloadBatch;
+	        var snapToValue = payloadInfo.snapToValue;
+
+	        // Fill content of event obj for echarts.connect.
+	        // By defualt use the first involved series data as a sample to connect.
+	        if (payloadBatch[0] && outputFinder.seriesIndex == null) {
+	            zrUtil.extend(outputFinder, payloadBatch[0]);
+	        }
+
+	        // If no linkSource input, this process is for collecting link
+	        // target, where snap should not be accepted.
+	        if (!dontSnap && axisInfo.snap) {
+	            if (axis.containData(snapToValue) && snapToValue != null) {
+	                newValue = snapToValue;
+	            }
+	        }
+
+	        updaters.highlight('highlight', payloadBatch);
+	        updaters.showPointer(axisInfo, newValue, payloadBatch);
+	        // Tooltip should always be snapToValue, otherwise there will be
+	        // incorrect "axis value ~ series value" mapping displayed in tooltip.
+	        updaters.showTooltip(axisInfo, payloadInfo, snapToValue);
+	    }
+
+	    function buildPayloadsBySeries(value, axisInfo) {
+	        var axis = axisInfo.axis;
+	        var dim = axis.dim;
+	        var snapToValue = value;
+	        var payloadBatch = [];
+	        var minDist = Number.MAX_VALUE;
+	        var minDiff = -1;
+
+	        each(axisInfo.seriesModels, function (series, idx) {
+	            var dataDim = series.coordDimToDataDim(dim);
+	            var seriesNestestValue;
+	            var dataIndices;
+
+	            if (series.getAxisTooltipData) {
+	                var result = series.getAxisTooltipData(dataDim, value, axis);
+	                dataIndices = result.dataIndices;
+	                seriesNestestValue = result.nestestValue;
+	            }
+	            else {
+	                dataIndices = series.getData().indexOfNearest(
+	                    dataDim[0],
+	                    value,
+	                    // Add a threshold to avoid find the wrong dataIndex
+	                    // when data length is not same.
+	                    false, axis.type === 'category' ? 0.5 : null
+	                );
+	                if (!dataIndices.length) {
+	                    return;
+	                }
+	                seriesNestestValue = series.getData().get(dataDim[0], dataIndices[0]);
+	            }
+
+	            if (seriesNestestValue == null || !isFinite(seriesNestestValue)) {
+	                return;
+	            }
+
+	            var diff = value - seriesNestestValue;
+	            var dist = Math.abs(diff);
+	            // Consider category case
+	            if (dist <= minDist) {
+	                if (dist < minDist || (diff >= 0 && minDiff < 0)) {
+	                    minDist = dist;
+	                    minDiff = diff;
+	                    snapToValue = seriesNestestValue;
+	                    payloadBatch.length = 0;
+	                }
+	                each(dataIndices, function (dataIndex) {
+	                    payloadBatch.push({
+	                        seriesIndex: series.seriesIndex,
+	                        dataIndexInside: dataIndex,
+	                        dataIndex: series.getData().getRawIndex(dataIndex)
+	                    });
+	                });
+	            }
+	        });
+
+	        return {
+	            payloadBatch: payloadBatch,
+	            snapToValue: snapToValue
+	        };
+	    }
+
+	    function showPointer(showValueMap, axisInfo, value, payloadBatch) {
+	        showValueMap[axisInfo.key] = {value: value, payloadBatch: payloadBatch};
+	    }
+
+	    function showTooltip(dataByCoordSys, axisInfo, payloadInfo, value) {
+	        var payloadBatch = payloadInfo.payloadBatch;
+	        var axis = axisInfo.axis;
+	        var axisModel = axis.model;
+	        var axisPointerModel = axisInfo.axisPointerModel;
+
+	        // If no data, do not create anything in dataByCoordSys,
+	        // whose length will be used to judge whether dispatch action.
+	        if (!axisInfo.triggerTooltip || !payloadBatch.length) {
+	            return;
+	        }
+
+	        var coordSysModel = axisInfo.coordSys.model;
+	        var coordSysKey = modelHelper.makeKey(coordSysModel);
+	        var coordSysItem = dataByCoordSys.map[coordSysKey];
+	        if (!coordSysItem) {
+	            coordSysItem = dataByCoordSys.map[coordSysKey] = {
+	                coordSysId: coordSysModel.id,
+	                coordSysIndex: coordSysModel.componentIndex,
+	                coordSysType: coordSysModel.type,
+	                coordSysMainType: coordSysModel.mainType,
+	                dataByAxis: []
+	            };
+	            dataByCoordSys.list.push(coordSysItem);
+	        }
+
+	        coordSysItem.dataByAxis.push({
+	            axisDim: axis.dim,
+	            axisIndex: axisModel.componentIndex,
+	            axisType: axisModel.type,
+	            axisId: axisModel.id,
+	            value: value,
+	            // Caustion: viewHelper.getValueLabel is actually on "view stage", which
+	            // depends that all models have been updated. So it should not be performed
+	            // here. Considering axisPointerModel used here is volatile, which is hard
+	            // to be retrieve in TooltipView, we prepare parameters here.
+	            valueLabelOpt: {
+	                precision: axisPointerModel.get('label.precision'),
+	                formatter: axisPointerModel.get('label.formatter')
+	            },
+	            seriesDataIndices: payloadBatch.slice()
+	        });
+	    }
+
+	    function highlight(highlightBatch, actionType, batch) {
+	        highlightBatch.push.apply(highlightBatch, batch);
+	    }
+
+	    function updateModelActually(showValueMap, axesInfo) {
+	        // Basic logic: If no 'show' required, 'hide' this axisPointer.
+	        each(axesInfo, function (axisInfo, key) {
+	            var option = axisInfo.axisPointerModel.option;
+	            var valItem = showValueMap[key];
+
+	            if (valItem) {
+	                !axisInfo.useHandle && (option.status = 'show');
+	                option.value = valItem.value;
+	                // For label formatter param.
+	                option.seriesDataIndices = (valItem.payloadBatch || []).slice();
+	            }
+	            // When always show (e.g., handle used), remain
+	            // original value and status.
+	            else {
+	                // If hide, value still need to be set, consider
+	                // click legend to toggle axis blank.
+	                !axisInfo.useHandle && (option.status = 'hide');
+	            }
+	        });
+	    }
+
+	    function dispatchTooltipActually(dataByCoordSys, point, tooltipOption, dispatchAction) {
+	        // Basic logic: If no showTip required, hideTip will be dispatched.
+	        if (illegalPoint(point) || !dataByCoordSys.list.length) {
+	            dispatchAction({type: 'hideTip'});
+	            return;
+	        }
+
+	        // In most case only one axis (or event one series is used). It is
+	        // convinient to fetch payload.seriesIndex and payload.dataIndex
+	        // dirtectly. So put the first seriesIndex and dataIndex of the first
+	        // axis on the payload.
+	        var sampleItem = ((dataByCoordSys.list[0].dataByAxis[0] || {}).seriesDataIndices || [])[0] || {};
+
+	        dispatchAction({
+	            type: 'showTip',
+	            escapeConnect: true,
+	            x: point[0],
+	            y: point[1],
+	            tooltipOption: tooltipOption,
+	            dataIndexInside: sampleItem.dataIndexInside,
+	            dataIndex: sampleItem.dataIndex,
+	            seriesIndex: sampleItem.seriesIndex,
+	            dataByCoordSys: dataByCoordSys.list
+	        });
+	    }
+
+	    function dispatchHighDownActually(highlightBatch, dispatchAction, api, highDownKey) {
+	        // Basic logic: If nothing highlighted, should downplay all highlighted items.
+	        // This case will occur when mouse leave coordSys.
+
+	        // FIXME
+	        // (1) highlight status shoule be managemented in series.getData()?
+	        // (2) If axisPointer A triggerOn 'handle' and axisPointer B triggerOn
+	        // 'mousemove', items highlighted by A will be downplayed by B.
+	        // It will not be fixed until someone requires this scenario.
+
+	        // Consider items area hightlighted by 'handle', and globalListener may
+	        // downplay all items (including just highlighted ones) when mousemove.
+	        // So we use a highDownKey to separate them as a temporary solution.
+	        var zr = api.getZr();
+	        highDownKey = 'lastHighlights' + (highDownKey || '');
+	        var lastHighlights = get(zr)[highDownKey] || {};
+	        var newHighlights = get(zr)[highDownKey] = {};
+
+	        // Build hash map and remove duplicate incidentally.
+	        zrUtil.each(highlightBatch, function (batchItem) {
+	            var key = batchItem.seriesIndex + ' | ' + batchItem.dataIndex;
+	            newHighlights[key] = batchItem;
+	        });
+
+	        // Diff.
+	        var toHighlight = [];
+	        var toDownplay = [];
+	        zrUtil.each(lastHighlights, function (batchItem, key) {
+	            !newHighlights[key] && toDownplay.push(batchItem);
+	        });
+	        zrUtil.each(newHighlights, function (batchItem, key) {
+	            !lastHighlights[key] && toHighlight.push(batchItem);
+	        });
+
+	        toDownplay.length && api.dispatchAction({
+	            type: 'downplay', escapeConnect: true, batch: toDownplay
+	        });
+	        toHighlight.length && api.dispatchAction({
+	            type: 'highlight', escapeConnect: true, batch: toHighlight
+	        });
+	    }
+
+	    function notTargetAxis(finder, axis) {
+	        var isTarget = 1;
+	        // If none of xxxAxisId and xxxAxisName and xxxAxisIndex exists in finder,
+	        // no axis is not target axis.
+	        each(finder, function (value, propName) {
+	            isTarget &= !(/^.+(AxisId|AxisName|AxisIndex)$/.test(propName));
+	        });
+	        !isTarget && each(
+	            [['AxisId', 'id'], ['AxisIndex', 'componentIndex'], ['AxisName', 'name']],
+	            function (prop) {
+	                var vals = modelUtil.normalizeToArray(finder[axis.dim + prop[0]]);
+	                isTarget |= zrUtil.indexOf(vals, axis.model[prop[1]]) >= 0;
+	            }
+	        );
+	        return !isTarget;
+	    }
+
+	    function makeMapperParam(axisInfo) {
+	        var axisModel = axisInfo.axis.model;
+	        var item = {};
+	        var dim = item.axisDim = axisInfo.axis.dim;
+	        item.axisIndex = item[dim + 'AxisIndex'] = axisModel.componentIndex;
+	        item.axisName = item[dim + 'AxisName'] = axisModel.name;
+	        item.axisId = item[dim + 'AxisId'] = axisModel.id;
+	        return item;
+	    }
+
+	    function illegalPoint(point) {
+	        return point[0] == null || isNaN(point[0]) || point[1] == null || isNaN(point[1]);
+	    }
+
+	    module.exports = axisTrigger;
+
+
+/***/ },
+/* 144 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+
+	    var zrUtil = __webpack_require__(4);
+	    var modelUtil = __webpack_require__(5);
+
+	    /**
+	     * @param {Object} finder contains {seriesIndex, dataIndex, dataIndexInside}
+	     * @param {module:echarts/model/Global} ecModel
+	     * @return {Object} {point: [x, y], el: ...} point Will not be null.
+	     */
+	    module.exports = function (finder, ecModel) {
+	        var point = [];
+	        var seriesIndex = finder.seriesIndex;
+	        var seriesModel;
+	        if (seriesIndex == null || !(
+	            seriesModel = ecModel.getSeriesByIndex(seriesIndex)
+	        )) {
+	            return {point: []};
+	        }
+
+	        var data = seriesModel.getData();
+	        var dataIndex = modelUtil.queryDataIndex(data, finder);
+	        if (dataIndex == null || zrUtil.isArray(dataIndex)) {
+	            return {point: []};
+	        }
+
+	        var el = data.getItemGraphicEl(dataIndex);
+	        var coordSys = seriesModel.coordinateSystem;
+
+	        if (seriesModel.getTooltipPosition) {
+	            point = seriesModel.getTooltipPosition(dataIndex) || [];
+	        }
+	        else if (coordSys && coordSys.dataToPoint) {
+	            point = coordSys.dataToPoint(
+	                data.getValues(
+	                    zrUtil.map(coordSys.dimensions, function (dim) {
+	                        return seriesModel.coordDimToDataDim(dim)[0];
+	                    }), dataIndex, true
+	                )
+	            ) || [];
+	        }
+	        else if (el) {
+	            // Use graphic bounding rect
+	            var rect = el.getBoundingRect().clone();
+	            rect.applyTransform(el.transform);
+	            point = [
+	                rect.x + rect.width / 2,
+	                rect.y + rect.height / 2
+	            ];
+	        }
+
+	        return {point: point, el: el};
+	    };
+
+
+
+
+/***/ },
+/* 145 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+
+	    var echarts = __webpack_require__(1);
+
+	    var AxisPointerModel = echarts.extendComponentModel({
+
+	        type: 'axisPointer',
+
+	        coordSysAxesInfo: null,
+
+	        defaultOption: {
+	            // 'auto' means that show when triggered by tooltip or handle.
+	            show: 'auto',
+	            // 'click' | 'mousemove' | 'none'
+	            triggerOn: null, // set default in AxisPonterView.js
+
+	            zlevel: 0,
+	            z: 50,
+
+	            type: 'line',
+	            // axispointer triggered by tootip determine snap automatically,
+	            // see `modelHelper`.
+	            snap: false,
+	            triggerTooltip: true,
+
+	            value: null,
+	            status: null, // Init value depends on whether handle is used.
+
+	            // [group0, group1, ...]
+	            // Each group can be: {
+	            //      mapper: function () {},
+	            //      singleTooltip: 'multiple',  // 'multiple' or 'single'
+	            //      xAxisId: ...,
+	            //      yAxisName: ...,
+	            //      angleAxisIndex: ...
+	            // }
+	            // mapper: can be ignored.
+	            //      input: {axisInfo, value}
+	            //      output: {axisInfo, value}
+	            link: [],
+
+	            // Do not set 'auto' here, otherwise global animation: false
+	            // will not effect at this axispointer.
+	            animation: null,
+	            animationDurationUpdate: 200,
+
+	            lineStyle: {
+	                color: '#aaa',
+	                width: 1,
+	                type: 'solid'
+	            },
+
+	            shadowStyle: {
+	                color: 'rgba(150,150,150,0.3)'
+	            },
+
+	            label: {
+	                show: true,
+	                formatter: null, // string | Function
+	                precision: 'auto', // Or a number like 0, 1, 2 ...
+	                margin: 3,
+	                textStyle: {
+	                    color: '#fff'
+	                },
+	                padding: [5, 7, 5, 7],
+	                backgroundColor: 'auto', // default: axis line color
+	                borderColor: null,
+	                borderWidth: 0,
+	                shadowBlur: 3,
+	                shadowColor: '#aaa'
+	                // Considering applicability, common style should
+	                // better not have shadowOffset.
+	                // shadowOffsetX: 0,
+	                // shadowOffsetY: 2
+	            },
+
+	            handle: {
+	                show: false,
+	                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.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z', // jshint ignore:line
+	                size: 45,
+	                // handle margin is from symbol center to axis, which is stable when circular move.
+	                margin: 50,
+	                // color: '#1b8bbd'
+	                // color: '#2f4554'
+	                color: '#333',
+	                shadowBlur: 3,
+	                shadowColor: '#aaa',
+	                shadowOffsetX: 0,
+	                shadowOffsetY: 2,
+
+	                // For mobile performance
+	                throttle: 40
+	            }
+	        }
+
+	    });
+
+	    module.exports = AxisPointerModel;
+
+
+
+/***/ },
+/* 146 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+
+	    var globalListener = __webpack_require__(147);
+
+	    var AxisPonterView = __webpack_require__(1).extendComponentView({
+
+	        type: 'axisPointer',
+
+	        render: function (globalAxisPointerModel, ecModel, api) {
+	            var globalTooltipModel = ecModel.getComponent('tooltip');
+	            var triggerOn = globalAxisPointerModel.get('triggerOn')
+	                || (globalTooltipModel && globalTooltipModel.get('triggerOn') || 'mousemove|click');
+
+	            // Register global listener in AxisPointerView to enable
+	            // AxisPointerView to be independent to Tooltip.
+	            globalListener.register(
+	                'axisPointer',
+	                api,
+	                function (currTrigger, e, dispatchAction) {
+	                    // If 'none', it is not controlled by mouse totally.
+	                    if (triggerOn !== 'none'
+	                        && (currTrigger === 'leave' || triggerOn.indexOf(currTrigger) >= 0)
+	                    ) {
+	                        dispatchAction({
+	                            type: 'updateAxisPointer',
+	                            currTrigger: currTrigger,
+	                            x: e && e.offsetX,
+	                            y: e && e.offsetY
+	                        });
+	                    }
+	                }
+	            );
+	        },
+
+	        /**
+	         * @override
+	         */
+	        remove: function (ecModel, api) {
+	            globalListener.disopse(api.getZr(), 'axisPointer');
+	            AxisPonterView.superApply(this._model, 'remove', arguments);
+	        },
+
+	        /**
+	         * @override
+	         */
+	        dispose: function (ecModel, api) {
+	            globalListener.unregister('axisPointer', api);
+	            AxisPonterView.superApply(this._model, 'dispose', arguments);
+	        }
+
+	    });
+
+
+
+/***/ },
+/* 147 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+
+	    var env = __webpack_require__(2);
+	    var zrUtil = __webpack_require__(4);
+	    var get = __webpack_require__(5).makeGetter();
+
+	    var each = zrUtil.each;
+
+	    var globalListener = {};
+
+	    /**
+	     * @param {string} key
+	     * @param {module:echarts/ExtensionAPI} api
+	     * @param {Function} handler
+	     *      param: {string} currTrigger
+	     *      param: {Array.<number>} point
+	     */
+	    globalListener.register = function (key, api, handler) {
+	        if (env.node) {
+	            return;
+	        }
+
+	        var zr = api.getZr();
+	        get(zr).records || (get(zr).records = {});
+
+	        initGlobalListeners(zr, api);
+
+	        var record = get(zr).records[key] || (get(zr).records[key] = {});
+	        record.handler = handler;
+	    };
+
+	    function initGlobalListeners(zr, api) {
+	        if (get(zr).initialized) {
+	            return;
+	        }
+
+	        get(zr).initialized = true;
+
+	        useHandler('click', zrUtil.curry(doEnter, 'click'));
+	        useHandler('mousemove', zrUtil.curry(doEnter, 'mousemove'));
+	        // useHandler('mouseout', onLeave);
+	        useHandler('globalout', onLeave);
+
+	        function useHandler(eventType, cb) {
+	            zr.on(eventType, function (e) {
+	                var dis = makeDispatchAction(api);
+
+	                each(get(zr).records, function (record) {
+	                    record && cb(record, e, dis.dispatchAction);
+	                });
+
+	                dispatchTooltipFinally(dis.pendings, api);
+	            });
+	        }
+	    }
+
+	    function dispatchTooltipFinally(pendings, api) {
+	        var showLen = pendings.showTip.length;
+	        var hideLen = pendings.hideTip.length;
+
+	        var actuallyPayload;
+	        if (showLen) {
+	            actuallyPayload = pendings.showTip[showLen - 1];
+	        }
+	        else if (hideLen) {
+	            actuallyPayload = pendings.hideTip[hideLen - 1];
+	        }
+	        if (actuallyPayload) {
+	            actuallyPayload.dispatchAction = null;
+	            api.dispatchAction(actuallyPayload);
+	        }
+	    }
+
+	    function onLeave(record, e, dispatchAction) {
+	        record.handler('leave', null, dispatchAction);
+	    }
+
+	    function doEnter(currTrigger, record, e, dispatchAction) {
+	        record.handler(currTrigger, e, dispatchAction);
+	    }
+
+	    function makeDispatchAction(api) {
+	        var pendings = {
+	            showTip: [],
+	            hideTip: []
+	        };
+	        // FIXME
+	        // better approach?
+	        // 'showTip' and 'hideTip' can be triggered by axisPointer and tooltip,
+	        // which may be conflict, (axisPointer call showTip but tooltip call hideTip);
+	        // So we have to add "final stage" to merge those dispatched actions.
+	        var dispatchAction = function (payload) {
+	            var pendingList = pendings[payload.type];
+	            if (pendingList) {
+	                pendingList.push(payload);
+	            }
+	            else {
+	                payload.dispatchAction = dispatchAction;
+	                api.dispatchAction(payload);
+	            }
+	        };
+
+	        return {
+	            dispatchAction: dispatchAction,
+	            pendings: pendings
+	        };
+	    }
+
+	    /**
+	     * @param {string} key
+	     * @param {module:echarts/ExtensionAPI} api
+	     */
+	    globalListener.unregister = function (key, api) {
+	        if (env.node) {
+	            return;
+	        }
+	        var zr = api.getZr();
+	        var record = (get(zr).records || {})[key];
+	        if (record) {
+	            get(zr).records[key] = null;
+	        }
+	    };
+
+	    module.exports = globalListener;
+
+
+/***/ },
+/* 148 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+
+	    var zrUtil = __webpack_require__(4);
+
+	    __webpack_require__(124);
+
+	    __webpack_require__(149);
+	    __webpack_require__(151);
+
+	    var barLayoutGrid = __webpack_require__(154);
 	    var echarts = __webpack_require__(1);
 
 	    echarts.registerLayout(zrUtil.curry(barLayoutGrid, 'bar'));
@@ -29275,16 +32005,16 @@
 	    });
 
 	    // In case developer forget to include grid component
-	    __webpack_require__(113);
+	    __webpack_require__(122);
 
 
 /***/ },
-/* 135 */
+/* 149 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    module.exports = __webpack_require__(136).extend({
+	    module.exports = __webpack_require__(150).extend({
 
 	        type: 'series.bar',
 
@@ -29295,7 +32025,7 @@
 
 
 /***/ },
-/* 136 */
+/* 150 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -29370,21 +32100,21 @@
 
 
 /***/ },
-/* 137 */
+/* 151 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
 
 
 	    var zrUtil = __webpack_require__(4);
-	    var graphic = __webpack_require__(43);
-	    var helper = __webpack_require__(138);
+	    var graphic = __webpack_require__(44);
+	    var helper = __webpack_require__(152);
 
 	    var BAR_BORDER_WIDTH_QUERY = ['itemStyle', 'normal', 'barBorderWidth'];
 
 	    // FIXME
 	    // Just for compatible with ec2.
-	    zrUtil.extend(__webpack_require__(12).prototype, __webpack_require__(139));
+	    zrUtil.extend(__webpack_require__(12).prototype, __webpack_require__(153));
 
 	    var BarView = __webpack_require__(1).extendChartView({
 
@@ -29558,13 +32288,13 @@
 
 
 /***/ },
-/* 138 */
+/* 152 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    var zrUtil = __webpack_require__(4);
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 
 	    var helper = {};
 
@@ -29615,7 +32345,7 @@
 
 
 /***/ },
-/* 139 */
+/* 153 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -29649,7 +32379,7 @@
 
 
 /***/ },
-/* 140 */
+/* 154 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -29901,7 +32631,7 @@
 
 
 /***/ },
-/* 141 */
+/* 155 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -29909,10 +32639,10 @@
 	    var zrUtil = __webpack_require__(4);
 	    var echarts = __webpack_require__(1);
 
-	    __webpack_require__(142);
-	    __webpack_require__(144);
+	    __webpack_require__(156);
+	    __webpack_require__(158);
 
-	    __webpack_require__(145)('pie', [{
+	    __webpack_require__(159)('pie', [{
 	        type: 'pieToggleSelect',
 	        event: 'pieselectchanged',
 	        method: 'toggleSelected'
@@ -29926,17 +32656,17 @@
 	        method: 'unSelect'
 	    }]);
 
-	    echarts.registerVisual(zrUtil.curry(__webpack_require__(146), 'pie'));
+	    echarts.registerVisual(zrUtil.curry(__webpack_require__(160), 'pie'));
 
 	    echarts.registerLayout(zrUtil.curry(
-	        __webpack_require__(147), 'pie'
+	        __webpack_require__(161), 'pie'
 	    ));
 
-	    echarts.registerProcessor(zrUtil.curry(__webpack_require__(149), 'pie'));
+	    echarts.registerProcessor(zrUtil.curry(__webpack_require__(163), 'pie'));
 
 
 /***/ },
-/* 142 */
+/* 156 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -29947,7 +32677,7 @@
 	    var modelUtil = __webpack_require__(5);
 	    var completeDimensions = __webpack_require__(103);
 
-	    var dataSelectableMixin = __webpack_require__(143);
+	    var dataSelectableMixin = __webpack_require__(157);
 
 	    var PieSeries = __webpack_require__(1).extendSeriesModel({
 
@@ -30086,7 +32816,7 @@
 
 
 /***/ },
-/* 143 */
+/* 157 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -30156,12 +32886,12 @@
 
 
 /***/ },
-/* 144 */
+/* 158 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 	    var zrUtil = __webpack_require__(4);
 
 	    /**
@@ -30439,7 +33169,7 @@
 
 
 	    // Pie view
-	    var Pie = __webpack_require__(42).extend({
+	    var Pie = __webpack_require__(43).extend({
 
 	        type: 'pie',
 
@@ -30562,7 +33292,7 @@
 
 
 /***/ },
-/* 145 */
+/* 159 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -30602,7 +33332,7 @@
 
 
 /***/ },
-/* 146 */
+/* 160 */
 /***/ function(module, exports) {
 
 	// Pick color from palette for each data item.
@@ -30653,7 +33383,7 @@
 
 
 /***/ },
-/* 147 */
+/* 161 */
 /***/ function(module, exports, __webpack_require__) {
 
 	// TODO minAngle
@@ -30662,7 +33392,7 @@
 
 	    var numberUtil = __webpack_require__(7);
 	    var parsePercent = numberUtil.parsePercent;
-	    var labelLayout = __webpack_require__(148);
+	    var labelLayout = __webpack_require__(162);
 	    var zrUtil = __webpack_require__(4);
 
 	    var PI2 = Math.PI * 2;
@@ -30799,7 +33529,7 @@
 
 
 /***/ },
-/* 148 */
+/* 162 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -31030,7 +33760,7 @@
 
 
 /***/ },
-/* 149 */
+/* 163 */
 /***/ function(module, exports) {
 
 	
@@ -31058,7 +33788,7 @@
 
 
 /***/ },
-/* 150 */
+/* 164 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -31066,22 +33796,22 @@
 	    var zrUtil = __webpack_require__(4);
 	    var echarts = __webpack_require__(1);
 
-	    __webpack_require__(151);
-	    __webpack_require__(152);
+	    __webpack_require__(165);
+	    __webpack_require__(166);
 
 	    echarts.registerVisual(zrUtil.curry(
-	        __webpack_require__(110), 'scatter', 'circle', null
+	        __webpack_require__(119), 'scatter', 'circle', null
 	    ));
 	    echarts.registerLayout(zrUtil.curry(
-	        __webpack_require__(111), 'scatter'
+	        __webpack_require__(120), 'scatter'
 	    ));
 
 	    // In case developer forget to include grid component
-	    __webpack_require__(113);
+	    __webpack_require__(122);
 
 
 /***/ },
-/* 151 */
+/* 165 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -31094,7 +33824,7 @@
 
 	        type: 'series.scatter',
 
-	        dependencies: ['grid', 'polar'],
+	        dependencies: ['grid', 'polar', 'geo', 'singleAxis'],
 
 	        getInitialData: function (option, ecModel) {
 	            var list = createListFromArray(option.data, this, ecModel);
@@ -31150,13 +33880,13 @@
 
 
 /***/ },
-/* 152 */
+/* 166 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var SymbolDraw = __webpack_require__(105);
-	    var LargeSymbolDraw = __webpack_require__(153);
+	    var SymbolDraw = __webpack_require__(115);
+	    var LargeSymbolDraw = __webpack_require__(167);
 
 	    __webpack_require__(1).extendChartView({
 
@@ -31199,15 +33929,15 @@
 
 
 /***/ },
-/* 153 */
+/* 167 */
 /***/ function(module, exports, __webpack_require__) {
 
 	// TODO Batch by color
 
 
 
-	    var graphic = __webpack_require__(43);
-	    var symbolUtil = __webpack_require__(107);
+	    var graphic = __webpack_require__(44);
+	    var symbolUtil = __webpack_require__(104);
 
 	    var LargeSymbolPath = graphic.extendShape({
 
@@ -31350,20 +34080,6 @@
 
 
 /***/ },
-/* 154 */,
-/* 155 */,
-/* 156 */,
-/* 157 */,
-/* 158 */,
-/* 159 */,
-/* 160 */,
-/* 161 */,
-/* 162 */,
-/* 163 */,
-/* 164 */,
-/* 165 */,
-/* 166 */,
-/* 167 */,
 /* 168 */,
 /* 169 */,
 /* 170 */,
@@ -31373,7 +34089,21 @@
 /* 174 */,
 /* 175 */,
 /* 176 */,
-/* 177 */
+/* 177 */,
+/* 178 */,
+/* 179 */,
+/* 180 */,
+/* 181 */,
+/* 182 */,
+/* 183 */,
+/* 184 */,
+/* 185 */,
+/* 186 */,
+/* 187 */,
+/* 188 */,
+/* 189 */,
+/* 190 */,
+/* 191 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -31385,7 +34115,7 @@
 	    var Eventful = __webpack_require__(33);
 	    var zrUtil = __webpack_require__(4);
 	    var eventTool = __webpack_require__(88);
-	    var interactionMutex = __webpack_require__(178);
+	    var interactionMutex = __webpack_require__(192);
 
 	    function mousedown(e) {
 	        if (e.target && e.target.draggable) {
@@ -31446,6 +34176,10 @@
 	    }
 
 	    function mousewheel(e) {
+	        // wheelDelta maybe -0 in chrome mac.
+	        if (e.wheelDelta === 0) {
+	            return;
+	        }
 	        // Convenience:
 	        // Mac and VM Windows on Mac: scroll up: zoom out.
 	        // Windows: scroll up: zoom in.
@@ -31607,7 +34341,7 @@
 
 
 /***/ },
-/* 178 */
+/* 192 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -31655,20 +34389,6 @@
 
 
 /***/ },
-/* 179 */,
-/* 180 */,
-/* 181 */,
-/* 182 */,
-/* 183 */,
-/* 184 */,
-/* 185 */,
-/* 186 */,
-/* 187 */,
-/* 188 */,
-/* 189 */,
-/* 190 */,
-/* 191 */,
-/* 192 */,
 /* 193 */,
 /* 194 */,
 /* 195 */,
@@ -31678,7 +34398,21 @@
 /* 199 */,
 /* 200 */,
 /* 201 */,
-/* 202 */
+/* 202 */,
+/* 203 */,
+/* 204 */,
+/* 205 */,
+/* 206 */,
+/* 207 */,
+/* 208 */,
+/* 209 */,
+/* 210 */,
+/* 211 */,
+/* 212 */,
+/* 213 */,
+/* 214 */,
+/* 215 */,
+/* 216 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -31686,8 +34420,8 @@
 	 */
 
 
-	    var graphic = __webpack_require__(43);
-	    var LineGroup = __webpack_require__(203);
+	    var graphic = __webpack_require__(44);
+	    var LineGroup = __webpack_require__(217);
 
 
 	    function isPointNaN(pt) {
@@ -31777,7 +34511,7 @@
 
 
 /***/ },
-/* 203 */
+/* 217 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -31785,11 +34519,11 @@
 	 */
 
 
-	    var symbolUtil = __webpack_require__(107);
+	    var symbolUtil = __webpack_require__(104);
 	    var vector = __webpack_require__(10);
 	    // var matrix = require('zrender/lib/core/matrix');
-	    var LinePath = __webpack_require__(204);
-	    var graphic = __webpack_require__(43);
+	    var LinePath = __webpack_require__(218);
+	    var graphic = __webpack_require__(44);
 	    var zrUtil = __webpack_require__(4);
 	    var numberUtil = __webpack_require__(7);
 
@@ -32149,14 +34883,14 @@
 
 
 /***/ },
-/* 204 */
+/* 218 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
 	 * Line path for bezier and straight line draw
 	 */
 
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 	    var vec2 = __webpack_require__(10);
 
 	    var straightLineProto = graphic.Line.prototype;
@@ -32206,20 +34940,6 @@
 
 
 /***/ },
-/* 205 */,
-/* 206 */,
-/* 207 */,
-/* 208 */,
-/* 209 */,
-/* 210 */,
-/* 211 */,
-/* 212 */,
-/* 213 */,
-/* 214 */,
-/* 215 */,
-/* 216 */,
-/* 217 */,
-/* 218 */,
 /* 219 */,
 /* 220 */,
 /* 221 */,
@@ -32237,7 +34957,21 @@
 /* 233 */,
 /* 234 */,
 /* 235 */,
-/* 236 */
+/* 236 */,
+/* 237 */,
+/* 238 */,
+/* 239 */,
+/* 240 */,
+/* 241 */,
+/* 242 */,
+/* 243 */,
+/* 244 */,
+/* 245 */,
+/* 246 */,
+/* 247 */,
+/* 248 */,
+/* 249 */,
+/* 250 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -32251,8 +34985,8 @@
 	    var Eventful = __webpack_require__(33);
 	    var zrUtil = __webpack_require__(4);
 	    var BoundingRect = __webpack_require__(9);
-	    var graphic = __webpack_require__(43);
-	    var interactionMutex = __webpack_require__(178);
+	    var graphic = __webpack_require__(44);
+	    var interactionMutex = __webpack_require__(192);
 	    var DataDiffer = __webpack_require__(99);
 
 	    var curry = zrUtil.curry;
@@ -32333,6 +35067,9 @@
 
 	        /**
 	         * Only for drawing (after enabledBrush).
+	         *     'line', 'rect', 'polygon' or false
+	         *     If passing false/null/undefined, disable brush.
+	         *     If passing 'auto', determined by panel.defaultBrushType
 	         * @private
 	         * @type {string}
 	         */
@@ -32340,6 +35077,7 @@
 
 	        /**
 	         * Only for drawing (after enabledBrush).
+	         *
 	         * @private
 	         * @type {Object}
 	         */
@@ -32420,7 +35158,9 @@
 	         * If set to null/undefined/false, select disabled.
 	         * @param {Object} brushOption
 	         * @param {string|boolean} brushOption.brushType 'line', 'rect', 'polygon' or false
-	         *                          If pass false/null/undefined, disable brush.
+	         *                          If passing false/null/undefined, disable brush.
+	         *                          If passing 'auto', determined by panel.defaultBrushType.
+	         *                              ('auto' can not be used in global panel)
 	         * @param {number} [brushOption.brushMode='single'] 'single' or 'multiple'
 	         * @param {boolean} [brushOption.transformable=true]
 	         * @param {boolean} [brushOption.removeOnClick=false]
@@ -32443,7 +35183,11 @@
 
 	        /**
 	         * @param {Array.<Object>} panelOpts If not pass, it is global brush.
-	         *        Each items: {panelId, rect}
+	         *        Each items: {
+	         *            panelId, // mandatory.
+	         *            rect, // mandatory.
+	         *            defaultBrushType // optional, only used when brushType is 'auto'.
+	         *        }
 	         */
 	        setPanels: function (panelOpts) {
 	            var oldPanels = this._panels || {};
@@ -32469,6 +35213,7 @@
 
 	                panel.attr('shape', rect.plain());
 	                panel.__brushPanelId = panelId;
+	                panel.__defaultBrushType = panelOpt.defaultBrushType;
 	                newPanels[panelId] = panel;
 	                oldPanels[panelId] = null;
 	            });
@@ -32520,7 +35265,7 @@
 	         *            {id: 'yy', brushType: 'rect', range: [[23, 44], [23, 54]]},
 	         *            ...
 	         *        ]
-	         *        `brushType` is required in each cover info.
+	         *        `brushType` is required in each cover info. (can not be 'auto')
 	         *        `id` is not mandatory.
 	         *        `brushStyle`, `transformable` is not mandatory, use DEFAULT_BRUSH_OPT by default.
 	         *        If brushOptionList is null/undefined, all covers removed.
@@ -32583,6 +35328,12 @@
 	        },
 
 	        unmount: function () {
+	            if (true) {
+	                if (!this._mounted) {
+	                    return;
+	                }
+	            }
+
 	            this.enableBrush(false);
 
 	            // container may 'removeAll' outside.
@@ -33006,13 +35757,14 @@
 	            if (panel && !creatingCover) {
 	                thisBrushOption.brushMode === 'single' && clearCovers(controller);
 	                var brushOption = zrUtil.clone(thisBrushOption);
+	                brushOption.brushType = determineBrushType(brushOption.brushType, panel);
 	                brushOption.panelId = panel === true ? null : panel.__brushPanelId;
 	                creatingCover = controller._creatingCover = createCover(controller, brushOption);
 	                controller._covers.push(creatingCover);
 	            }
 
 	            if (creatingCover) {
-	                var coverRenderer = coverRenderers[controller._brushType];
+	                var coverRenderer = coverRenderers[determineBrushType(controller._brushType, panel)];
 	                var coverBrushOption = creatingCover.__brushOption;
 
 	                coverBrushOption.range = coverRenderer.getCreatingRange(
@@ -33047,6 +35799,19 @@
 	        return eventParams;
 	    }
 
+	    function determineBrushType(brushType, panel) {
+	        if (brushType === 'auto') {
+	            if (true) {
+	                zrUtil.assert(
+	                    panel && panel.__defaultBrushType,
+	                    'MUST have defaultBrushType when brushType is "atuo"'
+	                );
+	            }
+	            return panel.__defaultBrushType;
+	        }
+	        return brushType;
+	    }
+
 	    var mouseHandlers = {
 
 	        mousedown: function (e) {
@@ -33244,20 +36009,6 @@
 
 
 /***/ },
-/* 237 */,
-/* 238 */,
-/* 239 */,
-/* 240 */,
-/* 241 */,
-/* 242 */,
-/* 243 */,
-/* 244 */,
-/* 245 */,
-/* 246 */,
-/* 247 */,
-/* 248 */,
-/* 249 */,
-/* 250 */,
 /* 251 */,
 /* 252 */,
 /* 253 */,
@@ -33296,7 +36047,23 @@
 /* 286 */,
 /* 287 */,
 /* 288 */,
-/* 289 */
+/* 289 */,
+/* 290 */,
+/* 291 */,
+/* 292 */,
+/* 293 */,
+/* 294 */,
+/* 295 */,
+/* 296 */,
+/* 297 */,
+/* 298 */,
+/* 299 */,
+/* 300 */,
+/* 301 */,
+/* 302 */,
+/* 303 */,
+/* 304 */,
+/* 305 */
 /***/ function(module, exports) {
 
 	// shim for using process in browser
@@ -33482,9 +36249,9 @@
 
 
 /***/ },
-/* 290 */,
-/* 291 */,
-/* 292 */
+/* 306 */,
+/* 307 */,
+/* 308 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -33492,7 +36259,7 @@
 	    var echarts = __webpack_require__(1);
 	    var zrUtil = __webpack_require__(4);
 	    var modelUtil = __webpack_require__(5);
-	    var graphicUtil = __webpack_require__(43);
+	    var graphicUtil = __webpack_require__(44);
 	    var layoutUtil = __webpack_require__(21);
 
 	    // -------------
@@ -33500,7 +36267,7 @@
 	    // -------------
 
 	    echarts.registerPreprocessor(function (option) {
-	        var graphicOption = option && option.graphic;
+	        var graphicOption = option.graphic;
 
 	        // Convert
 	        // {graphic: [{left: 10, type: 'circle'}, ...]}
@@ -33602,12 +36369,11 @@
 	            var elOptionsToUpdate = this._elOptionsToUpdate = [];
 
 	            zrUtil.each(mappingResult, function (resultItem, index) {
-	                var existElOption = resultItem.exist;
 	                var newElOption = resultItem.option;
 
 	                if (true) {
 	                    zrUtil.assert(
-	                        zrUtil.isObject(newElOption) || existElOption,
+	                        zrUtil.isObject(newElOption) || resultItem.exist,
 	                        'Empty graphic option definition'
 	                    );
 	                }
@@ -33616,69 +36382,13 @@
 	                    return;
 	                }
 
-	                // Set id and parent id after id assigned.
-	                newElOption.id = resultItem.keyInfo.id;
-	                var newElParentId = newElOption.parentId;
-	                var newElParentOption = newElOption.parentOption;
-	                var existElParentId = existElOption && existElOption.parentId;
-	                !newElOption.type && existElOption && (newElOption.type = existElOption.type);
-	                newElOption.parentId = newElParentId // parent id specified
-	                    ? newElParentId
-	                    : newElParentOption
-	                    ? newElParentOption.id
-	                    : existElParentId // parent not specified
-	                    ? existElParentId
-	                    : null;
-	                newElOption.parentOption = null; // Clear
 	                elOptionsToUpdate.push(newElOption);
 
-	                // Update existing options, for `getOption` feature.
-	                var newElOptCopy = zrUtil.extend({}, newElOption);
-	                var $action = newElOption.$action;
-	                if (!$action || $action === 'merge') {
-	                    if (existElOption) {
+	                setKeyInfoToNewElOption(resultItem, newElOption);
 
-	                        if (true) {
-	                            var newType = newElOption.type;
-	                            zrUtil.assert(
-	                                !newType || existElOption.type === newType,
-	                                'Please set $action: "replace" to change `type`'
-	                            );
-	                        }
+	                mergeNewElOptionToExist(existList, index, newElOption);
 
-	                        // We can ensure that newElOptCopy and existElOption are not
-	                        // the same object, so `merge` will not change newElOptCopy.
-	                        zrUtil.merge(existElOption, newElOptCopy, true);
-	                        // Rigid body, use ignoreSize.
-	                        layoutUtil.mergeLayoutParam(existElOption, newElOptCopy, {ignoreSize: true});
-	                        // Will be used in render.
-	                        layoutUtil.copyLayoutParams(newElOption, existElOption);
-	                    }
-	                    else {
-	                        existList[index] = newElOptCopy;
-	                    }
-	                }
-	                else if ($action === 'replace') {
-	                    existList[index] = newElOptCopy;
-	                }
-	                else if ($action === 'remove') {
-	                    // null will be cleaned later.
-	                    existElOption && (existList[index] = null);
-	                }
-
-	                if (existList[index]) {
-	                    existList[index].hv = newElOption.hv = [
-	                        // Rigid body, dont care `width`.
-	                        isSetLoc(newElOption, ['left', 'right']),
-	                        // Rigid body, dont care `height`.
-	                        isSetLoc(newElOption, ['top', 'bottom'])
-	                    ];
-	                    // Give default group size. Otherwise layout error may occur.
-	                    if (existList[index].type === 'group') {
-	                        existList[index].width == null && (existList[index].width = newElOption.width = 0);
-	                        existList[index].height == null && (existList[index].height = newElOption.height = 0);
-	                    }
-	                }
+	                setLayoutInfoToExist(existList[index], newElOption);
 
 	            }, this);
 
@@ -33716,20 +36426,22 @@
 	         */
 	        _flatten: function (optionList, result, parentOption) {
 	            zrUtil.each(optionList, function (option) {
-	                if (option) {
-	                    if (parentOption) {
-	                        option.parentOption = parentOption;
-	                    }
-
-	                    result.push(option);
-
-	                    var children = option.children;
-	                    if (option.type === 'group' && children) {
-	                        this._flatten(children, result, option);
-	                    }
-	                    // Deleting for JSON output, and for not affecting group creation.
-	                    delete option.children;
+	                if (!option) {
+	                    return;
 	                }
+
+	                if (parentOption) {
+	                    option.parentOption = parentOption;
+	                }
+
+	                result.push(option);
+
+	                var children = option.children;
+	                if (option.type === 'group' && children) {
+	                    this._flatten(children, result, option);
+	                }
+	                // Deleting for JSON output, and for not affecting group creation.
+	                delete option.children;
 	            }, this);
 	        },
 
@@ -33966,10 +36678,87 @@
 	        return isSet;
 	    }
 
+	    function setKeyInfoToNewElOption(resultItem, newElOption) {
+	        var existElOption = resultItem.exist;
+
+	        // Set id and type after id assigned.
+	        newElOption.id = resultItem.keyInfo.id;
+	        !newElOption.type && existElOption && (newElOption.type = existElOption.type);
+
+	        // Set parent id if not specified
+	        if (newElOption.parentId == null) {
+	            var newElParentOption = newElOption.parentOption;
+	            if (newElParentOption) {
+	                newElOption.parentId = newElParentOption.id;
+	            }
+	            else if (existElOption) {
+	                newElOption.parentId = existElOption.parentId;
+	            }
+	        }
+
+	        // Clear
+	        newElOption.parentOption = null;
+	    }
+
+	    function mergeNewElOptionToExist(existList, index, newElOption) {
+	        // Update existing options, for `getOption` feature.
+	        var newElOptCopy = zrUtil.extend({}, newElOption);
+	        var existElOption = existList[index];
+
+	        var $action = newElOption.$action || 'merge';
+	        if ($action === 'merge') {
+	            if (existElOption) {
+
+	                if (true) {
+	                    var newType = newElOption.type;
+	                    zrUtil.assert(
+	                        !newType || existElOption.type === newType,
+	                        'Please set $action: "replace" to change `type`'
+	                    );
+	                }
+
+	                // We can ensure that newElOptCopy and existElOption are not
+	                // the same object, so `merge` will not change newElOptCopy.
+	                zrUtil.merge(existElOption, newElOptCopy, true);
+	                // Rigid body, use ignoreSize.
+	                layoutUtil.mergeLayoutParam(existElOption, newElOptCopy, {ignoreSize: true});
+	                // Will be used in render.
+	                layoutUtil.copyLayoutParams(newElOption, existElOption);
+	            }
+	            else {
+	                existList[index] = newElOptCopy;
+	            }
+	        }
+	        else if ($action === 'replace') {
+	            existList[index] = newElOptCopy;
+	        }
+	        else if ($action === 'remove') {
+	            // null will be cleaned later.
+	            existElOption && (existList[index] = null);
+	        }
+	    }
+
+	    function setLayoutInfoToExist(existItem, newElOption) {
+	        if (!existItem) {
+	            return;
+	        }
+	        existItem.hv = newElOption.hv = [
+	            // Rigid body, dont care `width`.
+	            isSetLoc(newElOption, ['left', 'right']),
+	            // Rigid body, dont care `height`.
+	            isSetLoc(newElOption, ['top', 'bottom'])
+	        ];
+	        // Give default group size. Otherwise layout error may occur.
+	        if (existItem.type === 'group') {
+	            existItem.width == null && (existItem.width = newElOption.width = 0);
+	            existItem.height == null && (existItem.height = newElOption.height = 0);
+	        }
+	    }
+
 
 
 /***/ },
-/* 293 */
+/* 309 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -33977,17 +36766,17 @@
 	 */
 
 
-	    __webpack_require__(294);
-	    __webpack_require__(295);
-	    __webpack_require__(296);
+	    __webpack_require__(310);
+	    __webpack_require__(311);
+	    __webpack_require__(312);
 
 	    var echarts = __webpack_require__(1);
 	    // Series Filter
-	    echarts.registerProcessor(__webpack_require__(298));
+	    echarts.registerProcessor(__webpack_require__(314));
 
 
 /***/ },
-/* 294 */
+/* 310 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -34184,7 +36973,7 @@
 
 
 /***/ },
-/* 295 */
+/* 311 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -34271,15 +37060,15 @@
 
 
 /***/ },
-/* 296 */
+/* 312 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    var zrUtil = __webpack_require__(4);
-	    var symbolCreator = __webpack_require__(107);
-	    var graphic = __webpack_require__(43);
-	    var listComponentHelper = __webpack_require__(297);
+	    var symbolCreator = __webpack_require__(104);
+	    var graphic = __webpack_require__(44);
+	    var listComponentHelper = __webpack_require__(313);
 
 	    var curry = zrUtil.curry;
 
@@ -34541,14 +37330,14 @@
 
 
 /***/ },
-/* 297 */
+/* 313 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 	    // List layout
 	    var layout = __webpack_require__(21);
 	    var formatUtil = __webpack_require__(6);
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 
 	    function positionGroup(group, model, api) {
 	        layout.positionElement(
@@ -34611,7 +37400,7 @@
 
 
 /***/ },
-/* 298 */
+/* 314 */
 /***/ function(module, exports) {
 
 	
@@ -34635,15 +37424,18 @@
 
 
 /***/ },
-/* 299 */
+/* 315 */
 /***/ function(module, exports, __webpack_require__) {
 
 	// FIXME Better way to pack data in graphic element
 
 
-	    __webpack_require__(300);
+	    __webpack_require__(142);
 
-	    __webpack_require__(301);
+	    __webpack_require__(316);
+
+	    __webpack_require__(317);
+
 
 	    // Show tip action
 	    /**
@@ -34676,7 +37468,7 @@
 
 
 /***/ },
-/* 300 */
+/* 316 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -34685,6 +37477,8 @@
 
 	        type: 'tooltip',
 
+	        dependencies: ['axisPointer'],
+
 	        defaultOption: {
 	            zlevel: 0,
 
@@ -34695,17 +37489,22 @@
 	            // tooltip主体内容
 	            showContent: true,
 
-	            // 触发类型,默认数据触发,见下图,可选为:'item' ¦ 'axis'
+	            // 'trigger' only works on coordinate system.
+	            // 'item' | 'axis' | 'none'
 	            trigger: 'item',
 
-	            // 触发条件,支持 'click' | 'mousemove' | 'none'
-	            triggerOn: 'mousemove',
+	            // 'click' | 'mousemove' | 'none'
+	            triggerOn: 'mousemove|click',
 
-	            // 是否永远显示 content
 	            alwaysShowContent: false,
 
+	            displayMode: 'single', // 'single' | 'multipleByCoordSys'
+
 	            // 位置 {Array} | {Function}
 	            // position: null
+	            // Consider triggered from axisPointer handle, verticalAlign should be 'middle'
+	            // align: null,
+	            // verticalAlign: null,
 
 	            // 是否约束 content 在 viewRect 中。默认 false 是为了兼容以前版本。
 	            confine: false,
@@ -34754,30 +37553,21 @@
 	                // 极坐标系会默认选择 angle 轴
 	                axis: 'auto',
 
-	                animation: true,
+	                animation: 'auto',
 	                animationDurationUpdate: 200,
 	                animationEasingUpdate: 'exponentialOut',
 
-	                // 直线指示器样式设置
-	                lineStyle: {
-	                    color: '#555',
-	                    width: 1,
-	                    type: 'solid'
-	                },
-
 	                crossStyle: {
-	                    color: '#555',
+	                    color: '#999',
 	                    width: 1,
 	                    type: 'dashed',
 
 	                    // TODO formatter
 	                    textStyle: {}
-	                },
-
-	                // 阴影指示器样式设置
-	                shadowStyle: {
-	                    color: 'rgba(150,150,150,0.3)'
 	                }
+
+	                // lineStyle and shadowStyle should not be specified here,
+	                // otherwise it will always override those styles on option.axisPointer.
 	            },
 	            textStyle: {
 	                color: '#fff',
@@ -34788,84 +37578,655 @@
 
 
 /***/ },
-/* 301 */
+/* 317 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var TooltipContent = __webpack_require__(302);
-	    var graphic = __webpack_require__(43);
+	    var TooltipContent = __webpack_require__(318);
 	    var zrUtil = __webpack_require__(4);
 	    var formatUtil = __webpack_require__(6);
 	    var numberUtil = __webpack_require__(7);
-	    var modelUtil = __webpack_require__(5);
-	    var parsePercent = numberUtil.parsePercent;
+	    var findPointFromSeries = __webpack_require__(144);
+	    var layoutUtil = __webpack_require__(21);
 	    var env = __webpack_require__(2);
 	    var Model = __webpack_require__(12);
+	    var globalListener = __webpack_require__(147);
+	    var axisHelper = __webpack_require__(105);
+	    var axisPointerViewHelper = __webpack_require__(139);
 
-	    function dataEqual(a, b) {
-	        if (!a || !b) {
-	            return false;
+	    var bind = zrUtil.bind;
+	    var each = zrUtil.each;
+	    var parsePercent = numberUtil.parsePercent;
+
+
+	    __webpack_require__(1).extendComponentView({
+
+	        type: 'tooltip',
+
+	        init: function (ecModel, api) {
+	            if (env.node) {
+	                return;
+	            }
+	            var tooltipContent = new TooltipContent(api.getDom(), api);
+	            this._tooltipContent = tooltipContent;
+	        },
+
+	        render: function (tooltipModel, ecModel, api) {
+	            if (env.node) {
+	                return;
+	            }
+
+	            // Reset
+	            this.group.removeAll();
+
+	            /**
+	             * @private
+	             * @type {module:echarts/component/tooltip/TooltipModel}
+	             */
+	            this._tooltipModel = tooltipModel;
+
+	            /**
+	             * @private
+	             * @type {module:echarts/model/Global}
+	             */
+	            this._ecModel = ecModel;
+
+	            /**
+	             * @private
+	             * @type {module:echarts/ExtensionAPI}
+	             */
+	            this._api = api;
+
+	            /**
+	             * @private
+	             * @type {Array.<Array.<Object>>}
+	             */
+	            this._lastDataByCoordSys;
+
+	            /**
+	             * @private
+	             * @type {boolean}
+	             */
+	            this._alwaysShowContent = tooltipModel.get('alwaysShowContent');
+
+	            var tooltipContent = this._tooltipContent;
+	            tooltipContent.update();
+	            tooltipContent.setEnterable(tooltipModel.get('enterable'));
+
+	            this._initGlobalListener();
+
+	            this._keepShow();
+	        },
+
+	        _initGlobalListener: function () {
+	            var tooltipModel = this._tooltipModel;
+	            var triggerOn = tooltipModel.get('triggerOn');
+
+	            globalListener.register(
+	                'itemTooltip',
+	                this._api,
+	                bind(function (currTrigger, e, dispatchAction) {
+	                    // If 'none', it is not controlled by mouse totally.
+	                    if (triggerOn !== 'none') {
+	                        if (triggerOn.indexOf(currTrigger) >= 0) {
+	                            this._tryShow(e, dispatchAction);
+	                        }
+	                        else if (currTrigger === 'leave') {
+	                            this._hide(dispatchAction);
+	                        }
+	                    }
+	                }, this)
+	            );
+	        },
+
+	        _keepShow: function () {
+	            var tooltipModel = this._tooltipModel;
+	            var ecModel = this._ecModel;
+	            var api = this._api;
+
+	            // Try to keep the tooltip show when refreshing
+	            if (this._lastX != null
+	                && this._lastY != null
+	                // When user is willing to control tooltip totally using API,
+	                // self.manuallyShowTip({x, y}) might cause tooltip hide,
+	                // which is not expected.
+	                && tooltipModel.get('triggerOn') !== 'none'
+	            ) {
+	                var self = this;
+	                clearTimeout(this._refreshUpdateTimeout);
+	                this._refreshUpdateTimeout = setTimeout(function () {
+	                    // Show tip next tick after other charts are rendered
+	                    // In case highlight action has wrong result
+	                    // FIXME
+	                    self.manuallyShowTip(tooltipModel, ecModel, api, {
+	                        x: self._lastX,
+	                        y: self._lastY
+	                    });
+	                });
+	            }
+	        },
+
+	        /**
+	         * Show tip manually by
+	         * dispatchAction({
+	         *     type: 'showTip',
+	         *     x: 10,
+	         *     y: 10
+	         * });
+	         * Or
+	         * dispatchAction({
+	         *      type: 'showTip',
+	         *      seriesIndex: 0,
+	         *      dataIndex or dataIndexInside or name
+	         * });
+	         *
+	         *  TODO Batch
+	         */
+	        manuallyShowTip: function (tooltipModel, ecModel, api, payload) {
+	            if (payload.from === this.uid || env.node) {
+	                return;
+	            }
+
+	            var dispatchAction = makeDispatchAction(payload, api);
+
+	            // Reset ticket
+	            this._ticket = '';
+
+	            var seriesIndex = payload.seriesIndex;
+	            var dataByCoordSys = payload.dataByCoordSys;
+
+	            // When triggered from axisPointer.
+	            if (dataByCoordSys) {
+	                this._tryShow({
+	                    offsetX: payload.x,
+	                    offsetY: payload.y,
+	                    position: payload.position,
+	                    event: {},
+	                    dataByCoordSys: payload.dataByCoordSys,
+	                    tooltipOption: payload.tooltipOption
+	                }, dispatchAction);
+	            }
+	            else if (seriesIndex != null) {
+	                var pointInfo = findPointFromSeries(payload, ecModel);
+	                var cx = pointInfo.point[0];
+	                var cy = pointInfo.point[1];
+	                if (cx != null && cy != null) {
+	                    this._tryShow({
+	                        offsetX: cx,
+	                        offsetY: cy,
+	                        position: payload.position,
+	                        target: pointInfo.el,
+	                        event: {}
+	                    }, dispatchAction);
+	                }
+	            }
+	            else if (payload.x != null && payload.y != null) {
+	                this._tryShow({
+	                    offsetX: payload.x,
+	                    offsetY: payload.y,
+	                    position: payload.position,
+	                    target: api.getZr().handler.findHover(payload.x, payload.y),
+	                    event: {}
+	                }, dispatchAction);
+	            }
+	        },
+
+	        manuallyHideTip: function (tooltipModel, ecModel, api, payload) {
+	            var tooltipContent = this._tooltipContent;
+
+	            if (!this._alwaysShowContent) {
+	                tooltipContent.hideLater(this._tooltipModel.get('hideDelay'));
+	            }
+
+	            this._lastX = this._lastY = null;
+
+	            if (payload.from !== this.uid) {
+	                this._hide(makeDispatchAction(payload, api));
+	            }
+	        },
+
+	        _tryShow: function (e, dispatchAction) {
+	            var el = e.target;
+	            var tooltipModel = this._tooltipModel;
+
+	            if (!tooltipModel) {
+	                return;
+	            }
+
+	            // Save mouse x, mouse y. So we can try to keep showing the tip if chart is refreshed
+	            this._lastX = e.offsetX;
+	            this._lastY = e.offsetY;
+
+	            var dataByCoordSys = e.dataByCoordSys;
+	            if (dataByCoordSys && dataByCoordSys.length) {
+	                this._showAxisTooltip(dataByCoordSys, e);
+	            }
+	            // Always show item tooltip if mouse is on the element with dataIndex
+	            else if (el && el.dataIndex != null) {
+	                this._lastDataByCoordSys = null;
+	                this._showSeriesItemTooltip(e, el, dispatchAction);
+	            }
+	            // Tooltip provided directly. Like legend.
+	            else if (el && el.tooltip) {
+	                this._lastDataByCoordSys = null;
+	                this._showComponentItemTooltip(e, el, dispatchAction);
+	            }
+	            else {
+	                this._lastDataByCoordSys = null;
+	                this._hide(dispatchAction);
+	            }
+	        },
+
+	        _showOrMove: function (tooltipModel, cb) {
+	            // showDelay is used in this case: tooltip.enterable is set
+	            // as true. User intent to move mouse into tooltip and click
+	            // something. `showDelay` makes it easyer to enter the content
+	            // but tooltip do not move immediately.
+	            var delay = tooltipModel.get('showDelay');
+	            cb = zrUtil.bind(cb, this);
+	            clearTimeout(this._showTimout);
+	            delay > 0
+	                ? (this._showTimout = setTimeout(cb, delay))
+	                : cb();
+	        },
+
+	        _showAxisTooltip: function (dataByCoordSys, e) {
+	            var ecModel = this._ecModel;
+	            var globalTooltipModel = this._tooltipModel;
+	            var point = [e.offsetX, e.offsetY];
+	            var singleDefaultHTML = [];
+	            var singleParamsList = [];
+	            var singleTooltipModel = buildTooltipModel([
+	                e.tooltipOption,
+	                globalTooltipModel
+	            ]);
+
+	            each(dataByCoordSys, function (itemCoordSys) {
+	                // var coordParamList = [];
+	                // var coordDefaultHTML = [];
+	                // var coordTooltipModel = buildTooltipModel([
+	                //     e.tooltipOption,
+	                //     itemCoordSys.tooltipOption,
+	                //     ecModel.getComponent(itemCoordSys.coordSysMainType, itemCoordSys.coordSysIndex),
+	                //     globalTooltipModel
+	                // ]);
+	                // var displayMode = coordTooltipModel.get('displayMode');
+	                // var paramsList = displayMode === 'single' ? singleParamsList : [];
+
+	                each(itemCoordSys.dataByAxis, function (item) {
+	                    var axisModel = ecModel.getComponent(item.axisDim + 'Axis', item.axisIndex);
+	                    var axisValue = item.value;
+	                    var seriesDefaultHTML = [];
+
+	                    if (!axisModel || axisValue == null) {
+	                        return;
+	                    }
+
+	                    var valueLabel = axisPointerViewHelper.getValueLabel(
+	                        axisValue, axisModel.axis, ecModel,
+	                        item.seriesDataIndices,
+	                        item.valueLabelOpt
+	                    );
+
+	                    zrUtil.each(item.seriesDataIndices, function (idxItem) {
+	                        var series = ecModel.getSeriesByIndex(idxItem.seriesIndex);
+	                        var dataIndex = idxItem.dataIndexInside;
+	                        var dataParams = series && series.getDataParams(dataIndex);
+	                        dataParams.axisDim = item.axisDim;
+	                        dataParams.axisIndex = item.axisIndex;
+	                        dataParams.axisType = item.axisType;
+	                        dataParams.axisId = item.axisId;
+	                        dataParams.axisValue = axisHelper.getAxisRawValue(axisModel.axis, axisValue);
+	                        dataParams.axisValueLabel = valueLabel;
+
+	                        if (dataParams) {
+	                            singleParamsList.push(dataParams);
+	                            seriesDefaultHTML.push(series.formatTooltip(dataIndex, true));
+	                        }
+	                    });
+
+	                    // Default tooltip content
+	                    // FIXME
+	                    // (1) shold be the first data which has name?
+	                    // (2) themeRiver, firstDataIndex is array, and first line is unnecessary.
+	                    var firstLine = valueLabel;
+	                    singleDefaultHTML.push(
+	                        (firstLine ? formatUtil.encodeHTML(firstLine) + '<br />' : '')
+	                        + seriesDefaultHTML.join('<br />')
+	                    );
+	                });
+	            }, this);
+
+	            // In most case, the second axis is shown upper than the first one.
+	            singleDefaultHTML.reverse();
+	            singleDefaultHTML = singleDefaultHTML.join('<br /><br />');
+
+	            var positionExpr = e.position;
+	            this._showOrMove(singleTooltipModel, function () {
+	                if (this._updateContentNotChangedOnAxis(dataByCoordSys)) {
+	                    this._updatePosition(
+	                        singleTooltipModel,
+	                        positionExpr,
+	                        point[0], point[1],
+	                        this._tooltipContent,
+	                        singleParamsList
+	                    );
+	                }
+	                else {
+	                    this._showTooltipContent(
+	                        singleTooltipModel, singleDefaultHTML, singleParamsList, Math.random(),
+	                        point[0], point[1], positionExpr
+	                    );
+	                }
+	            });
+
+	            // Do not trigger events here, because this branch only be entered
+	            // from dispatchAction.
+	        },
+
+	        _showSeriesItemTooltip: function (e, el, dispatchAction) {
+	            var ecModel = this._ecModel;
+	            // Use dataModel in element if possible
+	            // Used when mouseover on a element like markPoint or edge
+	            // In which case, the data is not main data in series.
+	            var seriesIndex = el.seriesIndex;
+	            var seriesModel = ecModel.getSeriesByIndex(seriesIndex);
+
+	            // For example, graph link.
+	            var dataModel = el.dataModel || seriesModel;
+	            var dataIndex = el.dataIndex;
+	            var dataType = el.dataType;
+	            var data = dataModel.getData();
+
+	            var tooltipModel = buildTooltipModel([
+	                data.getItemModel(dataIndex),
+	                dataModel,
+	                seriesModel && (seriesModel.coordinateSystem || {}).model,
+	                this._tooltipModel
+	            ]);
+
+	            var tooltipTrigger = tooltipModel.get('trigger');
+	            if (tooltipTrigger != null && tooltipTrigger !== 'item') {
+	                return;
+	            }
+
+	            var params = dataModel.getDataParams(dataIndex, dataType);
+	            var defaultHtml = dataModel.formatTooltip(dataIndex, false, dataType);
+	            var asyncTicket = 'item_' + dataModel.name + '_' + dataIndex;
+
+	            this._showOrMove(tooltipModel, function () {
+	                this._showTooltipContent(
+	                    tooltipModel, defaultHtml, params, asyncTicket,
+	                    e.offsetX, e.offsetY, e.position, e.target
+	                );
+	            });
+
+	            // FIXME
+	            // duplicated showtip if manuallyShowTip is called from dispatchAction.
+	            dispatchAction({
+	                type: 'showTip',
+	                dataIndexInside: dataIndex,
+	                dataIndex: data.getRawIndex(dataIndex),
+	                seriesIndex: seriesIndex,
+	                from: this.uid
+	            });
+	        },
+
+	        _showComponentItemTooltip: function (e, el, dispatchAction) {
+	            var tooltipOpt = el.tooltip;
+	            if (typeof tooltipOpt === 'string') {
+	                var content = tooltipOpt;
+	                tooltipOpt = {
+	                    content: content,
+	                    // Fixed formatter
+	                    formatter: content
+	                };
+	            }
+	            var subTooltipModel = new Model(tooltipOpt, this._tooltipModel, this._ecModel);
+	            var defaultHtml = subTooltipModel.get('content');
+	            var asyncTicket = Math.random();
+
+	            // Do not check whether `trigger` is 'none' here, because `trigger`
+	            // only works on cooridinate system. In fact, we have not found case
+	            // that requires setting `trigger` nothing on component yet.
+
+	            this._showOrMove(subTooltipModel, function () {
+	                this._showTooltipContent(
+	                    subTooltipModel, defaultHtml, subTooltipModel.get('formatterParams') || {},
+	                    asyncTicket, e.offsetX, e.offsetY, e.position, el
+	                );
+	            });
+
+	            // If not dispatch showTip, tip may be hide triggered by axis.
+	            dispatchAction({
+	                type: 'showTip',
+	                from: this.uid
+	            });
+	        },
+
+	        _showTooltipContent: function (
+	            tooltipModel, defaultHtml, params, asyncTicket, x, y, positionExpr, el
+	        ) {
+	            // Reset ticket
+	            this._ticket = '';
+
+	            if (!tooltipModel.get('showContent') || !tooltipModel.get('show')) {
+	                return;
+	            }
+
+	            var tooltipContent = this._tooltipContent;
+
+	            var formatter = tooltipModel.get('formatter');
+	            positionExpr = positionExpr || tooltipModel.get('position');
+	            var html = defaultHtml;
+
+	            if (formatter && typeof formatter === 'string') {
+	                html = formatUtil.formatTpl(formatter, params, true);
+	            }
+	            else if (typeof formatter === 'function') {
+	                var callback = bind(function (cbTicket, html) {
+	                    if (cbTicket === this._ticket) {
+	                        tooltipContent.setContent(html);
+	                        this._updatePosition(
+	                            tooltipModel, positionExpr, x, y, tooltipContent, params, el
+	                        );
+	                    }
+	                }, this);
+	                this._ticket = asyncTicket;
+	                html = formatter(params, asyncTicket, callback);
+	            }
+
+	            tooltipContent.setContent(html);
+	            tooltipContent.show(tooltipModel);
+
+	            this._updatePosition(
+	                tooltipModel, positionExpr, x, y, tooltipContent, params, el
+	            );
+	        },
+
+	        /**
+	         * @param  {string|Function|Array.<number>} positionExpr
+	         * @param  {number} x Mouse x
+	         * @param  {number} y Mouse y
+	         * @param  {boolean} confine Whether confine tooltip content in view rect.
+	         * @param  {Object|<Array.<Object>} params
+	         * @param  {module:zrender/Element} el target element
+	         * @param  {module:echarts/ExtensionAPI} api
+	         * @return {Array.<number>}
+	         */
+	        _updatePosition: function (tooltipModel, positionExpr, x, y, content, params, el) {
+	            var viewWidth = this._api.getWidth();
+	            var viewHeight = this._api.getHeight();
+	            positionExpr = positionExpr || tooltipModel.get('position');
+
+	            var contentSize = content.getSize();
+	            var align = tooltipModel.get('align');
+	            var vAlign = tooltipModel.get('verticalAlign');
+	            var rect = el && el.getBoundingRect().clone();
+	            el && rect.applyTransform(el.transform);
+
+	            if (typeof positionExpr === 'function') {
+	                // Callback of position can be an array or a string specify the position
+	                positionExpr = positionExpr([x, y], params, content.el, rect, {
+	                    viewSize: [viewWidth, viewHeight],
+	                    contentSize: contentSize.slice()
+	                });
+	            }
+
+	            if (zrUtil.isArray(positionExpr)) {
+	                x = parsePercent(positionExpr[0], viewWidth);
+	                y = parsePercent(positionExpr[1], viewHeight);
+	            }
+	            else if (zrUtil.isObject(positionExpr)) {
+	                positionExpr.width = contentSize[0];
+	                positionExpr.height = contentSize[1];
+	                var layoutRect = layoutUtil.getLayoutRect(
+	                    positionExpr, {width: viewWidth, height: viewHeight}
+	                );
+	                x = layoutRect.x;
+	                y = layoutRect.y;
+	                align = null;
+	                // When positionExpr is left/top/right/bottom,
+	                // align and verticalAlign will not work.
+	                vAlign = null;
+	            }
+	            // Specify tooltip position by string 'top' 'bottom' 'left' 'right' around graphic element
+	            else if (typeof positionExpr === 'string' && el) {
+	                var pos = calcTooltipPosition(
+	                    positionExpr, rect, contentSize
+	                );
+	                x = pos[0];
+	                y = pos[1];
+	            }
+	            else {
+	                var pos = refixTooltipPosition(
+	                    x, y, content.el, viewWidth, viewHeight, align ? 0 : 20, vAlign ? 0 : 20
+	                );
+	                x = pos[0];
+	                y = pos[1];
+	            }
+
+	            align && (x -= isCenterAlign(align) ? contentSize[0] / 2 : align === 'right' ? contentSize[0] : 0);
+	            vAlign && (y -= isCenterAlign(vAlign) ? contentSize[1] / 2 : vAlign === 'bottom' ? contentSize[1] : 0);
+
+	            if (tooltipModel.get('confine')) {
+	                var pos = confineTooltipPosition(
+	                    x, y, content.el, viewWidth, viewHeight
+	                );
+	                x = pos[0];
+	                y = pos[1];
+	            }
+
+	            content.moveTo(x, y);
+	        },
+
+	        // FIXME
+	        // Should we remove this but leave this to user?
+	        _updateContentNotChangedOnAxis: function (dataByCoordSys) {
+	            var lastCoordSys = this._lastDataByCoordSys;
+	            var contentNotChanged = !!lastCoordSys
+	                && lastCoordSys.length === dataByCoordSys.length;
+
+	            each(lastCoordSys, function (lastItemCoordSys, indexCoordSys) {
+	                var lastDataByAxis = lastItemCoordSys.dataByAxis || {};
+	                var thisItemCoordSys = dataByCoordSys[indexCoordSys] || {};
+	                var thisDataByAxis = thisItemCoordSys.dataByAxis || [];
+	                contentNotChanged &= lastDataByAxis.length === thisDataByAxis.length;
+
+	                each(lastDataByAxis, function (lastItem, indexAxis) {
+	                    var thisItem = thisDataByAxis[indexAxis] || {};
+	                    var lastIndices = lastItem.seriesDataIndices || [];
+	                    var newIndices = thisItem.seriesDataIndices || [];
+
+	                    contentNotChanged &=
+	                        lastItem.value === thisItem.value
+	                        && lastItem.axisType === thisItem.axisType
+	                        && lastItem.axisId === thisItem.axisId
+	                        && lastIndices.length === newIndices.length;
+
+	                    each(lastIndices, function (lastIdxItem, j) {
+	                        var newIdxItem = newIndices[j];
+	                        contentNotChanged &=
+	                            lastIdxItem.seriesIndex === newIdxItem.seriesIndex
+	                            && lastIdxItem.dataIndex === newIdxItem.dataIndex;
+	                    });
+	                });
+	            });
+
+	            this._lastDataByCoordSys = dataByCoordSys;
+
+	            return !!contentNotChanged;
+	        },
+
+	        _hide: function (dispatchAction) {
+	            // Do not directly hideLater here, because this behavior may be prevented
+	            // in dispatchAction when showTip is dispatched.
+
+	            // FIXME
+	            // duplicated hideTip if manuallyHideTip is called from dispatchAction.
+	            this._lastDataByCoordSys = null;
+	            dispatchAction({
+	                type: 'hideTip',
+	                from: this.uid
+	            });
+	        },
+
+	        dispose: function (ecModel, api) {
+	            if (env.node) {
+	                return;
+	            }
+	            this._tooltipContent.hide();
+	            globalListener.unregister('itemTooltip', api);
 	        }
-	        var round = numberUtil.round;
-	        return round(a[0]) === round(b[0])
-	            && round(a[1]) === round(b[1]);
-	    }
-	    /**
-	     * @inner
-	     */
-	    function makeLineShape(x1, y1, x2, y2) {
-	        return {
-	            x1: x1,
-	            y1: y1,
-	            x2: x2,
-	            y2: y2
-	        };
-	    }
+	    });
+
 
 	    /**
-	     * @inner
+	     * @param {Array.<Object|module:echarts/model/Model>} modelCascade
+	     * From top to bottom. (the last one should be globalTooltipModel);
 	     */
-	    function makeRectShape(x, y, width, height) {
-	        return {
-	            x: x,
-	            y: y,
-	            width: width,
-	            height: height
-	        };
+	    function buildTooltipModel(modelCascade) {
+	        var resultModel = modelCascade.pop();
+	        while (modelCascade.length) {
+	            var tooltipOpt = modelCascade.pop();
+	            if (tooltipOpt) {
+	                if (tooltipOpt instanceof Model) {
+	                    tooltipOpt = tooltipOpt.get('tooltip', true);
+	                }
+	                // In each data item tooltip can be simply write:
+	                // {
+	                //  value: 10,
+	                //  tooltip: 'Something you need to know'
+	                // }
+	                if (typeof tooltipOpt === 'string') {
+	                    tooltipOpt = {formatter: tooltipOpt};
+	                }
+	                resultModel = new Model(tooltipOpt, resultModel, resultModel.ecModel);
+	            }
+	        }
+	        return resultModel;
 	    }
 
-	    /**
-	     * @inner
-	     */
-	    function makeSectorShape(cx, cy, r0, r, startAngle, endAngle) {
-	        return {
-	            cx: cx,
-	            cy: cy,
-	            r0: r0,
-	            r: r,
-	            startAngle: startAngle,
-	            endAngle: endAngle,
-	            clockwise: true
-	        };
+	    function makeDispatchAction(payload, api) {
+	        return payload.dispatchAction || zrUtil.bind(api.dispatchAction, api);
 	    }
 
-	    function refixTooltipPosition(x, y, el, viewWidth, viewHeight) {
+	    function refixTooltipPosition(x, y, el, viewWidth, viewHeight, gapH, gapV) {
 	        var width = el.clientWidth;
 	        var height = el.clientHeight;
-	        var gap = 20;
 
-	        if (x + width + gap > viewWidth) {
-	            x -= width + gap;
+	        if (x + width + gapH > viewWidth) {
+	            x -= width + gapH;
 	        }
 	        else {
-	            x += gap;
+	            x += gapH;
 	        }
-	        if (y + height + gap > viewHeight) {
-	            y -= height + gap;
+	        if (y + height + gapV > viewHeight) {
+	            y -= height + gapV;
 	        }
 	        else {
-	            y += gap;
+	            y += gapV;
 	        }
 	        return [x, y];
 	    }
@@ -34882,9 +38243,9 @@
 	        return [x, y];
 	    }
 
-	    function calcTooltipPosition(position, rect, dom) {
-	        var domWidth = dom.clientWidth;
-	        var domHeight = dom.clientHeight;
+	    function calcTooltipPosition(position, rect, contentSize) {
+	        var domWidth = contentSize[0];
+	        var domHeight = contentSize[1];
 	        var gap = 5;
 	        var x = 0;
 	        var y = 0;
@@ -34914,1151 +38275,14 @@
 	        return [x, y];
 	    }
 
-	    /**
-	     * @param  {string|Function|Array.<number>} positionExpr
-	     * @param  {number} x Mouse x
-	     * @param  {number} y Mouse y
-	     * @param  {boolean} confine Whether confine tooltip content in view rect.
-	     * @param  {module:echarts/component/tooltip/TooltipContent} content
-	     * @param  {Object|<Array.<Object>} params
-	     * @param  {module:zrender/Element} el target element
-	     * @param  {module:echarts/ExtensionAPI} api
-	     * @return {Array.<number>}
-	     */
-	    function updatePosition(positionExpr, x, y, confine, content, params, el, api) {
-	        var viewWidth = api.getWidth();
-	        var viewHeight = api.getHeight();
-
-	        var rect = el && el.getBoundingRect().clone();
-	        el && rect.applyTransform(el.transform);
-	        if (typeof positionExpr === 'function') {
-	            // Callback of position can be an array or a string specify the position
-	            positionExpr = positionExpr([x, y], params, content.el, rect);
-	        }
-
-	        if (zrUtil.isArray(positionExpr)) {
-	            x = parsePercent(positionExpr[0], viewWidth);
-	            y = parsePercent(positionExpr[1], viewHeight);
-	        }
-	        // Specify tooltip position by string 'top' 'bottom' 'left' 'right' around graphic element
-	        else if (typeof positionExpr === 'string' && el) {
-	            var pos = calcTooltipPosition(
-	                positionExpr, rect, content.el
-	            );
-	            x = pos[0];
-	            y = pos[1];
-	        }
-	        else {
-	            var pos = refixTooltipPosition(
-	                x, y, content.el, viewWidth, viewHeight
-	            );
-	            x = pos[0];
-	            y = pos[1];
-	        }
-
-	        if (confine) {
-	            var pos = confineTooltipPosition(
-	                x, y, content.el, viewWidth, viewHeight
-	            );
-	            x = pos[0];
-	            y = pos[1];
-	        }
-
-	        content.moveTo(x, y);
+	    function isCenterAlign(align) {
+	        return align === 'center' || align === 'middle';
 	    }
 
-	    function ifSeriesSupportAxisTrigger(seriesModel) {
-	        var coordSys = seriesModel.coordinateSystem;
-	        var trigger = seriesModel.get('tooltip.trigger', true);
-	        // Ignore series use item tooltip trigger and series coordinate system is not cartesian or
-	        return !(!coordSys
-	            || (coordSys.type !== 'cartesian2d' && coordSys.type !== 'polar' && coordSys.type !== 'singleAxis')
-	            || trigger === 'item');
-	    }
-
-	    __webpack_require__(1).extendComponentView({
-
-	        type: 'tooltip',
-
-	        _axisPointers: {},
-
-	        init: function (ecModel, api) {
-	            if (env.node) {
-	                return;
-	            }
-	            var tooltipContent = new TooltipContent(api.getDom(), api);
-	            this._tooltipContent = tooltipContent;
-	        },
-
-	        render: function (tooltipModel, ecModel, api) {
-	            if (env.node) {
-	                return;
-	            }
-
-	            // Reset
-	            this.group.removeAll();
-
-	            /**
-	             * @type {Object}
-	             * @private
-	             */
-	            this._axisPointers = {};
-
-	            /**
-	             * @private
-	             * @type {module:echarts/component/tooltip/TooltipModel}
-	             */
-	            this._tooltipModel = tooltipModel;
-
-	            /**
-	             * @private
-	             * @type {module:echarts/model/Global}
-	             */
-	            this._ecModel = ecModel;
-
-	            /**
-	             * @private
-	             * @type {module:echarts/ExtensionAPI}
-	             */
-	            this._api = api;
-
-	            /**
-	             * @type {Object}
-	             * @private
-	             */
-	            this._lastHover = {
-	                // data
-	                // payloadBatch
-	            };
-
-	            var tooltipContent = this._tooltipContent;
-	            tooltipContent.update();
-	            tooltipContent.enterable = tooltipModel.get('enterable');
-	            this._alwaysShowContent = tooltipModel.get('alwaysShowContent');
-
-	            /**
-	             * @type {Object.<string, Array>}
-	             */
-	            this._seriesGroupByAxis = this._prepareAxisTriggerData(
-	                tooltipModel, ecModel
-	            );
-
-	            var crossText = this._crossText;
-	            if (crossText) {
-	                this.group.add(crossText);
-	            }
-
-	            var triggerOn = tooltipModel.get('triggerOn');
-
-	            // Try to keep the tooltip show when refreshing
-	            if (this._lastX != null
-	                && this._lastY != null
-	                // When user is willing to control tooltip totally using API,
-	                // self.manuallyShowTip({x, y}) might cause tooltip hide,
-	                // which is not expected.
-	                && triggerOn !== 'none'
-	            ) {
-	                var self = this;
-	                clearTimeout(this._refreshUpdateTimeout);
-	                this._refreshUpdateTimeout = setTimeout(function () {
-	                    // Show tip next tick after other charts are rendered
-	                    // In case highlight action has wrong result
-	                    // FIXME
-	                    self.manuallyShowTip(tooltipModel, ecModel, api, {
-	                        x: self._lastX,
-	                        y: self._lastY
-	                    });
-	                });
-	            }
-
-	            var zr = this._api.getZr();
-	            zr.off('click', this._tryShow);
-	            zr.off('mousemove', this._mousemove);
-	            zr.off('mouseout', this._hide);
-	            zr.off('globalout', this._hide);
-
-	            if (triggerOn === 'click') {
-	                zr.on('click', this._tryShow, this);
-	            }
-	            else if (triggerOn === 'mousemove') {
-	                zr.on('mousemove', this._mousemove, this);
-	                zr.on('mouseout', this._hide, this);
-	                zr.on('globalout', this._hide, this);
-	            }
-	            // else triggerOn is 'none', which enable user
-	            // to control tooltip totally using API.
-	        },
-
-	        _mousemove: function (e) {
-	            var showDelay = this._tooltipModel.get('showDelay');
-	            var self = this;
-	            clearTimeout(this._showTimeout);
-	            if (showDelay > 0) {
-	                this._showTimeout = setTimeout(function () {
-	                    self._tryShow(e);
-	                }, showDelay);
-	            }
-	            else {
-	                this._tryShow(e);
-	            }
-	        },
-
-	        /**
-	         * Show tip manually by
-	         * dispatchAction({
-	         *     type: 'showTip',
-	         *     x: 10,
-	         *     y: 10
-	         * });
-	         * Or
-	         * dispatchAction({
-	         *      type: 'showTip',
-	         *      seriesIndex: 0,
-	         *      dataIndex or dataIndexInside or name
-	         * });
-	         *
-	         *  TODO Batch
-	         */
-	        manuallyShowTip: function (tooltipModel, ecModel, api, payload) {
-	            // From self
-	            if (payload.from === this.uid) {
-	                return;
-	            }
-
-	            var ecModel = this._ecModel;
-	            var seriesIndex = payload.seriesIndex;
-	            var seriesModel = ecModel.getSeriesByIndex(seriesIndex);
-	            var api = this._api;
-
-	            var isTriggerAxis = this._tooltipModel.get('trigger') === 'axis';
-	            function seriesHaveDataOnIndex(_series) {
-	                var data = _series.getData();
-	                var dataIndex = modelUtil.queryDataIndex(data, payload);
-	                // Have single dataIndex
-	                if (dataIndex != null && !zrUtil.isArray(dataIndex)
-	                    && data.hasValue(dataIndex)
-	                ) {
-	                    return true;
-	                }
-	            }
-
-	            if (payload.x == null || payload.y == null) {
-	                if (isTriggerAxis) {
-	                    // Find another series.
-	                    if (seriesModel && !seriesHaveDataOnIndex(seriesModel)) {
-	                        seriesModel = null;
-	                    }
-	                    if (!seriesModel) {
-	                        // Find the first series can use axis trigger And data is not null
-	                        ecModel.eachSeries(function (_series) {
-	                            if (ifSeriesSupportAxisTrigger(_series) && !seriesModel) {
-	                                if (seriesHaveDataOnIndex(_series)) {
-	                                    seriesModel = _series;
-	                                }
-	                            }
-	                        });
-	                    }
-	                }
-	                else {
-	                    // Use the first series by default.
-	                    seriesModel = seriesModel || ecModel.getSeriesByIndex(0);
-	                }
-	                if (seriesModel) {
-	                    var data = seriesModel.getData();
-	                    var dataIndex = modelUtil.queryDataIndex(data, payload);
-
-	                    if (dataIndex == null || zrUtil.isArray(dataIndex)) {
-	                        return;
-	                    }
-
-	                    var el = data.getItemGraphicEl(dataIndex);
-	                    var cx;
-	                    var cy;
-	                    // Try to get the point in coordinate system
-	                    var coordSys = seriesModel.coordinateSystem;
-	                    if (seriesModel.getTooltipPosition) {
-	                        var point = seriesModel.getTooltipPosition(dataIndex) || [];
-	                        cx = point[0];
-	                        cy = point[1];
-	                    }
-	                    else if (coordSys && coordSys.dataToPoint) {
-	                        var point = coordSys.dataToPoint(
-	                            data.getValues(
-	                                zrUtil.map(coordSys.dimensions, function (dim) {
-	                                    return seriesModel.coordDimToDataDim(dim)[0];
-	                                }), dataIndex, true
-	                            )
-	                        );
-	                        cx = point && point[0];
-	                        cy = point && point[1];
-	                    }
-	                    else if (el) {
-	                        // Use graphic bounding rect
-	                        var rect = el.getBoundingRect().clone();
-	                        rect.applyTransform(el.transform);
-	                        cx = rect.x + rect.width / 2;
-	                        cy = rect.y + rect.height / 2;
-	                    }
-
-	                    if (cx != null && cy != null) {
-	                        this._tryShow({
-	                            offsetX: cx,
-	                            offsetY: cy,
-	                            position: payload.position,
-	                            target: el,
-	                            event: {}
-	                        });
-	                    }
-	                }
-	            }
-	            else {
-	                var el = api.getZr().handler.findHover(payload.x, payload.y);
-	                this._tryShow({
-	                    offsetX: payload.x,
-	                    offsetY: payload.y,
-	                    position: payload.position,
-	                    target: el,
-	                    event: {}
-	                });
-	            }
-	        },
-
-	        manuallyHideTip: function (tooltipModel, ecModel, api, payload) {
-	            if (payload.from === this.uid) {
-	                return;
-	            }
-
-	            this._hide();
-	        },
-
-	        _prepareAxisTriggerData: function (tooltipModel, ecModel) {
-	            // Prepare data for axis trigger
-	            var seriesGroupByAxis = {};
-	            ecModel.eachSeries(function (seriesModel) {
-	                if (ifSeriesSupportAxisTrigger(seriesModel)) {
-	                    var coordSys = seriesModel.coordinateSystem;
-	                    var baseAxis;
-	                    var key;
-
-	                    // Only cartesian2d, polar and single support axis trigger
-	                    if (coordSys.type === 'cartesian2d') {
-	                        // FIXME `axisPointer.axis` is not baseAxis
-	                        baseAxis = coordSys.getBaseAxis();
-	                        key = baseAxis.dim + baseAxis.index;
-	                    }
-	                    else if (coordSys.type === 'singleAxis') {
-	                        baseAxis = coordSys.getAxis();
-	                        key = baseAxis.dim + baseAxis.type;
-	                    }
-	                    else {
-	                        baseAxis = coordSys.getBaseAxis();
-	                        key = baseAxis.dim + coordSys.name;
-	                    }
-
-	                    seriesGroupByAxis[key] = seriesGroupByAxis[key] || {
-	                        coordSys: [],
-	                        series: []
-	                    };
-	                    seriesGroupByAxis[key].coordSys.push(coordSys);
-	                    seriesGroupByAxis[key].series.push(seriesModel);
-	                }
-	            }, this);
-
-	            return seriesGroupByAxis;
-	        },
-
-	        /**
-	         * mousemove handler
-	         * @param {Object} e
-	         * @private
-	         */
-	        _tryShow: function (e) {
-	            var el = e.target;
-	            var tooltipModel = this._tooltipModel;
-	            var globalTrigger = tooltipModel.get('trigger');
-	            var ecModel = this._ecModel;
-	            var api = this._api;
-
-	            if (!tooltipModel) {
-	                return;
-	            }
-
-	            // Save mouse x, mouse y. So we can try to keep showing the tip if chart is refreshed
-	            this._lastX = e.offsetX;
-	            this._lastY = e.offsetY;
-
-	            // Always show item tooltip if mouse is on the element with dataIndex
-	            if (el && el.dataIndex != null) {
-	                // Use dataModel in element if possible
-	                // Used when mouseover on a element like markPoint or edge
-	                // In which case, the data is not main data in series.
-	                var dataModel = el.dataModel || ecModel.getSeriesByIndex(el.seriesIndex);
-	                var dataIndex = el.dataIndex;
-	                var data = dataModel.getData();
-	                var itemModel = data.getItemModel(dataIndex);
-	                // Series or single data may use item trigger when global is axis trigger
-	                if ((itemModel.get('tooltip.trigger') || globalTrigger) === 'axis') {
-	                    this._showAxisTooltip(tooltipModel, ecModel, e);
-	                }
-	                else {
-	                    // Reset ticket
-	                    this._ticket = '';
-	                    // If either single data or series use item trigger
-	                    this._hideAxisPointer();
-	                    // Reset last hover and dispatch downplay action
-	                    this._resetLastHover();
-
-	                    this._showItemTooltipContent(dataModel, dataIndex, el.dataType, e);
-	                }
-
-	                api.dispatchAction({
-	                    type: 'showTip',
-	                    from: this.uid,
-	                    dataIndexInside: dataIndex,
-	                    dataIndex: data.getRawIndex(dataIndex), // expose to user.
-	                    seriesIndex: el.seriesIndex
-	                });
-	            }
-	            // Tooltip provided directly. Like legend
-	            else if (el && el.tooltip) {
-	                var tooltipOpt = el.tooltip;
-	                if (typeof tooltipOpt === 'string') {
-	                    var content = tooltipOpt;
-	                    tooltipOpt = {
-	                        content: content,
-	                        // Fixed formatter
-	                        formatter: content
-	                    };
-	                }
-	                var subTooltipModel = new Model(tooltipOpt, tooltipModel);
-	                var defaultHtml = subTooltipModel.get('content');
-	                var asyncTicket = Math.random();
-	                this._showTooltipContent(
-	                    // TODO params
-	                    subTooltipModel, defaultHtml, subTooltipModel.get('formatterParams') || {},
-	                    asyncTicket, e.offsetX, e.offsetY, e.position, el, api
-	                );
-	            }
-	            else {
-	                if (globalTrigger === 'item') {
-	                    this._hide();
-	                }
-	                else {
-	                    // Try show axis tooltip
-	                    this._showAxisTooltip(tooltipModel, ecModel, e);
-	                }
-
-	                // Action of cross pointer
-	                // other pointer types will trigger action in _dispatchAndShowSeriesTooltipContent method
-	                if (tooltipModel.get('axisPointer.type') === 'cross') {
-	                    api.dispatchAction({
-	                        type: 'showTip',
-	                        from: this.uid,
-	                        x: e.offsetX,
-	                        y: e.offsetY
-	                    });
-	                }
-	            }
-	        },
-
-	        /**
-	         * Show tooltip on axis
-	         * @param {module:echarts/component/tooltip/TooltipModel} tooltipModel
-	         * @param {module:echarts/model/Global} ecModel
-	         * @param {Object} e
-	         * @private
-	         */
-	        _showAxisTooltip: function (tooltipModel, ecModel, e) {
-	            var axisPointerModel = tooltipModel.getModel('axisPointer');
-	            var axisPointerType = axisPointerModel.get('type');
-
-	            if (axisPointerType === 'cross') {
-	                var el = e.target;
-	                if (el && el.dataIndex != null) {
-	                    var seriesModel = ecModel.getSeriesByIndex(el.seriesIndex);
-	                    var dataIndex = el.dataIndex;
-	                    this._showItemTooltipContent(seriesModel, dataIndex, el.dataType, e);
-	                }
-	            }
-
-	            this._showAxisPointer();
-	            var allNotShow = true;
-	            zrUtil.each(this._seriesGroupByAxis, function (seriesCoordSysSameAxis) {
-	                // Try show the axis pointer
-	                var allCoordSys = seriesCoordSysSameAxis.coordSys;
-	                var coordSys = allCoordSys[0];
-
-	                // If mouse position is not in the grid or polar
-	                var point = [e.offsetX, e.offsetY];
-
-	                if (!coordSys.containPoint(point)) {
-	                    // Hide axis pointer
-	                    this._hideAxisPointer(coordSys.name);
-	                    return;
-	                }
-
-	                allNotShow = false;
-	                // Make sure point is discrete on cateogry axis
-	                var dimensions = coordSys.dimensions;
-	                var value = coordSys.pointToData(point, true);
-	                point = coordSys.dataToPoint(value);
-
-	                var baseAxis = coordSys.getBaseAxis();
-	                var axisType = axisPointerModel.get('axis');
-	                if (axisType === 'auto') {
-	                    axisType = baseAxis.dim;
-	                }
-
-	                if (baseAxis.isBlank() || zrUtil.eqNaN(point[0]) || zrUtil.eqNaN(point[1])) {
-	                    this._hideAxisPointer(coordSys.name);
-	                    return;
-	                }
-
-	                var contentNotChange = false;
-	                var lastHover = this._lastHover;
-	                if (axisPointerType === 'cross') {
-	                    // If hover data not changed
-	                    // Possible when two axes are all category
-	                    if (dataEqual(lastHover.data, value)) {
-	                        contentNotChange = true;
-	                    }
-	                    lastHover.data = value;
-	                }
-	                else {
-	                    var valIndex = zrUtil.indexOf(dimensions, axisType);
-
-	                    // If hover data not changed on the axis dimension
-	                    if (lastHover.data === value[valIndex]) {
-	                        contentNotChange = true;
-	                    }
-	                    lastHover.data = value[valIndex];
-	                }
-
-	                var enableAnimation = tooltipModel.get('animation');
-
-	                if (coordSys.type === 'cartesian2d' && !contentNotChange) {
-	                    this._showCartesianPointer(
-	                        axisPointerModel, coordSys, axisType, point, enableAnimation
-	                    );
-	                }
-	                else if (coordSys.type === 'polar' && !contentNotChange) {
-	                    this._showPolarPointer(
-	                        axisPointerModel, coordSys, axisType, point, enableAnimation
-	                    );
-	                }
-	                else if (coordSys.type === 'singleAxis' && !contentNotChange) {
-	                    this._showSinglePointer(
-	                        axisPointerModel, coordSys, axisType, point, enableAnimation
-	                    );
-	                }
-
-	                if (axisPointerType !== 'cross') {
-	                    this._dispatchAndShowSeriesTooltipContent(
-	                        coordSys, seriesCoordSysSameAxis.series, point, value, contentNotChange, e.position
-	                    );
-	                }
-	            }, this);
-
-	            if (!this._tooltipModel.get('show')) {
-	                this._hideAxisPointer();
-	            }
-
-	            if (allNotShow) {
-	                this._hide();
-	            }
-	        },
-
-	        /**
-	         * Show tooltip on axis of cartesian coordinate
-	         * @param {module:echarts/model/Model} axisPointerModel
-	         * @param {module:echarts/coord/cartesian/Cartesian2D} cartesians
-	         * @param {string} axisType
-	         * @param {Array.<number>} point
-	         * @private
-	         */
-	        _showCartesianPointer: function (axisPointerModel, cartesian, axisType, point, enableAnimation) {
-	            var self = this;
-
-	            var axisPointerType = axisPointerModel.get('type');
-	            var baseAxis = cartesian.getBaseAxis();
-	            var moveAnimation = enableAnimation
-	                && axisPointerType !== 'cross'
-	                && baseAxis.type === 'category'
-	                && baseAxis.getBandWidth() > 20;
-
-	            if (axisPointerType === 'cross') {
-	                moveGridLine('x', point, cartesian.getAxis('y').getGlobalExtent());
-	                moveGridLine('y', point, cartesian.getAxis('x').getGlobalExtent());
-
-	                this._updateCrossText(cartesian, point, axisPointerModel);
-	            }
-	            else {
-	                var otherAxis = cartesian.getAxis(axisType === 'x' ? 'y' : 'x');
-	                var otherExtent = otherAxis.getGlobalExtent();
-
-	                if (cartesian.type === 'cartesian2d') {
-	                    (axisPointerType === 'line' ? moveGridLine : moveGridShadow)(
-	                        axisType, point, otherExtent
-	                    );
-	                }
-	            }
-
-	            /**
-	             * @inner
-	             */
-	            function moveGridLine(axisType, point, otherExtent) {
-	                var targetShape = axisType === 'x'
-	                    ? makeLineShape(point[0], otherExtent[0], point[0], otherExtent[1])
-	                    : makeLineShape(otherExtent[0], point[1], otherExtent[1], point[1]);
-
-	                var pointerEl = self._getPointerElement(
-	                    cartesian, axisPointerModel, axisType, targetShape
-	                );
-	                graphic.subPixelOptimizeLine({
-	                    shape: targetShape,
-	                    style: pointerEl.style
-	                });
-
-	                moveAnimation
-	                    ? graphic.updateProps(pointerEl, {
-	                        shape: targetShape
-	                    }, axisPointerModel)
-	                    :  pointerEl.attr({
-	                        shape: targetShape
-	                    });
-	            }
-
-	            /**
-	             * @inner
-	             */
-	            function moveGridShadow(axisType, point, otherExtent) {
-	                var axis = cartesian.getAxis(axisType);
-	                var bandWidth = axis.getBandWidth();
-	                var span = otherExtent[1] - otherExtent[0];
-	                var targetShape = axisType === 'x'
-	                    ? makeRectShape(point[0] - bandWidth / 2, otherExtent[0], bandWidth, span)
-	                    : makeRectShape(otherExtent[0], point[1] - bandWidth / 2, span, bandWidth);
-
-	                var pointerEl = self._getPointerElement(
-	                    cartesian, axisPointerModel, axisType, targetShape
-	                );
-	                moveAnimation
-	                    ? graphic.updateProps(pointerEl, {
-	                        shape: targetShape
-	                    }, axisPointerModel)
-	                    :  pointerEl.attr({
-	                        shape: targetShape
-	                    });
-	            }
-	        },
-
-	        _showSinglePointer: function (axisPointerModel, single, axisType, point, enableAnimation) {
-	            var self = this;
-	            var axisPointerType = axisPointerModel.get('type');
-	            var moveAnimation =
-	                enableAnimation
-	                && axisPointerType !== 'cross'
-	                && single.getBaseAxis().type === 'category';
-	            var rect = single.getRect();
-	            var otherExtent = [rect.y, rect.y + rect.height];
-
-	            moveSingleLine(axisType, point, otherExtent);
-
-	            /**
-	             * @inner
-	             */
-	            function moveSingleLine(axisType, point, otherExtent) {
-	                var axis = single.getAxis();
-	                var orient = axis.orient;
-
-	                var targetShape = orient === 'horizontal'
-	                    ? makeLineShape(point[0], otherExtent[0], point[0], otherExtent[1])
-	                    : makeLineShape(otherExtent[0], point[1], otherExtent[1], point[1]);
-
-	                var pointerEl = self._getPointerElement(
-	                    single, axisPointerModel, axisType, targetShape
-	                );
-	                moveAnimation
-	                    ? graphic.updateProps(pointerEl, {
-	                        shape: targetShape
-	                    }, axisPointerModel)
-	                    :  pointerEl.attr({
-	                        shape: targetShape
-	                    });
-	            }
-
-	        },
-
-	        /**
-	         * Show tooltip on axis of polar coordinate
-	         * @param {module:echarts/model/Model} axisPointerModel
-	         * @param {Array.<module:echarts/coord/polar/Polar>} polar
-	         * @param {string} axisType
-	         * @param {Array.<number>} point
-	         */
-	        _showPolarPointer: function (axisPointerModel, polar, axisType, point, enableAnimation) {
-	            var self = this;
-
-	            var axisPointerType = axisPointerModel.get('type');
-
-	            var angleAxis = polar.getAngleAxis();
-	            var radiusAxis = polar.getRadiusAxis();
-
-	            var moveAnimation = enableAnimation
-	                && axisPointerType !== 'cross'
-	                && polar.getBaseAxis().type === 'category';
-
-	            if (axisPointerType === 'cross') {
-	                movePolarLine('angle', point, radiusAxis.getExtent());
-	                movePolarLine('radius', point, angleAxis.getExtent());
-
-	                this._updateCrossText(polar, point, axisPointerModel);
-	            }
-	            else {
-	                var otherAxis = polar.getAxis(axisType === 'radius' ? 'angle' : 'radius');
-	                var otherExtent = otherAxis.getExtent();
-
-	                (axisPointerType === 'line' ? movePolarLine : movePolarShadow)(
-	                    axisType, point, otherExtent
-	                );
-	            }
-	            /**
-	             * @inner
-	             */
-	            function movePolarLine(axisType, point, otherExtent) {
-	                var mouseCoord = polar.pointToCoord(point);
-
-	                var targetShape;
-
-	                if (axisType === 'angle') {
-	                    var p1 = polar.coordToPoint([otherExtent[0], mouseCoord[1]]);
-	                    var p2 = polar.coordToPoint([otherExtent[1], mouseCoord[1]]);
-	                    targetShape = makeLineShape(p1[0], p1[1], p2[0], p2[1]);
-	                }
-	                else {
-	                    targetShape = {
-	                        cx: polar.cx,
-	                        cy: polar.cy,
-	                        r: mouseCoord[0]
-	                    };
-	                }
-
-	                var pointerEl = self._getPointerElement(
-	                    polar, axisPointerModel, axisType, targetShape
-	                );
-
-	                moveAnimation
-	                    ? graphic.updateProps(pointerEl, {
-	                        shape: targetShape
-	                    }, axisPointerModel)
-	                    :  pointerEl.attr({
-	                        shape: targetShape
-	                    });
-	            }
-
-	            /**
-	             * @inner
-	             */
-	            function movePolarShadow(axisType, point, otherExtent) {
-	                var axis = polar.getAxis(axisType);
-	                var bandWidth = axis.getBandWidth();
-
-	                var mouseCoord = polar.pointToCoord(point);
-
-	                var targetShape;
-
-	                var radian = Math.PI / 180;
-
-	                if (axisType === 'angle') {
-	                    targetShape = makeSectorShape(
-	                        polar.cx, polar.cy,
-	                        otherExtent[0], otherExtent[1],
-	                        // In ECharts y is negative if angle is positive
-	                        (-mouseCoord[1] - bandWidth / 2) * radian,
-	                        (-mouseCoord[1] + bandWidth / 2) * radian
-	                    );
-	                }
-	                else {
-	                    targetShape = makeSectorShape(
-	                        polar.cx, polar.cy,
-	                        mouseCoord[0] - bandWidth / 2,
-	                        mouseCoord[0] + bandWidth / 2,
-	                        0, Math.PI * 2
-	                    );
-	                }
-
-	                var pointerEl = self._getPointerElement(
-	                    polar, axisPointerModel, axisType, targetShape
-	                );
-	                moveAnimation
-	                    ? graphic.updateProps(pointerEl, {
-	                        shape: targetShape
-	                    }, axisPointerModel)
-	                    :  pointerEl.attr({
-	                        shape: targetShape
-	                    });
-	            }
-	        },
-
-	        _updateCrossText: function (coordSys, point, axisPointerModel) {
-	            var crossStyleModel = axisPointerModel.getModel('crossStyle');
-	            var textStyleModel = crossStyleModel.getModel('textStyle');
-
-	            var tooltipModel = this._tooltipModel;
-
-	            var text = this._crossText;
-	            if (!text) {
-	                text = this._crossText = new graphic.Text({
-	                    style: {
-	                        textAlign: 'left',
-	                        textVerticalAlign: 'bottom'
-	                    }
-	                });
-	                this.group.add(text);
-	            }
-
-	            var value = coordSys.pointToData(point);
-
-	            var dims = coordSys.dimensions;
-	            value = zrUtil.map(value, function (val, idx) {
-	                var axis = coordSys.getAxis(dims[idx]);
-	                if (axis.type === 'category' || axis.type === 'time') {
-	                    val = axis.scale.getLabel(val);
-	                }
-	                else {
-	                    val = formatUtil.addCommas(
-	                        val.toFixed(axis.getPixelPrecision())
-	                    );
-	                }
-	                return val;
-	            });
-
-	            text.setStyle({
-	                fill: textStyleModel.getTextColor() || crossStyleModel.get('color'),
-	                textFont: textStyleModel.getFont(),
-	                text: value.join(', '),
-	                x: point[0] + 5,
-	                y: point[1] - 5
-	            });
-	            text.z = tooltipModel.get('z');
-	            text.zlevel = tooltipModel.get('zlevel');
-	        },
-
-	        _getPointerElement: function (coordSys, pointerModel, axisType, initShape) {
-	            var tooltipModel = this._tooltipModel;
-	            var z = tooltipModel.get('z');
-	            var zlevel = tooltipModel.get('zlevel');
-	            var axisPointers = this._axisPointers;
-	            var coordSysName = coordSys.name;
-	            axisPointers[coordSysName] = axisPointers[coordSysName] || {};
-	            if (axisPointers[coordSysName][axisType]) {
-	                return axisPointers[coordSysName][axisType];
-	            }
-
-	            // Create if not exists
-	            var pointerType = pointerModel.get('type');
-	            var styleModel = pointerModel.getModel(pointerType + 'Style');
-	            var isShadow = pointerType === 'shadow';
-	            var style = styleModel[isShadow ? 'getAreaStyle' : 'getLineStyle']();
-
-	            var elementType = coordSys.type === 'polar'
-	                ? (isShadow ? 'Sector' : (axisType === 'radius' ? 'Circle' : 'Line'))
-	                : (isShadow ? 'Rect' : 'Line');
-
-	            isShadow ? (style.stroke = null) : (style.fill = null);
-
-	            var el = axisPointers[coordSysName][axisType] = new graphic[elementType]({
-	                style: style,
-	                z: z,
-	                zlevel: zlevel,
-	                silent: true,
-	                shape: initShape
-	            });
-
-	            this.group.add(el);
-	            return el;
-	        },
-
-	        /**
-	         * Dispatch actions and show tooltip on series
-	         * @param {Array.<module:echarts/model/Series>} seriesList
-	         * @param {Array.<number>} point
-	         * @param {Array.<number>} value
-	         * @param {boolean} contentNotChange
-	         * @param {Array.<number>|string|Function} [positionExpr]
-	         */
-	        _dispatchAndShowSeriesTooltipContent: function (
-	            coordSys, seriesList, point, value, contentNotChange, positionExpr
-	        ) {
-
-	            var rootTooltipModel = this._tooltipModel;
-
-	            var baseAxis = coordSys.getBaseAxis();
-	            var baseDimIndex = ({x: 1, radius: 1, single: 1})[baseAxis.dim] ? 0 : 1;
-
-	            if (!seriesList.length) {
-	                return;
-	            }
-
-	            var payloadBatch = zrUtil.map(seriesList, function (series) {
-	                return {
-	                    seriesIndex: series.seriesIndex,
-	                    dataIndexInside: series.getAxisTooltipDataIndex
-	                        ? series.getAxisTooltipDataIndex(series.coordDimToDataDim(baseAxis.dim), value, baseAxis)
-	                        : series.getData().indexOfNearest(
-	                            series.coordDimToDataDim(baseAxis.dim)[0],
-	                            value[baseDimIndex],
-	                            // Add a threshold to avoid find the wrong dataIndex when data length is not same
-	                            false, baseAxis.type === 'category' ? 0.5 : null
-	                        )
-	                };
-	            });
-	            var sampleSeriesIndex;
-	            zrUtil.each(payloadBatch, function (payload, idx) {
-	                if (seriesList[idx].getData().hasValue(payload.dataIndexInside)) {
-	                    sampleSeriesIndex = idx;
-	                }
-	            });
-	            // Fallback to 0.
-	            sampleSeriesIndex = sampleSeriesIndex || 0;
-
-	            var lastHover = this._lastHover;
-	            var api = this._api;
-	            // Dispatch downplay action
-	            if (lastHover.payloadBatch && !contentNotChange) {
-	                api.dispatchAction({
-	                    type: 'downplay',
-	                    batch: lastHover.payloadBatch
-	                });
-	            }
-	            // Dispatch highlight action
-	            if (!contentNotChange) {
-	                api.dispatchAction({
-	                    type: 'highlight',
-	                    batch: payloadBatch
-	                });
-	                lastHover.payloadBatch = payloadBatch;
-	            }
-	            // Dispatch showTip action
-	            var dataIndex = payloadBatch[sampleSeriesIndex].dataIndexInside;
-	            api.dispatchAction({
-	                type: 'showTip',
-	                dataIndexInside: dataIndex,
-	                // expose to user.
-	                dataIndex: seriesList[sampleSeriesIndex].getData().getRawIndex(dataIndex),
-	                seriesIndex: payloadBatch[sampleSeriesIndex].seriesIndex,
-	                from: this.uid
-	            });
-
-	            if (baseAxis && rootTooltipModel.get('showContent') && rootTooltipModel.get('show')) {
-	                var paramsList = zrUtil.map(seriesList, function (series, index) {
-	                    return series.getDataParams(payloadBatch[index].dataIndexInside);
-	                });
-
-	                if (!contentNotChange) {
-	                    // Update html content
-	                    var firstDataIndex = payloadBatch[sampleSeriesIndex].dataIndexInside;
-
-	                    // Default tooltip content
-	                    // FIXME
-	                    // (1) shold be the first data which has name?
-	                    // (2) themeRiver, firstDataIndex is array, and first line is unnecessary.
-	                    var firstLine = baseAxis.type === 'time'
-	                        ? baseAxis.scale.getLabel(value[baseDimIndex])
-	                        : seriesList[sampleSeriesIndex].getData().getName(firstDataIndex);
-	                    var defaultHtml = (firstLine ? formatUtil.encodeHTML(firstLine) + '<br />' : '')
-	                        + zrUtil.map(seriesList, function (series, index) {
-	                            return series.formatTooltip(payloadBatch[index].dataIndexInside, true);
-	                        }).join('<br />');
-
-	                    var asyncTicket = 'axis_' + coordSys.name + '_' + firstDataIndex;
-
-	                    this._showTooltipContent(
-	                        rootTooltipModel, defaultHtml, paramsList, asyncTicket,
-	                        point[0], point[1], positionExpr, null, api
-	                    );
-	                }
-	                else {
-	                    updatePosition(
-	                        positionExpr || rootTooltipModel.get('position'),
-	                        point[0], point[1],
-	                        rootTooltipModel.get('confine'),
-	                        this._tooltipContent, paramsList, null, api
-	                    );
-	                }
-	            }
-	        },
-
-	        /**
-	         * Show tooltip on item
-	         * @param {module:echarts/model/Series} seriesModel
-	         * @param {number} dataIndex
-	         * @param {string} dataType
-	         * @param {Object} e
-	         */
-	        _showItemTooltipContent: function (seriesModel, dataIndex, dataType, e) {
-	            // FIXME Graph data
-	            var api = this._api;
-	            var data = seriesModel.getData(dataType);
-	            var itemModel = data.getItemModel(dataIndex);
-
-	            var tooltipOpt = itemModel.get('tooltip', true);
-	            if (typeof tooltipOpt === 'string') {
-	                // In each data item tooltip can be simply write:
-	                // {
-	                //  value: 10,
-	                //  tooltip: 'Something you need to know'
-	                // }
-	                var tooltipContent = tooltipOpt;
-	                tooltipOpt = {
-	                    formatter: tooltipContent
-	                };
-	            }
-	            var rootTooltipModel = this._tooltipModel;
-	            var seriesTooltipModel = seriesModel.getModel(
-	                'tooltip', rootTooltipModel
-	            );
-	            var tooltipModel = new Model(tooltipOpt, seriesTooltipModel, seriesTooltipModel.ecModel);
-
-	            var params = seriesModel.getDataParams(dataIndex, dataType);
-	            var defaultHtml = seriesModel.formatTooltip(dataIndex, false, dataType);
-
-	            var asyncTicket = 'item_' + seriesModel.name + '_' + dataIndex;
-
-	            this._showTooltipContent(
-	                tooltipModel, defaultHtml, params, asyncTicket,
-	                e.offsetX, e.offsetY, e.position, e.target, api
-	            );
-	        },
-
-	        _showTooltipContent: function (
-	            tooltipModel, defaultHtml, params, asyncTicket, x, y, positionExpr, target, api
-	        ) {
-	            // Reset ticket
-	            this._ticket = '';
-
-	            if (tooltipModel.get('showContent') && tooltipModel.get('show')) {
-	                var tooltipContent = this._tooltipContent;
-	                var confine = tooltipModel.get('confine');
-
-	                var formatter = tooltipModel.get('formatter');
-	                positionExpr = positionExpr || tooltipModel.get('position');
-	                var html = defaultHtml;
-
-	                if (formatter) {
-	                    if (typeof formatter === 'string') {
-	                        html = formatUtil.formatTpl(formatter, params, true);
-	                    }
-	                    else if (typeof formatter === 'function') {
-	                        var self = this;
-	                        var ticket = asyncTicket;
-	                        var callback = function (cbTicket, html) {
-	                            if (cbTicket === self._ticket) {
-	                                tooltipContent.setContent(html);
-
-	                                updatePosition(
-	                                    positionExpr, x, y, confine,
-	                                    tooltipContent, params, target, api
-	                                );
-	                            }
-	                        };
-	                        self._ticket = ticket;
-	                        html = formatter(params, ticket, callback);
-	                    }
-	                }
-
-	                tooltipContent.show(tooltipModel);
-	                tooltipContent.setContent(html);
-
-	                updatePosition(
-	                    positionExpr, x, y, confine,
-	                    tooltipContent, params, target, api
-	                );
-	            }
-	        },
-
-	        /**
-	         * Show axis pointer
-	         * @param {string} [coordSysName]
-	         */
-	        _showAxisPointer: function (coordSysName) {
-	            if (coordSysName) {
-	                var axisPointers = this._axisPointers[coordSysName];
-	                axisPointers && zrUtil.each(axisPointers, function (el) {
-	                    el.show();
-	                });
-	            }
-	            else {
-	                this.group.eachChild(function (child) {
-	                    child.show();
-	                });
-	                this.group.show();
-	            }
-	        },
-
-	        _resetLastHover: function () {
-	            var lastHover = this._lastHover;
-	            if (lastHover.payloadBatch) {
-	                this._api.dispatchAction({
-	                    type: 'downplay',
-	                    batch: lastHover.payloadBatch
-	                });
-	            }
-	            // Reset lastHover
-	            this._lastHover = {};
-	        },
-	        /**
-	         * Hide axis pointer
-	         * @param {string} [coordSysName]
-	         */
-	        _hideAxisPointer: function (coordSysName) {
-	            if (coordSysName) {
-	                var axisPointers = this._axisPointers[coordSysName];
-	                axisPointers && zrUtil.each(axisPointers, function (el) {
-	                    el.hide();
-	                });
-	            }
-	            else {
-	                if (this.group.children().length) {
-	                    this.group.hide();
-	                }
-	            }
-	        },
-
-	        _hide: function () {
-	            clearTimeout(this._showTimeout);
-
-	            this._hideAxisPointer();
-	            this._resetLastHover();
-	            if (!this._alwaysShowContent) {
-	                this._tooltipContent.hideLater(this._tooltipModel.get('hideDelay'));
-	            }
-
-	            this._api.dispatchAction({
-	                type: 'hideTip',
-	                from: this.uid
-	            });
-
-	            this._lastX = this._lastY = null;
-	        },
-
-	        dispose: function (ecModel, api) {
-	            if (env.node) {
-	                return;
-	            }
-	            var zr = api.getZr();
-	            this._tooltipContent.hide();
-
-	            zr.off('click', this._tryShow);
-	            zr.off('mousemove', this._mousemove);
-	            zr.off('mouseout', this._hide);
-	            zr.off('globalout', this._hide);
-	        }
-	    });
 
 
 /***/ },
-/* 302 */
+/* 318 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -36125,8 +38349,6 @@
 	     */
 	    function assembleCssText(tooltipModel) {
 
-	        tooltipModel = tooltipModel;
-
 	        var cssText = [];
 
 	        var transitionDuration = tooltipModel.get('transitionDuration');
@@ -36134,7 +38356,7 @@
 	        var textStyleModel = tooltipModel.getModel('textStyle');
 	        var padding = tooltipModel.get('padding');
 
-	        // Animation transition
+	        // Animation transition. Do not animate when transitionDuration is 0.
 	        transitionDuration &&
 	            cssText.push(assembleTransition(transitionDuration));
 
@@ -36177,7 +38399,7 @@
 	     */
 	    function TooltipContent(container, api) {
 	        var el = document.createElement('div');
-	        var zr = api.getZr();
+	        var zr = this._zr = api.getZr();
 
 	        this.el = el;
 
@@ -36198,7 +38420,7 @@
 	        var self = this;
 	        el.onmouseenter = function () {
 	            // clear the timeout in hideLater and keep showing tooltip
-	            if (self.enterable) {
+	            if (self._enterable) {
 	                clearTimeout(self._hideTimeout);
 	                self._show = true;
 	            }
@@ -36206,7 +38428,7 @@
 	        };
 	        el.onmousemove = function (e) {
 	            e = e || window.event;
-	            if (!self.enterable) {
+	            if (!self._enterable) {
 	                // Try trigger zrender event to avoid mouse
 	                // in and out shape too frequently
 	                var handler = zr.handler;
@@ -36215,7 +38437,7 @@
 	            }
 	        };
 	        el.onmouseleave = function () {
-	            if (self.enterable) {
+	            if (self._enterable) {
 	                if (self._show) {
 	                    self.hideLater(self._hideDelay);
 	                }
@@ -36228,12 +38450,18 @@
 
 	        constructor: TooltipContent,
 
-	        enterable: true,
+	        /**
+	         * @private
+	         * @type {boolean}
+	         */
+	        _enterable: true,
 
 	        /**
 	         * Update when tooltip is rendered
 	         */
 	        update: function () {
+	            // FIXME
+	            // Move this logic to ec main?
 	            var container = this._container;
 	            var stl = container.currentStyle
 	                || document.defaultView.getComputedStyle(container);
@@ -36261,12 +38489,29 @@
 	        },
 
 	        setContent: function (content) {
+	            this.el.innerHTML = content;
+	        },
+
+	        setEnterable: function (enterable) {
+	            this._enterable = enterable;
+	        },
+
+	        getSize: function () {
 	            var el = this.el;
-	            el.innerHTML = content;
-	            el.style.display = content ? 'block' : 'none';
+	            return [el.clientWidth, el.clientHeight];
 	        },
 
 	        moveTo: function (x, y) {
+	            // xy should be based on canvas root. But tooltipContent is
+	            // the sibling of canvas root. So padding of ec container
+	            // should be considered here.
+	            var zr = this._zr;
+	            var viewportRoot;
+	            if (zr && zr.painter && (viewportRoot = zr.painter.getViewportRoot())) {
+	                x += viewportRoot.offsetLeft || 0;
+	                y += viewportRoot.offsetTop || 0;
+	            }
+
 	            var style = this.el.style;
 	            style.left = x + 'px';
 	            style.top = y + 'px';
@@ -36280,10 +38525,8 @@
 	            this._show = false;
 	        },
 
-	        // showLater: function ()
-
 	        hideLater: function (time) {
-	            if (this._show && !(this._inContent && this.enterable)) {
+	            if (this._show && !(this._inContent && this._enterable)) {
 	                if (time) {
 	                    this._hideDelay = time;
 	                    // Set show false to avoid invoke hideLater mutiple times
@@ -36305,186 +38548,249 @@
 
 
 /***/ },
-/* 303 */,
-/* 304 */,
-/* 305 */,
-/* 306 */,
-/* 307 */,
-/* 308 */,
-/* 309 */,
-/* 310 */,
-/* 311 */,
-/* 312 */,
-/* 313 */,
-/* 314 */,
-/* 315 */,
-/* 316 */,
-/* 317 */,
-/* 318 */,
 /* 319 */,
 /* 320 */,
 /* 321 */,
-/* 322 */
+/* 322 */,
+/* 323 */,
+/* 324 */,
+/* 325 */,
+/* 326 */,
+/* 327 */,
+/* 328 */,
+/* 329 */,
+/* 330 */,
+/* 331 */,
+/* 332 */,
+/* 333 */,
+/* 334 */,
+/* 335 */,
+/* 336 */,
+/* 337 */,
+/* 338 */,
+/* 339 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    var zrUtil = __webpack_require__(4);
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
+	    var modelUtil = __webpack_require__(5);
 
 	    var each = zrUtil.each;
+	    var indexOf = zrUtil.indexOf;
+	    var curry = zrUtil.curry;
 
-	    var helper = {};
-
-	    var COMPONENT_NAMES = ['geo', 'xAxis', 'yAxis'];
-	    var PANEL_ID_SPLIT = '--';
 	    var COORD_CONVERTS = ['dataToPoint', 'pointToData'];
 
-	    helper.parseOutputRanges = function (areas, coordInfoList, ecModel, rangesCoordInfo) {
-	        each(areas, function (area, index) {
-	            var panelId = area.panelId;
+	    // FIXME
+	    // how to genarialize to more coordinate systems.
+	    var INCLUDE_FINDER_MAIN_TYPES = [
+	        'grid', 'xAxis', 'yAxis', 'geo', 'graph',
+	        'polar', 'radiusAxis', 'angleAxis', 'bmap'
+	    ];
 
-	            if (panelId) {
-	                panelId = panelId.split(PANEL_ID_SPLIT);
+	    /**
+	     * [option in constructor]:
+	     * {
+	     *     Index/Id/Name of geo, xAxis, yAxis, grid: See util/model#parseFinder.
+	     * }
+	     *
+	     *
+	     * [targetInfo]:
+	     *
+	     * There can be multiple axes in a single targetInfo. Consider the case
+	     * of `grid` component, a targetInfo represents a grid which contains one or more
+	     * cartesian and one or more axes. And consider the case of parallel system,
+	     * which has multiple axes in a coordinate system.
+	     * Can be {
+	     *     panelId: ...,
+	     *     coordSys: <a representitive cartesian in grid (first cartesian by default)>,
+	     *     coordSyses: all cartesians.
+	     *     gridModel: <grid component>
+	     *     xAxes: correspond to coordSyses on index
+	     *     yAxes: correspond to coordSyses on index
+	     * }
+	     * or {
+	     *     panelId: ...,
+	     *     coordSys: <geo coord sys>
+	     *     coordSyses: [<geo coord sys>]
+	     *     geoModel: <geo component>
+	     * }
+	     *
+	     *
+	     * [panelOpt]:
+	     *
+	     * Make from targetInfo. Input to BrushController.
+	     * {
+	     *     panelId: ...,
+	     *     rect: ...
+	     * }
+	     *
+	     *
+	     * [area]:
+	     *
+	     * Generated by BrushController or user input.
+	     * {
+	     *     panelId: Used to locate coordInfo directly. If user inpput, no panelId.
+	     *     brushType: determine how to convert to/from coord('rect' or 'polygon' or 'lineX/Y').
+	     *     Index/Id/Name of geo, xAxis, yAxis, grid: See util/model#parseFinder.
+	     *     range: pixel range.
+	     *     coordRange: representitive coord range (the first one of coordRanges).
+	     *     coordRanges: <Array> coord ranges, used in multiple cartesian in one grid.
+	     * }
+	     */
 
-	                area[panelId[0] + 'Index'] = +panelId[1];
+	    /**
+	     * @param {Object} option contains Index/Id/Name of xAxis/yAxis/geo/grid
+	     *        Each can be {number|Array.<number>}. like: {xAxisIndex: [3, 4]}
+	     * @param {module:echarts/model/Global} ecModel
+	     * @param {Object} [opt]
+	     * @param {Array.<string>} [opt.include] include coordinate system types.
+	     */
+	    function BrushTargetManager(option, ecModel, opt) {
+	        /**
+	         * @private
+	         * @type {Array.<Object>}
+	         */
+	        var targetInfoList = this._targetInfoList = [];
+	        var info = {};
+	        var foundCpts = parseFinder(ecModel, option);
 
-	                var coordInfo = findCoordInfo(area, coordInfoList);
-	                area.coordRange = coordConvert[area.brushType](
-	                    1, coordInfo, area.range
-	                );
-	                rangesCoordInfo && (rangesCoordInfo[index] = coordInfo);
+	        each(targetInfoBuilders, function (builder, type) {
+	            if (!opt || !opt.include || indexOf(opt.include, type) >= 0) {
+	                builder(foundCpts, targetInfoList, info);
+	            }
+	        });
+	    }
+
+	    var proto = BrushTargetManager.prototype;
+
+	    proto.setOutputRanges = function (areas, ecModel) {
+	        this.matchOutputRanges(areas, ecModel, function (area, coordRange, coordSys) {
+	            (area.coordRanges || (area.coordRanges = [])).push(coordRange);
+	            // area.coordRange is the first of area.coordRanges
+	            if (!area.coordRange) {
+	                area.coordRange = coordRange;
+	                // In 'category' axis, coord to pixel is not reversible, so we can not
+	                // rebuild range by coordRange accrately, which may bring trouble when
+	                // brushing only one item. So we use __rangeOffset to rebuilding range
+	                // by coordRange. And this it only used in brush component so it is no
+	                // need to be adapted to coordRanges.
+	                var result = coordConvert[area.brushType](0, coordSys, coordRange);
+	                area.__rangeOffset = {
+	                    offset: diffProcessor[area.brushType](result.values, area.range, [1, 1]),
+	                    xyMinMax: result.xyMinMax
+	                };
 	            }
 	        });
 	    };
 
-	    helper.parseInputRanges = function (brushModel, ecModel) {
-	        each(brushModel.areas, function (area) {
-	            var coordInfo = findCoordInfo(area, brushModel.coordInfoList);
+	    proto.matchOutputRanges = function (areas, ecModel, cb) {
+	        each(areas, function (area) {
+	            var targetInfo = this.findTargetInfo(area, ecModel);
+
+	            if (targetInfo && targetInfo !== true) {
+	                zrUtil.each(
+	                    targetInfo.coordSyses,
+	                    function (coordSys) {
+	                        var result = coordConvert[area.brushType](1, coordSys, area.range);
+	                        cb(area, result.values, coordSys, ecModel);
+	                    }
+	                );
+	            }
+	        }, this);
+	    };
+
+	    proto.setInputRanges = function (areas, ecModel) {
+	        each(areas, function (area) {
+	            var targetInfo = this.findTargetInfo(area, ecModel);
 
 	            if (true) {
 	                zrUtil.assert(
-	                    !coordInfo || coordInfo === true || area.coordRange,
+	                    !targetInfo || targetInfo === true || area.coordRange,
 	                    'coordRange must be specified when coord index specified.'
 	                );
 	                zrUtil.assert(
-	                    !coordInfo || coordInfo !== true || area.range,
-	                    'range must be specified.'
+	                    !targetInfo || targetInfo !== true || area.range,
+	                    'range must be specified in global brush.'
 	                );
 	            }
 
 	            area.range = area.range || [];
 
 	            // convert coordRange to global range and set panelId.
-	            if (coordInfo && coordInfo !== true) {
-	                area.range = coordConvert[area.brushType](
-	                    0, coordInfo, area.coordRange
-	                );
-	                area.panelId = coordInfo.panelId;
+	            if (targetInfo && targetInfo !== true) {
+	                area.panelId = targetInfo.panelId;
+	                // (1) area.range shoule always be calculate from coordRange but does
+	                // not keep its original value, for the sake of the dataZoom scenario,
+	                // where area.coordRange remains unchanged but area.range may be changed.
+	                // (2) Only support converting one coordRange to pixel range in brush
+	                // component. So do not consider `coordRanges`.
+	                // (3) About __rangeOffset, see comment above.
+	                var result = coordConvert[area.brushType](0, targetInfo.coordSys, area.coordRange);
+	                var rangeOffset = area.__rangeOffset;
+	                area.range = rangeOffset
+	                    ? diffProcessor[area.brushType](
+	                        result.values,
+	                        rangeOffset.offset,
+	                        getScales(result.xyMinMax, rangeOffset.xyMinMax)
+	                    )
+	                    : result.values;
 	            }
+	        }, this);
+	    };
+
+	    proto.makePanelOpts = function (getDefaultBrushType) {
+	        return zrUtil.map(this._targetInfoList, function (targetInfo) {
+	            return {
+	                panelId: targetInfo.panelId,
+	                rect: targetInfo.getPanelRect(),
+	                defaultBrushType: getDefaultBrushType && getDefaultBrushType(targetInfo)
+	            };
 	        });
 	    };
 
-	    helper.makePanelOpts = function (coordInfoList) {
-	        var panelOpts = [];
-
-	        each(coordInfoList, function (coordInfo) {
-	            var coordSys = coordInfo.coordSys;
-	            var rect;
-
-	            if (coordInfo.geoIndex >= 0) {
-	                rect = coordSys.getBoundingRect().clone();
-	                // geo roam and zoom transform
-	                rect.applyTransform(graphic.getTransform(coordSys));
-	            }
-	            else { // xAxis or yAxis
-	                // grid is not Transformable.
-	                rect = coordSys.grid.getRect().clone();
-	            }
-
-	            panelOpts.push({panelId: coordInfo.panelId, rect: rect});
-	        });
-
-	        return panelOpts;
+	    proto.controlSeries = function (area, seriesModel, ecModel) {
+	        // Check whether area is bound in coord, and series do not belong to that coord.
+	        // If do not do this check, some brush (like lineX) will controll all axes.
+	        var targetInfo = this.findTargetInfo(area, ecModel);
+	        return targetInfo === true || (
+	            targetInfo && indexOf(targetInfo.coordSyses, seriesModel.coordinateSystem) >= 0
+	        );
 	    };
 
 	    /**
-	     * @param {Object} option {xAxisIndex, yAxisIndex, geoIndex}
-	     * @param {module:echarts/model/Global} ecModel
-	     * @return {Array.<Obejct>} coordInfoList
+	     * If return Object, a coord found.
+	     * If reutrn true, global found.
+	     * Otherwise nothing found.
+	     *
+	     * @param {Object} area
+	     * @param {Array} targetInfoList
+	     * @return {Obejct|boolean}
 	     */
-	    helper.makeCoordInfoList = function (option, ecModel) {
-	        var coordInfoList = [];
+	    proto.findTargetInfo = function (area, ecModel) {
+	        var targetInfoList = this._targetInfoList;
+	        var foundCpts = parseFinder(ecModel, area);
 
-	        each(COMPONENT_NAMES, function (componentName) {
-	            var componentIndices = option[componentName + 'Index'];
-	            if (componentIndices == null || componentIndices === 'none') {
-	                return;
-	            }
-	            if (componentIndices !== 'all' && !zrUtil.isArray(componentIndices)) {
-	                componentIndices = [componentIndices];
-	            }
-
-	            ecModel.eachComponent({mainType: componentName}, function (componentModel, index) {
-	                if (componentIndices !== 'all' && zrUtil.indexOf(componentIndices, index) < 0) {
-	                    return;
+	        for (var i = 0; i < targetInfoList.length; i++) {
+	            var targetInfo = targetInfoList[i];
+	            var areaPanelId = area.panelId;
+	            if (areaPanelId) {
+	                if (targetInfo.panelId === areaPanelId) {
+	                    return targetInfo;
 	                }
-
-	                var grid;
-	                var coordSys;
-
-	                (componentName === 'xAxis' || componentName === 'yAxis')
-	                    ? (grid = componentModel.axis.grid)
-	                    : (coordSys = componentModel.coordinateSystem); // geo
-
-	                var coordInfo;
-
-	                // Check duplicate and find cartesian when tranval to yAxis.
-	                for (var i = 0, len = coordInfoList.length; i < len; i++) {
-	                    var cInfo = coordInfoList[i];
-	                    if (true) {
-	                        zrUtil.assert(
-	                            cInfo[componentName + 'Index'] != index,
-	                            'Coord should not be defined duplicately: ' + componentName + index
-	                        );
-	                    }
-	                    // CoordSys is always required for `rect brush` or `polygon brush`.
-	                    // If both xAxisIndex and yAxisIndex specified, fetch cartesian by them.
-	                    if (componentName === 'yAxis' && !cInfo.yAxis && cInfo.xAxis) {
-	                        var aCoordSys = grid.getCartesian(cInfo.xAxisIndex, index);
-	                        if (aCoordSys) { // The yAxis and xAxis are in the same cartesian.
-	                            coordSys = aCoordSys;
-	                            coordInfo = cInfo;
-	                            break;
-	                        }
+	            }
+	            else {
+	                for (var i = 0; i < targetInfoMatchers.length; i++) {
+	                    if (targetInfoMatchers[i](foundCpts, targetInfo)) {
+	                        return targetInfo;
 	                    }
 	                }
+	            }
+	        }
 
-	                !coordInfo && coordInfoList.push(coordInfo = {});
-
-	                coordInfo[componentName] = componentModel;
-	                coordInfo[componentName + 'Index'] = index;
-	                // If both xAxisIndex and yAxisIndex specified, panelId only use yAxisIndex,
-	                // which is enough to index panel.
-	                coordInfo.panelId = componentName + PANEL_ID_SPLIT + index;
-	                coordInfo.coordSys = coordSys
-	                    // If only xAxisIndex or only yAxisIndex specified, find its first cartesian.
-	                    || grid.getCartesian(coordInfo.xAxisIndex, coordInfo.yAxisIndex);
-
-	                coordInfo.coordSys
-	                    ? (coordInfoList[componentName + 'Has'] = true)
-	                    : coordInfoList.pop(); // If a coordInfo exists originally, existance of coordSys is ensured.
-	            });
-	        });
-
-	        return coordInfoList;
-	    };
-
-	    helper.controlSeries = function (area, brushModel, seriesModel) {
-	        // Check whether area is bound in coord, and series do not belong to that coord.
-	        // If do not do this check, some brush (like lineX) will controll all axes.
-	        var coordInfo = findCoordInfo(area, brushModel.coordInfoList);
-	        return coordInfo === true || (coordInfo && coordInfo.coordSys === seriesModel.coordinateSystem);
+	        return true;
 	    };
 
 	    function formatMinMax(minMax) {
@@ -36492,77 +38798,221 @@
 	        return minMax;
 	    }
 
-	    /**
-	     * If return Object, a coord found.
-	     * If reutrn true, global found.
-	     * Otherwise nothing found.
-	     *
-	     * @param {Object} area {<componentName>Index}
-	     * @param {Array} coordInfoList
-	     * @return {Obejct|boolean}
-	     */
-	    function findCoordInfo(area, coordInfoList) {
-	        var isGlobal = true;
-	        for (var j = 0; j < COMPONENT_NAMES.length; j++) {
-	            var indexAttr = COMPONENT_NAMES[j] + 'Index';
-	            if (area[indexAttr] >= 0) {
-	                isGlobal = false;
-	                for (var i = 0; i < coordInfoList.length; i++) {
-	                    if (coordInfoList[i][indexAttr] === area[indexAttr]) {
-	                        return coordInfoList[i];
-	                    }
-	                }
+	    function parseFinder(ecModel, option) {
+	        return modelUtil.parseFinder(
+	            ecModel, option, {includeMainTypes: INCLUDE_FINDER_MAIN_TYPES}
+	        );
+	    }
+
+	    var targetInfoBuilders = {
+
+	        grid: function (foundCpts, targetInfoList) {
+	            var xAxisModels = foundCpts.xAxisModels;
+	            var yAxisModels = foundCpts.yAxisModels;
+	            var gridModels = foundCpts.gridModels;
+	            // Remove duplicated.
+	            var gridModelMap = {};
+	            var xAxesHas = {};
+	            var yAxesHas = {};
+
+	            if (!xAxisModels && !yAxisModels && !gridModels) {
+	                return;
 	            }
-	        }
-	        return isGlobal;
-	    }
 
-	    function axisConvert(axisName, to, coordInfo, coordRange) {
-	        var axis = coordInfo.coordSys.getAxis(axisName);
+	            each(xAxisModels, function (axisModel) {
+	                var gridModel = axisModel.axis.grid.model;
+	                gridModelMap[gridModel.id] = gridModel;
+	                xAxesHas[gridModel.id] = true;
+	            });
+	            each(yAxisModels, function (axisModel) {
+	                var gridModel = axisModel.axis.grid.model;
+	                gridModelMap[gridModel.id] = gridModel;
+	                yAxesHas[gridModel.id] = true;
+	            });
+	            each(gridModels, function (gridModel) {
+	                gridModelMap[gridModel.id] = gridModel;
+	                xAxesHas[gridModel.id] = true;
+	                yAxesHas[gridModel.id] = true;
+	            });
 
-	        if (true) {
-	            zrUtil.assert(axis, 'line brush is only available in cartesian (grid).');
-	        }
+	            each(gridModelMap, function (gridModel) {
+	                var grid = gridModel.coordinateSystem;
+	                var cartesians = [];
 
-	        return formatMinMax(zrUtil.map([0, 1], function (i) {
-	            return to
-	                ? axis.coordToData(axis.toLocalCoord(coordRange[i]))
-	                : axis.toGlobalCoord(axis.dataToCoord(coordRange[i]));
-	        }));
-	    }
-
-	    var coordConvert = {
-
-	        lineX: zrUtil.curry(axisConvert, 'x'),
-
-	        lineY: zrUtil.curry(axisConvert, 'y'),
-
-	        rect: function (to, coordInfo, coordRange) {
-	            var coordSys = coordInfo.coordSys;
-	            var xminymin = coordSys[COORD_CONVERTS[to]]([coordRange[0][0], coordRange[1][0]]);
-	            var xmaxymax = coordSys[COORD_CONVERTS[to]]([coordRange[0][1], coordRange[1][1]]);
-	            return [
-	                formatMinMax([xminymin[0], xmaxymax[0]]),
-	                formatMinMax([xminymin[1], xmaxymax[1]])
-	            ];
+	                each(grid.getCartesians(), function (cartesian, index) {
+	                    if (indexOf(xAxisModels, cartesian.getAxis('x').model) >= 0
+	                        || indexOf(yAxisModels, cartesian.getAxis('y').model) >= 0
+	                    ) {
+	                        cartesians.push(cartesian);
+	                    }
+	                });
+	                targetInfoList.push({
+	                    panelId: 'grid--' + gridModel.id,
+	                    gridModel: gridModel,
+	                    // Use the first one as the representitive coordSys.
+	                    coordSys: cartesians[0],
+	                    coordSyses: cartesians,
+	                    getPanelRect: panelRectBuilder.grid,
+	                    xAxisDeclared: xAxesHas[gridModel.id],
+	                    yAxisDeclared: yAxesHas[gridModel.id]
+	                });
+	            });
 	        },
 
-	        polygon: function (to, coordInfo, coordRange) {
-	            var coordSys = coordInfo.coordSys;
-	            return zrUtil.map(coordRange, coordSys[COORD_CONVERTS[to]], coordSys);
+	        geo: function (foundCpts, targetInfoList) {
+	            each(foundCpts.geoModels, function (geoModel) {
+	                var coordSys = geoModel.coordinateSystem;
+	                targetInfoList.push({
+	                    panelId: 'geo--' + geoModel.id,
+	                    geoModel: geoModel,
+	                    coordSys: coordSys,
+	                    coordSyses: [coordSys],
+	                    getPanelRect: panelRectBuilder.geo
+	                });
+	            });
 	        }
 	    };
 
-	    module.exports = helper;
+	    var targetInfoMatchers = [
 
+	        // grid
+	        function (foundCpts, targetInfo) {
+	            var xAxisModel = foundCpts.xAxisModel;
+	            var yAxisModel = foundCpts.yAxisModel;
+	            var gridModel = foundCpts.gridModel;
+
+	            !gridModel && xAxisModel && (gridModel = xAxisModel.axis.grid.model);
+	            !gridModel && yAxisModel && (gridModel = yAxisModel.axis.grid.model);
+
+	            return gridModel && gridModel === targetInfo.gridModel;
+	        },
+
+	        // geo
+	        function (foundCpts, targetInfo) {
+	            var geoModel = foundCpts.geoModel;
+	            return geoModel && geoModel === targetInfo.geoModel;
+	        }
+	    ];
+
+	    var panelRectBuilder = {
+
+	        grid: function () {
+	            // grid is not Transformable.
+	            return this.coordSys.grid.getRect().clone();
+	        },
+
+	        geo: function () {
+	            var coordSys = this.coordSys;
+	            var rect = coordSys.getBoundingRect().clone();
+	            // geo roam and zoom transform
+	            rect.applyTransform(graphic.getTransform(coordSys));
+	            return rect;
+	        }
+	    };
+
+	    var coordConvert = {
+
+	        lineX: curry(axisConvert, 0),
+
+	        lineY: curry(axisConvert, 1),
+
+	        rect: function (to, coordSys, rangeOrCoordRange) {
+	            var xminymin = coordSys[COORD_CONVERTS[to]]([rangeOrCoordRange[0][0], rangeOrCoordRange[1][0]]);
+	            var xmaxymax = coordSys[COORD_CONVERTS[to]]([rangeOrCoordRange[0][1], rangeOrCoordRange[1][1]]);
+	            var values = [
+	                formatMinMax([xminymin[0], xmaxymax[0]]),
+	                formatMinMax([xminymin[1], xmaxymax[1]])
+	            ];
+	            return {values: values, xyMinMax: values};
+	        },
+
+	        polygon: function (to, coordSys, rangeOrCoordRange) {
+	            var xyMinMax = [[Infinity, -Infinity], [Infinity, -Infinity]];
+	            var values = zrUtil.map(rangeOrCoordRange, function (item) {
+	                var p = coordSys[COORD_CONVERTS[to]](item);
+	                xyMinMax[0][0] = Math.min(xyMinMax[0][0], p[0]);
+	                xyMinMax[1][0] = Math.min(xyMinMax[1][0], p[1]);
+	                xyMinMax[0][1] = Math.max(xyMinMax[0][1], p[0]);
+	                xyMinMax[1][1] = Math.max(xyMinMax[1][1], p[1]);
+	                return p;
+	            });
+	            return {values: values, xyMinMax: xyMinMax};
+	        }
+	    };
+
+	    function axisConvert(axisNameIndex, to, coordSys, rangeOrCoordRange) {
+	        if (true) {
+	            zrUtil.assert(
+	                coordSys.type === 'cartesian2d',
+	                'lineX/lineY brush is available only in cartesian2d.'
+	            );
+	        }
+
+	        var axis = coordSys.getAxis(['x', 'y'][axisNameIndex]);
+	        var values = formatMinMax(zrUtil.map([0, 1], function (i) {
+	            return to
+	                ? axis.coordToData(axis.toLocalCoord(rangeOrCoordRange[i]))
+	                : axis.toGlobalCoord(axis.dataToCoord(rangeOrCoordRange[i]));
+	        }));
+	        var xyMinMax = [];
+	        xyMinMax[axisNameIndex] = values;
+	        xyMinMax[1 - axisNameIndex] = [NaN, NaN];
+
+	        return {values: values, xyMinMax: xyMinMax};
+	    }
+
+	    var diffProcessor = {
+	        lineX: curry(axisDiffProcessor, 0),
+
+	        lineY: curry(axisDiffProcessor, 1),
+
+	        rect: function (values, refer, scales) {
+	            return [
+	                [values[0][0] - scales[0] * refer[0][0], values[0][1] - scales[0] * refer[0][1]],
+	                [values[1][0] - scales[1] * refer[1][0], values[1][1] - scales[1] * refer[1][1]]
+	            ];
+	        },
+
+	        polygon: function (values, refer, scales) {
+	            return zrUtil.map(values, function (item, idx) {
+	                return [item[0] - scales[0] * refer[idx][0], item[1] - scales[1] * refer[idx][1]];
+	            });
+	        }
+	    };
+
+	    function axisDiffProcessor(axisNameIndex, values, refer, scales) {
+	        return [
+	            values[0] - scales[axisNameIndex] * refer[0],
+	            values[1] - scales[axisNameIndex] * refer[1]
+	        ];
+	    }
+
+	    // We have to process scale caused by dataZoom manually,
+	    // although it might be not accurate.
+	    function getScales(xyMinMaxCurr, xyMinMaxOrigin) {
+	        var sizeCurr = getSize(xyMinMaxCurr);
+	        var sizeOrigin = getSize(xyMinMaxOrigin);
+	        var scales = [sizeCurr[0] / sizeOrigin[0], sizeCurr[1] / sizeOrigin[1]];
+	        isNaN(scales[0]) && (scales[0] = 1);
+	        isNaN(scales[1]) && (scales[1] = 1);
+	        return scales;
+	    }
+
+	    function getSize(xyMinMax) {
+	        return xyMinMax
+	            ? [xyMinMax[0][1] - xyMinMax[0][0], xyMinMax[1][1] - xyMinMax[1][0]]
+	            : [NaN, NaN];
+	    }
+
+	    module.exports = BrushTargetManager;
 
 
 /***/ },
-/* 323 */,
-/* 324 */,
-/* 325 */,
-/* 326 */,
-/* 327 */
+/* 340 */,
+/* 341 */,
+/* 342 */,
+/* 343 */,
+/* 344 */
 /***/ function(module, exports) {
 
 	'use strict';
@@ -36582,14 +39032,18 @@
 
 
 /***/ },
-/* 328 */
+/* 345 */,
+/* 346 */,
+/* 347 */,
+/* 348 */,
+/* 349 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
 
 
 	    var echarts = __webpack_require__(1);
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 	    var layout = __webpack_require__(21);
 
 	    // Model
@@ -36796,7 +39250,7 @@
 
 
 /***/ },
-/* 329 */
+/* 350 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -36804,24 +39258,24 @@
 	 */
 
 
-	    __webpack_require__(330);
+	    __webpack_require__(351);
 
-	    __webpack_require__(331);
-	    __webpack_require__(334);
+	    __webpack_require__(352);
+	    __webpack_require__(355);
 
-	    __webpack_require__(335);
-	    __webpack_require__(336);
+	    __webpack_require__(356);
+	    __webpack_require__(357);
 
-	    __webpack_require__(338);
-	    __webpack_require__(339);
+	    __webpack_require__(359);
+	    __webpack_require__(360);
 
-	    __webpack_require__(341);
-	    __webpack_require__(342);
+	    __webpack_require__(362);
+	    __webpack_require__(363);
 
 
 
 /***/ },
-/* 330 */
+/* 351 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -36834,7 +39288,7 @@
 
 
 /***/ },
-/* 331 */
+/* 352 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -36846,8 +39300,8 @@
 	    var env = __webpack_require__(2);
 	    var echarts = __webpack_require__(1);
 	    var modelUtil = __webpack_require__(5);
-	    var helper = __webpack_require__(332);
-	    var AxisProxy = __webpack_require__(333);
+	    var helper = __webpack_require__(353);
+	    var AxisProxy = __webpack_require__(354);
 	    var each = zrUtil.each;
 	    var eachAxisDim = helper.eachAxisDim;
 
@@ -36922,6 +39376,12 @@
 	             */
 	            this._autoThrottle = true;
 
+	            /**
+	             * 'percent' or 'value'
+	             * @private
+	             */
+	            this._rangePropMode = ['percent', 'percent'];
+
 	            var rawOption = retrieveRaw(option);
 
 	            this.mergeDefaultAndTheme(option, ecModel);
@@ -36954,8 +39414,17 @@
 
 	            this._setDefaultThrottle(rawOption);
 
-	            processRangeProp('start', 'startValue', rawOption, thisOption);
-	            processRangeProp('end', 'endValue', rawOption, thisOption);
+	            updateRangeUse(this, rawOption);
+
+	            each([['start', 'startValue'], ['end', 'endValue']], function (names, index) {
+	                // start/end has higher priority over startValue/endValue if they
+	                // both set, but we should make chart.setOption({endValue: 1000})
+	                // effective, rather than chart.setOption({endValue: 1000, end: null}).
+	                if (this._rangePropMode[index] === 'value') {
+	                    thisOption[names[0]] = null;
+	                }
+	                // Otherwise do nothing and use the merge result.
+	            }, this);
 
 	            this.textStyleModel = this.getModel('textStyle');
 
@@ -37219,11 +39688,26 @@
 	            }, this);
 	        },
 
+	        /**
+	         * @param {string} dimName
+	         * @param {number} axisIndex
+	         * @return {module:echarts/component/dataZoom/AxisProxy} If not found, return null/undefined.
+	         */
 	        getAxisProxy: function (dimName, axisIndex) {
 	            return this._axisProxies[dimName + '_' + axisIndex];
 	        },
 
 	        /**
+	         * @param {string} dimName
+	         * @param {number} axisIndex
+	         * @return {module:echarts/model/Model} If not found, return null/undefined.
+	         */
+	        getAxisModel: function (dimName, axisIndex) {
+	            var axisProxy = this.getAxisProxy(dimName, axisIndex);
+	            return axisProxy && axisProxy.getAxisModel();
+	        },
+
+	        /**
 	         * If not specified, set to undefined.
 	         *
 	         * @public
@@ -37232,14 +39716,17 @@
 	         * @param {number} [opt.end]
 	         * @param {number} [opt.startValue]
 	         * @param {number} [opt.endValue]
+	         * @param {boolean} [ignoreUpdateRangeUsg=false]
 	         */
-	        setRawRange: function (opt) {
+	        setRawRange: function (opt, ignoreUpdateRangeUsg) {
 	            each(['start', 'end', 'startValue', 'endValue'], function (name) {
 	                // If any of those prop is null/undefined, we should alos set
 	                // them, because only one pair between start/end and
 	                // startValue/endValue can work.
 	                this.option[name] = opt[name];
 	            }, this);
+
+	            !ignoreUpdateRangeUsg && updateRangeUse(this, opt);
 	        },
 
 	        /**
@@ -37296,8 +39783,14 @@
 	                    return axisProxies[key];
 	                }
 	            }
-	        }
+	        },
 
+	        /**
+	         * @return {Array.<string>}
+	         */
+	        getRangePropMode: function () {
+	            return this._rangePropMode.slice();
+	        }
 	    });
 
 	    function retrieveRaw(option) {
@@ -37311,14 +39804,17 @@
 	        return ret;
 	    }
 
-	    function processRangeProp(percentProp, valueProp, rawOption, thisOption) {
-	        // start/end has higher priority over startValue/endValue,
-	        // but we should make chart.setOption({endValue: 1000}) effective,
-	        // rather than chart.setOption({endValue: 1000, end: null}).
-	        if (rawOption[valueProp] != null && rawOption[percentProp] == null) {
-	            thisOption[percentProp] = null;
-	        }
-	        // Otherwise do nothing and use the merge result.
+	    function updateRangeUse(dataZoomModel, rawOption) {
+	        each([['start', 'startValue'], ['end', 'endValue']], function (names, index) {
+	            var rangePropMode = dataZoomModel._rangePropMode;
+	            if (rawOption[names[0]] != null) {
+	                rangePropMode[index] = 'percent';
+	            }
+	            else if (rawOption[names[1]] != null) {
+	                rangePropMode[index] = 'value';
+	            }
+	            // else remain its original setting.
+	        });
 	    }
 
 	    module.exports = DataZoomModel;
@@ -37326,7 +39822,7 @@
 
 
 /***/ },
-/* 332 */
+/* 353 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -37464,7 +39960,7 @@
 
 
 /***/ },
-/* 333 */
+/* 354 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -37474,7 +39970,7 @@
 
 	    var zrUtil = __webpack_require__(4);
 	    var numberUtil = __webpack_require__(7);
-	    var helper = __webpack_require__(332);
+	    var helper = __webpack_require__(353);
 	    var each = zrUtil.each;
 	    var asc = numberUtil.asc;
 
@@ -37629,6 +40125,7 @@
 	            var dataExtent = this._dataExtent;
 	            var axisModel = this.getAxisModel();
 	            var scale = axisModel.axis.scale;
+	            var rangePropMode = this._dataZoomModel.getRangePropMode();
 	            var percentExtent = [0, 100];
 	            var percentWindow = [
 	                opt.start,
@@ -37636,12 +40133,6 @@
 	            ];
 	            var valueWindow = [];
 
-	            // In percent range is used and axis min/max/scale is set,
-	            // window should be based on min/max/0, but should not be
-	            // based on the extent of filtered data.
-	            dataExtent = dataExtent.slice();
-	            fixExtentByAxis(dataExtent, axisModel);
-
 	            each(['startValue', 'endValue'], function (prop) {
 	                valueWindow.push(opt[prop] != null ? scale.parse(opt[prop]) : null);
 	            });
@@ -37651,11 +40142,19 @@
 	                var boundValue = valueWindow[idx];
 	                var boundPercent = percentWindow[idx];
 
-	                // start/end has higher priority over startValue/endValue,
-	                // because start/end can be consistent among different type
-	                // of axis but startValue/endValue not.
+	                // Notice: dataZoom is based either on `percentProp` ('start', 'end') or
+	                // on `valueProp` ('startValue', 'endValue'). The former one is suitable
+	                // for cases that a dataZoom component controls multiple axes with different
+	                // unit or extent, and the latter one is suitable for accurate zoom by pixel
+	                // (e.g., in dataZoomSelect). `valueProp` can be calculated from `percentProp`,
+	                // but it is awkward that `percentProp` can not be obtained from `valueProp`
+	                // accurately (because all of values that are overflow the `dataExtent` will
+	                // be calculated to percent '100%'). So we have to use
+	                // `dataZoom.getRangePropMode()` to mark which prop is used.
+	                // `rangePropMode` is updated only when setOption or dispatchAction, otherwise
+	                // it remains its original value.
 
-	                if (boundPercent != null || boundValue == null) {
+	                if (rangePropMode[idx] === 'percent') {
 	                    if (boundPercent == null) {
 	                        boundPercent = percentExtent[idx];
 	                    }
@@ -37664,11 +40163,15 @@
 	                        boundPercent, percentExtent, dataExtent, true
 	                    ));
 	                }
-	                else { // boundPercent == null && boundValue != null
+	                else {
+	                    // Calculating `percent` from `value` may be not accurate, because
+	                    // This calculation can not be inversed, because all of values that
+	                    // are overflow the `dataExtent` will be calculated to percent '100%'
 	                    boundPercent = numberUtil.linearMap(
 	                        boundValue, dataExtent, percentExtent, true
 	                    );
 	                }
+
 	                // valueWindow[idx] = round(boundValue);
 	                // percentWindow[idx] = round(boundPercent);
 	                valueWindow[idx] = boundValue;
@@ -37695,9 +40198,11 @@
 
 	            // Culculate data window and data extent, and record them.
 	            this._dataExtent = calculateDataExtent(
-	                this._dimName, this.getTargetSeriesModels()
+	                this, this._dimName, this.getTargetSeriesModels()
 	            );
+
 	            var dataWindow = this.calculateDataWindow(dataZoomModel.option);
+
 	            this._valueWindow = dataWindow.valueWindow;
 	            this._percentWindow = dataWindow.percentWindow;
 
@@ -37770,7 +40275,7 @@
 	        }
 	    };
 
-	    function calculateDataExtent(axisDim, seriesModels) {
+	    function calculateDataExtent(axisProxy, axisDim, seriesModels) {
 	        var dataExtent = [Infinity, -Infinity];
 
 	        each(seriesModels, function (seriesModel) {
@@ -37782,30 +40287,60 @@
 	                    seriesExtent[1] > dataExtent[1] && (dataExtent[1] = seriesExtent[1]);
 	                });
 	            }
-	        }, this);
+	        });
 
 	        if (dataExtent[1] < dataExtent[0]) {
 	            dataExtent = [NaN, NaN];
 	        }
 
+	        // It is important to get "consistent" extent when more then one axes is
+	        // controlled by a `dataZoom`, otherwise those axes will not be synchronized
+	        // when zooming. But it is difficult to know what is "consistent", considering
+	        // axes have different type or even different meanings (For example, two
+	        // time axes are used to compare data of the same date in different years).
+	        // So basically dataZoom just obtains extent by series.data (in category axis
+	        // extent can be obtained from axis.data).
+	        // Nevertheless, user can set min/max/scale on axes to make extent of axes
+	        // consistent.
+	        fixExtentByAxis(axisProxy, dataExtent);
+
 	        return dataExtent;
 	    }
 
-	    function fixExtentByAxis(dataExtent, axisModel) {
+	    function fixExtentByAxis(axisProxy, dataExtent) {
+	        var axisModel = axisProxy.getAxisModel();
 	        var min = axisModel.getMin(true);
+
+	        // For category axis, if min/max/scale are not set, extent is determined
+	        // by axis.data by default.
+	        var isCategoryAxis = axisModel.get('type') === 'category';
+	        var axisDataLen = isCategoryAxis && (axisModel.get('data') || []).length;
+
 	        if (min != null && min !== 'dataMin') {
 	            dataExtent[0] = min;
 	        }
+	        else if (isCategoryAxis) {
+	            dataExtent[0] = axisDataLen > 0 ? 0 : NaN;
+	        }
+
 	        var max = axisModel.getMax(true);
 	        if (max != null && max !== 'dataMax') {
 	            dataExtent[1] = max;
 	        }
+	        else if (isCategoryAxis) {
+	            dataExtent[1] = axisDataLen > 0 ? axisDataLen - 1 : NaN;
+	        }
 
 	        if (!axisModel.get('scale', true)) {
 	            dataExtent[0] > 0 && (dataExtent[0] = 0);
 	            dataExtent[1] < 0 && (dataExtent[1] = 0);
 	        }
 
+	        // For value axis, if min/max/scale are not set, we just use the extent obtained
+	        // by series data, which may be a little different from the extent calculated by
+	        // `axisHelper.getScaleExtent`. But the different just affects the experience a
+	        // little when zooming. So it will not be fixed until some users require it strongly.
+
 	        return dataExtent;
 	    }
 
@@ -37835,7 +40370,7 @@
 
 
 /***/ },
-/* 334 */
+/* 355 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -37912,7 +40447,7 @@
 
 
 /***/ },
-/* 335 */
+/* 356 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -37920,7 +40455,7 @@
 	 */
 
 
-	    var DataZoomModel = __webpack_require__(331);
+	    var DataZoomModel = __webpack_require__(352);
 
 	    var SliderZoomModel = DataZoomModel.extend({
 
@@ -37991,20 +40526,22 @@
 
 
 /***/ },
-/* 336 */
+/* 357 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    var zrUtil = __webpack_require__(4);
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 	    var throttle = __webpack_require__(81);
-	    var DataZoomView = __webpack_require__(334);
+	    var DataZoomView = __webpack_require__(355);
 	    var Rect = graphic.Rect;
 	    var numberUtil = __webpack_require__(7);
 	    var linearMap = numberUtil.linearMap;
 	    var layout = __webpack_require__(21);
-	    var sliderMove = __webpack_require__(337);
+	    var sliderMove = __webpack_require__(358);
+	    var eventTool = __webpack_require__(88);
+
 	    var asc = numberUtil.asc;
 	    var bind = zrUtil.bind;
 	    // var mathMax = Math.max;
@@ -38411,6 +40948,10 @@
 	                draggable: true,
 	                cursor: 'move',
 	                drift: bind(this._onDragMove, this, 'all'),
+	                onmousemove: function (e) {
+	                    // Fot mobile devicem, prevent screen slider on the button.
+	                    eventTool.stop(e.event);
+	                },
 	                ondragstart: bind(this._showDataInfo, this, true),
 	                ondragend: bind(this._onDragEnd, this),
 	                onmouseover: bind(this._showDataInfo, this, true),
@@ -38448,6 +40989,10 @@
 	                    cursor: this._orient === 'vertical' ? 'ns-resize' : 'ew-resize',
 	                    draggable: true,
 	                    drift: bind(this._onDragMove, this, handleIndex),
+	                    onmousemove: function (e) {
+	                        // Fot mobile devicem, prevent screen slider on the button.
+	                        eventTool.stop(e.event);
+	                    },
 	                    ondragend: bind(this._onDragEnd, this),
 	                    onmouseover: bind(this._showDataInfo, this, true),
 	                    onmouseout: bind(this._showDataInfo, this, false)
@@ -38751,7 +41296,7 @@
 
 
 /***/ },
-/* 337 */
+/* 358 */
 /***/ function(module, exports) {
 
 	
@@ -38810,7 +41355,7 @@
 
 
 /***/ },
-/* 338 */
+/* 359 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -38818,7 +41363,7 @@
 	 */
 
 
-	    module.exports = __webpack_require__(331).extend({
+	    module.exports = __webpack_require__(352).extend({
 
 	        type: 'dataZoom.inside',
 
@@ -38833,15 +41378,15 @@
 
 
 /***/ },
-/* 339 */
+/* 360 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var DataZoomView = __webpack_require__(334);
+	    var DataZoomView = __webpack_require__(355);
 	    var zrUtil = __webpack_require__(4);
-	    var sliderMove = __webpack_require__(337);
-	    var roams = __webpack_require__(340);
+	    var sliderMove = __webpack_require__(358);
+	    var roams = __webpack_require__(361);
 	    var bind = zrUtil.bind;
 
 	    var InsideZoomView = DataZoomView.extend({
@@ -39069,7 +41614,7 @@
 
 
 /***/ },
-/* 340 */
+/* 361 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -39084,7 +41629,7 @@
 	    // components.
 
 	    var zrUtil = __webpack_require__(4);
-	    var RoamController = __webpack_require__(177);
+	    var RoamController = __webpack_require__(191);
 	    var throttle = __webpack_require__(81);
 	    var curry = zrUtil.curry;
 
@@ -39264,7 +41809,7 @@
 
 
 /***/ },
-/* 341 */
+/* 362 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -39311,7 +41856,7 @@
 	                end: percentRange[1],
 	                startValue: valueRange[0],
 	                endValue: valueRange[1]
-	            });
+	            }, true);
 	        });
 	    });
 
@@ -39327,7 +41872,7 @@
 
 
 /***/ },
-/* 342 */
+/* 363 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -39336,7 +41881,7 @@
 
 
 	    var zrUtil = __webpack_require__(4);
-	    var helper = __webpack_require__(332);
+	    var helper = __webpack_require__(353);
 	    var echarts = __webpack_require__(1);
 
 
@@ -39375,29 +41920,29 @@
 
 
 /***/ },
-/* 343 */,
-/* 344 */,
-/* 345 */,
-/* 346 */,
-/* 347 */,
-/* 348 */,
-/* 349 */,
-/* 350 */,
-/* 351 */,
-/* 352 */,
-/* 353 */,
-/* 354 */,
-/* 355 */,
-/* 356 */,
-/* 357 */,
-/* 358 */
+/* 364 */,
+/* 365 */,
+/* 366 */,
+/* 367 */,
+/* 368 */,
+/* 369 */,
+/* 370 */,
+/* 371 */,
+/* 372 */,
+/* 373 */,
+/* 374 */,
+/* 375 */,
+/* 376 */,
+/* 377 */,
+/* 378 */,
+/* 379 */
 /***/ function(module, exports, __webpack_require__) {
 
 	// HINT Markpoint can't be used too much
 
 
-	    __webpack_require__(359);
-	    __webpack_require__(361);
+	    __webpack_require__(380);
+	    __webpack_require__(382);
 
 	    __webpack_require__(1).registerPreprocessor(function (opt) {
 	        // Make sure markPoint component is enabled
@@ -39406,12 +41951,12 @@
 
 
 /***/ },
-/* 359 */
+/* 380 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    module.exports = __webpack_require__(360).extend({
+	    module.exports = __webpack_require__(381).extend({
 
 	        type: 'markPoint',
 
@@ -39444,7 +41989,7 @@
 
 
 /***/ },
-/* 360 */
+/* 381 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -39582,18 +42127,18 @@
 
 
 /***/ },
-/* 361 */
+/* 382 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var SymbolDraw = __webpack_require__(105);
+	    var SymbolDraw = __webpack_require__(115);
 	    var zrUtil = __webpack_require__(4);
 	    var numberUtil = __webpack_require__(7);
 
 	    var List = __webpack_require__(98);
 
-	    var markerHelper = __webpack_require__(362);
+	    var markerHelper = __webpack_require__(383);
 
 	    function updateMarkerLayout(mpData, seriesModel, api) {
 	        var coordSys = seriesModel.coordinateSystem;
@@ -39631,7 +42176,7 @@
 	        });
 	    }
 
-	    __webpack_require__(363).extend({
+	    __webpack_require__(384).extend({
 
 	        type: 'markPoint',
 
@@ -39743,7 +42288,7 @@
 
 
 /***/ },
-/* 362 */
+/* 383 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -39781,7 +42326,7 @@
 	        var coordArr = [];
 	        var value = numCalculate(data, targetDataDim, mlType);
 
-	        var dataIndex = data.indexOfNearest(targetDataDim, value, true);
+	        var dataIndex = data.indexOfNearest(targetDataDim, value, true)[0];
 	        coordArr[otherCoordIndex] = data.get(otherDataDim, dataIndex, true);
 	        coordArr[targetCoordIndex] = data.get(targetDataDim, dataIndex, true);
 
@@ -39947,7 +42492,7 @@
 
 
 /***/ },
-/* 363 */
+/* 384 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -39991,13 +42536,13 @@
 
 
 /***/ },
-/* 364 */
+/* 385 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    __webpack_require__(365);
-	    __webpack_require__(366);
+	    __webpack_require__(386);
+	    __webpack_require__(387);
 
 	    __webpack_require__(1).registerPreprocessor(function (opt) {
 	        // Make sure markLine component is enabled
@@ -40006,12 +42551,12 @@
 
 
 /***/ },
-/* 365 */
+/* 386 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    module.exports = __webpack_require__(360).extend({
+	    module.exports = __webpack_require__(381).extend({
 
 	        type: 'markLine',
 
@@ -40051,7 +42596,7 @@
 
 
 /***/ },
-/* 366 */
+/* 387 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -40060,9 +42605,9 @@
 	    var List = __webpack_require__(98);
 	    var numberUtil = __webpack_require__(7);
 
-	    var markerHelper = __webpack_require__(362);
+	    var markerHelper = __webpack_require__(383);
 
-	    var LineDraw = __webpack_require__(202);
+	    var LineDraw = __webpack_require__(216);
 
 	    var markLineTransform = function (seriesModel, coordSys, mlModel, item) {
 	        var data = seriesModel.getData();
@@ -40232,7 +42777,7 @@
 	        data.setItemLayout(idx, point);
 	    }
 
-	    __webpack_require__(363).extend({
+	    __webpack_require__(384).extend({
 
 	        type: 'markLine',
 
@@ -40411,13 +42956,13 @@
 
 
 /***/ },
-/* 367 */
+/* 388 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    __webpack_require__(368);
-	    __webpack_require__(369);
+	    __webpack_require__(389);
+	    __webpack_require__(390);
 
 	    __webpack_require__(1).registerPreprocessor(function (opt) {
 	        // Make sure markArea component is enabled
@@ -40426,12 +42971,12 @@
 
 
 /***/ },
-/* 368 */
+/* 389 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    module.exports = __webpack_require__(360).extend({
+	    module.exports = __webpack_require__(381).extend({
 
 	        type: 'markArea',
 
@@ -40467,7 +43012,7 @@
 
 
 /***/ },
-/* 369 */
+/* 390 */
 /***/ function(module, exports, __webpack_require__) {
 
 	// TODO Better on polar
@@ -40476,10 +43021,10 @@
 	    var zrUtil = __webpack_require__(4);
 	    var List = __webpack_require__(98);
 	    var numberUtil = __webpack_require__(7);
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 	    var colorUtil = __webpack_require__(39);
 
-	    var markerHelper = __webpack_require__(362);
+	    var markerHelper = __webpack_require__(383);
 
 	    var markAreaTransform = function (seriesModel, coordSys, maModel, item) {
 	        var lt = markerHelper.dataTransform(seriesModel, item[0]);
@@ -40599,7 +43144,7 @@
 
 	    var dimPermutations = [['x0', 'y0'], ['x1', 'y0'], ['x1', 'y1'], ['x0', 'y1']];
 
-	    __webpack_require__(363).extend({
+	    __webpack_require__(384).extend({
 
 	        type: 'markArea',
 
@@ -40789,37 +43334,37 @@
 
 
 /***/ },
-/* 370 */,
-/* 371 */,
-/* 372 */,
-/* 373 */,
-/* 374 */,
-/* 375 */,
-/* 376 */,
-/* 377 */,
-/* 378 */,
-/* 379 */
+/* 391 */,
+/* 392 */,
+/* 393 */,
+/* 394 */,
+/* 395 */,
+/* 396 */,
+/* 397 */,
+/* 398 */,
+/* 399 */,
+/* 400 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    __webpack_require__(380);
-	    __webpack_require__(381);
+	    __webpack_require__(401);
+	    __webpack_require__(402);
 
-	    __webpack_require__(382);
-	    __webpack_require__(383);
-	    __webpack_require__(384);
-	    __webpack_require__(385);
-	    __webpack_require__(390);
+	    __webpack_require__(403);
+	    __webpack_require__(404);
+	    __webpack_require__(405);
+	    __webpack_require__(406);
+	    __webpack_require__(411);
 
 
 /***/ },
-/* 380 */
+/* 401 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var featureManager = __webpack_require__(327);
+	    var featureManager = __webpack_require__(344);
 	    var zrUtil = __webpack_require__(4);
 
 	    var ToolboxModel = __webpack_require__(1).extendComponentModel({
@@ -40890,17 +43435,17 @@
 
 
 /***/ },
-/* 381 */
+/* 402 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/* WEBPACK VAR INJECTION */(function(process) {
 
-	    var featureManager = __webpack_require__(327);
+	    var featureManager = __webpack_require__(344);
 	    var zrUtil = __webpack_require__(4);
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 	    var Model = __webpack_require__(12);
 	    var DataDiffer = __webpack_require__(99);
-	    var listComponentHelper = __webpack_require__(297);
+	    var listComponentHelper = __webpack_require__(313);
 	    var textContain = __webpack_require__(8);
 
 	    module.exports = __webpack_require__(1).extendComponentView({
@@ -41142,10 +43687,10 @@
 	    }
 
 
-	/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(289)))
+	/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(305)))
 
 /***/ },
-/* 382 */
+/* 403 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -41209,7 +43754,7 @@
 	        }
 	    };
 
-	    __webpack_require__(327).register(
+	    __webpack_require__(344).register(
 	        'saveAsImage', SaveAsImage
 	    );
 
@@ -41217,7 +43762,7 @@
 
 
 /***/ },
-/* 383 */
+/* 404 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -41391,13 +43936,13 @@
 	        ecModel.mergeOption(payload.newOption);
 	    });
 
-	    __webpack_require__(327).register('magicType', MagicType);
+	    __webpack_require__(344).register('magicType', MagicType);
 
 	    module.exports = MagicType;
 
 
 /***/ },
-/* 384 */
+/* 405 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -41708,7 +44253,7 @@
 
 	        var viewMain = document.createElement('div');
 	        var textarea = document.createElement('textarea');
-	        viewMain.style.cssText = 'display:block;width:100%;overflow:hidden;';
+	        viewMain.style.cssText = 'display:block;width:100%;overflow:auto;';
 
 	        var optionToContent = model.get('optionToContent');
 	        var contentToOption = model.get('contentToOption');
@@ -41844,7 +44389,7 @@
 	        });
 	    }
 
-	    __webpack_require__(327).register('dataView', DataView);
+	    __webpack_require__(344).register('dataView', DataView);
 
 	    __webpack_require__(1).registerAction({
 	        type: 'changeDataView',
@@ -41880,21 +44425,21 @@
 
 
 /***/ },
-/* 385 */
+/* 406 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
 
 
 	    var zrUtil = __webpack_require__(4);
-	    var BrushController = __webpack_require__(236);
-	    var brushHelper = __webpack_require__(322);
-	    var history = __webpack_require__(386);
+	    var BrushController = __webpack_require__(250);
+	    var BrushTargetManager = __webpack_require__(339);
+	    var history = __webpack_require__(407);
 
 	    var each = zrUtil.each;
 
 	    // Use dataZoomSelect
-	    __webpack_require__(387);
+	    __webpack_require__(408);
 
 	    // Spectial component id start with \0ec\0, see echarts/model/Global.js~hasInnerId
 	    var DATA_ZOOM_ID_BASE = '\0_ec_\0toolbox-dataZoom_';
@@ -41984,57 +44529,44 @@
 
 	        this._brushController.updateCovers([]); // remove cover
 
-	        var coordInfoList = brushHelper.makeCoordInfoList(
-	            retrieveAxisSetting(this.model.option), ecModel
+	        var brushTargetManager = new BrushTargetManager(
+	            retrieveAxisSetting(this.model.option), ecModel, {include: ['grid']}
 	        );
-	        var rangesCoordInfoList = [];
-	        brushHelper.parseOutputRanges(areas, coordInfoList, ecModel, rangesCoordInfoList);
+	        brushTargetManager.matchOutputRanges(areas, ecModel, function (area, coordRange, coordSys) {
+	            if (coordSys.type !== 'cartesian2d') {
+	                return;
+	            }
 
-	        var area = areas[0]; // dataZoom can not multiple area.
-	        var coordInfo = rangesCoordInfoList[0];
-	        var coordRange = area.coordRange;
-	        var brushType = area.brushType;
-
-	        if (coordInfo && coordRange) {
+	            var brushType = area.brushType;
 	            if (brushType === 'rect') {
-	                setBatch('xAxis', coordRange[0], coordInfo);
-	                setBatch('yAxis', coordRange[1], coordInfo);
+	                setBatch('x', coordSys, coordRange[0]);
+	                setBatch('y', coordSys, coordRange[1]);
 	            }
 	            else {
-	                var axisNames = {lineX: 'xAxis', lineY: 'yAxis'};
-	                setBatch(axisNames[brushType], coordRange, coordInfo);
+	                setBatch(({lineX: 'x', lineY: 'y'})[brushType], coordSys, coordRange);
 	            }
-	        }
+	        });
 
 	        history.push(ecModel, snapshot);
 
 	        this._dispatchZoomAction(snapshot);
 
-	        function setBatch(axisName, minMax, coordInfo) {
-	            var dataZoomModel = findDataZoom(axisName, coordInfo[axisName], ecModel);
-	            if (dataZoomModel) {
-	                snapshot[dataZoomModel.id] = {
-	                    dataZoomId: dataZoomModel.id,
-	                    startValue: minMax[0],
-	                    endValue: minMax[1]
-	                };
-	            }
+	        function setBatch(dimName, coordSys, minMax) {
+	            var dataZoomModel = findDataZoom(dimName, coordSys.getAxis(dimName).model, ecModel);
+	            dataZoomModel && (snapshot[dataZoomModel.id] = {
+	                dataZoomId: dataZoomModel.id,
+	                startValue: minMax[0],
+	                endValue: minMax[1]
+	            });
 	        }
 
-	        function findDataZoom(axisName, axisModel, ecModel) {
-	            var dataZoomModel;
-	            ecModel.eachComponent(
-	                {mainType: 'dataZoom', subType: 'select'},
-	                function (dzModel, dataZoomIndex) {
-	                    var axisIndex = dzModel.get(axisName + 'Index');
-	                    if (axisIndex != null
-	                        && ecModel.getComponent(axisName, axisIndex) === axisModel
-	                    ) {
-	                        dataZoomModel = dzModel;
-	                    }
-	                }
-	            );
-	            return dataZoomModel;
+	        function findDataZoom(dimName, axisModel, ecModel) {
+	            var found;
+	            ecModel.eachComponent({mainType: 'dataZoom', subType: 'select'}, function (dzModel) {
+	                var has = dzModel.getAxisModel(dimName, axisModel.componentIndex);
+	                has && (found = dzModel);
+	            });
+	            return found;
 	        }
 	    };
 
@@ -42086,24 +44618,25 @@
 
 	        featureModel.setIconStatus('zoom', zoomActive ? 'emphasis' : 'normal');
 
-	        var coordInfoList = brushHelper.makeCoordInfoList(
-	            retrieveAxisSetting(featureModel.option), ecModel
+	        var brushTargetManager = new BrushTargetManager(
+	            retrieveAxisSetting(featureModel.option), ecModel, {include: ['grid']}
 	        );
-	        var brushType = (coordInfoList.xAxisHas && !coordInfoList.yAxisHas)
-	            ? 'lineX'
-	            : (!coordInfoList.xAxisHas && coordInfoList.yAxisHas)
-	            ? 'lineY'
-	            : 'rect';
 
 	        view._brushController
-	            .setPanels(brushHelper.makePanelOpts(coordInfoList))
+	            .setPanels(brushTargetManager.makePanelOpts(function (targetInfo) {
+	                return (targetInfo.xAxisDeclared && !targetInfo.yAxisDeclared)
+	                    ? 'lineX'
+	                    : (!targetInfo.xAxisDeclared && targetInfo.yAxisDeclared)
+	                    ? 'lineY'
+	                    : 'rect';
+	            }))
 	            .enableBrush(
 	                zoomActive
 	                ? {
-	                    brushType: brushType,
-	                    brushStyle: { // FIXME user customized?
+	                    brushType: 'auto',
+	                    brushStyle: {
+	                        // FIXME user customized?
 	                        lineWidth: 0,
-	                        // stroke: '#333',
 	                        fill: 'rgba(0,0,0,0.2)'
 	                    }
 	                }
@@ -42112,7 +44645,7 @@
 	    }
 
 
-	    __webpack_require__(327).register('dataZoom', DataZoom);
+	    __webpack_require__(344).register('dataZoom', DataZoom);
 
 
 	    // Create special dataZoom option for select
@@ -42188,7 +44721,7 @@
 
 
 /***/ },
-/* 386 */
+/* 407 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -42302,7 +44835,7 @@
 
 
 /***/ },
-/* 387 */
+/* 408 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -42310,21 +44843,21 @@
 	 */
 
 
-	    __webpack_require__(330);
+	    __webpack_require__(351);
 
-	    __webpack_require__(331);
-	    __webpack_require__(334);
+	    __webpack_require__(352);
+	    __webpack_require__(355);
 
-	    __webpack_require__(388);
-	    __webpack_require__(389);
+	    __webpack_require__(409);
+	    __webpack_require__(410);
 
-	    __webpack_require__(341);
-	    __webpack_require__(342);
+	    __webpack_require__(362);
+	    __webpack_require__(363);
 
 
 
 /***/ },
-/* 388 */
+/* 409 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -42332,7 +44865,7 @@
 	 */
 
 
-	    var DataZoomModel = __webpack_require__(331);
+	    var DataZoomModel = __webpack_require__(352);
 
 	    module.exports = DataZoomModel.extend({
 
@@ -42343,12 +44876,12 @@
 
 
 /***/ },
-/* 389 */
+/* 410 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    module.exports = __webpack_require__(334).extend({
+	    module.exports = __webpack_require__(355).extend({
 
 	        type: 'dataZoom.select'
 
@@ -42357,13 +44890,13 @@
 
 
 /***/ },
-/* 390 */
+/* 411 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
 
 
-	    var history = __webpack_require__(386);
+	    var history = __webpack_require__(407);
 
 	    function Restore(model) {
 	        this.model = model;
@@ -42387,7 +44920,7 @@
 	    };
 
 
-	    __webpack_require__(327).register('restore', Restore);
+	    __webpack_require__(344).register('restore', Restore);
 
 
 	    __webpack_require__(1).registerAction(
@@ -42401,16 +44934,16 @@
 
 
 /***/ },
-/* 391 */
+/* 412 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
-	    __webpack_require__(392);
-	    __webpack_require__(82).registerPainter('vml', __webpack_require__(394));
+	    __webpack_require__(413);
+	    __webpack_require__(82).registerPainter('vml', __webpack_require__(415));
 
 
 /***/ },
-/* 392 */
+/* 413 */
 /***/ function(module, exports, __webpack_require__) {
 
 	// http://www.w3.org/TR/NOTE-VML
@@ -42420,18 +44953,18 @@
 	if (!__webpack_require__(2).canvasSupported) {
 	    var vec2 = __webpack_require__(10);
 	    var BoundingRect = __webpack_require__(9);
-	    var CMD = __webpack_require__(49).CMD;
+	    var CMD = __webpack_require__(50).CMD;
 	    var colorTool = __webpack_require__(39);
 	    var textContain = __webpack_require__(8);
-	    var RectText = __webpack_require__(48);
-	    var Displayable = __webpack_require__(46);
-	    var ZImage = __webpack_require__(61);
+	    var RectText = __webpack_require__(49);
+	    var Displayable = __webpack_require__(47);
+	    var ZImage = __webpack_require__(62);
 	    var Text = __webpack_require__(63);
-	    var Path = __webpack_require__(45);
+	    var Path = __webpack_require__(46);
 
 	    var Gradient = __webpack_require__(79);
 
-	    var vmlCore = __webpack_require__(393);
+	    var vmlCore = __webpack_require__(414);
 
 	    var round = Math.round;
 	    var sqrt = Math.sqrt;
@@ -43470,7 +46003,7 @@
 
 
 /***/ },
-/* 393 */
+/* 414 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -43523,7 +46056,7 @@
 
 
 /***/ },
-/* 394 */
+/* 415 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -43534,8 +46067,8 @@
 
 
 
-	    var zrLog = __webpack_require__(40);
-	    var vmlCore = __webpack_require__(393);
+	    var zrLog = __webpack_require__(41);
+	    var vmlCore = __webpack_require__(414);
 
 	    function parseInt10(val) {
 	        return parseInt(val, 10);
@@ -43709,7 +46242,7 @@
 	    }
 
 	    var notSupportedMethods = [
-	        'getLayer', 'insertLayer', 'eachLayer', 'eachBuildinLayer', 'eachOtherLayer', 'getLayers',
+	        'getLayer', 'insertLayer', 'eachLayer', 'eachBuiltinLayer', 'eachOtherLayer', 'getLayers',
 	        'modLayer', 'delLayer', 'clearLayer', 'toDataURL', 'pathToImage'
 	    ];
 
diff --git a/dist/echarts.common.min.js b/dist/echarts.common.min.js
index 98fff8b..a8edd26 100644
--- a/dist/echarts.common.min.js
+++ b/dist/echarts.common.min.js
@@ -1,4 +1,4 @@
-!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.echarts=e():t.echarts=e()}(this,function(){return function(t){function e(n){if(i[n])return i[n].exports;var r=i[n]={exports:{},id:n,loaded:!1};return t[n].call(r.exports,r,r.exports,e),r.loaded=!0,r.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){t.exports=i(2),i(100),i(94),i(104),i(178),i(191),i(215),i(192),i(31),i(206),i(199),i(198),i(197),i(181),i(207),i(222)},function(t,e){function i(t){if(null==t||"object"!=typeof t)return t;var e=t,n=O.call(t);if("[object Array]"===n){e=[];for(var r=0,o=t.length;r<o;r++)e[r]=i(t[r])}else if(D[n])e=t.constructor.from(t);else if(!P[n]&&!T(t)){e={};for(var a in t)t.hasOwnProperty(a)&&(e[a]=i(t[a]))}return e}function n(t,e,r){if(!M(e)||!M(t))return r?i(e):t;for(var o in e)if(e.hasOwnProperty(o)){var a=t[o],s=e[o];!M(s)||!M(a)||_(s)||_(a)||T(s)||T(a)||S(s)||S(a)?!r&&o in t||(t[o]=i(e[o],!0)):n(a,s,r)}return t}function r(t,e){for(var i=t[0],r=1,o=t.length;r<o;r++)i=n(i,t[r],e);return i}function o(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return t}function a(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 s(){return document.createElement("canvas")}function l(){return L||(L=F.createCanvas().getContext("2d")),L}function h(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 u(t,e){function i(){}var n=t.prototype;i.prototype=e.prototype,t.prototype=new i;for(var r in n)t.prototype[r]=n[r];t.prototype.constructor=t,t.superClass=e}function c(t,e,i){t="prototype"in t?t.prototype:t,e="prototype"in e?e.prototype:e,a(t,e,i)}function d(t){if(t)return"string"!=typeof t&&"number"==typeof t.length}function f(t,e,i){if(t&&e)if(t.forEach&&t.forEach===E)t.forEach(e,i);else if(t.length===+t.length)for(var n=0,r=t.length;n<r;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 p(t,e,i){if(t&&e){if(t.map&&t.map===B)return t.map(e,i);for(var n=[],r=0,o=t.length;r<o;r++)n.push(e.call(i,t[r],r,t));return n}}function g(t,e,i,n){if(t&&e){if(t.reduce&&t.reduce===V)return t.reduce(e,i,n);for(var r=0,o=t.length;r<o;r++)i=e.call(n,i,t[r],r,t);return i}}function m(t,e,i){if(t&&e){if(t.filter&&t.filter===N)return t.filter(e,i);for(var n=[],r=0,o=t.length;r<o;r++)e.call(i,t[r],r,t)&&n.push(t[r]);return n}}function v(t,e,i){if(t&&e)for(var n=0,r=t.length;n<r;n++)if(e.call(i,t[n],n,t))return t[n]}function y(t,e){var i=R.call(arguments,2);return function(){return t.apply(e,i.concat(R.call(arguments)))}}function x(t){var e=R.call(arguments,1);return function(){return t.apply(this,e.concat(R.call(arguments)))}}function _(t){return"[object Array]"===O.call(t)}function b(t){return"function"==typeof t}function w(t){return"[object String]"===O.call(t)}function M(t){var e=typeof t;return"function"===e||!!t&&"object"==e}function S(t){return!!P[O.call(t)]}function T(t){return"object"==typeof t&&"number"==typeof t.nodeType&&"object"==typeof t.ownerDocument}function A(t){return t!==t}function I(t){for(var e=0,i=arguments.length;e<i;e++)if(null!=arguments[e])return arguments[e]}function C(){return Function.call.apply(R,arguments)}function k(t,e){if(!t)throw new Error(e)}var L,P={"[object Function]":1,"[object RegExp]":1,"[object Date]":1,"[object Error]":1,"[object CanvasGradient]":1,"[object CanvasPattern]":1,"[object Image]":1,"[object Canvas]":1},D={"[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},O=Object.prototype.toString,z=Array.prototype,E=z.forEach,N=z.filter,R=z.slice,B=z.map,V=z.reduce,F={inherits:u,mixin:c,clone:i,merge:n,mergeAll:r,extend:o,defaults:a,getContext:l,createCanvas:s,indexOf:h,slice:C,find:v,isArrayLike:d,each:f,map:p,reduce:g,filter:m,bind:y,curry:x,isArray:_,isString:w,isObject:M,isFunction:b,isBuildInObject:S,isDom:T,eqNaN:A,retrieve:I,assert:k,noop:function(){}};t.exports=F},function(t,e,i){function n(t){return function(e,i,n){e=e&&e.toLowerCase(),R.prototype[t].call(this,e,i,n)}}function r(){R.call(this)}function o(t,e,i){function n(t,e){return t.prio-e.prio}i=i||{},"string"==typeof e&&(e=at[e]),this.id,this.group,this._dom=t;var o=this._zr=z.init(t,{renderer:i.renderer||"canvas",devicePixelRatio:i.devicePixelRatio,width:i.width,height:i.height});this._throttledZrFlush=O.throttle(E.bind(o.flush,o),17),this._theme=E.clone(e),this._chartsViews=[],this._chartsMap={},this._componentsViews=[],this._componentsMap={},this._api=new S(this),this._coordSysMgr=new T,R.call(this),this._messageCenter=new r,this._initEvents(),this.resize=E.bind(this.resize,this),this._pendingActions=[],B(ot,n),B(nt,n),o.animation.on("frame",this._onframe,this)}function a(t,e,i){var n,r=this._model,o=this._coordSysMgr.getCoordinateSystems();e=D.parseFinder(r,e);for(var a=0;a<o.length;a++){var s=o[a];if(s[t]&&null!=(n=s[t](r,e,i)))return n}}function s(t,e,i,n,r){var o=t._model,a={};a[n+"Id"]=i[n+"Id"],a[n+"Index"]=i[n+"Index"],a[n+"Name"]=i[n+"Name"];var s={mainType:n,query:a};r&&(s.subType=r),o&&o.eachComponent(s,function(r,a){var s=t["series"===n?"_chartsMap":"_componentsMap"][r.__viewId];s&&s.__alive&&s[e](r,o,t._api,i)},t)}function l(t,e){var i=t.type,n=et[i],r=n.actionInfo,o=(r.update||"update").split(":"),a=o.pop();o=o[0]&&F(o[0]),this[X]=!0;var l=[t],h=!1;t.batch&&(h=!0,l=E.map(t.batch,function(e){return e=E.defaults(E.extend({},e),t),e.batch=null,e}));for(var u,c=[],d="highlight"===i||"downplay"===i,f=0;f<l.length;f++){var p=l[f];u=n.action(p,this._model),u=u||E.extend({},p),u.type=r.event||u.type,c.push(u),d?s(this,a,p,"series"):o&&s(this,a,p,o.main,o.sub)}"none"===a||d||o||(this[$]?(J.prepareAndUpdate.call(this,t),this[$]=!1):J[a].call(this,t)),u=h?{type:r.event||i,batch:c}:c[0],this[X]=!1,!e&&this._messageCenter.trigger(u.type,u)}function h(t){for(var e=this._pendingActions;e.length;){var i=e.shift();l.call(this,i,t)}}function u(t){!t&&this.trigger("updated")}function c(t,e,i){var n=this._api;V(this._componentsViews,function(r){var o=r.__model;r[t](o,e,n,i),_(o,r)},this),e.eachSeries(function(r,o){var a=this._chartsMap[r.__viewId];a[t](r,e,n,i),_(r,a),x(r,a)},this),y(this._zr,e)}function d(t,e){for(var i="component"===t,n=i?this._componentsViews:this._chartsViews,r=i?this._componentsMap:this._chartsMap,o=this._zr,a=0;a<n.length;a++)n[a].__alive=!1;e[i?"eachComponent":"eachSeries"](function(t,a){if(i){if("series"===t)return}else a=t;var s=a.id+"_"+a.type,l=r[s];if(!l){var h=F(a.type),u=i?k.getClass(h.main,h.sub):L.getClass(h.sub);if(!u)return;l=new u,l.init(e,this._api),r[s]=l,n.push(l),o.add(l.group)}a.__viewId=s,l.__alive=!0,l.__id=s,l.__model=a},this);for(var a=0;a<n.length;){var s=n[a];s.__alive?a++:(o.remove(s.group),s.dispose(e,this._api),n.splice(a,1),delete r[s.__id])}}function f(t,e){V(nt,function(i){i.func(t,e)})}function p(t){var e={};t.eachSeries(function(t){var i=t.get("stack"),n=t.getData();if(i&&"list"===n.type){var r=e[i];r&&(n.stackedOn=r),e[i]=n}})}function g(t,e){var i=this._api;V(ot,function(n){n.isLayout&&n.func(t,i,e)})}function m(t,e,i){var n=this._api;t.clearColorPalette(),t.eachSeries(function(t){t.clearColorPalette()}),V(ot,function(r){(!i||!r.isLayout)&&r.func(t,n,e)})}function v(t,e){var i=this._api;V(this._componentsViews,function(n){var r=n.__model;n.render(r,t,i,e),_(r,n)},this),V(this._chartsViews,function(t){t.__alive=!1},this),t.eachSeries(function(n,r){var o=this._chartsMap[n.__viewId];o.__alive=!0,o.render(n,t,i,e),o.group.silent=!!n.get("silent"),_(n,o),x(n,o)},this),y(this._zr,t),V(this._chartsViews,function(e){e.__alive||e.remove(t,i)},this)}function y(t,e){var i=t.storage,n=0;i.traverse(function(t){t.isGroup||n++}),n>e.get("hoverLayerThreshold")&&!w.node&&i.traverse(function(t){t.isGroup||(t.useHoverLayer=!0)})}function x(t,e){var i=0;e.group.traverse(function(t){"group"===t.type||t.ignore||i++});var n=+t.get("progressive"),r=i>t.get("progressiveThreshold")&&n&&!w.node;r&&e.group.traverse(function(t){t.isGroup||(t.progressive=r?Math.floor(i++/n):-1,r&&t.stopAnimation(!0))});var o=t.get("blendMode")||null;e.group.traverse(function(t){t.isGroup||t.setStyle("blend",o)})}function _(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 b(t){function e(t,e){for(var i=0;i<t.length;i++){var n=t[i];n[o]=e}}var i=0,n=1,r=2,o="__connectUpdateStatus";E.each(it,function(a,s){t._messageCenter.on(s,function(a){if(ht[t.group]&&t[o]!==i){var s=t.makeActionFromEvent(a),l=[];E.each(lt,function(e){e!==t&&e.group===t.group&&l.push(e)}),e(l,i),V(l,function(t){t[o]!==n&&t.dispatchAction(s)}),e(l,r)}})})}/*!
+!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.echarts=e():t.echarts=e()}(this,function(){return function(t){function e(n){if(i[n])return i[n].exports;var r=i[n]={exports:{},id:n,loaded:!1};return t[n].call(r.exports,r,r.exports,e),r.loaded=!0,r.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){t.exports=i(2),i(110),i(104),i(114),i(192),i(205),i(229),i(45),i(206),i(38),i(220),i(213),i(212),i(211),i(195),i(221),i(236)},function(t,e){function i(t){if(null==t||"object"!=typeof t)return t;var e=t,n=E.call(t);if("[object Array]"===n){e=[];for(var r=0,o=t.length;r<o;r++)e[r]=i(t[r])}else if(z[n])e=t.constructor.from(t);else if(!O[n]&&!L(t)&&!T(t)){e={};for(var a in t)t.hasOwnProperty(a)&&(e[a]=i(t[a]))}return e}function n(t,e,r){if(!M(e)||!M(t))return r?i(e):t;for(var o in e)if(e.hasOwnProperty(o)){var a=t[o],s=e[o];!M(s)||!M(a)||_(s)||_(a)||T(s)||T(a)||S(s)||S(a)||L(s)||L(a)?!r&&o in t||(t[o]=i(e[o],!0)):n(a,s,r)}return t}function r(t,e){for(var i=t[0],r=1,o=t.length;r<o;r++)i=n(i,t[r],e);return i}function o(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return t}function a(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 s(){return document.createElement("canvas")}function l(){return D||(D=W.createCanvas().getContext("2d")),D}function u(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 h(t,e){function i(){}var n=t.prototype;i.prototype=e.prototype,t.prototype=new i;for(var r in n)t.prototype[r]=n[r];t.prototype.constructor=t,t.superClass=e}function c(t,e,i){t="prototype"in t?t.prototype:t,e="prototype"in e?e.prototype:e,a(t,e,i)}function d(t){if(t)return"string"!=typeof t&&"number"==typeof t.length}function f(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,r=t.length;n<r;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 p(t,e,i){if(t&&e){if(t.map&&t.map===F)return t.map(e,i);for(var n=[],r=0,o=t.length;r<o;r++)n.push(e.call(i,t[r],r,t));return n}}function g(t,e,i,n){if(t&&e){if(t.reduce&&t.reduce===G)return t.reduce(e,i,n);for(var r=0,o=t.length;r<o;r++)i=e.call(n,i,t[r],r,t);return i}}function m(t,e,i){if(t&&e){if(t.filter&&t.filter===B)return t.filter(e,i);for(var n=[],r=0,o=t.length;r<o;r++)e.call(i,t[r],r,t)&&n.push(t[r]);return n}}function v(t,e,i){if(t&&e)for(var n=0,r=t.length;n<r;n++)if(e.call(i,t[n],n,t))return t[n]}function y(t,e){var i=V.call(arguments,2);return function(){return t.apply(e,i.concat(V.call(arguments)))}}function x(t){var e=V.call(arguments,1);return function(){return t.apply(this,e.concat(V.call(arguments)))}}function _(t){return"[object Array]"===E.call(t)}function b(t){return"function"==typeof t}function w(t){return"[object String]"===E.call(t)}function M(t){var e=typeof t;return"function"===e||!!t&&"object"==e}function S(t){return!!O[E.call(t)]}function T(t){return"object"==typeof t&&"number"==typeof t.nodeType&&"object"==typeof t.ownerDocument}function A(t){return t!==t}function I(t){for(var e=0,i=arguments.length;e<i;e++)if(null!=arguments[e])return arguments[e]}function C(){return Function.call.apply(V,arguments)}function P(t,e){if(!t)throw new Error(e)}function k(t){t[H]=!0}function L(t){return t[H]}var D,O={"[object Function]":1,"[object RegExp]":1,"[object Date]":1,"[object Error]":1,"[object CanvasGradient]":1,"[object CanvasPattern]":1,"[object Image]":1,"[object Canvas]":1},z={"[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},E=Object.prototype.toString,N=Array.prototype,R=N.forEach,B=N.filter,V=N.slice,F=N.map,G=N.reduce,H="__ec_primitive__",W={inherits:h,mixin:c,clone:i,merge:n,mergeAll:r,extend:o,defaults:a,getContext:l,createCanvas:s,indexOf:u,slice:C,find:v,isArrayLike:d,each:f,map:p,reduce:g,filter:m,bind:y,curry:x,isArray:_,isString:w,isObject:M,isFunction:b,isBuiltInObject:S,isDom:T,eqNaN:A,retrieve:I,assert:P,setAsPrimitive:k,noop:function(){}};t.exports=W},function(t,e,i){function n(t){return function(e,i,n){e=e&&e.toLowerCase(),R.prototype[t].call(this,e,i,n)}}function r(){R.call(this)}function o(t,e,i){function n(t,e){return t.prio-e.prio}i=i||{},"string"==typeof e&&(e=st[e]),this.id,this.group,this._dom=t;var o=this._zr=z.init(t,{renderer:i.renderer||"canvas",devicePixelRatio:i.devicePixelRatio,width:i.width,height:i.height});this._throttledZrFlush=O.throttle(E.bind(o.flush,o),17),this._theme=E.clone(e),this._chartsViews=[],this._chartsMap={},this._componentsViews=[],this._componentsMap={},this._coordSysMgr=new T,this._api=new S(this,this._coordSysMgr),R.call(this),this._messageCenter=new r,this._initEvents(),this.resize=E.bind(this.resize,this),this._pendingActions=[],B(at,n),B(nt,n),o.animation.on("frame",this._onframe,this),E.setAsPrimitive(this)}function a(t,e,i){var n,r=this._model,o=this._coordSysMgr.getCoordinateSystems();e=D.parseFinder(r,e);for(var a=0;a<o.length;a++){var s=o[a];if(s[t]&&null!=(n=s[t](r,e,i)))return n}}function s(t,e,i,n,r){function o(n){n&&n.__alive&&n[e]&&n[e](n.__model,a,t._api,i)}var a=t._model;if(!n)return void V(t._componentsViews.concat(t._chartsViews),o);var s={};s[n+"Id"]=i[n+"Id"],s[n+"Index"]=i[n+"Index"],s[n+"Name"]=i[n+"Name"];var l={mainType:n,query:s};r&&(l.subType=r),a&&a.eachComponent(l,function(e,i){o(t["series"===n?"_chartsMap":"_componentsMap"][e.__viewId])},t)}function l(t,e){var i=t.type,n=t.escapeConnect,r=et[i],o=r.actionInfo,a=(o.update||"update").split(":"),l=a.pop();a=null!=a[0]&&F(a[0]),this[X]=!0;var u=[t],h=!1;t.batch&&(h=!0,u=E.map(t.batch,function(e){return e=E.defaults(E.extend({},e),t),e.batch=null,e}));var c,d=[],f="highlight"===i||"downplay"===i;V(u,function(t){c=r.action(t,this._model,this._api),c=c||E.extend({},t),c.type=o.event||c.type,d.push(c),f?s(this,l,t,"series"):a&&s(this,l,t,a.main,a.sub)},this),"none"===l||f||a||(this[$]?(J.prepareAndUpdate.call(this,t),this[$]=!1):J[l].call(this,t)),c=h?{type:o.event||i,escapeConnect:n,batch:d}:d[0],this[X]=!1,!e&&this._messageCenter.trigger(c.type,c)}function u(t){for(var e=this._pendingActions;e.length;){var i=e.shift();l.call(this,i,t)}}function h(t){!t&&this.trigger("updated")}function c(t,e,i){var n=this._api;V(this._componentsViews,function(r){var o=r.__model;r[t](o,e,n,i),_(o,r)},this),e.eachSeries(function(r,o){var a=this._chartsMap[r.__viewId];a[t](r,e,n,i),_(r,a),x(r,a)},this),y(this._zr,e),V(ot,function(t){t(e,n)})}function d(t,e){for(var i="component"===t,n=i?this._componentsViews:this._chartsViews,r=i?this._componentsMap:this._chartsMap,o=this._zr,a=0;a<n.length;a++)n[a].__alive=!1;e[i?"eachComponent":"eachSeries"](function(t,a){if(i){if("series"===t)return}else a=t;var s=a.id+"_"+a.type,l=r[s];if(!l){var u=F(a.type),h=i?P.getClass(u.main,u.sub):k.getClass(u.sub);if(!h)return;l=new h,l.init(e,this._api),r[s]=l,n.push(l),o.add(l.group)}a.__viewId=s,l.__alive=!0,l.__id=s,l.__model=a},this);for(var a=0;a<n.length;){var s=n[a];s.__alive?a++:(o.remove(s.group),s.dispose(e,this._api),n.splice(a,1),delete r[s.__id])}}function f(t,e){V(nt,function(i){i.func(t,e)})}function p(t){var e={};t.eachSeries(function(t){var i=t.get("stack"),n=t.getData();if(i&&"list"===n.type){var r=e[i];r&&(n.stackedOn=r),e[i]=n}})}function g(t,e){var i=this._api;V(at,function(n){n.isLayout&&n.func(t,i,e)})}function m(t,e,i){var n=this._api;t.clearColorPalette(),t.eachSeries(function(t){t.clearColorPalette()}),V(at,function(r){(!i||!r.isLayout)&&r.func(t,n,e)})}function v(t,e){var i=this._api;V(this._componentsViews,function(n){var r=n.__model;n.render(r,t,i,e),_(r,n)},this),V(this._chartsViews,function(t){t.__alive=!1},this),t.eachSeries(function(n,r){var o=this._chartsMap[n.__viewId];o.__alive=!0,o.render(n,t,i,e),o.group.silent=!!n.get("silent"),_(n,o),x(n,o)},this),y(this._zr,t),V(this._chartsViews,function(e){e.__alive||e.remove(t,i)},this)}function y(t,e){var i=t.storage,n=0;i.traverse(function(t){t.isGroup||n++}),n>e.get("hoverLayerThreshold")&&!w.node&&i.traverse(function(t){t.isGroup||(t.useHoverLayer=!0)})}function x(t,e){var i=0;e.group.traverse(function(t){"group"===t.type||t.ignore||i++});var n=+t.get("progressive"),r=i>t.get("progressiveThreshold")&&n&&!w.node;r&&e.group.traverse(function(t){t.isGroup||(t.progressive=r?Math.floor(i++/n):-1,r&&t.stopAnimation(!0))});var o=t.get("blendMode")||null;e.group.traverse(function(t){t.isGroup||t.setStyle("blend",o)})}function _(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 b(t){function e(t,e){for(var i=0;i<t.length;i++){var n=t[i];n[o]=e}}var i=0,n=1,r=2,o="__connectUpdateStatus";E.each(it,function(a,s){t._messageCenter.on(s,function(a){if(ht[t.group]&&t[o]!==i){if(a&&a.escapeConnect)return;var s=t.makeActionFromEvent(a),l=[];E.each(ut,function(e){e!==t&&e.group===t.group&&l.push(e)}),e(l,i),V(l,function(t){t[o]!==n&&t.dispatchAction(s)}),e(l,r)}})})}/*!
 	 * ECharts, a javascript interactive chart library.
 	 *
 	 * Copyright (c) 2015, Baidu Inc.
@@ -7,11 +7,11 @@
 	 * LICENSE
 	 * https://github.com/ecomfe/echarts/blob/master/LICENSE.txt
 	 */
-var w=i(10),M=i(125),S=i(93),T=i(23),A=i(126),I=i(13),C=i(16),k=i(59),L=i(28),P=i(3),D=i(6),O=i(47),z=i(78),E=i(1),N=i(19),R=i(21),B=i(46),V=E.each,F=I.parseClassType,G=1e3,H=5e3,W=1e3,Z=2e3,q=3e3,j=4e3,U=5e3,X="__flagInMainProcess",Y="__hasGradientOrPatternBg",$="__optionUpdated",Q=/^[a-zA-Z0-9_]+$/;r.prototype.on=n("on"),r.prototype.off=n("off"),r.prototype.one=n("one"),E.mixin(r,R);var K=o.prototype;K._onframe=function(){if(this[$]){var t=this[$].silent;this[X]=!0,J.prepareAndUpdate.call(this),this[X]=!1,this[$]=!1,h.call(this,t),u.call(this,t)}},K.getDom=function(){return this._dom},K.getZr=function(){return this._zr},K.setOption=function(t,e,i){var n;if(E.isObject(e)&&(i=e.lazyUpdate,n=e.silent,e=e.notMerge),this[X]=!0,!this._model||e){var r=new A(this._api),o=this._theme,a=this._model=new M(null,null,o,r);a.init(null,null,o,r)}this.__lastOnlyGraphic=!(!t||!t.graphic),E.each(t,function(t,e){"graphic"!==e&&(this.__lastOnlyGraphic=!1)},this),this._model.setOption(t,rt),i?(this[$]={silent:n},this[X]=!1):(J.prepareAndUpdate.call(this),this._zr.flush(),this[$]=!1,this[X]=!1,h.call(this,n),u.call(this,n))},K.setTheme=function(){console.log("ECharts#setTheme() is DEPRECATED in ECharts 3.0")},K.getModel=function(){return this._model},K.getOption=function(){return this._model&&this._model.getOption()},K.getWidth=function(){return this._zr.getWidth()},K.getHeight=function(){return this._zr.getHeight()},K.getRenderedCanvas=function(t){if(w.canvasSupported){t=t||{},t.pixelRatio=t.pixelRatio||1,t.backgroundColor=t.backgroundColor||this._model.get("backgroundColor");var e=this._zr,i=e.storage.getDisplayList();return E.each(i,function(t){t.stopAnimation(!0)}),e.painter.getRenderedCanvas(t)}},K.getDataURL=function(t){t=t||{};var e=t.excludeComponents,i=this._model,n=[],r=this;V(e,function(t){i.eachComponent({mainType:t},function(t){var e=r._componentsMap[t.__viewId];e.group.ignore||(n.push(e),e.group.ignore=!0)})});var o=this.getRenderedCanvas(t).toDataURL("image/"+(t&&t.type||"png"));return V(n,function(t){t.group.ignore=!1}),o},K.getConnectedDataURL=function(t){if(w.canvasSupported){var e=this.group,i=Math.min,n=Math.max,r=1/0;if(ht[e]){var o=r,a=r,s=-r,l=-r,h=[],u=t&&t.pixelRatio||1;E.each(lt,function(r,u){if(r.group===e){var c=r.getRenderedCanvas(E.clone(t)),d=r.getDom().getBoundingClientRect();o=i(d.left,o),a=i(d.top,a),s=n(d.right,s),l=n(d.bottom,l),h.push({dom:c,left:d.left,top:d.top})}}),o*=u,a*=u,s*=u,l*=u;var c=s-o,d=l-a,f=E.createCanvas();f.width=c,f.height=d;var p=z.init(f);return V(h,function(t){var e=new P.Image({style:{x:t.left*u-o,y:t.top*u-a,image:t.dom}});p.add(e)}),p.refreshImmediately(),f.toDataURL("image/"+(t&&t.type||"png"))}return this.getDataURL(t)}},K.convertToPixel=E.curry(a,"convertToPixel"),K.convertFromPixel=E.curry(a,"convertFromPixel"),K.containPixel=function(t,e){var i,n=this._model;return t=D.parseFinder(n,t),E.each(t,function(t,n){n.indexOf("Models")>=0&&E.each(t,function(t){var r=t.coordinateSystem;if(r&&r.containPoint)i|=!!r.containPoint(e);else if("seriesModels"===n){var o=this._chartsMap[t.__viewId];o&&o.containPoint&&(i|=o.containPoint(e,t))}},this)},this),!!i},K.getVisual=function(t,e){var i=this._model;t=D.parseFinder(i,t,{defaultMainType:"series"});var n=t.seriesModel,r=n.getData(),o=t.hasOwnProperty("dataIndexInside")?t.dataIndexInside:t.hasOwnProperty("dataIndex")?r.indexOfRawIndex(t.dataIndex):null;return null!=o?r.getItemVisual(o,e):r.getVisual(e)};var J={update:function(t){var e=this._model,i=this._api,n=this._coordSysMgr,r=this._zr;if(e){e.restoreData(),n.create(this._model,this._api),f.call(this,e,i),p.call(this,e),n.update(e,i),m.call(this,e,t),v.call(this,e,t);var o=e.get("backgroundColor")||"transparent",a=r.painter;if(a.isSingleCanvas&&a.isSingleCanvas())r.configLayer(0,{clearColor:o});else{if(!w.canvasSupported){var s=N.parse(o);o=N.stringify(s,"rgb"),0===s[3]&&(o="transparent")}o.colorStops||o.image?(r.configLayer(0,{clearColor:o}),this[Y]=!0,this._dom.style.background="transparent"):(this[Y]&&r.configLayer(0,{clearColor:null}),this[Y]=!1,this._dom.style.background=o)}}},updateView:function(t){var e=this._model;e&&(e.eachSeries(function(t){t.getData().clearAllVisual()}),m.call(this,e,t),c.call(this,"updateView",e,t))},updateVisual:function(t){var e=this._model;e&&(e.eachSeries(function(t){t.getData().clearAllVisual()}),m.call(this,e,t,!0),c.call(this,"updateVisual",e,t))},updateLayout:function(t){var e=this._model;e&&(g.call(this,e,t),c.call(this,"updateLayout",e,t))},prepareAndUpdate:function(t){var e=this._model;d.call(this,"component",e),d.call(this,"chart",e),this.__lastOnlyGraphic?(V(this._componentsViews,function(i){var n=i.__model;n&&"graphic"===n.mainType&&(i.render(n,e,this._api,t),_(n,i))},this),this.__lastOnlyGraphic=!1):J.update.call(this,t)}};K.resize=function(t){this[X]=!0,this._zr.resize(t);var e=this._model&&this._model.resetOption("media"),i=e?"prepareAndUpdate":"update";J[i].call(this),this._loadingFX&&this._loadingFX.resize(),this[X]=!1;var n=t&&t.silent;h.call(this,n),u.call(this,n)},K.showLoading=function(t,e){if(E.isObject(t)&&(e=t,t=""),t=t||"default",this.hideLoading(),st[t]){var i=st[t](this._api,e),n=this._zr;this._loadingFX=i,n.add(i)}},K.hideLoading=function(){this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null},K.makeActionFromEvent=function(t){var e=E.extend({},t);return e.type=it[t.type],e},K.dispatchAction=function(t,e){if(E.isObject(e)||(e={silent:!!e}),et[t.type]){if(this[X])return void this._pendingActions.push(t);l.call(this,t,e.silent),e.flush?this._zr.flush(!0):e.flush!==!1&&w.browser.weChat&&this._throttledZrFlush(),h.call(this,e.silent),u.call(this,e.silent)}},K.on=n("on"),K.off=n("off"),K.one=n("one");var tt=["click","dblclick","mouseover","mouseout","mousemove","mousedown","mouseup","globalout","contextmenu"];K._initEvents=function(){V(tt,function(t){this._zr.on(t,function(e){var i,n=this.getModel(),r=e.target;if("globalout"===t)i={};else if(r&&null!=r.dataIndex){var o=r.dataModel||n.getSeriesByIndex(r.seriesIndex);i=o&&o.getDataParams(r.dataIndex,r.dataType)||{}}else r&&r.eventData&&(i=E.extend({},r.eventData));i&&(i.event=e,i.type=t,this.trigger(t,i))},this)},this),V(it,function(t,e){this._messageCenter.on(e,function(t){this.trigger(e,t)},this)},this)},K.isDisposed=function(){return this._disposed},K.clear=function(){this.setOption({series:[]},!0)},K.dispose=function(){if(!this._disposed){this._disposed=!0;var t=this._api,e=this._model;V(this._componentsViews,function(i){i.dispose(e,t)}),V(this._chartsViews,function(i){i.dispose(e,t)}),this._zr.dispose(),delete lt[this.id]}},E.mixin(o,R);var et=[],it={},nt=[],rt=[],ot=[],at={},st={},lt={},ht={},ut=new Date-0,ct=new Date-0,dt="_echarts_instance_",ft={version:"3.4.0",dependencies:{zrender:"3.3.0"}};ft.init=function(t,e,i){var n=new o(t,e,i);return n.id="ec_"+ut++,lt[n.id]=n,t.setAttribute&&t.setAttribute(dt,n.id),b(n),n},ft.connect=function(t){if(E.isArray(t)){var e=t;t=null,E.each(e,function(e){null!=e.group&&(t=e.group)}),t=t||"g_"+ct++,E.each(e,function(e){e.group=t})}return ht[t]=!0,t},ft.disConnect=function(t){ht[t]=!1},ft.dispose=function(t){E.isDom(t)?t=ft.getInstanceByDom(t):"string"==typeof t&&(t=lt[t]),t instanceof o&&!t.isDisposed()&&t.dispose()},ft.getInstanceByDom=function(t){var e=t.getAttribute(dt);return lt[e]},ft.getInstanceById=function(t){return lt[t]},ft.registerTheme=function(t,e){at[t]=e},ft.registerPreprocessor=function(t){rt.push(t)},ft.registerProcessor=function(t,e){"function"==typeof t&&(e=t,t=G),nt.push({prio:t,func:e})},ft.registerAction=function(t,e,i){"function"==typeof e&&(i=e,e="");var n=E.isObject(t)?t.type:[t,t={event:e}][0];t.event=(t.event||n).toLowerCase(),e=t.event,E.assert(Q.test(n)&&Q.test(e)),et[n]||(et[n]={action:i,actionInfo:t}),it[e]=n},ft.registerCoordinateSystem=function(t,e){T.register(t,e)},ft.registerLayout=function(t,e){"function"==typeof t&&(e=t,t=W),ot.push({prio:t,func:e,isLayout:!0})},ft.registerVisual=function(t,e){"function"==typeof t&&(e=t,t=q),ot.push({prio:t,func:e})},ft.registerLoading=function(t,e){st[t]=e},ft.extendComponentModel=function(t){return I.extend(t)},ft.extendComponentView=function(t){return k.extend(t)},ft.extendSeriesModel=function(t){return C.extend(t)},ft.extendChartView=function(t){return L.extend(t)},ft.setCanvasCreator=function(t){E.createCanvas=t},ft.registerVisual(Z,i(139)),ft.registerPreprocessor(i(133)),ft.registerLoading("default",i(124)),ft.registerAction({type:"highlight",event:"highlight",update:"highlight"},E.noop),ft.registerAction({type:"downplay",event:"downplay",update:"downplay"},E.noop),ft.List=i(14),ft.Model=i(11),ft.graphic=i(3),ft.number=i(4),ft.format=i(8),ft.throttle=O.throttle,ft.matrix=i(20),ft.vector=i(5),ft.color=i(19),ft.util={},V(["map","each","filter","indexOf","inherits","reduce","filter","bind","curry","isArray","isString","isObject","isFunction","extend","defaults","clone"],function(t){ft.util[t]=E[t]}),ft.PRIORITY={PROCESSOR:{FILTER:G,STATISTIC:H},VISUAL:{LAYOUT:W,GLOBAL:Z,CHART:q,COMPONENT:j,BRUSH:U}},t.exports=ft},function(t,e,i){"use strict";function n(t){return null!=t&&"none"!=t}function r(t){return"string"==typeof t?_.lift(t,-.1):t}function o(t){if(t.__hoverStlDirty){var e=t.style.stroke,i=t.style.fill,o=t.__hoverStl;o.fill=o.fill||(n(i)?r(i):null),o.stroke=o.stroke||(n(e)?r(e):null);var a={};for(var s in o)o.hasOwnProperty(s)&&(a[s]=t.style[s]);t.__normalStl=a,t.__hoverStlDirty=!1}}function a(t){t.__isHover||(o(t),t.useHoverLayer?t.__zr&&t.__zr.addHover(t,t.__hoverStl):(t.setStyle(t.__hoverStl),t.z2+=1),t.__isHover=!0)}function s(t){if(t.__isHover){var e=t.__normalStl;t.useHoverLayer?t.__zr&&t.__zr.removeHover(t):(e&&t.setStyle(e),t.z2-=1),t.__isHover=!1}}function l(t){"group"===t.type?t.traverse(function(t){"group"!==t.type&&a(t)}):a(t)}function h(t){"group"===t.type?t.traverse(function(t){"group"!==t.type&&s(t)}):s(t)}function u(t,e){t.__hoverStl=t.hoverStyle||e||{},t.__hoverStlDirty=!0,t.__isHover&&o(t)}function c(t){this.__hoverSilentOnTouch&&t.zrByTouch||!this.__isEmphasis&&l(this)}function d(t){this.__hoverSilentOnTouch&&t.zrByTouch||!this.__isEmphasis&&h(this)}function f(){this.__isEmphasis=!0,l(this)}function p(){this.__isEmphasis=!1,h(this)}function g(t,e,i,n,r,o){"function"==typeof r&&(o=r,r=null);var a=n&&n.isAnimationEnabled();if(a){var s=t?"Update":"",l=n.getShallow("animationDuration"+s),h=n.getShallow("animationEasing"+s),u=n.getShallow("animationDelay"+s);"function"==typeof u&&(u=u(r,n.getAnimationDelayParams?n.getAnimationDelayParams(e,r):null)),"function"==typeof l&&(l=l(r)),l>0?e.animateTo(i,l,u||0,h,o):(e.attr(i),o&&o())}else e.attr(i),o&&o()}var m=i(1),v=i(169),y=Math.round,x=i(7),_=i(19),b=i(20),w=i(5),M={};M.Group=i(34),M.Image=i(49),M.Text=i(76),M.Circle=i(160),M.Sector=i(166),M.Ring=i(165),M.Polygon=i(162),M.Polyline=i(163),M.Rect=i(164),M.Line=i(161),M.BezierCurve=i(159),M.Arc=i(158),M.CompoundPath=i(153),M.LinearGradient=i(91),M.RadialGradient=i(154),M.BoundingRect=i(9),M.extendShape=function(t){return x.extend(t)},M.extendPath=function(t,e){return v.extendFromString(t,e)},M.makePath=function(t,e,i,n){var r=v.createFromString(t,e),o=r.getBoundingRect();if(i){var a=o.width/o.height;if("center"===n){var s,l=i.height*a;l<=i.width?s=i.height:(l=i.width,s=l/a);var h=i.x+i.width/2,u=i.y+i.height/2;i.x=h-l/2,i.y=u-s/2,i.width=l,i.height=s}M.resizePath(r,i)}return r},M.mergePath=v.mergePath,M.resizePath=function(t,e){if(t.applyTransform){var i=t.getBoundingRect(),n=i.calculateTransform(e);t.applyTransform(n)}},M.subPixelOptimizeLine=function(t){var e=M.subPixelOptimize,i=t.shape,n=t.style.lineWidth;return y(2*i.x1)===y(2*i.x2)&&(i.x1=i.x2=e(i.x1,n,!0)),y(2*i.y1)===y(2*i.y2)&&(i.y1=i.y2=e(i.y1,n,!0)),t},M.subPixelOptimizeRect=function(t){var e=M.subPixelOptimize,i=t.shape,n=t.style.lineWidth,r=i.x,o=i.y,a=i.width,s=i.height;return i.x=e(i.x,n,!0),i.y=e(i.y,n,!0),i.width=Math.max(e(r+a,n,!1)-i.x,0===a?0:1),i.height=Math.max(e(o+s,n,!1)-i.y,0===s?0:1),t},M.subPixelOptimize=function(t,e,i){var n=y(2*t);return(n+y(e))%2===0?n/2:(n+(i?1:-1))/2},M.setHoverStyle=function(t,e,i){t.__hoverSilentOnTouch=i&&i.hoverSilentOnTouch,"group"===t.type?t.traverse(function(t){"group"!==t.type&&u(t,e)}):u(t,e),t.on("mouseover",c).on("mouseout",d),t.on("emphasis",f).on("normal",p)},M.setText=function(t,e,i){var n=e.getShallow("position")||"inside",r=e.getShallow("offset"),o=n.indexOf("inside")>=0?"white":i,a=e.getModel("textStyle");m.extend(t,{textDistance:e.getShallow("distance")||5,textFont:a.getFont(),textPosition:n,textOffset:r,textFill:a.getTextColor()||o})},M.updateProps=function(t,e,i,n,r){g(!0,t,e,i,n,r)},M.initProps=function(t,e,i,n,r){g(!1,t,e,i,n,r)},M.getTransform=function(t,e){for(var i=b.identity([]);t&&t!==e;)b.mul(i,t.getLocalTransform(),i),t=t.parent;return i},M.applyTransform=function(t,e,i){return i&&(e=b.invert([],e)),w.applyTransform([],t,e)},M.transformDirection=function(t,e,i){var n=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?-n:"right"===t?n:0,"top"===t?-r:"bottom"===t?r:0];return o=M.applyTransform(o,e,i),Math.abs(o[0])>Math.abs(o[1])?o[0]>0?"right":"left":o[1]>0?"bottom":"top"},M.groupTransition=function(t,e,i,n){function r(t){var e={};return t.traverse(function(t){!t.isGroup&&t.anid&&(e[t.anid]=t)}),e}function o(t){var e={position:w.clone(t.position),rotation:t.rotation};return t.shape&&(e.shape=m.extend({},t.shape)),e}if(t&&e){var a=r(t);e.traverse(function(t){if(!t.isGroup&&t.anid){var e=a[t.anid];if(e){var n=o(t);t.attr(o(e)),M.updateProps(t,n,i,t.dataIndex)}}})}},t.exports=M},function(t,e){function i(t){return t.replace(/^\s+/,"").replace(/\s+$/,"")}var n={},r=1e-4;n.linearMap=function(t,e,i,n){var r=e[1]-e[0],o=i[1]-i[0];if(0===r)return 0===o?i[0]:(i[0]+i[1])/2;if(n)if(r>0){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])/r*o+i[0]},n.parsePercent=function(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?i(t).match(/%$/)?parseFloat(t)/100*e:parseFloat(t):null==t?NaN:+t},n.round=function(t,e){return null==e&&(e=10),e=Math.min(Math.max(0,e),20),+(+t).toFixed(e)},n.asc=function(t){return t.sort(function(t,e){return t-e}),t},n.getPrecision=function(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},n.getPrecisionSafe=function(t){var e=t.toString(),i=e.indexOf(".");return i<0?0:e.length-1-i},n.getPixelPrecision=function(t,e){var i=Math.log,n=Math.LN10,r=Math.floor(i(t[1]-t[0])/n),o=Math.round(i(Math.abs(e[1]-e[0]))/n),a=Math.min(Math.max(-r+o,0),20);return isFinite(a)?a:20},n.MAX_SAFE_INTEGER=9007199254740991,n.remRadian=function(t){var e=2*Math.PI;return(t%e+e)%e},n.isRadianAroundZero=function(t){return t>-r&&t<r},n.parseDate=function(t){if(t instanceof Date)return t;if("string"==typeof t){var e=new Date(t);return isNaN(+e)&&(e=new Date(new Date(t.replace(/-/g,"/"))-new Date("1970/01/01"))),e}return new Date(Math.round(t))},n.quantity=function(t){return Math.pow(10,Math.floor(Math.log(t)/Math.LN10))},n.nice=function(t,e){var i,r=n.quantity(t),o=t/r;return i=e?o<1.5?1:o<2.5?2:o<4?3:o<7?5:10:o<1?1:o<2?2:o<3?3:o<5?5:10,i*r},n.reformIntervals=function(t){function e(t,i,n){return t.interval[n]<i.interval[n]||t.interval[n]===i.interval[n]&&(t.close[n]-i.close[n]===(n?-1:1)||!n&&e(t,i,1))}t.sort(function(t,i){return e(t,i,0)?-1:1});for(var i=-(1/0),n=1,r=0;r<t.length;){for(var o=t[r].interval,a=t[r].close,s=0;s<2;s++)o[s]<=i&&(o[s]=i,a[s]=s?1:1-n),i=o[s],n=a[s];o[0]===o[1]&&a[0]*a[1]!==1?t.splice(r,1):r++}return t},n.isNumeric=function(t){return t-parseFloat(t)>=0},t.exports=n},function(t,e){var i="undefined"==typeof Float32Array?Array:Float32Array,n={create:function(t,e){var n=new i(2);return null==t&&(t=0),null==e&&(e=0),n[0]=t,n[1]=e,n},copy:function(t,e){return t[0]=e[0],t[1]=e[1],t},clone:function(t){var e=new i(2);return e[0]=t[0],e[1]=t[1],e},set:function(t,e,i){return t[0]=e,t[1]=i,t},add:function(t,e,i){return t[0]=e[0]+i[0],t[1]=e[1]+i[1],t},scaleAndAdd:function(t,e,i,n){return t[0]=e[0]+i[0]*n,t[1]=e[1]+i[1]*n,t},sub:function(t,e,i){return t[0]=e[0]-i[0],t[1]=e[1]-i[1],t},len:function(t){return Math.sqrt(this.lenSquare(t))},lenSquare:function(t){return t[0]*t[0]+t[1]*t[1]},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:function(t,e,i){return t[0]=e[0]*i,t[1]=e[1]*i,t},normalize:function(t,e){var i=n.len(e);return 0===i?(t[0]=0,t[1]=0):(t[0]=e[0]/i,t[1]=e[1]/i),t},distance:function(t,e){return Math.sqrt((t[0]-e[0])*(t[0]-e[0])+(t[1]-e[1])*(t[1]-e[1]))},distanceSquare:function(t,e){return(t[0]-e[0])*(t[0]-e[0])+(t[1]-e[1])*(t[1]-e[1])},negate:function(t,e){return t[0]=-e[0],t[1]=-e[1],t},lerp:function(t,e,i,n){return t[0]=e[0]+n*(i[0]-e[0]),t[1]=e[1]+n*(i[1]-e[1]),t},applyTransform:function(t,e,i){var n=e[0],r=e[1];return t[0]=i[0]*n+i[2]*r+i[4],t[1]=i[1]*n+i[3]*r+i[5],t},min:function(t,e,i){return t[0]=Math.min(e[0],i[0]),t[1]=Math.min(e[1],i[1]),t},max:function(t,e,i){return t[0]=Math.max(e[0],i[0]),t[1]=Math.max(e[1],i[1]),t}};n.length=n.len,n.lengthSquare=n.lenSquare,n.dist=n.distance,n.distSquare=n.distanceSquare,t.exports=n},function(t,e,i){function n(t,e){return t&&t.hasOwnProperty(e)}var r=i(8),o=i(4),a=i(11),s=i(1),l=s.each,h=s.isObject,u={};u.normalizeToArray=function(t){return t instanceof Array?t:null==t?[]:[t]},u.defaultEmphasis=function(t,e){if(t){var i=t.emphasis=t.emphasis||{},n=t.normal=t.normal||{};l(e,function(t){var e=s.retrieve(i[t],n[t]);null!=e&&(i[t]=e)})}},u.LABEL_OPTIONS=["position","offset","show","textStyle","distance","formatter"],u.getDataItemValue=function(t){return t&&(null==t.value?t:t.value)},u.isDataItemOption=function(t){return h(t)&&!(t instanceof Array)},u.converDataValue=function(t,e){var i=e&&e.type;return"ordinal"===i?t:("time"!==i||isFinite(t)||null==t||"-"===t||(t=+o.parseDate(t)),null==t||""===t?NaN:+t)},u.createDataFormatModel=function(t,e){var i=new a;return s.mixin(i,u.dataFormatMixin),i.seriesIndex=e.seriesIndex,i.name=e.name||"",i.mainType=e.mainType,i.subType=e.subType,i.getData=function(){return t},i},u.dataFormatMixin={getDataParams:function(t,e){var i=this.getData(e),n=this.seriesIndex,r=this.name,o=this.getRawValue(t,e),a=i.getRawIndex(t),s=i.getName(t,!0),l=i.getRawDataItem(t);return{componentType:this.mainType,componentSubType:this.subType,seriesType:"series"===this.mainType?this.subType:null,seriesIndex:n,seriesName:r,name:s,dataIndex:a,data:l,dataType:e,value:o,color:i.getItemVisual(t,"color"),$vars:["seriesName","name","value"]}},getFormattedLabel:function(t,e,i,n){e=e||"normal";var o=this.getData(i),a=o.getItemModel(t),s=this.getDataParams(t,i);null!=n&&s.value instanceof Array&&(s.value=s.value[n]);var l=a.get(["label",e,"formatter"]);return"function"==typeof l?(s.status=e,l(s)):"string"==typeof l?r.formatTpl(l,s):void 0},getRawValue:function(t,e){var i=this.getData(e),n=i.getRawDataItem(t);if(null!=n)return!h(n)||n instanceof Array?n:n.value},formatTooltip:s.noop},u.mappingToExists=function(t,e){e=(e||[]).slice();var i=s.map(t||[],function(t,e){return{exist:t}});return l(e,function(t,n){if(h(t)){for(var r=0;r<i.length;r++)if(!i[r].option&&null!=t.id&&i[r].exist.id===t.id+"")return i[r].option=t,void(e[n]=null);for(var r=0;r<i.length;r++){var o=i[r].exist;if(!(i[r].option||null!=o.id&&null!=t.id||null==t.name||u.isIdInner(t)||u.isIdInner(o)||o.name!==t.name+""))return i[r].option=t,void(e[n]=null)}}}),l(e,function(t,e){if(h(t)){for(var n=0;n<i.length;n++){var r=i[n].exist;if(!i[n].option&&!u.isIdInner(r)&&null==t.id){i[n].option=t;break}}n>=i.length&&i.push({option:t})}}),i},u.makeIdAndName=function(t){var e={};l(t,function(t,i){var n=t.exist;n&&(e[n.id]=t)}),l(t,function(t,i){var n=t.option;s.assert(!n||null==n.id||!e[n.id]||e[n.id]===t,"id duplicates: "+(n&&n.id)),n&&null!=n.id&&(e[n.id]=t),!t.keyInfo&&(t.keyInfo={})}),l(t,function(t,i){var n=t.exist,r=t.option,o=t.keyInfo;if(h(r)){if(o.name=null!=r.name?r.name+"":n?n.name:"\0-",n)o.id=n.id;else if(null!=r.id)o.id=r.id+"";else{var a=0;do o.id="\0"+o.name+"\0"+a++;while(e[o.id])}e[o.id]=t}})},u.isIdInner=function(t){return h(t)&&t.id&&0===(t.id+"").indexOf("\0_ec_\0")},u.compressBatches=function(t,e){function i(t,e,i){for(var n=0,r=t.length;n<r;n++)for(var o=t[n].seriesId,a=u.normalizeToArray(t[n].dataIndex),s=i&&i[o],l=0,h=a.length;l<h;l++){var c=a[l];s&&s[c]?s[c]=null:(e[o]||(e[o]={}))[c]=1}}function n(t,e){var i=[];for(var r in t)if(t.hasOwnProperty(r)&&null!=t[r])if(e)i.push(+r);else{var o=n(t[r],!0);o.length&&i.push({seriesId:r,dataIndex:o})}return i}var r={},o={};return i(t||[],r),i(e||[],o,r),[n(r),n(o)]},u.queryDataIndex=function(t,e){return null!=e.dataIndexInside?e.dataIndexInside:null!=e.dataIndex?s.isArray(e.dataIndex)?s.map(e.dataIndex,function(e){return t.indexOfRawIndex(e)}):t.indexOfRawIndex(e.dataIndex):null!=e.name?s.isArray(e.name)?s.map(e.name,function(e){return t.indexOfName(e)}):t.indexOfName(e.name):void 0},u.parseFinder=function(t,e,i){if(s.isString(e)){var r={};r[e+"Index"]=0,e=r}var o=i&&i.defaultMainType;!o||n(e,o+"Index")||n(e,o+"Id")||n(e,o+"Name")||(e[o+"Index"]=0);var a={};return l(e,function(i,n){var i=e[n];if("dataIndex"===n||"dataIndexInside"===n)return void(a[n]=i);var r=n.match(/^(\w+)(Index|Id|Name)$/)||[],o=r[1],s=r[2];if(o&&s){var l={mainType:o};l[s.toLowerCase()]=i;var h=t.queryComponents(l);a[o+"Models"]=h,a[o+"Model"]=h[0]}}),a},t.exports=u},function(t,e,i){function n(t){r.call(this,t),this.path=new a}var r=i(36),o=i(1),a=i(29),s=i(149),l=i(65),h=l.prototype.getCanvasPattern,u=Math.abs;n.prototype={constructor:n,type:"path",__dirtyPath:!0,strokeContainThreshold:5,brush:function(t,e){var i=this.style,n=this.path,r=i.hasStroke(),o=i.hasFill(),a=i.fill,s=i.stroke,l=o&&!!a.colorStops,u=r&&!!s.colorStops,c=o&&!!a.image,d=r&&!!s.image;if(i.bind(t,this,e),this.setTransform(t),this.__dirty){var f=this.getBoundingRect();l&&(this._fillGradient=i.getGradient(t,a,f)),u&&(this._strokeGradient=i.getGradient(t,s,f))}l?t.fillStyle=this._fillGradient:c&&(t.fillStyle=h.call(a,t)),u?t.strokeStyle=this._strokeGradient:d&&(t.strokeStyle=h.call(s,t));var p=i.lineDash,g=i.lineDashOffset,m=!!t.setLineDash,v=this.getGlobalScale();n.setScale(v[0],v[1]),this.__dirtyPath||p&&!m&&r?(n=this.path.beginPath(t),p&&!m&&(n.setLineDash(p),n.setLineDashOffset(g)),this.buildPath(n,this.shape,!1),this.__dirtyPath=!1):(t.beginPath(),this.path.rebuildPath(t)),o&&n.fill(t),p&&m&&(t.setLineDash(p),t.lineDashOffset=g),r&&n.stroke(t),p&&m&&t.setLineDash([]),this.restoreTransform(t),null!=i.text&&this.drawRectText(t,this.getBoundingRect())},buildPath:function(t,e,i){},getBoundingRect:function(){var t=this._rect,e=this.style,i=!t;if(i){var n=this.path;this.__dirtyPath&&(n.beginPath(),this.buildPath(n,this.shape,!1)),t=n.getBoundingRect()}if(this._rect=t,e.hasStroke()){var r=this._rectWithStroke||(this._rectWithStroke=t.clone());if(this.__dirty||i){r.copy(t);var o=e.lineWidth,a=e.strokeNoScale?this.getLineScale():1;e.hasFill()||(o=Math.max(o,this.strokeContainThreshold||4)),a>1e-10&&(r.width+=o/a,r.height+=o/a,r.x-=o/a/2,r.y-=o/a/2)}return r}return t},contain:function(t,e){var i=this.transformCoordToLocal(t,e),n=this.getBoundingRect(),r=this.style;if(t=i[0],e=i[1],n.contain(t,e)){var o=this.path.data;if(r.hasStroke()){var a=r.lineWidth,l=r.strokeNoScale?this.getLineScale():1;if(l>1e-10&&(r.hasFill()||(a=Math.max(a,this.strokeContainThreshold)),s.containStroke(o,a/l,t,e)))return!0}if(r.hasFill())return s.contain(o,t,e)}return!1},dirty:function(t){null==t&&(t=!0),t&&(this.__dirtyPath=t,this._rect=null),this.__dirty=!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):r.prototype.attrKV.call(this,t,e)},setShape:function(t,e){var i=this.shape;if(i){if(o.isObject(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&&u(t[0]-1)>1e-10&&u(t[3]-1)>1e-10?Math.sqrt(u(t[0]*t[3]-t[2]*t[1])):1}},n.extend=function(t){var e=function(e){n.call(this,e),t.style&&this.style.extendFrom(t.style,!1);var i=t.shape;if(i){this.shape=this.shape||{};var r=this.shape;for(var o in i)!r.hasOwnProperty(o)&&i.hasOwnProperty(o)&&(r[o]=i[o])}t.init&&t.init.call(this,e)};o.inherits(e,n);for(var i in t)"style"!==i&&"shape"!==i&&(e.prototype[i]=t[i]);return e},o.inherits(n,r),t.exports=n},function(t,e,i){var n=i(1),r=i(4),o=i(17),a={};a.addCommas=function(t){return isNaN(t)?"-":(t=(t+"").split("."),t[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,"$1,")+(t.length>1?"."+t[1]:""))},a.toCamelCase=function(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},a.normalizeCssArray=function(t){var e=t.length;return"number"==typeof t?[t,t,t,t]:2===e?[t[0],t[1],t[0],t[1]]:3===e?[t[0],t[1],t[2],t[1]]:t};var s=a.encodeHTML=function(t){return String(t).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")},l=["a","b","c","d","e","f","g"],h=function(t,e){return"{"+t+(null==e?"":e)+"}"};a.formatTpl=function(t,e,i){n.isArray(e)||(e=[e]);var r=e.length;if(!r)return"";for(var o=e[0].$vars||[],a=0;a<o.length;a++){var u=l[a],c=h(u,0);t=t.replace(h(u),i?s(c):c)}for(var d=0;d<r;d++)for(var f=0;f<o.length;f++){var c=e[d][o[f]];t=t.replace(h(l[f],d),i?s(c):c)}return t};var u=function(t){return t<10?"0"+t:t};a.formatTime=function(t,e){"week"!==t&&"month"!==t&&"quarter"!==t&&"half-year"!==t&&"year"!==t||(t="MM-dd\nyyyy");var i=r.parseDate(e),n=i.getFullYear(),o=i.getMonth()+1,a=i.getDate(),s=i.getHours(),l=i.getMinutes(),h=i.getSeconds();return t=t.replace("MM",u(o)).toLowerCase().replace("yyyy",n).replace("yy",n%100).replace("dd",u(a)).replace("d",a).replace("hh",u(s)).replace("h",s).replace("mm",u(l)).replace("m",l).replace("ss",u(h)).replace("s",h)},a.capitalFirst=function(t){return t?t.charAt(0).toUpperCase()+t.substr(1):t},a.truncateText=o.truncateText,t.exports=a},function(t,e,i){"use strict";function n(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}var r=i(5),o=i(20),a=r.applyTransform,s=Math.min,l=Math.max;n.prototype={constructor:n,union:function(t){var e=s(t.x,this.x),i=s(t.y,this.y);this.width=l(t.x+t.width,this.x+this.width)-e,this.height=l(t.y+t.height,this.y+this.height)-i,this.x=e,this.y=i},applyTransform:function(){var t=[],e=[],i=[],n=[];return function(r){if(r){t[0]=i[0]=this.x,t[1]=n[1]=this.y,e[0]=n[0]=this.x+this.width,e[1]=i[1]=this.y+this.height,a(t,t,r),a(e,e,r),a(i,i,r),a(n,n,r),this.x=s(t[0],e[0],i[0],n[0]),this.y=s(t[1],e[1],i[1],n[1]);var o=l(t[0],e[0],i[0],n[0]),h=l(t[1],e[1],i[1],n[1]);this.width=o-this.x,this.height=h-this.y}}}(),calculateTransform:function(t){var e=this,i=t.width/e.width,n=t.height/e.height,r=o.create();return o.translate(r,r,[-e.x,-e.y]),o.scale(r,r,[i,n]),o.translate(r,r,[t.x,t.y]),r},intersect:function(t){if(!t)return!1;t instanceof n||(t=n.create(t));var e=this,i=e.x,r=e.x+e.width,o=e.y,a=e.y+e.height,s=t.x,l=t.x+t.width,h=t.y,u=t.y+t.height;return!(r<s||l<i||a<h||u<o)},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 n(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}}},n.create=function(t){return new n(t.x,t.y,t.width,t.height)},t.exports=n},function(t,e){function i(t){var e={},i={},n=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);return n&&(i.firefox=!0,i.version=n[1]),r&&(i.ie=!0,i.version=r[1]),o&&(i.edge=!0,i.version=o[1]),a&&(i.weChat=!0),{browser:i,os:e,node:!1,canvasSupported:!!document.createElement("canvas").getContext,touchEventsSupported:"ontouchstart"in window&&!i.ie&&!i.edge,pointerEventsSupported:"onpointerdown"in window&&(i.edge||i.ie&&i.version>=11)}}var n={};n="undefined"==typeof navigator?{browser:{},os:{},node:!0,canvasSupported:!0}:i(navigator.userAgent),t.exports=n},function(t,e,i){function n(t,e,i){this.parentModel=e,this.ecModel=i,this.option=t}function r(t,e,i){for(var n=0;n<e.length&&(!e[n]||(t=t&&"object"==typeof t?t[e[n]]:null,null!=t));n++);return null==t&&i&&(t=i.get(e)),t}function o(t,e){var i=s.get(t,"getParent");return i?i.call(t,e):t.parentModel}var a=i(1),s=i(15),l=i(10);n.prototype={constructor:n,init:null,mergeOption:function(t){a.merge(this.option,t,!0)},get:function(t,e){return null==t?this.option:r(this.option,this.parsePath(t),!e&&o(this,t))},getShallow:function(t,e){var i=this.option,n=null==i?i:i[t],r=!e&&o(this,t);return null==n&&r&&(n=r.getShallow(t)),n},getModel:function(t,e){var i,a=null==t?this.option:r(this.option,t=this.parsePath(t));return e=e||(i=o(this,t))&&i.getModel(t),new n(a,e,this.ecModel)},isEmpty:function(){return null==this.option},restoreData:function(){},clone:function(){var t=this.constructor;return new t(a.clone(this.option))},setReadOnly:function(t){s.setReadOnly(this,t)},parsePath:function(t){return"string"==typeof t&&(t=t.split(".")),t},customizeGetParent:function(t){s.set(this,"getParent",t)},isAnimationEnabled:function(){if(!l.node){if(null!=this.option.animation)return!!this.option.animation;if(this.parentModel)return this.parentModel.isAnimationEnabled()}}},s.enableClassExtend(n);var h=a.mixin;h(n,i(131)),h(n,i(128)),h(n,i(132)),h(n,i(130)),t.exports=n},function(t,e,i){"use strict";function n(t,e,i,n,r){var o=0,a=0;null==n&&(n=1/0),null==r&&(r=1/0);var s=0;e.eachChild(function(l,h){var u,c,d=l.position,f=l.getBoundingRect(),p=e.childAt(h+1),g=p&&p.getBoundingRect();if("horizontal"===t){var m=f.width+(g?-g.x+f.x:0);u=o+m,u>n||l.newline?(o=0,u=m,a+=s+i,s=f.height):s=Math.max(s,f.height)}else{var v=f.height+(g?-g.y+f.y:0);c=a+v,c>r||l.newline?(o+=s+i,a=0,c=v,s=f.width):s=Math.max(s,f.width)}l.newline||(d[0]=o,d[1]=a,"horizontal"===t?o=u+i:a=c+i)})}var r=i(1),o=i(9),a=i(4),s=i(8),l=a.parsePercent,h=r.each,u={},c=u.LOCATION_PARAMS=["left","right","top","bottom","width","height"];u.box=n,u.vbox=r.curry(n,"vertical"),u.hbox=r.curry(n,"horizontal"),u.getAvailableSize=function(t,e,i){var n=e.width,r=e.height,o=l(t.x,n),a=l(t.y,r),h=l(t.x2,n),u=l(t.y2,r);return(isNaN(o)||isNaN(parseFloat(t.x)))&&(o=0),(isNaN(h)||isNaN(parseFloat(t.x2)))&&(h=n),(isNaN(a)||isNaN(parseFloat(t.y)))&&(a=0),(isNaN(u)||isNaN(parseFloat(t.y2)))&&(u=r),i=s.normalizeCssArray(i||0),{width:Math.max(h-o-i[1]-i[3],0),height:Math.max(u-a-i[0]-i[2],0)}},u.getLayoutRect=function(t,e,i){i=s.normalizeCssArray(i||0);var n=e.width,r=e.height,a=l(t.left,n),h=l(t.top,r),u=l(t.right,n),c=l(t.bottom,r),d=l(t.width,n),f=l(t.height,r),p=i[2]+i[0],g=i[1]+i[3],m=t.aspect;switch(isNaN(d)&&(d=n-u-g-a),isNaN(f)&&(f=r-c-p-h),isNaN(d)&&isNaN(f)&&(m>n/r?d=.8*n:f=.8*r),null!=m&&(isNaN(d)&&(d=m*f),isNaN(f)&&(f=d/m)),isNaN(a)&&(a=n-u-d-g),isNaN(h)&&(h=r-c-f-p),t.left||t.right){case"center":a=n/2-d/2-i[3];break;case"right":a=n-d-g}switch(t.top||t.bottom){case"middle":case"center":h=r/2-f/2-i[0];break;case"bottom":h=r-f-p}a=a||0,h=h||0,isNaN(d)&&(d=n-a-(u||0)),isNaN(f)&&(f=r-h-(c||0));var v=new o(a+i[3],h+i[0],d,f);return v.margin=i,v},u.positionElement=function(t,e,i,n,a){var s=!a||!a.hv||a.hv[0],l=!a||!a.hv||a.hv[1],h=a&&a.boundingMode||"all";if(s||l){var c;if("raw"===h)c="group"===t.type?new o(0,0,+e.width||0,+e.height||0):t.getBoundingRect();else if(c=t.getBoundingRect(),t.needLocalTransform()){var d=t.getLocalTransform();c=c.clone(),c.applyTransform(d)}e=u.getLayoutRect(r.defaults({width:c.width,
-height:c.height},e),i,n);var f=t.position,p=s?e.x-c.x:0,g=l?e.y-c.y:0;t.attr("position","raw"===h?[p,g]:[f[0]+p,f[1]+g])}},u.mergeLayoutParam=function(t,e,i){function n(n){var r={},s=0,l={},u=0,c=i.ignoreSize?1:2;if(h(n,function(e){l[e]=t[e]}),h(n,function(t){o(e,t)&&(r[t]=l[t]=e[t]),a(r,t)&&s++,a(l,t)&&u++}),u!==c&&s){if(s>=c)return r;for(var d=0;d<n.length;d++){var f=n[d];if(!o(r,f)&&o(t,f)){r[f]=t[f];break}}return r}return l}function o(t,e){return t.hasOwnProperty(e)}function a(t,e){return null!=t[e]&&"auto"!==t[e]}function s(t,e,i){h(t,function(t){e[t]=i[t]})}!r.isObject(i)&&(i={});var l=["width","left","right"],u=["height","top","bottom"],c=n(l),d=n(u);s(l,t,c),s(u,t,d)},u.getLayoutParams=function(t){return u.copyLayoutParams({},t)},u.copyLayoutParams=function(t,e){return e&&t&&h(c,function(i){e.hasOwnProperty(i)&&(t[i]=e[i])}),t},t.exports=u},function(t,e,i){function n(t){var e=[];return o.each(u.getClassesByMainType(t),function(t){a.apply(e,t.prototype.dependencies||[])}),o.map(e,function(t){return l.parseClassType(t).main})}var r=i(11),o=i(1),a=Array.prototype.push,s=i(44),l=i(15),h=i(12),u=r.extend({type:"component",id:"",name:"",mainType:"",subType:"",componentIndex:0,defaultOption:null,ecModel:null,dependentModels:[],uid:null,layoutMode:null,$constructor:function(t,e,i,n){r.call(this,t,e,i,n),this.uid=s.getUID("componentModel")},init:function(t,e,i,n){this.mergeDefaultAndTheme(t,i)},mergeDefaultAndTheme:function(t,e){var i=this.layoutMode,n=i?h.getLayoutParams(t):{},r=e.getTheme();o.merge(t,r.get(this.mainType)),o.merge(t,this.getDefaultOption()),i&&h.mergeLayoutParam(t,n,i)},mergeOption:function(t,e){o.merge(this.option,t,!0);var i=this.layoutMode;i&&h.mergeLayoutParam(this.option,t,i)},optionUpdated:function(t,e){},getDefaultOption:function(){if(!l.hasOwn(this,"__defaultOption")){for(var t=[],e=this.constructor;e;){var i=e.prototype.defaultOption;i&&t.push(i),e=e.superClass}for(var n={},r=t.length-1;r>=0;r--)n=o.merge(n,t[r],!0);l.set(this,"__defaultOption",n)}return l.get(this,"__defaultOption")},getReferringComponents:function(t){return this.ecModel.queryComponents({mainType:t,index:this.get(t+"Index",!0),id:this.get(t+"Id",!0)})}});l.enableClassManagement(u,{registerWhenExtend:!0}),s.enableSubTypeDefaulter(u),s.enableTopologicalTravel(u,n),o.mixin(u,i(129)),t.exports=u},function(t,e,i){(function(e){function n(t){return d.isArray(t)||(t=[t]),t}function r(t,e){var i=t.dimensions,n=new v(d.map(i,t.getDimensionInfo,t),t.hostModel);m(n,t);for(var r=n._storage={},o=t._storage,a=0;a<i.length;a++){var s=i[a],l=o[s];d.indexOf(e,s)>=0?r[s]=new l.constructor(o[s].length):r[s]=o[s]}return n}var o="undefined",a="undefined"==typeof window?e:window,s=typeof a.Float64Array===o?Array:a.Float64Array,l=typeof a.Int32Array===o?Array:a.Int32Array,h={"float":s,"int":l,ordinal:Array,number:Array,time:Array},u=i(11),c=i(43),d=i(1),f=i(6),p=d.isObject,g=["stackedOn","hasItemOption","_nameList","_idList","_rawData"],m=function(t,e){d.each(g.concat(e.__wrappedMethods||[]),function(i){e.hasOwnProperty(i)&&(t[i]=e[i])}),t.__wrappedMethods=e.__wrappedMethods},v=function(t,e){t=t||["x","y"];for(var i={},n=[],r=0;r<t.length;r++){var o,a={};"string"==typeof t[r]?(o=t[r],a={name:o,stackable:!1,type:"number"}):(a=t[r],o=a.name,a.type=a.type||"number"),n.push(o),i[o]=a}this.dimensions=n,this._dimensionInfos=i,this.hostModel=e,this.dataType,this.indices=[],this._storage={},this._nameList=[],this._idList=[],this._optionModels=[],this.stackedOn=null,this._visual={},this._layout={},this._itemVisuals=[],this._itemLayouts=[],this._graphicEls=[],this._rawData,this._extent},y=v.prototype;y.type="list",y.hasItemOption=!0,y.getDimension=function(t){return isNaN(t)||(t=this.dimensions[t]||t),t},y.getDimensionInfo=function(t){return d.clone(this._dimensionInfos[this.getDimension(t)])},y.initData=function(t,e,i){t=t||[],this._rawData=t;var n=this._storage={},r=this.indices=[],o=this.dimensions,a=t.length,s=this._dimensionInfos,l=[],u={};e=e||[];for(var c=0;c<o.length;c++){var d=s[o[c]],p=h[d.type];n[o[c]]=new p(a)}var g=this;i||(g.hasItemOption=!1),i=i||function(t,e,i,n){var r=f.getDataItemValue(t);return f.isDataItemOption(t)&&(g.hasItemOption=!0),f.converDataValue(r instanceof Array?r[n]:r,s[e])};for(var m=0;m<t.length;m++){for(var v=t[m],y=0;y<o.length;y++){var x=o[y],_=n[x];_[m]=i(v,x,m,y)}r.push(m)}for(var c=0;c<t.length;c++){e[c]||t[c]&&null!=t[c].name&&(e[c]=t[c].name);var b=e[c]||"",w=t[c]&&t[c].id;!w&&b&&(u[b]=u[b]||0,w=b,u[b]>0&&(w+="__ec__"+u[b]),u[b]++),w&&(l[c]=w)}this._nameList=e,this._idList=l},y.count=function(){return this.indices.length},y.get=function(t,e,i){var n=this._storage,r=this.indices[e];if(null==r)return NaN;var o=n[t]&&n[t][r];if(i){var a=this._dimensionInfos[t];if(a&&a.stackable)for(var s=this.stackedOn;s;){var l=s.get(t,e);(o>=0&&l>0||o<=0&&l<0)&&(o+=l),s=s.stackedOn}}return o},y.getValues=function(t,e,i){var n=[];d.isArray(t)||(i=e,e=t,t=this.dimensions);for(var r=0,o=t.length;r<o;r++)n.push(this.get(t[r],e,i));return n},y.hasValue=function(t){for(var e=this.dimensions,i=this._dimensionInfos,n=0,r=e.length;n<r;n++)if("ordinal"!==i[e[n]].type&&isNaN(this.get(e[n],t)))return!1;return!0},y.getDataExtent=function(t,e,i){t=this.getDimension(t);var n=this._storage[t],r=this.getDimensionInfo(t);e=r&&r.stackable&&e;var o,a=(this._extent||(this._extent={}))[t+!!e];if(a)return a;if(n){for(var s=1/0,l=-(1/0),h=0,u=this.count();h<u;h++)o=this.get(t,h,e),i&&!i(o,t,h)||(o<s&&(s=o),o>l&&(l=o));return this._extent[t+!!e]=[s,l]}return[1/0,-(1/0)]},y.getSum=function(t,e){var i=this._storage[t],n=0;if(i)for(var r=0,o=this.count();r<o;r++){var a=this.get(t,r,e);isNaN(a)||(n+=a)}return n},y.indexOf=function(t,e){var i=this._storage,n=i[t],r=this.indices;if(n)for(var o=0,a=r.length;o<a;o++){var s=r[o];if(n[s]===e)return o}return-1},y.indexOfName=function(t){for(var e=this.indices,i=this._nameList,n=0,r=e.length;n<r;n++){var o=e[n];if(i[o]===t)return n}return-1},y.indexOfRawIndex=function(t){var e=this.indices,i=e[t];if(null!=i&&i===t)return t;for(var n=0,r=e.length-1;n<=r;){var o=(n+r)/2|0;if(e[o]<t)n=o+1;else{if(!(e[o]>t))return o;r=o-1}}return-1},y.indexOfNearest=function(t,e,i,n){var r=this._storage,o=r[t];null==n&&(n=1/0);var a=-1;if(o)for(var s=Number.MAX_VALUE,l=0,h=this.count();l<h;l++){var u=e-this.get(t,l,i),c=Math.abs(u);u<=n&&(c<s||c===s&&u>0)&&(s=c,a=l)}return a},y.getRawIndex=function(t){var e=this.indices[t];return null==e?-1:e},y.getRawDataItem=function(t){return this._rawData[this.getRawIndex(t)]},y.getName=function(t){return this._nameList[this.indices[t]]||""},y.getId=function(t){return this._idList[this.indices[t]]||this.getRawIndex(t)+""},y.each=function(t,e,i,r){"function"==typeof t&&(r=i,i=e,e=t,t=[]),t=d.map(n(t),this.getDimension,this);var o=[],a=t.length,s=this.indices;r=r||this;for(var l=0;l<s.length;l++)switch(a){case 0:e.call(r,l);break;case 1:e.call(r,this.get(t[0],l,i),l);break;case 2:e.call(r,this.get(t[0],l,i),this.get(t[1],l,i),l);break;default:for(var h=0;h<a;h++)o[h]=this.get(t[h],l,i);o[h]=l,e.apply(r,o)}},y.filterSelf=function(t,e,i,r){"function"==typeof t&&(r=i,i=e,e=t,t=[]),t=d.map(n(t),this.getDimension,this);var o=[],a=[],s=t.length,l=this.indices;r=r||this;for(var h=0;h<l.length;h++){var u;if(1===s)u=e.call(r,this.get(t[0],h,i),h);else{for(var c=0;c<s;c++)a[c]=this.get(t[c],h,i);a[c]=h,u=e.apply(r,a)}u&&o.push(l[h])}return this.indices=o,this._extent={},this},y.mapArray=function(t,e,i,n){"function"==typeof t&&(n=i,i=e,e=t,t=[]);var r=[];return this.each(t,function(){r.push(e&&e.apply(this,arguments))},i,n),r},y.map=function(t,e,i,o){t=d.map(n(t),this.getDimension,this);var a=r(this,t),s=a.indices=this.indices,l=a._storage,h=[];return this.each(t,function(){var i=arguments[arguments.length-1],n=e&&e.apply(this,arguments);if(null!=n){"number"==typeof n&&(h[0]=n,n=h);for(var r=0;r<n.length;r++){var o=t[r],a=l[o],u=s[i];a&&(a[u]=n[r])}}},i,o),a},y.downSample=function(t,e,i,n){for(var o=r(this,[t]),a=this._storage,s=o._storage,l=this.indices,h=o.indices=[],u=[],c=[],d=Math.floor(1/e),f=s[t],p=this.count(),g=0;g<a[t].length;g++)s[t][g]=a[t][g];for(var g=0;g<p;g+=d){d>p-g&&(d=p-g,u.length=d);for(var m=0;m<d;m++){var v=l[g+m];u[m]=f[v],c[m]=v}var y=i(u),v=c[n(u,y)||0];f[v]=y,h.push(v)}return o},y.getItemModel=function(t){var e=this.hostModel;return t=this.indices[t],new u(this._rawData[t],e,e&&e.ecModel)},y.diff=function(t){var e,i=this._idList,n=t&&t._idList,r="e\0\0";return new c(t?t.indices:[],this.indices,function(t){return null!=(e=n[t])?e:r+t},function(t){return null!=(e=i[t])?e:r+t})},y.getVisual=function(t){var e=this._visual;return e&&e[t]},y.setVisual=function(t,e){if(p(t))for(var i in t)t.hasOwnProperty(i)&&this.setVisual(i,t[i]);else this._visual=this._visual||{},this._visual[t]=e},y.setLayout=function(t,e){if(p(t))for(var i in t)t.hasOwnProperty(i)&&this.setLayout(i,t[i]);else this._layout[t]=e},y.getLayout=function(t){return this._layout[t]},y.getItemLayout=function(t){return this._itemLayouts[t]},y.setItemLayout=function(t,e,i){this._itemLayouts[t]=i?d.extend(this._itemLayouts[t]||{},e):e},y.clearItemLayouts=function(){this._itemLayouts.length=0},y.getItemVisual=function(t,e,i){var n=this._itemVisuals[t],r=n&&n[e];return null!=r||i?r:this.getVisual(e)},y.setItemVisual=function(t,e,i){var n=this._itemVisuals[t]||{};if(this._itemVisuals[t]=n,p(e))for(var r in e)e.hasOwnProperty(r)&&(n[r]=e[r]);else n[e]=i},y.clearAllVisual=function(){this._visual={},this._itemVisuals=[]};var x=function(t){t.seriesIndex=this.seriesIndex,t.dataIndex=this.dataIndex,t.dataType=this.dataType};y.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(x,e)),this._graphicEls[t]=e},y.getItemGraphicEl=function(t){return this._graphicEls[t]},y.eachItemGraphicEl=function(t,e){d.each(this._graphicEls,function(i,n){i&&t&&t.call(e,i,n)})},y.cloneShallow=function(){var t=d.map(this.dimensions,this.getDimensionInfo,this),e=new v(t,this.hostModel);return e._storage=this._storage,m(e,this),e.indices=this.indices.slice(),this._extent&&(e._extent=d.extend({},this._extent)),e},y.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(d.slice(arguments)))})},y.TRANSFERABLE_METHODS=["cloneShallow","downSample","map"],y.CHANGABLE_METHODS=["filterSelf"],t.exports=v}).call(e,function(){return this}())},function(t,e,i){function n(t){a.assert(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(t),'componentType "'+t+'" illegal')}function r(t,e){var i=a.slice(arguments,2);return this.superClass.prototype[e].apply(t,i)}function o(t,e,i){return this.superClass.prototype[e].apply(t,i)}var a=i(1),s={},l=".",h="___EC__COMPONENT__CONTAINER___",u="\0ec_\0";s.set=function(t,e,i){return t[u+e]=i},s.get=function(t,e){return t[u+e]},s.hasOwn=function(t,e){return t.hasOwnProperty(u+e)};var c=s.parseClassType=function(t){var e={main:"",sub:""};return t&&(t=t.split(l),e.main=t[0]||"",e.sub=t[1]||""),e};s.enableClassExtend=function(t,e){t.$constructor=t,t.extend=function(t){var e=this,i=function(){t.$constructor?t.$constructor.apply(this,arguments):e.apply(this,arguments)};return a.extend(i.prototype,t),i.extend=this.extend,i.superCall=r,i.superApply=o,a.inherits(i,this),i.superClass=e,i}},s.enableClassManagement=function(t,e){function i(t){var e=r[t.main];return e&&e[h]||(e=r[t.main]={},e[h]=!0),e}e=e||{};var r={};if(t.registerClass=function(t,e){if(e)if(n(e),e=c(e),e.sub){if(e.sub!==h){var o=i(e);o[e.sub]=t}}else r[e.main]=t;return t},t.getClass=function(t,e,i){var n=r[t];if(n&&n[h]&&(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},t.getClassesByMainType=function(t){t=c(t);var e=[],i=r[t.main];return i&&i[h]?a.each(i,function(t,i){i!==h&&e.push(t)}):e.push(i),e},t.hasClass=function(t){return t=c(t),!!r[t.main]},t.getAllClassMainTypes=function(){var t=[];return a.each(r,function(e,i){t.push(i)}),t},t.hasSubTypes=function(t){t=c(t);var e=r[t.main];return e&&e[h]},t.parseClassType=c,e.registerWhenExtend){var o=t.extend;o&&(t.extend=function(e){var i=o.call(this,e);return t.registerClass(i,e.type)})}return t},s.setReadOnly=function(t,e){},t.exports=s},function(t,e,i){"use strict";var n=i(1),r=i(8),o=i(15),a=i(6),s=i(13),l=i(57),h=i(10),u=i(12),c=o.set,d=o.get,f=r.encodeHTML,p=r.addCommas,g=s.extend({type:"series.__base__",seriesIndex:0,coordinateSystem:null,defaultOption:null,legendDataProvider:null,visualColorAccessPath:"itemStyle.normal.color",layoutMode:null,init:function(t,e,i,n){this.seriesIndex=this.componentIndex,this.mergeDefaultAndTheme(t,i),c(this,"dataBeforeProcessed",this.getInitialData(t,i)),this.restoreData()},mergeDefaultAndTheme:function(t,e){var i=this.layoutMode,r=i?u.getLayoutParams(t):{};n.merge(t,e.getTheme().get(this.subType)),n.merge(t,this.getDefaultOption()),a.defaultEmphasis(t.label,a.LABEL_OPTIONS),this.fillDataTextStyle(t.data),i&&u.mergeLayoutParam(t,r,i)},mergeOption:function(t,e){t=n.merge(this.option,t,!0),this.fillDataTextStyle(t.data);var i=this.layoutMode;i&&u.mergeLayoutParam(this.option,t,i);var r=this.getInitialData(t,e);r&&(c(this,"data",r),c(this,"dataBeforeProcessed",r.cloneShallow()))},fillDataTextStyle:function(t){if(t)for(var e=0;e<t.length;e++)t[e]&&t[e].label&&a.defaultEmphasis(t[e].label,a.LABEL_OPTIONS)},getInitialData:function(){},getData:function(t){var e=d(this,"data");return null==t?e:e.getLinkedData(t)},setData:function(t){c(this,"data",t)},getRawData:function(){return d(this,"dataBeforeProcessed")},coordDimToDataDim:function(t){return[t]},dataDimToCoordDim:function(t){return t},getBaseAxis:function(){var t=this.coordinateSystem;return t&&t.getBaseAxis&&t.getBaseAxis()},formatTooltip:function(t,e,i){function o(t){var i=[];return n.each(t,function(t,n){var o,s=a.getDimensionInfo(n),l=s&&s.type;o="ordinal"===l?t+"":"time"===l?e?"":r.formatTime("yyyy/MM/dd hh:mm:ss",t):p(t),o&&i.push(o)}),i.join(", ")}var a=d(this,"data"),s=this.getRawValue(t),l=f(n.isArray(s)?o(s):p(s)),h=a.getName(t),u=a.getItemVisual(t,"color");n.isObject(u)&&u.colorStops&&(u=(u.colorStops[0]||{}).color),u=u||"transparent";var c='<span style="display:inline-block;margin-right:5px;border-radius:10px;width:9px;height:9px;background-color:'+f(u)+'"></span>',g=this.name;return"\0-"===g&&(g=""),e?c+f(this.name)+" : "+l:(g&&f(g)+"<br />")+c+(h?f(h)+" : "+l:l)},isAnimationEnabled:function(){if(h.node)return!1;var t=this.getShallow("animation");return t&&this.getData().count()>this.getShallow("animationThreshold")&&(t=!1),t},restoreData:function(){c(this,"data",d(this,"dataBeforeProcessed").cloneShallow())},getColorFromPalette:function(t,e){var i=this.ecModel,n=l.getColorFromPalette.call(this,t,e);return n||(n=i.getColorFromPalette(t,e)),n},getAxisTooltipDataIndex:null,getTooltipPosition:null});n.mixin(g,a.dataFormatMixin),n.mixin(g,l),t.exports=g},function(t,e,i){function n(t,e){var i=t+":"+e;if(l[i])return l[i];for(var n=(t+"").split("\n"),r=0,o=0,a=n.length;o<a;o++)r=Math.max(p.measureText(n[o],e).width,r);return h>u&&(h=0,l={}),h++,l[i]=r,r}function r(t,e,i,r){var o=((t||"")+"").split("\n").length,a=n(t,e),s=n("国",e),l=o*s,h=new d(0,0,a,l);switch(h.lineHeight=s,r){case"bottom":case"alphabetic":h.y-=s;break;case"middle":h.y-=s/2}switch(i){case"end":case"right":h.x-=h.width;break;case"center":h.x-=h.width/2}return h}function o(t,e,i,n){var r=e.x,o=e.y,a=e.height,s=e.width,l=i.height,h=a/2-l/2,u="left";switch(t){case"left":r-=n,o+=h,u="right";break;case"right":r+=n+s,o+=h,u="left";break;case"top":r+=s/2,o-=n+l,u="center";break;case"bottom":r+=s/2,o+=a+n,u="center";break;case"inside":r+=s/2,o+=h,u="center";break;case"insideLeft":r+=n,o+=h,u="left";break;case"insideRight":r+=s-n,o+=h,u="right";break;case"insideTop":r+=s/2,o+=n,u="center";break;case"insideBottom":r+=s/2,o+=a-l-n,u="center";break;case"insideTopLeft":r+=n,o+=n,u="left";break;case"insideTopRight":r+=s-n,o+=n,u="right";break;case"insideBottomLeft":r+=n,o+=a-l-n;break;case"insideBottomRight":r+=s-n,o+=a-l-n,u="right"}return{x:r,y:o,textAlign:u,textBaseline:"top"}}function a(t,e,i,r,o){if(!e)return"";o=o||{},r=f(r,"...");for(var a=f(o.maxIterations,2),l=f(o.minChar,0),h=n("国",i),u=n("a",i),c=f(o.placeholder,""),d=e=Math.max(0,e-1),p=0;p<l&&d>=u;p++)d-=u;var g=n(r);g>d&&(r="",g=0),d=e-g;for(var m=(t+"").split("\n"),p=0,v=m.length;p<v;p++){var y=m[p],x=n(y,i);if(!(x<=e)){for(var _=0;;_++){if(x<=d||_>=a){y+=r;break}var b=0===_?s(y,d,u,h):x>0?Math.floor(y.length*d/x):0;y=y.substr(0,b),x=n(y,i)}""===y&&(y=c),m[p]=y}}return m.join("\n")}function s(t,e,i,n){for(var r=0,o=0,a=t.length;o<a&&r<e;o++){var s=t.charCodeAt(o);r+=0<=s&&s<=127?i:n}return o}var l={},h=0,u=5e3,c=i(1),d=i(9),f=c.retrieve,p={getWidth:n,getBoundingRect:r,adjustTextPositionOnRect:o,truncateText:a,measureText:function(t,e){var i=c.getContext();return i.font=e||"12px sans-serif",i.measureText(t)}};t.exports=p},function(t,e,i){"use strict";function n(t){return t>-w&&t<w}function r(t){return t>w||t<-w}function o(t,e,i,n,r){var o=1-r;return o*o*(o*t+3*r*e)+r*r*(r*n+3*o*i)}function a(t,e,i,n,r){var o=1-r;return 3*(((e-t)*o+2*(i-e)*r)*o+(n-i)*r*r)}function s(t,e,i,r,o,a){var s=r+3*(e-i)-t,l=3*(i-2*e+t),h=3*(e-t),u=t-o,c=l*l-3*s*h,d=l*h-9*s*u,f=h*h-3*l*u,p=0;if(n(c)&&n(d))if(n(l))a[0]=0;else{var g=-h/l;g>=0&&g<=1&&(a[p++]=g)}else{var m=d*d-4*c*f;if(n(m)){var v=d/c,g=-l/s+v,y=-v/2;g>=0&&g<=1&&(a[p++]=g),y>=0&&y<=1&&(a[p++]=y)}else if(m>0){var x=b(m),w=c*l+1.5*s*(-d+x),M=c*l+1.5*s*(-d-x);w=w<0?-_(-w,T):_(w,T),M=M<0?-_(-M,T):_(M,T);var g=(-l-(w+M))/(3*s);g>=0&&g<=1&&(a[p++]=g)}else{var A=(2*c*l-3*s*d)/(2*b(c*c*c)),I=Math.acos(A)/3,C=b(c),k=Math.cos(I),g=(-l-2*C*k)/(3*s),y=(-l+C*(k+S*Math.sin(I)))/(3*s),L=(-l+C*(k-S*Math.sin(I)))/(3*s);g>=0&&g<=1&&(a[p++]=g),y>=0&&y<=1&&(a[p++]=y),L>=0&&L<=1&&(a[p++]=L)}}return p}function l(t,e,i,o,a){var s=6*i-12*e+6*t,l=9*e+3*o-3*t-9*i,h=3*e-3*t,u=0;if(n(l)){if(r(s)){var c=-h/s;c>=0&&c<=1&&(a[u++]=c)}}else{var d=s*s-4*l*h;if(n(d))a[0]=-s/(2*l);else if(d>0){var f=b(d),c=(-s+f)/(2*l),p=(-s-f)/(2*l);c>=0&&c<=1&&(a[u++]=c),p>=0&&p<=1&&(a[u++]=p)}}return u}function h(t,e,i,n,r,o){var a=(e-t)*r+t,s=(i-e)*r+e,l=(n-i)*r+i,h=(s-a)*r+a,u=(l-s)*r+s,c=(u-h)*r+h;o[0]=t,o[1]=a,o[2]=h,o[3]=c,o[4]=c,o[5]=u,o[6]=l,o[7]=n}function u(t,e,i,n,r,a,s,l,h,u,c){var d,f,p,g,m,v=.005,y=1/0;A[0]=h,A[1]=u;for(var _=0;_<1;_+=.05)I[0]=o(t,i,r,s,_),I[1]=o(e,n,a,l,_),g=x(A,I),g<y&&(d=_,y=g);y=1/0;for(var w=0;w<32&&!(v<M);w++)f=d-v,p=d+v,I[0]=o(t,i,r,s,f),I[1]=o(e,n,a,l,f),g=x(I,A),f>=0&&g<y?(d=f,y=g):(C[0]=o(t,i,r,s,p),C[1]=o(e,n,a,l,p),m=x(C,A),p<=1&&m<y?(d=p,y=m):v*=.5);return c&&(c[0]=o(t,i,r,s,d),c[1]=o(e,n,a,l,d)),b(y)}function c(t,e,i,n){var r=1-n;return r*(r*t+2*n*e)+n*n*i}function d(t,e,i,n){return 2*((1-n)*(e-t)+n*(i-e))}function f(t,e,i,o,a){var s=t-2*e+i,l=2*(e-t),h=t-o,u=0;if(n(s)){if(r(l)){var c=-h/l;c>=0&&c<=1&&(a[u++]=c)}}else{var d=l*l-4*s*h;if(n(d)){var c=-l/(2*s);c>=0&&c<=1&&(a[u++]=c)}else if(d>0){var f=b(d),c=(-l+f)/(2*s),p=(-l-f)/(2*s);c>=0&&c<=1&&(a[u++]=c),p>=0&&p<=1&&(a[u++]=p)}}return u}function p(t,e,i){var n=t+i-2*e;return 0===n?.5:(t-e)/n}function g(t,e,i,n,r){var o=(e-t)*n+t,a=(i-e)*n+e,s=(a-o)*n+o;r[0]=t,r[1]=o,r[2]=s,r[3]=s,r[4]=a,r[5]=i}function m(t,e,i,n,r,o,a,s,l){var h,u=.005,d=1/0;A[0]=a,A[1]=s;for(var f=0;f<1;f+=.05){I[0]=c(t,i,r,f),I[1]=c(e,n,o,f);var p=x(A,I);p<d&&(h=f,d=p)}d=1/0;for(var g=0;g<32&&!(u<M);g++){var m=h-u,v=h+u;I[0]=c(t,i,r,m),I[1]=c(e,n,o,m);var p=x(I,A);if(m>=0&&p<d)h=m,d=p;else{C[0]=c(t,i,r,v),C[1]=c(e,n,o,v);var y=x(C,A);v<=1&&y<d?(h=v,d=y):u*=.5}}return l&&(l[0]=c(t,i,r,h),l[1]=c(e,n,o,h)),b(d)}var v=i(5),y=v.create,x=v.distSquare,_=Math.pow,b=Math.sqrt,w=1e-8,M=1e-4,S=b(3),T=1/3,A=y(),I=y(),C=y();t.exports={cubicAt:o,cubicDerivativeAt:a,cubicRootAt:s,cubicExtrema:l,cubicSubdivide:h,cubicProjectPoint:u,quadraticAt:c,quadraticDerivativeAt:d,quadraticRootAt:f,quadraticExtremum:p,quadraticSubdivide:g,quadraticProjectPoint:m}},function(t,e){function i(t){return t=Math.round(t),t<0?0:t>255?255:t}function n(t){return t=Math.round(t),t<0?0:t>360?360:t}function r(t){return t<0?0:t>1?1:t}function o(t){return i(t.length&&"%"===t.charAt(t.length-1)?parseFloat(t)/100*255:parseInt(t,10))}function a(t){return r(t.length&&"%"===t.charAt(t.length-1)?parseFloat(t)/100:parseFloat(t))}function s(t,e,i){return i<0?i+=1:i>1&&(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 l(t,e,i){return t+(e-t)*i}function h(t){if(t){t+="";var e=t.replace(/ /g,"").toLowerCase();if(e in x)return x[e].slice();if("#"!==e.charAt(0)){var i=e.indexOf("("),n=e.indexOf(")");if(i!==-1&&n+1===e.length){var r=e.substr(0,i),s=e.substr(i+1,n-(i+1)).split(","),l=1;switch(r){case"rgba":if(4!==s.length)return;l=a(s.pop());case"rgb":if(3!==s.length)return;return[o(s[0]),o(s[1]),o(s[2]),l];case"hsla":if(4!==s.length)return;return s[3]=a(s[3]),u(s);case"hsl":if(3!==s.length)return;return u(s);default:return}}}else{if(4===e.length){var h=parseInt(e.substr(1),16);if(!(h>=0&&h<=4095))return;return[(3840&h)>>4|(3840&h)>>8,240&h|(240&h)>>4,15&h|(15&h)<<4,1]}if(7===e.length){var h=parseInt(e.substr(1),16);if(!(h>=0&&h<=16777215))return;return[(16711680&h)>>16,(65280&h)>>8,255&h,1]}}}}function u(t){var e=(parseFloat(t[0])%360+360)%360/360,n=a(t[1]),r=a(t[2]),o=r<=.5?r*(n+1):r+n-r*n,l=2*r-o,h=[i(255*s(l,o,e+1/3)),i(255*s(l,o,e)),i(255*s(l,o,e-1/3))];return 4===t.length&&(h[3]=t[3]),h}function c(t){if(t){var e,i,n=t[0]/255,r=t[1]/255,o=t[2]/255,a=Math.min(n,r,o),s=Math.max(n,r,o),l=s-a,h=(s+a)/2;if(0===l)e=0,i=0;else{i=h<.5?l/(s+a):l/(2-s-a);var u=((s-n)/6+l/2)/l,c=((s-r)/6+l/2)/l,d=((s-o)/6+l/2)/l;n===s?e=d-c:r===s?e=1/3+u-d:o===s&&(e=2/3+c-u),e<0&&(e+=1),e>1&&(e-=1)}var f=[360*e,i,h];return null!=t[3]&&f.push(t[3]),f}}function d(t,e){var i=h(t);if(i){for(var n=0;n<3;n++)e<0?i[n]=i[n]*(1-e)|0:i[n]=(255-i[n])*e+i[n]|0;return y(i,4===i.length?"rgba":"rgb")}}function f(t,e){var i=h(t);if(i)return((1<<24)+(i[0]<<16)+(i[1]<<8)+ +i[2]).toString(16).slice(1)}function p(t,e,n){if(e&&e.length&&t>=0&&t<=1){n=n||[0,0,0,0];var r=t*(e.length-1),o=Math.floor(r),a=Math.ceil(r),s=e[o],h=e[a],u=r-o;return n[0]=i(l(s[0],h[0],u)),n[1]=i(l(s[1],h[1],u)),n[2]=i(l(s[2],h[2],u)),n[3]=i(l(s[3],h[3],u)),n}}function g(t,e,n){if(e&&e.length&&t>=0&&t<=1){var o=t*(e.length-1),a=Math.floor(o),s=Math.ceil(o),u=h(e[a]),c=h(e[s]),d=o-a,f=y([i(l(u[0],c[0],d)),i(l(u[1],c[1],d)),i(l(u[2],c[2],d)),r(l(u[3],c[3],d))],"rgba");return n?{color:f,leftIndex:a,rightIndex:s,value:o}:f}}function m(t,e,i,r){if(t=h(t))return t=c(t),null!=e&&(t[0]=n(e)),null!=i&&(t[1]=a(i)),null!=r&&(t[2]=a(r)),y(u(t),"rgba")}function v(t,e){if(t=h(t),t&&null!=e)return t[3]=r(e),y(t,"rgba")}function y(t,e){var i=t[0]+","+t[1]+","+t[2];return"rgba"!==e&&"hsva"!==e&&"hsla"!==e||(i+=","+t[3]),e+"("+i+")"}var x={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]};t.exports={parse:h,lift:d,toHex:f,fastMapToColor:p,mapToColor:g,modifyHSL:m,modifyAlpha:v,stringify:y}},function(t,e){var i="undefined"==typeof Float32Array?Array:Float32Array,n={create:function(){var t=new i(6);return n.identity(t),t},identity:function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t},copy:function(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},mul:function(t,e,i){var n=e[0]*i[0]+e[2]*i[1],r=e[1]*i[0]+e[3]*i[1],o=e[0]*i[2]+e[2]*i[3],a=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]=r,t[2]=o,t[3]=a,t[4]=s,t[5]=l,t},translate:function(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},rotate:function(t,e,i){var n=e[0],r=e[2],o=e[4],a=e[1],s=e[3],l=e[5],h=Math.sin(i),u=Math.cos(i);return t[0]=n*u+a*h,t[1]=-n*h+a*u,t[2]=r*u+s*h,t[3]=-r*h+u*s,t[4]=u*o+h*l,t[5]=u*l-h*o,t},scale:function(t,e,i){var n=i[0],r=i[1];return t[0]=e[0]*n,t[1]=e[1]*r,t[2]=e[2]*n,t[3]=e[3]*r,t[4]=e[4]*n,t[5]=e[5]*r,t},invert:function(t,e){var i=e[0],n=e[2],r=e[4],o=e[1],a=e[3],s=e[5],l=i*a-o*n;return l?(l=1/l,t[0]=a*l,t[1]=-o*l,t[2]=-n*l,t[3]=i*l,t[4]=(n*s-a*r)*l,t[5]=(o*r-i*s)*l,t):null}};t.exports=n},function(t,e){var i=Array.prototype.slice,n=function(){this._$handlers={}};n.prototype={constructor:n,one:function(t,e,i){var n=this._$handlers;if(!e||!t)return this;n[t]||(n[t]=[]);for(var r=0;r<n[t].length;r++)if(n[t][r].h===e)return this;return n[t].push({h:e,one:!0,ctx:i||this}),this},on:function(t,e,i){var n=this._$handlers;if(!e||!t)return this;n[t]||(n[t]=[]);for(var r=0;r<n[t].length;r++)if(n[t][r].h===e)return this;return n[t].push({h:e,one:!1,ctx:i||this}),this},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=[],r=0,o=i[t].length;r<o;r++)i[t][r].h!=e&&n.push(i[t][r]);i[t]=n}i[t]&&0===i[t].length&&delete i[t]}else delete i[t];return this},trigger:function(t){if(this._$handlers[t]){var e=arguments,n=e.length;n>3&&(e=i.call(e,1));for(var r=this._$handlers[t],o=r.length,a=0;a<o;){switch(n){case 1:r[a].h.call(r[a].ctx);break;case 2:r[a].h.call(r[a].ctx,e[1]);break;case 3:r[a].h.call(r[a].ctx,e[1],e[2]);break;default:r[a].h.apply(r[a].ctx,e)}r[a].one?(r.splice(a,1),o--):a++}}return this},triggerWithContext:function(t){if(this._$handlers[t]){var e=arguments,n=e.length;n>4&&(e=i.call(e,1,e.length-1));for(var r=e[e.length-1],o=this._$handlers[t],a=o.length,s=0;s<a;){switch(n){case 1:o[s].h.call(r);break;case 2:o[s].h.call(r,e[1]);break;case 3:o[s].h.call(r,e[1],e[2]);break;default:o[s].h.apply(r,e)}o[s].one?(o.splice(s,1),a--):s++}}return this}},t.exports=n},function(t,e,i){var n=i(137),r=i(38);i(138),i(136);var o=i(32),a=i(4),s=i(1),l=i(17),h={};h.getScaleExtent=function(t,e){var i,n,r,o=t.scale,l=o.type,h=e.getMin(),u=e.getMax(),c=null!=h,d=null!=u,f=o.getExtent();return"ordinal"===l?i=(e.get("data")||[]).length:(n=e.get("boundaryGap"),s.isArray(n)||(n=[n||0,n||0]),n[0]=a.parsePercent(n[0],1),n[1]=a.parsePercent(n[1],1),r=f[1]-f[0]),null==h&&(h="ordinal"===l?i?0:NaN:f[0]-n[0]*r),null==u&&(u="ordinal"===l?i?i-1:NaN:f[1]+n[1]*r),"dataMin"===h&&(h=f[0]),"dataMax"===u&&(u=f[1]),(null==h||!isFinite(h))&&(h=NaN),(null==u||!isFinite(u))&&(u=NaN),t.setBlank(s.eqNaN(h)||s.eqNaN(u)),e.getNeedCrossZero()&&(h>0&&u>0&&!c&&(h=0),h<0&&u<0&&!d&&(u=0)),[h,u]},h.niceScaleExtent=function(t,e){var i=t.scale,n=h.getScaleExtent(t,e),r=null!=e.getMin(),o=null!=e.getMax(),a=e.get("splitNumber");"log"===i.type&&(i.base=e.get("logBase")),i.setExtent(n[0],n[1]),i.niceExtent(a,r,o);var s=e.get("minInterval");if(isFinite(s)&&!r&&!o&&"interval"===i.type){var l=i.getInterval(),u=Math.max(Math.abs(l),s)/l;n=i.getExtent();var c=(n[1]+n[0])/2;i.setExtent(u*(n[0]-c)+c,u*(n[1]-c)+c),i.niceExtent(a)}var l=e.get("interval");null!=l&&i.setInterval&&i.setInterval(l)},h.createScaleByModel=function(t,e){if(e=e||t.get("type"))switch(e){case"category":return new n(t.getCategories(),[1/0,-(1/0)]);case"value":return new r;default:return(o.getClass(e)||r).create(t)}},h.ifAxisCrossZero=function(t){var e=t.scale.getExtent(),i=e[0],n=e[1];return!(i>0&&n>0||i<0&&n<0)},h.getAxisLabelInterval=function(t,e,i,n){var r,o=0,a=0,s=1;e.length>40&&(s=Math.floor(e.length/40));for(var h=0;h<t.length;h+=s){var u=t[h],c=l.getBoundingRect(e[h],i,"center","top");c[n?"x":"y"]+=u,c[n?"width":"height"]*=1.3,r?r.intersect(c)?(a++,o=Math.max(o,a)):(r.union(c),a=0):r=c.clone()}return 0===o&&s>1?s:(o+1)*s-1},h.getFormattedLabels=function(t,e){var i=t.scale,n=i.getTicksLabels(),r=i.getTicks();return"string"==typeof e?(e=function(t){return function(e){return t.replace("{value}",null!=e?e:"")}}(e),s.map(n,e)):"function"==typeof e?s.map(r,function(n,r){return e("category"===t.type?i.getLabel(n):n,r)},this):n},t.exports=h},function(t,e,i){"use strict";function n(){this._coordinateSystems=[]}var r=i(1),o={};n.prototype={constructor:n,create:function(t,e){var i=[];r.each(o,function(n,r){var o=n.create(t,e);i=i.concat(o||[])}),this._coordinateSystems=i},update:function(t,e){r.each(this._coordinateSystems,function(i){i.update&&i.update(t,e)})},getCoordinateSystems:function(){return this._coordinateSystems.slice()}},n.register=function(t,e){o[t]=e},n.get=function(t){return o[t]},t.exports=n},function(t,e,i){"use strict";var n=i(3),r=i(9),o=n.extendShape({type:"triangle",
-shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var i=e.cx,n=e.cy,r=e.width/2,o=e.height/2;t.moveTo(i,n-o),t.lineTo(i+r,n+o),t.lineTo(i-r,n+o),t.closePath()}}),a=n.extendShape({type:"diamond",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var i=e.cx,n=e.cy,r=e.width/2,o=e.height/2;t.moveTo(i,n-o),t.lineTo(i+r,n),t.lineTo(i,n+o),t.lineTo(i-r,n),t.closePath()}}),s=n.extendShape({type:"pin",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var i=e.x,n=e.y,r=e.width/5*3,o=Math.max(r,e.height),a=r/2,s=a*a/(o-a),l=n-o+a+s,h=Math.asin(s/a),u=Math.cos(h)*a,c=Math.sin(h),d=Math.cos(h);t.arc(i,l,a,Math.PI-h,2*Math.PI+h);var f=.6*a,p=.7*a;t.bezierCurveTo(i+u-c*f,l+s+d*f,i,n-p,i,n),t.bezierCurveTo(i,n-p,i-u+c*f,l+s+d*f,i-u,l+s),t.closePath()}}),l=n.extendShape({type:"arrow",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var i=e.height,n=e.width,r=e.x,o=e.y,a=n/3*2;t.moveTo(r,o),t.lineTo(r+a,o+i),t.lineTo(r,o+i/4*3),t.lineTo(r-a,o+i),t.lineTo(r,o),t.closePath()}}),h={line:n.Line,rect:n.Rect,roundRect:n.Rect,square:n.Rect,circle:n.Circle,diamond:a,pin:s,arrow:l,triangle:o},u={line:function(t,e,i,n,r){r.x1=t,r.y1=e+n/2,r.x2=t+i,r.y2=e+n/2},rect:function(t,e,i,n,r){r.x=t,r.y=e,r.width=i,r.height=n},roundRect:function(t,e,i,n,r){r.x=t,r.y=e,r.width=i,r.height=n,r.r=Math.min(i,n)/4},square:function(t,e,i,n,r){var o=Math.min(i,n);r.x=t,r.y=e,r.width=o,r.height=o},circle:function(t,e,i,n,r){r.cx=t+i/2,r.cy=e+n/2,r.r=Math.min(i,n)/2},diamond:function(t,e,i,n,r){r.cx=t+i/2,r.cy=e+n/2,r.width=i,r.height=n},pin:function(t,e,i,n,r){r.x=t+i/2,r.y=e+n/2,r.width=i,r.height=n},arrow:function(t,e,i,n,r){r.x=t+i/2,r.y=e+n/2,r.width=i,r.height=n},triangle:function(t,e,i,n,r){r.cx=t+i/2,r.cy=e+n/2,r.width=i,r.height=n}},c={};for(var d in h)h.hasOwnProperty(d)&&(c[d]=new h[d]);var f=n.extendShape({type:"symbol",shape:{symbolType:"",x:0,y:0,width:0,height:0},beforeBrush:function(){var t=this.style,e=this.shape;"pin"===e.symbolType&&"inside"===t.textPosition&&(t.textPosition=["50%","40%"],t.textAlign="center",t.textVerticalAlign="middle")},buildPath:function(t,e,i){var n=e.symbolType,r=c[n];"none"!==e.symbolType&&(r||(n="rect",r=c[n]),u[n](e.x,e.y,e.width,e.height,r.shape),r.buildPath(t,r.shape,i))}}),p=function(t){if("image"!==this.type){var e=this.style,i=this.shape;i&&"line"===i.symbolType?e.stroke=t:this.__isEmptyBrush?(e.stroke=t,e.fill="#fff"):(e.fill&&(e.fill=t),e.stroke&&(e.stroke=t)),this.dirty(!1)}},g={createSymbol:function(t,e,i,o,a,s){var l=0===t.indexOf("empty");l&&(t=t.substr(5,1).toLowerCase()+t.substr(6));var h;return h=0===t.indexOf("image://")?new n.Image({style:{image:t.slice(8),x:e,y:i,width:o,height:a}}):0===t.indexOf("path://")?n.makePath(t.slice(7),{},new r(e,i,o,a)):new f({shape:{symbolType:t,x:e,y:i,width:o,height:a}}),h.__isEmptyBrush=l,h.setColor=p,h.setColor(s),h}};t.exports=g},function(t,e,i){"use strict";function n(t){return t.getBoundingClientRect?t.getBoundingClientRect():{left:0,top:0}}function r(t,e,i,n){return i=i||{},n||!u.canvasSupported?o(t,e,i):u.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):o(t,e,i),i}function o(t,e,i){var r=n(t);i.zrX=e.clientX-r.left,i.zrY=e.clientY-r.top}function a(t,e,i){if(e=e||window.event,null!=e.zrX)return e;var n=e.type,o=n&&n.indexOf("touch")>=0;if(o){var a="touchend"!=n?e.targetTouches[0]:e.changedTouches[0];a&&r(t,a,e,i)}else r(t,e,e,i),e.zrDelta=e.wheelDelta?e.wheelDelta/120:-(e.detail||0)/3;return e}function s(t,e,i){c?t.addEventListener(e,i):t.attachEvent("on"+e,i)}function l(t,e,i){c?t.removeEventListener(e,i):t.detachEvent("on"+e,i)}var h=i(21),u=i(10),c="undefined"!=typeof window&&!!window.addEventListener,d=c?function(t){t.preventDefault(),t.stopPropagation(),t.cancelBubble=!0}:function(t){t.returnValue=!1,t.cancelBubble=!0};t.exports={clientToLocal:r,normalizeEvent:a,addEventListener:s,removeEventListener:l,stop:d,Dispatcher:h}},function(t,e){"use strict";var i={};t.exports={register:function(t,e){i[t]=e},get:function(t){return i[t]}}},function(t,e,i){function n(t,e,i,n){if(!e)return t;var s=r(e[0]),l=o.isArray(s)&&s.length||1;i=i||[],n=n||"extra";for(var h=0;h<l;h++)if(!t[h]){var u=i[h]||n+(h-i.length);t[h]=a(e,h)?{type:"ordinal",name:u}:u}return t}function r(t){return o.isArray(t)?t:o.isObject(t)?t.value:t}var o=i(1),a=n.guessOrdinal=function(t,e){for(var i=0,n=t.length;i<n;i++){var a=r(t[i]);if(!o.isArray(a))return!1;var a=a[e];if(null!=a&&isFinite(a))return!1;if(o.isString(a)&&"-"!==a)return!0}return!1};t.exports=n},function(t,e,i){function n(){this.group=new a,this.uid=s.getUID("viewChart")}function r(t,e){if(t&&(t.trigger(e),"group"===t.type))for(var i=0;i<t.childCount();i++)r(t.childAt(i),e)}function o(t,e,i){var n=h.queryDataIndex(t,e);null!=n?u.each(h.normalizeToArray(n),function(e){r(t.getItemGraphicEl(e),i)}):t.eachItemGraphicEl(function(t){r(t,i)})}var a=i(34),s=i(44),l=i(15),h=i(6),u=i(1);n.prototype={type:"chart",init:function(t,e){},render:function(t,e,i,n){},highlight:function(t,e,i,n){o(t.getData(),n,"emphasis")},downplay:function(t,e,i,n){o(t.getData(),n,"normal")},remove:function(t,e){this.group.removeAll()},dispose:function(){}};var c=n.prototype;c.updateView=c.updateLayout=c.updateVisual=function(t,e,i,n){this.render(t,e,i,n)},l.enableClassExtend(n,["dispose"]),l.enableClassManagement(n,{registerWhenExtend:!0}),t.exports=n},function(t,e,i){"use strict";var n=i(18),r=i(5),o=i(75),a=i(9),s=i(33).devicePixelRatio,l={M:1,L:2,C:3,Q:4,A:5,Z:6,R:7},h=[],u=[],c=[],d=[],f=Math.min,p=Math.max,g=Math.cos,m=Math.sin,v=Math.sqrt,y=Math.abs,x="undefined"!=typeof Float32Array,_=function(){this.data=[],this._len=0,this._ctx=null,this._xi=0,this._yi=0,this._x0=0,this._y0=0,this._ux=0,this._uy=0};_.prototype={constructor:_,_lineDash:null,_dashOffset:0,_dashIdx:0,_dashSum:0,setScale:function(t,e){this._ux=y(1/s/t)||0,this._uy=y(1/s/e)||0},getContext:function(){return this._ctx},beginPath:function(t){return this._ctx=t,t&&t.beginPath(),t&&(this.dpr=t.dpr),this._len=0,this._lineDash&&(this._lineDash=null,this._dashOffset=0),this},moveTo:function(t,e){return this.addData(l.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=y(t-this._xi)>this._ux||y(e-this._yi)>this._uy||this._len<5;return this.addData(l.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,r,o){return this.addData(l.C,t,e,i,n,r,o),this._ctx&&(this._needsDash()?this._dashedBezierTo(t,e,i,n,r,o):this._ctx.bezierCurveTo(t,e,i,n,r,o)),this._xi=r,this._yi=o,this},quadraticCurveTo:function(t,e,i,n){return this.addData(l.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,r,o){return this.addData(l.A,t,e,i,i,n,r-n,0,o?0:1),this._ctx&&this._ctx.arc(t,e,i,n,r,o),this._xi=g(r)*i+t,this._yi=m(r)*i+t,this},arcTo:function(t,e,i,n,r){return this._ctx&&this._ctx.arcTo(t,e,i,n,r),this},rect:function(t,e,i,n){return this._ctx&&this._ctx.rect(t,e,i,n),this.addData(l.R,t,e,i,n),this},closePath:function(){this.addData(l.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,this._dashIdx=0;for(var e=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||!x||(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,r=0;r<e;r++)i+=t[r].len();x&&this.data instanceof Float32Array&&(this.data=new Float32Array(n+i));for(var r=0;r<e;r++)for(var o=t[r].data,a=0;a<o.length;a++)this.data[n++]=o[a];this._len=n},addData:function(t){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,r=this._dashSum,o=this._dashOffset,a=this._lineDash,s=this._ctx,l=this._xi,h=this._yi,u=t-l,c=e-h,d=v(u*u+c*c),g=l,m=h,y=a.length;for(u/=d,c/=d,o<0&&(o=r+o),o%=r,g-=o*u,m-=o*c;u>0&&g<=t||u<0&&g>=t||0==u&&(c>0&&m<=e||c<0&&m>=e);)n=this._dashIdx,i=a[n],g+=u*i,m+=c*i,this._dashIdx=(n+1)%y,u>0&&g<l||u<0&&g>l||c>0&&m<h||c<0&&m>h||s[n%2?"moveTo":"lineTo"](u>=0?f(g,t):p(g,t),c>=0?f(m,e):p(m,e));u=g-t,c=m-e,this._dashOffset=-v(u*u+c*c)},_dashedBezierTo:function(t,e,i,r,o,a){var s,l,h,u,c,d=this._dashSum,f=this._dashOffset,p=this._lineDash,g=this._ctx,m=this._xi,y=this._yi,x=n.cubicAt,_=0,b=this._dashIdx,w=p.length,M=0;for(f<0&&(f=d+f),f%=d,s=0;s<1;s+=.1)l=x(m,t,i,o,s+.1)-x(m,t,i,o,s),h=x(y,e,r,a,s+.1)-x(y,e,r,a,s),_+=v(l*l+h*h);for(;b<w&&(M+=p[b],!(M>f));b++);for(s=(M-f)/_;s<=1;)u=x(m,t,i,o,s),c=x(y,e,r,a,s),b%2?g.moveTo(u,c):g.lineTo(u,c),s+=p[b]/_,b=(b+1)%w;b%2!==0&&g.lineTo(o,a),l=o-u,h=a-c,this._dashOffset=-v(l*l+h*h)},_dashedQuadraticTo:function(t,e,i,n){var r=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,r,o)},toStatic:function(){var t=this.data;t instanceof Array&&(t.length=this._len,x&&(this.data=new Float32Array(t)))},getBoundingRect:function(){h[0]=h[1]=c[0]=c[1]=Number.MAX_VALUE,u[0]=u[1]=d[0]=d[1]=-Number.MAX_VALUE;for(var t=this.data,e=0,i=0,n=0,s=0,f=0;f<t.length;){var p=t[f++];switch(1==f&&(e=t[f],i=t[f+1],n=e,s=i),p){case l.M:n=t[f++],s=t[f++],e=n,i=s,c[0]=n,c[1]=s,d[0]=n,d[1]=s;break;case l.L:o.fromLine(e,i,t[f],t[f+1],c,d),e=t[f++],i=t[f++];break;case l.C:o.fromCubic(e,i,t[f++],t[f++],t[f++],t[f++],t[f],t[f+1],c,d),e=t[f++],i=t[f++];break;case l.Q:o.fromQuadratic(e,i,t[f++],t[f++],t[f],t[f+1],c,d),e=t[f++],i=t[f++];break;case l.A:var v=t[f++],y=t[f++],x=t[f++],_=t[f++],b=t[f++],w=t[f++]+b,M=(t[f++],1-t[f++]);1==f&&(n=g(b)*x+v,s=m(b)*_+y),o.fromArc(v,y,x,_,b,w,M,c,d),e=g(w)*x+v,i=m(w)*_+y;break;case l.R:n=e=t[f++],s=i=t[f++];var S=t[f++],T=t[f++];o.fromLine(n,s,n+S,s+T,c,d);break;case l.Z:e=n,i=s}r.min(h,h,c),r.max(u,u,d)}return 0===f&&(h[0]=h[1]=u[0]=u[1]=0),new a(h[0],h[1],u[0]-h[0],u[1]-h[1])},rebuildPath:function(t){for(var e,i,n,r,o,a,s=this.data,h=this._ux,u=this._uy,c=this._len,d=0;d<c;){var f=s[d++];switch(1==d&&(n=s[d],r=s[d+1],e=n,i=r),f){case l.M:e=n=s[d++],i=r=s[d++],t.moveTo(n,r);break;case l.L:o=s[d++],a=s[d++],(y(o-n)>h||y(a-r)>u||d===c-1)&&(t.lineTo(o,a),n=o,r=a);break;case l.C:t.bezierCurveTo(s[d++],s[d++],s[d++],s[d++],s[d++],s[d++]),n=s[d-2],r=s[d-1];break;case l.Q:t.quadraticCurveTo(s[d++],s[d++],s[d++],s[d++]),n=s[d-2],r=s[d-1];break;case l.A:var p=s[d++],v=s[d++],x=s[d++],_=s[d++],b=s[d++],w=s[d++],M=s[d++],S=s[d++],T=x>_?x:_,A=x>_?1:x/_,I=x>_?_/x:1,C=Math.abs(x-_)>.001,k=b+w;C?(t.translate(p,v),t.rotate(M),t.scale(A,I),t.arc(0,0,T,b,k,1-S),t.scale(1/A,1/I),t.rotate(-M),t.translate(-p,-v)):t.arc(p,v,T,b,k,1-S),1==d&&(e=g(b)*x+p,i=m(b)*_+v),n=g(k)*x+p,r=m(k)*_+v;break;case l.R:e=n=s[d],i=r=s[d+1],t.rect(s[d++],s[d++],s[d++],s[d++]);break;case l.Z:t.closePath(),n=e,r=i}}}},_.CMD=l,t.exports=_},function(t,e,i){var n=i(1);t.exports=function(t){for(var e=0;e<t.length;e++)t[e][1]||(t[e][1]=t[e][0]);return function(e){for(var i={},r=0;r<t.length;r++){var o=t[r][1];if(!(e&&n.indexOf(e,o)>=0)){var a=this.getShallow(o);null!=a&&(i[t[r][0]]=a)}}return i}}},function(t,e,i){"use strict";var n=i(3),r=i(1),o=i(2);i(53),i(109),o.extendComponentView({type:"grid",render:function(t,e){this.group.removeAll(),t.get("show")&&this.group.add(new n.Rect({shape:t.coordinateSystem.getRect(),style:r.defaults({fill:t.get("backgroundColor")},t.getItemStyle()),silent:!0,z2:-1}))}}),o.registerPreprocessor(function(t){t.xAxis&&t.yAxis&&!t.grid&&(t.grid={})})},function(t,e,i){function n(){this._extent=[1/0,-(1/0)],this._interval=0,this.init&&this.init.apply(this,arguments)}var r=i(15),o=n.prototype;o.parse=function(t){return t},o.contain=function(t){var e=this._extent;return t>=e[0]&&t<=e[1]},o.normalize=function(t){var e=this._extent;return e[1]===e[0]?.5:(t-e[0])/(e[1]-e[0])},o.scale=function(t){var e=this._extent;return t*(e[1]-e[0])+e[0]},o.unionExtent=function(t){var e=this._extent;t[0]<e[0]&&(e[0]=t[0]),t[1]>e[1]&&(e[1]=t[1])},o.unionExtentFromData=function(t,e){this.unionExtent(t.getDataExtent(e,!0))},o.getExtent=function(){return this._extent.slice()},o.setExtent=function(t,e){var i=this._extent;isNaN(t)||(i[0]=t),isNaN(e)||(i[1]=e)},o.getTicksLabels=function(){for(var t=[],e=this.getTicks(),i=0;i<e.length;i++)t.push(this.getLabel(e[i]));return t},r.enableClassExtend(n),r.enableClassManagement(n,{registerWhenExtend:!0}),t.exports=n},function(t,e){var i=1;"undefined"!=typeof window&&(i=Math.max(window.devicePixelRatio||1,1));var n={debugMode:0,devicePixelRatio:i};t.exports=n},function(t,e,i){var n=i(1),r=i(60),o=i(9),a=function(t){t=t||{},r.call(this,t);for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e]);this._children=[],this.__storage=null,this.__dirty=!0};a.prototype={constructor:a,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);n>=0&&(i.splice(n,0,t),this._doAdd(t))}return this},_doAdd:function(t){t.parent&&t.parent.remove(t),t.parent=this;var e=this.__storage,i=this.__zr;e&&e!==t.__storage&&(e.addToMap(t),t instanceof a&&t.addChildrenToStorage(e)),i&&i.refresh()},remove:function(t){var e=this.__zr,i=this.__storage,r=this._children,o=n.indexOf(r,t);return o<0?this:(r.splice(o,1),t.parent=null,i&&(i.delFromMap(t.id),t instanceof a&&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.delFromMap(t.id),t instanceof a&&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 r=i[n];t.call(e,r,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.addToMap(i),i instanceof a&&i.addChildrenToStorage(t)}},delChildrenFromStorage:function(t){for(var e=0;e<this._children.length;e++){var i=this._children[e];t.delFromMap(i.id),i instanceof a&&i.delChildrenFromStorage(t)}},dirty:function(){return this.__dirty=!0,this.__zr&&this.__zr.refresh(),this},getBoundingRect:function(t){for(var e=null,i=new o(0,0,0,0),n=t||this._children,r=[],a=0;a<n.length;a++){var s=n[a];if(!s.ignore&&!s.invisible){var l=s.getBoundingRect(),h=s.getLocalTransform(r);h?(i.copy(l),i.applyTransform(h),e=e||i.clone(),e.union(i)):(e=e||l.clone(),e.union(l))}}return e||i}},n.inherits(a,r),t.exports=a},function(t,e,i){"use strict";function n(t){for(var e=0;e<t.length&&null==t[e];)e++;return t[e]}function r(t){var e=n(t);return null!=e&&!c.isArray(p(e))}function o(t,e,i){t=t||[];var n=e.get("coordinateSystem"),o=m[n],a=f.get(n),s=o&&o(t,e,i),v=s&&s.dimensions;v||(v=a&&a.dimensions||["x","y"],v=u(v,t,v.concat(["value"])));var y=s?s.categoryIndex:-1,x=new h(v,e),_=l(s,t),b={},w=y>=0&&r(t)?function(t,e,i,n){return d.isDataItemOption(t)&&(x.hasItemOption=!0),n===y?i:g(p(t),v[n])}:function(t,e,i,n){var r=p(t),o=g(r&&r[n],v[n]);d.isDataItemOption(t)&&(x.hasItemOption=!0);var a=s&&s.categoryAxesModels;return a&&a[e]&&"string"==typeof o&&(b[e]=b[e]||a[e].getCategories(),o=c.indexOf(b[e],o),o<0&&!isNaN(o)&&(o=+o)),o};return x.hasItemOption=!1,x.initData(t,_,w),x}function a(t){return"category"!==t&&"time"!==t}function s(t){return"category"===t?"ordinal":"time"===t?"time":"float"}function l(t,e){var i,n=[],r=t&&t.dimensions[t.categoryIndex];if(r&&(i=t.categoryAxesModels[r.name]),i){var o=i.getCategories();if(o){var a=e.length;if(c.isArray(e[0])&&e[0].length>1){n=[];for(var s=0;s<a;s++)n[s]=o[e[s][t.categoryIndex||0]]}else n=o.slice(0)}}return n}var h=i(14),u=i(27),c=i(1),d=i(6),f=i(23),p=d.getDataItemValue,g=d.converDataValue,m={cartesian2d:function(t,e,i){var n=c.map(["xAxis","yAxis"],function(t){return i.queryComponents({mainType:t,index:e.get(t+"Index"),id:e.get(t+"Id")})[0]}),r=n[0],o=n[1],l=r.get("type"),h=o.get("type"),d=[{name:"x",type:s(l),stackable:a(l)},{name:"y",type:s(h),stackable:a(h)}],f="category"===l,p="category"===h;u(d,t,["x","y","z"]);var g={};return f&&(g.x=r),p&&(g.y=o),{dimensions:d,categoryIndex:f?0:p?1:-1,categoryAxesModels:g}},singleAxis:function(t,e,i){var n=i.queryComponents({mainType:"singleAxis",index:e.get("singleAxisIndex"),id:e.get("singleAxisId")})[0],r=n.get("type"),o="category"===r,l=[{name:"single",type:s(r),stackable:a(r)}];u(l,t);var h={};return o&&(h.single=n),{dimensions:l,categoryIndex:o?0:-1,categoryAxesModels:h}},polar:function(t,e,i){var n=i.queryComponents({mainType:"polar",index:e.get("polarIndex"),id:e.get("polarId")})[0],r=n.findAxisModel("angleAxis"),o=n.findAxisModel("radiusAxis"),l=o.get("type"),h=r.get("type"),c=[{name:"radius",type:s(l),stackable:a(l)},{name:"angle",type:s(h),stackable:a(h)}],d="category"===h,f="category"===l;u(c,t,["radius","angle","value"]);var p={};return f&&(p.radius=o),d&&(p.angle=r),{dimensions:c,categoryIndex:d?1:f?0:-1,categoryAxesModels:p}},geo:function(t,e,i){return{dimensions:u([{name:"lng"},{name:"lat"}],t,["lng","lat","value"])}}};t.exports=o},function(t,e,i){function n(t){t=t||{},a.call(this,t);for(var e in t)t.hasOwnProperty(e)&&"style"!==e&&(this[e]=t[e]);this.style=new o(t.style),this._rect=null,this.__clipPaths=[]}var r=i(1),o=i(66),a=i(60),s=i(77);n.prototype={constructor:n,type:"displayable",__dirty:!0,invisible:!1,z:0,z2:0,zlevel:0,draggable:!1,dragging:!1,silent:!1,culling:!1,cursor:"pointer",rectHover:!1,progressive:-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),n=this.getBoundingRect();return n.contain(i[0],i[1])},dirty:function(){this.__dirty=!0,this._rect=null,this.__zr&&this.__zr.refresh()},animateStyle:function(t){return this.animate("style",t)},attrKV:function(t,e){"style"!==t?a.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 o(t),this.dirty(!1),this}},r.inherits(n,a),r.mixin(n,s),t.exports=n},function(t,e){var i=function(t){this.colorStops=t||[]};i.prototype={constructor:i,addColorStop:function(t,e){this.colorStops.push({offset:t,color:e})}},t.exports=i},function(t,e,i){var n=i(4),r=i(8),o=i(32),a=Math.floor,s=Math.ceil,l=n.getPrecisionSafe,h=n.round,u=o.extend({type:"interval",_interval:0,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]),u.prototype.setExtent.call(this,e[0],e[1])},getInterval:function(){return this._interval||this.niceTicks(),this._interval},setInterval:function(t){this._interval=t,this._niceExtent=this._extent.slice()},getTicks:function(){this._interval||this.niceTicks();var t=this._interval,e=this._extent,i=[],n=1e4;if(t){var r=this._niceExtent,o=l(t)+2;e[0]<r[0]&&i.push(e[0]);for(var a=r[0];a<=r[1];)if(i.push(a),a=h(a+t,o),i.length>n)return[];e[1]>(i.length?i[i.length-1]:r[1])&&i.push(e[1])}return i},getTicksLabels:function(){for(var t=[],e=this.getTicks(),i=0;i<e.length;i++)t.push(this.getLabel(e[i]));return t},getLabel:function(t){return r.addCommas(t)},niceTicks:function(t){t=t||5;var e=this._extent,i=e[1]-e[0];if(isFinite(i)){i<0&&(i=-i,e.reverse());var r=h(n.nice(i/t,!0),Math.max(l(e[0]),l(e[1]))+2),o=l(r)+2,u=[h(s(e[0]/r)*r,o),h(a(e[1]/r)*r,o)];this._interval=r,this._niceExtent=u}},niceExtent:function(t,e,i){var n=this._extent;if(n[0]===n[1])if(0!==n[0]){var r=n[0];i?n[0]-=r/2:(n[1]+=r/2,n[0]-=r/2)}else n[1]=1;var o=n[1]-n[0];isFinite(o)||(n[0]=0,n[1]=1),this.niceTicks(t);var l=this._interval;e||(n[0]=h(a(n[0]/l)*l)),i||(n[1]=h(s(n[1]/l)*l))}});u.create=function(){return new u},t.exports=u},function(t,e,i){function n(t){this.group=new o.Group,this._symbolCtor=t||a}function r(t,e,i){var n=t.getItemLayout(e);return n&&!isNaN(n[0])&&!isNaN(n[1])&&!(i&&i(e))&&"none"!==t.getItemVisual(e,"symbol")}var o=i(3),a=i(50),s=n.prototype;s.updateData=function(t,e){var i=this.group,n=t.hostModel,a=this._data,s=this._symbolCtor,l={itemStyle:n.getModel("itemStyle.normal").getItemStyle(["color"]),hoverItemStyle:n.getModel("itemStyle.emphasis").getItemStyle(),symbolRotate:n.get("symbolRotate"),symbolOffset:n.get("symbolOffset"),hoverAnimation:n.get("hoverAnimation"),labelModel:n.getModel("label.normal"),hoverLabelModel:n.getModel("label.emphasis")};t.diff(a).add(function(n){var o=t.getItemLayout(n);if(r(t,n,e)){var a=new s(t,n,l);a.attr("position",o),t.setItemGraphicEl(n,a),i.add(a)}}).update(function(h,u){var c=a.getItemGraphicEl(u),d=t.getItemLayout(h);return r(t,h,e)?(c?(c.updateData(t,h,l),o.updateProps(c,{position:d},n)):(c=new s(t,h),c.attr("position",d)),i.add(c),void t.setItemGraphicEl(h,c)):void i.remove(c)}).remove(function(t){var e=a.getItemGraphicEl(t);e&&e.fadeOut(function(){i.remove(e)})}).execute(),this._data=t},s.updateLayout=function(){var t=this._data;t&&t.eachItemGraphicEl(function(e,i){var n=t.getItemLayout(i);e.attr("position",n)})},s.remove=function(t){var e=this.group,i=this._data;i&&(t?i.eachItemGraphicEl(function(t){t.fadeOut(function(){e.remove(t)})}):e.removeAll())},t.exports=n},function(t,e,i){function n(t){var e={};return c(["start","end","startValue","endValue","throttle"],function(i){t.hasOwnProperty(i)&&(e[i]=t[i])}),e}function r(t,e,i,n){null!=i[e]&&null==i[t]&&(n[t]=null)}var o=i(1),a=i(10),s=i(2),l=i(6),h=i(68),u=i(182),c=o.each,d=h.eachAxisDim,f=s.extendComponentModel({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},init:function(t,e,i){this._dataIntervalByAxis={},this._dataInfo={},this._axisProxies={},this.textStyleModel,this._autoThrottle=!0;var r=n(t);this.mergeDefaultAndTheme(t,i),this.doInit(r)},mergeOption:function(t){var e=n(t);o.merge(this.option,t,!0),this.doInit(e)},doInit:function(t){var e=this.option;a.canvasSupported||(e.realtime=!1),this._setDefaultThrottle(t),r("start","startValue",t,e),r("end","endValue",t,e),this.textStyleModel=this.getModel("textStyle"),this._resetTarget(),this._giveAxisProxies()},_giveAxisProxies:function(){var t=this._axisProxies;this.eachTargetAxis(function(e,i,n,r){var o=this.dependentModels[e.axis][i],a=o.__dzAxisProxy||(o.__dzAxisProxy=new u(e.name,i,this,r));t[e.name+"_"+i]=a},this)},_resetTarget:function(){var t=this.option,e=this._judgeAutoMode();d(function(e){var i=e.axisIndex;t[i]=l.normalizeToArray(t[i])},this),"axisIndex"===e?this._autoSetAxisIndex():"orient"===e&&this._autoSetOrient()},_judgeAutoMode:function(){var t=this.option,e=!1;d(function(i){null!=t[i.axisIndex]&&(e=!0)},this);var i=t.orient;return null==i&&e?"orient":e?void 0:(null==i&&(t.orient="horizontal"),"axisIndex")},_autoSetAxisIndex:function(){var t=!0,e=this.get("orient",!0),i=this.option,n=this.dependentModels;if(t){var r="vertical"===e?"y":"x";n[r+"Axis"].length?(i[r+"AxisIndex"]=[0],t=!1):c(n.singleAxis,function(n){t&&n.get("orient",!0)===e&&(i.singleAxisIndex=[n.componentIndex],t=!1)})}t&&d(function(e){if(t){var n=[],r=this.dependentModels[e.axis];if(r.length&&!n.length)for(var o=0,a=r.length;o<a;o++)"category"===r[o].get("type")&&n.push(o);i[e.axisIndex]=n,n.length&&(t=!1)}},this),t&&this.ecModel.eachSeries(function(t){this._isSeriesHasAllAxesTypeOf(t,"value")&&d(function(e){var n=i[e.axisIndex],r=t.get(e.axisIndex),a=t.get(e.axisId),s=t.ecModel.queryComponents({mainType:e.axis,index:r,id:a})[0];r=s.componentIndex,o.indexOf(n,r)<0&&n.push(r)})},this)},_autoSetOrient:function(){var t;this.eachTargetAxis(function(e){!t&&(t=e.name)},this),this.option.orient="y"===t?"vertical":"horizontal"},_isSeriesHasAllAxesTypeOf:function(t,e){var i=!0;return d(function(n){var r=t.get(n.axisIndex),o=this.dependentModels[n.axis][r];o&&o.get("type")===e||(i=!1)},this),i},_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}},getFirstTargetAxisModel:function(){var t;return d(function(e){if(null==t){var i=this.get(e.axisIndex);i.length&&(t=this.dependentModels[e.axis][i[0]])}},this),t},eachTargetAxis:function(t,e){var i=this.ecModel;d(function(n){c(this.get(n.axisIndex),function(r){t.call(e,n,r,this,i)},this)},this)},getAxisProxy:function(t,e){return this._axisProxies[t+"_"+e]},setRawRange:function(t){c(["start","end","startValue","endValue"],function(e){this.option[e]=t[e]},this)},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(){var t=this._axisProxies;for(var e in t)if(t.hasOwnProperty(e)&&t[e].hostedBy(this))return t[e];for(var e in t)if(t.hasOwnProperty(e)&&!t[e].hostedBy(this))return t[e]}});t.exports=f},function(t,e,i){var n=i(59);t.exports=n.extend({type:"dataZoom",render:function(t,e,i,n){this.dataZoomModel=t,this.ecModel=e,this.api=i},getTargetCoordInfo:function(){function t(t,e,i,n){for(var r,o=0;o<i.length;o++)if(i[o].model===t){r=i[o];break}r||i.push(r={model:t,axisModels:[],coordIndex:n}),r.axisModels.push(e)}var e=this.dataZoomModel,i=this.ecModel,n={};return e.eachTargetAxis(function(e,r){var o=i.getComponent(e.axis,r);if(o){var a=o.getCoordSysModel();a&&t(a,o,n[a.mainType]||(n[a.mainType]=[]),a.componentIndex)}},this),n}})},function(t,e,i){function n(t,e){var i=t[1]-t[0],n=e,r=i/n/2;t[0]+=r,t[1]-=r}var r=i(4),o=r.linearMap,a=i(1),s=[0,1],l=function(t,e,i){this.dim=t,this.scale=e,this._extent=i||[0,0],this.inverse=!1,this.onBand=!1};l.prototype={constructor:l,contain:function(t){var e=this._extent,i=Math.min(e[0],e[1]),n=Math.max(e[0],e[1]);return t>=i&&t<=n},containData:function(t){return this.contain(this.dataToCoord(t))},getExtent:function(){var t=this._extent.slice();return t},getPixelPrecision:function(t){return r.getPixelPrecision(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,r=this.scale;return t=r.normalize(t),this.onBand&&"ordinal"===r.type&&(i=i.slice(),n(i,r.count())),o(t,s,i,e)},coordToData:function(t,e){var i=this._extent,r=this.scale;this.onBand&&"ordinal"===r.type&&(i=i.slice(),n(i,r.count()));var a=o(t,i,s,e);return this.scale.scale(a)},getTicksCoords:function(t){if(this.onBand&&!t){for(var e=this.getBands(),i=[],n=0;n<e.length;n++)i.push(e[n][0]);return e[n-1]&&i.push(e[n-1][1]),i}return a.map(this.scale.getTicks(),this.dataToCoord,this)},getLabelsCoords:function(){return a.map(this.scale.getTicks(),this.dataToCoord,this)},getBands:function(){for(var t=this.getExtent(),e=[],i=this.scale.count(),n=t[0],r=t[1],o=r-n,a=0;a<i;a++)e.push([o*a/i+n,o*(a+1)/i+n]);return e},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},isBlank:function(){return this._isBlank},setBlank:function(t){this._isBlank=t}},t.exports=l},function(t,e){"use strict";function i(t){return t}function n(t,e,n,r){this._old=t,this._new=e,this._oldKeyGetter=n||i,this._newKeyGetter=r||i}function r(t,e,i,n){for(var r=0;r<t.length;r++){var o=n(t[r],r),a=e[o];null==a?(i.push(o),e[o]=r):(a.length||(e[o]=a=[a]),a.push(r))}}n.prototype={constructor:n,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,e=this._old,i=this._new,n=this._oldKeyGetter,o=this._newKeyGetter,a={},s={},l=[],h=[];for(r(e,a,l,n),r(i,s,h,o),t=0;t<e.length;t++){var u=l[t],c=s[u];if(null!=c){var d=c.length;d?(1===d&&(s[u]=null),c=c.unshift()):s[u]=null,this._update&&this._update(c,t)}else this._remove&&this._remove(t)}for(var t=0;t<h.length;t++){var u=h[t];if(s.hasOwnProperty(u)){var c=s[u];if(null==c)continue;if(c.length)for(var f=0,d=c.length;f<d;f++)this._add&&this._add(c[f]);else this._add&&this._add(c)}}}},t.exports=n},function(t,e,i){var n=i(1),r=i(15),o=r.parseClassType,a=0,s={},l="_";s.getUID=function(t){return[t||"",a++,Math.random()].join(l)},s.enableSubTypeDefaulter=function(t){var e={};return t.registerSubTypeDefaulter=function(t,i){t=o(t),e[t.main]=i},t.determineSubType=function(i,n){var r=n.type;if(!r){var a=o(i).main;t.hasSubTypes(i)&&e[a]&&(r=e[a](n))}return r},t},s.enableTopologicalTravel=function(t,e){function i(t){var i={},a=[];return n.each(t,function(s){var l=r(i,s),h=l.originalDeps=e(s),u=o(h,t);l.entryCount=u.length,0===l.entryCount&&a.push(s),n.each(u,function(t){n.indexOf(l.predecessor,t)<0&&l.predecessor.push(t);var e=r(i,t);n.indexOf(e.successor,t)<0&&e.successor.push(s)})}),{graph:i,noEntryList:a}}function r(t,e){return t[e]||(t[e]={predecessor:[],successor:[]}),t[e]}function o(t,e){var i=[];return n.each(t,function(t){n.indexOf(e,t)>=0&&i.push(t)}),i}t.topologicalTravel=function(t,e,r,o){function a(t){h[t].entryCount--,0===h[t].entryCount&&u.push(t)}function s(t){c[t]=!0,a(t)}if(t.length){var l=i(e),h=l.graph,u=l.noEntryList,c={};for(n.each(t,function(t){c[t]=!0});u.length;){var d=u.pop(),f=h[d],p=!!c[d];p&&(r.call(o,d,f.originalDeps.slice()),delete c[d]),n.each(f.successor,p?s:a)}n.each(c,function(){throw new Error("Circle dependency may exists")})}}},t.exports=s},function(t,e){t.exports=function(t,e,i,n,r){n.eachRawSeriesByType(t,function(t){var r=t.getData(),o=t.get("symbol")||e,a=t.get("symbolSize");r.setVisual({legendSymbol:i||o,symbol:o,symbolSize:a}),n.isSeriesFiltered(t)||("function"==typeof a&&r.each(function(e){var i=t.getRawValue(e),n=t.getDataParams(e);r.setItemVisual(e,"symbolSize",a(i,n))}),r.each(function(t){var e=r.getItemModel(t),i=e.getShallow("symbol",!0),n=e.getShallow("symbolSize",!0);null!=i&&r.setItemVisual(t,"symbol",i),null!=n&&r.setItemVisual(t,"symbolSize",n)}))})}},function(t,e){function i(t){for(var e=0;t>=u;)e|=1&t,t>>=1;return t+e}function n(t,e,i,n){var o=e+1;if(o===i)return 1;if(n(t[o++],t[e])<0){for(;o<i&&n(t[o],t[o-1])<0;)o++;r(t,e,o)}else for(;o<i&&n(t[o],t[o-1])>=0;)o++;return o-e}function r(t,e,i){for(i--;e<i;){var n=t[e];t[e++]=t[i],t[i--]=n}}function o(t,e,i,n,r){for(n===e&&n++;n<i;n++){for(var o,a=t[n],s=e,l=n;s<l;)o=s+l>>>1,r(a,t[o])<0?l=o:s=o+1;var h=n-s;switch(h){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(;h>0;)t[s+h]=t[s+h-1],h--}t[s]=a}}function a(t,e,i,n,r,o){var a=0,s=0,l=1;if(o(t,e[i+r])>0){for(s=n-r;l<s&&o(t,e[i+r+l])>0;)a=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s),a+=r,l+=r}else{for(s=r+1;l<s&&o(t,e[i+r-l])<=0;)a=l,
-l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s);var h=a;a=r-l,l=r-h}for(a++;a<l;){var u=a+(l-a>>>1);o(t,e[i+u])>0?a=u+1:l=u}return l}function s(t,e,i,n,r,o){var a=0,s=0,l=1;if(o(t,e[i+r])<0){for(s=r+1;l<s&&o(t,e[i+r-l])<0;)a=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s);var h=a;a=r-l,l=r-h}else{for(s=n-r;l<s&&o(t,e[i+r+l])>=0;)a=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s),a+=r,l+=r}for(a++;a<l;){var u=a+(l-a>>>1);o(t,e[i+u])<0?l=u:a=u+1}return l}function l(t,e){function i(t,e){u[y]=t,f[y]=e,y+=1}function n(){for(;y>1;){var t=y-2;if(t>=1&&f[t-1]<=f[t]+f[t+1]||t>=2&&f[t-2]<=f[t]+f[t-1])f[t-1]<f[t+1]&&t--;else if(f[t]>f[t+1])break;o(t)}}function r(){for(;y>1;){var t=y-2;t>0&&f[t-1]<f[t+1]&&t--,o(t)}}function o(i){var n=u[i],r=f[i],o=u[i+1],c=f[i+1];f[i]=r+c,i===y-3&&(u[i+1]=u[i+2],f[i+1]=f[i+2]),y--;var d=s(t[o],t,n,r,0,e);n+=d,r-=d,0!==r&&(c=a(t[n+r-1],t,o,c,c-1,e),0!==c&&(r<=c?l(n,r,o,c):h(n,r,o,c)))}function l(i,n,r,o){var l=0;for(l=0;l<n;l++)x[l]=t[i+l];var h=0,u=r,d=i;if(t[d++]=t[u++],0!==--o){if(1===n){for(l=0;l<o;l++)t[d+l]=t[u+l];return void(t[d+o]=x[h])}for(var f,g,m,v=p;;){f=0,g=0,m=!1;do if(e(t[u],x[h])<0){if(t[d++]=t[u++],g++,f=0,0===--o){m=!0;break}}else if(t[d++]=x[h++],f++,g=0,1===--n){m=!0;break}while((f|g)<v);if(m)break;do{if(f=s(t[u],x,h,n,0,e),0!==f){for(l=0;l<f;l++)t[d+l]=x[h+l];if(d+=f,h+=f,n-=f,n<=1){m=!0;break}}if(t[d++]=t[u++],0===--o){m=!0;break}if(g=a(x[h],t,u,o,0,e),0!==g){for(l=0;l<g;l++)t[d+l]=t[u+l];if(d+=g,u+=g,o-=g,0===o){m=!0;break}}if(t[d++]=x[h++],1===--n){m=!0;break}v--}while(f>=c||g>=c);if(m)break;v<0&&(v=0),v+=2}if(p=v,p<1&&(p=1),1===n){for(l=0;l<o;l++)t[d+l]=t[u+l];t[d+o]=x[h]}else{if(0===n)throw new Error;for(l=0;l<n;l++)t[d+l]=x[h+l]}}else for(l=0;l<n;l++)t[d+l]=x[h+l]}function h(i,n,r,o){var l=0;for(l=0;l<o;l++)x[l]=t[r+l];var h=i+n-1,u=o-1,d=r+o-1,f=0,g=0;if(t[d--]=t[h--],0!==--n){if(1===o){for(d-=n,h-=n,g=d+1,f=h+1,l=n-1;l>=0;l--)t[g+l]=t[f+l];return void(t[d]=x[u])}for(var m=p;;){var v=0,y=0,_=!1;do if(e(x[u],t[h])<0){if(t[d--]=t[h--],v++,y=0,0===--n){_=!0;break}}else if(t[d--]=x[u--],y++,v=0,1===--o){_=!0;break}while((v|y)<m);if(_)break;do{if(v=n-s(x[u],t,i,n,n-1,e),0!==v){for(d-=v,h-=v,n-=v,g=d+1,f=h+1,l=v-1;l>=0;l--)t[g+l]=t[f+l];if(0===n){_=!0;break}}if(t[d--]=x[u--],1===--o){_=!0;break}if(y=o-a(t[h],x,0,o,o-1,e),0!==y){for(d-=y,u-=y,o-=y,g=d+1,f=u+1,l=0;l<y;l++)t[g+l]=x[f+l];if(o<=1){_=!0;break}}if(t[d--]=t[h--],0===--n){_=!0;break}m--}while(v>=c||y>=c);if(_)break;m<0&&(m=0),m+=2}if(p=m,p<1&&(p=1),1===o){for(d-=n,h-=n,g=d+1,f=h+1,l=n-1;l>=0;l--)t[g+l]=t[f+l];t[d]=x[u]}else{if(0===o)throw new Error;for(f=d-(o-1),l=0;l<o;l++)t[f+l]=x[l]}}else for(f=d-(o-1),l=0;l<o;l++)t[f+l]=x[l]}var u,f,p=c,g=0,m=d,v=0,y=0;g=t.length,g<2*d&&(m=g>>>1);var x=[];v=g<120?5:g<1542?10:g<119151?19:40,u=[],f=[],this.mergeRuns=n,this.forceMergeRuns=r,this.pushRun=i}function h(t,e,r,a){r||(r=0),a||(a=t.length);var s=a-r;if(!(s<2)){var h=0;if(s<u)return h=n(t,r,a,e),void o(t,r,a,r+h,e);var c=new l(t,e),d=i(s);do{if(h=n(t,r,a,e),h<d){var f=s;f>d&&(f=d),o(t,r,r+f,r+h,e),h=f}c.pushRun(r,h),c.mergeRuns(),s-=h,r+=h}while(0!==s);c.forceMergeRuns()}}var u=32,c=7,d=256;t.exports=h},function(t,e){var i={},n="\0__throttleOriginMethod",r="\0__throttleRate",o="\0__throttleType";i.throttle=function(t,e,i){function n(){h=(new Date).getTime(),u=null,t.apply(a,s||[])}var r,o,a,s,l=0,h=0,u=null;e=e||0;var c=function(){r=(new Date).getTime(),a=this,s=arguments,o=r-(i?l:h)-e,clearTimeout(u),i?u=setTimeout(n,e):o>=0?n():u=setTimeout(n,-o),l=r};return c.clear=function(){u&&(clearTimeout(u),u=null)},c},i.createOrUpdate=function(t,e,a,s){var l=t[e];if(l){var h=l[n]||l,u=l[o],c=l[r];if(c!==a||u!==s){if(null==a||!s)return t[e]=h;l=t[e]=i.throttle(h,a,"debounce"===s),l[n]=h,l[o]=s,l[r]=a}return l}},i.clear=function(t,e){var i=t[e];i&&i[n]&&(t[e]=i[n])},t.exports=i},function(t,e,i){var n=i(33);t.exports=function(){if(0!==n.debugMode)if(1==n.debugMode)for(var t in arguments)throw new Error(arguments[t]);else if(n.debugMode>1)for(var t in arguments)console.log(arguments[t])}},function(t,e,i){function n(t){r.call(this,t)}var r=i(36),o=i(9),a=i(1),s=i(151),l=new s(50);n.prototype={constructor:n,type:"image",brush:function(t,e){var i,n=this.style,r=n.image;if(n.bind(t,this,e),i="string"==typeof r?this._image:r,!i&&r){var o=l.get(r);if(!o)return i=new Image,i.onload=function(){i.onload=null;for(var t=0;t<o.pending.length;t++)o.pending[t].dirty()},o={image:i,pending:[this]},i.src=r,l.put(r,o),void(this._image=i);if(i=o.image,this._image=i,!i.width||!i.height)return void o.pending.push(this)}if(i){var a=n.width||i.width,s=n.height||i.height,h=n.x||0,u=n.y||0;if(!i.width||!i.height)return;if(this.setTransform(t),n.sWidth&&n.sHeight){var c=n.sx||0,d=n.sy||0;t.drawImage(i,c,d,n.sWidth,n.sHeight,h,u,a,s)}else if(n.sx&&n.sy){var c=n.sx,d=n.sy,f=a-c,p=s-d;t.drawImage(i,c,d,f,p,h,u,a,s)}else t.drawImage(i,h,u,a,s);null==n.width&&(n.width=a),null==n.height&&(n.height=s),this.restoreTransform(t),null!=n.text&&this.drawRectText(t,this.getBoundingRect())}},getBoundingRect:function(){var t=this.style;return this._rect||(this._rect=new o(t.x||0,t.y||0,t.width||0,t.height||0)),this._rect}},a.inherits(n,r),t.exports=n},function(t,e,i){function n(t,e){var i=t.getItemVisual(e,"symbolSize");return i instanceof Array?i.slice():[+i,+i]}function r(t){return[t[0]/2,t[1]/2]}function o(t,e,i){h.Group.call(this),this.updateData(t,e,i)}function a(t,e){this.parent.drift(t,e)}var s=i(1),l=i(24),h=i(3),u=i(4),c=o.prototype;c._createSymbol=function(t,e,i,n){this.removeAll();var o=e.hostModel,s=e.getItemVisual(i,"color"),u=l.createSymbol(t,-1,-1,2,2,s);u.attr({z2:100,culling:!0,scale:[0,0]}),u.drift=a,h.initProps(u,{scale:r(n)},o,i),this._symbolType=t,this.add(u)},c.stopSymbolAnimation=function(t){this.childAt(0).stopAnimation(t)},c.getSymbolPath=function(){return this.childAt(0)},c.getScale=function(){return this.childAt(0).scale},c.highlight=function(){this.childAt(0).trigger("emphasis")},c.downplay=function(){this.childAt(0).trigger("normal")},c.setZ=function(t,e){var i=this.childAt(0);i.zlevel=t,i.z=e},c.setDraggable=function(t){var e=this.childAt(0);e.draggable=t,e.cursor=t?"move":"pointer"},c.updateData=function(t,e,i){this.silent=!1;var o=t.getItemVisual(e,"symbol")||"circle",a=t.hostModel,s=n(t,e);if(o!==this._symbolType)this._createSymbol(o,t,e,s);else{var l=this.childAt(0);h.updateProps(l,{scale:r(s)},a,e)}this._updateCommon(t,e,s,i),this._seriesModel=a};var d=["itemStyle","normal"],f=["itemStyle","emphasis"],p=["label","normal"],g=["label","emphasis"];c._updateCommon=function(t,e,i,n){var o=this.childAt(0),a=t.hostModel,l=t.getItemVisual(e,"color");"image"!==o.type&&o.useStyle({strokeNoScale:!0}),n=n||null;var c=n&&n.itemStyle,m=n&&n.hoverItemStyle,v=n&&n.symbolRotate,y=n&&n.symbolOffset,x=n&&n.labelModel,_=n&&n.hoverLabelModel,b=n&&n.hoverAnimation;if(!n||t.hasItemOption){var w=t.getItemModel(e);c=w.getModel(d).getItemStyle(["color"]),m=w.getModel(f).getItemStyle(),v=w.getShallow("symbolRotate"),y=w.getShallow("symbolOffset"),x=w.getModel(p),_=w.getModel(g),b=w.getShallow("hoverAnimation")}else m=s.extend({},m);var M=o.style;o.attr("rotation",(v||0)*Math.PI/180||0),y&&o.attr("position",[u.parsePercent(y[0],i[0]),u.parsePercent(y[1],i[1])]),o.setColor(l),o.setStyle(c);var S=t.getItemVisual(e,"opacity");null!=S&&(M.opacity=S);for(var T,A,I=t.dimensions.slice();I.length&&(T=I.pop(),A=t.getDimensionInfo(T).type,"ordinal"===A||"time"===A););null!=T&&x.getShallow("show")?(h.setText(M,x,l),M.text=s.retrieve(a.getFormattedLabel(e,"normal"),t.get(T,e))):M.text="",null!=T&&_.getShallow("show")?(h.setText(m,_,l),m.text=s.retrieve(a.getFormattedLabel(e,"emphasis"),t.get(T,e))):m.text="",o.off("mouseover").off("mouseout").off("emphasis").off("normal"),o.hoverStyle=m,h.setHoverStyle(o);var C=r(i);if(b&&a.isAnimationEnabled()){var k=function(){var t=C[1]/C[0];this.animateTo({scale:[Math.max(1.1*C[0],C[0]+3),Math.max(1.1*C[1],C[1]+3*t)]},400,"elasticOut")},L=function(){this.animateTo({scale:C},400,"elasticOut")};o.on("mouseover",k).on("mouseout",L).on("emphasis",k).on("normal",L)}},c.fadeOut=function(t){var e=this.childAt(0);this.silent=!0,e.style.text="",h.updateProps(e,{scale:[0,0]},this._seriesModel,this.dataIndex,t)},s.inherits(o,h.Group),t.exports=o},function(t,e,i){function n(t){var e={componentType:t.mainType};return e[t.mainType+"Index"]=t.componentIndex,e}function r(t,e,i){var n,r,o=d(e-t.rotation);return f(o)?(r=i>0?"top":"bottom",n="center"):f(o-v)?(r=i>0?"bottom":"top",n="center"):(r="middle",n=o>0&&o<v?i>0?"right":"left":i>0?"left":"right"),{rotation:o,textAlign:n,verticalAlign:r}}function o(t,e,i,n){var r,o,a=d(i-t.rotation),s=n[0]>n[1],l="start"===e&&!s||"start"!==e&&s;return f(a-v/2)?(o=l?"bottom":"top",r="center"):f(a-1.5*v)?(o=l?"top":"bottom",r="center"):(o="middle",r=a<1.5*v&&a>v/2?l?"left":"right":l?"right":"left"),{rotation:a,textAlign:r,verticalAlign:o}}function a(t){var e=t.get("tooltip");return t.get("silent")||!(t.get("triggerEvent")||e&&e.show)}var s=i(1),l=i(8),h=i(3),u=i(11),c=i(4),d=c.remRadian,f=c.isRadianAroundZero,p=i(5),g=p.applyTransform,m=s.retrieve,v=Math.PI,y=function(t,e){this.opt=e,this.axisModel=t,s.defaults(e,{labelOffset:0,nameDirection:1,tickDirection:1,labelDirection:1,silent:!0}),this.group=new h.Group;var i=new h.Group({position:e.position.slice(),rotation:e.rotation});i.updateTransform(),this._transform=i.transform,this._dumbGroup=i};y.prototype={constructor:y,hasBuilder:function(t){return!!x[t]},add:function(t){x[t].call(this)},getGroup:function(){return this.group}};var x={axisLine:function(){var t=this.opt,e=this.axisModel;if(e.get("axisLine.show")){var i=this.axisModel.axis.getExtent(),n=this._transform,r=[i[0],0],o=[i[1],0];n&&(g(r,r,n),g(o,o,n)),this.group.add(new h.Line(h.subPixelOptimizeLine({anid:"line",shape:{x1:r[0],y1:r[1],x2:o[0],y2:o[1]},style:s.extend({lineCap:"round"},e.getModel("axisLine.lineStyle").getLineStyle()),strokeContainThreshold:t.strokeContainThreshold||5,silent:!0,z2:1})))}},axisTick:function(){var t=this.axisModel,e=t.axis;if(t.get("axisTick.show")&&!e.isBlank())for(var i=t.getModel("axisTick"),n=this.opt,r=i.getModel("lineStyle"),o=i.get("length"),a=b(i,n.labelInterval),l=e.getTicksCoords(i.get("alignWithLabel")),u=e.scale.getTicks(),c=[],d=[],f=this._transform,p=0;p<l.length;p++)if(!_(e,p,a)){var m=l[p];c[0]=m,c[1]=0,d[0]=m,d[1]=n.tickDirection*o,f&&(g(c,c,f),g(d,d,f)),this.group.add(new h.Line(h.subPixelOptimizeLine({anid:"tick_"+u[p],shape:{x1:c[0],y1:c[1],x2:d[0],y2:d[1]},style:s.defaults(r.getLineStyle(),{stroke:t.get("axisLine.lineStyle.color")}),z2:2,silent:!0})))}},axisLabel:function(){function t(t,e){var i=t&&t.getBoundingRect().clone(),n=e&&e.getBoundingRect().clone();if(i&&n)return i.applyTransform(t.getLocalTransform()),n.applyTransform(e.getLocalTransform()),i.intersect(n)}var e=this.opt,i=this.axisModel,o=i.axis,l=m(e.axisLabelShow,i.get("axisLabel.show"));if(l&&!o.isBlank()){var c=i.getModel("axisLabel"),d=c.getModel("textStyle"),f=c.get("margin"),p=o.scale.getTicks(),g=i.getFormattedLabels(),y=m(e.labelRotation,c.get("rotate"))||0;y=y*v/180;var x=r(e,y,e.labelDirection),b=i.get("data"),w=[],M=a(i),S=i.get("triggerEvent");if(s.each(p,function(t,r){if(!_(o,r,e.labelInterval)){var a=d;b&&b[t]&&b[t].textStyle&&(a=new u(b[t].textStyle,d,i.ecModel));var s=a.getTextColor()||i.get("axisLine.lineStyle.color"),l=o.dataToCoord(t),c=[l,e.labelOffset+e.labelDirection*f],p=o.scale.getLabel(t),m=new h.Text({anid:"label_"+t,style:{text:g[r],textAlign:a.get("align",!0)||x.textAlign,textVerticalAlign:a.get("baseline",!0)||x.verticalAlign,textFont:a.getFont(),fill:"function"==typeof s?s(p):s},position:c,rotation:x.rotation,silent:M,z2:10});S&&(m.eventData=n(i),m.eventData.targetType="axisLabel",m.eventData.value=p),this._dumbGroup.add(m),m.updateTransform(),w.push(m),this.group.add(m),m.decomposeTransform()}},this),null!=i.getMin()){var T=w[0],A=w[1];t(T,A)&&(T.ignore=!0)}if(null!=i.getMax()){var I=w[w.length-1],C=w[w.length-2];t(C,I)&&(I.ignore=!0)}}},axisName:function(){var t=this.opt,e=this.axisModel,i=m(t.axisName,e.get("name"));if(i){var u,c=e.get("nameLocation"),d=t.nameDirection,f=e.getModel("nameTextStyle"),p=e.get("nameGap")||0,g=this.axisModel.axis.getExtent(),y=g[0]>g[1]?-1:1,x=["start"===c?g[0]-y*p:"end"===c?g[1]+y*p:(g[0]+g[1])/2,"middle"===c?t.labelOffset+d*p:0],_=e.get("nameRotate");null!=_&&(_=_*v/180);var b;"middle"===c?u=r(t,null!=_?_:t.rotation,d):(u=o(t,c,_||0,g),b=t.axisNameAvailableWidth,null!=b&&(b=Math.abs(b/Math.sin(u.rotation)),!isFinite(b)&&(b=null)));var w=f.getFont(),M=e.get("nameTruncate",!0)||{},S=M.ellipsis,T=m(M.maxWidth,b),A=null!=S&&null!=T?l.truncateText(i,T,w,S,{minChar:2,placeholder:M.placeholder}):i,I=e.get("tooltip",!0),C=e.mainType,k={componentType:C,name:i,$vars:["name"]};k[C+"Index"]=e.componentIndex;var L=new h.Text({anid:"name",__fullText:i,__truncatedText:A,style:{text:A,textFont:w,fill:f.getTextColor()||e.get("axisLine.lineStyle.color"),textAlign:u.textAlign,textVerticalAlign:u.verticalAlign},position:x,rotation:u.rotation,silent:a(e),z2:1,tooltip:I&&I.show?s.extend({content:i,formatter:function(){return i},formatterParams:k},I):null});e.get("triggerEvent")&&(L.eventData=n(e),L.eventData.targetType="axisName",L.eventData.name=i),this._dumbGroup.add(L),L.updateTransform(),this.group.add(L),L.decomposeTransform()}}},_=y.ifIgnoreOnTick=function(t,e,i){var n,r=t.scale;return"ordinal"===r.type&&("function"==typeof i?(n=r.getTicks()[e],!i(n,r.getLabel(n))):e%(i+1))},b=y.getInterval=function(t,e){var i=t.get("interval");return null!=i&&"auto"!=i||(i=e),i};t.exports=y},function(t,e,i){function n(t){return r.isObject(t)&&null!=t.value?t.value:t}var r=i(1),o=i(22);t.exports={getFormattedLabels:function(){return o.getFormattedLabels(this.axis,this.get("axisLabel.formatter"))},getCategories:function(){return"category"===this.get("type")&&r.map(this.get("data"),n)},getMin:function(t){var e=this.option,i=t||null==e.rangeStart?e.min:e.rangeStart;return null==i||"dataMin"===i||r.eqNaN(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 null==i||"dataMax"===i||r.eqNaN(i)||(i=this.axis.scale.parse(i)),i},getNeedCrossZero:function(){var t=this.option;return null==t.rangeStart&&null==t.rangeEnd&&!t.scale},getCoordSysModel:r.noop,setRange:function(t,e){this.option.rangeStart=t,this.option.rangeEnd=e},resetRange:function(){this.option.rangeStart=this.option.rangeEnd=null}}},function(t,e,i){function n(t,e,i){return t.getCoordSysModel()===e}function r(t){var e,i=t.model,n=i.getFormattedLabels(),r=i.getModel("axisLabel.textStyle"),o=1,a=n.length;a>40&&(o=Math.ceil(a/40));for(var s=0;s<a;s+=o)if(!t.isLabelIgnored(s)){var l=r.getTextRect(n[s]);e?e.union(l):e=l}return e}function o(t,e,i){this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this._initCartesian(t,e,i),this._model=t}function a(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}}function s(t,e){return c.map(y,function(e){var i=t.getReferringComponents(e)[0];return i})}function l(t){return"cartesian2d"===t.get("coordinateSystem")}var h=i(12),u=i(22),c=i(1),d=i(121),f=i(119),p=c.each,g=u.ifAxisCrossZero,m=u.niceScaleExtent;i(122);var v=o.prototype;v.type="grid",v.getRect=function(){return this._rect},v.update=function(t,e){function i(t){var e=n[t];for(var i in e)if(e.hasOwnProperty(i)){var r=e[i];if(r&&("category"===r.type||!g(r)))return!0}return!1}var n=this._axesMap;this._updateScale(t,this._model),p(n.x,function(t){m(t,t.model)}),p(n.y,function(t){m(t,t.model)}),p(n.x,function(t){i("y")&&(t.onZero=!1)}),p(n.y,function(t){i("x")&&(t.onZero=!1)}),this.resize(this._model,e)},v.resize=function(t,e){function i(){p(o,function(t){var e=t.isHorizontal(),i=e?[0,n.width]:[0,n.height],r=t.inverse?1:0;t.setExtent(i[r],i[1-r]),a(t,e?n.x:n.y)})}var n=h.getLayoutRect(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()});this._rect=n;var o=this._axesList;i(),t.get("containLabel")&&(p(o,function(t){if(!t.model.get("axisLabel.inside")){var e=r(t);if(e){var i=t.isHorizontal()?"height":"width",o=t.model.get("axisLabel.margin");n[i]-=e[i]+o,"top"===t.position?n.y+=e.height+o:"left"===t.position&&(n.x+=e.width+o)}}}),i())},v.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]}},v.getCartesian=function(t,e){if(null!=t&&null!=e){var i="x"+t+"y"+e;return this._coordsMap[i]}for(var n=0,r=this._coordsList;n<r.length;n++)if(r[n].getAxis("x").index===t||r[n].getAxis("y").index===e)return r[n]},v.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},v.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},v._findConvertTarget=function(t,e){var i,n,r=e.seriesModel,o=e.xAxisModel||r&&r.getReferringComponents("xAxis")[0],a=e.yAxisModel||r&&r.getReferringComponents("yAxis")[0],s=e.gridModel,l=this._coordsList;if(r)i=r.coordinateSystem,c.indexOf(l,i)<0&&(i=null);else if(o&&a)i=this.getCartesian(o.componentIndex,a.componentIndex);else if(o)n=this.getAxis("x",o.componentIndex);else if(a)n=this.getAxis("y",a.componentIndex);else if(s){var h=s.coordinateSystem;h===this&&(i=this._coordsList[0])}return{cartesian:i,axis:n}},v.containPoint=function(t){var e=this._coordsList[0];if(e)return e.containPoint(t)},v._initCartesian=function(t,e,i){function r(i){return function(r,l){if(n(r,t,e)){var h=r.get("position");"x"===i?"top"!==h&&"bottom"!==h&&(h="bottom",o[h]&&(h="top"===h?"bottom":"top")):"left"!==h&&"right"!==h&&(h="left",o[h]&&(h="left"===h?"right":"left")),o[h]=!0;var c=new f(i,u.createScaleByModel(r),[0,0],r.get("type"),h),d="category"===c.type;c.onBand=d&&r.get("boundaryGap"),c.inverse=r.get("inverse"),c.onZero=r.get("axisLine.onZero"),r.axis=c,c.model=r,c.grid=this,c.index=l,this._axesList.push(c),a[i][l]=c,s[i]++}}}var o={left:!1,right:!1,top:!1,bottom:!1},a={x:{},y:{}},s={x:0,y:0};return e.eachComponent("xAxis",r("x"),this),e.eachComponent("yAxis",r("y"),this),s.x&&s.y?(this._axesMap=a,void p(a.x,function(t,e){p(a.y,function(i,n){var r="x"+e+"y"+n,o=new d(r);o.grid=this,this._coordsMap[r]=o,this._coordsList.push(o),o.addAxis(t),o.addAxis(i)},this)},this)):(this._axesMap={},void(this._axesList=[]))},v._updateScale=function(t,e){function i(t,e,i){p(i.coordDimToDataDim(e.dim),function(i){e.scale.unionExtentFromData(t,i)})}c.each(this._axesList,function(t){t.scale.setExtent(1/0,-(1/0))}),t.eachSeries(function(r){if(l(r)){var o=s(r,t),a=o[0],h=o[1];if(!n(a,e,t)||!n(h,e,t))return;var u=this.getCartesian(a.componentIndex,h.componentIndex),c=r.getData(),d=u.getAxis("x"),f=u.getAxis("y");"list"===c.type&&(i(c,d,r),i(c,f,r))}},this)};var y=["xAxis","yAxis"];o.create=function(t,e){var i=[];return t.eachComponent("grid",function(n,r){var a=new o(n,t,e);a.name="grid_"+r,a.resize(n,e),n.coordinateSystem=a,i.push(a)}),t.eachSeries(function(e){if(l(e)){var i=s(e,t),n=i[0],r=i[1],o=n.getCoordSysModel(),a=o.coordinateSystem;e.coordinateSystem=a.getCartesian(n.componentIndex,r.componentIndex)}}),i},o.dimensions=d.prototype.dimensions,i(23).register("cartesian2d",o),t.exports=o},function(t,e,i){var n=i(86),r=i(1),o=i(13),a=i(12),s=["value","category","time","log"];t.exports=function(t,e,i,l){r.each(s,function(o){e.extend({type:t+"Axis."+o,mergeDefaultAndTheme:function(e,n){var s=this.layoutMode,l=s?a.getLayoutParams(e):{},h=n.getTheme();r.merge(e,h.get(o+"Axis")),r.merge(e,this.getDefaultOption()),e.type=i(t,e),s&&a.mergeLayoutParam(e,l,s)},defaultOption:r.mergeAll([{},n[o+"Axis"],l],!0)})}),o.registerSubTypeDefaulter(t+"Axis",r.curry(i,t))}},function(t,e,i){"use strict";function n(t,e){return e.type||(e.data?"category":"value")}var r=i(13),o=i(1),a=i(54),s=r.extend({type:"cartesian2dAxis",axis:null,init:function(){s.superApply(this,"init",arguments),this.resetRange()},mergeOption:function(){s.superApply(this,"mergeOption",arguments),this.resetRange()},restoreData:function(){s.superApply(this,"restoreData",arguments),this.resetRange()},getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"grid",index:this.option.gridIndex,id:this.option.gridId})[0]}});o.merge(s.prototype,i(52));var l={offset:0};a("x",s,n,l),a("y",s,n,l),t.exports=s},function(t,e){t.exports=function(t,e){e.eachSeriesByType(t,function(t){var e=t.getData(),i=t.coordinateSystem;if(i){var n=i.dimensions;"singleAxis"===i.type?e.each(n[0],function(t,n){e.setItemLayout(n,isNaN(t)?[NaN,NaN]:i.dataToPoint(t))}):e.each(n,function(t,n,r){e.setItemLayout(r,isNaN(t)||isNaN(n)?[NaN,NaN]:i.dataToPoint([t,n]))},!0)}})}},function(t,e,i){var n=i(15),r=n.set,o=n.get;t.exports={clearColorPalette:function(){r(this,"colorIdx",0),r(this,"colorNameMap",{})},getColorFromPalette:function(t,e){e=e||this;var i=o(e,"colorIdx")||0,n=o(e,"colorNameMap")||r(e,"colorNameMap",{});if(n[t])return n[t];var a=this.get("color",!0)||[];if(a.length){var s=a[i];return t&&(n[t]=s),r(e,"colorIdx",(i+1)%a.length),s}}}},function(t,e){t.exports=function(t,e){var i=e.findComponents({mainType:"legend"});i&&i.length&&e.eachSeriesByType(t,function(t){var e=t.getData();e.filterSelf(function(t){for(var n=e.getName(t),r=0;r<i.length;r++)if(!i[r].isSelected(n))return!1;return!0},this)},this)}},function(t,e,i){var n=i(34),r=i(44),o=i(15),a=function(){this.group=new n,this.uid=r.getUID("viewComponent")};a.prototype={constructor:a,init:function(t,e){},render:function(t,e,i,n){},dispose:function(){}};var s=a.prototype;s.updateView=s.updateLayout=s.updateVisual=function(t,e,i,n){},o.enableClassExtend(a),o.enableClassManagement(a,{registerWhenExtend:!0}),t.exports=a},function(t,e,i){"use strict";var n=i(64),r=i(21),o=i(92),a=i(167),s=i(1),l=function(t){o.call(this,t),r.call(this,t),a.call(this,t),this.id=t.id||n()};l.prototype={type:"element",name:"",__zr:null,ignore:!1,clipPath:null,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]),i[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]=[]),i[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(s.isObject(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,t.__zr=e,t.__clipTarget=this,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)}},s.mixin(l,a),s.mixin(l,o),s.mixin(l,r),t.exports=l},function(t,e,i){function n(t,e){return t[e]}function r(t,e,i){t[e]=i}function o(t,e,i){return(e-t)*i+t}function a(t,e,i){return i>.5?e:t}function s(t,e,i,n,r){var a=t.length;if(1==r)for(var s=0;s<a;s++)n[s]=o(t[s],e[s],i);else for(var l=t[0].length,s=0;s<a;s++)for(var h=0;h<l;h++)n[s][h]=o(t[s][h],e[s][h],i)}function l(t,e,i){var n=t.length,r=e.length;if(n!==r){var o=n>r;if(o)t.length=r;else for(var a=n;a<r;a++)t.push(1===i?e[a]:x.call(e[a]))}for(var s=t[0]&&t[0].length,a=0;a<t.length;a++)if(1===i)isNaN(t[a])&&(t[a]=e[a]);else for(var l=0;l<s;l++)isNaN(t[a][l])&&(t[a][l]=e[a][l])}function h(t,e,i){if(t===e)return!0;var n=t.length;if(n!==e.length)return!1;if(1===i){for(var r=0;r<n;r++)if(t[r]!==e[r])return!1}else for(var o=t[0].length,r=0;r<n;r++)for(var a=0;a<o;a++)if(t[r][a]!==e[r][a])return!1;return!0}function u(t,e,i,n,r,o,a,s,l){var h=t.length;if(1==l)for(var u=0;u<h;u++)s[u]=c(t[u],e[u],i[u],n[u],r,o,a);else for(var d=t[0].length,u=0;u<h;u++)for(var f=0;f<d;f++)s[u][f]=c(t[u][f],e[u][f],i[u][f],n[u][f],r,o,a)}function c(t,e,i,n,r,o,a){var s=.5*(i-t),l=.5*(n-e);return(2*(e-i)+s+l)*a+(-3*(e-i)-2*s-l)*o+s*r+e}function d(t){if(y(t)){var e=t.length;if(y(t[0])){for(var i=[],n=0;n<e;n++)i.push(x.call(t[n]));return i}return x.call(t)}return t}function f(t){return t[0]=Math.floor(t[0]),t[1]=Math.floor(t[1]),t[2]=Math.floor(t[2]),"rgba("+t.join(",")+")"}function p(t,e,i,n,r){var d=t._getter,p=t._setter,v="spline"===e,x=n.length;if(x){var _,b=n[0].value,w=y(b),M=!1,S=!1,T=w&&y(b[0])?2:1;n.sort(function(t,e){return t.time-e.time}),_=n[x-1].time;for(var A=[],I=[],C=n[0].value,k=!0,L=0;L<x;L++){A.push(n[L].time/_);var P=n[L].value;if(w&&h(P,C,T)||!w&&P===C||(k=!1),C=P,"string"==typeof P){var D=m.parse(P);D?(P=D,M=!0):S=!0}I.push(P)}if(!k){for(var O=I[x-1],L=0;L<x-1;L++)w?l(I[L],O,T):!isNaN(I[L])||isNaN(O)||S||M||(I[L]=O);w&&l(d(t._target,r),O,T);var z,E,N,R,B,V,F=0,G=0;if(M)var H=[0,0,0,0];var W=function(t,e){var i;if(e<0)i=0;else if(e<G){for(z=Math.min(F+1,x-1),i=z;i>=0&&!(A[i]<=e);i--);i=Math.min(i,x-2)}else{for(i=F;i<x&&!(A[i]>e);i++);i=Math.min(i-1,x-2)}F=i,G=e;var n=A[i+1]-A[i];if(0!==n)if(E=(e-A[i])/n,v)if(R=I[i],N=I[0===i?i:i-1],B=I[i>x-2?x-1:i+1],V=I[i>x-3?x-1:i+2],w)u(N,R,B,V,E,E*E,E*E*E,d(t,r),T);else{var l;if(M)l=u(N,R,B,V,E,E*E,E*E*E,H,1),l=f(H);else{if(S)return a(R,B,E);l=c(N,R,B,V,E,E*E,E*E*E)}p(t,r,l)}else if(w)s(I[i],I[i+1],E,d(t,r),T);else{var l;if(M)s(I[i],I[i+1],E,H,1),l=f(H);else{if(S)return a(I[i],I[i+1],E);l=o(I[i],I[i+1],E)}p(t,r,l)}},Z=new g({target:t._target,life:_,loop:t._loop,delay:t._delay,onframe:W,ondestroy:i});return e&&"spline"!==e&&(Z.easing=e),Z}}}var g=i(145),m=i(19),v=i(1),y=v.isArrayLike,x=Array.prototype.slice,_=function(t,e,i,o){this._tracks={},this._target=t,this._loop=e||!1,this._getter=i||n,this._setter=o||r,this._clipCount=0,this._delay=0,this._doneList=[],this._onframeList=[],this._clipList=[]};_.prototype={when:function(t,e){var i=this._tracks;for(var n in e)if(e.hasOwnProperty(n)){if(!i[n]){i[n]=[];var r=this._getter(this._target,n);if(null==r)continue;0!==t&&i[n].push({time:0,value:d(r)})}i[n].push({time:t,value:e[n]})}return this},during:function(t){return this._onframeList.push(t),this},_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){var e,i=this,n=0,r=function(){n--,n||i._doneCallback()};for(var o in this._tracks)if(this._tracks.hasOwnProperty(o)){var a=p(this,t,r,this._tracks[o],o);a&&(this._clipList.push(a),n++,this.animation&&this.animation.addClip(a),e=a)}if(e){var s=e.onframe;e.onframe=function(t,e){s(t,e);for(var n=0;n<i._onframeList.length;n++)i._onframeList[n](t,e)}}return n||this._doneCallback(),this},stop:function(t){for(var e=this._clipList,i=this.animation,n=0;n<e.length;n++){var r=e[n];t&&r.onframe(this._target,1),i&&i.removeClip(r)}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}},t.exports=_},function(t,e){t.exports="undefined"!=typeof window&&(window.requestAnimationFrame||window.msRequestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame)||function(t){setTimeout(t,16)}},function(t,e){var i=2*Math.PI;t.exports={normalizeRadian:function(t){return t%=i,t<0&&(t+=i),t}}},function(t,e){var i=2311;t.exports=function(){return i++}},function(t,e){var i=function(t,e){this.image=t,this.repeat=e,this.type="pattern"};i.prototype.getCanvasPattern=function(t){return this._canvasPattern||(this._canvasPattern=t.createPattern(this.image,this.repeat))},t.exports=i},function(t,e){function i(t,e,i){var n=e.x,r=e.x2,o=e.y,a=e.y2;e.global||(n=n*i.width+i.x,r=r*i.width+i.x,o=o*i.height+i.y,a=a*i.height+i.y);var s=t.createLinearGradient(n,o,r,a);return s}function n(t,e,i){var n=i.width,r=i.height,o=Math.min(n,r),a=e.x,s=e.y,l=e.r;e.global||(a=a*n+i.x,s=s*r+i.y,l*=o);var h=t.createRadialGradient(a,s,0,a,s,l);return h}var r=[["shadowBlur",0],["shadowOffsetX",0],["shadowOffsetY",0],["shadowColor","#000"],["lineCap","butt"],["lineJoin","miter"],["miterLimit",10]],o=function(t){this.extendFrom(t)};o.prototype={constructor:o,fill:"#000000",stroke:null,opacity:1,lineDash:null,lineDashOffset:0,shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,lineWidth:1,strokeNoScale:!1,text:null,textFill:"#000",textStroke:null,textPosition:"inside",textOffset:null,textBaseline:null,textAlign:null,textVerticalAlign:null,textDistance:5,textShadowBlur:0,textShadowOffsetX:0,textShadowOffsetY:0,textTransform:!1,textRotation:0,blend:null,bind:function(t,e,i){for(var n=this,o=i&&i.style,a=!o,s=0;s<r.length;s++){var l=r[s],h=l[0];(a||n[h]!==o[h])&&(t[h]=n[h]||l[1])}if((a||n.fill!==o.fill)&&(t.fillStyle=n.fill),(a||n.stroke!==o.stroke)&&(t.strokeStyle=n.stroke),(a||n.opacity!==o.opacity)&&(t.globalAlpha=null==n.opacity?1:n.opacity),(a||n.blend!==o.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&&this.lineWidth>0},extendFrom:function(t,e){if(t){var i=this;for(var n in t)!t.hasOwnProperty(n)||!e&&i.hasOwnProperty(n)||(i[n]=t[n])}},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,r){for(var o="radial"===e.type?n:i,a=o(t,e,r),s=e.colorStops,l=0;l<s.length;l++)a.addColorStop(s[l].offset,s[l].color);return a}};for(var a=o.prototype,s=0;s<r.length;s++){var l=r[s];l[0]in a||(a[l[0]]=l[1])}o.getGradient=a.getGradient,t.exports=o},function(t,e,i){var n=i(157),r=i(156);t.exports={buildPath:function(t,e,i){var o=e.points,a=e.smooth;if(o&&o.length>=2){if(a&&"spline"!==a){var s=r(o,a,i,e.smoothConstraint);t.moveTo(o[0][0],o[0][1]);for(var l=o.length,h=0;h<(i?l:l-1);h++){var u=s[2*h],c=s[2*h+1],d=o[(h+1)%l];t.bezierCurveTo(u[0],u[1],c[0],c[1],d[0],d[1])}}else{"spline"===a&&(o=n(o,i)),t.moveTo(o[0][0],o[0][1]);for(var h=1,f=o.length;h<f;h++)t.lineTo(o[h][0],o[h][1])}i&&t.closePath()}}}},function(t,e,i){var n=i(8),r=i(1),o={},a=["x","y","z","radius","angle","single"],s=["cartesian2d","polar","singleAxis"];o.isCoordSupported=function(t){return r.indexOf(s,t)>=0},o.createNameEach=function(t,e){t=t.slice();var i=r.map(t,n.capitalFirst);e=(e||[]).slice();var o=r.map(e,n.capitalFirst);return function(n,a){r.each(t,function(t,r){for(var s={name:t,capital:i[r]},l=0;l<e.length;l++)s[e[l]]=t+o[l];n.call(a,s)})}},o.eachAxisDim=o.createNameEach(a,["axisIndex","axis","index","id"]),o.createLinkedNodesFinder=function(t,e,i){function n(t,e){return r.indexOf(e.nodes,t)>=0}function o(t,n){var o=!1;return e(function(e){r.each(i(t,e)||[],function(t){n.records[e.name][t]&&(o=!0)})}),o}function a(t,n){n.nodes.push(t),e(function(e){r.each(i(t,e)||[],function(t){n.records[e.name][t]=!0})})}return function(i){function r(t){!n(t,s)&&o(t,s)&&(a(t,s),l=!0)}var s={nodes:[],records:{}};if(e(function(t){s.records[t.name]={}}),!i)return s;a(i,s);var l;do l=!1,t(r);while(l);return s}},t.exports=o},function(t,e,i){var n=i(1);t.exports={updateSelectedMap:function(t){this._selectTargetMap=n.reduce(t||[],function(t,e){return t[e.name]=e,t},{})},select:function(t){var e=this._selectTargetMap,i=e[t],r=this.get("selectedMode");
-"single"===r&&n.each(e,function(t){t.selected=!1}),i&&(i.selected=!0)},unSelect:function(t){var e=this._selectTargetMap[t];e&&(e.selected=!1)},toggleSelected:function(t){var e=this._selectTargetMap[t];if(null!=e)return this[e.selected?"unSelect":"select"](t),e.selected},isSelected:function(t){var e=this._selectTargetMap[t];return e&&e.selected}}},function(t,e,i){function n(t){r.defaultEmphasis(t.label,r.LABEL_OPTIONS)}var r=i(6),o=i(1),a=i(10),s=i(8),l=s.addCommas,h=s.encodeHTML,u=i(2).extendComponentModel({type:"marker",dependencies:["series","grid","polar","geo"],init:function(t,e,i,n){this.mergeDefaultAndTheme(t,i),this.mergeOption(t,i,n.createdBySelf,!0)},isAnimationEnabled:function(){if(a.node)return!1;var t=this.__hostSeries;return this.getShallow("animation")&&t&&t.isAnimationEnabled()},mergeOption:function(t,e,i,r){var a=this.constructor,s=this.mainType+"Model";i||e.eachSeries(function(t){var i=t.get(this.mainType),l=t[s];return i&&i.data?(l?l.mergeOption(i,e,!0):(r&&n(i),o.each(i.data,function(t){t instanceof Array?(n(t[0]),n(t[1])):n(t)}),l=new a(i,this,e),o.extend(l,{mainType:this.mainType,seriesIndex:t.seriesIndex,name:t.name,createdBySelf:!0}),l.__hostSeries=t),void(t[s]=l)):void(t[s]=null)},this)},formatTooltip:function(t){var e=this.getData(),i=this.getRawValue(t),n=o.isArray(i)?o.map(i,l).join(", "):l(i),r=e.getName(t),a=h(this.name);return(null!=i||r)&&(a+="<br />"),r&&(a+=h(r),null!=i&&(a+=" : ")),null!=i&&(a+=h(n)),a},getData:function(){return this._data},setData:function(t){this._data=t}});o.mixin(u,r.dataFormatMixin),t.exports=u},function(t,e,i){t.exports=i(2).extendComponentView({type:"marker",init:function(){this.markerGroupMap={}},render:function(t,e,i){var n=this.markerGroupMap;for(var r in n)n.hasOwnProperty(r)&&(n[r].__keep=!1);var o=this.type+"Model";e.eachSeries(function(t){var n=t[o];n&&this.renderSeries(t,n,e,i)},this);for(var r in n)n.hasOwnProperty(r)&&!n[r].__keep&&this.group.remove(n[r].group)},renderSeries:function(){}})},function(t,e,i){function n(t){return!(isNaN(parseFloat(t.x))&&isNaN(parseFloat(t.y)))}function r(t){return!isNaN(parseFloat(t.x))&&!isNaN(parseFloat(t.y))}function o(t,e,i){var n=-1;do n=Math.max(l.getPrecision(t.get(e,i)),n),t=t.stackedOn;while(t);return n}function a(t,e,i,n,r,a){var s=[],l=m(e,n,t),h=e.indexOfNearest(n,l,!0);s[r]=e.get(i,h,!0),s[a]=e.get(n,h,!0);var u=o(e,n,h);return u>=0&&(s[a]=+s[a].toFixed(u)),s}var s=i(1),l=i(4),h=s.indexOf,u=s.curry,c={min:u(a,"min"),max:u(a,"max"),average:u(a,"average")},d=function(t,e){var i=t.getData(),n=t.coordinateSystem;if(e&&!r(e)&&!s.isArray(e.coord)&&n){var o=n.dimensions,a=f(e,i,n,t);if(e=s.clone(e),e.type&&c[e.type]&&a.baseAxis&&a.valueAxis){var l=h(o,a.baseAxis.dim),u=h(o,a.valueAxis.dim);e.coord=c[e.type](i,a.baseDataDim,a.valueDataDim,l,u),e.value=e.coord[u]}else{for(var d=[null!=e.xAxis?e.xAxis:e.radiusAxis,null!=e.yAxis?e.yAxis:e.angleAxis],p=0;p<2;p++)if(c[d[p]]){var g=t.coordDimToDataDim(o[p])[0];d[p]=m(i,g,d[p])}e.coord=d}}return e},f=function(t,e,i,n){var r={};return null!=t.valueIndex||null!=t.valueDim?(r.valueDataDim=null!=t.valueIndex?e.getDimension(t.valueIndex):t.valueDim,r.valueAxis=i.getAxis(n.dataDimToCoordDim(r.valueDataDim)),r.baseAxis=i.getOtherAxis(r.valueAxis),r.baseDataDim=n.coordDimToDataDim(r.baseAxis.dim)[0]):(r.baseAxis=n.getBaseAxis(),r.valueAxis=i.getOtherAxis(r.baseAxis),r.baseDataDim=n.coordDimToDataDim(r.baseAxis.dim)[0],r.valueDataDim=n.coordDimToDataDim(r.valueAxis.dim)[0]),r},p=function(t,e){return!(t&&t.containData&&e.coord&&!n(e))||t.containData(e.coord)},g=function(t,e,i,n){return n<2?t.coord&&t.coord[n]:t.value},m=function(t,e,i){if("average"===i){var n=0,r=0;return t.each(e,function(t,e){isNaN(t)||(n+=t,r++)},!0),n/r}return t.getDataExtent(e,!0)["max"===i?1:0]};t.exports={dataTransform:d,dataFilter:p,dimValueGetter:g,getAxisInfo:f,numCalculate:m}},,function(t,e){t.exports=function(t,e){var i={};e.eachRawSeriesByType(t,function(t){var n=t.getRawData(),r={};if(!e.isSeriesFiltered(t)){var o=t.getData();o.each(function(t){var e=o.getRawIndex(t);r[e]=t}),n.each(function(e){var a=r[e],s=null!=a&&o.getItemVisual(a,"color",!0);if(s)n.setItemVisual(e,"color",s);else{var l=n.getItemModel(e),h=l.get("itemStyle.normal.color")||t.getColorFromPalette(n.getName(e),i);n.setItemVisual(e,"color",h),null!=a&&o.setItemVisual(a,"color",h)}})}})}},function(t,e,i){var n=i(5),r=i(18),o={},a=Math.min,s=Math.max,l=Math.sin,h=Math.cos,u=n.create(),c=n.create(),d=n.create(),f=2*Math.PI;o.fromPoints=function(t,e,i){if(0!==t.length){var n,r=t[0],o=r[0],l=r[0],h=r[1],u=r[1];for(n=1;n<t.length;n++)r=t[n],o=a(o,r[0]),l=s(l,r[0]),h=a(h,r[1]),u=s(u,r[1]);e[0]=o,e[1]=h,i[0]=l,i[1]=u}},o.fromLine=function(t,e,i,n,r,o){r[0]=a(t,i),r[1]=a(e,n),o[0]=s(t,i),o[1]=s(e,n)};var p=[],g=[];o.fromCubic=function(t,e,i,n,o,l,h,u,c,d){var f,m=r.cubicExtrema,v=r.cubicAt,y=m(t,i,o,h,p);for(c[0]=1/0,c[1]=1/0,d[0]=-(1/0),d[1]=-(1/0),f=0;f<y;f++){var x=v(t,i,o,h,p[f]);c[0]=a(x,c[0]),d[0]=s(x,d[0])}for(y=m(e,n,l,u,g),f=0;f<y;f++){var _=v(e,n,l,u,g[f]);c[1]=a(_,c[1]),d[1]=s(_,d[1])}c[0]=a(t,c[0]),d[0]=s(t,d[0]),c[0]=a(h,c[0]),d[0]=s(h,d[0]),c[1]=a(e,c[1]),d[1]=s(e,d[1]),c[1]=a(u,c[1]),d[1]=s(u,d[1])},o.fromQuadratic=function(t,e,i,n,o,l,h,u){var c=r.quadraticExtremum,d=r.quadraticAt,f=s(a(c(t,i,o),1),0),p=s(a(c(e,n,l),1),0),g=d(t,i,o,f),m=d(e,n,l,p);h[0]=a(t,o,g),h[1]=a(e,l,m),u[0]=s(t,o,g),u[1]=s(e,l,m)},o.fromArc=function(t,e,i,r,o,a,s,p,g){var m=n.min,v=n.max,y=Math.abs(o-a);if(y%f<1e-4&&y>1e-4)return p[0]=t-i,p[1]=e-r,g[0]=t+i,void(g[1]=e+r);if(u[0]=h(o)*i+t,u[1]=l(o)*r+e,c[0]=h(a)*i+t,c[1]=l(a)*r+e,m(p,u,c),v(g,u,c),o%=f,o<0&&(o+=f),a%=f,a<0&&(a+=f),o>a&&!s?a+=f:o<a&&s&&(o+=f),s){var x=a;a=o,o=x}for(var _=0;_<a;_+=Math.PI/2)_>o&&(d[0]=h(_)*i+t,d[1]=l(_)*r+e,m(p,d,p),v(g,d,g))},t.exports=o},function(t,e,i){var n=i(36),r=i(1),o=i(17),a=function(t){n.call(this,t)};a.prototype={constructor:a,type:"text",brush:function(t,e){var i=this.style,n=i.x||0,r=i.y||0,a=i.text;if(null!=a&&(a+=""),i.bind(t,this,e),a){this.setTransform(t);var s,l=i.textAlign,h=i.textFont||i.font;if(i.textVerticalAlign){var u=o.getBoundingRect(a,h,i.textAlign,"top");switch(s="middle",i.textVerticalAlign){case"middle":r-=u.height/2-u.lineHeight/2;break;case"bottom":r-=u.height-u.lineHeight/2;break;default:r+=u.lineHeight/2}}else s=i.textBaseline;t.font=h||"12px sans-serif",t.textAlign=l||"left",t.textAlign!==l&&(t.textAlign="left"),t.textBaseline=s||"alphabetic",t.textBaseline!==s&&(t.textBaseline="alphabetic");for(var c=o.measureText("国",t.font).width,d=a.split("\n"),f=0;f<d.length;f++)i.hasFill()&&t.fillText(d[f],n,r),i.hasStroke()&&t.strokeText(d[f],n,r),r+=c;this.restoreTransform(t)}},getBoundingRect:function(){if(!this._rect){var t=this.style,e=t.textVerticalAlign,i=o.getBoundingRect(t.text+"",t.textFont||t.font,t.textAlign,e?"top":t.textBaseline);switch(e){case"middle":i.y-=i.height/2;break;case"bottom":i.y-=i.height}i.x+=t.x||0,i.y+=t.y||0,this._rect=i}return this._rect}},r.inherits(a,n),t.exports=a},function(t,e,i){function n(t,e){return"string"==typeof t?t.lastIndexOf("%")>=0?parseFloat(t)/100*e:parseFloat(t):t}var r=i(17),o=i(9),a=new o,s=function(){};s.prototype={constructor:s,drawRectText:function(t,e,i){var o=this.style,s=o.text;if(null!=s&&(s+=""),s){t.save();var l,h,u=o.textPosition,c=o.textOffset,d=o.textDistance,f=o.textAlign,p=o.textFont||o.font,g=o.textBaseline,m=o.textVerticalAlign;i=i||r.getBoundingRect(s,p,f,g);var v=this.transform;if(o.textTransform?this.setTransform(t):v&&(a.copy(e),a.applyTransform(v),e=a),u instanceof Array){if(l=e.x+n(u[0],e.width),h=e.y+n(u[1],e.height),f=f||"left",g=g||"top",m){switch(m){case"middle":h-=i.height/2-i.lineHeight/2;break;case"bottom":h-=i.height-i.lineHeight/2;break;default:h+=i.lineHeight/2}g="middle"}}else{var y=r.adjustTextPositionOnRect(u,e,i,d);l=y.x,h=y.y,f=f||y.textAlign,g=g||y.textBaseline}c&&(l+=c[0],h+=c[1]),t.textAlign=f||"left",t.textBaseline=g||"alphabetic";var x=o.textFill,_=o.textStroke;x&&(t.fillStyle=x),_&&(t.strokeStyle=_),t.font=p||"12px sans-serif",t.shadowBlur=o.textShadowBlur,t.shadowColor=o.textShadowColor||"transparent",t.shadowOffsetX=o.textShadowOffsetX,t.shadowOffsetY=o.textShadowOffsetY;var b=s.split("\n");o.textRotation&&(v&&t.translate(v[4],v[5]),t.rotate(o.textRotation),v&&t.translate(-v[4],-v[5]));for(var w=0;w<b.length;w++)x&&t.fillText(b[w],l,h),_&&t.strokeText(b[w],l,h),h+=i.lineHeight;t.restore()}}},t.exports=s},function(t,e,i){function n(t){delete f[t]}/*!
+var w=i(9),M=i(139),S=i(103),T=i(26),A=i(140),I=i(13),C=i(18),P=i(64),k=i(29),L=i(3),D=i(5),O=i(39),z=i(87),E=i(1),N=i(22),R=i(23),B=i(51),V=E.each,F=I.parseClassType,G=1e3,H=5e3,W=1e3,Z=2e3,q=3e3,j=4e3,U=5e3,X="__flagInMainProcess",Y="__hasGradientOrPatternBg",$="__optionUpdated",K=/^[a-zA-Z0-9_]+$/;r.prototype.on=n("on"),r.prototype.off=n("off"),r.prototype.one=n("one"),E.mixin(r,R);var Q=o.prototype;Q._onframe=function(){if(this[$]){var t=this[$].silent;this[X]=!0,J.prepareAndUpdate.call(this),this[X]=!1,this[$]=!1,u.call(this,t),h.call(this,t)}},Q.getDom=function(){return this._dom},Q.getZr=function(){return this._zr},Q.setOption=function(t,e,i){var n;if(E.isObject(e)&&(i=e.lazyUpdate,n=e.silent,e=e.notMerge),this[X]=!0,!this._model||e){var r=new A(this._api),o=this._theme,a=this._model=new M(null,null,o,r);a.init(null,null,o,r)}this.__lastOnlyGraphic=!(!t||!t.graphic),E.each(t,function(t,e){"graphic"!==e&&(this.__lastOnlyGraphic=!1)},this),this._model.setOption(t,rt,this.__lastOnlyGraphic),i?(this[$]={silent:n},this[X]=!1):(J.prepareAndUpdate.call(this),this._zr.flush(),this[$]=!1,this[X]=!1,u.call(this,n),h.call(this,n))},Q.setTheme=function(){console.log("ECharts#setTheme() is DEPRECATED in ECharts 3.0")},Q.getModel=function(){return this._model},Q.getOption=function(){return this._model&&this._model.getOption()},Q.getWidth=function(){return this._zr.getWidth()},Q.getHeight=function(){return this._zr.getHeight()},Q.getDevicePixelRatio=function(){return this._zr.painter.dpr||window.devicePixelRatio||1},Q.getRenderedCanvas=function(t){if(w.canvasSupported){t=t||{},t.pixelRatio=t.pixelRatio||1,t.backgroundColor=t.backgroundColor||this._model.get("backgroundColor");var e=this._zr,i=e.storage.getDisplayList();return E.each(i,function(t){t.stopAnimation(!0)}),e.painter.getRenderedCanvas(t)}},Q.getDataURL=function(t){t=t||{};var e=t.excludeComponents,i=this._model,n=[],r=this;V(e,function(t){i.eachComponent({mainType:t},function(t){var e=r._componentsMap[t.__viewId];e.group.ignore||(n.push(e),e.group.ignore=!0)})});var o=this.getRenderedCanvas(t).toDataURL("image/"+(t&&t.type||"png"));return V(n,function(t){t.group.ignore=!1}),o},Q.getConnectedDataURL=function(t){if(w.canvasSupported){var e=this.group,i=Math.min,n=Math.max,r=1/0;if(ht[e]){var o=r,a=r,s=-r,l=-r,u=[],h=t&&t.pixelRatio||1;E.each(ut,function(r,h){if(r.group===e){var c=r.getRenderedCanvas(E.clone(t)),d=r.getDom().getBoundingClientRect();o=i(d.left,o),a=i(d.top,a),s=n(d.right,s),l=n(d.bottom,l),u.push({dom:c,left:d.left,top:d.top})}}),o*=h,a*=h,s*=h,l*=h;var c=s-o,d=l-a,f=E.createCanvas();f.width=c,f.height=d;var p=z.init(f);return V(u,function(t){var e=new L.Image({style:{x:t.left*h-o,y:t.top*h-a,image:t.dom}});p.add(e)}),p.refreshImmediately(),f.toDataURL("image/"+(t&&t.type||"png"))}return this.getDataURL(t)}},Q.convertToPixel=E.curry(a,"convertToPixel"),Q.convertFromPixel=E.curry(a,"convertFromPixel"),Q.containPixel=function(t,e){var i,n=this._model;return t=D.parseFinder(n,t),E.each(t,function(t,n){n.indexOf("Models")>=0&&E.each(t,function(t){var r=t.coordinateSystem;if(r&&r.containPoint)i|=!!r.containPoint(e);else if("seriesModels"===n){var o=this._chartsMap[t.__viewId];o&&o.containPoint&&(i|=o.containPoint(e,t))}},this)},this),!!i},Q.getVisual=function(t,e){var i=this._model;t=D.parseFinder(i,t,{defaultMainType:"series"});var n=t.seriesModel,r=n.getData(),o=t.hasOwnProperty("dataIndexInside")?t.dataIndexInside:t.hasOwnProperty("dataIndex")?r.indexOfRawIndex(t.dataIndex):null;return null!=o?r.getItemVisual(o,e):r.getVisual(e)},Q.getViewOfComponentModel=function(t){return this._componentsMap[t.__viewId]},Q.getViewOfSeriesModel=function(t){return this._chartsMap[t.__viewId]};var J={update:function(t){var e=this._model,i=this._api,n=this._coordSysMgr,r=this._zr;if(e){e.restoreData(),n.create(this._model,this._api),f.call(this,e,i),p.call(this,e),n.update(e,i),m.call(this,e,t),v.call(this,e,t);var o=e.get("backgroundColor")||"transparent",a=r.painter;if(a.isSingleCanvas&&a.isSingleCanvas())r.configLayer(0,{clearColor:o});else{if(!w.canvasSupported){var s=N.parse(o);o=N.stringify(s,"rgb"),0===s[3]&&(o="transparent")}o.colorStops||o.image?(r.configLayer(0,{clearColor:o}),this[Y]=!0,this._dom.style.background="transparent"):(this[Y]&&r.configLayer(0,{clearColor:null}),this[Y]=!1,this._dom.style.background=o)}V(ot,function(t){t(e,i)})}},updateView:function(t){var e=this._model;e&&(e.eachSeries(function(t){t.getData().clearAllVisual()}),m.call(this,e,t),c.call(this,"updateView",e,t))},updateVisual:function(t){var e=this._model;e&&(e.eachSeries(function(t){t.getData().clearAllVisual()}),m.call(this,e,t,!0),c.call(this,"updateVisual",e,t))},updateLayout:function(t){var e=this._model;e&&(g.call(this,e,t),c.call(this,"updateLayout",e,t))},prepareAndUpdate:function(t){var e=this._model;d.call(this,"component",e),d.call(this,"chart",e),this.__lastOnlyGraphic?(V(this._componentsViews,function(i){var n=i.__model;n&&"graphic"===n.mainType&&(i.render(n,e,this._api,t),_(n,i))},this),this.__lastOnlyGraphic=!1):J.update.call(this,t)}};Q.resize=function(t){this[X]=!0,this._zr.resize(t);var e=this._model&&this._model.resetOption("media"),i=e?"prepareAndUpdate":"update";J[i].call(this),this._loadingFX&&this._loadingFX.resize(),this[X]=!1;var n=t&&t.silent;u.call(this,n),h.call(this,n)},Q.showLoading=function(t,e){if(E.isObject(t)&&(e=t,t=""),t=t||"default",this.hideLoading(),lt[t]){var i=lt[t](this._api,e),n=this._zr;this._loadingFX=i,n.add(i)}},Q.hideLoading=function(){this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null},Q.makeActionFromEvent=function(t){var e=E.extend({},t);return e.type=it[t.type],e},Q.dispatchAction=function(t,e){if(E.isObject(e)||(e={silent:!!e}),et[t.type]){if(this[X])return void this._pendingActions.push(t);l.call(this,t,e.silent),e.flush?this._zr.flush(!0):e.flush!==!1&&w.browser.weChat&&this._throttledZrFlush(),u.call(this,e.silent),h.call(this,e.silent)}},Q.on=n("on"),Q.off=n("off"),Q.one=n("one");var tt=["click","dblclick","mouseover","mouseout","mousemove","mousedown","mouseup","globalout","contextmenu"];Q._initEvents=function(){V(tt,function(t){this._zr.on(t,function(e){var i,n=this.getModel(),r=e.target;if("globalout"===t)i={};else if(r&&null!=r.dataIndex){var o=r.dataModel||n.getSeriesByIndex(r.seriesIndex);i=o&&o.getDataParams(r.dataIndex,r.dataType)||{}}else r&&r.eventData&&(i=E.extend({},r.eventData));i&&(i.event=e,i.type=t,this.trigger(t,i))},this)},this),V(it,function(t,e){this._messageCenter.on(e,function(t){this.trigger(e,t)},this)},this)},Q.isDisposed=function(){return this._disposed},Q.clear=function(){this.setOption({series:[]},!0)},Q.dispose=function(){if(!this._disposed){this._disposed=!0;var t=this._api,e=this._model;V(this._componentsViews,function(i){i.dispose(e,t)}),V(this._chartsViews,function(i){i.dispose(e,t)}),this._zr.dispose(),delete ut[this.id]}},E.mixin(o,R);var et={},it={},nt=[],rt=[],ot=[],at=[],st={},lt={},ut={},ht={},ct=new Date-0,dt=new Date-0,ft="_echarts_instance_",pt={version:"3.5.0",dependencies:{zrender:"3.4.0"}};pt.init=function(t,e,i){var n=new o(t,e,i);return n.id="ec_"+ct++,ut[n.id]=n,t.setAttribute&&t.setAttribute(ft,n.id),b(n),n},pt.connect=function(t){if(E.isArray(t)){var e=t;t=null,E.each(e,function(e){null!=e.group&&(t=e.group)}),t=t||"g_"+dt++,E.each(e,function(e){e.group=t})}return ht[t]=!0,t},pt.disConnect=function(t){ht[t]=!1},pt.disconnect=pt.disConnect,pt.dispose=function(t){E.isDom(t)?t=pt.getInstanceByDom(t):"string"==typeof t&&(t=ut[t]),t instanceof o&&!t.isDisposed()&&t.dispose()},pt.getInstanceByDom=function(t){var e=t.getAttribute(ft);return ut[e]},pt.getInstanceById=function(t){return ut[t]},pt.registerTheme=function(t,e){st[t]=e},pt.registerPreprocessor=function(t){rt.push(t)},pt.registerProcessor=function(t,e){"function"==typeof t&&(e=t,t=G),nt.push({prio:t,func:e})},pt.registerPostUpdate=function(t){ot.push(t)},pt.registerAction=function(t,e,i){"function"==typeof e&&(i=e,e="");var n=E.isObject(t)?t.type:[t,t={event:e}][0];t.event=(t.event||n).toLowerCase(),e=t.event,E.assert(K.test(n)&&K.test(e)),et[n]||(et[n]={action:i,actionInfo:t}),it[e]=n},pt.registerCoordinateSystem=function(t,e){T.register(t,e)},pt.registerLayout=function(t,e){"function"==typeof t&&(e=t,t=W),at.push({prio:t,func:e,isLayout:!0})},pt.registerVisual=function(t,e){"function"==typeof t&&(e=t,t=q),at.push({prio:t,func:e})},pt.registerLoading=function(t,e){lt[t]=e},pt.extendComponentModel=function(t){return I.extend(t)},pt.extendComponentView=function(t){return P.extend(t)},pt.extendSeriesModel=function(t){return C.extend(t)},pt.extendChartView=function(t){return k.extend(t)},pt.setCanvasCreator=function(t){E.createCanvas=t},pt.registerVisual(Z,i(153)),pt.registerPreprocessor(i(147)),pt.registerLoading("default",i(138)),pt.registerAction({type:"highlight",event:"highlight",update:"highlight"},E.noop),pt.registerAction({type:"downplay",event:"downplay",update:"downplay"},E.noop),pt.zrender=z,pt.List=i(14),pt.Model=i(10),pt.Axis=i(33),pt.graphic=i(3),pt.number=i(4),pt.format=i(7),pt.throttle=O.throttle,pt.matrix=i(19),pt.vector=i(6),pt.color=i(22),pt.util={},V(["map","each","filter","indexOf","inherits","reduce","filter","bind","curry","isArray","isString","isObject","isFunction","extend","defaults","clone","merge"],function(t){pt.util[t]=E[t]}),pt.helper=i(137),pt.PRIORITY={PROCESSOR:{FILTER:G,STATISTIC:H},VISUAL:{LAYOUT:W,GLOBAL:Z,CHART:q,COMPONENT:j,BRUSH:U}},t.exports=pt},function(t,e,i){"use strict";function n(t){return null!=t&&"none"!=t}function r(t){return"string"==typeof t?_.lift(t,-.1):t}function o(t){if(t.__hoverStlDirty){var e=t.style.stroke,i=t.style.fill,o=t.__hoverStl;o.fill=o.fill||(n(i)?r(i):null),o.stroke=o.stroke||(n(e)?r(e):null);var a={};for(var s in o)o.hasOwnProperty(s)&&(a[s]=t.style[s]);t.__normalStl=a,t.__hoverStlDirty=!1}}function a(t){t.__isHover||(o(t),t.useHoverLayer?t.__zr&&t.__zr.addHover(t,t.__hoverStl):(t.setStyle(t.__hoverStl),t.z2+=1),t.__isHover=!0)}function s(t){if(t.__isHover){var e=t.__normalStl;t.useHoverLayer?t.__zr&&t.__zr.removeHover(t):(e&&t.setStyle(e),t.z2-=1),t.__isHover=!1}}function l(t){"group"===t.type?t.traverse(function(t){"group"!==t.type&&a(t)}):a(t)}function u(t){"group"===t.type?t.traverse(function(t){"group"!==t.type&&s(t)}):s(t)}function h(t,e){t.__hoverStl=t.hoverStyle||e||{},t.__hoverStlDirty=!0,t.__isHover&&o(t)}function c(t){this.__hoverSilentOnTouch&&t.zrByTouch||!this.__isEmphasis&&l(this)}function d(t){this.__hoverSilentOnTouch&&t.zrByTouch||!this.__isEmphasis&&u(this)}function f(){this.__isEmphasis=!0,l(this)}function p(){this.__isEmphasis=!1,u(this)}function g(t,e,i,n,r,o){"function"==typeof r&&(o=r,r=null);var a=n&&n.isAnimationEnabled();if(a){var s=t?"Update":"",l=n.getShallow("animationDuration"+s),u=n.getShallow("animationEasing"+s),h=n.getShallow("animationDelay"+s);"function"==typeof h&&(h=h(r,n.getAnimationDelayParams?n.getAnimationDelayParams(e,r):null)),"function"==typeof l&&(l=l(r)),l>0?e.animateTo(i,l,h||0,u,o):(e.attr(i),o&&o())}else e.attr(i),o&&o()}var m=i(1),v=i(182),y=Math.round,x=i(8),_=i(22),b=i(19),w=i(6),M={};M.Group=i(36),M.Image=i(53),M.Text=i(85),M.Circle=i(173),M.Sector=i(179),M.Ring=i(178),M.Polygon=i(175),M.Polyline=i(176),M.Rect=i(177),M.Line=i(174),M.BezierCurve=i(172),M.Arc=i(171),M.CompoundPath=i(166),M.LinearGradient=i(101),M.RadialGradient=i(167),M.BoundingRect=i(11),M.extendShape=function(t){return x.extend(t)},M.extendPath=function(t,e){return v.extendFromString(t,e)},M.makePath=function(t,e,i,n){var r=v.createFromString(t,e),o=r.getBoundingRect();if(i){var a=o.width/o.height;if("center"===n){var s,l=i.height*a;l<=i.width?s=i.height:(l=i.width,s=l/a);var u=i.x+i.width/2,h=i.y+i.height/2;i.x=u-l/2,i.y=h-s/2,i.width=l,i.height=s}M.resizePath(r,i)}return r},M.mergePath=v.mergePath,M.resizePath=function(t,e){if(t.applyTransform){var i=t.getBoundingRect(),n=i.calculateTransform(e);t.applyTransform(n)}},M.subPixelOptimizeLine=function(t){var e=M.subPixelOptimize,i=t.shape,n=t.style.lineWidth;return y(2*i.x1)===y(2*i.x2)&&(i.x1=i.x2=e(i.x1,n,!0)),y(2*i.y1)===y(2*i.y2)&&(i.y1=i.y2=e(i.y1,n,!0)),t},M.subPixelOptimizeRect=function(t){var e=M.subPixelOptimize,i=t.shape,n=t.style.lineWidth,r=i.x,o=i.y,a=i.width,s=i.height;return i.x=e(i.x,n,!0),i.y=e(i.y,n,!0),i.width=Math.max(e(r+a,n,!1)-i.x,0===a?0:1),i.height=Math.max(e(o+s,n,!1)-i.y,0===s?0:1),t},M.subPixelOptimize=function(t,e,i){var n=y(2*t);return(n+y(e))%2===0?n/2:(n+(i?1:-1))/2},M.setHoverStyle=function(t,e,i){t.__hoverSilentOnTouch=i&&i.hoverSilentOnTouch,"group"===t.type?t.traverse(function(t){"group"!==t.type&&h(t,e)}):h(t,e),t.on("mouseover",c).on("mouseout",d),t.on("emphasis",f).on("normal",p)},M.setText=function(t,e,i){var n=e.getShallow("position")||"inside",r=e.getShallow("offset"),o=n.indexOf("inside")>=0?"white":i,a=e.getModel("textStyle");m.extend(t,{textDistance:e.getShallow("distance")||5,textFont:a.getFont(),textPosition:n,textOffset:r,textFill:a.getTextColor()||o})},M.updateProps=function(t,e,i,n,r){g(!0,t,e,i,n,r)},M.initProps=function(t,e,i,n,r){g(!1,t,e,i,n,r)},M.getTransform=function(t,e){for(var i=b.identity([]);t&&t!==e;)b.mul(i,t.getLocalTransform(),i),t=t.parent;return i},M.applyTransform=function(t,e,i){return i&&(e=b.invert([],e)),w.applyTransform([],t,e)},M.transformDirection=function(t,e,i){var n=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?-n:"right"===t?n:0,"top"===t?-r:"bottom"===t?r:0];return o=M.applyTransform(o,e,i),Math.abs(o[0])>Math.abs(o[1])?o[0]>0?"right":"left":o[1]>0?"bottom":"top"},M.groupTransition=function(t,e,i,n){function r(t){var e={};return t.traverse(function(t){!t.isGroup&&t.anid&&(e[t.anid]=t)}),e}function o(t){var e={position:w.clone(t.position),rotation:t.rotation};return t.shape&&(e.shape=m.extend({},t.shape)),e}if(t&&e){var a=r(t);e.traverse(function(t){if(!t.isGroup&&t.anid){var e=a[t.anid];if(e){var n=o(t);t.attr(o(e)),M.updateProps(t,n,i,t.dataIndex)}}})}},t.exports=M},function(t,e){function i(t){return t.replace(/^\s+/,"").replace(/\s+$/,"")}var n={},r=1e-4;n.linearMap=function(t,e,i,n){var r=e[1]-e[0],o=i[1]-i[0];if(0===r)return 0===o?i[0]:(i[0]+i[1])/2;if(n)if(r>0){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])/r*o+i[0]},n.parsePercent=function(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?i(t).match(/%$/)?parseFloat(t)/100*e:parseFloat(t):null==t?NaN:+t},n.round=function(t,e,i){return null==e&&(e=10),e=Math.min(Math.max(0,e),20),t=(+t).toFixed(e),i?t:+t},n.asc=function(t){return t.sort(function(t,e){return t-e}),t},n.getPrecision=function(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},n.getPrecisionSafe=function(t){var e=t.toString(),i=e.indexOf(".");return i<0?0:e.length-1-i},n.getPixelPrecision=function(t,e){var i=Math.log,n=Math.LN10,r=Math.floor(i(t[1]-t[0])/n),o=Math.round(i(Math.abs(e[1]-e[0]))/n),a=Math.min(Math.max(-r+o,0),20);return isFinite(a)?a:20},n.MAX_SAFE_INTEGER=9007199254740991,n.remRadian=function(t){var e=2*Math.PI;return(t%e+e)%e},n.isRadianAroundZero=function(t){return t>-r&&t<r};var o=/^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d\d)(?::(\d\d)(?:[.,](\d+))?)?)?(?:Z|([\+\-]\d\d):?\d\d)?)?)?)?)?$/,a=(new Date).getTimezoneOffset();n.parseDate=function(t){if(t instanceof Date)return t;if("string"==typeof t){var e=o.exec(t);return e?new Date((+e[1]),+(e[2]||1)-1,+e[3]||1,+e[4]||0,+(e[5]||0)-60*(e[8]||0)-a,+e[6]||0,+e[7]||0):new Date(NaN)}return null==t?new Date(NaN):new Date(Math.round(t))},n.quantity=function(t){return Math.pow(10,Math.floor(Math.log(t)/Math.LN10))},n.nice=function(t,e){var i,r=n.quantity(t),o=t/r;return i=e?o<1.5?1:o<2.5?2:o<4?3:o<7?5:10:o<1?1:o<2?2:o<3?3:o<5?5:10,i*r},n.reformIntervals=function(t){function e(t,i,n){return t.interval[n]<i.interval[n]||t.interval[n]===i.interval[n]&&(t.close[n]-i.close[n]===(n?-1:1)||!n&&e(t,i,1))}t.sort(function(t,i){return e(t,i,0)?-1:1});for(var i=-(1/0),n=1,r=0;r<t.length;){for(var o=t[r].interval,a=t[r].close,s=0;s<2;s++)o[s]<=i&&(o[s]=i,a[s]=s?1:1-n),i=o[s],n=a[s];o[0]===o[1]&&a[0]*a[1]!==1?t.splice(r,1):r++}return t},n.isNumeric=function(t){return t-parseFloat(t)>=0},t.exports=n},function(t,e,i){function n(t,e){return t&&t.hasOwnProperty(e)}var r=i(7),o=i(4),a=i(10),s=i(1),l=s.each,u=s.isObject,h={};h.normalizeToArray=function(t){return t instanceof Array?t:null==t?[]:[t]},h.defaultEmphasis=function(t,e){if(t){var i=t.emphasis=t.emphasis||{},n=t.normal=t.normal||{};l(e,function(t){var e=s.retrieve(i[t],n[t]);null!=e&&(i[t]=e)})}},h.LABEL_OPTIONS=["position","offset","show","textStyle","distance","formatter"],h.getDataItemValue=function(t){return t&&(null==t.value?t:t.value)},h.isDataItemOption=function(t){return u(t)&&!(t instanceof Array)},h.converDataValue=function(t,e){var i=e&&e.type;return"ordinal"===i?t:("time"===i&&"number"!=typeof t&&null!=t&&"-"!==t&&(t=+o.parseDate(t)),null==t||""===t?NaN:+t)},h.createDataFormatModel=function(t,e){var i=new a;return s.mixin(i,h.dataFormatMixin),i.seriesIndex=e.seriesIndex,i.name=e.name||"",i.mainType=e.mainType,i.subType=e.subType,i.getData=function(){return t},i},h.dataFormatMixin={getDataParams:function(t,e){var i=this.getData(e),n=this.getRawValue(t,e),r=i.getRawIndex(t),o=i.getName(t,!0),a=i.getRawDataItem(t);return{componentType:this.mainType,componentSubType:this.subType,seriesType:"series"===this.mainType?this.subType:null,seriesIndex:this.seriesIndex,seriesId:this.id,seriesName:this.name,name:o,dataIndex:r,data:a,dataType:e,value:n,color:i.getItemVisual(t,"color"),$vars:["seriesName","name","value"]}},getFormattedLabel:function(t,e,i,n){e=e||"normal";var o=this.getData(i),a=o.getItemModel(t),s=this.getDataParams(t,i);null!=n&&s.value instanceof Array&&(s.value=s.value[n]);var l=a.get(["label",e,"formatter"]);return"function"==typeof l?(s.status=e,l(s)):"string"==typeof l?r.formatTpl(l,s):void 0},getRawValue:function(t,e){var i=this.getData(e),n=i.getRawDataItem(t);if(null!=n)return!u(n)||n instanceof Array?n:n.value},formatTooltip:s.noop},h.mappingToExists=function(t,e){e=(e||[]).slice();var i=s.map(t||[],function(t,e){return{exist:t}});return l(e,function(t,n){if(u(t)){for(var r=0;r<i.length;r++)if(!i[r].option&&null!=t.id&&i[r].exist.id===t.id+"")return i[r].option=t,void(e[n]=null);for(var r=0;r<i.length;r++){var o=i[r].exist;if(!(i[r].option||null!=o.id&&null!=t.id||null==t.name||h.isIdInner(t)||h.isIdInner(o)||o.name!==t.name+""))return i[r].option=t,void(e[n]=null)}}}),l(e,function(t,e){if(u(t)){for(var n=0;n<i.length;n++){var r=i[n].exist;if(!i[n].option&&!h.isIdInner(r)&&null==t.id){i[n].option=t;break}}n>=i.length&&i.push({option:t})}}),i},h.makeIdAndName=function(t){var e={};l(t,function(t,i){var n=t.exist;n&&(e[n.id]=t)}),l(t,function(t,i){var n=t.option;s.assert(!n||null==n.id||!e[n.id]||e[n.id]===t,"id duplicates: "+(n&&n.id)),n&&null!=n.id&&(e[n.id]=t),!t.keyInfo&&(t.keyInfo={})}),l(t,function(t,i){var n=t.exist,r=t.option,o=t.keyInfo;if(u(r)){if(o.name=null!=r.name?r.name+"":n?n.name:"\0-",n)o.id=n.id;else if(null!=r.id)o.id=r.id+"";else{var a=0;do o.id="\0"+o.name+"\0"+a++;while(e[o.id])}e[o.id]=t}})},h.isIdInner=function(t){return u(t)&&t.id&&0===(t.id+"").indexOf("\0_ec_\0")},h.compressBatches=function(t,e){function i(t,e,i){for(var n=0,r=t.length;n<r;n++)for(var o=t[n].seriesId,a=h.normalizeToArray(t[n].dataIndex),s=i&&i[o],l=0,u=a.length;l<u;l++){var c=a[l];s&&s[c]?s[c]=null:(e[o]||(e[o]={}))[c]=1}}function n(t,e){var i=[];for(var r in t)if(t.hasOwnProperty(r)&&null!=t[r])if(e)i.push(+r);else{var o=n(t[r],!0);o.length&&i.push({seriesId:r,dataIndex:o})}return i}var r={},o={};return i(t||[],r),i(e||[],o,r),[n(r),n(o)]},h.queryDataIndex=function(t,e){return null!=e.dataIndexInside?e.dataIndexInside:null!=e.dataIndex?s.isArray(e.dataIndex)?s.map(e.dataIndex,function(e){return t.indexOfRawIndex(e)}):t.indexOfRawIndex(e.dataIndex):null!=e.name?s.isArray(e.name)?s.map(e.name,function(e){return t.indexOfName(e)}):t.indexOfName(e.name):void 0},h.makeGetter=function(){var t=0;return function(){var e="\0__ec_prop_getter_"+t++;return function(t){return t[e]||(t[e]={})}}}(),h.parseFinder=function(t,e,i){if(s.isString(e)){var r={};r[e+"Index"]=0,e=r}var o=i&&i.defaultMainType;!o||n(e,o+"Index")||n(e,o+"Id")||n(e,o+"Name")||(e[o+"Index"]=0);var a={};return l(e,function(n,r){var n=e[r];if("dataIndex"===r||"dataIndexInside"===r)return void(a[r]=n);var o=r.match(/^(\w+)(Index|Id|Name)$/)||[],l=o[1],u=(o[2]||"").toLowerCase();if(!(!l||!u||null==n||"index"===u&&"none"===n||i&&i.includeMainTypes&&s.indexOf(i.includeMainTypes,l)<0)){var h={mainType:l};"index"===u&&"all"===n||(h[u]=n);var c=t.queryComponents(h);a[l+"Models"]=c,a[l+"Model"]=c[0]}}),a},t.exports=h},function(t,e){var i="undefined"==typeof Float32Array?Array:Float32Array,n={create:function(t,e){var n=new i(2);return null==t&&(t=0),null==e&&(e=0),n[0]=t,n[1]=e,n},copy:function(t,e){return t[0]=e[0],t[1]=e[1],t},clone:function(t){var e=new i(2);return e[0]=t[0],e[1]=t[1],e},set:function(t,e,i){return t[0]=e,t[1]=i,t},add:function(t,e,i){return t[0]=e[0]+i[0],t[1]=e[1]+i[1],t},scaleAndAdd:function(t,e,i,n){return t[0]=e[0]+i[0]*n,t[1]=e[1]+i[1]*n,t},sub:function(t,e,i){return t[0]=e[0]-i[0],t[1]=e[1]-i[1],t},len:function(t){return Math.sqrt(this.lenSquare(t))},lenSquare:function(t){return t[0]*t[0]+t[1]*t[1]},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:function(t,e,i){return t[0]=e[0]*i,t[1]=e[1]*i,t},normalize:function(t,e){var i=n.len(e);return 0===i?(t[0]=0,t[1]=0):(t[0]=e[0]/i,t[1]=e[1]/i),t},distance:function(t,e){return Math.sqrt((t[0]-e[0])*(t[0]-e[0])+(t[1]-e[1])*(t[1]-e[1]))},distanceSquare:function(t,e){return(t[0]-e[0])*(t[0]-e[0])+(t[1]-e[1])*(t[1]-e[1])},negate:function(t,e){return t[0]=-e[0],t[1]=-e[1],t},lerp:function(t,e,i,n){return t[0]=e[0]+n*(i[0]-e[0]),t[1]=e[1]+n*(i[1]-e[1]),t},applyTransform:function(t,e,i){var n=e[0],r=e[1];return t[0]=i[0]*n+i[2]*r+i[4],t[1]=i[1]*n+i[3]*r+i[5],t},min:function(t,e,i){return t[0]=Math.min(e[0],i[0]),t[1]=Math.min(e[1],i[1]),t},max:function(t,e,i){return t[0]=Math.max(e[0],i[0]),t[1]=Math.max(e[1],i[1]),t}};n.length=n.len,n.lengthSquare=n.lenSquare,n.dist=n.distance,n.distSquare=n.distanceSquare,t.exports=n},function(t,e,i){var n=i(1),r=i(4),o=i(16),a={};a.addCommas=function(t){return isNaN(t)?"-":(t=(t+"").split("."),t[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,"$1,")+(t.length>1?"."+t[1]:""))},a.toCamelCase=function(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},a.normalizeCssArray=function(t){var e=t.length;return"number"==typeof t?[t,t,t,t]:2===e?[t[0],t[1],t[0],t[1]]:3===e?[t[0],t[1],t[2],t[1]]:t};var s=a.encodeHTML=function(t){return String(t).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")},l=["a","b","c","d","e","f","g"],u=function(t,e){return"{"+t+(null==e?"":e)+"}"};a.formatTpl=function(t,e,i){n.isArray(e)||(e=[e]);var r=e.length;if(!r)return"";for(var o=e[0].$vars||[],a=0;a<o.length;a++){var h=l[a],c=u(h,0);t=t.replace(u(h),i?s(c):c)}for(var d=0;d<r;d++)for(var f=0;f<o.length;f++){var c=e[d][o[f]];t=t.replace(u(l[f],d),i?s(c):c)}return t},a.formatTplSimple=function(t,e,i){return n.each(e,function(e,n){t=t.replace("{"+n+"}",i?s(e):e)}),t};var h=function(t){return t<10?"0"+t:t};a.formatTime=function(t,e,i){"week"!==t&&"month"!==t&&"quarter"!==t&&"half-year"!==t&&"year"!==t||(t="MM-dd\nyyyy");var n=r.parseDate(e),o=i?"":"UTC",a=n["get"+o+"FullYear"](),s=n["get"+o+"Month"]()+1,l=n["get"+o+"Date"](),u=n["get"+o+"Hours"](),c=n["get"+o+"Minutes"](),d=n["get"+o+"Seconds"]();return t=t.replace("MM",h(s)).toLowerCase().replace("yyyy",a).replace("yy",a%100).replace("dd",h(l)).replace("d",l).replace("hh",h(u)).replace("h",u).replace("mm",h(c)).replace("m",c).replace("ss",h(d)).replace("s",d)},a.capitalFirst=function(t){return t?t.charAt(0).toUpperCase()+t.substr(1):t},a.truncateText=o.truncateText,t.exports=a},function(t,e,i){function n(t){r.call(this,t),this.path=new a}var r=i(40),o=i(1),a=i(30),s=i(163),l=i(71),u=l.prototype.getCanvasPattern,h=Math.abs;n.prototype={constructor:n,type:"path",__dirtyPath:!0,strokeContainThreshold:5,brush:function(t,e){var i=this.style,n=this.path,r=i.hasStroke(),o=i.hasFill(),a=i.fill,s=i.stroke,l=o&&!!a.colorStops,h=r&&!!s.colorStops,c=o&&!!a.image,d=r&&!!s.image;if(i.bind(t,this,e),this.setTransform(t),this.__dirty){var f=this.getBoundingRect();l&&(this._fillGradient=i.getGradient(t,a,f)),h&&(this._strokeGradient=i.getGradient(t,s,f))}l?t.fillStyle=this._fillGradient:c&&(t.fillStyle=u.call(a,t)),h?t.strokeStyle=this._strokeGradient:d&&(t.strokeStyle=u.call(s,t));var p=i.lineDash,g=i.lineDashOffset,m=!!t.setLineDash,v=this.getGlobalScale();n.setScale(v[0],v[1]),this.__dirtyPath||p&&!m&&r?(n=this.path.beginPath(t),p&&!m&&(n.setLineDash(p),n.setLineDashOffset(g)),this.buildPath(n,this.shape,!1),this.__dirtyPath=!1):(t.beginPath(),this.path.rebuildPath(t)),o&&n.fill(t),p&&m&&(t.setLineDash(p),t.lineDashOffset=g),r&&n.stroke(t),p&&m&&t.setLineDash([]),this.restoreTransform(t),null!=i.text&&this.drawRectText(t,this.getBoundingRect())},buildPath:function(t,e,i){},getBoundingRect:function(){var t=this._rect,e=this.style,i=!t;if(i){var n=this.path;this.__dirtyPath&&(n.beginPath(),this.buildPath(n,this.shape,!1)),t=n.getBoundingRect()}if(this._rect=t,e.hasStroke()){var r=this._rectWithStroke||(this._rectWithStroke=t.clone());if(this.__dirty||i){r.copy(t);var o=e.lineWidth,a=e.strokeNoScale?this.getLineScale():1;e.hasFill()||(o=Math.max(o,this.strokeContainThreshold||4)),a>1e-10&&(r.width+=o/a,r.height+=o/a,r.x-=o/a/2,r.y-=o/a/2)}return r}return t},contain:function(t,e){var i=this.transformCoordToLocal(t,e),n=this.getBoundingRect(),r=this.style;if(t=i[0],e=i[1],n.contain(t,e)){var o=this.path.data;if(r.hasStroke()){var a=r.lineWidth,l=r.strokeNoScale?this.getLineScale():1;if(l>1e-10&&(r.hasFill()||(a=Math.max(a,this.strokeContainThreshold)),s.containStroke(o,a/l,t,e)))return!0}if(r.hasFill())return s.contain(o,t,e)}return!1},dirty:function(t){null==t&&(t=!0),t&&(this.__dirtyPath=t,this._rect=null),this.__dirty=!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):r.prototype.attrKV.call(this,t,e)},setShape:function(t,e){var i=this.shape;if(i){if(o.isObject(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&&h(t[0]-1)>1e-10&&h(t[3]-1)>1e-10?Math.sqrt(h(t[0]*t[3]-t[2]*t[1])):1}},n.extend=function(t){var e=function(e){n.call(this,e),t.style&&this.style.extendFrom(t.style,!1);var i=t.shape;if(i){this.shape=this.shape||{};var r=this.shape;for(var o in i)!r.hasOwnProperty(o)&&i.hasOwnProperty(o)&&(r[o]=i[o])}t.init&&t.init.call(this,e)};o.inherits(e,n);for(var i in t)"style"!==i&&"shape"!==i&&(e.prototype[i]=t[i]);return e},o.inherits(n,r),t.exports=n},function(t,e){function i(t){var e={},i={},n=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);return n&&(i.firefox=!0,i.version=n[1]),r&&(i.ie=!0,i.version=r[1]),o&&(i.edge=!0,i.version=o[1]),a&&(i.weChat=!0),{browser:i,os:e,node:!1,canvasSupported:!!document.createElement("canvas").getContext,touchEventsSupported:"ontouchstart"in window&&!i.ie&&!i.edge,pointerEventsSupported:"onpointerdown"in window&&(i.edge||i.ie&&i.version>=11)}}var n={};n="undefined"==typeof navigator?{browser:{},os:{},node:!0,canvasSupported:!0}:i(navigator.userAgent),t.exports=n},function(t,e,i){function n(t,e,i){this.parentModel=e,this.ecModel=i,this.option=t}function r(t,e,i){for(var n=0;n<e.length&&(!e[n]||(t=t&&"object"==typeof t?t[e[n]]:null,null!=t));n++);return null==t&&i&&(t=i.get(e)),t}function o(t,e){var i=s.get(t,"getParent");return i?i.call(t,e):t.parentModel}var a=i(1),s=i(15),l=i(9);n.prototype={constructor:n,init:null,mergeOption:function(t){a.merge(this.option,t,!0)},get:function(t,e){return null==t?this.option:r(this.option,this.parsePath(t),!e&&o(this,t))},getShallow:function(t,e){var i=this.option,n=null==i?i:i[t],r=!e&&o(this,t);return null==n&&r&&(n=r.getShallow(t)),n},getModel:function(t,e){var i,a=null==t?this.option:r(this.option,t=this.parsePath(t));return e=e||(i=o(this,t))&&i.getModel(t),new n(a,e,this.ecModel)},isEmpty:function(){return null==this.option},restoreData:function(){},clone:function(){var t=this.constructor;return new t(a.clone(this.option))},setReadOnly:function(t){s.setReadOnly(this,t)},parsePath:function(t){return"string"==typeof t&&(t=t.split(".")),t},customizeGetParent:function(t){s.set(this,"getParent",t)},isAnimationEnabled:function(){if(!l.node){if(null!=this.option.animation)return!!this.option.animation;if(this.parentModel)return this.parentModel.isAnimationEnabled()}}},s.enableClassExtend(n);var u=a.mixin;u(n,i(145)),u(n,i(142)),u(n,i(146)),u(n,i(144)),t.exports=n},function(t,e,i){"use strict";function n(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}var r=i(6),o=i(19),a=r.applyTransform,s=Math.min,l=Math.max;n.prototype={constructor:n,union:function(t){var e=s(t.x,this.x),i=s(t.y,this.y);this.width=l(t.x+t.width,this.x+this.width)-e,this.height=l(t.y+t.height,this.y+this.height)-i,this.x=e,this.y=i},applyTransform:function(){var t=[],e=[],i=[],n=[];return function(r){if(r){t[0]=i[0]=this.x,t[1]=n[1]=this.y,e[0]=n[0]=this.x+this.width,e[1]=i[1]=this.y+this.height,a(t,t,r),a(e,e,r),a(i,i,r),a(n,n,r),this.x=s(t[0],e[0],i[0],n[0]),this.y=s(t[1],e[1],i[1],n[1]);var o=l(t[0],e[0],i[0],n[0]),u=l(t[1],e[1],i[1],n[1]);this.width=o-this.x,this.height=u-this.y}}}(),calculateTransform:function(t){var e=this,i=t.width/e.width,n=t.height/e.height,r=o.create();return o.translate(r,r,[-e.x,-e.y]),o.scale(r,r,[i,n]),o.translate(r,r,[t.x,t.y]),r},intersect:function(t){if(!t)return!1;t instanceof n||(t=n.create(t));var e=this,i=e.x,r=e.x+e.width,o=e.y,a=e.y+e.height,s=t.x,l=t.x+t.width,u=t.y,h=t.y+t.height;return!(r<s||l<i||a<u||h<o)},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 n(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}}},n.create=function(t){return new n(t.x,t.y,t.width,t.height)},t.exports=n},function(t,e,i){"use strict";function n(t,e,i,n,r){var o=0,a=0;null==n&&(n=1/0),null==r&&(r=1/0);var s=0;e.eachChild(function(l,u){var h,c,d=l.position,f=l.getBoundingRect(),p=e.childAt(u+1),g=p&&p.getBoundingRect();if("horizontal"===t){var m=f.width+(g?-g.x+f.x:0);h=o+m,h>n||l.newline?(o=0,h=m,a+=s+i,s=f.height):s=Math.max(s,f.height)}else{var v=f.height+(g?-g.y+f.y:0);c=a+v,c>r||l.newline?(o+=s+i,a=0,c=v,s=f.width):s=Math.max(s,f.width)}l.newline||(d[0]=o,d[1]=a,"horizontal"===t?o=h+i:a=c+i)})}var r=i(1),o=i(11),a=i(4),s=i(7),l=a.parsePercent,u=r.each,h={},c=h.LOCATION_PARAMS=["left","right","top","bottom","width","height"],d=h.HV_NAMES=[["width","left","right"],["height","top","bottom"]];h.box=n,h.vbox=r.curry(n,"vertical"),h.hbox=r.curry(n,"horizontal"),h.getAvailableSize=function(t,e,i){var n=e.width,r=e.height,o=l(t.x,n),a=l(t.y,r),u=l(t.x2,n),h=l(t.y2,r);return(isNaN(o)||isNaN(parseFloat(t.x)))&&(o=0),(isNaN(u)||isNaN(parseFloat(t.x2)))&&(u=n),(isNaN(a)||isNaN(parseFloat(t.y)))&&(a=0),(isNaN(h)||isNaN(parseFloat(t.y2)))&&(h=r),
+i=s.normalizeCssArray(i||0),{width:Math.max(u-o-i[1]-i[3],0),height:Math.max(h-a-i[0]-i[2],0)}},h.getLayoutRect=function(t,e,i){i=s.normalizeCssArray(i||0);var n=e.width,r=e.height,a=l(t.left,n),u=l(t.top,r),h=l(t.right,n),c=l(t.bottom,r),d=l(t.width,n),f=l(t.height,r),p=i[2]+i[0],g=i[1]+i[3],m=t.aspect;switch(isNaN(d)&&(d=n-h-g-a),isNaN(f)&&(f=r-c-p-u),isNaN(d)&&isNaN(f)&&(m>n/r?d=.8*n:f=.8*r),null!=m&&(isNaN(d)&&(d=m*f),isNaN(f)&&(f=d/m)),isNaN(a)&&(a=n-h-d-g),isNaN(u)&&(u=r-c-f-p),t.left||t.right){case"center":a=n/2-d/2-i[3];break;case"right":a=n-d-g}switch(t.top||t.bottom){case"middle":case"center":u=r/2-f/2-i[0];break;case"bottom":u=r-f-p}a=a||0,u=u||0,isNaN(d)&&(d=n-a-(h||0)),isNaN(f)&&(f=r-u-(c||0));var v=new o(a+i[3],u+i[0],d,f);return v.margin=i,v},h.positionElement=function(t,e,i,n,a){var s=!a||!a.hv||a.hv[0],l=!a||!a.hv||a.hv[1],u=a&&a.boundingMode||"all";if(s||l){var c;if("raw"===u)c="group"===t.type?new o(0,0,+e.width||0,+e.height||0):t.getBoundingRect();else if(c=t.getBoundingRect(),t.needLocalTransform()){var d=t.getLocalTransform();c=c.clone(),c.applyTransform(d)}e=h.getLayoutRect(r.defaults({width:c.width,height:c.height},e),i,n);var f=t.position,p=s?e.x-c.x:0,g=l?e.y-c.y:0;t.attr("position","raw"===u?[p,g]:[f[0]+p,f[1]+g])}},h.sizeCalculable=function(t,e){return null!=t[d[e][0]]||null!=t[d[e][1]]&&null!=t[d[e][2]]},h.mergeLayoutParam=function(t,e,i){function n(i,n){var r={},s=0,h={},c=0,d=2;if(u(i,function(e){h[e]=t[e]}),u(i,function(t){o(e,t)&&(r[t]=h[t]=e[t]),a(r,t)&&s++,a(h,t)&&c++}),l[n])return a(e,i[2])&&(h[i[1]]=null),a(e,i[1])&&(h[i[2]]=null),h;if(c!==d&&s){if(s>=d)return r;for(var f=0;f<i.length;f++){var p=i[f];if(!o(r,p)&&o(t,p)){r[p]=t[p];break}}return r}return h}function o(t,e){return t.hasOwnProperty(e)}function a(t,e){return null!=t[e]&&"auto"!==t[e]}function s(t,e,i){u(t,function(t){e[t]=i[t]})}!r.isObject(i)&&(i={});var l=i.ignoreSize;!r.isArray(l)&&(l=[l,l]);var h=n(d[0],0),c=n(d[1],1);s(d[0],t,h),s(d[1],t,c)},h.getLayoutParams=function(t){return h.copyLayoutParams({},t)},h.copyLayoutParams=function(t,e){return e&&t&&u(c,function(i){e.hasOwnProperty(i)&&(t[i]=e[i])}),t},t.exports=h},function(t,e,i){function n(t){var e=[];return o.each(h.getClassesByMainType(t),function(t){a.apply(e,t.prototype.dependencies||[])}),o.map(e,function(t){return l.parseClassType(t).main})}var r=i(10),o=i(1),a=Array.prototype.push,s=i(49),l=i(15),u=i(12),h=r.extend({type:"component",id:"",name:"",mainType:"",subType:"",componentIndex:0,defaultOption:null,ecModel:null,dependentModels:[],uid:null,layoutMode:null,$constructor:function(t,e,i,n){r.call(this,t,e,i,n),this.uid=s.getUID("componentModel")},init:function(t,e,i,n){this.mergeDefaultAndTheme(t,i)},mergeDefaultAndTheme:function(t,e){var i=this.layoutMode,n=i?u.getLayoutParams(t):{},r=e.getTheme();o.merge(t,r.get(this.mainType)),o.merge(t,this.getDefaultOption()),i&&u.mergeLayoutParam(t,n,i)},mergeOption:function(t,e){o.merge(this.option,t,!0);var i=this.layoutMode;i&&u.mergeLayoutParam(this.option,t,i)},optionUpdated:function(t,e){},getDefaultOption:function(){if(!l.hasOwn(this,"__defaultOption")){for(var t=[],e=this.constructor;e;){var i=e.prototype.defaultOption;i&&t.push(i),e=e.superClass}for(var n={},r=t.length-1;r>=0;r--)n=o.merge(n,t[r],!0);l.set(this,"__defaultOption",n)}return l.get(this,"__defaultOption")},getReferringComponents:function(t){return this.ecModel.queryComponents({mainType:t,index:this.get(t+"Index",!0),id:this.get(t+"Id",!0)})}});l.enableClassManagement(h,{registerWhenExtend:!0}),s.enableSubTypeDefaulter(h),s.enableTopologicalTravel(h,n),o.mixin(h,i(143)),t.exports=h},function(t,e,i){(function(e){function n(t){return d.isArray(t)||(t=[t]),t}function r(t,e){var i=t.dimensions,n=new v(d.map(i,t.getDimensionInfo,t),t.hostModel);m(n,t);for(var r=n._storage={},o=t._storage,a=0;a<i.length;a++){var s=i[a],l=o[s];d.indexOf(e,s)>=0?r[s]=new l.constructor(o[s].length):r[s]=o[s]}return n}var o="undefined",a="undefined"==typeof window?e:window,s=typeof a.Float64Array===o?Array:a.Float64Array,l=typeof a.Int32Array===o?Array:a.Int32Array,u={"float":s,"int":l,ordinal:Array,number:Array,time:Array},h=i(10),c=i(48),d=i(1),f=i(5),p=d.isObject,g=["stackedOn","hasItemOption","_nameList","_idList","_rawData"],m=function(t,e){d.each(g.concat(e.__wrappedMethods||[]),function(i){e.hasOwnProperty(i)&&(t[i]=e[i])}),t.__wrappedMethods=e.__wrappedMethods},v=function(t,e){t=t||["x","y"];for(var i={},n=[],r=0;r<t.length;r++){var o,a={};"string"==typeof t[r]?(o=t[r],a={name:o,stackable:!1,type:"number"}):(a=t[r],o=a.name,a.type=a.type||"number"),n.push(o),i[o]=a}this.dimensions=n,this._dimensionInfos=i,this.hostModel=e,this.dataType,this.indices=[],this._storage={},this._nameList=[],this._idList=[],this._optionModels=[],this.stackedOn=null,this._visual={},this._layout={},this._itemVisuals=[],this._itemLayouts=[],this._graphicEls=[],this._rawData,this._extent},y=v.prototype;y.type="list",y.hasItemOption=!0,y.getDimension=function(t){return isNaN(t)||(t=this.dimensions[t]||t),t},y.getDimensionInfo=function(t){return d.clone(this._dimensionInfos[this.getDimension(t)])},y.initData=function(t,e,i){t=t||[],this._rawData=t;var n=this._storage={},r=this.indices=[],o=this.dimensions,a=t.length,s=this._dimensionInfos,l=[],h={};e=e||[];for(var c=0;c<o.length;c++){var d=s[o[c]],p=u[d.type];n[o[c]]=new p(a)}var g=this;i||(g.hasItemOption=!1),i=i||function(t,e,i,n){var r=f.getDataItemValue(t);return f.isDataItemOption(t)&&(g.hasItemOption=!0),f.converDataValue(r instanceof Array?r[n]:r,s[e])};for(var m=0;m<t.length;m++){for(var v=t[m],y=0;y<o.length;y++){var x=o[y],_=n[x];_[m]=i(v,x,m,y)}r.push(m)}for(var c=0;c<t.length;c++){e[c]||t[c]&&null!=t[c].name&&(e[c]=t[c].name);var b=e[c]||"",w=t[c]&&t[c].id;!w&&b&&(h[b]=h[b]||0,w=b,h[b]>0&&(w+="__ec__"+h[b]),h[b]++),w&&(l[c]=w)}this._nameList=e,this._idList=l},y.count=function(){return this.indices.length},y.get=function(t,e,i){var n=this._storage,r=this.indices[e];if(null==r)return NaN;var o=n[t]&&n[t][r];if(i){var a=this._dimensionInfos[t];if(a&&a.stackable)for(var s=this.stackedOn;s;){var l=s.get(t,e);(o>=0&&l>0||o<=0&&l<0)&&(o+=l),s=s.stackedOn}}return o},y.getValues=function(t,e,i){var n=[];d.isArray(t)||(i=e,e=t,t=this.dimensions);for(var r=0,o=t.length;r<o;r++)n.push(this.get(t[r],e,i));return n},y.hasValue=function(t){for(var e=this.dimensions,i=this._dimensionInfos,n=0,r=e.length;n<r;n++)if("ordinal"!==i[e[n]].type&&isNaN(this.get(e[n],t)))return!1;return!0},y.getDataExtent=function(t,e,i){t=this.getDimension(t);var n=this._storage[t],r=this.getDimensionInfo(t);e=r&&r.stackable&&e;var o,a=(this._extent||(this._extent={}))[t+!!e];if(a)return a;if(n){for(var s=1/0,l=-(1/0),u=0,h=this.count();u<h;u++)o=this.get(t,u,e),i&&!i(o,t,u)||(o<s&&(s=o),o>l&&(l=o));return this._extent[t+!!e]=[s,l]}return[1/0,-(1/0)]},y.getSum=function(t,e){var i=this._storage[t],n=0;if(i)for(var r=0,o=this.count();r<o;r++){var a=this.get(t,r,e);isNaN(a)||(n+=a)}return n},y.indexOf=function(t,e){var i=this._storage,n=i[t],r=this.indices;if(n)for(var o=0,a=r.length;o<a;o++){var s=r[o];if(n[s]===e)return o}return-1},y.indexOfName=function(t){for(var e=this.indices,i=this._nameList,n=0,r=e.length;n<r;n++){var o=e[n];if(i[o]===t)return n}return-1},y.indexOfRawIndex=function(t){var e=this.indices,i=e[t];if(null!=i&&i===t)return t;for(var n=0,r=e.length-1;n<=r;){var o=(n+r)/2|0;if(e[o]<t)n=o+1;else{if(!(e[o]>t))return o;r=o-1}}return-1},y.indexOfNearest=function(t,e,i,n){var r=this._storage,o=r[t],a=[];if(!o)return a;null==n&&(n=1/0);for(var s=Number.MAX_VALUE,l=-1,u=0,h=this.count();u<h;u++){var c=e-this.get(t,u,i),d=Math.abs(c);c<=n&&d<=s&&((d<s||c>=0&&l<0)&&(s=d,l=c,a.length=0),a.push(u))}return a},y.getRawIndex=function(t){var e=this.indices[t];return null==e?-1:e},y.getRawDataItem=function(t){return this._rawData[this.getRawIndex(t)]},y.getName=function(t){return this._nameList[this.indices[t]]||""},y.getId=function(t){return this._idList[this.indices[t]]||this.getRawIndex(t)+""},y.each=function(t,e,i,r){"function"==typeof t&&(r=i,i=e,e=t,t=[]),t=d.map(n(t),this.getDimension,this);var o=[],a=t.length,s=this.indices;r=r||this;for(var l=0;l<s.length;l++)switch(a){case 0:e.call(r,l);break;case 1:e.call(r,this.get(t[0],l,i),l);break;case 2:e.call(r,this.get(t[0],l,i),this.get(t[1],l,i),l);break;default:for(var u=0;u<a;u++)o[u]=this.get(t[u],l,i);o[u]=l,e.apply(r,o)}},y.filterSelf=function(t,e,i,r){"function"==typeof t&&(r=i,i=e,e=t,t=[]),t=d.map(n(t),this.getDimension,this);var o=[],a=[],s=t.length,l=this.indices;r=r||this;for(var u=0;u<l.length;u++){var h;if(1===s)h=e.call(r,this.get(t[0],u,i),u);else{for(var c=0;c<s;c++)a[c]=this.get(t[c],u,i);a[c]=u,h=e.apply(r,a)}h&&o.push(l[u])}return this.indices=o,this._extent={},this},y.mapArray=function(t,e,i,n){"function"==typeof t&&(n=i,i=e,e=t,t=[]);var r=[];return this.each(t,function(){r.push(e&&e.apply(this,arguments))},i,n),r},y.map=function(t,e,i,o){t=d.map(n(t),this.getDimension,this);var a=r(this,t),s=a.indices=this.indices,l=a._storage,u=[];return this.each(t,function(){var i=arguments[arguments.length-1],n=e&&e.apply(this,arguments);if(null!=n){"number"==typeof n&&(u[0]=n,n=u);for(var r=0;r<n.length;r++){var o=t[r],a=l[o],h=s[i];a&&(a[h]=n[r])}}},i,o),a},y.downSample=function(t,e,i,n){for(var o=r(this,[t]),a=this._storage,s=o._storage,l=this.indices,u=o.indices=[],h=[],c=[],d=Math.floor(1/e),f=s[t],p=this.count(),g=0;g<a[t].length;g++)s[t][g]=a[t][g];for(var g=0;g<p;g+=d){d>p-g&&(d=p-g,h.length=d);for(var m=0;m<d;m++){var v=l[g+m];h[m]=f[v],c[m]=v}var y=i(h),v=c[n(h,y)||0];f[v]=y,u.push(v)}return o},y.getItemModel=function(t){var e=this.hostModel;return t=this.indices[t],new h(this._rawData[t],e,e&&e.ecModel)},y.diff=function(t){var e,i=this._idList,n=t&&t._idList,r="e\0\0";return new c(t?t.indices:[],this.indices,function(t){return null!=(e=n[t])?e:r+t},function(t){return null!=(e=i[t])?e:r+t})},y.getVisual=function(t){var e=this._visual;return e&&e[t]},y.setVisual=function(t,e){if(p(t))for(var i in t)t.hasOwnProperty(i)&&this.setVisual(i,t[i]);else this._visual=this._visual||{},this._visual[t]=e},y.setLayout=function(t,e){if(p(t))for(var i in t)t.hasOwnProperty(i)&&this.setLayout(i,t[i]);else this._layout[t]=e},y.getLayout=function(t){return this._layout[t]},y.getItemLayout=function(t){return this._itemLayouts[t]},y.setItemLayout=function(t,e,i){this._itemLayouts[t]=i?d.extend(this._itemLayouts[t]||{},e):e},y.clearItemLayouts=function(){this._itemLayouts.length=0},y.getItemVisual=function(t,e,i){var n=this._itemVisuals[t],r=n&&n[e];return null!=r||i?r:this.getVisual(e)},y.setItemVisual=function(t,e,i){var n=this._itemVisuals[t]||{};if(this._itemVisuals[t]=n,p(e))for(var r in e)e.hasOwnProperty(r)&&(n[r]=e[r]);else n[e]=i},y.clearAllVisual=function(){this._visual={},this._itemVisuals=[]};var x=function(t){t.seriesIndex=this.seriesIndex,t.dataIndex=this.dataIndex,t.dataType=this.dataType};y.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(x,e)),this._graphicEls[t]=e},y.getItemGraphicEl=function(t){return this._graphicEls[t]},y.eachItemGraphicEl=function(t,e){d.each(this._graphicEls,function(i,n){i&&t&&t.call(e,i,n)})},y.cloneShallow=function(){var t=d.map(this.dimensions,this.getDimensionInfo,this),e=new v(t,this.hostModel);return e._storage=this._storage,m(e,this),e.indices=this.indices.slice(),this._extent&&(e._extent=d.extend({},this._extent)),e},y.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(d.slice(arguments)))})},y.TRANSFERABLE_METHODS=["cloneShallow","downSample","map"],y.CHANGABLE_METHODS=["filterSelf"],t.exports=v}).call(e,function(){return this}())},function(t,e,i){function n(t){a.assert(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(t),'componentType "'+t+'" illegal')}function r(t,e){var i=a.slice(arguments,2);return this.superClass.prototype[e].apply(t,i)}function o(t,e,i){return this.superClass.prototype[e].apply(t,i)}var a=i(1),s={},l=".",u="___EC__COMPONENT__CONTAINER___",h="\0ec_\0";s.set=function(t,e,i){return t[h+e]=i},s.get=function(t,e){return t[h+e]},s.hasOwn=function(t,e){return t.hasOwnProperty(h+e)};var c=s.parseClassType=function(t){var e={main:"",sub:""};return t&&(t=t.split(l),e.main=t[0]||"",e.sub=t[1]||""),e};s.enableClassExtend=function(t,e){t.$constructor=t,t.extend=function(t){var e=this,i=function(){t.$constructor?t.$constructor.apply(this,arguments):e.apply(this,arguments)};return a.extend(i.prototype,t),i.extend=this.extend,i.superCall=r,i.superApply=o,a.inherits(i,this),i.superClass=e,i}},s.enableClassManagement=function(t,e){function i(t){var e=r[t.main];return e&&e[u]||(e=r[t.main]={},e[u]=!0),e}e=e||{};var r={};if(t.registerClass=function(t,e){if(e)if(n(e),e=c(e),e.sub){if(e.sub!==u){var o=i(e);o[e.sub]=t}}else r[e.main]=t;return t},t.getClass=function(t,e,i){var n=r[t];if(n&&n[u]&&(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},t.getClassesByMainType=function(t){t=c(t);var e=[],i=r[t.main];return i&&i[u]?a.each(i,function(t,i){i!==u&&e.push(t)}):e.push(i),e},t.hasClass=function(t){return t=c(t),!!r[t.main]},t.getAllClassMainTypes=function(){var t=[];return a.each(r,function(e,i){t.push(i)}),t},t.hasSubTypes=function(t){t=c(t);var e=r[t.main];return e&&e[u]},t.parseClassType=c,e.registerWhenExtend){var o=t.extend;o&&(t.extend=function(e){var i=o.call(this,e);return t.registerClass(i,e.type)})}return t},s.setReadOnly=function(t,e){},t.exports=s},function(t,e,i){function n(t,e){var i=t+":"+e;if(l[i])return l[i];for(var n=(t+"").split("\n"),r=0,o=0,a=n.length;o<a;o++)r=Math.max(p.measureText(n[o],e).width,r);return u>h&&(u=0,l={}),u++,l[i]=r,r}function r(t,e,i,r){var o=((t||"")+"").split("\n").length,a=n(t,e),s=n("国",e),l=o*s,u=new d(0,0,a,l);switch(u.lineHeight=s,r){case"bottom":case"alphabetic":u.y-=s;break;case"middle":u.y-=s/2}switch(i){case"end":case"right":u.x-=u.width;break;case"center":u.x-=u.width/2}return u}function o(t,e,i,n){var r=e.x,o=e.y,a=e.height,s=e.width,l=i.height,u=a/2-l/2,h="left";switch(t){case"left":r-=n,o+=u,h="right";break;case"right":r+=n+s,o+=u,h="left";break;case"top":r+=s/2,o-=n+l,h="center";break;case"bottom":r+=s/2,o+=a+n,h="center";break;case"inside":r+=s/2,o+=u,h="center";break;case"insideLeft":r+=n,o+=u,h="left";break;case"insideRight":r+=s-n,o+=u,h="right";break;case"insideTop":r+=s/2,o+=n,h="center";break;case"insideBottom":r+=s/2,o+=a-l-n,h="center";break;case"insideTopLeft":r+=n,o+=n,h="left";break;case"insideTopRight":r+=s-n,o+=n,h="right";break;case"insideBottomLeft":r+=n,o+=a-l-n;break;case"insideBottomRight":r+=s-n,o+=a-l-n,h="right"}return{x:r,y:o,textAlign:h,textBaseline:"top"}}function a(t,e,i,r,o){if(!e)return"";o=o||{},r=f(r,"...");for(var a=f(o.maxIterations,2),l=f(o.minChar,0),u=n("国",i),h=n("a",i),c=f(o.placeholder,""),d=e=Math.max(0,e-1),p=0;p<l&&d>=h;p++)d-=h;var g=n(r);g>d&&(r="",g=0),d=e-g;for(var m=(t+"").split("\n"),p=0,v=m.length;p<v;p++){var y=m[p],x=n(y,i);if(!(x<=e)){for(var _=0;;_++){if(x<=d||_>=a){y+=r;break}var b=0===_?s(y,d,h,u):x>0?Math.floor(y.length*d/x):0;y=y.substr(0,b),x=n(y,i)}""===y&&(y=c),m[p]=y}}return m.join("\n")}function s(t,e,i,n){for(var r=0,o=0,a=t.length;o<a&&r<e;o++){var s=t.charCodeAt(o);r+=0<=s&&s<=127?i:n}return o}var l={},u=0,h=5e3,c=i(1),d=i(11),f=c.retrieve,p={getWidth:n,getBoundingRect:r,adjustTextPositionOnRect:o,truncateText:a,measureText:function(t,e){var i=c.getContext();return i.font=e||"12px sans-serif",i.measureText(t)}};t.exports=p},function(t,e,i){var n=i(151),r=i(43);i(152),i(150);var o=i(34),a=i(4),s=i(1),l=i(16),u={};u.getScaleExtent=function(t,e){var i,n,r,o=t.type,l=e.getMin(),u=e.getMax(),h=null!=l,c=null!=u,d=t.getExtent();return"ordinal"===o?i=(e.get("data")||[]).length:(n=e.get("boundaryGap"),s.isArray(n)||(n=[n||0,n||0]),n[0]=a.parsePercent(n[0],1),n[1]=a.parsePercent(n[1],1),r=d[1]-d[0]),null==l&&(l="ordinal"===o?i?0:NaN:d[0]-n[0]*r),null==u&&(u="ordinal"===o?i?i-1:NaN:d[1]+n[1]*r),"dataMin"===l&&(l=d[0]),"dataMax"===u&&(u=d[1]),(null==l||!isFinite(l))&&(l=NaN),(null==u||!isFinite(u))&&(u=NaN),t.setBlank(s.eqNaN(l)||s.eqNaN(u)),e.getNeedCrossZero()&&(l>0&&u>0&&!h&&(l=0),l<0&&u<0&&!c&&(u=0)),[l,u]},u.niceScaleExtent=function(t,e){var i=u.getScaleExtent(t,e),n=null!=e.getMin(),r=null!=e.getMax(),o=e.get("splitNumber");"log"===t.type&&(t.base=e.get("logBase")),t.setExtent(i[0],i[1]),t.niceExtent(o,n,r);var a=e.get("minInterval");if(isFinite(a)&&!n&&!r&&"interval"===t.type){var s=t.getInterval(),l=Math.max(Math.abs(s),a)/s;i=t.getExtent();var h=(i[1]+i[0])/2;t.setExtent(l*(i[0]-h)+h,l*(i[1]-h)+h),t.niceExtent(o)}var s=e.get("interval");null!=s&&t.setInterval&&t.setInterval(s)},u.createScaleByModel=function(t,e){if(e=e||t.get("type"))switch(e){case"category":return new n(t.getCategories(),[1/0,-(1/0)]);case"value":return new r;default:return(o.getClass(e)||r).create(t)}},u.ifAxisCrossZero=function(t){var e=t.scale.getExtent(),i=e[0],n=e[1];return!(i>0&&n>0||i<0&&n<0)},u.getAxisLabelInterval=function(t,e,i,n){var r,o=0,a=0,s=1;e.length>40&&(s=Math.floor(e.length/40));for(var u=0;u<t.length;u+=s){var h=t[u],c=l.getBoundingRect(e[u],i,"center","top");c[n?"x":"y"]+=h,c[n?"width":"height"]*=1.3,r?r.intersect(c)?(a++,o=Math.max(o,a)):(r.union(c),a=0):r=c.clone()}return 0===o&&s>1?s:(o+1)*s-1},u.getFormattedLabels=function(t,e){var i=t.scale,n=i.getTicksLabels(),r=i.getTicks();return"string"==typeof e?(e=function(t){return function(e){return t.replace("{value}",null!=e?e:"")}}(e),s.map(n,e)):"function"==typeof e?s.map(r,function(i,n){return e(u.getAxisRawValue(t,i),n)},this):n},u.getAxisRawValue=function(t,e){return"category"===t.type?t.scale.getLabel(e):e},t.exports=u},function(t,e,i){"use strict";var n=i(1),r=i(7),o=i(15),a=i(5),s=i(13),l=i(62),u=i(9),h=i(12),c=o.set,d=o.get,f=r.encodeHTML,p=r.addCommas,g=s.extend({type:"series.__base__",seriesIndex:0,coordinateSystem:null,defaultOption:null,legendDataProvider:null,visualColorAccessPath:"itemStyle.normal.color",layoutMode:null,init:function(t,e,i,n){this.seriesIndex=this.componentIndex,this.mergeDefaultAndTheme(t,i);var r=this.getInitialData(t,i);c(this,"dataBeforeProcessed",r),this.restoreData()},mergeDefaultAndTheme:function(t,e){var i=this.layoutMode,r=i?h.getLayoutParams(t):{};n.merge(t,e.getTheme().get(this.subType)),n.merge(t,this.getDefaultOption()),a.defaultEmphasis(t.label,a.LABEL_OPTIONS),this.fillDataTextStyle(t.data),i&&h.mergeLayoutParam(t,r,i)},mergeOption:function(t,e){t=n.merge(this.option,t,!0),this.fillDataTextStyle(t.data);var i=this.layoutMode;i&&h.mergeLayoutParam(this.option,t,i);var r=this.getInitialData(t,e);r&&(c(this,"data",r),c(this,"dataBeforeProcessed",r.cloneShallow()))},fillDataTextStyle:function(t){if(t)for(var e=0;e<t.length;e++)t[e]&&t[e].label&&a.defaultEmphasis(t[e].label,a.LABEL_OPTIONS)},getInitialData:function(){},getData:function(t){var e=d(this,"data");return null==t?e:e.getLinkedData(t)},setData:function(t){c(this,"data",t)},getRawData:function(){return d(this,"dataBeforeProcessed")},coordDimToDataDim:function(t){return[t]},dataDimToCoordDim:function(t){return t},getBaseAxis:function(){var t=this.coordinateSystem;return t&&t.getBaseAxis&&t.getBaseAxis()},formatTooltip:function(t,e,i){function o(t){var i=[];return n.each(t,function(t,n){var o,s=a.getDimensionInfo(n),l=s&&s.type;o="ordinal"===l?t+"":"time"===l?e?"":r.formatTime("yyyy/MM/dd hh:mm:ss",t):p(t),o&&i.push(o)}),i.join(", ")}var a=d(this,"data"),s=this.getRawValue(t),l=f(n.isArray(s)?o(s):p(s)),u=a.getName(t),h=a.getItemVisual(t,"color");n.isObject(h)&&h.colorStops&&(h=(h.colorStops[0]||{}).color),h=h||"transparent";var c='<span style="display:inline-block;margin-right:5px;border-radius:10px;width:9px;height:9px;background-color:'+f(h)+'"></span>',g=this.name;return"\0-"===g&&(g=""),e?c+f(this.name)+" : "+l:(g&&f(g)+"<br />")+c+(u?f(u)+" : "+l:l)},isAnimationEnabled:function(){if(u.node)return!1;var t=this.getShallow("animation");return t&&this.getData().count()>this.getShallow("animationThreshold")&&(t=!1),t},restoreData:function(){c(this,"data",d(this,"dataBeforeProcessed").cloneShallow())},getColorFromPalette:function(t,e){var i=this.ecModel,n=l.getColorFromPalette.call(this,t,e);return n||(n=i.getColorFromPalette(t,e)),n},getAxisTooltipData:null,getTooltipPosition:null});n.mixin(g,a.dataFormatMixin),n.mixin(g,l),t.exports=g},function(t,e){var i="undefined"==typeof Float32Array?Array:Float32Array,n={create:function(){var t=new i(6);return n.identity(t),t},identity:function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t},copy:function(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},mul:function(t,e,i){var n=e[0]*i[0]+e[2]*i[1],r=e[1]*i[0]+e[3]*i[1],o=e[0]*i[2]+e[2]*i[3],a=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]=r,t[2]=o,t[3]=a,t[4]=s,t[5]=l,t},translate:function(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},rotate:function(t,e,i){var n=e[0],r=e[2],o=e[4],a=e[1],s=e[3],l=e[5],u=Math.sin(i),h=Math.cos(i);return t[0]=n*h+a*u,t[1]=-n*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},scale:function(t,e,i){var n=i[0],r=i[1];return t[0]=e[0]*n,t[1]=e[1]*r,t[2]=e[2]*n,t[3]=e[3]*r,t[4]=e[4]*n,t[5]=e[5]*r,t},invert:function(t,e){var i=e[0],n=e[2],r=e[4],o=e[1],a=e[3],s=e[5],l=i*a-o*n;return l?(l=1/l,t[0]=a*l,t[1]=-o*l,t[2]=-n*l,t[3]=i*l,t[4]=(n*s-a*r)*l,t[5]=(o*r-i*s)*l,t):null}};t.exports=n},function(t,e,i){"use strict";function n(t){return t.getBoundingClientRect?t.getBoundingClientRect():{left:0,top:0}}function r(t,e,i,n){return i=i||{},n||!h.canvasSupported?o(t,e,i):h.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):o(t,e,i),i}function o(t,e,i){var r=n(t);i.zrX=e.clientX-r.left,i.zrY=e.clientY-r.top}function a(t,e,i){if(e=e||window.event,null!=e.zrX)return e;var n=e.type,o=n&&n.indexOf("touch")>=0;if(o){var a="touchend"!=n?e.targetTouches[0]:e.changedTouches[0];a&&r(t,a,e,i)}else r(t,e,e,i),e.zrDelta=e.wheelDelta?e.wheelDelta/120:-(e.detail||0)/3;return e}function s(t,e,i){c?t.addEventListener(e,i):t.attachEvent("on"+e,i)}function l(t,e,i){c?t.removeEventListener(e,i):t.detachEvent("on"+e,i)}var u=i(23),h=i(9),c="undefined"!=typeof window&&!!window.addEventListener,d=c?function(t){t.preventDefault(),t.stopPropagation(),t.cancelBubble=!0}:function(t){t.returnValue=!1,t.cancelBubble=!0};t.exports={clientToLocal:r,normalizeEvent:a,addEventListener:s,removeEventListener:l,stop:d,Dispatcher:u}},function(t,e,i){"use strict";function n(t){return t>-w&&t<w}function r(t){return t>w||t<-w}function o(t,e,i,n,r){var o=1-r;return o*o*(o*t+3*r*e)+r*r*(r*n+3*o*i)}function a(t,e,i,n,r){var o=1-r;return 3*(((e-t)*o+2*(i-e)*r)*o+(n-i)*r*r)}function s(t,e,i,r,o,a){var s=r+3*(e-i)-t,l=3*(i-2*e+t),u=3*(e-t),h=t-o,c=l*l-3*s*u,d=l*u-9*s*h,f=u*u-3*l*h,p=0;if(n(c)&&n(d))if(n(l))a[0]=0;else{var g=-u/l;g>=0&&g<=1&&(a[p++]=g)}else{var m=d*d-4*c*f;if(n(m)){var v=d/c,g=-l/s+v,y=-v/2;g>=0&&g<=1&&(a[p++]=g),y>=0&&y<=1&&(a[p++]=y)}else if(m>0){var x=b(m),w=c*l+1.5*s*(-d+x),M=c*l+1.5*s*(-d-x);w=w<0?-_(-w,T):_(w,T),M=M<0?-_(-M,T):_(M,T);var g=(-l-(w+M))/(3*s);g>=0&&g<=1&&(a[p++]=g)}else{var A=(2*c*l-3*s*d)/(2*b(c*c*c)),I=Math.acos(A)/3,C=b(c),P=Math.cos(I),g=(-l-2*C*P)/(3*s),y=(-l+C*(P+S*Math.sin(I)))/(3*s),k=(-l+C*(P-S*Math.sin(I)))/(3*s);g>=0&&g<=1&&(a[p++]=g),y>=0&&y<=1&&(a[p++]=y),k>=0&&k<=1&&(a[p++]=k)}}return p}function l(t,e,i,o,a){var s=6*i-12*e+6*t,l=9*e+3*o-3*t-9*i,u=3*e-3*t,h=0;if(n(l)){if(r(s)){var c=-u/s;c>=0&&c<=1&&(a[h++]=c)}}else{var d=s*s-4*l*u;if(n(d))a[0]=-s/(2*l);else if(d>0){var f=b(d),c=(-s+f)/(2*l),p=(-s-f)/(2*l);c>=0&&c<=1&&(a[h++]=c),p>=0&&p<=1&&(a[h++]=p)}}return h}function u(t,e,i,n,r,o){var a=(e-t)*r+t,s=(i-e)*r+e,l=(n-i)*r+i,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]=n}function h(t,e,i,n,r,a,s,l,u,h,c){var d,f,p,g,m,v=.005,y=1/0;A[0]=u,A[1]=h;for(var _=0;_<1;_+=.05)I[0]=o(t,i,r,s,_),I[1]=o(e,n,a,l,_),g=x(A,I),g<y&&(d=_,y=g);y=1/0;for(var w=0;w<32&&!(v<M);w++)f=d-v,p=d+v,I[0]=o(t,i,r,s,f),I[1]=o(e,n,a,l,f),g=x(I,A),f>=0&&g<y?(d=f,y=g):(C[0]=o(t,i,r,s,p),C[1]=o(e,n,a,l,p),m=x(C,A),p<=1&&m<y?(d=p,y=m):v*=.5);return c&&(c[0]=o(t,i,r,s,d),c[1]=o(e,n,a,l,d)),b(y)}function c(t,e,i,n){var r=1-n;return r*(r*t+2*n*e)+n*n*i}function d(t,e,i,n){return 2*((1-n)*(e-t)+n*(i-e))}function f(t,e,i,o,a){var s=t-2*e+i,l=2*(e-t),u=t-o,h=0;if(n(s)){if(r(l)){var c=-u/l;c>=0&&c<=1&&(a[h++]=c)}}else{var d=l*l-4*s*u;if(n(d)){var c=-l/(2*s);c>=0&&c<=1&&(a[h++]=c)}else if(d>0){var f=b(d),c=(-l+f)/(2*s),p=(-l-f)/(2*s);c>=0&&c<=1&&(a[h++]=c),p>=0&&p<=1&&(a[h++]=p)}}return h}function p(t,e,i){var n=t+i-2*e;return 0===n?.5:(t-e)/n}function g(t,e,i,n,r){var o=(e-t)*n+t,a=(i-e)*n+e,s=(a-o)*n+o;r[0]=t,r[1]=o,r[2]=s,r[3]=s,r[4]=a,r[5]=i}function m(t,e,i,n,r,o,a,s,l){var u,h=.005,d=1/0;A[0]=a,A[1]=s;for(var f=0;f<1;f+=.05){I[0]=c(t,i,r,f),I[1]=c(e,n,o,f);var p=x(A,I);p<d&&(u=f,d=p)}d=1/0;for(var g=0;g<32&&!(h<M);g++){var m=u-h,v=u+h;I[0]=c(t,i,r,m),I[1]=c(e,n,o,m);var p=x(I,A);if(m>=0&&p<d)u=m,d=p;else{C[0]=c(t,i,r,v),C[1]=c(e,n,o,v);var y=x(C,A);v<=1&&y<d?(u=v,d=y):h*=.5}}return l&&(l[0]=c(t,i,r,u),l[1]=c(e,n,o,u)),b(d)}var v=i(6),y=v.create,x=v.distSquare,_=Math.pow,b=Math.sqrt,w=1e-8,M=1e-4,S=b(3),T=1/3,A=y(),I=y(),C=y();t.exports={cubicAt:o,cubicDerivativeAt:a,cubicRootAt:s,cubicExtrema:l,cubicSubdivide:u,cubicProjectPoint:h,quadraticAt:c,quadraticDerivativeAt:d,quadraticRootAt:f,quadraticExtremum:p,quadraticSubdivide:g,quadraticProjectPoint:m}},function(t,e,i){function n(t){return t=Math.round(t),t<0?0:t>255?255:t}function r(t){return t=Math.round(t),t<0?0:t>360?360:t}function o(t){return t<0?0:t>1?1:t}function a(t){return n(t.length&&"%"===t.charAt(t.length-1)?parseFloat(t)/100*255:parseInt(t,10))}function s(t){return o(t.length&&"%"===t.charAt(t.length-1)?parseFloat(t)/100:parseFloat(t))}function l(t,e,i){return i<0?i+=1:i>1&&(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 u(t,e,i){return t+(e-t)*i}function h(t,e,i,n,r){return t[0]=e,t[1]=i,t[2]=n,t[3]=r,t}function c(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}function d(t,e){A&&c(A,e),A=T.put(t,A||e.slice())}function f(t,e){if(t){e=e||[];var i=T.get(t);if(i)return c(e,i);t+="";var n=t.replace(/ /g,"").toLowerCase();if(n in S)return c(e,S[n]),d(t,e),e;if("#"!==n.charAt(0)){var r=n.indexOf("("),o=n.indexOf(")");if(r!==-1&&o+1===n.length){var l=n.substr(0,r),u=n.substr(r+1,o-(r+1)).split(","),f=1;switch(l){case"rgba":if(4!==u.length)return void h(e,0,0,0,1);f=s(u.pop());case"rgb":return 3!==u.length?void h(e,0,0,0,1):(h(e,a(u[0]),a(u[1]),a(u[2]),f),d(t,e),e);case"hsla":return 4!==u.length?void h(e,0,0,0,1):(u[3]=s(u[3]),p(u,e),d(t,e),e);case"hsl":return 3!==u.length?void h(e,0,0,0,1):(p(u,e),d(t,e),e);default:return}}h(e,0,0,0,1)}else{if(4===n.length){var g=parseInt(n.substr(1),16);return g>=0&&g<=4095?(h(e,(3840&g)>>4|(3840&g)>>8,240&g|(240&g)>>4,15&g|(15&g)<<4,1),d(t,e),e):void h(e,0,0,0,1)}if(7===n.length){var g=parseInt(n.substr(1),16);return g>=0&&g<=16777215?(h(e,(16711680&g)>>16,(65280&g)>>8,255&g,1),d(t,e),e):void h(e,0,0,0,1)}}}}function p(t,e){var i=(parseFloat(t[0])%360+360)%360/360,r=s(t[1]),o=s(t[2]),a=o<=.5?o*(r+1):o+r-o*r,u=2*o-a;return e=e||[],h(e,n(255*l(u,a,i+1/3)),n(255*l(u,a,i)),n(255*l(u,a,i-1/3)),1),4===t.length&&(e[3]=t[3]),e}function g(t){if(t){var e,i,n=t[0]/255,r=t[1]/255,o=t[2]/255,a=Math.min(n,r,o),s=Math.max(n,r,o),l=s-a,u=(s+a)/2;if(0===l)e=0,i=0;else{i=u<.5?l/(s+a):l/(2-s-a);var h=((s-n)/6+l/2)/l,c=((s-r)/6+l/2)/l,d=((s-o)/6+l/2)/l;n===s?e=d-c:r===s?e=1/3+h-d:o===s&&(e=2/3+c-h),e<0&&(e+=1),e>1&&(e-=1)}var f=[360*e,i,u];return null!=t[3]&&f.push(t[3]),f}}function m(t,e){var i=f(t);if(i){for(var n=0;n<3;n++)e<0?i[n]=i[n]*(1-e)|0:i[n]=(255-i[n])*e+i[n]|0;return w(i,4===i.length?"rgba":"rgb")}}function v(t,e){var i=f(t);if(i)return((1<<24)+(i[0]<<16)+(i[1]<<8)+ +i[2]).toString(16).slice(1)}function y(t,e,i){if(i=i||[0,0,0,0],!e||!e.length||!(t>=0&&t<=1))return i;var r=t*(e.length-1),o=Math.floor(r),a=Math.ceil(r),s=e[o],l=e[a],h=r-o;return i[0]=n(u(s[0],l[0],h)),i[1]=n(u(s[1],l[1],h)),i[2]=n(u(s[2],l[2],h)),i[3]=n(u(s[3],l[3],h)),i}function x(t,e,i){if(e&&e.length&&t>=0&&t<=1){var r=t*(e.length-1),a=Math.floor(r),s=Math.ceil(r),l=f(e[a]),h=f(e[s]),c=r-a,d=w([n(u(l[0],h[0],c)),n(u(l[1],h[1],c)),n(u(l[2],h[2],c)),o(u(l[3],h[3],c))],"rgba");return i?{color:d,leftIndex:a,rightIndex:s,value:r}:d}}function _(t,e,i,n){if(t=f(t))return t=g(t),null!=e&&(t[0]=r(e)),null!=i&&(t[1]=s(i)),null!=n&&(t[2]=s(n)),w(p(t),"rgba")}function b(t,e){if(t=f(t),t&&null!=e)return t[3]=o(e),w(t,"rgba")}function w(t,e){if(t){var i=t[0]+","+t[1]+","+t[2];return"rgba"!==e&&"hsva"!==e&&"hsla"!==e||(i+=","+t[3]),e+"("+i+")"}}var M=i(69),S={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]},T=new M(20),A=null;t.exports={parse:f,lift:m,toHex:v,fastMapToColor:y,mapToColor:x,modifyHSL:_,modifyAlpha:b,stringify:w}},function(t,e){var i=Array.prototype.slice,n=function(){this._$handlers={}};n.prototype={constructor:n,one:function(t,e,i){var n=this._$handlers;if(!e||!t)return this;n[t]||(n[t]=[]);for(var r=0;r<n[t].length;r++)if(n[t][r].h===e)return this;return n[t].push({h:e,one:!0,ctx:i||this}),this},on:function(t,e,i){var n=this._$handlers;if(!e||!t)return this;n[t]||(n[t]=[]);for(var r=0;r<n[t].length;r++)if(n[t][r].h===e)return this;return n[t].push({h:e,one:!1,ctx:i||this}),this},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=[],r=0,o=i[t].length;r<o;r++)i[t][r].h!=e&&n.push(i[t][r]);i[t]=n}i[t]&&0===i[t].length&&delete i[t]}else delete i[t];return this},trigger:function(t){if(this._$handlers[t]){var e=arguments,n=e.length;n>3&&(e=i.call(e,1));for(var r=this._$handlers[t],o=r.length,a=0;a<o;){switch(n){case 1:r[a].h.call(r[a].ctx);break;case 2:r[a].h.call(r[a].ctx,e[1]);break;case 3:r[a].h.call(r[a].ctx,e[1],e[2]);break;default:r[a].h.apply(r[a].ctx,e)}r[a].one?(r.splice(a,1),o--):a++}}return this},triggerWithContext:function(t){if(this._$handlers[t]){var e=arguments,n=e.length;n>4&&(e=i.call(e,1,e.length-1));for(var r=e[e.length-1],o=this._$handlers[t],a=o.length,s=0;s<a;){switch(n){case 1:o[s].h.call(r);break;case 2:o[s].h.call(r,e[1]);break;case 3:o[s].h.call(r,e[1],e[2]);break;default:o[s].h.apply(r,e)}o[s].one?(o.splice(s,1),a--):s++}}return this}},t.exports=n},function(t,e,i){"use strict";var n=i(3),r=i(11),o=n.extendShape({type:"triangle",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var i=e.cx,n=e.cy,r=e.width/2,o=e.height/2;t.moveTo(i,n-o),t.lineTo(i+r,n+o),t.lineTo(i-r,n+o),t.closePath()}}),a=n.extendShape({type:"diamond",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var i=e.cx,n=e.cy,r=e.width/2,o=e.height/2;t.moveTo(i,n-o),t.lineTo(i+r,n),t.lineTo(i,n+o),t.lineTo(i-r,n),t.closePath()}}),s=n.extendShape({type:"pin",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var i=e.x,n=e.y,r=e.width/5*3,o=Math.max(r,e.height),a=r/2,s=a*a/(o-a),l=n-o+a+s,u=Math.asin(s/a),h=Math.cos(u)*a,c=Math.sin(u),d=Math.cos(u);t.arc(i,l,a,Math.PI-u,2*Math.PI+u);var f=.6*a,p=.7*a;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()}}),l=n.extendShape({type:"arrow",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var i=e.height,n=e.width,r=e.x,o=e.y,a=n/3*2;t.moveTo(r,o),t.lineTo(r+a,o+i),t.lineTo(r,o+i/4*3),t.lineTo(r-a,o+i),t.lineTo(r,o),t.closePath()}}),u={line:n.Line,rect:n.Rect,roundRect:n.Rect,square:n.Rect,circle:n.Circle,diamond:a,pin:s,arrow:l,triangle:o},h={line:function(t,e,i,n,r){r.x1=t,r.y1=e+n/2,r.x2=t+i,r.y2=e+n/2},rect:function(t,e,i,n,r){r.x=t,r.y=e,r.width=i,r.height=n},roundRect:function(t,e,i,n,r){r.x=t,r.y=e,r.width=i,r.height=n,r.r=Math.min(i,n)/4},square:function(t,e,i,n,r){var o=Math.min(i,n);r.x=t,r.y=e,r.width=o,r.height=o},circle:function(t,e,i,n,r){r.cx=t+i/2,r.cy=e+n/2,r.r=Math.min(i,n)/2},diamond:function(t,e,i,n,r){r.cx=t+i/2,r.cy=e+n/2,r.width=i,r.height=n},pin:function(t,e,i,n,r){r.x=t+i/2,r.y=e+n/2,r.width=i,r.height=n},arrow:function(t,e,i,n,r){r.x=t+i/2,r.y=e+n/2,r.width=i,r.height=n},triangle:function(t,e,i,n,r){r.cx=t+i/2,r.cy=e+n/2,r.width=i,r.height=n}},c={};for(var d in u)u.hasOwnProperty(d)&&(c[d]=new u[d]);var f=n.extendShape({type:"symbol",shape:{symbolType:"",x:0,y:0,width:0,height:0},beforeBrush:function(){var t=this.style,e=this.shape;"pin"===e.symbolType&&"inside"===t.textPosition&&(t.textPosition=["50%","40%"],t.textAlign="center",t.textVerticalAlign="middle")},buildPath:function(t,e,i){var n=e.symbolType,r=c[n];"none"!==e.symbolType&&(r||(n="rect",r=c[n]),h[n](e.x,e.y,e.width,e.height,r.shape),r.buildPath(t,r.shape,i))}}),p=function(t){if("image"!==this.type){var e=this.style,i=this.shape;i&&"line"===i.symbolType?e.stroke=t:this.__isEmptyBrush?(e.stroke=t,e.fill="#fff"):(e.fill&&(e.fill=t),e.stroke&&(e.stroke=t)),this.dirty(!1)}},g={createSymbol:function(t,e,i,o,a,s){var l=0===t.indexOf("empty");l&&(t=t.substr(5,1).toLowerCase()+t.substr(6));var u;return u=0===t.indexOf("image://")?new n.Image({style:{image:t.slice(8),x:e,y:i,width:o,height:a}}):0===t.indexOf("path://")?n.makePath(t.slice(7),{},new r(e,i,o,a)):new f({shape:{symbolType:t,x:e,y:i,width:o,height:a}}),u.__isEmptyBrush=l,u.setColor=p,u.setColor(s),u}};t.exports=g},function(t,e,i){function n(t,e,i){if(!e)return t;i=i||{};var n=i.dimCount;if(null==n){var s=r(e[0]);n=o.isArray(s)&&s.length||1}for(var l=i.defaultNames||[],u=i.extraPrefix||"extra",h=0;h<n;h++)if(!t[h]){var c=l[h]||u+(h-l.length);t[h]=a(e,h)?{type:"ordinal",name:c}:c}return t}function r(t){return o.isArray(t)?t:o.isObject(t)?t.value:t}var o=i(1),a=n.guessOrdinal=function(t,e){for(var i=0,n=t.length;i<n;i++){var a=r(t[i]);if(!o.isArray(a))return!1;var a=a[e];if(null!=a&&isFinite(a))return!1;if(o.isString(a)&&"-"!==a)return!0}return!1};t.exports=n},function(t,e,i){"use strict";function n(){this._coordinateSystems=[]}var r=i(1),o={};n.prototype={constructor:n,create:function(t,e){var i=[];r.each(o,function(n,r){var o=n.create(t,e);i=i.concat(o||[])}),this._coordinateSystems=i},update:function(t,e){r.each(this._coordinateSystems,function(i){i.update&&i.update(t,e)})},getCoordinateSystems:function(){return this._coordinateSystems.slice()}},n.register=function(t,e){o[t]=e},n.get=function(t){return o[t]},t.exports=n},function(t,e,i){"use strict";function n(t){for(var e=0;e<t.length&&null==t[e];)e++;return t[e]}function r(t){var e=n(t);return null!=e&&!c.isArray(p(e))}function o(t,e,i){t=t||[];var n=e.get("coordinateSystem"),o=m[n],a=f.get(n),s=o&&o(t,e,i),v=s&&s.dimensions;v||(v=a&&(a.getDimensionsInfo?a.getDimensionsInfo():a.dimensions.slice())||["x","y"],v=h(v,t,{defaultNames:v.concat(["value"])}));var y=s?s.categoryIndex:-1,x=new u(v,e),_=l(s,t),b={},w=y>=0&&r(t)?function(t,e,i,n){return d.isDataItemOption(t)&&(x.hasItemOption=!0),n===y?i:g(p(t),v[n])}:function(t,e,i,n){var r=p(t),o=g(r&&r[n],v[n]);d.isDataItemOption(t)&&(x.hasItemOption=!0);var a=s&&s.categoryAxesModels;return a&&a[e]&&"string"==typeof o&&(b[e]=b[e]||a[e].getCategories(),o=c.indexOf(b[e],o),o<0&&!isNaN(o)&&(o=+o)),o};return x.hasItemOption=!1,x.initData(t,_,w),x}function a(t){return"category"!==t&&"time"!==t}function s(t){return"category"===t?"ordinal":"time"===t?"time":"float"}function l(t,e){var i,n=[],r=t&&t.dimensions[t.categoryIndex];if(r&&(i=t.categoryAxesModels[r.name]),i){var o=i.getCategories();if(o){var a=e.length;if(c.isArray(e[0])&&e[0].length>1){n=[];for(var s=0;s<a;s++)n[s]=o[e[s][t.categoryIndex||0]]}else n=o.slice(0)}}return n}var u=i(14),h=i(25),c=i(1),d=i(5),f=i(26),p=d.getDataItemValue,g=d.converDataValue,m={cartesian2d:function(t,e,i){var n=c.map(["xAxis","yAxis"],function(t){return i.queryComponents({mainType:t,index:e.get(t+"Index"),id:e.get(t+"Id")})[0]}),r=n[0],o=n[1],l=r.get("type"),u=o.get("type"),d=[{name:"x",type:s(l),stackable:a(l)},{name:"y",type:s(u),stackable:a(u)}],f="category"===l,p="category"===u;h(d,t,{defaultNames:["x","y","z"]});var g={};return f&&(g.x=r),p&&(g.y=o),{dimensions:d,categoryIndex:f?0:p?1:-1,categoryAxesModels:g}},singleAxis:function(t,e,i){var n=i.queryComponents({mainType:"singleAxis",index:e.get("singleAxisIndex"),id:e.get("singleAxisId")})[0],r=n.get("type"),o="category"===r,l=[{name:"single",type:s(r),stackable:a(r)}];h(l,t);var u={};return o&&(u.single=n),{dimensions:l,categoryIndex:o?0:-1,categoryAxesModels:u}},polar:function(t,e,i){var n=i.queryComponents({mainType:"polar",index:e.get("polarIndex"),id:e.get("polarId")})[0],r=n.findAxisModel("angleAxis"),o=n.findAxisModel("radiusAxis"),l=o.get("type"),u=r.get("type"),c=[{name:"radius",type:s(l),stackable:a(l)},{name:"angle",type:s(u),stackable:a(u)}],d="category"===u,f="category"===l;h(c,t,{defaultNames:["radius","angle","value"]});var p={};return f&&(p.radius=o),d&&(p.angle=r),{dimensions:c,categoryIndex:d?1:f?0:-1,categoryAxesModels:p}},geo:function(t,e,i){return{dimensions:h([{name:"lng"},{name:"lat"}],t,{defaultNames:["lng","lat","value"]})}}};t.exports=o},function(t,e){"use strict";var i={};t.exports={register:function(t,e){i[t]=e},get:function(t){return i[t]}}},function(t,e,i){function n(){this.group=new a,this.uid=s.getUID("viewChart")}function r(t,e){if(t&&(t.trigger(e),"group"===t.type))for(var i=0;i<t.childCount();i++)r(t.childAt(i),e)}function o(t,e,i){var n=u.queryDataIndex(t,e);null!=n?h.each(u.normalizeToArray(n),function(e){r(t.getItemGraphicEl(e),i)}):t.eachItemGraphicEl(function(t){r(t,i)})}var a=i(36),s=i(49),l=i(15),u=i(5),h=i(1);n.prototype={type:"chart",init:function(t,e){},render:function(t,e,i,n){},highlight:function(t,e,i,n){o(t.getData(),n,"emphasis")},downplay:function(t,e,i,n){o(t.getData(),n,"normal")},remove:function(t,e){this.group.removeAll()},dispose:function(){}};var c=n.prototype;c.updateView=c.updateLayout=c.updateVisual=function(t,e,i,n){this.render(t,e,i,n)},l.enableClassExtend(n,["dispose"]),l.enableClassManagement(n,{registerWhenExtend:!0}),t.exports=n},function(t,e,i){"use strict";var n=i(21),r=i(6),o=i(84),a=i(11),s=i(35).devicePixelRatio,l={M:1,L:2,C:3,Q:4,A:5,Z:6,R:7},u=[],h=[],c=[],d=[],f=Math.min,p=Math.max,g=Math.cos,m=Math.sin,v=Math.sqrt,y=Math.abs,x="undefined"!=typeof Float32Array,_=function(){this.data=[],this._len=0,this._ctx=null,this._xi=0,this._yi=0,this._x0=0,this._y0=0,this._ux=0,this._uy=0};_.prototype={constructor:_,_lineDash:null,_dashOffset:0,_dashIdx:0,_dashSum:0,setScale:function(t,e){this._ux=y(1/s/t)||0,this._uy=y(1/s/e)||0},getContext:function(){return this._ctx},beginPath:function(t){return this._ctx=t,t&&t.beginPath(),t&&(this.dpr=t.dpr),this._len=0,this._lineDash&&(this._lineDash=null,this._dashOffset=0),this},moveTo:function(t,e){return this.addData(l.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=y(t-this._xi)>this._ux||y(e-this._yi)>this._uy||this._len<5;return this.addData(l.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,r,o){return this.addData(l.C,t,e,i,n,r,o),this._ctx&&(this._needsDash()?this._dashedBezierTo(t,e,i,n,r,o):this._ctx.bezierCurveTo(t,e,i,n,r,o)),this._xi=r,this._yi=o,this},quadraticCurveTo:function(t,e,i,n){return this.addData(l.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,r,o){return this.addData(l.A,t,e,i,i,n,r-n,0,o?0:1),this._ctx&&this._ctx.arc(t,e,i,n,r,o),this._xi=g(r)*i+t,this._yi=m(r)*i+t,this},arcTo:function(t,e,i,n,r){return this._ctx&&this._ctx.arcTo(t,e,i,n,r),this},rect:function(t,e,i,n){return this._ctx&&this._ctx.rect(t,e,i,n),this.addData(l.R,t,e,i,n),this},closePath:function(){this.addData(l.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,this._dashIdx=0;for(var e=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||!x||(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,r=0;r<e;r++)i+=t[r].len();x&&this.data instanceof Float32Array&&(this.data=new Float32Array(n+i));for(var r=0;r<e;r++)for(var o=t[r].data,a=0;a<o.length;a++)this.data[n++]=o[a];this._len=n},addData:function(t){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,r=this._dashSum,o=this._dashOffset,a=this._lineDash,s=this._ctx,l=this._xi,u=this._yi,h=t-l,c=e-u,d=v(h*h+c*c),g=l,m=u,y=a.length;for(h/=d,c/=d,o<0&&(o=r+o),o%=r,g-=o*h,m-=o*c;h>0&&g<=t||h<0&&g>=t||0==h&&(c>0&&m<=e||c<0&&m>=e);)n=this._dashIdx,i=a[n],g+=h*i,m+=c*i,this._dashIdx=(n+1)%y,h>0&&g<l||h<0&&g>l||c>0&&m<u||c<0&&m>u||s[n%2?"moveTo":"lineTo"](h>=0?f(g,t):p(g,t),c>=0?f(m,e):p(m,e));h=g-t,c=m-e,this._dashOffset=-v(h*h+c*c)},_dashedBezierTo:function(t,e,i,r,o,a){var s,l,u,h,c,d=this._dashSum,f=this._dashOffset,p=this._lineDash,g=this._ctx,m=this._xi,y=this._yi,x=n.cubicAt,_=0,b=this._dashIdx,w=p.length,M=0;for(f<0&&(f=d+f),f%=d,s=0;s<1;s+=.1)l=x(m,t,i,o,s+.1)-x(m,t,i,o,s),u=x(y,e,r,a,s+.1)-x(y,e,r,a,s),_+=v(l*l+u*u);for(;b<w&&(M+=p[b],!(M>f));b++);for(s=(M-f)/_;s<=1;)h=x(m,t,i,o,s),c=x(y,e,r,a,s),b%2?g.moveTo(h,c):g.lineTo(h,c),s+=p[b]/_,b=(b+1)%w;b%2!==0&&g.lineTo(o,a),l=o-h,u=a-c,this._dashOffset=-v(l*l+u*u)},_dashedQuadraticTo:function(t,e,i,n){var r=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,r,o)},toStatic:function(){var t=this.data;t instanceof Array&&(t.length=this._len,x&&(this.data=new Float32Array(t)))},getBoundingRect:function(){u[0]=u[1]=c[0]=c[1]=Number.MAX_VALUE,h[0]=h[1]=d[0]=d[1]=-Number.MAX_VALUE;for(var t=this.data,e=0,i=0,n=0,s=0,f=0;f<t.length;){var p=t[f++];switch(1==f&&(e=t[f],i=t[f+1],n=e,s=i),p){case l.M:n=t[f++],s=t[f++],e=n,i=s,c[0]=n,c[1]=s,d[0]=n,d[1]=s;break;case l.L:o.fromLine(e,i,t[f],t[f+1],c,d),e=t[f++],i=t[f++];break;case l.C:o.fromCubic(e,i,t[f++],t[f++],t[f++],t[f++],t[f],t[f+1],c,d),e=t[f++],i=t[f++];break;case l.Q:o.fromQuadratic(e,i,t[f++],t[f++],t[f],t[f+1],c,d),e=t[f++],i=t[f++];break;case l.A:var v=t[f++],y=t[f++],x=t[f++],_=t[f++],b=t[f++],w=t[f++]+b,M=(t[f++],1-t[f++]);1==f&&(n=g(b)*x+v,s=m(b)*_+y),o.fromArc(v,y,x,_,b,w,M,c,d),e=g(w)*x+v,i=m(w)*_+y;break;case l.R:n=e=t[f++],s=i=t[f++];var S=t[f++],T=t[f++];o.fromLine(n,s,n+S,s+T,c,d);break;case l.Z:e=n,i=s}r.min(u,u,c),r.max(h,h,d)}return 0===f&&(u[0]=u[1]=h[0]=h[1]=0),new a(u[0],u[1],h[0]-u[0],h[1]-u[1])},rebuildPath:function(t){for(var e,i,n,r,o,a,s=this.data,u=this._ux,h=this._uy,c=this._len,d=0;d<c;){var f=s[d++];switch(1==d&&(n=s[d],r=s[d+1],e=n,i=r),f){case l.M:e=n=s[d++],i=r=s[d++],t.moveTo(n,r);break;case l.L:o=s[d++],a=s[d++],(y(o-n)>u||y(a-r)>h||d===c-1)&&(t.lineTo(o,a),n=o,r=a);break;case l.C:t.bezierCurveTo(s[d++],s[d++],s[d++],s[d++],s[d++],s[d++]),n=s[d-2],r=s[d-1];break;case l.Q:t.quadraticCurveTo(s[d++],s[d++],s[d++],s[d++]),n=s[d-2],r=s[d-1];break;case l.A:var p=s[d++],v=s[d++],x=s[d++],_=s[d++],b=s[d++],w=s[d++],M=s[d++],S=s[d++],T=x>_?x:_,A=x>_?1:x/_,I=x>_?_/x:1,C=Math.abs(x-_)>.001,P=b+w;C?(t.translate(p,v),t.rotate(M),t.scale(A,I),t.arc(0,0,T,b,P,1-S),t.scale(1/A,1/I),t.rotate(-M),t.translate(-p,-v)):t.arc(p,v,T,b,P,1-S),1==d&&(e=g(b)*x+p,i=m(b)*_+v),n=g(P)*x+p,r=m(P)*_+v;break;case l.R:e=n=s[d],i=r=s[d+1],t.rect(s[d++],s[d++],s[d++],s[d++]);break;case l.Z:t.closePath(),n=e,r=i}}}},_.CMD=l,t.exports=_},function(t,e,i){var n=i(1);t.exports=function(t){for(var e=0;e<t.length;e++)t[e][1]||(t[e][1]=t[e][0]);return function(e,i){for(var r={},o=0;o<t.length;o++){var a=t[o][1];if(!(e&&n.indexOf(e,a)>=0||i&&n.indexOf(i,a)<0)){var s=this.getShallow(a);null!=s&&(r[t[o][0]]=s)}}return r}}},function(t,e,i){function n(t,e,i){var n=e.getComponent("tooltip"),o=e.getComponent("axisPointer"),s=o.get("link",!0)||[],u=[];c(i.getCoordinateSystems(),function(i){function h(n,h,c){var d=c.model.getModel("axisPointer",o),f=d.get("show");if(f&&("auto"!==f||n||l(d))){null==h&&(h=d.get("triggerTooltip")),d=n?r(c,v,o,e,n,h):d;var m=d.get("snap"),y=p(c.model),x=h||m||"category"===c.type,_=t.axesInfo[y]={key:y,axis:c,coordSys:i,axisPointerModel:d,triggerTooltip:h,involveSeries:x,snap:m,useHandle:l(d),seriesModels:[]};g[y]=_,t.seriesInvolved|=x;var b=a(s,c);if(null!=b){var w=u[b]||(u[b]={axesInfo:{}});w.axesInfo[y]=_,w.mapper=s[b].mapper,_.linkGroup=w}}}if(i.axisPointerEnabled){var f=p(i.model),g=t.coordSysAxesInfo[f]={};t.coordSysMap[f]=i;var m=i.model,v=m.getModel("tooltip",n);if(c(i.getAxes(),d(h,!1,null)),i.getTooltipAxes&&n&&v.get("show")){var y="axis"===v.get("trigger"),x="cross"===v.get("axisPointer.type"),_=i.getTooltipAxes(v.get("axisPointer.axis"));(y||x)&&c(_.baseAxes,d(h,!x||"cross",y)),x&&c(_.otherAxes,d(h,"cross",!1))}}})}function r(t,e,i,n,r,o){var a=e.getModel("axisPointer"),s={};c(["type","snap","lineStyle","shadowStyle","label","animation","animationDurationUpdate","animationEasingUpdate","z"],function(t){s[t]=u.clone(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&&(l.show=!0,!o)){var d=s.lineStyle=a.get("crossStyle");d&&u.defaults(l.textStyle||(l.textStyle={}),d.textStyle)}return t.model.getModel("axisPointer",new h(s,i,n))}function o(t,e){e.eachSeries(function(e){var i=e.coordinateSystem,n=e.get("tooltip.trigger",!0);i&&"none"!==n&&n!==!1&&"item"!==n&&e.get("axisPointer.show",!0)!==!1&&c(t.coordSysAxesInfo[p(i.model)],function(t){var n=t.axis;i.getAxis(n.dim)===n&&(t.seriesModels.push(e),null==t.seriesDataCount&&(t.seriesDataCount=0),t.seriesDataCount+=e.getData().count())})},this)}function a(t,e){for(var i=e.model,n=e.dim,r=0;r<t.length;r++){var o=t[r]||{};if(s(o[n+"AxisId"],i.id)||s(o[n+"AxisIndex"],i.componentIndex)||s(o[n+"AxisName"],i.name))return r}}function s(t,e){return"all"===t||u.isArray(t)&&u.indexOf(t,e)>=0||t===e}function l(t){return!!t.get("handle.show")}var u=i(1),h=i(10),c=u.each,d=u.curry,f={};f.collect=function(t,e){var i={axesInfo:{},seriesInvolved:!1,coordSysAxesInfo:{},coordSysMap:{}};return n(i,t,e),i.seriesInvolved&&o(i,t),i},f.fixValue=function(t){var e=f.getAxisInfo(t);if(e){var i=e.axisPointerModel,n=e.axis.scale,r=i.option,o=i.get("status"),a=i.get("value");null!=a&&(a=n.parse(a));var s=l(i);null==o&&(r.status=s?"show":"hide");var u=n.getExtent().slice();u[0]>u[1]&&u.reverse(),(null==a||a>u[1])&&(a=u[1]),a<u[0]&&(a=u[0]),r.value=a,s&&(r.status=e.axis.scale.isBlank()?"hide":"show")}},f.getAxisInfo=function(t){var e=t.ecModel.getComponent("axisPointer").coordSysAxesInfo;return e&&e.axesInfo[p(t)]},f.getAxisPointerModel=function(t){var e=f.getAxisInfo(t);return e&&e.axisPointerModel};var p=f.makeKey=function(t){return t.type+"||"+t.id};t.exports=f},function(t,e,i){function n(t,e){var i=t[1]-t[0],n=e,r=i/n/2;t[0]+=r,t[1]-=r}var r=i(4),o=r.linearMap,a=i(1),s=[0,1],l=function(t,e,i){this.dim=t,this.scale=e,this._extent=i||[0,0],this.inverse=!1,this.onBand=!1};l.prototype={constructor:l,contain:function(t){var e=this._extent,i=Math.min(e[0],e[1]),n=Math.max(e[0],e[1]);return t>=i&&t<=n},containData:function(t){return this.contain(this.dataToCoord(t))},getExtent:function(){var t=this._extent.slice();return t},getPixelPrecision:function(t){return r.getPixelPrecision(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,r=this.scale;return t=r.normalize(t),this.onBand&&"ordinal"===r.type&&(i=i.slice(),n(i,r.count())),o(t,s,i,e)},coordToData:function(t,e){var i=this._extent,r=this.scale;this.onBand&&"ordinal"===r.type&&(i=i.slice(),n(i,r.count()));var a=o(t,i,s,e);return this.scale.scale(a)},pointToData:function(t,e){},getTicksCoords:function(t){if(this.onBand&&!t){for(var e=this.getBands(),i=[],n=0;n<e.length;n++)i.push(e[n][0]);return e[n-1]&&i.push(e[n-1][1]),i}return a.map(this.scale.getTicks(),this.dataToCoord,this)},getLabelsCoords:function(){return a.map(this.scale.getTicks(),this.dataToCoord,this)},getBands:function(){for(var t=this.getExtent(),e=[],i=this.scale.count(),n=t[0],r=t[1],o=r-n,a=0;a<i;a++)e.push([o*a/i+n,o*(a+1)/i+n]);return e},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}},t.exports=l},function(t,e,i){function n(){this._extent=[1/0,-(1/0)],this._interval=0,this.init&&this.init.apply(this,arguments)}var r=i(15),o=n.prototype;o.parse=function(t){return t},o.contain=function(t){var e=this._extent;return t>=e[0]&&t<=e[1]},o.normalize=function(t){var e=this._extent;return e[1]===e[0]?.5:(t-e[0])/(e[1]-e[0])},o.scale=function(t){var e=this._extent;return t*(e[1]-e[0])+e[0]},o.unionExtent=function(t){var e=this._extent;t[0]<e[0]&&(e[0]=t[0]),t[1]>e[1]&&(e[1]=t[1])},o.unionExtentFromData=function(t,e){this.unionExtent(t.getDataExtent(e,!0))},o.getExtent=function(){return this._extent.slice()},o.setExtent=function(t,e){var i=this._extent;isNaN(t)||(i[0]=t),isNaN(e)||(i[1]=e)},o.getTicksLabels=function(){for(var t=[],e=this.getTicks(),i=0;i<e.length;i++)t.push(this.getLabel(e[i]));return t},o.isBlank=function(){return this._isBlank},o.setBlank=function(t){this._isBlank=t},r.enableClassExtend(n),r.enableClassManagement(n,{registerWhenExtend:!0}),t.exports=n},function(t,e){var i=1;"undefined"!=typeof window&&(i=Math.max(window.devicePixelRatio||1,1));var n={debugMode:0,devicePixelRatio:i};t.exports=n},function(t,e,i){var n=i(1),r=i(65),o=i(11),a=function(t){t=t||{},r.call(this,t);for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e]);this._children=[],this.__storage=null,this.__dirty=!0};a.prototype={constructor:a,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);n>=0&&(i.splice(n,0,t),this._doAdd(t))}return this},_doAdd:function(t){t.parent&&t.parent.remove(t),t.parent=this;var e=this.__storage,i=this.__zr;e&&e!==t.__storage&&(e.addToMap(t),t instanceof a&&t.addChildrenToStorage(e)),i&&i.refresh()},remove:function(t){var e=this.__zr,i=this.__storage,r=this._children,o=n.indexOf(r,t);return o<0?this:(r.splice(o,1),t.parent=null,i&&(i.delFromMap(t.id),t instanceof a&&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.delFromMap(t.id),t instanceof a&&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 r=i[n];t.call(e,r,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.addToMap(i),i instanceof a&&i.addChildrenToStorage(t)}},delChildrenFromStorage:function(t){for(var e=0;e<this._children.length;e++){var i=this._children[e];t.delFromMap(i.id),i instanceof a&&i.delChildrenFromStorage(t)}},dirty:function(){return this.__dirty=!0,this.__zr&&this.__zr.refresh(),this},getBoundingRect:function(t){for(var e=null,i=new o(0,0,0,0),n=t||this._children,r=[],a=0;a<n.length;a++){var s=n[a];if(!s.ignore&&!s.invisible){var l=s.getBoundingRect(),u=s.getLocalTransform(r);u?(i.copy(l),i.applyTransform(u),e=e||i.clone(),e.union(i)):(e=e||l.clone(),e.union(l))}}return e||i}},n.inherits(a,r),t.exports=a},function(t,e,i){function n(t){var e={componentType:t.mainType};return e[t.mainType+"Index"]=t.componentIndex,e}function r(t,e,i,n){var r,o,a=c(i-t.rotation),s=n[0]>n[1],l="start"===e&&!s||"start"!==e&&s;return d(a-m/2)?(o=l?"bottom":"top",r="center"):d(a-1.5*m)?(o=l?"top":"bottom",r="center"):(o="middle",r=a<1.5*m&&a>m/2?l?"left":"right":l?"right":"left"),{rotation:a,textAlign:r,textVerticalAlign:o}}function o(t){var e=t.get("tooltip");return t.get("silent")||!(t.get("triggerEvent")||e&&e.show)}var a=i(1),s=i(7),l=i(3),u=i(10),h=i(4),c=h.remRadian,d=h.isRadianAroundZero,f=i(6),p=f.applyTransform,g=a.retrieve,m=Math.PI,v=function(t,e){this.opt=e,this.axisModel=t,a.defaults(e,{labelOffset:0,nameDirection:1,tickDirection:1,labelDirection:1,silent:!0}),this.group=new l.Group;var i=new l.Group({position:e.position.slice(),rotation:e.rotation});i.updateTransform(),this._transform=i.transform,this._dumbGroup=i};v.prototype={constructor:v,hasBuilder:function(t){return!!y[t]},add:function(t){y[t].call(this)},getGroup:function(){return this.group}};var y={axisLine:function(){var t=this.opt,e=this.axisModel;if(e.get("axisLine.show")){var i=this.axisModel.axis.getExtent(),n=this._transform,r=[i[0],0],o=[i[1],0];n&&(p(r,r,n),p(o,o,n)),this.group.add(new l.Line(l.subPixelOptimizeLine({anid:"line",shape:{x1:r[0],y1:r[1],x2:o[0],y2:o[1]},style:a.extend({lineCap:"round"},e.getModel("axisLine.lineStyle").getLineStyle()),strokeContainThreshold:t.strokeContainThreshold||5,silent:!0,z2:1})))}},axisTick:function(){var t=this.axisModel,e=t.axis;if(t.get("axisTick.show")&&!e.scale.isBlank())for(var i=t.getModel("axisTick"),n=this.opt,r=i.getModel("lineStyle"),o=i.get("length"),s=b(i,n.labelInterval),u=e.getTicksCoords(i.get("alignWithLabel")),h=e.scale.getTicks(),c=[],d=[],f=this._transform,g=0;g<u.length;g++)if(!_(e,g,s)){var m=u[g];c[0]=m,c[1]=0,d[0]=m,d[1]=n.tickDirection*o,f&&(p(c,c,f),p(d,d,f)),this.group.add(new l.Line(l.subPixelOptimizeLine({anid:"tick_"+h[g],shape:{x1:c[0],y1:c[1],x2:d[0],y2:d[1]},style:a.defaults(r.getLineStyle(),{stroke:t.get("axisLine.lineStyle.color")}),z2:2,silent:!0})))}},axisLabel:function(){function t(t,e){var i=t&&t.getBoundingRect().clone(),n=e&&e.getBoundingRect().clone();if(i&&n)return i.applyTransform(t.getLocalTransform()),n.applyTransform(e.getLocalTransform()),i.intersect(n)}var e=this.opt,i=this.axisModel,r=i.axis,s=g(e.axisLabelShow,i.get("axisLabel.show"));if(s&&!r.scale.isBlank()){var h=i.getModel("axisLabel"),c=h.getModel("textStyle"),d=h.get("margin"),f=r.scale.getTicks(),p=i.getFormattedLabels(),v=(g(e.labelRotate,h.get("rotate"))||0)*m/180,y=x(e.rotation,v,e.labelDirection),b=i.get("data"),w=[],M=o(i),S=i.get("triggerEvent");if(a.each(f,function(t,o){if(!_(r,o,e.labelInterval)){var a=c;b&&b[t]&&b[t].textStyle&&(a=new u(b[t].textStyle,c,i.ecModel));var s=a.getTextColor()||i.get("axisLine.lineStyle.color"),h=r.dataToCoord(t),f=[h,e.labelOffset+e.labelDirection*d],g=r.scale.getLabel(t),m=new l.Text({anid:"label_"+t,style:{text:p[o],textAlign:a.get("align",!0)||y.textAlign,textVerticalAlign:a.get("baseline",!0)||y.textVerticalAlign,textFont:a.getFont(),fill:"function"==typeof s?s("category"===r.type?g:"value"===r.type?t+"":t,o):s},position:f,rotation:y.rotation,silent:M,z2:10});S&&(m.eventData=n(i),m.eventData.targetType="axisLabel",m.eventData.value=g),this._dumbGroup.add(m),m.updateTransform(),w.push(m),this.group.add(m),m.decomposeTransform()}},this),null!=i.getMin()){var T=w[0],A=w[1];t(T,A)&&(T.ignore=!0)}if(null!=i.getMax()){var I=w[w.length-1],C=w[w.length-2];t(C,I)&&(I.ignore=!0)}}},axisName:function(){var t=this.opt,e=this.axisModel,i=g(t.axisName,e.get("name"));if(i){var u,h=e.get("nameLocation"),c=t.nameDirection,d=e.getModel("nameTextStyle"),f=e.get("nameGap")||0,p=this.axisModel.axis.getExtent(),v=p[0]>p[1]?-1:1,y=["start"===h?p[0]-v*f:"end"===h?p[1]+v*f:(p[0]+p[1])/2,"middle"===h?t.labelOffset+c*f:0],_=e.get("nameRotate");null!=_&&(_=_*m/180);var b;"middle"===h?u=x(t.rotation,null!=_?_:t.rotation,c):(u=r(t,h,_||0,p),b=t.axisNameAvailableWidth,null!=b&&(b=Math.abs(b/Math.sin(u.rotation)),!isFinite(b)&&(b=null)));var w=d.getFont(),M=e.get("nameTruncate",!0)||{},S=M.ellipsis,T=g(M.maxWidth,b),A=null!=S&&null!=T?s.truncateText(i,T,w,S,{minChar:2,placeholder:M.placeholder}):i,I=e.get("tooltip",!0),C=e.mainType,P={componentType:C,name:i,$vars:["name"]};P[C+"Index"]=e.componentIndex;var k=new l.Text({anid:"name",__fullText:i,__truncatedText:A,style:{text:A,textFont:w,fill:d.getTextColor()||e.get("axisLine.lineStyle.color"),textAlign:u.textAlign,textVerticalAlign:u.textVerticalAlign},position:y,rotation:u.rotation,silent:o(e),z2:1,tooltip:I&&I.show?a.extend({content:i,formatter:function(){return i},formatterParams:P},I):null});e.get("triggerEvent")&&(k.eventData=n(e),k.eventData.targetType="axisName",k.eventData.name=i),this._dumbGroup.add(k),k.updateTransform(),this.group.add(k),k.decomposeTransform()}}},x=v.innerTextLayout=function(t,e,i){var n,r,o=c(e-t);return d(o)?(r=i>0?"top":"bottom",n="center"):d(o-m)?(r=i>0?"bottom":"top",n="center"):(r="middle",n=o>0&&o<m?i>0?"right":"left":i>0?"left":"right"),{rotation:o,textAlign:n,textVerticalAlign:r}},_=v.ifIgnoreOnTick=function(t,e,i){var n,r=t.scale;return"ordinal"===r.type&&("function"==typeof i?(n=r.getTicks()[e],!i(n,r.getLabel(n))):e%(i+1))},b=v.getInterval=function(t,e){var i=t.get("interval");return null!=i&&"auto"!=i||(i=e),i};t.exports=v},function(t,e,i){i(93),i(45)},function(t,e){var i={},n="\0__throttleOriginMethod",r="\0__throttleRate",o="\0__throttleType";i.throttle=function(t,e,i){function n(){u=(new Date).getTime(),h=null,t.apply(a,s||[])}var r,o,a,s,l=0,u=0,h=null;e=e||0;var c=function(){r=(new Date).getTime(),a=this,s=arguments,o=r-(i?l:u)-e,clearTimeout(h),i?h=setTimeout(n,e):o>=0?n():h=setTimeout(n,-o),l=r};return c.clear=function(){h&&(clearTimeout(h),h=null)},c},i.createOrUpdate=function(t,e,a,s){var l=t[e];if(l){var u=l[n]||l,h=l[o],c=l[r];if(c!==a||h!==s){if(null==a||!s)return t[e]=u;l=t[e]=i.throttle(u,a,"debounce"===s),l[n]=u,l[o]=s,l[r]=a}return l}},i.clear=function(t,e){var i=t[e];i&&i[n]&&(t[e]=i[n])},t.exports=i},function(t,e,i){function n(t){t=t||{},a.call(this,t);for(var e in t)t.hasOwnProperty(e)&&"style"!==e&&(this[e]=t[e]);this.style=new o(t.style),this._rect=null,this.__clipPaths=[]}var r=i(1),o=i(72),a=i(65),s=i(86);n.prototype={constructor:n,type:"displayable",__dirty:!0,invisible:!1,z:0,z2:0,zlevel:0,draggable:!1,dragging:!1,silent:!1,culling:!1,cursor:"pointer",rectHover:!1,progressive:-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),n=this.getBoundingRect();return n.contain(i[0],i[1])},dirty:function(){this.__dirty=!0,this._rect=null,this.__zr&&this.__zr.refresh()},animateStyle:function(t){return this.animate("style",t)},attrKV:function(t,e){"style"!==t?a.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 o(t),this.dirty(!1),this}},r.inherits(n,a),r.mixin(n,s),t.exports=n},function(t,e){var i=function(t){this.colorStops=t||[]};i.prototype={constructor:i,addColorStop:function(t,e){this.colorStops.push({offset:t,color:e})}},t.exports=i},function(t,e,i){function n(t){return r.isObject(t)&&null!=t.value?t.value:t}var r=i(1),o=i(17);t.exports={getFormattedLabels:function(){
+return o.getFormattedLabels(this.axis,this.get("axisLabel.formatter"))},getCategories:function(){return"category"===this.get("type")&&r.map(this.get("data"),n)},getMin:function(t){var e=this.option,i=t||null==e.rangeStart?e.min:e.rangeStart;return this.axis&&null!=i&&"dataMin"!==i&&!r.eqNaN(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&&!r.eqNaN(i)&&(i=this.axis.scale.parse(i)),i},getNeedCrossZero:function(){var t=this.option;return null==t.rangeStart&&null==t.rangeEnd&&!t.scale},getCoordSysModel:r.noop,setRange:function(t,e){this.option.rangeStart=t,this.option.rangeEnd=e},resetRange:function(){this.option.rangeStart=this.option.rangeEnd=null}}},function(t,e,i){var n=i(4),r=i(7),o=i(34),a=Math.floor,s=Math.ceil,l=n.getPrecisionSafe,u=n.round,h=o.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]),h.prototype.setExtent.call(this,e[0],e[1])},getInterval:function(){return this._interval||this.niceTicks(),this._interval},setInterval:function(t){this._interval=t,this._niceExtent=this._extent.slice()},getTicks:function(){this._interval||this.niceTicks();var t=this._interval,e=this._extent,i=[],n=1e4;if(t){var r=this._niceExtent,o=this._intervalPrecision=l(t);o+=2,e[0]<r[0]&&i.push(e[0]);for(var a=r[0];a<=r[1];)if(i.push(a),a=u(a+t,o),i.length>n)return[];e[1]>(i.length?i[i.length-1]:r[1])&&i.push(e[1])}return i},getTicksLabels:function(){for(var t=[],e=this.getTicks(),i=0;i<e.length;i++)t.push(this.getLabel(e[i]));return t},getLabel:function(t,e){var i=e&&e.precision;return null!=t&&null!=i&&("auto"===i&&(i=this._intervalPrecision+2),t=u(t,i,e&&e.pad)),r.addCommas(t)},niceTicks:function(t){t=t||5;var e=this._extent,i=e[1]-e[0];if(isFinite(i)){i<0&&(i=-i,e.reverse());var r=u(n.nice(i/t,!0),Math.max(l(e[0]),l(e[1]))+2),o=l(r)+2,h=[u(s(e[0]/r)*r,o),u(a(e[1]/r)*r,o)];this._interval=r,this._niceExtent=h}},niceExtent:function(t,e,i){var n=this._extent;if(n[0]===n[1])if(0!==n[0]){var r=n[0];i?n[0]-=r/2:(n[1]+=r/2,n[0]-=r/2)}else n[1]=1;var o=n[1]-n[0];isFinite(o)||(n[0]=0,n[1]=1),this.niceTicks(t);var l=this._interval;e||(n[0]=u(a(n[0]/l)*l)),i||(n[1]=u(s(n[1]/l)*l))}});h.create=function(){return new h},t.exports=h},function(t,e,i){function n(t){this.group=new o.Group,this._symbolCtor=t||a}function r(t,e,i){var n=t.getItemLayout(e);return n&&!isNaN(n[0])&&!isNaN(n[1])&&!(i&&i(e))&&"none"!==t.getItemVisual(e,"symbol")}var o=i(3),a=i(54),s=n.prototype;s.updateData=function(t,e){var i=this.group,n=t.hostModel,a=this._data,s=this._symbolCtor,l={itemStyle:n.getModel("itemStyle.normal").getItemStyle(["color"]),hoverItemStyle:n.getModel("itemStyle.emphasis").getItemStyle(),symbolRotate:n.get("symbolRotate"),symbolOffset:n.get("symbolOffset"),hoverAnimation:n.get("hoverAnimation"),labelModel:n.getModel("label.normal"),hoverLabelModel:n.getModel("label.emphasis")};t.diff(a).add(function(n){var o=t.getItemLayout(n);if(r(t,n,e)){var a=new s(t,n,l);a.attr("position",o),t.setItemGraphicEl(n,a),i.add(a)}}).update(function(u,h){var c=a.getItemGraphicEl(h),d=t.getItemLayout(u);return r(t,u,e)?(c?(c.updateData(t,u,l),o.updateProps(c,{position:d},n)):(c=new s(t,u),c.attr("position",d)),i.add(c),void t.setItemGraphicEl(u,c)):void i.remove(c)}).remove(function(t){var e=a.getItemGraphicEl(t);e&&e.fadeOut(function(){i.remove(e)})}).execute(),this._data=t},s.updateLayout=function(){var t=this._data;t&&t.eachItemGraphicEl(function(e,i){var n=t.getItemLayout(i);e.attr("position",n)})},s.remove=function(t){var e=this.group,i=this._data;i&&(t?i.eachItemGraphicEl(function(t){t.fadeOut(function(){e.remove(t)})}):e.removeAll())},t.exports=n},function(t,e,i){var n=i(2),r=i(32),o=i(124),a=i(1);i(121),i(122),n.registerPreprocessor(function(t){if(t){(!t.axisPointer||0===t.axisPointer.length)&&(t.axisPointer={});var e=t.axisPointer.link;e&&!a.isArray(e)&&(t.axisPointer.link=[e])}}),n.registerProcessor(n.PRIORITY.PROCESSOR.STATISTIC,function(t,e){t.getComponent("axisPointer").coordSysAxesInfo=r.collect(t,e)}),n.registerAction({type:"updateAxisPointer",event:"updateAxisPointer",update:":updateAxisPointer"},function(t,e,i){var n=o(e.getComponent("axisPointer").coordSysAxesInfo,t.currTrigger,t,t.dispatchAction||a.bind(i.dispatchAction,i),e,i,t.tooltipOption,t.highDownKey);return n})},function(t,e,i){function n(t){var e={};return c(["start","end","startValue","endValue","throttle"],function(i){t.hasOwnProperty(i)&&(e[i]=t[i])}),e}function r(t,e){c([["start","startValue"],["end","endValue"]],function(i,n){var r=t._rangePropMode;null!=e[i[0]]?r[n]="percent":null!=e[i[1]]&&(r[n]="value")})}var o=i(1),a=i(9),s=i(2),l=i(5),u=i(77),h=i(196),c=o.each,d=u.eachAxisDim,f=s.extendComponentModel({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},init:function(t,e,i){this._dataIntervalByAxis={},this._dataInfo={},this._axisProxies={},this.textStyleModel,this._autoThrottle=!0,this._rangePropMode=["percent","percent"];var r=n(t);this.mergeDefaultAndTheme(t,i),this.doInit(r)},mergeOption:function(t){var e=n(t);o.merge(this.option,t,!0),this.doInit(e)},doInit:function(t){var e=this.option;a.canvasSupported||(e.realtime=!1),this._setDefaultThrottle(t),r(this,t),c([["start","startValue"],["end","endValue"]],function(t,i){"value"===this._rangePropMode[i]&&(e[t[0]]=null)},this),this.textStyleModel=this.getModel("textStyle"),this._resetTarget(),this._giveAxisProxies()},_giveAxisProxies:function(){var t=this._axisProxies;this.eachTargetAxis(function(e,i,n,r){var o=this.dependentModels[e.axis][i],a=o.__dzAxisProxy||(o.__dzAxisProxy=new h(e.name,i,this,r));t[e.name+"_"+i]=a},this)},_resetTarget:function(){var t=this.option,e=this._judgeAutoMode();d(function(e){var i=e.axisIndex;t[i]=l.normalizeToArray(t[i])},this),"axisIndex"===e?this._autoSetAxisIndex():"orient"===e&&this._autoSetOrient()},_judgeAutoMode:function(){var t=this.option,e=!1;d(function(i){null!=t[i.axisIndex]&&(e=!0)},this);var i=t.orient;return null==i&&e?"orient":e?void 0:(null==i&&(t.orient="horizontal"),"axisIndex")},_autoSetAxisIndex:function(){var t=!0,e=this.get("orient",!0),i=this.option,n=this.dependentModels;if(t){var r="vertical"===e?"y":"x";n[r+"Axis"].length?(i[r+"AxisIndex"]=[0],t=!1):c(n.singleAxis,function(n){t&&n.get("orient",!0)===e&&(i.singleAxisIndex=[n.componentIndex],t=!1)})}t&&d(function(e){if(t){var n=[],r=this.dependentModels[e.axis];if(r.length&&!n.length)for(var o=0,a=r.length;o<a;o++)"category"===r[o].get("type")&&n.push(o);i[e.axisIndex]=n,n.length&&(t=!1)}},this),t&&this.ecModel.eachSeries(function(t){this._isSeriesHasAllAxesTypeOf(t,"value")&&d(function(e){var n=i[e.axisIndex],r=t.get(e.axisIndex),a=t.get(e.axisId),s=t.ecModel.queryComponents({mainType:e.axis,index:r,id:a})[0];r=s.componentIndex,o.indexOf(n,r)<0&&n.push(r)})},this)},_autoSetOrient:function(){var t;this.eachTargetAxis(function(e){!t&&(t=e.name)},this),this.option.orient="y"===t?"vertical":"horizontal"},_isSeriesHasAllAxesTypeOf:function(t,e){var i=!0;return d(function(n){var r=t.get(n.axisIndex),o=this.dependentModels[n.axis][r];o&&o.get("type")===e||(i=!1)},this),i},_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}},getFirstTargetAxisModel:function(){var t;return d(function(e){if(null==t){var i=this.get(e.axisIndex);i.length&&(t=this.dependentModels[e.axis][i[0]])}},this),t},eachTargetAxis:function(t,e){var i=this.ecModel;d(function(n){c(this.get(n.axisIndex),function(r){t.call(e,n,r,this,i)},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(t,e){c(["start","end","startValue","endValue"],function(e){this.option[e]=t[e]},this),!e&&r(this,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(){var t=this._axisProxies;for(var e in t)if(t.hasOwnProperty(e)&&t[e].hostedBy(this))return t[e];for(var e in t)if(t.hasOwnProperty(e)&&!t[e].hostedBy(this))return t[e]},getRangePropMode:function(){return this._rangePropMode.slice()}});t.exports=f},function(t,e,i){var n=i(64);t.exports=n.extend({type:"dataZoom",render:function(t,e,i,n){this.dataZoomModel=t,this.ecModel=e,this.api=i},getTargetCoordInfo:function(){function t(t,e,i,n){for(var r,o=0;o<i.length;o++)if(i[o].model===t){r=i[o];break}r||i.push(r={model:t,axisModels:[],coordIndex:n}),r.axisModels.push(e)}var e=this.dataZoomModel,i=this.ecModel,n={};return e.eachTargetAxis(function(e,r){var o=i.getComponent(e.axis,r);if(o){var a=o.getCoordSysModel();a&&t(a,o,n[a.mainType]||(n[a.mainType]=[]),a.componentIndex)}},this),n}})},function(t,e){"use strict";function i(t){return t}function n(t,e,n,r){this._old=t,this._new=e,this._oldKeyGetter=n||i,this._newKeyGetter=r||i}function r(t,e,i,n){for(var r=0;r<t.length;r++){var o=n(t[r],r),a=e[o];null==a?(i.push(o),e[o]=r):(a.length||(e[o]=a=[a]),a.push(r))}}n.prototype={constructor:n,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,e=this._old,i=this._new,n=this._oldKeyGetter,o=this._newKeyGetter,a={},s={},l=[],u=[];for(r(e,a,l,n),r(i,s,u,o),t=0;t<e.length;t++){var h=l[t],c=s[h];if(null!=c){var d=c.length;d?(1===d&&(s[h]=null),c=c.unshift()):s[h]=null,this._update&&this._update(c,t)}else this._remove&&this._remove(t)}for(var t=0;t<u.length;t++){var h=u[t];if(s.hasOwnProperty(h)){var c=s[h];if(null==c)continue;if(c.length)for(var f=0,d=c.length;f<d;f++)this._add&&this._add(c[f]);else this._add&&this._add(c)}}}},t.exports=n},function(t,e,i){var n=i(1),r=i(15),o=r.parseClassType,a=0,s={},l="_";s.getUID=function(t){return[t||"",a++,Math.random()].join(l)},s.enableSubTypeDefaulter=function(t){var e={};return t.registerSubTypeDefaulter=function(t,i){t=o(t),e[t.main]=i},t.determineSubType=function(i,n){var r=n.type;if(!r){var a=o(i).main;t.hasSubTypes(i)&&e[a]&&(r=e[a](n))}return r},t},s.enableTopologicalTravel=function(t,e){function i(t){var i={},a=[];return n.each(t,function(s){var l=r(i,s),u=l.originalDeps=e(s),h=o(u,t);l.entryCount=h.length,0===l.entryCount&&a.push(s),n.each(h,function(t){n.indexOf(l.predecessor,t)<0&&l.predecessor.push(t);var e=r(i,t);n.indexOf(e.successor,t)<0&&e.successor.push(s)})}),{graph:i,noEntryList:a}}function r(t,e){return t[e]||(t[e]={predecessor:[],successor:[]}),t[e]}function o(t,e){var i=[];return n.each(t,function(t){n.indexOf(e,t)>=0&&i.push(t)}),i}t.topologicalTravel=function(t,e,r,o){function a(t){u[t].entryCount--,0===u[t].entryCount&&h.push(t)}function s(t){c[t]=!0,a(t)}if(t.length){var l=i(e),u=l.graph,h=l.noEntryList,c={};for(n.each(t,function(t){c[t]=!0});h.length;){var d=h.pop(),f=u[d],p=!!c[d];p&&(r.call(o,d,f.originalDeps.slice()),delete c[d]),n.each(f.successor,p?s:a)}n.each(c,function(){throw new Error("Circle dependency may exists")})}}},t.exports=s},function(t,e){t.exports=function(t,e,i,n,r){n.eachRawSeriesByType(t,function(t){var r=t.getData(),o=t.get("symbol")||e,a=t.get("symbolSize");r.setVisual({legendSymbol:i||o,symbol:o,symbolSize:a}),n.isSeriesFiltered(t)||("function"==typeof a&&r.each(function(e){var i=t.getRawValue(e),n=t.getDataParams(e);r.setItemVisual(e,"symbolSize",a(i,n))}),r.each(function(t){var e=r.getItemModel(t),i=e.getShallow("symbol",!0),n=e.getShallow("symbolSize",!0);null!=i&&r.setItemVisual(t,"symbol",i),null!=n&&r.setItemVisual(t,"symbolSize",n)}))})}},function(t,e){function i(t){for(var e=0;t>=h;)e|=1&t,t>>=1;return t+e}function n(t,e,i,n){var o=e+1;if(o===i)return 1;if(n(t[o++],t[e])<0){for(;o<i&&n(t[o],t[o-1])<0;)o++;r(t,e,o)}else for(;o<i&&n(t[o],t[o-1])>=0;)o++;return o-e}function r(t,e,i){for(i--;e<i;){var n=t[e];t[e++]=t[i],t[i--]=n}}function o(t,e,i,n,r){for(n===e&&n++;n<i;n++){for(var o,a=t[n],s=e,l=n;s<l;)o=s+l>>>1,r(a,t[o])<0?l=o:s=o+1;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(;u>0;)t[s+u]=t[s+u-1],u--}t[s]=a}}function a(t,e,i,n,r,o){var a=0,s=0,l=1;if(o(t,e[i+r])>0){for(s=n-r;l<s&&o(t,e[i+r+l])>0;)a=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s),a+=r,l+=r}else{for(s=r+1;l<s&&o(t,e[i+r-l])<=0;)a=l,l=(l<<1)+1,l<=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[i+h])>0?a=h+1:l=h}return l}function s(t,e,i,n,r,o){var a=0,s=0,l=1;if(o(t,e[i+r])<0){for(s=r+1;l<s&&o(t,e[i+r-l])<0;)a=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s);var u=a;a=r-l,l=r-u}else{for(s=n-r;l<s&&o(t,e[i+r+l])>=0;)a=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s),a+=r,l+=r}for(a++;a<l;){var h=a+(l-a>>>1);o(t,e[i+h])<0?l=h:a=h+1}return l}function l(t,e){function i(t,e){h[y]=t,f[y]=e,y+=1}function n(){for(;y>1;){var t=y-2;if(t>=1&&f[t-1]<=f[t]+f[t+1]||t>=2&&f[t-2]<=f[t]+f[t-1])f[t-1]<f[t+1]&&t--;else if(f[t]>f[t+1])break;o(t)}}function r(){for(;y>1;){var t=y-2;t>0&&f[t-1]<f[t+1]&&t--,o(t)}}function o(i){var n=h[i],r=f[i],o=h[i+1],c=f[i+1];f[i]=r+c,i===y-3&&(h[i+1]=h[i+2],f[i+1]=f[i+2]),y--;var d=s(t[o],t,n,r,0,e);n+=d,r-=d,0!==r&&(c=a(t[n+r-1],t,o,c,c-1,e),0!==c&&(r<=c?l(n,r,o,c):u(n,r,o,c)))}function l(i,n,r,o){var l=0;for(l=0;l<n;l++)x[l]=t[i+l];var u=0,h=r,d=i;if(t[d++]=t[h++],0!==--o){if(1===n){for(l=0;l<o;l++)t[d+l]=t[h+l];return void(t[d+o]=x[u])}for(var f,g,m,v=p;;){f=0,g=0,m=!1;do if(e(t[h],x[u])<0){if(t[d++]=t[h++],g++,f=0,0===--o){m=!0;break}}else if(t[d++]=x[u++],f++,g=0,1===--n){m=!0;break}while((f|g)<v);if(m)break;do{if(f=s(t[h],x,u,n,0,e),0!==f){for(l=0;l<f;l++)t[d+l]=x[u+l];if(d+=f,u+=f,n-=f,n<=1){m=!0;break}}if(t[d++]=t[h++],0===--o){m=!0;break}if(g=a(x[u],t,h,o,0,e),0!==g){for(l=0;l<g;l++)t[d+l]=t[h+l];if(d+=g,h+=g,o-=g,0===o){m=!0;break}}if(t[d++]=x[u++],1===--n){m=!0;break}v--}while(f>=c||g>=c);if(m)break;v<0&&(v=0),v+=2}if(p=v,p<1&&(p=1),1===n){for(l=0;l<o;l++)t[d+l]=t[h+l];t[d+o]=x[u]}else{if(0===n)throw new Error;for(l=0;l<n;l++)t[d+l]=x[u+l]}}else for(l=0;l<n;l++)t[d+l]=x[u+l]}function u(i,n,r,o){var l=0;for(l=0;l<o;l++)x[l]=t[r+l];var u=i+n-1,h=o-1,d=r+o-1,f=0,g=0;if(t[d--]=t[u--],0!==--n){if(1===o){for(d-=n,u-=n,g=d+1,f=u+1,l=n-1;l>=0;l--)t[g+l]=t[f+l];return void(t[d]=x[h])}for(var m=p;;){var v=0,y=0,_=!1;do if(e(x[h],t[u])<0){if(t[d--]=t[u--],v++,y=0,0===--n){_=!0;break}}else if(t[d--]=x[h--],y++,v=0,1===--o){_=!0;break}while((v|y)<m);if(_)break;do{if(v=n-s(x[h],t,i,n,n-1,e),0!==v){for(d-=v,u-=v,n-=v,g=d+1,f=u+1,l=v-1;l>=0;l--)t[g+l]=t[f+l];if(0===n){_=!0;break}}if(t[d--]=x[h--],1===--o){_=!0;break}if(y=o-a(t[u],x,0,o,o-1,e),0!==y){for(d-=y,h-=y,o-=y,g=d+1,f=h+1,l=0;l<y;l++)t[g+l]=x[f+l];if(o<=1){_=!0;break}}if(t[d--]=t[u--],0===--n){_=!0;break}m--}while(v>=c||y>=c);if(_)break;m<0&&(m=0),m+=2}if(p=m,p<1&&(p=1),1===o){for(d-=n,u-=n,g=d+1,f=u+1,l=n-1;l>=0;l--)t[g+l]=t[f+l];t[d]=x[h]}else{if(0===o)throw new Error;for(f=d-(o-1),l=0;l<o;l++)t[f+l]=x[l]}}else for(f=d-(o-1),l=0;l<o;l++)t[f+l]=x[l]}var h,f,p=c,g=0,m=d,v=0,y=0;g=t.length,g<2*d&&(m=g>>>1);var x=[];v=g<120?5:g<1542?10:g<119151?19:40,h=[],f=[],this.mergeRuns=n,this.forceMergeRuns=r,this.pushRun=i}function u(t,e,r,a){r||(r=0),a||(a=t.length);var s=a-r;if(!(s<2)){var u=0;if(s<h)return u=n(t,r,a,e),void o(t,r,a,r+u,e);var c=new l(t,e),d=i(s);do{if(u=n(t,r,a,e),u<d){var f=s;f>d&&(f=d),o(t,r,r+f,r+u,e),u=f}c.pushRun(r,u),c.mergeRuns(),s-=u,r+=u}while(0!==s);c.forceMergeRuns()}}var h=32,c=7,d=256;t.exports=u},function(t,e,i){var n=i(35);t.exports=function(){if(0!==n.debugMode)if(1==n.debugMode)for(var t in arguments)throw new Error(arguments[t]);else if(n.debugMode>1)for(var t in arguments)console.log(arguments[t])}},function(t,e,i){function n(t){r.call(this,t)}var r=i(40),o=i(11),a=i(1),s=i(69),l=new s(50);n.prototype={constructor:n,type:"image",brush:function(t,e){var i,n=this.style,r=n.image;if(n.bind(t,this,e),i="string"==typeof r?this._image:r,!i&&r){var o=l.get(r);if(!o)return i=new Image,i.onload=function(){i.onload=null;for(var t=0;t<o.pending.length;t++)o.pending[t].dirty()},o={image:i,pending:[this]},i.src=r,l.put(r,o),void(this._image=i);if(i=o.image,this._image=i,!i.width||!i.height)return void o.pending.push(this)}if(i){var a=n.x||0,s=n.y||0;if(!i.width||!i.height)return;var u=n.width,h=n.height,c=i.width/i.height;if(null==u&&null!=h?u=h*c:null==h&&null!=u?h=u/c:null==u&&null==h&&(u=i.width,h=i.height),this.setTransform(t),n.sWidth&&n.sHeight){var d=n.sx||0,f=n.sy||0;t.drawImage(i,d,f,n.sWidth,n.sHeight,a,s,u,h)}else if(n.sx&&n.sy){var d=n.sx,f=n.sy,p=u-d,g=h-f;t.drawImage(i,d,f,p,g,a,s,u,h)}else t.drawImage(i,a,s,u,h);this.restoreTransform(t),null!=n.text&&this.drawRectText(t,this.getBoundingRect())}},getBoundingRect:function(){var t=this.style;return this._rect||(this._rect=new o(t.x||0,t.y||0,t.width||0,t.height||0)),this._rect}},a.inherits(n,r),t.exports=n},function(t,e,i){function n(t,e){var i=t.getItemVisual(e,"symbolSize");return i instanceof Array?i.slice():[+i,+i]}function r(t){return[t[0]/2,t[1]/2]}function o(t,e,i){u.Group.call(this),this.updateData(t,e,i)}function a(t,e){this.parent.drift(t,e)}var s=i(1),l=i(24),u=i(3),h=i(4),c=o.prototype;c._createSymbol=function(t,e,i,n){this.removeAll();var o=e.hostModel,s=e.getItemVisual(i,"color"),h=l.createSymbol(t,-1,-1,2,2,s);h.attr({z2:100,culling:!0,scale:[0,0]}),h.drift=a,u.initProps(h,{scale:r(n)},o,i),this._symbolType=t,this.add(h)},c.stopSymbolAnimation=function(t){this.childAt(0).stopAnimation(t)},c.getSymbolPath=function(){return this.childAt(0)},c.getScale=function(){return this.childAt(0).scale},c.highlight=function(){this.childAt(0).trigger("emphasis")},c.downplay=function(){this.childAt(0).trigger("normal")},c.setZ=function(t,e){var i=this.childAt(0);i.zlevel=t,i.z=e},c.setDraggable=function(t){var e=this.childAt(0);e.draggable=t,e.cursor=t?"move":"pointer"},c.updateData=function(t,e,i){this.silent=!1;var o=t.getItemVisual(e,"symbol")||"circle",a=t.hostModel,s=n(t,e);if(o!==this._symbolType)this._createSymbol(o,t,e,s);else{var l=this.childAt(0);l.silent=!1,u.updateProps(l,{scale:r(s)},a,e)}this._updateCommon(t,e,s,i),this._seriesModel=a};var d=["itemStyle","normal"],f=["itemStyle","emphasis"],p=["label","normal"],g=["label","emphasis"];c._updateCommon=function(t,e,i,n){var o=this.childAt(0),a=t.hostModel,l=t.getItemVisual(e,"color");"image"!==o.type&&o.useStyle({strokeNoScale:!0}),n=n||null;var c=n&&n.itemStyle,m=n&&n.hoverItemStyle,v=n&&n.symbolRotate,y=n&&n.symbolOffset,x=n&&n.labelModel,_=n&&n.hoverLabelModel,b=n&&n.hoverAnimation;if(!n||t.hasItemOption){var w=t.getItemModel(e);c=w.getModel(d).getItemStyle(["color"]),m=w.getModel(f).getItemStyle(),v=w.getShallow("symbolRotate"),y=w.getShallow("symbolOffset"),x=w.getModel(p),_=w.getModel(g),b=w.getShallow("hoverAnimation")}else m=s.extend({},m);var M=o.style;o.attr("rotation",(v||0)*Math.PI/180||0),y&&o.attr("position",[h.parsePercent(y[0],i[0]),h.parsePercent(y[1],i[1])]),o.setColor(l),o.setStyle(c);var S=t.getItemVisual(e,"opacity");null!=S&&(M.opacity=S);for(var T,A,I=t.dimensions.slice();I.length&&(T=I.pop(),A=t.getDimensionInfo(T).type,"ordinal"===A||"time"===A););null!=T&&x.getShallow("show")?(u.setText(M,x,l),M.text=s.retrieve(a.getFormattedLabel(e,"normal"),t.get(T,e))):M.text="",null!=T&&_.getShallow("show")?(u.setText(m,_,l),m.text=s.retrieve(a.getFormattedLabel(e,"emphasis"),t.get(T,e))):m.text="",o.off("mouseover").off("mouseout").off("emphasis").off("normal"),o.hoverStyle=m,u.setHoverStyle(o);var C=r(i);if(b&&a.isAnimationEnabled()){var P=function(){var t=C[1]/C[0];this.animateTo({scale:[Math.max(1.1*C[0],C[0]+3),Math.max(1.1*C[1],C[1]+3*t)]},400,"elasticOut")},k=function(){this.animateTo({scale:C},400,"elasticOut")};o.on("mouseover",P).on("mouseout",k).on("emphasis",P).on("normal",k)}},c.fadeOut=function(t){var e=this.childAt(0);this.silent=e.silent=!0,e.style.text="",u.updateProps(e,{scale:[0,0]},this._seriesModel,this.dataIndex,t)},s.inherits(o,u.Group),t.exports=o},function(t,e,i){"use strict";function n(t,e,i,n){var r=n.getWidth(),o=n.getHeight();t[0]=Math.min(t[0]+e,r)-e,t[1]=Math.min(t[1]+i,o)-i,t[0]=Math.max(t[0],0),t[1]=Math.max(t[1],0)}var r=i(1),o=i(3),a=i(16),s=i(7),l=i(19),u=i(17),h=i(37),c={};c.buildElStyle=function(t){var e,i=t.get("type"),n=t.getModel(i+"Style");return"line"===i?(e=n.getLineStyle(),e.fill=null):"shadow"===i&&(e=n.getAreaStyle(),e.stroke=null),e},c.buildLabelElOption=function(t,e,i,r,o){var l=i.get("value"),u=c.getValueLabel(l,e.axis,e.ecModel,i.get("seriesDataIndices"),{precision:i.get("label.precision"),formatter:i.get("label.formatter")}),h=i.getModel("label"),d=h.getModel("textStyle"),f=s.normalizeCssArray(h.get("padding")||0),p=d.getFont(),g=a.getBoundingRect(u,p,o.textAlign,o.textBaseline),m=o.position,v=g.width+f[1]+f[3],y=g.height+f[0]+f[2],x=o.align;"right"===x&&(m[0]-=v),"center"===x&&(m[0]-=v/2);var _=o.verticalAlign;"bottom"===_&&(m[1]-=y),"middle"===_&&(m[1]-=y/2),n(m,v,y,r);var b=h.get("backgroundColor");b&&"auto"!==b||(b=e.get("axisLine.lineStyle.color")),t.label={shape:{x:0,y:0,width:v,height:y,r:h.get("borderRadius")},position:m.slice(),style:{text:u,textFont:p,textFill:d.getTextColor(),textPosition:"inside",fill:b,stroke:h.get("borderColor")||"transparent",lineWidth:h.get("borderWidth")||0,shadowBlur:h.get("shadowBlur"),shadowColor:h.get("shadowColor"),shadowOffsetX:h.get("shadowOffsetX"),shadowOffsetY:h.get("shadowOffsetY")}}},c.getValueLabel=function(t,e,i,n,o){var a=e.scale.getLabel(t,{precision:o.precision,pad:!0}),s=o.formatter;if(s){var l={value:u.getAxisRawValue(e,t),seriesData:[]};r.each(n,function(t){var e=i.getSeriesByIndex(t.seriesIndex),n=t.dataIndexInside,r=e&&e.getDataParams(n);r&&l.seriesData.push(r)}),r.isString(s)?a=s.replace("{value}",a):r.isFunction(s)&&(a=s(l))}return a},c.getTransformedPosition=function(t,e,i){var n=l.create();return l.rotate(n,n,i.rotation),l.translate(n,n,i.position),o.applyTransform([t.dataToCoord(e),(i.labelOffset||0)+(i.labelDirection||1)*(i.labelMargin||0)],n)},c.buildCartesianSingleLabelElOption=function(t,e,i,n,r,o){var a=h.innerTextLayout(i.rotation,0,i.labelDirection);i.labelMargin=r.get("label.margin"),c.buildLabelElOption(e,n,r,o,{position:c.getTransformedPosition(n.axis,t,i),align:a.textAlign,verticalAlign:a.textVerticalAlign})},c.makeLineShape=function(t,e,i){return i=i||0,{x1:t[i],y1:t[1-i],x2:e[i],y2:e[1-i]}},c.makeRectShape=function(t,e,i){return i=i||0,{x:t[i],y:t[1-i],width:e[i],height:e[1-i]}},c.makeSectorShape=function(t,e,i,n,r,o){return{cx:t,cy:e,r0:i,r:n,startAngle:r,endAngle:o,clockwise:!0}},t.exports=c},function(t,e,i){function n(t,e,i){return t.getCoordSysModel()===e}function r(t){var e,i=t.model,n=i.getFormattedLabels(),r=i.getModel("axisLabel.textStyle"),o=1,a=n.length;a>40&&(o=Math.ceil(a/40));for(var s=0;s<a;s+=o)if(!t.isLabelIgnored(s)){var l=r.getTextRect(n[s]);e?e.union(l):e=l}return e}function o(t,e,i){this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this._initCartesian(t,e,i),this.model=t}function a(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}}function s(t,e){return c.map(y,function(e){var i=t.getReferringComponents(e)[0];return i})}function l(t){return"cartesian2d"===t.get("coordinateSystem")}var u=i(12),h=i(17),c=i(1),d=i(134),f=i(132),p=c.each,g=h.ifAxisCrossZero,m=h.niceScaleExtent;i(135);var v=o.prototype;v.type="grid",v.axisPointerEnabled=!0,v.getRect=function(){return this._rect},v.update=function(t,e){function i(t){var e=n[t];for(var i in e)if(e.hasOwnProperty(i)){var r=e[i];if(r&&("category"===r.type||!g(r)))return!0}return!1}var n=this._axesMap;this._updateScale(t,this.model),p(n.x,function(t){m(t.scale,t.model)}),p(n.y,function(t){m(t.scale,t.model)}),p(n.x,function(t){i("y")&&(t.onZero=!1)}),p(n.y,function(t){i("x")&&(t.onZero=!1)}),this.resize(this.model,e)},v.resize=function(t,e){function i(){p(o,function(t){var e=t.isHorizontal(),i=e?[0,n.width]:[0,n.height],r=t.inverse?1:0;t.setExtent(i[r],i[1-r]),a(t,e?n.x:n.y)})}var n=u.getLayoutRect(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()});this._rect=n;var o=this._axesList;i(),t.get("containLabel")&&(p(o,function(t){if(!t.model.get("axisLabel.inside")){var e=r(t);if(e){var i=t.isHorizontal()?"height":"width",o=t.model.get("axisLabel.margin");n[i]-=e[i]+o,"top"===t.position?n.y+=e.height+o:"left"===t.position&&(n.x+=e.width+o)}}}),i())},v.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]}},v.getAxes=function(){return this._axesList.slice()},v.getCartesian=function(t,e){if(null!=t&&null!=e){var i="x"+t+"y"+e;return this._coordsMap[i]}c.isObject(t)&&(e=t.yAxisIndex,t=t.xAxisIndex);for(var n=0,r=this._coordsList;n<r.length;n++)if(r[n].getAxis("x").index===t||r[n].getAxis("y").index===e)return r[n]},v.getCartesians=function(){return this._coordsList.slice()},v.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},v.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},v._findConvertTarget=function(t,e){var i,n,r=e.seriesModel,o=e.xAxisModel||r&&r.getReferringComponents("xAxis")[0],a=e.yAxisModel||r&&r.getReferringComponents("yAxis")[0],s=e.gridModel,l=this._coordsList;if(r)i=r.coordinateSystem,c.indexOf(l,i)<0&&(i=null);else if(o&&a)i=this.getCartesian(o.componentIndex,a.componentIndex);else if(o)n=this.getAxis("x",o.componentIndex);else if(a)n=this.getAxis("y",a.componentIndex);else if(s){var u=s.coordinateSystem;u===this&&(i=this._coordsList[0])}return{cartesian:i,axis:n}},v.containPoint=function(t){var e=this._coordsList[0];if(e)return e.containPoint(t)},v._initCartesian=function(t,e,i){function r(i){return function(r,l){if(n(r,t,e)){var u=r.get("position");"x"===i?"top"!==u&&"bottom"!==u&&(u="bottom",o[u]&&(u="top"===u?"bottom":"top")):"left"!==u&&"right"!==u&&(u="left",o[u]&&(u="left"===u?"right":"left")),o[u]=!0;var c=new f(i,h.createScaleByModel(r),[0,0],r.get("type"),u),d="category"===c.type;c.onBand=d&&r.get("boundaryGap"),c.inverse=r.get("inverse"),c.onZero=r.get("axisLine.onZero"),r.axis=c,c.model=r,c.grid=this,c.index=l,this._axesList.push(c),a[i][l]=c,s[i]++}}}var o={left:!1,right:!1,top:!1,bottom:!1},a={x:{},y:{}},s={x:0,y:0};return e.eachComponent("xAxis",r("x"),this),e.eachComponent("yAxis",r("y"),this),s.x&&s.y?(this._axesMap=a,void p(a.x,function(e,i){p(a.y,function(n,r){var o="x"+i+"y"+r,a=new d(o);a.grid=this,a.model=t,this._coordsMap[o]=a,this._coordsList.push(a),a.addAxis(e),a.addAxis(n)},this)},this)):(this._axesMap={},void(this._axesList=[]))},v._updateScale=function(t,e){function i(t,e,i){p(i.coordDimToDataDim(e.dim),function(i){e.scale.unionExtentFromData(t,i)})}c.each(this._axesList,function(t){t.scale.setExtent(1/0,-(1/0))}),t.eachSeries(function(r){if(l(r)){var o=s(r,t),a=o[0],u=o[1];if(!n(a,e,t)||!n(u,e,t))return;var h=this.getCartesian(a.componentIndex,u.componentIndex),c=r.getData(),d=h.getAxis("x"),f=h.getAxis("y");"list"===c.type&&(i(c,d,r),i(c,f,r))}},this)},v.getTooltipAxes=function(t){var e=[],i=[];return p(this.getCartesians(),function(n){var r=null!=t&&"auto"!==t?n.getAxis(t):n.getBaseAxis(),o=n.getOtherAxis(r);c.indexOf(e,r)<0&&e.push(r),c.indexOf(i,o)<0&&i.push(o)}),{baseAxes:e,otherAxes:i}};var y=["xAxis","yAxis"];o.create=function(t,e){var i=[];return t.eachComponent("grid",function(n,r){var a=new o(n,t,e);a.name="grid_"+r,a.resize(n,e),n.coordinateSystem=a,i.push(a)}),t.eachSeries(function(e){if(l(e)){var i=s(e,t),n=i[0],r=i[1],o=n.getCoordSysModel(),a=o.coordinateSystem;e.coordinateSystem=a.getCartesian(n.componentIndex,r.componentIndex)}}),i},o.dimensions=o.prototype.dimensions=d.prototype.dimensions,i(26).register("cartesian2d",o),t.exports=o},function(t,e,i){function n(t,e,i,n,a,s){if(t.axisPointerClass){var l=o.getAxisPointerModel(e);l?(t._axisPointer||(t._axisPointer=new t.axisPointerClass)).render(e,l,n,s):r(t,n)}}function r(t,e,i){var n=t._axisPointer;n&&n.dispose(e,i),t._axisPointer=null}var o=i(32),a=i(2).extendComponentView({type:"axis",_axisPointer:null,axisPointerClass:null,render:function(t,e,i,r){o.fixValue(t),a.superApply(this,"render",arguments),n(this,t,e,i,r,!0)},updateAxisPointer:function(t,e,i,r,o){n(this,t,e,i,r,!1)},remove:function(t,e){var i=this._axisPointer;i&&i.remove(e),a.superApply(this,"remove",arguments)},dispose:function(t,e){r(this,e),a.superApply(this,"dispose",arguments)}});t.exports=a},function(t,e,i){var n=i(1),r={};r.layout=function(t,e,i){function r(t,e){var i=o.getAxis(t);return i.toGlobalCoord(i.dataToCoord(0))}i=i||{};var o=t.coordinateSystem,a=e.axis,s={},l=a.position,u=a.onZero?"onZero":l,h=a.dim,c=o.getRect(),d=[c.x,c.x+c.width,c.y,c.y+c.height],f=e.get("offset")||0,p={x:{top:d[2]-f,bottom:d[3]+f},y:{left:d[0]-f,right:d[1]+f}};p.x.onZero=Math.max(Math.min(r("y"),p.x.bottom),p.x.top),p.y.onZero=Math.max(Math.min(r("x"),p.y.right),p.y.left),s.position=["y"===h?p.y[u]:d[0],"x"===h?p.x[u]:d[3]],s.rotation=Math.PI/2*("x"===h?0:1);var g={top:-1,bottom:1,left:-1,right:1};s.labelDirection=s.tickDirection=s.nameDirection=g[l],s.labelOffset=a.onZero?p[h][l]-p[h].onZero:0,e.get("axisTick.inside")&&(s.tickDirection=-s.tickDirection),n.retrieve(i.labelInside,e.get("axisLabel.inside"))&&(s.labelDirection=-s.labelDirection);var m=e.get("axisLabel.rotate");return s.labelRotate="top"===u?-m:m,s.labelInterval=a.getLabelInterval(),s.z2=1,s},t.exports=r},function(t,e,i){var n=i(96),r=i(1),o=i(13),a=i(12),s=["value","category","time","log"];t.exports=function(t,e,i,l){r.each(s,function(o){e.extend({type:t+"Axis."+o,mergeDefaultAndTheme:function(e,n){var s=this.layoutMode,l=s?a.getLayoutParams(e):{},u=n.getTheme();r.merge(e,u.get(o+"Axis")),r.merge(e,this.getDefaultOption()),e.type=i(t,e),s&&a.mergeLayoutParam(e,l,s)},defaultOption:r.mergeAll([{},n[o+"Axis"],l],!0)})}),o.registerSubTypeDefaulter(t+"Axis",r.curry(i,t))}},function(t,e,i){"use strict";function n(t,e){return e.type||(e.data?"category":"value")}var r=i(13),o=i(1),a=i(59),s=r.extend({type:"cartesian2dAxis",axis:null,init:function(){s.superApply(this,"init",arguments),this.resetRange()},mergeOption:function(){s.superApply(this,"mergeOption",arguments),this.resetRange()},restoreData:function(){s.superApply(this,"restoreData",arguments),this.resetRange()},getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"grid",index:this.option.gridIndex,id:this.option.gridId})[0]}});o.merge(s.prototype,i(42));var l={offset:0};a("x",s,n,l),a("y",s,n,l),t.exports=s},function(t,e){t.exports=function(t,e){e.eachSeriesByType(t,function(t){var e=t.getData(),i=t.coordinateSystem;if(i){var n=i.dimensions;1===n.length?e.each(n[0],function(t,n){e.setItemLayout(n,isNaN(t)?[NaN,NaN]:i.dataToPoint(t))}):2===n.length&&e.each(n,function(t,n,r){e.setItemLayout(r,isNaN(t)||isNaN(n)?[NaN,NaN]:i.dataToPoint([t,n]))},!0)}})}},function(t,e,i){var n=i(15),r=n.set,o=n.get;t.exports={clearColorPalette:function(){r(this,"colorIdx",0),r(this,"colorNameMap",{})},getColorFromPalette:function(t,e){e=e||this;var i=o(e,"colorIdx")||0,n=o(e,"colorNameMap")||r(e,"colorNameMap",{});if(n[t])return n[t];var a=this.get("color",!0)||[];if(a.length){var s=a[i];return t&&(n[t]=s),r(e,"colorIdx",(i+1)%a.length),
+s}}}},function(t,e){t.exports=function(t,e){var i=e.findComponents({mainType:"legend"});i&&i.length&&e.eachSeriesByType(t,function(t){var e=t.getData();e.filterSelf(function(t){for(var n=e.getName(t),r=0;r<i.length;r++)if(!i[r].isSelected(n))return!1;return!0},this)},this)}},function(t,e,i){var n=i(36),r=i(49),o=i(15),a=function(){this.group=new n,this.uid=r.getUID("viewComponent")};a.prototype={constructor:a,init:function(t,e){},render:function(t,e,i,n){},dispose:function(){}};var s=a.prototype;s.updateView=s.updateLayout=s.updateVisual=function(t,e,i,n){},o.enableClassExtend(a),o.enableClassManagement(a,{registerWhenExtend:!0}),t.exports=a},function(t,e,i){"use strict";var n=i(70),r=i(23),o=i(102),a=i(180),s=i(1),l=function(t){o.call(this,t),r.call(this,t),a.call(this,t),this.id=t.id||n()};l.prototype={type:"element",name:"",__zr:null,ignore:!1,clipPath:null,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]),i[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]=[]),i[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(s.isObject(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,t.__zr=e,t.__clipTarget=this,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)}},s.mixin(l,a),s.mixin(l,o),s.mixin(l,r),t.exports=l},function(t,e,i){function n(t,e){return t[e]}function r(t,e,i){t[e]=i}function o(t,e,i){return(e-t)*i+t}function a(t,e,i){return i>.5?e:t}function s(t,e,i,n,r){var a=t.length;if(1==r)for(var s=0;s<a;s++)n[s]=o(t[s],e[s],i);else for(var l=t[0].length,s=0;s<a;s++)for(var u=0;u<l;u++)n[s][u]=o(t[s][u],e[s][u],i)}function l(t,e,i){var n=t.length,r=e.length;if(n!==r){var o=n>r;if(o)t.length=r;else for(var a=n;a<r;a++)t.push(1===i?e[a]:x.call(e[a]))}for(var s=t[0]&&t[0].length,a=0;a<t.length;a++)if(1===i)isNaN(t[a])&&(t[a]=e[a]);else for(var l=0;l<s;l++)isNaN(t[a][l])&&(t[a][l]=e[a][l])}function u(t,e,i){if(t===e)return!0;var n=t.length;if(n!==e.length)return!1;if(1===i){for(var r=0;r<n;r++)if(t[r]!==e[r])return!1}else for(var o=t[0].length,r=0;r<n;r++)for(var a=0;a<o;a++)if(t[r][a]!==e[r][a])return!1;return!0}function h(t,e,i,n,r,o,a,s,l){var u=t.length;if(1==l)for(var h=0;h<u;h++)s[h]=c(t[h],e[h],i[h],n[h],r,o,a);else for(var d=t[0].length,h=0;h<u;h++)for(var f=0;f<d;f++)s[h][f]=c(t[h][f],e[h][f],i[h][f],n[h][f],r,o,a)}function c(t,e,i,n,r,o,a){var s=.5*(i-t),l=.5*(n-e);return(2*(e-i)+s+l)*a+(-3*(e-i)-2*s-l)*o+s*r+e}function d(t){if(y(t)){var e=t.length;if(y(t[0])){for(var i=[],n=0;n<e;n++)i.push(x.call(t[n]));return i}return x.call(t)}return t}function f(t){return t[0]=Math.floor(t[0]),t[1]=Math.floor(t[1]),t[2]=Math.floor(t[2]),"rgba("+t.join(",")+")"}function p(t,e,i,n,r){var d=t._getter,p=t._setter,v="spline"===e,x=n.length;if(x){var _,b=n[0].value,w=y(b),M=!1,S=!1,T=w&&y(b[0])?2:1;n.sort(function(t,e){return t.time-e.time}),_=n[x-1].time;for(var A=[],I=[],C=n[0].value,P=!0,k=0;k<x;k++){A.push(n[k].time/_);var L=n[k].value;if(w&&u(L,C,T)||!w&&L===C||(P=!1),C=L,"string"==typeof L){var D=m.parse(L);D?(L=D,M=!0):S=!0}I.push(L)}if(!P){for(var O=I[x-1],k=0;k<x-1;k++)w?l(I[k],O,T):!isNaN(I[k])||isNaN(O)||S||M||(I[k]=O);w&&l(d(t._target,r),O,T);var z,E,N,R,B,V,F=0,G=0;if(M)var H=[0,0,0,0];var W=function(t,e){var i;if(e<0)i=0;else if(e<G){for(z=Math.min(F+1,x-1),i=z;i>=0&&!(A[i]<=e);i--);i=Math.min(i,x-2)}else{for(i=F;i<x&&!(A[i]>e);i++);i=Math.min(i-1,x-2)}F=i,G=e;var n=A[i+1]-A[i];if(0!==n)if(E=(e-A[i])/n,v)if(R=I[i],N=I[0===i?i:i-1],B=I[i>x-2?x-1:i+1],V=I[i>x-3?x-1:i+2],w)h(N,R,B,V,E,E*E,E*E*E,d(t,r),T);else{var l;if(M)l=h(N,R,B,V,E,E*E,E*E*E,H,1),l=f(H);else{if(S)return a(R,B,E);l=c(N,R,B,V,E,E*E,E*E*E)}p(t,r,l)}else if(w)s(I[i],I[i+1],E,d(t,r),T);else{var l;if(M)s(I[i],I[i+1],E,H,1),l=f(H);else{if(S)return a(I[i],I[i+1],E);l=o(I[i],I[i+1],E)}p(t,r,l)}},Z=new g({target:t._target,life:_,loop:t._loop,delay:t._delay,onframe:W,ondestroy:i});return e&&"spline"!==e&&(Z.easing=e),Z}}}var g=i(159),m=i(22),v=i(1),y=v.isArrayLike,x=Array.prototype.slice,_=function(t,e,i,o){this._tracks={},this._target=t,this._loop=e||!1,this._getter=i||n,this._setter=o||r,this._clipCount=0,this._delay=0,this._doneList=[],this._onframeList=[],this._clipList=[]};_.prototype={when:function(t,e){var i=this._tracks;for(var n in e)if(e.hasOwnProperty(n)){if(!i[n]){i[n]=[];var r=this._getter(this._target,n);if(null==r)continue;0!==t&&i[n].push({time:0,value:d(r)})}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){var e,i=this,n=0,r=function(){n--,n||i._doneCallback()};for(var o in this._tracks)if(this._tracks.hasOwnProperty(o)){var a=p(this,t,r,this._tracks[o],o);a&&(this._clipList.push(a),n++,this.animation&&this.animation.addClip(a),e=a)}if(e){var s=e.onframe;e.onframe=function(t,e){s(t,e);for(var n=0;n<i._onframeList.length;n++)i._onframeList[n](t,e)}}return n||this._doneCallback(),this},stop:function(t){for(var e=this._clipList,i=this.animation,n=0;n<e.length;n++){var r=e[n];t&&r.onframe(this._target,1),i&&i.removeClip(r)}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}},t.exports=_},function(t,e){t.exports="undefined"!=typeof window&&(window.requestAnimationFrame||window.msRequestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame)||function(t){setTimeout(t,16)}},function(t,e){var i=2*Math.PI;t.exports={normalizeRadian:function(t){return t%=i,t<0&&(t+=i),t}}},function(t,e){var i=function(){this.head=null,this.tail=null,this._len=0},n=i.prototype;n.insert=function(t){var e=new r(t);return this.insertEntry(e),e},n.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++},n.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--},n.len=function(){return this._len},n.clear=function(){this.head=this.tail=null,this._len=0};var r=function(t){this.value=t,this.next,this.prev},o=function(t){this._list=new i,this._map={},this._maxSize=t||10,this._lastRemovedEntry=null},a=o.prototype;a.put=function(t,e){var i=this._list,n=this._map,o=null;if(null==n[t]){var a=i.len(),s=this._lastRemovedEntry;if(a>=this._maxSize&&a>0){var l=i.head;i.remove(l),delete n[l.key],o=l.value,this._lastRemovedEntry=l}s?s.value=e:s=new r(e),s.key=t,i.insertEntry(s),n[t]=s}return o},a.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},a.clear=function(){this._list.clear(),this._map={}},t.exports=o},function(t,e){var i=2311;t.exports=function(){return i++}},function(t,e){var i=function(t,e){this.image=t,this.repeat=e,this.type="pattern"};i.prototype.getCanvasPattern=function(t){return this._canvasPattern||(this._canvasPattern=t.createPattern(this.image,this.repeat))},t.exports=i},function(t,e){function i(t,e,i){var n=e.x,r=e.x2,o=e.y,a=e.y2;e.global||(n=n*i.width+i.x,r=r*i.width+i.x,o=o*i.height+i.y,a=a*i.height+i.y);var s=t.createLinearGradient(n,o,r,a);return s}function n(t,e,i){var n=i.width,r=i.height,o=Math.min(n,r),a=e.x,s=e.y,l=e.r;e.global||(a=a*n+i.x,s=s*r+i.y,l*=o);var u=t.createRadialGradient(a,s,0,a,s,l);return u}var r=[["shadowBlur",0],["shadowOffsetX",0],["shadowOffsetY",0],["shadowColor","#000"],["lineCap","butt"],["lineJoin","miter"],["miterLimit",10]],o=function(t){this.extendFrom(t)};o.prototype={constructor:o,fill:"#000000",stroke:null,opacity:1,lineDash:null,lineDashOffset:0,shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,lineWidth:1,strokeNoScale:!1,text:null,textFill:"#000",textStroke:null,textPosition:"inside",textOffset:null,textBaseline:null,textAlign:null,textVerticalAlign:null,textDistance:5,textShadowBlur:0,textShadowOffsetX:0,textShadowOffsetY:0,textTransform:!1,textRotation:0,blend:null,bind:function(t,e,i){for(var n=this,o=i&&i.style,a=!o,s=0;s<r.length;s++){var l=r[s],u=l[0];(a||n[u]!==o[u])&&(t[u]=n[u]||l[1])}if((a||n.fill!==o.fill)&&(t.fillStyle=n.fill),(a||n.stroke!==o.stroke)&&(t.strokeStyle=n.stroke),(a||n.opacity!==o.opacity)&&(t.globalAlpha=null==n.opacity?1:n.opacity),(a||n.blend!==o.blend)&&(t.globalCompositeOperation=n.blend||"source-over"),this.hasStroke()){var h=n.lineWidth;t.lineWidth=h/(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&&this.lineWidth>0},extendFrom:function(t,e){if(t){var i=this;for(var n in t)!t.hasOwnProperty(n)||!e&&i.hasOwnProperty(n)||(i[n]=t[n])}},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,r){for(var o="radial"===e.type?n:i,a=o(t,e,r),s=e.colorStops,l=0;l<s.length;l++)a.addColorStop(s[l].offset,s[l].color);return a}};for(var a=o.prototype,s=0;s<r.length;s++){var l=r[s];l[0]in a||(a[l[0]]=l[1])}o.getGradient=a.getGradient,t.exports=o},function(t,e,i){var n=i(170),r=i(169);t.exports={buildPath:function(t,e,i){var o=e.points,a=e.smooth;if(o&&o.length>=2){if(a&&"spline"!==a){var s=r(o,a,i,e.smoothConstraint);t.moveTo(o[0][0],o[0][1]);for(var l=o.length,u=0;u<(i?l:l-1);u++){var h=s[2*u],c=s[2*u+1],d=o[(u+1)%l];t.bezierCurveTo(h[0],h[1],c[0],c[1],d[0],d[1])}}else{"spline"===a&&(o=n(o,i)),t.moveTo(o[0][0],o[0][1]);for(var u=1,f=o.length;u<f;u++)t.lineTo(o[u][0],o[u][1])}i&&t.closePath()}}}},function(t,e,i){"use strict";function n(){}function r(t,e,i,n){o(f(i).lastProp,n)||(f(i).lastProp=n,e?d.updateProps(i,n,t):(i.stopAnimation(),i.attr(n)))}function o(t,e){if(h.isObject(t)&&h.isObject(e)){var i=!0;return h.each(e,function(e,n){i&=o(t[n],e)}),!!i}return t===e}function a(t,e){t[e.get("label.show")?"show":"hide"]()}function s(t){return{position:t.position.slice(),rotation:t.rotation||0}}function l(t,e){var i=t.get("icon"),n={x:-1,y:-1,width:2,height:2},r=h.extend({style:{strokeNoScale:!0},rectHover:!0,cursor:"move",draggable:!0},e);return 0===i.indexOf("image://")?(n.image=i.slice(8),r.style=n,new d.Image(r)):d.makePath(i.replace("path://",""),r,n,"center")}function u(t,e,i){var n=e.get("z"),r=e.get("zlevel");t&&t.traverse(function(t){"group"!==t.type&&(null!=n&&(t.z=n),null!=r&&(t.zlevel=r),t.silent=i)})}var h=i(1),c=i(15),d=i(3),f=i(5).makeGetter(),p=i(32),g=i(20),m=i(39),v=h.clone,y=h.bind;n.prototype={_group:null,_lastGraphicKey:null,_handle:null,_dragging:!1,_lastValue:null,_lastStatus:null,_payloadInfo:null,animationThreshold:15,render:function(t,e,i,n){var o=e.get("value"),a=e.get("status");if(this._axisModel=t,this._axisPointerModel=e,this._api=i,n||this._lastValue!==o||this._lastStatus!==a){this._lastValue=o,this._lastStatus=a;var s=this._group,l=this._handle;if(!a||"hide"===a)return s&&s.hide(),void(l&&l.hide());s&&s.show(),l&&l.show();var c={};this.makeElOption(c,o,t,e,i);var f=c.graphicKey;f!==this._lastGraphicKey&&this.clear(i),this._lastGraphicKey=f;var p=this._moveAnimation=this.determineAnimation(t,e);if(s){var g=h.curry(r,e,p);this.updatePointerEl(s,c,g,e),this.updateLabelEl(s,c,g,e)}else s=this._group=new d.Group,this.createPointerEl(s,c,t,e),this.createLabelEl(s,c,t,e),i.getZr().add(s);u(s,e,!0),this._renderHandle(o)}},remove:function(t){this.clear(t)},dispose:function(t){this.clear(t)},determineAnimation:function(t,e){var i=e.get("animation"),n=t.axis,r="category"===n.type,o=e.get("snap");if(!o&&!r)return!1;if("auto"===i||null==i){var a=this.animationThreshold;if(r&&n.getBandWidth()>a)return!0;if(o){var s=p.getAxisInfo(t).seriesDataCount,l=n.getExtent();return Math.abs(l[0]-l[1])/s>a}return!1}return i===!0},makeElOption:function(t,e,i,n,r){},createPointerEl:function(t,e,i,n){var r=e.pointer,o=f(t).pointerEl=new d[r.type](v(e.pointer));t.add(o)},createLabelEl:function(t,e,i,n){var r=f(t).labelEl=new d.Rect(v(e.label));t.add(r),a(r,n)},updatePointerEl:function(t,e,i){var n=f(t).pointerEl;n&&(n.setStyle(e.pointer.style),i(n,{shape:e.pointer.shape}))},updateLabelEl:function(t,e,i,n){var r=f(t).labelEl;r&&(r.setStyle(e.label.style),i(r,{shape:e.label.shape,position:e.label.position}),a(r,n))},_renderHandle:function(t){if(!this._dragging&&this.updateHandleTransform){var e=this._axisPointerModel,i=this._api.getZr(),n=this._handle,r=e.getModel("handle"),o=e.get("status");if(!r.get("show")||!o||"hide"===o)return n&&i.remove(n),void(this._handle=null);var a;this._handle||(a=!0,n=this._handle=l(r,{onmousemove:function(t){g.stop(t.event)},onmousedown:y(this._onHandleDragMove,this,0,0),drift:y(this._onHandleDragMove,this),ondragend:y(this._onHandleDragEnd,this)}),i.add(n)),u(n,e,!1);var s=["color","borderColor","borderWidth","opacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY"];n.setStyle(r.getItemStyle(null,s));var c=r.get("size");h.isArray(c)||(c=[c,c]),n.attr("scale",[c[0]/2,c[1]/2]),m.createOrUpdate(this,"_doDispatchAxisPointer",r.get("throttle")||0,"fixRate"),this._moveHandleToValue(t,a)}},_moveHandleToValue:function(t,e){r(this._axisPointerModel,!e&&this._moveAnimation,this._handle,s(this.getHandleTransform(t,this._axisModel,this._axisPointerModel)))},_onHandleDragMove:function(t,e){var i=this._handle;if(i){this._dragging=!0;var n=this.updateHandleTransform(s(i),[t,e],this._axisModel,this._axisPointerModel);this._payloadInfo=n,i.stopAnimation(),i.attr(s(n)),f(i).lastProp=null,this._doDispatchAxisPointer()}},_doDispatchAxisPointer:function(){var t=this._handle;if(t){var e=this._payloadInfo,i={type:"updateAxisPointer",x:e.cursorPoint[0],y:e.cursorPoint[1],tooltipOption:e.tooltipOption,highDownKey:"axisPointerHandle"},n=this._axisModel.axis;i[n.dim+"AxisId"]=this._axisModel.id,this._api.dispatchAction(i)}},_onHandleDragEnd:function(t){this._dragging=!1;var e=this._handle;if(e){var i=this._axisPointerModel.get("value");this._moveHandleToValue(i),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 i=i||0,{x:t[i],y:t[1-i],width:e[i],height:e[1-i]}}},n.prototype.constructor=n,c.enableClassExtend(n),t.exports=n},function(t,e,i){var n=i(1),r=i(5);t.exports=function(t,e){var i,o=[],a=t.seriesIndex;if(null==a||!(i=e.getSeriesByIndex(a)))return{point:[]};var s=i.getData(),l=r.queryDataIndex(s,t);if(null==l||n.isArray(l))return{point:[]};var u=s.getItemGraphicEl(l),h=i.coordinateSystem;if(i.getTooltipPosition)o=i.getTooltipPosition(l)||[];else if(h&&h.dataToPoint)o=h.dataToPoint(s.getValues(n.map(h.dimensions,function(t){return i.coordDimToDataDim(t)[0]}),l,!0))||[];else if(u){var c=u.getBoundingRect().clone();c.applyTransform(u.transform),o=[c.x+c.width/2,c.y+c.height/2]}return{point:o,el:u}}},function(t,e,i){function n(t,e){function i(i,n){t.on(i,function(i){var o=s(e);c(h(t).records,function(t){t&&n(t,i,o.dispatchAction)}),r(o.pendings,e)})}h(t).initialized||(h(t).initialized=!0,i("click",u.curry(a,"click")),i("mousemove",u.curry(a,"mousemove")),i("globalout",o))}function r(t,e){var i,n=t.showTip.length,r=t.hideTip.length;n?i=t.showTip[n-1]:r&&(i=t.hideTip[r-1]),i&&(i.dispatchAction=null,e.dispatchAction(i))}function o(t,e,i){t.handler("leave",null,i)}function a(t,e,i,n){e.handler(t,i,n)}function s(t){var e={showTip:[],hideTip:[]},i=function(n){var r=e[n.type];r?r.push(n):(n.dispatchAction=i,t.dispatchAction(n))};return{dispatchAction:i,pendings:e}}var l=i(9),u=i(1),h=i(5).makeGetter(),c=u.each,d={};d.register=function(t,e,i){if(!l.node){var r=e.getZr();h(r).records||(h(r).records={}),n(r,e);var o=h(r).records[t]||(h(r).records[t]={});o.handler=i}},d.unregister=function(t,e){if(!l.node){var i=e.getZr(),n=(h(i).records||{})[t];n&&(h(i).records[t]=null)}},t.exports=d},function(t,e,i){var n=i(7),r=i(1),o={},a=["x","y","z","radius","angle","single"],s=["cartesian2d","polar","singleAxis"];o.isCoordSupported=function(t){return r.indexOf(s,t)>=0},o.createNameEach=function(t,e){t=t.slice();var i=r.map(t,n.capitalFirst);e=(e||[]).slice();var o=r.map(e,n.capitalFirst);return function(n,a){r.each(t,function(t,r){for(var s={name:t,capital:i[r]},l=0;l<e.length;l++)s[e[l]]=t+o[l];n.call(a,s)})}},o.eachAxisDim=o.createNameEach(a,["axisIndex","axis","index","id"]),o.createLinkedNodesFinder=function(t,e,i){function n(t,e){return r.indexOf(e.nodes,t)>=0}function o(t,n){var o=!1;return e(function(e){r.each(i(t,e)||[],function(t){n.records[e.name][t]&&(o=!0)})}),o}function a(t,n){n.nodes.push(t),e(function(e){r.each(i(t,e)||[],function(t){n.records[e.name][t]=!0})})}return function(i){function r(t){!n(t,s)&&o(t,s)&&(a(t,s),l=!0)}var s={nodes:[],records:{}};if(e(function(t){s.records[t.name]={}}),!i)return s;a(i,s);var l;do l=!1,t(r);while(l);return s}},t.exports=o},function(t,e,i){var n=i(1);t.exports={updateSelectedMap:function(t){this._selectTargetMap=n.reduce(t||[],function(t,e){return t[e.name]=e,t},{})},select:function(t){var e=this._selectTargetMap,i=e[t],r=this.get("selectedMode");"single"===r&&n.each(e,function(t){t.selected=!1}),i&&(i.selected=!0)},unSelect:function(t){var e=this._selectTargetMap[t];e&&(e.selected=!1)},toggleSelected:function(t){var e=this._selectTargetMap[t];if(null!=e)return this[e.selected?"unSelect":"select"](t),e.selected},isSelected:function(t){var e=this._selectTargetMap[t];return e&&e.selected}}},function(t,e,i){function n(t){r.defaultEmphasis(t.label,r.LABEL_OPTIONS)}var r=i(5),o=i(1),a=i(9),s=i(7),l=s.addCommas,u=s.encodeHTML,h=i(2).extendComponentModel({type:"marker",dependencies:["series","grid","polar","geo"],init:function(t,e,i,n){this.mergeDefaultAndTheme(t,i),this.mergeOption(t,i,n.createdBySelf,!0)},isAnimationEnabled:function(){if(a.node)return!1;var t=this.__hostSeries;return this.getShallow("animation")&&t&&t.isAnimationEnabled()},mergeOption:function(t,e,i,r){var a=this.constructor,s=this.mainType+"Model";i||e.eachSeries(function(t){var i=t.get(this.mainType),l=t[s];return i&&i.data?(l?l.mergeOption(i,e,!0):(r&&n(i),o.each(i.data,function(t){t instanceof Array?(n(t[0]),n(t[1])):n(t)}),l=new a(i,this,e),o.extend(l,{mainType:this.mainType,seriesIndex:t.seriesIndex,name:t.name,createdBySelf:!0}),l.__hostSeries=t),void(t[s]=l)):void(t[s]=null)},this)},formatTooltip:function(t){var e=this.getData(),i=this.getRawValue(t),n=o.isArray(i)?o.map(i,l).join(", "):l(i),r=e.getName(t),a=u(this.name);return(null!=i||r)&&(a+="<br />"),r&&(a+=u(r),null!=i&&(a+=" : ")),null!=i&&(a+=u(n)),a},getData:function(){return this._data},setData:function(t){this._data=t}});o.mixin(h,r.dataFormatMixin),t.exports=h},function(t,e,i){t.exports=i(2).extendComponentView({type:"marker",init:function(){this.markerGroupMap={}},render:function(t,e,i){var n=this.markerGroupMap;for(var r in n)n.hasOwnProperty(r)&&(n[r].__keep=!1);var o=this.type+"Model";e.eachSeries(function(t){var n=t[o];n&&this.renderSeries(t,n,e,i)},this);for(var r in n)n.hasOwnProperty(r)&&!n[r].__keep&&this.group.remove(n[r].group)},renderSeries:function(){}})},function(t,e,i){function n(t){return!(isNaN(parseFloat(t.x))&&isNaN(parseFloat(t.y)))}function r(t){return!isNaN(parseFloat(t.x))&&!isNaN(parseFloat(t.y))}function o(t,e,i){var n=-1;do n=Math.max(l.getPrecision(t.get(e,i)),n),t=t.stackedOn;while(t);return n}function a(t,e,i,n,r,a){var s=[],l=m(e,n,t),u=e.indexOfNearest(n,l,!0)[0];s[r]=e.get(i,u,!0),s[a]=e.get(n,u,!0);var h=o(e,n,u);return h>=0&&(s[a]=+s[a].toFixed(h)),s}var s=i(1),l=i(4),u=s.indexOf,h=s.curry,c={min:h(a,"min"),max:h(a,"max"),average:h(a,"average")},d=function(t,e){var i=t.getData(),n=t.coordinateSystem;if(e&&!r(e)&&!s.isArray(e.coord)&&n){var o=n.dimensions,a=f(e,i,n,t);if(e=s.clone(e),e.type&&c[e.type]&&a.baseAxis&&a.valueAxis){var l=u(o,a.baseAxis.dim),h=u(o,a.valueAxis.dim);e.coord=c[e.type](i,a.baseDataDim,a.valueDataDim,l,h),e.value=e.coord[h]}else{for(var d=[null!=e.xAxis?e.xAxis:e.radiusAxis,null!=e.yAxis?e.yAxis:e.angleAxis],p=0;p<2;p++)if(c[d[p]]){var g=t.coordDimToDataDim(o[p])[0];d[p]=m(i,g,d[p])}e.coord=d}}return e},f=function(t,e,i,n){var r={};return null!=t.valueIndex||null!=t.valueDim?(r.valueDataDim=null!=t.valueIndex?e.getDimension(t.valueIndex):t.valueDim,r.valueAxis=i.getAxis(n.dataDimToCoordDim(r.valueDataDim)),r.baseAxis=i.getOtherAxis(r.valueAxis),r.baseDataDim=n.coordDimToDataDim(r.baseAxis.dim)[0]):(r.baseAxis=n.getBaseAxis(),r.valueAxis=i.getOtherAxis(r.baseAxis),r.baseDataDim=n.coordDimToDataDim(r.baseAxis.dim)[0],r.valueDataDim=n.coordDimToDataDim(r.valueAxis.dim)[0]),r},p=function(t,e){return!(t&&t.containData&&e.coord&&!n(e))||t.containData(e.coord)},g=function(t,e,i,n){return n<2?t.coord&&t.coord[n]:t.value},m=function(t,e,i){if("average"===i){var n=0,r=0;return t.each(e,function(t,e){isNaN(t)||(n+=t,r++)},!0),n/r}return t.getDataExtent(e,!0)["max"===i?1:0]};t.exports={dataTransform:d,dataFilter:p,dimValueGetter:g,getAxisInfo:f,numCalculate:m}},,function(t,e){t.exports=function(t,e){var i={};e.eachRawSeriesByType(t,function(t){var n=t.getRawData(),r={};if(!e.isSeriesFiltered(t)){var o=t.getData();o.each(function(t){var e=o.getRawIndex(t);r[e]=t}),n.each(function(e){var a=r[e],s=null!=a&&o.getItemVisual(a,"color",!0);if(s)n.setItemVisual(e,"color",s);else{var l=n.getItemModel(e),u=l.get("itemStyle.normal.color")||t.getColorFromPalette(n.getName(e),i);n.setItemVisual(e,"color",u),null!=a&&o.setItemVisual(a,"color",u)}})}})}},function(t,e,i){var n=i(6),r=i(21),o={},a=Math.min,s=Math.max,l=Math.sin,u=Math.cos,h=n.create(),c=n.create(),d=n.create(),f=2*Math.PI;o.fromPoints=function(t,e,i){if(0!==t.length){var n,r=t[0],o=r[0],l=r[0],u=r[1],h=r[1];for(n=1;n<t.length;n++)r=t[n],o=a(o,r[0]),l=s(l,r[0]),u=a(u,r[1]),h=s(h,r[1]);e[0]=o,e[1]=u,i[0]=l,i[1]=h}},o.fromLine=function(t,e,i,n,r,o){r[0]=a(t,i),r[1]=a(e,n),o[0]=s(t,i),o[1]=s(e,n)};var p=[],g=[];o.fromCubic=function(t,e,i,n,o,l,u,h,c,d){var f,m=r.cubicExtrema,v=r.cubicAt,y=m(t,i,o,u,p);for(c[0]=1/0,c[1]=1/0,d[0]=-(1/0),d[1]=-(1/0),f=0;f<y;f++){var x=v(t,i,o,u,p[f]);c[0]=a(x,c[0]),d[0]=s(x,d[0])}for(y=m(e,n,l,h,g),f=0;f<y;f++){var _=v(e,n,l,h,g[f]);c[1]=a(_,c[1]),d[1]=s(_,d[1])}c[0]=a(t,c[0]),d[0]=s(t,d[0]),c[0]=a(u,c[0]),d[0]=s(u,d[0]),c[1]=a(e,c[1]),d[1]=s(e,d[1]),c[1]=a(h,c[1]),d[1]=s(h,d[1])},o.fromQuadratic=function(t,e,i,n,o,l,u,h){var c=r.quadraticExtremum,d=r.quadraticAt,f=s(a(c(t,i,o),1),0),p=s(a(c(e,n,l),1),0),g=d(t,i,o,f),m=d(e,n,l,p);u[0]=a(t,o,g),u[1]=a(e,l,m),h[0]=s(t,o,g),h[1]=s(e,l,m)},o.fromArc=function(t,e,i,r,o,a,s,p,g){var m=n.min,v=n.max,y=Math.abs(o-a);if(y%f<1e-4&&y>1e-4)return p[0]=t-i,p[1]=e-r,g[0]=t+i,void(g[1]=e+r);if(h[0]=u(o)*i+t,h[1]=l(o)*r+e,c[0]=u(a)*i+t,c[1]=l(a)*r+e,m(p,h,c),v(g,h,c),o%=f,o<0&&(o+=f),a%=f,a<0&&(a+=f),o>a&&!s?a+=f:o<a&&s&&(o+=f),s){var x=a;a=o,o=x}for(var _=0;_<a;_+=Math.PI/2)_>o&&(d[0]=u(_)*i+t,d[1]=l(_)*r+e,m(p,d,p),v(g,d,g))},t.exports=o},function(t,e,i){var n=i(40),r=i(1),o=i(16),a=function(t){n.call(this,t)};a.prototype={constructor:a,type:"text",brush:function(t,e){var i=this.style,n=i.x||0,r=i.y||0,a=i.text;if(null!=a&&(a+=""),i.bind(t,this,e),a){this.setTransform(t);var s,l=i.textAlign,u=i.textFont||i.font;if(i.textVerticalAlign){var h=o.getBoundingRect(a,u,i.textAlign,"top");switch(s="middle",i.textVerticalAlign){case"middle":r-=h.height/2-h.lineHeight/2;break;case"bottom":r-=h.height-h.lineHeight/2;break;default:r+=h.lineHeight/2}}else s=i.textBaseline;t.font=u||"12px sans-serif",t.textAlign=l||"left",t.textAlign!==l&&(t.textAlign="left"),t.textBaseline=s||"alphabetic",t.textBaseline!==s&&(t.textBaseline="alphabetic");for(var c=o.measureText("国",t.font).width,d=a.split("\n"),f=0;f<d.length;f++)i.hasStroke()&&t.strokeText(d[f],n,r),i.hasFill()&&t.fillText(d[f],n,r),r+=c;this.restoreTransform(t)}},getBoundingRect:function(){var t=this.style;if(!this._rect){var e=t.textVerticalAlign,i=o.getBoundingRect(t.text+"",t.textFont||t.font,t.textAlign,e?"top":t.textBaseline);switch(e){case"middle":i.y-=i.height/2;break;case"bottom":i.y-=i.height}if(i.x+=t.x||0,i.y+=t.y||0,t.hasStroke()){var n=t.lineWidth;i.x-=n/2,i.y-=n/2,i.width+=n,i.height+=n}this._rect=i}return this._rect}},r.inherits(a,n),t.exports=a},function(t,e,i){function n(t,e){return"string"==typeof t?t.lastIndexOf("%")>=0?parseFloat(t)/100*e:parseFloat(t):t}var r=i(16),o=i(11),a=new o,s=function(){};s.prototype={constructor:s,drawRectText:function(t,e,i){var o=this.style,s=o.text;if(null!=s&&(s+=""),s){t.save();var l,u,h=o.textPosition,c=o.textOffset,d=o.textDistance,f=o.textAlign,p=o.textFont||o.font,g=o.textBaseline,m=o.textVerticalAlign;i=i||r.getBoundingRect(s,p,f,g);var v=this.transform;if(o.textTransform?this.setTransform(t):v&&(a.copy(e),a.applyTransform(v),e=a),h instanceof Array){if(l=e.x+n(h[0],e.width),u=e.y+n(h[1],e.height),f=f||"left",g=g||"top",m){switch(m){case"middle":u-=i.height/2-i.lineHeight/2;break;case"bottom":u-=i.height-i.lineHeight/2;break;default:u+=i.lineHeight/2}g="middle"}}else{var y=r.adjustTextPositionOnRect(h,e,i,d);l=y.x,u=y.y,f=f||y.textAlign,g=g||y.textBaseline}c&&(l+=c[0],u+=c[1]),t.textAlign=f||"left",t.textBaseline=g||"alphabetic";var x=o.textFill,_=o.textStroke;x&&(t.fillStyle=x),_&&(t.strokeStyle=_),t.font=p||"12px sans-serif",t.shadowBlur=o.textShadowBlur,t.shadowColor=o.textShadowColor||"transparent",t.shadowOffsetX=o.textShadowOffsetX,t.shadowOffsetY=o.textShadowOffsetY;var b=s.split("\n");o.textRotation&&(v&&t.translate(v[4],v[5]),t.rotate(o.textRotation),v&&t.translate(-v[4],-v[5]));for(var w=0;w<b.length;w++)_&&t.strokeText(b[w],l,u),x&&t.fillText(b[w],l,u),u+=i.lineHeight;t.restore()}}},t.exports=s},function(t,e,i){function n(t){delete f[t]}/*!
 	 * ZRender, a high performance 2d drawing library.
 	 *
 	 * Copyright (c) 2013, Baidu Inc.
@@ -20,10 +20,10 @@
 	 * LICENSE
 	 * https://github.com/ecomfe/zrender/blob/master/LICENSE.txt
 	 */
-var r=i(64),o=i(10),a=i(1),s=i(140),l=i(143),h=i(144),u=i(152),c=!o.canvasSupported,d={canvas:i(142)},f={},p={};p.version="3.3.0",p.init=function(t,e){var i=new g(r(),t,e);return f[i.id]=i,i},p.dispose=function(t){if(t)t.dispose();else{for(var e in f)f.hasOwnProperty(e)&&f[e].dispose();f={}}return p},p.getInstance=function(t){return f[t]},p.registerPainter=function(t,e){d[t]=e};var g=function(t,e,i){i=i||{},this.dom=e,this.id=t;var n=this,r=new l,f=i.renderer;if(c){if(!d.vml)throw new Error("You need to require 'zrender/vml/vml' to support IE8");f="vml"}else f&&d[f]||(f="canvas");var p=new d[f](e,r,i);this.storage=r,this.painter=p;var g=o.node?null:new u(p.getViewportRoot());this.handler=new s(r,p,g,p.root),this.animation=new h({stage:{update:a.bind(this.flush,this)}}),this.animation.start(),this._needsRefresh;var m=r.delFromMap,v=r.addToMap;r.delFromMap=function(t){var e=r.get(t);m.call(r,t),e&&e.removeSelfFromZr(n)},r.addToMap=function(t){v.call(r,t),t.addSelfToZr(n)}};g.prototype={constructor:g,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(t,e),this._needsRefresh=!0},refreshImmediately:function(){this._needsRefresh=!1,this.painter.refresh(),this._needsRefresh=!1},refresh:function(){this._needsRefresh=!0},flush:function(){this._needsRefresh&&this.refreshImmediately(),this._needsRefreshHover&&this.refreshHoverImmediately()},addHover:function(t,e){this.painter.addHover&&(this.painter.addHover(t,e),this.refreshHover())},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,i){var n=r();return this.painter.pathToImage(n,t,e,i)},setCursorStyle:function(t){this.handler.setCursorStyle(t)},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,n(this.id)}},t.exports=p},function(t,e,i){var n=i(2),r=i(1);t.exports=function(t,e){r.each(e,function(e){e.update="updateView",n.registerAction(e,function(i,n){var r={};return n.eachComponent({mainType:"series",subType:t,query:i},function(t){t[e.method]&&t[e.method](i.name);var n=t.getData();n.each(function(e){var i=n.getName(e);r[i]=t.isSelected(i)||!1})}),{name:i.name,selected:r}})})}},function(t,e,i){"use strict";var n=i(16),r=i(35);t.exports=n.extend({type:"series.__base_bar__",getInitialData:function(t,e){return r(t.data,this,e)},getMarkerPosition:function(t){var e=this.coordinateSystem;if(e){var i=e.dataToPoint(t,!0),n=this.getData(),r=n.getLayout("offset"),o=n.getLayout("size"),a=e.getBaseAxis().isHorizontal()?0:1;return i[a]+=r+o/2,i}return[NaN,NaN]},defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,barMinHeight:0,itemStyle:{normal:{},emphasis:{}}}})},function(t,e,i){function n(t,e,i,n,r){o.setText(t,e,i),t.text=n,"outside"===t.textPosition&&(t.textPosition=r)}var r=i(1),o=i(3),a={};a.setLabel=function(t,e,i,o,a,s,l){var h=i.getModel("label.normal"),u=i.getModel("label.emphasis");h.get("show")?n(t,h,o,r.retrieve(a.getFormattedLabel(s,"normal"),a.getRawValue(s)),l):t.text="",u.get("show")?n(e,u,o,r.retrieve(a.getFormattedLabel(s,"emphasis"),a.getRawValue(s)),l):e.text=""},t.exports=a},function(t,e,i){function n(t){return isNaN(t[0])||isNaN(t[1])}function r(t,e,i,r,o,a,g,m,v,y,x){for(var _=0,b=i,w=0;w<r;w++){var M=e[b];if(b>=o||b<0)break;if(n(M)){if(x){b+=a;continue}break}if(b===i)t[a>0?"moveTo":"lineTo"](M[0],M[1]),c(f,M);else if(v>0){var S=b+a,T=e[S];if(x)for(;T&&n(e[S]);)S+=a,T=e[S];var A=.5,I=e[_],T=e[S];if(!T||n(T))c(p,M);else{n(T)&&!x&&(T=M),s.sub(d,T,I);var C,k;if("x"===y||"y"===y){var L="x"===y?0:1;C=Math.abs(M[L]-I[L]),k=Math.abs(M[L]-T[L])}else C=s.dist(M,I),k=s.dist(M,T);A=k/(k+C),u(p,M,d,-v*(1-A))}l(f,f,m),h(f,f,g),l(p,p,m),h(p,p,g),t.bezierCurveTo(f[0],f[1],p[0],p[1],M[0],M[1]),u(f,M,d,v*A)}else t.lineTo(M[0],M[1]);_=b,b+=a}return w}function o(t,e){var i=[1/0,1/0],n=[-(1/0),-(1/0)];if(e)for(var r=0;r<t.length;r++){var o=t[r];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 a=i(7),s=i(5),l=s.min,h=s.max,u=s.scaleAndAdd,c=s.copy,d=[],f=[],p=[];t.exports={Polyline:a.extend({type:"ec-polyline",shape:{points:[],smooth:0,smoothConstraint:!0,smoothMonotone:null,connectNulls:!1},style:{fill:null,stroke:"#000"},buildPath:function(t,e){var i=e.points,a=0,s=i.length,l=o(i,e.smoothConstraint);if(e.connectNulls){for(;s>0&&n(i[s-1]);s--);for(;a<s&&n(i[a]);a++);}for(;a<s;)a+=r(t,i,a,s,s,1,l.min,l.max,e.smooth,e.smoothMonotone,e.connectNulls)+1}}),Polygon:a.extend({type:"ec-polygon",shape:{points:[],stackedOnPoints:[],smooth:0,stackedOnSmooth:0,smoothConstraint:!0,smoothMonotone:null,connectNulls:!1},buildPath:function(t,e){var i=e.points,a=e.stackedOnPoints,s=0,l=i.length,h=e.smoothMonotone,u=o(i,e.smoothConstraint),c=o(a,e.smoothConstraint);if(e.connectNulls){for(;l>0&&n(i[l-1]);l--);for(;s<l&&n(i[s]);s++);}for(;s<l;){var d=r(t,i,s,l,l,1,u.min,u.max,e.smooth,h,e.connectNulls);r(t,a,s+d-1,d,l,-1,c.min,c.max,e.stackedOnSmooth,h,e.connectNulls),s+=d+1,t.closePath()}}})}},,function(t,e,i){function n(t){if(!t.target||!t.target.draggable){var e=t.offsetX,i=t.offsetY;this.containsPoint&&this.containsPoint(e,i)&&(this._x=e,this._y=i,this._dragging=!0)}}function r(t){if(this._dragging&&(d.stop(t.event),"pinch"!==t.gestureEvent)){if(f.isTaken(this._zr,"globalPan"))return;var e=t.offsetX,i=t.offsetY,n=this._x,r=this._y,o=e-n,a=i-r;this._x=e,this._y=i;var s=this.target;if(s){var l=s.position;l[0]+=o,l[1]+=a,s.dirty()}d.stop(t.event),this.trigger("pan",o,a,n,r,e,i)}}function o(t){this._dragging=!1}function a(t){var e=t.wheelDelta>0?1.1:1/1.1;l.call(this,t,e,t.offsetX,t.offsetY)}function s(t){if(!f.isTaken(this._zr,"globalPan")){var e=t.pinchScale>1?1.1:1/1.1;l.call(this,t,e,t.pinchX,t.pinchY)}}function l(t,e,i,n){if(this.containsPoint&&this.containsPoint(i,n)){d.stop(t.event);var r=this.target,o=this.zoomLimit;if(r){var a=r.position,s=r.scale,l=this.zoom=this.zoom||1;if(l*=e,o){var h=o.min||0,u=o.max||1/0;l=Math.max(Math.min(u,l),h)}var c=l/this.zoom;this.zoom=l,a[0]-=(i-a[0])*(c-1),a[1]-=(n-a[1])*(c-1),s[0]*=c,s[1]*=c,r.dirty()}this.trigger("zoom",e,i,n)}}function h(t,e){this.target=e,this.containsPoint,this.zoomLimit,this.zoom,this._zr=t;var i=c.bind,l=i(n,this),h=i(r,this),d=i(o,this),f=i(a,this),p=i(s,this);u.call(this),this.setContainsPoint=function(t){this.containsPoint=t},this.enable=function(e){this.disable(),null==e&&(e=!0),e!==!0&&"move"!==e&&"pan"!==e||(t.on("mousedown",l),t.on("mousemove",h),t.on("mouseup",d)),e!==!0&&"scale"!==e&&"zoom"!==e||(t.on("mousewheel",f),t.on("pinch",p))},this.disable=function(){t.off("mousedown",l),t.off("mousemove",h),t.off("mouseup",d),t.off("mousewheel",f),t.off("pinch",p)},this.dispose=this.disable,this.isDragging=function(){return this._dragging},this.isPinching=function(){return this._pinching}}var u=i(21),c=i(1),d=i(25),f=i(117);c.mixin(h,u),t.exports=h},function(t,e){t.exports=function(t,e,i,n,r){function o(t,e,i){var n=e.length?e.slice():[e,e];return e[0]>e[1]&&n.reverse(),t<0&&n[0]+t<i[0]&&(t=i[0]-n[0]),t>0&&n[1]+t>i[1]&&(t=i[1]-n[1]),t}return t?("rigid"===n?(t=o(t,e,i),e[0]+=t,e[1]+=t):(t=o(t,e[r],i),e[r]+=t,"push"===n&&e[0]>e[1]&&(e[1-r]=e[r])),e):e}},function(t,e,i){var n=i(1),r={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},axisLine:{show:!0,onZero:!0,lineStyle:{color:"#333",width:1,type:"solid"}},axisTick:{show:!0,inside:!1,length:5,lineStyle:{width:1}},axisLabel:{show:!0,inside:!1,rotate:0,margin:8,textStyle:{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)"]}}},o=n.merge({boundaryGap:!0,splitLine:{show:!1},axisTick:{alignWithLabel:!1,interval:"auto"},axisLabel:{interval:"auto"}},r),a=n.merge({boundaryGap:[0,0],splitNumber:5},r),s=n.defaults({scale:!0,min:"dataMin",max:"dataMax"},a),l=n.defaults({logBase:10},a);l.scale=!0,t.exports={categoryAxis:o,valueAxis:a,timeAxis:s,logAxis:l}},function(t,e,i){"use strict";function n(t){return t.get("stack")||"__ec_stack_"+t.seriesIndex}function r(t){return t.dim+t.index}function o(t,e){var i={};s.each(t,function(t,e){var o=t.getData(),a=t.coordinateSystem,s=a.getBaseAxis(),l=s.getExtent(),u="category"===s.type?s.getBandWidth():Math.abs(l[1]-l[0])/o.count(),c=i[r(s)]||{bandWidth:u,remainedWidth:u,autoWidthCount:0,categoryGap:"20%",gap:"30%",stacks:{}},d=c.stacks;i[r(s)]=c;var f=n(t);d[f]||c.autoWidthCount++,d[f]=d[f]||{width:0,maxWidth:0};var p=h(t.get("barWidth"),u),g=h(t.get("barMaxWidth"),u),m=t.get("barGap"),v=t.get("barCategoryGap");p&&!d[f].width&&(p=Math.min(c.remainedWidth,p),d[f].width=p,c.remainedWidth-=p),g&&(d[f].maxWidth=g),null!=m&&(c.gap=m),null!=v&&(c.categoryGap=v)});var o={};return s.each(i,function(t,e){o[e]={};var i=t.stacks,n=t.bandWidth,r=h(t.categoryGap,n),a=h(t.gap,1),l=t.remainedWidth,u=t.autoWidthCount,c=(l-r)/(u+(u-1)*a);c=Math.max(c,0),s.each(i,function(t,e){var i=t.maxWidth;!t.width&&i&&i<c&&(i=Math.min(i,l),l-=i,t.width=i,u--)}),c=(l-r)/(u+(u-1)*a),c=Math.max(c,0);var d,f=0;s.each(i,function(t,e){t.width||(t.width=c),d=t,f+=t.width*(1+a)}),d&&(f-=d.width*a);var p=-f/2;s.each(i,function(t,i){o[e][i]=o[e][i]||{offset:p,width:t.width},p+=t.width*(1+a)})}),o}function a(t,e,i){var a=o(s.filter(e.getSeriesByType(t),function(t){return!e.isSeriesFiltered(t)&&t.coordinateSystem&&"cartesian2d"===t.coordinateSystem.type})),l={},h={};e.eachSeriesByType(t,function(t){var e=t.getData(),i=t.coordinateSystem,o=i.getBaseAxis(),s=n(t),u=a[r(o)][s],c=u.offset,d=u.width,f=i.getOtherAxis(o),p=t.get("barMinHeight")||0,g=o.onZero?f.toGlobalCoord(f.dataToCoord(0)):f.getGlobalExtent()[0],m=i.dataToPoints(e,!0);l[s]=l[s]||[],h[s]=h[s]||[],e.setLayout({offset:c,size:d}),e.each(f.dim,function(t,i){if(!isNaN(t)){l[s][i]||(l[s][i]={p:g,n:g},h[s][i]={p:g,n:g});var n,r,o,a,u=t>=0?"p":"n",v=m[i],y=l[s][i][u],x=h[s][i][u];f.isHorizontal()?(n=y,r=v[1]+c,o=v[0]-x,a=d,h[s][i][u]+=o,Math.abs(o)<p&&(o=(o<0?-1:1)*p),l[s][i][u]+=o):(n=v[0]+c,r=y,o=d,a=v[1]-x,h[s][i][u]+=a,Math.abs(a)<p&&(a=(a<=0?-1:1)*p),l[s][i][u]+=a),e.setItemLayout(i,{x:n,y:r,width:o,height:a})}},!0)},this)}var s=i(1),l=i(4),h=l.parsePercent;t.exports=a},function(t,e){t.exports={containStroke:function(t,e,i,n,r,o,a){if(0===r)return!1;var s=r,l=0,h=t;if(a>e+s&&a>n+s||a<e-s&&a<n-s||o>t+s&&o>i+s||o<t-s&&o<i-s)return!1;if(t===i)return Math.abs(o-t)<=s/2;l=(e-n)/(t-i),h=(t*n-i*e)/(t-i);var u=l*o-a+h,c=u*u/(l*l+1);return c<=s/2*s/2}}},function(t,e,i){var n=i(18);t.exports={containStroke:function(t,e,i,r,o,a,s,l,h){if(0===s)return!1;var u=s;if(h>e+u&&h>r+u&&h>a+u||h<e-u&&h<r-u&&h<a-u||l>t+u&&l>i+u&&l>o+u||l<t-u&&l<i-u&&l<o-u)return!1;var c=n.quadraticProjectPoint(t,e,i,r,o,a,l,h,null);return c<=u/2}}},function(t,e){t.exports=function(t,e,i,n,r,o){if(o>e&&o>n||o<e&&o<n)return 0;if(n===e)return 0;var a=n<e?1:-1,s=(o-e)/(n-e);1!==s&&0!==s||(a=n<e?.5:-.5);var l=s*(i-t)+t;return l>r?a:0}},function(t,e,i){"use strict";var n=i(1),r=i(37),o=function(t,e,i,n,o,a){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=a||!1,r.call(this,o)};o.prototype={constructor:o},n.inherits(o,r),t.exports=o},function(t,e,i){"use strict";function n(t){return t>s||t<-s}var r=i(20),o=i(5),a=r.identity,s=5e-5,l=function(t){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},h=l.prototype;h.transform=null,h.needLocalTransform=function(){return n(this.rotation)||n(this.position[0])||n(this.position[1])||n(this.scale[0]-1)||n(this.scale[1]-1)},h.updateTransform=function(){var t=this.parent,e=t&&t.transform,i=this.needLocalTransform(),n=this.transform;return i||e?(n=n||r.create(),i?this.getLocalTransform(n):a(n),e&&(i?r.mul(n,t.transform,n):r.copy(n,t.transform)),this.transform=n,this.invTransform=this.invTransform||r.create(),void r.invert(this.invTransform,n)):void(n&&a(n))},h.getLocalTransform=function(t){t=t||[],a(t);var e=this.origin,i=this.scale,n=this.rotation,o=this.position;return e&&(t[4]-=e[0],t[5]-=e[1]),r.scale(t,t,i),n&&r.rotate(t,t,n),e&&(t[4]+=e[0],t[5]+=e[1]),t[4]+=o[0],t[5]+=o[1],t},h.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)},h.restoreTransform=function(t){var e=(this.transform,t.dpr||1);t.setTransform(e,0,0,e,0,0)};var u=[];h.decomposeTransform=function(){if(this.transform){var t=this.parent,e=this.transform;t&&t.transform&&(r.mul(u,t.invTransform,e),e=u);var i=e[0]*e[0]+e[1]*e[1],o=e[2]*e[2]+e[3]*e[3],a=this.position,s=this.scale;n(i-1)&&(i=Math.sqrt(i)),n(o-1)&&(o=Math.sqrt(o)),e[0]<0&&(i=-i),e[3]<0&&(o=-o),a[0]=e[4],a[1]=e[5],s[0]=i,s[1]=o,this.rotation=Math.atan2(-e[1]/o,e[0]/i)}},h.getGlobalScale=function(){var t=this.transform;if(!t)return[1,1];var e=Math.sqrt(t[0]*t[0]+t[1]*t[1]),i=Math.sqrt(t[2]*t[2]+t[3]*t[3]);return t[0]<0&&(e=-e),t[3]<0&&(i=-i),[e,i]},h.transformCoordToLocal=function(t,e){var i=[t,e],n=this.invTransform;return n&&o.applyTransform(i,i,n),i},h.transformCoordToGlobal=function(t,e){var i=[t,e],n=this.transform;return n&&o.applyTransform(i,i,n),i},t.exports=l},function(t,e,i){"use strict";function n(t){r.each(o,function(e){this[e]=r.bind(t[e],t)},this)}var r=i(1),o=["getDom","getZr","getWidth","getHeight","dispatchAction","isDisposed","on","off","getDataURL","getConnectedDataURL","getModel","getOption"];t.exports=n},function(t,e,i){var n=i(1);i(53),i(95),i(96);var r=i(87),o=i(2);o.registerLayout(n.curry(r,"bar")),o.registerVisual(function(t){t.eachSeriesByType("bar",function(t){var e=t.getData();e.setVisual("legendSymbol","roundRect")})}),i(31)},function(t,e,i){t.exports=i(80).extend({type:"series.bar",dependencies:["grid","polar"],brushSelector:"rect"})},function(t,e,i){"use strict";function n(t,e,i,n,r,o,a){var s=new h.Rect({shape:l.extend({},n)});if(o){var u=s.shape,c=r?"height":"width",d={};u[c]=0,d[c]=n[c],h[a?"updateProps":"initProps"](s,{shape:d},o,e)}return s}function r(t,e,i){i.style.text="",h.updateProps(i,{shape:{width:0}},e,t,function(){i.parent&&i.parent.remove(i)})}function o(t,e,i){var n=t.getItemLayout(e),r=s(i,n),o=n.width>0?1:-1,a=n.height>0?1:-1;return{x:n.x+o*r/2,y:n.y+a*r/2,width:n.width-o*r,height:n.height-a*r}}function a(t,e,i,n,r,o,a){var s=e.getItemVisual(i,"color"),c=e.getItemVisual(i,"opacity"),d=n.getModel("itemStyle.normal"),f=n.getModel("itemStyle.emphasis").getBarItemStyle();t.setShape("r",d.get("barBorderRadius")||0),t.useStyle(l.defaults({fill:s,opacity:c},d.getBarItemStyle()));var p=a?r.height>0?"bottom":"top":r.width>0?"left":"right";u.setLabel(t.style,f,n,s,o,i,p),h.setHoverStyle(t,f)}function s(t,e){var i=t.get(c)||0;return Math.min(i,Math.abs(e.width),Math.abs(e.height))}var l=i(1),h=i(3),u=i(81),c=["itemStyle","normal","barBorderWidth"];l.extend(i(11).prototype,i(97));var d=i(2).extendChartView({type:"bar",render:function(t,e,i){var n=t.get("coordinateSystem");return"cartesian2d"===n&&this._renderOnCartesian(t,e,i),this.group},dispose:l.noop,_renderOnCartesian:function(t,e,i){var s=this.group,l=t.getData(),u=this._data,c=t.coordinateSystem,d=c.getBaseAxis(),f=d.isHorizontal(),p=t.isAnimationEnabled()?t:null;l.diff(u).add(function(e){if(l.hasValue(e)){var i=l.getItemModel(e),r=o(l,e,i),h=n(l,e,i,r,f,p);l.setItemGraphicEl(e,h),s.add(h),a(h,l,e,i,r,t,f)}}).update(function(e,i){var r=u.getItemGraphicEl(i);if(!l.hasValue(e))return void s.remove(r);var c=l.getItemModel(e),d=o(l,e,c);r?h.updateProps(r,{shape:d},p,e):r=n(l,e,c,d,f,p,!0),l.setItemGraphicEl(e,r),s.add(r),a(r,l,e,c,d,t,f)}).remove(function(t){var e=u.getItemGraphicEl(t);e&&r(t,p,e)}).execute(),this._data=l},remove:function(t,e){var i=this.group,n=this._data;t.get("animation")?n&&n.eachItemGraphicEl(function(e){r(e.dataIndex,t,e)}):i.removeAll()}});t.exports=d},function(t,e,i){var n=i(30)([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["stroke","barBorderColor"],["lineWidth","barBorderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]);t.exports={getBarItemStyle:function(t){var e=n.call(this,t);if(this.getBorderLineDash){var i=this.getBorderLineDash();i&&(e.lineDash=i)}return e}}},function(t,e,i){function n(t){return"_"+t+"Type"}function r(t,e,i){var n=e.getItemVisual(i,"color"),r=e.getItemVisual(i,t),o=e.getItemVisual(i,t+"Size");if(r&&"none"!==r){f.isArray(o)||(o=[o,o]);var a=h.createSymbol(r,-o[0]/2,-o[1]/2,o[0],o[1],n);return a.name=t,a}}function o(t){var e=new c({name:"line"});return a(e.shape,t),e}function a(t,e){var i=e[0],n=e[1],r=e[2];t.x1=i[0],t.y1=i[1],t.x2=n[0],t.y2=n[1],t.percent=1,r?(t.cpx1=r[0],t.cpy1=r[1]):(t.cpx1=NaN,t.cpy1=NaN)}function s(){var t=this,e=t.childOfName("fromSymbol"),i=t.childOfName("toSymbol"),n=t.childOfName("label");if(e||i||!n.ignore){for(var r=1,o=this.parent;o;)o.scale&&(r/=o.scale[0]),o=o.parent;var a=t.childOfName("line");if(this.__dirty||a.__dirty){var s=a.shape.percent,l=a.pointAt(0),h=a.pointAt(s),c=u.sub([],h,l);if(u.normalize(c,c),e){e.attr("position",l);var d=a.tangentAt(0);e.attr("rotation",Math.PI/2-Math.atan2(d[1],d[0])),e.attr("scale",[r*s,r*s])}if(i){i.attr("position",h);var d=a.tangentAt(1);i.attr("rotation",-Math.PI/2-Math.atan2(d[1],d[0])),i.attr("scale",[r*s,r*s])}if(!n.ignore){n.attr("position",h);var f,p,g,m=5*r;if("end"===n.__position)f=[c[0]*m+h[0],c[1]*m+h[1]],p=c[0]>.8?"left":c[0]<-.8?"right":"center",g=c[1]>.8?"top":c[1]<-.8?"bottom":"middle";else if("middle"===n.__position){var v=s/2,d=a.tangentAt(v),y=[d[1],-d[0]],x=a.pointAt(v);y[1]>0&&(y[0]=-y[0],y[1]=-y[1]),f=[x[0]+y[0]*m,x[1]+y[1]*m],p="center",g="bottom";var _=-Math.atan2(d[1],d[0]);h[0]<l[0]&&(_=Math.PI+_),n.attr("rotation",_)}else f=[-c[0]*m+l[0],-c[1]*m+l[1]],p=c[0]>.8?"right":c[0]<-.8?"left":"center",g=c[1]>.8?"bottom":c[1]<-.8?"top":"middle";n.attr({style:{textVerticalAlign:n.__verticalAlign||g,textAlign:n.__textAlign||p},position:f,scale:[r,r]})}}}}function l(t,e,i){d.Group.call(this),this._createLine(t,e,i)}var h=i(24),u=i(5),c=i(177),d=i(3),f=i(1),p=i(4),g=["fromSymbol","toSymbol"],m=l.prototype;m.beforeUpdate=s,m._createLine=function(t,e,i){var a=t.hostModel,s=t.getItemLayout(e),l=o(s);l.shape.percent=0,d.initProps(l,{shape:{percent:1}},a,e),this.add(l);var h=new d.Text({name:"label"});this.add(h),f.each(g,function(i){var o=r(i,t,e);this.add(o),this[n(i)]=t.getItemVisual(e,i)},this),this._updateCommonStl(t,e,i)},m.updateData=function(t,e,i){var o=t.hostModel,s=this.childOfName("line"),l=t.getItemLayout(e),h={shape:{}};a(h.shape,l),d.updateProps(s,h,o,e),f.each(g,function(i){var o=t.getItemVisual(e,i),a=n(i);if(this[a]!==o){this.remove(this.childOfName(i));var s=r(i,t,e);this.add(s)}this[a]=o},this),this._updateCommonStl(t,e,i)},m._updateCommonStl=function(t,e,i){var n=t.hostModel,r=this.childOfName("line"),o=i&&i.lineStyle,a=i&&i.hoverLineStyle,s=i&&i.labelModel,l=i&&i.hoverLabelModel;if(!i||t.hasItemOption){var h=t.getItemModel(e);o=h.getModel("lineStyle.normal").getLineStyle(),a=h.getModel("lineStyle.emphasis").getLineStyle(),s=h.getModel("label.normal"),l=h.getModel("label.emphasis")}var u=t.getItemVisual(e,"color"),c=f.retrieve(t.getItemVisual(e,"opacity"),o.opacity,1);r.useStyle(f.defaults({strokeNoScale:!0,fill:"none",stroke:u,opacity:c},o)),r.hoverStyle=a,f.each(g,function(t){var e=this.childOfName(t);e&&(e.setColor(u),e.setStyle({opacity:c}))},this);var m,v,y=s.getShallow("show"),x=l.getShallow("show"),_=this.childOfName("label");if(y||x){var b=n.getRawValue(e);v=null==b?v=t.getName(e):isFinite(b)?p.round(b):b,m=u||"#000"}if(y){var w=s.getModel("textStyle");_.setStyle({text:f.retrieve(n.getFormattedLabel(e,"normal",t.dataType),v),textFont:w.getFont(),fill:w.getTextColor()||m}),_.__textAlign=w.get("align"),_.__verticalAlign=w.get("baseline"),_.__position=s.get("position")}else _.setStyle("text","");if(x){var M=l.getModel("textStyle");_.hoverStyle={text:f.retrieve(n.getFormattedLabel(e,"emphasis",t.dataType),v),textFont:M.getFont(),fill:M.getTextColor()||m}}else _.hoverStyle={text:""};_.ignore=!y&&!x,d.setHoverStyle(this)},m.updateLayout=function(t,e){this.setLinePoints(t.getItemLayout(e))},m.setLinePoints=function(t){var e=this.childOfName("line");a(e.shape,t),e.dirty()},f.inherits(l,d.Group),t.exports=l},function(t,e,i){function n(t){return isNaN(t[0])||isNaN(t[1])}function r(t){return!n(t[0])&&!n(t[1])}function o(t){this._ctor=t||s,this.group=new a.Group}var a=i(3),s=i(98),l=o.prototype;l.updateData=function(t){var e=this._lineData,i=this.group,n=this._ctor,o=t.hostModel,a={lineStyle:o.getModel("lineStyle.normal").getLineStyle(),hoverLineStyle:o.getModel("lineStyle.emphasis").getLineStyle(),labelModel:o.getModel("label.normal"),hoverLabelModel:o.getModel("label.emphasis")};t.diff(e).add(function(e){if(r(t.getItemLayout(e))){var o=new n(t,e,a);t.setItemGraphicEl(e,o),i.add(o)}}).update(function(o,s){var l=e.getItemGraphicEl(s);return r(t.getItemLayout(o))?(l?l.updateData(t,o,a):l=new n(t,o,a),t.setItemGraphicEl(o,l),void i.add(l)):void i.remove(l)}).remove(function(t){i.remove(e.getItemGraphicEl(t))}).execute(),this._lineData=t},l.updateLayout=function(){var t=this._lineData;t.eachItemGraphicEl(function(e,i){e.updateLayout(t,i)},this)},l.remove=function(){this.group.removeAll()},t.exports=o},function(t,e,i){var n=i(1),r=i(2),o=r.PRIORITY;i(101),i(102),r.registerVisual(n.curry(i(45),"line","circle","line")),r.registerLayout(n.curry(i(56),"line")),r.registerProcessor(o.PROCESSOR.STATISTIC,n.curry(i(135),"line")),i(31)},function(t,e,i){"use strict";var n=i(35),r=i(16);t.exports=r.extend({type:"series.line",dependencies:["grid","polar"],getInitialData:function(t,e){return n(t.data,this,e)},defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,hoverAnimation:!0,clipOverflow:!0,label:{normal:{position:"top"}},lineStyle:{normal:{width:2,type:"solid"}},step:!1,smooth:!1,smoothMonotone:null,symbol:"emptyCircle",symbolSize:4,symbolRotate:null,showSymbol:!0,showAllSymbol:!1,connectNulls:!1,sampling:"none",animationEasing:"linear",progressive:0,hoverLayerThreshold:1/0}})},function(t,e,i){"use strict";function n(t,e){if(t.length===e.length){for(var i=0;i<t.length;i++){var n=t[i],r=e[i];if(n[0]!==r[0]||n[1]!==r[1])return}return!0}}function r(t){return"number"==typeof t?t:t?.3:0}function o(t){var e=t.getGlobalExtent();if(t.onBand){var i=t.getBandWidth()/2-1,n=e[1]>e[0]?1:-1;e[0]+=n*i,e[1]-=n*i}return e}function a(t){return t>=0?1:-1}function s(t,e){var i=t.getBaseAxis(),n=t.getOtherAxis(i),r=i.onZero?0:n.scale.getExtent()[0],o=n.dim,s="x"===o||"radius"===o?1:0;return e.mapArray([o],function(n,l){for(var h,u=e.stackedOn;u&&a(u.get(o,l))===a(n);){h=u;break}var c=[];return c[s]=e.get(i.dim,l),c[1-s]=h?h.get(o,l,!0):r,t.dataToPoint(c)},!0)}function l(t,e,i){var n=o(t.getAxis("x")),r=o(t.getAxis("y")),a=t.getBaseAxis().isHorizontal(),s=Math.min(n[0],n[1]),l=Math.min(r[0],r[1]),h=Math.max(n[0],n[1])-s,u=Math.max(r[0],r[1])-l,c=i.get("lineStyle.normal.width")||2,d=i.get("clipOverflow")?c/2:Math.max(h,u);a?(l-=d,u+=2*d):(s-=d,h+=2*d);var f=new v.Rect({shape:{x:s,y:l,width:h,height:u}});return e&&(f.shape[a?"width":"height"]=0,v.initProps(f,{shape:{width:h,height:u}},i)),f}function h(t,e,i){var n=t.getAngleAxis(),r=t.getRadiusAxis(),o=r.getExtent(),a=n.getExtent(),s=Math.PI/180,l=new v.Sector({shape:{cx:t.cx,cy:t.cy,r0:o[0],r:o[1],startAngle:-a[0]*s,endAngle:-a[1]*s,clockwise:n.inverse}});return e&&(l.shape.endAngle=-a[0]*s,v.initProps(l,{shape:{endAngle:-a[1]*s}},i)),l}function u(t,e,i){return"polar"===t.type?h(t,e,i):l(t,e,i)}function c(t,e,i){for(var n=e.getBaseAxis(),r="x"===n.dim||"radius"===n.dim?0:1,o=[],a=0;a<t.length-1;a++){var s=t[a+1],l=t[a];o.push(l);var h=[];switch(i){case"end":h[r]=s[r],h[1-r]=l[1-r],o.push(h);break;case"middle":var u=(l[r]+s[r])/2,c=[];h[r]=c[r]=u,h[1-r]=l[1-r],c[1-r]=s[1-r],o.push(h),o.push(c);break;default:h[r]=l[r],h[1-r]=s[1-r],o.push(h)}}return t[a]&&o.push(t[a]),o}function d(t,e){var i=t.getVisual("visualMeta");if(i&&i.length&&t.count()){for(var n,r=i.length-1;r>=0;r--)if(i[r].dimension<2){n=i[r];break}if(n&&"cartesian2d"===e.type){var o=n.dimension,a=t.dimensions[o],s=e.getAxis(a),l=f.map(n.stops,function(t){return{coord:s.toGlobalCoord(s.dataToCoord(t.value)),color:t.color}}),h=l.length,u=n.outerColors.slice();h&&l[0].coord>l[h-1].coord&&(l.reverse(),u.reverse());var c=10,d=l[0].coord-c,p=l[h-1].coord+c,g=p-d;if(g<.001)return"transparent";f.each(l,function(t){t.offset=(t.coord-d)/g}),l.push({offset:h?l[h-1].offset:.5,color:u[1]||"transparent"}),l.unshift({offset:h?l[0].offset:.5,color:u[0]||"transparent"});var m=new v.LinearGradient(0,0,0,0,l,(!0));return m[a]=d,m[a+"2"]=p,m}}}var f=i(1),p=i(39),g=i(50),m=i(103),v=i(3),y=i(6),x=i(82),_=i(28);t.exports=_.extend({type:"line",init:function(){var t=new v.Group,e=new p;this.group.add(e.group),this._symbolDraw=e,this._lineGroup=t},render:function(t,e,i){var o=t.coordinateSystem,a=this.group,l=t.getData(),h=t.getModel("lineStyle.normal"),p=t.getModel("areaStyle.normal"),g=l.mapArray(l.getItemLayout,!0),m="polar"===o.type,v=this._coordSys,y=this._symbolDraw,x=this._polyline,_=this._polygon,b=this._lineGroup,w=t.get("animation"),M=!p.isEmpty(),S=s(o,l),T=t.get("showSymbol"),A=T&&!m&&!t.get("showAllSymbol")&&this._getSymbolIgnoreFunc(l,o),I=this._data;I&&I.eachItemGraphicEl(function(t,e){t.__temp&&(a.remove(t),I.setItemGraphicEl(e,null))}),T||y.remove(),a.add(b);var C=!m&&t.get("step");x&&v.type===o.type&&C===this._step?(M&&!_?_=this._newPolygon(g,S,o,w):_&&!M&&(b.remove(_),_=this._polygon=null),b.setClipPath(u(o,!1,t)),T&&y.updateData(l,A),l.eachItemGraphicEl(function(t){t.stopAnimation(!0)}),n(this._stackedOnPoints,S)&&n(this._points,g)||(w?this._updateAnimation(l,S,o,i,C):(C&&(g=c(g,o,C),S=c(S,o,C)),x.setShape({points:g}),_&&_.setShape({points:g,stackedOnPoints:S})))):(T&&y.updateData(l,A),C&&(g=c(g,o,C),S=c(S,o,C)),x=this._newPolyline(g,o,w),M&&(_=this._newPolygon(g,S,o,w)),b.setClipPath(u(o,!0,t)));var k=d(l,o)||l.getVisual("color");x.useStyle(f.defaults(h.getLineStyle(),{fill:"none",stroke:k,lineJoin:"bevel"}));var L=t.get("smooth");if(L=r(t.get("smooth")),x.setShape({smooth:L,smoothMonotone:t.get("smoothMonotone"),connectNulls:t.get("connectNulls")}),_){var P=l.stackedOn,D=0;if(_.useStyle(f.defaults(p.getAreaStyle(),{fill:k,opacity:.7,lineJoin:"bevel"})),P){var O=P.hostModel;D=r(O.get("smooth"))}_.setShape({smooth:L,stackedOnSmooth:D,smoothMonotone:t.get("smoothMonotone"),connectNulls:t.get("connectNulls")})}this._data=l,this._coordSys=o,this._stackedOnPoints=S,this._points=g,this._step=C},dispose:function(){},highlight:function(t,e,i,n){var r=t.getData(),o=y.queryDataIndex(r,n);if(!(o instanceof Array)&&null!=o&&o>=0){var a=r.getItemGraphicEl(o);if(!a){var s=r.getItemLayout(o);if(!s)return;a=new g(r,o),a.position=s,a.setZ(t.get("zlevel"),t.get("z")),a.ignore=isNaN(s[0])||isNaN(s[1]),a.__temp=!0,r.setItemGraphicEl(o,a),a.stopSymbolAnimation(!0),this.group.add(a)}a.highlight()}else _.prototype.highlight.call(this,t,e,i,n)},downplay:function(t,e,i,n){var r=t.getData(),o=y.queryDataIndex(r,n);if(null!=o&&o>=0){var a=r.getItemGraphicEl(o);a&&(a.__temp?(r.setItemGraphicEl(o,null),this.group.remove(a)):a.downplay())}else _.prototype.downplay.call(this,t,e,i,n)},_newPolyline:function(t){var e=this._polyline;return e&&this._lineGroup.remove(e),e=new x.Polyline({shape:{points:t},silent:!0,z2:10}),this._lineGroup.add(e),this._polyline=e,e},_newPolygon:function(t,e){var i=this._polygon;return i&&this._lineGroup.remove(i),i=new x.Polygon({shape:{points:t,stackedOnPoints:e},silent:!0}),this._lineGroup.add(i),this._polygon=i,i},_getSymbolIgnoreFunc:function(t,e){var i=e.getAxesByScale("ordinal")[0];if(i&&i.isLabelIgnored)return f.bind(i.isLabelIgnored,i)},_updateAnimation:function(t,e,i,n,r){var o=this._polyline,a=this._polygon,s=t.hostModel,l=m(this._data,t,this._stackedOnPoints,e,this._coordSys,i),h=l.current,u=l.stackedOnCurrent,d=l.next,f=l.stackedOnNext;r&&(h=c(l.current,i,r),u=c(l.stackedOnCurrent,i,r),d=c(l.next,i,r),f=c(l.stackedOnNext,i,r)),o.shape.__points=l.current,o.shape.points=h,v.updateProps(o,{shape:{points:d}},s),a&&(a.setShape({points:h,stackedOnPoints:u}),v.updateProps(a,{shape:{points:d,stackedOnPoints:f}},s));for(var p=[],g=l.status,y=0;y<g.length;y++){var x=g[y].cmd;if("="===x){var _=t.getItemGraphicEl(g[y].idx1);_&&p.push({el:_,ptIdx:y})}}o.animators&&o.animators.length&&o.animators[0].during(function(){for(var t=0;t<p.length;t++){var e=p[t].el;e.attr("position",o.shape.__points[p[t].ptIdx])}})},remove:function(t){var e=this.group,i=this._data;this._lineGroup.removeAll(),this._symbolDraw.remove(!0),i&&i.eachItemGraphicEl(function(t,n){t.__temp&&(e.remove(t),i.setItemGraphicEl(n,null))}),this._polyline=this._polygon=this._coordSys=this._points=this._stackedOnPoints=this._data=null}})},function(t,e){function i(t){return t>=0?1:-1}function n(t,e,n){for(var r,o=t.getBaseAxis(),a=t.getOtherAxis(o),s=o.onZero?0:a.scale.getExtent()[0],l=a.dim,h="x"===l||"radius"===l?1:0,u=e.stackedOn,c=e.get(l,n);u&&i(u.get(l,n))===i(c);){r=u;break}var d=[];return d[h]=e.get(o.dim,n),d[1-h]=r?r.get(l,n,!0):s,t.dataToPoint(d)}function r(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.exports=function(t,e,i,o,a,s){for(var l=r(t,e),h=[],u=[],c=[],d=[],f=[],p=[],g=[],m=s.dimensions,v=0;v<l.length;v++){var y=l[v],x=!0;switch(y.cmd){case"=":var _=t.getItemLayout(y.idx),b=e.getItemLayout(y.idx1);(isNaN(_[0])||isNaN(_[1]))&&(_=b.slice()),h.push(_),u.push(b),c.push(i[y.idx]),d.push(o[y.idx1]),g.push(e.getRawIndex(y.idx1));break;case"+":var w=y.idx;h.push(a.dataToPoint([e.get(m[0],w,!0),e.get(m[1],w,!0)])),u.push(e.getItemLayout(w).slice()),c.push(n(a,e,w)),d.push(o[w]),g.push(e.getRawIndex(w));break;case"-":var w=y.idx,M=t.getRawIndex(w);M!==w?(h.push(t.getItemLayout(w)),u.push(s.dataToPoint([t.get(m[0],w,!0),t.get(m[1],w,!0)])),c.push(i[w]),d.push(n(s,t,w)),g.push(M)):x=!1}x&&(f.push(y),p.push(p.length))}p.sort(function(t,e){return g[t]-g[e]});for(var S=[],T=[],A=[],I=[],C=[],v=0;v<p.length;v++){var w=p[v];S[v]=h[w],T[v]=u[w],A[v]=c[w],I[v]=d[w],C[v]=f[w]}return{current:S,next:T,stackedOnCurrent:A,stackedOnNext:I,status:C}}},function(t,e,i){var n=i(1),r=i(2);i(105),i(106),i(79)("pie",[{type:"pieToggleSelect",event:"pieselectchanged",method:"toggleSelected"},{type:"pieSelect",event:"pieselected",method:"select"},{type:"pieUnSelect",event:"pieunselected",method:"unSelect"}]),r.registerVisual(n.curry(i(74),"pie")),r.registerLayout(n.curry(i(108),"pie")),r.registerProcessor(n.curry(i(58),"pie"))},function(t,e,i){"use strict";var n=i(14),r=i(1),o=i(6),a=i(27),s=i(69),l=i(2).extendSeriesModel({type:"series.pie",init:function(t){l.superApply(this,"init",arguments),this.legendDataProvider=function(){return this.getRawData()},this.updateSelectedMap(t.data),this._defaultLabelLine(t);
-},mergeOption:function(t){l.superCall(this,"mergeOption",t),this.updateSelectedMap(this.option.data)},getInitialData:function(t,e){var i=a(["value"],t.data),r=new n(i,this);return r.initData(t.data),r},getDataParams:function(t){var e=this.getData(),i=l.superCall(this,"getDataParams",t),n=e.getSum("value");return i.percent=n?+(e.get("value",t)/n*100).toFixed(2):0,i.$vars.push("percent"),i},_defaultLabelLine:function(t){o.defaultEmphasis(t.labelLine,["show"]);var e=t.labelLine.normal,i=t.labelLine.emphasis;e.show=e.show&&t.label.normal.show,i.show=i.show&&t.label.emphasis.show},defaultOption:{zlevel:0,z:2,legendHoverLink:!0,hoverAnimation:!0,center:["50%","50%"],radius:[0,"75%"],clockwise:!0,startAngle:90,minAngle:0,selectedOffset:10,avoidLabelOverlap:!0,stillShowZeroSum:!0,label:{normal:{rotate:!1,show:!0,position:"outer"},emphasis:{}},labelLine:{normal:{show:!0,length:15,length2:15,smooth:!1,lineStyle:{width:1,type:"solid"}}},itemStyle:{normal:{borderWidth:1},emphasis:{}},animationType:"expansion",animationEasing:"cubicOut",data:[]}});r.mixin(l,s),t.exports=l},function(t,e,i){function n(t,e,i,n){var o=e.getData(),a=this.dataIndex,s=o.getName(a),l=e.get("selectedOffset");n.dispatchAction({type:"pieToggleSelect",from:t,name:s,seriesId:e.id}),o.each(function(t){r(o.getItemGraphicEl(t),o.getItemLayout(t),e.isSelected(o.getName(t)),l,i)})}function r(t,e,i,n,r){var o=(e.startAngle+e.endAngle)/2,a=Math.cos(o),s=Math.sin(o),l=i?n:0,h=[a*l,s*l];r?t.animate().when(200,{position:h}).start("bounceOut"):t.attr("position",h)}function o(t,e){function i(){o.ignore=o.hoverIgnore,a.ignore=a.hoverIgnore}function n(){o.ignore=o.normalIgnore,a.ignore=a.normalIgnore}s.Group.call(this);var r=new s.Sector({z2:2}),o=new s.Polyline,a=new s.Text;this.add(r),this.add(o),this.add(a),this.updateData(t,e,!0),this.on("emphasis",i).on("normal",n).on("mouseover",i).on("mouseout",n)}function a(t,e,i,n,r){var o=n.getModel("textStyle"),a="inside"===r||"inner"===r;return{fill:o.getTextColor()||(a?"#fff":t.getItemVisual(e,"color")),opacity:t.getItemVisual(e,"opacity"),textFont:o.getFont(),text:l.retrieve(t.hostModel.getFormattedLabel(e,i),t.getName(e))}}var s=i(3),l=i(1),h=o.prototype;h.updateData=function(t,e,i){function n(){a.stopAnimation(!0),a.animateTo({shape:{r:c.r+10}},300,"elasticOut")}function o(){a.stopAnimation(!0),a.animateTo({shape:{r:c.r}},300,"elasticOut")}var a=this.childAt(0),h=t.hostModel,u=t.getItemModel(e),c=t.getItemLayout(e),d=l.extend({},c);if(d.label=null,i){a.setShape(d);var f=h.getShallow("animationType");"scale"===f?(a.shape.r=c.r0,s.initProps(a,{shape:{r:c.r}},h,e)):(a.shape.endAngle=c.startAngle,s.updateProps(a,{shape:{endAngle:c.endAngle}},h,e))}else s.updateProps(a,{shape:d},h,e);var p=u.getModel("itemStyle"),g=t.getItemVisual(e,"color");a.useStyle(l.defaults({lineJoin:"bevel",fill:g},p.getModel("normal").getItemStyle())),a.hoverStyle=p.getModel("emphasis").getItemStyle(),r(this,t.getItemLayout(e),u.get("selected"),h.get("selectedOffset"),h.get("animation")),a.off("mouseover").off("mouseout").off("emphasis").off("normal"),u.get("hoverAnimation")&&h.isAnimationEnabled()&&a.on("mouseover",n).on("mouseout",o).on("emphasis",n).on("normal",o),this._updateLabel(t,e),s.setHoverStyle(this)},h._updateLabel=function(t,e){var i=this.childAt(1),n=this.childAt(2),r=t.hostModel,o=t.getItemModel(e),l=t.getItemLayout(e),h=l.label,u=t.getItemVisual(e,"color");s.updateProps(i,{shape:{points:h.linePoints||[[h.x,h.y],[h.x,h.y],[h.x,h.y]]}},r,e),s.updateProps(n,{style:{x:h.x,y:h.y}},r,e),n.attr({style:{textVerticalAlign:h.verticalAlign,textAlign:h.textAlign,textFont:h.font},rotation:h.rotation,origin:[h.x,h.y],z2:10});var c=o.getModel("label.normal"),d=o.getModel("label.emphasis"),f=o.getModel("labelLine.normal"),p=o.getModel("labelLine.emphasis"),g=c.get("position")||d.get("position");n.setStyle(a(t,e,"normal",c,g)),n.ignore=n.normalIgnore=!c.get("show"),n.hoverIgnore=!d.get("show"),i.ignore=i.normalIgnore=!f.get("show"),i.hoverIgnore=!p.get("show"),i.setStyle({stroke:u,opacity:t.getItemVisual(e,"opacity")}),i.setStyle(f.getModel("lineStyle").getLineStyle()),n.hoverStyle=a(t,e,"emphasis",d,g),i.hoverStyle=p.getModel("lineStyle").getLineStyle();var m=f.get("smooth");m&&m===!0&&(m=.4),i.setShape({smooth:m})},l.inherits(o,s.Group);var u=i(28).extend({type:"pie",init:function(){var t=new s.Group;this._sectorGroup=t},render:function(t,e,i,r){if(!r||r.from!==this.uid){var a=t.getData(),s=this._data,h=this.group,u=e.get("animation"),c=!s,d=t.get("animationType"),f=l.curry(n,this.uid,t,u,i),p=t.get("selectedMode");if(a.diff(s).add(function(t){var e=new o(a,t);c&&"scale"!==d&&e.eachChild(function(t){t.stopAnimation(!0)}),p&&e.on("click",f),a.setItemGraphicEl(t,e),h.add(e)}).update(function(t,e){var i=s.getItemGraphicEl(e);i.updateData(a,t),i.off("click"),p&&i.on("click",f),h.add(i),a.setItemGraphicEl(t,i)}).remove(function(t){var e=s.getItemGraphicEl(t);h.remove(e)}).execute(),u&&c&&a.count()>0&&"scale"!==d){var g=a.getItemLayout(0),m=Math.max(i.getWidth(),i.getHeight())/2,v=l.bind(h.removeClipPath,h);h.setClipPath(this._createClipPath(g.cx,g.cy,m,g.startAngle,g.clockwise,v,t))}this._data=a}},dispose:function(){},_createClipPath:function(t,e,i,n,r,o,a){var l=new s.Sector({shape:{cx:t,cy:e,r0:0,r:i,startAngle:n,endAngle:n,clockwise:r}});return s.initProps(l,{shape:{endAngle:n+(r?1:-1)*Math.PI*2}},a,o),l},containPoint:function(t,e){var i=e.getData(),n=i.getItemLayout(0);if(n){var r=t[0]-n.cx,o=t[1]-n.cy,a=Math.sqrt(r*r+o*o);return a<=n.r&&a>=n.r0}}});t.exports=u},function(t,e,i){"use strict";function n(t,e,i,n,r,o,a){function s(e,i,n,r){for(var o=e;o<i;o++)if(t[o].y+=n,o>e&&o+1<i&&t[o+1].y>t[o].y+t[o].height)return void l(o,n/2);l(i-1,n/2)}function l(e,i){for(var n=e;n>=0&&(t[n].y-=i,!(n>0&&t[n].y>t[n-1].y+t[n-1].height));n--);}function h(t,e,i,n,r,o){for(var a=o>0?e?Number.MAX_VALUE:0:e?Number.MAX_VALUE:0,s=0,l=t.length;s<l;s++)if("center"!==t[s].position){var h=Math.abs(t[s].y-n),u=t[s].len,c=t[s].len2,d=h<r+u?Math.sqrt((r+u+c)*(r+u+c)-h*h):Math.abs(t[s].x-i);e&&d>=a&&(d=a-10),!e&&d<=a&&(d=a+10),t[s].x=i+d*o,a=d}}t.sort(function(t,e){return t.y-e.y});for(var u,c=0,d=t.length,f=[],p=[],g=0;g<d;g++)u=t[g].y-c,u<0&&s(g,d,-u,r),c=t[g].y+t[g].height;a-c<0&&l(d-1,c-a);for(var g=0;g<d;g++)t[g].y>=i?p.push(t[g]):f.push(t[g]);h(f,!1,e,i,n,r),h(p,!0,e,i,n,r)}function r(t,e,i,r,o,a){for(var s=[],l=[],h=0;h<t.length;h++)t[h].x<e?s.push(t[h]):l.push(t[h]);n(l,e,i,r,1,o,a),n(s,e,i,r,-1,o,a);for(var h=0;h<t.length;h++){var u=t[h].linePoints;if(u){var c=u[1][0]-u[2][0];t[h].x<e?u[2][0]=t[h].x+3:u[2][0]=t[h].x-3,u[1][1]=u[2][1]=t[h].y,u[1][0]=u[2][0]+c}}}var o=i(17);t.exports=function(t,e,i,n){var a,s,l=t.getData(),h=[],u=!1;l.each(function(i){var n,r,c,d,f=l.getItemLayout(i),p=l.getItemModel(i),g=p.getModel("label.normal"),m=g.get("position")||p.get("label.emphasis.position"),v=p.getModel("labelLine.normal"),y=v.get("length"),x=v.get("length2"),_=(f.startAngle+f.endAngle)/2,b=Math.cos(_),w=Math.sin(_);a=f.cx,s=f.cy;var M="inside"===m||"inner"===m;if("center"===m)n=f.cx,r=f.cy,d="center";else{var S=(M?(f.r+f.r0)/2*b:f.r*b)+a,T=(M?(f.r+f.r0)/2*w:f.r*w)+s;if(n=S+3*b,r=T+3*w,!M){var A=S+b*(y+e-f.r),I=T+w*(y+e-f.r),C=A+(b<0?-1:1)*x,k=I;n=C+(b<0?-5:5),r=k,c=[[S,T],[A,I],[C,k]]}d=M?"center":b>0?"left":"right"}var L=g.getModel("textStyle").getFont(),P=g.get("rotate")?b<0?-_+Math.PI:-_:0,D=t.getFormattedLabel(i,"normal")||l.getName(i),O=o.getBoundingRect(D,L,d,"top");u=!!P,f.label={x:n,y:r,position:m,height:O.height,len:y,len2:x,linePoints:c,textAlign:d,verticalAlign:"middle",font:L,rotation:P},M||h.push(f.label)}),!u&&t.get("avoidLabelOverlap")&&r(h,a,s,e,i,n)}},function(t,e,i){var n=i(4),r=n.parsePercent,o=i(107),a=i(1),s=2*Math.PI,l=Math.PI/180;t.exports=function(t,e,i,h){e.eachSeriesByType(t,function(t){var e=t.get("center"),h=t.get("radius");a.isArray(h)||(h=[0,h]),a.isArray(e)||(e=[e,e]);var u=i.getWidth(),c=i.getHeight(),d=Math.min(u,c),f=r(e[0],u),p=r(e[1],c),g=r(h[0],d/2),m=r(h[1],d/2),v=t.getData(),y=-t.get("startAngle")*l,x=t.get("minAngle")*l,_=v.getSum("value"),b=Math.PI/(_||v.count())*2,w=t.get("clockwise"),M=t.get("roseType"),S=t.get("stillShowZeroSum"),T=v.getDataExtent("value");T[0]=0;var A=s,I=0,C=y,k=w?1:-1;if(v.each("value",function(t,e){var i;if(isNaN(t))return void v.setItemLayout(e,{angle:NaN,startAngle:NaN,endAngle:NaN,clockwise:w,cx:f,cy:p,r0:g,r:M?NaN:m});i="area"!==M?0===_&&S?b:t*b:s/(v.count()||1),i<x?(i=x,A-=x):I+=t;var r=C+k*i;v.setItemLayout(e,{angle:i,startAngle:C,endAngle:r,clockwise:w,cx:f,cy:p,r0:g,r:M?n.linearMap(t,T,[g,m]):m}),C=r},!0),A<s)if(A<=.001){var L=s/v.count();v.each(function(t){var e=v.getItemLayout(t);e.startAngle=y+k*t*L,e.endAngle=y+k*(t+1)*L})}else b=A/I,C=y,v.each("value",function(t,e){var i=v.getItemLayout(e),n=i.angle===x?x:t*b;i.startAngle=C,i.endAngle=C+k*n,C+=k*n});o(t,m,u,c)})}},function(t,e,i){"use strict";i(55),i(110)},function(t,e,i){function n(t,e){function i(t,e){var i=n.getAxis(t);return i.toGlobalCoord(i.dataToCoord(0))}var n=t.coordinateSystem,r=e.axis,o={},a=r.position,s=r.onZero?"onZero":a,l=r.dim,h=n.getRect(),u=[h.x,h.x+h.width,h.y,h.y+h.height],c=e.get("offset")||0,d={x:{top:u[2]-c,bottom:u[3]+c},y:{left:u[0]-c,right:u[1]+c}};d.x.onZero=Math.max(Math.min(i("y"),d.x.bottom),d.x.top),d.y.onZero=Math.max(Math.min(i("x"),d.y.right),d.y.left),o.position=["y"===l?d.y[s]:u[0],"x"===l?d.x[s]:u[3]],o.rotation=Math.PI/2*("x"===l?0:1);var f={top:-1,bottom:1,left:-1,right:1};o.labelDirection=o.tickDirection=o.nameDirection=f[a],r.onZero&&(o.labelOffset=d[l][a]-d[l].onZero),e.getModel("axisTick").get("inside")&&(o.tickDirection=-o.tickDirection),e.getModel("axisLabel").get("inside")&&(o.labelDirection=-o.labelDirection);var p=e.getModel("axisLabel").get("rotate");return o.labelRotation="top"===s?-p:p,o.labelInterval=r.getLabelInterval(),o.z2=1,o}var r=i(1),o=i(3),a=i(51),s=a.ifIgnoreOnTick,l=a.getInterval,h=["axisLine","axisLabel","axisTick","axisName"],u=["splitArea","splitLine"],c=i(2).extendComponentView({type:"axis",render:function(t,e){this.group.removeAll();var i=this._axisGroup;if(this._axisGroup=new o.Group,this.group.add(this._axisGroup),t.get("show")){var s=t.getCoordSysModel(),l=n(s,t),c=new a(t,l);r.each(h,c.add,c),this._axisGroup.add(c.getGroup()),r.each(u,function(e){t.get(e+".show")&&this["_"+e](t,s,l.labelInterval)},this),o.groupTransition(i,this._axisGroup,t)}},_splitLine:function(t,e,i){var n=t.axis;if(!n.isBlank()){var a=t.getModel("splitLine"),h=a.getModel("lineStyle"),u=h.get("color"),c=l(a,i);u=r.isArray(u)?u:[u];for(var d=e.coordinateSystem.getRect(),f=n.isHorizontal(),p=0,g=n.getTicksCoords(),m=n.scale.getTicks(),v=[],y=[],x=h.getLineStyle(),_=0;_<g.length;_++)if(!s(n,_,c)){var b=n.toGlobalCoord(g[_]);f?(v[0]=b,v[1]=d.y,y[0]=b,y[1]=d.y+d.height):(v[0]=d.x,v[1]=b,y[0]=d.x+d.width,y[1]=b);var w=p++%u.length;this._axisGroup.add(new o.Line(o.subPixelOptimizeLine({anid:"line_"+m[_],shape:{x1:v[0],y1:v[1],x2:y[0],y2:y[1]},style:r.defaults({stroke:u[w]},x),silent:!0})))}}},_splitArea:function(t,e,i){var n=t.axis;if(!n.isBlank()){var a=t.getModel("splitArea"),h=a.getModel("areaStyle"),u=h.get("color"),c=e.coordinateSystem.getRect(),d=n.getTicksCoords(),f=n.scale.getTicks(),p=n.toGlobalCoord(d[0]),g=n.toGlobalCoord(d[0]),m=0,v=l(a,i),y=h.getAreaStyle();u=r.isArray(u)?u:[u];for(var x=1;x<d.length;x++)if(!s(n,x,v)){var _,b,w,M,S=n.toGlobalCoord(d[x]);n.isHorizontal()?(_=p,b=c.y,w=S-_,M=c.height):(_=c.x,b=g,w=c.width,M=S-b);var T=m++%u.length;this._axisGroup.add(new o.Rect({anid:"area_"+f[x],shape:{x:_,y:b,width:w,height:M},style:r.defaults({fill:u[T]},y),silent:!0})),p=_+w,g=b+M}}}});c.extend({type:"xAxis"}),c.extend({type:"yAxis"})},function(t,e,i){var n=i(1),r=i(68),o=i(2);o.registerAction("dataZoom",function(t,e){var i=r.createLinkedNodesFinder(n.bind(e.eachComponent,e,"dataZoom"),r.eachAxisDim,function(t,e){return t.get(e.axisIndex)}),o=[];e.eachComponent({mainType:"dataZoom",query:t},function(t,e){o.push.apply(o,i(t).nodes)}),n.each(o,function(e,i){e.setRawRange({start:t.start,end:t.end,startValue:t.startValue,endValue:t.endValue})})})},function(t,e,i){function n(t,e,i){i.getAxisProxy(t.name,e).reset(i)}function r(t,e,i){i.getAxisProxy(t.name,e).filterData(i)}var o=i(2);o.registerProcessor(function(t,e){t.eachComponent("dataZoom",function(t){t.eachTargetAxis(n),t.eachTargetAxis(r)}),t.eachComponent("dataZoom",function(t){var e=t.findRepresentativeAxisProxy(),i=e.getDataPercentWindow(),n=e.getDataValueWindow();t.setRawRange({start:i[0],end:i[1],startValue:n[0],endValue:n[1]})})})},function(t,e,i){function n(t){var e=t[a];return e||(e=t[a]=[{}]),e}var r=i(1),o=r.each,a="\0_ec_hist_store",s={push:function(t,e){var i=n(t);o(e,function(e,n){for(var r=i.length-1;r>=0;r--){var o=i[r];if(o[n])break}if(r<0){var a=t.queryComponents({mainType:"dataZoom",subType:"select",id:n})[0];if(a){var s=a.getPercentRange();i[0][n]={dataZoomId:n,start:s[0],end:s[1]}}}}),i.push(e)},pop:function(t){var e=n(t),i=e[e.length-1];e.length>1&&e.pop();var r={};return o(i,function(t,i){for(var n=e.length-1;n>=0;n--){var t=e[n][i];if(t){r[i]=t;break}}}),r},clear:function(t){t[a]=null},count:function(t){return n(t).length}};t.exports=s},function(t,e,i){i(13).registerSubTypeDefaulter("dataZoom",function(t){return"slider"})},function(t,e,i){function n(t){R.call(this),this._zr=t,this.group=new F.Group,this._brushType,this._brushOption,this._panels,this._track=[],this._dragging,this._covers=[],this._creatingCover,this._creatingPanel,this._enableGlobalPan,this._uid="brushController_"+it++,this._handlers={},Z(nt,function(t,e){this._handlers[e]=B.bind(t,this)},this)}function r(t,e){var i=t._zr;t._enableGlobalPan||G.take(i,K,t._uid),Z(t._handlers,function(t,e){i.on(e,t)}),t._brushType=e.brushType,t._brushOption=B.merge(B.clone(et),e,!0)}function o(t){var e=t._zr;G.release(e,K,t._uid),Z(t._handlers,function(t,i){e.off(i,t)}),t._brushType=t._brushOption=null}function a(t,e){var i=rt[e.brushType].createCover(t,e);return h(i),i.__brushOption=e,t.group.add(i),i}function s(t,e){var i=c(e);return i.endCreating&&(i.endCreating(t,e),h(e)),e}function l(t,e){var i=e.__brushOption;c(e).updateCoverShape(t,e,i.range,i)}function h(t){t.traverse(function(t){t.z=Y,t.z2=Y})}function u(t,e){c(e).updateCommon(t,e),l(t,e)}function c(t){return rt[t.__brushOption.brushType]}function d(t,e,i){var n=t._panels;if(!n)return!0;var r;return Z(n,function(t){t.contain(e,i)&&(r=t)}),r}function f(t,e){var i=t._panels;if(!i)return!0;var n=e.__brushOption.panelId;return null==n||i[n]}function p(t){var e=t._covers,i=e.length;return Z(e,function(e){t.group.remove(e)},t),e.length=0,!!i}function g(t,e){var i=q(t._covers,function(t){var e=t.__brushOption,i=B.clone(e.range);return{brushType:e.brushType,panelId:e.panelId,range:i}});t.trigger("brush",i,{isEnd:!!e.isEnd,removeOnClick:!!e.removeOnClick})}function m(t){var e=t._track;if(!e.length)return!1;var i=e[e.length-1],n=e[0],r=i[0]-n[0],o=i[1]-n[1],a=X(r*r+o*o,.5);return a>$}function v(t){var e=t.length-1;return e<0&&(e=0),[t[0],t[e]]}function y(t,e,i,n){var r=new F.Group;return r.add(new F.Rect({name:"main",style:w(i),silent:!0,draggable:!0,cursor:"move",drift:W(t,e,r,"nswe"),ondragend:W(g,e,{isEnd:!0})})),Z(n,function(i){r.add(new F.Rect({name:i,style:{opacity:0},draggable:!0,silent:!0,invisible:!0,drift:W(t,e,r,i),ondragend:W(g,e,{isEnd:!0})}))}),r}function x(t,e,i,n){var r=n.brushStyle.lineWidth||0,o=U(r,Q),a=i[0][0],s=i[1][0],l=a-r/2,h=s-r/2,u=i[0][1],c=i[1][1],d=u-o+r/2,f=c-o+r/2,p=u-a,g=c-s,m=p+r,v=g+r;b(t,e,"main",a,s,p,g),n.transformable&&(b(t,e,"w",l,h,o,v),b(t,e,"e",d,h,o,v),b(t,e,"n",l,h,m,o),b(t,e,"s",l,f,m,o),b(t,e,"nw",l,h,o,o),b(t,e,"ne",d,h,o,o),b(t,e,"sw",l,f,o,o),b(t,e,"se",d,f,o,o))}function _(t,e){var i=e.__brushOption,n=i.transformable,r=e.childAt(0);r.useStyle(w(i)),r.attr({silent:!n,cursor:n?"move":"default"}),Z(["w","e","n","s","se","sw","ne","nw"],function(i){var r=e.childOfName(i),o=T(t,i);r&&r.attr({silent:!n,invisible:!n,cursor:n?tt[o]+"-resize":null})})}function b(t,e,i,n,r,o,a){var s=e.childOfName(i);s&&s.setShape(L(k(t,e,[[n,r],[n+o,r+a]])))}function w(t){return B.defaults({strokeNoScale:!0},t.brushStyle)}function M(t,e,i,n){var r=[j(t,i),j(e,n)],o=[U(t,i),U(e,n)];return[[r[0],o[0]],[r[1],o[1]]]}function S(t){return F.getTransform(t.group)}function T(t,e){if(e.length>1){e=e.split("");var i=[T(t,e[0]),T(t,e[1])];return("e"===i[0]||"w"===i[0])&&i.reverse(),i.join("")}var n={w:"left",e:"right",n:"top",s:"bottom"},r={left:"w",right:"e",top:"n",bottom:"s"},i=F.transformDirection(n[e],S(t));return r[i]}function A(t,e,i,n,r,o,a,s){var l=n.__brushOption,h=t(l.range),c=C(i,o,a);Z(r.split(""),function(t){var e=J[t];h[e[0]][e[1]]+=c[e[0]]}),l.range=e(M(h[0][0],h[1][0],h[0][1],h[1][1])),u(i,n),g(i,{isEnd:!1})}function I(t,e,i,n,r){var o=e.__brushOption.range,a=C(t,i,n);Z(o,function(t){t[0]+=a[0],t[1]+=a[1]}),u(t,e),g(t,{isEnd:!1})}function C(t,e,i){var n=t.group,r=n.transformCoordToLocal(e,i),o=n.transformCoordToLocal(0,0);return[r[0]-o[0],r[1]-o[1]]}function k(t,e,i){var n=f(t,e);if(n===!0)return B.clone(i);var r=n.getBoundingRect();return B.map(i,function(t){var e=t[0];e=U(e,r.x),e=j(e,r.x+r.width);var i=t[1];return i=U(i,r.y),i=j(i,r.y+r.height),[e,i]})}function L(t){var e=j(t[0][0],t[1][0]),i=j(t[0][1],t[1][1]),n=U(t[0][0],t[1][0]),r=U(t[0][1],t[1][1]);return{x:e,y:i,width:n-e,height:r-i}}function P(t,e){var i=e.offsetX,n=e.offsetY,r=t._zr;if(t._brushType){for(var o,a=t._panels,s=t._covers,l=0;l<s.length;l++)if(rt[s[l].__brushOption.brushType].contain(s[l],i,n)){o=!0;break}o||(a?Z(a,function(t){t.contain(i,n)&&r.setCursorStyle("crosshair")}):r.setCursorStyle("crosshair"))}}function D(t){var e=t.event;e.preventDefault&&e.preventDefault()}function O(t,e,i){return t.childOfName("main").contain(e,i)}function z(t,e,i){var n,r=e.offsetX,o=e.offsetY,h=t._creatingCover,u=t._creatingPanel,c=t._brushOption;if(t._track.push(t.group.transformCoordToLocal(r,o)),m(t)||h){if(u&&!h){"single"===c.brushMode&&p(t);var f=B.clone(c);f.panelId=u===!0?null:u.__brushPanelId,h=t._creatingCover=a(t,f),t._covers.push(h)}if(h){var g=rt[t._brushType],v=h.__brushOption;v.range=g.getCreatingRange(k(t,h,t._track)),i&&(s(t,h),g.updateCommon(t,h)),l(t,h),n={isEnd:i}}}else i&&"single"===c.brushMode&&c.removeOnClick&&d(t,r,o)&&p(t)&&(n={isEnd:i,removeOnClick:!0});return n}function E(t){if(this._dragging){D(t);var e=z(this,t,!0);this._dragging=!1,this._track=[],this._creatingCover=null,e&&g(this,e)}}function N(t){return{createCover:function(e,i){return y(W(A,function(e){var i=[e,[0,100]];return t&&i.reverse(),i},function(e){return e[t]}),e,i,[["w","e"],["n","s"]][t])},getCreatingRange:function(e){var i=v(e),n=j(i[0][t],i[1][t]),r=U(i[0][t],i[1][t]);return[n,r]},updateCoverShape:function(e,i,n,r){var o,a=r.brushStyle.width;if(null==a){var s=f(e,i),l=0;if(s!==!0){var h=s.getBoundingRect();a=t?h.width:h.height,l=t?h.x:h.y}o=[l,l+(a||0)]}else o=[-a/2,a/2];var u=[n,o];t&&u.reverse(),x(e,i,u,r)},updateCommon:_,contain:O}}var R=i(21),B=i(1),V=i(9),F=i(3),G=i(117),H=i(43),W=B.curry,Z=B.each,q=B.map,j=Math.min,U=Math.max,X=Math.pow,Y=1e4,$=6,Q=6,K="globalPan",J={w:[0,0],e:[0,1],n:[1,0],s:[1,1]},tt={w:"ew",e:"ew",n:"ns",s:"ns",ne:"nesw",sw:"nesw",nw:"nwse",se:"nwse"},et={brushStyle:{lineWidth:2,stroke:"rgba(0,0,0,0.3)",fill:"rgba(0,0,0,0.1)"},transformable:!0,brushMode:"single",removeOnClick:!1},it=0;n.prototype={constructor:n,enableBrush:function(t){return this._brushType&&o(this),t.brushType&&r(this,t),this},setPanels:function(t){var e=this._panels||{},i=this._panels=t&&t.length&&{},n=this.group;return i&&Z(t,function(t){var r=t.panelId,o=e[r];o||(o=new F.Rect({silent:!0,invisible:!0}),n.add(o));var a=t.rect;a instanceof V||(a=V.create(a)),o.attr("shape",a.plain()),o.__brushPanelId=r,i[r]=o,e[r]=null}),Z(e,function(t){t&&n.remove(t)}),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},eachCover:function(t,e){Z(this._covers,t,e)},updateCovers:function(t){function e(t,e){return(null!=t.id?t.id:o+e)+"-"+t.brushType}function i(t,i){return e(t.__brushOption,i)}function n(e,i){var n=t[e];if(null!=i&&l[i]===d)h[e]=l[i];else{var r=h[e]=null!=i?(l[i].__brushOption=n,l[i]):s(c,a(c,n));u(c,r)}}function r(t){l[t]!==d&&c.group.remove(l[t])}t=B.map(t,function(t){return B.merge(B.clone(et),t,!0)});var o="\0-brush-index-",l=this._covers,h=this._covers=[],c=this,d=this._creatingCover;return new H(l,t,i,e).add(n).update(n).remove(r).execute(),this},unmount:function(){return this.enableBrush(!1),p(this),this._zr.remove(this.group),this},dispose:function(){this.unmount(),this.off()}},B.mixin(n,R);var nt={mousedown:function(t){if(this._dragging)E.call(this,t);else if(!t.target||!t.target.draggable){D(t);var e=t.offsetX,i=t.offsetY;this._creatingCover=null;var n=this._creatingPanel=d(this,e,i);n&&(this._dragging=!0,this._track=[this.group.transformCoordToLocal(e,i)])}},mousemove:function(t){if(P(this,t),this._dragging){D(t);var e=z(this,t,!1);e&&g(this,e)}},mouseup:E},rt={lineX:N(0),lineY:N(1),rect:{createCover:function(t,e){return y(W(A,function(t){return t},function(t){return t}),t,e,["w","e","n","s","se","sw","ne","nw"])},getCreatingRange:function(t){var e=v(t);return M(e[1][0],e[1][1],e[0][0],e[0][1])},updateCoverShape:function(t,e,i,n){x(t,e,i,n)},updateCommon:_,contain:O},polygon:{createCover:function(t,e){var i=new F.Group;return i.add(new F.Polyline({name:"main",style:w(e),silent:!0})),i},getCreatingRange:function(t){return t},endCreating:function(t,e){e.remove(e.childAt(0)),e.add(new F.Polygon({name:"main",draggable:!0,drift:W(I,t,e),ondragend:W(g,t,{isEnd:!0})}))},updateCoverShape:function(t,e,i,n){e.childAt(0).setShape({points:k(t,e,i)})},updateCommon:_,contain:O}};t.exports=n},function(t,e,i){function n(t){return t[0]>t[1]&&t.reverse(),t}function r(t,e){for(var i=!0,n=0;n<u.length;n++){var r=u[n]+"Index";if(t[r]>=0){i=!1;for(var o=0;o<e.length;o++)if(e[o][r]===t[r])return e[o]}}return i}function o(t,e,i,r){var o=i.coordSys.getAxis(t);return n(a.map([0,1],function(t){return e?o.coordToData(o.toLocalCoord(r[t])):o.toGlobalCoord(o.dataToCoord(r[t]))}))}var a=i(1),s=i(3),l=a.each,h={},u=["geo","xAxis","yAxis"],c="--",d=["dataToPoint","pointToData"];h.parseOutputRanges=function(t,e,i,n){l(t,function(t,i){var o=t.panelId;if(o){o=o.split(c),t[o[0]+"Index"]=+o[1];var a=r(t,e);t.coordRange=f[t.brushType](1,a,t.range),n&&(n[i]=a)}})},h.parseInputRanges=function(t,e){l(t.areas,function(e){var i=r(e,t.coordInfoList);e.range=e.range||[],i&&i!==!0&&(e.range=f[e.brushType](0,i,e.coordRange),e.panelId=i.panelId)})},h.makePanelOpts=function(t){var e=[];return l(t,function(t){var i,n=t.coordSys;t.geoIndex>=0?(i=n.getBoundingRect().clone(),i.applyTransform(s.getTransform(n))):i=n.grid.getRect().clone(),e.push({panelId:t.panelId,rect:i})}),e},h.makeCoordInfoList=function(t,e){var i=[];return l(u,function(n){var r=t[n+"Index"];null!=r&&"none"!==r&&("all"===r||a.isArray(r)||(r=[r]),e.eachComponent({mainType:n},function(t,e){if(!("all"!==r&&a.indexOf(r,e)<0)){var o,s;"xAxis"===n||"yAxis"===n?o=t.axis.grid:s=t.coordinateSystem;for(var l,h=0,u=i.length;h<u;h++){var d=i[h];if("yAxis"===n&&!d.yAxis&&d.xAxis){var f=o.getCartesian(d.xAxisIndex,e);if(f){s=f,l=d;break}}}!l&&i.push(l={}),l[n]=t,l[n+"Index"]=e,l.panelId=n+c+e,l.coordSys=s||o.getCartesian(l.xAxisIndex,l.yAxisIndex),l.coordSys?i[n+"Has"]=!0:i.pop()}}))}),i},h.controlSeries=function(t,e,i){var n=r(t,e.coordInfoList);return n===!0||n&&n.coordSys===i.coordinateSystem};var f={lineX:a.curry(o,"x"),lineY:a.curry(o,"y"),rect:function(t,e,i){var r=e.coordSys,o=r[d[t]]([i[0][0],i[1][0]]),a=r[d[t]]([i[0][1],i[1][1]]);return[n([o[0],a[0]]),n([o[1],a[1]])]},polygon:function(t,e,i){var n=e.coordSys;return a.map(i,n[d[t]],n)}};t.exports=h},function(t,e,i){function n(t){return t[r]||(t[r]={})}var r="\0_ec_interaction_mutex",o={take:function(t,e,i){var r=n(t);r[e]=i},release:function(t,e,i){var r=n(t),o=r[e];o===i&&(r[e]=null)},isTaken:function(t,e){return!!n(t)[e]}};i(2).registerAction({type:"takeGlobalCursor",event:"globalCursorTaken",update:"update"},function(){}),t.exports=o},function(t,e,i){function n(t,e,i){r.positionElement(t,e.getBoxLayoutParams(),{width:i.getWidth(),height:i.getHeight()},e.get("padding"))}var r=i(12),o=i(8),a=i(3);t.exports={layout:function(t,e,i){var o=r.getLayoutRect(e.getBoxLayoutParams(),{width:i.getWidth(),height:i.getHeight()},e.get("padding"));r.box(e.get("orient"),t,e.get("itemGap"),o.width,o.height),n(t,e,i)},addBackground:function(t,e){var i=o.normalizeCssArray(e.get("padding")),n=t.getBoundingRect(),r=e.getItemStyle(["color","opacity"]);r.fill=e.get("backgroundColor");var s=new a.Rect({shape:{x:n.x-i[3],y:n.y-i[0],width:n.width+i[1]+i[3],height:n.height+i[0]+i[2]},style:r,silent:!0,z2:-1});a.subPixelOptimizeRect(s),t.add(s)}}},function(t,e,i){var n=i(1),r=i(42),o=i(123),a=function(t,e,i,n,o){r.call(this,t,e,i),this.type=n||"value",this.position=o||"bottom"};a.prototype={constructor:a,index:0,onZero:!1,model:null,isHorizontal:function(){var t=this.position;return"top"===t||"bottom"===t},getGlobalExtent:function(){var t=this.getExtent();return t[0]=this.toGlobalCoord(t[0]),t[1]=this.toGlobalCoord(t[1]),t},getLabelInterval:function(){var t=this._labelInterval;return t||(t=this._labelInterval=o(this)),t},isLabelIgnored:function(t){if("category"===this.type){var e=this.getLabelInterval();return"function"==typeof e&&!e(t,this.scale.getLabel(t))||t%(e+1)}},toLocalCoord:null,toGlobalCoord:null},n.inherits(a,r),t.exports=a},function(t,e,i){"use strict";function n(t){return this._axes[t]}var r=i(1),o=function(t){this._axes={},this._dimList=[],this.name=t||""};o.prototype={constructor:o,type:"cartesian",getAxis:function(t){return this._axes[t]},getAxes:function(){return r.map(this._dimList,n,this)},getAxesByScale:function(t){return t=t.toLowerCase(),r.filter(this.getAxes(),function(e){return e.scale.type===t})},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?[]:{},r=0;r<i.length;r++){var o=i[r],a=this._axes[o];n[o]=a[e](t[o])}return n}},t.exports=o},function(t,e,i){"use strict";function n(t){o.call(this,t)}var r=i(1),o=i(120);n.prototype={constructor:n,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])},dataToPoints:function(t,e){return t.mapArray(["x","y"],function(t,e){return this.dataToPoint([t,e])},e,this)},dataToPoint:function(t,e){var i=this.getAxis("x"),n=this.getAxis("y");return[i.toGlobalCoord(i.dataToCoord(t[0],e)),n.toGlobalCoord(n.dataToCoord(t[1],e))]},pointToData:function(t,e){var i=this.getAxis("x"),n=this.getAxis("y");return[i.coordToData(i.toLocalCoord(t[0]),e),n.coordToData(n.toLocalCoord(t[1]),e)]},getOtherAxis:function(t){return this.getAxis("x"===t.dim?"y":"x")}},r.inherits(n,o),t.exports=n},function(t,e,i){"use strict";i(55);var n=i(13);t.exports=n.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"}})},function(t,e,i){"use strict";var n=i(1),r=i(22);t.exports=function(t){var e=t.model,i=e.getModel("axisLabel"),o=i.get("interval");return"category"!==t.type||"auto"!==o?"auto"===o?0:o:r.getAxisLabelInterval(n.map(t.scale.getTicks(),t.dataToCoord,t),e.getFormattedLabels(),i.getModel("textStyle").getFont(),t.isHorizontal())}},function(t,e,i){var n=i(3),r=i(1),o=Math.PI;t.exports=function(t,e){e=e||{},r.defaults(e,{text:"loading",color:"#c23531",textColor:"#000",maskColor:"rgba(255, 255, 255, 0.8)",zlevel:0});var i=new n.Rect({style:{fill:e.maskColor},zlevel:e.zlevel,z:1e4}),a=new n.Arc({shape:{startAngle:-o/2,endAngle:-o/2+.1,r:10},style:{stroke:e.color,lineCap:"round",lineWidth:5},zlevel:e.zlevel,z:10001}),s=new n.Rect({style:{fill:"none",text:e.text,textPosition:"right",textDistance:10,textFill:e.textColor},zlevel:e.zlevel,z:10001});a.animateShape(!0).when(1e3,{endAngle:3*o/2}).start("circularInOut"),a.animateShape(!0).when(1e3,{startAngle:3*o/2}).delay(300).start("circularInOut");var l=new n.Group;return l.add(a),l.add(s),l.add(i),l.resize=function(){var e=t.getWidth()/2,n=t.getHeight()/2;a.setShape({cx:e,cy:n});var r=a.shape.r;s.setShape({x:e-r,y:n-r,width:2*r,height:2*r}),i.setShape({x:0,y:0,width:t.getWidth(),height:t.getHeight()})},l.resize(),l}},function(t,e,i){function n(t,e){u.each(e,function(e,i){x.hasClass(i)||("object"==typeof e?t[i]=t[i]?u.merge(t[i],e,!1):u.clone(e):null==t[i]&&(t[i]=e))})}function r(t){t=t,this.option={},this.option[b]=1,this._componentsMap={},this._seriesIndices=null,n(t,this._theme.option),u.merge(t,_,!1),this.mergeOption(t)}function o(t,e){u.isArray(e)||(e=e?[e]:[]);var i={};return f(e,function(e){i[e]=(t[e]||[]).slice()}),i}function a(t,e,i){var n=e.type?e.type:i?i.subType:x.determineSubType(t,e);return n}function s(t){return g(t,function(t){return t.componentIndex})||[]}function l(t,e){return e.hasOwnProperty("subType")?p(t,function(t){return t.subType===e.subType}):t}function h(t){}var u=i(1),c=i(6),d=i(11),f=u.each,p=u.filter,g=u.map,m=u.isArray,v=u.indexOf,y=u.isObject,x=i(13),_=i(127),b="\0_ec_inner",w=d.extend({constructor:w,init:function(t,e,i,n){i=i||{},this.option=null,this._theme=new d(i),this._optionManager=n},setOption:function(t,e){u.assert(!(b in t),"please use chart.getOption()"),this._optionManager.setOption(t,e),this.resetOption()},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)):r.call(this,n),e=!0}if("timeline"!==t&&"media"!==t||this.restoreData(),!t||"recreate"===t||"timeline"===t){var o=i.getTimelineOption(this);o&&(this.mergeOption(o),e=!0)}if(!t||"recreate"===t||"media"===t){var a=i.getMediaOption(this,this._api);a.length&&f(a,function(t){this.mergeOption(t,e=!0)},this)}return e},mergeOption:function(t){function e(e,r){var l=c.normalizeToArray(t[e]),h=c.mappingToExists(n[e],l);c.makeIdAndName(h),f(h,function(t,i){var n=t.option;y(n)&&(t.keyInfo.mainType=e,t.keyInfo.subType=a(e,n,t.exist))});var d=o(n,r);i[e]=[],n[e]=[],f(h,function(t,r){var o=t.exist,a=t.option;if(u.assert(y(a)||o,"Empty component definition"),a){var s=x.getClass(e,t.keyInfo.subType,!0);if(o&&o instanceof s)o.name=t.keyInfo.name,o.mergeOption(a,this),o.optionUpdated(a,!1);else{var l=u.extend({dependentModels:d,componentIndex:r},t.keyInfo);o=new s(a,this,this,l),u.extend(o,l),o.init(a,this,this,l),o.optionUpdated(null,!0)}}else o.mergeOption({},this),o.optionUpdated({},!1);n[e][r]=o,i[e][r]=o.option},this),"series"===e&&(this._seriesIndices=s(n.series))}var i=this.option,n=this._componentsMap,r=[];f(t,function(t,e){null!=t&&(x.hasClass(e)?r.push(e):i[e]=null==i[e]?u.clone(t):u.merge(i[e],t,!0))}),x.topologicalTravel(r,x.getAllClassMainTypes(),e,this),this._seriesIndices=this._seriesIndices||[]},getOption:function(){var t=u.clone(this.option);return f(t,function(e,i){if(x.hasClass(i)){for(var e=c.normalizeToArray(e),n=e.length-1;n>=0;n--)c.isIdInner(e[n])&&e.splice(n,1);t[i]=e}}),delete t[b],t},getTheme:function(){return this._theme},getComponent:function(t,e){var i=this._componentsMap[t];if(i)return i[e||0]},queryComponents:function(t){var e=t.mainType;if(!e)return[];var i=t.index,n=t.id,r=t.name,o=this._componentsMap[e];if(!o||!o.length)return[];var a;if(null!=i)m(i)||(i=[i]),a=p(g(i,function(t){
-return o[t]}),function(t){return!!t});else if(null!=n){var s=m(n);a=p(o,function(t){return s&&v(n,t.id)>=0||!s&&t.id===n})}else if(null!=r){var h=m(r);a=p(o,function(t){return h&&v(r,t.name)>=0||!h&&t.name===r})}else a=o;return l(a,t)},findComponents:function(t){function e(t){var e=r+"Index",i=r+"Id",n=r+"Name";return!t||null==t[e]&&null==t[i]&&null==t[n]?null:{mainType:r,index:t[e],id:t[i],name:t[n]}}function i(e){return t.filter?p(e,t.filter):e}var n=t.query,r=t.mainType,o=e(n),a=o?this.queryComponents(o):this._componentsMap[r];return i(l(a,t))},eachComponent:function(t,e,i){var n=this._componentsMap;if("function"==typeof t)i=e,e=t,f(n,function(t,n){f(t,function(t,r){e.call(i,n,t,r)})});else if(u.isString(t))f(n[t],e,i);else if(y(t)){var r=this.findComponents(t);f(r,e,i)}},getSeriesByName:function(t){var e=this._componentsMap.series;return p(e,function(e){return e.name===t})},getSeriesByIndex:function(t){return this._componentsMap.series[t]},getSeriesByType:function(t){var e=this._componentsMap.series;return p(e,function(e){return e.subType===t})},getSeries:function(){return this._componentsMap.series.slice()},eachSeries:function(t,e){h(this),f(this._seriesIndices,function(i){var n=this._componentsMap.series[i];t.call(e,n,i)},this)},eachRawSeries:function(t,e){f(this._componentsMap.series,t,e)},eachSeriesByType:function(t,e,i){h(this),f(this._seriesIndices,function(n){var r=this._componentsMap.series[n];r.subType===t&&e.call(i,r,n)},this)},eachRawSeriesByType:function(t,e,i){return f(this.getSeriesByType(t),e,i)},isSeriesFiltered:function(t){return h(this),u.indexOf(this._seriesIndices,t.componentIndex)<0},filterSeries:function(t,e){h(this);var i=p(this._componentsMap.series,t,e);this._seriesIndices=s(i)},restoreData:function(){var t=this._componentsMap;this._seriesIndices=s(t.series);var e=[];f(t,function(t,i){e.push(i)}),x.topologicalTravel(e,x.getAllClassMainTypes(),function(e,i){f(t[e],function(t){t.restoreData()})})}});u.mixin(w,i(57)),t.exports=w},function(t,e,i){function n(t){this._api=t,this._timelineOptions=[],this._mediaList=[],this._mediaDefault,this._currentMediaIndices=[],this._optionBackup,this._newBaseOption}function r(t,e,i){var n,r,o=[],a=[],s=t.timeline;if(t.baseOption&&(r=t.baseOption),(s||t.options)&&(r=r||{},o=(t.options||[]).slice()),t.media){r=r||{};var l=t.media;d(l,function(t){t&&t.option&&(t.query?a.push(t):n||(n=t))})}return r||(r=t),r.timeline||(r.timeline=s),d([r].concat(o).concat(h.map(a,function(t){return t.option})),function(t){d(e,function(e){e(t,i)})}),{baseOption:r,timelineOptions:o,mediaDefault:n,mediaList:a}}function o(t,e,i){var n={width:e,height:i,aspectratio:e/i},r=!0;return h.each(t,function(t,e){var i=e.match(m);if(i&&i[1]&&i[2]){var o=i[1],s=i[2].toLowerCase();a(n[s],t,o)||(r=!1)}}),r}function a(t,e,i){return"min"===i?t>=e:"max"===i?t<=e:t===e}function s(t,e){return t.join(",")===e.join(",")}function l(t,e){e=e||{},d(e,function(e,i){if(null!=e){var n=t[i];if(c.hasClass(i)){e=u.normalizeToArray(e),n=u.normalizeToArray(n);var r=u.mappingToExists(n,e);t[i]=p(r,function(t){return t.option&&t.exist?g(t.exist,t.option,!0):t.exist||t.option})}else t[i]=g(n,e,!0)}})}var h=i(1),u=i(6),c=i(13),d=h.each,f=h.clone,p=h.map,g=h.merge,m=/^(min|max)?(.+)$/;n.prototype={constructor:n,setOption:function(t,e){t=f(t,!0);var i=this._optionBackup,n=r.call(this,t,e,!i);this._newBaseOption=n.baseOption,i?(l(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=p(e.timelineOptions,f),this._mediaList=p(e.mediaList,f),this._mediaDefault=f(e.mediaDefault),this._currentMediaIndices=[],f(t?e.baseOption:this._newBaseOption)},getTimelineOption:function(t){var e,i=this._timelineOptions;if(i.length){var n=t.getComponent("timeline");n&&(e=f(i[n.getCurrentIndex()],!0))}return e},getMediaOption:function(t){var e=this._api.getWidth(),i=this._api.getHeight(),n=this._mediaList,r=this._mediaDefault,a=[],l=[];if(!n.length&&!r)return l;for(var h=0,u=n.length;h<u;h++)o(n[h].query,e,i)&&a.push(h);return!a.length&&r&&(a=[-1]),a.length&&!s(a,this._currentMediaIndices)&&(l=p(a,function(t){return f(t===-1?r.option:n[t].option)})),this._currentMediaIndices=a,l}},t.exports=n},function(t,e){var i="";"undefined"!=typeof navigator&&(i=navigator.platform||""),t.exports={color:["#c23531","#2f4554","#61a0a8","#d48265","#91c7ae","#749f83","#ca8622","#bda29a","#6e7074","#546570","#c4ccd3"],textStyle:{fontFamily:i.match(/^Win/)?"Microsoft YaHei":"sans-serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"},blendMode:null,animation:!0,animationDuration:1e3,animationDurationUpdate:300,animationEasing:"exponentialOut",animationEasingUpdate:"cubicOut",animationThreshold:2e3,progressiveThreshold:3e3,progressive:400,hoverLayerThreshold:3e3}},function(t,e,i){t.exports={getAreaStyle:i(30)([["fill","color"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["opacity"],["shadowColor"]])}},function(t,e){t.exports={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")}}}},function(t,e,i){var n=i(30)([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"],["textPosition"],["textAlign"]]);t.exports={getItemStyle:function(t){var e=n.call(this,t),i=this.getBorderLineDash();return i&&(e.lineDash=i),e},getBorderLineDash:function(){var t=this.get("borderType");return"solid"===t||null==t?null:"dashed"===t?[5,5]:[1,1]}}},function(t,e,i){var n=i(30)([["lineWidth","width"],["stroke","color"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]);t.exports={getLineStyle:function(t){var e=n.call(this,t),i=this.getLineDash(e.lineWidth);return i&&(e.lineDash=i),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?null:"dashed"===e?[n,n]:[i,i]}}},function(t,e,i){function n(t,e){return t&&t.getShallow(e)}var r=i(17);t.exports={getTextColor:function(){var t=this.ecModel;return this.getShallow("color")||t&&t.get("textStyle.color")},getFont:function(){var t=this.ecModel,e=t&&t.getModel("textStyle");return[this.getShallow("fontStyle")||n(e,"fontStyle"),this.getShallow("fontWeight")||n(e,"fontWeight"),(this.getShallow("fontSize")||n(e,"fontSize")||12)+"px",this.getShallow("fontFamily")||n(e,"fontFamily")||"sans-serif"].join(" ")},getTextRect:function(t){return r.getBoundingRect(t,this.getFont(),this.getShallow("align"),this.getShallow("baseline"))},truncateText:function(t,e,i,n){return r.truncateText(t,e,this.getFont(),i,n)}}},function(t,e,i){function n(t,e){e=e.split(",");for(var i=t,n=0;n<e.length&&(i=i&&i[e[n]],null!=i);n++);return i}function r(t,e,i,n){e=e.split(",");for(var r,o=t,a=0;a<e.length-1;a++)r=e[a],null==o[r]&&(o[r]={}),o=o[r];(n||null==o[e[a]])&&(o[e[a]]=i)}function o(t){c(l,function(e){e[0]in t&&!(e[1]in t)&&(t[e[1]]=t[e[0]])})}var a=i(1),s=i(134),l=[["x","left"],["y","top"],["x2","right"],["y2","bottom"]],h=["grid","geo","parallel","legend","toolbox","title","visualMap","dataZoom","timeline"],u=["bar","boxplot","candlestick","chord","effectScatter","funnel","gauge","lines","graph","heatmap","line","map","parallel","pie","radar","sankey","scatter","treemap"],c=a.each;t.exports=function(t){c(t.series,function(t){if(a.isObject(t)){var e=t.type;if(s(t),"pie"!==e&&"gauge"!==e||null!=t.clockWise&&(t.clockwise=t.clockWise),"gauge"===e){var i=n(t,"pointer.color");null!=i&&r(t,"itemStyle.normal.color",i)}for(var l=0;l<u.length;l++)if(u[l]===t.type){o(t);break}}}),t.dataRange&&(t.visualMap=t.dataRange),c(h,function(e){var i=t[e];i&&(a.isArray(i)||(i=[i]),c(i,function(t){o(t)}))})}},function(t,e,i){function n(t){var e=t&&t.itemStyle;e&&r.each(o,function(i){var n=e.normal,o=e.emphasis;n&&n[i]&&(t[i]=t[i]||{},t[i].normal?r.merge(t[i].normal,n[i]):t[i].normal=n[i],n[i]=null),o&&o[i]&&(t[i]=t[i]||{},t[i].emphasis?r.merge(t[i].emphasis,o[i]):t[i].emphasis=o[i],o[i]=null)})}var r=i(1),o=["areaStyle","lineStyle","nodeStyle","linkStyle","chordStyle","label","labelLine"];t.exports=function(t){if(t){n(t),n(t.markPoint),n(t.markLine);var e=t.data;if(e){for(var i=0;i<e.length;i++)n(e[i]);var o=t.markPoint;if(o&&o.data)for(var a=o.data,i=0;i<a.length;i++)n(a[i]);var s=t.markLine;if(s&&s.data)for(var l=s.data,i=0;i<l.length;i++)r.isArray(l[i])?(n(l[i][0]),n(l[i][1])):n(l[i])}}}},function(t,e){var i={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 e},min:function(t){for(var e=1/0,i=0;i<t.length;i++)t[i]<e&&(e=t[i]);return e},nearest:function(t){return t[0]}},n=function(t,e){return Math.round(t.length/2)};t.exports=function(t,e,r){e.eachSeriesByType(t,function(t){var e=t.getData(),r=t.get("sampling"),o=t.coordinateSystem;if("cartesian2d"===o.type&&r){var a=o.getBaseAxis(),s=o.getOtherAxis(a),l=a.getExtent(),h=l[1]-l[0],u=Math.round(e.count()/h);if(u>1){var c;"string"==typeof r?c=i[r]:"function"==typeof r&&(c=r),c&&(e=e.downSample(s.dim,1/u,c,n),t.setData(e))}}},this)}},function(t,e,i){function n(t,e){return c(t,u(e))}var r=i(1),o=i(32),a=i(4),s=i(38),l=o.prototype,h=s.prototype,u=a.getPrecisionSafe,c=a.round,d=Math.floor,f=Math.ceil,p=Math.pow,g=Math.log,m=o.extend({type:"log",base:10,$constructor:function(){o.apply(this,arguments),this._originalScale=new s},getTicks:function(){var t=this._originalScale,e=this._extent,i=t.getExtent();return r.map(h.getTicks.call(this),function(r){var o=a.round(p(this.base,r));return o=r===e[0]&&t.__fixMin?n(o,i[0]):o,o=r===e[1]&&t.__fixMax?n(o,i[1]):o},this)},getLabel:h.getLabel,scale:function(t){return t=l.scale.call(this,t),p(this.base,t)},setExtent:function(t,e){var i=this.base;t=g(t)/g(i),e=g(e)/g(i),h.setExtent.call(this,t,e)},getExtent:function(){var t=this.base,e=l.getExtent.call(this);e[0]=p(t,e[0]),e[1]=p(t,e[1]);var i=this._originalScale,r=i.getExtent();return i.__fixMin&&(e[0]=n(e[0],r[0])),i.__fixMax&&(e[1]=n(e[1],r[1])),e},unionExtent:function(t){this._originalScale.unionExtent(t);var e=this.base;t[0]=g(t[0])/g(e),t[1]=g(t[1])/g(e),l.unionExtent.call(this,t)},unionExtentFromData:function(t,e){this.unionExtent(t.getDataExtent(e,!0,function(t){return t>0}))},niceTicks:function(t){t=t||10;var e=this._extent,i=e[1]-e[0];if(!(i===1/0||i<=0)){var n=a.quantity(i),r=t/i*n;for(r<=.5&&(n*=10);!isNaN(n)&&Math.abs(n)<1&&Math.abs(n)>0;)n*=10;var o=[a.round(f(e[0]/n)*n),a.round(d(e[1]/n)*n)];this._interval=n,this._niceExtent=o}},niceExtent:function(t,e,i){h.niceExtent.call(this,t,e,i);var n=this._originalScale;n.__fixMin=e,n.__fixMax=i}});r.each(["contain","normalize"],function(t){m.prototype[t]=function(e){return e=g(e)/g(this.base),l[t].call(this,e)}}),m.create=function(){return new m},t.exports=m},function(t,e,i){var n=i(1),r=i(32),o=r.prototype,a=r.extend({type:"ordinal",init:function(t,e){this._data=t,this._extent=e||[0,t.length-1]},parse:function(t){return"string"==typeof t?n.indexOf(this._data,t):Math.round(t)},contain:function(t){return t=this.parse(t),o.contain.call(this,t)&&null!=this._data[t]},normalize:function(t){return o.normalize.call(this,this.parse(t))},scale:function(t){return Math.round(o.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){return this._data[t]},count:function(){return this._extent[1]-this._extent[0]+1},unionExtentFromData:function(t,e){this.unionExtent(t.getDataExtent(e,!1))},niceTicks:n.noop,niceExtent:n.noop});a.create=function(){return new a},t.exports=a},function(t,e,i){var n=i(1),r=i(4),o=i(8),a=i(38),s=a.prototype,l=Math.ceil,h=Math.floor,u=1e3,c=60*u,d=60*c,f=24*d,p=function(t,e,i,n){for(;i<n;){var r=i+n>>>1;t[r][2]<e?i=r+1:n=r}return i},g=a.extend({type:"time",getLabel:function(t){var e=this._stepLvl,i=new Date(t);return o.formatTime(e[0],i)},niceExtent:function(t,e,i){var n=this._extent;if(n[0]===n[1]&&(n[0]-=f,n[1]+=f),n[1]===-(1/0)&&n[0]===1/0){var o=new Date;n[1]=new Date(o.getFullYear(),o.getMonth(),o.getDate()),n[0]=n[1]-f}this.niceTicks(t);var a=this._interval;e||(n[0]=r.round(h(n[0]/a)*a)),i||(n[1]=r.round(l(n[1]/a)*a))},niceTicks:function(t){t=t||10;var e=this._extent,i=e[1]-e[0],n=i/t,o=m.length,a=p(m,n,0,o),s=m[Math.min(a,o-1)],u=s[2];if("year"===s[0]){var c=i/u,d=r.nice(c/t,!0);u*=d}var f=[l(e[0]/u)*u,h(e[1]/u)*u];this._stepLvl=s,this._interval=u,this._niceExtent=f},parse:function(t){return+r.parseDate(t)}});n.each(["contain","normalize"],function(t){g.prototype[t]=function(e){return s[t].call(this,this.parse(e))}});var m=[["hh:mm:ss",1,u],["hh:mm:ss",5,5*u],["hh:mm:ss",10,10*u],["hh:mm:ss",15,15*u],["hh:mm:ss",30,30*u],["hh:mm\nMM-dd",1,c],["hh:mm\nMM-dd",5,5*c],["hh:mm\nMM-dd",10,10*c],["hh:mm\nMM-dd",15,15*c],["hh:mm\nMM-dd",30,30*c],["hh:mm\nMM-dd",1,d],["hh:mm\nMM-dd",2,2*d],["hh:mm\nMM-dd",6,6*d],["hh:mm\nMM-dd",12,12*d],["MM-dd\nyyyy",1,f],["week",7,7*f],["month",1,31*f],["quarter",3,380*f/4],["half-year",6,380*f/2],["year",1,380*f]];g.create=function(){return new g},t.exports=g},function(t,e,i){var n=i(37);t.exports=function(t){function e(e){var i=(e.visualColorAccessPath||"itemStyle.normal.color").split("."),r=e.getData(),o=e.get(i)||e.getColorFromPalette(e.get("name"));r.setVisual("color",o),t.isSeriesFiltered(e)||("function"!=typeof o||o instanceof n||r.each(function(t){r.setItemVisual(t,"color",o(e.getDataParams(t)))}),r.each(function(t){var e=r.getItemModel(t),n=e.get(i,!0);null!=n&&r.setItemVisual(t,"color",n)}))}t.eachRawSeries(e)}},function(t,e,i){"use strict";function n(t,e,i){return{type:t,event:i,target:e,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}}function r(){}function o(t,e,i){if(t[t.rectHover?"rectContain":"contain"](e,i)){for(var n=t;n;){if(n.silent||n.clipPath&&!n.clipPath.contain(e,i))return!1;n=n.parent}return!0}return!1}var a=i(1),s=i(168),l=i(21);r.prototype.dispose=function(){};var h=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],u=function(t,e,i,n){l.call(this),this.storage=t,this.painter=e,this.painterRoot=n,i=i||new r,this.proxy=i,i.handler=this,this._hovered,this._lastTouchMoment,this._lastX,this._lastY,s.call(this),a.each(h,function(t){i.on&&i.on(t,this[t],this)},this)};u.prototype={constructor:u,mousemove:function(t){var e=t.zrX,i=t.zrY,n=this.findHover(e,i,null),r=this._hovered,o=this.proxy;this._hovered=n,o.setCursor&&o.setCursor(n?n.cursor:"default"),r&&n!==r&&r.__zr&&this.dispatchToElement(r,"mouseout",t),this.dispatchToElement(n,"mousemove",t),n&&n!==r&&this.dispatchToElement(n,"mouseover",t)},mouseout:function(t){this.dispatchToElement(this._hovered,"mouseout",t);var e,i=t.toElement||t.relatedTarget;do i=i&&i.parentNode;while(i&&9!=i.nodeType&&!(e=i===this.painterRoot));!e&&this.trigger("globalout",{event:t})},resize:function(t){this._hovered=null},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){for(var r="on"+e,o=n(e,t,i),a=t;a&&(a[r]&&(o.cancelBubble=a[r].call(a,o)),a.trigger(e,o),a=a.parent,!o.cancelBubble););o.cancelBubble||(this.trigger(e,o),this.painter&&this.painter.eachOtherLayer(function(t){"function"==typeof t[r]&&t[r].call(t,o),t.trigger&&t.trigger(e,o)}))},findHover:function(t,e,i){for(var n=this.storage.getDisplayList(),r=n.length-1;r>=0;r--)if(!n[r].silent&&n[r]!==i&&!n[r].ignore&&o(n[r],t,e))return n[r]}},a.each(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],function(t){u.prototype[t]=function(e){var i=this.findHover(e.zrX,e.zrY,null);if("mousedown"===t)this._downel=i,this._upel=i;else if("mosueup"===t)this._upel=i;else if("click"===t&&this._downel!==this._upel)return;this.dispatchToElement(i,t,e)}}),a.mixin(u,l),a.mixin(u,s),t.exports=u},function(t,e,i){function n(){return!1}function r(t,e,i,n){var r=document.createElement(e),o=i.getWidth(),a=i.getHeight(),s=r.style;return s.position="absolute",s.left=0,s.top=0,s.width=o+"px",s.height=a+"px",r.width=o*n,r.height=a*n,r.setAttribute("data-zr-dom-id",t),r}var o=i(1),a=i(33),s=i(66),l=i(65),h=function(t,e,i){var s;i=i||a.devicePixelRatio,"string"==typeof t?s=r(t,"canvas",e,i):o.isObject(t)&&(s=t,t=s.id),this.id=t,this.dom=s;var l=s.style;l&&(s.onselectstart=n,l["-webkit-user-select"]="none",l["user-select"]="none",l["-webkit-touch-callout"]="none",l["-webkit-tap-highlight-color"]="rgba(0,0,0,0)",l.padding=0,l.margin=0,l["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};h.prototype={constructor:h,elCount:0,__dirty:!0,initContext:function(){this.ctx=this.dom.getContext("2d"),this.ctx.dpr=this.dpr},createBackBuffer:function(){var t=this.dpr;this.domBack=r("back-"+this.id,"canvas",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,r=n.style,o=this.domBack;r.width=t+"px",r.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){var e=this.dom,i=this.ctx,n=e.width,r=e.height,o=this.clearColor,a=this.motionBlur&&!t,h=this.lastFrameAlpha,u=this.dpr;if(a&&(this.domBack||this.createBackBuffer(),this.ctxBack.globalCompositeOperation="copy",this.ctxBack.drawImage(e,0,0,n/u,r/u)),i.clearRect(0,0,n,r),o){var c;o.colorStops?(c=o.__canvasGradient||s.getGradient(i,o,{x:0,y:0,width:n,height:r}),o.__canvasGradient=c):o.image&&(c=l.prototype.getCanvasPattern.call(o,i)),i.save(),i.fillStyle=c||o,i.fillRect(0,0,n,r),i.restore()}if(a){var d=this.domBack;i.save(),i.globalAlpha=h,i.drawImage(d,0,0,n,r),i.restore()}}},t.exports=h},function(t,e,i){"use strict";function n(t){return parseInt(t,10)}function r(t){return!!t&&(!!t.isBuildin||"function"==typeof t.resize&&"function"==typeof t.refresh)}function o(t){t.__unusedCount++}function a(t){1==t.__unusedCount&&t.clear()}function s(t,e,i){return x.copy(t.getBoundingRect()),t.transform&&x.applyTransform(t.transform),_.width=e,_.height=i,!x.intersect(_)}function l(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}function h(t,e){for(var i=0;i<t.length;i++){var n=t[i],r=n.path;n.setTransform(e),r.beginPath(e),n.buildPath(r,n.shape),e.clip(),n.restoreTransform(e)}}function u(t,e){var i=document.createElement("div");return i.style.cssText=["position:relative","overflow:hidden","width:"+t+"px","height:"+e+"px","padding:0","margin:0","border-width:0"].join(";")+";",i}var c=i(33),d=i(1),f=i(48),p=i(9),g=i(46),m=i(141),v=i(62),y=5,x=new p(0,0,0,0),_=new p(0,0,0,0),b=function(t,e,i){var n=!t.nodeName||"CANVAS"===t.nodeName.toUpperCase();this._opts=i=d.extend({},i||{}),this.dpr=i.devicePixelRatio||c.devicePixelRatio,this._singleCanvas=n,this.root=t;var r=t.style;r&&(r["-webkit-tap-highlight-color"]="transparent",r["-webkit-user-select"]=r["user-select"]=r["-webkit-touch-callout"]="none",t.innerHTML=""),this.storage=e;var o=this._zlevelList=[],a=this._layers={};if(this._layerConfig={},n){var s=t.width,l=t.height;this._width=s,this._height=l;var h=new m(t,this,1);h.initContext(),a[0]=h,o.push(0),this._domRoot=t}else{this._width=this._getSize(0),this._height=this._getSize(1);var f=this._domRoot=u(this._width,this._height);t.appendChild(f)}this.pathToImage=this._createPathToImage(),this._progressiveLayers=[],this._hoverlayer,this._hoverElements=[]};b.prototype={constructor:b,isSingleCanvas:function(){return this._singleCanvas},getViewportRoot:function(){return this._domRoot},refresh:function(t){var e=this.storage.getDisplayList(!0),i=this._zlevelList;this._paintList(e,t);for(var n=0;n<i.length;n++){var r=i[n],o=this._layers[r];!o.isBuildin&&o.refresh&&o.refresh()}return this.refreshHover(),this._progressiveLayers.length&&this._startProgessive(),this},addHover:function(t,e){if(!t.__hoverMir){var i=new t.constructor({style:t.style,shape:t.shape});i.__from=t,t.__hoverMir=i,i.setStyle(e),this._hoverElements.push(i)}},removeHover:function(t){var e=t.__hoverMir,i=this._hoverElements,n=d.indexOf(i,e);n>=0&&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){g(t,this.storage.displayableSortFunc),i||(i=this._hoverlayer=this.getLayer(1e5));var n={};i.ctx.save();for(var r=0;r<e;){var o=t[r],a=o.__from;a&&a.__zr?(r++,a.invisible||(o.transform=a.transform,o.invTransform=a.invTransform,o.__clipPaths=a.__clipPaths,this._doPaintEl(o,i,!0,n))):(t.splice(r,1),a.__hoverMir=null,e--)}i.ctx.restore()}},_startProgessive:function(){function t(){i===e._progressiveToken&&e.storage&&(e._doPaintList(e.storage.getDisplayList()),e._furtherProgressive?(e._progress++,v(t)):e._progressiveToken=-1)}var e=this;if(e._furtherProgressive){var i=e._progressiveToken=+new Date;e._progress++,v(t)}},_clearProgressive:function(){this._progressiveToken=-1,this._progress=0,d.each(this._progressiveLayers,function(t){t.__dirty&&t.clear()})},_paintList:function(t,e){null==e&&(e=!1),this._updateLayerStatus(t),this._clearProgressive(),this.eachBuildinLayer(o),this._doPaintList(t,e),this.eachBuildinLayer(a)},_doPaintList:function(t,e){function i(t){var e=o.dpr||1;o.save(),o.globalAlpha=1,o.shadowBlur=0,n.__dirty=!0,o.setTransform(1,0,0,1,0,0),o.drawImage(t.dom,0,0,u*e,c*e),o.restore()}for(var n,r,o,a,s,l,h=0,u=this._width,c=this._height,p=this._progress,g=0,m=t.length;g<m;g++){var v=t[g],x=this._singleCanvas?0:v.zlevel,_=v.__frame;if(_<0&&s&&(i(s),s=null),r!==x&&(o&&o.restore(),a={},r=x,n=this.getLayer(r),n.isBuildin||f("ZLevel "+r+" has been used by unkown layer "+n.id),o=n.ctx,o.save(),n.__unusedCount=0,(n.__dirty||e)&&n.clear()),n.__dirty||e){if(_>=0){if(!s){if(s=this._progressiveLayers[Math.min(h++,y-1)],s.ctx.save(),s.renderScope={},s&&s.__progress>s.__maxProgress){g=s.__nextIdxNotProg-1;continue}l=s.__progress,s.__dirty||(p=l),s.__progress=p+1}_===p&&this._doPaintEl(v,s,!0,s.renderScope)}else this._doPaintEl(v,n,e,a);v.__dirty=!1}}s&&i(s),o&&o.restore(),this._furtherProgressive=!1,d.each(this._progressiveLayers,function(t){t.__maxProgress>=t.__progress&&(this._furtherProgressive=!0)},this)},_doPaintEl:function(t,e,i,n){var r=e.ctx,o=t.transform;if((e.__dirty||i)&&!t.invisible&&0!==t.style.opacity&&(!o||o[0]||o[3])&&(!t.culling||!s(t,this._width,this._height))){var a=t.__clipPaths;(n.prevClipLayer!==e||l(a,n.prevElClipPaths))&&(n.prevElClipPaths&&(n.prevClipLayer.ctx.restore(),n.prevClipLayer=n.prevElClipPaths=null,n.prevEl=null),a&&(r.save(),h(a,r),n.prevClipLayer=e,n.prevElClipPaths=a)),t.beforeBrush&&t.beforeBrush(r),t.brush(r,n.prevEl||null),n.prevEl=t,t.afterBrush&&t.afterBrush(r)}},getLayer:function(t){if(this._singleCanvas)return this._layers[0];var e=this._layers[t];return e||(e=new m("zr_"+t,this,this.dpr),e.isBuildin=!0,this._layerConfig[t]&&d.merge(e,this._layerConfig[t],!0),this.insertLayer(t,e),e.initContext()),e},insertLayer:function(t,e){var i=this._layers,n=this._zlevelList,o=n.length,a=null,s=-1,l=this._domRoot;if(i[t])return void f("ZLevel "+t+" has been used already");if(!r(e))return void f("Layer of zlevel "+t+" is not valid");if(o>0&&t>n[0]){for(s=0;s<o-1&&!(n[s]<t&&n[s+1]>t);s++);a=i[n[s]]}if(n.splice(s+1,0,t),a){var h=a.dom;h.nextSibling?l.insertBefore(e.dom,h.nextSibling):l.appendChild(e.dom)}else l.firstChild?l.insertBefore(e.dom,l.firstChild):l.appendChild(e.dom);i[t]=e},eachLayer:function(t,e){var i,n,r=this._zlevelList;for(n=0;n<r.length;n++)i=r[n],t.call(e,this._layers[i],i)},eachBuildinLayer:function(t,e){var i,n,r,o=this._zlevelList;for(r=0;r<o.length;r++)n=o[r],i=this._layers[n],i.isBuildin&&t.call(e,i,n)},eachOtherLayer:function(t,e){var i,n,r,o=this._zlevelList;for(r=0;r<o.length;r++)n=o[r],i=this._layers[n],i.isBuildin||t.call(e,i,n)},getLayers:function(){return this._layers},_updateLayerStatus:function(t){var e=this._layers,i=this._progressiveLayers,n={},r={};this.eachBuildinLayer(function(t,e){n[e]=t.elCount,t.elCount=0,t.__dirty=!1}),d.each(i,function(t,e){r[e]=t.elCount,t.elCount=0,t.__dirty=!1});for(var o,a,s=0,l=0,h=0,u=t.length;h<u;h++){var c=t[h],f=this._singleCanvas?0:c.zlevel,p=e[f],g=c.progressive;if(p&&(p.elCount++,p.__dirty=p.__dirty||c.__dirty),g>=0){a!==g&&(a=g,l++);var v=c.__frame=l-1;if(!o){var x=Math.min(s,y-1);o=i[x],o||(o=i[x]=new m("progressive",this,this.dpr),o.initContext()),o.__maxProgress=0}o.__dirty=o.__dirty||c.__dirty,o.elCount++,o.__maxProgress=Math.max(o.__maxProgress,v),o.__maxProgress>=o.__progress&&(p.__dirty=!0)}else c.__frame=-1,o&&(o.__nextIdxNotProg=h,s++,o=null)}o&&(s++,o.__nextIdxNotProg=h),this.eachBuildinLayer(function(t,e){n[e]!==t.elCount&&(t.__dirty=!0)}),i.length=Math.min(s,y),d.each(i,function(t,e){r[e]!==t.elCount&&(c.__dirty=!0),t.__dirty&&(t.__progress=0)})},clear:function(){return this.eachBuildinLayer(this._clearLayer),this},_clearLayer:function(t){t.clear()},configLayer:function(t,e){if(e){var i=this._layerConfig;i[t]?d.merge(i[t],e,!0):i[t]=e;var n=this._layers[t];n&&d.merge(n,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(d.indexOf(i,t),1))},resize:function(t,e){var i=this._domRoot;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||e!=this._height){i.style.width=t+"px",i.style.height=e+"px";for(var r in this._layers)this._layers.hasOwnProperty(r)&&this._layers[r].resize(t,e);d.each(this._progressiveLayers,function(i){i.resize(t,e)}),this.refresh(!0)}return this._width=t,this._height=e,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)return this._layers[0].dom;var e=new m("image",this,t.pixelRatio||this.dpr);e.initContext(),e.clearColor=t.backgroundColor,e.clear();for(var i=this.storage.getDisplayList(!0),n={},r=0;r<i.length;r++){var o=i[r];this._doPaintEl(o,e,!0,n)}return e.dom},getWidth:function(){return this._width},getHeight:function(){return this._height},_getSize:function(t){var e=this._opts,i=["width","height"][t],r=["clientWidth","clientHeight"][t],o=["paddingLeft","paddingTop"][t],a=["paddingRight","paddingBottom"][t];if(null!=e[i]&&"auto"!==e[i])return parseFloat(e[i]);var s=this.root,l=document.defaultView.getComputedStyle(s);return(s[r]||n(l[i])||n(s.style[i]))-(n(l[o])||0)-(n(l[a])||0)|0},_pathToImage:function(t,e,n,r,o){var a=document.createElement("canvas"),s=a.getContext("2d");a.width=n*o,a.height=r*o,s.clearRect(0,0,n*o,r*o);var l={position:e.position,rotation:e.rotation,scale:e.scale};e.position=[0,0,0],e.rotation=0,e.scale=[1,1],e&&e.brush(s);var h=i(49),u=new h({id:t,style:{x:0,y:0,image:a}});return null!=l.position&&(u.position=e.position=l.position),null!=l.rotation&&(u.rotation=e.rotation=l.rotation),null!=l.scale&&(u.scale=e.scale=l.scale),u},_createPathToImage:function(){var t=this;return function(e,i,n,r){return t._pathToImage(e,i,n,r,t.dpr)}}},t.exports=b},function(t,e,i){"use strict";function n(t,e){return t.zlevel===e.zlevel?t.z===e.z?t.z2-e.z2:t.z-e.z:t.zlevel-e.zlevel}var r=i(1),o=i(10),a=i(34),s=i(46),l=function(){this._elements={},this._roots=[],this._displayList=[],this._displayListLen=0};l.prototype={constructor:l,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,r=0,a=e.length;r<a;r++)this._updateAndAddDisplayable(e[r],null,t);i.length=this._displayListLen,o.canvasSupported&&s(i,n)},_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 r=n,o=t;r;)r.parent=o,r.updateTransform(),e.push(r),o=r,r=r.clipPath}if(t.isGroup){for(var a=t._children,s=0;s<a.length;s++){var l=a[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){this._elements[t.id]||(t instanceof a&&t.addChildrenToStorage(this),this.addToMap(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 a&&i.delChildrenFromStorage(this)}return this._elements={},this._roots=[],this._displayList=[],void(this._displayListLen=0)}if(t instanceof Array)for(var e=0,n=t.length;e<n;e++)this.delRoot(t[e]);else{var o;o="string"==typeof t?this._elements[t]:t;var s=r.indexOf(this._roots,o);s>=0&&(this.delFromMap(o.id),this._roots.splice(s,1),o instanceof a&&o.delChildrenFromStorage(this))}},addToMap:function(t){return t instanceof a&&(t.__storage=this),t.dirty(!1),this._elements[t.id]=t,this},get:function(t){return this._elements[t]},delFromMap:function(t){var e=this._elements,i=e[t];return i&&(delete e[t],i instanceof a&&(i.__storage=null)),this},dispose:function(){this._elements=this._renderList=this._roots=null},displayableSortFunc:n},t.exports=l},function(t,e,i){"use strict";var n=i(1),r=i(25).Dispatcher,o=i(62),a=i(61),s=function(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,r.call(this)};s.prototype={constructor:s,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=n.indexOf(this._clips,t);e>=0&&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,r=[],o=[],a=0;a<n;a++){var s=i[a],l=s.step(t);l&&(r.push(l),o.push(s))}for(var a=0;a<n;)i[a]._needsRemove?(i[a]=i[n-1],i.pop(),n--):a++;n=r.length;for(var a=0;a<n;a++)o[a].fire(r[a]);this._time=t,this.onframe(e),this.trigger("frame",e),this.stage.update&&this.stage.update()},_startLoop:function(){function t(){e._running&&(o(t),!e._paused&&e._update())}var e=this;this._running=!0,o(t)},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=[]},animate:function(t,e){e=e||{};var i=new a(t,e.loop,e.getter,e.setter);return this.addAnimator(i),i}},n.mixin(s,r),t.exports=s},function(t,e,i){function n(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}var r=i(146);n.prototype={constructor:n,step:function(t){this._initialized||(this._startTime=t+this._delay,this._initialized=!0);var e=(t-this._startTime)/this._life;if(!(e<0)){e=Math.min(e,1);var i=this.easing,n="string"==typeof i?r[i]:i,o="function"==typeof n?n(e):e;
-return this.fire("frame",o),1==e?this.loop?(this.restart(t),"restart"):(this._needsRemove=!0,"destroy"):null}},restart:function(t){var e=(t-this._startTime)%this._life;this._startTime=t-e+this.gap,this._needsRemove=!1},fire:function(t,e){t="on"+t,this[t]&&this[t](this._target,e)}},t.exports=n},function(t,e){var i={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*(-Math.pow(2,-10*(t-1))+2)},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,n=.4;return 0===t?0:1===t?1:(!i||i<1?(i=1,e=n/4):e=n*Math.asin(1/i)/(2*Math.PI),-(i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)))},elasticOut:function(t){var e,i=.1,n=.4;return 0===t?0:1===t?1:(!i||i<1?(i=1,e=n/4):e=n*Math.asin(1/i)/(2*Math.PI),i*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/n)+1)},elasticInOut:function(t){var e,i=.1,n=.4;return 0===t?0:1===t?1:(!i||i<1?(i=1,e=n/4):e=n*Math.asin(1/i)/(2*Math.PI),(t*=2)<1?-.5*(i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)):i*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*.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?.5*(t*t*((e+1)*t-e)):.5*((t-=2)*t*((e+1)*t+e)+2)},bounceIn:function(t){return 1-i.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*i.bounceIn(2*t):.5*i.bounceOut(2*t-1)+.5}};t.exports=i},function(t,e,i){var n=i(63).normalizeRadian,r=2*Math.PI;t.exports={containStroke:function(t,e,i,o,a,s,l,h,u){if(0===l)return!1;var c=l;h-=t,u-=e;var d=Math.sqrt(h*h+u*u);if(d-c>i||d+c<i)return!1;if(Math.abs(o-a)%r<1e-4)return!0;if(s){var f=o;o=n(a),a=n(f)}else o=n(o),a=n(a);o>a&&(a+=r);var p=Math.atan2(u,h);return p<0&&(p+=r),p>=o&&p<=a||p+r>=o&&p+r<=a}}},function(t,e,i){var n=i(18);t.exports={containStroke:function(t,e,i,r,o,a,s,l,h,u,c){if(0===h)return!1;var d=h;if(c>e+d&&c>r+d&&c>a+d&&c>l+d||c<e-d&&c<r-d&&c<a-d&&c<l-d||u>t+d&&u>i+d&&u>o+d&&u>s+d||u<t-d&&u<i-d&&u<o-d&&u<s-d)return!1;var f=n.cubicProjectPoint(t,e,i,r,o,a,s,l,u,c,null);return f<=d/2}}},function(t,e,i){"use strict";function n(t,e){return Math.abs(t-e)<x}function r(){var t=b[0];b[0]=b[1],b[1]=t}function o(t,e,i,n,o,a,s,l,h,u){if(u>e&&u>n&&u>a&&u>l||u<e&&u<n&&u<a&&u<l)return 0;var c=g.cubicRootAt(e,n,a,l,u,_);if(0===c)return 0;for(var d,f,p=0,m=-1,v=0;v<c;v++){var y=_[v],x=0===y||1===y?.5:1,w=g.cubicAt(t,i,o,s,y);w<h||(m<0&&(m=g.cubicExtrema(e,n,a,l,b),b[1]<b[0]&&m>1&&r(),d=g.cubicAt(e,n,a,l,b[0]),m>1&&(f=g.cubicAt(e,n,a,l,b[1]))),p+=2==m?y<b[0]?d<e?x:-x:y<b[1]?f<d?x:-x:l<f?x:-x:y<b[0]?d<e?x:-x:l<d?x:-x)}return p}function a(t,e,i,n,r,o,a,s){if(s>e&&s>n&&s>o||s<e&&s<n&&s<o)return 0;var l=g.quadraticRootAt(e,n,o,s,_);if(0===l)return 0;var h=g.quadraticExtremum(e,n,o);if(h>=0&&h<=1){for(var u=0,c=g.quadraticAt(e,n,o,h),d=0;d<l;d++){var f=0===_[d]||1===_[d]?.5:1,p=g.quadraticAt(t,i,r,_[d]);p<a||(u+=_[d]<h?c<e?f:-f:o<c?f:-f)}return u}var f=0===_[0]||1===_[0]?.5:1,p=g.quadraticAt(t,i,r,_[0]);return p<a?0:o<e?f:-f}function s(t,e,i,n,r,o,a,s){if(s-=e,s>i||s<-i)return 0;var l=Math.sqrt(i*i-s*s);_[0]=-l,_[1]=l;var h=Math.abs(n-r);if(h<1e-4)return 0;if(h%y<1e-4){n=0,r=y;var u=o?1:-1;return a>=_[0]+t&&a<=_[1]+t?u:0}if(o){var l=n;n=p(r),r=p(l)}else n=p(n),r=p(r);n>r&&(r+=y);for(var c=0,d=0;d<2;d++){var f=_[d];if(f+t>a){var g=Math.atan2(s,f),u=o?1:-1;g<0&&(g=y+g),(g>=n&&g<=r||g+y>=n&&g+y<=r)&&(g>Math.PI/2&&g<1.5*Math.PI&&(u=-u),c+=u)}}return c}function l(t,e,i,r,l){for(var u=0,p=0,g=0,y=0,x=0,_=0;_<t.length;){var b=t[_++];switch(b===h.M&&_>1&&(i||(u+=m(p,g,y,x,r,l))),1==_&&(p=t[_],g=t[_+1],y=p,x=g),b){case h.M:y=t[_++],x=t[_++],p=y,g=x;break;case h.L:if(i){if(v(p,g,t[_],t[_+1],e,r,l))return!0}else u+=m(p,g,t[_],t[_+1],r,l)||0;p=t[_++],g=t[_++];break;case h.C:if(i){if(c.containStroke(p,g,t[_++],t[_++],t[_++],t[_++],t[_],t[_+1],e,r,l))return!0}else u+=o(p,g,t[_++],t[_++],t[_++],t[_++],t[_],t[_+1],r,l)||0;p=t[_++],g=t[_++];break;case h.Q:if(i){if(d.containStroke(p,g,t[_++],t[_++],t[_],t[_+1],e,r,l))return!0}else u+=a(p,g,t[_++],t[_++],t[_],t[_+1],r,l)||0;p=t[_++],g=t[_++];break;case h.A:var w=t[_++],M=t[_++],S=t[_++],T=t[_++],A=t[_++],I=t[_++],C=(t[_++],1-t[_++]),k=Math.cos(A)*S+w,L=Math.sin(A)*T+M;_>1?u+=m(p,g,k,L,r,l):(y=k,x=L);var P=(r-w)*T/S+w;if(i){if(f.containStroke(w,M,T,A,A+I,C,e,P,l))return!0}else u+=s(w,M,T,A,A+I,C,P,l);p=Math.cos(A+I)*S+w,g=Math.sin(A+I)*T+M;break;case h.R:y=p=t[_++],x=g=t[_++];var D=t[_++],O=t[_++],k=y+D,L=x+O;if(i){if(v(y,x,k,x,e,r,l)||v(k,x,k,L,e,r,l)||v(k,L,y,L,e,r,l)||v(y,L,y,x,e,r,l))return!0}else u+=m(k,x,k,L,r,l),u+=m(y,L,y,x,r,l);break;case h.Z:if(i){if(v(p,g,y,x,e,r,l))return!0}else u+=m(p,g,y,x,r,l);p=y,g=x}}return i||n(g,x)||(u+=m(p,g,y,x,r,l)||0),0!==u}var h=i(29).CMD,u=i(88),c=i(148),d=i(89),f=i(147),p=i(63).normalizeRadian,g=i(18),m=i(90),v=u.containStroke,y=2*Math.PI,x=1e-4,_=[-1,-1,-1],b=[-1,-1];t.exports={contain:function(t,e,i){return l(t,0,!1,e,i)},containStroke:function(t,e,i,n){return l(t,e,!0,i,n)}}},function(t,e,i){"use strict";function n(t){var e=t[1][0]-t[0][0],i=t[1][1]-t[0][1];return Math.sqrt(e*e+i*i)}function r(t){return[(t[0][0]+t[1][0])/2,(t[0][1]+t[1][1])/2]}var o=i(25),a=function(){this._track=[]};a.prototype={constructor:a,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 r={points:[],touches:[],target:e,event:t},a=0,s=n.length;a<s;a++){var l=n[a],h=o.clientToLocal(i,l,{});r.points.push([h.zrX,h.zrY]),r.touches.push(l)}this._track.push(r)}},_recognize:function(t){for(var e in s)if(s.hasOwnProperty(e)){var i=s[e](this._track,t);if(i)return i}}};var s={pinch:function(t,e){var i=t.length;if(i){var o=(t[i-1]||{}).points,a=(t[i-2]||{}).points||o;if(a&&a.length>1&&o&&o.length>1){var s=n(o)/n(a);!isFinite(s)&&(s=1),e.pinchScale=s;var l=r(o);return e.pinchX=l[0],e.pinchY=l[1],{type:"pinch",target:t[0].target,event:e}}}}};t.exports=a},function(t,e){var i=function(){this.head=null,this.tail=null,this._len=0},n=i.prototype;n.insert=function(t){var e=new r(t);return this.insertEntry(e),e},n.insertEntry=function(t){this.head?(this.tail.next=t,t.prev=this.tail,this.tail=t):this.head=this.tail=t,this._len++},n.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--},n.len=function(){return this._len};var r=function(t){this.value=t,this.next,this.prev},o=function(t){this._list=new i,this._map={},this._maxSize=t||10},a=o.prototype;a.put=function(t,e){var i=this._list,n=this._map;if(null==n[t]){var r=i.len();if(r>=this._maxSize&&r>0){var o=i.head;i.remove(o),delete n[o.key]}var a=i.insert(e);a.key=t,n[t]=a}},a.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},a.clear=function(){this._list.clear(),this._map={}},t.exports=o},function(t,e,i){function n(t){return"mousewheel"===t&&d.browser.firefox?"DOMMouseScroll":t}function r(t,e,i){var n=t._gestureMgr;"start"===i&&n.clear();var r=n.recognize(e,t.handler.findHover(e.zrX,e.zrY,null),t.dom);if("end"===i&&n.clear(),r){var o=r.type;e.gestureEvent=o,t.handler.dispatchToElement(r.target,o,r.event)}}function o(t){t._touching=!0,clearTimeout(t._touchTimer),t._touchTimer=setTimeout(function(){t._touching=!1},700)}function a(t){var e=t.pointerType;return"pen"===e||"touch"===e}function s(t){function e(t,e){return function(){if(!e._touching)return t.apply(e,arguments)}}u.each(x,function(e){t._handlers[e]=u.bind(w[e],t)}),u.each(b,function(e){t._handlers[e]=u.bind(w[e],t)}),u.each(y,function(i){t._handlers[i]=e(w[i],t)})}function l(t){function e(e,i){u.each(e,function(e){p(t,n(e),i._handlers[e])},i)}c.call(this),this.dom=t,this._touching=!1,this._touchTimer,this._gestureMgr=new f,this._handlers={},s(this),d.pointerEventsSupported?e(b,this):(d.touchEventsSupported&&e(x,this),e(y,this))}var h=i(25),u=i(1),c=i(21),d=i(10),f=i(150),p=h.addEventListener,g=h.removeEventListener,m=h.normalizeEvent,v=300,y=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],x=["touchstart","touchend","touchmove"],_={pointerdown:1,pointerup:1,pointermove:1,pointerout:1},b=u.map(y,function(t){var e=t.replace("mouse","pointer");return _[e]?e:t}),w={mousemove:function(t){t=m(this.dom,t),this.trigger("mousemove",t)},mouseout:function(t){t=m(this.dom,t);var e=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=m(this.dom,t),t.zrByTouch=!0,this._lastTouchMoment=new Date,r(this,t,"start"),w.mousemove.call(this,t),w.mousedown.call(this,t),o(this)},touchmove:function(t){t=m(this.dom,t),t.zrByTouch=!0,r(this,t,"change"),w.mousemove.call(this,t),o(this)},touchend:function(t){t=m(this.dom,t),t.zrByTouch=!0,r(this,t,"end"),w.mouseup.call(this,t),+new Date-this._lastTouchMoment<v&&w.click.call(this,t),o(this)},pointerdown:function(t){w.mousedown.call(this,t)},pointermove:function(t){a(t)||w.mousemove.call(this,t)},pointerup:function(t){w.mouseup.call(this,t)},pointerout:function(t){a(t)||w.mouseout.call(this,t)}};u.each(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],function(t){w[t]=function(e){e=m(this.dom,e),this.trigger(t,e)}});var M=l.prototype;M.dispose=function(){for(var t=y.concat(x),e=0;e<t.length;e++){var i=t[e];g(this.dom,n(i),this._handlers[i])}},M.setCursor=function(t){this.dom.style.cursor=t||"default"},u.mixin(l,c),t.exports=l},function(t,e,i){var n=i(7);t.exports=n.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.setScale(e[0],e[1])},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(),n.prototype.getBoundingRect.call(this)}})},function(t,e,i){"use strict";var n=i(1),r=i(37),o=function(t,e,i,n,o){this.x=null==t?.5:t,this.y=null==e?.5:e,this.r=null==i?.5:i,this.type="radial",this.global=o||!1,r.call(this,n)};o.prototype={constructor:o},n.inherits(o,r),t.exports=o},function(t,e){t.exports={buildPath:function(t,e){var i,n,r,o,a=e.x,s=e.y,l=e.width,h=e.height,u=e.r;l<0&&(a+=l,l=-l),h<0&&(s+=h,h=-h),"number"==typeof u?i=n=r=o=u:u instanceof Array?1===u.length?i=n=r=o=u[0]:2===u.length?(i=r=u[0],n=o=u[1]):3===u.length?(i=u[0],n=o=u[1],r=u[2]):(i=u[0],n=u[1],r=u[2],o=u[3]):i=n=r=o=0;var c;i+n>l&&(c=i+n,i*=l/c,n*=l/c),r+o>l&&(c=r+o,r*=l/c,o*=l/c),n+r>h&&(c=n+r,n*=h/c,r*=h/c),i+o>h&&(c=i+o,i*=h/c,o*=h/c),t.moveTo(a+i,s),t.lineTo(a+l-n,s),0!==n&&t.quadraticCurveTo(a+l,s,a+l,s+n),t.lineTo(a+l,s+h-r),0!==r&&t.quadraticCurveTo(a+l,s+h,a+l-r,s+h),t.lineTo(a+o,s+h),0!==o&&t.quadraticCurveTo(a,s+h,a,s+h-o),t.lineTo(a,s+i),0!==i&&t.quadraticCurveTo(a,s,a+i,s)}}},function(t,e,i){var n=i(5),r=n.min,o=n.max,a=n.scale,s=n.distance,l=n.add;t.exports=function(t,e,i,h){var u,c,d,f,p=[],g=[],m=[],v=[];if(h){d=[1/0,1/0],f=[-(1/0),-(1/0)];for(var y=0,x=t.length;y<x;y++)r(d,d,t[y]),o(f,f,t[y]);r(d,d,h[0]),o(f,f,h[1])}for(var y=0,x=t.length;y<x;y++){var _=t[y];if(i)u=t[y?y-1:x-1],c=t[(y+1)%x];else{if(0===y||y===x-1){p.push(n.clone(t[y]));continue}u=t[y-1],c=t[y+1]}n.sub(g,c,u),a(g,g,e);var b=s(_,u),w=s(_,c),M=b+w;0!==M&&(b/=M,w/=M),a(m,g,-b),a(v,g,w);var S=l([],_,m),T=l([],_,v);h&&(o(S,S,d),r(S,S,f),o(T,T,d),r(T,T,f)),p.push(S),p.push(T)}return i&&p.push(p.shift()),p}},function(t,e,i){function n(t,e,i,n,r,o,a){var s=.5*(i-t),l=.5*(n-e);return(2*(e-i)+s+l)*a+(-3*(e-i)-2*s-l)*o+s*r+e}var r=i(5);t.exports=function(t,e){for(var i=t.length,o=[],a=0,s=1;s<i;s++)a+=r.distance(t[s-1],t[s]);var l=a/2;l=l<i?i:l;for(var s=0;s<l;s++){var h,u,c,d=s/(l-1)*(e?i:i-1),f=Math.floor(d),p=d-f,g=t[f%i];e?(h=t[(f-1+i)%i],u=t[(f+1)%i],c=t[(f+2)%i]):(h=t[0===f?f:f-1],u=t[f>i-2?i-1:f+1],c=t[f>i-3?i-1:f+2]);var m=p*p,v=p*m;o.push([n(h[0],g[0],u[0],c[0],p,m,v),n(h[1],g[1],u[1],c[1],p,m,v)])}return o}},function(t,e,i){t.exports=i(7).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,r=Math.max(e.r,0),o=e.startAngle,a=e.endAngle,s=e.clockwise,l=Math.cos(o),h=Math.sin(o);t.moveTo(l*r+i,h*r+n),t.arc(i,n,r,o,a,!s)}})},function(t,e,i){"use strict";function n(t,e,i){var n=t.cpx2,r=t.cpy2;return null===n||null===r?[(i?c:h)(t.x1,t.cpx1,t.cpx2,t.x2,e),(i?c:h)(t.y1,t.cpy1,t.cpy2,t.y2,e)]:[(i?u:l)(t.x1,t.cpx1,t.x2,e),(i?u:l)(t.y1,t.cpy1,t.y2,e)]}var r=i(18),o=i(5),a=r.quadraticSubdivide,s=r.cubicSubdivide,l=r.quadraticAt,h=r.cubicAt,u=r.quadraticDerivativeAt,c=r.cubicDerivativeAt,d=[];t.exports=i(7).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,r=e.x2,o=e.y2,l=e.cpx1,h=e.cpy1,u=e.cpx2,c=e.cpy2,f=e.percent;0!==f&&(t.moveTo(i,n),null==u||null==c?(f<1&&(a(i,l,r,f,d),l=d[1],r=d[2],a(n,h,o,f,d),h=d[1],o=d[2]),t.quadraticCurveTo(l,h,r,o)):(f<1&&(s(i,l,u,r,f,d),l=d[1],u=d[2],r=d[3],s(n,h,c,o,f,d),h=d[1],c=d[2],o=d[3]),t.bezierCurveTo(l,h,u,c,r,o)))},pointAt:function(t){return n(this.shape,t,!1)},tangentAt:function(t){var e=n(this.shape,t,!0);return o.normalize(e,e)}})},function(t,e,i){"use strict";t.exports=i(7).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)}})},function(t,e,i){t.exports=i(7).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=e.x1,n=e.y1,r=e.x2,o=e.y2,a=e.percent;0!==a&&(t.moveTo(i,n),a<1&&(r=i*(1-a)+r*a,o=n*(1-a)+o*a),t.lineTo(r,o))},pointAt:function(t){var e=this.shape;return[e.x1*(1-t)+e.x2*t,e.y1*(1-t)+e.y2*t]}})},function(t,e,i){var n=i(67);t.exports=i(7).extend({type:"polygon",shape:{points:null,smooth:!1,smoothConstraint:null},buildPath:function(t,e){n.buildPath(t,e,!0)}})},function(t,e,i){var n=i(67);t.exports=i(7).extend({type:"polyline",shape:{points:null,smooth:!1,smoothConstraint:null},style:{stroke:"#000",fill:null},buildPath:function(t,e){n.buildPath(t,e,!1)}})},function(t,e,i){var n=i(155);t.exports=i(7).extend({type:"rect",shape:{r:0,x:0,y:0,width:0,height:0},buildPath:function(t,e){var i=e.x,r=e.y,o=e.width,a=e.height;e.r?n.buildPath(t,e):t.rect(i,r,o,a),t.closePath()}})},function(t,e,i){t.exports=i(7).extend({type:"ring",shape:{cx:0,cy:0,r:0,r0:0},buildPath:function(t,e){var i=e.cx,n=e.cy,r=2*Math.PI;t.moveTo(i+e.r,n),t.arc(i,n,e.r,0,r,!1),t.moveTo(i+e.r0,n),t.arc(i,n,e.r0,0,r,!0)}})},function(t,e,i){var n=i(10),r=i(7),o=[["shadowBlur",0],["shadowColor","#000"],["shadowOffsetX",0],["shadowOffsetY",0]];t.exports=r.extend({type:"sector",shape:{cx:0,cy:0,r0:0,r:0,startAngle:0,endAngle:2*Math.PI,clockwise:!0},brush:n.browser.ie&&n.browser.version>=11?function(){var t,e=this.__clipPaths,i=this.style;if(e)for(var n=0;n<e.length;n++){var a=e[n]&&e[n].shape;if(a&&a.startAngle===a.endAngle){for(var s=0;s<o.length;s++)o[s][2]=i[o[s][0]],i[o[s][0]]=o[s][1];t=!0;break}}if(r.prototype.brush.apply(this,arguments),t)for(var s=0;s<o.length;s++)i[o[s][0]]=o[s][2]}:r.prototype.brush,buildPath:function(t,e){var i=e.cx,n=e.cy,r=Math.max(e.r0||0,0),o=Math.max(e.r,0),a=e.startAngle,s=e.endAngle,l=e.clockwise,h=Math.cos(a),u=Math.sin(a);t.moveTo(h*r+i,u*r+n),t.lineTo(h*o+i,u*o+n),t.arc(i,n,o,a,s,!l),t.lineTo(Math.cos(s)*r+i,Math.sin(s)*r+n),0!==r&&t.arc(i,n,r,s,a,l),t.closePath()}})},function(t,e,i){"use strict";var n=i(61),r=i(1),o=r.isString,a=r.isFunction,s=r.isObject,l=i(48),h=function(){this.animators=[]};h.prototype={constructor:h,animate:function(t,e){var i,o=!1,a=this,s=this.__zr;if(t){var h=t.split("."),u=a;o="shape"===h[0];for(var c=0,d=h.length;c<d;c++)u&&(u=u[h[c]]);u&&(i=u)}else i=a;if(!i)return void l('Property "'+t+'" is not existed in element '+a.id);var f=a.animators,p=new n(i,e);return p.during(function(t){a.dirty(o)}).done(function(){f.splice(r.indexOf(f,p),1)}),f.push(p),s&&s.animation.addAnimator(p),p},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,r){function s(){h--,h||r&&r()}o(i)?(r=n,n=i,i=0):a(n)?(r=n,n="linear",i=0):a(i)?(r=i,i=0):a(e)?(r=e,e=500):e||(e=500),this.stopAnimation(),this._animateToShallow("",this,t,e,i,n,r);var l=this.animators.slice(),h=l.length;h||r&&r();for(var u=0;u<l.length;u++)l[u].done(s).start(n)},_animateToShallow:function(t,e,i,n,o){var a={},l=0;for(var h in i)if(i.hasOwnProperty(h))if(null!=e[h])s(i[h])&&!r.isArrayLike(i[h])?this._animateToShallow(t?t+"."+h:h,e[h],i[h],n,o):(a[h]=i[h],l++);else if(null!=i[h])if(t){var u={};u[t]={},u[t][h]=i[h],this.attr(u)}else this.attr(h,i[h]);return l>0&&this.animate(t,!1).when(null==n?500:n,a).delay(o||0),this}},t.exports=h},function(t,e){function i(){this.on("mousedown",this._dragStart,this),this.on("mousemove",this._drag,this),this.on("mouseup",this._dragEnd,this),this.on("globalout",this._dragEnd,this)}i.prototype={constructor:i,_dragStart:function(t){var e=t.target;e&&e.draggable&&(this._draggingTarget=e,e.dragging=!0,this._x=t.offsetX,this._y=t.offsetY,this.dispatchToElement(e,"dragstart",t.event))},_drag:function(t){var e=this._draggingTarget;if(e){var i=t.offsetX,n=t.offsetY,r=i-this._x,o=n-this._y;this._x=i,this._y=n,e.drift(r,o,t),this.dispatchToElement(e,"drag",t.event);var a=this.findHover(i,n,e),s=this._dropTarget;this._dropTarget=a,e!==a&&(s&&a!==s&&this.dispatchToElement(s,"dragleave",t.event),a&&a!==s&&this.dispatchToElement(a,"dragenter",t.event))}},_dragEnd:function(t){var e=this._draggingTarget;e&&(e.dragging=!1),this.dispatchToElement(e,"dragend",t.event),this._dropTarget&&this.dispatchToElement(this._dropTarget,"drop",t.event),this._draggingTarget=null,this._dropTarget=null}},t.exports=i},function(t,e,i){function n(t,e,i,n,r,o,a,s,l,h,u){var g=l*(p/180),y=f(g)*(t-i)/2+d(g)*(e-n)/2,x=-1*d(g)*(t-i)/2+f(g)*(e-n)/2,_=y*y/(a*a)+x*x/(s*s);_>1&&(a*=c(_),s*=c(_));var b=(r===o?-1:1)*c((a*a*(s*s)-a*a*(x*x)-s*s*(y*y))/(a*a*(x*x)+s*s*(y*y)))||0,w=b*a*x/s,M=b*-s*y/a,S=(t+i)/2+f(g)*w-d(g)*M,T=(e+n)/2+d(g)*w+f(g)*M,A=v([1,0],[(y-w)/a,(x-M)/s]),I=[(y-w)/a,(x-M)/s],C=[(-1*y-w)/a,(-1*x-M)/s],k=v(I,C);m(I,C)<=-1&&(k=p),m(I,C)>=1&&(k=0),0===o&&k>0&&(k-=2*p),1===o&&k<0&&(k+=2*p),u.addData(h,S,T,a,s,A,k,g,o)}function r(t){if(!t)return[];var e,i=t.replace(/-/g," -").replace(/  /g," ").replace(/ /g,",").replace(/,,/g,",");for(e=0;e<u.length;e++)i=i.replace(new RegExp(u[e],"g"),"|"+u[e]);var r,o=i.split("|"),a=0,l=0,h=new s,c=s.CMD;for(e=1;e<o.length;e++){var d,f=o[e],p=f.charAt(0),g=0,m=f.slice(1).replace(/e,-/g,"e-").split(",");m.length>0&&""===m[0]&&m.shift();for(var v=0;v<m.length;v++)m[v]=parseFloat(m[v]);for(;g<m.length&&!isNaN(m[g])&&!isNaN(m[0]);){var y,x,_,b,w,M,S,T=a,A=l;switch(p){case"l":a+=m[g++],l+=m[g++],d=c.L,h.addData(d,a,l);break;case"L":a=m[g++],l=m[g++],d=c.L,h.addData(d,a,l);break;case"m":a+=m[g++],l+=m[g++],d=c.M,h.addData(d,a,l),p="l";break;case"M":a=m[g++],l=m[g++],d=c.M,h.addData(d,a,l),p="L";break;case"h":a+=m[g++],d=c.L,h.addData(d,a,l);break;case"H":a=m[g++],d=c.L,h.addData(d,a,l);break;case"v":l+=m[g++],d=c.L,h.addData(d,a,l);break;case"V":l=m[g++],d=c.L,h.addData(d,a,l);break;case"C":d=c.C,h.addData(d,m[g++],m[g++],m[g++],m[g++],m[g++],m[g++]),a=m[g-2],l=m[g-1];break;case"c":d=c.C,h.addData(d,m[g++]+a,m[g++]+l,m[g++]+a,m[g++]+l,m[g++]+a,m[g++]+l),a+=m[g-2],l+=m[g-1];break;case"S":y=a,x=l;var I=h.len(),C=h.data;r===c.C&&(y+=a-C[I-4],x+=l-C[I-3]),d=c.C,T=m[g++],A=m[g++],a=m[g++],l=m[g++],h.addData(d,y,x,T,A,a,l);break;case"s":y=a,x=l;var I=h.len(),C=h.data;r===c.C&&(y+=a-C[I-4],x+=l-C[I-3]),d=c.C,T=a+m[g++],A=l+m[g++],a+=m[g++],l+=m[g++],h.addData(d,y,x,T,A,a,l);break;case"Q":T=m[g++],A=m[g++],a=m[g++],l=m[g++],d=c.Q,h.addData(d,T,A,a,l);break;case"q":T=m[g++]+a,A=m[g++]+l,a+=m[g++],l+=m[g++],d=c.Q,h.addData(d,T,A,a,l);break;case"T":y=a,x=l;var I=h.len(),C=h.data;r===c.Q&&(y+=a-C[I-4],x+=l-C[I-3]),a=m[g++],l=m[g++],d=c.Q,h.addData(d,y,x,a,l);break;case"t":y=a,x=l;var I=h.len(),C=h.data;r===c.Q&&(y+=a-C[I-4],x+=l-C[I-3]),a+=m[g++],l+=m[g++],d=c.Q,h.addData(d,y,x,a,l);break;case"A":_=m[g++],b=m[g++],w=m[g++],M=m[g++],S=m[g++],T=a,A=l,a=m[g++],l=m[g++],d=c.A,n(T,A,a,l,M,S,_,b,w,d,h);break;case"a":_=m[g++],b=m[g++],w=m[g++],M=m[g++],S=m[g++],T=a,A=l,a+=m[g++],l+=m[g++],d=c.A,n(T,A,a,l,M,S,_,b,w,d,h)}}"z"!==p&&"Z"!==p||(d=c.Z,h.addData(d)),r=d}return h.toStatic(),h}function o(t,e){var i,n=r(t);return e=e||{},e.buildPath=function(t){t.setData(n.data),i&&l(t,i);var e=t.getContext();e&&t.rebuildPath(e)},e.applyTransform=function(t){i||(i=h.create()),h.mul(i,t,i),this.dirty(!0)},e}var a=i(7),s=i(29),l=i(170),h=i(20),u=["m","M","l","L","v","V","h","H","z","Z","c","C","q","Q","t","T","s","S","a","A"],c=Math.sqrt,d=Math.sin,f=Math.cos,p=Math.PI,g=function(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])},m=function(t,e){return(t[0]*e[0]+t[1]*e[1])/(g(t)*g(e))},v=function(t,e){return(t[0]*e[1]<t[1]*e[0]?-1:1)*Math.acos(m(t,e))};t.exports={createFromString:function(t,e){return new a(o(t,e))},extendFromString:function(t,e){return a.extend(o(t,e))},mergePath:function(t,e){for(var i=[],n=t.length,r=0;r<n;r++){var o=t[r];o.__dirty&&o.buildPath(o.path,o.shape,!0),i.push(o.path)}var s=new a(e);return s.buildPath=function(t){t.appendPath(i);var e=t.getContext();e&&t.rebuildPath(e)},s}}},function(t,e,i){function n(t,e){var i,n,o,u,c,d,f=t.data,p=r.M,g=r.C,m=r.L,v=r.R,y=r.A,x=r.Q;for(o=0,u=0;o<f.length;){switch(i=f[o++],u=o,n=0,i){case p:n=1;break;case m:n=1;break;case g:n=3;break;case x:n=2;break;case y:var _=e[4],b=e[5],w=l(e[0]*e[0]+e[1]*e[1]),M=l(e[2]*e[2]+e[3]*e[3]),S=h(-e[1]/M,e[0]/w);f[o++]+=_,f[o++]+=b,f[o++]*=w,f[o++]*=M,f[o++]+=S,f[o++]+=S,o+=2,u=o;break;case v:d[0]=f[o++],d[1]=f[o++],a(d,d,e),f[u++]=d[0],f[u++]=d[1],d[0]+=f[o++],d[1]+=f[o++],a(d,d,e),f[u++]=d[0],f[u++]=d[1]}for(c=0;c<n;c++){var d=s[c];d[0]=f[o++],d[1]=f[o++],a(d,d,e),f[u++]=d[0],f[u++]=d[1]}}}var r=i(29).CMD,o=i(5),a=o.applyTransform,s=[[],[],[]],l=Math.sqrt,h=Math.atan2;t.exports=n},function(t,e,i){if(!i(10).canvasSupported){var n,r="urn:schemas-microsoft-com:vml",o=window,a=o.document,s=!1;try{!a.namespaces.zrvml&&a.namespaces.add("zrvml",r),n=function(t){return a.createElement("<zrvml:"+t+' class="zrvml">')}}catch(l){n=function(t){return a.createElement("<"+t+' xmlns="'+r+'" class="zrvml">')}}var h=function(){if(!s){s=!0;var t=a.styleSheets;t.length<31?a.createStyleSheet().addRule(".zrvml","behavior:url(#default#VML)"):t[0].addRule(".zrvml","behavior:url(#default#VML)")}};t.exports={doc:a,initVML:h,createNode:n}}},,,,function(t,e){function i(){throw new Error("setTimeout has not been defined")}function n(){throw new Error("clearTimeout has not been defined")}function r(t){if(u===setTimeout)return setTimeout(t,0);if((u===i||!u)&&setTimeout)return u=setTimeout,setTimeout(t,0);try{return u(t,0)}catch(e){try{return u.call(null,t,0)}catch(e){return u.call(this,t,0)}}}function o(t){if(c===clearTimeout)return clearTimeout(t);if((c===n||!c)&&clearTimeout)return c=clearTimeout,clearTimeout(t);try{return c(t)}catch(e){try{return c.call(null,t)}catch(e){return c.call(this,t)}}}function a(){g&&f&&(g=!1,f.length?p=f.concat(p):m=-1,p.length&&s())}function s(){if(!g){var t=r(a);g=!0;for(var e=p.length;e;){for(f=p,p=[];++m<e;)f&&f[m].run();m=-1,e=p.length}f=null,g=!1,o(t)}}function l(t,e){this.fun=t,this.array=e}function h(){}var u,c,d=t.exports={};!function(){try{u="function"==typeof setTimeout?setTimeout:i}catch(t){u=i}try{c="function"==typeof clearTimeout?clearTimeout:n}catch(t){c=n}}();var f,p=[],g=!1,m=-1;d.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var i=1;i<arguments.length;i++)e[i-1]=arguments[i];p.push(new l(t,e)),1!==p.length||g||r(s)},l.prototype.run=function(){this.fun.apply(null,this.array)},d.title="browser",d.browser=!0,d.env={},d.argv=[],d.version="",d.versions={},d.on=h,d.addListener=h,d.once=h,d.off=h,d.removeListener=h,d.removeAllListeners=h,d.emit=h,d.binding=function(t){throw new Error("process.binding is not supported")},d.cwd=function(){return"/"},d.chdir=function(t){throw new Error("process.chdir is not supported")},d.umask=function(){return 0}},function(t,e,i){function n(){this.group=new r.Group,this._symbolEl=new a({})}var r=i(3),o=i(24),a=r.extendShape({shape:{points:null,sizes:null},symbolProxy:null,buildPath:function(t,e){for(var i=e.points,n=e.sizes,r=this.symbolProxy,o=r.shape,a=0;a<i.length;a++){var s=i[a],l=n[a];l[0]<4?t.rect(s[0]-l[0]/2,s[1]-l[1]/2,l[0],l[1]):(o.x=s[0]-l[0]/2,o.y=s[1]-l[1]/2,o.width=l[0],o.height=l[1],r.buildPath(t,o,!0))}},findDataIndex:function(t,e){for(var i=this.shape,n=i.points,r=i.sizes,o=n.length-1;o>=0;o--){var a=n[o],s=r[o],l=a[0]-s[0]/2,h=a[1]-s[1]/2;if(t>=l&&e>=h&&t<=l+s[0]&&e<=h+s[1])return o}return-1}}),s=n.prototype;s.updateData=function(t){this.group.removeAll();var e=this._symbolEl,i=t.hostModel;e.setShape({points:t.mapArray(t.getItemLayout),sizes:t.mapArray(function(e){var i=t.getItemVisual(e,"symbolSize");return i instanceof Array||(i=[i,i]),i})}),e.symbolProxy=o.createSymbol(t.getVisual("symbol"),0,0,0,0),e.setColor=e.symbolProxy.setColor,e.useStyle(i.getModel("itemStyle.normal").getItemStyle(["color"]));var n=t.getVisual("color");n&&e.setColor(n),e.seriesIndex=i.seriesIndex,e.on("mousemove",function(t){e.dataIndex=null;var i=e.findDataIndex(t.offsetX,t.offsetY);i>0&&(e.dataIndex=i)}),this.group.add(e)},s.updateLayout=function(t){var e=t.getData();this._symbolEl.setShape({points:e.mapArray(e.getItemLayout)})},s.remove=function(){this.group.removeAll()},t.exports=n},function(t,e,i){function n(t){return isNaN(+t.cpx1)||isNaN(+t.cpy1)}var r=i(3),o=i(5),a=r.Line.prototype,s=r.BezierCurve.prototype;t.exports=r.extendShape({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){(n(e)?a:s).buildPath(t,e)},pointAt:function(t){return n(this.shape)?a.pointAt.call(this,t):s.pointAt.call(this,t)},tangentAt:function(t){var e=this.shape,i=n(e)?[e.x2-e.x1,e.y2-e.y1]:s.tangentAt.call(this,t);return o.normalize(i,i)}})},function(t,e,i){var n=i(1),r=i(2);i(179),i(180),r.registerVisual(n.curry(i(45),"scatter","circle",null)),r.registerLayout(n.curry(i(56),"scatter")),i(31)},function(t,e,i){"use strict";var n=i(35),r=i(16);t.exports=r.extend({type:"series.scatter",dependencies:["grid","polar"],getInitialData:function(t,e){var i=n(t.data,this,e);return i},brushSelector:"point",defaultOption:{coordinateSystem:"cartesian2d",zlevel:0,z:2,legendHoverLink:!0,hoverAnimation:!0,symbolSize:10,large:!1,largeThreshold:2e3,itemStyle:{normal:{opacity:.8}}}})},function(t,e,i){var n=i(39),r=i(176);i(2).extendChartView({type:"scatter",init:function(){this._normalSymbolDraw=new n,this._largeSymbolDraw=new r},render:function(t,e,i){var n=t.getData(),r=this._largeSymbolDraw,o=this._normalSymbolDraw,a=this.group,s=t.get("large")&&n.count()>t.get("largeThreshold")?r:o;this._symbolDraw=s,s.updateData(n),a.add(s.group),a.remove(s===r?o.group:r.group)},updateLayout:function(t){this._symbolDraw.updateLayout(t)},remove:function(t,e){this._symbolDraw&&this._symbolDraw.remove(e,!0)},dispose:function(){}})},function(t,e,i){i(114),i(40),i(41),i(187),i(188),i(183),i(184),i(112),i(111)},function(t,e,i){function n(t,e){var i=[1/0,-(1/0)];return h(e,function(e){var n=e.getData();n&&h(e.coordDimToDataDim(t),function(t){var e=n.getDataExtent(t);e[0]<i[0]&&(i[0]=e[0]),e[1]>i[1]&&(i[1]=e[1])})},this),i[1]<i[0]&&(i=[NaN,NaN]),i}function r(t,e){var i=e.getMin(!0);null!=i&&"dataMin"!==i&&(t[0]=i);var n=e.getMax(!0);return null!=n&&"dataMax"!==n&&(t[1]=n),e.get("scale",!0)||(t[0]>0&&(t[0]=0),t[1]<0&&(t[1]=0)),t}function o(t,e){var i=t.getAxisModel(),n=t._percentWindow,r=t._valueWindow;if(n){var o=s.getPixelPrecision(r,[0,500]),a=e||0===n[0]&&100===n[1];i.setRange(a?null:+r[0].toFixed(o),a?null:+r[1].toFixed(o))}}var a=i(1),s=i(4),l=i(68),h=a.each,u=s.asc,c=function(t,e,i,n){this._dimName=t,this._axisIndex=e,this._valueWindow,this._percentWindow,this._dataExtent,this.ecModel=n,this._dataZoomModel=i};c.prototype={constructor:c,hostedBy:function(t){return this._dataZoomModel===t},getDataValueWindow:function(){return this._valueWindow.slice()},getDataPercentWindow:function(){return this._percentWindow.slice()},getTargetSeriesModels:function(){var t=[],e=this.ecModel;return e.eachSeries(function(i){if(l.isCoordSupported(i.get("coordinateSystem"))){var n=this._dimName,r=e.queryComponents({mainType:n+"Axis",index:i.get(n+"AxisIndex"),id:i.get(n+"AxisId")})[0];this._axisIndex===(r&&r.componentIndex)&&t.push(i)}},this),t},getAxisModel:function(){return this.ecModel.getComponent(this._dimName+"Axis",this._axisIndex)},getOtherAxisModel:function(){var t,e,i=this._dimName,n=this.ecModel,r=this.getAxisModel(),o="x"===i||"y"===i;o?(e="gridIndex",t="x"===i?"y":"x"):(e="polarIndex",t="angle"===i?"radius":"angle");var a;return n.eachComponent(t+"Axis",function(t){(t.get(e)||0)===(r.get(e)||0)&&(a=t)}),a},calculateDataWindow:function(t){var e=this._dataExtent,i=this.getAxisModel(),n=i.axis.scale,o=[0,100],a=[t.start,t.end],l=[];return e=e.slice(),r(e,i),h(["startValue","endValue"],function(e){l.push(null!=t[e]?n.parse(t[e]):null)}),h([0,1],function(t){var i=l[t],r=a[t];null!=r||null==i?(null==r&&(r=o[t]),i=n.parse(s.linearMap(r,o,e,!0))):r=s.linearMap(i,e,o,!0),l[t]=i,a[t]=r}),{valueWindow:u(l),percentWindow:u(a)}},reset:function(t){if(t===this._dataZoomModel){this._dataExtent=n(this._dimName,this.getTargetSeriesModels());var e=this.calculateDataWindow(t.option);this._valueWindow=e.valueWindow,this._percentWindow=e.percentWindow,o(this)}},restore:function(t){t===this._dataZoomModel&&(this._valueWindow=this._percentWindow=null,o(this,!0))},filterData:function(t){function e(t){return t>=o[0]&&t<=o[1]}if(t===this._dataZoomModel){var i=this._dimName,n=this.getTargetSeriesModels(),r=t.get("filterMode"),o=this._valueWindow,a=this.getOtherAxisModel();t.get("$fromToolbox")&&a&&"category"===a.get("type")&&(r="empty"),h(n,function(t){var n=t.getData();n&&h(t.coordDimToDataDim(i),function(i){"empty"===r?t.setData(n.map(i,function(t){return e(t)?t:NaN})):n.filterSelf(i,e)})})}}},t.exports=c},function(t,e,i){t.exports=i(40).extend({type:"dataZoom.inside",defaultOption:{disabled:!1,zoomLock:!1}})},function(t,e,i){function n(t){var e=[0,100];return!(t[0]<=e[1])&&(t[0]=e[1]),!(t[1]<=e[1])&&(t[1]=e[1]),!(t[0]>=e[0])&&(t[0]=e[0]),!(t[1]>=e[0])&&(t[1]=e[0]),
-t}var r=i(41),o=i(1),a=i(85),s=i(189),l=o.bind,h=r.extend({type:"dataZoom.inside",init:function(t,e){this._range},render:function(t,e,i,n){h.superApply(this,"render",arguments),s.shouldRecordRange(n,t.id)&&(this._range=t.getPercentRange()),o.each(this.getTargetCoordInfo(),function(e,n){var r=o.map(e,function(t){return s.generateCoordId(t.model)});o.each(e,function(e){var o=e.model;s.register(i,{coordId:s.generateCoordId(o),allCoordIds:r,containsPoint:function(t,e){return o.coordinateSystem.containPoint([t,e])},dataZoomId:t.id,throttleRate:t.get("throttle",!0),panGetRange:l(this._onPan,this,e,n),zoomGetRange:l(this._onZoom,this,e,n)})},this)},this)},dispose:function(){s.unregister(this.api,this.dataZoomModel.id),h.superApply(this,"dispose",arguments),this._range=null},_onPan:function(t,e,i,n,r,o,s,l,h){if(this.dataZoomModel.option.disabled)return this._range;var c=this._range.slice(),d=t.axisModels[0];if(d){var f=u[e]([o,s],[l,h],d,i,t),p=f.signal*(c[1]-c[0])*f.pixel/f.pixelLength;return a(p,c,[0,100],"rigid"),this._range=c}},_onZoom:function(t,e,i,r,o,a){var s=this.dataZoomModel.option;if(s.disabled||s.zoomLock)return this._range;var l=this._range.slice(),h=t.axisModels[0];if(h){var c=u[e](null,[o,a],h,i,t),d=(c.pixel-c.pixelStart)/c.pixelLength*(l[1]-l[0])+l[0];return r=Math.max(1/r,0),l[0]=(l[0]-d)*r+d,l[1]=(l[1]-d)*r+d,this._range=n(l)}}}),u={grid:function(t,e,i,n,r){var o=i.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,i,n,r){var o=i.axis,a={},s=r.model.coordinateSystem,l=s.getRadiusAxis().getExtent(),h=s.getAngleAxis().getExtent();return t=t?s.pointToCoord(t):[0,0],e=s.pointToCoord(e),"radiusAxis"===i.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=h[1]-h[0],a.pixelStart=h[0],a.signal=o.inverse?-1:1),a},singleAxis:function(t,e,i,n,r){var o=i.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}};t.exports=h},function(t,e,i){var n=i(40);t.exports=n.extend({type:"dataZoom.select"})},function(t,e,i){t.exports=i(41).extend({type:"dataZoom.select"})},function(t,e,i){var n=i(40),r=n.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"}}});t.exports=r},function(t,e,i){function n(t){var e={x:"y",y:"x",radius:"angle",angle:"radius"};return e[t]}var r=i(1),o=i(3),a=i(47),s=i(41),l=o.Rect,h=i(4),u=h.linearMap,c=i(12),d=i(85),f=h.asc,p=r.bind,g=r.each,m=7,v=1,y=30,x="horizontal",_="vertical",b=5,w=["line","bar","candlestick","scatter"],M=s.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){return M.superApply(this,"render",arguments),a.createOrUpdate(this,"_dispatchZoomAction",this.dataZoomModel.get("throttle"),"fixRate"),this._orient=t.get("orient"),this.dataZoomModel.get("show")===!1?void this.group.removeAll():(n&&"dataZoom"===n.type&&n.from===this.uid||this._buildView(),void this._updateView())},remove:function(){M.superApply(this,"remove",arguments),a.clear(this,"_dispatchZoomAction")},dispose:function(){M.superApply(this,"dispose",arguments),a.clear(this,"_dispatchZoomAction")},_buildView:function(){var t=this.group;t.removeAll(),this._resetLocation(),this._resetInterval();var e=this._displayables.barGroup=new o.Group;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()},o=this._orient===x?{right:n.width-i.x-i.width,top:n.height-y-m,width:i.width,height:y}:{right:m,top:i.y,width:y,height:i.height},a=c.getLayoutParams(t.option);r.each(["right","top","width","height"],function(t){"ph"===a[t]&&(a[t]=o[t])});var s=c.getLayoutRect(a,n,t.padding);this._location={x:s.x,y:s.y},this._size=[s.width,s.height],this._orient===_&&this._size.reverse()},_positionGroup:function(){var t=this.group,e=this._location,i=this._orient,n=this.dataZoomModel.getFirstTargetAxisModel(),r=n&&n.get("inverse"),o=this._displayables.barGroup,a=(this._dataShadowInfo||{}).otherAxisInverse;o.attr(i!==x||r?i===x&&r?{scale:a?[-1,1]:[-1,-1]}:i!==_||r?{scale:a?[-1,-1]:[-1,1],rotation:Math.PI/2}:{scale:a?[1,-1]:[1,1],rotation:Math.PI/2}:{scale:a?[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;this._displayables.barGroup.add(new l({silent:!0,shape:{x:0,y:0,width:e[0],height:e[1]},style:{fill:t.get("backgroundColor")},z2:-40}))},_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 s=n.getDataExtent(a),l=.3*(s[1]-s[0]);s=[s[0]-l,s[1]+l];var h,c=[0,e[1]],d=[0,e[0]],f=[[e[0],0],[0,0]],p=[],g=d[1]/(n.count()-1),m=0,v=Math.round(n.count()/e[0]);n.each([a],function(t,e){if(v>0&&e%v)return void(m+=g);var i=null==t||isNaN(t)||""===t,n=i?0:u(t,s,c,!0);i&&!h&&e?(f.push([f[f.length-1][0],0]),p.push([p[p.length-1][0],0])):!i&&h&&(f.push([m,0]),p.push([m,0])),f.push([m,n]),p.push([m,n]),m+=g,h=i});var y=this.dataZoomModel;this._displayables.barGroup.add(new o.Polygon({shape:{points:f},style:r.defaults({fill:y.get("dataBackgroundColor")},y.getModel("dataBackground.areaStyle").getAreaStyle()),silent:!0,z2:-20})),this._displayables.barGroup.add(new o.Polyline({shape:{points:p},style:y.getModel("dataBackground.lineStyle").getLineStyle(),silent:!0,z2:-19}))}}},_prepareDataShadowInfo:function(){var t=this.dataZoomModel,e=t.get("showDataShadow");if(e!==!1){var i,o=this.ecModel;return t.eachTargetAxis(function(a,s){var l=t.getAxisProxy(a.name,s).getTargetSeriesModels();r.each(l,function(t){if(!(i||e!==!0&&r.indexOf(w,t.get("type"))<0)){var l,h=o.getComponent(a.axis,s).axis,u=n(a.name),c=t.coordinateSystem;null!=u&&c.getOtherAxis&&(l=c.getOtherAxis(h).inverse),i={thisAxis:h,series:t,thisDim:a.name,otherDim:u,otherAxisInverse:l}}},this)},this),i}},_renderHandle:function(){var t=this._displayables,e=t.handles=[],i=t.handleLabels=[],n=this._displayables.barGroup,r=this._size,a=this.dataZoomModel;n.add(t.filler=new l({draggable:!0,cursor:"move",drift:p(this._onDragMove,this,"all"),ondragstart:p(this._showDataInfo,this,!0),ondragend:p(this._onDragEnd,this),onmouseover:p(this._showDataInfo,this,!0),onmouseout:p(this._showDataInfo,this,!1),style:{fill:a.get("fillerColor"),textPosition:"inside"}})),n.add(new l(o.subPixelOptimizeRect({silent:!0,shape:{x:0,y:0,width:r[0],height:r[1]},style:{stroke:a.get("dataBackgroundColor")||a.get("borderColor"),lineWidth:v,fill:"rgba(0,0,0,0)"}})));var s=a.get("handleIcon");g([0,1],function(t){var r=o.makePath(s,{style:{strokeNoScale:!0},rectHover:!0,cursor:"vertical"===this._orient?"ns-resize":"ew-resize",draggable:!0,drift:p(this._onDragMove,this,t),ondragend:p(this._onDragEnd,this),onmouseover:p(this._showDataInfo,this,!0),onmouseout:p(this._showDataInfo,this,!1)},{x:-.5,y:0,width:1,height:1},"center"),l=r.getBoundingRect();this._handleHeight=h.parsePercent(a.get("handleSize"),this._size[1]),this._handleWidth=l.width/l.height*this._handleHeight,r.setStyle(a.getModel("handleStyle").getItemStyle());var u=a.get("handleColor");null!=u&&(r.style.fill=u),n.add(e[t]=r);var c=a.textStyleModel;this.group.add(i[t]=new o.Text({silent:!0,invisible:!0,style:{x:0,y:0,text:"",textVerticalAlign:"middle",textAlign:"center",fill:c.getTextColor(),textFont:c.getFont()},z2:10}))},this)},_resetInterval:function(){var t=this._range=this.dataZoomModel.getPercentRange(),e=this._getViewExtent();this._handleEnds=[u(t[0],[0,100],e,!0),u(t[1],[0,100],e,!0)]},_updateInterval:function(t,e){var i=this._handleEnds,n=this._getViewExtent();d(e,i,n,"all"===t||this.dataZoomModel.get("zoomLock")?"rigid":"cross",t),this._range=f([u(i[0],n,[0,100],!0),u(i[1],n,[0,100],!0)])},_updateView:function(t){var e=this._displayables,i=this._handleEnds,n=f(i.slice()),r=this._size;g([0,1],function(t){var n=e.handles[t],o=this._handleHeight;n.attr({scale:[o,o],position:[i[t],r[1]/2-o/2]})},this),e.filler.setShape({x:n[0],y:0,width:n[1]-n[0],height:r[1]}),this._updateDataInfo(t)},_updateDataInfo:function(t){function e(t){var e=o.getTransform(n.handles[t].parent,this.group),i=o.transformDirection(0===t?"right":"left",e),l=this._handleWidth/2+b,h=o.applyTransform([d[t]+(0===t?-l:l),this._size[1]/2],e);r[t].setStyle({x:h[0],y:h[1],textVerticalAlign:a===x?"middle":i,textAlign:a===x?i:"center",text:s[t]})}var i=this.dataZoomModel,n=this._displayables,r=n.handleLabels,a=this._orient,s=["",""];if(i.get("showDetail")){var l=i.findRepresentativeAxisProxy();if(l){var h=l.getAxisModel().axis,u=this._range,c=t?l.calculateDataWindow({start:u[0],end:u[1]}).valueWindow:l.getDataValueWindow();s=[this._formatLabel(c[0],h),this._formatLabel(c[1],h)]}}var d=f(this._handleEnds.slice());e.call(this,0),e.call(this,1)},_formatLabel:function(t,e){var i=this.dataZoomModel,n=i.get("labelFormatter"),o=i.get("labelPrecision");null!=o&&"auto"!==o||(o=e.getPixelPrecision());var a=null==t||isNaN(t)?"":"category"===e.type||"time"===e.type?e.scale.getLabel(Math.round(t)):t.toFixed(Math.min(o,20));return r.isFunction(n)?n(t,a):r.isString(n)?n.replace("{value}",a):a},_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=this._applyBarTransform([e,i],!0);this._updateInterval(t,n[0]);var r=this.dataZoomModel.get("realtime");this._updateView(!r),r&&r&&this._dispatchZoomAction()},_onDragEnd:function(){this._dragging=!1,this._showDataInfo(!1),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]})},_applyBarTransform:function(t,e){var i=this._displayables.barGroup.getLocalTransform();return o.applyTransform(t,i,e)},_findCoordRect:function(){var t;if(g(this.getTargetCoordInfo(),function(e){if(!t&&e.length){var i=e[0].model.coordinateSystem;t=i.getRect&&i.getRect()}}),!t){var e=this.api.getWidth(),i=this.api.getHeight();t={x:.2*e,y:.2*i,width:.6*e,height:.6*i}}return t}});t.exports=M},function(t,e,i){function n(t){var e=t.getZr();return e[p]||(e[p]={})}function r(t,e,i){var n=new c(t.getZr());return n.enable(),n.on("pan",f(a,i)),n.on("zoom",f(s,i)),n}function o(t){u.each(t,function(e,i){e.count||(e.controller.dispose(),delete t[i])})}function a(t,e,i,n,r,o,a){l(t,function(s){return s.panGetRange(t.controller,e,i,n,r,o,a)})}function s(t,e,i,n){l(t,function(r){return r.zoomGetRange(t.controller,e,i,n)})}function l(t,e){var i=[];u.each(t.dataZoomInfos,function(t){var n=e(t);n&&i.push({dataZoomId:t.dataZoomId,start:n[0],end:n[1]})}),t.dispatchAction(i)}function h(t,e){t.dispatchAction({type:"dataZoom",batch:e})}var u=i(1),c=i(84),d=i(47),f=u.curry,p="\0_ec_dataZoom_roams",g={register:function(t,e){var i=n(t),a=e.dataZoomId,s=e.coordId;u.each(i,function(t,i){var n=t.dataZoomInfos;n[a]&&u.indexOf(e.allCoordIds,s)<0&&(delete n[a],t.count--)}),o(i);var l=i[s];l||(l=i[s]={coordId:s,dataZoomInfos:{},count:0},l.controller=r(t,e,l),l.dispatchAction=u.curry(h,t)),l.controller.setContainsPoint(e.containsPoint),d.createOrUpdate(l,"dispatchAction",e.throttleRate,"fixRate"),!l.dataZoomInfos[a]&&l.count++,l.dataZoomInfos[a]=e},unregister:function(t,e){var i=n(t);u.each(i,function(t){t.controller.dispose();var i=t.dataZoomInfos;i[e]&&(delete i[e],t.count--)}),o(i)},shouldRecordRange:function(t,e){if(t&&"dataZoom"===t.type&&t.batch)for(var i=0,n=t.batch.length;i<n;i++)if(t.batch[i].dataZoomId===e)return!1;return!0},generateCoordId:function(t){return t.type+"\0_"+t.id}};t.exports=g},function(t,e,i){i(114),i(40),i(41),i(185),i(186),i(112),i(111)},function(t,e,i){function n(t,e,i,n){var r=i.type,o=u[r.charAt(0).toUpperCase()+r.slice(1)],a=new o(i);e.add(a),n[t]=a,a.__ecGraphicId=t}function r(t,e){var i=t&&t.parent;i&&("group"===t.type&&t.traverse(function(t){r(t,e)}),delete e[t.__ecGraphicId],i.remove(t))}function o(t){return t=l.extend({},t),l.each(["id","parentId","$action","hv","bounding"].concat(c.LOCATION_PARAMS),function(e){delete t[e]}),t}function a(t,e){var i;return l.each(e,function(e){null!=t[e]&&"auto"!==t[e]&&(i=!0)}),i}var s=i(2),l=i(1),h=i(6),u=i(3),c=i(12);s.registerPreprocessor(function(t){var e=t&&t.graphic;l.isArray(e)?e[0]&&e[0].elements?t.graphic=[t.graphic[0]]:t.graphic=[{elements:e}]:e&&!e.elements&&(t.graphic=[{elements:[e]}])});var d=s.extendComponentModel({type:"graphic",defaultOption:{elements:[],parentId:null},_elOptionsToUpdate:null,mergeOption:function(t){var e=this.option.elements;this.option.elements=null,d.superApply(this,"mergeOption",arguments),this.option.elements=e},optionUpdated:function(t,e){var i=this.option,n=(e?i:t).elements,r=i.elements=e?[]:i.elements,o=[];this._flatten(n,o);var s=h.mappingToExists(r,o);h.makeIdAndName(s);var u=this._elOptionsToUpdate=[];l.each(s,function(t,e){var i=t.exist,n=t.option;if(n){n.id=t.keyInfo.id;var o=n.parentId,s=n.parentOption,h=i&&i.parentId;!n.type&&i&&(n.type=i.type),n.parentId=o?o:s?s.id:h?h:null,n.parentOption=null,u.push(n);var d=l.extend({},n),f=n.$action;if(f&&"merge"!==f)"replace"===f?r[e]=d:"remove"===f&&i&&(r[e]=null);else if(i){l.merge(i,d,!0),c.mergeLayoutParam(i,d,{ignoreSize:!0}),c.copyLayoutParams(n,i)}else r[e]=d;r[e]&&(r[e].hv=n.hv=[a(n,["left","right"]),a(n,["top","bottom"])],"group"===r[e].type&&(null==r[e].width&&(r[e].width=n.width=0),null==r[e].height&&(r[e].height=n.height=0)))}},this);for(var d=r.length-1;d>=0;d--)null==r[d]?r.splice(d,1):delete r[d].$action},_flatten:function(t,e,i){l.each(t,function(t){if(t){i&&(t.parentOption=i),e.push(t);var n=t.children;"group"===t.type&&n&&this._flatten(n,e,t),delete t.children}},this)},useElOptionsToUpdate:function(){var t=this._elOptionsToUpdate;return this._elOptionsToUpdate=null,t}});s.extendComponentView({type:"graphic",init:function(t,e){this._elMap={},this._lastGraphicModel},render:function(t,e,i){t!==this._lastGraphicModel&&this._clear(),this._lastGraphicModel=t,this._updateElements(t,i),this._relocate(t,i)},_updateElements:function(t,e){var i=t.useElOptionsToUpdate();if(i){var a=this._elMap,s=this.group;l.each(i,function(t){var e=t.$action,i=t.id,h=a[i],u=t.parentId,c=null!=u?a[u]:s;t.hv&&t.hv[1]&&"text"===t.type&&(t.style=l.defaults({textBaseline:"middle"},t.style),t.style.textVerticalAlign=null);var d=o(t);e&&"merge"!==e?"replace"===e?(r(h,a),n(i,c,d,a)):"remove"===e&&r(h,a):h?h.attr(d):n(i,c,d,a),a[i]&&(a[i].__ecGraphicWidth=t.width,a[i].__ecGraphicHeight=t.height)})}},_relocate:function(t,e){for(var i=t.option.elements,n=this.group,r=this._elMap,o=i.length-1;o>=0;o--){var a=i[o],s=r[a.id];if(s){var l=s.parent,h=l===n?{width:e.getWidth(),height:e.getHeight()}:{width:l.__ecGraphicWidth||0,height:l.__ecGraphicHeight||0};c.positionElement(s,a,h,null,{hv:a.hv,boundingMode:a.bounding})}}},_clear:function(){var t=this._elMap;l.each(t,function(e){r(e,t)}),this._elMap={}},dispose:function(){this._clear()}})},function(t,e,i){i(193),i(195),i(194);var n=i(2);n.registerProcessor(i(196))},function(t,e,i){"use strict";var n=i(1),r=i(11),o=i(2).extendComponentModel({type:"legend",dependencies:["series"],layoutMode:{type:"box",ignoreSize:!0},init:function(t,e,i){this.mergeDefaultAndTheme(t,i),t.selected=t.selected||{}},mergeOption:function(t){o.superCall(this,"mergeOption",t)},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(t){var e=n.map(this.get("data")||[],function(t){return"string"!=typeof t&&"number"!=typeof t||(t={name:t}),new r(t,this,this.ecModel)},this);this._data=e;var i=n.map(t.getSeries(),function(t){return t.name});t.eachSeries(function(t){if(t.legendDataProvider){var e=t.legendDataProvider();i=i.concat(e.mapArray(e.getName))}}),this._availableNames=i},getData:function(){return this._data},select:function(t){var e=this.option.selected,i=this.get("selectedMode");if("single"===i){var r=this._data;n.each(r,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)},isSelected:function(t){var e=this.option.selected;return!(e.hasOwnProperty(t)&&!e[t])&&n.indexOf(this._availableNames,t)>=0},defaultOption:{zlevel:0,z:4,show:!0,orient:"horizontal",left:"center",top:"top",align:"auto",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,padding:5,itemGap:10,itemWidth:25,itemHeight:14,inactiveColor:"#ccc",textStyle:{color:"#333"},selectedMode:!0,tooltip:{show:!1}}});t.exports=o},function(t,e,i){function n(t,e){e.dispatchAction({type:"legendToggleSelect",name:t})}function r(t,e,i){var n=i.getZr().storage.getDisplayList()[0];n&&n.useHoverLayer||t.get("legendHoverLink")&&i.dispatchAction({type:"highlight",seriesName:t.name,name:e})}function o(t,e,i){var n=i.getZr().storage.getDisplayList()[0];n&&n.useHoverLayer||t.get("legendHoverLink")&&i.dispatchAction({type:"downplay",seriesName:t.name,name:e})}var a=i(1),s=i(24),l=i(3),h=i(118),u=a.curry;t.exports=i(2).extendComponentView({type:"legend",init:function(){this._symbolTypeStore={}},render:function(t,e,i){var s=this.group;if(s.removeAll(),t.get("show")){var c=t.get("selectedMode"),d=t.get("align");"auto"===d&&(d="right"===t.get("left")&&"vertical"===t.get("orient")?"right":"left");var f={};a.each(t.getData(),function(a){var h=a.get("name");if(""===h||"\n"===h)return void s.add(new l.Group({newline:!0}));var p=e.getSeriesByName(h)[0];if(!f[h])if(p){var g=p.getData(),m=g.getVisual("color");"function"==typeof m&&(m=m(p.getDataParams(0)));var v=g.getVisual("legendSymbol")||"roundRect",y=g.getVisual("symbol"),x=this._createItem(h,a,t,v,y,d,m,c);x.on("click",u(n,h,i)).on("mouseover",u(r,p,null,i)).on("mouseout",u(o,p,null,i)),f[h]=!0}else e.eachRawSeries(function(e){if(!f[h]&&e.legendDataProvider){var s=e.legendDataProvider(),l=s.indexOfName(h);if(l<0)return;var p=s.getItemVisual(l,"color"),g="roundRect",m=this._createItem(h,a,t,g,null,d,p,c);m.on("click",u(n,h,i)).on("mouseover",u(r,e,h,i)).on("mouseout",u(o,e,h,i)),f[h]=!0}},this)},this),h.layout(s,t,i),h.addBackground(s,t)}},_createItem:function(t,e,i,n,r,o,h,u){var c=i.get("itemWidth"),d=i.get("itemHeight"),f=i.get("inactiveColor"),p=i.isSelected(t),g=new l.Group,m=e.getModel("textStyle"),v=e.get("icon"),y=e.getModel("tooltip"),x=y.parentModel;if(n=v||n,g.add(s.createSymbol(n,0,0,c,d,p?h:f)),!v&&r&&(r!==n||"none"==r)){var _=.8*d;"none"===r&&(r="circle"),g.add(s.createSymbol(r,(c-_)/2,(d-_)/2,_,_,p?h:f))}var b="left"===o?c+5:-5,w=o,M=i.get("formatter"),S=t;"string"==typeof M&&M?S=M.replace("{name}",null!=t?t:""):"function"==typeof M&&(S=M(t));var T=new l.Text({style:{text:S,x:b,y:d/2,fill:p?m.getTextColor():f,textFont:m.getFont(),textAlign:w,textVerticalAlign:"middle"}});g.add(T);var A=new l.Rect({shape:g.getBoundingRect(),invisible:!0,tooltip:y.get("show")?a.extend({content:t,formatter:x.get("formatter",!0)||function(){return t},formatterParams:{componentType:"legend",legendIndex:i.componentIndex,name:t,$vars:["name"]}},y.option):null});return g.add(A),g.eachChild(function(t){t.silent=!0}),A.silent=!u,this.group.add(g),l.setHoverStyle(g),g}})},function(t,e,i){function n(t,e,i){var n,r={},a="toggleSelected"===t;return i.eachComponent("legend",function(i){a&&null!=n?i[n?"select":"unSelect"](e.name):(i[t](e.name),n=i.isSelected(e.name));var s=i.getData();o.each(s,function(t){var e=t.get("name");if("\n"!==e&&""!==e){var n=i.isSelected(e);e in r?r[e]=r[e]&&n:r[e]=n}})}),{name:e.name,selected:r}}var r=i(2),o=i(1);r.registerAction("legendToggleSelect","legendselectchanged",o.curry(n,"toggleSelected")),r.registerAction("legendSelect","legendselected",o.curry(n,"select")),r.registerAction("legendUnSelect","legendunselected",o.curry(n,"unSelect"))},function(t,e){t.exports=function(t){var e=t.findComponents({mainType:"legend"});e&&e.length&&t.filterSeries(function(t){for(var i=0;i<e.length;i++)if(!e[i].isSelected(t.name))return!1;return!0})}},function(t,e,i){i(200),i(201),i(2).registerPreprocessor(function(t){t.markArea=t.markArea||{}})},function(t,e,i){i(202),i(203),i(2).registerPreprocessor(function(t){t.markLine=t.markLine||{}})},function(t,e,i){i(204),i(205),i(2).registerPreprocessor(function(t){t.markPoint=t.markPoint||{}})},function(t,e,i){t.exports=i(70).extend({type:"markArea",defaultOption:{zlevel:0,z:1,tooltip:{trigger:"item"},animation:!1,label:{normal:{show:!0,position:"top"},emphasis:{show:!0,position:"top"}},itemStyle:{normal:{borderWidth:0}}}})},function(t,e,i){function n(t){return!isNaN(t)&&!isFinite(t)}function r(t,e,i,r){var o=1-t;return n(e[o])&&n(i[o])}function o(t,e){var i=e.coord[0],n=e.coord[1];return!("cartesian2d"!==t.type||!i||!n||!r(1,i,n,t)&&!r(0,i,n,t))||(f.dataFilter(t,{coord:i,x:e.x0,y:e.y0})||f.dataFilter(t,{coord:n,x:e.x1,y:e.y1}))}function a(t,e,i,r,o){var a,s=r.coordinateSystem,l=t.getItemModel(e),h=u.parsePercent(l.get(i[0]),o.getWidth()),c=u.parsePercent(l.get(i[1]),o.getHeight());if(isNaN(h)||isNaN(c)){if(r.getMarkerPosition)a=r.getMarkerPosition(t.getValues(i,e));else{var d=t.get(i[0],e),f=t.get(i[1],e);a=s.dataToPoint([d,f],!0)}if("cartesian2d"===s.type){var p=s.getAxis("x"),g=s.getAxis("y"),d=t.get(i[0],e),f=t.get(i[1],e);n(d)?a[0]=p.toGlobalCoord(p.getExtent()["x0"===i[0]?0:1]):n(f)&&(a[1]=g.toGlobalCoord(g.getExtent()["y0"===i[1]?0:1]))}isNaN(h)||(a[0]=h),isNaN(c)||(a[1]=c)}else a=[h,c];return a}function s(t,e,i){var n,r,a=["x0","y0","x1","y1"];t?(n=l.map(t&&t.dimensions,function(t){var i=e.getData().getDimensionInfo(e.coordDimToDataDim(t)[0])||{};return i.name=t,i}),r=new h(l.map(a,function(t,e){return{name:t,type:n[e%2].type}}),i)):(n=[{name:"value",type:"float"}],r=new h(n,i));var s=l.map(i.get("data"),l.curry(p,e,t,i));t&&(s=l.filter(s,l.curry(o,t)));var u=t?function(t,e,i,n){return t.coord[Math.floor(n/2)][n%2]}:function(t){return t.value};return r.initData(s,null,u),r.hasItemOption=!0,r}var l=i(1),h=i(14),u=i(4),c=i(3),d=i(19),f=i(72),p=function(t,e,i,n){var r=f.dataTransform(t,n[0]),o=f.dataTransform(t,n[1]),a=l.retrieve,s=r.coord,h=o.coord;s[0]=a(s[0],-(1/0)),s[1]=a(s[1],-(1/0)),h[0]=a(h[0],1/0),h[1]=a(h[1],1/0);var u=l.mergeAll([{},r,o]);return u.coord=[r.coord,o.coord],u.x0=r.x,u.y0=r.y,u.x1=o.x,u.y1=o.y,u},g=[["x0","y0"],["x1","y0"],["x1","y1"],["x0","y1"]];i(71).extend({type:"markArea",updateLayout:function(t,e,i){e.eachSeries(function(t){var e=t.markAreaModel;if(e){var n=e.getData();n.each(function(e){var r=l.map(g,function(r){return a(n,e,r,t,i)});n.setItemLayout(e,r);var o=n.getItemGraphicEl(e);o.setShape("points",r)})}},this)},renderSeries:function(t,e,i,n){var r=t.coordinateSystem,o=t.name,h=t.getData(),u=this.markerGroupMap,f=u[o];f||(f=u[o]={group:new c.Group}),this.group.add(f.group),f.__keep=!0;var p=s(r,t,e);e.setData(p),p.each(function(e){p.setItemLayout(e,l.map(g,function(i){return a(p,e,i,t,n)})),p.setItemVisual(e,{color:h.getVisual("color")})}),p.diff(f.__data).add(function(t){var e=new c.Polygon({shape:{points:p.getItemLayout(t)}});p.setItemGraphicEl(t,e),f.group.add(e)}).update(function(t,i){var n=f.__data.getItemGraphicEl(i);c.updateProps(n,{shape:{points:p.getItemLayout(t)}},e,t),f.group.add(n),p.setItemGraphicEl(t,n)}).remove(function(t){var e=f.__data.getItemGraphicEl(t);f.group.remove(e)}).execute(),p.eachItemGraphicEl(function(t,i){var n=p.getItemModel(i),r=n.getModel("label.normal"),o=n.getModel("label.emphasis"),a=p.getItemVisual(i,"color");t.useStyle(l.defaults(n.getModel("itemStyle.normal").getItemStyle(),{fill:d.modifyAlpha(a,.4),stroke:a})),t.hoverStyle=n.getModel("itemStyle.normal").getItemStyle();var s=p.getName(i)||"",h=a||t.style.fill;r.getShallow("show")?(c.setText(t.style,r,h),t.style.text=l.retrieve(e.getFormattedLabel(i,"normal"),s)):t.style.text="",o.getShallow("show")?(c.setText(t.hoverStyle,o,h),t.hoverStyle.text=l.retrieve(e.getFormattedLabel(i,"emphasis"),s)):t.hoverStyle.text="",c.setHoverStyle(t,{}),t.dataModel=e}),f.__data=p,f.group.silent=e.get("silent")||t.get("silent")}})},function(t,e,i){t.exports=i(70).extend({type:"markLine",defaultOption:{zlevel:0,z:5,symbol:["circle","arrow"],symbolSize:[8,16],precision:2,tooltip:{trigger:"item"},label:{normal:{show:!0,position:"end"},emphasis:{show:!0}},lineStyle:{normal:{type:"dashed"},emphasis:{width:3}},animationEasing:"linear"}})},function(t,e,i){function n(t){return!isNaN(t)&&!isFinite(t)}function r(t,e,i,r){var o=1-t,a=r.dimensions[t];return n(e[o])&&n(i[o])&&e[t]===i[t]&&r.getAxis(a).containData(e[t])}function o(t,e){if("cartesian2d"===t.type){var i=e[0].coord,n=e[1].coord;if(i&&n&&(r(1,i,n,t)||r(0,i,n,t)))return!0}return c.dataFilter(t,e[0])&&c.dataFilter(t,e[1])}function a(t,e,i,r,o){var a,s=r.coordinateSystem,l=t.getItemModel(e),h=u.parsePercent(l.get("x"),o.getWidth()),c=u.parsePercent(l.get("y"),o.getHeight());if(isNaN(h)||isNaN(c)){if(r.getMarkerPosition)a=r.getMarkerPosition(t.getValues(t.dimensions,e));else{var d=s.dimensions,f=t.get(d[0],e),p=t.get(d[1],e);a=s.dataToPoint([f,p])}if("cartesian2d"===s.type){var g=s.getAxis("x"),m=s.getAxis("y"),d=s.dimensions;n(t.get(d[0],e))?a[0]=g.toGlobalCoord(g.getExtent()[i?0:1]):n(t.get(d[1],e))&&(a[1]=m.toGlobalCoord(m.getExtent()[i?0:1]))}isNaN(h)||(a[0]=h),isNaN(c)||(a[1]=c)}else a=[h,c];t.setItemLayout(e,a)}function s(t,e,i){var n;n=t?l.map(t&&t.dimensions,function(t){var i=e.getData().getDimensionInfo(e.coordDimToDataDim(t)[0])||{};return i.name=t,i}):[{name:"value",type:"float"}];var r=new h(n,i),a=new h(n,i),s=new h([],i),u=l.map(i.get("data"),l.curry(f,e,t,i));t&&(u=l.filter(u,l.curry(o,t)));var d=t?c.dimValueGetter:function(t){return t.value};return r.initData(l.map(u,function(t){return t[0]}),null,d),a.initData(l.map(u,function(t){return t[1]}),null,d),s.initData(l.map(u,function(t){return t[2]})),s.hasItemOption=!0,{from:r,to:a,line:s}}var l=i(1),h=i(14),u=i(4),c=i(72),d=i(99),f=function(t,e,i,n){var r=t.getData(),o=n.type;if(!l.isArray(n)&&("min"===o||"max"===o||"average"===o||null!=n.xAxis||null!=n.yAxis)){var a,s,h;if(null!=n.yAxis||null!=n.xAxis)s=null!=n.yAxis?"y":"x",a=e.getAxis(s),h=l.retrieve(n.yAxis,n.xAxis);else{var u=c.getAxisInfo(n,r,e,t);s=u.valueDataDim,a=u.valueAxis,h=c.numCalculate(r,s,o)}var d="x"===s?0:1,f=1-d,p=l.clone(n),g={};p.type=null,p.coord=[],g.coord=[],p.coord[f]=-(1/0),g.coord[f]=1/0;var m=i.get("precision");m>=0&&"number"==typeof h&&(h=+h.toFixed(m)),p.coord[d]=g.coord[d]=h,n=[p,g,{type:o,valueIndex:n.valueIndex,value:h}]}return n=[c.dataTransform(t,n[0]),c.dataTransform(t,n[1]),l.extend({},n[2])],n[2].type=n[2].type||"",l.merge(n[2],n[0]),l.merge(n[2],n[1]),n};i(71).extend({type:"markLine",updateLayout:function(t,e,i){e.eachSeries(function(t){var e=t.markLineModel;if(e){var n=e.getData(),r=e.__from,o=e.__to;r.each(function(e){a(r,e,!0,t,i),a(o,e,!1,t,i)}),n.each(function(t){n.setItemLayout(t,[r.getItemLayout(t),o.getItemLayout(t)])}),this.markerGroupMap[t.name].updateLayout()}},this)},renderSeries:function(t,e,i,n){function r(e,i,r){var o=e.getItemModel(i);a(e,i,r,t,n),e.setItemVisual(i,{symbolSize:o.get("symbolSize")||x[r?0:1],symbol:o.get("symbol",!0)||y[r?0:1],color:o.get("itemStyle.normal.color")||u.getVisual("color")})}var o=t.coordinateSystem,h=t.name,u=t.getData(),c=this.markerGroupMap,f=c[h];f||(f=c[h]=new d),this.group.add(f.group);var p=s(o,t,e),g=p.from,m=p.to,v=p.line;e.__from=g,e.__to=m,e.setData(v);var y=e.get("symbol"),x=e.get("symbolSize");l.isArray(y)||(y=[y,y]),"number"==typeof x&&(x=[x,x]),p.from.each(function(t){r(g,t,!0),r(m,t,!1)}),v.each(function(t){var e=v.getItemModel(t).get("lineStyle.normal.color");v.setItemVisual(t,{color:e||g.getItemVisual(t,"color")}),v.setItemLayout(t,[g.getItemLayout(t),m.getItemLayout(t)]),v.setItemVisual(t,{fromSymbolSize:g.getItemVisual(t,"symbolSize"),fromSymbol:g.getItemVisual(t,"symbol"),toSymbolSize:m.getItemVisual(t,"symbolSize"),toSymbol:m.getItemVisual(t,"symbol")})}),f.updateData(v),p.line.eachItemGraphicEl(function(t,i){t.traverse(function(t){t.dataModel=e})}),f.__keep=!0,f.group.silent=e.get("silent")||t.get("silent")}})},function(t,e,i){t.exports=i(70).extend({type:"markPoint",defaultOption:{zlevel:0,z:5,symbol:"pin",symbolSize:50,tooltip:{trigger:"item"},label:{normal:{show:!0,position:"inside"},emphasis:{show:!0}},itemStyle:{normal:{borderWidth:2}}}})},function(t,e,i){function n(t,e,i){var n=e.coordinateSystem;t.each(function(r){var o,a=t.getItemModel(r),l=s.parsePercent(a.get("x"),i.getWidth()),h=s.parsePercent(a.get("y"),i.getHeight());if(isNaN(l)||isNaN(h)){if(e.getMarkerPosition)o=e.getMarkerPosition(t.getValues(t.dimensions,r));else if(n){var u=t.get(n.dimensions[0],r),c=t.get(n.dimensions[1],r);o=n.dataToPoint([u,c])}}else o=[l,h];isNaN(l)||(o[0]=l),isNaN(h)||(o[1]=h),t.setItemLayout(r,o)})}function r(t,e,i){var n;n=t?a.map(t&&t.dimensions,function(t){var i=e.getData().getDimensionInfo(e.coordDimToDataDim(t)[0])||{};return i.name=t,i}):[{name:"value",type:"float"}];var r=new l(n,i),o=a.map(i.get("data"),a.curry(h.dataTransform,e));return t&&(o=a.filter(o,a.curry(h.dataFilter,t))),r.initData(o,null,t?h.dimValueGetter:function(t){return t.value}),r}var o=i(39),a=i(1),s=i(4),l=i(14),h=i(72);i(71).extend({type:"markPoint",updateLayout:function(t,e,i){e.eachSeries(function(t){var e=t.markPointModel;e&&(n(e.getData(),t,i),this.markerGroupMap[t.name].updateLayout(e))},this)},renderSeries:function(t,e,i,a){var s=t.coordinateSystem,l=t.name,h=t.getData(),u=this.markerGroupMap,c=u[l];c||(c=u[l]=new o);var d=r(s,t,e);e.setData(d),n(e.getData(),t,a),d.each(function(t){var i=d.getItemModel(t),n=i.getShallow("symbolSize");"function"==typeof n&&(n=n(e.getRawValue(t),e.getDataParams(t))),d.setItemVisual(t,{symbolSize:n,color:i.get("itemStyle.normal.color")||h.getVisual("color"),symbol:i.getShallow("symbol")})}),c.updateData(d),this.group.add(c.group),d.eachItemGraphicEl(function(t){t.traverse(function(t){t.dataModel=e})}),c.__keep=!0,c.group.silent=e.get("silent")||t.get("silent")}})},function(t,e,i){"use strict";var n=i(2),r=i(3),o=i(12);n.extendComponentModel({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"}}}),n.extendComponentView({type:"title",render:function(t,e,i){if(this.group.removeAll(),t.get("show")){var n=this.group,a=t.getModel("textStyle"),s=t.getModel("subtextStyle"),l=t.get("textAlign"),h=t.get("textBaseline"),u=new r.Text({
-style:{text:t.get("text"),textFont:a.getFont(),fill:a.getTextColor()},z2:10}),c=u.getBoundingRect(),d=t.get("subtext"),f=new r.Text({style:{text:d,textFont:s.getFont(),fill:s.getTextColor(),y:c.height+t.get("itemGap"),textBaseline:"top"},z2:10}),p=t.get("link"),g=t.get("sublink");u.silent=!p,f.silent=!g,p&&u.on("click",function(){window.open(p,"_"+t.get("target"))}),g&&f.on("click",function(){window.open(g,"_"+t.get("subtarget"))}),n.add(u),d&&n.add(f);var m=n.getBoundingRect(),v=t.getBoxLayoutParams();v.width=m.width,v.height=m.height;var y=o.getLayoutRect(v,{width:i.getWidth(),height:i.getHeight()},t.get("padding"));l||(l=t.get("left")||t.get("right"),"middle"===l&&(l="center"),"right"===l?y.x+=y.width:"center"===l&&(y.x+=y.width/2)),h||(h=t.get("top")||t.get("bottom"),"center"===h&&(h="middle"),"bottom"===h?y.y+=y.height:"middle"===h&&(y.y+=y.height/2),h=h||"top"),n.attr("position",[y.x,y.y]);var x={textAlign:l,textVerticalAlign:h};u.setStyle(x),f.setStyle(x),m=n.getBoundingRect();var _=y.margin,b=t.getItemStyle(["color","opacity"]);b.fill=t.get("backgroundColor");var w=new r.Rect({shape:{x:m.x-_[3],y:m.y-_[0],width:m.width+_[1]+_[3],height:m.height+_[0]+_[2]},style:b,silent:!0});r.subPixelOptimizeRect(w),n.add(w)}}})},function(t,e,i){i(208),i(209),i(214),i(212),i(210),i(211),i(213)},function(t,e,i){var n=i(26),r=i(1),o=i(2).extendComponentModel({type:"toolbox",layoutMode:{type:"box",ignoreSize:!0},mergeDefaultAndTheme:function(t){o.superApply(this,"mergeDefaultAndTheme",arguments),r.each(this.option.feature,function(t,e){var i=n.get(e);i&&r.merge(t,i.defaultOption)})},defaultOption:{show:!0,z:6,zlevel:0,orient:"horizontal",left:"right",top:"top",backgroundColor:"transparent",borderColor:"#ccc",borderWidth:0,padding:5,itemSize:15,itemGap:8,showTitle:!0,iconStyle:{normal:{borderColor:"#666",color:"none"},emphasis:{borderColor:"#3E98C5"}}}});t.exports=o},function(t,e,i){(function(e){function n(t){return 0===t.indexOf("my")}var r=i(26),o=i(1),a=i(3),s=i(11),l=i(43),h=i(118),u=i(17);t.exports=i(2).extendComponentView({type:"toolbox",render:function(t,e,i,c){function d(o,a){var l,h=y[o],u=y[a],d=m[h],p=new s(d,t,t.ecModel);if(h&&!u){if(n(h))l={model:p,onclick:p.option.onclick,featureName:h};else{var g=r.get(h);if(!g)return;l=new g(p,e,i)}v[h]=l}else{if(l=v[u],!l)return;l.model=p,l.ecModel=e,l.api=i}return!h&&u?void(l.dispose&&l.dispose(e,i)):!p.get("show")||l.unusable?void(l.remove&&l.remove(e,i)):(f(p,l,h),p.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)},void(l.render&&l.render(p,e,i,c)))}function f(n,r,s){var l=n.getModel("iconStyle"),h=r.getIcons?r.getIcons():n.get("icon"),u=n.get("title")||{};if("string"==typeof h){var c=h,d=u;h={},u={},h[s]=c,u[s]=d}var f=n.iconPaths={};o.each(h,function(s,h){var c=l.getModel("normal").getItemStyle(),d=l.getModel("emphasis").getItemStyle(),m={x:-g/2,y:-g/2,width:g,height:g},v=0===s.indexOf("image://")?(m.image=s.slice(8),new a.Image({style:m})):a.makePath(s.replace("path://",""),{style:c,hoverStyle:d,rectHover:!0},m,"center");a.setHoverStyle(v),t.get("showTitle")&&(v.__title=u[h],v.on("mouseover",function(){var t=l.getModel("emphasis").getItemStyle();v.setStyle({text:u[h],textPosition:t.textPosition||"bottom",textFill:t.fill||t.stroke||"#000",textAlign:t.textAlign||"center"})}).on("mouseout",function(){v.setStyle({textFill:null})})),v.trigger(n.get("iconStatus."+h)||"normal"),p.add(v),v.on("click",o.bind(r.onclick,r,e,i,h)),f[h]=v})}var p=this.group;if(p.removeAll(),t.get("show")){var g=+t.get("itemSize"),m=t.get("feature")||{},v=this._features||(this._features={}),y=[];o.each(m,function(t,e){y.push(e)}),new l(this._featureNames||[],y).add(d).update(d).remove(o.curry(d,null)).execute(),this._featureNames=y,h.layout(p,t,i),h.addBackground(p,t),p.eachChild(function(t){var e=t.__title,n=t.hoverStyle;if(n&&e){var r=u.getBoundingRect(e,n.font),o=t.position[0]+p.position[0],a=t.position[1]+p.position[1]+g,s=!1;a+r.height>i.getHeight()&&(n.textPosition="top",s=!0);var l=s?-5-r.height:g+8;o+r.width/2>i.getWidth()?(n.textPosition=["100%",l],n.textAlign="right"):o-r.width/2<0&&(n.textPosition=[0,l],n.textAlign="left")}})}},updateView:function(t,e,i,n){o.each(this._features,function(t){t.updateView&&t.updateView(t.model,e,i,n)})},updateLayout:function(t,e,i,n){o.each(this._features,function(t){t.updateLayout&&t.updateLayout(t.model,e,i,n)})},remove:function(t,e){o.each(this._features,function(i){i.remove&&i.remove(t,e)}),this.group.removeAll()},dispose:function(t,e){o.each(this._features,function(i){i.dispose&&i.dispose(t,e)})}})}).call(e,i(175))},function(t,e,i){function n(t){var e={},i=[],n=[];return t.eachRawSeries(function(t){var r=t.coordinateSystem;if(!r||"cartesian2d"!==r.type&&"polar"!==r.type)i.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:[]},n.push({axisDim:o.dim,axisIndex:o.index})),e[a].series.push(t)}else i.push(t)}}),{seriesGroupByCategoryAxis:e,other:i,meta:n}}function r(t){var e=[];return p.each(t,function(t,i){var n=t.categoryAxis,r=t.valueAxis,o=r.dim,a=[" "].concat(p.map(t.series,function(t){return t.name})),s=[n.model.getCategories()];p.each(t.series,function(t){s.push(t.getRawData().mapArray(o,function(t){return t}))});for(var l=[a.join(v)],h=0;h<s[0].length;h++){for(var u=[],c=0;c<s.length;c++)u.push(s[c][h]);l.push(u.join(v))}e.push(l.join("\n"))}),e.join("\n\n"+m+"\n\n")}function o(t){return p.map(t,function(t){var e=t.getRawData(),i=[t.name],n=[];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++)n[a]=arguments[a];i.push((o?o+v:"")+n.join(v))}),i.join("\n")}).join("\n\n"+m+"\n\n")}function a(t){var e=n(t);return{value:p.filter([r(e.seriesGroupByCategoryAxis),o(e.other)],function(t){return t.replace(/[\n\t\s]/g,"")}).join("\n\n"+m+"\n\n"),meta:e.meta}}function s(t){return t.replace(/^\s\s*/,"").replace(/\s\s*$/,"")}function l(t){var e=t.slice(0,t.indexOf("\n"));if(e.indexOf(v)>=0)return!0}function h(t){for(var e=t.split(/\n+/g),i=s(e.shift()).split(y),n=[],r=p.map(i,function(t){return{name:t,data:[]}}),o=0;o<e.length;o++){var a=s(e[o]).split(y);n.push(a.shift());for(var l=0;l<a.length;l++)r[l]&&(r[l].data[o]=a[l])}return{series:r,categories:n}}function u(t){for(var e=t.split(/\n+/g),i=s(e.shift()),n=[],r=0;r<e.length;r++){var o,a=s(e[r]).split(y),l="",h=!1;isNaN(a[0])?(h=!0,l=a[0],a=a.slice(1),n[r]={name:l,value:[]},o=n[r].value):o=n[r]=[];for(var u=0;u<a.length;u++)o.push(+a[u]);1===o.length&&(h?n[r].value=o[0]:n[r]=o[0])}return{name:i,data:n}}function c(t,e){var i=t.split(new RegExp("\n*"+m+"\n*","g")),n={series:[]};return p.each(i,function(t,i){if(l(t)){var r=h(t),o=e[i],a=o.axisDim+"Axis";o&&(n[a]=n[a]||[],n[a][o.axisIndex]={data:r.categories},n.series=n.series.concat(r.series))}else{var r=u(t);n.series.push(r)}}),n}function d(t){this._dom=null,this.model=t}function f(t,e){return p.map(t,function(t,i){var n=e&&e[i];return p.isObject(n)&&!p.isArray(n)?(p.isObject(t)&&!p.isArray(t)&&(t=t.value),p.defaults({value:t},n)):t})}var p=i(1),g=i(25),m=new Array(60).join("-"),v="\t",y=new RegExp("["+v+"]+","g");d.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:"数据视图",lang:["数据视图","关闭","刷新"],backgroundColor:"#fff",textColor:"#000",textareaColor:"#fff",textareaBorderColor:"#333",buttonColor:"#c23531",buttonTextColor:"#fff"},d.prototype.onclick=function(t,e){function i(){n.removeChild(o),S._dom=null}var n=e.getDom(),r=this.model;this._dom&&n.removeChild(this._dom);var o=document.createElement("div");o.style.cssText="position:absolute;left:5px;top:5px;bottom:5px;right:5px;",o.style.backgroundColor=r.get("backgroundColor")||"#fff";var s=document.createElement("h4"),l=r.get("lang")||[];s.innerHTML=l[0]||r.get("title"),s.style.cssText="margin: 10px 20px;",s.style.color=r.get("textColor");var h=document.createElement("div"),u=document.createElement("textarea");h.style.cssText="display:block;width:100%;overflow:hidden;";var d=r.get("optionToContent"),f=r.get("contentToOption"),m=a(t);if("function"==typeof d){var y=d(e.getOption());"string"==typeof y?h.innerHTML=y:p.isDom(y)&&h.appendChild(y)}else h.appendChild(u),u.readOnly=r.get("readOnly"),u.style.cssText="width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;",u.style.color=r.get("textColor"),u.style.borderColor=r.get("textareaBorderColor"),u.style.backgroundColor=r.get("textareaColor"),u.value=m.value;var x=m.meta,_=document.createElement("div");_.style.cssText="position:absolute;bottom:0;left:0;right:0;";var b="float:right;margin-right:20px;border:none;cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px",w=document.createElement("div"),M=document.createElement("div");b+=";background-color:"+r.get("buttonColor"),b+=";color:"+r.get("buttonTextColor");var S=this;g.addEventListener(w,"click",i),g.addEventListener(M,"click",function(){var t;try{t="function"==typeof f?f(h,e.getOption()):c(u.value,x)}catch(n){throw i(),new Error("Data view format error "+n)}t&&e.dispatchAction({type:"changeDataView",newOption:t}),i()}),w.innerHTML=l[1],M.innerHTML=l[2],M.style.cssText=b,w.style.cssText=b,!r.get("readOnly")&&_.appendChild(M),_.appendChild(w),g.addEventListener(u,"keydown",function(t){if(9===(t.keyCode||t.which)){var e=this.value,i=this.selectionStart,n=this.selectionEnd;this.value=e.substring(0,i)+v+e.substring(n),this.selectionStart=this.selectionEnd=i+1,g.stop(t)}}),o.appendChild(s),o.appendChild(h),o.appendChild(_),h.style.height=n.clientHeight-80+"px",n.appendChild(o),this._dom=o},d.prototype.remove=function(t,e){this._dom&&e.getDom().removeChild(this._dom)},d.prototype.dispose=function(t,e){this.remove(t,e)},i(26).register("dataView",d),i(2).registerAction({type:"changeDataView",event:"dataViewChanged",update:"prepareAndUpdate"},function(t,e){var i=[];p.each(t.newOption.series,function(t){var n=e.getSeriesByName(t.name)[0];if(n){var r=n.get("data");i.push({name:t.name,data:f(t.data,r)})}else i.push(p.extend({type:"scatter"},t))}),e.mergeOption(p.defaults({series:i},t.newOption))}),t.exports=d},function(t,e,i){"use strict";function n(t,e,i){(this._brushController=new l(i.getZr())).on("brush",s.bind(this._onBrush,this)).mount(),this._isZoomActive}function r(t){var e={};return s.each(["xAxisIndex","yAxisIndex"],function(i){e[i]=t[i],null==e[i]&&(e[i]="all"),(e[i]===!1||"none"===e[i])&&(e[i]=[])}),e}function o(t,e){t.setIconStatus("back",u.count(e)>1?"emphasis":"normal")}function a(t,e,i,n){var o=i._isZoomActive;n&&"takeGlobalCursor"===n.type&&(o="dataZoomSelect"===n.key&&n.dataZoomSelectActive),i._isZoomActive=o,t.setIconStatus("zoom",o?"emphasis":"normal");var a=h.makeCoordInfoList(r(t.option),e),s=a.xAxisHas&&!a.yAxisHas?"lineX":!a.xAxisHas&&a.yAxisHas?"lineY":"rect";i._brushController.setPanels(h.makePanelOpts(a)).enableBrush(!!o&&{brushType:s,brushStyle:{lineWidth:0,fill:"rgba(0,0,0,0.2)"}})}var s=i(1),l=i(115),h=i(116),u=i(113),c=s.each;i(190);var d="\0_ec_\0toolbox-dataZoom_";n.defaultOption={show:!0,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:{zoom:"区域缩放",back:"区域缩放还原"}};var f=n.prototype;f.render=function(t,e,i,n){this.model=t,this.ecModel=e,this.api=i,a(t,e,this,n),o(t,e)},f.onclick=function(t,e,i){p[i].call(this)},f.remove=function(t,e){this._brushController.unmount()},f.dispose=function(t,e){this._brushController.dispose()};var p={zoom:function(){var t=!this._isZoomActive;this.api.dispatchAction({type:"takeGlobalCursor",key:"dataZoomSelect",dataZoomSelectActive:t})},back:function(){this._dispatchZoomAction(u.pop(this.ecModel))}};f._onBrush=function(t,e){function i(t,e,i){var r=n(t,i[t],a);r&&(o[r.id]={dataZoomId:r.id,startValue:e[0],endValue:e[1]})}function n(t,e,i){var n;return i.eachComponent({mainType:"dataZoom",subType:"select"},function(r,o){var a=r.get(t+"Index");null!=a&&i.getComponent(t,a)===e&&(n=r)}),n}if(e.isEnd&&t.length){var o={},a=this.ecModel;this._brushController.updateCovers([]);var s=h.makeCoordInfoList(r(this.model.option),a),l=[];h.parseOutputRanges(t,s,a,l);var c=t[0],d=l[0],f=c.coordRange,p=c.brushType;if(d&&f)if("rect"===p)i("xAxis",f[0],d),i("yAxis",f[1],d);else{var g={lineX:"xAxis",lineY:"yAxis"};i(g[p],f,d)}u.push(a,o),this._dispatchZoomAction(o)}},f._dispatchZoomAction=function(t){var e=[];c(t,function(t,i){e.push(s.clone(t))}),e.length&&this.api.dispatchAction({type:"dataZoom",from:this.uid,batch:e})},i(26).register("dataZoom",n),i(2).registerPreprocessor(function(t){function e(t,e){if(e){var r=t+"Index",o=e[r];null==o||"all"==o||s.isArray(o)||(o=o===!1||"none"===o?[]:[o]),i(t,function(e,i){if(null==o||"all"==o||s.indexOf(o,i)!==-1){var a={type:"select",$fromToolbox:!0,id:d+t+i};a[r]=i,n.push(a)}})}}function i(e,i){var n=t[e];s.isArray(n)||(n=n?[n]:[]),c(n,i)}if(t){var n=t.dataZoom||(t.dataZoom=[]);s.isArray(n)||(t.dataZoom=n=[n]);var r=t.toolbox;if(r&&(s.isArray(r)&&(r=r[0]),r&&r.feature)){var o=r.feature.dataZoom;e("xAxis",o),e("yAxis",o)}}}),t.exports=n},function(t,e,i){"use strict";function n(t){this.model=t}var r=i(1);n.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:{line:"切换为折线图",bar:"切换为柱状图",stack:"切换为堆叠",tiled:"切换为平铺"},option:{},seriesIndex:{}};var o=n.prototype;o.getIcons=function(){var t=this.model,e=t.get("icon"),i={};return r.each(t.get("type"),function(t){e[t]&&(i[t]=e[t])}),i};var a={line:function(t,e,i,n){if("bar"===t)return r.merge({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 r.merge({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 r.merge({id:e,stack:"__ec_magicType_stack__"},n.get("option.stack")||{},!0)},tiled:function(t,e,i,n){if("line"===t||"bar"===t)return r.merge({id:e,stack:""},n.get("option.tiled")||{},!0)}},s=[["line","bar"],["stack","tiled"]];o.onclick=function(t,e,i){var n=this.model,o=n.get("seriesIndex."+i);if(a[i]){var l={series:[]},h=function(e){var o=e.subType,s=e.id,h=a[i](o,s,e,n);h&&(r.defaults(h,e.option),l.series.push(h));var u=e.coordinateSystem;if(u&&"cartesian2d"===u.type&&("line"===i||"bar"===i)){var c=u.getAxesByScale("ordinal")[0];if(c){var d=c.dim,f=d+"Axis",p=t.queryComponents({mainType:f,index:e.get(name+"Index"),id:e.get(name+"Id")})[0],g=p.componentIndex;l[f]=l[f]||[];for(var m=0;m<=g;m++)l[f][g]=l[f][g]||{};l[f][g].boundaryGap="bar"===i}}};r.each(s,function(t){r.indexOf(t,i)>=0&&r.each(t,function(t){n.setIconStatus(t,"normal")})}),n.setIconStatus(i,"emphasis"),t.eachComponent({mainType:"series",query:null==o?null:{seriesIndex:o}},h),e.dispatchAction({type:"changeMagicType",currentType:i,newOption:l})}};var l=i(2);l.registerAction({type:"changeMagicType",event:"magicTypeChanged",update:"prepareAndUpdate"},function(t,e){e.mergeOption(t.newOption)}),i(26).register("magicType",n),t.exports=n},function(t,e,i){"use strict";function n(t){this.model=t}var r=i(113);n.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:"还原"};var o=n.prototype;o.onclick=function(t,e,i){r.clear(t),e.dispatchAction({type:"restore",from:this.uid})},i(26).register("restore",n),i(2).registerAction({type:"restore",event:"restore",update:"prepareAndUpdate"},function(t,e){e.resetOption("recreate")}),t.exports=n},function(t,e,i){function n(t){this.model=t}var r=i(10);n.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:"保存为图片",type:"png",name:"",excludeComponents:["toolbox"],pixelRatio:1,lang:["右键另存为图片"]},n.prototype.unusable=!r.canvasSupported;var o=n.prototype;o.onclick=function(t,e){var i=this.model,n=i.get("name")||t.get("title.0.text")||"echarts",o=document.createElement("a"),a=i.get("type",!0)||"png";o.download=n+"."+a,o.target="_blank";var s=e.getConnectedDataURL({type:a,backgroundColor:i.get("backgroundColor",!0)||t.get("backgroundColor")||"#fff",excludeComponents:i.get("excludeComponents"),pixelRatio:i.get("pixelRatio")});if(o.href=s,"function"!=typeof MouseEvent||r.browser.ie||r.browser.edge){var l=i.get("lang"),h='<body style="margin:0;"><img src="'+s+'" style="max-width:100%;" title="'+(l&&l[0]||"")+'" /></body>',u=window.open();u.document.write(h)}else{var c=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!1});o.dispatchEvent(c)}},i(26).register("saveAsImage",n),t.exports=n},function(t,e,i){i(217),i(218),i(2).registerAction({type:"showTip",event:"showTip",update:"tooltip:manuallyShowTip"},function(){}),i(2).registerAction({type:"hideTip",event:"hideTip",update:"tooltip:manuallyHideTip"},function(){})},function(t,e,i){function n(t){var e="cubic-bezier(0.23, 1, 0.32, 1)",i="left "+t+"s "+e+",top "+t+"s "+e;return s.map(p,function(t){return t+"transition:"+i}).join(";")}function r(t){var e=[],i=t.get("fontSize"),n=t.getTextColor();return n&&e.push("color:"+n),e.push("font:"+t.getFont()),i&&e.push("line-height:"+Math.round(3*i/2)+"px"),c(["decoration","align"],function(i){var n=t.get(i);n&&e.push("text-"+i+":"+n)}),e.join(";")}function o(t){t=t;var e=[],i=t.get("transitionDuration"),o=t.get("backgroundColor"),a=t.getModel("textStyle"),s=t.get("padding");return i&&e.push(n(i)),o&&(f.canvasSupported?e.push("background-Color:"+o):(e.push("background-Color:#"+l.toHex(o)),e.push("filter:alpha(opacity=70)"))),c(["width","color","radius"],function(i){var n="border-"+i,r=d(n),o=t.get(r);null!=o&&e.push(n+":"+o+("color"===i?"":"px"))}),e.push(r(a)),null!=s&&e.push("padding:"+u.normalizeCssArray(s).join("px ")+"px"),e.join(";")+";"}function a(t,e){var i=document.createElement("div"),n=e.getZr();this.el=i,this._x=e.getWidth()/2,this._y=e.getHeight()/2,t.appendChild(i),this._container=t,this._show=!1,this._hideTimeout;var r=this;i.onmouseenter=function(){r.enterable&&(clearTimeout(r._hideTimeout),r._show=!0),r._inContent=!0},i.onmousemove=function(e){if(e=e||window.event,!r.enterable){var i=n.handler;h.normalizeEvent(t,e,!0),i.dispatch("mousemove",e)}},i.onmouseleave=function(){r.enterable&&r._show&&r.hideLater(r._hideDelay),r._inContent=!1}}var s=i(1),l=i(19),h=i(25),u=i(8),c=s.each,d=u.toCamelCase,f=i(10),p=["","-webkit-","-moz-","-o-"],g="position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;";a.prototype={constructor:a,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=g+o(t)+";left:"+this._x+"px;top:"+this._y+"px;"+(t.get("extraCssText")||""),e.style.display=e.innerHTML?"block":"none",this._show=!0},setContent:function(t){var e=this.el;e.innerHTML=t,e.style.display=t?"block":"none"},moveTo:function(t,e){var i=this.el.style;i.left=t+"px",i.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(s.bind(this.hide,this),t)):this.hide())},isShow:function(){return this._show}},t.exports=a},function(t,e,i){i(2).extendComponentModel({type:"tooltip",defaultOption:{zlevel:0,z:8,show:!0,showContent:!0,trigger:"item",triggerOn:"mousemove",alwaysShowContent:!1,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:!0,animationDurationUpdate:200,animationEasingUpdate:"exponentialOut",lineStyle:{color:"#555",width:1,type:"solid"},crossStyle:{color:"#555",width:1,type:"dashed",textStyle:{}},shadowStyle:{color:"rgba(150,150,150,0.3)"}},textStyle:{color:"#fff",fontSize:14}}})},function(t,e,i){function n(t,e){if(!t||!e)return!1;var i=m.round;return i(t[0])===i(e[0])&&i(t[1])===i(e[1])}function r(t,e,i,n){return{x1:t,y1:e,x2:i,y2:n}}function o(t,e,i,n){return{x:t,y:e,width:i,height:n}}function a(t,e,i,n,r,o){return{cx:t,cy:e,r0:i,r:n,startAngle:r,endAngle:o,clockwise:!0}}function s(t,e,i,n,r){var o=i.clientWidth,a=i.clientHeight,s=20;return t+o+s>n?t-=o+s:t+=s,e+a+s>r?e-=a+s:e+=s,[t,e]}function l(t,e,i,n,r){var o=i.clientWidth,a=i.clientHeight;return t=Math.min(t+o,n)-o,e=Math.min(e+a,r)-a,t=Math.max(t,0),e=Math.max(e,0),[t,e]}function h(t,e,i){var n=i.clientWidth,r=i.clientHeight,o=5,a=0,s=0,l=e.width,h=e.height;switch(t){case"inside":a=e.x+l/2-n/2,s=e.y+h/2-r/2;break;case"top":a=e.x+l/2-n/2,s=e.y-r-o;break;case"bottom":a=e.x+l/2-n/2,s=e.y+h+o;break;case"left":a=e.x-n-o,s=e.y+h/2-r/2;break;case"right":a=e.x+l+o,s=e.y+h/2-r/2}return[a,s]}function u(t,e,i,n,r,o,a,u){var c=u.getWidth(),d=u.getHeight(),f=a&&a.getBoundingRect().clone();if(a&&f.applyTransform(a.transform),"function"==typeof t&&(t=t([e,i],o,r.el,f)),p.isArray(t))e=y(t[0],c),i=y(t[1],d);else if("string"==typeof t&&a){var g=h(t,f,r.el);e=g[0],i=g[1]}else{var g=s(e,i,r.el,c,d);e=g[0],i=g[1]}if(n){var g=l(e,i,r.el,c,d);e=g[0],i=g[1]}r.moveTo(e,i)}function c(t){var e=t.coordinateSystem,i=t.get("tooltip.trigger",!0);return!(!e||"cartesian2d"!==e.type&&"polar"!==e.type&&"singleAxis"!==e.type||"item"===i)}var d=i(216),f=i(3),p=i(1),g=i(8),m=i(4),v=i(6),y=m.parsePercent,x=i(10),_=i(11);i(2).extendComponentView({type:"tooltip",_axisPointers:{},init:function(t,e){if(!x.node){var i=new d(e.getDom(),e);this._tooltipContent=i}},render:function(t,e,i){if(!x.node){this.group.removeAll(),this._axisPointers={},this._tooltipModel=t,this._ecModel=e,this._api=i,this._lastHover={};var n=this._tooltipContent;n.update(),n.enterable=t.get("enterable"),this._alwaysShowContent=t.get("alwaysShowContent"),this._seriesGroupByAxis=this._prepareAxisTriggerData(t,e);var r=this._crossText;r&&this.group.add(r);var o=t.get("triggerOn");if(null!=this._lastX&&null!=this._lastY&&"none"!==o){var a=this;clearTimeout(this._refreshUpdateTimeout),this._refreshUpdateTimeout=setTimeout(function(){a.manuallyShowTip(t,e,i,{x:a._lastX,y:a._lastY})})}var s=this._api.getZr();s.off("click",this._tryShow),s.off("mousemove",this._mousemove),s.off("mouseout",this._hide),s.off("globalout",this._hide),"click"===o?s.on("click",this._tryShow,this):"mousemove"===o&&(s.on("mousemove",this._mousemove,this),s.on("mouseout",this._hide,this),s.on("globalout",this._hide,this))}},_mousemove:function(t){var e=this._tooltipModel.get("showDelay"),i=this;clearTimeout(this._showTimeout),e>0?this._showTimeout=setTimeout(function(){i._tryShow(t)},e):this._tryShow(t)},manuallyShowTip:function(t,e,i,n){function r(t){var e=t.getData(),i=v.queryDataIndex(e,n);if(null!=i&&!p.isArray(i)&&e.hasValue(i))return!0}if(n.from!==this.uid){var e=this._ecModel,o=n.seriesIndex,a=e.getSeriesByIndex(o),i=this._api,s="axis"===this._tooltipModel.get("trigger");if(null==n.x||null==n.y){if(s?(a&&!r(a)&&(a=null),a||e.eachSeries(function(t){c(t)&&!a&&r(t)&&(a=t)})):a=a||e.getSeriesByIndex(0),a){var l=a.getData(),h=v.queryDataIndex(l,n);if(null==h||p.isArray(h))return;var u,d,f=l.getItemGraphicEl(h),g=a.coordinateSystem;if(a.getTooltipPosition){var m=a.getTooltipPosition(h)||[];u=m[0],d=m[1]}else if(g&&g.dataToPoint){var m=g.dataToPoint(l.getValues(p.map(g.dimensions,function(t){return a.coordDimToDataDim(t)[0]}),h,!0));u=m&&m[0],d=m&&m[1]}else if(f){var y=f.getBoundingRect().clone();y.applyTransform(f.transform),u=y.x+y.width/2,d=y.y+y.height/2}null!=u&&null!=d&&this._tryShow({offsetX:u,offsetY:d,position:n.position,target:f,event:{}})}}else{var f=i.getZr().handler.findHover(n.x,n.y);this._tryShow({offsetX:n.x,offsetY:n.y,position:n.position,target:f,event:{}})}}},manuallyHideTip:function(t,e,i,n){n.from!==this.uid&&this._hide()},_prepareAxisTriggerData:function(t,e){var i={};return e.eachSeries(function(t){if(c(t)){var e,n,r=t.coordinateSystem;"cartesian2d"===r.type?(e=r.getBaseAxis(),n=e.dim+e.index):"singleAxis"===r.type?(e=r.getAxis(),n=e.dim+e.type):(e=r.getBaseAxis(),n=e.dim+r.name),i[n]=i[n]||{coordSys:[],series:[]},i[n].coordSys.push(r),i[n].series.push(t)}},this),i},_tryShow:function(t){var e=t.target,i=this._tooltipModel,n=i.get("trigger"),r=this._ecModel,o=this._api;if(i)if(this._lastX=t.offsetX,this._lastY=t.offsetY,e&&null!=e.dataIndex){var a=e.dataModel||r.getSeriesByIndex(e.seriesIndex),s=e.dataIndex,l=a.getData(),h=l.getItemModel(s);"axis"===(h.get("tooltip.trigger")||n)?this._showAxisTooltip(i,r,t):(this._ticket="",this._hideAxisPointer(),this._resetLastHover(),this._showItemTooltipContent(a,s,e.dataType,t)),o.dispatchAction({type:"showTip",from:this.uid,dataIndexInside:s,dataIndex:l.getRawIndex(s),seriesIndex:e.seriesIndex})}else if(e&&e.tooltip){var u=e.tooltip;if("string"==typeof u){var c=u;u={content:c,formatter:c}}var d=new _(u,i),f=d.get("content"),p=Math.random();this._showTooltipContent(d,f,d.get("formatterParams")||{},p,t.offsetX,t.offsetY,t.position,e,o)}else"item"===n?this._hide():this._showAxisTooltip(i,r,t),"cross"===i.get("axisPointer.type")&&o.dispatchAction({type:"showTip",from:this.uid,x:t.offsetX,y:t.offsetY})},_showAxisTooltip:function(t,e,i){var r=t.getModel("axisPointer"),o=r.get("type");if("cross"===o){var a=i.target;if(a&&null!=a.dataIndex){var s=e.getSeriesByIndex(a.seriesIndex),l=a.dataIndex;this._showItemTooltipContent(s,l,a.dataType,i)}}this._showAxisPointer();var h=!0;p.each(this._seriesGroupByAxis,function(e){var a=e.coordSys,s=a[0],l=[i.offsetX,i.offsetY];if(!s.containPoint(l))return void this._hideAxisPointer(s.name);h=!1;var u=s.dimensions,c=s.pointToData(l,!0);l=s.dataToPoint(c);var d=s.getBaseAxis(),f=r.get("axis");if("auto"===f&&(f=d.dim),d.isBlank()||p.eqNaN(l[0])||p.eqNaN(l[1]))return void this._hideAxisPointer(s.name);var g=!1,m=this._lastHover;if("cross"===o)n(m.data,c)&&(g=!0),m.data=c;else{var v=p.indexOf(u,f);m.data===c[v]&&(g=!0),m.data=c[v]}var y=t.get("animation");"cartesian2d"!==s.type||g?"polar"!==s.type||g?"singleAxis"!==s.type||g||this._showSinglePointer(r,s,f,l,y):this._showPolarPointer(r,s,f,l,y):this._showCartesianPointer(r,s,f,l,y),"cross"!==o&&this._dispatchAndShowSeriesTooltipContent(s,e.series,l,c,g,i.position)},this),this._tooltipModel.get("show")||this._hideAxisPointer(),h&&this._hide()},_showCartesianPointer:function(t,e,i,n,a){function s(i,n,o){var a="x"===i?r(n[0],o[0],n[0],o[1]):r(o[0],n[1],o[1],n[1]),s=h._getPointerElement(e,t,i,a);f.subPixelOptimizeLine({shape:a,style:s.style}),d?f.updateProps(s,{shape:a},t):s.attr({shape:a})}function l(i,n,r){var a=e.getAxis(i),s=a.getBandWidth(),l=r[1]-r[0],u="x"===i?o(n[0]-s/2,r[0],s,l):o(r[0],n[1]-s/2,l,s),c=h._getPointerElement(e,t,i,u);d?f.updateProps(c,{shape:u},t):c.attr({shape:u})}var h=this,u=t.get("type"),c=e.getBaseAxis(),d=a&&"cross"!==u&&"category"===c.type&&c.getBandWidth()>20;if("cross"===u)s("x",n,e.getAxis("y").getGlobalExtent()),s("y",n,e.getAxis("x").getGlobalExtent()),this._updateCrossText(e,n,t);else{var p=e.getAxis("x"===i?"y":"x"),g=p.getGlobalExtent();"cartesian2d"===e.type&&("line"===u?s:l)(i,n,g)}},_showSinglePointer:function(t,e,i,n,o){function a(i,n,o){var a=e.getAxis(),l=a.orient,u="horizontal"===l?r(n[0],o[0],n[0],o[1]):r(o[0],n[1],o[1],n[1]),c=s._getPointerElement(e,t,i,u);h?f.updateProps(c,{shape:u},t):c.attr({shape:u})}var s=this,l=t.get("type"),h=o&&"cross"!==l&&"category"===e.getBaseAxis().type,u=e.getRect(),c=[u.y,u.y+u.height];a(i,n,c)},_showPolarPointer:function(t,e,i,n,o){function s(i,n,o){var a,s=e.pointToCoord(n);if("angle"===i){var l=e.coordToPoint([o[0],s[1]]),u=e.coordToPoint([o[1],s[1]]);a=r(l[0],l[1],u[0],u[1])}else a={cx:e.cx,cy:e.cy,r:s[0]};var c=h._getPointerElement(e,t,i,a);p?f.updateProps(c,{shape:a},t):c.attr({shape:a})}function l(i,n,r){var o,s=e.getAxis(i),l=s.getBandWidth(),u=e.pointToCoord(n),c=Math.PI/180;o="angle"===i?a(e.cx,e.cy,r[0],r[1],(-u[1]-l/2)*c,(-u[1]+l/2)*c):a(e.cx,e.cy,u[0]-l/2,u[0]+l/2,0,2*Math.PI);var d=h._getPointerElement(e,t,i,o);p?f.updateProps(d,{shape:o},t):d.attr({shape:o})}var h=this,u=t.get("type"),c=e.getAngleAxis(),d=e.getRadiusAxis(),p=o&&"cross"!==u&&"category"===e.getBaseAxis().type;if("cross"===u)s("angle",n,d.getExtent()),s("radius",n,c.getExtent()),this._updateCrossText(e,n,t);else{var g=e.getAxis("radius"===i?"angle":"radius"),m=g.getExtent();("line"===u?s:l)(i,n,m)}},_updateCrossText:function(t,e,i){var n=i.getModel("crossStyle"),r=n.getModel("textStyle"),o=this._tooltipModel,a=this._crossText;a||(a=this._crossText=new f.Text({style:{textAlign:"left",textVerticalAlign:"bottom"}}),this.group.add(a));var s=t.pointToData(e),l=t.dimensions;s=p.map(s,function(e,i){var n=t.getAxis(l[i]);return e="category"===n.type||"time"===n.type?n.scale.getLabel(e):g.addCommas(e.toFixed(n.getPixelPrecision()))}),a.setStyle({fill:r.getTextColor()||n.get("color"),textFont:r.getFont(),text:s.join(", "),x:e[0]+5,y:e[1]-5}),a.z=o.get("z"),a.zlevel=o.get("zlevel")},_getPointerElement:function(t,e,i,n){var r=this._tooltipModel,o=r.get("z"),a=r.get("zlevel"),s=this._axisPointers,l=t.name;if(s[l]=s[l]||{},s[l][i])return s[l][i];var h=e.get("type"),u=e.getModel(h+"Style"),c="shadow"===h,d=u[c?"getAreaStyle":"getLineStyle"](),p="polar"===t.type?c?"Sector":"radius"===i?"Circle":"Line":c?"Rect":"Line";c?d.stroke=null:d.fill=null;var g=s[l][i]=new f[p]({style:d,z:o,zlevel:a,silent:!0,shape:n});return this.group.add(g),g},_dispatchAndShowSeriesTooltipContent:function(t,e,i,n,r,o){var a=this._tooltipModel,s=t.getBaseAxis(),l={x:1,radius:1,single:1}[s.dim]?0:1;if(e.length){var h,c=p.map(e,function(t){return{seriesIndex:t.seriesIndex,dataIndexInside:t.getAxisTooltipDataIndex?t.getAxisTooltipDataIndex(t.coordDimToDataDim(s.dim),n,s):t.getData().indexOfNearest(t.coordDimToDataDim(s.dim)[0],n[l],!1,"category"===s.type?.5:null)}});p.each(c,function(t,i){e[i].getData().hasValue(t.dataIndexInside)&&(h=i)}),h=h||0;var d=this._lastHover,f=this._api;d.payloadBatch&&!r&&f.dispatchAction({type:"downplay",batch:d.payloadBatch}),r||(f.dispatchAction({type:"highlight",batch:c}),d.payloadBatch=c);var m=c[h].dataIndexInside;if(f.dispatchAction({type:"showTip",dataIndexInside:m,dataIndex:e[h].getData().getRawIndex(m),seriesIndex:c[h].seriesIndex,from:this.uid}),s&&a.get("showContent")&&a.get("show")){var v=p.map(e,function(t,e){return t.getDataParams(c[e].dataIndexInside)});if(r)u(o||a.get("position"),i[0],i[1],a.get("confine"),this._tooltipContent,v,null,f);else{var y=c[h].dataIndexInside,x="time"===s.type?s.scale.getLabel(n[l]):e[h].getData().getName(y),_=(x?g.encodeHTML(x)+"<br />":"")+p.map(e,function(t,e){return t.formatTooltip(c[e].dataIndexInside,!0)}).join("<br />"),b="axis_"+t.name+"_"+y;this._showTooltipContent(a,_,v,b,i[0],i[1],o,null,f)}}}},_showItemTooltipContent:function(t,e,i,n){var r=this._api,o=t.getData(i),a=o.getItemModel(e),s=a.get("tooltip",!0);if("string"==typeof s){var l=s;s={formatter:l}}var h=this._tooltipModel,u=t.getModel("tooltip",h),c=new _(s,u,u.ecModel),d=t.getDataParams(e,i),f=t.formatTooltip(e,!1,i),p="item_"+t.name+"_"+e;
-this._showTooltipContent(c,f,d,p,n.offsetX,n.offsetY,n.position,n.target,r)},_showTooltipContent:function(t,e,i,n,r,o,a,s,l){if(this._ticket="",t.get("showContent")&&t.get("show")){var h=this._tooltipContent,c=t.get("confine"),d=t.get("formatter");a=a||t.get("position");var f=e;if(d)if("string"==typeof d)f=g.formatTpl(d,i,!0);else if("function"==typeof d){var p=this,m=n,v=function(t,e){t===p._ticket&&(h.setContent(e),u(a,r,o,c,h,i,s,l))};p._ticket=m,f=d(i,m,v)}h.show(t),h.setContent(f),u(a,r,o,c,h,i,s,l)}},_showAxisPointer:function(t){if(t){var e=this._axisPointers[t];e&&p.each(e,function(t){t.show()})}else this.group.eachChild(function(t){t.show()}),this.group.show()},_resetLastHover:function(){var t=this._lastHover;t.payloadBatch&&this._api.dispatchAction({type:"downplay",batch:t.payloadBatch}),this._lastHover={}},_hideAxisPointer:function(t){if(t){var e=this._axisPointers[t];e&&p.each(e,function(t){t.hide()})}else this.group.children().length&&this.group.hide()},_hide:function(){clearTimeout(this._showTimeout),this._hideAxisPointer(),this._resetLastHover(),this._alwaysShowContent||this._tooltipContent.hideLater(this._tooltipModel.get("hideDelay")),this._api.dispatchAction({type:"hideTip",from:this.uid}),this._lastX=this._lastY=null},dispose:function(t,e){if(!x.node){var i=e.getZr();this._tooltipContent.hide(),i.off("click",this._tryShow),i.off("mousemove",this._mousemove),i.off("mouseout",this._hide),i.off("globalout",this._hide)}}})},,function(t,e,i){function n(t){return parseInt(t,10)}function r(t,e){s.initVML(),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 r=e.delFromMap,o=e.addToMap;e.delFromMap=function(t){var i=e.get(t);r.call(e,t),i&&i.onRemove&&i.onRemove(n)},e.addToMap=function(t){t.onAdd&&t.onAdd(n),o.call(e,t)},this._firstPaint=!0}function o(t){return function(){a('In IE8.0 VML mode painter not support method "'+t+'"')}}var a=i(48),s=i(171);r.prototype={constructor:r,getViewportRoot:function(){return this._vmlViewport},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){var 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||n(e.width))-n(e.paddingLeft)-n(e.paddingRight)|0},_getHeight:function(){var t=this.root,e=t.currentStyle;return(t.clientHeight||n(e.height))-n(e.paddingTop)-n(e.paddingBottom)|0}};for(var l=["getLayer","insertLayer","eachLayer","eachBuildinLayer","eachOtherLayer","getLayers","modLayer","delLayer","clearLayer","toDataURL","pathToImage"],h=0;h<l.length;h++){var u=l[h];r.prototype[u]=o(u)}t.exports=r},function(t,e,i){if(!i(10).canvasSupported){var n=i(5),r=i(9),o=i(29).CMD,a=i(19),s=i(17),l=i(77),h=i(36),u=i(49),c=i(76),d=i(7),f=i(37),p=i(171),g=Math.round,m=Math.sqrt,v=Math.abs,y=Math.cos,x=Math.sin,_=Math.max,b=n.applyTransform,w=",",M="progid:DXImageTransform.Microsoft",S=21600,T=S/2,A=1e5,I=1e3,C=function(t){t.style.cssText="position:absolute;left:0;top:0;width:1px;height:1px;",t.coordsize=S+","+S,t.coordorigin="0,0"},k=function(t){return String(t).replace(/&/g,"&amp;").replace(/"/g,"&quot;")},L=function(t,e,i){return"rgb("+[t,e,i].join(",")+")"},P=function(t,e){e&&t&&e.parentNode!==t&&t.appendChild(e)},D=function(t,e){e&&t&&e.parentNode===t&&t.removeChild(e)},O=function(t,e,i){return(parseFloat(t)||0)*A+(parseFloat(e)||0)*I+i},z=function(t,e){return"string"==typeof t?t.lastIndexOf("%")>=0?parseFloat(t)/100*e:parseFloat(t):t},E=function(t,e,i){var n=a.parse(e);i=+i,isNaN(i)&&(i=1),n&&(t.color=L(n[0],n[1],n[2]),t.opacity=i*n[3])},N=function(t){var e=a.parse(t);return[L(e[0],e[1],e[2]),e[3]]},R=function(t,e,i){var n=e.fill;if(null!=n)if(n instanceof f){var r,o=0,a=[0,0],s=0,l=1,h=i.getBoundingRect(),u=h.width,c=h.height;if("linear"===n.type){r="gradient";var d=i.transform,p=[n.x*u,n.y*c],g=[n.x2*u,n.y2*c];d&&(b(p,p,d),b(g,g,d));var m=g[0]-p[0],v=g[1]-p[1];o=180*Math.atan2(m,v)/Math.PI,o<0&&(o+=360),o<1e-6&&(o=0)}else{r="gradientradial";var p=[n.x*u,n.y*c],d=i.transform,y=i.scale,x=u,w=c;a=[(p[0]-h.x)/x,(p[1]-h.y)/w],d&&b(p,p,d),x/=y[0]*S,w/=y[1]*S;var M=_(x,w);s=0/M,l=2*n.r/M-s}var T=n.colorStops.slice();T.sort(function(t,e){return t.offset-e.offset});for(var A=T.length,I=[],C=[],k=0;k<A;k++){var L=T[k],P=N(L.color);C.push(L.offset*l+s+" "+P[0]),0!==k&&k!==A-1||I.push(P)}if(A>=2){var D=I[0][0],O=I[1][0],z=I[0][1]*e.opacity,R=I[1][1]*e.opacity;t.type=r,t.method="none",t.focus="100%",t.angle=o,t.color=D,t.color2=O,t.colors=C.join(","),t.opacity=R,t.opacity2=z}"radial"===r&&(t.focusposition=a.join(","))}else E(t,n,e.opacity)},B=function(t,e){null!=e.lineDash&&(t.dashstyle=e.lineDash.join(" ")),null==e.stroke||e.stroke instanceof f||E(t,e.stroke,e.opacity)},V=function(t,e,i,n){var r="fill"==e,o=t.getElementsByTagName(e)[0];null!=i[e]&&"none"!==i[e]&&(r||!r&&i.lineWidth)?(t[r?"filled":"stroked"]="true",i[e]instanceof f&&D(t,o),o||(o=p.createNode(e)),r?R(o,i,n):B(o,i),P(t,o)):(t[r?"filled":"stroked"]="false",D(t,o))},F=[[],[],[]],G=function(t,e){var i,n,r,a,s,l,h=o.M,u=o.C,c=o.L,d=o.A,f=o.Q,p=[];for(a=0;a<t.length;){switch(r=t[a++],n="",i=0,r){case h:n=" m ",i=1,s=t[a++],l=t[a++],F[0][0]=s,F[0][1]=l;break;case c:n=" l ",i=1,s=t[a++],l=t[a++],F[0][0]=s,F[0][1]=l;break;case f:case u:n=" c ",i=3;var v,_,M=t[a++],A=t[a++],I=t[a++],C=t[a++];r===f?(v=I,_=C,I=(I+2*M)/3,C=(C+2*A)/3,M=(s+2*M)/3,A=(l+2*A)/3):(v=t[a++],_=t[a++]),F[0][0]=M,F[0][1]=A,F[1][0]=I,F[1][1]=C,F[2][0]=v,F[2][1]=_,s=v,l=_;break;case d:var k=0,L=0,P=1,D=1,O=0;e&&(k=e[4],L=e[5],P=m(e[0]*e[0]+e[1]*e[1]),D=m(e[2]*e[2]+e[3]*e[3]),O=Math.atan2(-e[1]/D,e[0]/P));var z=t[a++],E=t[a++],N=t[a++],R=t[a++],B=t[a++]+O,V=t[a++]+B+O;a++;var G=t[a++],H=z+y(B)*N,W=E+x(B)*R,M=z+y(V)*N,A=E+x(V)*R,Z=G?" wa ":" at ";Math.abs(H-M)<1e-4&&(Math.abs(V-B)>.01?G&&(H+=270/S):Math.abs(W-E)<1e-4?G&&H<z||!G&&H>z?A-=270/S:A+=270/S:G&&W<E||!G&&W>E?M+=270/S:M-=270/S),p.push(Z,g(((z-N)*P+k)*S-T),w,g(((E-R)*D+L)*S-T),w,g(((z+N)*P+k)*S-T),w,g(((E+R)*D+L)*S-T),w,g((H*P+k)*S-T),w,g((W*D+L)*S-T),w,g((M*P+k)*S-T),w,g((A*D+L)*S-T)),s=M,l=A;break;case o.R:var q=F[0],j=F[1];q[0]=t[a++],q[1]=t[a++],j[0]=q[0]+t[a++],j[1]=q[1]+t[a++],e&&(b(q,q,e),b(j,j,e)),q[0]=g(q[0]*S-T),j[0]=g(j[0]*S-T),q[1]=g(q[1]*S-T),j[1]=g(j[1]*S-T),p.push(" m ",q[0],w,q[1]," l ",j[0],w,q[1]," l ",j[0],w,j[1]," l ",q[0],w,j[1]);break;case o.Z:p.push(" x ")}if(i>0){p.push(n);for(var U=0;U<i;U++){var X=F[U];e&&b(X,X,e),p.push(g(X[0]*S-T),w,g(X[1]*S-T),U<i-1?w:"")}}}return p.join("")};d.prototype.brushVML=function(t){var e=this.style,i=this._vmlEl;i||(i=p.createNode("shape"),C(i),this._vmlEl=i),V(i,"fill",e,this),V(i,"stroke",e,this);var n=this.transform,r=null!=n,o=i.getElementsByTagName("stroke")[0];if(o){var a=e.lineWidth;if(r&&!e.strokeNoScale){var s=n[0]*n[3]-n[1]*n[2];a*=m(v(s))}o.weight=a+"px"}var l=this.path;this.__dirtyPath&&(l.beginPath(),this.buildPath(l,this.shape),l.toStatic(),this.__dirtyPath=!1),i.path=G(l.data,this.transform),i.style.zIndex=O(this.zlevel,this.z,this.z2),P(t,i),null!=e.text?this.drawRectText(t,this.getBoundingRect()):this.removeRectText(t)},d.prototype.onRemove=function(t){D(t,this._vmlEl),this.removeRectText(t)},d.prototype.onAdd=function(t){P(t,this._vmlEl),this.appendRectText(t)};var H=function(t){return"object"==typeof t&&t.tagName&&"IMG"===t.tagName.toUpperCase()};u.prototype.brushVML=function(t){var e,i,n=this.style,r=n.image;if(H(r)){var o=r.src;if(o===this._imageSrc)e=this._imageWidth,i=this._imageHeight;else{var a=r.runtimeStyle,s=a.width,l=a.height;a.width="auto",a.height="auto",e=r.width,i=r.height,a.width=s,a.height=l,this._imageSrc=o,this._imageWidth=e,this._imageHeight=i}r=o}else r===this._imageSrc&&(e=this._imageWidth,i=this._imageHeight);if(r){var h=n.x||0,u=n.y||0,c=n.width,d=n.height,f=n.sWidth,v=n.sHeight,y=n.sx||0,x=n.sy||0,S=f&&v,T=this._vmlEl;T||(T=p.doc.createElement("div"),C(T),this._vmlEl=T);var A,I=T.style,k=!1,L=1,D=1;if(this.transform&&(A=this.transform,L=m(A[0]*A[0]+A[1]*A[1]),D=m(A[2]*A[2]+A[3]*A[3]),k=A[1]||A[2]),k){var z=[h,u],E=[h+c,u],N=[h,u+d],R=[h+c,u+d];b(z,z,A),b(E,E,A),b(N,N,A),b(R,R,A);var B=_(z[0],E[0],N[0],R[0]),V=_(z[1],E[1],N[1],R[1]),F=[];F.push("M11=",A[0]/L,w,"M12=",A[2]/D,w,"M21=",A[1]/L,w,"M22=",A[3]/D,w,"Dx=",g(h*L+A[4]),w,"Dy=",g(u*D+A[5])),I.padding="0 "+g(B)+"px "+g(V)+"px 0",I.filter=M+".Matrix("+F.join("")+", SizingMethod=clip)"}else A&&(h=h*L+A[4],u=u*D+A[5]),I.filter="",I.left=g(h)+"px",I.top=g(u)+"px";var G=this._imageEl,W=this._cropEl;G||(G=p.doc.createElement("div"),this._imageEl=G);var Z=G.style;if(S){if(e&&i)Z.width=g(L*e*c/f)+"px",Z.height=g(D*i*d/v)+"px";else{var q=new Image,j=this;q.onload=function(){q.onload=null,e=q.width,i=q.height,Z.width=g(L*e*c/f)+"px",Z.height=g(D*i*d/v)+"px",j._imageWidth=e,j._imageHeight=i,j._imageSrc=r},q.src=r}W||(W=p.doc.createElement("div"),W.style.overflow="hidden",this._cropEl=W);var U=W.style;U.width=g((c+y*c/f)*L),U.height=g((d+x*d/v)*D),U.filter=M+".Matrix(Dx="+-y*c/f*L+",Dy="+-x*d/v*D+")",W.parentNode||T.appendChild(W),G.parentNode!=W&&W.appendChild(G)}else Z.width=g(L*c)+"px",Z.height=g(D*d)+"px",T.appendChild(G),W&&W.parentNode&&(T.removeChild(W),this._cropEl=null);var X="",Y=n.opacity;Y<1&&(X+=".Alpha(opacity="+g(100*Y)+") "),X+=M+".AlphaImageLoader(src="+r+", SizingMethod=scale)",Z.filter=X,T.style.zIndex=O(this.zlevel,this.z,this.z2),P(t,T),null!=n.text&&this.drawRectText(t,this.getBoundingRect())}},u.prototype.onRemove=function(t){D(t,this._vmlEl),this._vmlEl=null,this._cropEl=null,this._imageEl=null,this.removeRectText(t)},u.prototype.onAdd=function(t){P(t,this._vmlEl),this.appendRectText(t)};var W,Z="normal",q={},j=0,U=100,X=document.createElement("div"),Y=function(t){var e=q[t];if(!e){j>U&&(j=0,q={});var i,n=X.style;try{n.font=t,i=n.fontFamily.split(",")[0]}catch(r){}e={style:n.fontStyle||Z,variant:n.fontVariant||Z,weight:n.fontWeight||Z,size:0|parseFloat(n.fontSize||12),family:i||"Microsoft YaHei"},q[t]=e,j++}return e};s.measureText=function(t,e){var i=p.doc;W||(W=i.createElement("div"),W.style.cssText="position:absolute;top:-20000px;left:0;padding:0;margin:0;border:none;white-space:pre;",p.doc.body.appendChild(W));try{W.style.font=e}catch(n){}return W.innerHTML="",W.appendChild(i.createTextNode(t)),{width:W.offsetWidth}};for(var $=new r,Q=function(t,e,i,n){var r=this.style,o=r.text;if(null!=o&&(o+=""),o){var a,l,h=r.textAlign,u=Y(r.textFont),c=u.style+" "+u.variant+" "+u.weight+" "+u.size+'px "'+u.family+'"',d=r.textBaseline,f=r.textVerticalAlign;i=i||s.getBoundingRect(o,c,h,d);var m=this.transform;if(m&&!n&&($.copy(e),$.applyTransform(m),e=$),n)a=e.x,l=e.y;else{var v=r.textPosition,y=r.textDistance;if(v instanceof Array)a=e.x+z(v[0],e.width),l=e.y+z(v[1],e.height),h=h||"left",d=d||"top";else{var x=s.adjustTextPositionOnRect(v,e,i,y);a=x.x,l=x.y,h=h||x.textAlign,d=d||x.textBaseline}}if(f){switch(f){case"middle":l-=i.height/2;break;case"bottom":l-=i.height}d="top"}var _=u.size;switch(d){case"hanging":case"top":l+=_/1.75;break;case"middle":break;default:l-=_/2.25}switch(h){case"left":break;case"center":a-=i.width/2;break;case"right":a-=i.width}var M,S,T,A=p.createNode,I=this._textVmlEl;I?(T=I.firstChild,M=T.nextSibling,S=M.nextSibling):(I=A("line"),M=A("path"),S=A("textpath"),T=A("skew"),S.style["v-text-align"]="left",C(I),M.textpathok=!0,S.on=!0,I.from="0 0",I.to="1000 0.05",P(I,T),P(I,M),P(I,S),this._textVmlEl=I);var L=[a,l],D=I.style;m&&n?(b(L,L,m),T.on=!0,T.matrix=m[0].toFixed(3)+w+m[2].toFixed(3)+w+m[1].toFixed(3)+w+m[3].toFixed(3)+",0,0",T.offset=(g(L[0])||0)+","+(g(L[1])||0),T.origin="0 0",D.left="0px",D.top="0px"):(T.on=!1,D.left=g(a)+"px",D.top=g(l)+"px"),S.string=k(o);try{S.style.font=c}catch(E){}V(I,"fill",{fill:n?r.fill:r.textFill,opacity:r.opacity},this),V(I,"stroke",{stroke:n?r.stroke:r.textStroke,opacity:r.opacity,lineDash:r.lineDash},this),I.style.zIndex=O(this.zlevel,this.z,this.z2),P(t,I)}},K=function(t){D(t,this._textVmlEl),this._textVmlEl=null},J=function(t){P(t,this._textVmlEl)},tt=[l,h,u,d,c],et=0;et<tt.length;et++){var it=tt[et].prototype;it.drawRectText=Q,it.removeRectText=K,it.appendRectText=J}c.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)},c.prototype.onRemove=function(t){this.removeRectText(t)},c.prototype.onAdd=function(t){this.appendRectText(t)}}},function(t,e,i){i(221),i(78).registerPainter("vml",i(220))}])});
\ No newline at end of file
+var r=i(70),o=i(9),a=i(1),s=i(154),l=i(157),u=i(158),h=i(165),c=!o.canvasSupported,d={canvas:i(156)},f={},p={};p.version="3.4.0",p.init=function(t,e){var i=new g(r(),t,e);return f[i.id]=i,i},p.dispose=function(t){if(t)t.dispose();else{for(var e in f)f.hasOwnProperty(e)&&f[e].dispose();f={}}return p},p.getInstance=function(t){return f[t]},p.registerPainter=function(t,e){d[t]=e};var g=function(t,e,i){i=i||{},this.dom=e,this.id=t;var n=this,r=new l,f=i.renderer;if(c){if(!d.vml)throw new Error("You need to require 'zrender/vml/vml' to support IE8");f="vml"}else f&&d[f]||(f="canvas");var p=new d[f](e,r,i);this.storage=r,this.painter=p;var g=o.node?null:new h(p.getViewportRoot());this.handler=new s(r,p,g,p.root),this.animation=new u({stage:{update:a.bind(this.flush,this)}}),this.animation.start(),this._needsRefresh;var m=r.delFromMap,v=r.addToMap;r.delFromMap=function(t){var e=r.get(t);m.call(r,t),e&&e.removeSelfFromZr(n)},r.addToMap=function(t){v.call(r,t),t.addSelfToZr(n)}};g.prototype={constructor:g,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(t,e),this._needsRefresh=!0},refreshImmediately:function(){this._needsRefresh=!1,this.painter.refresh(),this._needsRefresh=!1},refresh:function(){this._needsRefresh=!0},flush:function(){this._needsRefresh&&this.refreshImmediately(),this._needsRefreshHover&&this.refreshHoverImmediately()},addHover:function(t,e){this.painter.addHover&&(this.painter.addHover(t,e),this.refreshHover())},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)},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,n(this.id)}},t.exports=p},function(t,e,i){var n=i(2),r=i(1);t.exports=function(t,e){r.each(e,function(e){e.update="updateView",n.registerAction(e,function(i,n){var r={};return n.eachComponent({mainType:"series",subType:t,query:i},function(t){t[e.method]&&t[e.method](i.name);var n=t.getData();n.each(function(e){var i=n.getName(e);r[i]=t.isSelected(i)||!1})}),{name:i.name,selected:r}})})}},function(t,e,i){"use strict";var n=i(18),r=i(27);t.exports=n.extend({type:"series.__base_bar__",getInitialData:function(t,e){return r(t.data,this,e)},getMarkerPosition:function(t){var e=this.coordinateSystem;if(e){var i=e.dataToPoint(t,!0),n=this.getData(),r=n.getLayout("offset"),o=n.getLayout("size"),a=e.getBaseAxis().isHorizontal()?0:1;return i[a]+=r+o/2,i}return[NaN,NaN]},defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,barMinHeight:0,itemStyle:{normal:{},emphasis:{}}}})},function(t,e,i){function n(t,e,i,n,r){o.setText(t,e,i),t.text=n,"outside"===t.textPosition&&(t.textPosition=r)}var r=i(1),o=i(3),a={};a.setLabel=function(t,e,i,o,a,s,l){var u=i.getModel("label.normal"),h=i.getModel("label.emphasis");u.get("show")?n(t,u,o,r.retrieve(a.getFormattedLabel(s,"normal"),a.getRawValue(s)),l):t.text="",h.get("show")?n(e,h,o,r.retrieve(a.getFormattedLabel(s,"emphasis"),a.getRawValue(s)),l):e.text=""},t.exports=a},function(t,e,i){function n(t){return isNaN(t[0])||isNaN(t[1])}function r(t,e,i,r,o,a,g,m,v,y,x){for(var _=0,b=i,w=0;w<r;w++){var M=e[b];if(b>=o||b<0)break;if(n(M)){if(x){b+=a;continue}break}if(b===i)t[a>0?"moveTo":"lineTo"](M[0],M[1]),c(f,M);else if(v>0){var S=b+a,T=e[S];if(x)for(;T&&n(e[S]);)S+=a,T=e[S];var A=.5,I=e[_],T=e[S];if(!T||n(T))c(p,M);else{n(T)&&!x&&(T=M),s.sub(d,T,I);var C,P;if("x"===y||"y"===y){var k="x"===y?0:1;C=Math.abs(M[k]-I[k]),P=Math.abs(M[k]-T[k])}else C=s.dist(M,I),P=s.dist(M,T);A=P/(P+C),h(p,M,d,-v*(1-A))}l(f,f,m),u(f,f,g),l(p,p,m),u(p,p,g),t.bezierCurveTo(f[0],f[1],p[0],p[1],M[0],M[1]),h(f,M,d,v*A)}else t.lineTo(M[0],M[1]);_=b,b+=a}return w}function o(t,e){var i=[1/0,1/0],n=[-(1/0),-(1/0)];if(e)for(var r=0;r<t.length;r++){var o=t[r];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 a=i(8),s=i(6),l=s.min,u=s.max,h=s.scaleAndAdd,c=s.copy,d=[],f=[],p=[];t.exports={Polyline:a.extend({type:"ec-polyline",shape:{points:[],smooth:0,smoothConstraint:!0,smoothMonotone:null,connectNulls:!1},style:{fill:null,stroke:"#000"},buildPath:function(t,e){var i=e.points,a=0,s=i.length,l=o(i,e.smoothConstraint);if(e.connectNulls){for(;s>0&&n(i[s-1]);s--);for(;a<s&&n(i[a]);a++);}for(;a<s;)a+=r(t,i,a,s,s,1,l.min,l.max,e.smooth,e.smoothMonotone,e.connectNulls)+1}}),Polygon:a.extend({type:"ec-polygon",shape:{points:[],stackedOnPoints:[],smooth:0,stackedOnSmooth:0,smoothConstraint:!0,smoothMonotone:null,connectNulls:!1},buildPath:function(t,e){var i=e.points,a=e.stackedOnPoints,s=0,l=i.length,u=e.smoothMonotone,h=o(i,e.smoothConstraint),c=o(a,e.smoothConstraint);if(e.connectNulls){for(;l>0&&n(i[l-1]);l--);for(;s<l&&n(i[s]);s++);}for(;s<l;){var d=r(t,i,s,l,l,1,h.min,h.max,e.smooth,u,e.connectNulls);r(t,a,s+d-1,d,l,-1,c.min,c.max,e.stackedOnSmooth,u,e.connectNulls),s+=d+1,t.closePath()}}})}},,function(t,e,i){"use strict";var n=i(3),r=i(1),o=i(2);i(56),i(119),o.extendComponentView({type:"grid",render:function(t,e){this.group.removeAll(),t.get("show")&&this.group.add(new n.Rect({shape:t.coordinateSystem.getRect(),style:r.defaults({fill:t.get("backgroundColor")},t.getItemStyle()),silent:!0,z2:-1}))}}),o.registerPreprocessor(function(t){t.xAxis&&t.yAxis&&!t.grid&&(t.grid={})})},function(t,e,i){function n(t){if(!t.target||!t.target.draggable){var e=t.offsetX,i=t.offsetY;this.containsPoint&&this.containsPoint(e,i)&&(this._x=e,this._y=i,this._dragging=!0)}}function r(t){if(this._dragging&&(d.stop(t.event),"pinch"!==t.gestureEvent)){if(f.isTaken(this._zr,"globalPan"))return;var e=t.offsetX,i=t.offsetY,n=this._x,r=this._y,o=e-n,a=i-r;this._x=e,this._y=i;var s=this.target;if(s){var l=s.position;l[0]+=o,l[1]+=a,s.dirty()}d.stop(t.event),this.trigger("pan",o,a,n,r,e,i)}}function o(t){this._dragging=!1}function a(t){if(0!==t.wheelDelta){var e=t.wheelDelta>0?1.1:1/1.1;l.call(this,t,e,t.offsetX,t.offsetY)}}function s(t){if(!f.isTaken(this._zr,"globalPan")){var e=t.pinchScale>1?1.1:1/1.1;l.call(this,t,e,t.pinchX,t.pinchY)}}function l(t,e,i,n){if(this.containsPoint&&this.containsPoint(i,n)){d.stop(t.event);var r=this.target,o=this.zoomLimit;if(r){var a=r.position,s=r.scale,l=this.zoom=this.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/this.zoom;this.zoom=l,a[0]-=(i-a[0])*(c-1),a[1]-=(n-a[1])*(c-1),s[0]*=c,s[1]*=c,r.dirty()}this.trigger("zoom",e,i,n)}}function u(t,e){this.target=e,this.containsPoint,this.zoomLimit,this.zoom,this._zr=t;var i=c.bind,l=i(n,this),u=i(r,this),d=i(o,this),f=i(a,this),p=i(s,this);h.call(this),this.setContainsPoint=function(t){this.containsPoint=t},this.enable=function(e){this.disable(),null==e&&(e=!0),e!==!0&&"move"!==e&&"pan"!==e||(t.on("mousedown",l),t.on("mousemove",u),t.on("mouseup",d)),e!==!0&&"scale"!==e&&"zoom"!==e||(t.on("mousewheel",f),t.on("pinch",p))},this.disable=function(){t.off("mousedown",l),t.off("mousemove",u),t.off("mouseup",d),t.off("mousewheel",f),t.off("pinch",p)},this.dispose=this.disable,this.isDragging=function(){return this._dragging},this.isPinching=function(){return this._pinching}}var h=i(23),c=i(1),d=i(20),f=i(130);c.mixin(u,h),t.exports=u},function(t,e){t.exports=function(t,e,i,n,r){function o(t,e,i){var n=e.length?e.slice():[e,e];return e[0]>e[1]&&n.reverse(),t<0&&n[0]+t<i[0]&&(t=i[0]-n[0]),t>0&&n[1]+t>i[1]&&(t=i[1]-n[1]),t}return t?("rigid"===n?(t=o(t,e,i),e[0]+=t,e[1]+=t):(t=o(t,e[r],i),e[r]+=t,"push"===n&&e[0]>e[1]&&(e[1-r]=e[r])),e):e}},function(t,e,i){var n=i(1),r={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,lineStyle:{color:"#333",width:1,type:"solid"}},axisTick:{show:!0,inside:!1,length:5,lineStyle:{width:1}},axisLabel:{show:!0,inside:!1,rotate:0,margin:8,textStyle:{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)"]}}},o=n.merge({boundaryGap:!0,splitLine:{show:!1},axisTick:{alignWithLabel:!1,interval:"auto"},axisLabel:{interval:"auto"}},r),a=n.merge({boundaryGap:[0,0],splitNumber:5},r),s=n.defaults({scale:!0,min:"dataMin",max:"dataMax"},a),l=n.defaults({logBase:10},a);l.scale=!0,t.exports={categoryAxis:o,valueAxis:a,timeAxis:s,logAxis:l}},function(t,e,i){"use strict";function n(t){return t.get("stack")||"__ec_stack_"+t.seriesIndex}function r(t){return t.dim+t.index}function o(t,e){var i={};s.each(t,function(t,e){var o=t.getData(),a=t.coordinateSystem,s=a.getBaseAxis(),l=s.getExtent(),h="category"===s.type?s.getBandWidth():Math.abs(l[1]-l[0])/o.count(),c=i[r(s)]||{bandWidth:h,remainedWidth:h,autoWidthCount:0,categoryGap:"20%",gap:"30%",stacks:{}},d=c.stacks;i[r(s)]=c;var f=n(t);d[f]||c.autoWidthCount++,d[f]=d[f]||{width:0,maxWidth:0};var p=u(t.get("barWidth"),h),g=u(t.get("barMaxWidth"),h),m=t.get("barGap"),v=t.get("barCategoryGap");p&&!d[f].width&&(p=Math.min(c.remainedWidth,p),d[f].width=p,c.remainedWidth-=p),g&&(d[f].maxWidth=g),null!=m&&(c.gap=m),null!=v&&(c.categoryGap=v)});var o={};return s.each(i,function(t,e){o[e]={};var i=t.stacks,n=t.bandWidth,r=u(t.categoryGap,n),a=u(t.gap,1),l=t.remainedWidth,h=t.autoWidthCount,c=(l-r)/(h+(h-1)*a);c=Math.max(c,0),s.each(i,function(t,e){var i=t.maxWidth;!t.width&&i&&i<c&&(i=Math.min(i,l),l-=i,t.width=i,h--)}),c=(l-r)/(h+(h-1)*a),c=Math.max(c,0);var d,f=0;s.each(i,function(t,e){t.width||(t.width=c),d=t,f+=t.width*(1+a)}),d&&(f-=d.width*a);var p=-f/2;s.each(i,function(t,i){o[e][i]=o[e][i]||{offset:p,width:t.width},p+=t.width*(1+a)})}),o}function a(t,e,i){var a=o(s.filter(e.getSeriesByType(t),function(t){return!e.isSeriesFiltered(t)&&t.coordinateSystem&&"cartesian2d"===t.coordinateSystem.type})),l={},u={};e.eachSeriesByType(t,function(t){var e=t.getData(),i=t.coordinateSystem,o=i.getBaseAxis(),s=n(t),h=a[r(o)][s],c=h.offset,d=h.width,f=i.getOtherAxis(o),p=t.get("barMinHeight")||0,g=o.onZero?f.toGlobalCoord(f.dataToCoord(0)):f.getGlobalExtent()[0],m=i.dataToPoints(e,!0);l[s]=l[s]||[],u[s]=u[s]||[],e.setLayout({offset:c,size:d}),e.each(f.dim,function(t,i){if(!isNaN(t)){l[s][i]||(l[s][i]={p:g,n:g},u[s][i]={p:g,n:g});var n,r,o,a,h=t>=0?"p":"n",v=m[i],y=l[s][i][h],x=u[s][i][h];f.isHorizontal()?(n=y,r=v[1]+c,o=v[0]-x,a=d,u[s][i][h]+=o,Math.abs(o)<p&&(o=(o<0?-1:1)*p),l[s][i][h]+=o):(n=v[0]+c,r=y,o=d,a=v[1]-x,u[s][i][h]+=a,Math.abs(a)<p&&(a=(a<=0?-1:1)*p),l[s][i][h]+=a),e.setItemLayout(i,{x:n,y:r,width:o,height:a})}},!0)},this)}var s=i(1),l=i(4),u=l.parsePercent;t.exports=a},function(t,e){t.exports={containStroke:function(t,e,i,n,r,o,a){if(0===r)return!1;var s=r,l=0,u=t;if(a>e+s&&a>n+s||a<e-s&&a<n-s||o>t+s&&o>i+s||o<t-s&&o<i-s)return!1;if(t===i)return Math.abs(o-t)<=s/2;l=(e-n)/(t-i),u=(t*n-i*e)/(t-i);var h=l*o-a+u,c=h*h/(l*l+1);return c<=s/2*s/2}}},function(t,e,i){var n=i(21);t.exports={containStroke:function(t,e,i,r,o,a,s,l,u){if(0===s)return!1;var h=s;if(u>e+h&&u>r+h&&u>a+h||u<e-h&&u<r-h&&u<a-h||l>t+h&&l>i+h&&l>o+h||l<t-h&&l<i-h&&l<o-h)return!1;var c=n.quadraticProjectPoint(t,e,i,r,o,a,l,u,null);return c<=h/2}}},function(t,e){t.exports=function(t,e,i,n,r,o){if(o>e&&o>n||o<e&&o<n)return 0;if(n===e)return 0;var a=n<e?1:-1,s=(o-e)/(n-e);1!==s&&0!==s||(a=n<e?.5:-.5);var l=s*(i-t)+t;return l>r?a:0}},function(t,e,i){"use strict";var n=i(1),r=i(41),o=function(t,e,i,n,o,a){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=a||!1,r.call(this,o)};o.prototype={constructor:o},n.inherits(o,r),t.exports=o},function(t,e,i){"use strict";function n(t){return t>s||t<-s}var r=i(19),o=i(6),a=r.identity,s=5e-5,l=function(t){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},u=l.prototype;u.transform=null,u.needLocalTransform=function(){return n(this.rotation)||n(this.position[0])||n(this.position[1])||n(this.scale[0]-1)||n(this.scale[1]-1)},u.updateTransform=function(){var t=this.parent,e=t&&t.transform,i=this.needLocalTransform(),n=this.transform;return i||e?(n=n||r.create(),i?this.getLocalTransform(n):a(n),e&&(i?r.mul(n,t.transform,n):r.copy(n,t.transform)),this.transform=n,this.invTransform=this.invTransform||r.create(),void r.invert(this.invTransform,n)):void(n&&a(n))},u.getLocalTransform=function(t){t=t||[],a(t);var e=this.origin,i=this.scale,n=this.rotation,o=this.position;return e&&(t[4]-=e[0],t[5]-=e[1]),r.scale(t,t,i),n&&r.rotate(t,t,n),e&&(t[4]+=e[0],t[5]+=e[1]),t[4]+=o[0],t[5]+=o[1],t},u.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)},u.restoreTransform=function(t){var e=(this.transform,t.dpr||1);t.setTransform(e,0,0,e,0,0)};var h=[];u.decomposeTransform=function(){if(this.transform){var t=this.parent,e=this.transform;t&&t.transform&&(r.mul(h,t.invTransform,e),e=h);var i=e[0]*e[0]+e[1]*e[1],o=e[2]*e[2]+e[3]*e[3],a=this.position,s=this.scale;n(i-1)&&(i=Math.sqrt(i)),n(o-1)&&(o=Math.sqrt(o)),e[0]<0&&(i=-i),e[3]<0&&(o=-o),a[0]=e[4],a[1]=e[5],s[0]=i,s[1]=o,this.rotation=Math.atan2(-e[1]/o,e[0]/i)}},u.getGlobalScale=function(){var t=this.transform;if(!t)return[1,1];var e=Math.sqrt(t[0]*t[0]+t[1]*t[1]),i=Math.sqrt(t[2]*t[2]+t[3]*t[3]);return t[0]<0&&(e=-e),t[3]<0&&(i=-i),[e,i]},u.transformCoordToLocal=function(t,e){var i=[t,e],n=this.invTransform;return n&&o.applyTransform(i,i,n),i},u.transformCoordToGlobal=function(t,e){var i=[t,e],n=this.transform;return n&&o.applyTransform(i,i,n),i},t.exports=l},function(t,e,i){"use strict";function n(t,e){r.each(o,function(e){this[e]=r.bind(t[e],t)},this),this.getCoordinateSystems=r.bind(e.getCoordinateSystems,e)}var r=i(1),o=["getDom","getZr","getWidth","getHeight","getDevicePixelRatio","dispatchAction","isDisposed","on","off","getDataURL","getConnectedDataURL","getModel","getOption","getViewOfComponentModel","getViewOfSeriesModel"];t.exports=n},function(t,e,i){var n=i(1);i(56),i(105),i(106);var r=i(97),o=i(2);o.registerLayout(n.curry(r,"bar")),o.registerVisual(function(t){t.eachSeriesByType("bar",function(t){var e=t.getData();e.setVisual("legendSymbol","roundRect")})}),i(38)},function(t,e,i){t.exports=i(89).extend({type:"series.bar",dependencies:["grid","polar"],brushSelector:"rect"})},function(t,e,i){"use strict";function n(t,e,i,n,r,o,a){var s=new u.Rect({shape:l.extend({},n)});if(o){var h=s.shape,c=r?"height":"width",d={};h[c]=0,d[c]=n[c],u[a?"updateProps":"initProps"](s,{shape:d},o,e)}return s}function r(t,e,i){i.style.text="",u.updateProps(i,{shape:{width:0}},e,t,function(){i.parent&&i.parent.remove(i)})}function o(t,e,i){var n=t.getItemLayout(e),r=s(i,n),o=n.width>0?1:-1,a=n.height>0?1:-1;return{x:n.x+o*r/2,y:n.y+a*r/2,width:n.width-o*r,height:n.height-a*r}}function a(t,e,i,n,r,o,a){var s=e.getItemVisual(i,"color"),c=e.getItemVisual(i,"opacity"),d=n.getModel("itemStyle.normal"),f=n.getModel("itemStyle.emphasis").getBarItemStyle();t.setShape("r",d.get("barBorderRadius")||0),t.useStyle(l.defaults({fill:s,opacity:c},d.getBarItemStyle()));var p=a?r.height>0?"bottom":"top":r.width>0?"left":"right";h.setLabel(t.style,f,n,s,o,i,p),u.setHoverStyle(t,f)}function s(t,e){var i=t.get(c)||0;return Math.min(i,Math.abs(e.width),Math.abs(e.height))}var l=i(1),u=i(3),h=i(90),c=["itemStyle","normal","barBorderWidth"];l.extend(i(10).prototype,i(107));var d=i(2).extendChartView({type:"bar",render:function(t,e,i){var n=t.get("coordinateSystem");return"cartesian2d"===n&&this._renderOnCartesian(t,e,i),this.group},dispose:l.noop,_renderOnCartesian:function(t,e,i){var s=this.group,l=t.getData(),h=this._data,c=t.coordinateSystem,d=c.getBaseAxis(),f=d.isHorizontal(),p=t.isAnimationEnabled()?t:null;l.diff(h).add(function(e){if(l.hasValue(e)){var i=l.getItemModel(e),r=o(l,e,i),u=n(l,e,i,r,f,p);l.setItemGraphicEl(e,u),s.add(u),a(u,l,e,i,r,t,f)}}).update(function(e,i){var r=h.getItemGraphicEl(i);if(!l.hasValue(e))return void s.remove(r);var c=l.getItemModel(e),d=o(l,e,c);r?u.updateProps(r,{shape:d},p,e):r=n(l,e,c,d,f,p,!0),l.setItemGraphicEl(e,r),s.add(r),a(r,l,e,c,d,t,f)}).remove(function(t){var e=h.getItemGraphicEl(t);e&&r(t,p,e)}).execute(),this._data=l},remove:function(t,e){var i=this.group,n=this._data;t.get("animation")?n&&n.eachItemGraphicEl(function(e){r(e.dataIndex,t,e)}):i.removeAll()}});t.exports=d},function(t,e,i){var n=i(31)([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["stroke","barBorderColor"],["lineWidth","barBorderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]);t.exports={getBarItemStyle:function(t){var e=n.call(this,t);if(this.getBorderLineDash){var i=this.getBorderLineDash();i&&(e.lineDash=i)}return e}}},function(t,e,i){function n(t){return"_"+t+"Type"}function r(t,e,i){var n=e.getItemVisual(i,"color"),r=e.getItemVisual(i,t),o=e.getItemVisual(i,t+"Size");if(r&&"none"!==r){f.isArray(o)||(o=[o,o]);var a=u.createSymbol(r,-o[0]/2,-o[1]/2,o[0],o[1],n);return a.name=t,a}}function o(t){var e=new c({name:"line"});return a(e.shape,t),e}function a(t,e){var i=e[0],n=e[1],r=e[2];t.x1=i[0],t.y1=i[1],t.x2=n[0],t.y2=n[1],t.percent=1,r?(t.cpx1=r[0],t.cpy1=r[1]):(t.cpx1=NaN,t.cpy1=NaN)}function s(){var t=this,e=t.childOfName("fromSymbol"),i=t.childOfName("toSymbol"),n=t.childOfName("label");if(e||i||!n.ignore){for(var r=1,o=this.parent;o;)o.scale&&(r/=o.scale[0]),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),c=h.sub([],u,l);if(h.normalize(c,c),e){e.attr("position",l);var d=a.tangentAt(0);e.attr("rotation",Math.PI/2-Math.atan2(d[1],d[0])),e.attr("scale",[r*s,r*s])}if(i){i.attr("position",u);var d=a.tangentAt(1);i.attr("rotation",-Math.PI/2-Math.atan2(d[1],d[0])),i.attr("scale",[r*s,r*s])}if(!n.ignore){n.attr("position",u);var f,p,g,m=5*r;if("end"===n.__position)f=[c[0]*m+u[0],c[1]*m+u[1]],p=c[0]>.8?"left":c[0]<-.8?"right":"center",g=c[1]>.8?"top":c[1]<-.8?"bottom":"middle";else if("middle"===n.__position){var v=s/2,d=a.tangentAt(v),y=[d[1],-d[0]],x=a.pointAt(v);y[1]>0&&(y[0]=-y[0],y[1]=-y[1]),f=[x[0]+y[0]*m,x[1]+y[1]*m],p="center",g="bottom";var _=-Math.atan2(d[1],d[0]);u[0]<l[0]&&(_=Math.PI+_),n.attr("rotation",_)}else f=[-c[0]*m+l[0],-c[1]*m+l[1]],p=c[0]>.8?"right":c[0]<-.8?"left":"center",g=c[1]>.8?"bottom":c[1]<-.8?"top":"middle";n.attr({style:{textVerticalAlign:n.__verticalAlign||g,textAlign:n.__textAlign||p},position:f,scale:[r,r]})}}}}function l(t,e,i){d.Group.call(this),this._createLine(t,e,i)}var u=i(24),h=i(6),c=i(191),d=i(3),f=i(1),p=i(4),g=["fromSymbol","toSymbol"],m=l.prototype;m.beforeUpdate=s,m._createLine=function(t,e,i){var a=t.hostModel,s=t.getItemLayout(e),l=o(s);l.shape.percent=0,d.initProps(l,{shape:{percent:1}},a,e),this.add(l);var u=new d.Text({name:"label"});this.add(u),f.each(g,function(i){var o=r(i,t,e);this.add(o),this[n(i)]=t.getItemVisual(e,i)},this),this._updateCommonStl(t,e,i)},m.updateData=function(t,e,i){var o=t.hostModel,s=this.childOfName("line"),l=t.getItemLayout(e),u={shape:{}};a(u.shape,l),d.updateProps(s,u,o,e),f.each(g,function(i){var o=t.getItemVisual(e,i),a=n(i);if(this[a]!==o){this.remove(this.childOfName(i));var s=r(i,t,e);this.add(s)}this[a]=o},this),this._updateCommonStl(t,e,i)},m._updateCommonStl=function(t,e,i){var n=t.hostModel,r=this.childOfName("line"),o=i&&i.lineStyle,a=i&&i.hoverLineStyle,s=i&&i.labelModel,l=i&&i.hoverLabelModel;if(!i||t.hasItemOption){var u=t.getItemModel(e);o=u.getModel("lineStyle.normal").getLineStyle(),a=u.getModel("lineStyle.emphasis").getLineStyle(),s=u.getModel("label.normal"),l=u.getModel("label.emphasis")}var h=t.getItemVisual(e,"color"),c=f.retrieve(t.getItemVisual(e,"opacity"),o.opacity,1);r.useStyle(f.defaults({strokeNoScale:!0,fill:"none",stroke:h,opacity:c},o)),r.hoverStyle=a,f.each(g,function(t){var e=this.childOfName(t);e&&(e.setColor(h),e.setStyle({opacity:c}))},this);var m,v,y=s.getShallow("show"),x=l.getShallow("show"),_=this.childOfName("label");if(y||x){var b=n.getRawValue(e);v=null==b?v=t.getName(e):isFinite(b)?p.round(b):b,m=h||"#000"}if(y){var w=s.getModel("textStyle");_.setStyle({text:f.retrieve(n.getFormattedLabel(e,"normal",t.dataType),v),textFont:w.getFont(),fill:w.getTextColor()||m}),_.__textAlign=w.get("align"),_.__verticalAlign=w.get("baseline"),_.__position=s.get("position")}else _.setStyle("text","");if(x){var M=l.getModel("textStyle");_.hoverStyle={text:f.retrieve(n.getFormattedLabel(e,"emphasis",t.dataType),v),textFont:M.getFont(),fill:M.getTextColor()||m}}else _.hoverStyle={text:""};_.ignore=!y&&!x,d.setHoverStyle(this)},m.updateLayout=function(t,e){this.setLinePoints(t.getItemLayout(e))},m.setLinePoints=function(t){var e=this.childOfName("line");a(e.shape,t),e.dirty()},f.inherits(l,d.Group),t.exports=l},function(t,e,i){function n(t){return isNaN(t[0])||isNaN(t[1])}function r(t){return!n(t[0])&&!n(t[1])}function o(t){this._ctor=t||s,this.group=new a.Group}var a=i(3),s=i(108),l=o.prototype;l.updateData=function(t){var e=this._lineData,i=this.group,n=this._ctor,o=t.hostModel,a={lineStyle:o.getModel("lineStyle.normal").getLineStyle(),hoverLineStyle:o.getModel("lineStyle.emphasis").getLineStyle(),labelModel:o.getModel("label.normal"),hoverLabelModel:o.getModel("label.emphasis")};t.diff(e).add(function(e){if(r(t.getItemLayout(e))){var o=new n(t,e,a);t.setItemGraphicEl(e,o),i.add(o)}}).update(function(o,s){var l=e.getItemGraphicEl(s);return r(t.getItemLayout(o))?(l?l.updateData(t,o,a):l=new n(t,o,a),t.setItemGraphicEl(o,l),void i.add(l)):void i.remove(l)}).remove(function(t){i.remove(e.getItemGraphicEl(t))}).execute(),this._lineData=t},l.updateLayout=function(){var t=this._lineData;t.eachItemGraphicEl(function(e,i){e.updateLayout(t,i)},this)},l.remove=function(){this.group.removeAll()},t.exports=o},function(t,e,i){var n=i(1),r=i(2),o=r.PRIORITY;i(111),i(112),r.registerVisual(n.curry(i(50),"line","circle","line")),r.registerLayout(n.curry(i(61),"line")),r.registerProcessor(o.PROCESSOR.STATISTIC,n.curry(i(149),"line")),i(38)},function(t,e,i){"use strict";var n=i(27),r=i(18);t.exports=r.extend({type:"series.line",dependencies:["grid","polar"],getInitialData:function(t,e){return n(t.data,this,e)},defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,hoverAnimation:!0,clipOverflow:!0,label:{normal:{position:"top"}},lineStyle:{normal:{width:2,type:"solid"}},step:!1,smooth:!1,smoothMonotone:null,symbol:"emptyCircle",symbolSize:4,symbolRotate:null,showSymbol:!0,showAllSymbol:!1,connectNulls:!1,sampling:"none",animationEasing:"linear",progressive:0,hoverLayerThreshold:1/0}})},function(t,e,i){"use strict";function n(t,e){if(t.length===e.length){for(var i=0;i<t.length;i++){var n=t[i],r=e[i];if(n[0]!==r[0]||n[1]!==r[1])return}return!0}}function r(t){return"number"==typeof t?t:t?.3:0}function o(t){var e=t.getGlobalExtent();if(t.onBand){var i=t.getBandWidth()/2-1,n=e[1]>e[0]?1:-1;e[0]+=n*i,e[1]-=n*i}return e}function a(t){return t>=0?1:-1}function s(t,e){var i=t.getBaseAxis(),n=t.getOtherAxis(i),r=i.onZero?0:n.scale.getExtent()[0],o=n.dim,s="x"===o||"radius"===o?1:0;return e.mapArray([o],function(n,l){for(var u,h=e.stackedOn;h&&a(h.get(o,l))===a(n);){u=h;break}var c=[];return c[s]=e.get(i.dim,l),c[1-s]=u?u.get(o,l,!0):r,t.dataToPoint(c)},!0)}function l(t,e,i){var n=o(t.getAxis("x")),r=o(t.getAxis("y")),a=t.getBaseAxis().isHorizontal(),s=Math.min(n[0],n[1]),l=Math.min(r[0],r[1]),u=Math.max(n[0],n[1])-s,h=Math.max(r[0],r[1])-l,c=i.get("lineStyle.normal.width")||2,d=i.get("clipOverflow")?c/2:Math.max(u,h);a?(l-=d,h+=2*d):(s-=d,u+=2*d);var f=new v.Rect({shape:{x:s,y:l,width:u,height:h}});return e&&(f.shape[a?"width":"height"]=0,v.initProps(f,{shape:{width:u,height:h}},i)),f}function u(t,e,i){var n=t.getAngleAxis(),r=t.getRadiusAxis(),o=r.getExtent(),a=n.getExtent(),s=Math.PI/180,l=new v.Sector({shape:{cx:t.cx,cy:t.cy,r0:o[0],r:o[1],startAngle:-a[0]*s,endAngle:-a[1]*s,clockwise:n.inverse}});return e&&(l.shape.endAngle=-a[0]*s,v.initProps(l,{shape:{endAngle:-a[1]*s}},i)),l}function h(t,e,i){return"polar"===t.type?u(t,e,i):l(t,e,i)}function c(t,e,i){for(var n=e.getBaseAxis(),r="x"===n.dim||"radius"===n.dim?0:1,o=[],a=0;a<t.length-1;a++){var s=t[a+1],l=t[a];o.push(l);var u=[];switch(i){case"end":u[r]=s[r],u[1-r]=l[1-r],o.push(u);break;case"middle":var h=(l[r]+s[r])/2,c=[];u[r]=c[r]=h,u[1-r]=l[1-r],c[1-r]=s[1-r],o.push(u),o.push(c);break;default:u[r]=l[r],u[1-r]=s[1-r],o.push(u)}}return t[a]&&o.push(t[a]),o}function d(t,e){var i=t.getVisual("visualMeta");if(i&&i.length&&t.count()){for(var n,r=i.length-1;r>=0;r--)if(i[r].dimension<2){n=i[r];break}if(n&&"cartesian2d"===e.type){var o=n.dimension,a=t.dimensions[o],s=e.getAxis(a),l=f.map(n.stops,function(t){return{coord:s.toGlobalCoord(s.dataToCoord(t.value)),color:t.color}}),u=l.length,h=n.outerColors.slice();u&&l[0].coord>l[u-1].coord&&(l.reverse(),h.reverse());var c=10,d=l[0].coord-c,p=l[u-1].coord+c,g=p-d;if(g<.001)return"transparent";f.each(l,function(t){t.offset=(t.coord-d)/g}),l.push({offset:u?l[u-1].offset:.5,color:h[1]||"transparent"}),l.unshift({offset:u?l[0].offset:.5,color:h[0]||"transparent"});var m=new v.LinearGradient(0,0,0,0,l,(!0));return m[a]=d,m[a+"2"]=p,m}}}var f=i(1),p=i(44),g=i(54),m=i(113),v=i(3),y=i(5),x=i(91),_=i(29);t.exports=_.extend({type:"line",init:function(){var t=new v.Group,e=new p;this.group.add(e.group),this._symbolDraw=e,this._lineGroup=t},render:function(t,e,i){var o=t.coordinateSystem,a=this.group,l=t.getData(),u=t.getModel("lineStyle.normal"),p=t.getModel("areaStyle.normal"),g=l.mapArray(l.getItemLayout,!0),m="polar"===o.type,v=this._coordSys,y=this._symbolDraw,x=this._polyline,_=this._polygon,b=this._lineGroup,w=t.get("animation"),M=!p.isEmpty(),S=s(o,l),T=t.get("showSymbol"),A=T&&!m&&!t.get("showAllSymbol")&&this._getSymbolIgnoreFunc(l,o),I=this._data;I&&I.eachItemGraphicEl(function(t,e){t.__temp&&(a.remove(t),I.setItemGraphicEl(e,null))}),T||y.remove(),a.add(b);var C=!m&&t.get("step");x&&v.type===o.type&&C===this._step?(M&&!_?_=this._newPolygon(g,S,o,w):_&&!M&&(b.remove(_),_=this._polygon=null),b.setClipPath(h(o,!1,t)),T&&y.updateData(l,A),l.eachItemGraphicEl(function(t){t.stopAnimation(!0)}),n(this._stackedOnPoints,S)&&n(this._points,g)||(w?this._updateAnimation(l,S,o,i,C):(C&&(g=c(g,o,C),S=c(S,o,C)),x.setShape({points:g}),_&&_.setShape({points:g,stackedOnPoints:S})))):(T&&y.updateData(l,A),C&&(g=c(g,o,C),S=c(S,o,C)),x=this._newPolyline(g,o,w),M&&(_=this._newPolygon(g,S,o,w)),b.setClipPath(h(o,!0,t)));var P=d(l,o)||l.getVisual("color");x.useStyle(f.defaults(u.getLineStyle(),{fill:"none",stroke:P,lineJoin:"bevel"}));var k=t.get("smooth");if(k=r(t.get("smooth")),x.setShape({smooth:k,smoothMonotone:t.get("smoothMonotone"),connectNulls:t.get("connectNulls")}),_){var L=l.stackedOn,D=0;if(_.useStyle(f.defaults(p.getAreaStyle(),{fill:P,opacity:.7,lineJoin:"bevel"})),L){var O=L.hostModel;D=r(O.get("smooth"))}_.setShape({smooth:k,stackedOnSmooth:D,smoothMonotone:t.get("smoothMonotone"),connectNulls:t.get("connectNulls")})}this._data=l,this._coordSys=o,this._stackedOnPoints=S,this._points=g,this._step=C},dispose:function(){},highlight:function(t,e,i,n){var r=t.getData(),o=y.queryDataIndex(r,n);if(!(o instanceof Array)&&null!=o&&o>=0){var a=r.getItemGraphicEl(o);if(!a){var s=r.getItemLayout(o);if(!s)return;a=new g(r,o),a.position=s,a.setZ(t.get("zlevel"),t.get("z")),a.ignore=isNaN(s[0])||isNaN(s[1]),a.__temp=!0,r.setItemGraphicEl(o,a),a.stopSymbolAnimation(!0),this.group.add(a)}a.highlight()}else _.prototype.highlight.call(this,t,e,i,n)},downplay:function(t,e,i,n){var r=t.getData(),o=y.queryDataIndex(r,n);if(null!=o&&o>=0){var a=r.getItemGraphicEl(o);a&&(a.__temp?(r.setItemGraphicEl(o,null),this.group.remove(a)):a.downplay())}else _.prototype.downplay.call(this,t,e,i,n)},_newPolyline:function(t){var e=this._polyline;return e&&this._lineGroup.remove(e),e=new x.Polyline({shape:{points:t},silent:!0,z2:10}),this._lineGroup.add(e),this._polyline=e,e},_newPolygon:function(t,e){var i=this._polygon;return i&&this._lineGroup.remove(i),i=new x.Polygon({shape:{points:t,stackedOnPoints:e},silent:!0}),this._lineGroup.add(i),this._polygon=i,i},_getSymbolIgnoreFunc:function(t,e){var i=e.getAxesByScale("ordinal")[0];if(i&&i.isLabelIgnored)return f.bind(i.isLabelIgnored,i)},_updateAnimation:function(t,e,i,n,r){var o=this._polyline,a=this._polygon,s=t.hostModel,l=m(this._data,t,this._stackedOnPoints,e,this._coordSys,i),u=l.current,h=l.stackedOnCurrent,d=l.next,f=l.stackedOnNext;r&&(u=c(l.current,i,r),h=c(l.stackedOnCurrent,i,r),d=c(l.next,i,r),f=c(l.stackedOnNext,i,r)),o.shape.__points=l.current,o.shape.points=u,v.updateProps(o,{shape:{points:d}},s),a&&(a.setShape({points:u,stackedOnPoints:h}),v.updateProps(a,{shape:{points:d,stackedOnPoints:f}},s));for(var p=[],g=l.status,y=0;y<g.length;y++){var x=g[y].cmd;if("="===x){var _=t.getItemGraphicEl(g[y].idx1);_&&p.push({el:_,ptIdx:y})}}o.animators&&o.animators.length&&o.animators[0].during(function(){for(var t=0;t<p.length;t++){var e=p[t].el;e.attr("position",o.shape.__points[p[t].ptIdx])}})},remove:function(t){var e=this.group,i=this._data;this._lineGroup.removeAll(),this._symbolDraw.remove(!0),i&&i.eachItemGraphicEl(function(t,n){t.__temp&&(e.remove(t),i.setItemGraphicEl(n,null))}),this._polyline=this._polygon=this._coordSys=this._points=this._stackedOnPoints=this._data=null}})},function(t,e){function i(t){return t>=0?1:-1}function n(t,e,n){for(var r,o=t.getBaseAxis(),a=t.getOtherAxis(o),s=o.onZero?0:a.scale.getExtent()[0],l=a.dim,u="x"===l||"radius"===l?1:0,h=e.stackedOn,c=e.get(l,n);h&&i(h.get(l,n))===i(c);){r=h;break}var d=[];return d[u]=e.get(o.dim,n),d[1-u]=r?r.get(l,n,!0):s,t.dataToPoint(d)}function r(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.exports=function(t,e,i,o,a,s){for(var l=r(t,e),u=[],h=[],c=[],d=[],f=[],p=[],g=[],m=s.dimensions,v=0;v<l.length;v++){var y=l[v],x=!0;switch(y.cmd){case"=":var _=t.getItemLayout(y.idx),b=e.getItemLayout(y.idx1);(isNaN(_[0])||isNaN(_[1]))&&(_=b.slice()),u.push(_),h.push(b),c.push(i[y.idx]),d.push(o[y.idx1]),g.push(e.getRawIndex(y.idx1));break;case"+":var w=y.idx;u.push(a.dataToPoint([e.get(m[0],w,!0),e.get(m[1],w,!0)])),h.push(e.getItemLayout(w).slice()),c.push(n(a,e,w)),d.push(o[w]),g.push(e.getRawIndex(w));break;case"-":var w=y.idx,M=t.getRawIndex(w);M!==w?(u.push(t.getItemLayout(w)),h.push(s.dataToPoint([t.get(m[0],w,!0),t.get(m[1],w,!0)])),c.push(i[w]),d.push(n(s,t,w)),g.push(M)):x=!1}x&&(f.push(y),p.push(p.length))}p.sort(function(t,e){return g[t]-g[e]});for(var S=[],T=[],A=[],I=[],C=[],v=0;v<p.length;v++){var w=p[v];S[v]=u[w],T[v]=h[w],A[v]=c[w],I[v]=d[w],C[v]=f[w]}return{current:S,next:T,stackedOnCurrent:A,stackedOnNext:I,status:C}}},function(t,e,i){var n=i(1),r=i(2);i(115),i(116),i(88)("pie",[{type:"pieToggleSelect",event:"pieselectchanged",
+method:"toggleSelected"},{type:"pieSelect",event:"pieselected",method:"select"},{type:"pieUnSelect",event:"pieunselected",method:"unSelect"}]),r.registerVisual(n.curry(i(83),"pie")),r.registerLayout(n.curry(i(118),"pie")),r.registerProcessor(n.curry(i(63),"pie"))},function(t,e,i){"use strict";var n=i(14),r=i(1),o=i(5),a=i(25),s=i(78),l=i(2).extendSeriesModel({type:"series.pie",init:function(t){l.superApply(this,"init",arguments),this.legendDataProvider=function(){return this.getRawData()},this.updateSelectedMap(t.data),this._defaultLabelLine(t)},mergeOption:function(t){l.superCall(this,"mergeOption",t),this.updateSelectedMap(this.option.data)},getInitialData:function(t,e){var i=a(["value"],t.data),r=new n(i,this);return r.initData(t.data),r},getDataParams:function(t){var e=this.getData(),i=l.superCall(this,"getDataParams",t),n=e.getSum("value");return i.percent=n?+(e.get("value",t)/n*100).toFixed(2):0,i.$vars.push("percent"),i},_defaultLabelLine:function(t){o.defaultEmphasis(t.labelLine,["show"]);var e=t.labelLine.normal,i=t.labelLine.emphasis;e.show=e.show&&t.label.normal.show,i.show=i.show&&t.label.emphasis.show},defaultOption:{zlevel:0,z:2,legendHoverLink:!0,hoverAnimation:!0,center:["50%","50%"],radius:[0,"75%"],clockwise:!0,startAngle:90,minAngle:0,selectedOffset:10,avoidLabelOverlap:!0,stillShowZeroSum:!0,label:{normal:{rotate:!1,show:!0,position:"outer"},emphasis:{}},labelLine:{normal:{show:!0,length:15,length2:15,smooth:!1,lineStyle:{width:1,type:"solid"}}},itemStyle:{normal:{borderWidth:1},emphasis:{}},animationType:"expansion",animationEasing:"cubicOut",data:[]}});r.mixin(l,s),t.exports=l},function(t,e,i){function n(t,e,i,n){var o=e.getData(),a=this.dataIndex,s=o.getName(a),l=e.get("selectedOffset");n.dispatchAction({type:"pieToggleSelect",from:t,name:s,seriesId:e.id}),o.each(function(t){r(o.getItemGraphicEl(t),o.getItemLayout(t),e.isSelected(o.getName(t)),l,i)})}function r(t,e,i,n,r){var o=(e.startAngle+e.endAngle)/2,a=Math.cos(o),s=Math.sin(o),l=i?n:0,u=[a*l,s*l];r?t.animate().when(200,{position:u}).start("bounceOut"):t.attr("position",u)}function o(t,e){function i(){o.ignore=o.hoverIgnore,a.ignore=a.hoverIgnore}function n(){o.ignore=o.normalIgnore,a.ignore=a.normalIgnore}s.Group.call(this);var r=new s.Sector({z2:2}),o=new s.Polyline,a=new s.Text;this.add(r),this.add(o),this.add(a),this.updateData(t,e,!0),this.on("emphasis",i).on("normal",n).on("mouseover",i).on("mouseout",n)}function a(t,e,i,n,r){var o=n.getModel("textStyle"),a="inside"===r||"inner"===r;return{fill:o.getTextColor()||(a?"#fff":t.getItemVisual(e,"color")),opacity:t.getItemVisual(e,"opacity"),textFont:o.getFont(),text:l.retrieve(t.hostModel.getFormattedLabel(e,i),t.getName(e))}}var s=i(3),l=i(1),u=o.prototype;u.updateData=function(t,e,i){function n(){a.stopAnimation(!0),a.animateTo({shape:{r:c.r+10}},300,"elasticOut")}function o(){a.stopAnimation(!0),a.animateTo({shape:{r:c.r}},300,"elasticOut")}var a=this.childAt(0),u=t.hostModel,h=t.getItemModel(e),c=t.getItemLayout(e),d=l.extend({},c);if(d.label=null,i){a.setShape(d);var f=u.getShallow("animationType");"scale"===f?(a.shape.r=c.r0,s.initProps(a,{shape:{r:c.r}},u,e)):(a.shape.endAngle=c.startAngle,s.updateProps(a,{shape:{endAngle:c.endAngle}},u,e))}else s.updateProps(a,{shape:d},u,e);var p=h.getModel("itemStyle"),g=t.getItemVisual(e,"color");a.useStyle(l.defaults({lineJoin:"bevel",fill:g},p.getModel("normal").getItemStyle())),a.hoverStyle=p.getModel("emphasis").getItemStyle(),r(this,t.getItemLayout(e),h.get("selected"),u.get("selectedOffset"),u.get("animation")),a.off("mouseover").off("mouseout").off("emphasis").off("normal"),h.get("hoverAnimation")&&u.isAnimationEnabled()&&a.on("mouseover",n).on("mouseout",o).on("emphasis",n).on("normal",o),this._updateLabel(t,e),s.setHoverStyle(this)},u._updateLabel=function(t,e){var i=this.childAt(1),n=this.childAt(2),r=t.hostModel,o=t.getItemModel(e),l=t.getItemLayout(e),u=l.label,h=t.getItemVisual(e,"color");s.updateProps(i,{shape:{points:u.linePoints||[[u.x,u.y],[u.x,u.y],[u.x,u.y]]}},r,e),s.updateProps(n,{style:{x:u.x,y:u.y}},r,e),n.attr({style:{textVerticalAlign:u.verticalAlign,textAlign:u.textAlign,textFont:u.font},rotation:u.rotation,origin:[u.x,u.y],z2:10});var c=o.getModel("label.normal"),d=o.getModel("label.emphasis"),f=o.getModel("labelLine.normal"),p=o.getModel("labelLine.emphasis"),g=c.get("position")||d.get("position");n.setStyle(a(t,e,"normal",c,g)),n.ignore=n.normalIgnore=!c.get("show"),n.hoverIgnore=!d.get("show"),i.ignore=i.normalIgnore=!f.get("show"),i.hoverIgnore=!p.get("show"),i.setStyle({stroke:h,opacity:t.getItemVisual(e,"opacity")}),i.setStyle(f.getModel("lineStyle").getLineStyle()),n.hoverStyle=a(t,e,"emphasis",d,g),i.hoverStyle=p.getModel("lineStyle").getLineStyle();var m=f.get("smooth");m&&m===!0&&(m=.4),i.setShape({smooth:m})},l.inherits(o,s.Group);var h=i(29).extend({type:"pie",init:function(){var t=new s.Group;this._sectorGroup=t},render:function(t,e,i,r){if(!r||r.from!==this.uid){var a=t.getData(),s=this._data,u=this.group,h=e.get("animation"),c=!s,d=t.get("animationType"),f=l.curry(n,this.uid,t,h,i),p=t.get("selectedMode");if(a.diff(s).add(function(t){var e=new o(a,t);c&&"scale"!==d&&e.eachChild(function(t){t.stopAnimation(!0)}),p&&e.on("click",f),a.setItemGraphicEl(t,e),u.add(e)}).update(function(t,e){var i=s.getItemGraphicEl(e);i.updateData(a,t),i.off("click"),p&&i.on("click",f),u.add(i),a.setItemGraphicEl(t,i)}).remove(function(t){var e=s.getItemGraphicEl(t);u.remove(e)}).execute(),h&&c&&a.count()>0&&"scale"!==d){var g=a.getItemLayout(0),m=Math.max(i.getWidth(),i.getHeight())/2,v=l.bind(u.removeClipPath,u);u.setClipPath(this._createClipPath(g.cx,g.cy,m,g.startAngle,g.clockwise,v,t))}this._data=a}},dispose:function(){},_createClipPath:function(t,e,i,n,r,o,a){var l=new s.Sector({shape:{cx:t,cy:e,r0:0,r:i,startAngle:n,endAngle:n,clockwise:r}});return s.initProps(l,{shape:{endAngle:n+(r?1:-1)*Math.PI*2}},a,o),l},containPoint:function(t,e){var i=e.getData(),n=i.getItemLayout(0);if(n){var r=t[0]-n.cx,o=t[1]-n.cy,a=Math.sqrt(r*r+o*o);return a<=n.r&&a>=n.r0}}});t.exports=h},function(t,e,i){"use strict";function n(t,e,i,n,r,o,a){function s(e,i,n,r){for(var o=e;o<i;o++)if(t[o].y+=n,o>e&&o+1<i&&t[o+1].y>t[o].y+t[o].height)return void l(o,n/2);l(i-1,n/2)}function l(e,i){for(var n=e;n>=0&&(t[n].y-=i,!(n>0&&t[n].y>t[n-1].y+t[n-1].height));n--);}function u(t,e,i,n,r,o){for(var a=o>0?e?Number.MAX_VALUE:0:e?Number.MAX_VALUE:0,s=0,l=t.length;s<l;s++)if("center"!==t[s].position){var u=Math.abs(t[s].y-n),h=t[s].len,c=t[s].len2,d=u<r+h?Math.sqrt((r+h+c)*(r+h+c)-u*u):Math.abs(t[s].x-i);e&&d>=a&&(d=a-10),!e&&d<=a&&(d=a+10),t[s].x=i+d*o,a=d}}t.sort(function(t,e){return t.y-e.y});for(var h,c=0,d=t.length,f=[],p=[],g=0;g<d;g++)h=t[g].y-c,h<0&&s(g,d,-h,r),c=t[g].y+t[g].height;a-c<0&&l(d-1,c-a);for(var g=0;g<d;g++)t[g].y>=i?p.push(t[g]):f.push(t[g]);u(f,!1,e,i,n,r),u(p,!0,e,i,n,r)}function r(t,e,i,r,o,a){for(var s=[],l=[],u=0;u<t.length;u++)t[u].x<e?s.push(t[u]):l.push(t[u]);n(l,e,i,r,1,o,a),n(s,e,i,r,-1,o,a);for(var u=0;u<t.length;u++){var h=t[u].linePoints;if(h){var c=h[1][0]-h[2][0];t[u].x<e?h[2][0]=t[u].x+3:h[2][0]=t[u].x-3,h[1][1]=h[2][1]=t[u].y,h[1][0]=h[2][0]+c}}}var o=i(16);t.exports=function(t,e,i,n){var a,s,l=t.getData(),u=[],h=!1;l.each(function(i){var n,r,c,d,f=l.getItemLayout(i),p=l.getItemModel(i),g=p.getModel("label.normal"),m=g.get("position")||p.get("label.emphasis.position"),v=p.getModel("labelLine.normal"),y=v.get("length"),x=v.get("length2"),_=(f.startAngle+f.endAngle)/2,b=Math.cos(_),w=Math.sin(_);a=f.cx,s=f.cy;var M="inside"===m||"inner"===m;if("center"===m)n=f.cx,r=f.cy,d="center";else{var S=(M?(f.r+f.r0)/2*b:f.r*b)+a,T=(M?(f.r+f.r0)/2*w:f.r*w)+s;if(n=S+3*b,r=T+3*w,!M){var A=S+b*(y+e-f.r),I=T+w*(y+e-f.r),C=A+(b<0?-1:1)*x,P=I;n=C+(b<0?-5:5),r=P,c=[[S,T],[A,I],[C,P]]}d=M?"center":b>0?"left":"right"}var k=g.getModel("textStyle").getFont(),L=g.get("rotate")?b<0?-_+Math.PI:-_:0,D=t.getFormattedLabel(i,"normal")||l.getName(i),O=o.getBoundingRect(D,k,d,"top");h=!!L,f.label={x:n,y:r,position:m,height:O.height,len:y,len2:x,linePoints:c,textAlign:d,verticalAlign:"middle",font:k,rotation:L},M||u.push(f.label)}),!h&&t.get("avoidLabelOverlap")&&r(u,a,s,e,i,n)}},function(t,e,i){var n=i(4),r=n.parsePercent,o=i(117),a=i(1),s=2*Math.PI,l=Math.PI/180;t.exports=function(t,e,i,u){e.eachSeriesByType(t,function(t){var e=t.get("center"),u=t.get("radius");a.isArray(u)||(u=[0,u]),a.isArray(e)||(e=[e,e]);var h=i.getWidth(),c=i.getHeight(),d=Math.min(h,c),f=r(e[0],h),p=r(e[1],c),g=r(u[0],d/2),m=r(u[1],d/2),v=t.getData(),y=-t.get("startAngle")*l,x=t.get("minAngle")*l,_=v.getSum("value"),b=Math.PI/(_||v.count())*2,w=t.get("clockwise"),M=t.get("roseType"),S=t.get("stillShowZeroSum"),T=v.getDataExtent("value");T[0]=0;var A=s,I=0,C=y,P=w?1:-1;if(v.each("value",function(t,e){var i;if(isNaN(t))return void v.setItemLayout(e,{angle:NaN,startAngle:NaN,endAngle:NaN,clockwise:w,cx:f,cy:p,r0:g,r:M?NaN:m});i="area"!==M?0===_&&S?b:t*b:s/(v.count()||1),i<x?(i=x,A-=x):I+=t;var r=C+P*i;v.setItemLayout(e,{angle:i,startAngle:C,endAngle:r,clockwise:w,cx:f,cy:p,r0:g,r:M?n.linearMap(t,T,[g,m]):m}),C=r},!0),A<s)if(A<=.001){var k=s/v.count();v.each(function(t){var e=v.getItemLayout(t);e.startAngle=y+P*t*k,e.endAngle=y+P*(t+1)*k})}else b=A/I,C=y,v.each("value",function(t,e){var i=v.getItemLayout(e),n=i.angle===x?x:t*b;i.startAngle=C,i.endAngle=C+P*n,C+=P*n});o(t,m,h,c)})}},function(t,e,i){"use strict";i(60),i(120)},function(t,e,i){var n=i(1),r=i(3),o=i(37),a=i(123),s=i(57),l=i(58),u=o.ifIgnoreOnTick,h=o.getInterval,c=["axisLine","axisLabel","axisTick","axisName"],d=["splitArea","splitLine"],f=s.extend({type:"cartesianAxis",axisPointerClass:a,render:function(t,e,i,a){this.group.removeAll();var s=this._axisGroup;if(this._axisGroup=new r.Group,this.group.add(this._axisGroup),t.get("show")){var u=t.getCoordSysModel(),h=l.layout(u,t),p=new o(t,h);n.each(c,p.add,p),this._axisGroup.add(p.getGroup()),n.each(d,function(e){t.get(e+".show")&&this["_"+e](t,u,h.labelInterval)},this),r.groupTransition(s,this._axisGroup,t),f.superCall(this,"render",t,e,i,a)}},_splitLine:function(t,e,i){var o=t.axis;if(!o.scale.isBlank()){var a=t.getModel("splitLine"),s=a.getModel("lineStyle"),l=s.get("color"),c=h(a,i);l=n.isArray(l)?l:[l];for(var d=e.coordinateSystem.getRect(),f=o.isHorizontal(),p=0,g=o.getTicksCoords(),m=o.scale.getTicks(),v=[],y=[],x=s.getLineStyle(),_=0;_<g.length;_++)if(!u(o,_,c)){var b=o.toGlobalCoord(g[_]);f?(v[0]=b,v[1]=d.y,y[0]=b,y[1]=d.y+d.height):(v[0]=d.x,v[1]=b,y[0]=d.x+d.width,y[1]=b);var w=p++%l.length;this._axisGroup.add(new r.Line(r.subPixelOptimizeLine({anid:"line_"+m[_],shape:{x1:v[0],y1:v[1],x2:y[0],y2:y[1]},style:n.defaults({stroke:l[w]},x),silent:!0})))}}},_splitArea:function(t,e,i){var o=t.axis;if(!o.scale.isBlank()){var a=t.getModel("splitArea"),s=a.getModel("areaStyle"),l=s.get("color"),c=e.coordinateSystem.getRect(),d=o.getTicksCoords(),f=o.scale.getTicks(),p=o.toGlobalCoord(d[0]),g=o.toGlobalCoord(d[0]),m=0,v=h(a,i),y=s.getAreaStyle();l=n.isArray(l)?l:[l];for(var x=1;x<d.length;x++)if(!u(o,x,v)){var _,b,w,M,S=o.toGlobalCoord(d[x]);o.isHorizontal()?(_=p,b=c.y,w=S-_,M=c.height):(_=c.x,b=g,w=c.width,M=S-b);var T=m++%l.length;this._axisGroup.add(new r.Rect({anid:"area_"+f[x],shape:{x:_,y:b,width:w,height:M},style:n.defaults({fill:l[T]},y),silent:!0})),p=_+w,g=b+M}}}});f.extend({type:"xAxis"}),f.extend({type:"yAxis"})},function(t,e,i){var n=i(2),r=n.extendComponentModel({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,textStyle:{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.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z",size:45,margin:50,color:"#333",shadowBlur:3,shadowColor:"#aaa",shadowOffsetX:0,shadowOffsetY:2,throttle:40}}});t.exports=r},function(t,e,i){var n=i(76),r=i(2).extendComponentView({type:"axisPointer",render:function(t,e,i){var r=e.getComponent("tooltip"),o=t.get("triggerOn")||r&&r.get("triggerOn")||"mousemove|click";n.register("axisPointer",i,function(t,e,i){"none"!==o&&("leave"===t||o.indexOf(t)>=0)&&i({type:"updateAxisPointer",currTrigger:t,x:e&&e.offsetX,y:e&&e.offsetY})})},remove:function(t,e){n.disopse(e.getZr(),"axisPointer"),r.superApply(this._model,"remove",arguments)},dispose:function(t,e){n.unregister("axisPointer",e),r.superApply(this._model,"dispose",arguments)}})},function(t,e,i){"use strict";function n(t,e){var i={};return i[e.dim+"AxisIndex"]=e.index,t.getCartesian(i)}function r(t){return"x"===t.dim?0:1}var o=i(3),a=i(74),s=i(55),l=i(58),u=a.extend({makeElOption:function(t,e,i,r,o){var a=i.axis,u=a.grid,c=r.get("type"),d=n(u,a).getOtherAxis(a).getGlobalExtent(),f=a.toGlobalCoord(a.dataToCoord(e,!0)),p=s.buildElStyle(r),g=h[c](a,f,d,p);g.style=p,t.graphicKey=g.type,t.pointer=g;var m=l.layout(u.model,i);s.buildCartesianSingleLabelElOption(e,t,m,i,r,o)},getHandleTransform:function(t,e,i){var n=l.layout(e.axis.grid.model,e,{labelInside:!1});return n.labelMargin=i.get("handle.margin"),{position:s.getTransformedPosition(e.axis,t,n),rotation:n.rotation+(n.labelDirection<0?Math.PI:0)}},updateHandleTransform:function(t,e,i,r){var o=i.axis,a=o.grid,s=o.getGlobalExtent(!0),l=n(a,o).getOtherAxis(o).getGlobalExtent(),u="x"===o.dim?0:1,h=t.position;h[u]+=e[u],h[u]=Math.min(s[1],h[u]),h[u]=Math.max(s[0],h[u]);var c=(l[1]+l[0])/2,d=[c,c];d[u]=h[u];var f=[{verticalAlign:"middle"},{align:"center"}];return{position:h,rotation:t.rotation,cursorPoint:d,tooltipOption:f[u]}}}),h={line:function(t,e,i,n){var a=s.makeLineShape([e,i[0]],[e,i[1]],r(t));return o.subPixelOptimizeLine({shape:a,style:n}),{type:"Line",shape:a}},shadow:function(t,e,i,n){var o=t.getBandWidth(),a=i[1]-i[0];return{type:"Rect",shape:s.makeRectShape([e-o/2,i[0]],[o,a],r(t))}}};t.exports=u},function(t,e,i){function n(t,e,i,n,o,g,m,v){var b=[];b=null!=i.x&&null!=i.y?[i.x,i.y]:y({seriesIndex:i.seriesIndex,dataIndex:i.dataIndex},o).point;var w=t.axesInfo,M="leave"===e||p(b),S={},T={},A={list:[],map:{}},I=[],C={showPointer:_(a,T),showTooltip:_(s,A),highlight:_(l,I)};return x(t.coordSysMap,function(e,n){var o=e.containPoint(b);x(t.coordSysAxesInfo[n],function(t,e){var n=t.axis;M||!o||d(i,n)||r(t,n.pointToData(b),C,!1,S)})}),x(w,function(t,e){var i=t.linkGroup;i&&!T[e]&&x(i.axesInfo,function(e,n){var o=T[n];if(e!==t&&o){var a=o.value;i.mapper&&(a=t.axis.scale.parse(i.mapper(a,f(e),f(t)))),r(t,a,C,!0,S)}})}),u(T,w),h(A,b,m,n),c(I,n,g,v),S}function r(t,e,i,n,r){var a=t.axis;if(!a.scale.isBlank()&&a.containData(e)){if(!t.involveSeries)return void i.showPointer(t,e);var s=o(e,t),l=s.payloadBatch,u=s.snapToValue;l[0]&&null==r.seriesIndex&&g.extend(r,l[0]),!n&&t.snap&&a.containData(u)&&null!=u&&(e=u),i.highlight("highlight",l),i.showPointer(t,e,l),i.showTooltip(t,s,u)}}function o(t,e){var i=e.axis,n=i.dim,r=t,o=[],a=Number.MAX_VALUE,s=-1;return x(e.seriesModels,function(e,l){var u,h,c=e.coordDimToDataDim(n);if(e.getAxisTooltipData){var d=e.getAxisTooltipData(c,t,i);h=d.dataIndices,u=d.nestestValue}else{if(h=e.getData().indexOfNearest(c[0],t,!1,"category"===i.type?.5:null),!h.length)return;u=e.getData().get(c[0],h[0])}if(null!=u&&isFinite(u)){var f=t-u,p=Math.abs(f);p<=a&&((p<a||f>=0&&s<0)&&(a=p,s=f,r=u,o.length=0),x(h,function(t){o.push({seriesIndex:e.seriesIndex,dataIndexInside:t,dataIndex:e.getData().getRawIndex(t)})}))}}),{payloadBatch:o,snapToValue:r}}function a(t,e,i,n){t[e.key]={value:i,payloadBatch:n}}function s(t,e,i,n){var r=i.payloadBatch,o=e.axis,a=o.model,s=e.axisPointerModel;if(e.triggerTooltip&&r.length){var l=e.coordSys.model,u=v.makeKey(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:n,valueLabelOpt:{precision:s.get("label.precision"),formatter:s.get("label.formatter")},seriesDataIndices:r.slice()})}}function l(t,e,i){t.push.apply(t,i)}function u(t,e){x(e,function(e,i){var n=e.axisPointerModel.option,r=t[i];r?(!e.useHandle&&(n.status="show"),n.value=r.value,n.seriesDataIndices=(r.payloadBatch||[]).slice()):!e.useHandle&&(n.status="hide")})}function h(t,e,i,n){if(p(e)||!t.list.length)return void n({type:"hideTip"});var r=((t.list[0].dataByAxis[0]||{}).seriesDataIndices||[])[0]||{};n({type:"showTip",escapeConnect:!0,x:e[0],y:e[1],tooltipOption:i,dataIndexInside:r.dataIndexInside,dataIndex:r.dataIndex,seriesIndex:r.seriesIndex,dataByCoordSys:t.list})}function c(t,e,i,n){var r=i.getZr();n="lastHighlights"+(n||"");var o=b(r)[n]||{},a=b(r)[n]={};g.each(t,function(t){var e=t.seriesIndex+" | "+t.dataIndex;a[e]=t});var s=[],l=[];g.each(o,function(t,e){!a[e]&&l.push(t)}),g.each(a,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})}function d(t,e){var i=1;return x(t,function(t,e){i&=!/^.+(AxisId|AxisName|AxisIndex)$/.test(e)}),!i&&x([["AxisId","id"],["AxisIndex","componentIndex"],["AxisName","name"]],function(n){var r=m.normalizeToArray(t[e.dim+n[0]]);i|=g.indexOf(r,e.model[n[1]])>=0}),!i}function f(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 p(t){return null==t[0]||isNaN(t[0])||null==t[1]||isNaN(t[1])}var g=i(1),m=i(5),v=i(32),y=i(75),x=g.each,_=g.curry,b=m.makeGetter();t.exports=n},function(t,e,i){var n=i(1),r=i(77),o=i(2);o.registerAction("dataZoom",function(t,e){var i=r.createLinkedNodesFinder(n.bind(e.eachComponent,e,"dataZoom"),r.eachAxisDim,function(t,e){return t.get(e.axisIndex)}),o=[];e.eachComponent({mainType:"dataZoom",query:t},function(t,e){o.push.apply(o,i(t).nodes)}),n.each(o,function(e,i){e.setRawRange({start:t.start,end:t.end,startValue:t.startValue,endValue:t.endValue})})})},function(t,e,i){function n(t,e,i){i.getAxisProxy(t.name,e).reset(i)}function r(t,e,i){i.getAxisProxy(t.name,e).filterData(i)}var o=i(2);o.registerProcessor(function(t,e){t.eachComponent("dataZoom",function(t){t.eachTargetAxis(n),t.eachTargetAxis(r)}),t.eachComponent("dataZoom",function(t){var e=t.findRepresentativeAxisProxy(),i=e.getDataPercentWindow(),n=e.getDataValueWindow();t.setRawRange({start:i[0],end:i[1],startValue:n[0],endValue:n[1]},!0)})})},function(t,e,i){function n(t){var e=t[a];return e||(e=t[a]=[{}]),e}var r=i(1),o=r.each,a="\0_ec_hist_store",s={push:function(t,e){var i=n(t);o(e,function(e,n){for(var r=i.length-1;r>=0;r--){var o=i[r];if(o[n])break}if(r<0){var a=t.queryComponents({mainType:"dataZoom",subType:"select",id:n})[0];if(a){var s=a.getPercentRange();i[0][n]={dataZoomId:n,start:s[0],end:s[1]}}}}),i.push(e)},pop:function(t){var e=n(t),i=e[e.length-1];e.length>1&&e.pop();var r={};return o(i,function(t,i){for(var n=e.length-1;n>=0;n--){var t=e[n][i];if(t){r[i]=t;break}}}),r},clear:function(t){t[a]=null},count:function(t){return n(t).length}};t.exports=s},function(t,e,i){i(13).registerSubTypeDefaulter("dataZoom",function(t){return"slider"})},function(t,e,i){function n(t){B.call(this),this._zr=t,this.group=new G.Group,this._brushType,this._brushOption,this._panels,this._track=[],this._dragging,this._covers=[],this._creatingCover,this._creatingPanel,this._enableGlobalPan,this._uid="brushController_"+nt++,this._handlers={},q(rt,function(t,e){this._handlers[e]=V.bind(t,this)},this)}function r(t,e){var i=t._zr;t._enableGlobalPan||H.take(i,J,t._uid),q(t._handlers,function(t,e){i.on(e,t)}),t._brushType=e.brushType,t._brushOption=V.merge(V.clone(it),e,!0)}function o(t){var e=t._zr;H.release(e,J,t._uid),q(t._handlers,function(t,i){e.off(i,t)}),t._brushType=t._brushOption=null}function a(t,e){var i=ot[e.brushType].createCover(t,e);return u(i),i.__brushOption=e,t.group.add(i),i}function s(t,e){var i=c(e);return i.endCreating&&(i.endCreating(t,e),u(e)),e}function l(t,e){var i=e.__brushOption;c(e).updateCoverShape(t,e,i.range,i)}function u(t){t.traverse(function(t){t.z=$,t.z2=$})}function h(t,e){c(e).updateCommon(t,e),l(t,e)}function c(t){return ot[t.__brushOption.brushType]}function d(t,e,i){var n=t._panels;if(!n)return!0;var r;return q(n,function(t){t.contain(e,i)&&(r=t)}),r}function f(t,e){var i=t._panels;if(!i)return!0;var n=e.__brushOption.panelId;return null==n||i[n]}function p(t){var e=t._covers,i=e.length;return q(e,function(e){t.group.remove(e)},t),e.length=0,!!i}function g(t,e){var i=j(t._covers,function(t){var e=t.__brushOption,i=V.clone(e.range);return{brushType:e.brushType,panelId:e.panelId,range:i}});t.trigger("brush",i,{isEnd:!!e.isEnd,removeOnClick:!!e.removeOnClick})}function m(t){var e=t._track;if(!e.length)return!1;var i=e[e.length-1],n=e[0],r=i[0]-n[0],o=i[1]-n[1],a=Y(r*r+o*o,.5);return a>K}function v(t){var e=t.length-1;return e<0&&(e=0),[t[0],t[e]]}function y(t,e,i,n){var r=new G.Group;return r.add(new G.Rect({name:"main",style:w(i),silent:!0,draggable:!0,cursor:"move",drift:Z(t,e,r,"nswe"),ondragend:Z(g,e,{isEnd:!0})})),q(n,function(i){r.add(new G.Rect({name:i,style:{opacity:0},draggable:!0,silent:!0,invisible:!0,drift:Z(t,e,r,i),ondragend:Z(g,e,{isEnd:!0})}))}),r}function x(t,e,i,n){var r=n.brushStyle.lineWidth||0,o=X(r,Q),a=i[0][0],s=i[1][0],l=a-r/2,u=s-r/2,h=i[0][1],c=i[1][1],d=h-o+r/2,f=c-o+r/2,p=h-a,g=c-s,m=p+r,v=g+r;b(t,e,"main",a,s,p,g),n.transformable&&(b(t,e,"w",l,u,o,v),b(t,e,"e",d,u,o,v),b(t,e,"n",l,u,m,o),b(t,e,"s",l,f,m,o),b(t,e,"nw",l,u,o,o),b(t,e,"ne",d,u,o,o),b(t,e,"sw",l,f,o,o),b(t,e,"se",d,f,o,o))}function _(t,e){var i=e.__brushOption,n=i.transformable,r=e.childAt(0);r.useStyle(w(i)),r.attr({silent:!n,cursor:n?"move":"default"}),q(["w","e","n","s","se","sw","ne","nw"],function(i){var r=e.childOfName(i),o=T(t,i);r&&r.attr({silent:!n,invisible:!n,cursor:n?et[o]+"-resize":null})})}function b(t,e,i,n,r,o,a){var s=e.childOfName(i);s&&s.setShape(k(P(t,e,[[n,r],[n+o,r+a]])))}function w(t){return V.defaults({strokeNoScale:!0},t.brushStyle)}function M(t,e,i,n){var r=[U(t,i),U(e,n)],o=[X(t,i),X(e,n)];return[[r[0],o[0]],[r[1],o[1]]]}function S(t){return G.getTransform(t.group)}function T(t,e){if(e.length>1){e=e.split("");var i=[T(t,e[0]),T(t,e[1])];return("e"===i[0]||"w"===i[0])&&i.reverse(),i.join("")}var n={w:"left",e:"right",n:"top",s:"bottom"},r={left:"w",right:"e",top:"n",bottom:"s"},i=G.transformDirection(n[e],S(t));return r[i]}function A(t,e,i,n,r,o,a,s){var l=n.__brushOption,u=t(l.range),c=C(i,o,a);q(r.split(""),function(t){var e=tt[t];u[e[0]][e[1]]+=c[e[0]]}),l.range=e(M(u[0][0],u[1][0],u[0][1],u[1][1])),h(i,n),g(i,{isEnd:!1})}function I(t,e,i,n,r){var o=e.__brushOption.range,a=C(t,i,n);q(o,function(t){t[0]+=a[0],t[1]+=a[1]}),h(t,e),g(t,{isEnd:!1})}function C(t,e,i){var n=t.group,r=n.transformCoordToLocal(e,i),o=n.transformCoordToLocal(0,0);return[r[0]-o[0],r[1]-o[1]]}function P(t,e,i){var n=f(t,e);if(n===!0)return V.clone(i);var r=n.getBoundingRect();return V.map(i,function(t){var e=t[0];e=X(e,r.x),e=U(e,r.x+r.width);var i=t[1];return i=X(i,r.y),i=U(i,r.y+r.height),[e,i]})}function k(t){var e=U(t[0][0],t[1][0]),i=U(t[0][1],t[1][1]),n=X(t[0][0],t[1][0]),r=X(t[0][1],t[1][1]);return{x:e,y:i,width:n-e,height:r-i}}function L(t,e){var i=e.offsetX,n=e.offsetY,r=t._zr;if(t._brushType){for(var o,a=t._panels,s=t._covers,l=0;l<s.length;l++)if(ot[s[l].__brushOption.brushType].contain(s[l],i,n)){o=!0;break}o||(a?q(a,function(t){t.contain(i,n)&&r.setCursorStyle("crosshair")}):r.setCursorStyle("crosshair"))}}function D(t){var e=t.event;e.preventDefault&&e.preventDefault()}function O(t,e,i){return t.childOfName("main").contain(e,i)}function z(t,e,i){var n,r=e.offsetX,o=e.offsetY,u=t._creatingCover,h=t._creatingPanel,c=t._brushOption;if(t._track.push(t.group.transformCoordToLocal(r,o)),m(t)||u){if(h&&!u){"single"===c.brushMode&&p(t);var f=V.clone(c);f.brushType=E(f.brushType,h),f.panelId=h===!0?null:h.__brushPanelId,u=t._creatingCover=a(t,f),t._covers.push(u)}if(u){var g=ot[E(t._brushType,h)],v=u.__brushOption;v.range=g.getCreatingRange(P(t,u,t._track)),i&&(s(t,u),g.updateCommon(t,u)),l(t,u),n={isEnd:i}}}else i&&"single"===c.brushMode&&c.removeOnClick&&d(t,r,o)&&p(t)&&(n={isEnd:i,removeOnClick:!0});return n}function E(t,e){return"auto"===t?e.__defaultBrushType:t}function N(t){if(this._dragging){D(t);var e=z(this,t,!0);this._dragging=!1,this._track=[],this._creatingCover=null,e&&g(this,e)}}function R(t){return{createCover:function(e,i){return y(Z(A,function(e){var i=[e,[0,100]];return t&&i.reverse(),i},function(e){return e[t]}),e,i,[["w","e"],["n","s"]][t])},getCreatingRange:function(e){var i=v(e),n=U(i[0][t],i[1][t]),r=X(i[0][t],i[1][t]);return[n,r]},updateCoverShape:function(e,i,n,r){var o,a=r.brushStyle.width;if(null==a){var s=f(e,i),l=0;if(s!==!0){var u=s.getBoundingRect();a=t?u.width:u.height,l=t?u.x:u.y}o=[l,l+(a||0)]}else o=[-a/2,a/2];var h=[n,o];t&&h.reverse(),x(e,i,h,r)},updateCommon:_,contain:O}}var B=i(23),V=i(1),F=i(11),G=i(3),H=i(130),W=i(48),Z=V.curry,q=V.each,j=V.map,U=Math.min,X=Math.max,Y=Math.pow,$=1e4,K=6,Q=6,J="globalPan",tt={w:[0,0],e:[0,1],n:[1,0],s:[1,1]},et={w:"ew",e:"ew",n:"ns",s:"ns",ne:"nesw",sw:"nesw",nw:"nwse",se:"nwse"},it={brushStyle:{lineWidth:2,stroke:"rgba(0,0,0,0.3)",fill:"rgba(0,0,0,0.1)"},transformable:!0,brushMode:"single",removeOnClick:!1},nt=0;n.prototype={constructor:n,enableBrush:function(t){return this._brushType&&o(this),t.brushType&&r(this,t),this},setPanels:function(t){var e=this._panels||{},i=this._panels=t&&t.length&&{},n=this.group;return i&&q(t,function(t){var r=t.panelId,o=e[r];o||(o=new G.Rect({silent:!0,invisible:!0}),n.add(o));var a=t.rect;a instanceof F||(a=F.create(a)),o.attr("shape",a.plain()),o.__brushPanelId=r,o.__defaultBrushType=t.defaultBrushType,i[r]=o,e[r]=null}),q(e,function(t){t&&n.remove(t)}),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},eachCover:function(t,e){q(this._covers,t,e)},updateCovers:function(t){function e(t,e){return(null!=t.id?t.id:o+e)+"-"+t.brushType}function i(t,i){return e(t.__brushOption,i)}function n(e,i){var n=t[e];if(null!=i&&l[i]===d)u[e]=l[i];else{var r=u[e]=null!=i?(l[i].__brushOption=n,l[i]):s(c,a(c,n));h(c,r)}}function r(t){l[t]!==d&&c.group.remove(l[t])}t=V.map(t,function(t){return V.merge(V.clone(it),t,!0)});var o="\0-brush-index-",l=this._covers,u=this._covers=[],c=this,d=this._creatingCover;return new W(l,t,i,e).add(n).update(n).remove(r).execute(),this},unmount:function(){return this.enableBrush(!1),p(this),this._zr.remove(this.group),this},dispose:function(){this.unmount(),this.off()}},V.mixin(n,B);var rt={mousedown:function(t){if(this._dragging)N.call(this,t);else if(!t.target||!t.target.draggable){D(t);var e=t.offsetX,i=t.offsetY;this._creatingCover=null;var n=this._creatingPanel=d(this,e,i);n&&(this._dragging=!0,this._track=[this.group.transformCoordToLocal(e,i)])}},mousemove:function(t){if(L(this,t),this._dragging){D(t);var e=z(this,t,!1);e&&g(this,e)}},mouseup:N},ot={lineX:R(0),lineY:R(1),rect:{createCover:function(t,e){return y(Z(A,function(t){return t},function(t){return t}),t,e,["w","e","n","s","se","sw","ne","nw"])},getCreatingRange:function(t){var e=v(t);return M(e[1][0],e[1][1],e[0][0],e[0][1])},updateCoverShape:function(t,e,i,n){x(t,e,i,n)},updateCommon:_,contain:O},polygon:{createCover:function(t,e){var i=new G.Group;return i.add(new G.Polyline({name:"main",style:w(e),silent:!0})),i},getCreatingRange:function(t){return t},endCreating:function(t,e){e.remove(e.childAt(0)),e.add(new G.Polygon({name:"main",draggable:!0,drift:Z(I,t,e),ondragend:Z(g,t,{isEnd:!0})}))},updateCoverShape:function(t,e,i,n){e.childAt(0).setShape({points:P(t,e,i)})},updateCommon:_,contain:O}};t.exports=n},function(t,e,i){function n(t){return t[r]||(t[r]={})}var r="\0_ec_interaction_mutex",o={take:function(t,e,i){var r=n(t);r[e]=i},release:function(t,e,i){var r=n(t),o=r[e];o===i&&(r[e]=null)},isTaken:function(t,e){return!!n(t)[e]}};i(2).registerAction({type:"takeGlobalCursor",event:"globalCursorTaken",update:"update"},function(){}),t.exports=o},function(t,e,i){function n(t,e,i){r.positionElement(t,e.getBoxLayoutParams(),{width:i.getWidth(),height:i.getHeight()},e.get("padding"))}var r=i(12),o=i(7),a=i(3);t.exports={layout:function(t,e,i){var o=r.getLayoutRect(e.getBoxLayoutParams(),{width:i.getWidth(),height:i.getHeight()},e.get("padding"));r.box(e.get("orient"),t,e.get("itemGap"),o.width,o.height),n(t,e,i)},addBackground:function(t,e){var i=o.normalizeCssArray(e.get("padding")),n=t.getBoundingRect(),r=e.getItemStyle(["color","opacity"]);r.fill=e.get("backgroundColor");var s=new a.Rect({shape:{x:n.x-i[3],y:n.y-i[0],width:n.width+i[1]+i[3],height:n.height+i[0]+i[2]},style:r,silent:!0,z2:-1});a.subPixelOptimizeRect(s),t.add(s)}}},function(t,e,i){var n=i(1),r=i(33),o=i(136),a=function(t,e,i,n,o){r.call(this,t,e,i),this.type=n||"value",this.position=o||"bottom"};a.prototype={constructor:a,index:0,onZero:!1,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()},getLabelInterval:function(){var t=this._labelInterval;return t||(t=this._labelInterval=o(this)),t},isLabelIgnored:function(t){if("category"===this.type){var e=this.getLabelInterval();return"function"==typeof e&&!e(t,this.scale.getLabel(t))||t%(e+1)}},pointToData:function(t,e){return this.coordToData(this.toLocalCoord(t["x"===this.dim?0:1]),e)},toLocalCoord:null,toGlobalCoord:null},n.inherits(a,r),t.exports=a},function(t,e,i){"use strict";function n(t){return this._axes[t]}var r=i(1),o=function(t){this._axes={},this._dimList=[],this.name=t||""};o.prototype={constructor:o,type:"cartesian",getAxis:function(t){return this._axes[t]},getAxes:function(){return r.map(this._dimList,n,this)},getAxesByScale:function(t){return t=t.toLowerCase(),r.filter(this.getAxes(),function(e){return e.scale.type===t})},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?[]:{},r=0;r<i.length;r++){var o=i[r],a=this._axes[o];n[o]=a[e](t[o])}return n}},t.exports=o},function(t,e,i){"use strict";function n(t){o.call(this,t)}var r=i(1),o=i(133);n.prototype={constructor:n,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])},dataToPoints:function(t,e){return t.mapArray(["x","y"],function(t,e){return this.dataToPoint([t,e])},e,this)},dataToPoint:function(t,e){var i=this.getAxis("x"),n=this.getAxis("y");return[i.toGlobalCoord(i.dataToCoord(t[0],e)),n.toGlobalCoord(n.dataToCoord(t[1],e))]},pointToData:function(t,e){var i=this.getAxis("x"),n=this.getAxis("y");return[i.coordToData(i.toLocalCoord(t[0]),e),n.coordToData(n.toLocalCoord(t[1]),e)]},getOtherAxis:function(t){return this.getAxis("x"===t.dim?"y":"x")}},r.inherits(n,o),t.exports=n},function(t,e,i){"use strict";i(60);var n=i(13);t.exports=n.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"}})},function(t,e,i){"use strict";var n=i(1),r=i(17);t.exports=function(t){var e=t.model,i=e.getModel("axisLabel"),o=i.get("interval");return"category"!==t.type||"auto"!==o?"auto"===o?0:o:r.getAxisLabelInterval(n.map(t.scale.getTicks(),t.dataToCoord,t),e.getFormattedLabels(),i.getModel("textStyle").getFont(),t.isHorizontal())}},function(t,e,i){var n=i(27),r=i(24),o=i(17),a=i(42),s=i(10),l=i(1);t.exports={createList:function(t){var e=t.get("data");return n(e,t,t.ecModel)},completeDimensions:i(25),createSymbol:r.createSymbol,createScale:function(t,e){var i=e;e instanceof s||(i=new s(e),l.mixin(i,a));var n=o.createScaleByModel(i);return n.setExtent(t[0],t[1]),o.niceScaleExtent(n,i),n},mixinAxisModelCommonMethods:function(t){l.mixin(t,a)}}},function(t,e,i){var n=i(3),r=i(1),o=Math.PI;t.exports=function(t,e){e=e||{},r.defaults(e,{text:"loading",color:"#c23531",textColor:"#000",maskColor:"rgba(255, 255, 255, 0.8)",zlevel:0});var i=new n.Rect({style:{fill:e.maskColor},zlevel:e.zlevel,z:1e4}),a=new n.Arc({shape:{startAngle:-o/2,endAngle:-o/2+.1,r:10},style:{stroke:e.color,lineCap:"round",lineWidth:5},zlevel:e.zlevel,z:10001}),s=new n.Rect({style:{fill:"none",text:e.text,textPosition:"right",textDistance:10,textFill:e.textColor},zlevel:e.zlevel,z:10001});a.animateShape(!0).when(1e3,{endAngle:3*o/2}).start("circularInOut"),a.animateShape(!0).when(1e3,{startAngle:3*o/2}).delay(300).start("circularInOut");var l=new n.Group;return l.add(a),l.add(s),l.add(i),l.resize=function(){var e=t.getWidth()/2,n=t.getHeight()/2;a.setShape({cx:e,cy:n});var r=a.shape.r;s.setShape({x:e-r,y:n-r,width:2*r,height:2*r}),i.setShape({x:0,y:0,width:t.getWidth(),height:t.getHeight()})},l.resize(),l}},function(t,e,i){function n(t,e){h.each(e,function(e,i){x.hasClass(i)||("object"==typeof e?t[i]=t[i]?h.merge(t[i],e,!1):h.clone(e):null==t[i]&&(t[i]=e))})}function r(t){t=t,this.option={},this.option[b]=1,this._componentsMap={series:[]},this._seriesIndices=null,n(t,this._theme.option),h.merge(t,_,!1),this.mergeOption(t)}function o(t,e){h.isArray(e)||(e=e?[e]:[]);var i={};return f(e,function(e){i[e]=(t[e]||[]).slice()}),i}function a(t,e,i){var n=e.type?e.type:i?i.subType:x.determineSubType(t,e);return n}function s(t){return g(t,function(t){return t.componentIndex})||[]}function l(t,e){return e.hasOwnProperty("subType")?p(t,function(t){return t.subType===e.subType}):t}function u(t){}var h=i(1),c=i(5),d=i(10),f=h.each,p=h.filter,g=h.map,m=h.isArray,v=h.indexOf,y=h.isObject,x=i(13),_=i(141),b="\0_ec_inner",w=d.extend({constructor:w,init:function(t,e,i,n){i=i||{},this.option=null,this._theme=new d(i),this._optionManager=n},setOption:function(t,e,i){h.assert(!(b in t),"please use chart.getOption()"),this._optionManager.setOption(t,e),this.resetOption(null,i)},resetOption:function(t,e){var i=!1,n=this._optionManager;if(!t||"recreate"===t){var o=n.mountOption("recreate"===t);this.option&&"recreate"!==t?(!e&&this.restoreData(),this.mergeOption(o)):r.call(this,o),i=!0}if("timeline"!==t&&"media"!==t||this.restoreData(),!t||"recreate"===t||"timeline"===t){var a=n.getTimelineOption(this);a&&(this.mergeOption(a),i=!0)}if(!t||"recreate"===t||"media"===t){var s=n.getMediaOption(this,this._api);s.length&&f(s,function(t){this.mergeOption(t,i=!0)},this)}return i},mergeOption:function(t){function e(e,r){var l=c.normalizeToArray(t[e]),u=c.mappingToExists(n[e],l);c.makeIdAndName(u),f(u,function(t,i){var n=t.option;y(n)&&(t.keyInfo.mainType=e,t.keyInfo.subType=a(e,n,t.exist))});var d=o(n,r);i[e]=[],n[e]=[],f(u,function(t,r){var o=t.exist,a=t.option;if(h.assert(y(a)||o,"Empty component definition"),a){var s=x.getClass(e,t.keyInfo.subType,!0);if(o&&o instanceof s)o.name=t.keyInfo.name,o.mergeOption(a,this),o.optionUpdated(a,!1);else{var l=h.extend({dependentModels:d,componentIndex:r},t.keyInfo);o=new s(a,this,this,l),h.extend(o,l),o.init(a,this,this,l),o.optionUpdated(null,!0)}}else o.mergeOption({},this),o.optionUpdated({},!1);n[e][r]=o,i[e][r]=o.option},this),"series"===e&&(this._seriesIndices=s(n.series))}var i=this.option,n=this._componentsMap,r=[];f(t,function(t,e){null!=t&&(x.hasClass(e)?r.push(e):i[e]=null==i[e]?h.clone(t):h.merge(i[e],t,!0))}),x.topologicalTravel(r,x.getAllClassMainTypes(),e,this),this._seriesIndices=this._seriesIndices||[]},getOption:function(){var t=h.clone(this.option);return f(t,function(e,i){if(x.hasClass(i)){for(var e=c.normalizeToArray(e),n=e.length-1;n>=0;n--)c.isIdInner(e[n])&&e.splice(n,1);t[i]=e}}),delete t[b],t},getTheme:function(){return this._theme},getComponent:function(t,e){var i=this._componentsMap[t];if(i)return i[e||0]},queryComponents:function(t){var e=t.mainType;if(!e)return[];var i=t.index,n=t.id,r=t.name,o=this._componentsMap[e];if(!o||!o.length)return[];var a;if(null!=i)m(i)||(i=[i]),a=p(g(i,function(t){return o[t]}),function(t){return!!t});else if(null!=n){var s=m(n);a=p(o,function(t){return s&&v(n,t.id)>=0||!s&&t.id===n})}else if(null!=r){var u=m(r);a=p(o,function(t){return u&&v(r,t.name)>=0||!u&&t.name===r})}else a=o.slice();return l(a,t)},findComponents:function(t){function e(t){var e=r+"Index",i=r+"Id",n=r+"Name";return!t||null==t[e]&&null==t[i]&&null==t[n]?null:{mainType:r,index:t[e],id:t[i],name:t[n]}}function i(e){return t.filter?p(e,t.filter):e}var n=t.query,r=t.mainType,o=e(n),a=o?this.queryComponents(o):this._componentsMap[r];return i(l(a,t))},eachComponent:function(t,e,i){var n=this._componentsMap;if("function"==typeof t)i=e,e=t,f(n,function(t,n){f(t,function(t,r){e.call(i,n,t,r)})});else if(h.isString(t))f(n[t],e,i);else if(y(t)){var r=this.findComponents(t);f(r,e,i)}},getSeriesByName:function(t){var e=this._componentsMap.series;return p(e,function(e){return e.name===t})},getSeriesByIndex:function(t){return this._componentsMap.series[t]},getSeriesByType:function(t){var e=this._componentsMap.series;return p(e,function(e){return e.subType===t})},getSeries:function(){return this._componentsMap.series.slice()},eachSeries:function(t,e){u(this),f(this._seriesIndices,function(i){var n=this._componentsMap.series[i];t.call(e,n,i)},this)},eachRawSeries:function(t,e){f(this._componentsMap.series,t,e)},eachSeriesByType:function(t,e,i){u(this),f(this._seriesIndices,function(n){var r=this._componentsMap.series[n];r.subType===t&&e.call(i,r,n)},this)},eachRawSeriesByType:function(t,e,i){return f(this.getSeriesByType(t),e,i)},isSeriesFiltered:function(t){return u(this),h.indexOf(this._seriesIndices,t.componentIndex)<0},filterSeries:function(t,e){u(this);var i=p(this._componentsMap.series,t,e);this._seriesIndices=s(i)},restoreData:function(){var t=this._componentsMap;this._seriesIndices=s(t.series);var e=[];f(t,function(t,i){e.push(i)}),x.topologicalTravel(e,x.getAllClassMainTypes(),function(e,i){f(t[e],function(t){t.restoreData()})})}});h.mixin(w,i(62)),t.exports=w},function(t,e,i){function n(t){this._api=t,this._timelineOptions=[],this._mediaList=[],this._mediaDefault,this._currentMediaIndices=[],this._optionBackup,this._newBaseOption}function r(t,e,i){var n,r,o=[],a=[],s=t.timeline;if(t.baseOption&&(r=t.baseOption),(s||t.options)&&(r=r||{},o=(t.options||[]).slice()),t.media){r=r||{};var l=t.media;d(l,function(t){t&&t.option&&(t.query?a.push(t):n||(n=t))})}return r||(r=t),r.timeline||(r.timeline=s),d([r].concat(o).concat(u.map(a,function(t){return t.option})),function(t){d(e,function(e){e(t,i)})}),{baseOption:r,timelineOptions:o,mediaDefault:n,mediaList:a}}function o(t,e,i){var n={width:e,height:i,aspectratio:e/i},r=!0;return u.each(t,function(t,e){var i=e.match(m);if(i&&i[1]&&i[2]){var o=i[1],s=i[2].toLowerCase();a(n[s],t,o)||(r=!1)}}),r}function a(t,e,i){return"min"===i?t>=e:"max"===i?t<=e:t===e}function s(t,e){return t.join(",")===e.join(",")}function l(t,e){e=e||{},d(e,function(e,i){if(null!=e){var n=t[i];if(c.hasClass(i)){e=h.normalizeToArray(e),n=h.normalizeToArray(n);var r=h.mappingToExists(n,e);t[i]=p(r,function(t){return t.option&&t.exist?g(t.exist,t.option,!0):t.exist||t.option})}else t[i]=g(n,e,!0)}})}var u=i(1),h=i(5),c=i(13),d=u.each,f=u.clone,p=u.map,g=u.merge,m=/^(min|max)?(.+)$/;n.prototype={constructor:n,setOption:function(t,e){t=f(t,!0);var i=this._optionBackup,n=r.call(this,t,e,!i);this._newBaseOption=n.baseOption,i?(l(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=p(e.timelineOptions,f),this._mediaList=p(e.mediaList,f),this._mediaDefault=f(e.mediaDefault),this._currentMediaIndices=[],f(t?e.baseOption:this._newBaseOption)},getTimelineOption:function(t){var e,i=this._timelineOptions;if(i.length){var n=t.getComponent("timeline");n&&(e=f(i[n.getCurrentIndex()],!0))}return e},getMediaOption:function(t){var e=this._api.getWidth(),i=this._api.getHeight(),n=this._mediaList,r=this._mediaDefault,a=[],l=[];if(!n.length&&!r)return l;for(var u=0,h=n.length;u<h;u++)o(n[u].query,e,i)&&a.push(u);return!a.length&&r&&(a=[-1]),a.length&&!s(a,this._currentMediaIndices)&&(l=p(a,function(t){return f(t===-1?r.option:n[t].option)})),this._currentMediaIndices=a,l}},t.exports=n},function(t,e){var i="";"undefined"!=typeof navigator&&(i=navigator.platform||""),t.exports={color:["#c23531","#2f4554","#61a0a8","#d48265","#91c7ae","#749f83","#ca8622","#bda29a","#6e7074","#546570","#c4ccd3"],textStyle:{fontFamily:i.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}},function(t,e,i){t.exports={getAreaStyle:i(31)([["fill","color"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["opacity"],["shadowColor"]])}},function(t,e){t.exports={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")}}}},function(t,e,i){var n=i(31)([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"],["textPosition"],["textAlign"]]);t.exports={getItemStyle:function(t,e){var i=n.call(this,t,e),r=this.getBorderLineDash();return r&&(i.lineDash=r),i},getBorderLineDash:function(){var t=this.get("borderType");return"solid"===t||null==t?null:"dashed"===t?[5,5]:[1,1]}}},function(t,e,i){var n=i(31)([["lineWidth","width"],["stroke","color"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]);t.exports={getLineStyle:function(t){var e=n.call(this,t),i=this.getLineDash(e.lineWidth);return i&&(e.lineDash=i),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?null:"dashed"===e?[n,n]:[i,i]}}},function(t,e,i){function n(t,e){return t&&t.getShallow(e)}var r=i(16);t.exports={getTextColor:function(){var t=this.ecModel;return this.getShallow("color")||t&&t.get("textStyle.color")},getFont:function(){var t=this.ecModel,e=t&&t.getModel("textStyle");return[this.getShallow("fontStyle")||n(e,"fontStyle"),this.getShallow("fontWeight")||n(e,"fontWeight"),(this.getShallow("fontSize")||n(e,"fontSize")||12)+"px",this.getShallow("fontFamily")||n(e,"fontFamily")||"sans-serif"].join(" ")},getTextRect:function(t){return r.getBoundingRect(t,this.getFont(),this.getShallow("align"),this.getShallow("baseline"))},truncateText:function(t,e,i,n){return r.truncateText(t,e,this.getFont(),i,n)}}},function(t,e,i){function n(t,e){e=e.split(",");for(var i=t,n=0;n<e.length&&(i=i&&i[e[n]],null!=i);n++);return i}function r(t,e,i,n){e=e.split(",");for(var r,o=t,a=0;a<e.length-1;a++)r=e[a],null==o[r]&&(o[r]={}),o=o[r];(n||null==o[e[a]])&&(o[e[a]]=i)}function o(t){c(l,function(e){e[0]in t&&!(e[1]in t)&&(t[e[1]]=t[e[0]])})}var a=i(1),s=i(148),l=[["x","left"],["y","top"],["x2","right"],["y2","bottom"]],u=["grid","geo","parallel","legend","toolbox","title","visualMap","dataZoom","timeline"],h=["bar","boxplot","candlestick","chord","effectScatter","funnel","gauge","lines","graph","heatmap","line","map","parallel","pie","radar","sankey","scatter","treemap"],c=a.each;t.exports=function(t){c(t.series,function(t){if(a.isObject(t)){var e=t.type;if(s(t),"pie"!==e&&"gauge"!==e||null!=t.clockWise&&(t.clockwise=t.clockWise),"gauge"===e){var i=n(t,"pointer.color");null!=i&&r(t,"itemStyle.normal.color",i)}for(var l=0;l<h.length;l++)if(h[l]===t.type){o(t);break}}}),t.dataRange&&(t.visualMap=t.dataRange),c(u,function(e){var i=t[e];i&&(a.isArray(i)||(i=[i]),c(i,function(t){o(t)}))})}},function(t,e,i){function n(t){var e=t&&t.itemStyle;e&&r.each(o,function(i){var n=e.normal,o=e.emphasis;n&&n[i]&&(t[i]=t[i]||{},t[i].normal?r.merge(t[i].normal,n[i]):t[i].normal=n[i],n[i]=null),o&&o[i]&&(t[i]=t[i]||{},t[i].emphasis?r.merge(t[i].emphasis,o[i]):t[i].emphasis=o[i],o[i]=null)})}var r=i(1),o=["areaStyle","lineStyle","nodeStyle","linkStyle","chordStyle","label","labelLine"];t.exports=function(t){if(t){n(t),n(t.markPoint),n(t.markLine);var e=t.data;if(e){for(var i=0;i<e.length;i++)n(e[i]);var o=t.markPoint;if(o&&o.data)for(var a=o.data,i=0;i<a.length;i++)n(a[i]);var s=t.markLine;if(s&&s.data)for(var l=s.data,i=0;i<l.length;i++)r.isArray(l[i])?(n(l[i][0]),n(l[i][1])):n(l[i])}}}},function(t,e){var i={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 e},min:function(t){for(var e=1/0,i=0;i<t.length;i++)t[i]<e&&(e=t[i]);return e},nearest:function(t){return t[0]}},n=function(t,e){return Math.round(t.length/2)};t.exports=function(t,e,r){e.eachSeriesByType(t,function(t){var e=t.getData(),r=t.get("sampling"),o=t.coordinateSystem;if("cartesian2d"===o.type&&r){var a=o.getBaseAxis(),s=o.getOtherAxis(a),l=a.getExtent(),u=l[1]-l[0],h=Math.round(e.count()/u);if(h>1){var c;"string"==typeof r?c=i[r]:"function"==typeof r&&(c=r),c&&(e=e.downSample(s.dim,1/h,c,n),t.setData(e))}}},this)}},function(t,e,i){function n(t,e){return c(t,h(e))}var r=i(1),o=i(34),a=i(4),s=i(43),l=o.prototype,u=s.prototype,h=a.getPrecisionSafe,c=a.round,d=Math.floor,f=Math.ceil,p=Math.pow,g=Math.log,m=o.extend({type:"log",base:10,$constructor:function(){o.apply(this,arguments),this._originalScale=new s},getTicks:function(){var t=this._originalScale,e=this._extent,i=t.getExtent();return r.map(u.getTicks.call(this),function(r){var o=a.round(p(this.base,r));return o=r===e[0]&&t.__fixMin?n(o,i[0]):o,o=r===e[1]&&t.__fixMax?n(o,i[1]):o},this)},getLabel:u.getLabel,scale:function(t){return t=l.scale.call(this,t),p(this.base,t)},setExtent:function(t,e){var i=this.base;t=g(t)/g(i),e=g(e)/g(i),u.setExtent.call(this,t,e)},getExtent:function(){var t=this.base,e=l.getExtent.call(this);e[0]=p(t,e[0]),e[1]=p(t,e[1]);var i=this._originalScale,r=i.getExtent();return i.__fixMin&&(e[0]=n(e[0],r[0])),i.__fixMax&&(e[1]=n(e[1],r[1])),e},unionExtent:function(t){this._originalScale.unionExtent(t);var e=this.base;t[0]=g(t[0])/g(e),t[1]=g(t[1])/g(e),l.unionExtent.call(this,t)},unionExtentFromData:function(t,e){this.unionExtent(t.getDataExtent(e,!0,function(t){return t>0}))},niceTicks:function(t){t=t||10;var e=this._extent,i=e[1]-e[0];if(!(i===1/0||i<=0)){var n=a.quantity(i),r=t/i*n;for(r<=.5&&(n*=10);!isNaN(n)&&Math.abs(n)<1&&Math.abs(n)>0;)n*=10;var o=[a.round(f(e[0]/n)*n),a.round(d(e[1]/n)*n)];this._interval=n,this._niceExtent=o}},niceExtent:function(t,e,i){u.niceExtent.call(this,t,e,i);var n=this._originalScale;n.__fixMin=e,n.__fixMax=i}});r.each(["contain","normalize"],function(t){m.prototype[t]=function(e){return e=g(e)/g(this.base),l[t].call(this,e)}}),m.create=function(){return new m},t.exports=m},function(t,e,i){var n=i(1),r=i(34),o=r.prototype,a=r.extend({type:"ordinal",init:function(t,e){this._data=t,this._extent=e||[0,t.length-1]},parse:function(t){return"string"==typeof t?n.indexOf(this._data,t):Math.round(t)},contain:function(t){return t=this.parse(t),o.contain.call(this,t)&&null!=this._data[t]},normalize:function(t){return o.normalize.call(this,this.parse(t))},scale:function(t){return Math.round(o.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){return this._data[t]},count:function(){return this._extent[1]-this._extent[0]+1},unionExtentFromData:function(t,e){this.unionExtent(t.getDataExtent(e,!1))},niceTicks:n.noop,niceExtent:n.noop});a.create=function(){return new a},t.exports=a},function(t,e,i){var n=i(1),r=i(4),o=i(7),a=i(43),s=a.prototype,l=Math.ceil,u=Math.floor,h=1e3,c=60*h,d=60*c,f=24*d,p=function(t,e,i,n){for(;i<n;){var r=i+n>>>1;t[r][2]<e?i=r+1:n=r}return i},g=a.extend({type:"time",getLabel:function(t){var e=this._stepLvl,i=new Date(t);return o.formatTime(e[0],i)},niceExtent:function(t,e,i){var n=this._extent;if(n[0]===n[1]&&(n[0]-=f,n[1]+=f),n[1]===-(1/0)&&n[0]===1/0){var o=new Date;n[1]=new Date(o.getFullYear(),o.getMonth(),o.getDate()),n[0]=n[1]-f}this.niceTicks(t);var a=this._interval;e||(n[0]=r.round(u(n[0]/a)*a)),i||(n[1]=r.round(l(n[1]/a)*a))},niceTicks:function(t){t=t||10;var e=this._extent,i=e[1]-e[0],n=i/t,o=m.length,a=p(m,n,0,o),s=m[Math.min(a,o-1)],h=s[2];if("year"===s[0]){var c=i/h,d=r.nice(c/t,!0);h*=d}var f=[l(e[0]/h)*h,u(e[1]/h)*h];this._stepLvl=s,this._interval=h,this._niceExtent=f},parse:function(t){return+r.parseDate(t)}});n.each(["contain","normalize"],function(t){g.prototype[t]=function(e){return s[t].call(this,this.parse(e))}});var m=[["hh:mm:ss",1,h],["hh:mm:ss",5,5*h],["hh:mm:ss",10,10*h],["hh:mm:ss",15,15*h],["hh:mm:ss",30,30*h],["hh:mm\nMM-dd",1,c],["hh:mm\nMM-dd",5,5*c],["hh:mm\nMM-dd",10,10*c],["hh:mm\nMM-dd",15,15*c],["hh:mm\nMM-dd",30,30*c],["hh:mm\nMM-dd",1,d],["hh:mm\nMM-dd",2,2*d],["hh:mm\nMM-dd",6,6*d],["hh:mm\nMM-dd",12,12*d],["MM-dd\nyyyy",1,f],["week",7,7*f],["month",1,31*f],["quarter",3,380*f/4],["half-year",6,380*f/2],["year",1,380*f]];g.create=function(){return new g},t.exports=g},function(t,e,i){var n=i(41);t.exports=function(t){function e(e){var i=(e.visualColorAccessPath||"itemStyle.normal.color").split("."),r=e.getData(),o=e.get(i)||e.getColorFromPalette(e.get("name"));r.setVisual("color",o),t.isSeriesFiltered(e)||("function"!=typeof o||o instanceof n||r.each(function(t){r.setItemVisual(t,"color",o(e.getDataParams(t)))}),r.each(function(t){var e=r.getItemModel(t),n=e.get(i,!0);null!=n&&r.setItemVisual(t,"color",n)}))}t.eachRawSeries(e)}},function(t,e,i){"use strict";function n(t,e,i){return{type:t,event:i,target:e,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}}function r(){}function o(t,e,i){if(t[t.rectHover?"rectContain":"contain"](e,i)){for(var n=t;n;){if(n.silent||n.clipPath&&!n.clipPath.contain(e,i))return!1;n=n.parent}return!0}return!1}var a=i(1),s=i(181),l=i(23);r.prototype.dispose=function(){};var u=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],h=function(t,e,i,n){l.call(this),this.storage=t,this.painter=e,this.painterRoot=n,i=i||new r,this.proxy=i,i.handler=this,this._hovered,this._lastTouchMoment,this._lastX,this._lastY,s.call(this),a.each(u,function(t){i.on&&i.on(t,this[t],this)},this)};h.prototype={constructor:h,mousemove:function(t){var e=t.zrX,i=t.zrY,n=this.findHover(e,i,null),r=this._hovered,o=this.proxy;this._hovered=n,o.setCursor&&o.setCursor(n?n.cursor:"default"),r&&n!==r&&r.__zr&&this.dispatchToElement(r,"mouseout",t),this.dispatchToElement(n,"mousemove",t),n&&n!==r&&this.dispatchToElement(n,"mouseover",t)},mouseout:function(t){this.dispatchToElement(this._hovered,"mouseout",t);var e,i=t.toElement||t.relatedTarget;do i=i&&i.parentNode;while(i&&9!=i.nodeType&&!(e=i===this.painterRoot));!e&&this.trigger("globalout",{event:t})},resize:function(t){this._hovered=null},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){for(var r="on"+e,o=n(e,t,i),a=t;a&&(a[r]&&(o.cancelBubble=a[r].call(a,o)),a.trigger(e,o),a=a.parent,!o.cancelBubble););o.cancelBubble||(this.trigger(e,o),this.painter&&this.painter.eachOtherLayer(function(t){"function"==typeof t[r]&&t[r].call(t,o),t.trigger&&t.trigger(e,o)}))},findHover:function(t,e,i){for(var n=this.storage.getDisplayList(),r=n.length-1;r>=0;r--)if(!n[r].silent&&n[r]!==i&&!n[r].ignore&&o(n[r],t,e))return n[r]}},a.each(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],function(t){h.prototype[t]=function(e){var i=this.findHover(e.zrX,e.zrY,null);if("mousedown"===t)this._downel=i,this._upel=i;else if("mosueup"===t)this._upel=i;else if("click"===t&&this._downel!==this._upel)return;this.dispatchToElement(i,t,e)}}),a.mixin(h,l),a.mixin(h,s),t.exports=h},function(t,e,i){function n(){return!1}function r(t,e,i,n){var r=document.createElement(e),o=i.getWidth(),a=i.getHeight(),s=r.style;return s.position="absolute",s.left=0,s.top=0,s.width=o+"px",s.height=a+"px",r.width=o*n,r.height=a*n,r.setAttribute("data-zr-dom-id",t),r}var o=i(1),a=i(35),s=i(72),l=i(71),u=function(t,e,i){var s;i=i||a.devicePixelRatio,"string"==typeof t?s=r(t,"canvas",e,i):o.isObject(t)&&(s=t,t=s.id),this.id=t,this.dom=s;var l=s.style;l&&(s.onselectstart=n,l["-webkit-user-select"]="none",l["user-select"]="none",l["-webkit-touch-callout"]="none",l["-webkit-tap-highlight-color"]="rgba(0,0,0,0)",l.padding=0,l.margin=0,l["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};u.prototype={constructor:u,elCount:0,__dirty:!0,initContext:function(){this.ctx=this.dom.getContext("2d"),this.ctx.dpr=this.dpr},createBackBuffer:function(){var t=this.dpr;this.domBack=r("back-"+this.id,"canvas",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,r=n.style,o=this.domBack;r.width=t+"px",r.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){var e=this.dom,i=this.ctx,n=e.width,r=e.height,o=this.clearColor,a=this.motionBlur&&!t,u=this.lastFrameAlpha,h=this.dpr;if(a&&(this.domBack||this.createBackBuffer(),this.ctxBack.globalCompositeOperation="copy",this.ctxBack.drawImage(e,0,0,n/h,r/h)),i.clearRect(0,0,n,r),o){var c;o.colorStops?(c=o.__canvasGradient||s.getGradient(i,o,{x:0,y:0,width:n,height:r}),o.__canvasGradient=c):o.image&&(c=l.prototype.getCanvasPattern.call(o,i)),i.save(),i.fillStyle=c||o,i.fillRect(0,0,n,r),i.restore()}if(a){var d=this.domBack;i.save(),i.globalAlpha=u,i.drawImage(d,0,0,n,r),i.restore()}}},t.exports=u},function(t,e,i){"use strict";function n(t){return parseInt(t,10)}function r(t){return!!t&&(!!t.__builtin__||"function"==typeof t.resize&&"function"==typeof t.refresh)}function o(t){t.__unusedCount++}function a(t){1==t.__unusedCount&&t.clear()}function s(t,e,i){return x.copy(t.getBoundingRect()),t.transform&&x.applyTransform(t.transform),_.width=e,_.height=i,!x.intersect(_)}function l(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}function u(t,e){for(var i=0;i<t.length;i++){var n=t[i],r=n.path;n.setTransform(e),r.beginPath(e),n.buildPath(r,n.shape),e.clip(),n.restoreTransform(e)}}function h(t,e){var i=document.createElement("div");return i.style.cssText=["position:relative","overflow:hidden","width:"+t+"px","height:"+e+"px","padding:0","margin:0","border-width:0"].join(";")+";",i}var c=i(35),d=i(1),f=i(52),p=i(11),g=i(51),m=i(155),v=i(67),y=5,x=new p(0,0,0,0),_=new p(0,0,0,0),b=function(t,e,i){var n=!t.nodeName||"CANVAS"===t.nodeName.toUpperCase();this._opts=i=d.extend({},i||{}),this.dpr=i.devicePixelRatio||c.devicePixelRatio,this._singleCanvas=n,this.root=t;var r=t.style;r&&(r["-webkit-tap-highlight-color"]="transparent",r["-webkit-user-select"]=r["user-select"]=r["-webkit-touch-callout"]="none",t.innerHTML=""),this.storage=e;var o=this._zlevelList=[],a=this._layers={};if(this._layerConfig={},n){null!=i.width&&(t.width=i.width),null!=i.height&&(t.height=i.height);var s=t.width,l=t.height;this._width=s,this._height=l;var u=new m(t,this,1);u.initContext(),a[0]=u,o.push(0),this._domRoot=t}else{this._width=this._getSize(0),this._height=this._getSize(1);var f=this._domRoot=h(this._width,this._height);t.appendChild(f)}this._progressiveLayers=[],this._hoverlayer,this._hoverElements=[]};b.prototype={constructor:b,isSingleCanvas:function(){return this._singleCanvas},getViewportRoot:function(){return this._domRoot},refresh:function(t){var e=this.storage.getDisplayList(!0),i=this._zlevelList;this._paintList(e,t);for(var n=0;n<i.length;n++){var r=i[n],o=this._layers[r];!o.__builtin__&&o.refresh&&o.refresh()}return this.refreshHover(),this._progressiveLayers.length&&this._startProgessive(),this},addHover:function(t,e){if(!t.__hoverMir){var i=new t.constructor({style:t.style,shape:t.shape});i.__from=t,t.__hoverMir=i,i.setStyle(e),this._hoverElements.push(i)}},removeHover:function(t){var e=t.__hoverMir,i=this._hoverElements,n=d.indexOf(i,e);n>=0&&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){g(t,this.storage.displayableSortFunc),i||(i=this._hoverlayer=this.getLayer(1e5));var n={};i.ctx.save();for(var r=0;r<e;){var o=t[r],a=o.__from;a&&a.__zr?(r++,a.invisible||(o.transform=a.transform,o.invTransform=a.invTransform,o.__clipPaths=a.__clipPaths,this._doPaintEl(o,i,!0,n))):(t.splice(r,1),a.__hoverMir=null,e--)}i.ctx.restore()}},_startProgessive:function(){function t(){i===e._progressiveToken&&e.storage&&(e._doPaintList(e.storage.getDisplayList()),e._furtherProgressive?(e._progress++,v(t)):e._progressiveToken=-1)}var e=this;if(e._furtherProgressive){var i=e._progressiveToken=+new Date;e._progress++,v(t)}},_clearProgressive:function(){this._progressiveToken=-1,this._progress=0,d.each(this._progressiveLayers,function(t){t.__dirty&&t.clear()})},_paintList:function(t,e){null==e&&(e=!1),this._updateLayerStatus(t),this._clearProgressive(),this.eachBuiltinLayer(o),this._doPaintList(t,e),this.eachBuiltinLayer(a)},_doPaintList:function(t,e){function i(t){var e=o.dpr||1;o.save(),o.globalAlpha=1,o.shadowBlur=0,n.__dirty=!0,o.setTransform(1,0,0,1,0,0),o.drawImage(t.dom,0,0,h*e,c*e),o.restore()}for(var n,r,o,a,s,l,u=0,h=this._width,c=this._height,p=this._progress,g=0,m=t.length;g<m;g++){var v=t[g],x=this._singleCanvas?0:v.zlevel,_=v.__frame;if(_<0&&s&&(i(s),s=null),r!==x&&(o&&o.restore(),a={},r=x,n=this.getLayer(r),n.__builtin__||f("ZLevel "+r+" has been used by unkown layer "+n.id),o=n.ctx,o.save(),n.__unusedCount=0,(n.__dirty||e)&&n.clear()),n.__dirty||e){if(_>=0){if(!s){if(s=this._progressiveLayers[Math.min(u++,y-1)],s.ctx.save(),s.renderScope={},s&&s.__progress>s.__maxProgress){g=s.__nextIdxNotProg-1;continue}l=s.__progress,s.__dirty||(p=l),s.__progress=p+1}_===p&&this._doPaintEl(v,s,!0,s.renderScope)}else this._doPaintEl(v,n,e,a);v.__dirty=!1}}s&&i(s),o&&o.restore(),this._furtherProgressive=!1,d.each(this._progressiveLayers,function(t){t.__maxProgress>=t.__progress&&(this._furtherProgressive=!0)},this)},_doPaintEl:function(t,e,i,n){var r=e.ctx,o=t.transform;if((e.__dirty||i)&&!t.invisible&&0!==t.style.opacity&&(!o||o[0]||o[3])&&(!t.culling||!s(t,this._width,this._height))){var a=t.__clipPaths;(n.prevClipLayer!==e||l(a,n.prevElClipPaths))&&(n.prevElClipPaths&&(n.prevClipLayer.ctx.restore(),n.prevClipLayer=n.prevElClipPaths=null,n.prevEl=null),a&&(r.save(),u(a,r),n.prevClipLayer=e,n.prevElClipPaths=a)),t.beforeBrush&&t.beforeBrush(r),t.brush(r,n.prevEl||null),n.prevEl=t,t.afterBrush&&t.afterBrush(r)}},getLayer:function(t){if(this._singleCanvas)return this._layers[0];var e=this._layers[t];return e||(e=new m("zr_"+t,this,this.dpr),e.__builtin__=!0,this._layerConfig[t]&&d.merge(e,this._layerConfig[t],!0),this.insertLayer(t,e),e.initContext()),e},insertLayer:function(t,e){var i=this._layers,n=this._zlevelList,o=n.length,a=null,s=-1,l=this._domRoot;if(i[t])return void f("ZLevel "+t+" has been used already");if(!r(e))return void f("Layer of zlevel "+t+" is not valid");if(o>0&&t>n[0]){for(s=0;s<o-1&&!(n[s]<t&&n[s+1]>t);s++);a=i[n[s]]}if(n.splice(s+1,0,t),i[t]=e,!e.virtual)if(a){var u=a.dom;u.nextSibling?l.insertBefore(e.dom,u.nextSibling):l.appendChild(e.dom)}else l.firstChild?l.insertBefore(e.dom,l.firstChild):l.appendChild(e.dom)},eachLayer:function(t,e){var i,n,r=this._zlevelList;for(n=0;n<r.length;n++)i=r[n],t.call(e,this._layers[i],i)},eachBuiltinLayer:function(t,e){var i,n,r,o=this._zlevelList;for(r=0;r<o.length;r++)n=o[r],i=this._layers[n],i.__builtin__&&t.call(e,i,n)},eachOtherLayer:function(t,e){var i,n,r,o=this._zlevelList;for(r=0;r<o.length;r++)n=o[r],i=this._layers[n],i.__builtin__||t.call(e,i,n)},getLayers:function(){return this._layers},_updateLayerStatus:function(t){var e=this._layers,i=this._progressiveLayers,n={},r={};this.eachBuiltinLayer(function(t,e){n[e]=t.elCount,t.elCount=0,t.__dirty=!1}),d.each(i,function(t,e){r[e]=t.elCount,t.elCount=0,t.__dirty=!1});for(var o,a,s=0,l=0,u=0,h=t.length;u<h;u++){var c=t[u],f=this._singleCanvas?0:c.zlevel,p=e[f],g=c.progressive;if(p&&(p.elCount++,p.__dirty=p.__dirty||c.__dirty),g>=0){a!==g&&(a=g,l++);var v=c.__frame=l-1;if(!o){var x=Math.min(s,y-1);o=i[x],o||(o=i[x]=new m("progressive",this,this.dpr),o.initContext()),o.__maxProgress=0}o.__dirty=o.__dirty||c.__dirty,o.elCount++,o.__maxProgress=Math.max(o.__maxProgress,v),o.__maxProgress>=o.__progress&&(p.__dirty=!0)}else c.__frame=-1,o&&(o.__nextIdxNotProg=u,s++,o=null)}o&&(s++,o.__nextIdxNotProg=u),this.eachBuiltinLayer(function(t,e){n[e]!==t.elCount&&(t.__dirty=!0)}),i.length=Math.min(s,y),d.each(i,function(t,e){r[e]!==t.elCount&&(c.__dirty=!0),t.__dirty&&(t.__progress=0)})},clear:function(){return this.eachBuiltinLayer(this._clearLayer),this},_clearLayer:function(t){t.clear()},configLayer:function(t,e){if(e){var i=this._layerConfig;i[t]?d.merge(i[t],e,!0):i[t]=e;var n=this._layers[t];n&&d.merge(n,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(d.indexOf(i,t),1))},resize:function(t,e){var i=this._domRoot;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||e!=this._height){i.style.width=t+"px",i.style.height=e+"px";for(var r in this._layers)this._layers.hasOwnProperty(r)&&this._layers[r].resize(t,e);d.each(this._progressiveLayers,function(i){i.resize(t,e)}),this.refresh(!0)}return this._width=t,this._height=e,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)return this._layers[0].dom;var e=new m("image",this,t.pixelRatio||this.dpr);e.initContext(),e.clearColor=t.backgroundColor,e.clear();for(var i=this.storage.getDisplayList(!0),n={},r=0;r<i.length;r++){var o=i[r];this._doPaintEl(o,e,!0,n)}return e.dom},getWidth:function(){return this._width},getHeight:function(){return this._height},_getSize:function(t){var e=this._opts,i=["width","height"][t],r=["clientWidth","clientHeight"][t],o=["paddingLeft","paddingTop"][t],a=["paddingRight","paddingBottom"][t];
+if(null!=e[i]&&"auto"!==e[i])return parseFloat(e[i]);var s=this.root,l=document.defaultView.getComputedStyle(s);return(s[r]||n(l[i])||n(s.style[i]))-(n(l[o])||0)-(n(l[a])||0)|0},pathToImage:function(t,e){e=e||this.dpr;var n=document.createElement("canvas"),r=n.getContext("2d"),o=t.getBoundingRect(),a=t.style,s=a.shadowBlur,l=a.shadowOffsetX,u=a.shadowOffsetY,h=a.hasStroke()?a.lineWidth:0,c=Math.max(h/2,-l+s),d=Math.max(h/2,l+s),f=Math.max(h/2,-u+s),p=Math.max(h/2,u+s),g=o.width+c+d,m=o.height+f+p;n.width=g*e,n.height=m*e,r.scale(e,e),r.clearRect(0,0,g,m),r.dpr=e;var v={position:t.position,rotation:t.rotation,scale:t.scale};t.position=[c-o.x,f-o.y],t.rotation=0,t.scale=[1,1],t.updateTransform(),t&&t.brush(r);var y=i(53),x=new y({style:{x:0,y:0,image:n}});return null!=v.position&&(x.position=t.position=v.position),null!=v.rotation&&(x.rotation=t.rotation=v.rotation),null!=v.scale&&(x.scale=t.scale=v.scale),x}},t.exports=b},function(t,e,i){"use strict";function n(t,e){return t.zlevel===e.zlevel?t.z===e.z?t.z2-e.z2:t.z-e.z:t.zlevel-e.zlevel}var r=i(1),o=i(9),a=i(36),s=i(51),l=function(){this._elements={},this._roots=[],this._displayList=[],this._displayListLen=0};l.prototype={constructor:l,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,r=0,a=e.length;r<a;r++)this._updateAndAddDisplayable(e[r],null,t);i.length=this._displayListLen,o.canvasSupported&&s(i,n)},_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 r=n,o=t;r;)r.parent=o,r.updateTransform(),e.push(r),o=r,r=r.clipPath}if(t.isGroup){for(var a=t._children,s=0;s<a.length;s++){var l=a[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){this._elements[t.id]||(t instanceof a&&t.addChildrenToStorage(this),this.addToMap(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 a&&i.delChildrenFromStorage(this)}return this._elements={},this._roots=[],this._displayList=[],void(this._displayListLen=0)}if(t instanceof Array)for(var e=0,n=t.length;e<n;e++)this.delRoot(t[e]);else{var o;o="string"==typeof t?this._elements[t]:t;var s=r.indexOf(this._roots,o);s>=0&&(this.delFromMap(o.id),this._roots.splice(s,1),o instanceof a&&o.delChildrenFromStorage(this))}},addToMap:function(t){return t instanceof a&&(t.__storage=this),t.dirty(!1),this._elements[t.id]=t,this},get:function(t){return this._elements[t]},delFromMap:function(t){var e=this._elements,i=e[t];return i&&(delete e[t],i instanceof a&&(i.__storage=null)),this},dispose:function(){this._elements=this._renderList=this._roots=null},displayableSortFunc:n},t.exports=l},function(t,e,i){"use strict";var n=i(1),r=i(20).Dispatcher,o=i(67),a=i(66),s=function(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,r.call(this)};s.prototype={constructor:s,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=n.indexOf(this._clips,t);e>=0&&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,r=[],o=[],a=0;a<n;a++){var s=i[a],l=s.step(t,e);l&&(r.push(l),o.push(s))}for(var a=0;a<n;)i[a]._needsRemove?(i[a]=i[n-1],i.pop(),n--):a++;n=r.length;for(var a=0;a<n;a++)o[a].fire(r[a]);this._time=t,this.onframe(e),this.trigger("frame",e),this.stage.update&&this.stage.update()},_startLoop:function(){function t(){e._running&&(o(t),!e._paused&&e._update())}var e=this;this._running=!0,o(t)},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=[]},animate:function(t,e){e=e||{};var i=new a(t,e.loop,e.getter,e.setter);return this.addAnimator(i),i}},n.mixin(s,r),t.exports=s},function(t,e,i){function n(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}var r=i(160);n.prototype={constructor:n,step:function(t,e){if(this._initialized||(this._startTime=t+this._delay,this._initialized=!0),this._paused)return void(this._pausedTime+=e);var i=(t-this._startTime-this._pausedTime)/this._life;if(!(i<0)){i=Math.min(i,1);var n=this.easing,o="string"==typeof n?r[n]:n,a="function"==typeof o?o(i):i;return this.fire("frame",a),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){t="on"+t,this[t]&&this[t](this._target,e)},pause:function(){this._paused=!0},resume:function(){this._paused=!1}},t.exports=n},function(t,e){var i={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*(-Math.pow(2,-10*(t-1))+2)},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,n=.4;return 0===t?0:1===t?1:(!i||i<1?(i=1,e=n/4):e=n*Math.asin(1/i)/(2*Math.PI),-(i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)))},elasticOut:function(t){var e,i=.1,n=.4;return 0===t?0:1===t?1:(!i||i<1?(i=1,e=n/4):e=n*Math.asin(1/i)/(2*Math.PI),i*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/n)+1)},elasticInOut:function(t){var e,i=.1,n=.4;return 0===t?0:1===t?1:(!i||i<1?(i=1,e=n/4):e=n*Math.asin(1/i)/(2*Math.PI),(t*=2)<1?-.5*(i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)):i*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*.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?.5*(t*t*((e+1)*t-e)):.5*((t-=2)*t*((e+1)*t+e)+2)},bounceIn:function(t){return 1-i.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*i.bounceIn(2*t):.5*i.bounceOut(2*t-1)+.5}};t.exports=i},function(t,e,i){var n=i(68).normalizeRadian,r=2*Math.PI;t.exports={containStroke:function(t,e,i,o,a,s,l,u,h){if(0===l)return!1;var c=l;u-=t,h-=e;var d=Math.sqrt(u*u+h*h);if(d-c>i||d+c<i)return!1;if(Math.abs(o-a)%r<1e-4)return!0;if(s){var f=o;o=n(a),a=n(f)}else o=n(o),a=n(a);o>a&&(a+=r);var p=Math.atan2(h,u);return p<0&&(p+=r),p>=o&&p<=a||p+r>=o&&p+r<=a}}},function(t,e,i){var n=i(21);t.exports={containStroke:function(t,e,i,r,o,a,s,l,u,h,c){if(0===u)return!1;var d=u;if(c>e+d&&c>r+d&&c>a+d&&c>l+d||c<e-d&&c<r-d&&c<a-d&&c<l-d||h>t+d&&h>i+d&&h>o+d&&h>s+d||h<t-d&&h<i-d&&h<o-d&&h<s-d)return!1;var f=n.cubicProjectPoint(t,e,i,r,o,a,s,l,h,c,null);return f<=d/2}}},function(t,e,i){"use strict";function n(t,e){return Math.abs(t-e)<x}function r(){var t=b[0];b[0]=b[1],b[1]=t}function o(t,e,i,n,o,a,s,l,u,h){if(h>e&&h>n&&h>a&&h>l||h<e&&h<n&&h<a&&h<l)return 0;var c=g.cubicRootAt(e,n,a,l,h,_);if(0===c)return 0;for(var d,f,p=0,m=-1,v=0;v<c;v++){var y=_[v],x=0===y||1===y?.5:1,w=g.cubicAt(t,i,o,s,y);w<u||(m<0&&(m=g.cubicExtrema(e,n,a,l,b),b[1]<b[0]&&m>1&&r(),d=g.cubicAt(e,n,a,l,b[0]),m>1&&(f=g.cubicAt(e,n,a,l,b[1]))),p+=2==m?y<b[0]?d<e?x:-x:y<b[1]?f<d?x:-x:l<f?x:-x:y<b[0]?d<e?x:-x:l<d?x:-x)}return p}function a(t,e,i,n,r,o,a,s){if(s>e&&s>n&&s>o||s<e&&s<n&&s<o)return 0;var l=g.quadraticRootAt(e,n,o,s,_);if(0===l)return 0;var u=g.quadraticExtremum(e,n,o);if(u>=0&&u<=1){for(var h=0,c=g.quadraticAt(e,n,o,u),d=0;d<l;d++){var f=0===_[d]||1===_[d]?.5:1,p=g.quadraticAt(t,i,r,_[d]);p<a||(h+=_[d]<u?c<e?f:-f:o<c?f:-f)}return h}var f=0===_[0]||1===_[0]?.5:1,p=g.quadraticAt(t,i,r,_[0]);return p<a?0:o<e?f:-f}function s(t,e,i,n,r,o,a,s){if(s-=e,s>i||s<-i)return 0;var l=Math.sqrt(i*i-s*s);_[0]=-l,_[1]=l;var u=Math.abs(n-r);if(u<1e-4)return 0;if(u%y<1e-4){n=0,r=y;var h=o?1:-1;return a>=_[0]+t&&a<=_[1]+t?h:0}if(o){var l=n;n=p(r),r=p(l)}else n=p(n),r=p(r);n>r&&(r+=y);for(var c=0,d=0;d<2;d++){var f=_[d];if(f+t>a){var g=Math.atan2(s,f),h=o?1:-1;g<0&&(g=y+g),(g>=n&&g<=r||g+y>=n&&g+y<=r)&&(g>Math.PI/2&&g<1.5*Math.PI&&(h=-h),c+=h)}}return c}function l(t,e,i,r,l){for(var h=0,p=0,g=0,y=0,x=0,_=0;_<t.length;){var b=t[_++];switch(b===u.M&&_>1&&(i||(h+=m(p,g,y,x,r,l))),1==_&&(p=t[_],g=t[_+1],y=p,x=g),b){case u.M:y=t[_++],x=t[_++],p=y,g=x;break;case u.L:if(i){if(v(p,g,t[_],t[_+1],e,r,l))return!0}else h+=m(p,g,t[_],t[_+1],r,l)||0;p=t[_++],g=t[_++];break;case u.C:if(i){if(c.containStroke(p,g,t[_++],t[_++],t[_++],t[_++],t[_],t[_+1],e,r,l))return!0}else h+=o(p,g,t[_++],t[_++],t[_++],t[_++],t[_],t[_+1],r,l)||0;p=t[_++],g=t[_++];break;case u.Q:if(i){if(d.containStroke(p,g,t[_++],t[_++],t[_],t[_+1],e,r,l))return!0}else h+=a(p,g,t[_++],t[_++],t[_],t[_+1],r,l)||0;p=t[_++],g=t[_++];break;case u.A:var w=t[_++],M=t[_++],S=t[_++],T=t[_++],A=t[_++],I=t[_++],C=(t[_++],1-t[_++]),P=Math.cos(A)*S+w,k=Math.sin(A)*T+M;_>1?h+=m(p,g,P,k,r,l):(y=P,x=k);var L=(r-w)*T/S+w;if(i){if(f.containStroke(w,M,T,A,A+I,C,e,L,l))return!0}else h+=s(w,M,T,A,A+I,C,L,l);p=Math.cos(A+I)*S+w,g=Math.sin(A+I)*T+M;break;case u.R:y=p=t[_++],x=g=t[_++];var D=t[_++],O=t[_++],P=y+D,k=x+O;if(i){if(v(y,x,P,x,e,r,l)||v(P,x,P,k,e,r,l)||v(P,k,y,k,e,r,l)||v(y,k,y,x,e,r,l))return!0}else h+=m(P,x,P,k,r,l),h+=m(y,k,y,x,r,l);break;case u.Z:if(i){if(v(p,g,y,x,e,r,l))return!0}else h+=m(p,g,y,x,r,l);p=y,g=x}}return i||n(g,x)||(h+=m(p,g,y,x,r,l)||0),0!==h}var u=i(30).CMD,h=i(98),c=i(162),d=i(99),f=i(161),p=i(68).normalizeRadian,g=i(21),m=i(100),v=h.containStroke,y=2*Math.PI,x=1e-4,_=[-1,-1,-1],b=[-1,-1];t.exports={contain:function(t,e,i){return l(t,0,!1,e,i)},containStroke:function(t,e,i,n){return l(t,e,!0,i,n)}}},function(t,e,i){"use strict";function n(t){var e=t[1][0]-t[0][0],i=t[1][1]-t[0][1];return Math.sqrt(e*e+i*i)}function r(t){return[(t[0][0]+t[1][0])/2,(t[0][1]+t[1][1])/2]}var o=i(20),a=function(){this._track=[]};a.prototype={constructor:a,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 r={points:[],touches:[],target:e,event:t},a=0,s=n.length;a<s;a++){var l=n[a],u=o.clientToLocal(i,l,{});r.points.push([u.zrX,u.zrY]),r.touches.push(l)}this._track.push(r)}},_recognize:function(t){for(var e in s)if(s.hasOwnProperty(e)){var i=s[e](this._track,t);if(i)return i}}};var s={pinch:function(t,e){var i=t.length;if(i){var o=(t[i-1]||{}).points,a=(t[i-2]||{}).points||o;if(a&&a.length>1&&o&&o.length>1){var s=n(o)/n(a);!isFinite(s)&&(s=1),e.pinchScale=s;var l=r(o);return e.pinchX=l[0],e.pinchY=l[1],{type:"pinch",target:t[0].target,event:e}}}}};t.exports=a},function(t,e,i){function n(t){return"mousewheel"===t&&d.browser.firefox?"DOMMouseScroll":t}function r(t,e,i){var n=t._gestureMgr;"start"===i&&n.clear();var r=n.recognize(e,t.handler.findHover(e.zrX,e.zrY,null),t.dom);if("end"===i&&n.clear(),r){var o=r.type;e.gestureEvent=o,t.handler.dispatchToElement(r.target,o,r.event)}}function o(t){t._touching=!0,clearTimeout(t._touchTimer),t._touchTimer=setTimeout(function(){t._touching=!1},700)}function a(t){var e=t.pointerType;return"pen"===e||"touch"===e}function s(t){function e(t,e){return function(){if(!e._touching)return t.apply(e,arguments)}}h.each(x,function(e){t._handlers[e]=h.bind(w[e],t)}),h.each(b,function(e){t._handlers[e]=h.bind(w[e],t)}),h.each(y,function(i){t._handlers[i]=e(w[i],t)})}function l(t){function e(e,i){h.each(e,function(e){p(t,n(e),i._handlers[e])},i)}c.call(this),this.dom=t,this._touching=!1,this._touchTimer,this._gestureMgr=new f,this._handlers={},s(this),d.pointerEventsSupported?e(b,this):(d.touchEventsSupported&&e(x,this),e(y,this))}var u=i(20),h=i(1),c=i(23),d=i(9),f=i(164),p=u.addEventListener,g=u.removeEventListener,m=u.normalizeEvent,v=300,y=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],x=["touchstart","touchend","touchmove"],_={pointerdown:1,pointerup:1,pointermove:1,pointerout:1},b=h.map(y,function(t){var e=t.replace("mouse","pointer");return _[e]?e:t}),w={mousemove:function(t){t=m(this.dom,t),this.trigger("mousemove",t)},mouseout:function(t){t=m(this.dom,t);var e=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=m(this.dom,t),t.zrByTouch=!0,this._lastTouchMoment=new Date,r(this,t,"start"),w.mousemove.call(this,t),w.mousedown.call(this,t),o(this)},touchmove:function(t){t=m(this.dom,t),t.zrByTouch=!0,r(this,t,"change"),w.mousemove.call(this,t),o(this)},touchend:function(t){t=m(this.dom,t),t.zrByTouch=!0,r(this,t,"end"),w.mouseup.call(this,t),+new Date-this._lastTouchMoment<v&&w.click.call(this,t),o(this)},pointerdown:function(t){w.mousedown.call(this,t)},pointermove:function(t){a(t)||w.mousemove.call(this,t)},pointerup:function(t){w.mouseup.call(this,t)},pointerout:function(t){a(t)||w.mouseout.call(this,t)}};h.each(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],function(t){w[t]=function(e){e=m(this.dom,e),this.trigger(t,e)}});var M=l.prototype;M.dispose=function(){for(var t=y.concat(x),e=0;e<t.length;e++){var i=t[e];g(this.dom,n(i),this._handlers[i])}},M.setCursor=function(t){this.dom.style.cursor=t||"default"},h.mixin(l,c),t.exports=l},function(t,e,i){var n=i(8);t.exports=n.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.setScale(e[0],e[1])},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(),n.prototype.getBoundingRect.call(this)}})},function(t,e,i){"use strict";var n=i(1),r=i(41),o=function(t,e,i,n,o){this.x=null==t?.5:t,this.y=null==e?.5:e,this.r=null==i?.5:i,this.type="radial",this.global=o||!1,r.call(this,n)};o.prototype={constructor:o},n.inherits(o,r),t.exports=o},function(t,e){t.exports={buildPath:function(t,e){var i,n,r,o,a=e.x,s=e.y,l=e.width,u=e.height,h=e.r;l<0&&(a+=l,l=-l),u<0&&(s+=u,u=-u),"number"==typeof h?i=n=r=o=h:h instanceof Array?1===h.length?i=n=r=o=h[0]:2===h.length?(i=r=h[0],n=o=h[1]):3===h.length?(i=h[0],n=o=h[1],r=h[2]):(i=h[0],n=h[1],r=h[2],o=h[3]):i=n=r=o=0;var c;i+n>l&&(c=i+n,i*=l/c,n*=l/c),r+o>l&&(c=r+o,r*=l/c,o*=l/c),n+r>u&&(c=n+r,n*=u/c,r*=u/c),i+o>u&&(c=i+o,i*=u/c,o*=u/c),t.moveTo(a+i,s),t.lineTo(a+l-n,s),0!==n&&t.quadraticCurveTo(a+l,s,a+l,s+n),t.lineTo(a+l,s+u-r),0!==r&&t.quadraticCurveTo(a+l,s+u,a+l-r,s+u),t.lineTo(a+o,s+u),0!==o&&t.quadraticCurveTo(a,s+u,a,s+u-o),t.lineTo(a,s+i),0!==i&&t.quadraticCurveTo(a,s,a+i,s)}}},function(t,e,i){var n=i(6),r=n.min,o=n.max,a=n.scale,s=n.distance,l=n.add;t.exports=function(t,e,i,u){var h,c,d,f,p=[],g=[],m=[],v=[];if(u){d=[1/0,1/0],f=[-(1/0),-(1/0)];for(var y=0,x=t.length;y<x;y++)r(d,d,t[y]),o(f,f,t[y]);r(d,d,u[0]),o(f,f,u[1])}for(var y=0,x=t.length;y<x;y++){var _=t[y];if(i)h=t[y?y-1:x-1],c=t[(y+1)%x];else{if(0===y||y===x-1){p.push(n.clone(t[y]));continue}h=t[y-1],c=t[y+1]}n.sub(g,c,h),a(g,g,e);var b=s(_,h),w=s(_,c),M=b+w;0!==M&&(b/=M,w/=M),a(m,g,-b),a(v,g,w);var S=l([],_,m),T=l([],_,v);u&&(o(S,S,d),r(S,S,f),o(T,T,d),r(T,T,f)),p.push(S),p.push(T)}return i&&p.push(p.shift()),p}},function(t,e,i){function n(t,e,i,n,r,o,a){var s=.5*(i-t),l=.5*(n-e);return(2*(e-i)+s+l)*a+(-3*(e-i)-2*s-l)*o+s*r+e}var r=i(6);t.exports=function(t,e){for(var i=t.length,o=[],a=0,s=1;s<i;s++)a+=r.distance(t[s-1],t[s]);var l=a/2;l=l<i?i:l;for(var s=0;s<l;s++){var u,h,c,d=s/(l-1)*(e?i:i-1),f=Math.floor(d),p=d-f,g=t[f%i];e?(u=t[(f-1+i)%i],h=t[(f+1)%i],c=t[(f+2)%i]):(u=t[0===f?f:f-1],h=t[f>i-2?i-1:f+1],c=t[f>i-3?i-1:f+2]);var m=p*p,v=p*m;o.push([n(u[0],g[0],h[0],c[0],p,m,v),n(u[1],g[1],h[1],c[1],p,m,v)])}return o}},function(t,e,i){t.exports=i(8).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,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+i,u*r+n),t.arc(i,n,r,o,a,!s)}})},function(t,e,i){"use strict";function n(t,e,i){var n=t.cpx2,r=t.cpy2;return null===n||null===r?[(i?c:u)(t.x1,t.cpx1,t.cpx2,t.x2,e),(i?c:u)(t.y1,t.cpy1,t.cpy2,t.y2,e)]:[(i?h:l)(t.x1,t.cpx1,t.x2,e),(i?h:l)(t.y1,t.cpy1,t.y2,e)]}var r=i(21),o=i(6),a=r.quadraticSubdivide,s=r.cubicSubdivide,l=r.quadraticAt,u=r.cubicAt,h=r.quadraticDerivativeAt,c=r.cubicDerivativeAt,d=[];t.exports=i(8).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,r=e.x2,o=e.y2,l=e.cpx1,u=e.cpy1,h=e.cpx2,c=e.cpy2,f=e.percent;0!==f&&(t.moveTo(i,n),null==h||null==c?(f<1&&(a(i,l,r,f,d),l=d[1],r=d[2],a(n,u,o,f,d),u=d[1],o=d[2]),t.quadraticCurveTo(l,u,r,o)):(f<1&&(s(i,l,h,r,f,d),l=d[1],h=d[2],r=d[3],s(n,u,c,o,f,d),u=d[1],c=d[2],o=d[3]),t.bezierCurveTo(l,u,h,c,r,o)))},pointAt:function(t){return n(this.shape,t,!1)},tangentAt:function(t){var e=n(this.shape,t,!0);return o.normalize(e,e)}})},function(t,e,i){"use strict";t.exports=i(8).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)}})},function(t,e,i){t.exports=i(8).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=e.x1,n=e.y1,r=e.x2,o=e.y2,a=e.percent;0!==a&&(t.moveTo(i,n),a<1&&(r=i*(1-a)+r*a,o=n*(1-a)+o*a),t.lineTo(r,o))},pointAt:function(t){var e=this.shape;return[e.x1*(1-t)+e.x2*t,e.y1*(1-t)+e.y2*t]}})},function(t,e,i){var n=i(73);t.exports=i(8).extend({type:"polygon",shape:{points:null,smooth:!1,smoothConstraint:null},buildPath:function(t,e){n.buildPath(t,e,!0)}})},function(t,e,i){var n=i(73);t.exports=i(8).extend({type:"polyline",shape:{points:null,smooth:!1,smoothConstraint:null},style:{stroke:"#000",fill:null},buildPath:function(t,e){n.buildPath(t,e,!1)}})},function(t,e,i){var n=i(168);t.exports=i(8).extend({type:"rect",shape:{r:0,x:0,y:0,width:0,height:0},buildPath:function(t,e){var i=e.x,r=e.y,o=e.width,a=e.height;e.r?n.buildPath(t,e):t.rect(i,r,o,a),t.closePath()}})},function(t,e,i){t.exports=i(8).extend({type:"ring",shape:{cx:0,cy:0,r:0,r0:0},buildPath:function(t,e){var i=e.cx,n=e.cy,r=2*Math.PI;t.moveTo(i+e.r,n),t.arc(i,n,e.r,0,r,!1),t.moveTo(i+e.r0,n),t.arc(i,n,e.r0,0,r,!0)}})},function(t,e,i){var n=i(9),r=i(8),o=[["shadowBlur",0],["shadowColor","#000"],["shadowOffsetX",0],["shadowOffsetY",0]];t.exports=r.extend({type:"sector",shape:{cx:0,cy:0,r0:0,r:0,startAngle:0,endAngle:2*Math.PI,clockwise:!0},brush:n.browser.ie&&n.browser.version>=11?function(){var t,e=this.__clipPaths,i=this.style;if(e)for(var n=0;n<e.length;n++){var a=e[n]&&e[n].shape;if(a&&a.startAngle===a.endAngle){for(var s=0;s<o.length;s++)o[s][2]=i[o[s][0]],i[o[s][0]]=o[s][1];t=!0;break}}if(r.prototype.brush.apply(this,arguments),t)for(var s=0;s<o.length;s++)i[o[s][0]]=o[s][2]}:r.prototype.brush,buildPath:function(t,e){var i=e.cx,n=e.cy,r=Math.max(e.r0||0,0),o=Math.max(e.r,0),a=e.startAngle,s=e.endAngle,l=e.clockwise,u=Math.cos(a),h=Math.sin(a);t.moveTo(u*r+i,h*r+n),t.lineTo(u*o+i,h*o+n),t.arc(i,n,o,a,s,!l),t.lineTo(Math.cos(s)*r+i,Math.sin(s)*r+n),0!==r&&t.arc(i,n,r,s,a,l),t.closePath()}})},function(t,e,i){"use strict";var n=i(66),r=i(1),o=r.isString,a=r.isFunction,s=r.isObject,l=i(52),u=function(){this.animators=[]};u.prototype={constructor:u,animate:function(t,e){var i,o=!1,a=this,s=this.__zr;if(t){var u=t.split("."),h=a;o="shape"===u[0];for(var c=0,d=u.length;c<d;c++)h&&(h=h[u[c]]);h&&(i=h)}else i=a;if(!i)return void l('Property "'+t+'" is not existed in element '+a.id);var f=a.animators,p=new n(i,e);return p.during(function(t){a.dirty(o)}).done(function(){f.splice(r.indexOf(f,p),1)}),f.push(p),s&&s.animation.addAnimator(p),p},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,r){function s(){u--,u||r&&r()}o(i)?(r=n,n=i,i=0):a(n)?(r=n,n="linear",i=0):a(i)?(r=i,i=0):a(e)?(r=e,e=500):e||(e=500),this.stopAnimation(),this._animateToShallow("",this,t,e,i,n,r);var l=this.animators.slice(),u=l.length;u||r&&r();for(var h=0;h<l.length;h++)l[h].done(s).start(n)},_animateToShallow:function(t,e,i,n,o){var a={},l=0;for(var u in i)if(i.hasOwnProperty(u))if(null!=e[u])s(i[u])&&!r.isArrayLike(i[u])?this._animateToShallow(t?t+"."+u:u,e[u],i[u],n,o):(a[u]=i[u],l++);else if(null!=i[u])if(t){var h={};h[t]={},h[t][u]=i[u],this.attr(h)}else this.attr(u,i[u]);return l>0&&this.animate(t,!1).when(null==n?500:n,a).delay(o||0),this}},t.exports=u},function(t,e){function i(){this.on("mousedown",this._dragStart,this),this.on("mousemove",this._drag,this),this.on("mouseup",this._dragEnd,this),this.on("globalout",this._dragEnd,this)}i.prototype={constructor:i,_dragStart:function(t){var e=t.target;e&&e.draggable&&(this._draggingTarget=e,e.dragging=!0,this._x=t.offsetX,this._y=t.offsetY,this.dispatchToElement(e,"dragstart",t.event))},_drag:function(t){var e=this._draggingTarget;if(e){var i=t.offsetX,n=t.offsetY,r=i-this._x,o=n-this._y;this._x=i,this._y=n,e.drift(r,o,t),this.dispatchToElement(e,"drag",t.event);var a=this.findHover(i,n,e),s=this._dropTarget;this._dropTarget=a,e!==a&&(s&&a!==s&&this.dispatchToElement(s,"dragleave",t.event),a&&a!==s&&this.dispatchToElement(a,"dragenter",t.event))}},_dragEnd:function(t){var e=this._draggingTarget;e&&(e.dragging=!1),this.dispatchToElement(e,"dragend",t.event),this._dropTarget&&this.dispatchToElement(this._dropTarget,"drop",t.event),this._draggingTarget=null,this._dropTarget=null}},t.exports=i},function(t,e,i){function n(t,e,i,n,r,o,a,s,l,u,h){var g=l*(p/180),y=f(g)*(t-i)/2+d(g)*(e-n)/2,x=-1*d(g)*(t-i)/2+f(g)*(e-n)/2,_=y*y/(a*a)+x*x/(s*s);_>1&&(a*=c(_),s*=c(_));var b=(r===o?-1:1)*c((a*a*(s*s)-a*a*(x*x)-s*s*(y*y))/(a*a*(x*x)+s*s*(y*y)))||0,w=b*a*x/s,M=b*-s*y/a,S=(t+i)/2+f(g)*w-d(g)*M,T=(e+n)/2+d(g)*w+f(g)*M,A=v([1,0],[(y-w)/a,(x-M)/s]),I=[(y-w)/a,(x-M)/s],C=[(-1*y-w)/a,(-1*x-M)/s],P=v(I,C);m(I,C)<=-1&&(P=p),m(I,C)>=1&&(P=0),0===o&&P>0&&(P-=2*p),1===o&&P<0&&(P+=2*p),h.addData(u,S,T,a,s,A,P,g,o)}function r(t){if(!t)return[];var e,i=t.replace(/-/g," -").replace(/  /g," ").replace(/ /g,",").replace(/,,/g,",");for(e=0;e<h.length;e++)i=i.replace(new RegExp(h[e],"g"),"|"+h[e]);var r,o=i.split("|"),a=0,l=0,u=new s,c=s.CMD;for(e=1;e<o.length;e++){var d,f=o[e],p=f.charAt(0),g=0,m=f.slice(1).replace(/e,-/g,"e-").split(",");m.length>0&&""===m[0]&&m.shift();for(var v=0;v<m.length;v++)m[v]=parseFloat(m[v]);for(;g<m.length&&!isNaN(m[g])&&!isNaN(m[0]);){var y,x,_,b,w,M,S,T=a,A=l;switch(p){case"l":a+=m[g++],l+=m[g++],d=c.L,u.addData(d,a,l);break;case"L":a=m[g++],l=m[g++],d=c.L,u.addData(d,a,l);break;case"m":a+=m[g++],l+=m[g++],d=c.M,u.addData(d,a,l),p="l";break;case"M":a=m[g++],l=m[g++],d=c.M,u.addData(d,a,l),p="L";break;case"h":a+=m[g++],d=c.L,u.addData(d,a,l);break;case"H":a=m[g++],d=c.L,u.addData(d,a,l);break;case"v":l+=m[g++],d=c.L,u.addData(d,a,l);break;case"V":l=m[g++],d=c.L,u.addData(d,a,l);break;case"C":d=c.C,u.addData(d,m[g++],m[g++],m[g++],m[g++],m[g++],m[g++]),a=m[g-2],l=m[g-1];break;case"c":d=c.C,u.addData(d,m[g++]+a,m[g++]+l,m[g++]+a,m[g++]+l,m[g++]+a,m[g++]+l),a+=m[g-2],l+=m[g-1];break;case"S":y=a,x=l;var I=u.len(),C=u.data;r===c.C&&(y+=a-C[I-4],x+=l-C[I-3]),d=c.C,T=m[g++],A=m[g++],a=m[g++],l=m[g++],u.addData(d,y,x,T,A,a,l);break;case"s":y=a,x=l;var I=u.len(),C=u.data;r===c.C&&(y+=a-C[I-4],x+=l-C[I-3]),d=c.C,T=a+m[g++],A=l+m[g++],a+=m[g++],l+=m[g++],u.addData(d,y,x,T,A,a,l);break;case"Q":T=m[g++],A=m[g++],a=m[g++],l=m[g++],d=c.Q,u.addData(d,T,A,a,l);break;case"q":T=m[g++]+a,A=m[g++]+l,a+=m[g++],l+=m[g++],d=c.Q,u.addData(d,T,A,a,l);break;case"T":y=a,x=l;var I=u.len(),C=u.data;r===c.Q&&(y+=a-C[I-4],x+=l-C[I-3]),a=m[g++],l=m[g++],d=c.Q,u.addData(d,y,x,a,l);break;case"t":y=a,x=l;var I=u.len(),C=u.data;r===c.Q&&(y+=a-C[I-4],x+=l-C[I-3]),a+=m[g++],l+=m[g++],d=c.Q,u.addData(d,y,x,a,l);break;case"A":_=m[g++],b=m[g++],w=m[g++],M=m[g++],S=m[g++],T=a,A=l,a=m[g++],l=m[g++],d=c.A,n(T,A,a,l,M,S,_,b,w,d,u);break;case"a":_=m[g++],b=m[g++],w=m[g++],M=m[g++],S=m[g++],T=a,A=l,a+=m[g++],l+=m[g++],d=c.A,n(T,A,a,l,M,S,_,b,w,d,u)}}"z"!==p&&"Z"!==p||(d=c.Z,u.addData(d)),r=d}return u.toStatic(),u}function o(t,e){var i,n=r(t);return e=e||{},e.buildPath=function(t){t.setData(n.data),i&&l(t,i);var e=t.getContext();e&&t.rebuildPath(e)},e.applyTransform=function(t){i||(i=u.create()),u.mul(i,t,i),this.dirty(!0)},e}var a=i(8),s=i(30),l=i(183),u=i(19),h=["m","M","l","L","v","V","h","H","z","Z","c","C","q","Q","t","T","s","S","a","A"],c=Math.sqrt,d=Math.sin,f=Math.cos,p=Math.PI,g=function(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])},m=function(t,e){return(t[0]*e[0]+t[1]*e[1])/(g(t)*g(e))},v=function(t,e){return(t[0]*e[1]<t[1]*e[0]?-1:1)*Math.acos(m(t,e))};t.exports={createFromString:function(t,e){return new a(o(t,e))},extendFromString:function(t,e){return a.extend(o(t,e))},mergePath:function(t,e){for(var i=[],n=t.length,r=0;r<n;r++){var o=t[r];o.__dirty&&o.buildPath(o.path,o.shape,!0),i.push(o.path)}var s=new a(e);return s.buildPath=function(t){t.appendPath(i);var e=t.getContext();e&&t.rebuildPath(e)},s}}},function(t,e,i){function n(t,e){var i,n,o,h,c,d,f=t.data,p=r.M,g=r.C,m=r.L,v=r.R,y=r.A,x=r.Q;for(o=0,h=0;o<f.length;){switch(i=f[o++],h=o,n=0,i){case p:n=1;break;case m:n=1;break;case g:n=3;break;case x:n=2;break;case y:var _=e[4],b=e[5],w=l(e[0]*e[0]+e[1]*e[1]),M=l(e[2]*e[2]+e[3]*e[3]),S=u(-e[1]/M,e[0]/w);f[o++]+=_,f[o++]+=b,f[o++]*=w,f[o++]*=M,f[o++]+=S,f[o++]+=S,o+=2,h=o;break;case v:d[0]=f[o++],d[1]=f[o++],a(d,d,e),f[h++]=d[0],f[h++]=d[1],d[0]+=f[o++],d[1]+=f[o++],a(d,d,e),f[h++]=d[0],f[h++]=d[1]}for(c=0;c<n;c++){var d=s[c];d[0]=f[o++],d[1]=f[o++],a(d,d,e),f[h++]=d[0],f[h++]=d[1]}}}var r=i(30).CMD,o=i(6),a=o.applyTransform,s=[[],[],[]],l=Math.sqrt,u=Math.atan2;t.exports=n},function(t,e,i){if(!i(9).canvasSupported){var n,r="urn:schemas-microsoft-com:vml",o=window,a=o.document,s=!1;try{!a.namespaces.zrvml&&a.namespaces.add("zrvml",r),n=function(t){return a.createElement("<zrvml:"+t+' class="zrvml">')}}catch(l){n=function(t){return a.createElement("<"+t+' xmlns="'+r+'" class="zrvml">')}}var u=function(){if(!s){s=!0;var t=a.styleSheets;t.length<31?a.createStyleSheet().addRule(".zrvml","behavior:url(#default#VML)"):t[0].addRule(".zrvml","behavior:url(#default#VML)")}};t.exports={doc:a,initVML:u,createNode:n}}},,function(t,e,i){function n(t,e,i){var n=this._targetInfoList=[],r={},a=o(e,t);f(x,function(t,e){(!i||!i.include||p(i.include,e)>=0)&&t(a,n,r)})}function r(t){return t[0]>t[1]&&t.reverse(),t}function o(t,e){return d.parseFinder(t,e,{includeMainTypes:v})}function a(t,e,i,n){var o=i.getAxis(["x","y"][t]),a=r(h.map([0,1],function(t){return e?o.coordToData(o.toLocalCoord(n[t])):o.toGlobalCoord(o.dataToCoord(n[t]))})),s=[];return s[t]=a,s[1-t]=[NaN,NaN],{values:a,xyMinMax:s}}function s(t,e,i,n){return[e[0]-n[t]*i[0],e[1]-n[t]*i[1]]}function l(t,e){var i=u(t),n=u(e),r=[i[0]/n[0],i[1]/n[1]];return isNaN(r[0])&&(r[0]=1),isNaN(r[1])&&(r[1]=1),r}function u(t){return t?[t[0][1]-t[0][0],t[1][1]-t[1][0]]:[NaN,NaN]}var h=i(1),c=i(3),d=i(5),f=h.each,p=h.indexOf,g=h.curry,m=["dataToPoint","pointToData"],v=["grid","xAxis","yAxis","geo","graph","polar","radiusAxis","angleAxis","bmap"],y=n.prototype;y.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=w[t.brushType](0,i,e);t.__rangeOffset={offset:M[t.brushType](n.values,t.range,[1,1]),xyMinMax:n.xyMinMax}}})},y.matchOutputRanges=function(t,e,i){f(t,function(t){var n=this.findTargetInfo(t,e);n&&n!==!0&&h.each(n.coordSyses,function(n){var r=w[t.brushType](1,n,t.range);i(t,r.values,n,e)})},this)},y.setInputRanges=function(t,e){f(t,function(t){var i=this.findTargetInfo(t,e);if(t.range=t.range||[],i&&i!==!0){t.panelId=i.panelId;var n=w[t.brushType](0,i.coordSys,t.coordRange),r=t.__rangeOffset;t.range=r?M[t.brushType](n.values,r.offset,l(n.xyMinMax,r.xyMinMax)):n.values}},this)},y.makePanelOpts=function(t){return h.map(this._targetInfoList,function(e){return{panelId:e.panelId,rect:e.getPanelRect(),defaultBrushType:t&&t(e)}})},y.controlSeries=function(t,e,i){var n=this.findTargetInfo(t,i);return n===!0||n&&p(n.coordSyses,e.coordinateSystem)>=0},y.findTargetInfo=function(t,e){for(var i=this._targetInfoList,n=o(e,t),r=0;r<i.length;r++){var a=i[r],s=t.panelId;if(s){if(a.panelId===s)return a}else for(var r=0;r<_.length;r++)if(_[r](n,a))return a}return!0};var x={grid:function(t,e){var i=t.xAxisModels,n=t.yAxisModels,r=t.gridModels,o={},a={},s={};(i||n||r)&&(f(i,function(t){var e=t.axis.grid.model;o[e.id]=e,a[e.id]=!0}),f(n,function(t){var e=t.axis.grid.model;o[e.id]=e,s[e.id]=!0}),f(r,function(t){o[t.id]=t,a[t.id]=!0,s[t.id]=!0}),f(o,function(t){var r=t.coordinateSystem,o=[];f(r.getCartesians(),function(t,e){(p(i,t.getAxis("x").model)>=0||p(n,t.getAxis("y").model)>=0)&&o.push(t)}),e.push({panelId:"grid--"+t.id,gridModel:t,coordSys:o[0],coordSyses:o,getPanelRect:b.grid,xAxisDeclared:a[t.id],yAxisDeclared:s[t.id]})}))},geo:function(t,e){f(t.geoModels,function(t){var i=t.coordinateSystem;e.push({panelId:"geo--"+t.id,geoModel:t,coordSys:i,coordSyses:[i],getPanelRect:b.geo})})}},_=[function(t,e){var i=t.xAxisModel,n=t.yAxisModel,r=t.gridModel;return!r&&i&&(r=i.axis.grid.model),!r&&n&&(r=n.axis.grid.model),r&&r===e.gridModel},function(t,e){var i=t.geoModel;return i&&i===e.geoModel}],b={grid:function(){return this.coordSys.grid.getRect().clone()},geo:function(){var t=this.coordSys,e=t.getBoundingRect().clone();return e.applyTransform(c.getTransform(t)),e}},w={lineX:g(a,0),lineY:g(a,1),rect:function(t,e,i){var n=e[m[t]]([i[0][0],i[1][0]]),o=e[m[t]]([i[0][1],i[1][1]]),a=[r([n[0],o[0]]),r([n[1],o[1]])];return{values:a,xyMinMax:a}},
+polygon:function(t,e,i){var n=[[1/0,-(1/0)],[1/0,-(1/0)]],r=h.map(i,function(i){var r=e[m[t]](i);return n[0][0]=Math.min(n[0][0],r[0]),n[1][0]=Math.min(n[1][0],r[1]),n[0][1]=Math.max(n[0][1],r[0]),n[1][1]=Math.max(n[1][1],r[1]),r});return{values:r,xyMinMax:n}}},M={lineX:g(s,0),lineY:g(s,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,e,i){return h.map(t,function(t,n){return[t[0]-i[0]*e[n][0],t[1]-i[1]*e[n][1]]})}};t.exports=n},,,function(t,e){function i(){throw new Error("setTimeout has not been defined")}function n(){throw new Error("clearTimeout has not been defined")}function r(t){if(h===setTimeout)return setTimeout(t,0);if((h===i||!h)&&setTimeout)return h=setTimeout,setTimeout(t,0);try{return h(t,0)}catch(e){try{return h.call(null,t,0)}catch(e){return h.call(this,t,0)}}}function o(t){if(c===clearTimeout)return clearTimeout(t);if((c===n||!c)&&clearTimeout)return c=clearTimeout,clearTimeout(t);try{return c(t)}catch(e){try{return c.call(null,t)}catch(e){return c.call(this,t)}}}function a(){g&&f&&(g=!1,f.length?p=f.concat(p):m=-1,p.length&&s())}function s(){if(!g){var t=r(a);g=!0;for(var e=p.length;e;){for(f=p,p=[];++m<e;)f&&f[m].run();m=-1,e=p.length}f=null,g=!1,o(t)}}function l(t,e){this.fun=t,this.array=e}function u(){}var h,c,d=t.exports={};!function(){try{h="function"==typeof setTimeout?setTimeout:i}catch(t){h=i}try{c="function"==typeof clearTimeout?clearTimeout:n}catch(t){c=n}}();var f,p=[],g=!1,m=-1;d.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var i=1;i<arguments.length;i++)e[i-1]=arguments[i];p.push(new l(t,e)),1!==p.length||g||r(s)},l.prototype.run=function(){this.fun.apply(null,this.array)},d.title="browser",d.browser=!0,d.env={},d.argv=[],d.version="",d.versions={},d.on=u,d.addListener=u,d.once=u,d.off=u,d.removeListener=u,d.removeAllListeners=u,d.emit=u,d.binding=function(t){throw new Error("process.binding is not supported")},d.cwd=function(){return"/"},d.chdir=function(t){throw new Error("process.chdir is not supported")},d.umask=function(){return 0}},function(t,e,i){function n(){this.group=new r.Group,this._symbolEl=new a({})}var r=i(3),o=i(24),a=r.extendShape({shape:{points:null,sizes:null},symbolProxy:null,buildPath:function(t,e){for(var i=e.points,n=e.sizes,r=this.symbolProxy,o=r.shape,a=0;a<i.length;a++){var s=i[a],l=n[a];l[0]<4?t.rect(s[0]-l[0]/2,s[1]-l[1]/2,l[0],l[1]):(o.x=s[0]-l[0]/2,o.y=s[1]-l[1]/2,o.width=l[0],o.height=l[1],r.buildPath(t,o,!0))}},findDataIndex:function(t,e){for(var i=this.shape,n=i.points,r=i.sizes,o=n.length-1;o>=0;o--){var a=n[o],s=r[o],l=a[0]-s[0]/2,u=a[1]-s[1]/2;if(t>=l&&e>=u&&t<=l+s[0]&&e<=u+s[1])return o}return-1}}),s=n.prototype;s.updateData=function(t){this.group.removeAll();var e=this._symbolEl,i=t.hostModel;e.setShape({points:t.mapArray(t.getItemLayout),sizes:t.mapArray(function(e){var i=t.getItemVisual(e,"symbolSize");return i instanceof Array||(i=[i,i]),i})}),e.symbolProxy=o.createSymbol(t.getVisual("symbol"),0,0,0,0),e.setColor=e.symbolProxy.setColor,e.useStyle(i.getModel("itemStyle.normal").getItemStyle(["color"]));var n=t.getVisual("color");n&&e.setColor(n),e.seriesIndex=i.seriesIndex,e.on("mousemove",function(t){e.dataIndex=null;var i=e.findDataIndex(t.offsetX,t.offsetY);i>0&&(e.dataIndex=i)}),this.group.add(e)},s.updateLayout=function(t){var e=t.getData();this._symbolEl.setShape({points:e.mapArray(e.getItemLayout)})},s.remove=function(){this.group.removeAll()},t.exports=n},function(t,e,i){function n(t){return isNaN(+t.cpx1)||isNaN(+t.cpy1)}var r=i(3),o=i(6),a=r.Line.prototype,s=r.BezierCurve.prototype;t.exports=r.extendShape({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){(n(e)?a:s).buildPath(t,e)},pointAt:function(t){return n(this.shape)?a.pointAt.call(this,t):s.pointAt.call(this,t)},tangentAt:function(t){var e=this.shape,i=n(e)?[e.x2-e.x1,e.y2-e.y1]:s.tangentAt.call(this,t);return o.normalize(i,i)}})},function(t,e,i){var n=i(1),r=i(2);i(193),i(194),r.registerVisual(n.curry(i(50),"scatter","circle",null)),r.registerLayout(n.curry(i(61),"scatter")),i(38)},function(t,e,i){"use strict";var n=i(27),r=i(18);t.exports=r.extend({type:"series.scatter",dependencies:["grid","polar","geo","singleAxis"],getInitialData:function(t,e){var i=n(t.data,this,e);return i},brushSelector:"point",defaultOption:{coordinateSystem:"cartesian2d",zlevel:0,z:2,legendHoverLink:!0,hoverAnimation:!0,symbolSize:10,large:!1,largeThreshold:2e3,itemStyle:{normal:{opacity:.8}}}})},function(t,e,i){var n=i(44),r=i(190);i(2).extendChartView({type:"scatter",init:function(){this._normalSymbolDraw=new n,this._largeSymbolDraw=new r},render:function(t,e,i){var n=t.getData(),r=this._largeSymbolDraw,o=this._normalSymbolDraw,a=this.group,s=t.get("large")&&n.count()>t.get("largeThreshold")?r:o;this._symbolDraw=s,s.updateData(n),a.add(s.group),a.remove(s===r?o.group:r.group)},updateLayout:function(t){this._symbolDraw.updateLayout(t)},remove:function(t,e){this._symbolDraw&&this._symbolDraw.remove(e,!0)},dispose:function(){}})},function(t,e,i){i(128),i(46),i(47),i(201),i(202),i(197),i(198),i(126),i(125)},function(t,e,i){function n(t,e,i){var n=[1/0,-(1/0)];return u(i,function(t){var i=t.getData();i&&u(t.coordDimToDataDim(e),function(t){var e=i.getDataExtent(t);e[0]<n[0]&&(n[0]=e[0]),e[1]>n[1]&&(n[1]=e[1])})}),n[1]<n[0]&&(n=[NaN,NaN]),r(t,n),n}function r(t,e){var i=t.getAxisModel(),n=i.getMin(!0),r="category"===i.get("type"),o=r&&(i.get("data")||[]).length;null!=n&&"dataMin"!==n?e[0]=n:r&&(e[0]=o>0?0:NaN);var a=i.getMax(!0);return null!=a&&"dataMax"!==a?e[1]=a:r&&(e[1]=o>0?o-1:NaN),i.get("scale",!0)||(e[0]>0&&(e[0]=0),e[1]<0&&(e[1]=0)),e}function o(t,e){var i=t.getAxisModel(),n=t._percentWindow,r=t._valueWindow;if(n){var o=s.getPixelPrecision(r,[0,500]),a=e||0===n[0]&&100===n[1];i.setRange(a?null:+r[0].toFixed(o),a?null:+r[1].toFixed(o))}}var a=i(1),s=i(4),l=i(77),u=a.each,h=s.asc,c=function(t,e,i,n){this._dimName=t,this._axisIndex=e,this._valueWindow,this._percentWindow,this._dataExtent,this.ecModel=n,this._dataZoomModel=i};c.prototype={constructor:c,hostedBy:function(t){return this._dataZoomModel===t},getDataValueWindow:function(){return this._valueWindow.slice()},getDataPercentWindow:function(){return this._percentWindow.slice()},getTargetSeriesModels:function(){var t=[],e=this.ecModel;return e.eachSeries(function(i){if(l.isCoordSupported(i.get("coordinateSystem"))){var n=this._dimName,r=e.queryComponents({mainType:n+"Axis",index:i.get(n+"AxisIndex"),id:i.get(n+"AxisId")})[0];this._axisIndex===(r&&r.componentIndex)&&t.push(i)}},this),t},getAxisModel:function(){return this.ecModel.getComponent(this._dimName+"Axis",this._axisIndex)},getOtherAxisModel:function(){var t,e,i=this._dimName,n=this.ecModel,r=this.getAxisModel(),o="x"===i||"y"===i;o?(e="gridIndex",t="x"===i?"y":"x"):(e="polarIndex",t="angle"===i?"radius":"angle");var a;return n.eachComponent(t+"Axis",function(t){(t.get(e)||0)===(r.get(e)||0)&&(a=t)}),a},calculateDataWindow:function(t){var e=this._dataExtent,i=this.getAxisModel(),n=i.axis.scale,r=this._dataZoomModel.getRangePropMode(),o=[0,100],a=[t.start,t.end],l=[];return u(["startValue","endValue"],function(e){l.push(null!=t[e]?n.parse(t[e]):null)}),u([0,1],function(t){var i=l[t],u=a[t];"percent"===r[t]?(null==u&&(u=o[t]),i=n.parse(s.linearMap(u,o,e,!0))):u=s.linearMap(i,e,o,!0),l[t]=i,a[t]=u}),{valueWindow:h(l),percentWindow:h(a)}},reset:function(t){if(t===this._dataZoomModel){this._dataExtent=n(this,this._dimName,this.getTargetSeriesModels());var e=this.calculateDataWindow(t.option);this._valueWindow=e.valueWindow,this._percentWindow=e.percentWindow,o(this)}},restore:function(t){t===this._dataZoomModel&&(this._valueWindow=this._percentWindow=null,o(this,!0))},filterData:function(t){function e(t){return t>=o[0]&&t<=o[1]}if(t===this._dataZoomModel){var i=this._dimName,n=this.getTargetSeriesModels(),r=t.get("filterMode"),o=this._valueWindow,a=this.getOtherAxisModel();t.get("$fromToolbox")&&a&&"category"===a.get("type")&&(r="empty"),u(n,function(t){var n=t.getData();n&&u(t.coordDimToDataDim(i),function(i){"empty"===r?t.setData(n.map(i,function(t){return e(t)?t:NaN})):n.filterSelf(i,e)})})}}},t.exports=c},function(t,e,i){t.exports=i(46).extend({type:"dataZoom.inside",defaultOption:{disabled:!1,zoomLock:!1}})},function(t,e,i){function n(t){var e=[0,100];return!(t[0]<=e[1])&&(t[0]=e[1]),!(t[1]<=e[1])&&(t[1]=e[1]),!(t[0]>=e[0])&&(t[0]=e[0]),!(t[1]>=e[0])&&(t[1]=e[0]),t}var r=i(47),o=i(1),a=i(95),s=i(203),l=o.bind,u=r.extend({type:"dataZoom.inside",init:function(t,e){this._range},render:function(t,e,i,n){u.superApply(this,"render",arguments),s.shouldRecordRange(n,t.id)&&(this._range=t.getPercentRange()),o.each(this.getTargetCoordInfo(),function(e,n){var r=o.map(e,function(t){return s.generateCoordId(t.model)});o.each(e,function(e){var o=e.model;s.register(i,{coordId:s.generateCoordId(o),allCoordIds:r,containsPoint:function(t,e){return o.coordinateSystem.containPoint([t,e])},dataZoomId:t.id,throttleRate:t.get("throttle",!0),panGetRange:l(this._onPan,this,e,n),zoomGetRange:l(this._onZoom,this,e,n)})},this)},this)},dispose:function(){s.unregister(this.api,this.dataZoomModel.id),u.superApply(this,"dispose",arguments),this._range=null},_onPan:function(t,e,i,n,r,o,s,l,u){if(this.dataZoomModel.option.disabled)return this._range;var c=this._range.slice(),d=t.axisModels[0];if(d){var f=h[e]([o,s],[l,u],d,i,t),p=f.signal*(c[1]-c[0])*f.pixel/f.pixelLength;return a(p,c,[0,100],"rigid"),this._range=c}},_onZoom:function(t,e,i,r,o,a){var s=this.dataZoomModel.option;if(s.disabled||s.zoomLock)return this._range;var l=this._range.slice(),u=t.axisModels[0];if(u){var c=h[e](null,[o,a],u,i,t),d=(c.pixel-c.pixelStart)/c.pixelLength*(l[1]-l[0])+l[0];return r=Math.max(1/r,0),l[0]=(l[0]-d)*r+d,l[1]=(l[1]-d)*r+d,this._range=n(l)}}}),h={grid:function(t,e,i,n,r){var o=i.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,i,n,r){var o=i.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"===i.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,i,n,r){var o=i.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}};t.exports=u},function(t,e,i){var n=i(46);t.exports=n.extend({type:"dataZoom.select"})},function(t,e,i){t.exports=i(47).extend({type:"dataZoom.select"})},function(t,e,i){var n=i(46),r=n.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"}}});t.exports=r},function(t,e,i){function n(t){var e={x:"y",y:"x",radius:"angle",angle:"radius"};return e[t]}var r=i(1),o=i(3),a=i(39),s=i(47),l=o.Rect,u=i(4),h=u.linearMap,c=i(12),d=i(95),f=i(20),p=u.asc,g=r.bind,m=r.each,v=7,y=1,x=30,_="horizontal",b="vertical",w=5,M=["line","bar","candlestick","scatter"],S=s.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){return S.superApply(this,"render",arguments),a.createOrUpdate(this,"_dispatchZoomAction",this.dataZoomModel.get("throttle"),"fixRate"),this._orient=t.get("orient"),this.dataZoomModel.get("show")===!1?void this.group.removeAll():(n&&"dataZoom"===n.type&&n.from===this.uid||this._buildView(),void this._updateView())},remove:function(){S.superApply(this,"remove",arguments),a.clear(this,"_dispatchZoomAction")},dispose:function(){S.superApply(this,"dispose",arguments),a.clear(this,"_dispatchZoomAction")},_buildView:function(){var t=this.group;t.removeAll(),this._resetLocation(),this._resetInterval();var e=this._displayables.barGroup=new o.Group;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()},o=this._orient===_?{right:n.width-i.x-i.width,top:n.height-x-v,width:i.width,height:x}:{right:v,top:i.y,width:x,height:i.height},a=c.getLayoutParams(t.option);r.each(["right","top","width","height"],function(t){"ph"===a[t]&&(a[t]=o[t])});var s=c.getLayoutRect(a,n,t.padding);this._location={x:s.x,y:s.y},this._size=[s.width,s.height],this._orient===b&&this._size.reverse()},_positionGroup:function(){var t=this.group,e=this._location,i=this._orient,n=this.dataZoomModel.getFirstTargetAxisModel(),r=n&&n.get("inverse"),o=this._displayables.barGroup,a=(this._dataShadowInfo||{}).otherAxisInverse;o.attr(i!==_||r?i===_&&r?{scale:a?[-1,1]:[-1,-1]}:i!==b||r?{scale:a?[-1,-1]:[-1,1],rotation:Math.PI/2}:{scale:a?[1,-1]:[1,1],rotation:Math.PI/2}:{scale:a?[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;this._displayables.barGroup.add(new l({silent:!0,shape:{x:0,y:0,width:e[0],height:e[1]},style:{fill:t.get("backgroundColor")},z2:-40}))},_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 s=n.getDataExtent(a),l=.3*(s[1]-s[0]);s=[s[0]-l,s[1]+l];var u,c=[0,e[1]],d=[0,e[0]],f=[[e[0],0],[0,0]],p=[],g=d[1]/(n.count()-1),m=0,v=Math.round(n.count()/e[0]);n.each([a],function(t,e){if(v>0&&e%v)return void(m+=g);var i=null==t||isNaN(t)||""===t,n=i?0:h(t,s,c,!0);i&&!u&&e?(f.push([f[f.length-1][0],0]),p.push([p[p.length-1][0],0])):!i&&u&&(f.push([m,0]),p.push([m,0])),f.push([m,n]),p.push([m,n]),m+=g,u=i});var y=this.dataZoomModel;this._displayables.barGroup.add(new o.Polygon({shape:{points:f},style:r.defaults({fill:y.get("dataBackgroundColor")},y.getModel("dataBackground.areaStyle").getAreaStyle()),silent:!0,z2:-20})),this._displayables.barGroup.add(new o.Polyline({shape:{points:p},style:y.getModel("dataBackground.lineStyle").getLineStyle(),silent:!0,z2:-19}))}}},_prepareDataShadowInfo:function(){var t=this.dataZoomModel,e=t.get("showDataShadow");if(e!==!1){var i,o=this.ecModel;return t.eachTargetAxis(function(a,s){var l=t.getAxisProxy(a.name,s).getTargetSeriesModels();r.each(l,function(t){if(!(i||e!==!0&&r.indexOf(M,t.get("type"))<0)){var l,u=o.getComponent(a.axis,s).axis,h=n(a.name),c=t.coordinateSystem;null!=h&&c.getOtherAxis&&(l=c.getOtherAxis(u).inverse),i={thisAxis:u,series:t,thisDim:a.name,otherDim:h,otherAxisInverse:l}}},this)},this),i}},_renderHandle:function(){var t=this._displayables,e=t.handles=[],i=t.handleLabels=[],n=this._displayables.barGroup,r=this._size,a=this.dataZoomModel;n.add(t.filler=new l({draggable:!0,cursor:"move",drift:g(this._onDragMove,this,"all"),onmousemove:function(t){f.stop(t.event)},ondragstart:g(this._showDataInfo,this,!0),ondragend:g(this._onDragEnd,this),onmouseover:g(this._showDataInfo,this,!0),onmouseout:g(this._showDataInfo,this,!1),style:{fill:a.get("fillerColor"),textPosition:"inside"}})),n.add(new l(o.subPixelOptimizeRect({silent:!0,shape:{x:0,y:0,width:r[0],height:r[1]},style:{stroke:a.get("dataBackgroundColor")||a.get("borderColor"),lineWidth:y,fill:"rgba(0,0,0,0)"}})));var s=a.get("handleIcon");m([0,1],function(t){var r=o.makePath(s,{style:{strokeNoScale:!0},rectHover:!0,cursor:"vertical"===this._orient?"ns-resize":"ew-resize",draggable:!0,drift:g(this._onDragMove,this,t),onmousemove:function(t){f.stop(t.event)},ondragend:g(this._onDragEnd,this),onmouseover:g(this._showDataInfo,this,!0),onmouseout:g(this._showDataInfo,this,!1)},{x:-.5,y:0,width:1,height:1},"center"),l=r.getBoundingRect();this._handleHeight=u.parsePercent(a.get("handleSize"),this._size[1]),this._handleWidth=l.width/l.height*this._handleHeight,r.setStyle(a.getModel("handleStyle").getItemStyle());var h=a.get("handleColor");null!=h&&(r.style.fill=h),n.add(e[t]=r);var c=a.textStyleModel;this.group.add(i[t]=new o.Text({silent:!0,invisible:!0,style:{x:0,y:0,text:"",textVerticalAlign:"middle",textAlign:"center",fill:c.getTextColor(),textFont:c.getFont()},z2:10}))},this)},_resetInterval:function(){var t=this._range=this.dataZoomModel.getPercentRange(),e=this._getViewExtent();this._handleEnds=[h(t[0],[0,100],e,!0),h(t[1],[0,100],e,!0)]},_updateInterval:function(t,e){var i=this._handleEnds,n=this._getViewExtent();d(e,i,n,"all"===t||this.dataZoomModel.get("zoomLock")?"rigid":"cross",t),this._range=p([h(i[0],n,[0,100],!0),h(i[1],n,[0,100],!0)])},_updateView:function(t){var e=this._displayables,i=this._handleEnds,n=p(i.slice()),r=this._size;m([0,1],function(t){var n=e.handles[t],o=this._handleHeight;n.attr({scale:[o,o],position:[i[t],r[1]/2-o/2]})},this),e.filler.setShape({x:n[0],y:0,width:n[1]-n[0],height:r[1]}),this._updateDataInfo(t)},_updateDataInfo:function(t){function e(t){var e=o.getTransform(n.handles[t].parent,this.group),i=o.transformDirection(0===t?"right":"left",e),l=this._handleWidth/2+w,u=o.applyTransform([d[t]+(0===t?-l:l),this._size[1]/2],e);r[t].setStyle({x:u[0],y:u[1],textVerticalAlign:a===_?"middle":i,textAlign:a===_?i:"center",text:s[t]})}var i=this.dataZoomModel,n=this._displayables,r=n.handleLabels,a=this._orient,s=["",""];if(i.get("showDetail")){var l=i.findRepresentativeAxisProxy();if(l){var u=l.getAxisModel().axis,h=this._range,c=t?l.calculateDataWindow({start:h[0],end:h[1]}).valueWindow:l.getDataValueWindow();s=[this._formatLabel(c[0],u),this._formatLabel(c[1],u)]}}var d=p(this._handleEnds.slice());e.call(this,0),e.call(this,1)},_formatLabel:function(t,e){var i=this.dataZoomModel,n=i.get("labelFormatter"),o=i.get("labelPrecision");null!=o&&"auto"!==o||(o=e.getPixelPrecision());var a=null==t||isNaN(t)?"":"category"===e.type||"time"===e.type?e.scale.getLabel(Math.round(t)):t.toFixed(Math.min(o,20));return r.isFunction(n)?n(t,a):r.isString(n)?n.replace("{value}",a):a},_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=this._applyBarTransform([e,i],!0);this._updateInterval(t,n[0]);var r=this.dataZoomModel.get("realtime");this._updateView(!r),r&&r&&this._dispatchZoomAction()},_onDragEnd:function(){this._dragging=!1,this._showDataInfo(!1),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]})},_applyBarTransform:function(t,e){var i=this._displayables.barGroup.getLocalTransform();return o.applyTransform(t,i,e)},_findCoordRect:function(){var t;if(m(this.getTargetCoordInfo(),function(e){if(!t&&e.length){var i=e[0].model.coordinateSystem;t=i.getRect&&i.getRect()}}),!t){var e=this.api.getWidth(),i=this.api.getHeight();t={x:.2*e,y:.2*i,width:.6*e,height:.6*i}}return t}});t.exports=S},function(t,e,i){function n(t){var e=t.getZr();return e[p]||(e[p]={})}function r(t,e,i){var n=new c(t.getZr());return n.enable(),n.on("pan",f(a,i)),n.on("zoom",f(s,i)),n}function o(t){h.each(t,function(e,i){e.count||(e.controller.dispose(),delete t[i])})}function a(t,e,i,n,r,o,a){l(t,function(s){return s.panGetRange(t.controller,e,i,n,r,o,a)})}function s(t,e,i,n){l(t,function(r){return r.zoomGetRange(t.controller,e,i,n)})}function l(t,e){var i=[];h.each(t.dataZoomInfos,function(t){var n=e(t);n&&i.push({dataZoomId:t.dataZoomId,start:n[0],end:n[1]})}),t.dispatchAction(i)}function u(t,e){t.dispatchAction({type:"dataZoom",batch:e})}var h=i(1),c=i(94),d=i(39),f=h.curry,p="\0_ec_dataZoom_roams",g={register:function(t,e){var i=n(t),a=e.dataZoomId,s=e.coordId;h.each(i,function(t,i){var n=t.dataZoomInfos;n[a]&&h.indexOf(e.allCoordIds,s)<0&&(delete n[a],t.count--)}),o(i);var l=i[s];l||(l=i[s]={coordId:s,dataZoomInfos:{},count:0},l.controller=r(t,e,l),l.dispatchAction=h.curry(u,t)),l.controller.setContainsPoint(e.containsPoint),d.createOrUpdate(l,"dispatchAction",e.throttleRate,"fixRate"),!l.dataZoomInfos[a]&&l.count++,l.dataZoomInfos[a]=e},unregister:function(t,e){var i=n(t);h.each(i,function(t){t.controller.dispose();var i=t.dataZoomInfos;i[e]&&(delete i[e],t.count--)}),o(i)},shouldRecordRange:function(t,e){if(t&&"dataZoom"===t.type&&t.batch)for(var i=0,n=t.batch.length;i<n;i++)if(t.batch[i].dataZoomId===e)return!1;return!0},generateCoordId:function(t){return t.type+"\0_"+t.id}};t.exports=g},function(t,e,i){i(128),i(46),i(47),i(199),i(200),i(126),i(125)},function(t,e,i){function n(t,e,i,n){var r=i.type,o=f[r.charAt(0).toUpperCase()+r.slice(1)],a=new o(i);e.add(a),n[t]=a,a.__ecGraphicId=t}function r(t,e){var i=t&&t.parent;i&&("group"===t.type&&t.traverse(function(t){r(t,e)}),delete e[t.__ecGraphicId],i.remove(t))}function o(t){return t=c.extend({},t),c.each(["id","parentId","$action","hv","bounding"].concat(p.LOCATION_PARAMS),function(e){delete t[e]}),t}function a(t,e){var i;return c.each(e,function(e){null!=t[e]&&"auto"!==t[e]&&(i=!0)}),i}function s(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}function l(t,e,i){var n=c.extend({},i),r=t[e],o=i.$action||"merge";if("merge"===o)if(r){c.merge(r,n,!0),p.mergeLayoutParam(r,n,{ignoreSize:!0}),p.copyLayoutParams(i,r)}else t[e]=n;else"replace"===o?t[e]=n:"remove"===o&&r&&(t[e]=null)}function u(t,e){t&&(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)))}var h=i(2),c=i(1),d=i(5),f=i(3),p=i(12);h.registerPreprocessor(function(t){var e=t.graphic;c.isArray(e)?e[0]&&e[0].elements?t.graphic=[t.graphic[0]]:t.graphic=[{elements:e}]:e&&!e.elements&&(t.graphic=[{elements:[e]}])});var g=h.extendComponentModel({type:"graphic",defaultOption:{elements:[],parentId:null},_elOptionsToUpdate:null,mergeOption:function(t){var e=this.option.elements;this.option.elements=null,g.superApply(this,"mergeOption",arguments),this.option.elements=e},optionUpdated:function(t,e){var i=this.option,n=(e?i:t).elements,r=i.elements=e?[]:i.elements,o=[];this._flatten(n,o);var a=d.mappingToExists(r,o);d.makeIdAndName(a);var h=this._elOptionsToUpdate=[];c.each(a,function(t,e){var i=t.option;i&&(h.push(i),s(t,i),l(r,e,i),u(r[e],i))},this);for(var f=r.length-1;f>=0;f--)null==r[f]?r.splice(f,1):delete r[f].$action},_flatten:function(t,e,i){c.each(t,function(t){if(t){i&&(t.parentOption=i),e.push(t);var n=t.children;"group"===t.type&&n&&this._flatten(n,e,t),delete t.children}},this)},useElOptionsToUpdate:function(){var t=this._elOptionsToUpdate;return this._elOptionsToUpdate=null,t}});h.extendComponentView({type:"graphic",init:function(t,e){this._elMap={},this._lastGraphicModel},render:function(t,e,i){t!==this._lastGraphicModel&&this._clear(),this._lastGraphicModel=t,this._updateElements(t,i),this._relocate(t,i)},_updateElements:function(t,e){var i=t.useElOptionsToUpdate();if(i){var a=this._elMap,s=this.group;c.each(i,function(t){var e=t.$action,i=t.id,l=a[i],u=t.parentId,h=null!=u?a[u]:s;t.hv&&t.hv[1]&&"text"===t.type&&(t.style=c.defaults({textBaseline:"middle"},t.style),t.style.textVerticalAlign=null);var d=o(t);e&&"merge"!==e?"replace"===e?(r(l,a),n(i,h,d,a)):"remove"===e&&r(l,a):l?l.attr(d):n(i,h,d,a),a[i]&&(a[i].__ecGraphicWidth=t.width,a[i].__ecGraphicHeight=t.height)})}},_relocate:function(t,e){for(var i=t.option.elements,n=this.group,r=this._elMap,o=i.length-1;o>=0;o--){var a=i[o],s=r[a.id];if(s){var l=s.parent,u=l===n?{width:e.getWidth(),height:e.getHeight()}:{width:l.__ecGraphicWidth||0,height:l.__ecGraphicHeight||0};p.positionElement(s,a,u,null,{hv:a.hv,boundingMode:a.bounding})}}},_clear:function(){var t=this._elMap;c.each(t,function(e){r(e,t)}),this._elMap={}},dispose:function(){this._clear()}})},function(t,e,i){i(207),i(209),i(208);var n=i(2);n.registerProcessor(i(210))},function(t,e,i){"use strict";var n=i(1),r=i(10),o=i(2).extendComponentModel({type:"legend",dependencies:["series"],layoutMode:{type:"box",ignoreSize:!0},init:function(t,e,i){this.mergeDefaultAndTheme(t,i),t.selected=t.selected||{}},mergeOption:function(t){o.superCall(this,"mergeOption",t)},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(t){var e=n.map(this.get("data")||[],function(t){return"string"!=typeof t&&"number"!=typeof t||(t={name:t}),new r(t,this,this.ecModel)},this);this._data=e;var i=n.map(t.getSeries(),function(t){return t.name});t.eachSeries(function(t){if(t.legendDataProvider){var e=t.legendDataProvider();i=i.concat(e.mapArray(e.getName))}}),this._availableNames=i},getData:function(){return this._data},select:function(t){var e=this.option.selected,i=this.get("selectedMode");if("single"===i){var r=this._data;n.each(r,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)},isSelected:function(t){var e=this.option.selected;return!(e.hasOwnProperty(t)&&!e[t])&&n.indexOf(this._availableNames,t)>=0},defaultOption:{zlevel:0,z:4,show:!0,orient:"horizontal",left:"center",top:"top",align:"auto",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,padding:5,itemGap:10,itemWidth:25,itemHeight:14,inactiveColor:"#ccc",textStyle:{color:"#333"},selectedMode:!0,tooltip:{show:!1}}});t.exports=o},function(t,e,i){function n(t,e){e.dispatchAction({type:"legendToggleSelect",name:t})}function r(t,e,i){var n=i.getZr().storage.getDisplayList()[0];n&&n.useHoverLayer||t.get("legendHoverLink")&&i.dispatchAction({type:"highlight",seriesName:t.name,name:e})}function o(t,e,i){var n=i.getZr().storage.getDisplayList()[0];n&&n.useHoverLayer||t.get("legendHoverLink")&&i.dispatchAction({type:"downplay",seriesName:t.name,name:e})}var a=i(1),s=i(24),l=i(3),u=i(131),h=a.curry;t.exports=i(2).extendComponentView({type:"legend",init:function(){this._symbolTypeStore={}},render:function(t,e,i){var s=this.group;if(s.removeAll(),t.get("show")){var c=t.get("selectedMode"),d=t.get("align");"auto"===d&&(d="right"===t.get("left")&&"vertical"===t.get("orient")?"right":"left");var f={};a.each(t.getData(),function(a){var u=a.get("name");if(""===u||"\n"===u)return void s.add(new l.Group({newline:!0}));var p=e.getSeriesByName(u)[0];if(!f[u])if(p){var g=p.getData(),m=g.getVisual("color");"function"==typeof m&&(m=m(p.getDataParams(0)));var v=g.getVisual("legendSymbol")||"roundRect",y=g.getVisual("symbol"),x=this._createItem(u,a,t,v,y,d,m,c);x.on("click",h(n,u,i)).on("mouseover",h(r,p,null,i)).on("mouseout",h(o,p,null,i)),f[u]=!0}else e.eachRawSeries(function(e){if(!f[u]&&e.legendDataProvider){var s=e.legendDataProvider(),l=s.indexOfName(u);if(l<0)return;var p=s.getItemVisual(l,"color"),g="roundRect",m=this._createItem(u,a,t,g,null,d,p,c);m.on("click",h(n,u,i)).on("mouseover",h(r,e,u,i)).on("mouseout",h(o,e,u,i)),f[u]=!0}},this)},this),u.layout(s,t,i),u.addBackground(s,t)}},_createItem:function(t,e,i,n,r,o,u,h){var c=i.get("itemWidth"),d=i.get("itemHeight"),f=i.get("inactiveColor"),p=i.isSelected(t),g=new l.Group,m=e.getModel("textStyle"),v=e.get("icon"),y=e.getModel("tooltip"),x=y.parentModel;if(n=v||n,g.add(s.createSymbol(n,0,0,c,d,p?u:f)),!v&&r&&(r!==n||"none"==r)){var _=.8*d;"none"===r&&(r="circle"),g.add(s.createSymbol(r,(c-_)/2,(d-_)/2,_,_,p?u:f))}var b="left"===o?c+5:-5,w=o,M=i.get("formatter"),S=t;"string"==typeof M&&M?S=M.replace("{name}",null!=t?t:""):"function"==typeof M&&(S=M(t));var T=new l.Text({style:{text:S,x:b,y:d/2,fill:p?m.getTextColor():f,textFont:m.getFont(),textAlign:w,textVerticalAlign:"middle"}});g.add(T);var A=new l.Rect({shape:g.getBoundingRect(),invisible:!0,tooltip:y.get("show")?a.extend({content:t,formatter:x.get("formatter",!0)||function(){return t},formatterParams:{componentType:"legend",legendIndex:i.componentIndex,name:t,$vars:["name"]}},y.option):null});return g.add(A),g.eachChild(function(t){t.silent=!0}),A.silent=!h,this.group.add(g),l.setHoverStyle(g),g}})},function(t,e,i){function n(t,e,i){var n,r={},a="toggleSelected"===t;return i.eachComponent("legend",function(i){a&&null!=n?i[n?"select":"unSelect"](e.name):(i[t](e.name),n=i.isSelected(e.name));var s=i.getData();o.each(s,function(t){var e=t.get("name");if("\n"!==e&&""!==e){var n=i.isSelected(e);e in r?r[e]=r[e]&&n:r[e]=n}})}),{name:e.name,selected:r}}var r=i(2),o=i(1);r.registerAction("legendToggleSelect","legendselectchanged",o.curry(n,"toggleSelected")),r.registerAction("legendSelect","legendselected",o.curry(n,"select")),r.registerAction("legendUnSelect","legendunselected",o.curry(n,"unSelect"))},function(t,e){t.exports=function(t){var e=t.findComponents({mainType:"legend"});e&&e.length&&t.filterSeries(function(t){for(var i=0;i<e.length;i++)if(!e[i].isSelected(t.name))return!1;return!0})}},function(t,e,i){i(214),i(215),i(2).registerPreprocessor(function(t){t.markArea=t.markArea||{}})},function(t,e,i){i(216),i(217),i(2).registerPreprocessor(function(t){t.markLine=t.markLine||{}})},function(t,e,i){i(218),i(219),i(2).registerPreprocessor(function(t){t.markPoint=t.markPoint||{}})},function(t,e,i){t.exports=i(79).extend({type:"markArea",defaultOption:{zlevel:0,z:1,tooltip:{trigger:"item"},animation:!1,label:{normal:{show:!0,position:"top"},emphasis:{show:!0,position:"top"}},itemStyle:{normal:{borderWidth:0}}}})},function(t,e,i){function n(t){return!isNaN(t)&&!isFinite(t)}function r(t,e,i,r){var o=1-t;return n(e[o])&&n(i[o])}function o(t,e){var i=e.coord[0],n=e.coord[1];return!("cartesian2d"!==t.type||!i||!n||!r(1,i,n,t)&&!r(0,i,n,t))||(f.dataFilter(t,{coord:i,x:e.x0,y:e.y0})||f.dataFilter(t,{coord:n,x:e.x1,y:e.y1}))}function a(t,e,i,r,o){var a,s=r.coordinateSystem,l=t.getItemModel(e),u=h.parsePercent(l.get(i[0]),o.getWidth()),c=h.parsePercent(l.get(i[1]),o.getHeight());if(isNaN(u)||isNaN(c)){if(r.getMarkerPosition)a=r.getMarkerPosition(t.getValues(i,e));else{var d=t.get(i[0],e),f=t.get(i[1],e);a=s.dataToPoint([d,f],!0)}if("cartesian2d"===s.type){var p=s.getAxis("x"),g=s.getAxis("y"),d=t.get(i[0],e),f=t.get(i[1],e);n(d)?a[0]=p.toGlobalCoord(p.getExtent()["x0"===i[0]?0:1]):n(f)&&(a[1]=g.toGlobalCoord(g.getExtent()["y0"===i[1]?0:1]))}isNaN(u)||(a[0]=u),isNaN(c)||(a[1]=c)}else a=[u,c];return a}function s(t,e,i){var n,r,a=["x0","y0","x1","y1"];t?(n=l.map(t&&t.dimensions,function(t){var i=e.getData().getDimensionInfo(e.coordDimToDataDim(t)[0])||{};return i.name=t,i}),r=new u(l.map(a,function(t,e){return{name:t,type:n[e%2].type}}),i)):(n=[{name:"value",type:"float"}],r=new u(n,i));var s=l.map(i.get("data"),l.curry(p,e,t,i));t&&(s=l.filter(s,l.curry(o,t)));var h=t?function(t,e,i,n){return t.coord[Math.floor(n/2)][n%2];
+}:function(t){return t.value};return r.initData(s,null,h),r.hasItemOption=!0,r}var l=i(1),u=i(14),h=i(4),c=i(3),d=i(22),f=i(81),p=function(t,e,i,n){var r=f.dataTransform(t,n[0]),o=f.dataTransform(t,n[1]),a=l.retrieve,s=r.coord,u=o.coord;s[0]=a(s[0],-(1/0)),s[1]=a(s[1],-(1/0)),u[0]=a(u[0],1/0),u[1]=a(u[1],1/0);var h=l.mergeAll([{},r,o]);return h.coord=[r.coord,o.coord],h.x0=r.x,h.y0=r.y,h.x1=o.x,h.y1=o.y,h},g=[["x0","y0"],["x1","y0"],["x1","y1"],["x0","y1"]];i(80).extend({type:"markArea",updateLayout:function(t,e,i){e.eachSeries(function(t){var e=t.markAreaModel;if(e){var n=e.getData();n.each(function(e){var r=l.map(g,function(r){return a(n,e,r,t,i)});n.setItemLayout(e,r);var o=n.getItemGraphicEl(e);o.setShape("points",r)})}},this)},renderSeries:function(t,e,i,n){var r=t.coordinateSystem,o=t.name,u=t.getData(),h=this.markerGroupMap,f=h[o];f||(f=h[o]={group:new c.Group}),this.group.add(f.group),f.__keep=!0;var p=s(r,t,e);e.setData(p),p.each(function(e){p.setItemLayout(e,l.map(g,function(i){return a(p,e,i,t,n)})),p.setItemVisual(e,{color:u.getVisual("color")})}),p.diff(f.__data).add(function(t){var e=new c.Polygon({shape:{points:p.getItemLayout(t)}});p.setItemGraphicEl(t,e),f.group.add(e)}).update(function(t,i){var n=f.__data.getItemGraphicEl(i);c.updateProps(n,{shape:{points:p.getItemLayout(t)}},e,t),f.group.add(n),p.setItemGraphicEl(t,n)}).remove(function(t){var e=f.__data.getItemGraphicEl(t);f.group.remove(e)}).execute(),p.eachItemGraphicEl(function(t,i){var n=p.getItemModel(i),r=n.getModel("label.normal"),o=n.getModel("label.emphasis"),a=p.getItemVisual(i,"color");t.useStyle(l.defaults(n.getModel("itemStyle.normal").getItemStyle(),{fill:d.modifyAlpha(a,.4),stroke:a})),t.hoverStyle=n.getModel("itemStyle.normal").getItemStyle();var s=p.getName(i)||"",u=a||t.style.fill;r.getShallow("show")?(c.setText(t.style,r,u),t.style.text=l.retrieve(e.getFormattedLabel(i,"normal"),s)):t.style.text="",o.getShallow("show")?(c.setText(t.hoverStyle,o,u),t.hoverStyle.text=l.retrieve(e.getFormattedLabel(i,"emphasis"),s)):t.hoverStyle.text="",c.setHoverStyle(t,{}),t.dataModel=e}),f.__data=p,f.group.silent=e.get("silent")||t.get("silent")}})},function(t,e,i){t.exports=i(79).extend({type:"markLine",defaultOption:{zlevel:0,z:5,symbol:["circle","arrow"],symbolSize:[8,16],precision:2,tooltip:{trigger:"item"},label:{normal:{show:!0,position:"end"},emphasis:{show:!0}},lineStyle:{normal:{type:"dashed"},emphasis:{width:3}},animationEasing:"linear"}})},function(t,e,i){function n(t){return!isNaN(t)&&!isFinite(t)}function r(t,e,i,r){var o=1-t,a=r.dimensions[t];return n(e[o])&&n(i[o])&&e[t]===i[t]&&r.getAxis(a).containData(e[t])}function o(t,e){if("cartesian2d"===t.type){var i=e[0].coord,n=e[1].coord;if(i&&n&&(r(1,i,n,t)||r(0,i,n,t)))return!0}return c.dataFilter(t,e[0])&&c.dataFilter(t,e[1])}function a(t,e,i,r,o){var a,s=r.coordinateSystem,l=t.getItemModel(e),u=h.parsePercent(l.get("x"),o.getWidth()),c=h.parsePercent(l.get("y"),o.getHeight());if(isNaN(u)||isNaN(c)){if(r.getMarkerPosition)a=r.getMarkerPosition(t.getValues(t.dimensions,e));else{var d=s.dimensions,f=t.get(d[0],e),p=t.get(d[1],e);a=s.dataToPoint([f,p])}if("cartesian2d"===s.type){var g=s.getAxis("x"),m=s.getAxis("y"),d=s.dimensions;n(t.get(d[0],e))?a[0]=g.toGlobalCoord(g.getExtent()[i?0:1]):n(t.get(d[1],e))&&(a[1]=m.toGlobalCoord(m.getExtent()[i?0:1]))}isNaN(u)||(a[0]=u),isNaN(c)||(a[1]=c)}else a=[u,c];t.setItemLayout(e,a)}function s(t,e,i){var n;n=t?l.map(t&&t.dimensions,function(t){var i=e.getData().getDimensionInfo(e.coordDimToDataDim(t)[0])||{};return i.name=t,i}):[{name:"value",type:"float"}];var r=new u(n,i),a=new u(n,i),s=new u([],i),h=l.map(i.get("data"),l.curry(f,e,t,i));t&&(h=l.filter(h,l.curry(o,t)));var d=t?c.dimValueGetter:function(t){return t.value};return r.initData(l.map(h,function(t){return t[0]}),null,d),a.initData(l.map(h,function(t){return t[1]}),null,d),s.initData(l.map(h,function(t){return t[2]})),s.hasItemOption=!0,{from:r,to:a,line:s}}var l=i(1),u=i(14),h=i(4),c=i(81),d=i(109),f=function(t,e,i,n){var r=t.getData(),o=n.type;if(!l.isArray(n)&&("min"===o||"max"===o||"average"===o||null!=n.xAxis||null!=n.yAxis)){var a,s,u;if(null!=n.yAxis||null!=n.xAxis)s=null!=n.yAxis?"y":"x",a=e.getAxis(s),u=l.retrieve(n.yAxis,n.xAxis);else{var h=c.getAxisInfo(n,r,e,t);s=h.valueDataDim,a=h.valueAxis,u=c.numCalculate(r,s,o)}var d="x"===s?0:1,f=1-d,p=l.clone(n),g={};p.type=null,p.coord=[],g.coord=[],p.coord[f]=-(1/0),g.coord[f]=1/0;var m=i.get("precision");m>=0&&"number"==typeof u&&(u=+u.toFixed(m)),p.coord[d]=g.coord[d]=u,n=[p,g,{type:o,valueIndex:n.valueIndex,value:u}]}return n=[c.dataTransform(t,n[0]),c.dataTransform(t,n[1]),l.extend({},n[2])],n[2].type=n[2].type||"",l.merge(n[2],n[0]),l.merge(n[2],n[1]),n};i(80).extend({type:"markLine",updateLayout:function(t,e,i){e.eachSeries(function(t){var e=t.markLineModel;if(e){var n=e.getData(),r=e.__from,o=e.__to;r.each(function(e){a(r,e,!0,t,i),a(o,e,!1,t,i)}),n.each(function(t){n.setItemLayout(t,[r.getItemLayout(t),o.getItemLayout(t)])}),this.markerGroupMap[t.name].updateLayout()}},this)},renderSeries:function(t,e,i,n){function r(e,i,r){var o=e.getItemModel(i);a(e,i,r,t,n),e.setItemVisual(i,{symbolSize:o.get("symbolSize")||x[r?0:1],symbol:o.get("symbol",!0)||y[r?0:1],color:o.get("itemStyle.normal.color")||h.getVisual("color")})}var o=t.coordinateSystem,u=t.name,h=t.getData(),c=this.markerGroupMap,f=c[u];f||(f=c[u]=new d),this.group.add(f.group);var p=s(o,t,e),g=p.from,m=p.to,v=p.line;e.__from=g,e.__to=m,e.setData(v);var y=e.get("symbol"),x=e.get("symbolSize");l.isArray(y)||(y=[y,y]),"number"==typeof x&&(x=[x,x]),p.from.each(function(t){r(g,t,!0),r(m,t,!1)}),v.each(function(t){var e=v.getItemModel(t).get("lineStyle.normal.color");v.setItemVisual(t,{color:e||g.getItemVisual(t,"color")}),v.setItemLayout(t,[g.getItemLayout(t),m.getItemLayout(t)]),v.setItemVisual(t,{fromSymbolSize:g.getItemVisual(t,"symbolSize"),fromSymbol:g.getItemVisual(t,"symbol"),toSymbolSize:m.getItemVisual(t,"symbolSize"),toSymbol:m.getItemVisual(t,"symbol")})}),f.updateData(v),p.line.eachItemGraphicEl(function(t,i){t.traverse(function(t){t.dataModel=e})}),f.__keep=!0,f.group.silent=e.get("silent")||t.get("silent")}})},function(t,e,i){t.exports=i(79).extend({type:"markPoint",defaultOption:{zlevel:0,z:5,symbol:"pin",symbolSize:50,tooltip:{trigger:"item"},label:{normal:{show:!0,position:"inside"},emphasis:{show:!0}},itemStyle:{normal:{borderWidth:2}}}})},function(t,e,i){function n(t,e,i){var n=e.coordinateSystem;t.each(function(r){var o,a=t.getItemModel(r),l=s.parsePercent(a.get("x"),i.getWidth()),u=s.parsePercent(a.get("y"),i.getHeight());if(isNaN(l)||isNaN(u)){if(e.getMarkerPosition)o=e.getMarkerPosition(t.getValues(t.dimensions,r));else if(n){var h=t.get(n.dimensions[0],r),c=t.get(n.dimensions[1],r);o=n.dataToPoint([h,c])}}else o=[l,u];isNaN(l)||(o[0]=l),isNaN(u)||(o[1]=u),t.setItemLayout(r,o)})}function r(t,e,i){var n;n=t?a.map(t&&t.dimensions,function(t){var i=e.getData().getDimensionInfo(e.coordDimToDataDim(t)[0])||{};return i.name=t,i}):[{name:"value",type:"float"}];var r=new l(n,i),o=a.map(i.get("data"),a.curry(u.dataTransform,e));return t&&(o=a.filter(o,a.curry(u.dataFilter,t))),r.initData(o,null,t?u.dimValueGetter:function(t){return t.value}),r}var o=i(44),a=i(1),s=i(4),l=i(14),u=i(81);i(80).extend({type:"markPoint",updateLayout:function(t,e,i){e.eachSeries(function(t){var e=t.markPointModel;e&&(n(e.getData(),t,i),this.markerGroupMap[t.name].updateLayout(e))},this)},renderSeries:function(t,e,i,a){var s=t.coordinateSystem,l=t.name,u=t.getData(),h=this.markerGroupMap,c=h[l];c||(c=h[l]=new o);var d=r(s,t,e);e.setData(d),n(e.getData(),t,a),d.each(function(t){var i=d.getItemModel(t),n=i.getShallow("symbolSize");"function"==typeof n&&(n=n(e.getRawValue(t),e.getDataParams(t))),d.setItemVisual(t,{symbolSize:n,color:i.get("itemStyle.normal.color")||u.getVisual("color"),symbol:i.getShallow("symbol")})}),c.updateData(d),this.group.add(c.group),d.eachItemGraphicEl(function(t){t.traverse(function(t){t.dataModel=e})}),c.__keep=!0,c.group.silent=e.get("silent")||t.get("silent")}})},function(t,e,i){"use strict";var n=i(2),r=i(3),o=i(12);n.extendComponentModel({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"}}}),n.extendComponentView({type:"title",render:function(t,e,i){if(this.group.removeAll(),t.get("show")){var n=this.group,a=t.getModel("textStyle"),s=t.getModel("subtextStyle"),l=t.get("textAlign"),u=t.get("textBaseline"),h=new r.Text({style:{text:t.get("text"),textFont:a.getFont(),fill:a.getTextColor()},z2:10}),c=h.getBoundingRect(),d=t.get("subtext"),f=new r.Text({style:{text:d,textFont:s.getFont(),fill:s.getTextColor(),y:c.height+t.get("itemGap"),textBaseline:"top"},z2:10}),p=t.get("link"),g=t.get("sublink");h.silent=!p,f.silent=!g,p&&h.on("click",function(){window.open(p,"_"+t.get("target"))}),g&&f.on("click",function(){window.open(g,"_"+t.get("subtarget"))}),n.add(h),d&&n.add(f);var m=n.getBoundingRect(),v=t.getBoxLayoutParams();v.width=m.width,v.height=m.height;var y=o.getLayoutRect(v,{width:i.getWidth(),height:i.getHeight()},t.get("padding"));l||(l=t.get("left")||t.get("right"),"middle"===l&&(l="center"),"right"===l?y.x+=y.width:"center"===l&&(y.x+=y.width/2)),u||(u=t.get("top")||t.get("bottom"),"center"===u&&(u="middle"),"bottom"===u?y.y+=y.height:"middle"===u&&(y.y+=y.height/2),u=u||"top"),n.attr("position",[y.x,y.y]);var x={textAlign:l,textVerticalAlign:u};h.setStyle(x),f.setStyle(x),m=n.getBoundingRect();var _=y.margin,b=t.getItemStyle(["color","opacity"]);b.fill=t.get("backgroundColor");var w=new r.Rect({shape:{x:m.x-_[3],y:m.y-_[0],width:m.width+_[1]+_[3],height:m.height+_[0]+_[2]},style:b,silent:!0});r.subPixelOptimizeRect(w),n.add(w)}}})},function(t,e,i){i(222),i(223),i(228),i(226),i(224),i(225),i(227)},function(t,e,i){var n=i(28),r=i(1),o=i(2).extendComponentModel({type:"toolbox",layoutMode:{type:"box",ignoreSize:!0},mergeDefaultAndTheme:function(t){o.superApply(this,"mergeDefaultAndTheme",arguments),r.each(this.option.feature,function(t,e){var i=n.get(e);i&&r.merge(t,i.defaultOption)})},defaultOption:{show:!0,z:6,zlevel:0,orient:"horizontal",left:"right",top:"top",backgroundColor:"transparent",borderColor:"#ccc",borderWidth:0,padding:5,itemSize:15,itemGap:8,showTitle:!0,iconStyle:{normal:{borderColor:"#666",color:"none"},emphasis:{borderColor:"#3E98C5"}}}});t.exports=o},function(t,e,i){(function(e){function n(t){return 0===t.indexOf("my")}var r=i(28),o=i(1),a=i(3),s=i(10),l=i(48),u=i(131),h=i(16);t.exports=i(2).extendComponentView({type:"toolbox",render:function(t,e,i,c){function d(o,a){var l,u=y[o],h=y[a],d=m[u],p=new s(d,t,t.ecModel);if(u&&!h){if(n(u))l={model:p,onclick:p.option.onclick,featureName:u};else{var g=r.get(u);if(!g)return;l=new g(p,e,i)}v[u]=l}else{if(l=v[h],!l)return;l.model=p,l.ecModel=e,l.api=i}return!u&&h?void(l.dispose&&l.dispose(e,i)):!p.get("show")||l.unusable?void(l.remove&&l.remove(e,i)):(f(p,l,u),p.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)},void(l.render&&l.render(p,e,i,c)))}function f(n,r,s){var l=n.getModel("iconStyle"),u=r.getIcons?r.getIcons():n.get("icon"),h=n.get("title")||{};if("string"==typeof u){var c=u,d=h;u={},h={},u[s]=c,h[s]=d}var f=n.iconPaths={};o.each(u,function(s,u){var c=l.getModel("normal").getItemStyle(),d=l.getModel("emphasis").getItemStyle(),m={x:-g/2,y:-g/2,width:g,height:g},v=0===s.indexOf("image://")?(m.image=s.slice(8),new a.Image({style:m})):a.makePath(s.replace("path://",""),{style:c,hoverStyle:d,rectHover:!0},m,"center");a.setHoverStyle(v),t.get("showTitle")&&(v.__title=h[u],v.on("mouseover",function(){var t=l.getModel("emphasis").getItemStyle();v.setStyle({text:h[u],textPosition:t.textPosition||"bottom",textFill:t.fill||t.stroke||"#000",textAlign:t.textAlign||"center"})}).on("mouseout",function(){v.setStyle({textFill:null})})),v.trigger(n.get("iconStatus."+u)||"normal"),p.add(v),v.on("click",o.bind(r.onclick,r,e,i,u)),f[u]=v})}var p=this.group;if(p.removeAll(),t.get("show")){var g=+t.get("itemSize"),m=t.get("feature")||{},v=this._features||(this._features={}),y=[];o.each(m,function(t,e){y.push(e)}),new l(this._featureNames||[],y).add(d).update(d).remove(o.curry(d,null)).execute(),this._featureNames=y,u.layout(p,t,i),u.addBackground(p,t),p.eachChild(function(t){var e=t.__title,n=t.hoverStyle;if(n&&e){var r=h.getBoundingRect(e,n.font),o=t.position[0]+p.position[0],a=t.position[1]+p.position[1]+g,s=!1;a+r.height>i.getHeight()&&(n.textPosition="top",s=!0);var l=s?-5-r.height:g+8;o+r.width/2>i.getWidth()?(n.textPosition=["100%",l],n.textAlign="right"):o-r.width/2<0&&(n.textPosition=[0,l],n.textAlign="left")}})}},updateView:function(t,e,i,n){o.each(this._features,function(t){t.updateView&&t.updateView(t.model,e,i,n)})},updateLayout:function(t,e,i,n){o.each(this._features,function(t){t.updateLayout&&t.updateLayout(t.model,e,i,n)})},remove:function(t,e){o.each(this._features,function(i){i.remove&&i.remove(t,e)}),this.group.removeAll()},dispose:function(t,e){o.each(this._features,function(i){i.dispose&&i.dispose(t,e)})}})}).call(e,i(189))},function(t,e,i){function n(t){var e={},i=[],n=[];return t.eachRawSeries(function(t){var r=t.coordinateSystem;if(!r||"cartesian2d"!==r.type&&"polar"!==r.type)i.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:[]},n.push({axisDim:o.dim,axisIndex:o.index})),e[a].series.push(t)}else i.push(t)}}),{seriesGroupByCategoryAxis:e,other:i,meta:n}}function r(t){var e=[];return p.each(t,function(t,i){var n=t.categoryAxis,r=t.valueAxis,o=r.dim,a=[" "].concat(p.map(t.series,function(t){return t.name})),s=[n.model.getCategories()];p.each(t.series,function(t){s.push(t.getRawData().mapArray(o,function(t){return t}))});for(var l=[a.join(v)],u=0;u<s[0].length;u++){for(var h=[],c=0;c<s.length;c++)h.push(s[c][u]);l.push(h.join(v))}e.push(l.join("\n"))}),e.join("\n\n"+m+"\n\n")}function o(t){return p.map(t,function(t){var e=t.getRawData(),i=[t.name],n=[];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++)n[a]=arguments[a];i.push((o?o+v:"")+n.join(v))}),i.join("\n")}).join("\n\n"+m+"\n\n")}function a(t){var e=n(t);return{value:p.filter([r(e.seriesGroupByCategoryAxis),o(e.other)],function(t){return t.replace(/[\n\t\s]/g,"")}).join("\n\n"+m+"\n\n"),meta:e.meta}}function s(t){return t.replace(/^\s\s*/,"").replace(/\s\s*$/,"")}function l(t){var e=t.slice(0,t.indexOf("\n"));if(e.indexOf(v)>=0)return!0}function u(t){for(var e=t.split(/\n+/g),i=s(e.shift()).split(y),n=[],r=p.map(i,function(t){return{name:t,data:[]}}),o=0;o<e.length;o++){var a=s(e[o]).split(y);n.push(a.shift());for(var l=0;l<a.length;l++)r[l]&&(r[l].data[o]=a[l])}return{series:r,categories:n}}function h(t){for(var e=t.split(/\n+/g),i=s(e.shift()),n=[],r=0;r<e.length;r++){var o,a=s(e[r]).split(y),l="",u=!1;isNaN(a[0])?(u=!0,l=a[0],a=a.slice(1),n[r]={name:l,value:[]},o=n[r].value):o=n[r]=[];for(var h=0;h<a.length;h++)o.push(+a[h]);1===o.length&&(u?n[r].value=o[0]:n[r]=o[0])}return{name:i,data:n}}function c(t,e){var i=t.split(new RegExp("\n*"+m+"\n*","g")),n={series:[]};return p.each(i,function(t,i){if(l(t)){var r=u(t),o=e[i],a=o.axisDim+"Axis";o&&(n[a]=n[a]||[],n[a][o.axisIndex]={data:r.categories},n.series=n.series.concat(r.series))}else{var r=h(t);n.series.push(r)}}),n}function d(t){this._dom=null,this.model=t}function f(t,e){return p.map(t,function(t,i){var n=e&&e[i];return p.isObject(n)&&!p.isArray(n)?(p.isObject(t)&&!p.isArray(t)&&(t=t.value),p.defaults({value:t},n)):t})}var p=i(1),g=i(20),m=new Array(60).join("-"),v="\t",y=new RegExp("["+v+"]+","g");d.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:"数据视图",lang:["数据视图","关闭","刷新"],backgroundColor:"#fff",textColor:"#000",textareaColor:"#fff",textareaBorderColor:"#333",buttonColor:"#c23531",buttonTextColor:"#fff"},d.prototype.onclick=function(t,e){function i(){n.removeChild(o),S._dom=null}var n=e.getDom(),r=this.model;this._dom&&n.removeChild(this._dom);var o=document.createElement("div");o.style.cssText="position:absolute;left:5px;top:5px;bottom:5px;right:5px;",o.style.backgroundColor=r.get("backgroundColor")||"#fff";var s=document.createElement("h4"),l=r.get("lang")||[];s.innerHTML=l[0]||r.get("title"),s.style.cssText="margin: 10px 20px;",s.style.color=r.get("textColor");var u=document.createElement("div"),h=document.createElement("textarea");u.style.cssText="display:block;width:100%;overflow:auto;";var d=r.get("optionToContent"),f=r.get("contentToOption"),m=a(t);if("function"==typeof d){var y=d(e.getOption());"string"==typeof y?u.innerHTML=y:p.isDom(y)&&u.appendChild(y)}else u.appendChild(h),h.readOnly=r.get("readOnly"),h.style.cssText="width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;",h.style.color=r.get("textColor"),h.style.borderColor=r.get("textareaBorderColor"),h.style.backgroundColor=r.get("textareaColor"),h.value=m.value;var x=m.meta,_=document.createElement("div");_.style.cssText="position:absolute;bottom:0;left:0;right:0;";var b="float:right;margin-right:20px;border:none;cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px",w=document.createElement("div"),M=document.createElement("div");b+=";background-color:"+r.get("buttonColor"),b+=";color:"+r.get("buttonTextColor");var S=this;g.addEventListener(w,"click",i),g.addEventListener(M,"click",function(){var t;try{t="function"==typeof f?f(u,e.getOption()):c(h.value,x)}catch(n){throw i(),new Error("Data view format error "+n)}t&&e.dispatchAction({type:"changeDataView",newOption:t}),i()}),w.innerHTML=l[1],M.innerHTML=l[2],M.style.cssText=b,w.style.cssText=b,!r.get("readOnly")&&_.appendChild(M),_.appendChild(w),g.addEventListener(h,"keydown",function(t){if(9===(t.keyCode||t.which)){var e=this.value,i=this.selectionStart,n=this.selectionEnd;this.value=e.substring(0,i)+v+e.substring(n),this.selectionStart=this.selectionEnd=i+1,g.stop(t)}}),o.appendChild(s),o.appendChild(u),o.appendChild(_),u.style.height=n.clientHeight-80+"px",n.appendChild(o),this._dom=o},d.prototype.remove=function(t,e){this._dom&&e.getDom().removeChild(this._dom)},d.prototype.dispose=function(t,e){this.remove(t,e)},i(28).register("dataView",d),i(2).registerAction({type:"changeDataView",event:"dataViewChanged",update:"prepareAndUpdate"},function(t,e){var i=[];p.each(t.newOption.series,function(t){var n=e.getSeriesByName(t.name)[0];if(n){var r=n.get("data");i.push({name:t.name,data:f(t.data,r)})}else i.push(p.extend({type:"scatter"},t))}),e.mergeOption(p.defaults({series:i},t.newOption))}),t.exports=d},function(t,e,i){"use strict";function n(t,e,i){(this._brushController=new l(i.getZr())).on("brush",s.bind(this._onBrush,this)).mount(),this._isZoomActive}function r(t){var e={};return s.each(["xAxisIndex","yAxisIndex"],function(i){e[i]=t[i],null==e[i]&&(e[i]="all"),(e[i]===!1||"none"===e[i])&&(e[i]=[])}),e}function o(t,e){t.setIconStatus("back",h.count(e)>1?"emphasis":"normal")}function a(t,e,i,n){var o=i._isZoomActive;n&&"takeGlobalCursor"===n.type&&(o="dataZoomSelect"===n.key&&n.dataZoomSelectActive),i._isZoomActive=o,t.setIconStatus("zoom",o?"emphasis":"normal");var a=new u(r(t.option),e,{include:["grid"]});i._brushController.setPanels(a.makePanelOpts(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)"}})}var s=i(1),l=i(129),u=i(186),h=i(127),c=s.each;i(204);var d="\0_ec_\0toolbox-dataZoom_";n.defaultOption={show:!0,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:{zoom:"区域缩放",back:"区域缩放还原"}};var f=n.prototype;f.render=function(t,e,i,n){this.model=t,this.ecModel=e,this.api=i,a(t,e,this,n),o(t,e)},f.onclick=function(t,e,i){p[i].call(this)},f.remove=function(t,e){this._brushController.unmount()},f.dispose=function(t,e){this._brushController.dispose()};var p={zoom:function(){var t=!this._isZoomActive;this.api.dispatchAction({type:"takeGlobalCursor",key:"dataZoomSelect",dataZoomSelectActive:t})},back:function(){this._dispatchZoomAction(h.pop(this.ecModel))}};f._onBrush=function(t,e){function i(t,e,i){var r=n(t,e.getAxis(t).model,a);r&&(o[r.id]={dataZoomId:r.id,startValue:i[0],endValue:i[1]})}function n(t,e,i){var n;return i.eachComponent({mainType:"dataZoom",subType:"select"},function(i){var r=i.getAxisModel(t,e.componentIndex);r&&(n=i)}),n}if(e.isEnd&&t.length){var o={},a=this.ecModel;this._brushController.updateCovers([]);var s=new u(r(this.model.option),a,{include:["grid"]});s.matchOutputRanges(t,a,function(t,e,n){if("cartesian2d"===n.type){var r=t.brushType;"rect"===r?(i("x",n,e[0]),i("y",n,e[1])):i({lineX:"x",lineY:"y"}[r],n,e)}}),h.push(a,o),this._dispatchZoomAction(o)}},f._dispatchZoomAction=function(t){var e=[];c(t,function(t,i){e.push(s.clone(t))}),e.length&&this.api.dispatchAction({type:"dataZoom",from:this.uid,batch:e})},i(28).register("dataZoom",n),i(2).registerPreprocessor(function(t){function e(t,e){if(e){var r=t+"Index",o=e[r];null==o||"all"==o||s.isArray(o)||(o=o===!1||"none"===o?[]:[o]),i(t,function(e,i){if(null==o||"all"==o||s.indexOf(o,i)!==-1){var a={type:"select",$fromToolbox:!0,id:d+t+i};a[r]=i,n.push(a)}})}}function i(e,i){var n=t[e];s.isArray(n)||(n=n?[n]:[]),c(n,i)}if(t){var n=t.dataZoom||(t.dataZoom=[]);s.isArray(n)||(t.dataZoom=n=[n]);var r=t.toolbox;if(r&&(s.isArray(r)&&(r=r[0]),r&&r.feature)){var o=r.feature.dataZoom;e("xAxis",o),e("yAxis",o)}}}),t.exports=n},function(t,e,i){"use strict";function n(t){this.model=t}var r=i(1);n.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:{line:"切换为折线图",bar:"切换为柱状图",stack:"切换为堆叠",tiled:"切换为平铺"},option:{},seriesIndex:{}};var o=n.prototype;o.getIcons=function(){var t=this.model,e=t.get("icon"),i={};return r.each(t.get("type"),function(t){e[t]&&(i[t]=e[t])}),i};var a={line:function(t,e,i,n){if("bar"===t)return r.merge({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 r.merge({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 r.merge({id:e,stack:"__ec_magicType_stack__"},n.get("option.stack")||{},!0)},tiled:function(t,e,i,n){if("line"===t||"bar"===t)return r.merge({id:e,stack:""},n.get("option.tiled")||{},!0)}},s=[["line","bar"],["stack","tiled"]];o.onclick=function(t,e,i){var n=this.model,o=n.get("seriesIndex."+i);if(a[i]){var l={series:[]},u=function(e){var o=e.subType,s=e.id,u=a[i](o,s,e,n);u&&(r.defaults(u,e.option),l.series.push(u));var h=e.coordinateSystem;if(h&&"cartesian2d"===h.type&&("line"===i||"bar"===i)){var c=h.getAxesByScale("ordinal")[0];if(c){var d=c.dim,f=d+"Axis",p=t.queryComponents({mainType:f,index:e.get(name+"Index"),id:e.get(name+"Id")})[0],g=p.componentIndex;l[f]=l[f]||[];for(var m=0;m<=g;m++)l[f][g]=l[f][g]||{};l[f][g].boundaryGap="bar"===i}}};r.each(s,function(t){r.indexOf(t,i)>=0&&r.each(t,function(t){n.setIconStatus(t,"normal")})}),n.setIconStatus(i,"emphasis"),t.eachComponent({mainType:"series",query:null==o?null:{seriesIndex:o}},u),e.dispatchAction({type:"changeMagicType",currentType:i,newOption:l})}};var l=i(2);l.registerAction({type:"changeMagicType",event:"magicTypeChanged",update:"prepareAndUpdate"},function(t,e){e.mergeOption(t.newOption)}),i(28).register("magicType",n),t.exports=n},function(t,e,i){"use strict";function n(t){this.model=t}var r=i(127);n.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:"还原"};var o=n.prototype;o.onclick=function(t,e,i){r.clear(t),e.dispatchAction({type:"restore",from:this.uid})},i(28).register("restore",n),i(2).registerAction({type:"restore",event:"restore",update:"prepareAndUpdate"},function(t,e){e.resetOption("recreate")}),t.exports=n},function(t,e,i){function n(t){this.model=t}var r=i(9);n.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:"保存为图片",type:"png",name:"",excludeComponents:["toolbox"],pixelRatio:1,lang:["右键另存为图片"]},n.prototype.unusable=!r.canvasSupported;var o=n.prototype;o.onclick=function(t,e){var i=this.model,n=i.get("name")||t.get("title.0.text")||"echarts",o=document.createElement("a"),a=i.get("type",!0)||"png";o.download=n+"."+a,o.target="_blank";var s=e.getConnectedDataURL({type:a,backgroundColor:i.get("backgroundColor",!0)||t.get("backgroundColor")||"#fff",excludeComponents:i.get("excludeComponents"),pixelRatio:i.get("pixelRatio")});if(o.href=s,"function"!=typeof MouseEvent||r.browser.ie||r.browser.edge){var l=i.get("lang"),u='<body style="margin:0;"><img src="'+s+'" style="max-width:100%;" title="'+(l&&l[0]||"")+'" /></body>',h=window.open();h.document.write(u)}else{var c=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!1});o.dispatchEvent(c)}},i(28).register("saveAsImage",n),t.exports=n},function(t,e,i){i(45),i(231),i(232),i(2).registerAction({type:"showTip",event:"showTip",update:"tooltip:manuallyShowTip"},function(){}),i(2).registerAction({type:"hideTip",event:"hideTip",update:"tooltip:manuallyHideTip"},function(){})},function(t,e,i){function n(t){var e="cubic-bezier(0.23, 1, 0.32, 1)",i="left "+t+"s "+e+",top "+t+"s "+e;return s.map(p,function(t){return t+"transition:"+i}).join(";")}function r(t){var e=[],i=t.get("fontSize"),n=t.getTextColor();return n&&e.push("color:"+n),e.push("font:"+t.getFont()),i&&e.push("line-height:"+Math.round(3*i/2)+"px"),c(["decoration","align"],function(i){var n=t.get(i);n&&e.push("text-"+i+":"+n)}),e.join(";")}function o(t){var e=[],i=t.get("transitionDuration"),o=t.get("backgroundColor"),a=t.getModel("textStyle"),s=t.get("padding");return i&&e.push(n(i)),o&&(f.canvasSupported?e.push("background-Color:"+o):(e.push("background-Color:#"+l.toHex(o)),e.push("filter:alpha(opacity=70)"))),c(["width","color","radius"],function(i){var n="border-"+i,r=d(n),o=t.get(r);null!=o&&e.push(n+":"+o+("color"===i?"":"px"))}),e.push(r(a)),null!=s&&e.push("padding:"+h.normalizeCssArray(s).join("px ")+"px"),e.join(";")+";"}function a(t,e){var i=document.createElement("div"),n=this._zr=e.getZr();this.el=i,this._x=e.getWidth()/2,this._y=e.getHeight()/2,t.appendChild(i),this._container=t,this._show=!1,this._hideTimeout;var r=this;i.onmouseenter=function(){r._enterable&&(clearTimeout(r._hideTimeout),r._show=!0),r._inContent=!0},i.onmousemove=function(e){if(e=e||window.event,!r._enterable){var i=n.handler;u.normalizeEvent(t,e,!0),i.dispatch("mousemove",e)}},i.onmouseleave=function(){r._enterable&&r._show&&r.hideLater(r._hideDelay),r._inContent=!1}}var s=i(1),l=i(22),u=i(20),h=i(7),c=s.each,d=h.toCamelCase,f=i(9),p=["","-webkit-","-moz-","-o-"],g="position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;";a.prototype={constructor:a,_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=g+o(t)+";left:"+this._x+"px;top:"+this._y+"px;"+(t.get("extraCssText")||""),e.style.display=e.innerHTML?"block":"none",this._show=!0},setContent:function(t){this.el.innerHTML=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.getViewportRoot())&&(t+=i.offsetLeft||0,e+=i.offsetTop||0);var r=this.el.style;r.left=t+"px",r.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(s.bind(this.hide,this),t)):this.hide())},isShow:function(){return this._show}},t.exports=a},function(t,e,i){i(2).extendComponentModel({type:"tooltip",dependencies:["axisPointer"],defaultOption:{zlevel:0,z:8,show:!0,showContent:!0,trigger:"item",triggerOn:"mousemove|click",alwaysShowContent:!1,displayMode:"single",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}}})},function(t,e,i){function n(t){for(var e=t.pop();t.length;){var i=t.pop();i&&(i instanceof m&&(i=i.get("tooltip",!0)),"string"==typeof i&&(i={formatter:i}),e=new m(i,e,e.ecModel))}return e}function r(t,e){return t.dispatchAction||h.bind(e.dispatchAction,e)}function o(t,e,i,n,r,o,a){var s=i.clientWidth,l=i.clientHeight;return t+s+o>n?t-=s+o:t+=o,e+l+a>r?e-=l+a:e+=a,[t,e]}function a(t,e,i,n,r){var o=i.clientWidth,a=i.clientHeight;return t=Math.min(t+o,n)-o,e=Math.min(e+a,r)-a,t=Math.max(t,0),e=Math.max(e,0),[t,e]}function s(t,e,i){var n=i[0],r=i[1],o=5,a=0,s=0,l=e.width,u=e.height;switch(t){case"inside":a=e.x+l/2-n/2,s=e.y+u/2-r/2;break;case"top":a=e.x+l/2-n/2,s=e.y-r-o;break;case"bottom":a=e.x+l/2-n/2,s=e.y+u+o;break;case"left":a=e.x-n-o,s=e.y+u/2-r/2;break;case"right":a=e.x+l+o,s=e.y+u/2-r/2}return[a,s]}function l(t){return"center"===t||"middle"===t}var u=i(230),h=i(1),c=i(7),d=i(4),f=i(75),p=i(12),g=i(9),m=i(10),v=i(76),y=i(17),x=i(55),_=h.bind,b=h.each,w=d.parsePercent;i(2).extendComponentView({type:"tooltip",init:function(t,e){if(!g.node){var i=new u(e.getDom(),e);this._tooltipContent=i}},render:function(t,e,i){if(!g.node){this.group.removeAll(),this._tooltipModel=t,this._ecModel=e,this._api=i,this._lastDataByCoordSys,this._alwaysShowContent=t.get("alwaysShowContent");var n=this._tooltipContent;n.update(),n.setEnterable(t.get("enterable")),this._initGlobalListener(),this._keepShow()}},_initGlobalListener:function(){var t=this._tooltipModel,e=t.get("triggerOn");v.register("itemTooltip",this._api,_(function(t,i,n){"none"!==e&&(e.indexOf(t)>=0?this._tryShow(i,n):"leave"===t&&this._hide(n))},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(){n.manuallyShowTip(t,e,i,{x:n._lastX,y:n._lastY})})}},manuallyShowTip:function(t,e,i,n){if(n.from!==this.uid&&!g.node){var o=r(n,i);this._ticket="";var a=n.seriesIndex,s=n.dataByCoordSys;if(s)this._tryShow({offsetX:n.x,offsetY:n.y,position:n.position,event:{},dataByCoordSys:n.dataByCoordSys,
+tooltipOption:n.tooltipOption},o);else if(null!=a){var l=f(n,e),u=l.point[0],h=l.point[1];null!=u&&null!=h&&this._tryShow({offsetX:u,offsetY:h,position:n.position,target:l.el,event:{}},o)}else null!=n.x&&null!=n.y&&this._tryShow({offsetX:n.x,offsetY:n.y,position:n.position,target:i.getZr().handler.findHover(n.x,n.y),event:{}},o)}},manuallyHideTip:function(t,e,i,n){var o=this._tooltipContent;this._alwaysShowContent||o.hideLater(this._tooltipModel.get("hideDelay")),this._lastX=this._lastY=null,n.from!==this.uid&&this._hide(r(n,i))},_tryShow:function(t,e){var i=t.target,n=this._tooltipModel;if(n){this._lastX=t.offsetX,this._lastY=t.offsetY;var r=t.dataByCoordSys;r&&r.length?this._showAxisTooltip(r,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=h.bind(e,this),clearTimeout(this._showTimout),i>0?this._showTimout=setTimeout(e,i):e()},_showAxisTooltip:function(t,e){var i=this._ecModel,r=this._tooltipModel,o=[e.offsetX,e.offsetY],a=[],s=[],l=n([e.tooltipOption,r]);b(t,function(t){b(t.dataByAxis,function(t){var e=i.getComponent(t.axisDim+"Axis",t.axisIndex),n=t.value,r=[];if(e&&null!=n){var o=x.getValueLabel(n,e.axis,i,t.seriesDataIndices,t.valueLabelOpt);h.each(t.seriesDataIndices,function(a){var l=i.getSeriesByIndex(a.seriesIndex),u=a.dataIndexInside,h=l&&l.getDataParams(u);h.axisDim=t.axisDim,h.axisIndex=t.axisIndex,h.axisType=t.axisType,h.axisId=t.axisId,h.axisValue=y.getAxisRawValue(e.axis,n),h.axisValueLabel=o,h&&(s.push(h),r.push(l.formatTooltip(u,!0)))});var l=o;a.push((l?c.encodeHTML(l)+"<br />":"")+r.join("<br />"))}})},this),a.reverse(),a=a.join("<br /><br />");var u=e.position;this._showOrMove(l,function(){this._updateContentNotChangedOnAxis(t)?this._updatePosition(l,u,o[0],o[1],this._tooltipContent,s):this._showTooltipContent(l,a,s,Math.random(),o[0],o[1],u)})},_showSeriesItemTooltip:function(t,e,i){var r=this._ecModel,o=e.seriesIndex,a=r.getSeriesByIndex(o),s=e.dataModel||a,l=e.dataIndex,u=e.dataType,h=s.getData(),c=n([h.getItemModel(l),s,a&&(a.coordinateSystem||{}).model,this._tooltipModel]),d=c.get("trigger");if(null==d||"item"===d){var f=s.getDataParams(l,u),p=s.formatTooltip(l,!1,u),g="item_"+s.name+"_"+l;this._showOrMove(c,function(){this._showTooltipContent(c,p,f,g,t.offsetX,t.offsetY,t.position,t.target)}),i({type:"showTip",dataIndexInside:l,dataIndex:h.getRawIndex(l),seriesIndex:o,from:this.uid})}},_showComponentItemTooltip:function(t,e,i){var n=e.tooltip;if("string"==typeof n){var r=n;n={content:r,formatter:r}}var o=new m(n,this._tooltipModel,this._ecModel),a=o.get("content"),s=Math.random();this._showOrMove(o,function(){this._showTooltipContent(o,a,o.get("formatterParams")||{},s,t.offsetX,t.offsetY,t.position,e)}),i({type:"showTip",from:this.uid})},_showTooltipContent:function(t,e,i,n,r,o,a,s){if(this._ticket="",t.get("showContent")&&t.get("show")){var l=this._tooltipContent,u=t.get("formatter");a=a||t.get("position");var h=e;if(u&&"string"==typeof u)h=c.formatTpl(u,i,!0);else if("function"==typeof u){var d=_(function(e,n){e===this._ticket&&(l.setContent(n),this._updatePosition(t,a,r,o,l,i,s))},this);this._ticket=n,h=u(i,n,d)}l.setContent(h),l.show(t),this._updatePosition(t,a,r,o,l,i,s)}},_updatePosition:function(t,e,i,n,r,u,c){var d=this._api.getWidth(),f=this._api.getHeight();e=e||t.get("position");var g=r.getSize(),m=t.get("align"),v=t.get("verticalAlign"),y=c&&c.getBoundingRect().clone();if(c&&y.applyTransform(c.transform),"function"==typeof e&&(e=e([i,n],u,r.el,y,{viewSize:[d,f],contentSize:g.slice()})),h.isArray(e))i=w(e[0],d),n=w(e[1],f);else if(h.isObject(e)){e.width=g[0],e.height=g[1];var x=p.getLayoutRect(e,{width:d,height:f});i=x.x,n=x.y,m=null,v=null}else if("string"==typeof e&&c){var _=s(e,y,g);i=_[0],n=_[1]}else{var _=o(i,n,r.el,d,f,m?0:20,v?0:20);i=_[0],n=_[1]}if(m&&(i-=l(m)?g[0]/2:"right"===m?g[0]:0),v&&(n-=l(v)?g[1]/2:"bottom"===v?g[1]:0),t.get("confine")){var _=a(i,n,r.el,d,f);i=_[0],n=_[1]}r.moveTo(i,n)},_updateContentNotChangedOnAxis:function(t){var e=this._lastDataByCoordSys,i=!!e&&e.length===t.length;return b(e,function(e,n){var r=e.dataByAxis||{},o=t[n]||{},a=o.dataByAxis||[];i&=r.length===a.length,b(r,function(t,e){var n=a[e]||{},r=t.seriesDataIndices||[],o=n.seriesDataIndices||[];i&=t.value===n.value&&t.axisType===n.axisType&&t.axisId===n.axisId&&r.length===o.length,b(r,function(t,e){var n=o[e];i&=t.seriesIndex===n.seriesIndex&&t.dataIndex===n.dataIndex})})}),this._lastDataByCoordSys=t,!!i},_hide:function(t){this._lastDataByCoordSys=null,t({type:"hideTip",from:this.uid})},dispose:function(t,e){g.node||(this._tooltipContent.hide(),v.unregister("itemTooltip",e))}})},,function(t,e,i){function n(t){return parseInt(t,10)}function r(t,e){s.initVML(),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 r=e.delFromMap,o=e.addToMap;e.delFromMap=function(t){var i=e.get(t);r.call(e,t),i&&i.onRemove&&i.onRemove(n)},e.addToMap=function(t){t.onAdd&&t.onAdd(n),o.call(e,t)},this._firstPaint=!0}function o(t){return function(){a('In IE8.0 VML mode painter not support method "'+t+'"')}}var a=i(52),s=i(184);r.prototype={constructor:r,getViewportRoot:function(){return this._vmlViewport},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){var 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||n(e.width))-n(e.paddingLeft)-n(e.paddingRight)|0},_getHeight:function(){var t=this.root,e=t.currentStyle;return(t.clientHeight||n(e.height))-n(e.paddingTop)-n(e.paddingBottom)|0}};for(var l=["getLayer","insertLayer","eachLayer","eachBuiltinLayer","eachOtherLayer","getLayers","modLayer","delLayer","clearLayer","toDataURL","pathToImage"],u=0;u<l.length;u++){var h=l[u];r.prototype[h]=o(h)}t.exports=r},function(t,e,i){if(!i(9).canvasSupported){var n=i(6),r=i(11),o=i(30).CMD,a=i(22),s=i(16),l=i(86),u=i(40),h=i(53),c=i(85),d=i(8),f=i(41),p=i(184),g=Math.round,m=Math.sqrt,v=Math.abs,y=Math.cos,x=Math.sin,_=Math.max,b=n.applyTransform,w=",",M="progid:DXImageTransform.Microsoft",S=21600,T=S/2,A=1e5,I=1e3,C=function(t){t.style.cssText="position:absolute;left:0;top:0;width:1px;height:1px;",t.coordsize=S+","+S,t.coordorigin="0,0"},P=function(t){return String(t).replace(/&/g,"&amp;").replace(/"/g,"&quot;")},k=function(t,e,i){return"rgb("+[t,e,i].join(",")+")"},L=function(t,e){e&&t&&e.parentNode!==t&&t.appendChild(e)},D=function(t,e){e&&t&&e.parentNode===t&&t.removeChild(e)},O=function(t,e,i){return(parseFloat(t)||0)*A+(parseFloat(e)||0)*I+i},z=function(t,e){return"string"==typeof t?t.lastIndexOf("%")>=0?parseFloat(t)/100*e:parseFloat(t):t},E=function(t,e,i){var n=a.parse(e);i=+i,isNaN(i)&&(i=1),n&&(t.color=k(n[0],n[1],n[2]),t.opacity=i*n[3])},N=function(t){var e=a.parse(t);return[k(e[0],e[1],e[2]),e[3]]},R=function(t,e,i){var n=e.fill;if(null!=n)if(n instanceof f){var r,o=0,a=[0,0],s=0,l=1,u=i.getBoundingRect(),h=u.width,c=u.height;if("linear"===n.type){r="gradient";var d=i.transform,p=[n.x*h,n.y*c],g=[n.x2*h,n.y2*c];d&&(b(p,p,d),b(g,g,d));var m=g[0]-p[0],v=g[1]-p[1];o=180*Math.atan2(m,v)/Math.PI,o<0&&(o+=360),o<1e-6&&(o=0)}else{r="gradientradial";var p=[n.x*h,n.y*c],d=i.transform,y=i.scale,x=h,w=c;a=[(p[0]-u.x)/x,(p[1]-u.y)/w],d&&b(p,p,d),x/=y[0]*S,w/=y[1]*S;var M=_(x,w);s=0/M,l=2*n.r/M-s}var T=n.colorStops.slice();T.sort(function(t,e){return t.offset-e.offset});for(var A=T.length,I=[],C=[],P=0;P<A;P++){var k=T[P],L=N(k.color);C.push(k.offset*l+s+" "+L[0]),0!==P&&P!==A-1||I.push(L)}if(A>=2){var D=I[0][0],O=I[1][0],z=I[0][1]*e.opacity,R=I[1][1]*e.opacity;t.type=r,t.method="none",t.focus="100%",t.angle=o,t.color=D,t.color2=O,t.colors=C.join(","),t.opacity=R,t.opacity2=z}"radial"===r&&(t.focusposition=a.join(","))}else E(t,n,e.opacity)},B=function(t,e){null!=e.lineDash&&(t.dashstyle=e.lineDash.join(" ")),null==e.stroke||e.stroke instanceof f||E(t,e.stroke,e.opacity)},V=function(t,e,i,n){var r="fill"==e,o=t.getElementsByTagName(e)[0];null!=i[e]&&"none"!==i[e]&&(r||!r&&i.lineWidth)?(t[r?"filled":"stroked"]="true",i[e]instanceof f&&D(t,o),o||(o=p.createNode(e)),r?R(o,i,n):B(o,i),L(t,o)):(t[r?"filled":"stroked"]="false",D(t,o))},F=[[],[],[]],G=function(t,e){var i,n,r,a,s,l,u=o.M,h=o.C,c=o.L,d=o.A,f=o.Q,p=[];for(a=0;a<t.length;){switch(r=t[a++],n="",i=0,r){case u:n=" m ",i=1,s=t[a++],l=t[a++],F[0][0]=s,F[0][1]=l;break;case c:n=" l ",i=1,s=t[a++],l=t[a++],F[0][0]=s,F[0][1]=l;break;case f:case h:n=" c ",i=3;var v,_,M=t[a++],A=t[a++],I=t[a++],C=t[a++];r===f?(v=I,_=C,I=(I+2*M)/3,C=(C+2*A)/3,M=(s+2*M)/3,A=(l+2*A)/3):(v=t[a++],_=t[a++]),F[0][0]=M,F[0][1]=A,F[1][0]=I,F[1][1]=C,F[2][0]=v,F[2][1]=_,s=v,l=_;break;case d:var P=0,k=0,L=1,D=1,O=0;e&&(P=e[4],k=e[5],L=m(e[0]*e[0]+e[1]*e[1]),D=m(e[2]*e[2]+e[3]*e[3]),O=Math.atan2(-e[1]/D,e[0]/L));var z=t[a++],E=t[a++],N=t[a++],R=t[a++],B=t[a++]+O,V=t[a++]+B+O;a++;var G=t[a++],H=z+y(B)*N,W=E+x(B)*R,M=z+y(V)*N,A=E+x(V)*R,Z=G?" wa ":" at ";Math.abs(H-M)<1e-4&&(Math.abs(V-B)>.01?G&&(H+=270/S):Math.abs(W-E)<1e-4?G&&H<z||!G&&H>z?A-=270/S:A+=270/S:G&&W<E||!G&&W>E?M+=270/S:M-=270/S),p.push(Z,g(((z-N)*L+P)*S-T),w,g(((E-R)*D+k)*S-T),w,g(((z+N)*L+P)*S-T),w,g(((E+R)*D+k)*S-T),w,g((H*L+P)*S-T),w,g((W*D+k)*S-T),w,g((M*L+P)*S-T),w,g((A*D+k)*S-T)),s=M,l=A;break;case o.R:var q=F[0],j=F[1];q[0]=t[a++],q[1]=t[a++],j[0]=q[0]+t[a++],j[1]=q[1]+t[a++],e&&(b(q,q,e),b(j,j,e)),q[0]=g(q[0]*S-T),j[0]=g(j[0]*S-T),q[1]=g(q[1]*S-T),j[1]=g(j[1]*S-T),p.push(" m ",q[0],w,q[1]," l ",j[0],w,q[1]," l ",j[0],w,j[1]," l ",q[0],w,j[1]);break;case o.Z:p.push(" x ")}if(i>0){p.push(n);for(var U=0;U<i;U++){var X=F[U];e&&b(X,X,e),p.push(g(X[0]*S-T),w,g(X[1]*S-T),U<i-1?w:"")}}}return p.join("")};d.prototype.brushVML=function(t){var e=this.style,i=this._vmlEl;i||(i=p.createNode("shape"),C(i),this._vmlEl=i),V(i,"fill",e,this),V(i,"stroke",e,this);var n=this.transform,r=null!=n,o=i.getElementsByTagName("stroke")[0];if(o){var a=e.lineWidth;if(r&&!e.strokeNoScale){var s=n[0]*n[3]-n[1]*n[2];a*=m(v(s))}o.weight=a+"px"}var l=this.path;this.__dirtyPath&&(l.beginPath(),this.buildPath(l,this.shape),l.toStatic(),this.__dirtyPath=!1),i.path=G(l.data,this.transform),i.style.zIndex=O(this.zlevel,this.z,this.z2),L(t,i),null!=e.text?this.drawRectText(t,this.getBoundingRect()):this.removeRectText(t)},d.prototype.onRemove=function(t){D(t,this._vmlEl),this.removeRectText(t)},d.prototype.onAdd=function(t){L(t,this._vmlEl),this.appendRectText(t)};var H=function(t){return"object"==typeof t&&t.tagName&&"IMG"===t.tagName.toUpperCase()};h.prototype.brushVML=function(t){var e,i,n=this.style,r=n.image;if(H(r)){var o=r.src;if(o===this._imageSrc)e=this._imageWidth,i=this._imageHeight;else{var a=r.runtimeStyle,s=a.width,l=a.height;a.width="auto",a.height="auto",e=r.width,i=r.height,a.width=s,a.height=l,this._imageSrc=o,this._imageWidth=e,this._imageHeight=i}r=o}else r===this._imageSrc&&(e=this._imageWidth,i=this._imageHeight);if(r){var u=n.x||0,h=n.y||0,c=n.width,d=n.height,f=n.sWidth,v=n.sHeight,y=n.sx||0,x=n.sy||0,S=f&&v,T=this._vmlEl;T||(T=p.doc.createElement("div"),C(T),this._vmlEl=T);var A,I=T.style,P=!1,k=1,D=1;if(this.transform&&(A=this.transform,k=m(A[0]*A[0]+A[1]*A[1]),D=m(A[2]*A[2]+A[3]*A[3]),P=A[1]||A[2]),P){var z=[u,h],E=[u+c,h],N=[u,h+d],R=[u+c,h+d];b(z,z,A),b(E,E,A),b(N,N,A),b(R,R,A);var B=_(z[0],E[0],N[0],R[0]),V=_(z[1],E[1],N[1],R[1]),F=[];F.push("M11=",A[0]/k,w,"M12=",A[2]/D,w,"M21=",A[1]/k,w,"M22=",A[3]/D,w,"Dx=",g(u*k+A[4]),w,"Dy=",g(h*D+A[5])),I.padding="0 "+g(B)+"px "+g(V)+"px 0",I.filter=M+".Matrix("+F.join("")+", SizingMethod=clip)"}else A&&(u=u*k+A[4],h=h*D+A[5]),I.filter="",I.left=g(u)+"px",I.top=g(h)+"px";var G=this._imageEl,W=this._cropEl;G||(G=p.doc.createElement("div"),this._imageEl=G);var Z=G.style;if(S){if(e&&i)Z.width=g(k*e*c/f)+"px",Z.height=g(D*i*d/v)+"px";else{var q=new Image,j=this;q.onload=function(){q.onload=null,e=q.width,i=q.height,Z.width=g(k*e*c/f)+"px",Z.height=g(D*i*d/v)+"px",j._imageWidth=e,j._imageHeight=i,j._imageSrc=r},q.src=r}W||(W=p.doc.createElement("div"),W.style.overflow="hidden",this._cropEl=W);var U=W.style;U.width=g((c+y*c/f)*k),U.height=g((d+x*d/v)*D),U.filter=M+".Matrix(Dx="+-y*c/f*k+",Dy="+-x*d/v*D+")",W.parentNode||T.appendChild(W),G.parentNode!=W&&W.appendChild(G)}else Z.width=g(k*c)+"px",Z.height=g(D*d)+"px",T.appendChild(G),W&&W.parentNode&&(T.removeChild(W),this._cropEl=null);var X="",Y=n.opacity;Y<1&&(X+=".Alpha(opacity="+g(100*Y)+") "),X+=M+".AlphaImageLoader(src="+r+", SizingMethod=scale)",Z.filter=X,T.style.zIndex=O(this.zlevel,this.z,this.z2),L(t,T),null!=n.text&&this.drawRectText(t,this.getBoundingRect())}},h.prototype.onRemove=function(t){D(t,this._vmlEl),this._vmlEl=null,this._cropEl=null,this._imageEl=null,this.removeRectText(t)},h.prototype.onAdd=function(t){L(t,this._vmlEl),this.appendRectText(t)};var W,Z="normal",q={},j=0,U=100,X=document.createElement("div"),Y=function(t){var e=q[t];if(!e){j>U&&(j=0,q={});var i,n=X.style;try{n.font=t,i=n.fontFamily.split(",")[0]}catch(r){}e={style:n.fontStyle||Z,variant:n.fontVariant||Z,weight:n.fontWeight||Z,size:0|parseFloat(n.fontSize||12),family:i||"Microsoft YaHei"},q[t]=e,j++}return e};s.measureText=function(t,e){var i=p.doc;W||(W=i.createElement("div"),W.style.cssText="position:absolute;top:-20000px;left:0;padding:0;margin:0;border:none;white-space:pre;",p.doc.body.appendChild(W));try{W.style.font=e}catch(n){}return W.innerHTML="",W.appendChild(i.createTextNode(t)),{width:W.offsetWidth}};for(var $=new r,K=function(t,e,i,n){var r=this.style,o=r.text;if(null!=o&&(o+=""),o){var a,l,u=r.textAlign,h=Y(r.textFont),c=h.style+" "+h.variant+" "+h.weight+" "+h.size+'px "'+h.family+'"',d=r.textBaseline,f=r.textVerticalAlign;i=i||s.getBoundingRect(o,c,u,d);var m=this.transform;if(m&&!n&&($.copy(e),$.applyTransform(m),e=$),n)a=e.x,l=e.y;else{var v=r.textPosition,y=r.textDistance;if(v instanceof Array)a=e.x+z(v[0],e.width),l=e.y+z(v[1],e.height),u=u||"left",d=d||"top";else{var x=s.adjustTextPositionOnRect(v,e,i,y);a=x.x,l=x.y,u=u||x.textAlign,d=d||x.textBaseline}}if(f){switch(f){case"middle":l-=i.height/2;break;case"bottom":l-=i.height}d="top"}var _=h.size;switch(d){case"hanging":case"top":l+=_/1.75;break;case"middle":break;default:l-=_/2.25}switch(u){case"left":break;case"center":a-=i.width/2;break;case"right":a-=i.width}var M,S,T,A=p.createNode,I=this._textVmlEl;I?(T=I.firstChild,M=T.nextSibling,S=M.nextSibling):(I=A("line"),M=A("path"),S=A("textpath"),T=A("skew"),S.style["v-text-align"]="left",C(I),M.textpathok=!0,S.on=!0,I.from="0 0",I.to="1000 0.05",L(I,T),L(I,M),L(I,S),this._textVmlEl=I);var k=[a,l],D=I.style;m&&n?(b(k,k,m),T.on=!0,T.matrix=m[0].toFixed(3)+w+m[2].toFixed(3)+w+m[1].toFixed(3)+w+m[3].toFixed(3)+",0,0",T.offset=(g(k[0])||0)+","+(g(k[1])||0),T.origin="0 0",D.left="0px",D.top="0px"):(T.on=!1,D.left=g(a)+"px",D.top=g(l)+"px"),S.string=P(o);try{S.style.font=c}catch(E){}V(I,"fill",{fill:n?r.fill:r.textFill,opacity:r.opacity},this),V(I,"stroke",{stroke:n?r.stroke:r.textStroke,opacity:r.opacity,lineDash:r.lineDash},this),I.style.zIndex=O(this.zlevel,this.z,this.z2),L(t,I)}},Q=function(t){D(t,this._textVmlEl),this._textVmlEl=null},J=function(t){L(t,this._textVmlEl)},tt=[l,u,h,d,c],et=0;et<tt.length;et++){var it=tt[et].prototype;it.drawRectText=K,it.removeRectText=Q,it.appendRectText=J}c.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)},c.prototype.onRemove=function(t){this.removeRectText(t)},c.prototype.onAdd=function(t){this.appendRectText(t)}}},function(t,e,i){i(235),i(87).registerPainter("vml",i(234))}])});
\ No newline at end of file
diff --git a/dist/echarts.js b/dist/echarts.js
index 443a82f..f689540 100644
--- a/dist/echarts.js
+++ b/dist/echarts.js
@@ -60,50 +60,52 @@
 	module.exports = __webpack_require__(1);
 
 	// Import all charts and components
-	__webpack_require__(100);
-	__webpack_require__(134);
-	__webpack_require__(141);
-	__webpack_require__(150);
-	__webpack_require__(154);
-
+	__webpack_require__(112);
+	__webpack_require__(148);
+	__webpack_require__(155);
 	__webpack_require__(164);
-	__webpack_require__(185);
-	__webpack_require__(197);
-	__webpack_require__(218);
-	__webpack_require__(222);
-	__webpack_require__(226);
+	__webpack_require__(168);
+
+	__webpack_require__(178);
+	__webpack_require__(199);
+	__webpack_require__(211);
+	__webpack_require__(232);
+	__webpack_require__(236);
+	__webpack_require__(240);
+	__webpack_require__(255);
+	__webpack_require__(261);
+	__webpack_require__(268);
+	__webpack_require__(274);
+	__webpack_require__(278);
+	__webpack_require__(287);
+	__webpack_require__(291);
+	__webpack_require__(294);
+
+	__webpack_require__(308);
+	__webpack_require__(122);
+	__webpack_require__(309);
+	__webpack_require__(315);
+	__webpack_require__(142);
+	__webpack_require__(319);
+	__webpack_require__(331);
 	__webpack_require__(241);
-	__webpack_require__(247);
-	__webpack_require__(254);
-	__webpack_require__(260);
-	__webpack_require__(264);
-	__webpack_require__(273);
-	__webpack_require__(277);
-	__webpack_require__(280);
+	__webpack_require__(295);
+	__webpack_require__(334);
+	__webpack_require__(345);
 
-	__webpack_require__(292);
-	__webpack_require__(113);
-	__webpack_require__(293);
-	__webpack_require__(299);
-	__webpack_require__(303);
-	__webpack_require__(314);
-	__webpack_require__(227);
-	__webpack_require__(281);
-	__webpack_require__(317);
+	__webpack_require__(349);
 
-	__webpack_require__(328);
-
-	__webpack_require__(329);
-	__webpack_require__(343);
-
-	__webpack_require__(358);
+	__webpack_require__(350);
 	__webpack_require__(364);
-	__webpack_require__(367);
 
-	__webpack_require__(370);
 	__webpack_require__(379);
+	__webpack_require__(385);
+	__webpack_require__(388);
 
 	__webpack_require__(391);
+	__webpack_require__(400);
+
+	__webpack_require__(412);
 
 
 /***/ },
@@ -150,8 +152,8 @@
 	    var SeriesModel = __webpack_require__(28);
 
 	    var ComponentView = __webpack_require__(29);
-	    var ChartView = __webpack_require__(42);
-	    var graphic = __webpack_require__(43);
+	    var ChartView = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 	    var modelUtil = __webpack_require__(5);
 	    var throttle = __webpack_require__(81);
 
@@ -208,7 +210,7 @@
 	    /**
 	     * @module echarts~ECharts
 	     */
-	    function ECharts (dom, theme, opts) {
+	    function ECharts(dom, theme, opts) {
 	        opts = opts || {};
 
 	        // Get theme by name
@@ -279,17 +281,17 @@
 	        this._componentsMap = {};
 
 	        /**
-	         * @type {module:echarts/ExtensionAPI}
-	         * @private
-	         */
-	        this._api = new ExtensionAPI(this);
-
-	        /**
 	         * @type {module:echarts/CoordinateSystem}
 	         * @private
 	         */
 	        this._coordSysMgr = new CoordinateSystemManager();
 
+	        /**
+	         * @type {module:echarts/ExtensionAPI}
+	         * @private
+	         */
+	        this._api = new ExtensionAPI(this, this._coordSysMgr);
+
 	        Eventful.call(this);
 
 	        /**
@@ -314,6 +316,9 @@
 	        timsort(dataProcessorFuncs, prioritySortFunc);
 
 	        zr.animation.on('frame', this._onframe, this);
+
+	        // ECharts instance can be used as value.
+	        zrUtil.setAsPrimitive(this);
 	    }
 
 	    var echartsProto = ECharts.prototype;
@@ -392,7 +397,7 @@
 	            mainType !== 'graphic' && (this.__lastOnlyGraphic = false);
 	        }, this);
 
-	        this._model.setOption(option, optionPreprocessorFuncs);
+	        this._model.setOption(option, optionPreprocessorFuncs, this.__lastOnlyGraphic);
 
 	        if (lazyUpdate) {
 	            this[OPTION_UPDATED] = {silent: silent};
@@ -448,6 +453,13 @@
 	    };
 
 	    /**
+	     * @return {number}
+	     */
+	    echartsProto.getDevicePixelRatio = function () {
+	        return this._zr.painter.dpr || window.devicePixelRatio || 1;
+	    };
+
+	    /**
 	     * Get canvas which has all thing rendered
 	     * @param {Object} opts
 	     * @param {string} [opts.backgroundColor]
@@ -650,7 +662,7 @@
 	     *            geoIndex / geoId / geoName,
 	     *            bmapIndex / bmapId / bmapName,
 	     *            xAxisIndex / xAxisId / xAxisName,
-	     *            yAxisIndex / yAxisId / yAxisName
+	     *            yAxisIndex / yAxisId / yAxisName,
 	     *            gridIndex / gridId / gridName,
 	     *            ... (can be extended)
 	     *        }
@@ -735,6 +747,24 @@
 	            : data.getVisual(visualType);
 	    };
 
+	    /**
+	     * Get view of corresponding component model
+	     * @param  {module:echarts/model/Component} componentModel
+	     * @return {module:echarts/view/Component}
+	     */
+	    echartsProto.getViewOfComponentModel = function (componentModel) {
+	        return this._componentsMap[componentModel.__viewId];
+	    };
+
+	    /**
+	     * Get view of corresponding series model
+	     * @param  {module:echarts/model/Series} seriesModel
+	     * @return {module:echarts/view/Chart}
+	     */
+	    echartsProto.getViewOfSeriesModel = function (seriesModel) {
+	        return this._chartsMap[seriesModel.__viewId];
+	    };
+
 
 	    var updateMethods = {
 
@@ -743,7 +773,7 @@
 	         * @private
 	         */
 	        update: function (payload) {
-	            // console.time && console.time('update');
+	            // console.profile && console.profile('update');
 
 	            var ecModel = this._model;
 	            var api = this._api;
@@ -816,7 +846,11 @@
 	                }
 	            }
 
-	            // console.time && console.timeEnd('update');
+	            each(postUpdateFuncs, function (func) {
+	                func(ecModel, api);
+	            });
+
+	            // console.profile && console.profileEnd('update');
 	        },
 
 	        /**
@@ -912,6 +946,13 @@
 	     */
 	    function updateDirectly(ecIns, method, payload, mainType, subType) {
 	        var ecModel = ecIns._model;
+
+	        // broadcast
+	        if (!mainType) {
+	            each(ecIns._componentsViews.concat(ecIns._chartsViews), callView);
+	            return;
+	        }
+
 	        var query = {};
 	        query[mainType + 'Id'] = payload[mainType + 'Id'];
 	        query[mainType + 'Index'] = payload[mainType + 'Index'];
@@ -922,13 +963,16 @@
 
 	        // If dispatchAction before setOption, do nothing.
 	        ecModel && ecModel.eachComponent(condition, function (model, index) {
-	            var view = ecIns[
+	            callView(ecIns[
 	                mainType === 'series' ? '_chartsMap' : '_componentsMap'
-	            ][model.__viewId];
-	            if (view && view.__alive) {
-	                view[method](model, ecModel, ecIns._api, payload);
-	            }
+	            ][model.__viewId]);
 	        }, ecIns);
+
+	        function callView(view) {
+	            view && view.__alive && view[method] && view[method](
+	                view.__model, ecModel, ecIns._api, payload
+	            );
+	        }
 	    }
 
 	    /**
@@ -1029,14 +1073,6 @@
 	            return;
 	        }
 
-	        // if (__DEV__) {
-	        //     zrUtil.assert(
-	        //         !this[IN_MAIN_PROCESS],
-	        //         '`dispatchAction` should not be called during main process.'
-	        //         + 'unless updateMathod is "none".'
-	        //     );
-	        // }
-
 	        // May dispatchAction in rendering procedure
 	        if (this[IN_MAIN_PROCESS]) {
 	            this._pendingActions.push(payload);
@@ -1064,12 +1100,13 @@
 
 	    function doDispatchAction(payload, silent) {
 	        var payloadType = payload.type;
+	        var escapeConnect = payload.escapeConnect;
 	        var actionWrap = actions[payloadType];
 	        var actionInfo = actionWrap.actionInfo;
 
 	        var cptType = (actionInfo.update || 'update').split(':');
 	        var updateMethod = cptType.pop();
-	        cptType = cptType[0] && parseClassType(cptType[0]);
+	        cptType = cptType[0] != null && parseClassType(cptType[0]);
 
 	        this[IN_MAIN_PROCESS] = true;
 
@@ -1089,10 +1126,9 @@
 	        var eventObj;
 	        var isHighDown = payloadType === 'highlight' || payloadType === 'downplay';
 
-	        for (var i = 0; i < payloads.length; i++) {
-	            var batchItem = payloads[i];
+	        each(payloads, function (batchItem) {
 	            // Action can specify the event by return it.
-	            eventObj = actionWrap.action(batchItem, this._model);
+	            eventObj = actionWrap.action(batchItem, this._model, this._api);
 	            // Emit event outside
 	            eventObj = eventObj || zrUtil.extend({}, batchItem);
 	            // Convert type to eventType
@@ -1107,7 +1143,7 @@
 	            else if (cptType) {
 	                updateDirectly(this, updateMethod, batchItem, cptType.main, cptType.sub);
 	            }
-	        }
+	        }, this);
 
 	        if (updateMethod !== 'none' && !isHighDown && !cptType) {
 	            // Still dirty
@@ -1125,6 +1161,7 @@
 	        if (batched) {
 	            eventObj = {
 	                type: actionInfo.event || payloadType,
+	                escapeConnect: escapeConnect,
 	                batch: eventObjBatch
 	            };
 	        }
@@ -1184,6 +1221,11 @@
 
 	        // If use hover layer
 	        updateHoverLayerStatus(this._zr, ecModel);
+
+	        // Post render
+	        each(postUpdateFuncs, function (func) {
+	            func(ecModel, api);
+	        });
 	    }
 
 	    /**
@@ -1520,10 +1562,10 @@
 	        });
 	    }
 	    /**
-	     * @type {Array.<Function>}
+	     * @type {Object} key: actionType.
 	     * @inner
 	     */
-	    var actions = [];
+	    var actions = {};
 
 	    /**
 	     * Map eventType to actionType
@@ -1545,6 +1587,12 @@
 	    var optionPreprocessorFuncs = [];
 
 	    /**
+	     * @type {Array.<Function>}
+	     * @inner
+	     */
+	    var postUpdateFuncs = [];
+
+	    /**
 	     * Visual encoding functions of each stage
 	     * @type {Array.<Object.<string, Function>>}
 	     * @inner
@@ -1574,27 +1622,32 @@
 	        /**
 	         * @type {number}
 	         */
-	        version: '3.4.0',
+	        version: '3.5.0',
 	        dependencies: {
-	            zrender: '3.3.0'
+	            zrender: '3.4.0'
 	        }
 	    };
 
 	    function enableConnect(chart) {
-
 	        var STATUS_PENDING = 0;
 	        var STATUS_UPDATING = 1;
 	        var STATUS_UPDATED = 2;
 	        var STATUS_KEY = '__connectUpdateStatus';
+
 	        function updateConnectedChartsStatus(charts, status) {
 	            for (var i = 0; i < charts.length; i++) {
 	                var otherChart = charts[i];
 	                otherChart[STATUS_KEY] = status;
 	            }
 	        }
+
 	        zrUtil.each(eventActionMap, function (actionType, eventType) {
 	            chart._messageCenter.on(eventType, function (event) {
 	                if (connectedGroups[chart.group] && chart[STATUS_KEY] !== STATUS_PENDING) {
+	                    if (event && event.escapeConnect) {
+	                        return;
+	                    }
+
 	                    var action = chart.makeActionFromEvent(event);
 	                    var otherCharts = [];
 
@@ -1614,8 +1667,8 @@
 	                }
 	            });
 	        });
-
 	    }
+
 	    /**
 	     * @param {HTMLDomElement} dom
 	     * @param {Object} [theme]
@@ -1641,7 +1694,13 @@
 	            if (!dom) {
 	                throw new Error('Initialize failed: invalid dom.');
 	            }
-	            if (zrUtil.isDom(dom) && dom.nodeName.toUpperCase() !== 'CANVAS' && (!dom.clientWidth || !dom.clientHeight)) {
+	            if (zrUtil.isDom(dom)
+	                && dom.nodeName.toUpperCase() !== 'CANVAS'
+	                && (
+	                    (!dom.clientWidth && (!opts || opts.width == null))
+	                    || (!dom.clientHeight && (!opts || opts.height == null))
+	                )
+	            ) {
 	                console.warn('Can\'t get dom width or height');
 	            }
 	        }
@@ -1682,6 +1741,7 @@
 	    };
 
 	    /**
+	     * @DEPRECATED
 	     * @return {string} groupId
 	     */
 	    echarts.disConnect = function (groupId) {
@@ -1689,6 +1749,11 @@
 	    };
 
 	    /**
+	     * @return {string} groupId
+	     */
+	    echarts.disconnect = echarts.disConnect;
+
+	    /**
 	     * Dispose a chart instance
 	     * @param  {module:echarts~ECharts|HTMLDomElement|string} chart
 	     */
@@ -1756,6 +1821,14 @@
 	    };
 
 	    /**
+	     * Register postUpdater
+	     * @param {Function} postUpdateFunc
+	     */
+	    echarts.registerPostUpdate = function (postUpdateFunc) {
+	        postUpdateFuncs.push(postUpdateFunc);
+	    };
+
+	    /**
 	     * Usage:
 	     * registerAction('someAction', 'someEvent', function () { ... });
 	     * registerAction('someAction', function () { ... });
@@ -1949,11 +2022,14 @@
 	    // --------
 	    // Exports
 	    // --------
-	    //
+	    echarts.zrender = zrender;
+
 	    echarts.List = __webpack_require__(98);
 	    echarts.Model = __webpack_require__(12);
 
-	    echarts.graphic = __webpack_require__(43);
+	    echarts.Axis = __webpack_require__(100);
+
+	    echarts.graphic = __webpack_require__(44);
 	    echarts.number = __webpack_require__(7);
 	    echarts.format = __webpack_require__(6);
 	    echarts.throttle = throttle.throttle;
@@ -1965,13 +2041,16 @@
 	    each([
 	            'map', 'each', 'filter', 'indexOf', 'inherits', 'reduce', 'filter',
 	            'bind', 'curry', 'isArray', 'isString', 'isObject', 'isFunction',
-	            'extend', 'defaults', 'clone'
+	            'extend', 'defaults', 'clone', 'merge'
 	        ],
 	        function (name) {
 	            echarts.util[name] = zrUtil[name];
 	        }
 	    );
 
+	    echarts.helper = __webpack_require__(101);
+
+
 	    // PRIORITY
 	    echarts.PRIORITY = {
 	        PROCESSOR: {
@@ -2193,7 +2272,7 @@
 	            this._optionManager = optionManager;
 	        },
 
-	        setOption: function (option, optionPreprocessorFuncs) {
+	        setOption: function (option, optionPreprocessorFuncs, onlyGraphic) {
 	            zrUtil.assert(
 	                !(OPTION_INNER_KEY in option),
 	                'please use chart.getOption()'
@@ -2201,7 +2280,7 @@
 
 	            this._optionManager.setOption(option, optionPreprocessorFuncs);
 
-	            this.resetOption();
+	            this.resetOption(null, onlyGraphic);
 	        },
 
 	        /**
@@ -2211,7 +2290,7 @@
 	         *                      'media': only reset media query option
 	         * @return {boolean} Whether option changed.
 	         */
-	        resetOption: function (type) {
+	        resetOption: function (type, onlyGraphic) {
 	            var optionChanged = false;
 	            var optionManager = this._optionManager;
 
@@ -2222,7 +2301,11 @@
 	                    initBase.call(this, baseOption);
 	                }
 	                else {
-	                    this.restoreData();
+	                    // If only graphic, other series and component will not
+	                    // go through update process, data should not be restored.
+	                    // Otherwise grphic els mounted on data will be eliminated
+	                    // and downplay will not work.
+	                    !onlyGraphic && this.restoreData();
 	                    this.mergeOption(baseOption);
 	                }
 	                optionChanged = true;
@@ -2463,7 +2546,7 @@
 	            }
 	            else {
 	                // Return all components with mainType
-	                result = cpts;
+	                result = cpts.slice();
 	            }
 
 	            return filterBySubType(result, condition);
@@ -2742,10 +2825,12 @@
 	        this.option[OPTION_INNER_KEY] = 1;
 
 	        /**
+	         * Init with series: [], in case of calling findSeries method
+	         * before series initialized.
 	         * @type {Object.<string, Array.<module:echarts/model/Model>>}
 	         * @private
 	         */
-	        this._componentsMap = {};
+	        this._componentsMap = {series: []};
 
 	        /**
 	         * Mapping between filtered series list and raw series list.
@@ -2912,7 +2997,7 @@
 	        else if (TYPED_ARRAY[typeStr]) {
 	            result = source.constructor.from(source);
 	        }
-	        else if (!BUILTIN_OBJECT[typeStr] && !isDom(source)) {
+	        else if (!BUILTIN_OBJECT[typeStr] && !isPrimitive(source) && !isDom(source)) {
 	            result = {};
 	            for (var key in source) {
 	                if (source.hasOwnProperty(key)) {
@@ -2948,8 +3033,10 @@
 	                    && !isArray(targetProp)
 	                    && !isDom(sourceProp)
 	                    && !isDom(targetProp)
-	                    && !isBuildInObject(sourceProp)
-	                    && !isBuildInObject(targetProp)
+	                    && !isBuiltInObject(sourceProp)
+	                    && !isBuiltInObject(targetProp)
+	                    && !isPrimitive(sourceProp)
+	                    && !isPrimitive(targetProp)
 	                ) {
 	                    // 如果需要递归覆盖,就递归调用merge
 	                    merge(targetProp, sourceProp, overwrite);
@@ -3276,7 +3363,7 @@
 	     * @param {*} value
 	     * @return {boolean}
 	     */
-	    function isBuildInObject(value) {
+	    function isBuiltInObject(value) {
 	        return !!BUILTIN_OBJECT[objToString.call(value)];
 	    }
 
@@ -3335,6 +3422,18 @@
 	        }
 	    }
 
+	    var primitiveKey = '__ec_primitive__';
+	    /**
+	     * Set an object as primitive to be ignored traversing children in clone or merge
+	     */
+	    function setAsPrimitive(obj) {
+	        obj[primitiveKey] = true;
+	    }
+
+	    function isPrimitive(obj) {
+	        return obj[primitiveKey];
+	    }
+
 	    var util = {
 	        inherits: inherits,
 	        mixin: mixin,
@@ -3359,11 +3458,12 @@
 	        isString: isString,
 	        isObject: isObject,
 	        isFunction: isFunction,
-	        isBuildInObject: isBuildInObject,
+	        isBuiltInObject: isBuiltInObject,
 	        isDom: isDom,
 	        eqNaN: eqNaN,
 	        retrieve: retrieve,
 	        assert: assert,
+	        setAsPrimitive: setAsPrimitive,
 	        noop: function () {}
 	    };
 	    module.exports = util;
@@ -3468,7 +3568,12 @@
 	            return value;
 	        }
 
-	        if (dimType === 'time' && !isFinite(value) && value != null && value !== '-') {
+	        if (dimType === 'time'
+	            // spead up when using timestamp
+	            && typeof value !== 'number'
+	            && value != null
+	            && value !== '-'
+	        ) {
 	            value = +nubmerUtil.parseDate(value);
 	        }
 
@@ -3512,10 +3617,6 @@
 	         */
 	        getDataParams: function (dataIndex, dataType) {
 	            var data = this.getData(dataType);
-
-	            var seriesIndex = this.seriesIndex;
-	            var seriesName = this.name;
-
 	            var rawValue = this.getRawValue(dataIndex, dataType);
 	            var rawDataIndex = data.getRawIndex(dataIndex);
 	            var name = data.getName(dataIndex, true);
@@ -3525,8 +3626,9 @@
 	                componentType: this.mainType,
 	                componentSubType: this.subType,
 	                seriesType: this.mainType === 'series' ? this.subType : null,
-	                seriesIndex: seriesIndex,
-	                seriesName: seriesName,
+	                seriesIndex: this.seriesIndex,
+	                seriesId: this.id,
+	                seriesName: this.name,
 	                name: name,
 	                dataIndex: rawDataIndex,
 	                data: itemOpt,
@@ -3744,7 +3846,7 @@
 	                ? opt.name + ''
 	                : existCpt
 	                ? existCpt.name
-	                : '\0-';
+	                : '\0-'; // name may be displayed on screen, so use '-'.
 
 	            if (existCpt) {
 	                keyInfo.id = existCpt.id;
@@ -3860,13 +3962,37 @@
 	    };
 
 	    /**
+	     * Enable property storage to any host object.
+	     * Notice: Serialization is not supported.
+	     *
+	     * For example:
+	     * var get = modelUitl.makeGetter();
+	     *
+	     * function some(hostObj) {
+	     *      get(hostObj)._someProperty = 1212;
+	     *      ...
+	     * }
+	     *
+	     * @return {Function}
+	     */
+	    modelUtil.makeGetter = (function () {
+	        var index = 0;
+	        return function () {
+	            var key = '\0__ec_prop_getter_' + index++;
+	            return function (hostObj) {
+	                return hostObj[key] || (hostObj[key] = {});
+	            };
+	        };
+	    })();
+
+	    /**
 	     * @param {module:echarts/model/Global} ecModel
 	     * @param {string|Object} finder
 	     *        If string, e.g., 'geo', means {geoIndex: 0}.
 	     *        If Object, could contain some of these properties below:
 	     *        {
 	     *            seriesIndex, seriesId, seriesName,
-	     *            geoIndex, geoId, goeName,
+	     *            geoIndex, geoId, geoName,
 	     *            bmapIndex, bmapId, bmapName,
 	     *            xAxisIndex, xAxisId, xAxisName,
 	     *            yAxisIndex, yAxisId, yAxisName,
@@ -3880,8 +4006,11 @@
 	     *            geoId: ['aa', 'cc'],
 	     *            gridName: ['xx', 'rr']
 	     *        }
+	     *        xxxIndex can be set as 'all' (means all xxx) or 'none' (means not specify)
+	     *        If nothing or null/undefined specified, return nothing.
 	     * @param {Object} [opt]
 	     * @param {string} [opt.defaultMainType]
+	     * @param {Array.<string>} [opt.includeMainTypes]
 	     * @return {Object} result like:
 	     *        {
 	     *            seriesModels: [seriesModel1, seriesModel2],
@@ -3920,14 +4049,22 @@
 
 	            var parsedKey = key.match(/^(\w+)(Index|Id|Name)$/) || [];
 	            var mainType = parsedKey[1];
-	            var queryType = parsedKey[2];
+	            var queryType = (parsedKey[2] || '').toLowerCase();
 
-	            if (!mainType || !queryType) {
+	            if (!mainType
+	                || !queryType
+	                || value == null
+	                || (queryType === 'index' && value === 'none')
+	                || (opt && opt.includeMainTypes && zrUtil.indexOf(opt.includeMainTypes, mainType) < 0)
+	            ) {
 	                return;
 	            }
 
 	            var queryParam = {mainType: mainType};
-	            queryParam[queryType.toLowerCase()] = value;
+	            if (queryType !== 'index' || value !== 'all') {
+	                queryParam[queryType] = value;
+	            }
+
 	            var models = ecModel.queryComponents(queryParam);
 	            result[mainType + 'Models'] = models;
 	            result[mainType + 'Model'] = models[0];
@@ -3943,6 +4080,7 @@
 	    module.exports = modelUtil;
 
 
+
 /***/ },
 /* 6 */
 /***/ function(module, exports, __webpack_require__) {
@@ -4058,6 +4196,24 @@
 	        return tpl;
 	    };
 
+	    /**
+	     * simple Template formatter
+	     *
+	     * @param {string} tpl
+	     * @param {Object} param
+	     * @param {boolean} [encode=false]
+	     * @return {string}
+	     */
+	    formatUtil.formatTplSimple = function (tpl, param, encode) {
+	        zrUtil.each(param, function (value, key) {
+	            tpl = tpl.replace(
+	                '{' + key + '}',
+	                encode ? encodeHTML(value) : value
+	            );
+	        });
+	        return tpl;
+	    };
+
 
 	    /**
 	     * @param {string} str
@@ -4072,9 +4228,15 @@
 	     * ISO Date format
 	     * @param {string} tpl
 	     * @param {number} value
+	     * @param {boolean} [isLocal=false] Default use UTC
+	     *  Why default UTC? In most case, time provided by user is
+	     *  understood in UTC. For example, new Date('2012-01-01')
+	     *  or a string '2012-01-01' or a timestamp. So it is
+	     *  recommended to format time in UTC.
+	     *  (see `echarts/util/number.js#parseDate`);
 	     * @inner
 	     */
-	    formatUtil.formatTime = function (tpl, value) {
+	    formatUtil.formatTime = function (tpl, value, isLocal) {
 	        if (tpl === 'week'
 	            || tpl === 'month'
 	            || tpl === 'quarter'
@@ -4085,12 +4247,13 @@
 	        }
 
 	        var date = numberUtil.parseDate(value);
-	        var y = date.getFullYear();
-	        var M = date.getMonth() + 1;
-	        var d = date.getDate();
-	        var h = date.getHours();
-	        var m = date.getMinutes();
-	        var s = date.getSeconds();
+	        var utc = isLocal ? '' : 'UTC';
+	        var y = date['get' + utc + 'FullYear']();
+	        var M = date['get' + utc + 'Month']() + 1;
+	        var d = date['get' + utc + 'Date']();
+	        var h = date['get' + utc + 'Hours']();
+	        var m = date['get' + utc + 'Minutes']();
+	        var s = date['get' + utc + 'Seconds']();
 
 	        tpl = tpl.replace('MM', s2d(M))
 	            .toLowerCase()
@@ -4122,6 +4285,7 @@
 	    module.exports = formatUtil;
 
 
+
 /***/ },
 /* 7 */
 /***/ function(module, exports) {
@@ -4232,15 +4396,18 @@
 	    /**
 	     * Fix rounding error of float numbers
 	     * @param {number} x
-	     * @return {number}
+	     * @param {number} [precision]
+	     * @param {boolean} [returnStr]
+	     * @return {number|string}
 	     */
-	    number.round = function (x, precision) {
+	    number.round = function (x, precision, returnStr) {
 	        if (precision == null) {
 	            precision = 10;
 	        }
 	        // Avoid range error
 	        precision = Math.min(Math.max(0, precision), 20);
-	        return +(+x).toFixed(precision);
+	        x = (+x).toFixed(precision);
+	        return returnStr ? x : +x;
 	    };
 
 	    number.asc = function (arr) {
@@ -4318,8 +4485,22 @@
 	        return val > -RADIAN_EPSILON && val < RADIAN_EPSILON;
 	    };
 
+	    var TIME_REG = /^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d\d)(?::(\d\d)(?:[.,](\d+))?)?)?(?:Z|([\+\-]\d\d):?\d\d)?)?)?)?)?$/; // jshint ignore:line
+	    var TIMEZONE_OFFSET = (new Date()).getTimezoneOffset();
+
 	    /**
-	     * @param {string|Date|number} value
+	     * @param {string|Date|number} value These values can be accepted:
+	     *   + An instance of Date, represent a time in its own time zone.
+	     *   + Or string in a subset of ISO 8601, only including:
+	     *     + only year, month, date: '2012-03', '2012-03-01', '2012-03-01 05', '2012-03-01 05:06',
+	     *     + separated with T or space: '2012-03-01T12:22:33.123', '2012-03-01 12:22:33.123',
+	     *     + time zone: '2012-03-01T12:22:33Z', '2012-03-01T12:22:33+8000', '2012-03-01T12:22:33-05:00',
+	     *     all of which will be treated as they reperent a time in UTC
+	     *     if time zone is not specified.
+	     *   + Or other string format, including:
+	     *     '2012', '2012-3-1', '2012/3/1', '2012/03/01',
+	     *     '2009/6/12 2:00', '2009/6/12 2:05:08', '2009/6/12 2:05:08.123'
+	     *   + a timestamp, which represent a time in UTC.
 	     * @return {Date} date
 	     */
 	    number.parseDate = function (value) {
@@ -4327,13 +4508,32 @@
 	            return value;
 	        }
 	        else if (typeof value === 'string') {
-	            // Treat as ISO format. See issue #3623
-	            var ret = new Date(value);
-	            if (isNaN(+ret)) {
-	                // FIXME new Date('1970-01-01') is UTC, new Date('1970/01/01') is local
-	                ret = new Date(new Date(value.replace(/-/g, '/')) - new Date('1970/01/01'));
+	            // Different browsers parse date in different way, so we parse it manually.
+	            // Some other issues:
+	            // new Date('1970-01-01') is UTC,
+	            // new Date('1970/01/01') and new Date('1970-1-01') is local.
+	            // See issue #3623
+	            var match = TIME_REG.exec(value);
+
+	            if (!match) {
+	                // return Invalid Date.
+	                return new Date(NaN);
 	            }
-	            return ret;
+
+	            // match[n] can only be string or undefined.
+	            // But take care of '12' + 1 => '121'.
+	            return new Date(
+	                +match[1],
+	                +(match[2] || 1) - 1,
+	                +match[3] || 1,
+	                +match[4] || 0,
+	                +(match[5] || 0) - (match[8] || 0) * 60 - TIMEZONE_OFFSET,
+	                +match[6] || 0,
+	                +match[7] || 0
+	            );
+	        }
+	        else if (value == null) {
+	            return new Date(NaN);
 	        }
 
 	        return new Date(Math.round(value));
@@ -5634,6 +5834,7 @@
 	    };
 
 	    /**
+	     * Notice, parseClassType('') should returns {main: '', sub: ''}
 	     * @public
 	     */
 	    var parseClassType = clazz.parseClassType = function (componentType) {
@@ -5917,11 +6118,13 @@
 	               properties[i][1] = properties[i][0];
 	            }
 	        }
-	        return function (excludes) {
+	        return function (excludes, includes) {
 	            var style = {};
 	            for (var i = 0; i < properties.length; i++) {
 	                var propName = properties[i][1];
-	                if (excludes && zrUtil.indexOf(excludes, propName) >= 0) {
+	                if ((excludes && zrUtil.indexOf(excludes, propName) >= 0)
+	                    || (includes && zrUtil.indexOf(includes, propName) < 0)
+	                ) {
 	                    continue;
 	                }
 	                var val = this.getShallow(propName);
@@ -6029,8 +6232,8 @@
 	        ]
 	    );
 	    module.exports = {
-	        getItemStyle: function (excludes) {
-	            var style = getItemStyle.call(this, excludes);
+	        getItemStyle: function (excludes, includes) {
+	            var style = getItemStyle.call(this, excludes, includes);
 	            var lineDash = this.getBorderLineDash();
 	            lineDash && (style.lineDash = lineDash);
 	            return style;
@@ -6441,10 +6644,21 @@
 
 	    var layout = {};
 
+	    /**
+	     * @public
+	     */
 	    var LOCATION_PARAMS = layout.LOCATION_PARAMS = [
 	        'left', 'right', 'top', 'bottom', 'width', 'height'
 	    ];
 
+	    /**
+	     * @public
+	     */
+	    var HV_NAMES = layout.HV_NAMES = [
+	        ['width', 'left', 'right'],
+	        ['height', 'top', 'bottom']
+	    ];
+
 	    function boxLayout(orient, group, gap, maxWidth, maxHeight) {
 	        var x = 0;
 	        var y = 0;
@@ -6761,6 +6975,15 @@
 	    };
 
 	    /**
+	     * @param {Object} option Contains some of the properties in HV_NAMES.
+	     * @param {number} hvIdx 0: horizontal; 1: vertical.
+	     */
+	    layout.sizeCalculable = function (option, hvIdx) {
+	        return option[HV_NAMES[hvIdx][0]] != null
+	            || (option[HV_NAMES[hvIdx][1]] != null && option[HV_NAMES[hvIdx][2]] != null);
+	    };
+
+	    /**
 	     * Consider Case:
 	     * When defulat option has {left: 0, width: 100}, and we set {right: 0}
 	     * through setOption or media query, using normal zrUtil.merge will cause
@@ -6782,24 +7005,26 @@
 	     * @param {Object} targetOption
 	     * @param {Object} newOption
 	     * @param {Object|string} [opt]
-	     * @param {boolean} [opt.ignoreSize=false] Some component must has width and height.
+	     * @param {boolean|Array.<boolean>} [opt.ignoreSize=false] Some component must has width and height.
 	     */
 	    layout.mergeLayoutParam = function (targetOption, newOption, opt) {
 	        !zrUtil.isObject(opt) && (opt = {});
-	        var hNames = ['width', 'left', 'right']; // Order by priority.
-	        var vNames = ['height', 'top', 'bottom']; // Order by priority.
-	        var hResult = merge(hNames);
-	        var vResult = merge(vNames);
 
-	        copy(hNames, targetOption, hResult);
-	        copy(vNames, targetOption, vResult);
+	        var ignoreSize = opt.ignoreSize;
+	        !zrUtil.isArray(ignoreSize) && (ignoreSize = [ignoreSize, ignoreSize]);
 
-	        function merge(names) {
+	        var hResult = merge(HV_NAMES[0], 0);
+	        var vResult = merge(HV_NAMES[1], 1);
+
+	        copy(HV_NAMES[0], targetOption, hResult);
+	        copy(HV_NAMES[1], targetOption, vResult);
+
+	        function merge(names, hvIdx) {
 	            var newParams = {};
 	            var newValueCount = 0;
 	            var merged = {};
 	            var mergedValueCount = 0;
-	            var enoughParamNumber = opt.ignoreSize ? 1 : 2;
+	            var enoughParamNumber = 2;
 
 	            each(names, function (name) {
 	                merged[name] = targetOption[name];
@@ -6812,6 +7037,13 @@
 	                hasValue(merged, name) && mergedValueCount++;
 	            });
 
+	            if (ignoreSize[hvIdx]) {
+	                // Only one of left/height is premitted to exist.
+	                hasValue(newOption, names[2]) && (merged[names[1]] = null);
+	                hasValue(newOption, names[1]) && (merged[names[2]] = null);
+	                return merged;
+	            }
+
 	            // Case: newOption: {width: ..., right: ...},
 	            // or targetOption: {right: ...} and newOption: {width: ...},
 	            // There is no conflict when merged only has params count
@@ -6827,7 +7059,6 @@
 	            }
 	            else {
 	                // Chose another param from targetOption by priority.
-	                // When 'ignoreSize', enoughParamNumber is 1 and those will not happen.
 	                for (var i = 0; i < names.length; i++) {
 	                    var name = names[i];
 	                    if (!hasProp(newParams, name) && hasProp(targetOption, name)) {
@@ -6878,6 +7109,7 @@
 	    module.exports = layout;
 
 
+
 /***/ },
 /* 22 */
 /***/ function(module, exports) {
@@ -6939,7 +7171,7 @@
 	        // Default is source-over
 	        blendMode: null,
 
-	        animation: true,
+	        animation: 'auto',
 	        animationDuration: 1000,
 	        animationDurationUpdate: 300,
 	        animationEasing: 'exponentialOut',
@@ -7008,14 +7240,18 @@
 	    var zrUtil = __webpack_require__(4);
 
 	    var echartsAPIList = [
-	        'getDom', 'getZr', 'getWidth', 'getHeight', 'dispatchAction', 'isDisposed',
-	        'on', 'off', 'getDataURL', 'getConnectedDataURL', 'getModel', 'getOption'
+	        'getDom', 'getZr', 'getWidth', 'getHeight', 'getDevicePixelRatio', 'dispatchAction', 'isDisposed',
+	        'on', 'off', 'getDataURL', 'getConnectedDataURL', 'getModel', 'getOption',
+	        'getViewOfComponentModel', 'getViewOfSeriesModel'
 	    ];
 
-	    function ExtensionAPI(chartInstance) {
+	    function ExtensionAPI(chartInstance, coordSysMgr) {
 	        zrUtil.each(echartsAPIList, function (name) {
 	            this[name] = zrUtil.bind(chartInstance[name], chartInstance);
 	        }, this);
+
+	        // Inject getCoordinateSystems to ecModel
+	        this.getCoordinateSystems = zrUtil.bind(coordSysMgr.getCoordinateSystems, coordSysMgr);
 	    }
 
 	    module.exports = ExtensionAPI;
@@ -7030,34 +7266,6 @@
 
 	    var zrUtil = __webpack_require__(4);
 
-	    /**
-	     * Interface of Coordinate System Class
-	     *
-	     * create:
-	     *     @param {module:echarts/model/Global} ecModel
-	     *     @param {module:echarts/ExtensionAPI} api
-	     *     @return {Object} coordinate system instance
-	     *
-	     * update:
-	     *     @param {module:echarts/model/Global} ecModel
-	     *     @param {module:echarts/ExtensionAPI} api
-	     *
-	     * convertToPixel:
-	     * convertFromPixel:
-	     *     These two methods is also responsible for determine whether this
-	     *     coodinate system is applicable to the given `finder`.
-	     *     Each coordinate system will be tried, util one returns none
-	     *     null/undefined value.
-	     *     @param {module:echarts/model/Global} ecModel
-	     *     @param {Object} finder
-	     *     @param {Array|number} value
-	     *     @return {Array|number} convert result.
-	     *
-	     * containPoint:
-	     *     @param {Array.<number>} point In pixel coordinate system.
-	     *     @return {boolean}
-	     */
-
 	    var coordinateSystemCreators = {};
 
 	    function CoordinateSystemManager() {
@@ -7611,11 +7819,15 @@
 
 	            this.mergeDefaultAndTheme(option, ecModel);
 
+	            var data = this.getInitialData(option, ecModel);
+	            if (true) {
+	                zrUtil.assert(data, 'getInitialData returned invalid data.');
+	            }
 	            /**
 	             * @type {module:echarts/data/List|module:echarts/data/Tree|module:echarts/data/Graph}
 	             * @private
 	             */
-	            set(this, 'dataBeforeProcessed', this.getInitialData(option, ecModel));
+	            set(this, 'dataBeforeProcessed', data);
 
 	            // If we reverse the order (make data firstly, and then make
 	            // dataBeforeProcessed by cloneShallow), cloneShallow will
@@ -7852,9 +8064,9 @@
 	         * @param {Array.<string>|string} dim
 	         * @param {Array.<number>} value
 	         * @param {module:echarts/coord/single/SingleAxis} baseAxis
-	         * @return {Array.<number>} data indices.
+	         * @return {Object} {dataIndices, nestestValue}.
 	         */
-	        getAxisTooltipDataIndex: null,
+	        getAxisTooltipData: null,
 
 	        /**
 	         * See tooltip.
@@ -9111,7 +9323,7 @@
 	    var isString = util.isString;
 	    var isFunction = util.isFunction;
 	    var isObject = util.isObject;
-	    var log = __webpack_require__(40);
+	    var log = __webpack_require__(41);
 
 	    /**
 	     * @alias modue:zrender/mixin/Animatable
@@ -9888,6 +10100,24 @@
 	            return this;
 	        },
 
+	        pause: function () {
+	            for (var i = 0; i < this._clipList.length; i++) {
+	                this._clipList[i].pause();
+	            }
+	            this._paused = true;
+	        },
+
+	        resume: function () {
+	            for (var i = 0; i < this._clipList.length; i++) {
+	                this._clipList[i].resume();
+	            }
+	            this._paused = false;
+	        },
+
+	        isPaused: function () {
+	            return !!this._paused;
+	        },
+
 	        _doneCallback: function () {
 	            // Clear all tracks
 	            this._tracks = {};
@@ -10050,13 +10280,16 @@
 	        this.onframe = options.onframe;
 	        this.ondestroy = options.ondestroy;
 	        this.onrestart = options.onrestart;
+
+	        this._pausedTime = 0;
+	        this._paused = false;
 	    }
 
 	    Clip.prototype = {
 
 	        constructor: Clip,
 
-	        step: function (globalTime) {
+	        step: function (globalTime, deltaTime) {
 	            // Set startTime on first step, or _startTime may has milleseconds different between clips
 	            // PENDING
 	            if (!this._initialized) {
@@ -10064,7 +10297,12 @@
 	                this._initialized = true;
 	            }
 
-	            var percent = (globalTime - this._startTime) / this._life;
+	            if (this._paused) {
+	                this._pausedTime += deltaTime;
+	                return;
+	            }
+
+	            var percent = (globalTime - this._startTime - this._pausedTime) / this._life;
 
 	            // 还没开始
 	            if (percent < 0) {
@@ -10100,17 +10338,26 @@
 	        },
 
 	        restart: function (globalTime) {
-	            var remainder = (globalTime - this._startTime) % this._life;
+	            var remainder = (globalTime - this._startTime - this._pausedTime) % this._life;
 	            this._startTime = globalTime - remainder + this.gap;
+	            this._pausedTime = 0;
 
 	            this._needsRemove = false;
 	        },
 
-	        fire: function(eventType, arg) {
+	        fire: function (eventType, arg) {
 	            eventType = 'on' + eventType;
 	            if (this[eventType]) {
 	                this[eventType](this._target, arg);
 	            }
+	        },
+
+	        pause: function () {
+	            this._paused = true;
+	        },
+
+	        resume: function () {
+	            this._paused = false;
 	        }
 	    };
 
@@ -10471,13 +10718,15 @@
 
 /***/ },
 /* 39 */
-/***/ function(module, exports) {
+/***/ function(module, exports, __webpack_require__) {
 
 	/**
 	 * @module zrender/tool/color
 	 */
 
 
+	    var LRU = __webpack_require__(40);
+
 	    var kCSSColorTable = {
 	        'transparent': [0,0,0,0], 'aliceblue': [240,248,255,1],
 	        'antiquewhite': [250,235,215,1], 'aqua': [0,255,255,1],
@@ -10607,15 +10856,40 @@
 	        return a + (b - a) * p;
 	    }
 
+	    function setRgba(out, r, g, b, a) {
+	        out[0] = r; out[1] = g; out[2] = b; out[3] = a;
+	        return out;
+	    }
+	    function copyRgba(out, a) {
+	        out[0] = a[0]; out[1] = a[1]; out[2] = a[2]; out[3] = a[3];
+	        return out;
+	    }
+	    var colorCache = new LRU(20);
+	    var lastRemovedArr = null;
+	    function putToCache(colorStr, rgbaArr) {
+	        // Reuse removed array
+	        if (lastRemovedArr) {
+	            copyRgba(lastRemovedArr, rgbaArr);
+	        }
+	        lastRemovedArr = colorCache.put(colorStr, lastRemovedArr || (rgbaArr.slice()));
+	    }
 	    /**
 	     * @param {string} colorStr
+	     * @param {Array.<number>} out
 	     * @return {Array.<number>}
 	     * @memberOf module:zrender/util/color
 	     */
-	    function parse(colorStr) {
+	    function parse(colorStr, rgbaArr) {
 	        if (!colorStr) {
 	            return;
 	        }
+	        rgbaArr = rgbaArr || [];
+
+	        var cached = colorCache.get(colorStr);
+	        if (cached) {
+	            return copyRgba(rgbaArr, cached);
+	        }
+
 	        // colorStr may be not string
 	        colorStr = colorStr + '';
 	        // Remove all whitespace, not compliant, but should just be more accepting.
@@ -10623,7 +10897,9 @@
 
 	        // Color keywords (and transparent) lookup.
 	        if (str in kCSSColorTable) {
-	            return kCSSColorTable[str].slice();  // dup.
+	            copyRgba(rgbaArr, kCSSColorTable[str]);
+	            putToCache(colorStr, rgbaArr);
+	            return rgbaArr;
 	        }
 
 	        // #abc and #abc123 syntax.
@@ -10631,26 +10907,32 @@
 	            if (str.length === 4) {
 	                var iv = parseInt(str.substr(1), 16);  // TODO(deanm): Stricter parsing.
 	                if (!(iv >= 0 && iv <= 0xfff)) {
+	                    setRgba(rgbaArr, 0, 0, 0, 1);
 	                    return;  // Covers NaN.
 	                }
-	                return [
+	                setRgba(rgbaArr,
 	                    ((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8),
 	                    (iv & 0xf0) | ((iv & 0xf0) >> 4),
 	                    (iv & 0xf) | ((iv & 0xf) << 4),
 	                    1
-	                ];
+	                );
+	                putToCache(colorStr, rgbaArr);
+	                return rgbaArr;
 	            }
 	            else if (str.length === 7) {
 	                var iv = parseInt(str.substr(1), 16);  // TODO(deanm): Stricter parsing.
 	                if (!(iv >= 0 && iv <= 0xffffff)) {
+	                    setRgba(rgbaArr, 0, 0, 0, 1);
 	                    return;  // Covers NaN.
 	                }
-	                return [
+	                setRgba(rgbaArr,
 	                    (iv & 0xff0000) >> 16,
 	                    (iv & 0xff00) >> 8,
 	                    iv & 0xff,
 	                    1
-	                ];
+	                );
+	                putToCache(colorStr, rgbaArr);
+	                return rgbaArr;
 	            }
 
 	            return;
@@ -10663,44 +10945,56 @@
 	            switch (fname) {
 	                case 'rgba':
 	                    if (params.length !== 4) {
+	                        setRgba(rgbaArr, 0, 0, 0, 1);
 	                        return;
 	                    }
 	                    alpha = parseCssFloat(params.pop()); // jshint ignore:line
 	                // Fall through.
 	                case 'rgb':
 	                    if (params.length !== 3) {
+	                        setRgba(rgbaArr, 0, 0, 0, 1);
 	                        return;
 	                    }
-	                    return [
+	                    setRgba(rgbaArr,
 	                        parseCssInt(params[0]),
 	                        parseCssInt(params[1]),
 	                        parseCssInt(params[2]),
 	                        alpha
-	                    ];
+	                    );
+	                    putToCache(colorStr, rgbaArr);
+	                    return rgbaArr;
 	                case 'hsla':
 	                    if (params.length !== 4) {
+	                        setRgba(rgbaArr, 0, 0, 0, 1);
 	                        return;
 	                    }
 	                    params[3] = parseCssFloat(params[3]);
-	                    return hsla2rgba(params);
+	                    hsla2rgba(params, rgbaArr);
+	                    putToCache(colorStr, rgbaArr);
+	                    return rgbaArr;
 	                case 'hsl':
 	                    if (params.length !== 3) {
+	                        setRgba(rgbaArr, 0, 0, 0, 1);
 	                        return;
 	                    }
-	                    return hsla2rgba(params);
+	                    hsla2rgba(params, rgbaArr);
+	                    putToCache(colorStr, rgbaArr);
+	                    return rgbaArr;
 	                default:
 	                    return;
 	            }
 	        }
 
+	        setRgba(rgbaArr, 0, 0, 0, 1);
 	        return;
 	    }
 
 	    /**
 	     * @param {Array.<number>} hsla
+	     * @param {Array.<number>} rgba
 	     * @return {Array.<number>} rgba
 	     */
-	    function hsla2rgba(hsla) {
+	    function hsla2rgba(hsla, rgba) {
 	        var h = (((parseFloat(hsla[0]) % 360) + 360) % 360) / 360;  // 0 .. 1
 	        // NOTE(deanm): According to the CSS spec s/l should only be
 	        // percentages, but we don't bother and let float or percentage.
@@ -10709,11 +11003,13 @@
 	        var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;
 	        var m1 = l * 2 - m2;
 
-	        var rgba = [
+	        rgba = rgba || [];
+	        setRgba(rgba,
 	            clampCssByte(cssHueToRgb(m1, m2, h + 1 / 3) * 255),
 	            clampCssByte(cssHueToRgb(m1, m2, h) * 255),
-	            clampCssByte(cssHueToRgb(m1, m2, h - 1 / 3) * 255)
-	        ];
+	            clampCssByte(cssHueToRgb(m1, m2, h - 1 / 3) * 255),
+	            1
+	        );
 
 	        if (hsla.length === 4) {
 	            rgba[3] = hsla[3];
@@ -10829,12 +11125,12 @@
 	     * @return {Array.<number>}
 	     */
 	    function fastMapToColor(normalizedValue, colors, out) {
+	        out = out || [0, 0, 0, 0];
 	        if (!(colors && colors.length)
 	            || !(normalizedValue >= 0 && normalizedValue <= 1)
 	        ) {
-	            return;
+	            return out;
 	        }
-	        out = out || [0, 0, 0, 0];
 	        var value = normalizedValue * (colors.length - 1);
 	        var leftIndex = Math.floor(value);
 	        var rightIndex = Math.ceil(value);
@@ -10928,9 +11224,12 @@
 	    /**
 	     * @param {Array.<string>} colors Color list.
 	     * @param {string} type 'rgba', 'hsva', ...
-	     * @return {string} Result color.
+	     * @return {string} Result color. (If input illegal, return undefined).
 	     */
 	    function stringify(arrColor, type) {
+	        if (!arrColor) {
+	            return;
+	        }
 	        var colorStr = arrColor[0] + ',' + arrColor[1] + ',' + arrColor[2];
 	        if (type === 'rgba' || type === 'hsva' || type === 'hsla') {
 	            colorStr += ',' + arrColor[3];
@@ -10954,10 +11253,212 @@
 
 /***/ },
 /* 40 */
+/***/ function(module, exports) {
+
+	// Simple LRU cache use doubly linked list
+	// @module zrender/core/LRU
+
+
+	    /**
+	     * Simple double linked list. Compared with array, it has O(1) remove operation.
+	     * @constructor
+	     */
+	    var LinkedList = function () {
+
+	        /**
+	         * @type {module:zrender/core/LRU~Entry}
+	         */
+	        this.head = null;
+
+	        /**
+	         * @type {module:zrender/core/LRU~Entry}
+	         */
+	        this.tail = null;
+
+	        this._len = 0;
+	    };
+
+	    var linkedListProto = LinkedList.prototype;
+	    /**
+	     * Insert a new value at the tail
+	     * @param  {} val
+	     * @return {module:zrender/core/LRU~Entry}
+	     */
+	    linkedListProto.insert = function (val) {
+	        var entry = new Entry(val);
+	        this.insertEntry(entry);
+	        return entry;
+	    };
+
+	    /**
+	     * Insert an entry at the tail
+	     * @param  {module:zrender/core/LRU~Entry} entry
+	     */
+	    linkedListProto.insertEntry = function (entry) {
+	        if (!this.head) {
+	            this.head = this.tail = entry;
+	        }
+	        else {
+	            this.tail.next = entry;
+	            entry.prev = this.tail;
+	            entry.next = null;
+	            this.tail = entry;
+	        }
+	        this._len++;
+	    };
+
+	    /**
+	     * Remove entry.
+	     * @param  {module:zrender/core/LRU~Entry} entry
+	     */
+	    linkedListProto.remove = function (entry) {
+	        var prev = entry.prev;
+	        var next = entry.next;
+	        if (prev) {
+	            prev.next = next;
+	        }
+	        else {
+	            // Is head
+	            this.head = next;
+	        }
+	        if (next) {
+	            next.prev = prev;
+	        }
+	        else {
+	            // Is tail
+	            this.tail = prev;
+	        }
+	        entry.next = entry.prev = null;
+	        this._len--;
+	    };
+
+	    /**
+	     * @return {number}
+	     */
+	    linkedListProto.len = function () {
+	        return this._len;
+	    };
+
+	    /**
+	     * Clear list
+	     */
+	    linkedListProto.clear = function () {
+	        this.head = this.tail = null;
+	        this._len = 0;
+	    };
+
+	    /**
+	     * @constructor
+	     * @param {} val
+	     */
+	    var Entry = function (val) {
+	        /**
+	         * @type {}
+	         */
+	        this.value = val;
+
+	        /**
+	         * @type {module:zrender/core/LRU~Entry}
+	         */
+	        this.next;
+
+	        /**
+	         * @type {module:zrender/core/LRU~Entry}
+	         */
+	        this.prev;
+	    };
+
+	    /**
+	     * LRU Cache
+	     * @constructor
+	     * @alias module:zrender/core/LRU
+	     */
+	    var LRU = function (maxSize) {
+
+	        this._list = new LinkedList();
+
+	        this._map = {};
+
+	        this._maxSize = maxSize || 10;
+
+	        this._lastRemovedEntry = null;
+	    };
+
+	    var LRUProto = LRU.prototype;
+
+	    /**
+	     * @param  {string} key
+	     * @param  {} value
+	     * @return {} Removed value
+	     */
+	    LRUProto.put = function (key, value) {
+	        var list = this._list;
+	        var map = this._map;
+	        var removed = null;
+	        if (map[key] == null) {
+	            var len = list.len();
+	            // Reuse last removed entry
+	            var entry = this._lastRemovedEntry;
+
+	            if (len >= this._maxSize && len > 0) {
+	                // Remove the least recently used
+	                var leastUsedEntry = list.head;
+	                list.remove(leastUsedEntry);
+	                delete map[leastUsedEntry.key];
+
+	                removed = leastUsedEntry.value;
+	                this._lastRemovedEntry = leastUsedEntry;
+	            }
+
+	            if (entry) {
+	                entry.value = value;
+	            }
+	            else {
+	                entry = new Entry(value);
+	            }
+	            entry.key = key;
+	            list.insertEntry(entry);
+	            map[key] = entry;
+	        }
+
+	        return removed;
+	    };
+
+	    /**
+	     * @param  {string} key
+	     * @return {}
+	     */
+	    LRUProto.get = function (key) {
+	        var entry = this._map[key];
+	        var list = this._list;
+	        if (entry != null) {
+	            // Put the latest used entry in the tail
+	            if (entry !== list.tail) {
+	                list.remove(entry);
+	                list.insertEntry(entry);
+	            }
+
+	            return entry.value;
+	        }
+	    };
+
+	    /**
+	     * Clear the cache
+	     */
+	    LRUProto.clear = function () {
+	        this._list.clear();
+	        this._map = {};
+	    };
+
+	    module.exports = LRU;
+
+
+/***/ },
+/* 41 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
-	        var config = __webpack_require__(41);
+	        var config = __webpack_require__(42);
 
 	        /**
 	         * @exports zrender/tool/log
@@ -10991,7 +11492,7 @@
 
 
 /***/ },
-/* 41 */
+/* 42 */
 /***/ function(module, exports) {
 
 	
@@ -11023,7 +11524,7 @@
 
 
 /***/ },
-/* 42 */
+/* 43 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -11171,7 +11672,7 @@
 
 
 /***/ },
-/* 43 */
+/* 44 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -11179,9 +11680,9 @@
 
 	    var zrUtil = __webpack_require__(4);
 
-	    var pathTool = __webpack_require__(44);
+	    var pathTool = __webpack_require__(45);
 	    var round = Math.round;
-	    var Path = __webpack_require__(45);
+	    var Path = __webpack_require__(46);
 	    var colorTool = __webpack_require__(39);
 	    var matrix = __webpack_require__(11);
 	    var vector = __webpack_require__(10);
@@ -11190,7 +11691,7 @@
 
 	    graphic.Group = __webpack_require__(30);
 
-	    graphic.Image = __webpack_require__(61);
+	    graphic.Image = __webpack_require__(62);
 
 	    graphic.Text = __webpack_require__(63);
 
@@ -11524,7 +12025,8 @@
 	    }
 
 	    /**
-	     * Set hover style of element
+	     * Set hover style of element.
+	     * This method can be called repeatly without side-effects.
 	     * @param {module:zrender/Element} el
 	     * @param {Object} [hoverStyle]
 	     * @param {Object} [opt]
@@ -11757,14 +12259,14 @@
 
 
 /***/ },
-/* 44 */
+/* 45 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var Path = __webpack_require__(45);
-	    var PathProxy = __webpack_require__(49);
-	    var transformPath = __webpack_require__(60);
+	    var Path = __webpack_require__(46);
+	    var PathProxy = __webpack_require__(50);
+	    var transformPath = __webpack_require__(61);
 	    var matrix = __webpack_require__(11);
 
 	    // command chars
@@ -12165,7 +12667,7 @@
 
 
 /***/ },
-/* 45 */
+/* 46 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -12175,12 +12677,12 @@
 
 
 
-	    var Displayable = __webpack_require__(46);
+	    var Displayable = __webpack_require__(47);
 	    var zrUtil = __webpack_require__(4);
-	    var PathProxy = __webpack_require__(49);
-	    var pathContain = __webpack_require__(52);
+	    var PathProxy = __webpack_require__(50);
+	    var pathContain = __webpack_require__(53);
 
-	    var Pattern = __webpack_require__(59);
+	    var Pattern = __webpack_require__(60);
 	    var getCanvasPattern = Pattern.prototype.getCanvasPattern;
 
 	    var abs = Math.abs;
@@ -12530,7 +13032,7 @@
 
 
 /***/ },
-/* 46 */
+/* 47 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -12543,10 +13045,10 @@
 
 	    var zrUtil = __webpack_require__(4);
 
-	    var Style = __webpack_require__(47);
+	    var Style = __webpack_require__(48);
 
 	    var Element = __webpack_require__(31);
-	    var RectText = __webpack_require__(48);
+	    var RectText = __webpack_require__(49);
 	    // var Stateful = require('./mixin/Stateful');
 
 	    /**
@@ -12804,7 +13306,7 @@
 
 
 /***/ },
-/* 47 */
+/* 48 */
 /***/ function(module, exports) {
 
 	/**
@@ -13126,7 +13628,7 @@
 
 
 /***/ },
-/* 48 */
+/* 49 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -13268,8 +13770,9 @@
 	            }
 
 	            for (var i = 0; i < textLines.length; i++) {
-	                textFill && ctx.fillText(textLines[i], x, y);
+	                    // Fill after stroke so the outline will not cover the main part.
 	                textStroke && ctx.strokeText(textLines[i], x, y);
+	                textFill && ctx.fillText(textLines[i], x, y);
 	                y += textRect.lineHeight;
 	            }
 
@@ -13281,7 +13784,7 @@
 
 
 /***/ },
-/* 49 */
+/* 50 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -13296,11 +13799,11 @@
 	 // TODO getTotalLength, getPointAtLength
 
 
-	    var curve = __webpack_require__(50);
+	    var curve = __webpack_require__(51);
 	    var vec2 = __webpack_require__(10);
-	    var bbox = __webpack_require__(51);
+	    var bbox = __webpack_require__(52);
 	    var BoundingRect = __webpack_require__(9);
-	    var dpr = __webpack_require__(41).devicePixelRatio;
+	    var dpr = __webpack_require__(42).devicePixelRatio;
 
 	    var CMD = {
 	        M: 1,
@@ -14056,7 +14559,7 @@
 
 
 /***/ },
-/* 50 */
+/* 51 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -14602,7 +15105,7 @@
 
 
 /***/ },
-/* 51 */
+/* 52 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -14611,7 +15114,7 @@
 
 
 	    var vec2 = __webpack_require__(10);
-	    var curve = __webpack_require__(50);
+	    var curve = __webpack_require__(51);
 
 	    var bbox = {};
 	    var mathMin = Math.min;
@@ -14838,21 +15341,21 @@
 
 
 /***/ },
-/* 52 */
+/* 53 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
 
 
-	    var CMD = __webpack_require__(49).CMD;
-	    var line = __webpack_require__(53);
-	    var cubic = __webpack_require__(54);
-	    var quadratic = __webpack_require__(55);
-	    var arc = __webpack_require__(56);
-	    var normalizeRadian = __webpack_require__(57).normalizeRadian;
-	    var curve = __webpack_require__(50);
+	    var CMD = __webpack_require__(50).CMD;
+	    var line = __webpack_require__(54);
+	    var cubic = __webpack_require__(55);
+	    var quadratic = __webpack_require__(56);
+	    var arc = __webpack_require__(57);
+	    var normalizeRadian = __webpack_require__(58).normalizeRadian;
+	    var curve = __webpack_require__(51);
 
-	    var windingLine = __webpack_require__(58);
+	    var windingLine = __webpack_require__(59);
 
 	    var containStroke = line.containStroke;
 
@@ -15244,7 +15747,7 @@
 
 
 /***/ },
-/* 53 */
+/* 54 */
 /***/ function(module, exports) {
 
 	
@@ -15292,12 +15795,12 @@
 
 
 /***/ },
-/* 54 */
+/* 55 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var curve = __webpack_require__(50);
+	    var curve = __webpack_require__(51);
 
 	    module.exports = {
 	        /**
@@ -15339,12 +15842,12 @@
 
 
 /***/ },
-/* 55 */
+/* 56 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var curve = __webpack_require__(50);
+	    var curve = __webpack_require__(51);
 
 	    module.exports = {
 	        /**
@@ -15384,12 +15887,12 @@
 
 
 /***/ },
-/* 56 */
+/* 57 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var normalizeRadian = __webpack_require__(57).normalizeRadian;
+	    var normalizeRadian = __webpack_require__(58).normalizeRadian;
 	    var PI2 = Math.PI * 2;
 
 	    module.exports = {
@@ -15450,7 +15953,7 @@
 
 
 /***/ },
-/* 57 */
+/* 58 */
 /***/ function(module, exports) {
 
 	
@@ -15468,7 +15971,7 @@
 
 
 /***/ },
-/* 58 */
+/* 59 */
 /***/ function(module, exports) {
 
 	
@@ -15495,7 +15998,7 @@
 
 
 /***/ },
-/* 59 */
+/* 60 */
 /***/ function(module, exports) {
 
 	
@@ -15518,12 +16021,12 @@
 
 
 /***/ },
-/* 60 */
+/* 61 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var CMD = __webpack_require__(49).CMD;
+	    var CMD = __webpack_require__(50).CMD;
 	    var vec2 = __webpack_require__(10);
 	    var v2ApplyTransform = vec2.applyTransform;
 
@@ -15619,7 +16122,7 @@
 
 
 /***/ },
-/* 61 */
+/* 62 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -15629,11 +16132,11 @@
 
 
 
-	    var Displayable = __webpack_require__(46);
+	    var Displayable = __webpack_require__(47);
 	    var BoundingRect = __webpack_require__(9);
 	    var zrUtil = __webpack_require__(4);
 
-	    var LRU = __webpack_require__(62);
+	    var LRU = __webpack_require__(40);
 	    var globalImageCache = new LRU(50);
 	    /**
 	     * @alias zrender/graphic/Image
@@ -15708,19 +16211,30 @@
 	                // }
 	                // Else is canvas
 
-	                var width = style.width || image.width;
-	                var height = style.height || image.height;
 	                var x = style.x || 0;
 	                var y = style.y || 0;
 	                // 图片加载失败
 	                if (!image.width || !image.height) {
 	                    return;
 	                }
+	                var width = style.width;
+	                var height = style.height;
+	                var aspect = image.width / image.height;
+	                if (width == null && height != null) {
+	                    // Keep image/height ratio
+	                    width = height * aspect;
+	                }
+	                else if (height == null && width != null) {
+	                    height = width / aspect;
+	                }
+	                else if (width == null && height == null) {
+	                    width = image.width;
+	                    height = image.height;
+	                }
 
 	                // 设置transform
 	                this.setTransform(ctx);
 
-
 	                if (style.sWidth && style.sHeight) {
 	                    var sx = style.sx || 0;
 	                    var sy = style.sy || 0;
@@ -15745,14 +16259,6 @@
 	                    ctx.drawImage(image, x, y, width, height);
 	                }
 
-	                // 如果没设置宽和高的话自动根据图片宽高设置
-	                if (style.width == null) {
-	                    style.width = width;
-	                }
-	                if (style.height == null) {
-	                    style.height = height;
-	                }
-
 	                this.restoreTransform(ctx);
 
 	                // Draw rect text
@@ -15780,181 +16286,6 @@
 
 
 /***/ },
-/* 62 */
-/***/ function(module, exports) {
-
-	// Simple LRU cache use doubly linked list
-	// @module zrender/core/LRU
-
-
-	    /**
-	     * Simple double linked list. Compared with array, it has O(1) remove operation.
-	     * @constructor
-	     */
-	    var LinkedList = function() {
-
-	        /**
-	         * @type {module:zrender/core/LRU~Entry}
-	         */
-	        this.head = null;
-
-	        /**
-	         * @type {module:zrender/core/LRU~Entry}
-	         */
-	        this.tail = null;
-
-	        this._len = 0;
-	    };
-
-	    var linkedListProto = LinkedList.prototype;
-	    /**
-	     * Insert a new value at the tail
-	     * @param  {} val
-	     * @return {module:zrender/core/LRU~Entry}
-	     */
-	    linkedListProto.insert = function(val) {
-	        var entry = new Entry(val);
-	        this.insertEntry(entry);
-	        return entry;
-	    };
-
-	    /**
-	     * Insert an entry at the tail
-	     * @param  {module:zrender/core/LRU~Entry} entry
-	     */
-	    linkedListProto.insertEntry = function(entry) {
-	        if (!this.head) {
-	            this.head = this.tail = entry;
-	        }
-	        else {
-	            this.tail.next = entry;
-	            entry.prev = this.tail;
-	            this.tail = entry;
-	        }
-	        this._len++;
-	    };
-
-	    /**
-	     * Remove entry.
-	     * @param  {module:zrender/core/LRU~Entry} entry
-	     */
-	    linkedListProto.remove = function(entry) {
-	        var prev = entry.prev;
-	        var next = entry.next;
-	        if (prev) {
-	            prev.next = next;
-	        }
-	        else {
-	            // Is head
-	            this.head = next;
-	        }
-	        if (next) {
-	            next.prev = prev;
-	        }
-	        else {
-	            // Is tail
-	            this.tail = prev;
-	        }
-	        entry.next = entry.prev = null;
-	        this._len--;
-	    };
-
-	    /**
-	     * @return {number}
-	     */
-	    linkedListProto.len = function() {
-	        return this._len;
-	    };
-
-	    /**
-	     * @constructor
-	     * @param {} val
-	     */
-	    var Entry = function(val) {
-	        /**
-	         * @type {}
-	         */
-	        this.value = val;
-
-	        /**
-	         * @type {module:zrender/core/LRU~Entry}
-	         */
-	        this.next;
-
-	        /**
-	         * @type {module:zrender/core/LRU~Entry}
-	         */
-	        this.prev;
-	    };
-
-	    /**
-	     * LRU Cache
-	     * @constructor
-	     * @alias module:zrender/core/LRU
-	     */
-	    var LRU = function(maxSize) {
-
-	        this._list = new LinkedList();
-
-	        this._map = {};
-
-	        this._maxSize = maxSize || 10;
-	    };
-
-	    var LRUProto = LRU.prototype;
-
-	    /**
-	     * @param  {string} key
-	     * @param  {} value
-	     */
-	    LRUProto.put = function(key, value) {
-	        var list = this._list;
-	        var map = this._map;
-	        if (map[key] == null) {
-	            var len = list.len();
-	            if (len >= this._maxSize && len > 0) {
-	                // Remove the least recently used
-	                var leastUsedEntry = list.head;
-	                list.remove(leastUsedEntry);
-	                delete map[leastUsedEntry.key];
-	            }
-
-	            var entry = list.insert(value);
-	            entry.key = key;
-	            map[key] = entry;
-	        }
-	    };
-
-	    /**
-	     * @param  {string} key
-	     * @return {}
-	     */
-	    LRUProto.get = function(key) {
-	        var entry = this._map[key];
-	        var list = this._list;
-	        if (entry != null) {
-	            // Put the latest used entry in the tail
-	            if (entry !== list.tail) {
-	                list.remove(entry);
-	                list.insertEntry(entry);
-	            }
-
-	            return entry.value;
-	        }
-	    };
-
-	    /**
-	     * Clear the cache
-	     */
-	    LRUProto.clear = function() {
-	        this._list.clear();
-	        this._map = {};
-	    };
-
-	    module.exports = LRU;
-
-
-/***/ },
 /* 63 */
 /***/ function(module, exports, __webpack_require__) {
 
@@ -15969,7 +16300,7 @@
 
 
 
-	    var Displayable = __webpack_require__(46);
+	    var Displayable = __webpack_require__(47);
 	    var zrUtil = __webpack_require__(4);
 	    var textContain = __webpack_require__(8);
 
@@ -16037,6 +16368,7 @@
 	                if (ctx.textAlign !== textAlign) {
 	                    ctx.textAlign = 'left';
 	                }
+	                // FIXME in text contain default is top
 	                ctx.textBaseline = textBaseline || 'alphabetic';
 	                // Use canvas default alphabetic baseline
 	                if (ctx.textBaseline !== textBaseline) {
@@ -16047,8 +16379,9 @@
 
 	                var textLines = text.split('\n');
 	                for (var i = 0; i < textLines.length; i++) {
-	                    style.hasFill() && ctx.fillText(textLines[i], x, y);
+	                    // Fill after stroke so the outline will not cover the main part.
 	                    style.hasStroke() && ctx.strokeText(textLines[i], x, y);
+	                    style.hasFill() && ctx.fillText(textLines[i], x, y);
 	                    y += lineHeight;
 	                }
 
@@ -16057,8 +16390,8 @@
 	        },
 
 	        getBoundingRect: function () {
+	            var style = this.style;
 	            if (!this._rect) {
-	                var style = this.style;
 	                var textVerticalAlign = style.textVerticalAlign;
 	                var rect = textContain.getBoundingRect(
 	                    style.text + '', style.textFont || style.font, style.textAlign,
@@ -16074,8 +16407,16 @@
 	                }
 	                rect.x += style.x || 0;
 	                rect.y += style.y || 0;
+	                if (style.hasStroke()) {
+	                    var w = style.lineWidth;
+	                    rect.x -= w / 2;
+	                    rect.y -= w / 2;
+	                    rect.width += w;
+	                    rect.height += w;
+	                }
 	                this._rect = rect;
 	            }
+
 	            return this._rect;
 	        }
 	    };
@@ -16097,7 +16438,7 @@
 
 
 
-	    module.exports = __webpack_require__(45).extend({
+	    module.exports = __webpack_require__(46).extend({
 
 	        type: 'circle',
 
@@ -16134,7 +16475,7 @@
 
 
 	    var env = __webpack_require__(2);
-	    var Path = __webpack_require__(45);
+	    var Path = __webpack_require__(46);
 
 	    var shadowTemp = [
 	        ['shadowBlur', 0],
@@ -16251,7 +16592,7 @@
 	 */
 
 
-	    module.exports = __webpack_require__(45).extend({
+	    module.exports = __webpack_require__(46).extend({
 
 	        type: 'ring',
 
@@ -16287,7 +16628,7 @@
 
 	    var polyHelper = __webpack_require__(68);
 
-	    module.exports = __webpack_require__(45).extend({
+	    module.exports = __webpack_require__(46).extend({
 	        
 	        type: 'polygon',
 
@@ -16546,7 +16887,7 @@
 
 	    var polyHelper = __webpack_require__(68);
 
-	    module.exports = __webpack_require__(45).extend({
+	    module.exports = __webpack_require__(46).extend({
 	        
 	        type: 'polyline',
 
@@ -16582,7 +16923,7 @@
 
 	    var roundRectHelper = __webpack_require__(73);
 
-	    module.exports = __webpack_require__(45).extend({
+	    module.exports = __webpack_require__(46).extend({
 
 	        type: 'rect',
 
@@ -16722,7 +17063,7 @@
 	 * @module zrender/graphic/shape/Line
 	 */
 
-	    module.exports = __webpack_require__(45).extend({
+	    module.exports = __webpack_require__(46).extend({
 
 	        type: 'line',
 
@@ -16789,7 +17130,7 @@
 	 */
 
 
-	    var curveTool = __webpack_require__(50);
+	    var curveTool = __webpack_require__(51);
 	    var vec2 = __webpack_require__(10);
 	    var quadraticSubdivide = curveTool.quadraticSubdivide;
 	    var cubicSubdivide = curveTool.cubicSubdivide;
@@ -16816,7 +17157,7 @@
 	            ];
 	        }
 	    }
-	    module.exports = __webpack_require__(45).extend({
+	    module.exports = __webpack_require__(46).extend({
 
 	        type: 'bezier-curve',
 
@@ -16929,7 +17270,7 @@
 	 */
 	 
 
-	    module.exports = __webpack_require__(45).extend({
+	    module.exports = __webpack_require__(46).extend({
 
 	        type: 'arc',
 
@@ -16980,7 +17321,7 @@
 	// CompoundPath to improve performance
 
 
-	    var Path = __webpack_require__(45);
+	    var Path = __webpack_require__(46);
 	    module.exports = Path.extend({
 
 	        type: 'compound',
@@ -17341,7 +17682,7 @@
 	    /**
 	     * @type {string}
 	     */
-	    zrender.version = '3.3.0';
+	    zrender.version = '3.4.0';
 
 	    /**
 	     * Initializing a zrender instance
@@ -17428,6 +17769,7 @@
 	        var storage = new Storage();
 
 	        var rendererType = opts.renderer;
+	        // TODO WebGL
 	        if (useVML) {
 	            if (!painterCtors.vml) {
 	                throw new Error('You need to require \'zrender/vml/vml\' to support IE8');
@@ -17658,9 +18000,8 @@
 	         * @param {number} width
 	         * @param {number} height
 	         */
-	        pathToImage: function(e, width, height) {
-	            var id = guid();
-	            return this.painter.pathToImage(id, e, width, height);
+	        pathToImage: function(e, dpr) {
+	            return this.painter.pathToImage(e, dpr);
 	        },
 
 	        /**
@@ -19217,7 +19558,7 @@
 	            var deferredClips = [];
 	            for (var i = 0; i < len; i++) {
 	                var clip = clips[i];
-	                var e = clip.step(time);
+	                var e = clip.step(time, delta);
 	                // Throw out the events need to be called after
 	                // stage.update, like destroy
 	                if (e) {
@@ -20040,9 +20381,9 @@
 	 */
 	 
 
-	    var config = __webpack_require__(41);
+	    var config = __webpack_require__(42);
 	    var util = __webpack_require__(4);
-	    var log = __webpack_require__(40);
+	    var log = __webpack_require__(41);
 	    var BoundingRect = __webpack_require__(9);
 	    var timsort = __webpack_require__(86);
 
@@ -20065,7 +20406,7 @@
 	            return false;
 	        }
 
-	        if (layer.isBuildin) {
+	        if (layer.__builtin__) {
 	            return true;
 	        }
 
@@ -20219,6 +20560,12 @@
 	            root.appendChild(domRoot);
 	        }
 	        else {
+	            if (opts.width != null) {
+	                root.width = opts.width;
+	            }
+	            if (opts.height != null) {
+	                root.height = opts.height;
+	            }
 	            // Use canvas width and height directly
 	            var width = root.width;
 	            var height = root.height;
@@ -20237,8 +20584,6 @@
 	            this._domRoot = root;
 	        }
 
-	        this.pathToImage = this._createPathToImage();
-
 	        // Layers for progressive rendering
 	        this._progressiveLayers = [];
 
@@ -20285,7 +20630,7 @@
 	            for (var i = 0; i < zlevelList.length; i++) {
 	                var z = zlevelList[i];
 	                var layer = this._layers[z];
-	                if (!layer.isBuildin && layer.refresh) {
+	                if (!layer.__builtin__ && layer.refresh) {
 	                    layer.refresh();
 	                }
 	            }
@@ -20428,11 +20773,11 @@
 
 	            this._clearProgressive();
 
-	            this.eachBuildinLayer(preProcessLayer);
+	            this.eachBuiltinLayer(preProcessLayer);
 
 	            this._doPaintList(list, paintAll);
 
-	            this.eachBuildinLayer(postProcessLayer);
+	            this.eachBuiltinLayer(postProcessLayer);
 	        },
 
 	        _doPaintList: function (list, paintAll) {
@@ -20488,7 +20833,7 @@
 	                    currentZLevel = elZLevel;
 	                    currentLayer = this.getLayer(currentZLevel);
 
-	                    if (!currentLayer.isBuildin) {
+	                    if (!currentLayer.__builtin__) {
 	                        log(
 	                            'ZLevel ' + currentZLevel
 	                            + ' has been used by unkown layer ' + currentLayer.id
@@ -20633,7 +20978,7 @@
 	            if (!layer) {
 	                // Create a new layer
 	                layer = new Layer('zr_' + zlevel, this, this.dpr);
-	                layer.isBuildin = true;
+	                layer.__builtin__ = true;
 
 	                if (this._layerConfig[zlevel]) {
 	                    util.merge(layer, this._layerConfig[zlevel], true);
@@ -20681,28 +21026,33 @@
 	            }
 	            zlevelList.splice(i + 1, 0, zlevel);
 
-	            if (prevLayer) {
-	                var prevDom = prevLayer.dom;
-	                if (prevDom.nextSibling) {
-	                    domRoot.insertBefore(
-	                        layer.dom,
-	                        prevDom.nextSibling
-	                    );
-	                }
-	                else {
-	                    domRoot.appendChild(layer.dom);
-	                }
-	            }
-	            else {
-	                if (domRoot.firstChild) {
-	                    domRoot.insertBefore(layer.dom, domRoot.firstChild);
-	                }
-	                else {
-	                    domRoot.appendChild(layer.dom);
-	                }
-	            }
-
 	            layersMap[zlevel] = layer;
+
+	            // Vitual layer will not directly show on the screen.
+	            // (It can be a WebGL layer and assigned to a ZImage element)
+	            // But it still under management of zrender.
+	            if (!layer.virtual) {
+	                if (prevLayer) {
+	                    var prevDom = prevLayer.dom;
+	                    if (prevDom.nextSibling) {
+	                        domRoot.insertBefore(
+	                            layer.dom,
+	                            prevDom.nextSibling
+	                        );
+	                    }
+	                    else {
+	                        domRoot.appendChild(layer.dom);
+	                    }
+	                }
+	                else {
+	                    if (domRoot.firstChild) {
+	                        domRoot.insertBefore(layer.dom, domRoot.firstChild);
+	                    }
+	                    else {
+	                        domRoot.appendChild(layer.dom);
+	                    }
+	                }
+	            }
 	        },
 
 	        // Iterate each layer
@@ -20717,7 +21067,7 @@
 	        },
 
 	        // Iterate each buildin layer
-	        eachBuildinLayer: function (cb, context) {
+	        eachBuiltinLayer: function (cb, context) {
 	            var zlevelList = this._zlevelList;
 	            var layer;
 	            var z;
@@ -20725,7 +21075,7 @@
 	            for (i = 0; i < zlevelList.length; i++) {
 	                z = zlevelList[i];
 	                layer = this._layers[z];
-	                if (layer.isBuildin) {
+	                if (layer.__builtin__) {
 	                    cb.call(context, layer, z);
 	                }
 	            }
@@ -20740,7 +21090,7 @@
 	            for (i = 0; i < zlevelList.length; i++) {
 	                z = zlevelList[i];
 	                layer = this._layers[z];
-	                if (! layer.isBuildin) {
+	                if (!layer.__builtin__) {
 	                    cb.call(context, layer, z);
 	                }
 	            }
@@ -20762,7 +21112,7 @@
 	            var elCountsLastFrame = {};
 	            var progressiveElCountsLastFrame = {};
 
-	            this.eachBuildinLayer(function (layer, z) {
+	            this.eachBuiltinLayer(function (layer, z) {
 	                elCountsLastFrame[z] = layer.elCount;
 	                layer.elCount = 0;
 	                layer.__dirty = false;
@@ -20836,7 +21186,7 @@
 	            }
 
 	            // 层中的元素数量有发生变化
-	            this.eachBuildinLayer(function (layer, z) {
+	            this.eachBuiltinLayer(function (layer, z) {
 	                if (elCountsLastFrame[z] !== layer.elCount) {
 	                    layer.__dirty = true;
 	                }
@@ -20857,7 +21207,7 @@
 	         * 清除hover层外所有内容
 	         */
 	        clear: function () {
-	            this.eachBuildinLayer(this._clearLayer);
+	            this.eachBuiltinLayer(this._clearLayer);
 	            return this;
 	        },
 
@@ -21037,30 +21387,47 @@
 	            ) | 0;
 	        },
 
-	        _pathToImage: function (id, path, width, height, dpr) {
+	        pathToImage: function (path, dpr) {
+	            dpr = dpr || this.dpr;
+
 	            var canvas = document.createElement('canvas');
 	            var ctx = canvas.getContext('2d');
+	            var rect = path.getBoundingRect();
+	            var style = path.style;
+	            var shadowBlurSize = style.shadowBlur;
+	            var shadowOffsetX = style.shadowOffsetX;
+	            var shadowOffsetY = style.shadowOffsetY;
+	            var lineWidth = style.hasStroke() ? style.lineWidth : 0;
+
+	            var leftMargin = Math.max(lineWidth / 2, -shadowOffsetX + shadowBlurSize);
+	            var rightMargin = Math.max(lineWidth / 2, shadowOffsetX + shadowBlurSize);
+	            var topMargin = Math.max(lineWidth / 2, -shadowOffsetY + shadowBlurSize);
+	            var bottomMargin = Math.max(lineWidth / 2, shadowOffsetY + shadowBlurSize);
+	            var width = rect.width + leftMargin + rightMargin;
+	            var height = rect.height + topMargin + bottomMargin;
 
 	            canvas.width = width * dpr;
 	            canvas.height = height * dpr;
 
-	            ctx.clearRect(0, 0, width * dpr, height * dpr);
+	            ctx.scale(dpr, dpr);
+	            ctx.clearRect(0, 0, width, height);
+	            ctx.dpr = dpr;
 
 	            var pathTransform = {
 	                position: path.position,
 	                rotation: path.rotation,
 	                scale: path.scale
 	            };
-	            path.position = [0, 0, 0];
+	            path.position = [leftMargin - rect.x, topMargin - rect.y];
 	            path.rotation = 0;
 	            path.scale = [1, 1];
+	            path.updateTransform();
 	            if (path) {
 	                path.brush(ctx);
 	            }
 
-	            var ImageShape = __webpack_require__(61);
+	            var ImageShape = __webpack_require__(62);
 	            var imgShape = new ImageShape({
-	                id: id,
 	                style: {
 	                    x: 0,
 	                    y: 0,
@@ -21081,16 +21448,6 @@
 	            }
 
 	            return imgShape;
-	        },
-
-	        _createPathToImage: function () {
-	            var me = this;
-
-	            return function (id, e, width, height) {
-	                return me._pathToImage(
-	                    id, e, width, height, me.dpr
-	                );
-	            };
 	        }
 	    };
 
@@ -21109,9 +21466,9 @@
 
 
 	    var util = __webpack_require__(4);
-	    var config = __webpack_require__(41);
-	    var Style = __webpack_require__(47);
-	    var Pattern = __webpack_require__(59);
+	    var config = __webpack_require__(42);
+	    var Style = __webpack_require__(48);
+	    var Pattern = __webpack_require__(60);
 
 	    function returnFalse() {
 	        return false;
@@ -21570,7 +21927,7 @@
 
 	
 
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 	    var zrUtil = __webpack_require__(4);
 	    var PI = Math.PI;
 	    /**
@@ -21718,8 +22075,9 @@
 	     * @constructor
 	     * @alias module:echarts/data/List
 	     *
-	     * @param {Array.<string>} dimensions
-	     *        Dimensions should be concrete names like x, y, z, lng, lat, angle, radius
+	     * @param {Array.<string|Object>} dimensions
+	     *      For example, ['someDimName', {name: 'someDimName', type: 'someDimType'}, ...].
+	     *      Dimensions should be concrete names like x, y, z, lng, lat, angle, radius
 	     * @param {module:echarts/model/Model} hostModel
 	     */
 	    var List = function (dimensions, hostModel) {
@@ -22219,37 +22577,39 @@
 	     * @param {number} value
 	     * @param {boolean} stack If given value is after stacked
 	     * @param {number} [maxDistance=Infinity]
-	     * @return {number}
+	     * @return {Array.<number>} Considere multiple points has the same value.
 	     */
 	    listProto.indexOfNearest = function (dim, value, stack, maxDistance) {
 	        var storage = this._storage;
 	        var dimData = storage[dim];
+	        var nearestIndices = [];
+
+	        if (!dimData) {
+	            return nearestIndices;
+	        }
 
 	        if (maxDistance == null) {
 	            maxDistance = Infinity;
 	        }
 
-	        var nearestIdx = -1;
-	        if (dimData) {
-	            var minDist = Number.MAX_VALUE;
-	            for (var i = 0, len = this.count(); i < len; i++) {
-	                var diff = value - this.get(dim, i, stack);
-	                var dist = Math.abs(diff);
-	                if (
-	                    diff <= maxDistance
-	                    && (dist < minDist
-	                        // For the case of two data are same on xAxis, which has sequence data.
-	                        // Show the nearest index
-	                        // https://github.com/ecomfe/echarts/issues/2869
-	                        || (dist === minDist && diff > 0)
-	                    )
-	                ) {
+	        var minDist = Number.MAX_VALUE;
+	        var minDiff = -1;
+	        for (var i = 0, len = this.count(); i < len; i++) {
+	            var diff = value - this.get(dim, i, stack);
+	            var dist = Math.abs(diff);
+	            if (diff <= maxDistance && dist <= minDist) {
+	                // For the case of two data are same on xAxis, which has sequence data.
+	                // Show the nearest index
+	                // https://github.com/ecomfe/echarts/issues/2869
+	                if (dist < minDist || (diff >= 0 && minDiff < 0)) {
 	                    minDist = dist;
-	                    nearestIdx = i;
+	                    minDiff = diff;
+	                    nearestIndices.length = 0;
 	                }
+	                nearestIndices.push(i);
 	            }
 	        }
-	        return nearestIdx;
+	        return nearestIndices;
 	    };
 
 	    /**
@@ -22951,118 +23311,320 @@
 
 	
 
+	    var numberUtil = __webpack_require__(7);
+	    var linearMap = numberUtil.linearMap;
 	    var zrUtil = __webpack_require__(4);
-	    var echarts = __webpack_require__(1);
-	    var PRIORITY = echarts.PRIORITY;
 
-	    __webpack_require__(101);
-	    __webpack_require__(104);
+	    function fixExtentWithBands(extent, nTick) {
+	        var size = extent[1] - extent[0];
+	        var len = nTick;
+	        var margin = size / len / 2;
+	        extent[0] += margin;
+	        extent[1] -= margin;
+	    }
 
-	    echarts.registerVisual(zrUtil.curry(
-	        __webpack_require__(110), 'line', 'circle', 'line'
-	    ));
-	    echarts.registerLayout(zrUtil.curry(
-	        __webpack_require__(111), 'line'
-	    ));
+	    var normalizedExtent = [0, 1];
+	    /**
+	     * @name module:echarts/coord/CartesianAxis
+	     * @constructor
+	     */
+	    var Axis = function (dim, scale, extent) {
 
-	    // Down sample after filter
-	    echarts.registerProcessor(PRIORITY.PROCESSOR.STATISTIC, zrUtil.curry(
-	        __webpack_require__(112), 'line'
-	    ));
+	        /**
+	         * Axis dimension. Such as 'x', 'y', 'z', 'angle', 'radius'
+	         * @type {string}
+	         */
+	        this.dim = dim;
 
-	    // In case developer forget to include grid component
-	    __webpack_require__(113);
+	        /**
+	         * Axis scale
+	         * @type {module:echarts/coord/scale/*}
+	         */
+	        this.scale = scale;
+
+	        /**
+	         * @type {Array.<number>}
+	         * @private
+	         */
+	        this._extent = extent || [0, 0];
+
+	        /**
+	         * @type {boolean}
+	         */
+	        this.inverse = false;
+
+	        /**
+	         * Usually true when axis has a ordinal scale
+	         * @type {boolean}
+	         */
+	        this.onBand = false;
+	    };
+
+	    Axis.prototype = {
+
+	        constructor: Axis,
+
+	        /**
+	         * If axis extent contain given coord
+	         * @param {number} coord
+	         * @return {boolean}
+	         */
+	        contain: function (coord) {
+	            var extent = this._extent;
+	            var min = Math.min(extent[0], extent[1]);
+	            var max = Math.max(extent[0], extent[1]);
+	            return coord >= min && coord <= max;
+	        },
+
+	        /**
+	         * If axis extent contain given data
+	         * @param {number} data
+	         * @return {boolean}
+	         */
+	        containData: function (data) {
+	            return this.contain(this.dataToCoord(data));
+	        },
+
+	        /**
+	         * Get coord extent.
+	         * @return {Array.<number>}
+	         */
+	        getExtent: function () {
+	            var ret = this._extent.slice();
+	            return ret;
+	        },
+
+	        /**
+	         * Get precision used for formatting
+	         * @param {Array.<number>} [dataExtent]
+	         * @return {number}
+	         */
+	        getPixelPrecision: function (dataExtent) {
+	            return numberUtil.getPixelPrecision(
+	                dataExtent || this.scale.getExtent(),
+	                this._extent
+	            );
+	        },
+
+	        /**
+	         * Set coord extent
+	         * @param {number} start
+	         * @param {number} end
+	         */
+	        setExtent: function (start, end) {
+	            var extent = this._extent;
+	            extent[0] = start;
+	            extent[1] = end;
+	        },
+
+	        /**
+	         * Convert data to coord. Data is the rank if it has a ordinal scale
+	         * @param {number} data
+	         * @param  {boolean} clamp
+	         * @return {number}
+	         */
+	        dataToCoord: function (data, clamp) {
+	            var extent = this._extent;
+	            var scale = this.scale;
+	            data = scale.normalize(data);
+
+	            if (this.onBand && scale.type === 'ordinal') {
+	                extent = extent.slice();
+	                fixExtentWithBands(extent, scale.count());
+	            }
+
+	            return linearMap(data, normalizedExtent, extent, clamp);
+	        },
+
+	        /**
+	         * Convert coord to data. Data is the rank if it has a ordinal scale
+	         * @param {number} coord
+	         * @param  {boolean} clamp
+	         * @return {number}
+	         */
+	        coordToData: function (coord, clamp) {
+	            var extent = this._extent;
+	            var scale = this.scale;
+
+	            if (this.onBand && scale.type === 'ordinal') {
+	                extent = extent.slice();
+	                fixExtentWithBands(extent, scale.count());
+	            }
+
+	            var t = linearMap(coord, extent, normalizedExtent, clamp);
+
+	            return this.scale.scale(t);
+	        },
+
+	        /**
+	         * Convert pixel point to data in axis
+	         * @param {Array.<number>} point
+	         * @param  {boolean} clamp
+	         * @return {number} data
+	         */
+	        pointToData: function (point, clamp) {
+	            // Should be implemented in derived class if necessary.
+	        },
+
+	        /**
+	         * @return {Array.<number>}
+	         */
+	        getTicksCoords: function (alignWithLabel) {
+	            if (this.onBand && !alignWithLabel) {
+	                var bands = this.getBands();
+	                var coords = [];
+	                for (var i = 0; i < bands.length; i++) {
+	                    coords.push(bands[i][0]);
+	                }
+	                if (bands[i - 1]) {
+	                    coords.push(bands[i - 1][1]);
+	                }
+	                return coords;
+	            }
+	            else {
+	                return zrUtil.map(this.scale.getTicks(), this.dataToCoord, this);
+	            }
+	        },
+
+	        /**
+	         * Coords of labels are on the ticks or on the middle of bands
+	         * @return {Array.<number>}
+	         */
+	        getLabelsCoords: function () {
+	            return zrUtil.map(this.scale.getTicks(), this.dataToCoord, this);
+	        },
+
+	        /**
+	         * Get bands.
+	         *
+	         * If axis has labels [1, 2, 3, 4]. Bands on the axis are
+	         * |---1---|---2---|---3---|---4---|.
+	         *
+	         * @return {Array}
+	         */
+	         // FIXME Situation when labels is on ticks
+	        getBands: function () {
+	            var extent = this.getExtent();
+	            var bands = [];
+	            var len = this.scale.count();
+	            var start = extent[0];
+	            var end = extent[1];
+	            var span = end - start;
+
+	            for (var i = 0; i < len; i++) {
+	                bands.push([
+	                    span * i / len + start,
+	                    span * (i + 1) / len + start
+	                ]);
+	            }
+	            return bands;
+	        },
+
+	        /**
+	         * Get width of band
+	         * @return {number}
+	         */
+	        getBandWidth: function () {
+	            var axisExtent = this._extent;
+	            var dataExtent = this.scale.getExtent();
+
+	            var len = dataExtent[1] - dataExtent[0] + (this.onBand ? 1 : 0);
+	            // Fix #2728, avoid NaN when only one data.
+	            len === 0 && (len = 1);
+
+	            var size = Math.abs(axisExtent[1] - axisExtent[0]);
+
+	            return Math.abs(size) / len;
+	        }
+
+	    };
+
+	    module.exports = Axis;
 
 
 /***/ },
 /* 101 */
 /***/ function(module, exports, __webpack_require__) {
 
-	'use strict';
-
+	
 
 	    var createListFromArray = __webpack_require__(102);
-	    var SeriesModel = __webpack_require__(28);
+	    var symbolUtil = __webpack_require__(104);
+	    var axisHelper = __webpack_require__(105);
+	    var axisModelCommonMixin = __webpack_require__(111);
+	    var Model = __webpack_require__(12);
+	    var util = __webpack_require__(4);
 
-	    module.exports = SeriesModel.extend({
-
-	        type: 'series.line',
-
-	        dependencies: ['grid', 'polar'],
-
-	        getInitialData: function (option, ecModel) {
-	            if (true) {
-	                var coordSys = option.coordinateSystem;
-	                if (coordSys !== 'polar' && coordSys !== 'cartesian2d') {
-	                    throw new Error('Line not support coordinateSystem besides cartesian and polar');
-	                }
-	            }
-	            return createListFromArray(option.data, this, ecModel);
+	    module.exports = {
+	        /**
+	         * Create a muti dimension List structure from seriesModel.
+	         * @param  {module:echarts/model/Model} seriesModel
+	         * @return {module:echarts/data/List} list
+	         */
+	        createList: function (seriesModel) {
+	            var data = seriesModel.get('data');
+	            return createListFromArray(data, seriesModel, seriesModel.ecModel);
 	        },
 
-	        defaultOption: {
-	            zlevel: 0,                  // 一级层叠
-	            z: 2,                       // 二级层叠
-	            coordinateSystem: 'cartesian2d',
-	            legendHoverLink: true,
+	        /**
+	         * Complete the dimensions array guessed from the data structure.
+	         * @param  {Array.<string>} dimensions Necessary dimensions, like ['x', 'y']
+	         * @param  {Array} data Data list. [[1, 2, 3], [2, 3, 4]]
+	         * @param  {Object} [opt]
+	         * @param  {Array.<string>} [opt.defaultNames] Default names to fill not necessary dimensions, like ['value']
+	         * @param  {string} [opt.extraPrefix] Prefix of name when filling the left dimensions.
+	         * @param  {number} [opt.dimCount] If not specified, guess by the first data item.
+	         * @return {Array.<string>}
+	         */
+	        completeDimensions: __webpack_require__(103),
 
-	            hoverAnimation: true,
-	            // stack: null
-	            // xAxisIndex: 0,
-	            // yAxisIndex: 0,
+	        /**
+	         * Create a symbol element with given symbol configuration: shape, x, y, width, height, color
+	         * @see http://echarts.baidu.com/option.html#series-scatter.symbol
+	         * @param {string} symbolDesc
+	         * @param {number} x
+	         * @param {number} y
+	         * @param {number} w
+	         * @param {number} h
+	         * @param {string} color
+	         */
+	        createSymbol: symbolUtil.createSymbol,
 
-	            // polarIndex: 0,
+	        /**
+	         * Create scale
+	         * @param {Array.<number>} dataExtent
+	         * @param {Object|module:echarts/Model} option
+	         */
+	        createScale: function (dataExtent, option) {
+	            var axisModel = option;
+	            if (!(option instanceof Model)) {
+	                axisModel = new Model(option);
+	                util.mixin(axisModel, axisModelCommonMixin);
+	            }
 
-	            // If clip the overflow value
-	            clipOverflow: true,
+	            var scale = axisHelper.createScaleByModel(axisModel);
+	            scale.setExtent(dataExtent[0], dataExtent[1]);
 
-	            label: {
-	                normal: {
-	                    position: 'top'
-	                }
-	            },
-	            // itemStyle: {
-	            //     normal: {},
-	            //     emphasis: {}
-	            // },
-	            lineStyle: {
-	                normal: {
-	                    width: 2,
-	                    type: 'solid'
-	                }
-	            },
-	            // areaStyle: {},
-	            // false, 'start', 'end', 'middle'
-	            step: false,
+	            axisHelper.niceScaleExtent(scale, axisModel);
+	            return scale;
+	        },
 
-	            // Disabled if step is true
-	            smooth: false,
-	            smoothMonotone: null,
-	            // 拐点图形类型
-	            symbol: 'emptyCircle',
-	            // 拐点图形大小
-	            symbolSize: 4,
-	            // 拐点图形旋转控制
-	            symbolRotate: null,
-
-	            // 是否显示 symbol, 只有在 tooltip hover 的时候显示
-	            showSymbol: true,
-	            // 标志图形默认只有主轴显示(随主轴标签间隔隐藏策略)
-	            showAllSymbol: false,
-
-	            // 是否连接断点
-	            connectNulls: false,
-
-	            // 数据过滤,'average', 'max', 'min', 'sum'
-	            sampling: 'none',
-
-	            animationEasing: 'linear',
-
-	            // Disable progressive
-	            progressive: 0,
-	            hoverLayerThreshold: Infinity
+	        /**
+	         * Mixin common methods to axis model,
+	         *
+	         * Inlcude methods
+	         * `getFormattedLabels() => Array.<string>`
+	         * `getCategories() => Array.<string>`
+	         * `getMin(origin: boolean) => number`
+	         * `getMax(origin: boolean) => number`
+	         * `getNeedCrossZero() => boolean`
+	         * `setRange(start: number, end: number)`
+	         * `resetRange()`
+	         */
+	        mixinAxisModelCommonMethods: function (Model) {
+	            util.mixin(Model, axisModelCommonMixin);
 	        }
-	    });
+	    };
 
 
 /***/ },
@@ -23114,9 +23676,14 @@
 	        var dimensions = axesInfo && axesInfo.dimensions;
 	        if (!dimensions) {
 	            // Get dimensions from registered coordinate system
-	            dimensions = (registeredCoordSys && registeredCoordSys.dimensions) || ['x', 'y'];
-	            dimensions = completeDimensions(dimensions, data, dimensions.concat(['value']));
+	            dimensions = (registeredCoordSys && (
+	                registeredCoordSys.getDimensionsInfo
+	                    ? registeredCoordSys.getDimensionsInfo()
+	                    : registeredCoordSys.dimensions.slice()
+	            )) || ['x', 'y'];
+	            dimensions = completeDimensions(dimensions, data, {defaultNames: dimensions.concat(['value'])});
 	        }
+
 	        var categoryIndex = axesInfo ? axesInfo.categoryIndex : -1;
 
 	        var list = new List(dimensions, seriesModel);
@@ -23233,7 +23800,7 @@
 	            var isXAxisCateogry = xAxisType === 'category';
 	            var isYAxisCategory = yAxisType === 'category';
 
-	            completeDimensions(dimensions, data, ['x', 'y', 'z']);
+	            completeDimensions(dimensions, data, {defaultNames: ['x', 'y', 'z']});
 
 	            var categoryAxesModels = {};
 	            if (isXAxisCateogry) {
@@ -23323,7 +23890,7 @@
 	            var isAngleAxisCateogry = angleAxisType === 'category';
 	            var isRadiusAxisCateogry = radiusAxisType === 'category';
 
-	            completeDimensions(dimensions, data, ['radius', 'angle', 'value']);
+	            completeDimensions(dimensions, data, {defaultNames: ['radius', 'angle', 'value']});
 
 	            var categoryAxesModels = {};
 	            if (isRadiusAxisCateogry) {
@@ -23346,7 +23913,7 @@
 	                dimensions: completeDimensions([
 	                    {name: 'lng'},
 	                    {name: 'lat'}
-	                ], data, ['lng', 'lat', 'value'])
+	                ], data, {defaultNames: ['lng', 'lat', 'value']})
 	            };
 	        }
 	    };
@@ -23401,23 +23968,30 @@
 
 	    /**
 	     * Complete the dimensions array guessed from the data structure.
-	     * @param  {Array.<string>} dimensions      Necessary dimensions, like ['x', 'y']
-	     * @param  {Array} data                     Data list. [[1, 2, 3], [2, 3, 4]]
-	     * @param  {Array.<string>} [defaultNames]    Default names to fill not necessary dimensions, like ['value']
-	     * @param  {string} [extraPrefix]             Prefix of name when filling the left dimensions.
+	     * @param  {Array.<string>} dimensions Necessary dimensions, like ['x', 'y']
+	     * @param  {Array} data Data list. [[1, 2, 3], [2, 3, 4]]
+	     * @param  {Object} [opt]
+	     * @param  {Array.<string>} [opt.defaultNames] Default names to fill not necessary dimensions, like ['value']
+	     * @param  {string} [opt.extraPrefix] Prefix of name when filling the left dimensions.
+	     * @param  {number} [opt.dimCount] If not specified, guess by the first data item.
 	     * @return {Array.<string>}
 	     */
-	    function completeDimensions(dimensions, data, defaultNames, extraPrefix) {
+	    function completeDimensions(dimensions, data, opt) {
 	        if (!data) {
 	            return dimensions;
 	        }
 
-	        var value0 = retrieveValue(data[0]);
-	        var dimSize = zrUtil.isArray(value0) && value0.length || 1;
+	        opt = opt || {};
 
-	        defaultNames = defaultNames || [];
-	        extraPrefix = extraPrefix || 'extra';
-	        for (var i = 0; i < dimSize; i++) {
+	        var dimCount = opt.dimCount;
+	        if (dimCount == null) {
+	            var value0 = retrieveValue(data[0]);
+	            dimCount = zrUtil.isArray(value0) && value0.length || 1;
+	        }
+
+	        var defaultNames = opt.defaultNames || [];
+	        var extraPrefix = opt.extraPrefix || 'extra';
+	        for (var i = 0; i < dimCount; i++) {
 	            if (!dimensions[i]) {
 	                var name = defaultNames[i] || (extraPrefix + (i - defaultNames.length));
 	                dimensions[i] = guessOrdinal(data, i)
@@ -23463,17 +24037,1727 @@
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
+	// Symbol factory
+
+
+	    var graphic = __webpack_require__(44);
+	    var BoundingRect = __webpack_require__(9);
+
+	    /**
+	     * Triangle shape
+	     * @inner
+	     */
+	    var Triangle = graphic.extendShape({
+	        type: 'triangle',
+	        shape: {
+	            cx: 0,
+	            cy: 0,
+	            width: 0,
+	            height: 0
+	        },
+	        buildPath: function (path, shape) {
+	            var cx = shape.cx;
+	            var cy = shape.cy;
+	            var width = shape.width / 2;
+	            var height = shape.height / 2;
+	            path.moveTo(cx, cy - height);
+	            path.lineTo(cx + width, cy + height);
+	            path.lineTo(cx - width, cy + height);
+	            path.closePath();
+	        }
+	    });
+	    /**
+	     * Diamond shape
+	     * @inner
+	     */
+	    var Diamond = graphic.extendShape({
+	        type: 'diamond',
+	        shape: {
+	            cx: 0,
+	            cy: 0,
+	            width: 0,
+	            height: 0
+	        },
+	        buildPath: function (path, shape) {
+	            var cx = shape.cx;
+	            var cy = shape.cy;
+	            var width = shape.width / 2;
+	            var height = shape.height / 2;
+	            path.moveTo(cx, cy - height);
+	            path.lineTo(cx + width, cy);
+	            path.lineTo(cx, cy + height);
+	            path.lineTo(cx - width, cy);
+	            path.closePath();
+	        }
+	    });
+
+	    /**
+	     * Pin shape
+	     * @inner
+	     */
+	    var Pin = graphic.extendShape({
+	        type: 'pin',
+	        shape: {
+	            // x, y on the cusp
+	            x: 0,
+	            y: 0,
+	            width: 0,
+	            height: 0
+	        },
+
+	        buildPath: function (path, shape) {
+	            var x = shape.x;
+	            var y = shape.y;
+	            var w = shape.width / 5 * 3;
+	            // Height must be larger than width
+	            var h = Math.max(w, shape.height);
+	            var r = w / 2;
+
+	            // Dist on y with tangent point and circle center
+	            var dy = r * r / (h - r);
+	            var cy = y - h + r + dy;
+	            var angle = Math.asin(dy / r);
+	            // Dist on x with tangent point and circle center
+	            var dx = Math.cos(angle) * r;
+
+	            var tanX = Math.sin(angle);
+	            var tanY = Math.cos(angle);
+
+	            path.arc(
+	                x, cy, r,
+	                Math.PI - angle,
+	                Math.PI * 2 + angle
+	            );
+
+	            var cpLen = r * 0.6;
+	            var cpLen2 = r * 0.7;
+	            path.bezierCurveTo(
+	                x + dx - tanX * cpLen, cy + dy + tanY * cpLen,
+	                x, y - cpLen2,
+	                x, y
+	            );
+	            path.bezierCurveTo(
+	                x, y - cpLen2,
+	                x - dx + tanX * cpLen, cy + dy + tanY * cpLen,
+	                x - dx, cy + dy
+	            );
+	            path.closePath();
+	        }
+	    });
+
+	    /**
+	     * Arrow shape
+	     * @inner
+	     */
+	    var Arrow = graphic.extendShape({
+
+	        type: 'arrow',
+
+	        shape: {
+	            x: 0,
+	            y: 0,
+	            width: 0,
+	            height: 0
+	        },
+
+	        buildPath: function (ctx, shape) {
+	            var height = shape.height;
+	            var width = shape.width;
+	            var x = shape.x;
+	            var y = shape.y;
+	            var dx = width / 3 * 2;
+	            ctx.moveTo(x, y);
+	            ctx.lineTo(x + dx, y + height);
+	            ctx.lineTo(x, y + height / 4 * 3);
+	            ctx.lineTo(x - dx, y + height);
+	            ctx.lineTo(x, y);
+	            ctx.closePath();
+	        }
+	    });
+
+	    /**
+	     * Map of path contructors
+	     * @type {Object.<string, module:zrender/graphic/Path>}
+	     */
+	    var symbolCtors = {
+	        line: graphic.Line,
+
+	        rect: graphic.Rect,
+
+	        roundRect: graphic.Rect,
+
+	        square: graphic.Rect,
+
+	        circle: graphic.Circle,
+
+	        diamond: Diamond,
+
+	        pin: Pin,
+
+	        arrow: Arrow,
+
+	        triangle: Triangle
+	    };
+
+	    var symbolShapeMakers = {
+
+	        line: function (x, y, w, h, shape) {
+	            // FIXME
+	            shape.x1 = x;
+	            shape.y1 = y + h / 2;
+	            shape.x2 = x + w;
+	            shape.y2 = y + h / 2;
+	        },
+
+	        rect: function (x, y, w, h, shape) {
+	            shape.x = x;
+	            shape.y = y;
+	            shape.width = w;
+	            shape.height = h;
+	        },
+
+	        roundRect: function (x, y, w, h, shape) {
+	            shape.x = x;
+	            shape.y = y;
+	            shape.width = w;
+	            shape.height = h;
+	            shape.r = Math.min(w, h) / 4;
+	        },
+
+	        square: function (x, y, w, h, shape) {
+	            var size = Math.min(w, h);
+	            shape.x = x;
+	            shape.y = y;
+	            shape.width = size;
+	            shape.height = size;
+	        },
+
+	        circle: function (x, y, w, h, shape) {
+	            // Put circle in the center of square
+	            shape.cx = x + w / 2;
+	            shape.cy = y + h / 2;
+	            shape.r = Math.min(w, h) / 2;
+	        },
+
+	        diamond: function (x, y, w, h, shape) {
+	            shape.cx = x + w / 2;
+	            shape.cy = y + h / 2;
+	            shape.width = w;
+	            shape.height = h;
+	        },
+
+	        pin: function (x, y, w, h, shape) {
+	            shape.x = x + w / 2;
+	            shape.y = y + h / 2;
+	            shape.width = w;
+	            shape.height = h;
+	        },
+
+	        arrow: function (x, y, w, h, shape) {
+	            shape.x = x + w / 2;
+	            shape.y = y + h / 2;
+	            shape.width = w;
+	            shape.height = h;
+	        },
+
+	        triangle: function (x, y, w, h, shape) {
+	            shape.cx = x + w / 2;
+	            shape.cy = y + h / 2;
+	            shape.width = w;
+	            shape.height = h;
+	        }
+	    };
+
+	    var symbolBuildProxies = {};
+	    for (var name in symbolCtors) {
+	        if (symbolCtors.hasOwnProperty(name)) {
+	            symbolBuildProxies[name] = new symbolCtors[name]();
+	        }
+	    }
+
+	    var Symbol = graphic.extendShape({
+
+	        type: 'symbol',
+
+	        shape: {
+	            symbolType: '',
+	            x: 0,
+	            y: 0,
+	            width: 0,
+	            height: 0
+	        },
+
+	        beforeBrush: function () {
+	            var style = this.style;
+	            var shape = this.shape;
+	            // FIXME
+	            if (shape.symbolType === 'pin' && style.textPosition === 'inside') {
+	                style.textPosition = ['50%', '40%'];
+	                style.textAlign = 'center';
+	                style.textVerticalAlign = 'middle';
+	            }
+	        },
+
+	        buildPath: function (ctx, shape, inBundle) {
+	            var symbolType = shape.symbolType;
+	            var proxySymbol = symbolBuildProxies[symbolType];
+	            if (shape.symbolType !== 'none') {
+	                if (!proxySymbol) {
+	                    // Default rect
+	                    symbolType = 'rect';
+	                    proxySymbol = symbolBuildProxies[symbolType];
+	                }
+	                symbolShapeMakers[symbolType](
+	                    shape.x, shape.y, shape.width, shape.height, proxySymbol.shape
+	                );
+	                proxySymbol.buildPath(ctx, proxySymbol.shape, inBundle);
+	            }
+	        }
+	    });
+
+	    // Provide setColor helper method to avoid determine if set the fill or stroke outside
+	    var symbolPathSetColor = function (color) {
+	        if (this.type !== 'image') {
+	            var symbolStyle = this.style;
+	            var symbolShape = this.shape;
+	            if (symbolShape && symbolShape.symbolType === 'line') {
+	                symbolStyle.stroke = color;
+	            }
+	            else if (this.__isEmptyBrush) {
+	                symbolStyle.stroke = color;
+	                symbolStyle.fill = '#fff';
+	            }
+	            else {
+	                // FIXME 判断图形默认是填充还是描边,使用 onlyStroke ?
+	                symbolStyle.fill && (symbolStyle.fill = color);
+	                symbolStyle.stroke && (symbolStyle.stroke = color);
+	            }
+	            this.dirty(false);
+	        }
+	    };
+
+	    var symbolUtil = {
+	        /**
+	         * Create a symbol element with given symbol configuration: shape, x, y, width, height, color
+	         * @param {string} symbolType
+	         * @param {number} x
+	         * @param {number} y
+	         * @param {number} w
+	         * @param {number} h
+	         * @param {string} color
+	         */
+	        createSymbol: function (symbolType, x, y, w, h, color) {
+	            // TODO Support image object, DynamicImage.
+
+	            var isEmpty = symbolType.indexOf('empty') === 0;
+	            if (isEmpty) {
+	                symbolType = symbolType.substr(5, 1).toLowerCase() + symbolType.substr(6);
+	            }
+	            var symbolPath;
+
+	            if (symbolType.indexOf('image://') === 0) {
+	                symbolPath = new graphic.Image({
+	                    style: {
+	                        image: symbolType.slice(8),
+	                        x: x,
+	                        y: y,
+	                        width: w,
+	                        height: h
+	                    }
+	                });
+	            }
+	            else if (symbolType.indexOf('path://') === 0) {
+	                symbolPath = graphic.makePath(symbolType.slice(7), {}, new BoundingRect(x, y, w, h));
+	            }
+	            else {
+	                symbolPath = new Symbol({
+	                    shape: {
+	                        symbolType: symbolType,
+	                        x: x,
+	                        y: y,
+	                        width: w,
+	                        height: h
+	                    }
+	                });
+	            }
+
+	            symbolPath.__isEmptyBrush = isEmpty;
+
+	            symbolPath.setColor = symbolPathSetColor;
+
+	            symbolPath.setColor(color);
+
+	            return symbolPath;
+	        }
+	    };
+
+	    module.exports = symbolUtil;
+
+
+/***/ },
+/* 105 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+
+	    var OrdinalScale = __webpack_require__(106);
+	    var IntervalScale = __webpack_require__(108);
+	    __webpack_require__(109);
+	    __webpack_require__(110);
+	    var Scale = __webpack_require__(107);
+
+	    var numberUtil = __webpack_require__(7);
+	    var zrUtil = __webpack_require__(4);
+	    var textContain = __webpack_require__(8);
+	    var axisHelper = {};
+
+	    /**
+	     * Get axis scale extent before niced.
+	     * Item of returned array can only be number (including Infinity and NaN).
+	     */
+	    axisHelper.getScaleExtent = function (scale, model) {
+	        var scaleType = scale.type;
+
+	        var min = model.getMin();
+	        var max = model.getMax();
+	        var fixMin = min != null;
+	        var fixMax = max != null;
+	        var originalExtent = scale.getExtent();
+
+	        var axisDataLen;
+	        var boundaryGap;
+	        var span;
+	        if (scaleType === 'ordinal') {
+	            axisDataLen = (model.get('data') || []).length;
+	        }
+	        else {
+	            boundaryGap = model.get('boundaryGap');
+	            if (!zrUtil.isArray(boundaryGap)) {
+	                boundaryGap = [boundaryGap || 0, boundaryGap || 0];
+	            }
+	            boundaryGap[0] = numberUtil.parsePercent(boundaryGap[0], 1);
+	            boundaryGap[1] = numberUtil.parsePercent(boundaryGap[1], 1);
+	            span = originalExtent[1] - originalExtent[0];
+	        }
+
+	        if (min == null) {
+	            min = scaleType === 'ordinal'
+	                ? (axisDataLen ? 0 : NaN)
+	                : originalExtent[0] - boundaryGap[0] * span;
+	        }
+	        if (max == null) {
+	            max = scaleType === 'ordinal'
+	                ? (axisDataLen ? axisDataLen - 1 : NaN)
+	                : originalExtent[1] + boundaryGap[1] * span;
+	        }
+
+	        if (min === 'dataMin') {
+	            min = originalExtent[0];
+	        }
+	        if (max === 'dataMax') {
+	            max = originalExtent[1];
+	        }
+
+	        (min == null || !isFinite(min)) && (min = NaN);
+	        (max == null || !isFinite(max)) && (max = NaN);
+
+	        scale.setBlank(zrUtil.eqNaN(min) || zrUtil.eqNaN(max));
+
+	        // Evaluate if axis needs cross zero
+	        if (model.getNeedCrossZero()) {
+	            // Axis is over zero and min is not set
+	            if (min > 0 && max > 0 && !fixMin) {
+	                min = 0;
+	            }
+	            // Axis is under zero and max is not set
+	            if (min < 0 && max < 0 && !fixMax) {
+	                max = 0;
+	            }
+	        }
+
+	        return [min, max];
+	    };
+
+	    axisHelper.niceScaleExtent = function (scale, model) {
+	        var extent = axisHelper.getScaleExtent(scale, model);
+	        var fixMin = model.getMin() != null;
+	        var fixMax = model.getMax() != null;
+	        var splitNumber = model.get('splitNumber');
+
+	        if (scale.type === 'log') {
+	            scale.base = model.get('logBase');
+	        }
+
+	        scale.setExtent(extent[0], extent[1]);
+	        scale.niceExtent(splitNumber, fixMin, fixMax);
+
+	        // Use minInterval to constraint the calculated interval.
+	        // If calculated interval is less than minInterval. increase the interval quantity until
+	        // it is larger than minInterval.
+	        // For example:
+	        //  minInterval is 1, calculated interval is 0.2, so increase it to be 1. In this way we can get
+	        //  an integer axis.
+	        var minInterval = model.get('minInterval');
+	        if (isFinite(minInterval) && !fixMin && !fixMax && scale.type === 'interval') {
+	            var interval = scale.getInterval();
+	            var intervalScale = Math.max(Math.abs(interval), minInterval) / interval;
+	            // while (interval < minInterval) {
+	            //     var quantity = numberUtil.quantity(interval);
+	            //     interval = quantity * 10;
+	            //     scaleQuantity *= 10;
+	            // }
+	            extent = scale.getExtent();
+	            var origin = (extent[1] + extent[0]) / 2;
+	            scale.setExtent(
+	                intervalScale * (extent[0] - origin) + origin,
+	                intervalScale * (extent[1] - origin) + origin
+	            );
+	            scale.niceExtent(splitNumber);
+	        }
+
+	        // If some one specified the min, max. And the default calculated interval
+	        // is not good enough. He can specify the interval. It is often appeared
+	        // in angle axis with angle 0 - 360. Interval calculated in interval scale is hard
+	        // to be 60.
+	        // FIXME
+	        var interval = model.get('interval');
+	        if (interval != null) {
+	            scale.setInterval && scale.setInterval(interval);
+	        }
+	    };
+
+	    /**
+	     * @param {module:echarts/model/Model} model
+	     * @param {string} [axisType] Default retrieve from model.type
+	     * @return {module:echarts/scale/*}
+	     */
+	    axisHelper.createScaleByModel = function(model, axisType) {
+	        axisType = axisType || model.get('type');
+	        if (axisType) {
+	            switch (axisType) {
+	                // Buildin scale
+	                case 'category':
+	                    return new OrdinalScale(
+	                        model.getCategories(), [Infinity, -Infinity]
+	                    );
+	                case 'value':
+	                    return new IntervalScale();
+	                // Extended scale, like time and log
+	                default:
+	                    return (Scale.getClass(axisType) || IntervalScale).create(model);
+	            }
+	        }
+	    };
+
+	    /**
+	     * Check if the axis corss 0
+	     */
+	    axisHelper.ifAxisCrossZero = function (axis) {
+	        var dataExtent = axis.scale.getExtent();
+	        var min = dataExtent[0];
+	        var max = dataExtent[1];
+	        return !((min > 0 && max > 0) || (min < 0 && max < 0));
+	    };
+
+	    /**
+	     * @param {Array.<number>} tickCoords In axis self coordinate.
+	     * @param {Array.<string>} labels
+	     * @param {string} font
+	     * @param {boolean} isAxisHorizontal
+	     * @return {number}
+	     */
+	    axisHelper.getAxisLabelInterval = function (tickCoords, labels, font, isAxisHorizontal) {
+	        // FIXME
+	        // 不同角的axis和label,不只是horizontal和vertical.
+
+	        var textSpaceTakenRect;
+	        var autoLabelInterval = 0;
+	        var accumulatedLabelInterval = 0;
+
+	        var step = 1;
+	        if (labels.length > 40) {
+	            // Simple optimization for large amount of labels
+	            step = Math.floor(labels.length / 40);
+	        }
+
+	        for (var i = 0; i < tickCoords.length; i += step) {
+	            var tickCoord = tickCoords[i];
+	            var rect = textContain.getBoundingRect(
+	                labels[i], font, 'center', 'top'
+	            );
+	            rect[isAxisHorizontal ? 'x' : 'y'] += tickCoord;
+	            // FIXME Magic number 1.5
+	            rect[isAxisHorizontal ? 'width' : 'height'] *= 1.3;
+	            if (!textSpaceTakenRect) {
+	                textSpaceTakenRect = rect.clone();
+	            }
+	            // There is no space for current label;
+	            else if (textSpaceTakenRect.intersect(rect)) {
+	                accumulatedLabelInterval++;
+	                autoLabelInterval = Math.max(autoLabelInterval, accumulatedLabelInterval);
+	            }
+	            else {
+	                textSpaceTakenRect.union(rect);
+	                // Reset
+	                accumulatedLabelInterval = 0;
+	            }
+	        }
+	        if (autoLabelInterval === 0 && step > 1) {
+	            return step;
+	        }
+	        return (autoLabelInterval + 1) * step - 1;
+	    };
+
+	    /**
+	     * @param {Object} axis
+	     * @param {Function} labelFormatter
+	     * @return {Array.<string>}
+	     */
+	    axisHelper.getFormattedLabels = function (axis, labelFormatter) {
+	        var scale = axis.scale;
+	        var labels = scale.getTicksLabels();
+	        var ticks = scale.getTicks();
+	        if (typeof labelFormatter === 'string') {
+	            labelFormatter = (function (tpl) {
+	                return function (val) {
+	                    return tpl.replace('{value}', val != null ? val : '');
+	                };
+	            })(labelFormatter);
+	            // Consider empty array
+	            return zrUtil.map(labels, labelFormatter);
+	        }
+	        else if (typeof labelFormatter === 'function') {
+	            return zrUtil.map(ticks, function (tick, idx) {
+	                return labelFormatter(
+	                    axisHelper.getAxisRawValue(axis, tick),
+	                    idx
+	                );
+	            }, this);
+	        }
+	        else {
+	            return labels;
+	        }
+	    };
+
+	    axisHelper.getAxisRawValue = function (axis, value) {
+	        // In category axis with data zoom, tick is not the original
+	        // index of axis.data. So tick should not be exposed to user
+	        // in category axis.
+	        return axis.type === 'category' ? axis.scale.getLabel(value) : value;
+	    };
+
+	    module.exports = axisHelper;
+
+
+/***/ },
+/* 106 */
+/***/ function(module, exports, __webpack_require__) {
+
+	/**
+	 * Linear continuous scale
+	 * @module echarts/coord/scale/Ordinal
+	 *
+	 * http://en.wikipedia.org/wiki/Level_of_measurement
+	 */
+
+	// FIXME only one data
+
+
+	    var zrUtil = __webpack_require__(4);
+	    var Scale = __webpack_require__(107);
+
+	    var scaleProto = Scale.prototype;
+
+	    var OrdinalScale = Scale.extend({
+
+	        type: 'ordinal',
+
+	        init: function (data, extent) {
+	            this._data = data;
+	            this._extent = extent || [0, data.length - 1];
+	        },
+
+	        parse: function (val) {
+	            return typeof val === 'string'
+	                ? zrUtil.indexOf(this._data, val)
+	                // val might be float.
+	                : Math.round(val);
+	        },
+
+	        contain: function (rank) {
+	            rank = this.parse(rank);
+	            return scaleProto.contain.call(this, rank)
+	                && this._data[rank] != null;
+	        },
+
+	        /**
+	         * Normalize given rank or name to linear [0, 1]
+	         * @param {number|string} [val]
+	         * @return {number}
+	         */
+	        normalize: function (val) {
+	            return scaleProto.normalize.call(this, this.parse(val));
+	        },
+
+	        scale: function (val) {
+	            return Math.round(scaleProto.scale.call(this, val));
+	        },
+
+	        /**
+	         * @return {Array}
+	         */
+	        getTicks: function () {
+	            var ticks = [];
+	            var extent = this._extent;
+	            var rank = extent[0];
+
+	            while (rank <= extent[1]) {
+	                ticks.push(rank);
+	                rank++;
+	            }
+
+	            return ticks;
+	        },
+
+	        /**
+	         * Get item on rank n
+	         * @param {number} n
+	         * @return {string}
+	         */
+	        getLabel: function (n) {
+	            return this._data[n];
+	        },
+
+	        /**
+	         * @return {number}
+	         */
+	        count: function () {
+	            return this._extent[1] - this._extent[0] + 1;
+	        },
+
+	        /**
+	         * @override
+	         */
+	        unionExtentFromData: function (data, dim) {
+	            this.unionExtent(data.getDataExtent(dim, false));
+	        },
+
+	        niceTicks: zrUtil.noop,
+	        niceExtent: zrUtil.noop
+	    });
+
+	    /**
+	     * @return {module:echarts/scale/Time}
+	     */
+	    OrdinalScale.create = function () {
+	        return new OrdinalScale();
+	    };
+
+	    module.exports = OrdinalScale;
+
+
+/***/ },
+/* 107 */
+/***/ function(module, exports, __webpack_require__) {
+
+	/**
+	 * // Scale class management
+	 * @module echarts/scale/Scale
+	 */
+
+
+	    var clazzUtil = __webpack_require__(13);
+
+	    function Scale() {
+	        /**
+	         * Extent
+	         * @type {Array.<number>}
+	         * @protected
+	         */
+	        this._extent = [Infinity, -Infinity];
+
+	        /**
+	         * Step is calculated in adjustExtent
+	         * @type {Array.<number>}
+	         * @protected
+	         */
+	        this._interval = 0;
+
+	        this.init && this.init.apply(this, arguments);
+	    }
+
+	    var scaleProto = Scale.prototype;
+
+	    /**
+	     * Parse input val to valid inner number.
+	     * @param {*} val
+	     * @return {number}
+	     */
+	    scaleProto.parse = function (val) {
+	        // Notice: This would be a trap here, If the implementation
+	        // of this method depends on extent, and this method is used
+	        // before extent set (like in dataZoom), it would be wrong.
+	        // Nevertheless, parse does not depend on extent generally.
+	        return val;
+	    };
+
+	    scaleProto.contain = function (val) {
+	        var extent = this._extent;
+	        return val >= extent[0] && val <= extent[1];
+	    };
+
+	    /**
+	     * Normalize value to linear [0, 1], return 0.5 if extent span is 0
+	     * @param {number} val
+	     * @return {number}
+	     */
+	    scaleProto.normalize = function (val) {
+	        var extent = this._extent;
+	        if (extent[1] === extent[0]) {
+	            return 0.5;
+	        }
+	        return (val - extent[0]) / (extent[1] - extent[0]);
+	    };
+
+	    /**
+	     * Scale normalized value
+	     * @param {number} val
+	     * @return {number}
+	     */
+	    scaleProto.scale = function (val) {
+	        var extent = this._extent;
+	        return val * (extent[1] - extent[0]) + extent[0];
+	    };
+
+	    /**
+	     * Set extent from data
+	     * @param {Array.<number>} other
+	     */
+	    scaleProto.unionExtent = function (other) {
+	        var extent = this._extent;
+	        other[0] < extent[0] && (extent[0] = other[0]);
+	        other[1] > extent[1] && (extent[1] = other[1]);
+	        // not setExtent because in log axis it may transformed to power
+	        // this.setExtent(extent[0], extent[1]);
+	    };
+
+	    /**
+	     * Set extent from data
+	     * @param {module:echarts/data/List} data
+	     * @param {string} dim
+	     */
+	    scaleProto.unionExtentFromData = function (data, dim) {
+	        this.unionExtent(data.getDataExtent(dim, true));
+	    };
+
+	    /**
+	     * Get extent
+	     * @return {Array.<number>}
+	     */
+	    scaleProto.getExtent = function () {
+	        return this._extent.slice();
+	    };
+
+	    /**
+	     * Set extent
+	     * @param {number} start
+	     * @param {number} end
+	     */
+	    scaleProto.setExtent = function (start, end) {
+	        var thisExtent = this._extent;
+	        if (!isNaN(start)) {
+	            thisExtent[0] = start;
+	        }
+	        if (!isNaN(end)) {
+	            thisExtent[1] = end;
+	        }
+	    };
+
+	    /**
+	     * @return {Array.<string>}
+	     */
+	    scaleProto.getTicksLabels = function () {
+	        var labels = [];
+	        var ticks = this.getTicks();
+	        for (var i = 0; i < ticks.length; i++) {
+	            labels.push(this.getLabel(ticks[i]));
+	        }
+	        return labels;
+	    };
+
+	    /**
+	     * When axis extent depends on data and no data exists,
+	     * axis ticks should not be drawn, which is named 'blank'.
+	     */
+	    scaleProto.isBlank = function () {
+	        return this._isBlank;
+	    },
+
+	    /**
+	     * When axis extent depends on data and no data exists,
+	     * axis ticks should not be drawn, which is named 'blank'.
+	     */
+	    scaleProto.setBlank = function (isBlank) {
+	        this._isBlank = isBlank;
+	    };
+
+
+	    clazzUtil.enableClassExtend(Scale);
+	    clazzUtil.enableClassManagement(Scale, {
+	        registerWhenExtend: true
+	    });
+
+	    module.exports = Scale;
+
+
+/***/ },
+/* 108 */
+/***/ function(module, exports, __webpack_require__) {
+
+	/**
+	 * Interval scale
+	 * @module echarts/scale/Interval
+	 */
+
+
+
+	    var numberUtil = __webpack_require__(7);
+	    var formatUtil = __webpack_require__(6);
+	    var Scale = __webpack_require__(107);
+
+	    var mathFloor = Math.floor;
+	    var mathCeil = Math.ceil;
+
+	    var getPrecisionSafe = numberUtil.getPrecisionSafe;
+	    var roundingErrorFix = numberUtil.round;
+	    /**
+	     * @alias module:echarts/coord/scale/Interval
+	     * @constructor
+	     */
+	    var IntervalScale = Scale.extend({
+
+	        type: 'interval',
+
+	        _interval: 0,
+
+	        _intervalPrecision: 2,
+
+	        setExtent: function (start, end) {
+	            var thisExtent = this._extent;
+	            //start,end may be a Number like '25',so...
+	            if (!isNaN(start)) {
+	                thisExtent[0] = parseFloat(start);
+	            }
+	            if (!isNaN(end)) {
+	                thisExtent[1] = parseFloat(end);
+	            }
+	        },
+
+	        unionExtent: function (other) {
+	            var extent = this._extent;
+	            other[0] < extent[0] && (extent[0] = other[0]);
+	            other[1] > extent[1] && (extent[1] = other[1]);
+
+	            // unionExtent may called by it's sub classes
+	            IntervalScale.prototype.setExtent.call(this, extent[0], extent[1]);
+	        },
+	        /**
+	         * Get interval
+	         */
+	        getInterval: function () {
+	            if (!this._interval) {
+	                this.niceTicks();
+	            }
+	            return this._interval;
+	        },
+
+	        /**
+	         * Set interval
+	         */
+	        setInterval: function (interval) {
+	            this._interval = interval;
+	            // Dropped auto calculated niceExtent and use user setted extent
+	            // We assume user wan't to set both interval, min, max to get a better result
+	            this._niceExtent = this._extent.slice();
+	        },
+
+	        /**
+	         * @return {Array.<number>}
+	         */
+	        getTicks: function () {
+	            if (!this._interval) {
+	                this.niceTicks();
+	            }
+	            var interval = this._interval;
+	            var extent = this._extent;
+	            var ticks = [];
+
+	            // Consider this case: using dataZoom toolbox, zoom and zoom.
+	            var safeLimit = 10000;
+
+	            if (interval) {
+	                var niceExtent = this._niceExtent;
+	                var precision = this._intervalPrecision = getPrecisionSafe(interval);
+	                // FIXME
+	                precision += 2;
+
+	                if (extent[0] < niceExtent[0]) {
+	                    ticks.push(extent[0]);
+	                }
+	                var tick = niceExtent[0];
+
+	                while (tick <= niceExtent[1]) {
+	                    ticks.push(tick);
+	                    // Avoid rounding error
+	                    tick = roundingErrorFix(tick + interval, precision);
+	                    if (ticks.length > safeLimit) {
+	                        return [];
+	                    }
+	                }
+	                // Consider this case: the last item of ticks is smaller
+	                // than niceExtent[1] and niceExtent[1] === extent[1].
+	                if (extent[1] > (ticks.length ? ticks[ticks.length - 1] : niceExtent[1])) {
+	                    ticks.push(extent[1]);
+	                }
+	            }
+
+	            return ticks;
+	        },
+
+	        /**
+	         * @return {Array.<string>}
+	         */
+	        getTicksLabels: function () {
+	            var labels = [];
+	            var ticks = this.getTicks();
+	            for (var i = 0; i < ticks.length; i++) {
+	                labels.push(this.getLabel(ticks[i]));
+	            }
+	            return labels;
+	        },
+
+	        /**
+	         * @param {number} data
+	         * @param {Object} [opt]
+	         * @param {number|string} [opt.precision] If 'auto', use nice presision.
+	         * @param {boolean} [opt.pad] returns 1.50 but not 1.5 if precision is 2.
+	         * @return {number}
+	         */
+	        getLabel: function (data, opt) {
+	            var precision = opt && opt.precision;
+	            if (data != null && precision != null) {
+	                // Should be more precise then tick.
+	                precision === 'auto' && (precision = this._intervalPrecision + 2);
+	                data = roundingErrorFix(data, precision, opt && opt.pad);
+	            }
+	            return formatUtil.addCommas(data);
+	        },
+
+	        /**
+	         * Update interval and extent of intervals for nice ticks
+	         *
+	         * @param {number} [splitNumber = 5] Desired number of ticks
+	         */
+	        niceTicks: function (splitNumber) {
+	            splitNumber = splitNumber || 5;
+	            var extent = this._extent;
+	            var span = extent[1] - extent[0];
+	            if (!isFinite(span)) {
+	                return;
+	            }
+	            // User may set axis min 0 and data are all negative
+	            // FIXME If it needs to reverse ?
+	            if (span < 0) {
+	                span = -span;
+	                extent.reverse();
+	            }
+
+	            // From "Nice Numbers for Graph Labels" of Graphic Gems
+	            // var niceSpan = numberUtil.nice(span, false);
+	            var step = roundingErrorFix(
+	                numberUtil.nice(span / splitNumber, true),
+	                Math.max(
+	                    getPrecisionSafe(extent[0]),
+	                    getPrecisionSafe(extent[1])
+	                // extent may be [0, 1], and step should have 1 more digits.
+	                // To make it safe we add 2 more digits
+	                ) + 2
+	            );
+
+	            var precision = getPrecisionSafe(step) + 2;
+	            // Niced extent inside original extent
+	            var niceExtent = [
+	                roundingErrorFix(mathCeil(extent[0] / step) * step, precision),
+	                roundingErrorFix(mathFloor(extent[1] / step) * step, precision)
+	            ];
+
+	            this._interval = step;
+	            this._niceExtent = niceExtent;
+	        },
+
+	        /**
+	         * Nice extent.
+	         * @param {number} [splitNumber = 5] Given approx tick number
+	         * @param {boolean} [fixMin=false]
+	         * @param {boolean} [fixMax=false]
+	         */
+	        niceExtent: function (splitNumber, fixMin, fixMax) {
+	            var extent = this._extent;
+	            // If extent start and end are same, expand them
+	            if (extent[0] === extent[1]) {
+	                if (extent[0] !== 0) {
+	                    // Expand extent
+	                    var expandSize = extent[0];
+	                    // In the fowllowing case
+	                    //      Axis has been fixed max 100
+	                    //      Plus data are all 100 and axis extent are [100, 100].
+	                    // Extend to the both side will cause expanded max is larger than fixed max.
+	                    // So only expand to the smaller side.
+	                    if (!fixMax) {
+	                        extent[1] += expandSize / 2;
+	                        extent[0] -= expandSize / 2;
+	                    }
+	                    else {
+	                        extent[0] -= expandSize / 2;
+	                    }
+	                }
+	                else {
+	                    extent[1] = 1;
+	                }
+	            }
+	            var span = extent[1] - extent[0];
+	            // If there are no data and extent are [Infinity, -Infinity]
+	            if (!isFinite(span)) {
+	                extent[0] = 0;
+	                extent[1] = 1;
+	            }
+
+	            this.niceTicks(splitNumber);
+
+	            // var extent = this._extent;
+	            var interval = this._interval;
+
+	            if (!fixMin) {
+	                extent[0] = roundingErrorFix(mathFloor(extent[0] / interval) * interval);
+	            }
+	            if (!fixMax) {
+	                extent[1] = roundingErrorFix(mathCeil(extent[1] / interval) * interval);
+	            }
+	        }
+	    });
+
+	    /**
+	     * @return {module:echarts/scale/Time}
+	     */
+	    IntervalScale.create = function () {
+	        return new IntervalScale();
+	    };
+
+	    module.exports = IntervalScale;
+
+
+
+/***/ },
+/* 109 */
+/***/ function(module, exports, __webpack_require__) {
+
+	/**
+	 * Interval scale
+	 * @module echarts/coord/scale/Time
+	 */
+
+
+
+	    var zrUtil = __webpack_require__(4);
+	    var numberUtil = __webpack_require__(7);
+	    var formatUtil = __webpack_require__(6);
+
+	    var IntervalScale = __webpack_require__(108);
+
+	    var intervalScaleProto = IntervalScale.prototype;
+
+	    var mathCeil = Math.ceil;
+	    var mathFloor = Math.floor;
+	    var ONE_SECOND = 1000;
+	    var ONE_MINUTE = ONE_SECOND * 60;
+	    var ONE_HOUR = ONE_MINUTE * 60;
+	    var ONE_DAY = ONE_HOUR * 24;
+
+	    // FIXME 公用?
+	    var bisect = function (a, x, lo, hi) {
+	        while (lo < hi) {
+	            var mid = lo + hi >>> 1;
+	            if (a[mid][2] < x) {
+	                lo = mid + 1;
+	            }
+	            else {
+	                hi  = mid;
+	            }
+	        }
+	        return lo;
+	    };
+
+	    /**
+	     * @alias module:echarts/coord/scale/Time
+	     * @constructor
+	     */
+	    var TimeScale = IntervalScale.extend({
+	        type: 'time',
+
+	        // Overwrite
+	        getLabel: function (val) {
+	            var stepLvl = this._stepLvl;
+
+	            var date = new Date(val);
+
+	            return formatUtil.formatTime(stepLvl[0], date);
+	        },
+
+	        // Overwrite
+	        niceExtent: function (approxTickNum, fixMin, fixMax) {
+	            var extent = this._extent;
+	            // If extent start and end are same, expand them
+	            if (extent[0] === extent[1]) {
+	                // Expand extent
+	                extent[0] -= ONE_DAY;
+	                extent[1] += ONE_DAY;
+	            }
+	            // If there are no data and extent are [Infinity, -Infinity]
+	            if (extent[1] === -Infinity && extent[0] === Infinity) {
+	                var d = new Date();
+	                extent[1] = new Date(d.getFullYear(), d.getMonth(), d.getDate());
+	                extent[0] = extent[1] - ONE_DAY;
+	            }
+
+	            this.niceTicks(approxTickNum);
+
+	            // var extent = this._extent;
+	            var interval = this._interval;
+
+	            if (!fixMin) {
+	                extent[0] = numberUtil.round(mathFloor(extent[0] / interval) * interval);
+	            }
+	            if (!fixMax) {
+	                extent[1] = numberUtil.round(mathCeil(extent[1] / interval) * interval);
+	            }
+	        },
+
+	        // Overwrite
+	        niceTicks: function (approxTickNum) {
+	            approxTickNum = approxTickNum || 10;
+
+	            var extent = this._extent;
+	            var span = extent[1] - extent[0];
+	            var approxInterval = span / approxTickNum;
+	            var scaleLevelsLen = scaleLevels.length;
+	            var idx = bisect(scaleLevels, approxInterval, 0, scaleLevelsLen);
+
+	            var level = scaleLevels[Math.min(idx, scaleLevelsLen - 1)];
+	            var interval = level[2];
+	            // Same with interval scale if span is much larger than 1 year
+	            if (level[0] === 'year') {
+	                var yearSpan = span / interval;
+
+	                // From "Nice Numbers for Graph Labels" of Graphic Gems
+	                // var niceYearSpan = numberUtil.nice(yearSpan, false);
+	                var yearStep = numberUtil.nice(yearSpan / approxTickNum, true);
+
+	                interval *= yearStep;
+	            }
+
+	            var niceExtent = [
+	                mathCeil(extent[0] / interval) * interval,
+	                mathFloor(extent[1] / interval) * interval
+	            ];
+
+	            this._stepLvl = level;
+	            // Interval will be used in getTicks
+	            this._interval = interval;
+	            this._niceExtent = niceExtent;
+	        },
+
+	        parse: function (val) {
+	            // val might be float.
+	            return +numberUtil.parseDate(val);
+	        }
+	    });
+
+	    zrUtil.each(['contain', 'normalize'], function (methodName) {
+	        TimeScale.prototype[methodName] = function (val) {
+	            return intervalScaleProto[methodName].call(this, this.parse(val));
+	        };
+	    });
+
+	    // Steps from d3
+	    var scaleLevels = [
+	        // Format       step    interval
+	        ['hh:mm:ss',    1,      ONE_SECOND],           // 1s
+	        ['hh:mm:ss',    5,      ONE_SECOND * 5],       // 5s
+	        ['hh:mm:ss',    10,     ONE_SECOND * 10],      // 10s
+	        ['hh:mm:ss',    15,     ONE_SECOND * 15],      // 15s
+	        ['hh:mm:ss',    30,     ONE_SECOND * 30],      // 30s
+	        ['hh:mm\nMM-dd',1,      ONE_MINUTE],          // 1m
+	        ['hh:mm\nMM-dd',5,      ONE_MINUTE * 5],      // 5m
+	        ['hh:mm\nMM-dd',10,     ONE_MINUTE * 10],     // 10m
+	        ['hh:mm\nMM-dd',15,     ONE_MINUTE * 15],     // 15m
+	        ['hh:mm\nMM-dd',30,     ONE_MINUTE * 30],     // 30m
+	        ['hh:mm\nMM-dd',1,      ONE_HOUR],        // 1h
+	        ['hh:mm\nMM-dd',2,      ONE_HOUR * 2],    // 2h
+	        ['hh:mm\nMM-dd',6,      ONE_HOUR * 6],    // 6h
+	        ['hh:mm\nMM-dd',12,     ONE_HOUR * 12],   // 12h
+	        ['MM-dd\nyyyy', 1,      ONE_DAY],   // 1d
+	        ['week',        7,      ONE_DAY * 7],        // 7d
+	        ['month',       1,      ONE_DAY * 31],       // 1M
+	        ['quarter',     3,      ONE_DAY * 380 / 4],  // 3M
+	        ['half-year',   6,      ONE_DAY * 380 / 2],  // 6M
+	        ['year',        1,      ONE_DAY * 380]       // 1Y
+	    ];
+
+	    /**
+	     * @return {module:echarts/scale/Time}
+	     */
+	    TimeScale.create = function () {
+	        return new TimeScale();
+	    };
+
+	    module.exports = TimeScale;
+
+
+/***/ },
+/* 110 */
+/***/ function(module, exports, __webpack_require__) {
+
+	/**
+	 * Log scale
+	 * @module echarts/scale/Log
+	 */
+
+
+	    var zrUtil = __webpack_require__(4);
+	    var Scale = __webpack_require__(107);
+	    var numberUtil = __webpack_require__(7);
+
+	    // Use some method of IntervalScale
+	    var IntervalScale = __webpack_require__(108);
+
+	    var scaleProto = Scale.prototype;
+	    var intervalScaleProto = IntervalScale.prototype;
+
+	    var getPrecisionSafe = numberUtil.getPrecisionSafe;
+	    var roundingErrorFix = numberUtil.round;
+
+	    var mathFloor = Math.floor;
+	    var mathCeil = Math.ceil;
+	    var mathPow = Math.pow;
+
+	    var mathLog = Math.log;
+
+	    var LogScale = Scale.extend({
+
+	        type: 'log',
+
+	        base: 10,
+
+	        $constructor: function () {
+	            Scale.apply(this, arguments);
+	            this._originalScale = new IntervalScale();
+	        },
+
+	        /**
+	         * @return {Array.<number>}
+	         */
+	        getTicks: function () {
+	            var originalScale = this._originalScale;
+	            var extent = this._extent;
+	            var originalExtent = originalScale.getExtent();
+
+	            return zrUtil.map(intervalScaleProto.getTicks.call(this), function (val) {
+	                var powVal = numberUtil.round(mathPow(this.base, val));
+
+	                // Fix #4158
+	                powVal = (val === extent[0] && originalScale.__fixMin)
+	                    ? fixRoundingError(powVal, originalExtent[0])
+	                    : powVal;
+	                powVal = (val === extent[1] && originalScale.__fixMax)
+	                    ? fixRoundingError(powVal, originalExtent[1])
+	                    : powVal;
+
+	                return powVal;
+	            }, this);
+	        },
+
+	        /**
+	         * @param {number} val
+	         * @return {string}
+	         */
+	        getLabel: intervalScaleProto.getLabel,
+
+	        /**
+	         * @param  {number} val
+	         * @return {number}
+	         */
+	        scale: function (val) {
+	            val = scaleProto.scale.call(this, val);
+	            return mathPow(this.base, val);
+	        },
+
+	        /**
+	         * @param {number} start
+	         * @param {number} end
+	         */
+	        setExtent: function (start, end) {
+	            var base = this.base;
+	            start = mathLog(start) / mathLog(base);
+	            end = mathLog(end) / mathLog(base);
+	            intervalScaleProto.setExtent.call(this, start, end);
+	        },
+
+	        /**
+	         * @return {number} end
+	         */
+	        getExtent: function () {
+	            var base = this.base;
+	            var extent = scaleProto.getExtent.call(this);
+	            extent[0] = mathPow(base, extent[0]);
+	            extent[1] = mathPow(base, extent[1]);
+
+	            // Fix #4158
+	            var originalScale = this._originalScale;
+	            var originalExtent = originalScale.getExtent();
+	            originalScale.__fixMin && (extent[0] = fixRoundingError(extent[0], originalExtent[0]));
+	            originalScale.__fixMax && (extent[1] = fixRoundingError(extent[1], originalExtent[1]));
+
+	            return extent;
+	        },
+
+	        /**
+	         * @param  {Array.<number>} extent
+	         */
+	        unionExtent: function (extent) {
+	            this._originalScale.unionExtent(extent);
+
+	            var base = this.base;
+	            extent[0] = mathLog(extent[0]) / mathLog(base);
+	            extent[1] = mathLog(extent[1]) / mathLog(base);
+	            scaleProto.unionExtent.call(this, extent);
+	        },
+
+	        /**
+	         * @override
+	         */
+	        unionExtentFromData: function (data, dim) {
+	            this.unionExtent(data.getDataExtent(dim, true, function (val) {
+	                return val > 0;
+	            }));
+	        },
+
+	        /**
+	         * Update interval and extent of intervals for nice ticks
+	         * @param  {number} [approxTickNum = 10] Given approx tick number
+	         */
+	        niceTicks: function (approxTickNum) {
+	            approxTickNum = approxTickNum || 10;
+	            var extent = this._extent;
+	            var span = extent[1] - extent[0];
+	            if (span === Infinity || span <= 0) {
+	                return;
+	            }
+
+	            var interval = numberUtil.quantity(span);
+	            var err = approxTickNum / span * interval;
+
+	            // Filter ticks to get closer to the desired count.
+	            if (err <= 0.5) {
+	                interval *= 10;
+	            }
+
+	            // Interval should be integer
+	            while (!isNaN(interval) && Math.abs(interval) < 1 && Math.abs(interval) > 0) {
+	                interval *= 10;
+	            }
+
+	            var niceExtent = [
+	                numberUtil.round(mathCeil(extent[0] / interval) * interval),
+	                numberUtil.round(mathFloor(extent[1] / interval) * interval)
+	            ];
+
+	            this._interval = interval;
+	            this._niceExtent = niceExtent;
+	        },
+
+	        /**
+	         * Nice extent.
+	         * @param {number} [approxTickNum = 10] Given approx tick number
+	         * @param {boolean} [fixMin=false]
+	         * @param {boolean} [fixMax=false]
+	         */
+	        niceExtent: function (splitNumber, fixMin, fixMax) {
+	            intervalScaleProto.niceExtent.call(this, splitNumber, fixMin, fixMax);
+
+	            var originalScale = this._originalScale;
+	            originalScale.__fixMin = fixMin;
+	            originalScale.__fixMax = fixMax;
+	        }
+
+	    });
+
+	    zrUtil.each(['contain', 'normalize'], function (methodName) {
+	        LogScale.prototype[methodName] = function (val) {
+	            val = mathLog(val) / mathLog(this.base);
+	            return scaleProto[methodName].call(this, val);
+	        };
+	    });
+
+	    LogScale.create = function () {
+	        return new LogScale();
+	    };
+
+	    function fixRoundingError(val, originalVal) {
+	        return roundingErrorFix(val, getPrecisionSafe(originalVal));
+	    }
+
+	    module.exports = LogScale;
+
+
+/***/ },
+/* 111 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+
+	    var zrUtil = __webpack_require__(4);
+	    var axisHelper = __webpack_require__(105);
+
+	    function getName(obj) {
+	        if (zrUtil.isObject(obj) && obj.value != null) {
+	            return obj.value;
+	        }
+	        else {
+	            return obj;
+	        }
+	    }
+
+	    module.exports = {
+
+	        /**
+	         * Format labels
+	         * @return {Array.<string>}
+	         */
+	        getFormattedLabels: function () {
+	            return axisHelper.getFormattedLabels(
+	                this.axis,
+	                this.get('axisLabel.formatter')
+	            );
+	        },
+
+	        /**
+	         * Get categories
+	         */
+	        getCategories: function () {
+	            return this.get('type') === 'category'
+	                && zrUtil.map(this.get('data'), getName);
+	        },
+
+	        /**
+	         * @param {boolean} origin
+	         * @return {number|string} min value or 'dataMin' or null/undefined (means auto) or NaN
+	         */
+	        getMin: function (origin) {
+	            var option = this.option;
+	            var min = (!origin && option.rangeStart != null)
+	                ? option.rangeStart : option.min;
+
+	            if (this.axis && min != null && min !== 'dataMin' && !zrUtil.eqNaN(min)) {
+	                min = this.axis.scale.parse(min);
+	            }
+	            return min;
+	        },
+
+	        /**
+	         * @param {boolean} origin
+	         * @return {number|string} max value or 'dataMax' or null/undefined (means auto) or NaN
+	         */
+	        getMax: function (origin) {
+	            var option = this.option;
+	            var max = (!origin && option.rangeEnd != null)
+	                ? option.rangeEnd : option.max;
+
+	            if (this.axis && max != null && max !== 'dataMax' && !zrUtil.eqNaN(max)) {
+	                max = this.axis.scale.parse(max);
+	            }
+	            return max;
+	        },
+
+	        /**
+	         * @return {boolean}
+	         */
+	        getNeedCrossZero: function () {
+	            var option = this.option;
+	            return (option.rangeStart != null || option.rangeEnd != null)
+	                ? false : !option.scale;
+	        },
+
+	        /**
+	         * Should be implemented by each axis model if necessary.
+	         * @return {module:echarts/model/Component} coordinate system model
+	         */
+	        getCoordSysModel: zrUtil.noop,
+
+	        /**
+	         * @param {number} rangeStart Can only be finite number or null/undefined or NaN.
+	         * @param {number} rangeEnd Can only be finite number or null/undefined or NaN.
+	         */
+	        setRange: function (rangeStart, rangeEnd) {
+	            this.option.rangeStart = rangeStart;
+	            this.option.rangeEnd = rangeEnd;
+	        },
+
+	        /**
+	         * Reset range
+	         */
+	        resetRange: function () {
+	            // rangeStart and rangeEnd is readonly.
+	            this.option.rangeStart = this.option.rangeEnd = null;
+	        }
+	    };
+
+
+/***/ },
+/* 112 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+
+	    var zrUtil = __webpack_require__(4);
+	    var echarts = __webpack_require__(1);
+	    var PRIORITY = echarts.PRIORITY;
+
+	    __webpack_require__(113);
+	    __webpack_require__(114);
+
+	    echarts.registerVisual(zrUtil.curry(
+	        __webpack_require__(119), 'line', 'circle', 'line'
+	    ));
+	    echarts.registerLayout(zrUtil.curry(
+	        __webpack_require__(120), 'line'
+	    ));
+
+	    // Down sample after filter
+	    echarts.registerProcessor(PRIORITY.PROCESSOR.STATISTIC, zrUtil.curry(
+	        __webpack_require__(121), 'line'
+	    ));
+
+	    // In case developer forget to include grid component
+	    __webpack_require__(122);
+
+
+/***/ },
+/* 113 */
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+
+	    var createListFromArray = __webpack_require__(102);
+	    var SeriesModel = __webpack_require__(28);
+
+	    module.exports = SeriesModel.extend({
+
+	        type: 'series.line',
+
+	        dependencies: ['grid', 'polar'],
+
+	        getInitialData: function (option, ecModel) {
+	            if (true) {
+	                var coordSys = option.coordinateSystem;
+	                if (coordSys !== 'polar' && coordSys !== 'cartesian2d') {
+	                    throw new Error('Line not support coordinateSystem besides cartesian and polar');
+	                }
+	            }
+	            return createListFromArray(option.data, this, ecModel);
+	        },
+
+	        defaultOption: {
+	            zlevel: 0,                  // 一级层叠
+	            z: 2,                       // 二级层叠
+	            coordinateSystem: 'cartesian2d',
+	            legendHoverLink: true,
+
+	            hoverAnimation: true,
+	            // stack: null
+	            // xAxisIndex: 0,
+	            // yAxisIndex: 0,
+
+	            // polarIndex: 0,
+
+	            // If clip the overflow value
+	            clipOverflow: true,
+
+	            label: {
+	                normal: {
+	                    position: 'top'
+	                }
+	            },
+	            // itemStyle: {
+	            //     normal: {},
+	            //     emphasis: {}
+	            // },
+	            lineStyle: {
+	                normal: {
+	                    width: 2,
+	                    type: 'solid'
+	                }
+	            },
+	            // areaStyle: {},
+	            // false, 'start', 'end', 'middle'
+	            step: false,
+
+	            // Disabled if step is true
+	            smooth: false,
+	            smoothMonotone: null,
+	            // 拐点图形类型
+	            symbol: 'emptyCircle',
+	            // 拐点图形大小
+	            symbolSize: 4,
+	            // 拐点图形旋转控制
+	            symbolRotate: null,
+
+	            // 是否显示 symbol, 只有在 tooltip hover 的时候显示
+	            showSymbol: true,
+	            // 标志图形默认只有主轴显示(随主轴标签间隔隐藏策略)
+	            showAllSymbol: false,
+
+	            // 是否连接断点
+	            connectNulls: false,
+
+	            // 数据过滤,'average', 'max', 'min', 'sum'
+	            sampling: 'none',
+
+	            animationEasing: 'linear',
+
+	            // Disable progressive
+	            progressive: 0,
+	            hoverLayerThreshold: Infinity
+	        }
+	    });
+
+
+/***/ },
+/* 114 */
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
 	// FIXME step not support polar
 
 
 	    var zrUtil = __webpack_require__(4);
-	    var SymbolDraw = __webpack_require__(105);
-	    var Symbol = __webpack_require__(106);
-	    var lineAnimationDiff = __webpack_require__(108);
-	    var graphic = __webpack_require__(43);
+	    var SymbolDraw = __webpack_require__(115);
+	    var Symbol = __webpack_require__(116);
+	    var lineAnimationDiff = __webpack_require__(117);
+	    var graphic = __webpack_require__(44);
 	    var modelUtil = __webpack_require__(5);
-	    var polyHelper = __webpack_require__(109);
-	    var ChartView = __webpack_require__(42);
+	    var polyHelper = __webpack_require__(118);
+	    var ChartView = __webpack_require__(43);
 
 	    function isPointsSame(points1, points2) {
 	        if (points1.length !== points2.length) {
@@ -23993,6 +26277,8 @@
 	                }
 	            }
 	            else {
+	                // FIXME
+	                // can not downplay completely.
 	                // Downplay whole series
 	                ChartView.prototype.downplay.call(
 	                    this, seriesModel, ecModel, api, payload
@@ -24165,7 +26451,7 @@
 
 
 /***/ },
-/* 105 */
+/* 115 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -24173,8 +26459,8 @@
 	 */
 
 
-	    var graphic = __webpack_require__(43);
-	    var Symbol = __webpack_require__(106);
+	    var graphic = __webpack_require__(44);
+	    var Symbol = __webpack_require__(116);
 
 	    /**
 	     * @constructor
@@ -24297,7 +26583,7 @@
 
 
 /***/ },
-/* 106 */
+/* 116 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -24306,8 +26592,8 @@
 
 
 	    var zrUtil = __webpack_require__(4);
-	    var symbolUtil = __webpack_require__(107);
-	    var graphic = __webpack_require__(43);
+	    var symbolUtil = __webpack_require__(104);
+	    var graphic = __webpack_require__(44);
 	    var numberUtil = __webpack_require__(7);
 
 	    function getSymbolSize(data, idx) {
@@ -24443,6 +26729,7 @@
 	        }
 	        else {
 	            var symbolPath = this.childAt(0);
+	            symbolPath.silent = false;
 	            graphic.updateProps(symbolPath, {
 	                scale: getScale(symbolSize)
 	            }, seriesModel, idx);
@@ -24587,7 +26874,7 @@
 	    symbolProto.fadeOut = function (cb) {
 	        var symbolPath = this.childAt(0);
 	        // Avoid mistaken hover when fading out
-	        this.silent = true;
+	        this.silent = symbolPath.silent = true;
 	        // Not show text when animating
 	        symbolPath.style.text = '';
 	        graphic.updateProps(symbolPath, {
@@ -24601,367 +26888,7 @@
 
 
 /***/ },
-/* 107 */
-/***/ function(module, exports, __webpack_require__) {
-
-	'use strict';
-	// Symbol factory
-
-
-	    var graphic = __webpack_require__(43);
-	    var BoundingRect = __webpack_require__(9);
-
-	    /**
-	     * Triangle shape
-	     * @inner
-	     */
-	    var Triangle = graphic.extendShape({
-	        type: 'triangle',
-	        shape: {
-	            cx: 0,
-	            cy: 0,
-	            width: 0,
-	            height: 0
-	        },
-	        buildPath: function (path, shape) {
-	            var cx = shape.cx;
-	            var cy = shape.cy;
-	            var width = shape.width / 2;
-	            var height = shape.height / 2;
-	            path.moveTo(cx, cy - height);
-	            path.lineTo(cx + width, cy + height);
-	            path.lineTo(cx - width, cy + height);
-	            path.closePath();
-	        }
-	    });
-	    /**
-	     * Diamond shape
-	     * @inner
-	     */
-	    var Diamond = graphic.extendShape({
-	        type: 'diamond',
-	        shape: {
-	            cx: 0,
-	            cy: 0,
-	            width: 0,
-	            height: 0
-	        },
-	        buildPath: function (path, shape) {
-	            var cx = shape.cx;
-	            var cy = shape.cy;
-	            var width = shape.width / 2;
-	            var height = shape.height / 2;
-	            path.moveTo(cx, cy - height);
-	            path.lineTo(cx + width, cy);
-	            path.lineTo(cx, cy + height);
-	            path.lineTo(cx - width, cy);
-	            path.closePath();
-	        }
-	    });
-
-	    /**
-	     * Pin shape
-	     * @inner
-	     */
-	    var Pin = graphic.extendShape({
-	        type: 'pin',
-	        shape: {
-	            // x, y on the cusp
-	            x: 0,
-	            y: 0,
-	            width: 0,
-	            height: 0
-	        },
-
-	        buildPath: function (path, shape) {
-	            var x = shape.x;
-	            var y = shape.y;
-	            var w = shape.width / 5 * 3;
-	            // Height must be larger than width
-	            var h = Math.max(w, shape.height);
-	            var r = w / 2;
-
-	            // Dist on y with tangent point and circle center
-	            var dy = r * r / (h - r);
-	            var cy = y - h + r + dy;
-	            var angle = Math.asin(dy / r);
-	            // Dist on x with tangent point and circle center
-	            var dx = Math.cos(angle) * r;
-
-	            var tanX = Math.sin(angle);
-	            var tanY = Math.cos(angle);
-
-	            path.arc(
-	                x, cy, r,
-	                Math.PI - angle,
-	                Math.PI * 2 + angle
-	            );
-
-	            var cpLen = r * 0.6;
-	            var cpLen2 = r * 0.7;
-	            path.bezierCurveTo(
-	                x + dx - tanX * cpLen, cy + dy + tanY * cpLen,
-	                x, y - cpLen2,
-	                x, y
-	            );
-	            path.bezierCurveTo(
-	                x, y - cpLen2,
-	                x - dx + tanX * cpLen, cy + dy + tanY * cpLen,
-	                x - dx, cy + dy
-	            );
-	            path.closePath();
-	        }
-	    });
-
-	    /**
-	     * Arrow shape
-	     * @inner
-	     */
-	    var Arrow = graphic.extendShape({
-
-	        type: 'arrow',
-
-	        shape: {
-	            x: 0,
-	            y: 0,
-	            width: 0,
-	            height: 0
-	        },
-
-	        buildPath: function (ctx, shape) {
-	            var height = shape.height;
-	            var width = shape.width;
-	            var x = shape.x;
-	            var y = shape.y;
-	            var dx = width / 3 * 2;
-	            ctx.moveTo(x, y);
-	            ctx.lineTo(x + dx, y + height);
-	            ctx.lineTo(x, y + height / 4 * 3);
-	            ctx.lineTo(x - dx, y + height);
-	            ctx.lineTo(x, y);
-	            ctx.closePath();
-	        }
-	    });
-
-	    /**
-	     * Map of path contructors
-	     * @type {Object.<string, module:zrender/graphic/Path>}
-	     */
-	    var symbolCtors = {
-	        line: graphic.Line,
-
-	        rect: graphic.Rect,
-
-	        roundRect: graphic.Rect,
-
-	        square: graphic.Rect,
-
-	        circle: graphic.Circle,
-
-	        diamond: Diamond,
-
-	        pin: Pin,
-
-	        arrow: Arrow,
-
-	        triangle: Triangle
-	    };
-
-	    var symbolShapeMakers = {
-
-	        line: function (x, y, w, h, shape) {
-	            // FIXME
-	            shape.x1 = x;
-	            shape.y1 = y + h / 2;
-	            shape.x2 = x + w;
-	            shape.y2 = y + h / 2;
-	        },
-
-	        rect: function (x, y, w, h, shape) {
-	            shape.x = x;
-	            shape.y = y;
-	            shape.width = w;
-	            shape.height = h;
-	        },
-
-	        roundRect: function (x, y, w, h, shape) {
-	            shape.x = x;
-	            shape.y = y;
-	            shape.width = w;
-	            shape.height = h;
-	            shape.r = Math.min(w, h) / 4;
-	        },
-
-	        square: function (x, y, w, h, shape) {
-	            var size = Math.min(w, h);
-	            shape.x = x;
-	            shape.y = y;
-	            shape.width = size;
-	            shape.height = size;
-	        },
-
-	        circle: function (x, y, w, h, shape) {
-	            // Put circle in the center of square
-	            shape.cx = x + w / 2;
-	            shape.cy = y + h / 2;
-	            shape.r = Math.min(w, h) / 2;
-	        },
-
-	        diamond: function (x, y, w, h, shape) {
-	            shape.cx = x + w / 2;
-	            shape.cy = y + h / 2;
-	            shape.width = w;
-	            shape.height = h;
-	        },
-
-	        pin: function (x, y, w, h, shape) {
-	            shape.x = x + w / 2;
-	            shape.y = y + h / 2;
-	            shape.width = w;
-	            shape.height = h;
-	        },
-
-	        arrow: function (x, y, w, h, shape) {
-	            shape.x = x + w / 2;
-	            shape.y = y + h / 2;
-	            shape.width = w;
-	            shape.height = h;
-	        },
-
-	        triangle: function (x, y, w, h, shape) {
-	            shape.cx = x + w / 2;
-	            shape.cy = y + h / 2;
-	            shape.width = w;
-	            shape.height = h;
-	        }
-	    };
-
-	    var symbolBuildProxies = {};
-	    for (var name in symbolCtors) {
-	        if (symbolCtors.hasOwnProperty(name)) {
-	            symbolBuildProxies[name] = new symbolCtors[name]();
-	        }
-	    }
-
-	    var Symbol = graphic.extendShape({
-
-	        type: 'symbol',
-
-	        shape: {
-	            symbolType: '',
-	            x: 0,
-	            y: 0,
-	            width: 0,
-	            height: 0
-	        },
-
-	        beforeBrush: function () {
-	            var style = this.style;
-	            var shape = this.shape;
-	            // FIXME
-	            if (shape.symbolType === 'pin' && style.textPosition === 'inside') {
-	                style.textPosition = ['50%', '40%'];
-	                style.textAlign = 'center';
-	                style.textVerticalAlign = 'middle';
-	            }
-	        },
-
-	        buildPath: function (ctx, shape, inBundle) {
-	            var symbolType = shape.symbolType;
-	            var proxySymbol = symbolBuildProxies[symbolType];
-	            if (shape.symbolType !== 'none') {
-	                if (!proxySymbol) {
-	                    // Default rect
-	                    symbolType = 'rect';
-	                    proxySymbol = symbolBuildProxies[symbolType];
-	                }
-	                symbolShapeMakers[symbolType](
-	                    shape.x, shape.y, shape.width, shape.height, proxySymbol.shape
-	                );
-	                proxySymbol.buildPath(ctx, proxySymbol.shape, inBundle);
-	            }
-	        }
-	    });
-
-	    // Provide setColor helper method to avoid determine if set the fill or stroke outside
-	    var symbolPathSetColor = function (color) {
-	        if (this.type !== 'image') {
-	            var symbolStyle = this.style;
-	            var symbolShape = this.shape;
-	            if (symbolShape && symbolShape.symbolType === 'line') {
-	                symbolStyle.stroke = color;
-	            }
-	            else if (this.__isEmptyBrush) {
-	                symbolStyle.stroke = color;
-	                symbolStyle.fill = '#fff';
-	            }
-	            else {
-	                // FIXME 判断图形默认是填充还是描边,使用 onlyStroke ?
-	                symbolStyle.fill && (symbolStyle.fill = color);
-	                symbolStyle.stroke && (symbolStyle.stroke = color);
-	            }
-	            this.dirty(false);
-	        }
-	    };
-
-	    var symbolUtil = {
-	        /**
-	         * Create a symbol element with given symbol configuration: shape, x, y, width, height, color
-	         * @param {string} symbolType
-	         * @param {number} x
-	         * @param {number} y
-	         * @param {number} w
-	         * @param {number} h
-	         * @param {string} color
-	         */
-	        createSymbol: function (symbolType, x, y, w, h, color) {
-	            var isEmpty = symbolType.indexOf('empty') === 0;
-	            if (isEmpty) {
-	                symbolType = symbolType.substr(5, 1).toLowerCase() + symbolType.substr(6);
-	            }
-	            var symbolPath;
-
-	            if (symbolType.indexOf('image://') === 0) {
-	                symbolPath = new graphic.Image({
-	                    style: {
-	                        image: symbolType.slice(8),
-	                        x: x,
-	                        y: y,
-	                        width: w,
-	                        height: h
-	                    }
-	                });
-	            }
-	            else if (symbolType.indexOf('path://') === 0) {
-	                symbolPath = graphic.makePath(symbolType.slice(7), {}, new BoundingRect(x, y, w, h));
-	            }
-	            else {
-	                symbolPath = new Symbol({
-	                    shape: {
-	                        symbolType: symbolType,
-	                        x: x,
-	                        y: y,
-	                        width: w,
-	                        height: h
-	                    }
-	                });
-	            }
-
-	            symbolPath.__isEmptyBrush = isEmpty;
-
-	            symbolPath.setColor = symbolPathSetColor;
-
-	            symbolPath.setColor(color);
-
-	            return symbolPath;
-	        }
-	    };
-
-	    module.exports = symbolUtil;
-
-
-/***/ },
-/* 108 */
+/* 117 */
 /***/ function(module, exports) {
 
 	
@@ -25175,13 +27102,13 @@
 
 
 /***/ },
-/* 109 */
+/* 118 */
 /***/ function(module, exports, __webpack_require__) {
 
 	// Poly path support NaN point
 
 
-	    var Path = __webpack_require__(45);
+	    var Path = __webpack_require__(46);
 	    var vec2 = __webpack_require__(10);
 
 	    var vec2Min = vec2.min;
@@ -25430,7 +27357,7 @@
 
 
 /***/ },
-/* 110 */
+/* 119 */
 /***/ function(module, exports) {
 
 	
@@ -25479,7 +27406,7 @@
 
 
 /***/ },
-/* 111 */
+/* 120 */
 /***/ function(module, exports) {
 
 	
@@ -25492,13 +27419,13 @@
 	            if (coordSys) {
 	                var dims = coordSys.dimensions;
 
-	                if (coordSys.type === 'singleAxis') {
+	                if (dims.length === 1) {
 	                    data.each(dims[0], function (x, idx) {
 	                        // Also {Array.<number>}, not undefined to avoid if...else... statement
 	                        data.setItemLayout(idx, isNaN(x) ? [NaN, NaN] : coordSys.dataToPoint(x));
 	                    });
 	                }
-	                else {
+	                else if (dims.length === 2) {
 	                    data.each(dims, function (x, y, idx) {
 	                        // Also {Array.<number>}, not undefined to avoid if...else... statement
 	                        data.setItemLayout(
@@ -25511,8 +27438,9 @@
 	    };
 
 
+
 /***/ },
-/* 112 */
+/* 121 */
 /***/ function(module, exports) {
 
 	
@@ -25595,19 +27523,31 @@
 
 
 /***/ },
-/* 113 */
+/* 122 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+
+	    __webpack_require__(123);
+
+	    __webpack_require__(142);
+
+
+
+/***/ },
+/* 123 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
 
 
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 	    var zrUtil = __webpack_require__(4);
 	    var echarts = __webpack_require__(1);
 
-	    __webpack_require__(114);
+	    __webpack_require__(124);
 
-	    __webpack_require__(131);
+	    __webpack_require__(133);
 
 	    // Grid view
 	    echarts.extendComponentView({
@@ -25639,7 +27579,7 @@
 
 
 /***/ },
-/* 114 */
+/* 124 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -25650,11 +27590,11 @@
 	var factory = exports;
 
 	    var layout = __webpack_require__(21);
-	    var axisHelper = __webpack_require__(115);
+	    var axisHelper = __webpack_require__(105);
 
 	    var zrUtil = __webpack_require__(4);
-	    var Cartesian2D = __webpack_require__(121);
-	    var Axis2D = __webpack_require__(123);
+	    var Cartesian2D = __webpack_require__(125);
+	    var Axis2D = __webpack_require__(127);
 
 	    var each = zrUtil.each;
 
@@ -25662,7 +27602,7 @@
 	    var niceScaleExtent = axisHelper.niceScaleExtent;
 
 	    // 依赖 GridModel, AxisModel 做预处理
-	    __webpack_require__(126);
+	    __webpack_require__(129);
 
 	    /**
 	     * Check if the axis is used in the specified grid
@@ -25720,13 +27660,15 @@
 
 	        this._initCartesian(gridModel, ecModel, api);
 
-	        this._model = gridModel;
+	        this.model = gridModel;
 	    }
 
 	    var gridProto = Grid.prototype;
 
 	    gridProto.type = 'grid';
 
+	    gridProto.axisPointerEnabled = true;
+
 	    gridProto.getRect = function () {
 	        return this._rect;
 	    };
@@ -25735,7 +27677,7 @@
 
 	        var axesMap = this._axesMap;
 
-	        this._updateScale(ecModel, this._model);
+	        this._updateScale(ecModel, this.model);
 
 	        function ifAxisCanNotOnZero(otherAxisDim) {
 	            var axes = axesMap[otherAxisDim];
@@ -25751,10 +27693,10 @@
 	        }
 
 	        each(axesMap.x, function (xAxis) {
-	            niceScaleExtent(xAxis, xAxis.model);
+	            niceScaleExtent(xAxis.scale, xAxis.model);
 	        });
 	        each(axesMap.y, function (yAxis) {
-	            niceScaleExtent(yAxis, yAxis.model);
+	            niceScaleExtent(yAxis.scale, yAxis.model);
 	        });
 	        // Fix configuration
 	        each(axesMap.x, function (xAxis) {
@@ -25773,7 +27715,7 @@
 
 	        // Resize again if containLabel is enabled
 	        // FIXME It may cause getting wrong grid size in data processing stage
-	        this.resize(this._model, api);
+	        this.resize(this.model, api);
 	    };
 
 	    /**
@@ -25847,23 +27789,47 @@
 	        }
 	    };
 
+	    /**
+	     * @return {Array.<module:echarts/coord/Axis>}
+	     */
+	    gridProto.getAxes = function () {
+	        return this._axesList.slice();
+	    };
+
+	    /**
+	     * Usage:
+	     *      grid.getCartesian(xAxisIndex, yAxisIndex);
+	     *      grid.getCartesian(xAxisIndex);
+	     *      grid.getCartesian(null, yAxisIndex);
+	     *      grid.getCartesian({xAxisIndex: ..., yAxisIndex: ...});
+	     *
+	     * @param {number|Object} [xAxisIndex]
+	     * @param {number} [yAxisIndex]
+	     */
 	    gridProto.getCartesian = function (xAxisIndex, yAxisIndex) {
 	        if (xAxisIndex != null && yAxisIndex != null) {
 	            var key = 'x' + xAxisIndex + 'y' + yAxisIndex;
 	            return this._coordsMap[key];
 	        }
-	        else {
-	            // When only xAxisIndex or yAxisIndex given, find its first cartesian.
-	            for (var i = 0, coordList = this._coordsList; i < coordList.length; i++) {
-	                if (coordList[i].getAxis('x').index === xAxisIndex
-	                    || coordList[i].getAxis('y').index === yAxisIndex
-	                ) {
-	                    return coordList[i];
-	                }
+
+	        if (zrUtil.isObject(xAxisIndex)) {
+	            yAxisIndex = xAxisIndex.yAxisIndex;
+	            xAxisIndex = xAxisIndex.xAxisIndex;
+	        }
+	        // When only xAxisIndex or yAxisIndex given, find its first cartesian.
+	        for (var i = 0, coordList = this._coordsList; i < coordList.length; i++) {
+	            if (coordList[i].getAxis('x').index === xAxisIndex
+	                || coordList[i].getAxis('y').index === yAxisIndex
+	            ) {
+	                return coordList[i];
 	            }
 	        }
 	    };
 
+	    gridProto.getCartesians = function () {
+	        return this._coordsList.slice();
+	    };
+
 	    /**
 	     * @implements
 	     * see {module:echarts/CoodinateSystem}
@@ -25982,6 +27948,7 @@
 	                var cartesian = new Cartesian2D(key);
 
 	                cartesian.grid = this;
+	                cartesian.model = gridModel;
 
 	                this._coordsMap[key] = cartesian;
 	                this._coordsList.push(cartesian);
@@ -26097,6 +28064,25 @@
 	    };
 
 	    /**
+	     * @param {string} [dim] 'x' or 'y' or 'auto' or null/undefined
+	     * @return {Object} {baseAxes: [], otherAxes: []}
+	     */
+	    gridProto.getTooltipAxes = function (dim) {
+	        var baseAxes = [];
+	        var otherAxes = [];
+
+	        each(this.getCartesians(), function (cartesian) {
+	            var baseAxis = (dim != null && dim !== 'auto')
+	                ? cartesian.getAxis(dim) : cartesian.getBaseAxis();
+	            var otherAxis = cartesian.getOtherAxis(baseAxis);
+	            zrUtil.indexOf(baseAxes, baseAxis) < 0 && baseAxes.push(baseAxis);
+	            zrUtil.indexOf(otherAxes, otherAxis) < 0 && otherAxes.push(otherAxis);
+	        });
+
+	        return {baseAxes: baseAxes, otherAxes: otherAxes};
+	    };
+
+	    /**
 	     * @inner
 	     */
 	    function updateAxisTransfrom(axis, coordBase) {
@@ -26198,7 +28184,7 @@
 	    };
 
 	    // For deciding which dimensions to use when creating list data
-	    Grid.dimensions = Cartesian2D.prototype.dimensions;
+	    Grid.dimensions = Grid.prototype.dimensions = Cartesian2D.prototype.dimensions;
 
 	    __webpack_require__(26).register('cartesian2d', Grid);
 
@@ -26206,1104 +28192,14 @@
 
 
 /***/ },
-/* 115 */
-/***/ function(module, exports, __webpack_require__) {
-
-	
-
-	    var OrdinalScale = __webpack_require__(116);
-	    var IntervalScale = __webpack_require__(118);
-	    __webpack_require__(119);
-	    __webpack_require__(120);
-	    var Scale = __webpack_require__(117);
-
-	    var numberUtil = __webpack_require__(7);
-	    var zrUtil = __webpack_require__(4);
-	    var textContain = __webpack_require__(8);
-	    var axisHelper = {};
-
-	    /**
-	     * Get axis scale extent before niced.
-	     * Item of returned array can only be number (including Infinity and NaN).
-	     */
-	    axisHelper.getScaleExtent = function (axis, model) {
-	        var scale = axis.scale;
-	        var scaleType = scale.type;
-
-	        var min = model.getMin();
-	        var max = model.getMax();
-	        var fixMin = min != null;
-	        var fixMax = max != null;
-	        var originalExtent = scale.getExtent();
-
-	        var axisDataLen;
-	        var boundaryGap;
-	        var span;
-	        if (scaleType === 'ordinal') {
-	            axisDataLen = (model.get('data') || []).length;
-	        }
-	        else {
-	            boundaryGap = model.get('boundaryGap');
-	            if (!zrUtil.isArray(boundaryGap)) {
-	                boundaryGap = [boundaryGap || 0, boundaryGap || 0];
-	            }
-	            boundaryGap[0] = numberUtil.parsePercent(boundaryGap[0], 1);
-	            boundaryGap[1] = numberUtil.parsePercent(boundaryGap[1], 1);
-	            span = originalExtent[1] - originalExtent[0];
-	        }
-
-	        if (min == null) {
-	            min = scaleType === 'ordinal'
-	                ? (axisDataLen ? 0 : NaN)
-	                : originalExtent[0] - boundaryGap[0] * span;
-	        }
-	        if (max == null) {
-	            max = scaleType === 'ordinal'
-	                ? (axisDataLen ? axisDataLen - 1 : NaN)
-	                : originalExtent[1] + boundaryGap[1] * span;
-	        }
-
-	        if (min === 'dataMin') {
-	            min = originalExtent[0];
-	        }
-	        if (max === 'dataMax') {
-	            max = originalExtent[1];
-	        }
-
-	        (min == null || !isFinite(min)) && (min = NaN);
-	        (max == null || !isFinite(max)) && (max = NaN);
-
-	        axis.setBlank(zrUtil.eqNaN(min) || zrUtil.eqNaN(max));
-
-	        // Evaluate if axis needs cross zero
-	        if (model.getNeedCrossZero()) {
-	            // Axis is over zero and min is not set
-	            if (min > 0 && max > 0 && !fixMin) {
-	                min = 0;
-	            }
-	            // Axis is under zero and max is not set
-	            if (min < 0 && max < 0 && !fixMax) {
-	                max = 0;
-	            }
-	        }
-
-	        return [min, max];
-	    };
-
-	    axisHelper.niceScaleExtent = function (axis, model) {
-	        var scale = axis.scale;
-	        var extent = axisHelper.getScaleExtent(axis, model);
-	        var fixMin = model.getMin() != null;
-	        var fixMax = model.getMax() != null;
-	        var splitNumber = model.get('splitNumber');
-
-	        if (scale.type === 'log') {
-	            scale.base = model.get('logBase');
-	        }
-
-	        scale.setExtent(extent[0], extent[1]);
-	        scale.niceExtent(splitNumber, fixMin, fixMax);
-
-	        // Use minInterval to constraint the calculated interval.
-	        // If calculated interval is less than minInterval. increase the interval quantity until
-	        // it is larger than minInterval.
-	        // For example:
-	        //  minInterval is 1, calculated interval is 0.2, so increase it to be 1. In this way we can get
-	        //  an integer axis.
-	        var minInterval = model.get('minInterval');
-	        if (isFinite(minInterval) && !fixMin && !fixMax && scale.type === 'interval') {
-	            var interval = scale.getInterval();
-	            var intervalScale = Math.max(Math.abs(interval), minInterval) / interval;
-	            // while (interval < minInterval) {
-	            //     var quantity = numberUtil.quantity(interval);
-	            //     interval = quantity * 10;
-	            //     scaleQuantity *= 10;
-	            // }
-	            extent = scale.getExtent();
-	            var origin = (extent[1] + extent[0]) / 2;
-	            scale.setExtent(
-	                intervalScale * (extent[0] - origin) + origin,
-	                intervalScale * (extent[1] - origin) + origin
-	            );
-	            scale.niceExtent(splitNumber);
-	        }
-
-	        // If some one specified the min, max. And the default calculated interval
-	        // is not good enough. He can specify the interval. It is often appeared
-	        // in angle axis with angle 0 - 360. Interval calculated in interval scale is hard
-	        // to be 60.
-	        // FIXME
-	        var interval = model.get('interval');
-	        if (interval != null) {
-	            scale.setInterval && scale.setInterval(interval);
-	        }
-	    };
-
-	    /**
-	     * @param {module:echarts/model/Model} model
-	     * @param {string} [axisType] Default retrieve from model.type
-	     * @return {module:echarts/scale/*}
-	     */
-	    axisHelper.createScaleByModel = function(model, axisType) {
-	        axisType = axisType || model.get('type');
-	        if (axisType) {
-	            switch (axisType) {
-	                // Buildin scale
-	                case 'category':
-	                    return new OrdinalScale(
-	                        model.getCategories(), [Infinity, -Infinity]
-	                    );
-	                case 'value':
-	                    return new IntervalScale();
-	                // Extended scale, like time and log
-	                default:
-	                    return (Scale.getClass(axisType) || IntervalScale).create(model);
-	            }
-	        }
-	    };
-
-	    /**
-	     * Check if the axis corss 0
-	     */
-	    axisHelper.ifAxisCrossZero = function (axis) {
-	        var dataExtent = axis.scale.getExtent();
-	        var min = dataExtent[0];
-	        var max = dataExtent[1];
-	        return !((min > 0 && max > 0) || (min < 0 && max < 0));
-	    };
-
-	    /**
-	     * @param {Array.<number>} tickCoords In axis self coordinate.
-	     * @param {Array.<string>} labels
-	     * @param {string} font
-	     * @param {boolean} isAxisHorizontal
-	     * @return {number}
-	     */
-	    axisHelper.getAxisLabelInterval = function (tickCoords, labels, font, isAxisHorizontal) {
-	        // FIXME
-	        // 不同角的axis和label,不只是horizontal和vertical.
-
-	        var textSpaceTakenRect;
-	        var autoLabelInterval = 0;
-	        var accumulatedLabelInterval = 0;
-
-	        var step = 1;
-	        if (labels.length > 40) {
-	            // Simple optimization for large amount of labels
-	            step = Math.floor(labels.length / 40);
-	        }
-
-	        for (var i = 0; i < tickCoords.length; i += step) {
-	            var tickCoord = tickCoords[i];
-	            var rect = textContain.getBoundingRect(
-	                labels[i], font, 'center', 'top'
-	            );
-	            rect[isAxisHorizontal ? 'x' : 'y'] += tickCoord;
-	            // FIXME Magic number 1.5
-	            rect[isAxisHorizontal ? 'width' : 'height'] *= 1.3;
-	            if (!textSpaceTakenRect) {
-	                textSpaceTakenRect = rect.clone();
-	            }
-	            // There is no space for current label;
-	            else if (textSpaceTakenRect.intersect(rect)) {
-	                accumulatedLabelInterval++;
-	                autoLabelInterval = Math.max(autoLabelInterval, accumulatedLabelInterval);
-	            }
-	            else {
-	                textSpaceTakenRect.union(rect);
-	                // Reset
-	                accumulatedLabelInterval = 0;
-	            }
-	        }
-	        if (autoLabelInterval === 0 && step > 1) {
-	            return step;
-	        }
-	        return (autoLabelInterval + 1) * step - 1;
-	    };
-
-	    /**
-	     * @param {Object} axis
-	     * @param {Function} labelFormatter
-	     * @return {Array.<string>}
-	     */
-	    axisHelper.getFormattedLabels = function (axis, labelFormatter) {
-	        var scale = axis.scale;
-	        var labels = scale.getTicksLabels();
-	        var ticks = scale.getTicks();
-	        if (typeof labelFormatter === 'string') {
-	            labelFormatter = (function (tpl) {
-	                return function (val) {
-	                    return tpl.replace('{value}', val != null ? val : '');
-	                };
-	            })(labelFormatter);
-	            // Consider empty array
-	            return zrUtil.map(labels, labelFormatter);
-	        }
-	        else if (typeof labelFormatter === 'function') {
-	            return zrUtil.map(ticks, function (tick, idx) {
-	                return labelFormatter(
-	                    axis.type === 'category' ? scale.getLabel(tick) : tick,
-	                    idx
-	                );
-	            }, this);
-	        }
-	        else {
-	            return labels;
-	        }
-	    };
-
-	    module.exports = axisHelper;
-
-
-/***/ },
-/* 116 */
-/***/ function(module, exports, __webpack_require__) {
-
-	/**
-	 * Linear continuous scale
-	 * @module echarts/coord/scale/Ordinal
-	 *
-	 * http://en.wikipedia.org/wiki/Level_of_measurement
-	 */
-
-	// FIXME only one data
-
-
-	    var zrUtil = __webpack_require__(4);
-	    var Scale = __webpack_require__(117);
-
-	    var scaleProto = Scale.prototype;
-
-	    var OrdinalScale = Scale.extend({
-
-	        type: 'ordinal',
-
-	        init: function (data, extent) {
-	            this._data = data;
-	            this._extent = extent || [0, data.length - 1];
-	        },
-
-	        parse: function (val) {
-	            return typeof val === 'string'
-	                ? zrUtil.indexOf(this._data, val)
-	                // val might be float.
-	                : Math.round(val);
-	        },
-
-	        contain: function (rank) {
-	            rank = this.parse(rank);
-	            return scaleProto.contain.call(this, rank)
-	                && this._data[rank] != null;
-	        },
-
-	        /**
-	         * Normalize given rank or name to linear [0, 1]
-	         * @param {number|string} [val]
-	         * @return {number}
-	         */
-	        normalize: function (val) {
-	            return scaleProto.normalize.call(this, this.parse(val));
-	        },
-
-	        scale: function (val) {
-	            return Math.round(scaleProto.scale.call(this, val));
-	        },
-
-	        /**
-	         * @return {Array}
-	         */
-	        getTicks: function () {
-	            var ticks = [];
-	            var extent = this._extent;
-	            var rank = extent[0];
-
-	            while (rank <= extent[1]) {
-	                ticks.push(rank);
-	                rank++;
-	            }
-
-	            return ticks;
-	        },
-
-	        /**
-	         * Get item on rank n
-	         * @param {number} n
-	         * @return {string}
-	         */
-	        getLabel: function (n) {
-	            return this._data[n];
-	        },
-
-	        /**
-	         * @return {number}
-	         */
-	        count: function () {
-	            return this._extent[1] - this._extent[0] + 1;
-	        },
-
-	        /**
-	         * @override
-	         */
-	        unionExtentFromData: function (data, dim) {
-	            this.unionExtent(data.getDataExtent(dim, false));
-	        },
-
-	        niceTicks: zrUtil.noop,
-	        niceExtent: zrUtil.noop
-	    });
-
-	    /**
-	     * @return {module:echarts/scale/Time}
-	     */
-	    OrdinalScale.create = function () {
-	        return new OrdinalScale();
-	    };
-
-	    module.exports = OrdinalScale;
-
-
-/***/ },
-/* 117 */
-/***/ function(module, exports, __webpack_require__) {
-
-	/**
-	 * // Scale class management
-	 * @module echarts/scale/Scale
-	 */
-
-
-	    var clazzUtil = __webpack_require__(13);
-
-	    function Scale() {
-	        /**
-	         * Extent
-	         * @type {Array.<number>}
-	         * @protected
-	         */
-	        this._extent = [Infinity, -Infinity];
-
-	        /**
-	         * Step is calculated in adjustExtent
-	         * @type {Array.<number>}
-	         * @protected
-	         */
-	        this._interval = 0;
-
-	        this.init && this.init.apply(this, arguments);
-	    }
-
-	    var scaleProto = Scale.prototype;
-
-	    /**
-	     * Parse input val to valid inner number.
-	     * @param {*} val
-	     * @return {number}
-	     */
-	    scaleProto.parse = function (val) {
-	        // Notice: This would be a trap here, If the implementation
-	        // of this method depends on extent, and this method is used
-	        // before extent set (like in dataZoom), it would be wrong.
-	        // Nevertheless, parse does not depend on extent generally.
-	        return val;
-	    };
-
-	    scaleProto.contain = function (val) {
-	        var extent = this._extent;
-	        return val >= extent[0] && val <= extent[1];
-	    };
-
-	    /**
-	     * Normalize value to linear [0, 1], return 0.5 if extent span is 0
-	     * @param {number} val
-	     * @return {number}
-	     */
-	    scaleProto.normalize = function (val) {
-	        var extent = this._extent;
-	        if (extent[1] === extent[0]) {
-	            return 0.5;
-	        }
-	        return (val - extent[0]) / (extent[1] - extent[0]);
-	    };
-
-	    /**
-	     * Scale normalized value
-	     * @param {number} val
-	     * @return {number}
-	     */
-	    scaleProto.scale = function (val) {
-	        var extent = this._extent;
-	        return val * (extent[1] - extent[0]) + extent[0];
-	    };
-
-	    /**
-	     * Set extent from data
-	     * @param {Array.<number>} other
-	     */
-	    scaleProto.unionExtent = function (other) {
-	        var extent = this._extent;
-	        other[0] < extent[0] && (extent[0] = other[0]);
-	        other[1] > extent[1] && (extent[1] = other[1]);
-	        // not setExtent because in log axis it may transformed to power
-	        // this.setExtent(extent[0], extent[1]);
-	    };
-
-	    /**
-	     * Set extent from data
-	     * @param {module:echarts/data/List} data
-	     * @param {string} dim
-	     */
-	    scaleProto.unionExtentFromData = function (data, dim) {
-	        this.unionExtent(data.getDataExtent(dim, true));
-	    };
-
-	    /**
-	     * Get extent
-	     * @return {Array.<number>}
-	     */
-	    scaleProto.getExtent = function () {
-	        return this._extent.slice();
-	    };
-
-	    /**
-	     * Set extent
-	     * @param {number} start
-	     * @param {number} end
-	     */
-	    scaleProto.setExtent = function (start, end) {
-	        var thisExtent = this._extent;
-	        if (!isNaN(start)) {
-	            thisExtent[0] = start;
-	        }
-	        if (!isNaN(end)) {
-	            thisExtent[1] = end;
-	        }
-	    };
-
-	    /**
-	     * @return {Array.<string>}
-	     */
-	    scaleProto.getTicksLabels = function () {
-	        var labels = [];
-	        var ticks = this.getTicks();
-	        for (var i = 0; i < ticks.length; i++) {
-	            labels.push(this.getLabel(ticks[i]));
-	        }
-	        return labels;
-	    };
-
-	    clazzUtil.enableClassExtend(Scale);
-	    clazzUtil.enableClassManagement(Scale, {
-	        registerWhenExtend: true
-	    });
-
-	    module.exports = Scale;
-
-
-/***/ },
-/* 118 */
-/***/ function(module, exports, __webpack_require__) {
-
-	/**
-	 * Interval scale
-	 * @module echarts/scale/Interval
-	 */
-
-
-
-	    var numberUtil = __webpack_require__(7);
-	    var formatUtil = __webpack_require__(6);
-	    var Scale = __webpack_require__(117);
-
-	    var mathFloor = Math.floor;
-	    var mathCeil = Math.ceil;
-
-	    var getPrecisionSafe = numberUtil.getPrecisionSafe;
-	    var roundingErrorFix = numberUtil.round;
-	    /**
-	     * @alias module:echarts/coord/scale/Interval
-	     * @constructor
-	     */
-	    var IntervalScale = Scale.extend({
-
-	        type: 'interval',
-
-	        _interval: 0,
-
-	        setExtent: function (start, end) {
-	            var thisExtent = this._extent;
-	            //start,end may be a Number like '25',so...
-	            if (!isNaN(start)) {
-	                thisExtent[0] = parseFloat(start);
-	            }
-	            if (!isNaN(end)) {
-	                thisExtent[1] = parseFloat(end);
-	            }
-	        },
-
-	        unionExtent: function (other) {
-	            var extent = this._extent;
-	            other[0] < extent[0] && (extent[0] = other[0]);
-	            other[1] > extent[1] && (extent[1] = other[1]);
-
-	            // unionExtent may called by it's sub classes
-	            IntervalScale.prototype.setExtent.call(this, extent[0], extent[1]);
-	        },
-	        /**
-	         * Get interval
-	         */
-	        getInterval: function () {
-	            if (!this._interval) {
-	                this.niceTicks();
-	            }
-	            return this._interval;
-	        },
-
-	        /**
-	         * Set interval
-	         */
-	        setInterval: function (interval) {
-	            this._interval = interval;
-	            // Dropped auto calculated niceExtent and use user setted extent
-	            // We assume user wan't to set both interval, min, max to get a better result
-	            this._niceExtent = this._extent.slice();
-	        },
-
-	        /**
-	         * @return {Array.<number>}
-	         */
-	        getTicks: function () {
-	            if (!this._interval) {
-	                this.niceTicks();
-	            }
-	            var interval = this._interval;
-	            var extent = this._extent;
-	            var ticks = [];
-
-	            // Consider this case: using dataZoom toolbox, zoom and zoom.
-	            var safeLimit = 10000;
-
-	            if (interval) {
-	                var niceExtent = this._niceExtent;
-	                var precision = getPrecisionSafe(interval) + 2;
-
-	                if (extent[0] < niceExtent[0]) {
-	                    ticks.push(extent[0]);
-	                }
-	                var tick = niceExtent[0];
-
-	                while (tick <= niceExtent[1]) {
-	                    ticks.push(tick);
-	                    // Avoid rounding error
-	                    tick = roundingErrorFix(tick + interval, precision);
-	                    if (ticks.length > safeLimit) {
-	                        return [];
-	                    }
-	                }
-	                // Consider this case: the last item of ticks is smaller
-	                // than niceExtent[1] and niceExtent[1] === extent[1].
-	                if (extent[1] > (ticks.length ? ticks[ticks.length - 1] : niceExtent[1])) {
-	                    ticks.push(extent[1]);
-	                }
-	            }
-
-	            return ticks;
-	        },
-
-	        /**
-	         * @return {Array.<string>}
-	         */
-	        getTicksLabels: function () {
-	            var labels = [];
-	            var ticks = this.getTicks();
-	            for (var i = 0; i < ticks.length; i++) {
-	                labels.push(this.getLabel(ticks[i]));
-	            }
-	            return labels;
-	        },
-
-	        /**
-	         * @param {number} n
-	         * @return {number}
-	         */
-	        getLabel: function (data) {
-	            return formatUtil.addCommas(data);
-	        },
-
-	        /**
-	         * Update interval and extent of intervals for nice ticks
-	         *
-	         * @param {number} [splitNumber = 5] Desired number of ticks
-	         */
-	        niceTicks: function (splitNumber) {
-	            splitNumber = splitNumber || 5;
-	            var extent = this._extent;
-	            var span = extent[1] - extent[0];
-	            if (!isFinite(span)) {
-	                return;
-	            }
-	            // User may set axis min 0 and data are all negative
-	            // FIXME If it needs to reverse ?
-	            if (span < 0) {
-	                span = -span;
-	                extent.reverse();
-	            }
-
-	            // From "Nice Numbers for Graph Labels" of Graphic Gems
-	            // var niceSpan = numberUtil.nice(span, false);
-	            var step = roundingErrorFix(
-	                numberUtil.nice(span / splitNumber, true),
-	                Math.max(
-	                    getPrecisionSafe(extent[0]),
-	                    getPrecisionSafe(extent[1])
-	                // extent may be [0, 1], and step should have 1 more digits.
-	                // To make it safe we add 2 more digits
-	                ) + 2
-	            );
-
-	            var precision = getPrecisionSafe(step) + 2;
-	            // Niced extent inside original extent
-	            var niceExtent = [
-	                roundingErrorFix(mathCeil(extent[0] / step) * step, precision),
-	                roundingErrorFix(mathFloor(extent[1] / step) * step, precision)
-	            ];
-
-	            this._interval = step;
-	            this._niceExtent = niceExtent;
-	        },
-
-	        /**
-	         * Nice extent.
-	         * @param {number} [splitNumber = 5] Given approx tick number
-	         * @param {boolean} [fixMin=false]
-	         * @param {boolean} [fixMax=false]
-	         */
-	        niceExtent: function (splitNumber, fixMin, fixMax) {
-	            var extent = this._extent;
-	            // If extent start and end are same, expand them
-	            if (extent[0] === extent[1]) {
-	                if (extent[0] !== 0) {
-	                    // Expand extent
-	                    var expandSize = extent[0];
-	                    // In the fowllowing case
-	                    //      Axis has been fixed max 100
-	                    //      Plus data are all 100 and axis extent are [100, 100].
-	                    // Extend to the both side will cause expanded max is larger than fixed max.
-	                    // So only expand to the smaller side.
-	                    if (!fixMax) {
-	                        extent[1] += expandSize / 2;
-	                        extent[0] -= expandSize / 2;
-	                    }
-	                    else {
-	                        extent[0] -= expandSize / 2;
-	                    }
-	                }
-	                else {
-	                    extent[1] = 1;
-	                }
-	            }
-	            var span = extent[1] - extent[0];
-	            // If there are no data and extent are [Infinity, -Infinity]
-	            if (!isFinite(span)) {
-	                extent[0] = 0;
-	                extent[1] = 1;
-	            }
-
-	            this.niceTicks(splitNumber);
-
-	            // var extent = this._extent;
-	            var interval = this._interval;
-
-	            if (!fixMin) {
-	                extent[0] = roundingErrorFix(mathFloor(extent[0] / interval) * interval);
-	            }
-	            if (!fixMax) {
-	                extent[1] = roundingErrorFix(mathCeil(extent[1] / interval) * interval);
-	            }
-	        }
-	    });
-
-	    /**
-	     * @return {module:echarts/scale/Time}
-	     */
-	    IntervalScale.create = function () {
-	        return new IntervalScale();
-	    };
-
-	    module.exports = IntervalScale;
-
-
-
-/***/ },
-/* 119 */
-/***/ function(module, exports, __webpack_require__) {
-
-	/**
-	 * Interval scale
-	 * @module echarts/coord/scale/Time
-	 */
-
-
-
-	    var zrUtil = __webpack_require__(4);
-	    var numberUtil = __webpack_require__(7);
-	    var formatUtil = __webpack_require__(6);
-
-	    var IntervalScale = __webpack_require__(118);
-
-	    var intervalScaleProto = IntervalScale.prototype;
-
-	    var mathCeil = Math.ceil;
-	    var mathFloor = Math.floor;
-	    var ONE_SECOND = 1000;
-	    var ONE_MINUTE = ONE_SECOND * 60;
-	    var ONE_HOUR = ONE_MINUTE * 60;
-	    var ONE_DAY = ONE_HOUR * 24;
-
-	    // FIXME 公用?
-	    var bisect = function (a, x, lo, hi) {
-	        while (lo < hi) {
-	            var mid = lo + hi >>> 1;
-	            if (a[mid][2] < x) {
-	                lo = mid + 1;
-	            }
-	            else {
-	                hi  = mid;
-	            }
-	        }
-	        return lo;
-	    };
-
-	    /**
-	     * @alias module:echarts/coord/scale/Time
-	     * @constructor
-	     */
-	    var TimeScale = IntervalScale.extend({
-	        type: 'time',
-
-	        // Overwrite
-	        getLabel: function (val) {
-	            var stepLvl = this._stepLvl;
-
-	            var date = new Date(val);
-
-	            return formatUtil.formatTime(stepLvl[0], date);
-	        },
-
-	        // Overwrite
-	        niceExtent: function (approxTickNum, fixMin, fixMax) {
-	            var extent = this._extent;
-	            // If extent start and end are same, expand them
-	            if (extent[0] === extent[1]) {
-	                // Expand extent
-	                extent[0] -= ONE_DAY;
-	                extent[1] += ONE_DAY;
-	            }
-	            // If there are no data and extent are [Infinity, -Infinity]
-	            if (extent[1] === -Infinity && extent[0] === Infinity) {
-	                var d = new Date();
-	                extent[1] = new Date(d.getFullYear(), d.getMonth(), d.getDate());
-	                extent[0] = extent[1] - ONE_DAY;
-	            }
-
-	            this.niceTicks(approxTickNum);
-
-	            // var extent = this._extent;
-	            var interval = this._interval;
-
-	            if (!fixMin) {
-	                extent[0] = numberUtil.round(mathFloor(extent[0] / interval) * interval);
-	            }
-	            if (!fixMax) {
-	                extent[1] = numberUtil.round(mathCeil(extent[1] / interval) * interval);
-	            }
-	        },
-
-	        // Overwrite
-	        niceTicks: function (approxTickNum) {
-	            approxTickNum = approxTickNum || 10;
-
-	            var extent = this._extent;
-	            var span = extent[1] - extent[0];
-	            var approxInterval = span / approxTickNum;
-	            var scaleLevelsLen = scaleLevels.length;
-	            var idx = bisect(scaleLevels, approxInterval, 0, scaleLevelsLen);
-
-	            var level = scaleLevels[Math.min(idx, scaleLevelsLen - 1)];
-	            var interval = level[2];
-	            // Same with interval scale if span is much larger than 1 year
-	            if (level[0] === 'year') {
-	                var yearSpan = span / interval;
-
-	                // From "Nice Numbers for Graph Labels" of Graphic Gems
-	                // var niceYearSpan = numberUtil.nice(yearSpan, false);
-	                var yearStep = numberUtil.nice(yearSpan / approxTickNum, true);
-
-	                interval *= yearStep;
-	            }
-
-	            var niceExtent = [
-	                mathCeil(extent[0] / interval) * interval,
-	                mathFloor(extent[1] / interval) * interval
-	            ];
-
-	            this._stepLvl = level;
-	            // Interval will be used in getTicks
-	            this._interval = interval;
-	            this._niceExtent = niceExtent;
-	        },
-
-	        parse: function (val) {
-	            // val might be float.
-	            return +numberUtil.parseDate(val);
-	        }
-	    });
-
-	    zrUtil.each(['contain', 'normalize'], function (methodName) {
-	        TimeScale.prototype[methodName] = function (val) {
-	            return intervalScaleProto[methodName].call(this, this.parse(val));
-	        };
-	    });
-
-	    // Steps from d3
-	    var scaleLevels = [
-	        // Format       step    interval
-	        ['hh:mm:ss',    1,      ONE_SECOND],           // 1s
-	        ['hh:mm:ss',    5,      ONE_SECOND * 5],       // 5s
-	        ['hh:mm:ss',    10,     ONE_SECOND * 10],      // 10s
-	        ['hh:mm:ss',    15,     ONE_SECOND * 15],      // 15s
-	        ['hh:mm:ss',    30,     ONE_SECOND * 30],      // 30s
-	        ['hh:mm\nMM-dd',1,      ONE_MINUTE],          // 1m
-	        ['hh:mm\nMM-dd',5,      ONE_MINUTE * 5],      // 5m
-	        ['hh:mm\nMM-dd',10,     ONE_MINUTE * 10],     // 10m
-	        ['hh:mm\nMM-dd',15,     ONE_MINUTE * 15],     // 15m
-	        ['hh:mm\nMM-dd',30,     ONE_MINUTE * 30],     // 30m
-	        ['hh:mm\nMM-dd',1,      ONE_HOUR],        // 1h
-	        ['hh:mm\nMM-dd',2,      ONE_HOUR * 2],    // 2h
-	        ['hh:mm\nMM-dd',6,      ONE_HOUR * 6],    // 6h
-	        ['hh:mm\nMM-dd',12,     ONE_HOUR * 12],   // 12h
-	        ['MM-dd\nyyyy', 1,      ONE_DAY],   // 1d
-	        ['week',        7,      ONE_DAY * 7],        // 7d
-	        ['month',       1,      ONE_DAY * 31],       // 1M
-	        ['quarter',     3,      ONE_DAY * 380 / 4],  // 3M
-	        ['half-year',   6,      ONE_DAY * 380 / 2],  // 6M
-	        ['year',        1,      ONE_DAY * 380]       // 1Y
-	    ];
-
-	    /**
-	     * @return {module:echarts/scale/Time}
-	     */
-	    TimeScale.create = function () {
-	        return new TimeScale();
-	    };
-
-	    module.exports = TimeScale;
-
-
-/***/ },
-/* 120 */
-/***/ function(module, exports, __webpack_require__) {
-
-	/**
-	 * Log scale
-	 * @module echarts/scale/Log
-	 */
-
-
-	    var zrUtil = __webpack_require__(4);
-	    var Scale = __webpack_require__(117);
-	    var numberUtil = __webpack_require__(7);
-
-	    // Use some method of IntervalScale
-	    var IntervalScale = __webpack_require__(118);
-
-	    var scaleProto = Scale.prototype;
-	    var intervalScaleProto = IntervalScale.prototype;
-
-	    var getPrecisionSafe = numberUtil.getPrecisionSafe;
-	    var roundingErrorFix = numberUtil.round;
-
-	    var mathFloor = Math.floor;
-	    var mathCeil = Math.ceil;
-	    var mathPow = Math.pow;
-
-	    var mathLog = Math.log;
-
-	    var LogScale = Scale.extend({
-
-	        type: 'log',
-
-	        base: 10,
-
-	        $constructor: function () {
-	            Scale.apply(this, arguments);
-	            this._originalScale = new IntervalScale();
-	        },
-
-	        /**
-	         * @return {Array.<number>}
-	         */
-	        getTicks: function () {
-	            var originalScale = this._originalScale;
-	            var extent = this._extent;
-	            var originalExtent = originalScale.getExtent();
-
-	            return zrUtil.map(intervalScaleProto.getTicks.call(this), function (val) {
-	                var powVal = numberUtil.round(mathPow(this.base, val));
-
-	                // Fix #4158
-	                powVal = (val === extent[0] && originalScale.__fixMin)
-	                    ? fixRoundingError(powVal, originalExtent[0])
-	                    : powVal;
-	                powVal = (val === extent[1] && originalScale.__fixMax)
-	                    ? fixRoundingError(powVal, originalExtent[1])
-	                    : powVal;
-
-	                return powVal;
-	            }, this);
-	        },
-
-	        /**
-	         * @param {number} val
-	         * @return {string}
-	         */
-	        getLabel: intervalScaleProto.getLabel,
-
-	        /**
-	         * @param  {number} val
-	         * @return {number}
-	         */
-	        scale: function (val) {
-	            val = scaleProto.scale.call(this, val);
-	            return mathPow(this.base, val);
-	        },
-
-	        /**
-	         * @param {number} start
-	         * @param {number} end
-	         */
-	        setExtent: function (start, end) {
-	            var base = this.base;
-	            start = mathLog(start) / mathLog(base);
-	            end = mathLog(end) / mathLog(base);
-	            intervalScaleProto.setExtent.call(this, start, end);
-	        },
-
-	        /**
-	         * @return {number} end
-	         */
-	        getExtent: function () {
-	            var base = this.base;
-	            var extent = scaleProto.getExtent.call(this);
-	            extent[0] = mathPow(base, extent[0]);
-	            extent[1] = mathPow(base, extent[1]);
-
-	            // Fix #4158
-	            var originalScale = this._originalScale;
-	            var originalExtent = originalScale.getExtent();
-	            originalScale.__fixMin && (extent[0] = fixRoundingError(extent[0], originalExtent[0]));
-	            originalScale.__fixMax && (extent[1] = fixRoundingError(extent[1], originalExtent[1]));
-
-	            return extent;
-	        },
-
-	        /**
-	         * @param  {Array.<number>} extent
-	         */
-	        unionExtent: function (extent) {
-	            this._originalScale.unionExtent(extent);
-
-	            var base = this.base;
-	            extent[0] = mathLog(extent[0]) / mathLog(base);
-	            extent[1] = mathLog(extent[1]) / mathLog(base);
-	            scaleProto.unionExtent.call(this, extent);
-	        },
-
-	        /**
-	         * @override
-	         */
-	        unionExtentFromData: function (data, dim) {
-	            this.unionExtent(data.getDataExtent(dim, true, function (val) {
-	                return val > 0;
-	            }));
-	        },
-
-	        /**
-	         * Update interval and extent of intervals for nice ticks
-	         * @param  {number} [approxTickNum = 10] Given approx tick number
-	         */
-	        niceTicks: function (approxTickNum) {
-	            approxTickNum = approxTickNum || 10;
-	            var extent = this._extent;
-	            var span = extent[1] - extent[0];
-	            if (span === Infinity || span <= 0) {
-	                return;
-	            }
-
-	            var interval = numberUtil.quantity(span);
-	            var err = approxTickNum / span * interval;
-
-	            // Filter ticks to get closer to the desired count.
-	            if (err <= 0.5) {
-	                interval *= 10;
-	            }
-
-	            // Interval should be integer
-	            while (!isNaN(interval) && Math.abs(interval) < 1 && Math.abs(interval) > 0) {
-	                interval *= 10;
-	            }
-
-	            var niceExtent = [
-	                numberUtil.round(mathCeil(extent[0] / interval) * interval),
-	                numberUtil.round(mathFloor(extent[1] / interval) * interval)
-	            ];
-
-	            this._interval = interval;
-	            this._niceExtent = niceExtent;
-	        },
-
-	        /**
-	         * Nice extent.
-	         * @param {number} [approxTickNum = 10] Given approx tick number
-	         * @param {boolean} [fixMin=false]
-	         * @param {boolean} [fixMax=false]
-	         */
-	        niceExtent: function (splitNumber, fixMin, fixMax) {
-	            intervalScaleProto.niceExtent.call(this, splitNumber, fixMin, fixMax);
-
-	            var originalScale = this._originalScale;
-	            originalScale.__fixMin = fixMin;
-	            originalScale.__fixMax = fixMax;
-	        }
-
-	    });
-
-	    zrUtil.each(['contain', 'normalize'], function (methodName) {
-	        LogScale.prototype[methodName] = function (val) {
-	            val = mathLog(val) / mathLog(this.base);
-	            return scaleProto[methodName].call(this, val);
-	        };
-	    });
-
-	    LogScale.create = function () {
-	        return new LogScale();
-	    };
-
-	    function fixRoundingError(val, originalVal) {
-	        return roundingErrorFix(val, getPrecisionSafe(originalVal));
-	    }
-
-	    module.exports = LogScale;
-
-
-/***/ },
-/* 121 */
+/* 125 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
 
 
 	    var zrUtil = __webpack_require__(4);
-	    var Cartesian = __webpack_require__(122);
+	    var Cartesian = __webpack_require__(126);
 
 	    function Cartesian2D(name) {
 
@@ -27412,7 +28308,7 @@
 
 
 /***/ },
-/* 122 */
+/* 126 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -27530,14 +28426,14 @@
 
 
 /***/ },
-/* 123 */
+/* 127 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    var zrUtil = __webpack_require__(4);
-	    var Axis = __webpack_require__(124);
-	    var axisLabelInterval = __webpack_require__(125);
+	    var Axis = __webpack_require__(100);
+	    var axisLabelInterval = __webpack_require__(128);
 
 	    /**
 	     * Extend axis 2d
@@ -27596,13 +28492,26 @@
 	            return position === 'top' || position === 'bottom';
 	        },
 
-	        getGlobalExtent: function () {
+	        /**
+	         * Each item cooresponds to this.getExtent(), which
+	         * means globalExtent[0] may greater than globalExtent[1],
+	         * unless `asc` is input.
+	         *
+	         * @param {boolean} [asc]
+	         * @return {Array.<number>}
+	         */
+	        getGlobalExtent: function (asc) {
 	            var ret = this.getExtent();
 	            ret[0] = this.toGlobalCoord(ret[0]);
 	            ret[1] = this.toGlobalCoord(ret[1]);
+	            asc && ret[0] > ret[1] && ret.reverse();
 	            return ret;
 	        },
 
+	        getOtherAxis: function () {
+	            this.grid.getOtherAxis();
+	        },
+
 	        /**
 	         * @return {number}
 	         */
@@ -27630,6 +28539,13 @@
 	        },
 
 	        /**
+	         * @override
+	         */
+	        pointToData: function (point, clamp) {
+	            return this.coordToData(this.toLocalCoord(point[this.dim === 'x' ? 0 : 1]), clamp);
+	        },
+
+	        /**
 	         * Transform global coord to local coord,
 	         * i.e. var localCoord = axis.toLocalCoord(80);
 	         * designate by module:echarts/coord/cartesian/Grid.
@@ -27652,249 +28568,7 @@
 
 
 /***/ },
-/* 124 */
-/***/ function(module, exports, __webpack_require__) {
-
-	
-
-	    var numberUtil = __webpack_require__(7);
-	    var linearMap = numberUtil.linearMap;
-	    var zrUtil = __webpack_require__(4);
-
-	    function fixExtentWithBands(extent, nTick) {
-	        var size = extent[1] - extent[0];
-	        var len = nTick;
-	        var margin = size / len / 2;
-	        extent[0] += margin;
-	        extent[1] -= margin;
-	    }
-
-	    var normalizedExtent = [0, 1];
-	    /**
-	     * @name module:echarts/coord/CartesianAxis
-	     * @constructor
-	     */
-	    var Axis = function (dim, scale, extent) {
-
-	        /**
-	         * Axis dimension. Such as 'x', 'y', 'z', 'angle', 'radius'
-	         * @type {string}
-	         */
-	        this.dim = dim;
-
-	        /**
-	         * Axis scale
-	         * @type {module:echarts/coord/scale/*}
-	         */
-	        this.scale = scale;
-
-	        /**
-	         * @type {Array.<number>}
-	         * @private
-	         */
-	        this._extent = extent || [0, 0];
-
-	        /**
-	         * @type {boolean}
-	         */
-	        this.inverse = false;
-
-	        /**
-	         * Usually true when axis has a ordinal scale
-	         * @type {boolean}
-	         */
-	        this.onBand = false;
-	    };
-
-	    Axis.prototype = {
-
-	        constructor: Axis,
-
-	        /**
-	         * If axis extent contain given coord
-	         * @param {number} coord
-	         * @return {boolean}
-	         */
-	        contain: function (coord) {
-	            var extent = this._extent;
-	            var min = Math.min(extent[0], extent[1]);
-	            var max = Math.max(extent[0], extent[1]);
-	            return coord >= min && coord <= max;
-	        },
-
-	        /**
-	         * If axis extent contain given data
-	         * @param {number} data
-	         * @return {boolean}
-	         */
-	        containData: function (data) {
-	            return this.contain(this.dataToCoord(data));
-	        },
-
-	        /**
-	         * Get coord extent.
-	         * @return {Array.<number>}
-	         */
-	        getExtent: function () {
-	            var ret = this._extent.slice();
-	            return ret;
-	        },
-
-	        /**
-	         * Get precision used for formatting
-	         * @param {Array.<number>} [dataExtent]
-	         * @return {number}
-	         */
-	        getPixelPrecision: function (dataExtent) {
-	            return numberUtil.getPixelPrecision(
-	                dataExtent || this.scale.getExtent(),
-	                this._extent
-	            );
-	        },
-
-	        /**
-	         * Set coord extent
-	         * @param {number} start
-	         * @param {number} end
-	         */
-	        setExtent: function (start, end) {
-	            var extent = this._extent;
-	            extent[0] = start;
-	            extent[1] = end;
-	        },
-
-	        /**
-	         * Convert data to coord. Data is the rank if it has a ordinal scale
-	         * @param {number} data
-	         * @param  {boolean} clamp
-	         * @return {number}
-	         */
-	        dataToCoord: function (data, clamp) {
-	            var extent = this._extent;
-	            var scale = this.scale;
-	            data = scale.normalize(data);
-
-	            if (this.onBand && scale.type === 'ordinal') {
-	                extent = extent.slice();
-	                fixExtentWithBands(extent, scale.count());
-	            }
-
-	            return linearMap(data, normalizedExtent, extent, clamp);
-	        },
-
-	        /**
-	         * Convert coord to data. Data is the rank if it has a ordinal scale
-	         * @param {number} coord
-	         * @param  {boolean} clamp
-	         * @return {number}
-	         */
-	        coordToData: function (coord, clamp) {
-	            var extent = this._extent;
-	            var scale = this.scale;
-
-	            if (this.onBand && scale.type === 'ordinal') {
-	                extent = extent.slice();
-	                fixExtentWithBands(extent, scale.count());
-	            }
-
-	            var t = linearMap(coord, extent, normalizedExtent, clamp);
-
-	            return this.scale.scale(t);
-	        },
-	        /**
-	         * @return {Array.<number>}
-	         */
-	        getTicksCoords: function (alignWithLabel) {
-	            if (this.onBand && !alignWithLabel) {
-	                var bands = this.getBands();
-	                var coords = [];
-	                for (var i = 0; i < bands.length; i++) {
-	                    coords.push(bands[i][0]);
-	                }
-	                if (bands[i - 1]) {
-	                    coords.push(bands[i - 1][1]);
-	                }
-	                return coords;
-	            }
-	            else {
-	                return zrUtil.map(this.scale.getTicks(), this.dataToCoord, this);
-	            }
-	        },
-
-	        /**
-	         * Coords of labels are on the ticks or on the middle of bands
-	         * @return {Array.<number>}
-	         */
-	        getLabelsCoords: function () {
-	            return zrUtil.map(this.scale.getTicks(), this.dataToCoord, this);
-	        },
-
-	        /**
-	         * Get bands.
-	         *
-	         * If axis has labels [1, 2, 3, 4]. Bands on the axis are
-	         * |---1---|---2---|---3---|---4---|.
-	         *
-	         * @return {Array}
-	         */
-	         // FIXME Situation when labels is on ticks
-	        getBands: function () {
-	            var extent = this.getExtent();
-	            var bands = [];
-	            var len = this.scale.count();
-	            var start = extent[0];
-	            var end = extent[1];
-	            var span = end - start;
-
-	            for (var i = 0; i < len; i++) {
-	                bands.push([
-	                    span * i / len + start,
-	                    span * (i + 1) / len + start
-	                ]);
-	            }
-	            return bands;
-	        },
-
-	        /**
-	         * Get width of band
-	         * @return {number}
-	         */
-	        getBandWidth: function () {
-	            var axisExtent = this._extent;
-	            var dataExtent = this.scale.getExtent();
-
-	            var len = dataExtent[1] - dataExtent[0] + (this.onBand ? 1 : 0);
-	            // Fix #2728, avoid NaN when only one data.
-	            len === 0 && (len = 1);
-
-	            var size = Math.abs(axisExtent[1] - axisExtent[0]);
-
-	            return Math.abs(size) / len;
-	        },
-
-	        /**
-	         * When axis extent depends on data and no data exists,
-	         * axis ticks should not be drawn, which is named 'blank'.
-	         */
-	        isBlank: function () {
-	            return this._isBlank;
-	        },
-
-	        /**
-	         * When axis extent depends on data and no data exists,
-	         * axis ticks should not be drawn, which is named 'blank'.
-	         */
-	        setBlank: function (isBlank) {
-	            this._isBlank = isBlank;
-	        }
-
-	    };
-
-	    module.exports = Axis;
-
-
-/***/ },
-/* 125 */
+/* 128 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -27905,7 +28579,7 @@
 
 
 	    var zrUtil = __webpack_require__(4);
-	    var axisHelper = __webpack_require__(115);
+	    var axisHelper = __webpack_require__(105);
 
 	    module.exports = function (axis) {
 	        var axisModel = axis.model;
@@ -27925,7 +28599,7 @@
 
 
 /***/ },
-/* 126 */
+/* 129 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -27933,7 +28607,8 @@
 	// 所以这里也要被 Cartesian2D 依赖
 
 
-	    __webpack_require__(127);
+	    __webpack_require__(130);
+
 	    var ComponentModel = __webpack_require__(19);
 
 	    module.exports = ComponentModel.extend({
@@ -27969,7 +28644,7 @@
 
 
 /***/ },
-/* 127 */
+/* 130 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -27977,7 +28652,7 @@
 
 	    var ComponentModel = __webpack_require__(19);
 	    var zrUtil = __webpack_require__(4);
-	    var axisModelCreator = __webpack_require__(128);
+	    var axisModelCreator = __webpack_require__(131);
 
 	    var AxisModel = ComponentModel.extend({
 
@@ -28031,7 +28706,7 @@
 	        return option.type || (option.data ? 'category' : 'value');
 	    }
 
-	    zrUtil.merge(AxisModel.prototype, __webpack_require__(130));
+	    zrUtil.merge(AxisModel.prototype, __webpack_require__(111));
 
 	    var extraOption = {
 	        // gridIndex: 0,
@@ -28048,12 +28723,12 @@
 
 
 /***/ },
-/* 128 */
+/* 131 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var axisDefault = __webpack_require__(129);
+	    var axisDefault = __webpack_require__(132);
 	    var zrUtil = __webpack_require__(4);
 	    var ComponentModel = __webpack_require__(19);
 	    var layout = __webpack_require__(21);
@@ -28111,7 +28786,7 @@
 
 
 /***/ },
-/* 129 */
+/* 132 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -28148,6 +28823,8 @@
 	            show: false
 	        },
 
+	        axisPointer: {},
+
 	        // 坐标轴线
 	        axisLine: {
 	            // 默认显示,属性show控制显示与否
@@ -28220,7 +28897,6 @@
 	        // 坐标轴小标记
 	        axisTick: {
 	            // If tick is align with label when boundaryGap is true
-	            // Default with axisTick
 	            alignWithLabel: false,
 	            interval: 'auto'
 	        },
@@ -28269,130 +28945,30 @@
 
 
 /***/ },
-/* 130 */
-/***/ function(module, exports, __webpack_require__) {
-
-	
-
-	    var zrUtil = __webpack_require__(4);
-	    var axisHelper = __webpack_require__(115);
-
-	    function getName(obj) {
-	        if (zrUtil.isObject(obj) && obj.value != null) {
-	            return obj.value;
-	        }
-	        else {
-	            return obj;
-	        }
-	    }
-
-	    module.exports = {
-
-	        /**
-	         * Format labels
-	         * @return {Array.<string>}
-	         */
-	        getFormattedLabels: function () {
-	            return axisHelper.getFormattedLabels(
-	                this.axis,
-	                this.get('axisLabel.formatter')
-	            );
-	        },
-
-	        /**
-	         * Get categories
-	         */
-	        getCategories: function () {
-	            return this.get('type') === 'category'
-	                && zrUtil.map(this.get('data'), getName);
-	        },
-
-	        /**
-	         * @param {boolean} origin
-	         * @return {number|string} min value or 'dataMin' or null/undefined (means auto) or NaN
-	         */
-	        getMin: function (origin) {
-	            var option = this.option;
-	            var min = (!origin && option.rangeStart != null)
-	                ? option.rangeStart : option.min;
-
-	            if (min != null && min !== 'dataMin' && !zrUtil.eqNaN(min)) {
-	                min = this.axis.scale.parse(min);
-	            }
-	            return min;
-	        },
-
-	        /**
-	         * @param {boolean} origin
-	         * @return {number|string} max value or 'dataMax' or null/undefined (means auto) or NaN
-	         */
-	        getMax: function (origin) {
-	            var option = this.option;
-	            var max = (!origin && option.rangeEnd != null)
-	                ? option.rangeEnd : option.max;
-
-	            if (max != null && max !== 'dataMax' && !zrUtil.eqNaN(max)) {
-	                max = this.axis.scale.parse(max);
-	            }
-	            return max;
-	        },
-
-	        /**
-	         * @return {boolean}
-	         */
-	        getNeedCrossZero: function () {
-	            var option = this.option;
-	            return (option.rangeStart != null || option.rangeEnd != null)
-	                ? false : !option.scale;
-	        },
-
-	        /**
-	         * Should be implemented by each axis model if necessary.
-	         * @return {module:echarts/model/Component} coordinate system model
-	         */
-	        getCoordSysModel: zrUtil.noop,
-
-	        /**
-	         * @param {number} rangeStart Can only be finite number or null/undefined or NaN.
-	         * @param {number} rangeEnd Can only be finite number or null/undefined or NaN.
-	         */
-	        setRange: function (rangeStart, rangeEnd) {
-	            this.option.rangeStart = rangeStart;
-	            this.option.rangeEnd = rangeEnd;
-	        },
-
-	        /**
-	         * Reset range
-	         */
-	        resetRange: function () {
-	            // rangeStart and rangeEnd is readonly.
-	            this.option.rangeStart = this.option.rangeEnd = null;
-	        }
-	    };
-
-
-/***/ },
-/* 131 */
+/* 133 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
 	// TODO boundaryGap
 
 
-	    __webpack_require__(127);
+	    __webpack_require__(130);
 
-	    __webpack_require__(132);
+	    __webpack_require__(134);
 
 
 /***/ },
-/* 132 */
+/* 134 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    var zrUtil = __webpack_require__(4);
-	    var graphic = __webpack_require__(43);
-	    var AxisBuilder = __webpack_require__(133);
+	    var graphic = __webpack_require__(44);
+	    var AxisBuilder = __webpack_require__(135);
+	    var CartesianAxisPointer = __webpack_require__(136);
+	    var AxisView = __webpack_require__(141);
+	    var cartesianAxisHelper = __webpack_require__(140);
 	    var ifIgnoreOnTick = AxisBuilder.ifIgnoreOnTick;
 	    var getInterval = AxisBuilder.getInterval;
 
@@ -28411,11 +28987,16 @@
 	    //     return alignWithLabel;
 	    // }
 
-	    var AxisView = __webpack_require__(1).extendComponentView({
+	    var CartesianAxisView = AxisView.extend({
 
-	        type: 'axis',
+	        type: 'cartesianAxis',
 
-	        render: function (axisModel, ecModel) {
+	        axisPointerClass: CartesianAxisPointer,
+
+	        /**
+	         * @override
+	         */
+	        render: function (axisModel, ecModel, api, payload) {
 
 	            this.group.removeAll();
 
@@ -28430,7 +29011,7 @@
 
 	            var gridModel = axisModel.getCoordSysModel();
 
-	            var layout = layoutAxis(gridModel, axisModel);
+	            var layout = cartesianAxisHelper.layout(gridModel, axisModel);
 
 	            var axisBuilder = new AxisBuilder(axisModel, layout);
 
@@ -28445,6 +29026,8 @@
 	            }, this);
 
 	            graphic.groupTransition(oldAxisGroup, this._axisGroup, axisModel);
+
+	            CartesianAxisView.superCall(this, 'render', axisModel, ecModel, api, payload);
 	        },
 
 	        /**
@@ -28456,7 +29039,7 @@
 	        _splitLine: function (axisModel, gridModel, labelInterval) {
 	            var axis = axisModel.axis;
 
-	            if (axis.isBlank()) {
+	            if (axis.scale.isBlank()) {
 	                return;
 	            }
 
@@ -28530,7 +29113,7 @@
 	        _splitArea: function (axisModel, gridModel, labelInterval) {
 	            var axis = axisModel.axis;
 
-	            if (axis.isBlank()) {
+	            if (axis.scale.isBlank()) {
 	                return;
 	            }
 
@@ -28601,91 +29184,24 @@
 	        }
 	    });
 
-	    AxisView.extend({
+	    CartesianAxisView.extend({
 	        type: 'xAxis'
 	    });
-	    AxisView.extend({
+	    CartesianAxisView.extend({
 	        type: 'yAxis'
 	    });
 
-	    /**
-	     * @inner
-	     */
-	    function layoutAxis(gridModel, axisModel) {
-	        var grid = gridModel.coordinateSystem;
-	        var axis = axisModel.axis;
-	        var layout = {};
-
-	        var rawAxisPosition = axis.position;
-	        var axisPosition = axis.onZero ? 'onZero' : rawAxisPosition;
-	        var axisDim = axis.dim;
-
-	        // [left, right, top, bottom]
-	        var rect = grid.getRect();
-	        var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height];
-
-	        var axisOffset = axisModel.get('offset') || 0;
-
-	        var posMap = {
-	            x: { top: rectBound[2] - axisOffset, bottom: rectBound[3] + axisOffset },
-	            y: { left: rectBound[0] - axisOffset, right: rectBound[1] + axisOffset }
-	        };
-
-	        posMap.x.onZero = Math.max(Math.min(getZero('y'), posMap.x.bottom), posMap.x.top);
-	        posMap.y.onZero = Math.max(Math.min(getZero('x'), posMap.y.right), posMap.y.left);
-
-	        function getZero(dim, val) {
-	            var theAxis = grid.getAxis(dim);
-	            return theAxis.toGlobalCoord(theAxis.dataToCoord(0));
-	        }
-
-	        // Axis position
-	        layout.position = [
-	            axisDim === 'y' ? posMap.y[axisPosition] : rectBound[0],
-	            axisDim === 'x' ? posMap.x[axisPosition] : rectBound[3]
-	        ];
-
-	        // Axis rotation
-	        layout.rotation = Math.PI / 2 * (axisDim === 'x' ? 0 : 1);
-
-	        // Tick and label direction, x y is axisDim
-	        var dirMap = {top: -1, bottom: 1, left: -1, right: 1};
-
-	        layout.labelDirection = layout.tickDirection = layout.nameDirection = dirMap[rawAxisPosition];
-	        if (axis.onZero) {
-	            layout.labelOffset = posMap[axisDim][rawAxisPosition] - posMap[axisDim].onZero;
-	        }
-
-	        if (axisModel.getModel('axisTick').get('inside')) {
-	            layout.tickDirection = -layout.tickDirection;
-	        }
-	        if (axisModel.getModel('axisLabel').get('inside')) {
-	            layout.labelDirection = -layout.labelDirection;
-	        }
-
-	        // Special label rotation
-	        var labelRotation = axisModel.getModel('axisLabel').get('rotate');
-	        layout.labelRotation = axisPosition === 'top' ? -labelRotation : labelRotation;
-
-	        // label interval when auto mode.
-	        layout.labelInterval = axis.getLabelInterval();
-
-	        // Over splitLine and splitArea
-	        layout.z2 = 1;
-
-	        return layout;
-	    }
 
 
 /***/ },
-/* 133 */
+/* 135 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    var zrUtil = __webpack_require__(4);
 	    var formatUtil = __webpack_require__(6);
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 	    var Model = __webpack_require__(12);
 	    var numberUtil = __webpack_require__(7);
 	    var remRadian = numberUtil.remRadian;
@@ -28738,7 +29254,7 @@
 	     * @param {string} [opt.axisLabelShow] default get from axisModel.
 	     * @param {string} [opt.axisName] default get from axisModel.
 	     * @param {number} [opt.axisNameAvailableWidth]
-	     * @param {number} [opt.labelRotation] by degree, default get from axisModel.
+	     * @param {number} [opt.labelRotate] by degree, default get from axisModel.
 	     * @param {number} [opt.labelInterval] Default label interval when label
 	     *                                     interval from model is null or 'auto'.
 	     * @param {number} [opt.strokeContainThreshold] Default label interval when label
@@ -28856,7 +29372,7 @@
 	            var axisModel = this.axisModel;
 	            var axis = axisModel.axis;
 
-	            if (!axisModel.get('axisTick.show') || axis.isBlank()) {
+	            if (!axisModel.get('axisTick.show') || axis.scale.isBlank()) {
 	                return;
 	            }
 
@@ -28926,7 +29442,7 @@
 	            var axis = axisModel.axis;
 	            var show = retrieve(opt.axisLabelShow, axisModel.get('axisLabel.show'));
 
-	            if (!show || axis.isBlank()) {
+	            if (!show || axis.scale.isBlank()) {
 	                return;
 	            }
 
@@ -28937,11 +29453,11 @@
 	            var labels = axisModel.getFormattedLabels();
 
 	            // Special label rotate.
-	            var labelRotation = retrieve(opt.labelRotation, labelModel.get('rotate')) || 0;
-	            // To radian.
-	            labelRotation = labelRotation * PI / 180;
+	            var labelRotation = (
+	                retrieve(opt.labelRotate, labelModel.get('rotate')) || 0
+	            ) * PI / 180;
 
-	            var labelLayout = innerTextLayout(opt, labelRotation, opt.labelDirection);
+	            var labelLayout = innerTextLayout(opt.rotation, labelRotation, opt.labelDirection);
 	            var categoryData = axisModel.get('data');
 
 	            var textEls = [];
@@ -28967,7 +29483,7 @@
 	                    tickCoord,
 	                    opt.labelOffset + opt.labelDirection * labelMargin
 	                ];
-	                var labelBeforeFormat = axis.scale.getLabel(tickVal);
+	                var labelStr = axis.scale.getLabel(tickVal);
 
 	                var textEl = new graphic.Text({
 
@@ -28977,9 +29493,21 @@
 	                    style: {
 	                        text: labels[index],
 	                        textAlign: itemTextStyleModel.get('align', true) || labelLayout.textAlign,
-	                        textVerticalAlign: itemTextStyleModel.get('baseline', true) || labelLayout.verticalAlign,
+	                        textVerticalAlign: itemTextStyleModel.get('baseline', true) || labelLayout.textVerticalAlign,
 	                        textFont: itemTextStyleModel.getFont(),
-	                        fill: typeof textColor === 'function' ? textColor(labelBeforeFormat) : textColor
+	                        fill: typeof textColor === 'function'
+	                            ? textColor(
+	                                // (1) In category axis with data zoom, tick is not the original
+	                                // index of axis.data. So tick should not be exposed to user
+	                                // in category axis.
+	                                // (2) Compatible with previous version, which always returns labelStr.
+	                                // But in interval scale labelStr is like '223,445', which maked
+	                                // user repalce ','. So we modify it to return original val but remain
+	                                // it as 'string' to avoid error in replacing.
+	                                axis.type === 'category' ? labelStr : axis.type === 'value' ? tickVal + '' : tickVal,
+	                                index
+	                            )
+	                            : textColor
 	                    },
 	                    position: pos,
 	                    rotation: labelLayout.rotation,
@@ -28991,7 +29519,7 @@
 	                if (triggerEvent) {
 	                    textEl.eventData = makeAxisEventDataBase(axisModel);
 	                    textEl.eventData.targetType = 'axisLabel';
-	                    textEl.eventData.value = labelBeforeFormat;
+	                    textEl.eventData.value = labelStr;
 	                }
 
 	                // FIXME
@@ -29074,7 +29602,7 @@
 
 	            if (nameLocation === 'middle') {
 	                labelLayout = innerTextLayout(
-	                    opt,
+	                    opt.rotation,
 	                    nameRotation != null ? nameRotation : opt.rotation, // Adapt to axis.
 	                    nameDirection
 	                );
@@ -29129,7 +29657,7 @@
 	                    fill: textStyleModel.getTextColor()
 	                        || axisModel.get('axisLine.lineStyle.color'),
 	                    textAlign: labelLayout.textAlign,
-	                    textVerticalAlign: labelLayout.verticalAlign
+	                    textVerticalAlign: labelLayout.textVerticalAlign
 	                },
 	                position: pos,
 	                rotation: labelLayout.rotation,
@@ -29164,23 +29692,33 @@
 	    };
 
 	    /**
-	     * @inner
+	     * @public
+	     * @static
+	     * @param {Object} opt
+	     * @param {number} axisRotation in radian
+	     * @param {number} textRotation in radian
+	     * @param {number} direction
+	     * @return {Object} {
+	     *  rotation, // according to axis
+	     *  textAlign,
+	     *  textVerticalAlign
+	     * }
 	     */
-	    function innerTextLayout(opt, textRotation, direction) {
-	        var rotationDiff = remRadian(textRotation - opt.rotation);
+	    var innerTextLayout = AxisBuilder.innerTextLayout = function (axisRotation, textRotation, direction) {
+	        var rotationDiff = remRadian(textRotation - axisRotation);
 	        var textAlign;
-	        var verticalAlign;
+	        var textVerticalAlign;
 
 	        if (isRadianAroundZero(rotationDiff)) { // Label is parallel with axis line.
-	            verticalAlign = direction > 0 ? 'top' : 'bottom';
+	            textVerticalAlign = direction > 0 ? 'top' : 'bottom';
 	            textAlign = 'center';
 	        }
 	        else if (isRadianAroundZero(rotationDiff - PI)) { // Label is inverse parallel with axis line.
-	            verticalAlign = direction > 0 ? 'bottom' : 'top';
+	            textVerticalAlign = direction > 0 ? 'bottom' : 'top';
 	            textAlign = 'center';
 	        }
 	        else {
-	            verticalAlign = 'middle';
+	            textVerticalAlign = 'middle';
 
 	            if (rotationDiff > 0 && rotationDiff < PI) {
 	                textAlign = direction > 0 ? 'right' : 'left';
@@ -29193,9 +29731,9 @@
 	        return {
 	            rotation: rotationDiff,
 	            textAlign: textAlign,
-	            verticalAlign: verticalAlign
+	            textVerticalAlign: textVerticalAlign
 	        };
-	    }
+	    };
 
 	    /**
 	     * @inner
@@ -29203,21 +29741,21 @@
 	    function endTextLayout(opt, textPosition, textRotate, extent) {
 	        var rotationDiff = remRadian(textRotate - opt.rotation);
 	        var textAlign;
-	        var verticalAlign;
+	        var textVerticalAlign;
 	        var inverse = extent[0] > extent[1];
 	        var onLeft = (textPosition === 'start' && !inverse)
 	            || (textPosition !== 'start' && inverse);
 
 	        if (isRadianAroundZero(rotationDiff - PI / 2)) {
-	            verticalAlign = onLeft ? 'bottom' : 'top';
+	            textVerticalAlign = onLeft ? 'bottom' : 'top';
 	            textAlign = 'center';
 	        }
 	        else if (isRadianAroundZero(rotationDiff - PI * 1.5)) {
-	            verticalAlign = onLeft ? 'top' : 'bottom';
+	            textVerticalAlign = onLeft ? 'top' : 'bottom';
 	            textAlign = 'center';
 	        }
 	        else {
-	            verticalAlign = 'middle';
+	            textVerticalAlign = 'middle';
 	            if (rotationDiff < PI * 1.5 && rotationDiff > PI / 2) {
 	                textAlign = onLeft ? 'left' : 'right';
 	            }
@@ -29229,7 +29767,7 @@
 	        return {
 	            rotation: rotationDiff,
 	            textAlign: textAlign,
-	            verticalAlign: verticalAlign
+	            textVerticalAlign: textVerticalAlign
 	        };
 	    }
 
@@ -29278,19 +29816,2212 @@
 
 
 /***/ },
-/* 134 */
+/* 136 */
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+
+	    var graphic = __webpack_require__(44);
+	    var BaseAxisPointer = __webpack_require__(137);
+	    var viewHelper = __webpack_require__(139);
+	    var cartesianAxisHelper = __webpack_require__(140);
+
+	    var CartesianAxisPointer = BaseAxisPointer.extend({
+
+	        /**
+	         * @override
+	         */
+	        makeElOption: function (elOption, value, axisModel, axisPointerModel, api) {
+	            var axis = axisModel.axis;
+	            var grid = axis.grid;
+	            var axisPointerType = axisPointerModel.get('type');
+	            var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent();
+	            var pixelValue = axis.toGlobalCoord(axis.dataToCoord(value, true));
+
+	            var elStyle = viewHelper.buildElStyle(axisPointerModel);
+	            var pointerOption = pointerShapeBuilder[axisPointerType](axis, pixelValue, otherExtent, elStyle);
+	            pointerOption.style = elStyle;
+
+	            elOption.graphicKey = pointerOption.type;
+	            elOption.pointer = pointerOption;
+
+	            var layoutInfo = cartesianAxisHelper.layout(grid.model, axisModel);
+	            viewHelper.buildCartesianSingleLabelElOption(
+	                value, elOption, layoutInfo, axisModel, axisPointerModel, api
+	            );
+	        },
+
+	        /**
+	         * @override
+	         */
+	        getHandleTransform: function (value, axisModel, axisPointerModel) {
+	            var layoutInfo = cartesianAxisHelper.layout(axisModel.axis.grid.model, axisModel, {
+	                labelInside: false
+	            });
+	            layoutInfo.labelMargin = axisPointerModel.get('handle.margin');
+	            return {
+	                position: viewHelper.getTransformedPosition(axisModel.axis, value, layoutInfo),
+	                rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0)
+	            };
+	        },
+
+	        /**
+	         * @override
+	         */
+	        updateHandleTransform: function (transform, delta, axisModel, axisPointerModel) {
+	            var axis = axisModel.axis;
+	            var grid = axis.grid;
+	            var axisExtent = axis.getGlobalExtent(true);
+	            var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent();
+	            var dimIndex = axis.dim === 'x' ? 0 : 1;
+
+	            var currPosition = transform.position;
+	            currPosition[dimIndex] += delta[dimIndex];
+	            currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]);
+	            currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]);
+
+	            var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2;
+	            var cursorPoint = [cursorOtherValue, cursorOtherValue];
+	            cursorPoint[dimIndex] = currPosition[dimIndex];
+
+	            // Make tooltip do not overlap axisPointer and in the middle of the grid.
+	            var tooltipOptions = [{verticalAlign: 'middle'}, {align: 'center'}];
+
+	            return {
+	                position: currPosition,
+	                rotation: transform.rotation,
+	                cursorPoint: cursorPoint,
+	                tooltipOption: tooltipOptions[dimIndex]
+	            };
+	        }
+
+	    });
+
+	    function getCartesian(grid, axis) {
+	        var opt = {};
+	        opt[axis.dim + 'AxisIndex'] = axis.index;
+	        return grid.getCartesian(opt);
+	    }
+
+	    var pointerShapeBuilder = {
+
+	        line: function (axis, pixelValue, otherExtent, elStyle) {
+	            var targetShape = viewHelper.makeLineShape(
+	                [pixelValue, otherExtent[0]],
+	                [pixelValue, otherExtent[1]],
+	                getAxisDimIndex(axis)
+	            );
+	            graphic.subPixelOptimizeLine({
+	                shape: targetShape,
+	                style: elStyle
+	            });
+	            return {
+	                type: 'Line',
+	                shape: targetShape
+	            };
+	        },
+
+	        shadow: function (axis, pixelValue, otherExtent, elStyle) {
+	            var bandWidth = axis.getBandWidth();
+	            var span = otherExtent[1] - otherExtent[0];
+	            return {
+	                type: 'Rect',
+	                shape: viewHelper.makeRectShape(
+	                    [pixelValue - bandWidth / 2, otherExtent[0]],
+	                    [bandWidth, span],
+	                    getAxisDimIndex(axis)
+	                )
+	            };
+	        }
+	    };
+
+	    function getAxisDimIndex(axis) {
+	        return axis.dim === 'x' ? 0 : 1;
+	    }
+
+	    module.exports = CartesianAxisPointer;
+
+
+/***/ },
+/* 137 */
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+
+	    var zrUtil = __webpack_require__(4);
+	    var clazzUtil = __webpack_require__(13);
+	    var graphic = __webpack_require__(44);
+	    var get = __webpack_require__(5).makeGetter();
+	    var axisPointerModelHelper = __webpack_require__(138);
+	    var eventTool = __webpack_require__(88);
+	    var throttle = __webpack_require__(81);
+
+	    var clone = zrUtil.clone;
+	    var bind = zrUtil.bind;
+
+	    /**
+	     * Base axis pointer class in 2D.
+	     * Implemenents {module:echarts/component/axis/IAxisPointer}.
+	     */
+	    function BaseAxisPointer () {
+	    }
+
+	    BaseAxisPointer.prototype = {
+
+	        /**
+	         * @private
+	         */
+	        _group: null,
+
+	        /**
+	         * @private
+	         */
+	        _lastGraphicKey: null,
+
+	        /**
+	         * @private
+	         */
+	        _handle: null,
+
+	        /**
+	         * @private
+	         */
+	        _dragging: false,
+
+	        /**
+	         * @private
+	         */
+	        _lastValue: null,
+
+	        /**
+	         * @private
+	         */
+	        _lastStatus: null,
+
+	        /**
+	         * @private
+	         */
+	        _payloadInfo: null,
+
+	        /**
+	         * In px, arbitrary value. Do not set too small,
+	         * no animation is ok for most cases.
+	         * @protected
+	         */
+	        animationThreshold: 15,
+
+	        /**
+	         * @implement
+	         */
+	        render: function (axisModel, axisPointerModel, api, forceRender) {
+	            var value = axisPointerModel.get('value');
+	            var status = axisPointerModel.get('status');
+
+	            // Bind them to `this`, not in closure, otherwise they will not
+	            // be replaced when user calling setOption in not merge mode.
+	            this._axisModel = axisModel;
+	            this._axisPointerModel = axisPointerModel;
+	            this._api = api;
+
+	            // Optimize: `render` will be called repeatly during mouse move.
+	            // So it is power consuming if performing `render` each time,
+	            // especially on mobile device.
+	            if (!forceRender
+	                && this._lastValue === value
+	                && this._lastStatus === status
+	            ) {
+	                return;
+	            }
+	            this._lastValue = value;
+	            this._lastStatus = status;
+
+	            var group = this._group;
+	            var handle = this._handle;
+
+	            if (!status || status === 'hide') {
+	                // Do not clear here, for animation better.
+	                group && group.hide();
+	                handle && handle.hide();
+	                return;
+	            }
+	            group && group.show();
+	            handle && handle.show();
+
+	            // Otherwise status is 'show'
+	            var elOption = {};
+	            this.makeElOption(elOption, value, axisModel, axisPointerModel, api);
+
+	            // Enable change axis pointer type.
+	            var graphicKey = elOption.graphicKey;
+	            if (graphicKey !== this._lastGraphicKey) {
+	                this.clear(api);
+	            }
+	            this._lastGraphicKey = graphicKey;
+
+	            var moveAnimation = this._moveAnimation =
+	                this.determineAnimation(axisModel, axisPointerModel);
+
+	            if (!group) {
+	                group = this._group = new graphic.Group();
+	                this.createPointerEl(group, elOption, axisModel, axisPointerModel);
+	                this.createLabelEl(group, elOption, axisModel, axisPointerModel);
+	                api.getZr().add(group);
+	            }
+	            else {
+	                var doUpdateProps = zrUtil.curry(updateProps, axisPointerModel, moveAnimation);
+	                this.updatePointerEl(group, elOption, doUpdateProps, axisPointerModel);
+	                this.updateLabelEl(group, elOption, doUpdateProps, axisPointerModel);
+	            }
+
+	            updateMandatoryProps(group, axisPointerModel, true);
+
+	            this._renderHandle(value);
+	        },
+
+	        /**
+	         * @implement
+	         */
+	        remove: function (api) {
+	            this.clear(api);
+	        },
+
+	        /**
+	         * @implement
+	         */
+	        dispose: function (api) {
+	            this.clear(api);
+	        },
+
+	        /**
+	         * @protected
+	         */
+	        determineAnimation: function (axisModel, axisPointerModel) {
+	            var animation = axisPointerModel.get('animation');
+	            var axis = axisModel.axis;
+	            var isCategoryAxis = axis.type === 'category';
+	            var useSnap = axisPointerModel.get('snap');
+
+	            // Value axis without snap always do not snap.
+	            if (!useSnap && !isCategoryAxis) {
+	                return false;
+	            }
+
+	            if (animation === 'auto' || animation == null) {
+	                var animationThreshold = this.animationThreshold;
+	                if (isCategoryAxis && axis.getBandWidth() > animationThreshold) {
+	                    return true;
+	                }
+
+	                // It is important to auto animation when snap used. Consider if there is
+	                // a dataZoom, animation will be disabled when too many points exist, while
+	                // it will be enabled for better visual effect when little points exist.
+	                if (useSnap) {
+	                    var seriesDataCount = axisPointerModelHelper.getAxisInfo(axisModel).seriesDataCount;
+	                    var axisExtent = axis.getExtent();
+	                    // Approximate band width
+	                    return Math.abs(axisExtent[0] - axisExtent[1]) / seriesDataCount > animationThreshold;
+	                }
+
+	                return false;
+	            }
+
+	            return animation === true;
+	        },
+
+	        /**
+	         * add {pointer, label, graphicKey} to elOption
+	         * @protected
+	         */
+	        makeElOption: function (elOption, value, axisModel, axisPointerModel, api) {
+	            // Shoule be implemenented by sub-class.
+	        },
+
+	        /**
+	         * @protected
+	         */
+	        createPointerEl: function (group, elOption, axisModel, axisPointerModel) {
+	            var pointerOption = elOption.pointer;
+	            var pointerEl = get(group).pointerEl = new graphic[pointerOption.type](
+	                clone(elOption.pointer)
+	            );
+	            group.add(pointerEl);
+	        },
+
+	        /**
+	         * @protected
+	         */
+	        createLabelEl: function (group, elOption, axisModel, axisPointerModel) {
+	            var labelEl = get(group).labelEl = new graphic.Rect(
+	                clone(elOption.label)
+	            );
+
+	            group.add(labelEl);
+	            updateLabelShowHide(labelEl, axisPointerModel);
+	        },
+
+	        /**
+	         * @protected
+	         */
+	        updatePointerEl: function (group, elOption, updateProps) {
+	            var pointerEl = get(group).pointerEl;
+	            if (pointerEl) {
+	                pointerEl.setStyle(elOption.pointer.style);
+	                updateProps(pointerEl, {shape: elOption.pointer.shape});
+	            }
+	        },
+
+	        /**
+	         * @protected
+	         */
+	        updateLabelEl: function (group, elOption, updateProps, axisPointerModel) {
+	            var labelEl = get(group).labelEl;
+	            if (labelEl) {
+	                labelEl.setStyle(elOption.label.style);
+	                updateProps(labelEl, {
+	                    // Consider text length change in vertical axis, animation should
+	                    // be used on shape, otherwise the effect will be weird.
+	                    shape: elOption.label.shape,
+	                    position: elOption.label.position
+	                });
+
+	                updateLabelShowHide(labelEl, axisPointerModel);
+	            }
+	        },
+
+	        /**
+	         * @private
+	         */
+	        _renderHandle: function (value) {
+	            if (this._dragging || !this.updateHandleTransform) {
+	                return;
+	            }
+
+	            var axisPointerModel = this._axisPointerModel;
+	            var zr = this._api.getZr();
+	            var handle = this._handle;
+	            var handleModel = axisPointerModel.getModel('handle');
+
+	            var status = axisPointerModel.get('status');
+	            if (!handleModel.get('show') || !status || status === 'hide') {
+	                handle && zr.remove(handle);
+	                this._handle = null;
+	                return;
+	            }
+
+	            var isInit;
+	            if (!this._handle) {
+	                isInit = true;
+	                handle = this._handle = createIcon(handleModel, {
+	                    onmousemove: function (e) {
+	                        // Fot mobile devicem, prevent screen slider on the button.
+	                        eventTool.stop(e.event);
+	                    },
+	                    onmousedown: bind(this._onHandleDragMove, this, 0, 0),
+	                    drift: bind(this._onHandleDragMove, this),
+	                    ondragend: bind(this._onHandleDragEnd, this)
+	                });
+	                zr.add(handle);
+	            }
+
+	            updateMandatoryProps(handle, axisPointerModel, false);
+
+	            // update style
+	            var includeStyles = [
+	                'color', 'borderColor', 'borderWidth', 'opacity',
+	                'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY'
+	            ];
+	            handle.setStyle(handleModel.getItemStyle(null, includeStyles));
+
+	            // update position
+	            var handleSize = handleModel.get('size');
+	            if (!zrUtil.isArray(handleSize)) {
+	                handleSize = [handleSize, handleSize];
+	            }
+	            handle.attr('scale', [handleSize[0] / 2, handleSize[1] / 2]);
+
+	            throttle.createOrUpdate(
+	                this,
+	                '_doDispatchAxisPointer',
+	                handleModel.get('throttle') || 0,
+	                'fixRate'
+	            );
+
+	            this._moveHandleToValue(value, isInit);
+	        },
+
+	        /**
+	         * @private
+	         */
+	        _moveHandleToValue: function (value, isInit) {
+	            updateProps(
+	                this._axisPointerModel,
+	                !isInit && this._moveAnimation,
+	                this._handle,
+	                getHandleTransProps(this.getHandleTransform(
+	                    value, this._axisModel, this._axisPointerModel
+	                ))
+	            );
+	        },
+
+	        /**
+	         * @private
+	         */
+	        _onHandleDragMove: function (dx, dy) {
+	            var handle = this._handle;
+	            if (!handle) {
+	                return;
+	            }
+
+	            this._dragging = true;
+
+	            // Persistent for throttle.
+	            var trans = this.updateHandleTransform(
+	                getHandleTransProps(handle),
+	                [dx, dy],
+	                this._axisModel,
+	                this._axisPointerModel
+	            );
+	            this._payloadInfo = trans;
+
+	            handle.stopAnimation();
+	            handle.attr(getHandleTransProps(trans));
+	            get(handle).lastProp = null;
+
+	            this._doDispatchAxisPointer();
+	        },
+
+	        /**
+	         * Throttled method.
+	         * @private
+	         */
+	        _doDispatchAxisPointer: function () {
+	            var handle = this._handle;
+	            if (!handle) {
+	                return;
+	            }
+
+	            var payloadInfo = this._payloadInfo;
+	            var payload = {
+	                type: 'updateAxisPointer',
+	                x: payloadInfo.cursorPoint[0],
+	                y: payloadInfo.cursorPoint[1],
+	                tooltipOption: payloadInfo.tooltipOption,
+	                highDownKey: 'axisPointerHandle'
+	            };
+	            var axis = this._axisModel.axis;
+	            payload[axis.dim + 'AxisId'] = this._axisModel.id;
+	            this._api.dispatchAction(payload);
+	        },
+
+	        /**
+	         * @private
+	         */
+	        _onHandleDragEnd: function (moveAnimation) {
+	            this._dragging = false;
+	            var handle = this._handle;
+	            if (!handle) {
+	                return;
+	            }
+
+	            var value = this._axisPointerModel.get('value');
+	            // Consider snap or categroy axis, handle may be not consistent with
+	            // axisPointer. So move handle to align the exact value position when
+	            // drag ended.
+	            this._moveHandleToValue(value);
+
+	            // For the effect: tooltip will be shown when finger holding on handle
+	            // button, and will be hidden after finger left handle button.
+	            this._api.dispatchAction({
+	                type: 'hideTip'
+	            });
+	        },
+
+	        /**
+	         * Should be implemenented by sub-class if support `handle`.
+	         * @protected
+	         * @param {number} value
+	         * @param {module:echarts/model/Model} axisModel
+	         * @param {module:echarts/model/Model} axisPointerModel
+	         * @return {Object} {position: [x, y], rotation: 0}
+	         */
+	        getHandleTransform: null,
+
+	        /**
+	         * * Should be implemenented by sub-class if support `handle`.
+	         * @protected
+	         * @param {Object} transform {position, rotation}
+	         * @param {Array.<number>} delta [dx, dy]
+	         * @param {module:echarts/model/Model} axisModel
+	         * @param {module:echarts/model/Model} axisPointerModel
+	         * @return {Object} {position: [x, y], rotation: 0, cursorPoint: [x, y]}
+	         */
+	        updateHandleTransform: null,
+
+	        /**
+	         * @private
+	         */
+	        clear: function (api) {
+	            this._lastValue = null;
+	            this._lastStatus = null;
+
+	            var zr = api.getZr();
+	            var group = this._group;
+	            var handle = this._handle;
+	            if (zr && group) {
+	                this._lastGraphicKey = null;
+	                group && zr.remove(group);
+	                handle && zr.remove(handle);
+	                this._group = null;
+	                this._handle = null;
+	                this._payloadInfo = null;
+	            }
+	        },
+
+	        /**
+	         * @protected
+	         */
+	        doClear: function () {
+	            // Implemented by sub-class if necessary.
+	        },
+
+	        /**
+	         * @protected
+	         * @param {Array.<number>} xy
+	         * @param {Array.<number>} wh
+	         * @param {number} [xDimIndex=0] or 1
+	         */
+	        buildLabel: function (xy, wh, xDimIndex) {
+	            xDimIndex = xDimIndex || 0;
+	            return {
+	                x: xy[xDimIndex],
+	                y: xy[1 - xDimIndex],
+	                width: wh[xDimIndex],
+	                height: wh[1 - xDimIndex]
+	            };
+	        }
+	    };
+
+	    BaseAxisPointer.prototype.constructor = BaseAxisPointer;
+
+
+	    function updateProps(animationModel, moveAnimation, el, props) {
+	        // Animation optimize.
+	        if (!propsEqual(get(el).lastProp, props)) {
+	            get(el).lastProp = props;
+	            moveAnimation
+	                ? graphic.updateProps(el, props, animationModel)
+	                : (el.stopAnimation(), el.attr(props));
+	        }
+	    }
+
+	    function propsEqual(lastProps, newProps) {
+	        if (zrUtil.isObject(lastProps) && zrUtil.isObject(newProps)) {
+	            var equals = true;
+	            zrUtil.each(newProps, function (item, key) {
+	                equals &= propsEqual(lastProps[key], item);
+	            });
+	            return !!equals;
+	        }
+	        else {
+	            return lastProps === newProps;
+	        }
+	    }
+
+	    function updateLabelShowHide(labelEl, axisPointerModel) {
+	        labelEl[axisPointerModel.get('label.show') ? 'show' : 'hide']();
+	    }
+
+	    function getHandleTransProps(trans) {
+	        return {
+	            position: trans.position.slice(),
+	            rotation: trans.rotation || 0
+	        };
+	    }
+
+	    function createIcon(handleModel, handlers) {
+	        var iconStr = handleModel.get('icon');
+	        var style = {
+	            x: -1, y: -1, width: 2, height: 2
+	        };
+	        var opt = zrUtil.extend({
+	            style: {
+	                strokeNoScale: true
+	            },
+	            rectHover: true,
+	            cursor: 'move',
+	            draggable: true
+	        }, handlers);
+
+	        return iconStr.indexOf('image://') === 0
+	            ? (
+	                style.image = iconStr.slice(8),
+	                opt.style = style,
+	                new graphic.Image(opt)
+	            )
+	            : graphic.makePath(
+	                iconStr.replace('path://', ''),
+	                opt,
+	                style,
+	                'center'
+	            );
+	    }
+
+	    function updateMandatoryProps(group, axisPointerModel, silent) {
+	        var z = axisPointerModel.get('z');
+	        var zlevel = axisPointerModel.get('zlevel');
+
+	        group && group.traverse(function (el) {
+	            if (el.type !== 'group') {
+	                z != null && (el.z = z);
+	                zlevel != null && (el.zlevel = zlevel);
+	                el.silent = silent;
+	            }
+	        });
+	    }
+
+	    clazzUtil.enableClassExtend(BaseAxisPointer);
+
+	    module.exports = BaseAxisPointer;
+
+
+/***/ },
+/* 138 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+
+	    var zrUtil = __webpack_require__(4);
+	    var Model = __webpack_require__(12);
+	    var each = zrUtil.each;
+	    var curry = zrUtil.curry;
+
+	    var helper = {};
+
+	    // Build axisPointerModel, mergin tooltip.axisPointer model for each axis.
+	    // allAxesInfo should be updated when setOption performed.
+	    helper.collect = function (ecModel, api) {
+	        var result = {
+	            /**
+	             * key: makeKey(axis.model)
+	             * value: {
+	             *      axis,
+	             *      coordSys,
+	             *      axisPointerModel,
+	             *      triggerTooltip,
+	             *      involveSeries,
+	             *      snap,
+	             *      seriesModels,
+	             *      seriesDataCount
+	             * }
+	             */
+	            axesInfo: {},
+	            seriesInvolved: false,
+	            /**
+	             * key: makeKey(coordSys.model)
+	             * value: Object: key makeKey(axis.model), value: axisInfo
+	             */
+	            coordSysAxesInfo: {},
+	            coordSysMap: {}
+	        };
+
+	        collectAxesInfo(result, ecModel, api);
+
+	        // Check seriesInvolved for performance, in case too many series in some chart.
+	        result.seriesInvolved && collectSeriesInfo(result, ecModel);
+
+	        return result;
+	    };
+
+	    function collectAxesInfo(result, ecModel, api) {
+	        var globalTooltipModel = ecModel.getComponent('tooltip');
+	        var globalAxisPointerModel = ecModel.getComponent('axisPointer');
+	        // links can only be set on global.
+	        var linksOption = globalAxisPointerModel.get('link', true) || [];
+	        var linkGroups = [];
+
+	        // Collect axes info.
+	        each(api.getCoordinateSystems(), function (coordSys) {
+	            // Some coordinate system do not support axes, like geo.
+	            if (!coordSys.axisPointerEnabled) {
+	                return;
+	            }
+
+	            var coordSysKey = makeKey(coordSys.model);
+	            var axesInfoInCoordSys = result.coordSysAxesInfo[coordSysKey] = {};
+	            result.coordSysMap[coordSysKey] = coordSys;
+
+	            // Set tooltip (like 'cross') is a convienent way to show axisPointer
+	            // for user. So we enable seting tooltip on coordSys model.
+	            var coordSysModel = coordSys.model;
+	            var baseTooltipModel = coordSysModel.getModel('tooltip', globalTooltipModel);
+
+	            each(coordSys.getAxes(), curry(saveTooltipAxisInfo, false, null));
+
+	            // If axis tooltip used, choose tooltip axis for each coordSys.
+	            // Notice this case: coordSys is `grid` but not `cartesian2D` here.
+	            if (coordSys.getTooltipAxes
+	                && globalTooltipModel
+	                // If tooltip.showContent is set as false, tooltip will not
+	                // show but axisPointer will show as normal.
+	                && baseTooltipModel.get('show')
+	            ) {
+	                // Compatible with previous logic. But series.tooltip.trigger: 'axis'
+	                // or series.data[n].tooltip.trigger: 'axis' are not support any more.
+	                var triggerAxis = baseTooltipModel.get('trigger') === 'axis';
+	                var cross = baseTooltipModel.get('axisPointer.type') === 'cross';
+	                var tooltipAxes = coordSys.getTooltipAxes(baseTooltipModel.get('axisPointer.axis'));
+	                if (triggerAxis || cross) {
+	                    each(tooltipAxes.baseAxes, curry(
+	                        saveTooltipAxisInfo, cross ? 'cross' : true, triggerAxis
+	                    ));
+	                }
+	                if (cross) {
+	                    each(tooltipAxes.otherAxes, curry(saveTooltipAxisInfo, 'cross', false));
+	                }
+	            }
+
+	            // fromTooltip: true | false | 'cross'
+	            // triggerTooltip: true | false | null
+	            function saveTooltipAxisInfo(fromTooltip, triggerTooltip, axis) {
+	                var axisPointerModel = axis.model.getModel('axisPointer', globalAxisPointerModel);
+
+	                var axisPointerShow = axisPointerModel.get('show');
+	                if (!axisPointerShow || (
+	                    axisPointerShow === 'auto'
+	                    && !fromTooltip
+	                    && !isHandleTrigger(axisPointerModel)
+	                )) {
+	                    return;
+	                }
+
+	                if (triggerTooltip == null) {
+	                    triggerTooltip = axisPointerModel.get('triggerTooltip');
+	                }
+
+	                axisPointerModel = fromTooltip
+	                    ? makeAxisPointerModel(
+	                        axis, baseTooltipModel, globalAxisPointerModel, ecModel,
+	                        fromTooltip, triggerTooltip
+	                    )
+	                    : axisPointerModel;
+
+	                var snap = axisPointerModel.get('snap');
+	                var key = makeKey(axis.model);
+	                var involveSeries = triggerTooltip || snap || axis.type === 'category';
+
+	                // If result.axesInfo[key] exist, override it (tooltip has higher priority).
+	                var axisInfo = result.axesInfo[key] = {
+	                    key: key,
+	                    axis: axis,
+	                    coordSys: coordSys,
+	                    axisPointerModel: axisPointerModel,
+	                    triggerTooltip: triggerTooltip,
+	                    involveSeries: involveSeries,
+	                    snap: snap,
+	                    useHandle: isHandleTrigger(axisPointerModel),
+	                    seriesModels: []
+	                };
+	                axesInfoInCoordSys[key] = axisInfo;
+	                result.seriesInvolved |= involveSeries;
+
+	                var groupIndex = getLinkGroupIndex(linksOption, axis);
+	                if (groupIndex != null) {
+	                    var linkGroup = linkGroups[groupIndex] || (linkGroups[groupIndex] = {axesInfo: {}});
+	                    linkGroup.axesInfo[key] = axisInfo;
+	                    linkGroup.mapper = linksOption[groupIndex].mapper;
+	                    axisInfo.linkGroup = linkGroup;
+	                }
+	            }
+	        });
+	    }
+
+	    function makeAxisPointerModel(
+	        axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip
+	    ) {
+	        var tooltipAxisPointerModel = baseTooltipModel.getModel('axisPointer');
+	        var volatileOption = {};
+
+	        each(
+	            [
+	                'type', 'snap', 'lineStyle', 'shadowStyle', 'label',
+	                'animation', 'animationDurationUpdate', 'animationEasingUpdate', 'z'
+	            ],
+	            function (field) {
+	                volatileOption[field] = zrUtil.clone(tooltipAxisPointerModel.get(field));
+	            }
+	        );
+
+	        // category axis do not auto snap, otherwise some tick that do not
+	        // has value can not be hovered. value/time/log axis default snap if
+	        // triggered from tooltip and trigger tooltip.
+	        volatileOption.snap = axis.type !== 'category' && !!triggerTooltip;
+
+	        // Compatibel with previous behavior, tooltip axis do not show label by default.
+	        // Only these properties can be overrided from tooltip to axisPointer.
+	        if (tooltipAxisPointerModel.get('type') === 'cross') {
+	            volatileOption.type = 'line';
+	        }
+	        var labelOption = volatileOption.label || (volatileOption.label = {});
+	        // Follow the convention, do not show label when triggered by tooltip by default.
+	        labelOption.show == null && (labelOption.show = false);
+
+	        if (fromTooltip === 'cross') {
+	            // When 'cross', both axes show labels.
+	            labelOption.show = true;
+	            // If triggerTooltip, this is a base axis, which should better not use cross style
+	            // (cross style is dashed by default)
+	            if (!triggerTooltip) {
+	                var crossStyle = volatileOption.lineStyle = tooltipAxisPointerModel.get('crossStyle');
+	                crossStyle && zrUtil.defaults(
+	                    labelOption.textStyle || (labelOption.textStyle = {}),
+	                    crossStyle.textStyle
+	                );
+	            }
+	        }
+
+	        return axis.model.getModel(
+	            'axisPointer',
+	            new Model(volatileOption, globalAxisPointerModel, ecModel)
+	        );
+	    }
+
+	    function collectSeriesInfo(result, ecModel) {
+	        // Prepare data for axis trigger
+	        ecModel.eachSeries(function (seriesModel) {
+
+	            // Notice this case: this coordSys is `cartesian2D` but not `grid`.
+	            var coordSys = seriesModel.coordinateSystem;
+	            var seriesTooltipTrigger = seriesModel.get('tooltip.trigger', true);
+	            if (!coordSys
+	                || seriesTooltipTrigger === 'none'
+	                || seriesTooltipTrigger === false
+	                || seriesTooltipTrigger === 'item'
+	                || seriesModel.get('axisPointer.show', true) === false
+	            ) {
+	                return;
+	            }
+
+	            each(result.coordSysAxesInfo[makeKey(coordSys.model)], function (axisInfo) {
+	                var axis = axisInfo.axis;
+	                if (coordSys.getAxis(axis.dim) === axis) {
+	                    axisInfo.seriesModels.push(seriesModel);
+	                    axisInfo.seriesDataCount == null && (axisInfo.seriesDataCount = 0);
+	                    axisInfo.seriesDataCount += seriesModel.getData().count();
+	                }
+	            });
+
+	        }, this);
+	    }
+
+	    /**
+	     * For example:
+	     * {
+	     *     axisPointer: {
+	     *         links: [{
+	     *             xAxisIndex: [2, 4],
+	     *             yAxisIndex: 'all'
+	     *         }, {
+	     *             xAxisId: ['a5', 'a7'],
+	     *             xAxisName: 'xxx'
+	     *         }]
+	     *     }
+	     * }
+	     */
+	    function getLinkGroupIndex(linksOption, axis) {
+	        var axisModel = axis.model;
+	        var dim = axis.dim;
+	        for (var i = 0; i < linksOption.length; i++) {
+	            var linkOption = linksOption[i] || {};
+	            if (checkPropInLink(linkOption[dim + 'AxisId'], axisModel.id)
+	                || checkPropInLink(linkOption[dim + 'AxisIndex'], axisModel.componentIndex)
+	                || checkPropInLink(linkOption[dim + 'AxisName'], axisModel.name)
+	            ) {
+	                return i;
+	            }
+	        }
+	    }
+
+	    function checkPropInLink(linkPropValue, axisPropValue) {
+	        return linkPropValue === 'all'
+	            || (zrUtil.isArray(linkPropValue) && zrUtil.indexOf(linkPropValue, axisPropValue) >= 0)
+	            || linkPropValue === axisPropValue;
+	    }
+
+	    helper.fixValue = function (axisModel) {
+	        var axisInfo = helper.getAxisInfo(axisModel);
+	        if (!axisInfo) {
+	            return;
+	        }
+
+	        var axisPointerModel = axisInfo.axisPointerModel;
+	        var scale = axisInfo.axis.scale;
+	        var option = axisPointerModel.option;
+	        var status = axisPointerModel.get('status');
+	        var value = axisPointerModel.get('value');
+
+	        // Parse init value for category and time axis.
+	        if (value != null) {
+	            value = scale.parse(value);
+	        }
+
+	        var useHandle = isHandleTrigger(axisPointerModel);
+	        // If `handle` used, `axisPointer` will always be displayed, so value
+	        // and status should be initialized.
+	        if (status == null) {
+	            option.status = useHandle ? 'show' : 'hide';
+	        }
+
+	        var extent = scale.getExtent().slice();
+	        extent[0] > extent[1] && extent.reverse();
+
+	        if (// Pick a value on axis when initializing.
+	            value == null
+	            // If both `handle` and `dataZoom` are used, value may be out of axis extent,
+	            // where we should re-pick a value to keep `handle` displaying normally.
+	            || value > extent[1]
+	        ) {
+	            // Make handle displayed on the end of the axis when init, which looks better.
+	            value = extent[1];
+	        }
+	        if (value < extent[0]) {
+	            value = extent[0];
+	        }
+
+	        option.value = value;
+
+	        if (useHandle) {
+	            option.status = axisInfo.axis.scale.isBlank() ? 'hide' : 'show';
+	        }
+	    };
+
+	    helper.getAxisInfo = function (axisModel) {
+	        var coordSysAxesInfo = axisModel.ecModel.getComponent('axisPointer').coordSysAxesInfo;
+	        return coordSysAxesInfo && coordSysAxesInfo.axesInfo[makeKey(axisModel)];
+	    };
+
+	    helper.getAxisPointerModel = function (axisModel) {
+	        var axisInfo = helper.getAxisInfo(axisModel);
+	        return axisInfo && axisInfo.axisPointerModel;
+	    };
+
+	    function isHandleTrigger(axisPointerModel) {
+	        return !!axisPointerModel.get('handle.show');
+	    }
+
+	    /**
+	     * @param {module:echarts/model/Model} model
+	     * @return {string} unique key
+	     */
+	    var makeKey = helper.makeKey = function (model) {
+	        return model.type + '||' + model.id;
+	    };
+
+	    module.exports = helper;
+
+
+
+/***/ },
+/* 139 */
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+
+	    var zrUtil = __webpack_require__(4);
+	    var graphic = __webpack_require__(44);
+	    var textContain = __webpack_require__(8);
+	    var formatUtil = __webpack_require__(6);
+	    var matrix = __webpack_require__(11);
+	    var axisHelper = __webpack_require__(105);
+	    var AxisBuilder = __webpack_require__(135);
+
+	    var helper = {};
+
+	    /**
+	     * @param {module:echarts/model/Model} axisPointerModel
+	     */
+	    helper.buildElStyle = function (axisPointerModel) {
+	        var axisPointerType = axisPointerModel.get('type');
+	        var styleModel = axisPointerModel.getModel(axisPointerType + 'Style');
+	        var style;
+	        if (axisPointerType === 'line') {
+	            style = styleModel.getLineStyle();
+	            style.fill = null;
+	        }
+	        else if (axisPointerType === 'shadow') {
+	            style = styleModel.getAreaStyle();
+	            style.stroke = null;
+	        }
+	        return style;
+	    };
+
+	    /**
+	     * @param {Function} labelPos {align, verticalAlign, position}
+	     */
+	    helper.buildLabelElOption = function (
+	        elOption, axisModel, axisPointerModel, api, labelPos
+	    ) {
+	        var value = axisPointerModel.get('value');
+	        var text = helper.getValueLabel(
+	            value, axisModel.axis, axisModel.ecModel,
+	            axisPointerModel.get('seriesDataIndices'),
+	            {
+	                precision: axisPointerModel.get('label.precision'),
+	                formatter: axisPointerModel.get('label.formatter')
+	            }
+	        );
+	        var labelModel = axisPointerModel.getModel('label');
+	        var textStyleModel = labelModel.getModel('textStyle');
+	        var paddings = formatUtil.normalizeCssArray(labelModel.get('padding') || 0);
+
+	        var font = textStyleModel.getFont();
+	        var textRect = textContain.getBoundingRect(
+	            text, font, labelPos.textAlign, labelPos.textBaseline
+	        );
+
+	        var position = labelPos.position;
+	        var width = textRect.width + paddings[1] + paddings[3];
+	        var height = textRect.height + paddings[0] + paddings[2];
+
+	        // Adjust by align.
+	        var align = labelPos.align;
+	        align === 'right' && (position[0] -= width);
+	        align === 'center' && (position[0] -= width / 2);
+	        var verticalAlign = labelPos.verticalAlign;
+	        verticalAlign === 'bottom' && (position[1] -= height);
+	        verticalAlign === 'middle' && (position[1] -= height / 2);
+
+	        // Not overflow ec container
+	        confineInContainer(position, width, height, api);
+
+	        var bgColor = labelModel.get('backgroundColor');
+	        if (!bgColor || bgColor === 'auto') {
+	            bgColor = axisModel.get('axisLine.lineStyle.color');
+	        }
+
+	        elOption.label = {
+	            shape: {x: 0, y: 0, width: width, height: height, r: labelModel.get('borderRadius')},
+	            position: position.slice(),
+	            style: {
+	                text: text,
+	                textFont: font,
+	                textFill: textStyleModel.getTextColor(),
+	                textPosition: 'inside',
+	                fill: bgColor,
+	                stroke: labelModel.get('borderColor') || 'transparent',
+	                lineWidth: labelModel.get('borderWidth') || 0,
+	                shadowBlur: labelModel.get('shadowBlur'),
+	                shadowColor: labelModel.get('shadowColor'),
+	                shadowOffsetX: labelModel.get('shadowOffsetX'),
+	                shadowOffsetY: labelModel.get('shadowOffsetY')
+	            }
+	        };
+	    };
+
+	    // Do not overflow ec container
+	    function confineInContainer(position, width, height, api) {
+	        var viewWidth = api.getWidth();
+	        var viewHeight = api.getHeight();
+	        position[0] = Math.min(position[0] + width, viewWidth) - width;
+	        position[1] = Math.min(position[1] + height, viewHeight) - height;
+	        position[0] = Math.max(position[0], 0);
+	        position[1] = Math.max(position[1], 0);
+	    }
+
+	    /**
+	     * @param {number} value
+	     * @param {module:echarts/coord/Axis} axis
+	     * @param {module:echarts/model/Global} ecModel
+	     * @param {Object} opt
+	     * @param {Array.<Object>} seriesDataIndices
+	     * @param {number|string} opt.precision 'auto' or a number
+	     * @param {string|Function} opt.formatter label formatter
+	     */
+	    helper.getValueLabel = function (value, axis, ecModel, seriesDataIndices, opt) {
+	        var text = axis.scale.getLabel(
+	            // Use 'pad' to try to fix width, which helps to debounce when when moving label.
+	            value, {precision: opt.precision, pad: true}
+	        );
+	        var formatter = opt.formatter;
+
+	        if (formatter) {
+	            var params = {
+	                value: axisHelper.getAxisRawValue(axis, value),
+	                seriesData: []
+	            };
+	            zrUtil.each(seriesDataIndices, function (idxItem) {
+	                var series = ecModel.getSeriesByIndex(idxItem.seriesIndex);
+	                var dataIndex = idxItem.dataIndexInside;
+	                var dataParams = series && series.getDataParams(dataIndex);
+	                dataParams && params.seriesData.push(dataParams);
+	            });
+
+	            if (zrUtil.isString(formatter)) {
+	                text = formatter.replace('{value}', text);
+	            }
+	            else if (zrUtil.isFunction(formatter)) {
+	                text = formatter(params);
+	            }
+	        }
+
+	        return text;
+	    };
+
+	    /**
+	     * @param {module:echarts/coord/Axis} axis
+	     * @param {number} value
+	     * @param {Object} layoutInfo {
+	     *  rotation, position, labelOffset, labelDirection, labelMargin
+	     * }
+	     */
+	    helper.getTransformedPosition = function (axis, value, layoutInfo) {
+	        var transform = matrix.create();
+	        matrix.rotate(transform, transform, layoutInfo.rotation);
+	        matrix.translate(transform, transform, layoutInfo.position);
+
+	        return graphic.applyTransform([
+	            axis.dataToCoord(value),
+	            (layoutInfo.labelOffset || 0)
+	                + (layoutInfo.labelDirection || 1) * (layoutInfo.labelMargin || 0)
+	        ], transform);
+	    };
+
+	    helper.buildCartesianSingleLabelElOption = function (
+	        value, elOption, layoutInfo, axisModel, axisPointerModel, api
+	    ) {
+	        var textLayout = AxisBuilder.innerTextLayout(
+	            layoutInfo.rotation, 0, layoutInfo.labelDirection
+	        );
+	        layoutInfo.labelMargin = axisPointerModel.get('label.margin');
+	        helper.buildLabelElOption(elOption, axisModel, axisPointerModel, api, {
+	            position: helper.getTransformedPosition(axisModel.axis, value, layoutInfo),
+	            align: textLayout.textAlign,
+	            verticalAlign: textLayout.textVerticalAlign
+	        });
+	    };
+
+	    /**
+	     * @param {Array.<number>} p1
+	     * @param {Array.<number>} p2
+	     * @param {number} [xDimIndex=0] or 1
+	     */
+	    helper.makeLineShape = function (p1, p2, xDimIndex) {
+	        xDimIndex = xDimIndex || 0;
+	        return {
+	            x1: p1[xDimIndex],
+	            y1: p1[1 - xDimIndex],
+	            x2: p2[xDimIndex],
+	            y2: p2[1 - xDimIndex]
+	        };
+	    };
+
+	    /**
+	     * @param {Array.<number>} xy
+	     * @param {Array.<number>} wh
+	     * @param {number} [xDimIndex=0] or 1
+	     */
+	    helper.makeRectShape = function (xy, wh, xDimIndex) {
+	        xDimIndex = xDimIndex || 0;
+	        return {
+	            x: xy[xDimIndex],
+	            y: xy[1 - xDimIndex],
+	            width: wh[xDimIndex],
+	            height: wh[1 - xDimIndex]
+	        };
+	    };
+
+	    helper.makeSectorShape = function (cx, cy, r0, r, startAngle, endAngle) {
+	        return {
+	            cx: cx,
+	            cy: cy,
+	            r0: r0,
+	            r: r,
+	            startAngle: startAngle,
+	            endAngle: endAngle,
+	            clockwise: true
+	        };
+	    };
+
+	    module.exports = helper;
+
+
+/***/ },
+/* 140 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    var zrUtil = __webpack_require__(4);
 
-	    __webpack_require__(114);
+	    var helper = {};
 
-	    __webpack_require__(135);
-	    __webpack_require__(137);
+	    /**
+	     * @param {Object} opt {labelInside}
+	     * @return {Object} {
+	     *  position, rotation, labelDirection, labelOffset,
+	     *  tickDirection, labelRotate, labelInterval, z2
+	     * }
+	     */
+	    helper.layout = function (gridModel, axisModel, opt) {
+	        opt = opt || {};
+	        var grid = gridModel.coordinateSystem;
+	        var axis = axisModel.axis;
+	        var layout = {};
 
-	    var barLayoutGrid = __webpack_require__(140);
+	        var rawAxisPosition = axis.position;
+	        var axisPosition = axis.onZero ? 'onZero' : rawAxisPosition;
+	        var axisDim = axis.dim;
+
+	        // [left, right, top, bottom]
+	        var rect = grid.getRect();
+	        var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height];
+
+	        var axisOffset = axisModel.get('offset') || 0;
+
+	        var posMap = {
+	            x: { top: rectBound[2] - axisOffset, bottom: rectBound[3] + axisOffset },
+	            y: { left: rectBound[0] - axisOffset, right: rectBound[1] + axisOffset }
+	        };
+
+	        posMap.x.onZero = Math.max(Math.min(getZero('y'), posMap.x.bottom), posMap.x.top);
+	        posMap.y.onZero = Math.max(Math.min(getZero('x'), posMap.y.right), posMap.y.left);
+
+	        function getZero(dim, val) {
+	            var theAxis = grid.getAxis(dim);
+	            return theAxis.toGlobalCoord(theAxis.dataToCoord(0));
+	        }
+
+	        // Axis position
+	        layout.position = [
+	            axisDim === 'y' ? posMap.y[axisPosition] : rectBound[0],
+	            axisDim === 'x' ? posMap.x[axisPosition] : rectBound[3]
+	        ];
+
+	        // Axis rotation
+	        layout.rotation = Math.PI / 2 * (axisDim === 'x' ? 0 : 1);
+
+	        // Tick and label direction, x y is axisDim
+	        var dirMap = {top: -1, bottom: 1, left: -1, right: 1};
+
+	        layout.labelDirection = layout.tickDirection = layout.nameDirection = dirMap[rawAxisPosition];
+	        layout.labelOffset = axis.onZero ? posMap[axisDim][rawAxisPosition] - posMap[axisDim].onZero : 0;
+
+	        if (axisModel.get('axisTick.inside')) {
+	            layout.tickDirection = -layout.tickDirection;
+	        }
+	        if (zrUtil.retrieve(opt.labelInside, axisModel.get('axisLabel.inside'))) {
+	            layout.labelDirection = -layout.labelDirection;
+	        }
+
+	        // Special label rotation
+	        var labelRotate = axisModel.get('axisLabel.rotate');
+	        layout.labelRotate = axisPosition === 'top' ? -labelRotate : labelRotate;
+
+	        // label interval when auto mode.
+	        layout.labelInterval = axis.getLabelInterval();
+
+	        // Over splitLine and splitArea
+	        layout.z2 = 1;
+
+	        return layout;
+	    };
+
+	    module.exports = helper;
+
+
+
+/***/ },
+/* 141 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+
+	    var axisPointerModelHelper = __webpack_require__(138);
+
+	    /**
+	     * Base class of AxisView.
+	     */
+	    var AxisView = __webpack_require__(1).extendComponentView({
+
+	        type: 'axis',
+
+	        /**
+	         * @private
+	         */
+	        _axisPointer: null,
+
+	        axisPointerClass: null,
+
+	        /**
+	         * @override
+	         */
+	        render: function (axisModel, ecModel, api, payload) {
+	            // FIXME
+	            // This process should proformed after coordinate systems updated
+	            // (axis scale updated), and should be performed each time update.
+	            // So put it here temporarily, although it is not appropriate to
+	            // put a model-writing procedure in `view`.
+	            axisPointerModelHelper.fixValue(axisModel);
+
+	            AxisView.superApply(this, 'render', arguments);
+	            updateAxisPointer(this, axisModel, ecModel, api, payload, true);
+	        },
+
+	        /**
+	         * Action handler.
+	         * @public
+	         * @param {module:echarts/coord/cartesian/AxisModel} axisModel
+	         * @param {module:echarts/model/Global} ecModel
+	         * @param {module:echarts/ExtensionAPI} api
+	         * @param {Object} payload
+	         */
+	        updateAxisPointer: function (axisModel, ecModel, api, payload, force) {
+	            updateAxisPointer(this, axisModel, ecModel, api, payload, false);
+	        },
+
+	        /**
+	         * @override
+	         */
+	        remove: function (ecModel, api) {
+	            var axisPointer = this._axisPointer;
+	            axisPointer && axisPointer.remove(api);
+	            AxisView.superApply(this, 'remove', arguments);
+	        },
+
+	        /**
+	         * @override
+	         */
+	        dispose: function (ecModel, api) {
+	            disposeAxisPointer(this, api);
+	            AxisView.superApply(this, 'dispose', arguments);
+	        }
+
+	    });
+
+	    function updateAxisPointer(axisView, axisModel, ecModel, api, payload, forceRender) {
+	        if (!axisView.axisPointerClass) {
+	            return;
+	        }
+	        var axisPointerModel = axisPointerModelHelper.getAxisPointerModel(axisModel);
+	        axisPointerModel
+	            ? (axisView._axisPointer || (axisView._axisPointer = new axisView.axisPointerClass()))
+	                .render(axisModel, axisPointerModel, api, forceRender)
+	            : disposeAxisPointer(axisView, api);
+	    }
+
+	    function disposeAxisPointer(axisView, ecModel, api) {
+	        var axisPointer = axisView._axisPointer;
+	        axisPointer && axisPointer.dispose(ecModel, api);
+	        axisView._axisPointer = null;
+	    }
+
+	    module.exports = AxisView;
+
+
+/***/ },
+/* 142 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+
+	    var echarts = __webpack_require__(1);
+	    var axisPointerModelHelper = __webpack_require__(138);
+	    var axisTrigger = __webpack_require__(143);
+	    var zrUtil = __webpack_require__(4);
+
+	    __webpack_require__(145);
+	    __webpack_require__(146);
+
+	    echarts.registerPreprocessor(function (option) {
+	        // Always has a global axisPointerModel for default setting.
+	        if (option) {
+	            (!option.axisPointer || option.axisPointer.length === 0)
+	                && (option.axisPointer = {});
+
+	            var link = option.axisPointer.link;
+	            // Normalize to array to avoid object mergin. But if link
+	            // is not set, remain null/undefined, otherwise it will
+	            // override existent link setting.
+	            if (link && !zrUtil.isArray(link)) {
+	                option.axisPointer.link = [link];
+	            }
+	        }
+	    });
+
+	    // This process should proformed after coordinate systems created
+	    // and series data processed. So put it on statistic processing stage.
+	    echarts.registerProcessor(echarts.PRIORITY.PROCESSOR.STATISTIC, function (ecModel, api) {
+	        // Build axisPointerModel, mergin tooltip.axisPointer model for each axis.
+	        // allAxesInfo should be updated when setOption performed.
+	        ecModel.getComponent('axisPointer').coordSysAxesInfo
+	            = axisPointerModelHelper.collect(ecModel, api);
+	    });
+
+	    // Broadcast to all views.
+	    echarts.registerAction({
+	        type: 'updateAxisPointer',
+	        event: 'updateAxisPointer',
+	        update: ':updateAxisPointer'
+	    }, function (payload, ecModel, api) {
+	        var outputFinder = axisTrigger(
+	            ecModel.getComponent('axisPointer').coordSysAxesInfo,
+	            payload.currTrigger,
+	            payload,
+	            payload.dispatchAction || zrUtil.bind(api.dispatchAction, api),
+	            ecModel,
+	            api,
+	            payload.tooltipOption,
+	            payload.highDownKey
+	        );
+
+	        return outputFinder;
+	    });
+
+
+
+/***/ },
+/* 143 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+
+	    var zrUtil = __webpack_require__(4);
+	    var modelUtil = __webpack_require__(5);
+	    var modelHelper = __webpack_require__(138);
+	    var findPointFromSeries = __webpack_require__(144);
+
+	    var each = zrUtil.each;
+	    var curry = zrUtil.curry;
+	    var get = modelUtil.makeGetter();
+
+	    /**
+	     * Basic logic: check all axis, if they do not demand show/highlight,
+	     * then hide/downplay them.
+	     *
+	     * @param {Object} coordSysAxesInfo
+	     * @param {string} currTrigger 'click' | 'mousemove' | 'leave'
+	     * @param {Object} finder {x, y, xAxisId: ...[], yAxisName: ...[], angleAxisIndex: ...[]}
+	     *              x and y, which are mandatory, specify a point to tigger axisPointer and tooltip.
+	     *              other properties, which are optional, restrict target axes.
+	     * @param {Function} dispatchAction
+	     * @param {module:echarts/ExtensionAPI} api
+	     * @param {Object} tooltipOption
+	     * @param {string} [highDownKey]
+	     * @return {Object} content of event obj for echarts.connect.
+	     */
+	    function axisTrigger(
+	        coordSysAxesInfo, currTrigger, finder, dispatchAction,
+	        ecModel, api, tooltipOption, highDownKey
+	    ) {
+	        var point = [];
+	        if (finder.x != null && finder.y != null) {
+	            point = [finder.x, finder.y];
+	        }
+	        else {
+	            point = findPointFromSeries({
+	                seriesIndex: finder.seriesIndex,
+	                // Do not use dataIndexInside from other ec instance.
+	                // FIXME: auto detect it?
+	                dataIndex: finder.dataIndex
+	            }, ecModel).point;
+	        }
+
+	        var axesInfo = coordSysAxesInfo.axesInfo;
+	        var shouldHide = currTrigger === 'leave' || illegalPoint(point);
+	        var outputFinder = {};
+
+	        var showValueMap = {};
+	        var dataByCoordSys = {list: [], map: {}};
+	        var highlightBatch = [];
+	        var updaters = {
+	            showPointer: curry(showPointer, showValueMap),
+	            showTooltip: curry(showTooltip, dataByCoordSys),
+	            highlight: curry(highlight, highlightBatch)
+	        };
+
+	        // Process for triggered axes.
+	        each(coordSysAxesInfo.coordSysMap, function (coordSys, coordSysKey) {
+	            var coordSysContainsPoint = coordSys.containPoint(point);
+
+	            each(coordSysAxesInfo.coordSysAxesInfo[coordSysKey], function (axisInfo, key) {
+	                var axis = axisInfo.axis;
+	                if (!shouldHide && coordSysContainsPoint && !notTargetAxis(finder, axis)) {
+	                    processOnAxis(axisInfo, axis.pointToData(point), updaters, false, outputFinder);
+	                }
+	            });
+	        });
+
+	        // Process for linked axes.
+	        each(axesInfo, function (tarAxisInfo, tarKey) {
+	            var linkGroup = tarAxisInfo.linkGroup;
+
+	            // If axis has been triggered in the previous stage, it should not be triggered by link.
+	            linkGroup && !showValueMap[tarKey] && each(linkGroup.axesInfo, function (srcAxisInfo, srcKey) {
+	                var srcValItem = showValueMap[srcKey];
+	                // If srcValItem exist, source axis is triggered, so link to target axis.
+	                if (srcAxisInfo !== tarAxisInfo && srcValItem) {
+	                    var val = srcValItem.value;
+	                    linkGroup.mapper && (val = tarAxisInfo.axis.scale.parse(linkGroup.mapper(
+	                        val, makeMapperParam(srcAxisInfo), makeMapperParam(tarAxisInfo)
+	                    )));
+	                    processOnAxis(tarAxisInfo, val, updaters, true, outputFinder);
+	                }
+	            });
+	        });
+
+	        updateModelActually(showValueMap, axesInfo);
+	        dispatchTooltipActually(dataByCoordSys, point, tooltipOption, dispatchAction);
+	        dispatchHighDownActually(highlightBatch, dispatchAction, api, highDownKey);
+
+	        return outputFinder;
+	    }
+
+	    function processOnAxis(axisInfo, newValue, updaters, dontSnap, outputFinder) {
+	        var axis = axisInfo.axis;
+
+	        if (axis.scale.isBlank() || !axis.containData(newValue)) {
+	            return;
+	        }
+
+	        if (!axisInfo.involveSeries) {
+	            updaters.showPointer(axisInfo, newValue);
+	            return;
+	        }
+
+	        // Heavy calculation. So put it after axis.containData checking.
+	        var payloadInfo = buildPayloadsBySeries(newValue, axisInfo);
+	        var payloadBatch = payloadInfo.payloadBatch;
+	        var snapToValue = payloadInfo.snapToValue;
+
+	        // Fill content of event obj for echarts.connect.
+	        // By defualt use the first involved series data as a sample to connect.
+	        if (payloadBatch[0] && outputFinder.seriesIndex == null) {
+	            zrUtil.extend(outputFinder, payloadBatch[0]);
+	        }
+
+	        // If no linkSource input, this process is for collecting link
+	        // target, where snap should not be accepted.
+	        if (!dontSnap && axisInfo.snap) {
+	            if (axis.containData(snapToValue) && snapToValue != null) {
+	                newValue = snapToValue;
+	            }
+	        }
+
+	        updaters.highlight('highlight', payloadBatch);
+	        updaters.showPointer(axisInfo, newValue, payloadBatch);
+	        // Tooltip should always be snapToValue, otherwise there will be
+	        // incorrect "axis value ~ series value" mapping displayed in tooltip.
+	        updaters.showTooltip(axisInfo, payloadInfo, snapToValue);
+	    }
+
+	    function buildPayloadsBySeries(value, axisInfo) {
+	        var axis = axisInfo.axis;
+	        var dim = axis.dim;
+	        var snapToValue = value;
+	        var payloadBatch = [];
+	        var minDist = Number.MAX_VALUE;
+	        var minDiff = -1;
+
+	        each(axisInfo.seriesModels, function (series, idx) {
+	            var dataDim = series.coordDimToDataDim(dim);
+	            var seriesNestestValue;
+	            var dataIndices;
+
+	            if (series.getAxisTooltipData) {
+	                var result = series.getAxisTooltipData(dataDim, value, axis);
+	                dataIndices = result.dataIndices;
+	                seriesNestestValue = result.nestestValue;
+	            }
+	            else {
+	                dataIndices = series.getData().indexOfNearest(
+	                    dataDim[0],
+	                    value,
+	                    // Add a threshold to avoid find the wrong dataIndex
+	                    // when data length is not same.
+	                    false, axis.type === 'category' ? 0.5 : null
+	                );
+	                if (!dataIndices.length) {
+	                    return;
+	                }
+	                seriesNestestValue = series.getData().get(dataDim[0], dataIndices[0]);
+	            }
+
+	            if (seriesNestestValue == null || !isFinite(seriesNestestValue)) {
+	                return;
+	            }
+
+	            var diff = value - seriesNestestValue;
+	            var dist = Math.abs(diff);
+	            // Consider category case
+	            if (dist <= minDist) {
+	                if (dist < minDist || (diff >= 0 && minDiff < 0)) {
+	                    minDist = dist;
+	                    minDiff = diff;
+	                    snapToValue = seriesNestestValue;
+	                    payloadBatch.length = 0;
+	                }
+	                each(dataIndices, function (dataIndex) {
+	                    payloadBatch.push({
+	                        seriesIndex: series.seriesIndex,
+	                        dataIndexInside: dataIndex,
+	                        dataIndex: series.getData().getRawIndex(dataIndex)
+	                    });
+	                });
+	            }
+	        });
+
+	        return {
+	            payloadBatch: payloadBatch,
+	            snapToValue: snapToValue
+	        };
+	    }
+
+	    function showPointer(showValueMap, axisInfo, value, payloadBatch) {
+	        showValueMap[axisInfo.key] = {value: value, payloadBatch: payloadBatch};
+	    }
+
+	    function showTooltip(dataByCoordSys, axisInfo, payloadInfo, value) {
+	        var payloadBatch = payloadInfo.payloadBatch;
+	        var axis = axisInfo.axis;
+	        var axisModel = axis.model;
+	        var axisPointerModel = axisInfo.axisPointerModel;
+
+	        // If no data, do not create anything in dataByCoordSys,
+	        // whose length will be used to judge whether dispatch action.
+	        if (!axisInfo.triggerTooltip || !payloadBatch.length) {
+	            return;
+	        }
+
+	        var coordSysModel = axisInfo.coordSys.model;
+	        var coordSysKey = modelHelper.makeKey(coordSysModel);
+	        var coordSysItem = dataByCoordSys.map[coordSysKey];
+	        if (!coordSysItem) {
+	            coordSysItem = dataByCoordSys.map[coordSysKey] = {
+	                coordSysId: coordSysModel.id,
+	                coordSysIndex: coordSysModel.componentIndex,
+	                coordSysType: coordSysModel.type,
+	                coordSysMainType: coordSysModel.mainType,
+	                dataByAxis: []
+	            };
+	            dataByCoordSys.list.push(coordSysItem);
+	        }
+
+	        coordSysItem.dataByAxis.push({
+	            axisDim: axis.dim,
+	            axisIndex: axisModel.componentIndex,
+	            axisType: axisModel.type,
+	            axisId: axisModel.id,
+	            value: value,
+	            // Caustion: viewHelper.getValueLabel is actually on "view stage", which
+	            // depends that all models have been updated. So it should not be performed
+	            // here. Considering axisPointerModel used here is volatile, which is hard
+	            // to be retrieve in TooltipView, we prepare parameters here.
+	            valueLabelOpt: {
+	                precision: axisPointerModel.get('label.precision'),
+	                formatter: axisPointerModel.get('label.formatter')
+	            },
+	            seriesDataIndices: payloadBatch.slice()
+	        });
+	    }
+
+	    function highlight(highlightBatch, actionType, batch) {
+	        highlightBatch.push.apply(highlightBatch, batch);
+	    }
+
+	    function updateModelActually(showValueMap, axesInfo) {
+	        // Basic logic: If no 'show' required, 'hide' this axisPointer.
+	        each(axesInfo, function (axisInfo, key) {
+	            var option = axisInfo.axisPointerModel.option;
+	            var valItem = showValueMap[key];
+
+	            if (valItem) {
+	                !axisInfo.useHandle && (option.status = 'show');
+	                option.value = valItem.value;
+	                // For label formatter param.
+	                option.seriesDataIndices = (valItem.payloadBatch || []).slice();
+	            }
+	            // When always show (e.g., handle used), remain
+	            // original value and status.
+	            else {
+	                // If hide, value still need to be set, consider
+	                // click legend to toggle axis blank.
+	                !axisInfo.useHandle && (option.status = 'hide');
+	            }
+	        });
+	    }
+
+	    function dispatchTooltipActually(dataByCoordSys, point, tooltipOption, dispatchAction) {
+	        // Basic logic: If no showTip required, hideTip will be dispatched.
+	        if (illegalPoint(point) || !dataByCoordSys.list.length) {
+	            dispatchAction({type: 'hideTip'});
+	            return;
+	        }
+
+	        // In most case only one axis (or event one series is used). It is
+	        // convinient to fetch payload.seriesIndex and payload.dataIndex
+	        // dirtectly. So put the first seriesIndex and dataIndex of the first
+	        // axis on the payload.
+	        var sampleItem = ((dataByCoordSys.list[0].dataByAxis[0] || {}).seriesDataIndices || [])[0] || {};
+
+	        dispatchAction({
+	            type: 'showTip',
+	            escapeConnect: true,
+	            x: point[0],
+	            y: point[1],
+	            tooltipOption: tooltipOption,
+	            dataIndexInside: sampleItem.dataIndexInside,
+	            dataIndex: sampleItem.dataIndex,
+	            seriesIndex: sampleItem.seriesIndex,
+	            dataByCoordSys: dataByCoordSys.list
+	        });
+	    }
+
+	    function dispatchHighDownActually(highlightBatch, dispatchAction, api, highDownKey) {
+	        // Basic logic: If nothing highlighted, should downplay all highlighted items.
+	        // This case will occur when mouse leave coordSys.
+
+	        // FIXME
+	        // (1) highlight status shoule be managemented in series.getData()?
+	        // (2) If axisPointer A triggerOn 'handle' and axisPointer B triggerOn
+	        // 'mousemove', items highlighted by A will be downplayed by B.
+	        // It will not be fixed until someone requires this scenario.
+
+	        // Consider items area hightlighted by 'handle', and globalListener may
+	        // downplay all items (including just highlighted ones) when mousemove.
+	        // So we use a highDownKey to separate them as a temporary solution.
+	        var zr = api.getZr();
+	        highDownKey = 'lastHighlights' + (highDownKey || '');
+	        var lastHighlights = get(zr)[highDownKey] || {};
+	        var newHighlights = get(zr)[highDownKey] = {};
+
+	        // Build hash map and remove duplicate incidentally.
+	        zrUtil.each(highlightBatch, function (batchItem) {
+	            var key = batchItem.seriesIndex + ' | ' + batchItem.dataIndex;
+	            newHighlights[key] = batchItem;
+	        });
+
+	        // Diff.
+	        var toHighlight = [];
+	        var toDownplay = [];
+	        zrUtil.each(lastHighlights, function (batchItem, key) {
+	            !newHighlights[key] && toDownplay.push(batchItem);
+	        });
+	        zrUtil.each(newHighlights, function (batchItem, key) {
+	            !lastHighlights[key] && toHighlight.push(batchItem);
+	        });
+
+	        toDownplay.length && api.dispatchAction({
+	            type: 'downplay', escapeConnect: true, batch: toDownplay
+	        });
+	        toHighlight.length && api.dispatchAction({
+	            type: 'highlight', escapeConnect: true, batch: toHighlight
+	        });
+	    }
+
+	    function notTargetAxis(finder, axis) {
+	        var isTarget = 1;
+	        // If none of xxxAxisId and xxxAxisName and xxxAxisIndex exists in finder,
+	        // no axis is not target axis.
+	        each(finder, function (value, propName) {
+	            isTarget &= !(/^.+(AxisId|AxisName|AxisIndex)$/.test(propName));
+	        });
+	        !isTarget && each(
+	            [['AxisId', 'id'], ['AxisIndex', 'componentIndex'], ['AxisName', 'name']],
+	            function (prop) {
+	                var vals = modelUtil.normalizeToArray(finder[axis.dim + prop[0]]);
+	                isTarget |= zrUtil.indexOf(vals, axis.model[prop[1]]) >= 0;
+	            }
+	        );
+	        return !isTarget;
+	    }
+
+	    function makeMapperParam(axisInfo) {
+	        var axisModel = axisInfo.axis.model;
+	        var item = {};
+	        var dim = item.axisDim = axisInfo.axis.dim;
+	        item.axisIndex = item[dim + 'AxisIndex'] = axisModel.componentIndex;
+	        item.axisName = item[dim + 'AxisName'] = axisModel.name;
+	        item.axisId = item[dim + 'AxisId'] = axisModel.id;
+	        return item;
+	    }
+
+	    function illegalPoint(point) {
+	        return point[0] == null || isNaN(point[0]) || point[1] == null || isNaN(point[1]);
+	    }
+
+	    module.exports = axisTrigger;
+
+
+/***/ },
+/* 144 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+
+	    var zrUtil = __webpack_require__(4);
+	    var modelUtil = __webpack_require__(5);
+
+	    /**
+	     * @param {Object} finder contains {seriesIndex, dataIndex, dataIndexInside}
+	     * @param {module:echarts/model/Global} ecModel
+	     * @return {Object} {point: [x, y], el: ...} point Will not be null.
+	     */
+	    module.exports = function (finder, ecModel) {
+	        var point = [];
+	        var seriesIndex = finder.seriesIndex;
+	        var seriesModel;
+	        if (seriesIndex == null || !(
+	            seriesModel = ecModel.getSeriesByIndex(seriesIndex)
+	        )) {
+	            return {point: []};
+	        }
+
+	        var data = seriesModel.getData();
+	        var dataIndex = modelUtil.queryDataIndex(data, finder);
+	        if (dataIndex == null || zrUtil.isArray(dataIndex)) {
+	            return {point: []};
+	        }
+
+	        var el = data.getItemGraphicEl(dataIndex);
+	        var coordSys = seriesModel.coordinateSystem;
+
+	        if (seriesModel.getTooltipPosition) {
+	            point = seriesModel.getTooltipPosition(dataIndex) || [];
+	        }
+	        else if (coordSys && coordSys.dataToPoint) {
+	            point = coordSys.dataToPoint(
+	                data.getValues(
+	                    zrUtil.map(coordSys.dimensions, function (dim) {
+	                        return seriesModel.coordDimToDataDim(dim)[0];
+	                    }), dataIndex, true
+	                )
+	            ) || [];
+	        }
+	        else if (el) {
+	            // Use graphic bounding rect
+	            var rect = el.getBoundingRect().clone();
+	            rect.applyTransform(el.transform);
+	            point = [
+	                rect.x + rect.width / 2,
+	                rect.y + rect.height / 2
+	            ];
+	        }
+
+	        return {point: point, el: el};
+	    };
+
+
+
+
+/***/ },
+/* 145 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+
+	    var echarts = __webpack_require__(1);
+
+	    var AxisPointerModel = echarts.extendComponentModel({
+
+	        type: 'axisPointer',
+
+	        coordSysAxesInfo: null,
+
+	        defaultOption: {
+	            // 'auto' means that show when triggered by tooltip or handle.
+	            show: 'auto',
+	            // 'click' | 'mousemove' | 'none'
+	            triggerOn: null, // set default in AxisPonterView.js
+
+	            zlevel: 0,
+	            z: 50,
+
+	            type: 'line',
+	            // axispointer triggered by tootip determine snap automatically,
+	            // see `modelHelper`.
+	            snap: false,
+	            triggerTooltip: true,
+
+	            value: null,
+	            status: null, // Init value depends on whether handle is used.
+
+	            // [group0, group1, ...]
+	            // Each group can be: {
+	            //      mapper: function () {},
+	            //      singleTooltip: 'multiple',  // 'multiple' or 'single'
+	            //      xAxisId: ...,
+	            //      yAxisName: ...,
+	            //      angleAxisIndex: ...
+	            // }
+	            // mapper: can be ignored.
+	            //      input: {axisInfo, value}
+	            //      output: {axisInfo, value}
+	            link: [],
+
+	            // Do not set 'auto' here, otherwise global animation: false
+	            // will not effect at this axispointer.
+	            animation: null,
+	            animationDurationUpdate: 200,
+
+	            lineStyle: {
+	                color: '#aaa',
+	                width: 1,
+	                type: 'solid'
+	            },
+
+	            shadowStyle: {
+	                color: 'rgba(150,150,150,0.3)'
+	            },
+
+	            label: {
+	                show: true,
+	                formatter: null, // string | Function
+	                precision: 'auto', // Or a number like 0, 1, 2 ...
+	                margin: 3,
+	                textStyle: {
+	                    color: '#fff'
+	                },
+	                padding: [5, 7, 5, 7],
+	                backgroundColor: 'auto', // default: axis line color
+	                borderColor: null,
+	                borderWidth: 0,
+	                shadowBlur: 3,
+	                shadowColor: '#aaa'
+	                // Considering applicability, common style should
+	                // better not have shadowOffset.
+	                // shadowOffsetX: 0,
+	                // shadowOffsetY: 2
+	            },
+
+	            handle: {
+	                show: false,
+	                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.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z', // jshint ignore:line
+	                size: 45,
+	                // handle margin is from symbol center to axis, which is stable when circular move.
+	                margin: 50,
+	                // color: '#1b8bbd'
+	                // color: '#2f4554'
+	                color: '#333',
+	                shadowBlur: 3,
+	                shadowColor: '#aaa',
+	                shadowOffsetX: 0,
+	                shadowOffsetY: 2,
+
+	                // For mobile performance
+	                throttle: 40
+	            }
+	        }
+
+	    });
+
+	    module.exports = AxisPointerModel;
+
+
+
+/***/ },
+/* 146 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+
+	    var globalListener = __webpack_require__(147);
+
+	    var AxisPonterView = __webpack_require__(1).extendComponentView({
+
+	        type: 'axisPointer',
+
+	        render: function (globalAxisPointerModel, ecModel, api) {
+	            var globalTooltipModel = ecModel.getComponent('tooltip');
+	            var triggerOn = globalAxisPointerModel.get('triggerOn')
+	                || (globalTooltipModel && globalTooltipModel.get('triggerOn') || 'mousemove|click');
+
+	            // Register global listener in AxisPointerView to enable
+	            // AxisPointerView to be independent to Tooltip.
+	            globalListener.register(
+	                'axisPointer',
+	                api,
+	                function (currTrigger, e, dispatchAction) {
+	                    // If 'none', it is not controlled by mouse totally.
+	                    if (triggerOn !== 'none'
+	                        && (currTrigger === 'leave' || triggerOn.indexOf(currTrigger) >= 0)
+	                    ) {
+	                        dispatchAction({
+	                            type: 'updateAxisPointer',
+	                            currTrigger: currTrigger,
+	                            x: e && e.offsetX,
+	                            y: e && e.offsetY
+	                        });
+	                    }
+	                }
+	            );
+	        },
+
+	        /**
+	         * @override
+	         */
+	        remove: function (ecModel, api) {
+	            globalListener.disopse(api.getZr(), 'axisPointer');
+	            AxisPonterView.superApply(this._model, 'remove', arguments);
+	        },
+
+	        /**
+	         * @override
+	         */
+	        dispose: function (ecModel, api) {
+	            globalListener.unregister('axisPointer', api);
+	            AxisPonterView.superApply(this._model, 'dispose', arguments);
+	        }
+
+	    });
+
+
+
+/***/ },
+/* 147 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+
+	    var env = __webpack_require__(2);
+	    var zrUtil = __webpack_require__(4);
+	    var get = __webpack_require__(5).makeGetter();
+
+	    var each = zrUtil.each;
+
+	    var globalListener = {};
+
+	    /**
+	     * @param {string} key
+	     * @param {module:echarts/ExtensionAPI} api
+	     * @param {Function} handler
+	     *      param: {string} currTrigger
+	     *      param: {Array.<number>} point
+	     */
+	    globalListener.register = function (key, api, handler) {
+	        if (env.node) {
+	            return;
+	        }
+
+	        var zr = api.getZr();
+	        get(zr).records || (get(zr).records = {});
+
+	        initGlobalListeners(zr, api);
+
+	        var record = get(zr).records[key] || (get(zr).records[key] = {});
+	        record.handler = handler;
+	    };
+
+	    function initGlobalListeners(zr, api) {
+	        if (get(zr).initialized) {
+	            return;
+	        }
+
+	        get(zr).initialized = true;
+
+	        useHandler('click', zrUtil.curry(doEnter, 'click'));
+	        useHandler('mousemove', zrUtil.curry(doEnter, 'mousemove'));
+	        // useHandler('mouseout', onLeave);
+	        useHandler('globalout', onLeave);
+
+	        function useHandler(eventType, cb) {
+	            zr.on(eventType, function (e) {
+	                var dis = makeDispatchAction(api);
+
+	                each(get(zr).records, function (record) {
+	                    record && cb(record, e, dis.dispatchAction);
+	                });
+
+	                dispatchTooltipFinally(dis.pendings, api);
+	            });
+	        }
+	    }
+
+	    function dispatchTooltipFinally(pendings, api) {
+	        var showLen = pendings.showTip.length;
+	        var hideLen = pendings.hideTip.length;
+
+	        var actuallyPayload;
+	        if (showLen) {
+	            actuallyPayload = pendings.showTip[showLen - 1];
+	        }
+	        else if (hideLen) {
+	            actuallyPayload = pendings.hideTip[hideLen - 1];
+	        }
+	        if (actuallyPayload) {
+	            actuallyPayload.dispatchAction = null;
+	            api.dispatchAction(actuallyPayload);
+	        }
+	    }
+
+	    function onLeave(record, e, dispatchAction) {
+	        record.handler('leave', null, dispatchAction);
+	    }
+
+	    function doEnter(currTrigger, record, e, dispatchAction) {
+	        record.handler(currTrigger, e, dispatchAction);
+	    }
+
+	    function makeDispatchAction(api) {
+	        var pendings = {
+	            showTip: [],
+	            hideTip: []
+	        };
+	        // FIXME
+	        // better approach?
+	        // 'showTip' and 'hideTip' can be triggered by axisPointer and tooltip,
+	        // which may be conflict, (axisPointer call showTip but tooltip call hideTip);
+	        // So we have to add "final stage" to merge those dispatched actions.
+	        var dispatchAction = function (payload) {
+	            var pendingList = pendings[payload.type];
+	            if (pendingList) {
+	                pendingList.push(payload);
+	            }
+	            else {
+	                payload.dispatchAction = dispatchAction;
+	                api.dispatchAction(payload);
+	            }
+	        };
+
+	        return {
+	            dispatchAction: dispatchAction,
+	            pendings: pendings
+	        };
+	    }
+
+	    /**
+	     * @param {string} key
+	     * @param {module:echarts/ExtensionAPI} api
+	     */
+	    globalListener.unregister = function (key, api) {
+	        if (env.node) {
+	            return;
+	        }
+	        var zr = api.getZr();
+	        var record = (get(zr).records || {})[key];
+	        if (record) {
+	            get(zr).records[key] = null;
+	        }
+	    };
+
+	    module.exports = globalListener;
+
+
+/***/ },
+/* 148 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+
+	    var zrUtil = __webpack_require__(4);
+
+	    __webpack_require__(124);
+
+	    __webpack_require__(149);
+	    __webpack_require__(151);
+
+	    var barLayoutGrid = __webpack_require__(154);
 	    var echarts = __webpack_require__(1);
 
 	    echarts.registerLayout(zrUtil.curry(barLayoutGrid, 'bar'));
@@ -29303,16 +32034,16 @@
 	    });
 
 	    // In case developer forget to include grid component
-	    __webpack_require__(113);
+	    __webpack_require__(122);
 
 
 /***/ },
-/* 135 */
+/* 149 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    module.exports = __webpack_require__(136).extend({
+	    module.exports = __webpack_require__(150).extend({
 
 	        type: 'series.bar',
 
@@ -29323,7 +32054,7 @@
 
 
 /***/ },
-/* 136 */
+/* 150 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -29398,21 +32129,21 @@
 
 
 /***/ },
-/* 137 */
+/* 151 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
 
 
 	    var zrUtil = __webpack_require__(4);
-	    var graphic = __webpack_require__(43);
-	    var helper = __webpack_require__(138);
+	    var graphic = __webpack_require__(44);
+	    var helper = __webpack_require__(152);
 
 	    var BAR_BORDER_WIDTH_QUERY = ['itemStyle', 'normal', 'barBorderWidth'];
 
 	    // FIXME
 	    // Just for compatible with ec2.
-	    zrUtil.extend(__webpack_require__(12).prototype, __webpack_require__(139));
+	    zrUtil.extend(__webpack_require__(12).prototype, __webpack_require__(153));
 
 	    var BarView = __webpack_require__(1).extendChartView({
 
@@ -29586,13 +32317,13 @@
 
 
 /***/ },
-/* 138 */
+/* 152 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    var zrUtil = __webpack_require__(4);
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 
 	    var helper = {};
 
@@ -29643,7 +32374,7 @@
 
 
 /***/ },
-/* 139 */
+/* 153 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -29677,7 +32408,7 @@
 
 
 /***/ },
-/* 140 */
+/* 154 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -29929,7 +32660,7 @@
 
 
 /***/ },
-/* 141 */
+/* 155 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -29937,10 +32668,10 @@
 	    var zrUtil = __webpack_require__(4);
 	    var echarts = __webpack_require__(1);
 
-	    __webpack_require__(142);
-	    __webpack_require__(144);
+	    __webpack_require__(156);
+	    __webpack_require__(158);
 
-	    __webpack_require__(145)('pie', [{
+	    __webpack_require__(159)('pie', [{
 	        type: 'pieToggleSelect',
 	        event: 'pieselectchanged',
 	        method: 'toggleSelected'
@@ -29954,17 +32685,17 @@
 	        method: 'unSelect'
 	    }]);
 
-	    echarts.registerVisual(zrUtil.curry(__webpack_require__(146), 'pie'));
+	    echarts.registerVisual(zrUtil.curry(__webpack_require__(160), 'pie'));
 
 	    echarts.registerLayout(zrUtil.curry(
-	        __webpack_require__(147), 'pie'
+	        __webpack_require__(161), 'pie'
 	    ));
 
-	    echarts.registerProcessor(zrUtil.curry(__webpack_require__(149), 'pie'));
+	    echarts.registerProcessor(zrUtil.curry(__webpack_require__(163), 'pie'));
 
 
 /***/ },
-/* 142 */
+/* 156 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -29975,7 +32706,7 @@
 	    var modelUtil = __webpack_require__(5);
 	    var completeDimensions = __webpack_require__(103);
 
-	    var dataSelectableMixin = __webpack_require__(143);
+	    var dataSelectableMixin = __webpack_require__(157);
 
 	    var PieSeries = __webpack_require__(1).extendSeriesModel({
 
@@ -30114,7 +32845,7 @@
 
 
 /***/ },
-/* 143 */
+/* 157 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -30184,12 +32915,12 @@
 
 
 /***/ },
-/* 144 */
+/* 158 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 	    var zrUtil = __webpack_require__(4);
 
 	    /**
@@ -30467,7 +33198,7 @@
 
 
 	    // Pie view
-	    var Pie = __webpack_require__(42).extend({
+	    var Pie = __webpack_require__(43).extend({
 
 	        type: 'pie',
 
@@ -30590,7 +33321,7 @@
 
 
 /***/ },
-/* 145 */
+/* 159 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -30630,7 +33361,7 @@
 
 
 /***/ },
-/* 146 */
+/* 160 */
 /***/ function(module, exports) {
 
 	// Pick color from palette for each data item.
@@ -30681,7 +33412,7 @@
 
 
 /***/ },
-/* 147 */
+/* 161 */
 /***/ function(module, exports, __webpack_require__) {
 
 	// TODO minAngle
@@ -30690,7 +33421,7 @@
 
 	    var numberUtil = __webpack_require__(7);
 	    var parsePercent = numberUtil.parsePercent;
-	    var labelLayout = __webpack_require__(148);
+	    var labelLayout = __webpack_require__(162);
 	    var zrUtil = __webpack_require__(4);
 
 	    var PI2 = Math.PI * 2;
@@ -30827,7 +33558,7 @@
 
 
 /***/ },
-/* 148 */
+/* 162 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -31058,7 +33789,7 @@
 
 
 /***/ },
-/* 149 */
+/* 163 */
 /***/ function(module, exports) {
 
 	
@@ -31086,7 +33817,7 @@
 
 
 /***/ },
-/* 150 */
+/* 164 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -31094,22 +33825,22 @@
 	    var zrUtil = __webpack_require__(4);
 	    var echarts = __webpack_require__(1);
 
-	    __webpack_require__(151);
-	    __webpack_require__(152);
+	    __webpack_require__(165);
+	    __webpack_require__(166);
 
 	    echarts.registerVisual(zrUtil.curry(
-	        __webpack_require__(110), 'scatter', 'circle', null
+	        __webpack_require__(119), 'scatter', 'circle', null
 	    ));
 	    echarts.registerLayout(zrUtil.curry(
-	        __webpack_require__(111), 'scatter'
+	        __webpack_require__(120), 'scatter'
 	    ));
 
 	    // In case developer forget to include grid component
-	    __webpack_require__(113);
+	    __webpack_require__(122);
 
 
 /***/ },
-/* 151 */
+/* 165 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -31122,7 +33853,7 @@
 
 	        type: 'series.scatter',
 
-	        dependencies: ['grid', 'polar'],
+	        dependencies: ['grid', 'polar', 'geo', 'singleAxis'],
 
 	        getInitialData: function (option, ecModel) {
 	            var list = createListFromArray(option.data, this, ecModel);
@@ -31178,13 +33909,13 @@
 
 
 /***/ },
-/* 152 */
+/* 166 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var SymbolDraw = __webpack_require__(105);
-	    var LargeSymbolDraw = __webpack_require__(153);
+	    var SymbolDraw = __webpack_require__(115);
+	    var LargeSymbolDraw = __webpack_require__(167);
 
 	    __webpack_require__(1).extendChartView({
 
@@ -31227,15 +33958,15 @@
 
 
 /***/ },
-/* 153 */
+/* 167 */
 /***/ function(module, exports, __webpack_require__) {
 
 	// TODO Batch by color
 
 
 
-	    var graphic = __webpack_require__(43);
-	    var symbolUtil = __webpack_require__(107);
+	    var graphic = __webpack_require__(44);
+	    var symbolUtil = __webpack_require__(104);
 
 	    var LargeSymbolPath = graphic.extendShape({
 
@@ -31378,7 +34109,7 @@
 
 
 /***/ },
-/* 154 */
+/* 168 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -31387,48 +34118,48 @@
 	    var echarts = __webpack_require__(1);
 
 	    // Must use radar component
-	    __webpack_require__(155);
+	    __webpack_require__(169);
 
-	    __webpack_require__(160);
-	    __webpack_require__(161);
+	    __webpack_require__(174);
+	    __webpack_require__(175);
 
-	    echarts.registerVisual(zrUtil.curry(__webpack_require__(146), 'radar'));
+	    echarts.registerVisual(zrUtil.curry(__webpack_require__(160), 'radar'));
 	    echarts.registerVisual(zrUtil.curry(
-	        __webpack_require__(110), 'radar', 'circle', null
+	        __webpack_require__(119), 'radar', 'circle', null
 	    ));
-	    echarts.registerLayout(__webpack_require__(162));
+	    echarts.registerLayout(__webpack_require__(176));
 
 	    echarts.registerProcessor(
-	        zrUtil.curry(__webpack_require__(149), 'radar')
+	        zrUtil.curry(__webpack_require__(163), 'radar')
 	    );
 
-	    echarts.registerPreprocessor(__webpack_require__(163));
+	    echarts.registerPreprocessor(__webpack_require__(177));
 
 
 /***/ },
-/* 155 */
+/* 169 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    __webpack_require__(156);
-	    __webpack_require__(158);
+	    __webpack_require__(170);
+	    __webpack_require__(172);
 
-	    __webpack_require__(159);
+	    __webpack_require__(173);
 
 
 /***/ },
-/* 156 */
+/* 170 */
 /***/ function(module, exports, __webpack_require__) {
 
 	// TODO clockwise
 
 
 	    var zrUtil = __webpack_require__(4);
-	    var IndicatorAxis = __webpack_require__(157);
-	    var IntervalScale = __webpack_require__(118);
+	    var IndicatorAxis = __webpack_require__(171);
+	    var IntervalScale = __webpack_require__(108);
 	    var numberUtil = __webpack_require__(7);
-	    var axisHelper = __webpack_require__(115);
+	    var axisHelper = __webpack_require__(105);
 
 	    function Radar(radarModel, ecModel, api) {
 
@@ -31574,8 +34305,8 @@
 	        }
 	        // Force all the axis fixing the maxSplitNumber.
 	        zrUtil.each(indicatorAxes, function (indicatorAxis, idx) {
-	            var rawExtent = axisHelper.getScaleExtent(indicatorAxis, indicatorAxis.model);
-	            axisHelper.niceScaleExtent(indicatorAxis, indicatorAxis.model);
+	            var rawExtent = axisHelper.getScaleExtent(indicatorAxis.scale, indicatorAxis.model);
+	            axisHelper.niceScaleExtent(indicatorAxis.scale, indicatorAxis.model);
 
 	            var axisModel = indicatorAxis.model;
 	            var scale = indicatorAxis.scale;
@@ -31657,13 +34388,13 @@
 
 
 /***/ },
-/* 157 */
+/* 171 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    var zrUtil = __webpack_require__(4);
-	    var Axis = __webpack_require__(124);
+	    var Axis = __webpack_require__(100);
 
 	    function IndicatorAxis(dim, scale, radiusExtent) {
 	        Axis.call(this, dim, scale, radiusExtent);
@@ -31697,18 +34428,18 @@
 
 
 /***/ },
-/* 158 */
+/* 172 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 
-	    var axisDefault = __webpack_require__(129);
+	    var axisDefault = __webpack_require__(132);
 	    var valueAxisDefault = axisDefault.valueAxis;
 	    var Model = __webpack_require__(12);
 	    var zrUtil = __webpack_require__(4);
 
-	    var axisModelCommonMixin = __webpack_require__(130);
+	    var axisModelCommonMixin = __webpack_require__(111);
 
 	    function defaultsShow(opt, show) {
 	        return zrUtil.defaults({
@@ -31837,14 +34568,14 @@
 
 
 /***/ },
-/* 159 */
+/* 173 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var AxisBuilder = __webpack_require__(133);
+	    var AxisBuilder = __webpack_require__(135);
 	    var zrUtil = __webpack_require__(4);
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 
 	    var axisBuilderAttrs = [
 	        'axisLine', 'axisLabel', 'axisTick', 'axisName'
@@ -32017,7 +34748,7 @@
 
 
 /***/ },
-/* 160 */
+/* 174 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -32050,7 +34781,7 @@
 	        getInitialData: function (option, ecModel) {
 	            var data = option.data || [];
 	            var dimensions = completeDimensions(
-	                [], data, [], 'indicator_'
+	                [], data, {extraPrefix: 'indicator_'}
 	            );
 	            var list = new List(dimensions, this);
 	            list.initData(data);
@@ -32098,14 +34829,14 @@
 
 
 /***/ },
-/* 161 */
+/* 175 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 	    var zrUtil = __webpack_require__(4);
-	    var symbolUtil = __webpack_require__(107);
+	    var symbolUtil = __webpack_require__(104);
 
 	    function normalizeSymbolSize(symbolSize) {
 	        if (!zrUtil.isArray(symbolSize)) {
@@ -32324,7 +35055,7 @@
 
 
 /***/ },
-/* 162 */
+/* 176 */
 /***/ function(module, exports) {
 
 	
@@ -32357,7 +35088,7 @@
 
 
 /***/ },
-/* 163 */
+/* 177 */
 /***/ function(module, exports, __webpack_require__) {
 
 	// Backward compat for radar chart in 2
@@ -32398,7 +35129,7 @@
 
 
 /***/ },
-/* 164 */
+/* 178 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -32406,23 +35137,23 @@
 	    var echarts = __webpack_require__(1);
 	    var PRIORITY = echarts.PRIORITY;
 
-	    __webpack_require__(165);
-
-	    __webpack_require__(175);
-
 	    __webpack_require__(179);
 
-	    __webpack_require__(166);
+	    __webpack_require__(189);
 
-	    echarts.registerLayout(__webpack_require__(181));
+	    __webpack_require__(193);
 
-	    echarts.registerVisual(__webpack_require__(182));
+	    __webpack_require__(180);
 
-	    echarts.registerProcessor(PRIORITY.PROCESSOR.STATISTIC, __webpack_require__(183));
+	    echarts.registerLayout(__webpack_require__(195));
 
-	    echarts.registerPreprocessor(__webpack_require__(184));
+	    echarts.registerVisual(__webpack_require__(196));
 
-	    __webpack_require__(145)('map', [{
+	    echarts.registerProcessor(PRIORITY.PROCESSOR.STATISTIC, __webpack_require__(197));
+
+	    echarts.registerPreprocessor(__webpack_require__(198));
+
+	    __webpack_require__(159)('map', [{
 	        type: 'mapToggleSelect',
 	        event: 'mapselectchanged',
 	        method: 'toggleSelected'
@@ -32438,7 +35169,7 @@
 
 
 /***/ },
-/* 165 */
+/* 179 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -32452,9 +35183,9 @@
 	    var encodeHTML = formatUtil.encodeHTML;
 	    var addCommas = formatUtil.addCommas;
 
-	    var dataSelectableMixin = __webpack_require__(143);
+	    var dataSelectableMixin = __webpack_require__(157);
 
-	    var geoCreator = __webpack_require__(166);
+	    var geoCreator = __webpack_require__(180);
 
 	    var MapSeries = SeriesModel.extend({
 
@@ -32644,6 +35375,11 @@
 	            // 是否开启缩放及漫游模式
 	            // roam: false,
 
+	            // Define left-top, right-bottom coords to control view
+	            // For example, [ [180, 90], [-180, -90] ],
+	            // higher priority than center and zoom
+	            boundingCoords: null,
+
 	            // Default on center of map
 	            center: null,
 
@@ -32688,12 +35424,12 @@
 
 
 /***/ },
-/* 166 */
+/* 180 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var Geo = __webpack_require__(167);
+	    var Geo = __webpack_require__(181);
 
 	    var layout = __webpack_require__(21);
 	    var zrUtil = __webpack_require__(4);
@@ -32707,6 +35443,21 @@
 	     * @param {module:echarts/ExtensionAPI} api
 	     */
 	    function resizeGeo (geoModel, api) {
+
+	        var boundingCoords = geoModel.get('boundingCoords');
+	        if (boundingCoords != null) {
+	            var leftTop = boundingCoords[0];
+	            var rightBottom = boundingCoords[1];
+	            if (isNaN(leftTop[0]) || isNaN(leftTop[1]) || isNaN(rightBottom[0]) || isNaN(rightBottom[1])) {
+	                if (true) {
+	                    console.error('Invalid boundingCoords');
+	                }
+	            }
+	            else {
+	                this.setBoundingRect(leftTop[0], leftTop[1], rightBottom[0] - leftTop[0], rightBottom[1] - leftTop[1]);
+	            }
+	        }
+
 	        var rect = this.getBoundingRect();
 
 	        var boxLayoutOption;
@@ -32721,6 +35472,7 @@
 	        var aspect = rect.width / rect.height * aspectScale;
 
 	        var useCenterAndSize = false;
+
 	        if (center && size) {
 	            center = [
 	                numberUtil.parsePercent(center[0], viewWidth),
@@ -32962,6 +35714,8 @@
 
 	    echarts.getMap = geoCreator.getMap;
 
+	    echarts.parseGeoJSON = __webpack_require__(182);
+
 	    // TODO
 	    echarts.loadMap = function () {};
 
@@ -32971,25 +35725,25 @@
 
 
 /***/ },
-/* 167 */
+/* 181 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var parseGeoJson = __webpack_require__(168);
+	    var parseGeoJson = __webpack_require__(182);
 
 	    var zrUtil = __webpack_require__(4);
 
 	    var BoundingRect = __webpack_require__(9);
 
-	    var View = __webpack_require__(171);
+	    var View = __webpack_require__(185);
 
 
 	    // Geo fix functions
 	    var geoFixFuncs = [
-	        __webpack_require__(172),
-	        __webpack_require__(173),
-	        __webpack_require__(174)
+	        __webpack_require__(186),
+	        __webpack_require__(187),
+	        __webpack_require__(188)
 	    ];
 
 	    /**
@@ -33056,7 +35810,7 @@
 	                this.regions = geoJson ? parseGeoJson(geoJson) : [];
 	            }
 	            catch (e) {
-	                throw 'Invalid geoJson format\n' + e;
+	                throw 'Invalid geoJson format\n' + e.message;
 	            }
 	            specialAreas = specialAreas || {};
 	            nameMap = nameMap || {};
@@ -33237,7 +35991,7 @@
 
 
 /***/ },
-/* 168 */
+/* 182 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -33248,7 +36002,7 @@
 
 	    var zrUtil = __webpack_require__(4);
 
-	    var Region = __webpack_require__(169);
+	    var Region = __webpack_require__(183);
 
 	    function decode(json) {
 	        if (!json.UTF8Encoding) {
@@ -33312,19 +36066,6 @@
 	    }
 
 	    /**
-	     * @inner
-	     */
-	    function flattern2D(array) {
-	        var ret = [];
-	        for (var i = 0; i < array.length; i++) {
-	            for (var k = 0; k < array[i].length; k++) {
-	                ret.push(array[i][k]);
-	            }
-	        }
-	        return ret;
-	    }
-
-	    /**
 	     * @alias module:echarts/coord/geo/parseGeoJson
 	     * @param {Object} geoJson
 	     * @return {module:zrender/container/Group}
@@ -33335,28 +36076,50 @@
 
 	        return zrUtil.map(zrUtil.filter(geoJson.features, function (featureObj) {
 	            // Output of mapshaper may have geometry null
-	            return featureObj.geometry && featureObj.properties;
+	            return featureObj.geometry
+	                && featureObj.properties
+	                && featureObj.geometry.coordinates.length > 0;
 	        }), function (featureObj) {
 	            var properties = featureObj.properties;
-	            var geometry = featureObj.geometry;
+	            var geo = featureObj.geometry;
 
-	            var coordinates = geometry.coordinates;
+	            var coordinates = geo.coordinates;
 
-	            if (geometry.type === 'MultiPolygon') {
-	                coordinates = flattern2D(coordinates);
+	            var geometries = [];
+	            if (geo.type === 'Polygon') {
+	                geometries.push({
+	                    type: 'polygon',
+	                    // According to the GeoJSON specification.
+	                    // First must be exterior, and the rest are all interior(holes).
+	                    exterior: coordinates[0],
+	                    interiors: coordinates.slice(1)
+	                });
+	            }
+	            if (geo.type === 'MultiPolygon') {
+	                zrUtil.each(coordinates, function (item) {
+	                    if (item[0]) {
+	                        geometries.push({
+	                            type: 'polygon',
+	                            exterior: item[0],
+	                            interiors: item.slice(1)
+	                        });
+	                    }
+	                });
 	            }
 
-	            return new Region(
+	            var region = new Region(
 	                properties.name,
-	                coordinates,
+	                geometries,
 	                properties.cp
 	            );
+	            region.properties = properties;
+	            return region;
 	        });
 	    };
 
 
 /***/ },
-/* 169 */
+/* 183 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -33364,19 +36127,19 @@
 	 */
 
 
-	    var polygonContain = __webpack_require__(170);
+	    var polygonContain = __webpack_require__(184);
 
 	    var BoundingRect = __webpack_require__(9);
 
-	    var bbox = __webpack_require__(51);
+	    var bbox = __webpack_require__(52);
 	    var vec2 = __webpack_require__(10);
 
 	    /**
 	     * @param {string} name
-	     * @param {Array} contours
+	     * @param {Array} geometries
 	     * @param {Array.<number>} cp
 	     */
-	    function Region(name, contours, cp) {
+	    function Region(name, geometries, cp) {
 
 	        /**
 	         * @type {string}
@@ -33388,7 +36151,7 @@
 	         * @type {Array.<Array>}
 	         * @readOnly
 	         */
-	        this.contours = contours;
+	        this.geometries = geometries;
 
 	        if (!cp) {
 	            var rect = this.getBoundingRect();
@@ -33410,6 +36173,8 @@
 
 	        constructor: Region,
 
+	        properties: null,
+
 	        /**
 	         * @return {module:zrender/core/BoundingRect}
 	         */
@@ -33424,9 +36189,15 @@
 	            var max = [-MAX_NUMBER, -MAX_NUMBER];
 	            var min2 = [];
 	            var max2 = [];
-	            var contours = this.contours;
-	            for (var i = 0; i < contours.length; i++) {
-	                bbox.fromPoints(contours[i], min2, max2);
+	            var geometries = this.geometries;
+	            for (var i = 0; i < geometries.length; i++) {
+	                // Only support polygon
+	                if (geometries[i].type !== 'polygon') {
+	                    continue;
+	                }
+	                // Doesn't consider hole
+	                var exterior = geometries[i].exterior;
+	                bbox.fromPoints(exterior, min2, max2);
 	                vec2.min(min, min, min2);
 	                vec2.max(max, max, max2);
 	            }
@@ -33446,12 +36217,25 @@
 	         */
 	        contain: function (coord) {
 	            var rect = this.getBoundingRect();
-	            var contours = this.contours;
-	            if (rect.contain(coord[0], coord[1])) {
-	                for (var i = 0, len = contours.length; i < len; i++) {
-	                    if (polygonContain.contain(contours[i], coord[0], coord[1])) {
-	                        return true;
+	            var geometries = this.geometries;
+	            if (!rect.contain(coord[0], coord[1])) {
+	                return false;
+	            }
+	            loopGeo: for (var i = 0, len = geometries.length; i < len; i++) {
+	                // Only support polygon.
+	                if (geometries[i].type !== 'polygon') {
+	                    continue;
+	                }
+	                var exterior = geometries[i].exterior;
+	                var interiors = geometries[i].interiors;
+	                if (polygonContain.contain(exterior, coord[0], coord[1])) {
+	                    // Not in the region if point is in the hole.
+	                    for (var k = 0; k < (interiors ? interiors.length : 0); k++) {
+	                        if (polygonContain.contain(interiors[k])) {
+	                            continue loopGeo;
+	                        }
 	                    }
+	                    return true;
 	                }
 	            }
 	            return false;
@@ -33468,10 +36252,21 @@
 	            }
 	            var target = new BoundingRect(x, y, width, height);
 	            var transform = rect.calculateTransform(target);
-	            var contours = this.contours;
-	            for (var i = 0; i < contours.length; i++) {
-	                for (var p = 0; p < contours[i].length; p++) {
-	                    vec2.applyTransform(contours[i][p], contours[i][p], transform);
+	            var geometries = this.geometries;
+	            for (var i = 0; i < geometries.length; i++) {
+	                // Only support polygon.
+	                if (geometries[i].type !== 'polygon') {
+	                    continue;
+	                }
+	                var exterior = geometries[i].exterior;
+	                var interiors = geometries[i].interiors;
+	                for (var p = 0; p < exterior.length; p++) {
+	                    vec2.applyTransform(exterior[p], exterior[p], transform);
+	                }
+	                for (var h = 0; h < (interiors ? interiors.length : 0); h++) {
+	                    for (var p = 0; p < interiors[h].length; p++) {
+	                        vec2.applyTransform(interiors[h][p], interiors[h][p], transform);
+	                    }
 	                }
 	            }
 	            rect = this._rect;
@@ -33488,12 +36283,12 @@
 
 
 /***/ },
-/* 170 */
+/* 184 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var windingLine = __webpack_require__(58);
+	    var windingLine = __webpack_require__(59);
 
 	    var EPSILON = 1e-8;
 
@@ -33531,7 +36326,7 @@
 
 
 /***/ },
-/* 171 */
+/* 185 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -33832,13 +36627,14 @@
 
 
 /***/ },
-/* 172 */
+/* 186 */
 /***/ function(module, exports, __webpack_require__) {
 
 	// Fix for 南海诸岛
 
 
-	    var Region = __webpack_require__(169);
+	    var Region = __webpack_require__(183);
+	    var zrUtil = __webpack_require__(4);
 
 	    var geoCoord = [126, 25];
 
@@ -33870,14 +36666,20 @@
 	    module.exports = function (geo) {
 	        if (geo.map === 'china') {
 	            geo.regions.push(new Region(
-	                '南海诸岛', points, geoCoord
+	                '南海诸岛',
+	                zrUtil.map(points, function (exterior) {
+	                    return {
+	                        type: 'polygon',
+	                        exterior: exterior
+	                    };
+	                }), geoCoord
 	            ));
 	        }
 	    };
 
 
 /***/ },
-/* 173 */
+/* 187 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -33907,7 +36709,7 @@
 
 
 /***/ },
-/* 174 */
+/* 188 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -33916,6 +36718,7 @@
 
 	    var geoCoordMap = {
 	        'Russia': [100, 60],
+	        'United States': [-99, 38],
 	        'United States of America': [-99, 38]
 	    };
 
@@ -33932,15 +36735,15 @@
 
 
 /***/ },
-/* 175 */
+/* 189 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    // var zrUtil = require('zrender/lib/core/util');
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 
-	    var MapDraw = __webpack_require__(176);
+	    var MapDraw = __webpack_require__(190);
 
 	    __webpack_require__(1).extendChartView({
 
@@ -34088,7 +36891,7 @@
 
 
 /***/ },
-/* 176 */
+/* 190 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -34096,8 +36899,8 @@
 	 */
 
 
-	    var RoamController = __webpack_require__(177);
-	    var graphic = __webpack_require__(43);
+	    var RoamController = __webpack_require__(191);
+	    var graphic = __webpack_require__(44);
 	    var zrUtil = __webpack_require__(4);
 
 	    function getFixedItemStyle(model, scale) {
@@ -34130,18 +36933,21 @@
 	                mapDraw._mouseDownFlag = false;
 
 	                var el = e.target;
-	                while (!el.__region) {
+	                while (!el.__regions) {
 	                    el = el.parent;
 	                }
 	                if (!el) {
 	                    return;
 	                }
 
-	                var region = el.__region;
 	                var action = {
 	                    type: (mapOrGeoModel.mainType === 'geo' ? 'geo' : 'map') + 'ToggleSelect',
-	                    name: region.name,
-	                    from: fromView.uid
+	                    batch: zrUtil.map(el.__regions, function (region) {
+	                        return {
+	                            name: region.name,
+	                            from: fromView.uid
+	                        };
+	                    })
 	                };
 	                action[mapOrGeoModel.mainType + 'Id'] = mapOrGeoModel.id;
 
@@ -34155,9 +36961,9 @@
 	    function updateMapSelected(mapOrGeoModel, group) {
 	        // FIXME
 	        group.eachChild(function (otherRegionEl) {
-	            if (otherRegionEl.__region) {
-	                otherRegionEl.trigger(mapOrGeoModel.isSelected(otherRegionEl.__region.name) ? 'emphasis' : 'normal');
-	            }
+	            zrUtil.each(otherRegionEl.__regions, function (region) {
+	                otherRegionEl.trigger(mapOrGeoModel.isSelected(region.name) ? 'emphasis' : 'normal');
+	            });
 	        });
 	    }
 
@@ -34240,10 +37046,18 @@
 	            var hoverItemStyleAccessPath = ['itemStyle', 'emphasis'];
 	            var labelAccessPath = ['label', 'normal'];
 	            var hoverLabelAccessPath = ['label', 'emphasis'];
+	            var nameMap = {};
 
 	            zrUtil.each(geo.regions, function (region) {
 
-	                var regionGroup = new graphic.Group();
+	                // Consider in GeoJson properties.name may be duplicated, for example,
+	                // there is multiple region named "United Kindom" or "France" (so many
+	                // colonies). And it is not appropriate to merge them in geo, which
+	                // will make them share the same label and bring trouble in label
+	                // location calculation.
+	                var regionGroup = nameMap[region.name]
+	                    || (nameMap[region.name] = new graphic.Group());
+
 	                var compoundPath = new graphic.CompoundPath({
 	                    shape: {
 	                        paths: []
@@ -34278,15 +37092,23 @@
 	                var textStyleModel = labelModel.getModel('textStyle');
 	                var hoverTextStyleModel = hoverLabelModel.getModel('textStyle');
 
-	                zrUtil.each(region.contours, function (contour) {
-
-	                    var polygon = new graphic.Polygon({
+	                zrUtil.each(region.geometries, function (geometry) {
+	                    if (geometry.type !== 'polygon') {
+	                        return;
+	                    }
+	                    compoundPath.shape.paths.push(new graphic.Polygon({
 	                        shape: {
-	                            points: contour
+	                            points: geometry.exterior
 	                        }
-	                    });
+	                    }));
 
-	                    compoundPath.shape.paths.push(polygon);
+	                    for (var i = 0; i < (geometry.interiors ? geometry.interiors.length : 0); i++) {
+	                        compoundPath.shape.paths.push(new graphic.Polygon({
+	                            shape: {
+	                                points: geometry.interiors[i]
+	                            }
+	                        }));
+	                    }
 	                });
 
 	                compoundPath.setStyle(itemStyle);
@@ -34347,7 +37169,8 @@
 	                    };
 	                }
 
-	                regionGroup.__region = region;
+	                var groupRegions = regionGroup.__regions || (regionGroup.__regions = []);
+	                groupRegions.push(region);
 
 	                graphic.setHoverStyle(
 	                    regionGroup,
@@ -34428,7 +37251,7 @@
 
 
 /***/ },
-/* 177 */
+/* 191 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -34440,7 +37263,7 @@
 	    var Eventful = __webpack_require__(33);
 	    var zrUtil = __webpack_require__(4);
 	    var eventTool = __webpack_require__(88);
-	    var interactionMutex = __webpack_require__(178);
+	    var interactionMutex = __webpack_require__(192);
 
 	    function mousedown(e) {
 	        if (e.target && e.target.draggable) {
@@ -34501,6 +37324,10 @@
 	    }
 
 	    function mousewheel(e) {
+	        // wheelDelta maybe -0 in chrome mac.
+	        if (e.wheelDelta === 0) {
+	            return;
+	        }
 	        // Convenience:
 	        // Mac and VM Windows on Mac: scroll up: zoom out.
 	        // Windows: scroll up: zoom in.
@@ -34662,7 +37489,7 @@
 
 
 /***/ },
-/* 178 */
+/* 192 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -34710,13 +37537,13 @@
 
 
 /***/ },
-/* 179 */
+/* 193 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    var zrUtil = __webpack_require__(4);
-	    var roamHelper = __webpack_require__(180);
+	    var roamHelper = __webpack_require__(194);
 
 	    var echarts = __webpack_require__(1);
 
@@ -34768,7 +37595,7 @@
 
 
 /***/ },
-/* 180 */
+/* 194 */
 /***/ function(module, exports) {
 
 	
@@ -34833,7 +37660,7 @@
 
 
 /***/ },
-/* 181 */
+/* 195 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -34896,7 +37723,7 @@
 
 
 /***/ },
-/* 182 */
+/* 196 */
 /***/ function(module, exports) {
 
 	
@@ -34918,7 +37745,7 @@
 
 
 /***/ },
-/* 183 */
+/* 197 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -35006,7 +37833,7 @@
 
 
 /***/ },
-/* 184 */
+/* 198 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -35031,34 +37858,34 @@
 
 
 /***/ },
-/* 185 */
+/* 199 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    var echarts = __webpack_require__(1);
 
-	    __webpack_require__(186);
-	    __webpack_require__(190);
-	    __webpack_require__(193);
+	    __webpack_require__(200);
+	    __webpack_require__(204);
+	    __webpack_require__(207);
 
-	    echarts.registerVisual(__webpack_require__(194));
+	    echarts.registerVisual(__webpack_require__(208));
 
-	    echarts.registerLayout(__webpack_require__(196));
+	    echarts.registerLayout(__webpack_require__(210));
 
 
 /***/ },
-/* 186 */
+/* 200 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    var SeriesModel = __webpack_require__(28);
-	    var Tree = __webpack_require__(187);
+	    var Tree = __webpack_require__(201);
 	    var zrUtil = __webpack_require__(4);
 	    var Model = __webpack_require__(12);
 	    var formatUtil = __webpack_require__(6);
-	    var helper = __webpack_require__(189);
+	    var helper = __webpack_require__(203);
 	    var encodeHTML = formatUtil.encodeHTML;
 	    var addCommas = formatUtil.addCommas;
 
@@ -35199,18 +38026,14 @@
 	         * @override
 	         */
 	        getInitialData: function (option, ecModel) {
-	            var data = option.data || [];
 	            var rootName = option.name;
 	            rootName == null && (rootName = option.name);
 
 	            // Create a virtual root.
 	            var root = {name: rootName, children: option.data};
-	            var value0 = (data[0] || {}).value;
 
-	            completeTreeValue(root, zrUtil.isArray(value0) ? value0.length : -1);
+	            completeTreeValue(root);
 
-	            // FIXME
-	            // sereis.mergeOption 的 getInitData是否放在merge后,从而能直接获取merege后的结果而非手动判断。
 	            var levels = option.levels || [];
 
 	            levels = option.levels = setDefault(levels, ecModel);
@@ -35335,7 +38158,7 @@
 	    /**
 	     * @param {Object} dataNode
 	     */
-	    function completeTreeValue(dataNode, arrValueLength) {
+	    function completeTreeValue(dataNode) {
 	        // Postorder travel tree.
 	        // If value of none-leaf node is not set,
 	        // calculate it by suming up the value of all children.
@@ -35343,7 +38166,7 @@
 
 	        zrUtil.each(dataNode.children, function (child) {
 
-	            completeTreeValue(child, arrValueLength);
+	            completeTreeValue(child);
 
 	            var childValue = child.value;
 	            zrUtil.isArray(childValue) && (childValue = childValue[0]);
@@ -35352,14 +38175,8 @@
 	        });
 
 	        var thisValue = dataNode.value;
-
-	        if (arrValueLength >= 0) {
-	            if (!zrUtil.isArray(thisValue)) {
-	                dataNode.value = new Array(arrValueLength);
-	            }
-	            else {
-	                thisValue = thisValue[0];
-	            }
+	        if (zrUtil.isArray(thisValue)) {
+	            thisValue = thisValue[0];
 	        }
 
 	        if (thisValue == null || isNaN(thisValue)) {
@@ -35370,7 +38187,7 @@
 	            thisValue = 0;
 	        }
 
-	        arrValueLength >= 0
+	        zrUtil.isArray(dataNode.value)
 	            ? (dataNode.value[0] = thisValue)
 	            : (dataNode.value = thisValue);
 	    }
@@ -35409,7 +38226,7 @@
 
 
 /***/ },
-/* 187 */
+/* 201 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -35422,7 +38239,7 @@
 	    var zrUtil = __webpack_require__(4);
 	    var Model = __webpack_require__(12);
 	    var List = __webpack_require__(98);
-	    var linkList = __webpack_require__(188);
+	    var linkList = __webpack_require__(202);
 	    var completeDimensions = __webpack_require__(103);
 
 	    /**
@@ -35828,10 +38645,14 @@
 
 	        var tree = new Tree(hostModel, levelOptions);
 	        var listData = [];
+	        var dimMax = 1;
 
 	        buildHierarchy(dataRoot);
 
 	        function buildHierarchy(dataNode, parentNode) {
+	            var value = dataNode.value;
+	            dimMax = Math.max(dimMax, zrUtil.isArray(value) ? value.length : 1);
+
 	            listData.push(dataNode);
 
 	            var node = new TreeNode(dataNode.name, tree);
@@ -35851,7 +38672,7 @@
 
 	        tree.root.updateDepthAndHeight(0);
 
-	        var dimensions = completeDimensions([{name: 'value'}], listData);
+	        var dimensions = completeDimensions([{name: 'value'}], listData, {dimCount: dimMax});
 	        var list = new List(dimensions, hostModel);
 	        list.initData(listData);
 
@@ -35886,7 +38707,7 @@
 
 
 /***/ },
-/* 188 */
+/* 202 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -36024,7 +38845,7 @@
 
 
 /***/ },
-/* 189 */
+/* 203 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -36092,20 +38913,20 @@
 
 
 /***/ },
-/* 190 */
+/* 204 */
 /***/ function(module, exports, __webpack_require__) {
 
 	 
 
 	    var zrUtil = __webpack_require__(4);
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 	    var DataDiffer = __webpack_require__(99);
-	    var helper = __webpack_require__(189);
-	    var Breadcrumb = __webpack_require__(191);
-	    var RoamController = __webpack_require__(177);
+	    var helper = __webpack_require__(203);
+	    var Breadcrumb = __webpack_require__(205);
+	    var RoamController = __webpack_require__(191);
 	    var BoundingRect = __webpack_require__(9);
 	    var matrix = __webpack_require__(11);
-	    var animationUtil = __webpack_require__(192);
+	    var animationUtil = __webpack_require__(206);
 	    var bind = zrUtil.bind;
 	    var Group = graphic.Group;
 	    var Rect = graphic.Rect;
@@ -36976,15 +39797,15 @@
 
 
 /***/ },
-/* 191 */
+/* 205 */
 /***/ function(module, exports, __webpack_require__) {
 
 	 
 
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 	    var layout = __webpack_require__(21);
 	    var zrUtil = __webpack_require__(4);
-	    var helper = __webpack_require__(189);
+	    var helper = __webpack_require__(203);
 
 	    var TEXT_PADDING = 8;
 	    var ITEM_GAP = 8;
@@ -37152,7 +39973,7 @@
 
 
 /***/ },
-/* 192 */
+/* 206 */
 /***/ function(module, exports, __webpack_require__) {
 
 	 
@@ -37258,7 +40079,7 @@
 
 
 /***/ },
-/* 193 */
+/* 207 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -37267,7 +40088,7 @@
 
 
 	    var echarts = __webpack_require__(1);
-	    var helper = __webpack_require__(189);
+	    var helper = __webpack_require__(203);
 
 	    var noop = function () {};
 
@@ -37308,12 +40129,12 @@
 
 
 /***/ },
-/* 194 */
+/* 208 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var VisualMapping = __webpack_require__(195);
+	    var VisualMapping = __webpack_require__(209);
 	    var zrColor = __webpack_require__(39);
 	    var zrUtil = __webpack_require__(4);
 	    var isArray = zrUtil.isArray;
@@ -37540,7 +40361,7 @@
 
 
 /***/ },
-/* 195 */
+/* 209 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -37675,7 +40496,6 @@
 	             */
 	            getColorMapper: function () {
 	                var thisOption = this.option;
-	                var parsedVisual = zrUtil.map(thisOption.visual, zrColor.parse);
 
 	                return zrUtil.bind(
 	                    thisOption.mappingMethod === 'category'
@@ -37688,8 +40508,8 @@
 	                            // which will be much faster and useful in pixel manipulation
 	                            var returnRGBArray = !!out;
 	                            !isNormalized && (value = this._normalizeData(value));
-	                            out = zrColor.fastMapToColor(value, parsedVisual, out);
-	                            return returnRGBArray ? out : zrUtil.stringify(out, 'rgba');
+	                            out = zrColor.fastMapToColor(value, thisOption.parsedVisual, out);
+	                            return returnRGBArray ? out : zrColor.stringify(out, 'rgba');
 	                        },
 	                    this
 	                );
@@ -37697,13 +40517,19 @@
 
 	            _doMap: {
 	                linear: function (normalized) {
-	                    return zrColor.mapToColor(normalized, this.option.visual);
+	                    return zrColor.stringify(
+	                        zrColor.fastMapToColor(normalized, this.option.parsedVisual),
+	                        'rgba'
+	                    );
 	                },
 	                category: doMapCategory,
 	                piecewise: function (normalized, value) {
 	                    var result = getSpecifiedVisual.call(this, value);
 	                    if (result == null) {
-	                        result = zrColor.mapToColor(normalized, this.option.visual);
+	                        result = zrColor.stringify(
+	                            zrColor.fastMapToColor(normalized, this.option.parsedVisual),
+	                            'rgba'
+	                        );
 	                    }
 	                    return result;
 	                },
@@ -37805,7 +40631,7 @@
 	                visualArr[CATEGORY_DEFAULT_VISUAL_INDEX] = visual;
 	            }
 
-	            visual = thisOption.visual = visualArr;
+	            visual = setVisualToOption(thisOption, visualArr);
 	        }
 
 	        // Remove categories that has no visual,
@@ -37841,7 +40667,7 @@
 	            visualArr[1] = visualArr[0];
 	        }
 
-	        thisOption.visual = visualArr;
+	        setVisualToOption(thisOption, visualArr);
 	    }
 
 	    function makePartialColorVisualHandler(applyValue) {
@@ -37910,6 +40736,16 @@
 	        }
 	    }
 
+	    function setVisualToOption(thisOption, visualArr) {
+	        thisOption.visual = visualArr;
+	        if (thisOption.type === 'color') {
+	            thisOption.parsedVisual = zrUtil.map(visualArr, function (item) {
+	                return zrColor.parse(item);
+	            });
+	        }
+	        return visualArr;
+	    }
+
 
 	    /**
 	     * Normalizers by mapping methods.
@@ -38081,7 +40917,14 @@
 	        for (var i = 0, len = pieceList.length; i < len; i++) {
 	            var pieceValue = pieceList[i].value;
 	            if (pieceValue != null) {
-	                if (pieceValue === value) {
+	                if (pieceValue === value
+	                    // FIXME
+	                    // It is supposed to compare value according to value type of dimension,
+	                    // but currently value type can exactly be string or number.
+	                    // Compromise for numeric-like string (like '12'), especially
+	                    // in the case that visualMap.categories is ['22', '33'].
+	                    || (typeof pieceValue === 'string' && pieceValue === value + '')
+	                ) {
 	                    return i;
 	                }
 	                findClosestWhenOutside && updatePossible(pieceValue, i);
@@ -38142,7 +40985,7 @@
 
 
 /***/ },
-/* 196 */
+/* 210 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -38150,9 +40993,9 @@
 	    var zrUtil = __webpack_require__(4);
 	    var numberUtil = __webpack_require__(7);
 	    var layout = __webpack_require__(21);
-	    var helper = __webpack_require__(189);
+	    var helper = __webpack_require__(203);
 	    var BoundingRect = __webpack_require__(9);
-	    var helper = __webpack_require__(189);
+	    var helper = __webpack_require__(203);
 
 	    var mathMax = Math.max;
 	    var mathMin = Math.min;
@@ -38697,7 +41540,7 @@
 
 
 /***/ },
-/* 197 */
+/* 211 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -38705,31 +41548,31 @@
 	    var echarts = __webpack_require__(1);
 	    var zrUtil = __webpack_require__(4);
 
-	    __webpack_require__(198);
-	    __webpack_require__(201);
+	    __webpack_require__(212);
+	    __webpack_require__(215);
 
-	    __webpack_require__(206);
+	    __webpack_require__(220);
 
-	    echarts.registerProcessor(__webpack_require__(207));
+	    echarts.registerProcessor(__webpack_require__(221));
 
 	    echarts.registerVisual(zrUtil.curry(
-	        __webpack_require__(110), 'graph', 'circle', null
+	        __webpack_require__(119), 'graph', 'circle', null
 	    ));
-	    echarts.registerVisual(__webpack_require__(208));
-	    echarts.registerVisual(__webpack_require__(209));
+	    echarts.registerVisual(__webpack_require__(222));
+	    echarts.registerVisual(__webpack_require__(223));
 
-	    echarts.registerLayout(__webpack_require__(210));
-	    echarts.registerLayout(__webpack_require__(213));
-	    echarts.registerLayout(__webpack_require__(215));
+	    echarts.registerLayout(__webpack_require__(224));
+	    echarts.registerLayout(__webpack_require__(227));
+	    echarts.registerLayout(__webpack_require__(229));
 
 	    // Graph view coordinate system
 	    echarts.registerCoordinateSystem('graphView', {
-	        create: __webpack_require__(217)
+	        create: __webpack_require__(231)
 	    });
 
 
 /***/ },
-/* 198 */
+/* 212 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -38741,7 +41584,7 @@
 	    var Model = __webpack_require__(12);
 	    var formatUtil = __webpack_require__(6);
 
-	    var createGraphFromNodeEdge = __webpack_require__(199);
+	    var createGraphFromNodeEdge = __webpack_require__(213);
 
 	    var GraphSeries = __webpack_require__(1).extendSeriesModel({
 
@@ -39003,14 +41846,14 @@
 
 
 /***/ },
-/* 199 */
+/* 213 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    var List = __webpack_require__(98);
-	    var Graph = __webpack_require__(200);
-	    var linkList = __webpack_require__(188);
+	    var Graph = __webpack_require__(214);
+	    var linkList = __webpack_require__(202);
 	    var completeDimensions = __webpack_require__(103);
 	    var CoordinateSystem = __webpack_require__(26);
 	    var zrUtil = __webpack_require__(4);
@@ -39078,7 +41921,7 @@
 
 
 /***/ },
-/* 200 */
+/* 214 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -39597,18 +42440,18 @@
 
 
 /***/ },
-/* 201 */
+/* 215 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 
-	    var SymbolDraw = __webpack_require__(105);
-	    var LineDraw = __webpack_require__(202);
-	    var RoamController = __webpack_require__(177);
+	    var SymbolDraw = __webpack_require__(115);
+	    var LineDraw = __webpack_require__(216);
+	    var RoamController = __webpack_require__(191);
 
-	    var graphic = __webpack_require__(43);
-	    var adjustEdge = __webpack_require__(205);
+	    var graphic = __webpack_require__(44);
+	    var adjustEdge = __webpack_require__(219);
 	    var zrUtil = __webpack_require__(4);
 
 	    var nodeOpacityPath = ['itemStyle', 'normal', 'opacity'];
@@ -39944,7 +42787,7 @@
 
 
 /***/ },
-/* 202 */
+/* 216 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -39952,8 +42795,8 @@
 	 */
 
 
-	    var graphic = __webpack_require__(43);
-	    var LineGroup = __webpack_require__(203);
+	    var graphic = __webpack_require__(44);
+	    var LineGroup = __webpack_require__(217);
 
 
 	    function isPointNaN(pt) {
@@ -40043,7 +42886,7 @@
 
 
 /***/ },
-/* 203 */
+/* 217 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -40051,11 +42894,11 @@
 	 */
 
 
-	    var symbolUtil = __webpack_require__(107);
+	    var symbolUtil = __webpack_require__(104);
 	    var vector = __webpack_require__(10);
 	    // var matrix = require('zrender/lib/core/matrix');
-	    var LinePath = __webpack_require__(204);
-	    var graphic = __webpack_require__(43);
+	    var LinePath = __webpack_require__(218);
+	    var graphic = __webpack_require__(44);
 	    var zrUtil = __webpack_require__(4);
 	    var numberUtil = __webpack_require__(7);
 
@@ -40415,14 +43258,14 @@
 
 
 /***/ },
-/* 204 */
+/* 218 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
 	 * Line path for bezier and straight line draw
 	 */
 
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 	    var vec2 = __webpack_require__(10);
 
 	    var straightLineProto = graphic.Line.prototype;
@@ -40472,12 +43315,12 @@
 
 
 /***/ },
-/* 205 */
+/* 219 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var curveTool = __webpack_require__(50);
+	    var curveTool = __webpack_require__(51);
 	    var vec2 = __webpack_require__(10);
 
 	    var v1 = [];
@@ -40638,13 +43481,13 @@
 
 
 /***/ },
-/* 206 */
+/* 220 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    var echarts = __webpack_require__(1);
-	    var roamHelper = __webpack_require__(180);
+	    var roamHelper = __webpack_require__(194);
 
 	    var actionInfo = {
 	        type: 'graphRoam',
@@ -40704,7 +43547,7 @@
 
 
 /***/ },
-/* 207 */
+/* 221 */
 /***/ function(module, exports) {
 
 	
@@ -40744,7 +43587,7 @@
 
 
 /***/ },
-/* 208 */
+/* 222 */
 /***/ function(module, exports) {
 
 	
@@ -40791,7 +43634,7 @@
 
 
 /***/ },
-/* 209 */
+/* 223 */
 /***/ function(module, exports) {
 
 	
@@ -40849,22 +43692,36 @@
 
 
 /***/ },
-/* 210 */
+/* 224 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var simpleLayoutHelper = __webpack_require__(211);
-	    var simpleLayoutEdge = __webpack_require__(212);
+	    var simpleLayoutHelper = __webpack_require__(225);
+	    var simpleLayoutEdge = __webpack_require__(226);
+
 	    module.exports = function (ecModel, api) {
 	        ecModel.eachSeriesByType('graph', function (seriesModel) {
 	            var layout = seriesModel.get('layout');
 	            var coordSys = seriesModel.coordinateSystem;
 	            if (coordSys && coordSys.type !== 'view') {
 	                var data = seriesModel.getData();
-	                data.each(coordSys.dimensions, function (x, y, idx) {
-	                    if (!isNaN(x) && !isNaN(y)) {
-	                        data.setItemLayout(idx, coordSys.dataToPoint([x, y]));
+	                var dimensions = coordSys.dimensions;
+
+	                data.each(dimensions, function () {
+	                    var hasValue;
+	                    var args = arguments;
+	                    var value = [];
+	                    for (var i = 0; i < dimensions.length; i++) {
+	                        if (!isNaN(args[i])) {
+	                            hasValue = true;
+	                        }
+	                        value.push(args[i]);
+	                    }
+	                    var idx = args[args.length - 1];
+
+	                    if (hasValue) {
+	                        data.setItemLayout(idx, coordSys.dataToPoint(value));
 	                    }
 	                    else {
 	                        // Also {Array.<number>}, not undefined to avoid if...else... statement
@@ -40881,13 +43738,14 @@
 	    };
 
 
+
 /***/ },
-/* 211 */
+/* 225 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var simpleLayoutEdge = __webpack_require__(212);
+	    var simpleLayoutEdge = __webpack_require__(226);
 
 	    module.exports = function (seriesModel) {
 	        var coordSys = seriesModel.coordinateSystem;
@@ -40906,7 +43764,7 @@
 
 
 /***/ },
-/* 212 */
+/* 226 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -40929,11 +43787,11 @@
 
 
 /***/ },
-/* 213 */
+/* 227 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
-	    var circularLayoutHelper = __webpack_require__(214);
+	    var circularLayoutHelper = __webpack_require__(228);
 	    module.exports = function (ecModel) {
 	        ecModel.eachSeriesByType('graph', function (seriesModel) {
 	            if (seriesModel.get('layout') === 'circular') {
@@ -40944,7 +43802,7 @@
 
 
 /***/ },
-/* 214 */
+/* 228 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -41007,15 +43865,15 @@
 
 
 /***/ },
-/* 215 */
+/* 229 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var forceHelper = __webpack_require__(216);
+	    var forceHelper = __webpack_require__(230);
 	    var numberUtil = __webpack_require__(7);
-	    var simpleLayoutHelper = __webpack_require__(211);
-	    var circularLayoutHelper = __webpack_require__(214);
+	    var simpleLayoutHelper = __webpack_require__(225);
+	    var circularLayoutHelper = __webpack_require__(228);
 	    var vec2 = __webpack_require__(10);
 	    var zrUtil = __webpack_require__(4);
 
@@ -41146,7 +44004,7 @@
 
 
 /***/ },
-/* 216 */
+/* 230 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -41288,14 +44146,14 @@
 
 
 /***/ },
-/* 217 */
+/* 231 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 	    // FIXME Where to create the simple view coordinate system
-	    var View = __webpack_require__(171);
+	    var View = __webpack_require__(185);
 	    var layout = __webpack_require__(21);
-	    var bbox = __webpack_require__(51);
+	    var bbox = __webpack_require__(52);
 
 	    function getViewRect(seriesModel, api, aspect) {
 	        var option = seriesModel.getBoxLayoutParams();
@@ -41369,16 +44227,16 @@
 
 
 /***/ },
-/* 218 */
+/* 232 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
-	    __webpack_require__(219);
-	    __webpack_require__(220);
+	    __webpack_require__(233);
+	    __webpack_require__(234);
 
 
 /***/ },
-/* 219 */
+/* 233 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -41506,14 +44364,14 @@
 
 
 /***/ },
-/* 220 */
+/* 234 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var PointerPath = __webpack_require__(221);
+	    var PointerPath = __webpack_require__(235);
 
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 	    var numberUtil = __webpack_require__(7);
 	    var parsePercent = numberUtil.parsePercent;
 
@@ -41548,7 +44406,7 @@
 
 	    var PI2 = Math.PI * 2;
 
-	    var GaugeView = __webpack_require__(42).extend({
+	    var GaugeView = __webpack_require__(43).extend({
 
 	        type: 'gauge',
 
@@ -41783,7 +44641,7 @@
 
 	            if (!seriesModel.get('pointer.show')) {
 	                // Remove old element
-	                oldData.eachItemGraphicEl(function (el) {
+	                oldData && oldData.eachItemGraphicEl(function (el) {
 	                    group.remove(el);
 	                });
 	                return;
@@ -41846,7 +44704,7 @@
 
 	                if (pointer.style.fill === 'auto') {
 	                    pointer.setStyle('fill', getColor(
-	                        (data.get('value', idx) - valueExtent[0]) / (valueExtent[1] - valueExtent[0])
+	                        numberUtil.linearMap(data.get('value', idx), valueExtent, [0, 1], true)
 	                    ));
 	                }
 
@@ -41867,6 +44725,7 @@
 	                var offsetCenter = titleModel.get('offsetCenter');
 	                var x = posInfo.cx + parsePercent(offsetCenter[0], posInfo.r);
 	                var y = posInfo.cy + parsePercent(offsetCenter[1], posInfo.r);
+
 	                var text = new graphic.Text({
 	                    style: {
 	                        x: x,
@@ -41879,6 +44738,16 @@
 	                        textVerticalAlign: 'middle'
 	                    }
 	                });
+
+	                if (text.style.fill === 'auto') {
+	                    var minVal = +seriesModel.get('min');
+	                    var maxVal = +seriesModel.get('max');
+	                    var value = seriesModel.getData().get('value', 0);
+	                    text.setStyle('fill', getColor(
+	                        numberUtil.linearMap(value, [minVal, maxVal], [0, 1], true)
+	                    ));
+	                }
+
 	                this.group.add(text);
 	            }
 	        },
@@ -41929,12 +44798,12 @@
 
 
 /***/ },
-/* 221 */
+/* 235 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    module.exports = __webpack_require__(45).extend({
+	    module.exports = __webpack_require__(46).extend({
 
 	        type: 'echartsGaugePointer',
 
@@ -41981,7 +44850,7 @@
 
 
 /***/ },
-/* 222 */
+/* 236 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -41989,17 +44858,17 @@
 	    var zrUtil = __webpack_require__(4);
 	    var echarts = __webpack_require__(1);
 
-	    __webpack_require__(223);
-	    __webpack_require__(224);
+	    __webpack_require__(237);
+	    __webpack_require__(238);
 
-	    echarts.registerVisual(zrUtil.curry(__webpack_require__(146), 'funnel'));
-	    echarts.registerLayout(__webpack_require__(225));
+	    echarts.registerVisual(zrUtil.curry(__webpack_require__(160), 'funnel'));
+	    echarts.registerLayout(__webpack_require__(239));
 
-	    echarts.registerProcessor(zrUtil.curry(__webpack_require__(149), 'funnel'));
+	    echarts.registerProcessor(zrUtil.curry(__webpack_require__(163), 'funnel'));
 
 
 /***/ },
-/* 223 */
+/* 237 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -42045,6 +44914,18 @@
 	                && option.label.emphasis.show;
 	        },
 
+	        // Overwrite
+	        getDataParams: function (dataIndex) {
+	            var data = this.getData();
+	            var params = FunnelSeries.superCall(this, 'getDataParams', dataIndex);
+	            var sum = data.getSum('value');
+	            // Percent is 0 if sum is 0
+	            params.percent = !sum ? 0 : +(data.get('value', dataIndex) / sum * 100).toFixed(2);
+
+	            params.$vars.push('percent');
+	            return params;
+	        },
+
 	        defaultOption: {
 	            zlevel: 0,                  // 一级层叠
 	            z: 2,                       // 二级层叠
@@ -42103,13 +44984,14 @@
 	    module.exports = FunnelSeries;
 
 
+
 /***/ },
-/* 224 */
+/* 238 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 	    var zrUtil = __webpack_require__(4);
 
 	    /**
@@ -42278,7 +45160,7 @@
 	    zrUtil.inherits(FunnelPiece, graphic.Group);
 
 
-	    var Funnel = __webpack_require__(42).extend({
+	    var Funnel = __webpack_require__(43).extend({
 
 	        type: 'funnel',
 
@@ -42325,7 +45207,7 @@
 
 
 /***/ },
-/* 225 */
+/* 239 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -42500,31 +45382,31 @@
 
 
 /***/ },
-/* 226 */
+/* 240 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    var echarts = __webpack_require__(1);
 
-	    __webpack_require__(227);
+	    __webpack_require__(241);
 
-	    __webpack_require__(238);
-	    __webpack_require__(239);
+	    __webpack_require__(252);
+	    __webpack_require__(253);
 
-	    echarts.registerVisual(__webpack_require__(240));
+	    echarts.registerVisual(__webpack_require__(254));
 
 
 
 /***/ },
-/* 227 */
+/* 241 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    __webpack_require__(228);
-	    __webpack_require__(231);
-	    __webpack_require__(233);
+	    __webpack_require__(242);
+	    __webpack_require__(245);
+	    __webpack_require__(247);
 
 	    var echarts = __webpack_require__(1);
 	    var zrUtil = __webpack_require__(4);
@@ -42574,13 +45456,13 @@
 	    });
 
 	    echarts.registerPreprocessor(
-	        __webpack_require__(237)
+	        __webpack_require__(251)
 	    );
 
 
 
 /***/ },
-/* 228 */
+/* 242 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -42588,7 +45470,7 @@
 	 */
 
 
-	    var Parallel = __webpack_require__(229);
+	    var Parallel = __webpack_require__(243);
 
 	    function create(ecModel, api) {
 	        var coordSysList = [];
@@ -42625,7 +45507,7 @@
 
 
 /***/ },
-/* 229 */
+/* 243 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -42635,10 +45517,10 @@
 
 
 	    var layout = __webpack_require__(21);
-	    var axisHelper = __webpack_require__(115);
+	    var axisHelper = __webpack_require__(105);
 	    var zrUtil = __webpack_require__(4);
-	    var ParallelAxis = __webpack_require__(230);
-	    var graphic = __webpack_require__(43);
+	    var ParallelAxis = __webpack_require__(244);
+	    var graphic = __webpack_require__(44);
 	    var matrix = __webpack_require__(11);
 
 	    var each = zrUtil.each;
@@ -42747,7 +45629,7 @@
 	                each(this.dimensions, function (dim) {
 	                    var axis = this._axesMap[dim];
 	                    axis.scale.unionExtentFromData(data, dim);
-	                    axisHelper.niceScaleExtent(axis, axis.model);
+	                    axisHelper.niceScaleExtent(axis.scale, axis.model);
 	                }, this);
 	            }, this);
 	        },
@@ -43022,13 +45904,13 @@
 
 
 /***/ },
-/* 230 */
+/* 244 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    var zrUtil = __webpack_require__(4);
-	    var Axis = __webpack_require__(124);
+	    var Axis = __webpack_require__(100);
 
 	    /**
 	     * @constructor module:echarts/coord/parallel/ParallelAxis
@@ -43077,7 +45959,7 @@
 
 
 /***/ },
-/* 231 */
+/* 245 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -43085,7 +45967,7 @@
 	    var zrUtil = __webpack_require__(4);
 	    var Component = __webpack_require__(19);
 
-	    __webpack_require__(232);
+	    __webpack_require__(246);
 
 	    Component.extend({
 
@@ -43203,7 +46085,7 @@
 
 
 /***/ },
-/* 232 */
+/* 246 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -43211,7 +46093,7 @@
 	    var ComponentModel = __webpack_require__(19);
 	    var zrUtil = __webpack_require__(4);
 	    var makeStyleMapper = __webpack_require__(15);
-	    var axisModelCreator = __webpack_require__(128);
+	    var axisModelCreator = __webpack_require__(131);
 	    var numberUtil = __webpack_require__(7);
 
 	    var AxisModel = ComponentModel.extend({
@@ -43318,7 +46200,7 @@
 	        z: 10
 	    };
 
-	    zrUtil.merge(AxisModel.prototype, __webpack_require__(130));
+	    zrUtil.merge(AxisModel.prototype, __webpack_require__(111));
 
 	    function getAxisType(axisName, option) {
 	        return option.type || (option.data ? 'category' : 'value');
@@ -43330,19 +46212,19 @@
 
 
 /***/ },
-/* 233 */
+/* 247 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    __webpack_require__(228);
-	    __webpack_require__(234);
-	    __webpack_require__(235);
+	    __webpack_require__(242);
+	    __webpack_require__(248);
+	    __webpack_require__(249);
 
 
 
 /***/ },
-/* 234 */
+/* 248 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -43383,15 +46265,15 @@
 
 
 /***/ },
-/* 235 */
+/* 249 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    var zrUtil = __webpack_require__(4);
-	    var AxisBuilder = __webpack_require__(133);
-	    var BrushController = __webpack_require__(236);
-	    var graphic = __webpack_require__(43);
+	    var AxisBuilder = __webpack_require__(135);
+	    var BrushController = __webpack_require__(250);
+	    var graphic = __webpack_require__(44);
 
 	    var elementList = ['axisLine', 'axisLabel', 'axisTick', 'axisName'];
 
@@ -43564,7 +46446,7 @@
 
 
 /***/ },
-/* 236 */
+/* 250 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -43578,8 +46460,8 @@
 	    var Eventful = __webpack_require__(33);
 	    var zrUtil = __webpack_require__(4);
 	    var BoundingRect = __webpack_require__(9);
-	    var graphic = __webpack_require__(43);
-	    var interactionMutex = __webpack_require__(178);
+	    var graphic = __webpack_require__(44);
+	    var interactionMutex = __webpack_require__(192);
 	    var DataDiffer = __webpack_require__(99);
 
 	    var curry = zrUtil.curry;
@@ -43660,6 +46542,9 @@
 
 	        /**
 	         * Only for drawing (after enabledBrush).
+	         *     'line', 'rect', 'polygon' or false
+	         *     If passing false/null/undefined, disable brush.
+	         *     If passing 'auto', determined by panel.defaultBrushType
 	         * @private
 	         * @type {string}
 	         */
@@ -43667,6 +46552,7 @@
 
 	        /**
 	         * Only for drawing (after enabledBrush).
+	         *
 	         * @private
 	         * @type {Object}
 	         */
@@ -43747,7 +46633,9 @@
 	         * If set to null/undefined/false, select disabled.
 	         * @param {Object} brushOption
 	         * @param {string|boolean} brushOption.brushType 'line', 'rect', 'polygon' or false
-	         *                          If pass false/null/undefined, disable brush.
+	         *                          If passing false/null/undefined, disable brush.
+	         *                          If passing 'auto', determined by panel.defaultBrushType.
+	         *                              ('auto' can not be used in global panel)
 	         * @param {number} [brushOption.brushMode='single'] 'single' or 'multiple'
 	         * @param {boolean} [brushOption.transformable=true]
 	         * @param {boolean} [brushOption.removeOnClick=false]
@@ -43770,7 +46658,11 @@
 
 	        /**
 	         * @param {Array.<Object>} panelOpts If not pass, it is global brush.
-	         *        Each items: {panelId, rect}
+	         *        Each items: {
+	         *            panelId, // mandatory.
+	         *            rect, // mandatory.
+	         *            defaultBrushType // optional, only used when brushType is 'auto'.
+	         *        }
 	         */
 	        setPanels: function (panelOpts) {
 	            var oldPanels = this._panels || {};
@@ -43796,6 +46688,7 @@
 
 	                panel.attr('shape', rect.plain());
 	                panel.__brushPanelId = panelId;
+	                panel.__defaultBrushType = panelOpt.defaultBrushType;
 	                newPanels[panelId] = panel;
 	                oldPanels[panelId] = null;
 	            });
@@ -43847,7 +46740,7 @@
 	         *            {id: 'yy', brushType: 'rect', range: [[23, 44], [23, 54]]},
 	         *            ...
 	         *        ]
-	         *        `brushType` is required in each cover info.
+	         *        `brushType` is required in each cover info. (can not be 'auto')
 	         *        `id` is not mandatory.
 	         *        `brushStyle`, `transformable` is not mandatory, use DEFAULT_BRUSH_OPT by default.
 	         *        If brushOptionList is null/undefined, all covers removed.
@@ -43910,6 +46803,12 @@
 	        },
 
 	        unmount: function () {
+	            if (true) {
+	                if (!this._mounted) {
+	                    return;
+	                }
+	            }
+
 	            this.enableBrush(false);
 
 	            // container may 'removeAll' outside.
@@ -44333,13 +47232,14 @@
 	            if (panel && !creatingCover) {
 	                thisBrushOption.brushMode === 'single' && clearCovers(controller);
 	                var brushOption = zrUtil.clone(thisBrushOption);
+	                brushOption.brushType = determineBrushType(brushOption.brushType, panel);
 	                brushOption.panelId = panel === true ? null : panel.__brushPanelId;
 	                creatingCover = controller._creatingCover = createCover(controller, brushOption);
 	                controller._covers.push(creatingCover);
 	            }
 
 	            if (creatingCover) {
-	                var coverRenderer = coverRenderers[controller._brushType];
+	                var coverRenderer = coverRenderers[determineBrushType(controller._brushType, panel)];
 	                var coverBrushOption = creatingCover.__brushOption;
 
 	                coverBrushOption.range = coverRenderer.getCreatingRange(
@@ -44374,6 +47274,19 @@
 	        return eventParams;
 	    }
 
+	    function determineBrushType(brushType, panel) {
+	        if (brushType === 'auto') {
+	            if (true) {
+	                zrUtil.assert(
+	                    panel && panel.__defaultBrushType,
+	                    'MUST have defaultBrushType when brushType is "atuo"'
+	                );
+	            }
+	            return panel.__defaultBrushType;
+	        }
+	        return brushType;
+	    }
+
 	    var mouseHandlers = {
 
 	        mousedown: function (e) {
@@ -44571,7 +47484,7 @@
 
 
 /***/ },
-/* 237 */
+/* 251 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -44630,7 +47543,7 @@
 
 
 /***/ },
-/* 238 */
+/* 252 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -44793,17 +47706,17 @@
 
 
 /***/ },
-/* 239 */
+/* 253 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 	    var zrUtil = __webpack_require__(4);
 
 	    var SMOOTH = 0.3;
 
-	    var ParallelView = __webpack_require__(42).extend({
+	    var ParallelView = __webpack_require__(43).extend({
 
 	        type: 'parallel',
 
@@ -45036,7 +47949,7 @@
 
 
 /***/ },
-/* 240 */
+/* 254 */
 /***/ function(module, exports) {
 
 	
@@ -45075,21 +47988,21 @@
 
 
 /***/ },
-/* 241 */
+/* 255 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    var echarts = __webpack_require__(1);
 
-	    __webpack_require__(242);
-	    __webpack_require__(243);
-	    echarts.registerLayout(__webpack_require__(244));
-	    echarts.registerVisual(__webpack_require__(246));
+	    __webpack_require__(256);
+	    __webpack_require__(257);
+	    echarts.registerLayout(__webpack_require__(258));
+	    echarts.registerVisual(__webpack_require__(260));
 
 
 /***/ },
-/* 242 */
+/* 256 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -45099,7 +48012,7 @@
 
 
 	    var SeriesModel = __webpack_require__(28);
-	    var createGraphFromNodeEdge = __webpack_require__(199);
+	    var createGraphFromNodeEdge = __webpack_require__(213);
 	    var encodeHTML = __webpack_require__(6).encodeHTML;
 
 	    var SankeySeries = SeriesModel.extend({
@@ -45226,7 +48139,7 @@
 
 
 /***/ },
-/* 243 */
+/* 257 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -45235,7 +48148,7 @@
 	 */
 
 
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 	    var zrUtil = __webpack_require__(4);
 
 	    var SankeyShape = graphic.extendShape({
@@ -45433,7 +48346,7 @@
 
 
 /***/ },
-/* 244 */
+/* 258 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -45443,7 +48356,7 @@
 
 
 	    var layout = __webpack_require__(21);
-	    var nest = __webpack_require__(245);
+	    var nest = __webpack_require__(259);
 	    var zrUtil = __webpack_require__(4);
 
 	    module.exports = function (ecModel, api, payload) {
@@ -45809,7 +48722,7 @@
 
 
 /***/ },
-/* 245 */
+/* 259 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -45920,7 +48833,7 @@
 
 
 /***/ },
-/* 246 */
+/* 260 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -45929,7 +48842,7 @@
 	 */
 
 
-	    var VisualMapping = __webpack_require__(195);
+	    var VisualMapping = __webpack_require__(209);
 	    var zrUtil = __webpack_require__(4);
 
 	    module.exports = function (ecModel, payload) {
@@ -45968,23 +48881,23 @@
 
 
 /***/ },
-/* 247 */
+/* 261 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    var echarts = __webpack_require__(1);
 
-	    __webpack_require__(248);
-	    __webpack_require__(251);
+	    __webpack_require__(262);
+	    __webpack_require__(265);
 
-	    echarts.registerVisual(__webpack_require__(252));
-	    echarts.registerLayout(__webpack_require__(253));
+	    echarts.registerVisual(__webpack_require__(266));
+	    echarts.registerLayout(__webpack_require__(267));
 
 
 
 /***/ },
-/* 248 */
+/* 262 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -45992,7 +48905,7 @@
 
 	    var zrUtil = __webpack_require__(4);
 	    var SeriesModel = __webpack_require__(28);
-	    var whiskerBoxCommon = __webpack_require__(249);
+	    var whiskerBoxCommon = __webpack_require__(263);
 
 	    var BoxplotSeries = SeriesModel.extend({
 
@@ -46060,7 +48973,7 @@
 
 
 /***/ },
-/* 249 */
+/* 263 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -46068,7 +48981,7 @@
 
 	    var List = __webpack_require__(98);
 	    var completeDimensions = __webpack_require__(103);
-	    var WhiskerBoxDraw = __webpack_require__(250);
+	    var WhiskerBoxDraw = __webpack_require__(264);
 	    var zrUtil = __webpack_require__(4);
 
 	    function getItemValue(item) {
@@ -46204,7 +49117,7 @@
 
 
 /***/ },
-/* 250 */
+/* 264 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -46213,8 +49126,8 @@
 
 
 	    var zrUtil = __webpack_require__(4);
-	    var graphic = __webpack_require__(43);
-	    var Path = __webpack_require__(45);
+	    var graphic = __webpack_require__(44);
+	    var Path = __webpack_require__(46);
 
 	    var WhiskerPath = Path.extend({
 
@@ -46424,16 +49337,16 @@
 
 
 /***/ },
-/* 251 */
+/* 265 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
 
 
 	    var zrUtil = __webpack_require__(4);
-	    var ChartView = __webpack_require__(42);
-	    var graphic = __webpack_require__(43);
-	    var whiskerBoxCommon = __webpack_require__(249);
+	    var ChartView = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
+	    var whiskerBoxCommon = __webpack_require__(263);
 
 	    var BoxplotView = ChartView.extend({
 
@@ -46479,7 +49392,7 @@
 
 
 /***/ },
-/* 252 */
+/* 266 */
 /***/ function(module, exports) {
 
 	
@@ -46518,7 +49431,7 @@
 
 
 /***/ },
-/* 253 */
+/* 267 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -46704,27 +49617,27 @@
 
 
 /***/ },
-/* 254 */
+/* 268 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    var echarts = __webpack_require__(1);
 
-	    __webpack_require__(255);
-	    __webpack_require__(256);
+	    __webpack_require__(269);
+	    __webpack_require__(270);
 
 	    echarts.registerPreprocessor(
-	        __webpack_require__(257)
+	        __webpack_require__(271)
 	    );
 
-	    echarts.registerVisual(__webpack_require__(258));
-	    echarts.registerLayout(__webpack_require__(259));
+	    echarts.registerVisual(__webpack_require__(272));
+	    echarts.registerLayout(__webpack_require__(273));
 
 
 
 /***/ },
-/* 255 */
+/* 269 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -46732,7 +49645,7 @@
 
 	    var zrUtil = __webpack_require__(4);
 	    var SeriesModel = __webpack_require__(28);
-	    var whiskerBoxCommon = __webpack_require__(249);
+	    var whiskerBoxCommon = __webpack_require__(263);
 	    var formatUtil = __webpack_require__(6);
 	    var encodeHTML = formatUtil.encodeHTML;
 	    var addCommas = formatUtil.addCommas;
@@ -46832,16 +49745,16 @@
 
 
 /***/ },
-/* 256 */
+/* 270 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
 
 
 	    var zrUtil = __webpack_require__(4);
-	    var ChartView = __webpack_require__(42);
-	    var graphic = __webpack_require__(43);
-	    var whiskerBoxCommon = __webpack_require__(249);
+	    var ChartView = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
+	    var whiskerBoxCommon = __webpack_require__(263);
 
 	    var CandlestickView = ChartView.extend({
 
@@ -46891,7 +49804,7 @@
 
 
 /***/ },
-/* 257 */
+/* 271 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -46914,7 +49827,7 @@
 
 
 /***/ },
-/* 258 */
+/* 272 */
 /***/ function(module, exports) {
 
 	
@@ -46959,7 +49872,7 @@
 
 
 /***/ },
-/* 259 */
+/* 273 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -47085,7 +49998,7 @@
 
 
 /***/ },
-/* 260 */
+/* 274 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -47093,19 +50006,19 @@
 	    var zrUtil = __webpack_require__(4);
 	    var echarts = __webpack_require__(1);
 
-	    __webpack_require__(261);
-	    __webpack_require__(262);
+	    __webpack_require__(275);
+	    __webpack_require__(276);
 
 	    echarts.registerVisual(zrUtil.curry(
-	        __webpack_require__(110), 'effectScatter', 'circle', null
+	        __webpack_require__(119), 'effectScatter', 'circle', null
 	    ));
 	    echarts.registerLayout(zrUtil.curry(
-	        __webpack_require__(111), 'effectScatter'
+	        __webpack_require__(120), 'effectScatter'
 	    ));
 
 
 /***/ },
-/* 261 */
+/* 275 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -47178,13 +50091,13 @@
 
 
 /***/ },
-/* 262 */
+/* 276 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var SymbolDraw = __webpack_require__(105);
-	    var EffectSymbol = __webpack_require__(263);
+	    var SymbolDraw = __webpack_require__(115);
+	    var EffectSymbol = __webpack_require__(277);
 
 	    __webpack_require__(1).extendChartView({
 
@@ -47214,7 +50127,7 @@
 
 
 /***/ },
-/* 263 */
+/* 277 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -47224,10 +50137,10 @@
 
 
 	    var zrUtil = __webpack_require__(4);
-	    var symbolUtil = __webpack_require__(107);
-	    var graphic = __webpack_require__(43);
+	    var symbolUtil = __webpack_require__(104);
+	    var graphic = __webpack_require__(44);
 	    var numberUtil = __webpack_require__(7);
-	    var Symbol = __webpack_require__(106);
+	    var Symbol = __webpack_require__(116);
 	    var Group = graphic.Group;
 
 	    var EFFECT_RIPPLE_NUMBER = 3;
@@ -47448,25 +50361,25 @@
 
 
 /***/ },
-/* 264 */
+/* 278 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    __webpack_require__(265);
-	    __webpack_require__(266);
+	    __webpack_require__(279);
+	    __webpack_require__(280);
 
 	    var echarts = __webpack_require__(1);
 	    echarts.registerLayout(
-	        __webpack_require__(271)
+	        __webpack_require__(285)
 	    );
 	    echarts.registerVisual(
-	        __webpack_require__(272)
+	        __webpack_require__(286)
 	    );
 
 
 /***/ },
-/* 265 */
+/* 279 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -47629,17 +50542,17 @@
 
 
 /***/ },
-/* 266 */
+/* 280 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var LineDraw = __webpack_require__(202);
-	    var EffectLine = __webpack_require__(267);
-	    var Line = __webpack_require__(203);
-	    var Polyline = __webpack_require__(268);
-	    var EffectPolyline = __webpack_require__(269);
-	    var LargeLineDraw = __webpack_require__(270);
+	    var LineDraw = __webpack_require__(216);
+	    var EffectLine = __webpack_require__(281);
+	    var Line = __webpack_require__(217);
+	    var Polyline = __webpack_require__(282);
+	    var EffectPolyline = __webpack_require__(283);
+	    var LargeLineDraw = __webpack_require__(284);
 
 	    __webpack_require__(1).extendChartView({
 
@@ -47729,7 +50642,7 @@
 
 
 /***/ },
-/* 267 */
+/* 281 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -47738,13 +50651,13 @@
 	 */
 
 
-	    var graphic = __webpack_require__(43);
-	    var Line = __webpack_require__(203);
+	    var graphic = __webpack_require__(44);
+	    var Line = __webpack_require__(217);
 	    var zrUtil = __webpack_require__(4);
-	    var symbolUtil = __webpack_require__(107);
+	    var symbolUtil = __webpack_require__(104);
 	    var vec2 = __webpack_require__(10);
 
-	    var curveUtil = __webpack_require__(50);
+	    var curveUtil = __webpack_require__(51);
 
 	    /**
 	     * @constructor
@@ -47922,7 +50835,7 @@
 
 
 /***/ },
-/* 268 */
+/* 282 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -47930,7 +50843,7 @@
 	 */
 
 
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 	    var zrUtil = __webpack_require__(4);
 
 	    /**
@@ -48012,7 +50925,7 @@
 
 
 /***/ },
-/* 269 */
+/* 283 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -48021,9 +50934,9 @@
 	 */
 
 
-	    var Polyline = __webpack_require__(268);
+	    var Polyline = __webpack_require__(282);
 	    var zrUtil = __webpack_require__(4);
-	    var EffectLine = __webpack_require__(267);
+	    var EffectLine = __webpack_require__(281);
 	    var vec2 = __webpack_require__(10);
 
 	    /**
@@ -48128,17 +51041,17 @@
 
 
 /***/ },
-/* 270 */
+/* 284 */
 /***/ function(module, exports, __webpack_require__) {
 
 	// TODO Batch by color
 
 
 
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 
-	    var quadraticContain = __webpack_require__(55);
-	    var lineContain = __webpack_require__(53);
+	    var quadraticContain = __webpack_require__(56);
+	    var lineContain = __webpack_require__(54);
 
 	    var LargeLineShape = graphic.extendShape({
 	        shape: {
@@ -48276,7 +51189,7 @@
 
 
 /***/ },
-/* 271 */
+/* 285 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -48289,7 +51202,7 @@
 	            // FIXME Use data dimensions ?
 	            lineData.each(function (idx) {
 	                var itemModel = lineData.getItemModel(idx);
-	                // TODO Support pure array
+
 	                var coords = (itemModel.option instanceof Array) ?
 	                    itemModel.option : itemModel.get('coords');
 
@@ -48324,7 +51237,7 @@
 
 
 /***/ },
-/* 272 */
+/* 286 */
 /***/ function(module, exports) {
 
 	
@@ -48367,17 +51280,17 @@
 
 
 /***/ },
-/* 273 */
+/* 287 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    __webpack_require__(274);
-	    __webpack_require__(275);
+	    __webpack_require__(288);
+	    __webpack_require__(289);
 
 
 /***/ },
-/* 274 */
+/* 288 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -48420,13 +51333,13 @@
 
 
 /***/ },
-/* 275 */
+/* 289 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var graphic = __webpack_require__(43);
-	    var HeatmapLayer = __webpack_require__(276);
+	    var graphic = __webpack_require__(44);
+	    var HeatmapLayer = __webpack_require__(290);
 	    var zrUtil = __webpack_require__(4);
 
 	    function getIsInPiecewiseRange(dataExtent, pieceList, selected) {
@@ -48502,8 +51415,8 @@
 
 	            this.group.removeAll();
 	            var coordSys = seriesModel.coordinateSystem;
-	            if (coordSys.type === 'cartesian2d') {
-	                this._renderOnCartesian(coordSys, seriesModel, api);
+	            if (coordSys.type === 'cartesian2d' || coordSys.type === 'calendar') {
+	                this._renderOnCartesianAndCalendar(coordSys, seriesModel, api);
 	            }
 	            else if (isGeoCoordSys(coordSys)) {
 	                this._renderOnGeo(
@@ -48514,23 +51427,28 @@
 
 	        dispose: function () {},
 
-	        _renderOnCartesian: function (cartesian, seriesModel, api) {
-	            var xAxis = cartesian.getAxis('x');
-	            var yAxis = cartesian.getAxis('y');
-	            var group = this.group;
+	        _renderOnCartesianAndCalendar: function (coordSys, seriesModel, api) {
 
-	            if (true) {
-	                if (!(xAxis.type === 'category' && yAxis.type === 'category')) {
-	                    throw new Error('Heatmap on cartesian must have two category axes');
+	            if (coordSys.type === 'cartesian2d') {
+	                var xAxis = coordSys.getAxis('x');
+	                var yAxis = coordSys.getAxis('y');
+
+	                if (true) {
+	                    if (!(xAxis.type === 'category' && yAxis.type === 'category')) {
+	                        throw new Error('Heatmap on cartesian must have two category axes');
+	                    }
+	                    if (!(xAxis.onBand && yAxis.onBand)) {
+	                        throw new Error('Heatmap on cartesian must have two axes with boundaryGap true');
+	                    }
 	                }
-	                if (!(xAxis.onBand && yAxis.onBand)) {
-	                    throw new Error('Heatmap on cartesian must have two axes with boundaryGap true');
-	                }
+
+	                var width = xAxis.getBandWidth();
+	                var height = yAxis.getBandWidth();
+
 	            }
 
-	            var width = xAxis.getBandWidth();
-	            var height = yAxis.getBandWidth();
 
+	            var group = this.group;
 	            var data = seriesModel.getData();
 
 	            var itemStyleQuery = 'itemStyle.normal';
@@ -48542,54 +51460,89 @@
 	            var labelModel = seriesModel.getModel('label.normal');
 	            var hoverLabelModel = seriesModel.getModel('label.emphasis');
 
-	            data.each(['x', 'y', 'z'], function (x, y, z, idx) {
-	                var itemModel = data.getItemModel(idx);
-	                var point = cartesian.dataToPoint([x, y]);
-	                // Ignore empty data
-	                if (isNaN(z)) {
-	                    return;
-	                }
-	                var rect = new graphic.Rect({
-	                    shape: {
-	                        x: point[0] - width / 2,
-	                        y: point[1] - height / 2,
-	                        width: width,
-	                        height: height
-	                    },
-	                    style: {
-	                        fill: data.getItemVisual(idx, 'color'),
-	                        opacity: data.getItemVisual(idx, 'opacity')
+
+
+	            data.each(
+	                coordSys.type === 'cartesian2d' ? ['x', 'y', 'z'] : ['time', 'value'],
+
+	                function (x, y, z, idx) {
+	                    var rect;
+
+	                    if (coordSys.type === 'cartesian2d') {
+
+	                        // Ignore empty data
+	                        if (isNaN(z)) {
+	                            return;
+	                        }
+
+	                        var point = coordSys.dataToPoint([x, y]);
+
+	                        rect = new graphic.Rect({
+	                            shape: {
+	                                x: point[0] - width / 2,
+	                                y: point[1] - height / 2,
+	                                width: width,
+	                                height: height
+	                            },
+	                            style: {
+	                                fill: data.getItemVisual(idx, 'color'),
+	                                opacity: data.getItemVisual(idx, 'opacity')
+	                            }
+	                        });
 	                    }
-	                });
-	                // Optimization for large datset
-	                if (data.hasItemOption) {
-	                    style = itemModel.getModel(itemStyleQuery).getItemStyle(['color']);
-	                    hoverStl = itemModel.getModel(hoverItemStyleQuery).getItemStyle();
-	                    labelModel = itemModel.getModel(labelQuery);
-	                    hoverLabelModel = itemModel.getModel(hoverLabelQuery);
-	                }
+	                    else {
+	                        // x => time y => value z => idx
 
-	                var rawValue = seriesModel.getRawValue(idx);
-	                var defaultText = '-';
-	                if (rawValue && rawValue[2] != null) {
-	                    defaultText = rawValue[2];
-	                }
-	                if (labelModel.getShallow('show')) {
-	                    graphic.setText(style, labelModel);
-	                    style.text = seriesModel.getFormattedLabel(idx, 'normal') || defaultText;
-	                }
-	                if (hoverLabelModel.getShallow('show')) {
-	                    graphic.setText(hoverStl, hoverLabelModel);
-	                    hoverStl.text = seriesModel.getFormattedLabel(idx, 'emphasis') || defaultText;
-	                }
+	                        // Ignore empty data
+	                        if (isNaN(y)) {
+	                            return;
+	                        }
 
-	                rect.setStyle(style);
+	                        idx = z;
 
-	                graphic.setHoverStyle(rect, data.hasItemOption ? hoverStl : zrUtil.extend({}, hoverStl));
+	                        rect = new graphic.Rect({
+	                            z2: 1,
+	                            shape: coordSys.dataToRect([x, y]).contentShape,
+	                            style: {
+	                                fill: data.getItemVisual(idx, 'color'),
+	                                opacity: data.getItemVisual(idx, 'opacity')
+	                            }
+	                        });
+	                    }
 
-	                group.add(rect);
-	                data.setItemGraphicEl(idx, rect);
-	            });
+
+	                    var itemModel = data.getItemModel(idx);
+
+	                    // Optimization for large datset
+	                    if (data.hasItemOption) {
+	                        style = itemModel.getModel(itemStyleQuery).getItemStyle(['color']);
+	                        hoverStl = itemModel.getModel(hoverItemStyleQuery).getItemStyle();
+	                        labelModel = itemModel.getModel(labelQuery);
+	                        hoverLabelModel = itemModel.getModel(hoverLabelQuery);
+	                    }
+
+	                    var rawValue = seriesModel.getRawValue(idx);
+	                    var defaultText = '-';
+	                    if (rawValue && rawValue[2] != null) {
+	                        defaultText = rawValue[2];
+	                    }
+	                    if (labelModel.getShallow('show')) {
+	                        graphic.setText(style, labelModel);
+	                        style.text = seriesModel.getFormattedLabel(idx, 'normal') || defaultText;
+	                    }
+	                    if (hoverLabelModel.getShallow('show')) {
+	                        graphic.setText(hoverStl, hoverLabelModel);
+	                        hoverStl.text = seriesModel.getFormattedLabel(idx, 'emphasis') || defaultText;
+	                    }
+
+	                    rect.setStyle(style);
+
+	                    graphic.setHoverStyle(rect, data.hasItemOption ? hoverStl : zrUtil.extend({}, hoverStl));
+
+	                    group.add(rect);
+	                    data.setItemGraphicEl(idx, rect);
+	                }
+	            );
 	        },
 
 	        _renderOnGeo: function (geo, seriesModel, visualMapModel, api) {
@@ -48657,8 +51610,9 @@
 	    });
 
 
+
 /***/ },
-/* 276 */
+/* 290 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -48812,38 +51766,38 @@
 
 
 /***/ },
-/* 277 */
+/* 291 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    var zrUtil = __webpack_require__(4);
 
-	    __webpack_require__(114);
+	    __webpack_require__(124);
 
-	    __webpack_require__(278);
-	    __webpack_require__(279);
+	    __webpack_require__(292);
+	    __webpack_require__(293);
 
-	    var barLayoutGrid = __webpack_require__(140);
+	    var barLayoutGrid = __webpack_require__(154);
 	    var echarts = __webpack_require__(1);
 
 	    echarts.registerLayout(zrUtil.curry(barLayoutGrid, 'pictorialBar'));
 
 	    echarts.registerVisual(zrUtil.curry(
-	        __webpack_require__(110), 'pictorialBar', 'roundRect', null
+	        __webpack_require__(119), 'pictorialBar', 'roundRect', null
 	    ));
 
 	    // In case developer forget to include grid component
-	    __webpack_require__(113);
+	    __webpack_require__(122);
 
 
 /***/ },
-/* 278 */
+/* 292 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var PictorialBarSeries = __webpack_require__(136).extend({
+	    var PictorialBarSeries = __webpack_require__(150).extend({
 
 	        type: 'series.pictorialBar',
 
@@ -48888,16 +51842,16 @@
 
 
 /***/ },
-/* 279 */
+/* 293 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    var zrUtil = __webpack_require__(4);
-	    var graphic = __webpack_require__(43);
-	    var symbolUtil = __webpack_require__(107);
+	    var graphic = __webpack_require__(44);
+	    var symbolUtil = __webpack_require__(104);
 	    var numberUtil = __webpack_require__(7);
-	    var helper = __webpack_require__(138);
+	    var helper = __webpack_require__(152);
 
 	    var parsePercent = numberUtil.parsePercent;
 
@@ -49646,7 +52600,7 @@
 
 
 /***/ },
-/* 280 */
+/* 294 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -49654,30 +52608,31 @@
 	    var echarts = __webpack_require__(1);
 	    var zrUtil = __webpack_require__(4);
 
-	    __webpack_require__(281);
+	    __webpack_require__(295);
 
-	    __webpack_require__(287);
+	    __webpack_require__(303);
 
-	    __webpack_require__(288);
+	    __webpack_require__(304);
 
-	    echarts.registerLayout(__webpack_require__(290));
+	    echarts.registerLayout(__webpack_require__(306));
 
-	    echarts.registerVisual(__webpack_require__(291));
+	    echarts.registerVisual(__webpack_require__(307));
 
 	    echarts.registerProcessor(
-	        zrUtil.curry(__webpack_require__(149), 'themeRiver')
+	        zrUtil.curry(__webpack_require__(163), 'themeRiver')
 	    );
 
 
 /***/ },
-/* 281 */
+/* 295 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    __webpack_require__(282);
-	    __webpack_require__(285);
-	    __webpack_require__(286);
+	    __webpack_require__(296);
+	    __webpack_require__(299);
+	    __webpack_require__(302);
+	    __webpack_require__(142);
 
 	    var echarts = __webpack_require__(1);
 
@@ -49688,7 +52643,7 @@
 
 
 /***/ },
-/* 282 */
+/* 296 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -49696,7 +52651,7 @@
 	 */
 
 
-	    var Single = __webpack_require__(283);
+	    var Single = __webpack_require__(297);
 
 	    /**
 	     * Create single coordinate system and inject it into seriesModel.
@@ -49739,7 +52694,7 @@
 
 
 /***/ },
-/* 283 */
+/* 297 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -49747,8 +52702,8 @@
 	 */
 
 
-	    var SingleAxis = __webpack_require__(284);
-	    var axisHelper = __webpack_require__(115);
+	    var SingleAxis = __webpack_require__(298);
+	    var axisHelper = __webpack_require__(105);
 	    var layout = __webpack_require__(21);
 
 	    /**
@@ -49791,13 +52746,15 @@
 	        /**
 	         * @type {module:echarts/coord/single/AxisModel}
 	         */
-	        this._model = axisModel;
+	        this.model = axisModel;
 	    }
 
 	    Single.prototype = {
 
 	        type: 'singleAxis',
 
+	        axisPointerEnabled: true,
+
 	        constructor: Single,
 
 	        /**
@@ -49827,6 +52784,7 @@
 
 	            axisModel.axis = axis;
 	            axis.model = axisModel;
+	            axis.coordinateSystem = this;
 	            this._axis = axis;
 	        },
 
@@ -49843,7 +52801,7 @@
 	                    this._axis.scale.unionExtentFromData(
 	                        data, seriesModel.coordDimToDataDim(dim)
 	                    );
-	                    axisHelper.niceScaleExtent(this._axis, this._axis.model);
+	                    axisHelper.niceScaleExtent(this._axis.scale, this._axis.model);
 	                }
 	            }, this);
 	        },
@@ -49944,6 +52902,20 @@
 	        },
 
 	        /**
+	         * @return {Array.<module:echarts/coord/Axis>}
+	         */
+	        getAxes: function () {
+	            return [this._axis];
+	        },
+
+	        /**
+	         * @return {Object} {baseAxes: [], otherAxes: []}
+	         */
+	        getTooltipAxes: function () {
+	            return {baseAxes: [this.getAxis()]};
+	        },
+
+	        /**
 	         * If contain point.
 	         *
 	         * @param  {Array.<number>} point
@@ -49985,6 +52957,11 @@
 	            var rect = this.getRect();
 	            var pt = [];
 	            var idx = axis.orient === 'horizontal' ? 0 : 1;
+
+	            if (val instanceof Array) {
+	                val = val[0];
+	            }
+
 	            pt[idx] = axis.toGlobalCoord(axis.dataToCoord(+val));
 	            pt[1 - idx] = idx === 0 ? (rect.y + rect.height / 2) : (rect.x + rect.width / 2);
 	            return pt;
@@ -49996,14 +52973,14 @@
 
 
 /***/ },
-/* 284 */
+/* 298 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    var zrUtil = __webpack_require__(4);
-	    var Axis = __webpack_require__(124);
-	    var axisHelper = __webpack_require__(115);
+	    var Axis = __webpack_require__(100);
+	    var axisHelper = __webpack_require__(105);
 
 	    /**
 	     * @constructor  module:echarts/coord/single/SingleAxis
@@ -50100,6 +53077,13 @@
 	        },
 
 	        /**
+	         * @override
+	         */
+	        pointToData: function (point, clamp) {
+	            return this.coordinateSystem.pointToData(point, clamp)[0];
+	        },
+
+	        /**
 	         * Convert the local coord(processed by dataToCoord())
 	         * to global coord(concrete pixel coord).
 	         * designated by module:echarts/coord/single/Single.
@@ -50122,14 +53106,16 @@
 
 
 /***/ },
-/* 285 */
+/* 299 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var AxisBuilder = __webpack_require__(133);
+	    var AxisBuilder = __webpack_require__(135);
 	    var zrUtil =  __webpack_require__(4);
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
+	    var SingleAxisPointer = __webpack_require__(300);
+	    var singleAxisHelper = __webpack_require__(301);
 	    var getInterval = AxisBuilder.getInterval;
 	    var ifIgnoreOnTick = AxisBuilder.ifIgnoreOnTick;
 
@@ -50139,17 +53125,19 @@
 
 	    var selfBuilderAttr = 'splitLine';
 
-	    var AxisView = __webpack_require__(1).extendComponentView({
+	    var SingleAxisView = __webpack_require__(141).extend({
 
 	        type: 'singleAxis',
 
-	        render: function (axisModel, ecModel) {
+	        axisPointerClass: SingleAxisPointer,
+
+	        render: function (axisModel, ecModel, api, payload) {
 
 	            var group = this.group;
 
 	            group.removeAll();
 
-	            var layout =  axisLayout(axisModel);
+	            var layout =  singleAxisHelper.layout(axisModel);
 
 	            var axisBuilder = new AxisBuilder(axisModel, layout);
 
@@ -50160,12 +53148,14 @@
 	            if (axisModel.get(selfBuilderAttr + '.show')) {
 	                this['_' + selfBuilderAttr](axisModel, layout.labelInterval);
 	            }
+
+	            SingleAxisView.superCall(this, 'render', axisModel, ecModel, api, payload);
 	        },
 
 	        _splitLine: function(axisModel, labelInterval) {
 	            var axis = axisModel.axis;
 
-	            if (axis.isBlank()) {
+	            if (axis.scale.isBlank()) {
 	                return;
 	            }
 
@@ -50235,8 +53225,153 @@
 	        }
 	    });
 
-	    function axisLayout(axisModel) {
+	    module.exports = SingleAxisView;
 
+
+
+/***/ },
+/* 300 */
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+
+	    var graphic = __webpack_require__(44);
+	    var BaseAxisPointer = __webpack_require__(137);
+	    var viewHelper = __webpack_require__(139);
+	    var singleAxisHelper = __webpack_require__(301);
+
+	    var XY = ['x', 'y'];
+	    var WH = ['width', 'height'];
+
+	    var SingleAxisPointer = BaseAxisPointer.extend({
+
+	        /**
+	         * @override
+	         */
+	        makeElOption: function (elOption, value, axisModel, axisPointerModel, api) {
+	            var axis = axisModel.axis;
+	            var coordSys = axis.coordinateSystem;
+	            var otherExtent = getGlobalExtent(coordSys, 1 - getPointDimIndex(axis));
+	            var pixelValue = coordSys.dataToPoint(value)[0];
+	            var elStyle = viewHelper.buildElStyle(axisPointerModel);
+	            var pointerOption = pointerShapeBuilder[axisPointerModel.get('type')](
+	                axis, pixelValue, otherExtent, elStyle
+	            );
+	            pointerOption.style = elStyle;
+
+	            elOption.graphicKey = pointerOption.type;
+	            elOption.pointer = pointerOption;
+
+	            var layoutInfo = singleAxisHelper.layout(axisModel);
+	            viewHelper.buildCartesianSingleLabelElOption(
+	                value, elOption, layoutInfo, axisModel, axisPointerModel, api
+	            );
+	        },
+
+	        /**
+	         * @override
+	         */
+	        getHandleTransform: function (value, axisModel, axisPointerModel) {
+	            var layoutInfo = singleAxisHelper.layout(axisModel, {labelInside: false});
+	            layoutInfo.labelMargin = axisPointerModel.get('handle.margin');
+	            return {
+	                position: viewHelper.getTransformedPosition(axisModel.axis, value, layoutInfo),
+	                rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0)
+	            };
+	        },
+
+	        /**
+	         * @override
+	         */
+	        updateHandleTransform: function (transform, delta, axisModel, axisPointerModel) {
+	            var axis = axisModel.axis;
+	            var coordSys = axis.coordinateSystem;
+	            var dimIndex = getPointDimIndex(axis);
+	            var axisExtent = getGlobalExtent(coordSys, dimIndex);
+	            var currPosition = transform.position;
+	            currPosition[dimIndex] += delta[dimIndex];
+	            currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]);
+	            currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]);
+	            var otherExtent = getGlobalExtent(coordSys, 1 - dimIndex);
+	            var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2;
+	            var cursorPoint = [cursorOtherValue, cursorOtherValue];
+	            cursorPoint[dimIndex] = currPosition[dimIndex];
+
+	            return {
+	                position: currPosition,
+	                rotation: transform.rotation,
+	                cursorPoint: cursorPoint,
+	                tooltipOption: {
+	                    verticalAlign: 'middle'
+	                }
+	            };
+	        }
+	    });
+
+	    var pointerShapeBuilder = {
+
+	        line: function (axis, pixelValue, otherExtent, elStyle) {
+	            var targetShape = viewHelper.makeLineShape(
+	                [pixelValue, otherExtent[0]],
+	                [pixelValue, otherExtent[1]],
+	                getPointDimIndex(axis)
+	            );
+	            graphic.subPixelOptimizeLine({
+	                shape: targetShape,
+	                style: elStyle
+	            });
+	            return {
+	                type: 'Line',
+	                shape: targetShape
+	            };
+	        },
+
+	        shadow: function (axis, pixelValue, otherExtent, elStyle) {
+	            var bandWidth = axis.getBandWidth();
+	            var span = otherExtent[1] - otherExtent[0];
+	            return {
+	                type: 'Rect',
+	                shape: viewHelper.makeRectShape(
+	                    [pixelValue - bandWidth / 2, otherExtent[0]],
+	                    [bandWidth, span],
+	                    getPointDimIndex(axis)
+	                )
+	            };
+	        }
+	    };
+
+	    function getPointDimIndex(axis) {
+	        return axis.isHorizontal() ? 0 : 1;
+	    }
+
+	    function getGlobalExtent(coordSys, dimIndex) {
+	        var rect = coordSys.getRect();
+	        return [rect[XY[dimIndex]], rect[XY[dimIndex]] + rect[WH[dimIndex]]];
+	    }
+
+	    module.exports = SingleAxisPointer;
+
+
+/***/ },
+/* 301 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+
+	    var zrUtil = __webpack_require__(4);
+
+	    var helper = {};
+
+	    /**
+	     * @param {Object} opt {labelInside}
+	     * @return {Object} {
+	     *  position, rotation, labelDirection, labelOffset,
+	     *  tickDirection, labelRotate, labelInterval, z2
+	     * }
+	     */
+	    helper.layout = function (axisModel, opt) {
+	        opt = opt || {};
 	        var single = axisModel.coordinateSystem;
 	        var axis = axisModel.axis;
 	        var layout = {};
@@ -50270,15 +53405,16 @@
 	            = layout.nameDirection
 	            = directionMap[axisPosition];
 
-	        if (axisModel.getModel('axisTick').get('inside')) {
+	        if (axisModel.get('axisTick.inside')) {
 	            layout.tickDirection = -layout.tickDirection;
 	        }
 
-	        if (axisModel.getModel('axisLabel').get('inside')) {
+	        if (zrUtil.retrieve(opt.labelInside, axisModel.get('axisLabel.inside'))) {
 	            layout.labelDirection = -layout.labelDirection;
 	        }
 
-	        var labelRotation = axisModel.getModel('axisLabel').get('rotate');
+	        var labelRotation = opt.rotate;
+	        labelRotation == null && (labelRotation = axisModel.get('axisLabel.rotate'));
 	        layout.labelRotation = axisPosition === 'top' ? -labelRotation : labelRotation;
 
 	        layout.labelInterval = axis.getLabelInterval();
@@ -50286,20 +53422,20 @@
 	        layout.z2 = 1;
 
 	        return layout;
-	    }
+	    };
 
-	    module.exports = AxisView;
+	    module.exports = helper;
 
 
 
 /***/ },
-/* 286 */
+/* 302 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    var ComponentModel = __webpack_require__(19);
-	    var axisModelCreator = __webpack_require__(128);
+	    var axisModelCreator = __webpack_require__(131);
 	    var zrUtil =  __webpack_require__(4);
 
 	    var AxisModel = ComponentModel.extend({
@@ -50348,6 +53484,13 @@
 	            }
 	        },
 
+	        // Single coordinate system and single axis is the,
+	        // which is used as the parent tooltip model.
+	        // same model, so we set default tooltip show as true.
+	        tooltip: {
+	            show: true
+	        },
+
 	        axisTick: {
 	            show: true,
 	            length: 6,
@@ -50374,7 +53517,7 @@
 	        return option.type || (option.data ? 'category' : 'value');
 	    }
 
-	    zrUtil.merge(AxisModel.prototype, __webpack_require__(130));
+	    zrUtil.merge(AxisModel.prototype, __webpack_require__(111));
 
 	    axisModelCreator('single', AxisModel, getAxisType, defaultOption);
 
@@ -50382,7 +53525,7 @@
 
 
 /***/ },
-/* 287 */
+/* 303 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -50398,7 +53541,7 @@
 	    var zrUtil = __webpack_require__(4);
 	    var formatUtil = __webpack_require__(6);
 	    var encodeHTML = formatUtil.encodeHTML;
-	    var nest = __webpack_require__(245);
+	    var nest = __webpack_require__(259);
 
 	    var DATA_NAME_INDEX = 2;
 
@@ -50609,70 +53752,53 @@
 	         * Get data indices for show tooltip content
 	         *
 	         * @param {Array.<string>|string} dim  single coordinate dimension
-	         * @param {Array.<number>} value  coordinate value
+	         * @param {number} value axis value
 	         * @param {module:echarts/coord/single/SingleAxis} baseAxis  single Axis used
 	         *     the themeRiver.
-	         * @return {Array.<number>}
+	         * @return {Object} {dataIndices, nestestValue}
 	         */
-	        getAxisTooltipDataIndex: function (dim, value, baseAxis) {
+	        getAxisTooltipData: function (dim, value, baseAxis) {
 	            if (!zrUtil.isArray(dim)) {
 	                dim = dim ? [dim] : [];
 	            }
 
 	            var data = this.getData();
-
-	            if (baseAxis.orient === 'horizontal') {
-	                value = value[0];
-	            }
-	            else {
-	                value = value[1];
-	            }
-
 	            var layerSeries = this.getLayerSeries();
 	            var indices = [];
 	            var layerNum = layerSeries.length;
+	            var nestestValue;
 
 	            for (var i = 0; i < layerNum; ++i) {
 	                var minDist = Number.MAX_VALUE;
 	                var nearestIdx = -1;
 	                var pointNum = layerSeries[i].indices.length;
 	                for (var j = 0; j < pointNum; ++j) {
-	                    var dist = Math.abs(data.get(dim[0], layerSeries[i].indices[j]) - value);
+	                    var theValue = data.get(dim[0], layerSeries[i].indices[j]);
+	                    var dist = Math.abs(theValue - value);
 	                    if (dist <= minDist) {
+	                        nestestValue = theValue;
 	                        minDist = dist;
 	                        nearestIdx = layerSeries[i].indices[j];
 	                    }
 	                }
 	                indices.push(nearestIdx);
 	            }
-	            return indices;
+
+	            return {dataIndices: indices, nestestValue: nestestValue};
 	        },
 
 	        /**
 	         * @override
-	         * @param {Array.<number>} dataIndexs  index of data
+	         * @param {number} dataIndex  index of data
 	         */
-	        formatTooltip: function (dataIndexs) {
+	        formatTooltip: function (dataIndex) {
 	            var data = this.getData();
-	            var len = dataIndexs.length;
-	            var time = data.get('time', dataIndexs[0]);
-	            var single = this.coordinateSystem;
-	            var axis = single.getAxis();
-
-	            if (axis.scale.type === 'time') {
-	                time = formatUtil.formatTime('yyyy-MM-dd', time);
+	            var htmlName = data.get('name', dataIndex);
+	            var htmlValue = data.get('value', dataIndex);
+	            if (isNaN(htmlValue) || htmlValue == null) {
+	                htmlValue = '-';
 	            }
-
-	            var html = encodeHTML(time) + '<br />';
-	            for (var i = 0; i < len; ++i) {
-	                var htmlName = data.get('name', dataIndexs[i]);
-	                var htmlValue = data.get('value', dataIndexs[i]);
-	                if (isNaN(htmlValue) || htmlValue == null) {
-	                    htmlValue = '-';
-	                }
-	                html += encodeHTML(htmlName + ' : ' + htmlValue) + '<br />';
-	            }
-	            return html;
+	            return encodeHTML(htmlName + ' : ' + htmlValue);
 	        },
 
 	        defaultOption: {
@@ -50713,7 +53839,7 @@
 
 
 /***/ },
-/* 288 */
+/* 304 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/* WEBPACK VAR INJECTION */(function(process) {/**
@@ -50722,8 +53848,8 @@
 	 */
 
 
-	    var poly = __webpack_require__(109);
-	    var graphic = __webpack_require__(43);
+	    var poly = __webpack_require__(118);
+	    var graphic = __webpack_require__(44);
 	    var zrUtil = __webpack_require__(4);
 	    var DataDiffer = __webpack_require__(99);
 
@@ -50895,10 +54021,10 @@
 
 
 
-	/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(289)))
+	/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(305)))
 
 /***/ },
-/* 289 */
+/* 305 */
 /***/ function(module, exports) {
 
 	// shim for using process in browser
@@ -51084,7 +54210,7 @@
 
 
 /***/ },
-/* 290 */
+/* 306 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -51233,7 +54359,7 @@
 
 
 /***/ },
-/* 291 */
+/* 307 */
 /***/ function(module, exports) {
 
 	/**
@@ -51259,7 +54385,7 @@
 
 
 /***/ },
-/* 292 */
+/* 308 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -51267,7 +54393,7 @@
 	    var echarts = __webpack_require__(1);
 	    var zrUtil = __webpack_require__(4);
 	    var modelUtil = __webpack_require__(5);
-	    var graphicUtil = __webpack_require__(43);
+	    var graphicUtil = __webpack_require__(44);
 	    var layoutUtil = __webpack_require__(21);
 
 	    // -------------
@@ -51275,7 +54401,7 @@
 	    // -------------
 
 	    echarts.registerPreprocessor(function (option) {
-	        var graphicOption = option && option.graphic;
+	        var graphicOption = option.graphic;
 
 	        // Convert
 	        // {graphic: [{left: 10, type: 'circle'}, ...]}
@@ -51377,12 +54503,11 @@
 	            var elOptionsToUpdate = this._elOptionsToUpdate = [];
 
 	            zrUtil.each(mappingResult, function (resultItem, index) {
-	                var existElOption = resultItem.exist;
 	                var newElOption = resultItem.option;
 
 	                if (true) {
 	                    zrUtil.assert(
-	                        zrUtil.isObject(newElOption) || existElOption,
+	                        zrUtil.isObject(newElOption) || resultItem.exist,
 	                        'Empty graphic option definition'
 	                    );
 	                }
@@ -51391,69 +54516,13 @@
 	                    return;
 	                }
 
-	                // Set id and parent id after id assigned.
-	                newElOption.id = resultItem.keyInfo.id;
-	                var newElParentId = newElOption.parentId;
-	                var newElParentOption = newElOption.parentOption;
-	                var existElParentId = existElOption && existElOption.parentId;
-	                !newElOption.type && existElOption && (newElOption.type = existElOption.type);
-	                newElOption.parentId = newElParentId // parent id specified
-	                    ? newElParentId
-	                    : newElParentOption
-	                    ? newElParentOption.id
-	                    : existElParentId // parent not specified
-	                    ? existElParentId
-	                    : null;
-	                newElOption.parentOption = null; // Clear
 	                elOptionsToUpdate.push(newElOption);
 
-	                // Update existing options, for `getOption` feature.
-	                var newElOptCopy = zrUtil.extend({}, newElOption);
-	                var $action = newElOption.$action;
-	                if (!$action || $action === 'merge') {
-	                    if (existElOption) {
+	                setKeyInfoToNewElOption(resultItem, newElOption);
 
-	                        if (true) {
-	                            var newType = newElOption.type;
-	                            zrUtil.assert(
-	                                !newType || existElOption.type === newType,
-	                                'Please set $action: "replace" to change `type`'
-	                            );
-	                        }
+	                mergeNewElOptionToExist(existList, index, newElOption);
 
-	                        // We can ensure that newElOptCopy and existElOption are not
-	                        // the same object, so `merge` will not change newElOptCopy.
-	                        zrUtil.merge(existElOption, newElOptCopy, true);
-	                        // Rigid body, use ignoreSize.
-	                        layoutUtil.mergeLayoutParam(existElOption, newElOptCopy, {ignoreSize: true});
-	                        // Will be used in render.
-	                        layoutUtil.copyLayoutParams(newElOption, existElOption);
-	                    }
-	                    else {
-	                        existList[index] = newElOptCopy;
-	                    }
-	                }
-	                else if ($action === 'replace') {
-	                    existList[index] = newElOptCopy;
-	                }
-	                else if ($action === 'remove') {
-	                    // null will be cleaned later.
-	                    existElOption && (existList[index] = null);
-	                }
-
-	                if (existList[index]) {
-	                    existList[index].hv = newElOption.hv = [
-	                        // Rigid body, dont care `width`.
-	                        isSetLoc(newElOption, ['left', 'right']),
-	                        // Rigid body, dont care `height`.
-	                        isSetLoc(newElOption, ['top', 'bottom'])
-	                    ];
-	                    // Give default group size. Otherwise layout error may occur.
-	                    if (existList[index].type === 'group') {
-	                        existList[index].width == null && (existList[index].width = newElOption.width = 0);
-	                        existList[index].height == null && (existList[index].height = newElOption.height = 0);
-	                    }
-	                }
+	                setLayoutInfoToExist(existList[index], newElOption);
 
 	            }, this);
 
@@ -51491,20 +54560,22 @@
 	         */
 	        _flatten: function (optionList, result, parentOption) {
 	            zrUtil.each(optionList, function (option) {
-	                if (option) {
-	                    if (parentOption) {
-	                        option.parentOption = parentOption;
-	                    }
-
-	                    result.push(option);
-
-	                    var children = option.children;
-	                    if (option.type === 'group' && children) {
-	                        this._flatten(children, result, option);
-	                    }
-	                    // Deleting for JSON output, and for not affecting group creation.
-	                    delete option.children;
+	                if (!option) {
+	                    return;
 	                }
+
+	                if (parentOption) {
+	                    option.parentOption = parentOption;
+	                }
+
+	                result.push(option);
+
+	                var children = option.children;
+	                if (option.type === 'group' && children) {
+	                    this._flatten(children, result, option);
+	                }
+	                // Deleting for JSON output, and for not affecting group creation.
+	                delete option.children;
 	            }, this);
 	        },
 
@@ -51741,10 +54812,87 @@
 	        return isSet;
 	    }
 
+	    function setKeyInfoToNewElOption(resultItem, newElOption) {
+	        var existElOption = resultItem.exist;
+
+	        // Set id and type after id assigned.
+	        newElOption.id = resultItem.keyInfo.id;
+	        !newElOption.type && existElOption && (newElOption.type = existElOption.type);
+
+	        // Set parent id if not specified
+	        if (newElOption.parentId == null) {
+	            var newElParentOption = newElOption.parentOption;
+	            if (newElParentOption) {
+	                newElOption.parentId = newElParentOption.id;
+	            }
+	            else if (existElOption) {
+	                newElOption.parentId = existElOption.parentId;
+	            }
+	        }
+
+	        // Clear
+	        newElOption.parentOption = null;
+	    }
+
+	    function mergeNewElOptionToExist(existList, index, newElOption) {
+	        // Update existing options, for `getOption` feature.
+	        var newElOptCopy = zrUtil.extend({}, newElOption);
+	        var existElOption = existList[index];
+
+	        var $action = newElOption.$action || 'merge';
+	        if ($action === 'merge') {
+	            if (existElOption) {
+
+	                if (true) {
+	                    var newType = newElOption.type;
+	                    zrUtil.assert(
+	                        !newType || existElOption.type === newType,
+	                        'Please set $action: "replace" to change `type`'
+	                    );
+	                }
+
+	                // We can ensure that newElOptCopy and existElOption are not
+	                // the same object, so `merge` will not change newElOptCopy.
+	                zrUtil.merge(existElOption, newElOptCopy, true);
+	                // Rigid body, use ignoreSize.
+	                layoutUtil.mergeLayoutParam(existElOption, newElOptCopy, {ignoreSize: true});
+	                // Will be used in render.
+	                layoutUtil.copyLayoutParams(newElOption, existElOption);
+	            }
+	            else {
+	                existList[index] = newElOptCopy;
+	            }
+	        }
+	        else if ($action === 'replace') {
+	            existList[index] = newElOptCopy;
+	        }
+	        else if ($action === 'remove') {
+	            // null will be cleaned later.
+	            existElOption && (existList[index] = null);
+	        }
+	    }
+
+	    function setLayoutInfoToExist(existItem, newElOption) {
+	        if (!existItem) {
+	            return;
+	        }
+	        existItem.hv = newElOption.hv = [
+	            // Rigid body, dont care `width`.
+	            isSetLoc(newElOption, ['left', 'right']),
+	            // Rigid body, dont care `height`.
+	            isSetLoc(newElOption, ['top', 'bottom'])
+	        ];
+	        // Give default group size. Otherwise layout error may occur.
+	        if (existItem.type === 'group') {
+	            existItem.width == null && (existItem.width = newElOption.width = 0);
+	            existItem.height == null && (existItem.height = newElOption.height = 0);
+	        }
+	    }
+
 
 
 /***/ },
-/* 293 */
+/* 309 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -51752,17 +54900,17 @@
 	 */
 
 
-	    __webpack_require__(294);
-	    __webpack_require__(295);
-	    __webpack_require__(296);
+	    __webpack_require__(310);
+	    __webpack_require__(311);
+	    __webpack_require__(312);
 
 	    var echarts = __webpack_require__(1);
 	    // Series Filter
-	    echarts.registerProcessor(__webpack_require__(298));
+	    echarts.registerProcessor(__webpack_require__(314));
 
 
 /***/ },
-/* 294 */
+/* 310 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -51959,7 +55107,7 @@
 
 
 /***/ },
-/* 295 */
+/* 311 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -52046,15 +55194,15 @@
 
 
 /***/ },
-/* 296 */
+/* 312 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    var zrUtil = __webpack_require__(4);
-	    var symbolCreator = __webpack_require__(107);
-	    var graphic = __webpack_require__(43);
-	    var listComponentHelper = __webpack_require__(297);
+	    var symbolCreator = __webpack_require__(104);
+	    var graphic = __webpack_require__(44);
+	    var listComponentHelper = __webpack_require__(313);
 
 	    var curry = zrUtil.curry;
 
@@ -52316,14 +55464,14 @@
 
 
 /***/ },
-/* 297 */
+/* 313 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 	    // List layout
 	    var layout = __webpack_require__(21);
 	    var formatUtil = __webpack_require__(6);
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 
 	    function positionGroup(group, model, api) {
 	        layout.positionElement(
@@ -52386,7 +55534,7 @@
 
 
 /***/ },
-/* 298 */
+/* 314 */
 /***/ function(module, exports) {
 
 	
@@ -52410,15 +55558,18 @@
 
 
 /***/ },
-/* 299 */
+/* 315 */
 /***/ function(module, exports, __webpack_require__) {
 
 	// FIXME Better way to pack data in graphic element
 
 
-	    __webpack_require__(300);
+	    __webpack_require__(142);
 
-	    __webpack_require__(301);
+	    __webpack_require__(316);
+
+	    __webpack_require__(317);
+
 
 	    // Show tip action
 	    /**
@@ -52451,7 +55602,7 @@
 
 
 /***/ },
-/* 300 */
+/* 316 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -52460,6 +55611,8 @@
 
 	        type: 'tooltip',
 
+	        dependencies: ['axisPointer'],
+
 	        defaultOption: {
 	            zlevel: 0,
 
@@ -52470,17 +55623,22 @@
 	            // tooltip主体内容
 	            showContent: true,
 
-	            // 触发类型,默认数据触发,见下图,可选为:'item' ¦ 'axis'
+	            // 'trigger' only works on coordinate system.
+	            // 'item' | 'axis' | 'none'
 	            trigger: 'item',
 
-	            // 触发条件,支持 'click' | 'mousemove' | 'none'
-	            triggerOn: 'mousemove',
+	            // 'click' | 'mousemove' | 'none'
+	            triggerOn: 'mousemove|click',
 
-	            // 是否永远显示 content
 	            alwaysShowContent: false,
 
+	            displayMode: 'single', // 'single' | 'multipleByCoordSys'
+
 	            // 位置 {Array} | {Function}
 	            // position: null
+	            // Consider triggered from axisPointer handle, verticalAlign should be 'middle'
+	            // align: null,
+	            // verticalAlign: null,
 
 	            // 是否约束 content 在 viewRect 中。默认 false 是为了兼容以前版本。
 	            confine: false,
@@ -52529,30 +55687,21 @@
 	                // 极坐标系会默认选择 angle 轴
 	                axis: 'auto',
 
-	                animation: true,
+	                animation: 'auto',
 	                animationDurationUpdate: 200,
 	                animationEasingUpdate: 'exponentialOut',
 
-	                // 直线指示器样式设置
-	                lineStyle: {
-	                    color: '#555',
-	                    width: 1,
-	                    type: 'solid'
-	                },
-
 	                crossStyle: {
-	                    color: '#555',
+	                    color: '#999',
 	                    width: 1,
 	                    type: 'dashed',
 
 	                    // TODO formatter
 	                    textStyle: {}
-	                },
-
-	                // 阴影指示器样式设置
-	                shadowStyle: {
-	                    color: 'rgba(150,150,150,0.3)'
 	                }
+
+	                // lineStyle and shadowStyle should not be specified here,
+	                // otherwise it will always override those styles on option.axisPointer.
 	            },
 	            textStyle: {
 	                color: '#fff',
@@ -52563,84 +55712,655 @@
 
 
 /***/ },
-/* 301 */
+/* 317 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var TooltipContent = __webpack_require__(302);
-	    var graphic = __webpack_require__(43);
+	    var TooltipContent = __webpack_require__(318);
 	    var zrUtil = __webpack_require__(4);
 	    var formatUtil = __webpack_require__(6);
 	    var numberUtil = __webpack_require__(7);
-	    var modelUtil = __webpack_require__(5);
-	    var parsePercent = numberUtil.parsePercent;
+	    var findPointFromSeries = __webpack_require__(144);
+	    var layoutUtil = __webpack_require__(21);
 	    var env = __webpack_require__(2);
 	    var Model = __webpack_require__(12);
+	    var globalListener = __webpack_require__(147);
+	    var axisHelper = __webpack_require__(105);
+	    var axisPointerViewHelper = __webpack_require__(139);
 
-	    function dataEqual(a, b) {
-	        if (!a || !b) {
-	            return false;
+	    var bind = zrUtil.bind;
+	    var each = zrUtil.each;
+	    var parsePercent = numberUtil.parsePercent;
+
+
+	    __webpack_require__(1).extendComponentView({
+
+	        type: 'tooltip',
+
+	        init: function (ecModel, api) {
+	            if (env.node) {
+	                return;
+	            }
+	            var tooltipContent = new TooltipContent(api.getDom(), api);
+	            this._tooltipContent = tooltipContent;
+	        },
+
+	        render: function (tooltipModel, ecModel, api) {
+	            if (env.node) {
+	                return;
+	            }
+
+	            // Reset
+	            this.group.removeAll();
+
+	            /**
+	             * @private
+	             * @type {module:echarts/component/tooltip/TooltipModel}
+	             */
+	            this._tooltipModel = tooltipModel;
+
+	            /**
+	             * @private
+	             * @type {module:echarts/model/Global}
+	             */
+	            this._ecModel = ecModel;
+
+	            /**
+	             * @private
+	             * @type {module:echarts/ExtensionAPI}
+	             */
+	            this._api = api;
+
+	            /**
+	             * @private
+	             * @type {Array.<Array.<Object>>}
+	             */
+	            this._lastDataByCoordSys;
+
+	            /**
+	             * @private
+	             * @type {boolean}
+	             */
+	            this._alwaysShowContent = tooltipModel.get('alwaysShowContent');
+
+	            var tooltipContent = this._tooltipContent;
+	            tooltipContent.update();
+	            tooltipContent.setEnterable(tooltipModel.get('enterable'));
+
+	            this._initGlobalListener();
+
+	            this._keepShow();
+	        },
+
+	        _initGlobalListener: function () {
+	            var tooltipModel = this._tooltipModel;
+	            var triggerOn = tooltipModel.get('triggerOn');
+
+	            globalListener.register(
+	                'itemTooltip',
+	                this._api,
+	                bind(function (currTrigger, e, dispatchAction) {
+	                    // If 'none', it is not controlled by mouse totally.
+	                    if (triggerOn !== 'none') {
+	                        if (triggerOn.indexOf(currTrigger) >= 0) {
+	                            this._tryShow(e, dispatchAction);
+	                        }
+	                        else if (currTrigger === 'leave') {
+	                            this._hide(dispatchAction);
+	                        }
+	                    }
+	                }, this)
+	            );
+	        },
+
+	        _keepShow: function () {
+	            var tooltipModel = this._tooltipModel;
+	            var ecModel = this._ecModel;
+	            var api = this._api;
+
+	            // Try to keep the tooltip show when refreshing
+	            if (this._lastX != null
+	                && this._lastY != null
+	                // When user is willing to control tooltip totally using API,
+	                // self.manuallyShowTip({x, y}) might cause tooltip hide,
+	                // which is not expected.
+	                && tooltipModel.get('triggerOn') !== 'none'
+	            ) {
+	                var self = this;
+	                clearTimeout(this._refreshUpdateTimeout);
+	                this._refreshUpdateTimeout = setTimeout(function () {
+	                    // Show tip next tick after other charts are rendered
+	                    // In case highlight action has wrong result
+	                    // FIXME
+	                    self.manuallyShowTip(tooltipModel, ecModel, api, {
+	                        x: self._lastX,
+	                        y: self._lastY
+	                    });
+	                });
+	            }
+	        },
+
+	        /**
+	         * Show tip manually by
+	         * dispatchAction({
+	         *     type: 'showTip',
+	         *     x: 10,
+	         *     y: 10
+	         * });
+	         * Or
+	         * dispatchAction({
+	         *      type: 'showTip',
+	         *      seriesIndex: 0,
+	         *      dataIndex or dataIndexInside or name
+	         * });
+	         *
+	         *  TODO Batch
+	         */
+	        manuallyShowTip: function (tooltipModel, ecModel, api, payload) {
+	            if (payload.from === this.uid || env.node) {
+	                return;
+	            }
+
+	            var dispatchAction = makeDispatchAction(payload, api);
+
+	            // Reset ticket
+	            this._ticket = '';
+
+	            var seriesIndex = payload.seriesIndex;
+	            var dataByCoordSys = payload.dataByCoordSys;
+
+	            // When triggered from axisPointer.
+	            if (dataByCoordSys) {
+	                this._tryShow({
+	                    offsetX: payload.x,
+	                    offsetY: payload.y,
+	                    position: payload.position,
+	                    event: {},
+	                    dataByCoordSys: payload.dataByCoordSys,
+	                    tooltipOption: payload.tooltipOption
+	                }, dispatchAction);
+	            }
+	            else if (seriesIndex != null) {
+	                var pointInfo = findPointFromSeries(payload, ecModel);
+	                var cx = pointInfo.point[0];
+	                var cy = pointInfo.point[1];
+	                if (cx != null && cy != null) {
+	                    this._tryShow({
+	                        offsetX: cx,
+	                        offsetY: cy,
+	                        position: payload.position,
+	                        target: pointInfo.el,
+	                        event: {}
+	                    }, dispatchAction);
+	                }
+	            }
+	            else if (payload.x != null && payload.y != null) {
+	                this._tryShow({
+	                    offsetX: payload.x,
+	                    offsetY: payload.y,
+	                    position: payload.position,
+	                    target: api.getZr().handler.findHover(payload.x, payload.y),
+	                    event: {}
+	                }, dispatchAction);
+	            }
+	        },
+
+	        manuallyHideTip: function (tooltipModel, ecModel, api, payload) {
+	            var tooltipContent = this._tooltipContent;
+
+	            if (!this._alwaysShowContent) {
+	                tooltipContent.hideLater(this._tooltipModel.get('hideDelay'));
+	            }
+
+	            this._lastX = this._lastY = null;
+
+	            if (payload.from !== this.uid) {
+	                this._hide(makeDispatchAction(payload, api));
+	            }
+	        },
+
+	        _tryShow: function (e, dispatchAction) {
+	            var el = e.target;
+	            var tooltipModel = this._tooltipModel;
+
+	            if (!tooltipModel) {
+	                return;
+	            }
+
+	            // Save mouse x, mouse y. So we can try to keep showing the tip if chart is refreshed
+	            this._lastX = e.offsetX;
+	            this._lastY = e.offsetY;
+
+	            var dataByCoordSys = e.dataByCoordSys;
+	            if (dataByCoordSys && dataByCoordSys.length) {
+	                this._showAxisTooltip(dataByCoordSys, e);
+	            }
+	            // Always show item tooltip if mouse is on the element with dataIndex
+	            else if (el && el.dataIndex != null) {
+	                this._lastDataByCoordSys = null;
+	                this._showSeriesItemTooltip(e, el, dispatchAction);
+	            }
+	            // Tooltip provided directly. Like legend.
+	            else if (el && el.tooltip) {
+	                this._lastDataByCoordSys = null;
+	                this._showComponentItemTooltip(e, el, dispatchAction);
+	            }
+	            else {
+	                this._lastDataByCoordSys = null;
+	                this._hide(dispatchAction);
+	            }
+	        },
+
+	        _showOrMove: function (tooltipModel, cb) {
+	            // showDelay is used in this case: tooltip.enterable is set
+	            // as true. User intent to move mouse into tooltip and click
+	            // something. `showDelay` makes it easyer to enter the content
+	            // but tooltip do not move immediately.
+	            var delay = tooltipModel.get('showDelay');
+	            cb = zrUtil.bind(cb, this);
+	            clearTimeout(this._showTimout);
+	            delay > 0
+	                ? (this._showTimout = setTimeout(cb, delay))
+	                : cb();
+	        },
+
+	        _showAxisTooltip: function (dataByCoordSys, e) {
+	            var ecModel = this._ecModel;
+	            var globalTooltipModel = this._tooltipModel;
+	            var point = [e.offsetX, e.offsetY];
+	            var singleDefaultHTML = [];
+	            var singleParamsList = [];
+	            var singleTooltipModel = buildTooltipModel([
+	                e.tooltipOption,
+	                globalTooltipModel
+	            ]);
+
+	            each(dataByCoordSys, function (itemCoordSys) {
+	                // var coordParamList = [];
+	                // var coordDefaultHTML = [];
+	                // var coordTooltipModel = buildTooltipModel([
+	                //     e.tooltipOption,
+	                //     itemCoordSys.tooltipOption,
+	                //     ecModel.getComponent(itemCoordSys.coordSysMainType, itemCoordSys.coordSysIndex),
+	                //     globalTooltipModel
+	                // ]);
+	                // var displayMode = coordTooltipModel.get('displayMode');
+	                // var paramsList = displayMode === 'single' ? singleParamsList : [];
+
+	                each(itemCoordSys.dataByAxis, function (item) {
+	                    var axisModel = ecModel.getComponent(item.axisDim + 'Axis', item.axisIndex);
+	                    var axisValue = item.value;
+	                    var seriesDefaultHTML = [];
+
+	                    if (!axisModel || axisValue == null) {
+	                        return;
+	                    }
+
+	                    var valueLabel = axisPointerViewHelper.getValueLabel(
+	                        axisValue, axisModel.axis, ecModel,
+	                        item.seriesDataIndices,
+	                        item.valueLabelOpt
+	                    );
+
+	                    zrUtil.each(item.seriesDataIndices, function (idxItem) {
+	                        var series = ecModel.getSeriesByIndex(idxItem.seriesIndex);
+	                        var dataIndex = idxItem.dataIndexInside;
+	                        var dataParams = series && series.getDataParams(dataIndex);
+	                        dataParams.axisDim = item.axisDim;
+	                        dataParams.axisIndex = item.axisIndex;
+	                        dataParams.axisType = item.axisType;
+	                        dataParams.axisId = item.axisId;
+	                        dataParams.axisValue = axisHelper.getAxisRawValue(axisModel.axis, axisValue);
+	                        dataParams.axisValueLabel = valueLabel;
+
+	                        if (dataParams) {
+	                            singleParamsList.push(dataParams);
+	                            seriesDefaultHTML.push(series.formatTooltip(dataIndex, true));
+	                        }
+	                    });
+
+	                    // Default tooltip content
+	                    // FIXME
+	                    // (1) shold be the first data which has name?
+	                    // (2) themeRiver, firstDataIndex is array, and first line is unnecessary.
+	                    var firstLine = valueLabel;
+	                    singleDefaultHTML.push(
+	                        (firstLine ? formatUtil.encodeHTML(firstLine) + '<br />' : '')
+	                        + seriesDefaultHTML.join('<br />')
+	                    );
+	                });
+	            }, this);
+
+	            // In most case, the second axis is shown upper than the first one.
+	            singleDefaultHTML.reverse();
+	            singleDefaultHTML = singleDefaultHTML.join('<br /><br />');
+
+	            var positionExpr = e.position;
+	            this._showOrMove(singleTooltipModel, function () {
+	                if (this._updateContentNotChangedOnAxis(dataByCoordSys)) {
+	                    this._updatePosition(
+	                        singleTooltipModel,
+	                        positionExpr,
+	                        point[0], point[1],
+	                        this._tooltipContent,
+	                        singleParamsList
+	                    );
+	                }
+	                else {
+	                    this._showTooltipContent(
+	                        singleTooltipModel, singleDefaultHTML, singleParamsList, Math.random(),
+	                        point[0], point[1], positionExpr
+	                    );
+	                }
+	            });
+
+	            // Do not trigger events here, because this branch only be entered
+	            // from dispatchAction.
+	        },
+
+	        _showSeriesItemTooltip: function (e, el, dispatchAction) {
+	            var ecModel = this._ecModel;
+	            // Use dataModel in element if possible
+	            // Used when mouseover on a element like markPoint or edge
+	            // In which case, the data is not main data in series.
+	            var seriesIndex = el.seriesIndex;
+	            var seriesModel = ecModel.getSeriesByIndex(seriesIndex);
+
+	            // For example, graph link.
+	            var dataModel = el.dataModel || seriesModel;
+	            var dataIndex = el.dataIndex;
+	            var dataType = el.dataType;
+	            var data = dataModel.getData();
+
+	            var tooltipModel = buildTooltipModel([
+	                data.getItemModel(dataIndex),
+	                dataModel,
+	                seriesModel && (seriesModel.coordinateSystem || {}).model,
+	                this._tooltipModel
+	            ]);
+
+	            var tooltipTrigger = tooltipModel.get('trigger');
+	            if (tooltipTrigger != null && tooltipTrigger !== 'item') {
+	                return;
+	            }
+
+	            var params = dataModel.getDataParams(dataIndex, dataType);
+	            var defaultHtml = dataModel.formatTooltip(dataIndex, false, dataType);
+	            var asyncTicket = 'item_' + dataModel.name + '_' + dataIndex;
+
+	            this._showOrMove(tooltipModel, function () {
+	                this._showTooltipContent(
+	                    tooltipModel, defaultHtml, params, asyncTicket,
+	                    e.offsetX, e.offsetY, e.position, e.target
+	                );
+	            });
+
+	            // FIXME
+	            // duplicated showtip if manuallyShowTip is called from dispatchAction.
+	            dispatchAction({
+	                type: 'showTip',
+	                dataIndexInside: dataIndex,
+	                dataIndex: data.getRawIndex(dataIndex),
+	                seriesIndex: seriesIndex,
+	                from: this.uid
+	            });
+	        },
+
+	        _showComponentItemTooltip: function (e, el, dispatchAction) {
+	            var tooltipOpt = el.tooltip;
+	            if (typeof tooltipOpt === 'string') {
+	                var content = tooltipOpt;
+	                tooltipOpt = {
+	                    content: content,
+	                    // Fixed formatter
+	                    formatter: content
+	                };
+	            }
+	            var subTooltipModel = new Model(tooltipOpt, this._tooltipModel, this._ecModel);
+	            var defaultHtml = subTooltipModel.get('content');
+	            var asyncTicket = Math.random();
+
+	            // Do not check whether `trigger` is 'none' here, because `trigger`
+	            // only works on cooridinate system. In fact, we have not found case
+	            // that requires setting `trigger` nothing on component yet.
+
+	            this._showOrMove(subTooltipModel, function () {
+	                this._showTooltipContent(
+	                    subTooltipModel, defaultHtml, subTooltipModel.get('formatterParams') || {},
+	                    asyncTicket, e.offsetX, e.offsetY, e.position, el
+	                );
+	            });
+
+	            // If not dispatch showTip, tip may be hide triggered by axis.
+	            dispatchAction({
+	                type: 'showTip',
+	                from: this.uid
+	            });
+	        },
+
+	        _showTooltipContent: function (
+	            tooltipModel, defaultHtml, params, asyncTicket, x, y, positionExpr, el
+	        ) {
+	            // Reset ticket
+	            this._ticket = '';
+
+	            if (!tooltipModel.get('showContent') || !tooltipModel.get('show')) {
+	                return;
+	            }
+
+	            var tooltipContent = this._tooltipContent;
+
+	            var formatter = tooltipModel.get('formatter');
+	            positionExpr = positionExpr || tooltipModel.get('position');
+	            var html = defaultHtml;
+
+	            if (formatter && typeof formatter === 'string') {
+	                html = formatUtil.formatTpl(formatter, params, true);
+	            }
+	            else if (typeof formatter === 'function') {
+	                var callback = bind(function (cbTicket, html) {
+	                    if (cbTicket === this._ticket) {
+	                        tooltipContent.setContent(html);
+	                        this._updatePosition(
+	                            tooltipModel, positionExpr, x, y, tooltipContent, params, el
+	                        );
+	                    }
+	                }, this);
+	                this._ticket = asyncTicket;
+	                html = formatter(params, asyncTicket, callback);
+	            }
+
+	            tooltipContent.setContent(html);
+	            tooltipContent.show(tooltipModel);
+
+	            this._updatePosition(
+	                tooltipModel, positionExpr, x, y, tooltipContent, params, el
+	            );
+	        },
+
+	        /**
+	         * @param  {string|Function|Array.<number>} positionExpr
+	         * @param  {number} x Mouse x
+	         * @param  {number} y Mouse y
+	         * @param  {boolean} confine Whether confine tooltip content in view rect.
+	         * @param  {Object|<Array.<Object>} params
+	         * @param  {module:zrender/Element} el target element
+	         * @param  {module:echarts/ExtensionAPI} api
+	         * @return {Array.<number>}
+	         */
+	        _updatePosition: function (tooltipModel, positionExpr, x, y, content, params, el) {
+	            var viewWidth = this._api.getWidth();
+	            var viewHeight = this._api.getHeight();
+	            positionExpr = positionExpr || tooltipModel.get('position');
+
+	            var contentSize = content.getSize();
+	            var align = tooltipModel.get('align');
+	            var vAlign = tooltipModel.get('verticalAlign');
+	            var rect = el && el.getBoundingRect().clone();
+	            el && rect.applyTransform(el.transform);
+
+	            if (typeof positionExpr === 'function') {
+	                // Callback of position can be an array or a string specify the position
+	                positionExpr = positionExpr([x, y], params, content.el, rect, {
+	                    viewSize: [viewWidth, viewHeight],
+	                    contentSize: contentSize.slice()
+	                });
+	            }
+
+	            if (zrUtil.isArray(positionExpr)) {
+	                x = parsePercent(positionExpr[0], viewWidth);
+	                y = parsePercent(positionExpr[1], viewHeight);
+	            }
+	            else if (zrUtil.isObject(positionExpr)) {
+	                positionExpr.width = contentSize[0];
+	                positionExpr.height = contentSize[1];
+	                var layoutRect = layoutUtil.getLayoutRect(
+	                    positionExpr, {width: viewWidth, height: viewHeight}
+	                );
+	                x = layoutRect.x;
+	                y = layoutRect.y;
+	                align = null;
+	                // When positionExpr is left/top/right/bottom,
+	                // align and verticalAlign will not work.
+	                vAlign = null;
+	            }
+	            // Specify tooltip position by string 'top' 'bottom' 'left' 'right' around graphic element
+	            else if (typeof positionExpr === 'string' && el) {
+	                var pos = calcTooltipPosition(
+	                    positionExpr, rect, contentSize
+	                );
+	                x = pos[0];
+	                y = pos[1];
+	            }
+	            else {
+	                var pos = refixTooltipPosition(
+	                    x, y, content.el, viewWidth, viewHeight, align ? 0 : 20, vAlign ? 0 : 20
+	                );
+	                x = pos[0];
+	                y = pos[1];
+	            }
+
+	            align && (x -= isCenterAlign(align) ? contentSize[0] / 2 : align === 'right' ? contentSize[0] : 0);
+	            vAlign && (y -= isCenterAlign(vAlign) ? contentSize[1] / 2 : vAlign === 'bottom' ? contentSize[1] : 0);
+
+	            if (tooltipModel.get('confine')) {
+	                var pos = confineTooltipPosition(
+	                    x, y, content.el, viewWidth, viewHeight
+	                );
+	                x = pos[0];
+	                y = pos[1];
+	            }
+
+	            content.moveTo(x, y);
+	        },
+
+	        // FIXME
+	        // Should we remove this but leave this to user?
+	        _updateContentNotChangedOnAxis: function (dataByCoordSys) {
+	            var lastCoordSys = this._lastDataByCoordSys;
+	            var contentNotChanged = !!lastCoordSys
+	                && lastCoordSys.length === dataByCoordSys.length;
+
+	            each(lastCoordSys, function (lastItemCoordSys, indexCoordSys) {
+	                var lastDataByAxis = lastItemCoordSys.dataByAxis || {};
+	                var thisItemCoordSys = dataByCoordSys[indexCoordSys] || {};
+	                var thisDataByAxis = thisItemCoordSys.dataByAxis || [];
+	                contentNotChanged &= lastDataByAxis.length === thisDataByAxis.length;
+
+	                each(lastDataByAxis, function (lastItem, indexAxis) {
+	                    var thisItem = thisDataByAxis[indexAxis] || {};
+	                    var lastIndices = lastItem.seriesDataIndices || [];
+	                    var newIndices = thisItem.seriesDataIndices || [];
+
+	                    contentNotChanged &=
+	                        lastItem.value === thisItem.value
+	                        && lastItem.axisType === thisItem.axisType
+	                        && lastItem.axisId === thisItem.axisId
+	                        && lastIndices.length === newIndices.length;
+
+	                    each(lastIndices, function (lastIdxItem, j) {
+	                        var newIdxItem = newIndices[j];
+	                        contentNotChanged &=
+	                            lastIdxItem.seriesIndex === newIdxItem.seriesIndex
+	                            && lastIdxItem.dataIndex === newIdxItem.dataIndex;
+	                    });
+	                });
+	            });
+
+	            this._lastDataByCoordSys = dataByCoordSys;
+
+	            return !!contentNotChanged;
+	        },
+
+	        _hide: function (dispatchAction) {
+	            // Do not directly hideLater here, because this behavior may be prevented
+	            // in dispatchAction when showTip is dispatched.
+
+	            // FIXME
+	            // duplicated hideTip if manuallyHideTip is called from dispatchAction.
+	            this._lastDataByCoordSys = null;
+	            dispatchAction({
+	                type: 'hideTip',
+	                from: this.uid
+	            });
+	        },
+
+	        dispose: function (ecModel, api) {
+	            if (env.node) {
+	                return;
+	            }
+	            this._tooltipContent.hide();
+	            globalListener.unregister('itemTooltip', api);
 	        }
-	        var round = numberUtil.round;
-	        return round(a[0]) === round(b[0])
-	            && round(a[1]) === round(b[1]);
-	    }
-	    /**
-	     * @inner
-	     */
-	    function makeLineShape(x1, y1, x2, y2) {
-	        return {
-	            x1: x1,
-	            y1: y1,
-	            x2: x2,
-	            y2: y2
-	        };
-	    }
+	    });
+
 
 	    /**
-	     * @inner
+	     * @param {Array.<Object|module:echarts/model/Model>} modelCascade
+	     * From top to bottom. (the last one should be globalTooltipModel);
 	     */
-	    function makeRectShape(x, y, width, height) {
-	        return {
-	            x: x,
-	            y: y,
-	            width: width,
-	            height: height
-	        };
+	    function buildTooltipModel(modelCascade) {
+	        var resultModel = modelCascade.pop();
+	        while (modelCascade.length) {
+	            var tooltipOpt = modelCascade.pop();
+	            if (tooltipOpt) {
+	                if (tooltipOpt instanceof Model) {
+	                    tooltipOpt = tooltipOpt.get('tooltip', true);
+	                }
+	                // In each data item tooltip can be simply write:
+	                // {
+	                //  value: 10,
+	                //  tooltip: 'Something you need to know'
+	                // }
+	                if (typeof tooltipOpt === 'string') {
+	                    tooltipOpt = {formatter: tooltipOpt};
+	                }
+	                resultModel = new Model(tooltipOpt, resultModel, resultModel.ecModel);
+	            }
+	        }
+	        return resultModel;
 	    }
 
-	    /**
-	     * @inner
-	     */
-	    function makeSectorShape(cx, cy, r0, r, startAngle, endAngle) {
-	        return {
-	            cx: cx,
-	            cy: cy,
-	            r0: r0,
-	            r: r,
-	            startAngle: startAngle,
-	            endAngle: endAngle,
-	            clockwise: true
-	        };
+	    function makeDispatchAction(payload, api) {
+	        return payload.dispatchAction || zrUtil.bind(api.dispatchAction, api);
 	    }
 
-	    function refixTooltipPosition(x, y, el, viewWidth, viewHeight) {
+	    function refixTooltipPosition(x, y, el, viewWidth, viewHeight, gapH, gapV) {
 	        var width = el.clientWidth;
 	        var height = el.clientHeight;
-	        var gap = 20;
 
-	        if (x + width + gap > viewWidth) {
-	            x -= width + gap;
+	        if (x + width + gapH > viewWidth) {
+	            x -= width + gapH;
 	        }
 	        else {
-	            x += gap;
+	            x += gapH;
 	        }
-	        if (y + height + gap > viewHeight) {
-	            y -= height + gap;
+	        if (y + height + gapV > viewHeight) {
+	            y -= height + gapV;
 	        }
 	        else {
-	            y += gap;
+	            y += gapV;
 	        }
 	        return [x, y];
 	    }
@@ -52657,9 +56377,9 @@
 	        return [x, y];
 	    }
 
-	    function calcTooltipPosition(position, rect, dom) {
-	        var domWidth = dom.clientWidth;
-	        var domHeight = dom.clientHeight;
+	    function calcTooltipPosition(position, rect, contentSize) {
+	        var domWidth = contentSize[0];
+	        var domHeight = contentSize[1];
 	        var gap = 5;
 	        var x = 0;
 	        var y = 0;
@@ -52689,1151 +56409,14 @@
 	        return [x, y];
 	    }
 
-	    /**
-	     * @param  {string|Function|Array.<number>} positionExpr
-	     * @param  {number} x Mouse x
-	     * @param  {number} y Mouse y
-	     * @param  {boolean} confine Whether confine tooltip content in view rect.
-	     * @param  {module:echarts/component/tooltip/TooltipContent} content
-	     * @param  {Object|<Array.<Object>} params
-	     * @param  {module:zrender/Element} el target element
-	     * @param  {module:echarts/ExtensionAPI} api
-	     * @return {Array.<number>}
-	     */
-	    function updatePosition(positionExpr, x, y, confine, content, params, el, api) {
-	        var viewWidth = api.getWidth();
-	        var viewHeight = api.getHeight();
-
-	        var rect = el && el.getBoundingRect().clone();
-	        el && rect.applyTransform(el.transform);
-	        if (typeof positionExpr === 'function') {
-	            // Callback of position can be an array or a string specify the position
-	            positionExpr = positionExpr([x, y], params, content.el, rect);
-	        }
-
-	        if (zrUtil.isArray(positionExpr)) {
-	            x = parsePercent(positionExpr[0], viewWidth);
-	            y = parsePercent(positionExpr[1], viewHeight);
-	        }
-	        // Specify tooltip position by string 'top' 'bottom' 'left' 'right' around graphic element
-	        else if (typeof positionExpr === 'string' && el) {
-	            var pos = calcTooltipPosition(
-	                positionExpr, rect, content.el
-	            );
-	            x = pos[0];
-	            y = pos[1];
-	        }
-	        else {
-	            var pos = refixTooltipPosition(
-	                x, y, content.el, viewWidth, viewHeight
-	            );
-	            x = pos[0];
-	            y = pos[1];
-	        }
-
-	        if (confine) {
-	            var pos = confineTooltipPosition(
-	                x, y, content.el, viewWidth, viewHeight
-	            );
-	            x = pos[0];
-	            y = pos[1];
-	        }
-
-	        content.moveTo(x, y);
+	    function isCenterAlign(align) {
+	        return align === 'center' || align === 'middle';
 	    }
 
-	    function ifSeriesSupportAxisTrigger(seriesModel) {
-	        var coordSys = seriesModel.coordinateSystem;
-	        var trigger = seriesModel.get('tooltip.trigger', true);
-	        // Ignore series use item tooltip trigger and series coordinate system is not cartesian or
-	        return !(!coordSys
-	            || (coordSys.type !== 'cartesian2d' && coordSys.type !== 'polar' && coordSys.type !== 'singleAxis')
-	            || trigger === 'item');
-	    }
-
-	    __webpack_require__(1).extendComponentView({
-
-	        type: 'tooltip',
-
-	        _axisPointers: {},
-
-	        init: function (ecModel, api) {
-	            if (env.node) {
-	                return;
-	            }
-	            var tooltipContent = new TooltipContent(api.getDom(), api);
-	            this._tooltipContent = tooltipContent;
-	        },
-
-	        render: function (tooltipModel, ecModel, api) {
-	            if (env.node) {
-	                return;
-	            }
-
-	            // Reset
-	            this.group.removeAll();
-
-	            /**
-	             * @type {Object}
-	             * @private
-	             */
-	            this._axisPointers = {};
-
-	            /**
-	             * @private
-	             * @type {module:echarts/component/tooltip/TooltipModel}
-	             */
-	            this._tooltipModel = tooltipModel;
-
-	            /**
-	             * @private
-	             * @type {module:echarts/model/Global}
-	             */
-	            this._ecModel = ecModel;
-
-	            /**
-	             * @private
-	             * @type {module:echarts/ExtensionAPI}
-	             */
-	            this._api = api;
-
-	            /**
-	             * @type {Object}
-	             * @private
-	             */
-	            this._lastHover = {
-	                // data
-	                // payloadBatch
-	            };
-
-	            var tooltipContent = this._tooltipContent;
-	            tooltipContent.update();
-	            tooltipContent.enterable = tooltipModel.get('enterable');
-	            this._alwaysShowContent = tooltipModel.get('alwaysShowContent');
-
-	            /**
-	             * @type {Object.<string, Array>}
-	             */
-	            this._seriesGroupByAxis = this._prepareAxisTriggerData(
-	                tooltipModel, ecModel
-	            );
-
-	            var crossText = this._crossText;
-	            if (crossText) {
-	                this.group.add(crossText);
-	            }
-
-	            var triggerOn = tooltipModel.get('triggerOn');
-
-	            // Try to keep the tooltip show when refreshing
-	            if (this._lastX != null
-	                && this._lastY != null
-	                // When user is willing to control tooltip totally using API,
-	                // self.manuallyShowTip({x, y}) might cause tooltip hide,
-	                // which is not expected.
-	                && triggerOn !== 'none'
-	            ) {
-	                var self = this;
-	                clearTimeout(this._refreshUpdateTimeout);
-	                this._refreshUpdateTimeout = setTimeout(function () {
-	                    // Show tip next tick after other charts are rendered
-	                    // In case highlight action has wrong result
-	                    // FIXME
-	                    self.manuallyShowTip(tooltipModel, ecModel, api, {
-	                        x: self._lastX,
-	                        y: self._lastY
-	                    });
-	                });
-	            }
-
-	            var zr = this._api.getZr();
-	            zr.off('click', this._tryShow);
-	            zr.off('mousemove', this._mousemove);
-	            zr.off('mouseout', this._hide);
-	            zr.off('globalout', this._hide);
-
-	            if (triggerOn === 'click') {
-	                zr.on('click', this._tryShow, this);
-	            }
-	            else if (triggerOn === 'mousemove') {
-	                zr.on('mousemove', this._mousemove, this);
-	                zr.on('mouseout', this._hide, this);
-	                zr.on('globalout', this._hide, this);
-	            }
-	            // else triggerOn is 'none', which enable user
-	            // to control tooltip totally using API.
-	        },
-
-	        _mousemove: function (e) {
-	            var showDelay = this._tooltipModel.get('showDelay');
-	            var self = this;
-	            clearTimeout(this._showTimeout);
-	            if (showDelay > 0) {
-	                this._showTimeout = setTimeout(function () {
-	                    self._tryShow(e);
-	                }, showDelay);
-	            }
-	            else {
-	                this._tryShow(e);
-	            }
-	        },
-
-	        /**
-	         * Show tip manually by
-	         * dispatchAction({
-	         *     type: 'showTip',
-	         *     x: 10,
-	         *     y: 10
-	         * });
-	         * Or
-	         * dispatchAction({
-	         *      type: 'showTip',
-	         *      seriesIndex: 0,
-	         *      dataIndex or dataIndexInside or name
-	         * });
-	         *
-	         *  TODO Batch
-	         */
-	        manuallyShowTip: function (tooltipModel, ecModel, api, payload) {
-	            // From self
-	            if (payload.from === this.uid) {
-	                return;
-	            }
-
-	            var ecModel = this._ecModel;
-	            var seriesIndex = payload.seriesIndex;
-	            var seriesModel = ecModel.getSeriesByIndex(seriesIndex);
-	            var api = this._api;
-
-	            var isTriggerAxis = this._tooltipModel.get('trigger') === 'axis';
-	            function seriesHaveDataOnIndex(_series) {
-	                var data = _series.getData();
-	                var dataIndex = modelUtil.queryDataIndex(data, payload);
-	                // Have single dataIndex
-	                if (dataIndex != null && !zrUtil.isArray(dataIndex)
-	                    && data.hasValue(dataIndex)
-	                ) {
-	                    return true;
-	                }
-	            }
-
-	            if (payload.x == null || payload.y == null) {
-	                if (isTriggerAxis) {
-	                    // Find another series.
-	                    if (seriesModel && !seriesHaveDataOnIndex(seriesModel)) {
-	                        seriesModel = null;
-	                    }
-	                    if (!seriesModel) {
-	                        // Find the first series can use axis trigger And data is not null
-	                        ecModel.eachSeries(function (_series) {
-	                            if (ifSeriesSupportAxisTrigger(_series) && !seriesModel) {
-	                                if (seriesHaveDataOnIndex(_series)) {
-	                                    seriesModel = _series;
-	                                }
-	                            }
-	                        });
-	                    }
-	                }
-	                else {
-	                    // Use the first series by default.
-	                    seriesModel = seriesModel || ecModel.getSeriesByIndex(0);
-	                }
-	                if (seriesModel) {
-	                    var data = seriesModel.getData();
-	                    var dataIndex = modelUtil.queryDataIndex(data, payload);
-
-	                    if (dataIndex == null || zrUtil.isArray(dataIndex)) {
-	                        return;
-	                    }
-
-	                    var el = data.getItemGraphicEl(dataIndex);
-	                    var cx;
-	                    var cy;
-	                    // Try to get the point in coordinate system
-	                    var coordSys = seriesModel.coordinateSystem;
-	                    if (seriesModel.getTooltipPosition) {
-	                        var point = seriesModel.getTooltipPosition(dataIndex) || [];
-	                        cx = point[0];
-	                        cy = point[1];
-	                    }
-	                    else if (coordSys && coordSys.dataToPoint) {
-	                        var point = coordSys.dataToPoint(
-	                            data.getValues(
-	                                zrUtil.map(coordSys.dimensions, function (dim) {
-	                                    return seriesModel.coordDimToDataDim(dim)[0];
-	                                }), dataIndex, true
-	                            )
-	                        );
-	                        cx = point && point[0];
-	                        cy = point && point[1];
-	                    }
-	                    else if (el) {
-	                        // Use graphic bounding rect
-	                        var rect = el.getBoundingRect().clone();
-	                        rect.applyTransform(el.transform);
-	                        cx = rect.x + rect.width / 2;
-	                        cy = rect.y + rect.height / 2;
-	                    }
-
-	                    if (cx != null && cy != null) {
-	                        this._tryShow({
-	                            offsetX: cx,
-	                            offsetY: cy,
-	                            position: payload.position,
-	                            target: el,
-	                            event: {}
-	                        });
-	                    }
-	                }
-	            }
-	            else {
-	                var el = api.getZr().handler.findHover(payload.x, payload.y);
-	                this._tryShow({
-	                    offsetX: payload.x,
-	                    offsetY: payload.y,
-	                    position: payload.position,
-	                    target: el,
-	                    event: {}
-	                });
-	            }
-	        },
-
-	        manuallyHideTip: function (tooltipModel, ecModel, api, payload) {
-	            if (payload.from === this.uid) {
-	                return;
-	            }
-
-	            this._hide();
-	        },
-
-	        _prepareAxisTriggerData: function (tooltipModel, ecModel) {
-	            // Prepare data for axis trigger
-	            var seriesGroupByAxis = {};
-	            ecModel.eachSeries(function (seriesModel) {
-	                if (ifSeriesSupportAxisTrigger(seriesModel)) {
-	                    var coordSys = seriesModel.coordinateSystem;
-	                    var baseAxis;
-	                    var key;
-
-	                    // Only cartesian2d, polar and single support axis trigger
-	                    if (coordSys.type === 'cartesian2d') {
-	                        // FIXME `axisPointer.axis` is not baseAxis
-	                        baseAxis = coordSys.getBaseAxis();
-	                        key = baseAxis.dim + baseAxis.index;
-	                    }
-	                    else if (coordSys.type === 'singleAxis') {
-	                        baseAxis = coordSys.getAxis();
-	                        key = baseAxis.dim + baseAxis.type;
-	                    }
-	                    else {
-	                        baseAxis = coordSys.getBaseAxis();
-	                        key = baseAxis.dim + coordSys.name;
-	                    }
-
-	                    seriesGroupByAxis[key] = seriesGroupByAxis[key] || {
-	                        coordSys: [],
-	                        series: []
-	                    };
-	                    seriesGroupByAxis[key].coordSys.push(coordSys);
-	                    seriesGroupByAxis[key].series.push(seriesModel);
-	                }
-	            }, this);
-
-	            return seriesGroupByAxis;
-	        },
-
-	        /**
-	         * mousemove handler
-	         * @param {Object} e
-	         * @private
-	         */
-	        _tryShow: function (e) {
-	            var el = e.target;
-	            var tooltipModel = this._tooltipModel;
-	            var globalTrigger = tooltipModel.get('trigger');
-	            var ecModel = this._ecModel;
-	            var api = this._api;
-
-	            if (!tooltipModel) {
-	                return;
-	            }
-
-	            // Save mouse x, mouse y. So we can try to keep showing the tip if chart is refreshed
-	            this._lastX = e.offsetX;
-	            this._lastY = e.offsetY;
-
-	            // Always show item tooltip if mouse is on the element with dataIndex
-	            if (el && el.dataIndex != null) {
-	                // Use dataModel in element if possible
-	                // Used when mouseover on a element like markPoint or edge
-	                // In which case, the data is not main data in series.
-	                var dataModel = el.dataModel || ecModel.getSeriesByIndex(el.seriesIndex);
-	                var dataIndex = el.dataIndex;
-	                var data = dataModel.getData();
-	                var itemModel = data.getItemModel(dataIndex);
-	                // Series or single data may use item trigger when global is axis trigger
-	                if ((itemModel.get('tooltip.trigger') || globalTrigger) === 'axis') {
-	                    this._showAxisTooltip(tooltipModel, ecModel, e);
-	                }
-	                else {
-	                    // Reset ticket
-	                    this._ticket = '';
-	                    // If either single data or series use item trigger
-	                    this._hideAxisPointer();
-	                    // Reset last hover and dispatch downplay action
-	                    this._resetLastHover();
-
-	                    this._showItemTooltipContent(dataModel, dataIndex, el.dataType, e);
-	                }
-
-	                api.dispatchAction({
-	                    type: 'showTip',
-	                    from: this.uid,
-	                    dataIndexInside: dataIndex,
-	                    dataIndex: data.getRawIndex(dataIndex), // expose to user.
-	                    seriesIndex: el.seriesIndex
-	                });
-	            }
-	            // Tooltip provided directly. Like legend
-	            else if (el && el.tooltip) {
-	                var tooltipOpt = el.tooltip;
-	                if (typeof tooltipOpt === 'string') {
-	                    var content = tooltipOpt;
-	                    tooltipOpt = {
-	                        content: content,
-	                        // Fixed formatter
-	                        formatter: content
-	                    };
-	                }
-	                var subTooltipModel = new Model(tooltipOpt, tooltipModel);
-	                var defaultHtml = subTooltipModel.get('content');
-	                var asyncTicket = Math.random();
-	                this._showTooltipContent(
-	                    // TODO params
-	                    subTooltipModel, defaultHtml, subTooltipModel.get('formatterParams') || {},
-	                    asyncTicket, e.offsetX, e.offsetY, e.position, el, api
-	                );
-	            }
-	            else {
-	                if (globalTrigger === 'item') {
-	                    this._hide();
-	                }
-	                else {
-	                    // Try show axis tooltip
-	                    this._showAxisTooltip(tooltipModel, ecModel, e);
-	                }
-
-	                // Action of cross pointer
-	                // other pointer types will trigger action in _dispatchAndShowSeriesTooltipContent method
-	                if (tooltipModel.get('axisPointer.type') === 'cross') {
-	                    api.dispatchAction({
-	                        type: 'showTip',
-	                        from: this.uid,
-	                        x: e.offsetX,
-	                        y: e.offsetY
-	                    });
-	                }
-	            }
-	        },
-
-	        /**
-	         * Show tooltip on axis
-	         * @param {module:echarts/component/tooltip/TooltipModel} tooltipModel
-	         * @param {module:echarts/model/Global} ecModel
-	         * @param {Object} e
-	         * @private
-	         */
-	        _showAxisTooltip: function (tooltipModel, ecModel, e) {
-	            var axisPointerModel = tooltipModel.getModel('axisPointer');
-	            var axisPointerType = axisPointerModel.get('type');
-
-	            if (axisPointerType === 'cross') {
-	                var el = e.target;
-	                if (el && el.dataIndex != null) {
-	                    var seriesModel = ecModel.getSeriesByIndex(el.seriesIndex);
-	                    var dataIndex = el.dataIndex;
-	                    this._showItemTooltipContent(seriesModel, dataIndex, el.dataType, e);
-	                }
-	            }
-
-	            this._showAxisPointer();
-	            var allNotShow = true;
-	            zrUtil.each(this._seriesGroupByAxis, function (seriesCoordSysSameAxis) {
-	                // Try show the axis pointer
-	                var allCoordSys = seriesCoordSysSameAxis.coordSys;
-	                var coordSys = allCoordSys[0];
-
-	                // If mouse position is not in the grid or polar
-	                var point = [e.offsetX, e.offsetY];
-
-	                if (!coordSys.containPoint(point)) {
-	                    // Hide axis pointer
-	                    this._hideAxisPointer(coordSys.name);
-	                    return;
-	                }
-
-	                allNotShow = false;
-	                // Make sure point is discrete on cateogry axis
-	                var dimensions = coordSys.dimensions;
-	                var value = coordSys.pointToData(point, true);
-	                point = coordSys.dataToPoint(value);
-
-	                var baseAxis = coordSys.getBaseAxis();
-	                var axisType = axisPointerModel.get('axis');
-	                if (axisType === 'auto') {
-	                    axisType = baseAxis.dim;
-	                }
-
-	                if (baseAxis.isBlank() || zrUtil.eqNaN(point[0]) || zrUtil.eqNaN(point[1])) {
-	                    this._hideAxisPointer(coordSys.name);
-	                    return;
-	                }
-
-	                var contentNotChange = false;
-	                var lastHover = this._lastHover;
-	                if (axisPointerType === 'cross') {
-	                    // If hover data not changed
-	                    // Possible when two axes are all category
-	                    if (dataEqual(lastHover.data, value)) {
-	                        contentNotChange = true;
-	                    }
-	                    lastHover.data = value;
-	                }
-	                else {
-	                    var valIndex = zrUtil.indexOf(dimensions, axisType);
-
-	                    // If hover data not changed on the axis dimension
-	                    if (lastHover.data === value[valIndex]) {
-	                        contentNotChange = true;
-	                    }
-	                    lastHover.data = value[valIndex];
-	                }
-
-	                var enableAnimation = tooltipModel.get('animation');
-
-	                if (coordSys.type === 'cartesian2d' && !contentNotChange) {
-	                    this._showCartesianPointer(
-	                        axisPointerModel, coordSys, axisType, point, enableAnimation
-	                    );
-	                }
-	                else if (coordSys.type === 'polar' && !contentNotChange) {
-	                    this._showPolarPointer(
-	                        axisPointerModel, coordSys, axisType, point, enableAnimation
-	                    );
-	                }
-	                else if (coordSys.type === 'singleAxis' && !contentNotChange) {
-	                    this._showSinglePointer(
-	                        axisPointerModel, coordSys, axisType, point, enableAnimation
-	                    );
-	                }
-
-	                if (axisPointerType !== 'cross') {
-	                    this._dispatchAndShowSeriesTooltipContent(
-	                        coordSys, seriesCoordSysSameAxis.series, point, value, contentNotChange, e.position
-	                    );
-	                }
-	            }, this);
-
-	            if (!this._tooltipModel.get('show')) {
-	                this._hideAxisPointer();
-	            }
-
-	            if (allNotShow) {
-	                this._hide();
-	            }
-	        },
-
-	        /**
-	         * Show tooltip on axis of cartesian coordinate
-	         * @param {module:echarts/model/Model} axisPointerModel
-	         * @param {module:echarts/coord/cartesian/Cartesian2D} cartesians
-	         * @param {string} axisType
-	         * @param {Array.<number>} point
-	         * @private
-	         */
-	        _showCartesianPointer: function (axisPointerModel, cartesian, axisType, point, enableAnimation) {
-	            var self = this;
-
-	            var axisPointerType = axisPointerModel.get('type');
-	            var baseAxis = cartesian.getBaseAxis();
-	            var moveAnimation = enableAnimation
-	                && axisPointerType !== 'cross'
-	                && baseAxis.type === 'category'
-	                && baseAxis.getBandWidth() > 20;
-
-	            if (axisPointerType === 'cross') {
-	                moveGridLine('x', point, cartesian.getAxis('y').getGlobalExtent());
-	                moveGridLine('y', point, cartesian.getAxis('x').getGlobalExtent());
-
-	                this._updateCrossText(cartesian, point, axisPointerModel);
-	            }
-	            else {
-	                var otherAxis = cartesian.getAxis(axisType === 'x' ? 'y' : 'x');
-	                var otherExtent = otherAxis.getGlobalExtent();
-
-	                if (cartesian.type === 'cartesian2d') {
-	                    (axisPointerType === 'line' ? moveGridLine : moveGridShadow)(
-	                        axisType, point, otherExtent
-	                    );
-	                }
-	            }
-
-	            /**
-	             * @inner
-	             */
-	            function moveGridLine(axisType, point, otherExtent) {
-	                var targetShape = axisType === 'x'
-	                    ? makeLineShape(point[0], otherExtent[0], point[0], otherExtent[1])
-	                    : makeLineShape(otherExtent[0], point[1], otherExtent[1], point[1]);
-
-	                var pointerEl = self._getPointerElement(
-	                    cartesian, axisPointerModel, axisType, targetShape
-	                );
-	                graphic.subPixelOptimizeLine({
-	                    shape: targetShape,
-	                    style: pointerEl.style
-	                });
-
-	                moveAnimation
-	                    ? graphic.updateProps(pointerEl, {
-	                        shape: targetShape
-	                    }, axisPointerModel)
-	                    :  pointerEl.attr({
-	                        shape: targetShape
-	                    });
-	            }
-
-	            /**
-	             * @inner
-	             */
-	            function moveGridShadow(axisType, point, otherExtent) {
-	                var axis = cartesian.getAxis(axisType);
-	                var bandWidth = axis.getBandWidth();
-	                var span = otherExtent[1] - otherExtent[0];
-	                var targetShape = axisType === 'x'
-	                    ? makeRectShape(point[0] - bandWidth / 2, otherExtent[0], bandWidth, span)
-	                    : makeRectShape(otherExtent[0], point[1] - bandWidth / 2, span, bandWidth);
-
-	                var pointerEl = self._getPointerElement(
-	                    cartesian, axisPointerModel, axisType, targetShape
-	                );
-	                moveAnimation
-	                    ? graphic.updateProps(pointerEl, {
-	                        shape: targetShape
-	                    }, axisPointerModel)
-	                    :  pointerEl.attr({
-	                        shape: targetShape
-	                    });
-	            }
-	        },
-
-	        _showSinglePointer: function (axisPointerModel, single, axisType, point, enableAnimation) {
-	            var self = this;
-	            var axisPointerType = axisPointerModel.get('type');
-	            var moveAnimation =
-	                enableAnimation
-	                && axisPointerType !== 'cross'
-	                && single.getBaseAxis().type === 'category';
-	            var rect = single.getRect();
-	            var otherExtent = [rect.y, rect.y + rect.height];
-
-	            moveSingleLine(axisType, point, otherExtent);
-
-	            /**
-	             * @inner
-	             */
-	            function moveSingleLine(axisType, point, otherExtent) {
-	                var axis = single.getAxis();
-	                var orient = axis.orient;
-
-	                var targetShape = orient === 'horizontal'
-	                    ? makeLineShape(point[0], otherExtent[0], point[0], otherExtent[1])
-	                    : makeLineShape(otherExtent[0], point[1], otherExtent[1], point[1]);
-
-	                var pointerEl = self._getPointerElement(
-	                    single, axisPointerModel, axisType, targetShape
-	                );
-	                moveAnimation
-	                    ? graphic.updateProps(pointerEl, {
-	                        shape: targetShape
-	                    }, axisPointerModel)
-	                    :  pointerEl.attr({
-	                        shape: targetShape
-	                    });
-	            }
-
-	        },
-
-	        /**
-	         * Show tooltip on axis of polar coordinate
-	         * @param {module:echarts/model/Model} axisPointerModel
-	         * @param {Array.<module:echarts/coord/polar/Polar>} polar
-	         * @param {string} axisType
-	         * @param {Array.<number>} point
-	         */
-	        _showPolarPointer: function (axisPointerModel, polar, axisType, point, enableAnimation) {
-	            var self = this;
-
-	            var axisPointerType = axisPointerModel.get('type');
-
-	            var angleAxis = polar.getAngleAxis();
-	            var radiusAxis = polar.getRadiusAxis();
-
-	            var moveAnimation = enableAnimation
-	                && axisPointerType !== 'cross'
-	                && polar.getBaseAxis().type === 'category';
-
-	            if (axisPointerType === 'cross') {
-	                movePolarLine('angle', point, radiusAxis.getExtent());
-	                movePolarLine('radius', point, angleAxis.getExtent());
-
-	                this._updateCrossText(polar, point, axisPointerModel);
-	            }
-	            else {
-	                var otherAxis = polar.getAxis(axisType === 'radius' ? 'angle' : 'radius');
-	                var otherExtent = otherAxis.getExtent();
-
-	                (axisPointerType === 'line' ? movePolarLine : movePolarShadow)(
-	                    axisType, point, otherExtent
-	                );
-	            }
-	            /**
-	             * @inner
-	             */
-	            function movePolarLine(axisType, point, otherExtent) {
-	                var mouseCoord = polar.pointToCoord(point);
-
-	                var targetShape;
-
-	                if (axisType === 'angle') {
-	                    var p1 = polar.coordToPoint([otherExtent[0], mouseCoord[1]]);
-	                    var p2 = polar.coordToPoint([otherExtent[1], mouseCoord[1]]);
-	                    targetShape = makeLineShape(p1[0], p1[1], p2[0], p2[1]);
-	                }
-	                else {
-	                    targetShape = {
-	                        cx: polar.cx,
-	                        cy: polar.cy,
-	                        r: mouseCoord[0]
-	                    };
-	                }
-
-	                var pointerEl = self._getPointerElement(
-	                    polar, axisPointerModel, axisType, targetShape
-	                );
-
-	                moveAnimation
-	                    ? graphic.updateProps(pointerEl, {
-	                        shape: targetShape
-	                    }, axisPointerModel)
-	                    :  pointerEl.attr({
-	                        shape: targetShape
-	                    });
-	            }
-
-	            /**
-	             * @inner
-	             */
-	            function movePolarShadow(axisType, point, otherExtent) {
-	                var axis = polar.getAxis(axisType);
-	                var bandWidth = axis.getBandWidth();
-
-	                var mouseCoord = polar.pointToCoord(point);
-
-	                var targetShape;
-
-	                var radian = Math.PI / 180;
-
-	                if (axisType === 'angle') {
-	                    targetShape = makeSectorShape(
-	                        polar.cx, polar.cy,
-	                        otherExtent[0], otherExtent[1],
-	                        // In ECharts y is negative if angle is positive
-	                        (-mouseCoord[1] - bandWidth / 2) * radian,
-	                        (-mouseCoord[1] + bandWidth / 2) * radian
-	                    );
-	                }
-	                else {
-	                    targetShape = makeSectorShape(
-	                        polar.cx, polar.cy,
-	                        mouseCoord[0] - bandWidth / 2,
-	                        mouseCoord[0] + bandWidth / 2,
-	                        0, Math.PI * 2
-	                    );
-	                }
-
-	                var pointerEl = self._getPointerElement(
-	                    polar, axisPointerModel, axisType, targetShape
-	                );
-	                moveAnimation
-	                    ? graphic.updateProps(pointerEl, {
-	                        shape: targetShape
-	                    }, axisPointerModel)
-	                    :  pointerEl.attr({
-	                        shape: targetShape
-	                    });
-	            }
-	        },
-
-	        _updateCrossText: function (coordSys, point, axisPointerModel) {
-	            var crossStyleModel = axisPointerModel.getModel('crossStyle');
-	            var textStyleModel = crossStyleModel.getModel('textStyle');
-
-	            var tooltipModel = this._tooltipModel;
-
-	            var text = this._crossText;
-	            if (!text) {
-	                text = this._crossText = new graphic.Text({
-	                    style: {
-	                        textAlign: 'left',
-	                        textVerticalAlign: 'bottom'
-	                    }
-	                });
-	                this.group.add(text);
-	            }
-
-	            var value = coordSys.pointToData(point);
-
-	            var dims = coordSys.dimensions;
-	            value = zrUtil.map(value, function (val, idx) {
-	                var axis = coordSys.getAxis(dims[idx]);
-	                if (axis.type === 'category' || axis.type === 'time') {
-	                    val = axis.scale.getLabel(val);
-	                }
-	                else {
-	                    val = formatUtil.addCommas(
-	                        val.toFixed(axis.getPixelPrecision())
-	                    );
-	                }
-	                return val;
-	            });
-
-	            text.setStyle({
-	                fill: textStyleModel.getTextColor() || crossStyleModel.get('color'),
-	                textFont: textStyleModel.getFont(),
-	                text: value.join(', '),
-	                x: point[0] + 5,
-	                y: point[1] - 5
-	            });
-	            text.z = tooltipModel.get('z');
-	            text.zlevel = tooltipModel.get('zlevel');
-	        },
-
-	        _getPointerElement: function (coordSys, pointerModel, axisType, initShape) {
-	            var tooltipModel = this._tooltipModel;
-	            var z = tooltipModel.get('z');
-	            var zlevel = tooltipModel.get('zlevel');
-	            var axisPointers = this._axisPointers;
-	            var coordSysName = coordSys.name;
-	            axisPointers[coordSysName] = axisPointers[coordSysName] || {};
-	            if (axisPointers[coordSysName][axisType]) {
-	                return axisPointers[coordSysName][axisType];
-	            }
-
-	            // Create if not exists
-	            var pointerType = pointerModel.get('type');
-	            var styleModel = pointerModel.getModel(pointerType + 'Style');
-	            var isShadow = pointerType === 'shadow';
-	            var style = styleModel[isShadow ? 'getAreaStyle' : 'getLineStyle']();
-
-	            var elementType = coordSys.type === 'polar'
-	                ? (isShadow ? 'Sector' : (axisType === 'radius' ? 'Circle' : 'Line'))
-	                : (isShadow ? 'Rect' : 'Line');
-
-	            isShadow ? (style.stroke = null) : (style.fill = null);
-
-	            var el = axisPointers[coordSysName][axisType] = new graphic[elementType]({
-	                style: style,
-	                z: z,
-	                zlevel: zlevel,
-	                silent: true,
-	                shape: initShape
-	            });
-
-	            this.group.add(el);
-	            return el;
-	        },
-
-	        /**
-	         * Dispatch actions and show tooltip on series
-	         * @param {Array.<module:echarts/model/Series>} seriesList
-	         * @param {Array.<number>} point
-	         * @param {Array.<number>} value
-	         * @param {boolean} contentNotChange
-	         * @param {Array.<number>|string|Function} [positionExpr]
-	         */
-	        _dispatchAndShowSeriesTooltipContent: function (
-	            coordSys, seriesList, point, value, contentNotChange, positionExpr
-	        ) {
-
-	            var rootTooltipModel = this._tooltipModel;
-
-	            var baseAxis = coordSys.getBaseAxis();
-	            var baseDimIndex = ({x: 1, radius: 1, single: 1})[baseAxis.dim] ? 0 : 1;
-
-	            if (!seriesList.length) {
-	                return;
-	            }
-
-	            var payloadBatch = zrUtil.map(seriesList, function (series) {
-	                return {
-	                    seriesIndex: series.seriesIndex,
-	                    dataIndexInside: series.getAxisTooltipDataIndex
-	                        ? series.getAxisTooltipDataIndex(series.coordDimToDataDim(baseAxis.dim), value, baseAxis)
-	                        : series.getData().indexOfNearest(
-	                            series.coordDimToDataDim(baseAxis.dim)[0],
-	                            value[baseDimIndex],
-	                            // Add a threshold to avoid find the wrong dataIndex when data length is not same
-	                            false, baseAxis.type === 'category' ? 0.5 : null
-	                        )
-	                };
-	            });
-	            var sampleSeriesIndex;
-	            zrUtil.each(payloadBatch, function (payload, idx) {
-	                if (seriesList[idx].getData().hasValue(payload.dataIndexInside)) {
-	                    sampleSeriesIndex = idx;
-	                }
-	            });
-	            // Fallback to 0.
-	            sampleSeriesIndex = sampleSeriesIndex || 0;
-
-	            var lastHover = this._lastHover;
-	            var api = this._api;
-	            // Dispatch downplay action
-	            if (lastHover.payloadBatch && !contentNotChange) {
-	                api.dispatchAction({
-	                    type: 'downplay',
-	                    batch: lastHover.payloadBatch
-	                });
-	            }
-	            // Dispatch highlight action
-	            if (!contentNotChange) {
-	                api.dispatchAction({
-	                    type: 'highlight',
-	                    batch: payloadBatch
-	                });
-	                lastHover.payloadBatch = payloadBatch;
-	            }
-	            // Dispatch showTip action
-	            var dataIndex = payloadBatch[sampleSeriesIndex].dataIndexInside;
-	            api.dispatchAction({
-	                type: 'showTip',
-	                dataIndexInside: dataIndex,
-	                // expose to user.
-	                dataIndex: seriesList[sampleSeriesIndex].getData().getRawIndex(dataIndex),
-	                seriesIndex: payloadBatch[sampleSeriesIndex].seriesIndex,
-	                from: this.uid
-	            });
-
-	            if (baseAxis && rootTooltipModel.get('showContent') && rootTooltipModel.get('show')) {
-	                var paramsList = zrUtil.map(seriesList, function (series, index) {
-	                    return series.getDataParams(payloadBatch[index].dataIndexInside);
-	                });
-
-	                if (!contentNotChange) {
-	                    // Update html content
-	                    var firstDataIndex = payloadBatch[sampleSeriesIndex].dataIndexInside;
-
-	                    // Default tooltip content
-	                    // FIXME
-	                    // (1) shold be the first data which has name?
-	                    // (2) themeRiver, firstDataIndex is array, and first line is unnecessary.
-	                    var firstLine = baseAxis.type === 'time'
-	                        ? baseAxis.scale.getLabel(value[baseDimIndex])
-	                        : seriesList[sampleSeriesIndex].getData().getName(firstDataIndex);
-	                    var defaultHtml = (firstLine ? formatUtil.encodeHTML(firstLine) + '<br />' : '')
-	                        + zrUtil.map(seriesList, function (series, index) {
-	                            return series.formatTooltip(payloadBatch[index].dataIndexInside, true);
-	                        }).join('<br />');
-
-	                    var asyncTicket = 'axis_' + coordSys.name + '_' + firstDataIndex;
-
-	                    this._showTooltipContent(
-	                        rootTooltipModel, defaultHtml, paramsList, asyncTicket,
-	                        point[0], point[1], positionExpr, null, api
-	                    );
-	                }
-	                else {
-	                    updatePosition(
-	                        positionExpr || rootTooltipModel.get('position'),
-	                        point[0], point[1],
-	                        rootTooltipModel.get('confine'),
-	                        this._tooltipContent, paramsList, null, api
-	                    );
-	                }
-	            }
-	        },
-
-	        /**
-	         * Show tooltip on item
-	         * @param {module:echarts/model/Series} seriesModel
-	         * @param {number} dataIndex
-	         * @param {string} dataType
-	         * @param {Object} e
-	         */
-	        _showItemTooltipContent: function (seriesModel, dataIndex, dataType, e) {
-	            // FIXME Graph data
-	            var api = this._api;
-	            var data = seriesModel.getData(dataType);
-	            var itemModel = data.getItemModel(dataIndex);
-
-	            var tooltipOpt = itemModel.get('tooltip', true);
-	            if (typeof tooltipOpt === 'string') {
-	                // In each data item tooltip can be simply write:
-	                // {
-	                //  value: 10,
-	                //  tooltip: 'Something you need to know'
-	                // }
-	                var tooltipContent = tooltipOpt;
-	                tooltipOpt = {
-	                    formatter: tooltipContent
-	                };
-	            }
-	            var rootTooltipModel = this._tooltipModel;
-	            var seriesTooltipModel = seriesModel.getModel(
-	                'tooltip', rootTooltipModel
-	            );
-	            var tooltipModel = new Model(tooltipOpt, seriesTooltipModel, seriesTooltipModel.ecModel);
-
-	            var params = seriesModel.getDataParams(dataIndex, dataType);
-	            var defaultHtml = seriesModel.formatTooltip(dataIndex, false, dataType);
-
-	            var asyncTicket = 'item_' + seriesModel.name + '_' + dataIndex;
-
-	            this._showTooltipContent(
-	                tooltipModel, defaultHtml, params, asyncTicket,
-	                e.offsetX, e.offsetY, e.position, e.target, api
-	            );
-	        },
-
-	        _showTooltipContent: function (
-	            tooltipModel, defaultHtml, params, asyncTicket, x, y, positionExpr, target, api
-	        ) {
-	            // Reset ticket
-	            this._ticket = '';
-
-	            if (tooltipModel.get('showContent') && tooltipModel.get('show')) {
-	                var tooltipContent = this._tooltipContent;
-	                var confine = tooltipModel.get('confine');
-
-	                var formatter = tooltipModel.get('formatter');
-	                positionExpr = positionExpr || tooltipModel.get('position');
-	                var html = defaultHtml;
-
-	                if (formatter) {
-	                    if (typeof formatter === 'string') {
-	                        html = formatUtil.formatTpl(formatter, params, true);
-	                    }
-	                    else if (typeof formatter === 'function') {
-	                        var self = this;
-	                        var ticket = asyncTicket;
-	                        var callback = function (cbTicket, html) {
-	                            if (cbTicket === self._ticket) {
-	                                tooltipContent.setContent(html);
-
-	                                updatePosition(
-	                                    positionExpr, x, y, confine,
-	                                    tooltipContent, params, target, api
-	                                );
-	                            }
-	                        };
-	                        self._ticket = ticket;
-	                        html = formatter(params, ticket, callback);
-	                    }
-	                }
-
-	                tooltipContent.show(tooltipModel);
-	                tooltipContent.setContent(html);
-
-	                updatePosition(
-	                    positionExpr, x, y, confine,
-	                    tooltipContent, params, target, api
-	                );
-	            }
-	        },
-
-	        /**
-	         * Show axis pointer
-	         * @param {string} [coordSysName]
-	         */
-	        _showAxisPointer: function (coordSysName) {
-	            if (coordSysName) {
-	                var axisPointers = this._axisPointers[coordSysName];
-	                axisPointers && zrUtil.each(axisPointers, function (el) {
-	                    el.show();
-	                });
-	            }
-	            else {
-	                this.group.eachChild(function (child) {
-	                    child.show();
-	                });
-	                this.group.show();
-	            }
-	        },
-
-	        _resetLastHover: function () {
-	            var lastHover = this._lastHover;
-	            if (lastHover.payloadBatch) {
-	                this._api.dispatchAction({
-	                    type: 'downplay',
-	                    batch: lastHover.payloadBatch
-	                });
-	            }
-	            // Reset lastHover
-	            this._lastHover = {};
-	        },
-	        /**
-	         * Hide axis pointer
-	         * @param {string} [coordSysName]
-	         */
-	        _hideAxisPointer: function (coordSysName) {
-	            if (coordSysName) {
-	                var axisPointers = this._axisPointers[coordSysName];
-	                axisPointers && zrUtil.each(axisPointers, function (el) {
-	                    el.hide();
-	                });
-	            }
-	            else {
-	                if (this.group.children().length) {
-	                    this.group.hide();
-	                }
-	            }
-	        },
-
-	        _hide: function () {
-	            clearTimeout(this._showTimeout);
-
-	            this._hideAxisPointer();
-	            this._resetLastHover();
-	            if (!this._alwaysShowContent) {
-	                this._tooltipContent.hideLater(this._tooltipModel.get('hideDelay'));
-	            }
-
-	            this._api.dispatchAction({
-	                type: 'hideTip',
-	                from: this.uid
-	            });
-
-	            this._lastX = this._lastY = null;
-	        },
-
-	        dispose: function (ecModel, api) {
-	            if (env.node) {
-	                return;
-	            }
-	            var zr = api.getZr();
-	            this._tooltipContent.hide();
-
-	            zr.off('click', this._tryShow);
-	            zr.off('mousemove', this._mousemove);
-	            zr.off('mouseout', this._hide);
-	            zr.off('globalout', this._hide);
-	        }
-	    });
 
 
 /***/ },
-/* 302 */
+/* 318 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -53900,8 +56483,6 @@
 	     */
 	    function assembleCssText(tooltipModel) {
 
-	        tooltipModel = tooltipModel;
-
 	        var cssText = [];
 
 	        var transitionDuration = tooltipModel.get('transitionDuration');
@@ -53909,7 +56490,7 @@
 	        var textStyleModel = tooltipModel.getModel('textStyle');
 	        var padding = tooltipModel.get('padding');
 
-	        // Animation transition
+	        // Animation transition. Do not animate when transitionDuration is 0.
 	        transitionDuration &&
 	            cssText.push(assembleTransition(transitionDuration));
 
@@ -53952,7 +56533,7 @@
 	     */
 	    function TooltipContent(container, api) {
 	        var el = document.createElement('div');
-	        var zr = api.getZr();
+	        var zr = this._zr = api.getZr();
 
 	        this.el = el;
 
@@ -53973,7 +56554,7 @@
 	        var self = this;
 	        el.onmouseenter = function () {
 	            // clear the timeout in hideLater and keep showing tooltip
-	            if (self.enterable) {
+	            if (self._enterable) {
 	                clearTimeout(self._hideTimeout);
 	                self._show = true;
 	            }
@@ -53981,7 +56562,7 @@
 	        };
 	        el.onmousemove = function (e) {
 	            e = e || window.event;
-	            if (!self.enterable) {
+	            if (!self._enterable) {
 	                // Try trigger zrender event to avoid mouse
 	                // in and out shape too frequently
 	                var handler = zr.handler;
@@ -53990,7 +56571,7 @@
 	            }
 	        };
 	        el.onmouseleave = function () {
-	            if (self.enterable) {
+	            if (self._enterable) {
 	                if (self._show) {
 	                    self.hideLater(self._hideDelay);
 	                }
@@ -54003,12 +56584,18 @@
 
 	        constructor: TooltipContent,
 
-	        enterable: true,
+	        /**
+	         * @private
+	         * @type {boolean}
+	         */
+	        _enterable: true,
 
 	        /**
 	         * Update when tooltip is rendered
 	         */
 	        update: function () {
+	            // FIXME
+	            // Move this logic to ec main?
 	            var container = this._container;
 	            var stl = container.currentStyle
 	                || document.defaultView.getComputedStyle(container);
@@ -54036,12 +56623,29 @@
 	        },
 
 	        setContent: function (content) {
+	            this.el.innerHTML = content;
+	        },
+
+	        setEnterable: function (enterable) {
+	            this._enterable = enterable;
+	        },
+
+	        getSize: function () {
 	            var el = this.el;
-	            el.innerHTML = content;
-	            el.style.display = content ? 'block' : 'none';
+	            return [el.clientWidth, el.clientHeight];
 	        },
 
 	        moveTo: function (x, y) {
+	            // xy should be based on canvas root. But tooltipContent is
+	            // the sibling of canvas root. So padding of ec container
+	            // should be considered here.
+	            var zr = this._zr;
+	            var viewportRoot;
+	            if (zr && zr.painter && (viewportRoot = zr.painter.getViewportRoot())) {
+	                x += viewportRoot.offsetLeft || 0;
+	                y += viewportRoot.offsetTop || 0;
+	            }
+
 	            var style = this.el.style;
 	            style.left = x + 'px';
 	            style.top = y + 'px';
@@ -54055,10 +56659,8 @@
 	            this._show = false;
 	        },
 
-	        // showLater: function ()
-
 	        hideLater: function (time) {
-	            if (this._show && !(this._inContent && this.enterable)) {
+	            if (this._show && !(this._inContent && this._enterable)) {
 	                if (time) {
 	                    this._hideDelay = time;
 	                    // Set show false to avoid invoke hideLater mutiple times
@@ -54080,15 +56682,16 @@
 
 
 /***/ },
-/* 303 */
+/* 319 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
 
 
-	    __webpack_require__(304);
-	    __webpack_require__(310);
-	    __webpack_require__(312);
+	    __webpack_require__(320);
+	    __webpack_require__(326);
+	    __webpack_require__(329);
+	    __webpack_require__(142);
 
 	    // Polar view
 	    __webpack_require__(1).extendComponentView({
@@ -54097,21 +56700,21 @@
 
 
 /***/ },
-/* 304 */
+/* 320 */
 /***/ function(module, exports, __webpack_require__) {
 
 	// TODO Axis scale
 
 
-	    var Polar = __webpack_require__(305);
+	    var Polar = __webpack_require__(321);
 	    var numberUtil = __webpack_require__(7);
 	    var zrUtil = __webpack_require__(4);
 
-	    var axisHelper = __webpack_require__(115);
+	    var axisHelper = __webpack_require__(105);
 	    var niceScaleExtent = axisHelper.niceScaleExtent;
 
 	    // 依赖 PolarModel 做预处理
-	    __webpack_require__(308);
+	    __webpack_require__(324);
 
 	    /**
 	     * Resize method bound to the polar
@@ -54153,8 +56756,8 @@
 	            }
 	        });
 
-	        niceScaleExtent(angleAxis, angleAxis.model);
-	        niceScaleExtent(radiusAxis, radiusAxis.model);
+	        niceScaleExtent(angleAxis.scale, angleAxis.model);
+	        niceScaleExtent(radiusAxis.scale, radiusAxis.model);
 
 	        // Fix extent of category angle axis
 	        if (angleAxis.type === 'category' && !angleAxis.onBand) {
@@ -54214,6 +56817,7 @@
 	                polarList.push(polar);
 
 	                polarModel.coordinateSystem = polar;
+	                polar.model = polarModel;
 	            });
 	            // Inject coordinateSystem to series
 	            ecModel.eachSeries(function (seriesModel) {
@@ -54247,7 +56851,7 @@
 
 
 /***/ },
-/* 305 */
+/* 321 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -54256,8 +56860,8 @@
 	 */
 
 
-	    var RadiusAxis = __webpack_require__(306);
-	    var AngleAxis = __webpack_require__(307);
+	    var RadiusAxis = __webpack_require__(322);
+	    var AngleAxis = __webpack_require__(323);
 
 	    /**
 	     * @alias {module:echarts/coord/polar/Polar}
@@ -54294,14 +56898,18 @@
 	         * @private
 	         */
 	        this._angleAxis = new AngleAxis();
+
+	        this._radiusAxis.polar = this._angleAxis.polar = this;
 	    };
 
 	    Polar.prototype = {
 
-	        constructor: Polar,
-
 	        type: 'polar',
 
+	        axisPointerEnabled: true,
+
+	        constructor: Polar,
+
 	        /**
 	         * @param {Array.<string>}
 	         * @readOnly
@@ -54309,6 +56917,11 @@
 	        dimensions: ['radius', 'angle'],
 
 	        /**
+	         * @type {module:echarts/coord/PolarModel}
+	         */
+	        model: null,
+
+	        /**
 	         * If contain coord
 	         * @param {Array.<number>} point
 	         * @return {boolean}
@@ -54330,11 +56943,18 @@
 	        },
 
 	        /**
-	         * @param {string} axisType
+	         * @param {string} dim
 	         * @return {module:echarts/coord/polar/AngleAxis|module:echarts/coord/polar/RadiusAxis}
 	         */
-	        getAxis: function (axisType) {
-	            return this['_' + axisType + 'Axis'];
+	        getAxis: function (dim) {
+	            return this['_' + dim + 'Axis'];
+	        },
+
+	        /**
+	         * @return {Array.<module:echarts/coord/Axis>}
+	         */
+	        getAxes: function () {
+	            return [this._radiusAxis, this._angleAxis];
 	        },
 
 	        /**
@@ -54387,6 +57007,19 @@
 	        },
 
 	        /**
+	         * @param {string} [dim] 'radius' or 'angle' or 'auto' or null/undefined
+	         * @return {Object} {baseAxes: [], otherAxes: []}
+	         */
+	        getTooltipAxes: function (dim) {
+	            var baseAxis = (dim != null && dim !== 'auto')
+	                ? this.getAxis(dim) : this.getBaseAxis();
+	            return {
+	                baseAxes: [baseAxis],
+	                otherAxes: [this.getOtherAxis(baseAxis)]
+	            };
+	        },
+
+	        /**
 	         * Convert series data to a list of (x, y) points
 	         * @param {module:echarts/data/List} data
 	         * @return {Array}
@@ -54480,14 +57113,14 @@
 
 
 /***/ },
-/* 306 */
+/* 322 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
 
 
 	    var zrUtil = __webpack_require__(4);
-	    var Axis = __webpack_require__(124);
+	    var Axis = __webpack_require__(100);
 
 	    function RadiusAxis(scale, radiusExtent) {
 
@@ -54508,6 +57141,13 @@
 
 	        constructor: RadiusAxis,
 
+	        /**
+	         * @override
+	         */
+	        pointToData: function (point, clamp) {
+	            return this.polar.pointToData(point, clamp)[this.dim === 'radius' ? 0 : 1];
+	        },
+
 	        dataToRadius: Axis.prototype.dataToCoord,
 
 	        radiusToData: Axis.prototype.coordToData
@@ -54519,14 +57159,14 @@
 
 
 /***/ },
-/* 307 */
+/* 323 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
 
 
 	    var zrUtil = __webpack_require__(4);
-	    var Axis = __webpack_require__(124);
+	    var Axis = __webpack_require__(100);
 
 	    function AngleAxis(scale, angleExtent) {
 
@@ -54549,6 +57189,13 @@
 
 	        constructor: AngleAxis,
 
+	        /**
+	         * @override
+	         */
+	        pointToData: function (point, clamp) {
+	            return this.polar.pointToData(point, clamp)[this.dim === 'radius' ? 0 : 1];
+	        },
+
 	        dataToAngle: Axis.prototype.dataToCoord,
 
 	        angleToData: Axis.prototype.coordToData
@@ -54560,13 +57207,13 @@
 
 
 /***/ },
-/* 308 */
+/* 324 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
 
 
-	    __webpack_require__(309);
+	    __webpack_require__(325);
 
 	    __webpack_require__(1).extendComponentModel({
 
@@ -54609,7 +57256,7 @@
 
 
 /***/ },
-/* 309 */
+/* 325 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -54617,7 +57264,7 @@
 
 	    var zrUtil = __webpack_require__(4);
 	    var ComponentModel = __webpack_require__(19);
-	    var axisModelCreator = __webpack_require__(128);
+	    var axisModelCreator = __webpack_require__(131);
 
 	    var PolarAxisModel = ComponentModel.extend({
 
@@ -54641,7 +57288,7 @@
 
 	    });
 
-	    zrUtil.merge(PolarAxisModel.prototype, __webpack_require__(130));
+	    zrUtil.merge(PolarAxisModel.prototype, __webpack_require__(111));
 
 	    var polarAxisDefaultExtendedOption = {
 	        angle: {
@@ -54677,27 +57324,28 @@
 
 
 /***/ },
-/* 310 */
+/* 326 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
 
 
-	    __webpack_require__(304);
+	    __webpack_require__(320);
 
-	    __webpack_require__(311);
+	    __webpack_require__(327);
 
 
 /***/ },
-/* 311 */
+/* 327 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
 
 
 	    var zrUtil = __webpack_require__(4);
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 	    var Model = __webpack_require__(12);
+	    var PolarAxisPointer = __webpack_require__(328);
 
 	    var elementList = ['axisLine', 'axisLabel', 'axisTick', 'splitLine', 'splitArea'];
 
@@ -54712,19 +57360,21 @@
 	            y2: end[1]
 	        };
 	    }
-	    __webpack_require__(1).extendComponentView({
+
+	    __webpack_require__(141).extend({
 
 	        type: 'angleAxis',
 
+	        axisPointerClass: PolarAxisPointer,
+
 	        render: function (angleAxisModel, ecModel) {
 	            this.group.removeAll();
 	            if (!angleAxisModel.get('show')) {
 	                return;
 	            }
 
-	            var polarModel = ecModel.getComponent('polar', angleAxisModel.get('polarIndex'));
 	            var angleAxis = angleAxisModel.axis;
-	            var polar = polarModel.coordinateSystem;
+	            var polar = angleAxis.polar;
 	            var radiusExtent = polar.getRadiusAxis().getExtent();
 	            var ticksAngles = angleAxis.getTicksCoords();
 
@@ -54735,7 +57385,7 @@
 
 	            zrUtil.each(elementList, function (name) {
 	                if (angleAxisModel.get(name +'.show')
-	                    && (!angleAxis.isBlank() || name === 'axisLine')
+	                    && (!angleAxis.scale.isBlank() || name === 'axisLine')
 	                ) {
 	                    this['_' + name](angleAxisModel, polar, ticksAngles, radiusExtent);
 	                }
@@ -54925,26 +57575,171 @@
 
 
 /***/ },
-/* 312 */
+/* 328 */
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+
+	    var formatUtil = __webpack_require__(6);
+	    var BaseAxisPointer = __webpack_require__(137);
+	    var graphic = __webpack_require__(44);
+	    var viewHelper = __webpack_require__(139);
+	    var matrix = __webpack_require__(11);
+	    var AxisBuilder = __webpack_require__(135);
+
+	    var PolarAxisPointer = BaseAxisPointer.extend({
+
+	        /**
+	         * @override
+	         */
+	        makeElOption: function (elOption, value, axisModel, axisPointerModel, api) {
+	            var axis = axisModel.axis;
+
+	            if (axis.dim === 'angle') {
+	                this.animationThreshold = Math.PI / 18;
+	            }
+
+	            var polar = axis.polar;
+	            var otherAxis = polar.getOtherAxis(axis);
+	            var otherExtent = otherAxis.getExtent();
+
+	            var coordValue;
+	            coordValue = axis['dataTo' + formatUtil.capitalFirst(axis.dim)](value);
+
+	            var elStyle = viewHelper.buildElStyle(axisPointerModel);
+	            var pointerOption = pointerShapeBuilder[axisPointerModel.get('type')](
+	                axis, polar, coordValue, otherExtent, elStyle
+	            );
+	            pointerOption.style = elStyle;
+
+	            elOption.graphicKey = pointerOption.type;
+	            elOption.pointer = pointerOption;
+
+	            var labelMargin = axisPointerModel.get('label.margin');
+	            var labelPos = getLabelPosition(value, axisModel, axisPointerModel, polar, labelMargin);
+	            viewHelper.buildLabelElOption(elOption, axisModel, axisPointerModel, api, labelPos);
+	        }
+
+	        // Do not support handle, utill any user requires it.
+
+	    });
+
+	    function getLabelPosition(value, axisModel, axisPointerModel, polar, labelMargin) {
+	        var axis = axisModel.axis;
+	        var coord = axis.dataToCoord(value);
+	        var axisAngle = polar.getAngleAxis().getExtent()[0];
+	        axisAngle = axisAngle / 180 * Math.PI;
+	        var radiusExtent = polar.getRadiusAxis().getExtent();
+	        var position;
+	        var align;
+	        var verticalAlign;
+
+	        if (axis.dim === 'radius') {
+	            var transform = matrix.create();
+	            matrix.rotate(transform, transform, axisAngle);
+	            matrix.translate(transform, transform, [polar.cx, polar.cy]);
+	            position = graphic.applyTransform([coord, -labelMargin], transform);
+
+	            var labelRotation = axisModel.getModel('axisLabel').get('rotate') || 0;
+	            var labelLayout = AxisBuilder.innerTextLayout(
+	                axisAngle, labelRotation * Math.PI / 180, -1
+	            );
+	            align = labelLayout.textAlign;
+	            verticalAlign = labelLayout.textVerticalAlign;
+	        }
+	        else { // angle axis
+	            var r = radiusExtent[1];
+	            position = polar.coordToPoint([r + labelMargin, coord]);
+	            var cx = polar.cx;
+	            var cy = polar.cy;
+	            align = Math.abs(position[0] - cx) / r < 0.3
+	                ? 'center' : (position[0] > cx ? 'left' : 'right');
+	            verticalAlign = Math.abs(position[1] - cy) / r < 0.3
+	                ? 'middle' : (position[1] > cy ? 'top' : 'bottom');
+	        }
+
+	        return {
+	            position: position,
+	            align: align,
+	            verticalAlign: verticalAlign
+	        };
+	    }
+
+
+	    var pointerShapeBuilder = {
+
+	        line: function (axis, polar, coordValue, otherExtent, elStyle) {
+	            return axis.dim === 'angle'
+	                ? {
+	                    type: 'Line',
+	                    shape: viewHelper.makeLineShape(
+	                        polar.coordToPoint([otherExtent[0], coordValue]),
+	                        polar.coordToPoint([otherExtent[1], coordValue])
+	                    )
+	                }
+	                : {
+	                    type: 'Circle',
+	                    shape: {
+	                        cx: polar.cx,
+	                        cy: polar.cy,
+	                        r: coordValue
+	                    }
+	                };
+	        },
+
+	        shadow: function (axis, polar, coordValue, otherExtent, elStyle) {
+	            var bandWidth = axis.getBandWidth();
+	            var radian = Math.PI / 180;
+
+	            return axis.dim === 'angle'
+	                ? {
+	                    type: 'Sector',
+	                    shape: viewHelper.makeSectorShape(
+	                        polar.cx, polar.cy,
+	                        otherExtent[0], otherExtent[1],
+	                        // In ECharts y is negative if angle is positive
+	                        (-coordValue - bandWidth / 2) * radian,
+	                        (-coordValue + bandWidth / 2) * radian
+	                    )
+	                }
+	                : {
+	                    type: 'Sector',
+	                    shape: viewHelper.makeSectorShape(
+	                        polar.cx, polar.cy,
+	                        coordValue - bandWidth / 2,
+	                        coordValue + bandWidth / 2,
+	                        0, Math.PI * 2
+	                    )
+	                };
+	        }
+	    };
+
+	    module.exports = PolarAxisPointer;
+
+
+/***/ },
+/* 329 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    __webpack_require__(304);
+	    __webpack_require__(320);
 
-	    __webpack_require__(313);
+	    __webpack_require__(330);
 
 
 /***/ },
-/* 313 */
+/* 330 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
 
 
 	    var zrUtil = __webpack_require__(4);
-	    var graphic = __webpack_require__(43);
-	    var AxisBuilder = __webpack_require__(133);
+	    var graphic = __webpack_require__(44);
+	    var AxisBuilder = __webpack_require__(135);
+	    var PolarAxisPointer = __webpack_require__(328);
 
 	    var axisBuilderAttrs = [
 	        'axisLine', 'axisLabel', 'axisTick', 'axisName'
@@ -54953,19 +57748,20 @@
 	        'splitLine', 'splitArea'
 	    ];
 
-	    __webpack_require__(1).extendComponentView({
+	    __webpack_require__(141).extend({
 
 	        type: 'radiusAxis',
 
+	        axisPointerClass: PolarAxisPointer,
+
 	        render: function (radiusAxisModel, ecModel) {
 	            this.group.removeAll();
 	            if (!radiusAxisModel.get('show')) {
 	                return;
 	            }
-	            var polarModel = ecModel.getComponent('polar', radiusAxisModel.get('polarIndex'));
-	            var angleAxis = polarModel.coordinateSystem.getAngleAxis();
 	            var radiusAxis = radiusAxisModel.axis;
-	            var polar = polarModel.coordinateSystem;
+	            var polar = radiusAxis.polar;
+	            var angleAxis = polar.getAngleAxis();
 	            var ticksCoords = radiusAxis.getTicksCoords();
 	            var axisAngle = angleAxis.getExtent()[0];
 	            var radiusExtent = radiusAxis.getExtent();
@@ -54976,7 +57772,7 @@
 	            this.group.add(axisBuilder.getGroup());
 
 	            zrUtil.each(selfBuilderAttrs, function (name) {
-	                if (radiusAxisModel.get(name +'.show') && !radiusAxis.isBlank()) {
+	                if (radiusAxisModel.get(name +'.show') && !radiusAxis.scale.isBlank()) {
 	                    this['_' + name](radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords);
 	                }
 	            }, this);
@@ -55076,7 +57872,7 @@
 	            labelDirection: -1,
 	            tickDirection: -1,
 	            nameDirection: 1,
-	            labelRotation: radiusAxisModel.getModel('axisLabel').get('rotate'),
+	            labelRotate: radiusAxisModel.getModel('axisLabel').get('rotate'),
 	            // Over splitLine and splitArea
 	            z2: 1
 	        };
@@ -55084,18 +57880,18 @@
 
 
 /***/ },
-/* 314 */
+/* 331 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    __webpack_require__(315);
+	    __webpack_require__(332);
 
-	    __webpack_require__(166);
+	    __webpack_require__(180);
 
-	    __webpack_require__(316);
+	    __webpack_require__(333);
 
-	    __webpack_require__(179);
+	    __webpack_require__(193);
 
 	    var echarts = __webpack_require__(1);
 	    var zrUtil = __webpack_require__(4);
@@ -55119,7 +57915,7 @@
 	            return {
 	                selected: selected,
 	                name: payload.name
-	            }
+	            };
 	        });
 	    }
 
@@ -55138,7 +57934,7 @@
 
 
 /***/ },
-/* 315 */
+/* 332 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -55148,9 +57944,9 @@
 	    var Model = __webpack_require__(12);
 	    var zrUtil = __webpack_require__(4);
 
-	    var selectableMixin = __webpack_require__(143);
+	    var selectableMixin = __webpack_require__(157);
 
-	    var geoCreator = __webpack_require__(166);
+	    var geoCreator = __webpack_require__(180);
 
 	    var GeoModel = ComponentModel.extend({
 
@@ -55222,6 +58018,10 @@
 	            // Map type
 	            map: '',
 
+	            // Define left-top, right-bottom coords to control view
+	            // For example, [ [180, 90], [-180, -90] ]
+	            boundingCoords: null,
+
 	            // Default on center of map
 	            center: null,
 
@@ -55267,7 +58067,7 @@
 	         * @return {module:echarts/model/Model}
 	         */
 	        getRegionModel: function (name) {
-	            return this._optionModelMap[name];
+	            return this._optionModelMap[name] || new Model(null, this, this.ecModel);
 	        },
 
 	        /**
@@ -55277,7 +58077,8 @@
 	         * @return {string}
 	         */
 	        getFormattedLabel: function (name, status) {
-	            var formatter = this.get('label.' + status + '.formatter');
+	            var regionModel = this.getRegionModel(name);
+	            var formatter = regionModel.get('label.' + status + '.formatter');
 	            var params = {
 	                name: name
 	            };
@@ -55306,13 +58107,13 @@
 
 
 /***/ },
-/* 316 */
+/* 333 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
 
 
-	    var MapDraw = __webpack_require__(176);
+	    var MapDraw = __webpack_require__(190);
 
 	    module.exports = __webpack_require__(1).extendComponentView({
 
@@ -55352,7 +58153,7 @@
 
 
 /***/ },
-/* 317 */
+/* 334 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -55361,20 +58162,20 @@
 
 
 	    __webpack_require__(1).registerPreprocessor(
-	        __webpack_require__(318)
+	        __webpack_require__(335)
 	    );
 
-	    __webpack_require__(319);
-	    __webpack_require__(323);
-	    __webpack_require__(324);
-	    __webpack_require__(325);
+	    __webpack_require__(336);
+	    __webpack_require__(340);
+	    __webpack_require__(341);
+	    __webpack_require__(342);
 
-	    __webpack_require__(326);
+	    __webpack_require__(343);
 
 
 
 /***/ },
-/* 318 */
+/* 335 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -55444,7 +58245,7 @@
 
 
 /***/ },
-/* 319 */
+/* 336 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -55453,12 +58254,12 @@
 
 
 	    var echarts = __webpack_require__(1);
-	    var visualSolution = __webpack_require__(320);
+	    var visualSolution = __webpack_require__(337);
 	    var zrUtil = __webpack_require__(4);
 	    var BoundingRect = __webpack_require__(9);
-	    var selector = __webpack_require__(321);
+	    var selector = __webpack_require__(338);
 	    var throttle = __webpack_require__(81);
-	    var brushHelper = __webpack_require__(322);
+	    var BrushTargetManager = __webpack_require__(339);
 
 	    var STATE_LIST = ['inBrush', 'outOfBrush'];
 	    var DISPATCH_METHOD = '__ecBrushSelect';
@@ -55475,9 +58276,9 @@
 	                payload.key === 'brush' ? payload.brushOption : {brushType: false}
 	            );
 
-	            brushModel.coordInfoList = brushHelper.makeCoordInfoList(brushModel.option, ecModel);
+	            var brushTargetManager = brushModel.brushTargetManager = new BrushTargetManager(brushModel.option, ecModel);
 
-	            brushHelper.parseInputRanges(brushModel, ecModel);
+	            brushTargetManager.setInputRanges(brushModel.areas, ecModel);
 	        });
 	    });
 
@@ -55587,7 +58388,7 @@
 
 	                zrUtil.each(areas, function (area) {
 	                    selectorsByBrushType[area.brushType]
-	                        && brushHelper.controlSeries(area, brushModel, seriesModel)
+	                        && brushModel.brushTargetManager.controlSeries(area, seriesModel, ecModel)
 	                        && rangeInfoList.push(area);
 	                    hasBrushExists |= brushed(rangeInfoList);
 	                });
@@ -55773,7 +58574,7 @@
 
 
 /***/ },
-/* 320 */
+/* 337 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -55782,7 +58583,7 @@
 
 
 	    var zrUtil = __webpack_require__(4);
-	    var VisualMapping = __webpack_require__(195);
+	    var VisualMapping = __webpack_require__(209);
 	    var each = zrUtil.each;
 
 	    function hasKeys(obj) {
@@ -55928,12 +58729,12 @@
 
 
 /***/ },
-/* 321 */
+/* 338 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var polygonContain = __webpack_require__(170).contain;
+	    var polygonContain = __webpack_require__(184).contain;
 	    var BoundingRect = __webpack_require__(9);
 
 	    // Key of the first level is brushType: `line`, `rect`, `polygon`.
@@ -55962,8 +58763,6 @@
 	                    && polygonContain(area.range, itemLayout[0], itemLayout[1]);
 	            },
 	            rect: function (itemLayout, selectors, area) {
-	                // FIXME
-	                // 随意写的,没有考察过效率。
 	                var points = area.range;
 
 	                if (points.length <= 1) {
@@ -56004,8 +58803,15 @@
 	            },
 	            rect: function (itemLayout, selectors, area) {
 	                var range = area.range;
-	                return inLineRange(itemLayout[xy[xyIndex]], range)
-	                    || inLineRange(itemLayout[xy[xyIndex]] + itemLayout[wh[xyIndex]], range);
+	                var layoutRange = [
+	                    itemLayout[xy[xyIndex]],
+	                    itemLayout[xy[xyIndex]] + itemLayout[wh[xyIndex]]
+	                ];
+	                layoutRange[1] < layoutRange[0] && layoutRange.reverse();
+	                return inLineRange(layoutRange[0], range)
+	                    || inLineRange(layoutRange[1], range)
+	                    || inLineRange(range[0], layoutRange)
+	                    || inLineRange(range[1], layoutRange);
 	            }
 	        };
 	    }
@@ -56014,8 +58820,6 @@
 	        return range[0] <= p && p <= range[1];
 	    }
 
-	    // FIXME
-	    // 随意写的,没考察过效率。
 	    function lineIntersectPolygon(lx, ly, l2x, l2y, points) {
 	        for (var i = 0, p2 = points[points.length - 1]; i < points.length; i++) {
 	            var p = points[i];
@@ -56057,167 +58861,229 @@
 
 
 /***/ },
-/* 322 */
+/* 339 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    var zrUtil = __webpack_require__(4);
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
+	    var modelUtil = __webpack_require__(5);
 
 	    var each = zrUtil.each;
+	    var indexOf = zrUtil.indexOf;
+	    var curry = zrUtil.curry;
 
-	    var helper = {};
-
-	    var COMPONENT_NAMES = ['geo', 'xAxis', 'yAxis'];
-	    var PANEL_ID_SPLIT = '--';
 	    var COORD_CONVERTS = ['dataToPoint', 'pointToData'];
 
-	    helper.parseOutputRanges = function (areas, coordInfoList, ecModel, rangesCoordInfo) {
-	        each(areas, function (area, index) {
-	            var panelId = area.panelId;
+	    // FIXME
+	    // how to genarialize to more coordinate systems.
+	    var INCLUDE_FINDER_MAIN_TYPES = [
+	        'grid', 'xAxis', 'yAxis', 'geo', 'graph',
+	        'polar', 'radiusAxis', 'angleAxis', 'bmap'
+	    ];
 
-	            if (panelId) {
-	                panelId = panelId.split(PANEL_ID_SPLIT);
+	    /**
+	     * [option in constructor]:
+	     * {
+	     *     Index/Id/Name of geo, xAxis, yAxis, grid: See util/model#parseFinder.
+	     * }
+	     *
+	     *
+	     * [targetInfo]:
+	     *
+	     * There can be multiple axes in a single targetInfo. Consider the case
+	     * of `grid` component, a targetInfo represents a grid which contains one or more
+	     * cartesian and one or more axes. And consider the case of parallel system,
+	     * which has multiple axes in a coordinate system.
+	     * Can be {
+	     *     panelId: ...,
+	     *     coordSys: <a representitive cartesian in grid (first cartesian by default)>,
+	     *     coordSyses: all cartesians.
+	     *     gridModel: <grid component>
+	     *     xAxes: correspond to coordSyses on index
+	     *     yAxes: correspond to coordSyses on index
+	     * }
+	     * or {
+	     *     panelId: ...,
+	     *     coordSys: <geo coord sys>
+	     *     coordSyses: [<geo coord sys>]
+	     *     geoModel: <geo component>
+	     * }
+	     *
+	     *
+	     * [panelOpt]:
+	     *
+	     * Make from targetInfo. Input to BrushController.
+	     * {
+	     *     panelId: ...,
+	     *     rect: ...
+	     * }
+	     *
+	     *
+	     * [area]:
+	     *
+	     * Generated by BrushController or user input.
+	     * {
+	     *     panelId: Used to locate coordInfo directly. If user inpput, no panelId.
+	     *     brushType: determine how to convert to/from coord('rect' or 'polygon' or 'lineX/Y').
+	     *     Index/Id/Name of geo, xAxis, yAxis, grid: See util/model#parseFinder.
+	     *     range: pixel range.
+	     *     coordRange: representitive coord range (the first one of coordRanges).
+	     *     coordRanges: <Array> coord ranges, used in multiple cartesian in one grid.
+	     * }
+	     */
 
-	                area[panelId[0] + 'Index'] = +panelId[1];
+	    /**
+	     * @param {Object} option contains Index/Id/Name of xAxis/yAxis/geo/grid
+	     *        Each can be {number|Array.<number>}. like: {xAxisIndex: [3, 4]}
+	     * @param {module:echarts/model/Global} ecModel
+	     * @param {Object} [opt]
+	     * @param {Array.<string>} [opt.include] include coordinate system types.
+	     */
+	    function BrushTargetManager(option, ecModel, opt) {
+	        /**
+	         * @private
+	         * @type {Array.<Object>}
+	         */
+	        var targetInfoList = this._targetInfoList = [];
+	        var info = {};
+	        var foundCpts = parseFinder(ecModel, option);
 
-	                var coordInfo = findCoordInfo(area, coordInfoList);
-	                area.coordRange = coordConvert[area.brushType](
-	                    1, coordInfo, area.range
-	                );
-	                rangesCoordInfo && (rangesCoordInfo[index] = coordInfo);
+	        each(targetInfoBuilders, function (builder, type) {
+	            if (!opt || !opt.include || indexOf(opt.include, type) >= 0) {
+	                builder(foundCpts, targetInfoList, info);
+	            }
+	        });
+	    }
+
+	    var proto = BrushTargetManager.prototype;
+
+	    proto.setOutputRanges = function (areas, ecModel) {
+	        this.matchOutputRanges(areas, ecModel, function (area, coordRange, coordSys) {
+	            (area.coordRanges || (area.coordRanges = [])).push(coordRange);
+	            // area.coordRange is the first of area.coordRanges
+	            if (!area.coordRange) {
+	                area.coordRange = coordRange;
+	                // In 'category' axis, coord to pixel is not reversible, so we can not
+	                // rebuild range by coordRange accrately, which may bring trouble when
+	                // brushing only one item. So we use __rangeOffset to rebuilding range
+	                // by coordRange. And this it only used in brush component so it is no
+	                // need to be adapted to coordRanges.
+	                var result = coordConvert[area.brushType](0, coordSys, coordRange);
+	                area.__rangeOffset = {
+	                    offset: diffProcessor[area.brushType](result.values, area.range, [1, 1]),
+	                    xyMinMax: result.xyMinMax
+	                };
 	            }
 	        });
 	    };
 
-	    helper.parseInputRanges = function (brushModel, ecModel) {
-	        each(brushModel.areas, function (area) {
-	            var coordInfo = findCoordInfo(area, brushModel.coordInfoList);
+	    proto.matchOutputRanges = function (areas, ecModel, cb) {
+	        each(areas, function (area) {
+	            var targetInfo = this.findTargetInfo(area, ecModel);
+
+	            if (targetInfo && targetInfo !== true) {
+	                zrUtil.each(
+	                    targetInfo.coordSyses,
+	                    function (coordSys) {
+	                        var result = coordConvert[area.brushType](1, coordSys, area.range);
+	                        cb(area, result.values, coordSys, ecModel);
+	                    }
+	                );
+	            }
+	        }, this);
+	    };
+
+	    proto.setInputRanges = function (areas, ecModel) {
+	        each(areas, function (area) {
+	            var targetInfo = this.findTargetInfo(area, ecModel);
 
 	            if (true) {
 	                zrUtil.assert(
-	                    !coordInfo || coordInfo === true || area.coordRange,
+	                    !targetInfo || targetInfo === true || area.coordRange,
 	                    'coordRange must be specified when coord index specified.'
 	                );
 	                zrUtil.assert(
-	                    !coordInfo || coordInfo !== true || area.range,
-	                    'range must be specified.'
+	                    !targetInfo || targetInfo !== true || area.range,
+	                    'range must be specified in global brush.'
 	                );
 	            }
 
 	            area.range = area.range || [];
 
 	            // convert coordRange to global range and set panelId.
-	            if (coordInfo && coordInfo !== true) {
-	                area.range = coordConvert[area.brushType](
-	                    0, coordInfo, area.coordRange
-	                );
-	                area.panelId = coordInfo.panelId;
+	            if (targetInfo && targetInfo !== true) {
+	                area.panelId = targetInfo.panelId;
+	                // (1) area.range shoule always be calculate from coordRange but does
+	                // not keep its original value, for the sake of the dataZoom scenario,
+	                // where area.coordRange remains unchanged but area.range may be changed.
+	                // (2) Only support converting one coordRange to pixel range in brush
+	                // component. So do not consider `coordRanges`.
+	                // (3) About __rangeOffset, see comment above.
+	                var result = coordConvert[area.brushType](0, targetInfo.coordSys, area.coordRange);
+	                var rangeOffset = area.__rangeOffset;
+	                area.range = rangeOffset
+	                    ? diffProcessor[area.brushType](
+	                        result.values,
+	                        rangeOffset.offset,
+	                        getScales(result.xyMinMax, rangeOffset.xyMinMax)
+	                    )
+	                    : result.values;
 	            }
+	        }, this);
+	    };
+
+	    proto.makePanelOpts = function (getDefaultBrushType) {
+	        return zrUtil.map(this._targetInfoList, function (targetInfo) {
+	            return {
+	                panelId: targetInfo.panelId,
+	                rect: targetInfo.getPanelRect(),
+	                defaultBrushType: getDefaultBrushType && getDefaultBrushType(targetInfo)
+	            };
 	        });
 	    };
 
-	    helper.makePanelOpts = function (coordInfoList) {
-	        var panelOpts = [];
-
-	        each(coordInfoList, function (coordInfo) {
-	            var coordSys = coordInfo.coordSys;
-	            var rect;
-
-	            if (coordInfo.geoIndex >= 0) {
-	                rect = coordSys.getBoundingRect().clone();
-	                // geo roam and zoom transform
-	                rect.applyTransform(graphic.getTransform(coordSys));
-	            }
-	            else { // xAxis or yAxis
-	                // grid is not Transformable.
-	                rect = coordSys.grid.getRect().clone();
-	            }
-
-	            panelOpts.push({panelId: coordInfo.panelId, rect: rect});
-	        });
-
-	        return panelOpts;
+	    proto.controlSeries = function (area, seriesModel, ecModel) {
+	        // Check whether area is bound in coord, and series do not belong to that coord.
+	        // If do not do this check, some brush (like lineX) will controll all axes.
+	        var targetInfo = this.findTargetInfo(area, ecModel);
+	        return targetInfo === true || (
+	            targetInfo && indexOf(targetInfo.coordSyses, seriesModel.coordinateSystem) >= 0
+	        );
 	    };
 
 	    /**
-	     * @param {Object} option {xAxisIndex, yAxisIndex, geoIndex}
-	     * @param {module:echarts/model/Global} ecModel
-	     * @return {Array.<Obejct>} coordInfoList
+	     * If return Object, a coord found.
+	     * If reutrn true, global found.
+	     * Otherwise nothing found.
+	     *
+	     * @param {Object} area
+	     * @param {Array} targetInfoList
+	     * @return {Obejct|boolean}
 	     */
-	    helper.makeCoordInfoList = function (option, ecModel) {
-	        var coordInfoList = [];
+	    proto.findTargetInfo = function (area, ecModel) {
+	        var targetInfoList = this._targetInfoList;
+	        var foundCpts = parseFinder(ecModel, area);
 
-	        each(COMPONENT_NAMES, function (componentName) {
-	            var componentIndices = option[componentName + 'Index'];
-	            if (componentIndices == null || componentIndices === 'none') {
-	                return;
-	            }
-	            if (componentIndices !== 'all' && !zrUtil.isArray(componentIndices)) {
-	                componentIndices = [componentIndices];
-	            }
-
-	            ecModel.eachComponent({mainType: componentName}, function (componentModel, index) {
-	                if (componentIndices !== 'all' && zrUtil.indexOf(componentIndices, index) < 0) {
-	                    return;
+	        for (var i = 0; i < targetInfoList.length; i++) {
+	            var targetInfo = targetInfoList[i];
+	            var areaPanelId = area.panelId;
+	            if (areaPanelId) {
+	                if (targetInfo.panelId === areaPanelId) {
+	                    return targetInfo;
 	                }
-
-	                var grid;
-	                var coordSys;
-
-	                (componentName === 'xAxis' || componentName === 'yAxis')
-	                    ? (grid = componentModel.axis.grid)
-	                    : (coordSys = componentModel.coordinateSystem); // geo
-
-	                var coordInfo;
-
-	                // Check duplicate and find cartesian when tranval to yAxis.
-	                for (var i = 0, len = coordInfoList.length; i < len; i++) {
-	                    var cInfo = coordInfoList[i];
-	                    if (true) {
-	                        zrUtil.assert(
-	                            cInfo[componentName + 'Index'] != index,
-	                            'Coord should not be defined duplicately: ' + componentName + index
-	                        );
-	                    }
-	                    // CoordSys is always required for `rect brush` or `polygon brush`.
-	                    // If both xAxisIndex and yAxisIndex specified, fetch cartesian by them.
-	                    if (componentName === 'yAxis' && !cInfo.yAxis && cInfo.xAxis) {
-	                        var aCoordSys = grid.getCartesian(cInfo.xAxisIndex, index);
-	                        if (aCoordSys) { // The yAxis and xAxis are in the same cartesian.
-	                            coordSys = aCoordSys;
-	                            coordInfo = cInfo;
-	                            break;
-	                        }
+	            }
+	            else {
+	                for (var i = 0; i < targetInfoMatchers.length; i++) {
+	                    if (targetInfoMatchers[i](foundCpts, targetInfo)) {
+	                        return targetInfo;
 	                    }
 	                }
+	            }
+	        }
 
-	                !coordInfo && coordInfoList.push(coordInfo = {});
-
-	                coordInfo[componentName] = componentModel;
-	                coordInfo[componentName + 'Index'] = index;
-	                // If both xAxisIndex and yAxisIndex specified, panelId only use yAxisIndex,
-	                // which is enough to index panel.
-	                coordInfo.panelId = componentName + PANEL_ID_SPLIT + index;
-	                coordInfo.coordSys = coordSys
-	                    // If only xAxisIndex or only yAxisIndex specified, find its first cartesian.
-	                    || grid.getCartesian(coordInfo.xAxisIndex, coordInfo.yAxisIndex);
-
-	                coordInfo.coordSys
-	                    ? (coordInfoList[componentName + 'Has'] = true)
-	                    : coordInfoList.pop(); // If a coordInfo exists originally, existance of coordSys is ensured.
-	            });
-	        });
-
-	        return coordInfoList;
-	    };
-
-	    helper.controlSeries = function (area, brushModel, seriesModel) {
-	        // Check whether area is bound in coord, and series do not belong to that coord.
-	        // If do not do this check, some brush (like lineX) will controll all axes.
-	        var coordInfo = findCoordInfo(area, brushModel.coordInfoList);
-	        return coordInfo === true || (coordInfo && coordInfo.coordSys === seriesModel.coordinateSystem);
+	        return true;
 	    };
 
 	    function formatMinMax(minMax) {
@@ -56225,73 +59091,217 @@
 	        return minMax;
 	    }
 
-	    /**
-	     * If return Object, a coord found.
-	     * If reutrn true, global found.
-	     * Otherwise nothing found.
-	     *
-	     * @param {Object} area {<componentName>Index}
-	     * @param {Array} coordInfoList
-	     * @return {Obejct|boolean}
-	     */
-	    function findCoordInfo(area, coordInfoList) {
-	        var isGlobal = true;
-	        for (var j = 0; j < COMPONENT_NAMES.length; j++) {
-	            var indexAttr = COMPONENT_NAMES[j] + 'Index';
-	            if (area[indexAttr] >= 0) {
-	                isGlobal = false;
-	                for (var i = 0; i < coordInfoList.length; i++) {
-	                    if (coordInfoList[i][indexAttr] === area[indexAttr]) {
-	                        return coordInfoList[i];
-	                    }
-	                }
+	    function parseFinder(ecModel, option) {
+	        return modelUtil.parseFinder(
+	            ecModel, option, {includeMainTypes: INCLUDE_FINDER_MAIN_TYPES}
+	        );
+	    }
+
+	    var targetInfoBuilders = {
+
+	        grid: function (foundCpts, targetInfoList) {
+	            var xAxisModels = foundCpts.xAxisModels;
+	            var yAxisModels = foundCpts.yAxisModels;
+	            var gridModels = foundCpts.gridModels;
+	            // Remove duplicated.
+	            var gridModelMap = {};
+	            var xAxesHas = {};
+	            var yAxesHas = {};
+
+	            if (!xAxisModels && !yAxisModels && !gridModels) {
+	                return;
 	            }
-	        }
-	        return isGlobal;
-	    }
 
-	    function axisConvert(axisName, to, coordInfo, coordRange) {
-	        var axis = coordInfo.coordSys.getAxis(axisName);
+	            each(xAxisModels, function (axisModel) {
+	                var gridModel = axisModel.axis.grid.model;
+	                gridModelMap[gridModel.id] = gridModel;
+	                xAxesHas[gridModel.id] = true;
+	            });
+	            each(yAxisModels, function (axisModel) {
+	                var gridModel = axisModel.axis.grid.model;
+	                gridModelMap[gridModel.id] = gridModel;
+	                yAxesHas[gridModel.id] = true;
+	            });
+	            each(gridModels, function (gridModel) {
+	                gridModelMap[gridModel.id] = gridModel;
+	                xAxesHas[gridModel.id] = true;
+	                yAxesHas[gridModel.id] = true;
+	            });
 
-	        if (true) {
-	            zrUtil.assert(axis, 'line brush is only available in cartesian (grid).');
-	        }
+	            each(gridModelMap, function (gridModel) {
+	                var grid = gridModel.coordinateSystem;
+	                var cartesians = [];
 
-	        return formatMinMax(zrUtil.map([0, 1], function (i) {
-	            return to
-	                ? axis.coordToData(axis.toLocalCoord(coordRange[i]))
-	                : axis.toGlobalCoord(axis.dataToCoord(coordRange[i]));
-	        }));
-	    }
-
-	    var coordConvert = {
-
-	        lineX: zrUtil.curry(axisConvert, 'x'),
-
-	        lineY: zrUtil.curry(axisConvert, 'y'),
-
-	        rect: function (to, coordInfo, coordRange) {
-	            var coordSys = coordInfo.coordSys;
-	            var xminymin = coordSys[COORD_CONVERTS[to]]([coordRange[0][0], coordRange[1][0]]);
-	            var xmaxymax = coordSys[COORD_CONVERTS[to]]([coordRange[0][1], coordRange[1][1]]);
-	            return [
-	                formatMinMax([xminymin[0], xmaxymax[0]]),
-	                formatMinMax([xminymin[1], xmaxymax[1]])
-	            ];
+	                each(grid.getCartesians(), function (cartesian, index) {
+	                    if (indexOf(xAxisModels, cartesian.getAxis('x').model) >= 0
+	                        || indexOf(yAxisModels, cartesian.getAxis('y').model) >= 0
+	                    ) {
+	                        cartesians.push(cartesian);
+	                    }
+	                });
+	                targetInfoList.push({
+	                    panelId: 'grid--' + gridModel.id,
+	                    gridModel: gridModel,
+	                    // Use the first one as the representitive coordSys.
+	                    coordSys: cartesians[0],
+	                    coordSyses: cartesians,
+	                    getPanelRect: panelRectBuilder.grid,
+	                    xAxisDeclared: xAxesHas[gridModel.id],
+	                    yAxisDeclared: yAxesHas[gridModel.id]
+	                });
+	            });
 	        },
 
-	        polygon: function (to, coordInfo, coordRange) {
-	            var coordSys = coordInfo.coordSys;
-	            return zrUtil.map(coordRange, coordSys[COORD_CONVERTS[to]], coordSys);
+	        geo: function (foundCpts, targetInfoList) {
+	            each(foundCpts.geoModels, function (geoModel) {
+	                var coordSys = geoModel.coordinateSystem;
+	                targetInfoList.push({
+	                    panelId: 'geo--' + geoModel.id,
+	                    geoModel: geoModel,
+	                    coordSys: coordSys,
+	                    coordSyses: [coordSys],
+	                    getPanelRect: panelRectBuilder.geo
+	                });
+	            });
 	        }
 	    };
 
-	    module.exports = helper;
+	    var targetInfoMatchers = [
 
+	        // grid
+	        function (foundCpts, targetInfo) {
+	            var xAxisModel = foundCpts.xAxisModel;
+	            var yAxisModel = foundCpts.yAxisModel;
+	            var gridModel = foundCpts.gridModel;
+
+	            !gridModel && xAxisModel && (gridModel = xAxisModel.axis.grid.model);
+	            !gridModel && yAxisModel && (gridModel = yAxisModel.axis.grid.model);
+
+	            return gridModel && gridModel === targetInfo.gridModel;
+	        },
+
+	        // geo
+	        function (foundCpts, targetInfo) {
+	            var geoModel = foundCpts.geoModel;
+	            return geoModel && geoModel === targetInfo.geoModel;
+	        }
+	    ];
+
+	    var panelRectBuilder = {
+
+	        grid: function () {
+	            // grid is not Transformable.
+	            return this.coordSys.grid.getRect().clone();
+	        },
+
+	        geo: function () {
+	            var coordSys = this.coordSys;
+	            var rect = coordSys.getBoundingRect().clone();
+	            // geo roam and zoom transform
+	            rect.applyTransform(graphic.getTransform(coordSys));
+	            return rect;
+	        }
+	    };
+
+	    var coordConvert = {
+
+	        lineX: curry(axisConvert, 0),
+
+	        lineY: curry(axisConvert, 1),
+
+	        rect: function (to, coordSys, rangeOrCoordRange) {
+	            var xminymin = coordSys[COORD_CONVERTS[to]]([rangeOrCoordRange[0][0], rangeOrCoordRange[1][0]]);
+	            var xmaxymax = coordSys[COORD_CONVERTS[to]]([rangeOrCoordRange[0][1], rangeOrCoordRange[1][1]]);
+	            var values = [
+	                formatMinMax([xminymin[0], xmaxymax[0]]),
+	                formatMinMax([xminymin[1], xmaxymax[1]])
+	            ];
+	            return {values: values, xyMinMax: values};
+	        },
+
+	        polygon: function (to, coordSys, rangeOrCoordRange) {
+	            var xyMinMax = [[Infinity, -Infinity], [Infinity, -Infinity]];
+	            var values = zrUtil.map(rangeOrCoordRange, function (item) {
+	                var p = coordSys[COORD_CONVERTS[to]](item);
+	                xyMinMax[0][0] = Math.min(xyMinMax[0][0], p[0]);
+	                xyMinMax[1][0] = Math.min(xyMinMax[1][0], p[1]);
+	                xyMinMax[0][1] = Math.max(xyMinMax[0][1], p[0]);
+	                xyMinMax[1][1] = Math.max(xyMinMax[1][1], p[1]);
+	                return p;
+	            });
+	            return {values: values, xyMinMax: xyMinMax};
+	        }
+	    };
+
+	    function axisConvert(axisNameIndex, to, coordSys, rangeOrCoordRange) {
+	        if (true) {
+	            zrUtil.assert(
+	                coordSys.type === 'cartesian2d',
+	                'lineX/lineY brush is available only in cartesian2d.'
+	            );
+	        }
+
+	        var axis = coordSys.getAxis(['x', 'y'][axisNameIndex]);
+	        var values = formatMinMax(zrUtil.map([0, 1], function (i) {
+	            return to
+	                ? axis.coordToData(axis.toLocalCoord(rangeOrCoordRange[i]))
+	                : axis.toGlobalCoord(axis.dataToCoord(rangeOrCoordRange[i]));
+	        }));
+	        var xyMinMax = [];
+	        xyMinMax[axisNameIndex] = values;
+	        xyMinMax[1 - axisNameIndex] = [NaN, NaN];
+
+	        return {values: values, xyMinMax: xyMinMax};
+	    }
+
+	    var diffProcessor = {
+	        lineX: curry(axisDiffProcessor, 0),
+
+	        lineY: curry(axisDiffProcessor, 1),
+
+	        rect: function (values, refer, scales) {
+	            return [
+	                [values[0][0] - scales[0] * refer[0][0], values[0][1] - scales[0] * refer[0][1]],
+	                [values[1][0] - scales[1] * refer[1][0], values[1][1] - scales[1] * refer[1][1]]
+	            ];
+	        },
+
+	        polygon: function (values, refer, scales) {
+	            return zrUtil.map(values, function (item, idx) {
+	                return [item[0] - scales[0] * refer[idx][0], item[1] - scales[1] * refer[idx][1]];
+	            });
+	        }
+	    };
+
+	    function axisDiffProcessor(axisNameIndex, values, refer, scales) {
+	        return [
+	            values[0] - scales[axisNameIndex] * refer[0],
+	            values[1] - scales[axisNameIndex] * refer[1]
+	        ];
+	    }
+
+	    // We have to process scale caused by dataZoom manually,
+	    // although it might be not accurate.
+	    function getScales(xyMinMaxCurr, xyMinMaxOrigin) {
+	        var sizeCurr = getSize(xyMinMaxCurr);
+	        var sizeOrigin = getSize(xyMinMaxOrigin);
+	        var scales = [sizeCurr[0] / sizeOrigin[0], sizeCurr[1] / sizeOrigin[1]];
+	        isNaN(scales[0]) && (scales[0] = 1);
+	        isNaN(scales[1]) && (scales[1] = 1);
+	        return scales;
+	    }
+
+	    function getSize(xyMinMax) {
+	        return xyMinMax
+	            ? [xyMinMax[0][1] - xyMinMax[0][0], xyMinMax[1][1] - xyMinMax[1][0]]
+	            : [NaN, NaN];
+	    }
+
+	    module.exports = BrushTargetManager;
 
 
 /***/ },
-/* 323 */
+/* 340 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -56301,7 +59311,7 @@
 
 	    var echarts = __webpack_require__(1);
 	    var zrUtil = __webpack_require__(4);
-	    var visualSolution = __webpack_require__(320);
+	    var visualSolution = __webpack_require__(337);
 	    var Model = __webpack_require__(12);
 
 	    var DEFAULT_OUT_OF_BRUSH_COLOR = ['#ddd'];
@@ -56407,7 +59417,7 @@
 	            }
 
 	            this.areas = zrUtil.map(areas, function (area) {
-	                return this._mergeBrushOption(area);
+	                return generateBrushOption(this.option, area);
 	            }, this);
 	        },
 
@@ -56416,44 +59426,39 @@
 	         * @param {Object} brushOption
 	         */
 	        setBrushOption: function (brushOption) {
-	            this.brushOption = this._mergeBrushOption(brushOption);
+	            this.brushOption = generateBrushOption(this.option, brushOption);
 	            this.brushType = this.brushOption.brushType;
-	        },
-
-	        /**
-	         * @private
-	         */
-	        _mergeBrushOption: function (brushOption) {
-	            var option = this.option;
-	            return zrUtil.merge(
-	                {
-	                    brushType: option.brushType,
-	                    brushMode: option.brushMode,
-	                    transformable: option.transformable,
-	                    brushStyle: new Model(option.brushStyle).getItemStyle(),
-	                    removeOnClick: option.removeOnClick
-	                },
-	                brushOption,
-	                true
-	            );
 	        }
 
 	    });
 
+	    function generateBrushOption(option, brushOption) {
+	        return zrUtil.merge(
+	            {
+	                brushType: option.brushType,
+	                brushMode: option.brushMode,
+	                transformable: option.transformable,
+	                brushStyle: new Model(option.brushStyle).getItemStyle(),
+	                removeOnClick: option.removeOnClick
+	            },
+	            brushOption,
+	            true
+	        );
+	    }
+
 	    module.exports = BrushModel;
 
 
 
 /***/ },
-/* 324 */
+/* 341 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    var zrUtil = __webpack_require__(4);
-	    var BrushController = __webpack_require__(236);
+	    var BrushController = __webpack_require__(250);
 	    var echarts = __webpack_require__(1);
-	    var brushHelper = __webpack_require__(322);
 
 	    module.exports = echarts.extendComponentView({
 
@@ -56524,7 +59529,7 @@
 	        _onBrush: function (areas, opt) {
 	            var modelId = this.model.id;
 
-	            brushHelper.parseOutputRanges(areas, this.model.coordInfoList, this.ecModel);
+	            this.model.brushTargetManager.setOutputRanges(areas, this.ecModel);
 
 	            // Action is not dispatched on drag end, because the drag end
 	            // emits the same params with the last drag move event, and
@@ -56543,7 +59548,7 @@
 	    function updateController(brushModel, ecModel, api, payload) {
 	        // Do not update controller when drawing.
 	        (!payload || payload.$from !== brushModel.id) && this._brushController
-	            .setPanels(brushHelper.makePanelOpts(brushModel.coordInfoList))
+	            .setPanels(brushModel.brushTargetManager.makePanelOpts())
 	            .enableBrush(brushModel.brushOption)
 	            .updateCovers(brushModel.areas.slice());
 	    }
@@ -56551,7 +59556,7 @@
 
 
 /***/ },
-/* 325 */
+/* 342 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -56606,13 +59611,13 @@
 
 
 /***/ },
-/* 326 */
+/* 343 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
 
 
-	    var featureManager = __webpack_require__(327);
+	    var featureManager = __webpack_require__(344);
 	    var zrUtil = __webpack_require__(4);
 
 	    function Brush(model, ecModel, api) {
@@ -56731,7 +59736,7 @@
 
 
 /***/ },
-/* 327 */
+/* 344 */
 /***/ function(module, exports) {
 
 	'use strict';
@@ -56751,14 +59756,1117 @@
 
 
 /***/ },
-/* 328 */
+/* 345 */
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+	/**
+	 * @file calendar.js
+	 * @author dxh
+	 */
+
+
+
+	    __webpack_require__(346);
+	    __webpack_require__(347);
+	    __webpack_require__(348);
+
+
+
+
+/***/ },
+/* 346 */
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+
+	    var layout = __webpack_require__(21);
+	    var numberUtil = __webpack_require__(7);
+	    var zrUtil = __webpack_require__(4);
+
+	    // (24*60*60*1000)
+	    var ONE_DAY = 86400000;
+
+	    /**
+	     * Calendar
+	     *
+	     * @constructor
+	     *
+	     * @param {Object} calendarModel calendarModel
+	     * @param {Object} ecModel       ecModel
+	     * @param {Object} api           api
+	     */
+	    function Calendar(calendarModel, ecModel, api) {
+	        this._model = calendarModel;
+	    }
+
+	    Calendar.prototype = {
+
+	        constructor: Calendar,
+
+	        type: 'calendar',
+
+	        dimensions: ['time', 'value'],
+
+	        // Required in createListFromData
+	        getDimensionsInfo: function () {
+	            return [{name: 'time', type: 'time'}];
+	        },
+
+	        getHandledRangeInfo: 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
+	         *
+	         * @example
+	         *     0 : start at Sunday
+	         *     1 : start at Monday
+	         *
+	         * @return {number}
+	         */
+	        getFirstDayOfWeek: function () {
+	            return this._firstDayOfWeek;
+	        },
+
+	        /**
+	         * get date info
+	         *
+	         * @param  {string|number} date date
+	         * @return {Object}      info
+	         */
+	        getDateInfo: function (date) {
+
+	            date = numberUtil.parseDate(date);
+
+	            var y = date.getFullYear();
+
+	            var m = date.getMonth() + 1;
+	            m = m < 10 ? '0' + m : m;
+
+	            var d = date.getDate();
+	            d = d < 10 ? '0' + d : d;
+
+	            var day = date.getDay();
+
+	            day = Math.abs((day + 7 - this.getFirstDayOfWeek()) % 7);
+
+	            return {
+	                y: y,
+	                m: m,
+	                d: d,
+	                day: day,
+	                time: date.getTime(),
+	                formatedDate: y + '-' + m + '-' + d,
+	                date: date
+	            };
+	        },
+
+	        getNextNDay: function (date, n) {
+	            n = n || 0;
+	            if (n === 0) {
+	                return this.getDateInfo(date);
+	            }
+
+	            var time = this.getDateInfo(date).time;
+
+	            return this.getDateInfo(time + ONE_DAY * n);
+	        },
+
+	        update: function (ecModel, api) {
+
+	            this._firstDayOfWeek = this._model.getModel('dayLabel').get('firstDay');
+	            this._orient = this._model.get('orient');
+	            this._lineWidth = this._model.getModel('itemStyle.normal').getItemStyle().lineWidth || 0;
+
+
+	            this._rangeInfo = this._getRangeInfo(this._initRangeOption());
+	            var weeks = this._rangeInfo.weeks || 1;
+	            var whNames = ['width', 'height'];
+	            var cellSize = this._model.get('cellSize').slice();
+	            var layoutParams = this._model.getBoxLayoutParams();
+	            var cellNumbers = this._orient === 'horizontal' ? [weeks, 7] : [7, weeks];
+
+	            zrUtil.each([0, 1], function (idx) {
+	                if (cellSizeSpecified(cellSize, idx)) {
+	                    layoutParams[whNames[idx]] = cellSize[idx] * cellNumbers[idx];
+	                }
+	            });
+
+	            var whGlobal = {
+	                width: api.getWidth(),
+	                height: api.getHeight()
+	            };
+	            var calendarRect = this._rect = layout.getLayoutRect(layoutParams, whGlobal);
+
+	            zrUtil.each([0, 1], function (idx) {
+	                if (!cellSizeSpecified(cellSize, idx)) {
+	                    cellSize[idx] = calendarRect[whNames[idx]] / cellNumbers[idx];
+	                }
+	            });
+
+	            function cellSizeSpecified(cellSize, idx) {
+	                return cellSize[idx] != null && cellSize[idx] !== 'auto';
+	            }
+
+	            this._sw = cellSize[0];
+	            this._sh = cellSize[1];
+	        },
+
+
+	        /**
+	         * Convert a time data(time, value) item to (x, y) point.
+	         *
+	         * @override
+	         * @param  {Array} data  data
+	         * @param  {boolean} noClip  out of range
+	         * @return {Array}       point
+	         */
+	        dataToPoint: function (data, noClip) {
+
+	            var dayInfo = this.getDateInfo(data[0]);
+	            var range = this._rangeInfo;
+	            var date = dayInfo.formatedDate;
+
+	            // if not in range return [NaN, NaN]
+	            if (!noClip && !(dayInfo.time >= range.start.time && dayInfo.time <= range.end.time)) {
+	                return [NaN, NaN];
+	            }
+
+	            var week = dayInfo.day;
+	            var nthWeek = this._getRangeInfo([range.start.time, date]).weeks;
+
+	            if (this._orient === 'vertical') {
+	                return [
+	                    this._rect.x + week * this._sw + this._sw / 2,
+	                    this._rect.y + (nthWeek - 1) * this._sh + this._sh / 2
+	                ];
+
+	            }
+
+	            return [
+	                this._rect.x + (nthWeek - 1) * this._sw + this._sw / 2,
+	                this._rect.y + week * this._sh + this._sh / 2
+	            ];
+
+	        },
+
+	        /**
+	         * Convert a (x, y) point to time data
+	         *
+	         * @override
+	         * @param  {string} point point
+	         * @return {string}       data
+	         */
+	        pointToData: function (point) {
+
+	            var date = this.pointToDate(point);
+
+	            return date && date.time;
+	        },
+
+	        /**
+	         * Convert a time date item to (x, y) four point.
+	         *
+	         * @param  {Array} data  date[0] is date
+	         * @param  {boolean} noClip  out of range
+	         * @return {Object}       point
+	         */
+	        dataToRect: function (data, noClip) {
+
+	            var point = this.dataToPoint(data, noClip);
+
+	            return {
+	                contentShape: {
+	                    x: point[0] - (this._sw - this._lineWidth) / 2,
+	                    y: point[1] - (this._sh - this._lineWidth) / 2,
+	                    width: this._sw - this._lineWidth,
+	                    height: this._sh - this._lineWidth
+	                },
+
+	                center: point,
+
+	                tl: [
+	                    point[0] - this._sw / 2,
+	                    point[1] - this._sh / 2
+	                ],
+
+	                tr: [
+	                    point[0] + this._sw / 2,
+	                    point[1] - this._sh / 2
+	                ],
+
+	                br: [
+	                    point[0] + this._sw / 2,
+	                    point[1] + this._sh / 2
+	                ],
+
+	                bl: [
+	                    point[0] - this._sw / 2,
+	                    point[1] + this._sh / 2
+	                ]
+
+	            };
+	        },
+
+	        /**
+	         * Convert a (x, y) point to time date
+	         *
+	         * @param  {string} point point
+	         * @return {Object}       date
+	         */
+	        pointToDate: function (point) {
+	            var nthX = Math.floor((point[0] - this._rect.x) / this._sw) + 1;
+	            var nthY = Math.floor((point[1] - this._rect.y) / this._sh) + 1;
+	            var range = this._rangeInfo.range;
+
+	            if (this._orient === 'vertical') {
+	                return this._getDateByWeeksAndDay(nthY, nthX - 1, range);
+	            }
+
+	            return this._getDateByWeeksAndDay(nthX, nthY - 1, range);
+	        },
+
+	        /**
+	         * @override
+	         * @implements
+	         * see {module:echarts/CoodinateSystem}
+	         */
+	        convertToPixel: zrUtil.curry(doConvert, 'dataToPoint'),
+
+	        /**
+	         * @override
+	         * @implements
+	         * see {module:echarts/CoodinateSystem}
+	         */
+	        convertFromPixel: zrUtil.curry(doConvert, 'pointToData'),
+
+	        /**
+	         * initRange
+	         *
+	         * @private
+	         * @return {Array} [start, end]
+	         */
+	        _initRangeOption: function () {
+	            var range = this._model.get('range');
+
+	            var rg = range;
+
+	            if (zrUtil.isArray(rg) && rg.length === 1) {
+	                rg = rg[0];
+	            }
+
+	            if (/^\d{4}$/.test(rg)) {
+	                range = [rg + '-01-01', rg + '-12-31'];
+	            }
+
+	            if (/^\d{4}[\/|-]\d{1,2}$/.test(rg)) {
+
+	                var start = this.getDateInfo(rg);
+	                var firstDay = start.date;
+	                firstDay.setMonth(firstDay.getMonth() + 1);
+
+	                var end = this.getNextNDay(firstDay, -1);
+	                range = [start.formatedDate, end.formatedDate];
+	            }
+
+	            if (/^\d{4}[\/|-]\d{1,2}[\/|-]\d{1,2}$/.test(rg)) {
+	                range = [rg, rg];
+	            }
+
+	            var tmp = this._getRangeInfo(range);
+
+	            if (tmp.start.time > tmp.end.time) {
+	                range.reverse();
+	            }
+
+	            return range;
+	        },
+
+	        /**
+	         * range info
+	         *
+	         * @private
+	         * @param  {Array} range range ['2017-01-01', '2017-07-08']
+	         * @return {Object}       obj
+	         */
+	        _getRangeInfo: function (range) {
+
+	            var start = this.getDateInfo(range[0]);
+	            var end = this.getDateInfo(range[1]);
+
+	            var allDay = Math.floor(end.time / ONE_DAY) - Math.floor(start.time / ONE_DAY) + 1;
+
+	            var weeks = Math.floor((allDay + start.day + 6) / 7);
+
+	            return {
+	                range: [start.formatedDate, end.formatedDate],
+	                start: start,
+	                end: end,
+	                allDay: allDay,
+	                weeks: weeks,
+	                fweek: start.day,
+	                lweek: end.day
+	            };
+	        },
+
+	        /**
+	         * get date by nthWeeks and week day in range
+	         *
+	         * @private
+	         * @param  {number} nthWeek the week
+	         * @param  {number} day   the week day
+	         * @param  {Array} range [d1, d2]
+	         * @return {Object}
+	         */
+	        _getDateByWeeksAndDay: function (nthWeek, day, range) {
+	            var rangeInfo = this._getRangeInfo(range);
+
+	            if (nthWeek > rangeInfo.weeks
+	                || (nthWeek === 0 && day < rangeInfo.fweek)
+	                || (nthWeek === rangeInfo.weeks && day > rangeInfo.lweek)
+	            ) {
+	                return false;
+	            }
+
+	            var nthDay = (nthWeek - 1) * 7 - rangeInfo.fweek + day;
+
+	            var time = rangeInfo.start.time + nthDay * ONE_DAY;
+
+	            return this.getDateInfo(time);
+
+	        }
+	    };
+
+	    Calendar.dimensions =  Calendar.prototype.dimensions;
+
+	    Calendar.getDimensionsInfo =  Calendar.prototype.getDimensionsInfo;
+
+	    Calendar.create = function (ecModel, api) {
+	        var calendarList = [];
+
+	        ecModel.eachComponent('calendar', function (calendarModel) {
+	            var calendar = new Calendar(calendarModel, ecModel, api);
+	            calendarList.push(calendar);
+	            calendarModel.coordinateSystem = calendar;
+	        });
+
+	        ecModel.eachSeries(function (calendarSeries) {
+	            if (calendarSeries.get('coordinateSystem') === 'calendar') {
+	                // Inject coordinate system
+	                calendarSeries.coordinateSystem = calendarList[calendarSeries.get('calendarIndex') || 0];
+	            }
+	        });
+	        return calendarList;
+	    };
+
+	    function doConvert(methodName, ecModel, finder, value) {
+	        var calendarModel = finder.calendarModel;
+	        var seriesModel = finder.seriesModel;
+
+	        var coordSys = calendarModel
+	            ? calendarModel.coordinateSystem
+	            : seriesModel
+	            ? seriesModel.coordinateSystem
+	            : null;
+
+	        return coordSys === this ? coordSys[methodName](value) : null;
+	    }
+
+	    __webpack_require__(26).register('calendar', Calendar);
+
+	    module.exports = Calendar;
+
+
+
+/***/ },
+/* 347 */
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+
+	    var ComponentModel = __webpack_require__(19);
+	    var zrUtil = __webpack_require__(4);
+	    var layout = __webpack_require__(21);
+
+	    var CalendarModel = ComponentModel.extend({
+
+	        type: 'calendar',
+
+	        /**
+	         * @type {module:echarts/coord/calendar/Calendar}
+	         */
+	        coordinateSystem: null,
+
+	        defaultOption: {
+	            zlevel: 0,
+	            z: 2,
+	            left: 80,
+	            top: 60,
+
+	            cellSize: 20,
+
+	            // horizontal vertical
+	            orient: 'horizontal',
+
+	            // month separate line style
+	            splitLine: {
+	                show: true,
+	                lineStyle: {
+	                    color: '#000',
+	                    width: 1,
+	                    type: 'solid'
+	                }
+	            },
+
+	            // rect style  temporarily unused emphasis
+	            itemStyle: {
+	                normal: {
+	                    color: '#fff',
+	                    borderWidth: 1,
+	                    borderColor: '#ccc'
+	                }
+	            },
+
+	            // week text style
+	            dayLabel: {
+	                show: true,
+
+	                // a week first day
+	                firstDay: 0,
+
+	                // start end
+	                position: 'start',
+	                margin: '50%', // 50% of cellSize
+	                nameMap: 'en',
+	                textStyle: {
+	                    color: '#000'
+	                }
+	            },
+
+	            // month text style
+	            monthLabel: {
+	                show: true,
+
+	                // start end
+	                position: 'start',
+	                margin: 5,
+
+	                // center or left
+	                align: 'center',
+
+	                // cn en []
+	                nameMap: 'en',
+	                formatter: null,
+	                textStyle: {
+	                    color: '#000'
+	                }
+	            },
+
+	            // year text style
+	            yearLabel: {
+	                show: true,
+
+	                // top bottom left right
+	                position: null,
+	                margin: 30,
+	                formatter: null,
+	                textStyle: {
+	                    color: '#ccc',
+	                    fontFamily: 'sans-serif',
+	                    fontWeight: 'bolder',
+	                    fontSize: 20
+	                }
+	            }
+	        },
+
+	        /**
+	         * @override
+	         */
+	        init: function (option, parentModel, ecModel, extraOpt) {
+	            var inputPositionParams = layout.getLayoutParams(option);
+
+	            CalendarModel.superApply(this, 'init', arguments);
+
+	            mergeAndNormalizeLayoutParams(option, inputPositionParams);
+	        },
+
+	        /**
+	         * @override
+	         */
+	        mergeOption: function (option, extraOpt) {
+	            CalendarModel.superApply(this, 'mergeOption', arguments);
+
+	            mergeAndNormalizeLayoutParams(this.option, option);
+	        }
+	    });
+
+	    function mergeAndNormalizeLayoutParams(target, raw) {
+	        // Normalize cellSize
+	        var cellSize = target.cellSize;
+
+	        if (!zrUtil.isArray(cellSize)) {
+	            cellSize = target.cellSize = [cellSize, cellSize];
+	        }
+	        else if (cellSize.length === 1) {
+	            cellSize[1] = cellSize[0];
+	        }
+
+	        var ignoreSize = zrUtil.map([0, 1], function (hvIdx) {
+	            // If user have set `width` or both `left` and `right`, cellSize
+	            // will be automatically set to 'auto', otherwise the default
+	            // setting of cellSize will make `width` setting not work.
+	            if (layout.sizeCalculable(raw, hvIdx)) {
+	                cellSize[hvIdx] = 'auto';
+	            }
+	            return cellSize[hvIdx] != null && cellSize[hvIdx] !== 'auto';
+	        });
+
+	        layout.mergeLayoutParam(target, raw, {
+	            type: 'box', ignoreSize: ignoreSize
+	        });
+	    }
+
+	    module.exports = CalendarModel;
+
+
+
+
+/***/ },
+/* 348 */
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+
+	    var zrUtil = __webpack_require__(4);
+	    var graphic = __webpack_require__(44);
+	    var formatUtil = __webpack_require__(6);
+	    var numberUtil = __webpack_require__(7);
+
+	    var MONTH_TEXT = {
+	        EN: [
+	                'Jan', 'Feb', 'Mar',
+	                'Apr', 'May', 'Jun',
+	                'Jul', 'Aug', 'Sep',
+	                'Oct', 'Nov', 'Dec'
+	            ],
+	        CN: [
+	                '一月', '二月', '三月',
+	                '四月', '五月', '六月',
+	                '七月', '八月', '九月',
+	                '十月', '十一月', '十二月'
+	            ]
+	    };
+
+	    var WEEK_TEXT = {
+	        EN: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],
+	        CN: ['日', '一', '二', '三', '四', '五', '六']
+	    };
+
+	    module.exports = __webpack_require__(1).extendComponentView({
+
+	        type: 'calendar',
+
+	        /**
+	         * top/left line points
+	         *  @private
+	         */
+	        _tlpoints: null,
+
+	        /**
+	         * bottom/right line points
+	         *  @private
+	         */
+	        _blpoints: null,
+
+	        /**
+	         * first day of month
+	         *  @private
+	         */
+	        _firstDayOfMonth: null,
+
+	        /**
+	         * first day point of month
+	         *  @private
+	         */
+	        _firstDayPoints: null,
+
+	        render: function (calendarModel, ecModel, api) {
+
+	            var group = this.group;
+
+	            group.removeAll();
+
+	            var coordSys = calendarModel.coordinateSystem;
+
+	            // range info
+	            var rangeData = coordSys.getHandledRangeInfo();
+	            var orient = coordSys.getOrient();
+
+	            this._renderDayRect(calendarModel, rangeData, group);
+
+	            // _renderLines must be called prior to following function
+	            this._renderLines(calendarModel, rangeData, orient, group);
+
+	            this._renderYearText(calendarModel, rangeData, orient, group);
+
+	            this._renderMonthText(calendarModel, orient, group);
+
+	            this._renderWeekText(calendarModel, rangeData, orient, group);
+	        },
+
+	        // render day rect
+	        _renderDayRect: function (calendarModel, rangeData, group) {
+	            var coordSys = calendarModel.coordinateSystem;
+	            var itemRectStyleModel = calendarModel.getModel('itemStyle.normal').getItemStyle();
+	            var sw = coordSys.getCellWidth();
+	            var sh = coordSys.getCellHeight();
+
+	            for (var i = rangeData.start.time;
+	                i <= rangeData.end.time;
+	                i = coordSys.getNextNDay(i, 1).time
+	            ) {
+
+	                var point = coordSys.dataToRect([i], true).tl;
+
+	                // every rect
+	                var rect = new graphic.Rect({
+	                    shape: {
+	                        x: point[0],
+	                        y: point[1],
+	                        width: sw,
+	                        height: sh
+	                    },
+	                    style: itemRectStyleModel
+	                });
+
+	                group.add(rect);
+	            }
+
+	        },
+
+	        // render separate line
+	        _renderLines: function (calendarModel, rangeData, orient, group) {
+
+	            var self = this;
+
+	            var coordSys = calendarModel.coordinateSystem;
+
+	            var lineStyleModel = calendarModel.getModel('splitLine.lineStyle').getLineStyle();
+	            var show = calendarModel.get('splitLine.show');
+
+	            var lineWidth = lineStyleModel.lineWidth;
+
+	            this._tlpoints = [];
+	            this._blpoints = [];
+	            this._firstDayOfMonth = [];
+	            this._firstDayPoints = [];
+
+
+	            var firstDay = rangeData.start;
+
+	            for (var i = 0; firstDay.time <= rangeData.end.time; i++) {
+	                addPoints(firstDay.formatedDate);
+
+	                if (i === 0) {
+	                    firstDay = coordSys.getDateInfo(rangeData.start.y + '-' + rangeData.start.m);
+	                }
+
+	                var date = firstDay.date;
+	                date.setMonth(date.getMonth() + 1);
+	                firstDay = coordSys.getDateInfo(date);
+	            }
+
+	            addPoints(coordSys.getNextNDay(rangeData.end.time, 1).formatedDate);
+
+	            function addPoints(date) {
+
+	                self._firstDayOfMonth.push(coordSys.getDateInfo(date));
+	                self._firstDayPoints.push(coordSys.dataToRect([date], true).tl);
+
+	                var points = self._getLinePointsOfOneWeek(calendarModel, date, orient);
+
+	                self._tlpoints.push(points[0]);
+	                self._blpoints.push(points[points.length - 1]);
+
+	                show && self._drawSplitline(points, lineStyleModel, group);
+	            }
+
+
+	            // render top/left line
+	            show && this._drawSplitline(self._getEdgesPoints(self._tlpoints, lineWidth, orient), lineStyleModel, group);
+
+	            // render bottom/right line
+	            show && this._drawSplitline(self._getEdgesPoints(self._blpoints, lineWidth, orient), lineStyleModel, group);
+
+	        },
+
+	        // get points at both ends
+	        _getEdgesPoints: function (points, lineWidth, orient) {
+	            var rs = [points[0].slice(), points[points.length - 1].slice()];
+	            var idx = orient === 'horizontal' ? 0 : 1;
+
+	            // both ends of the line are extend half lineWidth
+	            rs[0][idx] = rs[0][idx] - lineWidth / 2;
+	            rs[1][idx] = rs[1][idx] + lineWidth / 2;
+
+	            return rs;
+	        },
+
+	        // render split line
+	        _drawSplitline: function (points, lineStyleModel, group) {
+
+	            var poyline = new graphic.Polyline({
+	                z2: 20,
+	                shape: {
+	                    points: points
+	                },
+	                style: lineStyleModel
+	            });
+
+	            group.add(poyline);
+	        },
+
+	        // render month line of one week points
+	        _getLinePointsOfOneWeek: function (calendarModel, date, orient) {
+
+	            var coordSys = calendarModel.coordinateSystem;
+	            date = coordSys.getDateInfo(date);
+
+	            var points = [];
+
+	            for (var i = 0; i < 7; i++) {
+
+	                var tmpD = coordSys.getNextNDay(date.time, i);
+	                var point = coordSys.dataToRect([tmpD.time], true);
+
+	                points[2 * tmpD.day] = point.tl;
+	                points[2 * tmpD.day + 1] = point[orient === 'horizontal' ? 'bl' : 'tr'];
+	            }
+
+	            return points;
+
+	        },
+
+	        _formatterLabel: function (formatter, params) {
+
+	            if (typeof formatter === 'string' && formatter) {
+	                return formatUtil.formatTplSimple(formatter, params);
+	            }
+
+	            if (typeof formatter === 'function') {
+	                return formatter(params);
+	            }
+
+	            return params.nameMap;
+
+	        },
+
+	        _yearTextPositionControl: function (point, orient, position, margin) {
+
+	            point = point.slice();
+	            var aligns = ['center', 'bottom'];
+
+	            if (position === 'top') {
+	                point[1] -= margin;
+	            }
+	            if (position === 'bottom') {
+	                point[1] += margin;
+	                aligns = ['center', 'top'];
+	            }
+	            if (position === 'left') {
+	                point[0] -= margin;
+	            }
+	            if (position === 'right') {
+	                point[0] += margin;
+	                aligns = ['center', 'top'];
+	            }
+
+	            var rotate = 0;
+	            if (position === 'left' || position === 'right') {
+	                rotate = Math.PI / 2;
+	            }
+
+	            return {
+	                rotation: rotate,
+	                origin: point,
+	                style: {
+	                    x: point[0],
+	                    y: point[1],
+	                    textAlign: aligns[0],
+	                    textVerticalAlign: aligns[1]
+	                }
+	            };
+	        },
+
+	        // render year
+	        _renderYearText: function (calendarModel, rangeData, orient, group) {
+	            var yearLabel = calendarModel.getModel('yearLabel');
+
+	            if (!yearLabel.get('show')) {
+	                return;
+	            }
+
+	            var yearLabelStyleModel = calendarModel.getModel('yearLabel.textStyle');
+	            var margin = yearLabel.get('margin');
+	            var pos = yearLabel.get('position');
+
+	            if (!pos) {
+	                pos = orient !== 'horizontal' ? 'top' : 'left';
+	            }
+
+	            var points = [this._tlpoints[this._tlpoints.length - 1], this._blpoints[0]];
+	            var xc = (points[0][0] + points[1][0]) / 2;
+	            var yc = (points[0][1] + points[1][1]) / 2;
+
+	            var idx = orient === 'horizontal' ? 0 : 1;
+
+
+	            var posPoints = {
+	                top: [xc, points[idx][1]],
+	                bottom: [xc, points[1 - idx][1]],
+	                left: [points[1 - idx][0], yc],
+	                right: [points[idx][0], yc]
+	            };
+
+	            var name = rangeData.start.y;
+
+	            if (+rangeData.end.y > +rangeData.start.y) {
+	                name = name + '-' + rangeData.end.y;
+	            }
+
+	            var formatter = yearLabel.get('formatter');
+
+	            var params = {
+	                start: rangeData.start.y,
+	                end: rangeData.end.y,
+	                nameMap: name
+	            };
+
+	            var content = this._formatterLabel(formatter, params);
+
+	            var yearText = new graphic.Text(
+	                zrUtil.merge({
+	                    z2: 30,
+	                    style: {
+	                        text: content,
+	                        font: yearLabelStyleModel.getFont(),
+	                        fill: yearLabelStyleModel.getTextColor()
+	                    }
+	                }, this._yearTextPositionControl(posPoints[pos], orient, pos, margin))
+	            );
+
+	            group.add(yearText);
+	        },
+
+	        _monthTextPositionControl: function (point, isCenter, orient, position, margin) {
+	            var align = 'left';
+	            var vAlign = 'top';
+	            var x = point[0];
+	            var y = point[1];
+
+	            if (orient === 'horizontal') {
+	                y = y + margin;
+
+	                if (isCenter) {
+	                    align = 'center';
+	                }
+
+	                if (position === 'start') {
+	                    vAlign = 'bottom';
+	                }
+	            }
+	            else {
+	                x = x + margin;
+
+	                if (isCenter) {
+	                    vAlign = 'middle';
+	                }
+
+	                if (position === 'start') {
+	                    align = 'right';
+	                }
+	            }
+
+	            return {
+	                x: x,
+	                y: y,
+	                textAlign: align,
+	                textVerticalAlign: vAlign
+	            };
+	        },
+
+	        // render month and year text
+	        _renderMonthText: function (calendarModel, orient, group) {
+	            var monthLabel = calendarModel.getModel('monthLabel');
+
+	            if (!monthLabel.get('show')) {
+	                return;
+	            }
+
+	            var monthLabelStyleModel = calendarModel.getModel('monthLabel.textStyle');
+	            var nameMap = monthLabel.get('nameMap');
+	            var margin = monthLabel.get('margin');
+	            var pos = monthLabel.get('position');
+	            var align = monthLabel.get('align');
+
+	            var termPoints = [this._tlpoints, this._blpoints];
+
+	            if (zrUtil.isString(nameMap)) {
+	                nameMap = MONTH_TEXT[nameMap.toUpperCase()] || [];
+	            }
+
+	            var idx = pos === 'start' ? 0 : 1;
+	            var axis = orient === 'horizontal' ? 0 : 1;
+	            margin = pos === 'start' ? -margin : margin;
+	            var isCenter = (align === 'center');
+
+	            for (var i = 0; i < termPoints[idx].length - 1; i++) {
+
+	                var tmp = termPoints[idx][i].slice();
+	                var firstDay = this._firstDayOfMonth[i];
+
+	                if (isCenter) {
+	                    var firstDayPoints = this._firstDayPoints[i];
+	                    tmp[axis] = (firstDayPoints[axis] + termPoints[0][i + 1][axis]) / 2;
+	                }
+
+	                var formatter = monthLabel.get('formatter');
+	                var name = nameMap[+firstDay.m - 1];
+	                var params = {
+	                    yyyy: firstDay.y,
+	                    yy: (firstDay.y + '').slice(2),
+	                    MM: firstDay.m,
+	                    M: +firstDay.m,
+	                    nameMap: name
+	                };
+
+	                var content = this._formatterLabel(formatter, params);
+
+	                var monthText = new graphic.Text({
+	                    z2: 30,
+	                    style: zrUtil.extend({
+	                        text: content,
+	                        font: monthLabelStyleModel.getFont(),
+	                        fill: monthLabelStyleModel.getTextColor()
+	                    }, this._monthTextPositionControl(tmp, isCenter, orient, pos, margin))
+	                });
+
+	                group.add(monthText);
+	            }
+	        },
+
+	        _weekTextPositionControl: function (point, orient, position, margin, cellSize) {
+	            var align = 'center';
+	            var vAlign = 'middle';
+	            var x = point[0];
+	            var y = point[1];
+	            var isStart = position === 'start';
+
+	            if (orient === 'horizontal') {
+	                x = x + margin + (isStart ? 1 : -1) * cellSize[0] / 2;
+	                align = isStart ? 'right' : 'left';
+	            }
+	            else {
+	                y = y + margin + (isStart ? 1 : -1) * cellSize[1] / 2;
+	                vAlign = isStart ? 'bottom' : 'top';
+	            }
+
+	            return {
+	                x: x,
+	                y: y,
+	                textAlign: align,
+	                textVerticalAlign: vAlign
+	            };
+	        },
+
+	        // render weeks
+	        _renderWeekText: function (calendarModel, rangeData, orient, group) {
+	            var dayLabel = calendarModel.getModel('dayLabel');
+
+	            if (!dayLabel.get('show')) {
+	                return;
+	            }
+
+	            var coordSys = calendarModel.coordinateSystem;
+	            var dayLabelStyleModel = calendarModel.getModel('dayLabel.textStyle');
+	            var pos = dayLabel.get('position');
+	            var nameMap = dayLabel.get('nameMap');
+	            var margin = dayLabel.get('margin');
+	            var firstDayOfWeek = coordSys.getFirstDayOfWeek();
+
+	            if (zrUtil.isString(nameMap)) {
+	                nameMap = WEEK_TEXT[nameMap.toUpperCase()] || [];
+	            }
+
+	            var start = coordSys.getNextNDay(
+	                rangeData.end.time, (7 - rangeData.lweek)
+	            ).time;
+
+	            var cellSize = [coordSys.getCellWidth(), coordSys.getCellHeight()];
+	            margin = numberUtil.parsePercent(margin, cellSize[orient === 'horizontal' ? 0 : 1]);
+
+	            if (pos === 'start') {
+	                start = coordSys.getNextNDay(
+	                    rangeData.start.time, -(7 + rangeData.fweek)
+	                ).time;
+	                margin = -margin;
+	            }
+
+	            for (var i = 0; i < 7; i++) {
+
+	                var tmpD = coordSys.getNextNDay(start, i);
+	                var point = coordSys.dataToRect([tmpD.time], true).center;
+	                var day = i;
+	                day = Math.abs((i + firstDayOfWeek) % 7);
+	                var weekText = new graphic.Text({
+	                    z2: 30,
+	                    style: zrUtil.extend({
+	                        text: nameMap[day],
+	                        font: dayLabelStyleModel.getFont(),
+	                        fill: dayLabelStyleModel.getTextColor()
+	                    }, this._weekTextPositionControl(point, orient, pos, margin, cellSize))
+	                });
+	                group.add(weekText);
+	            }
+	        }
+	    });
+
+
+
+/***/ },
+/* 349 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
 
 
 	    var echarts = __webpack_require__(1);
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 	    var layout = __webpack_require__(21);
 
 	    // Model
@@ -56965,7 +61073,7 @@
 
 
 /***/ },
-/* 329 */
+/* 350 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -56973,24 +61081,24 @@
 	 */
 
 
-	    __webpack_require__(330);
+	    __webpack_require__(351);
 
-	    __webpack_require__(331);
-	    __webpack_require__(334);
+	    __webpack_require__(352);
+	    __webpack_require__(355);
 
-	    __webpack_require__(335);
-	    __webpack_require__(336);
+	    __webpack_require__(356);
+	    __webpack_require__(357);
 
-	    __webpack_require__(338);
-	    __webpack_require__(339);
+	    __webpack_require__(359);
+	    __webpack_require__(360);
 
-	    __webpack_require__(341);
-	    __webpack_require__(342);
+	    __webpack_require__(362);
+	    __webpack_require__(363);
 
 
 
 /***/ },
-/* 330 */
+/* 351 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -57003,7 +61111,7 @@
 
 
 /***/ },
-/* 331 */
+/* 352 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -57015,8 +61123,8 @@
 	    var env = __webpack_require__(2);
 	    var echarts = __webpack_require__(1);
 	    var modelUtil = __webpack_require__(5);
-	    var helper = __webpack_require__(332);
-	    var AxisProxy = __webpack_require__(333);
+	    var helper = __webpack_require__(353);
+	    var AxisProxy = __webpack_require__(354);
 	    var each = zrUtil.each;
 	    var eachAxisDim = helper.eachAxisDim;
 
@@ -57091,6 +61199,12 @@
 	             */
 	            this._autoThrottle = true;
 
+	            /**
+	             * 'percent' or 'value'
+	             * @private
+	             */
+	            this._rangePropMode = ['percent', 'percent'];
+
 	            var rawOption = retrieveRaw(option);
 
 	            this.mergeDefaultAndTheme(option, ecModel);
@@ -57123,8 +61237,17 @@
 
 	            this._setDefaultThrottle(rawOption);
 
-	            processRangeProp('start', 'startValue', rawOption, thisOption);
-	            processRangeProp('end', 'endValue', rawOption, thisOption);
+	            updateRangeUse(this, rawOption);
+
+	            each([['start', 'startValue'], ['end', 'endValue']], function (names, index) {
+	                // start/end has higher priority over startValue/endValue if they
+	                // both set, but we should make chart.setOption({endValue: 1000})
+	                // effective, rather than chart.setOption({endValue: 1000, end: null}).
+	                if (this._rangePropMode[index] === 'value') {
+	                    thisOption[names[0]] = null;
+	                }
+	                // Otherwise do nothing and use the merge result.
+	            }, this);
 
 	            this.textStyleModel = this.getModel('textStyle');
 
@@ -57388,11 +61511,26 @@
 	            }, this);
 	        },
 
+	        /**
+	         * @param {string} dimName
+	         * @param {number} axisIndex
+	         * @return {module:echarts/component/dataZoom/AxisProxy} If not found, return null/undefined.
+	         */
 	        getAxisProxy: function (dimName, axisIndex) {
 	            return this._axisProxies[dimName + '_' + axisIndex];
 	        },
 
 	        /**
+	         * @param {string} dimName
+	         * @param {number} axisIndex
+	         * @return {module:echarts/model/Model} If not found, return null/undefined.
+	         */
+	        getAxisModel: function (dimName, axisIndex) {
+	            var axisProxy = this.getAxisProxy(dimName, axisIndex);
+	            return axisProxy && axisProxy.getAxisModel();
+	        },
+
+	        /**
 	         * If not specified, set to undefined.
 	         *
 	         * @public
@@ -57401,14 +61539,17 @@
 	         * @param {number} [opt.end]
 	         * @param {number} [opt.startValue]
 	         * @param {number} [opt.endValue]
+	         * @param {boolean} [ignoreUpdateRangeUsg=false]
 	         */
-	        setRawRange: function (opt) {
+	        setRawRange: function (opt, ignoreUpdateRangeUsg) {
 	            each(['start', 'end', 'startValue', 'endValue'], function (name) {
 	                // If any of those prop is null/undefined, we should alos set
 	                // them, because only one pair between start/end and
 	                // startValue/endValue can work.
 	                this.option[name] = opt[name];
 	            }, this);
+
+	            !ignoreUpdateRangeUsg && updateRangeUse(this, opt);
 	        },
 
 	        /**
@@ -57465,8 +61606,14 @@
 	                    return axisProxies[key];
 	                }
 	            }
-	        }
+	        },
 
+	        /**
+	         * @return {Array.<string>}
+	         */
+	        getRangePropMode: function () {
+	            return this._rangePropMode.slice();
+	        }
 	    });
 
 	    function retrieveRaw(option) {
@@ -57480,14 +61627,17 @@
 	        return ret;
 	    }
 
-	    function processRangeProp(percentProp, valueProp, rawOption, thisOption) {
-	        // start/end has higher priority over startValue/endValue,
-	        // but we should make chart.setOption({endValue: 1000}) effective,
-	        // rather than chart.setOption({endValue: 1000, end: null}).
-	        if (rawOption[valueProp] != null && rawOption[percentProp] == null) {
-	            thisOption[percentProp] = null;
-	        }
-	        // Otherwise do nothing and use the merge result.
+	    function updateRangeUse(dataZoomModel, rawOption) {
+	        each([['start', 'startValue'], ['end', 'endValue']], function (names, index) {
+	            var rangePropMode = dataZoomModel._rangePropMode;
+	            if (rawOption[names[0]] != null) {
+	                rangePropMode[index] = 'percent';
+	            }
+	            else if (rawOption[names[1]] != null) {
+	                rangePropMode[index] = 'value';
+	            }
+	            // else remain its original setting.
+	        });
 	    }
 
 	    module.exports = DataZoomModel;
@@ -57495,7 +61645,7 @@
 
 
 /***/ },
-/* 332 */
+/* 353 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -57633,7 +61783,7 @@
 
 
 /***/ },
-/* 333 */
+/* 354 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -57643,7 +61793,7 @@
 
 	    var zrUtil = __webpack_require__(4);
 	    var numberUtil = __webpack_require__(7);
-	    var helper = __webpack_require__(332);
+	    var helper = __webpack_require__(353);
 	    var each = zrUtil.each;
 	    var asc = numberUtil.asc;
 
@@ -57798,6 +61948,7 @@
 	            var dataExtent = this._dataExtent;
 	            var axisModel = this.getAxisModel();
 	            var scale = axisModel.axis.scale;
+	            var rangePropMode = this._dataZoomModel.getRangePropMode();
 	            var percentExtent = [0, 100];
 	            var percentWindow = [
 	                opt.start,
@@ -57805,12 +61956,6 @@
 	            ];
 	            var valueWindow = [];
 
-	            // In percent range is used and axis min/max/scale is set,
-	            // window should be based on min/max/0, but should not be
-	            // based on the extent of filtered data.
-	            dataExtent = dataExtent.slice();
-	            fixExtentByAxis(dataExtent, axisModel);
-
 	            each(['startValue', 'endValue'], function (prop) {
 	                valueWindow.push(opt[prop] != null ? scale.parse(opt[prop]) : null);
 	            });
@@ -57820,11 +61965,19 @@
 	                var boundValue = valueWindow[idx];
 	                var boundPercent = percentWindow[idx];
 
-	                // start/end has higher priority over startValue/endValue,
-	                // because start/end can be consistent among different type
-	                // of axis but startValue/endValue not.
+	                // Notice: dataZoom is based either on `percentProp` ('start', 'end') or
+	                // on `valueProp` ('startValue', 'endValue'). The former one is suitable
+	                // for cases that a dataZoom component controls multiple axes with different
+	                // unit or extent, and the latter one is suitable for accurate zoom by pixel
+	                // (e.g., in dataZoomSelect). `valueProp` can be calculated from `percentProp`,
+	                // but it is awkward that `percentProp` can not be obtained from `valueProp`
+	                // accurately (because all of values that are overflow the `dataExtent` will
+	                // be calculated to percent '100%'). So we have to use
+	                // `dataZoom.getRangePropMode()` to mark which prop is used.
+	                // `rangePropMode` is updated only when setOption or dispatchAction, otherwise
+	                // it remains its original value.
 
-	                if (boundPercent != null || boundValue == null) {
+	                if (rangePropMode[idx] === 'percent') {
 	                    if (boundPercent == null) {
 	                        boundPercent = percentExtent[idx];
 	                    }
@@ -57833,11 +61986,15 @@
 	                        boundPercent, percentExtent, dataExtent, true
 	                    ));
 	                }
-	                else { // boundPercent == null && boundValue != null
+	                else {
+	                    // Calculating `percent` from `value` may be not accurate, because
+	                    // This calculation can not be inversed, because all of values that
+	                    // are overflow the `dataExtent` will be calculated to percent '100%'
 	                    boundPercent = numberUtil.linearMap(
 	                        boundValue, dataExtent, percentExtent, true
 	                    );
 	                }
+
 	                // valueWindow[idx] = round(boundValue);
 	                // percentWindow[idx] = round(boundPercent);
 	                valueWindow[idx] = boundValue;
@@ -57864,9 +62021,11 @@
 
 	            // Culculate data window and data extent, and record them.
 	            this._dataExtent = calculateDataExtent(
-	                this._dimName, this.getTargetSeriesModels()
+	                this, this._dimName, this.getTargetSeriesModels()
 	            );
+
 	            var dataWindow = this.calculateDataWindow(dataZoomModel.option);
+
 	            this._valueWindow = dataWindow.valueWindow;
 	            this._percentWindow = dataWindow.percentWindow;
 
@@ -57939,7 +62098,7 @@
 	        }
 	    };
 
-	    function calculateDataExtent(axisDim, seriesModels) {
+	    function calculateDataExtent(axisProxy, axisDim, seriesModels) {
 	        var dataExtent = [Infinity, -Infinity];
 
 	        each(seriesModels, function (seriesModel) {
@@ -57951,30 +62110,60 @@
 	                    seriesExtent[1] > dataExtent[1] && (dataExtent[1] = seriesExtent[1]);
 	                });
 	            }
-	        }, this);
+	        });
 
 	        if (dataExtent[1] < dataExtent[0]) {
 	            dataExtent = [NaN, NaN];
 	        }
 
+	        // It is important to get "consistent" extent when more then one axes is
+	        // controlled by a `dataZoom`, otherwise those axes will not be synchronized
+	        // when zooming. But it is difficult to know what is "consistent", considering
+	        // axes have different type or even different meanings (For example, two
+	        // time axes are used to compare data of the same date in different years).
+	        // So basically dataZoom just obtains extent by series.data (in category axis
+	        // extent can be obtained from axis.data).
+	        // Nevertheless, user can set min/max/scale on axes to make extent of axes
+	        // consistent.
+	        fixExtentByAxis(axisProxy, dataExtent);
+
 	        return dataExtent;
 	    }
 
-	    function fixExtentByAxis(dataExtent, axisModel) {
+	    function fixExtentByAxis(axisProxy, dataExtent) {
+	        var axisModel = axisProxy.getAxisModel();
 	        var min = axisModel.getMin(true);
+
+	        // For category axis, if min/max/scale are not set, extent is determined
+	        // by axis.data by default.
+	        var isCategoryAxis = axisModel.get('type') === 'category';
+	        var axisDataLen = isCategoryAxis && (axisModel.get('data') || []).length;
+
 	        if (min != null && min !== 'dataMin') {
 	            dataExtent[0] = min;
 	        }
+	        else if (isCategoryAxis) {
+	            dataExtent[0] = axisDataLen > 0 ? 0 : NaN;
+	        }
+
 	        var max = axisModel.getMax(true);
 	        if (max != null && max !== 'dataMax') {
 	            dataExtent[1] = max;
 	        }
+	        else if (isCategoryAxis) {
+	            dataExtent[1] = axisDataLen > 0 ? axisDataLen - 1 : NaN;
+	        }
 
 	        if (!axisModel.get('scale', true)) {
 	            dataExtent[0] > 0 && (dataExtent[0] = 0);
 	            dataExtent[1] < 0 && (dataExtent[1] = 0);
 	        }
 
+	        // For value axis, if min/max/scale are not set, we just use the extent obtained
+	        // by series data, which may be a little different from the extent calculated by
+	        // `axisHelper.getScaleExtent`. But the different just affects the experience a
+	        // little when zooming. So it will not be fixed until some users require it strongly.
+
 	        return dataExtent;
 	    }
 
@@ -58004,7 +62193,7 @@
 
 
 /***/ },
-/* 334 */
+/* 355 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -58081,7 +62270,7 @@
 
 
 /***/ },
-/* 335 */
+/* 356 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -58089,7 +62278,7 @@
 	 */
 
 
-	    var DataZoomModel = __webpack_require__(331);
+	    var DataZoomModel = __webpack_require__(352);
 
 	    var SliderZoomModel = DataZoomModel.extend({
 
@@ -58160,20 +62349,22 @@
 
 
 /***/ },
-/* 336 */
+/* 357 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    var zrUtil = __webpack_require__(4);
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 	    var throttle = __webpack_require__(81);
-	    var DataZoomView = __webpack_require__(334);
+	    var DataZoomView = __webpack_require__(355);
 	    var Rect = graphic.Rect;
 	    var numberUtil = __webpack_require__(7);
 	    var linearMap = numberUtil.linearMap;
 	    var layout = __webpack_require__(21);
-	    var sliderMove = __webpack_require__(337);
+	    var sliderMove = __webpack_require__(358);
+	    var eventTool = __webpack_require__(88);
+
 	    var asc = numberUtil.asc;
 	    var bind = zrUtil.bind;
 	    // var mathMax = Math.max;
@@ -58580,6 +62771,10 @@
 	                draggable: true,
 	                cursor: 'move',
 	                drift: bind(this._onDragMove, this, 'all'),
+	                onmousemove: function (e) {
+	                    // Fot mobile devicem, prevent screen slider on the button.
+	                    eventTool.stop(e.event);
+	                },
 	                ondragstart: bind(this._showDataInfo, this, true),
 	                ondragend: bind(this._onDragEnd, this),
 	                onmouseover: bind(this._showDataInfo, this, true),
@@ -58617,6 +62812,10 @@
 	                    cursor: this._orient === 'vertical' ? 'ns-resize' : 'ew-resize',
 	                    draggable: true,
 	                    drift: bind(this._onDragMove, this, handleIndex),
+	                    onmousemove: function (e) {
+	                        // Fot mobile devicem, prevent screen slider on the button.
+	                        eventTool.stop(e.event);
+	                    },
 	                    ondragend: bind(this._onDragEnd, this),
 	                    onmouseover: bind(this._showDataInfo, this, true),
 	                    onmouseout: bind(this._showDataInfo, this, false)
@@ -58920,7 +63119,7 @@
 
 
 /***/ },
-/* 337 */
+/* 358 */
 /***/ function(module, exports) {
 
 	
@@ -58979,7 +63178,7 @@
 
 
 /***/ },
-/* 338 */
+/* 359 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -58987,7 +63186,7 @@
 	 */
 
 
-	    module.exports = __webpack_require__(331).extend({
+	    module.exports = __webpack_require__(352).extend({
 
 	        type: 'dataZoom.inside',
 
@@ -59002,15 +63201,15 @@
 
 
 /***/ },
-/* 339 */
+/* 360 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var DataZoomView = __webpack_require__(334);
+	    var DataZoomView = __webpack_require__(355);
 	    var zrUtil = __webpack_require__(4);
-	    var sliderMove = __webpack_require__(337);
-	    var roams = __webpack_require__(340);
+	    var sliderMove = __webpack_require__(358);
+	    var roams = __webpack_require__(361);
 	    var bind = zrUtil.bind;
 
 	    var InsideZoomView = DataZoomView.extend({
@@ -59238,7 +63437,7 @@
 
 
 /***/ },
-/* 340 */
+/* 361 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -59253,7 +63452,7 @@
 	    // components.
 
 	    var zrUtil = __webpack_require__(4);
-	    var RoamController = __webpack_require__(177);
+	    var RoamController = __webpack_require__(191);
 	    var throttle = __webpack_require__(81);
 	    var curry = zrUtil.curry;
 
@@ -59433,7 +63632,7 @@
 
 
 /***/ },
-/* 341 */
+/* 362 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -59480,7 +63679,7 @@
 	                end: percentRange[1],
 	                startValue: valueRange[0],
 	                endValue: valueRange[1]
-	            });
+	            }, true);
 	        });
 	    });
 
@@ -59496,7 +63695,7 @@
 
 
 /***/ },
-/* 342 */
+/* 363 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -59505,7 +63704,7 @@
 
 
 	    var zrUtil = __webpack_require__(4);
-	    var helper = __webpack_require__(332);
+	    var helper = __webpack_require__(353);
 	    var echarts = __webpack_require__(1);
 
 
@@ -59544,7 +63743,7 @@
 
 
 /***/ },
-/* 343 */
+/* 364 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -59552,13 +63751,13 @@
 	 */
 
 
-	    __webpack_require__(344);
-	    __webpack_require__(355);
+	    __webpack_require__(365);
+	    __webpack_require__(376);
 
 
 
 /***/ },
-/* 344 */
+/* 365 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -59567,19 +63766,19 @@
 
 
 	    __webpack_require__(1).registerPreprocessor(
-	        __webpack_require__(345)
+	        __webpack_require__(366)
 	    );
 
-	    __webpack_require__(346);
-	    __webpack_require__(347);
-	    __webpack_require__(348);
-	    __webpack_require__(351);
-	    __webpack_require__(354);
+	    __webpack_require__(367);
+	    __webpack_require__(368);
+	    __webpack_require__(369);
+	    __webpack_require__(372);
+	    __webpack_require__(375);
 
 
 
 /***/ },
-/* 345 */
+/* 366 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -59631,7 +63830,7 @@
 
 
 /***/ },
-/* 346 */
+/* 367 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -59655,7 +63854,7 @@
 
 
 /***/ },
-/* 347 */
+/* 368 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -59664,8 +63863,8 @@
 
 
 	    var echarts = __webpack_require__(1);
-	    var visualSolution = __webpack_require__(320);
-	    var VisualMapping = __webpack_require__(195);
+	    var visualSolution = __webpack_require__(337);
+	    var VisualMapping = __webpack_require__(209);
 	    var zrUtil = __webpack_require__(4);
 
 	    echarts.registerVisual(echarts.PRIORITY.VISUAL.COMPONENT, function (ecModel) {
@@ -59745,7 +63944,7 @@
 
 
 /***/ },
-/* 348 */
+/* 369 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -59753,7 +63952,7 @@
 	 */
 
 
-	    var VisualMapModel = __webpack_require__(349);
+	    var VisualMapModel = __webpack_require__(370);
 	    var zrUtil = __webpack_require__(4);
 	    var numberUtil = __webpack_require__(7);
 
@@ -59999,7 +64198,7 @@
 
 
 /***/ },
-/* 349 */
+/* 370 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -60010,9 +64209,9 @@
 	    var echarts = __webpack_require__(1);
 	    var zrUtil = __webpack_require__(4);
 	    var env = __webpack_require__(2);
-	    var visualDefault = __webpack_require__(350);
-	    var VisualMapping = __webpack_require__(195);
-	    var visualSolution = __webpack_require__(320);
+	    var visualDefault = __webpack_require__(371);
+	    var VisualMapping = __webpack_require__(209);
+	    var visualSolution = __webpack_require__(337);
 	    var mapVisual = VisualMapping.mapVisual;
 	    var modelUtil = __webpack_require__(5);
 	    var eachVisual = VisualMapping.eachVisual;
@@ -60526,7 +64725,7 @@
 
 
 /***/ },
-/* 350 */
+/* 371 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -60602,19 +64801,20 @@
 
 
 /***/ },
-/* 351 */
+/* 372 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var VisualMapView = __webpack_require__(352);
-	    var graphic = __webpack_require__(43);
+	    var VisualMapView = __webpack_require__(373);
+	    var graphic = __webpack_require__(44);
 	    var zrUtil = __webpack_require__(4);
 	    var numberUtil = __webpack_require__(7);
-	    var sliderMove = __webpack_require__(337);
+	    var sliderMove = __webpack_require__(358);
 	    var LinearGradient = __webpack_require__(78);
-	    var helper = __webpack_require__(353);
+	    var helper = __webpack_require__(374);
 	    var modelUtil = __webpack_require__(5);
+	    var eventTool = __webpack_require__(88);
 
 	    var linearMap = numberUtil.linearMap;
 	    var each = zrUtil.each;
@@ -60837,6 +65037,10 @@
 	            var handleLabel = new graphic.Text({
 	                draggable: true,
 	                drift: onDrift,
+	                onmousemove: function (e) {
+	                    // Fot mobile devicem, prevent screen slider on the button.
+	                    eventTool.stop(e.event);
+	                },
 	                ondragend: onDragEnd,
 	                style: {
 	                    x: 0, y: 0, text: '',
@@ -61302,14 +65506,20 @@
 	         */
 	        _hoverLinkFromSeriesMouseOver: function (e) {
 	            var el = e.target;
+	            var visualMapModel = this.visualMapModel;
 
 	            if (!el || el.dataIndex == null) {
 	                return;
 	            }
 
-	            var dataModel = el.dataModel || this.ecModel.getSeriesByIndex(el.seriesIndex);
+	            var dataModel = this.ecModel.getSeriesByIndex(el.seriesIndex);
+
+	            if (!visualMapModel.isTargetSeries(dataModel)) {
+	                return;
+	            }
+
 	            var data = dataModel.getData(el.dataType);
-	            var dim = data.getDimension(this.visualMapModel.getDataDimension(data));
+	            var dim = data.getDimension(visualMapModel.getDataDimension(data));
 	            var value = data.get(dim, el.dataIndex, true);
 
 	            if (!isNaN(value)) {
@@ -61395,6 +65605,10 @@
 	            draggable: !!onDrift,
 	            cursor: cursor,
 	            drift: onDrift,
+	            onmousemove: function (e) {
+	                // Fot mobile devicem, prevent screen slider on the button.
+	                eventTool.stop(e.event);
+	            },
 	            ondragend: onDragEnd
 	        });
 	    }
@@ -61435,17 +65649,17 @@
 
 
 /***/ },
-/* 352 */
+/* 373 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    var zrUtil = __webpack_require__(4);
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 	    var formatUtil = __webpack_require__(6);
 	    var layout = __webpack_require__(21);
 	    var echarts = __webpack_require__(1);
-	    var VisualMapping = __webpack_require__(195);
+	    var VisualMapping = __webpack_require__(209);
 
 	    module.exports = echarts.extendComponentView({
 
@@ -61595,7 +65809,7 @@
 
 
 /***/ },
-/* 353 */
+/* 374 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -61667,7 +65881,7 @@
 
 
 /***/ },
-/* 354 */
+/* 375 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -61695,7 +65909,7 @@
 
 
 /***/ },
-/* 355 */
+/* 376 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -61704,27 +65918,27 @@
 
 
 	    __webpack_require__(1).registerPreprocessor(
-	        __webpack_require__(345)
+	        __webpack_require__(366)
 	    );
 
-	    __webpack_require__(346);
-	    __webpack_require__(347);
-	    __webpack_require__(356);
-	    __webpack_require__(357);
-	    __webpack_require__(354);
+	    __webpack_require__(367);
+	    __webpack_require__(368);
+	    __webpack_require__(377);
+	    __webpack_require__(378);
+	    __webpack_require__(375);
 
 
 
 /***/ },
-/* 356 */
+/* 377 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var VisualMapModel = __webpack_require__(349);
+	    var VisualMapModel = __webpack_require__(370);
 	    var zrUtil = __webpack_require__(4);
-	    var VisualMapping = __webpack_require__(195);
-	    var visualDefault = __webpack_require__(350);
+	    var VisualMapping = __webpack_require__(209);
+	    var visualDefault = __webpack_require__(371);
 	    var reformIntervals = __webpack_require__(7).reformIntervals;
 
 	    var PiecewiseModel = VisualMapModel.extend({
@@ -62249,17 +66463,17 @@
 
 
 /***/ },
-/* 357 */
+/* 378 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var VisualMapView = __webpack_require__(352);
+	    var VisualMapView = __webpack_require__(373);
 	    var zrUtil = __webpack_require__(4);
-	    var graphic = __webpack_require__(43);
-	    var symbolCreators = __webpack_require__(107);
+	    var graphic = __webpack_require__(44);
+	    var symbolCreators = __webpack_require__(104);
 	    var layout = __webpack_require__(21);
-	    var helper = __webpack_require__(353);
+	    var helper = __webpack_require__(374);
 
 	    var PiecewiseVisualMapView = VisualMapView.extend({
 
@@ -62477,14 +66691,14 @@
 
 
 /***/ },
-/* 358 */
+/* 379 */
 /***/ function(module, exports, __webpack_require__) {
 
 	// HINT Markpoint can't be used too much
 
 
-	    __webpack_require__(359);
-	    __webpack_require__(361);
+	    __webpack_require__(380);
+	    __webpack_require__(382);
 
 	    __webpack_require__(1).registerPreprocessor(function (opt) {
 	        // Make sure markPoint component is enabled
@@ -62493,12 +66707,12 @@
 
 
 /***/ },
-/* 359 */
+/* 380 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    module.exports = __webpack_require__(360).extend({
+	    module.exports = __webpack_require__(381).extend({
 
 	        type: 'markPoint',
 
@@ -62531,7 +66745,7 @@
 
 
 /***/ },
-/* 360 */
+/* 381 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -62669,18 +66883,18 @@
 
 
 /***/ },
-/* 361 */
+/* 382 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var SymbolDraw = __webpack_require__(105);
+	    var SymbolDraw = __webpack_require__(115);
 	    var zrUtil = __webpack_require__(4);
 	    var numberUtil = __webpack_require__(7);
 
 	    var List = __webpack_require__(98);
 
-	    var markerHelper = __webpack_require__(362);
+	    var markerHelper = __webpack_require__(383);
 
 	    function updateMarkerLayout(mpData, seriesModel, api) {
 	        var coordSys = seriesModel.coordinateSystem;
@@ -62718,7 +66932,7 @@
 	        });
 	    }
 
-	    __webpack_require__(363).extend({
+	    __webpack_require__(384).extend({
 
 	        type: 'markPoint',
 
@@ -62830,7 +67044,7 @@
 
 
 /***/ },
-/* 362 */
+/* 383 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -62868,7 +67082,7 @@
 	        var coordArr = [];
 	        var value = numCalculate(data, targetDataDim, mlType);
 
-	        var dataIndex = data.indexOfNearest(targetDataDim, value, true);
+	        var dataIndex = data.indexOfNearest(targetDataDim, value, true)[0];
 	        coordArr[otherCoordIndex] = data.get(otherDataDim, dataIndex, true);
 	        coordArr[targetCoordIndex] = data.get(targetDataDim, dataIndex, true);
 
@@ -63034,7 +67248,7 @@
 
 
 /***/ },
-/* 363 */
+/* 384 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -63078,13 +67292,13 @@
 
 
 /***/ },
-/* 364 */
+/* 385 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    __webpack_require__(365);
-	    __webpack_require__(366);
+	    __webpack_require__(386);
+	    __webpack_require__(387);
 
 	    __webpack_require__(1).registerPreprocessor(function (opt) {
 	        // Make sure markLine component is enabled
@@ -63093,12 +67307,12 @@
 
 
 /***/ },
-/* 365 */
+/* 386 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    module.exports = __webpack_require__(360).extend({
+	    module.exports = __webpack_require__(381).extend({
 
 	        type: 'markLine',
 
@@ -63138,7 +67352,7 @@
 
 
 /***/ },
-/* 366 */
+/* 387 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -63147,9 +67361,9 @@
 	    var List = __webpack_require__(98);
 	    var numberUtil = __webpack_require__(7);
 
-	    var markerHelper = __webpack_require__(362);
+	    var markerHelper = __webpack_require__(383);
 
-	    var LineDraw = __webpack_require__(202);
+	    var LineDraw = __webpack_require__(216);
 
 	    var markLineTransform = function (seriesModel, coordSys, mlModel, item) {
 	        var data = seriesModel.getData();
@@ -63319,7 +67533,7 @@
 	        data.setItemLayout(idx, point);
 	    }
 
-	    __webpack_require__(363).extend({
+	    __webpack_require__(384).extend({
 
 	        type: 'markLine',
 
@@ -63498,13 +67712,13 @@
 
 
 /***/ },
-/* 367 */
+/* 388 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    __webpack_require__(368);
-	    __webpack_require__(369);
+	    __webpack_require__(389);
+	    __webpack_require__(390);
 
 	    __webpack_require__(1).registerPreprocessor(function (opt) {
 	        // Make sure markArea component is enabled
@@ -63513,12 +67727,12 @@
 
 
 /***/ },
-/* 368 */
+/* 389 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    module.exports = __webpack_require__(360).extend({
+	    module.exports = __webpack_require__(381).extend({
 
 	        type: 'markArea',
 
@@ -63554,7 +67768,7 @@
 
 
 /***/ },
-/* 369 */
+/* 390 */
 /***/ function(module, exports, __webpack_require__) {
 
 	// TODO Better on polar
@@ -63563,10 +67777,10 @@
 	    var zrUtil = __webpack_require__(4);
 	    var List = __webpack_require__(98);
 	    var numberUtil = __webpack_require__(7);
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 	    var colorUtil = __webpack_require__(39);
 
-	    var markerHelper = __webpack_require__(362);
+	    var markerHelper = __webpack_require__(383);
 
 	    var markAreaTransform = function (seriesModel, coordSys, maModel, item) {
 	        var lt = markerHelper.dataTransform(seriesModel, item[0]);
@@ -63686,7 +67900,7 @@
 
 	    var dimPermutations = [['x0', 'y0'], ['x1', 'y0'], ['x1', 'y1'], ['x0', 'y1']];
 
-	    __webpack_require__(363).extend({
+	    __webpack_require__(384).extend({
 
 	        type: 'markArea',
 
@@ -63876,7 +68090,7 @@
 
 
 /***/ },
-/* 370 */
+/* 391 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -63886,17 +68100,17 @@
 
 	    var echarts = __webpack_require__(1);
 
-	    echarts.registerPreprocessor(__webpack_require__(371));
+	    echarts.registerPreprocessor(__webpack_require__(392));
 
-	    __webpack_require__(372);
-	    __webpack_require__(373);
-	    __webpack_require__(374);
-	    __webpack_require__(376);
+	    __webpack_require__(393);
+	    __webpack_require__(394);
+	    __webpack_require__(395);
+	    __webpack_require__(397);
 
 
 
 /***/ },
-/* 371 */
+/* 392 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -63987,7 +68201,7 @@
 
 
 /***/ },
-/* 372 */
+/* 393 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -64000,7 +68214,7 @@
 
 
 /***/ },
-/* 373 */
+/* 394 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -64050,7 +68264,7 @@
 
 
 /***/ },
-/* 374 */
+/* 395 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -64058,7 +68272,7 @@
 	 */
 
 
-	    var TimelineModel = __webpack_require__(375);
+	    var TimelineModel = __webpack_require__(396);
 	    var zrUtil = __webpack_require__(4);
 	    var modelUtil = __webpack_require__(5);
 
@@ -64166,7 +68380,7 @@
 
 
 /***/ },
-/* 375 */
+/* 396 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -64368,7 +68582,7 @@
 
 
 /***/ },
-/* 376 */
+/* 397 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -64377,12 +68591,12 @@
 
 
 	    var zrUtil = __webpack_require__(4);
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 	    var layout = __webpack_require__(21);
-	    var TimelineView = __webpack_require__(377);
-	    var TimelineAxis = __webpack_require__(378);
-	    var symbolUtil = __webpack_require__(107);
-	    var axisHelper = __webpack_require__(115);
+	    var TimelineView = __webpack_require__(398);
+	    var TimelineAxis = __webpack_require__(399);
+	    var symbolUtil = __webpack_require__(104);
+	    var axisHelper = __webpack_require__(105);
 	    var BoundingRect = __webpack_require__(9);
 	    var matrix = __webpack_require__(11);
 	    var numberUtil = __webpack_require__(7);
@@ -65086,7 +69300,7 @@
 
 
 /***/ },
-/* 377 */
+/* 398 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -65106,14 +69320,14 @@
 
 
 /***/ },
-/* 378 */
+/* 399 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    var zrUtil = __webpack_require__(4);
-	    var Axis = __webpack_require__(124);
-	    var axisHelper = __webpack_require__(115);
+	    var Axis = __webpack_require__(100);
+	    var axisHelper = __webpack_require__(105);
 
 	    /**
 	     * Extend axis 2d
@@ -65207,28 +69421,28 @@
 
 
 /***/ },
-/* 379 */
+/* 400 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    __webpack_require__(380);
-	    __webpack_require__(381);
+	    __webpack_require__(401);
+	    __webpack_require__(402);
 
-	    __webpack_require__(382);
-	    __webpack_require__(383);
-	    __webpack_require__(384);
-	    __webpack_require__(385);
-	    __webpack_require__(390);
+	    __webpack_require__(403);
+	    __webpack_require__(404);
+	    __webpack_require__(405);
+	    __webpack_require__(406);
+	    __webpack_require__(411);
 
 
 /***/ },
-/* 380 */
+/* 401 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var featureManager = __webpack_require__(327);
+	    var featureManager = __webpack_require__(344);
 	    var zrUtil = __webpack_require__(4);
 
 	    var ToolboxModel = __webpack_require__(1).extendComponentModel({
@@ -65299,17 +69513,17 @@
 
 
 /***/ },
-/* 381 */
+/* 402 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/* WEBPACK VAR INJECTION */(function(process) {
 
-	    var featureManager = __webpack_require__(327);
+	    var featureManager = __webpack_require__(344);
 	    var zrUtil = __webpack_require__(4);
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 	    var Model = __webpack_require__(12);
 	    var DataDiffer = __webpack_require__(99);
-	    var listComponentHelper = __webpack_require__(297);
+	    var listComponentHelper = __webpack_require__(313);
 	    var textContain = __webpack_require__(8);
 
 	    module.exports = __webpack_require__(1).extendComponentView({
@@ -65551,10 +69765,10 @@
 	    }
 
 
-	/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(289)))
+	/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(305)))
 
 /***/ },
-/* 382 */
+/* 403 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -65618,7 +69832,7 @@
 	        }
 	    };
 
-	    __webpack_require__(327).register(
+	    __webpack_require__(344).register(
 	        'saveAsImage', SaveAsImage
 	    );
 
@@ -65626,7 +69840,7 @@
 
 
 /***/ },
-/* 383 */
+/* 404 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -65800,13 +70014,13 @@
 	        ecModel.mergeOption(payload.newOption);
 	    });
 
-	    __webpack_require__(327).register('magicType', MagicType);
+	    __webpack_require__(344).register('magicType', MagicType);
 
 	    module.exports = MagicType;
 
 
 /***/ },
-/* 384 */
+/* 405 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -66117,7 +70331,7 @@
 
 	        var viewMain = document.createElement('div');
 	        var textarea = document.createElement('textarea');
-	        viewMain.style.cssText = 'display:block;width:100%;overflow:hidden;';
+	        viewMain.style.cssText = 'display:block;width:100%;overflow:auto;';
 
 	        var optionToContent = model.get('optionToContent');
 	        var contentToOption = model.get('contentToOption');
@@ -66253,7 +70467,7 @@
 	        });
 	    }
 
-	    __webpack_require__(327).register('dataView', DataView);
+	    __webpack_require__(344).register('dataView', DataView);
 
 	    __webpack_require__(1).registerAction({
 	        type: 'changeDataView',
@@ -66289,21 +70503,21 @@
 
 
 /***/ },
-/* 385 */
+/* 406 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
 
 
 	    var zrUtil = __webpack_require__(4);
-	    var BrushController = __webpack_require__(236);
-	    var brushHelper = __webpack_require__(322);
-	    var history = __webpack_require__(386);
+	    var BrushController = __webpack_require__(250);
+	    var BrushTargetManager = __webpack_require__(339);
+	    var history = __webpack_require__(407);
 
 	    var each = zrUtil.each;
 
 	    // Use dataZoomSelect
-	    __webpack_require__(387);
+	    __webpack_require__(408);
 
 	    // Spectial component id start with \0ec\0, see echarts/model/Global.js~hasInnerId
 	    var DATA_ZOOM_ID_BASE = '\0_ec_\0toolbox-dataZoom_';
@@ -66393,57 +70607,44 @@
 
 	        this._brushController.updateCovers([]); // remove cover
 
-	        var coordInfoList = brushHelper.makeCoordInfoList(
-	            retrieveAxisSetting(this.model.option), ecModel
+	        var brushTargetManager = new BrushTargetManager(
+	            retrieveAxisSetting(this.model.option), ecModel, {include: ['grid']}
 	        );
-	        var rangesCoordInfoList = [];
-	        brushHelper.parseOutputRanges(areas, coordInfoList, ecModel, rangesCoordInfoList);
+	        brushTargetManager.matchOutputRanges(areas, ecModel, function (area, coordRange, coordSys) {
+	            if (coordSys.type !== 'cartesian2d') {
+	                return;
+	            }
 
-	        var area = areas[0]; // dataZoom can not multiple area.
-	        var coordInfo = rangesCoordInfoList[0];
-	        var coordRange = area.coordRange;
-	        var brushType = area.brushType;
-
-	        if (coordInfo && coordRange) {
+	            var brushType = area.brushType;
 	            if (brushType === 'rect') {
-	                setBatch('xAxis', coordRange[0], coordInfo);
-	                setBatch('yAxis', coordRange[1], coordInfo);
+	                setBatch('x', coordSys, coordRange[0]);
+	                setBatch('y', coordSys, coordRange[1]);
 	            }
 	            else {
-	                var axisNames = {lineX: 'xAxis', lineY: 'yAxis'};
-	                setBatch(axisNames[brushType], coordRange, coordInfo);
+	                setBatch(({lineX: 'x', lineY: 'y'})[brushType], coordSys, coordRange);
 	            }
-	        }
+	        });
 
 	        history.push(ecModel, snapshot);
 
 	        this._dispatchZoomAction(snapshot);
 
-	        function setBatch(axisName, minMax, coordInfo) {
-	            var dataZoomModel = findDataZoom(axisName, coordInfo[axisName], ecModel);
-	            if (dataZoomModel) {
-	                snapshot[dataZoomModel.id] = {
-	                    dataZoomId: dataZoomModel.id,
-	                    startValue: minMax[0],
-	                    endValue: minMax[1]
-	                };
-	            }
+	        function setBatch(dimName, coordSys, minMax) {
+	            var dataZoomModel = findDataZoom(dimName, coordSys.getAxis(dimName).model, ecModel);
+	            dataZoomModel && (snapshot[dataZoomModel.id] = {
+	                dataZoomId: dataZoomModel.id,
+	                startValue: minMax[0],
+	                endValue: minMax[1]
+	            });
 	        }
 
-	        function findDataZoom(axisName, axisModel, ecModel) {
-	            var dataZoomModel;
-	            ecModel.eachComponent(
-	                {mainType: 'dataZoom', subType: 'select'},
-	                function (dzModel, dataZoomIndex) {
-	                    var axisIndex = dzModel.get(axisName + 'Index');
-	                    if (axisIndex != null
-	                        && ecModel.getComponent(axisName, axisIndex) === axisModel
-	                    ) {
-	                        dataZoomModel = dzModel;
-	                    }
-	                }
-	            );
-	            return dataZoomModel;
+	        function findDataZoom(dimName, axisModel, ecModel) {
+	            var found;
+	            ecModel.eachComponent({mainType: 'dataZoom', subType: 'select'}, function (dzModel) {
+	                var has = dzModel.getAxisModel(dimName, axisModel.componentIndex);
+	                has && (found = dzModel);
+	            });
+	            return found;
 	        }
 	    };
 
@@ -66495,24 +70696,25 @@
 
 	        featureModel.setIconStatus('zoom', zoomActive ? 'emphasis' : 'normal');
 
-	        var coordInfoList = brushHelper.makeCoordInfoList(
-	            retrieveAxisSetting(featureModel.option), ecModel
+	        var brushTargetManager = new BrushTargetManager(
+	            retrieveAxisSetting(featureModel.option), ecModel, {include: ['grid']}
 	        );
-	        var brushType = (coordInfoList.xAxisHas && !coordInfoList.yAxisHas)
-	            ? 'lineX'
-	            : (!coordInfoList.xAxisHas && coordInfoList.yAxisHas)
-	            ? 'lineY'
-	            : 'rect';
 
 	        view._brushController
-	            .setPanels(brushHelper.makePanelOpts(coordInfoList))
+	            .setPanels(brushTargetManager.makePanelOpts(function (targetInfo) {
+	                return (targetInfo.xAxisDeclared && !targetInfo.yAxisDeclared)
+	                    ? 'lineX'
+	                    : (!targetInfo.xAxisDeclared && targetInfo.yAxisDeclared)
+	                    ? 'lineY'
+	                    : 'rect';
+	            }))
 	            .enableBrush(
 	                zoomActive
 	                ? {
-	                    brushType: brushType,
-	                    brushStyle: { // FIXME user customized?
+	                    brushType: 'auto',
+	                    brushStyle: {
+	                        // FIXME user customized?
 	                        lineWidth: 0,
-	                        // stroke: '#333',
 	                        fill: 'rgba(0,0,0,0.2)'
 	                    }
 	                }
@@ -66521,7 +70723,7 @@
 	    }
 
 
-	    __webpack_require__(327).register('dataZoom', DataZoom);
+	    __webpack_require__(344).register('dataZoom', DataZoom);
 
 
 	    // Create special dataZoom option for select
@@ -66597,7 +70799,7 @@
 
 
 /***/ },
-/* 386 */
+/* 407 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -66711,7 +70913,7 @@
 
 
 /***/ },
-/* 387 */
+/* 408 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -66719,21 +70921,21 @@
 	 */
 
 
-	    __webpack_require__(330);
+	    __webpack_require__(351);
 
-	    __webpack_require__(331);
-	    __webpack_require__(334);
+	    __webpack_require__(352);
+	    __webpack_require__(355);
 
-	    __webpack_require__(388);
-	    __webpack_require__(389);
+	    __webpack_require__(409);
+	    __webpack_require__(410);
 
-	    __webpack_require__(341);
-	    __webpack_require__(342);
+	    __webpack_require__(362);
+	    __webpack_require__(363);
 
 
 
 /***/ },
-/* 388 */
+/* 409 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -66741,7 +70943,7 @@
 	 */
 
 
-	    var DataZoomModel = __webpack_require__(331);
+	    var DataZoomModel = __webpack_require__(352);
 
 	    module.exports = DataZoomModel.extend({
 
@@ -66752,12 +70954,12 @@
 
 
 /***/ },
-/* 389 */
+/* 410 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    module.exports = __webpack_require__(334).extend({
+	    module.exports = __webpack_require__(355).extend({
 
 	        type: 'dataZoom.select'
 
@@ -66766,13 +70968,13 @@
 
 
 /***/ },
-/* 390 */
+/* 411 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
 
 
-	    var history = __webpack_require__(386);
+	    var history = __webpack_require__(407);
 
 	    function Restore(model) {
 	        this.model = model;
@@ -66796,7 +70998,7 @@
 	    };
 
 
-	    __webpack_require__(327).register('restore', Restore);
+	    __webpack_require__(344).register('restore', Restore);
 
 
 	    __webpack_require__(1).registerAction(
@@ -66810,16 +71012,16 @@
 
 
 /***/ },
-/* 391 */
+/* 412 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
-	    __webpack_require__(392);
-	    __webpack_require__(82).registerPainter('vml', __webpack_require__(394));
+	    __webpack_require__(413);
+	    __webpack_require__(82).registerPainter('vml', __webpack_require__(415));
 
 
 /***/ },
-/* 392 */
+/* 413 */
 /***/ function(module, exports, __webpack_require__) {
 
 	// http://www.w3.org/TR/NOTE-VML
@@ -66829,18 +71031,18 @@
 	if (!__webpack_require__(2).canvasSupported) {
 	    var vec2 = __webpack_require__(10);
 	    var BoundingRect = __webpack_require__(9);
-	    var CMD = __webpack_require__(49).CMD;
+	    var CMD = __webpack_require__(50).CMD;
 	    var colorTool = __webpack_require__(39);
 	    var textContain = __webpack_require__(8);
-	    var RectText = __webpack_require__(48);
-	    var Displayable = __webpack_require__(46);
-	    var ZImage = __webpack_require__(61);
+	    var RectText = __webpack_require__(49);
+	    var Displayable = __webpack_require__(47);
+	    var ZImage = __webpack_require__(62);
 	    var Text = __webpack_require__(63);
-	    var Path = __webpack_require__(45);
+	    var Path = __webpack_require__(46);
 
 	    var Gradient = __webpack_require__(79);
 
-	    var vmlCore = __webpack_require__(393);
+	    var vmlCore = __webpack_require__(414);
 
 	    var round = Math.round;
 	    var sqrt = Math.sqrt;
@@ -67879,7 +72081,7 @@
 
 
 /***/ },
-/* 393 */
+/* 414 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -67932,7 +72134,7 @@
 
 
 /***/ },
-/* 394 */
+/* 415 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -67943,8 +72145,8 @@
 
 
 
-	    var zrLog = __webpack_require__(40);
-	    var vmlCore = __webpack_require__(393);
+	    var zrLog = __webpack_require__(41);
+	    var vmlCore = __webpack_require__(414);
 
 	    function parseInt10(val) {
 	        return parseInt(val, 10);
@@ -68118,7 +72320,7 @@
 	    }
 
 	    var notSupportedMethods = [
-	        'getLayer', 'insertLayer', 'eachLayer', 'eachBuildinLayer', 'eachOtherLayer', 'getLayers',
+	        'getLayer', 'insertLayer', 'eachLayer', 'eachBuiltinLayer', 'eachOtherLayer', 'getLayers',
 	        'modLayer', 'delLayer', 'clearLayer', 'toDataURL', 'pathToImage'
 	    ];
 
diff --git a/dist/echarts.min.js b/dist/echarts.min.js
index 3563d8c..fcd1e59 100644
--- a/dist/echarts.min.js
+++ b/dist/echarts.min.js
@@ -1,4 +1,4 @@
-!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.echarts=e():t.echarts=e()}(this,function(){return function(t){function e(n){if(i[n])return i[n].exports;var o=i[n]={exports:{},id:n,loaded:!1};return t[n].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){t.exports=i(2),i(100),i(94),i(104),i(178),i(310),i(298),i(325),i(272),i(268),i(264),i(305),i(315),i(250),i(255),i(261),i(293),i(285),i(309),i(320),i(191),i(31),i(192),i(215),i(348),i(345),i(232),i(233),i(338),i(206),i(181),i(362),i(199),i(198),i(197),i(352),i(207),i(222)},function(t,e){function i(t){if(null==t||"object"!=typeof t)return t;var e=t,n=O.call(t);if("[object Array]"===n){e=[];for(var o=0,r=t.length;o<r;o++)e[o]=i(t[o])}else if(k[n])e=t.constructor.from(t);else if(!P[n]&&!I(t)){e={};for(var a in t)t.hasOwnProperty(a)&&(e[a]=i(t[a]))}return e}function n(t,e,o){if(!S(e)||!S(t))return o?i(e):t;for(var r in e)if(e.hasOwnProperty(r)){var a=t[r],s=e[r];!S(s)||!S(a)||_(s)||_(a)||I(s)||I(a)||M(s)||M(a)?!o&&r in t||(t[r]=i(e[r],!0)):n(a,s,o)}return t}function o(t,e){for(var i=t[0],o=1,r=t.length;o<r;o++)i=n(i,t[o],e);return i}function r(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return t}function a(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 s(){return document.createElement("canvas")}function l(){return D||(D=G.createCanvas().getContext("2d")),D}function u(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 h(t,e){function i(){}var n=t.prototype;i.prototype=e.prototype,t.prototype=new i;for(var o in n)t.prototype[o]=n[o];t.prototype.constructor=t,t.superClass=e}function c(t,e,i){t="prototype"in t?t.prototype:t,e="prototype"in e?e.prototype:e,a(t,e,i)}function d(t){if(t)return"string"!=typeof t&&"number"==typeof t.length}function f(t,e,i){if(t&&e)if(t.forEach&&t.forEach===E)t.forEach(e,i);else if(t.length===+t.length)for(var n=0,o=t.length;n<o;n++)e.call(i,t[n],n,t);else for(var r in t)t.hasOwnProperty(r)&&e.call(i,t[r],r,t)}function p(t,e,i){if(t&&e){if(t.map&&t.map===V)return t.map(e,i);for(var n=[],o=0,r=t.length;o<r;o++)n.push(e.call(i,t[o],o,t));return n}}function g(t,e,i,n){if(t&&e){if(t.reduce&&t.reduce===B)return t.reduce(e,i,n);for(var o=0,r=t.length;o<r;o++)i=e.call(n,i,t[o],o,t);return i}}function m(t,e,i){if(t&&e){if(t.filter&&t.filter===R)return t.filter(e,i);for(var n=[],o=0,r=t.length;o<r;o++)e.call(i,t[o],o,t)&&n.push(t[o]);return n}}function v(t,e,i){if(t&&e)for(var n=0,o=t.length;n<o;n++)if(e.call(i,t[n],n,t))return t[n]}function y(t,e){var i=N.call(arguments,2);return function(){return t.apply(e,i.concat(N.call(arguments)))}}function x(t){var e=N.call(arguments,1);return function(){return t.apply(this,e.concat(N.call(arguments)))}}function _(t){return"[object Array]"===O.call(t)}function b(t){return"function"==typeof t}function w(t){return"[object String]"===O.call(t)}function S(t){var e=typeof t;return"function"===e||!!t&&"object"==e}function M(t){return!!P[O.call(t)]}function I(t){return"object"==typeof t&&"number"==typeof t.nodeType&&"object"==typeof t.ownerDocument}function T(t){return t!==t}function A(t){for(var e=0,i=arguments.length;e<i;e++)if(null!=arguments[e])return arguments[e]}function L(){return Function.call.apply(N,arguments)}function C(t,e){if(!t)throw new Error(e)}var D,P={"[object Function]":1,"[object RegExp]":1,"[object Date]":1,"[object Error]":1,"[object CanvasGradient]":1,"[object CanvasPattern]":1,"[object Image]":1,"[object Canvas]":1},k={"[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},O=Object.prototype.toString,z=Array.prototype,E=z.forEach,R=z.filter,N=z.slice,V=z.map,B=z.reduce,G={inherits:h,mixin:c,clone:i,merge:n,mergeAll:o,extend:r,defaults:a,getContext:l,createCanvas:s,indexOf:u,slice:L,find:v,isArrayLike:d,each:f,map:p,reduce:g,filter:m,bind:y,curry:x,isArray:_,isString:w,isObject:S,isFunction:b,isBuildInObject:M,isDom:I,eqNaN:T,retrieve:A,assert:C,noop:function(){}};t.exports=G},function(t,e,i){function n(t){return function(e,i,n){e=e&&e.toLowerCase(),N.prototype[t].call(this,e,i,n)}}function o(){N.call(this)}function r(t,e,i){function n(t,e){return t.prio-e.prio}i=i||{},"string"==typeof e&&(e=at[e]),this.id,this.group,this._dom=t;var r=this._zr=z.init(t,{renderer:i.renderer||"canvas",devicePixelRatio:i.devicePixelRatio,width:i.width,height:i.height});this._throttledZrFlush=O.throttle(E.bind(r.flush,r),17),this._theme=E.clone(e),this._chartsViews=[],this._chartsMap={},this._componentsViews=[],this._componentsMap={},this._api=new M(this),this._coordSysMgr=new I,N.call(this),this._messageCenter=new o,this._initEvents(),this.resize=E.bind(this.resize,this),this._pendingActions=[],V(rt,n),V(nt,n),r.animation.on("frame",this._onframe,this)}function a(t,e,i){var n,o=this._model,r=this._coordSysMgr.getCoordinateSystems();e=k.parseFinder(o,e);for(var a=0;a<r.length;a++){var s=r[a];if(s[t]&&null!=(n=s[t](o,e,i)))return n}}function s(t,e,i,n,o){var r=t._model,a={};a[n+"Id"]=i[n+"Id"],a[n+"Index"]=i[n+"Index"],a[n+"Name"]=i[n+"Name"];var s={mainType:n,query:a};o&&(s.subType=o),r&&r.eachComponent(s,function(o,a){var s=t["series"===n?"_chartsMap":"_componentsMap"][o.__viewId];s&&s.__alive&&s[e](o,r,t._api,i)},t)}function l(t,e){var i=t.type,n=et[i],o=n.actionInfo,r=(o.update||"update").split(":"),a=r.pop();r=r[0]&&G(r[0]),this[X]=!0;var l=[t],u=!1;t.batch&&(u=!0,l=E.map(t.batch,function(e){return e=E.defaults(E.extend({},e),t),e.batch=null,e}));for(var h,c=[],d="highlight"===i||"downplay"===i,f=0;f<l.length;f++){var p=l[f];h=n.action(p,this._model),h=h||E.extend({},p),h.type=o.event||h.type,c.push(h),d?s(this,a,p,"series"):r&&s(this,a,p,r.main,r.sub)}"none"===a||d||r||(this[$]?(J.prepareAndUpdate.call(this,t),this[$]=!1):J[a].call(this,t)),h=u?{type:o.event||i,batch:c}:c[0],this[X]=!1,!e&&this._messageCenter.trigger(h.type,h)}function u(t){for(var e=this._pendingActions;e.length;){var i=e.shift();l.call(this,i,t)}}function h(t){!t&&this.trigger("updated")}function c(t,e,i){var n=this._api;B(this._componentsViews,function(o){var r=o.__model;o[t](r,e,n,i),_(r,o)},this),e.eachSeries(function(o,r){var a=this._chartsMap[o.__viewId];a[t](o,e,n,i),_(o,a),x(o,a)},this),y(this._zr,e)}function d(t,e){for(var i="component"===t,n=i?this._componentsViews:this._chartsViews,o=i?this._componentsMap:this._chartsMap,r=this._zr,a=0;a<n.length;a++)n[a].__alive=!1;e[i?"eachComponent":"eachSeries"](function(t,a){if(i){if("series"===t)return}else a=t;var s=a.id+"_"+a.type,l=o[s];if(!l){var u=G(a.type),h=i?C.getClass(u.main,u.sub):D.getClass(u.sub);if(!h)return;l=new h,l.init(e,this._api),o[s]=l,n.push(l),r.add(l.group)}a.__viewId=s,l.__alive=!0,l.__id=s,l.__model=a},this);for(var a=0;a<n.length;){var s=n[a];s.__alive?a++:(r.remove(s.group),s.dispose(e,this._api),n.splice(a,1),delete o[s.__id])}}function f(t,e){B(nt,function(i){i.func(t,e)})}function p(t){var e={};t.eachSeries(function(t){var i=t.get("stack"),n=t.getData();if(i&&"list"===n.type){var o=e[i];o&&(n.stackedOn=o),e[i]=n}})}function g(t,e){var i=this._api;B(rt,function(n){n.isLayout&&n.func(t,i,e)})}function m(t,e,i){var n=this._api;t.clearColorPalette(),t.eachSeries(function(t){t.clearColorPalette()}),B(rt,function(o){(!i||!o.isLayout)&&o.func(t,n,e)})}function v(t,e){var i=this._api;B(this._componentsViews,function(n){var o=n.__model;n.render(o,t,i,e),_(o,n)},this),B(this._chartsViews,function(t){t.__alive=!1},this),t.eachSeries(function(n,o){var r=this._chartsMap[n.__viewId];r.__alive=!0,r.render(n,t,i,e),r.group.silent=!!n.get("silent"),_(n,r),x(n,r)},this),y(this._zr,t),B(this._chartsViews,function(e){e.__alive||e.remove(t,i)},this)}function y(t,e){var i=t.storage,n=0;i.traverse(function(t){t.isGroup||n++}),n>e.get("hoverLayerThreshold")&&!w.node&&i.traverse(function(t){t.isGroup||(t.useHoverLayer=!0)})}function x(t,e){var i=0;e.group.traverse(function(t){"group"===t.type||t.ignore||i++});var n=+t.get("progressive"),o=i>t.get("progressiveThreshold")&&n&&!w.node;o&&e.group.traverse(function(t){t.isGroup||(t.progressive=o?Math.floor(i++/n):-1,o&&t.stopAnimation(!0))});var r=t.get("blendMode")||null;e.group.traverse(function(t){t.isGroup||t.setStyle("blend",r)})}function _(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 b(t){function e(t,e){for(var i=0;i<t.length;i++){var n=t[i];n[r]=e}}var i=0,n=1,o=2,r="__connectUpdateStatus";E.each(it,function(a,s){t._messageCenter.on(s,function(a){if(ut[t.group]&&t[r]!==i){var s=t.makeActionFromEvent(a),l=[];E.each(lt,function(e){e!==t&&e.group===t.group&&l.push(e)}),e(l,i),B(l,function(t){t[r]!==n&&t.dispatchAction(s)}),e(l,o)}})})}/*!
+!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.echarts=e():t.echarts=e()}(this,function(){return function(t){function e(n){if(i[n])return i[n].exports;var o=i[n]={exports:{},id:n,loaded:!1};return t[n].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){t.exports=i(2),i(110),i(104),i(114),i(192),i(327),i(315),i(342),i(289),i(285),i(281),i(322),i(332),i(267),i(272),i(278),i(310),i(302),i(326),i(337),i(205),i(38),i(206),i(229),i(45),i(368),i(365),i(248),i(249),i(356),i(363),i(220),i(195),i(382),i(213),i(212),i(211),i(372),i(221),i(236)},function(t,e){function i(t){if(null==t||"object"!=typeof t)return t;var e=t,n=R.call(t);if("[object Array]"===n){e=[];for(var o=0,a=t.length;o<a;o++)e[o]=i(t[o])}else if(z[n])e=t.constructor.from(t);else if(!O[n]&&!P(t)&&!I(t)){e={};for(var r in t)t.hasOwnProperty(r)&&(e[r]=i(t[r]))}return e}function n(t,e,o){if(!S(e)||!S(t))return o?i(e):t;for(var a in e)if(e.hasOwnProperty(a)){var r=t[a],s=e[a];!S(s)||!S(r)||_(s)||_(r)||I(s)||I(r)||M(s)||M(r)||P(s)||P(r)?!o&&a in t||(t[a]=i(e[a],!0)):n(r,s,o)}return t}function o(t,e){for(var i=t[0],o=1,a=t.length;o<a;o++)i=n(i,t[o],e);return i}function a(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return t}function r(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 s(){return document.createElement("canvas")}function l(){return k||(k=W.createCanvas().getContext("2d")),k}function u(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 h(t,e){function i(){}var n=t.prototype;i.prototype=e.prototype,t.prototype=new i;for(var o in n)t.prototype[o]=n[o];t.prototype.constructor=t,t.superClass=e}function c(t,e,i){t="prototype"in t?t.prototype:t,e="prototype"in e?e.prototype:e,r(t,e,i)}function d(t){if(t)return"string"!=typeof t&&"number"==typeof t.length}function f(t,e,i){if(t&&e)if(t.forEach&&t.forEach===N)t.forEach(e,i);else if(t.length===+t.length)for(var n=0,o=t.length;n<o;n++)e.call(i,t[n],n,t);else for(var a in t)t.hasOwnProperty(a)&&e.call(i,t[a],a,t)}function p(t,e,i){if(t&&e){if(t.map&&t.map===G)return t.map(e,i);for(var n=[],o=0,a=t.length;o<a;o++)n.push(e.call(i,t[o],o,t));return n}}function g(t,e,i,n){if(t&&e){if(t.reduce&&t.reduce===F)return t.reduce(e,i,n);for(var o=0,a=t.length;o<a;o++)i=e.call(n,i,t[o],o,t);return i}}function m(t,e,i){if(t&&e){if(t.filter&&t.filter===V)return t.filter(e,i);for(var n=[],o=0,a=t.length;o<a;o++)e.call(i,t[o],o,t)&&n.push(t[o]);return n}}function v(t,e,i){if(t&&e)for(var n=0,o=t.length;n<o;n++)if(e.call(i,t[n],n,t))return t[n]}function y(t,e){var i=B.call(arguments,2);return function(){return t.apply(e,i.concat(B.call(arguments)))}}function x(t){var e=B.call(arguments,1);return function(){return t.apply(this,e.concat(B.call(arguments)))}}function _(t){return"[object Array]"===R.call(t)}function b(t){return"function"==typeof t}function w(t){return"[object String]"===R.call(t)}function S(t){var e=typeof t;return"function"===e||!!t&&"object"==e}function M(t){return!!O[R.call(t)]}function I(t){return"object"==typeof t&&"number"==typeof t.nodeType&&"object"==typeof t.ownerDocument}function T(t){return t!==t}function A(t){for(var e=0,i=arguments.length;e<i;e++)if(null!=arguments[e])return arguments[e]}function L(){return Function.call.apply(B,arguments)}function C(t,e){if(!t)throw new Error(e)}function D(t){t[H]=!0}function P(t){return t[H]}var k,O={"[object Function]":1,"[object RegExp]":1,"[object Date]":1,"[object Error]":1,"[object CanvasGradient]":1,"[object CanvasPattern]":1,"[object Image]":1,"[object Canvas]":1},z={"[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},R=Object.prototype.toString,E=Array.prototype,N=E.forEach,V=E.filter,B=E.slice,G=E.map,F=E.reduce,H="__ec_primitive__",W={inherits:h,mixin:c,clone:i,merge:n,mergeAll:o,extend:a,defaults:r,getContext:l,createCanvas:s,indexOf:u,slice:L,find:v,isArrayLike:d,each:f,map:p,reduce:g,filter:m,bind:y,curry:x,isArray:_,isString:w,isObject:S,isFunction:b,isBuiltInObject:M,isDom:I,eqNaN:T,retrieve:A,assert:C,setAsPrimitive:D,noop:function(){}};t.exports=W},function(t,e,i){function n(t){return function(e,i,n){e=e&&e.toLowerCase(),N.prototype[t].call(this,e,i,n)}}function o(){N.call(this)}function a(t,e,i){function n(t,e){return t.prio-e.prio}i=i||{},"string"==typeof e&&(e=st[e]),this.id,this.group,this._dom=t;var a=this._zr=z.init(t,{renderer:i.renderer||"canvas",devicePixelRatio:i.devicePixelRatio,width:i.width,height:i.height});this._throttledZrFlush=O.throttle(R.bind(a.flush,a),17),this._theme=R.clone(e),this._chartsViews=[],this._chartsMap={},this._componentsViews=[],this._componentsMap={},this._coordSysMgr=new I,this._api=new M(this,this._coordSysMgr),N.call(this),this._messageCenter=new o,this._initEvents(),this.resize=R.bind(this.resize,this),this._pendingActions=[],V(rt,n),V(nt,n),a.animation.on("frame",this._onframe,this),R.setAsPrimitive(this)}function r(t,e,i){var n,o=this._model,a=this._coordSysMgr.getCoordinateSystems();e=k.parseFinder(o,e);for(var r=0;r<a.length;r++){var s=a[r];if(s[t]&&null!=(n=s[t](o,e,i)))return n}}function s(t,e,i,n,o){function a(n){n&&n.__alive&&n[e]&&n[e](n.__model,r,t._api,i)}var r=t._model;if(!n)return void B(t._componentsViews.concat(t._chartsViews),a);var s={};s[n+"Id"]=i[n+"Id"],s[n+"Index"]=i[n+"Index"],s[n+"Name"]=i[n+"Name"];var l={mainType:n,query:s};o&&(l.subType=o),r&&r.eachComponent(l,function(e,i){a(t["series"===n?"_chartsMap":"_componentsMap"][e.__viewId])},t)}function l(t,e){var i=t.type,n=t.escapeConnect,o=et[i],a=o.actionInfo,r=(a.update||"update").split(":"),l=r.pop();r=null!=r[0]&&G(r[0]),this[X]=!0;var u=[t],h=!1;t.batch&&(h=!0,u=R.map(t.batch,function(e){return e=R.defaults(R.extend({},e),t),e.batch=null,e}));var c,d=[],f="highlight"===i||"downplay"===i;B(u,function(t){c=o.action(t,this._model,this._api),c=c||R.extend({},t),c.type=a.event||c.type,d.push(c),f?s(this,l,t,"series"):r&&s(this,l,t,r.main,r.sub)},this),"none"===l||f||r||(this[$]?(Q.prepareAndUpdate.call(this,t),this[$]=!1):Q[l].call(this,t)),c=h?{type:a.event||i,escapeConnect:n,batch:d}:d[0],this[X]=!1,!e&&this._messageCenter.trigger(c.type,c)}function u(t){for(var e=this._pendingActions;e.length;){var i=e.shift();l.call(this,i,t)}}function h(t){!t&&this.trigger("updated")}function c(t,e,i){var n=this._api;B(this._componentsViews,function(o){var a=o.__model;o[t](a,e,n,i),_(a,o)},this),e.eachSeries(function(o,a){var r=this._chartsMap[o.__viewId];r[t](o,e,n,i),_(o,r),x(o,r)},this),y(this._zr,e),B(at,function(t){t(e,n)})}function d(t,e){for(var i="component"===t,n=i?this._componentsViews:this._chartsViews,o=i?this._componentsMap:this._chartsMap,a=this._zr,r=0;r<n.length;r++)n[r].__alive=!1;e[i?"eachComponent":"eachSeries"](function(t,r){if(i){if("series"===t)return}else r=t;var s=r.id+"_"+r.type,l=o[s];if(!l){var u=G(r.type),h=i?C.getClass(u.main,u.sub):D.getClass(u.sub);if(!h)return;l=new h,l.init(e,this._api),o[s]=l,n.push(l),a.add(l.group)}r.__viewId=s,l.__alive=!0,l.__id=s,l.__model=r},this);for(var r=0;r<n.length;){var s=n[r];s.__alive?r++:(a.remove(s.group),s.dispose(e,this._api),n.splice(r,1),delete o[s.__id])}}function f(t,e){B(nt,function(i){i.func(t,e)})}function p(t){var e={};t.eachSeries(function(t){var i=t.get("stack"),n=t.getData();if(i&&"list"===n.type){var o=e[i];o&&(n.stackedOn=o),e[i]=n}})}function g(t,e){var i=this._api;B(rt,function(n){n.isLayout&&n.func(t,i,e)})}function m(t,e,i){var n=this._api;t.clearColorPalette(),t.eachSeries(function(t){t.clearColorPalette()}),B(rt,function(o){(!i||!o.isLayout)&&o.func(t,n,e)})}function v(t,e){var i=this._api;B(this._componentsViews,function(n){var o=n.__model;n.render(o,t,i,e),_(o,n)},this),B(this._chartsViews,function(t){t.__alive=!1},this),t.eachSeries(function(n,o){var a=this._chartsMap[n.__viewId];a.__alive=!0,a.render(n,t,i,e),a.group.silent=!!n.get("silent"),_(n,a),x(n,a)},this),y(this._zr,t),B(this._chartsViews,function(e){e.__alive||e.remove(t,i)},this)}function y(t,e){var i=t.storage,n=0;i.traverse(function(t){t.isGroup||n++}),n>e.get("hoverLayerThreshold")&&!w.node&&i.traverse(function(t){t.isGroup||(t.useHoverLayer=!0)})}function x(t,e){var i=0;e.group.traverse(function(t){"group"===t.type||t.ignore||i++});var n=+t.get("progressive"),o=i>t.get("progressiveThreshold")&&n&&!w.node;o&&e.group.traverse(function(t){t.isGroup||(t.progressive=o?Math.floor(i++/n):-1,o&&t.stopAnimation(!0))});var a=t.get("blendMode")||null;e.group.traverse(function(t){t.isGroup||t.setStyle("blend",a)})}function _(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 b(t){function e(t,e){for(var i=0;i<t.length;i++){var n=t[i];n[a]=e}}var i=0,n=1,o=2,a="__connectUpdateStatus";R.each(it,function(r,s){t._messageCenter.on(s,function(r){if(ht[t.group]&&t[a]!==i){if(r&&r.escapeConnect)return;var s=t.makeActionFromEvent(r),l=[];R.each(ut,function(e){e!==t&&e.group===t.group&&l.push(e)}),e(l,i),B(l,function(t){t[a]!==n&&t.dispatchAction(s)}),e(l,o)}})})}/*!
 	 * ECharts, a javascript interactive chart library.
 	 *
 	 * Copyright (c) 2015, Baidu Inc.
@@ -7,11 +7,12 @@
 	 * LICENSE
 	 * https://github.com/ecomfe/echarts/blob/master/LICENSE.txt
 	 */
-var w=i(10),S=i(125),M=i(93),I=i(23),T=i(126),A=i(13),L=i(16),C=i(59),D=i(28),P=i(3),k=i(6),O=i(47),z=i(78),E=i(1),R=i(19),N=i(21),V=i(46),B=E.each,G=A.parseClassType,F=1e3,H=5e3,W=1e3,Z=2e3,q=3e3,j=4e3,U=5e3,X="__flagInMainProcess",Y="__hasGradientOrPatternBg",$="__optionUpdated",Q=/^[a-zA-Z0-9_]+$/;o.prototype.on=n("on"),o.prototype.off=n("off"),o.prototype.one=n("one"),E.mixin(o,N);var K=r.prototype;K._onframe=function(){if(this[$]){var t=this[$].silent;this[X]=!0,J.prepareAndUpdate.call(this),this[X]=!1,this[$]=!1,u.call(this,t),h.call(this,t)}},K.getDom=function(){return this._dom},K.getZr=function(){return this._zr},K.setOption=function(t,e,i){var n;if(E.isObject(e)&&(i=e.lazyUpdate,n=e.silent,e=e.notMerge),this[X]=!0,!this._model||e){var o=new T(this._api),r=this._theme,a=this._model=new S(null,null,r,o);a.init(null,null,r,o)}this.__lastOnlyGraphic=!(!t||!t.graphic),E.each(t,function(t,e){"graphic"!==e&&(this.__lastOnlyGraphic=!1)},this),this._model.setOption(t,ot),i?(this[$]={silent:n},this[X]=!1):(J.prepareAndUpdate.call(this),this._zr.flush(),this[$]=!1,this[X]=!1,u.call(this,n),h.call(this,n))},K.setTheme=function(){console.log("ECharts#setTheme() is DEPRECATED in ECharts 3.0")},K.getModel=function(){return this._model},K.getOption=function(){return this._model&&this._model.getOption()},K.getWidth=function(){return this._zr.getWidth()},K.getHeight=function(){return this._zr.getHeight()},K.getRenderedCanvas=function(t){if(w.canvasSupported){t=t||{},t.pixelRatio=t.pixelRatio||1,t.backgroundColor=t.backgroundColor||this._model.get("backgroundColor");var e=this._zr,i=e.storage.getDisplayList();return E.each(i,function(t){t.stopAnimation(!0)}),e.painter.getRenderedCanvas(t)}},K.getDataURL=function(t){t=t||{};var e=t.excludeComponents,i=this._model,n=[],o=this;B(e,function(t){i.eachComponent({mainType:t},function(t){var e=o._componentsMap[t.__viewId];e.group.ignore||(n.push(e),e.group.ignore=!0)})});var r=this.getRenderedCanvas(t).toDataURL("image/"+(t&&t.type||"png"));return B(n,function(t){t.group.ignore=!1}),r},K.getConnectedDataURL=function(t){if(w.canvasSupported){var e=this.group,i=Math.min,n=Math.max,o=1/0;if(ut[e]){var r=o,a=o,s=-o,l=-o,u=[],h=t&&t.pixelRatio||1;E.each(lt,function(o,h){if(o.group===e){var c=o.getRenderedCanvas(E.clone(t)),d=o.getDom().getBoundingClientRect();r=i(d.left,r),a=i(d.top,a),s=n(d.right,s),l=n(d.bottom,l),u.push({dom:c,left:d.left,top:d.top})}}),r*=h,a*=h,s*=h,l*=h;var c=s-r,d=l-a,f=E.createCanvas();f.width=c,f.height=d;var p=z.init(f);return B(u,function(t){var e=new P.Image({style:{x:t.left*h-r,y:t.top*h-a,image:t.dom}});p.add(e)}),p.refreshImmediately(),f.toDataURL("image/"+(t&&t.type||"png"))}return this.getDataURL(t)}},K.convertToPixel=E.curry(a,"convertToPixel"),K.convertFromPixel=E.curry(a,"convertFromPixel"),K.containPixel=function(t,e){var i,n=this._model;return t=k.parseFinder(n,t),E.each(t,function(t,n){n.indexOf("Models")>=0&&E.each(t,function(t){var o=t.coordinateSystem;if(o&&o.containPoint)i|=!!o.containPoint(e);else if("seriesModels"===n){var r=this._chartsMap[t.__viewId];r&&r.containPoint&&(i|=r.containPoint(e,t))}},this)},this),!!i},K.getVisual=function(t,e){var i=this._model;t=k.parseFinder(i,t,{defaultMainType:"series"});var n=t.seriesModel,o=n.getData(),r=t.hasOwnProperty("dataIndexInside")?t.dataIndexInside:t.hasOwnProperty("dataIndex")?o.indexOfRawIndex(t.dataIndex):null;return null!=r?o.getItemVisual(r,e):o.getVisual(e)};var J={update:function(t){var e=this._model,i=this._api,n=this._coordSysMgr,o=this._zr;if(e){e.restoreData(),n.create(this._model,this._api),f.call(this,e,i),p.call(this,e),n.update(e,i),m.call(this,e,t),v.call(this,e,t);var r=e.get("backgroundColor")||"transparent",a=o.painter;if(a.isSingleCanvas&&a.isSingleCanvas())o.configLayer(0,{clearColor:r});else{if(!w.canvasSupported){var s=R.parse(r);r=R.stringify(s,"rgb"),0===s[3]&&(r="transparent")}r.colorStops||r.image?(o.configLayer(0,{clearColor:r}),this[Y]=!0,this._dom.style.background="transparent"):(this[Y]&&o.configLayer(0,{clearColor:null}),this[Y]=!1,this._dom.style.background=r)}}},updateView:function(t){var e=this._model;e&&(e.eachSeries(function(t){t.getData().clearAllVisual()}),m.call(this,e,t),c.call(this,"updateView",e,t))},updateVisual:function(t){var e=this._model;e&&(e.eachSeries(function(t){t.getData().clearAllVisual()}),m.call(this,e,t,!0),c.call(this,"updateVisual",e,t))},updateLayout:function(t){var e=this._model;e&&(g.call(this,e,t),c.call(this,"updateLayout",e,t))},prepareAndUpdate:function(t){var e=this._model;d.call(this,"component",e),d.call(this,"chart",e),this.__lastOnlyGraphic?(B(this._componentsViews,function(i){var n=i.__model;n&&"graphic"===n.mainType&&(i.render(n,e,this._api,t),_(n,i))},this),this.__lastOnlyGraphic=!1):J.update.call(this,t)}};K.resize=function(t){this[X]=!0,this._zr.resize(t);var e=this._model&&this._model.resetOption("media"),i=e?"prepareAndUpdate":"update";J[i].call(this),this._loadingFX&&this._loadingFX.resize(),this[X]=!1;var n=t&&t.silent;u.call(this,n),h.call(this,n)},K.showLoading=function(t,e){if(E.isObject(t)&&(e=t,t=""),t=t||"default",this.hideLoading(),st[t]){var i=st[t](this._api,e),n=this._zr;this._loadingFX=i,n.add(i)}},K.hideLoading=function(){this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null},K.makeActionFromEvent=function(t){var e=E.extend({},t);return e.type=it[t.type],e},K.dispatchAction=function(t,e){if(E.isObject(e)||(e={silent:!!e}),et[t.type]){if(this[X])return void this._pendingActions.push(t);l.call(this,t,e.silent),e.flush?this._zr.flush(!0):e.flush!==!1&&w.browser.weChat&&this._throttledZrFlush(),u.call(this,e.silent),h.call(this,e.silent)}},K.on=n("on"),K.off=n("off"),K.one=n("one");var tt=["click","dblclick","mouseover","mouseout","mousemove","mousedown","mouseup","globalout","contextmenu"];K._initEvents=function(){B(tt,function(t){this._zr.on(t,function(e){var i,n=this.getModel(),o=e.target;if("globalout"===t)i={};else if(o&&null!=o.dataIndex){var r=o.dataModel||n.getSeriesByIndex(o.seriesIndex);i=r&&r.getDataParams(o.dataIndex,o.dataType)||{}}else o&&o.eventData&&(i=E.extend({},o.eventData));i&&(i.event=e,i.type=t,this.trigger(t,i))},this)},this),B(it,function(t,e){this._messageCenter.on(e,function(t){this.trigger(e,t)},this)},this)},K.isDisposed=function(){return this._disposed},K.clear=function(){this.setOption({series:[]},!0)},K.dispose=function(){if(!this._disposed){this._disposed=!0;var t=this._api,e=this._model;B(this._componentsViews,function(i){i.dispose(e,t)}),B(this._chartsViews,function(i){i.dispose(e,t)}),this._zr.dispose(),delete lt[this.id]}},E.mixin(r,N);var et=[],it={},nt=[],ot=[],rt=[],at={},st={},lt={},ut={},ht=new Date-0,ct=new Date-0,dt="_echarts_instance_",ft={version:"3.4.0",dependencies:{zrender:"3.3.0"}};ft.init=function(t,e,i){var n=new r(t,e,i);return n.id="ec_"+ht++,lt[n.id]=n,t.setAttribute&&t.setAttribute(dt,n.id),b(n),n},ft.connect=function(t){if(E.isArray(t)){var e=t;t=null,E.each(e,function(e){null!=e.group&&(t=e.group)}),t=t||"g_"+ct++,E.each(e,function(e){e.group=t})}return ut[t]=!0,t},ft.disConnect=function(t){ut[t]=!1},ft.dispose=function(t){E.isDom(t)?t=ft.getInstanceByDom(t):"string"==typeof t&&(t=lt[t]),t instanceof r&&!t.isDisposed()&&t.dispose()},ft.getInstanceByDom=function(t){var e=t.getAttribute(dt);return lt[e]},ft.getInstanceById=function(t){return lt[t]},ft.registerTheme=function(t,e){at[t]=e},ft.registerPreprocessor=function(t){ot.push(t)},ft.registerProcessor=function(t,e){"function"==typeof t&&(e=t,t=F),nt.push({prio:t,func:e})},ft.registerAction=function(t,e,i){"function"==typeof e&&(i=e,e="");var n=E.isObject(t)?t.type:[t,t={event:e}][0];t.event=(t.event||n).toLowerCase(),e=t.event,E.assert(Q.test(n)&&Q.test(e)),et[n]||(et[n]={action:i,actionInfo:t}),it[e]=n},ft.registerCoordinateSystem=function(t,e){I.register(t,e)},ft.registerLayout=function(t,e){"function"==typeof t&&(e=t,t=W),rt.push({prio:t,func:e,isLayout:!0})},ft.registerVisual=function(t,e){"function"==typeof t&&(e=t,t=q),rt.push({prio:t,func:e})},ft.registerLoading=function(t,e){st[t]=e},ft.extendComponentModel=function(t){return A.extend(t)},ft.extendComponentView=function(t){return C.extend(t)},ft.extendSeriesModel=function(t){return L.extend(t)},ft.extendChartView=function(t){return D.extend(t)},ft.setCanvasCreator=function(t){E.createCanvas=t},ft.registerVisual(Z,i(139)),ft.registerPreprocessor(i(133)),ft.registerLoading("default",i(124)),ft.registerAction({type:"highlight",event:"highlight",update:"highlight"},E.noop),ft.registerAction({type:"downplay",event:"downplay",update:"downplay"},E.noop),ft.List=i(14),ft.Model=i(11),ft.graphic=i(3),ft.number=i(4),ft.format=i(8),ft.throttle=O.throttle,ft.matrix=i(20),ft.vector=i(5),ft.color=i(19),ft.util={},B(["map","each","filter","indexOf","inherits","reduce","filter","bind","curry","isArray","isString","isObject","isFunction","extend","defaults","clone"],function(t){ft.util[t]=E[t]}),ft.PRIORITY={PROCESSOR:{FILTER:F,STATISTIC:H},VISUAL:{LAYOUT:W,GLOBAL:Z,CHART:q,COMPONENT:j,BRUSH:U}},t.exports=ft},function(t,e,i){"use strict";function n(t){return null!=t&&"none"!=t}function o(t){return"string"==typeof t?_.lift(t,-.1):t}function r(t){if(t.__hoverStlDirty){var e=t.style.stroke,i=t.style.fill,r=t.__hoverStl;r.fill=r.fill||(n(i)?o(i):null),r.stroke=r.stroke||(n(e)?o(e):null);var a={};for(var s in r)r.hasOwnProperty(s)&&(a[s]=t.style[s]);t.__normalStl=a,t.__hoverStlDirty=!1}}function a(t){t.__isHover||(r(t),t.useHoverLayer?t.__zr&&t.__zr.addHover(t,t.__hoverStl):(t.setStyle(t.__hoverStl),t.z2+=1),t.__isHover=!0)}function s(t){if(t.__isHover){var e=t.__normalStl;t.useHoverLayer?t.__zr&&t.__zr.removeHover(t):(e&&t.setStyle(e),t.z2-=1),t.__isHover=!1}}function l(t){"group"===t.type?t.traverse(function(t){"group"!==t.type&&a(t)}):a(t)}function u(t){"group"===t.type?t.traverse(function(t){"group"!==t.type&&s(t)}):s(t)}function h(t,e){t.__hoverStl=t.hoverStyle||e||{},t.__hoverStlDirty=!0,t.__isHover&&r(t)}function c(t){this.__hoverSilentOnTouch&&t.zrByTouch||!this.__isEmphasis&&l(this)}function d(t){this.__hoverSilentOnTouch&&t.zrByTouch||!this.__isEmphasis&&u(this)}function f(){this.__isEmphasis=!0,l(this)}function p(){this.__isEmphasis=!1,u(this)}function g(t,e,i,n,o,r){"function"==typeof o&&(r=o,o=null);var a=n&&n.isAnimationEnabled();if(a){var s=t?"Update":"",l=n.getShallow("animationDuration"+s),u=n.getShallow("animationEasing"+s),h=n.getShallow("animationDelay"+s);"function"==typeof h&&(h=h(o,n.getAnimationDelayParams?n.getAnimationDelayParams(e,o):null)),"function"==typeof l&&(l=l(o)),l>0?e.animateTo(i,l,h||0,u,r):(e.attr(i),r&&r())}else e.attr(i),r&&r()}var m=i(1),v=i(169),y=Math.round,x=i(7),_=i(19),b=i(20),w=i(5),S={};S.Group=i(34),S.Image=i(49),S.Text=i(76),S.Circle=i(160),S.Sector=i(166),S.Ring=i(165),S.Polygon=i(162),S.Polyline=i(163),S.Rect=i(164),S.Line=i(161),S.BezierCurve=i(159),S.Arc=i(158),S.CompoundPath=i(153),S.LinearGradient=i(91),S.RadialGradient=i(154),S.BoundingRect=i(9),S.extendShape=function(t){return x.extend(t)},S.extendPath=function(t,e){return v.extendFromString(t,e)},S.makePath=function(t,e,i,n){var o=v.createFromString(t,e),r=o.getBoundingRect();if(i){var a=r.width/r.height;if("center"===n){var s,l=i.height*a;l<=i.width?s=i.height:(l=i.width,s=l/a);var u=i.x+i.width/2,h=i.y+i.height/2;i.x=u-l/2,i.y=h-s/2,i.width=l,i.height=s}S.resizePath(o,i)}return o},S.mergePath=v.mergePath,S.resizePath=function(t,e){if(t.applyTransform){var i=t.getBoundingRect(),n=i.calculateTransform(e);t.applyTransform(n)}},S.subPixelOptimizeLine=function(t){var e=S.subPixelOptimize,i=t.shape,n=t.style.lineWidth;return y(2*i.x1)===y(2*i.x2)&&(i.x1=i.x2=e(i.x1,n,!0)),y(2*i.y1)===y(2*i.y2)&&(i.y1=i.y2=e(i.y1,n,!0)),t},S.subPixelOptimizeRect=function(t){var e=S.subPixelOptimize,i=t.shape,n=t.style.lineWidth,o=i.x,r=i.y,a=i.width,s=i.height;return i.x=e(i.x,n,!0),i.y=e(i.y,n,!0),i.width=Math.max(e(o+a,n,!1)-i.x,0===a?0:1),i.height=Math.max(e(r+s,n,!1)-i.y,0===s?0:1),t},S.subPixelOptimize=function(t,e,i){var n=y(2*t);return(n+y(e))%2===0?n/2:(n+(i?1:-1))/2},S.setHoverStyle=function(t,e,i){t.__hoverSilentOnTouch=i&&i.hoverSilentOnTouch,"group"===t.type?t.traverse(function(t){"group"!==t.type&&h(t,e)}):h(t,e),t.on("mouseover",c).on("mouseout",d),t.on("emphasis",f).on("normal",p)},S.setText=function(t,e,i){var n=e.getShallow("position")||"inside",o=e.getShallow("offset"),r=n.indexOf("inside")>=0?"white":i,a=e.getModel("textStyle");m.extend(t,{textDistance:e.getShallow("distance")||5,textFont:a.getFont(),textPosition:n,textOffset:o,textFill:a.getTextColor()||r})},S.updateProps=function(t,e,i,n,o){g(!0,t,e,i,n,o)},S.initProps=function(t,e,i,n,o){g(!1,t,e,i,n,o)},S.getTransform=function(t,e){for(var i=b.identity([]);t&&t!==e;)b.mul(i,t.getLocalTransform(),i),t=t.parent;return i},S.applyTransform=function(t,e,i){return i&&(e=b.invert([],e)),w.applyTransform([],t,e)},S.transformDirection=function(t,e,i){var n=0===e[4]||0===e[5]||0===e[0]?1:Math.abs(2*e[4]/e[0]),o=0===e[4]||0===e[5]||0===e[2]?1:Math.abs(2*e[4]/e[2]),r=["left"===t?-n:"right"===t?n:0,"top"===t?-o:"bottom"===t?o:0];return r=S.applyTransform(r,e,i),Math.abs(r[0])>Math.abs(r[1])?r[0]>0?"right":"left":r[1]>0?"bottom":"top"},S.groupTransition=function(t,e,i,n){function o(t){var e={};return t.traverse(function(t){!t.isGroup&&t.anid&&(e[t.anid]=t)}),e}function r(t){var e={position:w.clone(t.position),rotation:t.rotation};return t.shape&&(e.shape=m.extend({},t.shape)),e}if(t&&e){var a=o(t);e.traverse(function(t){if(!t.isGroup&&t.anid){var e=a[t.anid];if(e){var n=r(t);t.attr(r(e)),S.updateProps(t,n,i,t.dataIndex)}}})}},t.exports=S},function(t,e){function i(t){return t.replace(/^\s+/,"").replace(/\s+$/,"")}var n={},o=1e-4;n.linearMap=function(t,e,i,n){var o=e[1]-e[0],r=i[1]-i[0];if(0===o)return 0===r?i[0]:(i[0]+i[1])/2;if(n)if(o>0){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])/o*r+i[0]},n.parsePercent=function(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?i(t).match(/%$/)?parseFloat(t)/100*e:parseFloat(t):null==t?NaN:+t},n.round=function(t,e){return null==e&&(e=10),e=Math.min(Math.max(0,e),20),+(+t).toFixed(e)},n.asc=function(t){return t.sort(function(t,e){return t-e}),t},n.getPrecision=function(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},n.getPrecisionSafe=function(t){var e=t.toString(),i=e.indexOf(".");return i<0?0:e.length-1-i},n.getPixelPrecision=function(t,e){var i=Math.log,n=Math.LN10,o=Math.floor(i(t[1]-t[0])/n),r=Math.round(i(Math.abs(e[1]-e[0]))/n),a=Math.min(Math.max(-o+r,0),20);return isFinite(a)?a:20},n.MAX_SAFE_INTEGER=9007199254740991,n.remRadian=function(t){var e=2*Math.PI;return(t%e+e)%e},n.isRadianAroundZero=function(t){return t>-o&&t<o},n.parseDate=function(t){if(t instanceof Date)return t;if("string"==typeof t){var e=new Date(t);return isNaN(+e)&&(e=new Date(new Date(t.replace(/-/g,"/"))-new Date("1970/01/01"))),e}return new Date(Math.round(t))},n.quantity=function(t){return Math.pow(10,Math.floor(Math.log(t)/Math.LN10))},n.nice=function(t,e){var i,o=n.quantity(t),r=t/o;return i=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*o},n.reformIntervals=function(t){function e(t,i,n){return t.interval[n]<i.interval[n]||t.interval[n]===i.interval[n]&&(t.close[n]-i.close[n]===(n?-1:1)||!n&&e(t,i,1))}t.sort(function(t,i){return e(t,i,0)?-1:1});for(var i=-(1/0),n=1,o=0;o<t.length;){for(var r=t[o].interval,a=t[o].close,s=0;s<2;s++)r[s]<=i&&(r[s]=i,a[s]=s?1:1-n),i=r[s],n=a[s];r[0]===r[1]&&a[0]*a[1]!==1?t.splice(o,1):o++}return t},n.isNumeric=function(t){return t-parseFloat(t)>=0},t.exports=n},function(t,e){var i="undefined"==typeof Float32Array?Array:Float32Array,n={create:function(t,e){var n=new i(2);return null==t&&(t=0),null==e&&(e=0),n[0]=t,n[1]=e,n},copy:function(t,e){return t[0]=e[0],t[1]=e[1],t},clone:function(t){var e=new i(2);return e[0]=t[0],e[1]=t[1],e},set:function(t,e,i){return t[0]=e,t[1]=i,t},add:function(t,e,i){return t[0]=e[0]+i[0],t[1]=e[1]+i[1],t},scaleAndAdd:function(t,e,i,n){return t[0]=e[0]+i[0]*n,t[1]=e[1]+i[1]*n,t},sub:function(t,e,i){return t[0]=e[0]-i[0],t[1]=e[1]-i[1],t},len:function(t){return Math.sqrt(this.lenSquare(t))},lenSquare:function(t){return t[0]*t[0]+t[1]*t[1]},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:function(t,e,i){return t[0]=e[0]*i,t[1]=e[1]*i,t},normalize:function(t,e){var i=n.len(e);return 0===i?(t[0]=0,t[1]=0):(t[0]=e[0]/i,t[1]=e[1]/i),t},distance:function(t,e){return Math.sqrt((t[0]-e[0])*(t[0]-e[0])+(t[1]-e[1])*(t[1]-e[1]))},distanceSquare:function(t,e){return(t[0]-e[0])*(t[0]-e[0])+(t[1]-e[1])*(t[1]-e[1])},negate:function(t,e){return t[0]=-e[0],t[1]=-e[1],t},lerp:function(t,e,i,n){return t[0]=e[0]+n*(i[0]-e[0]),t[1]=e[1]+n*(i[1]-e[1]),t},applyTransform:function(t,e,i){var n=e[0],o=e[1];return t[0]=i[0]*n+i[2]*o+i[4],t[1]=i[1]*n+i[3]*o+i[5],t},min:function(t,e,i){return t[0]=Math.min(e[0],i[0]),t[1]=Math.min(e[1],i[1]),t},max:function(t,e,i){return t[0]=Math.max(e[0],i[0]),t[1]=Math.max(e[1],i[1]),t}};n.length=n.len,n.lengthSquare=n.lenSquare,n.dist=n.distance,n.distSquare=n.distanceSquare,t.exports=n},function(t,e,i){function n(t,e){return t&&t.hasOwnProperty(e)}var o=i(8),r=i(4),a=i(11),s=i(1),l=s.each,u=s.isObject,h={};h.normalizeToArray=function(t){return t instanceof Array?t:null==t?[]:[t]},h.defaultEmphasis=function(t,e){if(t){var i=t.emphasis=t.emphasis||{},n=t.normal=t.normal||{};l(e,function(t){var e=s.retrieve(i[t],n[t]);null!=e&&(i[t]=e)})}},h.LABEL_OPTIONS=["position","offset","show","textStyle","distance","formatter"],h.getDataItemValue=function(t){return t&&(null==t.value?t:t.value)},h.isDataItemOption=function(t){return u(t)&&!(t instanceof Array)},h.converDataValue=function(t,e){var i=e&&e.type;return"ordinal"===i?t:("time"!==i||isFinite(t)||null==t||"-"===t||(t=+r.parseDate(t)),null==t||""===t?NaN:+t)},h.createDataFormatModel=function(t,e){var i=new a;return s.mixin(i,h.dataFormatMixin),i.seriesIndex=e.seriesIndex,i.name=e.name||"",i.mainType=e.mainType,i.subType=e.subType,i.getData=function(){return t},i},h.dataFormatMixin={getDataParams:function(t,e){var i=this.getData(e),n=this.seriesIndex,o=this.name,r=this.getRawValue(t,e),a=i.getRawIndex(t),s=i.getName(t,!0),l=i.getRawDataItem(t);return{componentType:this.mainType,componentSubType:this.subType,seriesType:"series"===this.mainType?this.subType:null,seriesIndex:n,seriesName:o,name:s,dataIndex:a,data:l,dataType:e,value:r,color:i.getItemVisual(t,"color"),$vars:["seriesName","name","value"]}},getFormattedLabel:function(t,e,i,n){e=e||"normal";var r=this.getData(i),a=r.getItemModel(t),s=this.getDataParams(t,i);null!=n&&s.value instanceof Array&&(s.value=s.value[n]);var l=a.get(["label",e,"formatter"]);return"function"==typeof l?(s.status=e,l(s)):"string"==typeof l?o.formatTpl(l,s):void 0},getRawValue:function(t,e){var i=this.getData(e),n=i.getRawDataItem(t);if(null!=n)return!u(n)||n instanceof Array?n:n.value},formatTooltip:s.noop},h.mappingToExists=function(t,e){e=(e||[]).slice();var i=s.map(t||[],function(t,e){return{exist:t}});return l(e,function(t,n){if(u(t)){for(var o=0;o<i.length;o++)if(!i[o].option&&null!=t.id&&i[o].exist.id===t.id+"")return i[o].option=t,void(e[n]=null);for(var o=0;o<i.length;o++){var r=i[o].exist;if(!(i[o].option||null!=r.id&&null!=t.id||null==t.name||h.isIdInner(t)||h.isIdInner(r)||r.name!==t.name+""))return i[o].option=t,void(e[n]=null)}}}),l(e,function(t,e){if(u(t)){for(var n=0;n<i.length;n++){var o=i[n].exist;if(!i[n].option&&!h.isIdInner(o)&&null==t.id){i[n].option=t;break}}n>=i.length&&i.push({option:t})}}),i},h.makeIdAndName=function(t){var e={};l(t,function(t,i){var n=t.exist;n&&(e[n.id]=t)}),l(t,function(t,i){var n=t.option;s.assert(!n||null==n.id||!e[n.id]||e[n.id]===t,"id duplicates: "+(n&&n.id)),n&&null!=n.id&&(e[n.id]=t),!t.keyInfo&&(t.keyInfo={})}),l(t,function(t,i){var n=t.exist,o=t.option,r=t.keyInfo;if(u(o)){if(r.name=null!=o.name?o.name+"":n?n.name:"\0-",n)r.id=n.id;else if(null!=o.id)r.id=o.id+"";else{var a=0;do r.id="\0"+r.name+"\0"+a++;while(e[r.id])}e[r.id]=t}})},h.isIdInner=function(t){return u(t)&&t.id&&0===(t.id+"").indexOf("\0_ec_\0")},h.compressBatches=function(t,e){function i(t,e,i){for(var n=0,o=t.length;n<o;n++)for(var r=t[n].seriesId,a=h.normalizeToArray(t[n].dataIndex),s=i&&i[r],l=0,u=a.length;l<u;l++){var c=a[l];s&&s[c]?s[c]=null:(e[r]||(e[r]={}))[c]=1}}function n(t,e){var i=[];for(var o in t)if(t.hasOwnProperty(o)&&null!=t[o])if(e)i.push(+o);else{var r=n(t[o],!0);r.length&&i.push({seriesId:o,dataIndex:r})}return i}var o={},r={};return i(t||[],o),i(e||[],r,o),[n(o),n(r)]},h.queryDataIndex=function(t,e){return null!=e.dataIndexInside?e.dataIndexInside:null!=e.dataIndex?s.isArray(e.dataIndex)?s.map(e.dataIndex,function(e){return t.indexOfRawIndex(e)}):t.indexOfRawIndex(e.dataIndex):null!=e.name?s.isArray(e.name)?s.map(e.name,function(e){return t.indexOfName(e)}):t.indexOfName(e.name):void 0},h.parseFinder=function(t,e,i){if(s.isString(e)){var o={};o[e+"Index"]=0,e=o}var r=i&&i.defaultMainType;!r||n(e,r+"Index")||n(e,r+"Id")||n(e,r+"Name")||(e[r+"Index"]=0);var a={};return l(e,function(i,n){var i=e[n];if("dataIndex"===n||"dataIndexInside"===n)return void(a[n]=i);var o=n.match(/^(\w+)(Index|Id|Name)$/)||[],r=o[1],s=o[2];if(r&&s){var l={mainType:r};l[s.toLowerCase()]=i;var u=t.queryComponents(l);a[r+"Models"]=u,a[r+"Model"]=u[0]}}),a},t.exports=h},function(t,e,i){function n(t){o.call(this,t),this.path=new a}var o=i(36),r=i(1),a=i(29),s=i(149),l=i(65),u=l.prototype.getCanvasPattern,h=Math.abs;n.prototype={constructor:n,type:"path",__dirtyPath:!0,strokeContainThreshold:5,brush:function(t,e){var i=this.style,n=this.path,o=i.hasStroke(),r=i.hasFill(),a=i.fill,s=i.stroke,l=r&&!!a.colorStops,h=o&&!!s.colorStops,c=r&&!!a.image,d=o&&!!s.image;if(i.bind(t,this,e),this.setTransform(t),this.__dirty){var f=this.getBoundingRect();l&&(this._fillGradient=i.getGradient(t,a,f)),h&&(this._strokeGradient=i.getGradient(t,s,f))}l?t.fillStyle=this._fillGradient:c&&(t.fillStyle=u.call(a,t)),h?t.strokeStyle=this._strokeGradient:d&&(t.strokeStyle=u.call(s,t));var p=i.lineDash,g=i.lineDashOffset,m=!!t.setLineDash,v=this.getGlobalScale();n.setScale(v[0],v[1]),this.__dirtyPath||p&&!m&&o?(n=this.path.beginPath(t),p&&!m&&(n.setLineDash(p),n.setLineDashOffset(g)),this.buildPath(n,this.shape,!1),this.__dirtyPath=!1):(t.beginPath(),this.path.rebuildPath(t)),r&&n.fill(t),p&&m&&(t.setLineDash(p),t.lineDashOffset=g),o&&n.stroke(t),p&&m&&t.setLineDash([]),this.restoreTransform(t),null!=i.text&&this.drawRectText(t,this.getBoundingRect())},buildPath:function(t,e,i){},getBoundingRect:function(){var t=this._rect,e=this.style,i=!t;if(i){var n=this.path;this.__dirtyPath&&(n.beginPath(),this.buildPath(n,this.shape,!1)),t=n.getBoundingRect()}if(this._rect=t,e.hasStroke()){var o=this._rectWithStroke||(this._rectWithStroke=t.clone());if(this.__dirty||i){o.copy(t);var r=e.lineWidth,a=e.strokeNoScale?this.getLineScale():1;e.hasFill()||(r=Math.max(r,this.strokeContainThreshold||4)),a>1e-10&&(o.width+=r/a,o.height+=r/a,o.x-=r/a/2,o.y-=r/a/2)}return o}return t},contain:function(t,e){var i=this.transformCoordToLocal(t,e),n=this.getBoundingRect(),o=this.style;if(t=i[0],e=i[1],n.contain(t,e)){var r=this.path.data;if(o.hasStroke()){var a=o.lineWidth,l=o.strokeNoScale?this.getLineScale():1;if(l>1e-10&&(o.hasFill()||(a=Math.max(a,this.strokeContainThreshold)),s.containStroke(r,a/l,t,e)))return!0}if(o.hasFill())return s.contain(r,t,e)}return!1},dirty:function(t){null==t&&(t=!0),t&&(this.__dirtyPath=t,this._rect=null),this.__dirty=!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):o.prototype.attrKV.call(this,t,e)},setShape:function(t,e){var i=this.shape;if(i){if(r.isObject(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&&h(t[0]-1)>1e-10&&h(t[3]-1)>1e-10?Math.sqrt(h(t[0]*t[3]-t[2]*t[1])):1}},n.extend=function(t){var e=function(e){n.call(this,e),t.style&&this.style.extendFrom(t.style,!1);var i=t.shape;if(i){this.shape=this.shape||{};var o=this.shape;for(var r in i)!o.hasOwnProperty(r)&&i.hasOwnProperty(r)&&(o[r]=i[r])}t.init&&t.init.call(this,e)};r.inherits(e,n);for(var i in t)"style"!==i&&"shape"!==i&&(e.prototype[i]=t[i]);return e},r.inherits(n,o),t.exports=n},function(t,e,i){var n=i(1),o=i(4),r=i(17),a={};a.addCommas=function(t){return isNaN(t)?"-":(t=(t+"").split("."),t[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,"$1,")+(t.length>1?"."+t[1]:""))},a.toCamelCase=function(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},a.normalizeCssArray=function(t){var e=t.length;return"number"==typeof t?[t,t,t,t]:2===e?[t[0],t[1],t[0],t[1]]:3===e?[t[0],t[1],t[2],t[1]]:t};var s=a.encodeHTML=function(t){return String(t).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")},l=["a","b","c","d","e","f","g"],u=function(t,e){return"{"+t+(null==e?"":e)+"}"};a.formatTpl=function(t,e,i){n.isArray(e)||(e=[e]);var o=e.length;if(!o)return"";for(var r=e[0].$vars||[],a=0;a<r.length;a++){var h=l[a],c=u(h,0);t=t.replace(u(h),i?s(c):c)}for(var d=0;d<o;d++)for(var f=0;f<r.length;f++){var c=e[d][r[f]];t=t.replace(u(l[f],d),i?s(c):c)}return t};var h=function(t){return t<10?"0"+t:t};a.formatTime=function(t,e){"week"!==t&&"month"!==t&&"quarter"!==t&&"half-year"!==t&&"year"!==t||(t="MM-dd\nyyyy");var i=o.parseDate(e),n=i.getFullYear(),r=i.getMonth()+1,a=i.getDate(),s=i.getHours(),l=i.getMinutes(),u=i.getSeconds();return t=t.replace("MM",h(r)).toLowerCase().replace("yyyy",n).replace("yy",n%100).replace("dd",h(a)).replace("d",a).replace("hh",h(s)).replace("h",s).replace("mm",h(l)).replace("m",l).replace("ss",h(u)).replace("s",u)},a.capitalFirst=function(t){return t?t.charAt(0).toUpperCase()+t.substr(1):t},a.truncateText=r.truncateText,t.exports=a},function(t,e,i){"use strict";function n(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}var o=i(5),r=i(20),a=o.applyTransform,s=Math.min,l=Math.max;n.prototype={constructor:n,union:function(t){var e=s(t.x,this.x),i=s(t.y,this.y);this.width=l(t.x+t.width,this.x+this.width)-e,this.height=l(t.y+t.height,this.y+this.height)-i,this.x=e,this.y=i},applyTransform:function(){var t=[],e=[],i=[],n=[];return function(o){if(o){t[0]=i[0]=this.x,t[1]=n[1]=this.y,e[0]=n[0]=this.x+this.width,e[1]=i[1]=this.y+this.height,a(t,t,o),a(e,e,o),a(i,i,o),a(n,n,o),this.x=s(t[0],e[0],i[0],n[0]),this.y=s(t[1],e[1],i[1],n[1]);var r=l(t[0],e[0],i[0],n[0]),u=l(t[1],e[1],i[1],n[1]);this.width=r-this.x,this.height=u-this.y}}}(),calculateTransform:function(t){var e=this,i=t.width/e.width,n=t.height/e.height,o=r.create();return r.translate(o,o,[-e.x,-e.y]),r.scale(o,o,[i,n]),r.translate(o,o,[t.x,t.y]),o},intersect:function(t){if(!t)return!1;t instanceof n||(t=n.create(t));var e=this,i=e.x,o=e.x+e.width,r=e.y,a=e.y+e.height,s=t.x,l=t.x+t.width,u=t.y,h=t.y+t.height;return!(o<s||l<i||a<u||h<r)},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 n(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}}},n.create=function(t){return new n(t.x,t.y,t.width,t.height)},t.exports=n},function(t,e){function i(t){var e={},i={},n=t.match(/Firefox\/([\d.]+)/),o=t.match(/MSIE\s([\d.]+)/)||t.match(/Trident\/.+?rv:(([\d.]+))/),r=t.match(/Edge\/([\d.]+)/),a=/micromessenger/i.test(t);return n&&(i.firefox=!0,i.version=n[1]),o&&(i.ie=!0,i.version=o[1]),r&&(i.edge=!0,i.version=r[1]),a&&(i.weChat=!0),{browser:i,os:e,node:!1,canvasSupported:!!document.createElement("canvas").getContext,touchEventsSupported:"ontouchstart"in window&&!i.ie&&!i.edge,pointerEventsSupported:"onpointerdown"in window&&(i.edge||i.ie&&i.version>=11)}}var n={};n="undefined"==typeof navigator?{browser:{},os:{},node:!0,canvasSupported:!0}:i(navigator.userAgent),t.exports=n},function(t,e,i){function n(t,e,i){this.parentModel=e,this.ecModel=i,this.option=t}function o(t,e,i){for(var n=0;n<e.length&&(!e[n]||(t=t&&"object"==typeof t?t[e[n]]:null,null!=t));n++);return null==t&&i&&(t=i.get(e)),t}function r(t,e){var i=s.get(t,"getParent");return i?i.call(t,e):t.parentModel}var a=i(1),s=i(15),l=i(10);n.prototype={constructor:n,init:null,mergeOption:function(t){a.merge(this.option,t,!0)},get:function(t,e){return null==t?this.option:o(this.option,this.parsePath(t),!e&&r(this,t))},getShallow:function(t,e){var i=this.option,n=null==i?i:i[t],o=!e&&r(this,t);return null==n&&o&&(n=o.getShallow(t)),n},getModel:function(t,e){var i,a=null==t?this.option:o(this.option,t=this.parsePath(t));return e=e||(i=r(this,t))&&i.getModel(t),new n(a,e,this.ecModel)},isEmpty:function(){return null==this.option},restoreData:function(){},clone:function(){var t=this.constructor;return new t(a.clone(this.option))},setReadOnly:function(t){s.setReadOnly(this,t)},parsePath:function(t){return"string"==typeof t&&(t=t.split(".")),t},customizeGetParent:function(t){s.set(this,"getParent",t)},isAnimationEnabled:function(){if(!l.node){if(null!=this.option.animation)return!!this.option.animation;if(this.parentModel)return this.parentModel.isAnimationEnabled()}}},s.enableClassExtend(n);var u=a.mixin;u(n,i(131)),u(n,i(128)),u(n,i(132)),u(n,i(130)),t.exports=n},function(t,e,i){"use strict";function n(t,e,i,n,o){var r=0,a=0;null==n&&(n=1/0),null==o&&(o=1/0);var s=0;e.eachChild(function(l,u){var h,c,d=l.position,f=l.getBoundingRect(),p=e.childAt(u+1),g=p&&p.getBoundingRect();if("horizontal"===t){var m=f.width+(g?-g.x+f.x:0);h=r+m,h>n||l.newline?(r=0,h=m,a+=s+i,s=f.height):s=Math.max(s,f.height)}else{var v=f.height+(g?-g.y+f.y:0);c=a+v,c>o||l.newline?(r+=s+i,a=0,c=v,s=f.width):s=Math.max(s,f.width)}l.newline||(d[0]=r,d[1]=a,"horizontal"===t?r=h+i:a=c+i)})}var o=i(1),r=i(9),a=i(4),s=i(8),l=a.parsePercent,u=o.each,h={},c=h.LOCATION_PARAMS=["left","right","top","bottom","width","height"];h.box=n,h.vbox=o.curry(n,"vertical"),h.hbox=o.curry(n,"horizontal"),h.getAvailableSize=function(t,e,i){var n=e.width,o=e.height,r=l(t.x,n),a=l(t.y,o),u=l(t.x2,n),h=l(t.y2,o);return(isNaN(r)||isNaN(parseFloat(t.x)))&&(r=0),(isNaN(u)||isNaN(parseFloat(t.x2)))&&(u=n),(isNaN(a)||isNaN(parseFloat(t.y)))&&(a=0),(isNaN(h)||isNaN(parseFloat(t.y2)))&&(h=o),i=s.normalizeCssArray(i||0),{width:Math.max(u-r-i[1]-i[3],0),height:Math.max(h-a-i[0]-i[2],0)}},h.getLayoutRect=function(t,e,i){i=s.normalizeCssArray(i||0);var n=e.width,o=e.height,a=l(t.left,n),u=l(t.top,o),h=l(t.right,n),c=l(t.bottom,o),d=l(t.width,n),f=l(t.height,o),p=i[2]+i[0],g=i[1]+i[3],m=t.aspect;switch(isNaN(d)&&(d=n-h-g-a),isNaN(f)&&(f=o-c-p-u),isNaN(d)&&isNaN(f)&&(m>n/o?d=.8*n:f=.8*o),null!=m&&(isNaN(d)&&(d=m*f),isNaN(f)&&(f=d/m)),isNaN(a)&&(a=n-h-d-g),isNaN(u)&&(u=o-c-f-p),t.left||t.right){case"center":a=n/2-d/2-i[3];break;case"right":a=n-d-g}switch(t.top||t.bottom){case"middle":case"center":u=o/2-f/2-i[0];break;case"bottom":u=o-f-p}a=a||0,u=u||0,isNaN(d)&&(d=n-a-(h||0)),isNaN(f)&&(f=o-u-(c||0));var v=new r(a+i[3],u+i[0],d,f);return v.margin=i,v},h.positionElement=function(t,e,i,n,a){var s=!a||!a.hv||a.hv[0],l=!a||!a.hv||a.hv[1],u=a&&a.boundingMode||"all";if(s||l){var c;if("raw"===u)c="group"===t.type?new r(0,0,+e.width||0,+e.height||0):t.getBoundingRect();else if(c=t.getBoundingRect(),t.needLocalTransform()){var d=t.getLocalTransform();c=c.clone(),c.applyTransform(d)}e=h.getLayoutRect(o.defaults({width:c.width,
-height:c.height},e),i,n);var f=t.position,p=s?e.x-c.x:0,g=l?e.y-c.y:0;t.attr("position","raw"===u?[p,g]:[f[0]+p,f[1]+g])}},h.mergeLayoutParam=function(t,e,i){function n(n){var o={},s=0,l={},h=0,c=i.ignoreSize?1:2;if(u(n,function(e){l[e]=t[e]}),u(n,function(t){r(e,t)&&(o[t]=l[t]=e[t]),a(o,t)&&s++,a(l,t)&&h++}),h!==c&&s){if(s>=c)return o;for(var d=0;d<n.length;d++){var f=n[d];if(!r(o,f)&&r(t,f)){o[f]=t[f];break}}return o}return l}function r(t,e){return t.hasOwnProperty(e)}function a(t,e){return null!=t[e]&&"auto"!==t[e]}function s(t,e,i){u(t,function(t){e[t]=i[t]})}!o.isObject(i)&&(i={});var l=["width","left","right"],h=["height","top","bottom"],c=n(l),d=n(h);s(l,t,c),s(h,t,d)},h.getLayoutParams=function(t){return h.copyLayoutParams({},t)},h.copyLayoutParams=function(t,e){return e&&t&&u(c,function(i){e.hasOwnProperty(i)&&(t[i]=e[i])}),t},t.exports=h},function(t,e,i){function n(t){var e=[];return r.each(h.getClassesByMainType(t),function(t){a.apply(e,t.prototype.dependencies||[])}),r.map(e,function(t){return l.parseClassType(t).main})}var o=i(11),r=i(1),a=Array.prototype.push,s=i(44),l=i(15),u=i(12),h=o.extend({type:"component",id:"",name:"",mainType:"",subType:"",componentIndex:0,defaultOption:null,ecModel:null,dependentModels:[],uid:null,layoutMode:null,$constructor:function(t,e,i,n){o.call(this,t,e,i,n),this.uid=s.getUID("componentModel")},init:function(t,e,i,n){this.mergeDefaultAndTheme(t,i)},mergeDefaultAndTheme:function(t,e){var i=this.layoutMode,n=i?u.getLayoutParams(t):{},o=e.getTheme();r.merge(t,o.get(this.mainType)),r.merge(t,this.getDefaultOption()),i&&u.mergeLayoutParam(t,n,i)},mergeOption:function(t,e){r.merge(this.option,t,!0);var i=this.layoutMode;i&&u.mergeLayoutParam(this.option,t,i)},optionUpdated:function(t,e){},getDefaultOption:function(){if(!l.hasOwn(this,"__defaultOption")){for(var t=[],e=this.constructor;e;){var i=e.prototype.defaultOption;i&&t.push(i),e=e.superClass}for(var n={},o=t.length-1;o>=0;o--)n=r.merge(n,t[o],!0);l.set(this,"__defaultOption",n)}return l.get(this,"__defaultOption")},getReferringComponents:function(t){return this.ecModel.queryComponents({mainType:t,index:this.get(t+"Index",!0),id:this.get(t+"Id",!0)})}});l.enableClassManagement(h,{registerWhenExtend:!0}),s.enableSubTypeDefaulter(h),s.enableTopologicalTravel(h,n),r.mixin(h,i(129)),t.exports=h},function(t,e,i){(function(e){function n(t){return d.isArray(t)||(t=[t]),t}function o(t,e){var i=t.dimensions,n=new v(d.map(i,t.getDimensionInfo,t),t.hostModel);m(n,t);for(var o=n._storage={},r=t._storage,a=0;a<i.length;a++){var s=i[a],l=r[s];d.indexOf(e,s)>=0?o[s]=new l.constructor(r[s].length):o[s]=r[s]}return n}var r="undefined",a="undefined"==typeof window?e:window,s=typeof a.Float64Array===r?Array:a.Float64Array,l=typeof a.Int32Array===r?Array:a.Int32Array,u={"float":s,"int":l,ordinal:Array,number:Array,time:Array},h=i(11),c=i(43),d=i(1),f=i(6),p=d.isObject,g=["stackedOn","hasItemOption","_nameList","_idList","_rawData"],m=function(t,e){d.each(g.concat(e.__wrappedMethods||[]),function(i){e.hasOwnProperty(i)&&(t[i]=e[i])}),t.__wrappedMethods=e.__wrappedMethods},v=function(t,e){t=t||["x","y"];for(var i={},n=[],o=0;o<t.length;o++){var r,a={};"string"==typeof t[o]?(r=t[o],a={name:r,stackable:!1,type:"number"}):(a=t[o],r=a.name,a.type=a.type||"number"),n.push(r),i[r]=a}this.dimensions=n,this._dimensionInfos=i,this.hostModel=e,this.dataType,this.indices=[],this._storage={},this._nameList=[],this._idList=[],this._optionModels=[],this.stackedOn=null,this._visual={},this._layout={},this._itemVisuals=[],this._itemLayouts=[],this._graphicEls=[],this._rawData,this._extent},y=v.prototype;y.type="list",y.hasItemOption=!0,y.getDimension=function(t){return isNaN(t)||(t=this.dimensions[t]||t),t},y.getDimensionInfo=function(t){return d.clone(this._dimensionInfos[this.getDimension(t)])},y.initData=function(t,e,i){t=t||[],this._rawData=t;var n=this._storage={},o=this.indices=[],r=this.dimensions,a=t.length,s=this._dimensionInfos,l=[],h={};e=e||[];for(var c=0;c<r.length;c++){var d=s[r[c]],p=u[d.type];n[r[c]]=new p(a)}var g=this;i||(g.hasItemOption=!1),i=i||function(t,e,i,n){var o=f.getDataItemValue(t);return f.isDataItemOption(t)&&(g.hasItemOption=!0),f.converDataValue(o instanceof Array?o[n]:o,s[e])};for(var m=0;m<t.length;m++){for(var v=t[m],y=0;y<r.length;y++){var x=r[y],_=n[x];_[m]=i(v,x,m,y)}o.push(m)}for(var c=0;c<t.length;c++){e[c]||t[c]&&null!=t[c].name&&(e[c]=t[c].name);var b=e[c]||"",w=t[c]&&t[c].id;!w&&b&&(h[b]=h[b]||0,w=b,h[b]>0&&(w+="__ec__"+h[b]),h[b]++),w&&(l[c]=w)}this._nameList=e,this._idList=l},y.count=function(){return this.indices.length},y.get=function(t,e,i){var n=this._storage,o=this.indices[e];if(null==o)return NaN;var r=n[t]&&n[t][o];if(i){var a=this._dimensionInfos[t];if(a&&a.stackable)for(var s=this.stackedOn;s;){var l=s.get(t,e);(r>=0&&l>0||r<=0&&l<0)&&(r+=l),s=s.stackedOn}}return r},y.getValues=function(t,e,i){var n=[];d.isArray(t)||(i=e,e=t,t=this.dimensions);for(var o=0,r=t.length;o<r;o++)n.push(this.get(t[o],e,i));return n},y.hasValue=function(t){for(var e=this.dimensions,i=this._dimensionInfos,n=0,o=e.length;n<o;n++)if("ordinal"!==i[e[n]].type&&isNaN(this.get(e[n],t)))return!1;return!0},y.getDataExtent=function(t,e,i){t=this.getDimension(t);var n=this._storage[t],o=this.getDimensionInfo(t);e=o&&o.stackable&&e;var r,a=(this._extent||(this._extent={}))[t+!!e];if(a)return a;if(n){for(var s=1/0,l=-(1/0),u=0,h=this.count();u<h;u++)r=this.get(t,u,e),i&&!i(r,t,u)||(r<s&&(s=r),r>l&&(l=r));return this._extent[t+!!e]=[s,l]}return[1/0,-(1/0)]},y.getSum=function(t,e){var i=this._storage[t],n=0;if(i)for(var o=0,r=this.count();o<r;o++){var a=this.get(t,o,e);isNaN(a)||(n+=a)}return n},y.indexOf=function(t,e){var i=this._storage,n=i[t],o=this.indices;if(n)for(var r=0,a=o.length;r<a;r++){var s=o[r];if(n[s]===e)return r}return-1},y.indexOfName=function(t){for(var e=this.indices,i=this._nameList,n=0,o=e.length;n<o;n++){var r=e[n];if(i[r]===t)return n}return-1},y.indexOfRawIndex=function(t){var e=this.indices,i=e[t];if(null!=i&&i===t)return t;for(var n=0,o=e.length-1;n<=o;){var r=(n+o)/2|0;if(e[r]<t)n=r+1;else{if(!(e[r]>t))return r;o=r-1}}return-1},y.indexOfNearest=function(t,e,i,n){var o=this._storage,r=o[t];null==n&&(n=1/0);var a=-1;if(r)for(var s=Number.MAX_VALUE,l=0,u=this.count();l<u;l++){var h=e-this.get(t,l,i),c=Math.abs(h);h<=n&&(c<s||c===s&&h>0)&&(s=c,a=l)}return a},y.getRawIndex=function(t){var e=this.indices[t];return null==e?-1:e},y.getRawDataItem=function(t){return this._rawData[this.getRawIndex(t)]},y.getName=function(t){return this._nameList[this.indices[t]]||""},y.getId=function(t){return this._idList[this.indices[t]]||this.getRawIndex(t)+""},y.each=function(t,e,i,o){"function"==typeof t&&(o=i,i=e,e=t,t=[]),t=d.map(n(t),this.getDimension,this);var r=[],a=t.length,s=this.indices;o=o||this;for(var l=0;l<s.length;l++)switch(a){case 0:e.call(o,l);break;case 1:e.call(o,this.get(t[0],l,i),l);break;case 2:e.call(o,this.get(t[0],l,i),this.get(t[1],l,i),l);break;default:for(var u=0;u<a;u++)r[u]=this.get(t[u],l,i);r[u]=l,e.apply(o,r)}},y.filterSelf=function(t,e,i,o){"function"==typeof t&&(o=i,i=e,e=t,t=[]),t=d.map(n(t),this.getDimension,this);var r=[],a=[],s=t.length,l=this.indices;o=o||this;for(var u=0;u<l.length;u++){var h;if(1===s)h=e.call(o,this.get(t[0],u,i),u);else{for(var c=0;c<s;c++)a[c]=this.get(t[c],u,i);a[c]=u,h=e.apply(o,a)}h&&r.push(l[u])}return this.indices=r,this._extent={},this},y.mapArray=function(t,e,i,n){"function"==typeof t&&(n=i,i=e,e=t,t=[]);var o=[];return this.each(t,function(){o.push(e&&e.apply(this,arguments))},i,n),o},y.map=function(t,e,i,r){t=d.map(n(t),this.getDimension,this);var a=o(this,t),s=a.indices=this.indices,l=a._storage,u=[];return this.each(t,function(){var i=arguments[arguments.length-1],n=e&&e.apply(this,arguments);if(null!=n){"number"==typeof n&&(u[0]=n,n=u);for(var o=0;o<n.length;o++){var r=t[o],a=l[r],h=s[i];a&&(a[h]=n[o])}}},i,r),a},y.downSample=function(t,e,i,n){for(var r=o(this,[t]),a=this._storage,s=r._storage,l=this.indices,u=r.indices=[],h=[],c=[],d=Math.floor(1/e),f=s[t],p=this.count(),g=0;g<a[t].length;g++)s[t][g]=a[t][g];for(var g=0;g<p;g+=d){d>p-g&&(d=p-g,h.length=d);for(var m=0;m<d;m++){var v=l[g+m];h[m]=f[v],c[m]=v}var y=i(h),v=c[n(h,y)||0];f[v]=y,u.push(v)}return r},y.getItemModel=function(t){var e=this.hostModel;return t=this.indices[t],new h(this._rawData[t],e,e&&e.ecModel)},y.diff=function(t){var e,i=this._idList,n=t&&t._idList,o="e\0\0";return new c(t?t.indices:[],this.indices,function(t){return null!=(e=n[t])?e:o+t},function(t){return null!=(e=i[t])?e:o+t})},y.getVisual=function(t){var e=this._visual;return e&&e[t]},y.setVisual=function(t,e){if(p(t))for(var i in t)t.hasOwnProperty(i)&&this.setVisual(i,t[i]);else this._visual=this._visual||{},this._visual[t]=e},y.setLayout=function(t,e){if(p(t))for(var i in t)t.hasOwnProperty(i)&&this.setLayout(i,t[i]);else this._layout[t]=e},y.getLayout=function(t){return this._layout[t]},y.getItemLayout=function(t){return this._itemLayouts[t]},y.setItemLayout=function(t,e,i){this._itemLayouts[t]=i?d.extend(this._itemLayouts[t]||{},e):e},y.clearItemLayouts=function(){this._itemLayouts.length=0},y.getItemVisual=function(t,e,i){var n=this._itemVisuals[t],o=n&&n[e];return null!=o||i?o:this.getVisual(e)},y.setItemVisual=function(t,e,i){var n=this._itemVisuals[t]||{};if(this._itemVisuals[t]=n,p(e))for(var o in e)e.hasOwnProperty(o)&&(n[o]=e[o]);else n[e]=i},y.clearAllVisual=function(){this._visual={},this._itemVisuals=[]};var x=function(t){t.seriesIndex=this.seriesIndex,t.dataIndex=this.dataIndex,t.dataType=this.dataType};y.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(x,e)),this._graphicEls[t]=e},y.getItemGraphicEl=function(t){return this._graphicEls[t]},y.eachItemGraphicEl=function(t,e){d.each(this._graphicEls,function(i,n){i&&t&&t.call(e,i,n)})},y.cloneShallow=function(){var t=d.map(this.dimensions,this.getDimensionInfo,this),e=new v(t,this.hostModel);return e._storage=this._storage,m(e,this),e.indices=this.indices.slice(),this._extent&&(e._extent=d.extend({},this._extent)),e},y.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(d.slice(arguments)))})},y.TRANSFERABLE_METHODS=["cloneShallow","downSample","map"],y.CHANGABLE_METHODS=["filterSelf"],t.exports=v}).call(e,function(){return this}())},function(t,e,i){function n(t){a.assert(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(t),'componentType "'+t+'" illegal')}function o(t,e){var i=a.slice(arguments,2);return this.superClass.prototype[e].apply(t,i)}function r(t,e,i){return this.superClass.prototype[e].apply(t,i)}var a=i(1),s={},l=".",u="___EC__COMPONENT__CONTAINER___",h="\0ec_\0";s.set=function(t,e,i){return t[h+e]=i},s.get=function(t,e){return t[h+e]},s.hasOwn=function(t,e){return t.hasOwnProperty(h+e)};var c=s.parseClassType=function(t){var e={main:"",sub:""};return t&&(t=t.split(l),e.main=t[0]||"",e.sub=t[1]||""),e};s.enableClassExtend=function(t,e){t.$constructor=t,t.extend=function(t){var e=this,i=function(){t.$constructor?t.$constructor.apply(this,arguments):e.apply(this,arguments)};return a.extend(i.prototype,t),i.extend=this.extend,i.superCall=o,i.superApply=r,a.inherits(i,this),i.superClass=e,i}},s.enableClassManagement=function(t,e){function i(t){var e=o[t.main];return e&&e[u]||(e=o[t.main]={},e[u]=!0),e}e=e||{};var o={};if(t.registerClass=function(t,e){if(e)if(n(e),e=c(e),e.sub){if(e.sub!==u){var r=i(e);r[e.sub]=t}}else o[e.main]=t;return t},t.getClass=function(t,e,i){var n=o[t];if(n&&n[u]&&(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},t.getClassesByMainType=function(t){t=c(t);var e=[],i=o[t.main];return i&&i[u]?a.each(i,function(t,i){i!==u&&e.push(t)}):e.push(i),e},t.hasClass=function(t){return t=c(t),!!o[t.main]},t.getAllClassMainTypes=function(){var t=[];return a.each(o,function(e,i){t.push(i)}),t},t.hasSubTypes=function(t){t=c(t);var e=o[t.main];return e&&e[u]},t.parseClassType=c,e.registerWhenExtend){var r=t.extend;r&&(t.extend=function(e){var i=r.call(this,e);return t.registerClass(i,e.type)})}return t},s.setReadOnly=function(t,e){},t.exports=s},function(t,e,i){"use strict";var n=i(1),o=i(8),r=i(15),a=i(6),s=i(13),l=i(57),u=i(10),h=i(12),c=r.set,d=r.get,f=o.encodeHTML,p=o.addCommas,g=s.extend({type:"series.__base__",seriesIndex:0,coordinateSystem:null,defaultOption:null,legendDataProvider:null,visualColorAccessPath:"itemStyle.normal.color",layoutMode:null,init:function(t,e,i,n){this.seriesIndex=this.componentIndex,this.mergeDefaultAndTheme(t,i),c(this,"dataBeforeProcessed",this.getInitialData(t,i)),this.restoreData()},mergeDefaultAndTheme:function(t,e){var i=this.layoutMode,o=i?h.getLayoutParams(t):{};n.merge(t,e.getTheme().get(this.subType)),n.merge(t,this.getDefaultOption()),a.defaultEmphasis(t.label,a.LABEL_OPTIONS),this.fillDataTextStyle(t.data),i&&h.mergeLayoutParam(t,o,i)},mergeOption:function(t,e){t=n.merge(this.option,t,!0),this.fillDataTextStyle(t.data);var i=this.layoutMode;i&&h.mergeLayoutParam(this.option,t,i);var o=this.getInitialData(t,e);o&&(c(this,"data",o),c(this,"dataBeforeProcessed",o.cloneShallow()))},fillDataTextStyle:function(t){if(t)for(var e=0;e<t.length;e++)t[e]&&t[e].label&&a.defaultEmphasis(t[e].label,a.LABEL_OPTIONS)},getInitialData:function(){},getData:function(t){var e=d(this,"data");return null==t?e:e.getLinkedData(t)},setData:function(t){c(this,"data",t)},getRawData:function(){return d(this,"dataBeforeProcessed")},coordDimToDataDim:function(t){return[t]},dataDimToCoordDim:function(t){return t},getBaseAxis:function(){var t=this.coordinateSystem;return t&&t.getBaseAxis&&t.getBaseAxis()},formatTooltip:function(t,e,i){function r(t){var i=[];return n.each(t,function(t,n){var r,s=a.getDimensionInfo(n),l=s&&s.type;r="ordinal"===l?t+"":"time"===l?e?"":o.formatTime("yyyy/MM/dd hh:mm:ss",t):p(t),r&&i.push(r)}),i.join(", ")}var a=d(this,"data"),s=this.getRawValue(t),l=f(n.isArray(s)?r(s):p(s)),u=a.getName(t),h=a.getItemVisual(t,"color");n.isObject(h)&&h.colorStops&&(h=(h.colorStops[0]||{}).color),h=h||"transparent";var c='<span style="display:inline-block;margin-right:5px;border-radius:10px;width:9px;height:9px;background-color:'+f(h)+'"></span>',g=this.name;return"\0-"===g&&(g=""),e?c+f(this.name)+" : "+l:(g&&f(g)+"<br />")+c+(u?f(u)+" : "+l:l)},isAnimationEnabled:function(){if(u.node)return!1;var t=this.getShallow("animation");return t&&this.getData().count()>this.getShallow("animationThreshold")&&(t=!1),t},restoreData:function(){c(this,"data",d(this,"dataBeforeProcessed").cloneShallow())},getColorFromPalette:function(t,e){var i=this.ecModel,n=l.getColorFromPalette.call(this,t,e);return n||(n=i.getColorFromPalette(t,e)),n},getAxisTooltipDataIndex:null,getTooltipPosition:null});n.mixin(g,a.dataFormatMixin),n.mixin(g,l),t.exports=g},function(t,e,i){function n(t,e){var i=t+":"+e;if(l[i])return l[i];for(var n=(t+"").split("\n"),o=0,r=0,a=n.length;r<a;r++)o=Math.max(p.measureText(n[r],e).width,o);return u>h&&(u=0,l={}),u++,l[i]=o,o}function o(t,e,i,o){var r=((t||"")+"").split("\n").length,a=n(t,e),s=n("国",e),l=r*s,u=new d(0,0,a,l);switch(u.lineHeight=s,o){case"bottom":case"alphabetic":u.y-=s;break;case"middle":u.y-=s/2}switch(i){case"end":case"right":u.x-=u.width;break;case"center":u.x-=u.width/2}return u}function r(t,e,i,n){var o=e.x,r=e.y,a=e.height,s=e.width,l=i.height,u=a/2-l/2,h="left";switch(t){case"left":o-=n,r+=u,h="right";break;case"right":o+=n+s,r+=u,h="left";break;case"top":o+=s/2,r-=n+l,h="center";break;case"bottom":o+=s/2,r+=a+n,h="center";break;case"inside":o+=s/2,r+=u,h="center";break;case"insideLeft":o+=n,r+=u,h="left";break;case"insideRight":o+=s-n,r+=u,h="right";break;case"insideTop":o+=s/2,r+=n,h="center";break;case"insideBottom":o+=s/2,r+=a-l-n,h="center";break;case"insideTopLeft":o+=n,r+=n,h="left";break;case"insideTopRight":o+=s-n,r+=n,h="right";break;case"insideBottomLeft":o+=n,r+=a-l-n;break;case"insideBottomRight":o+=s-n,r+=a-l-n,h="right"}return{x:o,y:r,textAlign:h,textBaseline:"top"}}function a(t,e,i,o,r){if(!e)return"";r=r||{},o=f(o,"...");for(var a=f(r.maxIterations,2),l=f(r.minChar,0),u=n("国",i),h=n("a",i),c=f(r.placeholder,""),d=e=Math.max(0,e-1),p=0;p<l&&d>=h;p++)d-=h;var g=n(o);g>d&&(o="",g=0),d=e-g;for(var m=(t+"").split("\n"),p=0,v=m.length;p<v;p++){var y=m[p],x=n(y,i);if(!(x<=e)){for(var _=0;;_++){if(x<=d||_>=a){y+=o;break}var b=0===_?s(y,d,h,u):x>0?Math.floor(y.length*d/x):0;y=y.substr(0,b),x=n(y,i)}""===y&&(y=c),m[p]=y}}return m.join("\n")}function s(t,e,i,n){for(var o=0,r=0,a=t.length;r<a&&o<e;r++){var s=t.charCodeAt(r);o+=0<=s&&s<=127?i:n}return r}var l={},u=0,h=5e3,c=i(1),d=i(9),f=c.retrieve,p={getWidth:n,getBoundingRect:o,adjustTextPositionOnRect:r,truncateText:a,measureText:function(t,e){var i=c.getContext();return i.font=e||"12px sans-serif",i.measureText(t)}};t.exports=p},function(t,e,i){"use strict";function n(t){return t>-w&&t<w}function o(t){return t>w||t<-w}function r(t,e,i,n,o){var r=1-o;return r*r*(r*t+3*o*e)+o*o*(o*n+3*r*i)}function a(t,e,i,n,o){var r=1-o;return 3*(((e-t)*r+2*(i-e)*o)*r+(n-i)*o*o)}function s(t,e,i,o,r,a){var s=o+3*(e-i)-t,l=3*(i-2*e+t),u=3*(e-t),h=t-r,c=l*l-3*s*u,d=l*u-9*s*h,f=u*u-3*l*h,p=0;if(n(c)&&n(d))if(n(l))a[0]=0;else{var g=-u/l;g>=0&&g<=1&&(a[p++]=g)}else{var m=d*d-4*c*f;if(n(m)){var v=d/c,g=-l/s+v,y=-v/2;g>=0&&g<=1&&(a[p++]=g),y>=0&&y<=1&&(a[p++]=y)}else if(m>0){var x=b(m),w=c*l+1.5*s*(-d+x),S=c*l+1.5*s*(-d-x);w=w<0?-_(-w,I):_(w,I),S=S<0?-_(-S,I):_(S,I);var g=(-l-(w+S))/(3*s);g>=0&&g<=1&&(a[p++]=g)}else{var T=(2*c*l-3*s*d)/(2*b(c*c*c)),A=Math.acos(T)/3,L=b(c),C=Math.cos(A),g=(-l-2*L*C)/(3*s),y=(-l+L*(C+M*Math.sin(A)))/(3*s),D=(-l+L*(C-M*Math.sin(A)))/(3*s);g>=0&&g<=1&&(a[p++]=g),y>=0&&y<=1&&(a[p++]=y),D>=0&&D<=1&&(a[p++]=D)}}return p}function l(t,e,i,r,a){var s=6*i-12*e+6*t,l=9*e+3*r-3*t-9*i,u=3*e-3*t,h=0;if(n(l)){if(o(s)){var c=-u/s;c>=0&&c<=1&&(a[h++]=c)}}else{var d=s*s-4*l*u;if(n(d))a[0]=-s/(2*l);else if(d>0){var f=b(d),c=(-s+f)/(2*l),p=(-s-f)/(2*l);c>=0&&c<=1&&(a[h++]=c),p>=0&&p<=1&&(a[h++]=p)}}return h}function u(t,e,i,n,o,r){var a=(e-t)*o+t,s=(i-e)*o+e,l=(n-i)*o+i,u=(s-a)*o+a,h=(l-s)*o+s,c=(h-u)*o+u;r[0]=t,r[1]=a,r[2]=u,r[3]=c,r[4]=c,r[5]=h,r[6]=l,r[7]=n}function h(t,e,i,n,o,a,s,l,u,h,c){var d,f,p,g,m,v=.005,y=1/0;T[0]=u,T[1]=h;for(var _=0;_<1;_+=.05)A[0]=r(t,i,o,s,_),A[1]=r(e,n,a,l,_),g=x(T,A),g<y&&(d=_,y=g);y=1/0;for(var w=0;w<32&&!(v<S);w++)f=d-v,p=d+v,A[0]=r(t,i,o,s,f),A[1]=r(e,n,a,l,f),g=x(A,T),f>=0&&g<y?(d=f,y=g):(L[0]=r(t,i,o,s,p),L[1]=r(e,n,a,l,p),m=x(L,T),p<=1&&m<y?(d=p,y=m):v*=.5);return c&&(c[0]=r(t,i,o,s,d),c[1]=r(e,n,a,l,d)),b(y)}function c(t,e,i,n){var o=1-n;return o*(o*t+2*n*e)+n*n*i}function d(t,e,i,n){return 2*((1-n)*(e-t)+n*(i-e))}function f(t,e,i,r,a){var s=t-2*e+i,l=2*(e-t),u=t-r,h=0;if(n(s)){if(o(l)){var c=-u/l;c>=0&&c<=1&&(a[h++]=c)}}else{var d=l*l-4*s*u;if(n(d)){var c=-l/(2*s);c>=0&&c<=1&&(a[h++]=c)}else if(d>0){var f=b(d),c=(-l+f)/(2*s),p=(-l-f)/(2*s);c>=0&&c<=1&&(a[h++]=c),p>=0&&p<=1&&(a[h++]=p)}}return h}function p(t,e,i){var n=t+i-2*e;return 0===n?.5:(t-e)/n}function g(t,e,i,n,o){var r=(e-t)*n+t,a=(i-e)*n+e,s=(a-r)*n+r;o[0]=t,o[1]=r,o[2]=s,o[3]=s,o[4]=a,o[5]=i}function m(t,e,i,n,o,r,a,s,l){var u,h=.005,d=1/0;T[0]=a,T[1]=s;for(var f=0;f<1;f+=.05){A[0]=c(t,i,o,f),A[1]=c(e,n,r,f);var p=x(T,A);p<d&&(u=f,d=p)}d=1/0;for(var g=0;g<32&&!(h<S);g++){var m=u-h,v=u+h;A[0]=c(t,i,o,m),A[1]=c(e,n,r,m);var p=x(A,T);if(m>=0&&p<d)u=m,d=p;else{L[0]=c(t,i,o,v),L[1]=c(e,n,r,v);var y=x(L,T);v<=1&&y<d?(u=v,d=y):h*=.5}}return l&&(l[0]=c(t,i,o,u),l[1]=c(e,n,r,u)),b(d)}var v=i(5),y=v.create,x=v.distSquare,_=Math.pow,b=Math.sqrt,w=1e-8,S=1e-4,M=b(3),I=1/3,T=y(),A=y(),L=y();t.exports={cubicAt:r,cubicDerivativeAt:a,cubicRootAt:s,cubicExtrema:l,cubicSubdivide:u,cubicProjectPoint:h,quadraticAt:c,quadraticDerivativeAt:d,quadraticRootAt:f,quadraticExtremum:p,quadraticSubdivide:g,quadraticProjectPoint:m}},function(t,e){function i(t){return t=Math.round(t),t<0?0:t>255?255:t}function n(t){return t=Math.round(t),t<0?0:t>360?360:t}function o(t){return t<0?0:t>1?1:t}function r(t){return i(t.length&&"%"===t.charAt(t.length-1)?parseFloat(t)/100*255:parseInt(t,10))}function a(t){return o(t.length&&"%"===t.charAt(t.length-1)?parseFloat(t)/100:parseFloat(t))}function s(t,e,i){return i<0?i+=1:i>1&&(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 l(t,e,i){return t+(e-t)*i}function u(t){if(t){t+="";var e=t.replace(/ /g,"").toLowerCase();if(e in x)return x[e].slice();if("#"!==e.charAt(0)){var i=e.indexOf("("),n=e.indexOf(")");if(i!==-1&&n+1===e.length){var o=e.substr(0,i),s=e.substr(i+1,n-(i+1)).split(","),l=1;switch(o){case"rgba":if(4!==s.length)return;l=a(s.pop());case"rgb":if(3!==s.length)return;return[r(s[0]),r(s[1]),r(s[2]),l];case"hsla":if(4!==s.length)return;return s[3]=a(s[3]),h(s);case"hsl":if(3!==s.length)return;return h(s);default:return}}}else{if(4===e.length){var u=parseInt(e.substr(1),16);if(!(u>=0&&u<=4095))return;return[(3840&u)>>4|(3840&u)>>8,240&u|(240&u)>>4,15&u|(15&u)<<4,1]}if(7===e.length){var u=parseInt(e.substr(1),16);if(!(u>=0&&u<=16777215))return;return[(16711680&u)>>16,(65280&u)>>8,255&u,1]}}}}function h(t){var e=(parseFloat(t[0])%360+360)%360/360,n=a(t[1]),o=a(t[2]),r=o<=.5?o*(n+1):o+n-o*n,l=2*o-r,u=[i(255*s(l,r,e+1/3)),i(255*s(l,r,e)),i(255*s(l,r,e-1/3))];return 4===t.length&&(u[3]=t[3]),u}function c(t){if(t){var e,i,n=t[0]/255,o=t[1]/255,r=t[2]/255,a=Math.min(n,o,r),s=Math.max(n,o,r),l=s-a,u=(s+a)/2;if(0===l)e=0,i=0;else{i=u<.5?l/(s+a):l/(2-s-a);var h=((s-n)/6+l/2)/l,c=((s-o)/6+l/2)/l,d=((s-r)/6+l/2)/l;n===s?e=d-c:o===s?e=1/3+h-d:r===s&&(e=2/3+c-h),e<0&&(e+=1),e>1&&(e-=1)}var f=[360*e,i,u];return null!=t[3]&&f.push(t[3]),f}}function d(t,e){var i=u(t);if(i){for(var n=0;n<3;n++)e<0?i[n]=i[n]*(1-e)|0:i[n]=(255-i[n])*e+i[n]|0;return y(i,4===i.length?"rgba":"rgb")}}function f(t,e){var i=u(t);if(i)return((1<<24)+(i[0]<<16)+(i[1]<<8)+ +i[2]).toString(16).slice(1)}function p(t,e,n){if(e&&e.length&&t>=0&&t<=1){n=n||[0,0,0,0];var o=t*(e.length-1),r=Math.floor(o),a=Math.ceil(o),s=e[r],u=e[a],h=o-r;return n[0]=i(l(s[0],u[0],h)),n[1]=i(l(s[1],u[1],h)),n[2]=i(l(s[2],u[2],h)),n[3]=i(l(s[3],u[3],h)),n}}function g(t,e,n){if(e&&e.length&&t>=0&&t<=1){var r=t*(e.length-1),a=Math.floor(r),s=Math.ceil(r),h=u(e[a]),c=u(e[s]),d=r-a,f=y([i(l(h[0],c[0],d)),i(l(h[1],c[1],d)),i(l(h[2],c[2],d)),o(l(h[3],c[3],d))],"rgba");return n?{color:f,leftIndex:a,rightIndex:s,value:r}:f}}function m(t,e,i,o){if(t=u(t))return t=c(t),null!=e&&(t[0]=n(e)),null!=i&&(t[1]=a(i)),null!=o&&(t[2]=a(o)),y(h(t),"rgba")}function v(t,e){if(t=u(t),t&&null!=e)return t[3]=o(e),y(t,"rgba")}function y(t,e){var i=t[0]+","+t[1]+","+t[2];return"rgba"!==e&&"hsva"!==e&&"hsla"!==e||(i+=","+t[3]),e+"("+i+")"}var x={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]};t.exports={parse:u,lift:d,toHex:f,fastMapToColor:p,mapToColor:g,modifyHSL:m,modifyAlpha:v,stringify:y}},function(t,e){var i="undefined"==typeof Float32Array?Array:Float32Array,n={create:function(){var t=new i(6);return n.identity(t),t},identity:function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t},copy:function(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},mul:function(t,e,i){var n=e[0]*i[0]+e[2]*i[1],o=e[1]*i[0]+e[3]*i[1],r=e[0]*i[2]+e[2]*i[3],a=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]=o,t[2]=r,t[3]=a,t[4]=s,t[5]=l,t},translate:function(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},rotate:function(t,e,i){var n=e[0],o=e[2],r=e[4],a=e[1],s=e[3],l=e[5],u=Math.sin(i),h=Math.cos(i);return t[0]=n*h+a*u,t[1]=-n*u+a*h,t[2]=o*h+s*u,t[3]=-o*u+h*s,t[4]=h*r+u*l,t[5]=h*l-u*r,t},scale:function(t,e,i){var n=i[0],o=i[1];return t[0]=e[0]*n,t[1]=e[1]*o,t[2]=e[2]*n,t[3]=e[3]*o,t[4]=e[4]*n,t[5]=e[5]*o,t},invert:function(t,e){var i=e[0],n=e[2],o=e[4],r=e[1],a=e[3],s=e[5],l=i*a-r*n;return l?(l=1/l,t[0]=a*l,t[1]=-r*l,t[2]=-n*l,t[3]=i*l,t[4]=(n*s-a*o)*l,t[5]=(r*o-i*s)*l,t):null}};t.exports=n},function(t,e){var i=Array.prototype.slice,n=function(){this._$handlers={}};n.prototype={constructor:n,one:function(t,e,i){var n=this._$handlers;if(!e||!t)return this;n[t]||(n[t]=[]);for(var o=0;o<n[t].length;o++)if(n[t][o].h===e)return this;return n[t].push({h:e,one:!0,ctx:i||this}),this},on:function(t,e,i){var n=this._$handlers;if(!e||!t)return this;n[t]||(n[t]=[]);for(var o=0;o<n[t].length;o++)if(n[t][o].h===e)return this;return n[t].push({h:e,one:!1,ctx:i||this}),this},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=[],o=0,r=i[t].length;o<r;o++)i[t][o].h!=e&&n.push(i[t][o]);i[t]=n}i[t]&&0===i[t].length&&delete i[t]}else delete i[t];return this},trigger:function(t){if(this._$handlers[t]){var e=arguments,n=e.length;n>3&&(e=i.call(e,1));for(var o=this._$handlers[t],r=o.length,a=0;a<r;){switch(n){case 1:o[a].h.call(o[a].ctx);break;case 2:o[a].h.call(o[a].ctx,e[1]);break;case 3:o[a].h.call(o[a].ctx,e[1],e[2]);break;default:o[a].h.apply(o[a].ctx,e)}o[a].one?(o.splice(a,1),r--):a++}}return this},triggerWithContext:function(t){if(this._$handlers[t]){var e=arguments,n=e.length;n>4&&(e=i.call(e,1,e.length-1));for(var o=e[e.length-1],r=this._$handlers[t],a=r.length,s=0;s<a;){switch(n){case 1:r[s].h.call(o);break;case 2:r[s].h.call(o,e[1]);break;case 3:r[s].h.call(o,e[1],e[2]);break;default:r[s].h.apply(o,e)}r[s].one?(r.splice(s,1),a--):s++}}return this}},t.exports=n},function(t,e,i){var n=i(137),o=i(38);i(138),i(136);var r=i(32),a=i(4),s=i(1),l=i(17),u={};u.getScaleExtent=function(t,e){var i,n,o,r=t.scale,l=r.type,u=e.getMin(),h=e.getMax(),c=null!=u,d=null!=h,f=r.getExtent();return"ordinal"===l?i=(e.get("data")||[]).length:(n=e.get("boundaryGap"),s.isArray(n)||(n=[n||0,n||0]),n[0]=a.parsePercent(n[0],1),n[1]=a.parsePercent(n[1],1),o=f[1]-f[0]),null==u&&(u="ordinal"===l?i?0:NaN:f[0]-n[0]*o),null==h&&(h="ordinal"===l?i?i-1:NaN:f[1]+n[1]*o),"dataMin"===u&&(u=f[0]),"dataMax"===h&&(h=f[1]),(null==u||!isFinite(u))&&(u=NaN),(null==h||!isFinite(h))&&(h=NaN),t.setBlank(s.eqNaN(u)||s.eqNaN(h)),e.getNeedCrossZero()&&(u>0&&h>0&&!c&&(u=0),u<0&&h<0&&!d&&(h=0)),[u,h]},u.niceScaleExtent=function(t,e){var i=t.scale,n=u.getScaleExtent(t,e),o=null!=e.getMin(),r=null!=e.getMax(),a=e.get("splitNumber");"log"===i.type&&(i.base=e.get("logBase")),i.setExtent(n[0],n[1]),i.niceExtent(a,o,r);var s=e.get("minInterval");if(isFinite(s)&&!o&&!r&&"interval"===i.type){var l=i.getInterval(),h=Math.max(Math.abs(l),s)/l;n=i.getExtent();var c=(n[1]+n[0])/2;i.setExtent(h*(n[0]-c)+c,h*(n[1]-c)+c),i.niceExtent(a)}var l=e.get("interval");null!=l&&i.setInterval&&i.setInterval(l)},u.createScaleByModel=function(t,e){if(e=e||t.get("type"))switch(e){case"category":return new n(t.getCategories(),[1/0,-(1/0)]);case"value":return new o;default:return(r.getClass(e)||o).create(t)}},u.ifAxisCrossZero=function(t){var e=t.scale.getExtent(),i=e[0],n=e[1];return!(i>0&&n>0||i<0&&n<0)},u.getAxisLabelInterval=function(t,e,i,n){var o,r=0,a=0,s=1;e.length>40&&(s=Math.floor(e.length/40));for(var u=0;u<t.length;u+=s){var h=t[u],c=l.getBoundingRect(e[u],i,"center","top");c[n?"x":"y"]+=h,c[n?"width":"height"]*=1.3,o?o.intersect(c)?(a++,r=Math.max(r,a)):(o.union(c),a=0):o=c.clone()}return 0===r&&s>1?s:(r+1)*s-1},u.getFormattedLabels=function(t,e){var i=t.scale,n=i.getTicksLabels(),o=i.getTicks();return"string"==typeof e?(e=function(t){return function(e){return t.replace("{value}",null!=e?e:"")}}(e),s.map(n,e)):"function"==typeof e?s.map(o,function(n,o){return e("category"===t.type?i.getLabel(n):n,o)},this):n},t.exports=u},function(t,e,i){"use strict";function n(){this._coordinateSystems=[]}var o=i(1),r={};n.prototype={constructor:n,create:function(t,e){var i=[];o.each(r,function(n,o){var r=n.create(t,e);i=i.concat(r||[])}),this._coordinateSystems=i},update:function(t,e){o.each(this._coordinateSystems,function(i){i.update&&i.update(t,e)})},getCoordinateSystems:function(){return this._coordinateSystems.slice()}},n.register=function(t,e){r[t]=e},n.get=function(t){return r[t]},t.exports=n},function(t,e,i){"use strict";var n=i(3),o=i(9),r=n.extendShape({type:"triangle",
-shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var i=e.cx,n=e.cy,o=e.width/2,r=e.height/2;t.moveTo(i,n-r),t.lineTo(i+o,n+r),t.lineTo(i-o,n+r),t.closePath()}}),a=n.extendShape({type:"diamond",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var i=e.cx,n=e.cy,o=e.width/2,r=e.height/2;t.moveTo(i,n-r),t.lineTo(i+o,n),t.lineTo(i,n+r),t.lineTo(i-o,n),t.closePath()}}),s=n.extendShape({type:"pin",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var i=e.x,n=e.y,o=e.width/5*3,r=Math.max(o,e.height),a=o/2,s=a*a/(r-a),l=n-r+a+s,u=Math.asin(s/a),h=Math.cos(u)*a,c=Math.sin(u),d=Math.cos(u);t.arc(i,l,a,Math.PI-u,2*Math.PI+u);var f=.6*a,p=.7*a;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()}}),l=n.extendShape({type:"arrow",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var i=e.height,n=e.width,o=e.x,r=e.y,a=n/3*2;t.moveTo(o,r),t.lineTo(o+a,r+i),t.lineTo(o,r+i/4*3),t.lineTo(o-a,r+i),t.lineTo(o,r),t.closePath()}}),u={line:n.Line,rect:n.Rect,roundRect:n.Rect,square:n.Rect,circle:n.Circle,diamond:a,pin:s,arrow:l,triangle:r},h={line:function(t,e,i,n,o){o.x1=t,o.y1=e+n/2,o.x2=t+i,o.y2=e+n/2},rect:function(t,e,i,n,o){o.x=t,o.y=e,o.width=i,o.height=n},roundRect:function(t,e,i,n,o){o.x=t,o.y=e,o.width=i,o.height=n,o.r=Math.min(i,n)/4},square:function(t,e,i,n,o){var r=Math.min(i,n);o.x=t,o.y=e,o.width=r,o.height=r},circle:function(t,e,i,n,o){o.cx=t+i/2,o.cy=e+n/2,o.r=Math.min(i,n)/2},diamond:function(t,e,i,n,o){o.cx=t+i/2,o.cy=e+n/2,o.width=i,o.height=n},pin:function(t,e,i,n,o){o.x=t+i/2,o.y=e+n/2,o.width=i,o.height=n},arrow:function(t,e,i,n,o){o.x=t+i/2,o.y=e+n/2,o.width=i,o.height=n},triangle:function(t,e,i,n,o){o.cx=t+i/2,o.cy=e+n/2,o.width=i,o.height=n}},c={};for(var d in u)u.hasOwnProperty(d)&&(c[d]=new u[d]);var f=n.extendShape({type:"symbol",shape:{symbolType:"",x:0,y:0,width:0,height:0},beforeBrush:function(){var t=this.style,e=this.shape;"pin"===e.symbolType&&"inside"===t.textPosition&&(t.textPosition=["50%","40%"],t.textAlign="center",t.textVerticalAlign="middle")},buildPath:function(t,e,i){var n=e.symbolType,o=c[n];"none"!==e.symbolType&&(o||(n="rect",o=c[n]),h[n](e.x,e.y,e.width,e.height,o.shape),o.buildPath(t,o.shape,i))}}),p=function(t){if("image"!==this.type){var e=this.style,i=this.shape;i&&"line"===i.symbolType?e.stroke=t:this.__isEmptyBrush?(e.stroke=t,e.fill="#fff"):(e.fill&&(e.fill=t),e.stroke&&(e.stroke=t)),this.dirty(!1)}},g={createSymbol:function(t,e,i,r,a,s){var l=0===t.indexOf("empty");l&&(t=t.substr(5,1).toLowerCase()+t.substr(6));var u;return u=0===t.indexOf("image://")?new n.Image({style:{image:t.slice(8),x:e,y:i,width:r,height:a}}):0===t.indexOf("path://")?n.makePath(t.slice(7),{},new o(e,i,r,a)):new f({shape:{symbolType:t,x:e,y:i,width:r,height:a}}),u.__isEmptyBrush=l,u.setColor=p,u.setColor(s),u}};t.exports=g},function(t,e,i){"use strict";function n(t){return t.getBoundingClientRect?t.getBoundingClientRect():{left:0,top:0}}function o(t,e,i,n){return i=i||{},n||!h.canvasSupported?r(t,e,i):h.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):r(t,e,i),i}function r(t,e,i){var o=n(t);i.zrX=e.clientX-o.left,i.zrY=e.clientY-o.top}function a(t,e,i){if(e=e||window.event,null!=e.zrX)return e;var n=e.type,r=n&&n.indexOf("touch")>=0;if(r){var a="touchend"!=n?e.targetTouches[0]:e.changedTouches[0];a&&o(t,a,e,i)}else o(t,e,e,i),e.zrDelta=e.wheelDelta?e.wheelDelta/120:-(e.detail||0)/3;return e}function s(t,e,i){c?t.addEventListener(e,i):t.attachEvent("on"+e,i)}function l(t,e,i){c?t.removeEventListener(e,i):t.detachEvent("on"+e,i)}var u=i(21),h=i(10),c="undefined"!=typeof window&&!!window.addEventListener,d=c?function(t){t.preventDefault(),t.stopPropagation(),t.cancelBubble=!0}:function(t){t.returnValue=!1,t.cancelBubble=!0};t.exports={clientToLocal:o,normalizeEvent:a,addEventListener:s,removeEventListener:l,stop:d,Dispatcher:u}},function(t,e){"use strict";var i={};t.exports={register:function(t,e){i[t]=e},get:function(t){return i[t]}}},function(t,e,i){function n(t,e,i,n){if(!e)return t;var s=o(e[0]),l=r.isArray(s)&&s.length||1;i=i||[],n=n||"extra";for(var u=0;u<l;u++)if(!t[u]){var h=i[u]||n+(u-i.length);t[u]=a(e,u)?{type:"ordinal",name:h}:h}return t}function o(t){return r.isArray(t)?t:r.isObject(t)?t.value:t}var r=i(1),a=n.guessOrdinal=function(t,e){for(var i=0,n=t.length;i<n;i++){var a=o(t[i]);if(!r.isArray(a))return!1;var a=a[e];if(null!=a&&isFinite(a))return!1;if(r.isString(a)&&"-"!==a)return!0}return!1};t.exports=n},function(t,e,i){function n(){this.group=new a,this.uid=s.getUID("viewChart")}function o(t,e){if(t&&(t.trigger(e),"group"===t.type))for(var i=0;i<t.childCount();i++)o(t.childAt(i),e)}function r(t,e,i){var n=u.queryDataIndex(t,e);null!=n?h.each(u.normalizeToArray(n),function(e){o(t.getItemGraphicEl(e),i)}):t.eachItemGraphicEl(function(t){o(t,i)})}var a=i(34),s=i(44),l=i(15),u=i(6),h=i(1);n.prototype={type:"chart",init:function(t,e){},render:function(t,e,i,n){},highlight:function(t,e,i,n){r(t.getData(),n,"emphasis")},downplay:function(t,e,i,n){r(t.getData(),n,"normal")},remove:function(t,e){this.group.removeAll()},dispose:function(){}};var c=n.prototype;c.updateView=c.updateLayout=c.updateVisual=function(t,e,i,n){this.render(t,e,i,n)},l.enableClassExtend(n,["dispose"]),l.enableClassManagement(n,{registerWhenExtend:!0}),t.exports=n},function(t,e,i){"use strict";var n=i(18),o=i(5),r=i(75),a=i(9),s=i(33).devicePixelRatio,l={M:1,L:2,C:3,Q:4,A:5,Z:6,R:7},u=[],h=[],c=[],d=[],f=Math.min,p=Math.max,g=Math.cos,m=Math.sin,v=Math.sqrt,y=Math.abs,x="undefined"!=typeof Float32Array,_=function(){this.data=[],this._len=0,this._ctx=null,this._xi=0,this._yi=0,this._x0=0,this._y0=0,this._ux=0,this._uy=0};_.prototype={constructor:_,_lineDash:null,_dashOffset:0,_dashIdx:0,_dashSum:0,setScale:function(t,e){this._ux=y(1/s/t)||0,this._uy=y(1/s/e)||0},getContext:function(){return this._ctx},beginPath:function(t){return this._ctx=t,t&&t.beginPath(),t&&(this.dpr=t.dpr),this._len=0,this._lineDash&&(this._lineDash=null,this._dashOffset=0),this},moveTo:function(t,e){return this.addData(l.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=y(t-this._xi)>this._ux||y(e-this._yi)>this._uy||this._len<5;return this.addData(l.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,o,r){return this.addData(l.C,t,e,i,n,o,r),this._ctx&&(this._needsDash()?this._dashedBezierTo(t,e,i,n,o,r):this._ctx.bezierCurveTo(t,e,i,n,o,r)),this._xi=o,this._yi=r,this},quadraticCurveTo:function(t,e,i,n){return this.addData(l.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,o,r){return this.addData(l.A,t,e,i,i,n,o-n,0,r?0:1),this._ctx&&this._ctx.arc(t,e,i,n,o,r),this._xi=g(o)*i+t,this._yi=m(o)*i+t,this},arcTo:function(t,e,i,n,o){return this._ctx&&this._ctx.arcTo(t,e,i,n,o),this},rect:function(t,e,i,n){return this._ctx&&this._ctx.rect(t,e,i,n),this.addData(l.R,t,e,i,n),this},closePath:function(){this.addData(l.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,this._dashIdx=0;for(var e=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||!x||(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,o=0;o<e;o++)i+=t[o].len();x&&this.data instanceof Float32Array&&(this.data=new Float32Array(n+i));for(var o=0;o<e;o++)for(var r=t[o].data,a=0;a<r.length;a++)this.data[n++]=r[a];this._len=n},addData:function(t){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,o=this._dashSum,r=this._dashOffset,a=this._lineDash,s=this._ctx,l=this._xi,u=this._yi,h=t-l,c=e-u,d=v(h*h+c*c),g=l,m=u,y=a.length;for(h/=d,c/=d,r<0&&(r=o+r),r%=o,g-=r*h,m-=r*c;h>0&&g<=t||h<0&&g>=t||0==h&&(c>0&&m<=e||c<0&&m>=e);)n=this._dashIdx,i=a[n],g+=h*i,m+=c*i,this._dashIdx=(n+1)%y,h>0&&g<l||h<0&&g>l||c>0&&m<u||c<0&&m>u||s[n%2?"moveTo":"lineTo"](h>=0?f(g,t):p(g,t),c>=0?f(m,e):p(m,e));h=g-t,c=m-e,this._dashOffset=-v(h*h+c*c)},_dashedBezierTo:function(t,e,i,o,r,a){var s,l,u,h,c,d=this._dashSum,f=this._dashOffset,p=this._lineDash,g=this._ctx,m=this._xi,y=this._yi,x=n.cubicAt,_=0,b=this._dashIdx,w=p.length,S=0;for(f<0&&(f=d+f),f%=d,s=0;s<1;s+=.1)l=x(m,t,i,r,s+.1)-x(m,t,i,r,s),u=x(y,e,o,a,s+.1)-x(y,e,o,a,s),_+=v(l*l+u*u);for(;b<w&&(S+=p[b],!(S>f));b++);for(s=(S-f)/_;s<=1;)h=x(m,t,i,r,s),c=x(y,e,o,a,s),b%2?g.moveTo(h,c):g.lineTo(h,c),s+=p[b]/_,b=(b+1)%w;b%2!==0&&g.lineTo(r,a),l=r-h,u=a-c,this._dashOffset=-v(l*l+u*u)},_dashedQuadraticTo:function(t,e,i,n){var o=i,r=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,o,r)},toStatic:function(){var t=this.data;t instanceof Array&&(t.length=this._len,x&&(this.data=new Float32Array(t)))},getBoundingRect:function(){u[0]=u[1]=c[0]=c[1]=Number.MAX_VALUE,h[0]=h[1]=d[0]=d[1]=-Number.MAX_VALUE;for(var t=this.data,e=0,i=0,n=0,s=0,f=0;f<t.length;){var p=t[f++];switch(1==f&&(e=t[f],i=t[f+1],n=e,s=i),p){case l.M:n=t[f++],s=t[f++],e=n,i=s,c[0]=n,c[1]=s,d[0]=n,d[1]=s;break;case l.L:r.fromLine(e,i,t[f],t[f+1],c,d),e=t[f++],i=t[f++];break;case l.C:r.fromCubic(e,i,t[f++],t[f++],t[f++],t[f++],t[f],t[f+1],c,d),e=t[f++],i=t[f++];break;case l.Q:r.fromQuadratic(e,i,t[f++],t[f++],t[f],t[f+1],c,d),e=t[f++],i=t[f++];break;case l.A:var v=t[f++],y=t[f++],x=t[f++],_=t[f++],b=t[f++],w=t[f++]+b,S=(t[f++],1-t[f++]);1==f&&(n=g(b)*x+v,s=m(b)*_+y),r.fromArc(v,y,x,_,b,w,S,c,d),e=g(w)*x+v,i=m(w)*_+y;break;case l.R:n=e=t[f++],s=i=t[f++];var M=t[f++],I=t[f++];r.fromLine(n,s,n+M,s+I,c,d);break;case l.Z:e=n,i=s}o.min(u,u,c),o.max(h,h,d)}return 0===f&&(u[0]=u[1]=h[0]=h[1]=0),new a(u[0],u[1],h[0]-u[0],h[1]-u[1])},rebuildPath:function(t){for(var e,i,n,o,r,a,s=this.data,u=this._ux,h=this._uy,c=this._len,d=0;d<c;){var f=s[d++];switch(1==d&&(n=s[d],o=s[d+1],e=n,i=o),f){case l.M:e=n=s[d++],i=o=s[d++],t.moveTo(n,o);break;case l.L:r=s[d++],a=s[d++],(y(r-n)>u||y(a-o)>h||d===c-1)&&(t.lineTo(r,a),n=r,o=a);break;case l.C:t.bezierCurveTo(s[d++],s[d++],s[d++],s[d++],s[d++],s[d++]),n=s[d-2],o=s[d-1];break;case l.Q:t.quadraticCurveTo(s[d++],s[d++],s[d++],s[d++]),n=s[d-2],o=s[d-1];break;case l.A:var p=s[d++],v=s[d++],x=s[d++],_=s[d++],b=s[d++],w=s[d++],S=s[d++],M=s[d++],I=x>_?x:_,T=x>_?1:x/_,A=x>_?_/x:1,L=Math.abs(x-_)>.001,C=b+w;L?(t.translate(p,v),t.rotate(S),t.scale(T,A),t.arc(0,0,I,b,C,1-M),t.scale(1/T,1/A),t.rotate(-S),t.translate(-p,-v)):t.arc(p,v,I,b,C,1-M),1==d&&(e=g(b)*x+p,i=m(b)*_+v),n=g(C)*x+p,o=m(C)*_+v;break;case l.R:e=n=s[d],i=o=s[d+1],t.rect(s[d++],s[d++],s[d++],s[d++]);break;case l.Z:t.closePath(),n=e,o=i}}}},_.CMD=l,t.exports=_},function(t,e,i){var n=i(1);t.exports=function(t){for(var e=0;e<t.length;e++)t[e][1]||(t[e][1]=t[e][0]);return function(e){for(var i={},o=0;o<t.length;o++){var r=t[o][1];if(!(e&&n.indexOf(e,r)>=0)){var a=this.getShallow(r);null!=a&&(i[t[o][0]]=a)}}return i}}},function(t,e,i){"use strict";var n=i(3),o=i(1),r=i(2);i(53),i(109),r.extendComponentView({type:"grid",render:function(t,e){this.group.removeAll(),t.get("show")&&this.group.add(new n.Rect({shape:t.coordinateSystem.getRect(),style:o.defaults({fill:t.get("backgroundColor")},t.getItemStyle()),silent:!0,z2:-1}))}}),r.registerPreprocessor(function(t){t.xAxis&&t.yAxis&&!t.grid&&(t.grid={})})},function(t,e,i){function n(){this._extent=[1/0,-(1/0)],this._interval=0,this.init&&this.init.apply(this,arguments)}var o=i(15),r=n.prototype;r.parse=function(t){return t},r.contain=function(t){var e=this._extent;return t>=e[0]&&t<=e[1]},r.normalize=function(t){var e=this._extent;return e[1]===e[0]?.5:(t-e[0])/(e[1]-e[0])},r.scale=function(t){var e=this._extent;return t*(e[1]-e[0])+e[0]},r.unionExtent=function(t){var e=this._extent;t[0]<e[0]&&(e[0]=t[0]),t[1]>e[1]&&(e[1]=t[1])},r.unionExtentFromData=function(t,e){this.unionExtent(t.getDataExtent(e,!0))},r.getExtent=function(){return this._extent.slice()},r.setExtent=function(t,e){var i=this._extent;isNaN(t)||(i[0]=t),isNaN(e)||(i[1]=e)},r.getTicksLabels=function(){for(var t=[],e=this.getTicks(),i=0;i<e.length;i++)t.push(this.getLabel(e[i]));return t},o.enableClassExtend(n),o.enableClassManagement(n,{registerWhenExtend:!0}),t.exports=n},function(t,e){var i=1;"undefined"!=typeof window&&(i=Math.max(window.devicePixelRatio||1,1));var n={debugMode:0,devicePixelRatio:i};t.exports=n},function(t,e,i){var n=i(1),o=i(60),r=i(9),a=function(t){t=t||{},o.call(this,t);for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e]);this._children=[],this.__storage=null,this.__dirty=!0};a.prototype={constructor:a,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);n>=0&&(i.splice(n,0,t),this._doAdd(t))}return this},_doAdd:function(t){t.parent&&t.parent.remove(t),t.parent=this;var e=this.__storage,i=this.__zr;e&&e!==t.__storage&&(e.addToMap(t),t instanceof a&&t.addChildrenToStorage(e)),i&&i.refresh()},remove:function(t){var e=this.__zr,i=this.__storage,o=this._children,r=n.indexOf(o,t);return r<0?this:(o.splice(r,1),t.parent=null,i&&(i.delFromMap(t.id),t instanceof a&&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.delFromMap(t.id),t instanceof a&&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 o=i[n];t.call(e,o,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.addToMap(i),i instanceof a&&i.addChildrenToStorage(t)}},delChildrenFromStorage:function(t){for(var e=0;e<this._children.length;e++){var i=this._children[e];t.delFromMap(i.id),i instanceof a&&i.delChildrenFromStorage(t)}},dirty:function(){return this.__dirty=!0,this.__zr&&this.__zr.refresh(),this},getBoundingRect:function(t){for(var e=null,i=new r(0,0,0,0),n=t||this._children,o=[],a=0;a<n.length;a++){var s=n[a];if(!s.ignore&&!s.invisible){var l=s.getBoundingRect(),u=s.getLocalTransform(o);u?(i.copy(l),i.applyTransform(u),e=e||i.clone(),e.union(i)):(e=e||l.clone(),e.union(l))}}return e||i}},n.inherits(a,o),t.exports=a},function(t,e,i){"use strict";function n(t){for(var e=0;e<t.length&&null==t[e];)e++;return t[e]}function o(t){var e=n(t);return null!=e&&!c.isArray(p(e))}function r(t,e,i){t=t||[];var n=e.get("coordinateSystem"),r=m[n],a=f.get(n),s=r&&r(t,e,i),v=s&&s.dimensions;v||(v=a&&a.dimensions||["x","y"],v=h(v,t,v.concat(["value"])));var y=s?s.categoryIndex:-1,x=new u(v,e),_=l(s,t),b={},w=y>=0&&o(t)?function(t,e,i,n){return d.isDataItemOption(t)&&(x.hasItemOption=!0),n===y?i:g(p(t),v[n])}:function(t,e,i,n){var o=p(t),r=g(o&&o[n],v[n]);d.isDataItemOption(t)&&(x.hasItemOption=!0);var a=s&&s.categoryAxesModels;return a&&a[e]&&"string"==typeof r&&(b[e]=b[e]||a[e].getCategories(),r=c.indexOf(b[e],r),r<0&&!isNaN(r)&&(r=+r)),r};return x.hasItemOption=!1,x.initData(t,_,w),x}function a(t){return"category"!==t&&"time"!==t}function s(t){return"category"===t?"ordinal":"time"===t?"time":"float"}function l(t,e){var i,n=[],o=t&&t.dimensions[t.categoryIndex];if(o&&(i=t.categoryAxesModels[o.name]),i){var r=i.getCategories();if(r){var a=e.length;if(c.isArray(e[0])&&e[0].length>1){n=[];for(var s=0;s<a;s++)n[s]=r[e[s][t.categoryIndex||0]]}else n=r.slice(0)}}return n}var u=i(14),h=i(27),c=i(1),d=i(6),f=i(23),p=d.getDataItemValue,g=d.converDataValue,m={cartesian2d:function(t,e,i){var n=c.map(["xAxis","yAxis"],function(t){return i.queryComponents({mainType:t,index:e.get(t+"Index"),id:e.get(t+"Id")})[0]}),o=n[0],r=n[1],l=o.get("type"),u=r.get("type"),d=[{name:"x",type:s(l),stackable:a(l)},{name:"y",type:s(u),stackable:a(u)}],f="category"===l,p="category"===u;h(d,t,["x","y","z"]);var g={};return f&&(g.x=o),p&&(g.y=r),{dimensions:d,categoryIndex:f?0:p?1:-1,categoryAxesModels:g}},singleAxis:function(t,e,i){var n=i.queryComponents({mainType:"singleAxis",index:e.get("singleAxisIndex"),id:e.get("singleAxisId")})[0],o=n.get("type"),r="category"===o,l=[{name:"single",type:s(o),stackable:a(o)}];h(l,t);var u={};return r&&(u.single=n),{dimensions:l,categoryIndex:r?0:-1,categoryAxesModels:u}},polar:function(t,e,i){var n=i.queryComponents({mainType:"polar",index:e.get("polarIndex"),id:e.get("polarId")})[0],o=n.findAxisModel("angleAxis"),r=n.findAxisModel("radiusAxis"),l=r.get("type"),u=o.get("type"),c=[{name:"radius",type:s(l),stackable:a(l)},{name:"angle",type:s(u),stackable:a(u)}],d="category"===u,f="category"===l;h(c,t,["radius","angle","value"]);var p={};return f&&(p.radius=r),d&&(p.angle=o),{dimensions:c,categoryIndex:d?1:f?0:-1,categoryAxesModels:p}},geo:function(t,e,i){return{dimensions:h([{name:"lng"},{name:"lat"}],t,["lng","lat","value"])}}};t.exports=r},function(t,e,i){function n(t){t=t||{},a.call(this,t);for(var e in t)t.hasOwnProperty(e)&&"style"!==e&&(this[e]=t[e]);this.style=new r(t.style),this._rect=null,this.__clipPaths=[]}var o=i(1),r=i(66),a=i(60),s=i(77);n.prototype={constructor:n,type:"displayable",__dirty:!0,invisible:!1,z:0,z2:0,zlevel:0,draggable:!1,dragging:!1,silent:!1,culling:!1,cursor:"pointer",rectHover:!1,progressive:-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),n=this.getBoundingRect();return n.contain(i[0],i[1])},dirty:function(){this.__dirty=!0,this._rect=null,this.__zr&&this.__zr.refresh()},animateStyle:function(t){return this.animate("style",t)},attrKV:function(t,e){"style"!==t?a.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 r(t),this.dirty(!1),this}},o.inherits(n,a),o.mixin(n,s),t.exports=n},function(t,e){var i=function(t){this.colorStops=t||[]};i.prototype={constructor:i,addColorStop:function(t,e){this.colorStops.push({offset:t,color:e})}},t.exports=i},function(t,e,i){var n=i(4),o=i(8),r=i(32),a=Math.floor,s=Math.ceil,l=n.getPrecisionSafe,u=n.round,h=r.extend({type:"interval",_interval:0,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]),h.prototype.setExtent.call(this,e[0],e[1])},getInterval:function(){return this._interval||this.niceTicks(),this._interval},setInterval:function(t){this._interval=t,this._niceExtent=this._extent.slice()},getTicks:function(){this._interval||this.niceTicks();var t=this._interval,e=this._extent,i=[],n=1e4;if(t){var o=this._niceExtent,r=l(t)+2;e[0]<o[0]&&i.push(e[0]);for(var a=o[0];a<=o[1];)if(i.push(a),a=u(a+t,r),i.length>n)return[];e[1]>(i.length?i[i.length-1]:o[1])&&i.push(e[1])}return i},getTicksLabels:function(){for(var t=[],e=this.getTicks(),i=0;i<e.length;i++)t.push(this.getLabel(e[i]));return t},getLabel:function(t){return o.addCommas(t)},niceTicks:function(t){t=t||5;var e=this._extent,i=e[1]-e[0];if(isFinite(i)){i<0&&(i=-i,e.reverse());var o=u(n.nice(i/t,!0),Math.max(l(e[0]),l(e[1]))+2),r=l(o)+2,h=[u(s(e[0]/o)*o,r),u(a(e[1]/o)*o,r)];this._interval=o,this._niceExtent=h}},niceExtent:function(t,e,i){var n=this._extent;if(n[0]===n[1])if(0!==n[0]){var o=n[0];i?n[0]-=o/2:(n[1]+=o/2,n[0]-=o/2)}else n[1]=1;var r=n[1]-n[0];isFinite(r)||(n[0]=0,n[1]=1),this.niceTicks(t);var l=this._interval;e||(n[0]=u(a(n[0]/l)*l)),i||(n[1]=u(s(n[1]/l)*l))}});h.create=function(){return new h},t.exports=h},function(t,e,i){function n(t){this.group=new r.Group,this._symbolCtor=t||a}function o(t,e,i){var n=t.getItemLayout(e);return n&&!isNaN(n[0])&&!isNaN(n[1])&&!(i&&i(e))&&"none"!==t.getItemVisual(e,"symbol")}var r=i(3),a=i(50),s=n.prototype;s.updateData=function(t,e){var i=this.group,n=t.hostModel,a=this._data,s=this._symbolCtor,l={itemStyle:n.getModel("itemStyle.normal").getItemStyle(["color"]),hoverItemStyle:n.getModel("itemStyle.emphasis").getItemStyle(),symbolRotate:n.get("symbolRotate"),symbolOffset:n.get("symbolOffset"),hoverAnimation:n.get("hoverAnimation"),labelModel:n.getModel("label.normal"),hoverLabelModel:n.getModel("label.emphasis")};t.diff(a).add(function(n){var r=t.getItemLayout(n);if(o(t,n,e)){var a=new s(t,n,l);a.attr("position",r),t.setItemGraphicEl(n,a),i.add(a)}}).update(function(u,h){var c=a.getItemGraphicEl(h),d=t.getItemLayout(u);return o(t,u,e)?(c?(c.updateData(t,u,l),r.updateProps(c,{position:d},n)):(c=new s(t,u),c.attr("position",d)),i.add(c),void t.setItemGraphicEl(u,c)):void i.remove(c)}).remove(function(t){var e=a.getItemGraphicEl(t);e&&e.fadeOut(function(){i.remove(e)})}).execute(),this._data=t},s.updateLayout=function(){var t=this._data;t&&t.eachItemGraphicEl(function(e,i){var n=t.getItemLayout(i);e.attr("position",n)})},s.remove=function(t){var e=this.group,i=this._data;i&&(t?i.eachItemGraphicEl(function(t){t.fadeOut(function(){e.remove(t)})}):e.removeAll())},t.exports=n},function(t,e,i){function n(t){var e={};return c(["start","end","startValue","endValue","throttle"],function(i){t.hasOwnProperty(i)&&(e[i]=t[i])}),e}function o(t,e,i,n){null!=i[e]&&null==i[t]&&(n[t]=null)}var r=i(1),a=i(10),s=i(2),l=i(6),u=i(68),h=i(182),c=r.each,d=u.eachAxisDim,f=s.extendComponentModel({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},init:function(t,e,i){this._dataIntervalByAxis={},this._dataInfo={},this._axisProxies={},this.textStyleModel,this._autoThrottle=!0;var o=n(t);this.mergeDefaultAndTheme(t,i),this.doInit(o)},mergeOption:function(t){var e=n(t);r.merge(this.option,t,!0),this.doInit(e)},doInit:function(t){var e=this.option;a.canvasSupported||(e.realtime=!1),this._setDefaultThrottle(t),o("start","startValue",t,e),o("end","endValue",t,e),this.textStyleModel=this.getModel("textStyle"),this._resetTarget(),this._giveAxisProxies()},_giveAxisProxies:function(){var t=this._axisProxies;this.eachTargetAxis(function(e,i,n,o){var r=this.dependentModels[e.axis][i],a=r.__dzAxisProxy||(r.__dzAxisProxy=new h(e.name,i,this,o));t[e.name+"_"+i]=a},this)},_resetTarget:function(){var t=this.option,e=this._judgeAutoMode();d(function(e){var i=e.axisIndex;t[i]=l.normalizeToArray(t[i])},this),"axisIndex"===e?this._autoSetAxisIndex():"orient"===e&&this._autoSetOrient()},_judgeAutoMode:function(){var t=this.option,e=!1;d(function(i){null!=t[i.axisIndex]&&(e=!0)},this);var i=t.orient;return null==i&&e?"orient":e?void 0:(null==i&&(t.orient="horizontal"),"axisIndex")},_autoSetAxisIndex:function(){var t=!0,e=this.get("orient",!0),i=this.option,n=this.dependentModels;if(t){var o="vertical"===e?"y":"x";n[o+"Axis"].length?(i[o+"AxisIndex"]=[0],t=!1):c(n.singleAxis,function(n){t&&n.get("orient",!0)===e&&(i.singleAxisIndex=[n.componentIndex],t=!1)})}t&&d(function(e){if(t){var n=[],o=this.dependentModels[e.axis];if(o.length&&!n.length)for(var r=0,a=o.length;r<a;r++)"category"===o[r].get("type")&&n.push(r);i[e.axisIndex]=n,n.length&&(t=!1)}},this),t&&this.ecModel.eachSeries(function(t){this._isSeriesHasAllAxesTypeOf(t,"value")&&d(function(e){var n=i[e.axisIndex],o=t.get(e.axisIndex),a=t.get(e.axisId),s=t.ecModel.queryComponents({mainType:e.axis,index:o,id:a})[0];o=s.componentIndex,r.indexOf(n,o)<0&&n.push(o)})},this)},_autoSetOrient:function(){var t;this.eachTargetAxis(function(e){!t&&(t=e.name)},this),this.option.orient="y"===t?"vertical":"horizontal"},_isSeriesHasAllAxesTypeOf:function(t,e){var i=!0;return d(function(n){var o=t.get(n.axisIndex),r=this.dependentModels[n.axis][o];r&&r.get("type")===e||(i=!1)},this),i},_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}},getFirstTargetAxisModel:function(){var t;return d(function(e){if(null==t){var i=this.get(e.axisIndex);i.length&&(t=this.dependentModels[e.axis][i[0]])}},this),t},eachTargetAxis:function(t,e){var i=this.ecModel;d(function(n){c(this.get(n.axisIndex),function(o){t.call(e,n,o,this,i)},this)},this)},getAxisProxy:function(t,e){return this._axisProxies[t+"_"+e]},setRawRange:function(t){c(["start","end","startValue","endValue"],function(e){this.option[e]=t[e]},this)},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(){var t=this._axisProxies;for(var e in t)if(t.hasOwnProperty(e)&&t[e].hostedBy(this))return t[e];for(var e in t)if(t.hasOwnProperty(e)&&!t[e].hostedBy(this))return t[e]}});t.exports=f},function(t,e,i){var n=i(59);t.exports=n.extend({type:"dataZoom",render:function(t,e,i,n){this.dataZoomModel=t,this.ecModel=e,this.api=i},getTargetCoordInfo:function(){function t(t,e,i,n){for(var o,r=0;r<i.length;r++)if(i[r].model===t){o=i[r];break}o||i.push(o={model:t,axisModels:[],coordIndex:n}),o.axisModels.push(e)}var e=this.dataZoomModel,i=this.ecModel,n={};return e.eachTargetAxis(function(e,o){var r=i.getComponent(e.axis,o);if(r){var a=r.getCoordSysModel();a&&t(a,r,n[a.mainType]||(n[a.mainType]=[]),a.componentIndex)}},this),n}})},function(t,e,i){function n(t,e){var i=t[1]-t[0],n=e,o=i/n/2;t[0]+=o,t[1]-=o}var o=i(4),r=o.linearMap,a=i(1),s=[0,1],l=function(t,e,i){this.dim=t,this.scale=e,this._extent=i||[0,0],this.inverse=!1,this.onBand=!1};l.prototype={constructor:l,contain:function(t){var e=this._extent,i=Math.min(e[0],e[1]),n=Math.max(e[0],e[1]);return t>=i&&t<=n},containData:function(t){return this.contain(this.dataToCoord(t))},getExtent:function(){var t=this._extent.slice();return t},getPixelPrecision:function(t){return o.getPixelPrecision(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,o=this.scale;return t=o.normalize(t),this.onBand&&"ordinal"===o.type&&(i=i.slice(),n(i,o.count())),r(t,s,i,e)},coordToData:function(t,e){var i=this._extent,o=this.scale;this.onBand&&"ordinal"===o.type&&(i=i.slice(),n(i,o.count()));var a=r(t,i,s,e);return this.scale.scale(a)},getTicksCoords:function(t){if(this.onBand&&!t){for(var e=this.getBands(),i=[],n=0;n<e.length;n++)i.push(e[n][0]);return e[n-1]&&i.push(e[n-1][1]),i}return a.map(this.scale.getTicks(),this.dataToCoord,this)},getLabelsCoords:function(){return a.map(this.scale.getTicks(),this.dataToCoord,this)},getBands:function(){for(var t=this.getExtent(),e=[],i=this.scale.count(),n=t[0],o=t[1],r=o-n,a=0;a<i;a++)e.push([r*a/i+n,r*(a+1)/i+n]);return e},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},isBlank:function(){return this._isBlank},setBlank:function(t){this._isBlank=t}},t.exports=l},function(t,e){"use strict";function i(t){return t}function n(t,e,n,o){this._old=t,this._new=e,this._oldKeyGetter=n||i,this._newKeyGetter=o||i}function o(t,e,i,n){for(var o=0;o<t.length;o++){var r=n(t[o],o),a=e[r];null==a?(i.push(r),e[r]=o):(a.length||(e[r]=a=[a]),a.push(o))}}n.prototype={constructor:n,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,e=this._old,i=this._new,n=this._oldKeyGetter,r=this._newKeyGetter,a={},s={},l=[],u=[];for(o(e,a,l,n),o(i,s,u,r),t=0;t<e.length;t++){var h=l[t],c=s[h];if(null!=c){var d=c.length;d?(1===d&&(s[h]=null),c=c.unshift()):s[h]=null,this._update&&this._update(c,t)}else this._remove&&this._remove(t)}for(var t=0;t<u.length;t++){var h=u[t];if(s.hasOwnProperty(h)){var c=s[h];if(null==c)continue;if(c.length)for(var f=0,d=c.length;f<d;f++)this._add&&this._add(c[f]);else this._add&&this._add(c)}}}},t.exports=n},function(t,e,i){var n=i(1),o=i(15),r=o.parseClassType,a=0,s={},l="_";s.getUID=function(t){return[t||"",a++,Math.random()].join(l)},s.enableSubTypeDefaulter=function(t){var e={};return t.registerSubTypeDefaulter=function(t,i){t=r(t),e[t.main]=i},t.determineSubType=function(i,n){var o=n.type;if(!o){var a=r(i).main;t.hasSubTypes(i)&&e[a]&&(o=e[a](n))}return o},t},s.enableTopologicalTravel=function(t,e){function i(t){var i={},a=[];return n.each(t,function(s){var l=o(i,s),u=l.originalDeps=e(s),h=r(u,t);l.entryCount=h.length,0===l.entryCount&&a.push(s),n.each(h,function(t){n.indexOf(l.predecessor,t)<0&&l.predecessor.push(t);var e=o(i,t);n.indexOf(e.successor,t)<0&&e.successor.push(s)})}),{graph:i,noEntryList:a}}function o(t,e){return t[e]||(t[e]={predecessor:[],successor:[]}),t[e]}function r(t,e){var i=[];return n.each(t,function(t){n.indexOf(e,t)>=0&&i.push(t)}),i}t.topologicalTravel=function(t,e,o,r){function a(t){u[t].entryCount--,0===u[t].entryCount&&h.push(t)}function s(t){c[t]=!0,a(t)}if(t.length){var l=i(e),u=l.graph,h=l.noEntryList,c={};for(n.each(t,function(t){c[t]=!0});h.length;){var d=h.pop(),f=u[d],p=!!c[d];p&&(o.call(r,d,f.originalDeps.slice()),delete c[d]),n.each(f.successor,p?s:a)}n.each(c,function(){throw new Error("Circle dependency may exists")})}}},t.exports=s},function(t,e){t.exports=function(t,e,i,n,o){n.eachRawSeriesByType(t,function(t){var o=t.getData(),r=t.get("symbol")||e,a=t.get("symbolSize");o.setVisual({legendSymbol:i||r,symbol:r,symbolSize:a}),n.isSeriesFiltered(t)||("function"==typeof a&&o.each(function(e){var i=t.getRawValue(e),n=t.getDataParams(e);o.setItemVisual(e,"symbolSize",a(i,n))}),o.each(function(t){var e=o.getItemModel(t),i=e.getShallow("symbol",!0),n=e.getShallow("symbolSize",!0);null!=i&&o.setItemVisual(t,"symbol",i),null!=n&&o.setItemVisual(t,"symbolSize",n)}))})}},function(t,e){function i(t){for(var e=0;t>=h;)e|=1&t,t>>=1;return t+e}function n(t,e,i,n){var r=e+1;if(r===i)return 1;if(n(t[r++],t[e])<0){for(;r<i&&n(t[r],t[r-1])<0;)r++;o(t,e,r)}else for(;r<i&&n(t[r],t[r-1])>=0;)r++;return r-e}function o(t,e,i){for(i--;e<i;){var n=t[e];t[e++]=t[i],t[i--]=n}}function r(t,e,i,n,o){for(n===e&&n++;n<i;n++){for(var r,a=t[n],s=e,l=n;s<l;)r=s+l>>>1,o(a,t[r])<0?l=r:s=r+1;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(;u>0;)t[s+u]=t[s+u-1],u--}t[s]=a}}function a(t,e,i,n,o,r){var a=0,s=0,l=1;if(r(t,e[i+o])>0){for(s=n-o;l<s&&r(t,e[i+o+l])>0;)a=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s),a+=o,l+=o}else{for(s=o+1;l<s&&r(t,e[i+o-l])<=0;)a=l,
-l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s);var u=a;a=o-l,l=o-u}for(a++;a<l;){var h=a+(l-a>>>1);r(t,e[i+h])>0?a=h+1:l=h}return l}function s(t,e,i,n,o,r){var a=0,s=0,l=1;if(r(t,e[i+o])<0){for(s=o+1;l<s&&r(t,e[i+o-l])<0;)a=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s);var u=a;a=o-l,l=o-u}else{for(s=n-o;l<s&&r(t,e[i+o+l])>=0;)a=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s),a+=o,l+=o}for(a++;a<l;){var h=a+(l-a>>>1);r(t,e[i+h])<0?l=h:a=h+1}return l}function l(t,e){function i(t,e){h[y]=t,f[y]=e,y+=1}function n(){for(;y>1;){var t=y-2;if(t>=1&&f[t-1]<=f[t]+f[t+1]||t>=2&&f[t-2]<=f[t]+f[t-1])f[t-1]<f[t+1]&&t--;else if(f[t]>f[t+1])break;r(t)}}function o(){for(;y>1;){var t=y-2;t>0&&f[t-1]<f[t+1]&&t--,r(t)}}function r(i){var n=h[i],o=f[i],r=h[i+1],c=f[i+1];f[i]=o+c,i===y-3&&(h[i+1]=h[i+2],f[i+1]=f[i+2]),y--;var d=s(t[r],t,n,o,0,e);n+=d,o-=d,0!==o&&(c=a(t[n+o-1],t,r,c,c-1,e),0!==c&&(o<=c?l(n,o,r,c):u(n,o,r,c)))}function l(i,n,o,r){var l=0;for(l=0;l<n;l++)x[l]=t[i+l];var u=0,h=o,d=i;if(t[d++]=t[h++],0!==--r){if(1===n){for(l=0;l<r;l++)t[d+l]=t[h+l];return void(t[d+r]=x[u])}for(var f,g,m,v=p;;){f=0,g=0,m=!1;do if(e(t[h],x[u])<0){if(t[d++]=t[h++],g++,f=0,0===--r){m=!0;break}}else if(t[d++]=x[u++],f++,g=0,1===--n){m=!0;break}while((f|g)<v);if(m)break;do{if(f=s(t[h],x,u,n,0,e),0!==f){for(l=0;l<f;l++)t[d+l]=x[u+l];if(d+=f,u+=f,n-=f,n<=1){m=!0;break}}if(t[d++]=t[h++],0===--r){m=!0;break}if(g=a(x[u],t,h,r,0,e),0!==g){for(l=0;l<g;l++)t[d+l]=t[h+l];if(d+=g,h+=g,r-=g,0===r){m=!0;break}}if(t[d++]=x[u++],1===--n){m=!0;break}v--}while(f>=c||g>=c);if(m)break;v<0&&(v=0),v+=2}if(p=v,p<1&&(p=1),1===n){for(l=0;l<r;l++)t[d+l]=t[h+l];t[d+r]=x[u]}else{if(0===n)throw new Error;for(l=0;l<n;l++)t[d+l]=x[u+l]}}else for(l=0;l<n;l++)t[d+l]=x[u+l]}function u(i,n,o,r){var l=0;for(l=0;l<r;l++)x[l]=t[o+l];var u=i+n-1,h=r-1,d=o+r-1,f=0,g=0;if(t[d--]=t[u--],0!==--n){if(1===r){for(d-=n,u-=n,g=d+1,f=u+1,l=n-1;l>=0;l--)t[g+l]=t[f+l];return void(t[d]=x[h])}for(var m=p;;){var v=0,y=0,_=!1;do if(e(x[h],t[u])<0){if(t[d--]=t[u--],v++,y=0,0===--n){_=!0;break}}else if(t[d--]=x[h--],y++,v=0,1===--r){_=!0;break}while((v|y)<m);if(_)break;do{if(v=n-s(x[h],t,i,n,n-1,e),0!==v){for(d-=v,u-=v,n-=v,g=d+1,f=u+1,l=v-1;l>=0;l--)t[g+l]=t[f+l];if(0===n){_=!0;break}}if(t[d--]=x[h--],1===--r){_=!0;break}if(y=r-a(t[u],x,0,r,r-1,e),0!==y){for(d-=y,h-=y,r-=y,g=d+1,f=h+1,l=0;l<y;l++)t[g+l]=x[f+l];if(r<=1){_=!0;break}}if(t[d--]=t[u--],0===--n){_=!0;break}m--}while(v>=c||y>=c);if(_)break;m<0&&(m=0),m+=2}if(p=m,p<1&&(p=1),1===r){for(d-=n,u-=n,g=d+1,f=u+1,l=n-1;l>=0;l--)t[g+l]=t[f+l];t[d]=x[h]}else{if(0===r)throw new Error;for(f=d-(r-1),l=0;l<r;l++)t[f+l]=x[l]}}else for(f=d-(r-1),l=0;l<r;l++)t[f+l]=x[l]}var h,f,p=c,g=0,m=d,v=0,y=0;g=t.length,g<2*d&&(m=g>>>1);var x=[];v=g<120?5:g<1542?10:g<119151?19:40,h=[],f=[],this.mergeRuns=n,this.forceMergeRuns=o,this.pushRun=i}function u(t,e,o,a){o||(o=0),a||(a=t.length);var s=a-o;if(!(s<2)){var u=0;if(s<h)return u=n(t,o,a,e),void r(t,o,a,o+u,e);var c=new l(t,e),d=i(s);do{if(u=n(t,o,a,e),u<d){var f=s;f>d&&(f=d),r(t,o,o+f,o+u,e),u=f}c.pushRun(o,u),c.mergeRuns(),s-=u,o+=u}while(0!==s);c.forceMergeRuns()}}var h=32,c=7,d=256;t.exports=u},function(t,e){var i={},n="\0__throttleOriginMethod",o="\0__throttleRate",r="\0__throttleType";i.throttle=function(t,e,i){function n(){u=(new Date).getTime(),h=null,t.apply(a,s||[])}var o,r,a,s,l=0,u=0,h=null;e=e||0;var c=function(){o=(new Date).getTime(),a=this,s=arguments,r=o-(i?l:u)-e,clearTimeout(h),i?h=setTimeout(n,e):r>=0?n():h=setTimeout(n,-r),l=o};return c.clear=function(){h&&(clearTimeout(h),h=null)},c},i.createOrUpdate=function(t,e,a,s){var l=t[e];if(l){var u=l[n]||l,h=l[r],c=l[o];if(c!==a||h!==s){if(null==a||!s)return t[e]=u;l=t[e]=i.throttle(u,a,"debounce"===s),l[n]=u,l[r]=s,l[o]=a}return l}},i.clear=function(t,e){var i=t[e];i&&i[n]&&(t[e]=i[n])},t.exports=i},function(t,e,i){var n=i(33);t.exports=function(){if(0!==n.debugMode)if(1==n.debugMode)for(var t in arguments)throw new Error(arguments[t]);else if(n.debugMode>1)for(var t in arguments)console.log(arguments[t])}},function(t,e,i){function n(t){o.call(this,t)}var o=i(36),r=i(9),a=i(1),s=i(151),l=new s(50);n.prototype={constructor:n,type:"image",brush:function(t,e){var i,n=this.style,o=n.image;if(n.bind(t,this,e),i="string"==typeof o?this._image:o,!i&&o){var r=l.get(o);if(!r)return i=new Image,i.onload=function(){i.onload=null;for(var t=0;t<r.pending.length;t++)r.pending[t].dirty()},r={image:i,pending:[this]},i.src=o,l.put(o,r),void(this._image=i);if(i=r.image,this._image=i,!i.width||!i.height)return void r.pending.push(this)}if(i){var a=n.width||i.width,s=n.height||i.height,u=n.x||0,h=n.y||0;if(!i.width||!i.height)return;if(this.setTransform(t),n.sWidth&&n.sHeight){var c=n.sx||0,d=n.sy||0;t.drawImage(i,c,d,n.sWidth,n.sHeight,u,h,a,s)}else if(n.sx&&n.sy){var c=n.sx,d=n.sy,f=a-c,p=s-d;t.drawImage(i,c,d,f,p,u,h,a,s)}else t.drawImage(i,u,h,a,s);null==n.width&&(n.width=a),null==n.height&&(n.height=s),this.restoreTransform(t),null!=n.text&&this.drawRectText(t,this.getBoundingRect())}},getBoundingRect:function(){var t=this.style;return this._rect||(this._rect=new r(t.x||0,t.y||0,t.width||0,t.height||0)),this._rect}},a.inherits(n,o),t.exports=n},function(t,e,i){function n(t,e){var i=t.getItemVisual(e,"symbolSize");return i instanceof Array?i.slice():[+i,+i]}function o(t){return[t[0]/2,t[1]/2]}function r(t,e,i){u.Group.call(this),this.updateData(t,e,i)}function a(t,e){this.parent.drift(t,e)}var s=i(1),l=i(24),u=i(3),h=i(4),c=r.prototype;c._createSymbol=function(t,e,i,n){this.removeAll();var r=e.hostModel,s=e.getItemVisual(i,"color"),h=l.createSymbol(t,-1,-1,2,2,s);h.attr({z2:100,culling:!0,scale:[0,0]}),h.drift=a,u.initProps(h,{scale:o(n)},r,i),this._symbolType=t,this.add(h)},c.stopSymbolAnimation=function(t){this.childAt(0).stopAnimation(t)},c.getSymbolPath=function(){return this.childAt(0)},c.getScale=function(){return this.childAt(0).scale},c.highlight=function(){this.childAt(0).trigger("emphasis")},c.downplay=function(){this.childAt(0).trigger("normal")},c.setZ=function(t,e){var i=this.childAt(0);i.zlevel=t,i.z=e},c.setDraggable=function(t){var e=this.childAt(0);e.draggable=t,e.cursor=t?"move":"pointer"},c.updateData=function(t,e,i){this.silent=!1;var r=t.getItemVisual(e,"symbol")||"circle",a=t.hostModel,s=n(t,e);if(r!==this._symbolType)this._createSymbol(r,t,e,s);else{var l=this.childAt(0);u.updateProps(l,{scale:o(s)},a,e)}this._updateCommon(t,e,s,i),this._seriesModel=a};var d=["itemStyle","normal"],f=["itemStyle","emphasis"],p=["label","normal"],g=["label","emphasis"];c._updateCommon=function(t,e,i,n){var r=this.childAt(0),a=t.hostModel,l=t.getItemVisual(e,"color");"image"!==r.type&&r.useStyle({strokeNoScale:!0}),n=n||null;var c=n&&n.itemStyle,m=n&&n.hoverItemStyle,v=n&&n.symbolRotate,y=n&&n.symbolOffset,x=n&&n.labelModel,_=n&&n.hoverLabelModel,b=n&&n.hoverAnimation;if(!n||t.hasItemOption){var w=t.getItemModel(e);c=w.getModel(d).getItemStyle(["color"]),m=w.getModel(f).getItemStyle(),v=w.getShallow("symbolRotate"),y=w.getShallow("symbolOffset"),x=w.getModel(p),_=w.getModel(g),b=w.getShallow("hoverAnimation")}else m=s.extend({},m);var S=r.style;r.attr("rotation",(v||0)*Math.PI/180||0),y&&r.attr("position",[h.parsePercent(y[0],i[0]),h.parsePercent(y[1],i[1])]),r.setColor(l),r.setStyle(c);var M=t.getItemVisual(e,"opacity");null!=M&&(S.opacity=M);for(var I,T,A=t.dimensions.slice();A.length&&(I=A.pop(),T=t.getDimensionInfo(I).type,"ordinal"===T||"time"===T););null!=I&&x.getShallow("show")?(u.setText(S,x,l),S.text=s.retrieve(a.getFormattedLabel(e,"normal"),t.get(I,e))):S.text="",null!=I&&_.getShallow("show")?(u.setText(m,_,l),m.text=s.retrieve(a.getFormattedLabel(e,"emphasis"),t.get(I,e))):m.text="",r.off("mouseover").off("mouseout").off("emphasis").off("normal"),r.hoverStyle=m,u.setHoverStyle(r);var L=o(i);if(b&&a.isAnimationEnabled()){var C=function(){var t=L[1]/L[0];this.animateTo({scale:[Math.max(1.1*L[0],L[0]+3),Math.max(1.1*L[1],L[1]+3*t)]},400,"elasticOut")},D=function(){this.animateTo({scale:L},400,"elasticOut")};r.on("mouseover",C).on("mouseout",D).on("emphasis",C).on("normal",D)}},c.fadeOut=function(t){var e=this.childAt(0);this.silent=!0,e.style.text="",u.updateProps(e,{scale:[0,0]},this._seriesModel,this.dataIndex,t)},s.inherits(r,u.Group),t.exports=r},function(t,e,i){function n(t){var e={componentType:t.mainType};return e[t.mainType+"Index"]=t.componentIndex,e}function o(t,e,i){var n,o,r=d(e-t.rotation);return f(r)?(o=i>0?"top":"bottom",n="center"):f(r-v)?(o=i>0?"bottom":"top",n="center"):(o="middle",n=r>0&&r<v?i>0?"right":"left":i>0?"left":"right"),{rotation:r,textAlign:n,verticalAlign:o}}function r(t,e,i,n){var o,r,a=d(i-t.rotation),s=n[0]>n[1],l="start"===e&&!s||"start"!==e&&s;return f(a-v/2)?(r=l?"bottom":"top",o="center"):f(a-1.5*v)?(r=l?"top":"bottom",o="center"):(r="middle",o=a<1.5*v&&a>v/2?l?"left":"right":l?"right":"left"),{rotation:a,textAlign:o,verticalAlign:r}}function a(t){var e=t.get("tooltip");return t.get("silent")||!(t.get("triggerEvent")||e&&e.show)}var s=i(1),l=i(8),u=i(3),h=i(11),c=i(4),d=c.remRadian,f=c.isRadianAroundZero,p=i(5),g=p.applyTransform,m=s.retrieve,v=Math.PI,y=function(t,e){this.opt=e,this.axisModel=t,s.defaults(e,{labelOffset:0,nameDirection:1,tickDirection:1,labelDirection:1,silent:!0}),this.group=new u.Group;var i=new u.Group({position:e.position.slice(),rotation:e.rotation});i.updateTransform(),this._transform=i.transform,this._dumbGroup=i};y.prototype={constructor:y,hasBuilder:function(t){return!!x[t]},add:function(t){x[t].call(this)},getGroup:function(){return this.group}};var x={axisLine:function(){var t=this.opt,e=this.axisModel;if(e.get("axisLine.show")){var i=this.axisModel.axis.getExtent(),n=this._transform,o=[i[0],0],r=[i[1],0];n&&(g(o,o,n),g(r,r,n)),this.group.add(new u.Line(u.subPixelOptimizeLine({anid:"line",shape:{x1:o[0],y1:o[1],x2:r[0],y2:r[1]},style:s.extend({lineCap:"round"},e.getModel("axisLine.lineStyle").getLineStyle()),strokeContainThreshold:t.strokeContainThreshold||5,silent:!0,z2:1})))}},axisTick:function(){var t=this.axisModel,e=t.axis;if(t.get("axisTick.show")&&!e.isBlank())for(var i=t.getModel("axisTick"),n=this.opt,o=i.getModel("lineStyle"),r=i.get("length"),a=b(i,n.labelInterval),l=e.getTicksCoords(i.get("alignWithLabel")),h=e.scale.getTicks(),c=[],d=[],f=this._transform,p=0;p<l.length;p++)if(!_(e,p,a)){var m=l[p];c[0]=m,c[1]=0,d[0]=m,d[1]=n.tickDirection*r,f&&(g(c,c,f),g(d,d,f)),this.group.add(new u.Line(u.subPixelOptimizeLine({anid:"tick_"+h[p],shape:{x1:c[0],y1:c[1],x2:d[0],y2:d[1]},style:s.defaults(o.getLineStyle(),{stroke:t.get("axisLine.lineStyle.color")}),z2:2,silent:!0})))}},axisLabel:function(){function t(t,e){var i=t&&t.getBoundingRect().clone(),n=e&&e.getBoundingRect().clone();if(i&&n)return i.applyTransform(t.getLocalTransform()),n.applyTransform(e.getLocalTransform()),i.intersect(n)}var e=this.opt,i=this.axisModel,r=i.axis,l=m(e.axisLabelShow,i.get("axisLabel.show"));if(l&&!r.isBlank()){var c=i.getModel("axisLabel"),d=c.getModel("textStyle"),f=c.get("margin"),p=r.scale.getTicks(),g=i.getFormattedLabels(),y=m(e.labelRotation,c.get("rotate"))||0;y=y*v/180;var x=o(e,y,e.labelDirection),b=i.get("data"),w=[],S=a(i),M=i.get("triggerEvent");if(s.each(p,function(t,o){if(!_(r,o,e.labelInterval)){var a=d;b&&b[t]&&b[t].textStyle&&(a=new h(b[t].textStyle,d,i.ecModel));var s=a.getTextColor()||i.get("axisLine.lineStyle.color"),l=r.dataToCoord(t),c=[l,e.labelOffset+e.labelDirection*f],p=r.scale.getLabel(t),m=new u.Text({anid:"label_"+t,style:{text:g[o],textAlign:a.get("align",!0)||x.textAlign,textVerticalAlign:a.get("baseline",!0)||x.verticalAlign,textFont:a.getFont(),fill:"function"==typeof s?s(p):s},position:c,rotation:x.rotation,silent:S,z2:10});M&&(m.eventData=n(i),m.eventData.targetType="axisLabel",m.eventData.value=p),this._dumbGroup.add(m),m.updateTransform(),w.push(m),this.group.add(m),m.decomposeTransform()}},this),null!=i.getMin()){var I=w[0],T=w[1];t(I,T)&&(I.ignore=!0)}if(null!=i.getMax()){var A=w[w.length-1],L=w[w.length-2];t(L,A)&&(A.ignore=!0)}}},axisName:function(){var t=this.opt,e=this.axisModel,i=m(t.axisName,e.get("name"));if(i){var h,c=e.get("nameLocation"),d=t.nameDirection,f=e.getModel("nameTextStyle"),p=e.get("nameGap")||0,g=this.axisModel.axis.getExtent(),y=g[0]>g[1]?-1:1,x=["start"===c?g[0]-y*p:"end"===c?g[1]+y*p:(g[0]+g[1])/2,"middle"===c?t.labelOffset+d*p:0],_=e.get("nameRotate");null!=_&&(_=_*v/180);var b;"middle"===c?h=o(t,null!=_?_:t.rotation,d):(h=r(t,c,_||0,g),b=t.axisNameAvailableWidth,null!=b&&(b=Math.abs(b/Math.sin(h.rotation)),!isFinite(b)&&(b=null)));var w=f.getFont(),S=e.get("nameTruncate",!0)||{},M=S.ellipsis,I=m(S.maxWidth,b),T=null!=M&&null!=I?l.truncateText(i,I,w,M,{minChar:2,placeholder:S.placeholder}):i,A=e.get("tooltip",!0),L=e.mainType,C={componentType:L,name:i,$vars:["name"]};C[L+"Index"]=e.componentIndex;var D=new u.Text({anid:"name",__fullText:i,__truncatedText:T,style:{text:T,textFont:w,fill:f.getTextColor()||e.get("axisLine.lineStyle.color"),textAlign:h.textAlign,textVerticalAlign:h.verticalAlign},position:x,rotation:h.rotation,silent:a(e),z2:1,tooltip:A&&A.show?s.extend({content:i,formatter:function(){return i},formatterParams:C},A):null});e.get("triggerEvent")&&(D.eventData=n(e),D.eventData.targetType="axisName",D.eventData.name=i),this._dumbGroup.add(D),D.updateTransform(),this.group.add(D),D.decomposeTransform()}}},_=y.ifIgnoreOnTick=function(t,e,i){var n,o=t.scale;return"ordinal"===o.type&&("function"==typeof i?(n=o.getTicks()[e],!i(n,o.getLabel(n))):e%(i+1))},b=y.getInterval=function(t,e){var i=t.get("interval");return null!=i&&"auto"!=i||(i=e),i};t.exports=y},function(t,e,i){function n(t){return o.isObject(t)&&null!=t.value?t.value:t}var o=i(1),r=i(22);t.exports={getFormattedLabels:function(){return r.getFormattedLabels(this.axis,this.get("axisLabel.formatter"))},getCategories:function(){return"category"===this.get("type")&&o.map(this.get("data"),n)},getMin:function(t){var e=this.option,i=t||null==e.rangeStart?e.min:e.rangeStart;return null==i||"dataMin"===i||o.eqNaN(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 null==i||"dataMax"===i||o.eqNaN(i)||(i=this.axis.scale.parse(i)),i},getNeedCrossZero:function(){var t=this.option;return null==t.rangeStart&&null==t.rangeEnd&&!t.scale},getCoordSysModel:o.noop,setRange:function(t,e){this.option.rangeStart=t,this.option.rangeEnd=e},resetRange:function(){this.option.rangeStart=this.option.rangeEnd=null}}},function(t,e,i){function n(t,e,i){return t.getCoordSysModel()===e}function o(t){var e,i=t.model,n=i.getFormattedLabels(),o=i.getModel("axisLabel.textStyle"),r=1,a=n.length;a>40&&(r=Math.ceil(a/40));for(var s=0;s<a;s+=r)if(!t.isLabelIgnored(s)){var l=o.getTextRect(n[s]);e?e.union(l):e=l}return e}function r(t,e,i){this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this._initCartesian(t,e,i),this._model=t}function a(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}}function s(t,e){return c.map(y,function(e){var i=t.getReferringComponents(e)[0];return i})}function l(t){return"cartesian2d"===t.get("coordinateSystem")}var u=i(12),h=i(22),c=i(1),d=i(121),f=i(119),p=c.each,g=h.ifAxisCrossZero,m=h.niceScaleExtent;i(122);var v=r.prototype;v.type="grid",v.getRect=function(){return this._rect},v.update=function(t,e){function i(t){var e=n[t];for(var i in e)if(e.hasOwnProperty(i)){var o=e[i];if(o&&("category"===o.type||!g(o)))return!0}return!1}var n=this._axesMap;this._updateScale(t,this._model),p(n.x,function(t){m(t,t.model)}),p(n.y,function(t){m(t,t.model)}),p(n.x,function(t){i("y")&&(t.onZero=!1)}),p(n.y,function(t){i("x")&&(t.onZero=!1)}),this.resize(this._model,e)},v.resize=function(t,e){function i(){p(r,function(t){var e=t.isHorizontal(),i=e?[0,n.width]:[0,n.height],o=t.inverse?1:0;t.setExtent(i[o],i[1-o]),a(t,e?n.x:n.y)})}var n=u.getLayoutRect(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()});this._rect=n;var r=this._axesList;i(),t.get("containLabel")&&(p(r,function(t){if(!t.model.get("axisLabel.inside")){var e=o(t);if(e){var i=t.isHorizontal()?"height":"width",r=t.model.get("axisLabel.margin");n[i]-=e[i]+r,"top"===t.position?n.y+=e.height+r:"left"===t.position&&(n.x+=e.width+r)}}}),i())},v.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]}},v.getCartesian=function(t,e){if(null!=t&&null!=e){var i="x"+t+"y"+e;return this._coordsMap[i]}for(var n=0,o=this._coordsList;n<o.length;n++)if(o[n].getAxis("x").index===t||o[n].getAxis("y").index===e)return o[n]},v.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},v.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},v._findConvertTarget=function(t,e){var i,n,o=e.seriesModel,r=e.xAxisModel||o&&o.getReferringComponents("xAxis")[0],a=e.yAxisModel||o&&o.getReferringComponents("yAxis")[0],s=e.gridModel,l=this._coordsList;if(o)i=o.coordinateSystem,c.indexOf(l,i)<0&&(i=null);else if(r&&a)i=this.getCartesian(r.componentIndex,a.componentIndex);else if(r)n=this.getAxis("x",r.componentIndex);else if(a)n=this.getAxis("y",a.componentIndex);else if(s){var u=s.coordinateSystem;u===this&&(i=this._coordsList[0])}return{cartesian:i,axis:n}},v.containPoint=function(t){var e=this._coordsList[0];if(e)return e.containPoint(t)},v._initCartesian=function(t,e,i){function o(i){return function(o,l){if(n(o,t,e)){var u=o.get("position");"x"===i?"top"!==u&&"bottom"!==u&&(u="bottom",r[u]&&(u="top"===u?"bottom":"top")):"left"!==u&&"right"!==u&&(u="left",r[u]&&(u="left"===u?"right":"left")),r[u]=!0;var c=new f(i,h.createScaleByModel(o),[0,0],o.get("type"),u),d="category"===c.type;c.onBand=d&&o.get("boundaryGap"),c.inverse=o.get("inverse"),c.onZero=o.get("axisLine.onZero"),o.axis=c,c.model=o,c.grid=this,c.index=l,this._axesList.push(c),a[i][l]=c,s[i]++}}}var r={left:!1,right:!1,top:!1,bottom:!1},a={x:{},y:{}},s={x:0,y:0};return e.eachComponent("xAxis",o("x"),this),e.eachComponent("yAxis",o("y"),this),s.x&&s.y?(this._axesMap=a,void p(a.x,function(t,e){p(a.y,function(i,n){var o="x"+e+"y"+n,r=new d(o);r.grid=this,this._coordsMap[o]=r,this._coordsList.push(r),r.addAxis(t),r.addAxis(i)},this)},this)):(this._axesMap={},void(this._axesList=[]))},v._updateScale=function(t,e){function i(t,e,i){p(i.coordDimToDataDim(e.dim),function(i){e.scale.unionExtentFromData(t,i)})}c.each(this._axesList,function(t){t.scale.setExtent(1/0,-(1/0))}),t.eachSeries(function(o){if(l(o)){var r=s(o,t),a=r[0],u=r[1];if(!n(a,e,t)||!n(u,e,t))return;var h=this.getCartesian(a.componentIndex,u.componentIndex),c=o.getData(),d=h.getAxis("x"),f=h.getAxis("y");"list"===c.type&&(i(c,d,o),i(c,f,o))}},this)};var y=["xAxis","yAxis"];r.create=function(t,e){var i=[];return t.eachComponent("grid",function(n,o){var a=new r(n,t,e);a.name="grid_"+o,a.resize(n,e),n.coordinateSystem=a,i.push(a)}),t.eachSeries(function(e){if(l(e)){var i=s(e,t),n=i[0],o=i[1],r=n.getCoordSysModel(),a=r.coordinateSystem;e.coordinateSystem=a.getCartesian(n.componentIndex,o.componentIndex)}}),i},r.dimensions=d.prototype.dimensions,i(23).register("cartesian2d",r),t.exports=r},function(t,e,i){var n=i(86),o=i(1),r=i(13),a=i(12),s=["value","category","time","log"];t.exports=function(t,e,i,l){o.each(s,function(r){e.extend({type:t+"Axis."+r,mergeDefaultAndTheme:function(e,n){var s=this.layoutMode,l=s?a.getLayoutParams(e):{},u=n.getTheme();o.merge(e,u.get(r+"Axis")),o.merge(e,this.getDefaultOption()),e.type=i(t,e),s&&a.mergeLayoutParam(e,l,s)},defaultOption:o.mergeAll([{},n[r+"Axis"],l],!0)})}),r.registerSubTypeDefaulter(t+"Axis",o.curry(i,t))}},function(t,e,i){"use strict";function n(t,e){return e.type||(e.data?"category":"value")}var o=i(13),r=i(1),a=i(54),s=o.extend({type:"cartesian2dAxis",axis:null,init:function(){s.superApply(this,"init",arguments),this.resetRange()},mergeOption:function(){s.superApply(this,"mergeOption",arguments),this.resetRange()},restoreData:function(){s.superApply(this,"restoreData",arguments),this.resetRange()},getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"grid",index:this.option.gridIndex,id:this.option.gridId})[0]}});r.merge(s.prototype,i(52));var l={offset:0};a("x",s,n,l),a("y",s,n,l),t.exports=s},function(t,e){t.exports=function(t,e){e.eachSeriesByType(t,function(t){var e=t.getData(),i=t.coordinateSystem;if(i){var n=i.dimensions;"singleAxis"===i.type?e.each(n[0],function(t,n){e.setItemLayout(n,isNaN(t)?[NaN,NaN]:i.dataToPoint(t))}):e.each(n,function(t,n,o){e.setItemLayout(o,isNaN(t)||isNaN(n)?[NaN,NaN]:i.dataToPoint([t,n]))},!0)}})}},function(t,e,i){var n=i(15),o=n.set,r=n.get;t.exports={clearColorPalette:function(){o(this,"colorIdx",0),o(this,"colorNameMap",{})},getColorFromPalette:function(t,e){e=e||this;var i=r(e,"colorIdx")||0,n=r(e,"colorNameMap")||o(e,"colorNameMap",{});if(n[t])return n[t];var a=this.get("color",!0)||[];if(a.length){var s=a[i];return t&&(n[t]=s),o(e,"colorIdx",(i+1)%a.length),s}}}},function(t,e){t.exports=function(t,e){var i=e.findComponents({mainType:"legend"});i&&i.length&&e.eachSeriesByType(t,function(t){var e=t.getData();e.filterSelf(function(t){for(var n=e.getName(t),o=0;o<i.length;o++)if(!i[o].isSelected(n))return!1;return!0},this)},this)}},function(t,e,i){var n=i(34),o=i(44),r=i(15),a=function(){this.group=new n,this.uid=o.getUID("viewComponent")};a.prototype={constructor:a,init:function(t,e){},render:function(t,e,i,n){},dispose:function(){}};var s=a.prototype;s.updateView=s.updateLayout=s.updateVisual=function(t,e,i,n){},r.enableClassExtend(a),r.enableClassManagement(a,{registerWhenExtend:!0}),t.exports=a},function(t,e,i){"use strict";var n=i(64),o=i(21),r=i(92),a=i(167),s=i(1),l=function(t){r.call(this,t),o.call(this,t),a.call(this,t),this.id=t.id||n()};l.prototype={type:"element",name:"",__zr:null,ignore:!1,clipPath:null,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]),i[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]=[]),i[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(s.isObject(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,t.__zr=e,t.__clipTarget=this,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)}},s.mixin(l,a),s.mixin(l,r),s.mixin(l,o),t.exports=l},function(t,e,i){function n(t,e){return t[e]}function o(t,e,i){t[e]=i}function r(t,e,i){return(e-t)*i+t}function a(t,e,i){return i>.5?e:t}function s(t,e,i,n,o){var a=t.length;if(1==o)for(var s=0;s<a;s++)n[s]=r(t[s],e[s],i);else for(var l=t[0].length,s=0;s<a;s++)for(var u=0;u<l;u++)n[s][u]=r(t[s][u],e[s][u],i)}function l(t,e,i){var n=t.length,o=e.length;if(n!==o){var r=n>o;if(r)t.length=o;else for(var a=n;a<o;a++)t.push(1===i?e[a]:x.call(e[a]))}for(var s=t[0]&&t[0].length,a=0;a<t.length;a++)if(1===i)isNaN(t[a])&&(t[a]=e[a]);else for(var l=0;l<s;l++)isNaN(t[a][l])&&(t[a][l]=e[a][l])}function u(t,e,i){if(t===e)return!0;var n=t.length;if(n!==e.length)return!1;if(1===i){for(var o=0;o<n;o++)if(t[o]!==e[o])return!1}else for(var r=t[0].length,o=0;o<n;o++)for(var a=0;a<r;a++)if(t[o][a]!==e[o][a])return!1;return!0}function h(t,e,i,n,o,r,a,s,l){var u=t.length;if(1==l)for(var h=0;h<u;h++)s[h]=c(t[h],e[h],i[h],n[h],o,r,a);else for(var d=t[0].length,h=0;h<u;h++)for(var f=0;f<d;f++)s[h][f]=c(t[h][f],e[h][f],i[h][f],n[h][f],o,r,a)}function c(t,e,i,n,o,r,a){var s=.5*(i-t),l=.5*(n-e);return(2*(e-i)+s+l)*a+(-3*(e-i)-2*s-l)*r+s*o+e}function d(t){if(y(t)){var e=t.length;if(y(t[0])){for(var i=[],n=0;n<e;n++)i.push(x.call(t[n]));return i}return x.call(t)}return t}function f(t){return t[0]=Math.floor(t[0]),t[1]=Math.floor(t[1]),t[2]=Math.floor(t[2]),"rgba("+t.join(",")+")"}function p(t,e,i,n,o){var d=t._getter,p=t._setter,v="spline"===e,x=n.length;if(x){var _,b=n[0].value,w=y(b),S=!1,M=!1,I=w&&y(b[0])?2:1;n.sort(function(t,e){return t.time-e.time}),_=n[x-1].time;for(var T=[],A=[],L=n[0].value,C=!0,D=0;D<x;D++){T.push(n[D].time/_);var P=n[D].value;if(w&&u(P,L,I)||!w&&P===L||(C=!1),L=P,"string"==typeof P){var k=m.parse(P);k?(P=k,S=!0):M=!0}A.push(P)}if(!C){for(var O=A[x-1],D=0;D<x-1;D++)w?l(A[D],O,I):!isNaN(A[D])||isNaN(O)||M||S||(A[D]=O);w&&l(d(t._target,o),O,I);var z,E,R,N,V,B,G=0,F=0;if(S)var H=[0,0,0,0];var W=function(t,e){var i;if(e<0)i=0;else if(e<F){for(z=Math.min(G+1,x-1),i=z;i>=0&&!(T[i]<=e);i--);i=Math.min(i,x-2)}else{for(i=G;i<x&&!(T[i]>e);i++);i=Math.min(i-1,x-2)}G=i,F=e;var n=T[i+1]-T[i];if(0!==n)if(E=(e-T[i])/n,v)if(N=A[i],R=A[0===i?i:i-1],V=A[i>x-2?x-1:i+1],B=A[i>x-3?x-1:i+2],w)h(R,N,V,B,E,E*E,E*E*E,d(t,o),I);else{var l;if(S)l=h(R,N,V,B,E,E*E,E*E*E,H,1),l=f(H);else{if(M)return a(N,V,E);l=c(R,N,V,B,E,E*E,E*E*E)}p(t,o,l)}else if(w)s(A[i],A[i+1],E,d(t,o),I);else{var l;if(S)s(A[i],A[i+1],E,H,1),l=f(H);else{if(M)return a(A[i],A[i+1],E);l=r(A[i],A[i+1],E)}p(t,o,l)}},Z=new g({target:t._target,life:_,loop:t._loop,delay:t._delay,onframe:W,ondestroy:i});return e&&"spline"!==e&&(Z.easing=e),Z}}}var g=i(145),m=i(19),v=i(1),y=v.isArrayLike,x=Array.prototype.slice,_=function(t,e,i,r){this._tracks={},this._target=t,this._loop=e||!1,this._getter=i||n,this._setter=r||o,this._clipCount=0,this._delay=0,this._doneList=[],this._onframeList=[],this._clipList=[]};_.prototype={when:function(t,e){var i=this._tracks;for(var n in e)if(e.hasOwnProperty(n)){if(!i[n]){i[n]=[];var o=this._getter(this._target,n);if(null==o)continue;0!==t&&i[n].push({time:0,value:d(o)})}i[n].push({time:t,value:e[n]})}return this},during:function(t){return this._onframeList.push(t),this},_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){var e,i=this,n=0,o=function(){n--,n||i._doneCallback()};for(var r in this._tracks)if(this._tracks.hasOwnProperty(r)){var a=p(this,t,o,this._tracks[r],r);a&&(this._clipList.push(a),n++,this.animation&&this.animation.addClip(a),e=a)}if(e){var s=e.onframe;e.onframe=function(t,e){s(t,e);for(var n=0;n<i._onframeList.length;n++)i._onframeList[n](t,e)}}return n||this._doneCallback(),this},stop:function(t){for(var e=this._clipList,i=this.animation,n=0;n<e.length;n++){var o=e[n];t&&o.onframe(this._target,1),i&&i.removeClip(o)}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}},t.exports=_},function(t,e){t.exports="undefined"!=typeof window&&(window.requestAnimationFrame||window.msRequestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame)||function(t){setTimeout(t,16)}},function(t,e){var i=2*Math.PI;t.exports={normalizeRadian:function(t){return t%=i,t<0&&(t+=i),t}}},function(t,e){var i=2311;t.exports=function(){return i++}},function(t,e){var i=function(t,e){this.image=t,this.repeat=e,this.type="pattern"};i.prototype.getCanvasPattern=function(t){return this._canvasPattern||(this._canvasPattern=t.createPattern(this.image,this.repeat))},t.exports=i},function(t,e){function i(t,e,i){var n=e.x,o=e.x2,r=e.y,a=e.y2;e.global||(n=n*i.width+i.x,o=o*i.width+i.x,r=r*i.height+i.y,a=a*i.height+i.y);var s=t.createLinearGradient(n,r,o,a);return s}function n(t,e,i){var n=i.width,o=i.height,r=Math.min(n,o),a=e.x,s=e.y,l=e.r;e.global||(a=a*n+i.x,s=s*o+i.y,l*=r);var u=t.createRadialGradient(a,s,0,a,s,l);return u}var o=[["shadowBlur",0],["shadowOffsetX",0],["shadowOffsetY",0],["shadowColor","#000"],["lineCap","butt"],["lineJoin","miter"],["miterLimit",10]],r=function(t){this.extendFrom(t)};r.prototype={constructor:r,fill:"#000000",stroke:null,opacity:1,lineDash:null,lineDashOffset:0,shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,lineWidth:1,strokeNoScale:!1,text:null,textFill:"#000",textStroke:null,textPosition:"inside",textOffset:null,textBaseline:null,textAlign:null,textVerticalAlign:null,textDistance:5,textShadowBlur:0,textShadowOffsetX:0,textShadowOffsetY:0,textTransform:!1,textRotation:0,blend:null,bind:function(t,e,i){for(var n=this,r=i&&i.style,a=!r,s=0;s<o.length;s++){var l=o[s],u=l[0];(a||n[u]!==r[u])&&(t[u]=n[u]||l[1])}if((a||n.fill!==r.fill)&&(t.fillStyle=n.fill),(a||n.stroke!==r.stroke)&&(t.strokeStyle=n.stroke),(a||n.opacity!==r.opacity)&&(t.globalAlpha=null==n.opacity?1:n.opacity),(a||n.blend!==r.blend)&&(t.globalCompositeOperation=n.blend||"source-over"),this.hasStroke()){var h=n.lineWidth;t.lineWidth=h/(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&&this.lineWidth>0},extendFrom:function(t,e){if(t){var i=this;for(var n in t)!t.hasOwnProperty(n)||!e&&i.hasOwnProperty(n)||(i[n]=t[n])}},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,o){for(var r="radial"===e.type?n:i,a=r(t,e,o),s=e.colorStops,l=0;l<s.length;l++)a.addColorStop(s[l].offset,s[l].color);return a}};for(var a=r.prototype,s=0;s<o.length;s++){var l=o[s];l[0]in a||(a[l[0]]=l[1])}r.getGradient=a.getGradient,t.exports=r},function(t,e,i){var n=i(157),o=i(156);t.exports={buildPath:function(t,e,i){var r=e.points,a=e.smooth;if(r&&r.length>=2){if(a&&"spline"!==a){var s=o(r,a,i,e.smoothConstraint);t.moveTo(r[0][0],r[0][1]);for(var l=r.length,u=0;u<(i?l:l-1);u++){var h=s[2*u],c=s[2*u+1],d=r[(u+1)%l];t.bezierCurveTo(h[0],h[1],c[0],c[1],d[0],d[1])}}else{"spline"===a&&(r=n(r,i)),t.moveTo(r[0][0],r[0][1]);for(var u=1,f=r.length;u<f;u++)t.lineTo(r[u][0],r[u][1])}i&&t.closePath()}}}},function(t,e,i){var n=i(8),o=i(1),r={},a=["x","y","z","radius","angle","single"],s=["cartesian2d","polar","singleAxis"];r.isCoordSupported=function(t){return o.indexOf(s,t)>=0},r.createNameEach=function(t,e){t=t.slice();var i=o.map(t,n.capitalFirst);e=(e||[]).slice();var r=o.map(e,n.capitalFirst);return function(n,a){o.each(t,function(t,o){for(var s={name:t,capital:i[o]},l=0;l<e.length;l++)s[e[l]]=t+r[l];n.call(a,s)})}},r.eachAxisDim=r.createNameEach(a,["axisIndex","axis","index","id"]),r.createLinkedNodesFinder=function(t,e,i){function n(t,e){return o.indexOf(e.nodes,t)>=0}function r(t,n){var r=!1;return e(function(e){o.each(i(t,e)||[],function(t){n.records[e.name][t]&&(r=!0)})}),r}function a(t,n){n.nodes.push(t),e(function(e){o.each(i(t,e)||[],function(t){n.records[e.name][t]=!0})})}return function(i){function o(t){!n(t,s)&&r(t,s)&&(a(t,s),l=!0)}var s={nodes:[],records:{}};if(e(function(t){s.records[t.name]={}}),!i)return s;a(i,s);var l;do l=!1,t(o);while(l);return s}},t.exports=r},function(t,e,i){var n=i(1);t.exports={updateSelectedMap:function(t){this._selectTargetMap=n.reduce(t||[],function(t,e){return t[e.name]=e,t},{})},select:function(t){var e=this._selectTargetMap,i=e[t],o=this.get("selectedMode");
-"single"===o&&n.each(e,function(t){t.selected=!1}),i&&(i.selected=!0)},unSelect:function(t){var e=this._selectTargetMap[t];e&&(e.selected=!1)},toggleSelected:function(t){var e=this._selectTargetMap[t];if(null!=e)return this[e.selected?"unSelect":"select"](t),e.selected},isSelected:function(t){var e=this._selectTargetMap[t];return e&&e.selected}}},function(t,e,i){function n(t){o.defaultEmphasis(t.label,o.LABEL_OPTIONS)}var o=i(6),r=i(1),a=i(10),s=i(8),l=s.addCommas,u=s.encodeHTML,h=i(2).extendComponentModel({type:"marker",dependencies:["series","grid","polar","geo"],init:function(t,e,i,n){this.mergeDefaultAndTheme(t,i),this.mergeOption(t,i,n.createdBySelf,!0)},isAnimationEnabled:function(){if(a.node)return!1;var t=this.__hostSeries;return this.getShallow("animation")&&t&&t.isAnimationEnabled()},mergeOption:function(t,e,i,o){var a=this.constructor,s=this.mainType+"Model";i||e.eachSeries(function(t){var i=t.get(this.mainType),l=t[s];return i&&i.data?(l?l.mergeOption(i,e,!0):(o&&n(i),r.each(i.data,function(t){t instanceof Array?(n(t[0]),n(t[1])):n(t)}),l=new a(i,this,e),r.extend(l,{mainType:this.mainType,seriesIndex:t.seriesIndex,name:t.name,createdBySelf:!0}),l.__hostSeries=t),void(t[s]=l)):void(t[s]=null)},this)},formatTooltip:function(t){var e=this.getData(),i=this.getRawValue(t),n=r.isArray(i)?r.map(i,l).join(", "):l(i),o=e.getName(t),a=u(this.name);return(null!=i||o)&&(a+="<br />"),o&&(a+=u(o),null!=i&&(a+=" : ")),null!=i&&(a+=u(n)),a},getData:function(){return this._data},setData:function(t){this._data=t}});r.mixin(h,o.dataFormatMixin),t.exports=h},function(t,e,i){t.exports=i(2).extendComponentView({type:"marker",init:function(){this.markerGroupMap={}},render:function(t,e,i){var n=this.markerGroupMap;for(var o in n)n.hasOwnProperty(o)&&(n[o].__keep=!1);var r=this.type+"Model";e.eachSeries(function(t){var n=t[r];n&&this.renderSeries(t,n,e,i)},this);for(var o in n)n.hasOwnProperty(o)&&!n[o].__keep&&this.group.remove(n[o].group)},renderSeries:function(){}})},function(t,e,i){function n(t){return!(isNaN(parseFloat(t.x))&&isNaN(parseFloat(t.y)))}function o(t){return!isNaN(parseFloat(t.x))&&!isNaN(parseFloat(t.y))}function r(t,e,i){var n=-1;do n=Math.max(l.getPrecision(t.get(e,i)),n),t=t.stackedOn;while(t);return n}function a(t,e,i,n,o,a){var s=[],l=m(e,n,t),u=e.indexOfNearest(n,l,!0);s[o]=e.get(i,u,!0),s[a]=e.get(n,u,!0);var h=r(e,n,u);return h>=0&&(s[a]=+s[a].toFixed(h)),s}var s=i(1),l=i(4),u=s.indexOf,h=s.curry,c={min:h(a,"min"),max:h(a,"max"),average:h(a,"average")},d=function(t,e){var i=t.getData(),n=t.coordinateSystem;if(e&&!o(e)&&!s.isArray(e.coord)&&n){var r=n.dimensions,a=f(e,i,n,t);if(e=s.clone(e),e.type&&c[e.type]&&a.baseAxis&&a.valueAxis){var l=u(r,a.baseAxis.dim),h=u(r,a.valueAxis.dim);e.coord=c[e.type](i,a.baseDataDim,a.valueDataDim,l,h),e.value=e.coord[h]}else{for(var d=[null!=e.xAxis?e.xAxis:e.radiusAxis,null!=e.yAxis?e.yAxis:e.angleAxis],p=0;p<2;p++)if(c[d[p]]){var g=t.coordDimToDataDim(r[p])[0];d[p]=m(i,g,d[p])}e.coord=d}}return e},f=function(t,e,i,n){var o={};return null!=t.valueIndex||null!=t.valueDim?(o.valueDataDim=null!=t.valueIndex?e.getDimension(t.valueIndex):t.valueDim,o.valueAxis=i.getAxis(n.dataDimToCoordDim(o.valueDataDim)),o.baseAxis=i.getOtherAxis(o.valueAxis),o.baseDataDim=n.coordDimToDataDim(o.baseAxis.dim)[0]):(o.baseAxis=n.getBaseAxis(),o.valueAxis=i.getOtherAxis(o.baseAxis),o.baseDataDim=n.coordDimToDataDim(o.baseAxis.dim)[0],o.valueDataDim=n.coordDimToDataDim(o.valueAxis.dim)[0]),o},p=function(t,e){return!(t&&t.containData&&e.coord&&!n(e))||t.containData(e.coord)},g=function(t,e,i,n){return n<2?t.coord&&t.coord[n]:t.value},m=function(t,e,i){if("average"===i){var n=0,o=0;return t.each(e,function(t,e){isNaN(t)||(n+=t,o++)},!0),n/o}return t.getDataExtent(e,!0)["max"===i?1:0]};t.exports={dataTransform:d,dataFilter:p,dimValueGetter:g,getAxisInfo:f,numCalculate:m}},function(t,e,i){function n(t){var e=t.pieceList;t.hasSpecialVisual=!1,p.each(e,function(e,i){e.originIndex=i,null!=e.visual&&(t.hasSpecialVisual=!0)})}function o(t){var e=t.categories,i=t.visual,n=t.categoryMap={};if(v(e,function(t,e){n[t]=e}),!p.isArray(i)){var o=[];p.isObject(i)?v(i,function(t,e){var i=n[e];o[null!=i?i:x]=t}):o[x]=i,i=t.visual=o}for(var r=e.length-1;r>=0;r--)null==i[r]&&(delete n[e[r]],e.pop())}function r(t,e){var i=t.visual,n=[];p.isObject(i)?v(i,function(t){n.push(t)}):null!=i&&n.push(i);var o={color:1,symbol:1};e||1!==n.length||o.hasOwnProperty(t.type)||(n[1]=n[0]),t.visual=n}function a(t){return{applyVisual:function(e,i,n){e=this.mapValueToVisual(e),n("color",t(i("color"),e))},_doMap:c([0,1])}}function s(t){var e=this.option.visual;return e[Math.round(m(t,[0,1],[0,e.length-1],!0))]||{}}function l(t){return function(e,i,n){n(t,this.mapValueToVisual(e))}}function u(t){var e=this.option.visual;return e[this.option.loop&&t!==x?t%e.length:t]}function h(){return this.option.visual[0]}function c(t){return{linear:function(e){return m(e,t,this.option.visual,!0)},category:u,piecewise:function(e,i){var n=d.call(this,i);return null==n&&(n=m(e,t,this.option.visual,!0)),n},fixed:h}}function d(t){var e=this.option,i=e.pieceList;if(e.hasSpecialVisual){var n=_.findPieceIndex(t,i),o=i[n];if(o&&o.visual)return o.visual[this.type]}}function f(t,e,i){return t?e<=i:e<i}var p=i(1),g=i(19),m=i(4).linearMap,v=p.each,y=p.isObject,x=-1,_=function(t){var e=t.mappingMethod,i=t.type,a=this.option=p.clone(t);this.type=i,this.mappingMethod=e,this._normalizeData=w[e];var s=b[i];this.applyVisual=s.applyVisual,this.getColorMapper=s.getColorMapper,this._doMap=s._doMap[e],"piecewise"===e?(r(a),n(a)):"category"===e?a.categories?o(a):r(a,!0):(p.assert("linear"!==e||a.dataExtent),r(a))};_.prototype={constructor:_,mapValueToVisual:function(t){var e=this._normalizeData(t);return this._doMap(e,t)},getNormalizer:function(){return p.bind(this._normalizeData,this)}};var b=_.visualHandlers={color:{applyVisual:l("color"),getColorMapper:function(){var t=this.option,e=p.map(t.visual,g.parse);return p.bind("category"===t.mappingMethod?function(t,e){return!e&&(t=this._normalizeData(t)),u.call(this,t)}:function(t,i,n){var o=!!n;return!i&&(t=this._normalizeData(t)),n=g.fastMapToColor(t,e,n),o?n:p.stringify(n,"rgba")},this)},_doMap:{linear:function(t){return g.mapToColor(t,this.option.visual)},category:u,piecewise:function(t,e){var i=d.call(this,e);return null==i&&(i=g.mapToColor(t,this.option.visual)),i},fixed:h}},colorHue:a(function(t,e){return g.modifyHSL(t,e)}),colorSaturation:a(function(t,e){return g.modifyHSL(t,null,e)}),colorLightness:a(function(t,e){return g.modifyHSL(t,null,null,e)}),colorAlpha:a(function(t,e){return g.modifyAlpha(t,e)}),opacity:{applyVisual:l("opacity"),_doMap:c([0,1])},symbol:{applyVisual:function(t,e,i){var n=this.mapValueToVisual(t);if(p.isString(n))i("symbol",n);else if(y(n))for(var o in n)n.hasOwnProperty(o)&&i(o,n[o])},_doMap:{linear:s,category:u,piecewise:function(t,e){var i=d.call(this,e);return null==i&&(i=s.call(this,t)),i},fixed:h}},symbolSize:{applyVisual:l("symbolSize"),_doMap:c([0,1])}},w={linear:function(t){return m(t,this.option.dataExtent,[0,1],!0)},piecewise:function(t){var e=this.option.pieceList,i=_.findPieceIndex(t,e,!0);if(null!=i)return m(i,[0,e.length-1],[0,1],!0)},category:function(t){var e=this.option.categories?this.option.categoryMap[t]:t;return null==e?x:e},fixed:p.noop};_.listVisualTypes=function(){var t=[];return p.each(b,function(e,i){t.push(i)}),t},_.addVisualHandler=function(t,e){b[t]=e},_.isValidType=function(t){return b.hasOwnProperty(t)},_.eachVisual=function(t,e,i){p.isObject(t)?p.each(t,e,i):e.call(i,t)},_.mapVisual=function(t,e,i){var n,o=p.isArray(t)?[]:p.isObject(t)?{}:(n=!0,null);return _.eachVisual(t,function(t,r){var a=e.call(i,t,r);n?o=a:o[r]=a}),o},_.retrieveVisuals=function(t){var e,i={};return t&&v(b,function(n,o){t.hasOwnProperty(o)&&(i[o]=t[o],e=!0)}),e?i:null},_.prepareVisualTypes=function(t){if(y(t)){var e=[];v(t,function(t,i){e.push(i)}),t=e}else{if(!p.isArray(t))return[];t=t.slice()}return t.sort(function(t,e){return"color"===e&&"color"!==t&&0===t.indexOf("color")?1:-1}),t},_.dependsOn=function(t,e){return"color"===e?!(!t||0!==t.indexOf(e)):t===e},_.findPieceIndex=function(t,e,i){function n(e,i){var n=Math.abs(e-t);n<r&&(r=n,o=i)}for(var o,r=1/0,a=0,s=e.length;a<s;a++){var l=e[a].value;if(null!=l){if(l===t)return a;i&&n(l,a)}}for(var a=0,s=e.length;a<s;a++){var u=e[a],h=u.interval,c=u.close;if(h){if(h[0]===-(1/0)){if(f(c[1],t,h[1]))return a}else if(h[1]===1/0){if(f(c[0],h[0],t))return a}else if(f(c[0],h[0],t)&&f(c[1],t,h[1]))return a;i&&n(h[0],a),i&&n(h[1],a)}}if(i)return t===1/0?e.length-1:t===-(1/0)?0:o},t.exports=_},function(t,e){t.exports=function(t,e){var i={};e.eachRawSeriesByType(t,function(t){var n=t.getRawData(),o={};if(!e.isSeriesFiltered(t)){var r=t.getData();r.each(function(t){var e=r.getRawIndex(t);o[e]=t}),n.each(function(e){var a=o[e],s=null!=a&&r.getItemVisual(a,"color",!0);if(s)n.setItemVisual(e,"color",s);else{var l=n.getItemModel(e),u=l.get("itemStyle.normal.color")||t.getColorFromPalette(n.getName(e),i);n.setItemVisual(e,"color",u),null!=a&&r.setItemVisual(a,"color",u)}})}})}},function(t,e,i){var n=i(5),o=i(18),r={},a=Math.min,s=Math.max,l=Math.sin,u=Math.cos,h=n.create(),c=n.create(),d=n.create(),f=2*Math.PI;r.fromPoints=function(t,e,i){if(0!==t.length){var n,o=t[0],r=o[0],l=o[0],u=o[1],h=o[1];for(n=1;n<t.length;n++)o=t[n],r=a(r,o[0]),l=s(l,o[0]),u=a(u,o[1]),h=s(h,o[1]);e[0]=r,e[1]=u,i[0]=l,i[1]=h}},r.fromLine=function(t,e,i,n,o,r){o[0]=a(t,i),o[1]=a(e,n),r[0]=s(t,i),r[1]=s(e,n)};var p=[],g=[];r.fromCubic=function(t,e,i,n,r,l,u,h,c,d){var f,m=o.cubicExtrema,v=o.cubicAt,y=m(t,i,r,u,p);for(c[0]=1/0,c[1]=1/0,d[0]=-(1/0),d[1]=-(1/0),f=0;f<y;f++){var x=v(t,i,r,u,p[f]);c[0]=a(x,c[0]),d[0]=s(x,d[0])}for(y=m(e,n,l,h,g),f=0;f<y;f++){var _=v(e,n,l,h,g[f]);c[1]=a(_,c[1]),d[1]=s(_,d[1])}c[0]=a(t,c[0]),d[0]=s(t,d[0]),c[0]=a(u,c[0]),d[0]=s(u,d[0]),c[1]=a(e,c[1]),d[1]=s(e,d[1]),c[1]=a(h,c[1]),d[1]=s(h,d[1])},r.fromQuadratic=function(t,e,i,n,r,l,u,h){var c=o.quadraticExtremum,d=o.quadraticAt,f=s(a(c(t,i,r),1),0),p=s(a(c(e,n,l),1),0),g=d(t,i,r,f),m=d(e,n,l,p);u[0]=a(t,r,g),u[1]=a(e,l,m),h[0]=s(t,r,g),h[1]=s(e,l,m)},r.fromArc=function(t,e,i,o,r,a,s,p,g){var m=n.min,v=n.max,y=Math.abs(r-a);if(y%f<1e-4&&y>1e-4)return p[0]=t-i,p[1]=e-o,g[0]=t+i,void(g[1]=e+o);if(h[0]=u(r)*i+t,h[1]=l(r)*o+e,c[0]=u(a)*i+t,c[1]=l(a)*o+e,m(p,h,c),v(g,h,c),r%=f,r<0&&(r+=f),a%=f,a<0&&(a+=f),r>a&&!s?a+=f:r<a&&s&&(r+=f),s){var x=a;a=r,r=x}for(var _=0;_<a;_+=Math.PI/2)_>r&&(d[0]=u(_)*i+t,d[1]=l(_)*o+e,m(p,d,p),v(g,d,g))},t.exports=r},function(t,e,i){var n=i(36),o=i(1),r=i(17),a=function(t){n.call(this,t)};a.prototype={constructor:a,type:"text",brush:function(t,e){var i=this.style,n=i.x||0,o=i.y||0,a=i.text;if(null!=a&&(a+=""),i.bind(t,this,e),a){this.setTransform(t);var s,l=i.textAlign,u=i.textFont||i.font;if(i.textVerticalAlign){var h=r.getBoundingRect(a,u,i.textAlign,"top");switch(s="middle",i.textVerticalAlign){case"middle":o-=h.height/2-h.lineHeight/2;break;case"bottom":o-=h.height-h.lineHeight/2;break;default:o+=h.lineHeight/2}}else s=i.textBaseline;t.font=u||"12px sans-serif",t.textAlign=l||"left",t.textAlign!==l&&(t.textAlign="left"),t.textBaseline=s||"alphabetic",t.textBaseline!==s&&(t.textBaseline="alphabetic");for(var c=r.measureText("国",t.font).width,d=a.split("\n"),f=0;f<d.length;f++)i.hasFill()&&t.fillText(d[f],n,o),i.hasStroke()&&t.strokeText(d[f],n,o),o+=c;this.restoreTransform(t)}},getBoundingRect:function(){if(!this._rect){var t=this.style,e=t.textVerticalAlign,i=r.getBoundingRect(t.text+"",t.textFont||t.font,t.textAlign,e?"top":t.textBaseline);switch(e){case"middle":i.y-=i.height/2;break;case"bottom":i.y-=i.height}i.x+=t.x||0,i.y+=t.y||0,this._rect=i}return this._rect}},o.inherits(a,n),t.exports=a},function(t,e,i){function n(t,e){return"string"==typeof t?t.lastIndexOf("%")>=0?parseFloat(t)/100*e:parseFloat(t):t}var o=i(17),r=i(9),a=new r,s=function(){};s.prototype={constructor:s,drawRectText:function(t,e,i){var r=this.style,s=r.text;if(null!=s&&(s+=""),s){t.save();var l,u,h=r.textPosition,c=r.textOffset,d=r.textDistance,f=r.textAlign,p=r.textFont||r.font,g=r.textBaseline,m=r.textVerticalAlign;i=i||o.getBoundingRect(s,p,f,g);var v=this.transform;if(r.textTransform?this.setTransform(t):v&&(a.copy(e),a.applyTransform(v),e=a),h instanceof Array){if(l=e.x+n(h[0],e.width),u=e.y+n(h[1],e.height),f=f||"left",g=g||"top",m){switch(m){case"middle":u-=i.height/2-i.lineHeight/2;break;case"bottom":u-=i.height-i.lineHeight/2;break;default:u+=i.lineHeight/2}g="middle"}}else{var y=o.adjustTextPositionOnRect(h,e,i,d);l=y.x,u=y.y,f=f||y.textAlign,g=g||y.textBaseline}c&&(l+=c[0],u+=c[1]),t.textAlign=f||"left",t.textBaseline=g||"alphabetic";var x=r.textFill,_=r.textStroke;x&&(t.fillStyle=x),_&&(t.strokeStyle=_),t.font=p||"12px sans-serif",t.shadowBlur=r.textShadowBlur,t.shadowColor=r.textShadowColor||"transparent",t.shadowOffsetX=r.textShadowOffsetX,t.shadowOffsetY=r.textShadowOffsetY;var b=s.split("\n");r.textRotation&&(v&&t.translate(v[4],v[5]),t.rotate(r.textRotation),v&&t.translate(-v[4],-v[5]));for(var w=0;w<b.length;w++)x&&t.fillText(b[w],l,u),_&&t.strokeText(b[w],l,u),u+=i.lineHeight;t.restore()}}},t.exports=s},function(t,e,i){function n(t){delete f[t]}/*!
+var w=i(9),S=i(139),M=i(103),I=i(26),T=i(140),A=i(13),L=i(18),C=i(64),D=i(29),P=i(3),k=i(5),O=i(39),z=i(87),R=i(1),E=i(22),N=i(23),V=i(51),B=R.each,G=A.parseClassType,F=1e3,H=5e3,W=1e3,Z=2e3,q=3e3,j=4e3,U=5e3,X="__flagInMainProcess",Y="__hasGradientOrPatternBg",$="__optionUpdated",K=/^[a-zA-Z0-9_]+$/;o.prototype.on=n("on"),o.prototype.off=n("off"),o.prototype.one=n("one"),R.mixin(o,N);var J=a.prototype;J._onframe=function(){if(this[$]){var t=this[$].silent;this[X]=!0,Q.prepareAndUpdate.call(this),this[X]=!1,this[$]=!1,u.call(this,t),h.call(this,t)}},J.getDom=function(){return this._dom},J.getZr=function(){return this._zr},J.setOption=function(t,e,i){var n;if(R.isObject(e)&&(i=e.lazyUpdate,n=e.silent,e=e.notMerge),this[X]=!0,!this._model||e){var o=new T(this._api),a=this._theme,r=this._model=new S(null,null,a,o);r.init(null,null,a,o)}this.__lastOnlyGraphic=!(!t||!t.graphic),R.each(t,function(t,e){"graphic"!==e&&(this.__lastOnlyGraphic=!1)},this),this._model.setOption(t,ot,this.__lastOnlyGraphic),i?(this[$]={silent:n},this[X]=!1):(Q.prepareAndUpdate.call(this),this._zr.flush(),this[$]=!1,this[X]=!1,u.call(this,n),h.call(this,n))},J.setTheme=function(){console.log("ECharts#setTheme() is DEPRECATED in ECharts 3.0")},J.getModel=function(){return this._model},J.getOption=function(){return this._model&&this._model.getOption()},J.getWidth=function(){return this._zr.getWidth()},J.getHeight=function(){return this._zr.getHeight()},J.getDevicePixelRatio=function(){return this._zr.painter.dpr||window.devicePixelRatio||1},J.getRenderedCanvas=function(t){if(w.canvasSupported){t=t||{},t.pixelRatio=t.pixelRatio||1,t.backgroundColor=t.backgroundColor||this._model.get("backgroundColor");var e=this._zr,i=e.storage.getDisplayList();return R.each(i,function(t){t.stopAnimation(!0)}),e.painter.getRenderedCanvas(t)}},J.getDataURL=function(t){t=t||{};var e=t.excludeComponents,i=this._model,n=[],o=this;B(e,function(t){i.eachComponent({mainType:t},function(t){var e=o._componentsMap[t.__viewId];e.group.ignore||(n.push(e),e.group.ignore=!0)})});var a=this.getRenderedCanvas(t).toDataURL("image/"+(t&&t.type||"png"));return B(n,function(t){t.group.ignore=!1}),a},J.getConnectedDataURL=function(t){if(w.canvasSupported){var e=this.group,i=Math.min,n=Math.max,o=1/0;if(ht[e]){var a=o,r=o,s=-o,l=-o,u=[],h=t&&t.pixelRatio||1;R.each(ut,function(o,h){if(o.group===e){var c=o.getRenderedCanvas(R.clone(t)),d=o.getDom().getBoundingClientRect();a=i(d.left,a),r=i(d.top,r),s=n(d.right,s),l=n(d.bottom,l),u.push({dom:c,left:d.left,top:d.top})}}),a*=h,r*=h,s*=h,l*=h;var c=s-a,d=l-r,f=R.createCanvas();f.width=c,f.height=d;var p=z.init(f);return B(u,function(t){var e=new P.Image({style:{x:t.left*h-a,y:t.top*h-r,image:t.dom}});p.add(e)}),p.refreshImmediately(),f.toDataURL("image/"+(t&&t.type||"png"))}return this.getDataURL(t)}},J.convertToPixel=R.curry(r,"convertToPixel"),J.convertFromPixel=R.curry(r,"convertFromPixel"),J.containPixel=function(t,e){var i,n=this._model;return t=k.parseFinder(n,t),R.each(t,function(t,n){n.indexOf("Models")>=0&&R.each(t,function(t){var o=t.coordinateSystem;if(o&&o.containPoint)i|=!!o.containPoint(e);else if("seriesModels"===n){var a=this._chartsMap[t.__viewId];a&&a.containPoint&&(i|=a.containPoint(e,t))}},this)},this),!!i},J.getVisual=function(t,e){var i=this._model;t=k.parseFinder(i,t,{defaultMainType:"series"});var n=t.seriesModel,o=n.getData(),a=t.hasOwnProperty("dataIndexInside")?t.dataIndexInside:t.hasOwnProperty("dataIndex")?o.indexOfRawIndex(t.dataIndex):null;return null!=a?o.getItemVisual(a,e):o.getVisual(e)},J.getViewOfComponentModel=function(t){return this._componentsMap[t.__viewId]},J.getViewOfSeriesModel=function(t){return this._chartsMap[t.__viewId]};var Q={update:function(t){var e=this._model,i=this._api,n=this._coordSysMgr,o=this._zr;if(e){e.restoreData(),n.create(this._model,this._api),f.call(this,e,i),p.call(this,e),n.update(e,i),m.call(this,e,t),v.call(this,e,t);var a=e.get("backgroundColor")||"transparent",r=o.painter;if(r.isSingleCanvas&&r.isSingleCanvas())o.configLayer(0,{clearColor:a});else{if(!w.canvasSupported){var s=E.parse(a);a=E.stringify(s,"rgb"),0===s[3]&&(a="transparent")}a.colorStops||a.image?(o.configLayer(0,{clearColor:a}),this[Y]=!0,this._dom.style.background="transparent"):(this[Y]&&o.configLayer(0,{clearColor:null}),this[Y]=!1,this._dom.style.background=a)}B(at,function(t){t(e,i)})}},updateView:function(t){var e=this._model;e&&(e.eachSeries(function(t){t.getData().clearAllVisual()}),m.call(this,e,t),c.call(this,"updateView",e,t))},updateVisual:function(t){var e=this._model;e&&(e.eachSeries(function(t){t.getData().clearAllVisual()}),m.call(this,e,t,!0),c.call(this,"updateVisual",e,t))},updateLayout:function(t){var e=this._model;e&&(g.call(this,e,t),c.call(this,"updateLayout",e,t))},prepareAndUpdate:function(t){var e=this._model;d.call(this,"component",e),d.call(this,"chart",e),this.__lastOnlyGraphic?(B(this._componentsViews,function(i){var n=i.__model;n&&"graphic"===n.mainType&&(i.render(n,e,this._api,t),_(n,i))},this),this.__lastOnlyGraphic=!1):Q.update.call(this,t)}};J.resize=function(t){this[X]=!0,this._zr.resize(t);var e=this._model&&this._model.resetOption("media"),i=e?"prepareAndUpdate":"update";Q[i].call(this),this._loadingFX&&this._loadingFX.resize(),this[X]=!1;var n=t&&t.silent;u.call(this,n),h.call(this,n)},J.showLoading=function(t,e){if(R.isObject(t)&&(e=t,t=""),t=t||"default",this.hideLoading(),lt[t]){var i=lt[t](this._api,e),n=this._zr;this._loadingFX=i,n.add(i)}},J.hideLoading=function(){this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null},J.makeActionFromEvent=function(t){var e=R.extend({},t);return e.type=it[t.type],e},J.dispatchAction=function(t,e){if(R.isObject(e)||(e={silent:!!e}),et[t.type]){if(this[X])return void this._pendingActions.push(t);l.call(this,t,e.silent),e.flush?this._zr.flush(!0):e.flush!==!1&&w.browser.weChat&&this._throttledZrFlush(),u.call(this,e.silent),h.call(this,e.silent)}},J.on=n("on"),J.off=n("off"),J.one=n("one");var tt=["click","dblclick","mouseover","mouseout","mousemove","mousedown","mouseup","globalout","contextmenu"];J._initEvents=function(){B(tt,function(t){this._zr.on(t,function(e){var i,n=this.getModel(),o=e.target;if("globalout"===t)i={};else if(o&&null!=o.dataIndex){var a=o.dataModel||n.getSeriesByIndex(o.seriesIndex);i=a&&a.getDataParams(o.dataIndex,o.dataType)||{}}else o&&o.eventData&&(i=R.extend({},o.eventData));i&&(i.event=e,i.type=t,this.trigger(t,i))},this)},this),B(it,function(t,e){this._messageCenter.on(e,function(t){this.trigger(e,t)},this)},this)},J.isDisposed=function(){return this._disposed},J.clear=function(){this.setOption({series:[]},!0)},J.dispose=function(){if(!this._disposed){this._disposed=!0;var t=this._api,e=this._model;B(this._componentsViews,function(i){i.dispose(e,t)}),B(this._chartsViews,function(i){i.dispose(e,t)}),this._zr.dispose(),delete ut[this.id]}},R.mixin(a,N);var et={},it={},nt=[],ot=[],at=[],rt=[],st={},lt={},ut={},ht={},ct=new Date-0,dt=new Date-0,ft="_echarts_instance_",pt={version:"3.5.0",dependencies:{zrender:"3.4.0"}};pt.init=function(t,e,i){var n=new a(t,e,i);return n.id="ec_"+ct++,ut[n.id]=n,t.setAttribute&&t.setAttribute(ft,n.id),b(n),n},pt.connect=function(t){if(R.isArray(t)){var e=t;t=null,R.each(e,function(e){null!=e.group&&(t=e.group)}),t=t||"g_"+dt++,R.each(e,function(e){e.group=t})}return ht[t]=!0,t},pt.disConnect=function(t){ht[t]=!1},pt.disconnect=pt.disConnect,pt.dispose=function(t){R.isDom(t)?t=pt.getInstanceByDom(t):"string"==typeof t&&(t=ut[t]),t instanceof a&&!t.isDisposed()&&t.dispose()},pt.getInstanceByDom=function(t){var e=t.getAttribute(ft);return ut[e]},pt.getInstanceById=function(t){return ut[t]},pt.registerTheme=function(t,e){st[t]=e},pt.registerPreprocessor=function(t){ot.push(t)},pt.registerProcessor=function(t,e){"function"==typeof t&&(e=t,t=F),nt.push({prio:t,func:e})},pt.registerPostUpdate=function(t){at.push(t)},pt.registerAction=function(t,e,i){"function"==typeof e&&(i=e,e="");var n=R.isObject(t)?t.type:[t,t={event:e}][0];t.event=(t.event||n).toLowerCase(),e=t.event,R.assert(K.test(n)&&K.test(e)),et[n]||(et[n]={action:i,actionInfo:t}),it[e]=n},pt.registerCoordinateSystem=function(t,e){I.register(t,e)},pt.registerLayout=function(t,e){"function"==typeof t&&(e=t,t=W),rt.push({prio:t,func:e,isLayout:!0})},pt.registerVisual=function(t,e){"function"==typeof t&&(e=t,t=q),rt.push({prio:t,func:e})},pt.registerLoading=function(t,e){lt[t]=e},pt.extendComponentModel=function(t){return A.extend(t)},pt.extendComponentView=function(t){return C.extend(t)},pt.extendSeriesModel=function(t){return L.extend(t)},pt.extendChartView=function(t){return D.extend(t)},pt.setCanvasCreator=function(t){R.createCanvas=t},pt.registerVisual(Z,i(153)),pt.registerPreprocessor(i(147)),pt.registerLoading("default",i(138)),pt.registerAction({type:"highlight",event:"highlight",update:"highlight"},R.noop),pt.registerAction({type:"downplay",event:"downplay",update:"downplay"},R.noop),pt.zrender=z,pt.List=i(14),pt.Model=i(10),pt.Axis=i(33),pt.graphic=i(3),pt.number=i(4),pt.format=i(7),pt.throttle=O.throttle,pt.matrix=i(19),pt.vector=i(6),pt.color=i(22),pt.util={},B(["map","each","filter","indexOf","inherits","reduce","filter","bind","curry","isArray","isString","isObject","isFunction","extend","defaults","clone","merge"],function(t){pt.util[t]=R[t]}),pt.helper=i(137),pt.PRIORITY={PROCESSOR:{FILTER:F,STATISTIC:H},VISUAL:{LAYOUT:W,GLOBAL:Z,CHART:q,COMPONENT:j,BRUSH:U}},t.exports=pt},function(t,e,i){"use strict";function n(t){return null!=t&&"none"!=t}function o(t){return"string"==typeof t?_.lift(t,-.1):t}function a(t){if(t.__hoverStlDirty){var e=t.style.stroke,i=t.style.fill,a=t.__hoverStl;a.fill=a.fill||(n(i)?o(i):null),a.stroke=a.stroke||(n(e)?o(e):null);var r={};for(var s in a)a.hasOwnProperty(s)&&(r[s]=t.style[s]);t.__normalStl=r,t.__hoverStlDirty=!1}}function r(t){t.__isHover||(a(t),t.useHoverLayer?t.__zr&&t.__zr.addHover(t,t.__hoverStl):(t.setStyle(t.__hoverStl),t.z2+=1),t.__isHover=!0)}function s(t){if(t.__isHover){var e=t.__normalStl;t.useHoverLayer?t.__zr&&t.__zr.removeHover(t):(e&&t.setStyle(e),t.z2-=1),t.__isHover=!1}}function l(t){"group"===t.type?t.traverse(function(t){"group"!==t.type&&r(t)}):r(t)}function u(t){"group"===t.type?t.traverse(function(t){"group"!==t.type&&s(t)}):s(t)}function h(t,e){t.__hoverStl=t.hoverStyle||e||{},t.__hoverStlDirty=!0,t.__isHover&&a(t)}function c(t){this.__hoverSilentOnTouch&&t.zrByTouch||!this.__isEmphasis&&l(this)}function d(t){this.__hoverSilentOnTouch&&t.zrByTouch||!this.__isEmphasis&&u(this)}function f(){this.__isEmphasis=!0,l(this)}function p(){this.__isEmphasis=!1,u(this)}function g(t,e,i,n,o,a){"function"==typeof o&&(a=o,o=null);var r=n&&n.isAnimationEnabled();if(r){var s=t?"Update":"",l=n.getShallow("animationDuration"+s),u=n.getShallow("animationEasing"+s),h=n.getShallow("animationDelay"+s);"function"==typeof h&&(h=h(o,n.getAnimationDelayParams?n.getAnimationDelayParams(e,o):null)),"function"==typeof l&&(l=l(o)),l>0?e.animateTo(i,l,h||0,u,a):(e.attr(i),a&&a())}else e.attr(i),a&&a()}var m=i(1),v=i(182),y=Math.round,x=i(8),_=i(22),b=i(19),w=i(6),S={};S.Group=i(36),S.Image=i(53),S.Text=i(85),S.Circle=i(173),S.Sector=i(179),S.Ring=i(178),S.Polygon=i(175),S.Polyline=i(176),S.Rect=i(177),S.Line=i(174),S.BezierCurve=i(172),S.Arc=i(171),S.CompoundPath=i(166),S.LinearGradient=i(101),S.RadialGradient=i(167),S.BoundingRect=i(11),S.extendShape=function(t){return x.extend(t)},S.extendPath=function(t,e){return v.extendFromString(t,e)},S.makePath=function(t,e,i,n){var o=v.createFromString(t,e),a=o.getBoundingRect();if(i){var r=a.width/a.height;if("center"===n){var s,l=i.height*r;l<=i.width?s=i.height:(l=i.width,s=l/r);var u=i.x+i.width/2,h=i.y+i.height/2;i.x=u-l/2,i.y=h-s/2,i.width=l,i.height=s}S.resizePath(o,i)}return o},S.mergePath=v.mergePath,S.resizePath=function(t,e){if(t.applyTransform){var i=t.getBoundingRect(),n=i.calculateTransform(e);t.applyTransform(n)}},S.subPixelOptimizeLine=function(t){var e=S.subPixelOptimize,i=t.shape,n=t.style.lineWidth;return y(2*i.x1)===y(2*i.x2)&&(i.x1=i.x2=e(i.x1,n,!0)),y(2*i.y1)===y(2*i.y2)&&(i.y1=i.y2=e(i.y1,n,!0)),t},S.subPixelOptimizeRect=function(t){var e=S.subPixelOptimize,i=t.shape,n=t.style.lineWidth,o=i.x,a=i.y,r=i.width,s=i.height;return i.x=e(i.x,n,!0),i.y=e(i.y,n,!0),i.width=Math.max(e(o+r,n,!1)-i.x,0===r?0:1),i.height=Math.max(e(a+s,n,!1)-i.y,0===s?0:1),t},S.subPixelOptimize=function(t,e,i){var n=y(2*t);return(n+y(e))%2===0?n/2:(n+(i?1:-1))/2},S.setHoverStyle=function(t,e,i){t.__hoverSilentOnTouch=i&&i.hoverSilentOnTouch,"group"===t.type?t.traverse(function(t){"group"!==t.type&&h(t,e)}):h(t,e),t.on("mouseover",c).on("mouseout",d),t.on("emphasis",f).on("normal",p)},S.setText=function(t,e,i){var n=e.getShallow("position")||"inside",o=e.getShallow("offset"),a=n.indexOf("inside")>=0?"white":i,r=e.getModel("textStyle");m.extend(t,{textDistance:e.getShallow("distance")||5,textFont:r.getFont(),textPosition:n,textOffset:o,textFill:r.getTextColor()||a})},S.updateProps=function(t,e,i,n,o){g(!0,t,e,i,n,o)},S.initProps=function(t,e,i,n,o){g(!1,t,e,i,n,o)},S.getTransform=function(t,e){for(var i=b.identity([]);t&&t!==e;)b.mul(i,t.getLocalTransform(),i),t=t.parent;return i},S.applyTransform=function(t,e,i){return i&&(e=b.invert([],e)),w.applyTransform([],t,e)},S.transformDirection=function(t,e,i){var n=0===e[4]||0===e[5]||0===e[0]?1:Math.abs(2*e[4]/e[0]),o=0===e[4]||0===e[5]||0===e[2]?1:Math.abs(2*e[4]/e[2]),a=["left"===t?-n:"right"===t?n:0,"top"===t?-o:"bottom"===t?o:0];return a=S.applyTransform(a,e,i),Math.abs(a[0])>Math.abs(a[1])?a[0]>0?"right":"left":a[1]>0?"bottom":"top"},S.groupTransition=function(t,e,i,n){function o(t){var e={};return t.traverse(function(t){!t.isGroup&&t.anid&&(e[t.anid]=t)}),e}function a(t){var e={position:w.clone(t.position),rotation:t.rotation};return t.shape&&(e.shape=m.extend({},t.shape)),e}if(t&&e){var r=o(t);e.traverse(function(t){if(!t.isGroup&&t.anid){var e=r[t.anid];if(e){var n=a(t);t.attr(a(e)),S.updateProps(t,n,i,t.dataIndex)}}})}},t.exports=S},function(t,e){function i(t){return t.replace(/^\s+/,"").replace(/\s+$/,"")}var n={},o=1e-4;n.linearMap=function(t,e,i,n){var o=e[1]-e[0],a=i[1]-i[0];if(0===o)return 0===a?i[0]:(i[0]+i[1])/2;if(n)if(o>0){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])/o*a+i[0]},n.parsePercent=function(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?i(t).match(/%$/)?parseFloat(t)/100*e:parseFloat(t):null==t?NaN:+t},n.round=function(t,e,i){return null==e&&(e=10),e=Math.min(Math.max(0,e),20),t=(+t).toFixed(e),i?t:+t},n.asc=function(t){return t.sort(function(t,e){return t-e}),t},n.getPrecision=function(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},n.getPrecisionSafe=function(t){var e=t.toString(),i=e.indexOf(".");return i<0?0:e.length-1-i},n.getPixelPrecision=function(t,e){var i=Math.log,n=Math.LN10,o=Math.floor(i(t[1]-t[0])/n),a=Math.round(i(Math.abs(e[1]-e[0]))/n),r=Math.min(Math.max(-o+a,0),20);return isFinite(r)?r:20},n.MAX_SAFE_INTEGER=9007199254740991,n.remRadian=function(t){var e=2*Math.PI;return(t%e+e)%e},n.isRadianAroundZero=function(t){return t>-o&&t<o};var a=/^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d\d)(?::(\d\d)(?:[.,](\d+))?)?)?(?:Z|([\+\-]\d\d):?\d\d)?)?)?)?)?$/,r=(new Date).getTimezoneOffset();n.parseDate=function(t){if(t instanceof Date)return t;if("string"==typeof t){var e=a.exec(t);return e?new Date((+e[1]),+(e[2]||1)-1,+e[3]||1,+e[4]||0,+(e[5]||0)-60*(e[8]||0)-r,+e[6]||0,+e[7]||0):new Date(NaN)}return null==t?new Date(NaN):new Date(Math.round(t))},n.quantity=function(t){return Math.pow(10,Math.floor(Math.log(t)/Math.LN10))},n.nice=function(t,e){var i,o=n.quantity(t),a=t/o;return i=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,i*o},n.reformIntervals=function(t){function e(t,i,n){return t.interval[n]<i.interval[n]||t.interval[n]===i.interval[n]&&(t.close[n]-i.close[n]===(n?-1:1)||!n&&e(t,i,1))}t.sort(function(t,i){return e(t,i,0)?-1:1});for(var i=-(1/0),n=1,o=0;o<t.length;){for(var a=t[o].interval,r=t[o].close,s=0;s<2;s++)a[s]<=i&&(a[s]=i,r[s]=s?1:1-n),i=a[s],n=r[s];a[0]===a[1]&&r[0]*r[1]!==1?t.splice(o,1):o++}return t},n.isNumeric=function(t){return t-parseFloat(t)>=0},t.exports=n},function(t,e,i){function n(t,e){return t&&t.hasOwnProperty(e)}var o=i(7),a=i(4),r=i(10),s=i(1),l=s.each,u=s.isObject,h={};h.normalizeToArray=function(t){return t instanceof Array?t:null==t?[]:[t]},h.defaultEmphasis=function(t,e){if(t){var i=t.emphasis=t.emphasis||{},n=t.normal=t.normal||{};l(e,function(t){var e=s.retrieve(i[t],n[t]);null!=e&&(i[t]=e)})}},h.LABEL_OPTIONS=["position","offset","show","textStyle","distance","formatter"],h.getDataItemValue=function(t){return t&&(null==t.value?t:t.value)},h.isDataItemOption=function(t){return u(t)&&!(t instanceof Array)},h.converDataValue=function(t,e){var i=e&&e.type;return"ordinal"===i?t:("time"===i&&"number"!=typeof t&&null!=t&&"-"!==t&&(t=+a.parseDate(t)),null==t||""===t?NaN:+t)},h.createDataFormatModel=function(t,e){var i=new r;return s.mixin(i,h.dataFormatMixin),i.seriesIndex=e.seriesIndex,i.name=e.name||"",i.mainType=e.mainType,i.subType=e.subType,i.getData=function(){return t},i},h.dataFormatMixin={getDataParams:function(t,e){var i=this.getData(e),n=this.getRawValue(t,e),o=i.getRawIndex(t),a=i.getName(t,!0),r=i.getRawDataItem(t);return{componentType:this.mainType,componentSubType:this.subType,seriesType:"series"===this.mainType?this.subType:null,seriesIndex:this.seriesIndex,seriesId:this.id,seriesName:this.name,name:a,dataIndex:o,data:r,dataType:e,value:n,color:i.getItemVisual(t,"color"),$vars:["seriesName","name","value"]}},getFormattedLabel:function(t,e,i,n){e=e||"normal";var a=this.getData(i),r=a.getItemModel(t),s=this.getDataParams(t,i);null!=n&&s.value instanceof Array&&(s.value=s.value[n]);var l=r.get(["label",e,"formatter"]);return"function"==typeof l?(s.status=e,l(s)):"string"==typeof l?o.formatTpl(l,s):void 0},getRawValue:function(t,e){var i=this.getData(e),n=i.getRawDataItem(t);if(null!=n)return!u(n)||n instanceof Array?n:n.value},formatTooltip:s.noop},h.mappingToExists=function(t,e){e=(e||[]).slice();var i=s.map(t||[],function(t,e){return{exist:t}});return l(e,function(t,n){if(u(t)){for(var o=0;o<i.length;o++)if(!i[o].option&&null!=t.id&&i[o].exist.id===t.id+"")return i[o].option=t,void(e[n]=null);for(var o=0;o<i.length;o++){var a=i[o].exist;if(!(i[o].option||null!=a.id&&null!=t.id||null==t.name||h.isIdInner(t)||h.isIdInner(a)||a.name!==t.name+""))return i[o].option=t,void(e[n]=null)}}}),l(e,function(t,e){if(u(t)){for(var n=0;n<i.length;n++){var o=i[n].exist;if(!i[n].option&&!h.isIdInner(o)&&null==t.id){i[n].option=t;break}}n>=i.length&&i.push({option:t})}}),i},h.makeIdAndName=function(t){var e={};l(t,function(t,i){var n=t.exist;n&&(e[n.id]=t)}),l(t,function(t,i){var n=t.option;s.assert(!n||null==n.id||!e[n.id]||e[n.id]===t,"id duplicates: "+(n&&n.id)),n&&null!=n.id&&(e[n.id]=t),!t.keyInfo&&(t.keyInfo={})}),l(t,function(t,i){var n=t.exist,o=t.option,a=t.keyInfo;if(u(o)){if(a.name=null!=o.name?o.name+"":n?n.name:"\0-",n)a.id=n.id;else if(null!=o.id)a.id=o.id+"";else{var r=0;do a.id="\0"+a.name+"\0"+r++;while(e[a.id])}e[a.id]=t}})},h.isIdInner=function(t){return u(t)&&t.id&&0===(t.id+"").indexOf("\0_ec_\0")},h.compressBatches=function(t,e){function i(t,e,i){for(var n=0,o=t.length;n<o;n++)for(var a=t[n].seriesId,r=h.normalizeToArray(t[n].dataIndex),s=i&&i[a],l=0,u=r.length;l<u;l++){var c=r[l];s&&s[c]?s[c]=null:(e[a]||(e[a]={}))[c]=1}}function n(t,e){var i=[];for(var o in t)if(t.hasOwnProperty(o)&&null!=t[o])if(e)i.push(+o);else{var a=n(t[o],!0);a.length&&i.push({seriesId:o,dataIndex:a})}return i}var o={},a={};return i(t||[],o),i(e||[],a,o),[n(o),n(a)]},h.queryDataIndex=function(t,e){return null!=e.dataIndexInside?e.dataIndexInside:null!=e.dataIndex?s.isArray(e.dataIndex)?s.map(e.dataIndex,function(e){return t.indexOfRawIndex(e)}):t.indexOfRawIndex(e.dataIndex):null!=e.name?s.isArray(e.name)?s.map(e.name,function(e){return t.indexOfName(e)}):t.indexOfName(e.name):void 0},h.makeGetter=function(){var t=0;return function(){var e="\0__ec_prop_getter_"+t++;return function(t){return t[e]||(t[e]={})}}}(),h.parseFinder=function(t,e,i){if(s.isString(e)){var o={};o[e+"Index"]=0,e=o}var a=i&&i.defaultMainType;!a||n(e,a+"Index")||n(e,a+"Id")||n(e,a+"Name")||(e[a+"Index"]=0);var r={};return l(e,function(n,o){var n=e[o];if("dataIndex"===o||"dataIndexInside"===o)return void(r[o]=n);var a=o.match(/^(\w+)(Index|Id|Name)$/)||[],l=a[1],u=(a[2]||"").toLowerCase();if(!(!l||!u||null==n||"index"===u&&"none"===n||i&&i.includeMainTypes&&s.indexOf(i.includeMainTypes,l)<0)){var h={mainType:l};"index"===u&&"all"===n||(h[u]=n);var c=t.queryComponents(h);r[l+"Models"]=c,r[l+"Model"]=c[0]}}),r},t.exports=h},function(t,e){var i="undefined"==typeof Float32Array?Array:Float32Array,n={create:function(t,e){var n=new i(2);return null==t&&(t=0),null==e&&(e=0),n[0]=t,n[1]=e,n},copy:function(t,e){return t[0]=e[0],t[1]=e[1],t},clone:function(t){var e=new i(2);return e[0]=t[0],e[1]=t[1],e},set:function(t,e,i){return t[0]=e,t[1]=i,t},add:function(t,e,i){return t[0]=e[0]+i[0],t[1]=e[1]+i[1],t},scaleAndAdd:function(t,e,i,n){return t[0]=e[0]+i[0]*n,t[1]=e[1]+i[1]*n,t},sub:function(t,e,i){return t[0]=e[0]-i[0],t[1]=e[1]-i[1],t},len:function(t){return Math.sqrt(this.lenSquare(t))},lenSquare:function(t){return t[0]*t[0]+t[1]*t[1]},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:function(t,e,i){return t[0]=e[0]*i,t[1]=e[1]*i,t},normalize:function(t,e){var i=n.len(e);return 0===i?(t[0]=0,t[1]=0):(t[0]=e[0]/i,t[1]=e[1]/i),t},distance:function(t,e){return Math.sqrt((t[0]-e[0])*(t[0]-e[0])+(t[1]-e[1])*(t[1]-e[1]))},distanceSquare:function(t,e){return(t[0]-e[0])*(t[0]-e[0])+(t[1]-e[1])*(t[1]-e[1])},negate:function(t,e){return t[0]=-e[0],t[1]=-e[1],t},lerp:function(t,e,i,n){return t[0]=e[0]+n*(i[0]-e[0]),t[1]=e[1]+n*(i[1]-e[1]),t},applyTransform:function(t,e,i){var n=e[0],o=e[1];return t[0]=i[0]*n+i[2]*o+i[4],t[1]=i[1]*n+i[3]*o+i[5],t},min:function(t,e,i){return t[0]=Math.min(e[0],i[0]),t[1]=Math.min(e[1],i[1]),t},max:function(t,e,i){return t[0]=Math.max(e[0],i[0]),t[1]=Math.max(e[1],i[1]),t}};n.length=n.len,n.lengthSquare=n.lenSquare,n.dist=n.distance,n.distSquare=n.distanceSquare,t.exports=n},function(t,e,i){var n=i(1),o=i(4),a=i(16),r={};r.addCommas=function(t){return isNaN(t)?"-":(t=(t+"").split("."),t[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,"$1,")+(t.length>1?"."+t[1]:""))},r.toCamelCase=function(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},r.normalizeCssArray=function(t){var e=t.length;return"number"==typeof t?[t,t,t,t]:2===e?[t[0],t[1],t[0],t[1]]:3===e?[t[0],t[1],t[2],t[1]]:t};var s=r.encodeHTML=function(t){return String(t).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")},l=["a","b","c","d","e","f","g"],u=function(t,e){return"{"+t+(null==e?"":e)+"}"};r.formatTpl=function(t,e,i){n.isArray(e)||(e=[e]);var o=e.length;if(!o)return"";for(var a=e[0].$vars||[],r=0;r<a.length;r++){var h=l[r],c=u(h,0);t=t.replace(u(h),i?s(c):c)}for(var d=0;d<o;d++)for(var f=0;f<a.length;f++){var c=e[d][a[f]];t=t.replace(u(l[f],d),i?s(c):c)}return t},r.formatTplSimple=function(t,e,i){return n.each(e,function(e,n){t=t.replace("{"+n+"}",i?s(e):e)}),t};var h=function(t){return t<10?"0"+t:t};r.formatTime=function(t,e,i){"week"!==t&&"month"!==t&&"quarter"!==t&&"half-year"!==t&&"year"!==t||(t="MM-dd\nyyyy");var n=o.parseDate(e),a=i?"":"UTC",r=n["get"+a+"FullYear"](),s=n["get"+a+"Month"]()+1,l=n["get"+a+"Date"](),u=n["get"+a+"Hours"](),c=n["get"+a+"Minutes"](),d=n["get"+a+"Seconds"]();return t=t.replace("MM",h(s)).toLowerCase().replace("yyyy",r).replace("yy",r%100).replace("dd",h(l)).replace("d",l).replace("hh",h(u)).replace("h",u).replace("mm",h(c)).replace("m",c).replace("ss",h(d)).replace("s",d)},r.capitalFirst=function(t){return t?t.charAt(0).toUpperCase()+t.substr(1):t},r.truncateText=a.truncateText,t.exports=r},function(t,e,i){function n(t){o.call(this,t),this.path=new r}var o=i(40),a=i(1),r=i(30),s=i(163),l=i(71),u=l.prototype.getCanvasPattern,h=Math.abs;n.prototype={constructor:n,type:"path",__dirtyPath:!0,strokeContainThreshold:5,brush:function(t,e){var i=this.style,n=this.path,o=i.hasStroke(),a=i.hasFill(),r=i.fill,s=i.stroke,l=a&&!!r.colorStops,h=o&&!!s.colorStops,c=a&&!!r.image,d=o&&!!s.image;if(i.bind(t,this,e),this.setTransform(t),this.__dirty){var f=this.getBoundingRect();l&&(this._fillGradient=i.getGradient(t,r,f)),h&&(this._strokeGradient=i.getGradient(t,s,f))}l?t.fillStyle=this._fillGradient:c&&(t.fillStyle=u.call(r,t)),h?t.strokeStyle=this._strokeGradient:d&&(t.strokeStyle=u.call(s,t));var p=i.lineDash,g=i.lineDashOffset,m=!!t.setLineDash,v=this.getGlobalScale();n.setScale(v[0],v[1]),this.__dirtyPath||p&&!m&&o?(n=this.path.beginPath(t),p&&!m&&(n.setLineDash(p),n.setLineDashOffset(g)),this.buildPath(n,this.shape,!1),this.__dirtyPath=!1):(t.beginPath(),this.path.rebuildPath(t)),a&&n.fill(t),p&&m&&(t.setLineDash(p),t.lineDashOffset=g),o&&n.stroke(t),p&&m&&t.setLineDash([]),this.restoreTransform(t),null!=i.text&&this.drawRectText(t,this.getBoundingRect())},buildPath:function(t,e,i){},getBoundingRect:function(){var t=this._rect,e=this.style,i=!t;if(i){var n=this.path;this.__dirtyPath&&(n.beginPath(),this.buildPath(n,this.shape,!1)),t=n.getBoundingRect()}if(this._rect=t,e.hasStroke()){var o=this._rectWithStroke||(this._rectWithStroke=t.clone());if(this.__dirty||i){o.copy(t);var a=e.lineWidth,r=e.strokeNoScale?this.getLineScale():1;e.hasFill()||(a=Math.max(a,this.strokeContainThreshold||4)),r>1e-10&&(o.width+=a/r,o.height+=a/r,o.x-=a/r/2,o.y-=a/r/2)}return o}return t},contain:function(t,e){var i=this.transformCoordToLocal(t,e),n=this.getBoundingRect(),o=this.style;if(t=i[0],e=i[1],n.contain(t,e)){var a=this.path.data;if(o.hasStroke()){var r=o.lineWidth,l=o.strokeNoScale?this.getLineScale():1;if(l>1e-10&&(o.hasFill()||(r=Math.max(r,this.strokeContainThreshold)),s.containStroke(a,r/l,t,e)))return!0}if(o.hasFill())return s.contain(a,t,e)}return!1},dirty:function(t){null==t&&(t=!0),t&&(this.__dirtyPath=t,this._rect=null),this.__dirty=!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):o.prototype.attrKV.call(this,t,e)},setShape:function(t,e){var i=this.shape;if(i){if(a.isObject(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&&h(t[0]-1)>1e-10&&h(t[3]-1)>1e-10?Math.sqrt(h(t[0]*t[3]-t[2]*t[1])):1}},n.extend=function(t){var e=function(e){n.call(this,e),t.style&&this.style.extendFrom(t.style,!1);var i=t.shape;if(i){this.shape=this.shape||{};var o=this.shape;for(var a in i)!o.hasOwnProperty(a)&&i.hasOwnProperty(a)&&(o[a]=i[a])}t.init&&t.init.call(this,e)};a.inherits(e,n);for(var i in t)"style"!==i&&"shape"!==i&&(e.prototype[i]=t[i]);return e},a.inherits(n,o),t.exports=n},function(t,e){function i(t){var e={},i={},n=t.match(/Firefox\/([\d.]+)/),o=t.match(/MSIE\s([\d.]+)/)||t.match(/Trident\/.+?rv:(([\d.]+))/),a=t.match(/Edge\/([\d.]+)/),r=/micromessenger/i.test(t);return n&&(i.firefox=!0,i.version=n[1]),o&&(i.ie=!0,i.version=o[1]),a&&(i.edge=!0,i.version=a[1]),r&&(i.weChat=!0),{browser:i,os:e,node:!1,canvasSupported:!!document.createElement("canvas").getContext,touchEventsSupported:"ontouchstart"in window&&!i.ie&&!i.edge,pointerEventsSupported:"onpointerdown"in window&&(i.edge||i.ie&&i.version>=11)}}var n={};n="undefined"==typeof navigator?{browser:{},os:{},node:!0,canvasSupported:!0}:i(navigator.userAgent),t.exports=n},function(t,e,i){function n(t,e,i){this.parentModel=e,this.ecModel=i,this.option=t}function o(t,e,i){for(var n=0;n<e.length&&(!e[n]||(t=t&&"object"==typeof t?t[e[n]]:null,null!=t));n++);return null==t&&i&&(t=i.get(e)),t}function a(t,e){var i=s.get(t,"getParent");return i?i.call(t,e):t.parentModel}var r=i(1),s=i(15),l=i(9);n.prototype={constructor:n,init:null,mergeOption:function(t){r.merge(this.option,t,!0)},get:function(t,e){return null==t?this.option:o(this.option,this.parsePath(t),!e&&a(this,t))},getShallow:function(t,e){var i=this.option,n=null==i?i:i[t],o=!e&&a(this,t);return null==n&&o&&(n=o.getShallow(t)),n},getModel:function(t,e){var i,r=null==t?this.option:o(this.option,t=this.parsePath(t));return e=e||(i=a(this,t))&&i.getModel(t),new n(r,e,this.ecModel)},isEmpty:function(){return null==this.option},restoreData:function(){},clone:function(){var t=this.constructor;return new t(r.clone(this.option))},setReadOnly:function(t){s.setReadOnly(this,t)},parsePath:function(t){return"string"==typeof t&&(t=t.split(".")),t},customizeGetParent:function(t){s.set(this,"getParent",t)},isAnimationEnabled:function(){if(!l.node){if(null!=this.option.animation)return!!this.option.animation;if(this.parentModel)return this.parentModel.isAnimationEnabled()}}},s.enableClassExtend(n);var u=r.mixin;u(n,i(145)),u(n,i(142)),u(n,i(146)),u(n,i(144)),t.exports=n},function(t,e,i){"use strict";function n(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}var o=i(6),a=i(19),r=o.applyTransform,s=Math.min,l=Math.max;n.prototype={constructor:n,union:function(t){var e=s(t.x,this.x),i=s(t.y,this.y);this.width=l(t.x+t.width,this.x+this.width)-e,this.height=l(t.y+t.height,this.y+this.height)-i,this.x=e,this.y=i},applyTransform:function(){var t=[],e=[],i=[],n=[];return function(o){if(o){t[0]=i[0]=this.x,t[1]=n[1]=this.y,e[0]=n[0]=this.x+this.width,e[1]=i[1]=this.y+this.height,r(t,t,o),r(e,e,o),r(i,i,o),r(n,n,o),this.x=s(t[0],e[0],i[0],n[0]),this.y=s(t[1],e[1],i[1],n[1]);var a=l(t[0],e[0],i[0],n[0]),u=l(t[1],e[1],i[1],n[1]);this.width=a-this.x,this.height=u-this.y}}}(),calculateTransform:function(t){var e=this,i=t.width/e.width,n=t.height/e.height,o=a.create();return a.translate(o,o,[-e.x,-e.y]),a.scale(o,o,[i,n]),a.translate(o,o,[t.x,t.y]),o},intersect:function(t){if(!t)return!1;t instanceof n||(t=n.create(t));var e=this,i=e.x,o=e.x+e.width,a=e.y,r=e.y+e.height,s=t.x,l=t.x+t.width,u=t.y,h=t.y+t.height;return!(o<s||l<i||r<u||h<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 n(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}}},n.create=function(t){return new n(t.x,t.y,t.width,t.height)},t.exports=n},function(t,e,i){"use strict";function n(t,e,i,n,o){var a=0,r=0;null==n&&(n=1/0),null==o&&(o=1/0);var s=0;e.eachChild(function(l,u){var h,c,d=l.position,f=l.getBoundingRect(),p=e.childAt(u+1),g=p&&p.getBoundingRect();if("horizontal"===t){var m=f.width+(g?-g.x+f.x:0);h=a+m,h>n||l.newline?(a=0,h=m,r+=s+i,s=f.height):s=Math.max(s,f.height)}else{var v=f.height+(g?-g.y+f.y:0);c=r+v,c>o||l.newline?(a+=s+i,r=0,c=v,s=f.width):s=Math.max(s,f.width)}l.newline||(d[0]=a,d[1]=r,"horizontal"===t?a=h+i:r=c+i)})}var o=i(1),a=i(11),r=i(4),s=i(7),l=r.parsePercent,u=o.each,h={},c=h.LOCATION_PARAMS=["left","right","top","bottom","width","height"],d=h.HV_NAMES=[["width","left","right"],["height","top","bottom"]];h.box=n,h.vbox=o.curry(n,"vertical"),h.hbox=o.curry(n,"horizontal"),h.getAvailableSize=function(t,e,i){var n=e.width,o=e.height,a=l(t.x,n),r=l(t.y,o),u=l(t.x2,n),h=l(t.y2,o);return(isNaN(a)||isNaN(parseFloat(t.x)))&&(a=0),(isNaN(u)||isNaN(parseFloat(t.x2)))&&(u=n),(isNaN(r)||isNaN(parseFloat(t.y)))&&(r=0),(isNaN(h)||isNaN(parseFloat(t.y2)))&&(h=o),
+i=s.normalizeCssArray(i||0),{width:Math.max(u-a-i[1]-i[3],0),height:Math.max(h-r-i[0]-i[2],0)}},h.getLayoutRect=function(t,e,i){i=s.normalizeCssArray(i||0);var n=e.width,o=e.height,r=l(t.left,n),u=l(t.top,o),h=l(t.right,n),c=l(t.bottom,o),d=l(t.width,n),f=l(t.height,o),p=i[2]+i[0],g=i[1]+i[3],m=t.aspect;switch(isNaN(d)&&(d=n-h-g-r),isNaN(f)&&(f=o-c-p-u),isNaN(d)&&isNaN(f)&&(m>n/o?d=.8*n:f=.8*o),null!=m&&(isNaN(d)&&(d=m*f),isNaN(f)&&(f=d/m)),isNaN(r)&&(r=n-h-d-g),isNaN(u)&&(u=o-c-f-p),t.left||t.right){case"center":r=n/2-d/2-i[3];break;case"right":r=n-d-g}switch(t.top||t.bottom){case"middle":case"center":u=o/2-f/2-i[0];break;case"bottom":u=o-f-p}r=r||0,u=u||0,isNaN(d)&&(d=n-r-(h||0)),isNaN(f)&&(f=o-u-(c||0));var v=new a(r+i[3],u+i[0],d,f);return v.margin=i,v},h.positionElement=function(t,e,i,n,r){var s=!r||!r.hv||r.hv[0],l=!r||!r.hv||r.hv[1],u=r&&r.boundingMode||"all";if(s||l){var c;if("raw"===u)c="group"===t.type?new a(0,0,+e.width||0,+e.height||0):t.getBoundingRect();else if(c=t.getBoundingRect(),t.needLocalTransform()){var d=t.getLocalTransform();c=c.clone(),c.applyTransform(d)}e=h.getLayoutRect(o.defaults({width:c.width,height:c.height},e),i,n);var f=t.position,p=s?e.x-c.x:0,g=l?e.y-c.y:0;t.attr("position","raw"===u?[p,g]:[f[0]+p,f[1]+g])}},h.sizeCalculable=function(t,e){return null!=t[d[e][0]]||null!=t[d[e][1]]&&null!=t[d[e][2]]},h.mergeLayoutParam=function(t,e,i){function n(i,n){var o={},s=0,h={},c=0,d=2;if(u(i,function(e){h[e]=t[e]}),u(i,function(t){a(e,t)&&(o[t]=h[t]=e[t]),r(o,t)&&s++,r(h,t)&&c++}),l[n])return r(e,i[2])&&(h[i[1]]=null),r(e,i[1])&&(h[i[2]]=null),h;if(c!==d&&s){if(s>=d)return o;for(var f=0;f<i.length;f++){var p=i[f];if(!a(o,p)&&a(t,p)){o[p]=t[p];break}}return o}return h}function a(t,e){return t.hasOwnProperty(e)}function r(t,e){return null!=t[e]&&"auto"!==t[e]}function s(t,e,i){u(t,function(t){e[t]=i[t]})}!o.isObject(i)&&(i={});var l=i.ignoreSize;!o.isArray(l)&&(l=[l,l]);var h=n(d[0],0),c=n(d[1],1);s(d[0],t,h),s(d[1],t,c)},h.getLayoutParams=function(t){return h.copyLayoutParams({},t)},h.copyLayoutParams=function(t,e){return e&&t&&u(c,function(i){e.hasOwnProperty(i)&&(t[i]=e[i])}),t},t.exports=h},function(t,e,i){function n(t){var e=[];return a.each(h.getClassesByMainType(t),function(t){r.apply(e,t.prototype.dependencies||[])}),a.map(e,function(t){return l.parseClassType(t).main})}var o=i(10),a=i(1),r=Array.prototype.push,s=i(49),l=i(15),u=i(12),h=o.extend({type:"component",id:"",name:"",mainType:"",subType:"",componentIndex:0,defaultOption:null,ecModel:null,dependentModels:[],uid:null,layoutMode:null,$constructor:function(t,e,i,n){o.call(this,t,e,i,n),this.uid=s.getUID("componentModel")},init:function(t,e,i,n){this.mergeDefaultAndTheme(t,i)},mergeDefaultAndTheme:function(t,e){var i=this.layoutMode,n=i?u.getLayoutParams(t):{},o=e.getTheme();a.merge(t,o.get(this.mainType)),a.merge(t,this.getDefaultOption()),i&&u.mergeLayoutParam(t,n,i)},mergeOption:function(t,e){a.merge(this.option,t,!0);var i=this.layoutMode;i&&u.mergeLayoutParam(this.option,t,i)},optionUpdated:function(t,e){},getDefaultOption:function(){if(!l.hasOwn(this,"__defaultOption")){for(var t=[],e=this.constructor;e;){var i=e.prototype.defaultOption;i&&t.push(i),e=e.superClass}for(var n={},o=t.length-1;o>=0;o--)n=a.merge(n,t[o],!0);l.set(this,"__defaultOption",n)}return l.get(this,"__defaultOption")},getReferringComponents:function(t){return this.ecModel.queryComponents({mainType:t,index:this.get(t+"Index",!0),id:this.get(t+"Id",!0)})}});l.enableClassManagement(h,{registerWhenExtend:!0}),s.enableSubTypeDefaulter(h),s.enableTopologicalTravel(h,n),a.mixin(h,i(143)),t.exports=h},function(t,e,i){(function(e){function n(t){return d.isArray(t)||(t=[t]),t}function o(t,e){var i=t.dimensions,n=new v(d.map(i,t.getDimensionInfo,t),t.hostModel);m(n,t);for(var o=n._storage={},a=t._storage,r=0;r<i.length;r++){var s=i[r],l=a[s];d.indexOf(e,s)>=0?o[s]=new l.constructor(a[s].length):o[s]=a[s]}return n}var a="undefined",r="undefined"==typeof window?e:window,s=typeof r.Float64Array===a?Array:r.Float64Array,l=typeof r.Int32Array===a?Array:r.Int32Array,u={"float":s,"int":l,ordinal:Array,number:Array,time:Array},h=i(10),c=i(48),d=i(1),f=i(5),p=d.isObject,g=["stackedOn","hasItemOption","_nameList","_idList","_rawData"],m=function(t,e){d.each(g.concat(e.__wrappedMethods||[]),function(i){e.hasOwnProperty(i)&&(t[i]=e[i])}),t.__wrappedMethods=e.__wrappedMethods},v=function(t,e){t=t||["x","y"];for(var i={},n=[],o=0;o<t.length;o++){var a,r={};"string"==typeof t[o]?(a=t[o],r={name:a,stackable:!1,type:"number"}):(r=t[o],a=r.name,r.type=r.type||"number"),n.push(a),i[a]=r}this.dimensions=n,this._dimensionInfos=i,this.hostModel=e,this.dataType,this.indices=[],this._storage={},this._nameList=[],this._idList=[],this._optionModels=[],this.stackedOn=null,this._visual={},this._layout={},this._itemVisuals=[],this._itemLayouts=[],this._graphicEls=[],this._rawData,this._extent},y=v.prototype;y.type="list",y.hasItemOption=!0,y.getDimension=function(t){return isNaN(t)||(t=this.dimensions[t]||t),t},y.getDimensionInfo=function(t){return d.clone(this._dimensionInfos[this.getDimension(t)])},y.initData=function(t,e,i){t=t||[],this._rawData=t;var n=this._storage={},o=this.indices=[],a=this.dimensions,r=t.length,s=this._dimensionInfos,l=[],h={};e=e||[];for(var c=0;c<a.length;c++){var d=s[a[c]],p=u[d.type];n[a[c]]=new p(r)}var g=this;i||(g.hasItemOption=!1),i=i||function(t,e,i,n){var o=f.getDataItemValue(t);return f.isDataItemOption(t)&&(g.hasItemOption=!0),f.converDataValue(o instanceof Array?o[n]:o,s[e])};for(var m=0;m<t.length;m++){for(var v=t[m],y=0;y<a.length;y++){var x=a[y],_=n[x];_[m]=i(v,x,m,y)}o.push(m)}for(var c=0;c<t.length;c++){e[c]||t[c]&&null!=t[c].name&&(e[c]=t[c].name);var b=e[c]||"",w=t[c]&&t[c].id;!w&&b&&(h[b]=h[b]||0,w=b,h[b]>0&&(w+="__ec__"+h[b]),h[b]++),w&&(l[c]=w)}this._nameList=e,this._idList=l},y.count=function(){return this.indices.length},y.get=function(t,e,i){var n=this._storage,o=this.indices[e];if(null==o)return NaN;var a=n[t]&&n[t][o];if(i){var r=this._dimensionInfos[t];if(r&&r.stackable)for(var s=this.stackedOn;s;){var l=s.get(t,e);(a>=0&&l>0||a<=0&&l<0)&&(a+=l),s=s.stackedOn}}return a},y.getValues=function(t,e,i){var n=[];d.isArray(t)||(i=e,e=t,t=this.dimensions);for(var o=0,a=t.length;o<a;o++)n.push(this.get(t[o],e,i));return n},y.hasValue=function(t){for(var e=this.dimensions,i=this._dimensionInfos,n=0,o=e.length;n<o;n++)if("ordinal"!==i[e[n]].type&&isNaN(this.get(e[n],t)))return!1;return!0},y.getDataExtent=function(t,e,i){t=this.getDimension(t);var n=this._storage[t],o=this.getDimensionInfo(t);e=o&&o.stackable&&e;var a,r=(this._extent||(this._extent={}))[t+!!e];if(r)return r;if(n){for(var s=1/0,l=-(1/0),u=0,h=this.count();u<h;u++)a=this.get(t,u,e),i&&!i(a,t,u)||(a<s&&(s=a),a>l&&(l=a));return this._extent[t+!!e]=[s,l]}return[1/0,-(1/0)]},y.getSum=function(t,e){var i=this._storage[t],n=0;if(i)for(var o=0,a=this.count();o<a;o++){var r=this.get(t,o,e);isNaN(r)||(n+=r)}return n},y.indexOf=function(t,e){var i=this._storage,n=i[t],o=this.indices;if(n)for(var a=0,r=o.length;a<r;a++){var s=o[a];if(n[s]===e)return a}return-1},y.indexOfName=function(t){for(var e=this.indices,i=this._nameList,n=0,o=e.length;n<o;n++){var a=e[n];if(i[a]===t)return n}return-1},y.indexOfRawIndex=function(t){var e=this.indices,i=e[t];if(null!=i&&i===t)return t;for(var n=0,o=e.length-1;n<=o;){var a=(n+o)/2|0;if(e[a]<t)n=a+1;else{if(!(e[a]>t))return a;o=a-1}}return-1},y.indexOfNearest=function(t,e,i,n){var o=this._storage,a=o[t],r=[];if(!a)return r;null==n&&(n=1/0);for(var s=Number.MAX_VALUE,l=-1,u=0,h=this.count();u<h;u++){var c=e-this.get(t,u,i),d=Math.abs(c);c<=n&&d<=s&&((d<s||c>=0&&l<0)&&(s=d,l=c,r.length=0),r.push(u))}return r},y.getRawIndex=function(t){var e=this.indices[t];return null==e?-1:e},y.getRawDataItem=function(t){return this._rawData[this.getRawIndex(t)]},y.getName=function(t){return this._nameList[this.indices[t]]||""},y.getId=function(t){return this._idList[this.indices[t]]||this.getRawIndex(t)+""},y.each=function(t,e,i,o){"function"==typeof t&&(o=i,i=e,e=t,t=[]),t=d.map(n(t),this.getDimension,this);var a=[],r=t.length,s=this.indices;o=o||this;for(var l=0;l<s.length;l++)switch(r){case 0:e.call(o,l);break;case 1:e.call(o,this.get(t[0],l,i),l);break;case 2:e.call(o,this.get(t[0],l,i),this.get(t[1],l,i),l);break;default:for(var u=0;u<r;u++)a[u]=this.get(t[u],l,i);a[u]=l,e.apply(o,a)}},y.filterSelf=function(t,e,i,o){"function"==typeof t&&(o=i,i=e,e=t,t=[]),t=d.map(n(t),this.getDimension,this);var a=[],r=[],s=t.length,l=this.indices;o=o||this;for(var u=0;u<l.length;u++){var h;if(1===s)h=e.call(o,this.get(t[0],u,i),u);else{for(var c=0;c<s;c++)r[c]=this.get(t[c],u,i);r[c]=u,h=e.apply(o,r)}h&&a.push(l[u])}return this.indices=a,this._extent={},this},y.mapArray=function(t,e,i,n){"function"==typeof t&&(n=i,i=e,e=t,t=[]);var o=[];return this.each(t,function(){o.push(e&&e.apply(this,arguments))},i,n),o},y.map=function(t,e,i,a){t=d.map(n(t),this.getDimension,this);var r=o(this,t),s=r.indices=this.indices,l=r._storage,u=[];return this.each(t,function(){var i=arguments[arguments.length-1],n=e&&e.apply(this,arguments);if(null!=n){"number"==typeof n&&(u[0]=n,n=u);for(var o=0;o<n.length;o++){var a=t[o],r=l[a],h=s[i];r&&(r[h]=n[o])}}},i,a),r},y.downSample=function(t,e,i,n){for(var a=o(this,[t]),r=this._storage,s=a._storage,l=this.indices,u=a.indices=[],h=[],c=[],d=Math.floor(1/e),f=s[t],p=this.count(),g=0;g<r[t].length;g++)s[t][g]=r[t][g];for(var g=0;g<p;g+=d){d>p-g&&(d=p-g,h.length=d);for(var m=0;m<d;m++){var v=l[g+m];h[m]=f[v],c[m]=v}var y=i(h),v=c[n(h,y)||0];f[v]=y,u.push(v)}return a},y.getItemModel=function(t){var e=this.hostModel;return t=this.indices[t],new h(this._rawData[t],e,e&&e.ecModel)},y.diff=function(t){var e,i=this._idList,n=t&&t._idList,o="e\0\0";return new c(t?t.indices:[],this.indices,function(t){return null!=(e=n[t])?e:o+t},function(t){return null!=(e=i[t])?e:o+t})},y.getVisual=function(t){var e=this._visual;return e&&e[t]},y.setVisual=function(t,e){if(p(t))for(var i in t)t.hasOwnProperty(i)&&this.setVisual(i,t[i]);else this._visual=this._visual||{},this._visual[t]=e},y.setLayout=function(t,e){if(p(t))for(var i in t)t.hasOwnProperty(i)&&this.setLayout(i,t[i]);else this._layout[t]=e},y.getLayout=function(t){return this._layout[t]},y.getItemLayout=function(t){return this._itemLayouts[t]},y.setItemLayout=function(t,e,i){this._itemLayouts[t]=i?d.extend(this._itemLayouts[t]||{},e):e},y.clearItemLayouts=function(){this._itemLayouts.length=0},y.getItemVisual=function(t,e,i){var n=this._itemVisuals[t],o=n&&n[e];return null!=o||i?o:this.getVisual(e)},y.setItemVisual=function(t,e,i){var n=this._itemVisuals[t]||{};if(this._itemVisuals[t]=n,p(e))for(var o in e)e.hasOwnProperty(o)&&(n[o]=e[o]);else n[e]=i},y.clearAllVisual=function(){this._visual={},this._itemVisuals=[]};var x=function(t){t.seriesIndex=this.seriesIndex,t.dataIndex=this.dataIndex,t.dataType=this.dataType};y.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(x,e)),this._graphicEls[t]=e},y.getItemGraphicEl=function(t){return this._graphicEls[t]},y.eachItemGraphicEl=function(t,e){d.each(this._graphicEls,function(i,n){i&&t&&t.call(e,i,n)})},y.cloneShallow=function(){var t=d.map(this.dimensions,this.getDimensionInfo,this),e=new v(t,this.hostModel);return e._storage=this._storage,m(e,this),e.indices=this.indices.slice(),this._extent&&(e._extent=d.extend({},this._extent)),e},y.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(d.slice(arguments)))})},y.TRANSFERABLE_METHODS=["cloneShallow","downSample","map"],y.CHANGABLE_METHODS=["filterSelf"],t.exports=v}).call(e,function(){return this}())},function(t,e,i){function n(t){r.assert(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(t),'componentType "'+t+'" illegal')}function o(t,e){var i=r.slice(arguments,2);return this.superClass.prototype[e].apply(t,i)}function a(t,e,i){return this.superClass.prototype[e].apply(t,i)}var r=i(1),s={},l=".",u="___EC__COMPONENT__CONTAINER___",h="\0ec_\0";s.set=function(t,e,i){return t[h+e]=i},s.get=function(t,e){return t[h+e]},s.hasOwn=function(t,e){return t.hasOwnProperty(h+e)};var c=s.parseClassType=function(t){var e={main:"",sub:""};return t&&(t=t.split(l),e.main=t[0]||"",e.sub=t[1]||""),e};s.enableClassExtend=function(t,e){t.$constructor=t,t.extend=function(t){var e=this,i=function(){t.$constructor?t.$constructor.apply(this,arguments):e.apply(this,arguments)};return r.extend(i.prototype,t),i.extend=this.extend,i.superCall=o,i.superApply=a,r.inherits(i,this),i.superClass=e,i}},s.enableClassManagement=function(t,e){function i(t){var e=o[t.main];return e&&e[u]||(e=o[t.main]={},e[u]=!0),e}e=e||{};var o={};if(t.registerClass=function(t,e){if(e)if(n(e),e=c(e),e.sub){if(e.sub!==u){var a=i(e);a[e.sub]=t}}else o[e.main]=t;return t},t.getClass=function(t,e,i){var n=o[t];if(n&&n[u]&&(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},t.getClassesByMainType=function(t){t=c(t);var e=[],i=o[t.main];return i&&i[u]?r.each(i,function(t,i){i!==u&&e.push(t)}):e.push(i),e},t.hasClass=function(t){return t=c(t),!!o[t.main]},t.getAllClassMainTypes=function(){var t=[];return r.each(o,function(e,i){t.push(i)}),t},t.hasSubTypes=function(t){t=c(t);var e=o[t.main];return e&&e[u]},t.parseClassType=c,e.registerWhenExtend){var a=t.extend;a&&(t.extend=function(e){var i=a.call(this,e);return t.registerClass(i,e.type)})}return t},s.setReadOnly=function(t,e){},t.exports=s},function(t,e,i){function n(t,e){var i=t+":"+e;if(l[i])return l[i];for(var n=(t+"").split("\n"),o=0,a=0,r=n.length;a<r;a++)o=Math.max(p.measureText(n[a],e).width,o);return u>h&&(u=0,l={}),u++,l[i]=o,o}function o(t,e,i,o){var a=((t||"")+"").split("\n").length,r=n(t,e),s=n("国",e),l=a*s,u=new d(0,0,r,l);switch(u.lineHeight=s,o){case"bottom":case"alphabetic":u.y-=s;break;case"middle":u.y-=s/2}switch(i){case"end":case"right":u.x-=u.width;break;case"center":u.x-=u.width/2}return u}function a(t,e,i,n){var o=e.x,a=e.y,r=e.height,s=e.width,l=i.height,u=r/2-l/2,h="left";switch(t){case"left":o-=n,a+=u,h="right";break;case"right":o+=n+s,a+=u,h="left";break;case"top":o+=s/2,a-=n+l,h="center";break;case"bottom":o+=s/2,a+=r+n,h="center";break;case"inside":o+=s/2,a+=u,h="center";break;case"insideLeft":o+=n,a+=u,h="left";break;case"insideRight":o+=s-n,a+=u,h="right";break;case"insideTop":o+=s/2,a+=n,h="center";break;case"insideBottom":o+=s/2,a+=r-l-n,h="center";break;case"insideTopLeft":o+=n,a+=n,h="left";break;case"insideTopRight":o+=s-n,a+=n,h="right";break;case"insideBottomLeft":o+=n,a+=r-l-n;break;case"insideBottomRight":o+=s-n,a+=r-l-n,h="right"}return{x:o,y:a,textAlign:h,textBaseline:"top"}}function r(t,e,i,o,a){if(!e)return"";a=a||{},o=f(o,"...");for(var r=f(a.maxIterations,2),l=f(a.minChar,0),u=n("国",i),h=n("a",i),c=f(a.placeholder,""),d=e=Math.max(0,e-1),p=0;p<l&&d>=h;p++)d-=h;var g=n(o);g>d&&(o="",g=0),d=e-g;for(var m=(t+"").split("\n"),p=0,v=m.length;p<v;p++){var y=m[p],x=n(y,i);if(!(x<=e)){for(var _=0;;_++){if(x<=d||_>=r){y+=o;break}var b=0===_?s(y,d,h,u):x>0?Math.floor(y.length*d/x):0;y=y.substr(0,b),x=n(y,i)}""===y&&(y=c),m[p]=y}}return m.join("\n")}function s(t,e,i,n){for(var o=0,a=0,r=t.length;a<r&&o<e;a++){var s=t.charCodeAt(a);o+=0<=s&&s<=127?i:n}return a}var l={},u=0,h=5e3,c=i(1),d=i(11),f=c.retrieve,p={getWidth:n,getBoundingRect:o,adjustTextPositionOnRect:a,truncateText:r,measureText:function(t,e){var i=c.getContext();return i.font=e||"12px sans-serif",i.measureText(t)}};t.exports=p},function(t,e,i){var n=i(151),o=i(43);i(152),i(150);var a=i(34),r=i(4),s=i(1),l=i(16),u={};u.getScaleExtent=function(t,e){var i,n,o,a=t.type,l=e.getMin(),u=e.getMax(),h=null!=l,c=null!=u,d=t.getExtent();return"ordinal"===a?i=(e.get("data")||[]).length:(n=e.get("boundaryGap"),s.isArray(n)||(n=[n||0,n||0]),n[0]=r.parsePercent(n[0],1),n[1]=r.parsePercent(n[1],1),o=d[1]-d[0]),null==l&&(l="ordinal"===a?i?0:NaN:d[0]-n[0]*o),null==u&&(u="ordinal"===a?i?i-1:NaN:d[1]+n[1]*o),"dataMin"===l&&(l=d[0]),"dataMax"===u&&(u=d[1]),(null==l||!isFinite(l))&&(l=NaN),(null==u||!isFinite(u))&&(u=NaN),t.setBlank(s.eqNaN(l)||s.eqNaN(u)),e.getNeedCrossZero()&&(l>0&&u>0&&!h&&(l=0),l<0&&u<0&&!c&&(u=0)),[l,u]},u.niceScaleExtent=function(t,e){var i=u.getScaleExtent(t,e),n=null!=e.getMin(),o=null!=e.getMax(),a=e.get("splitNumber");"log"===t.type&&(t.base=e.get("logBase")),t.setExtent(i[0],i[1]),t.niceExtent(a,n,o);var r=e.get("minInterval");if(isFinite(r)&&!n&&!o&&"interval"===t.type){var s=t.getInterval(),l=Math.max(Math.abs(s),r)/s;i=t.getExtent();var h=(i[1]+i[0])/2;t.setExtent(l*(i[0]-h)+h,l*(i[1]-h)+h),t.niceExtent(a)}var s=e.get("interval");null!=s&&t.setInterval&&t.setInterval(s)},u.createScaleByModel=function(t,e){if(e=e||t.get("type"))switch(e){case"category":return new n(t.getCategories(),[1/0,-(1/0)]);case"value":return new o;default:return(a.getClass(e)||o).create(t)}},u.ifAxisCrossZero=function(t){var e=t.scale.getExtent(),i=e[0],n=e[1];return!(i>0&&n>0||i<0&&n<0)},u.getAxisLabelInterval=function(t,e,i,n){var o,a=0,r=0,s=1;e.length>40&&(s=Math.floor(e.length/40));for(var u=0;u<t.length;u+=s){var h=t[u],c=l.getBoundingRect(e[u],i,"center","top");c[n?"x":"y"]+=h,c[n?"width":"height"]*=1.3,o?o.intersect(c)?(r++,a=Math.max(a,r)):(o.union(c),r=0):o=c.clone()}return 0===a&&s>1?s:(a+1)*s-1},u.getFormattedLabels=function(t,e){var i=t.scale,n=i.getTicksLabels(),o=i.getTicks();return"string"==typeof e?(e=function(t){return function(e){return t.replace("{value}",null!=e?e:"")}}(e),s.map(n,e)):"function"==typeof e?s.map(o,function(i,n){return e(u.getAxisRawValue(t,i),n)},this):n},u.getAxisRawValue=function(t,e){return"category"===t.type?t.scale.getLabel(e):e},t.exports=u},function(t,e,i){"use strict";var n=i(1),o=i(7),a=i(15),r=i(5),s=i(13),l=i(62),u=i(9),h=i(12),c=a.set,d=a.get,f=o.encodeHTML,p=o.addCommas,g=s.extend({type:"series.__base__",seriesIndex:0,coordinateSystem:null,defaultOption:null,legendDataProvider:null,visualColorAccessPath:"itemStyle.normal.color",layoutMode:null,init:function(t,e,i,n){this.seriesIndex=this.componentIndex,this.mergeDefaultAndTheme(t,i);var o=this.getInitialData(t,i);c(this,"dataBeforeProcessed",o),this.restoreData()},mergeDefaultAndTheme:function(t,e){var i=this.layoutMode,o=i?h.getLayoutParams(t):{};n.merge(t,e.getTheme().get(this.subType)),n.merge(t,this.getDefaultOption()),r.defaultEmphasis(t.label,r.LABEL_OPTIONS),this.fillDataTextStyle(t.data),i&&h.mergeLayoutParam(t,o,i)},mergeOption:function(t,e){t=n.merge(this.option,t,!0),this.fillDataTextStyle(t.data);var i=this.layoutMode;i&&h.mergeLayoutParam(this.option,t,i);var o=this.getInitialData(t,e);o&&(c(this,"data",o),c(this,"dataBeforeProcessed",o.cloneShallow()))},fillDataTextStyle:function(t){if(t)for(var e=0;e<t.length;e++)t[e]&&t[e].label&&r.defaultEmphasis(t[e].label,r.LABEL_OPTIONS)},getInitialData:function(){},getData:function(t){var e=d(this,"data");return null==t?e:e.getLinkedData(t)},setData:function(t){c(this,"data",t)},getRawData:function(){return d(this,"dataBeforeProcessed")},coordDimToDataDim:function(t){return[t]},dataDimToCoordDim:function(t){return t},getBaseAxis:function(){var t=this.coordinateSystem;return t&&t.getBaseAxis&&t.getBaseAxis()},formatTooltip:function(t,e,i){function a(t){var i=[];return n.each(t,function(t,n){var a,s=r.getDimensionInfo(n),l=s&&s.type;a="ordinal"===l?t+"":"time"===l?e?"":o.formatTime("yyyy/MM/dd hh:mm:ss",t):p(t),a&&i.push(a)}),i.join(", ")}var r=d(this,"data"),s=this.getRawValue(t),l=f(n.isArray(s)?a(s):p(s)),u=r.getName(t),h=r.getItemVisual(t,"color");n.isObject(h)&&h.colorStops&&(h=(h.colorStops[0]||{}).color),h=h||"transparent";var c='<span style="display:inline-block;margin-right:5px;border-radius:10px;width:9px;height:9px;background-color:'+f(h)+'"></span>',g=this.name;return"\0-"===g&&(g=""),e?c+f(this.name)+" : "+l:(g&&f(g)+"<br />")+c+(u?f(u)+" : "+l:l)},isAnimationEnabled:function(){if(u.node)return!1;var t=this.getShallow("animation");return t&&this.getData().count()>this.getShallow("animationThreshold")&&(t=!1),t},restoreData:function(){c(this,"data",d(this,"dataBeforeProcessed").cloneShallow())},getColorFromPalette:function(t,e){var i=this.ecModel,n=l.getColorFromPalette.call(this,t,e);return n||(n=i.getColorFromPalette(t,e)),n},getAxisTooltipData:null,getTooltipPosition:null});n.mixin(g,r.dataFormatMixin),n.mixin(g,l),t.exports=g},function(t,e){var i="undefined"==typeof Float32Array?Array:Float32Array,n={create:function(){var t=new i(6);return n.identity(t),t},identity:function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t},copy:function(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},mul:function(t,e,i){var n=e[0]*i[0]+e[2]*i[1],o=e[1]*i[0]+e[3]*i[1],a=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]=o,t[2]=a,t[3]=r,t[4]=s,t[5]=l,t},translate:function(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},rotate:function(t,e,i){var n=e[0],o=e[2],a=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]=o*h+s*u,t[3]=-o*u+h*s,t[4]=h*a+u*l,t[5]=h*l-u*a,t},scale:function(t,e,i){var n=i[0],o=i[1];return t[0]=e[0]*n,t[1]=e[1]*o,t[2]=e[2]*n,t[3]=e[3]*o,t[4]=e[4]*n,t[5]=e[5]*o,t},invert:function(t,e){var i=e[0],n=e[2],o=e[4],a=e[1],r=e[3],s=e[5],l=i*r-a*n;return l?(l=1/l,t[0]=r*l,t[1]=-a*l,t[2]=-n*l,t[3]=i*l,t[4]=(n*s-r*o)*l,t[5]=(a*o-i*s)*l,t):null}};t.exports=n},function(t,e,i){"use strict";function n(t){return t.getBoundingClientRect?t.getBoundingClientRect():{left:0,top:0}}function o(t,e,i,n){return i=i||{},n||!h.canvasSupported?a(t,e,i):h.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):a(t,e,i),i}function a(t,e,i){var o=n(t);i.zrX=e.clientX-o.left,i.zrY=e.clientY-o.top}function r(t,e,i){if(e=e||window.event,null!=e.zrX)return e;var n=e.type,a=n&&n.indexOf("touch")>=0;if(a){var r="touchend"!=n?e.targetTouches[0]:e.changedTouches[0];r&&o(t,r,e,i)}else o(t,e,e,i),e.zrDelta=e.wheelDelta?e.wheelDelta/120:-(e.detail||0)/3;return e}function s(t,e,i){c?t.addEventListener(e,i):t.attachEvent("on"+e,i)}function l(t,e,i){c?t.removeEventListener(e,i):t.detachEvent("on"+e,i)}var u=i(23),h=i(9),c="undefined"!=typeof window&&!!window.addEventListener,d=c?function(t){t.preventDefault(),t.stopPropagation(),t.cancelBubble=!0}:function(t){t.returnValue=!1,t.cancelBubble=!0};t.exports={clientToLocal:o,normalizeEvent:r,addEventListener:s,removeEventListener:l,stop:d,Dispatcher:u}},function(t,e,i){"use strict";function n(t){return t>-w&&t<w}function o(t){return t>w||t<-w}function a(t,e,i,n,o){var a=1-o;return a*a*(a*t+3*o*e)+o*o*(o*n+3*a*i)}function r(t,e,i,n,o){var a=1-o;return 3*(((e-t)*a+2*(i-e)*o)*a+(n-i)*o*o)}function s(t,e,i,o,a,r){var s=o+3*(e-i)-t,l=3*(i-2*e+t),u=3*(e-t),h=t-a,c=l*l-3*s*u,d=l*u-9*s*h,f=u*u-3*l*h,p=0;if(n(c)&&n(d))if(n(l))r[0]=0;else{var g=-u/l;g>=0&&g<=1&&(r[p++]=g)}else{var m=d*d-4*c*f;if(n(m)){var v=d/c,g=-l/s+v,y=-v/2;g>=0&&g<=1&&(r[p++]=g),y>=0&&y<=1&&(r[p++]=y)}else if(m>0){var x=b(m),w=c*l+1.5*s*(-d+x),S=c*l+1.5*s*(-d-x);w=w<0?-_(-w,I):_(w,I),S=S<0?-_(-S,I):_(S,I);var g=(-l-(w+S))/(3*s);g>=0&&g<=1&&(r[p++]=g)}else{var T=(2*c*l-3*s*d)/(2*b(c*c*c)),A=Math.acos(T)/3,L=b(c),C=Math.cos(A),g=(-l-2*L*C)/(3*s),y=(-l+L*(C+M*Math.sin(A)))/(3*s),D=(-l+L*(C-M*Math.sin(A)))/(3*s);g>=0&&g<=1&&(r[p++]=g),y>=0&&y<=1&&(r[p++]=y),D>=0&&D<=1&&(r[p++]=D)}}return p}function l(t,e,i,a,r){var s=6*i-12*e+6*t,l=9*e+3*a-3*t-9*i,u=3*e-3*t,h=0;if(n(l)){if(o(s)){var c=-u/s;c>=0&&c<=1&&(r[h++]=c)}}else{var d=s*s-4*l*u;if(n(d))r[0]=-s/(2*l);else if(d>0){var f=b(d),c=(-s+f)/(2*l),p=(-s-f)/(2*l);c>=0&&c<=1&&(r[h++]=c),p>=0&&p<=1&&(r[h++]=p)}}return h}function u(t,e,i,n,o,a){var r=(e-t)*o+t,s=(i-e)*o+e,l=(n-i)*o+i,u=(s-r)*o+r,h=(l-s)*o+s,c=(h-u)*o+u;a[0]=t,a[1]=r,a[2]=u,a[3]=c,a[4]=c,a[5]=h,a[6]=l,a[7]=n}function h(t,e,i,n,o,r,s,l,u,h,c){var d,f,p,g,m,v=.005,y=1/0;T[0]=u,T[1]=h;for(var _=0;_<1;_+=.05)A[0]=a(t,i,o,s,_),A[1]=a(e,n,r,l,_),g=x(T,A),g<y&&(d=_,y=g);y=1/0;for(var w=0;w<32&&!(v<S);w++)f=d-v,p=d+v,A[0]=a(t,i,o,s,f),A[1]=a(e,n,r,l,f),g=x(A,T),f>=0&&g<y?(d=f,y=g):(L[0]=a(t,i,o,s,p),L[1]=a(e,n,r,l,p),m=x(L,T),p<=1&&m<y?(d=p,y=m):v*=.5);return c&&(c[0]=a(t,i,o,s,d),c[1]=a(e,n,r,l,d)),b(y)}function c(t,e,i,n){var o=1-n;return o*(o*t+2*n*e)+n*n*i}function d(t,e,i,n){return 2*((1-n)*(e-t)+n*(i-e))}function f(t,e,i,a,r){var s=t-2*e+i,l=2*(e-t),u=t-a,h=0;if(n(s)){if(o(l)){var c=-u/l;c>=0&&c<=1&&(r[h++]=c)}}else{var d=l*l-4*s*u;if(n(d)){var c=-l/(2*s);c>=0&&c<=1&&(r[h++]=c)}else if(d>0){var f=b(d),c=(-l+f)/(2*s),p=(-l-f)/(2*s);c>=0&&c<=1&&(r[h++]=c),p>=0&&p<=1&&(r[h++]=p)}}return h}function p(t,e,i){var n=t+i-2*e;return 0===n?.5:(t-e)/n}function g(t,e,i,n,o){var a=(e-t)*n+t,r=(i-e)*n+e,s=(r-a)*n+a;o[0]=t,o[1]=a,o[2]=s,o[3]=s,o[4]=r,o[5]=i}function m(t,e,i,n,o,a,r,s,l){var u,h=.005,d=1/0;T[0]=r,T[1]=s;for(var f=0;f<1;f+=.05){A[0]=c(t,i,o,f),A[1]=c(e,n,a,f);var p=x(T,A);p<d&&(u=f,d=p)}d=1/0;for(var g=0;g<32&&!(h<S);g++){var m=u-h,v=u+h;A[0]=c(t,i,o,m),A[1]=c(e,n,a,m);var p=x(A,T);if(m>=0&&p<d)u=m,d=p;else{L[0]=c(t,i,o,v),L[1]=c(e,n,a,v);var y=x(L,T);v<=1&&y<d?(u=v,d=y):h*=.5}}return l&&(l[0]=c(t,i,o,u),l[1]=c(e,n,a,u)),b(d)}var v=i(6),y=v.create,x=v.distSquare,_=Math.pow,b=Math.sqrt,w=1e-8,S=1e-4,M=b(3),I=1/3,T=y(),A=y(),L=y();t.exports={cubicAt:a,cubicDerivativeAt:r,cubicRootAt:s,cubicExtrema:l,cubicSubdivide:u,cubicProjectPoint:h,quadraticAt:c,quadraticDerivativeAt:d,quadraticRootAt:f,quadraticExtremum:p,quadraticSubdivide:g,quadraticProjectPoint:m}},function(t,e,i){function n(t){return t=Math.round(t),t<0?0:t>255?255:t}function o(t){return t=Math.round(t),t<0?0:t>360?360:t}function a(t){return t<0?0:t>1?1:t}function r(t){return n(t.length&&"%"===t.charAt(t.length-1)?parseFloat(t)/100*255:parseInt(t,10))}function s(t){return a(t.length&&"%"===t.charAt(t.length-1)?parseFloat(t)/100:parseFloat(t))}function l(t,e,i){return i<0?i+=1:i>1&&(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 u(t,e,i){return t+(e-t)*i}function h(t,e,i,n,o){return t[0]=e,t[1]=i,t[2]=n,t[3]=o,t}function c(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}function d(t,e){T&&c(T,e),T=I.put(t,T||e.slice())}function f(t,e){if(t){e=e||[];var i=I.get(t);if(i)return c(e,i);t+="";var n=t.replace(/ /g,"").toLowerCase();if(n in M)return c(e,M[n]),d(t,e),e;if("#"!==n.charAt(0)){var o=n.indexOf("("),a=n.indexOf(")");if(o!==-1&&a+1===n.length){var l=n.substr(0,o),u=n.substr(o+1,a-(o+1)).split(","),f=1;switch(l){case"rgba":if(4!==u.length)return void h(e,0,0,0,1);f=s(u.pop());case"rgb":return 3!==u.length?void h(e,0,0,0,1):(h(e,r(u[0]),r(u[1]),r(u[2]),f),d(t,e),e);case"hsla":return 4!==u.length?void h(e,0,0,0,1):(u[3]=s(u[3]),p(u,e),d(t,e),e);case"hsl":return 3!==u.length?void h(e,0,0,0,1):(p(u,e),d(t,e),e);default:return}}h(e,0,0,0,1)}else{if(4===n.length){var g=parseInt(n.substr(1),16);return g>=0&&g<=4095?(h(e,(3840&g)>>4|(3840&g)>>8,240&g|(240&g)>>4,15&g|(15&g)<<4,1),d(t,e),e):void h(e,0,0,0,1)}if(7===n.length){var g=parseInt(n.substr(1),16);return g>=0&&g<=16777215?(h(e,(16711680&g)>>16,(65280&g)>>8,255&g,1),d(t,e),e):void h(e,0,0,0,1)}}}}function p(t,e){var i=(parseFloat(t[0])%360+360)%360/360,o=s(t[1]),a=s(t[2]),r=a<=.5?a*(o+1):a+o-a*o,u=2*a-r;return e=e||[],h(e,n(255*l(u,r,i+1/3)),n(255*l(u,r,i)),n(255*l(u,r,i-1/3)),1),4===t.length&&(e[3]=t[3]),e}function g(t){if(t){var e,i,n=t[0]/255,o=t[1]/255,a=t[2]/255,r=Math.min(n,o,a),s=Math.max(n,o,a),l=s-r,u=(s+r)/2;if(0===l)e=0,i=0;else{i=u<.5?l/(s+r):l/(2-s-r);var h=((s-n)/6+l/2)/l,c=((s-o)/6+l/2)/l,d=((s-a)/6+l/2)/l;n===s?e=d-c:o===s?e=1/3+h-d:a===s&&(e=2/3+c-h),e<0&&(e+=1),e>1&&(e-=1)}var f=[360*e,i,u];return null!=t[3]&&f.push(t[3]),f}}function m(t,e){var i=f(t);if(i){for(var n=0;n<3;n++)e<0?i[n]=i[n]*(1-e)|0:i[n]=(255-i[n])*e+i[n]|0;return w(i,4===i.length?"rgba":"rgb")}}function v(t,e){var i=f(t);if(i)return((1<<24)+(i[0]<<16)+(i[1]<<8)+ +i[2]).toString(16).slice(1)}function y(t,e,i){if(i=i||[0,0,0,0],!e||!e.length||!(t>=0&&t<=1))return i;var o=t*(e.length-1),a=Math.floor(o),r=Math.ceil(o),s=e[a],l=e[r],h=o-a;return i[0]=n(u(s[0],l[0],h)),i[1]=n(u(s[1],l[1],h)),i[2]=n(u(s[2],l[2],h)),i[3]=n(u(s[3],l[3],h)),i}function x(t,e,i){if(e&&e.length&&t>=0&&t<=1){var o=t*(e.length-1),r=Math.floor(o),s=Math.ceil(o),l=f(e[r]),h=f(e[s]),c=o-r,d=w([n(u(l[0],h[0],c)),n(u(l[1],h[1],c)),n(u(l[2],h[2],c)),a(u(l[3],h[3],c))],"rgba");return i?{color:d,leftIndex:r,rightIndex:s,value:o}:d}}function _(t,e,i,n){if(t=f(t))return t=g(t),null!=e&&(t[0]=o(e)),null!=i&&(t[1]=s(i)),null!=n&&(t[2]=s(n)),w(p(t),"rgba")}function b(t,e){if(t=f(t),t&&null!=e)return t[3]=a(e),w(t,"rgba")}function w(t,e){if(t){var i=t[0]+","+t[1]+","+t[2];return"rgba"!==e&&"hsva"!==e&&"hsla"!==e||(i+=","+t[3]),e+"("+i+")"}}var S=i(69),M={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]},I=new S(20),T=null;t.exports={parse:f,lift:m,toHex:v,fastMapToColor:y,mapToColor:x,modifyHSL:_,modifyAlpha:b,stringify:w}},function(t,e){var i=Array.prototype.slice,n=function(){this._$handlers={}};n.prototype={constructor:n,one:function(t,e,i){var n=this._$handlers;if(!e||!t)return this;n[t]||(n[t]=[]);for(var o=0;o<n[t].length;o++)if(n[t][o].h===e)return this;return n[t].push({h:e,one:!0,ctx:i||this}),this},on:function(t,e,i){var n=this._$handlers;if(!e||!t)return this;n[t]||(n[t]=[]);for(var o=0;o<n[t].length;o++)if(n[t][o].h===e)return this;return n[t].push({h:e,one:!1,ctx:i||this}),this},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=[],o=0,a=i[t].length;o<a;o++)i[t][o].h!=e&&n.push(i[t][o]);i[t]=n}i[t]&&0===i[t].length&&delete i[t]}else delete i[t];return this},trigger:function(t){if(this._$handlers[t]){var e=arguments,n=e.length;n>3&&(e=i.call(e,1));for(var o=this._$handlers[t],a=o.length,r=0;r<a;){switch(n){case 1:o[r].h.call(o[r].ctx);break;case 2:o[r].h.call(o[r].ctx,e[1]);break;case 3:o[r].h.call(o[r].ctx,e[1],e[2]);break;default:o[r].h.apply(o[r].ctx,e)}o[r].one?(o.splice(r,1),a--):r++}}return this},triggerWithContext:function(t){if(this._$handlers[t]){var e=arguments,n=e.length;n>4&&(e=i.call(e,1,e.length-1));for(var o=e[e.length-1],a=this._$handlers[t],r=a.length,s=0;s<r;){switch(n){case 1:a[s].h.call(o);break;case 2:a[s].h.call(o,e[1]);break;case 3:a[s].h.call(o,e[1],e[2]);break;default:a[s].h.apply(o,e)}a[s].one?(a.splice(s,1),r--):s++}}return this}},t.exports=n},function(t,e,i){"use strict";var n=i(3),o=i(11),a=n.extendShape({type:"triangle",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var i=e.cx,n=e.cy,o=e.width/2,a=e.height/2;t.moveTo(i,n-a),t.lineTo(i+o,n+a),t.lineTo(i-o,n+a),t.closePath()}}),r=n.extendShape({type:"diamond",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var i=e.cx,n=e.cy,o=e.width/2,a=e.height/2;t.moveTo(i,n-a),t.lineTo(i+o,n),t.lineTo(i,n+a),t.lineTo(i-o,n),t.closePath()}}),s=n.extendShape({type:"pin",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var i=e.x,n=e.y,o=e.width/5*3,a=Math.max(o,e.height),r=o/2,s=r*r/(a-r),l=n-a+r+s,u=Math.asin(s/r),h=Math.cos(u)*r,c=Math.sin(u),d=Math.cos(u);t.arc(i,l,r,Math.PI-u,2*Math.PI+u);var f=.6*r,p=.7*r;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()}}),l=n.extendShape({type:"arrow",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var i=e.height,n=e.width,o=e.x,a=e.y,r=n/3*2;t.moveTo(o,a),t.lineTo(o+r,a+i),t.lineTo(o,a+i/4*3),t.lineTo(o-r,a+i),t.lineTo(o,a),t.closePath()}}),u={line:n.Line,rect:n.Rect,roundRect:n.Rect,square:n.Rect,circle:n.Circle,diamond:r,pin:s,arrow:l,triangle:a},h={line:function(t,e,i,n,o){o.x1=t,o.y1=e+n/2,o.x2=t+i,o.y2=e+n/2},rect:function(t,e,i,n,o){o.x=t,o.y=e,o.width=i,o.height=n},roundRect:function(t,e,i,n,o){o.x=t,o.y=e,o.width=i,o.height=n,o.r=Math.min(i,n)/4},square:function(t,e,i,n,o){var a=Math.min(i,n);o.x=t,o.y=e,o.width=a,o.height=a},circle:function(t,e,i,n,o){o.cx=t+i/2,o.cy=e+n/2,o.r=Math.min(i,n)/2},diamond:function(t,e,i,n,o){o.cx=t+i/2,o.cy=e+n/2,o.width=i,o.height=n},pin:function(t,e,i,n,o){o.x=t+i/2,o.y=e+n/2,o.width=i,o.height=n},arrow:function(t,e,i,n,o){o.x=t+i/2,o.y=e+n/2,o.width=i,o.height=n},triangle:function(t,e,i,n,o){o.cx=t+i/2,o.cy=e+n/2,o.width=i,o.height=n}},c={};for(var d in u)u.hasOwnProperty(d)&&(c[d]=new u[d]);var f=n.extendShape({type:"symbol",shape:{symbolType:"",x:0,y:0,width:0,height:0},beforeBrush:function(){var t=this.style,e=this.shape;"pin"===e.symbolType&&"inside"===t.textPosition&&(t.textPosition=["50%","40%"],t.textAlign="center",t.textVerticalAlign="middle")},buildPath:function(t,e,i){var n=e.symbolType,o=c[n];"none"!==e.symbolType&&(o||(n="rect",o=c[n]),h[n](e.x,e.y,e.width,e.height,o.shape),o.buildPath(t,o.shape,i))}}),p=function(t){if("image"!==this.type){var e=this.style,i=this.shape;i&&"line"===i.symbolType?e.stroke=t:this.__isEmptyBrush?(e.stroke=t,e.fill="#fff"):(e.fill&&(e.fill=t),e.stroke&&(e.stroke=t)),this.dirty(!1)}},g={createSymbol:function(t,e,i,a,r,s){var l=0===t.indexOf("empty");l&&(t=t.substr(5,1).toLowerCase()+t.substr(6));var u;return u=0===t.indexOf("image://")?new n.Image({style:{image:t.slice(8),x:e,y:i,width:a,height:r}}):0===t.indexOf("path://")?n.makePath(t.slice(7),{},new o(e,i,a,r)):new f({shape:{symbolType:t,x:e,y:i,width:a,height:r}}),u.__isEmptyBrush=l,u.setColor=p,u.setColor(s),u}};t.exports=g},function(t,e,i){function n(t,e,i){if(!e)return t;i=i||{};var n=i.dimCount;if(null==n){var s=o(e[0]);n=a.isArray(s)&&s.length||1}for(var l=i.defaultNames||[],u=i.extraPrefix||"extra",h=0;h<n;h++)if(!t[h]){var c=l[h]||u+(h-l.length);t[h]=r(e,h)?{type:"ordinal",name:c}:c}return t}function o(t){return a.isArray(t)?t:a.isObject(t)?t.value:t}var a=i(1),r=n.guessOrdinal=function(t,e){for(var i=0,n=t.length;i<n;i++){var r=o(t[i]);if(!a.isArray(r))return!1;var r=r[e];if(null!=r&&isFinite(r))return!1;if(a.isString(r)&&"-"!==r)return!0}return!1};t.exports=n},function(t,e,i){"use strict";function n(){this._coordinateSystems=[]}var o=i(1),a={};n.prototype={constructor:n,create:function(t,e){var i=[];o.each(a,function(n,o){var a=n.create(t,e);i=i.concat(a||[])}),this._coordinateSystems=i},update:function(t,e){o.each(this._coordinateSystems,function(i){i.update&&i.update(t,e)})},getCoordinateSystems:function(){return this._coordinateSystems.slice()}},n.register=function(t,e){a[t]=e},n.get=function(t){return a[t]},t.exports=n},function(t,e,i){"use strict";function n(t){for(var e=0;e<t.length&&null==t[e];)e++;return t[e]}function o(t){var e=n(t);return null!=e&&!c.isArray(p(e))}function a(t,e,i){t=t||[];var n=e.get("coordinateSystem"),a=m[n],r=f.get(n),s=a&&a(t,e,i),v=s&&s.dimensions;v||(v=r&&(r.getDimensionsInfo?r.getDimensionsInfo():r.dimensions.slice())||["x","y"],v=h(v,t,{defaultNames:v.concat(["value"])}));var y=s?s.categoryIndex:-1,x=new u(v,e),_=l(s,t),b={},w=y>=0&&o(t)?function(t,e,i,n){return d.isDataItemOption(t)&&(x.hasItemOption=!0),n===y?i:g(p(t),v[n])}:function(t,e,i,n){var o=p(t),a=g(o&&o[n],v[n]);d.isDataItemOption(t)&&(x.hasItemOption=!0);var r=s&&s.categoryAxesModels;return r&&r[e]&&"string"==typeof a&&(b[e]=b[e]||r[e].getCategories(),a=c.indexOf(b[e],a),a<0&&!isNaN(a)&&(a=+a)),a};return x.hasItemOption=!1,x.initData(t,_,w),x}function r(t){return"category"!==t&&"time"!==t}function s(t){return"category"===t?"ordinal":"time"===t?"time":"float"}function l(t,e){var i,n=[],o=t&&t.dimensions[t.categoryIndex];if(o&&(i=t.categoryAxesModels[o.name]),i){var a=i.getCategories();if(a){var r=e.length;if(c.isArray(e[0])&&e[0].length>1){n=[];for(var s=0;s<r;s++)n[s]=a[e[s][t.categoryIndex||0]]}else n=a.slice(0)}}return n}var u=i(14),h=i(25),c=i(1),d=i(5),f=i(26),p=d.getDataItemValue,g=d.converDataValue,m={cartesian2d:function(t,e,i){var n=c.map(["xAxis","yAxis"],function(t){return i.queryComponents({mainType:t,index:e.get(t+"Index"),id:e.get(t+"Id")})[0]}),o=n[0],a=n[1],l=o.get("type"),u=a.get("type"),d=[{name:"x",type:s(l),stackable:r(l)},{name:"y",type:s(u),stackable:r(u)}],f="category"===l,p="category"===u;h(d,t,{defaultNames:["x","y","z"]});var g={};return f&&(g.x=o),p&&(g.y=a),{dimensions:d,categoryIndex:f?0:p?1:-1,categoryAxesModels:g}},singleAxis:function(t,e,i){var n=i.queryComponents({mainType:"singleAxis",index:e.get("singleAxisIndex"),id:e.get("singleAxisId")})[0],o=n.get("type"),a="category"===o,l=[{name:"single",type:s(o),stackable:r(o)}];h(l,t);var u={};return a&&(u.single=n),{dimensions:l,categoryIndex:a?0:-1,categoryAxesModels:u}},polar:function(t,e,i){var n=i.queryComponents({mainType:"polar",index:e.get("polarIndex"),id:e.get("polarId")})[0],o=n.findAxisModel("angleAxis"),a=n.findAxisModel("radiusAxis"),l=a.get("type"),u=o.get("type"),c=[{name:"radius",type:s(l),stackable:r(l)},{name:"angle",type:s(u),stackable:r(u)}],d="category"===u,f="category"===l;h(c,t,{defaultNames:["radius","angle","value"]});var p={};return f&&(p.radius=a),d&&(p.angle=o),{dimensions:c,categoryIndex:d?1:f?0:-1,categoryAxesModels:p}},geo:function(t,e,i){return{dimensions:h([{name:"lng"},{name:"lat"}],t,{defaultNames:["lng","lat","value"]})}}};t.exports=a},function(t,e){"use strict";var i={};t.exports={register:function(t,e){i[t]=e},get:function(t){return i[t]}}},function(t,e,i){function n(){this.group=new r,this.uid=s.getUID("viewChart")}function o(t,e){if(t&&(t.trigger(e),"group"===t.type))for(var i=0;i<t.childCount();i++)o(t.childAt(i),e)}function a(t,e,i){var n=u.queryDataIndex(t,e);null!=n?h.each(u.normalizeToArray(n),function(e){o(t.getItemGraphicEl(e),i)}):t.eachItemGraphicEl(function(t){o(t,i)})}var r=i(36),s=i(49),l=i(15),u=i(5),h=i(1);n.prototype={type:"chart",init:function(t,e){},render:function(t,e,i,n){},highlight:function(t,e,i,n){a(t.getData(),n,"emphasis")},downplay:function(t,e,i,n){a(t.getData(),n,"normal")},remove:function(t,e){this.group.removeAll()},dispose:function(){}};var c=n.prototype;c.updateView=c.updateLayout=c.updateVisual=function(t,e,i,n){this.render(t,e,i,n)},l.enableClassExtend(n,["dispose"]),l.enableClassManagement(n,{registerWhenExtend:!0}),t.exports=n},function(t,e,i){"use strict";var n=i(21),o=i(6),a=i(84),r=i(11),s=i(35).devicePixelRatio,l={M:1,L:2,C:3,Q:4,A:5,Z:6,R:7},u=[],h=[],c=[],d=[],f=Math.min,p=Math.max,g=Math.cos,m=Math.sin,v=Math.sqrt,y=Math.abs,x="undefined"!=typeof Float32Array,_=function(){this.data=[],this._len=0,this._ctx=null,this._xi=0,this._yi=0,this._x0=0,this._y0=0,this._ux=0,this._uy=0};_.prototype={constructor:_,_lineDash:null,_dashOffset:0,_dashIdx:0,_dashSum:0,setScale:function(t,e){this._ux=y(1/s/t)||0,this._uy=y(1/s/e)||0},getContext:function(){return this._ctx},beginPath:function(t){return this._ctx=t,t&&t.beginPath(),t&&(this.dpr=t.dpr),this._len=0,this._lineDash&&(this._lineDash=null,this._dashOffset=0),this},moveTo:function(t,e){return this.addData(l.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=y(t-this._xi)>this._ux||y(e-this._yi)>this._uy||this._len<5;return this.addData(l.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,o,a){return this.addData(l.C,t,e,i,n,o,a),this._ctx&&(this._needsDash()?this._dashedBezierTo(t,e,i,n,o,a):this._ctx.bezierCurveTo(t,e,i,n,o,a)),this._xi=o,this._yi=a,this},quadraticCurveTo:function(t,e,i,n){return this.addData(l.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,o,a){return this.addData(l.A,t,e,i,i,n,o-n,0,a?0:1),this._ctx&&this._ctx.arc(t,e,i,n,o,a),this._xi=g(o)*i+t,this._yi=m(o)*i+t,this},arcTo:function(t,e,i,n,o){return this._ctx&&this._ctx.arcTo(t,e,i,n,o),this},rect:function(t,e,i,n){return this._ctx&&this._ctx.rect(t,e,i,n),this.addData(l.R,t,e,i,n),this},closePath:function(){this.addData(l.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,this._dashIdx=0;for(var e=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||!x||(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,o=0;o<e;o++)i+=t[o].len();x&&this.data instanceof Float32Array&&(this.data=new Float32Array(n+i));for(var o=0;o<e;o++)for(var a=t[o].data,r=0;r<a.length;r++)this.data[n++]=a[r];this._len=n},addData:function(t){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,o=this._dashSum,a=this._dashOffset,r=this._lineDash,s=this._ctx,l=this._xi,u=this._yi,h=t-l,c=e-u,d=v(h*h+c*c),g=l,m=u,y=r.length;for(h/=d,c/=d,a<0&&(a=o+a),a%=o,g-=a*h,m-=a*c;h>0&&g<=t||h<0&&g>=t||0==h&&(c>0&&m<=e||c<0&&m>=e);)n=this._dashIdx,i=r[n],g+=h*i,m+=c*i,this._dashIdx=(n+1)%y,h>0&&g<l||h<0&&g>l||c>0&&m<u||c<0&&m>u||s[n%2?"moveTo":"lineTo"](h>=0?f(g,t):p(g,t),c>=0?f(m,e):p(m,e));h=g-t,c=m-e,this._dashOffset=-v(h*h+c*c)},_dashedBezierTo:function(t,e,i,o,a,r){var s,l,u,h,c,d=this._dashSum,f=this._dashOffset,p=this._lineDash,g=this._ctx,m=this._xi,y=this._yi,x=n.cubicAt,_=0,b=this._dashIdx,w=p.length,S=0;for(f<0&&(f=d+f),f%=d,s=0;s<1;s+=.1)l=x(m,t,i,a,s+.1)-x(m,t,i,a,s),u=x(y,e,o,r,s+.1)-x(y,e,o,r,s),_+=v(l*l+u*u);for(;b<w&&(S+=p[b],!(S>f));b++);for(s=(S-f)/_;s<=1;)h=x(m,t,i,a,s),c=x(y,e,o,r,s),b%2?g.moveTo(h,c):g.lineTo(h,c),s+=p[b]/_,b=(b+1)%w;b%2!==0&&g.lineTo(a,r),l=a-h,u=r-c,this._dashOffset=-v(l*l+u*u)},_dashedQuadraticTo:function(t,e,i,n){var o=i,a=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,o,a)},toStatic:function(){var t=this.data;t instanceof Array&&(t.length=this._len,x&&(this.data=new Float32Array(t)))},getBoundingRect:function(){u[0]=u[1]=c[0]=c[1]=Number.MAX_VALUE,h[0]=h[1]=d[0]=d[1]=-Number.MAX_VALUE;for(var t=this.data,e=0,i=0,n=0,s=0,f=0;f<t.length;){var p=t[f++];switch(1==f&&(e=t[f],i=t[f+1],n=e,s=i),p){case l.M:n=t[f++],s=t[f++],e=n,i=s,c[0]=n,c[1]=s,d[0]=n,d[1]=s;break;case l.L:a.fromLine(e,i,t[f],t[f+1],c,d),e=t[f++],i=t[f++];break;case l.C:a.fromCubic(e,i,t[f++],t[f++],t[f++],t[f++],t[f],t[f+1],c,d),e=t[f++],i=t[f++];break;case l.Q:a.fromQuadratic(e,i,t[f++],t[f++],t[f],t[f+1],c,d),e=t[f++],i=t[f++];break;case l.A:var v=t[f++],y=t[f++],x=t[f++],_=t[f++],b=t[f++],w=t[f++]+b,S=(t[f++],1-t[f++]);1==f&&(n=g(b)*x+v,s=m(b)*_+y),a.fromArc(v,y,x,_,b,w,S,c,d),e=g(w)*x+v,i=m(w)*_+y;break;case l.R:n=e=t[f++],s=i=t[f++];var M=t[f++],I=t[f++];a.fromLine(n,s,n+M,s+I,c,d);break;case l.Z:e=n,i=s}o.min(u,u,c),o.max(h,h,d)}return 0===f&&(u[0]=u[1]=h[0]=h[1]=0),new r(u[0],u[1],h[0]-u[0],h[1]-u[1])},rebuildPath:function(t){for(var e,i,n,o,a,r,s=this.data,u=this._ux,h=this._uy,c=this._len,d=0;d<c;){var f=s[d++];switch(1==d&&(n=s[d],o=s[d+1],e=n,i=o),f){case l.M:e=n=s[d++],i=o=s[d++],t.moveTo(n,o);break;case l.L:a=s[d++],r=s[d++],(y(a-n)>u||y(r-o)>h||d===c-1)&&(t.lineTo(a,r),n=a,o=r);break;case l.C:t.bezierCurveTo(s[d++],s[d++],s[d++],s[d++],s[d++],s[d++]),n=s[d-2],o=s[d-1];break;case l.Q:t.quadraticCurveTo(s[d++],s[d++],s[d++],s[d++]),n=s[d-2],o=s[d-1];break;case l.A:var p=s[d++],v=s[d++],x=s[d++],_=s[d++],b=s[d++],w=s[d++],S=s[d++],M=s[d++],I=x>_?x:_,T=x>_?1:x/_,A=x>_?_/x:1,L=Math.abs(x-_)>.001,C=b+w;L?(t.translate(p,v),t.rotate(S),t.scale(T,A),t.arc(0,0,I,b,C,1-M),t.scale(1/T,1/A),t.rotate(-S),t.translate(-p,-v)):t.arc(p,v,I,b,C,1-M),1==d&&(e=g(b)*x+p,i=m(b)*_+v),n=g(C)*x+p,o=m(C)*_+v;break;case l.R:e=n=s[d],i=o=s[d+1],t.rect(s[d++],s[d++],s[d++],s[d++]);break;case l.Z:t.closePath(),n=e,o=i}}}},_.CMD=l,t.exports=_},function(t,e,i){var n=i(1);t.exports=function(t){for(var e=0;e<t.length;e++)t[e][1]||(t[e][1]=t[e][0]);return function(e,i){for(var o={},a=0;a<t.length;a++){var r=t[a][1];if(!(e&&n.indexOf(e,r)>=0||i&&n.indexOf(i,r)<0)){var s=this.getShallow(r);null!=s&&(o[t[a][0]]=s)}}return o}}},function(t,e,i){function n(t,e,i){var n=e.getComponent("tooltip"),a=e.getComponent("axisPointer"),s=a.get("link",!0)||[],u=[];c(i.getCoordinateSystems(),function(i){function h(n,h,c){var d=c.model.getModel("axisPointer",a),f=d.get("show");if(f&&("auto"!==f||n||l(d))){null==h&&(h=d.get("triggerTooltip")),d=n?o(c,v,a,e,n,h):d;var m=d.get("snap"),y=p(c.model),x=h||m||"category"===c.type,_=t.axesInfo[y]={key:y,axis:c,coordSys:i,axisPointerModel:d,triggerTooltip:h,involveSeries:x,snap:m,useHandle:l(d),seriesModels:[]};g[y]=_,t.seriesInvolved|=x;var b=r(s,c);if(null!=b){var w=u[b]||(u[b]={axesInfo:{}});w.axesInfo[y]=_,w.mapper=s[b].mapper,_.linkGroup=w}}}if(i.axisPointerEnabled){var f=p(i.model),g=t.coordSysAxesInfo[f]={};t.coordSysMap[f]=i;var m=i.model,v=m.getModel("tooltip",n);if(c(i.getAxes(),d(h,!1,null)),i.getTooltipAxes&&n&&v.get("show")){var y="axis"===v.get("trigger"),x="cross"===v.get("axisPointer.type"),_=i.getTooltipAxes(v.get("axisPointer.axis"));(y||x)&&c(_.baseAxes,d(h,!x||"cross",y)),x&&c(_.otherAxes,d(h,"cross",!1))}}})}function o(t,e,i,n,o,a){var r=e.getModel("axisPointer"),s={};c(["type","snap","lineStyle","shadowStyle","label","animation","animationDurationUpdate","animationEasingUpdate","z"],function(t){s[t]=u.clone(r.get(t))}),s.snap="category"!==t.type&&!!a,"cross"===r.get("type")&&(s.type="line");var l=s.label||(s.label={});if(null==l.show&&(l.show=!1),"cross"===o&&(l.show=!0,!a)){var d=s.lineStyle=r.get("crossStyle");d&&u.defaults(l.textStyle||(l.textStyle={}),d.textStyle)}return t.model.getModel("axisPointer",new h(s,i,n))}function a(t,e){e.eachSeries(function(e){var i=e.coordinateSystem,n=e.get("tooltip.trigger",!0);i&&"none"!==n&&n!==!1&&"item"!==n&&e.get("axisPointer.show",!0)!==!1&&c(t.coordSysAxesInfo[p(i.model)],function(t){var n=t.axis;i.getAxis(n.dim)===n&&(t.seriesModels.push(e),null==t.seriesDataCount&&(t.seriesDataCount=0),t.seriesDataCount+=e.getData().count())})},this)}function r(t,e){for(var i=e.model,n=e.dim,o=0;o<t.length;o++){var a=t[o]||{};if(s(a[n+"AxisId"],i.id)||s(a[n+"AxisIndex"],i.componentIndex)||s(a[n+"AxisName"],i.name))return o}}function s(t,e){return"all"===t||u.isArray(t)&&u.indexOf(t,e)>=0||t===e}function l(t){return!!t.get("handle.show")}var u=i(1),h=i(10),c=u.each,d=u.curry,f={};f.collect=function(t,e){var i={axesInfo:{},seriesInvolved:!1,coordSysAxesInfo:{},coordSysMap:{}};return n(i,t,e),i.seriesInvolved&&a(i,t),i},f.fixValue=function(t){var e=f.getAxisInfo(t);if(e){var i=e.axisPointerModel,n=e.axis.scale,o=i.option,a=i.get("status"),r=i.get("value");null!=r&&(r=n.parse(r));var s=l(i);null==a&&(o.status=s?"show":"hide");var u=n.getExtent().slice();u[0]>u[1]&&u.reverse(),(null==r||r>u[1])&&(r=u[1]),r<u[0]&&(r=u[0]),o.value=r,s&&(o.status=e.axis.scale.isBlank()?"hide":"show")}},f.getAxisInfo=function(t){var e=t.ecModel.getComponent("axisPointer").coordSysAxesInfo;return e&&e.axesInfo[p(t)]},f.getAxisPointerModel=function(t){var e=f.getAxisInfo(t);return e&&e.axisPointerModel};var p=f.makeKey=function(t){return t.type+"||"+t.id};t.exports=f},function(t,e,i){function n(t,e){var i=t[1]-t[0],n=e,o=i/n/2;t[0]+=o,t[1]-=o}var o=i(4),a=o.linearMap,r=i(1),s=[0,1],l=function(t,e,i){this.dim=t,this.scale=e,this._extent=i||[0,0],this.inverse=!1,this.onBand=!1};l.prototype={constructor:l,contain:function(t){var e=this._extent,i=Math.min(e[0],e[1]),n=Math.max(e[0],e[1]);return t>=i&&t<=n},containData:function(t){return this.contain(this.dataToCoord(t))},getExtent:function(){var t=this._extent.slice();return t},getPixelPrecision:function(t){return o.getPixelPrecision(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,o=this.scale;return t=o.normalize(t),this.onBand&&"ordinal"===o.type&&(i=i.slice(),n(i,o.count())),a(t,s,i,e)},coordToData:function(t,e){var i=this._extent,o=this.scale;this.onBand&&"ordinal"===o.type&&(i=i.slice(),n(i,o.count()));var r=a(t,i,s,e);return this.scale.scale(r)},pointToData:function(t,e){},getTicksCoords:function(t){if(this.onBand&&!t){for(var e=this.getBands(),i=[],n=0;n<e.length;n++)i.push(e[n][0]);return e[n-1]&&i.push(e[n-1][1]),i}return r.map(this.scale.getTicks(),this.dataToCoord,this)},getLabelsCoords:function(){return r.map(this.scale.getTicks(),this.dataToCoord,this)},getBands:function(){for(var t=this.getExtent(),e=[],i=this.scale.count(),n=t[0],o=t[1],a=o-n,r=0;r<i;r++)e.push([a*r/i+n,a*(r+1)/i+n]);return e},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}},t.exports=l},function(t,e,i){function n(){this._extent=[1/0,-(1/0)],this._interval=0,this.init&&this.init.apply(this,arguments)}var o=i(15),a=n.prototype;a.parse=function(t){return t},a.contain=function(t){var e=this._extent;return t>=e[0]&&t<=e[1]},a.normalize=function(t){var e=this._extent;return e[1]===e[0]?.5:(t-e[0])/(e[1]-e[0])},a.scale=function(t){var e=this._extent;return t*(e[1]-e[0])+e[0]},a.unionExtent=function(t){var e=this._extent;t[0]<e[0]&&(e[0]=t[0]),t[1]>e[1]&&(e[1]=t[1])},a.unionExtentFromData=function(t,e){this.unionExtent(t.getDataExtent(e,!0))},a.getExtent=function(){return this._extent.slice()},a.setExtent=function(t,e){var i=this._extent;isNaN(t)||(i[0]=t),isNaN(e)||(i[1]=e)},a.getTicksLabels=function(){for(var t=[],e=this.getTicks(),i=0;i<e.length;i++)t.push(this.getLabel(e[i]));return t},a.isBlank=function(){return this._isBlank},a.setBlank=function(t){this._isBlank=t},o.enableClassExtend(n),o.enableClassManagement(n,{registerWhenExtend:!0}),t.exports=n},function(t,e){var i=1;"undefined"!=typeof window&&(i=Math.max(window.devicePixelRatio||1,1));var n={debugMode:0,devicePixelRatio:i};t.exports=n},function(t,e,i){var n=i(1),o=i(65),a=i(11),r=function(t){t=t||{},o.call(this,t);for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e]);this._children=[],this.__storage=null,this.__dirty=!0};r.prototype={constructor:r,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);n>=0&&(i.splice(n,0,t),this._doAdd(t))}return this},_doAdd:function(t){t.parent&&t.parent.remove(t),t.parent=this;var e=this.__storage,i=this.__zr;e&&e!==t.__storage&&(e.addToMap(t),t instanceof r&&t.addChildrenToStorage(e)),i&&i.refresh()},remove:function(t){var e=this.__zr,i=this.__storage,o=this._children,a=n.indexOf(o,t);return a<0?this:(o.splice(a,1),t.parent=null,i&&(i.delFromMap(t.id),t instanceof r&&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.delFromMap(t.id),t instanceof r&&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 o=i[n];t.call(e,o,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.addToMap(i),i instanceof r&&i.addChildrenToStorage(t)}},delChildrenFromStorage:function(t){for(var e=0;e<this._children.length;e++){var i=this._children[e];t.delFromMap(i.id),i instanceof r&&i.delChildrenFromStorage(t)}},dirty:function(){return this.__dirty=!0,this.__zr&&this.__zr.refresh(),this},getBoundingRect:function(t){for(var e=null,i=new a(0,0,0,0),n=t||this._children,o=[],r=0;r<n.length;r++){var s=n[r];if(!s.ignore&&!s.invisible){var l=s.getBoundingRect(),u=s.getLocalTransform(o);u?(i.copy(l),i.applyTransform(u),e=e||i.clone(),e.union(i)):(e=e||l.clone(),e.union(l))}}return e||i}},n.inherits(r,o),t.exports=r},function(t,e,i){function n(t){var e={componentType:t.mainType};return e[t.mainType+"Index"]=t.componentIndex,e}function o(t,e,i,n){var o,a,r=c(i-t.rotation),s=n[0]>n[1],l="start"===e&&!s||"start"!==e&&s;return d(r-m/2)?(a=l?"bottom":"top",o="center"):d(r-1.5*m)?(a=l?"top":"bottom",o="center"):(a="middle",o=r<1.5*m&&r>m/2?l?"left":"right":l?"right":"left"),{rotation:r,textAlign:o,textVerticalAlign:a}}function a(t){var e=t.get("tooltip");return t.get("silent")||!(t.get("triggerEvent")||e&&e.show)}var r=i(1),s=i(7),l=i(3),u=i(10),h=i(4),c=h.remRadian,d=h.isRadianAroundZero,f=i(6),p=f.applyTransform,g=r.retrieve,m=Math.PI,v=function(t,e){this.opt=e,this.axisModel=t,r.defaults(e,{labelOffset:0,nameDirection:1,tickDirection:1,labelDirection:1,silent:!0}),this.group=new l.Group;var i=new l.Group({position:e.position.slice(),rotation:e.rotation});i.updateTransform(),this._transform=i.transform,this._dumbGroup=i};v.prototype={constructor:v,hasBuilder:function(t){return!!y[t]},add:function(t){y[t].call(this)},getGroup:function(){return this.group}};var y={axisLine:function(){var t=this.opt,e=this.axisModel;if(e.get("axisLine.show")){var i=this.axisModel.axis.getExtent(),n=this._transform,o=[i[0],0],a=[i[1],0];n&&(p(o,o,n),p(a,a,n)),this.group.add(new l.Line(l.subPixelOptimizeLine({anid:"line",shape:{x1:o[0],y1:o[1],x2:a[0],y2:a[1]},style:r.extend({lineCap:"round"},e.getModel("axisLine.lineStyle").getLineStyle()),strokeContainThreshold:t.strokeContainThreshold||5,silent:!0,z2:1})))}},axisTick:function(){var t=this.axisModel,e=t.axis;if(t.get("axisTick.show")&&!e.scale.isBlank())for(var i=t.getModel("axisTick"),n=this.opt,o=i.getModel("lineStyle"),a=i.get("length"),s=b(i,n.labelInterval),u=e.getTicksCoords(i.get("alignWithLabel")),h=e.scale.getTicks(),c=[],d=[],f=this._transform,g=0;g<u.length;g++)if(!_(e,g,s)){var m=u[g];c[0]=m,c[1]=0,d[0]=m,d[1]=n.tickDirection*a,f&&(p(c,c,f),p(d,d,f)),this.group.add(new l.Line(l.subPixelOptimizeLine({anid:"tick_"+h[g],shape:{x1:c[0],y1:c[1],x2:d[0],y2:d[1]},style:r.defaults(o.getLineStyle(),{stroke:t.get("axisLine.lineStyle.color")}),z2:2,silent:!0})))}},axisLabel:function(){function t(t,e){var i=t&&t.getBoundingRect().clone(),n=e&&e.getBoundingRect().clone();if(i&&n)return i.applyTransform(t.getLocalTransform()),n.applyTransform(e.getLocalTransform()),i.intersect(n)}var e=this.opt,i=this.axisModel,o=i.axis,s=g(e.axisLabelShow,i.get("axisLabel.show"));if(s&&!o.scale.isBlank()){var h=i.getModel("axisLabel"),c=h.getModel("textStyle"),d=h.get("margin"),f=o.scale.getTicks(),p=i.getFormattedLabels(),v=(g(e.labelRotate,h.get("rotate"))||0)*m/180,y=x(e.rotation,v,e.labelDirection),b=i.get("data"),w=[],S=a(i),M=i.get("triggerEvent");if(r.each(f,function(t,a){if(!_(o,a,e.labelInterval)){var r=c;b&&b[t]&&b[t].textStyle&&(r=new u(b[t].textStyle,c,i.ecModel));var s=r.getTextColor()||i.get("axisLine.lineStyle.color"),h=o.dataToCoord(t),f=[h,e.labelOffset+e.labelDirection*d],g=o.scale.getLabel(t),m=new l.Text({anid:"label_"+t,style:{text:p[a],textAlign:r.get("align",!0)||y.textAlign,textVerticalAlign:r.get("baseline",!0)||y.textVerticalAlign,textFont:r.getFont(),fill:"function"==typeof s?s("category"===o.type?g:"value"===o.type?t+"":t,a):s},position:f,rotation:y.rotation,silent:S,z2:10});M&&(m.eventData=n(i),m.eventData.targetType="axisLabel",m.eventData.value=g),this._dumbGroup.add(m),m.updateTransform(),w.push(m),this.group.add(m),m.decomposeTransform()}},this),null!=i.getMin()){var I=w[0],T=w[1];t(I,T)&&(I.ignore=!0)}if(null!=i.getMax()){var A=w[w.length-1],L=w[w.length-2];t(L,A)&&(A.ignore=!0)}}},axisName:function(){var t=this.opt,e=this.axisModel,i=g(t.axisName,e.get("name"));if(i){var u,h=e.get("nameLocation"),c=t.nameDirection,d=e.getModel("nameTextStyle"),f=e.get("nameGap")||0,p=this.axisModel.axis.getExtent(),v=p[0]>p[1]?-1:1,y=["start"===h?p[0]-v*f:"end"===h?p[1]+v*f:(p[0]+p[1])/2,"middle"===h?t.labelOffset+c*f:0],_=e.get("nameRotate");null!=_&&(_=_*m/180);var b;"middle"===h?u=x(t.rotation,null!=_?_:t.rotation,c):(u=o(t,h,_||0,p),b=t.axisNameAvailableWidth,null!=b&&(b=Math.abs(b/Math.sin(u.rotation)),!isFinite(b)&&(b=null)));var w=d.getFont(),S=e.get("nameTruncate",!0)||{},M=S.ellipsis,I=g(S.maxWidth,b),T=null!=M&&null!=I?s.truncateText(i,I,w,M,{minChar:2,placeholder:S.placeholder}):i,A=e.get("tooltip",!0),L=e.mainType,C={componentType:L,name:i,$vars:["name"]};C[L+"Index"]=e.componentIndex;var D=new l.Text({anid:"name",__fullText:i,__truncatedText:T,style:{text:T,textFont:w,fill:d.getTextColor()||e.get("axisLine.lineStyle.color"),textAlign:u.textAlign,textVerticalAlign:u.textVerticalAlign},position:y,rotation:u.rotation,silent:a(e),z2:1,tooltip:A&&A.show?r.extend({content:i,formatter:function(){return i},formatterParams:C},A):null});e.get("triggerEvent")&&(D.eventData=n(e),D.eventData.targetType="axisName",D.eventData.name=i),this._dumbGroup.add(D),D.updateTransform(),this.group.add(D),D.decomposeTransform()}}},x=v.innerTextLayout=function(t,e,i){var n,o,a=c(e-t);return d(a)?(o=i>0?"top":"bottom",n="center"):d(a-m)?(o=i>0?"bottom":"top",n="center"):(o="middle",n=a>0&&a<m?i>0?"right":"left":i>0?"left":"right"),{rotation:a,textAlign:n,textVerticalAlign:o}},_=v.ifIgnoreOnTick=function(t,e,i){var n,o=t.scale;return"ordinal"===o.type&&("function"==typeof i?(n=o.getTicks()[e],!i(n,o.getLabel(n))):e%(i+1))},b=v.getInterval=function(t,e){var i=t.get("interval");return null!=i&&"auto"!=i||(i=e),i};t.exports=v},function(t,e,i){i(93),i(45)},function(t,e){var i={},n="\0__throttleOriginMethod",o="\0__throttleRate",a="\0__throttleType";i.throttle=function(t,e,i){function n(){u=(new Date).getTime(),h=null,t.apply(r,s||[])}var o,a,r,s,l=0,u=0,h=null;e=e||0;var c=function(){o=(new Date).getTime(),r=this,s=arguments,a=o-(i?l:u)-e,clearTimeout(h),i?h=setTimeout(n,e):a>=0?n():h=setTimeout(n,-a),l=o};return c.clear=function(){h&&(clearTimeout(h),h=null)},c},i.createOrUpdate=function(t,e,r,s){var l=t[e];if(l){var u=l[n]||l,h=l[a],c=l[o];if(c!==r||h!==s){if(null==r||!s)return t[e]=u;l=t[e]=i.throttle(u,r,"debounce"===s),l[n]=u,l[a]=s,l[o]=r}return l}},i.clear=function(t,e){var i=t[e];i&&i[n]&&(t[e]=i[n])},t.exports=i},function(t,e,i){function n(t){t=t||{},r.call(this,t);for(var e in t)t.hasOwnProperty(e)&&"style"!==e&&(this[e]=t[e]);this.style=new a(t.style),this._rect=null,this.__clipPaths=[]}var o=i(1),a=i(72),r=i(65),s=i(86);n.prototype={constructor:n,type:"displayable",__dirty:!0,invisible:!1,z:0,z2:0,zlevel:0,draggable:!1,dragging:!1,silent:!1,culling:!1,cursor:"pointer",rectHover:!1,progressive:-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),n=this.getBoundingRect();return n.contain(i[0],i[1])},dirty:function(){this.__dirty=!0,this._rect=null,this.__zr&&this.__zr.refresh()},animateStyle:function(t){return this.animate("style",t)},attrKV:function(t,e){"style"!==t?r.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 a(t),this.dirty(!1),this}},o.inherits(n,r),o.mixin(n,s),t.exports=n},function(t,e){var i=function(t){this.colorStops=t||[]};i.prototype={constructor:i,addColorStop:function(t,e){this.colorStops.push({offset:t,color:e})}},t.exports=i},function(t,e,i){function n(t){return o.isObject(t)&&null!=t.value?t.value:t}var o=i(1),a=i(17);t.exports={getFormattedLabels:function(){
+return a.getFormattedLabels(this.axis,this.get("axisLabel.formatter"))},getCategories:function(){return"category"===this.get("type")&&o.map(this.get("data"),n)},getMin:function(t){var e=this.option,i=t||null==e.rangeStart?e.min:e.rangeStart;return this.axis&&null!=i&&"dataMin"!==i&&!o.eqNaN(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&&!o.eqNaN(i)&&(i=this.axis.scale.parse(i)),i},getNeedCrossZero:function(){var t=this.option;return null==t.rangeStart&&null==t.rangeEnd&&!t.scale},getCoordSysModel:o.noop,setRange:function(t,e){this.option.rangeStart=t,this.option.rangeEnd=e},resetRange:function(){this.option.rangeStart=this.option.rangeEnd=null}}},function(t,e,i){var n=i(4),o=i(7),a=i(34),r=Math.floor,s=Math.ceil,l=n.getPrecisionSafe,u=n.round,h=a.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]),h.prototype.setExtent.call(this,e[0],e[1])},getInterval:function(){return this._interval||this.niceTicks(),this._interval},setInterval:function(t){this._interval=t,this._niceExtent=this._extent.slice()},getTicks:function(){this._interval||this.niceTicks();var t=this._interval,e=this._extent,i=[],n=1e4;if(t){var o=this._niceExtent,a=this._intervalPrecision=l(t);a+=2,e[0]<o[0]&&i.push(e[0]);for(var r=o[0];r<=o[1];)if(i.push(r),r=u(r+t,a),i.length>n)return[];e[1]>(i.length?i[i.length-1]:o[1])&&i.push(e[1])}return i},getTicksLabels:function(){for(var t=[],e=this.getTicks(),i=0;i<e.length;i++)t.push(this.getLabel(e[i]));return t},getLabel:function(t,e){var i=e&&e.precision;return null!=t&&null!=i&&("auto"===i&&(i=this._intervalPrecision+2),t=u(t,i,e&&e.pad)),o.addCommas(t)},niceTicks:function(t){t=t||5;var e=this._extent,i=e[1]-e[0];if(isFinite(i)){i<0&&(i=-i,e.reverse());var o=u(n.nice(i/t,!0),Math.max(l(e[0]),l(e[1]))+2),a=l(o)+2,h=[u(s(e[0]/o)*o,a),u(r(e[1]/o)*o,a)];this._interval=o,this._niceExtent=h}},niceExtent:function(t,e,i){var n=this._extent;if(n[0]===n[1])if(0!==n[0]){var o=n[0];i?n[0]-=o/2:(n[1]+=o/2,n[0]-=o/2)}else n[1]=1;var a=n[1]-n[0];isFinite(a)||(n[0]=0,n[1]=1),this.niceTicks(t);var l=this._interval;e||(n[0]=u(r(n[0]/l)*l)),i||(n[1]=u(s(n[1]/l)*l))}});h.create=function(){return new h},t.exports=h},function(t,e,i){function n(t){this.group=new a.Group,this._symbolCtor=t||r}function o(t,e,i){var n=t.getItemLayout(e);return n&&!isNaN(n[0])&&!isNaN(n[1])&&!(i&&i(e))&&"none"!==t.getItemVisual(e,"symbol")}var a=i(3),r=i(54),s=n.prototype;s.updateData=function(t,e){var i=this.group,n=t.hostModel,r=this._data,s=this._symbolCtor,l={itemStyle:n.getModel("itemStyle.normal").getItemStyle(["color"]),hoverItemStyle:n.getModel("itemStyle.emphasis").getItemStyle(),symbolRotate:n.get("symbolRotate"),symbolOffset:n.get("symbolOffset"),hoverAnimation:n.get("hoverAnimation"),labelModel:n.getModel("label.normal"),hoverLabelModel:n.getModel("label.emphasis")};t.diff(r).add(function(n){var a=t.getItemLayout(n);if(o(t,n,e)){var r=new s(t,n,l);r.attr("position",a),t.setItemGraphicEl(n,r),i.add(r)}}).update(function(u,h){var c=r.getItemGraphicEl(h),d=t.getItemLayout(u);return o(t,u,e)?(c?(c.updateData(t,u,l),a.updateProps(c,{position:d},n)):(c=new s(t,u),c.attr("position",d)),i.add(c),void t.setItemGraphicEl(u,c)):void i.remove(c)}).remove(function(t){var e=r.getItemGraphicEl(t);e&&e.fadeOut(function(){i.remove(e)})}).execute(),this._data=t},s.updateLayout=function(){var t=this._data;t&&t.eachItemGraphicEl(function(e,i){var n=t.getItemLayout(i);e.attr("position",n)})},s.remove=function(t){var e=this.group,i=this._data;i&&(t?i.eachItemGraphicEl(function(t){t.fadeOut(function(){e.remove(t)})}):e.removeAll())},t.exports=n},function(t,e,i){var n=i(2),o=i(32),a=i(124),r=i(1);i(121),i(122),n.registerPreprocessor(function(t){if(t){(!t.axisPointer||0===t.axisPointer.length)&&(t.axisPointer={});var e=t.axisPointer.link;e&&!r.isArray(e)&&(t.axisPointer.link=[e])}}),n.registerProcessor(n.PRIORITY.PROCESSOR.STATISTIC,function(t,e){t.getComponent("axisPointer").coordSysAxesInfo=o.collect(t,e)}),n.registerAction({type:"updateAxisPointer",event:"updateAxisPointer",update:":updateAxisPointer"},function(t,e,i){var n=a(e.getComponent("axisPointer").coordSysAxesInfo,t.currTrigger,t,t.dispatchAction||r.bind(i.dispatchAction,i),e,i,t.tooltipOption,t.highDownKey);return n})},function(t,e,i){function n(t){var e={};return c(["start","end","startValue","endValue","throttle"],function(i){t.hasOwnProperty(i)&&(e[i]=t[i])}),e}function o(t,e){c([["start","startValue"],["end","endValue"]],function(i,n){var o=t._rangePropMode;null!=e[i[0]]?o[n]="percent":null!=e[i[1]]&&(o[n]="value")})}var a=i(1),r=i(9),s=i(2),l=i(5),u=i(77),h=i(196),c=a.each,d=u.eachAxisDim,f=s.extendComponentModel({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},init:function(t,e,i){this._dataIntervalByAxis={},this._dataInfo={},this._axisProxies={},this.textStyleModel,this._autoThrottle=!0,this._rangePropMode=["percent","percent"];var o=n(t);this.mergeDefaultAndTheme(t,i),this.doInit(o)},mergeOption:function(t){var e=n(t);a.merge(this.option,t,!0),this.doInit(e)},doInit:function(t){var e=this.option;r.canvasSupported||(e.realtime=!1),this._setDefaultThrottle(t),o(this,t),c([["start","startValue"],["end","endValue"]],function(t,i){"value"===this._rangePropMode[i]&&(e[t[0]]=null)},this),this.textStyleModel=this.getModel("textStyle"),this._resetTarget(),this._giveAxisProxies()},_giveAxisProxies:function(){var t=this._axisProxies;this.eachTargetAxis(function(e,i,n,o){var a=this.dependentModels[e.axis][i],r=a.__dzAxisProxy||(a.__dzAxisProxy=new h(e.name,i,this,o));t[e.name+"_"+i]=r},this)},_resetTarget:function(){var t=this.option,e=this._judgeAutoMode();d(function(e){var i=e.axisIndex;t[i]=l.normalizeToArray(t[i])},this),"axisIndex"===e?this._autoSetAxisIndex():"orient"===e&&this._autoSetOrient()},_judgeAutoMode:function(){var t=this.option,e=!1;d(function(i){null!=t[i.axisIndex]&&(e=!0)},this);var i=t.orient;return null==i&&e?"orient":e?void 0:(null==i&&(t.orient="horizontal"),"axisIndex")},_autoSetAxisIndex:function(){var t=!0,e=this.get("orient",!0),i=this.option,n=this.dependentModels;if(t){var o="vertical"===e?"y":"x";n[o+"Axis"].length?(i[o+"AxisIndex"]=[0],t=!1):c(n.singleAxis,function(n){t&&n.get("orient",!0)===e&&(i.singleAxisIndex=[n.componentIndex],t=!1)})}t&&d(function(e){if(t){var n=[],o=this.dependentModels[e.axis];if(o.length&&!n.length)for(var a=0,r=o.length;a<r;a++)"category"===o[a].get("type")&&n.push(a);i[e.axisIndex]=n,n.length&&(t=!1)}},this),t&&this.ecModel.eachSeries(function(t){this._isSeriesHasAllAxesTypeOf(t,"value")&&d(function(e){var n=i[e.axisIndex],o=t.get(e.axisIndex),r=t.get(e.axisId),s=t.ecModel.queryComponents({mainType:e.axis,index:o,id:r})[0];o=s.componentIndex,a.indexOf(n,o)<0&&n.push(o)})},this)},_autoSetOrient:function(){var t;this.eachTargetAxis(function(e){!t&&(t=e.name)},this),this.option.orient="y"===t?"vertical":"horizontal"},_isSeriesHasAllAxesTypeOf:function(t,e){var i=!0;return d(function(n){var o=t.get(n.axisIndex),a=this.dependentModels[n.axis][o];a&&a.get("type")===e||(i=!1)},this),i},_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}},getFirstTargetAxisModel:function(){var t;return d(function(e){if(null==t){var i=this.get(e.axisIndex);i.length&&(t=this.dependentModels[e.axis][i[0]])}},this),t},eachTargetAxis:function(t,e){var i=this.ecModel;d(function(n){c(this.get(n.axisIndex),function(o){t.call(e,n,o,this,i)},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(t,e){c(["start","end","startValue","endValue"],function(e){this.option[e]=t[e]},this),!e&&o(this,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(){var t=this._axisProxies;for(var e in t)if(t.hasOwnProperty(e)&&t[e].hostedBy(this))return t[e];for(var e in t)if(t.hasOwnProperty(e)&&!t[e].hostedBy(this))return t[e]},getRangePropMode:function(){return this._rangePropMode.slice()}});t.exports=f},function(t,e,i){var n=i(64);t.exports=n.extend({type:"dataZoom",render:function(t,e,i,n){this.dataZoomModel=t,this.ecModel=e,this.api=i},getTargetCoordInfo:function(){function t(t,e,i,n){for(var o,a=0;a<i.length;a++)if(i[a].model===t){o=i[a];break}o||i.push(o={model:t,axisModels:[],coordIndex:n}),o.axisModels.push(e)}var e=this.dataZoomModel,i=this.ecModel,n={};return e.eachTargetAxis(function(e,o){var a=i.getComponent(e.axis,o);if(a){var r=a.getCoordSysModel();r&&t(r,a,n[r.mainType]||(n[r.mainType]=[]),r.componentIndex)}},this),n}})},function(t,e){"use strict";function i(t){return t}function n(t,e,n,o){this._old=t,this._new=e,this._oldKeyGetter=n||i,this._newKeyGetter=o||i}function o(t,e,i,n){for(var o=0;o<t.length;o++){var a=n(t[o],o),r=e[a];null==r?(i.push(a),e[a]=o):(r.length||(e[a]=r=[r]),r.push(o))}}n.prototype={constructor:n,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,e=this._old,i=this._new,n=this._oldKeyGetter,a=this._newKeyGetter,r={},s={},l=[],u=[];for(o(e,r,l,n),o(i,s,u,a),t=0;t<e.length;t++){var h=l[t],c=s[h];if(null!=c){var d=c.length;d?(1===d&&(s[h]=null),c=c.unshift()):s[h]=null,this._update&&this._update(c,t)}else this._remove&&this._remove(t)}for(var t=0;t<u.length;t++){var h=u[t];if(s.hasOwnProperty(h)){var c=s[h];if(null==c)continue;if(c.length)for(var f=0,d=c.length;f<d;f++)this._add&&this._add(c[f]);else this._add&&this._add(c)}}}},t.exports=n},function(t,e,i){var n=i(1),o=i(15),a=o.parseClassType,r=0,s={},l="_";s.getUID=function(t){return[t||"",r++,Math.random()].join(l)},s.enableSubTypeDefaulter=function(t){var e={};return t.registerSubTypeDefaulter=function(t,i){t=a(t),e[t.main]=i},t.determineSubType=function(i,n){var o=n.type;if(!o){var r=a(i).main;t.hasSubTypes(i)&&e[r]&&(o=e[r](n))}return o},t},s.enableTopologicalTravel=function(t,e){function i(t){var i={},r=[];return n.each(t,function(s){var l=o(i,s),u=l.originalDeps=e(s),h=a(u,t);l.entryCount=h.length,0===l.entryCount&&r.push(s),n.each(h,function(t){n.indexOf(l.predecessor,t)<0&&l.predecessor.push(t);var e=o(i,t);n.indexOf(e.successor,t)<0&&e.successor.push(s)})}),{graph:i,noEntryList:r}}function o(t,e){return t[e]||(t[e]={predecessor:[],successor:[]}),t[e]}function a(t,e){var i=[];return n.each(t,function(t){n.indexOf(e,t)>=0&&i.push(t)}),i}t.topologicalTravel=function(t,e,o,a){function r(t){u[t].entryCount--,0===u[t].entryCount&&h.push(t)}function s(t){c[t]=!0,r(t)}if(t.length){var l=i(e),u=l.graph,h=l.noEntryList,c={};for(n.each(t,function(t){c[t]=!0});h.length;){var d=h.pop(),f=u[d],p=!!c[d];p&&(o.call(a,d,f.originalDeps.slice()),delete c[d]),n.each(f.successor,p?s:r)}n.each(c,function(){throw new Error("Circle dependency may exists")})}}},t.exports=s},function(t,e){t.exports=function(t,e,i,n,o){n.eachRawSeriesByType(t,function(t){var o=t.getData(),a=t.get("symbol")||e,r=t.get("symbolSize");o.setVisual({legendSymbol:i||a,symbol:a,symbolSize:r}),n.isSeriesFiltered(t)||("function"==typeof r&&o.each(function(e){var i=t.getRawValue(e),n=t.getDataParams(e);o.setItemVisual(e,"symbolSize",r(i,n))}),o.each(function(t){var e=o.getItemModel(t),i=e.getShallow("symbol",!0),n=e.getShallow("symbolSize",!0);null!=i&&o.setItemVisual(t,"symbol",i),null!=n&&o.setItemVisual(t,"symbolSize",n)}))})}},function(t,e){function i(t){for(var e=0;t>=h;)e|=1&t,t>>=1;return t+e}function n(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++;o(t,e,a)}else for(;a<i&&n(t[a],t[a-1])>=0;)a++;return a-e}function o(t,e,i){for(i--;e<i;){var n=t[e];t[e++]=t[i],t[i--]=n}}function a(t,e,i,n,o){for(n===e&&n++;n<i;n++){for(var a,r=t[n],s=e,l=n;s<l;)a=s+l>>>1,o(r,t[a])<0?l=a:s=a+1;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(;u>0;)t[s+u]=t[s+u-1],u--}t[s]=r}}function r(t,e,i,n,o,a){var r=0,s=0,l=1;if(a(t,e[i+o])>0){for(s=n-o;l<s&&a(t,e[i+o+l])>0;)r=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s),r+=o,l+=o}else{for(s=o+1;l<s&&a(t,e[i+o-l])<=0;)r=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s);var u=r;r=o-l,l=o-u}for(r++;r<l;){var h=r+(l-r>>>1);a(t,e[i+h])>0?r=h+1:l=h}return l}function s(t,e,i,n,o,a){var r=0,s=0,l=1;if(a(t,e[i+o])<0){for(s=o+1;l<s&&a(t,e[i+o-l])<0;)r=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s);var u=r;r=o-l,l=o-u}else{for(s=n-o;l<s&&a(t,e[i+o+l])>=0;)r=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s),r+=o,l+=o}for(r++;r<l;){var h=r+(l-r>>>1);a(t,e[i+h])<0?l=h:r=h+1}return l}function l(t,e){function i(t,e){h[y]=t,f[y]=e,y+=1}function n(){for(;y>1;){var t=y-2;if(t>=1&&f[t-1]<=f[t]+f[t+1]||t>=2&&f[t-2]<=f[t]+f[t-1])f[t-1]<f[t+1]&&t--;else if(f[t]>f[t+1])break;a(t)}}function o(){for(;y>1;){var t=y-2;t>0&&f[t-1]<f[t+1]&&t--,a(t)}}function a(i){var n=h[i],o=f[i],a=h[i+1],c=f[i+1];f[i]=o+c,i===y-3&&(h[i+1]=h[i+2],f[i+1]=f[i+2]),y--;var d=s(t[a],t,n,o,0,e);n+=d,o-=d,0!==o&&(c=r(t[n+o-1],t,a,c,c-1,e),0!==c&&(o<=c?l(n,o,a,c):u(n,o,a,c)))}function l(i,n,o,a){var l=0;for(l=0;l<n;l++)x[l]=t[i+l];var u=0,h=o,d=i;if(t[d++]=t[h++],0!==--a){if(1===n){for(l=0;l<a;l++)t[d+l]=t[h+l];return void(t[d+a]=x[u])}for(var f,g,m,v=p;;){f=0,g=0,m=!1;do if(e(t[h],x[u])<0){if(t[d++]=t[h++],g++,f=0,0===--a){m=!0;break}}else if(t[d++]=x[u++],f++,g=0,1===--n){m=!0;break}while((f|g)<v);if(m)break;do{if(f=s(t[h],x,u,n,0,e),0!==f){for(l=0;l<f;l++)t[d+l]=x[u+l];if(d+=f,u+=f,n-=f,n<=1){m=!0;break}}if(t[d++]=t[h++],0===--a){m=!0;break}if(g=r(x[u],t,h,a,0,e),0!==g){for(l=0;l<g;l++)t[d+l]=t[h+l];if(d+=g,h+=g,a-=g,0===a){m=!0;break}}if(t[d++]=x[u++],1===--n){m=!0;break}v--}while(f>=c||g>=c);if(m)break;v<0&&(v=0),v+=2}if(p=v,p<1&&(p=1),1===n){for(l=0;l<a;l++)t[d+l]=t[h+l];t[d+a]=x[u]}else{if(0===n)throw new Error;for(l=0;l<n;l++)t[d+l]=x[u+l]}}else for(l=0;l<n;l++)t[d+l]=x[u+l]}function u(i,n,o,a){var l=0;for(l=0;l<a;l++)x[l]=t[o+l];var u=i+n-1,h=a-1,d=o+a-1,f=0,g=0;if(t[d--]=t[u--],0!==--n){if(1===a){for(d-=n,u-=n,g=d+1,f=u+1,l=n-1;l>=0;l--)t[g+l]=t[f+l];return void(t[d]=x[h])}for(var m=p;;){var v=0,y=0,_=!1;do if(e(x[h],t[u])<0){if(t[d--]=t[u--],v++,y=0,0===--n){_=!0;break}}else if(t[d--]=x[h--],y++,v=0,1===--a){_=!0;break}while((v|y)<m);if(_)break;do{if(v=n-s(x[h],t,i,n,n-1,e),0!==v){for(d-=v,u-=v,n-=v,g=d+1,f=u+1,l=v-1;l>=0;l--)t[g+l]=t[f+l];if(0===n){_=!0;break}}if(t[d--]=x[h--],1===--a){_=!0;break}if(y=a-r(t[u],x,0,a,a-1,e),0!==y){for(d-=y,h-=y,a-=y,g=d+1,f=h+1,l=0;l<y;l++)t[g+l]=x[f+l];if(a<=1){_=!0;break}}if(t[d--]=t[u--],0===--n){_=!0;break}m--}while(v>=c||y>=c);if(_)break;m<0&&(m=0),m+=2}if(p=m,p<1&&(p=1),1===a){for(d-=n,u-=n,g=d+1,f=u+1,l=n-1;l>=0;l--)t[g+l]=t[f+l];t[d]=x[h]}else{if(0===a)throw new Error;for(f=d-(a-1),l=0;l<a;l++)t[f+l]=x[l]}}else for(f=d-(a-1),l=0;l<a;l++)t[f+l]=x[l]}var h,f,p=c,g=0,m=d,v=0,y=0;g=t.length,g<2*d&&(m=g>>>1);var x=[];v=g<120?5:g<1542?10:g<119151?19:40,h=[],f=[],this.mergeRuns=n,this.forceMergeRuns=o,this.pushRun=i}function u(t,e,o,r){o||(o=0),r||(r=t.length);var s=r-o;if(!(s<2)){var u=0;if(s<h)return u=n(t,o,r,e),void a(t,o,r,o+u,e);var c=new l(t,e),d=i(s);do{if(u=n(t,o,r,e),u<d){var f=s;f>d&&(f=d),a(t,o,o+f,o+u,e),u=f}c.pushRun(o,u),c.mergeRuns(),s-=u,o+=u}while(0!==s);c.forceMergeRuns()}}var h=32,c=7,d=256;t.exports=u},function(t,e,i){var n=i(35);t.exports=function(){if(0!==n.debugMode)if(1==n.debugMode)for(var t in arguments)throw new Error(arguments[t]);else if(n.debugMode>1)for(var t in arguments)console.log(arguments[t])}},function(t,e,i){function n(t){o.call(this,t)}var o=i(40),a=i(11),r=i(1),s=i(69),l=new s(50);n.prototype={constructor:n,type:"image",brush:function(t,e){var i,n=this.style,o=n.image;if(n.bind(t,this,e),i="string"==typeof o?this._image:o,!i&&o){var a=l.get(o);if(!a)return i=new Image,i.onload=function(){i.onload=null;for(var t=0;t<a.pending.length;t++)a.pending[t].dirty()},a={image:i,pending:[this]},i.src=o,l.put(o,a),void(this._image=i);if(i=a.image,this._image=i,!i.width||!i.height)return void a.pending.push(this)}if(i){var r=n.x||0,s=n.y||0;if(!i.width||!i.height)return;var u=n.width,h=n.height,c=i.width/i.height;if(null==u&&null!=h?u=h*c:null==h&&null!=u?h=u/c:null==u&&null==h&&(u=i.width,h=i.height),this.setTransform(t),n.sWidth&&n.sHeight){var d=n.sx||0,f=n.sy||0;t.drawImage(i,d,f,n.sWidth,n.sHeight,r,s,u,h)}else if(n.sx&&n.sy){var d=n.sx,f=n.sy,p=u-d,g=h-f;t.drawImage(i,d,f,p,g,r,s,u,h)}else t.drawImage(i,r,s,u,h);this.restoreTransform(t),null!=n.text&&this.drawRectText(t,this.getBoundingRect())}},getBoundingRect:function(){var t=this.style;return this._rect||(this._rect=new a(t.x||0,t.y||0,t.width||0,t.height||0)),this._rect}},r.inherits(n,o),t.exports=n},function(t,e,i){function n(t,e){var i=t.getItemVisual(e,"symbolSize");return i instanceof Array?i.slice():[+i,+i]}function o(t){return[t[0]/2,t[1]/2]}function a(t,e,i){u.Group.call(this),this.updateData(t,e,i)}function r(t,e){this.parent.drift(t,e)}var s=i(1),l=i(24),u=i(3),h=i(4),c=a.prototype;c._createSymbol=function(t,e,i,n){this.removeAll();var a=e.hostModel,s=e.getItemVisual(i,"color"),h=l.createSymbol(t,-1,-1,2,2,s);h.attr({z2:100,culling:!0,scale:[0,0]}),h.drift=r,u.initProps(h,{scale:o(n)},a,i),this._symbolType=t,this.add(h)},c.stopSymbolAnimation=function(t){this.childAt(0).stopAnimation(t)},c.getSymbolPath=function(){return this.childAt(0)},c.getScale=function(){return this.childAt(0).scale},c.highlight=function(){this.childAt(0).trigger("emphasis")},c.downplay=function(){this.childAt(0).trigger("normal")},c.setZ=function(t,e){var i=this.childAt(0);i.zlevel=t,i.z=e},c.setDraggable=function(t){var e=this.childAt(0);e.draggable=t,e.cursor=t?"move":"pointer"},c.updateData=function(t,e,i){this.silent=!1;var a=t.getItemVisual(e,"symbol")||"circle",r=t.hostModel,s=n(t,e);if(a!==this._symbolType)this._createSymbol(a,t,e,s);else{var l=this.childAt(0);l.silent=!1,u.updateProps(l,{scale:o(s)},r,e)}this._updateCommon(t,e,s,i),this._seriesModel=r};var d=["itemStyle","normal"],f=["itemStyle","emphasis"],p=["label","normal"],g=["label","emphasis"];c._updateCommon=function(t,e,i,n){var a=this.childAt(0),r=t.hostModel,l=t.getItemVisual(e,"color");"image"!==a.type&&a.useStyle({strokeNoScale:!0}),n=n||null;var c=n&&n.itemStyle,m=n&&n.hoverItemStyle,v=n&&n.symbolRotate,y=n&&n.symbolOffset,x=n&&n.labelModel,_=n&&n.hoverLabelModel,b=n&&n.hoverAnimation;if(!n||t.hasItemOption){var w=t.getItemModel(e);c=w.getModel(d).getItemStyle(["color"]),m=w.getModel(f).getItemStyle(),v=w.getShallow("symbolRotate"),y=w.getShallow("symbolOffset"),x=w.getModel(p),_=w.getModel(g),b=w.getShallow("hoverAnimation")}else m=s.extend({},m);var S=a.style;a.attr("rotation",(v||0)*Math.PI/180||0),y&&a.attr("position",[h.parsePercent(y[0],i[0]),h.parsePercent(y[1],i[1])]),a.setColor(l),a.setStyle(c);var M=t.getItemVisual(e,"opacity");null!=M&&(S.opacity=M);for(var I,T,A=t.dimensions.slice();A.length&&(I=A.pop(),T=t.getDimensionInfo(I).type,"ordinal"===T||"time"===T););null!=I&&x.getShallow("show")?(u.setText(S,x,l),S.text=s.retrieve(r.getFormattedLabel(e,"normal"),t.get(I,e))):S.text="",null!=I&&_.getShallow("show")?(u.setText(m,_,l),m.text=s.retrieve(r.getFormattedLabel(e,"emphasis"),t.get(I,e))):m.text="",a.off("mouseover").off("mouseout").off("emphasis").off("normal"),a.hoverStyle=m,u.setHoverStyle(a);var L=o(i);if(b&&r.isAnimationEnabled()){var C=function(){var t=L[1]/L[0];this.animateTo({scale:[Math.max(1.1*L[0],L[0]+3),Math.max(1.1*L[1],L[1]+3*t)]},400,"elasticOut")},D=function(){this.animateTo({scale:L},400,"elasticOut")};a.on("mouseover",C).on("mouseout",D).on("emphasis",C).on("normal",D)}},c.fadeOut=function(t){var e=this.childAt(0);this.silent=e.silent=!0,e.style.text="",u.updateProps(e,{scale:[0,0]},this._seriesModel,this.dataIndex,t)},s.inherits(a,u.Group),t.exports=a},function(t,e,i){"use strict";function n(t,e,i,n){var o=n.getWidth(),a=n.getHeight();t[0]=Math.min(t[0]+e,o)-e,t[1]=Math.min(t[1]+i,a)-i,t[0]=Math.max(t[0],0),t[1]=Math.max(t[1],0)}var o=i(1),a=i(3),r=i(16),s=i(7),l=i(19),u=i(17),h=i(37),c={};c.buildElStyle=function(t){var e,i=t.get("type"),n=t.getModel(i+"Style");return"line"===i?(e=n.getLineStyle(),e.fill=null):"shadow"===i&&(e=n.getAreaStyle(),e.stroke=null),e},c.buildLabelElOption=function(t,e,i,o,a){var l=i.get("value"),u=c.getValueLabel(l,e.axis,e.ecModel,i.get("seriesDataIndices"),{precision:i.get("label.precision"),formatter:i.get("label.formatter")}),h=i.getModel("label"),d=h.getModel("textStyle"),f=s.normalizeCssArray(h.get("padding")||0),p=d.getFont(),g=r.getBoundingRect(u,p,a.textAlign,a.textBaseline),m=a.position,v=g.width+f[1]+f[3],y=g.height+f[0]+f[2],x=a.align;"right"===x&&(m[0]-=v),"center"===x&&(m[0]-=v/2);var _=a.verticalAlign;"bottom"===_&&(m[1]-=y),"middle"===_&&(m[1]-=y/2),n(m,v,y,o);var b=h.get("backgroundColor");b&&"auto"!==b||(b=e.get("axisLine.lineStyle.color")),t.label={shape:{x:0,y:0,width:v,height:y,r:h.get("borderRadius")},position:m.slice(),style:{text:u,textFont:p,textFill:d.getTextColor(),textPosition:"inside",fill:b,stroke:h.get("borderColor")||"transparent",lineWidth:h.get("borderWidth")||0,shadowBlur:h.get("shadowBlur"),shadowColor:h.get("shadowColor"),shadowOffsetX:h.get("shadowOffsetX"),shadowOffsetY:h.get("shadowOffsetY")}}},c.getValueLabel=function(t,e,i,n,a){var r=e.scale.getLabel(t,{precision:a.precision,pad:!0}),s=a.formatter;if(s){var l={value:u.getAxisRawValue(e,t),seriesData:[]};o.each(n,function(t){var e=i.getSeriesByIndex(t.seriesIndex),n=t.dataIndexInside,o=e&&e.getDataParams(n);o&&l.seriesData.push(o)}),o.isString(s)?r=s.replace("{value}",r):o.isFunction(s)&&(r=s(l))}return r},c.getTransformedPosition=function(t,e,i){var n=l.create();return l.rotate(n,n,i.rotation),l.translate(n,n,i.position),a.applyTransform([t.dataToCoord(e),(i.labelOffset||0)+(i.labelDirection||1)*(i.labelMargin||0)],n)},c.buildCartesianSingleLabelElOption=function(t,e,i,n,o,a){var r=h.innerTextLayout(i.rotation,0,i.labelDirection);i.labelMargin=o.get("label.margin"),c.buildLabelElOption(e,n,o,a,{position:c.getTransformedPosition(n.axis,t,i),align:r.textAlign,verticalAlign:r.textVerticalAlign})},c.makeLineShape=function(t,e,i){return i=i||0,{x1:t[i],y1:t[1-i],x2:e[i],y2:e[1-i]}},c.makeRectShape=function(t,e,i){return i=i||0,{x:t[i],y:t[1-i],width:e[i],height:e[1-i]}},c.makeSectorShape=function(t,e,i,n,o,a){return{cx:t,cy:e,r0:i,r:n,startAngle:o,endAngle:a,clockwise:!0}},t.exports=c},function(t,e,i){function n(t,e,i){return t.getCoordSysModel()===e}function o(t){var e,i=t.model,n=i.getFormattedLabels(),o=i.getModel("axisLabel.textStyle"),a=1,r=n.length;r>40&&(a=Math.ceil(r/40));for(var s=0;s<r;s+=a)if(!t.isLabelIgnored(s)){var l=o.getTextRect(n[s]);e?e.union(l):e=l}return e}function a(t,e,i){this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this._initCartesian(t,e,i),this.model=t}function r(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}}function s(t,e){return c.map(y,function(e){var i=t.getReferringComponents(e)[0];return i})}function l(t){return"cartesian2d"===t.get("coordinateSystem")}var u=i(12),h=i(17),c=i(1),d=i(134),f=i(132),p=c.each,g=h.ifAxisCrossZero,m=h.niceScaleExtent;i(135);var v=a.prototype;v.type="grid",v.axisPointerEnabled=!0,v.getRect=function(){return this._rect},v.update=function(t,e){function i(t){var e=n[t];for(var i in e)if(e.hasOwnProperty(i)){var o=e[i];if(o&&("category"===o.type||!g(o)))return!0}return!1}var n=this._axesMap;this._updateScale(t,this.model),p(n.x,function(t){m(t.scale,t.model)}),p(n.y,function(t){m(t.scale,t.model)}),p(n.x,function(t){i("y")&&(t.onZero=!1)}),p(n.y,function(t){i("x")&&(t.onZero=!1)}),this.resize(this.model,e)},v.resize=function(t,e){function i(){p(a,function(t){var e=t.isHorizontal(),i=e?[0,n.width]:[0,n.height],o=t.inverse?1:0;t.setExtent(i[o],i[1-o]),r(t,e?n.x:n.y)})}var n=u.getLayoutRect(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()});this._rect=n;var a=this._axesList;i(),t.get("containLabel")&&(p(a,function(t){if(!t.model.get("axisLabel.inside")){var e=o(t);if(e){var i=t.isHorizontal()?"height":"width",a=t.model.get("axisLabel.margin");n[i]-=e[i]+a,"top"===t.position?n.y+=e.height+a:"left"===t.position&&(n.x+=e.width+a)}}}),i())},v.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]}},v.getAxes=function(){return this._axesList.slice()},v.getCartesian=function(t,e){if(null!=t&&null!=e){var i="x"+t+"y"+e;return this._coordsMap[i]}c.isObject(t)&&(e=t.yAxisIndex,t=t.xAxisIndex);for(var n=0,o=this._coordsList;n<o.length;n++)if(o[n].getAxis("x").index===t||o[n].getAxis("y").index===e)return o[n]},v.getCartesians=function(){return this._coordsList.slice()},v.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},v.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},v._findConvertTarget=function(t,e){var i,n,o=e.seriesModel,a=e.xAxisModel||o&&o.getReferringComponents("xAxis")[0],r=e.yAxisModel||o&&o.getReferringComponents("yAxis")[0],s=e.gridModel,l=this._coordsList;if(o)i=o.coordinateSystem,c.indexOf(l,i)<0&&(i=null);else if(a&&r)i=this.getCartesian(a.componentIndex,r.componentIndex);else if(a)n=this.getAxis("x",a.componentIndex);else if(r)n=this.getAxis("y",r.componentIndex);else if(s){var u=s.coordinateSystem;u===this&&(i=this._coordsList[0])}return{cartesian:i,axis:n}},v.containPoint=function(t){var e=this._coordsList[0];if(e)return e.containPoint(t)},v._initCartesian=function(t,e,i){function o(i){return function(o,l){if(n(o,t,e)){var u=o.get("position");"x"===i?"top"!==u&&"bottom"!==u&&(u="bottom",a[u]&&(u="top"===u?"bottom":"top")):"left"!==u&&"right"!==u&&(u="left",a[u]&&(u="left"===u?"right":"left")),a[u]=!0;var c=new f(i,h.createScaleByModel(o),[0,0],o.get("type"),u),d="category"===c.type;c.onBand=d&&o.get("boundaryGap"),c.inverse=o.get("inverse"),c.onZero=o.get("axisLine.onZero"),o.axis=c,c.model=o,c.grid=this,c.index=l,this._axesList.push(c),r[i][l]=c,s[i]++}}}var a={left:!1,right:!1,top:!1,bottom:!1},r={x:{},y:{}},s={x:0,y:0};return e.eachComponent("xAxis",o("x"),this),e.eachComponent("yAxis",o("y"),this),s.x&&s.y?(this._axesMap=r,void p(r.x,function(e,i){p(r.y,function(n,o){var a="x"+i+"y"+o,r=new d(a);r.grid=this,r.model=t,this._coordsMap[a]=r,this._coordsList.push(r),r.addAxis(e),r.addAxis(n)},this)},this)):(this._axesMap={},void(this._axesList=[]))},v._updateScale=function(t,e){function i(t,e,i){p(i.coordDimToDataDim(e.dim),function(i){e.scale.unionExtentFromData(t,i)})}c.each(this._axesList,function(t){t.scale.setExtent(1/0,-(1/0))}),t.eachSeries(function(o){if(l(o)){var a=s(o,t),r=a[0],u=a[1];if(!n(r,e,t)||!n(u,e,t))return;var h=this.getCartesian(r.componentIndex,u.componentIndex),c=o.getData(),d=h.getAxis("x"),f=h.getAxis("y");"list"===c.type&&(i(c,d,o),i(c,f,o))}},this)},v.getTooltipAxes=function(t){var e=[],i=[];return p(this.getCartesians(),function(n){var o=null!=t&&"auto"!==t?n.getAxis(t):n.getBaseAxis(),a=n.getOtherAxis(o);c.indexOf(e,o)<0&&e.push(o),c.indexOf(i,a)<0&&i.push(a)}),{baseAxes:e,otherAxes:i}};var y=["xAxis","yAxis"];a.create=function(t,e){var i=[];return t.eachComponent("grid",function(n,o){var r=new a(n,t,e);r.name="grid_"+o,r.resize(n,e),n.coordinateSystem=r,i.push(r)}),t.eachSeries(function(e){if(l(e)){var i=s(e,t),n=i[0],o=i[1],a=n.getCoordSysModel(),r=a.coordinateSystem;e.coordinateSystem=r.getCartesian(n.componentIndex,o.componentIndex)}}),i},a.dimensions=a.prototype.dimensions=d.prototype.dimensions,i(26).register("cartesian2d",a),t.exports=a},function(t,e,i){function n(t,e,i,n,r,s){if(t.axisPointerClass){var l=a.getAxisPointerModel(e);l?(t._axisPointer||(t._axisPointer=new t.axisPointerClass)).render(e,l,n,s):o(t,n)}}function o(t,e,i){var n=t._axisPointer;n&&n.dispose(e,i),t._axisPointer=null}var a=i(32),r=i(2).extendComponentView({type:"axis",_axisPointer:null,axisPointerClass:null,render:function(t,e,i,o){a.fixValue(t),r.superApply(this,"render",arguments),n(this,t,e,i,o,!0)},updateAxisPointer:function(t,e,i,o,a){n(this,t,e,i,o,!1)},remove:function(t,e){var i=this._axisPointer;i&&i.remove(e),r.superApply(this,"remove",arguments)},dispose:function(t,e){o(this,e),r.superApply(this,"dispose",arguments)}});t.exports=r},function(t,e,i){var n=i(1),o={};o.layout=function(t,e,i){function o(t,e){var i=a.getAxis(t);return i.toGlobalCoord(i.dataToCoord(0))}i=i||{};var a=t.coordinateSystem,r=e.axis,s={},l=r.position,u=r.onZero?"onZero":l,h=r.dim,c=a.getRect(),d=[c.x,c.x+c.width,c.y,c.y+c.height],f=e.get("offset")||0,p={x:{top:d[2]-f,bottom:d[3]+f},y:{left:d[0]-f,right:d[1]+f}};p.x.onZero=Math.max(Math.min(o("y"),p.x.bottom),p.x.top),p.y.onZero=Math.max(Math.min(o("x"),p.y.right),p.y.left),s.position=["y"===h?p.y[u]:d[0],"x"===h?p.x[u]:d[3]],s.rotation=Math.PI/2*("x"===h?0:1);var g={top:-1,bottom:1,left:-1,right:1};s.labelDirection=s.tickDirection=s.nameDirection=g[l],s.labelOffset=r.onZero?p[h][l]-p[h].onZero:0,e.get("axisTick.inside")&&(s.tickDirection=-s.tickDirection),n.retrieve(i.labelInside,e.get("axisLabel.inside"))&&(s.labelDirection=-s.labelDirection);var m=e.get("axisLabel.rotate");return s.labelRotate="top"===u?-m:m,s.labelInterval=r.getLabelInterval(),s.z2=1,s},t.exports=o},function(t,e,i){var n=i(96),o=i(1),a=i(13),r=i(12),s=["value","category","time","log"];t.exports=function(t,e,i,l){o.each(s,function(a){e.extend({type:t+"Axis."+a,mergeDefaultAndTheme:function(e,n){var s=this.layoutMode,l=s?r.getLayoutParams(e):{},u=n.getTheme();o.merge(e,u.get(a+"Axis")),o.merge(e,this.getDefaultOption()),e.type=i(t,e),s&&r.mergeLayoutParam(e,l,s)},defaultOption:o.mergeAll([{},n[a+"Axis"],l],!0)})}),a.registerSubTypeDefaulter(t+"Axis",o.curry(i,t))}},function(t,e,i){"use strict";function n(t,e){return e.type||(e.data?"category":"value")}var o=i(13),a=i(1),r=i(59),s=o.extend({type:"cartesian2dAxis",axis:null,init:function(){s.superApply(this,"init",arguments),this.resetRange()},mergeOption:function(){s.superApply(this,"mergeOption",arguments),this.resetRange()},restoreData:function(){s.superApply(this,"restoreData",arguments),this.resetRange()},getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"grid",index:this.option.gridIndex,id:this.option.gridId})[0]}});a.merge(s.prototype,i(42));var l={offset:0};r("x",s,n,l),r("y",s,n,l),t.exports=s},function(t,e){t.exports=function(t,e){e.eachSeriesByType(t,function(t){var e=t.getData(),i=t.coordinateSystem;if(i){var n=i.dimensions;1===n.length?e.each(n[0],function(t,n){e.setItemLayout(n,isNaN(t)?[NaN,NaN]:i.dataToPoint(t))}):2===n.length&&e.each(n,function(t,n,o){e.setItemLayout(o,isNaN(t)||isNaN(n)?[NaN,NaN]:i.dataToPoint([t,n]))},!0)}})}},function(t,e,i){var n=i(15),o=n.set,a=n.get;t.exports={clearColorPalette:function(){o(this,"colorIdx",0),o(this,"colorNameMap",{})},getColorFromPalette:function(t,e){e=e||this;var i=a(e,"colorIdx")||0,n=a(e,"colorNameMap")||o(e,"colorNameMap",{});if(n[t])return n[t];var r=this.get("color",!0)||[];if(r.length){var s=r[i];return t&&(n[t]=s),o(e,"colorIdx",(i+1)%r.length),
+s}}}},function(t,e){t.exports=function(t,e){var i=e.findComponents({mainType:"legend"});i&&i.length&&e.eachSeriesByType(t,function(t){var e=t.getData();e.filterSelf(function(t){for(var n=e.getName(t),o=0;o<i.length;o++)if(!i[o].isSelected(n))return!1;return!0},this)},this)}},function(t,e,i){var n=i(36),o=i(49),a=i(15),r=function(){this.group=new n,this.uid=o.getUID("viewComponent")};r.prototype={constructor:r,init:function(t,e){},render:function(t,e,i,n){},dispose:function(){}};var s=r.prototype;s.updateView=s.updateLayout=s.updateVisual=function(t,e,i,n){},a.enableClassExtend(r),a.enableClassManagement(r,{registerWhenExtend:!0}),t.exports=r},function(t,e,i){"use strict";var n=i(70),o=i(23),a=i(102),r=i(180),s=i(1),l=function(t){a.call(this,t),o.call(this,t),r.call(this,t),this.id=t.id||n()};l.prototype={type:"element",name:"",__zr:null,ignore:!1,clipPath:null,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]),i[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]=[]),i[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(s.isObject(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,t.__zr=e,t.__clipTarget=this,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)}},s.mixin(l,r),s.mixin(l,a),s.mixin(l,o),t.exports=l},function(t,e,i){function n(t,e){return t[e]}function o(t,e,i){t[e]=i}function a(t,e,i){return(e-t)*i+t}function r(t,e,i){return i>.5?e:t}function s(t,e,i,n,o){var r=t.length;if(1==o)for(var s=0;s<r;s++)n[s]=a(t[s],e[s],i);else for(var l=t[0].length,s=0;s<r;s++)for(var u=0;u<l;u++)n[s][u]=a(t[s][u],e[s][u],i)}function l(t,e,i){var n=t.length,o=e.length;if(n!==o){var a=n>o;if(a)t.length=o;else for(var r=n;r<o;r++)t.push(1===i?e[r]:x.call(e[r]))}for(var s=t[0]&&t[0].length,r=0;r<t.length;r++)if(1===i)isNaN(t[r])&&(t[r]=e[r]);else for(var l=0;l<s;l++)isNaN(t[r][l])&&(t[r][l]=e[r][l])}function u(t,e,i){if(t===e)return!0;var n=t.length;if(n!==e.length)return!1;if(1===i){for(var o=0;o<n;o++)if(t[o]!==e[o])return!1}else for(var a=t[0].length,o=0;o<n;o++)for(var r=0;r<a;r++)if(t[o][r]!==e[o][r])return!1;return!0}function h(t,e,i,n,o,a,r,s,l){var u=t.length;if(1==l)for(var h=0;h<u;h++)s[h]=c(t[h],e[h],i[h],n[h],o,a,r);else for(var d=t[0].length,h=0;h<u;h++)for(var f=0;f<d;f++)s[h][f]=c(t[h][f],e[h][f],i[h][f],n[h][f],o,a,r)}function c(t,e,i,n,o,a,r){var s=.5*(i-t),l=.5*(n-e);return(2*(e-i)+s+l)*r+(-3*(e-i)-2*s-l)*a+s*o+e}function d(t){if(y(t)){var e=t.length;if(y(t[0])){for(var i=[],n=0;n<e;n++)i.push(x.call(t[n]));return i}return x.call(t)}return t}function f(t){return t[0]=Math.floor(t[0]),t[1]=Math.floor(t[1]),t[2]=Math.floor(t[2]),"rgba("+t.join(",")+")"}function p(t,e,i,n,o){var d=t._getter,p=t._setter,v="spline"===e,x=n.length;if(x){var _,b=n[0].value,w=y(b),S=!1,M=!1,I=w&&y(b[0])?2:1;n.sort(function(t,e){return t.time-e.time}),_=n[x-1].time;for(var T=[],A=[],L=n[0].value,C=!0,D=0;D<x;D++){T.push(n[D].time/_);var P=n[D].value;if(w&&u(P,L,I)||!w&&P===L||(C=!1),L=P,"string"==typeof P){var k=m.parse(P);k?(P=k,S=!0):M=!0}A.push(P)}if(!C){for(var O=A[x-1],D=0;D<x-1;D++)w?l(A[D],O,I):!isNaN(A[D])||isNaN(O)||M||S||(A[D]=O);w&&l(d(t._target,o),O,I);var z,R,E,N,V,B,G=0,F=0;if(S)var H=[0,0,0,0];var W=function(t,e){var i;if(e<0)i=0;else if(e<F){for(z=Math.min(G+1,x-1),i=z;i>=0&&!(T[i]<=e);i--);i=Math.min(i,x-2)}else{for(i=G;i<x&&!(T[i]>e);i++);i=Math.min(i-1,x-2)}G=i,F=e;var n=T[i+1]-T[i];if(0!==n)if(R=(e-T[i])/n,v)if(N=A[i],E=A[0===i?i:i-1],V=A[i>x-2?x-1:i+1],B=A[i>x-3?x-1:i+2],w)h(E,N,V,B,R,R*R,R*R*R,d(t,o),I);else{var l;if(S)l=h(E,N,V,B,R,R*R,R*R*R,H,1),l=f(H);else{if(M)return r(N,V,R);l=c(E,N,V,B,R,R*R,R*R*R)}p(t,o,l)}else if(w)s(A[i],A[i+1],R,d(t,o),I);else{var l;if(S)s(A[i],A[i+1],R,H,1),l=f(H);else{if(M)return r(A[i],A[i+1],R);l=a(A[i],A[i+1],R)}p(t,o,l)}},Z=new g({target:t._target,life:_,loop:t._loop,delay:t._delay,onframe:W,ondestroy:i});return e&&"spline"!==e&&(Z.easing=e),Z}}}var g=i(159),m=i(22),v=i(1),y=v.isArrayLike,x=Array.prototype.slice,_=function(t,e,i,a){this._tracks={},this._target=t,this._loop=e||!1,this._getter=i||n,this._setter=a||o,this._clipCount=0,this._delay=0,this._doneList=[],this._onframeList=[],this._clipList=[]};_.prototype={when:function(t,e){var i=this._tracks;for(var n in e)if(e.hasOwnProperty(n)){if(!i[n]){i[n]=[];var o=this._getter(this._target,n);if(null==o)continue;0!==t&&i[n].push({time:0,value:d(o)})}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){var e,i=this,n=0,o=function(){n--,n||i._doneCallback()};for(var a in this._tracks)if(this._tracks.hasOwnProperty(a)){var r=p(this,t,o,this._tracks[a],a);r&&(this._clipList.push(r),n++,this.animation&&this.animation.addClip(r),e=r)}if(e){var s=e.onframe;e.onframe=function(t,e){s(t,e);for(var n=0;n<i._onframeList.length;n++)i._onframeList[n](t,e)}}return n||this._doneCallback(),this},stop:function(t){for(var e=this._clipList,i=this.animation,n=0;n<e.length;n++){var o=e[n];t&&o.onframe(this._target,1),i&&i.removeClip(o)}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}},t.exports=_},function(t,e){t.exports="undefined"!=typeof window&&(window.requestAnimationFrame||window.msRequestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame)||function(t){setTimeout(t,16)}},function(t,e){var i=2*Math.PI;t.exports={normalizeRadian:function(t){return t%=i,t<0&&(t+=i),t}}},function(t,e){var i=function(){this.head=null,this.tail=null,this._len=0},n=i.prototype;n.insert=function(t){var e=new o(t);return this.insertEntry(e),e},n.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++},n.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--},n.len=function(){return this._len},n.clear=function(){this.head=this.tail=null,this._len=0};var o=function(t){this.value=t,this.next,this.prev},a=function(t){this._list=new i,this._map={},this._maxSize=t||10,this._lastRemovedEntry=null},r=a.prototype;r.put=function(t,e){var i=this._list,n=this._map,a=null;if(null==n[t]){var r=i.len(),s=this._lastRemovedEntry;if(r>=this._maxSize&&r>0){var l=i.head;i.remove(l),delete n[l.key],a=l.value,this._lastRemovedEntry=l}s?s.value=e:s=new o(e),s.key=t,i.insertEntry(s),n[t]=s}return a},r.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},r.clear=function(){this._list.clear(),this._map={}},t.exports=a},function(t,e){var i=2311;t.exports=function(){return i++}},function(t,e){var i=function(t,e){this.image=t,this.repeat=e,this.type="pattern"};i.prototype.getCanvasPattern=function(t){return this._canvasPattern||(this._canvasPattern=t.createPattern(this.image,this.repeat))},t.exports=i},function(t,e){function i(t,e,i){var n=e.x,o=e.x2,a=e.y,r=e.y2;e.global||(n=n*i.width+i.x,o=o*i.width+i.x,a=a*i.height+i.y,r=r*i.height+i.y);var s=t.createLinearGradient(n,a,o,r);return s}function n(t,e,i){var n=i.width,o=i.height,a=Math.min(n,o),r=e.x,s=e.y,l=e.r;e.global||(r=r*n+i.x,s=s*o+i.y,l*=a);var u=t.createRadialGradient(r,s,0,r,s,l);return u}var o=[["shadowBlur",0],["shadowOffsetX",0],["shadowOffsetY",0],["shadowColor","#000"],["lineCap","butt"],["lineJoin","miter"],["miterLimit",10]],a=function(t){this.extendFrom(t)};a.prototype={constructor:a,fill:"#000000",stroke:null,opacity:1,lineDash:null,lineDashOffset:0,shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,lineWidth:1,strokeNoScale:!1,text:null,textFill:"#000",textStroke:null,textPosition:"inside",textOffset:null,textBaseline:null,textAlign:null,textVerticalAlign:null,textDistance:5,textShadowBlur:0,textShadowOffsetX:0,textShadowOffsetY:0,textTransform:!1,textRotation:0,blend:null,bind:function(t,e,i){for(var n=this,a=i&&i.style,r=!a,s=0;s<o.length;s++){var l=o[s],u=l[0];(r||n[u]!==a[u])&&(t[u]=n[u]||l[1])}if((r||n.fill!==a.fill)&&(t.fillStyle=n.fill),(r||n.stroke!==a.stroke)&&(t.strokeStyle=n.stroke),(r||n.opacity!==a.opacity)&&(t.globalAlpha=null==n.opacity?1:n.opacity),(r||n.blend!==a.blend)&&(t.globalCompositeOperation=n.blend||"source-over"),this.hasStroke()){var h=n.lineWidth;t.lineWidth=h/(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&&this.lineWidth>0},extendFrom:function(t,e){if(t){var i=this;for(var n in t)!t.hasOwnProperty(n)||!e&&i.hasOwnProperty(n)||(i[n]=t[n])}},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,o){for(var a="radial"===e.type?n:i,r=a(t,e,o),s=e.colorStops,l=0;l<s.length;l++)r.addColorStop(s[l].offset,s[l].color);return r}};for(var r=a.prototype,s=0;s<o.length;s++){var l=o[s];l[0]in r||(r[l[0]]=l[1])}a.getGradient=r.getGradient,t.exports=a},function(t,e,i){var n=i(170),o=i(169);t.exports={buildPath:function(t,e,i){var a=e.points,r=e.smooth;if(a&&a.length>=2){if(r&&"spline"!==r){var s=o(a,r,i,e.smoothConstraint);t.moveTo(a[0][0],a[0][1]);for(var l=a.length,u=0;u<(i?l:l-1);u++){var h=s[2*u],c=s[2*u+1],d=a[(u+1)%l];t.bezierCurveTo(h[0],h[1],c[0],c[1],d[0],d[1])}}else{"spline"===r&&(a=n(a,i)),t.moveTo(a[0][0],a[0][1]);for(var u=1,f=a.length;u<f;u++)t.lineTo(a[u][0],a[u][1])}i&&t.closePath()}}}},function(t,e,i){"use strict";function n(){}function o(t,e,i,n){a(f(i).lastProp,n)||(f(i).lastProp=n,e?d.updateProps(i,n,t):(i.stopAnimation(),i.attr(n)))}function a(t,e){if(h.isObject(t)&&h.isObject(e)){var i=!0;return h.each(e,function(e,n){i&=a(t[n],e)}),!!i}return t===e}function r(t,e){t[e.get("label.show")?"show":"hide"]()}function s(t){return{position:t.position.slice(),rotation:t.rotation||0}}function l(t,e){var i=t.get("icon"),n={x:-1,y:-1,width:2,height:2},o=h.extend({style:{strokeNoScale:!0},rectHover:!0,cursor:"move",draggable:!0},e);return 0===i.indexOf("image://")?(n.image=i.slice(8),o.style=n,new d.Image(o)):d.makePath(i.replace("path://",""),o,n,"center")}function u(t,e,i){var n=e.get("z"),o=e.get("zlevel");t&&t.traverse(function(t){"group"!==t.type&&(null!=n&&(t.z=n),null!=o&&(t.zlevel=o),t.silent=i)})}var h=i(1),c=i(15),d=i(3),f=i(5).makeGetter(),p=i(32),g=i(20),m=i(39),v=h.clone,y=h.bind;n.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"),r=e.get("status");if(this._axisModel=t,this._axisPointerModel=e,this._api=i,n||this._lastValue!==a||this._lastStatus!==r){this._lastValue=a,this._lastStatus=r;var s=this._group,l=this._handle;if(!r||"hide"===r)return s&&s.hide(),void(l&&l.hide());s&&s.show(),l&&l.show();var c={};this.makeElOption(c,a,t,e,i);var f=c.graphicKey;f!==this._lastGraphicKey&&this.clear(i),this._lastGraphicKey=f;var p=this._moveAnimation=this.determineAnimation(t,e);if(s){var g=h.curry(o,e,p);this.updatePointerEl(s,c,g,e),this.updateLabelEl(s,c,g,e)}else s=this._group=new d.Group,this.createPointerEl(s,c,t,e),this.createLabelEl(s,c,t,e),i.getZr().add(s);u(s,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,o="category"===n.type,a=e.get("snap");if(!a&&!o)return!1;if("auto"===i||null==i){var r=this.animationThreshold;if(o&&n.getBandWidth()>r)return!0;if(a){var s=p.getAxisInfo(t).seriesDataCount,l=n.getExtent();return Math.abs(l[0]-l[1])/s>r}return!1}return i===!0},makeElOption:function(t,e,i,n,o){},createPointerEl:function(t,e,i,n){var o=e.pointer,a=f(t).pointerEl=new d[o.type](v(e.pointer));t.add(a)},createLabelEl:function(t,e,i,n){var o=f(t).labelEl=new d.Rect(v(e.label));t.add(o),r(o,n)},updatePointerEl:function(t,e,i){var n=f(t).pointerEl;n&&(n.setStyle(e.pointer.style),i(n,{shape:e.pointer.shape}))},updateLabelEl:function(t,e,i,n){var o=f(t).labelEl;o&&(o.setStyle(e.label.style),i(o,{shape:e.label.shape,position:e.label.position}),r(o,n))},_renderHandle:function(t){if(!this._dragging&&this.updateHandleTransform){var e=this._axisPointerModel,i=this._api.getZr(),n=this._handle,o=e.getModel("handle"),a=e.get("status");if(!o.get("show")||!a||"hide"===a)return n&&i.remove(n),void(this._handle=null);var r;this._handle||(r=!0,n=this._handle=l(o,{onmousemove:function(t){g.stop(t.event)},onmousedown:y(this._onHandleDragMove,this,0,0),drift:y(this._onHandleDragMove,this),ondragend:y(this._onHandleDragEnd,this)}),i.add(n)),u(n,e,!1);var s=["color","borderColor","borderWidth","opacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY"];n.setStyle(o.getItemStyle(null,s));var c=o.get("size");h.isArray(c)||(c=[c,c]),n.attr("scale",[c[0]/2,c[1]/2]),m.createOrUpdate(this,"_doDispatchAxisPointer",o.get("throttle")||0,"fixRate"),this._moveHandleToValue(t,r)}},_moveHandleToValue:function(t,e){o(this._axisPointerModel,!e&&this._moveAnimation,this._handle,s(this.getHandleTransform(t,this._axisModel,this._axisPointerModel)))},_onHandleDragMove:function(t,e){var i=this._handle;if(i){this._dragging=!0;var n=this.updateHandleTransform(s(i),[t,e],this._axisModel,this._axisPointerModel);this._payloadInfo=n,i.stopAnimation(),i.attr(s(n)),f(i).lastProp=null,this._doDispatchAxisPointer()}},_doDispatchAxisPointer:function(){var t=this._handle;if(t){var e=this._payloadInfo,i={type:"updateAxisPointer",x:e.cursorPoint[0],y:e.cursorPoint[1],tooltipOption:e.tooltipOption,highDownKey:"axisPointerHandle"},n=this._axisModel.axis;i[n.dim+"AxisId"]=this._axisModel.id,this._api.dispatchAction(i)}},_onHandleDragEnd:function(t){this._dragging=!1;var e=this._handle;if(e){var i=this._axisPointerModel.get("value");this._moveHandleToValue(i),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 i=i||0,{x:t[i],y:t[1-i],width:e[i],height:e[1-i]}}},n.prototype.constructor=n,c.enableClassExtend(n),t.exports=n},function(t,e,i){var n=i(1),o=i(5);t.exports=function(t,e){var i,a=[],r=t.seriesIndex;if(null==r||!(i=e.getSeriesByIndex(r)))return{point:[]};var s=i.getData(),l=o.queryDataIndex(s,t);if(null==l||n.isArray(l))return{point:[]};var u=s.getItemGraphicEl(l),h=i.coordinateSystem;if(i.getTooltipPosition)a=i.getTooltipPosition(l)||[];else if(h&&h.dataToPoint)a=h.dataToPoint(s.getValues(n.map(h.dimensions,function(t){return i.coordDimToDataDim(t)[0]}),l,!0))||[];else if(u){var c=u.getBoundingRect().clone();c.applyTransform(u.transform),a=[c.x+c.width/2,c.y+c.height/2]}return{point:a,el:u}}},function(t,e,i){function n(t,e){function i(i,n){t.on(i,function(i){var a=s(e);c(h(t).records,function(t){t&&n(t,i,a.dispatchAction)}),o(a.pendings,e)})}h(t).initialized||(h(t).initialized=!0,i("click",u.curry(r,"click")),i("mousemove",u.curry(r,"mousemove")),i("globalout",a))}function o(t,e){var i,n=t.showTip.length,o=t.hideTip.length;n?i=t.showTip[n-1]:o&&(i=t.hideTip[o-1]),i&&(i.dispatchAction=null,e.dispatchAction(i))}function a(t,e,i){t.handler("leave",null,i)}function r(t,e,i,n){e.handler(t,i,n)}function s(t){var e={showTip:[],hideTip:[]},i=function(n){var o=e[n.type];o?o.push(n):(n.dispatchAction=i,t.dispatchAction(n))};return{dispatchAction:i,pendings:e}}var l=i(9),u=i(1),h=i(5).makeGetter(),c=u.each,d={};d.register=function(t,e,i){if(!l.node){var o=e.getZr();h(o).records||(h(o).records={}),n(o,e);var a=h(o).records[t]||(h(o).records[t]={});a.handler=i}},d.unregister=function(t,e){if(!l.node){var i=e.getZr(),n=(h(i).records||{})[t];n&&(h(i).records[t]=null)}},t.exports=d},function(t,e,i){var n=i(7),o=i(1),a={},r=["x","y","z","radius","angle","single"],s=["cartesian2d","polar","singleAxis"];a.isCoordSupported=function(t){return o.indexOf(s,t)>=0},a.createNameEach=function(t,e){t=t.slice();var i=o.map(t,n.capitalFirst);e=(e||[]).slice();var a=o.map(e,n.capitalFirst);return function(n,r){o.each(t,function(t,o){for(var s={name:t,capital:i[o]},l=0;l<e.length;l++)s[e[l]]=t+a[l];n.call(r,s)})}},a.eachAxisDim=a.createNameEach(r,["axisIndex","axis","index","id"]),a.createLinkedNodesFinder=function(t,e,i){function n(t,e){return o.indexOf(e.nodes,t)>=0}function a(t,n){var a=!1;return e(function(e){o.each(i(t,e)||[],function(t){n.records[e.name][t]&&(a=!0)})}),a}function r(t,n){n.nodes.push(t),e(function(e){o.each(i(t,e)||[],function(t){n.records[e.name][t]=!0})})}return function(i){function o(t){!n(t,s)&&a(t,s)&&(r(t,s),l=!0)}var s={nodes:[],records:{}};if(e(function(t){s.records[t.name]={}}),!i)return s;r(i,s);var l;do l=!1,t(o);while(l);return s}},t.exports=a},function(t,e,i){var n=i(1);t.exports={updateSelectedMap:function(t){this._selectTargetMap=n.reduce(t||[],function(t,e){return t[e.name]=e,t},{})},select:function(t){var e=this._selectTargetMap,i=e[t],o=this.get("selectedMode");"single"===o&&n.each(e,function(t){t.selected=!1}),i&&(i.selected=!0)},unSelect:function(t){var e=this._selectTargetMap[t];e&&(e.selected=!1)},toggleSelected:function(t){var e=this._selectTargetMap[t];if(null!=e)return this[e.selected?"unSelect":"select"](t),e.selected},isSelected:function(t){var e=this._selectTargetMap[t];return e&&e.selected}}},function(t,e,i){function n(t){o.defaultEmphasis(t.label,o.LABEL_OPTIONS)}var o=i(5),a=i(1),r=i(9),s=i(7),l=s.addCommas,u=s.encodeHTML,h=i(2).extendComponentModel({type:"marker",dependencies:["series","grid","polar","geo"],init:function(t,e,i,n){this.mergeDefaultAndTheme(t,i),this.mergeOption(t,i,n.createdBySelf,!0)},isAnimationEnabled:function(){if(r.node)return!1;var t=this.__hostSeries;return this.getShallow("animation")&&t&&t.isAnimationEnabled()},mergeOption:function(t,e,i,o){var r=this.constructor,s=this.mainType+"Model";i||e.eachSeries(function(t){var i=t.get(this.mainType),l=t[s];return i&&i.data?(l?l.mergeOption(i,e,!0):(o&&n(i),a.each(i.data,function(t){t instanceof Array?(n(t[0]),n(t[1])):n(t)}),l=new r(i,this,e),a.extend(l,{mainType:this.mainType,seriesIndex:t.seriesIndex,name:t.name,createdBySelf:!0}),l.__hostSeries=t),void(t[s]=l)):void(t[s]=null)},this)},formatTooltip:function(t){var e=this.getData(),i=this.getRawValue(t),n=a.isArray(i)?a.map(i,l).join(", "):l(i),o=e.getName(t),r=u(this.name);return(null!=i||o)&&(r+="<br />"),o&&(r+=u(o),null!=i&&(r+=" : ")),null!=i&&(r+=u(n)),r},getData:function(){return this._data},setData:function(t){this._data=t}});a.mixin(h,o.dataFormatMixin),t.exports=h},function(t,e,i){t.exports=i(2).extendComponentView({type:"marker",init:function(){this.markerGroupMap={}},render:function(t,e,i){var n=this.markerGroupMap;for(var o in n)n.hasOwnProperty(o)&&(n[o].__keep=!1);var a=this.type+"Model";e.eachSeries(function(t){var n=t[a];n&&this.renderSeries(t,n,e,i)},this);for(var o in n)n.hasOwnProperty(o)&&!n[o].__keep&&this.group.remove(n[o].group)},renderSeries:function(){}})},function(t,e,i){function n(t){return!(isNaN(parseFloat(t.x))&&isNaN(parseFloat(t.y)))}function o(t){return!isNaN(parseFloat(t.x))&&!isNaN(parseFloat(t.y))}function a(t,e,i){var n=-1;do n=Math.max(l.getPrecision(t.get(e,i)),n),t=t.stackedOn;while(t);return n}function r(t,e,i,n,o,r){var s=[],l=m(e,n,t),u=e.indexOfNearest(n,l,!0)[0];s[o]=e.get(i,u,!0),s[r]=e.get(n,u,!0);var h=a(e,n,u);return h>=0&&(s[r]=+s[r].toFixed(h)),s}var s=i(1),l=i(4),u=s.indexOf,h=s.curry,c={min:h(r,"min"),max:h(r,"max"),average:h(r,"average")},d=function(t,e){var i=t.getData(),n=t.coordinateSystem;if(e&&!o(e)&&!s.isArray(e.coord)&&n){var a=n.dimensions,r=f(e,i,n,t);if(e=s.clone(e),e.type&&c[e.type]&&r.baseAxis&&r.valueAxis){var l=u(a,r.baseAxis.dim),h=u(a,r.valueAxis.dim);e.coord=c[e.type](i,r.baseDataDim,r.valueDataDim,l,h),e.value=e.coord[h]}else{for(var d=[null!=e.xAxis?e.xAxis:e.radiusAxis,null!=e.yAxis?e.yAxis:e.angleAxis],p=0;p<2;p++)if(c[d[p]]){var g=t.coordDimToDataDim(a[p])[0];d[p]=m(i,g,d[p])}e.coord=d}}return e},f=function(t,e,i,n){var o={};return null!=t.valueIndex||null!=t.valueDim?(o.valueDataDim=null!=t.valueIndex?e.getDimension(t.valueIndex):t.valueDim,o.valueAxis=i.getAxis(n.dataDimToCoordDim(o.valueDataDim)),o.baseAxis=i.getOtherAxis(o.valueAxis),o.baseDataDim=n.coordDimToDataDim(o.baseAxis.dim)[0]):(o.baseAxis=n.getBaseAxis(),o.valueAxis=i.getOtherAxis(o.baseAxis),o.baseDataDim=n.coordDimToDataDim(o.baseAxis.dim)[0],o.valueDataDim=n.coordDimToDataDim(o.valueAxis.dim)[0]),o},p=function(t,e){return!(t&&t.containData&&e.coord&&!n(e))||t.containData(e.coord)},g=function(t,e,i,n){return n<2?t.coord&&t.coord[n]:t.value},m=function(t,e,i){if("average"===i){var n=0,o=0;return t.each(e,function(t,e){isNaN(t)||(n+=t,o++)},!0),n/o}return t.getDataExtent(e,!0)["max"===i?1:0]};t.exports={dataTransform:d,dataFilter:p,dimValueGetter:g,getAxisInfo:f,numCalculate:m}},function(t,e,i){function n(t){var e=t.pieceList;t.hasSpecialVisual=!1,g.each(e,function(e,i){e.originIndex=i,null!=e.visual&&(t.hasSpecialVisual=!0)})}function o(t){var e=t.categories,i=t.visual,n=t.categoryMap={};if(y(e,function(t,e){n[t]=e}),!g.isArray(i)){var o=[];g.isObject(i)?y(i,function(t,e){var i=n[e];o[null!=i?i:_]=t}):o[_]=i,i=f(t,o)}for(var a=e.length-1;a>=0;a--)null==i[a]&&(delete n[e[a]],e.pop())}function a(t,e){var i=t.visual,n=[];g.isObject(i)?y(i,function(t){n.push(t)}):null!=i&&n.push(i);var o={color:1,symbol:1};e||1!==n.length||o.hasOwnProperty(t.type)||(n[1]=n[0]),f(t,n)}function r(t){return{applyVisual:function(e,i,n){e=this.mapValueToVisual(e),n("color",t(i("color"),e))},_doMap:c([0,1])}}function s(t){var e=this.option.visual;return e[Math.round(v(t,[0,1],[0,e.length-1],!0))]||{}}function l(t){return function(e,i,n){n(t,this.mapValueToVisual(e))}}function u(t){var e=this.option.visual;return e[this.option.loop&&t!==_?t%e.length:t]}function h(){return this.option.visual[0]}function c(t){return{linear:function(e){return v(e,t,this.option.visual,!0)},category:u,piecewise:function(e,i){var n=d.call(this,i);return null==n&&(n=v(e,t,this.option.visual,!0)),n},fixed:h}}function d(t){var e=this.option,i=e.pieceList;if(e.hasSpecialVisual){var n=b.findPieceIndex(t,i),o=i[n];if(o&&o.visual)return o.visual[this.type]}}function f(t,e){return t.visual=e,"color"===t.type&&(t.parsedVisual=g.map(e,function(t){return m.parse(t)})),e}function p(t,e,i){return t?e<=i:e<i}var g=i(1),m=i(22),v=i(4).linearMap,y=g.each,x=g.isObject,_=-1,b=function(t){var e=t.mappingMethod,i=t.type,r=this.option=g.clone(t);this.type=i,this.mappingMethod=e,this._normalizeData=S[e];var s=w[i];this.applyVisual=s.applyVisual,this.getColorMapper=s.getColorMapper,this._doMap=s._doMap[e],"piecewise"===e?(a(r),n(r)):"category"===e?r.categories?o(r):a(r,!0):(g.assert("linear"!==e||r.dataExtent),a(r))};b.prototype={constructor:b,mapValueToVisual:function(t){var e=this._normalizeData(t);return this._doMap(e,t)},getNormalizer:function(){return g.bind(this._normalizeData,this)}};var w=b.visualHandlers={color:{applyVisual:l("color"),getColorMapper:function(){var t=this.option;return g.bind("category"===t.mappingMethod?function(t,e){return!e&&(t=this._normalizeData(t)),u.call(this,t)}:function(e,i,n){var o=!!n;return!i&&(e=this._normalizeData(e)),n=m.fastMapToColor(e,t.parsedVisual,n),o?n:m.stringify(n,"rgba")},this)},_doMap:{linear:function(t){return m.stringify(m.fastMapToColor(t,this.option.parsedVisual),"rgba")},category:u,piecewise:function(t,e){var i=d.call(this,e);return null==i&&(i=m.stringify(m.fastMapToColor(t,this.option.parsedVisual),"rgba")),i},fixed:h}},colorHue:r(function(t,e){return m.modifyHSL(t,e)}),colorSaturation:r(function(t,e){return m.modifyHSL(t,null,e)}),colorLightness:r(function(t,e){return m.modifyHSL(t,null,null,e)}),colorAlpha:r(function(t,e){return m.modifyAlpha(t,e)}),opacity:{applyVisual:l("opacity"),_doMap:c([0,1])},symbol:{applyVisual:function(t,e,i){var n=this.mapValueToVisual(t);if(g.isString(n))i("symbol",n);else if(x(n))for(var o in n)n.hasOwnProperty(o)&&i(o,n[o])},_doMap:{linear:s,category:u,piecewise:function(t,e){var i=d.call(this,e);return null==i&&(i=s.call(this,t)),i},fixed:h}},symbolSize:{applyVisual:l("symbolSize"),_doMap:c([0,1])}},S={linear:function(t){return v(t,this.option.dataExtent,[0,1],!0)},piecewise:function(t){var e=this.option.pieceList,i=b.findPieceIndex(t,e,!0);if(null!=i)return v(i,[0,e.length-1],[0,1],!0)},category:function(t){var e=this.option.categories?this.option.categoryMap[t]:t;return null==e?_:e},fixed:g.noop};b.listVisualTypes=function(){var t=[];return g.each(w,function(e,i){t.push(i)}),t},b.addVisualHandler=function(t,e){w[t]=e},b.isValidType=function(t){return w.hasOwnProperty(t)},b.eachVisual=function(t,e,i){g.isObject(t)?g.each(t,e,i):e.call(i,t)},b.mapVisual=function(t,e,i){var n,o=g.isArray(t)?[]:g.isObject(t)?{}:(n=!0,null);return b.eachVisual(t,function(t,a){var r=e.call(i,t,a);n?o=r:o[a]=r}),o},b.retrieveVisuals=function(t){var e,i={};return t&&y(w,function(n,o){t.hasOwnProperty(o)&&(i[o]=t[o],e=!0)}),e?i:null},b.prepareVisualTypes=function(t){if(x(t)){var e=[];y(t,function(t,i){e.push(i)}),t=e}else{if(!g.isArray(t))return[];t=t.slice()}return t.sort(function(t,e){return"color"===e&&"color"!==t&&0===t.indexOf("color")?1:-1}),t},b.dependsOn=function(t,e){return"color"===e?!(!t||0!==t.indexOf(e)):t===e},b.findPieceIndex=function(t,e,i){function n(e,i){var n=Math.abs(e-t);n<a&&(a=n,o=i)}for(var o,a=1/0,r=0,s=e.length;r<s;r++){var l=e[r].value;if(null!=l){if(l===t||"string"==typeof l&&l===t+"")return r;i&&n(l,r)}}for(var r=0,s=e.length;r<s;r++){var u=e[r],h=u.interval,c=u.close;if(h){if(h[0]===-(1/0)){if(p(c[1],t,h[1]))return r}else if(h[1]===1/0){if(p(c[0],h[0],t))return r}else if(p(c[0],h[0],t)&&p(c[1],t,h[1]))return r;i&&n(h[0],r),i&&n(h[1],r)}}if(i)return t===1/0?e.length-1:t===-(1/0)?0:o},t.exports=b},function(t,e){t.exports=function(t,e){var i={};e.eachRawSeriesByType(t,function(t){var n=t.getRawData(),o={};if(!e.isSeriesFiltered(t)){var a=t.getData();a.each(function(t){var e=a.getRawIndex(t);o[e]=t}),n.each(function(e){var r=o[e],s=null!=r&&a.getItemVisual(r,"color",!0);if(s)n.setItemVisual(e,"color",s);else{var l=n.getItemModel(e),u=l.get("itemStyle.normal.color")||t.getColorFromPalette(n.getName(e),i);n.setItemVisual(e,"color",u),null!=r&&a.setItemVisual(r,"color",u)}})}})}},function(t,e,i){var n=i(6),o=i(21),a={},r=Math.min,s=Math.max,l=Math.sin,u=Math.cos,h=n.create(),c=n.create(),d=n.create(),f=2*Math.PI;a.fromPoints=function(t,e,i){if(0!==t.length){var n,o=t[0],a=o[0],l=o[0],u=o[1],h=o[1];for(n=1;n<t.length;n++)o=t[n],a=r(a,o[0]),l=s(l,o[0]),u=r(u,o[1]),h=s(h,o[1]);e[0]=a,e[1]=u,i[0]=l,i[1]=h}},a.fromLine=function(t,e,i,n,o,a){o[0]=r(t,i),o[1]=r(e,n),a[0]=s(t,i),a[1]=s(e,n)};var p=[],g=[];a.fromCubic=function(t,e,i,n,a,l,u,h,c,d){var f,m=o.cubicExtrema,v=o.cubicAt,y=m(t,i,a,u,p);for(c[0]=1/0,c[1]=1/0,d[0]=-(1/0),d[1]=-(1/0),f=0;f<y;f++){var x=v(t,i,a,u,p[f]);c[0]=r(x,c[0]),d[0]=s(x,d[0])}for(y=m(e,n,l,h,g),f=0;f<y;f++){var _=v(e,n,l,h,g[f]);c[1]=r(_,c[1]),d[1]=s(_,d[1])}c[0]=r(t,c[0]),d[0]=s(t,d[0]),c[0]=r(u,c[0]),d[0]=s(u,d[0]),c[1]=r(e,c[1]),d[1]=s(e,d[1]),c[1]=r(h,c[1]),d[1]=s(h,d[1])},a.fromQuadratic=function(t,e,i,n,a,l,u,h){var c=o.quadraticExtremum,d=o.quadraticAt,f=s(r(c(t,i,a),1),0),p=s(r(c(e,n,l),1),0),g=d(t,i,a,f),m=d(e,n,l,p);u[0]=r(t,a,g),u[1]=r(e,l,m),h[0]=s(t,a,g),h[1]=s(e,l,m)},a.fromArc=function(t,e,i,o,a,r,s,p,g){var m=n.min,v=n.max,y=Math.abs(a-r);if(y%f<1e-4&&y>1e-4)return p[0]=t-i,p[1]=e-o,g[0]=t+i,void(g[1]=e+o);if(h[0]=u(a)*i+t,h[1]=l(a)*o+e,c[0]=u(r)*i+t,c[1]=l(r)*o+e,m(p,h,c),v(g,h,c),a%=f,a<0&&(a+=f),r%=f,r<0&&(r+=f),a>r&&!s?r+=f:a<r&&s&&(a+=f),s){var x=r;r=a,a=x}for(var _=0;_<r;_+=Math.PI/2)_>a&&(d[0]=u(_)*i+t,d[1]=l(_)*o+e,m(p,d,p),v(g,d,g))},t.exports=a},function(t,e,i){var n=i(40),o=i(1),a=i(16),r=function(t){n.call(this,t)};r.prototype={constructor:r,type:"text",brush:function(t,e){var i=this.style,n=i.x||0,o=i.y||0,r=i.text;if(null!=r&&(r+=""),i.bind(t,this,e),r){this.setTransform(t);var s,l=i.textAlign,u=i.textFont||i.font;if(i.textVerticalAlign){var h=a.getBoundingRect(r,u,i.textAlign,"top");switch(s="middle",i.textVerticalAlign){case"middle":o-=h.height/2-h.lineHeight/2;break;case"bottom":o-=h.height-h.lineHeight/2;break;default:o+=h.lineHeight/2}}else s=i.textBaseline;t.font=u||"12px sans-serif",t.textAlign=l||"left",t.textAlign!==l&&(t.textAlign="left"),t.textBaseline=s||"alphabetic",t.textBaseline!==s&&(t.textBaseline="alphabetic");for(var c=a.measureText("国",t.font).width,d=r.split("\n"),f=0;f<d.length;f++)i.hasStroke()&&t.strokeText(d[f],n,o),i.hasFill()&&t.fillText(d[f],n,o),o+=c;this.restoreTransform(t)}},getBoundingRect:function(){var t=this.style;if(!this._rect){var e=t.textVerticalAlign,i=a.getBoundingRect(t.text+"",t.textFont||t.font,t.textAlign,e?"top":t.textBaseline);switch(e){case"middle":i.y-=i.height/2;break;case"bottom":i.y-=i.height}if(i.x+=t.x||0,i.y+=t.y||0,t.hasStroke()){var n=t.lineWidth;i.x-=n/2,i.y-=n/2,i.width+=n,i.height+=n}this._rect=i}return this._rect}},o.inherits(r,n),t.exports=r},function(t,e,i){function n(t,e){return"string"==typeof t?t.lastIndexOf("%")>=0?parseFloat(t)/100*e:parseFloat(t):t}var o=i(16),a=i(11),r=new a,s=function(){};s.prototype={constructor:s,drawRectText:function(t,e,i){var a=this.style,s=a.text;if(null!=s&&(s+=""),s){t.save();var l,u,h=a.textPosition,c=a.textOffset,d=a.textDistance,f=a.textAlign,p=a.textFont||a.font,g=a.textBaseline,m=a.textVerticalAlign;i=i||o.getBoundingRect(s,p,f,g);var v=this.transform;if(a.textTransform?this.setTransform(t):v&&(r.copy(e),r.applyTransform(v),e=r),h instanceof Array){if(l=e.x+n(h[0],e.width),u=e.y+n(h[1],e.height),f=f||"left",g=g||"top",m){switch(m){case"middle":u-=i.height/2-i.lineHeight/2;break;case"bottom":u-=i.height-i.lineHeight/2;break;default:u+=i.lineHeight/2}g="middle"}}else{var y=o.adjustTextPositionOnRect(h,e,i,d);l=y.x,u=y.y,f=f||y.textAlign,g=g||y.textBaseline}c&&(l+=c[0],u+=c[1]),t.textAlign=f||"left",t.textBaseline=g||"alphabetic";var x=a.textFill,_=a.textStroke;x&&(t.fillStyle=x),_&&(t.strokeStyle=_),t.font=p||"12px sans-serif",t.shadowBlur=a.textShadowBlur,t.shadowColor=a.textShadowColor||"transparent",t.shadowOffsetX=a.textShadowOffsetX,t.shadowOffsetY=a.textShadowOffsetY;var b=s.split("\n");a.textRotation&&(v&&t.translate(v[4],v[5]),t.rotate(a.textRotation),v&&t.translate(-v[4],-v[5]));for(var w=0;w<b.length;w++)_&&t.strokeText(b[w],l,u),x&&t.fillText(b[w],l,u),u+=i.lineHeight;
+t.restore()}}},t.exports=s},function(t,e,i){function n(t){delete f[t]}/*!
 	 * ZRender, a high performance 2d drawing library.
 	 *
 	 * Copyright (c) 2013, Baidu Inc.
@@ -20,17 +21,17 @@
 	 * LICENSE
 	 * https://github.com/ecomfe/zrender/blob/master/LICENSE.txt
 	 */
-var o=i(64),r=i(10),a=i(1),s=i(140),l=i(143),u=i(144),h=i(152),c=!r.canvasSupported,d={canvas:i(142)},f={},p={};p.version="3.3.0",p.init=function(t,e){var i=new g(o(),t,e);return f[i.id]=i,i},p.dispose=function(t){if(t)t.dispose();else{for(var e in f)f.hasOwnProperty(e)&&f[e].dispose();f={}}return p},p.getInstance=function(t){return f[t]},p.registerPainter=function(t,e){d[t]=e};var g=function(t,e,i){i=i||{},this.dom=e,this.id=t;var n=this,o=new l,f=i.renderer;if(c){if(!d.vml)throw new Error("You need to require 'zrender/vml/vml' to support IE8");f="vml"}else f&&d[f]||(f="canvas");var p=new d[f](e,o,i);this.storage=o,this.painter=p;var g=r.node?null:new h(p.getViewportRoot());this.handler=new s(o,p,g,p.root),this.animation=new u({stage:{update:a.bind(this.flush,this)}}),this.animation.start(),this._needsRefresh;var m=o.delFromMap,v=o.addToMap;o.delFromMap=function(t){var e=o.get(t);m.call(o,t),e&&e.removeSelfFromZr(n)},o.addToMap=function(t){v.call(o,t),t.addSelfToZr(n)}};g.prototype={constructor:g,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(t,e),this._needsRefresh=!0},refreshImmediately:function(){this._needsRefresh=!1,this.painter.refresh(),this._needsRefresh=!1},refresh:function(){this._needsRefresh=!0},flush:function(){this._needsRefresh&&this.refreshImmediately(),this._needsRefreshHover&&this.refreshHoverImmediately()},addHover:function(t,e){this.painter.addHover&&(this.painter.addHover(t,e),this.refreshHover())},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,i){var n=o();return this.painter.pathToImage(n,t,e,i)},setCursorStyle:function(t){this.handler.setCursorStyle(t)},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,n(this.id)}},t.exports=p},function(t,e,i){var n=i(2),o=i(1);t.exports=function(t,e){o.each(e,function(e){e.update="updateView",n.registerAction(e,function(i,n){var o={};return n.eachComponent({mainType:"series",subType:t,query:i},function(t){t[e.method]&&t[e.method](i.name);var n=t.getData();n.each(function(e){var i=n.getName(e);o[i]=t.isSelected(i)||!1})}),{name:i.name,selected:o}})})}},function(t,e,i){"use strict";var n=i(16),o=i(35);t.exports=n.extend({type:"series.__base_bar__",getInitialData:function(t,e){return o(t.data,this,e)},getMarkerPosition:function(t){var e=this.coordinateSystem;if(e){var i=e.dataToPoint(t,!0),n=this.getData(),o=n.getLayout("offset"),r=n.getLayout("size"),a=e.getBaseAxis().isHorizontal()?0:1;return i[a]+=o+r/2,i}return[NaN,NaN]},defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,barMinHeight:0,itemStyle:{normal:{},emphasis:{}}}})},function(t,e,i){function n(t,e,i,n,o){r.setText(t,e,i),t.text=n,"outside"===t.textPosition&&(t.textPosition=o)}var o=i(1),r=i(3),a={};a.setLabel=function(t,e,i,r,a,s,l){var u=i.getModel("label.normal"),h=i.getModel("label.emphasis");u.get("show")?n(t,u,r,o.retrieve(a.getFormattedLabel(s,"normal"),a.getRawValue(s)),l):t.text="",h.get("show")?n(e,h,r,o.retrieve(a.getFormattedLabel(s,"emphasis"),a.getRawValue(s)),l):e.text=""},t.exports=a},function(t,e,i){function n(t){return isNaN(t[0])||isNaN(t[1])}function o(t,e,i,o,r,a,g,m,v,y,x){for(var _=0,b=i,w=0;w<o;w++){var S=e[b];if(b>=r||b<0)break;if(n(S)){if(x){b+=a;continue}break}if(b===i)t[a>0?"moveTo":"lineTo"](S[0],S[1]),c(f,S);else if(v>0){var M=b+a,I=e[M];if(x)for(;I&&n(e[M]);)M+=a,I=e[M];var T=.5,A=e[_],I=e[M];if(!I||n(I))c(p,S);else{n(I)&&!x&&(I=S),s.sub(d,I,A);var L,C;if("x"===y||"y"===y){var D="x"===y?0:1;L=Math.abs(S[D]-A[D]),C=Math.abs(S[D]-I[D])}else L=s.dist(S,A),C=s.dist(S,I);T=C/(C+L),h(p,S,d,-v*(1-T))}l(f,f,m),u(f,f,g),l(p,p,m),u(p,p,g),t.bezierCurveTo(f[0],f[1],p[0],p[1],S[0],S[1]),h(f,S,d,v*T)}else t.lineTo(S[0],S[1]);_=b,b+=a}return w}function r(t,e){var i=[1/0,1/0],n=[-(1/0),-(1/0)];if(e)for(var o=0;o<t.length;o++){var r=t[o];r[0]<i[0]&&(i[0]=r[0]),r[1]<i[1]&&(i[1]=r[1]),r[0]>n[0]&&(n[0]=r[0]),r[1]>n[1]&&(n[1]=r[1])}return{min:e?i:n,max:e?n:i}}var a=i(7),s=i(5),l=s.min,u=s.max,h=s.scaleAndAdd,c=s.copy,d=[],f=[],p=[];t.exports={Polyline:a.extend({type:"ec-polyline",shape:{points:[],smooth:0,smoothConstraint:!0,smoothMonotone:null,connectNulls:!1},style:{fill:null,stroke:"#000"},buildPath:function(t,e){var i=e.points,a=0,s=i.length,l=r(i,e.smoothConstraint);if(e.connectNulls){for(;s>0&&n(i[s-1]);s--);for(;a<s&&n(i[a]);a++);}for(;a<s;)a+=o(t,i,a,s,s,1,l.min,l.max,e.smooth,e.smoothMonotone,e.connectNulls)+1}}),Polygon:a.extend({type:"ec-polygon",shape:{points:[],stackedOnPoints:[],smooth:0,stackedOnSmooth:0,smoothConstraint:!0,smoothMonotone:null,connectNulls:!1},buildPath:function(t,e){var i=e.points,a=e.stackedOnPoints,s=0,l=i.length,u=e.smoothMonotone,h=r(i,e.smoothConstraint),c=r(a,e.smoothConstraint);if(e.connectNulls){for(;l>0&&n(i[l-1]);l--);for(;s<l&&n(i[s]);s++);}for(;s<l;){var d=o(t,i,s,l,l,1,h.min,h.max,e.smooth,u,e.connectNulls);o(t,a,s+d-1,d,l,-1,c.min,c.max,e.stackedOnSmooth,u,e.connectNulls),s+=d+1,t.closePath()}}})}},function(t,e,i){var n=i(1),o={retrieveTargetInfo:function(t,e){if(t&&("treemapZoomToNode"===t.type||"treemapRootToNode"===t.type)){var i=e.getData().tree.root,n=t.targetNode;if(n&&i.contains(n))return{node:n};var o=t.targetNodeId;if(null!=o&&(n=i.getNodeById(o)))return{node:n}}},getPathToRoot:function(t){for(var e=[];t;)t=t.parentNode,t&&e.push(t);return e.reverse()},aboveViewRoot:function(t,e){var i=o.getPathToRoot(t);return n.indexOf(i,e)>=0},wrapTreePathInfo:function(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}};t.exports=o},function(t,e,i){function n(t){if(!t.target||!t.target.draggable){var e=t.offsetX,i=t.offsetY;this.containsPoint&&this.containsPoint(e,i)&&(this._x=e,this._y=i,this._dragging=!0)}}function o(t){if(this._dragging&&(d.stop(t.event),"pinch"!==t.gestureEvent)){if(f.isTaken(this._zr,"globalPan"))return;var e=t.offsetX,i=t.offsetY,n=this._x,o=this._y,r=e-n,a=i-o;this._x=e,this._y=i;var s=this.target;if(s){var l=s.position;l[0]+=r,l[1]+=a,s.dirty()}d.stop(t.event),this.trigger("pan",r,a,n,o,e,i)}}function r(t){this._dragging=!1}function a(t){var e=t.wheelDelta>0?1.1:1/1.1;l.call(this,t,e,t.offsetX,t.offsetY)}function s(t){if(!f.isTaken(this._zr,"globalPan")){var e=t.pinchScale>1?1.1:1/1.1;l.call(this,t,e,t.pinchX,t.pinchY)}}function l(t,e,i,n){if(this.containsPoint&&this.containsPoint(i,n)){d.stop(t.event);var o=this.target,r=this.zoomLimit;if(o){var a=o.position,s=o.scale,l=this.zoom=this.zoom||1;if(l*=e,r){var u=r.min||0,h=r.max||1/0;l=Math.max(Math.min(h,l),u)}var c=l/this.zoom;this.zoom=l,a[0]-=(i-a[0])*(c-1),a[1]-=(n-a[1])*(c-1),s[0]*=c,s[1]*=c,o.dirty()}this.trigger("zoom",e,i,n)}}function u(t,e){this.target=e,this.containsPoint,this.zoomLimit,this.zoom,this._zr=t;var i=c.bind,l=i(n,this),u=i(o,this),d=i(r,this),f=i(a,this),p=i(s,this);h.call(this),this.setContainsPoint=function(t){this.containsPoint=t},this.enable=function(e){this.disable(),null==e&&(e=!0),e!==!0&&"move"!==e&&"pan"!==e||(t.on("mousedown",l),t.on("mousemove",u),t.on("mouseup",d)),e!==!0&&"scale"!==e&&"zoom"!==e||(t.on("mousewheel",f),t.on("pinch",p))},this.disable=function(){t.off("mousedown",l),t.off("mousemove",u),t.off("mouseup",d),t.off("mousewheel",f),t.off("pinch",p)},this.dispose=this.disable,this.isDragging=function(){return this._dragging},this.isPinching=function(){return this._pinching}}var h=i(21),c=i(1),d=i(25),f=i(117);c.mixin(u,h),t.exports=u},function(t,e){t.exports=function(t,e,i,n,o){function r(t,e,i){var n=e.length?e.slice():[e,e];return e[0]>e[1]&&n.reverse(),t<0&&n[0]+t<i[0]&&(t=i[0]-n[0]),t>0&&n[1]+t>i[1]&&(t=i[1]-n[1]),t}return t?("rigid"===n?(t=r(t,e,i),e[0]+=t,e[1]+=t):(t=r(t,e[o],i),e[o]+=t,"push"===n&&e[0]>e[1]&&(e[1-o]=e[o])),e):e}},function(t,e,i){var n=i(1),o={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},axisLine:{show:!0,onZero:!0,lineStyle:{color:"#333",width:1,type:"solid"}},axisTick:{show:!0,inside:!1,length:5,lineStyle:{width:1}},axisLabel:{show:!0,inside:!1,rotate:0,margin:8,textStyle:{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)"]}}},r=n.merge({boundaryGap:!0,splitLine:{show:!1},axisTick:{alignWithLabel:!1,interval:"auto"},axisLabel:{interval:"auto"}},o),a=n.merge({boundaryGap:[0,0],splitNumber:5},o),s=n.defaults({scale:!0,min:"dataMin",max:"dataMax"},a),l=n.defaults({logBase:10},a);l.scale=!0,t.exports={categoryAxis:r,valueAxis:a,timeAxis:s,logAxis:l}},function(t,e,i){"use strict";function n(t){return t.get("stack")||"__ec_stack_"+t.seriesIndex}function o(t){return t.dim+t.index}function r(t,e){var i={};s.each(t,function(t,e){var r=t.getData(),a=t.coordinateSystem,s=a.getBaseAxis(),l=s.getExtent(),h="category"===s.type?s.getBandWidth():Math.abs(l[1]-l[0])/r.count(),c=i[o(s)]||{bandWidth:h,remainedWidth:h,autoWidthCount:0,categoryGap:"20%",gap:"30%",stacks:{}},d=c.stacks;i[o(s)]=c;var f=n(t);d[f]||c.autoWidthCount++,d[f]=d[f]||{width:0,maxWidth:0};var p=u(t.get("barWidth"),h),g=u(t.get("barMaxWidth"),h),m=t.get("barGap"),v=t.get("barCategoryGap");p&&!d[f].width&&(p=Math.min(c.remainedWidth,p),d[f].width=p,c.remainedWidth-=p),g&&(d[f].maxWidth=g),null!=m&&(c.gap=m),null!=v&&(c.categoryGap=v)});var r={};return s.each(i,function(t,e){r[e]={};var i=t.stacks,n=t.bandWidth,o=u(t.categoryGap,n),a=u(t.gap,1),l=t.remainedWidth,h=t.autoWidthCount,c=(l-o)/(h+(h-1)*a);c=Math.max(c,0),s.each(i,function(t,e){var i=t.maxWidth;!t.width&&i&&i<c&&(i=Math.min(i,l),l-=i,t.width=i,h--)}),c=(l-o)/(h+(h-1)*a),c=Math.max(c,0);var d,f=0;s.each(i,function(t,e){t.width||(t.width=c),d=t,f+=t.width*(1+a)}),d&&(f-=d.width*a);var p=-f/2;s.each(i,function(t,i){r[e][i]=r[e][i]||{offset:p,width:t.width},p+=t.width*(1+a)})}),r}function a(t,e,i){var a=r(s.filter(e.getSeriesByType(t),function(t){return!e.isSeriesFiltered(t)&&t.coordinateSystem&&"cartesian2d"===t.coordinateSystem.type})),l={},u={};e.eachSeriesByType(t,function(t){var e=t.getData(),i=t.coordinateSystem,r=i.getBaseAxis(),s=n(t),h=a[o(r)][s],c=h.offset,d=h.width,f=i.getOtherAxis(r),p=t.get("barMinHeight")||0,g=r.onZero?f.toGlobalCoord(f.dataToCoord(0)):f.getGlobalExtent()[0],m=i.dataToPoints(e,!0);l[s]=l[s]||[],u[s]=u[s]||[],e.setLayout({offset:c,size:d}),e.each(f.dim,function(t,i){if(!isNaN(t)){l[s][i]||(l[s][i]={p:g,n:g},u[s][i]={p:g,n:g});var n,o,r,a,h=t>=0?"p":"n",v=m[i],y=l[s][i][h],x=u[s][i][h];f.isHorizontal()?(n=y,o=v[1]+c,r=v[0]-x,a=d,u[s][i][h]+=r,Math.abs(r)<p&&(r=(r<0?-1:1)*p),l[s][i][h]+=r):(n=v[0]+c,o=y,r=d,a=v[1]-x,u[s][i][h]+=a,Math.abs(a)<p&&(a=(a<=0?-1:1)*p),l[s][i][h]+=a),e.setItemLayout(i,{x:n,y:o,width:r,height:a})}},!0)},this)}var s=i(1),l=i(4),u=l.parsePercent;t.exports=a},function(t,e){t.exports={containStroke:function(t,e,i,n,o,r,a){if(0===o)return!1;var s=o,l=0,u=t;if(a>e+s&&a>n+s||a<e-s&&a<n-s||r>t+s&&r>i+s||r<t-s&&r<i-s)return!1;if(t===i)return Math.abs(r-t)<=s/2;l=(e-n)/(t-i),u=(t*n-i*e)/(t-i);var h=l*r-a+u,c=h*h/(l*l+1);return c<=s/2*s/2}}},function(t,e,i){var n=i(18);t.exports={containStroke:function(t,e,i,o,r,a,s,l,u){if(0===s)return!1;var h=s;if(u>e+h&&u>o+h&&u>a+h||u<e-h&&u<o-h&&u<a-h||l>t+h&&l>i+h&&l>r+h||l<t-h&&l<i-h&&l<r-h)return!1;var c=n.quadraticProjectPoint(t,e,i,o,r,a,l,u,null);return c<=h/2}}},function(t,e){t.exports=function(t,e,i,n,o,r){if(r>e&&r>n||r<e&&r<n)return 0;if(n===e)return 0;var a=n<e?1:-1,s=(r-e)/(n-e);1!==s&&0!==s||(a=n<e?.5:-.5);var l=s*(i-t)+t;return l>o?a:0}},function(t,e,i){"use strict";var n=i(1),o=i(37),r=function(t,e,i,n,r,a){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=a||!1,o.call(this,r)};r.prototype={constructor:r},n.inherits(r,o),t.exports=r},function(t,e,i){"use strict";function n(t){return t>s||t<-s}var o=i(20),r=i(5),a=o.identity,s=5e-5,l=function(t){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},u=l.prototype;u.transform=null,u.needLocalTransform=function(){return n(this.rotation)||n(this.position[0])||n(this.position[1])||n(this.scale[0]-1)||n(this.scale[1]-1)},u.updateTransform=function(){var t=this.parent,e=t&&t.transform,i=this.needLocalTransform(),n=this.transform;return i||e?(n=n||o.create(),i?this.getLocalTransform(n):a(n),e&&(i?o.mul(n,t.transform,n):o.copy(n,t.transform)),this.transform=n,this.invTransform=this.invTransform||o.create(),void o.invert(this.invTransform,n)):void(n&&a(n))},u.getLocalTransform=function(t){t=t||[],a(t);var e=this.origin,i=this.scale,n=this.rotation,r=this.position;return e&&(t[4]-=e[0],t[5]-=e[1]),o.scale(t,t,i),n&&o.rotate(t,t,n),e&&(t[4]+=e[0],t[5]+=e[1]),t[4]+=r[0],t[5]+=r[1],t},u.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)},u.restoreTransform=function(t){var e=(this.transform,t.dpr||1);t.setTransform(e,0,0,e,0,0)};var h=[];u.decomposeTransform=function(){if(this.transform){var t=this.parent,e=this.transform;t&&t.transform&&(o.mul(h,t.invTransform,e),e=h);var i=e[0]*e[0]+e[1]*e[1],r=e[2]*e[2]+e[3]*e[3],a=this.position,s=this.scale;n(i-1)&&(i=Math.sqrt(i)),n(r-1)&&(r=Math.sqrt(r)),e[0]<0&&(i=-i),e[3]<0&&(r=-r),a[0]=e[4],a[1]=e[5],s[0]=i,s[1]=r,this.rotation=Math.atan2(-e[1]/r,e[0]/i)}},u.getGlobalScale=function(){var t=this.transform;if(!t)return[1,1];var e=Math.sqrt(t[0]*t[0]+t[1]*t[1]),i=Math.sqrt(t[2]*t[2]+t[3]*t[3]);return t[0]<0&&(e=-e),t[3]<0&&(i=-i),[e,i]},u.transformCoordToLocal=function(t,e){var i=[t,e],n=this.invTransform;return n&&r.applyTransform(i,i,n),i},u.transformCoordToGlobal=function(t,e){var i=[t,e],n=this.transform;return n&&r.applyTransform(i,i,n),i},t.exports=l},function(t,e,i){"use strict";function n(t){o.each(r,function(e){this[e]=o.bind(t[e],t)},this)}var o=i(1),r=["getDom","getZr","getWidth","getHeight","dispatchAction","isDisposed","on","off","getDataURL","getConnectedDataURL","getModel","getOption"];t.exports=n},function(t,e,i){var n=i(1);i(53),i(95),i(96);var o=i(87),r=i(2);r.registerLayout(n.curry(o,"bar")),r.registerVisual(function(t){t.eachSeriesByType("bar",function(t){var e=t.getData();e.setVisual("legendSymbol","roundRect")})}),i(31)},function(t,e,i){t.exports=i(80).extend({type:"series.bar",dependencies:["grid","polar"],brushSelector:"rect"})},function(t,e,i){"use strict";function n(t,e,i,n,o,r,a){var s=new u.Rect({shape:l.extend({},n)});if(r){var h=s.shape,c=o?"height":"width",d={};h[c]=0,d[c]=n[c],u[a?"updateProps":"initProps"](s,{shape:d},r,e)}return s}function o(t,e,i){i.style.text="",u.updateProps(i,{shape:{width:0}},e,t,function(){i.parent&&i.parent.remove(i)})}function r(t,e,i){var n=t.getItemLayout(e),o=s(i,n),r=n.width>0?1:-1,a=n.height>0?1:-1;return{x:n.x+r*o/2,y:n.y+a*o/2,width:n.width-r*o,height:n.height-a*o}}function a(t,e,i,n,o,r,a){var s=e.getItemVisual(i,"color"),c=e.getItemVisual(i,"opacity"),d=n.getModel("itemStyle.normal"),f=n.getModel("itemStyle.emphasis").getBarItemStyle();t.setShape("r",d.get("barBorderRadius")||0),t.useStyle(l.defaults({fill:s,opacity:c},d.getBarItemStyle()));var p=a?o.height>0?"bottom":"top":o.width>0?"left":"right";h.setLabel(t.style,f,n,s,r,i,p),u.setHoverStyle(t,f)}function s(t,e){var i=t.get(c)||0;return Math.min(i,Math.abs(e.width),Math.abs(e.height))}var l=i(1),u=i(3),h=i(81),c=["itemStyle","normal","barBorderWidth"];l.extend(i(11).prototype,i(97));var d=i(2).extendChartView({type:"bar",render:function(t,e,i){var n=t.get("coordinateSystem");return"cartesian2d"===n&&this._renderOnCartesian(t,e,i),this.group},dispose:l.noop,_renderOnCartesian:function(t,e,i){var s=this.group,l=t.getData(),h=this._data,c=t.coordinateSystem,d=c.getBaseAxis(),f=d.isHorizontal(),p=t.isAnimationEnabled()?t:null;l.diff(h).add(function(e){if(l.hasValue(e)){var i=l.getItemModel(e),o=r(l,e,i),u=n(l,e,i,o,f,p);l.setItemGraphicEl(e,u),s.add(u),a(u,l,e,i,o,t,f)}}).update(function(e,i){var o=h.getItemGraphicEl(i);if(!l.hasValue(e))return void s.remove(o);var c=l.getItemModel(e),d=r(l,e,c);o?u.updateProps(o,{shape:d},p,e):o=n(l,e,c,d,f,p,!0),l.setItemGraphicEl(e,o),s.add(o),a(o,l,e,c,d,t,f)}).remove(function(t){var e=h.getItemGraphicEl(t);e&&o(t,p,e)}).execute(),this._data=l},remove:function(t,e){var i=this.group,n=this._data;t.get("animation")?n&&n.eachItemGraphicEl(function(e){o(e.dataIndex,t,e)}):i.removeAll()}});t.exports=d},function(t,e,i){var n=i(30)([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["stroke","barBorderColor"],["lineWidth","barBorderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]);t.exports={getBarItemStyle:function(t){var e=n.call(this,t);if(this.getBorderLineDash){var i=this.getBorderLineDash();i&&(e.lineDash=i)}return e}}},function(t,e,i){function n(t){return"_"+t+"Type"}function o(t,e,i){var n=e.getItemVisual(i,"color"),o=e.getItemVisual(i,t),r=e.getItemVisual(i,t+"Size");if(o&&"none"!==o){f.isArray(r)||(r=[r,r]);var a=u.createSymbol(o,-r[0]/2,-r[1]/2,r[0],r[1],n);return a.name=t,a}}function r(t){var e=new c({name:"line"});return a(e.shape,t),e}function a(t,e){var i=e[0],n=e[1],o=e[2];t.x1=i[0],t.y1=i[1],t.x2=n[0],t.y2=n[1],t.percent=1,o?(t.cpx1=o[0],t.cpy1=o[1]):(t.cpx1=NaN,t.cpy1=NaN)}function s(){var t=this,e=t.childOfName("fromSymbol"),i=t.childOfName("toSymbol"),n=t.childOfName("label");if(e||i||!n.ignore){for(var o=1,r=this.parent;r;)r.scale&&(o/=r.scale[0]),r=r.parent;var a=t.childOfName("line");if(this.__dirty||a.__dirty){var s=a.shape.percent,l=a.pointAt(0),u=a.pointAt(s),c=h.sub([],u,l);if(h.normalize(c,c),e){e.attr("position",l);var d=a.tangentAt(0);e.attr("rotation",Math.PI/2-Math.atan2(d[1],d[0])),e.attr("scale",[o*s,o*s])}if(i){i.attr("position",u);var d=a.tangentAt(1);i.attr("rotation",-Math.PI/2-Math.atan2(d[1],d[0])),i.attr("scale",[o*s,o*s])}if(!n.ignore){n.attr("position",u);var f,p,g,m=5*o;if("end"===n.__position)f=[c[0]*m+u[0],c[1]*m+u[1]],p=c[0]>.8?"left":c[0]<-.8?"right":"center",g=c[1]>.8?"top":c[1]<-.8?"bottom":"middle";else if("middle"===n.__position){var v=s/2,d=a.tangentAt(v),y=[d[1],-d[0]],x=a.pointAt(v);y[1]>0&&(y[0]=-y[0],y[1]=-y[1]),f=[x[0]+y[0]*m,x[1]+y[1]*m],p="center",g="bottom";var _=-Math.atan2(d[1],d[0]);u[0]<l[0]&&(_=Math.PI+_),n.attr("rotation",_)}else f=[-c[0]*m+l[0],-c[1]*m+l[1]],p=c[0]>.8?"right":c[0]<-.8?"left":"center",g=c[1]>.8?"bottom":c[1]<-.8?"top":"middle";n.attr({style:{textVerticalAlign:n.__verticalAlign||g,textAlign:n.__textAlign||p},position:f,scale:[o,o]})}}}}function l(t,e,i){d.Group.call(this),this._createLine(t,e,i)}var u=i(24),h=i(5),c=i(177),d=i(3),f=i(1),p=i(4),g=["fromSymbol","toSymbol"],m=l.prototype;m.beforeUpdate=s,m._createLine=function(t,e,i){var a=t.hostModel,s=t.getItemLayout(e),l=r(s);l.shape.percent=0,d.initProps(l,{shape:{percent:1}},a,e),this.add(l);var u=new d.Text({name:"label"});this.add(u),f.each(g,function(i){var r=o(i,t,e);this.add(r),this[n(i)]=t.getItemVisual(e,i)},this),this._updateCommonStl(t,e,i)},m.updateData=function(t,e,i){var r=t.hostModel,s=this.childOfName("line"),l=t.getItemLayout(e),u={shape:{}};a(u.shape,l),d.updateProps(s,u,r,e),f.each(g,function(i){var r=t.getItemVisual(e,i),a=n(i);if(this[a]!==r){this.remove(this.childOfName(i));var s=o(i,t,e);this.add(s)}this[a]=r},this),this._updateCommonStl(t,e,i)},m._updateCommonStl=function(t,e,i){var n=t.hostModel,o=this.childOfName("line"),r=i&&i.lineStyle,a=i&&i.hoverLineStyle,s=i&&i.labelModel,l=i&&i.hoverLabelModel;if(!i||t.hasItemOption){var u=t.getItemModel(e);r=u.getModel("lineStyle.normal").getLineStyle(),a=u.getModel("lineStyle.emphasis").getLineStyle(),s=u.getModel("label.normal"),l=u.getModel("label.emphasis")}var h=t.getItemVisual(e,"color"),c=f.retrieve(t.getItemVisual(e,"opacity"),r.opacity,1);o.useStyle(f.defaults({strokeNoScale:!0,fill:"none",stroke:h,opacity:c},r)),o.hoverStyle=a,f.each(g,function(t){var e=this.childOfName(t);e&&(e.setColor(h),e.setStyle({opacity:c}))},this);var m,v,y=s.getShallow("show"),x=l.getShallow("show"),_=this.childOfName("label");if(y||x){var b=n.getRawValue(e);v=null==b?v=t.getName(e):isFinite(b)?p.round(b):b,m=h||"#000"}if(y){var w=s.getModel("textStyle");_.setStyle({text:f.retrieve(n.getFormattedLabel(e,"normal",t.dataType),v),textFont:w.getFont(),fill:w.getTextColor()||m}),_.__textAlign=w.get("align"),_.__verticalAlign=w.get("baseline"),_.__position=s.get("position")}else _.setStyle("text","");if(x){var S=l.getModel("textStyle");_.hoverStyle={text:f.retrieve(n.getFormattedLabel(e,"emphasis",t.dataType),v),textFont:S.getFont(),fill:S.getTextColor()||m}}else _.hoverStyle={text:""};_.ignore=!y&&!x,d.setHoverStyle(this)},m.updateLayout=function(t,e){this.setLinePoints(t.getItemLayout(e))},m.setLinePoints=function(t){var e=this.childOfName("line");a(e.shape,t),e.dirty()},f.inherits(l,d.Group),t.exports=l},function(t,e,i){function n(t){return isNaN(t[0])||isNaN(t[1])}function o(t){return!n(t[0])&&!n(t[1])}function r(t){this._ctor=t||s,this.group=new a.Group}var a=i(3),s=i(98),l=r.prototype;l.updateData=function(t){var e=this._lineData,i=this.group,n=this._ctor,r=t.hostModel,a={lineStyle:r.getModel("lineStyle.normal").getLineStyle(),hoverLineStyle:r.getModel("lineStyle.emphasis").getLineStyle(),labelModel:r.getModel("label.normal"),hoverLabelModel:r.getModel("label.emphasis")};t.diff(e).add(function(e){if(o(t.getItemLayout(e))){var r=new n(t,e,a);t.setItemGraphicEl(e,r),i.add(r)}}).update(function(r,s){var l=e.getItemGraphicEl(s);return o(t.getItemLayout(r))?(l?l.updateData(t,r,a):l=new n(t,r,a),t.setItemGraphicEl(r,l),void i.add(l)):void i.remove(l)}).remove(function(t){i.remove(e.getItemGraphicEl(t))}).execute(),this._lineData=t},l.updateLayout=function(){var t=this._lineData;t.eachItemGraphicEl(function(e,i){e.updateLayout(t,i)},this)},l.remove=function(){this.group.removeAll()},t.exports=r},function(t,e,i){var n=i(1),o=i(2),r=o.PRIORITY;i(101),i(102),o.registerVisual(n.curry(i(45),"line","circle","line")),o.registerLayout(n.curry(i(56),"line")),o.registerProcessor(r.PROCESSOR.STATISTIC,n.curry(i(135),"line")),i(31)},function(t,e,i){"use strict";var n=i(35),o=i(16);t.exports=o.extend({type:"series.line",dependencies:["grid","polar"],getInitialData:function(t,e){return n(t.data,this,e)},defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,hoverAnimation:!0,clipOverflow:!0,label:{normal:{position:"top"}},lineStyle:{normal:{width:2,type:"solid"}},step:!1,smooth:!1,smoothMonotone:null,symbol:"emptyCircle",symbolSize:4,symbolRotate:null,showSymbol:!0,showAllSymbol:!1,connectNulls:!1,sampling:"none",animationEasing:"linear",progressive:0,hoverLayerThreshold:1/0}})},function(t,e,i){"use strict";function n(t,e){if(t.length===e.length){for(var i=0;i<t.length;i++){var n=t[i],o=e[i];if(n[0]!==o[0]||n[1]!==o[1])return}return!0}}function o(t){return"number"==typeof t?t:t?.3:0}function r(t){var e=t.getGlobalExtent();if(t.onBand){var i=t.getBandWidth()/2-1,n=e[1]>e[0]?1:-1;e[0]+=n*i,e[1]-=n*i}return e}function a(t){return t>=0?1:-1}function s(t,e){var i=t.getBaseAxis(),n=t.getOtherAxis(i),o=i.onZero?0:n.scale.getExtent()[0],r=n.dim,s="x"===r||"radius"===r?1:0;return e.mapArray([r],function(n,l){for(var u,h=e.stackedOn;h&&a(h.get(r,l))===a(n);){u=h;break}var c=[];return c[s]=e.get(i.dim,l),c[1-s]=u?u.get(r,l,!0):o,t.dataToPoint(c)},!0)}function l(t,e,i){var n=r(t.getAxis("x")),o=r(t.getAxis("y")),a=t.getBaseAxis().isHorizontal(),s=Math.min(n[0],n[1]),l=Math.min(o[0],o[1]),u=Math.max(n[0],n[1])-s,h=Math.max(o[0],o[1])-l,c=i.get("lineStyle.normal.width")||2,d=i.get("clipOverflow")?c/2:Math.max(u,h);a?(l-=d,h+=2*d):(s-=d,u+=2*d);var f=new v.Rect({shape:{x:s,y:l,width:u,height:h}});return e&&(f.shape[a?"width":"height"]=0,v.initProps(f,{shape:{width:u,height:h}},i)),f}function u(t,e,i){var n=t.getAngleAxis(),o=t.getRadiusAxis(),r=o.getExtent(),a=n.getExtent(),s=Math.PI/180,l=new v.Sector({shape:{cx:t.cx,cy:t.cy,r0:r[0],r:r[1],startAngle:-a[0]*s,endAngle:-a[1]*s,clockwise:n.inverse}});return e&&(l.shape.endAngle=-a[0]*s,v.initProps(l,{shape:{endAngle:-a[1]*s}},i)),l}function h(t,e,i){return"polar"===t.type?u(t,e,i):l(t,e,i)}function c(t,e,i){for(var n=e.getBaseAxis(),o="x"===n.dim||"radius"===n.dim?0:1,r=[],a=0;a<t.length-1;a++){var s=t[a+1],l=t[a];r.push(l);var u=[];switch(i){case"end":u[o]=s[o],u[1-o]=l[1-o],r.push(u);break;case"middle":var h=(l[o]+s[o])/2,c=[];u[o]=c[o]=h,u[1-o]=l[1-o],c[1-o]=s[1-o],r.push(u),r.push(c);break;default:u[o]=l[o],u[1-o]=s[1-o],r.push(u)}}return t[a]&&r.push(t[a]),r}function d(t,e){var i=t.getVisual("visualMeta");if(i&&i.length&&t.count()){for(var n,o=i.length-1;o>=0;o--)if(i[o].dimension<2){n=i[o];break}if(n&&"cartesian2d"===e.type){var r=n.dimension,a=t.dimensions[r],s=e.getAxis(a),l=f.map(n.stops,function(t){return{coord:s.toGlobalCoord(s.dataToCoord(t.value)),color:t.color}}),u=l.length,h=n.outerColors.slice();u&&l[0].coord>l[u-1].coord&&(l.reverse(),h.reverse());var c=10,d=l[0].coord-c,p=l[u-1].coord+c,g=p-d;if(g<.001)return"transparent";f.each(l,function(t){t.offset=(t.coord-d)/g}),l.push({offset:u?l[u-1].offset:.5,color:h[1]||"transparent"}),l.unshift({offset:u?l[0].offset:.5,color:h[0]||"transparent"});var m=new v.LinearGradient(0,0,0,0,l,(!0));return m[a]=d,m[a+"2"]=p,m}}}var f=i(1),p=i(39),g=i(50),m=i(103),v=i(3),y=i(6),x=i(82),_=i(28);t.exports=_.extend({type:"line",init:function(){var t=new v.Group,e=new p;this.group.add(e.group),this._symbolDraw=e,this._lineGroup=t},render:function(t,e,i){var r=t.coordinateSystem,a=this.group,l=t.getData(),u=t.getModel("lineStyle.normal"),p=t.getModel("areaStyle.normal"),g=l.mapArray(l.getItemLayout,!0),m="polar"===r.type,v=this._coordSys,y=this._symbolDraw,x=this._polyline,_=this._polygon,b=this._lineGroup,w=t.get("animation"),S=!p.isEmpty(),M=s(r,l),I=t.get("showSymbol"),T=I&&!m&&!t.get("showAllSymbol")&&this._getSymbolIgnoreFunc(l,r),A=this._data;A&&A.eachItemGraphicEl(function(t,e){t.__temp&&(a.remove(t),A.setItemGraphicEl(e,null))}),I||y.remove(),a.add(b);var L=!m&&t.get("step");x&&v.type===r.type&&L===this._step?(S&&!_?_=this._newPolygon(g,M,r,w):_&&!S&&(b.remove(_),_=this._polygon=null),b.setClipPath(h(r,!1,t)),I&&y.updateData(l,T),l.eachItemGraphicEl(function(t){t.stopAnimation(!0)}),n(this._stackedOnPoints,M)&&n(this._points,g)||(w?this._updateAnimation(l,M,r,i,L):(L&&(g=c(g,r,L),M=c(M,r,L)),x.setShape({points:g}),_&&_.setShape({points:g,stackedOnPoints:M})))):(I&&y.updateData(l,T),L&&(g=c(g,r,L),M=c(M,r,L)),x=this._newPolyline(g,r,w),S&&(_=this._newPolygon(g,M,r,w)),b.setClipPath(h(r,!0,t)));var C=d(l,r)||l.getVisual("color");x.useStyle(f.defaults(u.getLineStyle(),{fill:"none",stroke:C,lineJoin:"bevel"}));var D=t.get("smooth");if(D=o(t.get("smooth")),x.setShape({smooth:D,smoothMonotone:t.get("smoothMonotone"),connectNulls:t.get("connectNulls")}),_){var P=l.stackedOn,k=0;if(_.useStyle(f.defaults(p.getAreaStyle(),{fill:C,opacity:.7,lineJoin:"bevel"})),P){var O=P.hostModel;k=o(O.get("smooth"))}_.setShape({smooth:D,stackedOnSmooth:k,smoothMonotone:t.get("smoothMonotone"),connectNulls:t.get("connectNulls")})}this._data=l,this._coordSys=r,this._stackedOnPoints=M,this._points=g,this._step=L},dispose:function(){},highlight:function(t,e,i,n){var o=t.getData(),r=y.queryDataIndex(o,n);if(!(r instanceof Array)&&null!=r&&r>=0){var a=o.getItemGraphicEl(r);if(!a){var s=o.getItemLayout(r);if(!s)return;a=new g(o,r),a.position=s,a.setZ(t.get("zlevel"),t.get("z")),a.ignore=isNaN(s[0])||isNaN(s[1]),a.__temp=!0,o.setItemGraphicEl(r,a),a.stopSymbolAnimation(!0),this.group.add(a)}a.highlight()}else _.prototype.highlight.call(this,t,e,i,n)},downplay:function(t,e,i,n){var o=t.getData(),r=y.queryDataIndex(o,n);if(null!=r&&r>=0){var a=o.getItemGraphicEl(r);a&&(a.__temp?(o.setItemGraphicEl(r,null),this.group.remove(a)):a.downplay())}else _.prototype.downplay.call(this,t,e,i,n)},_newPolyline:function(t){var e=this._polyline;return e&&this._lineGroup.remove(e),e=new x.Polyline({shape:{points:t},silent:!0,z2:10}),this._lineGroup.add(e),this._polyline=e,e},_newPolygon:function(t,e){var i=this._polygon;return i&&this._lineGroup.remove(i),i=new x.Polygon({shape:{points:t,stackedOnPoints:e},silent:!0}),this._lineGroup.add(i),this._polygon=i,i},_getSymbolIgnoreFunc:function(t,e){var i=e.getAxesByScale("ordinal")[0];if(i&&i.isLabelIgnored)return f.bind(i.isLabelIgnored,i)},_updateAnimation:function(t,e,i,n,o){var r=this._polyline,a=this._polygon,s=t.hostModel,l=m(this._data,t,this._stackedOnPoints,e,this._coordSys,i),u=l.current,h=l.stackedOnCurrent,d=l.next,f=l.stackedOnNext;o&&(u=c(l.current,i,o),h=c(l.stackedOnCurrent,i,o),d=c(l.next,i,o),f=c(l.stackedOnNext,i,o)),r.shape.__points=l.current,r.shape.points=u,v.updateProps(r,{shape:{points:d}},s),a&&(a.setShape({points:u,stackedOnPoints:h}),v.updateProps(a,{shape:{points:d,stackedOnPoints:f}},s));for(var p=[],g=l.status,y=0;y<g.length;y++){var x=g[y].cmd;if("="===x){var _=t.getItemGraphicEl(g[y].idx1);_&&p.push({el:_,ptIdx:y})}}r.animators&&r.animators.length&&r.animators[0].during(function(){for(var t=0;t<p.length;t++){var e=p[t].el;e.attr("position",r.shape.__points[p[t].ptIdx])}})},remove:function(t){var e=this.group,i=this._data;this._lineGroup.removeAll(),this._symbolDraw.remove(!0),i&&i.eachItemGraphicEl(function(t,n){t.__temp&&(e.remove(t),i.setItemGraphicEl(n,null))}),this._polyline=this._polygon=this._coordSys=this._points=this._stackedOnPoints=this._data=null}})},function(t,e){function i(t){return t>=0?1:-1}function n(t,e,n){for(var o,r=t.getBaseAxis(),a=t.getOtherAxis(r),s=r.onZero?0:a.scale.getExtent()[0],l=a.dim,u="x"===l||"radius"===l?1:0,h=e.stackedOn,c=e.get(l,n);h&&i(h.get(l,n))===i(c);){o=h;break}var d=[];return d[u]=e.get(r.dim,n),d[1-u]=o?o.get(l,n,!0):s,t.dataToPoint(d)}function o(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.exports=function(t,e,i,r,a,s){for(var l=o(t,e),u=[],h=[],c=[],d=[],f=[],p=[],g=[],m=s.dimensions,v=0;v<l.length;v++){var y=l[v],x=!0;switch(y.cmd){case"=":var _=t.getItemLayout(y.idx),b=e.getItemLayout(y.idx1);(isNaN(_[0])||isNaN(_[1]))&&(_=b.slice()),u.push(_),h.push(b),c.push(i[y.idx]),d.push(r[y.idx1]),g.push(e.getRawIndex(y.idx1));break;case"+":var w=y.idx;u.push(a.dataToPoint([e.get(m[0],w,!0),e.get(m[1],w,!0)])),h.push(e.getItemLayout(w).slice()),c.push(n(a,e,w)),d.push(r[w]),g.push(e.getRawIndex(w));break;case"-":var w=y.idx,S=t.getRawIndex(w);S!==w?(u.push(t.getItemLayout(w)),h.push(s.dataToPoint([t.get(m[0],w,!0),t.get(m[1],w,!0)])),c.push(i[w]),d.push(n(s,t,w)),g.push(S)):x=!1}x&&(f.push(y),p.push(p.length))}p.sort(function(t,e){return g[t]-g[e]});for(var M=[],I=[],T=[],A=[],L=[],v=0;v<p.length;v++){var w=p[v];M[v]=u[w],I[v]=h[w],T[v]=c[w],A[v]=d[w],L[v]=f[w]}return{current:M,next:I,stackedOnCurrent:T,stackedOnNext:A,status:L}}},function(t,e,i){
-var n=i(1),o=i(2);i(105),i(106),i(79)("pie",[{type:"pieToggleSelect",event:"pieselectchanged",method:"toggleSelected"},{type:"pieSelect",event:"pieselected",method:"select"},{type:"pieUnSelect",event:"pieunselected",method:"unSelect"}]),o.registerVisual(n.curry(i(74),"pie")),o.registerLayout(n.curry(i(108),"pie")),o.registerProcessor(n.curry(i(58),"pie"))},function(t,e,i){"use strict";var n=i(14),o=i(1),r=i(6),a=i(27),s=i(69),l=i(2).extendSeriesModel({type:"series.pie",init:function(t){l.superApply(this,"init",arguments),this.legendDataProvider=function(){return this.getRawData()},this.updateSelectedMap(t.data),this._defaultLabelLine(t)},mergeOption:function(t){l.superCall(this,"mergeOption",t),this.updateSelectedMap(this.option.data)},getInitialData:function(t,e){var i=a(["value"],t.data),o=new n(i,this);return o.initData(t.data),o},getDataParams:function(t){var e=this.getData(),i=l.superCall(this,"getDataParams",t),n=e.getSum("value");return i.percent=n?+(e.get("value",t)/n*100).toFixed(2):0,i.$vars.push("percent"),i},_defaultLabelLine:function(t){r.defaultEmphasis(t.labelLine,["show"]);var e=t.labelLine.normal,i=t.labelLine.emphasis;e.show=e.show&&t.label.normal.show,i.show=i.show&&t.label.emphasis.show},defaultOption:{zlevel:0,z:2,legendHoverLink:!0,hoverAnimation:!0,center:["50%","50%"],radius:[0,"75%"],clockwise:!0,startAngle:90,minAngle:0,selectedOffset:10,avoidLabelOverlap:!0,stillShowZeroSum:!0,label:{normal:{rotate:!1,show:!0,position:"outer"},emphasis:{}},labelLine:{normal:{show:!0,length:15,length2:15,smooth:!1,lineStyle:{width:1,type:"solid"}}},itemStyle:{normal:{borderWidth:1},emphasis:{}},animationType:"expansion",animationEasing:"cubicOut",data:[]}});o.mixin(l,s),t.exports=l},function(t,e,i){function n(t,e,i,n){var r=e.getData(),a=this.dataIndex,s=r.getName(a),l=e.get("selectedOffset");n.dispatchAction({type:"pieToggleSelect",from:t,name:s,seriesId:e.id}),r.each(function(t){o(r.getItemGraphicEl(t),r.getItemLayout(t),e.isSelected(r.getName(t)),l,i)})}function o(t,e,i,n,o){var r=(e.startAngle+e.endAngle)/2,a=Math.cos(r),s=Math.sin(r),l=i?n:0,u=[a*l,s*l];o?t.animate().when(200,{position:u}).start("bounceOut"):t.attr("position",u)}function r(t,e){function i(){r.ignore=r.hoverIgnore,a.ignore=a.hoverIgnore}function n(){r.ignore=r.normalIgnore,a.ignore=a.normalIgnore}s.Group.call(this);var o=new s.Sector({z2:2}),r=new s.Polyline,a=new s.Text;this.add(o),this.add(r),this.add(a),this.updateData(t,e,!0),this.on("emphasis",i).on("normal",n).on("mouseover",i).on("mouseout",n)}function a(t,e,i,n,o){var r=n.getModel("textStyle"),a="inside"===o||"inner"===o;return{fill:r.getTextColor()||(a?"#fff":t.getItemVisual(e,"color")),opacity:t.getItemVisual(e,"opacity"),textFont:r.getFont(),text:l.retrieve(t.hostModel.getFormattedLabel(e,i),t.getName(e))}}var s=i(3),l=i(1),u=r.prototype;u.updateData=function(t,e,i){function n(){a.stopAnimation(!0),a.animateTo({shape:{r:c.r+10}},300,"elasticOut")}function r(){a.stopAnimation(!0),a.animateTo({shape:{r:c.r}},300,"elasticOut")}var a=this.childAt(0),u=t.hostModel,h=t.getItemModel(e),c=t.getItemLayout(e),d=l.extend({},c);if(d.label=null,i){a.setShape(d);var f=u.getShallow("animationType");"scale"===f?(a.shape.r=c.r0,s.initProps(a,{shape:{r:c.r}},u,e)):(a.shape.endAngle=c.startAngle,s.updateProps(a,{shape:{endAngle:c.endAngle}},u,e))}else s.updateProps(a,{shape:d},u,e);var p=h.getModel("itemStyle"),g=t.getItemVisual(e,"color");a.useStyle(l.defaults({lineJoin:"bevel",fill:g},p.getModel("normal").getItemStyle())),a.hoverStyle=p.getModel("emphasis").getItemStyle(),o(this,t.getItemLayout(e),h.get("selected"),u.get("selectedOffset"),u.get("animation")),a.off("mouseover").off("mouseout").off("emphasis").off("normal"),h.get("hoverAnimation")&&u.isAnimationEnabled()&&a.on("mouseover",n).on("mouseout",r).on("emphasis",n).on("normal",r),this._updateLabel(t,e),s.setHoverStyle(this)},u._updateLabel=function(t,e){var i=this.childAt(1),n=this.childAt(2),o=t.hostModel,r=t.getItemModel(e),l=t.getItemLayout(e),u=l.label,h=t.getItemVisual(e,"color");s.updateProps(i,{shape:{points:u.linePoints||[[u.x,u.y],[u.x,u.y],[u.x,u.y]]}},o,e),s.updateProps(n,{style:{x:u.x,y:u.y}},o,e),n.attr({style:{textVerticalAlign:u.verticalAlign,textAlign:u.textAlign,textFont:u.font},rotation:u.rotation,origin:[u.x,u.y],z2:10});var c=r.getModel("label.normal"),d=r.getModel("label.emphasis"),f=r.getModel("labelLine.normal"),p=r.getModel("labelLine.emphasis"),g=c.get("position")||d.get("position");n.setStyle(a(t,e,"normal",c,g)),n.ignore=n.normalIgnore=!c.get("show"),n.hoverIgnore=!d.get("show"),i.ignore=i.normalIgnore=!f.get("show"),i.hoverIgnore=!p.get("show"),i.setStyle({stroke:h,opacity:t.getItemVisual(e,"opacity")}),i.setStyle(f.getModel("lineStyle").getLineStyle()),n.hoverStyle=a(t,e,"emphasis",d,g),i.hoverStyle=p.getModel("lineStyle").getLineStyle();var m=f.get("smooth");m&&m===!0&&(m=.4),i.setShape({smooth:m})},l.inherits(r,s.Group);var h=i(28).extend({type:"pie",init:function(){var t=new s.Group;this._sectorGroup=t},render:function(t,e,i,o){if(!o||o.from!==this.uid){var a=t.getData(),s=this._data,u=this.group,h=e.get("animation"),c=!s,d=t.get("animationType"),f=l.curry(n,this.uid,t,h,i),p=t.get("selectedMode");if(a.diff(s).add(function(t){var e=new r(a,t);c&&"scale"!==d&&e.eachChild(function(t){t.stopAnimation(!0)}),p&&e.on("click",f),a.setItemGraphicEl(t,e),u.add(e)}).update(function(t,e){var i=s.getItemGraphicEl(e);i.updateData(a,t),i.off("click"),p&&i.on("click",f),u.add(i),a.setItemGraphicEl(t,i)}).remove(function(t){var e=s.getItemGraphicEl(t);u.remove(e)}).execute(),h&&c&&a.count()>0&&"scale"!==d){var g=a.getItemLayout(0),m=Math.max(i.getWidth(),i.getHeight())/2,v=l.bind(u.removeClipPath,u);u.setClipPath(this._createClipPath(g.cx,g.cy,m,g.startAngle,g.clockwise,v,t))}this._data=a}},dispose:function(){},_createClipPath:function(t,e,i,n,o,r,a){var l=new s.Sector({shape:{cx:t,cy:e,r0:0,r:i,startAngle:n,endAngle:n,clockwise:o}});return s.initProps(l,{shape:{endAngle:n+(o?1:-1)*Math.PI*2}},a,r),l},containPoint:function(t,e){var i=e.getData(),n=i.getItemLayout(0);if(n){var o=t[0]-n.cx,r=t[1]-n.cy,a=Math.sqrt(o*o+r*r);return a<=n.r&&a>=n.r0}}});t.exports=h},function(t,e,i){"use strict";function n(t,e,i,n,o,r,a){function s(e,i,n,o){for(var r=e;r<i;r++)if(t[r].y+=n,r>e&&r+1<i&&t[r+1].y>t[r].y+t[r].height)return void l(r,n/2);l(i-1,n/2)}function l(e,i){for(var n=e;n>=0&&(t[n].y-=i,!(n>0&&t[n].y>t[n-1].y+t[n-1].height));n--);}function u(t,e,i,n,o,r){for(var a=r>0?e?Number.MAX_VALUE:0:e?Number.MAX_VALUE:0,s=0,l=t.length;s<l;s++)if("center"!==t[s].position){var u=Math.abs(t[s].y-n),h=t[s].len,c=t[s].len2,d=u<o+h?Math.sqrt((o+h+c)*(o+h+c)-u*u):Math.abs(t[s].x-i);e&&d>=a&&(d=a-10),!e&&d<=a&&(d=a+10),t[s].x=i+d*r,a=d}}t.sort(function(t,e){return t.y-e.y});for(var h,c=0,d=t.length,f=[],p=[],g=0;g<d;g++)h=t[g].y-c,h<0&&s(g,d,-h,o),c=t[g].y+t[g].height;a-c<0&&l(d-1,c-a);for(var g=0;g<d;g++)t[g].y>=i?p.push(t[g]):f.push(t[g]);u(f,!1,e,i,n,o),u(p,!0,e,i,n,o)}function o(t,e,i,o,r,a){for(var s=[],l=[],u=0;u<t.length;u++)t[u].x<e?s.push(t[u]):l.push(t[u]);n(l,e,i,o,1,r,a),n(s,e,i,o,-1,r,a);for(var u=0;u<t.length;u++){var h=t[u].linePoints;if(h){var c=h[1][0]-h[2][0];t[u].x<e?h[2][0]=t[u].x+3:h[2][0]=t[u].x-3,h[1][1]=h[2][1]=t[u].y,h[1][0]=h[2][0]+c}}}var r=i(17);t.exports=function(t,e,i,n){var a,s,l=t.getData(),u=[],h=!1;l.each(function(i){var n,o,c,d,f=l.getItemLayout(i),p=l.getItemModel(i),g=p.getModel("label.normal"),m=g.get("position")||p.get("label.emphasis.position"),v=p.getModel("labelLine.normal"),y=v.get("length"),x=v.get("length2"),_=(f.startAngle+f.endAngle)/2,b=Math.cos(_),w=Math.sin(_);a=f.cx,s=f.cy;var S="inside"===m||"inner"===m;if("center"===m)n=f.cx,o=f.cy,d="center";else{var M=(S?(f.r+f.r0)/2*b:f.r*b)+a,I=(S?(f.r+f.r0)/2*w:f.r*w)+s;if(n=M+3*b,o=I+3*w,!S){var T=M+b*(y+e-f.r),A=I+w*(y+e-f.r),L=T+(b<0?-1:1)*x,C=A;n=L+(b<0?-5:5),o=C,c=[[M,I],[T,A],[L,C]]}d=S?"center":b>0?"left":"right"}var D=g.getModel("textStyle").getFont(),P=g.get("rotate")?b<0?-_+Math.PI:-_:0,k=t.getFormattedLabel(i,"normal")||l.getName(i),O=r.getBoundingRect(k,D,d,"top");h=!!P,f.label={x:n,y:o,position:m,height:O.height,len:y,len2:x,linePoints:c,textAlign:d,verticalAlign:"middle",font:D,rotation:P},S||u.push(f.label)}),!h&&t.get("avoidLabelOverlap")&&o(u,a,s,e,i,n)}},function(t,e,i){var n=i(4),o=n.parsePercent,r=i(107),a=i(1),s=2*Math.PI,l=Math.PI/180;t.exports=function(t,e,i,u){e.eachSeriesByType(t,function(t){var e=t.get("center"),u=t.get("radius");a.isArray(u)||(u=[0,u]),a.isArray(e)||(e=[e,e]);var h=i.getWidth(),c=i.getHeight(),d=Math.min(h,c),f=o(e[0],h),p=o(e[1],c),g=o(u[0],d/2),m=o(u[1],d/2),v=t.getData(),y=-t.get("startAngle")*l,x=t.get("minAngle")*l,_=v.getSum("value"),b=Math.PI/(_||v.count())*2,w=t.get("clockwise"),S=t.get("roseType"),M=t.get("stillShowZeroSum"),I=v.getDataExtent("value");I[0]=0;var T=s,A=0,L=y,C=w?1:-1;if(v.each("value",function(t,e){var i;if(isNaN(t))return void v.setItemLayout(e,{angle:NaN,startAngle:NaN,endAngle:NaN,clockwise:w,cx:f,cy:p,r0:g,r:S?NaN:m});i="area"!==S?0===_&&M?b:t*b:s/(v.count()||1),i<x?(i=x,T-=x):A+=t;var o=L+C*i;v.setItemLayout(e,{angle:i,startAngle:L,endAngle:o,clockwise:w,cx:f,cy:p,r0:g,r:S?n.linearMap(t,I,[g,m]):m}),L=o},!0),T<s)if(T<=.001){var D=s/v.count();v.each(function(t){var e=v.getItemLayout(t);e.startAngle=y+C*t*D,e.endAngle=y+C*(t+1)*D})}else b=T/A,L=y,v.each("value",function(t,e){var i=v.getItemLayout(e),n=i.angle===x?x:t*b;i.startAngle=L,i.endAngle=L+C*n,L+=C*n});r(t,m,h,c)})}},function(t,e,i){"use strict";i(55),i(110)},function(t,e,i){function n(t,e){function i(t,e){var i=n.getAxis(t);return i.toGlobalCoord(i.dataToCoord(0))}var n=t.coordinateSystem,o=e.axis,r={},a=o.position,s=o.onZero?"onZero":a,l=o.dim,u=n.getRect(),h=[u.x,u.x+u.width,u.y,u.y+u.height],c=e.get("offset")||0,d={x:{top:h[2]-c,bottom:h[3]+c},y:{left:h[0]-c,right:h[1]+c}};d.x.onZero=Math.max(Math.min(i("y"),d.x.bottom),d.x.top),d.y.onZero=Math.max(Math.min(i("x"),d.y.right),d.y.left),r.position=["y"===l?d.y[s]:h[0],"x"===l?d.x[s]:h[3]],r.rotation=Math.PI/2*("x"===l?0:1);var f={top:-1,bottom:1,left:-1,right:1};r.labelDirection=r.tickDirection=r.nameDirection=f[a],o.onZero&&(r.labelOffset=d[l][a]-d[l].onZero),e.getModel("axisTick").get("inside")&&(r.tickDirection=-r.tickDirection),e.getModel("axisLabel").get("inside")&&(r.labelDirection=-r.labelDirection);var p=e.getModel("axisLabel").get("rotate");return r.labelRotation="top"===s?-p:p,r.labelInterval=o.getLabelInterval(),r.z2=1,r}var o=i(1),r=i(3),a=i(51),s=a.ifIgnoreOnTick,l=a.getInterval,u=["axisLine","axisLabel","axisTick","axisName"],h=["splitArea","splitLine"],c=i(2).extendComponentView({type:"axis",render:function(t,e){this.group.removeAll();var i=this._axisGroup;if(this._axisGroup=new r.Group,this.group.add(this._axisGroup),t.get("show")){var s=t.getCoordSysModel(),l=n(s,t),c=new a(t,l);o.each(u,c.add,c),this._axisGroup.add(c.getGroup()),o.each(h,function(e){t.get(e+".show")&&this["_"+e](t,s,l.labelInterval)},this),r.groupTransition(i,this._axisGroup,t)}},_splitLine:function(t,e,i){var n=t.axis;if(!n.isBlank()){var a=t.getModel("splitLine"),u=a.getModel("lineStyle"),h=u.get("color"),c=l(a,i);h=o.isArray(h)?h:[h];for(var d=e.coordinateSystem.getRect(),f=n.isHorizontal(),p=0,g=n.getTicksCoords(),m=n.scale.getTicks(),v=[],y=[],x=u.getLineStyle(),_=0;_<g.length;_++)if(!s(n,_,c)){var b=n.toGlobalCoord(g[_]);f?(v[0]=b,v[1]=d.y,y[0]=b,y[1]=d.y+d.height):(v[0]=d.x,v[1]=b,y[0]=d.x+d.width,y[1]=b);var w=p++%h.length;this._axisGroup.add(new r.Line(r.subPixelOptimizeLine({anid:"line_"+m[_],shape:{x1:v[0],y1:v[1],x2:y[0],y2:y[1]},style:o.defaults({stroke:h[w]},x),silent:!0})))}}},_splitArea:function(t,e,i){var n=t.axis;if(!n.isBlank()){var a=t.getModel("splitArea"),u=a.getModel("areaStyle"),h=u.get("color"),c=e.coordinateSystem.getRect(),d=n.getTicksCoords(),f=n.scale.getTicks(),p=n.toGlobalCoord(d[0]),g=n.toGlobalCoord(d[0]),m=0,v=l(a,i),y=u.getAreaStyle();h=o.isArray(h)?h:[h];for(var x=1;x<d.length;x++)if(!s(n,x,v)){var _,b,w,S,M=n.toGlobalCoord(d[x]);n.isHorizontal()?(_=p,b=c.y,w=M-_,S=c.height):(_=c.x,b=g,w=c.width,S=M-b);var I=m++%h.length;this._axisGroup.add(new r.Rect({anid:"area_"+f[x],shape:{x:_,y:b,width:w,height:S},style:o.defaults({fill:h[I]},y),silent:!0})),p=_+w,g=b+S}}}});c.extend({type:"xAxis"}),c.extend({type:"yAxis"})},function(t,e,i){var n=i(1),o=i(68),r=i(2);r.registerAction("dataZoom",function(t,e){var i=o.createLinkedNodesFinder(n.bind(e.eachComponent,e,"dataZoom"),o.eachAxisDim,function(t,e){return t.get(e.axisIndex)}),r=[];e.eachComponent({mainType:"dataZoom",query:t},function(t,e){r.push.apply(r,i(t).nodes)}),n.each(r,function(e,i){e.setRawRange({start:t.start,end:t.end,startValue:t.startValue,endValue:t.endValue})})})},function(t,e,i){function n(t,e,i){i.getAxisProxy(t.name,e).reset(i)}function o(t,e,i){i.getAxisProxy(t.name,e).filterData(i)}var r=i(2);r.registerProcessor(function(t,e){t.eachComponent("dataZoom",function(t){t.eachTargetAxis(n),t.eachTargetAxis(o)}),t.eachComponent("dataZoom",function(t){var e=t.findRepresentativeAxisProxy(),i=e.getDataPercentWindow(),n=e.getDataValueWindow();t.setRawRange({start:i[0],end:i[1],startValue:n[0],endValue:n[1]})})})},function(t,e,i){function n(t){var e=t[a];return e||(e=t[a]=[{}]),e}var o=i(1),r=o.each,a="\0_ec_hist_store",s={push:function(t,e){var i=n(t);r(e,function(e,n){for(var o=i.length-1;o>=0;o--){var r=i[o];if(r[n])break}if(o<0){var a=t.queryComponents({mainType:"dataZoom",subType:"select",id:n})[0];if(a){var s=a.getPercentRange();i[0][n]={dataZoomId:n,start:s[0],end:s[1]}}}}),i.push(e)},pop:function(t){var e=n(t),i=e[e.length-1];e.length>1&&e.pop();var o={};return r(i,function(t,i){for(var n=e.length-1;n>=0;n--){var t=e[n][i];if(t){o[i]=t;break}}}),o},clear:function(t){t[a]=null},count:function(t){return n(t).length}};t.exports=s},function(t,e,i){i(13).registerSubTypeDefaulter("dataZoom",function(t){return"slider"})},function(t,e,i){function n(t){N.call(this),this._zr=t,this.group=new G.Group,this._brushType,this._brushOption,this._panels,this._track=[],this._dragging,this._covers=[],this._creatingCover,this._creatingPanel,this._enableGlobalPan,this._uid="brushController_"+it++,this._handlers={},Z(nt,function(t,e){this._handlers[e]=V.bind(t,this)},this)}function o(t,e){var i=t._zr;t._enableGlobalPan||F.take(i,K,t._uid),Z(t._handlers,function(t,e){i.on(e,t)}),t._brushType=e.brushType,t._brushOption=V.merge(V.clone(et),e,!0)}function r(t){var e=t._zr;F.release(e,K,t._uid),Z(t._handlers,function(t,i){e.off(i,t)}),t._brushType=t._brushOption=null}function a(t,e){var i=ot[e.brushType].createCover(t,e);return u(i),i.__brushOption=e,t.group.add(i),i}function s(t,e){var i=c(e);return i.endCreating&&(i.endCreating(t,e),u(e)),e}function l(t,e){var i=e.__brushOption;c(e).updateCoverShape(t,e,i.range,i)}function u(t){t.traverse(function(t){t.z=Y,t.z2=Y})}function h(t,e){c(e).updateCommon(t,e),l(t,e)}function c(t){return ot[t.__brushOption.brushType]}function d(t,e,i){var n=t._panels;if(!n)return!0;var o;return Z(n,function(t){t.contain(e,i)&&(o=t)}),o}function f(t,e){var i=t._panels;if(!i)return!0;var n=e.__brushOption.panelId;return null==n||i[n]}function p(t){var e=t._covers,i=e.length;return Z(e,function(e){t.group.remove(e)},t),e.length=0,!!i}function g(t,e){var i=q(t._covers,function(t){var e=t.__brushOption,i=V.clone(e.range);return{brushType:e.brushType,panelId:e.panelId,range:i}});t.trigger("brush",i,{isEnd:!!e.isEnd,removeOnClick:!!e.removeOnClick})}function m(t){var e=t._track;if(!e.length)return!1;var i=e[e.length-1],n=e[0],o=i[0]-n[0],r=i[1]-n[1],a=X(o*o+r*r,.5);return a>$}function v(t){var e=t.length-1;return e<0&&(e=0),[t[0],t[e]]}function y(t,e,i,n){var o=new G.Group;return o.add(new G.Rect({name:"main",style:w(i),silent:!0,draggable:!0,cursor:"move",drift:W(t,e,o,"nswe"),ondragend:W(g,e,{isEnd:!0})})),Z(n,function(i){o.add(new G.Rect({name:i,style:{opacity:0},draggable:!0,silent:!0,invisible:!0,drift:W(t,e,o,i),ondragend:W(g,e,{isEnd:!0})}))}),o}function x(t,e,i,n){var o=n.brushStyle.lineWidth||0,r=U(o,Q),a=i[0][0],s=i[1][0],l=a-o/2,u=s-o/2,h=i[0][1],c=i[1][1],d=h-r+o/2,f=c-r+o/2,p=h-a,g=c-s,m=p+o,v=g+o;b(t,e,"main",a,s,p,g),n.transformable&&(b(t,e,"w",l,u,r,v),b(t,e,"e",d,u,r,v),b(t,e,"n",l,u,m,r),b(t,e,"s",l,f,m,r),b(t,e,"nw",l,u,r,r),b(t,e,"ne",d,u,r,r),b(t,e,"sw",l,f,r,r),b(t,e,"se",d,f,r,r))}function _(t,e){var i=e.__brushOption,n=i.transformable,o=e.childAt(0);o.useStyle(w(i)),o.attr({silent:!n,cursor:n?"move":"default"}),Z(["w","e","n","s","se","sw","ne","nw"],function(i){var o=e.childOfName(i),r=I(t,i);o&&o.attr({silent:!n,invisible:!n,cursor:n?tt[r]+"-resize":null})})}function b(t,e,i,n,o,r,a){var s=e.childOfName(i);s&&s.setShape(D(C(t,e,[[n,o],[n+r,o+a]])))}function w(t){return V.defaults({strokeNoScale:!0},t.brushStyle)}function S(t,e,i,n){var o=[j(t,i),j(e,n)],r=[U(t,i),U(e,n)];return[[o[0],r[0]],[o[1],r[1]]]}function M(t){return G.getTransform(t.group)}function I(t,e){if(e.length>1){e=e.split("");var i=[I(t,e[0]),I(t,e[1])];return("e"===i[0]||"w"===i[0])&&i.reverse(),i.join("")}var n={w:"left",e:"right",n:"top",s:"bottom"},o={left:"w",right:"e",top:"n",bottom:"s"},i=G.transformDirection(n[e],M(t));return o[i]}function T(t,e,i,n,o,r,a,s){var l=n.__brushOption,u=t(l.range),c=L(i,r,a);Z(o.split(""),function(t){var e=J[t];u[e[0]][e[1]]+=c[e[0]]}),l.range=e(S(u[0][0],u[1][0],u[0][1],u[1][1])),h(i,n),g(i,{isEnd:!1})}function A(t,e,i,n,o){var r=e.__brushOption.range,a=L(t,i,n);Z(r,function(t){t[0]+=a[0],t[1]+=a[1]}),h(t,e),g(t,{isEnd:!1})}function L(t,e,i){var n=t.group,o=n.transformCoordToLocal(e,i),r=n.transformCoordToLocal(0,0);return[o[0]-r[0],o[1]-r[1]]}function C(t,e,i){var n=f(t,e);if(n===!0)return V.clone(i);var o=n.getBoundingRect();return V.map(i,function(t){var e=t[0];e=U(e,o.x),e=j(e,o.x+o.width);var i=t[1];return i=U(i,o.y),i=j(i,o.y+o.height),[e,i]})}function D(t){var e=j(t[0][0],t[1][0]),i=j(t[0][1],t[1][1]),n=U(t[0][0],t[1][0]),o=U(t[0][1],t[1][1]);return{x:e,y:i,width:n-e,height:o-i}}function P(t,e){var i=e.offsetX,n=e.offsetY,o=t._zr;if(t._brushType){for(var r,a=t._panels,s=t._covers,l=0;l<s.length;l++)if(ot[s[l].__brushOption.brushType].contain(s[l],i,n)){r=!0;break}r||(a?Z(a,function(t){t.contain(i,n)&&o.setCursorStyle("crosshair")}):o.setCursorStyle("crosshair"))}}function k(t){var e=t.event;e.preventDefault&&e.preventDefault()}function O(t,e,i){return t.childOfName("main").contain(e,i)}function z(t,e,i){var n,o=e.offsetX,r=e.offsetY,u=t._creatingCover,h=t._creatingPanel,c=t._brushOption;if(t._track.push(t.group.transformCoordToLocal(o,r)),m(t)||u){if(h&&!u){"single"===c.brushMode&&p(t);var f=V.clone(c);f.panelId=h===!0?null:h.__brushPanelId,u=t._creatingCover=a(t,f),t._covers.push(u)}if(u){var g=ot[t._brushType],v=u.__brushOption;v.range=g.getCreatingRange(C(t,u,t._track)),i&&(s(t,u),g.updateCommon(t,u)),l(t,u),n={isEnd:i}}}else i&&"single"===c.brushMode&&c.removeOnClick&&d(t,o,r)&&p(t)&&(n={isEnd:i,removeOnClick:!0});return n}function E(t){if(this._dragging){k(t);var e=z(this,t,!0);this._dragging=!1,this._track=[],this._creatingCover=null,e&&g(this,e)}}function R(t){return{createCover:function(e,i){return y(W(T,function(e){var i=[e,[0,100]];return t&&i.reverse(),i},function(e){return e[t]}),e,i,[["w","e"],["n","s"]][t])},getCreatingRange:function(e){var i=v(e),n=j(i[0][t],i[1][t]),o=U(i[0][t],i[1][t]);return[n,o]},updateCoverShape:function(e,i,n,o){var r,a=o.brushStyle.width;if(null==a){var s=f(e,i),l=0;if(s!==!0){var u=s.getBoundingRect();a=t?u.width:u.height,l=t?u.x:u.y}r=[l,l+(a||0)]}else r=[-a/2,a/2];var h=[n,r];t&&h.reverse(),x(e,i,h,o)},updateCommon:_,contain:O}}var N=i(21),V=i(1),B=i(9),G=i(3),F=i(117),H=i(43),W=V.curry,Z=V.each,q=V.map,j=Math.min,U=Math.max,X=Math.pow,Y=1e4,$=6,Q=6,K="globalPan",J={w:[0,0],e:[0,1],n:[1,0],s:[1,1]},tt={w:"ew",e:"ew",n:"ns",s:"ns",ne:"nesw",sw:"nesw",nw:"nwse",se:"nwse"},et={brushStyle:{lineWidth:2,stroke:"rgba(0,0,0,0.3)",fill:"rgba(0,0,0,0.1)"},transformable:!0,brushMode:"single",removeOnClick:!1},it=0;n.prototype={constructor:n,enableBrush:function(t){return this._brushType&&r(this),t.brushType&&o(this,t),this},setPanels:function(t){var e=this._panels||{},i=this._panels=t&&t.length&&{},n=this.group;return i&&Z(t,function(t){var o=t.panelId,r=e[o];r||(r=new G.Rect({silent:!0,invisible:!0}),n.add(r));var a=t.rect;a instanceof B||(a=B.create(a)),r.attr("shape",a.plain()),r.__brushPanelId=o,i[o]=r,e[o]=null}),Z(e,function(t){t&&n.remove(t)}),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},eachCover:function(t,e){Z(this._covers,t,e)},updateCovers:function(t){function e(t,e){return(null!=t.id?t.id:r+e)+"-"+t.brushType}function i(t,i){return e(t.__brushOption,i)}function n(e,i){var n=t[e];if(null!=i&&l[i]===d)u[e]=l[i];else{var o=u[e]=null!=i?(l[i].__brushOption=n,l[i]):s(c,a(c,n));h(c,o)}}function o(t){l[t]!==d&&c.group.remove(l[t])}t=V.map(t,function(t){return V.merge(V.clone(et),t,!0)});var r="\0-brush-index-",l=this._covers,u=this._covers=[],c=this,d=this._creatingCover;return new H(l,t,i,e).add(n).update(n).remove(o).execute(),this},unmount:function(){return this.enableBrush(!1),p(this),this._zr.remove(this.group),this},dispose:function(){this.unmount(),this.off()}},V.mixin(n,N);var nt={mousedown:function(t){if(this._dragging)E.call(this,t);else if(!t.target||!t.target.draggable){k(t);var e=t.offsetX,i=t.offsetY;this._creatingCover=null;var n=this._creatingPanel=d(this,e,i);n&&(this._dragging=!0,this._track=[this.group.transformCoordToLocal(e,i)])}},mousemove:function(t){if(P(this,t),this._dragging){k(t);var e=z(this,t,!1);e&&g(this,e)}},mouseup:E},ot={lineX:R(0),lineY:R(1),rect:{createCover:function(t,e){return y(W(T,function(t){return t},function(t){return t}),t,e,["w","e","n","s","se","sw","ne","nw"])},getCreatingRange:function(t){var e=v(t);return S(e[1][0],e[1][1],e[0][0],e[0][1])},updateCoverShape:function(t,e,i,n){x(t,e,i,n)},updateCommon:_,contain:O},polygon:{createCover:function(t,e){var i=new G.Group;return i.add(new G.Polyline({name:"main",style:w(e),silent:!0})),i},getCreatingRange:function(t){return t},endCreating:function(t,e){e.remove(e.childAt(0)),e.add(new G.Polygon({name:"main",draggable:!0,drift:W(A,t,e),ondragend:W(g,t,{isEnd:!0})}))},updateCoverShape:function(t,e,i,n){e.childAt(0).setShape({points:C(t,e,i)})},updateCommon:_,contain:O}};t.exports=n},function(t,e,i){function n(t){return t[0]>t[1]&&t.reverse(),t}function o(t,e){for(var i=!0,n=0;n<h.length;n++){var o=h[n]+"Index";if(t[o]>=0){i=!1;for(var r=0;r<e.length;r++)if(e[r][o]===t[o])return e[r]}}return i}function r(t,e,i,o){var r=i.coordSys.getAxis(t);return n(a.map([0,1],function(t){return e?r.coordToData(r.toLocalCoord(o[t])):r.toGlobalCoord(r.dataToCoord(o[t]))}))}var a=i(1),s=i(3),l=a.each,u={},h=["geo","xAxis","yAxis"],c="--",d=["dataToPoint","pointToData"];u.parseOutputRanges=function(t,e,i,n){l(t,function(t,i){var r=t.panelId;if(r){r=r.split(c),t[r[0]+"Index"]=+r[1];var a=o(t,e);t.coordRange=f[t.brushType](1,a,t.range),n&&(n[i]=a)}})},u.parseInputRanges=function(t,e){l(t.areas,function(e){var i=o(e,t.coordInfoList);e.range=e.range||[],i&&i!==!0&&(e.range=f[e.brushType](0,i,e.coordRange),e.panelId=i.panelId)})},u.makePanelOpts=function(t){var e=[];return l(t,function(t){var i,n=t.coordSys;t.geoIndex>=0?(i=n.getBoundingRect().clone(),i.applyTransform(s.getTransform(n))):i=n.grid.getRect().clone(),e.push({panelId:t.panelId,rect:i})}),e},u.makeCoordInfoList=function(t,e){var i=[];return l(h,function(n){var o=t[n+"Index"];null!=o&&"none"!==o&&("all"===o||a.isArray(o)||(o=[o]),e.eachComponent({mainType:n},function(t,e){if(!("all"!==o&&a.indexOf(o,e)<0)){var r,s;"xAxis"===n||"yAxis"===n?r=t.axis.grid:s=t.coordinateSystem;for(var l,u=0,h=i.length;u<h;u++){var d=i[u];if("yAxis"===n&&!d.yAxis&&d.xAxis){var f=r.getCartesian(d.xAxisIndex,e);if(f){s=f,l=d;break}}}!l&&i.push(l={}),l[n]=t,l[n+"Index"]=e,l.panelId=n+c+e,l.coordSys=s||r.getCartesian(l.xAxisIndex,l.yAxisIndex),l.coordSys?i[n+"Has"]=!0:i.pop()}}))}),i},u.controlSeries=function(t,e,i){var n=o(t,e.coordInfoList);return n===!0||n&&n.coordSys===i.coordinateSystem};var f={lineX:a.curry(r,"x"),lineY:a.curry(r,"y"),rect:function(t,e,i){var o=e.coordSys,r=o[d[t]]([i[0][0],i[1][0]]),a=o[d[t]]([i[0][1],i[1][1]]);return[n([r[0],a[0]]),n([r[1],a[1]])]},polygon:function(t,e,i){var n=e.coordSys;return a.map(i,n[d[t]],n)}};t.exports=u},function(t,e,i){function n(t){return t[o]||(t[o]={})}var o="\0_ec_interaction_mutex",r={take:function(t,e,i){var o=n(t);o[e]=i},release:function(t,e,i){var o=n(t),r=o[e];r===i&&(o[e]=null)},isTaken:function(t,e){return!!n(t)[e]}};i(2).registerAction({type:"takeGlobalCursor",event:"globalCursorTaken",update:"update"},function(){}),t.exports=r},function(t,e,i){function n(t,e,i){o.positionElement(t,e.getBoxLayoutParams(),{width:i.getWidth(),height:i.getHeight()},e.get("padding"))}var o=i(12),r=i(8),a=i(3);t.exports={layout:function(t,e,i){var r=o.getLayoutRect(e.getBoxLayoutParams(),{width:i.getWidth(),height:i.getHeight()},e.get("padding"));o.box(e.get("orient"),t,e.get("itemGap"),r.width,r.height),n(t,e,i)},addBackground:function(t,e){var i=r.normalizeCssArray(e.get("padding")),n=t.getBoundingRect(),o=e.getItemStyle(["color","opacity"]);o.fill=e.get("backgroundColor");var s=new a.Rect({shape:{x:n.x-i[3],y:n.y-i[0],width:n.width+i[1]+i[3],height:n.height+i[0]+i[2]},style:o,silent:!0,z2:-1});a.subPixelOptimizeRect(s),t.add(s)}}},function(t,e,i){var n=i(1),o=i(42),r=i(123),a=function(t,e,i,n,r){o.call(this,t,e,i),this.type=n||"value",this.position=r||"bottom"};a.prototype={constructor:a,index:0,onZero:!1,model:null,isHorizontal:function(){var t=this.position;return"top"===t||"bottom"===t},getGlobalExtent:function(){var t=this.getExtent();return t[0]=this.toGlobalCoord(t[0]),t[1]=this.toGlobalCoord(t[1]),t},getLabelInterval:function(){var t=this._labelInterval;return t||(t=this._labelInterval=r(this)),t},isLabelIgnored:function(t){if("category"===this.type){var e=this.getLabelInterval();return"function"==typeof e&&!e(t,this.scale.getLabel(t))||t%(e+1)}},toLocalCoord:null,toGlobalCoord:null},n.inherits(a,o),t.exports=a},function(t,e,i){"use strict";function n(t){return this._axes[t]}var o=i(1),r=function(t){this._axes={},this._dimList=[],this.name=t||""};r.prototype={constructor:r,type:"cartesian",getAxis:function(t){return this._axes[t]},getAxes:function(){return o.map(this._dimList,n,this)},getAxesByScale:function(t){return t=t.toLowerCase(),o.filter(this.getAxes(),function(e){return e.scale.type===t})},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?[]:{},o=0;o<i.length;o++){var r=i[o],a=this._axes[r];n[r]=a[e](t[r])}return n}},t.exports=r},function(t,e,i){"use strict";function n(t){r.call(this,t)}var o=i(1),r=i(120);n.prototype={constructor:n,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])},dataToPoints:function(t,e){return t.mapArray(["x","y"],function(t,e){return this.dataToPoint([t,e])},e,this)},dataToPoint:function(t,e){var i=this.getAxis("x"),n=this.getAxis("y");return[i.toGlobalCoord(i.dataToCoord(t[0],e)),n.toGlobalCoord(n.dataToCoord(t[1],e))]},pointToData:function(t,e){var i=this.getAxis("x"),n=this.getAxis("y");return[i.coordToData(i.toLocalCoord(t[0]),e),n.coordToData(n.toLocalCoord(t[1]),e)]},getOtherAxis:function(t){return this.getAxis("x"===t.dim?"y":"x")}},o.inherits(n,r),t.exports=n},function(t,e,i){"use strict";i(55);var n=i(13);t.exports=n.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"}})},function(t,e,i){"use strict";var n=i(1),o=i(22);t.exports=function(t){var e=t.model,i=e.getModel("axisLabel"),r=i.get("interval");return"category"!==t.type||"auto"!==r?"auto"===r?0:r:o.getAxisLabelInterval(n.map(t.scale.getTicks(),t.dataToCoord,t),e.getFormattedLabels(),i.getModel("textStyle").getFont(),t.isHorizontal())}},function(t,e,i){var n=i(3),o=i(1),r=Math.PI;t.exports=function(t,e){e=e||{},o.defaults(e,{text:"loading",color:"#c23531",textColor:"#000",maskColor:"rgba(255, 255, 255, 0.8)",zlevel:0});var i=new n.Rect({style:{fill:e.maskColor},zlevel:e.zlevel,z:1e4}),a=new n.Arc({shape:{startAngle:-r/2,endAngle:-r/2+.1,r:10},style:{stroke:e.color,lineCap:"round",lineWidth:5},zlevel:e.zlevel,z:10001}),s=new n.Rect({style:{fill:"none",text:e.text,textPosition:"right",textDistance:10,textFill:e.textColor},zlevel:e.zlevel,z:10001});a.animateShape(!0).when(1e3,{endAngle:3*r/2}).start("circularInOut"),a.animateShape(!0).when(1e3,{startAngle:3*r/2}).delay(300).start("circularInOut");var l=new n.Group;return l.add(a),l.add(s),l.add(i),l.resize=function(){var e=t.getWidth()/2,n=t.getHeight()/2;a.setShape({cx:e,cy:n});var o=a.shape.r;s.setShape({x:e-o,y:n-o,width:2*o,height:2*o}),i.setShape({x:0,y:0,width:t.getWidth(),height:t.getHeight()})},l.resize(),l}},function(t,e,i){function n(t,e){h.each(e,function(e,i){x.hasClass(i)||("object"==typeof e?t[i]=t[i]?h.merge(t[i],e,!1):h.clone(e):null==t[i]&&(t[i]=e))})}function o(t){t=t,this.option={},this.option[b]=1,this._componentsMap={},this._seriesIndices=null,n(t,this._theme.option),h.merge(t,_,!1),this.mergeOption(t)}function r(t,e){h.isArray(e)||(e=e?[e]:[]);var i={};return f(e,function(e){i[e]=(t[e]||[]).slice()}),i}function a(t,e,i){var n=e.type?e.type:i?i.subType:x.determineSubType(t,e);return n}function s(t){return g(t,function(t){return t.componentIndex})||[]}function l(t,e){return e.hasOwnProperty("subType")?p(t,function(t){return t.subType===e.subType}):t}function u(t){}var h=i(1),c=i(6),d=i(11),f=h.each,p=h.filter,g=h.map,m=h.isArray,v=h.indexOf,y=h.isObject,x=i(13),_=i(127),b="\0_ec_inner",w=d.extend({constructor:w,init:function(t,e,i,n){i=i||{},this.option=null,this._theme=new d(i),this._optionManager=n},setOption:function(t,e){h.assert(!(b in t),"please use chart.getOption()"),this._optionManager.setOption(t,e),this.resetOption()},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)):o.call(this,n),e=!0}if("timeline"!==t&&"media"!==t||this.restoreData(),!t||"recreate"===t||"timeline"===t){var r=i.getTimelineOption(this);r&&(this.mergeOption(r),e=!0)}if(!t||"recreate"===t||"media"===t){var a=i.getMediaOption(this,this._api);a.length&&f(a,function(t){this.mergeOption(t,e=!0)},this)}return e},mergeOption:function(t){function e(e,o){var l=c.normalizeToArray(t[e]),u=c.mappingToExists(n[e],l);c.makeIdAndName(u),f(u,function(t,i){var n=t.option;y(n)&&(t.keyInfo.mainType=e,t.keyInfo.subType=a(e,n,t.exist))});var d=r(n,o);i[e]=[],n[e]=[],f(u,function(t,o){var r=t.exist,a=t.option;if(h.assert(y(a)||r,"Empty component definition"),a){var s=x.getClass(e,t.keyInfo.subType,!0);if(r&&r instanceof s)r.name=t.keyInfo.name,r.mergeOption(a,this),r.optionUpdated(a,!1);else{var l=h.extend({dependentModels:d,componentIndex:o},t.keyInfo);r=new s(a,this,this,l),h.extend(r,l),r.init(a,this,this,l),r.optionUpdated(null,!0)}}else r.mergeOption({},this),r.optionUpdated({},!1);n[e][o]=r,i[e][o]=r.option},this),"series"===e&&(this._seriesIndices=s(n.series))}var i=this.option,n=this._componentsMap,o=[];f(t,function(t,e){null!=t&&(x.hasClass(e)?o.push(e):i[e]=null==i[e]?h.clone(t):h.merge(i[e],t,!0));
-}),x.topologicalTravel(o,x.getAllClassMainTypes(),e,this),this._seriesIndices=this._seriesIndices||[]},getOption:function(){var t=h.clone(this.option);return f(t,function(e,i){if(x.hasClass(i)){for(var e=c.normalizeToArray(e),n=e.length-1;n>=0;n--)c.isIdInner(e[n])&&e.splice(n,1);t[i]=e}}),delete t[b],t},getTheme:function(){return this._theme},getComponent:function(t,e){var i=this._componentsMap[t];if(i)return i[e||0]},queryComponents:function(t){var e=t.mainType;if(!e)return[];var i=t.index,n=t.id,o=t.name,r=this._componentsMap[e];if(!r||!r.length)return[];var a;if(null!=i)m(i)||(i=[i]),a=p(g(i,function(t){return r[t]}),function(t){return!!t});else if(null!=n){var s=m(n);a=p(r,function(t){return s&&v(n,t.id)>=0||!s&&t.id===n})}else if(null!=o){var u=m(o);a=p(r,function(t){return u&&v(o,t.name)>=0||!u&&t.name===o})}else a=r;return l(a,t)},findComponents:function(t){function e(t){var e=o+"Index",i=o+"Id",n=o+"Name";return!t||null==t[e]&&null==t[i]&&null==t[n]?null:{mainType:o,index:t[e],id:t[i],name:t[n]}}function i(e){return t.filter?p(e,t.filter):e}var n=t.query,o=t.mainType,r=e(n),a=r?this.queryComponents(r):this._componentsMap[o];return i(l(a,t))},eachComponent:function(t,e,i){var n=this._componentsMap;if("function"==typeof t)i=e,e=t,f(n,function(t,n){f(t,function(t,o){e.call(i,n,t,o)})});else if(h.isString(t))f(n[t],e,i);else if(y(t)){var o=this.findComponents(t);f(o,e,i)}},getSeriesByName:function(t){var e=this._componentsMap.series;return p(e,function(e){return e.name===t})},getSeriesByIndex:function(t){return this._componentsMap.series[t]},getSeriesByType:function(t){var e=this._componentsMap.series;return p(e,function(e){return e.subType===t})},getSeries:function(){return this._componentsMap.series.slice()},eachSeries:function(t,e){u(this),f(this._seriesIndices,function(i){var n=this._componentsMap.series[i];t.call(e,n,i)},this)},eachRawSeries:function(t,e){f(this._componentsMap.series,t,e)},eachSeriesByType:function(t,e,i){u(this),f(this._seriesIndices,function(n){var o=this._componentsMap.series[n];o.subType===t&&e.call(i,o,n)},this)},eachRawSeriesByType:function(t,e,i){return f(this.getSeriesByType(t),e,i)},isSeriesFiltered:function(t){return u(this),h.indexOf(this._seriesIndices,t.componentIndex)<0},filterSeries:function(t,e){u(this);var i=p(this._componentsMap.series,t,e);this._seriesIndices=s(i)},restoreData:function(){var t=this._componentsMap;this._seriesIndices=s(t.series);var e=[];f(t,function(t,i){e.push(i)}),x.topologicalTravel(e,x.getAllClassMainTypes(),function(e,i){f(t[e],function(t){t.restoreData()})})}});h.mixin(w,i(57)),t.exports=w},function(t,e,i){function n(t){this._api=t,this._timelineOptions=[],this._mediaList=[],this._mediaDefault,this._currentMediaIndices=[],this._optionBackup,this._newBaseOption}function o(t,e,i){var n,o,r=[],a=[],s=t.timeline;if(t.baseOption&&(o=t.baseOption),(s||t.options)&&(o=o||{},r=(t.options||[]).slice()),t.media){o=o||{};var l=t.media;d(l,function(t){t&&t.option&&(t.query?a.push(t):n||(n=t))})}return o||(o=t),o.timeline||(o.timeline=s),d([o].concat(r).concat(u.map(a,function(t){return t.option})),function(t){d(e,function(e){e(t,i)})}),{baseOption:o,timelineOptions:r,mediaDefault:n,mediaList:a}}function r(t,e,i){var n={width:e,height:i,aspectratio:e/i},o=!0;return u.each(t,function(t,e){var i=e.match(m);if(i&&i[1]&&i[2]){var r=i[1],s=i[2].toLowerCase();a(n[s],t,r)||(o=!1)}}),o}function a(t,e,i){return"min"===i?t>=e:"max"===i?t<=e:t===e}function s(t,e){return t.join(",")===e.join(",")}function l(t,e){e=e||{},d(e,function(e,i){if(null!=e){var n=t[i];if(c.hasClass(i)){e=h.normalizeToArray(e),n=h.normalizeToArray(n);var o=h.mappingToExists(n,e);t[i]=p(o,function(t){return t.option&&t.exist?g(t.exist,t.option,!0):t.exist||t.option})}else t[i]=g(n,e,!0)}})}var u=i(1),h=i(6),c=i(13),d=u.each,f=u.clone,p=u.map,g=u.merge,m=/^(min|max)?(.+)$/;n.prototype={constructor:n,setOption:function(t,e){t=f(t,!0);var i=this._optionBackup,n=o.call(this,t,e,!i);this._newBaseOption=n.baseOption,i?(l(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=p(e.timelineOptions,f),this._mediaList=p(e.mediaList,f),this._mediaDefault=f(e.mediaDefault),this._currentMediaIndices=[],f(t?e.baseOption:this._newBaseOption)},getTimelineOption:function(t){var e,i=this._timelineOptions;if(i.length){var n=t.getComponent("timeline");n&&(e=f(i[n.getCurrentIndex()],!0))}return e},getMediaOption:function(t){var e=this._api.getWidth(),i=this._api.getHeight(),n=this._mediaList,o=this._mediaDefault,a=[],l=[];if(!n.length&&!o)return l;for(var u=0,h=n.length;u<h;u++)r(n[u].query,e,i)&&a.push(u);return!a.length&&o&&(a=[-1]),a.length&&!s(a,this._currentMediaIndices)&&(l=p(a,function(t){return f(t===-1?o.option:n[t].option)})),this._currentMediaIndices=a,l}},t.exports=n},function(t,e){var i="";"undefined"!=typeof navigator&&(i=navigator.platform||""),t.exports={color:["#c23531","#2f4554","#61a0a8","#d48265","#91c7ae","#749f83","#ca8622","#bda29a","#6e7074","#546570","#c4ccd3"],textStyle:{fontFamily:i.match(/^Win/)?"Microsoft YaHei":"sans-serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"},blendMode:null,animation:!0,animationDuration:1e3,animationDurationUpdate:300,animationEasing:"exponentialOut",animationEasingUpdate:"cubicOut",animationThreshold:2e3,progressiveThreshold:3e3,progressive:400,hoverLayerThreshold:3e3}},function(t,e,i){t.exports={getAreaStyle:i(30)([["fill","color"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["opacity"],["shadowColor"]])}},function(t,e){t.exports={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")}}}},function(t,e,i){var n=i(30)([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"],["textPosition"],["textAlign"]]);t.exports={getItemStyle:function(t){var e=n.call(this,t),i=this.getBorderLineDash();return i&&(e.lineDash=i),e},getBorderLineDash:function(){var t=this.get("borderType");return"solid"===t||null==t?null:"dashed"===t?[5,5]:[1,1]}}},function(t,e,i){var n=i(30)([["lineWidth","width"],["stroke","color"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]);t.exports={getLineStyle:function(t){var e=n.call(this,t),i=this.getLineDash(e.lineWidth);return i&&(e.lineDash=i),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?null:"dashed"===e?[n,n]:[i,i]}}},function(t,e,i){function n(t,e){return t&&t.getShallow(e)}var o=i(17);t.exports={getTextColor:function(){var t=this.ecModel;return this.getShallow("color")||t&&t.get("textStyle.color")},getFont:function(){var t=this.ecModel,e=t&&t.getModel("textStyle");return[this.getShallow("fontStyle")||n(e,"fontStyle"),this.getShallow("fontWeight")||n(e,"fontWeight"),(this.getShallow("fontSize")||n(e,"fontSize")||12)+"px",this.getShallow("fontFamily")||n(e,"fontFamily")||"sans-serif"].join(" ")},getTextRect:function(t){return o.getBoundingRect(t,this.getFont(),this.getShallow("align"),this.getShallow("baseline"))},truncateText:function(t,e,i,n){return o.truncateText(t,e,this.getFont(),i,n)}}},function(t,e,i){function n(t,e){e=e.split(",");for(var i=t,n=0;n<e.length&&(i=i&&i[e[n]],null!=i);n++);return i}function o(t,e,i,n){e=e.split(",");for(var o,r=t,a=0;a<e.length-1;a++)o=e[a],null==r[o]&&(r[o]={}),r=r[o];(n||null==r[e[a]])&&(r[e[a]]=i)}function r(t){c(l,function(e){e[0]in t&&!(e[1]in t)&&(t[e[1]]=t[e[0]])})}var a=i(1),s=i(134),l=[["x","left"],["y","top"],["x2","right"],["y2","bottom"]],u=["grid","geo","parallel","legend","toolbox","title","visualMap","dataZoom","timeline"],h=["bar","boxplot","candlestick","chord","effectScatter","funnel","gauge","lines","graph","heatmap","line","map","parallel","pie","radar","sankey","scatter","treemap"],c=a.each;t.exports=function(t){c(t.series,function(t){if(a.isObject(t)){var e=t.type;if(s(t),"pie"!==e&&"gauge"!==e||null!=t.clockWise&&(t.clockwise=t.clockWise),"gauge"===e){var i=n(t,"pointer.color");null!=i&&o(t,"itemStyle.normal.color",i)}for(var l=0;l<h.length;l++)if(h[l]===t.type){r(t);break}}}),t.dataRange&&(t.visualMap=t.dataRange),c(u,function(e){var i=t[e];i&&(a.isArray(i)||(i=[i]),c(i,function(t){r(t)}))})}},function(t,e,i){function n(t){var e=t&&t.itemStyle;e&&o.each(r,function(i){var n=e.normal,r=e.emphasis;n&&n[i]&&(t[i]=t[i]||{},t[i].normal?o.merge(t[i].normal,n[i]):t[i].normal=n[i],n[i]=null),r&&r[i]&&(t[i]=t[i]||{},t[i].emphasis?o.merge(t[i].emphasis,r[i]):t[i].emphasis=r[i],r[i]=null)})}var o=i(1),r=["areaStyle","lineStyle","nodeStyle","linkStyle","chordStyle","label","labelLine"];t.exports=function(t){if(t){n(t),n(t.markPoint),n(t.markLine);var e=t.data;if(e){for(var i=0;i<e.length;i++)n(e[i]);var r=t.markPoint;if(r&&r.data)for(var a=r.data,i=0;i<a.length;i++)n(a[i]);var s=t.markLine;if(s&&s.data)for(var l=s.data,i=0;i<l.length;i++)o.isArray(l[i])?(n(l[i][0]),n(l[i][1])):n(l[i])}}}},function(t,e){var i={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 e},min:function(t){for(var e=1/0,i=0;i<t.length;i++)t[i]<e&&(e=t[i]);return e},nearest:function(t){return t[0]}},n=function(t,e){return Math.round(t.length/2)};t.exports=function(t,e,o){e.eachSeriesByType(t,function(t){var e=t.getData(),o=t.get("sampling"),r=t.coordinateSystem;if("cartesian2d"===r.type&&o){var a=r.getBaseAxis(),s=r.getOtherAxis(a),l=a.getExtent(),u=l[1]-l[0],h=Math.round(e.count()/u);if(h>1){var c;"string"==typeof o?c=i[o]:"function"==typeof o&&(c=o),c&&(e=e.downSample(s.dim,1/h,c,n),t.setData(e))}}},this)}},function(t,e,i){function n(t,e){return c(t,h(e))}var o=i(1),r=i(32),a=i(4),s=i(38),l=r.prototype,u=s.prototype,h=a.getPrecisionSafe,c=a.round,d=Math.floor,f=Math.ceil,p=Math.pow,g=Math.log,m=r.extend({type:"log",base:10,$constructor:function(){r.apply(this,arguments),this._originalScale=new s},getTicks:function(){var t=this._originalScale,e=this._extent,i=t.getExtent();return o.map(u.getTicks.call(this),function(o){var r=a.round(p(this.base,o));return r=o===e[0]&&t.__fixMin?n(r,i[0]):r,r=o===e[1]&&t.__fixMax?n(r,i[1]):r},this)},getLabel:u.getLabel,scale:function(t){return t=l.scale.call(this,t),p(this.base,t)},setExtent:function(t,e){var i=this.base;t=g(t)/g(i),e=g(e)/g(i),u.setExtent.call(this,t,e)},getExtent:function(){var t=this.base,e=l.getExtent.call(this);e[0]=p(t,e[0]),e[1]=p(t,e[1]);var i=this._originalScale,o=i.getExtent();return i.__fixMin&&(e[0]=n(e[0],o[0])),i.__fixMax&&(e[1]=n(e[1],o[1])),e},unionExtent:function(t){this._originalScale.unionExtent(t);var e=this.base;t[0]=g(t[0])/g(e),t[1]=g(t[1])/g(e),l.unionExtent.call(this,t)},unionExtentFromData:function(t,e){this.unionExtent(t.getDataExtent(e,!0,function(t){return t>0}))},niceTicks:function(t){t=t||10;var e=this._extent,i=e[1]-e[0];if(!(i===1/0||i<=0)){var n=a.quantity(i),o=t/i*n;for(o<=.5&&(n*=10);!isNaN(n)&&Math.abs(n)<1&&Math.abs(n)>0;)n*=10;var r=[a.round(f(e[0]/n)*n),a.round(d(e[1]/n)*n)];this._interval=n,this._niceExtent=r}},niceExtent:function(t,e,i){u.niceExtent.call(this,t,e,i);var n=this._originalScale;n.__fixMin=e,n.__fixMax=i}});o.each(["contain","normalize"],function(t){m.prototype[t]=function(e){return e=g(e)/g(this.base),l[t].call(this,e)}}),m.create=function(){return new m},t.exports=m},function(t,e,i){var n=i(1),o=i(32),r=o.prototype,a=o.extend({type:"ordinal",init:function(t,e){this._data=t,this._extent=e||[0,t.length-1]},parse:function(t){return"string"==typeof t?n.indexOf(this._data,t):Math.round(t)},contain:function(t){return t=this.parse(t),r.contain.call(this,t)&&null!=this._data[t]},normalize:function(t){return r.normalize.call(this,this.parse(t))},scale:function(t){return Math.round(r.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){return this._data[t]},count:function(){return this._extent[1]-this._extent[0]+1},unionExtentFromData:function(t,e){this.unionExtent(t.getDataExtent(e,!1))},niceTicks:n.noop,niceExtent:n.noop});a.create=function(){return new a},t.exports=a},function(t,e,i){var n=i(1),o=i(4),r=i(8),a=i(38),s=a.prototype,l=Math.ceil,u=Math.floor,h=1e3,c=60*h,d=60*c,f=24*d,p=function(t,e,i,n){for(;i<n;){var o=i+n>>>1;t[o][2]<e?i=o+1:n=o}return i},g=a.extend({type:"time",getLabel:function(t){var e=this._stepLvl,i=new Date(t);return r.formatTime(e[0],i)},niceExtent:function(t,e,i){var n=this._extent;if(n[0]===n[1]&&(n[0]-=f,n[1]+=f),n[1]===-(1/0)&&n[0]===1/0){var r=new Date;n[1]=new Date(r.getFullYear(),r.getMonth(),r.getDate()),n[0]=n[1]-f}this.niceTicks(t);var a=this._interval;e||(n[0]=o.round(u(n[0]/a)*a)),i||(n[1]=o.round(l(n[1]/a)*a))},niceTicks:function(t){t=t||10;var e=this._extent,i=e[1]-e[0],n=i/t,r=m.length,a=p(m,n,0,r),s=m[Math.min(a,r-1)],h=s[2];if("year"===s[0]){var c=i/h,d=o.nice(c/t,!0);h*=d}var f=[l(e[0]/h)*h,u(e[1]/h)*h];this._stepLvl=s,this._interval=h,this._niceExtent=f},parse:function(t){return+o.parseDate(t)}});n.each(["contain","normalize"],function(t){g.prototype[t]=function(e){return s[t].call(this,this.parse(e))}});var m=[["hh:mm:ss",1,h],["hh:mm:ss",5,5*h],["hh:mm:ss",10,10*h],["hh:mm:ss",15,15*h],["hh:mm:ss",30,30*h],["hh:mm\nMM-dd",1,c],["hh:mm\nMM-dd",5,5*c],["hh:mm\nMM-dd",10,10*c],["hh:mm\nMM-dd",15,15*c],["hh:mm\nMM-dd",30,30*c],["hh:mm\nMM-dd",1,d],["hh:mm\nMM-dd",2,2*d],["hh:mm\nMM-dd",6,6*d],["hh:mm\nMM-dd",12,12*d],["MM-dd\nyyyy",1,f],["week",7,7*f],["month",1,31*f],["quarter",3,380*f/4],["half-year",6,380*f/2],["year",1,380*f]];g.create=function(){return new g},t.exports=g},function(t,e,i){var n=i(37);t.exports=function(t){function e(e){var i=(e.visualColorAccessPath||"itemStyle.normal.color").split("."),o=e.getData(),r=e.get(i)||e.getColorFromPalette(e.get("name"));o.setVisual("color",r),t.isSeriesFiltered(e)||("function"!=typeof r||r instanceof n||o.each(function(t){o.setItemVisual(t,"color",r(e.getDataParams(t)))}),o.each(function(t){var e=o.getItemModel(t),n=e.get(i,!0);null!=n&&o.setItemVisual(t,"color",n)}))}t.eachRawSeries(e)}},function(t,e,i){"use strict";function n(t,e,i){return{type:t,event:i,target:e,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}}function o(){}function r(t,e,i){if(t[t.rectHover?"rectContain":"contain"](e,i)){for(var n=t;n;){if(n.silent||n.clipPath&&!n.clipPath.contain(e,i))return!1;n=n.parent}return!0}return!1}var a=i(1),s=i(168),l=i(21);o.prototype.dispose=function(){};var u=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],h=function(t,e,i,n){l.call(this),this.storage=t,this.painter=e,this.painterRoot=n,i=i||new o,this.proxy=i,i.handler=this,this._hovered,this._lastTouchMoment,this._lastX,this._lastY,s.call(this),a.each(u,function(t){i.on&&i.on(t,this[t],this)},this)};h.prototype={constructor:h,mousemove:function(t){var e=t.zrX,i=t.zrY,n=this.findHover(e,i,null),o=this._hovered,r=this.proxy;this._hovered=n,r.setCursor&&r.setCursor(n?n.cursor:"default"),o&&n!==o&&o.__zr&&this.dispatchToElement(o,"mouseout",t),this.dispatchToElement(n,"mousemove",t),n&&n!==o&&this.dispatchToElement(n,"mouseover",t)},mouseout:function(t){this.dispatchToElement(this._hovered,"mouseout",t);var e,i=t.toElement||t.relatedTarget;do i=i&&i.parentNode;while(i&&9!=i.nodeType&&!(e=i===this.painterRoot));!e&&this.trigger("globalout",{event:t})},resize:function(t){this._hovered=null},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){for(var o="on"+e,r=n(e,t,i),a=t;a&&(a[o]&&(r.cancelBubble=a[o].call(a,r)),a.trigger(e,r),a=a.parent,!r.cancelBubble););r.cancelBubble||(this.trigger(e,r),this.painter&&this.painter.eachOtherLayer(function(t){"function"==typeof t[o]&&t[o].call(t,r),t.trigger&&t.trigger(e,r)}))},findHover:function(t,e,i){for(var n=this.storage.getDisplayList(),o=n.length-1;o>=0;o--)if(!n[o].silent&&n[o]!==i&&!n[o].ignore&&r(n[o],t,e))return n[o]}},a.each(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],function(t){h.prototype[t]=function(e){var i=this.findHover(e.zrX,e.zrY,null);if("mousedown"===t)this._downel=i,this._upel=i;else if("mosueup"===t)this._upel=i;else if("click"===t&&this._downel!==this._upel)return;this.dispatchToElement(i,t,e)}}),a.mixin(h,l),a.mixin(h,s),t.exports=h},function(t,e,i){function n(){return!1}function o(t,e,i,n){var o=document.createElement(e),r=i.getWidth(),a=i.getHeight(),s=o.style;return s.position="absolute",s.left=0,s.top=0,s.width=r+"px",s.height=a+"px",o.width=r*n,o.height=a*n,o.setAttribute("data-zr-dom-id",t),o}var r=i(1),a=i(33),s=i(66),l=i(65),u=function(t,e,i){var s;i=i||a.devicePixelRatio,"string"==typeof t?s=o(t,"canvas",e,i):r.isObject(t)&&(s=t,t=s.id),this.id=t,this.dom=s;var l=s.style;l&&(s.onselectstart=n,l["-webkit-user-select"]="none",l["user-select"]="none",l["-webkit-touch-callout"]="none",l["-webkit-tap-highlight-color"]="rgba(0,0,0,0)",l.padding=0,l.margin=0,l["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};u.prototype={constructor:u,elCount:0,__dirty:!0,initContext:function(){this.ctx=this.dom.getContext("2d"),this.ctx.dpr=this.dpr},createBackBuffer:function(){var t=this.dpr;this.domBack=o("back-"+this.id,"canvas",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,o=n.style,r=this.domBack;o.width=t+"px",o.height=e+"px",n.width=t*i,n.height=e*i,r&&(r.width=t*i,r.height=e*i,1!=i&&this.ctxBack.scale(i,i))},clear:function(t){var e=this.dom,i=this.ctx,n=e.width,o=e.height,r=this.clearColor,a=this.motionBlur&&!t,u=this.lastFrameAlpha,h=this.dpr;if(a&&(this.domBack||this.createBackBuffer(),this.ctxBack.globalCompositeOperation="copy",this.ctxBack.drawImage(e,0,0,n/h,o/h)),i.clearRect(0,0,n,o),r){var c;r.colorStops?(c=r.__canvasGradient||s.getGradient(i,r,{x:0,y:0,width:n,height:o}),r.__canvasGradient=c):r.image&&(c=l.prototype.getCanvasPattern.call(r,i)),i.save(),i.fillStyle=c||r,i.fillRect(0,0,n,o),i.restore()}if(a){var d=this.domBack;i.save(),i.globalAlpha=u,i.drawImage(d,0,0,n,o),i.restore()}}},t.exports=u},function(t,e,i){"use strict";function n(t){return parseInt(t,10)}function o(t){return!!t&&(!!t.isBuildin||"function"==typeof t.resize&&"function"==typeof t.refresh)}function r(t){t.__unusedCount++}function a(t){1==t.__unusedCount&&t.clear()}function s(t,e,i){return x.copy(t.getBoundingRect()),t.transform&&x.applyTransform(t.transform),_.width=e,_.height=i,!x.intersect(_)}function l(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}function u(t,e){for(var i=0;i<t.length;i++){var n=t[i],o=n.path;n.setTransform(e),o.beginPath(e),n.buildPath(o,n.shape),e.clip(),n.restoreTransform(e)}}function h(t,e){var i=document.createElement("div");return i.style.cssText=["position:relative","overflow:hidden","width:"+t+"px","height:"+e+"px","padding:0","margin:0","border-width:0"].join(";")+";",i}var c=i(33),d=i(1),f=i(48),p=i(9),g=i(46),m=i(141),v=i(62),y=5,x=new p(0,0,0,0),_=new p(0,0,0,0),b=function(t,e,i){var n=!t.nodeName||"CANVAS"===t.nodeName.toUpperCase();this._opts=i=d.extend({},i||{}),this.dpr=i.devicePixelRatio||c.devicePixelRatio,this._singleCanvas=n,this.root=t;var o=t.style;o&&(o["-webkit-tap-highlight-color"]="transparent",o["-webkit-user-select"]=o["user-select"]=o["-webkit-touch-callout"]="none",t.innerHTML=""),this.storage=e;var r=this._zlevelList=[],a=this._layers={};if(this._layerConfig={},n){var s=t.width,l=t.height;this._width=s,this._height=l;var u=new m(t,this,1);u.initContext(),a[0]=u,r.push(0),this._domRoot=t}else{this._width=this._getSize(0),this._height=this._getSize(1);var f=this._domRoot=h(this._width,this._height);t.appendChild(f)}this.pathToImage=this._createPathToImage(),this._progressiveLayers=[],this._hoverlayer,this._hoverElements=[]};b.prototype={constructor:b,isSingleCanvas:function(){return this._singleCanvas},getViewportRoot:function(){return this._domRoot},refresh:function(t){var e=this.storage.getDisplayList(!0),i=this._zlevelList;this._paintList(e,t);for(var n=0;n<i.length;n++){var o=i[n],r=this._layers[o];!r.isBuildin&&r.refresh&&r.refresh()}return this.refreshHover(),this._progressiveLayers.length&&this._startProgessive(),this},addHover:function(t,e){if(!t.__hoverMir){var i=new t.constructor({style:t.style,shape:t.shape});i.__from=t,t.__hoverMir=i,i.setStyle(e),this._hoverElements.push(i)}},removeHover:function(t){var e=t.__hoverMir,i=this._hoverElements,n=d.indexOf(i,e);n>=0&&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){g(t,this.storage.displayableSortFunc),i||(i=this._hoverlayer=this.getLayer(1e5));var n={};i.ctx.save();for(var o=0;o<e;){var r=t[o],a=r.__from;a&&a.__zr?(o++,a.invisible||(r.transform=a.transform,r.invTransform=a.invTransform,r.__clipPaths=a.__clipPaths,this._doPaintEl(r,i,!0,n))):(t.splice(o,1),a.__hoverMir=null,e--)}i.ctx.restore()}},_startProgessive:function(){function t(){i===e._progressiveToken&&e.storage&&(e._doPaintList(e.storage.getDisplayList()),e._furtherProgressive?(e._progress++,v(t)):e._progressiveToken=-1)}var e=this;if(e._furtherProgressive){var i=e._progressiveToken=+new Date;e._progress++,v(t)}},_clearProgressive:function(){this._progressiveToken=-1,this._progress=0,d.each(this._progressiveLayers,function(t){t.__dirty&&t.clear()})},_paintList:function(t,e){null==e&&(e=!1),this._updateLayerStatus(t),this._clearProgressive(),this.eachBuildinLayer(r),this._doPaintList(t,e),this.eachBuildinLayer(a)},_doPaintList:function(t,e){function i(t){var e=r.dpr||1;r.save(),r.globalAlpha=1,r.shadowBlur=0,n.__dirty=!0,r.setTransform(1,0,0,1,0,0),r.drawImage(t.dom,0,0,h*e,c*e),r.restore()}for(var n,o,r,a,s,l,u=0,h=this._width,c=this._height,p=this._progress,g=0,m=t.length;g<m;g++){var v=t[g],x=this._singleCanvas?0:v.zlevel,_=v.__frame;if(_<0&&s&&(i(s),s=null),o!==x&&(r&&r.restore(),a={},o=x,n=this.getLayer(o),n.isBuildin||f("ZLevel "+o+" has been used by unkown layer "+n.id),r=n.ctx,r.save(),n.__unusedCount=0,(n.__dirty||e)&&n.clear()),n.__dirty||e){if(_>=0){if(!s){if(s=this._progressiveLayers[Math.min(u++,y-1)],s.ctx.save(),s.renderScope={},s&&s.__progress>s.__maxProgress){g=s.__nextIdxNotProg-1;continue}l=s.__progress,s.__dirty||(p=l),s.__progress=p+1}_===p&&this._doPaintEl(v,s,!0,s.renderScope)}else this._doPaintEl(v,n,e,a);v.__dirty=!1}}s&&i(s),r&&r.restore(),this._furtherProgressive=!1,d.each(this._progressiveLayers,function(t){t.__maxProgress>=t.__progress&&(this._furtherProgressive=!0)},this)},_doPaintEl:function(t,e,i,n){var o=e.ctx,r=t.transform;if((e.__dirty||i)&&!t.invisible&&0!==t.style.opacity&&(!r||r[0]||r[3])&&(!t.culling||!s(t,this._width,this._height))){var a=t.__clipPaths;(n.prevClipLayer!==e||l(a,n.prevElClipPaths))&&(n.prevElClipPaths&&(n.prevClipLayer.ctx.restore(),n.prevClipLayer=n.prevElClipPaths=null,n.prevEl=null),a&&(o.save(),u(a,o),n.prevClipLayer=e,n.prevElClipPaths=a)),t.beforeBrush&&t.beforeBrush(o),t.brush(o,n.prevEl||null),n.prevEl=t,t.afterBrush&&t.afterBrush(o)}},getLayer:function(t){if(this._singleCanvas)return this._layers[0];var e=this._layers[t];return e||(e=new m("zr_"+t,this,this.dpr),e.isBuildin=!0,this._layerConfig[t]&&d.merge(e,this._layerConfig[t],!0),this.insertLayer(t,e),e.initContext()),e},insertLayer:function(t,e){var i=this._layers,n=this._zlevelList,r=n.length,a=null,s=-1,l=this._domRoot;if(i[t])return void f("ZLevel "+t+" has been used already");if(!o(e))return void f("Layer of zlevel "+t+" is not valid");if(r>0&&t>n[0]){for(s=0;s<r-1&&!(n[s]<t&&n[s+1]>t);s++);a=i[n[s]]}if(n.splice(s+1,0,t),a){var u=a.dom;u.nextSibling?l.insertBefore(e.dom,u.nextSibling):l.appendChild(e.dom)}else l.firstChild?l.insertBefore(e.dom,l.firstChild):l.appendChild(e.dom);i[t]=e},eachLayer:function(t,e){var i,n,o=this._zlevelList;for(n=0;n<o.length;n++)i=o[n],t.call(e,this._layers[i],i)},eachBuildinLayer:function(t,e){var i,n,o,r=this._zlevelList;for(o=0;o<r.length;o++)n=r[o],i=this._layers[n],i.isBuildin&&t.call(e,i,n)},eachOtherLayer:function(t,e){var i,n,o,r=this._zlevelList;for(o=0;o<r.length;o++)n=r[o],i=this._layers[n],i.isBuildin||t.call(e,i,n)},getLayers:function(){return this._layers},_updateLayerStatus:function(t){var e=this._layers,i=this._progressiveLayers,n={},o={};this.eachBuildinLayer(function(t,e){n[e]=t.elCount,t.elCount=0,t.__dirty=!1}),d.each(i,function(t,e){o[e]=t.elCount,t.elCount=0,t.__dirty=!1});for(var r,a,s=0,l=0,u=0,h=t.length;u<h;u++){var c=t[u],f=this._singleCanvas?0:c.zlevel,p=e[f],g=c.progressive;if(p&&(p.elCount++,p.__dirty=p.__dirty||c.__dirty),g>=0){a!==g&&(a=g,l++);var v=c.__frame=l-1;if(!r){var x=Math.min(s,y-1);r=i[x],r||(r=i[x]=new m("progressive",this,this.dpr),r.initContext()),r.__maxProgress=0}r.__dirty=r.__dirty||c.__dirty,r.elCount++,r.__maxProgress=Math.max(r.__maxProgress,v),r.__maxProgress>=r.__progress&&(p.__dirty=!0)}else c.__frame=-1,r&&(r.__nextIdxNotProg=u,s++,r=null)}r&&(s++,r.__nextIdxNotProg=u),this.eachBuildinLayer(function(t,e){n[e]!==t.elCount&&(t.__dirty=!0)}),i.length=Math.min(s,y),d.each(i,function(t,e){o[e]!==t.elCount&&(c.__dirty=!0),t.__dirty&&(t.__progress=0)})},clear:function(){return this.eachBuildinLayer(this._clearLayer),this},_clearLayer:function(t){t.clear()},configLayer:function(t,e){if(e){var i=this._layerConfig;i[t]?d.merge(i[t],e,!0):i[t]=e;var n=this._layers[t];n&&d.merge(n,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(d.indexOf(i,t),1))},resize:function(t,e){var i=this._domRoot;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||e!=this._height){i.style.width=t+"px",i.style.height=e+"px";for(var o in this._layers)this._layers.hasOwnProperty(o)&&this._layers[o].resize(t,e);d.each(this._progressiveLayers,function(i){i.resize(t,e)}),this.refresh(!0)}return this._width=t,this._height=e,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)return this._layers[0].dom;var e=new m("image",this,t.pixelRatio||this.dpr);e.initContext(),e.clearColor=t.backgroundColor,e.clear();for(var i=this.storage.getDisplayList(!0),n={},o=0;o<i.length;o++){var r=i[o];this._doPaintEl(r,e,!0,n)}return e.dom},getWidth:function(){return this._width},getHeight:function(){return this._height},_getSize:function(t){var e=this._opts,i=["width","height"][t],o=["clientWidth","clientHeight"][t],r=["paddingLeft","paddingTop"][t],a=["paddingRight","paddingBottom"][t];if(null!=e[i]&&"auto"!==e[i])return parseFloat(e[i]);var s=this.root,l=document.defaultView.getComputedStyle(s);return(s[o]||n(l[i])||n(s.style[i]))-(n(l[r])||0)-(n(l[a])||0)|0},_pathToImage:function(t,e,n,o,r){var a=document.createElement("canvas"),s=a.getContext("2d");a.width=n*r,a.height=o*r,s.clearRect(0,0,n*r,o*r);var l={position:e.position,rotation:e.rotation,scale:e.scale};e.position=[0,0,0],e.rotation=0,e.scale=[1,1],e&&e.brush(s);var u=i(49),h=new u({id:t,style:{x:0,y:0,image:a}});return null!=l.position&&(h.position=e.position=l.position),null!=l.rotation&&(h.rotation=e.rotation=l.rotation),null!=l.scale&&(h.scale=e.scale=l.scale),h},_createPathToImage:function(){var t=this;return function(e,i,n,o){return t._pathToImage(e,i,n,o,t.dpr)}}},t.exports=b},function(t,e,i){"use strict";function n(t,e){return t.zlevel===e.zlevel?t.z===e.z?t.z2-e.z2:t.z-e.z:t.zlevel-e.zlevel}var o=i(1),r=i(10),a=i(34),s=i(46),l=function(){this._elements={},this._roots=[],this._displayList=[],this._displayListLen=0};l.prototype={constructor:l,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,o=0,a=e.length;o<a;o++)this._updateAndAddDisplayable(e[o],null,t);i.length=this._displayListLen,r.canvasSupported&&s(i,n)},_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 o=n,r=t;o;)o.parent=r,o.updateTransform(),e.push(o),r=o,o=o.clipPath}if(t.isGroup){for(var a=t._children,s=0;s<a.length;s++){var l=a[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){this._elements[t.id]||(t instanceof a&&t.addChildrenToStorage(this),this.addToMap(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 a&&i.delChildrenFromStorage(this)}return this._elements={},this._roots=[],this._displayList=[],void(this._displayListLen=0)}if(t instanceof Array)for(var e=0,n=t.length;e<n;e++)this.delRoot(t[e]);else{var r;r="string"==typeof t?this._elements[t]:t;var s=o.indexOf(this._roots,r);s>=0&&(this.delFromMap(r.id),this._roots.splice(s,1),r instanceof a&&r.delChildrenFromStorage(this))}},addToMap:function(t){return t instanceof a&&(t.__storage=this),t.dirty(!1),this._elements[t.id]=t,this},get:function(t){return this._elements[t]},delFromMap:function(t){var e=this._elements,i=e[t];return i&&(delete e[t],i instanceof a&&(i.__storage=null)),this},dispose:function(){this._elements=this._renderList=this._roots=null},displayableSortFunc:n},t.exports=l},function(t,e,i){"use strict";var n=i(1),o=i(25).Dispatcher,r=i(62),a=i(61),s=function(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,o.call(this)};s.prototype={constructor:s,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=n.indexOf(this._clips,t);e>=0&&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,o=[],r=[],a=0;a<n;a++){var s=i[a],l=s.step(t);l&&(o.push(l),r.push(s))}for(var a=0;a<n;)i[a]._needsRemove?(i[a]=i[n-1],i.pop(),n--):a++;n=o.length;for(var a=0;a<n;a++)r[a].fire(o[a]);this._time=t,this.onframe(e),this.trigger("frame",e),this.stage.update&&this.stage.update()},_startLoop:function(){function t(){e._running&&(r(t),!e._paused&&e._update())}var e=this;this._running=!0,r(t)},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=[]},animate:function(t,e){e=e||{};var i=new a(t,e.loop,e.getter,e.setter);
-return this.addAnimator(i),i}},n.mixin(s,o),t.exports=s},function(t,e,i){function n(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}var o=i(146);n.prototype={constructor:n,step:function(t){this._initialized||(this._startTime=t+this._delay,this._initialized=!0);var e=(t-this._startTime)/this._life;if(!(e<0)){e=Math.min(e,1);var i=this.easing,n="string"==typeof i?o[i]:i,r="function"==typeof n?n(e):e;return this.fire("frame",r),1==e?this.loop?(this.restart(t),"restart"):(this._needsRemove=!0,"destroy"):null}},restart:function(t){var e=(t-this._startTime)%this._life;this._startTime=t-e+this.gap,this._needsRemove=!1},fire:function(t,e){t="on"+t,this[t]&&this[t](this._target,e)}},t.exports=n},function(t,e){var i={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*(-Math.pow(2,-10*(t-1))+2)},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,n=.4;return 0===t?0:1===t?1:(!i||i<1?(i=1,e=n/4):e=n*Math.asin(1/i)/(2*Math.PI),-(i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)))},elasticOut:function(t){var e,i=.1,n=.4;return 0===t?0:1===t?1:(!i||i<1?(i=1,e=n/4):e=n*Math.asin(1/i)/(2*Math.PI),i*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/n)+1)},elasticInOut:function(t){var e,i=.1,n=.4;return 0===t?0:1===t?1:(!i||i<1?(i=1,e=n/4):e=n*Math.asin(1/i)/(2*Math.PI),(t*=2)<1?-.5*(i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)):i*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*.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?.5*(t*t*((e+1)*t-e)):.5*((t-=2)*t*((e+1)*t+e)+2)},bounceIn:function(t){return 1-i.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*i.bounceIn(2*t):.5*i.bounceOut(2*t-1)+.5}};t.exports=i},function(t,e,i){var n=i(63).normalizeRadian,o=2*Math.PI;t.exports={containStroke:function(t,e,i,r,a,s,l,u,h){if(0===l)return!1;var c=l;u-=t,h-=e;var d=Math.sqrt(u*u+h*h);if(d-c>i||d+c<i)return!1;if(Math.abs(r-a)%o<1e-4)return!0;if(s){var f=r;r=n(a),a=n(f)}else r=n(r),a=n(a);r>a&&(a+=o);var p=Math.atan2(h,u);return p<0&&(p+=o),p>=r&&p<=a||p+o>=r&&p+o<=a}}},function(t,e,i){var n=i(18);t.exports={containStroke:function(t,e,i,o,r,a,s,l,u,h,c){if(0===u)return!1;var d=u;if(c>e+d&&c>o+d&&c>a+d&&c>l+d||c<e-d&&c<o-d&&c<a-d&&c<l-d||h>t+d&&h>i+d&&h>r+d&&h>s+d||h<t-d&&h<i-d&&h<r-d&&h<s-d)return!1;var f=n.cubicProjectPoint(t,e,i,o,r,a,s,l,h,c,null);return f<=d/2}}},function(t,e,i){"use strict";function n(t,e){return Math.abs(t-e)<x}function o(){var t=b[0];b[0]=b[1],b[1]=t}function r(t,e,i,n,r,a,s,l,u,h){if(h>e&&h>n&&h>a&&h>l||h<e&&h<n&&h<a&&h<l)return 0;var c=g.cubicRootAt(e,n,a,l,h,_);if(0===c)return 0;for(var d,f,p=0,m=-1,v=0;v<c;v++){var y=_[v],x=0===y||1===y?.5:1,w=g.cubicAt(t,i,r,s,y);w<u||(m<0&&(m=g.cubicExtrema(e,n,a,l,b),b[1]<b[0]&&m>1&&o(),d=g.cubicAt(e,n,a,l,b[0]),m>1&&(f=g.cubicAt(e,n,a,l,b[1]))),p+=2==m?y<b[0]?d<e?x:-x:y<b[1]?f<d?x:-x:l<f?x:-x:y<b[0]?d<e?x:-x:l<d?x:-x)}return p}function a(t,e,i,n,o,r,a,s){if(s>e&&s>n&&s>r||s<e&&s<n&&s<r)return 0;var l=g.quadraticRootAt(e,n,r,s,_);if(0===l)return 0;var u=g.quadraticExtremum(e,n,r);if(u>=0&&u<=1){for(var h=0,c=g.quadraticAt(e,n,r,u),d=0;d<l;d++){var f=0===_[d]||1===_[d]?.5:1,p=g.quadraticAt(t,i,o,_[d]);p<a||(h+=_[d]<u?c<e?f:-f:r<c?f:-f)}return h}var f=0===_[0]||1===_[0]?.5:1,p=g.quadraticAt(t,i,o,_[0]);return p<a?0:r<e?f:-f}function s(t,e,i,n,o,r,a,s){if(s-=e,s>i||s<-i)return 0;var l=Math.sqrt(i*i-s*s);_[0]=-l,_[1]=l;var u=Math.abs(n-o);if(u<1e-4)return 0;if(u%y<1e-4){n=0,o=y;var h=r?1:-1;return a>=_[0]+t&&a<=_[1]+t?h:0}if(r){var l=n;n=p(o),o=p(l)}else n=p(n),o=p(o);n>o&&(o+=y);for(var c=0,d=0;d<2;d++){var f=_[d];if(f+t>a){var g=Math.atan2(s,f),h=r?1:-1;g<0&&(g=y+g),(g>=n&&g<=o||g+y>=n&&g+y<=o)&&(g>Math.PI/2&&g<1.5*Math.PI&&(h=-h),c+=h)}}return c}function l(t,e,i,o,l){for(var h=0,p=0,g=0,y=0,x=0,_=0;_<t.length;){var b=t[_++];switch(b===u.M&&_>1&&(i||(h+=m(p,g,y,x,o,l))),1==_&&(p=t[_],g=t[_+1],y=p,x=g),b){case u.M:y=t[_++],x=t[_++],p=y,g=x;break;case u.L:if(i){if(v(p,g,t[_],t[_+1],e,o,l))return!0}else h+=m(p,g,t[_],t[_+1],o,l)||0;p=t[_++],g=t[_++];break;case u.C:if(i){if(c.containStroke(p,g,t[_++],t[_++],t[_++],t[_++],t[_],t[_+1],e,o,l))return!0}else h+=r(p,g,t[_++],t[_++],t[_++],t[_++],t[_],t[_+1],o,l)||0;p=t[_++],g=t[_++];break;case u.Q:if(i){if(d.containStroke(p,g,t[_++],t[_++],t[_],t[_+1],e,o,l))return!0}else h+=a(p,g,t[_++],t[_++],t[_],t[_+1],o,l)||0;p=t[_++],g=t[_++];break;case u.A:var w=t[_++],S=t[_++],M=t[_++],I=t[_++],T=t[_++],A=t[_++],L=(t[_++],1-t[_++]),C=Math.cos(T)*M+w,D=Math.sin(T)*I+S;_>1?h+=m(p,g,C,D,o,l):(y=C,x=D);var P=(o-w)*I/M+w;if(i){if(f.containStroke(w,S,I,T,T+A,L,e,P,l))return!0}else h+=s(w,S,I,T,T+A,L,P,l);p=Math.cos(T+A)*M+w,g=Math.sin(T+A)*I+S;break;case u.R:y=p=t[_++],x=g=t[_++];var k=t[_++],O=t[_++],C=y+k,D=x+O;if(i){if(v(y,x,C,x,e,o,l)||v(C,x,C,D,e,o,l)||v(C,D,y,D,e,o,l)||v(y,D,y,x,e,o,l))return!0}else h+=m(C,x,C,D,o,l),h+=m(y,D,y,x,o,l);break;case u.Z:if(i){if(v(p,g,y,x,e,o,l))return!0}else h+=m(p,g,y,x,o,l);p=y,g=x}}return i||n(g,x)||(h+=m(p,g,y,x,o,l)||0),0!==h}var u=i(29).CMD,h=i(88),c=i(148),d=i(89),f=i(147),p=i(63).normalizeRadian,g=i(18),m=i(90),v=h.containStroke,y=2*Math.PI,x=1e-4,_=[-1,-1,-1],b=[-1,-1];t.exports={contain:function(t,e,i){return l(t,0,!1,e,i)},containStroke:function(t,e,i,n){return l(t,e,!0,i,n)}}},function(t,e,i){"use strict";function n(t){var e=t[1][0]-t[0][0],i=t[1][1]-t[0][1];return Math.sqrt(e*e+i*i)}function o(t){return[(t[0][0]+t[1][0])/2,(t[0][1]+t[1][1])/2]}var r=i(25),a=function(){this._track=[]};a.prototype={constructor:a,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 o={points:[],touches:[],target:e,event:t},a=0,s=n.length;a<s;a++){var l=n[a],u=r.clientToLocal(i,l,{});o.points.push([u.zrX,u.zrY]),o.touches.push(l)}this._track.push(o)}},_recognize:function(t){for(var e in s)if(s.hasOwnProperty(e)){var i=s[e](this._track,t);if(i)return i}}};var s={pinch:function(t,e){var i=t.length;if(i){var r=(t[i-1]||{}).points,a=(t[i-2]||{}).points||r;if(a&&a.length>1&&r&&r.length>1){var s=n(r)/n(a);!isFinite(s)&&(s=1),e.pinchScale=s;var l=o(r);return e.pinchX=l[0],e.pinchY=l[1],{type:"pinch",target:t[0].target,event:e}}}}};t.exports=a},function(t,e){var i=function(){this.head=null,this.tail=null,this._len=0},n=i.prototype;n.insert=function(t){var e=new o(t);return this.insertEntry(e),e},n.insertEntry=function(t){this.head?(this.tail.next=t,t.prev=this.tail,this.tail=t):this.head=this.tail=t,this._len++},n.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--},n.len=function(){return this._len};var o=function(t){this.value=t,this.next,this.prev},r=function(t){this._list=new i,this._map={},this._maxSize=t||10},a=r.prototype;a.put=function(t,e){var i=this._list,n=this._map;if(null==n[t]){var o=i.len();if(o>=this._maxSize&&o>0){var r=i.head;i.remove(r),delete n[r.key]}var a=i.insert(e);a.key=t,n[t]=a}},a.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},a.clear=function(){this._list.clear(),this._map={}},t.exports=r},function(t,e,i){function n(t){return"mousewheel"===t&&d.browser.firefox?"DOMMouseScroll":t}function o(t,e,i){var n=t._gestureMgr;"start"===i&&n.clear();var o=n.recognize(e,t.handler.findHover(e.zrX,e.zrY,null),t.dom);if("end"===i&&n.clear(),o){var r=o.type;e.gestureEvent=r,t.handler.dispatchToElement(o.target,r,o.event)}}function r(t){t._touching=!0,clearTimeout(t._touchTimer),t._touchTimer=setTimeout(function(){t._touching=!1},700)}function a(t){var e=t.pointerType;return"pen"===e||"touch"===e}function s(t){function e(t,e){return function(){if(!e._touching)return t.apply(e,arguments)}}h.each(x,function(e){t._handlers[e]=h.bind(w[e],t)}),h.each(b,function(e){t._handlers[e]=h.bind(w[e],t)}),h.each(y,function(i){t._handlers[i]=e(w[i],t)})}function l(t){function e(e,i){h.each(e,function(e){p(t,n(e),i._handlers[e])},i)}c.call(this),this.dom=t,this._touching=!1,this._touchTimer,this._gestureMgr=new f,this._handlers={},s(this),d.pointerEventsSupported?e(b,this):(d.touchEventsSupported&&e(x,this),e(y,this))}var u=i(25),h=i(1),c=i(21),d=i(10),f=i(150),p=u.addEventListener,g=u.removeEventListener,m=u.normalizeEvent,v=300,y=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],x=["touchstart","touchend","touchmove"],_={pointerdown:1,pointerup:1,pointermove:1,pointerout:1},b=h.map(y,function(t){var e=t.replace("mouse","pointer");return _[e]?e:t}),w={mousemove:function(t){t=m(this.dom,t),this.trigger("mousemove",t)},mouseout:function(t){t=m(this.dom,t);var e=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=m(this.dom,t),t.zrByTouch=!0,this._lastTouchMoment=new Date,o(this,t,"start"),w.mousemove.call(this,t),w.mousedown.call(this,t),r(this)},touchmove:function(t){t=m(this.dom,t),t.zrByTouch=!0,o(this,t,"change"),w.mousemove.call(this,t),r(this)},touchend:function(t){t=m(this.dom,t),t.zrByTouch=!0,o(this,t,"end"),w.mouseup.call(this,t),+new Date-this._lastTouchMoment<v&&w.click.call(this,t),r(this)},pointerdown:function(t){w.mousedown.call(this,t)},pointermove:function(t){a(t)||w.mousemove.call(this,t)},pointerup:function(t){w.mouseup.call(this,t)},pointerout:function(t){a(t)||w.mouseout.call(this,t)}};h.each(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],function(t){w[t]=function(e){e=m(this.dom,e),this.trigger(t,e)}});var S=l.prototype;S.dispose=function(){for(var t=y.concat(x),e=0;e<t.length;e++){var i=t[e];g(this.dom,n(i),this._handlers[i])}},S.setCursor=function(t){this.dom.style.cursor=t||"default"},h.mixin(l,c),t.exports=l},function(t,e,i){var n=i(7);t.exports=n.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.setScale(e[0],e[1])},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(),n.prototype.getBoundingRect.call(this)}})},function(t,e,i){"use strict";var n=i(1),o=i(37),r=function(t,e,i,n,r){this.x=null==t?.5:t,this.y=null==e?.5:e,this.r=null==i?.5:i,this.type="radial",this.global=r||!1,o.call(this,n)};r.prototype={constructor:r},n.inherits(r,o),t.exports=r},function(t,e){t.exports={buildPath:function(t,e){var i,n,o,r,a=e.x,s=e.y,l=e.width,u=e.height,h=e.r;l<0&&(a+=l,l=-l),u<0&&(s+=u,u=-u),"number"==typeof h?i=n=o=r=h:h instanceof Array?1===h.length?i=n=o=r=h[0]:2===h.length?(i=o=h[0],n=r=h[1]):3===h.length?(i=h[0],n=r=h[1],o=h[2]):(i=h[0],n=h[1],o=h[2],r=h[3]):i=n=o=r=0;var c;i+n>l&&(c=i+n,i*=l/c,n*=l/c),o+r>l&&(c=o+r,o*=l/c,r*=l/c),n+o>u&&(c=n+o,n*=u/c,o*=u/c),i+r>u&&(c=i+r,i*=u/c,r*=u/c),t.moveTo(a+i,s),t.lineTo(a+l-n,s),0!==n&&t.quadraticCurveTo(a+l,s,a+l,s+n),t.lineTo(a+l,s+u-o),0!==o&&t.quadraticCurveTo(a+l,s+u,a+l-o,s+u),t.lineTo(a+r,s+u),0!==r&&t.quadraticCurveTo(a,s+u,a,s+u-r),t.lineTo(a,s+i),0!==i&&t.quadraticCurveTo(a,s,a+i,s)}}},function(t,e,i){var n=i(5),o=n.min,r=n.max,a=n.scale,s=n.distance,l=n.add;t.exports=function(t,e,i,u){var h,c,d,f,p=[],g=[],m=[],v=[];if(u){d=[1/0,1/0],f=[-(1/0),-(1/0)];for(var y=0,x=t.length;y<x;y++)o(d,d,t[y]),r(f,f,t[y]);o(d,d,u[0]),r(f,f,u[1])}for(var y=0,x=t.length;y<x;y++){var _=t[y];if(i)h=t[y?y-1:x-1],c=t[(y+1)%x];else{if(0===y||y===x-1){p.push(n.clone(t[y]));continue}h=t[y-1],c=t[y+1]}n.sub(g,c,h),a(g,g,e);var b=s(_,h),w=s(_,c),S=b+w;0!==S&&(b/=S,w/=S),a(m,g,-b),a(v,g,w);var M=l([],_,m),I=l([],_,v);u&&(r(M,M,d),o(M,M,f),r(I,I,d),o(I,I,f)),p.push(M),p.push(I)}return i&&p.push(p.shift()),p}},function(t,e,i){function n(t,e,i,n,o,r,a){var s=.5*(i-t),l=.5*(n-e);return(2*(e-i)+s+l)*a+(-3*(e-i)-2*s-l)*r+s*o+e}var o=i(5);t.exports=function(t,e){for(var i=t.length,r=[],a=0,s=1;s<i;s++)a+=o.distance(t[s-1],t[s]);var l=a/2;l=l<i?i:l;for(var s=0;s<l;s++){var u,h,c,d=s/(l-1)*(e?i:i-1),f=Math.floor(d),p=d-f,g=t[f%i];e?(u=t[(f-1+i)%i],h=t[(f+1)%i],c=t[(f+2)%i]):(u=t[0===f?f:f-1],h=t[f>i-2?i-1:f+1],c=t[f>i-3?i-1:f+2]);var m=p*p,v=p*m;r.push([n(u[0],g[0],h[0],c[0],p,m,v),n(u[1],g[1],h[1],c[1],p,m,v)])}return r}},function(t,e,i){t.exports=i(7).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,o=Math.max(e.r,0),r=e.startAngle,a=e.endAngle,s=e.clockwise,l=Math.cos(r),u=Math.sin(r);t.moveTo(l*o+i,u*o+n),t.arc(i,n,o,r,a,!s)}})},function(t,e,i){"use strict";function n(t,e,i){var n=t.cpx2,o=t.cpy2;return null===n||null===o?[(i?c:u)(t.x1,t.cpx1,t.cpx2,t.x2,e),(i?c:u)(t.y1,t.cpy1,t.cpy2,t.y2,e)]:[(i?h:l)(t.x1,t.cpx1,t.x2,e),(i?h:l)(t.y1,t.cpy1,t.y2,e)]}var o=i(18),r=i(5),a=o.quadraticSubdivide,s=o.cubicSubdivide,l=o.quadraticAt,u=o.cubicAt,h=o.quadraticDerivativeAt,c=o.cubicDerivativeAt,d=[];t.exports=i(7).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,o=e.x2,r=e.y2,l=e.cpx1,u=e.cpy1,h=e.cpx2,c=e.cpy2,f=e.percent;0!==f&&(t.moveTo(i,n),null==h||null==c?(f<1&&(a(i,l,o,f,d),l=d[1],o=d[2],a(n,u,r,f,d),u=d[1],r=d[2]),t.quadraticCurveTo(l,u,o,r)):(f<1&&(s(i,l,h,o,f,d),l=d[1],h=d[2],o=d[3],s(n,u,c,r,f,d),u=d[1],c=d[2],r=d[3]),t.bezierCurveTo(l,u,h,c,o,r)))},pointAt:function(t){return n(this.shape,t,!1)},tangentAt:function(t){var e=n(this.shape,t,!0);return r.normalize(e,e)}})},function(t,e,i){"use strict";t.exports=i(7).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)}})},function(t,e,i){t.exports=i(7).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=e.x1,n=e.y1,o=e.x2,r=e.y2,a=e.percent;0!==a&&(t.moveTo(i,n),a<1&&(o=i*(1-a)+o*a,r=n*(1-a)+r*a),t.lineTo(o,r))},pointAt:function(t){var e=this.shape;return[e.x1*(1-t)+e.x2*t,e.y1*(1-t)+e.y2*t]}})},function(t,e,i){var n=i(67);t.exports=i(7).extend({type:"polygon",shape:{points:null,smooth:!1,smoothConstraint:null},buildPath:function(t,e){n.buildPath(t,e,!0)}})},function(t,e,i){var n=i(67);t.exports=i(7).extend({type:"polyline",shape:{points:null,smooth:!1,smoothConstraint:null},style:{stroke:"#000",fill:null},buildPath:function(t,e){n.buildPath(t,e,!1)}})},function(t,e,i){var n=i(155);t.exports=i(7).extend({type:"rect",shape:{r:0,x:0,y:0,width:0,height:0},buildPath:function(t,e){var i=e.x,o=e.y,r=e.width,a=e.height;e.r?n.buildPath(t,e):t.rect(i,o,r,a),t.closePath()}})},function(t,e,i){t.exports=i(7).extend({type:"ring",shape:{cx:0,cy:0,r:0,r0:0},buildPath:function(t,e){var i=e.cx,n=e.cy,o=2*Math.PI;t.moveTo(i+e.r,n),t.arc(i,n,e.r,0,o,!1),t.moveTo(i+e.r0,n),t.arc(i,n,e.r0,0,o,!0)}})},function(t,e,i){var n=i(10),o=i(7),r=[["shadowBlur",0],["shadowColor","#000"],["shadowOffsetX",0],["shadowOffsetY",0]];t.exports=o.extend({type:"sector",shape:{cx:0,cy:0,r0:0,r:0,startAngle:0,endAngle:2*Math.PI,clockwise:!0},brush:n.browser.ie&&n.browser.version>=11?function(){var t,e=this.__clipPaths,i=this.style;if(e)for(var n=0;n<e.length;n++){var a=e[n]&&e[n].shape;if(a&&a.startAngle===a.endAngle){for(var s=0;s<r.length;s++)r[s][2]=i[r[s][0]],i[r[s][0]]=r[s][1];t=!0;break}}if(o.prototype.brush.apply(this,arguments),t)for(var s=0;s<r.length;s++)i[r[s][0]]=r[s][2]}:o.prototype.brush,buildPath:function(t,e){var i=e.cx,n=e.cy,o=Math.max(e.r0||0,0),r=Math.max(e.r,0),a=e.startAngle,s=e.endAngle,l=e.clockwise,u=Math.cos(a),h=Math.sin(a);t.moveTo(u*o+i,h*o+n),t.lineTo(u*r+i,h*r+n),t.arc(i,n,r,a,s,!l),t.lineTo(Math.cos(s)*o+i,Math.sin(s)*o+n),0!==o&&t.arc(i,n,o,s,a,l),t.closePath()}})},function(t,e,i){"use strict";var n=i(61),o=i(1),r=o.isString,a=o.isFunction,s=o.isObject,l=i(48),u=function(){this.animators=[]};u.prototype={constructor:u,animate:function(t,e){var i,r=!1,a=this,s=this.__zr;if(t){var u=t.split("."),h=a;r="shape"===u[0];for(var c=0,d=u.length;c<d;c++)h&&(h=h[u[c]]);h&&(i=h)}else i=a;if(!i)return void l('Property "'+t+'" is not existed in element '+a.id);var f=a.animators,p=new n(i,e);return p.during(function(t){a.dirty(r)}).done(function(){f.splice(o.indexOf(f,p),1)}),f.push(p),s&&s.animation.addAnimator(p),p},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,o){function s(){u--,u||o&&o()}r(i)?(o=n,n=i,i=0):a(n)?(o=n,n="linear",i=0):a(i)?(o=i,i=0):a(e)?(o=e,e=500):e||(e=500),this.stopAnimation(),this._animateToShallow("",this,t,e,i,n,o);var l=this.animators.slice(),u=l.length;u||o&&o();for(var h=0;h<l.length;h++)l[h].done(s).start(n)},_animateToShallow:function(t,e,i,n,r){var a={},l=0;for(var u in i)if(i.hasOwnProperty(u))if(null!=e[u])s(i[u])&&!o.isArrayLike(i[u])?this._animateToShallow(t?t+"."+u:u,e[u],i[u],n,r):(a[u]=i[u],l++);else if(null!=i[u])if(t){var h={};h[t]={},h[t][u]=i[u],this.attr(h)}else this.attr(u,i[u]);return l>0&&this.animate(t,!1).when(null==n?500:n,a).delay(r||0),this}},t.exports=u},function(t,e){function i(){this.on("mousedown",this._dragStart,this),this.on("mousemove",this._drag,this),this.on("mouseup",this._dragEnd,this),this.on("globalout",this._dragEnd,this)}i.prototype={constructor:i,_dragStart:function(t){var e=t.target;e&&e.draggable&&(this._draggingTarget=e,e.dragging=!0,this._x=t.offsetX,this._y=t.offsetY,this.dispatchToElement(e,"dragstart",t.event))},_drag:function(t){var e=this._draggingTarget;if(e){var i=t.offsetX,n=t.offsetY,o=i-this._x,r=n-this._y;this._x=i,this._y=n,e.drift(o,r,t),this.dispatchToElement(e,"drag",t.event);var a=this.findHover(i,n,e),s=this._dropTarget;this._dropTarget=a,e!==a&&(s&&a!==s&&this.dispatchToElement(s,"dragleave",t.event),a&&a!==s&&this.dispatchToElement(a,"dragenter",t.event))}},_dragEnd:function(t){var e=this._draggingTarget;e&&(e.dragging=!1),this.dispatchToElement(e,"dragend",t.event),this._dropTarget&&this.dispatchToElement(this._dropTarget,"drop",t.event),this._draggingTarget=null,this._dropTarget=null}},t.exports=i},function(t,e,i){function n(t,e,i,n,o,r,a,s,l,u,h){var g=l*(p/180),y=f(g)*(t-i)/2+d(g)*(e-n)/2,x=-1*d(g)*(t-i)/2+f(g)*(e-n)/2,_=y*y/(a*a)+x*x/(s*s);_>1&&(a*=c(_),s*=c(_));var b=(o===r?-1:1)*c((a*a*(s*s)-a*a*(x*x)-s*s*(y*y))/(a*a*(x*x)+s*s*(y*y)))||0,w=b*a*x/s,S=b*-s*y/a,M=(t+i)/2+f(g)*w-d(g)*S,I=(e+n)/2+d(g)*w+f(g)*S,T=v([1,0],[(y-w)/a,(x-S)/s]),A=[(y-w)/a,(x-S)/s],L=[(-1*y-w)/a,(-1*x-S)/s],C=v(A,L);m(A,L)<=-1&&(C=p),m(A,L)>=1&&(C=0),0===r&&C>0&&(C-=2*p),1===r&&C<0&&(C+=2*p),h.addData(u,M,I,a,s,T,C,g,r)}function o(t){if(!t)return[];var e,i=t.replace(/-/g," -").replace(/  /g," ").replace(/ /g,",").replace(/,,/g,",");for(e=0;e<h.length;e++)i=i.replace(new RegExp(h[e],"g"),"|"+h[e]);var o,r=i.split("|"),a=0,l=0,u=new s,c=s.CMD;for(e=1;e<r.length;e++){var d,f=r[e],p=f.charAt(0),g=0,m=f.slice(1).replace(/e,-/g,"e-").split(",");m.length>0&&""===m[0]&&m.shift();for(var v=0;v<m.length;v++)m[v]=parseFloat(m[v]);for(;g<m.length&&!isNaN(m[g])&&!isNaN(m[0]);){var y,x,_,b,w,S,M,I=a,T=l;switch(p){case"l":a+=m[g++],l+=m[g++],d=c.L,u.addData(d,a,l);break;case"L":a=m[g++],l=m[g++],d=c.L,u.addData(d,a,l);break;case"m":a+=m[g++],l+=m[g++],d=c.M,u.addData(d,a,l),p="l";break;case"M":a=m[g++],l=m[g++],d=c.M,u.addData(d,a,l),p="L";break;case"h":a+=m[g++],d=c.L,u.addData(d,a,l);break;case"H":a=m[g++],d=c.L,u.addData(d,a,l);break;case"v":l+=m[g++],d=c.L,u.addData(d,a,l);break;case"V":l=m[g++],d=c.L,u.addData(d,a,l);break;case"C":d=c.C,u.addData(d,m[g++],m[g++],m[g++],m[g++],m[g++],m[g++]),a=m[g-2],l=m[g-1];break;case"c":d=c.C,u.addData(d,m[g++]+a,m[g++]+l,m[g++]+a,m[g++]+l,m[g++]+a,m[g++]+l),a+=m[g-2],l+=m[g-1];break;case"S":y=a,x=l;var A=u.len(),L=u.data;o===c.C&&(y+=a-L[A-4],x+=l-L[A-3]),d=c.C,I=m[g++],T=m[g++],a=m[g++],l=m[g++],u.addData(d,y,x,I,T,a,l);break;case"s":y=a,x=l;var A=u.len(),L=u.data;o===c.C&&(y+=a-L[A-4],x+=l-L[A-3]),d=c.C,I=a+m[g++],T=l+m[g++],a+=m[g++],l+=m[g++],u.addData(d,y,x,I,T,a,l);break;case"Q":I=m[g++],T=m[g++],a=m[g++],l=m[g++],d=c.Q,u.addData(d,I,T,a,l);break;case"q":I=m[g++]+a,T=m[g++]+l,a+=m[g++],l+=m[g++],d=c.Q,u.addData(d,I,T,a,l);break;case"T":y=a,x=l;var A=u.len(),L=u.data;o===c.Q&&(y+=a-L[A-4],x+=l-L[A-3]),a=m[g++],l=m[g++],d=c.Q,u.addData(d,y,x,a,l);break;case"t":y=a,x=l;var A=u.len(),L=u.data;o===c.Q&&(y+=a-L[A-4],x+=l-L[A-3]),a+=m[g++],l+=m[g++],d=c.Q,u.addData(d,y,x,a,l);break;case"A":_=m[g++],b=m[g++],w=m[g++],S=m[g++],M=m[g++],I=a,T=l,a=m[g++],l=m[g++],d=c.A,n(I,T,a,l,S,M,_,b,w,d,u);break;case"a":_=m[g++],b=m[g++],w=m[g++],S=m[g++],M=m[g++],I=a,T=l,a+=m[g++],l+=m[g++],d=c.A,n(I,T,a,l,S,M,_,b,w,d,u)}}"z"!==p&&"Z"!==p||(d=c.Z,u.addData(d)),o=d}return u.toStatic(),u}function r(t,e){var i,n=o(t);return e=e||{},e.buildPath=function(t){t.setData(n.data),i&&l(t,i);var e=t.getContext();e&&t.rebuildPath(e)},e.applyTransform=function(t){i||(i=u.create()),u.mul(i,t,i),this.dirty(!0)},e}var a=i(7),s=i(29),l=i(170),u=i(20),h=["m","M","l","L","v","V","h","H","z","Z","c","C","q","Q","t","T","s","S","a","A"],c=Math.sqrt,d=Math.sin,f=Math.cos,p=Math.PI,g=function(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])},m=function(t,e){return(t[0]*e[0]+t[1]*e[1])/(g(t)*g(e))},v=function(t,e){return(t[0]*e[1]<t[1]*e[0]?-1:1)*Math.acos(m(t,e))};t.exports={createFromString:function(t,e){return new a(r(t,e))},extendFromString:function(t,e){return a.extend(r(t,e))},mergePath:function(t,e){for(var i=[],n=t.length,o=0;o<n;o++){var r=t[o];r.__dirty&&r.buildPath(r.path,r.shape,!0),i.push(r.path)}var s=new a(e);return s.buildPath=function(t){t.appendPath(i);var e=t.getContext();e&&t.rebuildPath(e)},s}}},function(t,e,i){function n(t,e){var i,n,r,h,c,d,f=t.data,p=o.M,g=o.C,m=o.L,v=o.R,y=o.A,x=o.Q;for(r=0,h=0;r<f.length;){switch(i=f[r++],h=r,n=0,i){case p:n=1;break;case m:n=1;break;case g:n=3;break;case x:n=2;break;case y:var _=e[4],b=e[5],w=l(e[0]*e[0]+e[1]*e[1]),S=l(e[2]*e[2]+e[3]*e[3]),M=u(-e[1]/S,e[0]/w);f[r++]+=_,f[r++]+=b,f[r++]*=w,f[r++]*=S,f[r++]+=M,f[r++]+=M,r+=2,h=r;break;case v:d[0]=f[r++],d[1]=f[r++],a(d,d,e),f[h++]=d[0],f[h++]=d[1],d[0]+=f[r++],d[1]+=f[r++],a(d,d,e),f[h++]=d[0],f[h++]=d[1]}for(c=0;c<n;c++){var d=s[c];d[0]=f[r++],d[1]=f[r++],a(d,d,e),f[h++]=d[0],f[h++]=d[1]}}}var o=i(29).CMD,r=i(5),a=r.applyTransform,s=[[],[],[]],l=Math.sqrt,u=Math.atan2;t.exports=n},function(t,e,i){if(!i(10).canvasSupported){var n,o="urn:schemas-microsoft-com:vml",r=window,a=r.document,s=!1;try{!a.namespaces.zrvml&&a.namespaces.add("zrvml",o),n=function(t){return a.createElement("<zrvml:"+t+' class="zrvml">')}}catch(l){n=function(t){return a.createElement("<"+t+' xmlns="'+o+'" class="zrvml">')}}var u=function(){if(!s){s=!0;var t=a.styleSheets;t.length<31?a.createStyleSheet().addRule(".zrvml","behavior:url(#default#VML)"):t[0].addRule(".zrvml","behavior:url(#default#VML)")}};t.exports={doc:a,initVML:u,createNode:n}}},function(t,e,i){"use strict";function n(t){return null==t.value?t:t.value}var o=i(14),r=i(27),a=i(292),s=i(1),l={_baseAxisDim:null,getInitialData:function(t,e){var i,a,s=e.getComponent("xAxis",this.get("xAxisIndex")),l=e.getComponent("yAxis",this.get("yAxisIndex")),u=s.get("type"),h=l.get("type");"category"===u?(t.layout="horizontal",i=s.getCategories(),a=!0):"category"===h?(t.layout="vertical",i=l.getCategories(),a=!0):t.layout=t.layout||"horizontal",this._baseAxisDim="horizontal"===t.layout?"x":"y";var c=t.data,d=this.dimensions=["base"].concat(this.valueDimensions);r(d,c);var f=new o(d,this);return f.initData(c,i?i.slice():null,function(t,e,i,o){var r=n(t);return a?"base"===e?i:r[o-1]:r[o]}),f},coordDimToDataDim:function(t){var e=this.valueDimensions.slice(),i=["base"],n={horizontal:{x:i,y:e},vertical:{x:e,y:i}};return n[this.get("layout")][t]},dataDimToCoordDim:function(t){var e;return s.each(["x","y"],function(i,n){var o=this.coordDimToDataDim(i);s.indexOf(o,t)>=0&&(e=i)},this),e},getBaseAxis:function(){var t=this._baseAxisDim;return this.ecModel.getComponent(t+"Axis",this.get(t+"AxisIndex")).axis}},u={init:function(){var t=this._whiskerBoxDraw=new a(this.getStyleUpdater());this.group.add(t.group)},render:function(t,e,i){this._whiskerBoxDraw.updateData(t.getData())},remove:function(t){this._whiskerBoxDraw.remove()}};t.exports={seriesModelMixin:l,viewMixin:u}},function(t,e,i){function n(t,e){var i,n=this.getBoundingRect(),o=t.get("layoutCenter"),r=t.get("layoutSize"),s=e.getWidth(),u=e.getHeight(),h=t.get("aspectScale")||.75,c=n.width/n.height*h,d=!1;o&&r&&(o=[l.parsePercent(o[0],s),l.parsePercent(o[1],u)],r=l.parsePercent(r,Math.min(s,u)),isNaN(o[0])||isNaN(o[1])||isNaN(r)||(d=!0));var f;if(d){var f={};c>1?(f.width=r,f.height=r/c):(f.height=r,f.width=r*c),f.y=o[1]-f.height/2,f.x=o[0]-f.width/2}else i=t.getBoxLayoutParams(),i.aspect=c,f=a.getLayoutRect(i,{width:s,height:u});this.setViewRect(f.x,f.y,f.width,f.height),this.setCenter(t.get("center")),this.setZoom(t.get("zoom"))}function o(t,e){s.each(e.get("geoCoord"),function(e,i){t.addGeoCoord(i,e)})}var r=i(369),a=i(12),s=i(1),l=i(4),u={},h={dimensions:r.prototype.dimensions,create:function(t,e){var i=[];t.eachComponent("geo",function(t,a){var s=t.get("map"),l=u[s],h=new r(s+a,s,l&&l.geoJson,l&&l.specialAreas,t.get("nameMap"));h.zoomLimit=t.get("scaleLimit"),i.push(h),o(h,t),t.coordinateSystem=h,h.model=t,h.resize=n,h.resize(t,e)}),t.eachSeries(function(t){var e=t.get("coordinateSystem");if("geo"===e){var n=t.get("geoIndex")||0;t.coordinateSystem=i[n]}});var a={};return t.eachSeriesByType("map",function(t){if(!t.getHostGeoModel()){var e=t.getMapType();a[e]=a[e]||[],a[e].push(t)}}),s.each(a,function(t,a){var l=u[a],h=s.map(t,function(t){return t.get("nameMap")}),c=new r(a,a,l&&l.geoJson,l&&l.specialAreas,s.mergeAll(h));c.zoomLimit=s.retrieve.apply(null,s.map(t,function(t){return t.get("scaleLimit")})),i.push(c),c.resize=n,c.resize(t[0],e),s.each(t,function(t){t.coordinateSystem=c,o(c,t)})}),i},registerMap:function(t,e,i){e.geoJson&&!e.features&&(i=e.specialAreas,e=e.geoJson),"string"==typeof e&&(e="undefined"!=typeof JSON&&JSON.parse?JSON.parse(e):new Function("return ("+e+");")()),u[t]={geoJson:e,specialAreas:i}},getMap:function(t){return u[t]},getFilledRegions:function(t,e){var i=(t||[]).slice(),n=h.getMap(e),o=n&&n.geoJson;if(!o)return t;for(var r={},a=o.features,s=0;s<i.length;s++)r[i[s].name]=i[s];for(var s=0;s<a.length;s++){var l=a[s].properties.name;r[l]||i.push({name:l})}return i}},c=i(2);c.registerMap=h.registerMap,c.getMap=h.getMap,c.loadMap=function(){},c.registerCoordinateSystem("geo",h),t.exports=h},function(t,e,i){function n(t){if(t)for(var e in t)if(t.hasOwnProperty(e))return!0}var o=i(1),r=i(73),a=o.each,s={createVisualMappings:function(t,e,i){function n(){var t=function(){};t.prototype.__hidden=t.prototype;var e=new t;return e}var s={};return a(e,function(e){var l=s[e]=n();a(t[e],function(t,n){if(r.isValidType(n)){var a={type:n,visual:t};i&&i(a,e),l[n]=new r(a),"opacity"===n&&(a=o.clone(a),a.type="colorAlpha",l.__hidden.__alphaForOpacity=new r(a))}})}),s},replaceVisualOption:function(t,e,i){var r;o.each(i,function(t){e.hasOwnProperty(t)&&n(e[t])&&(r=!0)}),r&&o.each(i,function(i){e.hasOwnProperty(i)&&n(e[i])?t[i]=o.clone(e[i]):delete t[i]})},applyVisual:function(t,e,i,n,a,s){function l(t){return i.getItemVisual(d,t)}function u(t,e){i.setItemVisual(d,t,e)}function h(t,o){d=null==s?t:o;var r=i.getRawDataItem(d);if(!r||r.visualMap!==!1)for(var h=n.call(a,t),f=e[h],p=c[h],g=0,m=p.length;g<m;g++){var v=p[g];f[v]&&f[v].applyVisual(t,l,u)}}var c={};o.each(t,function(t){var i=r.prepareVisualTypes(e[t]);c[t]=i});var d;null==s?i.each(h,!0):i.each([s],h,!0)}};t.exports=s},function(t,e){function i(){throw new Error("setTimeout has not been defined")}function n(){throw new Error("clearTimeout has not been defined")}function o(t){if(h===setTimeout)return setTimeout(t,0);if((h===i||!h)&&setTimeout)return h=setTimeout,setTimeout(t,0);try{return h(t,0)}catch(e){try{return h.call(null,t,0)}catch(e){return h.call(this,t,0)}}}function r(t){if(c===clearTimeout)return clearTimeout(t);if((c===n||!c)&&clearTimeout)return c=clearTimeout,clearTimeout(t);try{return c(t)}catch(e){try{return c.call(null,t)}catch(e){return c.call(this,t)}}}function a(){g&&f&&(g=!1,f.length?p=f.concat(p):m=-1,p.length&&s())}function s(){if(!g){var t=o(a);g=!0;for(var e=p.length;e;){for(f=p,p=[];++m<e;)f&&f[m].run();m=-1,e=p.length}f=null,g=!1,r(t)}}function l(t,e){this.fun=t,this.array=e}function u(){}var h,c,d=t.exports={};!function(){try{h="function"==typeof setTimeout?setTimeout:i}catch(t){h=i}try{c="function"==typeof clearTimeout?clearTimeout:n}catch(t){c=n}}();var f,p=[],g=!1,m=-1;d.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var i=1;i<arguments.length;i++)e[i-1]=arguments[i];p.push(new l(t,e)),1!==p.length||g||o(s)},l.prototype.run=function(){this.fun.apply(null,this.array)},d.title="browser",d.browser=!0,d.env={},d.argv=[],d.version="",d.versions={},d.on=u,d.addListener=u,d.once=u,d.off=u,d.removeListener=u,d.removeAllListeners=u,d.emit=u,d.binding=function(t){throw new Error("process.binding is not supported")},d.cwd=function(){return"/"},d.chdir=function(t){throw new Error("process.chdir is not supported")},d.umask=function(){return 0}},function(t,e,i){function n(){this.group=new o.Group,this._symbolEl=new a({})}var o=i(3),r=i(24),a=o.extendShape({shape:{points:null,sizes:null},symbolProxy:null,buildPath:function(t,e){for(var i=e.points,n=e.sizes,o=this.symbolProxy,r=o.shape,a=0;a<i.length;a++){var s=i[a],l=n[a];l[0]<4?t.rect(s[0]-l[0]/2,s[1]-l[1]/2,l[0],l[1]):(r.x=s[0]-l[0]/2,r.y=s[1]-l[1]/2,r.width=l[0],r.height=l[1],o.buildPath(t,r,!0))}},findDataIndex:function(t,e){for(var i=this.shape,n=i.points,o=i.sizes,r=n.length-1;r>=0;r--){var a=n[r],s=o[r],l=a[0]-s[0]/2,u=a[1]-s[1]/2;if(t>=l&&e>=u&&t<=l+s[0]&&e<=u+s[1])return r}return-1}}),s=n.prototype;s.updateData=function(t){this.group.removeAll();var e=this._symbolEl,i=t.hostModel;e.setShape({points:t.mapArray(t.getItemLayout),sizes:t.mapArray(function(e){var i=t.getItemVisual(e,"symbolSize");return i instanceof Array||(i=[i,i]),i})}),e.symbolProxy=r.createSymbol(t.getVisual("symbol"),0,0,0,0),e.setColor=e.symbolProxy.setColor,
-e.useStyle(i.getModel("itemStyle.normal").getItemStyle(["color"]));var n=t.getVisual("color");n&&e.setColor(n),e.seriesIndex=i.seriesIndex,e.on("mousemove",function(t){e.dataIndex=null;var i=e.findDataIndex(t.offsetX,t.offsetY);i>0&&(e.dataIndex=i)}),this.group.add(e)},s.updateLayout=function(t){var e=t.getData();this._symbolEl.setShape({points:e.mapArray(e.getItemLayout)})},s.remove=function(){this.group.removeAll()},t.exports=n},function(t,e,i){function n(t){return isNaN(+t.cpx1)||isNaN(+t.cpy1)}var o=i(3),r=i(5),a=o.Line.prototype,s=o.BezierCurve.prototype;t.exports=o.extendShape({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){(n(e)?a:s).buildPath(t,e)},pointAt:function(t){return n(this.shape)?a.pointAt.call(this,t):s.pointAt.call(this,t)},tangentAt:function(t){var e=this.shape,i=n(e)?[e.x2-e.x1,e.y2-e.y1]:s.tangentAt.call(this,t);return r.normalize(i,i)}})},function(t,e,i){var n=i(1),o=i(2);i(179),i(180),o.registerVisual(n.curry(i(45),"scatter","circle",null)),o.registerLayout(n.curry(i(56),"scatter")),i(31)},function(t,e,i){"use strict";var n=i(35),o=i(16);t.exports=o.extend({type:"series.scatter",dependencies:["grid","polar"],getInitialData:function(t,e){var i=n(t.data,this,e);return i},brushSelector:"point",defaultOption:{coordinateSystem:"cartesian2d",zlevel:0,z:2,legendHoverLink:!0,hoverAnimation:!0,symbolSize:10,large:!1,largeThreshold:2e3,itemStyle:{normal:{opacity:.8}}}})},function(t,e,i){var n=i(39),o=i(176);i(2).extendChartView({type:"scatter",init:function(){this._normalSymbolDraw=new n,this._largeSymbolDraw=new o},render:function(t,e,i){var n=t.getData(),o=this._largeSymbolDraw,r=this._normalSymbolDraw,a=this.group,s=t.get("large")&&n.count()>t.get("largeThreshold")?o:r;this._symbolDraw=s,s.updateData(n),a.add(s.group),a.remove(s===o?r.group:o.group)},updateLayout:function(t){this._symbolDraw.updateLayout(t)},remove:function(t,e){this._symbolDraw&&this._symbolDraw.remove(e,!0)},dispose:function(){}})},function(t,e,i){i(114),i(40),i(41),i(187),i(188),i(183),i(184),i(112),i(111)},function(t,e,i){function n(t,e){var i=[1/0,-(1/0)];return u(e,function(e){var n=e.getData();n&&u(e.coordDimToDataDim(t),function(t){var e=n.getDataExtent(t);e[0]<i[0]&&(i[0]=e[0]),e[1]>i[1]&&(i[1]=e[1])})},this),i[1]<i[0]&&(i=[NaN,NaN]),i}function o(t,e){var i=e.getMin(!0);null!=i&&"dataMin"!==i&&(t[0]=i);var n=e.getMax(!0);return null!=n&&"dataMax"!==n&&(t[1]=n),e.get("scale",!0)||(t[0]>0&&(t[0]=0),t[1]<0&&(t[1]=0)),t}function r(t,e){var i=t.getAxisModel(),n=t._percentWindow,o=t._valueWindow;if(n){var r=s.getPixelPrecision(o,[0,500]),a=e||0===n[0]&&100===n[1];i.setRange(a?null:+o[0].toFixed(r),a?null:+o[1].toFixed(r))}}var a=i(1),s=i(4),l=i(68),u=a.each,h=s.asc,c=function(t,e,i,n){this._dimName=t,this._axisIndex=e,this._valueWindow,this._percentWindow,this._dataExtent,this.ecModel=n,this._dataZoomModel=i};c.prototype={constructor:c,hostedBy:function(t){return this._dataZoomModel===t},getDataValueWindow:function(){return this._valueWindow.slice()},getDataPercentWindow:function(){return this._percentWindow.slice()},getTargetSeriesModels:function(){var t=[],e=this.ecModel;return e.eachSeries(function(i){if(l.isCoordSupported(i.get("coordinateSystem"))){var n=this._dimName,o=e.queryComponents({mainType:n+"Axis",index:i.get(n+"AxisIndex"),id:i.get(n+"AxisId")})[0];this._axisIndex===(o&&o.componentIndex)&&t.push(i)}},this),t},getAxisModel:function(){return this.ecModel.getComponent(this._dimName+"Axis",this._axisIndex)},getOtherAxisModel:function(){var t,e,i=this._dimName,n=this.ecModel,o=this.getAxisModel(),r="x"===i||"y"===i;r?(e="gridIndex",t="x"===i?"y":"x"):(e="polarIndex",t="angle"===i?"radius":"angle");var a;return n.eachComponent(t+"Axis",function(t){(t.get(e)||0)===(o.get(e)||0)&&(a=t)}),a},calculateDataWindow:function(t){var e=this._dataExtent,i=this.getAxisModel(),n=i.axis.scale,r=[0,100],a=[t.start,t.end],l=[];return e=e.slice(),o(e,i),u(["startValue","endValue"],function(e){l.push(null!=t[e]?n.parse(t[e]):null)}),u([0,1],function(t){var i=l[t],o=a[t];null!=o||null==i?(null==o&&(o=r[t]),i=n.parse(s.linearMap(o,r,e,!0))):o=s.linearMap(i,e,r,!0),l[t]=i,a[t]=o}),{valueWindow:h(l),percentWindow:h(a)}},reset:function(t){if(t===this._dataZoomModel){this._dataExtent=n(this._dimName,this.getTargetSeriesModels());var e=this.calculateDataWindow(t.option);this._valueWindow=e.valueWindow,this._percentWindow=e.percentWindow,r(this)}},restore:function(t){t===this._dataZoomModel&&(this._valueWindow=this._percentWindow=null,r(this,!0))},filterData:function(t){function e(t){return t>=r[0]&&t<=r[1]}if(t===this._dataZoomModel){var i=this._dimName,n=this.getTargetSeriesModels(),o=t.get("filterMode"),r=this._valueWindow,a=this.getOtherAxisModel();t.get("$fromToolbox")&&a&&"category"===a.get("type")&&(o="empty"),u(n,function(t){var n=t.getData();n&&u(t.coordDimToDataDim(i),function(i){"empty"===o?t.setData(n.map(i,function(t){return e(t)?t:NaN})):n.filterSelf(i,e)})})}}},t.exports=c},function(t,e,i){t.exports=i(40).extend({type:"dataZoom.inside",defaultOption:{disabled:!1,zoomLock:!1}})},function(t,e,i){function n(t){var e=[0,100];return!(t[0]<=e[1])&&(t[0]=e[1]),!(t[1]<=e[1])&&(t[1]=e[1]),!(t[0]>=e[0])&&(t[0]=e[0]),!(t[1]>=e[0])&&(t[1]=e[0]),t}var o=i(41),r=i(1),a=i(85),s=i(189),l=r.bind,u=o.extend({type:"dataZoom.inside",init:function(t,e){this._range},render:function(t,e,i,n){u.superApply(this,"render",arguments),s.shouldRecordRange(n,t.id)&&(this._range=t.getPercentRange()),r.each(this.getTargetCoordInfo(),function(e,n){var o=r.map(e,function(t){return s.generateCoordId(t.model)});r.each(e,function(e){var r=e.model;s.register(i,{coordId:s.generateCoordId(r),allCoordIds:o,containsPoint:function(t,e){return r.coordinateSystem.containPoint([t,e])},dataZoomId:t.id,throttleRate:t.get("throttle",!0),panGetRange:l(this._onPan,this,e,n),zoomGetRange:l(this._onZoom,this,e,n)})},this)},this)},dispose:function(){s.unregister(this.api,this.dataZoomModel.id),u.superApply(this,"dispose",arguments),this._range=null},_onPan:function(t,e,i,n,o,r,s,l,u){if(this.dataZoomModel.option.disabled)return this._range;var c=this._range.slice(),d=t.axisModels[0];if(d){var f=h[e]([r,s],[l,u],d,i,t),p=f.signal*(c[1]-c[0])*f.pixel/f.pixelLength;return a(p,c,[0,100],"rigid"),this._range=c}},_onZoom:function(t,e,i,o,r,a){var s=this.dataZoomModel.option;if(s.disabled||s.zoomLock)return this._range;var l=this._range.slice(),u=t.axisModels[0];if(u){var c=h[e](null,[r,a],u,i,t),d=(c.pixel-c.pixelStart)/c.pixelLength*(l[1]-l[0])+l[0];return o=Math.max(1/o,0),l[0]=(l[0]-d)*o+d,l[1]=(l[1]-d)*o+d,this._range=n(l)}}}),h={grid:function(t,e,i,n,o){var r=i.axis,a={},s=o.model.coordinateSystem.getRect();return t=t||[0,0],"x"===r.dim?(a.pixel=e[0]-t[0],a.pixelLength=s.width,a.pixelStart=s.x,a.signal=r.inverse?1:-1):(a.pixel=e[1]-t[1],a.pixelLength=s.height,a.pixelStart=s.y,a.signal=r.inverse?-1:1),a},polar:function(t,e,i,n,o){var r=i.axis,a={},s=o.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?(a.pixel=e[0]-t[0],a.pixelLength=l[1]-l[0],a.pixelStart=l[0],a.signal=r.inverse?1:-1):(a.pixel=e[1]-t[1],a.pixelLength=u[1]-u[0],a.pixelStart=u[0],a.signal=r.inverse?-1:1),a},singleAxis:function(t,e,i,n,o){var r=i.axis,a=o.model.coordinateSystem.getRect(),s={};return t=t||[0,0],"horizontal"===r.orient?(s.pixel=e[0]-t[0],s.pixelLength=a.width,s.pixelStart=a.x,s.signal=r.inverse?1:-1):(s.pixel=e[1]-t[1],s.pixelLength=a.height,s.pixelStart=a.y,s.signal=r.inverse?-1:1),s}};t.exports=u},function(t,e,i){var n=i(40);t.exports=n.extend({type:"dataZoom.select"})},function(t,e,i){t.exports=i(41).extend({type:"dataZoom.select"})},function(t,e,i){var n=i(40),o=n.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"}}});t.exports=o},function(t,e,i){function n(t){var e={x:"y",y:"x",radius:"angle",angle:"radius"};return e[t]}var o=i(1),r=i(3),a=i(47),s=i(41),l=r.Rect,u=i(4),h=u.linearMap,c=i(12),d=i(85),f=u.asc,p=o.bind,g=o.each,m=7,v=1,y=30,x="horizontal",_="vertical",b=5,w=["line","bar","candlestick","scatter"],S=s.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){return S.superApply(this,"render",arguments),a.createOrUpdate(this,"_dispatchZoomAction",this.dataZoomModel.get("throttle"),"fixRate"),this._orient=t.get("orient"),this.dataZoomModel.get("show")===!1?void this.group.removeAll():(n&&"dataZoom"===n.type&&n.from===this.uid||this._buildView(),void this._updateView())},remove:function(){S.superApply(this,"remove",arguments),a.clear(this,"_dispatchZoomAction")},dispose:function(){S.superApply(this,"dispose",arguments),a.clear(this,"_dispatchZoomAction")},_buildView:function(){var t=this.group;t.removeAll(),this._resetLocation(),this._resetInterval();var e=this._displayables.barGroup=new r.Group;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()},r=this._orient===x?{right:n.width-i.x-i.width,top:n.height-y-m,width:i.width,height:y}:{right:m,top:i.y,width:y,height:i.height},a=c.getLayoutParams(t.option);o.each(["right","top","width","height"],function(t){"ph"===a[t]&&(a[t]=r[t])});var s=c.getLayoutRect(a,n,t.padding);this._location={x:s.x,y:s.y},this._size=[s.width,s.height],this._orient===_&&this._size.reverse()},_positionGroup:function(){var t=this.group,e=this._location,i=this._orient,n=this.dataZoomModel.getFirstTargetAxisModel(),o=n&&n.get("inverse"),r=this._displayables.barGroup,a=(this._dataShadowInfo||{}).otherAxisInverse;r.attr(i!==x||o?i===x&&o?{scale:a?[-1,1]:[-1,-1]}:i!==_||o?{scale:a?[-1,-1]:[-1,1],rotation:Math.PI/2}:{scale:a?[1,-1]:[1,1],rotation:Math.PI/2}:{scale:a?[1,1]:[1,-1]});var s=t.getBoundingRect([r]);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;this._displayables.barGroup.add(new l({silent:!0,shape:{x:0,y:0,width:e[0],height:e[1]},style:{fill:t.get("backgroundColor")},z2:-40}))},_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 s=n.getDataExtent(a),l=.3*(s[1]-s[0]);s=[s[0]-l,s[1]+l];var u,c=[0,e[1]],d=[0,e[0]],f=[[e[0],0],[0,0]],p=[],g=d[1]/(n.count()-1),m=0,v=Math.round(n.count()/e[0]);n.each([a],function(t,e){if(v>0&&e%v)return void(m+=g);var i=null==t||isNaN(t)||""===t,n=i?0:h(t,s,c,!0);i&&!u&&e?(f.push([f[f.length-1][0],0]),p.push([p[p.length-1][0],0])):!i&&u&&(f.push([m,0]),p.push([m,0])),f.push([m,n]),p.push([m,n]),m+=g,u=i});var y=this.dataZoomModel;this._displayables.barGroup.add(new r.Polygon({shape:{points:f},style:o.defaults({fill:y.get("dataBackgroundColor")},y.getModel("dataBackground.areaStyle").getAreaStyle()),silent:!0,z2:-20})),this._displayables.barGroup.add(new r.Polyline({shape:{points:p},style:y.getModel("dataBackground.lineStyle").getLineStyle(),silent:!0,z2:-19}))}}},_prepareDataShadowInfo:function(){var t=this.dataZoomModel,e=t.get("showDataShadow");if(e!==!1){var i,r=this.ecModel;return t.eachTargetAxis(function(a,s){var l=t.getAxisProxy(a.name,s).getTargetSeriesModels();o.each(l,function(t){if(!(i||e!==!0&&o.indexOf(w,t.get("type"))<0)){var l,u=r.getComponent(a.axis,s).axis,h=n(a.name),c=t.coordinateSystem;null!=h&&c.getOtherAxis&&(l=c.getOtherAxis(u).inverse),i={thisAxis:u,series:t,thisDim:a.name,otherDim:h,otherAxisInverse:l}}},this)},this),i}},_renderHandle:function(){var t=this._displayables,e=t.handles=[],i=t.handleLabels=[],n=this._displayables.barGroup,o=this._size,a=this.dataZoomModel;n.add(t.filler=new l({draggable:!0,cursor:"move",drift:p(this._onDragMove,this,"all"),ondragstart:p(this._showDataInfo,this,!0),ondragend:p(this._onDragEnd,this),onmouseover:p(this._showDataInfo,this,!0),onmouseout:p(this._showDataInfo,this,!1),style:{fill:a.get("fillerColor"),textPosition:"inside"}})),n.add(new l(r.subPixelOptimizeRect({silent:!0,shape:{x:0,y:0,width:o[0],height:o[1]},style:{stroke:a.get("dataBackgroundColor")||a.get("borderColor"),lineWidth:v,fill:"rgba(0,0,0,0)"}})));var s=a.get("handleIcon");g([0,1],function(t){var o=r.makePath(s,{style:{strokeNoScale:!0},rectHover:!0,cursor:"vertical"===this._orient?"ns-resize":"ew-resize",draggable:!0,drift:p(this._onDragMove,this,t),ondragend:p(this._onDragEnd,this),onmouseover:p(this._showDataInfo,this,!0),onmouseout:p(this._showDataInfo,this,!1)},{x:-.5,y:0,width:1,height:1},"center"),l=o.getBoundingRect();this._handleHeight=u.parsePercent(a.get("handleSize"),this._size[1]),this._handleWidth=l.width/l.height*this._handleHeight,o.setStyle(a.getModel("handleStyle").getItemStyle());var h=a.get("handleColor");null!=h&&(o.style.fill=h),n.add(e[t]=o);var c=a.textStyleModel;this.group.add(i[t]=new r.Text({silent:!0,invisible:!0,style:{x:0,y:0,text:"",textVerticalAlign:"middle",textAlign:"center",fill:c.getTextColor(),textFont:c.getFont()},z2:10}))},this)},_resetInterval:function(){var t=this._range=this.dataZoomModel.getPercentRange(),e=this._getViewExtent();this._handleEnds=[h(t[0],[0,100],e,!0),h(t[1],[0,100],e,!0)]},_updateInterval:function(t,e){var i=this._handleEnds,n=this._getViewExtent();d(e,i,n,"all"===t||this.dataZoomModel.get("zoomLock")?"rigid":"cross",t),this._range=f([h(i[0],n,[0,100],!0),h(i[1],n,[0,100],!0)])},_updateView:function(t){var e=this._displayables,i=this._handleEnds,n=f(i.slice()),o=this._size;g([0,1],function(t){var n=e.handles[t],r=this._handleHeight;n.attr({scale:[r,r],position:[i[t],o[1]/2-r/2]})},this),e.filler.setShape({x:n[0],y:0,width:n[1]-n[0],height:o[1]}),this._updateDataInfo(t)},_updateDataInfo:function(t){function e(t){var e=r.getTransform(n.handles[t].parent,this.group),i=r.transformDirection(0===t?"right":"left",e),l=this._handleWidth/2+b,u=r.applyTransform([d[t]+(0===t?-l:l),this._size[1]/2],e);o[t].setStyle({x:u[0],y:u[1],textVerticalAlign:a===x?"middle":i,textAlign:a===x?i:"center",text:s[t]})}var i=this.dataZoomModel,n=this._displayables,o=n.handleLabels,a=this._orient,s=["",""];if(i.get("showDetail")){var l=i.findRepresentativeAxisProxy();if(l){var u=l.getAxisModel().axis,h=this._range,c=t?l.calculateDataWindow({start:h[0],end:h[1]}).valueWindow:l.getDataValueWindow();s=[this._formatLabel(c[0],u),this._formatLabel(c[1],u)]}}var d=f(this._handleEnds.slice());e.call(this,0),e.call(this,1)},_formatLabel:function(t,e){var i=this.dataZoomModel,n=i.get("labelFormatter"),r=i.get("labelPrecision");null!=r&&"auto"!==r||(r=e.getPixelPrecision());var a=null==t||isNaN(t)?"":"category"===e.type||"time"===e.type?e.scale.getLabel(Math.round(t)):t.toFixed(Math.min(r,20));return o.isFunction(n)?n(t,a):o.isString(n)?n.replace("{value}",a):a},_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=this._applyBarTransform([e,i],!0);this._updateInterval(t,n[0]);var o=this.dataZoomModel.get("realtime");this._updateView(!o),o&&o&&this._dispatchZoomAction()},_onDragEnd:function(){this._dragging=!1,this._showDataInfo(!1),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]})},_applyBarTransform:function(t,e){var i=this._displayables.barGroup.getLocalTransform();return r.applyTransform(t,i,e)},_findCoordRect:function(){var t;if(g(this.getTargetCoordInfo(),function(e){if(!t&&e.length){var i=e[0].model.coordinateSystem;t=i.getRect&&i.getRect()}}),!t){var e=this.api.getWidth(),i=this.api.getHeight();t={x:.2*e,y:.2*i,width:.6*e,height:.6*i}}return t}});t.exports=S},function(t,e,i){function n(t){var e=t.getZr();return e[p]||(e[p]={})}function o(t,e,i){var n=new c(t.getZr());return n.enable(),n.on("pan",f(a,i)),n.on("zoom",f(s,i)),n}function r(t){h.each(t,function(e,i){e.count||(e.controller.dispose(),delete t[i])})}function a(t,e,i,n,o,r,a){l(t,function(s){return s.panGetRange(t.controller,e,i,n,o,r,a)})}function s(t,e,i,n){l(t,function(o){return o.zoomGetRange(t.controller,e,i,n)})}function l(t,e){var i=[];h.each(t.dataZoomInfos,function(t){var n=e(t);n&&i.push({dataZoomId:t.dataZoomId,start:n[0],end:n[1]})}),t.dispatchAction(i)}function u(t,e){t.dispatchAction({type:"dataZoom",batch:e})}var h=i(1),c=i(84),d=i(47),f=h.curry,p="\0_ec_dataZoom_roams",g={register:function(t,e){var i=n(t),a=e.dataZoomId,s=e.coordId;h.each(i,function(t,i){var n=t.dataZoomInfos;n[a]&&h.indexOf(e.allCoordIds,s)<0&&(delete n[a],t.count--)}),r(i);var l=i[s];l||(l=i[s]={coordId:s,dataZoomInfos:{},count:0},l.controller=o(t,e,l),l.dispatchAction=h.curry(u,t)),l.controller.setContainsPoint(e.containsPoint),d.createOrUpdate(l,"dispatchAction",e.throttleRate,"fixRate"),!l.dataZoomInfos[a]&&l.count++,l.dataZoomInfos[a]=e},unregister:function(t,e){var i=n(t);h.each(i,function(t){t.controller.dispose();var i=t.dataZoomInfos;i[e]&&(delete i[e],t.count--)}),r(i)},shouldRecordRange:function(t,e){if(t&&"dataZoom"===t.type&&t.batch)for(var i=0,n=t.batch.length;i<n;i++)if(t.batch[i].dataZoomId===e)return!1;return!0},generateCoordId:function(t){return t.type+"\0_"+t.id}};t.exports=g},function(t,e,i){i(114),i(40),i(41),i(185),i(186),i(112),i(111)},function(t,e,i){function n(t,e,i,n){var o=i.type,r=h[o.charAt(0).toUpperCase()+o.slice(1)],a=new r(i);e.add(a),n[t]=a,a.__ecGraphicId=t}function o(t,e){var i=t&&t.parent;i&&("group"===t.type&&t.traverse(function(t){o(t,e)}),delete e[t.__ecGraphicId],i.remove(t))}function r(t){return t=l.extend({},t),l.each(["id","parentId","$action","hv","bounding"].concat(c.LOCATION_PARAMS),function(e){delete t[e]}),t}function a(t,e){var i;return l.each(e,function(e){null!=t[e]&&"auto"!==t[e]&&(i=!0)}),i}var s=i(2),l=i(1),u=i(6),h=i(3),c=i(12);s.registerPreprocessor(function(t){var e=t&&t.graphic;l.isArray(e)?e[0]&&e[0].elements?t.graphic=[t.graphic[0]]:t.graphic=[{elements:e}]:e&&!e.elements&&(t.graphic=[{elements:[e]}])});var d=s.extendComponentModel({type:"graphic",defaultOption:{elements:[],parentId:null},_elOptionsToUpdate:null,mergeOption:function(t){var e=this.option.elements;this.option.elements=null,d.superApply(this,"mergeOption",arguments),this.option.elements=e},optionUpdated:function(t,e){var i=this.option,n=(e?i:t).elements,o=i.elements=e?[]:i.elements,r=[];this._flatten(n,r);var s=u.mappingToExists(o,r);u.makeIdAndName(s);var h=this._elOptionsToUpdate=[];l.each(s,function(t,e){var i=t.exist,n=t.option;if(n){n.id=t.keyInfo.id;var r=n.parentId,s=n.parentOption,u=i&&i.parentId;!n.type&&i&&(n.type=i.type),n.parentId=r?r:s?s.id:u?u:null,n.parentOption=null,h.push(n);var d=l.extend({},n),f=n.$action;if(f&&"merge"!==f)"replace"===f?o[e]=d:"remove"===f&&i&&(o[e]=null);else if(i){l.merge(i,d,!0),c.mergeLayoutParam(i,d,{ignoreSize:!0}),c.copyLayoutParams(n,i)}else o[e]=d;o[e]&&(o[e].hv=n.hv=[a(n,["left","right"]),a(n,["top","bottom"])],"group"===o[e].type&&(null==o[e].width&&(o[e].width=n.width=0),null==o[e].height&&(o[e].height=n.height=0)))}},this);for(var d=o.length-1;d>=0;d--)null==o[d]?o.splice(d,1):delete o[d].$action},_flatten:function(t,e,i){l.each(t,function(t){if(t){i&&(t.parentOption=i),e.push(t);var n=t.children;"group"===t.type&&n&&this._flatten(n,e,t),delete t.children}},this)},useElOptionsToUpdate:function(){var t=this._elOptionsToUpdate;return this._elOptionsToUpdate=null,t}});s.extendComponentView({type:"graphic",init:function(t,e){this._elMap={},this._lastGraphicModel},render:function(t,e,i){t!==this._lastGraphicModel&&this._clear(),this._lastGraphicModel=t,this._updateElements(t,i),this._relocate(t,i)},_updateElements:function(t,e){var i=t.useElOptionsToUpdate();if(i){var a=this._elMap,s=this.group;l.each(i,function(t){var e=t.$action,i=t.id,u=a[i],h=t.parentId,c=null!=h?a[h]:s;t.hv&&t.hv[1]&&"text"===t.type&&(t.style=l.defaults({textBaseline:"middle"},t.style),t.style.textVerticalAlign=null);var d=r(t);e&&"merge"!==e?"replace"===e?(o(u,a),n(i,c,d,a)):"remove"===e&&o(u,a):u?u.attr(d):n(i,c,d,a),a[i]&&(a[i].__ecGraphicWidth=t.width,a[i].__ecGraphicHeight=t.height)})}},_relocate:function(t,e){for(var i=t.option.elements,n=this.group,o=this._elMap,r=i.length-1;r>=0;r--){var a=i[r],s=o[a.id];if(s){var l=s.parent,u=l===n?{width:e.getWidth(),height:e.getHeight()}:{width:l.__ecGraphicWidth||0,height:l.__ecGraphicHeight||0};c.positionElement(s,a,u,null,{hv:a.hv,boundingMode:a.bounding})}}},_clear:function(){var t=this._elMap;l.each(t,function(e){o(e,t)}),this._elMap={}},dispose:function(){this._clear()}})},function(t,e,i){i(193),i(195),i(194);var n=i(2);n.registerProcessor(i(196))},function(t,e,i){"use strict";var n=i(1),o=i(11),r=i(2).extendComponentModel({type:"legend",dependencies:["series"],layoutMode:{type:"box",ignoreSize:!0},init:function(t,e,i){this.mergeDefaultAndTheme(t,i),t.selected=t.selected||{}},mergeOption:function(t){r.superCall(this,"mergeOption",t)},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(t){var e=n.map(this.get("data")||[],function(t){return"string"!=typeof t&&"number"!=typeof t||(t={name:t}),new o(t,this,this.ecModel)},this);this._data=e;var i=n.map(t.getSeries(),function(t){return t.name});t.eachSeries(function(t){if(t.legendDataProvider){var e=t.legendDataProvider();i=i.concat(e.mapArray(e.getName))}}),this._availableNames=i},getData:function(){return this._data},select:function(t){var e=this.option.selected,i=this.get("selectedMode");if("single"===i){var o=this._data;n.each(o,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)},isSelected:function(t){var e=this.option.selected;return!(e.hasOwnProperty(t)&&!e[t])&&n.indexOf(this._availableNames,t)>=0},defaultOption:{zlevel:0,z:4,show:!0,orient:"horizontal",left:"center",top:"top",align:"auto",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,padding:5,itemGap:10,itemWidth:25,itemHeight:14,inactiveColor:"#ccc",textStyle:{color:"#333"},selectedMode:!0,tooltip:{show:!1}}});t.exports=r},function(t,e,i){function n(t,e){e.dispatchAction({type:"legendToggleSelect",name:t})}function o(t,e,i){var n=i.getZr().storage.getDisplayList()[0];n&&n.useHoverLayer||t.get("legendHoverLink")&&i.dispatchAction({type:"highlight",seriesName:t.name,name:e})}function r(t,e,i){var n=i.getZr().storage.getDisplayList()[0];n&&n.useHoverLayer||t.get("legendHoverLink")&&i.dispatchAction({type:"downplay",seriesName:t.name,name:e})}var a=i(1),s=i(24),l=i(3),u=i(118),h=a.curry;t.exports=i(2).extendComponentView({type:"legend",init:function(){this._symbolTypeStore={}},render:function(t,e,i){var s=this.group;if(s.removeAll(),t.get("show")){var c=t.get("selectedMode"),d=t.get("align");"auto"===d&&(d="right"===t.get("left")&&"vertical"===t.get("orient")?"right":"left");var f={};a.each(t.getData(),function(a){var u=a.get("name");if(""===u||"\n"===u)return void s.add(new l.Group({newline:!0}));var p=e.getSeriesByName(u)[0];if(!f[u])if(p){var g=p.getData(),m=g.getVisual("color");"function"==typeof m&&(m=m(p.getDataParams(0)));var v=g.getVisual("legendSymbol")||"roundRect",y=g.getVisual("symbol"),x=this._createItem(u,a,t,v,y,d,m,c);x.on("click",h(n,u,i)).on("mouseover",h(o,p,null,i)).on("mouseout",h(r,p,null,i)),f[u]=!0}else e.eachRawSeries(function(e){if(!f[u]&&e.legendDataProvider){var s=e.legendDataProvider(),l=s.indexOfName(u);if(l<0)return;var p=s.getItemVisual(l,"color"),g="roundRect",m=this._createItem(u,a,t,g,null,d,p,c);m.on("click",h(n,u,i)).on("mouseover",h(o,e,u,i)).on("mouseout",h(r,e,u,i)),f[u]=!0}},this)},this),u.layout(s,t,i),u.addBackground(s,t)}},_createItem:function(t,e,i,n,o,r,u,h){var c=i.get("itemWidth"),d=i.get("itemHeight"),f=i.get("inactiveColor"),p=i.isSelected(t),g=new l.Group,m=e.getModel("textStyle"),v=e.get("icon"),y=e.getModel("tooltip"),x=y.parentModel;if(n=v||n,g.add(s.createSymbol(n,0,0,c,d,p?u:f)),!v&&o&&(o!==n||"none"==o)){var _=.8*d;"none"===o&&(o="circle"),g.add(s.createSymbol(o,(c-_)/2,(d-_)/2,_,_,p?u:f))}var b="left"===r?c+5:-5,w=r,S=i.get("formatter"),M=t;"string"==typeof S&&S?M=S.replace("{name}",null!=t?t:""):"function"==typeof S&&(M=S(t));var I=new l.Text({style:{text:M,x:b,y:d/2,fill:p?m.getTextColor():f,textFont:m.getFont(),textAlign:w,textVerticalAlign:"middle"}});g.add(I);var T=new l.Rect({shape:g.getBoundingRect(),invisible:!0,tooltip:y.get("show")?a.extend({content:t,formatter:x.get("formatter",!0)||function(){return t},formatterParams:{componentType:"legend",legendIndex:i.componentIndex,name:t,$vars:["name"]}},y.option):null});return g.add(T),g.eachChild(function(t){t.silent=!0}),T.silent=!h,this.group.add(g),l.setHoverStyle(g),g}})},function(t,e,i){function n(t,e,i){var n,o={},a="toggleSelected"===t;return i.eachComponent("legend",function(i){a&&null!=n?i[n?"select":"unSelect"](e.name):(i[t](e.name),n=i.isSelected(e.name));var s=i.getData();r.each(s,function(t){var e=t.get("name");if("\n"!==e&&""!==e){var n=i.isSelected(e);e in o?o[e]=o[e]&&n:o[e]=n}})}),{name:e.name,selected:o}}var o=i(2),r=i(1);o.registerAction("legendToggleSelect","legendselectchanged",r.curry(n,"toggleSelected")),o.registerAction("legendSelect","legendselected",r.curry(n,"select")),o.registerAction("legendUnSelect","legendunselected",r.curry(n,"unSelect"))},function(t,e){t.exports=function(t){var e=t.findComponents({mainType:"legend"});e&&e.length&&t.filterSeries(function(t){for(var i=0;i<e.length;i++)if(!e[i].isSelected(t.name))return!1;return!0})}},function(t,e,i){i(200),i(201),i(2).registerPreprocessor(function(t){t.markArea=t.markArea||{}})},function(t,e,i){i(202),i(203),i(2).registerPreprocessor(function(t){t.markLine=t.markLine||{}})},function(t,e,i){i(204),i(205),i(2).registerPreprocessor(function(t){t.markPoint=t.markPoint||{}})},function(t,e,i){t.exports=i(70).extend({type:"markArea",defaultOption:{zlevel:0,z:1,tooltip:{trigger:"item"},animation:!1,label:{normal:{show:!0,position:"top"},emphasis:{show:!0,position:"top"}},itemStyle:{normal:{borderWidth:0}}}})},function(t,e,i){function n(t){return!isNaN(t)&&!isFinite(t)}function o(t,e,i,o){var r=1-t;return n(e[r])&&n(i[r])}function r(t,e){var i=e.coord[0],n=e.coord[1];return!("cartesian2d"!==t.type||!i||!n||!o(1,i,n,t)&&!o(0,i,n,t))||(f.dataFilter(t,{coord:i,x:e.x0,y:e.y0})||f.dataFilter(t,{coord:n,x:e.x1,y:e.y1}))}function a(t,e,i,o,r){var a,s=o.coordinateSystem,l=t.getItemModel(e),u=h.parsePercent(l.get(i[0]),r.getWidth()),c=h.parsePercent(l.get(i[1]),r.getHeight());if(isNaN(u)||isNaN(c)){if(o.getMarkerPosition)a=o.getMarkerPosition(t.getValues(i,e));else{var d=t.get(i[0],e),f=t.get(i[1],e);a=s.dataToPoint([d,f],!0)}if("cartesian2d"===s.type){var p=s.getAxis("x"),g=s.getAxis("y"),d=t.get(i[0],e),f=t.get(i[1],e);n(d)?a[0]=p.toGlobalCoord(p.getExtent()["x0"===i[0]?0:1]):n(f)&&(a[1]=g.toGlobalCoord(g.getExtent()["y0"===i[1]?0:1]))}isNaN(u)||(a[0]=u),isNaN(c)||(a[1]=c)}else a=[u,c];return a}function s(t,e,i){var n,o,a=["x0","y0","x1","y1"];t?(n=l.map(t&&t.dimensions,function(t){var i=e.getData().getDimensionInfo(e.coordDimToDataDim(t)[0])||{};return i.name=t,i}),o=new u(l.map(a,function(t,e){return{name:t,type:n[e%2].type}}),i)):(n=[{name:"value",type:"float"}],o=new u(n,i));var s=l.map(i.get("data"),l.curry(p,e,t,i));t&&(s=l.filter(s,l.curry(r,t)));var h=t?function(t,e,i,n){return t.coord[Math.floor(n/2)][n%2]}:function(t){return t.value};return o.initData(s,null,h),o.hasItemOption=!0,o}var l=i(1),u=i(14),h=i(4),c=i(3),d=i(19),f=i(72),p=function(t,e,i,n){var o=f.dataTransform(t,n[0]),r=f.dataTransform(t,n[1]),a=l.retrieve,s=o.coord,u=r.coord;s[0]=a(s[0],-(1/0)),s[1]=a(s[1],-(1/0)),u[0]=a(u[0],1/0),u[1]=a(u[1],1/0);var h=l.mergeAll([{},o,r]);return h.coord=[o.coord,r.coord],h.x0=o.x,h.y0=o.y,h.x1=r.x,h.y1=r.y,h},g=[["x0","y0"],["x1","y0"],["x1","y1"],["x0","y1"]];i(71).extend({type:"markArea",updateLayout:function(t,e,i){e.eachSeries(function(t){var e=t.markAreaModel;if(e){var n=e.getData();n.each(function(e){var o=l.map(g,function(o){return a(n,e,o,t,i)});n.setItemLayout(e,o);var r=n.getItemGraphicEl(e);r.setShape("points",o)})}},this)},renderSeries:function(t,e,i,n){var o=t.coordinateSystem,r=t.name,u=t.getData(),h=this.markerGroupMap,f=h[r];f||(f=h[r]={group:new c.Group}),this.group.add(f.group),f.__keep=!0;var p=s(o,t,e);e.setData(p),p.each(function(e){p.setItemLayout(e,l.map(g,function(i){return a(p,e,i,t,n)})),p.setItemVisual(e,{color:u.getVisual("color")})}),p.diff(f.__data).add(function(t){var e=new c.Polygon({shape:{points:p.getItemLayout(t)}});p.setItemGraphicEl(t,e),f.group.add(e)}).update(function(t,i){var n=f.__data.getItemGraphicEl(i);c.updateProps(n,{shape:{points:p.getItemLayout(t)}},e,t),f.group.add(n),p.setItemGraphicEl(t,n)}).remove(function(t){var e=f.__data.getItemGraphicEl(t);f.group.remove(e)}).execute(),p.eachItemGraphicEl(function(t,i){var n=p.getItemModel(i),o=n.getModel("label.normal"),r=n.getModel("label.emphasis"),a=p.getItemVisual(i,"color");t.useStyle(l.defaults(n.getModel("itemStyle.normal").getItemStyle(),{fill:d.modifyAlpha(a,.4),stroke:a})),t.hoverStyle=n.getModel("itemStyle.normal").getItemStyle();var s=p.getName(i)||"",u=a||t.style.fill;o.getShallow("show")?(c.setText(t.style,o,u),t.style.text=l.retrieve(e.getFormattedLabel(i,"normal"),s)):t.style.text="",r.getShallow("show")?(c.setText(t.hoverStyle,r,u),t.hoverStyle.text=l.retrieve(e.getFormattedLabel(i,"emphasis"),s)):t.hoverStyle.text="",c.setHoverStyle(t,{}),t.dataModel=e}),f.__data=p,f.group.silent=e.get("silent")||t.get("silent")}})},function(t,e,i){t.exports=i(70).extend({type:"markLine",defaultOption:{zlevel:0,z:5,symbol:["circle","arrow"],symbolSize:[8,16],precision:2,tooltip:{trigger:"item"},label:{normal:{show:!0,position:"end"},emphasis:{show:!0}},lineStyle:{normal:{type:"dashed"},emphasis:{width:3}},animationEasing:"linear"}})},function(t,e,i){function n(t){return!isNaN(t)&&!isFinite(t)}function o(t,e,i,o){var r=1-t,a=o.dimensions[t];return n(e[r])&&n(i[r])&&e[t]===i[t]&&o.getAxis(a).containData(e[t])}function r(t,e){if("cartesian2d"===t.type){var i=e[0].coord,n=e[1].coord;if(i&&n&&(o(1,i,n,t)||o(0,i,n,t)))return!0}return c.dataFilter(t,e[0])&&c.dataFilter(t,e[1])}function a(t,e,i,o,r){var a,s=o.coordinateSystem,l=t.getItemModel(e),u=h.parsePercent(l.get("x"),r.getWidth()),c=h.parsePercent(l.get("y"),r.getHeight());if(isNaN(u)||isNaN(c)){if(o.getMarkerPosition)a=o.getMarkerPosition(t.getValues(t.dimensions,e));else{var d=s.dimensions,f=t.get(d[0],e),p=t.get(d[1],e);a=s.dataToPoint([f,p])}if("cartesian2d"===s.type){var g=s.getAxis("x"),m=s.getAxis("y"),d=s.dimensions;n(t.get(d[0],e))?a[0]=g.toGlobalCoord(g.getExtent()[i?0:1]):n(t.get(d[1],e))&&(a[1]=m.toGlobalCoord(m.getExtent()[i?0:1]))}isNaN(u)||(a[0]=u),isNaN(c)||(a[1]=c)}else a=[u,c];t.setItemLayout(e,a);
-}function s(t,e,i){var n;n=t?l.map(t&&t.dimensions,function(t){var i=e.getData().getDimensionInfo(e.coordDimToDataDim(t)[0])||{};return i.name=t,i}):[{name:"value",type:"float"}];var o=new u(n,i),a=new u(n,i),s=new u([],i),h=l.map(i.get("data"),l.curry(f,e,t,i));t&&(h=l.filter(h,l.curry(r,t)));var d=t?c.dimValueGetter:function(t){return t.value};return o.initData(l.map(h,function(t){return t[0]}),null,d),a.initData(l.map(h,function(t){return t[1]}),null,d),s.initData(l.map(h,function(t){return t[2]})),s.hasItemOption=!0,{from:o,to:a,line:s}}var l=i(1),u=i(14),h=i(4),c=i(72),d=i(99),f=function(t,e,i,n){var o=t.getData(),r=n.type;if(!l.isArray(n)&&("min"===r||"max"===r||"average"===r||null!=n.xAxis||null!=n.yAxis)){var a,s,u;if(null!=n.yAxis||null!=n.xAxis)s=null!=n.yAxis?"y":"x",a=e.getAxis(s),u=l.retrieve(n.yAxis,n.xAxis);else{var h=c.getAxisInfo(n,o,e,t);s=h.valueDataDim,a=h.valueAxis,u=c.numCalculate(o,s,r)}var d="x"===s?0:1,f=1-d,p=l.clone(n),g={};p.type=null,p.coord=[],g.coord=[],p.coord[f]=-(1/0),g.coord[f]=1/0;var m=i.get("precision");m>=0&&"number"==typeof u&&(u=+u.toFixed(m)),p.coord[d]=g.coord[d]=u,n=[p,g,{type:r,valueIndex:n.valueIndex,value:u}]}return n=[c.dataTransform(t,n[0]),c.dataTransform(t,n[1]),l.extend({},n[2])],n[2].type=n[2].type||"",l.merge(n[2],n[0]),l.merge(n[2],n[1]),n};i(71).extend({type:"markLine",updateLayout:function(t,e,i){e.eachSeries(function(t){var e=t.markLineModel;if(e){var n=e.getData(),o=e.__from,r=e.__to;o.each(function(e){a(o,e,!0,t,i),a(r,e,!1,t,i)}),n.each(function(t){n.setItemLayout(t,[o.getItemLayout(t),r.getItemLayout(t)])}),this.markerGroupMap[t.name].updateLayout()}},this)},renderSeries:function(t,e,i,n){function o(e,i,o){var r=e.getItemModel(i);a(e,i,o,t,n),e.setItemVisual(i,{symbolSize:r.get("symbolSize")||x[o?0:1],symbol:r.get("symbol",!0)||y[o?0:1],color:r.get("itemStyle.normal.color")||h.getVisual("color")})}var r=t.coordinateSystem,u=t.name,h=t.getData(),c=this.markerGroupMap,f=c[u];f||(f=c[u]=new d),this.group.add(f.group);var p=s(r,t,e),g=p.from,m=p.to,v=p.line;e.__from=g,e.__to=m,e.setData(v);var y=e.get("symbol"),x=e.get("symbolSize");l.isArray(y)||(y=[y,y]),"number"==typeof x&&(x=[x,x]),p.from.each(function(t){o(g,t,!0),o(m,t,!1)}),v.each(function(t){var e=v.getItemModel(t).get("lineStyle.normal.color");v.setItemVisual(t,{color:e||g.getItemVisual(t,"color")}),v.setItemLayout(t,[g.getItemLayout(t),m.getItemLayout(t)]),v.setItemVisual(t,{fromSymbolSize:g.getItemVisual(t,"symbolSize"),fromSymbol:g.getItemVisual(t,"symbol"),toSymbolSize:m.getItemVisual(t,"symbolSize"),toSymbol:m.getItemVisual(t,"symbol")})}),f.updateData(v),p.line.eachItemGraphicEl(function(t,i){t.traverse(function(t){t.dataModel=e})}),f.__keep=!0,f.group.silent=e.get("silent")||t.get("silent")}})},function(t,e,i){t.exports=i(70).extend({type:"markPoint",defaultOption:{zlevel:0,z:5,symbol:"pin",symbolSize:50,tooltip:{trigger:"item"},label:{normal:{show:!0,position:"inside"},emphasis:{show:!0}},itemStyle:{normal:{borderWidth:2}}}})},function(t,e,i){function n(t,e,i){var n=e.coordinateSystem;t.each(function(o){var r,a=t.getItemModel(o),l=s.parsePercent(a.get("x"),i.getWidth()),u=s.parsePercent(a.get("y"),i.getHeight());if(isNaN(l)||isNaN(u)){if(e.getMarkerPosition)r=e.getMarkerPosition(t.getValues(t.dimensions,o));else if(n){var h=t.get(n.dimensions[0],o),c=t.get(n.dimensions[1],o);r=n.dataToPoint([h,c])}}else r=[l,u];isNaN(l)||(r[0]=l),isNaN(u)||(r[1]=u),t.setItemLayout(o,r)})}function o(t,e,i){var n;n=t?a.map(t&&t.dimensions,function(t){var i=e.getData().getDimensionInfo(e.coordDimToDataDim(t)[0])||{};return i.name=t,i}):[{name:"value",type:"float"}];var o=new l(n,i),r=a.map(i.get("data"),a.curry(u.dataTransform,e));return t&&(r=a.filter(r,a.curry(u.dataFilter,t))),o.initData(r,null,t?u.dimValueGetter:function(t){return t.value}),o}var r=i(39),a=i(1),s=i(4),l=i(14),u=i(72);i(71).extend({type:"markPoint",updateLayout:function(t,e,i){e.eachSeries(function(t){var e=t.markPointModel;e&&(n(e.getData(),t,i),this.markerGroupMap[t.name].updateLayout(e))},this)},renderSeries:function(t,e,i,a){var s=t.coordinateSystem,l=t.name,u=t.getData(),h=this.markerGroupMap,c=h[l];c||(c=h[l]=new r);var d=o(s,t,e);e.setData(d),n(e.getData(),t,a),d.each(function(t){var i=d.getItemModel(t),n=i.getShallow("symbolSize");"function"==typeof n&&(n=n(e.getRawValue(t),e.getDataParams(t))),d.setItemVisual(t,{symbolSize:n,color:i.get("itemStyle.normal.color")||u.getVisual("color"),symbol:i.getShallow("symbol")})}),c.updateData(d),this.group.add(c.group),d.eachItemGraphicEl(function(t){t.traverse(function(t){t.dataModel=e})}),c.__keep=!0,c.group.silent=e.get("silent")||t.get("silent")}})},function(t,e,i){"use strict";var n=i(2),o=i(3),r=i(12);n.extendComponentModel({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"}}}),n.extendComponentView({type:"title",render:function(t,e,i){if(this.group.removeAll(),t.get("show")){var n=this.group,a=t.getModel("textStyle"),s=t.getModel("subtextStyle"),l=t.get("textAlign"),u=t.get("textBaseline"),h=new o.Text({style:{text:t.get("text"),textFont:a.getFont(),fill:a.getTextColor()},z2:10}),c=h.getBoundingRect(),d=t.get("subtext"),f=new o.Text({style:{text:d,textFont:s.getFont(),fill:s.getTextColor(),y:c.height+t.get("itemGap"),textBaseline:"top"},z2:10}),p=t.get("link"),g=t.get("sublink");h.silent=!p,f.silent=!g,p&&h.on("click",function(){window.open(p,"_"+t.get("target"))}),g&&f.on("click",function(){window.open(g,"_"+t.get("subtarget"))}),n.add(h),d&&n.add(f);var m=n.getBoundingRect(),v=t.getBoxLayoutParams();v.width=m.width,v.height=m.height;var y=r.getLayoutRect(v,{width:i.getWidth(),height:i.getHeight()},t.get("padding"));l||(l=t.get("left")||t.get("right"),"middle"===l&&(l="center"),"right"===l?y.x+=y.width:"center"===l&&(y.x+=y.width/2)),u||(u=t.get("top")||t.get("bottom"),"center"===u&&(u="middle"),"bottom"===u?y.y+=y.height:"middle"===u&&(y.y+=y.height/2),u=u||"top"),n.attr("position",[y.x,y.y]);var x={textAlign:l,textVerticalAlign:u};h.setStyle(x),f.setStyle(x),m=n.getBoundingRect();var _=y.margin,b=t.getItemStyle(["color","opacity"]);b.fill=t.get("backgroundColor");var w=new o.Rect({shape:{x:m.x-_[3],y:m.y-_[0],width:m.width+_[1]+_[3],height:m.height+_[0]+_[2]},style:b,silent:!0});o.subPixelOptimizeRect(w),n.add(w)}}})},function(t,e,i){i(208),i(209),i(214),i(212),i(210),i(211),i(213)},function(t,e,i){var n=i(26),o=i(1),r=i(2).extendComponentModel({type:"toolbox",layoutMode:{type:"box",ignoreSize:!0},mergeDefaultAndTheme:function(t){r.superApply(this,"mergeDefaultAndTheme",arguments),o.each(this.option.feature,function(t,e){var i=n.get(e);i&&o.merge(t,i.defaultOption)})},defaultOption:{show:!0,z:6,zlevel:0,orient:"horizontal",left:"right",top:"top",backgroundColor:"transparent",borderColor:"#ccc",borderWidth:0,padding:5,itemSize:15,itemGap:8,showTitle:!0,iconStyle:{normal:{borderColor:"#666",color:"none"},emphasis:{borderColor:"#3E98C5"}}}});t.exports=r},function(t,e,i){(function(e){function n(t){return 0===t.indexOf("my")}var o=i(26),r=i(1),a=i(3),s=i(11),l=i(43),u=i(118),h=i(17);t.exports=i(2).extendComponentView({type:"toolbox",render:function(t,e,i,c){function d(r,a){var l,u=y[r],h=y[a],d=m[u],p=new s(d,t,t.ecModel);if(u&&!h){if(n(u))l={model:p,onclick:p.option.onclick,featureName:u};else{var g=o.get(u);if(!g)return;l=new g(p,e,i)}v[u]=l}else{if(l=v[h],!l)return;l.model=p,l.ecModel=e,l.api=i}return!u&&h?void(l.dispose&&l.dispose(e,i)):!p.get("show")||l.unusable?void(l.remove&&l.remove(e,i)):(f(p,l,u),p.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)},void(l.render&&l.render(p,e,i,c)))}function f(n,o,s){var l=n.getModel("iconStyle"),u=o.getIcons?o.getIcons():n.get("icon"),h=n.get("title")||{};if("string"==typeof u){var c=u,d=h;u={},h={},u[s]=c,h[s]=d}var f=n.iconPaths={};r.each(u,function(s,u){var c=l.getModel("normal").getItemStyle(),d=l.getModel("emphasis").getItemStyle(),m={x:-g/2,y:-g/2,width:g,height:g},v=0===s.indexOf("image://")?(m.image=s.slice(8),new a.Image({style:m})):a.makePath(s.replace("path://",""),{style:c,hoverStyle:d,rectHover:!0},m,"center");a.setHoverStyle(v),t.get("showTitle")&&(v.__title=h[u],v.on("mouseover",function(){var t=l.getModel("emphasis").getItemStyle();v.setStyle({text:h[u],textPosition:t.textPosition||"bottom",textFill:t.fill||t.stroke||"#000",textAlign:t.textAlign||"center"})}).on("mouseout",function(){v.setStyle({textFill:null})})),v.trigger(n.get("iconStatus."+u)||"normal"),p.add(v),v.on("click",r.bind(o.onclick,o,e,i,u)),f[u]=v})}var p=this.group;if(p.removeAll(),t.get("show")){var g=+t.get("itemSize"),m=t.get("feature")||{},v=this._features||(this._features={}),y=[];r.each(m,function(t,e){y.push(e)}),new l(this._featureNames||[],y).add(d).update(d).remove(r.curry(d,null)).execute(),this._featureNames=y,u.layout(p,t,i),u.addBackground(p,t),p.eachChild(function(t){var e=t.__title,n=t.hoverStyle;if(n&&e){var o=h.getBoundingRect(e,n.font),r=t.position[0]+p.position[0],a=t.position[1]+p.position[1]+g,s=!1;a+o.height>i.getHeight()&&(n.textPosition="top",s=!0);var l=s?-5-o.height:g+8;r+o.width/2>i.getWidth()?(n.textPosition=["100%",l],n.textAlign="right"):r-o.width/2<0&&(n.textPosition=[0,l],n.textAlign="left")}})}},updateView:function(t,e,i,n){r.each(this._features,function(t){t.updateView&&t.updateView(t.model,e,i,n)})},updateLayout:function(t,e,i,n){r.each(this._features,function(t){t.updateLayout&&t.updateLayout(t.model,e,i,n)})},remove:function(t,e){r.each(this._features,function(i){i.remove&&i.remove(t,e)}),this.group.removeAll()},dispose:function(t,e){r.each(this._features,function(i){i.dispose&&i.dispose(t,e)})}})}).call(e,i(175))},function(t,e,i){function n(t){var e={},i=[],n=[];return t.eachRawSeries(function(t){var o=t.coordinateSystem;if(!o||"cartesian2d"!==o.type&&"polar"!==o.type)i.push(t);else{var r=o.getBaseAxis();if("category"===r.type){var a=r.dim+"_"+r.index;e[a]||(e[a]={categoryAxis:r,valueAxis:o.getOtherAxis(r),series:[]},n.push({axisDim:r.dim,axisIndex:r.index})),e[a].series.push(t)}else i.push(t)}}),{seriesGroupByCategoryAxis:e,other:i,meta:n}}function o(t){var e=[];return p.each(t,function(t,i){var n=t.categoryAxis,o=t.valueAxis,r=o.dim,a=[" "].concat(p.map(t.series,function(t){return t.name})),s=[n.model.getCategories()];p.each(t.series,function(t){s.push(t.getRawData().mapArray(r,function(t){return t}))});for(var l=[a.join(v)],u=0;u<s[0].length;u++){for(var h=[],c=0;c<s.length;c++)h.push(s[c][u]);l.push(h.join(v))}e.push(l.join("\n"))}),e.join("\n\n"+m+"\n\n")}function r(t){return p.map(t,function(t){var e=t.getRawData(),i=[t.name],n=[];return e.each(e.dimensions,function(){for(var t=arguments.length,o=arguments[t-1],r=e.getName(o),a=0;a<t-1;a++)n[a]=arguments[a];i.push((r?r+v:"")+n.join(v))}),i.join("\n")}).join("\n\n"+m+"\n\n")}function a(t){var e=n(t);return{value:p.filter([o(e.seriesGroupByCategoryAxis),r(e.other)],function(t){return t.replace(/[\n\t\s]/g,"")}).join("\n\n"+m+"\n\n"),meta:e.meta}}function s(t){return t.replace(/^\s\s*/,"").replace(/\s\s*$/,"")}function l(t){var e=t.slice(0,t.indexOf("\n"));if(e.indexOf(v)>=0)return!0}function u(t){for(var e=t.split(/\n+/g),i=s(e.shift()).split(y),n=[],o=p.map(i,function(t){return{name:t,data:[]}}),r=0;r<e.length;r++){var a=s(e[r]).split(y);n.push(a.shift());for(var l=0;l<a.length;l++)o[l]&&(o[l].data[r]=a[l])}return{series:o,categories:n}}function h(t){for(var e=t.split(/\n+/g),i=s(e.shift()),n=[],o=0;o<e.length;o++){var r,a=s(e[o]).split(y),l="",u=!1;isNaN(a[0])?(u=!0,l=a[0],a=a.slice(1),n[o]={name:l,value:[]},r=n[o].value):r=n[o]=[];for(var h=0;h<a.length;h++)r.push(+a[h]);1===r.length&&(u?n[o].value=r[0]:n[o]=r[0])}return{name:i,data:n}}function c(t,e){var i=t.split(new RegExp("\n*"+m+"\n*","g")),n={series:[]};return p.each(i,function(t,i){if(l(t)){var o=u(t),r=e[i],a=r.axisDim+"Axis";r&&(n[a]=n[a]||[],n[a][r.axisIndex]={data:o.categories},n.series=n.series.concat(o.series))}else{var o=h(t);n.series.push(o)}}),n}function d(t){this._dom=null,this.model=t}function f(t,e){return p.map(t,function(t,i){var n=e&&e[i];return p.isObject(n)&&!p.isArray(n)?(p.isObject(t)&&!p.isArray(t)&&(t=t.value),p.defaults({value:t},n)):t})}var p=i(1),g=i(25),m=new Array(60).join("-"),v="\t",y=new RegExp("["+v+"]+","g");d.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:"数据视图",lang:["数据视图","关闭","刷新"],backgroundColor:"#fff",textColor:"#000",textareaColor:"#fff",textareaBorderColor:"#333",buttonColor:"#c23531",buttonTextColor:"#fff"},d.prototype.onclick=function(t,e){function i(){n.removeChild(r),M._dom=null}var n=e.getDom(),o=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=o.get("backgroundColor")||"#fff";var s=document.createElement("h4"),l=o.get("lang")||[];s.innerHTML=l[0]||o.get("title"),s.style.cssText="margin: 10px 20px;",s.style.color=o.get("textColor");var u=document.createElement("div"),h=document.createElement("textarea");u.style.cssText="display:block;width:100%;overflow:hidden;";var d=o.get("optionToContent"),f=o.get("contentToOption"),m=a(t);if("function"==typeof d){var y=d(e.getOption());"string"==typeof y?u.innerHTML=y:p.isDom(y)&&u.appendChild(y)}else u.appendChild(h),h.readOnly=o.get("readOnly"),h.style.cssText="width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;",h.style.color=o.get("textColor"),h.style.borderColor=o.get("textareaBorderColor"),h.style.backgroundColor=o.get("textareaColor"),h.value=m.value;var x=m.meta,_=document.createElement("div");_.style.cssText="position:absolute;bottom:0;left:0;right:0;";var b="float:right;margin-right:20px;border:none;cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px",w=document.createElement("div"),S=document.createElement("div");b+=";background-color:"+o.get("buttonColor"),b+=";color:"+o.get("buttonTextColor");var M=this;g.addEventListener(w,"click",i),g.addEventListener(S,"click",function(){var t;try{t="function"==typeof f?f(u,e.getOption()):c(h.value,x)}catch(n){throw i(),new Error("Data view format error "+n)}t&&e.dispatchAction({type:"changeDataView",newOption:t}),i()}),w.innerHTML=l[1],S.innerHTML=l[2],S.style.cssText=b,w.style.cssText=b,!o.get("readOnly")&&_.appendChild(S),_.appendChild(w),g.addEventListener(h,"keydown",function(t){if(9===(t.keyCode||t.which)){var e=this.value,i=this.selectionStart,n=this.selectionEnd;this.value=e.substring(0,i)+v+e.substring(n),this.selectionStart=this.selectionEnd=i+1,g.stop(t)}}),r.appendChild(s),r.appendChild(u),r.appendChild(_),u.style.height=n.clientHeight-80+"px",n.appendChild(r),this._dom=r},d.prototype.remove=function(t,e){this._dom&&e.getDom().removeChild(this._dom)},d.prototype.dispose=function(t,e){this.remove(t,e)},i(26).register("dataView",d),i(2).registerAction({type:"changeDataView",event:"dataViewChanged",update:"prepareAndUpdate"},function(t,e){var i=[];p.each(t.newOption.series,function(t){var n=e.getSeriesByName(t.name)[0];if(n){var o=n.get("data");i.push({name:t.name,data:f(t.data,o)})}else i.push(p.extend({type:"scatter"},t))}),e.mergeOption(p.defaults({series:i},t.newOption))}),t.exports=d},function(t,e,i){"use strict";function n(t,e,i){(this._brushController=new l(i.getZr())).on("brush",s.bind(this._onBrush,this)).mount(),this._isZoomActive}function o(t){var e={};return s.each(["xAxisIndex","yAxisIndex"],function(i){e[i]=t[i],null==e[i]&&(e[i]="all"),(e[i]===!1||"none"===e[i])&&(e[i]=[])}),e}function r(t,e){t.setIconStatus("back",h.count(e)>1?"emphasis":"normal")}function a(t,e,i,n){var r=i._isZoomActive;n&&"takeGlobalCursor"===n.type&&(r="dataZoomSelect"===n.key&&n.dataZoomSelectActive),i._isZoomActive=r,t.setIconStatus("zoom",r?"emphasis":"normal");var a=u.makeCoordInfoList(o(t.option),e),s=a.xAxisHas&&!a.yAxisHas?"lineX":!a.xAxisHas&&a.yAxisHas?"lineY":"rect";i._brushController.setPanels(u.makePanelOpts(a)).enableBrush(!!r&&{brushType:s,brushStyle:{lineWidth:0,fill:"rgba(0,0,0,0.2)"}})}var s=i(1),l=i(115),u=i(116),h=i(113),c=s.each;i(190);var d="\0_ec_\0toolbox-dataZoom_";n.defaultOption={show:!0,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:{zoom:"区域缩放",back:"区域缩放还原"}};var f=n.prototype;f.render=function(t,e,i,n){this.model=t,this.ecModel=e,this.api=i,a(t,e,this,n),r(t,e)},f.onclick=function(t,e,i){p[i].call(this)},f.remove=function(t,e){this._brushController.unmount()},f.dispose=function(t,e){this._brushController.dispose()};var p={zoom:function(){var t=!this._isZoomActive;this.api.dispatchAction({type:"takeGlobalCursor",key:"dataZoomSelect",dataZoomSelectActive:t})},back:function(){this._dispatchZoomAction(h.pop(this.ecModel))}};f._onBrush=function(t,e){function i(t,e,i){var o=n(t,i[t],a);o&&(r[o.id]={dataZoomId:o.id,startValue:e[0],endValue:e[1]})}function n(t,e,i){var n;return i.eachComponent({mainType:"dataZoom",subType:"select"},function(o,r){var a=o.get(t+"Index");null!=a&&i.getComponent(t,a)===e&&(n=o)}),n}if(e.isEnd&&t.length){var r={},a=this.ecModel;this._brushController.updateCovers([]);var s=u.makeCoordInfoList(o(this.model.option),a),l=[];u.parseOutputRanges(t,s,a,l);var c=t[0],d=l[0],f=c.coordRange,p=c.brushType;if(d&&f)if("rect"===p)i("xAxis",f[0],d),i("yAxis",f[1],d);else{var g={lineX:"xAxis",lineY:"yAxis"};i(g[p],f,d)}h.push(a,r),this._dispatchZoomAction(r)}},f._dispatchZoomAction=function(t){var e=[];c(t,function(t,i){e.push(s.clone(t))}),e.length&&this.api.dispatchAction({type:"dataZoom",from:this.uid,batch:e})},i(26).register("dataZoom",n),i(2).registerPreprocessor(function(t){function e(t,e){if(e){var o=t+"Index",r=e[o];null==r||"all"==r||s.isArray(r)||(r=r===!1||"none"===r?[]:[r]),i(t,function(e,i){if(null==r||"all"==r||s.indexOf(r,i)!==-1){var a={type:"select",$fromToolbox:!0,id:d+t+i};a[o]=i,n.push(a)}})}}function i(e,i){var n=t[e];s.isArray(n)||(n=n?[n]:[]),c(n,i)}if(t){var n=t.dataZoom||(t.dataZoom=[]);s.isArray(n)||(t.dataZoom=n=[n]);var o=t.toolbox;if(o&&(s.isArray(o)&&(o=o[0]),o&&o.feature)){var r=o.feature.dataZoom;e("xAxis",r),e("yAxis",r)}}}),t.exports=n},function(t,e,i){"use strict";function n(t){this.model=t}var o=i(1);n.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:{line:"切换为折线图",bar:"切换为柱状图",stack:"切换为堆叠",tiled:"切换为平铺"},option:{},seriesIndex:{}};var r=n.prototype;r.getIcons=function(){var t=this.model,e=t.get("icon"),i={};return o.each(t.get("type"),function(t){e[t]&&(i[t]=e[t])}),i};var a={line:function(t,e,i,n){if("bar"===t)return o.merge({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 o.merge({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 o.merge({id:e,stack:"__ec_magicType_stack__"},n.get("option.stack")||{},!0)},tiled:function(t,e,i,n){if("line"===t||"bar"===t)return o.merge({id:e,stack:""},n.get("option.tiled")||{},!0)}},s=[["line","bar"],["stack","tiled"]];r.onclick=function(t,e,i){var n=this.model,r=n.get("seriesIndex."+i);if(a[i]){var l={series:[]},u=function(e){var r=e.subType,s=e.id,u=a[i](r,s,e,n);u&&(o.defaults(u,e.option),l.series.push(u));var h=e.coordinateSystem;if(h&&"cartesian2d"===h.type&&("line"===i||"bar"===i)){var c=h.getAxesByScale("ordinal")[0];if(c){var d=c.dim,f=d+"Axis",p=t.queryComponents({mainType:f,index:e.get(name+"Index"),id:e.get(name+"Id")})[0],g=p.componentIndex;l[f]=l[f]||[];for(var m=0;m<=g;m++)l[f][g]=l[f][g]||{};l[f][g].boundaryGap="bar"===i}}};o.each(s,function(t){o.indexOf(t,i)>=0&&o.each(t,function(t){n.setIconStatus(t,"normal")})}),n.setIconStatus(i,"emphasis"),t.eachComponent({mainType:"series",query:null==r?null:{seriesIndex:r}},u),e.dispatchAction({type:"changeMagicType",currentType:i,newOption:l})}};var l=i(2);l.registerAction({type:"changeMagicType",event:"magicTypeChanged",update:"prepareAndUpdate"},function(t,e){e.mergeOption(t.newOption)}),i(26).register("magicType",n),t.exports=n},function(t,e,i){"use strict";function n(t){this.model=t}var o=i(113);n.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:"还原"};var r=n.prototype;r.onclick=function(t,e,i){o.clear(t),e.dispatchAction({type:"restore",from:this.uid})},i(26).register("restore",n),i(2).registerAction({type:"restore",event:"restore",update:"prepareAndUpdate"},function(t,e){e.resetOption("recreate")}),t.exports=n},function(t,e,i){function n(t){this.model=t}var o=i(10);n.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:"保存为图片",type:"png",name:"",excludeComponents:["toolbox"],pixelRatio:1,lang:["右键另存为图片"]},n.prototype.unusable=!o.canvasSupported;var r=n.prototype;r.onclick=function(t,e){var i=this.model,n=i.get("name")||t.get("title.0.text")||"echarts",r=document.createElement("a"),a=i.get("type",!0)||"png";r.download=n+"."+a,r.target="_blank";var s=e.getConnectedDataURL({type:a,backgroundColor:i.get("backgroundColor",!0)||t.get("backgroundColor")||"#fff",excludeComponents:i.get("excludeComponents"),pixelRatio:i.get("pixelRatio")});if(r.href=s,"function"!=typeof MouseEvent||o.browser.ie||o.browser.edge){var l=i.get("lang"),u='<body style="margin:0;"><img src="'+s+'" style="max-width:100%;" title="'+(l&&l[0]||"")+'" /></body>',h=window.open();h.document.write(u)}else{var c=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!1});r.dispatchEvent(c)}},i(26).register("saveAsImage",n),t.exports=n},function(t,e,i){i(217),i(218),i(2).registerAction({type:"showTip",event:"showTip",update:"tooltip:manuallyShowTip"},function(){}),i(2).registerAction({type:"hideTip",event:"hideTip",update:"tooltip:manuallyHideTip"},function(){})},function(t,e,i){function n(t){var e="cubic-bezier(0.23, 1, 0.32, 1)",i="left "+t+"s "+e+",top "+t+"s "+e;return s.map(p,function(t){return t+"transition:"+i}).join(";")}function o(t){var e=[],i=t.get("fontSize"),n=t.getTextColor();return n&&e.push("color:"+n),e.push("font:"+t.getFont()),i&&e.push("line-height:"+Math.round(3*i/2)+"px"),c(["decoration","align"],function(i){var n=t.get(i);n&&e.push("text-"+i+":"+n)}),e.join(";")}function r(t){t=t;var e=[],i=t.get("transitionDuration"),r=t.get("backgroundColor"),a=t.getModel("textStyle"),s=t.get("padding");return i&&e.push(n(i)),r&&(f.canvasSupported?e.push("background-Color:"+r):(e.push("background-Color:#"+l.toHex(r)),e.push("filter:alpha(opacity=70)"))),c(["width","color","radius"],function(i){var n="border-"+i,o=d(n),r=t.get(o);null!=r&&e.push(n+":"+r+("color"===i?"":"px"))}),e.push(o(a)),null!=s&&e.push("padding:"+h.normalizeCssArray(s).join("px ")+"px"),e.join(";")+";"}function a(t,e){var i=document.createElement("div"),n=e.getZr();this.el=i,this._x=e.getWidth()/2,this._y=e.getHeight()/2,t.appendChild(i),this._container=t,this._show=!1,this._hideTimeout;var o=this;i.onmouseenter=function(){o.enterable&&(clearTimeout(o._hideTimeout),o._show=!0),o._inContent=!0},i.onmousemove=function(e){if(e=e||window.event,!o.enterable){var i=n.handler;u.normalizeEvent(t,e,!0),i.dispatch("mousemove",e)}},i.onmouseleave=function(){o.enterable&&o._show&&o.hideLater(o._hideDelay),o._inContent=!1}}var s=i(1),l=i(19),u=i(25),h=i(8),c=s.each,d=h.toCamelCase,f=i(10),p=["","-webkit-","-moz-","-o-"],g="position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;";a.prototype={constructor:a,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=g+r(t)+";left:"+this._x+"px;top:"+this._y+"px;"+(t.get("extraCssText")||""),e.style.display=e.innerHTML?"block":"none",this._show=!0},setContent:function(t){var e=this.el;e.innerHTML=t,e.style.display=t?"block":"none"},moveTo:function(t,e){var i=this.el.style;i.left=t+"px",i.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(s.bind(this.hide,this),t)):this.hide())},isShow:function(){return this._show}},t.exports=a},function(t,e,i){i(2).extendComponentModel({type:"tooltip",defaultOption:{zlevel:0,z:8,show:!0,showContent:!0,trigger:"item",triggerOn:"mousemove",alwaysShowContent:!1,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:!0,animationDurationUpdate:200,animationEasingUpdate:"exponentialOut",lineStyle:{color:"#555",width:1,type:"solid"},crossStyle:{color:"#555",width:1,type:"dashed",textStyle:{}},shadowStyle:{color:"rgba(150,150,150,0.3)"}},textStyle:{color:"#fff",fontSize:14}}})},function(t,e,i){function n(t,e){if(!t||!e)return!1;var i=m.round;return i(t[0])===i(e[0])&&i(t[1])===i(e[1])}function o(t,e,i,n){return{x1:t,y1:e,x2:i,y2:n}}function r(t,e,i,n){return{x:t,y:e,width:i,height:n}}function a(t,e,i,n,o,r){return{cx:t,cy:e,r0:i,r:n,startAngle:o,endAngle:r,clockwise:!0}}function s(t,e,i,n,o){var r=i.clientWidth,a=i.clientHeight,s=20;return t+r+s>n?t-=r+s:t+=s,e+a+s>o?e-=a+s:e+=s,[t,e]}function l(t,e,i,n,o){var r=i.clientWidth,a=i.clientHeight;return t=Math.min(t+r,n)-r,e=Math.min(e+a,o)-a,t=Math.max(t,0),e=Math.max(e,0),[t,e]}function u(t,e,i){var n=i.clientWidth,o=i.clientHeight,r=5,a=0,s=0,l=e.width,u=e.height;switch(t){case"inside":a=e.x+l/2-n/2,s=e.y+u/2-o/2;break;case"top":a=e.x+l/2-n/2,s=e.y-o-r;break;case"bottom":a=e.x+l/2-n/2,s=e.y+u+r;break;case"left":a=e.x-n-r,s=e.y+u/2-o/2;break;case"right":a=e.x+l+r,s=e.y+u/2-o/2}return[a,s]}function h(t,e,i,n,o,r,a,h){var c=h.getWidth(),d=h.getHeight(),f=a&&a.getBoundingRect().clone();if(a&&f.applyTransform(a.transform),"function"==typeof t&&(t=t([e,i],r,o.el,f)),p.isArray(t))e=y(t[0],c),i=y(t[1],d);else if("string"==typeof t&&a){var g=u(t,f,o.el);e=g[0],i=g[1]}else{var g=s(e,i,o.el,c,d);e=g[0],i=g[1]}if(n){var g=l(e,i,o.el,c,d);e=g[0],i=g[1]}o.moveTo(e,i)}function c(t){var e=t.coordinateSystem,i=t.get("tooltip.trigger",!0);return!(!e||"cartesian2d"!==e.type&&"polar"!==e.type&&"singleAxis"!==e.type||"item"===i)}var d=i(216),f=i(3),p=i(1),g=i(8),m=i(4),v=i(6),y=m.parsePercent,x=i(10),_=i(11);i(2).extendComponentView({type:"tooltip",_axisPointers:{},init:function(t,e){if(!x.node){var i=new d(e.getDom(),e);this._tooltipContent=i}},render:function(t,e,i){if(!x.node){this.group.removeAll(),this._axisPointers={},this._tooltipModel=t,this._ecModel=e,this._api=i,this._lastHover={};var n=this._tooltipContent;n.update(),n.enterable=t.get("enterable"),this._alwaysShowContent=t.get("alwaysShowContent"),this._seriesGroupByAxis=this._prepareAxisTriggerData(t,e);var o=this._crossText;o&&this.group.add(o);var r=t.get("triggerOn");if(null!=this._lastX&&null!=this._lastY&&"none"!==r){var a=this;clearTimeout(this._refreshUpdateTimeout),this._refreshUpdateTimeout=setTimeout(function(){a.manuallyShowTip(t,e,i,{x:a._lastX,y:a._lastY})})}var s=this._api.getZr();s.off("click",this._tryShow),s.off("mousemove",this._mousemove),s.off("mouseout",this._hide),s.off("globalout",this._hide),"click"===r?s.on("click",this._tryShow,this):"mousemove"===r&&(s.on("mousemove",this._mousemove,this),s.on("mouseout",this._hide,this),s.on("globalout",this._hide,this))}},_mousemove:function(t){var e=this._tooltipModel.get("showDelay"),i=this;clearTimeout(this._showTimeout),e>0?this._showTimeout=setTimeout(function(){i._tryShow(t)},e):this._tryShow(t)},manuallyShowTip:function(t,e,i,n){function o(t){var e=t.getData(),i=v.queryDataIndex(e,n);if(null!=i&&!p.isArray(i)&&e.hasValue(i))return!0}if(n.from!==this.uid){var e=this._ecModel,r=n.seriesIndex,a=e.getSeriesByIndex(r),i=this._api,s="axis"===this._tooltipModel.get("trigger");if(null==n.x||null==n.y){if(s?(a&&!o(a)&&(a=null),a||e.eachSeries(function(t){c(t)&&!a&&o(t)&&(a=t)})):a=a||e.getSeriesByIndex(0),a){var l=a.getData(),u=v.queryDataIndex(l,n);if(null==u||p.isArray(u))return;var h,d,f=l.getItemGraphicEl(u),g=a.coordinateSystem;if(a.getTooltipPosition){var m=a.getTooltipPosition(u)||[];h=m[0],d=m[1]}else if(g&&g.dataToPoint){var m=g.dataToPoint(l.getValues(p.map(g.dimensions,function(t){return a.coordDimToDataDim(t)[0]}),u,!0));h=m&&m[0],d=m&&m[1]}else if(f){var y=f.getBoundingRect().clone();y.applyTransform(f.transform),h=y.x+y.width/2,d=y.y+y.height/2}null!=h&&null!=d&&this._tryShow({offsetX:h,offsetY:d,position:n.position,target:f,event:{}})}}else{var f=i.getZr().handler.findHover(n.x,n.y);this._tryShow({offsetX:n.x,offsetY:n.y,position:n.position,target:f,event:{}})}}},manuallyHideTip:function(t,e,i,n){n.from!==this.uid&&this._hide()},_prepareAxisTriggerData:function(t,e){var i={};return e.eachSeries(function(t){if(c(t)){var e,n,o=t.coordinateSystem;"cartesian2d"===o.type?(e=o.getBaseAxis(),n=e.dim+e.index):"singleAxis"===o.type?(e=o.getAxis(),n=e.dim+e.type):(e=o.getBaseAxis(),n=e.dim+o.name),i[n]=i[n]||{coordSys:[],series:[]},i[n].coordSys.push(o),i[n].series.push(t)}},this),i},_tryShow:function(t){var e=t.target,i=this._tooltipModel,n=i.get("trigger"),o=this._ecModel,r=this._api;if(i)if(this._lastX=t.offsetX,this._lastY=t.offsetY,e&&null!=e.dataIndex){var a=e.dataModel||o.getSeriesByIndex(e.seriesIndex),s=e.dataIndex,l=a.getData(),u=l.getItemModel(s);"axis"===(u.get("tooltip.trigger")||n)?this._showAxisTooltip(i,o,t):(this._ticket="",this._hideAxisPointer(),this._resetLastHover(),this._showItemTooltipContent(a,s,e.dataType,t)),r.dispatchAction({type:"showTip",from:this.uid,dataIndexInside:s,dataIndex:l.getRawIndex(s),seriesIndex:e.seriesIndex})}else if(e&&e.tooltip){var h=e.tooltip;if("string"==typeof h){var c=h;h={content:c,formatter:c}}var d=new _(h,i),f=d.get("content"),p=Math.random();this._showTooltipContent(d,f,d.get("formatterParams")||{},p,t.offsetX,t.offsetY,t.position,e,r)}else"item"===n?this._hide():this._showAxisTooltip(i,o,t),"cross"===i.get("axisPointer.type")&&r.dispatchAction({type:"showTip",from:this.uid,x:t.offsetX,y:t.offsetY})},_showAxisTooltip:function(t,e,i){var o=t.getModel("axisPointer"),r=o.get("type");if("cross"===r){var a=i.target;if(a&&null!=a.dataIndex){var s=e.getSeriesByIndex(a.seriesIndex),l=a.dataIndex;this._showItemTooltipContent(s,l,a.dataType,i)}}this._showAxisPointer();var u=!0;p.each(this._seriesGroupByAxis,function(e){var a=e.coordSys,s=a[0],l=[i.offsetX,i.offsetY];if(!s.containPoint(l))return void this._hideAxisPointer(s.name);u=!1;var h=s.dimensions,c=s.pointToData(l,!0);l=s.dataToPoint(c);var d=s.getBaseAxis(),f=o.get("axis");
-if("auto"===f&&(f=d.dim),d.isBlank()||p.eqNaN(l[0])||p.eqNaN(l[1]))return void this._hideAxisPointer(s.name);var g=!1,m=this._lastHover;if("cross"===r)n(m.data,c)&&(g=!0),m.data=c;else{var v=p.indexOf(h,f);m.data===c[v]&&(g=!0),m.data=c[v]}var y=t.get("animation");"cartesian2d"!==s.type||g?"polar"!==s.type||g?"singleAxis"!==s.type||g||this._showSinglePointer(o,s,f,l,y):this._showPolarPointer(o,s,f,l,y):this._showCartesianPointer(o,s,f,l,y),"cross"!==r&&this._dispatchAndShowSeriesTooltipContent(s,e.series,l,c,g,i.position)},this),this._tooltipModel.get("show")||this._hideAxisPointer(),u&&this._hide()},_showCartesianPointer:function(t,e,i,n,a){function s(i,n,r){var a="x"===i?o(n[0],r[0],n[0],r[1]):o(r[0],n[1],r[1],n[1]),s=u._getPointerElement(e,t,i,a);f.subPixelOptimizeLine({shape:a,style:s.style}),d?f.updateProps(s,{shape:a},t):s.attr({shape:a})}function l(i,n,o){var a=e.getAxis(i),s=a.getBandWidth(),l=o[1]-o[0],h="x"===i?r(n[0]-s/2,o[0],s,l):r(o[0],n[1]-s/2,l,s),c=u._getPointerElement(e,t,i,h);d?f.updateProps(c,{shape:h},t):c.attr({shape:h})}var u=this,h=t.get("type"),c=e.getBaseAxis(),d=a&&"cross"!==h&&"category"===c.type&&c.getBandWidth()>20;if("cross"===h)s("x",n,e.getAxis("y").getGlobalExtent()),s("y",n,e.getAxis("x").getGlobalExtent()),this._updateCrossText(e,n,t);else{var p=e.getAxis("x"===i?"y":"x"),g=p.getGlobalExtent();"cartesian2d"===e.type&&("line"===h?s:l)(i,n,g)}},_showSinglePointer:function(t,e,i,n,r){function a(i,n,r){var a=e.getAxis(),l=a.orient,h="horizontal"===l?o(n[0],r[0],n[0],r[1]):o(r[0],n[1],r[1],n[1]),c=s._getPointerElement(e,t,i,h);u?f.updateProps(c,{shape:h},t):c.attr({shape:h})}var s=this,l=t.get("type"),u=r&&"cross"!==l&&"category"===e.getBaseAxis().type,h=e.getRect(),c=[h.y,h.y+h.height];a(i,n,c)},_showPolarPointer:function(t,e,i,n,r){function s(i,n,r){var a,s=e.pointToCoord(n);if("angle"===i){var l=e.coordToPoint([r[0],s[1]]),h=e.coordToPoint([r[1],s[1]]);a=o(l[0],l[1],h[0],h[1])}else a={cx:e.cx,cy:e.cy,r:s[0]};var c=u._getPointerElement(e,t,i,a);p?f.updateProps(c,{shape:a},t):c.attr({shape:a})}function l(i,n,o){var r,s=e.getAxis(i),l=s.getBandWidth(),h=e.pointToCoord(n),c=Math.PI/180;r="angle"===i?a(e.cx,e.cy,o[0],o[1],(-h[1]-l/2)*c,(-h[1]+l/2)*c):a(e.cx,e.cy,h[0]-l/2,h[0]+l/2,0,2*Math.PI);var d=u._getPointerElement(e,t,i,r);p?f.updateProps(d,{shape:r},t):d.attr({shape:r})}var u=this,h=t.get("type"),c=e.getAngleAxis(),d=e.getRadiusAxis(),p=r&&"cross"!==h&&"category"===e.getBaseAxis().type;if("cross"===h)s("angle",n,d.getExtent()),s("radius",n,c.getExtent()),this._updateCrossText(e,n,t);else{var g=e.getAxis("radius"===i?"angle":"radius"),m=g.getExtent();("line"===h?s:l)(i,n,m)}},_updateCrossText:function(t,e,i){var n=i.getModel("crossStyle"),o=n.getModel("textStyle"),r=this._tooltipModel,a=this._crossText;a||(a=this._crossText=new f.Text({style:{textAlign:"left",textVerticalAlign:"bottom"}}),this.group.add(a));var s=t.pointToData(e),l=t.dimensions;s=p.map(s,function(e,i){var n=t.getAxis(l[i]);return e="category"===n.type||"time"===n.type?n.scale.getLabel(e):g.addCommas(e.toFixed(n.getPixelPrecision()))}),a.setStyle({fill:o.getTextColor()||n.get("color"),textFont:o.getFont(),text:s.join(", "),x:e[0]+5,y:e[1]-5}),a.z=r.get("z"),a.zlevel=r.get("zlevel")},_getPointerElement:function(t,e,i,n){var o=this._tooltipModel,r=o.get("z"),a=o.get("zlevel"),s=this._axisPointers,l=t.name;if(s[l]=s[l]||{},s[l][i])return s[l][i];var u=e.get("type"),h=e.getModel(u+"Style"),c="shadow"===u,d=h[c?"getAreaStyle":"getLineStyle"](),p="polar"===t.type?c?"Sector":"radius"===i?"Circle":"Line":c?"Rect":"Line";c?d.stroke=null:d.fill=null;var g=s[l][i]=new f[p]({style:d,z:r,zlevel:a,silent:!0,shape:n});return this.group.add(g),g},_dispatchAndShowSeriesTooltipContent:function(t,e,i,n,o,r){var a=this._tooltipModel,s=t.getBaseAxis(),l={x:1,radius:1,single:1}[s.dim]?0:1;if(e.length){var u,c=p.map(e,function(t){return{seriesIndex:t.seriesIndex,dataIndexInside:t.getAxisTooltipDataIndex?t.getAxisTooltipDataIndex(t.coordDimToDataDim(s.dim),n,s):t.getData().indexOfNearest(t.coordDimToDataDim(s.dim)[0],n[l],!1,"category"===s.type?.5:null)}});p.each(c,function(t,i){e[i].getData().hasValue(t.dataIndexInside)&&(u=i)}),u=u||0;var d=this._lastHover,f=this._api;d.payloadBatch&&!o&&f.dispatchAction({type:"downplay",batch:d.payloadBatch}),o||(f.dispatchAction({type:"highlight",batch:c}),d.payloadBatch=c);var m=c[u].dataIndexInside;if(f.dispatchAction({type:"showTip",dataIndexInside:m,dataIndex:e[u].getData().getRawIndex(m),seriesIndex:c[u].seriesIndex,from:this.uid}),s&&a.get("showContent")&&a.get("show")){var v=p.map(e,function(t,e){return t.getDataParams(c[e].dataIndexInside)});if(o)h(r||a.get("position"),i[0],i[1],a.get("confine"),this._tooltipContent,v,null,f);else{var y=c[u].dataIndexInside,x="time"===s.type?s.scale.getLabel(n[l]):e[u].getData().getName(y),_=(x?g.encodeHTML(x)+"<br />":"")+p.map(e,function(t,e){return t.formatTooltip(c[e].dataIndexInside,!0)}).join("<br />"),b="axis_"+t.name+"_"+y;this._showTooltipContent(a,_,v,b,i[0],i[1],r,null,f)}}}},_showItemTooltipContent:function(t,e,i,n){var o=this._api,r=t.getData(i),a=r.getItemModel(e),s=a.get("tooltip",!0);if("string"==typeof s){var l=s;s={formatter:l}}var u=this._tooltipModel,h=t.getModel("tooltip",u),c=new _(s,h,h.ecModel),d=t.getDataParams(e,i),f=t.formatTooltip(e,!1,i),p="item_"+t.name+"_"+e;this._showTooltipContent(c,f,d,p,n.offsetX,n.offsetY,n.position,n.target,o)},_showTooltipContent:function(t,e,i,n,o,r,a,s,l){if(this._ticket="",t.get("showContent")&&t.get("show")){var u=this._tooltipContent,c=t.get("confine"),d=t.get("formatter");a=a||t.get("position");var f=e;if(d)if("string"==typeof d)f=g.formatTpl(d,i,!0);else if("function"==typeof d){var p=this,m=n,v=function(t,e){t===p._ticket&&(u.setContent(e),h(a,o,r,c,u,i,s,l))};p._ticket=m,f=d(i,m,v)}u.show(t),u.setContent(f),h(a,o,r,c,u,i,s,l)}},_showAxisPointer:function(t){if(t){var e=this._axisPointers[t];e&&p.each(e,function(t){t.show()})}else this.group.eachChild(function(t){t.show()}),this.group.show()},_resetLastHover:function(){var t=this._lastHover;t.payloadBatch&&this._api.dispatchAction({type:"downplay",batch:t.payloadBatch}),this._lastHover={}},_hideAxisPointer:function(t){if(t){var e=this._axisPointers[t];e&&p.each(e,function(t){t.hide()})}else this.group.children().length&&this.group.hide()},_hide:function(){clearTimeout(this._showTimeout),this._hideAxisPointer(),this._resetLastHover(),this._alwaysShowContent||this._tooltipContent.hideLater(this._tooltipModel.get("hideDelay")),this._api.dispatchAction({type:"hideTip",from:this.uid}),this._lastX=this._lastY=null},dispose:function(t,e){if(!x.node){var i=e.getZr();this._tooltipContent.hide(),i.off("click",this._tryShow),i.off("mousemove",this._mousemove),i.off("mouseout",this._hide),i.off("globalout",this._hide)}}})},function(t,e,i){function n(t,e){var i=t.get("center"),n=t.get("radius"),o=e.getWidth(),r=e.getHeight(),a=s.parsePercent;this.cx=a(i[0],o),this.cy=a(i[1],r);var l=this.getRadiusAxis(),u=Math.min(o,r)/2;l.setExtent(0,a(n,u))}function o(t,e){var i=this,n=i.getAngleAxis(),o=i.getRadiusAxis();if(n.scale.setExtent(1/0,-(1/0)),o.scale.setExtent(1/0,-(1/0)),t.eachSeries(function(t){if(t.coordinateSystem===i){var e=t.getData();o.scale.unionExtentFromData(e,"radius"),n.scale.unionExtentFromData(e,"angle")}}),u(n,n.model),u(o,o.model),"category"===n.type&&!n.onBand){var r=n.getExtent(),a=360/n.scale.count();n.inverse?r[1]+=a:r[1]-=a,n.setExtent(r[0],r[1])}}function r(t,e){if(t.type=e.get("type"),t.scale=l.createScaleByModel(e),t.onBand=e.get("boundaryGap")&&"category"===t.type,"angleAxis"===e.mainType){var i=e.get("startAngle");t.inverse=e.get("inverse")^e.get("clockwise"),t.setExtent(i,i+(t.inverse?-360:360))}e.axis=t,t.model=e}var a=i(382),s=i(4),l=(i(1),i(22)),u=l.niceScaleExtent;i(383);var h={dimensions:a.prototype.dimensions,create:function(t,e){var i=[];return t.eachComponent("polar",function(t,s){var l=new a(s);l.resize=n,l.update=o;var u=l.getRadiusAxis(),h=l.getAngleAxis(),c=t.findAxisModel("radiusAxis"),d=t.findAxisModel("angleAxis");r(u,c),r(h,d),l.resize(t,e),i.push(l),t.coordinateSystem=l}),t.eachSeries(function(e){if("polar"===e.get("coordinateSystem")){var i=t.queryComponents({mainType:"polar",index:e.get("polarIndex"),id:e.get("polarId")})[0];e.coordinateSystem=i.coordinateSystem}}),i}};i(23).register("polar",h)},function(t,e,i){function n(t){return parseInt(t,10)}function o(t,e){s.initVML(),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 o=e.delFromMap,r=e.addToMap;e.delFromMap=function(t){var i=e.get(t);o.call(e,t),i&&i.onRemove&&i.onRemove(n)},e.addToMap=function(t){t.onAdd&&t.onAdd(n),r.call(e,t)},this._firstPaint=!0}function r(t){return function(){a('In IE8.0 VML mode painter not support method "'+t+'"')}}var a=i(48),s=i(171);o.prototype={constructor:o,getViewportRoot:function(){return this._vmlViewport},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){var 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||n(e.width))-n(e.paddingLeft)-n(e.paddingRight)|0},_getHeight:function(){var t=this.root,e=t.currentStyle;return(t.clientHeight||n(e.height))-n(e.paddingTop)-n(e.paddingBottom)|0}};for(var l=["getLayer","insertLayer","eachLayer","eachBuildinLayer","eachOtherLayer","getLayers","modLayer","delLayer","clearLayer","toDataURL","pathToImage"],u=0;u<l.length;u++){var h=l[u];o.prototype[h]=r(h)}t.exports=o},function(t,e,i){if(!i(10).canvasSupported){var n=i(5),o=i(9),r=i(29).CMD,a=i(19),s=i(17),l=i(77),u=i(36),h=i(49),c=i(76),d=i(7),f=i(37),p=i(171),g=Math.round,m=Math.sqrt,v=Math.abs,y=Math.cos,x=Math.sin,_=Math.max,b=n.applyTransform,w=",",S="progid:DXImageTransform.Microsoft",M=21600,I=M/2,T=1e5,A=1e3,L=function(t){t.style.cssText="position:absolute;left:0;top:0;width:1px;height:1px;",t.coordsize=M+","+M,t.coordorigin="0,0"},C=function(t){return String(t).replace(/&/g,"&amp;").replace(/"/g,"&quot;")},D=function(t,e,i){return"rgb("+[t,e,i].join(",")+")"},P=function(t,e){e&&t&&e.parentNode!==t&&t.appendChild(e)},k=function(t,e){e&&t&&e.parentNode===t&&t.removeChild(e)},O=function(t,e,i){return(parseFloat(t)||0)*T+(parseFloat(e)||0)*A+i},z=function(t,e){return"string"==typeof t?t.lastIndexOf("%")>=0?parseFloat(t)/100*e:parseFloat(t):t},E=function(t,e,i){var n=a.parse(e);i=+i,isNaN(i)&&(i=1),n&&(t.color=D(n[0],n[1],n[2]),t.opacity=i*n[3])},R=function(t){var e=a.parse(t);return[D(e[0],e[1],e[2]),e[3]]},N=function(t,e,i){var n=e.fill;if(null!=n)if(n instanceof f){var o,r=0,a=[0,0],s=0,l=1,u=i.getBoundingRect(),h=u.width,c=u.height;if("linear"===n.type){o="gradient";var d=i.transform,p=[n.x*h,n.y*c],g=[n.x2*h,n.y2*c];d&&(b(p,p,d),b(g,g,d));var m=g[0]-p[0],v=g[1]-p[1];r=180*Math.atan2(m,v)/Math.PI,r<0&&(r+=360),r<1e-6&&(r=0)}else{o="gradientradial";var p=[n.x*h,n.y*c],d=i.transform,y=i.scale,x=h,w=c;a=[(p[0]-u.x)/x,(p[1]-u.y)/w],d&&b(p,p,d),x/=y[0]*M,w/=y[1]*M;var S=_(x,w);s=0/S,l=2*n.r/S-s}var I=n.colorStops.slice();I.sort(function(t,e){return t.offset-e.offset});for(var T=I.length,A=[],L=[],C=0;C<T;C++){var D=I[C],P=R(D.color);L.push(D.offset*l+s+" "+P[0]),0!==C&&C!==T-1||A.push(P)}if(T>=2){var k=A[0][0],O=A[1][0],z=A[0][1]*e.opacity,N=A[1][1]*e.opacity;t.type=o,t.method="none",t.focus="100%",t.angle=r,t.color=k,t.color2=O,t.colors=L.join(","),t.opacity=N,t.opacity2=z}"radial"===o&&(t.focusposition=a.join(","))}else E(t,n,e.opacity)},V=function(t,e){null!=e.lineDash&&(t.dashstyle=e.lineDash.join(" ")),null==e.stroke||e.stroke instanceof f||E(t,e.stroke,e.opacity)},B=function(t,e,i,n){var o="fill"==e,r=t.getElementsByTagName(e)[0];null!=i[e]&&"none"!==i[e]&&(o||!o&&i.lineWidth)?(t[o?"filled":"stroked"]="true",i[e]instanceof f&&k(t,r),r||(r=p.createNode(e)),o?N(r,i,n):V(r,i),P(t,r)):(t[o?"filled":"stroked"]="false",k(t,r))},G=[[],[],[]],F=function(t,e){var i,n,o,a,s,l,u=r.M,h=r.C,c=r.L,d=r.A,f=r.Q,p=[];for(a=0;a<t.length;){switch(o=t[a++],n="",i=0,o){case u:n=" m ",i=1,s=t[a++],l=t[a++],G[0][0]=s,G[0][1]=l;break;case c:n=" l ",i=1,s=t[a++],l=t[a++],G[0][0]=s,G[0][1]=l;break;case f:case h:n=" c ",i=3;var v,_,S=t[a++],T=t[a++],A=t[a++],L=t[a++];o===f?(v=A,_=L,A=(A+2*S)/3,L=(L+2*T)/3,S=(s+2*S)/3,T=(l+2*T)/3):(v=t[a++],_=t[a++]),G[0][0]=S,G[0][1]=T,G[1][0]=A,G[1][1]=L,G[2][0]=v,G[2][1]=_,s=v,l=_;break;case d:var C=0,D=0,P=1,k=1,O=0;e&&(C=e[4],D=e[5],P=m(e[0]*e[0]+e[1]*e[1]),k=m(e[2]*e[2]+e[3]*e[3]),O=Math.atan2(-e[1]/k,e[0]/P));var z=t[a++],E=t[a++],R=t[a++],N=t[a++],V=t[a++]+O,B=t[a++]+V+O;a++;var F=t[a++],H=z+y(V)*R,W=E+x(V)*N,S=z+y(B)*R,T=E+x(B)*N,Z=F?" wa ":" at ";Math.abs(H-S)<1e-4&&(Math.abs(B-V)>.01?F&&(H+=270/M):Math.abs(W-E)<1e-4?F&&H<z||!F&&H>z?T-=270/M:T+=270/M:F&&W<E||!F&&W>E?S+=270/M:S-=270/M),p.push(Z,g(((z-R)*P+C)*M-I),w,g(((E-N)*k+D)*M-I),w,g(((z+R)*P+C)*M-I),w,g(((E+N)*k+D)*M-I),w,g((H*P+C)*M-I),w,g((W*k+D)*M-I),w,g((S*P+C)*M-I),w,g((T*k+D)*M-I)),s=S,l=T;break;case r.R:var q=G[0],j=G[1];q[0]=t[a++],q[1]=t[a++],j[0]=q[0]+t[a++],j[1]=q[1]+t[a++],e&&(b(q,q,e),b(j,j,e)),q[0]=g(q[0]*M-I),j[0]=g(j[0]*M-I),q[1]=g(q[1]*M-I),j[1]=g(j[1]*M-I),p.push(" m ",q[0],w,q[1]," l ",j[0],w,q[1]," l ",j[0],w,j[1]," l ",q[0],w,j[1]);break;case r.Z:p.push(" x ")}if(i>0){p.push(n);for(var U=0;U<i;U++){var X=G[U];e&&b(X,X,e),p.push(g(X[0]*M-I),w,g(X[1]*M-I),U<i-1?w:"")}}}return p.join("")};d.prototype.brushVML=function(t){var e=this.style,i=this._vmlEl;i||(i=p.createNode("shape"),L(i),this._vmlEl=i),B(i,"fill",e,this),B(i,"stroke",e,this);var n=this.transform,o=null!=n,r=i.getElementsByTagName("stroke")[0];if(r){var a=e.lineWidth;if(o&&!e.strokeNoScale){var s=n[0]*n[3]-n[1]*n[2];a*=m(v(s))}r.weight=a+"px"}var l=this.path;this.__dirtyPath&&(l.beginPath(),this.buildPath(l,this.shape),l.toStatic(),this.__dirtyPath=!1),i.path=F(l.data,this.transform),i.style.zIndex=O(this.zlevel,this.z,this.z2),P(t,i),null!=e.text?this.drawRectText(t,this.getBoundingRect()):this.removeRectText(t)},d.prototype.onRemove=function(t){k(t,this._vmlEl),this.removeRectText(t)},d.prototype.onAdd=function(t){P(t,this._vmlEl),this.appendRectText(t)};var H=function(t){return"object"==typeof t&&t.tagName&&"IMG"===t.tagName.toUpperCase()};h.prototype.brushVML=function(t){var e,i,n=this.style,o=n.image;if(H(o)){var r=o.src;if(r===this._imageSrc)e=this._imageWidth,i=this._imageHeight;else{var a=o.runtimeStyle,s=a.width,l=a.height;a.width="auto",a.height="auto",e=o.width,i=o.height,a.width=s,a.height=l,this._imageSrc=r,this._imageWidth=e,this._imageHeight=i}o=r}else o===this._imageSrc&&(e=this._imageWidth,i=this._imageHeight);if(o){var u=n.x||0,h=n.y||0,c=n.width,d=n.height,f=n.sWidth,v=n.sHeight,y=n.sx||0,x=n.sy||0,M=f&&v,I=this._vmlEl;I||(I=p.doc.createElement("div"),L(I),this._vmlEl=I);var T,A=I.style,C=!1,D=1,k=1;if(this.transform&&(T=this.transform,D=m(T[0]*T[0]+T[1]*T[1]),k=m(T[2]*T[2]+T[3]*T[3]),C=T[1]||T[2]),C){var z=[u,h],E=[u+c,h],R=[u,h+d],N=[u+c,h+d];b(z,z,T),b(E,E,T),b(R,R,T),b(N,N,T);var V=_(z[0],E[0],R[0],N[0]),B=_(z[1],E[1],R[1],N[1]),G=[];G.push("M11=",T[0]/D,w,"M12=",T[2]/k,w,"M21=",T[1]/D,w,"M22=",T[3]/k,w,"Dx=",g(u*D+T[4]),w,"Dy=",g(h*k+T[5])),A.padding="0 "+g(V)+"px "+g(B)+"px 0",A.filter=S+".Matrix("+G.join("")+", SizingMethod=clip)"}else T&&(u=u*D+T[4],h=h*k+T[5]),A.filter="",A.left=g(u)+"px",A.top=g(h)+"px";var F=this._imageEl,W=this._cropEl;F||(F=p.doc.createElement("div"),this._imageEl=F);var Z=F.style;if(M){if(e&&i)Z.width=g(D*e*c/f)+"px",Z.height=g(k*i*d/v)+"px";else{var q=new Image,j=this;q.onload=function(){q.onload=null,e=q.width,i=q.height,Z.width=g(D*e*c/f)+"px",Z.height=g(k*i*d/v)+"px",j._imageWidth=e,j._imageHeight=i,j._imageSrc=o},q.src=o}W||(W=p.doc.createElement("div"),W.style.overflow="hidden",this._cropEl=W);var U=W.style;U.width=g((c+y*c/f)*D),U.height=g((d+x*d/v)*k),U.filter=S+".Matrix(Dx="+-y*c/f*D+",Dy="+-x*d/v*k+")",W.parentNode||I.appendChild(W),F.parentNode!=W&&W.appendChild(F)}else Z.width=g(D*c)+"px",Z.height=g(k*d)+"px",I.appendChild(F),W&&W.parentNode&&(I.removeChild(W),this._cropEl=null);var X="",Y=n.opacity;Y<1&&(X+=".Alpha(opacity="+g(100*Y)+") "),X+=S+".AlphaImageLoader(src="+o+", SizingMethod=scale)",Z.filter=X,I.style.zIndex=O(this.zlevel,this.z,this.z2),P(t,I),null!=n.text&&this.drawRectText(t,this.getBoundingRect())}},h.prototype.onRemove=function(t){k(t,this._vmlEl),this._vmlEl=null,this._cropEl=null,this._imageEl=null,this.removeRectText(t)},h.prototype.onAdd=function(t){P(t,this._vmlEl),this.appendRectText(t)};var W,Z="normal",q={},j=0,U=100,X=document.createElement("div"),Y=function(t){var e=q[t];if(!e){j>U&&(j=0,q={});var i,n=X.style;try{n.font=t,i=n.fontFamily.split(",")[0]}catch(o){}e={style:n.fontStyle||Z,variant:n.fontVariant||Z,weight:n.fontWeight||Z,size:0|parseFloat(n.fontSize||12),family:i||"Microsoft YaHei"},q[t]=e,j++}return e};s.measureText=function(t,e){var i=p.doc;W||(W=i.createElement("div"),W.style.cssText="position:absolute;top:-20000px;left:0;padding:0;margin:0;border:none;white-space:pre;",p.doc.body.appendChild(W));try{W.style.font=e}catch(n){}return W.innerHTML="",W.appendChild(i.createTextNode(t)),{width:W.offsetWidth}};for(var $=new o,Q=function(t,e,i,n){var o=this.style,r=o.text;if(null!=r&&(r+=""),r){var a,l,u=o.textAlign,h=Y(o.textFont),c=h.style+" "+h.variant+" "+h.weight+" "+h.size+'px "'+h.family+'"',d=o.textBaseline,f=o.textVerticalAlign;i=i||s.getBoundingRect(r,c,u,d);var m=this.transform;if(m&&!n&&($.copy(e),$.applyTransform(m),e=$),n)a=e.x,l=e.y;else{var v=o.textPosition,y=o.textDistance;if(v instanceof Array)a=e.x+z(v[0],e.width),l=e.y+z(v[1],e.height),u=u||"left",d=d||"top";else{var x=s.adjustTextPositionOnRect(v,e,i,y);a=x.x,l=x.y,u=u||x.textAlign,d=d||x.textBaseline}}if(f){switch(f){case"middle":l-=i.height/2;break;case"bottom":l-=i.height}d="top"}var _=h.size;switch(d){case"hanging":case"top":l+=_/1.75;break;case"middle":break;default:l-=_/2.25}switch(u){case"left":break;case"center":a-=i.width/2;break;case"right":a-=i.width}var S,M,I,T=p.createNode,A=this._textVmlEl;A?(I=A.firstChild,S=I.nextSibling,M=S.nextSibling):(A=T("line"),S=T("path"),M=T("textpath"),I=T("skew"),M.style["v-text-align"]="left",L(A),S.textpathok=!0,M.on=!0,A.from="0 0",A.to="1000 0.05",P(A,I),P(A,S),P(A,M),this._textVmlEl=A);var D=[a,l],k=A.style;m&&n?(b(D,D,m),I.on=!0,I.matrix=m[0].toFixed(3)+w+m[2].toFixed(3)+w+m[1].toFixed(3)+w+m[3].toFixed(3)+",0,0",I.offset=(g(D[0])||0)+","+(g(D[1])||0),I.origin="0 0",k.left="0px",k.top="0px"):(I.on=!1,k.left=g(a)+"px",k.top=g(l)+"px"),M.string=C(r);try{M.style.font=c}catch(E){}B(A,"fill",{fill:n?o.fill:o.textFill,opacity:o.opacity},this),B(A,"stroke",{stroke:n?o.stroke:o.textStroke,opacity:o.opacity,lineDash:o.lineDash},this),A.style.zIndex=O(this.zlevel,this.z,this.z2),P(t,A)}},K=function(t){k(t,this._textVmlEl),this._textVmlEl=null},J=function(t){P(t,this._textVmlEl)},tt=[l,u,h,d,c],et=0;et<tt.length;et++){var it=tt[et].prototype;it.drawRectText=Q,it.removeRectText=K,it.appendRectText=J}c.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)},c.prototype.onRemove=function(t){this.removeRectText(t)},c.prototype.onAdd=function(t){this.appendRectText(t)}}},function(t,e,i){i(221),i(78).registerPainter("vml",i(220))},function(t,e,i){var n=i(1),o=i(224),r=i(2);r.registerAction({type:"geoRoam",event:"geoRoam",update:"updateLayout"},function(t,e){var i=t.componentType||"series";e.eachComponent({mainType:i,query:t},function(e){var r=e.coordinateSystem;if("geo"===r.type){var a=o.updateCenterAndZoom(r,t,e.get("scaleLimit"));e.setCenter&&e.setCenter(a.center),e.setZoom&&e.setZoom(a.zoom),"series"===i&&n.each(e.seriesGroup,function(t){t.setCenter(a.center),t.setZoom(a.zoom)})}})})},function(t,e){var i={};i.updateCenterAndZoom=function(t,e,i){var n=t.getZoom(),o=t.getCenter(),r=e.zoom,a=t.dataToPoint(o);if(null!=e.dx&&null!=e.dy){a[0]-=e.dx,a[1]-=e.dy;var o=t.pointToData(a);t.setCenter(o)}if(null!=r){if(i){var s=i.min||0,l=i.max||1/0;r=Math.max(Math.min(n*r,l),s)/n}t.scale[0]*=r,t.scale[1]*=r;var u=t.position,h=(e.originX-u[0])*(r-1),c=(e.originY-u[1])*(r-1);u[0]-=h,u[1]-=c,t.updateTransform();var o=t.pointToData(a);t.setCenter(o),t.setZoom(r*n)}return{center:t.getCenter(),zoom:t.getZoom()}},t.exports=i},function(t,e,i){var n=i(5);t.exports=function(t){var e=t.coordinateSystem;if(!e||"view"===e.type){var i=e.getBoundingRect(),o=t.getData(),r=o.graph,a=0,s=o.getSum("value"),l=2*Math.PI/(s||o.count()),u=i.width/2+i.x,h=i.height/2+i.y,c=Math.min(i.width,i.height)/2;r.eachNode(function(t){var e=t.getValue("value");a+=l*(s?e:1)/2,t.setLayout([c*Math.cos(a)+u,c*Math.sin(a)+h]),a+=l*(s?e:1)/2}),o.setLayout({cx:u,cy:h}),r.eachEdge(function(t){var e,i=t.getModel().get("lineStyle.normal.curveness")||0,o=n.clone(t.node1.getLayout()),r=n.clone(t.node2.getLayout()),a=(o[0]+r[0])/2,s=(o[1]+r[1])/2;+i&&(i*=3,e=[u*i+a*(1-i),h*i+s*(1-i)]),t.setLayout([o,r,e])})}}},function(t,e,i){var n=i(5);t.exports=function(t){t.eachEdge(function(t){var e=t.getModel().get("lineStyle.normal.curveness")||0,i=n.clone(t.node1.getLayout()),o=n.clone(t.node2.getLayout()),r=[i,o];+e&&r.push([(i[0]+o[0])/2-(i[1]-o[1])*e,(i[1]+o[1])/2-(o[0]-i[0])*e]),t.setLayout(r)})}},function(t,e,i){var n=i(226);t.exports=function(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")])}),n(i)}}},function(t,e,i){function n(t,e,i){o.Group.call(this),this.add(this.createLine(t,e,i)),this._updateEffectSymbol(t,e)}var o=i(3),r=i(98),a=i(1),s=i(24),l=i(5),u=i(18),h=n.prototype;h.createLine=function(t,e,i){return new r(t,e,i)},h._updateEffectSymbol=function(t,e){var i=t.getItemModel(e),n=i.getModel("effect"),o=n.get("symbolSize"),r=n.get("symbol");a.isArray(o)||(o=[o,o]);var l=n.get("color")||t.getItemVisual(e,"color"),u=this.childAt(1);this._symbolType!==r&&(this.remove(u),u=s.createSymbol(r,-.5,-.5,1,1,l),u.z2=100,u.culling=!0,this.add(u)),u&&(u.setStyle("shadowColor",l),u.setStyle(n.getItemStyle(["color"])),u.attr("scale",o),u.setColor(l),u.attr("scale",o),this._symbolType=r,this._updateEffectAnimation(t,n,e))},h._updateEffectAnimation=function(t,e,i){var n=this.childAt(1);if(n){var o=this,r=t.getItemLayout(i),s=1e3*e.get("period"),l=e.get("loop"),u=e.get("constantSpeed"),h=a.retrieve(e.get("delay"),function(e){return e/t.count()*s/3}),c="function"==typeof h;if(n.ignore=!0,this.updateAnimationPoints(n,r),u>0&&(s=this.getLineLength(n)/u*1e3),s!==this._period||l!==this._loop){n.stopAnimation();var d=h;c&&(d=h(i)),n.__t>0&&(d=-s*n.__t),n.__t=0;var f=n.animate("",l).when(s,{__t:1}).delay(d).during(function(){o.updateSymbolPosition(n)});l||f.done(function(){o.remove(n)}),f.start()}this._period=s,this._loop=l}},h.getLineLength=function(t){return l.dist(t.__p1,t.__cp1)+l.dist(t.__cp1,t.__p2)},h.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]},h.updateData=function(t,e,i){this.childAt(0).updateData(t,e,i),this._updateEffectSymbol(t,e)},h.updateSymbolPosition=function(t){var e=t.__p1,i=t.__p2,n=t.__cp1,o=t.__t,r=t.position,a=u.quadraticAt,s=u.quadraticDerivativeAt;r[0]=a(e[0],n[0],i[0],o),r[1]=a(e[1],n[1],i[1],o);var l=s(e[0],n[0],i[0],o),h=s(e[1],n[1],i[1],o);t.rotation=-Math.atan2(h,l)-Math.PI/2,t.ignore=!1},h.updateLayout=function(t,e){this.childAt(0).updateLayout(t,e);var i=t.getItemModel(e).getModel("effect");this._updateEffectAnimation(t,i,e)},a.inherits(n,o.Group),t.exports=n},function(t,e,i){function n(t,e,i){o.Group.call(this),this._createPolyline(t,e,i)}var o=i(3),r=i(1),a=n.prototype;a._createPolyline=function(t,e,i){var n=t.getItemLayout(e),r=new o.Polyline({shape:{points:n}});this.add(r),this._updateCommonStl(t,e,i)},a.updateData=function(t,e,i){var n=t.hostModel,r=this.childAt(0),a={shape:{points:t.getItemLayout(e)}};o.updateProps(r,a,n,e),this._updateCommonStl(t,e,i)},a._updateCommonStl=function(t,e,i){var n=this.childAt(0),a=t.getItemModel(e),s=t.getItemVisual(e,"color"),l=i&&i.lineStyle,u=i&&i.hoverLineStyle;i&&!t.hasItemOption||(l=a.getModel("lineStyle.normal").getLineStyle(),u=a.getModel("lineStyle.emphasis").getLineStyle()),n.useStyle(r.defaults({strokeNoScale:!0,fill:"none",stroke:s},l)),n.hoverStyle=u,o.setHoverStyle(this)},a.updateLayout=function(t,e){var i=this.childAt(0);i.setShape("points",t.getItemLayout(e))},r.inherits(n,o.Group),t.exports=n},function(t,e,i){var n=i(14),o=i(392),r=i(244),a=i(27),s=i(23),l=i(1),u=i(35);t.exports=function(t,e,i,h,c){for(var d=new o(h),f=0;f<t.length;f++)d.addNode(l.retrieve(t[f].id,t[f].name,f),f);for(var p=[],g=[],m=0,f=0;f<e.length;f++){var v=e[f],y=v.source,x=v.target;d.addEdge(y,x,m)&&(g.push(v),p.push(l.retrieve(v.id,y+" > "+x)),m++)}var _,b=i.get("coordinateSystem");if("cartesian2d"===b||"polar"===b)_=u(t,i,i.ecModel);else{var w=s.get(b),S=a((w&&"view"!==w.type?w.dimensions||[]:[]).concat(["value"]),t);_=new n(S,i),_.initData(t)}var M=new n(["value"],i);return M.initData(g,p),c&&c(_,M),r({mainData:_,struct:d,structAttr:"graph",datas:{node:_,edge:M},datasAttr:{node:"data",edge:"edgeData"}}),d.update(),d}},function(t,e,i){function n(t,e){var i=t.getItemStyle(),n=t.get("areaColor");return null!=n&&(i.fill=n),i}function o(t,e,i,n,o){i.off("click"),i.off("mousedown"),e.get("selectedMode")&&(i.on("mousedown",function(){t._mouseDownFlag=!0}),i.on("click",function(a){if(t._mouseDownFlag){t._mouseDownFlag=!1;for(var s=a.target;!s.__region;)s=s.parent;if(s){var l=s.__region,u={type:("geo"===e.mainType?"geo":"map")+"ToggleSelect",name:l.name,from:o.uid};u[e.mainType+"Id"]=e.id,n.dispatchAction(u),r(e,i)}}}))}function r(t,e){e.eachChild(function(e){e.__region&&e.trigger(t.isSelected(e.__region.name)?"emphasis":"normal")})}function a(t,e){var i=new l.Group;this._controller=new s(t.getZr(),e?i:null,null),this.group=i,this._updateGroup=e,this._mouseDownFlag}var s=i(84),l=i(3),u=i(1);a.prototype={constructor:a,draw:function(t,e,i,a,s){var h="geo"===t.mainType,c=t.getData&&t.getData();h&&e.eachComponent({mainType:"series",subType:"map"},function(e){c||e.getHostGeoModel()!==t||(c=e.getData())});var d=t.coordinateSystem,f=this.group,p=d.scale,g={position:d.position,scale:p};!f.childAt(0)||s?f.attr(g):l.updateProps(f,g,t),f.removeAll();var m=["itemStyle","normal"],v=["itemStyle","emphasis"],y=["label","normal"],x=["label","emphasis"];u.each(d.regions,function(e){var i=new l.Group,o=new l.CompoundPath({shape:{paths:[]}});i.add(o);var r,a=t.getRegionModel(e.name)||t,s=a.getModel(m),d=a.getModel(v),g=n(s,p),_=n(d,p),b=a.getModel(y),w=a.getModel(x);if(c){r=c.indexOfName(e.name);var S=c.getItemVisual(r,"color",!0);S&&(g.fill=S)}var M=b.getModel("textStyle"),I=w.getModel("textStyle");u.each(e.contours,function(t){var e=new l.Polygon({shape:{points:t}});o.shape.paths.push(e)}),o.setStyle(g),o.style.strokeNoScale=!0,o.culling=!0;var T=b.get("show"),A=w.get("show"),L=c&&isNaN(c.get("value",r)),C=c&&c.getItemLayout(r);if(h||L&&(T||A)||C&&C.showLabel){var D=c?r:e.name,P=t.getFormattedLabel(D,"normal"),k=t.getFormattedLabel(D,"emphasis"),O=new l.Text({style:{text:T?P||e.name:"",fill:M.getTextColor(),textFont:M.getFont(),textAlign:"center",textVerticalAlign:"middle"},hoverStyle:{text:A?k||e.name:"",fill:I.getTextColor(),textFont:I.getFont()},position:e.center.slice(),scale:[1/p[0],1/p[1]],z2:10,silent:!0});i.add(O)}if(c)c.setItemGraphicEl(r,i);else{var a=t.getRegionModel(e.name);o.eventData={componentType:"geo",geoIndex:t.componentIndex,name:e.name,region:a&&a.option||{}}}i.__region=e,l.setHoverStyle(i,_,{hoverSilentOnTouch:!!t.get("selectedMode")}),f.add(i)}),this._updateController(t,e,i),o(this,t,f,i,a),r(t,f)},remove:function(){this.group.removeAll(),this._controller.dispose()},_updateController:function(t,e,i){function n(){var e={type:"geoRoam",componentType:a};return e[a+"Id"]=t.id,e}var o=t.coordinateSystem,r=this._controller;r.zoomLimit=t.get("scaleLimit"),r.zoom=o.getZoom(),r.enable(t.get("roam")||!1);var a=t.mainType;r.off("pan").on("pan",function(t,e){this._mouseDownFlag=!1,i.dispatchAction(u.extend(n(),{dx:t,dy:e}))},this),r.off("zoom").on("zoom",function(t,e,o){if(this._mouseDownFlag=!1,i.dispatchAction(u.extend(n(),{zoom:t,originX:e,originY:o})),this._updateGroup){var r=this.group,a=r.scale;r.traverse(function(t){"text"===t.type&&t.attr("scale",[1/a[0],1/a[1]])})}},this),r.setContainsPoint(function(t,e){return o.getViewRectAfterRoam().contain(t,e)})}},t.exports=a},function(t,e,i){i(243),i(378),i(347);var n=i(2),o=i(1),r=5;n.extendComponentView({type:"parallel",render:function(t,e,i){var n=i.getZr();if(!this.__onMouseDown){var a;n.on("mousedown",this.__onMouseDown=function(t){a=[t.offsetX,t.offsetY]}),n.on("mouseup",this.__onMouseUp=function(e){var n=[e.offsetX,e.offsetY],s=Math.pow(a[0]-n[0],2)+Math.pow(a[1]-n[1],2);if(t.get("axisExpandable")&&!(s>r)){var l=t.coordinateSystem,u=l.findClosestAxisDim(n);if(u){var h=o.indexOf(l.dimensions,u);i.dispatchAction({type:"parallelAxisExpand",axisExpandCenter:h})}}})}},dispose:function(t,e){e.getZr().off(this.__onMouseDown),e.getZr().off(this.__onMouseUp)}}),n.registerPreprocessor(i(379))},function(t,e,i){i(391),i(336),i(388);var n=i(2);n.extendComponentView({type:"single"})},function(t,e,i){var n=i(2),o=i(1),r=i(10),a=i(246),s=i(73),l=i(174),u=s.mapVisual,h=i(6),c=s.eachVisual,d=i(4),f=o.isArray,p=o.each,g=d.asc,m=d.linearMap,v=o.noop,y=["#f6efa6","#d88273","#bf444c"],x=n.extendComponentModel({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:null,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;r.canvasSupported||(i.realtime=!1),!e&&l.replaceVisualOption(i,t,this.replacableOptionKeys),this.textStyleModel=this.getModel("textStyle"),this.resetItemSize(),this.completeVisualOption()},resetVisual:function(t){var e=this.stateList;t=o.bind(t,this),this.controllerVisuals=l.createVisualMappings(this.option.controller,e,t),this.targetVisuals=l.createVisualMappings(this.option.target,e,t)},resetTargetSeries:function(){var t=this.option,e=null==t.seriesIndex;t.seriesIndex=e?[]:h.normalizeToArray(t.seriesIndex),e&&this.ecModel.eachSeries(function(e,i){t.seriesIndex.push(i)})},eachTargetSeries:function(t,e){o.each(this.option.seriesIndex,function(i){t.call(e,this.ecModel.getSeriesByIndex(i))},this)},isTargetSeries:function(t){
-var e=!1;return this.eachTargetSeries(function(i){i===t&&(e=!0)}),e},formatValueText:function(t,e,i){function n(t){return t===u[0]?"min":t===u[1]?"max":(+t).toFixed(l)}var r,a,s=this.option,l=s.precision,u=this.dataBound,h=s.formatter;return i=i||["<",">"],o.isArray(t)&&(t=t.slice(),r=!0),a=e?t:r?[n(t[0]),n(t[1])]:n(t),o.isString(h)?h.replace("{value}",r?a[0]:a).replace("{value2}",r?a[1]:a):o.isFunction(h)?r?h(t[0],t[1]):h(t):r?t[0]===u[0]?i[0]+" "+a[1]:t[1]===u[1]?i[1]+" "+a[0]:a[0]+" - "+a[1]:a},resetExtent:function(){var t=this.option,e=g([t.min,t.max]);this._dataExtent=e},getDataDimension:function(t){var e=this.option.dimension;return null!=e?e:t.dimensions.length-1},getExtent:function(){return this._dataExtent.slice()},completeVisualOption:function(){function t(t){f(n.color)&&!t.inRange&&(t.inRange={color:n.color.slice().reverse()}),t.inRange=t.inRange||{color:y},p(this.stateList,function(e){var i=t[e];if(o.isString(i)){var n=a.get(i,"active",d);n?(t[e]={},t[e][i]=n):delete t[e]}},this)}function e(t,e,i){var n=t[e],o=t[i];n&&!o&&(o=t[i]={},p(n,function(t,e){if(s.isValidType(e)){var i=a.get(e,"inactive",d);null!=i&&(o[e]=i,"color"!==e||o.hasOwnProperty("opacity")||o.hasOwnProperty("colorAlpha")||(o.opacity=[0,0]))}}))}function i(t){var e=(t.inRange||{}).symbol||(t.outOfRange||{}).symbol,i=(t.inRange||{}).symbolSize||(t.outOfRange||{}).symbolSize,n=this.get("inactiveColor");p(this.stateList,function(r){var a=this.itemSize,s=t[r];s||(s=t[r]={color:d?n:[n]}),null==s.symbol&&(s.symbol=e&&o.clone(e)||(d?"roundRect":["roundRect"])),null==s.symbolSize&&(s.symbolSize=i&&o.clone(i)||(d?a[0]:[a[0],a[0]])),s.symbol=u(s.symbol,function(t){return"none"===t||"square"===t?"roundRect":t});var l=s.symbolSize;if(null!=l){var h=-(1/0);c(l,function(t){t>h&&(h=t)}),s.symbolSize=u(l,function(t){return m(t,[0,h],[0,a[0]],!0)})}},this)}var n=this.option,r={inRange:n.inRange,outOfRange:n.outOfRange},l=n.target||(n.target={}),h=n.controller||(n.controller={});o.merge(l,r),o.merge(h,r);var d=this.isCategory();t.call(this,l),t.call(this,h),e.call(this,l,"inRange","outOfRange"),i.call(this,h)},resetItemSize:function(){this.itemSize=[parseFloat(this.get("itemWidth")),parseFloat(this.get("itemHeight"))]},isCategory:function(){return!!this.option.categories},setSelected:v,getValueState:v,getVisualMeta:v});t.exports=x},function(t,e,i){var n=i(1),o=i(3),r=i(8),a=i(12),s=i(2),l=i(73);t.exports=s.extendComponentView({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){return this.visualMapModel=t,t.get("show")===!1?void this.group.removeAll():void this.doRender.apply(this,arguments)},renderBackground:function(t){var e=this.visualMapModel,i=r.normalizeCssArray(e.get("padding")||0),n=t.getBoundingRect();t.add(new o.Rect({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(t,e,i){function o(t){return u[t]}function r(t,e){u[t]=e}i=i||{};var a=i.forceState,s=this.visualMapModel,u={};if("symbol"===e&&(u.symbol=s.get("itemSymbol")),"color"===e){var h=s.get("contentColor");u.color=h}var c=s.controllerVisuals[a||s.getValueState(t)],d=l.prepareVisualTypes(c);return n.each(d,function(n){var a=c[n];i.convertOpacityToAlpha&&"opacity"===n&&(n="colorAlpha",a=c.__alphaForOpacity),l.dependsOn(n,e)&&a&&a.applyVisual(t,o,r)}),u[e]},positionGroup:function(t){var e=this.visualMapModel,i=this.api;a.positionElement(t,e.getBoxLayoutParams(),{width:i.getWidth(),height:i.getHeight()})},doRender:n.noop})},function(t,e,i){var n=i(1),o=i(12),r={getItemAlign:function(t,e,i){var n=t.option,r=n.align;if(null!=r&&"auto"!==r)return r;for(var a={width:e.getWidth(),height:e.getHeight()},s="horizontal"===n.orient?1:0,l=[["left","right","width"],["top","bottom","height"]],u=l[s],h=[0,null,10],c={},d=0;d<3;d++)c[l[1-s][d]]=h[d],c[u[d]]=2===d?i[0]:n[u[d]];var f=[["x","width",3],["y","height",0]][s],p=o.getLayoutRect(c,a,n.padding);return u[(p.margin[f[2]]||0)+p[f[0]]+.5*p[f[1]]<.5*a[f[1]]?0:1]},convertDataIndex:function(t){return n.each(t||[],function(e){null!=t.dataIndex&&(t.dataIndexInside=t.dataIndex,t.dataIndex=null)}),t}};t.exports=r},function(t,e,i){function n(t,e){return t&&t.hasOwnProperty&&t.hasOwnProperty(e)}var o=i(1),r=o.each;t.exports=function(t){var e=t&&t.visualMap;o.isArray(e)||(e=e?[e]:[]),r(e,function(t){if(t){n(t,"splitList")&&!n(t,"pieces")&&(t.pieces=t.splitList,delete t.splitList);var e=t.pieces;e&&o.isArray(e)&&r(e,function(t){o.isObject(t)&&(n(t,"start")&&!n(t,"min")&&(t.min=t.start),n(t,"end")&&!n(t,"max")&&(t.max=t.end))})}})}},function(t,e,i){i(13).registerSubTypeDefaulter("visualMap",function(t){return t.categories||(t.pieces?t.pieces.length>0:t.splitNumber>0)&&!t.calculable?"piecewise":"continuous"})},function(t,e,i){function n(t,e){t.eachTargetSeries(function(e){var i=e.getData();s.applyVisual(t.stateList,t.targetVisuals,i,t.getValueState,t,t.getDataDimension(i))})}function o(t){t.eachSeries(function(e){var i=e.getData(),n=[];t.eachComponent("visualMap",function(t){if(t.isTargetSeries(e)){var o=t.getVisualMeta(u.bind(r,null,e,t))||{stops:[],outerColors:[]};o.dimension=t.getDataDimension(i),n.push(o)}}),e.getData().setVisual("visualMeta",n)})}function r(t,e,i,n){function o(t){return u[t]}function r(t,e){u[t]=e}for(var a=e.targetVisuals[n],s=l.prepareVisualTypes(a),u={color:t.getData().getVisual("color")},h=0,c=s.length;h<c;h++){var d=s[h],f=a["opacity"===d?"__alphaForOpacity":d];f&&f.applyVisual(i,o,r)}return u.color}var a=i(2),s=i(174),l=i(73),u=i(1);a.registerVisual(a.PRIORITY.VISUAL.COMPONENT,function(t){t.eachComponent("visualMap",function(e){n(e,t)}),o(t)})},function(t,e,i){var n=i(2),o={type:"selectDataRange",event:"dataRangeSelected",update:"update"};n.registerAction(o,function(t,e){e.eachComponent({mainType:"visualMap",query:t},function(e){e.setSelected(t.selected)})})},function(t,e,i){function n(){l.call(this)}function o(t){this.name=t,this.zoomLimit,l.call(this),this._roamTransform=new n,this._viewTransform=new n,this._center,this._zoom}function r(t,e,i,n){var o=i.seriesModel,r=o?o.coordinateSystem:null;return r===this?r[t](n):null}var a=i(5),s=i(20),l=i(92),u=i(1),h=i(9),c=a.applyTransform;u.mixin(n,l),o.prototype={constructor:o,type:"view",dimensions:["x","y"],setBoundingRect:function(t,e,i,n){return this._rect=new h(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 h(t,e,i,n)},transformTo:function(t,e,i,n){var o=this.getBoundingRect(),r=this._viewTransform;r.transform=o.calculateTransform(new h(t,e,i,n)),r.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(),e=t.x+t.width/2,i=t.y+t.height/2;return[e,i]},getCenter:function(){return this._center||this.getDefaultCenter()},getZoom:function(){return this._zoom||1},getRoamTransform:function(){return this._roamTransform},_updateCenterAndZoom:function(){var t=this._viewTransform.getLocalTransform(),e=this._roamTransform,i=this.getDefaultCenter(),n=this.getCenter(),o=this.getZoom();n=a.applyTransform([],n,t),i=a.applyTransform([],i,t),e.origin=n,e.position=[i[0]-n[0],i[1]-n[1]],e.scale=[o,o],this._updateTransform()},_updateTransform:function(){var t=this._roamTransform,e=this._viewTransform;e.parent=t,t.updateTransform(),e.updateTransform(),e.transform&&s.copy(this.transform||(this.transform=[]),e.transform),this.transform?(this.invTransform=this.invTransform||[],s.invert(this.invTransform,this.transform)):this.invTransform=null,this.decomposeTransform()},getViewRect:function(){return this._viewRect},getViewRectAfterRoam:function(){var t=this.getBoundingRect().clone();return t.applyTransform(this.transform),t},dataToPoint:function(t){var e=this.transform;return e?c([],t,e):[t[0],t[1]]},pointToData:function(t){var e=this.invTransform;return e?c([],t,e):[t[0],t[1]]},convertToPixel:u.curry(r,"dataToPoint"),convertFromPixel:u.curry(r,"pointToData"),containPoint:function(t){return this.getViewRectAfterRoam().contain(t[0],t[1])}},u.mixin(o,l),t.exports=o},function(t,e,i){function n(t,e,i){if(this.name=t,this.contours=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}var o=i(247),r=i(9),a=i(75),s=i(5);n.prototype={constructor:n,getBoundingRect:function(){var t=this._rect;if(t)return t;for(var e=Number.MAX_VALUE,i=[e,e],n=[-e,-e],o=[],l=[],u=this.contours,h=0;h<u.length;h++)a.fromPoints(u[h],o,l),s.min(i,i,o),s.max(n,n,l);return 0===h&&(i[0]=i[1]=n[0]=n[1]=0),this._rect=new r(i[0],i[1],n[0]-i[0],n[1]-i[1])},contain:function(t){var e=this.getBoundingRect(),i=this.contours;if(e.contain(t[0],t[1]))for(var n=0,r=i.length;n<r;n++)if(o.contain(i[n],t[0],t[1]))return!0;return!1},transformTo:function(t,e,i,n){var o=this.getBoundingRect(),a=o.width/o.height;i?n||(n=i/a):i=a*n;for(var l=new r(t,e,i,n),u=o.calculateTransform(l),h=this.contours,c=0;c<h.length;c++)for(var d=0;d<h[c].length;d++)s.applyTransform(h[c][d],h[c][d],u);o=this._rect,o.copy(l),this.center=[o.x+o.width/2,o.y+o.height/2]}},t.exports=n},function(t,e,i){function n(t,e){var i=[];return t.eachComponent("parallel",function(n,r){var a=new o(n,t,e);a.name="parallel_"+r,a.resize(n,e),n.coordinateSystem=a,a.model=n,i.push(a)}),t.eachSeries(function(e){if("parallel"===e.get("coordinateSystem")){var i=t.queryComponents({mainType:"parallel",index:e.get("parallelIndex"),id:e.get("parallelId")})[0];e.coordinateSystem=i.coordinateSystem}}),i}var o=i(376);i(23).register("parallel",{create:n})},function(t,e,i){function n(t){var e=t.mainData,i=t.datas;i||(i={main:e},t.datasAttr={main:"data"}),t.datas=t.mainData=null,u(e,i,t),d(i,function(i){d(e.TRANSFERABLE_METHODS,function(e){i.wrapMethod(e,c.curry(o,t))})}),e.wrapMethod("cloneShallow",c.curry(a,t)),d(e.CHANGABLE_METHODS,function(i){e.wrapMethod(i,c.curry(r,t))}),c.assert(i[e.dataType]===e)}function o(t,e){if(l(this)){var i=c.extend({},this[f]);i[this.dataType]=e,u(e,i,t)}else h(e,this.dataType,this[p],t);return e}function r(t,e){return t.struct&&t.struct.update(this),e}function a(t,e){return d(e[f],function(i,n){i!==e&&h(i.cloneShallow(),n,e,t)}),e}function s(t){var e=this[p];return null==t||null==e?e:e[f][t]}function l(t){return t[p]===t}function u(t,e,i){t[f]={},d(e,function(e,n){h(e,n,t,i)})}function h(t,e,i,n){i[f][e]=t,t[p]=i,t.dataType=e,n.struct&&(t[n.structAttr]=n.struct,n.struct[n.datasAttr[e]]=t),t.getLinkedData=s}var c=i(1),d=c.each,f="\0__link_datas",p="\0__link_mainData";t.exports=n},function(t,e,i){function n(){function t(e,n){if(n>=i.length)return e;for(var r=-1,a=e.length,s=i[n++],l={},u={};++r<a;){var h=s(e[r]),c=u[h];c?c.push(e[r]):u[h]=[e[r]]}return o.each(u,function(e,i){l[i]=t(e,n)}),l}function e(t,r){if(r>=i.length)return t;var a=[],s=n[r++];return o.each(t,function(t,i){a.push({key:i,values:e(t,r)})}),s?a.sort(function(t,e){return s(t.key,e.key)}):a}var i=[],n=[];return{key:function(t){return i.push(t),this},sortKeys:function(t){return n[i.length-1]=t,this},entries:function(i){return e(t(i,0),0)}}}var o=i(1);t.exports=n},function(t,e,i){var n=i(1),o={get:function(t,e,i){var o=n.clone((r[t]||{})[e]);return i&&n.isArray(o)?o[o.length-1]:o}},r={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]}};t.exports=o},function(t,e,i){function n(t,e){return Math.abs(t-e)<a}function o(t,e,i){var o=0,a=t[0];if(!a)return!1;for(var s=1;s<t.length;s++){var l=t[s];o+=r(a[0],a[1],l[0],l[1],e,i),a=l}var u=t[0];return n(a[0],u[0])&&n(a[1],u[1])||(o+=r(a[0],a[1],u[0],u[1],e,i)),0!==o}var r=i(90),a=1e-8;t.exports={contain:o}},function(t,e,i){var n=i(80).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,n.superApply(this,"getInitialData",arguments)}});t.exports=n},function(t,e,i){function n(t,e,i,n){var l=t.getItemLayout(e),u=i.get("symbolRepeat"),h=i.get("symbolClip"),c=i.get("symbolPosition")||"start",d=i.get("symbolRotate"),f=(d||0)*Math.PI/180||0,p=i.get("symbolPatternSize")||2,g=i.isAnimationEnabled(),m={dataIndex:e,layout:l,itemModel:i,symbolType:t.getItemVisual(e,"symbol")||"circle",color:t.getItemVisual(e,"color"),symbolClip:h,symbolRepeat:u,symbolRepeatDirection:i.get("symbolRepeatDirection"),symbolPatternSize:p,rotation:f,animationModel:g?i:null,hoverAnimation:g&&i.get("hoverAnimation"),z2:i.getShallow("z",!0)||0};o(i,u,l,n,m),r(t,e,l,u,h,m.boundingLength,m.pxSign,p,n,m),a(i,m.symbolScale,f,n,m);var v=m.symbolSize,y=i.get("symbolOffset");return I.isArray(y)&&(y=[D(y[0],v[0]),D(y[1],v[1])]),s(i,v,l,u,h,y,c,m.valueLineWidth,m.boundingLength,m.repeatCutLength,n,m),m}function o(t,e,i,n,o){var r=n.valueDim,a=t.get("symbolBoundingData"),s=n.coordSys.getOtherAxis(n.coordSys.getBaseAxis()),l=s.toGlobalCoord(s.dataToCoord(0)),u=o.boundingLength=null!=a?s.toGlobalCoord(s.dataToCoord(s.scale.parse(a)))-l:e?n.coordSysExtent[r.index][1-+(i[r.wh]<=0)]-l:i[r.wh];e&&(o.repeatCutLength=i[r.wh]),o.pxSign=u>0?1:u<0?-1:0}function r(t,e,i,n,o,r,a,s,l,u){var h=l.valueDim,c=l.categoryDim,d=Math.abs(i[c.wh]),f=t.getItemVisual(e,"symbolSize");I.isArray(f)?f=f.slice():(null==f&&(f="100%"),f=[f,f]),f[c.index]=D(f[c.index],d),f[h.index]=D(f[h.index],n?d:Math.abs(r)),u.symbolSize=f;var p=u.symbolScale=[f[0]/s,f[1]/s];p[h.index]*=(l.isHorizontal?-1:1)*a}function a(t,e,i,n,o){var r=t.get(P)||0;r&&(O.attr({scale:e.slice(),rotation:i}),O.updateTransform(),r/=O.getLineScale(),r*=e[n.valueDim.index]),o.valueLineWidth=r}function s(t,e,i,n,o,r,a,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=I.retrieve(t.get("symbolMargin"),"15%")+"",x=!1;y.lastIndexOf("!")===y.length-1&&(x=!0,y=y.slice(0,y.length-1)),y=D(y,e[f.index]);var _=Math.max(g+2*y,0),b=x?0:2*y,w=L.isNumeric(n),S=w?n:M((v+b)/_),T=v-S*g;y=T/2/(x?S:S-1),_=g+2*y,b=x?0:2*y,w||"fixed"===n||(S=u?M((Math.abs(u)+b)/_):0),m=S*_-b,c.repeatTimes=S,c.symbolMargin=y}var A=p*(m/2),C=c.pathPosition=[];C[d.index]=i[d.wh]/2,C[f.index]="start"===a?A:"end"===a?l-A:l/2,r&&(C[0]+=r[0],C[1]+=r[1]);var P=c.bundlePosition=[];P[d.index]=i[d.xy],P[f.index]=i[f.xy];var k=c.barRectShape=I.extend({},i);k[f.wh]=p*Math.max(Math.abs(i[f.wh]),Math.abs(C[f.index]+A)),k[d.wh]=i[d.wh];var O=c.clipShape={};O[d.xy]=-i[d.xy],O[d.wh]=h.ecSize[d.wh],O[f.xy]=0,O[f.wh]=i[f.wh]}function l(t){var e=t.symbolPatternSize,i=A.createSymbol(t.symbolType,-e/2,-e/2,e,e,t.color);return i.attr({culling:!0}),"image"!==i.type&&i.setStyle({strokeNoScale:!0}),i}function u(t,e,i,n){function o(t){var e=c.slice(),n=i.pxSign,o=t;return("start"===i.symbolRepeatDirection?n>0:n<0)&&(o=f-1-t),e[d.index]=g*(o-f/2+.5)+c[d.index],{position:e,scale:i.symbolScale.slice(),rotation:i.rotation}}function r(){b(t,function(t){t.trigger("emphasis")})}function a(){b(t,function(t){t.trigger("normal")})}var s=t.__pictorialBundle,u=i.symbolSize,h=i.valueLineWidth,c=i.pathPosition,d=e.valueDim,f=i.repeatTimes||0,p=0,g=u[e.valueDim.index]+h+2*i.symbolMargin;for(b(t,function(t){t.__pictorialAnimationIndex=p,t.__pictorialRepeatTimes=f,p<f?w(t,null,o(p),i,n):w(t,null,{scale:[0,0]},i,n,function(){s.remove(t)}),m(t,i),p++});p<f;p++){var v=l(i);v.__pictorialAnimationIndex=p,v.__pictorialRepeatTimes=f,s.add(v);var y=o(p,!0);w(v,{position:y.position,scale:[0,0]},{scale:y.scale,rotation:y.rotation},i,n),v.on("mouseover",r).on("mouseout",a),m(v,i)}}function h(t,e,i,n){function o(){this.trigger("emphasis")}function r(){this.trigger("normal")}var a=t.__pictorialBundle,s=t.__pictorialMainPath;s?w(s,null,{position:i.pathPosition.slice(),scale:i.symbolScale.slice(),rotation:i.rotation},i,n):(s=t.__pictorialMainPath=l(i),a.add(s),w(s,{position:i.pathPosition.slice(),scale:[0,0],rotation:i.rotation},{scale:i.symbolScale.slice()},i,n),s.on("mouseover",o).on("mouseout",r)),m(s,i)}function c(t,e,i){var n=I.extend({},e.barRectShape),o=t.__pictorialBarRect;o?w(o,null,{shape:n},e,i):(o=t.__pictorialBarRect=new T.Rect({z2:2,shape:n,silent:!0,style:{stroke:"transparent",fill:"transparent",lineWidth:0}}),t.add(o))}function d(t,e,i,n){if(i.symbolClip){var o=t.__pictorialClipPath,r=I.extend({},i.clipShape),a=e.valueDim,s=i.animationModel,l=i.dataIndex;if(o)T.updateProps(o,{shape:r},s,l);else{r[a.wh]=0,o=new T.Rect({shape:r}),t.__pictorialBundle.setClipPath(o),t.__pictorialClipPath=o;var u={};u[a.wh]=i.clipShape[a.wh],T[n?"updateProps":"initProps"](o,{shape:u},s,l)}}}function f(t,e){var i=t.getItemModel(e);return i.getAnimationDelayParams=p,i.isAnimationEnabled=g,i}function p(t){return{index:t.__pictorialAnimationIndex,count:t.__pictorialRepeatTimes}}function g(){return this.parentModel.isAnimationEnabled()&&!!this.getShallow("animation")}function m(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 v(t,e,i,n){var o=new T.Group,r=new T.Group;return o.add(r),o.__pictorialBundle=r,r.attr("position",i.bundlePosition.slice()),i.symbolRepeat?u(o,e,i):h(o,e,i),c(o,i,n),d(o,e,i,n),o.__pictorialShapeStr=_(t,i),o.__pictorialSymbolMeta=i,o}function y(t,e,i){var n=i.animationModel,o=i.dataIndex,r=t.__pictorialBundle;T.updateProps(r,{position:i.bundlePosition.slice()},n,o),i.symbolRepeat?u(t,e,i,!0):h(t,e,i,!0),c(t,i,!0),d(t,e,i,!0)}function x(t,e,i,n){var o=n.__pictorialBarRect;o&&(o.style.text="");var r=[];b(n,function(t){r.push(t)}),n.__pictorialMainPath&&r.push(n.__pictorialMainPath),n.__pictorialClipPath&&(i=null),I.each(r,function(t){T.updateProps(t,{scale:[0,0]},i,e,function(){n.parent&&n.parent.remove(n)})}),t.setItemGraphicEl(e,null)}function _(t,e){return[t.getItemVisual(e.dataIndex,"symbol")||"none",!!e.symbolRepeat,!!e.symbolClip].join(":")}function b(t,e,i){I.each(t.__pictorialBundle.children(),function(n){n!==t.__pictorialBarRect&&e.call(i,n)})}function w(t,e,i,n,o,r){e&&t.attr(e),n.symbolClip&&!o?i&&t.attr(i):i&&T[o?"updateProps":"initProps"](t,i,n.animationModel,n.dataIndex,r)}function S(t,e,i){var n=i.color,o=i.dataIndex,r=i.itemModel,a=r.getModel("itemStyle.normal").getItemStyle(["color"]),s=r.getModel("itemStyle.emphasis").getItemStyle();b(t,function(t){t.setColor(n),t.setStyle(I.defaults({fill:n,opacity:i.opacity},a)),T.setHoverStyle(t,s),t.z2=i.z2});var l={},u=e.valueDim.posDesc[+(i.boundingLength>0)],h=t.__pictorialBarRect;C.setLabel(h.style,l,r,n,e.seriesModel,o,u),T.setHoverStyle(h,l)}function M(t){var e=Math.round(t);return Math.abs(t-e)<1e-4?e:Math.ceil(t)}var I=i(1),T=i(3),A=i(24),L=i(4),C=i(81),D=L.parsePercent,P=["itemStyle","normal","borderWidth"],k=[{xy:"x",wh:"width",index:0,posDesc:["left","right"]},{xy:"y",wh:"height",index:1,posDesc:["top","bottom"]}],O=new T.Circle,z=i(2).extendChartView({type:"pictorialBar",render:function(t,e,i){var o=this.group,r=t.getData(),a=this._data,s=t.coordinateSystem,l=s.getBaseAxis(),u=!!l.isHorizontal(),h=s.grid.getRect(),c={ecSize:{width:i.getWidth(),height:i.getHeight()},seriesModel:t,coordSys:s,coordSysExtent:[[h.x,h.x+h.width],[h.y,h.y+h.height]],isHorizontal:u,valueDim:k[+u],categoryDim:k[1-u]};return r.diff(a).add(function(t){if(r.hasValue(t)){var e=f(r,t),i=n(r,t,e,c),a=v(r,c,i);r.setItemGraphicEl(t,a),o.add(a),S(a,c,i)}}).update(function(t,e){var i=a.getItemGraphicEl(e);if(!r.hasValue(t))return void o.remove(i);var s=f(r,t),l=n(r,t,s,c),u=_(r,l);i&&u!==i.__pictorialShapeStr&&(o.remove(i),r.setItemGraphicEl(t,null),i=null),i?y(i,c,l):i=v(r,c,l,!0),r.setItemGraphicEl(t,i),i.__pictorialSymbolMeta=l,o.add(i),S(i,c,l)}).remove(function(t){var e=a.getItemGraphicEl(t);e&&x(a,t,e.__pictorialSymbolMeta.animationModel,e)}).execute(),this._data=r,this.group},dispose:I.noop,remove:function(t,e){var i=this.group,n=this._data;t.get("animation")?n&&n.eachItemGraphicEl(function(e){x(n,e.dataIndex,t,e)}):i.removeAll()}});t.exports=z},function(t,e,i){var n=i(2);i(251),i(252),n.registerVisual(i(254)),n.registerLayout(i(253))},function(t,e,i){"use strict";var n=i(1),o=i(16),r=i(172),a=o.extend({type:"series.boxplot",dependencies:["xAxis","yAxis","grid"],valueDimensions:["min","Q1","median","Q3","max"],dimensions:null,defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,hoverAnimation:!0,layout:null,boxWidth:[7,50],itemStyle:{normal:{color:"#fff",borderWidth:1},emphasis:{borderWidth:2,shadowBlur:5,shadowOffsetX:2,shadowOffsetY:2,shadowColor:"rgba(0,0,0,0.4)"}},animationEasing:"elasticOut",animationDuration:800}});n.mixin(a,r.seriesModelMixin,!0),t.exports=a},function(t,e,i){"use strict";function n(t,e,i){var n=e.getItemModel(i),o=n.getModel(u),r=e.getItemVisual(i,"color"),s=o.getItemStyle(["borderColor"]),l=t.childAt(t.whiskerIndex);l.style.set(s),l.style.stroke=r,l.dirty();var c=t.childAt(t.bodyIndex);c.style.set(s),c.style.stroke=r,c.dirty();var d=n.getModel(h).getItemStyle();a.setHoverStyle(t,d)}var o=i(1),r=i(28),a=i(3),s=i(172),l=r.extend({type:"boxplot",getStyleUpdater:function(){return n},dispose:o.noop});o.mixin(l,s.viewMixin,!0);var u=["itemStyle","normal"],h=["itemStyle","emphasis"];t.exports=l},function(t,e,i){function n(t){var e=[],i=[];return t.eachSeriesByType("boxplot",function(t){var n=t.getBaseAxis(),o=a.indexOf(i,n);o<0&&(o=i.length,i[o]=n,e[o]={axis:n,seriesModels:[]}),e[o].seriesModels.push(t)}),e}function o(t){var e,i,n=t.axis,o=t.seriesModels,r=o.length,s=t.boxWidthList=[],h=t.boxOffsetList=[],c=[];if("category"===n.type)i=n.getBandWidth();else{var d=0;u(o,function(t){d=Math.max(d,t.getData().count())}),e=n.getExtent(),Math.abs(e[1]-e[0])/d}u(o,function(t){var e=t.get("boxWidth");a.isArray(e)||(e=[e,e]),c.push([l(e[0],i)||0,l(e[1],i)||0])});var f=.8*i-2,p=f/r*.3,g=(f-p*(r-1))/r,m=g/2-f/2;u(o,function(t,e){h.push(m),m+=p+g,s.push(Math.min(Math.max(g,c[e][0]),c[e][1]))})}function r(t,e,i){var n=t.coordinateSystem,o=t.getData(),r=t.dimensions,a=t.get("layout"),s=i/2;o.each(r,function(){function t(t){var i=[];i[f]=c,i[p]=t;var o;return isNaN(c)||isNaN(t)?o=[NaN,NaN]:(o=n.dataToPoint(i),o[f]+=e),o}function i(t,e){var i=t.slice(),n=t.slice();i[f]+=s,n[f]-=s,e?x.push(i,n):x.push(n,i)}function l(t){var e=[t.slice(),t.slice()];e[0][f]-=s,e[1][f]+=s,y.push(e)}var u=arguments,h=r.length,c=u[0],d=u[h],f="horizontal"===a?0:1,p=1-f,g=t(u[3]),m=t(u[1]),v=t(u[5]),y=[[m,t(u[2])],[v,t(u[4])]];l(m),l(v),l(g);var x=[];i(y[0][1],0),i(y[1][1],1),o.setItemLayout(d,{chartLayout:a,initBaseline:g[p],median:g,bodyEnds:x,whiskerEnds:y})})}var a=i(1),s=i(4),l=s.parsePercent,u=a.each;t.exports=function(t){var e=n(t);u(e,function(t){var e=t.seriesModels;e.length&&(o(t),u(e,function(e,i){r(e,t.boxOffsetList[i],t.boxWidthList[i])}))})}},function(t,e){var i=["itemStyle","normal","borderColor"];t.exports=function(t,e){var n=t.get("color");t.eachRawSeriesByType("boxplot",function(e){var o=n[e.seriesIndex%n.length],r=e.getData();r.setVisual({legendSymbol:"roundRect",color:e.get(i)||o}),t.isSeriesFiltered(e)||r.each(function(t){var e=r.getItemModel(t);r.setItemVisual(t,{color:e.get(i,!0)})})})}},function(t,e,i){var n=i(2);i(256),i(257),n.registerPreprocessor(i(260)),n.registerVisual(i(259)),n.registerLayout(i(258))},function(t,e,i){"use strict";var n=i(1),o=i(16),r=i(172),a=i(8),s=a.encodeHTML,l=a.addCommas,u=o.extend({type:"series.candlestick",dependencies:["xAxis","yAxis","grid"],valueDimensions:["open","close","lowest","highest"],dimensions:null,defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,hoverAnimation:!0,layout:null,itemStyle:{normal:{color:"#c23531",color0:"#314656",borderWidth:1,borderColor:"#c23531",borderColor0:"#314656"},emphasis:{borderWidth:2}},barMaxWidth:null,barMinWidth:null,barWidth:null,animationUpdate:!1,animationEasing:"linear",animationDuration:300},getShadowDim:function(){return"open"},formatTooltip:function(t,e){var i=n.map(this.valueDimensions,function(e){return s(e+": "+l(this.getData().get(e,t)))},this).join("<br />"),o=[];return null!=this.name&&o.push(s(this.name)),null!=i&&o.push(i),o.join("<br />")},brushSelector:function(t,e){return e.rect(t.brushRect)}});n.mixin(u,r.seriesModelMixin,!0),t.exports=u},function(t,e,i){"use strict";function n(t,e,i){var n=e.getItemModel(i),o=n.getModel(u),r=e.getItemVisual(i,"color"),s=e.getItemVisual(i,"borderColor")||r,l=o.getItemStyle(["color","color0","borderColor","borderColor0"]),c=t.childAt(t.whiskerIndex);c.useStyle(l),c.style.stroke=s;var d=t.childAt(t.bodyIndex);d.useStyle(l),d.style.fill=r,d.style.stroke=s;var f=n.getModel(h).getItemStyle();a.setHoverStyle(t,f)}var o=i(1),r=i(28),a=i(3),s=i(172),l=r.extend({type:"candlestick",getStyleUpdater:function(){return n},dispose:o.noop});o.mixin(l,s.viewMixin,!0);var u=["itemStyle","normal"],h=["itemStyle","emphasis"];t.exports=l},function(t,e,i){function n(t,e){var i,n=t.getBaseAxis(),a="category"===n.type?n.getBandWidth():(i=n.getExtent(),Math.abs(i[1]-i[0])/e.count()),s=r(o(t.get("barMaxWidth"),a),a),l=r(o(t.get("barMinWidth"),1),a),u=t.get("barWidth");return null!=u?r(u,a):Math.max(Math.min(a/2,s),l)}var o=i(1).retrieve,r=i(4).parsePercent;t.exports=function(t){t.eachSeriesByType("candlestick",function(t){var e=t.coordinateSystem,i=t.getData(),o=t.dimensions,r=t.get("layout"),a=n(t,i);i.each(o,function(){function t(t){var i=[];return i[d]=h,i[f]=t,isNaN(h)||isNaN(t)?[NaN,NaN]:e.dataToPoint(i)}function n(t,e){var i=t.slice(),n=t.slice();i[d]+=a/2,n[d]-=a/2,e?I.push(i,n):I.push(n,i)}function s(){var e=t(Math.min(p,g,m,v)),i=t(Math.max(p,g,m,v));return e[d]-=a/2,i[d]-=a/2,{x:e[0],y:e[1],width:f?a:i[0]-e[0],height:f?i[1]-e[1]:a}}var l=arguments,u=o.length,h=l[0],c=l[u],d="horizontal"===r?0:1,f=1-d,p=l[1],g=l[2],m=l[3],v=l[4],y=Math.min(p,g),x=Math.max(p,g),_=t(y),b=t(x),w=t(m),S=t(v),M=[[S,b],[w,_]],I=[];n(b,0),n(_,1),i.setItemLayout(c,{chartLayout:r,sign:p>g?-1:p<g?1:0,initBaseline:p>g?b[f]:_[f],bodyEnds:I,whiskerEnds:M,brushRect:s()})},!0)})}},function(t,e){var i=["itemStyle","normal","borderColor"],n=["itemStyle","normal","borderColor0"],o=["itemStyle","normal","color"],r=["itemStyle","normal","color0"];t.exports=function(t,e){t.eachRawSeriesByType("candlestick",function(e){var a=e.getData();a.setVisual({legendSymbol:"roundRect"}),t.isSeriesFiltered(e)||a.each(function(t){var e=a.getItemModel(t),s=a.getItemLayout(t).sign;a.setItemVisual(t,{color:e.get(s>0?o:r),borderColor:e.get(s>0?i:n)})})})}},function(t,e,i){var n=i(1);t.exports=function(t){t&&n.isArray(t.series)&&n.each(t.series,function(t){n.isObject(t)&&"k"===t.type&&(t.type="candlestick")})}},function(t,e,i){var n=i(1),o=i(2);i(262),i(263),o.registerVisual(n.curry(i(45),"effectScatter","circle",null)),o.registerLayout(n.curry(i(56),"effectScatter"))},function(t,e,i){"use strict";var n=i(35),o=i(16);t.exports=o.extend({type:"series.effectScatter",dependencies:["grid","polar"],getInitialData:function(t,e){var i=n(t.data,this,e);return i},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(t,e,i){var n=i(39),o=i(290);i(2).extendChartView({type:"effectScatter",init:function(){this._symbolDraw=new n(o)},render:function(t,e,i){var n=t.getData(),o=this._symbolDraw;o.updateData(n),this.group.add(o.group)},updateLayout:function(){this._symbolDraw.updateLayout()},remove:function(t,e){this._symbolDraw&&this._symbolDraw.remove(e)},dispose:function(){}})},function(t,e,i){var n=i(1),o=i(2);i(265),i(266),o.registerVisual(n.curry(i(74),"funnel")),o.registerLayout(i(267)),o.registerProcessor(n.curry(i(58),"funnel"))},function(t,e,i){"use strict";var n=i(14),o=i(6),r=i(27),a=i(2).extendSeriesModel({type:"series.funnel",init:function(t){a.superApply(this,"init",arguments),this.legendDataProvider=function(){return this.getRawData()},this._defaultLabelLine(t)},getInitialData:function(t,e){var i=r(["value"],t.data),o=new n(i,this);return o.initData(t.data),o},_defaultLabelLine:function(t){o.defaultEmphasis(t.labelLine,["show"]);var e=t.labelLine.normal,i=t.labelLine.emphasis;e.show=e.show&&t.label.normal.show,i.show=i.show&&t.label.emphasis.show},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:{normal:{show:!0,position:"outer"},emphasis:{show:!0}},labelLine:{normal:{show:!0,length:20,lineStyle:{width:1,type:"solid"}},emphasis:{}},itemStyle:{normal:{borderColor:"#fff",borderWidth:1},emphasis:{}}}});t.exports=a},function(t,e,i){function n(t,e){function i(){a.ignore=a.hoverIgnore,s.ignore=s.hoverIgnore}function n(){a.ignore=a.normalIgnore,s.ignore=s.normalIgnore}r.Group.call(this);var o=new r.Polygon,a=new r.Polyline,s=new r.Text;this.add(o),this.add(a),this.add(s),this.updateData(t,e,!0),this.on("emphasis",i).on("normal",n).on("mouseover",i).on("mouseout",n)}function o(t,e,i,n){var o=n.getModel("textStyle"),r=n.get("position"),s="inside"===r||"inner"===r||"center"===r;return{fill:o.getTextColor()||(s?"#fff":t.getItemVisual(e,"color")),textFont:o.getFont(),text:a.retrieve(t.hostModel.getFormattedLabel(e,i),t.getName(e))}}var r=i(3),a=i(1),s=n.prototype,l=["itemStyle","normal","opacity"];s.updateData=function(t,e,i){var n=this.childAt(0),o=t.hostModel,s=t.getItemModel(e),u=t.getItemLayout(e),h=t.getItemModel(e).get(l);h=null==h?1:h,n.useStyle({}),i?(n.setShape({points:u.points}),n.setStyle({opacity:0}),r.initProps(n,{style:{opacity:h}},o,e)):r.updateProps(n,{style:{opacity:h},shape:{points:u.points}},o,e);var c=s.getModel("itemStyle"),d=t.getItemVisual(e,"color");n.setStyle(a.defaults({lineJoin:"round",fill:d},c.getModel("normal").getItemStyle(["opacity"]))),n.hoverStyle=c.getModel("emphasis").getItemStyle(),this._updateLabel(t,e),r.setHoverStyle(this)},s._updateLabel=function(t,e){var i=this.childAt(1),n=this.childAt(2),a=t.hostModel,s=t.getItemModel(e),l=t.getItemLayout(e),u=l.label,h=t.getItemVisual(e,"color");r.updateProps(i,{shape:{points:u.linePoints||u.linePoints}},a,e),r.updateProps(n,{style:{x:u.x,y:u.y}},a,e),n.attr({style:{textAlign:u.textAlign,textVerticalAlign:u.verticalAlign,textFont:u.font},rotation:u.rotation,origin:[u.x,u.y],z2:10});var c=s.getModel("label.normal"),d=s.getModel("label.emphasis"),f=s.getModel("labelLine.normal"),p=s.getModel("labelLine.emphasis");n.setStyle(o(t,e,"normal",c)),n.ignore=n.normalIgnore=!c.get("show"),n.hoverIgnore=!d.get("show"),i.ignore=i.normalIgnore=!f.get("show"),i.hoverIgnore=!p.get("show"),i.setStyle({stroke:h}),i.setStyle(f.getModel("lineStyle").getLineStyle()),n.hoverStyle=o(t,e,"emphasis",d),i.hoverStyle=p.getModel("lineStyle").getLineStyle()},a.inherits(n,r.Group);var u=i(28).extend({type:"funnel",render:function(t,e,i){var o=t.getData(),r=this._data,a=this.group;o.diff(r).add(function(t){var e=new n(o,t);o.setItemGraphicEl(t,e),a.add(e)}).update(function(t,e){var i=r.getItemGraphicEl(e);i.updateData(o,t),a.add(i),o.setItemGraphicEl(t,i)}).remove(function(t){var e=r.getItemGraphicEl(t);a.remove(e)}).execute(),this._data=o},remove:function(){this.group.removeAll(),this._data=null;
-},dispose:function(){}});t.exports=u},function(t,e,i){function n(t,e){return a.getLayoutRect(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}function o(t,e){for(var i=t.mapArray("value",function(t){return t}),n=[],o="ascending"===e,r=0,a=t.count();r<a;r++)n[r]=r;return n.sort(function(t,e){return o?i[t]-i[e]:i[e]-i[t]}),n}function r(t){t.each(function(e){var i,n,o,r,a=t.getItemModel(e),s=a.getModel("label.normal"),l=s.get("position"),u=a.getModel("labelLine.normal"),h=t.getItemLayout(e),c=h.points,d="inner"===l||"inside"===l||"center"===l;if(d)n=(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",r=[[n,o],[n,o]];else{var f,p,g,m=u.get("length");"left"===l?(f=(c[3][0]+c[0][0])/2,p=(c[3][1]+c[0][1])/2,g=f-m,n=g-5,i="right"):(f=(c[1][0]+c[2][0])/2,p=(c[1][1]+c[2][1])/2,g=f+m,n=g+5,i="left");var v=p;r=[[f,p],[g,v]],o=v}h.label={linePoints:r,x:n,y:o,verticalAlign:"middle",textAlign:i,inside:d}})}var a=i(12),s=i(4),l=s.parsePercent;t.exports=function(t,e,i){t.eachSeriesByType("funnel",function(t){var i=t.getData(),a=t.get("sort"),u=n(t,e),h=o(i,a),c=[l(t.get("minSize"),u.width),l(t.get("maxSize"),u.width)],d=i.getDataExtent("value"),f=t.get("min"),p=t.get("max");null==f&&(f=Math.min(d[0],0)),null==p&&(p=d[1]);var g=t.get("funnelAlign"),m=t.get("gap"),v=(u.height-m*(i.count()-1))/i.count(),y=u.y,x=function(t,e){var n,o=i.get("value",t)||0,r=s.linearMap(o,[f,p],c,!0);switch(g){case"left":n=u.x;break;case"center":n=u.x+(u.width-r)/2;break;case"right":n=u.x+u.width-r}return[[n,e],[n+r,e]]};"ascending"===a&&(v=-v,m=-m,y+=u.height,h=h.reverse());for(var _=0;_<h.length;_++){var b=h[_],w=h[_+1],S=x(b,y),M=x(w,y+v);y+=v+m,i.setItemLayout(b,{points:S.concat(M.slice().reverse())})}r(i)})}},function(t,e,i){i(269),i(270)},function(t,e,i){var n=i(14),o=i(16),r=i(1),a=o.extend({type:"series.gauge",getInitialData:function(t,e){var i=new n(["value"],this),o=t.data||[];return r.isArray(o)||(o=[o]),i.initData(o),i},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,textStyle:{color:"auto"}},pointer:{show:!0,length:"80%",width:8},itemStyle:{normal:{color:"auto"}},title:{show:!0,offsetCenter:[0,"-40%"],textStyle:{color:"#333",fontSize:15}},detail:{show:!0,backgroundColor:"rgba(0,0,0,0)",borderWidth:0,borderColor:"#ccc",width:100,height:40,offsetCenter:[0,"40%"],textStyle:{color:"auto",fontSize:30}}}});t.exports=a},function(t,e,i){function n(t,e){var i=t.get("center"),n=e.getWidth(),o=e.getHeight(),r=Math.min(n,o),a=l(i[0],e.getWidth()),s=l(i[1],e.getHeight()),u=l(t.get("radius"),r/2);return{cx:a,cy:s,r:u}}function o(t,e){return e&&("string"==typeof e?t=e.replace("{value}",null!=t?t:""):"function"==typeof e&&(t=e(t))),t}var r=i(271),a=i(3),s=i(4),l=s.parsePercent,u=2*Math.PI,h=i(28).extend({type:"gauge",render:function(t,e,i){this.group.removeAll();var o=t.get("axisLine.lineStyle.color"),r=n(t,i);this._renderMain(t,e,i,o,r)},dispose:function(){},_renderMain:function(t,e,i,n,o){for(var r=this.group,s=t.getModel("axisLine"),l=s.getModel("lineStyle"),h=t.get("clockwise"),c=-t.get("startAngle")/180*Math.PI,d=-t.get("endAngle")/180*Math.PI,f=(d-c)%u,p=c,g=l.get("width"),m=0;m<n.length;m++){var v=Math.min(Math.max(n[m][0],0),1),d=c+f*v,y=new a.Sector({shape:{startAngle:p,endAngle:d,cx:o.cx,cy:o.cy,clockwise:h,r0:o.r-g,r:o.r},silent:!0});y.setStyle({fill:n[m][1]}),y.setStyle(l.getLineStyle(["color","borderWidth","borderColor"])),r.add(y),p=d}var x=function(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(!h){var _=c;c=d,d=_}this._renderTicks(t,e,i,x,o,c,d,h),this._renderPointer(t,e,i,x,o,c,d,h),this._renderTitle(t,e,i,x,o),this._renderDetail(t,e,i,x,o)},_renderTicks:function(t,e,i,n,r,u,h,c){for(var d=this.group,f=r.cx,p=r.cy,g=r.r,m=+t.get("min"),v=+t.get("max"),y=t.getModel("splitLine"),x=t.getModel("axisTick"),_=t.getModel("axisLabel"),b=t.get("splitNumber"),w=x.get("splitNumber"),S=l(y.get("length"),g),M=l(x.get("length"),g),I=u,T=(h-u)/b,A=T/w,L=y.getModel("lineStyle").getLineStyle(),C=x.getModel("lineStyle").getLineStyle(),D=_.getModel("textStyle"),P=0;P<=b;P++){var k=Math.cos(I),O=Math.sin(I);if(y.get("show")){var z=new a.Line({shape:{x1:k*g+f,y1:O*g+p,x2:k*(g-S)+f,y2:O*(g-S)+p},style:L,silent:!0});"auto"===L.stroke&&z.setStyle({stroke:n(P/b)}),d.add(z)}if(_.get("show")){var E=o(s.round(P/b*(v-m)+m),_.get("formatter")),R=_.get("distance"),N=new a.Text({style:{text:E,x:k*(g-S-R)+f,y:O*(g-S-R)+p,fill:D.getTextColor(),textFont:D.getFont(),textVerticalAlign:O<-.4?"top":O>.4?"bottom":"middle",textAlign:k<-.4?"left":k>.4?"right":"center"},silent:!0});"auto"===N.style.fill&&N.setStyle({fill:n(P/b)}),d.add(N)}if(x.get("show")&&P!==b){for(var V=0;V<=w;V++){var k=Math.cos(I),O=Math.sin(I),B=new a.Line({shape:{x1:k*g+f,y1:O*g+p,x2:k*(g-M)+f,y2:O*(g-M)+p},silent:!0,style:C});"auto"===C.stroke&&B.setStyle({stroke:n((P+V/w)/b)}),d.add(B),I+=A}I-=A}else I+=T}},_renderPointer:function(t,e,i,n,o,u,h,c){var d=this.group,f=this._data;if(!t.get("pointer.show"))return void f.eachItemGraphicEl(function(t){d.remove(t)});var p=[+t.get("min"),+t.get("max")],g=[u,h],m=t.getData();m.diff(f).add(function(e){var i=new r({shape:{angle:u}});a.updateProps(i,{shape:{angle:s.linearMap(m.get("value",e),p,g,!0)}},t),d.add(i),m.setItemGraphicEl(e,i)}).update(function(e,i){var n=f.getItemGraphicEl(i);a.updateProps(n,{shape:{angle:s.linearMap(m.get("value",e),p,g,!0)}},t),d.add(n),m.setItemGraphicEl(e,n)}).remove(function(t){var e=f.getItemGraphicEl(t);d.remove(e)}).execute(),m.eachItemGraphicEl(function(t,e){var i=m.getItemModel(e),r=i.getModel("pointer");t.setShape({x:o.cx,y:o.cy,width:l(r.get("width"),o.r),r:l(r.get("length"),o.r)}),t.useStyle(i.getModel("itemStyle.normal").getItemStyle()),"auto"===t.style.fill&&t.setStyle("fill",n((m.get("value",e)-p[0])/(p[1]-p[0]))),a.setHoverStyle(t,i.getModel("itemStyle.emphasis").getItemStyle())}),this._data=m},_renderTitle:function(t,e,i,n,o){var r=t.getModel("title");if(r.get("show")){var s=r.getModel("textStyle"),u=r.get("offsetCenter"),h=o.cx+l(u[0],o.r),c=o.cy+l(u[1],o.r),d=new a.Text({style:{x:h,y:c,text:t.getData().getName(0),fill:s.getTextColor(),textFont:s.getFont(),textAlign:"center",textVerticalAlign:"middle"}});this.group.add(d)}},_renderDetail:function(t,e,i,n,r){var u=t.getModel("detail"),h=+t.get("min"),c=+t.get("max");if(u.get("show")){var d=u.getModel("textStyle"),f=u.get("offsetCenter"),p=r.cx+l(f[0],r.r),g=r.cy+l(f[1],r.r),m=l(u.get("width"),r.r),v=l(u.get("height"),r.r),y=t.getData().get("value",0),x=new a.Rect({shape:{x:p-m/2,y:g-v/2,width:m,height:v},style:{text:o(y,u.get("formatter")),fill:u.get("backgroundColor"),textFill:d.getTextColor(),textFont:d.getFont()}});"auto"===x.style.textFill&&x.setStyle("textFill",n(s.linearMap(y,[h,c],[0,1],!0))),x.setStyle(u.getItemStyle(["color"])),this.group.add(x)}}});t.exports=h},function(t,e,i){t.exports=i(7).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,o=e.r,r=e.width,a=e.angle,s=e.x-i(a)*r*(r>=o/3?1:2),l=e.y-n(a)*r*(r>=o/3?1:2);a=e.angle-Math.PI/2,t.moveTo(s,l),t.lineTo(e.x+i(a)*r,e.y+n(a)*r),t.lineTo(e.x+i(e.angle)*o,e.y+n(e.angle)*o),t.lineTo(e.x-i(a)*r,e.y-n(a)*r),t.lineTo(s,l)}})},function(t,e,i){var n=i(2),o=i(1);i(273),i(274),i(283),n.registerProcessor(i(276)),n.registerVisual(o.curry(i(45),"graph","circle",null)),n.registerVisual(i(277)),n.registerVisual(i(280)),n.registerLayout(i(284)),n.registerLayout(i(278)),n.registerLayout(i(282)),n.registerCoordinateSystem("graphView",{create:i(279)})},function(t,e,i){"use strict";var n=i(14),o=i(1),r=i(6),a=i(11),s=i(8),l=i(230),u=i(2).extendSeriesModel({type:"series.graph",init:function(t){u.superApply(this,"init",arguments),this.legendDataProvider=function(){return this._categoriesData},this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},mergeOption:function(t){u.superApply(this,"mergeOption",arguments),this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},mergeDefaultAndTheme:function(t){u.superApply(this,"mergeDefaultAndTheme",arguments),r.defaultEmphasis(t.edgeLabel,r.LABEL_OPTIONS)},getInitialData:function(t,e){function i(t,i){function n(t){return t=this.parsePath(t),t&&"label"===t[0]?s:this.parentModel}t.wrapMethod("getItemModel",function(t){var e=r._categoriesModels,i=t.getShallow("category"),n=e[i];return n&&(n.parentModel=t.parentModel,t.parentModel=n),t});var o=r.getModel("edgeLabel"),s=new a({label:o.option},o.parentModel,e);i.wrapMethod("getItemModel",function(t){return t.customizeGetParent(n),t})}var n=t.edges||t.links||[],o=t.data||t.nodes||[],r=this;if(o&&n)return l(o,n,this,!0,i).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){var n=this.getData(),o=this.getDataParams(t,i),r=n.graph.getEdgeByIndex(t),a=n.getName(r.node1.dataIndex),l=n.getName(r.node2.dataIndex),h=[];return null!=a&&h.push(a),null!=l&&h.push(l),h=s.encodeHTML(h.join(" > ")),o.value&&(h+=" : "+s.encodeHTML(o.value)),h}return u.superApply(this,"formatTooltip",arguments)},_updateCategoriesData:function(){var t=o.map(this.option.categories||[],function(t){return null!=t.value?t:o.extend({value:0},t)}),e=new n(["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 u.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,edgeLength:30,layoutAnimation:!0},left:"center",top:"center",symbol:"circle",symbolSize:10,edgeSymbol:["none","none"],edgeSymbolSize:10,edgeLabel:{normal:{position:"middle"},emphasis:{}},draggable:!1,roam:!1,center:null,zoom:1,nodeScaleRatio:.6,label:{normal:{show:!1,formatter:"{b}"},emphasis:{show:!0}},itemStyle:{normal:{},emphasis:{}},lineStyle:{normal:{color:"#aaa",width:1,curveness:0,opacity:.5},emphasis:{}}}});t.exports=u},function(t,e,i){function n(t,e){return t.getVisual("opacity")||t.getModel().get(e)}var o=i(39),r=i(99),a=i(84),s=i(3),l=i(275),u=i(1),h=["itemStyle","normal","opacity"],c=["lineStyle","normal","opacity"];i(2).extendChartView({type:"graph",init:function(t,e){var i=new o,n=new r,s=this.group,l=new a(e.getZr(),s);s.add(i.group),s.add(n.group),this._symbolDraw=i,this._lineDraw=n,this._controller=l,this._firstRender=!0},render:function(t,e,i){var n=t.coordinateSystem;this._model=t,this._nodeScaleRatio=t.get("nodeScaleRatio");var o=this._symbolDraw,r=this._lineDraw,a=this.group;if("view"===n.type){var u={position:n.position,scale:n.scale};this._firstRender?a.attr(u):s.updateProps(a,u,t)}l(t.getGraph(),this._getNodeGlobalScale(t));var h=t.getData();o.updateData(h);var c=t.getEdgeData();r.updateData(c),this._updateNodeAndLinkScale(),this._updateController(t,i),clearTimeout(this._layoutTimeout);var d=t.forceLayout,f=t.get("force.layoutAnimation");d&&this._startForceLayoutIteration(d,f),h.eachItemGraphicEl(function(e,n){var o=h.getItemModel(n);e.off("drag").off("dragend");var r=h.getItemModel(n).get("draggable");r&&e.on("drag",function(){d&&(d.warmUp(),!this._layouting&&this._startForceLayoutIteration(d,f),d.setFixed(n),h.setItemLayout(n,e.position))},this).on("dragend",function(){d&&d.setUnfixed(n)},this),e.setDraggable(r&&d),e.off("mouseover",e.__focusNodeAdjacency),e.off("mouseout",e.__unfocusNodeAdjacency),o.get("focusNodeAdjacency")&&(e.on("mouseover",e.__focusNodeAdjacency=function(){i.dispatchAction({type:"focusNodeAdjacency",seriesId:t.id,dataIndex:e.dataIndex})}),e.on("mouseout",e.__unfocusNodeAdjacency=function(){i.dispatchAction({type:"unfocusNodeAdjacency",seriesId:t.id})}))},this);var p="circular"===t.get("layout")&&t.get("circular.rotateLabel"),g=h.getLayout("cx"),m=h.getLayout("cy");h.eachItemGraphicEl(function(t,e){var i=t.getSymbolPath();if(p){var n=h.getItemLayout(e),o=Math.atan2(n[1]-m,n[0]-g);o<0&&(o=2*Math.PI+o);var r=n[0]<g;r&&(o-=Math.PI);var a=r?"left":"right";i.setStyle({textRotation:o,textPosition:a}),i.hoverStyle&&(i.hoverStyle.textPosition=a)}else i.setStyle({textRotation:0})}),this._firstRender=!1},dispose:function(){this._controller&&this._controller.dispose()},focusNodeAdjacency:function(t,e,i,o){function r(t,e){var i=n(t,e),o=t.getGraphicEl();null==i&&(i=1),o.traverse(function(t){t.trigger("normal"),"group"!==t.type&&t.setStyle("opacity",.1*i)})}function a(t,e){var i=n(t,e),o=t.getGraphicEl();o.traverse(function(t){t.trigger("emphasis"),"group"!==t.type&&t.setStyle("opacity",i)})}var s=this._model.getData(),l=o.dataIndex,d=s.getItemGraphicEl(l);if(d){var f=s.graph,p=d.dataType;if(null!==l&&"edge"!==p){f.eachNode(function(t){r(t,h)}),f.eachEdge(function(t){r(t,c)});var g=f.getNodeByIndex(l);a(g,h),u.each(g.edges,function(t){t.dataIndex<0||(a(t,c),a(t.node1,h),a(t.node2,h))})}}},unfocusNodeAdjacency:function(t,e,i,o){var r=this._model.getData().graph;r.eachNode(function(t){var e=n(t,h);t.getGraphicEl().traverse(function(t){t.trigger("normal"),"group"!==t.type&&t.setStyle("opacity",e)})}),r.eachEdge(function(t){var e=n(t,c);t.getGraphicEl().traverse(function(t){t.trigger("normal"),"group"!==t.type&&t.setStyle("opacity",e)})})},_startForceLayoutIteration:function(t,e){var i=this;!function n(){t.step(function(t){i.updateLayout(i._model),(i._layouting=!t)&&(e?i._layoutTimeout=setTimeout(n,16):n())})}()},_updateController:function(t,e){var i=this._controller,n=this.group;return i.setContainsPoint(function(t,e){var i=n.getBoundingRect();return i.applyTransform(n.transform),i.contain(t,e)}),"view"!==t.coordinateSystem.type?void i.disable():(i.enable(t.get("roam")),i.zoomLimit=t.get("scaleLimit"),i.zoom=t.coordinateSystem.getZoom(),void i.off("pan").off("zoom").on("pan",function(i,n){e.dispatchAction({seriesId:t.id,type:"graphRoam",dx:i,dy:n})}).on("zoom",function(i,n,o){e.dispatchAction({seriesId:t.id,type:"graphRoam",zoom:i,originX:n,originY:o}),this._updateNodeAndLinkScale(),l(t.getGraph(),this._getNodeGlobalScale(t)),this._lineDraw.updateLayout()},this))},_updateNodeAndLinkScale:function(){var t=this._model,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,o=n&&n[0]||1,r=e.getZoom(),a=(r-1)*i+1;return a/o},updateLayout:function(t){l(t.getGraph(),this._getNodeGlobalScale(t)),this._symbolDraw.updateLayout(),this._lineDraw.updateLayout()},remove:function(t,e){this._symbolDraw&&this._symbolDraw.remove(),this._lineDraw&&this._lineDraw.remove()}})},function(t,e,i){function n(t,e,i){for(var n,o=t[0],r=t[1],d=t[2],f=1/0,p=i*i,g=.1,m=.1;m<=.9;m+=.1){a[0]=u(o[0],r[0],d[0],m),a[1]=u(o[1],r[1],d[1],m);var v=c(h(a,e)-p);v<f&&(f=v,n=m)}for(var y=0;y<32;y++){var x=n+g;s[0]=u(o[0],r[0],d[0],n),s[1]=u(o[1],r[1],d[1],n),l[0]=u(o[0],r[0],d[0],x),l[1]=u(o[1],r[1],d[1],x);var v=h(s,e)-p;if(c(v)<.01)break;var _=h(l,e)-p;g/=2,v<0?_>=0?n+=g:n-=g:_>=0?n-=g:n+=g}return n}var o=i(18),r=i(5),a=[],s=[],l=[],u=o.quadraticAt,h=r.distSquare,c=Math.abs;t.exports=function(t,e){function i(t){var e=t.getVisual("symbolSize");return e instanceof Array&&(e=(e[0]+e[1])/2),e}var a=[],s=o.quadraticSubdivide,l=[[],[],[]],u=[[],[]],h=[];e/=2,t.eachEdge(function(t,o){var c=t.getLayout(),d=t.getVisual("fromSymbol"),f=t.getVisual("toSymbol");c.__original||(c.__original=[r.clone(c[0]),r.clone(c[1])],c[2]&&c.__original.push(r.clone(c[2])));var p=c.__original;if(null!=c[2]){if(r.copy(l[0],p[0]),r.copy(l[1],p[2]),r.copy(l[2],p[1]),d&&"none"!=d){var g=i(t.node1),m=n(l,p[0],g*e);s(l[0][0],l[1][0],l[2][0],m,a),l[0][0]=a[3],l[1][0]=a[4],s(l[0][1],l[1][1],l[2][1],m,a),l[0][1]=a[3],l[1][1]=a[4]}if(f&&"none"!=f){var g=i(t.node2),m=n(l,p[1],g*e);s(l[0][0],l[1][0],l[2][0],m,a),l[1][0]=a[1],l[2][0]=a[2],s(l[0][1],l[1][1],l[2][1],m,a),l[1][1]=a[1],l[2][1]=a[2]}r.copy(c[0],l[0]),r.copy(c[1],l[2]),r.copy(c[2],l[1])}else{if(r.copy(u[0],p[0]),r.copy(u[1],p[1]),r.sub(h,u[1],u[0]),r.normalize(h,h),d&&"none"!=d){var g=i(t.node1);r.scaleAndAdd(u[0],u[0],h,g*e)}if(f&&"none"!=f){var g=i(t.node2);r.scaleAndAdd(u[1],u[1],h,-g*e)}r.copy(c[0],u[0]),r.copy(c[1],u[1])}})}},function(t,e){t.exports=function(t){var e=t.findComponents({mainType:"legend"});e&&e.length&&t.eachSeriesByType("graph",function(t){var i=t.getCategoriesData(),n=t.getGraph(),o=n.data,r=i.mapArray(i.getName);o.filterSelf(function(t){var i=o.getItemModel(t),n=i.getShallow("category");if(null!=n){"number"==typeof n&&(n=r[n]);for(var a=0;a<e.length;a++)if(!e[a].isSelected(n))return!1}return!0})},this)}},function(t,e){t.exports=function(t){var e={};t.eachSeriesByType("graph",function(t){var i=t.getCategoriesData(),n=t.getData(),o={};i.each(function(n){var r=i.getName(n);o[r]=n;var a=i.getItemModel(n),s=a.get("itemStyle.normal.color")||t.getColorFromPalette(r,e);i.setItemVisual(n,"color",s)}),i.count()&&n.each(function(t){var e=n.getItemModel(t),r=e.getShallow("category");null!=r&&("string"==typeof r&&(r=o[r]),n.getItemVisual(t,"color",!0)||n.setItemVisual(t,"color",i.getItemVisual(r,"color")))})})}},function(t,e,i){var n=i(225);t.exports=function(t){t.eachSeriesByType("graph",function(t){"circular"===t.get("layout")&&n(t)})}},function(t,e,i){function n(t,e,i){var n=t.getBoxLayoutParams();return n.aspect=i,r.getLayoutRect(n,{width:e.getWidth(),height:e.getHeight()})}var o=i(241),r=i(12),a=i(75);t.exports=function(t,e){var i=[];return t.eachSeriesByType("graph",function(t){var r=t.get("coordinateSystem");if(!r||"view"===r){var s=t.getData(),l=s.mapArray(function(t){var e=s.getItemModel(t);return[+e.get("x"),+e.get("y")]}),u=[],h=[];a.fromPoints(l,u,h),h[0]-u[0]===0&&(h[0]+=1,u[0]-=1),h[1]-u[1]===0&&(h[1]+=1,u[1]-=1);var c=(h[0]-u[0])/(h[1]-u[1]),d=n(t,e,c);isNaN(c)&&(u=[d.x,d.y],h=[d.x+d.width,d.y+d.height]);var f=h[0]-u[0],p=h[1]-u[1],g=d.width,m=d.height,v=t.coordinateSystem=new o;v.zoomLimit=t.get("scaleLimit"),v.setBoundingRect(u[0],u[1],f,p),v.setViewRect(d.x,d.y,g,m),v.setCenter(t.get("center")),v.setZoom(t.get("zoom")),i.push(v)}}),i}},function(t,e){function i(t){return t instanceof Array||(t=[t,t]),t}t.exports=function(t){t.eachSeriesByType("graph",function(t){var e=t.getGraph(),n=t.getEdgeData(),o=i(t.get("edgeSymbol")),r=i(t.get("edgeSymbolSize")),a="lineStyle.normal.color".split("."),s="lineStyle.normal.opacity".split(".");n.setVisual("fromSymbol",o&&o[0]),n.setVisual("toSymbol",o&&o[1]),n.setVisual("fromSymbolSize",r&&r[0]),n.setVisual("toSymbolSize",r&&r[1]),n.setVisual("color",t.get(a)),n.setVisual("opacity",t.get(s)),n.each(function(t){var o=n.getItemModel(t),r=e.getEdgeByIndex(t),l=i(o.getShallow("symbol",!0)),u=i(o.getShallow("symbolSize",!0)),h=o.get(a),c=o.get(s);switch(h){case"source":h=r.node1.getVisual("color");break;case"target":h=r.node2.getVisual("color")}l[0]&&r.setVisual("fromSymbol",l[0]),l[1]&&r.setVisual("toSymbol",l[1]),u[0]&&r.setVisual("fromSymbolSize",u[0]),u[1]&&r.setVisual("toSymbolSize",u[1]),r.setVisual("color",h),r.setVisual("opacity",c)})})}},function(t,e,i){var n=i(5),o=n.scaleAndAdd;t.exports=function(t,e,i){for(var r=i.rect,a=r.width,s=r.height,l=[r.x+a/2,r.y+s/2],u=null==i.gravity?.1:i.gravity,h=0;h<t.length;h++){var c=t[h];c.p||(c.p=n.create(a*(Math.random()-.5)+l[0],s*(Math.random()-.5)+l[1])),c.pp=n.clone(c.p),c.edges=null}var d=.6;return{warmUp:function(){d=.5},setFixed:function(e){t[e].fixed=!0},setUnfixed:function(e){t[e].fixed=!1},step:function(i){for(var r=[],a=t.length,s=0;s<e.length;s++){var h=e[s],c=h.n1,f=h.n2;n.sub(r,f.p,c.p);var p=n.len(r)-h.d,g=f.w/(c.w+f.w);n.normalize(r,r),!c.fixed&&o(c.p,c.p,r,g*p*d),!f.fixed&&o(f.p,f.p,r,-(1-g)*p*d)}for(var s=0;s<a;s++){var m=t[s];m.fixed||(n.sub(r,l,m.p),n.scaleAndAdd(m.p,m.p,r,u*d))}for(var s=0;s<a;s++)for(var c=t[s],v=s+1;v<a;v++){var f=t[v];n.sub(r,f.p,c.p);var p=n.len(r);0===p&&(n.set(r,Math.random()-.5,Math.random()-.5),p=1);var y=(c.rep+f.rep)/p/p;!c.fixed&&o(c.pp,c.pp,r,y),!f.fixed&&o(f.pp,f.pp,r,-y)}for(var x=[],s=0;s<a;s++){var m=t[s];m.fixed||(n.sub(x,m.p,m.pp),n.scaleAndAdd(m.p,m.p,x,d),n.copy(m.pp,m.p))}d=.992*d,i&&i(t,e,d<.01)}}}},function(t,e,i){var n=i(281),o=i(4),r=i(227),a=i(225),s=i(5),l=i(1);t.exports=function(t){t.eachSeriesByType("graph",function(t){var e=t.coordinateSystem;if(!e||"view"===e.type)if("force"===t.get("layout")){var i=t.preservedPoints||{},u=t.getGraph(),h=u.data,c=u.edgeData,d=t.getModel("force"),f=d.get("initLayout");t.preservedPoints?h.each(function(t){var e=h.getId(t);h.setItemLayout(t,i[e]||[NaN,NaN])}):f&&"none"!==f?"circular"===f&&a(t):r(t);var p=h.getDataExtent("value"),g=c.getDataExtent("value"),m=d.get("repulsion"),v=d.get("edgeLength");l.isArray(m)||(m=[m,m]),l.isArray(v)||(v=[v,v]),v=[v[1],v[0]];var y=h.mapArray("value",function(t,e){var i=h.getItemLayout(e),n=o.linearMap(t,p,m);return isNaN(n)&&(n=(m[0]+m[1])/2),{w:n,rep:n,p:!i||isNaN(i[0])||isNaN(i[1])?null:i}}),x=c.mapArray("value",function(t,e){var i=u.getEdgeByIndex(e),n=o.linearMap(t,g,v);return isNaN(n)&&(n=(v[0]+v[1])/2),{n1:y[i.node1.dataIndex],n2:y[i.node2.dataIndex],d:n,curveness:i.getModel().get("lineStyle.normal.curveness")||0}}),e=t.coordinateSystem,_=e.getBoundingRect(),b=n(y,x,{rect:_,gravity:d.get("gravity")}),w=b.step;b.step=function(t){for(var e=0,n=y.length;e<n;e++)y[e].fixed&&s.copy(y[e].p,u.getNodeByIndex(e).getLayout());w(function(e,n,o){for(var r=0,a=e.length;r<a;r++)e[r].fixed||u.getNodeByIndex(r).setLayout(e[r].p),i[h.getId(r)]=e[r].p;for(var r=0,a=n.length;r<a;r++){var l=n[r],c=u.getEdgeByIndex(r),d=l.n1.p,f=l.n2.p,p=c.getLayout();p=p?p.slice():[],p[0]=p[0]||[],p[1]=p[1]||[],s.copy(p[0],d),s.copy(p[1],f),+l.curveness&&(p[2]=[(d[0]+f[0])/2-(d[1]-f[1])*l.curveness,(d[1]+f[1])/2-(f[0]-d[0])*l.curveness]),c.setLayout(p)}t&&t(o)})},t.forceLayout=b,t.preservedPoints=i,b.step()}else t.forceLayout=null})}},function(t,e,i){var n=i(2),o=i(224),r={type:"graphRoam",event:"graphRoam",update:"none"};n.registerAction(r,function(t,e){e.eachComponent({mainType:"series",query:t},function(e){var i=e.coordinateSystem,n=o.updateCenterAndZoom(i,t);e.setCenter&&e.setCenter(n.center),e.setZoom&&e.setZoom(n.zoom)})}),n.registerAction({type:"focusNodeAdjacency",event:"focusNodeAdjacency",update:"series.graph:focusNodeAdjacency"},function(){}),n.registerAction({type:"unfocusNodeAdjacency",event:"unfocusNodeAdjacency",update:"series.graph:unfocusNodeAdjacency"},function(){})},function(t,e,i){var n=i(227),o=i(226);t.exports=function(t,e){t.eachSeriesByType("graph",function(t){var e=t.get("layout"),i=t.coordinateSystem;if(i&&"view"!==i.type){var r=t.getData();r.each(i.dimensions,function(t,e,n){isNaN(t)||isNaN(e)?r.setItemLayout(n,[NaN,NaN]):r.setItemLayout(n,i.dataToPoint([t,e]))}),o(r.graph)}else e&&"none"!==e||n(t)})}},function(t,e,i){i(287),i(288)},function(t,e,i){function n(){var t=r.createCanvas();this.canvas=t,this.blurSize=30,this.pointSize=20,this.maxOpacity=1,this.minOpacity=0,this._gradientPixels={}}var o=256,r=i(1);n.prototype={update:function(t,e,i,n,r,a){var s=this._getBrush(),l=this._getGradient(t,r,"inRange"),u=this._getGradient(t,r,"outOfRange"),h=this.pointSize+this.blurSize,c=this.canvas,d=c.getContext("2d"),f=t.length;c.width=e,c.height=i;for(var p=0;p<f;++p){var g=t[p],m=g[0],v=g[1],y=g[2],x=n(y);d.globalAlpha=x,d.drawImage(s,m-h,v-h)}for(var _=d.getImageData(0,0,c.width,c.height),b=_.data,w=0,S=b.length,M=this.minOpacity,I=this.maxOpacity,T=I-M;w<S;){var x=b[w+3]/256,A=4*Math.floor(x*(o-1));if(x>0){var L=a(x)?l:u;x>0&&(x=x*T+M),b[w++]=L[A],b[w++]=L[A+1],b[w++]=L[A+2],b[w++]=L[A+3]*x*256}else w+=4}return d.putImageData(_,0,0),c},_getBrush:function(){var t=this._brushCanvas||(this._brushCanvas=r.createCanvas()),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,o=n[i]||(n[i]=new Uint8ClampedArray(1024)),r=[],a=0,s=0;s<256;s++)e[i](s/255,!0,r),o[a++]=r[0],o[a++]=r[1],o[a++]=r[2],o[a++]=r[3];return o}},t.exports=n},function(t,e,i){var n=i(16),o=i(35);t.exports=n.extend({type:"series.heatmap",getInitialData:function(t,e){return o(t.data,this,e)},defaultOption:{coordinateSystem:"cartesian2d",zlevel:0,z:2,geoIndex:0,blurSize:30,pointSize:20,maxOpacity:1,minOpacity:0}})},function(t,e,i){function n(t,e,i){var n=t[1]-t[0];e=l.map(e,function(e){return{interval:[(e.interval[0]-t[0])/n,(e.interval[1]-t[0])/n]}});var o=e.length,r=0;return function(t){for(var n=r;n<o;n++){var a=e[n].interval;if(a[0]<=t&&t<=a[1]){r=n;break}}if(n===o)for(var n=r-1;n>=0;n--){var a=e[n].interval;if(a[0]<=t&&t<=a[1]){r=n;break}}return n>=0&&n<o&&i[n]}}function o(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]}}function r(t){var e=t.dimensions;return"lng"===e[0]&&"lat"===e[1]}var a=i(3),s=i(286),l=i(1);t.exports=i(2).extendChartView({type:"heatmap",render:function(t,e,i){var n;e.eachComponent("visualMap",function(e){e.eachTargetSeries(function(i){i===t&&(n=e)})}),this.group.removeAll();var o=t.coordinateSystem;"cartesian2d"===o.type?this._renderOnCartesian(o,t,i):r(o)&&this._renderOnGeo(o,t,n,i)},dispose:function(){},_renderOnCartesian:function(t,e,i){var n=t.getAxis("x"),o=t.getAxis("y"),r=this.group,s=n.getBandWidth(),u=o.getBandWidth(),h=e.getData(),c="itemStyle.normal",d="itemStyle.emphasis",f="label.normal",p="label.emphasis",g=e.getModel(c).getItemStyle(["color"]),m=e.getModel(d).getItemStyle(),v=e.getModel("label.normal"),y=e.getModel("label.emphasis");h.each(["x","y","z"],function(i,n,o,x){var _=h.getItemModel(x),b=t.dataToPoint([i,n]);if(!isNaN(o)){var w=new a.Rect({shape:{x:b[0]-s/2,y:b[1]-u/2,width:s,height:u},style:{fill:h.getItemVisual(x,"color"),opacity:h.getItemVisual(x,"opacity")}});h.hasItemOption&&(g=_.getModel(c).getItemStyle(["color"]),m=_.getModel(d).getItemStyle(),v=_.getModel(f),y=_.getModel(p));var S=e.getRawValue(x),M="-";S&&null!=S[2]&&(M=S[2]),v.getShallow("show")&&(a.setText(g,v),g.text=e.getFormattedLabel(x,"normal")||M),y.getShallow("show")&&(a.setText(m,y),m.text=e.getFormattedLabel(x,"emphasis")||M),w.setStyle(g),a.setHoverStyle(w,h.hasItemOption?m:l.extend({},m)),r.add(w),h.setItemGraphicEl(x,w)}})},_renderOnGeo:function(t,e,i,r){var l=i.targetVisuals.inRange,u=i.targetVisuals.outOfRange,h=e.getData(),c=this._hmLayer||this._hmLayer||new s;c.blurSize=e.get("blurSize"),c.pointSize=e.get("pointSize"),c.minOpacity=e.get("minOpacity"),c.maxOpacity=e.get("maxOpacity");var d=t.getViewRect().clone(),f=t.getRoamTransform().transform;d.applyTransform(f);var p=Math.max(d.x,0),g=Math.max(d.y,0),m=Math.min(d.width+d.x,r.getWidth()),v=Math.min(d.height+d.y,r.getHeight()),y=m-p,x=v-g,_=h.mapArray(["lng","lat","value"],function(e,i,n){var o=t.dataToPoint([e,i]);return o[0]-=p,o[1]-=g,o.push(n),o}),b=i.getExtent(),w="visualMap.continuous"===i.type?o(b,i.option.range):n(b,i.getPieceList(),i.option.selected);c.update(_,y,x,l.color.getNormalizer(),{inRange:l.color.getColorMapper(),outOfRange:u.color.getColorMapper()},w);var S=new a.Image({style:{width:y,height:x,x:p,y:g,image:c.canvas},silent:!0});this.group.add(S)}})},function(t,e,i){function n(t,e,i){a.call(this,t,e,i),this._lastFrame=0,this._lastFramePercent=0}var o=i(229),r=i(1),a=i(228),s=i(5),l=n.prototype;l.createLine=function(t,e,i){return new o(t,e,i)},l.updateAnimationPoints=function(t,e){this._points=e;for(var i=[0],n=0,o=1;o<e.length;o++){var r=e[o-1],a=e[o];n+=s.dist(r,a),i.push(n)}if(0!==n){for(var o=0;o<i.length;o++)i[o]/=n;this._offsets=i,this._length=n}},l.getLineLength=function(t){return this._length},l.updateSymbolPosition=function(t){var e=t.__t,i=this._points,n=this._offsets,o=i.length;if(n){var r,a=this._lastFrame;if(e<this._lastFramePercent){var l=Math.min(a+1,o-1);for(r=l;r>=0&&!(n[r]<=e);r--);r=Math.min(r,o-2)}else{for(var r=a;r<o&&!(n[r]>e);r++);r=Math.min(r-1,o-2)}s.lerp(t.position,i[r],i[r+1],(e-n[r])/(n[r+1]-n[r]));var u=i[r+1][0]-i[r][0],h=i[r+1][1]-i[r][1];t.rotation=-Math.atan2(h,u)-Math.PI/2,this._lastFrame=r,this._lastFramePercent=e,t.ignore=!1}},r.inherits(n,a),t.exports=n},function(t,e,i){function n(t){return a.isArray(t)||(t=[+t,+t]),t}function o(t,e){t.eachChild(function(t){t.attr({z:e.z,zlevel:e.zlevel,style:{stroke:"stroke"===e.brushType?e.color:null,fill:"fill"===e.brushType?e.color:null}})})}function r(t,e){c.call(this);var i=new h(t,e),n=new c;this.add(i),this.add(n),n.beforeUpdate=function(){this.attr(i.getScale())},this.updateData(t,e)}var a=i(1),s=i(24),l=i(3),u=i(4),h=i(50),c=l.Group,d=3,f=r.prototype;f.stopEffectAnimation=function(){this.childAt(1).removeAll()},f.startEffectAnimation=function(t){for(var e=t.symbolType,i=t.color,n=this.childAt(1),r=0;r<d;r++){var a=s.createSymbol(e,-1,-1,2,2,i);a.attr({style:{strokeNoScale:!0},z2:99,silent:!0,scale:[.5,.5]});var l=-r/d*t.period+t.effectOffset;a.animate("",!0).when(t.period,{scale:[t.rippleScale/2,t.rippleScale/2]}).delay(l).start(),a.animateStyle(!0).when(t.period,{opacity:0}).delay(l).start(),n.add(a)}o(n,t)},f.updateEffectAnimation=function(t){for(var e=this._effectCfg,i=this.childAt(1),n=["symbolType","period","rippleScale"],r=0;r<n;r++){var a=n[r];if(e[a]!==t[a])return this.stopEffectAnimation(),void this.startEffectAnimation(t)}o(i,t)},f.highlight=function(){this.trigger("emphasis")},f.downplay=function(){this.trigger("normal")},f.updateData=function(t,e){var i=t.hostModel;this.childAt(0).updateData(t,e);var o=this.childAt(1),r=t.getItemModel(e),a=t.getItemVisual(e,"symbol"),s=n(t.getItemVisual(e,"symbolSize")),l=t.getItemVisual(e,"color");o.attr("scale",s),o.traverse(function(t){t.attr({fill:l})});var h=r.getShallow("symbolOffset");if(h){var c=o.position;c[0]=u.parsePercent(h[0],s[0]),c[1]=u.parsePercent(h[1],s[1])}o.rotation=(r.getShallow("symbolRotate")||0)*Math.PI/180||0;var d={};if(d.showEffectOn=i.get("showEffectOn"),d.rippleScale=r.get("rippleEffect.scale"),d.brushType=r.get("rippleEffect.brushType"),d.period=1e3*r.get("rippleEffect.period"),d.effectOffset=e/t.count(),d.z=r.getShallow("z")||0,d.zlevel=r.getShallow("zlevel")||0,d.symbolType=a,d.color=l,this.off("mouseover").off("mouseout").off("emphasis").off("normal"),"render"===d.showEffectOn)this._effectCfg?this.updateEffectAnimation(d):this.startEffectAnimation(d),this._effectCfg=d;else{this._effectCfg=null,this.stopEffectAnimation();var f=this.childAt(0),p=function(){f.trigger("emphasis"),"render"!==d.showEffectOn&&this.startEffectAnimation(d)},g=function(){f.trigger("normal"),"render"!==d.showEffectOn&&this.stopEffectAnimation()};this.on("mouseover",p,this).on("mouseout",g,this).on("emphasis",p,this).on("normal",g,this)}this._effectCfg=d},f.fadeOut=function(t){this.off("mouseover").off("mouseout").off("emphasis").off("normal"),t&&t()},a.inherits(r,c),t.exports=r},function(t,e,i){function n(){this.group=new o.Group,this._lineEl=new s}var o=i(3),r=i(89),a=i(88),s=o.extendShape({shape:{polyline:!1,segs:[]},buildPath:function(t,e){for(var i=e.segs,n=e.polyline,o=0;o<i.length;o++){var r=i[o];if(n){t.moveTo(r[0][0],r[0][1]);for(var a=1;a<r.length;a++)t.lineTo(r[a][0],r[a][1])}else t.moveTo(r[0][0],r[0][1]),r.length>2?t.quadraticCurveTo(r[2][0],r[2][1],r[1][0],r[1][1]):t.lineTo(r[1][0],r[1][1]);
-}},findDataIndex:function(t,e){for(var i=this.shape,n=i.segs,o=i.polyline,s=Math.max(this.style.lineWidth,1),l=0;l<n.length;l++){var u=n[l];if(o){for(var h=1;h<u.length;h++)if(a.containStroke(u[h-1][0],u[h-1][1],u[h][0],u[h][1],s,t,e))return l}else if(u.length>2){if(r.containStroke(u[0][0],u[0][1],u[2][0],u[2][1],u[1][0],u[1][1],s,t,e))return l}else if(a.containStroke(u[0][0],u[0][1],u[1][0],u[1][1],s,t,e))return l}return-1}}),l=n.prototype;l.updateData=function(t){this.group.removeAll();var e=this._lineEl,i=t.hostModel;e.setShape({segs:t.mapArray(t.getItemLayout),polyline:i.get("polyline")}),e.useStyle(i.getModel("lineStyle.normal").getLineStyle());var n=t.getVisual("color");n&&e.setStyle("stroke",n),e.setStyle("fill"),e.seriesIndex=i.seriesIndex,e.on("mousemove",function(t){e.dataIndex=null;var i=e.findDataIndex(t.offsetX,t.offsetY);i>0&&(e.dataIndex=i)}),this.group.add(e)},l.updateLayout=function(t){var e=t.getData();this._lineEl.setShape({segs:e.mapArray(e.getItemLayout)})},l.remove=function(){this.group.removeAll()},t.exports=n},function(t,e,i){function n(t,e,i,n){l.Group.call(this),this.bodyIndex,this.whiskerIndex,this.styleUpdater=i,this._createContent(t,e,n),this.updateData(t,e,n),this._seriesModel}function o(t,e,i){return s.map(t,function(t){return t=t.slice(),t[e]=i.initBaseline,t})}function r(t){var e={};return s.each(t,function(t,i){e["ends"+i]=t}),e}function a(t){this.group=new l.Group,this.styleUpdater=t}var s=i(1),l=i(3),u=i(7),h=u.extend({type:"whiskerInBox",shape:{},buildPath:function(t,e){for(var i in e)if(e.hasOwnProperty(i)&&0===i.indexOf("ends")){var n=e[i];t.moveTo(n[0][0],n[0][1]),t.lineTo(n[1][0],n[1][1])}}}),c=n.prototype;c._createContent=function(t,e,i){var n=t.getItemLayout(e),a="horizontal"===n.chartLayout?1:0,u=0;this.add(new l.Polygon({shape:{points:i?o(n.bodyEnds,a,n):n.bodyEnds},style:{strokeNoScale:!0},z2:100})),this.bodyIndex=u++;var c=s.map(n.whiskerEnds,function(t){return i?o(t,a,n):t});this.add(new h({shape:r(c),style:{strokeNoScale:!0},z2:100})),this.whiskerIndex=u++},c.updateData=function(t,e,i){var n=this._seriesModel=t.hostModel,o=t.getItemLayout(e),a=l[i?"initProps":"updateProps"];a(this.childAt(this.bodyIndex),{shape:{points:o.bodyEnds}},n,e),a(this.childAt(this.whiskerIndex),{shape:r(o.whiskerEnds)},n,e),this.styleUpdater.call(null,this,t,e)},s.inherits(n,l.Group);var d=a.prototype;d.updateData=function(t){var e=this.group,i=this._data,o=this.styleUpdater;t.diff(i).add(function(i){if(t.hasValue(i)){var r=new n(t,i,o,(!0));t.setItemGraphicEl(i,r),e.add(r)}}).update(function(r,a){var s=i.getItemGraphicEl(a);return t.hasValue(r)?(s?s.updateData(t,r):s=new n(t,r,o),e.add(s),void t.setItemGraphicEl(r,s)):void e.remove(s)}).remove(function(t){var n=i.getItemGraphicEl(t);n&&e.remove(n)}).execute(),this._data=t},d.remove=function(){var t=this.group,e=this._data;this._data=null,e&&e.eachItemGraphicEl(function(e){e&&t.remove(e)})},t.exports=a},function(t,e,i){i(294),i(295);var n=i(2);n.registerLayout(i(296)),n.registerVisual(i(297))},function(t,e,i){"use strict";function n(t){var e=t.data;e&&e[0]&&e[0][0]&&e[0][0].coord&&(t.data=a.map(e,function(t){var e=[t[0].coord,t[1].coord],i={coords:e};return t[0].name&&(i.fromName=t[0].name),t[1].name&&(i.toName=t[1].name),a.mergeAll([i,t[0],t[1]])}))}var o=i(16),r=i(14),a=i(1),s=i(8),l=(i(23),o.extend({type:"series.lines",dependencies:["grid","polar"],visualColorAccessPath:"lineStyle.normal.color",init:function(t){n(t),l.superApply(this,"init",arguments)},mergeOption:function(t){n(t),l.superApply(this,"mergeOption",arguments)},getInitialData:function(t,e){var i=new r(["value"],this);return i.hasItemOption=!1,i.initData(t.data,[],function(t,e,n,o){if(t instanceof Array)return NaN;i.hasItemOption=!0;var r=t.value;return null!=r?r instanceof Array?r[o]:r:void 0}),i},formatTooltip:function(t){var e=this.getData(),i=e.getItemModel(t),n=i.get("name");if(n)return n;var o=i.get("fromName"),r=i.get("toName"),a=[];return null!=o&&a.push(o),null!=r&&a.push(r),s.encodeHTML(a.join(" > "))},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,label:{normal:{show:!1,position:"end"}},lineStyle:{normal:{opacity:.5}}}}))},function(t,e,i){var n=i(99),o=i(228),r=i(98),a=i(229),s=i(289),l=i(291);i(2).extendChartView({type:"lines",init:function(){},render:function(t,e,i){var u=t.getData(),h=this._lineDraw,c=t.get("effect.show"),d=t.get("polyline"),f=t.get("large")&&u.count()>=t.get("largeThreshold");c===this._hasEffet&&d===this._isPolyline&&f===this._isLarge||(h&&h.remove(),h=this._lineDraw=f?new l:new n(d?c?s:a:c?o:r),this._hasEffet=c,this._isPolyline=d,this._isLarge=f);var p=t.get("zlevel"),g=t.get("effect.trailLength"),m=i.getZr();if(m.painter.getLayer(p).clear(!0),null!=this._lastZlevel&&m.configLayer(this._lastZlevel,{motionBlur:!1}),c&&g){m.configLayer(p,{motionBlur:!0,lastFrameAlpha:Math.max(Math.min(g/10+.9,1),0)})}this.group.add(h.group),h.updateData(u),this._lastZlevel=p},updateLayout:function(t,e,i){this._lineDraw.updateLayout(t);var n=i.getZr();n.painter.getLayer(this._lastZlevel).clear(!0)},remove:function(t,e){this._lineDraw&&this._lineDraw.remove(e,!0)},dispose:function(){}})},function(t,e,i){t.exports=function(t){t.eachSeriesByType("lines",function(t){var e=t.coordinateSystem,i=t.getData();i.each(function(n){var o=i.getItemModel(n),r=o.option instanceof Array?o.option:o.get("coords"),a=[];if(t.get("polyline"))for(var s=0;s<r.length;s++)a.push(e.dataToPoint(r[s]));else{a[0]=e.dataToPoint(r[0]),a[1]=e.dataToPoint(r[1]);var l=o.get("lineStyle.normal.curveness");+l&&(a[2]=[(a[0][0]+a[1][0])/2-(a[0][1]-a[1][1])*l,(a[0][1]+a[1][1])/2-(a[1][0]-a[0][0])*l])}i.setItemLayout(n,a)})})}},function(t,e){function i(t){return t instanceof Array||(t=[t,t]),t}t.exports=function(t){t.eachSeriesByType("lines",function(t){var e=t.getData(),n=i(t.get("symbol")),o=i(t.get("symbolSize")),r="lineStyle.normal.opacity".split(".");e.setVisual("fromSymbol",n&&n[0]),e.setVisual("toSymbol",n&&n[1]),e.setVisual("fromSymbolSize",o&&o[0]),e.setVisual("toSymbolSize",o&&o[1]),e.setVisual("opacity",t.get(r)),e.each(function(t){var n=e.getItemModel(t),o=i(n.getShallow("symbol",!0)),a=i(n.getShallow("symbolSize",!0)),s=n.get(r);o[0]&&e.setItemVisual(t,"fromSymbol",o[0]),o[1]&&e.setItemVisual(t,"toSymbol",o[1]),a[0]&&e.setItemVisual(t,"fromSymbolSize",a[0]),a[1]&&e.setItemVisual(t,"toSymbolSize",a[1]),e.setItemVisual(t,"opacity",s)})})}},function(t,e,i){var n=i(2),o=n.PRIORITY;i(299),i(300),i(223),i(173),n.registerLayout(i(303)),n.registerVisual(i(304)),n.registerProcessor(o.PROCESSOR.STATISTIC,i(302)),n.registerPreprocessor(i(301)),i(79)("map",[{type:"mapToggleSelect",event:"mapselectchanged",method:"toggleSelected"},{type:"mapSelect",event:"mapselected",method:"select"},{type:"mapUnSelect",event:"mapunselected",method:"unSelect"}])},function(t,e,i){var n=i(14),o=i(16),r=i(1),a=i(27),s=i(8),l=s.encodeHTML,u=s.addCommas,h=i(69),c=i(173),d=o.extend({type:"series.map",dependencies:["geo"],layoutMode:"box",needsDrawMap:!1,seriesGroup:[],init:function(t){t=this._fillOption(t,this.getMapType()),this.option=t,d.superApply(this,"init",arguments),this.updateSelectedMap(t.data)},getInitialData:function(t){var e=a(["value"],t.data||[]),i=new n(e,this);return i.initData(t.data),i},mergeOption:function(t){t.data&&(t=this._fillOption(t,this.getMapType())),d.superCall(this,"mergeOption",t),this.updateSelectedMap(this.option.data)},getHostGeoModel:function(){var t=this.option.geoIndex;return null!=t?this.dependentModels.geo[t]:null},getMapType:function(){return(this.getHostGeoModel()||this).option.map},_fillOption:function(t,e){return t=r.extend({},t),t.data=c.getFilledRegions(t.data,e),t},getRawValue:function(t){return this.getData().get("value",t)},getRegionModel:function(t){var e=this.getData();return e.getItemModel(e.indexOfName(t))},formatTooltip:function(t){for(var e=this.getData(),i=u(this.getRawValue(t)),n=e.getName(t),o=this.seriesGroup,r=[],a=0;a<o.length;a++){var s=o[a].originalData.indexOfName(n);isNaN(o[a].originalData.get("value",s))||r.push(l(o[a].name))}return r.join(", ")+"<br />"+l(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,center:null,zoom:1,scaleLimit:null,label:{normal:{show:!1,textStyle:{color:"#000"}},emphasis:{show:!0,textStyle:{color:"rgb(100,0,0)"}}},itemStyle:{normal:{borderWidth:.5,borderColor:"#444",areaColor:"#eee"},emphasis:{areaColor:"rgba(255,215,0,0.8)"}}}});r.mixin(d,h),t.exports=d},function(t,e,i){var n=i(3),o=i(231);i(2).extendChartView({type:"map",render:function(t,e,i,n){if(!n||"mapToggleSelect"!==n.type||n.from!==this.uid){var r=this.group;if(r.removeAll(),!t.getHostGeoModel()){if(n&&"geoRoam"===n.type&&"series"===n.componentType&&n.seriesId===t.id){var a=this._mapDraw;a&&r.add(a.group)}else if(t.needsDrawMap){var a=this._mapDraw||new o(i,(!0));r.add(a.group),a.draw(t,e,i,this,n),this._mapDraw=a}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(t,e,i){var o=t.originalData,r=this.group;o.each("value",function(e,i){if(!isNaN(e)){var a=o.getItemLayout(i);if(a&&a.point){var s=a.point,l=a.offset,u=new n.Circle({style:{fill:t.getData().getVisual("color")},shape:{cx:s[0]+9*l,cy:s[1],r:3},silent:!0,z2:10});if(!l){var h=t.mainSeries.getData(),c=o.getName(i),d=c,f=h.indexOfName(c),p=o.getItemModel(i),g=p.getModel("label.normal"),m=p.getModel("label.emphasis"),v=g.getModel("textStyle"),y=m.getModel("textStyle"),x=h.getItemGraphicEl(f);u.setStyle({textPosition:"bottom"});var _=function(){u.setStyle({text:m.get("show")?d:"",textFill:y.getTextColor(),textFont:y.getFont()})},b=function(){u.setStyle({text:g.get("show")?d:"",textFill:v.getTextColor(),textFont:v.getFont()})};x.on("mouseover",_).on("mouseout",b).on("emphasis",_).on("normal",b),b()}r.add(u)}}})}})},function(t,e,i){var n=i(1);t.exports=function(t){var e=[];n.each(t.series,function(t){"map"===t.type&&e.push(t)}),n.each(e,function(t){t.map=t.map||t.mapType,n.defaults(t,t.mapLocation)})}},function(t,e,i){function n(t,e){var i={},n=["value"];return o.each(t,function(t){t.each(n,function(e,n){var o=t.getName(n);i[o]=i[o]||[],isNaN(e)||i[o].push(e)})}),t[0].map(n,function(n,o){for(var r=t[0].getName(o),a=0,s=1/0,l=-(1/0),u=i[r].length,h=0;h<u;h++)s=Math.min(s,i[r][h]),l=Math.max(l,i[r][h]),a+=i[r][h];var c;return c="min"===e?s:"max"===e?l:"average"===e?a/u:a,0===u?NaN:c})}var o=i(1);t.exports=function(t){var e={};t.eachSeriesByType("map",function(t){var i=t.getHostGeoModel(),n=i?"o"+i.id:"i"+t.getMapType();(e[n]=e[n]||[]).push(t)}),o.each(e,function(t,e){for(var i=n(o.map(t,function(t){return t.getData()}),t[0].get("mapValueCalculation")),r=0;r<t.length;r++)t[r].originalData=t[r].getData();for(var r=0;r<t.length;r++)t[r].seriesGroup=t,t[r].needsDrawMap=0===r&&!t[r].getHostGeoModel(),t[r].setData(i.cloneShallow()),t[r].mainSeries=t[0]})}},function(t,e,i){var n=i(1);t.exports=function(t){var e={};t.eachSeriesByType("map",function(i){var o=i.getMapType();if(!i.getHostGeoModel()&&!e[o]){var r={};n.each(i.seriesGroup,function(e){var i=e.coordinateSystem,n=e.originalData;e.get("showLegendSymbol")&&t.getComponent("legend")&&n.each("value",function(t,e){var o=n.getName(e),a=i.getRegion(o);if(a&&!isNaN(t)){var s=r[o]||0,l=i.dataToPoint(a.center);r[o]=s+1,n.setItemLayout(e,{point:l,offset:s})}})});var a=i.getData();a.each(function(t){var e=a.getName(t),i=a.getItemLayout(t)||{};i.showLabel=!r[e],a.setItemLayout(t,i)}),e[o]=!0}})}},function(t,e){t.exports=function(t){t.eachSeriesByType("map",function(t){var e=t.get("color"),i=t.getModel("itemStyle.normal"),n=i.get("areaColor"),o=i.get("color")||e[t.seriesIndex%e.length];t.getData().setVisual({areaColor:n,color:o})})}},function(t,e,i){var n=i(2);i(232),i(306),i(307),n.registerVisual(i(308))},function(t,e,i){function n(t,e,i){var n=t.get("data"),r=o(e);n&&n.length&&s.each(i,function(t){if(t){var e=s.indexOf(n,t[r]);t[r]=e>=0?e:NaN}})}function o(t){return+t.replace("dim","")}function r(t,e){var i=0;s.each(t,function(t){var e=o(t);e>i&&(i=e)});var n=e[0];n&&n.length-1>i&&(i=n.length-1);for(var r=[],a=0;a<=i;a++)r.push("dim"+a);return r}var a=i(14),s=i(1),l=i(16),u=i(27);t.exports=l.extend({type:"series.parallel",dependencies:["parallel"],getInitialData:function(t,e){var i=e.getComponent("parallel",this.get("parallelIndex")),o=i.parallelAxisIndex,l=t.data,h=i.dimensions,c=r(h,l),d=s.map(c,function(t,i){var r=s.indexOf(h,t),a=r>=0&&e.getComponent("parallelAxis",o[r]);return a&&"category"===a.get("type")?(n(a,t,l),{name:t,type:"ordinal"}):r<0&&u.guessOrdinal(l,i)?{name:t,type:"ordinal"}:t}),f=new a(d,this);return f.initData(l),this.option.progressive&&(this.option.animation=!1),f},getRawIndicesByActiveState:function(t){var e=this.coordinateSystem,i=this.getData(),n=[];return e.eachActiveState(i,function(e,o){t===e&&n.push(i.getRawIndex(o))}),n},defaultOption:{zlevel:0,z:2,coordinateSystem:"parallel",parallelIndex:0,label:{normal:{show:!1},emphasis:{show:!1}},inactiveOpacity:.05,activeOpacity:1,lineStyle:{normal:{width:1,opacity:.45,type:"solid"}},progressive:!1,smooth:!1,animationEasing:"linear"}})},function(t,e,i){function n(t,e,i){var n=t.model,o=t.getRect(),r=new l.Rect({shape:{x:o.x,y:o.y,width:o.width,height:o.height}}),a="horizontal"===n.get("layout")?"width":"height";return r.setShape(a,0),l.initProps(r,{shape:{width:o.width,height:o.height}},e,i),r}function o(t,e,i,n){for(var o=[],r=0;r<i.length;r++){var a=i[r],l=t.get(a,e);s(l,n.getAxis(a).type)||o.push(n.dataToPoint(l,a))}return o}function r(t,e,i,n,r){var a=o(t,i,n,r),s=new l.Polyline({shape:{points:a},silent:!0,z2:10});e.add(s),t.setItemGraphicEl(i,s)}function a(t,e){var i=t.hostModel.getModel("lineStyle.normal"),n=i.getLineStyle();t.eachItemGraphicEl(function(o,r){if(t.hasItemOption){var a=t.getItemModel(r),s=a.getModel("lineStyle.normal",i);n=s.getLineStyle()}o.useStyle(u.extend(n,{fill:null,stroke:t.getItemVisual(r,"color"),opacity:t.getItemVisual(r,"opacity")})),o.shape.smooth=e})}function s(t,e){return"category"===e?null==t:null==t||isNaN(t)}var l=i(3),u=i(1),h=.3,c=i(28).extend({type:"parallel",init:function(){this._dataGroup=new l.Group,this.group.add(this._dataGroup),this._data},render:function(t,e,i,n){this._renderForNormal(t)},dispose:function(){},_renderForNormal:function(t){function e(t){r(c,u,t,p,f,null,m)}function i(e,i){var n=d.getItemGraphicEl(i),r=o(c,e,p,f);c.setItemGraphicEl(e,n),l.updateProps(n,{shape:{points:r}},t,e)}function s(t){var e=d.getItemGraphicEl(t);u.remove(e)}var u=this._dataGroup,c=t.getData(),d=this._data,f=t.coordinateSystem,p=f.dimensions,g=t.option,m=g.smooth?h:null;if(c.diff(d).add(e).update(i).remove(s).execute(),a(c,m),!this._data){var v=n(f,t,function(){setTimeout(function(){u.removeClipPath()})});u.setClipPath(v)}this._data=c},remove:function(){this._dataGroup&&this._dataGroup.removeAll(),this._data=null}});t.exports=c},function(t,e){t.exports=function(t){t.eachSeriesByType("parallel",function(e){var i=e.getModel("itemStyle.normal"),n=e.getModel("lineStyle.normal"),o=t.get("color"),r=n.get("color")||i.get("color")||o[e.seriesIndex%o.length],a=e.get("inactiveOpacity"),s=e.get("activeOpacity"),l=e.getModel("lineStyle.normal").getLineStyle(),u=e.coordinateSystem,h=e.getData(),c={normal:l.opacity,active:s,inactive:a};u.eachActiveState(h,function(t,e){h.setItemVisual(e,"opacity",c[t])}),h.setVisual("color",r)})}},function(t,e,i){var n=i(1);i(53),i(248),i(249);var o=i(87),r=i(2);r.registerLayout(n.curry(o,"pictorialBar")),r.registerVisual(n.curry(i(45),"pictorialBar","roundRect",null)),i(31)},function(t,e,i){var n=i(1),o=i(2);i(349),i(311),i(312),o.registerVisual(n.curry(i(74),"radar")),o.registerVisual(n.curry(i(45),"radar","circle",null)),o.registerLayout(i(314)),o.registerProcessor(n.curry(i(58),"radar")),o.registerPreprocessor(i(313))},function(t,e,i){"use strict";var n=i(16),o=i(14),r=i(27),a=i(1),s=i(8).encodeHTML,l=n.extend({type:"series.radar",dependencies:["radar"],init:function(t){l.superApply(this,"init",arguments),this.legendDataProvider=function(){return this.getRawData()}},getInitialData:function(t,e){var i=t.data||[],n=r([],i,[],"indicator_"),a=new o(n,this);return a.initData(i),a},formatTooltip:function(t){var e=this.getRawValue(t),i=this.coordinateSystem,n=i.getIndicatorAxes(),o=this.getData().getName(t);return s(""===o?this.name:o)+"<br/>"+a.map(n,function(t,i){return s(t.name+" : "+e[i])}).join("<br />")},defaultOption:{zlevel:0,z:2,coordinateSystem:"radar",legendHoverLink:!0,radarIndex:0,lineStyle:{normal:{width:2,type:"solid"}},label:{normal:{position:"top"}},symbol:"emptyCircle",symbolSize:4}});t.exports=l},function(t,e,i){function n(t){return r.isArray(t)||(t=[+t,+t]),t}var o=i(3),r=i(1),a=i(24);t.exports=i(2).extendChartView({type:"radar",render:function(t,e,i){function s(t,e){var i=t.getItemVisual(e,"symbol")||"circle",o=t.getItemVisual(e,"color");if("none"!==i){var r=a.createSymbol(i,-.5,-.5,1,1,o);return r.attr({style:{strokeNoScale:!0},z2:100,scale:n(t.getItemVisual(e,"symbolSize"))}),r}}function l(e,i,n,r,a,l){n.removeAll();for(var u=0;u<i.length-1;u++){var h=s(r,a);h&&(h.__dimIdx=u,e[u]?(h.attr("position",e[u]),o[l?"initProps":"updateProps"](h,{position:i[u]},t,a)):h.attr("position",i[u]),n.add(h))}}function u(t){return r.map(t,function(t){return[h.cx,h.cy]})}var h=t.coordinateSystem,c=this.group,d=t.getData(),f=this._data;d.diff(f).add(function(e){var i=d.getItemLayout(e);if(i){var n=new o.Polygon,r=new o.Polyline,a={shape:{points:i}};n.shape.points=u(i),r.shape.points=u(i),o.initProps(n,a,t,e),o.initProps(r,a,t,e);var s=new o.Group,h=new o.Group;s.add(r),s.add(n),s.add(h),l(r.shape.points,i,h,d,e,!0),d.setItemGraphicEl(e,s)}}).update(function(e,i){var n=f.getItemGraphicEl(i),r=n.childAt(0),a=n.childAt(1),s=n.childAt(2),u={shape:{points:d.getItemLayout(e)}};u.shape.points&&(l(r.shape.points,u.shape.points,s,d,e,!1),o.updateProps(r,u,t),o.updateProps(a,u,t),d.setItemGraphicEl(e,n))}).remove(function(t){c.remove(f.getItemGraphicEl(t))}).execute(),d.eachItemGraphicEl(function(e,i){function n(){u.attr("ignore",v)}function a(){u.attr("ignore",m)}var s=d.getItemModel(i),l=e.childAt(0),u=e.childAt(1),h=e.childAt(2),f=d.getItemVisual(i,"color");c.add(e),l.useStyle(r.defaults(s.getModel("lineStyle.normal").getLineStyle(),{fill:"none",stroke:f})),l.hoverStyle=s.getModel("lineStyle.emphasis").getLineStyle();var p=s.getModel("areaStyle.normal"),g=s.getModel("areaStyle.emphasis"),m=p.isEmpty()&&p.parentModel.isEmpty(),v=g.isEmpty()&&g.parentModel.isEmpty();v=v&&m,u.ignore=m,u.useStyle(r.defaults(p.getAreaStyle(),{fill:f,opacity:.7})),u.hoverStyle=g.getAreaStyle();var y=s.getModel("itemStyle.normal").getItemStyle(["color"]),x=s.getModel("itemStyle.emphasis").getItemStyle(),_=s.getModel("label.normal"),b=s.getModel("label.emphasis");h.eachChild(function(e){e.setStyle(y),e.hoverStyle=r.clone(x);var n=d.get(d.dimensions[e.__dimIdx],i);o.setText(e.style,_,f),e.setStyle({text:_.get("show")?r.retrieve(t.getFormattedLabel(i,"normal",null,e.__dimIdx),n):""}),o.setText(e.hoverStyle,b,f),e.hoverStyle.text=b.get("show")?r.retrieve(t.getFormattedLabel(i,"emphasis",null,e.__dimIdx),n):""}),e.off("mouseover").off("mouseout").off("normal").off("emphasis"),e.on("emphasis",n).on("mouseover",n).on("normal",a).on("mouseout",a),o.setHoverStyle(e)}),this._data=d},remove:function(){this.group.removeAll(),this._data=null},dispose:function(){}})},function(t,e,i){var n=i(1);t.exports=function(t){var e=t.polar;if(e){n.isArray(e)||(e=[e]);var i=[];n.each(e,function(e,o){e.indicator?(e.type&&!e.shape&&(e.shape=e.type),t.radar=t.radar||[],n.isArray(t.radar)||(t.radar=[t.radar]),t.radar.push(e)):i.push(e)}),t.polar=i}n.each(t.series,function(t){"radar"===t.type&&t.polarIndex&&(t.radarIndex=t.polarIndex)})}},function(t,e){t.exports=function(t){t.eachSeriesByType("radar",function(t){function e(t,e){n[e]=n[e]||[],n[e][r]=o.dataToPoint(t,r)}var i=t.getData(),n=[],o=t.coordinateSystem;if(o){for(var r=0;r<o.getIndicatorAxes().length;r++){var a=i.dimensions[r];i.each(a,e)}i.each(function(t){n[t][0]&&n[t].push(n[t][0].slice()),i.setItemLayout(t,n[t])})}})}},function(t,e,i){var n=i(2);i(316),i(317),n.registerLayout(i(318)),n.registerVisual(i(319))},function(t,e,i){var n=i(16),o=i(230),r=i(8).encodeHTML,a=n.extend({type:"series.sankey",layoutInfo:null,getInitialData:function(t){var e=t.edges||t.links,i=t.data||t.nodes;if(i&&e){var n=o(i,e,this,!0);return n.data}},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),o=n.data,s=o.source+" -- "+o.target;return n.value&&(s+=" : "+n.value),r(s)}return a.superCall(this,"formatTooltip",t,e)},defaultOption:{zlevel:0,z:2,coordinateSystem:"view",layout:null,left:"5%",top:"5%",right:"20%",bottom:"5%",nodeWidth:20,nodeGap:8,layoutIterations:32,label:{normal:{show:!0,position:"right",textStyle:{color:"#000",fontSize:12}},emphasis:{show:!0}},itemStyle:{normal:{borderWidth:1,borderColor:"#333"}},lineStyle:{normal:{color:"#314656",opacity:.2,curveness:.5},emphasis:{opacity:.6}},animationEasing:"linear",animationDuration:1e3}});t.exports=a},function(t,e,i){function n(t,e,i){var n=new o.Rect({shape:{x:t.x-10,y:t.y-10,width:0,height:t.height+20}});return o.initProps(n,{shape:{width:t.width+20,height:t.height+20}},e,i),n}var o=i(3),r=i(1),a=o.extendShape({shape:{x1:0,y1:0,x2:0,y2:0,cpx1:0,cpy1:0,cpx2:0,cpy2:0,extent:0},buildPath:function(t,e){var i=e.extent/2;t.moveTo(e.x1,e.y1-i),t.bezierCurveTo(e.cpx1,e.cpy1-i,e.cpx2,e.cpy2-i,e.x2,e.y2-i),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()}});t.exports=i(2).extendChartView({type:"sankey",_model:null,render:function(t,e,i){var s=t.getGraph(),l=this.group,u=t.layoutInfo,h=t.getData(),c=t.getData("edge");this._model=t,l.removeAll(),l.position=[u.x,u.y],s.eachEdge(function(e){var i=new a;i.dataIndex=e.dataIndex,i.seriesIndex=t.seriesIndex,i.dataType="edge";var n=e.getModel("lineStyle.normal"),r=n.get("curveness"),s=e.node1.getLayout(),u=e.node2.getLayout(),h=e.getLayout();i.shape.extent=Math.max(1,h.dy);var d=s.x+s.dx,f=s.y+h.sy+h.dy/2,p=u.x,g=u.y+h.ty+h.dy/2,m=d*(1-r)+p*r,v=f,y=d*r+p*(1-r),x=g;switch(i.setShape({x1:d,y1:f,x2:p,y2:g,cpx1:m,cpy1:v,cpx2:y,cpy2:x}),i.setStyle(n.getItemStyle()),i.style.fill){case"source":i.style.fill=e.node1.getVisual("color");break;case"target":i.style.fill=e.node2.getVisual("color")}o.setHoverStyle(i,e.getModel("lineStyle.emphasis").getItemStyle()),l.add(i),c.setItemGraphicEl(e.dataIndex,i)}),s.eachNode(function(e){var i=e.getLayout(),n=e.getModel(),a=n.getModel("label.normal"),s=a.getModel("textStyle"),u=n.getModel("label.emphasis"),c=u.getModel("textStyle"),d=new o.Rect({shape:{x:i.x,y:i.y,width:e.getLayout().dx,height:e.getLayout().dy},style:{text:a.get("show")?t.getFormattedLabel(e.dataIndex,"normal")||e.id:"",textFont:s.getFont(),textFill:s.getTextColor(),textPosition:a.get("position")}});d.setStyle(r.defaults({fill:e.getVisual("color")},n.getModel("itemStyle.normal").getItemStyle())),o.setHoverStyle(d,r.extend(e.getModel("itemStyle.emphasis"),{text:u.get("show")?t.getFormattedLabel(e.dataIndex,"emphasis")||e.id:"",textFont:c.getFont(),textFill:c.getTextColor(),textPosition:u.get("position")})),l.add(d),h.setItemGraphicEl(e.dataIndex,d),d.dataType="node"}),!this._data&&t.get("animation")&&l.setClipPath(n(l.getBoundingRect(),t,function(){l.removeClipPath()})),this._data=t.getData()},dispose:function(){}})},function(t,e,i){function n(t,e){return M.getLayoutRect(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}function o(t,e,i,n,o,r,s){a(t,i,o),u(t,e,r,n,s),m(t)}function r(t){T.each(t,function(t){var e=x(t.outEdges,S),i=x(t.inEdges,S),n=Math.max(e,i);t.setLayout({value:n},!0)})}function a(t,e,i){for(var n=t,o=null,r=0,a=0;n.length;){o=[];for(var u=0,h=n.length;u<h;u++){var c=n[u];c.setLayout({x:r},!0),c.setLayout({dx:e},!0);for(var d=0,f=c.outEdges.length;d<f;d++)o.push(c.outEdges[d].node2)}n=o,++r}s(t,r),a=(i-e)/(r-1),l(t,a)}function s(t,e){T.each(t,function(t){t.outEdges.length||t.setLayout({x:e-1},!0)})}function l(t,e){T.each(t,function(t){var i=t.getLayout().x*e;t.setLayout({x:i},!0)})}function u(t,e,i,n,o){var r=I().key(function(t){return t.getLayout().x}).sortKeys(w).entries(t).map(function(t){return t.values});h(t,r,e,i,n),c(r,n,i);for(var a=1;o>0;o--)a*=.99,d(r,a),c(r,n,i),p(r,a),c(r,n,i)}function h(t,e,i,n,o){var r=[];T.each(e,function(t){var e=t.length,i=0;T.each(t,function(t){i+=t.getLayout().value});var a=(n-(e-1)*o)/i;r.push(a)}),r.sort(function(t,e){return t-e});var a=r[0];T.each(e,function(t){T.each(t,function(t,e){t.setLayout({y:e},!0);var i=t.getLayout().value*a;t.setLayout({dy:i},!0)})}),T.each(i,function(t){var e=+t.getValue()*a;t.setLayout({dy:e},!0)})}function c(t,e,i){T.each(t,function(t){var n,o,r,a=0,s=t.length;for(t.sort(b),r=0;r<s;r++){if(n=t[r],o=a-n.getLayout().y,o>0){var l=n.getLayout().y+o;n.setLayout({y:l},!0)}a=n.getLayout().y+n.getLayout().dy+e}if(o=a-e-i,o>0){var l=n.getLayout().y-o;for(n.setLayout({y:l},!0),a=n.getLayout().y,r=s-2;r>=0;--r)n=t[r],o=n.getLayout().y+n.getLayout().dy+e-a,o>0&&(l=n.getLayout().y-o,n.setLayout({y:l},!0)),a=n.getLayout().y}})}function d(t,e){T.each(t.slice().reverse(),function(t){T.each(t,function(t){if(t.outEdges.length){var i=x(t.outEdges,f)/x(t.outEdges,S),n=t.getLayout().y+(i-_(t))*e;t.setLayout({y:n},!0)}})})}function f(t){return _(t.node2)*t.getValue()}function p(t,e){T.each(t,function(t){T.each(t,function(t){if(t.inEdges.length){var i=x(t.inEdges,g)/x(t.inEdges,S),n=t.getLayout().y+(i-_(t))*e;t.setLayout({y:n},!0)}})})}function g(t){return _(t.node1)*t.getValue()}function m(t){T.each(t,function(t){t.outEdges.sort(v),t.inEdges.sort(y)}),T.each(t,function(t){var e=0,i=0;T.each(t.outEdges,function(t){t.setLayout({sy:e},!0),e+=t.getLayout().dy}),T.each(t.inEdges,function(t){t.setLayout({ty:i},!0),i+=t.getLayout().dy})})}function v(t,e){return t.node2.getLayout().y-e.node2.getLayout().y}function y(t,e){return t.node1.getLayout().y-e.node1.getLayout().y}function x(t,e){for(var i=0,n=t.length,o=-1;++o<n;){var r=+e.call(t,t[o],o);isNaN(r)||(i+=r)}return i}function _(t){return t.getLayout().y+t.getLayout().dy/2}function b(t,e){return t.getLayout().y-e.getLayout().y}function w(t,e){return t<e?-1:t>e?1:t===e?0:NaN}function S(t){return t.getValue()}var M=i(12),I=i(245),T=i(1);t.exports=function(t,e,i){t.eachSeriesByType("sankey",function(t){var i=t.get("nodeWidth"),a=t.get("nodeGap"),s=n(t,e);t.layoutInfo=s;var l=s.width,u=s.height,h=t.getGraph(),c=h.nodes,d=h.edges;r(c);var f=c.filter(function(t){return 0===t.getLayout().value}),p=0!==f.length?0:t.get("layoutIterations");o(c,d,i,a,l,u,p)})}},function(t,e,i){var n=i(73),o=i(1);t.exports=function(t,e){t.eachSeriesByType("sankey",function(t){var e=t.getGraph(),i=e.nodes;i.sort(function(t,e){return t.getLayout().value-e.getLayout().value});var r=i[0].getLayout().value,a=i[i.length-1].getLayout().value;o.each(i,function(e){var i=new n({type:"color",mappingMethod:"linear",dataExtent:[r,a],visual:t.get("color")}),o=i.mapValueToVisual(e.getLayout().value);e.setVisual("color",o);var s=e.getModel(),l=s.get("itemStyle.normal.color");null!=l&&e.setVisual("color",l)})})}},function(t,e,i){var n=i(2),o=i(1);i(233),i(321),i(322),n.registerLayout(i(323)),n.registerVisual(i(324)),n.registerProcessor(o.curry(i(58),"themeRiver"))},function(t,e,i){"use strict";var n=i(27),o=i(16),r=i(14),a=i(1),s=i(8),l=s.encodeHTML,u=i(245),h=2,c=o.extend({type:"series.themeRiver",dependencies:["singleAxis"],nameMap:null,init:function(t){c.superApply(this,"init",arguments),this.legendDataProvider=function(){return this.getRawData()}},fixData:function(t){for(var e=t.length,i=u().key(function(t){return t[2]}).entries(t),n=a.map(i,function(t){return{name:t.key,dataList:t.values}}),o=n.length,r=-1,s=-1,l=0;l<o;++l){var h=n[l].dataList.length;h>r&&(r=h,s=l)}for(var c=0;c<o;++c)if(c!==s)for(var d=n[c].name,f=0;f<r;++f){for(var p=n[s].dataList[f][0],g=n[c].dataList.length,m=-1,v=0;v<g;++v){var y=n[c].dataList[v][0];if(y===p){m=v;break}}m===-1&&(t[e]=[],t[e][0]=p,t[e][1]=0,t[e][2]=d,e++)}return t},getInitialData:function(t,e){var i=[],o=e.queryComponents({mainType:"singleAxis",index:this.get("singleAxisIndex"),id:this.get("singleAxisId")})[0],s=o.get("type");i=[{name:"time",type:"category"===s?"ordinal":"time"===s?"time":"float"},{name:"value",type:"float"},{name:"name",type:"ordinal"}];for(var l=a.filter(t.data,function(t){return void 0!==t[2]}),u=this.fixData(l||[]),c=[],d=this.nameMap={},f=0,p=0;p<u.length;++p)c.push(u[p][h]),d[u[p][h]]||(d[u[p][h]]=f++);n(i,u);var g=new r(i,this);return g.initData(u,c),g},coordDimToDataDim:function(t){return["time"]},getLayerSeries:function(){function t(t,i){return e.get("time",t)-e.get("time",i)}for(var e=this.getData(),i=e.count(),n=[],o=0;o<i;++o)n[o]=o;for(var r=u().key(function(t){return e.get("name",t)}).entries(n),s=a.map(r,function(t){return{name:t.key,indices:t.values}}),l=0;l<s.length;++l)s[l].indices.sort(t);return s},getAxisTooltipDataIndex:function(t,e,i){a.isArray(t)||(t=t?[t]:[]);var n=this.getData();e="horizontal"===i.orient?e[0]:e[1];for(var 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=Math.abs(n.get(t[0],o[l].indices[d])-e);f<=u&&(u=f,h=o[l].indices[d])}r.push(h)}return r},formatTooltip:function(t){var e=this.getData(),i=t.length,n=e.get("time",t[0]),o=this.coordinateSystem,r=o.getAxis();"time"===r.scale.type&&(n=s.formatTime("yyyy-MM-dd",n));for(var a=l(n)+"<br />",u=0;u<i;++u){var h=e.get("name",t[u]),c=e.get("value",t[u]);(isNaN(c)||null==c)&&(c="-"),a+=l(h+" : "+c)+"<br />"}return a},defaultOption:{zlevel:0,z:2,coordinateSystem:"singleAxis",boundaryGap:["10%","10%"],singleAxisIndex:0,animationEasing:"linear",label:{normal:{margin:4,textAlign:"right",show:!0,position:"left",textStyle:{color:"#000",fontSize:11}},emphasis:{show:!0}}}});t.exports=c},function(t,e,i){(function(e){function n(t,e,i){var n=new r.Rect({shape:{x:t.x-10,y:t.y-10,width:0,height:t.height+20}});return r.initProps(n,{shape:{width:t.width+20,height:t.height+20}},e,i),n}var o=i(82),r=i(3),a=i(1),s=i(43);t.exports=i(2).extendChartView({type:"themeRiver",init:function(){this._layers=[]},render:function(t,e,i){function l(t){return t.name}function u(e,i,s){var l=this._layers;if("remove"===e)return void d.remove(l[i]);for(var u,p=[],g=[],m=f[i].indices,v=0;v<m.length;v++){var x=h.getItemLayout(m[v]),_=x.x,b=x.y0,w=x.y;p.push([_,b]),g.push([_,b+w]),u=c.getItemVisual(m[v],"color")}var S,M,I=h.getItemLayout(m[0]),T=h.getItemModel(m[v-1]),A=T.getModel("label.normal"),L=A.get("margin");if("add"===e){var C=y[i]=new r.Group;S=new o.Polygon({shape:{points:p,stackedOnPoints:g,smooth:.4,stackedOnSmooth:.4,smoothConstraint:!1},z2:0}),M=new r.Text({style:{x:I.x-L,y:I.y0+I.y/2}}),C.add(S),C.add(M),d.add(C),S.setClipPath(n(S.getBoundingRect(),t,function(){S.removeClipPath()}))}else{var C=l[s];S=C.childAt(0),M=C.childAt(1),d.add(C),y[i]=C,r.updateProps(S,{shape:{points:p,stackedOnPoints:g}},t),r.updateProps(M,{style:{x:I.x-L,y:I.y0+I.y/2}},t)}var D=T.getModel("itemStyle.emphasis"),P=T.getModel("itemStyle.normal"),k=A.getModel("textStyle");M.setStyle({text:A.get("show")?t.getFormattedLabel(m[v-1],"normal")||h.getName(m[v-1]):"",
-textFont:k.getFont(),textAlign:A.get("textAlign"),textVerticalAlign:"middle"}),S.setStyle(a.extend({fill:u},P.getItemStyle(["color"]))),r.setHoverStyle(S,D.getItemStyle())}var h=t.getData(),c=t.getRawData();if(h.count()){var d=this.group,f=t.getLayerSeries(),p=h.getLayout("layoutInfo"),g=p.rect,m=p.boundaryGap;d.attr("position",[0,g.y+m[0]]);var v=new s(this._layersSeries||[],f,l,l),y={};v.add(a.bind(a.curry(u,"add"),this)).update(a.bind(a.curry(u,"update"),this)).remove(a.bind(a.curry(u,"remove"),this)).execute(),this._layersSeries=f,this._layers=y}},dispose:function(){}})}).call(e,i(175))},function(t,e,i){function n(t,e,i){if(t.count())for(var n,a=e.coordinateSystem,s=e.getLayerSeries(),l=r.map(s,function(e){return r.map(e.indices,function(e){var i=a.dataToPoint(t.get("time",e));return i[1]=t.get("value",e),i})}),u=o(l),h=u.y0,c=i/u.max,d=s.length,f=s[0].indices.length,p=0;p<f;++p){n=h[p]*c,t.setItemLayout(s[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,t.setItemLayout(s[g].indices[p],{layerIndex:g,x:l[g][p][0],y0:n,y:l[g][p][1]*c})}}function o(t){for(var e,i=t.length,n=t[0].length,o=[],r=[],a=0,s={},l=0;l<n;++l){for(var u=0,e=0;u<i;++u)e+=t[u][l][1];e>a&&(a=e),o.push(e)}for(var h=0;h<n;++h)r[h]=(a-o[h])/2;a=0;for(var c=0;c<n;++c){var d=o[c]+r[c];d>a&&(a=d)}return s.y0=r,s.max=a,s}var r=i(1),a=i(4);t.exports=function(t,e){t.eachSeriesByType("themeRiver",function(t){var e=t.getData(),i=t.coordinateSystem,o={},r=i.getRect();o.rect=r;var s=t.get("boundaryGap"),l=i.getAxis();if(o.boundaryGap=s,"horizontal"===l.orient){s[0]=a.parsePercent(s[0],r.height),s[1]=a.parsePercent(s[1],r.height);var u=r.height-s[0]-s[1];n(e,t,u)}else{s[0]=a.parsePercent(s[0],r.width),s[1]=a.parsePercent(s[1],r.width);var h=r.width-s[0]-s[1];n(e,t,h)}e.setLayout("layoutInfo",o)})}},function(t,e){t.exports=function(t){t.eachSeriesByType("themeRiver",function(t){var e=t.getData(),i=t.getRawData(),n=t.get("color");e.each(function(o){var r=e.getName(o),a=n[(t.nameMap[r]-1)%n.length];i.setItemVisual(o,"color",a)})})}},function(t,e,i){var n=i(2);i(327),i(328),i(329),n.registerVisual(i(331)),n.registerLayout(i(330))},function(t,e,i){function n(t){this.group=new a.Group,t.add(this.group)}function o(t,e,i,n,o,r){var a=[[o?t:t-d,e],[t+i,e],[t+i,e+n],[o?t:t-d,e+n]];return!r&&a.splice(2,0,[t+i+d,e+n/2]),!o&&a.push([t,e+n/2]),a}function r(t,e,i){t.eventData={componentType:"series",componentSubType:"treemap",seriesIndex:e.componentIndex,seriesName:e.name,seriesType:"treemap",selfType:"breadcrumb",nodeData:{dataIndex:i&&i.dataIndex,name:i&&i.name},treePathInfo:i&&u.wrapTreePathInfo(i,e)}}var a=i(3),s=i(12),l=i(1),u=i(83),h=8,c=8,d=5;n.prototype={constructor:n,render:function(t,e,i,n){var o=t.getModel("breadcrumb"),r=this.group;if(r.removeAll(),o.get("show")&&i){var a=o.getModel("itemStyle.normal"),l=a.getModel("textStyle"),u={pos:{left:o.get("left"),right:o.get("right"),top:o.get("top"),bottom:o.get("bottom")},box:{width:e.getWidth(),height:e.getHeight()},emptyItemWidth:o.get("emptyItemWidth"),totalWidth:0,renderList:[]};this._prepare(i,u,l),this._renderContent(t,u,a,l,n),s.positionElement(r,u.pos,u.box)}},_prepare:function(t,e,i){for(var n=t;n;n=n.parentNode){var o=n.getModel().get("name"),r=i.getTextRect(o),a=Math.max(r.width+2*h,e.emptyItemWidth);e.totalWidth+=a+c,e.renderList.push({node:n,text:o,width:a})}},_renderContent:function(t,e,i,n,u){for(var h=0,d=e.emptyItemWidth,f=t.get("breadcrumb.height"),p=s.getAvailableSize(e.pos,e.box),g=e.totalWidth,m=e.renderList,v=m.length-1;v>=0;v--){var y=m[v],x=y.node,_=y.width,b=y.text;g>p.width&&(g-=_-d,_=d,b="");var w=new a.Polygon({shape:{points:o(h,0,_,f,v===m.length-1,0===v)},style:l.defaults(i.getItemStyle(),{lineJoin:"bevel",text:b,textFill:n.getTextColor(),textFont:n.getFont()}),z:10,onclick:l.curry(u,x)});this.group.add(w),r(w,t,x),h+=_+c}},remove:function(){this.group.removeAll()}},t.exports=n},function(t,e,i){function n(t,e){var i=0;s.each(t.children,function(t){n(t,e);var o=t.value;s.isArray(o)&&(o=o[0]),i+=o});var o=t.value;e>=0&&(s.isArray(o)?o=o[0]:t.value=new Array(e)),(null==o||isNaN(o))&&(o=i),o<0&&(o=0),e>=0?t.value[0]=o:t.value=o}function o(t,e){var i=e.get("color");if(i){t=t||[];var n;if(s.each(t,function(t){var e=new l(t),i=e.get("color");(e.get("itemStyle.normal.color")||i&&"none"!==i)&&(n=!0)}),!n){var o=t[0]||(t[0]={});o.color=i.slice()}return t}}var r=i(16),a=i(393),s=i(1),l=i(11),u=i(8),h=i(83),c=u.encodeHTML,d=u.addCommas;t.exports=r.extend({type:"series.treemap",layoutMode:"box",dependencies:["grid","polar"],_viewRoot:null,defaultOption:{progressive:0,hoverLayerThreshold:1/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:{normal:{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:{normal:{show:!0,position:"inside",textStyle:{color:"#fff",ellipsis:!0}}},itemStyle:{normal:{color:null,colorAlpha:null,colorSaturation:null,borderWidth:0,gapWidth:0,borderColor:"#fff",borderColorSaturation:null},emphasis:{}},visualDimension:0,visualMin:null,visualMax:null,color:[],colorAlpha:null,colorSaturation:null,colorMappingBy:"index",visibleMin:10,childrenVisibleMin:null,levels:[]},getInitialData:function(t,e){var i=t.data||[],r=t.name;null==r&&(r=t.name);var l={name:r,children:t.data},u=(i[0]||{}).value;n(l,s.isArray(u)?u.length:-1);var h=t.levels||[];return h=t.levels=o(h,e),a.createTree(l,this,h).data},optionUpdated:function(){this.resetViewRoot()},formatTooltip:function(t){var e=this.getData(),i=this.getRawValue(t),n=d(s.isArray(i)?i[0]:i),o=e.getName(t);return c(o+": "+n)},getDataParams:function(t){var e=r.prototype.getDataParams.apply(this,arguments),i=this.getData().tree.getNodeByDataIndex(t);return e.treePathInfo=h.wrapTreePathInfo(i,this),e},setLayoutInfo:function(t){this.layoutInfo=this.layoutInfo||{},s.extend(this.layoutInfo,t)},mapIdToIndex:function(t){var e=this._idIndexMap;e||(e=this._idIndexMap={},this._idIndexMapCount=0);var i=e[t];return null==i&&(e[t]=i=this._idIndexMapCount++),i},getViewRoot:function(){return this._viewRoot},resetViewRoot:function(t){t?this._viewRoot=t:t=this._viewRoot;var e=this.getData().tree.root;t&&(t===e||e.contains(t))||(this._viewRoot=e)}})},function(t,e,i){function n(){return{nodeGroup:[],background:[],content:[]}}function o(t,e,i,n,o,l,u,h,c,d){function f(e){E.dataIndex=u.dataIndex,E.seriesIndex=t.seriesIndex;var i=T.borderWidth,n=Math.max(A-2*i,0),o=Math.max(L-2*i,0);E.culling=!0,E.setShape({x:i,y:i,width:n,height:o});var r=u.getVisual("color",!0);p(E,function(){var t={fill:r},e=u.getModel("itemStyle.emphasis").getItemStyle();g(t,e,r,n,o),E.setStyle(t),s.setHoverStyle(E,e)}),e.add(E)}function p(t,e){C?!t.invisible&&l.push(t):(e(),t.__tmWillVisible||(t.invisible=!1))}function g(e,i,n,o,r){var a=u.getModel(),s=a.get("name");if(T.isLeafRoot){var l=t.get("drillDownIcon",!0);s=l?l+" "+s:s}y(s,e,a,_,n,o,r),y(s,i,a,b,n,o,r)}function y(t,e,i,n,o,r,a){var l=i.getModel(n),u=l.getModel("textStyle");s.setText(e,l,o),e.textAlign=u.get("align"),e.textVerticalAlign=u.get("baseline");var h=u.getTextRect(t);!l.getShallow("show")||h.height>a?e.text="":h.width>r?e.text=u.get("ellipsis")?u.truncateText(t,r,null,{minChar:2}):"":e.text=t}function x(t,n,a,s){var l=null!=P&&i[t][P],u=o[t];return l?(i[t][P]=null,w(u,l,t)):C||(l=new n({z:r(a,s)}),l.__tmDepth=a,l.__tmStorageName=t,I(u,l,t)),e[t][D]=l}function w(t,e,i){var n=t[D]={};n.old="nodeGroup"===i?e.position.slice():a.extend({},e.shape)}function I(t,e,i){var r=t[D]={},a=u.parentNode;if(a&&(!n||"drillDown"===n.direction)){var s=0,l=0,h=o.background[a.getRawIndex()];!n&&h&&h.old&&(s=h.old.width,l=h.old.height),r.old="nodeGroup"===i?[0,l]:{x:s,y:l,width:0,height:0}}r.fadein="nodeGroup"!==i}if(u){var T=u.getLayout();if(T&&T.isInView){var A=T.width,L=T.height,C=T.invisible,D=u.getRawIndex(),P=h&&h.getRawIndex(),k=x("nodeGroup",m);if(k){if(c.add(k),k.attr("position",[T.x||0,T.y||0]),k.__tmNodeWidth=A,k.__tmNodeHeight=L,T.isAboveViewRoot)return k;var O=x("background",v,d,S);O&&(O.setShape({x:0,y:0,width:A,height:L}),p(O,function(){O.setStyle("fill",u.getVisual("borderColor",!0))}),k.add(O));var z=u.viewChildren;if(!z||!z.length){var E=x("content",v,d,M);E&&f(k)}return k}}}}function r(t,e){var i=t*w+e;return(i-1)/i}var a=i(1),s=i(3),l=i(43),u=i(83),h=i(326),c=i(84),d=i(9),f=i(20),p=i(394),g=a.bind,m=s.Group,v=s.Rect,y=a.each,x=3,_=["label","normal"],b=["label","emphasis"],w=10,S=1,M=2;t.exports=i(2).extendChartView({type:"treemap",init:function(t,e){this._containerGroup,this._storage=n(),this._oldTree,this._breadcrumb,this._controller,this._state="ready",this._mayClick},render:function(t,e,i,n){var o=e.findComponents({mainType:"series",subType:"treemap",query:n});if(!(a.indexOf(o,t)<0)){this.seriesModel=t,this.api=i,this.ecModel=e;var r=u.retrieveTargetInfo(n,t),s=n&&n.type,l=t.layoutInfo,h=!this._oldTree,c=this._storage,d="treemapRootToNode"===s&&r&&c?{rootNodeGroup:c.nodeGroup[r.node.getRawIndex()],direction:n.direction}:null,f=this._giveContainerGroup(l),p=this._doRender(f,t,d);h||s&&"treemapZoomToNode"!==s&&"treemapRootToNode"!==s?p.renderFinally():this._doAnimation(f,p,t,d),this._resetController(i),this._renderBreadcrumb(t,i,r)}},_giveContainerGroup:function(t){var e=this._containerGroup;return e||(e=this._containerGroup=new m,this._initEvents(e),this.group.add(e)),e.attr("position",[t.x,t.y]),e},_doRender:function(t,e,i){function r(t,e,i,n,o){function s(t){return t.getId()}function u(a,s){var l=null!=a?t[a]:null,u=null!=s?e[s]:null,h=m(l,u,i,o);h&&r(l&&l.viewChildren||[],u&&u.viewChildren||[],h,n,o+1)}n?(e=t,y(t,function(t,e){!t.isRemoved()&&u(e,e)})):new l(e,t,s,s).add(u).update(u).remove(a.curry(u,null)).execute()}function s(t){var e=n();return t&&y(t,function(t,i){var n=e[i];y(t,function(t){t&&(n.push(t),t.__tmWillDelete=1)})}),e}function u(){y(v,function(t){y(t,function(t){t.parent&&t.parent.remove(t)})}),y(g,function(t){t.invisible=!0,t.dirty()})}var h=e.getData().tree,c=this._oldTree,d=n(),f=n(),p=this._storage,g=[],m=a.curry(o,e,f,p,i,d,g);r(h.root?[h.root]:[],c&&c.root?[c.root]:[],t,h===c||!c,0);var v=s(p);return this._oldTree=h,this._storage=f,{lastsForAnimation:d,willDeleteEls:v,renderFinally:u}},_doAnimation:function(t,e,i,n){if(i.get("animation")){var o=i.get("animationDurationUpdate"),r=i.get("animationEasing"),s=p.createWrap();y(e.willDeleteEls,function(t,e){y(t,function(t,i){if(!t.invisible){var a,l=t.parent;if(n&&"drillDown"===n.direction)a=l===n.rootNodeGroup?{shape:{x:0,y:0,width:l.__tmNodeWidth,height:l.__tmNodeHeight},style:{opacity:0}}:{style:{opacity:0}};else{var u=0,h=0;l.__tmWillDelete||(u=l.__tmNodeWidth/2,h=l.__tmNodeHeight/2),a="nodeGroup"===e?{position:[u,h],style:{opacity:0}}:{shape:{x:u,y:h,width:0,height:0},style:{opacity:0}}}a&&s.add(t,a,o,r)}})}),y(this._storage,function(t,i){y(t,function(t,n){var l=e.lastsForAnimation[i][n],u={};l&&("nodeGroup"===i?l.old&&(u.position=t.position.slice(),t.attr("position",l.old)):(l.old&&(u.shape=a.extend({},t.shape),t.setShape(l.old)),l.fadein?(t.setStyle("opacity",0),u.style={opacity:1}):1!==t.style.opacity&&(u.style={opacity:1})),s.add(t,u,o,r))})},this),this._state="animating",s.done(g(function(){this._state="ready",e.renderFinally()},this)).start()}},_resetController:function(t){var e=this._controller;e||(e=this._controller=new c(t.getZr()),e.enable(this.seriesModel.get("roam")),e.on("pan",g(this._onPan,this)),e.on("zoom",g(this._onZoom,this)));var i=new d(0,0,t.getWidth(),t.getHeight());e.setContainsPoint(function(t,e){return i.contain(t,e)})},_clearController:function(){var t=this._controller;t&&(t.dispose(),t=null)},_onPan:function(t,e){if(this._mayClick=!1,"animating"!==this._state&&(Math.abs(t)>x||Math.abs(e)>x)){var i=this.seriesModel.getData().tree.root;if(!i)return;var n=i.getLayout();if(!n)return;this.api.dispatchAction({type:"treemapMove",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:n.x+t,y:n.y+e,width:n.width,height:n.height}})}},_onZoom:function(t,e,i){if(this._mayClick=!1,"animating"!==this._state){var n=this.seriesModel.getData().tree.root;if(!n)return;var o=n.getLayout();if(!o)return;var r=new d(o.x,o.y,o.width,o.height),a=this.seriesModel.layoutInfo;e-=a.x,i-=a.y;var s=f.create();f.translate(s,s,[-e,-i]),f.scale(s,s,[t,t]),f.translate(s,s,[e,i]),r.applyTransform(s),this.api.dispatchAction({type:"treemapRender",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:r.x,y:r.y,width:r.width,height:r.height}})}},_initEvents:function(t){function e(t){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 o=n.hostTree.data.getItemModel(n.dataIndex),r=o.get("link",!0),a=o.get("target",!0)||"blank";r&&window.open(r,a)}}}}t.on("mousedown",function(t){"ready"===this._state&&(this._mayClick=!0)},this),t.on("mouseup",function(t){this._mayClick&&(this._mayClick=!1,"ready"===this._state&&e.call(this,t))},this)},_renderBreadcrumb:function(t,e,i){function n(e){"animating"!==this._state&&(u.aboveViewRoot(t.getViewRoot(),e)?this._rootToNode({node:e}):this._zoomToNode({node:e}))}i||(i=null!=t.get("leafDepth",!0)?{node:t.getViewRoot()}:this.findTarget(e.getWidth()/2,e.getHeight()/2),i||(i={node:t.getData().tree.root})),(this._breadcrumb||(this._breadcrumb=new h(this.group))).render(t,e,i.node,g(n,this))},remove:function(){this._clearController(),this._containerGroup&&this._containerGroup.removeAll(),this._storage=n(),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(t,e){var i,n=this.seriesModel.getViewRoot();return n.eachNode({attr:"viewChildren",order:"preorder"},function(n){var o=this._storage.background[n.getRawIndex()];if(o){var r=o.transformCoordToLocal(t,e),a=o.shape;if(!(a.x<=r[0]&&r[0]<=a.x+a.width&&a.y<=r[1]&&r[1]<=a.y+a.height))return!1;i={node:n,offsetX:r[0],offsetY:r[1]}}},this),i}})},function(t,e,i){for(var n=i(2),o=i(83),r=function(){},a=["treemapZoomToNode","treemapRender","treemapMove"],s=0;s<a.length;s++)n.registerAction({type:a[s],update:"updateView"},r);n.registerAction({type:"treemapRootToNode",update:"updateView"},function(t,e){function i(e,i){var n=o.retrieveTargetInfo(t,e);if(n){var r=e.getViewRoot();r&&(t.direction=o.aboveViewRoot(r,n.node)?"rollUp":"drillDown"),e.resetViewRoot(n.node)}}e.eachComponent({mainType:"series",subType:"treemap",query:t},i)})},function(t,e,i){function n(t,e,i){var n={mainType:"series",subType:"treemap",query:i};t.eachComponent(n,function(t){var n=e.getWidth(),r=e.getHeight(),a=t.option,s=m.getLayoutRect(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()}),l=a.size||[],u=b(w(s.width,l[0]),n),h=b(w(s.height,l[1]),r),g=i&&i.type,x=v.retrieveTargetInfo(i,t),_="treemapRender"===g||"treemapMove"===g?i.rootRect:null,M=t.getViewRoot(),I=v.getPathToRoot(M);if("treemapMove"!==g){var T="treemapZoomToNode"===g?c(t,x,M,u,h):_?[_.width,_.height]:[u,h],A=a.sort;A&&"asc"!==A&&"desc"!==A&&(A="desc");var L={squareRatio:a.squareRatio,sort:A,leafDepth:a.leafDepth};M.hostTree.clearLayouts();var C={x:0,y:0,width:T[0],height:T[1],area:T[0]*T[1]};M.setLayout(C),o(M,L,!1,0);var C=M.getLayout();S(I,function(t,e){var i=(I[e+1]||M).getValue();t.setLayout(p.extend({dataExtent:[i,i],borderWidth:0},C))})}var D=t.getData().tree.root;D.setLayout(d(s,_,x),!0),t.setLayoutInfo(s),f(D,new y((-s.x),(-s.y),n,r),I,M,0)})}function o(t,e,i,n){var a,s;if(!t.isRemoved()){var l=t.getLayout();a=l.width,s=l.height;var c=t.getModel("itemStyle.normal"),d=c.get("borderWidth"),f=c.get("gapWidth")/2,p=d-f,g=t.getModel();t.setLayout({borderWidth:d},!0),a=x(a-2*p,0),s=x(s-2*p,0);var m=a*s,v=r(t,g,m,e,i,n);if(v.length){var y={x:p,y:p,width:a,height:s},b=_(a,s),w=1/0,S=[];S.area=0;for(var M=0,I=v.length;M<I;){var T=v[M];S.push(T),S.area+=T.getLayout().area;var A=u(S,b,e.squareRatio);A<=w?(M++,w=A):(S.area-=S.pop().getLayout().area,h(S,b,y,f,!1),b=_(y.width,y.height),S.length=S.area=0,w=1/0)}if(S.length&&h(S,b,y,f,!0),!i){var L=g.get("childrenVisibleMin");null!=L&&m<L&&(i=!0)}for(var M=0,I=v.length;M<I;M++)o(v[M],e,i,n+1)}}}function r(t,e,i,n,o,r){var u=t.children||[],h=n.sort;"asc"!==h&&"desc"!==h&&(h=null);var c=null!=n.leafDepth&&n.leafDepth<=r;if(o&&!c)return t.viewChildren=[];u=p.filter(u,function(t){return!t.isRemoved()}),s(u,h);var d=l(e,u,h);if(0===d.sum)return t.viewChildren=[];if(d.sum=a(e,i,d.sum,h,u),0===d.sum)return t.viewChildren=[];for(var f=0,g=u.length;f<g;f++){var m=u[f].getValue()/d.sum*i;u[f].setLayout({area:m})}return c&&(u.length&&t.setLayout({isLeafRoot:!0},!0),u.length=0),t.viewChildren=u,t.setLayout({dataExtent:d.dataExtent},!0),u}function a(t,e,i,n,o){if(!n)return i;for(var r=t.get("visibleMin"),a=o.length,s=a,l=a-1;l>=0;l--){var u=o["asc"===n?a-l-1:l].getValue();u/i*e<r&&(s=l,i-=u)}return"asc"===n?o.splice(0,a-s):o.splice(s,a-s),i}function s(t,e){return e&&t.sort(function(t,i){return"asc"===e?t.getValue()-i.getValue():i.getValue()-t.getValue()}),t}function l(t,e,i){for(var n=0,o=0,r=e.length;o<r;o++)n+=e[o].getValue();var a,s=t.get("visualDimension");if(e&&e.length)if("value"===s&&i)a=[e[e.length-1].getValue(),e[0].getValue()],"asc"===i&&a.reverse();else{var a=[1/0,-(1/0)];S(e,function(t){var e=t.getValue(s);e<a[0]&&(a[0]=e),e>a[1]&&(a[1]=e)})}else a=[NaN,NaN];return{sum:n,dataExtent:a}}function u(t,e,i){for(var n,o=0,r=1/0,a=0,s=t.length;a<s;a++)n=t[a].getLayout().area,n&&(n<r&&(r=n),n>o&&(o=n));var l=t.area*t.area,u=e*e*i;return l?x(u*o/l,l/(u*r)):1/0}function h(t,e,i,n,o){var r=e===i.width?0:1,a=1-r,s=["x","y"],l=["width","height"],u=i[s[r]],h=e?t.area/e:0;(o||h>i[l[a]])&&(h=i[l[a]]);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[a]]=x(h-2*n,0),v=i[s[r]]+i[l[r]]-u,y=c===d-1||v<g?v:g,b=p[l[r]]=x(y-2*n,0);p[s[a]]=i[s[a]]+_(n,m/2),p[s[r]]=u+_(n,b/2),u+=y,f.setLayout(p,!0)}i[s[a]]+=h,i[l[a]]-=h}function c(t,e,i,n,o){var r=(e||{}).node,a=[n,o];if(!r||r===i)return a;for(var s,l=n*o,u=l*t.option.zoomToNodeRatio;s=r.parentNode;){for(var h=0,c=s.children,d=0,f=c.length;d<f;d++)h+=c[d].getValue();var p=r.getValue();if(0===p)return a;u*=h/p;var m=s.getModel("itemStyle.normal").get("borderWidth");isFinite(m)&&(u+=4*m*m+4*m*Math.pow(u,.5)),u>g.MAX_SAFE_INTEGER&&(u=g.MAX_SAFE_INTEGER),r=s}u<l&&(u=l);var v=Math.pow(u/l,.5);return[n*v,o*v]}function d(t,e,i){if(e)return{x:e.x,y:e.y};var n={x:0,y:0};if(!i)return n;var o=i.node,r=o.getLayout();if(!r)return n;for(var a=[r.width/2,r.height/2],s=o;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]}}function f(t,e,i,n,o){var r=t.getLayout(),a=i[o],s=a&&a===t;if(!(a&&!s||o===i.length&&t!==n)){t.setLayout({isInView:!0,invisible:!s&&!e.intersect(r),isAboveViewRoot:s},!0);var l=new y(e.x-r.x,e.y-r.y,e.width,e.height);S(t.viewChildren||[],function(t){f(t,l,i,n,o+1)})}}var p=i(1),g=i(4),m=i(12),v=i(83),y=i(9),v=i(83),x=Math.max,_=Math.min,b=g.parsePercent,w=p.retrieve,S=p.each;t.exports=n},function(t,e,i){function n(t,e,i,s,u,c){var d=t.getModel(),p=t.getLayout();if(p&&!p.invisible&&p.isInView){var m,v=t.getModel(g),y=i[t.depth],x=o(v,e,y,s),_=v.get("borderColor"),b=v.get("borderColorSaturation");null!=b&&(m=r(x,t),_=a(b,m)),t.setVisual("borderColor",_);var w=t.viewChildren;if(w&&w.length){var S=l(t,d,p,v,x,w);f.each(w,function(t,e){if(t.depth>=u.length||t===u[t.depth]){var o=h(d,x,t,e,S,c);n(t,o,i,s,u,c)}})}else m=r(x,t),t.setVisual("color",m)}}function o(t,e,i,n){var o=f.extend({},e);return f.each(["color","colorAlpha","colorSaturation"],function(r){var a=t.get(r,!0);null==a&&i&&(a=i[r]),null==a&&(a=e[r]),null==a&&(a=n.get(r)),null!=a&&(o[r]=a)}),o}function r(t){var e=s(t,"color");if(e){var i=s(t,"colorAlpha"),n=s(t,"colorSaturation");return n&&(e=d.modifyHSL(e,null,null,n)),i&&(e=d.modifyAlpha(e,i)),e}}function a(t,e){return null!=e?d.modifyHSL(e,null,null,t):null}function s(t,e){var i=t[e];if(null!=i&&"none"!==i)return i}function l(t,e,i,n,o,r){if(r&&r.length){var a=u(e,"color")||null!=o.color&&"none"!==o.color&&(u(e,"colorAlpha")||u(e,"colorSaturation"));if(a){var s=e.get("visualMin"),l=e.get("visualMax"),h=i.dataExtent.slice();null!=s&&s<h[0]&&(h[0]=s),null!=l&&l>h[1]&&(h[1]=l);var d=e.get("colorMappingBy"),f={type:a.name,dataExtent:h,visual:a.range};"color"!==f.type||"index"!==d&&"id"!==d?f.mappingMethod="linear":(f.mappingMethod="category",f.loop=!0);var p=new c(f);return p.__drColorMappingBy=d,p}}}function u(t,e){var i=t.get(e);return p(i)&&i.length?{name:e,range:i}:null}function h(t,e,i,n,o,r){var a=f.extend({},e);if(o){var s=o.type,l="color"===s&&o.__drColorMappingBy,u="index"===l?n:"id"===l?r.mapIdToIndex(i.getId()):i.getValue(t.get("visualDimension"));a[s]=o.mapValueToVisual(u)}return a}var c=i(73),d=i(19),f=i(1),p=f.isArray,g="itemStyle.normal";t.exports=function(t,e,i){var o={mainType:"series",subType:"treemap",query:i};t.eachComponent(o,function(t){var e=t.getData().tree,i=e.root,o=t.getModel(g);if(!i.isRemoved()){var r=f.map(e.levelModels,function(t){return t?t.get(g):null});n(i,{},r,o,t.getViewRoot().getAncestors(),t)}})}},function(t,e,i){"use strict";i(219),i(333)},function(t,e,i){"use strict";function n(t,e,i,n){var o=t.coordToPoint([e,n]),r=t.coordToPoint([i,n]);return{x1:o[0],y1:o[1],x2:r[0],y2:r[1]}}var o=i(1),r=i(3),a=i(11),s=["axisLine","axisLabel","axisTick","splitLine","splitArea"];i(2).extendComponentView({type:"angleAxis",render:function(t,e){if(this.group.removeAll(),t.get("show")){var i=e.getComponent("polar",t.get("polarIndex")),n=t.axis,r=i.coordinateSystem,a=r.getRadiusAxis().getExtent(),l=n.getTicksCoords();"category"!==n.type&&l.pop(),o.each(s,function(e){!t.get(e+".show")||n.isBlank()&&"axisLine"!==e||this["_"+e](t,r,l,a)},this)}},_axisLine:function(t,e,i,n){var o=t.getModel("axisLine.lineStyle"),a=new r.Circle({shape:{cx:e.cx,cy:e.cy,r:n[1]},style:o.getLineStyle(),z2:1,silent:!0});a.style.fill=null,this.group.add(a)},_axisTick:function(t,e,i,a){var s=t.getModel("axisTick"),l=(s.get("inside")?-1:1)*s.get("length"),u=o.map(i,function(t){return new r.Line({shape:n(e,a[1],a[1]+l,t)})});this.group.add(r.mergePath(u,{style:o.defaults(s.getModel("lineStyle").getLineStyle(),{stroke:t.get("axisLine.lineStyle.color")})}))},_axisLabel:function(t,e,i,n){for(var o=t.axis,s=t.get("data"),l=t.getModel("axisLabel"),u=l.getModel("textStyle"),h=t.getFormattedLabels(),c=l.get("margin"),d=o.getLabelsCoords(),f=0;f<i.length;f++){var p=n[1],g=e.coordToPoint([p+c,d[f]]),m=e.cx,v=e.cy,y=Math.abs(g[0]-m)/p<.3?"center":g[0]>m?"left":"right",x=Math.abs(g[1]-v)/p<.3?"middle":g[1]>v?"top":"bottom",_=u;s&&s[f]&&s[f].textStyle&&(_=new a(s[f].textStyle,u)),this.group.add(new r.Text({style:{x:g[0],y:g[1],fill:_.getTextColor()||t.get("axisLine.lineStyle.color"),text:h[f],textAlign:y,textVerticalAlign:x,textFont:_.getFont()},silent:!0}))}},_splitLine:function(t,e,i,a){var s=t.getModel("splitLine"),l=s.getModel("lineStyle"),u=l.get("color"),h=0;u=u instanceof Array?u:[u];for(var c=[],d=0;d<i.length;d++){var f=h++%u.length;c[f]=c[f]||[],c[f].push(new r.Line({shape:n(e,a[0],a[1],i[d])}))}for(var d=0;d<c.length;d++)this.group.add(r.mergePath(c[d],{style:o.defaults({stroke:u[d%u.length]},l.getLineStyle()),silent:!0,z:t.get("z")}))},_splitArea:function(t,e,i,n){var a=t.getModel("splitArea"),s=a.getModel("areaStyle"),l=s.get("color"),u=0;l=l instanceof Array?l:[l];for(var h=[],c=Math.PI/180,d=-i[0]*c,f=Math.min(n[0],n[1]),p=Math.max(n[0],n[1]),g=t.get("clockwise"),m=1;m<i.length;m++){var v=u++%l.length;h[v]=h[v]||[],h[v].push(new r.Sector({shape:{cx:e.cx,cy:e.cy,r0:f,r:p,startAngle:d,endAngle:-i[m]*c,clockwise:g},silent:!0})),d=-i[m]*c}for(var m=0;m<h.length;m++)this.group.add(r.mergePath(h[m],{style:o.defaults({fill:l[m%l.length]},s.getAreaStyle()),silent:!0}))}})},function(t,e,i){function n(t,e,i){return i&&"axisAreaSelect"===i.type&&e.findComponents({mainType:"parallelAxis",query:i})[0]===t}var o=i(1),r=i(51),a=i(115),s=i(3),l=["axisLine","axisLabel","axisTick","axisName"],u=i(2).extendComponentView({type:"parallelAxis",init:function(t,e){u.superApply(this,"init",arguments),(this._brushController=new a(e.getZr())).on("brush",o.bind(this._onBrush,this))},render:function(t,e,i,a){if(!n(t,e,a)){this.axisModel=t,this.api=i,this.group.removeAll();var u=this._axisGroup;if(this._axisGroup=new s.Group,this.group.add(this._axisGroup),t.get("show")){var h,c=e.getComponent("parallel",t.get("parallelIndex")).coordinateSystem,d=t.getAreaSelectStyle(),f=d.width,p=t.axis.dim,g=c.getAxisLayout(p),m=o.indexOf(c.dimensions,p),v=g.axisExpandWindow;v&&(m<=v[0]||m>=v[1])&&(h=!1);var y=o.extend({axisLabelShow:h,strokeContainThreshold:f},g),x=new r(t,y);o.each(l,x.add,x),this._axisGroup.add(x.getGroup()),this._refreshBrushController(y,d,t,f),s.groupTransition(u,this._axisGroup,t)}}},_refreshBrushController:function(t,e,i,n){var r=i.axis,a=o.map(i.activeIntervals,function(t){return{brushType:"lineX",panelId:"pl",range:[r.dataToCoord(t[0],!0),r.dataToCoord(t[1],!0)]}}),l=r.getExtent(),u=l[1]-l[0],h=Math.min(30,.1*Math.abs(u)),c=s.BoundingRect.create({x:l[0],y:-n/2,width:u,height:n});c.x-=h,c.width+=2*h,this._brushController.mount({enableGlobalPan:!0,rotation:t.rotation,position:t.position}).setPanels([{panelId:"pl",rect:c}]).enableBrush({brushType:"lineX",brushStyle:e,removeOnClick:!0}).updateCovers(a)},_onBrush:function(t,e){var i=this.axisModel,n=i.axis,r=o.map(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:r})},dispose:function(){this._brushController.dispose()}});t.exports=u},function(t,e,i){"use strict";function n(t,e,i){return{position:[t.cx,t.cy],rotation:i/180*Math.PI,labelDirection:-1,tickDirection:-1,nameDirection:1,labelRotation:e.getModel("axisLabel").get("rotate"),z2:1}}var o=i(1),r=i(3),a=i(51),s=["axisLine","axisLabel","axisTick","axisName"],l=["splitLine","splitArea"];i(2).extendComponentView({type:"radiusAxis",render:function(t,e){if(this.group.removeAll(),t.get("show")){var i=e.getComponent("polar",t.get("polarIndex")),r=i.coordinateSystem.getAngleAxis(),u=t.axis,h=i.coordinateSystem,c=u.getTicksCoords(),d=r.getExtent()[0],f=u.getExtent(),p=n(h,t,d),g=new a(t,p);o.each(s,g.add,g),this.group.add(g.getGroup()),o.each(l,function(e){t.get(e+".show")&&!u.isBlank()&&this["_"+e](t,h,d,f,c)},this)}},_splitLine:function(t,e,i,n,a){var s=t.getModel("splitLine"),l=s.getModel("lineStyle"),u=l.get("color"),h=0;u=u instanceof Array?u:[u];for(var c=[],d=0;d<a.length;d++){var f=h++%u.length;c[f]=c[f]||[],c[f].push(new r.Circle({shape:{cx:e.cx,cy:e.cy,r:a[d]},silent:!0}))}for(var d=0;d<c.length;d++)this.group.add(r.mergePath(c[d],{style:o.defaults({stroke:u[d%u.length],fill:null},l.getLineStyle()),silent:!0}))},_splitArea:function(t,e,i,n,a){var s=t.getModel("splitArea"),l=s.getModel("areaStyle"),u=l.get("color"),h=0;u=u instanceof Array?u:[u];for(var c=[],d=a[0],f=1;f<a.length;f++){var p=h++%u.length;c[p]=c[p]||[],c[p].push(new r.Sector({shape:{cx:e.cx,cy:e.cy,r0:d,r:a[f],startAngle:0,endAngle:2*Math.PI},silent:!0})),d=a[f]}for(var f=0;f<c.length;f++)this.group.add(r.mergePath(c[f],{style:o.defaults({fill:u[f%u.length]},l.getAreaStyle()),silent:!0}))}})},function(t,e,i){function n(t){var e=t.coordinateSystem,i=t.axis,n={},o=i.position,r=i.orient,a=e.getRect(),s=[a.x,a.x+a.width,a.y,a.y+a.height],l={horizontal:{top:s[2],bottom:s[3]},vertical:{left:s[0],right:s[1]}};n.position=["vertical"===r?l.vertical[o]:s[0],"horizontal"===r?l.horizontal[o]:s[3]];var u={horizontal:0,vertical:1};n.rotation=Math.PI/2*u[r];var h={top:-1,bottom:1,right:1,left:-1};n.labelDirection=n.tickDirection=n.nameDirection=h[o],t.getModel("axisTick").get("inside")&&(n.tickDirection=-n.tickDirection),t.getModel("axisLabel").get("inside")&&(n.labelDirection=-n.labelDirection);var c=t.getModel("axisLabel").get("rotate");return n.labelRotation="top"===o?-c:c,n.labelInterval=i.getLabelInterval(),n.z2=1,n}var o=i(51),r=i(1),a=i(3),s=o.getInterval,l=o.ifIgnoreOnTick,u=["axisLine","axisLabel","axisTick","axisName"],h="splitLine",c=i(2).extendComponentView({type:"singleAxis",render:function(t,e){var i=this.group;i.removeAll();var a=n(t),s=new o(t,a);r.each(u,s.add,s),i.add(s.getGroup()),t.get(h+".show")&&this["_"+h](t,a.labelInterval)},_splitLine:function(t,e){var i=t.axis;if(!i.isBlank()){var n=t.getModel("splitLine"),o=n.getModel("lineStyle"),r=o.get("width"),u=o.get("color"),h=s(n,e);u=u instanceof Array?u:[u];for(var c=t.coordinateSystem.getRect(),d=i.isHorizontal(),f=[],p=0,g=i.getTicksCoords(),m=[],v=[],y=0;y<g.length;++y)if(!l(i,y,h)){var x=i.toGlobalCoord(g[y]);d?(m[0]=x,m[1]=c.y,v[0]=x,v[1]=c.y+c.height):(m[0]=c.x,m[1]=x,v[0]=c.x+c.width,v[1]=x);var _=p++%u.length;f[_]=f[_]||[],f[_].push(new a.Line(a.subPixelOptimizeLine({shape:{x1:m[0],y1:m[1],x2:v[0],y2:v[1]},style:{lineWidth:r},silent:!0})))}for(var y=0;y<f.length;++y)this.group.add(a.mergePath(f[y],{style:{stroke:u[y%u.length],lineDash:o.getLineDash(r),lineWidth:r},silent:!0}))}}});t.exports=c},function(t,e,i){var n=i(2),o={type:"axisAreaSelect",event:"axisAreaSelected",update:"updateVisual"};n.registerAction(o,function(t,e){e.eachComponent({mainType:"parallelAxis",query:t},function(e){e.axis.model.setActiveIntervals(t.intervals)})}),n.registerAction("parallelAxisExpand",function(t,e){e.eachComponent({mainType:"parallel",query:t},function(e){e.setAxisExpand(t)})})},function(t,e,i){i(2).registerPreprocessor(i(342)),i(344),i(339),i(340),i(341),i(361)},function(t,e,i){var n=i(2),o=i(1),r=i(174),a=i(11),s=["#ddd"],l=n.extendComponentModel({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)",width:null},throttleType:"fixRate",throttleDelay:0,removeOnClick:!0},areas:[],brushType:null,brushOption:{},coordInfoList:[],optionUpdated:function(t,e){var i=this.option;!e&&r.replaceVisualOption(i,t,["inBrush","outOfBrush"]),i.inBrush=i.inBrush||{},i.outOfBrush=i.outOfBrush||{color:s}},setAreas:function(t){t&&(this.areas=o.map(t,function(t){return this._mergeBrushOption(t)},this))},setBrushOption:function(t){this.brushOption=this._mergeBrushOption(t),this.brushType=this.brushOption.brushType},_mergeBrushOption:function(t){var e=this.option;return o.merge({brushType:e.brushType,brushMode:e.brushMode,transformable:e.transformable,brushStyle:new a(e.brushStyle).getItemStyle(),removeOnClick:e.removeOnClick},t,!0)}});t.exports=l},function(t,e,i){function n(t,e,i,n){(!n||n.$from!==t.id)&&this._brushController.setPanels(s.makePanelOpts(t.coordInfoList)).enableBrush(t.brushOption).updateCovers(t.areas.slice())}var o=i(1),r=i(115),a=i(2),s=i(116);t.exports=a.extendComponentView({type:"brush",init:function(t,e){this.ecModel=t,this.api=e,this.model,(this._brushController=new r(e.getZr())).on("brush",o.bind(this._onBrush,this)).mount()},render:function(t){return this.model=t,n.apply(this,arguments)},updateView:n,updateLayout:n,updateVisual:n,dispose:function(){this._brushController.dispose()},_onBrush:function(t,e){var i=this.model.id;
-s.parseOutputRanges(t,this.model.coordInfoList,this.ecModel),(!e.isEnd||e.removeOnClick)&&this.api.dispatchAction({type:"brush",brushId:i,areas:o.clone(t),$from:i})}})},function(t,e,i){var n=i(2);n.registerAction({type:"brush",event:"brush",update:"updateView"},function(t,e){e.eachComponent({mainType:"brush",query:t},function(e){e.setAreas(t.areas)})}),n.registerAction({type:"brushSelect",event:"brushSelected",update:"none"},function(){})},function(t,e,i){function n(t){var e={};o.each(t,function(t){e[t]=1}),t.length=0,o.each(e,function(e,i){t.push(i)})}var o=i(1),r=["rect","polygon","keep","clear"];t.exports=function(t,e){var i=t&&t.brush;if(o.isArray(i)||(i=i?[i]:[]),i.length){var a=[];o.each(i,function(t){var e=t.hasOwnProperty("toolbox")?t.toolbox:[];e instanceof Array&&(a=a.concat(e))});var s=t&&t.toolbox;o.isArray(s)&&(s=s[0]),s||(s={feature:{}},t.toolbox=[s]);var l=s.feature||(s.feature={}),u=l.brush||(l.brush={}),h=u.type||(u.type=[]);h.push.apply(h,a),n(h),e&&!h.length&&h.push.apply(h,r)}}},function(t,e,i){function n(t){var e=["x","y"],i=["width","height"];return{point:function(e,i,n){var r=n.range,a=e[t];return o(a,r)},rect:function(n,r,a){var s=a.range;return o(n[e[t]],s)||o(n[e[t]]+n[i[t]],s)}}}function o(t,e){return e[0]<=t&&t<=e[1]}function r(t,e,i,n,o){for(var r=0,s=o[o.length-1];r<o.length;r++){var l=o[r];if(a(t,e,i,n,l[0],l[1],s[0],s[1]))return!0;s=l}}function a(t,e,i,n,o,r,a,u){var h=l(i-t,o-a,n-e,r-u);if(s(h))return!1;var c=l(o-t,o-a,r-e,r-u)/h;if(c<0||c>1)return!1;var d=l(i-t,o-t,n-e,r-e)/h;return!(d<0||d>1)}function s(t){return t<=1e-6&&t>=-1e-6}function l(t,e,i,n){return t*n-e*i}var u=i(247).contain,h=i(9),c={lineX:n(0),lineY:n(1),rect:{point:function(t,e,i){return i.boundingRect.contain(t[0],t[1])},rect:function(t,e,i){return i.boundingRect.intersect(t)}},polygon:{point:function(t,e,i){return i.boundingRect.contain(t[0],t[1])&&u(i.range,t[0],t[1])},rect:function(t,e,i){var n=i.range;if(n.length<=1)return!1;var o=t.x,a=t.y,s=t.width,l=t.height,c=n[0];return!!(u(n,o,a)||u(n,o+s,a)||u(n,o,a+l)||u(n,o+s,a+l)||h.create(t).contain(c[0],c[1])||r(o,a,o+s,a,n)||r(o,a,o,a+l,n)||r(o+s,a,o+s,a+l,n)||r(o,a+l,o+s,a+l,n))||void 0}}};t.exports=c},function(t,e,i){function n(t,e,i,n,r){if(r){var a=t.getZr();if(!a[x]){a[y]||(a[y]=o);var s=g.createOrUpdate(a,y,i,e);s(t,n)}}}function o(t,e){if(!t.isDisposed()){var i=t.getZr();i[x]=!0,t.dispatchAction({type:"brushSelect",batch:e}),i[x]=!1}}function r(t,e,i,n){for(var o=i.getItemLayout(n),r=0,a=e.length;r<a;r++){var s=e[r];if(t[s.brushType](o,s.selectors,s))return!0}}function a(t){var e=t.brushSelector;if(d.isString(e)){var i=[];return d.each(p,function(t,n){i[n]=t[e]}),i}if(d.isFunction(e)){var n={};return d.each(p,function(t,i){n[i]=e}),n}return e}function s(t,e){var i=t.option.seriesIndex;return null!=i&&"all"!==i&&(d.isArray(i)?d.indexOf(i,e)<0:e!==i)}function l(t){var e=t.selectors={};return d.each(p[t.brushType],function(i,n){e[n]=function(n){return i(n,e,t)}}),t}function u(t){return new f(t[0][0],t[1][0],t[0][1]-t[0][0],t[1][1]-t[1][0])}var h=i(2),c=i(174),d=i(1),f=i(9),p=i(343),g=i(47),m=i(116),v=["inBrush","outOfBrush"],y="__ecBrushSelect",x="__ecInBrushSelectEvent",_=h.PRIORITY.VISUAL.BRUSH;h.registerLayout(_,function(t,e,i){t.eachComponent({mainType:"brush"},function(e){i&&"takeGlobalCursor"===i.type&&e.setBrushOption("brush"===i.key?i.brushOption:{brushType:!1}),e.coordInfoList=m.makeCoordInfoList(e.option,t),m.parseInputRanges(e,t)})}),h.registerVisual(_,function(t,e,i){var o,u,h=[];t.eachComponent({mainType:"brush"},function(e,i){function n(t){return"all"===_||w[t]}function f(t){return!!t.length}function p(t,e){var i=t.coordinateSystem;I|=i.hasAxisbrushed(),n(e)&&i.eachActiveState(t.getData(),function(t,e){"active"===t&&(S[e]=1)})}function g(t,i,o){var l=a(t);if(l&&!s(e,i)&&(d.each(T,function(i){l[i.brushType]&&m.controlSeries(i,e,t)&&o.push(i),I|=f(o)}),n(i)&&f(o))){var u=t.getData();u.each(function(t){r(l,o,u,t)&&(S[t]=1)})}}var y={brushId:e.id,brushIndex:i,brushName:e.name,areas:d.clone(e.areas),selected:[]};h.push(y);var x=e.option,_=x.brushLink,w=[],S=[],M=[],I=0;i||(o=x.throttleType,u=x.throttleDelay);var T=d.map(e.areas,function(t){return l(d.defaults({boundingRect:b[t.brushType](t)},t))}),A=c.createVisualMappings(e.option,v,function(t){t.mappingMethod="fixed"});d.isArray(_)&&d.each(_,function(t){w[t]=1}),t.eachSeries(function(t,e){var i=M[e]=[];"parallel"===t.subType?p(t,e,i):g(t,e,i)}),t.eachSeries(function(t,e){var i={seriesId:t.id,seriesIndex:e,seriesName:t.name,dataIndex:[]};y.selected.push(i);var o=a(t),s=M[e],l=t.getData(),u=n(e)?function(t){return S[t]?(i.dataIndex.push(l.getRawIndex(t)),"inBrush"):"outOfBrush"}:function(t){return r(o,s,l,t)?(i.dataIndex.push(l.getRawIndex(t)),"inBrush"):"outOfBrush"};(n(e)?I:f(s))&&c.applyVisual(v,A,l,u)})}),n(e,o,u,h,i)});var b={lineX:d.noop,lineY:d.noop,rect:function(t){return u(t.range)},polygon:function(t){for(var e,i=t.range,n=0,o=i.length;n<o;n++){e=e||[[1/0,-(1/0)],[1/0,-(1/0)]];var r=i[n];r[0]<e[0][0]&&(e[0][0]=r[0]),r[0]>e[0][1]&&(e[0][1]=r[0]),r[1]<e[1][0]&&(e[1][0]=r[1]),r[1]>e[1][1]&&(e[1][1]=r[1])}return e&&u(e)}}},function(t,e,i){function n(t,e){e.update="updateView",o.registerAction(e,function(e,i){var n={};return i.eachComponent({mainType:"geo",query:e},function(i){i[t](e.name);var o=i.coordinateSystem;r.each(o.regions,function(t){n[t.name]=i.isSelected(t.name)||!1})}),{selected:n,name:e.name}})}i(370),i(173),i(346),i(223);var o=i(2),r=i(1);n("toggleSelected",{type:"geoToggleSelect",event:"geoselectchanged"}),n("select",{type:"geoSelect",event:"geoselected"}),n("unSelect",{type:"geoUnSelect",event:"geounselected"})},function(t,e,i){"use strict";var n=i(231);t.exports=i(2).extendComponentView({type:"geo",init:function(t,e){var i=new n(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 o=this._mapDraw;t.get("show")?o.draw(t,e,i,this,n):this._mapDraw.group.removeAll(),this.group.silent=t.get("silent")}},dispose:function(){this._mapDraw&&this._mapDraw.remove()}})},function(t,e,i){i(243),i(337),i(334)},function(t,e,i){"use strict";i(219),i(332),i(351),i(2).extendComponentView({type:"polar"})},function(t,e,i){i(386),i(387),i(350)},function(t,e,i){var n=i(51),o=i(1),r=i(3),a=["axisLine","axisLabel","axisTick","axisName"];t.exports=i(2).extendComponentView({type:"radar",render:function(t,e,i){var n=this.group;n.removeAll(),this._buildAxes(t),this._buildSplitLineAndArea(t)},_buildAxes:function(t){var e=t.coordinateSystem,i=e.getIndicatorAxes(),r=o.map(i,function(t){var i=new n(t.model,{position:[e.cx,e.cy],rotation:t.angle,labelDirection:-1,tickDirection:-1,nameDirection:1});return i});o.each(r,function(t){o.each(a,t.add,t),this.group.add(t.getGroup())},this)},_buildSplitLineAndArea:function(t){function e(t,e,i){var n=i%e.length;return t[n]=t[n]||[],n}var i=t.coordinateSystem,n=i.getIndicatorAxes();if(n.length){var a=t.get("shape"),s=t.getModel("splitLine"),l=t.getModel("splitArea"),u=s.getModel("lineStyle"),h=l.getModel("areaStyle"),c=s.get("show"),d=l.get("show"),f=u.get("color"),p=h.get("color");f=o.isArray(f)?f:[f],p=o.isArray(p)?p:[p];var g=[],m=[];if("circle"===a)for(var v=n[0].getTicksCoords(),y=i.cx,x=i.cy,_=0;_<v.length;_++){if(c){var b=e(g,f,_);g[b].push(new r.Circle({shape:{cx:y,cy:x,r:v[_]}}))}if(d&&_<v.length-1){var b=e(m,p,_);m[b].push(new r.Ring({shape:{cx:y,cy:x,r0:v[_],r:v[_+1]}}))}}else for(var w=-1,S=o.map(n,function(t,e){var n=t.getTicksCoords();return w=Math.max(n.length-1,w),o.map(n,function(t){return i.coordToPoint(t,e)})}),M=[],_=0;_<=w;_++){for(var I=[],T=0;T<n.length;T++)I.push(S[T][_]);if(I[0]&&I.push(I[0].slice()),c){var b=e(g,f,_);g[b].push(new r.Polyline({shape:{points:I}}))}if(d&&M){var b=e(m,p,_-1);m[b].push(new r.Polygon({shape:{points:I.concat(M)}}))}M=I.slice().reverse()}var A=u.getLineStyle(),L=h.getAreaStyle();o.each(m,function(t,e){this.group.add(r.mergePath(t,{style:o.defaults({stroke:"none",fill:p[e%p.length]},L),silent:!0}))},this),o.each(g,function(t,e){this.group.add(r.mergePath(t,{style:o.defaults({fill:"none",stroke:f[e%f.length]},A),silent:!0}))},this)}}})},function(t,e,i){i(219),i(335)},function(t,e,i){var n=i(2);n.registerPreprocessor(i(358)),i(360),i(359),i(353),i(354)},function(t,e,i){var n=i(356),o=i(1),r=i(6),a=n.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",normal:{show:!0,interval:"auto",rotate:0,textStyle:{color:"#304654"}},emphasis:{show:!0,textStyle:{color:"#c23531"}}},itemStyle:{normal:{color:"#304654",borderWidth:1},emphasis:{color:"#c23531"}},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",normal:{color:"#304654",borderColor:"#304654",borderWidth:1},emphasis:{color:"#c23531",borderColor:"#c23531",borderWidth:2}},data:[]}});o.mixin(a,r.dataFormatMixin),t.exports=a},function(t,e,i){function n(t,e){return u.getLayoutRect(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()},t.get("padding"))}function o(t,e,i,n){var o=l.makePath(t.get(e).replace(/^path:\/\//,""),s.clone(n||{}),new p(i[0],i[1],i[2],i[3]),"center");return o}function r(t,e,i,n,o,r){var a=e.get("color");if(o)o.setColor(a),i.add(o),r&&r.onUpdate(o);else{var l=t.get("symbol");o=d.createSymbol(l,-1,-1,2,2,a),o.setStyle("strokeNoScale",!0),i.add(o),r&&r.onCreate(o)}var u=e.getItemStyle(["color","symbol","symbolSize"]);o.setStyle(u),n=s.merge({rectHover:!0,z2:100},n,!0);var h=t.get("symbolSize");h=h instanceof Array?h.slice():[+h,+h],h[0]/=2,h[1]/=2,n.scale=h;var c=t.get("symbolOffset");if(c){var f=n.position=n.position||[0,0];f[0]+=m.parsePercent(c[0],h[0]),f[1]+=m.parsePercent(c[1],h[1])}var p=t.get("symbolRotate");return n.rotation=(p||0)*Math.PI/180||0,o.attr(n),o.updateTransform(),o}function a(t,e,i,n,o){if(!t.dragging){var r=n.getModel("checkpointStyle"),a=i.dataToCoord(n.getData().get(["value"],e));o||!r.get("animation",!0)?t.attr({position:[a,0]}):(t.stopAnimation(!0),t.animateTo({position:[a,0]},r.get("animationDuration",!0),r.get("animationEasing",!0)))}}var s=i(1),l=i(3),u=i(12),h=i(357),c=i(355),d=i(24),f=i(22),p=i(9),g=i(20),m=i(4),v=i(8),y=v.encodeHTML,x=s.bind,_=s.each,b=Math.PI;t.exports=h.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(t,e,i,n){if(this.model=t,this.api=i,this.ecModel=e,this.group.removeAll(),t.get("show",!0)){var o=this._layout(t,i),r=this._createGroup("mainGroup"),a=this._createGroup("labelGroup"),s=this._axis=this._createAxis(o,t);t.formatTooltip=function(t){return y(s.scale.getLabel(t))},_(["AxisLine","AxisTick","Control","CurrentPointer"],function(e){this["_render"+e](o,r,s,t)},this),this._renderAxisLabel(o,a,s,t),this._position(o,t)}this._doPlayStop()},remove:function(){this._clearTimer(),this.group.removeAll()},dispose:function(){this._clearTimer()},_layout:function(t,e){var i=t.get("label.normal.position"),o=t.get("orient"),r=n(t,e);null==i||"auto"===i?i="horizontal"===o?r.y+r.height/2<e.getHeight()/2?"-":"+":r.x+r.width/2<e.getWidth()/2?"+":"-":isNaN(i)&&(i={horizontal:{top:"-",bottom:"+"},vertical:{left:"-",right:"+"}}[o][i]);var a={horizontal:"center",vertical:i>=0||"+"===i?"left":"right"},s={horizontal:i>=0||"+"===i?"top":"bottom",vertical:"middle"},l={horizontal:0,vertical:b/2},u="vertical"===o?r.height:r.width,h=t.getModel("controlStyle"),c=h.get("show"),d=c?h.get("itemSize"):0,f=c?h.get("itemGap"):0,p=d+f,g=t.get("label.normal.rotate")||0;g=g*b/180;var m,v,y,x,_=h.get("position",!0),c=h.get("show",!0),w=c&&h.get("showPlayBtn",!0),S=c&&h.get("showPrevBtn",!0),M=c&&h.get("showNextBtn",!0),I=0,T=u;return"left"===_||"bottom"===_?(w&&(m=[0,0],I+=p),S&&(v=[I,0],I+=p),M&&(y=[T-d,0],T-=p)):(w&&(m=[T-d,0],T-=p),S&&(v=[0,0],I+=p),M&&(y=[T-d,0],T-=p)),x=[I,T],t.get("inverse")&&x.reverse(),{viewRect:r,mainLength:u,orient:o,rotation:l[o],labelRotation:g,labelPosOpt:i,labelAlign:a[o],labelBaseline:s[o],playPosition:m,prevBtnPosition:v,nextBtnPosition:y,axisExtent:x,controlSize:d,controlGap:f}},_position:function(t,e){function i(t){var e=t.position;t.origin=[c[0][0]-e[0],c[1][0]-e[1]]}function n(t){return[[t.x,t.x+t.width],[t.y,t.y+t.height]]}function o(t,e,i,n,o){t[n]+=i[n][o]-e[n][o]}var r=this._mainGroup,a=this._labelGroup,s=t.viewRect;if("vertical"===t.orient){var l=g.create(),u=s.x,h=s.y+s.height;g.translate(l,l,[-u,-h]),g.rotate(l,l,-b/2),g.translate(l,l,[u,h]),s=s.clone(),s.applyTransform(l)}var c=n(s),d=n(r.getBoundingRect()),f=n(a.getBoundingRect()),p=r.position,m=a.position;m[0]=p[0]=c[0][0];var v=t.labelPosOpt;if(isNaN(v)){var y="+"===v?0:1;o(p,d,c,1,y),o(m,f,c,1,1-y)}else{var y=v>=0?0:1;o(p,d,c,1,y),m[1]=p[1]+v}r.attr("position",p),a.attr("position",m),r.rotation=a.rotation=t.rotation,i(r),i(a)},_createAxis:function(t,e){var i=e.getData(),n=e.get("axisType"),o=f.createScaleByModel(e,n),r=i.getDataExtent("value");o.setExtent(r[0],r[1]),this._customizeScale(o,i),o.niceTicks();var a=new c("value",o,t.axisExtent,n);return a.model=e,a},_customizeScale:function(t,e){t.getTicks=function(){return e.mapArray(["value"],function(t){return t})},t.getTicksLabels=function(){return s.map(this.getTicks(),t.getLabel,t)}},_createGroup:function(t){var e=this["_"+t]=new l.Group;return this.group.add(e),e},_renderAxisLine:function(t,e,i,n){var o=i.getExtent();n.get("lineStyle.show")&&e.add(new l.Line({shape:{x1:o[0],y1:0,x2:o[1],y2:0},style:s.extend({lineCap:"round"},n.getModel("lineStyle").getLineStyle()),silent:!0,z2:1}))},_renderAxisTick:function(t,e,i,n){var o=n.getData(),a=i.scale.getTicks();_(a,function(t,a){var s=i.dataToCoord(t),u=o.getItemModel(a),h=u.getModel("itemStyle.normal"),c=u.getModel("itemStyle.emphasis"),d={position:[s,0],onclick:x(this._changeTimeline,this,a)},f=r(u,h,e,d);l.setHoverStyle(f,c.getItemStyle()),u.get("tooltip")?(f.dataIndex=a,f.dataModel=n):f.dataIndex=f.dataModel=null},this)},_renderAxisLabel:function(t,e,i,n){var o=n.getModel("label.normal");if(o.get("show")){var r=n.getData(),a=i.scale.getTicks(),s=f.getFormattedLabels(i,o.get("formatter")),u=i.getLabelInterval();_(a,function(n,o){if(!i.isLabelIgnored(o,u)){var a=r.getItemModel(o),h=a.getModel("label.normal.textStyle"),c=a.getModel("label.emphasis.textStyle"),d=i.dataToCoord(n),f=new l.Text({style:{text:s[o],textAlign:t.labelAlign,textVerticalAlign:t.labelBaseline,textFont:h.getFont(),fill:h.getTextColor()},position:[d,0],rotation:t.labelRotation-t.rotation,onclick:x(this._changeTimeline,this,o),silent:!1});e.add(f),l.setHoverStyle(f,c.getItemStyle())}},this)}},_renderControl:function(t,e,i,n){function r(t,i,r,d){if(t){var f={position:t,origin:[a/2,0],rotation:d?-s:0,rectHover:!0,style:u,onclick:r},p=o(n,i,c,f);e.add(p),l.setHoverStyle(p,h)}}var a=t.controlSize,s=t.rotation,u=n.getModel("controlStyle.normal").getItemStyle(),h=n.getModel("controlStyle.emphasis").getItemStyle(),c=[0,-a/2,a,a],d=n.getPlayState(),f=n.get("inverse",!0);r(t.nextBtnPosition,"controlStyle.nextIcon",x(this._changeTimeline,this,f?"-":"+")),r(t.prevBtnPosition,"controlStyle.prevIcon",x(this._changeTimeline,this,f?"+":"-")),r(t.playPosition,"controlStyle."+(d?"stopIcon":"playIcon"),x(this._handlePlayClick,this,!d),!0)},_renderCurrentPointer:function(t,e,i,n){var o=n.getData(),s=n.getCurrentIndex(),l=o.getItemModel(s).getModel("checkpointStyle"),u=this,h={onCreate:function(t){t.draggable=!0,t.drift=x(u._handlePointerDrag,u),t.ondragend=x(u._handlePointerDragend,u),a(t,s,i,n,!0)},onUpdate:function(t){a(t,s,i,n)}};this._currentPointer=r(l,l,this._mainGroup,{},this._currentPointer,h)},_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=this._axis,o=m.asc(n.getExtent().slice());i>o[1]&&(i=o[1]),i<o[0]&&(i=o[0]),this._currentPointer.position[0]=i,this._currentPointer.dirty();var r=this._findNearestTick(i),a=this.model;(e||r!==a.getCurrentIndex()&&a.get("realtime"))&&this._changeTimeline(r)},_doPlayStop:function(){function t(){var t=this.model;this._changeTimeline(t.getCurrentIndex()+(t.get("rewind",!0)?-1:1))}this._clearTimer(),this.model.getPlayState()&&(this._timer=setTimeout(x(t,this),this.model.get("playInterval")))},_toAxisCoord:function(t){var e=this._mainGroup.getLocalTransform();return l.applyTransform(t,e,!0)},_findNearestTick:function(t){var e,i=this.model.getData(),n=1/0,o=this._axis;return i.each(["value"],function(i,r){var a=o.dataToCoord(i),s=Math.abs(a-t);s<n&&(n=s,e=r)}),e},_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})}})},function(t,e,i){var n=i(1),o=i(42),r=i(22),a=function(t,e,i,n){o.call(this,t,e,i),this.type=n||"value",this._autoLabelInterval,this.model=null};a.prototype={constructor:a,getLabelInterval:function(){var t=this.model,e=t.getModel("label.normal"),i=e.get("interval");if(null!=i&&"auto"!=i)return i;var i=this._autoLabelInterval;return i||(i=this._autoLabelInterval=r.getAxisLabelInterval(n.map(this.scale.getTicks(),this.dataToCoord,this),r.getFormattedLabels(this,e.get("formatter")),e.getModel("textStyle").getFont(),"horizontal"===t.get("orient"))),i},isLabelIgnored:function(t){if("category"===this.type){var e=this.getLabelInterval();return"function"==typeof e&&!e(t,this.scale.getLabel(t))||t%(e+1)}}},n.inherits(a,o),t.exports=a},function(t,e,i){var n=i(13),o=i(14),r=i(1),a=i(6),s=n.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:{normal:{},emphasis:{}},label:{normal:{textStyle:{color:"#000"}},emphasis:{}},data:[]},init:function(t,e,i){this._data,this._names,this.mergeDefaultAndTheme(t,i),this._initData()},mergeOption:function(t){s.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:(t>=e&&(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,n=this._names=[];if("category"===i){var s=[];r.each(e,function(t,e){var i,o=a.getDataItemValue(t);r.isObject(t)?(i=r.clone(t),i.value=e):i=e,s.push(i),r.isString(o)||null!=o&&!isNaN(o)||(o=""),n.push(o+"")}),e=s}var l={category:"ordinal",time:"time"}[i]||"number",u=this._data=new o([{name:"value",type:l}],this);u.initData(e,n)},getData:function(){return this._data},getCategories:function(){if("category"===this.get("axisType"))return this._names.slice()}});t.exports=s},function(t,e,i){var n=i(59);t.exports=n.extend({type:"timeline"})},function(t,e,i){function n(t){var e=t.type,i={number:"value",time:"time"};if(i[e]&&(t.axisType=i[e],delete t.type),o(t),r(t,"controlPosition")){var n=t.controlStyle||(t.controlStyle={});r(n,"position")||(n.position=t.controlPosition),"none"!==n.position||r(n,"show")||(n.show=!1,delete n.position),delete t.controlPosition}a.each(t.data||[],function(t){a.isObject(t)&&!a.isArray(t)&&(!r(t,"value")&&r(t,"name")&&(t.value=t.name),o(t))})}function o(t){var e=t.itemStyle||(t.itemStyle={}),i=e.emphasis||(e.emphasis={}),n=t.label||t.label||{},o=n.normal||(n.normal={}),s={normal:1,emphasis:1};a.each(n,function(t,e){s[e]||r(o,e)||(o[e]=t)}),i.label&&!r(n,"emphasis")&&(n.emphasis=i.label,delete i.label)}function r(t,e){return t.hasOwnProperty(e)}var a=i(1);t.exports=function(t){var e=t&&t.timeline;a.isArray(e)||(e=e?[e]:[]),a.each(e,function(t){t&&n(t)})}},function(t,e,i){var n=i(2),o=i(1);n.registerAction({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"),o.defaults({currentIndex:i.option.currentIndex},t)}),n.registerAction({type:"timelinePlayChange",event:"timelinePlayChanged",update:"update"},function(t,e){var i=e.getComponent("timeline");i&&null!=t.playState&&i.setPlayState(t.playState)})},function(t,e,i){i(13).registerSubTypeDefaulter("timeline",function(){return"slider"})},function(t,e,i){"use strict";function n(t,e,i){this.model=t,this.ecModel=e,this.api=i,this._brushType,this._brushMode}var o=i(26),r=i(1);n.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:{rect:"矩形选择",polygon:"圈选",lineX:"横向选择",lineY:"纵向选择",keep:"保持选择",clear:"清除选择"}};var a=n.prototype;a.render=a.updateView=a.updateLayout=function(t,e,i){var n,o,a;e.eachComponent({mainType:"brush"},function(t){n=t.brushType,o=t.brushOption.brushMode||"single",a|=t.areas.length}),this._brushType=n,this._brushMode=o,r.each(t.get("type",!0),function(e){t.setIconStatus(e,("keep"===e?"multiple"===o:"clear"===e?a:e===n)?"emphasis":"normal")})},a.getIcons=function(){var t=this.model,e=t.get("icon",!0),i={};return r.each(t.get("type",!0),function(t){e[t]&&(i[t]=e[t])}),i},a.onclick=function(t,e,i){var e=this.api,n=this._brushType,o=this._brushMode;"clear"===i?e.dispatchAction({type:"brush",areas:[]}):e.dispatchAction({type:"takeGlobalCursor",key:"brush",brushOption:{brushType:"keep"===i?n:n!==i&&i,brushMode:"keep"===i?"multiple"===o?"single":"multiple":o}})},o.register("brush",n),t.exports=n},function(t,e,i){i(367),i(368)},function(t,e,i){function n(t,e,i){if(i[0]===i[1])return i.slice();for(var n=200,o=(i[1]-i[0])/n,r=i[0],a=[],s=0;s<=n&&r<i[1];s++)a.push(r),r+=o;return a.push(i[1]),a}var o=i(234),r=i(1),a=i(4),s=[20,140],l=o.extend({type:"visualMap.continuous",defaultOption:{align:"auto",calculable:!1,range:null,realtime:!0,itemHeight:null,itemWidth:null,hoverLink:!0,hoverLinkDataSize:null,hoverLinkOnHandle:!0},optionUpdated:function(t,e){l.superApply(this,"optionUpdated",arguments),this.resetTargetSeries(),this.resetExtent(),this.resetVisual(function(t){t.mappingMethod="linear",t.dataExtent=this.getExtent()}),this._resetRange()},resetItemSize:function(){l.superApply(this,"resetItemSize",arguments);var t=this.itemSize;"horizontal"===this._orient&&t.reverse(),(null==t[0]||isNaN(t[0]))&&(t[0]=s[0]),(null==t[1]||isNaN(t[1]))&&(t[1]=s[1])},_resetRange:function(){var t=this.getExtent(),e=this.option.range;!e||e.auto?(t.auto=1,this.option.range=t):r.isArray(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(){o.prototype.completeVisualOption.apply(this,arguments),r.each(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=a.asc((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(t){var e=[];return this.eachTargetSeries(function(i){var n=[],o=i.getData();o.each(this.getDataDimension(o),function(e,i){t[0]<=e&&e<=t[1]&&n.push(i)},!0,this),e.push({seriesId:i.id,dataIndex:n})},this),e},getVisualMeta:function(t){function e(e,i){r.push({value:e,color:t(e,i)})}for(var i=n(this,"outOfRange",this.getExtent()),o=n(this,"inRange",this.option.range.slice()),r=[],a=0,s=0,l=o.length,u=i.length;s<u&&(!o.length||i[s]<=o[0]);s++)i[s]<o[a]&&e(i[s],"outOfRange");for(var h=1;a<l;a++,h=0)h&&r.length&&e(o[a],"outOfRange"),e(o[a],"inRange");for(var h=1;s<u;s++)(!o.length||o[o.length-1]<i[s])&&(h&&(r.length&&e(r[r.length-1].value,"outOfRange"),h=0),e(i[s],"outOfRange"));var c=r.length;return{stops:r,outerColors:[c?r[0].color:"transparent",c?r[c-1].color:"transparent"]}}});t.exports=l},function(t,e,i){function n(t,e,i,n){return new u.Polygon({shape:{points:t},draggable:!!i,cursor:e,drift:i,ondragend:n})}function o(t,e){return 0===t?[[0,0],[e,0],[e,-e]]:[[0,0],[e,0],[e,e]]}function r(t,e,i,n){return t?[[0,-y(e,x(i,0))],[b,0],[0,y(e,x(n-i,0))]]:[[0,0],[5,-5],[5,5]]}function a(t,e,i){var n=_/2,o=t.get("hoverLinkDataSize");return o&&(n=m(o,e,i,!0)/2),n}function s(t){return!t.get("realtime")&&t.get("hoverLinkOnHandle")}var l=i(235),u=i(3),h=i(1),c=i(4),d=i(85),f=i(91),p=i(236),g=i(6),m=c.linearMap,v=h.each,y=Math.min,x=Math.max,_=12,b=6,w=l.extend({type:"visualMap.continuous",init:function(){w.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 o=this.visualMapModel,r=o.get("textGap"),a=o.itemSize,s=this._shapes.barGroup,l=this._applyTransform([a[0]/2,0===i?-r:a[1]+r],s),h=this._applyTransform(0===i?"bottom":"top",s),c=this._orient,d=this.visualMapModel.textStyleModel;this.group.add(new u.Text({style:{x:l[0],y:l[1],textVerticalAlign:"horizontal"===c?"middle":h,textAlign:"horizontal"===c?h:"center",text:n,textFont:d.getFont(),fill:d.getTextColor()}}))}},_renderBar:function(t){var e=this.visualMapModel,i=this._shapes,o=e.itemSize,r=this._orient,a=this._useHandle,s=p.getItemAlign(e,this.api,o),l=i.barGroup=this._createBarGroup(s);l.add(i.outOfRange=n()),l.add(i.inRange=n(null,a?"move":null,h.bind(this._dragHandle,this,"all",!1),h.bind(this._dragHandle,this,"all",!0)));var u=e.textStyleModel.getTextRect("国"),c=x(u.width,u.height);a&&(i.handleThumbs=[],i.handleLabels=[],i.handleLabelPoints=[],this._createHandle(l,0,o,c,r,s),this._createHandle(l,1,o,c,r,s)),this._createIndicator(l,o,c,r),t.add(l)},_createHandle:function(t,e,i,r,a){var s=h.bind(this._dragHandle,this,e,!1),l=h.bind(this._dragHandle,this,e,!0),c=n(o(e,r),"move",s,l);c.position[0]=i[0],t.add(c);var d=this.visualMapModel.textStyleModel,f=new u.Text({draggable:!0,drift:s,ondragend:l,style:{x:0,y:0,text:"",textFont:d.getFont(),fill:d.getTextColor()}});this.group.add(f);var p=["horizontal"===a?r/2:1.5*r,"horizontal"===a?0===e?-(1.5*r):1.5*r:0===e?-r/2:r/2],g=this._shapes;g.handleThumbs[e]=c,g.handleLabelPoints[e]=p,g.handleLabels[e]=f},_createIndicator:function(t,e,i,o){var r=n([[0,0]],"move");r.position[0]=e[0],r.attr({invisible:!0,silent:!0}),t.add(r);var a=this.visualMapModel.textStyleModel,s=new u.Text({silent:!0,invisible:!0,style:{x:0,y:0,text:"",textFont:a.getFont(),fill:a.getTextColor()}});this.group.add(s);var l=["horizontal"===o?i/2:b+3,0],h=this._shapes;h.indicator=r,h.indicatorLabel=s,h.indicatorLabelPoint=l},_dragHandle:function(t,e,i,n){if(this._useHandle){if(this._dragging=!e,!e){var o=this._applyTransform([i,n],this._shapes.barGroup,!0);this._updateInterval(t,o[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():s(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=[m(e[0],i,n,!0),m(e[1],i,n,!0)]},_updateInterval:function(t,e){e=e||0;var i=this.visualMapModel,n=this._handleEnds;d(e,n,[0,i.itemSize[1]],"all"===t?"rigid":"push",t);var o=i.getExtent(),r=[0,i.itemSize[1]];this._dataInterval=[m(n[0],r,o,!0),m(n[1],r,o,!0)]},_updateView:function(t){var e=this.visualMapModel,i=e.getExtent(),n=this._shapes,o=[0,e.itemSize[1]],r=t?o:this._handleEnds,a=this._createBarVisual(this._dataInterval,i,r,"inRange"),s=this._createBarVisual(i,i,o,"outOfRange");
-n.inRange.setStyle({fill:a.barColor,opacity:a.opacity}).setShape("points",a.barPoints),n.outOfRange.setStyle({fill:s.barColor,opacity:s.opacity}).setShape("points",s.barPoints),this._updateHandle(r,a)},_createBarVisual:function(t,e,i,n){var o={forceState:n,convertOpacityToAlpha:!0},r=this._makeColorGradient(t,o),a=[this.getControllerVisual(t[0],"symbolSize",o),this.getControllerVisual(t[1],"symbolSize",o)],s=this._createBarPoints(i,a);return{barColor:new f(0,0,0,1,r),barPoints:s,handlesColor:[r[0].color,r[r.length-1].color]}},_makeColorGradient:function(t,e){var i=100,n=[],o=(t[1]-t[0])/i;n.push({color:this.getControllerVisual(t[0],"color",e),offset:0});for(var r=1;r<i;r++){var a=t[0]+o*r;if(a>t[1])break;n.push({color:this.getControllerVisual(a,"color",e),offset:r/i})}return n.push({color:this.getControllerVisual(t[1],"color",e),offset:1}),n},_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 u.Group("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(t,e){if(this._useHandle){var i=this._shapes,n=this.visualMapModel,o=i.handleThumbs,r=i.handleLabels;v([0,1],function(a){var s=o[a];s.setStyle("fill",e.handlesColor[a]),s.position[1]=t[a];var l=u.applyTransform(i.handleLabelPoints[a],u.getTransform(s,this.group));r[a].setStyle({x:l[0],y:l[1],text:n.formatValueText(this._dataInterval[a]),textVerticalAlign:"middle",textAlign:this._applyTransform("horizontal"===this._orient?0===a?"bottom":"top":"left",i.barGroup)})},this)}},_showIndicator:function(t,e,i,n){var o=this.visualMapModel,a=o.getExtent(),s=o.itemSize,l=[0,s[1]],h=m(t,a,l,!0),c=this._shapes,d=c.indicator;if(d){d.position[1]=h,d.attr("invisible",!1),d.setShape("points",r(!!i,n,h,s[1]));var f={convertOpacityToAlpha:!0},p=this.getControllerVisual(t,"color",f);d.setStyle("fill",p);var g=u.applyTransform(c.indicatorLabelPoint,u.getTransform(d,this.group)),v=c.indicatorLabel;v.attr("invisible",!1);var y=this._applyTransform("left",c.barGroup),x=this._orient;v.setStyle({text:(i?i:"")+o.formatValueText(e),textVerticalAlign:"horizontal"===x?y:"middle",textAlign:"horizontal"===x?"center":y,x:g[0],y:g[1]})}},_enableHoverLinkToSeries:function(){var t=this;this._shapes.barGroup.on("mousemove",function(e){if(t._hovering=!0,!t._dragging){var i=t.visualMapModel.itemSize,n=t._applyTransform([e.offsetX,e.offsetY],t._shapes.barGroup,!0,!0);n[1]=y(x(0,n[1]),i[1]),t._doHoverLinkToSeries(n[1],0<=n[0]&&n[0]<=i[0])}}).on("mouseout",function(){t._hovering=!1,!t._dragging&&t._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 o=[0,n[1]],r=i.getExtent();t=y(x(o[0],t),o[1]);var l=a(i,r,o),u=[t-l,t+l],h=m(t,o,r,!0),c=[m(u[0],o,r,!0),m(u[1],o,r,!0)];u[0]<o[0]&&(c[0]=-(1/0)),u[1]>o[1]&&(c[1]=1/0),e&&(c[0]===-(1/0)?this._showIndicator(h,c[1],"< ",l):c[1]===1/0?this._showIndicator(h,c[0],"> ",l):this._showIndicator(h,h,"≈ ",l));var d=this._hoverLinkDataIndices,f=[];(e||s(i))&&(f=this._hoverLinkDataIndices=i.findTargetDataIndices(c));var v=g.compressBatches(d,f);this._dispatchHighDown("downplay",p.convertDataIndex(v[0])),this._dispatchHighDown("highlight",p.convertDataIndex(v[1]))}},_hoverLinkFromSeriesMouseOver:function(t){var e=t.target;if(e&&null!=e.dataIndex){var i=e.dataModel||this.ecModel.getSeriesByIndex(e.seriesIndex),n=i.getData(e.dataType),o=n.getDimension(this.visualMapModel.getDataDimension(n)),r=n.get(o,e.dataIndex,!0);isNaN(r)||this._showIndicator(r,r)}},_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",p.convertDataIndex(t)),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 o=u.getTransform(e,n?null:this.group);return u[h.isArray(t)?"applyTransform":"transformDirection"](t,o,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()}});t.exports=w},function(t,e,i){function n(t,e){var i=t.inverse;("vertical"===t.orient?!i:i)&&e.reverse()}var o=i(234),r=i(1),a=i(73),s=i(246),l=i(4).reformIntervals,u=o.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){u.superApply(this,"optionUpdated",arguments),this._pieceList=[],this.resetTargetSeries(),this.resetExtent();var i=this._mode=this._determineMode();h[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=r.clone(n)):(t.dataExtent=this.getExtent(),t.mappingMethod="piecewise",t.pieceList=r.map(this._pieceList,function(t){var t=r.clone(t);return"inRange"!==e&&(t.visual=null),t}))})},completeVisualOption:function(){function t(t,e,i){return t&&t[e]&&(r.isObject(t[e])?t[e].hasOwnProperty(i):t[e]===i)}var e=this.option,i={},n=a.listVisualTypes(),l=this.isCategory();r.each(e.pieces,function(t){r.each(n,function(e){t.hasOwnProperty(e)&&(i[e]=1)})}),r.each(i,function(i,n){var o=0;r.each(this.stateList,function(i){o|=t(e,i,n)||t(e.target,i,n)},this),!o&&r.each(this.stateList,function(t){(e[t]||(e[t]={}))[n]=s.get(n,"inRange"===t?"active":"inactive",l)})},this),o.prototype.completeVisualOption.apply(this,arguments)},_resetSelected:function(t,e){var i=this.option,n=this._pieceList,o=(e?i:t).selected||{};if(i.selected=o,r.each(n,function(t,e){var i=this.getSelectedMapKey(t);o.hasOwnProperty(i)||(o[i]=!0)},this),"single"===i.selectedMode){var a=!1;r.each(n,function(t,e){var i=this.getSelectedMapKey(t);o[i]&&(a?o[i]=!1:a=!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&&t.pieces.length>0?"pieces":this.option.categories?"categories":"splitNumber"},setSelected:function(t){this.option.selected=r.clone(t)},getValueState:function(t){var e=a.findPieceIndex(t,this._pieceList);return null!=e&&this.option.selected[this.getSelectedMapKey(this._pieceList[e])]?"inRange":"outOfRange"},findTargetDataIndices:function(t){var e=[];return this.eachTargetSeries(function(i){var n=[],o=i.getData();o.each(this.getDataDimension(o),function(e,i){var o=a.findPieceIndex(e,this._pieceList);o===t&&n.push(i)},!0,this),e.push({seriesId:i.id,dataIndex:n})},this),e},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(t){function e(e,r){var a=o.getRepresentValue({interval:e});r||(r=o.getValueState(a));var s=t(a,r);e[0]===-(1/0)?n[0]=s:e[1]===1/0?n[1]=s:i.push({value:e[0],color:s},{value:e[1],color:s})}if(!this.isCategory()){var i=[],n=[],o=this,a=this._pieceList.slice();if(a.length){var s=a[0].interval[0];s!==-(1/0)&&a.unshift({interval:[-(1/0),s]}),s=a[a.length-1].interval[1],s!==1/0&&a.push({interval:[s,1/0]})}else a.push({interval:[-(1/0),1/0]});var l=-(1/0);return r.each(a,function(t){var i=t.interval;i&&(i[0]>l&&e([l,i[0]],"outOfRange"),e(i.slice()),l=i[1])},this),{stops:i,outerColors:n}}}}),h={splitNumber:function(){var t=this.option,e=this._pieceList,i=t.precision,n=this.getExtent(),o=t.splitNumber;o=Math.max(parseInt(o,10),1),t.splitNumber=o;for(var a=(n[1]-n[0])/o;+a.toFixed(i)!==a&&i<5;)i++;t.precision=i,a=+a.toFixed(i);var s=0;t.minOpen&&e.push({index:s++,interval:[-(1/0),n[0]],close:[0,0]});for(var u=n[0],h=s+o;s<h;u+=a){var c=s===o-1?n[1]:u+a;e.push({index:s++,interval:[u,c],close:[1,1]})}t.maxOpen&&e.push({index:s++,interval:[n[1],1/0],close:[0,0]}),l(e),r.each(e,function(t){t.text=this.formatValueText(t.interval)},this)},categories:function(){var t=this.option;r.each(t.categories,function(t){this._pieceList.push({text:this.formatValueText(t,!0),value:t})},this),n(t,this._pieceList)},pieces:function(){var t=this.option,e=this._pieceList;r.each(t.pieces,function(t,i){r.isObject(t)||(t={value:t});var n={text:"",index:i};if(null!=t.label&&(n.text=t.label),t.hasOwnProperty("value")){var o=n.value=t.value;n.interval=[o,o],n.close=[1,1]}else{for(var s=n.interval=[],l=n.close=[0,0],u=[1,0,1],h=[-(1/0),1/0],c=[],d=0;d<2;d++){for(var f=[["gte","gt","min"],["lte","lt","max"]][d],p=0;p<3&&null==s[d];p++)s[d]=t[f[p]],l[d]=u[p],c[d]=2===p;null==s[d]&&(s[d]=h[d])}c[0]&&s[1]===1/0&&(l[0]=0),c[1]&&s[0]===-(1/0)&&(l[1]=0),s[0]===s[1]&&l[0]&&l[1]&&(n.value=s[0])}n.visual=a.retrieveVisuals(t),e.push(n)},this),n(t,e),l(e),r.each(e,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)}};t.exports=u},function(t,e,i){var n=i(235),o=i(1),r=i(3),a=i(24),s=i(12),l=i(236),u=n.extend({type:"visualMap.piecewise",doRender:function(){function t(t){var a=t.piece,s=new r.Group;s.onclick=o.bind(this._onItemClick,this,a),this._enableHoverLink(s,t.indexInModelPieceList);var d=i.getRepresentValue(a);if(this._createItemSymbol(s,d,[0,0,c[0],c[1]]),p){var f=this.visualMapModel.getValueState(d);s.add(new r.Text({style:{x:"right"===h?-n:c[0]+n,y:c[1]/2,text:a.text,textVerticalAlign:"middle",textAlign:h,textFont:l,fill:u,opacity:"outOfRange"===f?.5:1}}))}e.add(s)}var e=this.group;e.removeAll();var i=this.visualMapModel,n=i.get("textGap"),a=i.textStyleModel,l=a.getFont(),u=a.getTextColor(),h=this._getItemAlign(),c=i.itemSize,d=this._getViewData(),f=d.endsText,p=o.retrieve(i.get("showLabel",!0),!f);f&&this._renderEndsText(e,f[0],c,p,h),o.each(d.viewPieceList,t,this),f&&this._renderEndsText(e,f[1],c,p,h),s.box(i.get("orient"),e,i.get("itemGap")),this.renderBackground(e),this.positionGroup(e)},_enableHoverLink:function(t,e){function i(t){var i=this.visualMapModel;i.option.hoverLink&&this.api.dispatchAction({type:t,batch:l.convertDataIndex(i.findTargetDataIndices(e))})}t.on("mouseover",o.bind(i,this,"highlight")).on("mouseout",o.bind(i,this,"downplay"))},_getItemAlign:function(){var t=this.visualMapModel,e=t.option;if("vertical"===e.orient)return l.getItemAlign(t,this.api,t.itemSize);var i=e.align;return i&&"auto"!==i||(i="left"),i},_renderEndsText:function(t,e,i,n,o){if(e){var a=new r.Group,s=this.visualMapModel.textStyleModel;a.add(new r.Text({style:{x:n?"right"===o?i[0]:0:i[0]/2,y:i[1]/2,textVerticalAlign:"middle",textAlign:n?o:"center",text:e,textFont:s.getFont(),fill:s.getTextColor()}})),t.add(a)}},_getViewData:function(){var t=this.visualMapModel,e=o.map(t.getPieceList(),function(t,e){return{piece:t,indexInModelPieceList:e}}),i=t.get("text"),n=t.get("orient"),r=t.get("inverse");return("horizontal"===n?r:!r)?e.reverse():i&&(i=i.slice().reverse()),{viewPieceList:e,endsText:i}},_createItemSymbol:function(t,e,i){t.add(a.createSymbol(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=o.clone(i.selected),r=e.getSelectedMapKey(t);"single"===i.selectedMode?(n[r]=!0,o.each(n,function(t,e){n[e]=e===r})):n[r]=!n[r],this.api.dispatchAction({type:"selectDataRange",from:this.uid,visualMapId:this.visualMapModel.id,selected:n})}});t.exports=u},function(t,e,i){i(2).registerPreprocessor(i(237)),i(238),i(239),i(363),i(364),i(240)},function(t,e,i){i(2).registerPreprocessor(i(237)),i(238),i(239),i(365),i(366),i(240)},function(t,e,i){function n(t,e,i,n,o){l.call(this,t),this.map=e,this._nameCoordMap={},this.loadGeoJson(i,n,o)}function o(t,e,i,n){var o=i.geoModel,r=i.seriesModel,a=o?o.coordinateSystem:r?r.coordinateSystem||(r.getReferringComponents("geo")[0]||{}).coordinateSystem:null;return a===this?a[t](n):null}var r=i(374),a=i(1),s=i(9),l=i(241),u=[i(372),i(373),i(371)];n.prototype={constructor:n,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},loadGeoJson:function(t,e,i){try{this.regions=t?r(t):[]}catch(n){throw"Invalid geoJson format\n"+n}e=e||{},i=i||{};for(var o=this.regions,s={},l=0;l<o.length;l++){var h=o[l].name;h=i[h]||h,o[l].name=h,s[h]=o[l],this.addGeoCoord(h,o[l].center);var c=e[h];c&&o[l].transformTo(c.left,c.top,c.width,c.height)}this._regionsMap=s,this._rect=null,a.each(u,function(t){t(this)},this)},transformTo:function(t,e,i,n){var o=this.getBoundingRect();o=o.clone(),o.y=-o.y-o.height;var r=this._viewTransform;r.transform=o.calculateTransform(new s(t,e,i,n)),r.decomposeTransform();var a=r.scale;a[1]=-a[1],r.updateTransform(),this._updateTransform()},getRegion:function(t){return this._regionsMap[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[t]=e},getGeoCoord:function(t){return this._nameCoordMap[t]},getBoundingRect:function(){if(this._rect)return this._rect;for(var t,e=this.regions,i=0;i<e.length;i++){var n=e[i].getBoundingRect();t=t||n.clone(),t.union(n)}return this._rect=t||new s(0,0,0,0)},dataToPoints:function(t){var e=[];return t.mapArray(["lng","lat"],function(t,i){return e[0]=t,e[1]=i,this.dataToPoint(e)},this)},dataToPoint:function(t){if("string"==typeof t&&(t=this.getGeoCoord(t)),t)return l.prototype.dataToPoint.call(this,t)},convertToPixel:a.curry(o,"dataToPoint"),convertFromPixel:a.curry(o,"pointToData")},a.mixin(n,l),t.exports=n},function(t,e,i){"use strict";var n=i(6),o=i(13),r=i(11),a=i(1),s=i(69),l=i(173),u=o.extend({type:"geo",coordinateSystem:null,layoutMode:"box",init:function(t){o.prototype.init.apply(this,arguments),n.defaultEmphasis(t.label,["position","show","textStyle","distance","formatter"])},optionUpdated:function(){var t=this.option,e=this;t.regions=l.getFilledRegions(t.regions,t.map),this._optionModelMap=a.reduce(t.regions||[],function(t,i){return i.name&&(t[i.name]=new r(i,e)),t},{}),this.updateSelectedMap(t.regions)},defaultOption:{zlevel:0,z:0,show:!0,left:"center",top:"center",aspectScale:.75,silent:!1,map:"",center:null,zoom:1,scaleLimit:null,label:{normal:{show:!1,textStyle:{color:"#000"}},emphasis:{show:!0,textStyle:{color:"rgb(100,0,0)"}}},itemStyle:{normal:{borderWidth:.5,borderColor:"#444",color:"#eee"},emphasis:{color:"rgba(255,215,0,0.8)"}},regions:[]},getRegionModel:function(t){return this._optionModelMap[t]},getFormattedLabel:function(t,e){var i=this.get("label."+e+".formatter"),n={name:t};if("function"==typeof i)return n.status=e,i(n);if("string"==typeof i){var o=n.seriesName;return i.replace("{a}",null!=o?o:"")}},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t}});a.mixin(u,s),t.exports=u},function(t,e,i){var n=i(1),o={Russia:[100,60],"United States of America":[-99,38]};t.exports=function(t){n.each(t.regions,function(t){var e=o[t.name];if(e){var i=t.center;i[0]=e[0],i[1]=e[1]}})}},function(t,e,i){for(var n=i(242),o=[126,25],r=[[[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]]],a=0;a<r.length;a++)for(var s=0;s<r[a].length;s++)r[a][s][0]/=10.5,r[a][s][1]/=-14,r[a][s][0]+=o[0],r[a][s][1]+=o[1];t.exports=function(t){"china"===t.map&&t.regions.push(new n("南海诸岛",r,o))}},function(t,e,i){var n=i(1),o={"南海诸岛":[32,80],"广东":[0,-10],"香港":[10,5],"澳门":[-10,10],"天津":[5,5]};t.exports=function(t){n.each(t.regions,function(t){var e=o[t.name];if(e){var i=t.center;i[0]+=e[0]/10.5,i[1]+=-e[1]/14}})}},function(t,e,i){function n(t){if(!t.UTF8Encoding)return t;for(var e=t.features,i=0;i<e.length;i++)for(var n=e[i],r=n.geometry,a=r.coordinates,s=r.encodeOffsets,l=0;l<a.length;l++){var u=a[l];if("Polygon"===r.type)a[l]=o(u,s[l]);else if("MultiPolygon"===r.type)for(var h=0;h<u.length;h++){var c=u[h];u[h]=o(c,s[l][h])}}return t.UTF8Encoding=!1,t}function o(t,e){for(var i=[],n=e[0],o=e[1],r=0;r<t.length;r+=2){var a=t.charCodeAt(r)-64,s=t.charCodeAt(r+1)-64;a=a>>1^-(1&a),s=s>>1^-(1&s),a+=n,s+=o,n=a,o=s,i.push([a/1024,s/1024])}return i}function r(t){for(var e=[],i=0;i<t.length;i++)for(var n=0;n<t[i].length;n++)e.push(t[i][n]);return e}var a=i(1),s=i(242);t.exports=function(t){return n(t),a.map(a.filter(t.features,function(t){return t.geometry&&t.properties}),function(t){var e=t.properties,i=t.geometry,n=i.coordinates;return"MultiPolygon"===i.type&&(n=r(n)),new s(e.name,n,e.cp)})}},function(t,e,i){function n(t,e){return e.type||(e.data?"category":"value")}var o=i(13),r=i(1),a=i(30),s=i(54),l=i(4),u=o.extend({type:"baseParallelAxis",axis:null,activeIntervals:[],getAreaSelectStyle:function(){return a([["fill","color"],["lineWidth","borderWidth"],["stroke","borderColor"],["width","width"],["opacity","opacity"]]).call(this.getModel("areaSelectStyle"))},setActiveIntervals:function(t){var e=this.activeIntervals=r.clone(t);if(e)for(var i=e.length-1;i>=0;i--)l.asc(e[i])},getActiveState:function(t){var e=this.activeIntervals;if(!e.length)return"normal";if(null==t)return"inactive";for(var i=0,n=e.length;i<n;i++)if(e[i][0]<=t&&t<=e[i][1])return"active";return"inactive"}}),h={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};r.merge(u.prototype,i(52)),s("parallel",u,n,h),t.exports=u},function(t,e,i){function n(t,e,i){this._axesMap={},this._axesLayout={},this.dimensions=t.dimensions,this._rect,this._model=t,this._init(t,e,i)}var o=i(12),r=i(22),a=i(1),s=i(377),l=i(3),u=i(20),h=a.each,c=Math.PI;n.prototype={type:"parallel",constructor:n,_init:function(t,e,i){var n=t.dimensions,o=t.parallelAxisIndex;h(n,function(t,i){var n=o[i],a=e.getComponent("parallelAxis",n),l=this._axesMap[t]=new s(t,r.createScaleByModel(a),[0,0],a.get("type"),n),u="category"===l.type;l.onBand=u&&a.get("boundaryGap"),l.inverse=a.get("inverse"),a.axis=l,l.model=a},this)},update:function(t,e){this._updateAxesFromSeries(this._model,t)},_updateAxesFromSeries:function(t,e){e.eachSeries(function(i){if(t.contains(i,e)){var n=i.getData();h(this.dimensions,function(t){var e=this._axesMap[t];e.scale.unionExtentFromData(n,t),r.niceScaleExtent(e,e.model)},this)}},this)},resize:function(t,e){this._rect=o.getLayoutRect(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()}),this._layoutAxes(t)},getRect:function(){return this._rect},_layoutAxes:function(t){var e=this._rect,i=t.get("layout"),n=this._axesMap,o=this.dimensions,r=[e.width,e.height],a="horizontal"===i?0:1,s=r[a],l=r[1-a],d=[0,l];h(n,function(t){var e=t.inverse?1:0;t.setExtent(d[e],d[1-e])});var f,p=t.get("axisExpandable"),g=t.get("axisExpandWidth"),m=t.get("axisExpandCenter"),v=t.get("axisExpandCount")||0;if(null!=m){var y=Math.max(0,Math.floor(m-(v-1)/2)),x=y+v-1;x>=o.length&&(x=o.length-1,y=Math.max(0,Math.floor(x-v+1))),f=[y,x]}var _=p&&f&&g?function(t,e,i){var n,o=f[1]-f[0],r=(e-g*o)/(i-1-o);return n=t<f[0]?(t-1)*r:t<=f[1]?f[0]*r+(t-f[0])*g:t===i-1?e:f[0]*r+o*g+(t-f[1])*r,{position:n,axisNameAvailableWidth:f[0]<t&&t<f[1]?g:r}}:function(t,e,i){var n=e/(i-1);return{position:n*t,axisNameAvailableWidth:n}};h(o,function(t,n){var r=_(n,s,o.length),a={horizontal:{x:r.position,y:l},vertical:{x:0,y:r.position}},h={horizontal:c/2,vertical:0},d=[a[i].x+e.x,a[i].y+e.y],p=h[i],g=u.create();u.rotate(g,g,p),u.translate(g,g,d),this._axesLayout[t]={position:d,rotation:p,transform:g,axisNameAvailableWidth:r.axisNameAvailableWidth,tickDirection:1,labelDirection:1,axisExpandWindow:f}},this)},getAxis:function(t){return this._axesMap[t]},dataToPoint:function(t,e){return this.axisCoordToPoint(this._axesMap[e].dataToCoord(t),e)},eachActiveState:function(t,e,i){for(var n=this.dimensions,o=this._axesMap,r=this.hasAxisbrushed(),a=0,s=t.count();a<s;a++){var l,u=t.getValues(n,a);if(r){l="active";for(var h=0,c=n.length;h<c;h++){var d=n[h],f=o[d].model.getActiveState(u[h],h);if("inactive"===f){l="inactive";break}}}else l="normal";e.call(i,l,a)}},hasAxisbrushed:function(){for(var t=this.dimensions,e=this._axesMap,i=!1,n=0,o=t.length;n<o;n++)"normal"!==e[t[n]].model.getActiveState()&&(i=!0);return i},axisCoordToPoint:function(t,e){var i=this._axesLayout[e];return l.applyTransform([t,0],i.transform)},getAxisLayout:function(t){return a.clone(this._axesLayout[t])},findClosestAxisDim:function(t){var e,i=1/0;return a.each(this._axesLayout,function(n,o){var r=l.applyTransform(t,n.transform,!0),a=this._axesMap[o].getExtent();if(!(r[0]<a[0]||r[0]>a[1])){var s=Math.abs(r[1]);s<i&&(i=s,e=o)}},this),e}},t.exports=n},function(t,e,i){var n=i(1),o=i(42),r=function(t,e,i,n,r){o.call(this,t,e,i),this.type=n||"value",this.axisIndex=r};r.prototype={constructor:r,model:null},n.inherits(r,o),t.exports=r},function(t,e,i){var n=i(1),o=i(13);i(375),o.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,parallelAxisDefault:null},init:function(){o.prototype.init.apply(this,arguments),this.mergeOption({})},mergeOption:function(t){var e=this.option;t&&n.merge(e,t,!0),this._initDimensions()},contains:function(t,e){var i=t.get("parallelIndex");return null!=i&&e.getComponent("parallel",i)===this},setAxisExpand:function(t){n.each(["axisExpandable","axisExpandCenter","axisExpandCount","axisExpandWidth"],function(e){t.hasOwnProperty(e)&&(this.option[e]=t[e])},this)},_initDimensions:function(){var t=this.dimensions=[],e=this.parallelAxisIndex=[],i=n.filter(this.dependentModels.parallelAxis,function(t){return t.get("parallelIndex")===this.componentIndex});n.each(i,function(i){t.push("dim"+i.get("dim")),e.push(i.componentIndex)})}})},function(t,e,i){function n(t){if(!t.parallel){var e=!1;r.each(t.series,function(t){t&&"parallel"===t.type&&(e=!0)}),e&&(t.parallel=[{}])}}function o(t){var e=a.normalizeToArray(t.parallelAxis);r.each(e,function(e){if(r.isObject(e)){var i=e.parallelIndex||0,n=a.normalizeToArray(t.parallel)[i];n&&n.parallelAxisDefault&&r.merge(e,n.parallelAxisDefault,!1)}})}var r=i(1),a=i(6);t.exports=function(t){n(t),o(t)}},function(t,e,i){"use strict";function n(t,e){e=e||[0,360],r.call(this,"angle",t,e),this.type="category"}var o=i(1),r=i(42);n.prototype={constructor:n,dataToAngle:r.prototype.dataToCoord,angleToData:r.prototype.coordToData},o.inherits(n,r),t.exports=n},function(t,e,i){"use strict";function n(t,e){return e.type||(e.data?"category":"value")}var o=i(1),r=i(13),a=i(54),s=r.extend({type:"polarAxis",axis:null,getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"polar",index:this.option.polarIndex,id:this.option.polarId})[0]}});o.merge(s.prototype,i(52));var l={angle:{startAngle:90,clockwise:!0,splitNumber:12,axisLabel:{rotate:!1}},radius:{splitNumber:5}};a("angle",s,n,l.angle),a("radius",s,n,l.radius)},function(t,e,i){"use strict";var n=i(384),o=i(380),r=function(t){this.name=t||"",this.cx=0,this.cy=0,this._radiusAxis=new n,this._angleAxis=new o};r.prototype={constructor:r,type:"polar",dimensions:["radius","angle"],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"]},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()},dataToPoints:function(t){return t.mapArray(this.dimensions,function(t,e){return this.dataToPoint([t,e])},this)},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(),o=n.getExtent(),r=Math.min(o[0],o[1]),a=Math.max(o[0],o[1]);n.inverse?r=a-360:a=r+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<r?1:-1;l<r||l>a;)l+=360*u;return[s,l]},coordToPoint:function(t){var e=t[0],i=t[1]/180*Math.PI,n=Math.cos(i)*e+this.cx,o=-Math.sin(i)*e+this.cy;return[n,o]}},t.exports=r},function(t,e,i){"use strict";i(381),i(2).extendComponentModel({type:"polar",dependencies:["polarAxis","angleAxis"],coordinateSystem:null,findAxisModel:function(t){var e,i=this.ecModel;return i.eachComponent(t,function(t){t.getCoordSysModel()===this&&(e=t)},this),e},defaultOption:{zlevel:0,z:0,center:["50%","50%"],radius:"80%"}})},function(t,e,i){"use strict";function n(t,e){r.call(this,"radius",t,e),this.type="category"}var o=i(1),r=i(42);n.prototype={constructor:n,dataToRadius:r.prototype.dataToCoord,radiusToData:r.prototype.coordToData},o.inherits(n,r),t.exports=n},function(t,e,i){function n(t,e,i){r.call(this,t,e,i),this.type="value",this.angle=0,this.name="",this.model}var o=i(1),r=i(42);o.inherits(n,r),t.exports=n},function(t,e,i){function n(t,e,i){this._model=t,this.dimensions=[],this._indicatorAxes=o.map(t.getIndicatorModels(),function(t,e){var i="indicator_"+e,n=new r(i,new a);return n.name=t.get("name"),n.model=t,t.axis=n,this.dimensions.push(i),n},this),this.resize(t,i),this.cx,this.cy,this.r,this.startAngle}var o=i(1),r=i(385),a=i(38),s=i(4),l=i(22);n.prototype.getIndicatorAxes=function(){return this._indicatorAxes},n.prototype.dataToPoint=function(t,e){var i=this._indicatorAxes[e];return this.coordToPoint(i.dataToCoord(t),e)},n.prototype.coordToPoint=function(t,e){var i=this._indicatorAxes[e],n=i.angle,o=this.cx+t*Math.cos(n),r=this.cy-t*Math.sin(n);return[o,r]},n.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 o,r=Math.atan2(-i,e),a=1/0,s=-1,l=0;l<this._indicatorAxes.length;l++){var u=this._indicatorAxes[l],h=Math.abs(r-u.angle);h<a&&(o=u,s=l,a=h)}return[s,+(o&&o.coodToData(n))]},n.prototype.resize=function(t,e){var i=t.get("center"),n=e.getWidth(),r=e.getHeight(),a=Math.min(n,r)/2;this.cx=s.parsePercent(i[0],n),this.cy=s.parsePercent(i[1],r),this.startAngle=t.get("startAngle")*Math.PI/180,this.r=s.parsePercent(t.get("radius"),a),o.each(this._indicatorAxes,function(t,e){t.setExtent(0,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)},n.prototype.update=function(t,e){function i(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}var n=this._indicatorAxes,r=this._model;o.each(n,function(t){t.scale.setExtent(1/0,-(1/0))}),t.eachSeriesByType("radar",function(e,i){if("radar"===e.get("coordinateSystem")&&t.getComponent("radar",e.get("radarIndex"))===r){var a=e.getData();o.each(n,function(t){t.scale.unionExtentFromData(a,t.dim)})}},this);var a=r.get("splitNumber");o.each(n,function(t,e){var n=l.getScaleExtent(t,t.model);l.niceScaleExtent(t,t.model);var o=t.model,r=t.scale,u=o.getMin(),h=o.getMax(),c=r.getInterval();if(null!=u&&null!=h)r.setInterval((h-u)/a);else if(null!=u){var d;do d=u+c*a,r.setExtent(+u,d),r.setInterval(c),c=i(c);while(d<n[1]&&isFinite(d)&&isFinite(n[1]))}else if(null!=h){var f;do f=h-c*a,r.setExtent(f,+h),r.setInterval(c),c=i(c);while(f>n[0]&&isFinite(f)&&isFinite(n[0]))}else{var p=r.getTicks().length-1;p>a&&(c=i(c));var g=Math.round((n[0]+n[1])/2/c)*c,m=Math.round(a/2);r.setExtent(s.round(g-m*c),s.round(g+(a-m)*c)),r.setInterval(c)}})},n.dimensions=[],n.create=function(t,e){var i=[];return t.eachComponent("radar",function(o){var r=new n(o,t,e);i.push(r),o.coordinateSystem=r}),t.eachSeriesByType("radar",function(t){"radar"===t.get("coordinateSystem")&&(t.coordinateSystem=i[t.get("radarIndex")||0])}),i},i(23).register("radar",n),t.exports=n},function(t,e,i){function n(t,e){return s.defaults({show:e},t)}var o=i(86),r=o.valueAxis,a=i(11),s=i(1),l=i(52),u=i(2).extendComponentModel({type:"radar",optionUpdated:function(){var t=this.get("boundaryGap"),e=this.get("splitNumber"),i=this.get("scale"),n=this.get("axisLine"),o=this.get("axisTick"),r=this.get("axisLabel"),u=this.get("name.textStyle"),h=this.get("name.show"),c=this.get("name.formatter"),d=this.get("nameGap"),f=this.get("triggerEvent"),p=s.map(this.get("indicator")||[],function(p){if(null!=p.max&&p.max>0&&!p.min?p.min=0:null!=p.min&&p.min<0&&!p.max&&(p.max=0),p=s.merge(s.clone(p),{boundaryGap:t,splitNumber:e,scale:i,axisLine:n,axisTick:o,axisLabel:r,name:p.text,nameLocation:"end",nameGap:d,nameTextStyle:u,triggerEvent:f},!1),h||(p.name=""),"string"==typeof c){var g=p.name;p.name=c.replace("{value}",null!=g?g:"")}else"function"==typeof c&&(p.name=c(p.name,p));var m=s.extend(new a(p,null,this.ecModel),l);return m.mainType="radar",m.componentIndex=this.componentIndex,m},this);this.getIndicatorModels=function(){return p}},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:s.merge({lineStyle:{color:"#bbb"}},r.axisLine),axisLabel:n(r.axisLabel,!1),axisTick:n(r.axisTick,!1),splitLine:n(r.splitLine,!0),splitArea:n(r.splitArea,!0),indicator:[]}});t.exports=u},function(t,e,i){function n(t,e){return e.type||(e.data?"category":"value")}var o=i(13),r=i(54),a=i(1),s=o.extend({type:"singleAxis",layoutMode:"box",axis:null,coordinateSystem:null,getCoordSysModel:function(){return this}}),l={left:"5%",top:"5%",right:"5%",bottom:"5%",type:"value",position:"bottom",orient:"horizontal",axisLine:{show:!0,lineStyle:{width:2,type:"solid"}},axisTick:{show:!0,length:6,lineStyle:{width:2}},axisLabel:{show:!0,interval:"auto"},splitLine:{show:!0,lineStyle:{type:"dashed",opacity:.2}}};a.merge(s.prototype,i(52)),r("single",s,n,l),t.exports=s},function(t,e,i){function n(t,e,i){this.dimension="single",this.dimensions=["single"],this._axis=null,this._rect,this._init(t,e,i),this._model=t}var o=i(390),r=i(22),a=i(12);n.prototype={type:"singleAxis",constructor:n,_init:function(t,e,i){var n=this.dimension,a=new o(n,r.createScaleByModel(t),[0,0],t.get("type"),t.get("position")),s="category"===a.type;a.onBand=s&&t.get("boundaryGap"),a.inverse=t.get("inverse"),a.orient=t.get("orient"),t.axis=a,a.model=t,this._axis=a;
-},update:function(t,e){t.eachSeries(function(t){if(t.coordinateSystem===this){var e=t.getData(),i=this.dimension;this._axis.scale.unionExtentFromData(e,t.coordDimToDataDim(i)),r.niceScaleExtent(this._axis,this._axis.model)}},this)},resize:function(t,e){this._rect=a.getLayoutRect({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],o=e.reverse?1:0;e.setExtent(n[o],n[1-o]),this._updateAxisTransform(e,i?t.x:t.y)},_updateAxisTransform:function(t,e){var i=t.getExtent(),n=i[0]+i[1],o=t.isHorizontal();t.toGlobalCoord=o?function(t){return t+e}:function(t){return n-t+e},t.toLocalCoord=o?function(t){return t-e}:function(t){return n-t+e}},getAxis:function(){return this._axis},getBaseAxis:function(){return this._axis},containPoint:function(t){var e=this.getRect(),i=this.getAxis(),n=i.orient;return"horizontal"===n?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=[],o="horizontal"===e.orient?0:1;return n[o]=e.toGlobalCoord(e.dataToCoord(+t)),n[1-o]=0===o?i.y+i.height/2:i.x+i.width/2,n}},t.exports=n},function(t,e,i){var n=i(1),o=i(42),r=i(22),a=function(t,e,i,n,r){o.call(this,t,e,i),this.type=n||"value",this.position=r||"bottom",this.orient=null,this._labelInterval=null};a.prototype={constructor:a,model:null,isHorizontal:function(){var t=this.position;return"top"===t||"bottom"===t},getLabelInterval:function(){var t=this._labelInterval;if(!t){var e=this.model,i=e.getModel("axisLabel"),o=i.get("interval");if("category"!==this.type||"auto"!==o)return t=this._labelInterval="auto"===o?0:o;t=this._labelInterval=r.getAxisLabelInterval(n.map(this.scale.getTicks(),this.dataToCoord,this),e.getFormattedLabels(),i.getModel("textStyle").getFont(),this.isHorizontal())}return t},toGlobalCoord:null,toLocalCoord:null},n.inherits(a,o),t.exports=a},function(t,e,i){function n(t,e){var i=[];return t.eachComponent("singleAxis",function(n,r){var a=new o(n,t,e);a.name="single_"+r,a.resize(n,e),n.coordinateSystem=a,i.push(a)}),t.eachSeries(function(e){if("singleAxis"===e.get("coordinateSystem")){var i=t.queryComponents({mainType:"singleAxis",index:e.get("singleAxisIndex"),id:e.get("singleAxisId")})[0];e.coordinateSystem=i&&i.coordinateSystem}}),i}var o=i(389);i(23).register("single",{create:n,dimensions:o.prototype.dimensions})},function(t,e,i){"use strict";function n(t,e){this.id=null==t?"":t,this.inEdges=[],this.outEdges=[],this.edges=[],this.hostGraph,this.dataIndex=null==e?-1:e}function o(t,e,i){this.node1=t,this.node2=e,this.dataIndex=null==i?-1:i}var r=i(1),a=function(t){this._directed=t||!1,this.nodes=[],this.edges=[],this._nodesMap={},this._edgesMap={},this.data,this.edgeData},s=a.prototype;s.type="graph",s.isDirected=function(){return this._directed},s.addNode=function(t,e){t=t||""+e;var i=this._nodesMap;if(!i[t]){var o=new n(t,e);return o.hostGraph=this,this.nodes.push(o),i[t]=o,o}},s.getNodeByIndex=function(t){var e=this.data.getRawIndex(t);return this.nodes[e]},s.getNodeById=function(t){return this._nodesMap[t]},s.addEdge=function(t,e,i){var r=this._nodesMap,a=this._edgesMap;if("number"==typeof t&&(t=this.nodes[t]),"number"==typeof e&&(e=this.nodes[e]),t instanceof n||(t=r[t]),e instanceof n||(e=r[e]),t&&e){var s=t.id+"-"+e.id;if(!a[s]){var l=new o(t,e,i);return l.hostGraph=this,this._directed&&(t.outEdges.push(l),e.inEdges.push(l)),t.edges.push(l),t!==e&&e.edges.push(l),this.edges.push(l),a[s]=l,l}}},s.getEdgeByIndex=function(t){var e=this.edgeData.getRawIndex(t);return this.edges[e]},s.getEdge=function(t,e){t instanceof n&&(t=t.id),e instanceof n&&(e=e.id);var i=this._edgesMap;return this._directed?i[t+"-"+e]:i[t+"-"+e]||i[e+"-"+t]},s.eachNode=function(t,e){for(var i=this.nodes,n=i.length,o=0;o<n;o++)i[o].dataIndex>=0&&t.call(e,i[o],o)},s.eachEdge=function(t,e){for(var i=this.edges,n=i.length,o=0;o<n;o++)i[o].dataIndex>=0&&i[o].node1.dataIndex>=0&&i[o].node2.dataIndex>=0&&t.call(e,i[o],o)},s.breadthFirstTraverse=function(t,e,i,o){if(e instanceof n||(e=this._nodesMap[e]),e){for(var r="out"===i?"outEdges":"in"===i?"inEdges":"edges",a=0;a<this.nodes.length;a++)this.nodes[a].__visited=!1;if(!t.call(o,e,null))for(var s=[e];s.length;)for(var l=s.shift(),u=l[r],a=0;a<u.length;a++){var h=u[a],c=h.node1===l?h.node2:h.node1;if(!c.__visited){if(t.call(c,c,l))return;s.push(c),c.__visited=!0}}}},s.update=function(){for(var t=this.data,e=this.edgeData,i=this.nodes,n=this.edges,o=0,r=i.length;o<r;o++)i[o].dataIndex=-1;for(var o=0,r=t.count();o<r;o++)i[t.getRawIndex(o)].dataIndex=o;e.filterSelf(function(t){var i=n[e.getRawIndex(t)];return i.node1.dataIndex>=0&&i.node2.dataIndex>=0});for(var o=0,r=n.length;o<r;o++)n[o].dataIndex=-1;for(var o=0,r=e.count();o<r;o++)n[e.getRawIndex(o)].dataIndex=o},s.clone=function(){for(var t=new a(this._directed),e=this.nodes,i=this.edges,n=0;n<e.length;n++)t.addNode(e[n].id,e[n].dataIndex);for(var n=0;n<i.length;n++){var o=i[n];t.addEdge(o.node1.id,o.node2.id,o.dataIndex)}return t},n.prototype={constructor:n,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)){var e=this.hostGraph,i=e.data.getItemModel(this.dataIndex);return i.getModel(t)}}},o.prototype.getModel=function(t){if(!(this.dataIndex<0)){var e=this.hostGraph,i=e.edgeData.getItemModel(this.dataIndex);return i.getModel(t)}};var l=function(t,e){return{getValue:function(i){var n=this[t][e];return n.get(n.getDimension(i||"value"),this.dataIndex)},setVisual:function(i,n){this.dataIndex>=0&&this[t][e].setItemVisual(this.dataIndex,i,n)},getVisual:function(i,n){return this[t][e].getItemVisual(this.dataIndex,i,n)},setLayout:function(i,n){this.dataIndex>=0&&this[t][e].setItemLayout(this.dataIndex,i,n)},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)}}};r.mixin(n,l("hostGraph","data")),r.mixin(o,l("hostGraph","edgeData")),a.Node=n,a.Edge=o,t.exports=a},function(t,e,i){function n(t,e){this.root,this.data,this._nodes=[],this.hostModel=t,this.levelModels=r.map(e||[],function(e){return new a(e,t,t.ecModel)})}function o(t,e){var i=e.children;t.parentNode!==e&&(i.push(t),t.parentNode=e)}var r=i(1),a=i(11),s=i(14),l=i(244),u=i(27),h=function(t,e){this.name=t||"",this.depth=0,this.height=0,this.parentNode=null,this.dataIndex=-1,this.children=[],this.viewChildren=[],this.hostTree=e};h.prototype={constructor:h,isRemoved:function(){return this.dataIndex<0},eachNode:function(t,e,i){"function"==typeof t&&(i=e,e=t,t=null),t=t||{},r.isString(t)&&(t={order:t});var n,o=t.order||"preorder",a=this[t.attr||"children"];"preorder"===o&&(n=e.call(i,this));for(var s=0;!n&&s<a.length;s++)a[s].eachNode(t,e,i);"postorder"===o&&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 o=i[e].getNodeById(t);if(o)return o}},contains:function(t){if(t===this)return!0;for(var e=0,i=this.children,n=i.length;e<n;e++){var o=i[e].contains(t);if(o)return o}},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){this.dataIndex>=0&&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=this.hostTree,i=e.data.getItemModel(this.dataIndex),n=this.getLevelModel();return i.getModel(t,(n||e.hostModel).getModel(t))}},getLevelModel:function(){return(this.hostTree.levelModels||[])[this.depth]},setVisual:function(t,e){this.dataIndex>=0&&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)}},n.prototype={constructor:n,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(var i=0,n=t.count();i<n;i++)e[t.getRawIndex(i)].dataIndex=i},clearLayouts:function(){this.data.clearItemLayouts()}},n.createTree=function(t,e,i){function r(t,e){c.push(t);var i=new h(t.name,a);e?o(i,e):a.root=i,a._nodes.push(i);var n=t.children;if(n)for(var s=0;s<n.length;s++)r(n[s],i)}var a=new n(e,i),c=[];r(t),a.root.updateDepthAndHeight(0);var d=u([{name:"value"}],c),f=new s(d,e);return f.initData(c),l({mainData:f,struct:a,structAttr:"tree"}),a.update(),a},t.exports=n},function(t,e,i){function n(){var t,e=[],i={};return{add:function(t,n,r,a,s){return o.isString(a)&&(s=a,a=0),!i[t.id]&&(i[t.id]=1,e.push({el:t,target:n,time:r,delay:a,easing:s}),!0)},done:function(e){return t=e,this},start:function(){function n(){o--,o||(e.length=0,i={},t&&t())}for(var o=e.length,r=0,a=e.length;r<a;r++){var s=e[r];s.el.animateTo(s.target,s.time,s.delay,s.easing,n)}return this}}}var o=i(1);t.exports={createWrap:n}}])});
\ No newline at end of file
+var o=i(70),a=i(9),r=i(1),s=i(154),l=i(157),u=i(158),h=i(165),c=!a.canvasSupported,d={canvas:i(156)},f={},p={};p.version="3.4.0",p.init=function(t,e){var i=new g(o(),t,e);return f[i.id]=i,i},p.dispose=function(t){if(t)t.dispose();else{for(var e in f)f.hasOwnProperty(e)&&f[e].dispose();f={}}return p},p.getInstance=function(t){return f[t]},p.registerPainter=function(t,e){d[t]=e};var g=function(t,e,i){i=i||{},this.dom=e,this.id=t;var n=this,o=new l,f=i.renderer;if(c){if(!d.vml)throw new Error("You need to require 'zrender/vml/vml' to support IE8");f="vml"}else f&&d[f]||(f="canvas");var p=new d[f](e,o,i);this.storage=o,this.painter=p;var g=a.node?null:new h(p.getViewportRoot());this.handler=new s(o,p,g,p.root),this.animation=new u({stage:{update:r.bind(this.flush,this)}}),this.animation.start(),this._needsRefresh;var m=o.delFromMap,v=o.addToMap;o.delFromMap=function(t){var e=o.get(t);m.call(o,t),e&&e.removeSelfFromZr(n)},o.addToMap=function(t){v.call(o,t),t.addSelfToZr(n)}};g.prototype={constructor:g,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(t,e),this._needsRefresh=!0},refreshImmediately:function(){this._needsRefresh=!1,this.painter.refresh(),this._needsRefresh=!1},refresh:function(){this._needsRefresh=!0},flush:function(){this._needsRefresh&&this.refreshImmediately(),this._needsRefreshHover&&this.refreshHoverImmediately()},addHover:function(t,e){this.painter.addHover&&(this.painter.addHover(t,e),this.refreshHover())},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)},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,n(this.id)}},t.exports=p},function(t,e,i){var n=i(2),o=i(1);t.exports=function(t,e){o.each(e,function(e){e.update="updateView",n.registerAction(e,function(i,n){var o={};return n.eachComponent({mainType:"series",subType:t,query:i},function(t){t[e.method]&&t[e.method](i.name);var n=t.getData();n.each(function(e){var i=n.getName(e);o[i]=t.isSelected(i)||!1})}),{name:i.name,selected:o}})})}},function(t,e,i){"use strict";var n=i(18),o=i(27);t.exports=n.extend({type:"series.__base_bar__",getInitialData:function(t,e){return o(t.data,this,e)},getMarkerPosition:function(t){var e=this.coordinateSystem;if(e){var i=e.dataToPoint(t,!0),n=this.getData(),o=n.getLayout("offset"),a=n.getLayout("size"),r=e.getBaseAxis().isHorizontal()?0:1;return i[r]+=o+a/2,i}return[NaN,NaN]},defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,barMinHeight:0,itemStyle:{normal:{},emphasis:{}}}})},function(t,e,i){function n(t,e,i,n,o){a.setText(t,e,i),t.text=n,"outside"===t.textPosition&&(t.textPosition=o)}var o=i(1),a=i(3),r={};r.setLabel=function(t,e,i,a,r,s,l){var u=i.getModel("label.normal"),h=i.getModel("label.emphasis");u.get("show")?n(t,u,a,o.retrieve(r.getFormattedLabel(s,"normal"),r.getRawValue(s)),l):t.text="",h.get("show")?n(e,h,a,o.retrieve(r.getFormattedLabel(s,"emphasis"),r.getRawValue(s)),l):e.text=""},t.exports=r},function(t,e,i){function n(t){return isNaN(t[0])||isNaN(t[1])}function o(t,e,i,o,a,r,g,m,v,y,x){for(var _=0,b=i,w=0;w<o;w++){var S=e[b];if(b>=a||b<0)break;if(n(S)){if(x){b+=r;continue}break}if(b===i)t[r>0?"moveTo":"lineTo"](S[0],S[1]),c(f,S);else if(v>0){var M=b+r,I=e[M];if(x)for(;I&&n(e[M]);)M+=r,I=e[M];var T=.5,A=e[_],I=e[M];if(!I||n(I))c(p,S);else{n(I)&&!x&&(I=S),s.sub(d,I,A);var L,C;if("x"===y||"y"===y){var D="x"===y?0:1;L=Math.abs(S[D]-A[D]),C=Math.abs(S[D]-I[D])}else L=s.dist(S,A),C=s.dist(S,I);T=C/(C+L),h(p,S,d,-v*(1-T))}l(f,f,m),u(f,f,g),l(p,p,m),u(p,p,g),t.bezierCurveTo(f[0],f[1],p[0],p[1],S[0],S[1]),h(f,S,d,v*T)}else t.lineTo(S[0],S[1]);_=b,b+=r}return w}function a(t,e){var i=[1/0,1/0],n=[-(1/0),-(1/0)];if(e)for(var o=0;o<t.length;o++){var a=t[o];a[0]<i[0]&&(i[0]=a[0]),a[1]<i[1]&&(i[1]=a[1]),a[0]>n[0]&&(n[0]=a[0]),a[1]>n[1]&&(n[1]=a[1])}return{min:e?i:n,max:e?n:i}}var r=i(8),s=i(6),l=s.min,u=s.max,h=s.scaleAndAdd,c=s.copy,d=[],f=[],p=[];t.exports={Polyline:r.extend({type:"ec-polyline",shape:{points:[],smooth:0,smoothConstraint:!0,smoothMonotone:null,connectNulls:!1},style:{fill:null,stroke:"#000"},buildPath:function(t,e){var i=e.points,r=0,s=i.length,l=a(i,e.smoothConstraint);if(e.connectNulls){for(;s>0&&n(i[s-1]);s--);for(;r<s&&n(i[r]);r++);}for(;r<s;)r+=o(t,i,r,s,s,1,l.min,l.max,e.smooth,e.smoothMonotone,e.connectNulls)+1}}),Polygon:r.extend({type:"ec-polygon",shape:{points:[],stackedOnPoints:[],smooth:0,stackedOnSmooth:0,smoothConstraint:!0,smoothMonotone:null,connectNulls:!1},buildPath:function(t,e){var i=e.points,r=e.stackedOnPoints,s=0,l=i.length,u=e.smoothMonotone,h=a(i,e.smoothConstraint),c=a(r,e.smoothConstraint);if(e.connectNulls){for(;l>0&&n(i[l-1]);l--);for(;s<l&&n(i[s]);s++);}for(;s<l;){var d=o(t,i,s,l,l,1,h.min,h.max,e.smooth,u,e.connectNulls);o(t,r,s+d-1,d,l,-1,c.min,c.max,e.stackedOnSmooth,u,e.connectNulls),s+=d+1,t.closePath()}}})}},function(t,e,i){var n=i(1),o={retrieveTargetInfo:function(t,e){if(t&&("treemapZoomToNode"===t.type||"treemapRootToNode"===t.type)){var i=e.getData().tree.root,n=t.targetNode;if(n&&i.contains(n))return{node:n};var o=t.targetNodeId;if(null!=o&&(n=i.getNodeById(o)))return{node:n}}},getPathToRoot:function(t){for(var e=[];t;)t=t.parentNode,t&&e.push(t);return e.reverse()},aboveViewRoot:function(t,e){var i=o.getPathToRoot(t);return n.indexOf(i,e)>=0},wrapTreePathInfo:function(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}};t.exports=o},function(t,e,i){"use strict";var n=i(3),o=i(1),a=i(2);i(56),i(119),a.extendComponentView({type:"grid",render:function(t,e){this.group.removeAll(),t.get("show")&&this.group.add(new n.Rect({shape:t.coordinateSystem.getRect(),style:o.defaults({fill:t.get("backgroundColor")},t.getItemStyle()),silent:!0,z2:-1}))}}),a.registerPreprocessor(function(t){t.xAxis&&t.yAxis&&!t.grid&&(t.grid={})})},function(t,e,i){function n(t){if(!t.target||!t.target.draggable){var e=t.offsetX,i=t.offsetY;this.containsPoint&&this.containsPoint(e,i)&&(this._x=e,this._y=i,this._dragging=!0)}}function o(t){if(this._dragging&&(d.stop(t.event),"pinch"!==t.gestureEvent)){if(f.isTaken(this._zr,"globalPan"))return;var e=t.offsetX,i=t.offsetY,n=this._x,o=this._y,a=e-n,r=i-o;this._x=e,this._y=i;var s=this.target;if(s){var l=s.position;l[0]+=a,l[1]+=r,s.dirty()}d.stop(t.event),this.trigger("pan",a,r,n,o,e,i)}}function a(t){this._dragging=!1}function r(t){if(0!==t.wheelDelta){var e=t.wheelDelta>0?1.1:1/1.1;l.call(this,t,e,t.offsetX,t.offsetY)}}function s(t){if(!f.isTaken(this._zr,"globalPan")){var e=t.pinchScale>1?1.1:1/1.1;l.call(this,t,e,t.pinchX,t.pinchY)}}function l(t,e,i,n){if(this.containsPoint&&this.containsPoint(i,n)){d.stop(t.event);var o=this.target,a=this.zoomLimit;if(o){var r=o.position,s=o.scale,l=this.zoom=this.zoom||1;if(l*=e,a){var u=a.min||0,h=a.max||1/0;l=Math.max(Math.min(h,l),u)}var c=l/this.zoom;this.zoom=l,r[0]-=(i-r[0])*(c-1),r[1]-=(n-r[1])*(c-1),s[0]*=c,s[1]*=c,o.dirty()}this.trigger("zoom",e,i,n)}}function u(t,e){this.target=e,this.containsPoint,this.zoomLimit,this.zoom,this._zr=t;var i=c.bind,l=i(n,this),u=i(o,this),d=i(a,this),f=i(r,this),p=i(s,this);h.call(this),this.setContainsPoint=function(t){this.containsPoint=t},this.enable=function(e){this.disable(),null==e&&(e=!0),e!==!0&&"move"!==e&&"pan"!==e||(t.on("mousedown",l),t.on("mousemove",u),t.on("mouseup",d)),e!==!0&&"scale"!==e&&"zoom"!==e||(t.on("mousewheel",f),t.on("pinch",p))},this.disable=function(){t.off("mousedown",l),t.off("mousemove",u),t.off("mouseup",d),t.off("mousewheel",f),t.off("pinch",p)},this.dispose=this.disable,this.isDragging=function(){return this._dragging},this.isPinching=function(){return this._pinching}}var h=i(23),c=i(1),d=i(20),f=i(130);c.mixin(u,h),t.exports=u},function(t,e){t.exports=function(t,e,i,n,o){function a(t,e,i){var n=e.length?e.slice():[e,e];return e[0]>e[1]&&n.reverse(),t<0&&n[0]+t<i[0]&&(t=i[0]-n[0]),t>0&&n[1]+t>i[1]&&(t=i[1]-n[1]),t}return t?("rigid"===n?(t=a(t,e,i),e[0]+=t,e[1]+=t):(t=a(t,e[o],i),e[o]+=t,"push"===n&&e[0]>e[1]&&(e[1-o]=e[o])),e):e}},function(t,e,i){var n=i(1),o={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,lineStyle:{color:"#333",width:1,type:"solid"}},axisTick:{show:!0,inside:!1,length:5,lineStyle:{width:1}},axisLabel:{show:!0,inside:!1,rotate:0,margin:8,textStyle:{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)"]}}},a=n.merge({boundaryGap:!0,splitLine:{show:!1},axisTick:{alignWithLabel:!1,interval:"auto"},axisLabel:{interval:"auto"}},o),r=n.merge({boundaryGap:[0,0],splitNumber:5},o),s=n.defaults({scale:!0,min:"dataMin",max:"dataMax"},r),l=n.defaults({logBase:10},r);l.scale=!0,t.exports={categoryAxis:a,valueAxis:r,timeAxis:s,logAxis:l}},function(t,e,i){"use strict";function n(t){return t.get("stack")||"__ec_stack_"+t.seriesIndex}function o(t){return t.dim+t.index}function a(t,e){var i={};s.each(t,function(t,e){var a=t.getData(),r=t.coordinateSystem,s=r.getBaseAxis(),l=s.getExtent(),h="category"===s.type?s.getBandWidth():Math.abs(l[1]-l[0])/a.count(),c=i[o(s)]||{bandWidth:h,remainedWidth:h,autoWidthCount:0,categoryGap:"20%",gap:"30%",stacks:{}},d=c.stacks;i[o(s)]=c;var f=n(t);d[f]||c.autoWidthCount++,d[f]=d[f]||{width:0,maxWidth:0};var p=u(t.get("barWidth"),h),g=u(t.get("barMaxWidth"),h),m=t.get("barGap"),v=t.get("barCategoryGap");p&&!d[f].width&&(p=Math.min(c.remainedWidth,p),d[f].width=p,c.remainedWidth-=p),g&&(d[f].maxWidth=g),null!=m&&(c.gap=m),null!=v&&(c.categoryGap=v)});var a={};return s.each(i,function(t,e){a[e]={};var i=t.stacks,n=t.bandWidth,o=u(t.categoryGap,n),r=u(t.gap,1),l=t.remainedWidth,h=t.autoWidthCount,c=(l-o)/(h+(h-1)*r);c=Math.max(c,0),s.each(i,function(t,e){var i=t.maxWidth;!t.width&&i&&i<c&&(i=Math.min(i,l),l-=i,t.width=i,h--)}),c=(l-o)/(h+(h-1)*r),c=Math.max(c,0);var d,f=0;s.each(i,function(t,e){t.width||(t.width=c),d=t,f+=t.width*(1+r)}),d&&(f-=d.width*r);var p=-f/2;s.each(i,function(t,i){a[e][i]=a[e][i]||{offset:p,width:t.width},p+=t.width*(1+r)})}),a}function r(t,e,i){var r=a(s.filter(e.getSeriesByType(t),function(t){return!e.isSeriesFiltered(t)&&t.coordinateSystem&&"cartesian2d"===t.coordinateSystem.type})),l={},u={};e.eachSeriesByType(t,function(t){var e=t.getData(),i=t.coordinateSystem,a=i.getBaseAxis(),s=n(t),h=r[o(a)][s],c=h.offset,d=h.width,f=i.getOtherAxis(a),p=t.get("barMinHeight")||0,g=a.onZero?f.toGlobalCoord(f.dataToCoord(0)):f.getGlobalExtent()[0],m=i.dataToPoints(e,!0);l[s]=l[s]||[],u[s]=u[s]||[],e.setLayout({offset:c,size:d}),e.each(f.dim,function(t,i){if(!isNaN(t)){l[s][i]||(l[s][i]={p:g,n:g},u[s][i]={p:g,n:g});var n,o,a,r,h=t>=0?"p":"n",v=m[i],y=l[s][i][h],x=u[s][i][h];f.isHorizontal()?(n=y,o=v[1]+c,a=v[0]-x,r=d,u[s][i][h]+=a,Math.abs(a)<p&&(a=(a<0?-1:1)*p),l[s][i][h]+=a):(n=v[0]+c,o=y,a=d,r=v[1]-x,u[s][i][h]+=r,Math.abs(r)<p&&(r=(r<=0?-1:1)*p),l[s][i][h]+=r),e.setItemLayout(i,{x:n,y:o,width:a,height:r})}},!0)},this)}var s=i(1),l=i(4),u=l.parsePercent;t.exports=r},function(t,e){t.exports={containStroke:function(t,e,i,n,o,a,r){if(0===o)return!1;var s=o,l=0,u=t;if(r>e+s&&r>n+s||r<e-s&&r<n-s||a>t+s&&a>i+s||a<t-s&&a<i-s)return!1;if(t===i)return Math.abs(a-t)<=s/2;l=(e-n)/(t-i),u=(t*n-i*e)/(t-i);var h=l*a-r+u,c=h*h/(l*l+1);return c<=s/2*s/2}}},function(t,e,i){var n=i(21);t.exports={containStroke:function(t,e,i,o,a,r,s,l,u){if(0===s)return!1;var h=s;if(u>e+h&&u>o+h&&u>r+h||u<e-h&&u<o-h&&u<r-h||l>t+h&&l>i+h&&l>a+h||l<t-h&&l<i-h&&l<a-h)return!1;var c=n.quadraticProjectPoint(t,e,i,o,a,r,l,u,null);return c<=h/2}}},function(t,e){t.exports=function(t,e,i,n,o,a){if(a>e&&a>n||a<e&&a<n)return 0;if(n===e)return 0;var r=n<e?1:-1,s=(a-e)/(n-e);1!==s&&0!==s||(r=n<e?.5:-.5);var l=s*(i-t)+t;return l>o?r:0}},function(t,e,i){"use strict";var n=i(1),o=i(41),a=function(t,e,i,n,a,r){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=r||!1,o.call(this,a)};a.prototype={constructor:a},n.inherits(a,o),t.exports=a},function(t,e,i){"use strict";function n(t){return t>s||t<-s}var o=i(19),a=i(6),r=o.identity,s=5e-5,l=function(t){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},u=l.prototype;u.transform=null,u.needLocalTransform=function(){return n(this.rotation)||n(this.position[0])||n(this.position[1])||n(this.scale[0]-1)||n(this.scale[1]-1)},u.updateTransform=function(){var t=this.parent,e=t&&t.transform,i=this.needLocalTransform(),n=this.transform;return i||e?(n=n||o.create(),i?this.getLocalTransform(n):r(n),e&&(i?o.mul(n,t.transform,n):o.copy(n,t.transform)),this.transform=n,this.invTransform=this.invTransform||o.create(),void o.invert(this.invTransform,n)):void(n&&r(n))},u.getLocalTransform=function(t){t=t||[],r(t);var e=this.origin,i=this.scale,n=this.rotation,a=this.position;return e&&(t[4]-=e[0],t[5]-=e[1]),o.scale(t,t,i),n&&o.rotate(t,t,n),e&&(t[4]+=e[0],t[5]+=e[1]),t[4]+=a[0],t[5]+=a[1],t},u.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)},u.restoreTransform=function(t){var e=(this.transform,t.dpr||1);t.setTransform(e,0,0,e,0,0)};var h=[];u.decomposeTransform=function(){if(this.transform){var t=this.parent,e=this.transform;t&&t.transform&&(o.mul(h,t.invTransform,e),e=h);var i=e[0]*e[0]+e[1]*e[1],a=e[2]*e[2]+e[3]*e[3],r=this.position,s=this.scale;n(i-1)&&(i=Math.sqrt(i)),n(a-1)&&(a=Math.sqrt(a)),e[0]<0&&(i=-i),e[3]<0&&(a=-a),r[0]=e[4],r[1]=e[5],s[0]=i,s[1]=a,this.rotation=Math.atan2(-e[1]/a,e[0]/i)}},u.getGlobalScale=function(){var t=this.transform;if(!t)return[1,1];var e=Math.sqrt(t[0]*t[0]+t[1]*t[1]),i=Math.sqrt(t[2]*t[2]+t[3]*t[3]);return t[0]<0&&(e=-e),t[3]<0&&(i=-i),[e,i]},u.transformCoordToLocal=function(t,e){var i=[t,e],n=this.invTransform;return n&&a.applyTransform(i,i,n),i},u.transformCoordToGlobal=function(t,e){var i=[t,e],n=this.transform;return n&&a.applyTransform(i,i,n),i},t.exports=l},function(t,e,i){"use strict";function n(t,e){o.each(a,function(e){this[e]=o.bind(t[e],t)},this),this.getCoordinateSystems=o.bind(e.getCoordinateSystems,e)}var o=i(1),a=["getDom","getZr","getWidth","getHeight","getDevicePixelRatio","dispatchAction","isDisposed","on","off","getDataURL","getConnectedDataURL","getModel","getOption","getViewOfComponentModel","getViewOfSeriesModel"];t.exports=n},function(t,e,i){var n=i(1);i(56),i(105),i(106);var o=i(97),a=i(2);a.registerLayout(n.curry(o,"bar")),a.registerVisual(function(t){t.eachSeriesByType("bar",function(t){var e=t.getData();e.setVisual("legendSymbol","roundRect")})}),i(38)},function(t,e,i){t.exports=i(89).extend({type:"series.bar",dependencies:["grid","polar"],brushSelector:"rect"})},function(t,e,i){"use strict";function n(t,e,i,n,o,a,r){var s=new u.Rect({shape:l.extend({},n)});if(a){var h=s.shape,c=o?"height":"width",d={};h[c]=0,d[c]=n[c],u[r?"updateProps":"initProps"](s,{shape:d},a,e)}return s}function o(t,e,i){i.style.text="",u.updateProps(i,{shape:{width:0}},e,t,function(){i.parent&&i.parent.remove(i)})}function a(t,e,i){var n=t.getItemLayout(e),o=s(i,n),a=n.width>0?1:-1,r=n.height>0?1:-1;return{x:n.x+a*o/2,y:n.y+r*o/2,width:n.width-a*o,height:n.height-r*o}}function r(t,e,i,n,o,a,r){var s=e.getItemVisual(i,"color"),c=e.getItemVisual(i,"opacity"),d=n.getModel("itemStyle.normal"),f=n.getModel("itemStyle.emphasis").getBarItemStyle();t.setShape("r",d.get("barBorderRadius")||0),t.useStyle(l.defaults({fill:s,opacity:c},d.getBarItemStyle()));var p=r?o.height>0?"bottom":"top":o.width>0?"left":"right";h.setLabel(t.style,f,n,s,a,i,p),u.setHoverStyle(t,f)}function s(t,e){var i=t.get(c)||0;return Math.min(i,Math.abs(e.width),Math.abs(e.height))}var l=i(1),u=i(3),h=i(90),c=["itemStyle","normal","barBorderWidth"];l.extend(i(10).prototype,i(107));var d=i(2).extendChartView({type:"bar",render:function(t,e,i){var n=t.get("coordinateSystem");return"cartesian2d"===n&&this._renderOnCartesian(t,e,i),this.group},dispose:l.noop,_renderOnCartesian:function(t,e,i){var s=this.group,l=t.getData(),h=this._data,c=t.coordinateSystem,d=c.getBaseAxis(),f=d.isHorizontal(),p=t.isAnimationEnabled()?t:null;l.diff(h).add(function(e){if(l.hasValue(e)){var i=l.getItemModel(e),o=a(l,e,i),u=n(l,e,i,o,f,p);l.setItemGraphicEl(e,u),s.add(u),r(u,l,e,i,o,t,f)}}).update(function(e,i){var o=h.getItemGraphicEl(i);if(!l.hasValue(e))return void s.remove(o);var c=l.getItemModel(e),d=a(l,e,c);o?u.updateProps(o,{shape:d},p,e):o=n(l,e,c,d,f,p,!0),l.setItemGraphicEl(e,o),s.add(o),r(o,l,e,c,d,t,f)}).remove(function(t){var e=h.getItemGraphicEl(t);e&&o(t,p,e)}).execute(),this._data=l},remove:function(t,e){var i=this.group,n=this._data;t.get("animation")?n&&n.eachItemGraphicEl(function(e){o(e.dataIndex,t,e)}):i.removeAll()}});t.exports=d},function(t,e,i){var n=i(31)([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["stroke","barBorderColor"],["lineWidth","barBorderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]);t.exports={getBarItemStyle:function(t){var e=n.call(this,t);if(this.getBorderLineDash){var i=this.getBorderLineDash();i&&(e.lineDash=i)}return e}}},function(t,e,i){function n(t){return"_"+t+"Type"}function o(t,e,i){var n=e.getItemVisual(i,"color"),o=e.getItemVisual(i,t),a=e.getItemVisual(i,t+"Size");if(o&&"none"!==o){f.isArray(a)||(a=[a,a]);var r=u.createSymbol(o,-a[0]/2,-a[1]/2,a[0],a[1],n);return r.name=t,r}}function a(t){var e=new c({name:"line"});return r(e.shape,t),e}function r(t,e){var i=e[0],n=e[1],o=e[2];t.x1=i[0],t.y1=i[1],t.x2=n[0],t.y2=n[1],t.percent=1,o?(t.cpx1=o[0],t.cpy1=o[1]):(t.cpx1=NaN,t.cpy1=NaN)}function s(){var t=this,e=t.childOfName("fromSymbol"),i=t.childOfName("toSymbol"),n=t.childOfName("label");if(e||i||!n.ignore){for(var o=1,a=this.parent;a;)a.scale&&(o/=a.scale[0]),a=a.parent;var r=t.childOfName("line");if(this.__dirty||r.__dirty){var s=r.shape.percent,l=r.pointAt(0),u=r.pointAt(s),c=h.sub([],u,l);if(h.normalize(c,c),e){e.attr("position",l);var d=r.tangentAt(0);e.attr("rotation",Math.PI/2-Math.atan2(d[1],d[0])),e.attr("scale",[o*s,o*s])}if(i){i.attr("position",u);var d=r.tangentAt(1);i.attr("rotation",-Math.PI/2-Math.atan2(d[1],d[0])),i.attr("scale",[o*s,o*s])}if(!n.ignore){n.attr("position",u);var f,p,g,m=5*o;if("end"===n.__position)f=[c[0]*m+u[0],c[1]*m+u[1]],p=c[0]>.8?"left":c[0]<-.8?"right":"center",g=c[1]>.8?"top":c[1]<-.8?"bottom":"middle";else if("middle"===n.__position){var v=s/2,d=r.tangentAt(v),y=[d[1],-d[0]],x=r.pointAt(v);y[1]>0&&(y[0]=-y[0],y[1]=-y[1]),f=[x[0]+y[0]*m,x[1]+y[1]*m],p="center",g="bottom";var _=-Math.atan2(d[1],d[0]);u[0]<l[0]&&(_=Math.PI+_),n.attr("rotation",_)}else f=[-c[0]*m+l[0],-c[1]*m+l[1]],p=c[0]>.8?"right":c[0]<-.8?"left":"center",g=c[1]>.8?"bottom":c[1]<-.8?"top":"middle";n.attr({style:{textVerticalAlign:n.__verticalAlign||g,textAlign:n.__textAlign||p},position:f,scale:[o,o]})}}}}function l(t,e,i){d.Group.call(this),this._createLine(t,e,i)}var u=i(24),h=i(6),c=i(191),d=i(3),f=i(1),p=i(4),g=["fromSymbol","toSymbol"],m=l.prototype;m.beforeUpdate=s,m._createLine=function(t,e,i){var r=t.hostModel,s=t.getItemLayout(e),l=a(s);l.shape.percent=0,d.initProps(l,{shape:{percent:1}},r,e),this.add(l);var u=new d.Text({name:"label"});this.add(u),f.each(g,function(i){var a=o(i,t,e);this.add(a),this[n(i)]=t.getItemVisual(e,i)},this),this._updateCommonStl(t,e,i)},m.updateData=function(t,e,i){var a=t.hostModel,s=this.childOfName("line"),l=t.getItemLayout(e),u={shape:{}};r(u.shape,l),d.updateProps(s,u,a,e),f.each(g,function(i){var a=t.getItemVisual(e,i),r=n(i);if(this[r]!==a){this.remove(this.childOfName(i));var s=o(i,t,e);this.add(s)}this[r]=a},this),this._updateCommonStl(t,e,i)},m._updateCommonStl=function(t,e,i){var n=t.hostModel,o=this.childOfName("line"),a=i&&i.lineStyle,r=i&&i.hoverLineStyle,s=i&&i.labelModel,l=i&&i.hoverLabelModel;if(!i||t.hasItemOption){var u=t.getItemModel(e);a=u.getModel("lineStyle.normal").getLineStyle(),r=u.getModel("lineStyle.emphasis").getLineStyle(),s=u.getModel("label.normal"),l=u.getModel("label.emphasis")}var h=t.getItemVisual(e,"color"),c=f.retrieve(t.getItemVisual(e,"opacity"),a.opacity,1);o.useStyle(f.defaults({strokeNoScale:!0,fill:"none",stroke:h,opacity:c},a)),o.hoverStyle=r,f.each(g,function(t){var e=this.childOfName(t);e&&(e.setColor(h),e.setStyle({opacity:c}))},this);var m,v,y=s.getShallow("show"),x=l.getShallow("show"),_=this.childOfName("label");if(y||x){var b=n.getRawValue(e);v=null==b?v=t.getName(e):isFinite(b)?p.round(b):b,m=h||"#000"}if(y){var w=s.getModel("textStyle");_.setStyle({text:f.retrieve(n.getFormattedLabel(e,"normal",t.dataType),v),textFont:w.getFont(),fill:w.getTextColor()||m}),_.__textAlign=w.get("align"),_.__verticalAlign=w.get("baseline"),_.__position=s.get("position")}else _.setStyle("text","");if(x){var S=l.getModel("textStyle");_.hoverStyle={text:f.retrieve(n.getFormattedLabel(e,"emphasis",t.dataType),v),textFont:S.getFont(),fill:S.getTextColor()||m}}else _.hoverStyle={text:""};_.ignore=!y&&!x,d.setHoverStyle(this)},m.updateLayout=function(t,e){this.setLinePoints(t.getItemLayout(e))},m.setLinePoints=function(t){var e=this.childOfName("line");r(e.shape,t),e.dirty()},f.inherits(l,d.Group),t.exports=l},function(t,e,i){function n(t){return isNaN(t[0])||isNaN(t[1])}function o(t){return!n(t[0])&&!n(t[1])}function a(t){this._ctor=t||s,this.group=new r.Group}var r=i(3),s=i(108),l=a.prototype;l.updateData=function(t){var e=this._lineData,i=this.group,n=this._ctor,a=t.hostModel,r={lineStyle:a.getModel("lineStyle.normal").getLineStyle(),hoverLineStyle:a.getModel("lineStyle.emphasis").getLineStyle(),labelModel:a.getModel("label.normal"),hoverLabelModel:a.getModel("label.emphasis")};t.diff(e).add(function(e){if(o(t.getItemLayout(e))){var a=new n(t,e,r);t.setItemGraphicEl(e,a),i.add(a)}}).update(function(a,s){var l=e.getItemGraphicEl(s);return o(t.getItemLayout(a))?(l?l.updateData(t,a,r):l=new n(t,a,r),t.setItemGraphicEl(a,l),void i.add(l)):void i.remove(l)}).remove(function(t){i.remove(e.getItemGraphicEl(t))}).execute(),this._lineData=t},l.updateLayout=function(){var t=this._lineData;t.eachItemGraphicEl(function(e,i){e.updateLayout(t,i)},this)},l.remove=function(){this.group.removeAll()},t.exports=a},function(t,e,i){var n=i(1),o=i(2),a=o.PRIORITY;i(111),i(112),o.registerVisual(n.curry(i(50),"line","circle","line")),o.registerLayout(n.curry(i(61),"line")),o.registerProcessor(a.PROCESSOR.STATISTIC,n.curry(i(149),"line")),i(38)},function(t,e,i){"use strict";var n=i(27),o=i(18);t.exports=o.extend({type:"series.line",dependencies:["grid","polar"],getInitialData:function(t,e){return n(t.data,this,e)},defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,hoverAnimation:!0,clipOverflow:!0,label:{normal:{position:"top"}},lineStyle:{normal:{width:2,type:"solid"}},step:!1,smooth:!1,smoothMonotone:null,symbol:"emptyCircle",symbolSize:4,symbolRotate:null,showSymbol:!0,showAllSymbol:!1,connectNulls:!1,sampling:"none",animationEasing:"linear",progressive:0,hoverLayerThreshold:1/0}})},function(t,e,i){"use strict";function n(t,e){if(t.length===e.length){for(var i=0;i<t.length;i++){var n=t[i],o=e[i];if(n[0]!==o[0]||n[1]!==o[1])return}return!0}}function o(t){return"number"==typeof t?t:t?.3:0}function a(t){var e=t.getGlobalExtent();if(t.onBand){var i=t.getBandWidth()/2-1,n=e[1]>e[0]?1:-1;e[0]+=n*i,e[1]-=n*i}return e}function r(t){return t>=0?1:-1}function s(t,e){var i=t.getBaseAxis(),n=t.getOtherAxis(i),o=i.onZero?0:n.scale.getExtent()[0],a=n.dim,s="x"===a||"radius"===a?1:0;return e.mapArray([a],function(n,l){for(var u,h=e.stackedOn;h&&r(h.get(a,l))===r(n);){u=h;break}var c=[];return c[s]=e.get(i.dim,l),c[1-s]=u?u.get(a,l,!0):o,t.dataToPoint(c)},!0)}function l(t,e,i){var n=a(t.getAxis("x")),o=a(t.getAxis("y")),r=t.getBaseAxis().isHorizontal(),s=Math.min(n[0],n[1]),l=Math.min(o[0],o[1]),u=Math.max(n[0],n[1])-s,h=Math.max(o[0],o[1])-l,c=i.get("lineStyle.normal.width")||2,d=i.get("clipOverflow")?c/2:Math.max(u,h);r?(l-=d,h+=2*d):(s-=d,u+=2*d);var f=new v.Rect({shape:{x:s,y:l,width:u,height:h}});return e&&(f.shape[r?"width":"height"]=0,v.initProps(f,{shape:{width:u,height:h}},i)),f}function u(t,e,i){var n=t.getAngleAxis(),o=t.getRadiusAxis(),a=o.getExtent(),r=n.getExtent(),s=Math.PI/180,l=new v.Sector({shape:{cx:t.cx,cy:t.cy,r0:a[0],r:a[1],startAngle:-r[0]*s,endAngle:-r[1]*s,clockwise:n.inverse}});return e&&(l.shape.endAngle=-r[0]*s,v.initProps(l,{shape:{endAngle:-r[1]*s}},i)),l}function h(t,e,i){return"polar"===t.type?u(t,e,i):l(t,e,i)}function c(t,e,i){for(var n=e.getBaseAxis(),o="x"===n.dim||"radius"===n.dim?0:1,a=[],r=0;r<t.length-1;r++){var s=t[r+1],l=t[r];a.push(l);var u=[];switch(i){case"end":u[o]=s[o],u[1-o]=l[1-o],a.push(u);break;case"middle":var h=(l[o]+s[o])/2,c=[];u[o]=c[o]=h,u[1-o]=l[1-o],c[1-o]=s[1-o],a.push(u),a.push(c);break;default:u[o]=l[o],u[1-o]=s[1-o],a.push(u)}}return t[r]&&a.push(t[r]),a}function d(t,e){var i=t.getVisual("visualMeta");if(i&&i.length&&t.count()){for(var n,o=i.length-1;o>=0;o--)if(i[o].dimension<2){n=i[o];break}if(n&&"cartesian2d"===e.type){var a=n.dimension,r=t.dimensions[a],s=e.getAxis(r),l=f.map(n.stops,function(t){return{coord:s.toGlobalCoord(s.dataToCoord(t.value)),color:t.color}}),u=l.length,h=n.outerColors.slice();u&&l[0].coord>l[u-1].coord&&(l.reverse(),h.reverse());var c=10,d=l[0].coord-c,p=l[u-1].coord+c,g=p-d;if(g<.001)return"transparent";f.each(l,function(t){t.offset=(t.coord-d)/g}),l.push({offset:u?l[u-1].offset:.5,color:h[1]||"transparent"}),l.unshift({offset:u?l[0].offset:.5,color:h[0]||"transparent"});var m=new v.LinearGradient(0,0,0,0,l,(!0));return m[r]=d,m[r+"2"]=p,m}}}var f=i(1),p=i(44),g=i(54),m=i(113),v=i(3),y=i(5),x=i(91),_=i(29);t.exports=_.extend({type:"line",init:function(){var t=new v.Group,e=new p;this.group.add(e.group),this._symbolDraw=e,this._lineGroup=t},render:function(t,e,i){var a=t.coordinateSystem,r=this.group,l=t.getData(),u=t.getModel("lineStyle.normal"),p=t.getModel("areaStyle.normal"),g=l.mapArray(l.getItemLayout,!0),m="polar"===a.type,v=this._coordSys,y=this._symbolDraw,x=this._polyline,_=this._polygon,b=this._lineGroup,w=t.get("animation"),S=!p.isEmpty(),M=s(a,l),I=t.get("showSymbol"),T=I&&!m&&!t.get("showAllSymbol")&&this._getSymbolIgnoreFunc(l,a),A=this._data;A&&A.eachItemGraphicEl(function(t,e){t.__temp&&(r.remove(t),A.setItemGraphicEl(e,null))}),I||y.remove(),r.add(b);var L=!m&&t.get("step");x&&v.type===a.type&&L===this._step?(S&&!_?_=this._newPolygon(g,M,a,w):_&&!S&&(b.remove(_),_=this._polygon=null),b.setClipPath(h(a,!1,t)),I&&y.updateData(l,T),l.eachItemGraphicEl(function(t){t.stopAnimation(!0)}),n(this._stackedOnPoints,M)&&n(this._points,g)||(w?this._updateAnimation(l,M,a,i,L):(L&&(g=c(g,a,L),M=c(M,a,L)),x.setShape({points:g}),_&&_.setShape({points:g,stackedOnPoints:M})))):(I&&y.updateData(l,T),L&&(g=c(g,a,L),M=c(M,a,L)),x=this._newPolyline(g,a,w),S&&(_=this._newPolygon(g,M,a,w)),b.setClipPath(h(a,!0,t)));var C=d(l,a)||l.getVisual("color");x.useStyle(f.defaults(u.getLineStyle(),{fill:"none",stroke:C,lineJoin:"bevel"}));var D=t.get("smooth");if(D=o(t.get("smooth")),x.setShape({smooth:D,smoothMonotone:t.get("smoothMonotone"),connectNulls:t.get("connectNulls")}),_){var P=l.stackedOn,k=0;if(_.useStyle(f.defaults(p.getAreaStyle(),{fill:C,opacity:.7,lineJoin:"bevel"})),P){var O=P.hostModel;k=o(O.get("smooth"))}_.setShape({smooth:D,stackedOnSmooth:k,smoothMonotone:t.get("smoothMonotone"),connectNulls:t.get("connectNulls")})}this._data=l,this._coordSys=a,this._stackedOnPoints=M,this._points=g,this._step=L},dispose:function(){},highlight:function(t,e,i,n){var o=t.getData(),a=y.queryDataIndex(o,n);if(!(a instanceof Array)&&null!=a&&a>=0){var r=o.getItemGraphicEl(a);if(!r){var s=o.getItemLayout(a);if(!s)return;r=new g(o,a),r.position=s,r.setZ(t.get("zlevel"),t.get("z")),r.ignore=isNaN(s[0])||isNaN(s[1]),r.__temp=!0,o.setItemGraphicEl(a,r),r.stopSymbolAnimation(!0),this.group.add(r)}r.highlight()}else _.prototype.highlight.call(this,t,e,i,n)},downplay:function(t,e,i,n){var o=t.getData(),a=y.queryDataIndex(o,n);if(null!=a&&a>=0){var r=o.getItemGraphicEl(a);r&&(r.__temp?(o.setItemGraphicEl(a,null),this.group.remove(r)):r.downplay())}else _.prototype.downplay.call(this,t,e,i,n)},_newPolyline:function(t){var e=this._polyline;return e&&this._lineGroup.remove(e),e=new x.Polyline({shape:{points:t},silent:!0,z2:10}),this._lineGroup.add(e),this._polyline=e,e},_newPolygon:function(t,e){var i=this._polygon;return i&&this._lineGroup.remove(i),i=new x.Polygon({shape:{points:t,stackedOnPoints:e},silent:!0}),this._lineGroup.add(i),this._polygon=i,i},_getSymbolIgnoreFunc:function(t,e){var i=e.getAxesByScale("ordinal")[0];if(i&&i.isLabelIgnored)return f.bind(i.isLabelIgnored,i)},_updateAnimation:function(t,e,i,n,o){var a=this._polyline,r=this._polygon,s=t.hostModel,l=m(this._data,t,this._stackedOnPoints,e,this._coordSys,i),u=l.current,h=l.stackedOnCurrent,d=l.next,f=l.stackedOnNext;o&&(u=c(l.current,i,o),h=c(l.stackedOnCurrent,i,o),d=c(l.next,i,o),f=c(l.stackedOnNext,i,o)),a.shape.__points=l.current,a.shape.points=u,v.updateProps(a,{shape:{points:d}},s),r&&(r.setShape({points:u,stackedOnPoints:h}),v.updateProps(r,{shape:{points:d,stackedOnPoints:f}},s));for(var p=[],g=l.status,y=0;y<g.length;y++){var x=g[y].cmd;if("="===x){var _=t.getItemGraphicEl(g[y].idx1);_&&p.push({el:_,ptIdx:y})}}a.animators&&a.animators.length&&a.animators[0].during(function(){for(var t=0;t<p.length;t++){var e=p[t].el;e.attr("position",a.shape.__points[p[t].ptIdx])}})},remove:function(t){var e=this.group,i=this._data;this._lineGroup.removeAll(),this._symbolDraw.remove(!0),i&&i.eachItemGraphicEl(function(t,n){t.__temp&&(e.remove(t),i.setItemGraphicEl(n,null))}),this._polyline=this._polygon=this._coordSys=this._points=this._stackedOnPoints=this._data=null}})},function(t,e){function i(t){return t>=0?1:-1}function n(t,e,n){for(var o,a=t.getBaseAxis(),r=t.getOtherAxis(a),s=a.onZero?0:r.scale.getExtent()[0],l=r.dim,u="x"===l||"radius"===l?1:0,h=e.stackedOn,c=e.get(l,n);h&&i(h.get(l,n))===i(c);){o=h;break}var d=[];return d[u]=e.get(a.dim,n),d[1-u]=o?o.get(l,n,!0):s,t.dataToPoint(d)}function o(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.exports=function(t,e,i,a,r,s){for(var l=o(t,e),u=[],h=[],c=[],d=[],f=[],p=[],g=[],m=s.dimensions,v=0;v<l.length;v++){var y=l[v],x=!0;switch(y.cmd){case"=":var _=t.getItemLayout(y.idx),b=e.getItemLayout(y.idx1);(isNaN(_[0])||isNaN(_[1]))&&(_=b.slice()),u.push(_),h.push(b),c.push(i[y.idx]),d.push(a[y.idx1]),g.push(e.getRawIndex(y.idx1));break;case"+":var w=y.idx;u.push(r.dataToPoint([e.get(m[0],w,!0),e.get(m[1],w,!0)])),h.push(e.getItemLayout(w).slice()),
+c.push(n(r,e,w)),d.push(a[w]),g.push(e.getRawIndex(w));break;case"-":var w=y.idx,S=t.getRawIndex(w);S!==w?(u.push(t.getItemLayout(w)),h.push(s.dataToPoint([t.get(m[0],w,!0),t.get(m[1],w,!0)])),c.push(i[w]),d.push(n(s,t,w)),g.push(S)):x=!1}x&&(f.push(y),p.push(p.length))}p.sort(function(t,e){return g[t]-g[e]});for(var M=[],I=[],T=[],A=[],L=[],v=0;v<p.length;v++){var w=p[v];M[v]=u[w],I[v]=h[w],T[v]=c[w],A[v]=d[w],L[v]=f[w]}return{current:M,next:I,stackedOnCurrent:T,stackedOnNext:A,status:L}}},function(t,e,i){var n=i(1),o=i(2);i(115),i(116),i(88)("pie",[{type:"pieToggleSelect",event:"pieselectchanged",method:"toggleSelected"},{type:"pieSelect",event:"pieselected",method:"select"},{type:"pieUnSelect",event:"pieunselected",method:"unSelect"}]),o.registerVisual(n.curry(i(83),"pie")),o.registerLayout(n.curry(i(118),"pie")),o.registerProcessor(n.curry(i(63),"pie"))},function(t,e,i){"use strict";var n=i(14),o=i(1),a=i(5),r=i(25),s=i(78),l=i(2).extendSeriesModel({type:"series.pie",init:function(t){l.superApply(this,"init",arguments),this.legendDataProvider=function(){return this.getRawData()},this.updateSelectedMap(t.data),this._defaultLabelLine(t)},mergeOption:function(t){l.superCall(this,"mergeOption",t),this.updateSelectedMap(this.option.data)},getInitialData:function(t,e){var i=r(["value"],t.data),o=new n(i,this);return o.initData(t.data),o},getDataParams:function(t){var e=this.getData(),i=l.superCall(this,"getDataParams",t),n=e.getSum("value");return i.percent=n?+(e.get("value",t)/n*100).toFixed(2):0,i.$vars.push("percent"),i},_defaultLabelLine:function(t){a.defaultEmphasis(t.labelLine,["show"]);var e=t.labelLine.normal,i=t.labelLine.emphasis;e.show=e.show&&t.label.normal.show,i.show=i.show&&t.label.emphasis.show},defaultOption:{zlevel:0,z:2,legendHoverLink:!0,hoverAnimation:!0,center:["50%","50%"],radius:[0,"75%"],clockwise:!0,startAngle:90,minAngle:0,selectedOffset:10,avoidLabelOverlap:!0,stillShowZeroSum:!0,label:{normal:{rotate:!1,show:!0,position:"outer"},emphasis:{}},labelLine:{normal:{show:!0,length:15,length2:15,smooth:!1,lineStyle:{width:1,type:"solid"}}},itemStyle:{normal:{borderWidth:1},emphasis:{}},animationType:"expansion",animationEasing:"cubicOut",data:[]}});o.mixin(l,s),t.exports=l},function(t,e,i){function n(t,e,i,n){var a=e.getData(),r=this.dataIndex,s=a.getName(r),l=e.get("selectedOffset");n.dispatchAction({type:"pieToggleSelect",from:t,name:s,seriesId:e.id}),a.each(function(t){o(a.getItemGraphicEl(t),a.getItemLayout(t),e.isSelected(a.getName(t)),l,i)})}function o(t,e,i,n,o){var a=(e.startAngle+e.endAngle)/2,r=Math.cos(a),s=Math.sin(a),l=i?n:0,u=[r*l,s*l];o?t.animate().when(200,{position:u}).start("bounceOut"):t.attr("position",u)}function a(t,e){function i(){a.ignore=a.hoverIgnore,r.ignore=r.hoverIgnore}function n(){a.ignore=a.normalIgnore,r.ignore=r.normalIgnore}s.Group.call(this);var o=new s.Sector({z2:2}),a=new s.Polyline,r=new s.Text;this.add(o),this.add(a),this.add(r),this.updateData(t,e,!0),this.on("emphasis",i).on("normal",n).on("mouseover",i).on("mouseout",n)}function r(t,e,i,n,o){var a=n.getModel("textStyle"),r="inside"===o||"inner"===o;return{fill:a.getTextColor()||(r?"#fff":t.getItemVisual(e,"color")),opacity:t.getItemVisual(e,"opacity"),textFont:a.getFont(),text:l.retrieve(t.hostModel.getFormattedLabel(e,i),t.getName(e))}}var s=i(3),l=i(1),u=a.prototype;u.updateData=function(t,e,i){function n(){r.stopAnimation(!0),r.animateTo({shape:{r:c.r+10}},300,"elasticOut")}function a(){r.stopAnimation(!0),r.animateTo({shape:{r:c.r}},300,"elasticOut")}var r=this.childAt(0),u=t.hostModel,h=t.getItemModel(e),c=t.getItemLayout(e),d=l.extend({},c);if(d.label=null,i){r.setShape(d);var f=u.getShallow("animationType");"scale"===f?(r.shape.r=c.r0,s.initProps(r,{shape:{r:c.r}},u,e)):(r.shape.endAngle=c.startAngle,s.updateProps(r,{shape:{endAngle:c.endAngle}},u,e))}else s.updateProps(r,{shape:d},u,e);var p=h.getModel("itemStyle"),g=t.getItemVisual(e,"color");r.useStyle(l.defaults({lineJoin:"bevel",fill:g},p.getModel("normal").getItemStyle())),r.hoverStyle=p.getModel("emphasis").getItemStyle(),o(this,t.getItemLayout(e),h.get("selected"),u.get("selectedOffset"),u.get("animation")),r.off("mouseover").off("mouseout").off("emphasis").off("normal"),h.get("hoverAnimation")&&u.isAnimationEnabled()&&r.on("mouseover",n).on("mouseout",a).on("emphasis",n).on("normal",a),this._updateLabel(t,e),s.setHoverStyle(this)},u._updateLabel=function(t,e){var i=this.childAt(1),n=this.childAt(2),o=t.hostModel,a=t.getItemModel(e),l=t.getItemLayout(e),u=l.label,h=t.getItemVisual(e,"color");s.updateProps(i,{shape:{points:u.linePoints||[[u.x,u.y],[u.x,u.y],[u.x,u.y]]}},o,e),s.updateProps(n,{style:{x:u.x,y:u.y}},o,e),n.attr({style:{textVerticalAlign:u.verticalAlign,textAlign:u.textAlign,textFont:u.font},rotation:u.rotation,origin:[u.x,u.y],z2:10});var c=a.getModel("label.normal"),d=a.getModel("label.emphasis"),f=a.getModel("labelLine.normal"),p=a.getModel("labelLine.emphasis"),g=c.get("position")||d.get("position");n.setStyle(r(t,e,"normal",c,g)),n.ignore=n.normalIgnore=!c.get("show"),n.hoverIgnore=!d.get("show"),i.ignore=i.normalIgnore=!f.get("show"),i.hoverIgnore=!p.get("show"),i.setStyle({stroke:h,opacity:t.getItemVisual(e,"opacity")}),i.setStyle(f.getModel("lineStyle").getLineStyle()),n.hoverStyle=r(t,e,"emphasis",d,g),i.hoverStyle=p.getModel("lineStyle").getLineStyle();var m=f.get("smooth");m&&m===!0&&(m=.4),i.setShape({smooth:m})},l.inherits(a,s.Group);var h=i(29).extend({type:"pie",init:function(){var t=new s.Group;this._sectorGroup=t},render:function(t,e,i,o){if(!o||o.from!==this.uid){var r=t.getData(),s=this._data,u=this.group,h=e.get("animation"),c=!s,d=t.get("animationType"),f=l.curry(n,this.uid,t,h,i),p=t.get("selectedMode");if(r.diff(s).add(function(t){var e=new a(r,t);c&&"scale"!==d&&e.eachChild(function(t){t.stopAnimation(!0)}),p&&e.on("click",f),r.setItemGraphicEl(t,e),u.add(e)}).update(function(t,e){var i=s.getItemGraphicEl(e);i.updateData(r,t),i.off("click"),p&&i.on("click",f),u.add(i),r.setItemGraphicEl(t,i)}).remove(function(t){var e=s.getItemGraphicEl(t);u.remove(e)}).execute(),h&&c&&r.count()>0&&"scale"!==d){var g=r.getItemLayout(0),m=Math.max(i.getWidth(),i.getHeight())/2,v=l.bind(u.removeClipPath,u);u.setClipPath(this._createClipPath(g.cx,g.cy,m,g.startAngle,g.clockwise,v,t))}this._data=r}},dispose:function(){},_createClipPath:function(t,e,i,n,o,a,r){var l=new s.Sector({shape:{cx:t,cy:e,r0:0,r:i,startAngle:n,endAngle:n,clockwise:o}});return s.initProps(l,{shape:{endAngle:n+(o?1:-1)*Math.PI*2}},r,a),l},containPoint:function(t,e){var i=e.getData(),n=i.getItemLayout(0);if(n){var o=t[0]-n.cx,a=t[1]-n.cy,r=Math.sqrt(o*o+a*a);return r<=n.r&&r>=n.r0}}});t.exports=h},function(t,e,i){"use strict";function n(t,e,i,n,o,a,r){function s(e,i,n,o){for(var a=e;a<i;a++)if(t[a].y+=n,a>e&&a+1<i&&t[a+1].y>t[a].y+t[a].height)return void l(a,n/2);l(i-1,n/2)}function l(e,i){for(var n=e;n>=0&&(t[n].y-=i,!(n>0&&t[n].y>t[n-1].y+t[n-1].height));n--);}function u(t,e,i,n,o,a){for(var r=a>0?e?Number.MAX_VALUE:0:e?Number.MAX_VALUE:0,s=0,l=t.length;s<l;s++)if("center"!==t[s].position){var u=Math.abs(t[s].y-n),h=t[s].len,c=t[s].len2,d=u<o+h?Math.sqrt((o+h+c)*(o+h+c)-u*u):Math.abs(t[s].x-i);e&&d>=r&&(d=r-10),!e&&d<=r&&(d=r+10),t[s].x=i+d*a,r=d}}t.sort(function(t,e){return t.y-e.y});for(var h,c=0,d=t.length,f=[],p=[],g=0;g<d;g++)h=t[g].y-c,h<0&&s(g,d,-h,o),c=t[g].y+t[g].height;r-c<0&&l(d-1,c-r);for(var g=0;g<d;g++)t[g].y>=i?p.push(t[g]):f.push(t[g]);u(f,!1,e,i,n,o),u(p,!0,e,i,n,o)}function o(t,e,i,o,a,r){for(var s=[],l=[],u=0;u<t.length;u++)t[u].x<e?s.push(t[u]):l.push(t[u]);n(l,e,i,o,1,a,r),n(s,e,i,o,-1,a,r);for(var u=0;u<t.length;u++){var h=t[u].linePoints;if(h){var c=h[1][0]-h[2][0];t[u].x<e?h[2][0]=t[u].x+3:h[2][0]=t[u].x-3,h[1][1]=h[2][1]=t[u].y,h[1][0]=h[2][0]+c}}}var a=i(16);t.exports=function(t,e,i,n){var r,s,l=t.getData(),u=[],h=!1;l.each(function(i){var n,o,c,d,f=l.getItemLayout(i),p=l.getItemModel(i),g=p.getModel("label.normal"),m=g.get("position")||p.get("label.emphasis.position"),v=p.getModel("labelLine.normal"),y=v.get("length"),x=v.get("length2"),_=(f.startAngle+f.endAngle)/2,b=Math.cos(_),w=Math.sin(_);r=f.cx,s=f.cy;var S="inside"===m||"inner"===m;if("center"===m)n=f.cx,o=f.cy,d="center";else{var M=(S?(f.r+f.r0)/2*b:f.r*b)+r,I=(S?(f.r+f.r0)/2*w:f.r*w)+s;if(n=M+3*b,o=I+3*w,!S){var T=M+b*(y+e-f.r),A=I+w*(y+e-f.r),L=T+(b<0?-1:1)*x,C=A;n=L+(b<0?-5:5),o=C,c=[[M,I],[T,A],[L,C]]}d=S?"center":b>0?"left":"right"}var D=g.getModel("textStyle").getFont(),P=g.get("rotate")?b<0?-_+Math.PI:-_:0,k=t.getFormattedLabel(i,"normal")||l.getName(i),O=a.getBoundingRect(k,D,d,"top");h=!!P,f.label={x:n,y:o,position:m,height:O.height,len:y,len2:x,linePoints:c,textAlign:d,verticalAlign:"middle",font:D,rotation:P},S||u.push(f.label)}),!h&&t.get("avoidLabelOverlap")&&o(u,r,s,e,i,n)}},function(t,e,i){var n=i(4),o=n.parsePercent,a=i(117),r=i(1),s=2*Math.PI,l=Math.PI/180;t.exports=function(t,e,i,u){e.eachSeriesByType(t,function(t){var e=t.get("center"),u=t.get("radius");r.isArray(u)||(u=[0,u]),r.isArray(e)||(e=[e,e]);var h=i.getWidth(),c=i.getHeight(),d=Math.min(h,c),f=o(e[0],h),p=o(e[1],c),g=o(u[0],d/2),m=o(u[1],d/2),v=t.getData(),y=-t.get("startAngle")*l,x=t.get("minAngle")*l,_=v.getSum("value"),b=Math.PI/(_||v.count())*2,w=t.get("clockwise"),S=t.get("roseType"),M=t.get("stillShowZeroSum"),I=v.getDataExtent("value");I[0]=0;var T=s,A=0,L=y,C=w?1:-1;if(v.each("value",function(t,e){var i;if(isNaN(t))return void v.setItemLayout(e,{angle:NaN,startAngle:NaN,endAngle:NaN,clockwise:w,cx:f,cy:p,r0:g,r:S?NaN:m});i="area"!==S?0===_&&M?b:t*b:s/(v.count()||1),i<x?(i=x,T-=x):A+=t;var o=L+C*i;v.setItemLayout(e,{angle:i,startAngle:L,endAngle:o,clockwise:w,cx:f,cy:p,r0:g,r:S?n.linearMap(t,I,[g,m]):m}),L=o},!0),T<s)if(T<=.001){var D=s/v.count();v.each(function(t){var e=v.getItemLayout(t);e.startAngle=y+C*t*D,e.endAngle=y+C*(t+1)*D})}else b=T/A,L=y,v.each("value",function(t,e){var i=v.getItemLayout(e),n=i.angle===x?x:t*b;i.startAngle=L,i.endAngle=L+C*n,L+=C*n});a(t,m,h,c)})}},function(t,e,i){"use strict";i(60),i(120)},function(t,e,i){var n=i(1),o=i(3),a=i(37),r=i(123),s=i(57),l=i(58),u=a.ifIgnoreOnTick,h=a.getInterval,c=["axisLine","axisLabel","axisTick","axisName"],d=["splitArea","splitLine"],f=s.extend({type:"cartesianAxis",axisPointerClass:r,render:function(t,e,i,r){this.group.removeAll();var s=this._axisGroup;if(this._axisGroup=new o.Group,this.group.add(this._axisGroup),t.get("show")){var u=t.getCoordSysModel(),h=l.layout(u,t),p=new a(t,h);n.each(c,p.add,p),this._axisGroup.add(p.getGroup()),n.each(d,function(e){t.get(e+".show")&&this["_"+e](t,u,h.labelInterval)},this),o.groupTransition(s,this._axisGroup,t),f.superCall(this,"render",t,e,i,r)}},_splitLine:function(t,e,i){var a=t.axis;if(!a.scale.isBlank()){var r=t.getModel("splitLine"),s=r.getModel("lineStyle"),l=s.get("color"),c=h(r,i);l=n.isArray(l)?l:[l];for(var d=e.coordinateSystem.getRect(),f=a.isHorizontal(),p=0,g=a.getTicksCoords(),m=a.scale.getTicks(),v=[],y=[],x=s.getLineStyle(),_=0;_<g.length;_++)if(!u(a,_,c)){var b=a.toGlobalCoord(g[_]);f?(v[0]=b,v[1]=d.y,y[0]=b,y[1]=d.y+d.height):(v[0]=d.x,v[1]=b,y[0]=d.x+d.width,y[1]=b);var w=p++%l.length;this._axisGroup.add(new o.Line(o.subPixelOptimizeLine({anid:"line_"+m[_],shape:{x1:v[0],y1:v[1],x2:y[0],y2:y[1]},style:n.defaults({stroke:l[w]},x),silent:!0})))}}},_splitArea:function(t,e,i){var a=t.axis;if(!a.scale.isBlank()){var r=t.getModel("splitArea"),s=r.getModel("areaStyle"),l=s.get("color"),c=e.coordinateSystem.getRect(),d=a.getTicksCoords(),f=a.scale.getTicks(),p=a.toGlobalCoord(d[0]),g=a.toGlobalCoord(d[0]),m=0,v=h(r,i),y=s.getAreaStyle();l=n.isArray(l)?l:[l];for(var x=1;x<d.length;x++)if(!u(a,x,v)){var _,b,w,S,M=a.toGlobalCoord(d[x]);a.isHorizontal()?(_=p,b=c.y,w=M-_,S=c.height):(_=c.x,b=g,w=c.width,S=M-b);var I=m++%l.length;this._axisGroup.add(new o.Rect({anid:"area_"+f[x],shape:{x:_,y:b,width:w,height:S},style:n.defaults({fill:l[I]},y),silent:!0})),p=_+w,g=b+S}}}});f.extend({type:"xAxis"}),f.extend({type:"yAxis"})},function(t,e,i){var n=i(2),o=n.extendComponentModel({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,textStyle:{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.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z",size:45,margin:50,color:"#333",shadowBlur:3,shadowColor:"#aaa",shadowOffsetX:0,shadowOffsetY:2,throttle:40}}});t.exports=o},function(t,e,i){var n=i(76),o=i(2).extendComponentView({type:"axisPointer",render:function(t,e,i){var o=e.getComponent("tooltip"),a=t.get("triggerOn")||o&&o.get("triggerOn")||"mousemove|click";n.register("axisPointer",i,function(t,e,i){"none"!==a&&("leave"===t||a.indexOf(t)>=0)&&i({type:"updateAxisPointer",currTrigger:t,x:e&&e.offsetX,y:e&&e.offsetY})})},remove:function(t,e){n.disopse(e.getZr(),"axisPointer"),o.superApply(this._model,"remove",arguments)},dispose:function(t,e){n.unregister("axisPointer",e),o.superApply(this._model,"dispose",arguments)}})},function(t,e,i){"use strict";function n(t,e){var i={};return i[e.dim+"AxisIndex"]=e.index,t.getCartesian(i)}function o(t){return"x"===t.dim?0:1}var a=i(3),r=i(74),s=i(55),l=i(58),u=r.extend({makeElOption:function(t,e,i,o,a){var r=i.axis,u=r.grid,c=o.get("type"),d=n(u,r).getOtherAxis(r).getGlobalExtent(),f=r.toGlobalCoord(r.dataToCoord(e,!0)),p=s.buildElStyle(o),g=h[c](r,f,d,p);g.style=p,t.graphicKey=g.type,t.pointer=g;var m=l.layout(u.model,i);s.buildCartesianSingleLabelElOption(e,t,m,i,o,a)},getHandleTransform:function(t,e,i){var n=l.layout(e.axis.grid.model,e,{labelInside:!1});return n.labelMargin=i.get("handle.margin"),{position:s.getTransformedPosition(e.axis,t,n),rotation:n.rotation+(n.labelDirection<0?Math.PI:0)}},updateHandleTransform:function(t,e,i,o){var a=i.axis,r=a.grid,s=a.getGlobalExtent(!0),l=n(r,a).getOtherAxis(a).getGlobalExtent(),u="x"===a.dim?0:1,h=t.position;h[u]+=e[u],h[u]=Math.min(s[1],h[u]),h[u]=Math.max(s[0],h[u]);var c=(l[1]+l[0])/2,d=[c,c];d[u]=h[u];var f=[{verticalAlign:"middle"},{align:"center"}];return{position:h,rotation:t.rotation,cursorPoint:d,tooltipOption:f[u]}}}),h={line:function(t,e,i,n){var r=s.makeLineShape([e,i[0]],[e,i[1]],o(t));return a.subPixelOptimizeLine({shape:r,style:n}),{type:"Line",shape:r}},shadow:function(t,e,i,n){var a=t.getBandWidth(),r=i[1]-i[0];return{type:"Rect",shape:s.makeRectShape([e-a/2,i[0]],[a,r],o(t))}}};t.exports=u},function(t,e,i){function n(t,e,i,n,a,g,m,v){var b=[];b=null!=i.x&&null!=i.y?[i.x,i.y]:y({seriesIndex:i.seriesIndex,dataIndex:i.dataIndex},a).point;var w=t.axesInfo,S="leave"===e||p(b),M={},I={},T={list:[],map:{}},A=[],L={showPointer:_(r,I),showTooltip:_(s,T),highlight:_(l,A)};return x(t.coordSysMap,function(e,n){var a=e.containPoint(b);x(t.coordSysAxesInfo[n],function(t,e){var n=t.axis;S||!a||d(i,n)||o(t,n.pointToData(b),L,!1,M)})}),x(w,function(t,e){var i=t.linkGroup;i&&!I[e]&&x(i.axesInfo,function(e,n){var a=I[n];if(e!==t&&a){var r=a.value;i.mapper&&(r=t.axis.scale.parse(i.mapper(r,f(e),f(t)))),o(t,r,L,!0,M)}})}),u(I,w),h(T,b,m,n),c(A,n,g,v),M}function o(t,e,i,n,o){var r=t.axis;if(!r.scale.isBlank()&&r.containData(e)){if(!t.involveSeries)return void i.showPointer(t,e);var s=a(e,t),l=s.payloadBatch,u=s.snapToValue;l[0]&&null==o.seriesIndex&&g.extend(o,l[0]),!n&&t.snap&&r.containData(u)&&null!=u&&(e=u),i.highlight("highlight",l),i.showPointer(t,e,l),i.showTooltip(t,s,u)}}function a(t,e){var i=e.axis,n=i.dim,o=t,a=[],r=Number.MAX_VALUE,s=-1;return x(e.seriesModels,function(e,l){var u,h,c=e.coordDimToDataDim(n);if(e.getAxisTooltipData){var d=e.getAxisTooltipData(c,t,i);h=d.dataIndices,u=d.nestestValue}else{if(h=e.getData().indexOfNearest(c[0],t,!1,"category"===i.type?.5:null),!h.length)return;u=e.getData().get(c[0],h[0])}if(null!=u&&isFinite(u)){var f=t-u,p=Math.abs(f);p<=r&&((p<r||f>=0&&s<0)&&(r=p,s=f,o=u,a.length=0),x(h,function(t){a.push({seriesIndex:e.seriesIndex,dataIndexInside:t,dataIndex:e.getData().getRawIndex(t)})}))}}),{payloadBatch:a,snapToValue:o}}function r(t,e,i,n){t[e.key]={value:i,payloadBatch:n}}function s(t,e,i,n){var o=i.payloadBatch,a=e.axis,r=a.model,s=e.axisPointerModel;if(e.triggerTooltip&&o.length){var l=e.coordSys.model,u=v.makeKey(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:a.dim,axisIndex:r.componentIndex,axisType:r.type,axisId:r.id,value:n,valueLabelOpt:{precision:s.get("label.precision"),formatter:s.get("label.formatter")},seriesDataIndices:o.slice()})}}function l(t,e,i){t.push.apply(t,i)}function u(t,e){x(e,function(e,i){var n=e.axisPointerModel.option,o=t[i];o?(!e.useHandle&&(n.status="show"),n.value=o.value,n.seriesDataIndices=(o.payloadBatch||[]).slice()):!e.useHandle&&(n.status="hide")})}function h(t,e,i,n){if(p(e)||!t.list.length)return void n({type:"hideTip"});var o=((t.list[0].dataByAxis[0]||{}).seriesDataIndices||[])[0]||{};n({type:"showTip",escapeConnect:!0,x:e[0],y:e[1],tooltipOption:i,dataIndexInside:o.dataIndexInside,dataIndex:o.dataIndex,seriesIndex:o.seriesIndex,dataByCoordSys:t.list})}function c(t,e,i,n){var o=i.getZr();n="lastHighlights"+(n||"");var a=b(o)[n]||{},r=b(o)[n]={};g.each(t,function(t){var e=t.seriesIndex+" | "+t.dataIndex;r[e]=t});var s=[],l=[];g.each(a,function(t,e){!r[e]&&l.push(t)}),g.each(r,function(t,e){!a[e]&&s.push(t)}),l.length&&i.dispatchAction({type:"downplay",escapeConnect:!0,batch:l}),s.length&&i.dispatchAction({type:"highlight",escapeConnect:!0,batch:s})}function d(t,e){var i=1;return x(t,function(t,e){i&=!/^.+(AxisId|AxisName|AxisIndex)$/.test(e)}),!i&&x([["AxisId","id"],["AxisIndex","componentIndex"],["AxisName","name"]],function(n){var o=m.normalizeToArray(t[e.dim+n[0]]);i|=g.indexOf(o,e.model[n[1]])>=0}),!i}function f(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 p(t){return null==t[0]||isNaN(t[0])||null==t[1]||isNaN(t[1])}var g=i(1),m=i(5),v=i(32),y=i(75),x=g.each,_=g.curry,b=m.makeGetter();t.exports=n},function(t,e,i){var n=i(1),o=i(77),a=i(2);a.registerAction("dataZoom",function(t,e){var i=o.createLinkedNodesFinder(n.bind(e.eachComponent,e,"dataZoom"),o.eachAxisDim,function(t,e){return t.get(e.axisIndex)}),a=[];e.eachComponent({mainType:"dataZoom",query:t},function(t,e){a.push.apply(a,i(t).nodes)}),n.each(a,function(e,i){e.setRawRange({start:t.start,end:t.end,startValue:t.startValue,endValue:t.endValue})})})},function(t,e,i){function n(t,e,i){i.getAxisProxy(t.name,e).reset(i)}function o(t,e,i){i.getAxisProxy(t.name,e).filterData(i)}var a=i(2);a.registerProcessor(function(t,e){t.eachComponent("dataZoom",function(t){t.eachTargetAxis(n),t.eachTargetAxis(o)}),t.eachComponent("dataZoom",function(t){var e=t.findRepresentativeAxisProxy(),i=e.getDataPercentWindow(),n=e.getDataValueWindow();t.setRawRange({start:i[0],end:i[1],startValue:n[0],endValue:n[1]},!0)})})},function(t,e,i){function n(t){var e=t[r];return e||(e=t[r]=[{}]),e}var o=i(1),a=o.each,r="\0_ec_hist_store",s={push:function(t,e){var i=n(t);a(e,function(e,n){for(var o=i.length-1;o>=0;o--){var a=i[o];if(a[n])break}if(o<0){var r=t.queryComponents({mainType:"dataZoom",subType:"select",id:n})[0];if(r){var s=r.getPercentRange();i[0][n]={dataZoomId:n,start:s[0],end:s[1]}}}}),i.push(e)},pop:function(t){var e=n(t),i=e[e.length-1];e.length>1&&e.pop();var o={};return a(i,function(t,i){for(var n=e.length-1;n>=0;n--){var t=e[n][i];if(t){o[i]=t;break}}}),o},clear:function(t){t[r]=null},count:function(t){return n(t).length}};t.exports=s},function(t,e,i){i(13).registerSubTypeDefaulter("dataZoom",function(t){return"slider"})},function(t,e,i){function n(t){V.call(this),this._zr=t,this.group=new F.Group,this._brushType,this._brushOption,this._panels,this._track=[],this._dragging,this._covers=[],this._creatingCover,this._creatingPanel,this._enableGlobalPan,this._uid="brushController_"+nt++,this._handlers={},q(ot,function(t,e){this._handlers[e]=B.bind(t,this)},this)}function o(t,e){var i=t._zr;t._enableGlobalPan||H.take(i,Q,t._uid),q(t._handlers,function(t,e){i.on(e,t)}),t._brushType=e.brushType,t._brushOption=B.merge(B.clone(it),e,!0)}function a(t){var e=t._zr;H.release(e,Q,t._uid),q(t._handlers,function(t,i){e.off(i,t)}),t._brushType=t._brushOption=null}function r(t,e){var i=at[e.brushType].createCover(t,e);return u(i),i.__brushOption=e,t.group.add(i),i}function s(t,e){var i=c(e);return i.endCreating&&(i.endCreating(t,e),u(e)),e}function l(t,e){var i=e.__brushOption;c(e).updateCoverShape(t,e,i.range,i)}function u(t){t.traverse(function(t){t.z=$,t.z2=$})}function h(t,e){c(e).updateCommon(t,e),l(t,e)}function c(t){return at[t.__brushOption.brushType]}function d(t,e,i){var n=t._panels;if(!n)return!0;var o;return q(n,function(t){t.contain(e,i)&&(o=t)}),o}function f(t,e){var i=t._panels;if(!i)return!0;var n=e.__brushOption.panelId;return null==n||i[n]}function p(t){var e=t._covers,i=e.length;return q(e,function(e){t.group.remove(e)},t),e.length=0,!!i}function g(t,e){var i=j(t._covers,function(t){var e=t.__brushOption,i=B.clone(e.range);return{brushType:e.brushType,panelId:e.panelId,range:i}});t.trigger("brush",i,{isEnd:!!e.isEnd,removeOnClick:!!e.removeOnClick})}function m(t){var e=t._track;if(!e.length)return!1;var i=e[e.length-1],n=e[0],o=i[0]-n[0],a=i[1]-n[1],r=Y(o*o+a*a,.5);return r>K}function v(t){var e=t.length-1;return e<0&&(e=0),[t[0],t[e]]}function y(t,e,i,n){var o=new F.Group;return o.add(new F.Rect({name:"main",style:w(i),silent:!0,draggable:!0,cursor:"move",drift:Z(t,e,o,"nswe"),ondragend:Z(g,e,{isEnd:!0})})),q(n,function(i){o.add(new F.Rect({name:i,style:{opacity:0},draggable:!0,silent:!0,invisible:!0,drift:Z(t,e,o,i),ondragend:Z(g,e,{isEnd:!0})}))}),o}function x(t,e,i,n){var o=n.brushStyle.lineWidth||0,a=X(o,J),r=i[0][0],s=i[1][0],l=r-o/2,u=s-o/2,h=i[0][1],c=i[1][1],d=h-a+o/2,f=c-a+o/2,p=h-r,g=c-s,m=p+o,v=g+o;b(t,e,"main",r,s,p,g),n.transformable&&(b(t,e,"w",l,u,a,v),b(t,e,"e",d,u,a,v),b(t,e,"n",l,u,m,a),b(t,e,"s",l,f,m,a),b(t,e,"nw",l,u,a,a),b(t,e,"ne",d,u,a,a),b(t,e,"sw",l,f,a,a),b(t,e,"se",d,f,a,a))}function _(t,e){var i=e.__brushOption,n=i.transformable,o=e.childAt(0);o.useStyle(w(i)),o.attr({silent:!n,cursor:n?"move":"default"}),q(["w","e","n","s","se","sw","ne","nw"],function(i){var o=e.childOfName(i),a=I(t,i);o&&o.attr({silent:!n,invisible:!n,cursor:n?et[a]+"-resize":null})})}function b(t,e,i,n,o,a,r){var s=e.childOfName(i);s&&s.setShape(D(C(t,e,[[n,o],[n+a,o+r]])))}function w(t){return B.defaults({strokeNoScale:!0},t.brushStyle)}function S(t,e,i,n){var o=[U(t,i),U(e,n)],a=[X(t,i),X(e,n)];return[[o[0],a[0]],[o[1],a[1]]]}function M(t){return F.getTransform(t.group)}function I(t,e){if(e.length>1){e=e.split("");var i=[I(t,e[0]),I(t,e[1])];return("e"===i[0]||"w"===i[0])&&i.reverse(),i.join("")}var n={w:"left",e:"right",n:"top",s:"bottom"},o={left:"w",right:"e",top:"n",bottom:"s"},i=F.transformDirection(n[e],M(t));return o[i]}function T(t,e,i,n,o,a,r,s){var l=n.__brushOption,u=t(l.range),c=L(i,a,r);q(o.split(""),function(t){var e=tt[t];u[e[0]][e[1]]+=c[e[0]]}),l.range=e(S(u[0][0],u[1][0],u[0][1],u[1][1])),h(i,n),g(i,{isEnd:!1})}function A(t,e,i,n,o){var a=e.__brushOption.range,r=L(t,i,n);q(a,function(t){t[0]+=r[0],t[1]+=r[1]}),h(t,e),g(t,{isEnd:!1})}function L(t,e,i){var n=t.group,o=n.transformCoordToLocal(e,i),a=n.transformCoordToLocal(0,0);return[o[0]-a[0],o[1]-a[1]]}function C(t,e,i){var n=f(t,e);if(n===!0)return B.clone(i);var o=n.getBoundingRect();return B.map(i,function(t){var e=t[0];e=X(e,o.x),e=U(e,o.x+o.width);var i=t[1];return i=X(i,o.y),i=U(i,o.y+o.height),[e,i]})}function D(t){var e=U(t[0][0],t[1][0]),i=U(t[0][1],t[1][1]),n=X(t[0][0],t[1][0]),o=X(t[0][1],t[1][1]);return{x:e,y:i,width:n-e,height:o-i}}function P(t,e){var i=e.offsetX,n=e.offsetY,o=t._zr;if(t._brushType){for(var a,r=t._panels,s=t._covers,l=0;l<s.length;l++)if(at[s[l].__brushOption.brushType].contain(s[l],i,n)){a=!0;break}a||(r?q(r,function(t){t.contain(i,n)&&o.setCursorStyle("crosshair")}):o.setCursorStyle("crosshair"))}}function k(t){var e=t.event;e.preventDefault&&e.preventDefault()}function O(t,e,i){return t.childOfName("main").contain(e,i)}function z(t,e,i){var n,o=e.offsetX,a=e.offsetY,u=t._creatingCover,h=t._creatingPanel,c=t._brushOption;if(t._track.push(t.group.transformCoordToLocal(o,a)),m(t)||u){if(h&&!u){"single"===c.brushMode&&p(t);var f=B.clone(c);f.brushType=R(f.brushType,h),f.panelId=h===!0?null:h.__brushPanelId,u=t._creatingCover=r(t,f),t._covers.push(u)}if(u){var g=at[R(t._brushType,h)],v=u.__brushOption;v.range=g.getCreatingRange(C(t,u,t._track)),i&&(s(t,u),g.updateCommon(t,u)),l(t,u),n={isEnd:i}}}else i&&"single"===c.brushMode&&c.removeOnClick&&d(t,o,a)&&p(t)&&(n={isEnd:i,removeOnClick:!0});return n}function R(t,e){return"auto"===t?e.__defaultBrushType:t}function E(t){if(this._dragging){k(t);var e=z(this,t,!0);this._dragging=!1,this._track=[],this._creatingCover=null,e&&g(this,e)}}function N(t){return{createCover:function(e,i){return y(Z(T,function(e){var i=[e,[0,100]];return t&&i.reverse(),i},function(e){return e[t]}),e,i,[["w","e"],["n","s"]][t])},getCreatingRange:function(e){var i=v(e),n=U(i[0][t],i[1][t]),o=X(i[0][t],i[1][t]);return[n,o]},updateCoverShape:function(e,i,n,o){var a,r=o.brushStyle.width;if(null==r){var s=f(e,i),l=0;if(s!==!0){var u=s.getBoundingRect();r=t?u.width:u.height,l=t?u.x:u.y}a=[l,l+(r||0)]}else a=[-r/2,r/2];var h=[n,a];t&&h.reverse(),x(e,i,h,o)},updateCommon:_,contain:O}}var V=i(23),B=i(1),G=i(11),F=i(3),H=i(130),W=i(48),Z=B.curry,q=B.each,j=B.map,U=Math.min,X=Math.max,Y=Math.pow,$=1e4,K=6,J=6,Q="globalPan",tt={w:[0,0],e:[0,1],n:[1,0],s:[1,1]},et={w:"ew",e:"ew",n:"ns",s:"ns",ne:"nesw",sw:"nesw",nw:"nwse",se:"nwse"},it={brushStyle:{lineWidth:2,stroke:"rgba(0,0,0,0.3)",fill:"rgba(0,0,0,0.1)"},transformable:!0,brushMode:"single",removeOnClick:!1},nt=0;n.prototype={constructor:n,enableBrush:function(t){return this._brushType&&a(this),t.brushType&&o(this,t),this},setPanels:function(t){var e=this._panels||{},i=this._panels=t&&t.length&&{},n=this.group;return i&&q(t,function(t){var o=t.panelId,a=e[o];a||(a=new F.Rect({silent:!0,invisible:!0}),n.add(a));var r=t.rect;r instanceof G||(r=G.create(r)),a.attr("shape",r.plain()),a.__brushPanelId=o,a.__defaultBrushType=t.defaultBrushType,i[o]=a,e[o]=null}),q(e,function(t){t&&n.remove(t)}),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},eachCover:function(t,e){q(this._covers,t,e)},updateCovers:function(t){function e(t,e){return(null!=t.id?t.id:a+e)+"-"+t.brushType}function i(t,i){return e(t.__brushOption,i)}function n(e,i){var n=t[e];if(null!=i&&l[i]===d)u[e]=l[i];else{var o=u[e]=null!=i?(l[i].__brushOption=n,l[i]):s(c,r(c,n));h(c,o)}}function o(t){l[t]!==d&&c.group.remove(l[t])}t=B.map(t,function(t){return B.merge(B.clone(it),t,!0)});var a="\0-brush-index-",l=this._covers,u=this._covers=[],c=this,d=this._creatingCover;return new W(l,t,i,e).add(n).update(n).remove(o).execute(),this},unmount:function(){return this.enableBrush(!1),p(this),this._zr.remove(this.group),this},dispose:function(){this.unmount(),this.off()}},B.mixin(n,V);var ot={mousedown:function(t){if(this._dragging)E.call(this,t);else if(!t.target||!t.target.draggable){k(t);var e=t.offsetX,i=t.offsetY;this._creatingCover=null;var n=this._creatingPanel=d(this,e,i);n&&(this._dragging=!0,this._track=[this.group.transformCoordToLocal(e,i)])}},mousemove:function(t){if(P(this,t),this._dragging){k(t);var e=z(this,t,!1);e&&g(this,e)}},mouseup:E},at={lineX:N(0),lineY:N(1),rect:{createCover:function(t,e){return y(Z(T,function(t){return t},function(t){return t}),t,e,["w","e","n","s","se","sw","ne","nw"])},getCreatingRange:function(t){var e=v(t);return S(e[1][0],e[1][1],e[0][0],e[0][1])},updateCoverShape:function(t,e,i,n){x(t,e,i,n)},updateCommon:_,contain:O},polygon:{createCover:function(t,e){var i=new F.Group;return i.add(new F.Polyline({name:"main",style:w(e),silent:!0})),i},getCreatingRange:function(t){return t},endCreating:function(t,e){e.remove(e.childAt(0)),e.add(new F.Polygon({name:"main",draggable:!0,drift:Z(A,t,e),ondragend:Z(g,t,{isEnd:!0})}))},updateCoverShape:function(t,e,i,n){e.childAt(0).setShape({points:C(t,e,i)})},updateCommon:_,contain:O}};t.exports=n},function(t,e,i){function n(t){return t[o]||(t[o]={})}var o="\0_ec_interaction_mutex",a={take:function(t,e,i){var o=n(t);o[e]=i},release:function(t,e,i){var o=n(t),a=o[e];a===i&&(o[e]=null)},isTaken:function(t,e){return!!n(t)[e]}};i(2).registerAction({type:"takeGlobalCursor",event:"globalCursorTaken",update:"update"},function(){}),t.exports=a},function(t,e,i){function n(t,e,i){o.positionElement(t,e.getBoxLayoutParams(),{width:i.getWidth(),height:i.getHeight()},e.get("padding"))}var o=i(12),a=i(7),r=i(3);t.exports={layout:function(t,e,i){var a=o.getLayoutRect(e.getBoxLayoutParams(),{width:i.getWidth(),height:i.getHeight()},e.get("padding"));o.box(e.get("orient"),t,e.get("itemGap"),a.width,a.height),n(t,e,i)},addBackground:function(t,e){var i=a.normalizeCssArray(e.get("padding")),n=t.getBoundingRect(),o=e.getItemStyle(["color","opacity"]);o.fill=e.get("backgroundColor");var s=new r.Rect({shape:{x:n.x-i[3],y:n.y-i[0],width:n.width+i[1]+i[3],height:n.height+i[0]+i[2]},style:o,silent:!0,z2:-1});r.subPixelOptimizeRect(s),t.add(s)}}},function(t,e,i){var n=i(1),o=i(33),a=i(136),r=function(t,e,i,n,a){o.call(this,t,e,i),this.type=n||"value",this.position=a||"bottom"};r.prototype={constructor:r,index:0,onZero:!1,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()},getLabelInterval:function(){var t=this._labelInterval;return t||(t=this._labelInterval=a(this)),t},isLabelIgnored:function(t){if("category"===this.type){var e=this.getLabelInterval();return"function"==typeof e&&!e(t,this.scale.getLabel(t))||t%(e+1)}},pointToData:function(t,e){return this.coordToData(this.toLocalCoord(t["x"===this.dim?0:1]),e)},toLocalCoord:null,toGlobalCoord:null},n.inherits(r,o),t.exports=r},function(t,e,i){"use strict";function n(t){return this._axes[t]}var o=i(1),a=function(t){this._axes={},this._dimList=[],this.name=t||""};a.prototype={constructor:a,type:"cartesian",getAxis:function(t){return this._axes[t]},getAxes:function(){return o.map(this._dimList,n,this)},getAxesByScale:function(t){return t=t.toLowerCase(),o.filter(this.getAxes(),function(e){return e.scale.type===t})},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?[]:{},o=0;o<i.length;o++){var a=i[o],r=this._axes[a];n[a]=r[e](t[a])}return n}},t.exports=a},function(t,e,i){"use strict";function n(t){a.call(this,t)}var o=i(1),a=i(133);n.prototype={constructor:n,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])},dataToPoints:function(t,e){
+return t.mapArray(["x","y"],function(t,e){return this.dataToPoint([t,e])},e,this)},dataToPoint:function(t,e){var i=this.getAxis("x"),n=this.getAxis("y");return[i.toGlobalCoord(i.dataToCoord(t[0],e)),n.toGlobalCoord(n.dataToCoord(t[1],e))]},pointToData:function(t,e){var i=this.getAxis("x"),n=this.getAxis("y");return[i.coordToData(i.toLocalCoord(t[0]),e),n.coordToData(n.toLocalCoord(t[1]),e)]},getOtherAxis:function(t){return this.getAxis("x"===t.dim?"y":"x")}},o.inherits(n,a),t.exports=n},function(t,e,i){"use strict";i(60);var n=i(13);t.exports=n.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"}})},function(t,e,i){"use strict";var n=i(1),o=i(17);t.exports=function(t){var e=t.model,i=e.getModel("axisLabel"),a=i.get("interval");return"category"!==t.type||"auto"!==a?"auto"===a?0:a:o.getAxisLabelInterval(n.map(t.scale.getTicks(),t.dataToCoord,t),e.getFormattedLabels(),i.getModel("textStyle").getFont(),t.isHorizontal())}},function(t,e,i){var n=i(27),o=i(24),a=i(17),r=i(42),s=i(10),l=i(1);t.exports={createList:function(t){var e=t.get("data");return n(e,t,t.ecModel)},completeDimensions:i(25),createSymbol:o.createSymbol,createScale:function(t,e){var i=e;e instanceof s||(i=new s(e),l.mixin(i,r));var n=a.createScaleByModel(i);return n.setExtent(t[0],t[1]),a.niceScaleExtent(n,i),n},mixinAxisModelCommonMethods:function(t){l.mixin(t,r)}}},function(t,e,i){var n=i(3),o=i(1),a=Math.PI;t.exports=function(t,e){e=e||{},o.defaults(e,{text:"loading",color:"#c23531",textColor:"#000",maskColor:"rgba(255, 255, 255, 0.8)",zlevel:0});var i=new n.Rect({style:{fill:e.maskColor},zlevel:e.zlevel,z:1e4}),r=new n.Arc({shape:{startAngle:-a/2,endAngle:-a/2+.1,r:10},style:{stroke:e.color,lineCap:"round",lineWidth:5},zlevel:e.zlevel,z:10001}),s=new n.Rect({style:{fill:"none",text:e.text,textPosition:"right",textDistance:10,textFill:e.textColor},zlevel:e.zlevel,z:10001});r.animateShape(!0).when(1e3,{endAngle:3*a/2}).start("circularInOut"),r.animateShape(!0).when(1e3,{startAngle:3*a/2}).delay(300).start("circularInOut");var l=new n.Group;return l.add(r),l.add(s),l.add(i),l.resize=function(){var e=t.getWidth()/2,n=t.getHeight()/2;r.setShape({cx:e,cy:n});var o=r.shape.r;s.setShape({x:e-o,y:n-o,width:2*o,height:2*o}),i.setShape({x:0,y:0,width:t.getWidth(),height:t.getHeight()})},l.resize(),l}},function(t,e,i){function n(t,e){h.each(e,function(e,i){x.hasClass(i)||("object"==typeof e?t[i]=t[i]?h.merge(t[i],e,!1):h.clone(e):null==t[i]&&(t[i]=e))})}function o(t){t=t,this.option={},this.option[b]=1,this._componentsMap={series:[]},this._seriesIndices=null,n(t,this._theme.option),h.merge(t,_,!1),this.mergeOption(t)}function a(t,e){h.isArray(e)||(e=e?[e]:[]);var i={};return f(e,function(e){i[e]=(t[e]||[]).slice()}),i}function r(t,e,i){var n=e.type?e.type:i?i.subType:x.determineSubType(t,e);return n}function s(t){return g(t,function(t){return t.componentIndex})||[]}function l(t,e){return e.hasOwnProperty("subType")?p(t,function(t){return t.subType===e.subType}):t}function u(t){}var h=i(1),c=i(5),d=i(10),f=h.each,p=h.filter,g=h.map,m=h.isArray,v=h.indexOf,y=h.isObject,x=i(13),_=i(141),b="\0_ec_inner",w=d.extend({constructor:w,init:function(t,e,i,n){i=i||{},this.option=null,this._theme=new d(i),this._optionManager=n},setOption:function(t,e,i){h.assert(!(b in t),"please use chart.getOption()"),this._optionManager.setOption(t,e),this.resetOption(null,i)},resetOption:function(t,e){var i=!1,n=this._optionManager;if(!t||"recreate"===t){var a=n.mountOption("recreate"===t);this.option&&"recreate"!==t?(!e&&this.restoreData(),this.mergeOption(a)):o.call(this,a),i=!0}if("timeline"!==t&&"media"!==t||this.restoreData(),!t||"recreate"===t||"timeline"===t){var r=n.getTimelineOption(this);r&&(this.mergeOption(r),i=!0)}if(!t||"recreate"===t||"media"===t){var s=n.getMediaOption(this,this._api);s.length&&f(s,function(t){this.mergeOption(t,i=!0)},this)}return i},mergeOption:function(t){function e(e,o){var l=c.normalizeToArray(t[e]),u=c.mappingToExists(n[e],l);c.makeIdAndName(u),f(u,function(t,i){var n=t.option;y(n)&&(t.keyInfo.mainType=e,t.keyInfo.subType=r(e,n,t.exist))});var d=a(n,o);i[e]=[],n[e]=[],f(u,function(t,o){var a=t.exist,r=t.option;if(h.assert(y(r)||a,"Empty component definition"),r){var s=x.getClass(e,t.keyInfo.subType,!0);if(a&&a instanceof s)a.name=t.keyInfo.name,a.mergeOption(r,this),a.optionUpdated(r,!1);else{var l=h.extend({dependentModels:d,componentIndex:o},t.keyInfo);a=new s(r,this,this,l),h.extend(a,l),a.init(r,this,this,l),a.optionUpdated(null,!0)}}else a.mergeOption({},this),a.optionUpdated({},!1);n[e][o]=a,i[e][o]=a.option},this),"series"===e&&(this._seriesIndices=s(n.series))}var i=this.option,n=this._componentsMap,o=[];f(t,function(t,e){null!=t&&(x.hasClass(e)?o.push(e):i[e]=null==i[e]?h.clone(t):h.merge(i[e],t,!0))}),x.topologicalTravel(o,x.getAllClassMainTypes(),e,this),this._seriesIndices=this._seriesIndices||[]},getOption:function(){var t=h.clone(this.option);return f(t,function(e,i){if(x.hasClass(i)){for(var e=c.normalizeToArray(e),n=e.length-1;n>=0;n--)c.isIdInner(e[n])&&e.splice(n,1);t[i]=e}}),delete t[b],t},getTheme:function(){return this._theme},getComponent:function(t,e){var i=this._componentsMap[t];if(i)return i[e||0]},queryComponents:function(t){var e=t.mainType;if(!e)return[];var i=t.index,n=t.id,o=t.name,a=this._componentsMap[e];if(!a||!a.length)return[];var r;if(null!=i)m(i)||(i=[i]),r=p(g(i,function(t){return a[t]}),function(t){return!!t});else if(null!=n){var s=m(n);r=p(a,function(t){return s&&v(n,t.id)>=0||!s&&t.id===n})}else if(null!=o){var u=m(o);r=p(a,function(t){return u&&v(o,t.name)>=0||!u&&t.name===o})}else r=a.slice();return l(r,t)},findComponents:function(t){function e(t){var e=o+"Index",i=o+"Id",n=o+"Name";return!t||null==t[e]&&null==t[i]&&null==t[n]?null:{mainType:o,index:t[e],id:t[i],name:t[n]}}function i(e){return t.filter?p(e,t.filter):e}var n=t.query,o=t.mainType,a=e(n),r=a?this.queryComponents(a):this._componentsMap[o];return i(l(r,t))},eachComponent:function(t,e,i){var n=this._componentsMap;if("function"==typeof t)i=e,e=t,f(n,function(t,n){f(t,function(t,o){e.call(i,n,t,o)})});else if(h.isString(t))f(n[t],e,i);else if(y(t)){var o=this.findComponents(t);f(o,e,i)}},getSeriesByName:function(t){var e=this._componentsMap.series;return p(e,function(e){return e.name===t})},getSeriesByIndex:function(t){return this._componentsMap.series[t]},getSeriesByType:function(t){var e=this._componentsMap.series;return p(e,function(e){return e.subType===t})},getSeries:function(){return this._componentsMap.series.slice()},eachSeries:function(t,e){u(this),f(this._seriesIndices,function(i){var n=this._componentsMap.series[i];t.call(e,n,i)},this)},eachRawSeries:function(t,e){f(this._componentsMap.series,t,e)},eachSeriesByType:function(t,e,i){u(this),f(this._seriesIndices,function(n){var o=this._componentsMap.series[n];o.subType===t&&e.call(i,o,n)},this)},eachRawSeriesByType:function(t,e,i){return f(this.getSeriesByType(t),e,i)},isSeriesFiltered:function(t){return u(this),h.indexOf(this._seriesIndices,t.componentIndex)<0},filterSeries:function(t,e){u(this);var i=p(this._componentsMap.series,t,e);this._seriesIndices=s(i)},restoreData:function(){var t=this._componentsMap;this._seriesIndices=s(t.series);var e=[];f(t,function(t,i){e.push(i)}),x.topologicalTravel(e,x.getAllClassMainTypes(),function(e,i){f(t[e],function(t){t.restoreData()})})}});h.mixin(w,i(62)),t.exports=w},function(t,e,i){function n(t){this._api=t,this._timelineOptions=[],this._mediaList=[],this._mediaDefault,this._currentMediaIndices=[],this._optionBackup,this._newBaseOption}function o(t,e,i){var n,o,a=[],r=[],s=t.timeline;if(t.baseOption&&(o=t.baseOption),(s||t.options)&&(o=o||{},a=(t.options||[]).slice()),t.media){o=o||{};var l=t.media;d(l,function(t){t&&t.option&&(t.query?r.push(t):n||(n=t))})}return o||(o=t),o.timeline||(o.timeline=s),d([o].concat(a).concat(u.map(r,function(t){return t.option})),function(t){d(e,function(e){e(t,i)})}),{baseOption:o,timelineOptions:a,mediaDefault:n,mediaList:r}}function a(t,e,i){var n={width:e,height:i,aspectratio:e/i},o=!0;return u.each(t,function(t,e){var i=e.match(m);if(i&&i[1]&&i[2]){var a=i[1],s=i[2].toLowerCase();r(n[s],t,a)||(o=!1)}}),o}function r(t,e,i){return"min"===i?t>=e:"max"===i?t<=e:t===e}function s(t,e){return t.join(",")===e.join(",")}function l(t,e){e=e||{},d(e,function(e,i){if(null!=e){var n=t[i];if(c.hasClass(i)){e=h.normalizeToArray(e),n=h.normalizeToArray(n);var o=h.mappingToExists(n,e);t[i]=p(o,function(t){return t.option&&t.exist?g(t.exist,t.option,!0):t.exist||t.option})}else t[i]=g(n,e,!0)}})}var u=i(1),h=i(5),c=i(13),d=u.each,f=u.clone,p=u.map,g=u.merge,m=/^(min|max)?(.+)$/;n.prototype={constructor:n,setOption:function(t,e){t=f(t,!0);var i=this._optionBackup,n=o.call(this,t,e,!i);this._newBaseOption=n.baseOption,i?(l(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=p(e.timelineOptions,f),this._mediaList=p(e.mediaList,f),this._mediaDefault=f(e.mediaDefault),this._currentMediaIndices=[],f(t?e.baseOption:this._newBaseOption)},getTimelineOption:function(t){var e,i=this._timelineOptions;if(i.length){var n=t.getComponent("timeline");n&&(e=f(i[n.getCurrentIndex()],!0))}return e},getMediaOption:function(t){var e=this._api.getWidth(),i=this._api.getHeight(),n=this._mediaList,o=this._mediaDefault,r=[],l=[];if(!n.length&&!o)return l;for(var u=0,h=n.length;u<h;u++)a(n[u].query,e,i)&&r.push(u);return!r.length&&o&&(r=[-1]),r.length&&!s(r,this._currentMediaIndices)&&(l=p(r,function(t){return f(t===-1?o.option:n[t].option)})),this._currentMediaIndices=r,l}},t.exports=n},function(t,e){var i="";"undefined"!=typeof navigator&&(i=navigator.platform||""),t.exports={color:["#c23531","#2f4554","#61a0a8","#d48265","#91c7ae","#749f83","#ca8622","#bda29a","#6e7074","#546570","#c4ccd3"],textStyle:{fontFamily:i.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}},function(t,e,i){t.exports={getAreaStyle:i(31)([["fill","color"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["opacity"],["shadowColor"]])}},function(t,e){t.exports={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")}}}},function(t,e,i){var n=i(31)([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"],["textPosition"],["textAlign"]]);t.exports={getItemStyle:function(t,e){var i=n.call(this,t,e),o=this.getBorderLineDash();return o&&(i.lineDash=o),i},getBorderLineDash:function(){var t=this.get("borderType");return"solid"===t||null==t?null:"dashed"===t?[5,5]:[1,1]}}},function(t,e,i){var n=i(31)([["lineWidth","width"],["stroke","color"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]);t.exports={getLineStyle:function(t){var e=n.call(this,t),i=this.getLineDash(e.lineWidth);return i&&(e.lineDash=i),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?null:"dashed"===e?[n,n]:[i,i]}}},function(t,e,i){function n(t,e){return t&&t.getShallow(e)}var o=i(16);t.exports={getTextColor:function(){var t=this.ecModel;return this.getShallow("color")||t&&t.get("textStyle.color")},getFont:function(){var t=this.ecModel,e=t&&t.getModel("textStyle");return[this.getShallow("fontStyle")||n(e,"fontStyle"),this.getShallow("fontWeight")||n(e,"fontWeight"),(this.getShallow("fontSize")||n(e,"fontSize")||12)+"px",this.getShallow("fontFamily")||n(e,"fontFamily")||"sans-serif"].join(" ")},getTextRect:function(t){return o.getBoundingRect(t,this.getFont(),this.getShallow("align"),this.getShallow("baseline"))},truncateText:function(t,e,i,n){return o.truncateText(t,e,this.getFont(),i,n)}}},function(t,e,i){function n(t,e){e=e.split(",");for(var i=t,n=0;n<e.length&&(i=i&&i[e[n]],null!=i);n++);return i}function o(t,e,i,n){e=e.split(",");for(var o,a=t,r=0;r<e.length-1;r++)o=e[r],null==a[o]&&(a[o]={}),a=a[o];(n||null==a[e[r]])&&(a[e[r]]=i)}function a(t){c(l,function(e){e[0]in t&&!(e[1]in t)&&(t[e[1]]=t[e[0]])})}var r=i(1),s=i(148),l=[["x","left"],["y","top"],["x2","right"],["y2","bottom"]],u=["grid","geo","parallel","legend","toolbox","title","visualMap","dataZoom","timeline"],h=["bar","boxplot","candlestick","chord","effectScatter","funnel","gauge","lines","graph","heatmap","line","map","parallel","pie","radar","sankey","scatter","treemap"],c=r.each;t.exports=function(t){c(t.series,function(t){if(r.isObject(t)){var e=t.type;if(s(t),"pie"!==e&&"gauge"!==e||null!=t.clockWise&&(t.clockwise=t.clockWise),"gauge"===e){var i=n(t,"pointer.color");null!=i&&o(t,"itemStyle.normal.color",i)}for(var l=0;l<h.length;l++)if(h[l]===t.type){a(t);break}}}),t.dataRange&&(t.visualMap=t.dataRange),c(u,function(e){var i=t[e];i&&(r.isArray(i)||(i=[i]),c(i,function(t){a(t)}))})}},function(t,e,i){function n(t){var e=t&&t.itemStyle;e&&o.each(a,function(i){var n=e.normal,a=e.emphasis;n&&n[i]&&(t[i]=t[i]||{},t[i].normal?o.merge(t[i].normal,n[i]):t[i].normal=n[i],n[i]=null),a&&a[i]&&(t[i]=t[i]||{},t[i].emphasis?o.merge(t[i].emphasis,a[i]):t[i].emphasis=a[i],a[i]=null)})}var o=i(1),a=["areaStyle","lineStyle","nodeStyle","linkStyle","chordStyle","label","labelLine"];t.exports=function(t){if(t){n(t),n(t.markPoint),n(t.markLine);var e=t.data;if(e){for(var i=0;i<e.length;i++)n(e[i]);var a=t.markPoint;if(a&&a.data)for(var r=a.data,i=0;i<r.length;i++)n(r[i]);var s=t.markLine;if(s&&s.data)for(var l=s.data,i=0;i<l.length;i++)o.isArray(l[i])?(n(l[i][0]),n(l[i][1])):n(l[i])}}}},function(t,e){var i={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 e},min:function(t){for(var e=1/0,i=0;i<t.length;i++)t[i]<e&&(e=t[i]);return e},nearest:function(t){return t[0]}},n=function(t,e){return Math.round(t.length/2)};t.exports=function(t,e,o){e.eachSeriesByType(t,function(t){var e=t.getData(),o=t.get("sampling"),a=t.coordinateSystem;if("cartesian2d"===a.type&&o){var r=a.getBaseAxis(),s=a.getOtherAxis(r),l=r.getExtent(),u=l[1]-l[0],h=Math.round(e.count()/u);if(h>1){var c;"string"==typeof o?c=i[o]:"function"==typeof o&&(c=o),c&&(e=e.downSample(s.dim,1/h,c,n),t.setData(e))}}},this)}},function(t,e,i){function n(t,e){return c(t,h(e))}var o=i(1),a=i(34),r=i(4),s=i(43),l=a.prototype,u=s.prototype,h=r.getPrecisionSafe,c=r.round,d=Math.floor,f=Math.ceil,p=Math.pow,g=Math.log,m=a.extend({type:"log",base:10,$constructor:function(){a.apply(this,arguments),this._originalScale=new s},getTicks:function(){var t=this._originalScale,e=this._extent,i=t.getExtent();return o.map(u.getTicks.call(this),function(o){var a=r.round(p(this.base,o));return a=o===e[0]&&t.__fixMin?n(a,i[0]):a,a=o===e[1]&&t.__fixMax?n(a,i[1]):a},this)},getLabel:u.getLabel,scale:function(t){return t=l.scale.call(this,t),p(this.base,t)},setExtent:function(t,e){var i=this.base;t=g(t)/g(i),e=g(e)/g(i),u.setExtent.call(this,t,e)},getExtent:function(){var t=this.base,e=l.getExtent.call(this);e[0]=p(t,e[0]),e[1]=p(t,e[1]);var i=this._originalScale,o=i.getExtent();return i.__fixMin&&(e[0]=n(e[0],o[0])),i.__fixMax&&(e[1]=n(e[1],o[1])),e},unionExtent:function(t){this._originalScale.unionExtent(t);var e=this.base;t[0]=g(t[0])/g(e),t[1]=g(t[1])/g(e),l.unionExtent.call(this,t)},unionExtentFromData:function(t,e){this.unionExtent(t.getDataExtent(e,!0,function(t){return t>0}))},niceTicks:function(t){t=t||10;var e=this._extent,i=e[1]-e[0];if(!(i===1/0||i<=0)){var n=r.quantity(i),o=t/i*n;for(o<=.5&&(n*=10);!isNaN(n)&&Math.abs(n)<1&&Math.abs(n)>0;)n*=10;var a=[r.round(f(e[0]/n)*n),r.round(d(e[1]/n)*n)];this._interval=n,this._niceExtent=a}},niceExtent:function(t,e,i){u.niceExtent.call(this,t,e,i);var n=this._originalScale;n.__fixMin=e,n.__fixMax=i}});o.each(["contain","normalize"],function(t){m.prototype[t]=function(e){return e=g(e)/g(this.base),l[t].call(this,e)}}),m.create=function(){return new m},t.exports=m},function(t,e,i){var n=i(1),o=i(34),a=o.prototype,r=o.extend({type:"ordinal",init:function(t,e){this._data=t,this._extent=e||[0,t.length-1]},parse:function(t){return"string"==typeof t?n.indexOf(this._data,t):Math.round(t)},contain:function(t){return t=this.parse(t),a.contain.call(this,t)&&null!=this._data[t]},normalize:function(t){return a.normalize.call(this,this.parse(t))},scale:function(t){return Math.round(a.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){return this._data[t]},count:function(){return this._extent[1]-this._extent[0]+1},unionExtentFromData:function(t,e){this.unionExtent(t.getDataExtent(e,!1))},niceTicks:n.noop,niceExtent:n.noop});r.create=function(){return new r},t.exports=r},function(t,e,i){var n=i(1),o=i(4),a=i(7),r=i(43),s=r.prototype,l=Math.ceil,u=Math.floor,h=1e3,c=60*h,d=60*c,f=24*d,p=function(t,e,i,n){for(;i<n;){var o=i+n>>>1;t[o][2]<e?i=o+1:n=o}return i},g=r.extend({type:"time",getLabel:function(t){var e=this._stepLvl,i=new Date(t);return a.formatTime(e[0],i)},niceExtent:function(t,e,i){var n=this._extent;if(n[0]===n[1]&&(n[0]-=f,n[1]+=f),n[1]===-(1/0)&&n[0]===1/0){var a=new Date;n[1]=new Date(a.getFullYear(),a.getMonth(),a.getDate()),n[0]=n[1]-f}this.niceTicks(t);var r=this._interval;e||(n[0]=o.round(u(n[0]/r)*r)),i||(n[1]=o.round(l(n[1]/r)*r))},niceTicks:function(t){t=t||10;var e=this._extent,i=e[1]-e[0],n=i/t,a=m.length,r=p(m,n,0,a),s=m[Math.min(r,a-1)],h=s[2];if("year"===s[0]){var c=i/h,d=o.nice(c/t,!0);h*=d}var f=[l(e[0]/h)*h,u(e[1]/h)*h];this._stepLvl=s,this._interval=h,this._niceExtent=f},parse:function(t){return+o.parseDate(t)}});n.each(["contain","normalize"],function(t){g.prototype[t]=function(e){return s[t].call(this,this.parse(e))}});var m=[["hh:mm:ss",1,h],["hh:mm:ss",5,5*h],["hh:mm:ss",10,10*h],["hh:mm:ss",15,15*h],["hh:mm:ss",30,30*h],["hh:mm\nMM-dd",1,c],["hh:mm\nMM-dd",5,5*c],["hh:mm\nMM-dd",10,10*c],["hh:mm\nMM-dd",15,15*c],["hh:mm\nMM-dd",30,30*c],["hh:mm\nMM-dd",1,d],["hh:mm\nMM-dd",2,2*d],["hh:mm\nMM-dd",6,6*d],["hh:mm\nMM-dd",12,12*d],["MM-dd\nyyyy",1,f],["week",7,7*f],["month",1,31*f],["quarter",3,380*f/4],["half-year",6,380*f/2],["year",1,380*f]];g.create=function(){return new g},t.exports=g},function(t,e,i){var n=i(41);t.exports=function(t){function e(e){var i=(e.visualColorAccessPath||"itemStyle.normal.color").split("."),o=e.getData(),a=e.get(i)||e.getColorFromPalette(e.get("name"));o.setVisual("color",a),t.isSeriesFiltered(e)||("function"!=typeof a||a instanceof n||o.each(function(t){o.setItemVisual(t,"color",a(e.getDataParams(t)))}),o.each(function(t){var e=o.getItemModel(t),n=e.get(i,!0);null!=n&&o.setItemVisual(t,"color",n)}))}t.eachRawSeries(e)}},function(t,e,i){"use strict";function n(t,e,i){return{type:t,event:i,target:e,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}}function o(){}function a(t,e,i){if(t[t.rectHover?"rectContain":"contain"](e,i)){for(var n=t;n;){if(n.silent||n.clipPath&&!n.clipPath.contain(e,i))return!1;n=n.parent}return!0}return!1}var r=i(1),s=i(181),l=i(23);o.prototype.dispose=function(){};var u=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],h=function(t,e,i,n){l.call(this),this.storage=t,this.painter=e,this.painterRoot=n,i=i||new o,this.proxy=i,i.handler=this,this._hovered,this._lastTouchMoment,this._lastX,this._lastY,s.call(this),r.each(u,function(t){i.on&&i.on(t,this[t],this)},this)};h.prototype={constructor:h,mousemove:function(t){var e=t.zrX,i=t.zrY,n=this.findHover(e,i,null),o=this._hovered,a=this.proxy;this._hovered=n,a.setCursor&&a.setCursor(n?n.cursor:"default"),o&&n!==o&&o.__zr&&this.dispatchToElement(o,"mouseout",t),this.dispatchToElement(n,"mousemove",t),n&&n!==o&&this.dispatchToElement(n,"mouseover",t)},mouseout:function(t){this.dispatchToElement(this._hovered,"mouseout",t);var e,i=t.toElement||t.relatedTarget;do i=i&&i.parentNode;while(i&&9!=i.nodeType&&!(e=i===this.painterRoot));!e&&this.trigger("globalout",{event:t})},resize:function(t){this._hovered=null},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){for(var o="on"+e,a=n(e,t,i),r=t;r&&(r[o]&&(a.cancelBubble=r[o].call(r,a)),r.trigger(e,a),r=r.parent,!a.cancelBubble););a.cancelBubble||(this.trigger(e,a),this.painter&&this.painter.eachOtherLayer(function(t){"function"==typeof t[o]&&t[o].call(t,a),t.trigger&&t.trigger(e,a)}))},findHover:function(t,e,i){for(var n=this.storage.getDisplayList(),o=n.length-1;o>=0;o--)if(!n[o].silent&&n[o]!==i&&!n[o].ignore&&a(n[o],t,e))return n[o]}},r.each(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],function(t){h.prototype[t]=function(e){var i=this.findHover(e.zrX,e.zrY,null);if("mousedown"===t)this._downel=i,this._upel=i;else if("mosueup"===t)this._upel=i;else if("click"===t&&this._downel!==this._upel)return;this.dispatchToElement(i,t,e)}}),r.mixin(h,l),r.mixin(h,s),t.exports=h},function(t,e,i){function n(){return!1}function o(t,e,i,n){var o=document.createElement(e),a=i.getWidth(),r=i.getHeight(),s=o.style;return s.position="absolute",s.left=0,s.top=0,s.width=a+"px",s.height=r+"px",o.width=a*n,o.height=r*n,o.setAttribute("data-zr-dom-id",t),o}var a=i(1),r=i(35),s=i(72),l=i(71),u=function(t,e,i){var s;i=i||r.devicePixelRatio,"string"==typeof t?s=o(t,"canvas",e,i):a.isObject(t)&&(s=t,t=s.id),this.id=t,this.dom=s;var l=s.style;l&&(s.onselectstart=n,l["-webkit-user-select"]="none",l["user-select"]="none",l["-webkit-touch-callout"]="none",l["-webkit-tap-highlight-color"]="rgba(0,0,0,0)",l.padding=0,l.margin=0,l["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};u.prototype={constructor:u,elCount:0,__dirty:!0,initContext:function(){this.ctx=this.dom.getContext("2d"),this.ctx.dpr=this.dpr},createBackBuffer:function(){var t=this.dpr;this.domBack=o("back-"+this.id,"canvas",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,o=n.style,a=this.domBack;o.width=t+"px",o.height=e+"px",n.width=t*i,n.height=e*i,a&&(a.width=t*i,a.height=e*i,1!=i&&this.ctxBack.scale(i,i))},clear:function(t){var e=this.dom,i=this.ctx,n=e.width,o=e.height,a=this.clearColor,r=this.motionBlur&&!t,u=this.lastFrameAlpha,h=this.dpr;if(r&&(this.domBack||this.createBackBuffer(),this.ctxBack.globalCompositeOperation="copy",this.ctxBack.drawImage(e,0,0,n/h,o/h)),i.clearRect(0,0,n,o),a){var c;a.colorStops?(c=a.__canvasGradient||s.getGradient(i,a,{x:0,y:0,width:n,height:o}),a.__canvasGradient=c):a.image&&(c=l.prototype.getCanvasPattern.call(a,i)),i.save(),i.fillStyle=c||a,i.fillRect(0,0,n,o),i.restore()}if(r){var d=this.domBack;i.save(),i.globalAlpha=u,i.drawImage(d,0,0,n,o),i.restore()}}},t.exports=u},function(t,e,i){"use strict";function n(t){return parseInt(t,10)}function o(t){return!!t&&(!!t.__builtin__||"function"==typeof t.resize&&"function"==typeof t.refresh)}function a(t){t.__unusedCount++}function r(t){1==t.__unusedCount&&t.clear()}function s(t,e,i){return x.copy(t.getBoundingRect()),t.transform&&x.applyTransform(t.transform),_.width=e,_.height=i,!x.intersect(_)}function l(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}function u(t,e){for(var i=0;i<t.length;i++){var n=t[i],o=n.path;n.setTransform(e),o.beginPath(e),n.buildPath(o,n.shape),e.clip(),n.restoreTransform(e)}}function h(t,e){var i=document.createElement("div");return i.style.cssText=["position:relative","overflow:hidden","width:"+t+"px","height:"+e+"px","padding:0","margin:0","border-width:0"].join(";")+";",i}var c=i(35),d=i(1),f=i(52),p=i(11),g=i(51),m=i(155),v=i(67),y=5,x=new p(0,0,0,0),_=new p(0,0,0,0),b=function(t,e,i){var n=!t.nodeName||"CANVAS"===t.nodeName.toUpperCase();this._opts=i=d.extend({},i||{}),this.dpr=i.devicePixelRatio||c.devicePixelRatio,this._singleCanvas=n,this.root=t;var o=t.style;o&&(o["-webkit-tap-highlight-color"]="transparent",o["-webkit-user-select"]=o["user-select"]=o["-webkit-touch-callout"]="none",t.innerHTML=""),this.storage=e;var a=this._zlevelList=[],r=this._layers={};if(this._layerConfig={},n){null!=i.width&&(t.width=i.width),null!=i.height&&(t.height=i.height);var s=t.width,l=t.height;this._width=s,this._height=l;var u=new m(t,this,1);u.initContext(),r[0]=u,a.push(0),this._domRoot=t}else{this._width=this._getSize(0),this._height=this._getSize(1);var f=this._domRoot=h(this._width,this._height);t.appendChild(f)}this._progressiveLayers=[],this._hoverlayer,this._hoverElements=[]};b.prototype={constructor:b,isSingleCanvas:function(){return this._singleCanvas},getViewportRoot:function(){return this._domRoot},refresh:function(t){var e=this.storage.getDisplayList(!0),i=this._zlevelList;this._paintList(e,t);for(var n=0;n<i.length;n++){var o=i[n],a=this._layers[o];!a.__builtin__&&a.refresh&&a.refresh()}return this.refreshHover(),this._progressiveLayers.length&&this._startProgessive(),this},addHover:function(t,e){if(!t.__hoverMir){var i=new t.constructor({style:t.style,shape:t.shape});i.__from=t,t.__hoverMir=i,i.setStyle(e),this._hoverElements.push(i)}},removeHover:function(t){var e=t.__hoverMir,i=this._hoverElements,n=d.indexOf(i,e);n>=0&&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){g(t,this.storage.displayableSortFunc),i||(i=this._hoverlayer=this.getLayer(1e5));var n={};i.ctx.save();for(var o=0;o<e;){var a=t[o],r=a.__from;r&&r.__zr?(o++,r.invisible||(a.transform=r.transform,a.invTransform=r.invTransform,a.__clipPaths=r.__clipPaths,this._doPaintEl(a,i,!0,n))):(t.splice(o,1),r.__hoverMir=null,e--)}i.ctx.restore()}},_startProgessive:function(){function t(){i===e._progressiveToken&&e.storage&&(e._doPaintList(e.storage.getDisplayList()),e._furtherProgressive?(e._progress++,v(t)):e._progressiveToken=-1)}var e=this;if(e._furtherProgressive){var i=e._progressiveToken=+new Date;e._progress++,v(t)}},_clearProgressive:function(){this._progressiveToken=-1,this._progress=0,d.each(this._progressiveLayers,function(t){t.__dirty&&t.clear()})},_paintList:function(t,e){null==e&&(e=!1),this._updateLayerStatus(t),this._clearProgressive(),this.eachBuiltinLayer(a),this._doPaintList(t,e),this.eachBuiltinLayer(r)},_doPaintList:function(t,e){function i(t){var e=a.dpr||1;a.save(),a.globalAlpha=1,a.shadowBlur=0,n.__dirty=!0,a.setTransform(1,0,0,1,0,0),a.drawImage(t.dom,0,0,h*e,c*e),a.restore()}for(var n,o,a,r,s,l,u=0,h=this._width,c=this._height,p=this._progress,g=0,m=t.length;g<m;g++){var v=t[g],x=this._singleCanvas?0:v.zlevel,_=v.__frame;if(_<0&&s&&(i(s),s=null),o!==x&&(a&&a.restore(),r={},o=x,n=this.getLayer(o),n.__builtin__||f("ZLevel "+o+" has been used by unkown layer "+n.id),a=n.ctx,a.save(),n.__unusedCount=0,(n.__dirty||e)&&n.clear()),n.__dirty||e){if(_>=0){if(!s){if(s=this._progressiveLayers[Math.min(u++,y-1)],s.ctx.save(),s.renderScope={},s&&s.__progress>s.__maxProgress){g=s.__nextIdxNotProg-1;continue}l=s.__progress,s.__dirty||(p=l),s.__progress=p+1}_===p&&this._doPaintEl(v,s,!0,s.renderScope)}else this._doPaintEl(v,n,e,r);v.__dirty=!1}}s&&i(s),a&&a.restore(),this._furtherProgressive=!1,d.each(this._progressiveLayers,function(t){t.__maxProgress>=t.__progress&&(this._furtherProgressive=!0)},this)},_doPaintEl:function(t,e,i,n){var o=e.ctx,a=t.transform;if((e.__dirty||i)&&!t.invisible&&0!==t.style.opacity&&(!a||a[0]||a[3])&&(!t.culling||!s(t,this._width,this._height))){var r=t.__clipPaths;(n.prevClipLayer!==e||l(r,n.prevElClipPaths))&&(n.prevElClipPaths&&(n.prevClipLayer.ctx.restore(),n.prevClipLayer=n.prevElClipPaths=null,n.prevEl=null),r&&(o.save(),u(r,o),n.prevClipLayer=e,n.prevElClipPaths=r)),t.beforeBrush&&t.beforeBrush(o),t.brush(o,n.prevEl||null),n.prevEl=t,t.afterBrush&&t.afterBrush(o)}},getLayer:function(t){if(this._singleCanvas)return this._layers[0];var e=this._layers[t];return e||(e=new m("zr_"+t,this,this.dpr),e.__builtin__=!0,this._layerConfig[t]&&d.merge(e,this._layerConfig[t],!0),this.insertLayer(t,e),e.initContext()),e},insertLayer:function(t,e){var i=this._layers,n=this._zlevelList,a=n.length,r=null,s=-1,l=this._domRoot;if(i[t])return void f("ZLevel "+t+" has been used already");if(!o(e))return void f("Layer of zlevel "+t+" is not valid");if(a>0&&t>n[0]){for(s=0;s<a-1&&!(n[s]<t&&n[s+1]>t);s++);r=i[n[s]]}if(n.splice(s+1,0,t),i[t]=e,!e.virtual)if(r){var u=r.dom;u.nextSibling?l.insertBefore(e.dom,u.nextSibling):l.appendChild(e.dom)}else l.firstChild?l.insertBefore(e.dom,l.firstChild):l.appendChild(e.dom)},eachLayer:function(t,e){var i,n,o=this._zlevelList;for(n=0;n<o.length;n++)i=o[n],t.call(e,this._layers[i],i)},eachBuiltinLayer:function(t,e){var i,n,o,a=this._zlevelList;for(o=0;o<a.length;o++)n=a[o],i=this._layers[n],i.__builtin__&&t.call(e,i,n)},eachOtherLayer:function(t,e){var i,n,o,a=this._zlevelList;for(o=0;o<a.length;o++)n=a[o],i=this._layers[n],i.__builtin__||t.call(e,i,n)},getLayers:function(){return this._layers},_updateLayerStatus:function(t){var e=this._layers,i=this._progressiveLayers,n={},o={};this.eachBuiltinLayer(function(t,e){n[e]=t.elCount,t.elCount=0,t.__dirty=!1}),d.each(i,function(t,e){o[e]=t.elCount,t.elCount=0,t.__dirty=!1});for(var a,r,s=0,l=0,u=0,h=t.length;u<h;u++){var c=t[u],f=this._singleCanvas?0:c.zlevel,p=e[f],g=c.progressive;if(p&&(p.elCount++,p.__dirty=p.__dirty||c.__dirty),g>=0){r!==g&&(r=g,l++);var v=c.__frame=l-1;if(!a){var x=Math.min(s,y-1);a=i[x],a||(a=i[x]=new m("progressive",this,this.dpr),a.initContext()),a.__maxProgress=0}a.__dirty=a.__dirty||c.__dirty,a.elCount++,a.__maxProgress=Math.max(a.__maxProgress,v),a.__maxProgress>=a.__progress&&(p.__dirty=!0)}else c.__frame=-1,a&&(a.__nextIdxNotProg=u,s++,a=null)}a&&(s++,a.__nextIdxNotProg=u),this.eachBuiltinLayer(function(t,e){n[e]!==t.elCount&&(t.__dirty=!0)}),i.length=Math.min(s,y),d.each(i,function(t,e){o[e]!==t.elCount&&(c.__dirty=!0),t.__dirty&&(t.__progress=0)})},clear:function(){return this.eachBuiltinLayer(this._clearLayer),this},_clearLayer:function(t){t.clear()},configLayer:function(t,e){if(e){var i=this._layerConfig;i[t]?d.merge(i[t],e,!0):i[t]=e;var n=this._layers[t];n&&d.merge(n,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(d.indexOf(i,t),1))},resize:function(t,e){var i=this._domRoot;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||e!=this._height){i.style.width=t+"px",i.style.height=e+"px";for(var o in this._layers)this._layers.hasOwnProperty(o)&&this._layers[o].resize(t,e);d.each(this._progressiveLayers,function(i){i.resize(t,e)}),this.refresh(!0)}return this._width=t,this._height=e,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)return this._layers[0].dom;var e=new m("image",this,t.pixelRatio||this.dpr);e.initContext(),e.clearColor=t.backgroundColor,e.clear();for(var i=this.storage.getDisplayList(!0),n={},o=0;o<i.length;o++){var a=i[o];this._doPaintEl(a,e,!0,n)}return e.dom},getWidth:function(){return this._width},getHeight:function(){return this._height},_getSize:function(t){var e=this._opts,i=["width","height"][t],o=["clientWidth","clientHeight"][t],a=["paddingLeft","paddingTop"][t],r=["paddingRight","paddingBottom"][t];if(null!=e[i]&&"auto"!==e[i])return parseFloat(e[i]);var s=this.root,l=document.defaultView.getComputedStyle(s);return(s[o]||n(l[i])||n(s.style[i]))-(n(l[a])||0)-(n(l[r])||0)|0},pathToImage:function(t,e){e=e||this.dpr;var n=document.createElement("canvas"),o=n.getContext("2d"),a=t.getBoundingRect(),r=t.style,s=r.shadowBlur,l=r.shadowOffsetX,u=r.shadowOffsetY,h=r.hasStroke()?r.lineWidth:0,c=Math.max(h/2,-l+s),d=Math.max(h/2,l+s),f=Math.max(h/2,-u+s),p=Math.max(h/2,u+s),g=a.width+c+d,m=a.height+f+p;n.width=g*e,n.height=m*e,o.scale(e,e),o.clearRect(0,0,g,m),o.dpr=e;var v={position:t.position,rotation:t.rotation,scale:t.scale};t.position=[c-a.x,f-a.y],t.rotation=0,t.scale=[1,1],t.updateTransform(),t&&t.brush(o);var y=i(53),x=new y({style:{x:0,y:0,image:n}});return null!=v.position&&(x.position=t.position=v.position),null!=v.rotation&&(x.rotation=t.rotation=v.rotation),null!=v.scale&&(x.scale=t.scale=v.scale),x}},t.exports=b},function(t,e,i){"use strict";function n(t,e){return t.zlevel===e.zlevel?t.z===e.z?t.z2-e.z2:t.z-e.z:t.zlevel-e.zlevel}var o=i(1),a=i(9),r=i(36),s=i(51),l=function(){this._elements={},this._roots=[],this._displayList=[],this._displayListLen=0};l.prototype={constructor:l,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,o=0,r=e.length;o<r;o++)this._updateAndAddDisplayable(e[o],null,t);i.length=this._displayListLen,a.canvasSupported&&s(i,n)},_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 o=n,a=t;o;)o.parent=a,o.updateTransform(),e.push(o),a=o,o=o.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){this._elements[t.id]||(t instanceof r&&t.addChildrenToStorage(this),this.addToMap(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 r&&i.delChildrenFromStorage(this)}return this._elements={},this._roots=[],this._displayList=[],void(this._displayListLen=0)}if(t instanceof Array)for(var e=0,n=t.length;e<n;e++)this.delRoot(t[e]);else{var a;a="string"==typeof t?this._elements[t]:t;var s=o.indexOf(this._roots,a);s>=0&&(this.delFromMap(a.id),this._roots.splice(s,1),a instanceof r&&a.delChildrenFromStorage(this))}},addToMap:function(t){return t instanceof r&&(t.__storage=this),t.dirty(!1),this._elements[t.id]=t,this},get:function(t){return this._elements[t]},delFromMap:function(t){var e=this._elements,i=e[t];return i&&(delete e[t],i instanceof r&&(i.__storage=null)),this},dispose:function(){this._elements=this._renderList=this._roots=null},displayableSortFunc:n},t.exports=l},function(t,e,i){"use strict";var n=i(1),o=i(20).Dispatcher,a=i(67),r=i(66),s=function(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,o.call(this)};s.prototype={constructor:s,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=n.indexOf(this._clips,t);e>=0&&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,o=[],a=[],r=0;r<n;r++){var s=i[r],l=s.step(t,e);l&&(o.push(l),a.push(s))}for(var r=0;r<n;)i[r]._needsRemove?(i[r]=i[n-1],i.pop(),n--):r++;n=o.length;for(var r=0;r<n;r++)a[r].fire(o[r]);this._time=t,this.onframe(e),this.trigger("frame",e),this.stage.update&&this.stage.update()},_startLoop:function(){function t(){e._running&&(a(t),!e._paused&&e._update())}var e=this;this._running=!0,a(t)},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=[]},animate:function(t,e){e=e||{};var i=new r(t,e.loop,e.getter,e.setter);return this.addAnimator(i),i}},n.mixin(s,o),t.exports=s},function(t,e,i){function n(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}var o=i(160);n.prototype={constructor:n,step:function(t,e){if(this._initialized||(this._startTime=t+this._delay,this._initialized=!0),this._paused)return void(this._pausedTime+=e);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?o[n]:n,r="function"==typeof a?a(i):i;return this.fire("frame",r),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){t="on"+t,this[t]&&this[t](this._target,e)},pause:function(){this._paused=!0},resume:function(){this._paused=!1}},t.exports=n},function(t,e){var i={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*(-Math.pow(2,-10*(t-1))+2)},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,n=.4;return 0===t?0:1===t?1:(!i||i<1?(i=1,e=n/4):e=n*Math.asin(1/i)/(2*Math.PI),-(i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)))},elasticOut:function(t){var e,i=.1,n=.4;return 0===t?0:1===t?1:(!i||i<1?(i=1,e=n/4):e=n*Math.asin(1/i)/(2*Math.PI),i*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/n)+1)},elasticInOut:function(t){var e,i=.1,n=.4;return 0===t?0:1===t?1:(!i||i<1?(i=1,e=n/4):e=n*Math.asin(1/i)/(2*Math.PI),(t*=2)<1?-.5*(i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)):i*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*.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?.5*(t*t*((e+1)*t-e)):.5*((t-=2)*t*((e+1)*t+e)+2)},bounceIn:function(t){return 1-i.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*i.bounceIn(2*t):.5*i.bounceOut(2*t-1)+.5}};t.exports=i},function(t,e,i){var n=i(68).normalizeRadian,o=2*Math.PI;t.exports={containStroke:function(t,e,i,a,r,s,l,u,h){if(0===l)return!1;var c=l;u-=t,h-=e;var d=Math.sqrt(u*u+h*h);if(d-c>i||d+c<i)return!1;if(Math.abs(a-r)%o<1e-4)return!0;if(s){var f=a;a=n(r),r=n(f)}else a=n(a),r=n(r);a>r&&(r+=o);var p=Math.atan2(h,u);return p<0&&(p+=o),p>=a&&p<=r||p+o>=a&&p+o<=r}}},function(t,e,i){var n=i(21);t.exports={containStroke:function(t,e,i,o,a,r,s,l,u,h,c){if(0===u)return!1;var d=u;if(c>e+d&&c>o+d&&c>r+d&&c>l+d||c<e-d&&c<o-d&&c<r-d&&c<l-d||h>t+d&&h>i+d&&h>a+d&&h>s+d||h<t-d&&h<i-d&&h<a-d&&h<s-d)return!1;var f=n.cubicProjectPoint(t,e,i,o,a,r,s,l,h,c,null);return f<=d/2}}},function(t,e,i){"use strict";function n(t,e){return Math.abs(t-e)<x}function o(){var t=b[0];b[0]=b[1],b[1]=t}function a(t,e,i,n,a,r,s,l,u,h){if(h>e&&h>n&&h>r&&h>l||h<e&&h<n&&h<r&&h<l)return 0;var c=g.cubicRootAt(e,n,r,l,h,_);if(0===c)return 0;for(var d,f,p=0,m=-1,v=0;v<c;v++){var y=_[v],x=0===y||1===y?.5:1,w=g.cubicAt(t,i,a,s,y);w<u||(m<0&&(m=g.cubicExtrema(e,n,r,l,b),b[1]<b[0]&&m>1&&o(),d=g.cubicAt(e,n,r,l,b[0]),m>1&&(f=g.cubicAt(e,n,r,l,b[1]))),p+=2==m?y<b[0]?d<e?x:-x:y<b[1]?f<d?x:-x:l<f?x:-x:y<b[0]?d<e?x:-x:l<d?x:-x)}return p}function r(t,e,i,n,o,a,r,s){if(s>e&&s>n&&s>a||s<e&&s<n&&s<a)return 0;var l=g.quadraticRootAt(e,n,a,s,_);if(0===l)return 0;var u=g.quadraticExtremum(e,n,a);if(u>=0&&u<=1){for(var h=0,c=g.quadraticAt(e,n,a,u),d=0;d<l;d++){var f=0===_[d]||1===_[d]?.5:1,p=g.quadraticAt(t,i,o,_[d]);p<r||(h+=_[d]<u?c<e?f:-f:a<c?f:-f)}return h}var f=0===_[0]||1===_[0]?.5:1,p=g.quadraticAt(t,i,o,_[0]);return p<r?0:a<e?f:-f}function s(t,e,i,n,o,a,r,s){if(s-=e,s>i||s<-i)return 0;var l=Math.sqrt(i*i-s*s);_[0]=-l,_[1]=l;var u=Math.abs(n-o);if(u<1e-4)return 0;if(u%y<1e-4){n=0,o=y;var h=a?1:-1;return r>=_[0]+t&&r<=_[1]+t?h:0}if(a){var l=n;n=p(o),o=p(l)}else n=p(n),o=p(o);n>o&&(o+=y);for(var c=0,d=0;d<2;d++){var f=_[d];if(f+t>r){var g=Math.atan2(s,f),h=a?1:-1;g<0&&(g=y+g),(g>=n&&g<=o||g+y>=n&&g+y<=o)&&(g>Math.PI/2&&g<1.5*Math.PI&&(h=-h),c+=h)}}return c}function l(t,e,i,o,l){for(var h=0,p=0,g=0,y=0,x=0,_=0;_<t.length;){var b=t[_++];switch(b===u.M&&_>1&&(i||(h+=m(p,g,y,x,o,l))),1==_&&(p=t[_],g=t[_+1],y=p,x=g),b){case u.M:y=t[_++],x=t[_++],p=y,g=x;break;case u.L:if(i){if(v(p,g,t[_],t[_+1],e,o,l))return!0}else h+=m(p,g,t[_],t[_+1],o,l)||0;p=t[_++],g=t[_++];break;case u.C:if(i){if(c.containStroke(p,g,t[_++],t[_++],t[_++],t[_++],t[_],t[_+1],e,o,l))return!0}else h+=a(p,g,t[_++],t[_++],t[_++],t[_++],t[_],t[_+1],o,l)||0;p=t[_++],g=t[_++];break;case u.Q:if(i){if(d.containStroke(p,g,t[_++],t[_++],t[_],t[_+1],e,o,l))return!0}else h+=r(p,g,t[_++],t[_++],t[_],t[_+1],o,l)||0;p=t[_++],g=t[_++];break;case u.A:var w=t[_++],S=t[_++],M=t[_++],I=t[_++],T=t[_++],A=t[_++],L=(t[_++],1-t[_++]),C=Math.cos(T)*M+w,D=Math.sin(T)*I+S;_>1?h+=m(p,g,C,D,o,l):(y=C,x=D);var P=(o-w)*I/M+w;if(i){if(f.containStroke(w,S,I,T,T+A,L,e,P,l))return!0}else h+=s(w,S,I,T,T+A,L,P,l);p=Math.cos(T+A)*M+w,g=Math.sin(T+A)*I+S;break;case u.R:y=p=t[_++],x=g=t[_++];var k=t[_++],O=t[_++],C=y+k,D=x+O;if(i){if(v(y,x,C,x,e,o,l)||v(C,x,C,D,e,o,l)||v(C,D,y,D,e,o,l)||v(y,D,y,x,e,o,l))return!0}else h+=m(C,x,C,D,o,l),h+=m(y,D,y,x,o,l);break;case u.Z:if(i){if(v(p,g,y,x,e,o,l))return!0}else h+=m(p,g,y,x,o,l);p=y,g=x}}return i||n(g,x)||(h+=m(p,g,y,x,o,l)||0),0!==h}var u=i(30).CMD,h=i(98),c=i(162),d=i(99),f=i(161),p=i(68).normalizeRadian,g=i(21),m=i(100),v=h.containStroke,y=2*Math.PI,x=1e-4,_=[-1,-1,-1],b=[-1,-1];t.exports={contain:function(t,e,i){return l(t,0,!1,e,i)},containStroke:function(t,e,i,n){return l(t,e,!0,i,n)}}},function(t,e,i){"use strict";function n(t){var e=t[1][0]-t[0][0],i=t[1][1]-t[0][1];return Math.sqrt(e*e+i*i)}function o(t){return[(t[0][0]+t[1][0])/2,(t[0][1]+t[1][1])/2]}var a=i(20),r=function(){this._track=[]};r.prototype={constructor:r,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 o={points:[],touches:[],target:e,event:t},r=0,s=n.length;r<s;r++){var l=n[r],u=a.clientToLocal(i,l,{});o.points.push([u.zrX,u.zrY]),o.touches.push(l)}this._track.push(o)}},_recognize:function(t){for(var e in s)if(s.hasOwnProperty(e)){var i=s[e](this._track,t);if(i)return i}}};var s={pinch:function(t,e){var i=t.length;if(i){var a=(t[i-1]||{}).points,r=(t[i-2]||{}).points||a;if(r&&r.length>1&&a&&a.length>1){var s=n(a)/n(r);!isFinite(s)&&(s=1),e.pinchScale=s;var l=o(a);return e.pinchX=l[0],e.pinchY=l[1],{type:"pinch",target:t[0].target,event:e}}}}};t.exports=r},function(t,e,i){function n(t){return"mousewheel"===t&&d.browser.firefox?"DOMMouseScroll":t}function o(t,e,i){var n=t._gestureMgr;"start"===i&&n.clear();var o=n.recognize(e,t.handler.findHover(e.zrX,e.zrY,null),t.dom);if("end"===i&&n.clear(),o){var a=o.type;e.gestureEvent=a,t.handler.dispatchToElement(o.target,a,o.event)}}function a(t){t._touching=!0,clearTimeout(t._touchTimer),t._touchTimer=setTimeout(function(){t._touching=!1},700)}function r(t){var e=t.pointerType;return"pen"===e||"touch"===e}function s(t){function e(t,e){return function(){if(!e._touching)return t.apply(e,arguments)}}h.each(x,function(e){t._handlers[e]=h.bind(w[e],t)}),h.each(b,function(e){t._handlers[e]=h.bind(w[e],t)}),h.each(y,function(i){t._handlers[i]=e(w[i],t)})}function l(t){function e(e,i){h.each(e,function(e){p(t,n(e),i._handlers[e])},i)}c.call(this),this.dom=t,this._touching=!1,this._touchTimer,this._gestureMgr=new f,this._handlers={},s(this),d.pointerEventsSupported?e(b,this):(d.touchEventsSupported&&e(x,this),e(y,this))}var u=i(20),h=i(1),c=i(23),d=i(9),f=i(164),p=u.addEventListener,g=u.removeEventListener,m=u.normalizeEvent,v=300,y=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],x=["touchstart","touchend","touchmove"],_={pointerdown:1,pointerup:1,pointermove:1,pointerout:1},b=h.map(y,function(t){var e=t.replace("mouse","pointer");return _[e]?e:t}),w={mousemove:function(t){t=m(this.dom,t),this.trigger("mousemove",t)},mouseout:function(t){t=m(this.dom,t);var e=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=m(this.dom,t),t.zrByTouch=!0,this._lastTouchMoment=new Date,o(this,t,"start"),w.mousemove.call(this,t),w.mousedown.call(this,t),a(this)},touchmove:function(t){t=m(this.dom,t),t.zrByTouch=!0,o(this,t,"change"),w.mousemove.call(this,t),a(this)},touchend:function(t){t=m(this.dom,t),t.zrByTouch=!0,o(this,t,"end"),w.mouseup.call(this,t),+new Date-this._lastTouchMoment<v&&w.click.call(this,t),a(this)},pointerdown:function(t){w.mousedown.call(this,t)},pointermove:function(t){r(t)||w.mousemove.call(this,t)},pointerup:function(t){w.mouseup.call(this,t)},pointerout:function(t){r(t)||w.mouseout.call(this,t)}};h.each(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],function(t){w[t]=function(e){e=m(this.dom,e),this.trigger(t,e)}});var S=l.prototype;S.dispose=function(){for(var t=y.concat(x),e=0;e<t.length;e++){var i=t[e];g(this.dom,n(i),this._handlers[i])}},S.setCursor=function(t){this.dom.style.cursor=t||"default"},h.mixin(l,c),t.exports=l},function(t,e,i){var n=i(8);t.exports=n.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.setScale(e[0],e[1])},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(),n.prototype.getBoundingRect.call(this)}})},function(t,e,i){"use strict";var n=i(1),o=i(41),a=function(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,o.call(this,n)};a.prototype={constructor:a},n.inherits(a,o),t.exports=a},function(t,e){t.exports={buildPath:function(t,e){var i,n,o,a,r=e.x,s=e.y,l=e.width,u=e.height,h=e.r;l<0&&(r+=l,l=-l),u<0&&(s+=u,u=-u),"number"==typeof h?i=n=o=a=h:h instanceof Array?1===h.length?i=n=o=a=h[0]:2===h.length?(i=o=h[0],n=a=h[1]):3===h.length?(i=h[0],n=a=h[1],o=h[2]):(i=h[0],n=h[1],o=h[2],a=h[3]):i=n=o=a=0;var c;i+n>l&&(c=i+n,i*=l/c,n*=l/c),o+a>l&&(c=o+a,o*=l/c,a*=l/c),n+o>u&&(c=n+o,n*=u/c,o*=u/c),i+a>u&&(c=i+a,i*=u/c,a*=u/c),t.moveTo(r+i,s),t.lineTo(r+l-n,s),0!==n&&t.quadraticCurveTo(r+l,s,r+l,s+n),t.lineTo(r+l,s+u-o),0!==o&&t.quadraticCurveTo(r+l,s+u,r+l-o,s+u),t.lineTo(r+a,s+u),0!==a&&t.quadraticCurveTo(r,s+u,r,s+u-a),t.lineTo(r,s+i),0!==i&&t.quadraticCurveTo(r,s,r+i,s)}}},function(t,e,i){var n=i(6),o=n.min,a=n.max,r=n.scale,s=n.distance,l=n.add;t.exports=function(t,e,i,u){var h,c,d,f,p=[],g=[],m=[],v=[];if(u){d=[1/0,1/0],f=[-(1/0),-(1/0)];for(var y=0,x=t.length;y<x;y++)o(d,d,t[y]),a(f,f,t[y]);o(d,d,u[0]),a(f,f,u[1])}for(var y=0,x=t.length;y<x;y++){var _=t[y];if(i)h=t[y?y-1:x-1],c=t[(y+1)%x];else{if(0===y||y===x-1){p.push(n.clone(t[y]));continue}h=t[y-1],c=t[y+1]}n.sub(g,c,h),r(g,g,e);var b=s(_,h),w=s(_,c),S=b+w;0!==S&&(b/=S,w/=S),r(m,g,-b),r(v,g,w);var M=l([],_,m),I=l([],_,v);u&&(a(M,M,d),o(M,M,f),a(I,I,d),o(I,I,f)),p.push(M),p.push(I)}return i&&p.push(p.shift()),p}},function(t,e,i){function n(t,e,i,n,o,a,r){var s=.5*(i-t),l=.5*(n-e);return(2*(e-i)+s+l)*r+(-3*(e-i)-2*s-l)*a+s*o+e}var o=i(6);t.exports=function(t,e){for(var i=t.length,a=[],r=0,s=1;s<i;s++)r+=o.distance(t[s-1],t[s]);var l=r/2;l=l<i?i:l;for(var s=0;s<l;s++){var u,h,c,d=s/(l-1)*(e?i:i-1),f=Math.floor(d),p=d-f,g=t[f%i];e?(u=t[(f-1+i)%i],h=t[(f+1)%i],c=t[(f+2)%i]):(u=t[0===f?f:f-1],h=t[f>i-2?i-1:f+1],c=t[f>i-3?i-1:f+2]);var m=p*p,v=p*m;a.push([n(u[0],g[0],h[0],c[0],p,m,v),n(u[1],g[1],h[1],c[1],p,m,v)])}return a}},function(t,e,i){t.exports=i(8).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,o=Math.max(e.r,0),a=e.startAngle,r=e.endAngle,s=e.clockwise,l=Math.cos(a),u=Math.sin(a);t.moveTo(l*o+i,u*o+n),t.arc(i,n,o,a,r,!s)}})},function(t,e,i){"use strict";function n(t,e,i){var n=t.cpx2,o=t.cpy2;return null===n||null===o?[(i?c:u)(t.x1,t.cpx1,t.cpx2,t.x2,e),(i?c:u)(t.y1,t.cpy1,t.cpy2,t.y2,e)]:[(i?h:l)(t.x1,t.cpx1,t.x2,e),(i?h:l)(t.y1,t.cpy1,t.y2,e)]}var o=i(21),a=i(6),r=o.quadraticSubdivide,s=o.cubicSubdivide,l=o.quadraticAt,u=o.cubicAt,h=o.quadraticDerivativeAt,c=o.cubicDerivativeAt,d=[];t.exports=i(8).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,o=e.x2,a=e.y2,l=e.cpx1,u=e.cpy1,h=e.cpx2,c=e.cpy2,f=e.percent;0!==f&&(t.moveTo(i,n),null==h||null==c?(f<1&&(r(i,l,o,f,d),l=d[1],o=d[2],r(n,u,a,f,d),u=d[1],a=d[2]),t.quadraticCurveTo(l,u,o,a)):(f<1&&(s(i,l,h,o,f,d),l=d[1],h=d[2],o=d[3],s(n,u,c,a,f,d),u=d[1],c=d[2],a=d[3]),t.bezierCurveTo(l,u,h,c,o,a)))},pointAt:function(t){return n(this.shape,t,!1)},tangentAt:function(t){var e=n(this.shape,t,!0);return a.normalize(e,e)}})},function(t,e,i){"use strict";t.exports=i(8).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)}})},function(t,e,i){t.exports=i(8).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=e.x1,n=e.y1,o=e.x2,a=e.y2,r=e.percent;0!==r&&(t.moveTo(i,n),r<1&&(o=i*(1-r)+o*r,a=n*(1-r)+a*r),t.lineTo(o,a))},pointAt:function(t){var e=this.shape;return[e.x1*(1-t)+e.x2*t,e.y1*(1-t)+e.y2*t]}})},function(t,e,i){var n=i(73);t.exports=i(8).extend({type:"polygon",shape:{points:null,smooth:!1,smoothConstraint:null},buildPath:function(t,e){n.buildPath(t,e,!0)}})},function(t,e,i){var n=i(73);t.exports=i(8).extend({type:"polyline",shape:{points:null,smooth:!1,smoothConstraint:null},style:{stroke:"#000",fill:null},buildPath:function(t,e){n.buildPath(t,e,!1)}})},function(t,e,i){var n=i(168);t.exports=i(8).extend({type:"rect",shape:{r:0,x:0,y:0,width:0,height:0},buildPath:function(t,e){var i=e.x,o=e.y,a=e.width,r=e.height;e.r?n.buildPath(t,e):t.rect(i,o,a,r),t.closePath()}})},function(t,e,i){t.exports=i(8).extend({type:"ring",shape:{cx:0,cy:0,r:0,r0:0},buildPath:function(t,e){var i=e.cx,n=e.cy,o=2*Math.PI;t.moveTo(i+e.r,n),t.arc(i,n,e.r,0,o,!1),t.moveTo(i+e.r0,n),t.arc(i,n,e.r0,0,o,!0)}})},function(t,e,i){var n=i(9),o=i(8),a=[["shadowBlur",0],["shadowColor","#000"],["shadowOffsetX",0],["shadowOffsetY",0]];t.exports=o.extend({type:"sector",shape:{cx:0,cy:0,r0:0,r:0,startAngle:0,endAngle:2*Math.PI,clockwise:!0},brush:n.browser.ie&&n.browser.version>=11?function(){var t,e=this.__clipPaths,i=this.style;if(e)for(var n=0;n<e.length;n++){var r=e[n]&&e[n].shape;if(r&&r.startAngle===r.endAngle){for(var s=0;s<a.length;s++)a[s][2]=i[a[s][0]],i[a[s][0]]=a[s][1];t=!0;break}}if(o.prototype.brush.apply(this,arguments),t)for(var s=0;s<a.length;s++)i[a[s][0]]=a[s][2]}:o.prototype.brush,buildPath:function(t,e){var i=e.cx,n=e.cy,o=Math.max(e.r0||0,0),a=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*o+i,h*o+n),t.lineTo(u*a+i,h*a+n),t.arc(i,n,a,r,s,!l),t.lineTo(Math.cos(s)*o+i,Math.sin(s)*o+n),0!==o&&t.arc(i,n,o,s,r,l),t.closePath()}})},function(t,e,i){"use strict";var n=i(66),o=i(1),a=o.isString,r=o.isFunction,s=o.isObject,l=i(52),u=function(){this.animators=[]};u.prototype={constructor:u,animate:function(t,e){var i,a=!1,r=this,s=this.__zr;if(t){var u=t.split("."),h=r;a="shape"===u[0];for(var c=0,d=u.length;c<d;c++)h&&(h=h[u[c]]);h&&(i=h)}else i=r;if(!i)return void l('Property "'+t+'" is not existed in element '+r.id);var f=r.animators,p=new n(i,e);return p.during(function(t){r.dirty(a)}).done(function(){f.splice(o.indexOf(f,p),1)}),f.push(p),s&&s.animation.addAnimator(p),p},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,o){function s(){u--,u||o&&o()}a(i)?(o=n,n=i,i=0):r(n)?(o=n,n="linear",i=0):r(i)?(o=i,i=0):r(e)?(o=e,e=500):e||(e=500),this.stopAnimation(),this._animateToShallow("",this,t,e,i,n,o);var l=this.animators.slice(),u=l.length;u||o&&o();for(var h=0;h<l.length;h++)l[h].done(s).start(n)},_animateToShallow:function(t,e,i,n,a){var r={},l=0;for(var u in i)if(i.hasOwnProperty(u))if(null!=e[u])s(i[u])&&!o.isArrayLike(i[u])?this._animateToShallow(t?t+"."+u:u,e[u],i[u],n,a):(r[u]=i[u],l++);else if(null!=i[u])if(t){var h={};h[t]={},h[t][u]=i[u],this.attr(h)}else this.attr(u,i[u]);return l>0&&this.animate(t,!1).when(null==n?500:n,r).delay(a||0),this}},t.exports=u},function(t,e){function i(){this.on("mousedown",this._dragStart,this),this.on("mousemove",this._drag,this),this.on("mouseup",this._dragEnd,this),this.on("globalout",this._dragEnd,this)}i.prototype={constructor:i,_dragStart:function(t){var e=t.target;e&&e.draggable&&(this._draggingTarget=e,e.dragging=!0,this._x=t.offsetX,this._y=t.offsetY,this.dispatchToElement(e,"dragstart",t.event))},_drag:function(t){var e=this._draggingTarget;if(e){var i=t.offsetX,n=t.offsetY,o=i-this._x,a=n-this._y;this._x=i,this._y=n,e.drift(o,a,t),this.dispatchToElement(e,"drag",t.event);var r=this.findHover(i,n,e),s=this._dropTarget;this._dropTarget=r,e!==r&&(s&&r!==s&&this.dispatchToElement(s,"dragleave",t.event),r&&r!==s&&this.dispatchToElement(r,"dragenter",t.event))}},_dragEnd:function(t){var e=this._draggingTarget;e&&(e.dragging=!1),this.dispatchToElement(e,"dragend",t.event),this._dropTarget&&this.dispatchToElement(this._dropTarget,"drop",t.event),this._draggingTarget=null,this._dropTarget=null}},t.exports=i},function(t,e,i){function n(t,e,i,n,o,a,r,s,l,u,h){var g=l*(p/180),y=f(g)*(t-i)/2+d(g)*(e-n)/2,x=-1*d(g)*(t-i)/2+f(g)*(e-n)/2,_=y*y/(r*r)+x*x/(s*s);_>1&&(r*=c(_),s*=c(_));var b=(o===a?-1:1)*c((r*r*(s*s)-r*r*(x*x)-s*s*(y*y))/(r*r*(x*x)+s*s*(y*y)))||0,w=b*r*x/s,S=b*-s*y/r,M=(t+i)/2+f(g)*w-d(g)*S,I=(e+n)/2+d(g)*w+f(g)*S,T=v([1,0],[(y-w)/r,(x-S)/s]),A=[(y-w)/r,(x-S)/s],L=[(-1*y-w)/r,(-1*x-S)/s],C=v(A,L);m(A,L)<=-1&&(C=p),m(A,L)>=1&&(C=0),0===a&&C>0&&(C-=2*p),1===a&&C<0&&(C+=2*p),h.addData(u,M,I,r,s,T,C,g,a)}function o(t){if(!t)return[];var e,i=t.replace(/-/g," -").replace(/  /g," ").replace(/ /g,",").replace(/,,/g,",");for(e=0;e<h.length;e++)i=i.replace(new RegExp(h[e],"g"),"|"+h[e]);var o,a=i.split("|"),r=0,l=0,u=new s,c=s.CMD;for(e=1;e<a.length;e++){var d,f=a[e],p=f.charAt(0),g=0,m=f.slice(1).replace(/e,-/g,"e-").split(",");m.length>0&&""===m[0]&&m.shift();for(var v=0;v<m.length;v++)m[v]=parseFloat(m[v]);for(;g<m.length&&!isNaN(m[g])&&!isNaN(m[0]);){var y,x,_,b,w,S,M,I=r,T=l;switch(p){case"l":r+=m[g++],l+=m[g++],d=c.L,u.addData(d,r,l);break;case"L":r=m[g++],l=m[g++],d=c.L,u.addData(d,r,l);break;case"m":r+=m[g++],l+=m[g++],d=c.M,u.addData(d,r,l),p="l";break;case"M":r=m[g++],l=m[g++],d=c.M,u.addData(d,r,l),p="L";break;case"h":r+=m[g++],d=c.L,u.addData(d,r,l);break;case"H":r=m[g++],d=c.L,u.addData(d,r,l);break;case"v":l+=m[g++],d=c.L,u.addData(d,r,l);break;case"V":l=m[g++],d=c.L,u.addData(d,r,l);break;case"C":d=c.C,u.addData(d,m[g++],m[g++],m[g++],m[g++],m[g++],m[g++]),r=m[g-2],l=m[g-1];break;case"c":d=c.C,u.addData(d,m[g++]+r,m[g++]+l,m[g++]+r,m[g++]+l,m[g++]+r,m[g++]+l),r+=m[g-2],l+=m[g-1];break;case"S":y=r,x=l;var A=u.len(),L=u.data;o===c.C&&(y+=r-L[A-4],x+=l-L[A-3]),d=c.C,I=m[g++],T=m[g++],r=m[g++],l=m[g++],u.addData(d,y,x,I,T,r,l);break;case"s":y=r,x=l;var A=u.len(),L=u.data;o===c.C&&(y+=r-L[A-4],x+=l-L[A-3]),d=c.C,I=r+m[g++],T=l+m[g++],r+=m[g++],l+=m[g++],u.addData(d,y,x,I,T,r,l);break;case"Q":I=m[g++],T=m[g++],r=m[g++],l=m[g++],d=c.Q,u.addData(d,I,T,r,l);break;case"q":I=m[g++]+r,T=m[g++]+l,r+=m[g++],l+=m[g++],d=c.Q,u.addData(d,I,T,r,l);break;case"T":y=r,x=l;var A=u.len(),L=u.data;o===c.Q&&(y+=r-L[A-4],x+=l-L[A-3]),r=m[g++],l=m[g++],d=c.Q,u.addData(d,y,x,r,l);break;case"t":y=r,x=l;var A=u.len(),L=u.data;o===c.Q&&(y+=r-L[A-4],x+=l-L[A-3]),r+=m[g++],l+=m[g++],d=c.Q,u.addData(d,y,x,r,l);break;case"A":_=m[g++],b=m[g++],w=m[g++],S=m[g++],M=m[g++],I=r,T=l,r=m[g++],l=m[g++],d=c.A,n(I,T,r,l,S,M,_,b,w,d,u);break;case"a":_=m[g++],b=m[g++],w=m[g++],S=m[g++],M=m[g++],I=r,T=l,r+=m[g++],l+=m[g++],d=c.A,n(I,T,r,l,S,M,_,b,w,d,u)}}"z"!==p&&"Z"!==p||(d=c.Z,u.addData(d)),o=d}return u.toStatic(),u}function a(t,e){var i,n=o(t);return e=e||{},e.buildPath=function(t){t.setData(n.data),i&&l(t,i);var e=t.getContext();e&&t.rebuildPath(e)},e.applyTransform=function(t){i||(i=u.create()),u.mul(i,t,i),this.dirty(!0)},e}var r=i(8),s=i(30),l=i(183),u=i(19),h=["m","M","l","L","v","V","h","H","z","Z","c","C","q","Q","t","T","s","S","a","A"],c=Math.sqrt,d=Math.sin,f=Math.cos,p=Math.PI,g=function(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])},m=function(t,e){return(t[0]*e[0]+t[1]*e[1])/(g(t)*g(e))},v=function(t,e){return(t[0]*e[1]<t[1]*e[0]?-1:1)*Math.acos(m(t,e))};t.exports={createFromString:function(t,e){return new r(a(t,e))},extendFromString:function(t,e){return r.extend(a(t,e))},mergePath:function(t,e){for(var i=[],n=t.length,o=0;o<n;o++){var a=t[o];a.__dirty&&a.buildPath(a.path,a.shape,!0),i.push(a.path)}var s=new r(e);return s.buildPath=function(t){t.appendPath(i);var e=t.getContext();e&&t.rebuildPath(e)},s}}},function(t,e,i){function n(t,e){var i,n,a,h,c,d,f=t.data,p=o.M,g=o.C,m=o.L,v=o.R,y=o.A,x=o.Q;for(a=0,h=0;a<f.length;){switch(i=f[a++],h=a,n=0,i){case p:n=1;break;case m:n=1;break;case g:n=3;break;case x:n=2;break;case y:var _=e[4],b=e[5],w=l(e[0]*e[0]+e[1]*e[1]),S=l(e[2]*e[2]+e[3]*e[3]),M=u(-e[1]/S,e[0]/w);f[a++]+=_,f[a++]+=b,f[a++]*=w,f[a++]*=S,f[a++]+=M,f[a++]+=M,a+=2,h=a;break;case v:d[0]=f[a++],d[1]=f[a++],r(d,d,e),f[h++]=d[0],f[h++]=d[1],d[0]+=f[a++],d[1]+=f[a++],r(d,d,e),f[h++]=d[0],f[h++]=d[1]}for(c=0;c<n;c++){var d=s[c];d[0]=f[a++],d[1]=f[a++],r(d,d,e),f[h++]=d[0],f[h++]=d[1]}}}var o=i(30).CMD,a=i(6),r=a.applyTransform,s=[[],[],[]],l=Math.sqrt,u=Math.atan2;t.exports=n},function(t,e,i){if(!i(9).canvasSupported){var n,o="urn:schemas-microsoft-com:vml",a=window,r=a.document,s=!1;try{!r.namespaces.zrvml&&r.namespaces.add("zrvml",o),n=function(t){return r.createElement("<zrvml:"+t+' class="zrvml">')}}catch(l){n=function(t){return r.createElement("<"+t+' xmlns="'+o+'" class="zrvml">')}}var u=function(){if(!s){s=!0;var t=r.styleSheets;t.length<31?r.createStyleSheet().addRule(".zrvml","behavior:url(#default#VML)"):t[0].addRule(".zrvml","behavior:url(#default#VML)")}};t.exports={doc:r,initVML:u,createNode:n}}},function(t,e,i){"use strict";function n(t){return null==t.value?t:t.value}var o=i(14),a=i(25),r=i(309),s=i(1),l={_baseAxisDim:null,getInitialData:function(t,e){var i,r,s=e.getComponent("xAxis",this.get("xAxisIndex")),l=e.getComponent("yAxis",this.get("yAxisIndex")),u=s.get("type"),h=l.get("type");"category"===u?(t.layout="horizontal",i=s.getCategories(),r=!0):"category"===h?(t.layout="vertical",i=l.getCategories(),r=!0):t.layout=t.layout||"horizontal",this._baseAxisDim="horizontal"===t.layout?"x":"y";var c=t.data,d=this.dimensions=["base"].concat(this.valueDimensions);a(d,c);var f=new o(d,this);return f.initData(c,i?i.slice():null,function(t,e,i,o){var a=n(t);return r?"base"===e?i:a[o-1]:a[o]}),f},coordDimToDataDim:function(t){var e=this.valueDimensions.slice(),i=["base"],n={horizontal:{x:i,y:e},vertical:{x:e,y:i}};return n[this.get("layout")][t]},dataDimToCoordDim:function(t){var e;return s.each(["x","y"],function(i,n){var o=this.coordDimToDataDim(i);s.indexOf(o,t)>=0&&(e=i)},this),e},getBaseAxis:function(){var t=this._baseAxisDim;return this.ecModel.getComponent(t+"Axis",this.get(t+"AxisIndex")).axis}},u={init:function(){var t=this._whiskerBoxDraw=new r(this.getStyleUpdater());this.group.add(t.group)},render:function(t,e,i){this._whiskerBoxDraw.updateData(t.getData())},remove:function(t){this._whiskerBoxDraw.remove()}};t.exports={seriesModelMixin:l,viewMixin:u}},function(t,e,i){function n(t,e,i){var n=this._targetInfoList=[],o={},r=a(e,t);f(x,function(t,e){(!i||!i.include||p(i.include,e)>=0)&&t(r,n,o)})}function o(t){return t[0]>t[1]&&t.reverse(),t}function a(t,e){return d.parseFinder(t,e,{includeMainTypes:v})}function r(t,e,i,n){var a=i.getAxis(["x","y"][t]),r=o(h.map([0,1],function(t){return e?a.coordToData(a.toLocalCoord(n[t])):a.toGlobalCoord(a.dataToCoord(n[t]))})),s=[];return s[t]=r,s[1-t]=[NaN,NaN],{values:r,xyMinMax:s}}function s(t,e,i,n){return[e[0]-n[t]*i[0],e[1]-n[t]*i[1]]}function l(t,e){var i=u(t),n=u(e),o=[i[0]/n[0],i[1]/n[1]];return isNaN(o[0])&&(o[0]=1),isNaN(o[1])&&(o[1]=1),o}function u(t){return t?[t[0][1]-t[0][0],t[1][1]-t[1][0]]:[NaN,NaN]}var h=i(1),c=i(3),d=i(5),f=h.each,p=h.indexOf,g=h.curry,m=["dataToPoint","pointToData"],v=["grid","xAxis","yAxis","geo","graph","polar","radiusAxis","angleAxis","bmap"],y=n.prototype;y.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=w[t.brushType](0,i,e);t.__rangeOffset={offset:S[t.brushType](n.values,t.range,[1,1]),xyMinMax:n.xyMinMax}}})},y.matchOutputRanges=function(t,e,i){f(t,function(t){var n=this.findTargetInfo(t,e);n&&n!==!0&&h.each(n.coordSyses,function(n){var o=w[t.brushType](1,n,t.range);i(t,o.values,n,e)})},this)},y.setInputRanges=function(t,e){
+f(t,function(t){var i=this.findTargetInfo(t,e);if(t.range=t.range||[],i&&i!==!0){t.panelId=i.panelId;var n=w[t.brushType](0,i.coordSys,t.coordRange),o=t.__rangeOffset;t.range=o?S[t.brushType](n.values,o.offset,l(n.xyMinMax,o.xyMinMax)):n.values}},this)},y.makePanelOpts=function(t){return h.map(this._targetInfoList,function(e){return{panelId:e.panelId,rect:e.getPanelRect(),defaultBrushType:t&&t(e)}})},y.controlSeries=function(t,e,i){var n=this.findTargetInfo(t,i);return n===!0||n&&p(n.coordSyses,e.coordinateSystem)>=0},y.findTargetInfo=function(t,e){for(var i=this._targetInfoList,n=a(e,t),o=0;o<i.length;o++){var r=i[o],s=t.panelId;if(s){if(r.panelId===s)return r}else for(var o=0;o<_.length;o++)if(_[o](n,r))return r}return!0};var x={grid:function(t,e){var i=t.xAxisModels,n=t.yAxisModels,o=t.gridModels,a={},r={},s={};(i||n||o)&&(f(i,function(t){var e=t.axis.grid.model;a[e.id]=e,r[e.id]=!0}),f(n,function(t){var e=t.axis.grid.model;a[e.id]=e,s[e.id]=!0}),f(o,function(t){a[t.id]=t,r[t.id]=!0,s[t.id]=!0}),f(a,function(t){var o=t.coordinateSystem,a=[];f(o.getCartesians(),function(t,e){(p(i,t.getAxis("x").model)>=0||p(n,t.getAxis("y").model)>=0)&&a.push(t)}),e.push({panelId:"grid--"+t.id,gridModel:t,coordSys:a[0],coordSyses:a,getPanelRect:b.grid,xAxisDeclared:r[t.id],yAxisDeclared:s[t.id]})}))},geo:function(t,e){f(t.geoModels,function(t){var i=t.coordinateSystem;e.push({panelId:"geo--"+t.id,geoModel:t,coordSys:i,coordSyses:[i],getPanelRect:b.geo})})}},_=[function(t,e){var i=t.xAxisModel,n=t.yAxisModel,o=t.gridModel;return!o&&i&&(o=i.axis.grid.model),!o&&n&&(o=n.axis.grid.model),o&&o===e.gridModel},function(t,e){var i=t.geoModel;return i&&i===e.geoModel}],b={grid:function(){return this.coordSys.grid.getRect().clone()},geo:function(){var t=this.coordSys,e=t.getBoundingRect().clone();return e.applyTransform(c.getTransform(t)),e}},w={lineX:g(r,0),lineY:g(r,1),rect:function(t,e,i){var n=e[m[t]]([i[0][0],i[1][0]]),a=e[m[t]]([i[0][1],i[1][1]]),r=[o([n[0],a[0]]),o([n[1],a[1]])];return{values:r,xyMinMax:r}},polygon:function(t,e,i){var n=[[1/0,-(1/0)],[1/0,-(1/0)]],o=h.map(i,function(i){var o=e[m[t]](i);return n[0][0]=Math.min(n[0][0],o[0]),n[1][0]=Math.min(n[1][0],o[1]),n[0][1]=Math.max(n[0][1],o[0]),n[1][1]=Math.max(n[1][1],o[1]),o});return{values:o,xyMinMax:n}}},S={lineX:g(s,0),lineY:g(s,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,e,i){return h.map(t,function(t,n){return[t[0]-i[0]*e[n][0],t[1]-i[1]*e[n][1]]})}};t.exports=n},function(t,e,i){function n(t,e){var i=t.get("boundingCoords");if(null!=i){var n=i[0],o=i[1];isNaN(n[0])||isNaN(n[1])||isNaN(o[0])||isNaN(o[1])||this.setBoundingRect(n[0],n[1],o[0]-n[0],o[1]-n[1])}var a,s=this.getBoundingRect(),u=t.get("layoutCenter"),h=t.get("layoutSize"),c=e.getWidth(),d=e.getHeight(),f=t.get("aspectScale")||.75,p=s.width/s.height*f,g=!1;u&&h&&(u=[l.parsePercent(u[0],c),l.parsePercent(u[1],d)],h=l.parsePercent(h,Math.min(c,d)),isNaN(u[0])||isNaN(u[1])||isNaN(h)||(g=!0));var m;if(g){var m={};p>1?(m.width=h,m.height=h/p):(m.height=h,m.width=h*p),m.y=u[1]-m.height/2,m.x=u[0]-m.width/2}else a=t.getBoxLayoutParams(),a.aspect=p,m=r.getLayoutRect(a,{width:c,height:d});this.setViewRect(m.x,m.y,m.width,m.height),this.setCenter(t.get("center")),this.setZoom(t.get("zoom"))}function o(t,e){s.each(e.get("geoCoord"),function(e,i){t.addGeoCoord(i,e)})}var a=i(391),r=i(12),s=i(1),l=i(4),u={},h={dimensions:a.prototype.dimensions,create:function(t,e){var i=[];t.eachComponent("geo",function(t,r){var s=t.get("map"),l=u[s],h=new a(s+r,s,l&&l.geoJson,l&&l.specialAreas,t.get("nameMap"));h.zoomLimit=t.get("scaleLimit"),i.push(h),o(h,t),t.coordinateSystem=h,h.model=t,h.resize=n,h.resize(t,e)}),t.eachSeries(function(t){var e=t.get("coordinateSystem");if("geo"===e){var n=t.get("geoIndex")||0;t.coordinateSystem=i[n]}});var r={};return t.eachSeriesByType("map",function(t){if(!t.getHostGeoModel()){var e=t.getMapType();r[e]=r[e]||[],r[e].push(t)}}),s.each(r,function(t,r){var l=u[r],h=s.map(t,function(t){return t.get("nameMap")}),c=new a(r,r,l&&l.geoJson,l&&l.specialAreas,s.mergeAll(h));c.zoomLimit=s.retrieve.apply(null,s.map(t,function(t){return t.get("scaleLimit")})),i.push(c),c.resize=n,c.resize(t[0],e),s.each(t,function(t){t.coordinateSystem=c,o(c,t)})}),i},registerMap:function(t,e,i){e.geoJson&&!e.features&&(i=e.specialAreas,e=e.geoJson),"string"==typeof e&&(e="undefined"!=typeof JSON&&JSON.parse?JSON.parse(e):new Function("return ("+e+");")()),u[t]={geoJson:e,specialAreas:i}},getMap:function(t){return u[t]},getFilledRegions:function(t,e){var i=(t||[]).slice(),n=h.getMap(e),o=n&&n.geoJson;if(!o)return t;for(var a={},r=o.features,s=0;s<i.length;s++)a[i[s].name]=i[s];for(var s=0;s<r.length;s++){var l=r[s].properties.name;a[l]||i.push({name:l})}return i}},c=i(2);c.registerMap=h.registerMap,c.getMap=h.getMap,c.parseGeoJSON=i(259),c.loadMap=function(){},c.registerCoordinateSystem("geo",h),t.exports=h},function(t,e,i){function n(t){if(t)for(var e in t)if(t.hasOwnProperty(e))return!0}var o=i(1),a=i(82),r=o.each,s={createVisualMappings:function(t,e,i){function n(){var t=function(){};t.prototype.__hidden=t.prototype;var e=new t;return e}var s={};return r(e,function(e){var l=s[e]=n();r(t[e],function(t,n){if(a.isValidType(n)){var r={type:n,visual:t};i&&i(r,e),l[n]=new a(r),"opacity"===n&&(r=o.clone(r),r.type="colorAlpha",l.__hidden.__alphaForOpacity=new a(r))}})}),s},replaceVisualOption:function(t,e,i){var a;o.each(i,function(t){e.hasOwnProperty(t)&&n(e[t])&&(a=!0)}),a&&o.each(i,function(i){e.hasOwnProperty(i)&&n(e[i])?t[i]=o.clone(e[i]):delete t[i]})},applyVisual:function(t,e,i,n,r,s){function l(t){return i.getItemVisual(d,t)}function u(t,e){i.setItemVisual(d,t,e)}function h(t,o){d=null==s?t:o;var a=i.getRawDataItem(d);if(!a||a.visualMap!==!1)for(var h=n.call(r,t),f=e[h],p=c[h],g=0,m=p.length;g<m;g++){var v=p[g];f[v]&&f[v].applyVisual(t,l,u)}}var c={};o.each(t,function(t){var i=a.prepareVisualTypes(e[t]);c[t]=i});var d;null==s?i.each(h,!0):i.each([s],h,!0)}};t.exports=s},function(t,e){function i(){throw new Error("setTimeout has not been defined")}function n(){throw new Error("clearTimeout has not been defined")}function o(t){if(h===setTimeout)return setTimeout(t,0);if((h===i||!h)&&setTimeout)return h=setTimeout,setTimeout(t,0);try{return h(t,0)}catch(e){try{return h.call(null,t,0)}catch(e){return h.call(this,t,0)}}}function a(t){if(c===clearTimeout)return clearTimeout(t);if((c===n||!c)&&clearTimeout)return c=clearTimeout,clearTimeout(t);try{return c(t)}catch(e){try{return c.call(null,t)}catch(e){return c.call(this,t)}}}function r(){g&&f&&(g=!1,f.length?p=f.concat(p):m=-1,p.length&&s())}function s(){if(!g){var t=o(r);g=!0;for(var e=p.length;e;){for(f=p,p=[];++m<e;)f&&f[m].run();m=-1,e=p.length}f=null,g=!1,a(t)}}function l(t,e){this.fun=t,this.array=e}function u(){}var h,c,d=t.exports={};!function(){try{h="function"==typeof setTimeout?setTimeout:i}catch(t){h=i}try{c="function"==typeof clearTimeout?clearTimeout:n}catch(t){c=n}}();var f,p=[],g=!1,m=-1;d.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var i=1;i<arguments.length;i++)e[i-1]=arguments[i];p.push(new l(t,e)),1!==p.length||g||o(s)},l.prototype.run=function(){this.fun.apply(null,this.array)},d.title="browser",d.browser=!0,d.env={},d.argv=[],d.version="",d.versions={},d.on=u,d.addListener=u,d.once=u,d.off=u,d.removeListener=u,d.removeAllListeners=u,d.emit=u,d.binding=function(t){throw new Error("process.binding is not supported")},d.cwd=function(){return"/"},d.chdir=function(t){throw new Error("process.chdir is not supported")},d.umask=function(){return 0}},function(t,e,i){function n(){this.group=new o.Group,this._symbolEl=new r({})}var o=i(3),a=i(24),r=o.extendShape({shape:{points:null,sizes:null},symbolProxy:null,buildPath:function(t,e){for(var i=e.points,n=e.sizes,o=this.symbolProxy,a=o.shape,r=0;r<i.length;r++){var s=i[r],l=n[r];l[0]<4?t.rect(s[0]-l[0]/2,s[1]-l[1]/2,l[0],l[1]):(a.x=s[0]-l[0]/2,a.y=s[1]-l[1]/2,a.width=l[0],a.height=l[1],o.buildPath(t,a,!0))}},findDataIndex:function(t,e){for(var i=this.shape,n=i.points,o=i.sizes,a=n.length-1;a>=0;a--){var r=n[a],s=o[a],l=r[0]-s[0]/2,u=r[1]-s[1]/2;if(t>=l&&e>=u&&t<=l+s[0]&&e<=u+s[1])return a}return-1}}),s=n.prototype;s.updateData=function(t){this.group.removeAll();var e=this._symbolEl,i=t.hostModel;e.setShape({points:t.mapArray(t.getItemLayout),sizes:t.mapArray(function(e){var i=t.getItemVisual(e,"symbolSize");return i instanceof Array||(i=[i,i]),i})}),e.symbolProxy=a.createSymbol(t.getVisual("symbol"),0,0,0,0),e.setColor=e.symbolProxy.setColor,e.useStyle(i.getModel("itemStyle.normal").getItemStyle(["color"]));var n=t.getVisual("color");n&&e.setColor(n),e.seriesIndex=i.seriesIndex,e.on("mousemove",function(t){e.dataIndex=null;var i=e.findDataIndex(t.offsetX,t.offsetY);i>0&&(e.dataIndex=i)}),this.group.add(e)},s.updateLayout=function(t){var e=t.getData();this._symbolEl.setShape({points:e.mapArray(e.getItemLayout)})},s.remove=function(){this.group.removeAll()},t.exports=n},function(t,e,i){function n(t){return isNaN(+t.cpx1)||isNaN(+t.cpy1)}var o=i(3),a=i(6),r=o.Line.prototype,s=o.BezierCurve.prototype;t.exports=o.extendShape({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){(n(e)?r:s).buildPath(t,e)},pointAt:function(t){return n(this.shape)?r.pointAt.call(this,t):s.pointAt.call(this,t)},tangentAt:function(t){var e=this.shape,i=n(e)?[e.x2-e.x1,e.y2-e.y1]:s.tangentAt.call(this,t);return a.normalize(i,i)}})},function(t,e,i){var n=i(1),o=i(2);i(193),i(194),o.registerVisual(n.curry(i(50),"scatter","circle",null)),o.registerLayout(n.curry(i(61),"scatter")),i(38)},function(t,e,i){"use strict";var n=i(27),o=i(18);t.exports=o.extend({type:"series.scatter",dependencies:["grid","polar","geo","singleAxis"],getInitialData:function(t,e){var i=n(t.data,this,e);return i},brushSelector:"point",defaultOption:{coordinateSystem:"cartesian2d",zlevel:0,z:2,legendHoverLink:!0,hoverAnimation:!0,symbolSize:10,large:!1,largeThreshold:2e3,itemStyle:{normal:{opacity:.8}}}})},function(t,e,i){var n=i(44),o=i(190);i(2).extendChartView({type:"scatter",init:function(){this._normalSymbolDraw=new n,this._largeSymbolDraw=new o},render:function(t,e,i){var n=t.getData(),o=this._largeSymbolDraw,a=this._normalSymbolDraw,r=this.group,s=t.get("large")&&n.count()>t.get("largeThreshold")?o:a;this._symbolDraw=s,s.updateData(n),r.add(s.group),r.remove(s===o?a.group:o.group)},updateLayout:function(t){this._symbolDraw.updateLayout(t)},remove:function(t,e){this._symbolDraw&&this._symbolDraw.remove(e,!0)},dispose:function(){}})},function(t,e,i){i(128),i(46),i(47),i(201),i(202),i(197),i(198),i(126),i(125)},function(t,e,i){function n(t,e,i){var n=[1/0,-(1/0)];return u(i,function(t){var i=t.getData();i&&u(t.coordDimToDataDim(e),function(t){var e=i.getDataExtent(t);e[0]<n[0]&&(n[0]=e[0]),e[1]>n[1]&&(n[1]=e[1])})}),n[1]<n[0]&&(n=[NaN,NaN]),o(t,n),n}function o(t,e){var i=t.getAxisModel(),n=i.getMin(!0),o="category"===i.get("type"),a=o&&(i.get("data")||[]).length;null!=n&&"dataMin"!==n?e[0]=n:o&&(e[0]=a>0?0:NaN);var r=i.getMax(!0);return null!=r&&"dataMax"!==r?e[1]=r:o&&(e[1]=a>0?a-1:NaN),i.get("scale",!0)||(e[0]>0&&(e[0]=0),e[1]<0&&(e[1]=0)),e}function a(t,e){var i=t.getAxisModel(),n=t._percentWindow,o=t._valueWindow;if(n){var a=s.getPixelPrecision(o,[0,500]),r=e||0===n[0]&&100===n[1];i.setRange(r?null:+o[0].toFixed(a),r?null:+o[1].toFixed(a))}}var r=i(1),s=i(4),l=i(77),u=r.each,h=s.asc,c=function(t,e,i,n){this._dimName=t,this._axisIndex=e,this._valueWindow,this._percentWindow,this._dataExtent,this.ecModel=n,this._dataZoomModel=i};c.prototype={constructor:c,hostedBy:function(t){return this._dataZoomModel===t},getDataValueWindow:function(){return this._valueWindow.slice()},getDataPercentWindow:function(){return this._percentWindow.slice()},getTargetSeriesModels:function(){var t=[],e=this.ecModel;return e.eachSeries(function(i){if(l.isCoordSupported(i.get("coordinateSystem"))){var n=this._dimName,o=e.queryComponents({mainType:n+"Axis",index:i.get(n+"AxisIndex"),id:i.get(n+"AxisId")})[0];this._axisIndex===(o&&o.componentIndex)&&t.push(i)}},this),t},getAxisModel:function(){return this.ecModel.getComponent(this._dimName+"Axis",this._axisIndex)},getOtherAxisModel:function(){var t,e,i=this._dimName,n=this.ecModel,o=this.getAxisModel(),a="x"===i||"y"===i;a?(e="gridIndex",t="x"===i?"y":"x"):(e="polarIndex",t="angle"===i?"radius":"angle");var r;return n.eachComponent(t+"Axis",function(t){(t.get(e)||0)===(o.get(e)||0)&&(r=t)}),r},calculateDataWindow:function(t){var e=this._dataExtent,i=this.getAxisModel(),n=i.axis.scale,o=this._dataZoomModel.getRangePropMode(),a=[0,100],r=[t.start,t.end],l=[];return u(["startValue","endValue"],function(e){l.push(null!=t[e]?n.parse(t[e]):null)}),u([0,1],function(t){var i=l[t],u=r[t];"percent"===o[t]?(null==u&&(u=a[t]),i=n.parse(s.linearMap(u,a,e,!0))):u=s.linearMap(i,e,a,!0),l[t]=i,r[t]=u}),{valueWindow:h(l),percentWindow:h(r)}},reset:function(t){if(t===this._dataZoomModel){this._dataExtent=n(this,this._dimName,this.getTargetSeriesModels());var e=this.calculateDataWindow(t.option);this._valueWindow=e.valueWindow,this._percentWindow=e.percentWindow,a(this)}},restore:function(t){t===this._dataZoomModel&&(this._valueWindow=this._percentWindow=null,a(this,!0))},filterData:function(t){function e(t){return t>=a[0]&&t<=a[1]}if(t===this._dataZoomModel){var i=this._dimName,n=this.getTargetSeriesModels(),o=t.get("filterMode"),a=this._valueWindow,r=this.getOtherAxisModel();t.get("$fromToolbox")&&r&&"category"===r.get("type")&&(o="empty"),u(n,function(t){var n=t.getData();n&&u(t.coordDimToDataDim(i),function(i){"empty"===o?t.setData(n.map(i,function(t){return e(t)?t:NaN})):n.filterSelf(i,e)})})}}},t.exports=c},function(t,e,i){t.exports=i(46).extend({type:"dataZoom.inside",defaultOption:{disabled:!1,zoomLock:!1}})},function(t,e,i){function n(t){var e=[0,100];return!(t[0]<=e[1])&&(t[0]=e[1]),!(t[1]<=e[1])&&(t[1]=e[1]),!(t[0]>=e[0])&&(t[0]=e[0]),!(t[1]>=e[0])&&(t[1]=e[0]),t}var o=i(47),a=i(1),r=i(95),s=i(203),l=a.bind,u=o.extend({type:"dataZoom.inside",init:function(t,e){this._range},render:function(t,e,i,n){u.superApply(this,"render",arguments),s.shouldRecordRange(n,t.id)&&(this._range=t.getPercentRange()),a.each(this.getTargetCoordInfo(),function(e,n){var o=a.map(e,function(t){return s.generateCoordId(t.model)});a.each(e,function(e){var a=e.model;s.register(i,{coordId:s.generateCoordId(a),allCoordIds:o,containsPoint:function(t,e){return a.coordinateSystem.containPoint([t,e])},dataZoomId:t.id,throttleRate:t.get("throttle",!0),panGetRange:l(this._onPan,this,e,n),zoomGetRange:l(this._onZoom,this,e,n)})},this)},this)},dispose:function(){s.unregister(this.api,this.dataZoomModel.id),u.superApply(this,"dispose",arguments),this._range=null},_onPan:function(t,e,i,n,o,a,s,l,u){if(this.dataZoomModel.option.disabled)return this._range;var c=this._range.slice(),d=t.axisModels[0];if(d){var f=h[e]([a,s],[l,u],d,i,t),p=f.signal*(c[1]-c[0])*f.pixel/f.pixelLength;return r(p,c,[0,100],"rigid"),this._range=c}},_onZoom:function(t,e,i,o,a,r){var s=this.dataZoomModel.option;if(s.disabled||s.zoomLock)return this._range;var l=this._range.slice(),u=t.axisModels[0];if(u){var c=h[e](null,[a,r],u,i,t),d=(c.pixel-c.pixelStart)/c.pixelLength*(l[1]-l[0])+l[0];return o=Math.max(1/o,0),l[0]=(l[0]-d)*o+d,l[1]=(l[1]-d)*o+d,this._range=n(l)}}}),h={grid:function(t,e,i,n,o){var a=i.axis,r={},s=o.model.coordinateSystem.getRect();return t=t||[0,0],"x"===a.dim?(r.pixel=e[0]-t[0],r.pixelLength=s.width,r.pixelStart=s.x,r.signal=a.inverse?1:-1):(r.pixel=e[1]-t[1],r.pixelLength=s.height,r.pixelStart=s.y,r.signal=a.inverse?-1:1),r},polar:function(t,e,i,n,o){var a=i.axis,r={},s=o.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=a.inverse?1:-1):(r.pixel=e[1]-t[1],r.pixelLength=u[1]-u[0],r.pixelStart=u[0],r.signal=a.inverse?-1:1),r},singleAxis:function(t,e,i,n,o){var a=i.axis,r=o.model.coordinateSystem.getRect(),s={};return t=t||[0,0],"horizontal"===a.orient?(s.pixel=e[0]-t[0],s.pixelLength=r.width,s.pixelStart=r.x,s.signal=a.inverse?1:-1):(s.pixel=e[1]-t[1],s.pixelLength=r.height,s.pixelStart=r.y,s.signal=a.inverse?-1:1),s}};t.exports=u},function(t,e,i){var n=i(46);t.exports=n.extend({type:"dataZoom.select"})},function(t,e,i){t.exports=i(47).extend({type:"dataZoom.select"})},function(t,e,i){var n=i(46),o=n.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"}}});t.exports=o},function(t,e,i){function n(t){var e={x:"y",y:"x",radius:"angle",angle:"radius"};return e[t]}var o=i(1),a=i(3),r=i(39),s=i(47),l=a.Rect,u=i(4),h=u.linearMap,c=i(12),d=i(95),f=i(20),p=u.asc,g=o.bind,m=o.each,v=7,y=1,x=30,_="horizontal",b="vertical",w=5,S=["line","bar","candlestick","scatter"],M=s.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){return M.superApply(this,"render",arguments),r.createOrUpdate(this,"_dispatchZoomAction",this.dataZoomModel.get("throttle"),"fixRate"),this._orient=t.get("orient"),this.dataZoomModel.get("show")===!1?void this.group.removeAll():(n&&"dataZoom"===n.type&&n.from===this.uid||this._buildView(),void this._updateView())},remove:function(){M.superApply(this,"remove",arguments),r.clear(this,"_dispatchZoomAction")},dispose:function(){M.superApply(this,"dispose",arguments),r.clear(this,"_dispatchZoomAction")},_buildView:function(){var t=this.group;t.removeAll(),this._resetLocation(),this._resetInterval();var e=this._displayables.barGroup=new a.Group;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===_?{right:n.width-i.x-i.width,top:n.height-x-v,width:i.width,height:x}:{right:v,top:i.y,width:x,height:i.height},r=c.getLayoutParams(t.option);o.each(["right","top","width","height"],function(t){"ph"===r[t]&&(r[t]=a[t])});var s=c.getLayoutRect(r,n,t.padding);this._location={x:s.x,y:s.y},this._size=[s.width,s.height],this._orient===b&&this._size.reverse()},_positionGroup:function(){var t=this.group,e=this._location,i=this._orient,n=this.dataZoomModel.getFirstTargetAxisModel(),o=n&&n.get("inverse"),a=this._displayables.barGroup,r=(this._dataShadowInfo||{}).otherAxisInverse;a.attr(i!==_||o?i===_&&o?{scale:r?[-1,1]:[-1,-1]}:i!==b||o?{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([a]);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;this._displayables.barGroup.add(new l({silent:!0,shape:{x:0,y:0,width:e[0],height:e[1]},style:{fill:t.get("backgroundColor")},z2:-40}))},_renderDataShadow:function(){var t=this._dataShadowInfo=this._prepareDataShadowInfo();if(t){var e=this._size,i=t.series,n=i.getRawData(),r=i.getShadowDim?i.getShadowDim():t.otherDim;if(null!=r){var s=n.getDataExtent(r),l=.3*(s[1]-s[0]);s=[s[0]-l,s[1]+l];var u,c=[0,e[1]],d=[0,e[0]],f=[[e[0],0],[0,0]],p=[],g=d[1]/(n.count()-1),m=0,v=Math.round(n.count()/e[0]);n.each([r],function(t,e){if(v>0&&e%v)return void(m+=g);var i=null==t||isNaN(t)||""===t,n=i?0:h(t,s,c,!0);i&&!u&&e?(f.push([f[f.length-1][0],0]),p.push([p[p.length-1][0],0])):!i&&u&&(f.push([m,0]),p.push([m,0])),f.push([m,n]),p.push([m,n]),m+=g,u=i});var y=this.dataZoomModel;this._displayables.barGroup.add(new a.Polygon({shape:{points:f},style:o.defaults({fill:y.get("dataBackgroundColor")},y.getModel("dataBackground.areaStyle").getAreaStyle()),silent:!0,z2:-20})),this._displayables.barGroup.add(new a.Polyline({shape:{points:p},style:y.getModel("dataBackground.lineStyle").getLineStyle(),silent:!0,z2:-19}))}}},_prepareDataShadowInfo:function(){var t=this.dataZoomModel,e=t.get("showDataShadow");if(e!==!1){var i,a=this.ecModel;return t.eachTargetAxis(function(r,s){var l=t.getAxisProxy(r.name,s).getTargetSeriesModels();o.each(l,function(t){if(!(i||e!==!0&&o.indexOf(S,t.get("type"))<0)){var l,u=a.getComponent(r.axis,s).axis,h=n(r.name),c=t.coordinateSystem;null!=h&&c.getOtherAxis&&(l=c.getOtherAxis(u).inverse),i={thisAxis:u,series:t,thisDim:r.name,otherDim:h,otherAxisInverse:l}}},this)},this),i}},_renderHandle:function(){var t=this._displayables,e=t.handles=[],i=t.handleLabels=[],n=this._displayables.barGroup,o=this._size,r=this.dataZoomModel;n.add(t.filler=new l({draggable:!0,cursor:"move",drift:g(this._onDragMove,this,"all"),onmousemove:function(t){f.stop(t.event)},ondragstart:g(this._showDataInfo,this,!0),ondragend:g(this._onDragEnd,this),onmouseover:g(this._showDataInfo,this,!0),onmouseout:g(this._showDataInfo,this,!1),style:{fill:r.get("fillerColor"),textPosition:"inside"}})),n.add(new l(a.subPixelOptimizeRect({silent:!0,shape:{x:0,y:0,width:o[0],height:o[1]},style:{stroke:r.get("dataBackgroundColor")||r.get("borderColor"),lineWidth:y,fill:"rgba(0,0,0,0)"}})));var s=r.get("handleIcon");m([0,1],function(t){var o=a.makePath(s,{style:{strokeNoScale:!0},rectHover:!0,cursor:"vertical"===this._orient?"ns-resize":"ew-resize",draggable:!0,drift:g(this._onDragMove,this,t),onmousemove:function(t){f.stop(t.event)},ondragend:g(this._onDragEnd,this),onmouseover:g(this._showDataInfo,this,!0),onmouseout:g(this._showDataInfo,this,!1)},{x:-.5,y:0,width:1,height:1},"center"),l=o.getBoundingRect();this._handleHeight=u.parsePercent(r.get("handleSize"),this._size[1]),this._handleWidth=l.width/l.height*this._handleHeight,o.setStyle(r.getModel("handleStyle").getItemStyle());var h=r.get("handleColor");null!=h&&(o.style.fill=h),n.add(e[t]=o);var c=r.textStyleModel;this.group.add(i[t]=new a.Text({silent:!0,invisible:!0,style:{x:0,y:0,text:"",textVerticalAlign:"middle",textAlign:"center",fill:c.getTextColor(),textFont:c.getFont()},z2:10}))},this)},_resetInterval:function(){var t=this._range=this.dataZoomModel.getPercentRange(),e=this._getViewExtent();this._handleEnds=[h(t[0],[0,100],e,!0),h(t[1],[0,100],e,!0)]},_updateInterval:function(t,e){var i=this._handleEnds,n=this._getViewExtent();d(e,i,n,"all"===t||this.dataZoomModel.get("zoomLock")?"rigid":"cross",t),this._range=p([h(i[0],n,[0,100],!0),h(i[1],n,[0,100],!0)])},_updateView:function(t){var e=this._displayables,i=this._handleEnds,n=p(i.slice()),o=this._size;m([0,1],function(t){var n=e.handles[t],a=this._handleHeight;n.attr({scale:[a,a],position:[i[t],o[1]/2-a/2]})},this),e.filler.setShape({x:n[0],y:0,width:n[1]-n[0],height:o[1]}),this._updateDataInfo(t)},_updateDataInfo:function(t){function e(t){var e=a.getTransform(n.handles[t].parent,this.group),i=a.transformDirection(0===t?"right":"left",e),l=this._handleWidth/2+w,u=a.applyTransform([d[t]+(0===t?-l:l),this._size[1]/2],e);o[t].setStyle({x:u[0],y:u[1],textVerticalAlign:r===_?"middle":i,textAlign:r===_?i:"center",text:s[t]})}var i=this.dataZoomModel,n=this._displayables,o=n.handleLabels,r=this._orient,s=["",""];if(i.get("showDetail")){var l=i.findRepresentativeAxisProxy();if(l){var u=l.getAxisModel().axis,h=this._range,c=t?l.calculateDataWindow({start:h[0],end:h[1]}).valueWindow:l.getDataValueWindow();s=[this._formatLabel(c[0],u),this._formatLabel(c[1],u)]}}var d=p(this._handleEnds.slice());e.call(this,0),e.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 r=null==t||isNaN(t)?"":"category"===e.type||"time"===e.type?e.scale.getLabel(Math.round(t)):t.toFixed(Math.min(a,20));return o.isFunction(n)?n(t,r):o.isString(n)?n.replace("{value}",r):r},_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=this._applyBarTransform([e,i],!0);this._updateInterval(t,n[0]);var o=this.dataZoomModel.get("realtime");this._updateView(!o),o&&o&&this._dispatchZoomAction()},_onDragEnd:function(){this._dragging=!1,this._showDataInfo(!1),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]})},_applyBarTransform:function(t,e){var i=this._displayables.barGroup.getLocalTransform();return a.applyTransform(t,i,e)},_findCoordRect:function(){var t;if(m(this.getTargetCoordInfo(),function(e){if(!t&&e.length){var i=e[0].model.coordinateSystem;t=i.getRect&&i.getRect()}}),!t){var e=this.api.getWidth(),i=this.api.getHeight();t={x:.2*e,y:.2*i,width:.6*e,height:.6*i}}return t}});t.exports=M},function(t,e,i){function n(t){var e=t.getZr();return e[p]||(e[p]={})}function o(t,e,i){var n=new c(t.getZr());return n.enable(),n.on("pan",f(r,i)),n.on("zoom",f(s,i)),n}function a(t){h.each(t,function(e,i){e.count||(e.controller.dispose(),delete t[i])})}function r(t,e,i,n,o,a,r){l(t,function(s){return s.panGetRange(t.controller,e,i,n,o,a,r)})}function s(t,e,i,n){l(t,function(o){return o.zoomGetRange(t.controller,e,i,n)})}function l(t,e){var i=[];h.each(t.dataZoomInfos,function(t){var n=e(t);n&&i.push({dataZoomId:t.dataZoomId,start:n[0],end:n[1]})}),t.dispatchAction(i)}function u(t,e){t.dispatchAction({type:"dataZoom",batch:e})}var h=i(1),c=i(94),d=i(39),f=h.curry,p="\0_ec_dataZoom_roams",g={register:function(t,e){var i=n(t),r=e.dataZoomId,s=e.coordId;h.each(i,function(t,i){var n=t.dataZoomInfos;n[r]&&h.indexOf(e.allCoordIds,s)<0&&(delete n[r],t.count--)}),a(i);var l=i[s];l||(l=i[s]={coordId:s,dataZoomInfos:{},count:0},l.controller=o(t,e,l),l.dispatchAction=h.curry(u,t)),l.controller.setContainsPoint(e.containsPoint),d.createOrUpdate(l,"dispatchAction",e.throttleRate,"fixRate"),!l.dataZoomInfos[r]&&l.count++,l.dataZoomInfos[r]=e},unregister:function(t,e){var i=n(t);h.each(i,function(t){t.controller.dispose();var i=t.dataZoomInfos;i[e]&&(delete i[e],t.count--)}),a(i)},shouldRecordRange:function(t,e){if(t&&"dataZoom"===t.type&&t.batch)for(var i=0,n=t.batch.length;i<n;i++)if(t.batch[i].dataZoomId===e)return!1;return!0},generateCoordId:function(t){return t.type+"\0_"+t.id}};t.exports=g},function(t,e,i){i(128),i(46),i(47),i(199),i(200),i(126),i(125)},function(t,e,i){function n(t,e,i,n){var o=i.type,a=f[o.charAt(0).toUpperCase()+o.slice(1)],r=new a(i);e.add(r),n[t]=r,r.__ecGraphicId=t}function o(t,e){var i=t&&t.parent;i&&("group"===t.type&&t.traverse(function(t){o(t,e)}),delete e[t.__ecGraphicId],i.remove(t))}function a(t){return t=c.extend({},t),c.each(["id","parentId","$action","hv","bounding"].concat(p.LOCATION_PARAMS),function(e){delete t[e]}),t}function r(t,e){var i;return c.each(e,function(e){null!=t[e]&&"auto"!==t[e]&&(i=!0)}),i}function s(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}function l(t,e,i){var n=c.extend({},i),o=t[e],a=i.$action||"merge";if("merge"===a)if(o){c.merge(o,n,!0),p.mergeLayoutParam(o,n,{ignoreSize:!0}),p.copyLayoutParams(i,o)}else t[e]=n;else"replace"===a?t[e]=n:"remove"===a&&o&&(t[e]=null)}function u(t,e){t&&(t.hv=e.hv=[r(e,["left","right"]),r(e,["top","bottom"])],"group"===t.type&&(null==t.width&&(t.width=e.width=0),null==t.height&&(t.height=e.height=0)))}var h=i(2),c=i(1),d=i(5),f=i(3),p=i(12);h.registerPreprocessor(function(t){var e=t.graphic;c.isArray(e)?e[0]&&e[0].elements?t.graphic=[t.graphic[0]]:t.graphic=[{elements:e}]:e&&!e.elements&&(t.graphic=[{elements:[e]}])});var g=h.extendComponentModel({type:"graphic",defaultOption:{elements:[],parentId:null},_elOptionsToUpdate:null,mergeOption:function(t){var e=this.option.elements;this.option.elements=null,g.superApply(this,"mergeOption",arguments),this.option.elements=e},optionUpdated:function(t,e){var i=this.option,n=(e?i:t).elements,o=i.elements=e?[]:i.elements,a=[];this._flatten(n,a);var r=d.mappingToExists(o,a);d.makeIdAndName(r);var h=this._elOptionsToUpdate=[];c.each(r,function(t,e){var i=t.option;i&&(h.push(i),s(t,i),l(o,e,i),u(o[e],i))},this);for(var f=o.length-1;f>=0;f--)null==o[f]?o.splice(f,1):delete o[f].$action},_flatten:function(t,e,i){c.each(t,function(t){if(t){i&&(t.parentOption=i),e.push(t);var n=t.children;"group"===t.type&&n&&this._flatten(n,e,t),delete t.children}},this)},useElOptionsToUpdate:function(){var t=this._elOptionsToUpdate;return this._elOptionsToUpdate=null,t}});h.extendComponentView({type:"graphic",init:function(t,e){this._elMap={},this._lastGraphicModel},render:function(t,e,i){t!==this._lastGraphicModel&&this._clear(),this._lastGraphicModel=t,this._updateElements(t,i),this._relocate(t,i)},_updateElements:function(t,e){var i=t.useElOptionsToUpdate();if(i){var r=this._elMap,s=this.group;c.each(i,function(t){var e=t.$action,i=t.id,l=r[i],u=t.parentId,h=null!=u?r[u]:s;t.hv&&t.hv[1]&&"text"===t.type&&(t.style=c.defaults({textBaseline:"middle"},t.style),t.style.textVerticalAlign=null);var d=a(t);e&&"merge"!==e?"replace"===e?(o(l,r),n(i,h,d,r)):"remove"===e&&o(l,r):l?l.attr(d):n(i,h,d,r),r[i]&&(r[i].__ecGraphicWidth=t.width,r[i].__ecGraphicHeight=t.height)})}},_relocate:function(t,e){for(var i=t.option.elements,n=this.group,o=this._elMap,a=i.length-1;a>=0;a--){var r=i[a],s=o[r.id];if(s){var l=s.parent,u=l===n?{width:e.getWidth(),height:e.getHeight()}:{width:l.__ecGraphicWidth||0,height:l.__ecGraphicHeight||0};p.positionElement(s,r,u,null,{hv:r.hv,boundingMode:r.bounding})}}},_clear:function(){var t=this._elMap;c.each(t,function(e){o(e,t)}),this._elMap={}},dispose:function(){this._clear()}})},function(t,e,i){i(207),i(209),i(208);var n=i(2);n.registerProcessor(i(210))},function(t,e,i){"use strict";var n=i(1),o=i(10),a=i(2).extendComponentModel({type:"legend",dependencies:["series"],layoutMode:{type:"box",ignoreSize:!0},init:function(t,e,i){this.mergeDefaultAndTheme(t,i),t.selected=t.selected||{}},mergeOption:function(t){a.superCall(this,"mergeOption",t)},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(t){var e=n.map(this.get("data")||[],function(t){return"string"!=typeof t&&"number"!=typeof t||(t={name:t}),new o(t,this,this.ecModel)},this);this._data=e;var i=n.map(t.getSeries(),function(t){return t.name});t.eachSeries(function(t){if(t.legendDataProvider){var e=t.legendDataProvider();i=i.concat(e.mapArray(e.getName))}}),this._availableNames=i},getData:function(){return this._data},select:function(t){var e=this.option.selected,i=this.get("selectedMode");if("single"===i){var o=this._data;n.each(o,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)},isSelected:function(t){var e=this.option.selected;return!(e.hasOwnProperty(t)&&!e[t])&&n.indexOf(this._availableNames,t)>=0},defaultOption:{
+zlevel:0,z:4,show:!0,orient:"horizontal",left:"center",top:"top",align:"auto",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,padding:5,itemGap:10,itemWidth:25,itemHeight:14,inactiveColor:"#ccc",textStyle:{color:"#333"},selectedMode:!0,tooltip:{show:!1}}});t.exports=a},function(t,e,i){function n(t,e){e.dispatchAction({type:"legendToggleSelect",name:t})}function o(t,e,i){var n=i.getZr().storage.getDisplayList()[0];n&&n.useHoverLayer||t.get("legendHoverLink")&&i.dispatchAction({type:"highlight",seriesName:t.name,name:e})}function a(t,e,i){var n=i.getZr().storage.getDisplayList()[0];n&&n.useHoverLayer||t.get("legendHoverLink")&&i.dispatchAction({type:"downplay",seriesName:t.name,name:e})}var r=i(1),s=i(24),l=i(3),u=i(131),h=r.curry;t.exports=i(2).extendComponentView({type:"legend",init:function(){this._symbolTypeStore={}},render:function(t,e,i){var s=this.group;if(s.removeAll(),t.get("show")){var c=t.get("selectedMode"),d=t.get("align");"auto"===d&&(d="right"===t.get("left")&&"vertical"===t.get("orient")?"right":"left");var f={};r.each(t.getData(),function(r){var u=r.get("name");if(""===u||"\n"===u)return void s.add(new l.Group({newline:!0}));var p=e.getSeriesByName(u)[0];if(!f[u])if(p){var g=p.getData(),m=g.getVisual("color");"function"==typeof m&&(m=m(p.getDataParams(0)));var v=g.getVisual("legendSymbol")||"roundRect",y=g.getVisual("symbol"),x=this._createItem(u,r,t,v,y,d,m,c);x.on("click",h(n,u,i)).on("mouseover",h(o,p,null,i)).on("mouseout",h(a,p,null,i)),f[u]=!0}else e.eachRawSeries(function(e){if(!f[u]&&e.legendDataProvider){var s=e.legendDataProvider(),l=s.indexOfName(u);if(l<0)return;var p=s.getItemVisual(l,"color"),g="roundRect",m=this._createItem(u,r,t,g,null,d,p,c);m.on("click",h(n,u,i)).on("mouseover",h(o,e,u,i)).on("mouseout",h(a,e,u,i)),f[u]=!0}},this)},this),u.layout(s,t,i),u.addBackground(s,t)}},_createItem:function(t,e,i,n,o,a,u,h){var c=i.get("itemWidth"),d=i.get("itemHeight"),f=i.get("inactiveColor"),p=i.isSelected(t),g=new l.Group,m=e.getModel("textStyle"),v=e.get("icon"),y=e.getModel("tooltip"),x=y.parentModel;if(n=v||n,g.add(s.createSymbol(n,0,0,c,d,p?u:f)),!v&&o&&(o!==n||"none"==o)){var _=.8*d;"none"===o&&(o="circle"),g.add(s.createSymbol(o,(c-_)/2,(d-_)/2,_,_,p?u:f))}var b="left"===a?c+5:-5,w=a,S=i.get("formatter"),M=t;"string"==typeof S&&S?M=S.replace("{name}",null!=t?t:""):"function"==typeof S&&(M=S(t));var I=new l.Text({style:{text:M,x:b,y:d/2,fill:p?m.getTextColor():f,textFont:m.getFont(),textAlign:w,textVerticalAlign:"middle"}});g.add(I);var T=new l.Rect({shape:g.getBoundingRect(),invisible:!0,tooltip:y.get("show")?r.extend({content:t,formatter:x.get("formatter",!0)||function(){return t},formatterParams:{componentType:"legend",legendIndex:i.componentIndex,name:t,$vars:["name"]}},y.option):null});return g.add(T),g.eachChild(function(t){t.silent=!0}),T.silent=!h,this.group.add(g),l.setHoverStyle(g),g}})},function(t,e,i){function n(t,e,i){var n,o={},r="toggleSelected"===t;return i.eachComponent("legend",function(i){r&&null!=n?i[n?"select":"unSelect"](e.name):(i[t](e.name),n=i.isSelected(e.name));var s=i.getData();a.each(s,function(t){var e=t.get("name");if("\n"!==e&&""!==e){var n=i.isSelected(e);e in o?o[e]=o[e]&&n:o[e]=n}})}),{name:e.name,selected:o}}var o=i(2),a=i(1);o.registerAction("legendToggleSelect","legendselectchanged",a.curry(n,"toggleSelected")),o.registerAction("legendSelect","legendselected",a.curry(n,"select")),o.registerAction("legendUnSelect","legendunselected",a.curry(n,"unSelect"))},function(t,e){t.exports=function(t){var e=t.findComponents({mainType:"legend"});e&&e.length&&t.filterSeries(function(t){for(var i=0;i<e.length;i++)if(!e[i].isSelected(t.name))return!1;return!0})}},function(t,e,i){i(214),i(215),i(2).registerPreprocessor(function(t){t.markArea=t.markArea||{}})},function(t,e,i){i(216),i(217),i(2).registerPreprocessor(function(t){t.markLine=t.markLine||{}})},function(t,e,i){i(218),i(219),i(2).registerPreprocessor(function(t){t.markPoint=t.markPoint||{}})},function(t,e,i){t.exports=i(79).extend({type:"markArea",defaultOption:{zlevel:0,z:1,tooltip:{trigger:"item"},animation:!1,label:{normal:{show:!0,position:"top"},emphasis:{show:!0,position:"top"}},itemStyle:{normal:{borderWidth:0}}}})},function(t,e,i){function n(t){return!isNaN(t)&&!isFinite(t)}function o(t,e,i,o){var a=1-t;return n(e[a])&&n(i[a])}function a(t,e){var i=e.coord[0],n=e.coord[1];return!("cartesian2d"!==t.type||!i||!n||!o(1,i,n,t)&&!o(0,i,n,t))||(f.dataFilter(t,{coord:i,x:e.x0,y:e.y0})||f.dataFilter(t,{coord:n,x:e.x1,y:e.y1}))}function r(t,e,i,o,a){var r,s=o.coordinateSystem,l=t.getItemModel(e),u=h.parsePercent(l.get(i[0]),a.getWidth()),c=h.parsePercent(l.get(i[1]),a.getHeight());if(isNaN(u)||isNaN(c)){if(o.getMarkerPosition)r=o.getMarkerPosition(t.getValues(i,e));else{var d=t.get(i[0],e),f=t.get(i[1],e);r=s.dataToPoint([d,f],!0)}if("cartesian2d"===s.type){var p=s.getAxis("x"),g=s.getAxis("y"),d=t.get(i[0],e),f=t.get(i[1],e);n(d)?r[0]=p.toGlobalCoord(p.getExtent()["x0"===i[0]?0:1]):n(f)&&(r[1]=g.toGlobalCoord(g.getExtent()["y0"===i[1]?0:1]))}isNaN(u)||(r[0]=u),isNaN(c)||(r[1]=c)}else r=[u,c];return r}function s(t,e,i){var n,o,r=["x0","y0","x1","y1"];t?(n=l.map(t&&t.dimensions,function(t){var i=e.getData().getDimensionInfo(e.coordDimToDataDim(t)[0])||{};return i.name=t,i}),o=new u(l.map(r,function(t,e){return{name:t,type:n[e%2].type}}),i)):(n=[{name:"value",type:"float"}],o=new u(n,i));var s=l.map(i.get("data"),l.curry(p,e,t,i));t&&(s=l.filter(s,l.curry(a,t)));var h=t?function(t,e,i,n){return t.coord[Math.floor(n/2)][n%2]}:function(t){return t.value};return o.initData(s,null,h),o.hasItemOption=!0,o}var l=i(1),u=i(14),h=i(4),c=i(3),d=i(22),f=i(81),p=function(t,e,i,n){var o=f.dataTransform(t,n[0]),a=f.dataTransform(t,n[1]),r=l.retrieve,s=o.coord,u=a.coord;s[0]=r(s[0],-(1/0)),s[1]=r(s[1],-(1/0)),u[0]=r(u[0],1/0),u[1]=r(u[1],1/0);var h=l.mergeAll([{},o,a]);return h.coord=[o.coord,a.coord],h.x0=o.x,h.y0=o.y,h.x1=a.x,h.y1=a.y,h},g=[["x0","y0"],["x1","y0"],["x1","y1"],["x0","y1"]];i(80).extend({type:"markArea",updateLayout:function(t,e,i){e.eachSeries(function(t){var e=t.markAreaModel;if(e){var n=e.getData();n.each(function(e){var o=l.map(g,function(o){return r(n,e,o,t,i)});n.setItemLayout(e,o);var a=n.getItemGraphicEl(e);a.setShape("points",o)})}},this)},renderSeries:function(t,e,i,n){var o=t.coordinateSystem,a=t.name,u=t.getData(),h=this.markerGroupMap,f=h[a];f||(f=h[a]={group:new c.Group}),this.group.add(f.group),f.__keep=!0;var p=s(o,t,e);e.setData(p),p.each(function(e){p.setItemLayout(e,l.map(g,function(i){return r(p,e,i,t,n)})),p.setItemVisual(e,{color:u.getVisual("color")})}),p.diff(f.__data).add(function(t){var e=new c.Polygon({shape:{points:p.getItemLayout(t)}});p.setItemGraphicEl(t,e),f.group.add(e)}).update(function(t,i){var n=f.__data.getItemGraphicEl(i);c.updateProps(n,{shape:{points:p.getItemLayout(t)}},e,t),f.group.add(n),p.setItemGraphicEl(t,n)}).remove(function(t){var e=f.__data.getItemGraphicEl(t);f.group.remove(e)}).execute(),p.eachItemGraphicEl(function(t,i){var n=p.getItemModel(i),o=n.getModel("label.normal"),a=n.getModel("label.emphasis"),r=p.getItemVisual(i,"color");t.useStyle(l.defaults(n.getModel("itemStyle.normal").getItemStyle(),{fill:d.modifyAlpha(r,.4),stroke:r})),t.hoverStyle=n.getModel("itemStyle.normal").getItemStyle();var s=p.getName(i)||"",u=r||t.style.fill;o.getShallow("show")?(c.setText(t.style,o,u),t.style.text=l.retrieve(e.getFormattedLabel(i,"normal"),s)):t.style.text="",a.getShallow("show")?(c.setText(t.hoverStyle,a,u),t.hoverStyle.text=l.retrieve(e.getFormattedLabel(i,"emphasis"),s)):t.hoverStyle.text="",c.setHoverStyle(t,{}),t.dataModel=e}),f.__data=p,f.group.silent=e.get("silent")||t.get("silent")}})},function(t,e,i){t.exports=i(79).extend({type:"markLine",defaultOption:{zlevel:0,z:5,symbol:["circle","arrow"],symbolSize:[8,16],precision:2,tooltip:{trigger:"item"},label:{normal:{show:!0,position:"end"},emphasis:{show:!0}},lineStyle:{normal:{type:"dashed"},emphasis:{width:3}},animationEasing:"linear"}})},function(t,e,i){function n(t){return!isNaN(t)&&!isFinite(t)}function o(t,e,i,o){var a=1-t,r=o.dimensions[t];return n(e[a])&&n(i[a])&&e[t]===i[t]&&o.getAxis(r).containData(e[t])}function a(t,e){if("cartesian2d"===t.type){var i=e[0].coord,n=e[1].coord;if(i&&n&&(o(1,i,n,t)||o(0,i,n,t)))return!0}return c.dataFilter(t,e[0])&&c.dataFilter(t,e[1])}function r(t,e,i,o,a){var r,s=o.coordinateSystem,l=t.getItemModel(e),u=h.parsePercent(l.get("x"),a.getWidth()),c=h.parsePercent(l.get("y"),a.getHeight());if(isNaN(u)||isNaN(c)){if(o.getMarkerPosition)r=o.getMarkerPosition(t.getValues(t.dimensions,e));else{var d=s.dimensions,f=t.get(d[0],e),p=t.get(d[1],e);r=s.dataToPoint([f,p])}if("cartesian2d"===s.type){var g=s.getAxis("x"),m=s.getAxis("y"),d=s.dimensions;n(t.get(d[0],e))?r[0]=g.toGlobalCoord(g.getExtent()[i?0:1]):n(t.get(d[1],e))&&(r[1]=m.toGlobalCoord(m.getExtent()[i?0:1]))}isNaN(u)||(r[0]=u),isNaN(c)||(r[1]=c)}else r=[u,c];t.setItemLayout(e,r)}function s(t,e,i){var n;n=t?l.map(t&&t.dimensions,function(t){var i=e.getData().getDimensionInfo(e.coordDimToDataDim(t)[0])||{};return i.name=t,i}):[{name:"value",type:"float"}];var o=new u(n,i),r=new u(n,i),s=new u([],i),h=l.map(i.get("data"),l.curry(f,e,t,i));t&&(h=l.filter(h,l.curry(a,t)));var d=t?c.dimValueGetter:function(t){return t.value};return o.initData(l.map(h,function(t){return t[0]}),null,d),r.initData(l.map(h,function(t){return t[1]}),null,d),s.initData(l.map(h,function(t){return t[2]})),s.hasItemOption=!0,{from:o,to:r,line:s}}var l=i(1),u=i(14),h=i(4),c=i(81),d=i(109),f=function(t,e,i,n){var o=t.getData(),a=n.type;if(!l.isArray(n)&&("min"===a||"max"===a||"average"===a||null!=n.xAxis||null!=n.yAxis)){var r,s,u;if(null!=n.yAxis||null!=n.xAxis)s=null!=n.yAxis?"y":"x",r=e.getAxis(s),u=l.retrieve(n.yAxis,n.xAxis);else{var h=c.getAxisInfo(n,o,e,t);s=h.valueDataDim,r=h.valueAxis,u=c.numCalculate(o,s,a)}var d="x"===s?0:1,f=1-d,p=l.clone(n),g={};p.type=null,p.coord=[],g.coord=[],p.coord[f]=-(1/0),g.coord[f]=1/0;var m=i.get("precision");m>=0&&"number"==typeof u&&(u=+u.toFixed(m)),p.coord[d]=g.coord[d]=u,n=[p,g,{type:a,valueIndex:n.valueIndex,value:u}]}return n=[c.dataTransform(t,n[0]),c.dataTransform(t,n[1]),l.extend({},n[2])],n[2].type=n[2].type||"",l.merge(n[2],n[0]),l.merge(n[2],n[1]),n};i(80).extend({type:"markLine",updateLayout:function(t,e,i){e.eachSeries(function(t){var e=t.markLineModel;if(e){var n=e.getData(),o=e.__from,a=e.__to;o.each(function(e){r(o,e,!0,t,i),r(a,e,!1,t,i)}),n.each(function(t){n.setItemLayout(t,[o.getItemLayout(t),a.getItemLayout(t)])}),this.markerGroupMap[t.name].updateLayout()}},this)},renderSeries:function(t,e,i,n){function o(e,i,o){var a=e.getItemModel(i);r(e,i,o,t,n),e.setItemVisual(i,{symbolSize:a.get("symbolSize")||x[o?0:1],symbol:a.get("symbol",!0)||y[o?0:1],color:a.get("itemStyle.normal.color")||h.getVisual("color")})}var a=t.coordinateSystem,u=t.name,h=t.getData(),c=this.markerGroupMap,f=c[u];f||(f=c[u]=new d),this.group.add(f.group);var p=s(a,t,e),g=p.from,m=p.to,v=p.line;e.__from=g,e.__to=m,e.setData(v);var y=e.get("symbol"),x=e.get("symbolSize");l.isArray(y)||(y=[y,y]),"number"==typeof x&&(x=[x,x]),p.from.each(function(t){o(g,t,!0),o(m,t,!1)}),v.each(function(t){var e=v.getItemModel(t).get("lineStyle.normal.color");v.setItemVisual(t,{color:e||g.getItemVisual(t,"color")}),v.setItemLayout(t,[g.getItemLayout(t),m.getItemLayout(t)]),v.setItemVisual(t,{fromSymbolSize:g.getItemVisual(t,"symbolSize"),fromSymbol:g.getItemVisual(t,"symbol"),toSymbolSize:m.getItemVisual(t,"symbolSize"),toSymbol:m.getItemVisual(t,"symbol")})}),f.updateData(v),p.line.eachItemGraphicEl(function(t,i){t.traverse(function(t){t.dataModel=e})}),f.__keep=!0,f.group.silent=e.get("silent")||t.get("silent")}})},function(t,e,i){t.exports=i(79).extend({type:"markPoint",defaultOption:{zlevel:0,z:5,symbol:"pin",symbolSize:50,tooltip:{trigger:"item"},label:{normal:{show:!0,position:"inside"},emphasis:{show:!0}},itemStyle:{normal:{borderWidth:2}}}})},function(t,e,i){function n(t,e,i){var n=e.coordinateSystem;t.each(function(o){var a,r=t.getItemModel(o),l=s.parsePercent(r.get("x"),i.getWidth()),u=s.parsePercent(r.get("y"),i.getHeight());if(isNaN(l)||isNaN(u)){if(e.getMarkerPosition)a=e.getMarkerPosition(t.getValues(t.dimensions,o));else if(n){var h=t.get(n.dimensions[0],o),c=t.get(n.dimensions[1],o);a=n.dataToPoint([h,c])}}else a=[l,u];isNaN(l)||(a[0]=l),isNaN(u)||(a[1]=u),t.setItemLayout(o,a)})}function o(t,e,i){var n;n=t?r.map(t&&t.dimensions,function(t){var i=e.getData().getDimensionInfo(e.coordDimToDataDim(t)[0])||{};return i.name=t,i}):[{name:"value",type:"float"}];var o=new l(n,i),a=r.map(i.get("data"),r.curry(u.dataTransform,e));return t&&(a=r.filter(a,r.curry(u.dataFilter,t))),o.initData(a,null,t?u.dimValueGetter:function(t){return t.value}),o}var a=i(44),r=i(1),s=i(4),l=i(14),u=i(81);i(80).extend({type:"markPoint",updateLayout:function(t,e,i){e.eachSeries(function(t){var e=t.markPointModel;e&&(n(e.getData(),t,i),this.markerGroupMap[t.name].updateLayout(e))},this)},renderSeries:function(t,e,i,r){var s=t.coordinateSystem,l=t.name,u=t.getData(),h=this.markerGroupMap,c=h[l];c||(c=h[l]=new a);var d=o(s,t,e);e.setData(d),n(e.getData(),t,r),d.each(function(t){var i=d.getItemModel(t),n=i.getShallow("symbolSize");"function"==typeof n&&(n=n(e.getRawValue(t),e.getDataParams(t))),d.setItemVisual(t,{symbolSize:n,color:i.get("itemStyle.normal.color")||u.getVisual("color"),symbol:i.getShallow("symbol")})}),c.updateData(d),this.group.add(c.group),d.eachItemGraphicEl(function(t){t.traverse(function(t){t.dataModel=e})}),c.__keep=!0,c.group.silent=e.get("silent")||t.get("silent")}})},function(t,e,i){"use strict";var n=i(2),o=i(3),a=i(12);n.extendComponentModel({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"}}}),n.extendComponentView({type:"title",render:function(t,e,i){if(this.group.removeAll(),t.get("show")){var n=this.group,r=t.getModel("textStyle"),s=t.getModel("subtextStyle"),l=t.get("textAlign"),u=t.get("textBaseline"),h=new o.Text({style:{text:t.get("text"),textFont:r.getFont(),fill:r.getTextColor()},z2:10}),c=h.getBoundingRect(),d=t.get("subtext"),f=new o.Text({style:{text:d,textFont:s.getFont(),fill:s.getTextColor(),y:c.height+t.get("itemGap"),textBaseline:"top"},z2:10}),p=t.get("link"),g=t.get("sublink");h.silent=!p,f.silent=!g,p&&h.on("click",function(){window.open(p,"_"+t.get("target"))}),g&&f.on("click",function(){window.open(g,"_"+t.get("subtarget"))}),n.add(h),d&&n.add(f);var m=n.getBoundingRect(),v=t.getBoxLayoutParams();v.width=m.width,v.height=m.height;var y=a.getLayoutRect(v,{width:i.getWidth(),height:i.getHeight()},t.get("padding"));l||(l=t.get("left")||t.get("right"),"middle"===l&&(l="center"),"right"===l?y.x+=y.width:"center"===l&&(y.x+=y.width/2)),u||(u=t.get("top")||t.get("bottom"),"center"===u&&(u="middle"),"bottom"===u?y.y+=y.height:"middle"===u&&(y.y+=y.height/2),u=u||"top"),n.attr("position",[y.x,y.y]);var x={textAlign:l,textVerticalAlign:u};h.setStyle(x),f.setStyle(x),m=n.getBoundingRect();var _=y.margin,b=t.getItemStyle(["color","opacity"]);b.fill=t.get("backgroundColor");var w=new o.Rect({shape:{x:m.x-_[3],y:m.y-_[0],width:m.width+_[1]+_[3],height:m.height+_[0]+_[2]},style:b,silent:!0});o.subPixelOptimizeRect(w),n.add(w)}}})},function(t,e,i){i(222),i(223),i(228),i(226),i(224),i(225),i(227)},function(t,e,i){var n=i(28),o=i(1),a=i(2).extendComponentModel({type:"toolbox",layoutMode:{type:"box",ignoreSize:!0},mergeDefaultAndTheme:function(t){a.superApply(this,"mergeDefaultAndTheme",arguments),o.each(this.option.feature,function(t,e){var i=n.get(e);i&&o.merge(t,i.defaultOption)})},defaultOption:{show:!0,z:6,zlevel:0,orient:"horizontal",left:"right",top:"top",backgroundColor:"transparent",borderColor:"#ccc",borderWidth:0,padding:5,itemSize:15,itemGap:8,showTitle:!0,iconStyle:{normal:{borderColor:"#666",color:"none"},emphasis:{borderColor:"#3E98C5"}}}});t.exports=a},function(t,e,i){(function(e){function n(t){return 0===t.indexOf("my")}var o=i(28),a=i(1),r=i(3),s=i(10),l=i(48),u=i(131),h=i(16);t.exports=i(2).extendComponentView({type:"toolbox",render:function(t,e,i,c){function d(a,r){var l,u=y[a],h=y[r],d=m[u],p=new s(d,t,t.ecModel);if(u&&!h){if(n(u))l={model:p,onclick:p.option.onclick,featureName:u};else{var g=o.get(u);if(!g)return;l=new g(p,e,i)}v[u]=l}else{if(l=v[h],!l)return;l.model=p,l.ecModel=e,l.api=i}return!u&&h?void(l.dispose&&l.dispose(e,i)):!p.get("show")||l.unusable?void(l.remove&&l.remove(e,i)):(f(p,l,u),p.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)},void(l.render&&l.render(p,e,i,c)))}function f(n,o,s){var l=n.getModel("iconStyle"),u=o.getIcons?o.getIcons():n.get("icon"),h=n.get("title")||{};if("string"==typeof u){var c=u,d=h;u={},h={},u[s]=c,h[s]=d}var f=n.iconPaths={};a.each(u,function(s,u){var c=l.getModel("normal").getItemStyle(),d=l.getModel("emphasis").getItemStyle(),m={x:-g/2,y:-g/2,width:g,height:g},v=0===s.indexOf("image://")?(m.image=s.slice(8),new r.Image({style:m})):r.makePath(s.replace("path://",""),{style:c,hoverStyle:d,rectHover:!0},m,"center");r.setHoverStyle(v),t.get("showTitle")&&(v.__title=h[u],v.on("mouseover",function(){var t=l.getModel("emphasis").getItemStyle();v.setStyle({text:h[u],textPosition:t.textPosition||"bottom",textFill:t.fill||t.stroke||"#000",textAlign:t.textAlign||"center"})}).on("mouseout",function(){v.setStyle({textFill:null})})),v.trigger(n.get("iconStatus."+u)||"normal"),p.add(v),v.on("click",a.bind(o.onclick,o,e,i,u)),f[u]=v})}var p=this.group;if(p.removeAll(),t.get("show")){var g=+t.get("itemSize"),m=t.get("feature")||{},v=this._features||(this._features={}),y=[];a.each(m,function(t,e){y.push(e)}),new l(this._featureNames||[],y).add(d).update(d).remove(a.curry(d,null)).execute(),this._featureNames=y,u.layout(p,t,i),u.addBackground(p,t),p.eachChild(function(t){var e=t.__title,n=t.hoverStyle;if(n&&e){var o=h.getBoundingRect(e,n.font),a=t.position[0]+p.position[0],r=t.position[1]+p.position[1]+g,s=!1;r+o.height>i.getHeight()&&(n.textPosition="top",s=!0);var l=s?-5-o.height:g+8;a+o.width/2>i.getWidth()?(n.textPosition=["100%",l],n.textAlign="right"):a-o.width/2<0&&(n.textPosition=[0,l],n.textAlign="left")}})}},updateView:function(t,e,i,n){a.each(this._features,function(t){t.updateView&&t.updateView(t.model,e,i,n)})},updateLayout:function(t,e,i,n){a.each(this._features,function(t){t.updateLayout&&t.updateLayout(t.model,e,i,n)})},remove:function(t,e){a.each(this._features,function(i){i.remove&&i.remove(t,e)}),this.group.removeAll()},dispose:function(t,e){a.each(this._features,function(i){i.dispose&&i.dispose(t,e)})}})}).call(e,i(189))},function(t,e,i){function n(t){var e={},i=[],n=[];return t.eachRawSeries(function(t){var o=t.coordinateSystem;if(!o||"cartesian2d"!==o.type&&"polar"!==o.type)i.push(t);else{var a=o.getBaseAxis();if("category"===a.type){var r=a.dim+"_"+a.index;e[r]||(e[r]={categoryAxis:a,valueAxis:o.getOtherAxis(a),series:[]},n.push({axisDim:a.dim,axisIndex:a.index})),e[r].series.push(t)}else i.push(t)}}),{seriesGroupByCategoryAxis:e,other:i,meta:n}}function o(t){var e=[];return p.each(t,function(t,i){var n=t.categoryAxis,o=t.valueAxis,a=o.dim,r=[" "].concat(p.map(t.series,function(t){return t.name})),s=[n.model.getCategories()];p.each(t.series,function(t){s.push(t.getRawData().mapArray(a,function(t){return t}))});for(var l=[r.join(v)],u=0;u<s[0].length;u++){for(var h=[],c=0;c<s.length;c++)h.push(s[c][u]);l.push(h.join(v))}e.push(l.join("\n"))}),e.join("\n\n"+m+"\n\n")}function a(t){return p.map(t,function(t){var e=t.getRawData(),i=[t.name],n=[];return e.each(e.dimensions,function(){for(var t=arguments.length,o=arguments[t-1],a=e.getName(o),r=0;r<t-1;r++)n[r]=arguments[r];i.push((a?a+v:"")+n.join(v))}),i.join("\n")}).join("\n\n"+m+"\n\n")}function r(t){var e=n(t);return{value:p.filter([o(e.seriesGroupByCategoryAxis),a(e.other)],function(t){return t.replace(/[\n\t\s]/g,"")}).join("\n\n"+m+"\n\n"),meta:e.meta}}function s(t){return t.replace(/^\s\s*/,"").replace(/\s\s*$/,"")}function l(t){var e=t.slice(0,t.indexOf("\n"));if(e.indexOf(v)>=0)return!0}function u(t){for(var e=t.split(/\n+/g),i=s(e.shift()).split(y),n=[],o=p.map(i,function(t){return{name:t,data:[]}}),a=0;a<e.length;a++){var r=s(e[a]).split(y);n.push(r.shift());for(var l=0;l<r.length;l++)o[l]&&(o[l].data[a]=r[l])}return{series:o,categories:n}}function h(t){for(var e=t.split(/\n+/g),i=s(e.shift()),n=[],o=0;o<e.length;o++){var a,r=s(e[o]).split(y),l="",u=!1;isNaN(r[0])?(u=!0,l=r[0],r=r.slice(1),n[o]={name:l,value:[]},a=n[o].value):a=n[o]=[];for(var h=0;h<r.length;h++)a.push(+r[h]);1===a.length&&(u?n[o].value=a[0]:n[o]=a[0])}return{name:i,data:n}}function c(t,e){var i=t.split(new RegExp("\n*"+m+"\n*","g")),n={series:[]};return p.each(i,function(t,i){if(l(t)){var o=u(t),a=e[i],r=a.axisDim+"Axis";a&&(n[r]=n[r]||[],n[r][a.axisIndex]={data:o.categories},n.series=n.series.concat(o.series))}else{var o=h(t);n.series.push(o)}}),n}function d(t){this._dom=null,this.model=t}function f(t,e){return p.map(t,function(t,i){var n=e&&e[i];return p.isObject(n)&&!p.isArray(n)?(p.isObject(t)&&!p.isArray(t)&&(t=t.value),p.defaults({value:t},n)):t})}var p=i(1),g=i(20),m=new Array(60).join("-"),v="\t",y=new RegExp("["+v+"]+","g");d.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:"数据视图",lang:["数据视图","关闭","刷新"],backgroundColor:"#fff",textColor:"#000",textareaColor:"#fff",textareaBorderColor:"#333",buttonColor:"#c23531",buttonTextColor:"#fff"},d.prototype.onclick=function(t,e){function i(){n.removeChild(a),M._dom=null}var n=e.getDom(),o=this.model;this._dom&&n.removeChild(this._dom);var a=document.createElement("div");a.style.cssText="position:absolute;left:5px;top:5px;bottom:5px;right:5px;",a.style.backgroundColor=o.get("backgroundColor")||"#fff";var s=document.createElement("h4"),l=o.get("lang")||[];s.innerHTML=l[0]||o.get("title"),s.style.cssText="margin: 10px 20px;",s.style.color=o.get("textColor");var u=document.createElement("div"),h=document.createElement("textarea");u.style.cssText="display:block;width:100%;overflow:auto;";var d=o.get("optionToContent"),f=o.get("contentToOption"),m=r(t);if("function"==typeof d){var y=d(e.getOption());"string"==typeof y?u.innerHTML=y:p.isDom(y)&&u.appendChild(y)}else u.appendChild(h),h.readOnly=o.get("readOnly"),h.style.cssText="width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;",h.style.color=o.get("textColor"),h.style.borderColor=o.get("textareaBorderColor"),h.style.backgroundColor=o.get("textareaColor"),h.value=m.value;var x=m.meta,_=document.createElement("div");_.style.cssText="position:absolute;bottom:0;left:0;right:0;";var b="float:right;margin-right:20px;border:none;cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px",w=document.createElement("div"),S=document.createElement("div");b+=";background-color:"+o.get("buttonColor"),b+=";color:"+o.get("buttonTextColor");var M=this;g.addEventListener(w,"click",i),g.addEventListener(S,"click",function(){var t;try{t="function"==typeof f?f(u,e.getOption()):c(h.value,x)}catch(n){throw i(),new Error("Data view format error "+n)}t&&e.dispatchAction({type:"changeDataView",newOption:t}),i()}),w.innerHTML=l[1],S.innerHTML=l[2],S.style.cssText=b,w.style.cssText=b,!o.get("readOnly")&&_.appendChild(S),_.appendChild(w),g.addEventListener(h,"keydown",function(t){if(9===(t.keyCode||t.which)){var e=this.value,i=this.selectionStart,n=this.selectionEnd;this.value=e.substring(0,i)+v+e.substring(n),this.selectionStart=this.selectionEnd=i+1,g.stop(t)}}),a.appendChild(s),a.appendChild(u),a.appendChild(_),u.style.height=n.clientHeight-80+"px",n.appendChild(a),this._dom=a},d.prototype.remove=function(t,e){this._dom&&e.getDom().removeChild(this._dom)},d.prototype.dispose=function(t,e){this.remove(t,e)},i(28).register("dataView",d),i(2).registerAction({type:"changeDataView",event:"dataViewChanged",update:"prepareAndUpdate"},function(t,e){var i=[];p.each(t.newOption.series,function(t){var n=e.getSeriesByName(t.name)[0];if(n){var o=n.get("data");i.push({name:t.name,data:f(t.data,o)})}else i.push(p.extend({type:"scatter"},t))}),e.mergeOption(p.defaults({series:i},t.newOption))}),t.exports=d},function(t,e,i){"use strict";function n(t,e,i){(this._brushController=new l(i.getZr())).on("brush",s.bind(this._onBrush,this)).mount(),this._isZoomActive}function o(t){var e={};return s.each(["xAxisIndex","yAxisIndex"],function(i){e[i]=t[i],null==e[i]&&(e[i]="all"),(e[i]===!1||"none"===e[i])&&(e[i]=[])}),e}function a(t,e){t.setIconStatus("back",h.count(e)>1?"emphasis":"normal")}function r(t,e,i,n){var a=i._isZoomActive;n&&"takeGlobalCursor"===n.type&&(a="dataZoomSelect"===n.key&&n.dataZoomSelectActive),i._isZoomActive=a,t.setIconStatus("zoom",a?"emphasis":"normal");var r=new u(o(t.option),e,{include:["grid"]});i._brushController.setPanels(r.makePanelOpts(function(t){return t.xAxisDeclared&&!t.yAxisDeclared?"lineX":!t.xAxisDeclared&&t.yAxisDeclared?"lineY":"rect"})).enableBrush(!!a&&{brushType:"auto",brushStyle:{lineWidth:0,fill:"rgba(0,0,0,0.2)"}})}var s=i(1),l=i(129),u=i(186),h=i(127),c=s.each;i(204);var d="\0_ec_\0toolbox-dataZoom_";n.defaultOption={show:!0,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:{zoom:"区域缩放",back:"区域缩放还原"}};var f=n.prototype;f.render=function(t,e,i,n){this.model=t,this.ecModel=e,this.api=i,r(t,e,this,n),a(t,e)},f.onclick=function(t,e,i){p[i].call(this)},f.remove=function(t,e){this._brushController.unmount()},f.dispose=function(t,e){this._brushController.dispose()};var p={zoom:function(){var t=!this._isZoomActive;this.api.dispatchAction({type:"takeGlobalCursor",key:"dataZoomSelect",dataZoomSelectActive:t})},back:function(){this._dispatchZoomAction(h.pop(this.ecModel))}};f._onBrush=function(t,e){function i(t,e,i){var o=n(t,e.getAxis(t).model,r);o&&(a[o.id]={dataZoomId:o.id,startValue:i[0],endValue:i[1]})}function n(t,e,i){var n;return i.eachComponent({mainType:"dataZoom",subType:"select"},function(i){var o=i.getAxisModel(t,e.componentIndex);o&&(n=i)}),n}if(e.isEnd&&t.length){var a={},r=this.ecModel;this._brushController.updateCovers([]);var s=new u(o(this.model.option),r,{include:["grid"]});s.matchOutputRanges(t,r,function(t,e,n){if("cartesian2d"===n.type){var o=t.brushType;"rect"===o?(i("x",n,e[0]),i("y",n,e[1])):i({lineX:"x",lineY:"y"}[o],n,e)}}),h.push(r,a),this._dispatchZoomAction(a)}},f._dispatchZoomAction=function(t){var e=[];c(t,function(t,i){e.push(s.clone(t))}),e.length&&this.api.dispatchAction({type:"dataZoom",from:this.uid,batch:e})},i(28).register("dataZoom",n),i(2).registerPreprocessor(function(t){function e(t,e){if(e){var o=t+"Index",a=e[o];null==a||"all"==a||s.isArray(a)||(a=a===!1||"none"===a?[]:[a]),i(t,function(e,i){if(null==a||"all"==a||s.indexOf(a,i)!==-1){var r={type:"select",$fromToolbox:!0,id:d+t+i};r[o]=i,n.push(r)}})}}function i(e,i){var n=t[e];s.isArray(n)||(n=n?[n]:[]),c(n,i)}if(t){var n=t.dataZoom||(t.dataZoom=[]);s.isArray(n)||(t.dataZoom=n=[n]);var o=t.toolbox;if(o&&(s.isArray(o)&&(o=o[0]),o&&o.feature)){var a=o.feature.dataZoom;e("xAxis",a),e("yAxis",a)}}}),t.exports=n},function(t,e,i){"use strict";function n(t){this.model=t}var o=i(1);n.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:{line:"切换为折线图",bar:"切换为柱状图",stack:"切换为堆叠",tiled:"切换为平铺"},option:{},seriesIndex:{}};var a=n.prototype;a.getIcons=function(){var t=this.model,e=t.get("icon"),i={};return o.each(t.get("type"),function(t){e[t]&&(i[t]=e[t])}),i};var r={line:function(t,e,i,n){if("bar"===t)return o.merge({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 o.merge({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 o.merge({id:e,stack:"__ec_magicType_stack__"},n.get("option.stack")||{},!0)},tiled:function(t,e,i,n){if("line"===t||"bar"===t)return o.merge({id:e,stack:""},n.get("option.tiled")||{},!0)}},s=[["line","bar"],["stack","tiled"]];a.onclick=function(t,e,i){var n=this.model,a=n.get("seriesIndex."+i);if(r[i]){var l={series:[]},u=function(e){var a=e.subType,s=e.id,u=r[i](a,s,e,n);u&&(o.defaults(u,e.option),l.series.push(u));var h=e.coordinateSystem;if(h&&"cartesian2d"===h.type&&("line"===i||"bar"===i)){var c=h.getAxesByScale("ordinal")[0];if(c){var d=c.dim,f=d+"Axis",p=t.queryComponents({mainType:f,index:e.get(name+"Index"),id:e.get(name+"Id")})[0],g=p.componentIndex;l[f]=l[f]||[];for(var m=0;m<=g;m++)l[f][g]=l[f][g]||{};l[f][g].boundaryGap="bar"===i}}};o.each(s,function(t){o.indexOf(t,i)>=0&&o.each(t,function(t){n.setIconStatus(t,"normal")})}),n.setIconStatus(i,"emphasis"),t.eachComponent({mainType:"series",query:null==a?null:{seriesIndex:a}},u),e.dispatchAction({type:"changeMagicType",currentType:i,newOption:l})}};var l=i(2);l.registerAction({type:"changeMagicType",event:"magicTypeChanged",update:"prepareAndUpdate"},function(t,e){e.mergeOption(t.newOption)}),i(28).register("magicType",n),t.exports=n},function(t,e,i){"use strict";function n(t){this.model=t}var o=i(127);n.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:"还原"};var a=n.prototype;a.onclick=function(t,e,i){o.clear(t),e.dispatchAction({type:"restore",from:this.uid})},i(28).register("restore",n),i(2).registerAction({type:"restore",event:"restore",update:"prepareAndUpdate"},function(t,e){e.resetOption("recreate")}),t.exports=n},function(t,e,i){function n(t){this.model=t}var o=i(9);n.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:"保存为图片",type:"png",name:"",excludeComponents:["toolbox"],pixelRatio:1,lang:["右键另存为图片"]},n.prototype.unusable=!o.canvasSupported;var a=n.prototype;a.onclick=function(t,e){var i=this.model,n=i.get("name")||t.get("title.0.text")||"echarts",a=document.createElement("a"),r=i.get("type",!0)||"png";a.download=n+"."+r,a.target="_blank";var s=e.getConnectedDataURL({type:r,backgroundColor:i.get("backgroundColor",!0)||t.get("backgroundColor")||"#fff",excludeComponents:i.get("excludeComponents"),pixelRatio:i.get("pixelRatio")});if(a.href=s,"function"!=typeof MouseEvent||o.browser.ie||o.browser.edge){var l=i.get("lang"),u='<body style="margin:0;"><img src="'+s+'" style="max-width:100%;" title="'+(l&&l[0]||"")+'" /></body>',h=window.open();h.document.write(u)}else{var c=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!1});a.dispatchEvent(c)}},i(28).register("saveAsImage",n),t.exports=n},function(t,e,i){i(45),i(231),i(232),i(2).registerAction({type:"showTip",event:"showTip",update:"tooltip:manuallyShowTip"},function(){}),i(2).registerAction({type:"hideTip",event:"hideTip",
+update:"tooltip:manuallyHideTip"},function(){})},function(t,e,i){function n(t){var e="cubic-bezier(0.23, 1, 0.32, 1)",i="left "+t+"s "+e+",top "+t+"s "+e;return s.map(p,function(t){return t+"transition:"+i}).join(";")}function o(t){var e=[],i=t.get("fontSize"),n=t.getTextColor();return n&&e.push("color:"+n),e.push("font:"+t.getFont()),i&&e.push("line-height:"+Math.round(3*i/2)+"px"),c(["decoration","align"],function(i){var n=t.get(i);n&&e.push("text-"+i+":"+n)}),e.join(";")}function a(t){var e=[],i=t.get("transitionDuration"),a=t.get("backgroundColor"),r=t.getModel("textStyle"),s=t.get("padding");return i&&e.push(n(i)),a&&(f.canvasSupported?e.push("background-Color:"+a):(e.push("background-Color:#"+l.toHex(a)),e.push("filter:alpha(opacity=70)"))),c(["width","color","radius"],function(i){var n="border-"+i,o=d(n),a=t.get(o);null!=a&&e.push(n+":"+a+("color"===i?"":"px"))}),e.push(o(r)),null!=s&&e.push("padding:"+h.normalizeCssArray(s).join("px ")+"px"),e.join(";")+";"}function r(t,e){var i=document.createElement("div"),n=this._zr=e.getZr();this.el=i,this._x=e.getWidth()/2,this._y=e.getHeight()/2,t.appendChild(i),this._container=t,this._show=!1,this._hideTimeout;var o=this;i.onmouseenter=function(){o._enterable&&(clearTimeout(o._hideTimeout),o._show=!0),o._inContent=!0},i.onmousemove=function(e){if(e=e||window.event,!o._enterable){var i=n.handler;u.normalizeEvent(t,e,!0),i.dispatch("mousemove",e)}},i.onmouseleave=function(){o._enterable&&o._show&&o.hideLater(o._hideDelay),o._inContent=!1}}var s=i(1),l=i(22),u=i(20),h=i(7),c=s.each,d=h.toCamelCase,f=i(9),p=["","-webkit-","-moz-","-o-"],g="position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;";r.prototype={constructor:r,_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=g+a(t)+";left:"+this._x+"px;top:"+this._y+"px;"+(t.get("extraCssText")||""),e.style.display=e.innerHTML?"block":"none",this._show=!0},setContent:function(t){this.el.innerHTML=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.getViewportRoot())&&(t+=i.offsetLeft||0,e+=i.offsetTop||0);var o=this.el.style;o.left=t+"px",o.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(s.bind(this.hide,this),t)):this.hide())},isShow:function(){return this._show}},t.exports=r},function(t,e,i){i(2).extendComponentModel({type:"tooltip",dependencies:["axisPointer"],defaultOption:{zlevel:0,z:8,show:!0,showContent:!0,trigger:"item",triggerOn:"mousemove|click",alwaysShowContent:!1,displayMode:"single",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}}})},function(t,e,i){function n(t){for(var e=t.pop();t.length;){var i=t.pop();i&&(i instanceof m&&(i=i.get("tooltip",!0)),"string"==typeof i&&(i={formatter:i}),e=new m(i,e,e.ecModel))}return e}function o(t,e){return t.dispatchAction||h.bind(e.dispatchAction,e)}function a(t,e,i,n,o,a,r){var s=i.clientWidth,l=i.clientHeight;return t+s+a>n?t-=s+a:t+=a,e+l+r>o?e-=l+r:e+=r,[t,e]}function r(t,e,i,n,o){var a=i.clientWidth,r=i.clientHeight;return t=Math.min(t+a,n)-a,e=Math.min(e+r,o)-r,t=Math.max(t,0),e=Math.max(e,0),[t,e]}function s(t,e,i){var n=i[0],o=i[1],a=5,r=0,s=0,l=e.width,u=e.height;switch(t){case"inside":r=e.x+l/2-n/2,s=e.y+u/2-o/2;break;case"top":r=e.x+l/2-n/2,s=e.y-o-a;break;case"bottom":r=e.x+l/2-n/2,s=e.y+u+a;break;case"left":r=e.x-n-a,s=e.y+u/2-o/2;break;case"right":r=e.x+l+a,s=e.y+u/2-o/2}return[r,s]}function l(t){return"center"===t||"middle"===t}var u=i(230),h=i(1),c=i(7),d=i(4),f=i(75),p=i(12),g=i(9),m=i(10),v=i(76),y=i(17),x=i(55),_=h.bind,b=h.each,w=d.parsePercent;i(2).extendComponentView({type:"tooltip",init:function(t,e){if(!g.node){var i=new u(e.getDom(),e);this._tooltipContent=i}},render:function(t,e,i){if(!g.node){this.group.removeAll(),this._tooltipModel=t,this._ecModel=e,this._api=i,this._lastDataByCoordSys,this._alwaysShowContent=t.get("alwaysShowContent");var n=this._tooltipContent;n.update(),n.setEnterable(t.get("enterable")),this._initGlobalListener(),this._keepShow()}},_initGlobalListener:function(){var t=this._tooltipModel,e=t.get("triggerOn");v.register("itemTooltip",this._api,_(function(t,i,n){"none"!==e&&(e.indexOf(t)>=0?this._tryShow(i,n):"leave"===t&&this._hide(n))},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(){n.manuallyShowTip(t,e,i,{x:n._lastX,y:n._lastY})})}},manuallyShowTip:function(t,e,i,n){if(n.from!==this.uid&&!g.node){var a=o(n,i);this._ticket="";var r=n.seriesIndex,s=n.dataByCoordSys;if(s)this._tryShow({offsetX:n.x,offsetY:n.y,position:n.position,event:{},dataByCoordSys:n.dataByCoordSys,tooltipOption:n.tooltipOption},a);else if(null!=r){var l=f(n,e),u=l.point[0],h=l.point[1];null!=u&&null!=h&&this._tryShow({offsetX:u,offsetY:h,position:n.position,target:l.el,event:{}},a)}else null!=n.x&&null!=n.y&&this._tryShow({offsetX:n.x,offsetY:n.y,position:n.position,target:i.getZr().handler.findHover(n.x,n.y),event:{}},a)}},manuallyHideTip:function(t,e,i,n){var a=this._tooltipContent;this._alwaysShowContent||a.hideLater(this._tooltipModel.get("hideDelay")),this._lastX=this._lastY=null,n.from!==this.uid&&this._hide(o(n,i))},_tryShow:function(t,e){var i=t.target,n=this._tooltipModel;if(n){this._lastX=t.offsetX,this._lastY=t.offsetY;var o=t.dataByCoordSys;o&&o.length?this._showAxisTooltip(o,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=h.bind(e,this),clearTimeout(this._showTimout),i>0?this._showTimout=setTimeout(e,i):e()},_showAxisTooltip:function(t,e){var i=this._ecModel,o=this._tooltipModel,a=[e.offsetX,e.offsetY],r=[],s=[],l=n([e.tooltipOption,o]);b(t,function(t){b(t.dataByAxis,function(t){var e=i.getComponent(t.axisDim+"Axis",t.axisIndex),n=t.value,o=[];if(e&&null!=n){var a=x.getValueLabel(n,e.axis,i,t.seriesDataIndices,t.valueLabelOpt);h.each(t.seriesDataIndices,function(r){var l=i.getSeriesByIndex(r.seriesIndex),u=r.dataIndexInside,h=l&&l.getDataParams(u);h.axisDim=t.axisDim,h.axisIndex=t.axisIndex,h.axisType=t.axisType,h.axisId=t.axisId,h.axisValue=y.getAxisRawValue(e.axis,n),h.axisValueLabel=a,h&&(s.push(h),o.push(l.formatTooltip(u,!0)))});var l=a;r.push((l?c.encodeHTML(l)+"<br />":"")+o.join("<br />"))}})},this),r.reverse(),r=r.join("<br /><br />");var u=e.position;this._showOrMove(l,function(){this._updateContentNotChangedOnAxis(t)?this._updatePosition(l,u,a[0],a[1],this._tooltipContent,s):this._showTooltipContent(l,r,s,Math.random(),a[0],a[1],u)})},_showSeriesItemTooltip:function(t,e,i){var o=this._ecModel,a=e.seriesIndex,r=o.getSeriesByIndex(a),s=e.dataModel||r,l=e.dataIndex,u=e.dataType,h=s.getData(),c=n([h.getItemModel(l),s,r&&(r.coordinateSystem||{}).model,this._tooltipModel]),d=c.get("trigger");if(null==d||"item"===d){var f=s.getDataParams(l,u),p=s.formatTooltip(l,!1,u),g="item_"+s.name+"_"+l;this._showOrMove(c,function(){this._showTooltipContent(c,p,f,g,t.offsetX,t.offsetY,t.position,t.target)}),i({type:"showTip",dataIndexInside:l,dataIndex:h.getRawIndex(l),seriesIndex:a,from:this.uid})}},_showComponentItemTooltip:function(t,e,i){var n=e.tooltip;if("string"==typeof n){var o=n;n={content:o,formatter:o}}var a=new m(n,this._tooltipModel,this._ecModel),r=a.get("content"),s=Math.random();this._showOrMove(a,function(){this._showTooltipContent(a,r,a.get("formatterParams")||{},s,t.offsetX,t.offsetY,t.position,e)}),i({type:"showTip",from:this.uid})},_showTooltipContent:function(t,e,i,n,o,a,r,s){if(this._ticket="",t.get("showContent")&&t.get("show")){var l=this._tooltipContent,u=t.get("formatter");r=r||t.get("position");var h=e;if(u&&"string"==typeof u)h=c.formatTpl(u,i,!0);else if("function"==typeof u){var d=_(function(e,n){e===this._ticket&&(l.setContent(n),this._updatePosition(t,r,o,a,l,i,s))},this);this._ticket=n,h=u(i,n,d)}l.setContent(h),l.show(t),this._updatePosition(t,r,o,a,l,i,s)}},_updatePosition:function(t,e,i,n,o,u,c){var d=this._api.getWidth(),f=this._api.getHeight();e=e||t.get("position");var g=o.getSize(),m=t.get("align"),v=t.get("verticalAlign"),y=c&&c.getBoundingRect().clone();if(c&&y.applyTransform(c.transform),"function"==typeof e&&(e=e([i,n],u,o.el,y,{viewSize:[d,f],contentSize:g.slice()})),h.isArray(e))i=w(e[0],d),n=w(e[1],f);else if(h.isObject(e)){e.width=g[0],e.height=g[1];var x=p.getLayoutRect(e,{width:d,height:f});i=x.x,n=x.y,m=null,v=null}else if("string"==typeof e&&c){var _=s(e,y,g);i=_[0],n=_[1]}else{var _=a(i,n,o.el,d,f,m?0:20,v?0:20);i=_[0],n=_[1]}if(m&&(i-=l(m)?g[0]/2:"right"===m?g[0]:0),v&&(n-=l(v)?g[1]/2:"bottom"===v?g[1]:0),t.get("confine")){var _=r(i,n,o.el,d,f);i=_[0],n=_[1]}o.moveTo(i,n)},_updateContentNotChangedOnAxis:function(t){var e=this._lastDataByCoordSys,i=!!e&&e.length===t.length;return b(e,function(e,n){var o=e.dataByAxis||{},a=t[n]||{},r=a.dataByAxis||[];i&=o.length===r.length,b(o,function(t,e){var n=r[e]||{},o=t.seriesDataIndices||[],a=n.seriesDataIndices||[];i&=t.value===n.value&&t.axisType===n.axisType&&t.axisId===n.axisId&&o.length===a.length,b(o,function(t,e){var n=a[e];i&=t.seriesIndex===n.seriesIndex&&t.dataIndex===n.dataIndex})})}),this._lastDataByCoordSys=t,!!i},_hide:function(t){this._lastDataByCoordSys=null,t({type:"hideTip",from:this.uid})},dispose:function(t,e){g.node||(this._tooltipContent.hide(),v.unregister("itemTooltip",e))}})},function(t,e,i){function n(t,e){var i=t.get("center"),n=t.get("radius"),o=e.getWidth(),a=e.getHeight(),r=s.parsePercent;this.cx=r(i[0],o),this.cy=r(i[1],a);var l=this.getRadiusAxis(),u=Math.min(o,a)/2;l.setExtent(0,r(n,u))}function o(t,e){var i=this,n=i.getAngleAxis(),o=i.getRadiusAxis();if(n.scale.setExtent(1/0,-(1/0)),o.scale.setExtent(1/0,-(1/0)),t.eachSeries(function(t){if(t.coordinateSystem===i){var e=t.getData();o.scale.unionExtentFromData(e,"radius"),n.scale.unionExtentFromData(e,"angle")}}),u(n.scale,n.model),u(o.scale,o.model),"category"===n.type&&!n.onBand){var a=n.getExtent(),r=360/n.scale.count();n.inverse?a[1]+=r:a[1]-=r,n.setExtent(a[0],a[1])}}function a(t,e){if(t.type=e.get("type"),t.scale=l.createScaleByModel(e),t.onBand=e.get("boundaryGap")&&"category"===t.type,"angleAxis"===e.mainType){var i=e.get("startAngle");t.inverse=e.get("inverse")^e.get("clockwise"),t.setExtent(i,i+(t.inverse?-360:360))}e.axis=t,t.model=e}var r=i(403),s=i(4),l=(i(1),i(17)),u=l.niceScaleExtent;i(404);var h={dimensions:r.prototype.dimensions,create:function(t,e){var i=[];return t.eachComponent("polar",function(t,s){var l=new r(s);l.resize=n,l.update=o;var u=l.getRadiusAxis(),h=l.getAngleAxis(),c=t.findAxisModel("radiusAxis"),d=t.findAxisModel("angleAxis");a(u,c),a(h,d),l.resize(t,e),i.push(l),t.coordinateSystem=l,l.model=t}),t.eachSeries(function(e){if("polar"===e.get("coordinateSystem")){var i=t.queryComponents({mainType:"polar",index:e.get("polarIndex"),id:e.get("polarId")})[0];e.coordinateSystem=i.coordinateSystem}}),i}};i(26).register("polar",h)},function(t,e,i){function n(t){return parseInt(t,10)}function o(t,e){s.initVML(),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 o=e.delFromMap,a=e.addToMap;e.delFromMap=function(t){var i=e.get(t);o.call(e,t),i&&i.onRemove&&i.onRemove(n)},e.addToMap=function(t){t.onAdd&&t.onAdd(n),a.call(e,t)},this._firstPaint=!0}function a(t){return function(){r('In IE8.0 VML mode painter not support method "'+t+'"')}}var r=i(52),s=i(184);o.prototype={constructor:o,getViewportRoot:function(){return this._vmlViewport},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){var 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||n(e.width))-n(e.paddingLeft)-n(e.paddingRight)|0},_getHeight:function(){var t=this.root,e=t.currentStyle;return(t.clientHeight||n(e.height))-n(e.paddingTop)-n(e.paddingBottom)|0}};for(var l=["getLayer","insertLayer","eachLayer","eachBuiltinLayer","eachOtherLayer","getLayers","modLayer","delLayer","clearLayer","toDataURL","pathToImage"],u=0;u<l.length;u++){var h=l[u];o.prototype[h]=a(h)}t.exports=o},function(t,e,i){if(!i(9).canvasSupported){var n=i(6),o=i(11),a=i(30).CMD,r=i(22),s=i(16),l=i(86),u=i(40),h=i(53),c=i(85),d=i(8),f=i(41),p=i(184),g=Math.round,m=Math.sqrt,v=Math.abs,y=Math.cos,x=Math.sin,_=Math.max,b=n.applyTransform,w=",",S="progid:DXImageTransform.Microsoft",M=21600,I=M/2,T=1e5,A=1e3,L=function(t){t.style.cssText="position:absolute;left:0;top:0;width:1px;height:1px;",t.coordsize=M+","+M,t.coordorigin="0,0"},C=function(t){return String(t).replace(/&/g,"&amp;").replace(/"/g,"&quot;")},D=function(t,e,i){return"rgb("+[t,e,i].join(",")+")"},P=function(t,e){e&&t&&e.parentNode!==t&&t.appendChild(e)},k=function(t,e){e&&t&&e.parentNode===t&&t.removeChild(e)},O=function(t,e,i){return(parseFloat(t)||0)*T+(parseFloat(e)||0)*A+i},z=function(t,e){return"string"==typeof t?t.lastIndexOf("%")>=0?parseFloat(t)/100*e:parseFloat(t):t},R=function(t,e,i){var n=r.parse(e);i=+i,isNaN(i)&&(i=1),n&&(t.color=D(n[0],n[1],n[2]),t.opacity=i*n[3])},E=function(t){var e=r.parse(t);return[D(e[0],e[1],e[2]),e[3]]},N=function(t,e,i){var n=e.fill;if(null!=n)if(n instanceof f){var o,a=0,r=[0,0],s=0,l=1,u=i.getBoundingRect(),h=u.width,c=u.height;if("linear"===n.type){o="gradient";var d=i.transform,p=[n.x*h,n.y*c],g=[n.x2*h,n.y2*c];d&&(b(p,p,d),b(g,g,d));var m=g[0]-p[0],v=g[1]-p[1];a=180*Math.atan2(m,v)/Math.PI,a<0&&(a+=360),a<1e-6&&(a=0)}else{o="gradientradial";var p=[n.x*h,n.y*c],d=i.transform,y=i.scale,x=h,w=c;r=[(p[0]-u.x)/x,(p[1]-u.y)/w],d&&b(p,p,d),x/=y[0]*M,w/=y[1]*M;var S=_(x,w);s=0/S,l=2*n.r/S-s}var I=n.colorStops.slice();I.sort(function(t,e){return t.offset-e.offset});for(var T=I.length,A=[],L=[],C=0;C<T;C++){var D=I[C],P=E(D.color);L.push(D.offset*l+s+" "+P[0]),0!==C&&C!==T-1||A.push(P)}if(T>=2){var k=A[0][0],O=A[1][0],z=A[0][1]*e.opacity,N=A[1][1]*e.opacity;t.type=o,t.method="none",t.focus="100%",t.angle=a,t.color=k,t.color2=O,t.colors=L.join(","),t.opacity=N,t.opacity2=z}"radial"===o&&(t.focusposition=r.join(","))}else R(t,n,e.opacity)},V=function(t,e){null!=e.lineDash&&(t.dashstyle=e.lineDash.join(" ")),null==e.stroke||e.stroke instanceof f||R(t,e.stroke,e.opacity)},B=function(t,e,i,n){var o="fill"==e,a=t.getElementsByTagName(e)[0];null!=i[e]&&"none"!==i[e]&&(o||!o&&i.lineWidth)?(t[o?"filled":"stroked"]="true",i[e]instanceof f&&k(t,a),a||(a=p.createNode(e)),o?N(a,i,n):V(a,i),P(t,a)):(t[o?"filled":"stroked"]="false",k(t,a))},G=[[],[],[]],F=function(t,e){var i,n,o,r,s,l,u=a.M,h=a.C,c=a.L,d=a.A,f=a.Q,p=[];for(r=0;r<t.length;){switch(o=t[r++],n="",i=0,o){case u:n=" m ",i=1,s=t[r++],l=t[r++],G[0][0]=s,G[0][1]=l;break;case c:n=" l ",i=1,s=t[r++],l=t[r++],G[0][0]=s,G[0][1]=l;break;case f:case h:n=" c ",i=3;var v,_,S=t[r++],T=t[r++],A=t[r++],L=t[r++];o===f?(v=A,_=L,A=(A+2*S)/3,L=(L+2*T)/3,S=(s+2*S)/3,T=(l+2*T)/3):(v=t[r++],_=t[r++]),G[0][0]=S,G[0][1]=T,G[1][0]=A,G[1][1]=L,G[2][0]=v,G[2][1]=_,s=v,l=_;break;case d:var C=0,D=0,P=1,k=1,O=0;e&&(C=e[4],D=e[5],P=m(e[0]*e[0]+e[1]*e[1]),k=m(e[2]*e[2]+e[3]*e[3]),O=Math.atan2(-e[1]/k,e[0]/P));var z=t[r++],R=t[r++],E=t[r++],N=t[r++],V=t[r++]+O,B=t[r++]+V+O;r++;var F=t[r++],H=z+y(V)*E,W=R+x(V)*N,S=z+y(B)*E,T=R+x(B)*N,Z=F?" wa ":" at ";Math.abs(H-S)<1e-4&&(Math.abs(B-V)>.01?F&&(H+=270/M):Math.abs(W-R)<1e-4?F&&H<z||!F&&H>z?T-=270/M:T+=270/M:F&&W<R||!F&&W>R?S+=270/M:S-=270/M),p.push(Z,g(((z-E)*P+C)*M-I),w,g(((R-N)*k+D)*M-I),w,g(((z+E)*P+C)*M-I),w,g(((R+N)*k+D)*M-I),w,g((H*P+C)*M-I),w,g((W*k+D)*M-I),w,g((S*P+C)*M-I),w,g((T*k+D)*M-I)),s=S,l=T;break;case a.R:var q=G[0],j=G[1];q[0]=t[r++],q[1]=t[r++],j[0]=q[0]+t[r++],j[1]=q[1]+t[r++],e&&(b(q,q,e),b(j,j,e)),q[0]=g(q[0]*M-I),j[0]=g(j[0]*M-I),q[1]=g(q[1]*M-I),j[1]=g(j[1]*M-I),p.push(" m ",q[0],w,q[1]," l ",j[0],w,q[1]," l ",j[0],w,j[1]," l ",q[0],w,j[1]);break;case a.Z:p.push(" x ")}if(i>0){p.push(n);for(var U=0;U<i;U++){var X=G[U];e&&b(X,X,e),p.push(g(X[0]*M-I),w,g(X[1]*M-I),U<i-1?w:"")}}}return p.join("")};d.prototype.brushVML=function(t){var e=this.style,i=this._vmlEl;i||(i=p.createNode("shape"),L(i),this._vmlEl=i),B(i,"fill",e,this),B(i,"stroke",e,this);var n=this.transform,o=null!=n,a=i.getElementsByTagName("stroke")[0];if(a){var r=e.lineWidth;if(o&&!e.strokeNoScale){var s=n[0]*n[3]-n[1]*n[2];r*=m(v(s))}a.weight=r+"px"}var l=this.path;this.__dirtyPath&&(l.beginPath(),this.buildPath(l,this.shape),l.toStatic(),this.__dirtyPath=!1),i.path=F(l.data,this.transform),i.style.zIndex=O(this.zlevel,this.z,this.z2),P(t,i),null!=e.text?this.drawRectText(t,this.getBoundingRect()):this.removeRectText(t)},d.prototype.onRemove=function(t){k(t,this._vmlEl),this.removeRectText(t)},d.prototype.onAdd=function(t){P(t,this._vmlEl),this.appendRectText(t)};var H=function(t){return"object"==typeof t&&t.tagName&&"IMG"===t.tagName.toUpperCase()};h.prototype.brushVML=function(t){var e,i,n=this.style,o=n.image;if(H(o)){var a=o.src;if(a===this._imageSrc)e=this._imageWidth,i=this._imageHeight;else{var r=o.runtimeStyle,s=r.width,l=r.height;r.width="auto",r.height="auto",e=o.width,i=o.height,r.width=s,r.height=l,this._imageSrc=a,this._imageWidth=e,this._imageHeight=i}o=a}else o===this._imageSrc&&(e=this._imageWidth,i=this._imageHeight);if(o){var u=n.x||0,h=n.y||0,c=n.width,d=n.height,f=n.sWidth,v=n.sHeight,y=n.sx||0,x=n.sy||0,M=f&&v,I=this._vmlEl;I||(I=p.doc.createElement("div"),L(I),this._vmlEl=I);var T,A=I.style,C=!1,D=1,k=1;if(this.transform&&(T=this.transform,D=m(T[0]*T[0]+T[1]*T[1]),k=m(T[2]*T[2]+T[3]*T[3]),C=T[1]||T[2]),C){var z=[u,h],R=[u+c,h],E=[u,h+d],N=[u+c,h+d];b(z,z,T),b(R,R,T),b(E,E,T),b(N,N,T);var V=_(z[0],R[0],E[0],N[0]),B=_(z[1],R[1],E[1],N[1]),G=[];G.push("M11=",T[0]/D,w,"M12=",T[2]/k,w,"M21=",T[1]/D,w,"M22=",T[3]/k,w,"Dx=",g(u*D+T[4]),w,"Dy=",g(h*k+T[5])),A.padding="0 "+g(V)+"px "+g(B)+"px 0",A.filter=S+".Matrix("+G.join("")+", SizingMethod=clip)"}else T&&(u=u*D+T[4],h=h*k+T[5]),A.filter="",A.left=g(u)+"px",A.top=g(h)+"px";var F=this._imageEl,W=this._cropEl;F||(F=p.doc.createElement("div"),this._imageEl=F);var Z=F.style;if(M){if(e&&i)Z.width=g(D*e*c/f)+"px",Z.height=g(k*i*d/v)+"px";else{var q=new Image,j=this;q.onload=function(){q.onload=null,e=q.width,i=q.height,Z.width=g(D*e*c/f)+"px",Z.height=g(k*i*d/v)+"px",j._imageWidth=e,j._imageHeight=i,j._imageSrc=o},q.src=o}W||(W=p.doc.createElement("div"),W.style.overflow="hidden",this._cropEl=W);var U=W.style;U.width=g((c+y*c/f)*D),U.height=g((d+x*d/v)*k),U.filter=S+".Matrix(Dx="+-y*c/f*D+",Dy="+-x*d/v*k+")",W.parentNode||I.appendChild(W),F.parentNode!=W&&W.appendChild(F)}else Z.width=g(D*c)+"px",Z.height=g(k*d)+"px",I.appendChild(F),W&&W.parentNode&&(I.removeChild(W),this._cropEl=null);var X="",Y=n.opacity;Y<1&&(X+=".Alpha(opacity="+g(100*Y)+") "),X+=S+".AlphaImageLoader(src="+o+", SizingMethod=scale)",Z.filter=X,I.style.zIndex=O(this.zlevel,this.z,this.z2),P(t,I),null!=n.text&&this.drawRectText(t,this.getBoundingRect())}},h.prototype.onRemove=function(t){k(t,this._vmlEl),this._vmlEl=null,this._cropEl=null,this._imageEl=null,this.removeRectText(t)},h.prototype.onAdd=function(t){P(t,this._vmlEl),this.appendRectText(t)};var W,Z="normal",q={},j=0,U=100,X=document.createElement("div"),Y=function(t){var e=q[t];if(!e){j>U&&(j=0,q={});var i,n=X.style;try{n.font=t,i=n.fontFamily.split(",")[0]}catch(o){}e={style:n.fontStyle||Z,variant:n.fontVariant||Z,weight:n.fontWeight||Z,size:0|parseFloat(n.fontSize||12),family:i||"Microsoft YaHei"},q[t]=e,j++}return e};s.measureText=function(t,e){var i=p.doc;W||(W=i.createElement("div"),W.style.cssText="position:absolute;top:-20000px;left:0;padding:0;margin:0;border:none;white-space:pre;",p.doc.body.appendChild(W));try{W.style.font=e}catch(n){}return W.innerHTML="",W.appendChild(i.createTextNode(t)),{width:W.offsetWidth}};for(var $=new o,K=function(t,e,i,n){var o=this.style,a=o.text;if(null!=a&&(a+=""),a){var r,l,u=o.textAlign,h=Y(o.textFont),c=h.style+" "+h.variant+" "+h.weight+" "+h.size+'px "'+h.family+'"',d=o.textBaseline,f=o.textVerticalAlign;i=i||s.getBoundingRect(a,c,u,d);var m=this.transform;if(m&&!n&&($.copy(e),$.applyTransform(m),e=$),n)r=e.x,l=e.y;else{var v=o.textPosition,y=o.textDistance;if(v instanceof Array)r=e.x+z(v[0],e.width),l=e.y+z(v[1],e.height),u=u||"left",d=d||"top";else{var x=s.adjustTextPositionOnRect(v,e,i,y);r=x.x,l=x.y,u=u||x.textAlign,d=d||x.textBaseline}}if(f){switch(f){case"middle":l-=i.height/2;break;case"bottom":l-=i.height}d="top"}var _=h.size;switch(d){case"hanging":case"top":l+=_/1.75;break;case"middle":break;default:l-=_/2.25}switch(u){case"left":break;case"center":r-=i.width/2;break;case"right":r-=i.width}var S,M,I,T=p.createNode,A=this._textVmlEl;A?(I=A.firstChild,S=I.nextSibling,M=S.nextSibling):(A=T("line"),S=T("path"),M=T("textpath"),I=T("skew"),M.style["v-text-align"]="left",L(A),S.textpathok=!0,M.on=!0,A.from="0 0",A.to="1000 0.05",P(A,I),P(A,S),P(A,M),this._textVmlEl=A);var D=[r,l],k=A.style;m&&n?(b(D,D,m),I.on=!0,I.matrix=m[0].toFixed(3)+w+m[2].toFixed(3)+w+m[1].toFixed(3)+w+m[3].toFixed(3)+",0,0",I.offset=(g(D[0])||0)+","+(g(D[1])||0),I.origin="0 0",k.left="0px",k.top="0px"):(I.on=!1,k.left=g(r)+"px",k.top=g(l)+"px"),M.string=C(a);try{M.style.font=c}catch(R){}B(A,"fill",{fill:n?o.fill:o.textFill,opacity:o.opacity},this),B(A,"stroke",{stroke:n?o.stroke:o.textStroke,opacity:o.opacity,lineDash:o.lineDash},this),A.style.zIndex=O(this.zlevel,this.z,this.z2),P(t,A)}},J=function(t){k(t,this._textVmlEl),this._textVmlEl=null},Q=function(t){P(t,this._textVmlEl)},tt=[l,u,h,d,c],et=0;et<tt.length;et++){var it=tt[et].prototype;it.drawRectText=K,it.removeRectText=J,it.appendRectText=Q}c.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)},c.prototype.onRemove=function(t){this.removeRectText(t)},c.prototype.onAdd=function(t){this.appendRectText(t)}}},function(t,e,i){i(235),i(87).registerPainter("vml",i(234))},function(t,e,i){var n=i(1),o=i(238),a=i(2);a.registerAction({type:"geoRoam",event:"geoRoam",update:"updateLayout"},function(t,e){var i=t.componentType||"series";e.eachComponent({mainType:i,query:t},function(e){var a=e.coordinateSystem;if("geo"===a.type){var r=o.updateCenterAndZoom(a,t,e.get("scaleLimit"));e.setCenter&&e.setCenter(r.center),e.setZoom&&e.setZoom(r.zoom),"series"===i&&n.each(e.seriesGroup,function(t){t.setCenter(r.center),t.setZoom(r.zoom)})}})})},function(t,e){var i={};i.updateCenterAndZoom=function(t,e,i){var n=t.getZoom(),o=t.getCenter(),a=e.zoom,r=t.dataToPoint(o);if(null!=e.dx&&null!=e.dy){r[0]-=e.dx,r[1]-=e.dy;var o=t.pointToData(r);t.setCenter(o)}if(null!=a){if(i){var s=i.min||0,l=i.max||1/0;a=Math.max(Math.min(n*a,l),s)/n}t.scale[0]*=a,t.scale[1]*=a;var u=t.position,h=(e.originX-u[0])*(a-1),c=(e.originY-u[1])*(a-1);u[0]-=h,u[1]-=c,t.updateTransform();var o=t.pointToData(r);t.setCenter(o),t.setZoom(a*n)}return{center:t.getCenter(),zoom:t.getZoom()}},t.exports=i},function(t,e,i){var n=i(6);t.exports=function(t){var e=t.coordinateSystem;if(!e||"view"===e.type){var i=e.getBoundingRect(),o=t.getData(),a=o.graph,r=0,s=o.getSum("value"),l=2*Math.PI/(s||o.count()),u=i.width/2+i.x,h=i.height/2+i.y,c=Math.min(i.width,i.height)/2;a.eachNode(function(t){var e=t.getValue("value");r+=l*(s?e:1)/2,t.setLayout([c*Math.cos(r)+u,c*Math.sin(r)+h]),r+=l*(s?e:1)/2}),o.setLayout({cx:u,cy:h}),a.eachEdge(function(t){var e,i=t.getModel().get("lineStyle.normal.curveness")||0,o=n.clone(t.node1.getLayout()),a=n.clone(t.node2.getLayout()),r=(o[0]+a[0])/2,s=(o[1]+a[1])/2;+i&&(i*=3,e=[u*i+r*(1-i),h*i+s*(1-i)]),t.setLayout([o,a,e])})}}},function(t,e,i){var n=i(6);t.exports=function(t){t.eachEdge(function(t){var e=t.getModel().get("lineStyle.normal.curveness")||0,i=n.clone(t.node1.getLayout()),o=n.clone(t.node2.getLayout()),a=[i,o];+e&&a.push([(i[0]+o[0])/2-(i[1]-o[1])*e,(i[1]+o[1])/2-(o[0]-i[0])*e]),t.setLayout(a)})}},function(t,e,i){var n=i(240);t.exports=function(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")])}),n(i)}}},function(t,e,i){function n(t,e,i){o.Group.call(this),this.add(this.createLine(t,e,i)),this._updateEffectSymbol(t,e)}var o=i(3),a=i(108),r=i(1),s=i(24),l=i(6),u=i(21),h=n.prototype;h.createLine=function(t,e,i){return new a(t,e,i)},h._updateEffectSymbol=function(t,e){var i=t.getItemModel(e),n=i.getModel("effect"),o=n.get("symbolSize"),a=n.get("symbol");r.isArray(o)||(o=[o,o]);var l=n.get("color")||t.getItemVisual(e,"color"),u=this.childAt(1);this._symbolType!==a&&(this.remove(u),u=s.createSymbol(a,-.5,-.5,1,1,l),u.z2=100,u.culling=!0,this.add(u)),u&&(u.setStyle("shadowColor",l),u.setStyle(n.getItemStyle(["color"])),u.attr("scale",o),u.setColor(l),u.attr("scale",o),this._symbolType=a,this._updateEffectAnimation(t,n,e))},h._updateEffectAnimation=function(t,e,i){var n=this.childAt(1);if(n){var o=this,a=t.getItemLayout(i),s=1e3*e.get("period"),l=e.get("loop"),u=e.get("constantSpeed"),h=r.retrieve(e.get("delay"),function(e){return e/t.count()*s/3}),c="function"==typeof h;if(n.ignore=!0,this.updateAnimationPoints(n,a),u>0&&(s=this.getLineLength(n)/u*1e3),s!==this._period||l!==this._loop){n.stopAnimation();var d=h;c&&(d=h(i)),n.__t>0&&(d=-s*n.__t),n.__t=0;var f=n.animate("",l).when(s,{__t:1}).delay(d).during(function(){o.updateSymbolPosition(n)});l||f.done(function(){o.remove(n)}),f.start()}this._period=s,this._loop=l}},h.getLineLength=function(t){return l.dist(t.__p1,t.__cp1)+l.dist(t.__cp1,t.__p2)},h.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]},h.updateData=function(t,e,i){this.childAt(0).updateData(t,e,i),this._updateEffectSymbol(t,e)},h.updateSymbolPosition=function(t){var e=t.__p1,i=t.__p2,n=t.__cp1,o=t.__t,a=t.position,r=u.quadraticAt,s=u.quadraticDerivativeAt;a[0]=r(e[0],n[0],i[0],o),a[1]=r(e[1],n[1],i[1],o);var l=s(e[0],n[0],i[0],o),h=s(e[1],n[1],i[1],o);t.rotation=-Math.atan2(h,l)-Math.PI/2,t.ignore=!1},h.updateLayout=function(t,e){this.childAt(0).updateLayout(t,e);var i=t.getItemModel(e).getModel("effect");this._updateEffectAnimation(t,i,e)},r.inherits(n,o.Group),t.exports=n},function(t,e,i){function n(t,e,i){o.Group.call(this),this._createPolyline(t,e,i)}var o=i(3),a=i(1),r=n.prototype;r._createPolyline=function(t,e,i){var n=t.getItemLayout(e),a=new o.Polyline({shape:{points:n}});this.add(a),this._updateCommonStl(t,e,i)},r.updateData=function(t,e,i){var n=t.hostModel,a=this.childAt(0),r={shape:{points:t.getItemLayout(e)}};o.updateProps(a,r,n,e),this._updateCommonStl(t,e,i)},r._updateCommonStl=function(t,e,i){var n=this.childAt(0),r=t.getItemModel(e),s=t.getItemVisual(e,"color"),l=i&&i.lineStyle,u=i&&i.hoverLineStyle;i&&!t.hasItemOption||(l=r.getModel("lineStyle.normal").getLineStyle(),u=r.getModel("lineStyle.emphasis").getLineStyle()),n.useStyle(a.defaults({strokeNoScale:!0,fill:"none",stroke:s},l)),n.hoverStyle=u,o.setHoverStyle(this)},r.updateLayout=function(t,e){var i=this.childAt(0);i.setShape("points",t.getItemLayout(e))},a.inherits(n,o.Group),t.exports=n},function(t,e,i){var n=i(14),o=i(413),a=i(261),r=i(25),s=i(26),l=i(1),u=i(27);t.exports=function(t,e,i,h,c){for(var d=new o(h),f=0;f<t.length;f++)d.addNode(l.retrieve(t[f].id,t[f].name,f),f);for(var p=[],g=[],m=0,f=0;f<e.length;f++){var v=e[f],y=v.source,x=v.target;d.addEdge(y,x,m)&&(g.push(v),p.push(l.retrieve(v.id,y+" > "+x)),m++)}var _,b=i.get("coordinateSystem");if("cartesian2d"===b||"polar"===b)_=u(t,i,i.ecModel);else{var w=s.get(b),S=r((w&&"view"!==w.type?w.dimensions||[]:[]).concat(["value"]),t);_=new n(S,i),_.initData(t)}var M=new n(["value"],i);return M.initData(g,p),c&&c(_,M),a({mainData:_,struct:d,structAttr:"graph",datas:{node:_,edge:M},datasAttr:{node:"data",edge:"edgeData"}}),d.update(),d}},function(t,e,i){var n=i(1),o={};o.layout=function(t,e){e=e||{};var i=t.coordinateSystem,o=t.axis,a={},r=o.position,s=o.orient,l=i.getRect(),u=[l.x,l.x+l.width,l.y,l.y+l.height],h={horizontal:{top:u[2],bottom:u[3]},vertical:{left:u[0],right:u[1]}};a.position=["vertical"===s?h.vertical[r]:u[0],"horizontal"===s?h.horizontal[r]:u[3]];var c={horizontal:0,vertical:1};a.rotation=Math.PI/2*c[s];var d={top:-1,bottom:1,right:1,left:-1};a.labelDirection=a.tickDirection=a.nameDirection=d[r],t.get("axisTick.inside")&&(a.tickDirection=-a.tickDirection),n.retrieve(e.labelInside,t.get("axisLabel.inside"))&&(a.labelDirection=-a.labelDirection);var f=e.rotate;return null==f&&(f=t.get("axisLabel.rotate")),a.labelRotation="top"===r?-f:f,a.labelInterval=o.getLabelInterval(),a.z2=1,a},t.exports=o},function(t,e,i){"use strict";function n(t,e,i,n,o){var a=e.axis,s=a.dataToCoord(t),h=n.getAngleAxis().getExtent()[0];h=h/180*Math.PI;var c,d,f,p=n.getRadiusAxis().getExtent();if("radius"===a.dim){var g=l.create();l.rotate(g,g,h),l.translate(g,g,[n.cx,n.cy]),c=r.applyTransform([s,-o],g);var m=e.getModel("axisLabel").get("rotate")||0,v=u.innerTextLayout(h,m*Math.PI/180,-1);d=v.textAlign,f=v.textVerticalAlign}else{var y=p[1];c=n.coordToPoint([y+o,s]);var x=n.cx,_=n.cy;d=Math.abs(c[0]-x)/y<.3?"center":c[0]>x?"left":"right",f=Math.abs(c[1]-_)/y<.3?"middle":c[1]>_?"top":"bottom"}return{position:c,align:d,verticalAlign:f}}var o=i(7),a=i(74),r=i(3),s=i(55),l=i(19),u=i(37),h=a.extend({makeElOption:function(t,e,i,a,r){var l=i.axis;"angle"===l.dim&&(this.animationThreshold=Math.PI/18);var u,h=l.polar,d=h.getOtherAxis(l),f=d.getExtent();u=l["dataTo"+o.capitalFirst(l.dim)](e);var p=s.buildElStyle(a),g=c[a.get("type")](l,h,u,f,p);g.style=p,t.graphicKey=g.type,t.pointer=g;var m=a.get("label.margin"),v=n(e,i,a,h,m);s.buildLabelElOption(t,i,a,r,v)}}),c={line:function(t,e,i,n,o){return"angle"===t.dim?{type:"Line",shape:s.makeLineShape(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,o){var a=t.getBandWidth(),r=Math.PI/180;return"angle"===t.dim?{type:"Sector",shape:s.makeSectorShape(e.cx,e.cy,n[0],n[1],(-i-a/2)*r,(-i+a/2)*r)}:{type:"Sector",shape:s.makeSectorShape(e.cx,e.cy,i-a/2,i+a/2,0,2*Math.PI)
+}}};t.exports=h},function(t,e,i){function n(t,e){var i=t.getItemStyle(),n=t.get("areaColor");return null!=n&&(i.fill=n),i}function o(t,e,i,n,o){i.off("click"),i.off("mousedown"),e.get("selectedMode")&&(i.on("mousedown",function(){t._mouseDownFlag=!0}),i.on("click",function(r){if(t._mouseDownFlag){t._mouseDownFlag=!1;for(var s=r.target;!s.__regions;)s=s.parent;if(s){var l={type:("geo"===e.mainType?"geo":"map")+"ToggleSelect",batch:u.map(s.__regions,function(t){return{name:t.name,from:o.uid}})};l[e.mainType+"Id"]=e.id,n.dispatchAction(l),a(e,i)}}}))}function a(t,e){e.eachChild(function(e){u.each(e.__regions,function(i){e.trigger(t.isSelected(i.name)?"emphasis":"normal")})})}function r(t,e){var i=new l.Group;this._controller=new s(t.getZr(),e?i:null,null),this.group=i,this._updateGroup=e,this._mouseDownFlag}var s=i(94),l=i(3),u=i(1);r.prototype={constructor:r,draw:function(t,e,i,r,s){var h="geo"===t.mainType,c=t.getData&&t.getData();h&&e.eachComponent({mainType:"series",subType:"map"},function(e){c||e.getHostGeoModel()!==t||(c=e.getData())});var d=t.coordinateSystem,f=this.group,p=d.scale,g={position:d.position,scale:p};!f.childAt(0)||s?f.attr(g):l.updateProps(f,g,t),f.removeAll();var m=["itemStyle","normal"],v=["itemStyle","emphasis"],y=["label","normal"],x=["label","emphasis"],_={};u.each(d.regions,function(e){var i=_[e.name]||(_[e.name]=new l.Group),o=new l.CompoundPath({shape:{paths:[]}});i.add(o);var a,r=t.getRegionModel(e.name)||t,s=r.getModel(m),d=r.getModel(v),g=n(s,p),b=n(d,p),w=r.getModel(y),S=r.getModel(x);if(c){a=c.indexOfName(e.name);var M=c.getItemVisual(a,"color",!0);M&&(g.fill=M)}var I=w.getModel("textStyle"),T=S.getModel("textStyle");u.each(e.geometries,function(t){if("polygon"===t.type){o.shape.paths.push(new l.Polygon({shape:{points:t.exterior}}));for(var e=0;e<(t.interiors?t.interiors.length:0);e++)o.shape.paths.push(new l.Polygon({shape:{points:t.interiors[e]}}))}}),o.setStyle(g),o.style.strokeNoScale=!0,o.culling=!0;var A=w.get("show"),L=S.get("show"),C=c&&isNaN(c.get("value",a)),D=c&&c.getItemLayout(a);if(h||C&&(A||L)||D&&D.showLabel){var P=c?a:e.name,k=t.getFormattedLabel(P,"normal"),O=t.getFormattedLabel(P,"emphasis"),z=new l.Text({style:{text:A?k||e.name:"",fill:I.getTextColor(),textFont:I.getFont(),textAlign:"center",textVerticalAlign:"middle"},hoverStyle:{text:L?O||e.name:"",fill:T.getTextColor(),textFont:T.getFont()},position:e.center.slice(),scale:[1/p[0],1/p[1]],z2:10,silent:!0});i.add(z)}if(c)c.setItemGraphicEl(a,i);else{var r=t.getRegionModel(e.name);o.eventData={componentType:"geo",geoIndex:t.componentIndex,name:e.name,region:r&&r.option||{}}}var R=i.__regions||(i.__regions=[]);R.push(e),l.setHoverStyle(i,b,{hoverSilentOnTouch:!!t.get("selectedMode")}),f.add(i)}),this._updateController(t,e,i),o(this,t,f,i,r),a(t,f)},remove:function(){this.group.removeAll(),this._controller.dispose()},_updateController:function(t,e,i){function n(){var e={type:"geoRoam",componentType:r};return e[r+"Id"]=t.id,e}var o=t.coordinateSystem,a=this._controller;a.zoomLimit=t.get("scaleLimit"),a.zoom=o.getZoom(),a.enable(t.get("roam")||!1);var r=t.mainType;a.off("pan").on("pan",function(t,e){this._mouseDownFlag=!1,i.dispatchAction(u.extend(n(),{dx:t,dy:e}))},this),a.off("zoom").on("zoom",function(t,e,o){if(this._mouseDownFlag=!1,i.dispatchAction(u.extend(n(),{zoom:t,originX:e,originY:o})),this._updateGroup){var a=this.group,r=a.scale;a.traverse(function(t){"text"===t.type&&t.attr("scale",[1/r[0],1/r[1]])})}},this),a.setContainsPoint(function(t,e){return o.getViewRectAfterRoam().contain(t,e)})}},t.exports=r},function(t,e,i){i(260),i(399),i(367);var n=i(2),o=i(1),a=5;n.extendComponentView({type:"parallel",render:function(t,e,i){var n=i.getZr();if(!this.__onMouseDown){var r;n.on("mousedown",this.__onMouseDown=function(t){r=[t.offsetX,t.offsetY]}),n.on("mouseup",this.__onMouseUp=function(e){var n=[e.offsetX,e.offsetY],s=Math.pow(r[0]-n[0],2)+Math.pow(r[1]-n[1],2);if(t.get("axisExpandable")&&!(s>a)){var l=t.coordinateSystem,u=l.findClosestAxisDim(n);if(u){var h=o.indexOf(l.dimensions,u);i.dispatchAction({type:"parallelAxisExpand",axisExpandCenter:h})}}})}},dispose:function(t,e){e.getZr().off(this.__onMouseDown),e.getZr().off(this.__onMouseUp)}}),n.registerPreprocessor(i(400))},function(t,e,i){i(412),i(353),i(409),i(45);var n=i(2);n.extendComponentView({type:"single"})},function(t,e,i){var n=i(2),o=i(1),a=i(9),r=i(263),s=i(82),l=i(188),u=s.mapVisual,h=i(5),c=s.eachVisual,d=i(4),f=o.isArray,p=o.each,g=d.asc,m=d.linearMap,v=o.noop,y=["#f6efa6","#d88273","#bf444c"],x=n.extendComponentModel({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:null,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;a.canvasSupported||(i.realtime=!1),!e&&l.replaceVisualOption(i,t,this.replacableOptionKeys),this.textStyleModel=this.getModel("textStyle"),this.resetItemSize(),this.completeVisualOption()},resetVisual:function(t){var e=this.stateList;t=o.bind(t,this),this.controllerVisuals=l.createVisualMappings(this.option.controller,e,t),this.targetVisuals=l.createVisualMappings(this.option.target,e,t)},resetTargetSeries:function(){var t=this.option,e=null==t.seriesIndex;t.seriesIndex=e?[]:h.normalizeToArray(t.seriesIndex),e&&this.ecModel.eachSeries(function(e,i){t.seriesIndex.push(i)})},eachTargetSeries:function(t,e){o.each(this.option.seriesIndex,function(i){t.call(e,this.ecModel.getSeriesByIndex(i))},this)},isTargetSeries:function(t){var e=!1;return this.eachTargetSeries(function(i){i===t&&(e=!0)}),e},formatValueText:function(t,e,i){function n(t){return t===u[0]?"min":t===u[1]?"max":(+t).toFixed(l)}var a,r,s=this.option,l=s.precision,u=this.dataBound,h=s.formatter;return i=i||["<",">"],o.isArray(t)&&(t=t.slice(),a=!0),r=e?t:a?[n(t[0]),n(t[1])]:n(t),o.isString(h)?h.replace("{value}",a?r[0]:r).replace("{value2}",a?r[1]:r):o.isFunction(h)?a?h(t[0],t[1]):h(t):a?t[0]===u[0]?i[0]+" "+r[1]:t[1]===u[1]?i[1]+" "+r[0]:r[0]+" - "+r[1]:r},resetExtent:function(){var t=this.option,e=g([t.min,t.max]);this._dataExtent=e},getDataDimension:function(t){var e=this.option.dimension;return null!=e?e:t.dimensions.length-1},getExtent:function(){return this._dataExtent.slice()},completeVisualOption:function(){function t(t){f(n.color)&&!t.inRange&&(t.inRange={color:n.color.slice().reverse()}),t.inRange=t.inRange||{color:y},p(this.stateList,function(e){var i=t[e];if(o.isString(i)){var n=r.get(i,"active",d);n?(t[e]={},t[e][i]=n):delete t[e]}},this)}function e(t,e,i){var n=t[e],o=t[i];n&&!o&&(o=t[i]={},p(n,function(t,e){if(s.isValidType(e)){var i=r.get(e,"inactive",d);null!=i&&(o[e]=i,"color"!==e||o.hasOwnProperty("opacity")||o.hasOwnProperty("colorAlpha")||(o.opacity=[0,0]))}}))}function i(t){var e=(t.inRange||{}).symbol||(t.outOfRange||{}).symbol,i=(t.inRange||{}).symbolSize||(t.outOfRange||{}).symbolSize,n=this.get("inactiveColor");p(this.stateList,function(a){var r=this.itemSize,s=t[a];s||(s=t[a]={color:d?n:[n]}),null==s.symbol&&(s.symbol=e&&o.clone(e)||(d?"roundRect":["roundRect"])),null==s.symbolSize&&(s.symbolSize=i&&o.clone(i)||(d?r[0]:[r[0],r[0]])),s.symbol=u(s.symbol,function(t){return"none"===t||"square"===t?"roundRect":t});var l=s.symbolSize;if(null!=l){var h=-(1/0);c(l,function(t){t>h&&(h=t)}),s.symbolSize=u(l,function(t){return m(t,[0,h],[0,r[0]],!0)})}},this)}var n=this.option,a={inRange:n.inRange,outOfRange:n.outOfRange},l=n.target||(n.target={}),h=n.controller||(n.controller={});o.merge(l,a),o.merge(h,a);var d=this.isCategory();t.call(this,l),t.call(this,h),e.call(this,l,"inRange","outOfRange"),i.call(this,h)},resetItemSize:function(){this.itemSize=[parseFloat(this.get("itemWidth")),parseFloat(this.get("itemHeight"))]},isCategory:function(){return!!this.option.categories},setSelected:v,getValueState:v,getVisualMeta:v});t.exports=x},function(t,e,i){var n=i(1),o=i(3),a=i(7),r=i(12),s=i(2),l=i(82);t.exports=s.extendComponentView({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){return this.visualMapModel=t,t.get("show")===!1?void this.group.removeAll():void this.doRender.apply(this,arguments)},renderBackground:function(t){var e=this.visualMapModel,i=a.normalizeCssArray(e.get("padding")||0),n=t.getBoundingRect();t.add(new o.Rect({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(t,e,i){function o(t){return u[t]}function a(t,e){u[t]=e}i=i||{};var r=i.forceState,s=this.visualMapModel,u={};if("symbol"===e&&(u.symbol=s.get("itemSymbol")),"color"===e){var h=s.get("contentColor");u.color=h}var c=s.controllerVisuals[r||s.getValueState(t)],d=l.prepareVisualTypes(c);return n.each(d,function(n){var r=c[n];i.convertOpacityToAlpha&&"opacity"===n&&(n="colorAlpha",r=c.__alphaForOpacity),l.dependsOn(n,e)&&r&&r.applyVisual(t,o,a)}),u[e]},positionGroup:function(t){var e=this.visualMapModel,i=this.api;r.positionElement(t,e.getBoxLayoutParams(),{width:i.getWidth(),height:i.getHeight()})},doRender:n.noop})},function(t,e,i){var n=i(1),o=i(12),a={getItemAlign:function(t,e,i){var n=t.option,a=n.align;if(null!=a&&"auto"!==a)return a;for(var r={width:e.getWidth(),height:e.getHeight()},s="horizontal"===n.orient?1:0,l=[["left","right","width"],["top","bottom","height"]],u=l[s],h=[0,null,10],c={},d=0;d<3;d++)c[l[1-s][d]]=h[d],c[u[d]]=2===d?i[0]:n[u[d]];var f=[["x","width",3],["y","height",0]][s],p=o.getLayoutRect(c,r,n.padding);return u[(p.margin[f[2]]||0)+p[f[0]]+.5*p[f[1]]<.5*r[f[1]]?0:1]},convertDataIndex:function(t){return n.each(t||[],function(e){null!=t.dataIndex&&(t.dataIndexInside=t.dataIndex,t.dataIndex=null)}),t}};t.exports=a},function(t,e,i){function n(t,e){return t&&t.hasOwnProperty&&t.hasOwnProperty(e)}var o=i(1),a=o.each;t.exports=function(t){var e=t&&t.visualMap;o.isArray(e)||(e=e?[e]:[]),a(e,function(t){if(t){n(t,"splitList")&&!n(t,"pieces")&&(t.pieces=t.splitList,delete t.splitList);var e=t.pieces;e&&o.isArray(e)&&a(e,function(t){o.isObject(t)&&(n(t,"start")&&!n(t,"min")&&(t.min=t.start),n(t,"end")&&!n(t,"max")&&(t.max=t.end))})}})}},function(t,e,i){i(13).registerSubTypeDefaulter("visualMap",function(t){return t.categories||(t.pieces?t.pieces.length>0:t.splitNumber>0)&&!t.calculable?"piecewise":"continuous"})},function(t,e,i){function n(t,e){t.eachTargetSeries(function(e){var i=e.getData();s.applyVisual(t.stateList,t.targetVisuals,i,t.getValueState,t,t.getDataDimension(i))})}function o(t){t.eachSeries(function(e){var i=e.getData(),n=[];t.eachComponent("visualMap",function(t){if(t.isTargetSeries(e)){var o=t.getVisualMeta(u.bind(a,null,e,t))||{stops:[],outerColors:[]};o.dimension=t.getDataDimension(i),n.push(o)}}),e.getData().setVisual("visualMeta",n)})}function a(t,e,i,n){function o(t){return u[t]}function a(t,e){u[t]=e}for(var r=e.targetVisuals[n],s=l.prepareVisualTypes(r),u={color:t.getData().getVisual("color")},h=0,c=s.length;h<c;h++){var d=s[h],f=r["opacity"===d?"__alphaForOpacity":d];f&&f.applyVisual(i,o,a)}return u.color}var r=i(2),s=i(188),l=i(82),u=i(1);r.registerVisual(r.PRIORITY.VISUAL.COMPONENT,function(t){t.eachComponent("visualMap",function(e){n(e,t)}),o(t)})},function(t,e,i){var n=i(2),o={type:"selectDataRange",event:"dataRangeSelected",update:"update"};n.registerAction(o,function(t,e){e.eachComponent({mainType:"visualMap",query:t},function(e){e.setSelected(t.selected)})})},function(t,e,i){function n(){l.call(this)}function o(t){this.name=t,this.zoomLimit,l.call(this),this._roamTransform=new n,this._viewTransform=new n,this._center,this._zoom}function a(t,e,i,n){var o=i.seriesModel,a=o?o.coordinateSystem:null;return a===this?a[t](n):null}var r=i(6),s=i(19),l=i(102),u=i(1),h=i(11),c=r.applyTransform;u.mixin(n,l),o.prototype={constructor:o,type:"view",dimensions:["x","y"],setBoundingRect:function(t,e,i,n){return this._rect=new h(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 h(t,e,i,n)},transformTo:function(t,e,i,n){var o=this.getBoundingRect(),a=this._viewTransform;a.transform=o.calculateTransform(new h(t,e,i,n)),a.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(),e=t.x+t.width/2,i=t.y+t.height/2;return[e,i]},getCenter:function(){return this._center||this.getDefaultCenter()},getZoom:function(){return this._zoom||1},getRoamTransform:function(){return this._roamTransform},_updateCenterAndZoom:function(){var t=this._viewTransform.getLocalTransform(),e=this._roamTransform,i=this.getDefaultCenter(),n=this.getCenter(),o=this.getZoom();n=r.applyTransform([],n,t),i=r.applyTransform([],i,t),e.origin=n,e.position=[i[0]-n[0],i[1]-n[1]],e.scale=[o,o],this._updateTransform()},_updateTransform:function(){var t=this._roamTransform,e=this._viewTransform;e.parent=t,t.updateTransform(),e.updateTransform(),e.transform&&s.copy(this.transform||(this.transform=[]),e.transform),this.transform?(this.invTransform=this.invTransform||[],s.invert(this.invTransform,this.transform)):this.invTransform=null,this.decomposeTransform()},getViewRect:function(){return this._viewRect},getViewRectAfterRoam:function(){var t=this.getBoundingRect().clone();return t.applyTransform(this.transform),t},dataToPoint:function(t){var e=this.transform;return e?c([],t,e):[t[0],t[1]]},pointToData:function(t){var e=this.invTransform;return e?c([],t,e):[t[0],t[1]]},convertToPixel:u.curry(a,"dataToPoint"),convertFromPixel:u.curry(a,"pointToData"),containPoint:function(t){return this.getViewRectAfterRoam().contain(t[0],t[1])}},u.mixin(o,l),t.exports=o},function(t,e,i){function n(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}var o=i(264),a=i(11),r=i(84),s=i(6);n.prototype={constructor:n,properties:null,getBoundingRect:function(){var t=this._rect;if(t)return t;for(var e=Number.MAX_VALUE,i=[e,e],n=[-e,-e],o=[],l=[],u=this.geometries,h=0;h<u.length;h++)if("polygon"===u[h].type){var c=u[h].exterior;r.fromPoints(c,o,l),s.min(i,i,o),s.max(n,n,l)}return 0===h&&(i[0]=i[1]=n[0]=n[1]=0),this._rect=new a(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 r=i[n].exterior,s=i[n].interiors;if(o.contain(r,t[0],t[1])){for(var l=0;l<(s?s.length:0);l++)if(o.contain(s[l]))continue t;return!0}}return!1},transformTo:function(t,e,i,n){var o=this.getBoundingRect(),r=o.width/o.height;i?n||(n=i/r):i=r*n;for(var l=new a(t,e,i,n),u=o.calculateTransform(l),h=this.geometries,c=0;c<h.length;c++)if("polygon"===h[c].type){for(var d=h[c].exterior,f=h[c].interiors,p=0;p<d.length;p++)s.applyTransform(d[p],d[p],u);for(var g=0;g<(f?f.length:0);g++)for(var p=0;p<f[g].length;p++)s.applyTransform(f[g][p],f[g][p],u)}o=this._rect,o.copy(l),this.center=[o.x+o.width/2,o.y+o.height/2]}},t.exports=n},function(t,e,i){function n(t){if(!t.UTF8Encoding)return t;for(var e=t.features,i=0;i<e.length;i++)for(var n=e[i],a=n.geometry,r=a.coordinates,s=a.encodeOffsets,l=0;l<r.length;l++){var u=r[l];if("Polygon"===a.type)r[l]=o(u,s[l]);else if("MultiPolygon"===a.type)for(var h=0;h<u.length;h++){var c=u[h];u[h]=o(c,s[l][h])}}return t.UTF8Encoding=!1,t}function o(t,e){for(var i=[],n=e[0],o=e[1],a=0;a<t.length;a+=2){var r=t.charCodeAt(a)-64,s=t.charCodeAt(a+1)-64;r=r>>1^-(1&r),s=s>>1^-(1&s),r+=n,s+=o,n=r,o=s,i.push([r/1024,s/1024])}return i}var a=i(1),r=i(258);t.exports=function(t){return n(t),a.map(a.filter(t.features,function(t){return t.geometry&&t.properties&&t.geometry.coordinates.length>0}),function(t){var e=t.properties,i=t.geometry,n=i.coordinates,o=[];"Polygon"===i.type&&o.push({type:"polygon",exterior:n[0],interiors:n.slice(1)}),"MultiPolygon"===i.type&&a.each(n,function(t){t[0]&&o.push({type:"polygon",exterior:t[0],interiors:t.slice(1)})});var s=new r(e.name,o,e.cp);return s.properties=e,s})}},function(t,e,i){function n(t,e){var i=[];return t.eachComponent("parallel",function(n,a){var r=new o(n,t,e);r.name="parallel_"+a,r.resize(n,e),n.coordinateSystem=r,r.model=n,i.push(r)}),t.eachSeries(function(e){if("parallel"===e.get("coordinateSystem")){var i=t.queryComponents({mainType:"parallel",index:e.get("parallelIndex"),id:e.get("parallelId")})[0];e.coordinateSystem=i.coordinateSystem}}),i}var o=i(397);i(26).register("parallel",{create:n})},function(t,e,i){function n(t){var e=t.mainData,i=t.datas;i||(i={main:e},t.datasAttr={main:"data"}),t.datas=t.mainData=null,u(e,i,t),d(i,function(i){d(e.TRANSFERABLE_METHODS,function(e){i.wrapMethod(e,c.curry(o,t))})}),e.wrapMethod("cloneShallow",c.curry(r,t)),d(e.CHANGABLE_METHODS,function(i){e.wrapMethod(i,c.curry(a,t))}),c.assert(i[e.dataType]===e)}function o(t,e){if(l(this)){var i=c.extend({},this[f]);i[this.dataType]=e,u(e,i,t)}else h(e,this.dataType,this[p],t);return e}function a(t,e){return t.struct&&t.struct.update(this),e}function r(t,e){return d(e[f],function(i,n){i!==e&&h(i.cloneShallow(),n,e,t)}),e}function s(t){var e=this[p];return null==t||null==e?e:e[f][t]}function l(t){return t[p]===t}function u(t,e,i){t[f]={},d(e,function(e,n){h(e,n,t,i)})}function h(t,e,i,n){i[f][e]=t,t[p]=i,t.dataType=e,n.struct&&(t[n.structAttr]=n.struct,n.struct[n.datasAttr[e]]=t),t.getLinkedData=s}var c=i(1),d=c.each,f="\0__link_datas",p="\0__link_mainData";t.exports=n},function(t,e,i){function n(){function t(e,n){if(n>=i.length)return e;for(var a=-1,r=e.length,s=i[n++],l={},u={};++a<r;){var h=s(e[a]),c=u[h];c?c.push(e[a]):u[h]=[e[a]]}return o.each(u,function(e,i){l[i]=t(e,n)}),l}function e(t,a){if(a>=i.length)return t;var r=[],s=n[a++];return o.each(t,function(t,i){r.push({key:i,values:e(t,a)})}),s?r.sort(function(t,e){return s(t.key,e.key)}):r}var i=[],n=[];return{key:function(t){return i.push(t),this},sortKeys:function(t){return n[i.length-1]=t,this},entries:function(i){return e(t(i,0),0)}}}var o=i(1);t.exports=n},function(t,e,i){var n=i(1),o={get:function(t,e,i){var o=n.clone((a[t]||{})[e]);return i&&n.isArray(o)?o[o.length-1]:o}},a={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]}};t.exports=o},function(t,e,i){function n(t,e){return Math.abs(t-e)<r}function o(t,e,i){var o=0,r=t[0];if(!r)return!1;for(var s=1;s<t.length;s++){var l=t[s];o+=a(r[0],r[1],l[0],l[1],e,i),r=l}var u=t[0];return n(r[0],u[0])&&n(r[1],u[1])||(o+=a(r[0],r[1],u[0],u[1],e,i)),0!==o}var a=i(100),r=1e-8;t.exports={contain:o}},function(t,e,i){var n=i(89).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,n.superApply(this,"getInitialData",arguments)}});t.exports=n},function(t,e,i){function n(t,e,i,n){var l=t.getItemLayout(e),u=i.get("symbolRepeat"),h=i.get("symbolClip"),c=i.get("symbolPosition")||"start",d=i.get("symbolRotate"),f=(d||0)*Math.PI/180||0,p=i.get("symbolPatternSize")||2,g=i.isAnimationEnabled(),m={dataIndex:e,layout:l,itemModel:i,symbolType:t.getItemVisual(e,"symbol")||"circle",color:t.getItemVisual(e,"color"),symbolClip:h,symbolRepeat:u,symbolRepeatDirection:i.get("symbolRepeatDirection"),symbolPatternSize:p,rotation:f,animationModel:g?i:null,hoverAnimation:g&&i.get("hoverAnimation"),z2:i.getShallow("z",!0)||0};o(i,u,l,n,m),a(t,e,l,u,h,m.boundingLength,m.pxSign,p,n,m),r(i,m.symbolScale,f,n,m);var v=m.symbolSize,y=i.get("symbolOffset");return I.isArray(y)&&(y=[D(y[0],v[0]),D(y[1],v[1])]),s(i,v,l,u,h,y,c,m.valueLineWidth,m.boundingLength,m.repeatCutLength,n,m),m}function o(t,e,i,n,o){var a=n.valueDim,r=t.get("symbolBoundingData"),s=n.coordSys.getOtherAxis(n.coordSys.getBaseAxis()),l=s.toGlobalCoord(s.dataToCoord(0)),u=o.boundingLength=null!=r?s.toGlobalCoord(s.dataToCoord(s.scale.parse(r)))-l:e?n.coordSysExtent[a.index][1-+(i[a.wh]<=0)]-l:i[a.wh];e&&(o.repeatCutLength=i[a.wh]),o.pxSign=u>0?1:u<0?-1:0}function a(t,e,i,n,o,a,r,s,l,u){var h=l.valueDim,c=l.categoryDim,d=Math.abs(i[c.wh]),f=t.getItemVisual(e,"symbolSize");I.isArray(f)?f=f.slice():(null==f&&(f="100%"),f=[f,f]),f[c.index]=D(f[c.index],d),f[h.index]=D(f[h.index],n?d:Math.abs(a)),u.symbolSize=f;var p=u.symbolScale=[f[0]/s,f[1]/s];p[h.index]*=(l.isHorizontal?-1:1)*r}function r(t,e,i,n,o){var a=t.get(P)||0;a&&(O.attr({scale:e.slice(),rotation:i}),O.updateTransform(),a/=O.getLineScale(),a*=e[n.valueDim.index]),o.valueLineWidth=a}function s(t,e,i,n,o,a,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=I.retrieve(t.get("symbolMargin"),"15%")+"",x=!1;y.lastIndexOf("!")===y.length-1&&(x=!0,y=y.slice(0,y.length-1)),y=D(y,e[f.index]);var _=Math.max(g+2*y,0),b=x?0:2*y,w=L.isNumeric(n),S=w?n:M((v+b)/_),T=v-S*g;y=T/2/(x?S:S-1),_=g+2*y,b=x?0:2*y,w||"fixed"===n||(S=u?M((Math.abs(u)+b)/_):0),m=S*_-b,c.repeatTimes=S,c.symbolMargin=y}var A=p*(m/2),C=c.pathPosition=[];C[d.index]=i[d.wh]/2,C[f.index]="start"===r?A:"end"===r?l-A:l/2,a&&(C[0]+=a[0],C[1]+=a[1]);var P=c.bundlePosition=[];P[d.index]=i[d.xy],P[f.index]=i[f.xy];var k=c.barRectShape=I.extend({},i);k[f.wh]=p*Math.max(Math.abs(i[f.wh]),Math.abs(C[f.index]+A)),k[d.wh]=i[d.wh];var O=c.clipShape={};O[d.xy]=-i[d.xy],O[d.wh]=h.ecSize[d.wh],O[f.xy]=0,O[f.wh]=i[f.wh]}function l(t){var e=t.symbolPatternSize,i=A.createSymbol(t.symbolType,-e/2,-e/2,e,e,t.color);return i.attr({culling:!0}),"image"!==i.type&&i.setStyle({strokeNoScale:!0}),i}function u(t,e,i,n){function o(t){var e=c.slice(),n=i.pxSign,o=t;return("start"===i.symbolRepeatDirection?n>0:n<0)&&(o=f-1-t),e[d.index]=g*(o-f/2+.5)+c[d.index],{position:e,scale:i.symbolScale.slice(),rotation:i.rotation}}function a(){b(t,function(t){t.trigger("emphasis")})}function r(){b(t,function(t){t.trigger("normal")})}var s=t.__pictorialBundle,u=i.symbolSize,h=i.valueLineWidth,c=i.pathPosition,d=e.valueDim,f=i.repeatTimes||0,p=0,g=u[e.valueDim.index]+h+2*i.symbolMargin;for(b(t,function(t){t.__pictorialAnimationIndex=p,t.__pictorialRepeatTimes=f,p<f?w(t,null,o(p),i,n):w(t,null,{scale:[0,0]},i,n,function(){s.remove(t)}),m(t,i),p++});p<f;p++){var v=l(i);v.__pictorialAnimationIndex=p,v.__pictorialRepeatTimes=f,s.add(v);var y=o(p,!0);w(v,{position:y.position,scale:[0,0]},{scale:y.scale,rotation:y.rotation},i,n),v.on("mouseover",a).on("mouseout",r),m(v,i)}}function h(t,e,i,n){function o(){this.trigger("emphasis")}function a(){this.trigger("normal")}var r=t.__pictorialBundle,s=t.__pictorialMainPath;s?w(s,null,{position:i.pathPosition.slice(),scale:i.symbolScale.slice(),rotation:i.rotation},i,n):(s=t.__pictorialMainPath=l(i),r.add(s),w(s,{position:i.pathPosition.slice(),scale:[0,0],rotation:i.rotation},{scale:i.symbolScale.slice()},i,n),s.on("mouseover",o).on("mouseout",a)),m(s,i)}function c(t,e,i){var n=I.extend({},e.barRectShape),o=t.__pictorialBarRect;o?w(o,null,{shape:n},e,i):(o=t.__pictorialBarRect=new T.Rect({z2:2,shape:n,silent:!0,style:{stroke:"transparent",fill:"transparent",lineWidth:0}}),t.add(o))}function d(t,e,i,n){if(i.symbolClip){var o=t.__pictorialClipPath,a=I.extend({},i.clipShape),r=e.valueDim,s=i.animationModel,l=i.dataIndex;if(o)T.updateProps(o,{shape:a},s,l);else{a[r.wh]=0,o=new T.Rect({shape:a}),t.__pictorialBundle.setClipPath(o),t.__pictorialClipPath=o;var u={};u[r.wh]=i.clipShape[r.wh],T[n?"updateProps":"initProps"](o,{shape:u},s,l)}}}function f(t,e){var i=t.getItemModel(e);return i.getAnimationDelayParams=p,i.isAnimationEnabled=g,i}function p(t){return{index:t.__pictorialAnimationIndex,count:t.__pictorialRepeatTimes}}function g(){return this.parentModel.isAnimationEnabled()&&!!this.getShallow("animation")}function m(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 v(t,e,i,n){var o=new T.Group,a=new T.Group;return o.add(a),o.__pictorialBundle=a,a.attr("position",i.bundlePosition.slice()),i.symbolRepeat?u(o,e,i):h(o,e,i),c(o,i,n),d(o,e,i,n),o.__pictorialShapeStr=_(t,i),o.__pictorialSymbolMeta=i,o}function y(t,e,i){var n=i.animationModel,o=i.dataIndex,a=t.__pictorialBundle;T.updateProps(a,{position:i.bundlePosition.slice()},n,o),i.symbolRepeat?u(t,e,i,!0):h(t,e,i,!0),c(t,i,!0),d(t,e,i,!0)}function x(t,e,i,n){var o=n.__pictorialBarRect;o&&(o.style.text="");var a=[];b(n,function(t){a.push(t)}),n.__pictorialMainPath&&a.push(n.__pictorialMainPath),n.__pictorialClipPath&&(i=null),I.each(a,function(t){T.updateProps(t,{scale:[0,0]},i,e,function(){n.parent&&n.parent.remove(n)})}),t.setItemGraphicEl(e,null)}function _(t,e){return[t.getItemVisual(e.dataIndex,"symbol")||"none",!!e.symbolRepeat,!!e.symbolClip].join(":")}function b(t,e,i){I.each(t.__pictorialBundle.children(),function(n){n!==t.__pictorialBarRect&&e.call(i,n)})}function w(t,e,i,n,o,a){e&&t.attr(e),n.symbolClip&&!o?i&&t.attr(i):i&&T[o?"updateProps":"initProps"](t,i,n.animationModel,n.dataIndex,a)}function S(t,e,i){var n=i.color,o=i.dataIndex,a=i.itemModel,r=a.getModel("itemStyle.normal").getItemStyle(["color"]),s=a.getModel("itemStyle.emphasis").getItemStyle();b(t,function(t){t.setColor(n),t.setStyle(I.defaults({fill:n,opacity:i.opacity},r)),T.setHoverStyle(t,s),t.z2=i.z2});var l={},u=e.valueDim.posDesc[+(i.boundingLength>0)],h=t.__pictorialBarRect;C.setLabel(h.style,l,a,n,e.seriesModel,o,u),T.setHoverStyle(h,l)}function M(t){var e=Math.round(t);return Math.abs(t-e)<1e-4?e:Math.ceil(t)}var I=i(1),T=i(3),A=i(24),L=i(4),C=i(90),D=L.parsePercent,P=["itemStyle","normal","borderWidth"],k=[{xy:"x",wh:"width",index:0,posDesc:["left","right"]},{xy:"y",wh:"height",index:1,posDesc:["top","bottom"]}],O=new T.Circle,z=i(2).extendChartView({type:"pictorialBar",render:function(t,e,i){var o=this.group,a=t.getData(),r=this._data,s=t.coordinateSystem,l=s.getBaseAxis(),u=!!l.isHorizontal(),h=s.grid.getRect(),c={ecSize:{width:i.getWidth(),height:i.getHeight()},seriesModel:t,coordSys:s,coordSysExtent:[[h.x,h.x+h.width],[h.y,h.y+h.height]],isHorizontal:u,valueDim:k[+u],categoryDim:k[1-u]};return a.diff(r).add(function(t){if(a.hasValue(t)){var e=f(a,t),i=n(a,t,e,c),r=v(a,c,i);a.setItemGraphicEl(t,r),o.add(r),S(r,c,i)}}).update(function(t,e){var i=r.getItemGraphicEl(e);if(!a.hasValue(t))return void o.remove(i);var s=f(a,t),l=n(a,t,s,c),u=_(a,l);i&&u!==i.__pictorialShapeStr&&(o.remove(i),a.setItemGraphicEl(t,null),i=null),i?y(i,c,l):i=v(a,c,l,!0),a.setItemGraphicEl(t,i),i.__pictorialSymbolMeta=l,o.add(i),S(i,c,l)}).remove(function(t){var e=r.getItemGraphicEl(t);e&&x(r,t,e.__pictorialSymbolMeta.animationModel,e)}).execute(),this._data=a,this.group},dispose:I.noop,remove:function(t,e){var i=this.group,n=this._data;t.get("animation")?n&&n.eachItemGraphicEl(function(e){x(n,e.dataIndex,t,e)}):i.removeAll()}});t.exports=z},function(t,e,i){var n=i(2);i(268),i(269),n.registerVisual(i(271)),n.registerLayout(i(270))},function(t,e,i){"use strict";var n=i(1),o=i(18),a=i(185),r=o.extend({type:"series.boxplot",dependencies:["xAxis","yAxis","grid"],valueDimensions:["min","Q1","median","Q3","max"],dimensions:null,defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,hoverAnimation:!0,layout:null,boxWidth:[7,50],itemStyle:{normal:{color:"#fff",borderWidth:1},emphasis:{borderWidth:2,shadowBlur:5,shadowOffsetX:2,shadowOffsetY:2,shadowColor:"rgba(0,0,0,0.4)"}},animationEasing:"elasticOut",animationDuration:800}});n.mixin(r,a.seriesModelMixin,!0),t.exports=r},function(t,e,i){"use strict";function n(t,e,i){var n=e.getItemModel(i),o=n.getModel(u),a=e.getItemVisual(i,"color"),s=o.getItemStyle(["borderColor"]),l=t.childAt(t.whiskerIndex);l.style.set(s),l.style.stroke=a,l.dirty();var c=t.childAt(t.bodyIndex);c.style.set(s),c.style.stroke=a,c.dirty();var d=n.getModel(h).getItemStyle();r.setHoverStyle(t,d)}var o=i(1),a=i(29),r=i(3),s=i(185),l=a.extend({type:"boxplot",getStyleUpdater:function(){return n},dispose:o.noop});o.mixin(l,s.viewMixin,!0);var u=["itemStyle","normal"],h=["itemStyle","emphasis"];t.exports=l},function(t,e,i){function n(t){var e=[],i=[];return t.eachSeriesByType("boxplot",function(t){var n=t.getBaseAxis(),o=r.indexOf(i,n);o<0&&(o=i.length,i[o]=n,e[o]={axis:n,seriesModels:[]}),e[o].seriesModels.push(t)}),e}function o(t){var e,i,n=t.axis,o=t.seriesModels,a=o.length,s=t.boxWidthList=[],h=t.boxOffsetList=[],c=[];if("category"===n.type)i=n.getBandWidth();else{var d=0;u(o,function(t){d=Math.max(d,t.getData().count())}),e=n.getExtent(),Math.abs(e[1]-e[0])/d}u(o,function(t){var e=t.get("boxWidth");r.isArray(e)||(e=[e,e]),c.push([l(e[0],i)||0,l(e[1],i)||0])});var f=.8*i-2,p=f/a*.3,g=(f-p*(a-1))/a,m=g/2-f/2;u(o,function(t,e){h.push(m),m+=p+g,s.push(Math.min(Math.max(g,c[e][0]),c[e][1]))})}function a(t,e,i){var n=t.coordinateSystem,o=t.getData(),a=t.dimensions,r=t.get("layout"),s=i/2;o.each(a,function(){function t(t){var i=[];i[f]=c,i[p]=t;var o;return isNaN(c)||isNaN(t)?o=[NaN,NaN]:(o=n.dataToPoint(i),o[f]+=e),o}function i(t,e){var i=t.slice(),n=t.slice();i[f]+=s,n[f]-=s,e?x.push(i,n):x.push(n,i)}function l(t){var e=[t.slice(),t.slice()];e[0][f]-=s,e[1][f]+=s,y.push(e)}var u=arguments,h=a.length,c=u[0],d=u[h],f="horizontal"===r?0:1,p=1-f,g=t(u[3]),m=t(u[1]),v=t(u[5]),y=[[m,t(u[2])],[v,t(u[4])]];l(m),l(v),l(g);var x=[];i(y[0][1],0),i(y[1][1],1),o.setItemLayout(d,{chartLayout:r,initBaseline:g[p],median:g,bodyEnds:x,whiskerEnds:y})})}var r=i(1),s=i(4),l=s.parsePercent,u=r.each;t.exports=function(t){var e=n(t);u(e,function(t){var e=t.seriesModels;e.length&&(o(t),u(e,function(e,i){a(e,t.boxOffsetList[i],t.boxWidthList[i])}))})}},function(t,e){var i=["itemStyle","normal","borderColor"];t.exports=function(t,e){var n=t.get("color");t.eachRawSeriesByType("boxplot",function(e){var o=n[e.seriesIndex%n.length],a=e.getData();a.setVisual({legendSymbol:"roundRect",color:e.get(i)||o}),t.isSeriesFiltered(e)||a.each(function(t){var e=a.getItemModel(t);a.setItemVisual(t,{color:e.get(i,!0)})})})}},function(t,e,i){var n=i(2);i(273),i(274),n.registerPreprocessor(i(277)),n.registerVisual(i(276)),n.registerLayout(i(275))},function(t,e,i){"use strict";var n=i(1),o=i(18),a=i(185),r=i(7),s=r.encodeHTML,l=r.addCommas,u=o.extend({type:"series.candlestick",dependencies:["xAxis","yAxis","grid"],valueDimensions:["open","close","lowest","highest"],dimensions:null,defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,hoverAnimation:!0,layout:null,itemStyle:{normal:{color:"#c23531",color0:"#314656",borderWidth:1,borderColor:"#c23531",borderColor0:"#314656"
+},emphasis:{borderWidth:2}},barMaxWidth:null,barMinWidth:null,barWidth:null,animationUpdate:!1,animationEasing:"linear",animationDuration:300},getShadowDim:function(){return"open"},formatTooltip:function(t,e){var i=n.map(this.valueDimensions,function(e){return s(e+": "+l(this.getData().get(e,t)))},this).join("<br />"),o=[];return null!=this.name&&o.push(s(this.name)),null!=i&&o.push(i),o.join("<br />")},brushSelector:function(t,e){return e.rect(t.brushRect)}});n.mixin(u,a.seriesModelMixin,!0),t.exports=u},function(t,e,i){"use strict";function n(t,e,i){var n=e.getItemModel(i),o=n.getModel(u),a=e.getItemVisual(i,"color"),s=e.getItemVisual(i,"borderColor")||a,l=o.getItemStyle(["color","color0","borderColor","borderColor0"]),c=t.childAt(t.whiskerIndex);c.useStyle(l),c.style.stroke=s;var d=t.childAt(t.bodyIndex);d.useStyle(l),d.style.fill=a,d.style.stroke=s;var f=n.getModel(h).getItemStyle();r.setHoverStyle(t,f)}var o=i(1),a=i(29),r=i(3),s=i(185),l=a.extend({type:"candlestick",getStyleUpdater:function(){return n},dispose:o.noop});o.mixin(l,s.viewMixin,!0);var u=["itemStyle","normal"],h=["itemStyle","emphasis"];t.exports=l},function(t,e,i){function n(t,e){var i,n=t.getBaseAxis(),r="category"===n.type?n.getBandWidth():(i=n.getExtent(),Math.abs(i[1]-i[0])/e.count()),s=a(o(t.get("barMaxWidth"),r),r),l=a(o(t.get("barMinWidth"),1),r),u=t.get("barWidth");return null!=u?a(u,r):Math.max(Math.min(r/2,s),l)}var o=i(1).retrieve,a=i(4).parsePercent;t.exports=function(t){t.eachSeriesByType("candlestick",function(t){var e=t.coordinateSystem,i=t.getData(),o=t.dimensions,a=t.get("layout"),r=n(t,i);i.each(o,function(){function t(t){var i=[];return i[d]=h,i[f]=t,isNaN(h)||isNaN(t)?[NaN,NaN]:e.dataToPoint(i)}function n(t,e){var i=t.slice(),n=t.slice();i[d]+=r/2,n[d]-=r/2,e?I.push(i,n):I.push(n,i)}function s(){var e=t(Math.min(p,g,m,v)),i=t(Math.max(p,g,m,v));return e[d]-=r/2,i[d]-=r/2,{x:e[0],y:e[1],width:f?r:i[0]-e[0],height:f?i[1]-e[1]:r}}var l=arguments,u=o.length,h=l[0],c=l[u],d="horizontal"===a?0:1,f=1-d,p=l[1],g=l[2],m=l[3],v=l[4],y=Math.min(p,g),x=Math.max(p,g),_=t(y),b=t(x),w=t(m),S=t(v),M=[[S,b],[w,_]],I=[];n(b,0),n(_,1),i.setItemLayout(c,{chartLayout:a,sign:p>g?-1:p<g?1:0,initBaseline:p>g?b[f]:_[f],bodyEnds:I,whiskerEnds:M,brushRect:s()})},!0)})}},function(t,e){var i=["itemStyle","normal","borderColor"],n=["itemStyle","normal","borderColor0"],o=["itemStyle","normal","color"],a=["itemStyle","normal","color0"];t.exports=function(t,e){t.eachRawSeriesByType("candlestick",function(e){var r=e.getData();r.setVisual({legendSymbol:"roundRect"}),t.isSeriesFiltered(e)||r.each(function(t){var e=r.getItemModel(t),s=r.getItemLayout(t).sign;r.setItemVisual(t,{color:e.get(s>0?o:a),borderColor:e.get(s>0?i:n)})})})}},function(t,e,i){var n=i(1);t.exports=function(t){t&&n.isArray(t.series)&&n.each(t.series,function(t){n.isObject(t)&&"k"===t.type&&(t.type="candlestick")})}},function(t,e,i){var n=i(1),o=i(2);i(279),i(280),o.registerVisual(n.curry(i(50),"effectScatter","circle",null)),o.registerLayout(n.curry(i(61),"effectScatter"))},function(t,e,i){"use strict";var n=i(27),o=i(18);t.exports=o.extend({type:"series.effectScatter",dependencies:["grid","polar"],getInitialData:function(t,e){var i=n(t.data,this,e);return i},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(t,e,i){var n=i(44),o=i(307);i(2).extendChartView({type:"effectScatter",init:function(){this._symbolDraw=new n(o)},render:function(t,e,i){var n=t.getData(),o=this._symbolDraw;o.updateData(n),this.group.add(o.group)},updateLayout:function(){this._symbolDraw.updateLayout()},remove:function(t,e){this._symbolDraw&&this._symbolDraw.remove(e)},dispose:function(){}})},function(t,e,i){var n=i(1),o=i(2);i(282),i(283),o.registerVisual(n.curry(i(83),"funnel")),o.registerLayout(i(284)),o.registerProcessor(n.curry(i(63),"funnel"))},function(t,e,i){"use strict";var n=i(14),o=i(5),a=i(25),r=i(2).extendSeriesModel({type:"series.funnel",init:function(t){r.superApply(this,"init",arguments),this.legendDataProvider=function(){return this.getRawData()},this._defaultLabelLine(t)},getInitialData:function(t,e){var i=a(["value"],t.data),o=new n(i,this);return o.initData(t.data),o},_defaultLabelLine:function(t){o.defaultEmphasis(t.labelLine,["show"]);var e=t.labelLine.normal,i=t.labelLine.emphasis;e.show=e.show&&t.label.normal.show,i.show=i.show&&t.label.emphasis.show},getDataParams:function(t){var e=this.getData(),i=r.superCall(this,"getDataParams",t),n=e.getSum("value");return i.percent=n?+(e.get("value",t)/n*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:{normal:{show:!0,position:"outer"},emphasis:{show:!0}},labelLine:{normal:{show:!0,length:20,lineStyle:{width:1,type:"solid"}},emphasis:{}},itemStyle:{normal:{borderColor:"#fff",borderWidth:1},emphasis:{}}}});t.exports=r},function(t,e,i){function n(t,e){function i(){r.ignore=r.hoverIgnore,s.ignore=s.hoverIgnore}function n(){r.ignore=r.normalIgnore,s.ignore=s.normalIgnore}a.Group.call(this);var o=new a.Polygon,r=new a.Polyline,s=new a.Text;this.add(o),this.add(r),this.add(s),this.updateData(t,e,!0),this.on("emphasis",i).on("normal",n).on("mouseover",i).on("mouseout",n)}function o(t,e,i,n){var o=n.getModel("textStyle"),a=n.get("position"),s="inside"===a||"inner"===a||"center"===a;return{fill:o.getTextColor()||(s?"#fff":t.getItemVisual(e,"color")),textFont:o.getFont(),text:r.retrieve(t.hostModel.getFormattedLabel(e,i),t.getName(e))}}var a=i(3),r=i(1),s=n.prototype,l=["itemStyle","normal","opacity"];s.updateData=function(t,e,i){var n=this.childAt(0),o=t.hostModel,s=t.getItemModel(e),u=t.getItemLayout(e),h=t.getItemModel(e).get(l);h=null==h?1:h,n.useStyle({}),i?(n.setShape({points:u.points}),n.setStyle({opacity:0}),a.initProps(n,{style:{opacity:h}},o,e)):a.updateProps(n,{style:{opacity:h},shape:{points:u.points}},o,e);var c=s.getModel("itemStyle"),d=t.getItemVisual(e,"color");n.setStyle(r.defaults({lineJoin:"round",fill:d},c.getModel("normal").getItemStyle(["opacity"]))),n.hoverStyle=c.getModel("emphasis").getItemStyle(),this._updateLabel(t,e),a.setHoverStyle(this)},s._updateLabel=function(t,e){var i=this.childAt(1),n=this.childAt(2),r=t.hostModel,s=t.getItemModel(e),l=t.getItemLayout(e),u=l.label,h=t.getItemVisual(e,"color");a.updateProps(i,{shape:{points:u.linePoints||u.linePoints}},r,e),a.updateProps(n,{style:{x:u.x,y:u.y}},r,e),n.attr({style:{textAlign:u.textAlign,textVerticalAlign:u.verticalAlign,textFont:u.font},rotation:u.rotation,origin:[u.x,u.y],z2:10});var c=s.getModel("label.normal"),d=s.getModel("label.emphasis"),f=s.getModel("labelLine.normal"),p=s.getModel("labelLine.emphasis");n.setStyle(o(t,e,"normal",c)),n.ignore=n.normalIgnore=!c.get("show"),n.hoverIgnore=!d.get("show"),i.ignore=i.normalIgnore=!f.get("show"),i.hoverIgnore=!p.get("show"),i.setStyle({stroke:h}),i.setStyle(f.getModel("lineStyle").getLineStyle()),n.hoverStyle=o(t,e,"emphasis",d),i.hoverStyle=p.getModel("lineStyle").getLineStyle()},r.inherits(n,a.Group);var u=i(29).extend({type:"funnel",render:function(t,e,i){var o=t.getData(),a=this._data,r=this.group;o.diff(a).add(function(t){var e=new n(o,t);o.setItemGraphicEl(t,e),r.add(e)}).update(function(t,e){var i=a.getItemGraphicEl(e);i.updateData(o,t),r.add(i),o.setItemGraphicEl(t,i)}).remove(function(t){var e=a.getItemGraphicEl(t);r.remove(e)}).execute(),this._data=o},remove:function(){this.group.removeAll(),this._data=null},dispose:function(){}});t.exports=u},function(t,e,i){function n(t,e){return r.getLayoutRect(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}function o(t,e){for(var i=t.mapArray("value",function(t){return t}),n=[],o="ascending"===e,a=0,r=t.count();a<r;a++)n[a]=a;return n.sort(function(t,e){return o?i[t]-i[e]:i[e]-i[t]}),n}function a(t){t.each(function(e){var i,n,o,a,r=t.getItemModel(e),s=r.getModel("label.normal"),l=s.get("position"),u=r.getModel("labelLine.normal"),h=t.getItemLayout(e),c=h.points,d="inner"===l||"inside"===l||"center"===l;if(d)n=(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=[[n,o],[n,o]];else{var f,p,g,m=u.get("length");"left"===l?(f=(c[3][0]+c[0][0])/2,p=(c[3][1]+c[0][1])/2,g=f-m,n=g-5,i="right"):(f=(c[1][0]+c[2][0])/2,p=(c[1][1]+c[2][1])/2,g=f+m,n=g+5,i="left");var v=p;a=[[f,p],[g,v]],o=v}h.label={linePoints:a,x:n,y:o,verticalAlign:"middle",textAlign:i,inside:d}})}var r=i(12),s=i(4),l=s.parsePercent;t.exports=function(t,e,i){t.eachSeriesByType("funnel",function(t){var i=t.getData(),r=t.get("sort"),u=n(t,e),h=o(i,r),c=[l(t.get("minSize"),u.width),l(t.get("maxSize"),u.width)],d=i.getDataExtent("value"),f=t.get("min"),p=t.get("max");null==f&&(f=Math.min(d[0],0)),null==p&&(p=d[1]);var g=t.get("funnelAlign"),m=t.get("gap"),v=(u.height-m*(i.count()-1))/i.count(),y=u.y,x=function(t,e){var n,o=i.get("value",t)||0,a=s.linearMap(o,[f,p],c,!0);switch(g){case"left":n=u.x;break;case"center":n=u.x+(u.width-a)/2;break;case"right":n=u.x+u.width-a}return[[n,e],[n+a,e]]};"ascending"===r&&(v=-v,m=-m,y+=u.height,h=h.reverse());for(var _=0;_<h.length;_++){var b=h[_],w=h[_+1],S=x(b,y),M=x(w,y+v);y+=v+m,i.setItemLayout(b,{points:S.concat(M.slice().reverse())})}a(i)})}},function(t,e,i){i(286),i(287)},function(t,e,i){var n=i(14),o=i(18),a=i(1),r=o.extend({type:"series.gauge",getInitialData:function(t,e){var i=new n(["value"],this),o=t.data||[];return a.isArray(o)||(o=[o]),i.initData(o),i},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,textStyle:{color:"auto"}},pointer:{show:!0,length:"80%",width:8},itemStyle:{normal:{color:"auto"}},title:{show:!0,offsetCenter:[0,"-40%"],textStyle:{color:"#333",fontSize:15}},detail:{show:!0,backgroundColor:"rgba(0,0,0,0)",borderWidth:0,borderColor:"#ccc",width:100,height:40,offsetCenter:[0,"40%"],textStyle:{color:"auto",fontSize:30}}}});t.exports=r},function(t,e,i){function n(t,e){var i=t.get("center"),n=e.getWidth(),o=e.getHeight(),a=Math.min(n,o),r=l(i[0],e.getWidth()),s=l(i[1],e.getHeight()),u=l(t.get("radius"),a/2);return{cx:r,cy:s,r:u}}function o(t,e){return e&&("string"==typeof e?t=e.replace("{value}",null!=t?t:""):"function"==typeof e&&(t=e(t))),t}var a=i(288),r=i(3),s=i(4),l=s.parsePercent,u=2*Math.PI,h=i(29).extend({type:"gauge",render:function(t,e,i){this.group.removeAll();var o=t.get("axisLine.lineStyle.color"),a=n(t,i);this._renderMain(t,e,i,o,a)},dispose:function(){},_renderMain:function(t,e,i,n,o){for(var a=this.group,s=t.getModel("axisLine"),l=s.getModel("lineStyle"),h=t.get("clockwise"),c=-t.get("startAngle")/180*Math.PI,d=-t.get("endAngle")/180*Math.PI,f=(d-c)%u,p=c,g=l.get("width"),m=0;m<n.length;m++){var v=Math.min(Math.max(n[m][0],0),1),d=c+f*v,y=new r.Sector({shape:{startAngle:p,endAngle:d,cx:o.cx,cy:o.cy,clockwise:h,r0:o.r-g,r:o.r},silent:!0});y.setStyle({fill:n[m][1]}),y.setStyle(l.getLineStyle(["color","borderWidth","borderColor"])),a.add(y),p=d}var x=function(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(!h){var _=c;c=d,d=_}this._renderTicks(t,e,i,x,o,c,d,h),this._renderPointer(t,e,i,x,o,c,d,h),this._renderTitle(t,e,i,x,o),this._renderDetail(t,e,i,x,o)},_renderTicks:function(t,e,i,n,a,u,h,c){for(var d=this.group,f=a.cx,p=a.cy,g=a.r,m=+t.get("min"),v=+t.get("max"),y=t.getModel("splitLine"),x=t.getModel("axisTick"),_=t.getModel("axisLabel"),b=t.get("splitNumber"),w=x.get("splitNumber"),S=l(y.get("length"),g),M=l(x.get("length"),g),I=u,T=(h-u)/b,A=T/w,L=y.getModel("lineStyle").getLineStyle(),C=x.getModel("lineStyle").getLineStyle(),D=_.getModel("textStyle"),P=0;P<=b;P++){var k=Math.cos(I),O=Math.sin(I);if(y.get("show")){var z=new r.Line({shape:{x1:k*g+f,y1:O*g+p,x2:k*(g-S)+f,y2:O*(g-S)+p},style:L,silent:!0});"auto"===L.stroke&&z.setStyle({stroke:n(P/b)}),d.add(z)}if(_.get("show")){var R=o(s.round(P/b*(v-m)+m),_.get("formatter")),E=_.get("distance"),N=new r.Text({style:{text:R,x:k*(g-S-E)+f,y:O*(g-S-E)+p,fill:D.getTextColor(),textFont:D.getFont(),textVerticalAlign:O<-.4?"top":O>.4?"bottom":"middle",textAlign:k<-.4?"left":k>.4?"right":"center"},silent:!0});"auto"===N.style.fill&&N.setStyle({fill:n(P/b)}),d.add(N)}if(x.get("show")&&P!==b){for(var V=0;V<=w;V++){var k=Math.cos(I),O=Math.sin(I),B=new r.Line({shape:{x1:k*g+f,y1:O*g+p,x2:k*(g-M)+f,y2:O*(g-M)+p},silent:!0,style:C});"auto"===C.stroke&&B.setStyle({stroke:n((P+V/w)/b)}),d.add(B),I+=A}I-=A}else I+=T}},_renderPointer:function(t,e,i,n,o,u,h,c){var d=this.group,f=this._data;if(!t.get("pointer.show"))return void(f&&f.eachItemGraphicEl(function(t){d.remove(t)}));var p=[+t.get("min"),+t.get("max")],g=[u,h],m=t.getData();m.diff(f).add(function(e){var i=new a({shape:{angle:u}});r.updateProps(i,{shape:{angle:s.linearMap(m.get("value",e),p,g,!0)}},t),d.add(i),m.setItemGraphicEl(e,i)}).update(function(e,i){var n=f.getItemGraphicEl(i);r.updateProps(n,{shape:{angle:s.linearMap(m.get("value",e),p,g,!0)}},t),d.add(n),m.setItemGraphicEl(e,n)}).remove(function(t){var e=f.getItemGraphicEl(t);d.remove(e)}).execute(),m.eachItemGraphicEl(function(t,e){var i=m.getItemModel(e),a=i.getModel("pointer");t.setShape({x:o.cx,y:o.cy,width:l(a.get("width"),o.r),r:l(a.get("length"),o.r)}),t.useStyle(i.getModel("itemStyle.normal").getItemStyle()),"auto"===t.style.fill&&t.setStyle("fill",n(s.linearMap(m.get("value",e),p,[0,1],!0))),r.setHoverStyle(t,i.getModel("itemStyle.emphasis").getItemStyle())}),this._data=m},_renderTitle:function(t,e,i,n,o){var a=t.getModel("title");if(a.get("show")){var u=a.getModel("textStyle"),h=a.get("offsetCenter"),c=o.cx+l(h[0],o.r),d=o.cy+l(h[1],o.r),f=new r.Text({style:{x:c,y:d,text:t.getData().getName(0),fill:u.getTextColor(),textFont:u.getFont(),textAlign:"center",textVerticalAlign:"middle"}});if("auto"===f.style.fill){var p=+t.get("min"),g=+t.get("max"),m=t.getData().get("value",0);f.setStyle("fill",n(s.linearMap(m,[p,g],[0,1],!0)))}this.group.add(f)}},_renderDetail:function(t,e,i,n,a){var u=t.getModel("detail"),h=+t.get("min"),c=+t.get("max");if(u.get("show")){var d=u.getModel("textStyle"),f=u.get("offsetCenter"),p=a.cx+l(f[0],a.r),g=a.cy+l(f[1],a.r),m=l(u.get("width"),a.r),v=l(u.get("height"),a.r),y=t.getData().get("value",0),x=new r.Rect({shape:{x:p-m/2,y:g-v/2,width:m,height:v},style:{text:o(y,u.get("formatter")),fill:u.get("backgroundColor"),textFill:d.getTextColor(),textFont:d.getFont()}});"auto"===x.style.textFill&&x.setStyle("textFill",n(s.linearMap(y,[h,c],[0,1],!0))),x.setStyle(u.getItemStyle(["color"])),this.group.add(x)}}});t.exports=h},function(t,e,i){t.exports=i(8).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,o=e.r,a=e.width,r=e.angle,s=e.x-i(r)*a*(a>=o/3?1:2),l=e.y-n(r)*a*(a>=o/3?1:2);r=e.angle-Math.PI/2,t.moveTo(s,l),t.lineTo(e.x+i(r)*a,e.y+n(r)*a),t.lineTo(e.x+i(e.angle)*o,e.y+n(e.angle)*o),t.lineTo(e.x-i(r)*a,e.y-n(r)*a),t.lineTo(s,l)}})},function(t,e,i){var n=i(2),o=i(1);i(290),i(291),i(300),n.registerProcessor(i(293)),n.registerVisual(o.curry(i(50),"graph","circle",null)),n.registerVisual(i(294)),n.registerVisual(i(297)),n.registerLayout(i(301)),n.registerLayout(i(295)),n.registerLayout(i(299)),n.registerCoordinateSystem("graphView",{create:i(296)})},function(t,e,i){"use strict";var n=i(14),o=i(1),a=i(5),r=i(10),s=i(7),l=i(244),u=i(2).extendSeriesModel({type:"series.graph",init:function(t){u.superApply(this,"init",arguments),this.legendDataProvider=function(){return this._categoriesData},this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},mergeOption:function(t){u.superApply(this,"mergeOption",arguments),this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},mergeDefaultAndTheme:function(t){u.superApply(this,"mergeDefaultAndTheme",arguments),a.defaultEmphasis(t.edgeLabel,a.LABEL_OPTIONS)},getInitialData:function(t,e){function i(t,i){function n(t){return t=this.parsePath(t),t&&"label"===t[0]?s:this.parentModel}t.wrapMethod("getItemModel",function(t){var e=a._categoriesModels,i=t.getShallow("category"),n=e[i];return n&&(n.parentModel=t.parentModel,t.parentModel=n),t});var o=a.getModel("edgeLabel"),s=new r({label:o.option},o.parentModel,e);i.wrapMethod("getItemModel",function(t){return t.customizeGetParent(n),t})}var n=t.edges||t.links||[],o=t.data||t.nodes||[],a=this;if(o&&n)return l(o,n,this,!0,i).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){var n=this.getData(),o=this.getDataParams(t,i),a=n.graph.getEdgeByIndex(t),r=n.getName(a.node1.dataIndex),l=n.getName(a.node2.dataIndex),h=[];return null!=r&&h.push(r),null!=l&&h.push(l),h=s.encodeHTML(h.join(" > ")),o.value&&(h+=" : "+s.encodeHTML(o.value)),h}return u.superApply(this,"formatTooltip",arguments)},_updateCategoriesData:function(){var t=o.map(this.option.categories||[],function(t){return null!=t.value?t:o.extend({value:0},t)}),e=new n(["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 u.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,edgeLength:30,layoutAnimation:!0},left:"center",top:"center",symbol:"circle",symbolSize:10,edgeSymbol:["none","none"],edgeSymbolSize:10,edgeLabel:{normal:{position:"middle"},emphasis:{}},draggable:!1,roam:!1,center:null,zoom:1,nodeScaleRatio:.6,label:{normal:{show:!1,formatter:"{b}"},emphasis:{show:!0}},itemStyle:{normal:{},emphasis:{}},lineStyle:{normal:{color:"#aaa",width:1,curveness:0,opacity:.5},emphasis:{}}}});t.exports=u},function(t,e,i){function n(t,e){return t.getVisual("opacity")||t.getModel().get(e)}var o=i(44),a=i(109),r=i(94),s=i(3),l=i(292),u=i(1),h=["itemStyle","normal","opacity"],c=["lineStyle","normal","opacity"];i(2).extendChartView({type:"graph",init:function(t,e){var i=new o,n=new a,s=this.group,l=new r(e.getZr(),s);s.add(i.group),s.add(n.group),this._symbolDraw=i,this._lineDraw=n,this._controller=l,this._firstRender=!0},render:function(t,e,i){var n=t.coordinateSystem;this._model=t,this._nodeScaleRatio=t.get("nodeScaleRatio");var o=this._symbolDraw,a=this._lineDraw,r=this.group;if("view"===n.type){var u={position:n.position,scale:n.scale};this._firstRender?r.attr(u):s.updateProps(r,u,t)}l(t.getGraph(),this._getNodeGlobalScale(t));var h=t.getData();o.updateData(h);var c=t.getEdgeData();a.updateData(c),this._updateNodeAndLinkScale(),this._updateController(t,i),clearTimeout(this._layoutTimeout);var d=t.forceLayout,f=t.get("force.layoutAnimation");d&&this._startForceLayoutIteration(d,f),h.eachItemGraphicEl(function(e,n){var o=h.getItemModel(n);e.off("drag").off("dragend");var a=h.getItemModel(n).get("draggable");a&&e.on("drag",function(){d&&(d.warmUp(),!this._layouting&&this._startForceLayoutIteration(d,f),d.setFixed(n),h.setItemLayout(n,e.position))},this).on("dragend",function(){d&&d.setUnfixed(n)},this),e.setDraggable(a&&d),e.off("mouseover",e.__focusNodeAdjacency),e.off("mouseout",e.__unfocusNodeAdjacency),o.get("focusNodeAdjacency")&&(e.on("mouseover",e.__focusNodeAdjacency=function(){i.dispatchAction({type:"focusNodeAdjacency",seriesId:t.id,dataIndex:e.dataIndex})}),e.on("mouseout",e.__unfocusNodeAdjacency=function(){i.dispatchAction({type:"unfocusNodeAdjacency",seriesId:t.id})}))},this);var p="circular"===t.get("layout")&&t.get("circular.rotateLabel"),g=h.getLayout("cx"),m=h.getLayout("cy");h.eachItemGraphicEl(function(t,e){var i=t.getSymbolPath();if(p){var n=h.getItemLayout(e),o=Math.atan2(n[1]-m,n[0]-g);o<0&&(o=2*Math.PI+o);var a=n[0]<g;a&&(o-=Math.PI);var r=a?"left":"right";i.setStyle({textRotation:o,textPosition:r}),i.hoverStyle&&(i.hoverStyle.textPosition=r)}else i.setStyle({textRotation:0})}),this._firstRender=!1},dispose:function(){this._controller&&this._controller.dispose()},focusNodeAdjacency:function(t,e,i,o){function a(t,e){var i=n(t,e),o=t.getGraphicEl();null==i&&(i=1),o.traverse(function(t){t.trigger("normal"),"group"!==t.type&&t.setStyle("opacity",.1*i)})}function r(t,e){var i=n(t,e),o=t.getGraphicEl();o.traverse(function(t){t.trigger("emphasis"),"group"!==t.type&&t.setStyle("opacity",i)})}var s=this._model.getData(),l=o.dataIndex,d=s.getItemGraphicEl(l);if(d){var f=s.graph,p=d.dataType;if(null!==l&&"edge"!==p){f.eachNode(function(t){a(t,h)}),f.eachEdge(function(t){a(t,c)});var g=f.getNodeByIndex(l);r(g,h),u.each(g.edges,function(t){t.dataIndex<0||(r(t,c),r(t.node1,h),r(t.node2,h))})}}},unfocusNodeAdjacency:function(t,e,i,o){var a=this._model.getData().graph;a.eachNode(function(t){var e=n(t,h);t.getGraphicEl().traverse(function(t){t.trigger("normal"),"group"!==t.type&&t.setStyle("opacity",e)})}),a.eachEdge(function(t){var e=n(t,c);t.getGraphicEl().traverse(function(t){t.trigger("normal"),"group"!==t.type&&t.setStyle("opacity",e)})})},_startForceLayoutIteration:function(t,e){var i=this;!function n(){t.step(function(t){i.updateLayout(i._model),(i._layouting=!t)&&(e?i._layoutTimeout=setTimeout(n,16):n())})}()},_updateController:function(t,e){var i=this._controller,n=this.group;return i.setContainsPoint(function(t,e){var i=n.getBoundingRect();return i.applyTransform(n.transform),i.contain(t,e)}),"view"!==t.coordinateSystem.type?void i.disable():(i.enable(t.get("roam")),i.zoomLimit=t.get("scaleLimit"),i.zoom=t.coordinateSystem.getZoom(),void i.off("pan").off("zoom").on("pan",function(i,n){e.dispatchAction({seriesId:t.id,type:"graphRoam",dx:i,dy:n})}).on("zoom",function(i,n,o){e.dispatchAction({seriesId:t.id,type:"graphRoam",zoom:i,originX:n,originY:o}),this._updateNodeAndLinkScale(),l(t.getGraph(),this._getNodeGlobalScale(t)),this._lineDraw.updateLayout()},this))},_updateNodeAndLinkScale:function(){var t=this._model,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,o=n&&n[0]||1,a=e.getZoom(),r=(a-1)*i+1;return r/o},updateLayout:function(t){l(t.getGraph(),this._getNodeGlobalScale(t)),this._symbolDraw.updateLayout(),this._lineDraw.updateLayout()},remove:function(t,e){this._symbolDraw&&this._symbolDraw.remove(),this._lineDraw&&this._lineDraw.remove()}})},function(t,e,i){function n(t,e,i){for(var n,o=t[0],a=t[1],d=t[2],f=1/0,p=i*i,g=.1,m=.1;m<=.9;m+=.1){r[0]=u(o[0],a[0],d[0],m),r[1]=u(o[1],a[1],d[1],m);var v=c(h(r,e)-p);v<f&&(f=v,n=m)}for(var y=0;y<32;y++){var x=n+g;s[0]=u(o[0],a[0],d[0],n),s[1]=u(o[1],a[1],d[1],n),l[0]=u(o[0],a[0],d[0],x),l[1]=u(o[1],a[1],d[1],x);var v=h(s,e)-p;if(c(v)<.01)break;var _=h(l,e)-p;g/=2,v<0?_>=0?n+=g:n-=g:_>=0?n-=g:n+=g}return n}var o=i(21),a=i(6),r=[],s=[],l=[],u=o.quadraticAt,h=a.distSquare,c=Math.abs;t.exports=function(t,e){function i(t){var e=t.getVisual("symbolSize");return e instanceof Array&&(e=(e[0]+e[1])/2),e}var r=[],s=o.quadraticSubdivide,l=[[],[],[]],u=[[],[]],h=[];e/=2,t.eachEdge(function(t,o){var c=t.getLayout(),d=t.getVisual("fromSymbol"),f=t.getVisual("toSymbol");c.__original||(c.__original=[a.clone(c[0]),a.clone(c[1])],c[2]&&c.__original.push(a.clone(c[2])));var p=c.__original;if(null!=c[2]){if(a.copy(l[0],p[0]),a.copy(l[1],p[2]),a.copy(l[2],p[1]),d&&"none"!=d){var g=i(t.node1),m=n(l,p[0],g*e);s(l[0][0],l[1][0],l[2][0],m,r),l[0][0]=r[3],l[1][0]=r[4],s(l[0][1],l[1][1],l[2][1],m,r),l[0][1]=r[3],l[1][1]=r[4]}if(f&&"none"!=f){var g=i(t.node2),m=n(l,p[1],g*e);s(l[0][0],l[1][0],l[2][0],m,r),l[1][0]=r[1],l[2][0]=r[2],s(l[0][1],l[1][1],l[2][1],m,r),l[1][1]=r[1],l[2][1]=r[2]}a.copy(c[0],l[0]),a.copy(c[1],l[2]),a.copy(c[2],l[1])}else{if(a.copy(u[0],p[0]),a.copy(u[1],p[1]),a.sub(h,u[1],u[0]),a.normalize(h,h),d&&"none"!=d){var g=i(t.node1);a.scaleAndAdd(u[0],u[0],h,g*e)}if(f&&"none"!=f){var g=i(t.node2);a.scaleAndAdd(u[1],u[1],h,-g*e)}a.copy(c[0],u[0]),a.copy(c[1],u[1])}})}},function(t,e){t.exports=function(t){var e=t.findComponents({mainType:"legend"});e&&e.length&&t.eachSeriesByType("graph",function(t){var i=t.getCategoriesData(),n=t.getGraph(),o=n.data,a=i.mapArray(i.getName);o.filterSelf(function(t){var i=o.getItemModel(t),n=i.getShallow("category");if(null!=n){"number"==typeof n&&(n=a[n]);for(var r=0;r<e.length;r++)if(!e[r].isSelected(n))return!1}return!0})},this)}},function(t,e){t.exports=function(t){var e={};t.eachSeriesByType("graph",function(t){var i=t.getCategoriesData(),n=t.getData(),o={};i.each(function(n){var a=i.getName(n);o[a]=n;var r=i.getItemModel(n),s=r.get("itemStyle.normal.color")||t.getColorFromPalette(a,e);i.setItemVisual(n,"color",s)}),i.count()&&n.each(function(t){var e=n.getItemModel(t),a=e.getShallow("category");null!=a&&("string"==typeof a&&(a=o[a]),n.getItemVisual(t,"color",!0)||n.setItemVisual(t,"color",i.getItemVisual(a,"color")))})})}},function(t,e,i){var n=i(239);t.exports=function(t){t.eachSeriesByType("graph",function(t){"circular"===t.get("layout")&&n(t)})}},function(t,e,i){function n(t,e,i){var n=t.getBoxLayoutParams();return n.aspect=i,a.getLayoutRect(n,{width:e.getWidth(),height:e.getHeight()})}var o=i(257),a=i(12),r=i(84);t.exports=function(t,e){var i=[];return t.eachSeriesByType("graph",function(t){var a=t.get("coordinateSystem");if(!a||"view"===a){var s=t.getData(),l=s.mapArray(function(t){var e=s.getItemModel(t);return[+e.get("x"),+e.get("y")]}),u=[],h=[];r.fromPoints(l,u,h),h[0]-u[0]===0&&(h[0]+=1,u[0]-=1),h[1]-u[1]===0&&(h[1]+=1,u[1]-=1);var c=(h[0]-u[0])/(h[1]-u[1]),d=n(t,e,c);isNaN(c)&&(u=[d.x,d.y],h=[d.x+d.width,d.y+d.height]);var f=h[0]-u[0],p=h[1]-u[1],g=d.width,m=d.height,v=t.coordinateSystem=new o;v.zoomLimit=t.get("scaleLimit"),v.setBoundingRect(u[0],u[1],f,p),v.setViewRect(d.x,d.y,g,m),v.setCenter(t.get("center")),v.setZoom(t.get("zoom")),i.push(v)}}),i}},function(t,e){function i(t){return t instanceof Array||(t=[t,t]),t}t.exports=function(t){t.eachSeriesByType("graph",function(t){var e=t.getGraph(),n=t.getEdgeData(),o=i(t.get("edgeSymbol")),a=i(t.get("edgeSymbolSize")),r="lineStyle.normal.color".split("."),s="lineStyle.normal.opacity".split(".");n.setVisual("fromSymbol",o&&o[0]),n.setVisual("toSymbol",o&&o[1]),n.setVisual("fromSymbolSize",a&&a[0]),n.setVisual("toSymbolSize",a&&a[1]),n.setVisual("color",t.get(r)),n.setVisual("opacity",t.get(s)),n.each(function(t){var o=n.getItemModel(t),a=e.getEdgeByIndex(t),l=i(o.getShallow("symbol",!0)),u=i(o.getShallow("symbolSize",!0)),h=o.get(r),c=o.get(s);switch(h){case"source":h=a.node1.getVisual("color");break;case"target":h=a.node2.getVisual("color")}l[0]&&a.setVisual("fromSymbol",l[0]),l[1]&&a.setVisual("toSymbol",l[1]),u[0]&&a.setVisual("fromSymbolSize",u[0]),u[1]&&a.setVisual("toSymbolSize",u[1]),a.setVisual("color",h),a.setVisual("opacity",c)})})}},function(t,e,i){var n=i(6),o=n.scaleAndAdd;t.exports=function(t,e,i){for(var a=i.rect,r=a.width,s=a.height,l=[a.x+r/2,a.y+s/2],u=null==i.gravity?.1:i.gravity,h=0;h<t.length;h++){var c=t[h];c.p||(c.p=n.create(r*(Math.random()-.5)+l[0],s*(Math.random()-.5)+l[1])),c.pp=n.clone(c.p),c.edges=null}var d=.6;return{warmUp:function(){d=.5},setFixed:function(e){t[e].fixed=!0},setUnfixed:function(e){t[e].fixed=!1},step:function(i){for(var a=[],r=t.length,s=0;s<e.length;s++){var h=e[s],c=h.n1,f=h.n2;n.sub(a,f.p,c.p);var p=n.len(a)-h.d,g=f.w/(c.w+f.w);n.normalize(a,a),!c.fixed&&o(c.p,c.p,a,g*p*d),!f.fixed&&o(f.p,f.p,a,-(1-g)*p*d)}for(var s=0;s<r;s++){var m=t[s];m.fixed||(n.sub(a,l,m.p),n.scaleAndAdd(m.p,m.p,a,u*d))}for(var s=0;s<r;s++)for(var c=t[s],v=s+1;v<r;v++){var f=t[v];n.sub(a,f.p,c.p);var p=n.len(a);0===p&&(n.set(a,Math.random()-.5,Math.random()-.5),p=1);var y=(c.rep+f.rep)/p/p;!c.fixed&&o(c.pp,c.pp,a,y),!f.fixed&&o(f.pp,f.pp,a,-y)}for(var x=[],s=0;s<r;s++){var m=t[s];m.fixed||(n.sub(x,m.p,m.pp),n.scaleAndAdd(m.p,m.p,x,d),n.copy(m.pp,m.p))}d=.992*d,i&&i(t,e,d<.01)}}}},function(t,e,i){var n=i(298),o=i(4),a=i(241),r=i(239),s=i(6),l=i(1);t.exports=function(t){t.eachSeriesByType("graph",function(t){var e=t.coordinateSystem;if(!e||"view"===e.type)if("force"===t.get("layout")){var i=t.preservedPoints||{},u=t.getGraph(),h=u.data,c=u.edgeData,d=t.getModel("force"),f=d.get("initLayout");t.preservedPoints?h.each(function(t){var e=h.getId(t);h.setItemLayout(t,i[e]||[NaN,NaN])}):f&&"none"!==f?"circular"===f&&r(t):a(t);var p=h.getDataExtent("value"),g=c.getDataExtent("value"),m=d.get("repulsion"),v=d.get("edgeLength");l.isArray(m)||(m=[m,m]),l.isArray(v)||(v=[v,v]),v=[v[1],v[0]];var y=h.mapArray("value",function(t,e){var i=h.getItemLayout(e),n=o.linearMap(t,p,m);return isNaN(n)&&(n=(m[0]+m[1])/2),{w:n,rep:n,p:!i||isNaN(i[0])||isNaN(i[1])?null:i}}),x=c.mapArray("value",function(t,e){var i=u.getEdgeByIndex(e),n=o.linearMap(t,g,v);return isNaN(n)&&(n=(v[0]+v[1])/2),{n1:y[i.node1.dataIndex],n2:y[i.node2.dataIndex],d:n,curveness:i.getModel().get("lineStyle.normal.curveness")||0}}),e=t.coordinateSystem,_=e.getBoundingRect(),b=n(y,x,{rect:_,gravity:d.get("gravity")}),w=b.step;b.step=function(t){for(var e=0,n=y.length;e<n;e++)y[e].fixed&&s.copy(y[e].p,u.getNodeByIndex(e).getLayout());w(function(e,n,o){for(var a=0,r=e.length;a<r;a++)e[a].fixed||u.getNodeByIndex(a).setLayout(e[a].p),i[h.getId(a)]=e[a].p;for(var a=0,r=n.length;a<r;a++){var l=n[a],c=u.getEdgeByIndex(a),d=l.n1.p,f=l.n2.p,p=c.getLayout();p=p?p.slice():[],p[0]=p[0]||[],p[1]=p[1]||[],s.copy(p[0],d),s.copy(p[1],f),+l.curveness&&(p[2]=[(d[0]+f[0])/2-(d[1]-f[1])*l.curveness,(d[1]+f[1])/2-(f[0]-d[0])*l.curveness]),c.setLayout(p)}t&&t(o)})},t.forceLayout=b,t.preservedPoints=i,b.step()}else t.forceLayout=null})}},function(t,e,i){var n=i(2),o=i(238),a={type:"graphRoam",event:"graphRoam",update:"none"};n.registerAction(a,function(t,e){e.eachComponent({mainType:"series",query:t},function(e){var i=e.coordinateSystem,n=o.updateCenterAndZoom(i,t);e.setCenter&&e.setCenter(n.center),e.setZoom&&e.setZoom(n.zoom)})}),n.registerAction({type:"focusNodeAdjacency",event:"focusNodeAdjacency",update:"series.graph:focusNodeAdjacency"},function(){}),n.registerAction({type:"unfocusNodeAdjacency",event:"unfocusNodeAdjacency",update:"series.graph:unfocusNodeAdjacency"},function(){})},function(t,e,i){var n=i(241),o=i(240);t.exports=function(t,e){t.eachSeriesByType("graph",function(t){var e=t.get("layout"),i=t.coordinateSystem;if(i&&"view"!==i.type){var a=t.getData(),r=i.dimensions;a.each(r,function(){for(var t,e=arguments,n=[],o=0;o<r.length;o++)isNaN(e[o])||(t=!0),n.push(e[o]);var s=e[e.length-1];t?a.setItemLayout(s,i.dataToPoint(n)):a.setItemLayout(s,[NaN,NaN])}),o(a.graph)}else e&&"none"!==e||n(t)})}},function(t,e,i){i(304),i(305)},function(t,e,i){function n(){var t=a.createCanvas();this.canvas=t,this.blurSize=30,this.pointSize=20,this.maxOpacity=1,this.minOpacity=0,this._gradientPixels={}}var o=256,a=i(1);n.prototype={update:function(t,e,i,n,a,r){var s=this._getBrush(),l=this._getGradient(t,a,"inRange"),u=this._getGradient(t,a,"outOfRange"),h=this.pointSize+this.blurSize,c=this.canvas,d=c.getContext("2d"),f=t.length;c.width=e,c.height=i;for(var p=0;p<f;++p){var g=t[p],m=g[0],v=g[1],y=g[2],x=n(y);d.globalAlpha=x,d.drawImage(s,m-h,v-h)}for(var _=d.getImageData(0,0,c.width,c.height),b=_.data,w=0,S=b.length,M=this.minOpacity,I=this.maxOpacity,T=I-M;w<S;){
+var x=b[w+3]/256,A=4*Math.floor(x*(o-1));if(x>0){var L=r(x)?l:u;x>0&&(x=x*T+M),b[w++]=L[A],b[w++]=L[A+1],b[w++]=L[A+2],b[w++]=L[A+3]*x*256}else w+=4}return d.putImageData(_,0,0),c},_getBrush:function(){var t=this._brushCanvas||(this._brushCanvas=a.createCanvas()),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,o=n[i]||(n[i]=new Uint8ClampedArray(1024)),a=[],r=0,s=0;s<256;s++)e[i](s/255,!0,a),o[r++]=a[0],o[r++]=a[1],o[r++]=a[2],o[r++]=a[3];return o}},t.exports=n},function(t,e,i){var n=i(18),o=i(27);t.exports=n.extend({type:"series.heatmap",getInitialData:function(t,e){return o(t.data,this,e)},defaultOption:{coordinateSystem:"cartesian2d",zlevel:0,z:2,geoIndex:0,blurSize:30,pointSize:20,maxOpacity:1,minOpacity:0}})},function(t,e,i){function n(t,e,i){var n=t[1]-t[0];e=l.map(e,function(e){return{interval:[(e.interval[0]-t[0])/n,(e.interval[1]-t[0])/n]}});var o=e.length,a=0;return function(t){for(var n=a;n<o;n++){var r=e[n].interval;if(r[0]<=t&&t<=r[1]){a=n;break}}if(n===o)for(var n=a-1;n>=0;n--){var r=e[n].interval;if(r[0]<=t&&t<=r[1]){a=n;break}}return n>=0&&n<o&&i[n]}}function o(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]}}function a(t){var e=t.dimensions;return"lng"===e[0]&&"lat"===e[1]}var r=i(3),s=i(303),l=i(1);t.exports=i(2).extendChartView({type:"heatmap",render:function(t,e,i){var n;e.eachComponent("visualMap",function(e){e.eachTargetSeries(function(i){i===t&&(n=e)})}),this.group.removeAll();var o=t.coordinateSystem;"cartesian2d"===o.type||"calendar"===o.type?this._renderOnCartesianAndCalendar(o,t,i):a(o)&&this._renderOnGeo(o,t,n,i)},dispose:function(){},_renderOnCartesianAndCalendar:function(t,e,i){if("cartesian2d"===t.type)var n=t.getAxis("x"),o=t.getAxis("y"),a=n.getBandWidth(),s=o.getBandWidth();var u=this.group,h=e.getData(),c="itemStyle.normal",d="itemStyle.emphasis",f="label.normal",p="label.emphasis",g=e.getModel(c).getItemStyle(["color"]),m=e.getModel(d).getItemStyle(),v=e.getModel("label.normal"),y=e.getModel("label.emphasis");h.each("cartesian2d"===t.type?["x","y","z"]:["time","value"],function(i,n,o,x){var _;if("cartesian2d"===t.type){if(isNaN(o))return;var b=t.dataToPoint([i,n]);_=new r.Rect({shape:{x:b[0]-a/2,y:b[1]-s/2,width:a,height:s},style:{fill:h.getItemVisual(x,"color"),opacity:h.getItemVisual(x,"opacity")}})}else{if(isNaN(n))return;x=o,_=new r.Rect({z2:1,shape:t.dataToRect([i,n]).contentShape,style:{fill:h.getItemVisual(x,"color"),opacity:h.getItemVisual(x,"opacity")}})}var w=h.getItemModel(x);h.hasItemOption&&(g=w.getModel(c).getItemStyle(["color"]),m=w.getModel(d).getItemStyle(),v=w.getModel(f),y=w.getModel(p));var S=e.getRawValue(x),M="-";S&&null!=S[2]&&(M=S[2]),v.getShallow("show")&&(r.setText(g,v),g.text=e.getFormattedLabel(x,"normal")||M),y.getShallow("show")&&(r.setText(m,y),m.text=e.getFormattedLabel(x,"emphasis")||M),_.setStyle(g),r.setHoverStyle(_,h.hasItemOption?m:l.extend({},m)),u.add(_),h.setItemGraphicEl(x,_)})},_renderOnGeo:function(t,e,i,a){var l=i.targetVisuals.inRange,u=i.targetVisuals.outOfRange,h=e.getData(),c=this._hmLayer||this._hmLayer||new s;c.blurSize=e.get("blurSize"),c.pointSize=e.get("pointSize"),c.minOpacity=e.get("minOpacity"),c.maxOpacity=e.get("maxOpacity");var d=t.getViewRect().clone(),f=t.getRoamTransform().transform;d.applyTransform(f);var p=Math.max(d.x,0),g=Math.max(d.y,0),m=Math.min(d.width+d.x,a.getWidth()),v=Math.min(d.height+d.y,a.getHeight()),y=m-p,x=v-g,_=h.mapArray(["lng","lat","value"],function(e,i,n){var o=t.dataToPoint([e,i]);return o[0]-=p,o[1]-=g,o.push(n),o}),b=i.getExtent(),w="visualMap.continuous"===i.type?o(b,i.option.range):n(b,i.getPieceList(),i.option.selected);c.update(_,y,x,l.color.getNormalizer(),{inRange:l.color.getColorMapper(),outOfRange:u.color.getColorMapper()},w);var S=new r.Image({style:{width:y,height:x,x:p,y:g,image:c.canvas},silent:!0});this.group.add(S)}})},function(t,e,i){function n(t,e,i){r.call(this,t,e,i),this._lastFrame=0,this._lastFramePercent=0}var o=i(243),a=i(1),r=i(242),s=i(6),l=n.prototype;l.createLine=function(t,e,i){return new o(t,e,i)},l.updateAnimationPoints=function(t,e){this._points=e;for(var i=[0],n=0,o=1;o<e.length;o++){var a=e[o-1],r=e[o];n+=s.dist(a,r),i.push(n)}if(0!==n){for(var o=0;o<i.length;o++)i[o]/=n;this._offsets=i,this._length=n}},l.getLineLength=function(t){return this._length},l.updateSymbolPosition=function(t){var e=t.__t,i=this._points,n=this._offsets,o=i.length;if(n){var a,r=this._lastFrame;if(e<this._lastFramePercent){var l=Math.min(r+1,o-1);for(a=l;a>=0&&!(n[a]<=e);a--);a=Math.min(a,o-2)}else{for(var a=r;a<o&&!(n[a]>e);a++);a=Math.min(a-1,o-2)}s.lerp(t.position,i[a],i[a+1],(e-n[a])/(n[a+1]-n[a]));var u=i[a+1][0]-i[a][0],h=i[a+1][1]-i[a][1];t.rotation=-Math.atan2(h,u)-Math.PI/2,this._lastFrame=a,this._lastFramePercent=e,t.ignore=!1}},a.inherits(n,r),t.exports=n},function(t,e,i){function n(t){return r.isArray(t)||(t=[+t,+t]),t}function o(t,e){t.eachChild(function(t){t.attr({z:e.z,zlevel:e.zlevel,style:{stroke:"stroke"===e.brushType?e.color:null,fill:"fill"===e.brushType?e.color:null}})})}function a(t,e){c.call(this);var i=new h(t,e),n=new c;this.add(i),this.add(n),n.beforeUpdate=function(){this.attr(i.getScale())},this.updateData(t,e)}var r=i(1),s=i(24),l=i(3),u=i(4),h=i(54),c=l.Group,d=3,f=a.prototype;f.stopEffectAnimation=function(){this.childAt(1).removeAll()},f.startEffectAnimation=function(t){for(var e=t.symbolType,i=t.color,n=this.childAt(1),a=0;a<d;a++){var r=s.createSymbol(e,-1,-1,2,2,i);r.attr({style:{strokeNoScale:!0},z2:99,silent:!0,scale:[.5,.5]});var l=-a/d*t.period+t.effectOffset;r.animate("",!0).when(t.period,{scale:[t.rippleScale/2,t.rippleScale/2]}).delay(l).start(),r.animateStyle(!0).when(t.period,{opacity:0}).delay(l).start(),n.add(r)}o(n,t)},f.updateEffectAnimation=function(t){for(var e=this._effectCfg,i=this.childAt(1),n=["symbolType","period","rippleScale"],a=0;a<n;a++){var r=n[a];if(e[r]!==t[r])return this.stopEffectAnimation(),void this.startEffectAnimation(t)}o(i,t)},f.highlight=function(){this.trigger("emphasis")},f.downplay=function(){this.trigger("normal")},f.updateData=function(t,e){var i=t.hostModel;this.childAt(0).updateData(t,e);var o=this.childAt(1),a=t.getItemModel(e),r=t.getItemVisual(e,"symbol"),s=n(t.getItemVisual(e,"symbolSize")),l=t.getItemVisual(e,"color");o.attr("scale",s),o.traverse(function(t){t.attr({fill:l})});var h=a.getShallow("symbolOffset");if(h){var c=o.position;c[0]=u.parsePercent(h[0],s[0]),c[1]=u.parsePercent(h[1],s[1])}o.rotation=(a.getShallow("symbolRotate")||0)*Math.PI/180||0;var d={};if(d.showEffectOn=i.get("showEffectOn"),d.rippleScale=a.get("rippleEffect.scale"),d.brushType=a.get("rippleEffect.brushType"),d.period=1e3*a.get("rippleEffect.period"),d.effectOffset=e/t.count(),d.z=a.getShallow("z")||0,d.zlevel=a.getShallow("zlevel")||0,d.symbolType=r,d.color=l,this.off("mouseover").off("mouseout").off("emphasis").off("normal"),"render"===d.showEffectOn)this._effectCfg?this.updateEffectAnimation(d):this.startEffectAnimation(d),this._effectCfg=d;else{this._effectCfg=null,this.stopEffectAnimation();var f=this.childAt(0),p=function(){f.trigger("emphasis"),"render"!==d.showEffectOn&&this.startEffectAnimation(d)},g=function(){f.trigger("normal"),"render"!==d.showEffectOn&&this.stopEffectAnimation()};this.on("mouseover",p,this).on("mouseout",g,this).on("emphasis",p,this).on("normal",g,this)}this._effectCfg=d},f.fadeOut=function(t){this.off("mouseover").off("mouseout").off("emphasis").off("normal"),t&&t()},r.inherits(a,c),t.exports=a},function(t,e,i){function n(){this.group=new o.Group,this._lineEl=new s}var o=i(3),a=i(99),r=i(98),s=o.extendShape({shape:{polyline:!1,segs:[]},buildPath:function(t,e){for(var i=e.segs,n=e.polyline,o=0;o<i.length;o++){var a=i[o];if(n){t.moveTo(a[0][0],a[0][1]);for(var r=1;r<a.length;r++)t.lineTo(a[r][0],a[r][1])}else t.moveTo(a[0][0],a[0][1]),a.length>2?t.quadraticCurveTo(a[2][0],a[2][1],a[1][0],a[1][1]):t.lineTo(a[1][0],a[1][1])}},findDataIndex:function(t,e){for(var i=this.shape,n=i.segs,o=i.polyline,s=Math.max(this.style.lineWidth,1),l=0;l<n.length;l++){var u=n[l];if(o){for(var h=1;h<u.length;h++)if(r.containStroke(u[h-1][0],u[h-1][1],u[h][0],u[h][1],s,t,e))return l}else if(u.length>2){if(a.containStroke(u[0][0],u[0][1],u[2][0],u[2][1],u[1][0],u[1][1],s,t,e))return l}else if(r.containStroke(u[0][0],u[0][1],u[1][0],u[1][1],s,t,e))return l}return-1}}),l=n.prototype;l.updateData=function(t){this.group.removeAll();var e=this._lineEl,i=t.hostModel;e.setShape({segs:t.mapArray(t.getItemLayout),polyline:i.get("polyline")}),e.useStyle(i.getModel("lineStyle.normal").getLineStyle());var n=t.getVisual("color");n&&e.setStyle("stroke",n),e.setStyle("fill"),e.seriesIndex=i.seriesIndex,e.on("mousemove",function(t){e.dataIndex=null;var i=e.findDataIndex(t.offsetX,t.offsetY);i>0&&(e.dataIndex=i)}),this.group.add(e)},l.updateLayout=function(t){var e=t.getData();this._lineEl.setShape({segs:e.mapArray(e.getItemLayout)})},l.remove=function(){this.group.removeAll()},t.exports=n},function(t,e,i){function n(t,e,i,n){l.Group.call(this),this.bodyIndex,this.whiskerIndex,this.styleUpdater=i,this._createContent(t,e,n),this.updateData(t,e,n),this._seriesModel}function o(t,e,i){return s.map(t,function(t){return t=t.slice(),t[e]=i.initBaseline,t})}function a(t){var e={};return s.each(t,function(t,i){e["ends"+i]=t}),e}function r(t){this.group=new l.Group,this.styleUpdater=t}var s=i(1),l=i(3),u=i(8),h=u.extend({type:"whiskerInBox",shape:{},buildPath:function(t,e){for(var i in e)if(e.hasOwnProperty(i)&&0===i.indexOf("ends")){var n=e[i];t.moveTo(n[0][0],n[0][1]),t.lineTo(n[1][0],n[1][1])}}}),c=n.prototype;c._createContent=function(t,e,i){var n=t.getItemLayout(e),r="horizontal"===n.chartLayout?1:0,u=0;this.add(new l.Polygon({shape:{points:i?o(n.bodyEnds,r,n):n.bodyEnds},style:{strokeNoScale:!0},z2:100})),this.bodyIndex=u++;var c=s.map(n.whiskerEnds,function(t){return i?o(t,r,n):t});this.add(new h({shape:a(c),style:{strokeNoScale:!0},z2:100})),this.whiskerIndex=u++},c.updateData=function(t,e,i){var n=this._seriesModel=t.hostModel,o=t.getItemLayout(e),r=l[i?"initProps":"updateProps"];r(this.childAt(this.bodyIndex),{shape:{points:o.bodyEnds}},n,e),r(this.childAt(this.whiskerIndex),{shape:a(o.whiskerEnds)},n,e),this.styleUpdater.call(null,this,t,e)},s.inherits(n,l.Group);var d=r.prototype;d.updateData=function(t){var e=this.group,i=this._data,o=this.styleUpdater;t.diff(i).add(function(i){if(t.hasValue(i)){var a=new n(t,i,o,(!0));t.setItemGraphicEl(i,a),e.add(a)}}).update(function(a,r){var s=i.getItemGraphicEl(r);return t.hasValue(a)?(s?s.updateData(t,a):s=new n(t,a,o),e.add(s),void t.setItemGraphicEl(a,s)):void e.remove(s)}).remove(function(t){var n=i.getItemGraphicEl(t);n&&e.remove(n)}).execute(),this._data=t},d.remove=function(){var t=this.group,e=this._data;this._data=null,e&&e.eachItemGraphicEl(function(e){e&&t.remove(e)})},t.exports=r},function(t,e,i){i(311),i(312);var n=i(2);n.registerLayout(i(313)),n.registerVisual(i(314))},function(t,e,i){"use strict";function n(t){var e=t.data;e&&e[0]&&e[0][0]&&e[0][0].coord&&(t.data=r.map(e,function(t){var e=[t[0].coord,t[1].coord],i={coords:e};return t[0].name&&(i.fromName=t[0].name),t[1].name&&(i.toName=t[1].name),r.mergeAll([i,t[0],t[1]])}))}var o=i(18),a=i(14),r=i(1),s=i(7),l=(i(26),o.extend({type:"series.lines",dependencies:["grid","polar"],visualColorAccessPath:"lineStyle.normal.color",init:function(t){n(t),l.superApply(this,"init",arguments)},mergeOption:function(t){n(t),l.superApply(this,"mergeOption",arguments)},getInitialData:function(t,e){var i=new a(["value"],this);return i.hasItemOption=!1,i.initData(t.data,[],function(t,e,n,o){if(t instanceof Array)return NaN;i.hasItemOption=!0;var a=t.value;return null!=a?a instanceof Array?a[o]:a:void 0}),i},formatTooltip:function(t){var e=this.getData(),i=e.getItemModel(t),n=i.get("name");if(n)return n;var o=i.get("fromName"),a=i.get("toName"),r=[];return null!=o&&r.push(o),null!=a&&r.push(a),s.encodeHTML(r.join(" > "))},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,label:{normal:{show:!1,position:"end"}},lineStyle:{normal:{opacity:.5}}}}))},function(t,e,i){var n=i(109),o=i(242),a=i(108),r=i(243),s=i(306),l=i(308);i(2).extendChartView({type:"lines",init:function(){},render:function(t,e,i){var u=t.getData(),h=this._lineDraw,c=t.get("effect.show"),d=t.get("polyline"),f=t.get("large")&&u.count()>=t.get("largeThreshold");c===this._hasEffet&&d===this._isPolyline&&f===this._isLarge||(h&&h.remove(),h=this._lineDraw=f?new l:new n(d?c?s:r:c?o:a),this._hasEffet=c,this._isPolyline=d,this._isLarge=f);var p=t.get("zlevel"),g=t.get("effect.trailLength"),m=i.getZr();if(m.painter.getLayer(p).clear(!0),null!=this._lastZlevel&&m.configLayer(this._lastZlevel,{motionBlur:!1}),c&&g){m.configLayer(p,{motionBlur:!0,lastFrameAlpha:Math.max(Math.min(g/10+.9,1),0)})}this.group.add(h.group),h.updateData(u),this._lastZlevel=p},updateLayout:function(t,e,i){this._lineDraw.updateLayout(t);var n=i.getZr();n.painter.getLayer(this._lastZlevel).clear(!0)},remove:function(t,e){this._lineDraw&&this._lineDraw.remove(e,!0)},dispose:function(){}})},function(t,e,i){t.exports=function(t){t.eachSeriesByType("lines",function(t){var e=t.coordinateSystem,i=t.getData();i.each(function(n){var o=i.getItemModel(n),a=o.option instanceof Array?o.option:o.get("coords"),r=[];if(t.get("polyline"))for(var s=0;s<a.length;s++)r.push(e.dataToPoint(a[s]));else{r[0]=e.dataToPoint(a[0]),r[1]=e.dataToPoint(a[1]);var l=o.get("lineStyle.normal.curveness");+l&&(r[2]=[(r[0][0]+r[1][0])/2-(r[0][1]-r[1][1])*l,(r[0][1]+r[1][1])/2-(r[1][0]-r[0][0])*l])}i.setItemLayout(n,r)})})}},function(t,e){function i(t){return t instanceof Array||(t=[t,t]),t}t.exports=function(t){t.eachSeriesByType("lines",function(t){var e=t.getData(),n=i(t.get("symbol")),o=i(t.get("symbolSize")),a="lineStyle.normal.opacity".split(".");e.setVisual("fromSymbol",n&&n[0]),e.setVisual("toSymbol",n&&n[1]),e.setVisual("fromSymbolSize",o&&o[0]),e.setVisual("toSymbolSize",o&&o[1]),e.setVisual("opacity",t.get(a)),e.each(function(t){var n=e.getItemModel(t),o=i(n.getShallow("symbol",!0)),r=i(n.getShallow("symbolSize",!0)),s=n.get(a);o[0]&&e.setItemVisual(t,"fromSymbol",o[0]),o[1]&&e.setItemVisual(t,"toSymbol",o[1]),r[0]&&e.setItemVisual(t,"fromSymbolSize",r[0]),r[1]&&e.setItemVisual(t,"toSymbolSize",r[1]),e.setItemVisual(t,"opacity",s)})})}},function(t,e,i){var n=i(2),o=n.PRIORITY;i(316),i(317),i(237),i(187),n.registerLayout(i(320)),n.registerVisual(i(321)),n.registerProcessor(o.PROCESSOR.STATISTIC,i(319)),n.registerPreprocessor(i(318)),i(88)("map",[{type:"mapToggleSelect",event:"mapselectchanged",method:"toggleSelected"},{type:"mapSelect",event:"mapselected",method:"select"},{type:"mapUnSelect",event:"mapunselected",method:"unSelect"}])},function(t,e,i){var n=i(14),o=i(18),a=i(1),r=i(25),s=i(7),l=s.encodeHTML,u=s.addCommas,h=i(78),c=i(187),d=o.extend({type:"series.map",dependencies:["geo"],layoutMode:"box",needsDrawMap:!1,seriesGroup:[],init:function(t){t=this._fillOption(t,this.getMapType()),this.option=t,d.superApply(this,"init",arguments),this.updateSelectedMap(t.data)},getInitialData:function(t){var e=r(["value"],t.data||[]),i=new n(e,this);return i.initData(t.data),i},mergeOption:function(t){t.data&&(t=this._fillOption(t,this.getMapType())),d.superCall(this,"mergeOption",t),this.updateSelectedMap(this.option.data)},getHostGeoModel:function(){var t=this.option.geoIndex;return null!=t?this.dependentModels.geo[t]:null},getMapType:function(){return(this.getHostGeoModel()||this).option.map},_fillOption:function(t,e){return t=a.extend({},t),t.data=c.getFilledRegions(t.data,e),t},getRawValue:function(t){return this.getData().get("value",t)},getRegionModel:function(t){var e=this.getData();return e.getItemModel(e.indexOfName(t))},formatTooltip:function(t){for(var e=this.getData(),i=u(this.getRawValue(t)),n=e.getName(t),o=this.seriesGroup,a=[],r=0;r<o.length;r++){var s=o[r].originalData.indexOfName(n);isNaN(o[r].originalData.get("value",s))||a.push(l(o[r].name))}return a.join(", ")+"<br />"+l(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:{normal:{show:!1,textStyle:{color:"#000"}},emphasis:{show:!0,textStyle:{color:"rgb(100,0,0)"}}},itemStyle:{normal:{borderWidth:.5,borderColor:"#444",areaColor:"#eee"},emphasis:{areaColor:"rgba(255,215,0,0.8)"}}}});a.mixin(d,h),t.exports=d},function(t,e,i){var n=i(3),o=i(247);i(2).extendChartView({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){var r=this._mapDraw;r&&a.add(r.group)}else if(t.needsDrawMap){var r=this._mapDraw||new o(i,(!0));a.add(r.group),r.draw(t,e,i,this,n),this._mapDraw=r}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(t,e,i){var o=t.originalData,a=this.group;o.each("value",function(e,i){if(!isNaN(e)){var r=o.getItemLayout(i);if(r&&r.point){var s=r.point,l=r.offset,u=new n.Circle({style:{fill:t.getData().getVisual("color")},shape:{cx:s[0]+9*l,cy:s[1],r:3},silent:!0,z2:10});if(!l){var h=t.mainSeries.getData(),c=o.getName(i),d=c,f=h.indexOfName(c),p=o.getItemModel(i),g=p.getModel("label.normal"),m=p.getModel("label.emphasis"),v=g.getModel("textStyle"),y=m.getModel("textStyle"),x=h.getItemGraphicEl(f);u.setStyle({textPosition:"bottom"});var _=function(){u.setStyle({text:m.get("show")?d:"",textFill:y.getTextColor(),textFont:y.getFont()})},b=function(){u.setStyle({text:g.get("show")?d:"",textFill:v.getTextColor(),textFont:v.getFont()})};x.on("mouseover",_).on("mouseout",b).on("emphasis",_).on("normal",b),b()}a.add(u)}}})}})},function(t,e,i){var n=i(1);t.exports=function(t){var e=[];n.each(t.series,function(t){"map"===t.type&&e.push(t)}),n.each(e,function(t){t.map=t.map||t.mapType,n.defaults(t,t.mapLocation)})}},function(t,e,i){function n(t,e){var i={},n=["value"];return o.each(t,function(t){t.each(n,function(e,n){var o=t.getName(n);i[o]=i[o]||[],isNaN(e)||i[o].push(e)})}),t[0].map(n,function(n,o){for(var a=t[0].getName(o),r=0,s=1/0,l=-(1/0),u=i[a].length,h=0;h<u;h++)s=Math.min(s,i[a][h]),l=Math.max(l,i[a][h]),r+=i[a][h];var c;return c="min"===e?s:"max"===e?l:"average"===e?r/u:r,0===u?NaN:c})}var o=i(1);t.exports=function(t){var e={};t.eachSeriesByType("map",function(t){var i=t.getHostGeoModel(),n=i?"o"+i.id:"i"+t.getMapType();(e[n]=e[n]||[]).push(t)}),o.each(e,function(t,e){for(var i=n(o.map(t,function(t){return t.getData()}),t[0].get("mapValueCalculation")),a=0;a<t.length;a++)t[a].originalData=t[a].getData();for(var a=0;a<t.length;a++)t[a].seriesGroup=t,t[a].needsDrawMap=0===a&&!t[a].getHostGeoModel(),t[a].setData(i.cloneShallow()),t[a].mainSeries=t[0]})}},function(t,e,i){var n=i(1);t.exports=function(t){var e={};t.eachSeriesByType("map",function(i){var o=i.getMapType();if(!i.getHostGeoModel()&&!e[o]){var a={};n.each(i.seriesGroup,function(e){var i=e.coordinateSystem,n=e.originalData;e.get("showLegendSymbol")&&t.getComponent("legend")&&n.each("value",function(t,e){var o=n.getName(e),r=i.getRegion(o);if(r&&!isNaN(t)){var s=a[o]||0,l=i.dataToPoint(r.center);a[o]=s+1,n.setItemLayout(e,{point:l,offset:s})}})});var r=i.getData();r.each(function(t){var e=r.getName(t),i=r.getItemLayout(t)||{};i.showLabel=!a[e],r.setItemLayout(t,i)}),e[o]=!0}})}},function(t,e){t.exports=function(t){t.eachSeriesByType("map",function(t){var e=t.get("color"),i=t.getModel("itemStyle.normal"),n=i.get("areaColor"),o=i.get("color")||e[t.seriesIndex%e.length];t.getData().setVisual({areaColor:n,color:o})})}},function(t,e,i){var n=i(2);i(248),i(323),i(324),n.registerVisual(i(325))},function(t,e,i){function n(t,e,i){var n=t.get("data"),a=o(e);n&&n.length&&s.each(i,function(t){if(t){var e=s.indexOf(n,t[a]);t[a]=e>=0?e:NaN}})}function o(t){return+t.replace("dim","")}function a(t,e){var i=0;s.each(t,function(t){var e=o(t);e>i&&(i=e)});var n=e[0];n&&n.length-1>i&&(i=n.length-1);for(var a=[],r=0;r<=i;r++)a.push("dim"+r);return a}var r=i(14),s=i(1),l=i(18),u=i(25);t.exports=l.extend({type:"series.parallel",dependencies:["parallel"],getInitialData:function(t,e){var i=e.getComponent("parallel",this.get("parallelIndex")),o=i.parallelAxisIndex,l=t.data,h=i.dimensions,c=a(h,l),d=s.map(c,function(t,i){var a=s.indexOf(h,t),r=a>=0&&e.getComponent("parallelAxis",o[a]);return r&&"category"===r.get("type")?(n(r,t,l),{name:t,type:"ordinal"}):a<0&&u.guessOrdinal(l,i)?{name:t,type:"ordinal"}:t}),f=new r(d,this);return f.initData(l),this.option.progressive&&(this.option.animation=!1),f},getRawIndicesByActiveState:function(t){var e=this.coordinateSystem,i=this.getData(),n=[];return e.eachActiveState(i,function(e,o){t===e&&n.push(i.getRawIndex(o))}),n},defaultOption:{zlevel:0,z:2,coordinateSystem:"parallel",parallelIndex:0,label:{normal:{show:!1},emphasis:{show:!1}},inactiveOpacity:.05,activeOpacity:1,lineStyle:{normal:{width:1,opacity:.45,type:"solid"}},progressive:!1,smooth:!1,animationEasing:"linear"}})},function(t,e,i){function n(t,e,i){var n=t.model,o=t.getRect(),a=new l.Rect({shape:{x:o.x,y:o.y,width:o.width,height:o.height}}),r="horizontal"===n.get("layout")?"width":"height";return a.setShape(r,0),l.initProps(a,{shape:{width:o.width,height:o.height}},e,i),a}function o(t,e,i,n){for(var o=[],a=0;a<i.length;a++){var r=i[a],l=t.get(r,e);s(l,n.getAxis(r).type)||o.push(n.dataToPoint(l,r))}return o}function a(t,e,i,n,a){var r=o(t,i,n,a),s=new l.Polyline({shape:{points:r},silent:!0,z2:10});e.add(s),t.setItemGraphicEl(i,s)}function r(t,e){var i=t.hostModel.getModel("lineStyle.normal"),n=i.getLineStyle();t.eachItemGraphicEl(function(o,a){if(t.hasItemOption){var r=t.getItemModel(a),s=r.getModel("lineStyle.normal",i);n=s.getLineStyle()}o.useStyle(u.extend(n,{fill:null,stroke:t.getItemVisual(a,"color"),opacity:t.getItemVisual(a,"opacity")})),o.shape.smooth=e})}function s(t,e){return"category"===e?null==t:null==t||isNaN(t)}var l=i(3),u=i(1),h=.3,c=i(29).extend({type:"parallel",init:function(){this._dataGroup=new l.Group,this.group.add(this._dataGroup),this._data},render:function(t,e,i,n){this._renderForNormal(t)},dispose:function(){},_renderForNormal:function(t){function e(t){a(c,u,t,p,f,null,m)}function i(e,i){var n=d.getItemGraphicEl(i),a=o(c,e,p,f);c.setItemGraphicEl(e,n),l.updateProps(n,{shape:{points:a}},t,e)}function s(t){var e=d.getItemGraphicEl(t);u.remove(e)}var u=this._dataGroup,c=t.getData(),d=this._data,f=t.coordinateSystem,p=f.dimensions,g=t.option,m=g.smooth?h:null;if(c.diff(d).add(e).update(i).remove(s).execute(),r(c,m),!this._data){var v=n(f,t,function(){setTimeout(function(){u.removeClipPath()})});u.setClipPath(v)}this._data=c},remove:function(){this._dataGroup&&this._dataGroup.removeAll(),this._data=null}});t.exports=c},function(t,e){t.exports=function(t){t.eachSeriesByType("parallel",function(e){var i=e.getModel("itemStyle.normal"),n=e.getModel("lineStyle.normal"),o=t.get("color"),a=n.get("color")||i.get("color")||o[e.seriesIndex%o.length],r=e.get("inactiveOpacity"),s=e.get("activeOpacity"),l=e.getModel("lineStyle.normal").getLineStyle(),u=e.coordinateSystem,h=e.getData(),c={normal:l.opacity,active:s,inactive:r};u.eachActiveState(h,function(t,e){h.setItemVisual(e,"opacity",c[t])}),h.setVisual("color",a)})}},function(t,e,i){var n=i(1);i(56),i(265),i(266);var o=i(97),a=i(2);a.registerLayout(n.curry(o,"pictorialBar")),a.registerVisual(n.curry(i(50),"pictorialBar","roundRect",null)),i(38)},function(t,e,i){var n=i(1),o=i(2);i(369),i(328),i(329),o.registerVisual(n.curry(i(83),"radar")),o.registerVisual(n.curry(i(50),"radar","circle",null)),o.registerLayout(i(331)),o.registerProcessor(n.curry(i(63),"radar")),o.registerPreprocessor(i(330))},function(t,e,i){"use strict";var n=i(18),o=i(14),a=i(25),r=i(1),s=i(7).encodeHTML,l=n.extend({type:"series.radar",dependencies:["radar"],init:function(t){l.superApply(this,"init",arguments),this.legendDataProvider=function(){return this.getRawData()}},getInitialData:function(t,e){var i=t.data||[],n=a([],i,{extraPrefix:"indicator_"}),r=new o(n,this);return r.initData(i),r},formatTooltip:function(t){var e=this.getRawValue(t),i=this.coordinateSystem,n=i.getIndicatorAxes(),o=this.getData().getName(t);return s(""===o?this.name:o)+"<br/>"+r.map(n,function(t,i){return s(t.name+" : "+e[i])}).join("<br />")},defaultOption:{zlevel:0,z:2,coordinateSystem:"radar",legendHoverLink:!0,radarIndex:0,lineStyle:{normal:{width:2,type:"solid"}},label:{normal:{position:"top"}},symbol:"emptyCircle",symbolSize:4}});t.exports=l},function(t,e,i){function n(t){return a.isArray(t)||(t=[+t,+t]),t}var o=i(3),a=i(1),r=i(24);t.exports=i(2).extendChartView({type:"radar",render:function(t,e,i){function s(t,e){var i=t.getItemVisual(e,"symbol")||"circle",o=t.getItemVisual(e,"color");if("none"!==i){var a=r.createSymbol(i,-.5,-.5,1,1,o);return a.attr({style:{strokeNoScale:!0},z2:100,scale:n(t.getItemVisual(e,"symbolSize"))}),a}}function l(e,i,n,a,r,l){n.removeAll();for(var u=0;u<i.length-1;u++){var h=s(a,r);h&&(h.__dimIdx=u,e[u]?(h.attr("position",e[u]),o[l?"initProps":"updateProps"](h,{position:i[u]},t,r)):h.attr("position",i[u]),n.add(h))}}function u(t){return a.map(t,function(t){return[h.cx,h.cy]})}var h=t.coordinateSystem,c=this.group,d=t.getData(),f=this._data;d.diff(f).add(function(e){var i=d.getItemLayout(e);if(i){var n=new o.Polygon,a=new o.Polyline,r={shape:{points:i}};n.shape.points=u(i),a.shape.points=u(i),o.initProps(n,r,t,e),o.initProps(a,r,t,e);var s=new o.Group,h=new o.Group;s.add(a),s.add(n),s.add(h),l(a.shape.points,i,h,d,e,!0),d.setItemGraphicEl(e,s)}}).update(function(e,i){var n=f.getItemGraphicEl(i),a=n.childAt(0),r=n.childAt(1),s=n.childAt(2),u={shape:{points:d.getItemLayout(e)}};u.shape.points&&(l(a.shape.points,u.shape.points,s,d,e,!1),o.updateProps(a,u,t),o.updateProps(r,u,t),d.setItemGraphicEl(e,n))}).remove(function(t){c.remove(f.getItemGraphicEl(t))}).execute(),d.eachItemGraphicEl(function(e,i){function n(){u.attr("ignore",v)}function r(){u.attr("ignore",m)}var s=d.getItemModel(i),l=e.childAt(0),u=e.childAt(1),h=e.childAt(2),f=d.getItemVisual(i,"color");c.add(e),l.useStyle(a.defaults(s.getModel("lineStyle.normal").getLineStyle(),{fill:"none",stroke:f})),l.hoverStyle=s.getModel("lineStyle.emphasis").getLineStyle();var p=s.getModel("areaStyle.normal"),g=s.getModel("areaStyle.emphasis"),m=p.isEmpty()&&p.parentModel.isEmpty(),v=g.isEmpty()&&g.parentModel.isEmpty();v=v&&m,u.ignore=m,u.useStyle(a.defaults(p.getAreaStyle(),{fill:f,opacity:.7})),u.hoverStyle=g.getAreaStyle();var y=s.getModel("itemStyle.normal").getItemStyle(["color"]),x=s.getModel("itemStyle.emphasis").getItemStyle(),_=s.getModel("label.normal"),b=s.getModel("label.emphasis");h.eachChild(function(e){e.setStyle(y),e.hoverStyle=a.clone(x);var n=d.get(d.dimensions[e.__dimIdx],i);o.setText(e.style,_,f),e.setStyle({text:_.get("show")?a.retrieve(t.getFormattedLabel(i,"normal",null,e.__dimIdx),n):""}),o.setText(e.hoverStyle,b,f),e.hoverStyle.text=b.get("show")?a.retrieve(t.getFormattedLabel(i,"emphasis",null,e.__dimIdx),n):""}),e.off("mouseover").off("mouseout").off("normal").off("emphasis"),e.on("emphasis",n).on("mouseover",n).on("normal",r).on("mouseout",r),o.setHoverStyle(e)}),this._data=d},remove:function(){this.group.removeAll(),this._data=null},dispose:function(){}})},function(t,e,i){var n=i(1);t.exports=function(t){var e=t.polar;if(e){n.isArray(e)||(e=[e]);var i=[];n.each(e,function(e,o){e.indicator?(e.type&&!e.shape&&(e.shape=e.type),t.radar=t.radar||[],n.isArray(t.radar)||(t.radar=[t.radar]),t.radar.push(e)):i.push(e)}),t.polar=i}n.each(t.series,function(t){"radar"===t.type&&t.polarIndex&&(t.radarIndex=t.polarIndex)})}},function(t,e){t.exports=function(t){t.eachSeriesByType("radar",function(t){function e(t,e){n[e]=n[e]||[],n[e][a]=o.dataToPoint(t,a)}var i=t.getData(),n=[],o=t.coordinateSystem;if(o){for(var a=0;a<o.getIndicatorAxes().length;a++){var r=i.dimensions[a];i.each(r,e)}i.each(function(t){n[t][0]&&n[t].push(n[t][0].slice()),i.setItemLayout(t,n[t])})}})}},function(t,e,i){var n=i(2);i(333),i(334),n.registerLayout(i(335)),n.registerVisual(i(336))},function(t,e,i){var n=i(18),o=i(244),a=i(7).encodeHTML,r=n.extend({type:"series.sankey",layoutInfo:null,getInitialData:function(t){var e=t.edges||t.links,i=t.data||t.nodes;if(i&&e){var n=o(i,e,this,!0);return n.data}},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),o=n.data,s=o.source+" -- "+o.target;return n.value&&(s+=" : "+n.value),a(s)}return r.superCall(this,"formatTooltip",t,e)},defaultOption:{zlevel:0,z:2,coordinateSystem:"view",layout:null,left:"5%",top:"5%",right:"20%",bottom:"5%",nodeWidth:20,nodeGap:8,layoutIterations:32,label:{normal:{show:!0,position:"right",textStyle:{color:"#000",fontSize:12}},emphasis:{show:!0}},itemStyle:{normal:{borderWidth:1,borderColor:"#333"}},lineStyle:{normal:{color:"#314656",opacity:.2,curveness:.5},emphasis:{opacity:.6}},animationEasing:"linear",animationDuration:1e3}});t.exports=r},function(t,e,i){function n(t,e,i){var n=new o.Rect({shape:{x:t.x-10,y:t.y-10,width:0,height:t.height+20}});return o.initProps(n,{shape:{width:t.width+20,height:t.height+20}},e,i),n}var o=i(3),a=i(1),r=o.extendShape({shape:{x1:0,y1:0,x2:0,y2:0,cpx1:0,cpy1:0,cpx2:0,cpy2:0,extent:0},buildPath:function(t,e){var i=e.extent/2;t.moveTo(e.x1,e.y1-i),t.bezierCurveTo(e.cpx1,e.cpy1-i,e.cpx2,e.cpy2-i,e.x2,e.y2-i),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()}});t.exports=i(2).extendChartView({type:"sankey",_model:null,render:function(t,e,i){var s=t.getGraph(),l=this.group,u=t.layoutInfo,h=t.getData(),c=t.getData("edge");this._model=t,l.removeAll(),l.position=[u.x,u.y],s.eachEdge(function(e){var i=new r;i.dataIndex=e.dataIndex,i.seriesIndex=t.seriesIndex,i.dataType="edge";var n=e.getModel("lineStyle.normal"),a=n.get("curveness"),s=e.node1.getLayout(),u=e.node2.getLayout(),h=e.getLayout();i.shape.extent=Math.max(1,h.dy);var d=s.x+s.dx,f=s.y+h.sy+h.dy/2,p=u.x,g=u.y+h.ty+h.dy/2,m=d*(1-a)+p*a,v=f,y=d*a+p*(1-a),x=g;switch(i.setShape({x1:d,y1:f,x2:p,y2:g,cpx1:m,cpy1:v,cpx2:y,cpy2:x}),i.setStyle(n.getItemStyle()),i.style.fill){case"source":i.style.fill=e.node1.getVisual("color");break;case"target":i.style.fill=e.node2.getVisual("color")}o.setHoverStyle(i,e.getModel("lineStyle.emphasis").getItemStyle()),l.add(i),c.setItemGraphicEl(e.dataIndex,i)}),s.eachNode(function(e){var i=e.getLayout(),n=e.getModel(),r=n.getModel("label.normal"),s=r.getModel("textStyle"),u=n.getModel("label.emphasis"),c=u.getModel("textStyle"),d=new o.Rect({shape:{x:i.x,y:i.y,width:e.getLayout().dx,height:e.getLayout().dy},style:{text:r.get("show")?t.getFormattedLabel(e.dataIndex,"normal")||e.id:"",textFont:s.getFont(),textFill:s.getTextColor(),textPosition:r.get("position")}});d.setStyle(a.defaults({fill:e.getVisual("color")},n.getModel("itemStyle.normal").getItemStyle())),
+o.setHoverStyle(d,a.extend(e.getModel("itemStyle.emphasis"),{text:u.get("show")?t.getFormattedLabel(e.dataIndex,"emphasis")||e.id:"",textFont:c.getFont(),textFill:c.getTextColor(),textPosition:u.get("position")})),l.add(d),h.setItemGraphicEl(e.dataIndex,d),d.dataType="node"}),!this._data&&t.get("animation")&&l.setClipPath(n(l.getBoundingRect(),t,function(){l.removeClipPath()})),this._data=t.getData()},dispose:function(){}})},function(t,e,i){function n(t,e){return M.getLayoutRect(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}function o(t,e,i,n,o,a,s){r(t,i,o),u(t,e,a,n,s),m(t)}function a(t){T.each(t,function(t){var e=x(t.outEdges,S),i=x(t.inEdges,S),n=Math.max(e,i);t.setLayout({value:n},!0)})}function r(t,e,i){for(var n=t,o=null,a=0,r=0;n.length;){o=[];for(var u=0,h=n.length;u<h;u++){var c=n[u];c.setLayout({x:a},!0),c.setLayout({dx:e},!0);for(var d=0,f=c.outEdges.length;d<f;d++)o.push(c.outEdges[d].node2)}n=o,++a}s(t,a),r=(i-e)/(a-1),l(t,r)}function s(t,e){T.each(t,function(t){t.outEdges.length||t.setLayout({x:e-1},!0)})}function l(t,e){T.each(t,function(t){var i=t.getLayout().x*e;t.setLayout({x:i},!0)})}function u(t,e,i,n,o){var a=I().key(function(t){return t.getLayout().x}).sortKeys(w).entries(t).map(function(t){return t.values});h(t,a,e,i,n),c(a,n,i);for(var r=1;o>0;o--)r*=.99,d(a,r),c(a,n,i),p(a,r),c(a,n,i)}function h(t,e,i,n,o){var a=[];T.each(e,function(t){var e=t.length,i=0;T.each(t,function(t){i+=t.getLayout().value});var r=(n-(e-1)*o)/i;a.push(r)}),a.sort(function(t,e){return t-e});var r=a[0];T.each(e,function(t){T.each(t,function(t,e){t.setLayout({y:e},!0);var i=t.getLayout().value*r;t.setLayout({dy:i},!0)})}),T.each(i,function(t){var e=+t.getValue()*r;t.setLayout({dy:e},!0)})}function c(t,e,i){T.each(t,function(t){var n,o,a,r=0,s=t.length;for(t.sort(b),a=0;a<s;a++){if(n=t[a],o=r-n.getLayout().y,o>0){var l=n.getLayout().y+o;n.setLayout({y:l},!0)}r=n.getLayout().y+n.getLayout().dy+e}if(o=r-e-i,o>0){var l=n.getLayout().y-o;for(n.setLayout({y:l},!0),r=n.getLayout().y,a=s-2;a>=0;--a)n=t[a],o=n.getLayout().y+n.getLayout().dy+e-r,o>0&&(l=n.getLayout().y-o,n.setLayout({y:l},!0)),r=n.getLayout().y}})}function d(t,e){T.each(t.slice().reverse(),function(t){T.each(t,function(t){if(t.outEdges.length){var i=x(t.outEdges,f)/x(t.outEdges,S),n=t.getLayout().y+(i-_(t))*e;t.setLayout({y:n},!0)}})})}function f(t){return _(t.node2)*t.getValue()}function p(t,e){T.each(t,function(t){T.each(t,function(t){if(t.inEdges.length){var i=x(t.inEdges,g)/x(t.inEdges,S),n=t.getLayout().y+(i-_(t))*e;t.setLayout({y:n},!0)}})})}function g(t){return _(t.node1)*t.getValue()}function m(t){T.each(t,function(t){t.outEdges.sort(v),t.inEdges.sort(y)}),T.each(t,function(t){var e=0,i=0;T.each(t.outEdges,function(t){t.setLayout({sy:e},!0),e+=t.getLayout().dy}),T.each(t.inEdges,function(t){t.setLayout({ty:i},!0),i+=t.getLayout().dy})})}function v(t,e){return t.node2.getLayout().y-e.node2.getLayout().y}function y(t,e){return t.node1.getLayout().y-e.node1.getLayout().y}function x(t,e){for(var i=0,n=t.length,o=-1;++o<n;){var a=+e.call(t,t[o],o);isNaN(a)||(i+=a)}return i}function _(t){return t.getLayout().y+t.getLayout().dy/2}function b(t,e){return t.getLayout().y-e.getLayout().y}function w(t,e){return t<e?-1:t>e?1:t===e?0:NaN}function S(t){return t.getValue()}var M=i(12),I=i(262),T=i(1);t.exports=function(t,e,i){t.eachSeriesByType("sankey",function(t){var i=t.get("nodeWidth"),r=t.get("nodeGap"),s=n(t,e);t.layoutInfo=s;var l=s.width,u=s.height,h=t.getGraph(),c=h.nodes,d=h.edges;a(c);var f=c.filter(function(t){return 0===t.getLayout().value}),p=0!==f.length?0:t.get("layoutIterations");o(c,d,i,r,l,u,p)})}},function(t,e,i){var n=i(82),o=i(1);t.exports=function(t,e){t.eachSeriesByType("sankey",function(t){var e=t.getGraph(),i=e.nodes;i.sort(function(t,e){return t.getLayout().value-e.getLayout().value});var a=i[0].getLayout().value,r=i[i.length-1].getLayout().value;o.each(i,function(e){var i=new n({type:"color",mappingMethod:"linear",dataExtent:[a,r],visual:t.get("color")}),o=i.mapValueToVisual(e.getLayout().value);e.setVisual("color",o);var s=e.getModel(),l=s.get("itemStyle.normal.color");null!=l&&e.setVisual("color",l)})})}},function(t,e,i){var n=i(2),o=i(1);i(249),i(338),i(339),n.registerLayout(i(340)),n.registerVisual(i(341)),n.registerProcessor(o.curry(i(63),"themeRiver"))},function(t,e,i){"use strict";var n=i(25),o=i(18),a=i(14),r=i(1),s=i(7),l=s.encodeHTML,u=i(262),h=2,c=o.extend({type:"series.themeRiver",dependencies:["singleAxis"],nameMap:null,init:function(t){c.superApply(this,"init",arguments),this.legendDataProvider=function(){return this.getRawData()}},fixData:function(t){for(var e=t.length,i=u().key(function(t){return t[2]}).entries(t),n=r.map(i,function(t){return{name:t.key,dataList:t.values}}),o=n.length,a=-1,s=-1,l=0;l<o;++l){var h=n[l].dataList.length;h>a&&(a=h,s=l)}for(var c=0;c<o;++c)if(c!==s)for(var d=n[c].name,f=0;f<a;++f){for(var p=n[s].dataList[f][0],g=n[c].dataList.length,m=-1,v=0;v<g;++v){var y=n[c].dataList[v][0];if(y===p){m=v;break}}m===-1&&(t[e]=[],t[e][0]=p,t[e][1]=0,t[e][2]=d,e++)}return t},getInitialData:function(t,e){var i=[],o=e.queryComponents({mainType:"singleAxis",index:this.get("singleAxisIndex"),id:this.get("singleAxisId")})[0],s=o.get("type");i=[{name:"time",type:"category"===s?"ordinal":"time"===s?"time":"float"},{name:"value",type:"float"},{name:"name",type:"ordinal"}];for(var l=r.filter(t.data,function(t){return void 0!==t[2]}),u=this.fixData(l||[]),c=[],d=this.nameMap={},f=0,p=0;p<u.length;++p)c.push(u[p][h]),d[u[p][h]]||(d[u[p][h]]=f++);n(i,u);var g=new a(i,this);return g.initData(u,c),g},coordDimToDataDim:function(t){return["time"]},getLayerSeries:function(){function t(t,i){return e.get("time",t)-e.get("time",i)}for(var e=this.getData(),i=e.count(),n=[],o=0;o<i;++o)n[o]=o;for(var a=u().key(function(t){return e.get("name",t)}).entries(n),s=r.map(a,function(t){return{name:t.key,indices:t.values}}),l=0;l<s.length;++l)s[l].indices.sort(t);return s},getAxisTooltipData:function(t,e,i){r.isArray(t)||(t=t?[t]:[]);for(var n,o=this.getData(),a=this.getLayerSeries(),s=[],l=a.length,u=0;u<l;++u){for(var h=Number.MAX_VALUE,c=-1,d=a[u].indices.length,f=0;f<d;++f){var p=o.get(t[0],a[u].indices[f]),g=Math.abs(p-e);g<=h&&(n=p,h=g,c=a[u].indices[f])}s.push(c)}return{dataIndices:s,nestestValue:n}},formatTooltip:function(t){var e=this.getData(),i=e.get("name",t),n=e.get("value",t);return(isNaN(n)||null==n)&&(n="-"),l(i+" : "+n)},defaultOption:{zlevel:0,z:2,coordinateSystem:"singleAxis",boundaryGap:["10%","10%"],singleAxisIndex:0,animationEasing:"linear",label:{normal:{margin:4,textAlign:"right",show:!0,position:"left",textStyle:{color:"#000",fontSize:11}},emphasis:{show:!0}}}});t.exports=c},function(t,e,i){(function(e){function n(t,e,i){var n=new a.Rect({shape:{x:t.x-10,y:t.y-10,width:0,height:t.height+20}});return a.initProps(n,{shape:{width:t.width+20,height:t.height+20}},e,i),n}var o=i(91),a=i(3),r=i(1),s=i(48);t.exports=i(2).extendChartView({type:"themeRiver",init:function(){this._layers=[]},render:function(t,e,i){function l(t){return t.name}function u(e,i,s){var l=this._layers;if("remove"===e)return void d.remove(l[i]);for(var u,p=[],g=[],m=f[i].indices,v=0;v<m.length;v++){var x=h.getItemLayout(m[v]),_=x.x,b=x.y0,w=x.y;p.push([_,b]),g.push([_,b+w]),u=c.getItemVisual(m[v],"color")}var S,M,I=h.getItemLayout(m[0]),T=h.getItemModel(m[v-1]),A=T.getModel("label.normal"),L=A.get("margin");if("add"===e){var C=y[i]=new a.Group;S=new o.Polygon({shape:{points:p,stackedOnPoints:g,smooth:.4,stackedOnSmooth:.4,smoothConstraint:!1},z2:0}),M=new a.Text({style:{x:I.x-L,y:I.y0+I.y/2}}),C.add(S),C.add(M),d.add(C),S.setClipPath(n(S.getBoundingRect(),t,function(){S.removeClipPath()}))}else{var C=l[s];S=C.childAt(0),M=C.childAt(1),d.add(C),y[i]=C,a.updateProps(S,{shape:{points:p,stackedOnPoints:g}},t),a.updateProps(M,{style:{x:I.x-L,y:I.y0+I.y/2}},t)}var D=T.getModel("itemStyle.emphasis"),P=T.getModel("itemStyle.normal"),k=A.getModel("textStyle");M.setStyle({text:A.get("show")?t.getFormattedLabel(m[v-1],"normal")||h.getName(m[v-1]):"",textFont:k.getFont(),textAlign:A.get("textAlign"),textVerticalAlign:"middle"}),S.setStyle(r.extend({fill:u},P.getItemStyle(["color"]))),a.setHoverStyle(S,D.getItemStyle())}var h=t.getData(),c=t.getRawData();if(h.count()){var d=this.group,f=t.getLayerSeries(),p=h.getLayout("layoutInfo"),g=p.rect,m=p.boundaryGap;d.attr("position",[0,g.y+m[0]]);var v=new s(this._layersSeries||[],f,l,l),y={};v.add(r.bind(r.curry(u,"add"),this)).update(r.bind(r.curry(u,"update"),this)).remove(r.bind(r.curry(u,"remove"),this)).execute(),this._layersSeries=f,this._layers=y}},dispose:function(){}})}).call(e,i(189))},function(t,e,i){function n(t,e,i){if(t.count())for(var n,r=e.coordinateSystem,s=e.getLayerSeries(),l=a.map(s,function(e){return a.map(e.indices,function(e){var i=r.dataToPoint(t.get("time",e));return i[1]=t.get("value",e),i})}),u=o(l),h=u.y0,c=i/u.max,d=s.length,f=s[0].indices.length,p=0;p<f;++p){n=h[p]*c,t.setItemLayout(s[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,t.setItemLayout(s[g].indices[p],{layerIndex:g,x:l[g][p][0],y0:n,y:l[g][p][1]*c})}}function o(t){for(var e,i=t.length,n=t[0].length,o=[],a=[],r=0,s={},l=0;l<n;++l){for(var u=0,e=0;u<i;++u)e+=t[u][l][1];e>r&&(r=e),o.push(e)}for(var h=0;h<n;++h)a[h]=(r-o[h])/2;r=0;for(var c=0;c<n;++c){var d=o[c]+a[c];d>r&&(r=d)}return s.y0=a,s.max=r,s}var a=i(1),r=i(4);t.exports=function(t,e){t.eachSeriesByType("themeRiver",function(t){var e=t.getData(),i=t.coordinateSystem,o={},a=i.getRect();o.rect=a;var s=t.get("boundaryGap"),l=i.getAxis();if(o.boundaryGap=s,"horizontal"===l.orient){s[0]=r.parsePercent(s[0],a.height),s[1]=r.parsePercent(s[1],a.height);var u=a.height-s[0]-s[1];n(e,t,u)}else{s[0]=r.parsePercent(s[0],a.width),s[1]=r.parsePercent(s[1],a.width);var h=a.width-s[0]-s[1];n(e,t,h)}e.setLayout("layoutInfo",o)})}},function(t,e){t.exports=function(t){t.eachSeriesByType("themeRiver",function(t){var e=t.getData(),i=t.getRawData(),n=t.get("color");e.each(function(o){var a=e.getName(o),r=n[(t.nameMap[a]-1)%n.length];i.setItemVisual(o,"color",r)})})}},function(t,e,i){var n=i(2);i(344),i(345),i(346),n.registerVisual(i(348)),n.registerLayout(i(347))},function(t,e,i){function n(t){this.group=new r.Group,t.add(this.group)}function o(t,e,i,n,o,a){var r=[[o?t:t-d,e],[t+i,e],[t+i,e+n],[o?t:t-d,e+n]];return!a&&r.splice(2,0,[t+i+d,e+n/2]),!o&&r.push([t,e+n/2]),r}function a(t,e,i){t.eventData={componentType:"series",componentSubType:"treemap",seriesIndex:e.componentIndex,seriesName:e.name,seriesType:"treemap",selfType:"breadcrumb",nodeData:{dataIndex:i&&i.dataIndex,name:i&&i.name},treePathInfo:i&&u.wrapTreePathInfo(i,e)}}var r=i(3),s=i(12),l=i(1),u=i(92),h=8,c=8,d=5;n.prototype={constructor:n,render:function(t,e,i,n){var o=t.getModel("breadcrumb"),a=this.group;if(a.removeAll(),o.get("show")&&i){var r=o.getModel("itemStyle.normal"),l=r.getModel("textStyle"),u={pos:{left:o.get("left"),right:o.get("right"),top:o.get("top"),bottom:o.get("bottom")},box:{width:e.getWidth(),height:e.getHeight()},emptyItemWidth:o.get("emptyItemWidth"),totalWidth:0,renderList:[]};this._prepare(i,u,l),this._renderContent(t,u,r,l,n),s.positionElement(a,u.pos,u.box)}},_prepare:function(t,e,i){for(var n=t;n;n=n.parentNode){var o=n.getModel().get("name"),a=i.getTextRect(o),r=Math.max(a.width+2*h,e.emptyItemWidth);e.totalWidth+=r+c,e.renderList.push({node:n,text:o,width:r})}},_renderContent:function(t,e,i,n,u){for(var h=0,d=e.emptyItemWidth,f=t.get("breadcrumb.height"),p=s.getAvailableSize(e.pos,e.box),g=e.totalWidth,m=e.renderList,v=m.length-1;v>=0;v--){var y=m[v],x=y.node,_=y.width,b=y.text;g>p.width&&(g-=_-d,_=d,b="");var w=new r.Polygon({shape:{points:o(h,0,_,f,v===m.length-1,0===v)},style:l.defaults(i.getItemStyle(),{lineJoin:"bevel",text:b,textFill:n.getTextColor(),textFont:n.getFont()}),z:10,onclick:l.curry(u,x)});this.group.add(w),a(w,t,x),h+=_+c}},remove:function(){this.group.removeAll()}},t.exports=n},function(t,e,i){function n(t){var e=0;s.each(t.children,function(t){n(t);var i=t.value;s.isArray(i)&&(i=i[0]),e+=i});var i=t.value;s.isArray(i)&&(i=i[0]),(null==i||isNaN(i))&&(i=e),i<0&&(i=0),s.isArray(t.value)?t.value[0]=i:t.value=i}function o(t,e){var i=e.get("color");if(i){t=t||[];var n;if(s.each(t,function(t){var e=new l(t),i=e.get("color");(e.get("itemStyle.normal.color")||i&&"none"!==i)&&(n=!0)}),!n){var o=t[0]||(t[0]={});o.color=i.slice()}return t}}var a=i(18),r=i(414),s=i(1),l=i(10),u=i(7),h=i(92),c=u.encodeHTML,d=u.addCommas;t.exports=a.extend({type:"series.treemap",layoutMode:"box",dependencies:["grid","polar"],_viewRoot:null,defaultOption:{progressive:0,hoverLayerThreshold:1/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:{normal:{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:{normal:{show:!0,position:"inside",textStyle:{color:"#fff",ellipsis:!0}}},itemStyle:{normal:{color:null,colorAlpha:null,colorSaturation:null,borderWidth:0,gapWidth:0,borderColor:"#fff",borderColorSaturation:null},emphasis:{}},visualDimension:0,visualMin:null,visualMax:null,color:[],colorAlpha:null,colorSaturation:null,colorMappingBy:"index",visibleMin:10,childrenVisibleMin:null,levels:[]},getInitialData:function(t,e){var i=t.name;null==i&&(i=t.name);var a={name:i,children:t.data};n(a);var s=t.levels||[];return s=t.levels=o(s,e),r.createTree(a,this,s).data},optionUpdated:function(){this.resetViewRoot()},formatTooltip:function(t){var e=this.getData(),i=this.getRawValue(t),n=d(s.isArray(i)?i[0]:i),o=e.getName(t);return c(o+": "+n)},getDataParams:function(t){var e=a.prototype.getDataParams.apply(this,arguments),i=this.getData().tree.getNodeByDataIndex(t);return e.treePathInfo=h.wrapTreePathInfo(i,this),e},setLayoutInfo:function(t){this.layoutInfo=this.layoutInfo||{},s.extend(this.layoutInfo,t)},mapIdToIndex:function(t){var e=this._idIndexMap;e||(e=this._idIndexMap={},this._idIndexMapCount=0);var i=e[t];return null==i&&(e[t]=i=this._idIndexMapCount++),i},getViewRoot:function(){return this._viewRoot},resetViewRoot:function(t){t?this._viewRoot=t:t=this._viewRoot;var e=this.getData().tree.root;t&&(t===e||e.contains(t))||(this._viewRoot=e)}})},function(t,e,i){function n(){return{nodeGroup:[],background:[],content:[]}}function o(t,e,i,n,o,l,u,h,c,d){function f(e){R.dataIndex=u.dataIndex,R.seriesIndex=t.seriesIndex;var i=T.borderWidth,n=Math.max(A-2*i,0),o=Math.max(L-2*i,0);R.culling=!0,R.setShape({x:i,y:i,width:n,height:o});var a=u.getVisual("color",!0);p(R,function(){var t={fill:a},e=u.getModel("itemStyle.emphasis").getItemStyle();g(t,e,a,n,o),R.setStyle(t),s.setHoverStyle(R,e)}),e.add(R)}function p(t,e){C?!t.invisible&&l.push(t):(e(),t.__tmWillVisible||(t.invisible=!1))}function g(e,i,n,o,a){var r=u.getModel(),s=r.get("name");if(T.isLeafRoot){var l=t.get("drillDownIcon",!0);s=l?l+" "+s:s}y(s,e,r,_,n,o,a),y(s,i,r,b,n,o,a)}function y(t,e,i,n,o,a,r){var l=i.getModel(n),u=l.getModel("textStyle");s.setText(e,l,o),e.textAlign=u.get("align"),e.textVerticalAlign=u.get("baseline");var h=u.getTextRect(t);!l.getShallow("show")||h.height>r?e.text="":h.width>a?e.text=u.get("ellipsis")?u.truncateText(t,a,null,{minChar:2}):"":e.text=t}function x(t,n,r,s){var l=null!=P&&i[t][P],u=o[t];return l?(i[t][P]=null,w(u,l,t)):C||(l=new n({z:a(r,s)}),l.__tmDepth=r,l.__tmStorageName=t,I(u,l,t)),e[t][D]=l}function w(t,e,i){var n=t[D]={};n.old="nodeGroup"===i?e.position.slice():r.extend({},e.shape)}function I(t,e,i){var a=t[D]={},r=u.parentNode;if(r&&(!n||"drillDown"===n.direction)){var s=0,l=0,h=o.background[r.getRawIndex()];!n&&h&&h.old&&(s=h.old.width,l=h.old.height),a.old="nodeGroup"===i?[0,l]:{x:s,y:l,width:0,height:0}}a.fadein="nodeGroup"!==i}if(u){var T=u.getLayout();if(T&&T.isInView){var A=T.width,L=T.height,C=T.invisible,D=u.getRawIndex(),P=h&&h.getRawIndex(),k=x("nodeGroup",m);if(k){if(c.add(k),k.attr("position",[T.x||0,T.y||0]),k.__tmNodeWidth=A,k.__tmNodeHeight=L,T.isAboveViewRoot)return k;var O=x("background",v,d,S);O&&(O.setShape({x:0,y:0,width:A,height:L}),p(O,function(){O.setStyle("fill",u.getVisual("borderColor",!0))}),k.add(O));var z=u.viewChildren;if(!z||!z.length){var R=x("content",v,d,M);R&&f(k)}return k}}}}function a(t,e){var i=t*w+e;return(i-1)/i}var r=i(1),s=i(3),l=i(48),u=i(92),h=i(343),c=i(94),d=i(11),f=i(19),p=i(415),g=r.bind,m=s.Group,v=s.Rect,y=r.each,x=3,_=["label","normal"],b=["label","emphasis"],w=10,S=1,M=2;t.exports=i(2).extendChartView({type:"treemap",init:function(t,e){this._containerGroup,this._storage=n(),this._oldTree,this._breadcrumb,this._controller,this._state="ready",this._mayClick},render:function(t,e,i,n){var o=e.findComponents({mainType:"series",subType:"treemap",query:n});if(!(r.indexOf(o,t)<0)){this.seriesModel=t,this.api=i,this.ecModel=e;var a=u.retrieveTargetInfo(n,t),s=n&&n.type,l=t.layoutInfo,h=!this._oldTree,c=this._storage,d="treemapRootToNode"===s&&a&&c?{rootNodeGroup:c.nodeGroup[a.node.getRawIndex()],direction:n.direction}:null,f=this._giveContainerGroup(l),p=this._doRender(f,t,d);h||s&&"treemapZoomToNode"!==s&&"treemapRootToNode"!==s?p.renderFinally():this._doAnimation(f,p,t,d),this._resetController(i),this._renderBreadcrumb(t,i,a)}},_giveContainerGroup:function(t){var e=this._containerGroup;return e||(e=this._containerGroup=new m,this._initEvents(e),this.group.add(e)),e.attr("position",[t.x,t.y]),e},_doRender:function(t,e,i){function a(t,e,i,n,o){function s(t){return t.getId()}function u(r,s){var l=null!=r?t[r]:null,u=null!=s?e[s]:null,h=m(l,u,i,o);h&&a(l&&l.viewChildren||[],u&&u.viewChildren||[],h,n,o+1)}n?(e=t,y(t,function(t,e){!t.isRemoved()&&u(e,e)})):new l(e,t,s,s).add(u).update(u).remove(r.curry(u,null)).execute()}function s(t){var e=n();return t&&y(t,function(t,i){var n=e[i];y(t,function(t){t&&(n.push(t),t.__tmWillDelete=1)})}),e}function u(){y(v,function(t){y(t,function(t){t.parent&&t.parent.remove(t)})}),y(g,function(t){t.invisible=!0,t.dirty()})}var h=e.getData().tree,c=this._oldTree,d=n(),f=n(),p=this._storage,g=[],m=r.curry(o,e,f,p,i,d,g);a(h.root?[h.root]:[],c&&c.root?[c.root]:[],t,h===c||!c,0);var v=s(p);return this._oldTree=h,this._storage=f,{lastsForAnimation:d,willDeleteEls:v,renderFinally:u}},_doAnimation:function(t,e,i,n){if(i.get("animation")){var o=i.get("animationDurationUpdate"),a=i.get("animationEasing"),s=p.createWrap();y(e.willDeleteEls,function(t,e){y(t,function(t,i){if(!t.invisible){var r,l=t.parent;if(n&&"drillDown"===n.direction)r=l===n.rootNodeGroup?{shape:{x:0,y:0,width:l.__tmNodeWidth,height:l.__tmNodeHeight},style:{opacity:0}}:{style:{opacity:0}};else{var u=0,h=0;l.__tmWillDelete||(u=l.__tmNodeWidth/2,h=l.__tmNodeHeight/2),r="nodeGroup"===e?{position:[u,h],style:{opacity:0}}:{shape:{x:u,y:h,width:0,height:0},style:{opacity:0}}}r&&s.add(t,r,o,a)}})}),y(this._storage,function(t,i){y(t,function(t,n){var l=e.lastsForAnimation[i][n],u={};l&&("nodeGroup"===i?l.old&&(u.position=t.position.slice(),t.attr("position",l.old)):(l.old&&(u.shape=r.extend({},t.shape),t.setShape(l.old)),l.fadein?(t.setStyle("opacity",0),u.style={opacity:1}):1!==t.style.opacity&&(u.style={opacity:1})),s.add(t,u,o,a))})},this),this._state="animating",s.done(g(function(){this._state="ready",e.renderFinally()},this)).start()}},_resetController:function(t){var e=this._controller;e||(e=this._controller=new c(t.getZr()),e.enable(this.seriesModel.get("roam")),e.on("pan",g(this._onPan,this)),e.on("zoom",g(this._onZoom,this)));var i=new d(0,0,t.getWidth(),t.getHeight());e.setContainsPoint(function(t,e){return i.contain(t,e)})},_clearController:function(){var t=this._controller;t&&(t.dispose(),t=null)},_onPan:function(t,e){if(this._mayClick=!1,"animating"!==this._state&&(Math.abs(t)>x||Math.abs(e)>x)){var i=this.seriesModel.getData().tree.root;if(!i)return;var n=i.getLayout();if(!n)return;this.api.dispatchAction({type:"treemapMove",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:n.x+t,y:n.y+e,width:n.width,height:n.height}})}},_onZoom:function(t,e,i){if(this._mayClick=!1,"animating"!==this._state){var n=this.seriesModel.getData().tree.root;if(!n)return;var o=n.getLayout();if(!o)return;var a=new d(o.x,o.y,o.width,o.height),r=this.seriesModel.layoutInfo;e-=r.x,i-=r.y;var s=f.create();f.translate(s,s,[-e,-i]),f.scale(s,s,[t,t]),f.translate(s,s,[e,i]),a.applyTransform(s),this.api.dispatchAction({type:"treemapRender",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:a.x,y:a.y,width:a.width,height:a.height}})}},_initEvents:function(t){function e(t){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 o=n.hostTree.data.getItemModel(n.dataIndex),a=o.get("link",!0),r=o.get("target",!0)||"blank";a&&window.open(a,r)}}}}t.on("mousedown",function(t){"ready"===this._state&&(this._mayClick=!0)},this),t.on("mouseup",function(t){this._mayClick&&(this._mayClick=!1,"ready"===this._state&&e.call(this,t))},this)},_renderBreadcrumb:function(t,e,i){function n(e){"animating"!==this._state&&(u.aboveViewRoot(t.getViewRoot(),e)?this._rootToNode({node:e}):this._zoomToNode({node:e}))}i||(i=null!=t.get("leafDepth",!0)?{node:t.getViewRoot()}:this.findTarget(e.getWidth()/2,e.getHeight()/2),i||(i={node:t.getData().tree.root})),(this._breadcrumb||(this._breadcrumb=new h(this.group))).render(t,e,i.node,g(n,this))},remove:function(){this._clearController(),this._containerGroup&&this._containerGroup.removeAll(),this._storage=n(),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(t,e){var i,n=this.seriesModel.getViewRoot();return n.eachNode({attr:"viewChildren",order:"preorder"},function(n){var o=this._storage.background[n.getRawIndex()];if(o){var a=o.transformCoordToLocal(t,e),r=o.shape;if(!(r.x<=a[0]&&a[0]<=r.x+r.width&&r.y<=a[1]&&a[1]<=r.y+r.height))return!1;i={node:n,offsetX:a[0],offsetY:a[1]}}},this),i}})},function(t,e,i){for(var n=i(2),o=i(92),a=function(){},r=["treemapZoomToNode","treemapRender","treemapMove"],s=0;s<r.length;s++)n.registerAction({type:r[s],update:"updateView"},a);n.registerAction({type:"treemapRootToNode",update:"updateView"},function(t,e){function i(e,i){var n=o.retrieveTargetInfo(t,e);if(n){var a=e.getViewRoot();a&&(t.direction=o.aboveViewRoot(a,n.node)?"rollUp":"drillDown"),e.resetViewRoot(n.node)}}e.eachComponent({mainType:"series",subType:"treemap",query:t},i)})},function(t,e,i){function n(t,e,i){var n={mainType:"series",subType:"treemap",query:i};t.eachComponent(n,function(t){var n=e.getWidth(),a=e.getHeight(),r=t.option,s=m.getLayoutRect(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()}),l=r.size||[],u=b(w(s.width,l[0]),n),h=b(w(s.height,l[1]),a),g=i&&i.type,x=v.retrieveTargetInfo(i,t),_="treemapRender"===g||"treemapMove"===g?i.rootRect:null,M=t.getViewRoot(),I=v.getPathToRoot(M);if("treemapMove"!==g){var T="treemapZoomToNode"===g?c(t,x,M,u,h):_?[_.width,_.height]:[u,h],A=r.sort;A&&"asc"!==A&&"desc"!==A&&(A="desc");var L={squareRatio:r.squareRatio,sort:A,leafDepth:r.leafDepth};M.hostTree.clearLayouts();var C={x:0,y:0,width:T[0],height:T[1],area:T[0]*T[1]};M.setLayout(C),o(M,L,!1,0);var C=M.getLayout();S(I,function(t,e){var i=(I[e+1]||M).getValue();t.setLayout(p.extend({dataExtent:[i,i],borderWidth:0},C))})}var D=t.getData().tree.root;D.setLayout(d(s,_,x),!0),t.setLayoutInfo(s),f(D,new y((-s.x),(-s.y),n,a),I,M,0)})}function o(t,e,i,n){var r,s;if(!t.isRemoved()){var l=t.getLayout();r=l.width,s=l.height;var c=t.getModel("itemStyle.normal"),d=c.get("borderWidth"),f=c.get("gapWidth")/2,p=d-f,g=t.getModel();t.setLayout({borderWidth:d},!0),r=x(r-2*p,0),s=x(s-2*p,0);var m=r*s,v=a(t,g,m,e,i,n);if(v.length){var y={x:p,y:p,width:r,height:s},b=_(r,s),w=1/0,S=[];S.area=0;for(var M=0,I=v.length;M<I;){var T=v[M];S.push(T),S.area+=T.getLayout().area;var A=u(S,b,e.squareRatio);A<=w?(M++,w=A):(S.area-=S.pop().getLayout().area,h(S,b,y,f,!1),b=_(y.width,y.height),S.length=S.area=0,w=1/0)}if(S.length&&h(S,b,y,f,!0),!i){var L=g.get("childrenVisibleMin");null!=L&&m<L&&(i=!0)}for(var M=0,I=v.length;M<I;M++)o(v[M],e,i,n+1)}}}function a(t,e,i,n,o,a){var u=t.children||[],h=n.sort;"asc"!==h&&"desc"!==h&&(h=null);var c=null!=n.leafDepth&&n.leafDepth<=a;if(o&&!c)return t.viewChildren=[];u=p.filter(u,function(t){return!t.isRemoved()}),s(u,h);var d=l(e,u,h);if(0===d.sum)return t.viewChildren=[];if(d.sum=r(e,i,d.sum,h,u),0===d.sum)return t.viewChildren=[];for(var f=0,g=u.length;f<g;f++){var m=u[f].getValue()/d.sum*i;u[f].setLayout({area:m})}return c&&(u.length&&t.setLayout({isLeafRoot:!0},!0),u.length=0),t.viewChildren=u,t.setLayout({dataExtent:d.dataExtent},!0),u}function r(t,e,i,n,o){if(!n)return i;for(var a=t.get("visibleMin"),r=o.length,s=r,l=r-1;l>=0;l--){var u=o["asc"===n?r-l-1:l].getValue();u/i*e<a&&(s=l,i-=u)}return"asc"===n?o.splice(0,r-s):o.splice(s,r-s),i}function s(t,e){return e&&t.sort(function(t,i){return"asc"===e?t.getValue()-i.getValue():i.getValue()-t.getValue()}),t}function l(t,e,i){for(var n=0,o=0,a=e.length;o<a;o++)n+=e[o].getValue();var r,s=t.get("visualDimension");if(e&&e.length)if("value"===s&&i)r=[e[e.length-1].getValue(),e[0].getValue()],"asc"===i&&r.reverse();else{var r=[1/0,-(1/0)];S(e,function(t){var e=t.getValue(s);e<r[0]&&(r[0]=e),e>r[1]&&(r[1]=e)})}else r=[NaN,NaN];return{sum:n,dataExtent:r}}function u(t,e,i){for(var n,o=0,a=1/0,r=0,s=t.length;r<s;r++)n=t[r].getLayout().area,n&&(n<a&&(a=n),n>o&&(o=n));var l=t.area*t.area,u=e*e*i;return l?x(u*o/l,l/(u*a)):1/0}function h(t,e,i,n,o){var a=e===i.width?0:1,r=1-a,s=["x","y"],l=["width","height"],u=i[s[a]],h=e?t.area/e:0;(o||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]]=x(h-2*n,0),v=i[s[a]]+i[l[a]]-u,y=c===d-1||v<g?v:g,b=p[l[a]]=x(y-2*n,0);p[s[r]]=i[s[r]]+_(n,m/2),p[s[a]]=u+_(n,b/2),u+=y,f.setLayout(p,!0)}i[s[r]]+=h,i[l[r]]-=h}function c(t,e,i,n,o){var a=(e||{}).node,r=[n,o];if(!a||a===i)return r;for(var s,l=n*o,u=l*t.option.zoomToNodeRatio;s=a.parentNode;){for(var h=0,c=s.children,d=0,f=c.length;d<f;d++)h+=c[d].getValue();var p=a.getValue();if(0===p)return r;u*=h/p;var m=s.getModel("itemStyle.normal").get("borderWidth");isFinite(m)&&(u+=4*m*m+4*m*Math.pow(u,.5)),u>g.MAX_SAFE_INTEGER&&(u=g.MAX_SAFE_INTEGER),a=s}u<l&&(u=l);var v=Math.pow(u/l,.5);return[n*v,o*v]}function d(t,e,i){if(e)return{x:e.x,y:e.y};var n={x:0,y:0};if(!i)return n;var o=i.node,a=o.getLayout();if(!a)return n;for(var r=[a.width/2,a.height/2],s=o;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]}}function f(t,e,i,n,o){var a=t.getLayout(),r=i[o],s=r&&r===t;if(!(r&&!s||o===i.length&&t!==n)){t.setLayout({isInView:!0,invisible:!s&&!e.intersect(a),isAboveViewRoot:s},!0);var l=new y(e.x-a.x,e.y-a.y,e.width,e.height);S(t.viewChildren||[],function(t){f(t,l,i,n,o+1)})}}var p=i(1),g=i(4),m=i(12),v=i(92),y=i(11),v=i(92),x=Math.max,_=Math.min,b=g.parsePercent,w=p.retrieve,S=p.each;t.exports=n},function(t,e,i){function n(t,e,i,s,u,c){var d=t.getModel(),p=t.getLayout();if(p&&!p.invisible&&p.isInView){var m,v=t.getModel(g),y=i[t.depth],x=o(v,e,y,s),_=v.get("borderColor"),b=v.get("borderColorSaturation");null!=b&&(m=a(x,t),_=r(b,m)),t.setVisual("borderColor",_);var w=t.viewChildren;if(w&&w.length){var S=l(t,d,p,v,x,w);f.each(w,function(t,e){if(t.depth>=u.length||t===u[t.depth]){var o=h(d,x,t,e,S,c);n(t,o,i,s,u,c)}})}else m=a(x,t),t.setVisual("color",m)}}function o(t,e,i,n){var o=f.extend({},e);return f.each(["color","colorAlpha","colorSaturation"],function(a){var r=t.get(a,!0);null==r&&i&&(r=i[a]),null==r&&(r=e[a]),null==r&&(r=n.get(a)),null!=r&&(o[a]=r)}),o}function a(t){var e=s(t,"color");if(e){var i=s(t,"colorAlpha"),n=s(t,"colorSaturation");return n&&(e=d.modifyHSL(e,null,null,n)),i&&(e=d.modifyAlpha(e,i)),e}}function r(t,e){return null!=e?d.modifyHSL(e,null,null,t):null}function s(t,e){var i=t[e];if(null!=i&&"none"!==i)return i}function l(t,e,i,n,o,a){if(a&&a.length){var r=u(e,"color")||null!=o.color&&"none"!==o.color&&(u(e,"colorAlpha")||u(e,"colorSaturation"));if(r){var s=e.get("visualMin"),l=e.get("visualMax"),h=i.dataExtent.slice();null!=s&&s<h[0]&&(h[0]=s),null!=l&&l>h[1]&&(h[1]=l);var d=e.get("colorMappingBy"),f={type:r.name,dataExtent:h,visual:r.range};"color"!==f.type||"index"!==d&&"id"!==d?f.mappingMethod="linear":(f.mappingMethod="category",f.loop=!0);var p=new c(f);return p.__drColorMappingBy=d,p}}}function u(t,e){var i=t.get(e);return p(i)&&i.length?{name:e,range:i}:null}function h(t,e,i,n,o,a){var r=f.extend({},e);if(o){var s=o.type,l="color"===s&&o.__drColorMappingBy,u="index"===l?n:"id"===l?a.mapIdToIndex(i.getId()):i.getValue(t.get("visualDimension"));r[s]=o.mapValueToVisual(u)}return r}var c=i(82),d=i(22),f=i(1),p=f.isArray,g="itemStyle.normal";t.exports=function(t,e,i){var o={mainType:"series",subType:"treemap",query:i};t.eachComponent(o,function(t){var e=t.getData().tree,i=e.root,o=t.getModel(g);if(!i.isRemoved()){var a=f.map(e.levelModels,function(t){return t?t.get(g):null});n(i,{},a,o,t.getViewRoot().getAncestors(),t)}})}},function(t,e,i){"use strict";i(233),i(350)},function(t,e,i){"use strict";function n(t,e,i,n){var o=t.coordToPoint([e,n]),a=t.coordToPoint([i,n]);return{x1:o[0],y1:o[1],x2:a[0],y2:a[1]}}var o=i(1),a=i(3),r=i(10),s=i(246),l=["axisLine","axisLabel","axisTick","splitLine","splitArea"];i(57).extend({type:"angleAxis",axisPointerClass:s,render:function(t,e){if(this.group.removeAll(),t.get("show")){var i=t.axis,n=i.polar,a=n.getRadiusAxis().getExtent(),r=i.getTicksCoords();"category"!==i.type&&r.pop(),o.each(l,function(e){!t.get(e+".show")||i.scale.isBlank()&&"axisLine"!==e||this["_"+e](t,n,r,a)},this)}},_axisLine:function(t,e,i,n){var o=t.getModel("axisLine.lineStyle"),r=new a.Circle({shape:{cx:e.cx,cy:e.cy,r:n[1]},style:o.getLineStyle(),z2:1,silent:!0});r.style.fill=null,this.group.add(r)},_axisTick:function(t,e,i,r){var s=t.getModel("axisTick"),l=(s.get("inside")?-1:1)*s.get("length"),u=o.map(i,function(t){return new a.Line({shape:n(e,r[1],r[1]+l,t)})});this.group.add(a.mergePath(u,{style:o.defaults(s.getModel("lineStyle").getLineStyle(),{stroke:t.get("axisLine.lineStyle.color")})}))},_axisLabel:function(t,e,i,n){for(var o=t.axis,s=t.get("data"),l=t.getModel("axisLabel"),u=l.getModel("textStyle"),h=t.getFormattedLabels(),c=l.get("margin"),d=o.getLabelsCoords(),f=0;f<i.length;f++){var p=n[1],g=e.coordToPoint([p+c,d[f]]),m=e.cx,v=e.cy,y=Math.abs(g[0]-m)/p<.3?"center":g[0]>m?"left":"right",x=Math.abs(g[1]-v)/p<.3?"middle":g[1]>v?"top":"bottom",_=u;s&&s[f]&&s[f].textStyle&&(_=new r(s[f].textStyle,u)),this.group.add(new a.Text({style:{x:g[0],y:g[1],fill:_.getTextColor()||t.get("axisLine.lineStyle.color"),text:h[f],textAlign:y,textVerticalAlign:x,textFont:_.getFont()},silent:!0}))}},_splitLine:function(t,e,i,r){var s=t.getModel("splitLine"),l=s.getModel("lineStyle"),u=l.get("color"),h=0;u=u instanceof Array?u:[u];for(var c=[],d=0;d<i.length;d++){var f=h++%u.length;c[f]=c[f]||[],c[f].push(new a.Line({shape:n(e,r[0],r[1],i[d])}))}for(var d=0;d<c.length;d++)this.group.add(a.mergePath(c[d],{style:o.defaults({stroke:u[d%u.length]},l.getLineStyle()),silent:!0,z:t.get("z")}))},_splitArea:function(t,e,i,n){var r=t.getModel("splitArea"),s=r.getModel("areaStyle"),l=s.get("color"),u=0;
+l=l instanceof Array?l:[l];for(var h=[],c=Math.PI/180,d=-i[0]*c,f=Math.min(n[0],n[1]),p=Math.max(n[0],n[1]),g=t.get("clockwise"),m=1;m<i.length;m++){var v=u++%l.length;h[v]=h[v]||[],h[v].push(new a.Sector({shape:{cx:e.cx,cy:e.cy,r0:f,r:p,startAngle:d,endAngle:-i[m]*c,clockwise:g},silent:!0})),d=-i[m]*c}for(var m=0;m<h.length;m++)this.group.add(a.mergePath(h[m],{style:o.defaults({fill:l[m%l.length]},s.getAreaStyle()),silent:!0}))}})},function(t,e,i){function n(t,e,i){return i&&"axisAreaSelect"===i.type&&e.findComponents({mainType:"parallelAxis",query:i})[0]===t}var o=i(1),a=i(37),r=i(129),s=i(3),l=["axisLine","axisLabel","axisTick","axisName"],u=i(2).extendComponentView({type:"parallelAxis",init:function(t,e){u.superApply(this,"init",arguments),(this._brushController=new r(e.getZr())).on("brush",o.bind(this._onBrush,this))},render:function(t,e,i,r){if(!n(t,e,r)){this.axisModel=t,this.api=i,this.group.removeAll();var u=this._axisGroup;if(this._axisGroup=new s.Group,this.group.add(this._axisGroup),t.get("show")){var h,c=e.getComponent("parallel",t.get("parallelIndex")).coordinateSystem,d=t.getAreaSelectStyle(),f=d.width,p=t.axis.dim,g=c.getAxisLayout(p),m=o.indexOf(c.dimensions,p),v=g.axisExpandWindow;v&&(m<=v[0]||m>=v[1])&&(h=!1);var y=o.extend({axisLabelShow:h,strokeContainThreshold:f},g),x=new a(t,y);o.each(l,x.add,x),this._axisGroup.add(x.getGroup()),this._refreshBrushController(y,d,t,f),s.groupTransition(u,this._axisGroup,t)}}},_refreshBrushController:function(t,e,i,n){var a=i.axis,r=o.map(i.activeIntervals,function(t){return{brushType:"lineX",panelId:"pl",range:[a.dataToCoord(t[0],!0),a.dataToCoord(t[1],!0)]}}),l=a.getExtent(),u=l[1]-l[0],h=Math.min(30,.1*Math.abs(u)),c=s.BoundingRect.create({x:l[0],y:-n/2,width:u,height:n});c.x-=h,c.width+=2*h,this._brushController.mount({enableGlobalPan:!0,rotation:t.rotation,position:t.position}).setPanels([{panelId:"pl",rect:c}]).enableBrush({brushType:"lineX",brushStyle:e,removeOnClick:!0}).updateCovers(r)},_onBrush:function(t,e){var i=this.axisModel,n=i.axis,a=o.map(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()}});t.exports=u},function(t,e,i){"use strict";function n(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}}var o=i(1),a=i(3),r=i(37),s=i(246),l=["axisLine","axisLabel","axisTick","axisName"],u=["splitLine","splitArea"];i(57).extend({type:"radiusAxis",axisPointerClass:s,render:function(t,e){if(this.group.removeAll(),t.get("show")){var i=t.axis,a=i.polar,s=a.getAngleAxis(),h=i.getTicksCoords(),c=s.getExtent()[0],d=i.getExtent(),f=n(a,t,c),p=new r(t,f);o.each(l,p.add,p),this.group.add(p.getGroup()),o.each(u,function(e){t.get(e+".show")&&!i.scale.isBlank()&&this["_"+e](t,a,c,d,h)},this)}},_splitLine:function(t,e,i,n,r){var s=t.getModel("splitLine"),l=s.getModel("lineStyle"),u=l.get("color"),h=0;u=u instanceof Array?u:[u];for(var c=[],d=0;d<r.length;d++){var f=h++%u.length;c[f]=c[f]||[],c[f].push(new a.Circle({shape:{cx:e.cx,cy:e.cy,r:r[d]},silent:!0}))}for(var d=0;d<c.length;d++)this.group.add(a.mergePath(c[d],{style:o.defaults({stroke:u[d%u.length],fill:null},l.getLineStyle()),silent:!0}))},_splitArea:function(t,e,i,n,r){var s=t.getModel("splitArea"),l=s.getModel("areaStyle"),u=l.get("color"),h=0;u=u instanceof Array?u:[u];for(var c=[],d=r[0],f=1;f<r.length;f++){var p=h++%u.length;c[p]=c[p]||[],c[p].push(new a.Sector({shape:{cx:e.cx,cy:e.cy,r0:d,r:r[f],startAngle:0,endAngle:2*Math.PI},silent:!0})),d=r[f]}for(var f=0;f<c.length;f++)this.group.add(a.mergePath(c[f],{style:o.defaults({fill:u[f%u.length]},l.getAreaStyle()),silent:!0}))}})},function(t,e,i){var n=i(37),o=i(1),a=i(3),r=i(355),s=i(245),l=n.getInterval,u=n.ifIgnoreOnTick,h=["axisLine","axisLabel","axisTick","axisName"],c="splitLine",d=i(57).extend({type:"singleAxis",axisPointerClass:r,render:function(t,e,i,a){var r=this.group;r.removeAll();var l=s.layout(t),u=new n(t,l);o.each(h,u.add,u),r.add(u.getGroup()),t.get(c+".show")&&this["_"+c](t,l.labelInterval),d.superCall(this,"render",t,e,i,a)},_splitLine:function(t,e){var i=t.axis;if(!i.scale.isBlank()){var n=t.getModel("splitLine"),o=n.getModel("lineStyle"),r=o.get("width"),s=o.get("color"),h=l(n,e);s=s instanceof Array?s:[s];for(var c=t.coordinateSystem.getRect(),d=i.isHorizontal(),f=[],p=0,g=i.getTicksCoords(),m=[],v=[],y=0;y<g.length;++y)if(!u(i,y,h)){var x=i.toGlobalCoord(g[y]);d?(m[0]=x,m[1]=c.y,v[0]=x,v[1]=c.y+c.height):(m[0]=c.x,m[1]=x,v[0]=c.x+c.width,v[1]=x);var _=p++%s.length;f[_]=f[_]||[],f[_].push(new a.Line(a.subPixelOptimizeLine({shape:{x1:m[0],y1:m[1],x2:v[0],y2:v[1]},style:{lineWidth:r},silent:!0})))}for(var y=0;y<f.length;++y)this.group.add(a.mergePath(f[y],{style:{stroke:s[y%s.length],lineDash:o.getLineDash(r),lineWidth:r},silent:!0}))}}});t.exports=d},function(t,e,i){var n=i(2),o={type:"axisAreaSelect",event:"axisAreaSelected",update:"updateVisual"};n.registerAction(o,function(t,e){e.eachComponent({mainType:"parallelAxis",query:t},function(e){e.axis.model.setActiveIntervals(t.intervals)})}),n.registerAction("parallelAxisExpand",function(t,e){e.eachComponent({mainType:"parallel",query:t},function(e){e.setAxisExpand(t)})})},function(t,e,i){"use strict";function n(t){return t.isHorizontal()?0:1}function o(t,e){var i=t.getRect();return[i[u[e]],i[u[e]]+i[h[e]]]}var a=i(3),r=i(74),s=i(55),l=i(245),u=["x","y"],h=["width","height"],c=r.extend({makeElOption:function(t,e,i,a,r){var u=i.axis,h=u.coordinateSystem,c=o(h,1-n(u)),f=h.dataToPoint(e)[0],p=s.buildElStyle(a),g=d[a.get("type")](u,f,c,p);g.style=p,t.graphicKey=g.type,t.pointer=g;var m=l.layout(i);s.buildCartesianSingleLabelElOption(e,t,m,i,a,r)},getHandleTransform:function(t,e,i){var n=l.layout(e,{labelInside:!1});return n.labelMargin=i.get("handle.margin"),{position:s.getTransformedPosition(e.axis,t,n),rotation:n.rotation+(n.labelDirection<0?Math.PI:0)}},updateHandleTransform:function(t,e,i,a){var r=i.axis,s=r.coordinateSystem,l=n(r),u=o(s,l),h=t.position;h[l]+=e[l],h[l]=Math.min(u[1],h[l]),h[l]=Math.max(u[0],h[l]);var c=o(s,1-l),d=(c[1]+c[0])/2,f=[d,d];return f[l]=h[l],{position:h,rotation:t.rotation,cursorPoint:f,tooltipOption:{verticalAlign:"middle"}}}}),d={line:function(t,e,i,o){var r=s.makeLineShape([e,i[0]],[e,i[1]],n(t));return a.subPixelOptimizeLine({shape:r,style:o}),{type:"Line",shape:r}},shadow:function(t,e,i,o){var a=t.getBandWidth(),r=i[1]-i[0];return{type:"Rect",shape:s.makeRectShape([e-a/2,i[0]],[a,r],n(t))}}};t.exports=c},function(t,e,i){i(2).registerPreprocessor(i(360)),i(362),i(357),i(358),i(359),i(381)},function(t,e,i){function n(t,e){return a.merge({brushType:t.brushType,brushMode:t.brushMode,transformable:t.transformable,brushStyle:new s(t.brushStyle).getItemStyle(),removeOnClick:t.removeOnClick},e,!0)}var o=i(2),a=i(1),r=i(188),s=i(10),l=["#ddd"],u=o.extendComponentModel({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)",width:null},throttleType:"fixRate",throttleDelay:0,removeOnClick:!0},areas:[],brushType:null,brushOption:{},coordInfoList:[],optionUpdated:function(t,e){var i=this.option;!e&&r.replaceVisualOption(i,t,["inBrush","outOfBrush"]),i.inBrush=i.inBrush||{},i.outOfBrush=i.outOfBrush||{color:l}},setAreas:function(t){t&&(this.areas=a.map(t,function(t){return n(this.option,t)},this))},setBrushOption:function(t){this.brushOption=n(this.option,t),this.brushType=this.brushOption.brushType}});t.exports=u},function(t,e,i){function n(t,e,i,n){(!n||n.$from!==t.id)&&this._brushController.setPanels(t.brushTargetManager.makePanelOpts()).enableBrush(t.brushOption).updateCovers(t.areas.slice())}var o=i(1),a=i(129),r=i(2);t.exports=r.extendComponentView({type:"brush",init:function(t,e){this.ecModel=t,this.api=e,this.model,(this._brushController=new a(e.getZr())).on("brush",o.bind(this._onBrush,this)).mount()},render:function(t){return this.model=t,n.apply(this,arguments)},updateView:n,updateLayout:n,updateVisual:n,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:o.clone(t),$from:i})}})},function(t,e,i){var n=i(2);n.registerAction({type:"brush",event:"brush",update:"updateView"},function(t,e){e.eachComponent({mainType:"brush",query:t},function(e){e.setAreas(t.areas)})}),n.registerAction({type:"brushSelect",event:"brushSelected",update:"none"},function(){})},function(t,e,i){function n(t){var e={};o.each(t,function(t){e[t]=1}),t.length=0,o.each(e,function(e,i){t.push(i)})}var o=i(1),a=["rect","polygon","keep","clear"];t.exports=function(t,e){var i=t&&t.brush;if(o.isArray(i)||(i=i?[i]:[]),i.length){var r=[];o.each(i,function(t){var e=t.hasOwnProperty("toolbox")?t.toolbox:[];e instanceof Array&&(r=r.concat(e))});var s=t&&t.toolbox;o.isArray(s)&&(s=s[0]),s||(s={feature:{}},t.toolbox=[s]);var l=s.feature||(s.feature={}),u=l.brush||(l.brush={}),h=u.type||(u.type=[]);h.push.apply(h,r),n(h),e&&!h.length&&h.push.apply(h,a)}}},function(t,e,i){function n(t){var e=["x","y"],i=["width","height"];return{point:function(e,i,n){var a=n.range,r=e[t];return o(r,a)},rect:function(n,a,r){var s=r.range,l=[n[e[t]],n[e[t]]+n[i[t]]];return l[1]<l[0]&&l.reverse(),o(l[0],s)||o(l[1],s)||o(s[0],l)||o(s[1],l)}}}function o(t,e){return e[0]<=t&&t<=e[1]}function a(t,e,i,n,o){for(var a=0,s=o[o.length-1];a<o.length;a++){var l=o[a];if(r(t,e,i,n,l[0],l[1],s[0],s[1]))return!0;s=l}}function r(t,e,i,n,o,a,r,u){var h=l(i-t,o-r,n-e,a-u);if(s(h))return!1;var c=l(o-t,o-r,a-e,a-u)/h;if(c<0||c>1)return!1;var d=l(i-t,o-t,n-e,a-e)/h;return!(d<0||d>1)}function s(t){return t<=1e-6&&t>=-1e-6}function l(t,e,i,n){return t*n-e*i}var u=i(264).contain,h=i(11),c={lineX:n(0),lineY:n(1),rect:{point:function(t,e,i){return i.boundingRect.contain(t[0],t[1])},rect:function(t,e,i){return i.boundingRect.intersect(t)}},polygon:{point:function(t,e,i){return i.boundingRect.contain(t[0],t[1])&&u(i.range,t[0],t[1])},rect:function(t,e,i){var n=i.range;if(n.length<=1)return!1;var o=t.x,r=t.y,s=t.width,l=t.height,c=n[0];return!!(u(n,o,r)||u(n,o+s,r)||u(n,o,r+l)||u(n,o+s,r+l)||h.create(t).contain(c[0],c[1])||a(o,r,o+s,r,n)||a(o,r,o,r+l,n)||a(o+s,r,o+s,r+l,n)||a(o,r+l,o+s,r+l,n))||void 0}}};t.exports=c},function(t,e,i){function n(t,e,i,n,a){if(a){var r=t.getZr();if(!r[x]){r[y]||(r[y]=o);var s=g.createOrUpdate(r,y,i,e);s(t,n)}}}function o(t,e){if(!t.isDisposed()){var i=t.getZr();i[x]=!0,t.dispatchAction({type:"brushSelect",batch:e}),i[x]=!1}}function a(t,e,i,n){for(var o=i.getItemLayout(n),a=0,r=e.length;a<r;a++){var s=e[a];if(t[s.brushType](o,s.selectors,s))return!0}}function r(t){var e=t.brushSelector;if(d.isString(e)){var i=[];return d.each(p,function(t,n){i[n]=t[e]}),i}if(d.isFunction(e)){var n={};return d.each(p,function(t,i){n[i]=e}),n}return e}function s(t,e){var i=t.option.seriesIndex;return null!=i&&"all"!==i&&(d.isArray(i)?d.indexOf(i,e)<0:e!==i)}function l(t){var e=t.selectors={};return d.each(p[t.brushType],function(i,n){e[n]=function(n){return i(n,e,t)}}),t}function u(t){return new f(t[0][0],t[1][0],t[0][1]-t[0][0],t[1][1]-t[1][0])}var h=i(2),c=i(188),d=i(1),f=i(11),p=i(361),g=i(39),m=i(186),v=["inBrush","outOfBrush"],y="__ecBrushSelect",x="__ecInBrushSelectEvent",_=h.PRIORITY.VISUAL.BRUSH;h.registerLayout(_,function(t,e,i){t.eachComponent({mainType:"brush"},function(e){i&&"takeGlobalCursor"===i.type&&e.setBrushOption("brush"===i.key?i.brushOption:{brushType:!1});var n=e.brushTargetManager=new m(e.option,t);n.setInputRanges(e.areas,t)})}),h.registerVisual(_,function(t,e,i){var o,u,h=[];t.eachComponent({mainType:"brush"},function(e,i){function n(t){return"all"===x||_[t]}function f(t){return!!t.length}function p(t,e){var i=t.coordinateSystem;M|=i.hasAxisbrushed(),n(e)&&i.eachActiveState(t.getData(),function(t,e){"active"===t&&(w[e]=1)})}function g(i,o,l){var u=r(i);if(u&&!s(e,o)&&(d.each(I,function(n){u[n.brushType]&&e.brushTargetManager.controlSeries(n,i,t)&&l.push(n),M|=f(l)}),n(o)&&f(l))){var h=i.getData();h.each(function(t){a(u,l,h,t)&&(w[t]=1)})}}var m={brushId:e.id,brushIndex:i,brushName:e.name,areas:d.clone(e.areas),selected:[]};h.push(m);var y=e.option,x=y.brushLink,_=[],w=[],S=[],M=0;i||(o=y.throttleType,u=y.throttleDelay);var I=d.map(e.areas,function(t){return l(d.defaults({boundingRect:b[t.brushType](t)},t))}),T=c.createVisualMappings(e.option,v,function(t){t.mappingMethod="fixed"});d.isArray(x)&&d.each(x,function(t){_[t]=1}),t.eachSeries(function(t,e){var i=S[e]=[];"parallel"===t.subType?p(t,e,i):g(t,e,i)}),t.eachSeries(function(t,e){var i={seriesId:t.id,seriesIndex:e,seriesName:t.name,dataIndex:[]};m.selected.push(i);var o=r(t),s=S[e],l=t.getData(),u=n(e)?function(t){return w[t]?(i.dataIndex.push(l.getRawIndex(t)),"inBrush"):"outOfBrush"}:function(t){return a(o,s,l,t)?(i.dataIndex.push(l.getRawIndex(t)),"inBrush"):"outOfBrush"};(n(e)?M:f(s))&&c.applyVisual(v,T,l,u)})}),n(e,o,u,h,i)});var b={lineX:d.noop,lineY:d.noop,rect:function(t){return u(t.range)},polygon:function(t){for(var e,i=t.range,n=0,o=i.length;n<o;n++){e=e||[[1/0,-(1/0)],[1/0,-(1/0)]];var a=i[n];a[0]<e[0][0]&&(e[0][0]=a[0]),a[0]>e[0][1]&&(e[0][1]=a[0]),a[1]<e[1][0]&&(e[1][0]=a[1]),a[1]>e[1][1]&&(e[1][1]=a[1])}return e&&u(e)}}},function(t,e,i){"use strict";i(389),i(390),i(364)},function(t,e,i){"use strict";var n=i(1),o=i(3),a=i(7),r=i(4),s={EN:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],CN:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},l={EN:["S","M","T","W","T","F","S"],CN:["日","一","二","三","四","五","六"]};t.exports=i(2).extendComponentView({type:"calendar",_tlpoints:null,_blpoints:null,_firstDayOfMonth:null,_firstDayPoints:null,render:function(t,e,i){var n=this.group;n.removeAll();var o=t.coordinateSystem,a=o.getHandledRangeInfo(),r=o.getOrient();this._renderDayRect(t,a,n),this._renderLines(t,a,r,n),this._renderYearText(t,a,r,n),this._renderMonthText(t,r,n),this._renderWeekText(t,a,r,n)},_renderDayRect:function(t,e,i){for(var n=t.coordinateSystem,a=t.getModel("itemStyle.normal").getItemStyle(),r=n.getCellWidth(),s=n.getCellHeight(),l=e.start.time;l<=e.end.time;l=n.getNextNDay(l,1).time){var u=n.dataToRect([l],!0).tl,h=new o.Rect({shape:{x:u[0],y:u[1],width:r,height:s},style:a});i.add(h)}},_renderLines:function(t,e,i,n){function o(e){a._firstDayOfMonth.push(r.getDateInfo(e)),a._firstDayPoints.push(r.dataToRect([e],!0).tl);var o=a._getLinePointsOfOneWeek(t,e,i);a._tlpoints.push(o[0]),a._blpoints.push(o[o.length-1]),l&&a._drawSplitline(o,s,n)}var a=this,r=t.coordinateSystem,s=t.getModel("splitLine.lineStyle").getLineStyle(),l=t.get("splitLine.show"),u=s.lineWidth;this._tlpoints=[],this._blpoints=[],this._firstDayOfMonth=[],this._firstDayPoints=[];for(var h=e.start,c=0;h.time<=e.end.time;c++){o(h.formatedDate),0===c&&(h=r.getDateInfo(e.start.y+"-"+e.start.m));var d=h.date;d.setMonth(d.getMonth()+1),h=r.getDateInfo(d)}o(r.getNextNDay(e.end.time,1).formatedDate),l&&this._drawSplitline(a._getEdgesPoints(a._tlpoints,u,i),s,n),l&&this._drawSplitline(a._getEdgesPoints(a._blpoints,u,i),s,n)},_getEdgesPoints:function(t,e,i){var n=[t[0].slice(),t[t.length-1].slice()],o="horizontal"===i?0:1;return n[0][o]=n[0][o]-e/2,n[1][o]=n[1][o]+e/2,n},_drawSplitline:function(t,e,i){var n=new o.Polyline({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 o=[],a=0;a<7;a++){var r=n.getNextNDay(e.time,a),s=n.dataToRect([r.time],!0);o[2*r.day]=s.tl,o[2*r.day+1]=s["horizontal"===i?"bl":"tr"]}return o},_formatterLabel:function(t,e){return"string"==typeof t&&t?a.formatTplSimple(t,e):"function"==typeof t?t(e):e.nameMap},_yearTextPositionControl:function(t,e,i,n){t=t.slice();var o=["center","bottom"];"top"===i&&(t[1]-=n),"bottom"===i&&(t[1]+=n,o=["center","top"]),"left"===i&&(t[0]-=n),"right"===i&&(t[0]+=n,o=["center","top"]);var a=0;return"left"!==i&&"right"!==i||(a=Math.PI/2),{rotation:a,origin:t,style:{x:t[0],y:t[1],textAlign:o[0],textVerticalAlign:o[1]}}},_renderYearText:function(t,e,i,a){var r=t.getModel("yearLabel");if(r.get("show")){var s=t.getModel("yearLabel.textStyle"),l=r.get("margin"),u=r.get("position");u||(u="horizontal"!==i?"top":"left");var h=[this._tlpoints[this._tlpoints.length-1],this._blpoints[0]],c=(h[0][0]+h[1][0])/2,d=(h[0][1]+h[1][1])/2,f="horizontal"===i?0:1,p={top:[c,h[f][1]],bottom:[c,h[1-f][1]],left:[h[1-f][0],d],right:[h[f][0],d]},g=e.start.y;+e.end.y>+e.start.y&&(g=g+"-"+e.end.y);var m=r.get("formatter"),v={start:e.start.y,end:e.end.y,nameMap:g},y=this._formatterLabel(m,v),x=new o.Text(n.merge({z2:30,style:{text:y,font:s.getFont(),fill:s.getTextColor()}},this._yearTextPositionControl(p[u],i,u,l)));a.add(x)}},_monthTextPositionControl:function(t,e,i,n,o){var a="left",r="top",s=t[0],l=t[1];return"horizontal"===i?(l+=o,e&&(a="center"),"start"===n&&(r="bottom")):(s+=o,e&&(r="middle"),"start"===n&&(a="right")),{x:s,y:l,textAlign:a,textVerticalAlign:r}},_renderMonthText:function(t,e,i){var a=t.getModel("monthLabel");if(a.get("show")){var r=t.getModel("monthLabel.textStyle"),l=a.get("nameMap"),u=a.get("margin"),h=a.get("position"),c=a.get("align"),d=[this._tlpoints,this._blpoints];n.isString(l)&&(l=s[l.toUpperCase()]||[]);var f="start"===h?0:1,p="horizontal"===e?0:1;u="start"===h?-u:u;for(var g="center"===c,m=0;m<d[f].length-1;m++){var v=d[f][m].slice(),y=this._firstDayOfMonth[m];if(g){var x=this._firstDayPoints[m];v[p]=(x[p]+d[0][m+1][p])/2}var _=a.get("formatter"),b=l[+y.m-1],w={yyyy:y.y,yy:(y.y+"").slice(2),MM:y.m,M:+y.m,nameMap:b},S=this._formatterLabel(_,w),M=new o.Text({z2:30,style:n.extend({text:S,font:r.getFont(),fill:r.getTextColor()},this._monthTextPositionControl(v,g,e,h,u))});i.add(M)}}},_weekTextPositionControl:function(t,e,i,n,o){var a="center",r="middle",s=t[0],l=t[1],u="start"===i;return"horizontal"===e?(s=s+n+(u?1:-1)*o[0]/2,a=u?"right":"left"):(l=l+n+(u?1:-1)*o[1]/2,r=u?"bottom":"top"),{x:s,y:l,textAlign:a,textVerticalAlign:r}},_renderWeekText:function(t,e,i,a){var s=t.getModel("dayLabel");if(s.get("show")){var u=t.coordinateSystem,h=t.getModel("dayLabel.textStyle"),c=s.get("position"),d=s.get("nameMap"),f=s.get("margin"),p=u.getFirstDayOfWeek();n.isString(d)&&(d=l[d.toUpperCase()]||[]);var g=u.getNextNDay(e.end.time,7-e.lweek).time,m=[u.getCellWidth(),u.getCellHeight()];f=r.parsePercent(f,m["horizontal"===i?0:1]),"start"===c&&(g=u.getNextNDay(e.start.time,-(7+e.fweek)).time,f=-f);for(var v=0;v<7;v++){var y=u.getNextNDay(g,v),x=u.dataToRect([y.time],!0).center,_=v;_=Math.abs((v+p)%7);var b=new o.Text({z2:30,style:n.extend({text:d[_],font:h.getFont(),fill:h.getTextColor()},this._weekTextPositionControl(x,i,c,f,m))});a.add(b)}}}})},function(t,e,i){function n(t,e){e.update="updateView",o.registerAction(e,function(e,i){var n={};return i.eachComponent({mainType:"geo",query:e},function(i){i[t](e.name);var o=i.coordinateSystem;a.each(o.regions,function(t){n[t.name]=i.isSelected(t.name)||!1})}),{selected:n,name:e.name}})}i(392),i(187),i(366),i(237);var o=i(2),a=i(1);n("toggleSelected",{type:"geoToggleSelect",event:"geoselectchanged"}),n("select",{type:"geoSelect",event:"geoselected"}),n("unSelect",{type:"geoUnSelect",event:"geounselected"})},function(t,e,i){"use strict";var n=i(247);t.exports=i(2).extendComponentView({type:"geo",init:function(t,e){var i=new n(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 o=this._mapDraw;t.get("show")?o.draw(t,e,i,this,n):this._mapDraw.group.removeAll(),this.group.silent=t.get("silent")}},dispose:function(){this._mapDraw&&this._mapDraw.remove()}})},function(t,e,i){i(260),i(354),i(351)},function(t,e,i){"use strict";i(233),i(349),i(371),i(45),i(2).extendComponentView({type:"polar"})},function(t,e,i){i(407),i(408),i(370)},function(t,e,i){var n=i(37),o=i(1),a=i(3),r=["axisLine","axisLabel","axisTick","axisName"];t.exports=i(2).extendComponentView({type:"radar",render:function(t,e,i){var n=this.group;n.removeAll(),this._buildAxes(t),this._buildSplitLineAndArea(t)},_buildAxes:function(t){var e=t.coordinateSystem,i=e.getIndicatorAxes(),a=o.map(i,function(t){var i=new n(t.model,{position:[e.cx,e.cy],rotation:t.angle,labelDirection:-1,tickDirection:-1,nameDirection:1});return i});o.each(a,function(t){o.each(r,t.add,t),this.group.add(t.getGroup())},this)},_buildSplitLineAndArea:function(t){function e(t,e,i){var n=i%e.length;return t[n]=t[n]||[],n}var i=t.coordinateSystem,n=i.getIndicatorAxes();if(n.length){var r=t.get("shape"),s=t.getModel("splitLine"),l=t.getModel("splitArea"),u=s.getModel("lineStyle"),h=l.getModel("areaStyle"),c=s.get("show"),d=l.get("show"),f=u.get("color"),p=h.get("color");f=o.isArray(f)?f:[f],p=o.isArray(p)?p:[p];var g=[],m=[];if("circle"===r)for(var v=n[0].getTicksCoords(),y=i.cx,x=i.cy,_=0;_<v.length;_++){if(c){var b=e(g,f,_);g[b].push(new a.Circle({shape:{cx:y,cy:x,r:v[_]}}))}if(d&&_<v.length-1){var b=e(m,p,_);m[b].push(new a.Ring({shape:{cx:y,cy:x,r0:v[_],r:v[_+1]}}))}}else for(var w=-1,S=o.map(n,function(t,e){var n=t.getTicksCoords();return w=Math.max(n.length-1,w),o.map(n,function(t){return i.coordToPoint(t,e)})}),M=[],_=0;_<=w;_++){for(var I=[],T=0;T<n.length;T++)I.push(S[T][_]);if(I[0]&&I.push(I[0].slice()),c){var b=e(g,f,_);g[b].push(new a.Polyline({shape:{points:I}}))}if(d&&M){var b=e(m,p,_-1);m[b].push(new a.Polygon({shape:{points:I.concat(M)}}))}M=I.slice().reverse()}var A=u.getLineStyle(),L=h.getAreaStyle();o.each(m,function(t,e){this.group.add(a.mergePath(t,{style:o.defaults({stroke:"none",fill:p[e%p.length]},L),silent:!0}))},this),o.each(g,function(t,e){this.group.add(a.mergePath(t,{style:o.defaults({fill:"none",stroke:f[e%f.length]},A),silent:!0}))},this)}}})},function(t,e,i){i(233),i(352)},function(t,e,i){var n=i(2);n.registerPreprocessor(i(378)),i(380),i(379),i(373),i(374)},function(t,e,i){var n=i(376),o=i(1),a=i(5),r=n.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",normal:{show:!0,interval:"auto",rotate:0,textStyle:{color:"#304654"}},emphasis:{show:!0,textStyle:{color:"#c23531"}}},itemStyle:{normal:{color:"#304654",borderWidth:1},emphasis:{color:"#c23531"}},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",normal:{color:"#304654",borderColor:"#304654",borderWidth:1},emphasis:{color:"#c23531",borderColor:"#c23531",borderWidth:2}},data:[]}});o.mixin(r,a.dataFormatMixin),t.exports=r},function(t,e,i){function n(t,e){return u.getLayoutRect(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()},t.get("padding"))}function o(t,e,i,n){var o=l.makePath(t.get(e).replace(/^path:\/\//,""),s.clone(n||{}),new p(i[0],i[1],i[2],i[3]),"center");return o}function a(t,e,i,n,o,a){var r=e.get("color");if(o)o.setColor(r),i.add(o),a&&a.onUpdate(o);else{var l=t.get("symbol");o=d.createSymbol(l,-1,-1,2,2,r),o.setStyle("strokeNoScale",!0),i.add(o),a&&a.onCreate(o)}var u=e.getItemStyle(["color","symbol","symbolSize"]);o.setStyle(u),n=s.merge({rectHover:!0,z2:100},n,!0);var h=t.get("symbolSize");h=h instanceof Array?h.slice():[+h,+h],h[0]/=2,h[1]/=2,n.scale=h;var c=t.get("symbolOffset");if(c){var f=n.position=n.position||[0,0];f[0]+=m.parsePercent(c[0],h[0]),f[1]+=m.parsePercent(c[1],h[1])}var p=t.get("symbolRotate");return n.rotation=(p||0)*Math.PI/180||0,o.attr(n),o.updateTransform(),o}function r(t,e,i,n,o){if(!t.dragging){var a=n.getModel("checkpointStyle"),r=i.dataToCoord(n.getData().get(["value"],e));o||!a.get("animation",!0)?t.attr({position:[r,0]}):(t.stopAnimation(!0),t.animateTo({position:[r,0]},a.get("animationDuration",!0),a.get("animationEasing",!0)))}}var s=i(1),l=i(3),u=i(12),h=i(377),c=i(375),d=i(24),f=i(17),p=i(11),g=i(19),m=i(4),v=i(7),y=v.encodeHTML,x=s.bind,_=s.each,b=Math.PI;t.exports=h.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(t,e,i,n){if(this.model=t,this.api=i,this.ecModel=e,this.group.removeAll(),t.get("show",!0)){var o=this._layout(t,i),a=this._createGroup("mainGroup"),r=this._createGroup("labelGroup"),s=this._axis=this._createAxis(o,t);t.formatTooltip=function(t){return y(s.scale.getLabel(t))},_(["AxisLine","AxisTick","Control","CurrentPointer"],function(e){this["_render"+e](o,a,s,t)},this),this._renderAxisLabel(o,r,s,t),this._position(o,t)}this._doPlayStop()},remove:function(){this._clearTimer(),this.group.removeAll()},dispose:function(){this._clearTimer()},_layout:function(t,e){var i=t.get("label.normal.position"),o=t.get("orient"),a=n(t,e);null==i||"auto"===i?i="horizontal"===o?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:"+"}}[o][i]);var r={horizontal:"center",vertical:i>=0||"+"===i?"left":"right"},s={horizontal:i>=0||"+"===i?"top":"bottom",vertical:"middle"},l={horizontal:0,vertical:b/2},u="vertical"===o?a.height:a.width,h=t.getModel("controlStyle"),c=h.get("show"),d=c?h.get("itemSize"):0,f=c?h.get("itemGap"):0,p=d+f,g=t.get("label.normal.rotate")||0;g=g*b/180;var m,v,y,x,_=h.get("position",!0),c=h.get("show",!0),w=c&&h.get("showPlayBtn",!0),S=c&&h.get("showPrevBtn",!0),M=c&&h.get("showNextBtn",!0),I=0,T=u;return"left"===_||"bottom"===_?(w&&(m=[0,0],I+=p),S&&(v=[I,0],I+=p),M&&(y=[T-d,0],T-=p)):(w&&(m=[T-d,0],T-=p),S&&(v=[0,0],I+=p),M&&(y=[T-d,0],T-=p)),x=[I,T],t.get("inverse")&&x.reverse(),{viewRect:a,mainLength:u,orient:o,rotation:l[o],labelRotation:g,labelPosOpt:i,labelAlign:r[o],labelBaseline:s[o],playPosition:m,prevBtnPosition:v,nextBtnPosition:y,axisExtent:x,controlSize:d,controlGap:f}},_position:function(t,e){function i(t){var e=t.position;t.origin=[c[0][0]-e[0],c[1][0]-e[1]]}function n(t){return[[t.x,t.x+t.width],[t.y,t.y+t.height]]}function o(t,e,i,n,o){t[n]+=i[n][o]-e[n][o]}var a=this._mainGroup,r=this._labelGroup,s=t.viewRect;if("vertical"===t.orient){var l=g.create(),u=s.x,h=s.y+s.height;g.translate(l,l,[-u,-h]),g.rotate(l,l,-b/2),g.translate(l,l,[u,h]),s=s.clone(),s.applyTransform(l)}var c=n(s),d=n(a.getBoundingRect()),f=n(r.getBoundingRect()),p=a.position,m=r.position;m[0]=p[0]=c[0][0];var v=t.labelPosOpt;if(isNaN(v)){var y="+"===v?0:1;o(p,d,c,1,y),o(m,f,c,1,1-y)}else{var y=v>=0?0:1;o(p,d,c,1,y),m[1]=p[1]+v}a.attr("position",p),r.attr("position",m),a.rotation=r.rotation=t.rotation,i(a),i(r)},_createAxis:function(t,e){var i=e.getData(),n=e.get("axisType"),o=f.createScaleByModel(e,n),a=i.getDataExtent("value");o.setExtent(a[0],a[1]),this._customizeScale(o,i),o.niceTicks();var r=new c("value",o,t.axisExtent,n);return r.model=e,r},_customizeScale:function(t,e){t.getTicks=function(){return e.mapArray(["value"],function(t){return t})},t.getTicksLabels=function(){return s.map(this.getTicks(),t.getLabel,t)}},_createGroup:function(t){var e=this["_"+t]=new l.Group;return this.group.add(e),e},_renderAxisLine:function(t,e,i,n){var o=i.getExtent();n.get("lineStyle.show")&&e.add(new l.Line({shape:{x1:o[0],y1:0,x2:o[1],y2:0},style:s.extend({lineCap:"round"},n.getModel("lineStyle").getLineStyle()),silent:!0,z2:1}))},_renderAxisTick:function(t,e,i,n){var o=n.getData(),r=i.scale.getTicks();_(r,function(t,r){var s=i.dataToCoord(t),u=o.getItemModel(r),h=u.getModel("itemStyle.normal"),c=u.getModel("itemStyle.emphasis"),d={position:[s,0],onclick:x(this._changeTimeline,this,r)},f=a(u,h,e,d);l.setHoverStyle(f,c.getItemStyle()),u.get("tooltip")?(f.dataIndex=r,f.dataModel=n):f.dataIndex=f.dataModel=null},this)},_renderAxisLabel:function(t,e,i,n){var o=n.getModel("label.normal");if(o.get("show")){var a=n.getData(),r=i.scale.getTicks(),s=f.getFormattedLabels(i,o.get("formatter")),u=i.getLabelInterval();_(r,function(n,o){if(!i.isLabelIgnored(o,u)){var r=a.getItemModel(o),h=r.getModel("label.normal.textStyle"),c=r.getModel("label.emphasis.textStyle"),d=i.dataToCoord(n),f=new l.Text({style:{text:s[o],textAlign:t.labelAlign,textVerticalAlign:t.labelBaseline,textFont:h.getFont(),fill:h.getTextColor()},position:[d,0],rotation:t.labelRotation-t.rotation,onclick:x(this._changeTimeline,this,o),silent:!1});e.add(f),l.setHoverStyle(f,c.getItemStyle())}},this)}},_renderControl:function(t,e,i,n){function a(t,i,a,d){if(t){var f={position:t,origin:[r/2,0],rotation:d?-s:0,rectHover:!0,style:u,onclick:a},p=o(n,i,c,f);e.add(p),l.setHoverStyle(p,h)}}var r=t.controlSize,s=t.rotation,u=n.getModel("controlStyle.normal").getItemStyle(),h=n.getModel("controlStyle.emphasis").getItemStyle(),c=[0,-r/2,r,r],d=n.getPlayState(),f=n.get("inverse",!0);a(t.nextBtnPosition,"controlStyle.nextIcon",x(this._changeTimeline,this,f?"-":"+")),a(t.prevBtnPosition,"controlStyle.prevIcon",x(this._changeTimeline,this,f?"+":"-")),a(t.playPosition,"controlStyle."+(d?"stopIcon":"playIcon"),x(this._handlePlayClick,this,!d),!0)},_renderCurrentPointer:function(t,e,i,n){var o=n.getData(),s=n.getCurrentIndex(),l=o.getItemModel(s).getModel("checkpointStyle"),u=this,h={onCreate:function(t){t.draggable=!0,t.drift=x(u._handlePointerDrag,u),t.ondragend=x(u._handlePointerDragend,u),r(t,s,i,n,!0)},onUpdate:function(t){r(t,s,i,n)}};this._currentPointer=a(l,l,this._mainGroup,{},this._currentPointer,h)},_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=this._axis,o=m.asc(n.getExtent().slice());i>o[1]&&(i=o[1]),i<o[0]&&(i=o[0]),this._currentPointer.position[0]=i,this._currentPointer.dirty();var a=this._findNearestTick(i),r=this.model;
+(e||a!==r.getCurrentIndex()&&r.get("realtime"))&&this._changeTimeline(a)},_doPlayStop:function(){function t(){var t=this.model;this._changeTimeline(t.getCurrentIndex()+(t.get("rewind",!0)?-1:1))}this._clearTimer(),this.model.getPlayState()&&(this._timer=setTimeout(x(t,this),this.model.get("playInterval")))},_toAxisCoord:function(t){var e=this._mainGroup.getLocalTransform();return l.applyTransform(t,e,!0)},_findNearestTick:function(t){var e,i=this.model.getData(),n=1/0,o=this._axis;return i.each(["value"],function(i,a){var r=o.dataToCoord(i),s=Math.abs(r-t);s<n&&(n=s,e=a)}),e},_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})}})},function(t,e,i){var n=i(1),o=i(33),a=i(17),r=function(t,e,i,n){o.call(this,t,e,i),this.type=n||"value",this._autoLabelInterval,this.model=null};r.prototype={constructor:r,getLabelInterval:function(){var t=this.model,e=t.getModel("label.normal"),i=e.get("interval");if(null!=i&&"auto"!=i)return i;var i=this._autoLabelInterval;return i||(i=this._autoLabelInterval=a.getAxisLabelInterval(n.map(this.scale.getTicks(),this.dataToCoord,this),a.getFormattedLabels(this,e.get("formatter")),e.getModel("textStyle").getFont(),"horizontal"===t.get("orient"))),i},isLabelIgnored:function(t){if("category"===this.type){var e=this.getLabelInterval();return"function"==typeof e&&!e(t,this.scale.getLabel(t))||t%(e+1)}}},n.inherits(r,o),t.exports=r},function(t,e,i){var n=i(13),o=i(14),a=i(1),r=i(5),s=n.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:{normal:{},emphasis:{}},label:{normal:{textStyle:{color:"#000"}},emphasis:{}},data:[]},init:function(t,e,i){this._data,this._names,this.mergeDefaultAndTheme(t,i),this._initData()},mergeOption:function(t){s.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:(t>=e&&(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,n=this._names=[];if("category"===i){var s=[];a.each(e,function(t,e){var i,o=r.getDataItemValue(t);a.isObject(t)?(i=a.clone(t),i.value=e):i=e,s.push(i),a.isString(o)||null!=o&&!isNaN(o)||(o=""),n.push(o+"")}),e=s}var l={category:"ordinal",time:"time"}[i]||"number",u=this._data=new o([{name:"value",type:l}],this);u.initData(e,n)},getData:function(){return this._data},getCategories:function(){if("category"===this.get("axisType"))return this._names.slice()}});t.exports=s},function(t,e,i){var n=i(64);t.exports=n.extend({type:"timeline"})},function(t,e,i){function n(t){var e=t.type,i={number:"value",time:"time"};if(i[e]&&(t.axisType=i[e],delete t.type),o(t),a(t,"controlPosition")){var n=t.controlStyle||(t.controlStyle={});a(n,"position")||(n.position=t.controlPosition),"none"!==n.position||a(n,"show")||(n.show=!1,delete n.position),delete t.controlPosition}r.each(t.data||[],function(t){r.isObject(t)&&!r.isArray(t)&&(!a(t,"value")&&a(t,"name")&&(t.value=t.name),o(t))})}function o(t){var e=t.itemStyle||(t.itemStyle={}),i=e.emphasis||(e.emphasis={}),n=t.label||t.label||{},o=n.normal||(n.normal={}),s={normal:1,emphasis:1};r.each(n,function(t,e){s[e]||a(o,e)||(o[e]=t)}),i.label&&!a(n,"emphasis")&&(n.emphasis=i.label,delete i.label)}function a(t,e){return t.hasOwnProperty(e)}var r=i(1);t.exports=function(t){var e=t&&t.timeline;r.isArray(e)||(e=e?[e]:[]),r.each(e,function(t){t&&n(t)})}},function(t,e,i){var n=i(2),o=i(1);n.registerAction({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"),o.defaults({currentIndex:i.option.currentIndex},t)}),n.registerAction({type:"timelinePlayChange",event:"timelinePlayChanged",update:"update"},function(t,e){var i=e.getComponent("timeline");i&&null!=t.playState&&i.setPlayState(t.playState)})},function(t,e,i){i(13).registerSubTypeDefaulter("timeline",function(){return"slider"})},function(t,e,i){"use strict";function n(t,e,i){this.model=t,this.ecModel=e,this.api=i,this._brushType,this._brushMode}var o=i(28),a=i(1);n.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:{rect:"矩形选择",polygon:"圈选",lineX:"横向选择",lineY:"纵向选择",keep:"保持选择",clear:"清除选择"}};var r=n.prototype;r.render=r.updateView=r.updateLayout=function(t,e,i){var n,o,r;e.eachComponent({mainType:"brush"},function(t){n=t.brushType,o=t.brushOption.brushMode||"single",r|=t.areas.length}),this._brushType=n,this._brushMode=o,a.each(t.get("type",!0),function(e){t.setIconStatus(e,("keep"===e?"multiple"===o:"clear"===e?r:e===n)?"emphasis":"normal")})},r.getIcons=function(){var t=this.model,e=t.get("icon",!0),i={};return a.each(t.get("type",!0),function(t){e[t]&&(i[t]=e[t])}),i},r.onclick=function(t,e,i){var e=this.api,n=this._brushType,o=this._brushMode;"clear"===i?e.dispatchAction({type:"brush",areas:[]}):e.dispatchAction({type:"takeGlobalCursor",key:"brush",brushOption:{brushType:"keep"===i?n:n!==i&&i,brushMode:"keep"===i?"multiple"===o?"single":"multiple":o}})},o.register("brush",n),t.exports=n},function(t,e,i){i(387),i(388)},function(t,e,i){function n(t,e,i){if(i[0]===i[1])return i.slice();for(var n=200,o=(i[1]-i[0])/n,a=i[0],r=[],s=0;s<=n&&a<i[1];s++)r.push(a),a+=o;return r.push(i[1]),r}var o=i(250),a=i(1),r=i(4),s=[20,140],l=o.extend({type:"visualMap.continuous",defaultOption:{align:"auto",calculable:!1,range:null,realtime:!0,itemHeight:null,itemWidth:null,hoverLink:!0,hoverLinkDataSize:null,hoverLinkOnHandle:!0},optionUpdated:function(t,e){l.superApply(this,"optionUpdated",arguments),this.resetTargetSeries(),this.resetExtent(),this.resetVisual(function(t){t.mappingMethod="linear",t.dataExtent=this.getExtent()}),this._resetRange()},resetItemSize:function(){l.superApply(this,"resetItemSize",arguments);var t=this.itemSize;"horizontal"===this._orient&&t.reverse(),(null==t[0]||isNaN(t[0]))&&(t[0]=s[0]),(null==t[1]||isNaN(t[1]))&&(t[1]=s[1])},_resetRange:function(){var t=this.getExtent(),e=this.option.range;!e||e.auto?(t.auto=1,this.option.range=t):a.isArray(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(){o.prototype.completeVisualOption.apply(this,arguments),a.each(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=r.asc((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(t){var e=[];return this.eachTargetSeries(function(i){var n=[],o=i.getData();o.each(this.getDataDimension(o),function(e,i){t[0]<=e&&e<=t[1]&&n.push(i)},!0,this),e.push({seriesId:i.id,dataIndex:n})},this),e},getVisualMeta:function(t){function e(e,i){a.push({value:e,color:t(e,i)})}for(var i=n(this,"outOfRange",this.getExtent()),o=n(this,"inRange",this.option.range.slice()),a=[],r=0,s=0,l=o.length,u=i.length;s<u&&(!o.length||i[s]<=o[0]);s++)i[s]<o[r]&&e(i[s],"outOfRange");for(var h=1;r<l;r++,h=0)h&&a.length&&e(o[r],"outOfRange"),e(o[r],"inRange");for(var h=1;s<u;s++)(!o.length||o[o.length-1]<i[s])&&(h&&(a.length&&e(a[a.length-1].value,"outOfRange"),h=0),e(i[s],"outOfRange"));var c=a.length;return{stops:a,outerColors:[c?a[0].color:"transparent",c?a[c-1].color:"transparent"]}}});t.exports=l},function(t,e,i){function n(t,e,i,n){return new u.Polygon({shape:{points:t},draggable:!!i,cursor:e,drift:i,onmousemove:function(t){m.stop(t.event)},ondragend:n})}function o(t,e){return 0===t?[[0,0],[e,0],[e,-e]]:[[0,0],[e,0],[e,e]]}function a(t,e,i,n){return t?[[0,-x(e,_(i,0))],[w,0],[0,x(e,_(n-i,0))]]:[[0,0],[5,-5],[5,5]]}function r(t,e,i){var n=b/2,o=t.get("hoverLinkDataSize");return o&&(n=v(o,e,i,!0)/2),n}function s(t){return!t.get("realtime")&&t.get("hoverLinkOnHandle")}var l=i(251),u=i(3),h=i(1),c=i(4),d=i(95),f=i(101),p=i(252),g=i(5),m=i(20),v=c.linearMap,y=h.each,x=Math.min,_=Math.max,b=12,w=6,S=l.extend({type:"visualMap.continuous",init:function(){S.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 o=this.visualMapModel,a=o.get("textGap"),r=o.itemSize,s=this._shapes.barGroup,l=this._applyTransform([r[0]/2,0===i?-a:r[1]+a],s),h=this._applyTransform(0===i?"bottom":"top",s),c=this._orient,d=this.visualMapModel.textStyleModel;this.group.add(new u.Text({style:{x:l[0],y:l[1],textVerticalAlign:"horizontal"===c?"middle":h,textAlign:"horizontal"===c?h:"center",text:n,textFont:d.getFont(),fill:d.getTextColor()}}))}},_renderBar:function(t){var e=this.visualMapModel,i=this._shapes,o=e.itemSize,a=this._orient,r=this._useHandle,s=p.getItemAlign(e,this.api,o),l=i.barGroup=this._createBarGroup(s);l.add(i.outOfRange=n()),l.add(i.inRange=n(null,r?"move":null,h.bind(this._dragHandle,this,"all",!1),h.bind(this._dragHandle,this,"all",!0)));var u=e.textStyleModel.getTextRect("国"),c=_(u.width,u.height);r&&(i.handleThumbs=[],i.handleLabels=[],i.handleLabelPoints=[],this._createHandle(l,0,o,c,a,s),this._createHandle(l,1,o,c,a,s)),this._createIndicator(l,o,c,a),t.add(l)},_createHandle:function(t,e,i,a,r){var s=h.bind(this._dragHandle,this,e,!1),l=h.bind(this._dragHandle,this,e,!0),c=n(o(e,a),"move",s,l);c.position[0]=i[0],t.add(c);var d=this.visualMapModel.textStyleModel,f=new u.Text({draggable:!0,drift:s,onmousemove:function(t){m.stop(t.event)},ondragend:l,style:{x:0,y:0,text:"",textFont:d.getFont(),fill:d.getTextColor()}});this.group.add(f);var p=["horizontal"===r?a/2:1.5*a,"horizontal"===r?0===e?-(1.5*a):1.5*a:0===e?-a/2:a/2],g=this._shapes;g.handleThumbs[e]=c,g.handleLabelPoints[e]=p,g.handleLabels[e]=f},_createIndicator:function(t,e,i,o){var a=n([[0,0]],"move");a.position[0]=e[0],a.attr({invisible:!0,silent:!0}),t.add(a);var r=this.visualMapModel.textStyleModel,s=new u.Text({silent:!0,invisible:!0,style:{x:0,y:0,text:"",textFont:r.getFont(),fill:r.getTextColor()}});this.group.add(s);var l=["horizontal"===o?i/2:w+3,0],h=this._shapes;h.indicator=a,h.indicatorLabel=s,h.indicatorLabelPoint=l},_dragHandle:function(t,e,i,n){if(this._useHandle){if(this._dragging=!e,!e){var o=this._applyTransform([i,n],this._shapes.barGroup,!0);this._updateInterval(t,o[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():s(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=[v(e[0],i,n,!0),v(e[1],i,n,!0)]},_updateInterval:function(t,e){e=e||0;var i=this.visualMapModel,n=this._handleEnds;d(e,n,[0,i.itemSize[1]],"all"===t?"rigid":"push",t);var o=i.getExtent(),a=[0,i.itemSize[1]];this._dataInterval=[v(n[0],a,o,!0),v(n[1],a,o,!0)]},_updateView:function(t){var e=this.visualMapModel,i=e.getExtent(),n=this._shapes,o=[0,e.itemSize[1]],a=t?o:this._handleEnds,r=this._createBarVisual(this._dataInterval,i,a,"inRange"),s=this._createBarVisual(i,i,o,"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(a,r)},_createBarVisual:function(t,e,i,n){var o={forceState:n,convertOpacityToAlpha:!0},a=this._makeColorGradient(t,o),r=[this.getControllerVisual(t[0],"symbolSize",o),this.getControllerVisual(t[1],"symbolSize",o)],s=this._createBarPoints(i,r);return{barColor:new f(0,0,0,1,a),barPoints:s,handlesColor:[a[0].color,a[a.length-1].color]}},_makeColorGradient:function(t,e){var i=100,n=[],o=(t[1]-t[0])/i;n.push({color:this.getControllerVisual(t[0],"color",e),offset:0});for(var a=1;a<i;a++){var r=t[0]+o*a;if(r>t[1])break;n.push({color:this.getControllerVisual(r,"color",e),offset:a/i})}return n.push({color:this.getControllerVisual(t[1],"color",e),offset:1}),n},_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 u.Group("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(t,e){if(this._useHandle){var i=this._shapes,n=this.visualMapModel,o=i.handleThumbs,a=i.handleLabels;y([0,1],function(r){var s=o[r];s.setStyle("fill",e.handlesColor[r]),s.position[1]=t[r];var l=u.applyTransform(i.handleLabelPoints[r],u.getTransform(s,this.group));a[r].setStyle({x:l[0],y:l[1],text:n.formatValueText(this._dataInterval[r]),textVerticalAlign:"middle",textAlign:this._applyTransform("horizontal"===this._orient?0===r?"bottom":"top":"left",i.barGroup)})},this)}},_showIndicator:function(t,e,i,n){var o=this.visualMapModel,r=o.getExtent(),s=o.itemSize,l=[0,s[1]],h=v(t,r,l,!0),c=this._shapes,d=c.indicator;if(d){d.position[1]=h,d.attr("invisible",!1),d.setShape("points",a(!!i,n,h,s[1]));var f={convertOpacityToAlpha:!0},p=this.getControllerVisual(t,"color",f);d.setStyle("fill",p);var g=u.applyTransform(c.indicatorLabelPoint,u.getTransform(d,this.group)),m=c.indicatorLabel;m.attr("invisible",!1);var y=this._applyTransform("left",c.barGroup),x=this._orient;m.setStyle({text:(i?i:"")+o.formatValueText(e),textVerticalAlign:"horizontal"===x?y:"middle",textAlign:"horizontal"===x?"center":y,x:g[0],y:g[1]})}},_enableHoverLinkToSeries:function(){var t=this;this._shapes.barGroup.on("mousemove",function(e){if(t._hovering=!0,!t._dragging){var i=t.visualMapModel.itemSize,n=t._applyTransform([e.offsetX,e.offsetY],t._shapes.barGroup,!0,!0);n[1]=x(_(0,n[1]),i[1]),t._doHoverLinkToSeries(n[1],0<=n[0]&&n[0]<=i[0])}}).on("mouseout",function(){t._hovering=!1,!t._dragging&&t._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 o=[0,n[1]],a=i.getExtent();t=x(_(o[0],t),o[1]);var l=r(i,a,o),u=[t-l,t+l],h=v(t,o,a,!0),c=[v(u[0],o,a,!0),v(u[1],o,a,!0)];u[0]<o[0]&&(c[0]=-(1/0)),u[1]>o[1]&&(c[1]=1/0),e&&(c[0]===-(1/0)?this._showIndicator(h,c[1],"< ",l):c[1]===1/0?this._showIndicator(h,c[0],"> ",l):this._showIndicator(h,h,"≈ ",l));var d=this._hoverLinkDataIndices,f=[];(e||s(i))&&(f=this._hoverLinkDataIndices=i.findTargetDataIndices(c));var m=g.compressBatches(d,f);this._dispatchHighDown("downplay",p.convertDataIndex(m[0])),this._dispatchHighDown("highlight",p.convertDataIndex(m[1]))}},_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 o=n.getData(e.dataType),a=o.getDimension(i.getDataDimension(o)),r=o.get(a,e.dataIndex,!0);isNaN(r)||this._showIndicator(r,r)}}},_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",p.convertDataIndex(t)),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 o=u.getTransform(e,n?null:this.group);return u[h.isArray(t)?"applyTransform":"transformDirection"](t,o,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()}});t.exports=S},function(t,e,i){function n(t,e){var i=t.inverse;("vertical"===t.orient?!i:i)&&e.reverse()}var o=i(250),a=i(1),r=i(82),s=i(263),l=i(4).reformIntervals,u=o.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){u.superApply(this,"optionUpdated",arguments),this._pieceList=[],this.resetTargetSeries(),this.resetExtent();var i=this._mode=this._determineMode();h[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=a.clone(n)):(t.dataExtent=this.getExtent(),t.mappingMethod="piecewise",t.pieceList=a.map(this._pieceList,function(t){var t=a.clone(t);return"inRange"!==e&&(t.visual=null),t}))})},completeVisualOption:function(){function t(t,e,i){return t&&t[e]&&(a.isObject(t[e])?t[e].hasOwnProperty(i):t[e]===i)}var e=this.option,i={},n=r.listVisualTypes(),l=this.isCategory();a.each(e.pieces,function(t){a.each(n,function(e){t.hasOwnProperty(e)&&(i[e]=1)})}),a.each(i,function(i,n){var o=0;a.each(this.stateList,function(i){o|=t(e,i,n)||t(e.target,i,n)},this),!o&&a.each(this.stateList,function(t){(e[t]||(e[t]={}))[n]=s.get(n,"inRange"===t?"active":"inactive",l)})},this),o.prototype.completeVisualOption.apply(this,arguments)},_resetSelected:function(t,e){var i=this.option,n=this._pieceList,o=(e?i:t).selected||{};if(i.selected=o,a.each(n,function(t,e){var i=this.getSelectedMapKey(t);o.hasOwnProperty(i)||(o[i]=!0)},this),"single"===i.selectedMode){var r=!1;a.each(n,function(t,e){var i=this.getSelectedMapKey(t);o[i]&&(r?o[i]=!1:r=!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&&t.pieces.length>0?"pieces":this.option.categories?"categories":"splitNumber"},setSelected:function(t){this.option.selected=a.clone(t)},getValueState:function(t){var e=r.findPieceIndex(t,this._pieceList);return null!=e&&this.option.selected[this.getSelectedMapKey(this._pieceList[e])]?"inRange":"outOfRange"},findTargetDataIndices:function(t){var e=[];return this.eachTargetSeries(function(i){var n=[],o=i.getData();o.each(this.getDataDimension(o),function(e,i){var o=r.findPieceIndex(e,this._pieceList);o===t&&n.push(i)},!0,this),e.push({seriesId:i.id,dataIndex:n})},this),e},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(t){function e(e,a){var r=o.getRepresentValue({interval:e});a||(a=o.getValueState(r));var s=t(r,a);e[0]===-(1/0)?n[0]=s:e[1]===1/0?n[1]=s:i.push({value:e[0],color:s},{value:e[1],color:s})}if(!this.isCategory()){var i=[],n=[],o=this,r=this._pieceList.slice();if(r.length){var s=r[0].interval[0];s!==-(1/0)&&r.unshift({interval:[-(1/0),s]}),s=r[r.length-1].interval[1],s!==1/0&&r.push({interval:[s,1/0]})}else r.push({interval:[-(1/0),1/0]});var l=-(1/0);return a.each(r,function(t){var i=t.interval;i&&(i[0]>l&&e([l,i[0]],"outOfRange"),e(i.slice()),l=i[1])},this),{stops:i,outerColors:n}}}}),h={splitNumber:function(){var t=this.option,e=this._pieceList,i=t.precision,n=this.getExtent(),o=t.splitNumber;o=Math.max(parseInt(o,10),1),t.splitNumber=o;for(var r=(n[1]-n[0])/o;+r.toFixed(i)!==r&&i<5;)i++;t.precision=i,r=+r.toFixed(i);var s=0;t.minOpen&&e.push({index:s++,interval:[-(1/0),n[0]],close:[0,0]});for(var u=n[0],h=s+o;s<h;u+=r){var c=s===o-1?n[1]:u+r;e.push({index:s++,interval:[u,c],close:[1,1]})}t.maxOpen&&e.push({index:s++,interval:[n[1],1/0],close:[0,0]}),l(e),a.each(e,function(t){t.text=this.formatValueText(t.interval)},this)},categories:function(){var t=this.option;a.each(t.categories,function(t){this._pieceList.push({text:this.formatValueText(t,!0),value:t})},this),n(t,this._pieceList)},pieces:function(){var t=this.option,e=this._pieceList;a.each(t.pieces,function(t,i){a.isObject(t)||(t={value:t});var n={text:"",index:i};if(null!=t.label&&(n.text=t.label),t.hasOwnProperty("value")){var o=n.value=t.value;n.interval=[o,o],n.close=[1,1]}else{for(var s=n.interval=[],l=n.close=[0,0],u=[1,0,1],h=[-(1/0),1/0],c=[],d=0;d<2;d++){for(var f=[["gte","gt","min"],["lte","lt","max"]][d],p=0;p<3&&null==s[d];p++)s[d]=t[f[p]],l[d]=u[p],c[d]=2===p;null==s[d]&&(s[d]=h[d])}c[0]&&s[1]===1/0&&(l[0]=0),c[1]&&s[0]===-(1/0)&&(l[1]=0),s[0]===s[1]&&l[0]&&l[1]&&(n.value=s[0])}n.visual=r.retrieveVisuals(t),e.push(n)},this),n(t,e),l(e),a.each(e,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)}};t.exports=u},function(t,e,i){var n=i(251),o=i(1),a=i(3),r=i(24),s=i(12),l=i(252),u=n.extend({type:"visualMap.piecewise",doRender:function(){function t(t){var r=t.piece,s=new a.Group;s.onclick=o.bind(this._onItemClick,this,r),this._enableHoverLink(s,t.indexInModelPieceList);var d=i.getRepresentValue(r);if(this._createItemSymbol(s,d,[0,0,c[0],c[1]]),p){var f=this.visualMapModel.getValueState(d);s.add(new a.Text({style:{x:"right"===h?-n:c[0]+n,y:c[1]/2,text:r.text,textVerticalAlign:"middle",textAlign:h,textFont:l,fill:u,opacity:"outOfRange"===f?.5:1}}))}e.add(s)}var e=this.group;e.removeAll();var i=this.visualMapModel,n=i.get("textGap"),r=i.textStyleModel,l=r.getFont(),u=r.getTextColor(),h=this._getItemAlign(),c=i.itemSize,d=this._getViewData(),f=d.endsText,p=o.retrieve(i.get("showLabel",!0),!f);f&&this._renderEndsText(e,f[0],c,p,h),o.each(d.viewPieceList,t,this),f&&this._renderEndsText(e,f[1],c,p,h),s.box(i.get("orient"),e,i.get("itemGap")),this.renderBackground(e),this.positionGroup(e)},_enableHoverLink:function(t,e){function i(t){var i=this.visualMapModel;i.option.hoverLink&&this.api.dispatchAction({type:t,batch:l.convertDataIndex(i.findTargetDataIndices(e))})}t.on("mouseover",o.bind(i,this,"highlight")).on("mouseout",o.bind(i,this,"downplay"))},_getItemAlign:function(){var t=this.visualMapModel,e=t.option;if("vertical"===e.orient)return l.getItemAlign(t,this.api,t.itemSize);var i=e.align;return i&&"auto"!==i||(i="left"),i},_renderEndsText:function(t,e,i,n,o){if(e){var r=new a.Group,s=this.visualMapModel.textStyleModel;r.add(new a.Text({style:{x:n?"right"===o?i[0]:0:i[0]/2,y:i[1]/2,textVerticalAlign:"middle",textAlign:n?o:"center",text:e,textFont:s.getFont(),fill:s.getTextColor()}})),t.add(r)}},_getViewData:function(){var t=this.visualMapModel,e=o.map(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(r.createSymbol(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=o.clone(i.selected),a=e.getSelectedMapKey(t);"single"===i.selectedMode?(n[a]=!0,o.each(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})}});t.exports=u},function(t,e,i){i(2).registerPreprocessor(i(253)),i(254),i(255),i(383),i(384),i(256)},function(t,e,i){i(2).registerPreprocessor(i(253)),i(254),i(255),i(385),i(386),i(256)},function(t,e,i){"use strict";function n(t,e,i){this._model=t}function o(t,e,i,n){var o=i.calendarModel,a=i.seriesModel,r=o?o.coordinateSystem:a?a.coordinateSystem:null;return r===this?r[t](n):null}var a=i(12),r=i(4),s=i(1),l=864e5;n.prototype={constructor:n,type:"calendar",dimensions:["time","value"],getDimensionsInfo:function(){return[{name:"time",type:"time"}]},getHandledRangeInfo: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){t=r.parseDate(t);var e=t.getFullYear(),i=t.getMonth()+1;i=i<10?"0"+i:i;var n=t.getDate();n=n<10?"0"+n:n;var o=t.getDay();return o=Math.abs((o+7-this.getFirstDayOfWeek())%7),{y:e,m:i,d:n,day:o,time:t.getTime(),formatedDate:e+"-"+i+"-"+n,date:t}},getNextNDay:function(t,e){if(e=e||0,0===e)return this.getDateInfo(t);var i=this.getDateInfo(t).time;return this.getDateInfo(i+l*e)},update:function(t,e){function i(t,e){return null!=t[e]&&"auto"!==t[e]}this._firstDayOfWeek=this._model.getModel("dayLabel").get("firstDay"),this._orient=this._model.get("orient"),this._lineWidth=this._model.getModel("itemStyle.normal").getItemStyle().lineWidth||0,this._rangeInfo=this._getRangeInfo(this._initRangeOption());var n=this._rangeInfo.weeks||1,o=["width","height"],r=this._model.get("cellSize").slice(),l=this._model.getBoxLayoutParams(),u="horizontal"===this._orient?[n,7]:[7,n];s.each([0,1],function(t){i(r,t)&&(l[o[t]]=r[t]*u[t])});var h={width:e.getWidth(),height:e.getHeight()},c=this._rect=a.getLayoutRect(l,h);s.each([0,1],function(t){i(r,t)||(r[t]=c[o[t]]/u[t])}),this._sw=r[0],this._sh=r[1]},dataToPoint:function(t,e){var i=this.getDateInfo(t[0]),n=this._rangeInfo,o=i.formatedDate;if(!(e||i.time>=n.start.time&&i.time<=n.end.time))return[NaN,NaN];var a=i.day,r=this._getRangeInfo([n.start.time,o]).weeks;return"vertical"===this._orient?[this._rect.x+a*this._sw+this._sw/2,this._rect.y+(r-1)*this._sh+this._sh/2]:[this._rect.x+(r-1)*this._sw+this._sw/2,this._rect.y+a*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:s.curry(o,"dataToPoint"),convertFromPixel:s.curry(o,"pointToData"),_initRangeOption:function(){var t=this._model.get("range"),e=t;if(s.isArray(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 o=this.getNextNDay(n,-1);t=[i.formatedDate,o.formatedDate]}/^\d{4}[\/|-]\d{1,2}[\/|-]\d{1,2}$/.test(e)&&(t=[e,e]);var a=this._getRangeInfo(t);return a.start.time>a.end.time&&t.reverse(),t},_getRangeInfo:function(t){var e=this.getDateInfo(t[0]),i=this.getDateInfo(t[1]),n=Math.floor(i.time/l)-Math.floor(e.time/l)+1,o=Math.floor((n+e.day+6)/7);return{range:[e.formatedDate,i.formatedDate],start:e,end:i,allDay:n,weeks:o,fweek:e.day,lweek:i.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 o=7*(t-1)-n.fweek+e,a=n.start.time+o*l;return this.getDateInfo(a)}},n.dimensions=n.prototype.dimensions,n.getDimensionsInfo=n.prototype.getDimensionsInfo,n.create=function(t,e){var i=[];return t.eachComponent("calendar",function(o){var a=new n(o,t,e);i.push(a),o.coordinateSystem=a}),t.eachSeries(function(t){"calendar"===t.get("coordinateSystem")&&(t.coordinateSystem=i[t.get("calendarIndex")||0])}),i},i(26).register("calendar",n),t.exports=n},function(t,e,i){"use strict";function n(t,e){var i=t.cellSize;a.isArray(i)?1===i.length&&(i[1]=i[0]):i=t.cellSize=[i,i];var n=a.map([0,1],function(t){return r.sizeCalculable(e,t)&&(i[t]="auto"),null!=i[t]&&"auto"!==i[t]});r.mergeLayoutParam(t,e,{type:"box",ignoreSize:n})}var o=i(13),a=i(1),r=i(12),s=o.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:{normal:{color:"#fff",borderWidth:1,borderColor:"#ccc"}},dayLabel:{show:!0,firstDay:0,position:"start",margin:"50%",nameMap:"en",textStyle:{color:"#000"}},monthLabel:{show:!0,position:"start",margin:5,align:"center",nameMap:"en",formatter:null,textStyle:{color:"#000"}},yearLabel:{show:!0,position:null,margin:30,formatter:null,textStyle:{color:"#ccc",fontFamily:"sans-serif",fontWeight:"bolder",fontSize:20}}},init:function(t,e,i,o){var a=r.getLayoutParams(t);s.superApply(this,"init",arguments),n(t,a)},mergeOption:function(t,e){s.superApply(this,"mergeOption",arguments),
+n(this.option,t)}});t.exports=s},function(t,e,i){function n(t,e,i,n,o){l.call(this,t),this.map=e,this._nameCoordMap={},this.loadGeoJson(i,n,o)}function o(t,e,i,n){var o=i.geoModel,a=i.seriesModel,r=o?o.coordinateSystem:a?a.coordinateSystem||(a.getReferringComponents("geo")[0]||{}).coordinateSystem:null;return r===this?r[t](n):null}var a=i(259),r=i(1),s=i(11),l=i(257),u=[i(394),i(395),i(393)];n.prototype={constructor:n,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},loadGeoJson:function(t,e,i){try{this.regions=t?a(t):[]}catch(n){throw"Invalid geoJson format\n"+n.message}e=e||{},i=i||{};for(var o=this.regions,s={},l=0;l<o.length;l++){var h=o[l].name;h=i[h]||h,o[l].name=h,s[h]=o[l],this.addGeoCoord(h,o[l].center);var c=e[h];c&&o[l].transformTo(c.left,c.top,c.width,c.height)}this._regionsMap=s,this._rect=null,r.each(u,function(t){t(this)},this)},transformTo:function(t,e,i,n){var o=this.getBoundingRect();o=o.clone(),o.y=-o.y-o.height;var a=this._viewTransform;a.transform=o.calculateTransform(new s(t,e,i,n)),a.decomposeTransform();var r=a.scale;r[1]=-r[1],a.updateTransform(),this._updateTransform()},getRegion:function(t){return this._regionsMap[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[t]=e},getGeoCoord:function(t){return this._nameCoordMap[t]},getBoundingRect:function(){if(this._rect)return this._rect;for(var t,e=this.regions,i=0;i<e.length;i++){var n=e[i].getBoundingRect();t=t||n.clone(),t.union(n)}return this._rect=t||new s(0,0,0,0)},dataToPoints:function(t){var e=[];return t.mapArray(["lng","lat"],function(t,i){return e[0]=t,e[1]=i,this.dataToPoint(e)},this)},dataToPoint:function(t){if("string"==typeof t&&(t=this.getGeoCoord(t)),t)return l.prototype.dataToPoint.call(this,t)},convertToPixel:r.curry(o,"dataToPoint"),convertFromPixel:r.curry(o,"pointToData")},r.mixin(n,l),t.exports=n},function(t,e,i){"use strict";var n=i(5),o=i(13),a=i(10),r=i(1),s=i(78),l=i(187),u=o.extend({type:"geo",coordinateSystem:null,layoutMode:"box",init:function(t){o.prototype.init.apply(this,arguments),n.defaultEmphasis(t.label,["position","show","textStyle","distance","formatter"])},optionUpdated:function(){var t=this.option,e=this;t.regions=l.getFilledRegions(t.regions,t.map),this._optionModelMap=r.reduce(t.regions||[],function(t,i){return i.name&&(t[i.name]=new a(i,e)),t},{}),this.updateSelectedMap(t.regions)},defaultOption:{zlevel:0,z:0,show:!0,left:"center",top:"center",aspectScale:.75,silent:!1,map:"",boundingCoords:null,center:null,zoom:1,scaleLimit:null,label:{normal:{show:!1,textStyle:{color:"#000"}},emphasis:{show:!0,textStyle:{color:"rgb(100,0,0)"}}},itemStyle:{normal:{borderWidth:.5,borderColor:"#444",color:"#eee"},emphasis:{color:"rgba(255,215,0,0.8)"}},regions:[]},getRegionModel:function(t){return this._optionModelMap[t]||new a(null,this,this.ecModel)},getFormattedLabel:function(t,e){var i=this.getRegionModel(t),n=i.get("label."+e+".formatter"),o={name:t};if("function"==typeof n)return o.status=e,n(o);if("string"==typeof n){var a=o.seriesName;return n.replace("{a}",null!=a?a:"")}},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t}});r.mixin(u,s),t.exports=u},function(t,e,i){var n=i(1),o={Russia:[100,60],"United States":[-99,38],"United States of America":[-99,38]};t.exports=function(t){n.each(t.regions,function(t){var e=o[t.name];if(e){var i=t.center;i[0]=e[0],i[1]=e[1]}})}},function(t,e,i){for(var n=i(258),o=i(1),a=[126,25],r=[[[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]]],s=0;s<r.length;s++)for(var l=0;l<r[s].length;l++)r[s][l][0]/=10.5,r[s][l][1]/=-14,r[s][l][0]+=a[0],r[s][l][1]+=a[1];t.exports=function(t){"china"===t.map&&t.regions.push(new n("南海诸岛",o.map(r,function(t){return{type:"polygon",exterior:t}}),a))}},function(t,e,i){var n=i(1),o={"南海诸岛":[32,80],"广东":[0,-10],"香港":[10,5],"澳门":[-10,10],"天津":[5,5]};t.exports=function(t){n.each(t.regions,function(t){var e=o[t.name];if(e){var i=t.center;i[0]+=e[0]/10.5,i[1]+=-e[1]/14}})}},function(t,e,i){function n(t,e){return e.type||(e.data?"category":"value")}var o=i(13),a=i(1),r=i(31),s=i(59),l=i(4),u=o.extend({type:"baseParallelAxis",axis:null,activeIntervals:[],getAreaSelectStyle:function(){return r([["fill","color"],["lineWidth","borderWidth"],["stroke","borderColor"],["width","width"],["opacity","opacity"]]).call(this.getModel("areaSelectStyle"))},setActiveIntervals:function(t){var e=this.activeIntervals=a.clone(t);if(e)for(var i=e.length-1;i>=0;i--)l.asc(e[i])},getActiveState:function(t){var e=this.activeIntervals;if(!e.length)return"normal";if(null==t)return"inactive";for(var i=0,n=e.length;i<n;i++)if(e[i][0]<=t&&t<=e[i][1])return"active";return"inactive"}}),h={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};a.merge(u.prototype,i(42)),s("parallel",u,n,h),t.exports=u},function(t,e,i){function n(t,e,i){this._axesMap={},this._axesLayout={},this.dimensions=t.dimensions,this._rect,this._model=t,this._init(t,e,i)}var o=i(12),a=i(17),r=i(1),s=i(398),l=i(3),u=i(19),h=r.each,c=Math.PI;n.prototype={type:"parallel",constructor:n,_init:function(t,e,i){var n=t.dimensions,o=t.parallelAxisIndex;h(n,function(t,i){var n=o[i],r=e.getComponent("parallelAxis",n),l=this._axesMap[t]=new s(t,a.createScaleByModel(r),[0,0],r.get("type"),n),u="category"===l.type;l.onBand=u&&r.get("boundaryGap"),l.inverse=r.get("inverse"),r.axis=l,l.model=r},this)},update:function(t,e){this._updateAxesFromSeries(this._model,t)},_updateAxesFromSeries:function(t,e){e.eachSeries(function(i){if(t.contains(i,e)){var n=i.getData();h(this.dimensions,function(t){var e=this._axesMap[t];e.scale.unionExtentFromData(n,t),a.niceScaleExtent(e.scale,e.model)},this)}},this)},resize:function(t,e){this._rect=o.getLayoutRect(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()}),this._layoutAxes(t)},getRect:function(){return this._rect},_layoutAxes:function(t){var e=this._rect,i=t.get("layout"),n=this._axesMap,o=this.dimensions,a=[e.width,e.height],r="horizontal"===i?0:1,s=a[r],l=a[1-r],d=[0,l];h(n,function(t){var e=t.inverse?1:0;t.setExtent(d[e],d[1-e])});var f,p=t.get("axisExpandable"),g=t.get("axisExpandWidth"),m=t.get("axisExpandCenter"),v=t.get("axisExpandCount")||0;if(null!=m){var y=Math.max(0,Math.floor(m-(v-1)/2)),x=y+v-1;x>=o.length&&(x=o.length-1,y=Math.max(0,Math.floor(x-v+1))),f=[y,x]}var _=p&&f&&g?function(t,e,i){var n,o=f[1]-f[0],a=(e-g*o)/(i-1-o);return n=t<f[0]?(t-1)*a:t<=f[1]?f[0]*a+(t-f[0])*g:t===i-1?e:f[0]*a+o*g+(t-f[1])*a,{position:n,axisNameAvailableWidth:f[0]<t&&t<f[1]?g:a}}:function(t,e,i){var n=e/(i-1);return{position:n*t,axisNameAvailableWidth:n}};h(o,function(t,n){var a=_(n,s,o.length),r={horizontal:{x:a.position,y:l},vertical:{x:0,y:a.position}},h={horizontal:c/2,vertical:0},d=[r[i].x+e.x,r[i].y+e.y],p=h[i],g=u.create();u.rotate(g,g,p),u.translate(g,g,d),this._axesLayout[t]={position:d,rotation:p,transform:g,axisNameAvailableWidth:a.axisNameAvailableWidth,tickDirection:1,labelDirection:1,axisExpandWindow:f}},this)},getAxis:function(t){return this._axesMap[t]},dataToPoint:function(t,e){return this.axisCoordToPoint(this._axesMap[e].dataToCoord(t),e)},eachActiveState:function(t,e,i){for(var n=this.dimensions,o=this._axesMap,a=this.hasAxisbrushed(),r=0,s=t.count();r<s;r++){var l,u=t.getValues(n,r);if(a){l="active";for(var h=0,c=n.length;h<c;h++){var d=n[h],f=o[d].model.getActiveState(u[h],h);if("inactive"===f){l="inactive";break}}}else l="normal";e.call(i,l,r)}},hasAxisbrushed:function(){for(var t=this.dimensions,e=this._axesMap,i=!1,n=0,o=t.length;n<o;n++)"normal"!==e[t[n]].model.getActiveState()&&(i=!0);return i},axisCoordToPoint:function(t,e){var i=this._axesLayout[e];return l.applyTransform([t,0],i.transform)},getAxisLayout:function(t){return r.clone(this._axesLayout[t])},findClosestAxisDim:function(t){var e,i=1/0;return r.each(this._axesLayout,function(n,o){var a=l.applyTransform(t,n.transform,!0),r=this._axesMap[o].getExtent();if(!(a[0]<r[0]||a[0]>r[1])){var s=Math.abs(a[1]);s<i&&(i=s,e=o)}},this),e}},t.exports=n},function(t,e,i){var n=i(1),o=i(33),a=function(t,e,i,n,a){o.call(this,t,e,i),this.type=n||"value",this.axisIndex=a};a.prototype={constructor:a,model:null},n.inherits(a,o),t.exports=a},function(t,e,i){var n=i(1),o=i(13);i(396),o.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,parallelAxisDefault:null},init:function(){o.prototype.init.apply(this,arguments),this.mergeOption({})},mergeOption:function(t){var e=this.option;t&&n.merge(e,t,!0),this._initDimensions()},contains:function(t,e){var i=t.get("parallelIndex");return null!=i&&e.getComponent("parallel",i)===this},setAxisExpand:function(t){n.each(["axisExpandable","axisExpandCenter","axisExpandCount","axisExpandWidth"],function(e){t.hasOwnProperty(e)&&(this.option[e]=t[e])},this)},_initDimensions:function(){var t=this.dimensions=[],e=this.parallelAxisIndex=[],i=n.filter(this.dependentModels.parallelAxis,function(t){return t.get("parallelIndex")===this.componentIndex});n.each(i,function(i){t.push("dim"+i.get("dim")),e.push(i.componentIndex)})}})},function(t,e,i){function n(t){if(!t.parallel){var e=!1;a.each(t.series,function(t){t&&"parallel"===t.type&&(e=!0)}),e&&(t.parallel=[{}])}}function o(t){var e=r.normalizeToArray(t.parallelAxis);a.each(e,function(e){if(a.isObject(e)){var i=e.parallelIndex||0,n=r.normalizeToArray(t.parallel)[i];n&&n.parallelAxisDefault&&a.merge(e,n.parallelAxisDefault,!1)}})}var a=i(1),r=i(5);t.exports=function(t){n(t),o(t)}},function(t,e,i){"use strict";function n(t,e){e=e||[0,360],a.call(this,"angle",t,e),this.type="category"}var o=i(1),a=i(33);n.prototype={constructor:n,pointToData:function(t,e){return this.polar.pointToData(t,e)["radius"===this.dim?0:1]},dataToAngle:a.prototype.dataToCoord,angleToData:a.prototype.coordToData},o.inherits(n,a),t.exports=n},function(t,e,i){"use strict";function n(t,e){return e.type||(e.data?"category":"value")}var o=i(1),a=i(13),r=i(59),s=a.extend({type:"polarAxis",axis:null,getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"polar",index:this.option.polarIndex,id:this.option.polarId})[0]}});o.merge(s.prototype,i(42));var l={angle:{startAngle:90,clockwise:!0,splitNumber:12,axisLabel:{rotate:!1}},radius:{splitNumber:5}};r("angle",s,n,l.angle),r("radius",s,n,l.radius)},function(t,e,i){"use strict";var n=i(405),o=i(401),a=function(t){this.name=t||"",this.cx=0,this.cy=0,this._radiusAxis=new n,this._angleAxis=new o,this._radiusAxis.polar=this._angleAxis.polar=this};a.prototype={type:"polar",axisPointerEnabled:!0,constructor:a,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)]}},dataToPoints:function(t){return t.mapArray(this.dimensions,function(t,e){return this.dataToPoint([t,e])},this)},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(),o=n.getExtent(),a=Math.min(o[0],o[1]),r=Math.max(o[0],o[1]);n.inverse?a=r-360:r=a+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<a?1:-1;l<a||l>r;)l+=360*u;return[s,l]},coordToPoint:function(t){var e=t[0],i=t[1]/180*Math.PI,n=Math.cos(i)*e+this.cx,o=-Math.sin(i)*e+this.cy;return[n,o]}},t.exports=a},function(t,e,i){"use strict";i(402),i(2).extendComponentModel({type:"polar",dependencies:["polarAxis","angleAxis"],coordinateSystem:null,findAxisModel:function(t){var e,i=this.ecModel;return i.eachComponent(t,function(t){t.getCoordSysModel()===this&&(e=t)},this),e},defaultOption:{zlevel:0,z:0,center:["50%","50%"],radius:"80%"}})},function(t,e,i){"use strict";function n(t,e){a.call(this,"radius",t,e),this.type="category"}var o=i(1),a=i(33);n.prototype={constructor:n,pointToData:function(t,e){return this.polar.pointToData(t,e)["radius"===this.dim?0:1]},dataToRadius:a.prototype.dataToCoord,radiusToData:a.prototype.coordToData},o.inherits(n,a),t.exports=n},function(t,e,i){function n(t,e,i){a.call(this,t,e,i),this.type="value",this.angle=0,this.name="",this.model}var o=i(1),a=i(33);o.inherits(n,a),t.exports=n},function(t,e,i){function n(t,e,i){this._model=t,this.dimensions=[],this._indicatorAxes=o.map(t.getIndicatorModels(),function(t,e){var i="indicator_"+e,n=new a(i,new r);return n.name=t.get("name"),n.model=t,t.axis=n,this.dimensions.push(i),n},this),this.resize(t,i),this.cx,this.cy,this.r,this.startAngle}var o=i(1),a=i(406),r=i(43),s=i(4),l=i(17);n.prototype.getIndicatorAxes=function(){return this._indicatorAxes},n.prototype.dataToPoint=function(t,e){var i=this._indicatorAxes[e];return this.coordToPoint(i.dataToCoord(t),e)},n.prototype.coordToPoint=function(t,e){var i=this._indicatorAxes[e],n=i.angle,o=this.cx+t*Math.cos(n),a=this.cy-t*Math.sin(n);return[o,a]},n.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 o,a=Math.atan2(-i,e),r=1/0,s=-1,l=0;l<this._indicatorAxes.length;l++){var u=this._indicatorAxes[l],h=Math.abs(a-u.angle);h<r&&(o=u,s=l,r=h)}return[s,+(o&&o.coodToData(n))]},n.prototype.resize=function(t,e){var i=t.get("center"),n=e.getWidth(),a=e.getHeight(),r=Math.min(n,a)/2;this.cx=s.parsePercent(i[0],n),this.cy=s.parsePercent(i[1],a),this.startAngle=t.get("startAngle")*Math.PI/180,this.r=s.parsePercent(t.get("radius"),r),o.each(this._indicatorAxes,function(t,e){t.setExtent(0,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)},n.prototype.update=function(t,e){function i(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}var n=this._indicatorAxes,a=this._model;o.each(n,function(t){t.scale.setExtent(1/0,-(1/0))}),t.eachSeriesByType("radar",function(e,i){if("radar"===e.get("coordinateSystem")&&t.getComponent("radar",e.get("radarIndex"))===a){var r=e.getData();o.each(n,function(t){t.scale.unionExtentFromData(r,t.dim)})}},this);var r=a.get("splitNumber");o.each(n,function(t,e){var n=l.getScaleExtent(t.scale,t.model);l.niceScaleExtent(t.scale,t.model);var o=t.model,a=t.scale,u=o.getMin(),h=o.getMax(),c=a.getInterval();if(null!=u&&null!=h)a.setInterval((h-u)/r);else if(null!=u){var d;do d=u+c*r,a.setExtent(+u,d),a.setInterval(c),c=i(c);while(d<n[1]&&isFinite(d)&&isFinite(n[1]))}else if(null!=h){var f;do f=h-c*r,a.setExtent(f,+h),a.setInterval(c),c=i(c);while(f>n[0]&&isFinite(f)&&isFinite(n[0]))}else{var p=a.getTicks().length-1;p>r&&(c=i(c));var g=Math.round((n[0]+n[1])/2/c)*c,m=Math.round(r/2);a.setExtent(s.round(g-m*c),s.round(g+(r-m)*c)),a.setInterval(c)}})},n.dimensions=[],n.create=function(t,e){var i=[];return t.eachComponent("radar",function(o){var a=new n(o,t,e);i.push(a),o.coordinateSystem=a}),t.eachSeriesByType("radar",function(t){"radar"===t.get("coordinateSystem")&&(t.coordinateSystem=i[t.get("radarIndex")||0])}),i},i(26).register("radar",n),t.exports=n},function(t,e,i){function n(t,e){return s.defaults({show:e},t)}var o=i(96),a=o.valueAxis,r=i(10),s=i(1),l=i(42),u=i(2).extendComponentModel({type:"radar",optionUpdated:function(){var t=this.get("boundaryGap"),e=this.get("splitNumber"),i=this.get("scale"),n=this.get("axisLine"),o=this.get("axisTick"),a=this.get("axisLabel"),u=this.get("name.textStyle"),h=this.get("name.show"),c=this.get("name.formatter"),d=this.get("nameGap"),f=this.get("triggerEvent"),p=s.map(this.get("indicator")||[],function(p){if(null!=p.max&&p.max>0&&!p.min?p.min=0:null!=p.min&&p.min<0&&!p.max&&(p.max=0),p=s.merge(s.clone(p),{boundaryGap:t,splitNumber:e,scale:i,axisLine:n,axisTick:o,axisLabel:a,name:p.text,nameLocation:"end",nameGap:d,nameTextStyle:u,triggerEvent:f},!1),h||(p.name=""),"string"==typeof c){var g=p.name;p.name=c.replace("{value}",null!=g?g:"")}else"function"==typeof c&&(p.name=c(p.name,p));var m=s.extend(new r(p,null,this.ecModel),l);return m.mainType="radar",m.componentIndex=this.componentIndex,m},this);this.getIndicatorModels=function(){return p}},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:s.merge({lineStyle:{color:"#bbb"}},a.axisLine),axisLabel:n(a.axisLabel,!1),axisTick:n(a.axisTick,!1),splitLine:n(a.splitLine,!0),splitArea:n(a.splitArea,!0),indicator:[]}});t.exports=u},function(t,e,i){function n(t,e){return e.type||(e.data?"category":"value")}var o=i(13),a=i(59),r=i(1),s=o.extend({type:"singleAxis",layoutMode:"box",axis:null,coordinateSystem:null,getCoordSysModel:function(){return this}}),l={left:"5%",top:"5%",right:"5%",bottom:"5%",type:"value",position:"bottom",orient:"horizontal",axisLine:{show:!0,lineStyle:{width:2,type:"solid"}},tooltip:{show:!0},axisTick:{show:!0,length:6,lineStyle:{width:2}},axisLabel:{show:!0,interval:"auto"},splitLine:{show:!0,lineStyle:{type:"dashed",opacity:.2}}};r.merge(s.prototype,i(42)),a("single",s,n,l),t.exports=s},function(t,e,i){function n(t,e,i){this.dimension="single",this.dimensions=["single"],this._axis=null,this._rect,this._init(t,e,i),this.model=t}var o=i(411),a=i(17),r=i(12);n.prototype={type:"singleAxis",axisPointerEnabled:!0,constructor:n,_init:function(t,e,i){var n=this.dimension,r=new o(n,a.createScaleByModel(t),[0,0],t.get("type"),t.get("position")),s="category"===r.type;r.onBand=s&&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},update:function(t,e){t.eachSeries(function(t){if(t.coordinateSystem===this){var e=t.getData(),i=this.dimension;this._axis.scale.unionExtentFromData(e,t.coordDimToDataDim(i)),a.niceScaleExtent(this._axis.scale,this._axis.model)}},this)},resize:function(t,e){this._rect=r.getLayoutRect({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],o=e.reverse?1:0;e.setExtent(n[o],n[1-o]),this._updateAxisTransform(e,i?t.x:t.y)},_updateAxisTransform:function(t,e){var i=t.getExtent(),n=i[0]+i[1],o=t.isHorizontal();t.toGlobalCoord=o?function(t){return t+e}:function(t){return n-t+e},t.toLocalCoord=o?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(),n=i.orient;return"horizontal"===n?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=[],o="horizontal"===e.orient?0:1;return t instanceof Array&&(t=t[0]),n[o]=e.toGlobalCoord(e.dataToCoord(+t)),n[1-o]=0===o?i.y+i.height/2:i.x+i.width/2,n}},t.exports=n},function(t,e,i){var n=i(1),o=i(33),a=i(17),r=function(t,e,i,n,a){o.call(this,t,e,i),this.type=n||"value",this.position=a||"bottom",this.orient=null,this._labelInterval=null};r.prototype={constructor:r,model:null,isHorizontal:function(){var t=this.position;return"top"===t||"bottom"===t},getLabelInterval:function(){var t=this._labelInterval;if(!t){var e=this.model,i=e.getModel("axisLabel"),o=i.get("interval");if("category"!==this.type||"auto"!==o)return t=this._labelInterval="auto"===o?0:o;t=this._labelInterval=a.getAxisLabelInterval(n.map(this.scale.getTicks(),this.dataToCoord,this),e.getFormattedLabels(),i.getModel("textStyle").getFont(),this.isHorizontal())}return t},pointToData:function(t,e){return this.coordinateSystem.pointToData(t,e)[0]},toGlobalCoord:null,toLocalCoord:null},n.inherits(r,o),t.exports=r},function(t,e,i){function n(t,e){var i=[];return t.eachComponent("singleAxis",function(n,a){var r=new o(n,t,e);r.name="single_"+a,r.resize(n,e),n.coordinateSystem=r,i.push(r)}),t.eachSeries(function(e){if("singleAxis"===e.get("coordinateSystem")){var i=t.queryComponents({mainType:"singleAxis",index:e.get("singleAxisIndex"),id:e.get("singleAxisId")})[0];e.coordinateSystem=i&&i.coordinateSystem}}),i}var o=i(410);i(26).register("single",{create:n,dimensions:o.prototype.dimensions})},function(t,e,i){"use strict";function n(t,e){this.id=null==t?"":t,this.inEdges=[],this.outEdges=[],this.edges=[],this.hostGraph,this.dataIndex=null==e?-1:e}function o(t,e,i){this.node1=t,this.node2=e,this.dataIndex=null==i?-1:i}var a=i(1),r=function(t){this._directed=t||!1,this.nodes=[],this.edges=[],this._nodesMap={},this._edgesMap={},this.data,this.edgeData},s=r.prototype;s.type="graph",s.isDirected=function(){return this._directed},s.addNode=function(t,e){t=t||""+e;var i=this._nodesMap;if(!i[t]){var o=new n(t,e);return o.hostGraph=this,this.nodes.push(o),i[t]=o,o}},s.getNodeByIndex=function(t){var e=this.data.getRawIndex(t);return this.nodes[e]},s.getNodeById=function(t){return this._nodesMap[t]},s.addEdge=function(t,e,i){var a=this._nodesMap,r=this._edgesMap;if("number"==typeof t&&(t=this.nodes[t]),"number"==typeof e&&(e=this.nodes[e]),t instanceof n||(t=a[t]),e instanceof n||(e=a[e]),t&&e){var s=t.id+"-"+e.id;if(!r[s]){var l=new o(t,e,i);return l.hostGraph=this,this._directed&&(t.outEdges.push(l),e.inEdges.push(l)),t.edges.push(l),t!==e&&e.edges.push(l),this.edges.push(l),r[s]=l,l}}},s.getEdgeByIndex=function(t){var e=this.edgeData.getRawIndex(t);return this.edges[e]},s.getEdge=function(t,e){t instanceof n&&(t=t.id),e instanceof n&&(e=e.id);var i=this._edgesMap;return this._directed?i[t+"-"+e]:i[t+"-"+e]||i[e+"-"+t]},s.eachNode=function(t,e){for(var i=this.nodes,n=i.length,o=0;o<n;o++)i[o].dataIndex>=0&&t.call(e,i[o],o)},s.eachEdge=function(t,e){for(var i=this.edges,n=i.length,o=0;o<n;o++)i[o].dataIndex>=0&&i[o].node1.dataIndex>=0&&i[o].node2.dataIndex>=0&&t.call(e,i[o],o)},s.breadthFirstTraverse=function(t,e,i,o){if(e instanceof n||(e=this._nodesMap[e]),e){for(var a="out"===i?"outEdges":"in"===i?"inEdges":"edges",r=0;r<this.nodes.length;r++)this.nodes[r].__visited=!1;if(!t.call(o,e,null))for(var s=[e];s.length;)for(var l=s.shift(),u=l[a],r=0;r<u.length;r++){var h=u[r],c=h.node1===l?h.node2:h.node1;if(!c.__visited){if(t.call(c,c,l))return;s.push(c),c.__visited=!0}}}},s.update=function(){for(var t=this.data,e=this.edgeData,i=this.nodes,n=this.edges,o=0,a=i.length;o<a;o++)i[o].dataIndex=-1;for(var o=0,a=t.count();o<a;o++)i[t.getRawIndex(o)].dataIndex=o;e.filterSelf(function(t){var i=n[e.getRawIndex(t)];return i.node1.dataIndex>=0&&i.node2.dataIndex>=0});for(var o=0,a=n.length;o<a;o++)n[o].dataIndex=-1;for(var o=0,a=e.count();o<a;o++)n[e.getRawIndex(o)].dataIndex=o},s.clone=function(){for(var t=new r(this._directed),e=this.nodes,i=this.edges,n=0;n<e.length;n++)t.addNode(e[n].id,e[n].dataIndex);for(var n=0;n<i.length;n++){var o=i[n];t.addEdge(o.node1.id,o.node2.id,o.dataIndex)}return t},n.prototype={constructor:n,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)){var e=this.hostGraph,i=e.data.getItemModel(this.dataIndex);return i.getModel(t)}}},o.prototype.getModel=function(t){if(!(this.dataIndex<0)){var e=this.hostGraph,i=e.edgeData.getItemModel(this.dataIndex);return i.getModel(t)}};var l=function(t,e){return{getValue:function(i){var n=this[t][e];return n.get(n.getDimension(i||"value"),this.dataIndex)},setVisual:function(i,n){this.dataIndex>=0&&this[t][e].setItemVisual(this.dataIndex,i,n)},getVisual:function(i,n){return this[t][e].getItemVisual(this.dataIndex,i,n)},setLayout:function(i,n){this.dataIndex>=0&&this[t][e].setItemLayout(this.dataIndex,i,n)},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)}}};a.mixin(n,l("hostGraph","data")),a.mixin(o,l("hostGraph","edgeData")),r.Node=n,r.Edge=o,t.exports=r},function(t,e,i){function n(t,e){this.root,this.data,this._nodes=[],this.hostModel=t,this.levelModels=a.map(e||[],function(e){return new r(e,t,t.ecModel)})}function o(t,e){var i=e.children;t.parentNode!==e&&(i.push(t),t.parentNode=e)}var a=i(1),r=i(10),s=i(14),l=i(261),u=i(25),h=function(t,e){this.name=t||"",this.depth=0,this.height=0,this.parentNode=null,this.dataIndex=-1,this.children=[],this.viewChildren=[],this.hostTree=e};h.prototype={constructor:h,isRemoved:function(){return this.dataIndex<0},eachNode:function(t,e,i){"function"==typeof t&&(i=e,e=t,t=null),t=t||{},a.isString(t)&&(t={order:t});var n,o=t.order||"preorder",r=this[t.attr||"children"];"preorder"===o&&(n=e.call(i,this));for(var s=0;!n&&s<r.length;s++)r[s].eachNode(t,e,i);"postorder"===o&&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 o=i[e].getNodeById(t);if(o)return o}},contains:function(t){if(t===this)return!0;for(var e=0,i=this.children,n=i.length;e<n;e++){var o=i[e].contains(t);if(o)return o}},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){this.dataIndex>=0&&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=this.hostTree,i=e.data.getItemModel(this.dataIndex),n=this.getLevelModel();return i.getModel(t,(n||e.hostModel).getModel(t))}},getLevelModel:function(){return(this.hostTree.levelModels||[])[this.depth]},setVisual:function(t,e){this.dataIndex>=0&&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)}},n.prototype={constructor:n,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(var i=0,n=t.count();i<n;i++)e[t.getRawIndex(i)].dataIndex=i},clearLayouts:function(){this.data.clearItemLayouts()}},n.createTree=function(t,e,i){function r(t,e){var i=t.value;f=Math.max(f,a.isArray(i)?i.length:1),d.push(t);var n=new h(t.name,c);e?o(n,e):c.root=n,c._nodes.push(n);var s=t.children;if(s)for(var l=0;l<s.length;l++)r(s[l],n)}var c=new n(e,i),d=[],f=1;r(t),c.root.updateDepthAndHeight(0);var p=u([{name:"value"}],d,{dimCount:f}),g=new s(p,e);return g.initData(d),l({mainData:g,struct:c,structAttr:"tree"}),c.update(),c},t.exports=n},function(t,e,i){function n(){var t,e=[],i={};return{add:function(t,n,a,r,s){return o.isString(r)&&(s=r,r=0),!i[t.id]&&(i[t.id]=1,e.push({el:t,target:n,time:a,delay:r,easing:s}),!0)},done:function(e){return t=e,this},start:function(){function n(){o--,o||(e.length=0,i={},t&&t())}for(var o=e.length,a=0,r=e.length;a<r;a++){var s=e[a];s.el.animateTo(s.target,s.time,s.delay,s.easing,n)}return this}}}var o=i(1);t.exports={createWrap:n}}])});
\ No newline at end of file
diff --git a/dist/echarts.simple.js b/dist/echarts.simple.js
index 8b469df..4b4f9d1 100644
--- a/dist/echarts.simple.js
+++ b/dist/echarts.simple.js
@@ -59,10 +59,10 @@
 	 */
 	module.exports = __webpack_require__(1);
 
-	__webpack_require__(100);
-	__webpack_require__(134);
-	__webpack_require__(141);
-	__webpack_require__(113);
+	__webpack_require__(112);
+	__webpack_require__(148);
+	__webpack_require__(155);
+	__webpack_require__(123);
 
 /***/ },
 /* 1 */
@@ -108,8 +108,8 @@
 	    var SeriesModel = __webpack_require__(28);
 
 	    var ComponentView = __webpack_require__(29);
-	    var ChartView = __webpack_require__(42);
-	    var graphic = __webpack_require__(43);
+	    var ChartView = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 	    var modelUtil = __webpack_require__(5);
 	    var throttle = __webpack_require__(81);
 
@@ -166,7 +166,7 @@
 	    /**
 	     * @module echarts~ECharts
 	     */
-	    function ECharts (dom, theme, opts) {
+	    function ECharts(dom, theme, opts) {
 	        opts = opts || {};
 
 	        // Get theme by name
@@ -237,17 +237,17 @@
 	        this._componentsMap = {};
 
 	        /**
-	         * @type {module:echarts/ExtensionAPI}
-	         * @private
-	         */
-	        this._api = new ExtensionAPI(this);
-
-	        /**
 	         * @type {module:echarts/CoordinateSystem}
 	         * @private
 	         */
 	        this._coordSysMgr = new CoordinateSystemManager();
 
+	        /**
+	         * @type {module:echarts/ExtensionAPI}
+	         * @private
+	         */
+	        this._api = new ExtensionAPI(this, this._coordSysMgr);
+
 	        Eventful.call(this);
 
 	        /**
@@ -272,6 +272,9 @@
 	        timsort(dataProcessorFuncs, prioritySortFunc);
 
 	        zr.animation.on('frame', this._onframe, this);
+
+	        // ECharts instance can be used as value.
+	        zrUtil.setAsPrimitive(this);
 	    }
 
 	    var echartsProto = ECharts.prototype;
@@ -350,7 +353,7 @@
 	            mainType !== 'graphic' && (this.__lastOnlyGraphic = false);
 	        }, this);
 
-	        this._model.setOption(option, optionPreprocessorFuncs);
+	        this._model.setOption(option, optionPreprocessorFuncs, this.__lastOnlyGraphic);
 
 	        if (lazyUpdate) {
 	            this[OPTION_UPDATED] = {silent: silent};
@@ -406,6 +409,13 @@
 	    };
 
 	    /**
+	     * @return {number}
+	     */
+	    echartsProto.getDevicePixelRatio = function () {
+	        return this._zr.painter.dpr || window.devicePixelRatio || 1;
+	    };
+
+	    /**
 	     * Get canvas which has all thing rendered
 	     * @param {Object} opts
 	     * @param {string} [opts.backgroundColor]
@@ -608,7 +618,7 @@
 	     *            geoIndex / geoId / geoName,
 	     *            bmapIndex / bmapId / bmapName,
 	     *            xAxisIndex / xAxisId / xAxisName,
-	     *            yAxisIndex / yAxisId / yAxisName
+	     *            yAxisIndex / yAxisId / yAxisName,
 	     *            gridIndex / gridId / gridName,
 	     *            ... (can be extended)
 	     *        }
@@ -693,6 +703,24 @@
 	            : data.getVisual(visualType);
 	    };
 
+	    /**
+	     * Get view of corresponding component model
+	     * @param  {module:echarts/model/Component} componentModel
+	     * @return {module:echarts/view/Component}
+	     */
+	    echartsProto.getViewOfComponentModel = function (componentModel) {
+	        return this._componentsMap[componentModel.__viewId];
+	    };
+
+	    /**
+	     * Get view of corresponding series model
+	     * @param  {module:echarts/model/Series} seriesModel
+	     * @return {module:echarts/view/Chart}
+	     */
+	    echartsProto.getViewOfSeriesModel = function (seriesModel) {
+	        return this._chartsMap[seriesModel.__viewId];
+	    };
+
 
 	    var updateMethods = {
 
@@ -701,7 +729,7 @@
 	         * @private
 	         */
 	        update: function (payload) {
-	            // console.time && console.time('update');
+	            // console.profile && console.profile('update');
 
 	            var ecModel = this._model;
 	            var api = this._api;
@@ -774,7 +802,11 @@
 	                }
 	            }
 
-	            // console.time && console.timeEnd('update');
+	            each(postUpdateFuncs, function (func) {
+	                func(ecModel, api);
+	            });
+
+	            // console.profile && console.profileEnd('update');
 	        },
 
 	        /**
@@ -870,6 +902,13 @@
 	     */
 	    function updateDirectly(ecIns, method, payload, mainType, subType) {
 	        var ecModel = ecIns._model;
+
+	        // broadcast
+	        if (!mainType) {
+	            each(ecIns._componentsViews.concat(ecIns._chartsViews), callView);
+	            return;
+	        }
+
 	        var query = {};
 	        query[mainType + 'Id'] = payload[mainType + 'Id'];
 	        query[mainType + 'Index'] = payload[mainType + 'Index'];
@@ -880,13 +919,16 @@
 
 	        // If dispatchAction before setOption, do nothing.
 	        ecModel && ecModel.eachComponent(condition, function (model, index) {
-	            var view = ecIns[
+	            callView(ecIns[
 	                mainType === 'series' ? '_chartsMap' : '_componentsMap'
-	            ][model.__viewId];
-	            if (view && view.__alive) {
-	                view[method](model, ecModel, ecIns._api, payload);
-	            }
+	            ][model.__viewId]);
 	        }, ecIns);
+
+	        function callView(view) {
+	            view && view.__alive && view[method] && view[method](
+	                view.__model, ecModel, ecIns._api, payload
+	            );
+	        }
 	    }
 
 	    /**
@@ -987,14 +1029,6 @@
 	            return;
 	        }
 
-	        // if (__DEV__) {
-	        //     zrUtil.assert(
-	        //         !this[IN_MAIN_PROCESS],
-	        //         '`dispatchAction` should not be called during main process.'
-	        //         + 'unless updateMathod is "none".'
-	        //     );
-	        // }
-
 	        // May dispatchAction in rendering procedure
 	        if (this[IN_MAIN_PROCESS]) {
 	            this._pendingActions.push(payload);
@@ -1022,12 +1056,13 @@
 
 	    function doDispatchAction(payload, silent) {
 	        var payloadType = payload.type;
+	        var escapeConnect = payload.escapeConnect;
 	        var actionWrap = actions[payloadType];
 	        var actionInfo = actionWrap.actionInfo;
 
 	        var cptType = (actionInfo.update || 'update').split(':');
 	        var updateMethod = cptType.pop();
-	        cptType = cptType[0] && parseClassType(cptType[0]);
+	        cptType = cptType[0] != null && parseClassType(cptType[0]);
 
 	        this[IN_MAIN_PROCESS] = true;
 
@@ -1047,10 +1082,9 @@
 	        var eventObj;
 	        var isHighDown = payloadType === 'highlight' || payloadType === 'downplay';
 
-	        for (var i = 0; i < payloads.length; i++) {
-	            var batchItem = payloads[i];
+	        each(payloads, function (batchItem) {
 	            // Action can specify the event by return it.
-	            eventObj = actionWrap.action(batchItem, this._model);
+	            eventObj = actionWrap.action(batchItem, this._model, this._api);
 	            // Emit event outside
 	            eventObj = eventObj || zrUtil.extend({}, batchItem);
 	            // Convert type to eventType
@@ -1065,7 +1099,7 @@
 	            else if (cptType) {
 	                updateDirectly(this, updateMethod, batchItem, cptType.main, cptType.sub);
 	            }
-	        }
+	        }, this);
 
 	        if (updateMethod !== 'none' && !isHighDown && !cptType) {
 	            // Still dirty
@@ -1083,6 +1117,7 @@
 	        if (batched) {
 	            eventObj = {
 	                type: actionInfo.event || payloadType,
+	                escapeConnect: escapeConnect,
 	                batch: eventObjBatch
 	            };
 	        }
@@ -1142,6 +1177,11 @@
 
 	        // If use hover layer
 	        updateHoverLayerStatus(this._zr, ecModel);
+
+	        // Post render
+	        each(postUpdateFuncs, function (func) {
+	            func(ecModel, api);
+	        });
 	    }
 
 	    /**
@@ -1478,10 +1518,10 @@
 	        });
 	    }
 	    /**
-	     * @type {Array.<Function>}
+	     * @type {Object} key: actionType.
 	     * @inner
 	     */
-	    var actions = [];
+	    var actions = {};
 
 	    /**
 	     * Map eventType to actionType
@@ -1503,6 +1543,12 @@
 	    var optionPreprocessorFuncs = [];
 
 	    /**
+	     * @type {Array.<Function>}
+	     * @inner
+	     */
+	    var postUpdateFuncs = [];
+
+	    /**
 	     * Visual encoding functions of each stage
 	     * @type {Array.<Object.<string, Function>>}
 	     * @inner
@@ -1532,27 +1578,32 @@
 	        /**
 	         * @type {number}
 	         */
-	        version: '3.4.0',
+	        version: '3.5.0',
 	        dependencies: {
-	            zrender: '3.3.0'
+	            zrender: '3.4.0'
 	        }
 	    };
 
 	    function enableConnect(chart) {
-
 	        var STATUS_PENDING = 0;
 	        var STATUS_UPDATING = 1;
 	        var STATUS_UPDATED = 2;
 	        var STATUS_KEY = '__connectUpdateStatus';
+
 	        function updateConnectedChartsStatus(charts, status) {
 	            for (var i = 0; i < charts.length; i++) {
 	                var otherChart = charts[i];
 	                otherChart[STATUS_KEY] = status;
 	            }
 	        }
+
 	        zrUtil.each(eventActionMap, function (actionType, eventType) {
 	            chart._messageCenter.on(eventType, function (event) {
 	                if (connectedGroups[chart.group] && chart[STATUS_KEY] !== STATUS_PENDING) {
+	                    if (event && event.escapeConnect) {
+	                        return;
+	                    }
+
 	                    var action = chart.makeActionFromEvent(event);
 	                    var otherCharts = [];
 
@@ -1572,8 +1623,8 @@
 	                }
 	            });
 	        });
-
 	    }
+
 	    /**
 	     * @param {HTMLDomElement} dom
 	     * @param {Object} [theme]
@@ -1599,7 +1650,13 @@
 	            if (!dom) {
 	                throw new Error('Initialize failed: invalid dom.');
 	            }
-	            if (zrUtil.isDom(dom) && dom.nodeName.toUpperCase() !== 'CANVAS' && (!dom.clientWidth || !dom.clientHeight)) {
+	            if (zrUtil.isDom(dom)
+	                && dom.nodeName.toUpperCase() !== 'CANVAS'
+	                && (
+	                    (!dom.clientWidth && (!opts || opts.width == null))
+	                    || (!dom.clientHeight && (!opts || opts.height == null))
+	                )
+	            ) {
 	                console.warn('Can\'t get dom width or height');
 	            }
 	        }
@@ -1640,6 +1697,7 @@
 	    };
 
 	    /**
+	     * @DEPRECATED
 	     * @return {string} groupId
 	     */
 	    echarts.disConnect = function (groupId) {
@@ -1647,6 +1705,11 @@
 	    };
 
 	    /**
+	     * @return {string} groupId
+	     */
+	    echarts.disconnect = echarts.disConnect;
+
+	    /**
 	     * Dispose a chart instance
 	     * @param  {module:echarts~ECharts|HTMLDomElement|string} chart
 	     */
@@ -1714,6 +1777,14 @@
 	    };
 
 	    /**
+	     * Register postUpdater
+	     * @param {Function} postUpdateFunc
+	     */
+	    echarts.registerPostUpdate = function (postUpdateFunc) {
+	        postUpdateFuncs.push(postUpdateFunc);
+	    };
+
+	    /**
 	     * Usage:
 	     * registerAction('someAction', 'someEvent', function () { ... });
 	     * registerAction('someAction', function () { ... });
@@ -1907,11 +1978,14 @@
 	    // --------
 	    // Exports
 	    // --------
-	    //
+	    echarts.zrender = zrender;
+
 	    echarts.List = __webpack_require__(98);
 	    echarts.Model = __webpack_require__(12);
 
-	    echarts.graphic = __webpack_require__(43);
+	    echarts.Axis = __webpack_require__(100);
+
+	    echarts.graphic = __webpack_require__(44);
 	    echarts.number = __webpack_require__(7);
 	    echarts.format = __webpack_require__(6);
 	    echarts.throttle = throttle.throttle;
@@ -1923,13 +1997,16 @@
 	    each([
 	            'map', 'each', 'filter', 'indexOf', 'inherits', 'reduce', 'filter',
 	            'bind', 'curry', 'isArray', 'isString', 'isObject', 'isFunction',
-	            'extend', 'defaults', 'clone'
+	            'extend', 'defaults', 'clone', 'merge'
 	        ],
 	        function (name) {
 	            echarts.util[name] = zrUtil[name];
 	        }
 	    );
 
+	    echarts.helper = __webpack_require__(101);
+
+
 	    // PRIORITY
 	    echarts.PRIORITY = {
 	        PROCESSOR: {
@@ -2151,7 +2228,7 @@
 	            this._optionManager = optionManager;
 	        },
 
-	        setOption: function (option, optionPreprocessorFuncs) {
+	        setOption: function (option, optionPreprocessorFuncs, onlyGraphic) {
 	            zrUtil.assert(
 	                !(OPTION_INNER_KEY in option),
 	                'please use chart.getOption()'
@@ -2159,7 +2236,7 @@
 
 	            this._optionManager.setOption(option, optionPreprocessorFuncs);
 
-	            this.resetOption();
+	            this.resetOption(null, onlyGraphic);
 	        },
 
 	        /**
@@ -2169,7 +2246,7 @@
 	         *                      'media': only reset media query option
 	         * @return {boolean} Whether option changed.
 	         */
-	        resetOption: function (type) {
+	        resetOption: function (type, onlyGraphic) {
 	            var optionChanged = false;
 	            var optionManager = this._optionManager;
 
@@ -2180,7 +2257,11 @@
 	                    initBase.call(this, baseOption);
 	                }
 	                else {
-	                    this.restoreData();
+	                    // If only graphic, other series and component will not
+	                    // go through update process, data should not be restored.
+	                    // Otherwise grphic els mounted on data will be eliminated
+	                    // and downplay will not work.
+	                    !onlyGraphic && this.restoreData();
 	                    this.mergeOption(baseOption);
 	                }
 	                optionChanged = true;
@@ -2421,7 +2502,7 @@
 	            }
 	            else {
 	                // Return all components with mainType
-	                result = cpts;
+	                result = cpts.slice();
 	            }
 
 	            return filterBySubType(result, condition);
@@ -2700,10 +2781,12 @@
 	        this.option[OPTION_INNER_KEY] = 1;
 
 	        /**
+	         * Init with series: [], in case of calling findSeries method
+	         * before series initialized.
 	         * @type {Object.<string, Array.<module:echarts/model/Model>>}
 	         * @private
 	         */
-	        this._componentsMap = {};
+	        this._componentsMap = {series: []};
 
 	        /**
 	         * Mapping between filtered series list and raw series list.
@@ -2870,7 +2953,7 @@
 	        else if (TYPED_ARRAY[typeStr]) {
 	            result = source.constructor.from(source);
 	        }
-	        else if (!BUILTIN_OBJECT[typeStr] && !isDom(source)) {
+	        else if (!BUILTIN_OBJECT[typeStr] && !isPrimitive(source) && !isDom(source)) {
 	            result = {};
 	            for (var key in source) {
 	                if (source.hasOwnProperty(key)) {
@@ -2906,8 +2989,10 @@
 	                    && !isArray(targetProp)
 	                    && !isDom(sourceProp)
 	                    && !isDom(targetProp)
-	                    && !isBuildInObject(sourceProp)
-	                    && !isBuildInObject(targetProp)
+	                    && !isBuiltInObject(sourceProp)
+	                    && !isBuiltInObject(targetProp)
+	                    && !isPrimitive(sourceProp)
+	                    && !isPrimitive(targetProp)
 	                ) {
 	                    // 如果需要递归覆盖,就递归调用merge
 	                    merge(targetProp, sourceProp, overwrite);
@@ -3234,7 +3319,7 @@
 	     * @param {*} value
 	     * @return {boolean}
 	     */
-	    function isBuildInObject(value) {
+	    function isBuiltInObject(value) {
 	        return !!BUILTIN_OBJECT[objToString.call(value)];
 	    }
 
@@ -3293,6 +3378,18 @@
 	        }
 	    }
 
+	    var primitiveKey = '__ec_primitive__';
+	    /**
+	     * Set an object as primitive to be ignored traversing children in clone or merge
+	     */
+	    function setAsPrimitive(obj) {
+	        obj[primitiveKey] = true;
+	    }
+
+	    function isPrimitive(obj) {
+	        return obj[primitiveKey];
+	    }
+
 	    var util = {
 	        inherits: inherits,
 	        mixin: mixin,
@@ -3317,11 +3414,12 @@
 	        isString: isString,
 	        isObject: isObject,
 	        isFunction: isFunction,
-	        isBuildInObject: isBuildInObject,
+	        isBuiltInObject: isBuiltInObject,
 	        isDom: isDom,
 	        eqNaN: eqNaN,
 	        retrieve: retrieve,
 	        assert: assert,
+	        setAsPrimitive: setAsPrimitive,
 	        noop: function () {}
 	    };
 	    module.exports = util;
@@ -3426,7 +3524,12 @@
 	            return value;
 	        }
 
-	        if (dimType === 'time' && !isFinite(value) && value != null && value !== '-') {
+	        if (dimType === 'time'
+	            // spead up when using timestamp
+	            && typeof value !== 'number'
+	            && value != null
+	            && value !== '-'
+	        ) {
 	            value = +nubmerUtil.parseDate(value);
 	        }
 
@@ -3470,10 +3573,6 @@
 	         */
 	        getDataParams: function (dataIndex, dataType) {
 	            var data = this.getData(dataType);
-
-	            var seriesIndex = this.seriesIndex;
-	            var seriesName = this.name;
-
 	            var rawValue = this.getRawValue(dataIndex, dataType);
 	            var rawDataIndex = data.getRawIndex(dataIndex);
 	            var name = data.getName(dataIndex, true);
@@ -3483,8 +3582,9 @@
 	                componentType: this.mainType,
 	                componentSubType: this.subType,
 	                seriesType: this.mainType === 'series' ? this.subType : null,
-	                seriesIndex: seriesIndex,
-	                seriesName: seriesName,
+	                seriesIndex: this.seriesIndex,
+	                seriesId: this.id,
+	                seriesName: this.name,
 	                name: name,
 	                dataIndex: rawDataIndex,
 	                data: itemOpt,
@@ -3702,7 +3802,7 @@
 	                ? opt.name + ''
 	                : existCpt
 	                ? existCpt.name
-	                : '\0-';
+	                : '\0-'; // name may be displayed on screen, so use '-'.
 
 	            if (existCpt) {
 	                keyInfo.id = existCpt.id;
@@ -3818,13 +3918,37 @@
 	    };
 
 	    /**
+	     * Enable property storage to any host object.
+	     * Notice: Serialization is not supported.
+	     *
+	     * For example:
+	     * var get = modelUitl.makeGetter();
+	     *
+	     * function some(hostObj) {
+	     *      get(hostObj)._someProperty = 1212;
+	     *      ...
+	     * }
+	     *
+	     * @return {Function}
+	     */
+	    modelUtil.makeGetter = (function () {
+	        var index = 0;
+	        return function () {
+	            var key = '\0__ec_prop_getter_' + index++;
+	            return function (hostObj) {
+	                return hostObj[key] || (hostObj[key] = {});
+	            };
+	        };
+	    })();
+
+	    /**
 	     * @param {module:echarts/model/Global} ecModel
 	     * @param {string|Object} finder
 	     *        If string, e.g., 'geo', means {geoIndex: 0}.
 	     *        If Object, could contain some of these properties below:
 	     *        {
 	     *            seriesIndex, seriesId, seriesName,
-	     *            geoIndex, geoId, goeName,
+	     *            geoIndex, geoId, geoName,
 	     *            bmapIndex, bmapId, bmapName,
 	     *            xAxisIndex, xAxisId, xAxisName,
 	     *            yAxisIndex, yAxisId, yAxisName,
@@ -3838,8 +3962,11 @@
 	     *            geoId: ['aa', 'cc'],
 	     *            gridName: ['xx', 'rr']
 	     *        }
+	     *        xxxIndex can be set as 'all' (means all xxx) or 'none' (means not specify)
+	     *        If nothing or null/undefined specified, return nothing.
 	     * @param {Object} [opt]
 	     * @param {string} [opt.defaultMainType]
+	     * @param {Array.<string>} [opt.includeMainTypes]
 	     * @return {Object} result like:
 	     *        {
 	     *            seriesModels: [seriesModel1, seriesModel2],
@@ -3878,14 +4005,22 @@
 
 	            var parsedKey = key.match(/^(\w+)(Index|Id|Name)$/) || [];
 	            var mainType = parsedKey[1];
-	            var queryType = parsedKey[2];
+	            var queryType = (parsedKey[2] || '').toLowerCase();
 
-	            if (!mainType || !queryType) {
+	            if (!mainType
+	                || !queryType
+	                || value == null
+	                || (queryType === 'index' && value === 'none')
+	                || (opt && opt.includeMainTypes && zrUtil.indexOf(opt.includeMainTypes, mainType) < 0)
+	            ) {
 	                return;
 	            }
 
 	            var queryParam = {mainType: mainType};
-	            queryParam[queryType.toLowerCase()] = value;
+	            if (queryType !== 'index' || value !== 'all') {
+	                queryParam[queryType] = value;
+	            }
+
 	            var models = ecModel.queryComponents(queryParam);
 	            result[mainType + 'Models'] = models;
 	            result[mainType + 'Model'] = models[0];
@@ -3901,6 +4036,7 @@
 	    module.exports = modelUtil;
 
 
+
 /***/ },
 /* 6 */
 /***/ function(module, exports, __webpack_require__) {
@@ -4016,6 +4152,24 @@
 	        return tpl;
 	    };
 
+	    /**
+	     * simple Template formatter
+	     *
+	     * @param {string} tpl
+	     * @param {Object} param
+	     * @param {boolean} [encode=false]
+	     * @return {string}
+	     */
+	    formatUtil.formatTplSimple = function (tpl, param, encode) {
+	        zrUtil.each(param, function (value, key) {
+	            tpl = tpl.replace(
+	                '{' + key + '}',
+	                encode ? encodeHTML(value) : value
+	            );
+	        });
+	        return tpl;
+	    };
+
 
 	    /**
 	     * @param {string} str
@@ -4030,9 +4184,15 @@
 	     * ISO Date format
 	     * @param {string} tpl
 	     * @param {number} value
+	     * @param {boolean} [isLocal=false] Default use UTC
+	     *  Why default UTC? In most case, time provided by user is
+	     *  understood in UTC. For example, new Date('2012-01-01')
+	     *  or a string '2012-01-01' or a timestamp. So it is
+	     *  recommended to format time in UTC.
+	     *  (see `echarts/util/number.js#parseDate`);
 	     * @inner
 	     */
-	    formatUtil.formatTime = function (tpl, value) {
+	    formatUtil.formatTime = function (tpl, value, isLocal) {
 	        if (tpl === 'week'
 	            || tpl === 'month'
 	            || tpl === 'quarter'
@@ -4043,12 +4203,13 @@
 	        }
 
 	        var date = numberUtil.parseDate(value);
-	        var y = date.getFullYear();
-	        var M = date.getMonth() + 1;
-	        var d = date.getDate();
-	        var h = date.getHours();
-	        var m = date.getMinutes();
-	        var s = date.getSeconds();
+	        var utc = isLocal ? '' : 'UTC';
+	        var y = date['get' + utc + 'FullYear']();
+	        var M = date['get' + utc + 'Month']() + 1;
+	        var d = date['get' + utc + 'Date']();
+	        var h = date['get' + utc + 'Hours']();
+	        var m = date['get' + utc + 'Minutes']();
+	        var s = date['get' + utc + 'Seconds']();
 
 	        tpl = tpl.replace('MM', s2d(M))
 	            .toLowerCase()
@@ -4080,6 +4241,7 @@
 	    module.exports = formatUtil;
 
 
+
 /***/ },
 /* 7 */
 /***/ function(module, exports) {
@@ -4190,15 +4352,18 @@
 	    /**
 	     * Fix rounding error of float numbers
 	     * @param {number} x
-	     * @return {number}
+	     * @param {number} [precision]
+	     * @param {boolean} [returnStr]
+	     * @return {number|string}
 	     */
-	    number.round = function (x, precision) {
+	    number.round = function (x, precision, returnStr) {
 	        if (precision == null) {
 	            precision = 10;
 	        }
 	        // Avoid range error
 	        precision = Math.min(Math.max(0, precision), 20);
-	        return +(+x).toFixed(precision);
+	        x = (+x).toFixed(precision);
+	        return returnStr ? x : +x;
 	    };
 
 	    number.asc = function (arr) {
@@ -4276,8 +4441,22 @@
 	        return val > -RADIAN_EPSILON && val < RADIAN_EPSILON;
 	    };
 
+	    var TIME_REG = /^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d\d)(?::(\d\d)(?:[.,](\d+))?)?)?(?:Z|([\+\-]\d\d):?\d\d)?)?)?)?)?$/; // jshint ignore:line
+	    var TIMEZONE_OFFSET = (new Date()).getTimezoneOffset();
+
 	    /**
-	     * @param {string|Date|number} value
+	     * @param {string|Date|number} value These values can be accepted:
+	     *   + An instance of Date, represent a time in its own time zone.
+	     *   + Or string in a subset of ISO 8601, only including:
+	     *     + only year, month, date: '2012-03', '2012-03-01', '2012-03-01 05', '2012-03-01 05:06',
+	     *     + separated with T or space: '2012-03-01T12:22:33.123', '2012-03-01 12:22:33.123',
+	     *     + time zone: '2012-03-01T12:22:33Z', '2012-03-01T12:22:33+8000', '2012-03-01T12:22:33-05:00',
+	     *     all of which will be treated as they reperent a time in UTC
+	     *     if time zone is not specified.
+	     *   + Or other string format, including:
+	     *     '2012', '2012-3-1', '2012/3/1', '2012/03/01',
+	     *     '2009/6/12 2:00', '2009/6/12 2:05:08', '2009/6/12 2:05:08.123'
+	     *   + a timestamp, which represent a time in UTC.
 	     * @return {Date} date
 	     */
 	    number.parseDate = function (value) {
@@ -4285,13 +4464,32 @@
 	            return value;
 	        }
 	        else if (typeof value === 'string') {
-	            // Treat as ISO format. See issue #3623
-	            var ret = new Date(value);
-	            if (isNaN(+ret)) {
-	                // FIXME new Date('1970-01-01') is UTC, new Date('1970/01/01') is local
-	                ret = new Date(new Date(value.replace(/-/g, '/')) - new Date('1970/01/01'));
+	            // Different browsers parse date in different way, so we parse it manually.
+	            // Some other issues:
+	            // new Date('1970-01-01') is UTC,
+	            // new Date('1970/01/01') and new Date('1970-1-01') is local.
+	            // See issue #3623
+	            var match = TIME_REG.exec(value);
+
+	            if (!match) {
+	                // return Invalid Date.
+	                return new Date(NaN);
 	            }
-	            return ret;
+
+	            // match[n] can only be string or undefined.
+	            // But take care of '12' + 1 => '121'.
+	            return new Date(
+	                +match[1],
+	                +(match[2] || 1) - 1,
+	                +match[3] || 1,
+	                +match[4] || 0,
+	                +(match[5] || 0) - (match[8] || 0) * 60 - TIMEZONE_OFFSET,
+	                +match[6] || 0,
+	                +match[7] || 0
+	            );
+	        }
+	        else if (value == null) {
+	            return new Date(NaN);
 	        }
 
 	        return new Date(Math.round(value));
@@ -5592,6 +5790,7 @@
 	    };
 
 	    /**
+	     * Notice, parseClassType('') should returns {main: '', sub: ''}
 	     * @public
 	     */
 	    var parseClassType = clazz.parseClassType = function (componentType) {
@@ -5875,11 +6074,13 @@
 	               properties[i][1] = properties[i][0];
 	            }
 	        }
-	        return function (excludes) {
+	        return function (excludes, includes) {
 	            var style = {};
 	            for (var i = 0; i < properties.length; i++) {
 	                var propName = properties[i][1];
-	                if (excludes && zrUtil.indexOf(excludes, propName) >= 0) {
+	                if ((excludes && zrUtil.indexOf(excludes, propName) >= 0)
+	                    || (includes && zrUtil.indexOf(includes, propName) < 0)
+	                ) {
 	                    continue;
 	                }
 	                var val = this.getShallow(propName);
@@ -5987,8 +6188,8 @@
 	        ]
 	    );
 	    module.exports = {
-	        getItemStyle: function (excludes) {
-	            var style = getItemStyle.call(this, excludes);
+	        getItemStyle: function (excludes, includes) {
+	            var style = getItemStyle.call(this, excludes, includes);
 	            var lineDash = this.getBorderLineDash();
 	            lineDash && (style.lineDash = lineDash);
 	            return style;
@@ -6399,10 +6600,21 @@
 
 	    var layout = {};
 
+	    /**
+	     * @public
+	     */
 	    var LOCATION_PARAMS = layout.LOCATION_PARAMS = [
 	        'left', 'right', 'top', 'bottom', 'width', 'height'
 	    ];
 
+	    /**
+	     * @public
+	     */
+	    var HV_NAMES = layout.HV_NAMES = [
+	        ['width', 'left', 'right'],
+	        ['height', 'top', 'bottom']
+	    ];
+
 	    function boxLayout(orient, group, gap, maxWidth, maxHeight) {
 	        var x = 0;
 	        var y = 0;
@@ -6719,6 +6931,15 @@
 	    };
 
 	    /**
+	     * @param {Object} option Contains some of the properties in HV_NAMES.
+	     * @param {number} hvIdx 0: horizontal; 1: vertical.
+	     */
+	    layout.sizeCalculable = function (option, hvIdx) {
+	        return option[HV_NAMES[hvIdx][0]] != null
+	            || (option[HV_NAMES[hvIdx][1]] != null && option[HV_NAMES[hvIdx][2]] != null);
+	    };
+
+	    /**
 	     * Consider Case:
 	     * When defulat option has {left: 0, width: 100}, and we set {right: 0}
 	     * through setOption or media query, using normal zrUtil.merge will cause
@@ -6740,24 +6961,26 @@
 	     * @param {Object} targetOption
 	     * @param {Object} newOption
 	     * @param {Object|string} [opt]
-	     * @param {boolean} [opt.ignoreSize=false] Some component must has width and height.
+	     * @param {boolean|Array.<boolean>} [opt.ignoreSize=false] Some component must has width and height.
 	     */
 	    layout.mergeLayoutParam = function (targetOption, newOption, opt) {
 	        !zrUtil.isObject(opt) && (opt = {});
-	        var hNames = ['width', 'left', 'right']; // Order by priority.
-	        var vNames = ['height', 'top', 'bottom']; // Order by priority.
-	        var hResult = merge(hNames);
-	        var vResult = merge(vNames);
 
-	        copy(hNames, targetOption, hResult);
-	        copy(vNames, targetOption, vResult);
+	        var ignoreSize = opt.ignoreSize;
+	        !zrUtil.isArray(ignoreSize) && (ignoreSize = [ignoreSize, ignoreSize]);
 
-	        function merge(names) {
+	        var hResult = merge(HV_NAMES[0], 0);
+	        var vResult = merge(HV_NAMES[1], 1);
+
+	        copy(HV_NAMES[0], targetOption, hResult);
+	        copy(HV_NAMES[1], targetOption, vResult);
+
+	        function merge(names, hvIdx) {
 	            var newParams = {};
 	            var newValueCount = 0;
 	            var merged = {};
 	            var mergedValueCount = 0;
-	            var enoughParamNumber = opt.ignoreSize ? 1 : 2;
+	            var enoughParamNumber = 2;
 
 	            each(names, function (name) {
 	                merged[name] = targetOption[name];
@@ -6770,6 +6993,13 @@
 	                hasValue(merged, name) && mergedValueCount++;
 	            });
 
+	            if (ignoreSize[hvIdx]) {
+	                // Only one of left/height is premitted to exist.
+	                hasValue(newOption, names[2]) && (merged[names[1]] = null);
+	                hasValue(newOption, names[1]) && (merged[names[2]] = null);
+	                return merged;
+	            }
+
 	            // Case: newOption: {width: ..., right: ...},
 	            // or targetOption: {right: ...} and newOption: {width: ...},
 	            // There is no conflict when merged only has params count
@@ -6785,7 +7015,6 @@
 	            }
 	            else {
 	                // Chose another param from targetOption by priority.
-	                // When 'ignoreSize', enoughParamNumber is 1 and those will not happen.
 	                for (var i = 0; i < names.length; i++) {
 	                    var name = names[i];
 	                    if (!hasProp(newParams, name) && hasProp(targetOption, name)) {
@@ -6836,6 +7065,7 @@
 	    module.exports = layout;
 
 
+
 /***/ },
 /* 22 */
 /***/ function(module, exports) {
@@ -6897,7 +7127,7 @@
 	        // Default is source-over
 	        blendMode: null,
 
-	        animation: true,
+	        animation: 'auto',
 	        animationDuration: 1000,
 	        animationDurationUpdate: 300,
 	        animationEasing: 'exponentialOut',
@@ -6966,14 +7196,18 @@
 	    var zrUtil = __webpack_require__(4);
 
 	    var echartsAPIList = [
-	        'getDom', 'getZr', 'getWidth', 'getHeight', 'dispatchAction', 'isDisposed',
-	        'on', 'off', 'getDataURL', 'getConnectedDataURL', 'getModel', 'getOption'
+	        'getDom', 'getZr', 'getWidth', 'getHeight', 'getDevicePixelRatio', 'dispatchAction', 'isDisposed',
+	        'on', 'off', 'getDataURL', 'getConnectedDataURL', 'getModel', 'getOption',
+	        'getViewOfComponentModel', 'getViewOfSeriesModel'
 	    ];
 
-	    function ExtensionAPI(chartInstance) {
+	    function ExtensionAPI(chartInstance, coordSysMgr) {
 	        zrUtil.each(echartsAPIList, function (name) {
 	            this[name] = zrUtil.bind(chartInstance[name], chartInstance);
 	        }, this);
+
+	        // Inject getCoordinateSystems to ecModel
+	        this.getCoordinateSystems = zrUtil.bind(coordSysMgr.getCoordinateSystems, coordSysMgr);
 	    }
 
 	    module.exports = ExtensionAPI;
@@ -6988,34 +7222,6 @@
 
 	    var zrUtil = __webpack_require__(4);
 
-	    /**
-	     * Interface of Coordinate System Class
-	     *
-	     * create:
-	     *     @param {module:echarts/model/Global} ecModel
-	     *     @param {module:echarts/ExtensionAPI} api
-	     *     @return {Object} coordinate system instance
-	     *
-	     * update:
-	     *     @param {module:echarts/model/Global} ecModel
-	     *     @param {module:echarts/ExtensionAPI} api
-	     *
-	     * convertToPixel:
-	     * convertFromPixel:
-	     *     These two methods is also responsible for determine whether this
-	     *     coodinate system is applicable to the given `finder`.
-	     *     Each coordinate system will be tried, util one returns none
-	     *     null/undefined value.
-	     *     @param {module:echarts/model/Global} ecModel
-	     *     @param {Object} finder
-	     *     @param {Array|number} value
-	     *     @return {Array|number} convert result.
-	     *
-	     * containPoint:
-	     *     @param {Array.<number>} point In pixel coordinate system.
-	     *     @return {boolean}
-	     */
-
 	    var coordinateSystemCreators = {};
 
 	    function CoordinateSystemManager() {
@@ -7569,11 +7775,15 @@
 
 	            this.mergeDefaultAndTheme(option, ecModel);
 
+	            var data = this.getInitialData(option, ecModel);
+	            if (true) {
+	                zrUtil.assert(data, 'getInitialData returned invalid data.');
+	            }
 	            /**
 	             * @type {module:echarts/data/List|module:echarts/data/Tree|module:echarts/data/Graph}
 	             * @private
 	             */
-	            set(this, 'dataBeforeProcessed', this.getInitialData(option, ecModel));
+	            set(this, 'dataBeforeProcessed', data);
 
 	            // If we reverse the order (make data firstly, and then make
 	            // dataBeforeProcessed by cloneShallow), cloneShallow will
@@ -7810,9 +8020,9 @@
 	         * @param {Array.<string>|string} dim
 	         * @param {Array.<number>} value
 	         * @param {module:echarts/coord/single/SingleAxis} baseAxis
-	         * @return {Array.<number>} data indices.
+	         * @return {Object} {dataIndices, nestestValue}.
 	         */
-	        getAxisTooltipDataIndex: null,
+	        getAxisTooltipData: null,
 
 	        /**
 	         * See tooltip.
@@ -9069,7 +9279,7 @@
 	    var isString = util.isString;
 	    var isFunction = util.isFunction;
 	    var isObject = util.isObject;
-	    var log = __webpack_require__(40);
+	    var log = __webpack_require__(41);
 
 	    /**
 	     * @alias modue:zrender/mixin/Animatable
@@ -9846,6 +10056,24 @@
 	            return this;
 	        },
 
+	        pause: function () {
+	            for (var i = 0; i < this._clipList.length; i++) {
+	                this._clipList[i].pause();
+	            }
+	            this._paused = true;
+	        },
+
+	        resume: function () {
+	            for (var i = 0; i < this._clipList.length; i++) {
+	                this._clipList[i].resume();
+	            }
+	            this._paused = false;
+	        },
+
+	        isPaused: function () {
+	            return !!this._paused;
+	        },
+
 	        _doneCallback: function () {
 	            // Clear all tracks
 	            this._tracks = {};
@@ -10008,13 +10236,16 @@
 	        this.onframe = options.onframe;
 	        this.ondestroy = options.ondestroy;
 	        this.onrestart = options.onrestart;
+
+	        this._pausedTime = 0;
+	        this._paused = false;
 	    }
 
 	    Clip.prototype = {
 
 	        constructor: Clip,
 
-	        step: function (globalTime) {
+	        step: function (globalTime, deltaTime) {
 	            // Set startTime on first step, or _startTime may has milleseconds different between clips
 	            // PENDING
 	            if (!this._initialized) {
@@ -10022,7 +10253,12 @@
 	                this._initialized = true;
 	            }
 
-	            var percent = (globalTime - this._startTime) / this._life;
+	            if (this._paused) {
+	                this._pausedTime += deltaTime;
+	                return;
+	            }
+
+	            var percent = (globalTime - this._startTime - this._pausedTime) / this._life;
 
 	            // 还没开始
 	            if (percent < 0) {
@@ -10058,17 +10294,26 @@
 	        },
 
 	        restart: function (globalTime) {
-	            var remainder = (globalTime - this._startTime) % this._life;
+	            var remainder = (globalTime - this._startTime - this._pausedTime) % this._life;
 	            this._startTime = globalTime - remainder + this.gap;
+	            this._pausedTime = 0;
 
 	            this._needsRemove = false;
 	        },
 
-	        fire: function(eventType, arg) {
+	        fire: function (eventType, arg) {
 	            eventType = 'on' + eventType;
 	            if (this[eventType]) {
 	                this[eventType](this._target, arg);
 	            }
+	        },
+
+	        pause: function () {
+	            this._paused = true;
+	        },
+
+	        resume: function () {
+	            this._paused = false;
 	        }
 	    };
 
@@ -10429,13 +10674,15 @@
 
 /***/ },
 /* 39 */
-/***/ function(module, exports) {
+/***/ function(module, exports, __webpack_require__) {
 
 	/**
 	 * @module zrender/tool/color
 	 */
 
 
+	    var LRU = __webpack_require__(40);
+
 	    var kCSSColorTable = {
 	        'transparent': [0,0,0,0], 'aliceblue': [240,248,255,1],
 	        'antiquewhite': [250,235,215,1], 'aqua': [0,255,255,1],
@@ -10565,15 +10812,40 @@
 	        return a + (b - a) * p;
 	    }
 
+	    function setRgba(out, r, g, b, a) {
+	        out[0] = r; out[1] = g; out[2] = b; out[3] = a;
+	        return out;
+	    }
+	    function copyRgba(out, a) {
+	        out[0] = a[0]; out[1] = a[1]; out[2] = a[2]; out[3] = a[3];
+	        return out;
+	    }
+	    var colorCache = new LRU(20);
+	    var lastRemovedArr = null;
+	    function putToCache(colorStr, rgbaArr) {
+	        // Reuse removed array
+	        if (lastRemovedArr) {
+	            copyRgba(lastRemovedArr, rgbaArr);
+	        }
+	        lastRemovedArr = colorCache.put(colorStr, lastRemovedArr || (rgbaArr.slice()));
+	    }
 	    /**
 	     * @param {string} colorStr
+	     * @param {Array.<number>} out
 	     * @return {Array.<number>}
 	     * @memberOf module:zrender/util/color
 	     */
-	    function parse(colorStr) {
+	    function parse(colorStr, rgbaArr) {
 	        if (!colorStr) {
 	            return;
 	        }
+	        rgbaArr = rgbaArr || [];
+
+	        var cached = colorCache.get(colorStr);
+	        if (cached) {
+	            return copyRgba(rgbaArr, cached);
+	        }
+
 	        // colorStr may be not string
 	        colorStr = colorStr + '';
 	        // Remove all whitespace, not compliant, but should just be more accepting.
@@ -10581,7 +10853,9 @@
 
 	        // Color keywords (and transparent) lookup.
 	        if (str in kCSSColorTable) {
-	            return kCSSColorTable[str].slice();  // dup.
+	            copyRgba(rgbaArr, kCSSColorTable[str]);
+	            putToCache(colorStr, rgbaArr);
+	            return rgbaArr;
 	        }
 
 	        // #abc and #abc123 syntax.
@@ -10589,26 +10863,32 @@
 	            if (str.length === 4) {
 	                var iv = parseInt(str.substr(1), 16);  // TODO(deanm): Stricter parsing.
 	                if (!(iv >= 0 && iv <= 0xfff)) {
+	                    setRgba(rgbaArr, 0, 0, 0, 1);
 	                    return;  // Covers NaN.
 	                }
-	                return [
+	                setRgba(rgbaArr,
 	                    ((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8),
 	                    (iv & 0xf0) | ((iv & 0xf0) >> 4),
 	                    (iv & 0xf) | ((iv & 0xf) << 4),
 	                    1
-	                ];
+	                );
+	                putToCache(colorStr, rgbaArr);
+	                return rgbaArr;
 	            }
 	            else if (str.length === 7) {
 	                var iv = parseInt(str.substr(1), 16);  // TODO(deanm): Stricter parsing.
 	                if (!(iv >= 0 && iv <= 0xffffff)) {
+	                    setRgba(rgbaArr, 0, 0, 0, 1);
 	                    return;  // Covers NaN.
 	                }
-	                return [
+	                setRgba(rgbaArr,
 	                    (iv & 0xff0000) >> 16,
 	                    (iv & 0xff00) >> 8,
 	                    iv & 0xff,
 	                    1
-	                ];
+	                );
+	                putToCache(colorStr, rgbaArr);
+	                return rgbaArr;
 	            }
 
 	            return;
@@ -10621,44 +10901,56 @@
 	            switch (fname) {
 	                case 'rgba':
 	                    if (params.length !== 4) {
+	                        setRgba(rgbaArr, 0, 0, 0, 1);
 	                        return;
 	                    }
 	                    alpha = parseCssFloat(params.pop()); // jshint ignore:line
 	                // Fall through.
 	                case 'rgb':
 	                    if (params.length !== 3) {
+	                        setRgba(rgbaArr, 0, 0, 0, 1);
 	                        return;
 	                    }
-	                    return [
+	                    setRgba(rgbaArr,
 	                        parseCssInt(params[0]),
 	                        parseCssInt(params[1]),
 	                        parseCssInt(params[2]),
 	                        alpha
-	                    ];
+	                    );
+	                    putToCache(colorStr, rgbaArr);
+	                    return rgbaArr;
 	                case 'hsla':
 	                    if (params.length !== 4) {
+	                        setRgba(rgbaArr, 0, 0, 0, 1);
 	                        return;
 	                    }
 	                    params[3] = parseCssFloat(params[3]);
-	                    return hsla2rgba(params);
+	                    hsla2rgba(params, rgbaArr);
+	                    putToCache(colorStr, rgbaArr);
+	                    return rgbaArr;
 	                case 'hsl':
 	                    if (params.length !== 3) {
+	                        setRgba(rgbaArr, 0, 0, 0, 1);
 	                        return;
 	                    }
-	                    return hsla2rgba(params);
+	                    hsla2rgba(params, rgbaArr);
+	                    putToCache(colorStr, rgbaArr);
+	                    return rgbaArr;
 	                default:
 	                    return;
 	            }
 	        }
 
+	        setRgba(rgbaArr, 0, 0, 0, 1);
 	        return;
 	    }
 
 	    /**
 	     * @param {Array.<number>} hsla
+	     * @param {Array.<number>} rgba
 	     * @return {Array.<number>} rgba
 	     */
-	    function hsla2rgba(hsla) {
+	    function hsla2rgba(hsla, rgba) {
 	        var h = (((parseFloat(hsla[0]) % 360) + 360) % 360) / 360;  // 0 .. 1
 	        // NOTE(deanm): According to the CSS spec s/l should only be
 	        // percentages, but we don't bother and let float or percentage.
@@ -10667,11 +10959,13 @@
 	        var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;
 	        var m1 = l * 2 - m2;
 
-	        var rgba = [
+	        rgba = rgba || [];
+	        setRgba(rgba,
 	            clampCssByte(cssHueToRgb(m1, m2, h + 1 / 3) * 255),
 	            clampCssByte(cssHueToRgb(m1, m2, h) * 255),
-	            clampCssByte(cssHueToRgb(m1, m2, h - 1 / 3) * 255)
-	        ];
+	            clampCssByte(cssHueToRgb(m1, m2, h - 1 / 3) * 255),
+	            1
+	        );
 
 	        if (hsla.length === 4) {
 	            rgba[3] = hsla[3];
@@ -10787,12 +11081,12 @@
 	     * @return {Array.<number>}
 	     */
 	    function fastMapToColor(normalizedValue, colors, out) {
+	        out = out || [0, 0, 0, 0];
 	        if (!(colors && colors.length)
 	            || !(normalizedValue >= 0 && normalizedValue <= 1)
 	        ) {
-	            return;
+	            return out;
 	        }
-	        out = out || [0, 0, 0, 0];
 	        var value = normalizedValue * (colors.length - 1);
 	        var leftIndex = Math.floor(value);
 	        var rightIndex = Math.ceil(value);
@@ -10886,9 +11180,12 @@
 	    /**
 	     * @param {Array.<string>} colors Color list.
 	     * @param {string} type 'rgba', 'hsva', ...
-	     * @return {string} Result color.
+	     * @return {string} Result color. (If input illegal, return undefined).
 	     */
 	    function stringify(arrColor, type) {
+	        if (!arrColor) {
+	            return;
+	        }
 	        var colorStr = arrColor[0] + ',' + arrColor[1] + ',' + arrColor[2];
 	        if (type === 'rgba' || type === 'hsva' || type === 'hsla') {
 	            colorStr += ',' + arrColor[3];
@@ -10912,10 +11209,212 @@
 
 /***/ },
 /* 40 */
+/***/ function(module, exports) {
+
+	// Simple LRU cache use doubly linked list
+	// @module zrender/core/LRU
+
+
+	    /**
+	     * Simple double linked list. Compared with array, it has O(1) remove operation.
+	     * @constructor
+	     */
+	    var LinkedList = function () {
+
+	        /**
+	         * @type {module:zrender/core/LRU~Entry}
+	         */
+	        this.head = null;
+
+	        /**
+	         * @type {module:zrender/core/LRU~Entry}
+	         */
+	        this.tail = null;
+
+	        this._len = 0;
+	    };
+
+	    var linkedListProto = LinkedList.prototype;
+	    /**
+	     * Insert a new value at the tail
+	     * @param  {} val
+	     * @return {module:zrender/core/LRU~Entry}
+	     */
+	    linkedListProto.insert = function (val) {
+	        var entry = new Entry(val);
+	        this.insertEntry(entry);
+	        return entry;
+	    };
+
+	    /**
+	     * Insert an entry at the tail
+	     * @param  {module:zrender/core/LRU~Entry} entry
+	     */
+	    linkedListProto.insertEntry = function (entry) {
+	        if (!this.head) {
+	            this.head = this.tail = entry;
+	        }
+	        else {
+	            this.tail.next = entry;
+	            entry.prev = this.tail;
+	            entry.next = null;
+	            this.tail = entry;
+	        }
+	        this._len++;
+	    };
+
+	    /**
+	     * Remove entry.
+	     * @param  {module:zrender/core/LRU~Entry} entry
+	     */
+	    linkedListProto.remove = function (entry) {
+	        var prev = entry.prev;
+	        var next = entry.next;
+	        if (prev) {
+	            prev.next = next;
+	        }
+	        else {
+	            // Is head
+	            this.head = next;
+	        }
+	        if (next) {
+	            next.prev = prev;
+	        }
+	        else {
+	            // Is tail
+	            this.tail = prev;
+	        }
+	        entry.next = entry.prev = null;
+	        this._len--;
+	    };
+
+	    /**
+	     * @return {number}
+	     */
+	    linkedListProto.len = function () {
+	        return this._len;
+	    };
+
+	    /**
+	     * Clear list
+	     */
+	    linkedListProto.clear = function () {
+	        this.head = this.tail = null;
+	        this._len = 0;
+	    };
+
+	    /**
+	     * @constructor
+	     * @param {} val
+	     */
+	    var Entry = function (val) {
+	        /**
+	         * @type {}
+	         */
+	        this.value = val;
+
+	        /**
+	         * @type {module:zrender/core/LRU~Entry}
+	         */
+	        this.next;
+
+	        /**
+	         * @type {module:zrender/core/LRU~Entry}
+	         */
+	        this.prev;
+	    };
+
+	    /**
+	     * LRU Cache
+	     * @constructor
+	     * @alias module:zrender/core/LRU
+	     */
+	    var LRU = function (maxSize) {
+
+	        this._list = new LinkedList();
+
+	        this._map = {};
+
+	        this._maxSize = maxSize || 10;
+
+	        this._lastRemovedEntry = null;
+	    };
+
+	    var LRUProto = LRU.prototype;
+
+	    /**
+	     * @param  {string} key
+	     * @param  {} value
+	     * @return {} Removed value
+	     */
+	    LRUProto.put = function (key, value) {
+	        var list = this._list;
+	        var map = this._map;
+	        var removed = null;
+	        if (map[key] == null) {
+	            var len = list.len();
+	            // Reuse last removed entry
+	            var entry = this._lastRemovedEntry;
+
+	            if (len >= this._maxSize && len > 0) {
+	                // Remove the least recently used
+	                var leastUsedEntry = list.head;
+	                list.remove(leastUsedEntry);
+	                delete map[leastUsedEntry.key];
+
+	                removed = leastUsedEntry.value;
+	                this._lastRemovedEntry = leastUsedEntry;
+	            }
+
+	            if (entry) {
+	                entry.value = value;
+	            }
+	            else {
+	                entry = new Entry(value);
+	            }
+	            entry.key = key;
+	            list.insertEntry(entry);
+	            map[key] = entry;
+	        }
+
+	        return removed;
+	    };
+
+	    /**
+	     * @param  {string} key
+	     * @return {}
+	     */
+	    LRUProto.get = function (key) {
+	        var entry = this._map[key];
+	        var list = this._list;
+	        if (entry != null) {
+	            // Put the latest used entry in the tail
+	            if (entry !== list.tail) {
+	                list.remove(entry);
+	                list.insertEntry(entry);
+	            }
+
+	            return entry.value;
+	        }
+	    };
+
+	    /**
+	     * Clear the cache
+	     */
+	    LRUProto.clear = function () {
+	        this._list.clear();
+	        this._map = {};
+	    };
+
+	    module.exports = LRU;
+
+
+/***/ },
+/* 41 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
-	        var config = __webpack_require__(41);
+	        var config = __webpack_require__(42);
 
 	        /**
 	         * @exports zrender/tool/log
@@ -10949,7 +11448,7 @@
 
 
 /***/ },
-/* 41 */
+/* 42 */
 /***/ function(module, exports) {
 
 	
@@ -10981,7 +11480,7 @@
 
 
 /***/ },
-/* 42 */
+/* 43 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -11129,7 +11628,7 @@
 
 
 /***/ },
-/* 43 */
+/* 44 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -11137,9 +11636,9 @@
 
 	    var zrUtil = __webpack_require__(4);
 
-	    var pathTool = __webpack_require__(44);
+	    var pathTool = __webpack_require__(45);
 	    var round = Math.round;
-	    var Path = __webpack_require__(45);
+	    var Path = __webpack_require__(46);
 	    var colorTool = __webpack_require__(39);
 	    var matrix = __webpack_require__(11);
 	    var vector = __webpack_require__(10);
@@ -11148,7 +11647,7 @@
 
 	    graphic.Group = __webpack_require__(30);
 
-	    graphic.Image = __webpack_require__(61);
+	    graphic.Image = __webpack_require__(62);
 
 	    graphic.Text = __webpack_require__(63);
 
@@ -11482,7 +11981,8 @@
 	    }
 
 	    /**
-	     * Set hover style of element
+	     * Set hover style of element.
+	     * This method can be called repeatly without side-effects.
 	     * @param {module:zrender/Element} el
 	     * @param {Object} [hoverStyle]
 	     * @param {Object} [opt]
@@ -11715,14 +12215,14 @@
 
 
 /***/ },
-/* 44 */
+/* 45 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var Path = __webpack_require__(45);
-	    var PathProxy = __webpack_require__(49);
-	    var transformPath = __webpack_require__(60);
+	    var Path = __webpack_require__(46);
+	    var PathProxy = __webpack_require__(50);
+	    var transformPath = __webpack_require__(61);
 	    var matrix = __webpack_require__(11);
 
 	    // command chars
@@ -12123,7 +12623,7 @@
 
 
 /***/ },
-/* 45 */
+/* 46 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -12133,12 +12633,12 @@
 
 
 
-	    var Displayable = __webpack_require__(46);
+	    var Displayable = __webpack_require__(47);
 	    var zrUtil = __webpack_require__(4);
-	    var PathProxy = __webpack_require__(49);
-	    var pathContain = __webpack_require__(52);
+	    var PathProxy = __webpack_require__(50);
+	    var pathContain = __webpack_require__(53);
 
-	    var Pattern = __webpack_require__(59);
+	    var Pattern = __webpack_require__(60);
 	    var getCanvasPattern = Pattern.prototype.getCanvasPattern;
 
 	    var abs = Math.abs;
@@ -12488,7 +12988,7 @@
 
 
 /***/ },
-/* 46 */
+/* 47 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -12501,10 +13001,10 @@
 
 	    var zrUtil = __webpack_require__(4);
 
-	    var Style = __webpack_require__(47);
+	    var Style = __webpack_require__(48);
 
 	    var Element = __webpack_require__(31);
-	    var RectText = __webpack_require__(48);
+	    var RectText = __webpack_require__(49);
 	    // var Stateful = require('./mixin/Stateful');
 
 	    /**
@@ -12762,7 +13262,7 @@
 
 
 /***/ },
-/* 47 */
+/* 48 */
 /***/ function(module, exports) {
 
 	/**
@@ -13084,7 +13584,7 @@
 
 
 /***/ },
-/* 48 */
+/* 49 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -13226,8 +13726,9 @@
 	            }
 
 	            for (var i = 0; i < textLines.length; i++) {
-	                textFill && ctx.fillText(textLines[i], x, y);
+	                    // Fill after stroke so the outline will not cover the main part.
 	                textStroke && ctx.strokeText(textLines[i], x, y);
+	                textFill && ctx.fillText(textLines[i], x, y);
 	                y += textRect.lineHeight;
 	            }
 
@@ -13239,7 +13740,7 @@
 
 
 /***/ },
-/* 49 */
+/* 50 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -13254,11 +13755,11 @@
 	 // TODO getTotalLength, getPointAtLength
 
 
-	    var curve = __webpack_require__(50);
+	    var curve = __webpack_require__(51);
 	    var vec2 = __webpack_require__(10);
-	    var bbox = __webpack_require__(51);
+	    var bbox = __webpack_require__(52);
 	    var BoundingRect = __webpack_require__(9);
-	    var dpr = __webpack_require__(41).devicePixelRatio;
+	    var dpr = __webpack_require__(42).devicePixelRatio;
 
 	    var CMD = {
 	        M: 1,
@@ -14014,7 +14515,7 @@
 
 
 /***/ },
-/* 50 */
+/* 51 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -14560,7 +15061,7 @@
 
 
 /***/ },
-/* 51 */
+/* 52 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -14569,7 +15070,7 @@
 
 
 	    var vec2 = __webpack_require__(10);
-	    var curve = __webpack_require__(50);
+	    var curve = __webpack_require__(51);
 
 	    var bbox = {};
 	    var mathMin = Math.min;
@@ -14796,21 +15297,21 @@
 
 
 /***/ },
-/* 52 */
+/* 53 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
 
 
-	    var CMD = __webpack_require__(49).CMD;
-	    var line = __webpack_require__(53);
-	    var cubic = __webpack_require__(54);
-	    var quadratic = __webpack_require__(55);
-	    var arc = __webpack_require__(56);
-	    var normalizeRadian = __webpack_require__(57).normalizeRadian;
-	    var curve = __webpack_require__(50);
+	    var CMD = __webpack_require__(50).CMD;
+	    var line = __webpack_require__(54);
+	    var cubic = __webpack_require__(55);
+	    var quadratic = __webpack_require__(56);
+	    var arc = __webpack_require__(57);
+	    var normalizeRadian = __webpack_require__(58).normalizeRadian;
+	    var curve = __webpack_require__(51);
 
-	    var windingLine = __webpack_require__(58);
+	    var windingLine = __webpack_require__(59);
 
 	    var containStroke = line.containStroke;
 
@@ -15202,7 +15703,7 @@
 
 
 /***/ },
-/* 53 */
+/* 54 */
 /***/ function(module, exports) {
 
 	
@@ -15250,12 +15751,12 @@
 
 
 /***/ },
-/* 54 */
+/* 55 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var curve = __webpack_require__(50);
+	    var curve = __webpack_require__(51);
 
 	    module.exports = {
 	        /**
@@ -15297,12 +15798,12 @@
 
 
 /***/ },
-/* 55 */
+/* 56 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var curve = __webpack_require__(50);
+	    var curve = __webpack_require__(51);
 
 	    module.exports = {
 	        /**
@@ -15342,12 +15843,12 @@
 
 
 /***/ },
-/* 56 */
+/* 57 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var normalizeRadian = __webpack_require__(57).normalizeRadian;
+	    var normalizeRadian = __webpack_require__(58).normalizeRadian;
 	    var PI2 = Math.PI * 2;
 
 	    module.exports = {
@@ -15408,7 +15909,7 @@
 
 
 /***/ },
-/* 57 */
+/* 58 */
 /***/ function(module, exports) {
 
 	
@@ -15426,7 +15927,7 @@
 
 
 /***/ },
-/* 58 */
+/* 59 */
 /***/ function(module, exports) {
 
 	
@@ -15453,7 +15954,7 @@
 
 
 /***/ },
-/* 59 */
+/* 60 */
 /***/ function(module, exports) {
 
 	
@@ -15476,12 +15977,12 @@
 
 
 /***/ },
-/* 60 */
+/* 61 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var CMD = __webpack_require__(49).CMD;
+	    var CMD = __webpack_require__(50).CMD;
 	    var vec2 = __webpack_require__(10);
 	    var v2ApplyTransform = vec2.applyTransform;
 
@@ -15577,7 +16078,7 @@
 
 
 /***/ },
-/* 61 */
+/* 62 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -15587,11 +16088,11 @@
 
 
 
-	    var Displayable = __webpack_require__(46);
+	    var Displayable = __webpack_require__(47);
 	    var BoundingRect = __webpack_require__(9);
 	    var zrUtil = __webpack_require__(4);
 
-	    var LRU = __webpack_require__(62);
+	    var LRU = __webpack_require__(40);
 	    var globalImageCache = new LRU(50);
 	    /**
 	     * @alias zrender/graphic/Image
@@ -15666,19 +16167,30 @@
 	                // }
 	                // Else is canvas
 
-	                var width = style.width || image.width;
-	                var height = style.height || image.height;
 	                var x = style.x || 0;
 	                var y = style.y || 0;
 	                // 图片加载失败
 	                if (!image.width || !image.height) {
 	                    return;
 	                }
+	                var width = style.width;
+	                var height = style.height;
+	                var aspect = image.width / image.height;
+	                if (width == null && height != null) {
+	                    // Keep image/height ratio
+	                    width = height * aspect;
+	                }
+	                else if (height == null && width != null) {
+	                    height = width / aspect;
+	                }
+	                else if (width == null && height == null) {
+	                    width = image.width;
+	                    height = image.height;
+	                }
 
 	                // 设置transform
 	                this.setTransform(ctx);
 
-
 	                if (style.sWidth && style.sHeight) {
 	                    var sx = style.sx || 0;
 	                    var sy = style.sy || 0;
@@ -15703,14 +16215,6 @@
 	                    ctx.drawImage(image, x, y, width, height);
 	                }
 
-	                // 如果没设置宽和高的话自动根据图片宽高设置
-	                if (style.width == null) {
-	                    style.width = width;
-	                }
-	                if (style.height == null) {
-	                    style.height = height;
-	                }
-
 	                this.restoreTransform(ctx);
 
 	                // Draw rect text
@@ -15738,181 +16242,6 @@
 
 
 /***/ },
-/* 62 */
-/***/ function(module, exports) {
-
-	// Simple LRU cache use doubly linked list
-	// @module zrender/core/LRU
-
-
-	    /**
-	     * Simple double linked list. Compared with array, it has O(1) remove operation.
-	     * @constructor
-	     */
-	    var LinkedList = function() {
-
-	        /**
-	         * @type {module:zrender/core/LRU~Entry}
-	         */
-	        this.head = null;
-
-	        /**
-	         * @type {module:zrender/core/LRU~Entry}
-	         */
-	        this.tail = null;
-
-	        this._len = 0;
-	    };
-
-	    var linkedListProto = LinkedList.prototype;
-	    /**
-	     * Insert a new value at the tail
-	     * @param  {} val
-	     * @return {module:zrender/core/LRU~Entry}
-	     */
-	    linkedListProto.insert = function(val) {
-	        var entry = new Entry(val);
-	        this.insertEntry(entry);
-	        return entry;
-	    };
-
-	    /**
-	     * Insert an entry at the tail
-	     * @param  {module:zrender/core/LRU~Entry} entry
-	     */
-	    linkedListProto.insertEntry = function(entry) {
-	        if (!this.head) {
-	            this.head = this.tail = entry;
-	        }
-	        else {
-	            this.tail.next = entry;
-	            entry.prev = this.tail;
-	            this.tail = entry;
-	        }
-	        this._len++;
-	    };
-
-	    /**
-	     * Remove entry.
-	     * @param  {module:zrender/core/LRU~Entry} entry
-	     */
-	    linkedListProto.remove = function(entry) {
-	        var prev = entry.prev;
-	        var next = entry.next;
-	        if (prev) {
-	            prev.next = next;
-	        }
-	        else {
-	            // Is head
-	            this.head = next;
-	        }
-	        if (next) {
-	            next.prev = prev;
-	        }
-	        else {
-	            // Is tail
-	            this.tail = prev;
-	        }
-	        entry.next = entry.prev = null;
-	        this._len--;
-	    };
-
-	    /**
-	     * @return {number}
-	     */
-	    linkedListProto.len = function() {
-	        return this._len;
-	    };
-
-	    /**
-	     * @constructor
-	     * @param {} val
-	     */
-	    var Entry = function(val) {
-	        /**
-	         * @type {}
-	         */
-	        this.value = val;
-
-	        /**
-	         * @type {module:zrender/core/LRU~Entry}
-	         */
-	        this.next;
-
-	        /**
-	         * @type {module:zrender/core/LRU~Entry}
-	         */
-	        this.prev;
-	    };
-
-	    /**
-	     * LRU Cache
-	     * @constructor
-	     * @alias module:zrender/core/LRU
-	     */
-	    var LRU = function(maxSize) {
-
-	        this._list = new LinkedList();
-
-	        this._map = {};
-
-	        this._maxSize = maxSize || 10;
-	    };
-
-	    var LRUProto = LRU.prototype;
-
-	    /**
-	     * @param  {string} key
-	     * @param  {} value
-	     */
-	    LRUProto.put = function(key, value) {
-	        var list = this._list;
-	        var map = this._map;
-	        if (map[key] == null) {
-	            var len = list.len();
-	            if (len >= this._maxSize && len > 0) {
-	                // Remove the least recently used
-	                var leastUsedEntry = list.head;
-	                list.remove(leastUsedEntry);
-	                delete map[leastUsedEntry.key];
-	            }
-
-	            var entry = list.insert(value);
-	            entry.key = key;
-	            map[key] = entry;
-	        }
-	    };
-
-	    /**
-	     * @param  {string} key
-	     * @return {}
-	     */
-	    LRUProto.get = function(key) {
-	        var entry = this._map[key];
-	        var list = this._list;
-	        if (entry != null) {
-	            // Put the latest used entry in the tail
-	            if (entry !== list.tail) {
-	                list.remove(entry);
-	                list.insertEntry(entry);
-	            }
-
-	            return entry.value;
-	        }
-	    };
-
-	    /**
-	     * Clear the cache
-	     */
-	    LRUProto.clear = function() {
-	        this._list.clear();
-	        this._map = {};
-	    };
-
-	    module.exports = LRU;
-
-
-/***/ },
 /* 63 */
 /***/ function(module, exports, __webpack_require__) {
 
@@ -15927,7 +16256,7 @@
 
 
 
-	    var Displayable = __webpack_require__(46);
+	    var Displayable = __webpack_require__(47);
 	    var zrUtil = __webpack_require__(4);
 	    var textContain = __webpack_require__(8);
 
@@ -15995,6 +16324,7 @@
 	                if (ctx.textAlign !== textAlign) {
 	                    ctx.textAlign = 'left';
 	                }
+	                // FIXME in text contain default is top
 	                ctx.textBaseline = textBaseline || 'alphabetic';
 	                // Use canvas default alphabetic baseline
 	                if (ctx.textBaseline !== textBaseline) {
@@ -16005,8 +16335,9 @@
 
 	                var textLines = text.split('\n');
 	                for (var i = 0; i < textLines.length; i++) {
-	                    style.hasFill() && ctx.fillText(textLines[i], x, y);
+	                    // Fill after stroke so the outline will not cover the main part.
 	                    style.hasStroke() && ctx.strokeText(textLines[i], x, y);
+	                    style.hasFill() && ctx.fillText(textLines[i], x, y);
 	                    y += lineHeight;
 	                }
 
@@ -16015,8 +16346,8 @@
 	        },
 
 	        getBoundingRect: function () {
+	            var style = this.style;
 	            if (!this._rect) {
-	                var style = this.style;
 	                var textVerticalAlign = style.textVerticalAlign;
 	                var rect = textContain.getBoundingRect(
 	                    style.text + '', style.textFont || style.font, style.textAlign,
@@ -16032,8 +16363,16 @@
 	                }
 	                rect.x += style.x || 0;
 	                rect.y += style.y || 0;
+	                if (style.hasStroke()) {
+	                    var w = style.lineWidth;
+	                    rect.x -= w / 2;
+	                    rect.y -= w / 2;
+	                    rect.width += w;
+	                    rect.height += w;
+	                }
 	                this._rect = rect;
 	            }
+
 	            return this._rect;
 	        }
 	    };
@@ -16055,7 +16394,7 @@
 
 
 
-	    module.exports = __webpack_require__(45).extend({
+	    module.exports = __webpack_require__(46).extend({
 
 	        type: 'circle',
 
@@ -16092,7 +16431,7 @@
 
 
 	    var env = __webpack_require__(2);
-	    var Path = __webpack_require__(45);
+	    var Path = __webpack_require__(46);
 
 	    var shadowTemp = [
 	        ['shadowBlur', 0],
@@ -16209,7 +16548,7 @@
 	 */
 
 
-	    module.exports = __webpack_require__(45).extend({
+	    module.exports = __webpack_require__(46).extend({
 
 	        type: 'ring',
 
@@ -16245,7 +16584,7 @@
 
 	    var polyHelper = __webpack_require__(68);
 
-	    module.exports = __webpack_require__(45).extend({
+	    module.exports = __webpack_require__(46).extend({
 	        
 	        type: 'polygon',
 
@@ -16504,7 +16843,7 @@
 
 	    var polyHelper = __webpack_require__(68);
 
-	    module.exports = __webpack_require__(45).extend({
+	    module.exports = __webpack_require__(46).extend({
 	        
 	        type: 'polyline',
 
@@ -16540,7 +16879,7 @@
 
 	    var roundRectHelper = __webpack_require__(73);
 
-	    module.exports = __webpack_require__(45).extend({
+	    module.exports = __webpack_require__(46).extend({
 
 	        type: 'rect',
 
@@ -16680,7 +17019,7 @@
 	 * @module zrender/graphic/shape/Line
 	 */
 
-	    module.exports = __webpack_require__(45).extend({
+	    module.exports = __webpack_require__(46).extend({
 
 	        type: 'line',
 
@@ -16747,7 +17086,7 @@
 	 */
 
 
-	    var curveTool = __webpack_require__(50);
+	    var curveTool = __webpack_require__(51);
 	    var vec2 = __webpack_require__(10);
 	    var quadraticSubdivide = curveTool.quadraticSubdivide;
 	    var cubicSubdivide = curveTool.cubicSubdivide;
@@ -16774,7 +17113,7 @@
 	            ];
 	        }
 	    }
-	    module.exports = __webpack_require__(45).extend({
+	    module.exports = __webpack_require__(46).extend({
 
 	        type: 'bezier-curve',
 
@@ -16887,7 +17226,7 @@
 	 */
 	 
 
-	    module.exports = __webpack_require__(45).extend({
+	    module.exports = __webpack_require__(46).extend({
 
 	        type: 'arc',
 
@@ -16938,7 +17277,7 @@
 	// CompoundPath to improve performance
 
 
-	    var Path = __webpack_require__(45);
+	    var Path = __webpack_require__(46);
 	    module.exports = Path.extend({
 
 	        type: 'compound',
@@ -17299,7 +17638,7 @@
 	    /**
 	     * @type {string}
 	     */
-	    zrender.version = '3.3.0';
+	    zrender.version = '3.4.0';
 
 	    /**
 	     * Initializing a zrender instance
@@ -17386,6 +17725,7 @@
 	        var storage = new Storage();
 
 	        var rendererType = opts.renderer;
+	        // TODO WebGL
 	        if (useVML) {
 	            if (!painterCtors.vml) {
 	                throw new Error('You need to require \'zrender/vml/vml\' to support IE8');
@@ -17616,9 +17956,8 @@
 	         * @param {number} width
 	         * @param {number} height
 	         */
-	        pathToImage: function(e, width, height) {
-	            var id = guid();
-	            return this.painter.pathToImage(id, e, width, height);
+	        pathToImage: function(e, dpr) {
+	            return this.painter.pathToImage(e, dpr);
 	        },
 
 	        /**
@@ -19175,7 +19514,7 @@
 	            var deferredClips = [];
 	            for (var i = 0; i < len; i++) {
 	                var clip = clips[i];
-	                var e = clip.step(time);
+	                var e = clip.step(time, delta);
 	                // Throw out the events need to be called after
 	                // stage.update, like destroy
 	                if (e) {
@@ -19998,9 +20337,9 @@
 	 */
 	 
 
-	    var config = __webpack_require__(41);
+	    var config = __webpack_require__(42);
 	    var util = __webpack_require__(4);
-	    var log = __webpack_require__(40);
+	    var log = __webpack_require__(41);
 	    var BoundingRect = __webpack_require__(9);
 	    var timsort = __webpack_require__(86);
 
@@ -20023,7 +20362,7 @@
 	            return false;
 	        }
 
-	        if (layer.isBuildin) {
+	        if (layer.__builtin__) {
 	            return true;
 	        }
 
@@ -20177,6 +20516,12 @@
 	            root.appendChild(domRoot);
 	        }
 	        else {
+	            if (opts.width != null) {
+	                root.width = opts.width;
+	            }
+	            if (opts.height != null) {
+	                root.height = opts.height;
+	            }
 	            // Use canvas width and height directly
 	            var width = root.width;
 	            var height = root.height;
@@ -20195,8 +20540,6 @@
 	            this._domRoot = root;
 	        }
 
-	        this.pathToImage = this._createPathToImage();
-
 	        // Layers for progressive rendering
 	        this._progressiveLayers = [];
 
@@ -20243,7 +20586,7 @@
 	            for (var i = 0; i < zlevelList.length; i++) {
 	                var z = zlevelList[i];
 	                var layer = this._layers[z];
-	                if (!layer.isBuildin && layer.refresh) {
+	                if (!layer.__builtin__ && layer.refresh) {
 	                    layer.refresh();
 	                }
 	            }
@@ -20386,11 +20729,11 @@
 
 	            this._clearProgressive();
 
-	            this.eachBuildinLayer(preProcessLayer);
+	            this.eachBuiltinLayer(preProcessLayer);
 
 	            this._doPaintList(list, paintAll);
 
-	            this.eachBuildinLayer(postProcessLayer);
+	            this.eachBuiltinLayer(postProcessLayer);
 	        },
 
 	        _doPaintList: function (list, paintAll) {
@@ -20446,7 +20789,7 @@
 	                    currentZLevel = elZLevel;
 	                    currentLayer = this.getLayer(currentZLevel);
 
-	                    if (!currentLayer.isBuildin) {
+	                    if (!currentLayer.__builtin__) {
 	                        log(
 	                            'ZLevel ' + currentZLevel
 	                            + ' has been used by unkown layer ' + currentLayer.id
@@ -20591,7 +20934,7 @@
 	            if (!layer) {
 	                // Create a new layer
 	                layer = new Layer('zr_' + zlevel, this, this.dpr);
-	                layer.isBuildin = true;
+	                layer.__builtin__ = true;
 
 	                if (this._layerConfig[zlevel]) {
 	                    util.merge(layer, this._layerConfig[zlevel], true);
@@ -20639,28 +20982,33 @@
 	            }
 	            zlevelList.splice(i + 1, 0, zlevel);
 
-	            if (prevLayer) {
-	                var prevDom = prevLayer.dom;
-	                if (prevDom.nextSibling) {
-	                    domRoot.insertBefore(
-	                        layer.dom,
-	                        prevDom.nextSibling
-	                    );
-	                }
-	                else {
-	                    domRoot.appendChild(layer.dom);
-	                }
-	            }
-	            else {
-	                if (domRoot.firstChild) {
-	                    domRoot.insertBefore(layer.dom, domRoot.firstChild);
-	                }
-	                else {
-	                    domRoot.appendChild(layer.dom);
-	                }
-	            }
-
 	            layersMap[zlevel] = layer;
+
+	            // Vitual layer will not directly show on the screen.
+	            // (It can be a WebGL layer and assigned to a ZImage element)
+	            // But it still under management of zrender.
+	            if (!layer.virtual) {
+	                if (prevLayer) {
+	                    var prevDom = prevLayer.dom;
+	                    if (prevDom.nextSibling) {
+	                        domRoot.insertBefore(
+	                            layer.dom,
+	                            prevDom.nextSibling
+	                        );
+	                    }
+	                    else {
+	                        domRoot.appendChild(layer.dom);
+	                    }
+	                }
+	                else {
+	                    if (domRoot.firstChild) {
+	                        domRoot.insertBefore(layer.dom, domRoot.firstChild);
+	                    }
+	                    else {
+	                        domRoot.appendChild(layer.dom);
+	                    }
+	                }
+	            }
 	        },
 
 	        // Iterate each layer
@@ -20675,7 +21023,7 @@
 	        },
 
 	        // Iterate each buildin layer
-	        eachBuildinLayer: function (cb, context) {
+	        eachBuiltinLayer: function (cb, context) {
 	            var zlevelList = this._zlevelList;
 	            var layer;
 	            var z;
@@ -20683,7 +21031,7 @@
 	            for (i = 0; i < zlevelList.length; i++) {
 	                z = zlevelList[i];
 	                layer = this._layers[z];
-	                if (layer.isBuildin) {
+	                if (layer.__builtin__) {
 	                    cb.call(context, layer, z);
 	                }
 	            }
@@ -20698,7 +21046,7 @@
 	            for (i = 0; i < zlevelList.length; i++) {
 	                z = zlevelList[i];
 	                layer = this._layers[z];
-	                if (! layer.isBuildin) {
+	                if (!layer.__builtin__) {
 	                    cb.call(context, layer, z);
 	                }
 	            }
@@ -20720,7 +21068,7 @@
 	            var elCountsLastFrame = {};
 	            var progressiveElCountsLastFrame = {};
 
-	            this.eachBuildinLayer(function (layer, z) {
+	            this.eachBuiltinLayer(function (layer, z) {
 	                elCountsLastFrame[z] = layer.elCount;
 	                layer.elCount = 0;
 	                layer.__dirty = false;
@@ -20794,7 +21142,7 @@
 	            }
 
 	            // 层中的元素数量有发生变化
-	            this.eachBuildinLayer(function (layer, z) {
+	            this.eachBuiltinLayer(function (layer, z) {
 	                if (elCountsLastFrame[z] !== layer.elCount) {
 	                    layer.__dirty = true;
 	                }
@@ -20815,7 +21163,7 @@
 	         * 清除hover层外所有内容
 	         */
 	        clear: function () {
-	            this.eachBuildinLayer(this._clearLayer);
+	            this.eachBuiltinLayer(this._clearLayer);
 	            return this;
 	        },
 
@@ -20995,30 +21343,47 @@
 	            ) | 0;
 	        },
 
-	        _pathToImage: function (id, path, width, height, dpr) {
+	        pathToImage: function (path, dpr) {
+	            dpr = dpr || this.dpr;
+
 	            var canvas = document.createElement('canvas');
 	            var ctx = canvas.getContext('2d');
+	            var rect = path.getBoundingRect();
+	            var style = path.style;
+	            var shadowBlurSize = style.shadowBlur;
+	            var shadowOffsetX = style.shadowOffsetX;
+	            var shadowOffsetY = style.shadowOffsetY;
+	            var lineWidth = style.hasStroke() ? style.lineWidth : 0;
+
+	            var leftMargin = Math.max(lineWidth / 2, -shadowOffsetX + shadowBlurSize);
+	            var rightMargin = Math.max(lineWidth / 2, shadowOffsetX + shadowBlurSize);
+	            var topMargin = Math.max(lineWidth / 2, -shadowOffsetY + shadowBlurSize);
+	            var bottomMargin = Math.max(lineWidth / 2, shadowOffsetY + shadowBlurSize);
+	            var width = rect.width + leftMargin + rightMargin;
+	            var height = rect.height + topMargin + bottomMargin;
 
 	            canvas.width = width * dpr;
 	            canvas.height = height * dpr;
 
-	            ctx.clearRect(0, 0, width * dpr, height * dpr);
+	            ctx.scale(dpr, dpr);
+	            ctx.clearRect(0, 0, width, height);
+	            ctx.dpr = dpr;
 
 	            var pathTransform = {
 	                position: path.position,
 	                rotation: path.rotation,
 	                scale: path.scale
 	            };
-	            path.position = [0, 0, 0];
+	            path.position = [leftMargin - rect.x, topMargin - rect.y];
 	            path.rotation = 0;
 	            path.scale = [1, 1];
+	            path.updateTransform();
 	            if (path) {
 	                path.brush(ctx);
 	            }
 
-	            var ImageShape = __webpack_require__(61);
+	            var ImageShape = __webpack_require__(62);
 	            var imgShape = new ImageShape({
-	                id: id,
 	                style: {
 	                    x: 0,
 	                    y: 0,
@@ -21039,16 +21404,6 @@
 	            }
 
 	            return imgShape;
-	        },
-
-	        _createPathToImage: function () {
-	            var me = this;
-
-	            return function (id, e, width, height) {
-	                return me._pathToImage(
-	                    id, e, width, height, me.dpr
-	                );
-	            };
 	        }
 	    };
 
@@ -21067,9 +21422,9 @@
 
 
 	    var util = __webpack_require__(4);
-	    var config = __webpack_require__(41);
-	    var Style = __webpack_require__(47);
-	    var Pattern = __webpack_require__(59);
+	    var config = __webpack_require__(42);
+	    var Style = __webpack_require__(48);
+	    var Pattern = __webpack_require__(60);
 
 	    function returnFalse() {
 	        return false;
@@ -21528,7 +21883,7 @@
 
 	
 
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 	    var zrUtil = __webpack_require__(4);
 	    var PI = Math.PI;
 	    /**
@@ -21676,8 +22031,9 @@
 	     * @constructor
 	     * @alias module:echarts/data/List
 	     *
-	     * @param {Array.<string>} dimensions
-	     *        Dimensions should be concrete names like x, y, z, lng, lat, angle, radius
+	     * @param {Array.<string|Object>} dimensions
+	     *      For example, ['someDimName', {name: 'someDimName', type: 'someDimType'}, ...].
+	     *      Dimensions should be concrete names like x, y, z, lng, lat, angle, radius
 	     * @param {module:echarts/model/Model} hostModel
 	     */
 	    var List = function (dimensions, hostModel) {
@@ -22177,37 +22533,39 @@
 	     * @param {number} value
 	     * @param {boolean} stack If given value is after stacked
 	     * @param {number} [maxDistance=Infinity]
-	     * @return {number}
+	     * @return {Array.<number>} Considere multiple points has the same value.
 	     */
 	    listProto.indexOfNearest = function (dim, value, stack, maxDistance) {
 	        var storage = this._storage;
 	        var dimData = storage[dim];
+	        var nearestIndices = [];
+
+	        if (!dimData) {
+	            return nearestIndices;
+	        }
 
 	        if (maxDistance == null) {
 	            maxDistance = Infinity;
 	        }
 
-	        var nearestIdx = -1;
-	        if (dimData) {
-	            var minDist = Number.MAX_VALUE;
-	            for (var i = 0, len = this.count(); i < len; i++) {
-	                var diff = value - this.get(dim, i, stack);
-	                var dist = Math.abs(diff);
-	                if (
-	                    diff <= maxDistance
-	                    && (dist < minDist
-	                        // For the case of two data are same on xAxis, which has sequence data.
-	                        // Show the nearest index
-	                        // https://github.com/ecomfe/echarts/issues/2869
-	                        || (dist === minDist && diff > 0)
-	                    )
-	                ) {
+	        var minDist = Number.MAX_VALUE;
+	        var minDiff = -1;
+	        for (var i = 0, len = this.count(); i < len; i++) {
+	            var diff = value - this.get(dim, i, stack);
+	            var dist = Math.abs(diff);
+	            if (diff <= maxDistance && dist <= minDist) {
+	                // For the case of two data are same on xAxis, which has sequence data.
+	                // Show the nearest index
+	                // https://github.com/ecomfe/echarts/issues/2869
+	                if (dist < minDist || (diff >= 0 && minDiff < 0)) {
 	                    minDist = dist;
-	                    nearestIdx = i;
+	                    minDiff = diff;
+	                    nearestIndices.length = 0;
 	                }
+	                nearestIndices.push(i);
 	            }
 	        }
-	        return nearestIdx;
+	        return nearestIndices;
 	    };
 
 	    /**
@@ -22909,118 +23267,320 @@
 
 	
 
+	    var numberUtil = __webpack_require__(7);
+	    var linearMap = numberUtil.linearMap;
 	    var zrUtil = __webpack_require__(4);
-	    var echarts = __webpack_require__(1);
-	    var PRIORITY = echarts.PRIORITY;
 
-	    __webpack_require__(101);
-	    __webpack_require__(104);
+	    function fixExtentWithBands(extent, nTick) {
+	        var size = extent[1] - extent[0];
+	        var len = nTick;
+	        var margin = size / len / 2;
+	        extent[0] += margin;
+	        extent[1] -= margin;
+	    }
 
-	    echarts.registerVisual(zrUtil.curry(
-	        __webpack_require__(110), 'line', 'circle', 'line'
-	    ));
-	    echarts.registerLayout(zrUtil.curry(
-	        __webpack_require__(111), 'line'
-	    ));
+	    var normalizedExtent = [0, 1];
+	    /**
+	     * @name module:echarts/coord/CartesianAxis
+	     * @constructor
+	     */
+	    var Axis = function (dim, scale, extent) {
 
-	    // Down sample after filter
-	    echarts.registerProcessor(PRIORITY.PROCESSOR.STATISTIC, zrUtil.curry(
-	        __webpack_require__(112), 'line'
-	    ));
+	        /**
+	         * Axis dimension. Such as 'x', 'y', 'z', 'angle', 'radius'
+	         * @type {string}
+	         */
+	        this.dim = dim;
 
-	    // In case developer forget to include grid component
-	    __webpack_require__(113);
+	        /**
+	         * Axis scale
+	         * @type {module:echarts/coord/scale/*}
+	         */
+	        this.scale = scale;
+
+	        /**
+	         * @type {Array.<number>}
+	         * @private
+	         */
+	        this._extent = extent || [0, 0];
+
+	        /**
+	         * @type {boolean}
+	         */
+	        this.inverse = false;
+
+	        /**
+	         * Usually true when axis has a ordinal scale
+	         * @type {boolean}
+	         */
+	        this.onBand = false;
+	    };
+
+	    Axis.prototype = {
+
+	        constructor: Axis,
+
+	        /**
+	         * If axis extent contain given coord
+	         * @param {number} coord
+	         * @return {boolean}
+	         */
+	        contain: function (coord) {
+	            var extent = this._extent;
+	            var min = Math.min(extent[0], extent[1]);
+	            var max = Math.max(extent[0], extent[1]);
+	            return coord >= min && coord <= max;
+	        },
+
+	        /**
+	         * If axis extent contain given data
+	         * @param {number} data
+	         * @return {boolean}
+	         */
+	        containData: function (data) {
+	            return this.contain(this.dataToCoord(data));
+	        },
+
+	        /**
+	         * Get coord extent.
+	         * @return {Array.<number>}
+	         */
+	        getExtent: function () {
+	            var ret = this._extent.slice();
+	            return ret;
+	        },
+
+	        /**
+	         * Get precision used for formatting
+	         * @param {Array.<number>} [dataExtent]
+	         * @return {number}
+	         */
+	        getPixelPrecision: function (dataExtent) {
+	            return numberUtil.getPixelPrecision(
+	                dataExtent || this.scale.getExtent(),
+	                this._extent
+	            );
+	        },
+
+	        /**
+	         * Set coord extent
+	         * @param {number} start
+	         * @param {number} end
+	         */
+	        setExtent: function (start, end) {
+	            var extent = this._extent;
+	            extent[0] = start;
+	            extent[1] = end;
+	        },
+
+	        /**
+	         * Convert data to coord. Data is the rank if it has a ordinal scale
+	         * @param {number} data
+	         * @param  {boolean} clamp
+	         * @return {number}
+	         */
+	        dataToCoord: function (data, clamp) {
+	            var extent = this._extent;
+	            var scale = this.scale;
+	            data = scale.normalize(data);
+
+	            if (this.onBand && scale.type === 'ordinal') {
+	                extent = extent.slice();
+	                fixExtentWithBands(extent, scale.count());
+	            }
+
+	            return linearMap(data, normalizedExtent, extent, clamp);
+	        },
+
+	        /**
+	         * Convert coord to data. Data is the rank if it has a ordinal scale
+	         * @param {number} coord
+	         * @param  {boolean} clamp
+	         * @return {number}
+	         */
+	        coordToData: function (coord, clamp) {
+	            var extent = this._extent;
+	            var scale = this.scale;
+
+	            if (this.onBand && scale.type === 'ordinal') {
+	                extent = extent.slice();
+	                fixExtentWithBands(extent, scale.count());
+	            }
+
+	            var t = linearMap(coord, extent, normalizedExtent, clamp);
+
+	            return this.scale.scale(t);
+	        },
+
+	        /**
+	         * Convert pixel point to data in axis
+	         * @param {Array.<number>} point
+	         * @param  {boolean} clamp
+	         * @return {number} data
+	         */
+	        pointToData: function (point, clamp) {
+	            // Should be implemented in derived class if necessary.
+	        },
+
+	        /**
+	         * @return {Array.<number>}
+	         */
+	        getTicksCoords: function (alignWithLabel) {
+	            if (this.onBand && !alignWithLabel) {
+	                var bands = this.getBands();
+	                var coords = [];
+	                for (var i = 0; i < bands.length; i++) {
+	                    coords.push(bands[i][0]);
+	                }
+	                if (bands[i - 1]) {
+	                    coords.push(bands[i - 1][1]);
+	                }
+	                return coords;
+	            }
+	            else {
+	                return zrUtil.map(this.scale.getTicks(), this.dataToCoord, this);
+	            }
+	        },
+
+	        /**
+	         * Coords of labels are on the ticks or on the middle of bands
+	         * @return {Array.<number>}
+	         */
+	        getLabelsCoords: function () {
+	            return zrUtil.map(this.scale.getTicks(), this.dataToCoord, this);
+	        },
+
+	        /**
+	         * Get bands.
+	         *
+	         * If axis has labels [1, 2, 3, 4]. Bands on the axis are
+	         * |---1---|---2---|---3---|---4---|.
+	         *
+	         * @return {Array}
+	         */
+	         // FIXME Situation when labels is on ticks
+	        getBands: function () {
+	            var extent = this.getExtent();
+	            var bands = [];
+	            var len = this.scale.count();
+	            var start = extent[0];
+	            var end = extent[1];
+	            var span = end - start;
+
+	            for (var i = 0; i < len; i++) {
+	                bands.push([
+	                    span * i / len + start,
+	                    span * (i + 1) / len + start
+	                ]);
+	            }
+	            return bands;
+	        },
+
+	        /**
+	         * Get width of band
+	         * @return {number}
+	         */
+	        getBandWidth: function () {
+	            var axisExtent = this._extent;
+	            var dataExtent = this.scale.getExtent();
+
+	            var len = dataExtent[1] - dataExtent[0] + (this.onBand ? 1 : 0);
+	            // Fix #2728, avoid NaN when only one data.
+	            len === 0 && (len = 1);
+
+	            var size = Math.abs(axisExtent[1] - axisExtent[0]);
+
+	            return Math.abs(size) / len;
+	        }
+
+	    };
+
+	    module.exports = Axis;
 
 
 /***/ },
 /* 101 */
 /***/ function(module, exports, __webpack_require__) {
 
-	'use strict';
-
+	
 
 	    var createListFromArray = __webpack_require__(102);
-	    var SeriesModel = __webpack_require__(28);
+	    var symbolUtil = __webpack_require__(104);
+	    var axisHelper = __webpack_require__(105);
+	    var axisModelCommonMixin = __webpack_require__(111);
+	    var Model = __webpack_require__(12);
+	    var util = __webpack_require__(4);
 
-	    module.exports = SeriesModel.extend({
-
-	        type: 'series.line',
-
-	        dependencies: ['grid', 'polar'],
-
-	        getInitialData: function (option, ecModel) {
-	            if (true) {
-	                var coordSys = option.coordinateSystem;
-	                if (coordSys !== 'polar' && coordSys !== 'cartesian2d') {
-	                    throw new Error('Line not support coordinateSystem besides cartesian and polar');
-	                }
-	            }
-	            return createListFromArray(option.data, this, ecModel);
+	    module.exports = {
+	        /**
+	         * Create a muti dimension List structure from seriesModel.
+	         * @param  {module:echarts/model/Model} seriesModel
+	         * @return {module:echarts/data/List} list
+	         */
+	        createList: function (seriesModel) {
+	            var data = seriesModel.get('data');
+	            return createListFromArray(data, seriesModel, seriesModel.ecModel);
 	        },
 
-	        defaultOption: {
-	            zlevel: 0,                  // 一级层叠
-	            z: 2,                       // 二级层叠
-	            coordinateSystem: 'cartesian2d',
-	            legendHoverLink: true,
+	        /**
+	         * Complete the dimensions array guessed from the data structure.
+	         * @param  {Array.<string>} dimensions Necessary dimensions, like ['x', 'y']
+	         * @param  {Array} data Data list. [[1, 2, 3], [2, 3, 4]]
+	         * @param  {Object} [opt]
+	         * @param  {Array.<string>} [opt.defaultNames] Default names to fill not necessary dimensions, like ['value']
+	         * @param  {string} [opt.extraPrefix] Prefix of name when filling the left dimensions.
+	         * @param  {number} [opt.dimCount] If not specified, guess by the first data item.
+	         * @return {Array.<string>}
+	         */
+	        completeDimensions: __webpack_require__(103),
 
-	            hoverAnimation: true,
-	            // stack: null
-	            // xAxisIndex: 0,
-	            // yAxisIndex: 0,
+	        /**
+	         * Create a symbol element with given symbol configuration: shape, x, y, width, height, color
+	         * @see http://echarts.baidu.com/option.html#series-scatter.symbol
+	         * @param {string} symbolDesc
+	         * @param {number} x
+	         * @param {number} y
+	         * @param {number} w
+	         * @param {number} h
+	         * @param {string} color
+	         */
+	        createSymbol: symbolUtil.createSymbol,
 
-	            // polarIndex: 0,
+	        /**
+	         * Create scale
+	         * @param {Array.<number>} dataExtent
+	         * @param {Object|module:echarts/Model} option
+	         */
+	        createScale: function (dataExtent, option) {
+	            var axisModel = option;
+	            if (!(option instanceof Model)) {
+	                axisModel = new Model(option);
+	                util.mixin(axisModel, axisModelCommonMixin);
+	            }
 
-	            // If clip the overflow value
-	            clipOverflow: true,
+	            var scale = axisHelper.createScaleByModel(axisModel);
+	            scale.setExtent(dataExtent[0], dataExtent[1]);
 
-	            label: {
-	                normal: {
-	                    position: 'top'
-	                }
-	            },
-	            // itemStyle: {
-	            //     normal: {},
-	            //     emphasis: {}
-	            // },
-	            lineStyle: {
-	                normal: {
-	                    width: 2,
-	                    type: 'solid'
-	                }
-	            },
-	            // areaStyle: {},
-	            // false, 'start', 'end', 'middle'
-	            step: false,
+	            axisHelper.niceScaleExtent(scale, axisModel);
+	            return scale;
+	        },
 
-	            // Disabled if step is true
-	            smooth: false,
-	            smoothMonotone: null,
-	            // 拐点图形类型
-	            symbol: 'emptyCircle',
-	            // 拐点图形大小
-	            symbolSize: 4,
-	            // 拐点图形旋转控制
-	            symbolRotate: null,
-
-	            // 是否显示 symbol, 只有在 tooltip hover 的时候显示
-	            showSymbol: true,
-	            // 标志图形默认只有主轴显示(随主轴标签间隔隐藏策略)
-	            showAllSymbol: false,
-
-	            // 是否连接断点
-	            connectNulls: false,
-
-	            // 数据过滤,'average', 'max', 'min', 'sum'
-	            sampling: 'none',
-
-	            animationEasing: 'linear',
-
-	            // Disable progressive
-	            progressive: 0,
-	            hoverLayerThreshold: Infinity
+	        /**
+	         * Mixin common methods to axis model,
+	         *
+	         * Inlcude methods
+	         * `getFormattedLabels() => Array.<string>`
+	         * `getCategories() => Array.<string>`
+	         * `getMin(origin: boolean) => number`
+	         * `getMax(origin: boolean) => number`
+	         * `getNeedCrossZero() => boolean`
+	         * `setRange(start: number, end: number)`
+	         * `resetRange()`
+	         */
+	        mixinAxisModelCommonMethods: function (Model) {
+	            util.mixin(Model, axisModelCommonMixin);
 	        }
-	    });
+	    };
 
 
 /***/ },
@@ -23072,9 +23632,14 @@
 	        var dimensions = axesInfo && axesInfo.dimensions;
 	        if (!dimensions) {
 	            // Get dimensions from registered coordinate system
-	            dimensions = (registeredCoordSys && registeredCoordSys.dimensions) || ['x', 'y'];
-	            dimensions = completeDimensions(dimensions, data, dimensions.concat(['value']));
+	            dimensions = (registeredCoordSys && (
+	                registeredCoordSys.getDimensionsInfo
+	                    ? registeredCoordSys.getDimensionsInfo()
+	                    : registeredCoordSys.dimensions.slice()
+	            )) || ['x', 'y'];
+	            dimensions = completeDimensions(dimensions, data, {defaultNames: dimensions.concat(['value'])});
 	        }
+
 	        var categoryIndex = axesInfo ? axesInfo.categoryIndex : -1;
 
 	        var list = new List(dimensions, seriesModel);
@@ -23191,7 +23756,7 @@
 	            var isXAxisCateogry = xAxisType === 'category';
 	            var isYAxisCategory = yAxisType === 'category';
 
-	            completeDimensions(dimensions, data, ['x', 'y', 'z']);
+	            completeDimensions(dimensions, data, {defaultNames: ['x', 'y', 'z']});
 
 	            var categoryAxesModels = {};
 	            if (isXAxisCateogry) {
@@ -23281,7 +23846,7 @@
 	            var isAngleAxisCateogry = angleAxisType === 'category';
 	            var isRadiusAxisCateogry = radiusAxisType === 'category';
 
-	            completeDimensions(dimensions, data, ['radius', 'angle', 'value']);
+	            completeDimensions(dimensions, data, {defaultNames: ['radius', 'angle', 'value']});
 
 	            var categoryAxesModels = {};
 	            if (isRadiusAxisCateogry) {
@@ -23304,7 +23869,7 @@
 	                dimensions: completeDimensions([
 	                    {name: 'lng'},
 	                    {name: 'lat'}
-	                ], data, ['lng', 'lat', 'value'])
+	                ], data, {defaultNames: ['lng', 'lat', 'value']})
 	            };
 	        }
 	    };
@@ -23359,23 +23924,30 @@
 
 	    /**
 	     * Complete the dimensions array guessed from the data structure.
-	     * @param  {Array.<string>} dimensions      Necessary dimensions, like ['x', 'y']
-	     * @param  {Array} data                     Data list. [[1, 2, 3], [2, 3, 4]]
-	     * @param  {Array.<string>} [defaultNames]    Default names to fill not necessary dimensions, like ['value']
-	     * @param  {string} [extraPrefix]             Prefix of name when filling the left dimensions.
+	     * @param  {Array.<string>} dimensions Necessary dimensions, like ['x', 'y']
+	     * @param  {Array} data Data list. [[1, 2, 3], [2, 3, 4]]
+	     * @param  {Object} [opt]
+	     * @param  {Array.<string>} [opt.defaultNames] Default names to fill not necessary dimensions, like ['value']
+	     * @param  {string} [opt.extraPrefix] Prefix of name when filling the left dimensions.
+	     * @param  {number} [opt.dimCount] If not specified, guess by the first data item.
 	     * @return {Array.<string>}
 	     */
-	    function completeDimensions(dimensions, data, defaultNames, extraPrefix) {
+	    function completeDimensions(dimensions, data, opt) {
 	        if (!data) {
 	            return dimensions;
 	        }
 
-	        var value0 = retrieveValue(data[0]);
-	        var dimSize = zrUtil.isArray(value0) && value0.length || 1;
+	        opt = opt || {};
 
-	        defaultNames = defaultNames || [];
-	        extraPrefix = extraPrefix || 'extra';
-	        for (var i = 0; i < dimSize; i++) {
+	        var dimCount = opt.dimCount;
+	        if (dimCount == null) {
+	            var value0 = retrieveValue(data[0]);
+	            dimCount = zrUtil.isArray(value0) && value0.length || 1;
+	        }
+
+	        var defaultNames = opt.defaultNames || [];
+	        var extraPrefix = opt.extraPrefix || 'extra';
+	        for (var i = 0; i < dimCount; i++) {
 	            if (!dimensions[i]) {
 	                var name = defaultNames[i] || (extraPrefix + (i - defaultNames.length));
 	                dimensions[i] = guessOrdinal(data, i)
@@ -23421,17 +23993,1727 @@
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
+	// Symbol factory
+
+
+	    var graphic = __webpack_require__(44);
+	    var BoundingRect = __webpack_require__(9);
+
+	    /**
+	     * Triangle shape
+	     * @inner
+	     */
+	    var Triangle = graphic.extendShape({
+	        type: 'triangle',
+	        shape: {
+	            cx: 0,
+	            cy: 0,
+	            width: 0,
+	            height: 0
+	        },
+	        buildPath: function (path, shape) {
+	            var cx = shape.cx;
+	            var cy = shape.cy;
+	            var width = shape.width / 2;
+	            var height = shape.height / 2;
+	            path.moveTo(cx, cy - height);
+	            path.lineTo(cx + width, cy + height);
+	            path.lineTo(cx - width, cy + height);
+	            path.closePath();
+	        }
+	    });
+	    /**
+	     * Diamond shape
+	     * @inner
+	     */
+	    var Diamond = graphic.extendShape({
+	        type: 'diamond',
+	        shape: {
+	            cx: 0,
+	            cy: 0,
+	            width: 0,
+	            height: 0
+	        },
+	        buildPath: function (path, shape) {
+	            var cx = shape.cx;
+	            var cy = shape.cy;
+	            var width = shape.width / 2;
+	            var height = shape.height / 2;
+	            path.moveTo(cx, cy - height);
+	            path.lineTo(cx + width, cy);
+	            path.lineTo(cx, cy + height);
+	            path.lineTo(cx - width, cy);
+	            path.closePath();
+	        }
+	    });
+
+	    /**
+	     * Pin shape
+	     * @inner
+	     */
+	    var Pin = graphic.extendShape({
+	        type: 'pin',
+	        shape: {
+	            // x, y on the cusp
+	            x: 0,
+	            y: 0,
+	            width: 0,
+	            height: 0
+	        },
+
+	        buildPath: function (path, shape) {
+	            var x = shape.x;
+	            var y = shape.y;
+	            var w = shape.width / 5 * 3;
+	            // Height must be larger than width
+	            var h = Math.max(w, shape.height);
+	            var r = w / 2;
+
+	            // Dist on y with tangent point and circle center
+	            var dy = r * r / (h - r);
+	            var cy = y - h + r + dy;
+	            var angle = Math.asin(dy / r);
+	            // Dist on x with tangent point and circle center
+	            var dx = Math.cos(angle) * r;
+
+	            var tanX = Math.sin(angle);
+	            var tanY = Math.cos(angle);
+
+	            path.arc(
+	                x, cy, r,
+	                Math.PI - angle,
+	                Math.PI * 2 + angle
+	            );
+
+	            var cpLen = r * 0.6;
+	            var cpLen2 = r * 0.7;
+	            path.bezierCurveTo(
+	                x + dx - tanX * cpLen, cy + dy + tanY * cpLen,
+	                x, y - cpLen2,
+	                x, y
+	            );
+	            path.bezierCurveTo(
+	                x, y - cpLen2,
+	                x - dx + tanX * cpLen, cy + dy + tanY * cpLen,
+	                x - dx, cy + dy
+	            );
+	            path.closePath();
+	        }
+	    });
+
+	    /**
+	     * Arrow shape
+	     * @inner
+	     */
+	    var Arrow = graphic.extendShape({
+
+	        type: 'arrow',
+
+	        shape: {
+	            x: 0,
+	            y: 0,
+	            width: 0,
+	            height: 0
+	        },
+
+	        buildPath: function (ctx, shape) {
+	            var height = shape.height;
+	            var width = shape.width;
+	            var x = shape.x;
+	            var y = shape.y;
+	            var dx = width / 3 * 2;
+	            ctx.moveTo(x, y);
+	            ctx.lineTo(x + dx, y + height);
+	            ctx.lineTo(x, y + height / 4 * 3);
+	            ctx.lineTo(x - dx, y + height);
+	            ctx.lineTo(x, y);
+	            ctx.closePath();
+	        }
+	    });
+
+	    /**
+	     * Map of path contructors
+	     * @type {Object.<string, module:zrender/graphic/Path>}
+	     */
+	    var symbolCtors = {
+	        line: graphic.Line,
+
+	        rect: graphic.Rect,
+
+	        roundRect: graphic.Rect,
+
+	        square: graphic.Rect,
+
+	        circle: graphic.Circle,
+
+	        diamond: Diamond,
+
+	        pin: Pin,
+
+	        arrow: Arrow,
+
+	        triangle: Triangle
+	    };
+
+	    var symbolShapeMakers = {
+
+	        line: function (x, y, w, h, shape) {
+	            // FIXME
+	            shape.x1 = x;
+	            shape.y1 = y + h / 2;
+	            shape.x2 = x + w;
+	            shape.y2 = y + h / 2;
+	        },
+
+	        rect: function (x, y, w, h, shape) {
+	            shape.x = x;
+	            shape.y = y;
+	            shape.width = w;
+	            shape.height = h;
+	        },
+
+	        roundRect: function (x, y, w, h, shape) {
+	            shape.x = x;
+	            shape.y = y;
+	            shape.width = w;
+	            shape.height = h;
+	            shape.r = Math.min(w, h) / 4;
+	        },
+
+	        square: function (x, y, w, h, shape) {
+	            var size = Math.min(w, h);
+	            shape.x = x;
+	            shape.y = y;
+	            shape.width = size;
+	            shape.height = size;
+	        },
+
+	        circle: function (x, y, w, h, shape) {
+	            // Put circle in the center of square
+	            shape.cx = x + w / 2;
+	            shape.cy = y + h / 2;
+	            shape.r = Math.min(w, h) / 2;
+	        },
+
+	        diamond: function (x, y, w, h, shape) {
+	            shape.cx = x + w / 2;
+	            shape.cy = y + h / 2;
+	            shape.width = w;
+	            shape.height = h;
+	        },
+
+	        pin: function (x, y, w, h, shape) {
+	            shape.x = x + w / 2;
+	            shape.y = y + h / 2;
+	            shape.width = w;
+	            shape.height = h;
+	        },
+
+	        arrow: function (x, y, w, h, shape) {
+	            shape.x = x + w / 2;
+	            shape.y = y + h / 2;
+	            shape.width = w;
+	            shape.height = h;
+	        },
+
+	        triangle: function (x, y, w, h, shape) {
+	            shape.cx = x + w / 2;
+	            shape.cy = y + h / 2;
+	            shape.width = w;
+	            shape.height = h;
+	        }
+	    };
+
+	    var symbolBuildProxies = {};
+	    for (var name in symbolCtors) {
+	        if (symbolCtors.hasOwnProperty(name)) {
+	            symbolBuildProxies[name] = new symbolCtors[name]();
+	        }
+	    }
+
+	    var Symbol = graphic.extendShape({
+
+	        type: 'symbol',
+
+	        shape: {
+	            symbolType: '',
+	            x: 0,
+	            y: 0,
+	            width: 0,
+	            height: 0
+	        },
+
+	        beforeBrush: function () {
+	            var style = this.style;
+	            var shape = this.shape;
+	            // FIXME
+	            if (shape.symbolType === 'pin' && style.textPosition === 'inside') {
+	                style.textPosition = ['50%', '40%'];
+	                style.textAlign = 'center';
+	                style.textVerticalAlign = 'middle';
+	            }
+	        },
+
+	        buildPath: function (ctx, shape, inBundle) {
+	            var symbolType = shape.symbolType;
+	            var proxySymbol = symbolBuildProxies[symbolType];
+	            if (shape.symbolType !== 'none') {
+	                if (!proxySymbol) {
+	                    // Default rect
+	                    symbolType = 'rect';
+	                    proxySymbol = symbolBuildProxies[symbolType];
+	                }
+	                symbolShapeMakers[symbolType](
+	                    shape.x, shape.y, shape.width, shape.height, proxySymbol.shape
+	                );
+	                proxySymbol.buildPath(ctx, proxySymbol.shape, inBundle);
+	            }
+	        }
+	    });
+
+	    // Provide setColor helper method to avoid determine if set the fill or stroke outside
+	    var symbolPathSetColor = function (color) {
+	        if (this.type !== 'image') {
+	            var symbolStyle = this.style;
+	            var symbolShape = this.shape;
+	            if (symbolShape && symbolShape.symbolType === 'line') {
+	                symbolStyle.stroke = color;
+	            }
+	            else if (this.__isEmptyBrush) {
+	                symbolStyle.stroke = color;
+	                symbolStyle.fill = '#fff';
+	            }
+	            else {
+	                // FIXME 判断图形默认是填充还是描边,使用 onlyStroke ?
+	                symbolStyle.fill && (symbolStyle.fill = color);
+	                symbolStyle.stroke && (symbolStyle.stroke = color);
+	            }
+	            this.dirty(false);
+	        }
+	    };
+
+	    var symbolUtil = {
+	        /**
+	         * Create a symbol element with given symbol configuration: shape, x, y, width, height, color
+	         * @param {string} symbolType
+	         * @param {number} x
+	         * @param {number} y
+	         * @param {number} w
+	         * @param {number} h
+	         * @param {string} color
+	         */
+	        createSymbol: function (symbolType, x, y, w, h, color) {
+	            // TODO Support image object, DynamicImage.
+
+	            var isEmpty = symbolType.indexOf('empty') === 0;
+	            if (isEmpty) {
+	                symbolType = symbolType.substr(5, 1).toLowerCase() + symbolType.substr(6);
+	            }
+	            var symbolPath;
+
+	            if (symbolType.indexOf('image://') === 0) {
+	                symbolPath = new graphic.Image({
+	                    style: {
+	                        image: symbolType.slice(8),
+	                        x: x,
+	                        y: y,
+	                        width: w,
+	                        height: h
+	                    }
+	                });
+	            }
+	            else if (symbolType.indexOf('path://') === 0) {
+	                symbolPath = graphic.makePath(symbolType.slice(7), {}, new BoundingRect(x, y, w, h));
+	            }
+	            else {
+	                symbolPath = new Symbol({
+	                    shape: {
+	                        symbolType: symbolType,
+	                        x: x,
+	                        y: y,
+	                        width: w,
+	                        height: h
+	                    }
+	                });
+	            }
+
+	            symbolPath.__isEmptyBrush = isEmpty;
+
+	            symbolPath.setColor = symbolPathSetColor;
+
+	            symbolPath.setColor(color);
+
+	            return symbolPath;
+	        }
+	    };
+
+	    module.exports = symbolUtil;
+
+
+/***/ },
+/* 105 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+
+	    var OrdinalScale = __webpack_require__(106);
+	    var IntervalScale = __webpack_require__(108);
+	    __webpack_require__(109);
+	    __webpack_require__(110);
+	    var Scale = __webpack_require__(107);
+
+	    var numberUtil = __webpack_require__(7);
+	    var zrUtil = __webpack_require__(4);
+	    var textContain = __webpack_require__(8);
+	    var axisHelper = {};
+
+	    /**
+	     * Get axis scale extent before niced.
+	     * Item of returned array can only be number (including Infinity and NaN).
+	     */
+	    axisHelper.getScaleExtent = function (scale, model) {
+	        var scaleType = scale.type;
+
+	        var min = model.getMin();
+	        var max = model.getMax();
+	        var fixMin = min != null;
+	        var fixMax = max != null;
+	        var originalExtent = scale.getExtent();
+
+	        var axisDataLen;
+	        var boundaryGap;
+	        var span;
+	        if (scaleType === 'ordinal') {
+	            axisDataLen = (model.get('data') || []).length;
+	        }
+	        else {
+	            boundaryGap = model.get('boundaryGap');
+	            if (!zrUtil.isArray(boundaryGap)) {
+	                boundaryGap = [boundaryGap || 0, boundaryGap || 0];
+	            }
+	            boundaryGap[0] = numberUtil.parsePercent(boundaryGap[0], 1);
+	            boundaryGap[1] = numberUtil.parsePercent(boundaryGap[1], 1);
+	            span = originalExtent[1] - originalExtent[0];
+	        }
+
+	        if (min == null) {
+	            min = scaleType === 'ordinal'
+	                ? (axisDataLen ? 0 : NaN)
+	                : originalExtent[0] - boundaryGap[0] * span;
+	        }
+	        if (max == null) {
+	            max = scaleType === 'ordinal'
+	                ? (axisDataLen ? axisDataLen - 1 : NaN)
+	                : originalExtent[1] + boundaryGap[1] * span;
+	        }
+
+	        if (min === 'dataMin') {
+	            min = originalExtent[0];
+	        }
+	        if (max === 'dataMax') {
+	            max = originalExtent[1];
+	        }
+
+	        (min == null || !isFinite(min)) && (min = NaN);
+	        (max == null || !isFinite(max)) && (max = NaN);
+
+	        scale.setBlank(zrUtil.eqNaN(min) || zrUtil.eqNaN(max));
+
+	        // Evaluate if axis needs cross zero
+	        if (model.getNeedCrossZero()) {
+	            // Axis is over zero and min is not set
+	            if (min > 0 && max > 0 && !fixMin) {
+	                min = 0;
+	            }
+	            // Axis is under zero and max is not set
+	            if (min < 0 && max < 0 && !fixMax) {
+	                max = 0;
+	            }
+	        }
+
+	        return [min, max];
+	    };
+
+	    axisHelper.niceScaleExtent = function (scale, model) {
+	        var extent = axisHelper.getScaleExtent(scale, model);
+	        var fixMin = model.getMin() != null;
+	        var fixMax = model.getMax() != null;
+	        var splitNumber = model.get('splitNumber');
+
+	        if (scale.type === 'log') {
+	            scale.base = model.get('logBase');
+	        }
+
+	        scale.setExtent(extent[0], extent[1]);
+	        scale.niceExtent(splitNumber, fixMin, fixMax);
+
+	        // Use minInterval to constraint the calculated interval.
+	        // If calculated interval is less than minInterval. increase the interval quantity until
+	        // it is larger than minInterval.
+	        // For example:
+	        //  minInterval is 1, calculated interval is 0.2, so increase it to be 1. In this way we can get
+	        //  an integer axis.
+	        var minInterval = model.get('minInterval');
+	        if (isFinite(minInterval) && !fixMin && !fixMax && scale.type === 'interval') {
+	            var interval = scale.getInterval();
+	            var intervalScale = Math.max(Math.abs(interval), minInterval) / interval;
+	            // while (interval < minInterval) {
+	            //     var quantity = numberUtil.quantity(interval);
+	            //     interval = quantity * 10;
+	            //     scaleQuantity *= 10;
+	            // }
+	            extent = scale.getExtent();
+	            var origin = (extent[1] + extent[0]) / 2;
+	            scale.setExtent(
+	                intervalScale * (extent[0] - origin) + origin,
+	                intervalScale * (extent[1] - origin) + origin
+	            );
+	            scale.niceExtent(splitNumber);
+	        }
+
+	        // If some one specified the min, max. And the default calculated interval
+	        // is not good enough. He can specify the interval. It is often appeared
+	        // in angle axis with angle 0 - 360. Interval calculated in interval scale is hard
+	        // to be 60.
+	        // FIXME
+	        var interval = model.get('interval');
+	        if (interval != null) {
+	            scale.setInterval && scale.setInterval(interval);
+	        }
+	    };
+
+	    /**
+	     * @param {module:echarts/model/Model} model
+	     * @param {string} [axisType] Default retrieve from model.type
+	     * @return {module:echarts/scale/*}
+	     */
+	    axisHelper.createScaleByModel = function(model, axisType) {
+	        axisType = axisType || model.get('type');
+	        if (axisType) {
+	            switch (axisType) {
+	                // Buildin scale
+	                case 'category':
+	                    return new OrdinalScale(
+	                        model.getCategories(), [Infinity, -Infinity]
+	                    );
+	                case 'value':
+	                    return new IntervalScale();
+	                // Extended scale, like time and log
+	                default:
+	                    return (Scale.getClass(axisType) || IntervalScale).create(model);
+	            }
+	        }
+	    };
+
+	    /**
+	     * Check if the axis corss 0
+	     */
+	    axisHelper.ifAxisCrossZero = function (axis) {
+	        var dataExtent = axis.scale.getExtent();
+	        var min = dataExtent[0];
+	        var max = dataExtent[1];
+	        return !((min > 0 && max > 0) || (min < 0 && max < 0));
+	    };
+
+	    /**
+	     * @param {Array.<number>} tickCoords In axis self coordinate.
+	     * @param {Array.<string>} labels
+	     * @param {string} font
+	     * @param {boolean} isAxisHorizontal
+	     * @return {number}
+	     */
+	    axisHelper.getAxisLabelInterval = function (tickCoords, labels, font, isAxisHorizontal) {
+	        // FIXME
+	        // 不同角的axis和label,不只是horizontal和vertical.
+
+	        var textSpaceTakenRect;
+	        var autoLabelInterval = 0;
+	        var accumulatedLabelInterval = 0;
+
+	        var step = 1;
+	        if (labels.length > 40) {
+	            // Simple optimization for large amount of labels
+	            step = Math.floor(labels.length / 40);
+	        }
+
+	        for (var i = 0; i < tickCoords.length; i += step) {
+	            var tickCoord = tickCoords[i];
+	            var rect = textContain.getBoundingRect(
+	                labels[i], font, 'center', 'top'
+	            );
+	            rect[isAxisHorizontal ? 'x' : 'y'] += tickCoord;
+	            // FIXME Magic number 1.5
+	            rect[isAxisHorizontal ? 'width' : 'height'] *= 1.3;
+	            if (!textSpaceTakenRect) {
+	                textSpaceTakenRect = rect.clone();
+	            }
+	            // There is no space for current label;
+	            else if (textSpaceTakenRect.intersect(rect)) {
+	                accumulatedLabelInterval++;
+	                autoLabelInterval = Math.max(autoLabelInterval, accumulatedLabelInterval);
+	            }
+	            else {
+	                textSpaceTakenRect.union(rect);
+	                // Reset
+	                accumulatedLabelInterval = 0;
+	            }
+	        }
+	        if (autoLabelInterval === 0 && step > 1) {
+	            return step;
+	        }
+	        return (autoLabelInterval + 1) * step - 1;
+	    };
+
+	    /**
+	     * @param {Object} axis
+	     * @param {Function} labelFormatter
+	     * @return {Array.<string>}
+	     */
+	    axisHelper.getFormattedLabels = function (axis, labelFormatter) {
+	        var scale = axis.scale;
+	        var labels = scale.getTicksLabels();
+	        var ticks = scale.getTicks();
+	        if (typeof labelFormatter === 'string') {
+	            labelFormatter = (function (tpl) {
+	                return function (val) {
+	                    return tpl.replace('{value}', val != null ? val : '');
+	                };
+	            })(labelFormatter);
+	            // Consider empty array
+	            return zrUtil.map(labels, labelFormatter);
+	        }
+	        else if (typeof labelFormatter === 'function') {
+	            return zrUtil.map(ticks, function (tick, idx) {
+	                return labelFormatter(
+	                    axisHelper.getAxisRawValue(axis, tick),
+	                    idx
+	                );
+	            }, this);
+	        }
+	        else {
+	            return labels;
+	        }
+	    };
+
+	    axisHelper.getAxisRawValue = function (axis, value) {
+	        // In category axis with data zoom, tick is not the original
+	        // index of axis.data. So tick should not be exposed to user
+	        // in category axis.
+	        return axis.type === 'category' ? axis.scale.getLabel(value) : value;
+	    };
+
+	    module.exports = axisHelper;
+
+
+/***/ },
+/* 106 */
+/***/ function(module, exports, __webpack_require__) {
+
+	/**
+	 * Linear continuous scale
+	 * @module echarts/coord/scale/Ordinal
+	 *
+	 * http://en.wikipedia.org/wiki/Level_of_measurement
+	 */
+
+	// FIXME only one data
+
+
+	    var zrUtil = __webpack_require__(4);
+	    var Scale = __webpack_require__(107);
+
+	    var scaleProto = Scale.prototype;
+
+	    var OrdinalScale = Scale.extend({
+
+	        type: 'ordinal',
+
+	        init: function (data, extent) {
+	            this._data = data;
+	            this._extent = extent || [0, data.length - 1];
+	        },
+
+	        parse: function (val) {
+	            return typeof val === 'string'
+	                ? zrUtil.indexOf(this._data, val)
+	                // val might be float.
+	                : Math.round(val);
+	        },
+
+	        contain: function (rank) {
+	            rank = this.parse(rank);
+	            return scaleProto.contain.call(this, rank)
+	                && this._data[rank] != null;
+	        },
+
+	        /**
+	         * Normalize given rank or name to linear [0, 1]
+	         * @param {number|string} [val]
+	         * @return {number}
+	         */
+	        normalize: function (val) {
+	            return scaleProto.normalize.call(this, this.parse(val));
+	        },
+
+	        scale: function (val) {
+	            return Math.round(scaleProto.scale.call(this, val));
+	        },
+
+	        /**
+	         * @return {Array}
+	         */
+	        getTicks: function () {
+	            var ticks = [];
+	            var extent = this._extent;
+	            var rank = extent[0];
+
+	            while (rank <= extent[1]) {
+	                ticks.push(rank);
+	                rank++;
+	            }
+
+	            return ticks;
+	        },
+
+	        /**
+	         * Get item on rank n
+	         * @param {number} n
+	         * @return {string}
+	         */
+	        getLabel: function (n) {
+	            return this._data[n];
+	        },
+
+	        /**
+	         * @return {number}
+	         */
+	        count: function () {
+	            return this._extent[1] - this._extent[0] + 1;
+	        },
+
+	        /**
+	         * @override
+	         */
+	        unionExtentFromData: function (data, dim) {
+	            this.unionExtent(data.getDataExtent(dim, false));
+	        },
+
+	        niceTicks: zrUtil.noop,
+	        niceExtent: zrUtil.noop
+	    });
+
+	    /**
+	     * @return {module:echarts/scale/Time}
+	     */
+	    OrdinalScale.create = function () {
+	        return new OrdinalScale();
+	    };
+
+	    module.exports = OrdinalScale;
+
+
+/***/ },
+/* 107 */
+/***/ function(module, exports, __webpack_require__) {
+
+	/**
+	 * // Scale class management
+	 * @module echarts/scale/Scale
+	 */
+
+
+	    var clazzUtil = __webpack_require__(13);
+
+	    function Scale() {
+	        /**
+	         * Extent
+	         * @type {Array.<number>}
+	         * @protected
+	         */
+	        this._extent = [Infinity, -Infinity];
+
+	        /**
+	         * Step is calculated in adjustExtent
+	         * @type {Array.<number>}
+	         * @protected
+	         */
+	        this._interval = 0;
+
+	        this.init && this.init.apply(this, arguments);
+	    }
+
+	    var scaleProto = Scale.prototype;
+
+	    /**
+	     * Parse input val to valid inner number.
+	     * @param {*} val
+	     * @return {number}
+	     */
+	    scaleProto.parse = function (val) {
+	        // Notice: This would be a trap here, If the implementation
+	        // of this method depends on extent, and this method is used
+	        // before extent set (like in dataZoom), it would be wrong.
+	        // Nevertheless, parse does not depend on extent generally.
+	        return val;
+	    };
+
+	    scaleProto.contain = function (val) {
+	        var extent = this._extent;
+	        return val >= extent[0] && val <= extent[1];
+	    };
+
+	    /**
+	     * Normalize value to linear [0, 1], return 0.5 if extent span is 0
+	     * @param {number} val
+	     * @return {number}
+	     */
+	    scaleProto.normalize = function (val) {
+	        var extent = this._extent;
+	        if (extent[1] === extent[0]) {
+	            return 0.5;
+	        }
+	        return (val - extent[0]) / (extent[1] - extent[0]);
+	    };
+
+	    /**
+	     * Scale normalized value
+	     * @param {number} val
+	     * @return {number}
+	     */
+	    scaleProto.scale = function (val) {
+	        var extent = this._extent;
+	        return val * (extent[1] - extent[0]) + extent[0];
+	    };
+
+	    /**
+	     * Set extent from data
+	     * @param {Array.<number>} other
+	     */
+	    scaleProto.unionExtent = function (other) {
+	        var extent = this._extent;
+	        other[0] < extent[0] && (extent[0] = other[0]);
+	        other[1] > extent[1] && (extent[1] = other[1]);
+	        // not setExtent because in log axis it may transformed to power
+	        // this.setExtent(extent[0], extent[1]);
+	    };
+
+	    /**
+	     * Set extent from data
+	     * @param {module:echarts/data/List} data
+	     * @param {string} dim
+	     */
+	    scaleProto.unionExtentFromData = function (data, dim) {
+	        this.unionExtent(data.getDataExtent(dim, true));
+	    };
+
+	    /**
+	     * Get extent
+	     * @return {Array.<number>}
+	     */
+	    scaleProto.getExtent = function () {
+	        return this._extent.slice();
+	    };
+
+	    /**
+	     * Set extent
+	     * @param {number} start
+	     * @param {number} end
+	     */
+	    scaleProto.setExtent = function (start, end) {
+	        var thisExtent = this._extent;
+	        if (!isNaN(start)) {
+	            thisExtent[0] = start;
+	        }
+	        if (!isNaN(end)) {
+	            thisExtent[1] = end;
+	        }
+	    };
+
+	    /**
+	     * @return {Array.<string>}
+	     */
+	    scaleProto.getTicksLabels = function () {
+	        var labels = [];
+	        var ticks = this.getTicks();
+	        for (var i = 0; i < ticks.length; i++) {
+	            labels.push(this.getLabel(ticks[i]));
+	        }
+	        return labels;
+	    };
+
+	    /**
+	     * When axis extent depends on data and no data exists,
+	     * axis ticks should not be drawn, which is named 'blank'.
+	     */
+	    scaleProto.isBlank = function () {
+	        return this._isBlank;
+	    },
+
+	    /**
+	     * When axis extent depends on data and no data exists,
+	     * axis ticks should not be drawn, which is named 'blank'.
+	     */
+	    scaleProto.setBlank = function (isBlank) {
+	        this._isBlank = isBlank;
+	    };
+
+
+	    clazzUtil.enableClassExtend(Scale);
+	    clazzUtil.enableClassManagement(Scale, {
+	        registerWhenExtend: true
+	    });
+
+	    module.exports = Scale;
+
+
+/***/ },
+/* 108 */
+/***/ function(module, exports, __webpack_require__) {
+
+	/**
+	 * Interval scale
+	 * @module echarts/scale/Interval
+	 */
+
+
+
+	    var numberUtil = __webpack_require__(7);
+	    var formatUtil = __webpack_require__(6);
+	    var Scale = __webpack_require__(107);
+
+	    var mathFloor = Math.floor;
+	    var mathCeil = Math.ceil;
+
+	    var getPrecisionSafe = numberUtil.getPrecisionSafe;
+	    var roundingErrorFix = numberUtil.round;
+	    /**
+	     * @alias module:echarts/coord/scale/Interval
+	     * @constructor
+	     */
+	    var IntervalScale = Scale.extend({
+
+	        type: 'interval',
+
+	        _interval: 0,
+
+	        _intervalPrecision: 2,
+
+	        setExtent: function (start, end) {
+	            var thisExtent = this._extent;
+	            //start,end may be a Number like '25',so...
+	            if (!isNaN(start)) {
+	                thisExtent[0] = parseFloat(start);
+	            }
+	            if (!isNaN(end)) {
+	                thisExtent[1] = parseFloat(end);
+	            }
+	        },
+
+	        unionExtent: function (other) {
+	            var extent = this._extent;
+	            other[0] < extent[0] && (extent[0] = other[0]);
+	            other[1] > extent[1] && (extent[1] = other[1]);
+
+	            // unionExtent may called by it's sub classes
+	            IntervalScale.prototype.setExtent.call(this, extent[0], extent[1]);
+	        },
+	        /**
+	         * Get interval
+	         */
+	        getInterval: function () {
+	            if (!this._interval) {
+	                this.niceTicks();
+	            }
+	            return this._interval;
+	        },
+
+	        /**
+	         * Set interval
+	         */
+	        setInterval: function (interval) {
+	            this._interval = interval;
+	            // Dropped auto calculated niceExtent and use user setted extent
+	            // We assume user wan't to set both interval, min, max to get a better result
+	            this._niceExtent = this._extent.slice();
+	        },
+
+	        /**
+	         * @return {Array.<number>}
+	         */
+	        getTicks: function () {
+	            if (!this._interval) {
+	                this.niceTicks();
+	            }
+	            var interval = this._interval;
+	            var extent = this._extent;
+	            var ticks = [];
+
+	            // Consider this case: using dataZoom toolbox, zoom and zoom.
+	            var safeLimit = 10000;
+
+	            if (interval) {
+	                var niceExtent = this._niceExtent;
+	                var precision = this._intervalPrecision = getPrecisionSafe(interval);
+	                // FIXME
+	                precision += 2;
+
+	                if (extent[0] < niceExtent[0]) {
+	                    ticks.push(extent[0]);
+	                }
+	                var tick = niceExtent[0];
+
+	                while (tick <= niceExtent[1]) {
+	                    ticks.push(tick);
+	                    // Avoid rounding error
+	                    tick = roundingErrorFix(tick + interval, precision);
+	                    if (ticks.length > safeLimit) {
+	                        return [];
+	                    }
+	                }
+	                // Consider this case: the last item of ticks is smaller
+	                // than niceExtent[1] and niceExtent[1] === extent[1].
+	                if (extent[1] > (ticks.length ? ticks[ticks.length - 1] : niceExtent[1])) {
+	                    ticks.push(extent[1]);
+	                }
+	            }
+
+	            return ticks;
+	        },
+
+	        /**
+	         * @return {Array.<string>}
+	         */
+	        getTicksLabels: function () {
+	            var labels = [];
+	            var ticks = this.getTicks();
+	            for (var i = 0; i < ticks.length; i++) {
+	                labels.push(this.getLabel(ticks[i]));
+	            }
+	            return labels;
+	        },
+
+	        /**
+	         * @param {number} data
+	         * @param {Object} [opt]
+	         * @param {number|string} [opt.precision] If 'auto', use nice presision.
+	         * @param {boolean} [opt.pad] returns 1.50 but not 1.5 if precision is 2.
+	         * @return {number}
+	         */
+	        getLabel: function (data, opt) {
+	            var precision = opt && opt.precision;
+	            if (data != null && precision != null) {
+	                // Should be more precise then tick.
+	                precision === 'auto' && (precision = this._intervalPrecision + 2);
+	                data = roundingErrorFix(data, precision, opt && opt.pad);
+	            }
+	            return formatUtil.addCommas(data);
+	        },
+
+	        /**
+	         * Update interval and extent of intervals for nice ticks
+	         *
+	         * @param {number} [splitNumber = 5] Desired number of ticks
+	         */
+	        niceTicks: function (splitNumber) {
+	            splitNumber = splitNumber || 5;
+	            var extent = this._extent;
+	            var span = extent[1] - extent[0];
+	            if (!isFinite(span)) {
+	                return;
+	            }
+	            // User may set axis min 0 and data are all negative
+	            // FIXME If it needs to reverse ?
+	            if (span < 0) {
+	                span = -span;
+	                extent.reverse();
+	            }
+
+	            // From "Nice Numbers for Graph Labels" of Graphic Gems
+	            // var niceSpan = numberUtil.nice(span, false);
+	            var step = roundingErrorFix(
+	                numberUtil.nice(span / splitNumber, true),
+	                Math.max(
+	                    getPrecisionSafe(extent[0]),
+	                    getPrecisionSafe(extent[1])
+	                // extent may be [0, 1], and step should have 1 more digits.
+	                // To make it safe we add 2 more digits
+	                ) + 2
+	            );
+
+	            var precision = getPrecisionSafe(step) + 2;
+	            // Niced extent inside original extent
+	            var niceExtent = [
+	                roundingErrorFix(mathCeil(extent[0] / step) * step, precision),
+	                roundingErrorFix(mathFloor(extent[1] / step) * step, precision)
+	            ];
+
+	            this._interval = step;
+	            this._niceExtent = niceExtent;
+	        },
+
+	        /**
+	         * Nice extent.
+	         * @param {number} [splitNumber = 5] Given approx tick number
+	         * @param {boolean} [fixMin=false]
+	         * @param {boolean} [fixMax=false]
+	         */
+	        niceExtent: function (splitNumber, fixMin, fixMax) {
+	            var extent = this._extent;
+	            // If extent start and end are same, expand them
+	            if (extent[0] === extent[1]) {
+	                if (extent[0] !== 0) {
+	                    // Expand extent
+	                    var expandSize = extent[0];
+	                    // In the fowllowing case
+	                    //      Axis has been fixed max 100
+	                    //      Plus data are all 100 and axis extent are [100, 100].
+	                    // Extend to the both side will cause expanded max is larger than fixed max.
+	                    // So only expand to the smaller side.
+	                    if (!fixMax) {
+	                        extent[1] += expandSize / 2;
+	                        extent[0] -= expandSize / 2;
+	                    }
+	                    else {
+	                        extent[0] -= expandSize / 2;
+	                    }
+	                }
+	                else {
+	                    extent[1] = 1;
+	                }
+	            }
+	            var span = extent[1] - extent[0];
+	            // If there are no data and extent are [Infinity, -Infinity]
+	            if (!isFinite(span)) {
+	                extent[0] = 0;
+	                extent[1] = 1;
+	            }
+
+	            this.niceTicks(splitNumber);
+
+	            // var extent = this._extent;
+	            var interval = this._interval;
+
+	            if (!fixMin) {
+	                extent[0] = roundingErrorFix(mathFloor(extent[0] / interval) * interval);
+	            }
+	            if (!fixMax) {
+	                extent[1] = roundingErrorFix(mathCeil(extent[1] / interval) * interval);
+	            }
+	        }
+	    });
+
+	    /**
+	     * @return {module:echarts/scale/Time}
+	     */
+	    IntervalScale.create = function () {
+	        return new IntervalScale();
+	    };
+
+	    module.exports = IntervalScale;
+
+
+
+/***/ },
+/* 109 */
+/***/ function(module, exports, __webpack_require__) {
+
+	/**
+	 * Interval scale
+	 * @module echarts/coord/scale/Time
+	 */
+
+
+
+	    var zrUtil = __webpack_require__(4);
+	    var numberUtil = __webpack_require__(7);
+	    var formatUtil = __webpack_require__(6);
+
+	    var IntervalScale = __webpack_require__(108);
+
+	    var intervalScaleProto = IntervalScale.prototype;
+
+	    var mathCeil = Math.ceil;
+	    var mathFloor = Math.floor;
+	    var ONE_SECOND = 1000;
+	    var ONE_MINUTE = ONE_SECOND * 60;
+	    var ONE_HOUR = ONE_MINUTE * 60;
+	    var ONE_DAY = ONE_HOUR * 24;
+
+	    // FIXME 公用?
+	    var bisect = function (a, x, lo, hi) {
+	        while (lo < hi) {
+	            var mid = lo + hi >>> 1;
+	            if (a[mid][2] < x) {
+	                lo = mid + 1;
+	            }
+	            else {
+	                hi  = mid;
+	            }
+	        }
+	        return lo;
+	    };
+
+	    /**
+	     * @alias module:echarts/coord/scale/Time
+	     * @constructor
+	     */
+	    var TimeScale = IntervalScale.extend({
+	        type: 'time',
+
+	        // Overwrite
+	        getLabel: function (val) {
+	            var stepLvl = this._stepLvl;
+
+	            var date = new Date(val);
+
+	            return formatUtil.formatTime(stepLvl[0], date);
+	        },
+
+	        // Overwrite
+	        niceExtent: function (approxTickNum, fixMin, fixMax) {
+	            var extent = this._extent;
+	            // If extent start and end are same, expand them
+	            if (extent[0] === extent[1]) {
+	                // Expand extent
+	                extent[0] -= ONE_DAY;
+	                extent[1] += ONE_DAY;
+	            }
+	            // If there are no data and extent are [Infinity, -Infinity]
+	            if (extent[1] === -Infinity && extent[0] === Infinity) {
+	                var d = new Date();
+	                extent[1] = new Date(d.getFullYear(), d.getMonth(), d.getDate());
+	                extent[0] = extent[1] - ONE_DAY;
+	            }
+
+	            this.niceTicks(approxTickNum);
+
+	            // var extent = this._extent;
+	            var interval = this._interval;
+
+	            if (!fixMin) {
+	                extent[0] = numberUtil.round(mathFloor(extent[0] / interval) * interval);
+	            }
+	            if (!fixMax) {
+	                extent[1] = numberUtil.round(mathCeil(extent[1] / interval) * interval);
+	            }
+	        },
+
+	        // Overwrite
+	        niceTicks: function (approxTickNum) {
+	            approxTickNum = approxTickNum || 10;
+
+	            var extent = this._extent;
+	            var span = extent[1] - extent[0];
+	            var approxInterval = span / approxTickNum;
+	            var scaleLevelsLen = scaleLevels.length;
+	            var idx = bisect(scaleLevels, approxInterval, 0, scaleLevelsLen);
+
+	            var level = scaleLevels[Math.min(idx, scaleLevelsLen - 1)];
+	            var interval = level[2];
+	            // Same with interval scale if span is much larger than 1 year
+	            if (level[0] === 'year') {
+	                var yearSpan = span / interval;
+
+	                // From "Nice Numbers for Graph Labels" of Graphic Gems
+	                // var niceYearSpan = numberUtil.nice(yearSpan, false);
+	                var yearStep = numberUtil.nice(yearSpan / approxTickNum, true);
+
+	                interval *= yearStep;
+	            }
+
+	            var niceExtent = [
+	                mathCeil(extent[0] / interval) * interval,
+	                mathFloor(extent[1] / interval) * interval
+	            ];
+
+	            this._stepLvl = level;
+	            // Interval will be used in getTicks
+	            this._interval = interval;
+	            this._niceExtent = niceExtent;
+	        },
+
+	        parse: function (val) {
+	            // val might be float.
+	            return +numberUtil.parseDate(val);
+	        }
+	    });
+
+	    zrUtil.each(['contain', 'normalize'], function (methodName) {
+	        TimeScale.prototype[methodName] = function (val) {
+	            return intervalScaleProto[methodName].call(this, this.parse(val));
+	        };
+	    });
+
+	    // Steps from d3
+	    var scaleLevels = [
+	        // Format       step    interval
+	        ['hh:mm:ss',    1,      ONE_SECOND],           // 1s
+	        ['hh:mm:ss',    5,      ONE_SECOND * 5],       // 5s
+	        ['hh:mm:ss',    10,     ONE_SECOND * 10],      // 10s
+	        ['hh:mm:ss',    15,     ONE_SECOND * 15],      // 15s
+	        ['hh:mm:ss',    30,     ONE_SECOND * 30],      // 30s
+	        ['hh:mm\nMM-dd',1,      ONE_MINUTE],          // 1m
+	        ['hh:mm\nMM-dd',5,      ONE_MINUTE * 5],      // 5m
+	        ['hh:mm\nMM-dd',10,     ONE_MINUTE * 10],     // 10m
+	        ['hh:mm\nMM-dd',15,     ONE_MINUTE * 15],     // 15m
+	        ['hh:mm\nMM-dd',30,     ONE_MINUTE * 30],     // 30m
+	        ['hh:mm\nMM-dd',1,      ONE_HOUR],        // 1h
+	        ['hh:mm\nMM-dd',2,      ONE_HOUR * 2],    // 2h
+	        ['hh:mm\nMM-dd',6,      ONE_HOUR * 6],    // 6h
+	        ['hh:mm\nMM-dd',12,     ONE_HOUR * 12],   // 12h
+	        ['MM-dd\nyyyy', 1,      ONE_DAY],   // 1d
+	        ['week',        7,      ONE_DAY * 7],        // 7d
+	        ['month',       1,      ONE_DAY * 31],       // 1M
+	        ['quarter',     3,      ONE_DAY * 380 / 4],  // 3M
+	        ['half-year',   6,      ONE_DAY * 380 / 2],  // 6M
+	        ['year',        1,      ONE_DAY * 380]       // 1Y
+	    ];
+
+	    /**
+	     * @return {module:echarts/scale/Time}
+	     */
+	    TimeScale.create = function () {
+	        return new TimeScale();
+	    };
+
+	    module.exports = TimeScale;
+
+
+/***/ },
+/* 110 */
+/***/ function(module, exports, __webpack_require__) {
+
+	/**
+	 * Log scale
+	 * @module echarts/scale/Log
+	 */
+
+
+	    var zrUtil = __webpack_require__(4);
+	    var Scale = __webpack_require__(107);
+	    var numberUtil = __webpack_require__(7);
+
+	    // Use some method of IntervalScale
+	    var IntervalScale = __webpack_require__(108);
+
+	    var scaleProto = Scale.prototype;
+	    var intervalScaleProto = IntervalScale.prototype;
+
+	    var getPrecisionSafe = numberUtil.getPrecisionSafe;
+	    var roundingErrorFix = numberUtil.round;
+
+	    var mathFloor = Math.floor;
+	    var mathCeil = Math.ceil;
+	    var mathPow = Math.pow;
+
+	    var mathLog = Math.log;
+
+	    var LogScale = Scale.extend({
+
+	        type: 'log',
+
+	        base: 10,
+
+	        $constructor: function () {
+	            Scale.apply(this, arguments);
+	            this._originalScale = new IntervalScale();
+	        },
+
+	        /**
+	         * @return {Array.<number>}
+	         */
+	        getTicks: function () {
+	            var originalScale = this._originalScale;
+	            var extent = this._extent;
+	            var originalExtent = originalScale.getExtent();
+
+	            return zrUtil.map(intervalScaleProto.getTicks.call(this), function (val) {
+	                var powVal = numberUtil.round(mathPow(this.base, val));
+
+	                // Fix #4158
+	                powVal = (val === extent[0] && originalScale.__fixMin)
+	                    ? fixRoundingError(powVal, originalExtent[0])
+	                    : powVal;
+	                powVal = (val === extent[1] && originalScale.__fixMax)
+	                    ? fixRoundingError(powVal, originalExtent[1])
+	                    : powVal;
+
+	                return powVal;
+	            }, this);
+	        },
+
+	        /**
+	         * @param {number} val
+	         * @return {string}
+	         */
+	        getLabel: intervalScaleProto.getLabel,
+
+	        /**
+	         * @param  {number} val
+	         * @return {number}
+	         */
+	        scale: function (val) {
+	            val = scaleProto.scale.call(this, val);
+	            return mathPow(this.base, val);
+	        },
+
+	        /**
+	         * @param {number} start
+	         * @param {number} end
+	         */
+	        setExtent: function (start, end) {
+	            var base = this.base;
+	            start = mathLog(start) / mathLog(base);
+	            end = mathLog(end) / mathLog(base);
+	            intervalScaleProto.setExtent.call(this, start, end);
+	        },
+
+	        /**
+	         * @return {number} end
+	         */
+	        getExtent: function () {
+	            var base = this.base;
+	            var extent = scaleProto.getExtent.call(this);
+	            extent[0] = mathPow(base, extent[0]);
+	            extent[1] = mathPow(base, extent[1]);
+
+	            // Fix #4158
+	            var originalScale = this._originalScale;
+	            var originalExtent = originalScale.getExtent();
+	            originalScale.__fixMin && (extent[0] = fixRoundingError(extent[0], originalExtent[0]));
+	            originalScale.__fixMax && (extent[1] = fixRoundingError(extent[1], originalExtent[1]));
+
+	            return extent;
+	        },
+
+	        /**
+	         * @param  {Array.<number>} extent
+	         */
+	        unionExtent: function (extent) {
+	            this._originalScale.unionExtent(extent);
+
+	            var base = this.base;
+	            extent[0] = mathLog(extent[0]) / mathLog(base);
+	            extent[1] = mathLog(extent[1]) / mathLog(base);
+	            scaleProto.unionExtent.call(this, extent);
+	        },
+
+	        /**
+	         * @override
+	         */
+	        unionExtentFromData: function (data, dim) {
+	            this.unionExtent(data.getDataExtent(dim, true, function (val) {
+	                return val > 0;
+	            }));
+	        },
+
+	        /**
+	         * Update interval and extent of intervals for nice ticks
+	         * @param  {number} [approxTickNum = 10] Given approx tick number
+	         */
+	        niceTicks: function (approxTickNum) {
+	            approxTickNum = approxTickNum || 10;
+	            var extent = this._extent;
+	            var span = extent[1] - extent[0];
+	            if (span === Infinity || span <= 0) {
+	                return;
+	            }
+
+	            var interval = numberUtil.quantity(span);
+	            var err = approxTickNum / span * interval;
+
+	            // Filter ticks to get closer to the desired count.
+	            if (err <= 0.5) {
+	                interval *= 10;
+	            }
+
+	            // Interval should be integer
+	            while (!isNaN(interval) && Math.abs(interval) < 1 && Math.abs(interval) > 0) {
+	                interval *= 10;
+	            }
+
+	            var niceExtent = [
+	                numberUtil.round(mathCeil(extent[0] / interval) * interval),
+	                numberUtil.round(mathFloor(extent[1] / interval) * interval)
+	            ];
+
+	            this._interval = interval;
+	            this._niceExtent = niceExtent;
+	        },
+
+	        /**
+	         * Nice extent.
+	         * @param {number} [approxTickNum = 10] Given approx tick number
+	         * @param {boolean} [fixMin=false]
+	         * @param {boolean} [fixMax=false]
+	         */
+	        niceExtent: function (splitNumber, fixMin, fixMax) {
+	            intervalScaleProto.niceExtent.call(this, splitNumber, fixMin, fixMax);
+
+	            var originalScale = this._originalScale;
+	            originalScale.__fixMin = fixMin;
+	            originalScale.__fixMax = fixMax;
+	        }
+
+	    });
+
+	    zrUtil.each(['contain', 'normalize'], function (methodName) {
+	        LogScale.prototype[methodName] = function (val) {
+	            val = mathLog(val) / mathLog(this.base);
+	            return scaleProto[methodName].call(this, val);
+	        };
+	    });
+
+	    LogScale.create = function () {
+	        return new LogScale();
+	    };
+
+	    function fixRoundingError(val, originalVal) {
+	        return roundingErrorFix(val, getPrecisionSafe(originalVal));
+	    }
+
+	    module.exports = LogScale;
+
+
+/***/ },
+/* 111 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+
+	    var zrUtil = __webpack_require__(4);
+	    var axisHelper = __webpack_require__(105);
+
+	    function getName(obj) {
+	        if (zrUtil.isObject(obj) && obj.value != null) {
+	            return obj.value;
+	        }
+	        else {
+	            return obj;
+	        }
+	    }
+
+	    module.exports = {
+
+	        /**
+	         * Format labels
+	         * @return {Array.<string>}
+	         */
+	        getFormattedLabels: function () {
+	            return axisHelper.getFormattedLabels(
+	                this.axis,
+	                this.get('axisLabel.formatter')
+	            );
+	        },
+
+	        /**
+	         * Get categories
+	         */
+	        getCategories: function () {
+	            return this.get('type') === 'category'
+	                && zrUtil.map(this.get('data'), getName);
+	        },
+
+	        /**
+	         * @param {boolean} origin
+	         * @return {number|string} min value or 'dataMin' or null/undefined (means auto) or NaN
+	         */
+	        getMin: function (origin) {
+	            var option = this.option;
+	            var min = (!origin && option.rangeStart != null)
+	                ? option.rangeStart : option.min;
+
+	            if (this.axis && min != null && min !== 'dataMin' && !zrUtil.eqNaN(min)) {
+	                min = this.axis.scale.parse(min);
+	            }
+	            return min;
+	        },
+
+	        /**
+	         * @param {boolean} origin
+	         * @return {number|string} max value or 'dataMax' or null/undefined (means auto) or NaN
+	         */
+	        getMax: function (origin) {
+	            var option = this.option;
+	            var max = (!origin && option.rangeEnd != null)
+	                ? option.rangeEnd : option.max;
+
+	            if (this.axis && max != null && max !== 'dataMax' && !zrUtil.eqNaN(max)) {
+	                max = this.axis.scale.parse(max);
+	            }
+	            return max;
+	        },
+
+	        /**
+	         * @return {boolean}
+	         */
+	        getNeedCrossZero: function () {
+	            var option = this.option;
+	            return (option.rangeStart != null || option.rangeEnd != null)
+	                ? false : !option.scale;
+	        },
+
+	        /**
+	         * Should be implemented by each axis model if necessary.
+	         * @return {module:echarts/model/Component} coordinate system model
+	         */
+	        getCoordSysModel: zrUtil.noop,
+
+	        /**
+	         * @param {number} rangeStart Can only be finite number or null/undefined or NaN.
+	         * @param {number} rangeEnd Can only be finite number or null/undefined or NaN.
+	         */
+	        setRange: function (rangeStart, rangeEnd) {
+	            this.option.rangeStart = rangeStart;
+	            this.option.rangeEnd = rangeEnd;
+	        },
+
+	        /**
+	         * Reset range
+	         */
+	        resetRange: function () {
+	            // rangeStart and rangeEnd is readonly.
+	            this.option.rangeStart = this.option.rangeEnd = null;
+	        }
+	    };
+
+
+/***/ },
+/* 112 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+
+	    var zrUtil = __webpack_require__(4);
+	    var echarts = __webpack_require__(1);
+	    var PRIORITY = echarts.PRIORITY;
+
+	    __webpack_require__(113);
+	    __webpack_require__(114);
+
+	    echarts.registerVisual(zrUtil.curry(
+	        __webpack_require__(119), 'line', 'circle', 'line'
+	    ));
+	    echarts.registerLayout(zrUtil.curry(
+	        __webpack_require__(120), 'line'
+	    ));
+
+	    // Down sample after filter
+	    echarts.registerProcessor(PRIORITY.PROCESSOR.STATISTIC, zrUtil.curry(
+	        __webpack_require__(121), 'line'
+	    ));
+
+	    // In case developer forget to include grid component
+	    __webpack_require__(122);
+
+
+/***/ },
+/* 113 */
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+
+	    var createListFromArray = __webpack_require__(102);
+	    var SeriesModel = __webpack_require__(28);
+
+	    module.exports = SeriesModel.extend({
+
+	        type: 'series.line',
+
+	        dependencies: ['grid', 'polar'],
+
+	        getInitialData: function (option, ecModel) {
+	            if (true) {
+	                var coordSys = option.coordinateSystem;
+	                if (coordSys !== 'polar' && coordSys !== 'cartesian2d') {
+	                    throw new Error('Line not support coordinateSystem besides cartesian and polar');
+	                }
+	            }
+	            return createListFromArray(option.data, this, ecModel);
+	        },
+
+	        defaultOption: {
+	            zlevel: 0,                  // 一级层叠
+	            z: 2,                       // 二级层叠
+	            coordinateSystem: 'cartesian2d',
+	            legendHoverLink: true,
+
+	            hoverAnimation: true,
+	            // stack: null
+	            // xAxisIndex: 0,
+	            // yAxisIndex: 0,
+
+	            // polarIndex: 0,
+
+	            // If clip the overflow value
+	            clipOverflow: true,
+
+	            label: {
+	                normal: {
+	                    position: 'top'
+	                }
+	            },
+	            // itemStyle: {
+	            //     normal: {},
+	            //     emphasis: {}
+	            // },
+	            lineStyle: {
+	                normal: {
+	                    width: 2,
+	                    type: 'solid'
+	                }
+	            },
+	            // areaStyle: {},
+	            // false, 'start', 'end', 'middle'
+	            step: false,
+
+	            // Disabled if step is true
+	            smooth: false,
+	            smoothMonotone: null,
+	            // 拐点图形类型
+	            symbol: 'emptyCircle',
+	            // 拐点图形大小
+	            symbolSize: 4,
+	            // 拐点图形旋转控制
+	            symbolRotate: null,
+
+	            // 是否显示 symbol, 只有在 tooltip hover 的时候显示
+	            showSymbol: true,
+	            // 标志图形默认只有主轴显示(随主轴标签间隔隐藏策略)
+	            showAllSymbol: false,
+
+	            // 是否连接断点
+	            connectNulls: false,
+
+	            // 数据过滤,'average', 'max', 'min', 'sum'
+	            sampling: 'none',
+
+	            animationEasing: 'linear',
+
+	            // Disable progressive
+	            progressive: 0,
+	            hoverLayerThreshold: Infinity
+	        }
+	    });
+
+
+/***/ },
+/* 114 */
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
 	// FIXME step not support polar
 
 
 	    var zrUtil = __webpack_require__(4);
-	    var SymbolDraw = __webpack_require__(105);
-	    var Symbol = __webpack_require__(106);
-	    var lineAnimationDiff = __webpack_require__(108);
-	    var graphic = __webpack_require__(43);
+	    var SymbolDraw = __webpack_require__(115);
+	    var Symbol = __webpack_require__(116);
+	    var lineAnimationDiff = __webpack_require__(117);
+	    var graphic = __webpack_require__(44);
 	    var modelUtil = __webpack_require__(5);
-	    var polyHelper = __webpack_require__(109);
-	    var ChartView = __webpack_require__(42);
+	    var polyHelper = __webpack_require__(118);
+	    var ChartView = __webpack_require__(43);
 
 	    function isPointsSame(points1, points2) {
 	        if (points1.length !== points2.length) {
@@ -23951,6 +26233,8 @@
 	                }
 	            }
 	            else {
+	                // FIXME
+	                // can not downplay completely.
 	                // Downplay whole series
 	                ChartView.prototype.downplay.call(
 	                    this, seriesModel, ecModel, api, payload
@@ -24123,7 +26407,7 @@
 
 
 /***/ },
-/* 105 */
+/* 115 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -24131,8 +26415,8 @@
 	 */
 
 
-	    var graphic = __webpack_require__(43);
-	    var Symbol = __webpack_require__(106);
+	    var graphic = __webpack_require__(44);
+	    var Symbol = __webpack_require__(116);
 
 	    /**
 	     * @constructor
@@ -24255,7 +26539,7 @@
 
 
 /***/ },
-/* 106 */
+/* 116 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -24264,8 +26548,8 @@
 
 
 	    var zrUtil = __webpack_require__(4);
-	    var symbolUtil = __webpack_require__(107);
-	    var graphic = __webpack_require__(43);
+	    var symbolUtil = __webpack_require__(104);
+	    var graphic = __webpack_require__(44);
 	    var numberUtil = __webpack_require__(7);
 
 	    function getSymbolSize(data, idx) {
@@ -24401,6 +26685,7 @@
 	        }
 	        else {
 	            var symbolPath = this.childAt(0);
+	            symbolPath.silent = false;
 	            graphic.updateProps(symbolPath, {
 	                scale: getScale(symbolSize)
 	            }, seriesModel, idx);
@@ -24545,7 +26830,7 @@
 	    symbolProto.fadeOut = function (cb) {
 	        var symbolPath = this.childAt(0);
 	        // Avoid mistaken hover when fading out
-	        this.silent = true;
+	        this.silent = symbolPath.silent = true;
 	        // Not show text when animating
 	        symbolPath.style.text = '';
 	        graphic.updateProps(symbolPath, {
@@ -24559,367 +26844,7 @@
 
 
 /***/ },
-/* 107 */
-/***/ function(module, exports, __webpack_require__) {
-
-	'use strict';
-	// Symbol factory
-
-
-	    var graphic = __webpack_require__(43);
-	    var BoundingRect = __webpack_require__(9);
-
-	    /**
-	     * Triangle shape
-	     * @inner
-	     */
-	    var Triangle = graphic.extendShape({
-	        type: 'triangle',
-	        shape: {
-	            cx: 0,
-	            cy: 0,
-	            width: 0,
-	            height: 0
-	        },
-	        buildPath: function (path, shape) {
-	            var cx = shape.cx;
-	            var cy = shape.cy;
-	            var width = shape.width / 2;
-	            var height = shape.height / 2;
-	            path.moveTo(cx, cy - height);
-	            path.lineTo(cx + width, cy + height);
-	            path.lineTo(cx - width, cy + height);
-	            path.closePath();
-	        }
-	    });
-	    /**
-	     * Diamond shape
-	     * @inner
-	     */
-	    var Diamond = graphic.extendShape({
-	        type: 'diamond',
-	        shape: {
-	            cx: 0,
-	            cy: 0,
-	            width: 0,
-	            height: 0
-	        },
-	        buildPath: function (path, shape) {
-	            var cx = shape.cx;
-	            var cy = shape.cy;
-	            var width = shape.width / 2;
-	            var height = shape.height / 2;
-	            path.moveTo(cx, cy - height);
-	            path.lineTo(cx + width, cy);
-	            path.lineTo(cx, cy + height);
-	            path.lineTo(cx - width, cy);
-	            path.closePath();
-	        }
-	    });
-
-	    /**
-	     * Pin shape
-	     * @inner
-	     */
-	    var Pin = graphic.extendShape({
-	        type: 'pin',
-	        shape: {
-	            // x, y on the cusp
-	            x: 0,
-	            y: 0,
-	            width: 0,
-	            height: 0
-	        },
-
-	        buildPath: function (path, shape) {
-	            var x = shape.x;
-	            var y = shape.y;
-	            var w = shape.width / 5 * 3;
-	            // Height must be larger than width
-	            var h = Math.max(w, shape.height);
-	            var r = w / 2;
-
-	            // Dist on y with tangent point and circle center
-	            var dy = r * r / (h - r);
-	            var cy = y - h + r + dy;
-	            var angle = Math.asin(dy / r);
-	            // Dist on x with tangent point and circle center
-	            var dx = Math.cos(angle) * r;
-
-	            var tanX = Math.sin(angle);
-	            var tanY = Math.cos(angle);
-
-	            path.arc(
-	                x, cy, r,
-	                Math.PI - angle,
-	                Math.PI * 2 + angle
-	            );
-
-	            var cpLen = r * 0.6;
-	            var cpLen2 = r * 0.7;
-	            path.bezierCurveTo(
-	                x + dx - tanX * cpLen, cy + dy + tanY * cpLen,
-	                x, y - cpLen2,
-	                x, y
-	            );
-	            path.bezierCurveTo(
-	                x, y - cpLen2,
-	                x - dx + tanX * cpLen, cy + dy + tanY * cpLen,
-	                x - dx, cy + dy
-	            );
-	            path.closePath();
-	        }
-	    });
-
-	    /**
-	     * Arrow shape
-	     * @inner
-	     */
-	    var Arrow = graphic.extendShape({
-
-	        type: 'arrow',
-
-	        shape: {
-	            x: 0,
-	            y: 0,
-	            width: 0,
-	            height: 0
-	        },
-
-	        buildPath: function (ctx, shape) {
-	            var height = shape.height;
-	            var width = shape.width;
-	            var x = shape.x;
-	            var y = shape.y;
-	            var dx = width / 3 * 2;
-	            ctx.moveTo(x, y);
-	            ctx.lineTo(x + dx, y + height);
-	            ctx.lineTo(x, y + height / 4 * 3);
-	            ctx.lineTo(x - dx, y + height);
-	            ctx.lineTo(x, y);
-	            ctx.closePath();
-	        }
-	    });
-
-	    /**
-	     * Map of path contructors
-	     * @type {Object.<string, module:zrender/graphic/Path>}
-	     */
-	    var symbolCtors = {
-	        line: graphic.Line,
-
-	        rect: graphic.Rect,
-
-	        roundRect: graphic.Rect,
-
-	        square: graphic.Rect,
-
-	        circle: graphic.Circle,
-
-	        diamond: Diamond,
-
-	        pin: Pin,
-
-	        arrow: Arrow,
-
-	        triangle: Triangle
-	    };
-
-	    var symbolShapeMakers = {
-
-	        line: function (x, y, w, h, shape) {
-	            // FIXME
-	            shape.x1 = x;
-	            shape.y1 = y + h / 2;
-	            shape.x2 = x + w;
-	            shape.y2 = y + h / 2;
-	        },
-
-	        rect: function (x, y, w, h, shape) {
-	            shape.x = x;
-	            shape.y = y;
-	            shape.width = w;
-	            shape.height = h;
-	        },
-
-	        roundRect: function (x, y, w, h, shape) {
-	            shape.x = x;
-	            shape.y = y;
-	            shape.width = w;
-	            shape.height = h;
-	            shape.r = Math.min(w, h) / 4;
-	        },
-
-	        square: function (x, y, w, h, shape) {
-	            var size = Math.min(w, h);
-	            shape.x = x;
-	            shape.y = y;
-	            shape.width = size;
-	            shape.height = size;
-	        },
-
-	        circle: function (x, y, w, h, shape) {
-	            // Put circle in the center of square
-	            shape.cx = x + w / 2;
-	            shape.cy = y + h / 2;
-	            shape.r = Math.min(w, h) / 2;
-	        },
-
-	        diamond: function (x, y, w, h, shape) {
-	            shape.cx = x + w / 2;
-	            shape.cy = y + h / 2;
-	            shape.width = w;
-	            shape.height = h;
-	        },
-
-	        pin: function (x, y, w, h, shape) {
-	            shape.x = x + w / 2;
-	            shape.y = y + h / 2;
-	            shape.width = w;
-	            shape.height = h;
-	        },
-
-	        arrow: function (x, y, w, h, shape) {
-	            shape.x = x + w / 2;
-	            shape.y = y + h / 2;
-	            shape.width = w;
-	            shape.height = h;
-	        },
-
-	        triangle: function (x, y, w, h, shape) {
-	            shape.cx = x + w / 2;
-	            shape.cy = y + h / 2;
-	            shape.width = w;
-	            shape.height = h;
-	        }
-	    };
-
-	    var symbolBuildProxies = {};
-	    for (var name in symbolCtors) {
-	        if (symbolCtors.hasOwnProperty(name)) {
-	            symbolBuildProxies[name] = new symbolCtors[name]();
-	        }
-	    }
-
-	    var Symbol = graphic.extendShape({
-
-	        type: 'symbol',
-
-	        shape: {
-	            symbolType: '',
-	            x: 0,
-	            y: 0,
-	            width: 0,
-	            height: 0
-	        },
-
-	        beforeBrush: function () {
-	            var style = this.style;
-	            var shape = this.shape;
-	            // FIXME
-	            if (shape.symbolType === 'pin' && style.textPosition === 'inside') {
-	                style.textPosition = ['50%', '40%'];
-	                style.textAlign = 'center';
-	                style.textVerticalAlign = 'middle';
-	            }
-	        },
-
-	        buildPath: function (ctx, shape, inBundle) {
-	            var symbolType = shape.symbolType;
-	            var proxySymbol = symbolBuildProxies[symbolType];
-	            if (shape.symbolType !== 'none') {
-	                if (!proxySymbol) {
-	                    // Default rect
-	                    symbolType = 'rect';
-	                    proxySymbol = symbolBuildProxies[symbolType];
-	                }
-	                symbolShapeMakers[symbolType](
-	                    shape.x, shape.y, shape.width, shape.height, proxySymbol.shape
-	                );
-	                proxySymbol.buildPath(ctx, proxySymbol.shape, inBundle);
-	            }
-	        }
-	    });
-
-	    // Provide setColor helper method to avoid determine if set the fill or stroke outside
-	    var symbolPathSetColor = function (color) {
-	        if (this.type !== 'image') {
-	            var symbolStyle = this.style;
-	            var symbolShape = this.shape;
-	            if (symbolShape && symbolShape.symbolType === 'line') {
-	                symbolStyle.stroke = color;
-	            }
-	            else if (this.__isEmptyBrush) {
-	                symbolStyle.stroke = color;
-	                symbolStyle.fill = '#fff';
-	            }
-	            else {
-	                // FIXME 判断图形默认是填充还是描边,使用 onlyStroke ?
-	                symbolStyle.fill && (symbolStyle.fill = color);
-	                symbolStyle.stroke && (symbolStyle.stroke = color);
-	            }
-	            this.dirty(false);
-	        }
-	    };
-
-	    var symbolUtil = {
-	        /**
-	         * Create a symbol element with given symbol configuration: shape, x, y, width, height, color
-	         * @param {string} symbolType
-	         * @param {number} x
-	         * @param {number} y
-	         * @param {number} w
-	         * @param {number} h
-	         * @param {string} color
-	         */
-	        createSymbol: function (symbolType, x, y, w, h, color) {
-	            var isEmpty = symbolType.indexOf('empty') === 0;
-	            if (isEmpty) {
-	                symbolType = symbolType.substr(5, 1).toLowerCase() + symbolType.substr(6);
-	            }
-	            var symbolPath;
-
-	            if (symbolType.indexOf('image://') === 0) {
-	                symbolPath = new graphic.Image({
-	                    style: {
-	                        image: symbolType.slice(8),
-	                        x: x,
-	                        y: y,
-	                        width: w,
-	                        height: h
-	                    }
-	                });
-	            }
-	            else if (symbolType.indexOf('path://') === 0) {
-	                symbolPath = graphic.makePath(symbolType.slice(7), {}, new BoundingRect(x, y, w, h));
-	            }
-	            else {
-	                symbolPath = new Symbol({
-	                    shape: {
-	                        symbolType: symbolType,
-	                        x: x,
-	                        y: y,
-	                        width: w,
-	                        height: h
-	                    }
-	                });
-	            }
-
-	            symbolPath.__isEmptyBrush = isEmpty;
-
-	            symbolPath.setColor = symbolPathSetColor;
-
-	            symbolPath.setColor(color);
-
-	            return symbolPath;
-	        }
-	    };
-
-	    module.exports = symbolUtil;
-
-
-/***/ },
-/* 108 */
+/* 117 */
 /***/ function(module, exports) {
 
 	
@@ -25133,13 +27058,13 @@
 
 
 /***/ },
-/* 109 */
+/* 118 */
 /***/ function(module, exports, __webpack_require__) {
 
 	// Poly path support NaN point
 
 
-	    var Path = __webpack_require__(45);
+	    var Path = __webpack_require__(46);
 	    var vec2 = __webpack_require__(10);
 
 	    var vec2Min = vec2.min;
@@ -25388,7 +27313,7 @@
 
 
 /***/ },
-/* 110 */
+/* 119 */
 /***/ function(module, exports) {
 
 	
@@ -25437,7 +27362,7 @@
 
 
 /***/ },
-/* 111 */
+/* 120 */
 /***/ function(module, exports) {
 
 	
@@ -25450,13 +27375,13 @@
 	            if (coordSys) {
 	                var dims = coordSys.dimensions;
 
-	                if (coordSys.type === 'singleAxis') {
+	                if (dims.length === 1) {
 	                    data.each(dims[0], function (x, idx) {
 	                        // Also {Array.<number>}, not undefined to avoid if...else... statement
 	                        data.setItemLayout(idx, isNaN(x) ? [NaN, NaN] : coordSys.dataToPoint(x));
 	                    });
 	                }
-	                else {
+	                else if (dims.length === 2) {
 	                    data.each(dims, function (x, y, idx) {
 	                        // Also {Array.<number>}, not undefined to avoid if...else... statement
 	                        data.setItemLayout(
@@ -25469,8 +27394,9 @@
 	    };
 
 
+
 /***/ },
-/* 112 */
+/* 121 */
 /***/ function(module, exports) {
 
 	
@@ -25553,19 +27479,31 @@
 
 
 /***/ },
-/* 113 */
+/* 122 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+
+	    __webpack_require__(123);
+
+	    __webpack_require__(142);
+
+
+
+/***/ },
+/* 123 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
 
 
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 	    var zrUtil = __webpack_require__(4);
 	    var echarts = __webpack_require__(1);
 
-	    __webpack_require__(114);
+	    __webpack_require__(124);
 
-	    __webpack_require__(131);
+	    __webpack_require__(133);
 
 	    // Grid view
 	    echarts.extendComponentView({
@@ -25597,7 +27535,7 @@
 
 
 /***/ },
-/* 114 */
+/* 124 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -25608,11 +27546,11 @@
 	var factory = exports;
 
 	    var layout = __webpack_require__(21);
-	    var axisHelper = __webpack_require__(115);
+	    var axisHelper = __webpack_require__(105);
 
 	    var zrUtil = __webpack_require__(4);
-	    var Cartesian2D = __webpack_require__(121);
-	    var Axis2D = __webpack_require__(123);
+	    var Cartesian2D = __webpack_require__(125);
+	    var Axis2D = __webpack_require__(127);
 
 	    var each = zrUtil.each;
 
@@ -25620,7 +27558,7 @@
 	    var niceScaleExtent = axisHelper.niceScaleExtent;
 
 	    // 依赖 GridModel, AxisModel 做预处理
-	    __webpack_require__(126);
+	    __webpack_require__(129);
 
 	    /**
 	     * Check if the axis is used in the specified grid
@@ -25678,13 +27616,15 @@
 
 	        this._initCartesian(gridModel, ecModel, api);
 
-	        this._model = gridModel;
+	        this.model = gridModel;
 	    }
 
 	    var gridProto = Grid.prototype;
 
 	    gridProto.type = 'grid';
 
+	    gridProto.axisPointerEnabled = true;
+
 	    gridProto.getRect = function () {
 	        return this._rect;
 	    };
@@ -25693,7 +27633,7 @@
 
 	        var axesMap = this._axesMap;
 
-	        this._updateScale(ecModel, this._model);
+	        this._updateScale(ecModel, this.model);
 
 	        function ifAxisCanNotOnZero(otherAxisDim) {
 	            var axes = axesMap[otherAxisDim];
@@ -25709,10 +27649,10 @@
 	        }
 
 	        each(axesMap.x, function (xAxis) {
-	            niceScaleExtent(xAxis, xAxis.model);
+	            niceScaleExtent(xAxis.scale, xAxis.model);
 	        });
 	        each(axesMap.y, function (yAxis) {
-	            niceScaleExtent(yAxis, yAxis.model);
+	            niceScaleExtent(yAxis.scale, yAxis.model);
 	        });
 	        // Fix configuration
 	        each(axesMap.x, function (xAxis) {
@@ -25731,7 +27671,7 @@
 
 	        // Resize again if containLabel is enabled
 	        // FIXME It may cause getting wrong grid size in data processing stage
-	        this.resize(this._model, api);
+	        this.resize(this.model, api);
 	    };
 
 	    /**
@@ -25805,23 +27745,47 @@
 	        }
 	    };
 
+	    /**
+	     * @return {Array.<module:echarts/coord/Axis>}
+	     */
+	    gridProto.getAxes = function () {
+	        return this._axesList.slice();
+	    };
+
+	    /**
+	     * Usage:
+	     *      grid.getCartesian(xAxisIndex, yAxisIndex);
+	     *      grid.getCartesian(xAxisIndex);
+	     *      grid.getCartesian(null, yAxisIndex);
+	     *      grid.getCartesian({xAxisIndex: ..., yAxisIndex: ...});
+	     *
+	     * @param {number|Object} [xAxisIndex]
+	     * @param {number} [yAxisIndex]
+	     */
 	    gridProto.getCartesian = function (xAxisIndex, yAxisIndex) {
 	        if (xAxisIndex != null && yAxisIndex != null) {
 	            var key = 'x' + xAxisIndex + 'y' + yAxisIndex;
 	            return this._coordsMap[key];
 	        }
-	        else {
-	            // When only xAxisIndex or yAxisIndex given, find its first cartesian.
-	            for (var i = 0, coordList = this._coordsList; i < coordList.length; i++) {
-	                if (coordList[i].getAxis('x').index === xAxisIndex
-	                    || coordList[i].getAxis('y').index === yAxisIndex
-	                ) {
-	                    return coordList[i];
-	                }
+
+	        if (zrUtil.isObject(xAxisIndex)) {
+	            yAxisIndex = xAxisIndex.yAxisIndex;
+	            xAxisIndex = xAxisIndex.xAxisIndex;
+	        }
+	        // When only xAxisIndex or yAxisIndex given, find its first cartesian.
+	        for (var i = 0, coordList = this._coordsList; i < coordList.length; i++) {
+	            if (coordList[i].getAxis('x').index === xAxisIndex
+	                || coordList[i].getAxis('y').index === yAxisIndex
+	            ) {
+	                return coordList[i];
 	            }
 	        }
 	    };
 
+	    gridProto.getCartesians = function () {
+	        return this._coordsList.slice();
+	    };
+
 	    /**
 	     * @implements
 	     * see {module:echarts/CoodinateSystem}
@@ -25940,6 +27904,7 @@
 	                var cartesian = new Cartesian2D(key);
 
 	                cartesian.grid = this;
+	                cartesian.model = gridModel;
 
 	                this._coordsMap[key] = cartesian;
 	                this._coordsList.push(cartesian);
@@ -26055,6 +28020,25 @@
 	    };
 
 	    /**
+	     * @param {string} [dim] 'x' or 'y' or 'auto' or null/undefined
+	     * @return {Object} {baseAxes: [], otherAxes: []}
+	     */
+	    gridProto.getTooltipAxes = function (dim) {
+	        var baseAxes = [];
+	        var otherAxes = [];
+
+	        each(this.getCartesians(), function (cartesian) {
+	            var baseAxis = (dim != null && dim !== 'auto')
+	                ? cartesian.getAxis(dim) : cartesian.getBaseAxis();
+	            var otherAxis = cartesian.getOtherAxis(baseAxis);
+	            zrUtil.indexOf(baseAxes, baseAxis) < 0 && baseAxes.push(baseAxis);
+	            zrUtil.indexOf(otherAxes, otherAxis) < 0 && otherAxes.push(otherAxis);
+	        });
+
+	        return {baseAxes: baseAxes, otherAxes: otherAxes};
+	    };
+
+	    /**
 	     * @inner
 	     */
 	    function updateAxisTransfrom(axis, coordBase) {
@@ -26156,7 +28140,7 @@
 	    };
 
 	    // For deciding which dimensions to use when creating list data
-	    Grid.dimensions = Cartesian2D.prototype.dimensions;
+	    Grid.dimensions = Grid.prototype.dimensions = Cartesian2D.prototype.dimensions;
 
 	    __webpack_require__(26).register('cartesian2d', Grid);
 
@@ -26164,1104 +28148,14 @@
 
 
 /***/ },
-/* 115 */
-/***/ function(module, exports, __webpack_require__) {
-
-	
-
-	    var OrdinalScale = __webpack_require__(116);
-	    var IntervalScale = __webpack_require__(118);
-	    __webpack_require__(119);
-	    __webpack_require__(120);
-	    var Scale = __webpack_require__(117);
-
-	    var numberUtil = __webpack_require__(7);
-	    var zrUtil = __webpack_require__(4);
-	    var textContain = __webpack_require__(8);
-	    var axisHelper = {};
-
-	    /**
-	     * Get axis scale extent before niced.
-	     * Item of returned array can only be number (including Infinity and NaN).
-	     */
-	    axisHelper.getScaleExtent = function (axis, model) {
-	        var scale = axis.scale;
-	        var scaleType = scale.type;
-
-	        var min = model.getMin();
-	        var max = model.getMax();
-	        var fixMin = min != null;
-	        var fixMax = max != null;
-	        var originalExtent = scale.getExtent();
-
-	        var axisDataLen;
-	        var boundaryGap;
-	        var span;
-	        if (scaleType === 'ordinal') {
-	            axisDataLen = (model.get('data') || []).length;
-	        }
-	        else {
-	            boundaryGap = model.get('boundaryGap');
-	            if (!zrUtil.isArray(boundaryGap)) {
-	                boundaryGap = [boundaryGap || 0, boundaryGap || 0];
-	            }
-	            boundaryGap[0] = numberUtil.parsePercent(boundaryGap[0], 1);
-	            boundaryGap[1] = numberUtil.parsePercent(boundaryGap[1], 1);
-	            span = originalExtent[1] - originalExtent[0];
-	        }
-
-	        if (min == null) {
-	            min = scaleType === 'ordinal'
-	                ? (axisDataLen ? 0 : NaN)
-	                : originalExtent[0] - boundaryGap[0] * span;
-	        }
-	        if (max == null) {
-	            max = scaleType === 'ordinal'
-	                ? (axisDataLen ? axisDataLen - 1 : NaN)
-	                : originalExtent[1] + boundaryGap[1] * span;
-	        }
-
-	        if (min === 'dataMin') {
-	            min = originalExtent[0];
-	        }
-	        if (max === 'dataMax') {
-	            max = originalExtent[1];
-	        }
-
-	        (min == null || !isFinite(min)) && (min = NaN);
-	        (max == null || !isFinite(max)) && (max = NaN);
-
-	        axis.setBlank(zrUtil.eqNaN(min) || zrUtil.eqNaN(max));
-
-	        // Evaluate if axis needs cross zero
-	        if (model.getNeedCrossZero()) {
-	            // Axis is over zero and min is not set
-	            if (min > 0 && max > 0 && !fixMin) {
-	                min = 0;
-	            }
-	            // Axis is under zero and max is not set
-	            if (min < 0 && max < 0 && !fixMax) {
-	                max = 0;
-	            }
-	        }
-
-	        return [min, max];
-	    };
-
-	    axisHelper.niceScaleExtent = function (axis, model) {
-	        var scale = axis.scale;
-	        var extent = axisHelper.getScaleExtent(axis, model);
-	        var fixMin = model.getMin() != null;
-	        var fixMax = model.getMax() != null;
-	        var splitNumber = model.get('splitNumber');
-
-	        if (scale.type === 'log') {
-	            scale.base = model.get('logBase');
-	        }
-
-	        scale.setExtent(extent[0], extent[1]);
-	        scale.niceExtent(splitNumber, fixMin, fixMax);
-
-	        // Use minInterval to constraint the calculated interval.
-	        // If calculated interval is less than minInterval. increase the interval quantity until
-	        // it is larger than minInterval.
-	        // For example:
-	        //  minInterval is 1, calculated interval is 0.2, so increase it to be 1. In this way we can get
-	        //  an integer axis.
-	        var minInterval = model.get('minInterval');
-	        if (isFinite(minInterval) && !fixMin && !fixMax && scale.type === 'interval') {
-	            var interval = scale.getInterval();
-	            var intervalScale = Math.max(Math.abs(interval), minInterval) / interval;
-	            // while (interval < minInterval) {
-	            //     var quantity = numberUtil.quantity(interval);
-	            //     interval = quantity * 10;
-	            //     scaleQuantity *= 10;
-	            // }
-	            extent = scale.getExtent();
-	            var origin = (extent[1] + extent[0]) / 2;
-	            scale.setExtent(
-	                intervalScale * (extent[0] - origin) + origin,
-	                intervalScale * (extent[1] - origin) + origin
-	            );
-	            scale.niceExtent(splitNumber);
-	        }
-
-	        // If some one specified the min, max. And the default calculated interval
-	        // is not good enough. He can specify the interval. It is often appeared
-	        // in angle axis with angle 0 - 360. Interval calculated in interval scale is hard
-	        // to be 60.
-	        // FIXME
-	        var interval = model.get('interval');
-	        if (interval != null) {
-	            scale.setInterval && scale.setInterval(interval);
-	        }
-	    };
-
-	    /**
-	     * @param {module:echarts/model/Model} model
-	     * @param {string} [axisType] Default retrieve from model.type
-	     * @return {module:echarts/scale/*}
-	     */
-	    axisHelper.createScaleByModel = function(model, axisType) {
-	        axisType = axisType || model.get('type');
-	        if (axisType) {
-	            switch (axisType) {
-	                // Buildin scale
-	                case 'category':
-	                    return new OrdinalScale(
-	                        model.getCategories(), [Infinity, -Infinity]
-	                    );
-	                case 'value':
-	                    return new IntervalScale();
-	                // Extended scale, like time and log
-	                default:
-	                    return (Scale.getClass(axisType) || IntervalScale).create(model);
-	            }
-	        }
-	    };
-
-	    /**
-	     * Check if the axis corss 0
-	     */
-	    axisHelper.ifAxisCrossZero = function (axis) {
-	        var dataExtent = axis.scale.getExtent();
-	        var min = dataExtent[0];
-	        var max = dataExtent[1];
-	        return !((min > 0 && max > 0) || (min < 0 && max < 0));
-	    };
-
-	    /**
-	     * @param {Array.<number>} tickCoords In axis self coordinate.
-	     * @param {Array.<string>} labels
-	     * @param {string} font
-	     * @param {boolean} isAxisHorizontal
-	     * @return {number}
-	     */
-	    axisHelper.getAxisLabelInterval = function (tickCoords, labels, font, isAxisHorizontal) {
-	        // FIXME
-	        // 不同角的axis和label,不只是horizontal和vertical.
-
-	        var textSpaceTakenRect;
-	        var autoLabelInterval = 0;
-	        var accumulatedLabelInterval = 0;
-
-	        var step = 1;
-	        if (labels.length > 40) {
-	            // Simple optimization for large amount of labels
-	            step = Math.floor(labels.length / 40);
-	        }
-
-	        for (var i = 0; i < tickCoords.length; i += step) {
-	            var tickCoord = tickCoords[i];
-	            var rect = textContain.getBoundingRect(
-	                labels[i], font, 'center', 'top'
-	            );
-	            rect[isAxisHorizontal ? 'x' : 'y'] += tickCoord;
-	            // FIXME Magic number 1.5
-	            rect[isAxisHorizontal ? 'width' : 'height'] *= 1.3;
-	            if (!textSpaceTakenRect) {
-	                textSpaceTakenRect = rect.clone();
-	            }
-	            // There is no space for current label;
-	            else if (textSpaceTakenRect.intersect(rect)) {
-	                accumulatedLabelInterval++;
-	                autoLabelInterval = Math.max(autoLabelInterval, accumulatedLabelInterval);
-	            }
-	            else {
-	                textSpaceTakenRect.union(rect);
-	                // Reset
-	                accumulatedLabelInterval = 0;
-	            }
-	        }
-	        if (autoLabelInterval === 0 && step > 1) {
-	            return step;
-	        }
-	        return (autoLabelInterval + 1) * step - 1;
-	    };
-
-	    /**
-	     * @param {Object} axis
-	     * @param {Function} labelFormatter
-	     * @return {Array.<string>}
-	     */
-	    axisHelper.getFormattedLabels = function (axis, labelFormatter) {
-	        var scale = axis.scale;
-	        var labels = scale.getTicksLabels();
-	        var ticks = scale.getTicks();
-	        if (typeof labelFormatter === 'string') {
-	            labelFormatter = (function (tpl) {
-	                return function (val) {
-	                    return tpl.replace('{value}', val != null ? val : '');
-	                };
-	            })(labelFormatter);
-	            // Consider empty array
-	            return zrUtil.map(labels, labelFormatter);
-	        }
-	        else if (typeof labelFormatter === 'function') {
-	            return zrUtil.map(ticks, function (tick, idx) {
-	                return labelFormatter(
-	                    axis.type === 'category' ? scale.getLabel(tick) : tick,
-	                    idx
-	                );
-	            }, this);
-	        }
-	        else {
-	            return labels;
-	        }
-	    };
-
-	    module.exports = axisHelper;
-
-
-/***/ },
-/* 116 */
-/***/ function(module, exports, __webpack_require__) {
-
-	/**
-	 * Linear continuous scale
-	 * @module echarts/coord/scale/Ordinal
-	 *
-	 * http://en.wikipedia.org/wiki/Level_of_measurement
-	 */
-
-	// FIXME only one data
-
-
-	    var zrUtil = __webpack_require__(4);
-	    var Scale = __webpack_require__(117);
-
-	    var scaleProto = Scale.prototype;
-
-	    var OrdinalScale = Scale.extend({
-
-	        type: 'ordinal',
-
-	        init: function (data, extent) {
-	            this._data = data;
-	            this._extent = extent || [0, data.length - 1];
-	        },
-
-	        parse: function (val) {
-	            return typeof val === 'string'
-	                ? zrUtil.indexOf(this._data, val)
-	                // val might be float.
-	                : Math.round(val);
-	        },
-
-	        contain: function (rank) {
-	            rank = this.parse(rank);
-	            return scaleProto.contain.call(this, rank)
-	                && this._data[rank] != null;
-	        },
-
-	        /**
-	         * Normalize given rank or name to linear [0, 1]
-	         * @param {number|string} [val]
-	         * @return {number}
-	         */
-	        normalize: function (val) {
-	            return scaleProto.normalize.call(this, this.parse(val));
-	        },
-
-	        scale: function (val) {
-	            return Math.round(scaleProto.scale.call(this, val));
-	        },
-
-	        /**
-	         * @return {Array}
-	         */
-	        getTicks: function () {
-	            var ticks = [];
-	            var extent = this._extent;
-	            var rank = extent[0];
-
-	            while (rank <= extent[1]) {
-	                ticks.push(rank);
-	                rank++;
-	            }
-
-	            return ticks;
-	        },
-
-	        /**
-	         * Get item on rank n
-	         * @param {number} n
-	         * @return {string}
-	         */
-	        getLabel: function (n) {
-	            return this._data[n];
-	        },
-
-	        /**
-	         * @return {number}
-	         */
-	        count: function () {
-	            return this._extent[1] - this._extent[0] + 1;
-	        },
-
-	        /**
-	         * @override
-	         */
-	        unionExtentFromData: function (data, dim) {
-	            this.unionExtent(data.getDataExtent(dim, false));
-	        },
-
-	        niceTicks: zrUtil.noop,
-	        niceExtent: zrUtil.noop
-	    });
-
-	    /**
-	     * @return {module:echarts/scale/Time}
-	     */
-	    OrdinalScale.create = function () {
-	        return new OrdinalScale();
-	    };
-
-	    module.exports = OrdinalScale;
-
-
-/***/ },
-/* 117 */
-/***/ function(module, exports, __webpack_require__) {
-
-	/**
-	 * // Scale class management
-	 * @module echarts/scale/Scale
-	 */
-
-
-	    var clazzUtil = __webpack_require__(13);
-
-	    function Scale() {
-	        /**
-	         * Extent
-	         * @type {Array.<number>}
-	         * @protected
-	         */
-	        this._extent = [Infinity, -Infinity];
-
-	        /**
-	         * Step is calculated in adjustExtent
-	         * @type {Array.<number>}
-	         * @protected
-	         */
-	        this._interval = 0;
-
-	        this.init && this.init.apply(this, arguments);
-	    }
-
-	    var scaleProto = Scale.prototype;
-
-	    /**
-	     * Parse input val to valid inner number.
-	     * @param {*} val
-	     * @return {number}
-	     */
-	    scaleProto.parse = function (val) {
-	        // Notice: This would be a trap here, If the implementation
-	        // of this method depends on extent, and this method is used
-	        // before extent set (like in dataZoom), it would be wrong.
-	        // Nevertheless, parse does not depend on extent generally.
-	        return val;
-	    };
-
-	    scaleProto.contain = function (val) {
-	        var extent = this._extent;
-	        return val >= extent[0] && val <= extent[1];
-	    };
-
-	    /**
-	     * Normalize value to linear [0, 1], return 0.5 if extent span is 0
-	     * @param {number} val
-	     * @return {number}
-	     */
-	    scaleProto.normalize = function (val) {
-	        var extent = this._extent;
-	        if (extent[1] === extent[0]) {
-	            return 0.5;
-	        }
-	        return (val - extent[0]) / (extent[1] - extent[0]);
-	    };
-
-	    /**
-	     * Scale normalized value
-	     * @param {number} val
-	     * @return {number}
-	     */
-	    scaleProto.scale = function (val) {
-	        var extent = this._extent;
-	        return val * (extent[1] - extent[0]) + extent[0];
-	    };
-
-	    /**
-	     * Set extent from data
-	     * @param {Array.<number>} other
-	     */
-	    scaleProto.unionExtent = function (other) {
-	        var extent = this._extent;
-	        other[0] < extent[0] && (extent[0] = other[0]);
-	        other[1] > extent[1] && (extent[1] = other[1]);
-	        // not setExtent because in log axis it may transformed to power
-	        // this.setExtent(extent[0], extent[1]);
-	    };
-
-	    /**
-	     * Set extent from data
-	     * @param {module:echarts/data/List} data
-	     * @param {string} dim
-	     */
-	    scaleProto.unionExtentFromData = function (data, dim) {
-	        this.unionExtent(data.getDataExtent(dim, true));
-	    };
-
-	    /**
-	     * Get extent
-	     * @return {Array.<number>}
-	     */
-	    scaleProto.getExtent = function () {
-	        return this._extent.slice();
-	    };
-
-	    /**
-	     * Set extent
-	     * @param {number} start
-	     * @param {number} end
-	     */
-	    scaleProto.setExtent = function (start, end) {
-	        var thisExtent = this._extent;
-	        if (!isNaN(start)) {
-	            thisExtent[0] = start;
-	        }
-	        if (!isNaN(end)) {
-	            thisExtent[1] = end;
-	        }
-	    };
-
-	    /**
-	     * @return {Array.<string>}
-	     */
-	    scaleProto.getTicksLabels = function () {
-	        var labels = [];
-	        var ticks = this.getTicks();
-	        for (var i = 0; i < ticks.length; i++) {
-	            labels.push(this.getLabel(ticks[i]));
-	        }
-	        return labels;
-	    };
-
-	    clazzUtil.enableClassExtend(Scale);
-	    clazzUtil.enableClassManagement(Scale, {
-	        registerWhenExtend: true
-	    });
-
-	    module.exports = Scale;
-
-
-/***/ },
-/* 118 */
-/***/ function(module, exports, __webpack_require__) {
-
-	/**
-	 * Interval scale
-	 * @module echarts/scale/Interval
-	 */
-
-
-
-	    var numberUtil = __webpack_require__(7);
-	    var formatUtil = __webpack_require__(6);
-	    var Scale = __webpack_require__(117);
-
-	    var mathFloor = Math.floor;
-	    var mathCeil = Math.ceil;
-
-	    var getPrecisionSafe = numberUtil.getPrecisionSafe;
-	    var roundingErrorFix = numberUtil.round;
-	    /**
-	     * @alias module:echarts/coord/scale/Interval
-	     * @constructor
-	     */
-	    var IntervalScale = Scale.extend({
-
-	        type: 'interval',
-
-	        _interval: 0,
-
-	        setExtent: function (start, end) {
-	            var thisExtent = this._extent;
-	            //start,end may be a Number like '25',so...
-	            if (!isNaN(start)) {
-	                thisExtent[0] = parseFloat(start);
-	            }
-	            if (!isNaN(end)) {
-	                thisExtent[1] = parseFloat(end);
-	            }
-	        },
-
-	        unionExtent: function (other) {
-	            var extent = this._extent;
-	            other[0] < extent[0] && (extent[0] = other[0]);
-	            other[1] > extent[1] && (extent[1] = other[1]);
-
-	            // unionExtent may called by it's sub classes
-	            IntervalScale.prototype.setExtent.call(this, extent[0], extent[1]);
-	        },
-	        /**
-	         * Get interval
-	         */
-	        getInterval: function () {
-	            if (!this._interval) {
-	                this.niceTicks();
-	            }
-	            return this._interval;
-	        },
-
-	        /**
-	         * Set interval
-	         */
-	        setInterval: function (interval) {
-	            this._interval = interval;
-	            // Dropped auto calculated niceExtent and use user setted extent
-	            // We assume user wan't to set both interval, min, max to get a better result
-	            this._niceExtent = this._extent.slice();
-	        },
-
-	        /**
-	         * @return {Array.<number>}
-	         */
-	        getTicks: function () {
-	            if (!this._interval) {
-	                this.niceTicks();
-	            }
-	            var interval = this._interval;
-	            var extent = this._extent;
-	            var ticks = [];
-
-	            // Consider this case: using dataZoom toolbox, zoom and zoom.
-	            var safeLimit = 10000;
-
-	            if (interval) {
-	                var niceExtent = this._niceExtent;
-	                var precision = getPrecisionSafe(interval) + 2;
-
-	                if (extent[0] < niceExtent[0]) {
-	                    ticks.push(extent[0]);
-	                }
-	                var tick = niceExtent[0];
-
-	                while (tick <= niceExtent[1]) {
-	                    ticks.push(tick);
-	                    // Avoid rounding error
-	                    tick = roundingErrorFix(tick + interval, precision);
-	                    if (ticks.length > safeLimit) {
-	                        return [];
-	                    }
-	                }
-	                // Consider this case: the last item of ticks is smaller
-	                // than niceExtent[1] and niceExtent[1] === extent[1].
-	                if (extent[1] > (ticks.length ? ticks[ticks.length - 1] : niceExtent[1])) {
-	                    ticks.push(extent[1]);
-	                }
-	            }
-
-	            return ticks;
-	        },
-
-	        /**
-	         * @return {Array.<string>}
-	         */
-	        getTicksLabels: function () {
-	            var labels = [];
-	            var ticks = this.getTicks();
-	            for (var i = 0; i < ticks.length; i++) {
-	                labels.push(this.getLabel(ticks[i]));
-	            }
-	            return labels;
-	        },
-
-	        /**
-	         * @param {number} n
-	         * @return {number}
-	         */
-	        getLabel: function (data) {
-	            return formatUtil.addCommas(data);
-	        },
-
-	        /**
-	         * Update interval and extent of intervals for nice ticks
-	         *
-	         * @param {number} [splitNumber = 5] Desired number of ticks
-	         */
-	        niceTicks: function (splitNumber) {
-	            splitNumber = splitNumber || 5;
-	            var extent = this._extent;
-	            var span = extent[1] - extent[0];
-	            if (!isFinite(span)) {
-	                return;
-	            }
-	            // User may set axis min 0 and data are all negative
-	            // FIXME If it needs to reverse ?
-	            if (span < 0) {
-	                span = -span;
-	                extent.reverse();
-	            }
-
-	            // From "Nice Numbers for Graph Labels" of Graphic Gems
-	            // var niceSpan = numberUtil.nice(span, false);
-	            var step = roundingErrorFix(
-	                numberUtil.nice(span / splitNumber, true),
-	                Math.max(
-	                    getPrecisionSafe(extent[0]),
-	                    getPrecisionSafe(extent[1])
-	                // extent may be [0, 1], and step should have 1 more digits.
-	                // To make it safe we add 2 more digits
-	                ) + 2
-	            );
-
-	            var precision = getPrecisionSafe(step) + 2;
-	            // Niced extent inside original extent
-	            var niceExtent = [
-	                roundingErrorFix(mathCeil(extent[0] / step) * step, precision),
-	                roundingErrorFix(mathFloor(extent[1] / step) * step, precision)
-	            ];
-
-	            this._interval = step;
-	            this._niceExtent = niceExtent;
-	        },
-
-	        /**
-	         * Nice extent.
-	         * @param {number} [splitNumber = 5] Given approx tick number
-	         * @param {boolean} [fixMin=false]
-	         * @param {boolean} [fixMax=false]
-	         */
-	        niceExtent: function (splitNumber, fixMin, fixMax) {
-	            var extent = this._extent;
-	            // If extent start and end are same, expand them
-	            if (extent[0] === extent[1]) {
-	                if (extent[0] !== 0) {
-	                    // Expand extent
-	                    var expandSize = extent[0];
-	                    // In the fowllowing case
-	                    //      Axis has been fixed max 100
-	                    //      Plus data are all 100 and axis extent are [100, 100].
-	                    // Extend to the both side will cause expanded max is larger than fixed max.
-	                    // So only expand to the smaller side.
-	                    if (!fixMax) {
-	                        extent[1] += expandSize / 2;
-	                        extent[0] -= expandSize / 2;
-	                    }
-	                    else {
-	                        extent[0] -= expandSize / 2;
-	                    }
-	                }
-	                else {
-	                    extent[1] = 1;
-	                }
-	            }
-	            var span = extent[1] - extent[0];
-	            // If there are no data and extent are [Infinity, -Infinity]
-	            if (!isFinite(span)) {
-	                extent[0] = 0;
-	                extent[1] = 1;
-	            }
-
-	            this.niceTicks(splitNumber);
-
-	            // var extent = this._extent;
-	            var interval = this._interval;
-
-	            if (!fixMin) {
-	                extent[0] = roundingErrorFix(mathFloor(extent[0] / interval) * interval);
-	            }
-	            if (!fixMax) {
-	                extent[1] = roundingErrorFix(mathCeil(extent[1] / interval) * interval);
-	            }
-	        }
-	    });
-
-	    /**
-	     * @return {module:echarts/scale/Time}
-	     */
-	    IntervalScale.create = function () {
-	        return new IntervalScale();
-	    };
-
-	    module.exports = IntervalScale;
-
-
-
-/***/ },
-/* 119 */
-/***/ function(module, exports, __webpack_require__) {
-
-	/**
-	 * Interval scale
-	 * @module echarts/coord/scale/Time
-	 */
-
-
-
-	    var zrUtil = __webpack_require__(4);
-	    var numberUtil = __webpack_require__(7);
-	    var formatUtil = __webpack_require__(6);
-
-	    var IntervalScale = __webpack_require__(118);
-
-	    var intervalScaleProto = IntervalScale.prototype;
-
-	    var mathCeil = Math.ceil;
-	    var mathFloor = Math.floor;
-	    var ONE_SECOND = 1000;
-	    var ONE_MINUTE = ONE_SECOND * 60;
-	    var ONE_HOUR = ONE_MINUTE * 60;
-	    var ONE_DAY = ONE_HOUR * 24;
-
-	    // FIXME 公用?
-	    var bisect = function (a, x, lo, hi) {
-	        while (lo < hi) {
-	            var mid = lo + hi >>> 1;
-	            if (a[mid][2] < x) {
-	                lo = mid + 1;
-	            }
-	            else {
-	                hi  = mid;
-	            }
-	        }
-	        return lo;
-	    };
-
-	    /**
-	     * @alias module:echarts/coord/scale/Time
-	     * @constructor
-	     */
-	    var TimeScale = IntervalScale.extend({
-	        type: 'time',
-
-	        // Overwrite
-	        getLabel: function (val) {
-	            var stepLvl = this._stepLvl;
-
-	            var date = new Date(val);
-
-	            return formatUtil.formatTime(stepLvl[0], date);
-	        },
-
-	        // Overwrite
-	        niceExtent: function (approxTickNum, fixMin, fixMax) {
-	            var extent = this._extent;
-	            // If extent start and end are same, expand them
-	            if (extent[0] === extent[1]) {
-	                // Expand extent
-	                extent[0] -= ONE_DAY;
-	                extent[1] += ONE_DAY;
-	            }
-	            // If there are no data and extent are [Infinity, -Infinity]
-	            if (extent[1] === -Infinity && extent[0] === Infinity) {
-	                var d = new Date();
-	                extent[1] = new Date(d.getFullYear(), d.getMonth(), d.getDate());
-	                extent[0] = extent[1] - ONE_DAY;
-	            }
-
-	            this.niceTicks(approxTickNum);
-
-	            // var extent = this._extent;
-	            var interval = this._interval;
-
-	            if (!fixMin) {
-	                extent[0] = numberUtil.round(mathFloor(extent[0] / interval) * interval);
-	            }
-	            if (!fixMax) {
-	                extent[1] = numberUtil.round(mathCeil(extent[1] / interval) * interval);
-	            }
-	        },
-
-	        // Overwrite
-	        niceTicks: function (approxTickNum) {
-	            approxTickNum = approxTickNum || 10;
-
-	            var extent = this._extent;
-	            var span = extent[1] - extent[0];
-	            var approxInterval = span / approxTickNum;
-	            var scaleLevelsLen = scaleLevels.length;
-	            var idx = bisect(scaleLevels, approxInterval, 0, scaleLevelsLen);
-
-	            var level = scaleLevels[Math.min(idx, scaleLevelsLen - 1)];
-	            var interval = level[2];
-	            // Same with interval scale if span is much larger than 1 year
-	            if (level[0] === 'year') {
-	                var yearSpan = span / interval;
-
-	                // From "Nice Numbers for Graph Labels" of Graphic Gems
-	                // var niceYearSpan = numberUtil.nice(yearSpan, false);
-	                var yearStep = numberUtil.nice(yearSpan / approxTickNum, true);
-
-	                interval *= yearStep;
-	            }
-
-	            var niceExtent = [
-	                mathCeil(extent[0] / interval) * interval,
-	                mathFloor(extent[1] / interval) * interval
-	            ];
-
-	            this._stepLvl = level;
-	            // Interval will be used in getTicks
-	            this._interval = interval;
-	            this._niceExtent = niceExtent;
-	        },
-
-	        parse: function (val) {
-	            // val might be float.
-	            return +numberUtil.parseDate(val);
-	        }
-	    });
-
-	    zrUtil.each(['contain', 'normalize'], function (methodName) {
-	        TimeScale.prototype[methodName] = function (val) {
-	            return intervalScaleProto[methodName].call(this, this.parse(val));
-	        };
-	    });
-
-	    // Steps from d3
-	    var scaleLevels = [
-	        // Format       step    interval
-	        ['hh:mm:ss',    1,      ONE_SECOND],           // 1s
-	        ['hh:mm:ss',    5,      ONE_SECOND * 5],       // 5s
-	        ['hh:mm:ss',    10,     ONE_SECOND * 10],      // 10s
-	        ['hh:mm:ss',    15,     ONE_SECOND * 15],      // 15s
-	        ['hh:mm:ss',    30,     ONE_SECOND * 30],      // 30s
-	        ['hh:mm\nMM-dd',1,      ONE_MINUTE],          // 1m
-	        ['hh:mm\nMM-dd',5,      ONE_MINUTE * 5],      // 5m
-	        ['hh:mm\nMM-dd',10,     ONE_MINUTE * 10],     // 10m
-	        ['hh:mm\nMM-dd',15,     ONE_MINUTE * 15],     // 15m
-	        ['hh:mm\nMM-dd',30,     ONE_MINUTE * 30],     // 30m
-	        ['hh:mm\nMM-dd',1,      ONE_HOUR],        // 1h
-	        ['hh:mm\nMM-dd',2,      ONE_HOUR * 2],    // 2h
-	        ['hh:mm\nMM-dd',6,      ONE_HOUR * 6],    // 6h
-	        ['hh:mm\nMM-dd',12,     ONE_HOUR * 12],   // 12h
-	        ['MM-dd\nyyyy', 1,      ONE_DAY],   // 1d
-	        ['week',        7,      ONE_DAY * 7],        // 7d
-	        ['month',       1,      ONE_DAY * 31],       // 1M
-	        ['quarter',     3,      ONE_DAY * 380 / 4],  // 3M
-	        ['half-year',   6,      ONE_DAY * 380 / 2],  // 6M
-	        ['year',        1,      ONE_DAY * 380]       // 1Y
-	    ];
-
-	    /**
-	     * @return {module:echarts/scale/Time}
-	     */
-	    TimeScale.create = function () {
-	        return new TimeScale();
-	    };
-
-	    module.exports = TimeScale;
-
-
-/***/ },
-/* 120 */
-/***/ function(module, exports, __webpack_require__) {
-
-	/**
-	 * Log scale
-	 * @module echarts/scale/Log
-	 */
-
-
-	    var zrUtil = __webpack_require__(4);
-	    var Scale = __webpack_require__(117);
-	    var numberUtil = __webpack_require__(7);
-
-	    // Use some method of IntervalScale
-	    var IntervalScale = __webpack_require__(118);
-
-	    var scaleProto = Scale.prototype;
-	    var intervalScaleProto = IntervalScale.prototype;
-
-	    var getPrecisionSafe = numberUtil.getPrecisionSafe;
-	    var roundingErrorFix = numberUtil.round;
-
-	    var mathFloor = Math.floor;
-	    var mathCeil = Math.ceil;
-	    var mathPow = Math.pow;
-
-	    var mathLog = Math.log;
-
-	    var LogScale = Scale.extend({
-
-	        type: 'log',
-
-	        base: 10,
-
-	        $constructor: function () {
-	            Scale.apply(this, arguments);
-	            this._originalScale = new IntervalScale();
-	        },
-
-	        /**
-	         * @return {Array.<number>}
-	         */
-	        getTicks: function () {
-	            var originalScale = this._originalScale;
-	            var extent = this._extent;
-	            var originalExtent = originalScale.getExtent();
-
-	            return zrUtil.map(intervalScaleProto.getTicks.call(this), function (val) {
-	                var powVal = numberUtil.round(mathPow(this.base, val));
-
-	                // Fix #4158
-	                powVal = (val === extent[0] && originalScale.__fixMin)
-	                    ? fixRoundingError(powVal, originalExtent[0])
-	                    : powVal;
-	                powVal = (val === extent[1] && originalScale.__fixMax)
-	                    ? fixRoundingError(powVal, originalExtent[1])
-	                    : powVal;
-
-	                return powVal;
-	            }, this);
-	        },
-
-	        /**
-	         * @param {number} val
-	         * @return {string}
-	         */
-	        getLabel: intervalScaleProto.getLabel,
-
-	        /**
-	         * @param  {number} val
-	         * @return {number}
-	         */
-	        scale: function (val) {
-	            val = scaleProto.scale.call(this, val);
-	            return mathPow(this.base, val);
-	        },
-
-	        /**
-	         * @param {number} start
-	         * @param {number} end
-	         */
-	        setExtent: function (start, end) {
-	            var base = this.base;
-	            start = mathLog(start) / mathLog(base);
-	            end = mathLog(end) / mathLog(base);
-	            intervalScaleProto.setExtent.call(this, start, end);
-	        },
-
-	        /**
-	         * @return {number} end
-	         */
-	        getExtent: function () {
-	            var base = this.base;
-	            var extent = scaleProto.getExtent.call(this);
-	            extent[0] = mathPow(base, extent[0]);
-	            extent[1] = mathPow(base, extent[1]);
-
-	            // Fix #4158
-	            var originalScale = this._originalScale;
-	            var originalExtent = originalScale.getExtent();
-	            originalScale.__fixMin && (extent[0] = fixRoundingError(extent[0], originalExtent[0]));
-	            originalScale.__fixMax && (extent[1] = fixRoundingError(extent[1], originalExtent[1]));
-
-	            return extent;
-	        },
-
-	        /**
-	         * @param  {Array.<number>} extent
-	         */
-	        unionExtent: function (extent) {
-	            this._originalScale.unionExtent(extent);
-
-	            var base = this.base;
-	            extent[0] = mathLog(extent[0]) / mathLog(base);
-	            extent[1] = mathLog(extent[1]) / mathLog(base);
-	            scaleProto.unionExtent.call(this, extent);
-	        },
-
-	        /**
-	         * @override
-	         */
-	        unionExtentFromData: function (data, dim) {
-	            this.unionExtent(data.getDataExtent(dim, true, function (val) {
-	                return val > 0;
-	            }));
-	        },
-
-	        /**
-	         * Update interval and extent of intervals for nice ticks
-	         * @param  {number} [approxTickNum = 10] Given approx tick number
-	         */
-	        niceTicks: function (approxTickNum) {
-	            approxTickNum = approxTickNum || 10;
-	            var extent = this._extent;
-	            var span = extent[1] - extent[0];
-	            if (span === Infinity || span <= 0) {
-	                return;
-	            }
-
-	            var interval = numberUtil.quantity(span);
-	            var err = approxTickNum / span * interval;
-
-	            // Filter ticks to get closer to the desired count.
-	            if (err <= 0.5) {
-	                interval *= 10;
-	            }
-
-	            // Interval should be integer
-	            while (!isNaN(interval) && Math.abs(interval) < 1 && Math.abs(interval) > 0) {
-	                interval *= 10;
-	            }
-
-	            var niceExtent = [
-	                numberUtil.round(mathCeil(extent[0] / interval) * interval),
-	                numberUtil.round(mathFloor(extent[1] / interval) * interval)
-	            ];
-
-	            this._interval = interval;
-	            this._niceExtent = niceExtent;
-	        },
-
-	        /**
-	         * Nice extent.
-	         * @param {number} [approxTickNum = 10] Given approx tick number
-	         * @param {boolean} [fixMin=false]
-	         * @param {boolean} [fixMax=false]
-	         */
-	        niceExtent: function (splitNumber, fixMin, fixMax) {
-	            intervalScaleProto.niceExtent.call(this, splitNumber, fixMin, fixMax);
-
-	            var originalScale = this._originalScale;
-	            originalScale.__fixMin = fixMin;
-	            originalScale.__fixMax = fixMax;
-	        }
-
-	    });
-
-	    zrUtil.each(['contain', 'normalize'], function (methodName) {
-	        LogScale.prototype[methodName] = function (val) {
-	            val = mathLog(val) / mathLog(this.base);
-	            return scaleProto[methodName].call(this, val);
-	        };
-	    });
-
-	    LogScale.create = function () {
-	        return new LogScale();
-	    };
-
-	    function fixRoundingError(val, originalVal) {
-	        return roundingErrorFix(val, getPrecisionSafe(originalVal));
-	    }
-
-	    module.exports = LogScale;
-
-
-/***/ },
-/* 121 */
+/* 125 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
 
 
 	    var zrUtil = __webpack_require__(4);
-	    var Cartesian = __webpack_require__(122);
+	    var Cartesian = __webpack_require__(126);
 
 	    function Cartesian2D(name) {
 
@@ -27370,7 +28264,7 @@
 
 
 /***/ },
-/* 122 */
+/* 126 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -27488,14 +28382,14 @@
 
 
 /***/ },
-/* 123 */
+/* 127 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    var zrUtil = __webpack_require__(4);
-	    var Axis = __webpack_require__(124);
-	    var axisLabelInterval = __webpack_require__(125);
+	    var Axis = __webpack_require__(100);
+	    var axisLabelInterval = __webpack_require__(128);
 
 	    /**
 	     * Extend axis 2d
@@ -27554,13 +28448,26 @@
 	            return position === 'top' || position === 'bottom';
 	        },
 
-	        getGlobalExtent: function () {
+	        /**
+	         * Each item cooresponds to this.getExtent(), which
+	         * means globalExtent[0] may greater than globalExtent[1],
+	         * unless `asc` is input.
+	         *
+	         * @param {boolean} [asc]
+	         * @return {Array.<number>}
+	         */
+	        getGlobalExtent: function (asc) {
 	            var ret = this.getExtent();
 	            ret[0] = this.toGlobalCoord(ret[0]);
 	            ret[1] = this.toGlobalCoord(ret[1]);
+	            asc && ret[0] > ret[1] && ret.reverse();
 	            return ret;
 	        },
 
+	        getOtherAxis: function () {
+	            this.grid.getOtherAxis();
+	        },
+
 	        /**
 	         * @return {number}
 	         */
@@ -27588,6 +28495,13 @@
 	        },
 
 	        /**
+	         * @override
+	         */
+	        pointToData: function (point, clamp) {
+	            return this.coordToData(this.toLocalCoord(point[this.dim === 'x' ? 0 : 1]), clamp);
+	        },
+
+	        /**
 	         * Transform global coord to local coord,
 	         * i.e. var localCoord = axis.toLocalCoord(80);
 	         * designate by module:echarts/coord/cartesian/Grid.
@@ -27610,249 +28524,7 @@
 
 
 /***/ },
-/* 124 */
-/***/ function(module, exports, __webpack_require__) {
-
-	
-
-	    var numberUtil = __webpack_require__(7);
-	    var linearMap = numberUtil.linearMap;
-	    var zrUtil = __webpack_require__(4);
-
-	    function fixExtentWithBands(extent, nTick) {
-	        var size = extent[1] - extent[0];
-	        var len = nTick;
-	        var margin = size / len / 2;
-	        extent[0] += margin;
-	        extent[1] -= margin;
-	    }
-
-	    var normalizedExtent = [0, 1];
-	    /**
-	     * @name module:echarts/coord/CartesianAxis
-	     * @constructor
-	     */
-	    var Axis = function (dim, scale, extent) {
-
-	        /**
-	         * Axis dimension. Such as 'x', 'y', 'z', 'angle', 'radius'
-	         * @type {string}
-	         */
-	        this.dim = dim;
-
-	        /**
-	         * Axis scale
-	         * @type {module:echarts/coord/scale/*}
-	         */
-	        this.scale = scale;
-
-	        /**
-	         * @type {Array.<number>}
-	         * @private
-	         */
-	        this._extent = extent || [0, 0];
-
-	        /**
-	         * @type {boolean}
-	         */
-	        this.inverse = false;
-
-	        /**
-	         * Usually true when axis has a ordinal scale
-	         * @type {boolean}
-	         */
-	        this.onBand = false;
-	    };
-
-	    Axis.prototype = {
-
-	        constructor: Axis,
-
-	        /**
-	         * If axis extent contain given coord
-	         * @param {number} coord
-	         * @return {boolean}
-	         */
-	        contain: function (coord) {
-	            var extent = this._extent;
-	            var min = Math.min(extent[0], extent[1]);
-	            var max = Math.max(extent[0], extent[1]);
-	            return coord >= min && coord <= max;
-	        },
-
-	        /**
-	         * If axis extent contain given data
-	         * @param {number} data
-	         * @return {boolean}
-	         */
-	        containData: function (data) {
-	            return this.contain(this.dataToCoord(data));
-	        },
-
-	        /**
-	         * Get coord extent.
-	         * @return {Array.<number>}
-	         */
-	        getExtent: function () {
-	            var ret = this._extent.slice();
-	            return ret;
-	        },
-
-	        /**
-	         * Get precision used for formatting
-	         * @param {Array.<number>} [dataExtent]
-	         * @return {number}
-	         */
-	        getPixelPrecision: function (dataExtent) {
-	            return numberUtil.getPixelPrecision(
-	                dataExtent || this.scale.getExtent(),
-	                this._extent
-	            );
-	        },
-
-	        /**
-	         * Set coord extent
-	         * @param {number} start
-	         * @param {number} end
-	         */
-	        setExtent: function (start, end) {
-	            var extent = this._extent;
-	            extent[0] = start;
-	            extent[1] = end;
-	        },
-
-	        /**
-	         * Convert data to coord. Data is the rank if it has a ordinal scale
-	         * @param {number} data
-	         * @param  {boolean} clamp
-	         * @return {number}
-	         */
-	        dataToCoord: function (data, clamp) {
-	            var extent = this._extent;
-	            var scale = this.scale;
-	            data = scale.normalize(data);
-
-	            if (this.onBand && scale.type === 'ordinal') {
-	                extent = extent.slice();
-	                fixExtentWithBands(extent, scale.count());
-	            }
-
-	            return linearMap(data, normalizedExtent, extent, clamp);
-	        },
-
-	        /**
-	         * Convert coord to data. Data is the rank if it has a ordinal scale
-	         * @param {number} coord
-	         * @param  {boolean} clamp
-	         * @return {number}
-	         */
-	        coordToData: function (coord, clamp) {
-	            var extent = this._extent;
-	            var scale = this.scale;
-
-	            if (this.onBand && scale.type === 'ordinal') {
-	                extent = extent.slice();
-	                fixExtentWithBands(extent, scale.count());
-	            }
-
-	            var t = linearMap(coord, extent, normalizedExtent, clamp);
-
-	            return this.scale.scale(t);
-	        },
-	        /**
-	         * @return {Array.<number>}
-	         */
-	        getTicksCoords: function (alignWithLabel) {
-	            if (this.onBand && !alignWithLabel) {
-	                var bands = this.getBands();
-	                var coords = [];
-	                for (var i = 0; i < bands.length; i++) {
-	                    coords.push(bands[i][0]);
-	                }
-	                if (bands[i - 1]) {
-	                    coords.push(bands[i - 1][1]);
-	                }
-	                return coords;
-	            }
-	            else {
-	                return zrUtil.map(this.scale.getTicks(), this.dataToCoord, this);
-	            }
-	        },
-
-	        /**
-	         * Coords of labels are on the ticks or on the middle of bands
-	         * @return {Array.<number>}
-	         */
-	        getLabelsCoords: function () {
-	            return zrUtil.map(this.scale.getTicks(), this.dataToCoord, this);
-	        },
-
-	        /**
-	         * Get bands.
-	         *
-	         * If axis has labels [1, 2, 3, 4]. Bands on the axis are
-	         * |---1---|---2---|---3---|---4---|.
-	         *
-	         * @return {Array}
-	         */
-	         // FIXME Situation when labels is on ticks
-	        getBands: function () {
-	            var extent = this.getExtent();
-	            var bands = [];
-	            var len = this.scale.count();
-	            var start = extent[0];
-	            var end = extent[1];
-	            var span = end - start;
-
-	            for (var i = 0; i < len; i++) {
-	                bands.push([
-	                    span * i / len + start,
-	                    span * (i + 1) / len + start
-	                ]);
-	            }
-	            return bands;
-	        },
-
-	        /**
-	         * Get width of band
-	         * @return {number}
-	         */
-	        getBandWidth: function () {
-	            var axisExtent = this._extent;
-	            var dataExtent = this.scale.getExtent();
-
-	            var len = dataExtent[1] - dataExtent[0] + (this.onBand ? 1 : 0);
-	            // Fix #2728, avoid NaN when only one data.
-	            len === 0 && (len = 1);
-
-	            var size = Math.abs(axisExtent[1] - axisExtent[0]);
-
-	            return Math.abs(size) / len;
-	        },
-
-	        /**
-	         * When axis extent depends on data and no data exists,
-	         * axis ticks should not be drawn, which is named 'blank'.
-	         */
-	        isBlank: function () {
-	            return this._isBlank;
-	        },
-
-	        /**
-	         * When axis extent depends on data and no data exists,
-	         * axis ticks should not be drawn, which is named 'blank'.
-	         */
-	        setBlank: function (isBlank) {
-	            this._isBlank = isBlank;
-	        }
-
-	    };
-
-	    module.exports = Axis;
-
-
-/***/ },
-/* 125 */
+/* 128 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -27863,7 +28535,7 @@
 
 
 	    var zrUtil = __webpack_require__(4);
-	    var axisHelper = __webpack_require__(115);
+	    var axisHelper = __webpack_require__(105);
 
 	    module.exports = function (axis) {
 	        var axisModel = axis.model;
@@ -27883,7 +28555,7 @@
 
 
 /***/ },
-/* 126 */
+/* 129 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -27891,7 +28563,8 @@
 	// 所以这里也要被 Cartesian2D 依赖
 
 
-	    __webpack_require__(127);
+	    __webpack_require__(130);
+
 	    var ComponentModel = __webpack_require__(19);
 
 	    module.exports = ComponentModel.extend({
@@ -27927,7 +28600,7 @@
 
 
 /***/ },
-/* 127 */
+/* 130 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -27935,7 +28608,7 @@
 
 	    var ComponentModel = __webpack_require__(19);
 	    var zrUtil = __webpack_require__(4);
-	    var axisModelCreator = __webpack_require__(128);
+	    var axisModelCreator = __webpack_require__(131);
 
 	    var AxisModel = ComponentModel.extend({
 
@@ -27989,7 +28662,7 @@
 	        return option.type || (option.data ? 'category' : 'value');
 	    }
 
-	    zrUtil.merge(AxisModel.prototype, __webpack_require__(130));
+	    zrUtil.merge(AxisModel.prototype, __webpack_require__(111));
 
 	    var extraOption = {
 	        // gridIndex: 0,
@@ -28006,12 +28679,12 @@
 
 
 /***/ },
-/* 128 */
+/* 131 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var axisDefault = __webpack_require__(129);
+	    var axisDefault = __webpack_require__(132);
 	    var zrUtil = __webpack_require__(4);
 	    var ComponentModel = __webpack_require__(19);
 	    var layout = __webpack_require__(21);
@@ -28069,7 +28742,7 @@
 
 
 /***/ },
-/* 129 */
+/* 132 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -28106,6 +28779,8 @@
 	            show: false
 	        },
 
+	        axisPointer: {},
+
 	        // 坐标轴线
 	        axisLine: {
 	            // 默认显示,属性show控制显示与否
@@ -28178,7 +28853,6 @@
 	        // 坐标轴小标记
 	        axisTick: {
 	            // If tick is align with label when boundaryGap is true
-	            // Default with axisTick
 	            alignWithLabel: false,
 	            interval: 'auto'
 	        },
@@ -28227,130 +28901,30 @@
 
 
 /***/ },
-/* 130 */
-/***/ function(module, exports, __webpack_require__) {
-
-	
-
-	    var zrUtil = __webpack_require__(4);
-	    var axisHelper = __webpack_require__(115);
-
-	    function getName(obj) {
-	        if (zrUtil.isObject(obj) && obj.value != null) {
-	            return obj.value;
-	        }
-	        else {
-	            return obj;
-	        }
-	    }
-
-	    module.exports = {
-
-	        /**
-	         * Format labels
-	         * @return {Array.<string>}
-	         */
-	        getFormattedLabels: function () {
-	            return axisHelper.getFormattedLabels(
-	                this.axis,
-	                this.get('axisLabel.formatter')
-	            );
-	        },
-
-	        /**
-	         * Get categories
-	         */
-	        getCategories: function () {
-	            return this.get('type') === 'category'
-	                && zrUtil.map(this.get('data'), getName);
-	        },
-
-	        /**
-	         * @param {boolean} origin
-	         * @return {number|string} min value or 'dataMin' or null/undefined (means auto) or NaN
-	         */
-	        getMin: function (origin) {
-	            var option = this.option;
-	            var min = (!origin && option.rangeStart != null)
-	                ? option.rangeStart : option.min;
-
-	            if (min != null && min !== 'dataMin' && !zrUtil.eqNaN(min)) {
-	                min = this.axis.scale.parse(min);
-	            }
-	            return min;
-	        },
-
-	        /**
-	         * @param {boolean} origin
-	         * @return {number|string} max value or 'dataMax' or null/undefined (means auto) or NaN
-	         */
-	        getMax: function (origin) {
-	            var option = this.option;
-	            var max = (!origin && option.rangeEnd != null)
-	                ? option.rangeEnd : option.max;
-
-	            if (max != null && max !== 'dataMax' && !zrUtil.eqNaN(max)) {
-	                max = this.axis.scale.parse(max);
-	            }
-	            return max;
-	        },
-
-	        /**
-	         * @return {boolean}
-	         */
-	        getNeedCrossZero: function () {
-	            var option = this.option;
-	            return (option.rangeStart != null || option.rangeEnd != null)
-	                ? false : !option.scale;
-	        },
-
-	        /**
-	         * Should be implemented by each axis model if necessary.
-	         * @return {module:echarts/model/Component} coordinate system model
-	         */
-	        getCoordSysModel: zrUtil.noop,
-
-	        /**
-	         * @param {number} rangeStart Can only be finite number or null/undefined or NaN.
-	         * @param {number} rangeEnd Can only be finite number or null/undefined or NaN.
-	         */
-	        setRange: function (rangeStart, rangeEnd) {
-	            this.option.rangeStart = rangeStart;
-	            this.option.rangeEnd = rangeEnd;
-	        },
-
-	        /**
-	         * Reset range
-	         */
-	        resetRange: function () {
-	            // rangeStart and rangeEnd is readonly.
-	            this.option.rangeStart = this.option.rangeEnd = null;
-	        }
-	    };
-
-
-/***/ },
-/* 131 */
+/* 133 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
 	// TODO boundaryGap
 
 
-	    __webpack_require__(127);
+	    __webpack_require__(130);
 
-	    __webpack_require__(132);
+	    __webpack_require__(134);
 
 
 /***/ },
-/* 132 */
+/* 134 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    var zrUtil = __webpack_require__(4);
-	    var graphic = __webpack_require__(43);
-	    var AxisBuilder = __webpack_require__(133);
+	    var graphic = __webpack_require__(44);
+	    var AxisBuilder = __webpack_require__(135);
+	    var CartesianAxisPointer = __webpack_require__(136);
+	    var AxisView = __webpack_require__(141);
+	    var cartesianAxisHelper = __webpack_require__(140);
 	    var ifIgnoreOnTick = AxisBuilder.ifIgnoreOnTick;
 	    var getInterval = AxisBuilder.getInterval;
 
@@ -28369,11 +28943,16 @@
 	    //     return alignWithLabel;
 	    // }
 
-	    var AxisView = __webpack_require__(1).extendComponentView({
+	    var CartesianAxisView = AxisView.extend({
 
-	        type: 'axis',
+	        type: 'cartesianAxis',
 
-	        render: function (axisModel, ecModel) {
+	        axisPointerClass: CartesianAxisPointer,
+
+	        /**
+	         * @override
+	         */
+	        render: function (axisModel, ecModel, api, payload) {
 
 	            this.group.removeAll();
 
@@ -28388,7 +28967,7 @@
 
 	            var gridModel = axisModel.getCoordSysModel();
 
-	            var layout = layoutAxis(gridModel, axisModel);
+	            var layout = cartesianAxisHelper.layout(gridModel, axisModel);
 
 	            var axisBuilder = new AxisBuilder(axisModel, layout);
 
@@ -28403,6 +28982,8 @@
 	            }, this);
 
 	            graphic.groupTransition(oldAxisGroup, this._axisGroup, axisModel);
+
+	            CartesianAxisView.superCall(this, 'render', axisModel, ecModel, api, payload);
 	        },
 
 	        /**
@@ -28414,7 +28995,7 @@
 	        _splitLine: function (axisModel, gridModel, labelInterval) {
 	            var axis = axisModel.axis;
 
-	            if (axis.isBlank()) {
+	            if (axis.scale.isBlank()) {
 	                return;
 	            }
 
@@ -28488,7 +29069,7 @@
 	        _splitArea: function (axisModel, gridModel, labelInterval) {
 	            var axis = axisModel.axis;
 
-	            if (axis.isBlank()) {
+	            if (axis.scale.isBlank()) {
 	                return;
 	            }
 
@@ -28559,91 +29140,24 @@
 	        }
 	    });
 
-	    AxisView.extend({
+	    CartesianAxisView.extend({
 	        type: 'xAxis'
 	    });
-	    AxisView.extend({
+	    CartesianAxisView.extend({
 	        type: 'yAxis'
 	    });
 
-	    /**
-	     * @inner
-	     */
-	    function layoutAxis(gridModel, axisModel) {
-	        var grid = gridModel.coordinateSystem;
-	        var axis = axisModel.axis;
-	        var layout = {};
-
-	        var rawAxisPosition = axis.position;
-	        var axisPosition = axis.onZero ? 'onZero' : rawAxisPosition;
-	        var axisDim = axis.dim;
-
-	        // [left, right, top, bottom]
-	        var rect = grid.getRect();
-	        var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height];
-
-	        var axisOffset = axisModel.get('offset') || 0;
-
-	        var posMap = {
-	            x: { top: rectBound[2] - axisOffset, bottom: rectBound[3] + axisOffset },
-	            y: { left: rectBound[0] - axisOffset, right: rectBound[1] + axisOffset }
-	        };
-
-	        posMap.x.onZero = Math.max(Math.min(getZero('y'), posMap.x.bottom), posMap.x.top);
-	        posMap.y.onZero = Math.max(Math.min(getZero('x'), posMap.y.right), posMap.y.left);
-
-	        function getZero(dim, val) {
-	            var theAxis = grid.getAxis(dim);
-	            return theAxis.toGlobalCoord(theAxis.dataToCoord(0));
-	        }
-
-	        // Axis position
-	        layout.position = [
-	            axisDim === 'y' ? posMap.y[axisPosition] : rectBound[0],
-	            axisDim === 'x' ? posMap.x[axisPosition] : rectBound[3]
-	        ];
-
-	        // Axis rotation
-	        layout.rotation = Math.PI / 2 * (axisDim === 'x' ? 0 : 1);
-
-	        // Tick and label direction, x y is axisDim
-	        var dirMap = {top: -1, bottom: 1, left: -1, right: 1};
-
-	        layout.labelDirection = layout.tickDirection = layout.nameDirection = dirMap[rawAxisPosition];
-	        if (axis.onZero) {
-	            layout.labelOffset = posMap[axisDim][rawAxisPosition] - posMap[axisDim].onZero;
-	        }
-
-	        if (axisModel.getModel('axisTick').get('inside')) {
-	            layout.tickDirection = -layout.tickDirection;
-	        }
-	        if (axisModel.getModel('axisLabel').get('inside')) {
-	            layout.labelDirection = -layout.labelDirection;
-	        }
-
-	        // Special label rotation
-	        var labelRotation = axisModel.getModel('axisLabel').get('rotate');
-	        layout.labelRotation = axisPosition === 'top' ? -labelRotation : labelRotation;
-
-	        // label interval when auto mode.
-	        layout.labelInterval = axis.getLabelInterval();
-
-	        // Over splitLine and splitArea
-	        layout.z2 = 1;
-
-	        return layout;
-	    }
 
 
 /***/ },
-/* 133 */
+/* 135 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    var zrUtil = __webpack_require__(4);
 	    var formatUtil = __webpack_require__(6);
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 	    var Model = __webpack_require__(12);
 	    var numberUtil = __webpack_require__(7);
 	    var remRadian = numberUtil.remRadian;
@@ -28696,7 +29210,7 @@
 	     * @param {string} [opt.axisLabelShow] default get from axisModel.
 	     * @param {string} [opt.axisName] default get from axisModel.
 	     * @param {number} [opt.axisNameAvailableWidth]
-	     * @param {number} [opt.labelRotation] by degree, default get from axisModel.
+	     * @param {number} [opt.labelRotate] by degree, default get from axisModel.
 	     * @param {number} [opt.labelInterval] Default label interval when label
 	     *                                     interval from model is null or 'auto'.
 	     * @param {number} [opt.strokeContainThreshold] Default label interval when label
@@ -28814,7 +29328,7 @@
 	            var axisModel = this.axisModel;
 	            var axis = axisModel.axis;
 
-	            if (!axisModel.get('axisTick.show') || axis.isBlank()) {
+	            if (!axisModel.get('axisTick.show') || axis.scale.isBlank()) {
 	                return;
 	            }
 
@@ -28884,7 +29398,7 @@
 	            var axis = axisModel.axis;
 	            var show = retrieve(opt.axisLabelShow, axisModel.get('axisLabel.show'));
 
-	            if (!show || axis.isBlank()) {
+	            if (!show || axis.scale.isBlank()) {
 	                return;
 	            }
 
@@ -28895,11 +29409,11 @@
 	            var labels = axisModel.getFormattedLabels();
 
 	            // Special label rotate.
-	            var labelRotation = retrieve(opt.labelRotation, labelModel.get('rotate')) || 0;
-	            // To radian.
-	            labelRotation = labelRotation * PI / 180;
+	            var labelRotation = (
+	                retrieve(opt.labelRotate, labelModel.get('rotate')) || 0
+	            ) * PI / 180;
 
-	            var labelLayout = innerTextLayout(opt, labelRotation, opt.labelDirection);
+	            var labelLayout = innerTextLayout(opt.rotation, labelRotation, opt.labelDirection);
 	            var categoryData = axisModel.get('data');
 
 	            var textEls = [];
@@ -28925,7 +29439,7 @@
 	                    tickCoord,
 	                    opt.labelOffset + opt.labelDirection * labelMargin
 	                ];
-	                var labelBeforeFormat = axis.scale.getLabel(tickVal);
+	                var labelStr = axis.scale.getLabel(tickVal);
 
 	                var textEl = new graphic.Text({
 
@@ -28935,9 +29449,21 @@
 	                    style: {
 	                        text: labels[index],
 	                        textAlign: itemTextStyleModel.get('align', true) || labelLayout.textAlign,
-	                        textVerticalAlign: itemTextStyleModel.get('baseline', true) || labelLayout.verticalAlign,
+	                        textVerticalAlign: itemTextStyleModel.get('baseline', true) || labelLayout.textVerticalAlign,
 	                        textFont: itemTextStyleModel.getFont(),
-	                        fill: typeof textColor === 'function' ? textColor(labelBeforeFormat) : textColor
+	                        fill: typeof textColor === 'function'
+	                            ? textColor(
+	                                // (1) In category axis with data zoom, tick is not the original
+	                                // index of axis.data. So tick should not be exposed to user
+	                                // in category axis.
+	                                // (2) Compatible with previous version, which always returns labelStr.
+	                                // But in interval scale labelStr is like '223,445', which maked
+	                                // user repalce ','. So we modify it to return original val but remain
+	                                // it as 'string' to avoid error in replacing.
+	                                axis.type === 'category' ? labelStr : axis.type === 'value' ? tickVal + '' : tickVal,
+	                                index
+	                            )
+	                            : textColor
 	                    },
 	                    position: pos,
 	                    rotation: labelLayout.rotation,
@@ -28949,7 +29475,7 @@
 	                if (triggerEvent) {
 	                    textEl.eventData = makeAxisEventDataBase(axisModel);
 	                    textEl.eventData.targetType = 'axisLabel';
-	                    textEl.eventData.value = labelBeforeFormat;
+	                    textEl.eventData.value = labelStr;
 	                }
 
 	                // FIXME
@@ -29032,7 +29558,7 @@
 
 	            if (nameLocation === 'middle') {
 	                labelLayout = innerTextLayout(
-	                    opt,
+	                    opt.rotation,
 	                    nameRotation != null ? nameRotation : opt.rotation, // Adapt to axis.
 	                    nameDirection
 	                );
@@ -29087,7 +29613,7 @@
 	                    fill: textStyleModel.getTextColor()
 	                        || axisModel.get('axisLine.lineStyle.color'),
 	                    textAlign: labelLayout.textAlign,
-	                    textVerticalAlign: labelLayout.verticalAlign
+	                    textVerticalAlign: labelLayout.textVerticalAlign
 	                },
 	                position: pos,
 	                rotation: labelLayout.rotation,
@@ -29122,23 +29648,33 @@
 	    };
 
 	    /**
-	     * @inner
+	     * @public
+	     * @static
+	     * @param {Object} opt
+	     * @param {number} axisRotation in radian
+	     * @param {number} textRotation in radian
+	     * @param {number} direction
+	     * @return {Object} {
+	     *  rotation, // according to axis
+	     *  textAlign,
+	     *  textVerticalAlign
+	     * }
 	     */
-	    function innerTextLayout(opt, textRotation, direction) {
-	        var rotationDiff = remRadian(textRotation - opt.rotation);
+	    var innerTextLayout = AxisBuilder.innerTextLayout = function (axisRotation, textRotation, direction) {
+	        var rotationDiff = remRadian(textRotation - axisRotation);
 	        var textAlign;
-	        var verticalAlign;
+	        var textVerticalAlign;
 
 	        if (isRadianAroundZero(rotationDiff)) { // Label is parallel with axis line.
-	            verticalAlign = direction > 0 ? 'top' : 'bottom';
+	            textVerticalAlign = direction > 0 ? 'top' : 'bottom';
 	            textAlign = 'center';
 	        }
 	        else if (isRadianAroundZero(rotationDiff - PI)) { // Label is inverse parallel with axis line.
-	            verticalAlign = direction > 0 ? 'bottom' : 'top';
+	            textVerticalAlign = direction > 0 ? 'bottom' : 'top';
 	            textAlign = 'center';
 	        }
 	        else {
-	            verticalAlign = 'middle';
+	            textVerticalAlign = 'middle';
 
 	            if (rotationDiff > 0 && rotationDiff < PI) {
 	                textAlign = direction > 0 ? 'right' : 'left';
@@ -29151,9 +29687,9 @@
 	        return {
 	            rotation: rotationDiff,
 	            textAlign: textAlign,
-	            verticalAlign: verticalAlign
+	            textVerticalAlign: textVerticalAlign
 	        };
-	    }
+	    };
 
 	    /**
 	     * @inner
@@ -29161,21 +29697,21 @@
 	    function endTextLayout(opt, textPosition, textRotate, extent) {
 	        var rotationDiff = remRadian(textRotate - opt.rotation);
 	        var textAlign;
-	        var verticalAlign;
+	        var textVerticalAlign;
 	        var inverse = extent[0] > extent[1];
 	        var onLeft = (textPosition === 'start' && !inverse)
 	            || (textPosition !== 'start' && inverse);
 
 	        if (isRadianAroundZero(rotationDiff - PI / 2)) {
-	            verticalAlign = onLeft ? 'bottom' : 'top';
+	            textVerticalAlign = onLeft ? 'bottom' : 'top';
 	            textAlign = 'center';
 	        }
 	        else if (isRadianAroundZero(rotationDiff - PI * 1.5)) {
-	            verticalAlign = onLeft ? 'top' : 'bottom';
+	            textVerticalAlign = onLeft ? 'top' : 'bottom';
 	            textAlign = 'center';
 	        }
 	        else {
-	            verticalAlign = 'middle';
+	            textVerticalAlign = 'middle';
 	            if (rotationDiff < PI * 1.5 && rotationDiff > PI / 2) {
 	                textAlign = onLeft ? 'left' : 'right';
 	            }
@@ -29187,7 +29723,7 @@
 	        return {
 	            rotation: rotationDiff,
 	            textAlign: textAlign,
-	            verticalAlign: verticalAlign
+	            textVerticalAlign: textVerticalAlign
 	        };
 	    }
 
@@ -29236,19 +29772,2212 @@
 
 
 /***/ },
-/* 134 */
+/* 136 */
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+
+	    var graphic = __webpack_require__(44);
+	    var BaseAxisPointer = __webpack_require__(137);
+	    var viewHelper = __webpack_require__(139);
+	    var cartesianAxisHelper = __webpack_require__(140);
+
+	    var CartesianAxisPointer = BaseAxisPointer.extend({
+
+	        /**
+	         * @override
+	         */
+	        makeElOption: function (elOption, value, axisModel, axisPointerModel, api) {
+	            var axis = axisModel.axis;
+	            var grid = axis.grid;
+	            var axisPointerType = axisPointerModel.get('type');
+	            var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent();
+	            var pixelValue = axis.toGlobalCoord(axis.dataToCoord(value, true));
+
+	            var elStyle = viewHelper.buildElStyle(axisPointerModel);
+	            var pointerOption = pointerShapeBuilder[axisPointerType](axis, pixelValue, otherExtent, elStyle);
+	            pointerOption.style = elStyle;
+
+	            elOption.graphicKey = pointerOption.type;
+	            elOption.pointer = pointerOption;
+
+	            var layoutInfo = cartesianAxisHelper.layout(grid.model, axisModel);
+	            viewHelper.buildCartesianSingleLabelElOption(
+	                value, elOption, layoutInfo, axisModel, axisPointerModel, api
+	            );
+	        },
+
+	        /**
+	         * @override
+	         */
+	        getHandleTransform: function (value, axisModel, axisPointerModel) {
+	            var layoutInfo = cartesianAxisHelper.layout(axisModel.axis.grid.model, axisModel, {
+	                labelInside: false
+	            });
+	            layoutInfo.labelMargin = axisPointerModel.get('handle.margin');
+	            return {
+	                position: viewHelper.getTransformedPosition(axisModel.axis, value, layoutInfo),
+	                rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0)
+	            };
+	        },
+
+	        /**
+	         * @override
+	         */
+	        updateHandleTransform: function (transform, delta, axisModel, axisPointerModel) {
+	            var axis = axisModel.axis;
+	            var grid = axis.grid;
+	            var axisExtent = axis.getGlobalExtent(true);
+	            var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent();
+	            var dimIndex = axis.dim === 'x' ? 0 : 1;
+
+	            var currPosition = transform.position;
+	            currPosition[dimIndex] += delta[dimIndex];
+	            currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]);
+	            currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]);
+
+	            var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2;
+	            var cursorPoint = [cursorOtherValue, cursorOtherValue];
+	            cursorPoint[dimIndex] = currPosition[dimIndex];
+
+	            // Make tooltip do not overlap axisPointer and in the middle of the grid.
+	            var tooltipOptions = [{verticalAlign: 'middle'}, {align: 'center'}];
+
+	            return {
+	                position: currPosition,
+	                rotation: transform.rotation,
+	                cursorPoint: cursorPoint,
+	                tooltipOption: tooltipOptions[dimIndex]
+	            };
+	        }
+
+	    });
+
+	    function getCartesian(grid, axis) {
+	        var opt = {};
+	        opt[axis.dim + 'AxisIndex'] = axis.index;
+	        return grid.getCartesian(opt);
+	    }
+
+	    var pointerShapeBuilder = {
+
+	        line: function (axis, pixelValue, otherExtent, elStyle) {
+	            var targetShape = viewHelper.makeLineShape(
+	                [pixelValue, otherExtent[0]],
+	                [pixelValue, otherExtent[1]],
+	                getAxisDimIndex(axis)
+	            );
+	            graphic.subPixelOptimizeLine({
+	                shape: targetShape,
+	                style: elStyle
+	            });
+	            return {
+	                type: 'Line',
+	                shape: targetShape
+	            };
+	        },
+
+	        shadow: function (axis, pixelValue, otherExtent, elStyle) {
+	            var bandWidth = axis.getBandWidth();
+	            var span = otherExtent[1] - otherExtent[0];
+	            return {
+	                type: 'Rect',
+	                shape: viewHelper.makeRectShape(
+	                    [pixelValue - bandWidth / 2, otherExtent[0]],
+	                    [bandWidth, span],
+	                    getAxisDimIndex(axis)
+	                )
+	            };
+	        }
+	    };
+
+	    function getAxisDimIndex(axis) {
+	        return axis.dim === 'x' ? 0 : 1;
+	    }
+
+	    module.exports = CartesianAxisPointer;
+
+
+/***/ },
+/* 137 */
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+
+	    var zrUtil = __webpack_require__(4);
+	    var clazzUtil = __webpack_require__(13);
+	    var graphic = __webpack_require__(44);
+	    var get = __webpack_require__(5).makeGetter();
+	    var axisPointerModelHelper = __webpack_require__(138);
+	    var eventTool = __webpack_require__(88);
+	    var throttle = __webpack_require__(81);
+
+	    var clone = zrUtil.clone;
+	    var bind = zrUtil.bind;
+
+	    /**
+	     * Base axis pointer class in 2D.
+	     * Implemenents {module:echarts/component/axis/IAxisPointer}.
+	     */
+	    function BaseAxisPointer () {
+	    }
+
+	    BaseAxisPointer.prototype = {
+
+	        /**
+	         * @private
+	         */
+	        _group: null,
+
+	        /**
+	         * @private
+	         */
+	        _lastGraphicKey: null,
+
+	        /**
+	         * @private
+	         */
+	        _handle: null,
+
+	        /**
+	         * @private
+	         */
+	        _dragging: false,
+
+	        /**
+	         * @private
+	         */
+	        _lastValue: null,
+
+	        /**
+	         * @private
+	         */
+	        _lastStatus: null,
+
+	        /**
+	         * @private
+	         */
+	        _payloadInfo: null,
+
+	        /**
+	         * In px, arbitrary value. Do not set too small,
+	         * no animation is ok for most cases.
+	         * @protected
+	         */
+	        animationThreshold: 15,
+
+	        /**
+	         * @implement
+	         */
+	        render: function (axisModel, axisPointerModel, api, forceRender) {
+	            var value = axisPointerModel.get('value');
+	            var status = axisPointerModel.get('status');
+
+	            // Bind them to `this`, not in closure, otherwise they will not
+	            // be replaced when user calling setOption in not merge mode.
+	            this._axisModel = axisModel;
+	            this._axisPointerModel = axisPointerModel;
+	            this._api = api;
+
+	            // Optimize: `render` will be called repeatly during mouse move.
+	            // So it is power consuming if performing `render` each time,
+	            // especially on mobile device.
+	            if (!forceRender
+	                && this._lastValue === value
+	                && this._lastStatus === status
+	            ) {
+	                return;
+	            }
+	            this._lastValue = value;
+	            this._lastStatus = status;
+
+	            var group = this._group;
+	            var handle = this._handle;
+
+	            if (!status || status === 'hide') {
+	                // Do not clear here, for animation better.
+	                group && group.hide();
+	                handle && handle.hide();
+	                return;
+	            }
+	            group && group.show();
+	            handle && handle.show();
+
+	            // Otherwise status is 'show'
+	            var elOption = {};
+	            this.makeElOption(elOption, value, axisModel, axisPointerModel, api);
+
+	            // Enable change axis pointer type.
+	            var graphicKey = elOption.graphicKey;
+	            if (graphicKey !== this._lastGraphicKey) {
+	                this.clear(api);
+	            }
+	            this._lastGraphicKey = graphicKey;
+
+	            var moveAnimation = this._moveAnimation =
+	                this.determineAnimation(axisModel, axisPointerModel);
+
+	            if (!group) {
+	                group = this._group = new graphic.Group();
+	                this.createPointerEl(group, elOption, axisModel, axisPointerModel);
+	                this.createLabelEl(group, elOption, axisModel, axisPointerModel);
+	                api.getZr().add(group);
+	            }
+	            else {
+	                var doUpdateProps = zrUtil.curry(updateProps, axisPointerModel, moveAnimation);
+	                this.updatePointerEl(group, elOption, doUpdateProps, axisPointerModel);
+	                this.updateLabelEl(group, elOption, doUpdateProps, axisPointerModel);
+	            }
+
+	            updateMandatoryProps(group, axisPointerModel, true);
+
+	            this._renderHandle(value);
+	        },
+
+	        /**
+	         * @implement
+	         */
+	        remove: function (api) {
+	            this.clear(api);
+	        },
+
+	        /**
+	         * @implement
+	         */
+	        dispose: function (api) {
+	            this.clear(api);
+	        },
+
+	        /**
+	         * @protected
+	         */
+	        determineAnimation: function (axisModel, axisPointerModel) {
+	            var animation = axisPointerModel.get('animation');
+	            var axis = axisModel.axis;
+	            var isCategoryAxis = axis.type === 'category';
+	            var useSnap = axisPointerModel.get('snap');
+
+	            // Value axis without snap always do not snap.
+	            if (!useSnap && !isCategoryAxis) {
+	                return false;
+	            }
+
+	            if (animation === 'auto' || animation == null) {
+	                var animationThreshold = this.animationThreshold;
+	                if (isCategoryAxis && axis.getBandWidth() > animationThreshold) {
+	                    return true;
+	                }
+
+	                // It is important to auto animation when snap used. Consider if there is
+	                // a dataZoom, animation will be disabled when too many points exist, while
+	                // it will be enabled for better visual effect when little points exist.
+	                if (useSnap) {
+	                    var seriesDataCount = axisPointerModelHelper.getAxisInfo(axisModel).seriesDataCount;
+	                    var axisExtent = axis.getExtent();
+	                    // Approximate band width
+	                    return Math.abs(axisExtent[0] - axisExtent[1]) / seriesDataCount > animationThreshold;
+	                }
+
+	                return false;
+	            }
+
+	            return animation === true;
+	        },
+
+	        /**
+	         * add {pointer, label, graphicKey} to elOption
+	         * @protected
+	         */
+	        makeElOption: function (elOption, value, axisModel, axisPointerModel, api) {
+	            // Shoule be implemenented by sub-class.
+	        },
+
+	        /**
+	         * @protected
+	         */
+	        createPointerEl: function (group, elOption, axisModel, axisPointerModel) {
+	            var pointerOption = elOption.pointer;
+	            var pointerEl = get(group).pointerEl = new graphic[pointerOption.type](
+	                clone(elOption.pointer)
+	            );
+	            group.add(pointerEl);
+	        },
+
+	        /**
+	         * @protected
+	         */
+	        createLabelEl: function (group, elOption, axisModel, axisPointerModel) {
+	            var labelEl = get(group).labelEl = new graphic.Rect(
+	                clone(elOption.label)
+	            );
+
+	            group.add(labelEl);
+	            updateLabelShowHide(labelEl, axisPointerModel);
+	        },
+
+	        /**
+	         * @protected
+	         */
+	        updatePointerEl: function (group, elOption, updateProps) {
+	            var pointerEl = get(group).pointerEl;
+	            if (pointerEl) {
+	                pointerEl.setStyle(elOption.pointer.style);
+	                updateProps(pointerEl, {shape: elOption.pointer.shape});
+	            }
+	        },
+
+	        /**
+	         * @protected
+	         */
+	        updateLabelEl: function (group, elOption, updateProps, axisPointerModel) {
+	            var labelEl = get(group).labelEl;
+	            if (labelEl) {
+	                labelEl.setStyle(elOption.label.style);
+	                updateProps(labelEl, {
+	                    // Consider text length change in vertical axis, animation should
+	                    // be used on shape, otherwise the effect will be weird.
+	                    shape: elOption.label.shape,
+	                    position: elOption.label.position
+	                });
+
+	                updateLabelShowHide(labelEl, axisPointerModel);
+	            }
+	        },
+
+	        /**
+	         * @private
+	         */
+	        _renderHandle: function (value) {
+	            if (this._dragging || !this.updateHandleTransform) {
+	                return;
+	            }
+
+	            var axisPointerModel = this._axisPointerModel;
+	            var zr = this._api.getZr();
+	            var handle = this._handle;
+	            var handleModel = axisPointerModel.getModel('handle');
+
+	            var status = axisPointerModel.get('status');
+	            if (!handleModel.get('show') || !status || status === 'hide') {
+	                handle && zr.remove(handle);
+	                this._handle = null;
+	                return;
+	            }
+
+	            var isInit;
+	            if (!this._handle) {
+	                isInit = true;
+	                handle = this._handle = createIcon(handleModel, {
+	                    onmousemove: function (e) {
+	                        // Fot mobile devicem, prevent screen slider on the button.
+	                        eventTool.stop(e.event);
+	                    },
+	                    onmousedown: bind(this._onHandleDragMove, this, 0, 0),
+	                    drift: bind(this._onHandleDragMove, this),
+	                    ondragend: bind(this._onHandleDragEnd, this)
+	                });
+	                zr.add(handle);
+	            }
+
+	            updateMandatoryProps(handle, axisPointerModel, false);
+
+	            // update style
+	            var includeStyles = [
+	                'color', 'borderColor', 'borderWidth', 'opacity',
+	                'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY'
+	            ];
+	            handle.setStyle(handleModel.getItemStyle(null, includeStyles));
+
+	            // update position
+	            var handleSize = handleModel.get('size');
+	            if (!zrUtil.isArray(handleSize)) {
+	                handleSize = [handleSize, handleSize];
+	            }
+	            handle.attr('scale', [handleSize[0] / 2, handleSize[1] / 2]);
+
+	            throttle.createOrUpdate(
+	                this,
+	                '_doDispatchAxisPointer',
+	                handleModel.get('throttle') || 0,
+	                'fixRate'
+	            );
+
+	            this._moveHandleToValue(value, isInit);
+	        },
+
+	        /**
+	         * @private
+	         */
+	        _moveHandleToValue: function (value, isInit) {
+	            updateProps(
+	                this._axisPointerModel,
+	                !isInit && this._moveAnimation,
+	                this._handle,
+	                getHandleTransProps(this.getHandleTransform(
+	                    value, this._axisModel, this._axisPointerModel
+	                ))
+	            );
+	        },
+
+	        /**
+	         * @private
+	         */
+	        _onHandleDragMove: function (dx, dy) {
+	            var handle = this._handle;
+	            if (!handle) {
+	                return;
+	            }
+
+	            this._dragging = true;
+
+	            // Persistent for throttle.
+	            var trans = this.updateHandleTransform(
+	                getHandleTransProps(handle),
+	                [dx, dy],
+	                this._axisModel,
+	                this._axisPointerModel
+	            );
+	            this._payloadInfo = trans;
+
+	            handle.stopAnimation();
+	            handle.attr(getHandleTransProps(trans));
+	            get(handle).lastProp = null;
+
+	            this._doDispatchAxisPointer();
+	        },
+
+	        /**
+	         * Throttled method.
+	         * @private
+	         */
+	        _doDispatchAxisPointer: function () {
+	            var handle = this._handle;
+	            if (!handle) {
+	                return;
+	            }
+
+	            var payloadInfo = this._payloadInfo;
+	            var payload = {
+	                type: 'updateAxisPointer',
+	                x: payloadInfo.cursorPoint[0],
+	                y: payloadInfo.cursorPoint[1],
+	                tooltipOption: payloadInfo.tooltipOption,
+	                highDownKey: 'axisPointerHandle'
+	            };
+	            var axis = this._axisModel.axis;
+	            payload[axis.dim + 'AxisId'] = this._axisModel.id;
+	            this._api.dispatchAction(payload);
+	        },
+
+	        /**
+	         * @private
+	         */
+	        _onHandleDragEnd: function (moveAnimation) {
+	            this._dragging = false;
+	            var handle = this._handle;
+	            if (!handle) {
+	                return;
+	            }
+
+	            var value = this._axisPointerModel.get('value');
+	            // Consider snap or categroy axis, handle may be not consistent with
+	            // axisPointer. So move handle to align the exact value position when
+	            // drag ended.
+	            this._moveHandleToValue(value);
+
+	            // For the effect: tooltip will be shown when finger holding on handle
+	            // button, and will be hidden after finger left handle button.
+	            this._api.dispatchAction({
+	                type: 'hideTip'
+	            });
+	        },
+
+	        /**
+	         * Should be implemenented by sub-class if support `handle`.
+	         * @protected
+	         * @param {number} value
+	         * @param {module:echarts/model/Model} axisModel
+	         * @param {module:echarts/model/Model} axisPointerModel
+	         * @return {Object} {position: [x, y], rotation: 0}
+	         */
+	        getHandleTransform: null,
+
+	        /**
+	         * * Should be implemenented by sub-class if support `handle`.
+	         * @protected
+	         * @param {Object} transform {position, rotation}
+	         * @param {Array.<number>} delta [dx, dy]
+	         * @param {module:echarts/model/Model} axisModel
+	         * @param {module:echarts/model/Model} axisPointerModel
+	         * @return {Object} {position: [x, y], rotation: 0, cursorPoint: [x, y]}
+	         */
+	        updateHandleTransform: null,
+
+	        /**
+	         * @private
+	         */
+	        clear: function (api) {
+	            this._lastValue = null;
+	            this._lastStatus = null;
+
+	            var zr = api.getZr();
+	            var group = this._group;
+	            var handle = this._handle;
+	            if (zr && group) {
+	                this._lastGraphicKey = null;
+	                group && zr.remove(group);
+	                handle && zr.remove(handle);
+	                this._group = null;
+	                this._handle = null;
+	                this._payloadInfo = null;
+	            }
+	        },
+
+	        /**
+	         * @protected
+	         */
+	        doClear: function () {
+	            // Implemented by sub-class if necessary.
+	        },
+
+	        /**
+	         * @protected
+	         * @param {Array.<number>} xy
+	         * @param {Array.<number>} wh
+	         * @param {number} [xDimIndex=0] or 1
+	         */
+	        buildLabel: function (xy, wh, xDimIndex) {
+	            xDimIndex = xDimIndex || 0;
+	            return {
+	                x: xy[xDimIndex],
+	                y: xy[1 - xDimIndex],
+	                width: wh[xDimIndex],
+	                height: wh[1 - xDimIndex]
+	            };
+	        }
+	    };
+
+	    BaseAxisPointer.prototype.constructor = BaseAxisPointer;
+
+
+	    function updateProps(animationModel, moveAnimation, el, props) {
+	        // Animation optimize.
+	        if (!propsEqual(get(el).lastProp, props)) {
+	            get(el).lastProp = props;
+	            moveAnimation
+	                ? graphic.updateProps(el, props, animationModel)
+	                : (el.stopAnimation(), el.attr(props));
+	        }
+	    }
+
+	    function propsEqual(lastProps, newProps) {
+	        if (zrUtil.isObject(lastProps) && zrUtil.isObject(newProps)) {
+	            var equals = true;
+	            zrUtil.each(newProps, function (item, key) {
+	                equals &= propsEqual(lastProps[key], item);
+	            });
+	            return !!equals;
+	        }
+	        else {
+	            return lastProps === newProps;
+	        }
+	    }
+
+	    function updateLabelShowHide(labelEl, axisPointerModel) {
+	        labelEl[axisPointerModel.get('label.show') ? 'show' : 'hide']();
+	    }
+
+	    function getHandleTransProps(trans) {
+	        return {
+	            position: trans.position.slice(),
+	            rotation: trans.rotation || 0
+	        };
+	    }
+
+	    function createIcon(handleModel, handlers) {
+	        var iconStr = handleModel.get('icon');
+	        var style = {
+	            x: -1, y: -1, width: 2, height: 2
+	        };
+	        var opt = zrUtil.extend({
+	            style: {
+	                strokeNoScale: true
+	            },
+	            rectHover: true,
+	            cursor: 'move',
+	            draggable: true
+	        }, handlers);
+
+	        return iconStr.indexOf('image://') === 0
+	            ? (
+	                style.image = iconStr.slice(8),
+	                opt.style = style,
+	                new graphic.Image(opt)
+	            )
+	            : graphic.makePath(
+	                iconStr.replace('path://', ''),
+	                opt,
+	                style,
+	                'center'
+	            );
+	    }
+
+	    function updateMandatoryProps(group, axisPointerModel, silent) {
+	        var z = axisPointerModel.get('z');
+	        var zlevel = axisPointerModel.get('zlevel');
+
+	        group && group.traverse(function (el) {
+	            if (el.type !== 'group') {
+	                z != null && (el.z = z);
+	                zlevel != null && (el.zlevel = zlevel);
+	                el.silent = silent;
+	            }
+	        });
+	    }
+
+	    clazzUtil.enableClassExtend(BaseAxisPointer);
+
+	    module.exports = BaseAxisPointer;
+
+
+/***/ },
+/* 138 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+
+	    var zrUtil = __webpack_require__(4);
+	    var Model = __webpack_require__(12);
+	    var each = zrUtil.each;
+	    var curry = zrUtil.curry;
+
+	    var helper = {};
+
+	    // Build axisPointerModel, mergin tooltip.axisPointer model for each axis.
+	    // allAxesInfo should be updated when setOption performed.
+	    helper.collect = function (ecModel, api) {
+	        var result = {
+	            /**
+	             * key: makeKey(axis.model)
+	             * value: {
+	             *      axis,
+	             *      coordSys,
+	             *      axisPointerModel,
+	             *      triggerTooltip,
+	             *      involveSeries,
+	             *      snap,
+	             *      seriesModels,
+	             *      seriesDataCount
+	             * }
+	             */
+	            axesInfo: {},
+	            seriesInvolved: false,
+	            /**
+	             * key: makeKey(coordSys.model)
+	             * value: Object: key makeKey(axis.model), value: axisInfo
+	             */
+	            coordSysAxesInfo: {},
+	            coordSysMap: {}
+	        };
+
+	        collectAxesInfo(result, ecModel, api);
+
+	        // Check seriesInvolved for performance, in case too many series in some chart.
+	        result.seriesInvolved && collectSeriesInfo(result, ecModel);
+
+	        return result;
+	    };
+
+	    function collectAxesInfo(result, ecModel, api) {
+	        var globalTooltipModel = ecModel.getComponent('tooltip');
+	        var globalAxisPointerModel = ecModel.getComponent('axisPointer');
+	        // links can only be set on global.
+	        var linksOption = globalAxisPointerModel.get('link', true) || [];
+	        var linkGroups = [];
+
+	        // Collect axes info.
+	        each(api.getCoordinateSystems(), function (coordSys) {
+	            // Some coordinate system do not support axes, like geo.
+	            if (!coordSys.axisPointerEnabled) {
+	                return;
+	            }
+
+	            var coordSysKey = makeKey(coordSys.model);
+	            var axesInfoInCoordSys = result.coordSysAxesInfo[coordSysKey] = {};
+	            result.coordSysMap[coordSysKey] = coordSys;
+
+	            // Set tooltip (like 'cross') is a convienent way to show axisPointer
+	            // for user. So we enable seting tooltip on coordSys model.
+	            var coordSysModel = coordSys.model;
+	            var baseTooltipModel = coordSysModel.getModel('tooltip', globalTooltipModel);
+
+	            each(coordSys.getAxes(), curry(saveTooltipAxisInfo, false, null));
+
+	            // If axis tooltip used, choose tooltip axis for each coordSys.
+	            // Notice this case: coordSys is `grid` but not `cartesian2D` here.
+	            if (coordSys.getTooltipAxes
+	                && globalTooltipModel
+	                // If tooltip.showContent is set as false, tooltip will not
+	                // show but axisPointer will show as normal.
+	                && baseTooltipModel.get('show')
+	            ) {
+	                // Compatible with previous logic. But series.tooltip.trigger: 'axis'
+	                // or series.data[n].tooltip.trigger: 'axis' are not support any more.
+	                var triggerAxis = baseTooltipModel.get('trigger') === 'axis';
+	                var cross = baseTooltipModel.get('axisPointer.type') === 'cross';
+	                var tooltipAxes = coordSys.getTooltipAxes(baseTooltipModel.get('axisPointer.axis'));
+	                if (triggerAxis || cross) {
+	                    each(tooltipAxes.baseAxes, curry(
+	                        saveTooltipAxisInfo, cross ? 'cross' : true, triggerAxis
+	                    ));
+	                }
+	                if (cross) {
+	                    each(tooltipAxes.otherAxes, curry(saveTooltipAxisInfo, 'cross', false));
+	                }
+	            }
+
+	            // fromTooltip: true | false | 'cross'
+	            // triggerTooltip: true | false | null
+	            function saveTooltipAxisInfo(fromTooltip, triggerTooltip, axis) {
+	                var axisPointerModel = axis.model.getModel('axisPointer', globalAxisPointerModel);
+
+	                var axisPointerShow = axisPointerModel.get('show');
+	                if (!axisPointerShow || (
+	                    axisPointerShow === 'auto'
+	                    && !fromTooltip
+	                    && !isHandleTrigger(axisPointerModel)
+	                )) {
+	                    return;
+	                }
+
+	                if (triggerTooltip == null) {
+	                    triggerTooltip = axisPointerModel.get('triggerTooltip');
+	                }
+
+	                axisPointerModel = fromTooltip
+	                    ? makeAxisPointerModel(
+	                        axis, baseTooltipModel, globalAxisPointerModel, ecModel,
+	                        fromTooltip, triggerTooltip
+	                    )
+	                    : axisPointerModel;
+
+	                var snap = axisPointerModel.get('snap');
+	                var key = makeKey(axis.model);
+	                var involveSeries = triggerTooltip || snap || axis.type === 'category';
+
+	                // If result.axesInfo[key] exist, override it (tooltip has higher priority).
+	                var axisInfo = result.axesInfo[key] = {
+	                    key: key,
+	                    axis: axis,
+	                    coordSys: coordSys,
+	                    axisPointerModel: axisPointerModel,
+	                    triggerTooltip: triggerTooltip,
+	                    involveSeries: involveSeries,
+	                    snap: snap,
+	                    useHandle: isHandleTrigger(axisPointerModel),
+	                    seriesModels: []
+	                };
+	                axesInfoInCoordSys[key] = axisInfo;
+	                result.seriesInvolved |= involveSeries;
+
+	                var groupIndex = getLinkGroupIndex(linksOption, axis);
+	                if (groupIndex != null) {
+	                    var linkGroup = linkGroups[groupIndex] || (linkGroups[groupIndex] = {axesInfo: {}});
+	                    linkGroup.axesInfo[key] = axisInfo;
+	                    linkGroup.mapper = linksOption[groupIndex].mapper;
+	                    axisInfo.linkGroup = linkGroup;
+	                }
+	            }
+	        });
+	    }
+
+	    function makeAxisPointerModel(
+	        axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip
+	    ) {
+	        var tooltipAxisPointerModel = baseTooltipModel.getModel('axisPointer');
+	        var volatileOption = {};
+
+	        each(
+	            [
+	                'type', 'snap', 'lineStyle', 'shadowStyle', 'label',
+	                'animation', 'animationDurationUpdate', 'animationEasingUpdate', 'z'
+	            ],
+	            function (field) {
+	                volatileOption[field] = zrUtil.clone(tooltipAxisPointerModel.get(field));
+	            }
+	        );
+
+	        // category axis do not auto snap, otherwise some tick that do not
+	        // has value can not be hovered. value/time/log axis default snap if
+	        // triggered from tooltip and trigger tooltip.
+	        volatileOption.snap = axis.type !== 'category' && !!triggerTooltip;
+
+	        // Compatibel with previous behavior, tooltip axis do not show label by default.
+	        // Only these properties can be overrided from tooltip to axisPointer.
+	        if (tooltipAxisPointerModel.get('type') === 'cross') {
+	            volatileOption.type = 'line';
+	        }
+	        var labelOption = volatileOption.label || (volatileOption.label = {});
+	        // Follow the convention, do not show label when triggered by tooltip by default.
+	        labelOption.show == null && (labelOption.show = false);
+
+	        if (fromTooltip === 'cross') {
+	            // When 'cross', both axes show labels.
+	            labelOption.show = true;
+	            // If triggerTooltip, this is a base axis, which should better not use cross style
+	            // (cross style is dashed by default)
+	            if (!triggerTooltip) {
+	                var crossStyle = volatileOption.lineStyle = tooltipAxisPointerModel.get('crossStyle');
+	                crossStyle && zrUtil.defaults(
+	                    labelOption.textStyle || (labelOption.textStyle = {}),
+	                    crossStyle.textStyle
+	                );
+	            }
+	        }
+
+	        return axis.model.getModel(
+	            'axisPointer',
+	            new Model(volatileOption, globalAxisPointerModel, ecModel)
+	        );
+	    }
+
+	    function collectSeriesInfo(result, ecModel) {
+	        // Prepare data for axis trigger
+	        ecModel.eachSeries(function (seriesModel) {
+
+	            // Notice this case: this coordSys is `cartesian2D` but not `grid`.
+	            var coordSys = seriesModel.coordinateSystem;
+	            var seriesTooltipTrigger = seriesModel.get('tooltip.trigger', true);
+	            if (!coordSys
+	                || seriesTooltipTrigger === 'none'
+	                || seriesTooltipTrigger === false
+	                || seriesTooltipTrigger === 'item'
+	                || seriesModel.get('axisPointer.show', true) === false
+	            ) {
+	                return;
+	            }
+
+	            each(result.coordSysAxesInfo[makeKey(coordSys.model)], function (axisInfo) {
+	                var axis = axisInfo.axis;
+	                if (coordSys.getAxis(axis.dim) === axis) {
+	                    axisInfo.seriesModels.push(seriesModel);
+	                    axisInfo.seriesDataCount == null && (axisInfo.seriesDataCount = 0);
+	                    axisInfo.seriesDataCount += seriesModel.getData().count();
+	                }
+	            });
+
+	        }, this);
+	    }
+
+	    /**
+	     * For example:
+	     * {
+	     *     axisPointer: {
+	     *         links: [{
+	     *             xAxisIndex: [2, 4],
+	     *             yAxisIndex: 'all'
+	     *         }, {
+	     *             xAxisId: ['a5', 'a7'],
+	     *             xAxisName: 'xxx'
+	     *         }]
+	     *     }
+	     * }
+	     */
+	    function getLinkGroupIndex(linksOption, axis) {
+	        var axisModel = axis.model;
+	        var dim = axis.dim;
+	        for (var i = 0; i < linksOption.length; i++) {
+	            var linkOption = linksOption[i] || {};
+	            if (checkPropInLink(linkOption[dim + 'AxisId'], axisModel.id)
+	                || checkPropInLink(linkOption[dim + 'AxisIndex'], axisModel.componentIndex)
+	                || checkPropInLink(linkOption[dim + 'AxisName'], axisModel.name)
+	            ) {
+	                return i;
+	            }
+	        }
+	    }
+
+	    function checkPropInLink(linkPropValue, axisPropValue) {
+	        return linkPropValue === 'all'
+	            || (zrUtil.isArray(linkPropValue) && zrUtil.indexOf(linkPropValue, axisPropValue) >= 0)
+	            || linkPropValue === axisPropValue;
+	    }
+
+	    helper.fixValue = function (axisModel) {
+	        var axisInfo = helper.getAxisInfo(axisModel);
+	        if (!axisInfo) {
+	            return;
+	        }
+
+	        var axisPointerModel = axisInfo.axisPointerModel;
+	        var scale = axisInfo.axis.scale;
+	        var option = axisPointerModel.option;
+	        var status = axisPointerModel.get('status');
+	        var value = axisPointerModel.get('value');
+
+	        // Parse init value for category and time axis.
+	        if (value != null) {
+	            value = scale.parse(value);
+	        }
+
+	        var useHandle = isHandleTrigger(axisPointerModel);
+	        // If `handle` used, `axisPointer` will always be displayed, so value
+	        // and status should be initialized.
+	        if (status == null) {
+	            option.status = useHandle ? 'show' : 'hide';
+	        }
+
+	        var extent = scale.getExtent().slice();
+	        extent[0] > extent[1] && extent.reverse();
+
+	        if (// Pick a value on axis when initializing.
+	            value == null
+	            // If both `handle` and `dataZoom` are used, value may be out of axis extent,
+	            // where we should re-pick a value to keep `handle` displaying normally.
+	            || value > extent[1]
+	        ) {
+	            // Make handle displayed on the end of the axis when init, which looks better.
+	            value = extent[1];
+	        }
+	        if (value < extent[0]) {
+	            value = extent[0];
+	        }
+
+	        option.value = value;
+
+	        if (useHandle) {
+	            option.status = axisInfo.axis.scale.isBlank() ? 'hide' : 'show';
+	        }
+	    };
+
+	    helper.getAxisInfo = function (axisModel) {
+	        var coordSysAxesInfo = axisModel.ecModel.getComponent('axisPointer').coordSysAxesInfo;
+	        return coordSysAxesInfo && coordSysAxesInfo.axesInfo[makeKey(axisModel)];
+	    };
+
+	    helper.getAxisPointerModel = function (axisModel) {
+	        var axisInfo = helper.getAxisInfo(axisModel);
+	        return axisInfo && axisInfo.axisPointerModel;
+	    };
+
+	    function isHandleTrigger(axisPointerModel) {
+	        return !!axisPointerModel.get('handle.show');
+	    }
+
+	    /**
+	     * @param {module:echarts/model/Model} model
+	     * @return {string} unique key
+	     */
+	    var makeKey = helper.makeKey = function (model) {
+	        return model.type + '||' + model.id;
+	    };
+
+	    module.exports = helper;
+
+
+
+/***/ },
+/* 139 */
+/***/ function(module, exports, __webpack_require__) {
+
+	'use strict';
+
+
+	    var zrUtil = __webpack_require__(4);
+	    var graphic = __webpack_require__(44);
+	    var textContain = __webpack_require__(8);
+	    var formatUtil = __webpack_require__(6);
+	    var matrix = __webpack_require__(11);
+	    var axisHelper = __webpack_require__(105);
+	    var AxisBuilder = __webpack_require__(135);
+
+	    var helper = {};
+
+	    /**
+	     * @param {module:echarts/model/Model} axisPointerModel
+	     */
+	    helper.buildElStyle = function (axisPointerModel) {
+	        var axisPointerType = axisPointerModel.get('type');
+	        var styleModel = axisPointerModel.getModel(axisPointerType + 'Style');
+	        var style;
+	        if (axisPointerType === 'line') {
+	            style = styleModel.getLineStyle();
+	            style.fill = null;
+	        }
+	        else if (axisPointerType === 'shadow') {
+	            style = styleModel.getAreaStyle();
+	            style.stroke = null;
+	        }
+	        return style;
+	    };
+
+	    /**
+	     * @param {Function} labelPos {align, verticalAlign, position}
+	     */
+	    helper.buildLabelElOption = function (
+	        elOption, axisModel, axisPointerModel, api, labelPos
+	    ) {
+	        var value = axisPointerModel.get('value');
+	        var text = helper.getValueLabel(
+	            value, axisModel.axis, axisModel.ecModel,
+	            axisPointerModel.get('seriesDataIndices'),
+	            {
+	                precision: axisPointerModel.get('label.precision'),
+	                formatter: axisPointerModel.get('label.formatter')
+	            }
+	        );
+	        var labelModel = axisPointerModel.getModel('label');
+	        var textStyleModel = labelModel.getModel('textStyle');
+	        var paddings = formatUtil.normalizeCssArray(labelModel.get('padding') || 0);
+
+	        var font = textStyleModel.getFont();
+	        var textRect = textContain.getBoundingRect(
+	            text, font, labelPos.textAlign, labelPos.textBaseline
+	        );
+
+	        var position = labelPos.position;
+	        var width = textRect.width + paddings[1] + paddings[3];
+	        var height = textRect.height + paddings[0] + paddings[2];
+
+	        // Adjust by align.
+	        var align = labelPos.align;
+	        align === 'right' && (position[0] -= width);
+	        align === 'center' && (position[0] -= width / 2);
+	        var verticalAlign = labelPos.verticalAlign;
+	        verticalAlign === 'bottom' && (position[1] -= height);
+	        verticalAlign === 'middle' && (position[1] -= height / 2);
+
+	        // Not overflow ec container
+	        confineInContainer(position, width, height, api);
+
+	        var bgColor = labelModel.get('backgroundColor');
+	        if (!bgColor || bgColor === 'auto') {
+	            bgColor = axisModel.get('axisLine.lineStyle.color');
+	        }
+
+	        elOption.label = {
+	            shape: {x: 0, y: 0, width: width, height: height, r: labelModel.get('borderRadius')},
+	            position: position.slice(),
+	            style: {
+	                text: text,
+	                textFont: font,
+	                textFill: textStyleModel.getTextColor(),
+	                textPosition: 'inside',
+	                fill: bgColor,
+	                stroke: labelModel.get('borderColor') || 'transparent',
+	                lineWidth: labelModel.get('borderWidth') || 0,
+	                shadowBlur: labelModel.get('shadowBlur'),
+	                shadowColor: labelModel.get('shadowColor'),
+	                shadowOffsetX: labelModel.get('shadowOffsetX'),
+	                shadowOffsetY: labelModel.get('shadowOffsetY')
+	            }
+	        };
+	    };
+
+	    // Do not overflow ec container
+	    function confineInContainer(position, width, height, api) {
+	        var viewWidth = api.getWidth();
+	        var viewHeight = api.getHeight();
+	        position[0] = Math.min(position[0] + width, viewWidth) - width;
+	        position[1] = Math.min(position[1] + height, viewHeight) - height;
+	        position[0] = Math.max(position[0], 0);
+	        position[1] = Math.max(position[1], 0);
+	    }
+
+	    /**
+	     * @param {number} value
+	     * @param {module:echarts/coord/Axis} axis
+	     * @param {module:echarts/model/Global} ecModel
+	     * @param {Object} opt
+	     * @param {Array.<Object>} seriesDataIndices
+	     * @param {number|string} opt.precision 'auto' or a number
+	     * @param {string|Function} opt.formatter label formatter
+	     */
+	    helper.getValueLabel = function (value, axis, ecModel, seriesDataIndices, opt) {
+	        var text = axis.scale.getLabel(
+	            // Use 'pad' to try to fix width, which helps to debounce when when moving label.
+	            value, {precision: opt.precision, pad: true}
+	        );
+	        var formatter = opt.formatter;
+
+	        if (formatter) {
+	            var params = {
+	                value: axisHelper.getAxisRawValue(axis, value),
+	                seriesData: []
+	            };
+	            zrUtil.each(seriesDataIndices, function (idxItem) {
+	                var series = ecModel.getSeriesByIndex(idxItem.seriesIndex);
+	                var dataIndex = idxItem.dataIndexInside;
+	                var dataParams = series && series.getDataParams(dataIndex);
+	                dataParams && params.seriesData.push(dataParams);
+	            });
+
+	            if (zrUtil.isString(formatter)) {
+	                text = formatter.replace('{value}', text);
+	            }
+	            else if (zrUtil.isFunction(formatter)) {
+	                text = formatter(params);
+	            }
+	        }
+
+	        return text;
+	    };
+
+	    /**
+	     * @param {module:echarts/coord/Axis} axis
+	     * @param {number} value
+	     * @param {Object} layoutInfo {
+	     *  rotation, position, labelOffset, labelDirection, labelMargin
+	     * }
+	     */
+	    helper.getTransformedPosition = function (axis, value, layoutInfo) {
+	        var transform = matrix.create();
+	        matrix.rotate(transform, transform, layoutInfo.rotation);
+	        matrix.translate(transform, transform, layoutInfo.position);
+
+	        return graphic.applyTransform([
+	            axis.dataToCoord(value),
+	            (layoutInfo.labelOffset || 0)
+	                + (layoutInfo.labelDirection || 1) * (layoutInfo.labelMargin || 0)
+	        ], transform);
+	    };
+
+	    helper.buildCartesianSingleLabelElOption = function (
+	        value, elOption, layoutInfo, axisModel, axisPointerModel, api
+	    ) {
+	        var textLayout = AxisBuilder.innerTextLayout(
+	            layoutInfo.rotation, 0, layoutInfo.labelDirection
+	        );
+	        layoutInfo.labelMargin = axisPointerModel.get('label.margin');
+	        helper.buildLabelElOption(elOption, axisModel, axisPointerModel, api, {
+	            position: helper.getTransformedPosition(axisModel.axis, value, layoutInfo),
+	            align: textLayout.textAlign,
+	            verticalAlign: textLayout.textVerticalAlign
+	        });
+	    };
+
+	    /**
+	     * @param {Array.<number>} p1
+	     * @param {Array.<number>} p2
+	     * @param {number} [xDimIndex=0] or 1
+	     */
+	    helper.makeLineShape = function (p1, p2, xDimIndex) {
+	        xDimIndex = xDimIndex || 0;
+	        return {
+	            x1: p1[xDimIndex],
+	            y1: p1[1 - xDimIndex],
+	            x2: p2[xDimIndex],
+	            y2: p2[1 - xDimIndex]
+	        };
+	    };
+
+	    /**
+	     * @param {Array.<number>} xy
+	     * @param {Array.<number>} wh
+	     * @param {number} [xDimIndex=0] or 1
+	     */
+	    helper.makeRectShape = function (xy, wh, xDimIndex) {
+	        xDimIndex = xDimIndex || 0;
+	        return {
+	            x: xy[xDimIndex],
+	            y: xy[1 - xDimIndex],
+	            width: wh[xDimIndex],
+	            height: wh[1 - xDimIndex]
+	        };
+	    };
+
+	    helper.makeSectorShape = function (cx, cy, r0, r, startAngle, endAngle) {
+	        return {
+	            cx: cx,
+	            cy: cy,
+	            r0: r0,
+	            r: r,
+	            startAngle: startAngle,
+	            endAngle: endAngle,
+	            clockwise: true
+	        };
+	    };
+
+	    module.exports = helper;
+
+
+/***/ },
+/* 140 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    var zrUtil = __webpack_require__(4);
 
-	    __webpack_require__(114);
+	    var helper = {};
 
-	    __webpack_require__(135);
-	    __webpack_require__(137);
+	    /**
+	     * @param {Object} opt {labelInside}
+	     * @return {Object} {
+	     *  position, rotation, labelDirection, labelOffset,
+	     *  tickDirection, labelRotate, labelInterval, z2
+	     * }
+	     */
+	    helper.layout = function (gridModel, axisModel, opt) {
+	        opt = opt || {};
+	        var grid = gridModel.coordinateSystem;
+	        var axis = axisModel.axis;
+	        var layout = {};
 
-	    var barLayoutGrid = __webpack_require__(140);
+	        var rawAxisPosition = axis.position;
+	        var axisPosition = axis.onZero ? 'onZero' : rawAxisPosition;
+	        var axisDim = axis.dim;
+
+	        // [left, right, top, bottom]
+	        var rect = grid.getRect();
+	        var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height];
+
+	        var axisOffset = axisModel.get('offset') || 0;
+
+	        var posMap = {
+	            x: { top: rectBound[2] - axisOffset, bottom: rectBound[3] + axisOffset },
+	            y: { left: rectBound[0] - axisOffset, right: rectBound[1] + axisOffset }
+	        };
+
+	        posMap.x.onZero = Math.max(Math.min(getZero('y'), posMap.x.bottom), posMap.x.top);
+	        posMap.y.onZero = Math.max(Math.min(getZero('x'), posMap.y.right), posMap.y.left);
+
+	        function getZero(dim, val) {
+	            var theAxis = grid.getAxis(dim);
+	            return theAxis.toGlobalCoord(theAxis.dataToCoord(0));
+	        }
+
+	        // Axis position
+	        layout.position = [
+	            axisDim === 'y' ? posMap.y[axisPosition] : rectBound[0],
+	            axisDim === 'x' ? posMap.x[axisPosition] : rectBound[3]
+	        ];
+
+	        // Axis rotation
+	        layout.rotation = Math.PI / 2 * (axisDim === 'x' ? 0 : 1);
+
+	        // Tick and label direction, x y is axisDim
+	        var dirMap = {top: -1, bottom: 1, left: -1, right: 1};
+
+	        layout.labelDirection = layout.tickDirection = layout.nameDirection = dirMap[rawAxisPosition];
+	        layout.labelOffset = axis.onZero ? posMap[axisDim][rawAxisPosition] - posMap[axisDim].onZero : 0;
+
+	        if (axisModel.get('axisTick.inside')) {
+	            layout.tickDirection = -layout.tickDirection;
+	        }
+	        if (zrUtil.retrieve(opt.labelInside, axisModel.get('axisLabel.inside'))) {
+	            layout.labelDirection = -layout.labelDirection;
+	        }
+
+	        // Special label rotation
+	        var labelRotate = axisModel.get('axisLabel.rotate');
+	        layout.labelRotate = axisPosition === 'top' ? -labelRotate : labelRotate;
+
+	        // label interval when auto mode.
+	        layout.labelInterval = axis.getLabelInterval();
+
+	        // Over splitLine and splitArea
+	        layout.z2 = 1;
+
+	        return layout;
+	    };
+
+	    module.exports = helper;
+
+
+
+/***/ },
+/* 141 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+
+	    var axisPointerModelHelper = __webpack_require__(138);
+
+	    /**
+	     * Base class of AxisView.
+	     */
+	    var AxisView = __webpack_require__(1).extendComponentView({
+
+	        type: 'axis',
+
+	        /**
+	         * @private
+	         */
+	        _axisPointer: null,
+
+	        axisPointerClass: null,
+
+	        /**
+	         * @override
+	         */
+	        render: function (axisModel, ecModel, api, payload) {
+	            // FIXME
+	            // This process should proformed after coordinate systems updated
+	            // (axis scale updated), and should be performed each time update.
+	            // So put it here temporarily, although it is not appropriate to
+	            // put a model-writing procedure in `view`.
+	            axisPointerModelHelper.fixValue(axisModel);
+
+	            AxisView.superApply(this, 'render', arguments);
+	            updateAxisPointer(this, axisModel, ecModel, api, payload, true);
+	        },
+
+	        /**
+	         * Action handler.
+	         * @public
+	         * @param {module:echarts/coord/cartesian/AxisModel} axisModel
+	         * @param {module:echarts/model/Global} ecModel
+	         * @param {module:echarts/ExtensionAPI} api
+	         * @param {Object} payload
+	         */
+	        updateAxisPointer: function (axisModel, ecModel, api, payload, force) {
+	            updateAxisPointer(this, axisModel, ecModel, api, payload, false);
+	        },
+
+	        /**
+	         * @override
+	         */
+	        remove: function (ecModel, api) {
+	            var axisPointer = this._axisPointer;
+	            axisPointer && axisPointer.remove(api);
+	            AxisView.superApply(this, 'remove', arguments);
+	        },
+
+	        /**
+	         * @override
+	         */
+	        dispose: function (ecModel, api) {
+	            disposeAxisPointer(this, api);
+	            AxisView.superApply(this, 'dispose', arguments);
+	        }
+
+	    });
+
+	    function updateAxisPointer(axisView, axisModel, ecModel, api, payload, forceRender) {
+	        if (!axisView.axisPointerClass) {
+	            return;
+	        }
+	        var axisPointerModel = axisPointerModelHelper.getAxisPointerModel(axisModel);
+	        axisPointerModel
+	            ? (axisView._axisPointer || (axisView._axisPointer = new axisView.axisPointerClass()))
+	                .render(axisModel, axisPointerModel, api, forceRender)
+	            : disposeAxisPointer(axisView, api);
+	    }
+
+	    function disposeAxisPointer(axisView, ecModel, api) {
+	        var axisPointer = axisView._axisPointer;
+	        axisPointer && axisPointer.dispose(ecModel, api);
+	        axisView._axisPointer = null;
+	    }
+
+	    module.exports = AxisView;
+
+
+/***/ },
+/* 142 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+
+	    var echarts = __webpack_require__(1);
+	    var axisPointerModelHelper = __webpack_require__(138);
+	    var axisTrigger = __webpack_require__(143);
+	    var zrUtil = __webpack_require__(4);
+
+	    __webpack_require__(145);
+	    __webpack_require__(146);
+
+	    echarts.registerPreprocessor(function (option) {
+	        // Always has a global axisPointerModel for default setting.
+	        if (option) {
+	            (!option.axisPointer || option.axisPointer.length === 0)
+	                && (option.axisPointer = {});
+
+	            var link = option.axisPointer.link;
+	            // Normalize to array to avoid object mergin. But if link
+	            // is not set, remain null/undefined, otherwise it will
+	            // override existent link setting.
+	            if (link && !zrUtil.isArray(link)) {
+	                option.axisPointer.link = [link];
+	            }
+	        }
+	    });
+
+	    // This process should proformed after coordinate systems created
+	    // and series data processed. So put it on statistic processing stage.
+	    echarts.registerProcessor(echarts.PRIORITY.PROCESSOR.STATISTIC, function (ecModel, api) {
+	        // Build axisPointerModel, mergin tooltip.axisPointer model for each axis.
+	        // allAxesInfo should be updated when setOption performed.
+	        ecModel.getComponent('axisPointer').coordSysAxesInfo
+	            = axisPointerModelHelper.collect(ecModel, api);
+	    });
+
+	    // Broadcast to all views.
+	    echarts.registerAction({
+	        type: 'updateAxisPointer',
+	        event: 'updateAxisPointer',
+	        update: ':updateAxisPointer'
+	    }, function (payload, ecModel, api) {
+	        var outputFinder = axisTrigger(
+	            ecModel.getComponent('axisPointer').coordSysAxesInfo,
+	            payload.currTrigger,
+	            payload,
+	            payload.dispatchAction || zrUtil.bind(api.dispatchAction, api),
+	            ecModel,
+	            api,
+	            payload.tooltipOption,
+	            payload.highDownKey
+	        );
+
+	        return outputFinder;
+	    });
+
+
+
+/***/ },
+/* 143 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+
+	    var zrUtil = __webpack_require__(4);
+	    var modelUtil = __webpack_require__(5);
+	    var modelHelper = __webpack_require__(138);
+	    var findPointFromSeries = __webpack_require__(144);
+
+	    var each = zrUtil.each;
+	    var curry = zrUtil.curry;
+	    var get = modelUtil.makeGetter();
+
+	    /**
+	     * Basic logic: check all axis, if they do not demand show/highlight,
+	     * then hide/downplay them.
+	     *
+	     * @param {Object} coordSysAxesInfo
+	     * @param {string} currTrigger 'click' | 'mousemove' | 'leave'
+	     * @param {Object} finder {x, y, xAxisId: ...[], yAxisName: ...[], angleAxisIndex: ...[]}
+	     *              x and y, which are mandatory, specify a point to tigger axisPointer and tooltip.
+	     *              other properties, which are optional, restrict target axes.
+	     * @param {Function} dispatchAction
+	     * @param {module:echarts/ExtensionAPI} api
+	     * @param {Object} tooltipOption
+	     * @param {string} [highDownKey]
+	     * @return {Object} content of event obj for echarts.connect.
+	     */
+	    function axisTrigger(
+	        coordSysAxesInfo, currTrigger, finder, dispatchAction,
+	        ecModel, api, tooltipOption, highDownKey
+	    ) {
+	        var point = [];
+	        if (finder.x != null && finder.y != null) {
+	            point = [finder.x, finder.y];
+	        }
+	        else {
+	            point = findPointFromSeries({
+	                seriesIndex: finder.seriesIndex,
+	                // Do not use dataIndexInside from other ec instance.
+	                // FIXME: auto detect it?
+	                dataIndex: finder.dataIndex
+	            }, ecModel).point;
+	        }
+
+	        var axesInfo = coordSysAxesInfo.axesInfo;
+	        var shouldHide = currTrigger === 'leave' || illegalPoint(point);
+	        var outputFinder = {};
+
+	        var showValueMap = {};
+	        var dataByCoordSys = {list: [], map: {}};
+	        var highlightBatch = [];
+	        var updaters = {
+	            showPointer: curry(showPointer, showValueMap),
+	            showTooltip: curry(showTooltip, dataByCoordSys),
+	            highlight: curry(highlight, highlightBatch)
+	        };
+
+	        // Process for triggered axes.
+	        each(coordSysAxesInfo.coordSysMap, function (coordSys, coordSysKey) {
+	            var coordSysContainsPoint = coordSys.containPoint(point);
+
+	            each(coordSysAxesInfo.coordSysAxesInfo[coordSysKey], function (axisInfo, key) {
+	                var axis = axisInfo.axis;
+	                if (!shouldHide && coordSysContainsPoint && !notTargetAxis(finder, axis)) {
+	                    processOnAxis(axisInfo, axis.pointToData(point), updaters, false, outputFinder);
+	                }
+	            });
+	        });
+
+	        // Process for linked axes.
+	        each(axesInfo, function (tarAxisInfo, tarKey) {
+	            var linkGroup = tarAxisInfo.linkGroup;
+
+	            // If axis has been triggered in the previous stage, it should not be triggered by link.
+	            linkGroup && !showValueMap[tarKey] && each(linkGroup.axesInfo, function (srcAxisInfo, srcKey) {
+	                var srcValItem = showValueMap[srcKey];
+	                // If srcValItem exist, source axis is triggered, so link to target axis.
+	                if (srcAxisInfo !== tarAxisInfo && srcValItem) {
+	                    var val = srcValItem.value;
+	                    linkGroup.mapper && (val = tarAxisInfo.axis.scale.parse(linkGroup.mapper(
+	                        val, makeMapperParam(srcAxisInfo), makeMapperParam(tarAxisInfo)
+	                    )));
+	                    processOnAxis(tarAxisInfo, val, updaters, true, outputFinder);
+	                }
+	            });
+	        });
+
+	        updateModelActually(showValueMap, axesInfo);
+	        dispatchTooltipActually(dataByCoordSys, point, tooltipOption, dispatchAction);
+	        dispatchHighDownActually(highlightBatch, dispatchAction, api, highDownKey);
+
+	        return outputFinder;
+	    }
+
+	    function processOnAxis(axisInfo, newValue, updaters, dontSnap, outputFinder) {
+	        var axis = axisInfo.axis;
+
+	        if (axis.scale.isBlank() || !axis.containData(newValue)) {
+	            return;
+	        }
+
+	        if (!axisInfo.involveSeries) {
+	            updaters.showPointer(axisInfo, newValue);
+	            return;
+	        }
+
+	        // Heavy calculation. So put it after axis.containData checking.
+	        var payloadInfo = buildPayloadsBySeries(newValue, axisInfo);
+	        var payloadBatch = payloadInfo.payloadBatch;
+	        var snapToValue = payloadInfo.snapToValue;
+
+	        // Fill content of event obj for echarts.connect.
+	        // By defualt use the first involved series data as a sample to connect.
+	        if (payloadBatch[0] && outputFinder.seriesIndex == null) {
+	            zrUtil.extend(outputFinder, payloadBatch[0]);
+	        }
+
+	        // If no linkSource input, this process is for collecting link
+	        // target, where snap should not be accepted.
+	        if (!dontSnap && axisInfo.snap) {
+	            if (axis.containData(snapToValue) && snapToValue != null) {
+	                newValue = snapToValue;
+	            }
+	        }
+
+	        updaters.highlight('highlight', payloadBatch);
+	        updaters.showPointer(axisInfo, newValue, payloadBatch);
+	        // Tooltip should always be snapToValue, otherwise there will be
+	        // incorrect "axis value ~ series value" mapping displayed in tooltip.
+	        updaters.showTooltip(axisInfo, payloadInfo, snapToValue);
+	    }
+
+	    function buildPayloadsBySeries(value, axisInfo) {
+	        var axis = axisInfo.axis;
+	        var dim = axis.dim;
+	        var snapToValue = value;
+	        var payloadBatch = [];
+	        var minDist = Number.MAX_VALUE;
+	        var minDiff = -1;
+
+	        each(axisInfo.seriesModels, function (series, idx) {
+	            var dataDim = series.coordDimToDataDim(dim);
+	            var seriesNestestValue;
+	            var dataIndices;
+
+	            if (series.getAxisTooltipData) {
+	                var result = series.getAxisTooltipData(dataDim, value, axis);
+	                dataIndices = result.dataIndices;
+	                seriesNestestValue = result.nestestValue;
+	            }
+	            else {
+	                dataIndices = series.getData().indexOfNearest(
+	                    dataDim[0],
+	                    value,
+	                    // Add a threshold to avoid find the wrong dataIndex
+	                    // when data length is not same.
+	                    false, axis.type === 'category' ? 0.5 : null
+	                );
+	                if (!dataIndices.length) {
+	                    return;
+	                }
+	                seriesNestestValue = series.getData().get(dataDim[0], dataIndices[0]);
+	            }
+
+	            if (seriesNestestValue == null || !isFinite(seriesNestestValue)) {
+	                return;
+	            }
+
+	            var diff = value - seriesNestestValue;
+	            var dist = Math.abs(diff);
+	            // Consider category case
+	            if (dist <= minDist) {
+	                if (dist < minDist || (diff >= 0 && minDiff < 0)) {
+	                    minDist = dist;
+	                    minDiff = diff;
+	                    snapToValue = seriesNestestValue;
+	                    payloadBatch.length = 0;
+	                }
+	                each(dataIndices, function (dataIndex) {
+	                    payloadBatch.push({
+	                        seriesIndex: series.seriesIndex,
+	                        dataIndexInside: dataIndex,
+	                        dataIndex: series.getData().getRawIndex(dataIndex)
+	                    });
+	                });
+	            }
+	        });
+
+	        return {
+	            payloadBatch: payloadBatch,
+	            snapToValue: snapToValue
+	        };
+	    }
+
+	    function showPointer(showValueMap, axisInfo, value, payloadBatch) {
+	        showValueMap[axisInfo.key] = {value: value, payloadBatch: payloadBatch};
+	    }
+
+	    function showTooltip(dataByCoordSys, axisInfo, payloadInfo, value) {
+	        var payloadBatch = payloadInfo.payloadBatch;
+	        var axis = axisInfo.axis;
+	        var axisModel = axis.model;
+	        var axisPointerModel = axisInfo.axisPointerModel;
+
+	        // If no data, do not create anything in dataByCoordSys,
+	        // whose length will be used to judge whether dispatch action.
+	        if (!axisInfo.triggerTooltip || !payloadBatch.length) {
+	            return;
+	        }
+
+	        var coordSysModel = axisInfo.coordSys.model;
+	        var coordSysKey = modelHelper.makeKey(coordSysModel);
+	        var coordSysItem = dataByCoordSys.map[coordSysKey];
+	        if (!coordSysItem) {
+	            coordSysItem = dataByCoordSys.map[coordSysKey] = {
+	                coordSysId: coordSysModel.id,
+	                coordSysIndex: coordSysModel.componentIndex,
+	                coordSysType: coordSysModel.type,
+	                coordSysMainType: coordSysModel.mainType,
+	                dataByAxis: []
+	            };
+	            dataByCoordSys.list.push(coordSysItem);
+	        }
+
+	        coordSysItem.dataByAxis.push({
+	            axisDim: axis.dim,
+	            axisIndex: axisModel.componentIndex,
+	            axisType: axisModel.type,
+	            axisId: axisModel.id,
+	            value: value,
+	            // Caustion: viewHelper.getValueLabel is actually on "view stage", which
+	            // depends that all models have been updated. So it should not be performed
+	            // here. Considering axisPointerModel used here is volatile, which is hard
+	            // to be retrieve in TooltipView, we prepare parameters here.
+	            valueLabelOpt: {
+	                precision: axisPointerModel.get('label.precision'),
+	                formatter: axisPointerModel.get('label.formatter')
+	            },
+	            seriesDataIndices: payloadBatch.slice()
+	        });
+	    }
+
+	    function highlight(highlightBatch, actionType, batch) {
+	        highlightBatch.push.apply(highlightBatch, batch);
+	    }
+
+	    function updateModelActually(showValueMap, axesInfo) {
+	        // Basic logic: If no 'show' required, 'hide' this axisPointer.
+	        each(axesInfo, function (axisInfo, key) {
+	            var option = axisInfo.axisPointerModel.option;
+	            var valItem = showValueMap[key];
+
+	            if (valItem) {
+	                !axisInfo.useHandle && (option.status = 'show');
+	                option.value = valItem.value;
+	                // For label formatter param.
+	                option.seriesDataIndices = (valItem.payloadBatch || []).slice();
+	            }
+	            // When always show (e.g., handle used), remain
+	            // original value and status.
+	            else {
+	                // If hide, value still need to be set, consider
+	                // click legend to toggle axis blank.
+	                !axisInfo.useHandle && (option.status = 'hide');
+	            }
+	        });
+	    }
+
+	    function dispatchTooltipActually(dataByCoordSys, point, tooltipOption, dispatchAction) {
+	        // Basic logic: If no showTip required, hideTip will be dispatched.
+	        if (illegalPoint(point) || !dataByCoordSys.list.length) {
+	            dispatchAction({type: 'hideTip'});
+	            return;
+	        }
+
+	        // In most case only one axis (or event one series is used). It is
+	        // convinient to fetch payload.seriesIndex and payload.dataIndex
+	        // dirtectly. So put the first seriesIndex and dataIndex of the first
+	        // axis on the payload.
+	        var sampleItem = ((dataByCoordSys.list[0].dataByAxis[0] || {}).seriesDataIndices || [])[0] || {};
+
+	        dispatchAction({
+	            type: 'showTip',
+	            escapeConnect: true,
+	            x: point[0],
+	            y: point[1],
+	            tooltipOption: tooltipOption,
+	            dataIndexInside: sampleItem.dataIndexInside,
+	            dataIndex: sampleItem.dataIndex,
+	            seriesIndex: sampleItem.seriesIndex,
+	            dataByCoordSys: dataByCoordSys.list
+	        });
+	    }
+
+	    function dispatchHighDownActually(highlightBatch, dispatchAction, api, highDownKey) {
+	        // Basic logic: If nothing highlighted, should downplay all highlighted items.
+	        // This case will occur when mouse leave coordSys.
+
+	        // FIXME
+	        // (1) highlight status shoule be managemented in series.getData()?
+	        // (2) If axisPointer A triggerOn 'handle' and axisPointer B triggerOn
+	        // 'mousemove', items highlighted by A will be downplayed by B.
+	        // It will not be fixed until someone requires this scenario.
+
+	        // Consider items area hightlighted by 'handle', and globalListener may
+	        // downplay all items (including just highlighted ones) when mousemove.
+	        // So we use a highDownKey to separate them as a temporary solution.
+	        var zr = api.getZr();
+	        highDownKey = 'lastHighlights' + (highDownKey || '');
+	        var lastHighlights = get(zr)[highDownKey] || {};
+	        var newHighlights = get(zr)[highDownKey] = {};
+
+	        // Build hash map and remove duplicate incidentally.
+	        zrUtil.each(highlightBatch, function (batchItem) {
+	            var key = batchItem.seriesIndex + ' | ' + batchItem.dataIndex;
+	            newHighlights[key] = batchItem;
+	        });
+
+	        // Diff.
+	        var toHighlight = [];
+	        var toDownplay = [];
+	        zrUtil.each(lastHighlights, function (batchItem, key) {
+	            !newHighlights[key] && toDownplay.push(batchItem);
+	        });
+	        zrUtil.each(newHighlights, function (batchItem, key) {
+	            !lastHighlights[key] && toHighlight.push(batchItem);
+	        });
+
+	        toDownplay.length && api.dispatchAction({
+	            type: 'downplay', escapeConnect: true, batch: toDownplay
+	        });
+	        toHighlight.length && api.dispatchAction({
+	            type: 'highlight', escapeConnect: true, batch: toHighlight
+	        });
+	    }
+
+	    function notTargetAxis(finder, axis) {
+	        var isTarget = 1;
+	        // If none of xxxAxisId and xxxAxisName and xxxAxisIndex exists in finder,
+	        // no axis is not target axis.
+	        each(finder, function (value, propName) {
+	            isTarget &= !(/^.+(AxisId|AxisName|AxisIndex)$/.test(propName));
+	        });
+	        !isTarget && each(
+	            [['AxisId', 'id'], ['AxisIndex', 'componentIndex'], ['AxisName', 'name']],
+	            function (prop) {
+	                var vals = modelUtil.normalizeToArray(finder[axis.dim + prop[0]]);
+	                isTarget |= zrUtil.indexOf(vals, axis.model[prop[1]]) >= 0;
+	            }
+	        );
+	        return !isTarget;
+	    }
+
+	    function makeMapperParam(axisInfo) {
+	        var axisModel = axisInfo.axis.model;
+	        var item = {};
+	        var dim = item.axisDim = axisInfo.axis.dim;
+	        item.axisIndex = item[dim + 'AxisIndex'] = axisModel.componentIndex;
+	        item.axisName = item[dim + 'AxisName'] = axisModel.name;
+	        item.axisId = item[dim + 'AxisId'] = axisModel.id;
+	        return item;
+	    }
+
+	    function illegalPoint(point) {
+	        return point[0] == null || isNaN(point[0]) || point[1] == null || isNaN(point[1]);
+	    }
+
+	    module.exports = axisTrigger;
+
+
+/***/ },
+/* 144 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+
+	    var zrUtil = __webpack_require__(4);
+	    var modelUtil = __webpack_require__(5);
+
+	    /**
+	     * @param {Object} finder contains {seriesIndex, dataIndex, dataIndexInside}
+	     * @param {module:echarts/model/Global} ecModel
+	     * @return {Object} {point: [x, y], el: ...} point Will not be null.
+	     */
+	    module.exports = function (finder, ecModel) {
+	        var point = [];
+	        var seriesIndex = finder.seriesIndex;
+	        var seriesModel;
+	        if (seriesIndex == null || !(
+	            seriesModel = ecModel.getSeriesByIndex(seriesIndex)
+	        )) {
+	            return {point: []};
+	        }
+
+	        var data = seriesModel.getData();
+	        var dataIndex = modelUtil.queryDataIndex(data, finder);
+	        if (dataIndex == null || zrUtil.isArray(dataIndex)) {
+	            return {point: []};
+	        }
+
+	        var el = data.getItemGraphicEl(dataIndex);
+	        var coordSys = seriesModel.coordinateSystem;
+
+	        if (seriesModel.getTooltipPosition) {
+	            point = seriesModel.getTooltipPosition(dataIndex) || [];
+	        }
+	        else if (coordSys && coordSys.dataToPoint) {
+	            point = coordSys.dataToPoint(
+	                data.getValues(
+	                    zrUtil.map(coordSys.dimensions, function (dim) {
+	                        return seriesModel.coordDimToDataDim(dim)[0];
+	                    }), dataIndex, true
+	                )
+	            ) || [];
+	        }
+	        else if (el) {
+	            // Use graphic bounding rect
+	            var rect = el.getBoundingRect().clone();
+	            rect.applyTransform(el.transform);
+	            point = [
+	                rect.x + rect.width / 2,
+	                rect.y + rect.height / 2
+	            ];
+	        }
+
+	        return {point: point, el: el};
+	    };
+
+
+
+
+/***/ },
+/* 145 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+
+	    var echarts = __webpack_require__(1);
+
+	    var AxisPointerModel = echarts.extendComponentModel({
+
+	        type: 'axisPointer',
+
+	        coordSysAxesInfo: null,
+
+	        defaultOption: {
+	            // 'auto' means that show when triggered by tooltip or handle.
+	            show: 'auto',
+	            // 'click' | 'mousemove' | 'none'
+	            triggerOn: null, // set default in AxisPonterView.js
+
+	            zlevel: 0,
+	            z: 50,
+
+	            type: 'line',
+	            // axispointer triggered by tootip determine snap automatically,
+	            // see `modelHelper`.
+	            snap: false,
+	            triggerTooltip: true,
+
+	            value: null,
+	            status: null, // Init value depends on whether handle is used.
+
+	            // [group0, group1, ...]
+	            // Each group can be: {
+	            //      mapper: function () {},
+	            //      singleTooltip: 'multiple',  // 'multiple' or 'single'
+	            //      xAxisId: ...,
+	            //      yAxisName: ...,
+	            //      angleAxisIndex: ...
+	            // }
+	            // mapper: can be ignored.
+	            //      input: {axisInfo, value}
+	            //      output: {axisInfo, value}
+	            link: [],
+
+	            // Do not set 'auto' here, otherwise global animation: false
+	            // will not effect at this axispointer.
+	            animation: null,
+	            animationDurationUpdate: 200,
+
+	            lineStyle: {
+	                color: '#aaa',
+	                width: 1,
+	                type: 'solid'
+	            },
+
+	            shadowStyle: {
+	                color: 'rgba(150,150,150,0.3)'
+	            },
+
+	            label: {
+	                show: true,
+	                formatter: null, // string | Function
+	                precision: 'auto', // Or a number like 0, 1, 2 ...
+	                margin: 3,
+	                textStyle: {
+	                    color: '#fff'
+	                },
+	                padding: [5, 7, 5, 7],
+	                backgroundColor: 'auto', // default: axis line color
+	                borderColor: null,
+	                borderWidth: 0,
+	                shadowBlur: 3,
+	                shadowColor: '#aaa'
+	                // Considering applicability, common style should
+	                // better not have shadowOffset.
+	                // shadowOffsetX: 0,
+	                // shadowOffsetY: 2
+	            },
+
+	            handle: {
+	                show: false,
+	                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.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z', // jshint ignore:line
+	                size: 45,
+	                // handle margin is from symbol center to axis, which is stable when circular move.
+	                margin: 50,
+	                // color: '#1b8bbd'
+	                // color: '#2f4554'
+	                color: '#333',
+	                shadowBlur: 3,
+	                shadowColor: '#aaa',
+	                shadowOffsetX: 0,
+	                shadowOffsetY: 2,
+
+	                // For mobile performance
+	                throttle: 40
+	            }
+	        }
+
+	    });
+
+	    module.exports = AxisPointerModel;
+
+
+
+/***/ },
+/* 146 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+
+	    var globalListener = __webpack_require__(147);
+
+	    var AxisPonterView = __webpack_require__(1).extendComponentView({
+
+	        type: 'axisPointer',
+
+	        render: function (globalAxisPointerModel, ecModel, api) {
+	            var globalTooltipModel = ecModel.getComponent('tooltip');
+	            var triggerOn = globalAxisPointerModel.get('triggerOn')
+	                || (globalTooltipModel && globalTooltipModel.get('triggerOn') || 'mousemove|click');
+
+	            // Register global listener in AxisPointerView to enable
+	            // AxisPointerView to be independent to Tooltip.
+	            globalListener.register(
+	                'axisPointer',
+	                api,
+	                function (currTrigger, e, dispatchAction) {
+	                    // If 'none', it is not controlled by mouse totally.
+	                    if (triggerOn !== 'none'
+	                        && (currTrigger === 'leave' || triggerOn.indexOf(currTrigger) >= 0)
+	                    ) {
+	                        dispatchAction({
+	                            type: 'updateAxisPointer',
+	                            currTrigger: currTrigger,
+	                            x: e && e.offsetX,
+	                            y: e && e.offsetY
+	                        });
+	                    }
+	                }
+	            );
+	        },
+
+	        /**
+	         * @override
+	         */
+	        remove: function (ecModel, api) {
+	            globalListener.disopse(api.getZr(), 'axisPointer');
+	            AxisPonterView.superApply(this._model, 'remove', arguments);
+	        },
+
+	        /**
+	         * @override
+	         */
+	        dispose: function (ecModel, api) {
+	            globalListener.unregister('axisPointer', api);
+	            AxisPonterView.superApply(this._model, 'dispose', arguments);
+	        }
+
+	    });
+
+
+
+/***/ },
+/* 147 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+
+	    var env = __webpack_require__(2);
+	    var zrUtil = __webpack_require__(4);
+	    var get = __webpack_require__(5).makeGetter();
+
+	    var each = zrUtil.each;
+
+	    var globalListener = {};
+
+	    /**
+	     * @param {string} key
+	     * @param {module:echarts/ExtensionAPI} api
+	     * @param {Function} handler
+	     *      param: {string} currTrigger
+	     *      param: {Array.<number>} point
+	     */
+	    globalListener.register = function (key, api, handler) {
+	        if (env.node) {
+	            return;
+	        }
+
+	        var zr = api.getZr();
+	        get(zr).records || (get(zr).records = {});
+
+	        initGlobalListeners(zr, api);
+
+	        var record = get(zr).records[key] || (get(zr).records[key] = {});
+	        record.handler = handler;
+	    };
+
+	    function initGlobalListeners(zr, api) {
+	        if (get(zr).initialized) {
+	            return;
+	        }
+
+	        get(zr).initialized = true;
+
+	        useHandler('click', zrUtil.curry(doEnter, 'click'));
+	        useHandler('mousemove', zrUtil.curry(doEnter, 'mousemove'));
+	        // useHandler('mouseout', onLeave);
+	        useHandler('globalout', onLeave);
+
+	        function useHandler(eventType, cb) {
+	            zr.on(eventType, function (e) {
+	                var dis = makeDispatchAction(api);
+
+	                each(get(zr).records, function (record) {
+	                    record && cb(record, e, dis.dispatchAction);
+	                });
+
+	                dispatchTooltipFinally(dis.pendings, api);
+	            });
+	        }
+	    }
+
+	    function dispatchTooltipFinally(pendings, api) {
+	        var showLen = pendings.showTip.length;
+	        var hideLen = pendings.hideTip.length;
+
+	        var actuallyPayload;
+	        if (showLen) {
+	            actuallyPayload = pendings.showTip[showLen - 1];
+	        }
+	        else if (hideLen) {
+	            actuallyPayload = pendings.hideTip[hideLen - 1];
+	        }
+	        if (actuallyPayload) {
+	            actuallyPayload.dispatchAction = null;
+	            api.dispatchAction(actuallyPayload);
+	        }
+	    }
+
+	    function onLeave(record, e, dispatchAction) {
+	        record.handler('leave', null, dispatchAction);
+	    }
+
+	    function doEnter(currTrigger, record, e, dispatchAction) {
+	        record.handler(currTrigger, e, dispatchAction);
+	    }
+
+	    function makeDispatchAction(api) {
+	        var pendings = {
+	            showTip: [],
+	            hideTip: []
+	        };
+	        // FIXME
+	        // better approach?
+	        // 'showTip' and 'hideTip' can be triggered by axisPointer and tooltip,
+	        // which may be conflict, (axisPointer call showTip but tooltip call hideTip);
+	        // So we have to add "final stage" to merge those dispatched actions.
+	        var dispatchAction = function (payload) {
+	            var pendingList = pendings[payload.type];
+	            if (pendingList) {
+	                pendingList.push(payload);
+	            }
+	            else {
+	                payload.dispatchAction = dispatchAction;
+	                api.dispatchAction(payload);
+	            }
+	        };
+
+	        return {
+	            dispatchAction: dispatchAction,
+	            pendings: pendings
+	        };
+	    }
+
+	    /**
+	     * @param {string} key
+	     * @param {module:echarts/ExtensionAPI} api
+	     */
+	    globalListener.unregister = function (key, api) {
+	        if (env.node) {
+	            return;
+	        }
+	        var zr = api.getZr();
+	        var record = (get(zr).records || {})[key];
+	        if (record) {
+	            get(zr).records[key] = null;
+	        }
+	    };
+
+	    module.exports = globalListener;
+
+
+/***/ },
+/* 148 */
+/***/ function(module, exports, __webpack_require__) {
+
+	
+
+	    var zrUtil = __webpack_require__(4);
+
+	    __webpack_require__(124);
+
+	    __webpack_require__(149);
+	    __webpack_require__(151);
+
+	    var barLayoutGrid = __webpack_require__(154);
 	    var echarts = __webpack_require__(1);
 
 	    echarts.registerLayout(zrUtil.curry(barLayoutGrid, 'bar'));
@@ -29261,16 +31990,16 @@
 	    });
 
 	    // In case developer forget to include grid component
-	    __webpack_require__(113);
+	    __webpack_require__(122);
 
 
 /***/ },
-/* 135 */
+/* 149 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    module.exports = __webpack_require__(136).extend({
+	    module.exports = __webpack_require__(150).extend({
 
 	        type: 'series.bar',
 
@@ -29281,7 +32010,7 @@
 
 
 /***/ },
-/* 136 */
+/* 150 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -29356,21 +32085,21 @@
 
 
 /***/ },
-/* 137 */
+/* 151 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
 
 
 	    var zrUtil = __webpack_require__(4);
-	    var graphic = __webpack_require__(43);
-	    var helper = __webpack_require__(138);
+	    var graphic = __webpack_require__(44);
+	    var helper = __webpack_require__(152);
 
 	    var BAR_BORDER_WIDTH_QUERY = ['itemStyle', 'normal', 'barBorderWidth'];
 
 	    // FIXME
 	    // Just for compatible with ec2.
-	    zrUtil.extend(__webpack_require__(12).prototype, __webpack_require__(139));
+	    zrUtil.extend(__webpack_require__(12).prototype, __webpack_require__(153));
 
 	    var BarView = __webpack_require__(1).extendChartView({
 
@@ -29544,13 +32273,13 @@
 
 
 /***/ },
-/* 138 */
+/* 152 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
 	    var zrUtil = __webpack_require__(4);
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 
 	    var helper = {};
 
@@ -29601,7 +32330,7 @@
 
 
 /***/ },
-/* 139 */
+/* 153 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -29635,7 +32364,7 @@
 
 
 /***/ },
-/* 140 */
+/* 154 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -29887,7 +32616,7 @@
 
 
 /***/ },
-/* 141 */
+/* 155 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -29895,10 +32624,10 @@
 	    var zrUtil = __webpack_require__(4);
 	    var echarts = __webpack_require__(1);
 
-	    __webpack_require__(142);
-	    __webpack_require__(144);
+	    __webpack_require__(156);
+	    __webpack_require__(158);
 
-	    __webpack_require__(145)('pie', [{
+	    __webpack_require__(159)('pie', [{
 	        type: 'pieToggleSelect',
 	        event: 'pieselectchanged',
 	        method: 'toggleSelected'
@@ -29912,17 +32641,17 @@
 	        method: 'unSelect'
 	    }]);
 
-	    echarts.registerVisual(zrUtil.curry(__webpack_require__(146), 'pie'));
+	    echarts.registerVisual(zrUtil.curry(__webpack_require__(160), 'pie'));
 
 	    echarts.registerLayout(zrUtil.curry(
-	        __webpack_require__(147), 'pie'
+	        __webpack_require__(161), 'pie'
 	    ));
 
-	    echarts.registerProcessor(zrUtil.curry(__webpack_require__(149), 'pie'));
+	    echarts.registerProcessor(zrUtil.curry(__webpack_require__(163), 'pie'));
 
 
 /***/ },
-/* 142 */
+/* 156 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -29933,7 +32662,7 @@
 	    var modelUtil = __webpack_require__(5);
 	    var completeDimensions = __webpack_require__(103);
 
-	    var dataSelectableMixin = __webpack_require__(143);
+	    var dataSelectableMixin = __webpack_require__(157);
 
 	    var PieSeries = __webpack_require__(1).extendSeriesModel({
 
@@ -30072,7 +32801,7 @@
 
 
 /***/ },
-/* 143 */
+/* 157 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
@@ -30142,12 +32871,12 @@
 
 
 /***/ },
-/* 144 */
+/* 158 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
 
-	    var graphic = __webpack_require__(43);
+	    var graphic = __webpack_require__(44);
 	    var zrUtil = __webpack_require__(4);
 
 	    /**
@@ -30425,7 +33154,7 @@
 
 
 	    // Pie view
-	    var Pie = __webpack_require__(42).extend({
+	    var Pie = __webpack_require__(43).extend({
 
 	        type: 'pie',
 
@@ -30548,7 +33277,7 @@
 
 
 /***/ },
-/* 145 */
+/* 159 */
 /***/ function(module, exports, __webpack_require__) {
 
 	
@@ -30588,7 +33317,7 @@
 
 
 /***/ },
-/* 146 */
+/* 160 */
 /***/ function(module, exports) {
 
 	// Pick color from palette for each data item.
@@ -30639,7 +33368,7 @@
 
 
 /***/ },
-/* 147 */
+/* 161 */
 /***/ function(module, exports, __webpack_require__) {
 
 	// TODO minAngle
@@ -30648,7 +33377,7 @@
 
 	    var numberUtil = __webpack_require__(7);
 	    var parsePercent = numberUtil.parsePercent;
-	    var labelLayout = __webpack_require__(148);
+	    var labelLayout = __webpack_require__(162);
 	    var zrUtil = __webpack_require__(4);
 
 	    var PI2 = Math.PI * 2;
@@ -30785,7 +33514,7 @@
 
 
 /***/ },
-/* 148 */
+/* 162 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -31016,7 +33745,7 @@
 
 
 /***/ },
-/* 149 */
+/* 163 */
 /***/ function(module, exports) {
 
 	
diff --git a/dist/echarts.simple.min.js b/dist/echarts.simple.min.js
index 4e52d30..fe6a9bc 100644
--- a/dist/echarts.simple.min.js
+++ b/dist/echarts.simple.min.js
@@ -1,4 +1,4 @@
-!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.echarts=e():t.echarts=e()}(this,function(){return function(t){function e(i){if(n[i])return n[i].exports;var r=n[i]={exports:{},id:i,loaded:!1};return t[i].call(r.exports,r,r.exports,e),r.loaded=!0,r.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)}([function(t,e,n){t.exports=n(2),n(100),n(94),n(104),n(31)},function(t,e){function n(t){if(null==t||"object"!=typeof t)return t;var e=t,i=O.call(t);if("[object Array]"===i){e=[];for(var r=0,a=t.length;r<a;r++)e[r]=n(t[r])}else if(D[i])e=t.constructor.from(t);else if(!P[i]&&!S(t)){e={};for(var o in t)t.hasOwnProperty(o)&&(e[o]=n(t[o]))}return e}function i(t,e,r){if(!M(e)||!M(t))return r?n(e):t;for(var a in e)if(e.hasOwnProperty(a)){var o=t[a],s=e[a];!M(s)||!M(o)||_(s)||_(o)||S(s)||S(o)||T(s)||T(o)?!r&&a in t||(t[a]=n(e[a],!0)):i(o,s,r)}return t}function r(t,e){for(var n=t[0],r=1,a=t.length;r<a;r++)n=i(n,t[r],e);return n}function a(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}function o(t,e,n){for(var i in e)e.hasOwnProperty(i)&&(n?null!=e[i]:null==t[i])&&(t[i]=e[i]);return t}function s(){return document.createElement("canvas")}function l(){return k||(k=G.createCanvas().getContext("2d")),k}function h(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 u(t,e){function n(){}var i=t.prototype;n.prototype=e.prototype,t.prototype=new n;for(var r in i)t.prototype[r]=i[r];t.prototype.constructor=t,t.superClass=e}function c(t,e,n){t="prototype"in t?t.prototype:t,e="prototype"in e?e.prototype:e,o(t,e,n)}function f(t){if(t)return"string"!=typeof t&&"number"==typeof t.length}function d(t,e,n){if(t&&e)if(t.forEach&&t.forEach===z)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 a in t)t.hasOwnProperty(a)&&e.call(n,t[a],a,t)}function p(t,e,n){if(t&&e){if(t.map&&t.map===B)return t.map(e,n);for(var i=[],r=0,a=t.length;r<a;r++)i.push(e.call(n,t[r],r,t));return i}}function g(t,e,n,i){if(t&&e){if(t.reduce&&t.reduce===F)return t.reduce(e,n,i);for(var r=0,a=t.length;r<a;r++)n=e.call(i,n,t[r],r,t);return n}}function v(t,e,n){if(t&&e){if(t.filter&&t.filter===N)return t.filter(e,n);for(var i=[],r=0,a=t.length;r<a;r++)e.call(n,t[r],r,t)&&i.push(t[r]);return i}}function m(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 y(t,e){var n=R.call(arguments,2);return function(){return t.apply(e,n.concat(R.call(arguments)))}}function x(t){var e=R.call(arguments,1);return function(){return t.apply(this,e.concat(R.call(arguments)))}}function _(t){return"[object Array]"===O.call(t)}function b(t){return"function"==typeof t}function w(t){return"[object String]"===O.call(t)}function M(t){var e=typeof t;return"function"===e||!!t&&"object"==e}function T(t){return!!P[O.call(t)]}function S(t){return"object"==typeof t&&"number"==typeof t.nodeType&&"object"==typeof t.ownerDocument}function A(t){return t!==t}function I(t){for(var e=0,n=arguments.length;e<n;e++)if(null!=arguments[e])return arguments[e]}function C(){return Function.call.apply(R,arguments)}function L(t,e){if(!t)throw new Error(e)}var k,P={"[object Function]":1,"[object RegExp]":1,"[object Date]":1,"[object Error]":1,"[object CanvasGradient]":1,"[object CanvasPattern]":1,"[object Image]":1,"[object Canvas]":1},D={"[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},O=Object.prototype.toString,E=Array.prototype,z=E.forEach,N=E.filter,R=E.slice,B=E.map,F=E.reduce,G={inherits:u,mixin:c,clone:n,merge:i,mergeAll:r,extend:a,defaults:o,getContext:l,createCanvas:s,indexOf:h,slice:C,find:m,isArrayLike:f,each:d,map:p,reduce:g,filter:v,bind:y,curry:x,isArray:_,isString:w,isObject:M,isFunction:b,isBuildInObject:T,isDom:S,eqNaN:A,retrieve:I,assert:L,noop:function(){}};t.exports=G},function(t,e,n){function i(t){return function(e,n,i){e=e&&e.toLowerCase(),R.prototype[t].call(this,e,n,i)}}function r(){R.call(this)}function a(t,e,n){function i(t,e){return t.prio-e.prio}n=n||{},"string"==typeof e&&(e=ot[e]),this.id,this.group,this._dom=t;var a=this._zr=E.init(t,{renderer:n.renderer||"canvas",devicePixelRatio:n.devicePixelRatio,width:n.width,height:n.height});this._throttledZrFlush=O.throttle(z.bind(a.flush,a),17),this._theme=z.clone(e),this._chartsViews=[],this._chartsMap={},this._componentsViews=[],this._componentsMap={},this._api=new T(this),this._coordSysMgr=new S,R.call(this),this._messageCenter=new r,this._initEvents(),this.resize=z.bind(this.resize,this),this._pendingActions=[],B(at,i),B(it,i),a.animation.on("frame",this._onframe,this)}function o(t,e,n){var i,r=this._model,a=this._coordSysMgr.getCoordinateSystems();e=D.parseFinder(r,e);for(var o=0;o<a.length;o++){var s=a[o];if(s[t]&&null!=(i=s[t](r,e,n)))return i}}function s(t,e,n,i,r){var a=t._model,o={};o[i+"Id"]=n[i+"Id"],o[i+"Index"]=n[i+"Index"],o[i+"Name"]=n[i+"Name"];var s={mainType:i,query:o};r&&(s.subType=r),a&&a.eachComponent(s,function(r,o){var s=t["series"===i?"_chartsMap":"_componentsMap"][r.__viewId];s&&s.__alive&&s[e](r,a,t._api,n)},t)}function l(t,e){var n=t.type,i=et[n],r=i.actionInfo,a=(r.update||"update").split(":"),o=a.pop();a=a[0]&&G(a[0]),this[X]=!0;var l=[t],h=!1;t.batch&&(h=!0,l=z.map(t.batch,function(e){return e=z.defaults(z.extend({},e),t),e.batch=null,e}));for(var u,c=[],f="highlight"===n||"downplay"===n,d=0;d<l.length;d++){var p=l[d];u=i.action(p,this._model),u=u||z.extend({},p),u.type=r.event||u.type,c.push(u),f?s(this,o,p,"series"):a&&s(this,o,p,a.main,a.sub)}"none"===o||f||a||(this[$]?(J.prepareAndUpdate.call(this,t),this[$]=!1):J[o].call(this,t)),u=h?{type:r.event||n,batch:c}:c[0],this[X]=!1,!e&&this._messageCenter.trigger(u.type,u)}function h(t){for(var e=this._pendingActions;e.length;){var n=e.shift();l.call(this,n,t)}}function u(t){!t&&this.trigger("updated")}function c(t,e,n){var i=this._api;F(this._componentsViews,function(r){var a=r.__model;r[t](a,e,i,n),_(a,r)},this),e.eachSeries(function(r,a){var o=this._chartsMap[r.__viewId];o[t](r,e,i,n),_(r,o),x(r,o)},this),y(this._zr,e)}function f(t,e){for(var n="component"===t,i=n?this._componentsViews:this._chartsViews,r=n?this._componentsMap:this._chartsMap,a=this._zr,o=0;o<i.length;o++)i[o].__alive=!1;e[n?"eachComponent":"eachSeries"](function(t,o){if(n){if("series"===t)return}else o=t;var s=o.id+"_"+o.type,l=r[s];if(!l){var h=G(o.type),u=n?L.getClass(h.main,h.sub):k.getClass(h.sub);if(!u)return;l=new u,l.init(e,this._api),r[s]=l,i.push(l),a.add(l.group)}o.__viewId=s,l.__alive=!0,l.__id=s,l.__model=o},this);for(var o=0;o<i.length;){var s=i[o];s.__alive?o++:(a.remove(s.group),s.dispose(e,this._api),i.splice(o,1),delete r[s.__id])}}function d(t,e){F(it,function(n){n.func(t,e)})}function p(t){var e={};t.eachSeries(function(t){var n=t.get("stack"),i=t.getData();if(n&&"list"===i.type){var r=e[n];r&&(i.stackedOn=r),e[n]=i}})}function g(t,e){var n=this._api;F(at,function(i){i.isLayout&&i.func(t,n,e)})}function v(t,e,n){var i=this._api;t.clearColorPalette(),t.eachSeries(function(t){t.clearColorPalette()}),F(at,function(r){(!n||!r.isLayout)&&r.func(t,i,e)})}function m(t,e){var n=this._api;F(this._componentsViews,function(i){var r=i.__model;i.render(r,t,n,e),_(r,i)},this),F(this._chartsViews,function(t){t.__alive=!1},this),t.eachSeries(function(i,r){var a=this._chartsMap[i.__viewId];a.__alive=!0,a.render(i,t,n,e),a.group.silent=!!i.get("silent"),_(i,a),x(i,a)},this),y(this._zr,t),F(this._chartsViews,function(e){e.__alive||e.remove(t,n)},this)}function y(t,e){var n=t.storage,i=0;n.traverse(function(t){t.isGroup||i++}),i>e.get("hoverLayerThreshold")&&!w.node&&n.traverse(function(t){t.isGroup||(t.useHoverLayer=!0)})}function x(t,e){var n=0;e.group.traverse(function(t){"group"===t.type||t.ignore||n++});var i=+t.get("progressive"),r=n>t.get("progressiveThreshold")&&i&&!w.node;r&&e.group.traverse(function(t){t.isGroup||(t.progressive=r?Math.floor(n++/i):-1,r&&t.stopAnimation(!0))});var a=t.get("blendMode")||null;e.group.traverse(function(t){t.isGroup||t.setStyle("blend",a)})}function _(t,e){var n=t.get("z"),i=t.get("zlevel");e.group.traverse(function(t){"group"!==t.type&&(null!=n&&(t.z=n),null!=i&&(t.zlevel=i))})}function b(t){function e(t,e){for(var n=0;n<t.length;n++){var i=t[n];i[a]=e}}var n=0,i=1,r=2,a="__connectUpdateStatus";z.each(nt,function(o,s){t._messageCenter.on(s,function(o){if(ht[t.group]&&t[a]!==n){var s=t.makeActionFromEvent(o),l=[];z.each(lt,function(e){e!==t&&e.group===t.group&&l.push(e)}),e(l,n),F(l,function(t){t[a]!==i&&t.dispatchAction(s)}),e(l,r)}})})}/*!
+!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.echarts=e():t.echarts=e()}(this,function(){return function(t){function e(i){if(n[i])return n[i].exports;var r=n[i]={exports:{},id:i,loaded:!1};return t[i].call(r.exports,r,r.exports,e),r.loaded=!0,r.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)}([function(t,e,n){t.exports=n(2),n(110),n(104),n(114),n(93)},function(t,e){function n(t){if(null==t||"object"!=typeof t)return t;var e=t,i=z.call(t);if("[object Array]"===i){e=[];for(var r=0,a=t.length;r<a;r++)e[r]=n(t[r])}else if(E[i])e=t.constructor.from(t);else if(!D[i]&&!k(t)&&!S(t)){e={};for(var o in t)t.hasOwnProperty(o)&&(e[o]=n(t[o]))}return e}function i(t,e,r){if(!M(e)||!M(t))return r?n(e):t;for(var a in e)if(e.hasOwnProperty(a)){var o=t[a],s=e[a];!M(s)||!M(o)||_(s)||_(o)||S(s)||S(o)||T(s)||T(o)||k(s)||k(o)?!r&&a in t||(t[a]=n(e[a],!0)):i(o,s,r)}return t}function r(t,e){for(var n=t[0],r=1,a=t.length;r<a;r++)n=i(n,t[r],e);return n}function a(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}function o(t,e,n){for(var i in e)e.hasOwnProperty(i)&&(n?null!=e[i]:null==t[i])&&(t[i]=e[i]);return t}function s(){return document.createElement("canvas")}function l(){return O||(O=q.createCanvas().getContext("2d")),O}function h(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 u(t,e){function n(){}var i=t.prototype;n.prototype=e.prototype,t.prototype=new n;for(var r in i)t.prototype[r]=i[r];t.prototype.constructor=t,t.superClass=e}function c(t,e,n){t="prototype"in t?t.prototype:t,e="prototype"in e?e.prototype:e,o(t,e,n)}function f(t){if(t)return"string"!=typeof t&&"number"==typeof t.length}function d(t,e,n){if(t&&e)if(t.forEach&&t.forEach===N)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 a in t)t.hasOwnProperty(a)&&e.call(n,t[a],a,t)}function p(t,e,n){if(t&&e){if(t.map&&t.map===V)return t.map(e,n);for(var i=[],r=0,a=t.length;r<a;r++)i.push(e.call(n,t[r],r,t));return i}}function g(t,e,n,i){if(t&&e){if(t.reduce&&t.reduce===G)return t.reduce(e,n,i);for(var r=0,a=t.length;r<a;r++)n=e.call(i,n,t[r],r,t);return n}}function v(t,e,n){if(t&&e){if(t.filter&&t.filter===B)return t.filter(e,n);for(var i=[],r=0,a=t.length;r<a;r++)e.call(n,t[r],r,t)&&i.push(t[r]);return i}}function m(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 y(t,e){var n=F.call(arguments,2);return function(){return t.apply(e,n.concat(F.call(arguments)))}}function x(t){var e=F.call(arguments,1);return function(){return t.apply(this,e.concat(F.call(arguments)))}}function _(t){return"[object Array]"===z.call(t)}function b(t){return"function"==typeof t}function w(t){return"[object String]"===z.call(t)}function M(t){var e=typeof t;return"function"===e||!!t&&"object"==e}function T(t){return!!D[z.call(t)]}function S(t){return"object"==typeof t&&"number"==typeof t.nodeType&&"object"==typeof t.ownerDocument}function A(t){return t!==t}function I(t){for(var e=0,n=arguments.length;e<n;e++)if(null!=arguments[e])return arguments[e]}function C(){return Function.call.apply(F,arguments)}function P(t,e){if(!t)throw new Error(e)}function L(t){t[H]=!0}function k(t){return t[H]}var O,D={"[object Function]":1,"[object RegExp]":1,"[object Date]":1,"[object Error]":1,"[object CanvasGradient]":1,"[object CanvasPattern]":1,"[object Image]":1,"[object Canvas]":1},E={"[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},z=Object.prototype.toString,R=Array.prototype,N=R.forEach,B=R.filter,F=R.slice,V=R.map,G=R.reduce,H="__ec_primitive__",q={inherits:u,mixin:c,clone:n,merge:i,mergeAll:r,extend:a,defaults:o,getContext:l,createCanvas:s,indexOf:h,slice:C,find:m,isArrayLike:f,each:d,map:p,reduce:g,filter:v,bind:y,curry:x,isArray:_,isString:w,isObject:M,isFunction:b,isBuiltInObject:T,isDom:S,eqNaN:A,retrieve:I,assert:P,setAsPrimitive:L,noop:function(){}};t.exports=q},function(t,e,n){function i(t){return function(e,n,i){e=e&&e.toLowerCase(),N.prototype[t].call(this,e,n,i)}}function r(){N.call(this)}function a(t,e,n){function i(t,e){return t.prio-e.prio}n=n||{},"string"==typeof e&&(e=st[e]),this.id,this.group,this._dom=t;var a=this._zr=E.init(t,{renderer:n.renderer||"canvas",devicePixelRatio:n.devicePixelRatio,width:n.width,height:n.height});this._throttledZrFlush=D.throttle(z.bind(a.flush,a),17),this._theme=z.clone(e),this._chartsViews=[],this._chartsMap={},this._componentsViews=[],this._componentsMap={},this._coordSysMgr=new S,this._api=new T(this,this._coordSysMgr),N.call(this),this._messageCenter=new r,this._initEvents(),this.resize=z.bind(this.resize,this),this._pendingActions=[],B(ot,i),B(it,i),a.animation.on("frame",this._onframe,this),z.setAsPrimitive(this)}function o(t,e,n){var i,r=this._model,a=this._coordSysMgr.getCoordinateSystems();e=O.parseFinder(r,e);for(var o=0;o<a.length;o++){var s=a[o];if(s[t]&&null!=(i=s[t](r,e,n)))return i}}function s(t,e,n,i,r){function a(i){i&&i.__alive&&i[e]&&i[e](i.__model,o,t._api,n)}var o=t._model;if(!i)return void F(t._componentsViews.concat(t._chartsViews),a);var s={};s[i+"Id"]=n[i+"Id"],s[i+"Index"]=n[i+"Index"],s[i+"Name"]=n[i+"Name"];var l={mainType:i,query:s};r&&(l.subType=r),o&&o.eachComponent(l,function(e,n){a(t["series"===i?"_chartsMap":"_componentsMap"][e.__viewId])},t)}function l(t,e){var n=t.type,i=t.escapeConnect,r=et[n],a=r.actionInfo,o=(a.update||"update").split(":"),l=o.pop();o=null!=o[0]&&V(o[0]),this[X]=!0;var h=[t],u=!1;t.batch&&(u=!0,h=z.map(t.batch,function(e){return e=z.defaults(z.extend({},e),t),e.batch=null,e}));var c,f=[],d="highlight"===n||"downplay"===n;F(h,function(t){c=r.action(t,this._model,this._api),c=c||z.extend({},t),c.type=a.event||c.type,f.push(c),d?s(this,l,t,"series"):o&&s(this,l,t,o.main,o.sub)},this),"none"===l||d||o||(this[$]?(J.prepareAndUpdate.call(this,t),this[$]=!1):J[l].call(this,t)),c=u?{type:a.event||n,escapeConnect:i,batch:f}:f[0],this[X]=!1,!e&&this._messageCenter.trigger(c.type,c)}function h(t){for(var e=this._pendingActions;e.length;){var n=e.shift();l.call(this,n,t)}}function u(t){!t&&this.trigger("updated")}function c(t,e,n){var i=this._api;F(this._componentsViews,function(r){var a=r.__model;r[t](a,e,i,n),_(a,r)},this),e.eachSeries(function(r,a){var o=this._chartsMap[r.__viewId];o[t](r,e,i,n),_(r,o),x(r,o)},this),y(this._zr,e),F(at,function(t){t(e,i)})}function f(t,e){for(var n="component"===t,i=n?this._componentsViews:this._chartsViews,r=n?this._componentsMap:this._chartsMap,a=this._zr,o=0;o<i.length;o++)i[o].__alive=!1;e[n?"eachComponent":"eachSeries"](function(t,o){if(n){if("series"===t)return}else o=t;var s=o.id+"_"+o.type,l=r[s];if(!l){var h=V(o.type),u=n?P.getClass(h.main,h.sub):L.getClass(h.sub);if(!u)return;l=new u,l.init(e,this._api),r[s]=l,i.push(l),a.add(l.group)}o.__viewId=s,l.__alive=!0,l.__id=s,l.__model=o},this);for(var o=0;o<i.length;){var s=i[o];s.__alive?o++:(a.remove(s.group),s.dispose(e,this._api),i.splice(o,1),delete r[s.__id])}}function d(t,e){F(it,function(n){n.func(t,e)})}function p(t){var e={};t.eachSeries(function(t){var n=t.get("stack"),i=t.getData();if(n&&"list"===i.type){var r=e[n];r&&(i.stackedOn=r),e[n]=i}})}function g(t,e){var n=this._api;F(ot,function(i){i.isLayout&&i.func(t,n,e)})}function v(t,e,n){var i=this._api;t.clearColorPalette(),t.eachSeries(function(t){t.clearColorPalette()}),F(ot,function(r){(!n||!r.isLayout)&&r.func(t,i,e)})}function m(t,e){var n=this._api;F(this._componentsViews,function(i){var r=i.__model;i.render(r,t,n,e),_(r,i)},this),F(this._chartsViews,function(t){t.__alive=!1},this),t.eachSeries(function(i,r){var a=this._chartsMap[i.__viewId];a.__alive=!0,a.render(i,t,n,e),a.group.silent=!!i.get("silent"),_(i,a),x(i,a)},this),y(this._zr,t),F(this._chartsViews,function(e){e.__alive||e.remove(t,n)},this)}function y(t,e){var n=t.storage,i=0;n.traverse(function(t){t.isGroup||i++}),i>e.get("hoverLayerThreshold")&&!w.node&&n.traverse(function(t){t.isGroup||(t.useHoverLayer=!0)})}function x(t,e){var n=0;e.group.traverse(function(t){"group"===t.type||t.ignore||n++});var i=+t.get("progressive"),r=n>t.get("progressiveThreshold")&&i&&!w.node;r&&e.group.traverse(function(t){t.isGroup||(t.progressive=r?Math.floor(n++/i):-1,r&&t.stopAnimation(!0))});var a=t.get("blendMode")||null;e.group.traverse(function(t){t.isGroup||t.setStyle("blend",a)})}function _(t,e){var n=t.get("z"),i=t.get("zlevel");e.group.traverse(function(t){"group"!==t.type&&(null!=n&&(t.z=n),null!=i&&(t.zlevel=i))})}function b(t){function e(t,e){for(var n=0;n<t.length;n++){var i=t[n];i[a]=e}}var n=0,i=1,r=2,a="__connectUpdateStatus";z.each(nt,function(o,s){t._messageCenter.on(s,function(o){if(ut[t.group]&&t[a]!==n){if(o&&o.escapeConnect)return;var s=t.makeActionFromEvent(o),l=[];z.each(ht,function(e){e!==t&&e.group===t.group&&l.push(e)}),e(l,n),F(l,function(t){t[a]!==i&&t.dispatchAction(s)}),e(l,r)}})})}/*!
 	 * ECharts, a javascript interactive chart library.
 	 *
 	 * Copyright (c) 2015, Baidu Inc.
@@ -7,10 +7,11 @@
 	 * LICENSE
 	 * https://github.com/ecomfe/echarts/blob/master/LICENSE.txt
 	 */
-var w=n(10),M=n(125),T=n(93),S=n(23),A=n(126),I=n(13),C=n(16),L=n(59),k=n(28),P=n(3),D=n(6),O=n(47),E=n(78),z=n(1),N=n(19),R=n(21),B=n(46),F=z.each,G=I.parseClassType,V=1e3,q=5e3,H=1e3,W=2e3,j=3e3,Z=4e3,U=5e3,X="__flagInMainProcess",Y="__hasGradientOrPatternBg",$="__optionUpdated",Q=/^[a-zA-Z0-9_]+$/;r.prototype.on=i("on"),r.prototype.off=i("off"),r.prototype.one=i("one"),z.mixin(r,R);var K=a.prototype;K._onframe=function(){if(this[$]){var t=this[$].silent;this[X]=!0,J.prepareAndUpdate.call(this),this[X]=!1,this[$]=!1,h.call(this,t),u.call(this,t)}},K.getDom=function(){return this._dom},K.getZr=function(){return this._zr},K.setOption=function(t,e,n){var i;if(z.isObject(e)&&(n=e.lazyUpdate,i=e.silent,e=e.notMerge),this[X]=!0,!this._model||e){var r=new A(this._api),a=this._theme,o=this._model=new M(null,null,a,r);o.init(null,null,a,r)}this.__lastOnlyGraphic=!(!t||!t.graphic),z.each(t,function(t,e){"graphic"!==e&&(this.__lastOnlyGraphic=!1)},this),this._model.setOption(t,rt),n?(this[$]={silent:i},this[X]=!1):(J.prepareAndUpdate.call(this),this._zr.flush(),this[$]=!1,this[X]=!1,h.call(this,i),u.call(this,i))},K.setTheme=function(){console.log("ECharts#setTheme() is DEPRECATED in ECharts 3.0")},K.getModel=function(){return this._model},K.getOption=function(){return this._model&&this._model.getOption()},K.getWidth=function(){return this._zr.getWidth()},K.getHeight=function(){return this._zr.getHeight()},K.getRenderedCanvas=function(t){if(w.canvasSupported){t=t||{},t.pixelRatio=t.pixelRatio||1,t.backgroundColor=t.backgroundColor||this._model.get("backgroundColor");var e=this._zr,n=e.storage.getDisplayList();return z.each(n,function(t){t.stopAnimation(!0)}),e.painter.getRenderedCanvas(t)}},K.getDataURL=function(t){t=t||{};var e=t.excludeComponents,n=this._model,i=[],r=this;F(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 a=this.getRenderedCanvas(t).toDataURL("image/"+(t&&t.type||"png"));return F(i,function(t){t.group.ignore=!1}),a},K.getConnectedDataURL=function(t){if(w.canvasSupported){var e=this.group,n=Math.min,i=Math.max,r=1/0;if(ht[e]){var a=r,o=r,s=-r,l=-r,h=[],u=t&&t.pixelRatio||1;z.each(lt,function(r,u){if(r.group===e){var c=r.getRenderedCanvas(z.clone(t)),f=r.getDom().getBoundingClientRect();a=n(f.left,a),o=n(f.top,o),s=i(f.right,s),l=i(f.bottom,l),h.push({dom:c,left:f.left,top:f.top})}}),a*=u,o*=u,s*=u,l*=u;var c=s-a,f=l-o,d=z.createCanvas();d.width=c,d.height=f;var p=E.init(d);return F(h,function(t){var e=new P.Image({style:{x:t.left*u-a,y:t.top*u-o,image:t.dom}});p.add(e)}),p.refreshImmediately(),d.toDataURL("image/"+(t&&t.type||"png"))}return this.getDataURL(t)}},K.convertToPixel=z.curry(o,"convertToPixel"),K.convertFromPixel=z.curry(o,"convertFromPixel"),K.containPixel=function(t,e){var n,i=this._model;return t=D.parseFinder(i,t),z.each(t,function(t,i){i.indexOf("Models")>=0&&z.each(t,function(t){var r=t.coordinateSystem;if(r&&r.containPoint)n|=!!r.containPoint(e);else if("seriesModels"===i){var a=this._chartsMap[t.__viewId];a&&a.containPoint&&(n|=a.containPoint(e,t))}},this)},this),!!n},K.getVisual=function(t,e){var n=this._model;t=D.parseFinder(n,t,{defaultMainType:"series"});var i=t.seriesModel,r=i.getData(),a=t.hasOwnProperty("dataIndexInside")?t.dataIndexInside:t.hasOwnProperty("dataIndex")?r.indexOfRawIndex(t.dataIndex):null;return null!=a?r.getItemVisual(a,e):r.getVisual(e)};var J={update:function(t){var e=this._model,n=this._api,i=this._coordSysMgr,r=this._zr;if(e){e.restoreData(),i.create(this._model,this._api),d.call(this,e,n),p.call(this,e),i.update(e,n),v.call(this,e,t),m.call(this,e,t);var a=e.get("backgroundColor")||"transparent",o=r.painter;if(o.isSingleCanvas&&o.isSingleCanvas())r.configLayer(0,{clearColor:a});else{if(!w.canvasSupported){var s=N.parse(a);a=N.stringify(s,"rgb"),0===s[3]&&(a="transparent")}a.colorStops||a.image?(r.configLayer(0,{clearColor:a}),this[Y]=!0,this._dom.style.background="transparent"):(this[Y]&&r.configLayer(0,{clearColor:null}),this[Y]=!1,this._dom.style.background=a)}}},updateView:function(t){var e=this._model;e&&(e.eachSeries(function(t){t.getData().clearAllVisual()}),v.call(this,e,t),c.call(this,"updateView",e,t))},updateVisual:function(t){var e=this._model;e&&(e.eachSeries(function(t){t.getData().clearAllVisual()}),v.call(this,e,t,!0),c.call(this,"updateVisual",e,t))},updateLayout:function(t){var e=this._model;e&&(g.call(this,e,t),c.call(this,"updateLayout",e,t))},prepareAndUpdate:function(t){var e=this._model;f.call(this,"component",e),f.call(this,"chart",e),this.__lastOnlyGraphic?(F(this._componentsViews,function(n){var i=n.__model;i&&"graphic"===i.mainType&&(n.render(i,e,this._api,t),_(i,n))},this),this.__lastOnlyGraphic=!1):J.update.call(this,t)}};K.resize=function(t){this[X]=!0,this._zr.resize(t);var e=this._model&&this._model.resetOption("media"),n=e?"prepareAndUpdate":"update";J[n].call(this),this._loadingFX&&this._loadingFX.resize(),this[X]=!1;var i=t&&t.silent;h.call(this,i),u.call(this,i)},K.showLoading=function(t,e){if(z.isObject(t)&&(e=t,t=""),t=t||"default",this.hideLoading(),st[t]){var n=st[t](this._api,e),i=this._zr;this._loadingFX=n,i.add(n)}},K.hideLoading=function(){this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null},K.makeActionFromEvent=function(t){var e=z.extend({},t);return e.type=nt[t.type],e},K.dispatchAction=function(t,e){if(z.isObject(e)||(e={silent:!!e}),et[t.type]){if(this[X])return void this._pendingActions.push(t);l.call(this,t,e.silent),e.flush?this._zr.flush(!0):e.flush!==!1&&w.browser.weChat&&this._throttledZrFlush(),h.call(this,e.silent),u.call(this,e.silent)}},K.on=i("on"),K.off=i("off"),K.one=i("one");var tt=["click","dblclick","mouseover","mouseout","mousemove","mousedown","mouseup","globalout","contextmenu"];K._initEvents=function(){F(tt,function(t){this._zr.on(t,function(e){var n,i=this.getModel(),r=e.target;if("globalout"===t)n={};else if(r&&null!=r.dataIndex){var a=r.dataModel||i.getSeriesByIndex(r.seriesIndex);n=a&&a.getDataParams(r.dataIndex,r.dataType)||{}}else r&&r.eventData&&(n=z.extend({},r.eventData));n&&(n.event=e,n.type=t,this.trigger(t,n))},this)},this),F(nt,function(t,e){this._messageCenter.on(e,function(t){this.trigger(e,t)},this)},this)},K.isDisposed=function(){return this._disposed},K.clear=function(){this.setOption({series:[]},!0)},K.dispose=function(){if(!this._disposed){this._disposed=!0;var t=this._api,e=this._model;F(this._componentsViews,function(n){n.dispose(e,t)}),F(this._chartsViews,function(n){n.dispose(e,t)}),this._zr.dispose(),delete lt[this.id]}},z.mixin(a,R);var et=[],nt={},it=[],rt=[],at=[],ot={},st={},lt={},ht={},ut=new Date-0,ct=new Date-0,ft="_echarts_instance_",dt={version:"3.4.0",dependencies:{zrender:"3.3.0"}};dt.init=function(t,e,n){var i=new a(t,e,n);return i.id="ec_"+ut++,lt[i.id]=i,t.setAttribute&&t.setAttribute(ft,i.id),b(i),i},dt.connect=function(t){if(z.isArray(t)){var e=t;t=null,z.each(e,function(e){null!=e.group&&(t=e.group)}),t=t||"g_"+ct++,z.each(e,function(e){e.group=t})}return ht[t]=!0,t},dt.disConnect=function(t){ht[t]=!1},dt.dispose=function(t){z.isDom(t)?t=dt.getInstanceByDom(t):"string"==typeof t&&(t=lt[t]),t instanceof a&&!t.isDisposed()&&t.dispose()},dt.getInstanceByDom=function(t){var e=t.getAttribute(ft);return lt[e]},dt.getInstanceById=function(t){return lt[t]},dt.registerTheme=function(t,e){ot[t]=e},dt.registerPreprocessor=function(t){rt.push(t)},dt.registerProcessor=function(t,e){"function"==typeof t&&(e=t,t=V),it.push({prio:t,func:e})},dt.registerAction=function(t,e,n){"function"==typeof e&&(n=e,e="");var i=z.isObject(t)?t.type:[t,t={event:e}][0];t.event=(t.event||i).toLowerCase(),e=t.event,z.assert(Q.test(i)&&Q.test(e)),et[i]||(et[i]={action:n,actionInfo:t}),nt[e]=i},dt.registerCoordinateSystem=function(t,e){S.register(t,e)},dt.registerLayout=function(t,e){"function"==typeof t&&(e=t,t=H),at.push({prio:t,func:e,isLayout:!0})},dt.registerVisual=function(t,e){"function"==typeof t&&(e=t,t=j),at.push({prio:t,func:e})},dt.registerLoading=function(t,e){st[t]=e},dt.extendComponentModel=function(t){return I.extend(t)},dt.extendComponentView=function(t){return L.extend(t)},dt.extendSeriesModel=function(t){return C.extend(t)},dt.extendChartView=function(t){return k.extend(t)},dt.setCanvasCreator=function(t){z.createCanvas=t},dt.registerVisual(W,n(139)),dt.registerPreprocessor(n(133)),dt.registerLoading("default",n(124)),dt.registerAction({type:"highlight",event:"highlight",update:"highlight"},z.noop),dt.registerAction({type:"downplay",event:"downplay",update:"downplay"},z.noop),dt.List=n(14),dt.Model=n(11),dt.graphic=n(3),dt.number=n(4),dt.format=n(8),dt.throttle=O.throttle,dt.matrix=n(20),dt.vector=n(5),dt.color=n(19),dt.util={},F(["map","each","filter","indexOf","inherits","reduce","filter","bind","curry","isArray","isString","isObject","isFunction","extend","defaults","clone"],function(t){dt.util[t]=z[t]}),dt.PRIORITY={PROCESSOR:{FILTER:V,STATISTIC:q},VISUAL:{LAYOUT:H,GLOBAL:W,CHART:j,COMPONENT:Z,BRUSH:U}},t.exports=dt},function(t,e,n){"use strict";function i(t){return null!=t&&"none"!=t}function r(t){return"string"==typeof t?_.lift(t,-.1):t}function a(t){if(t.__hoverStlDirty){var e=t.style.stroke,n=t.style.fill,a=t.__hoverStl;a.fill=a.fill||(i(n)?r(n):null),a.stroke=a.stroke||(i(e)?r(e):null);var o={};for(var s in a)a.hasOwnProperty(s)&&(o[s]=t.style[s]);t.__normalStl=o,t.__hoverStlDirty=!1}}function o(t){t.__isHover||(a(t),t.useHoverLayer?t.__zr&&t.__zr.addHover(t,t.__hoverStl):(t.setStyle(t.__hoverStl),t.z2+=1),t.__isHover=!0)}function s(t){if(t.__isHover){var e=t.__normalStl;t.useHoverLayer?t.__zr&&t.__zr.removeHover(t):(e&&t.setStyle(e),t.z2-=1),t.__isHover=!1}}function l(t){"group"===t.type?t.traverse(function(t){"group"!==t.type&&o(t)}):o(t)}function h(t){"group"===t.type?t.traverse(function(t){"group"!==t.type&&s(t)}):s(t)}function u(t,e){t.__hoverStl=t.hoverStyle||e||{},t.__hoverStlDirty=!0,t.__isHover&&a(t)}function c(t){this.__hoverSilentOnTouch&&t.zrByTouch||!this.__isEmphasis&&l(this)}function f(t){this.__hoverSilentOnTouch&&t.zrByTouch||!this.__isEmphasis&&h(this)}function d(){this.__isEmphasis=!0,l(this)}function p(){this.__isEmphasis=!1,h(this)}function g(t,e,n,i,r,a){"function"==typeof r&&(a=r,r=null);var o=i&&i.isAnimationEnabled();if(o){var s=t?"Update":"",l=i.getShallow("animationDuration"+s),h=i.getShallow("animationEasing"+s),u=i.getShallow("animationDelay"+s);"function"==typeof u&&(u=u(r,i.getAnimationDelayParams?i.getAnimationDelayParams(e,r):null)),"function"==typeof l&&(l=l(r)),l>0?e.animateTo(n,l,u||0,h,a):(e.attr(n),a&&a())}else e.attr(n),a&&a()}var v=n(1),m=n(169),y=Math.round,x=n(7),_=n(19),b=n(20),w=n(5),M={};M.Group=n(34),M.Image=n(49),M.Text=n(76),M.Circle=n(160),M.Sector=n(166),M.Ring=n(165),M.Polygon=n(162),M.Polyline=n(163),M.Rect=n(164),M.Line=n(161),M.BezierCurve=n(159),M.Arc=n(158),M.CompoundPath=n(153),M.LinearGradient=n(91),M.RadialGradient=n(154),M.BoundingRect=n(9),M.extendShape=function(t){return x.extend(t)},M.extendPath=function(t,e){return m.extendFromString(t,e)},M.makePath=function(t,e,n,i){var r=m.createFromString(t,e),a=r.getBoundingRect();if(n){var o=a.width/a.height;if("center"===i){var s,l=n.height*o;l<=n.width?s=n.height:(l=n.width,s=l/o);var h=n.x+n.width/2,u=n.y+n.height/2;n.x=h-l/2,n.y=u-s/2,n.width=l,n.height=s}M.resizePath(r,n)}return r},M.mergePath=m.mergePath,M.resizePath=function(t,e){if(t.applyTransform){var n=t.getBoundingRect(),i=n.calculateTransform(e);t.applyTransform(i)}},M.subPixelOptimizeLine=function(t){var e=M.subPixelOptimize,n=t.shape,i=t.style.lineWidth;return y(2*n.x1)===y(2*n.x2)&&(n.x1=n.x2=e(n.x1,i,!0)),y(2*n.y1)===y(2*n.y2)&&(n.y1=n.y2=e(n.y1,i,!0)),t},M.subPixelOptimizeRect=function(t){var e=M.subPixelOptimize,n=t.shape,i=t.style.lineWidth,r=n.x,a=n.y,o=n.width,s=n.height;return n.x=e(n.x,i,!0),n.y=e(n.y,i,!0),n.width=Math.max(e(r+o,i,!1)-n.x,0===o?0:1),n.height=Math.max(e(a+s,i,!1)-n.y,0===s?0:1),t},M.subPixelOptimize=function(t,e,n){var i=y(2*t);return(i+y(e))%2===0?i/2:(i+(n?1:-1))/2},M.setHoverStyle=function(t,e,n){t.__hoverSilentOnTouch=n&&n.hoverSilentOnTouch,"group"===t.type?t.traverse(function(t){"group"!==t.type&&u(t,e)}):u(t,e),t.on("mouseover",c).on("mouseout",f),t.on("emphasis",d).on("normal",p)},M.setText=function(t,e,n){var i=e.getShallow("position")||"inside",r=e.getShallow("offset"),a=i.indexOf("inside")>=0?"white":n,o=e.getModel("textStyle");v.extend(t,{textDistance:e.getShallow("distance")||5,textFont:o.getFont(),textPosition:i,textOffset:r,textFill:o.getTextColor()||a})},M.updateProps=function(t,e,n,i,r){g(!0,t,e,n,i,r)},M.initProps=function(t,e,n,i,r){g(!1,t,e,n,i,r)},M.getTransform=function(t,e){for(var n=b.identity([]);t&&t!==e;)b.mul(n,t.getLocalTransform(),n),t=t.parent;return n},M.applyTransform=function(t,e,n){return n&&(e=b.invert([],e)),w.applyTransform([],t,e)},M.transformDirection=function(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]),a=["left"===t?-i:"right"===t?i:0,"top"===t?-r:"bottom"===t?r:0];return a=M.applyTransform(a,e,n),Math.abs(a[0])>Math.abs(a[1])?a[0]>0?"right":"left":a[1]>0?"bottom":"top"},M.groupTransition=function(t,e,n,i){function r(t){var e={};return t.traverse(function(t){!t.isGroup&&t.anid&&(e[t.anid]=t)}),e}function a(t){var e={position:w.clone(t.position),rotation:t.rotation};return t.shape&&(e.shape=v.extend({},t.shape)),e}if(t&&e){var o=r(t);e.traverse(function(t){if(!t.isGroup&&t.anid){var e=o[t.anid];if(e){var i=a(t);t.attr(a(e)),M.updateProps(t,i,n,t.dataIndex)}}})}},t.exports=M},function(t,e){function n(t){return t.replace(/^\s+/,"").replace(/\s+$/,"")}var i={},r=1e-4;i.linearMap=function(t,e,n,i){var r=e[1]-e[0],a=n[1]-n[0];if(0===r)return 0===a?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*a+n[0]},i.parsePercent=function(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).match(/%$/)?parseFloat(t)/100*e:parseFloat(t):null==t?NaN:+t},i.round=function(t,e){return null==e&&(e=10),e=Math.min(Math.max(0,e),20),+(+t).toFixed(e)},i.asc=function(t){return t.sort(function(t,e){return t-e}),t},i.getPrecision=function(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},i.getPrecisionSafe=function(t){var e=t.toString(),n=e.indexOf(".");return n<0?0:e.length-1-n},i.getPixelPrecision=function(t,e){var n=Math.log,i=Math.LN10,r=Math.floor(n(t[1]-t[0])/i),a=Math.round(n(Math.abs(e[1]-e[0]))/i),o=Math.min(Math.max(-r+a,0),20);return isFinite(o)?o:20},i.MAX_SAFE_INTEGER=9007199254740991,i.remRadian=function(t){var e=2*Math.PI;return(t%e+e)%e},i.isRadianAroundZero=function(t){return t>-r&&t<r},i.parseDate=function(t){if(t instanceof Date)return t;if("string"==typeof t){var e=new Date(t);return isNaN(+e)&&(e=new Date(new Date(t.replace(/-/g,"/"))-new Date("1970/01/01"))),e}return new Date(Math.round(t))},i.quantity=function(t){return Math.pow(10,Math.floor(Math.log(t)/Math.LN10))},i.nice=function(t,e){var n,r=i.quantity(t),a=t/r;return n=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*r},i.reformIntervals=function(t){function e(t,n,i){return t.interval[i]<n.interval[i]||t.interval[i]===n.interval[i]&&(t.close[i]-n.close[i]===(i?-1:1)||!i&&e(t,n,1))}t.sort(function(t,n){return e(t,n,0)?-1:1});for(var n=-(1/0),i=1,r=0;r<t.length;){for(var a=t[r].interval,o=t[r].close,s=0;s<2;s++)a[s]<=n&&(a[s]=n,o[s]=s?1:1-i),n=a[s],i=o[s];a[0]===a[1]&&o[0]*o[1]!==1?t.splice(r,1):r++}return t},i.isNumeric=function(t){return t-parseFloat(t)>=0},t.exports=i},function(t,e){var n="undefined"==typeof Float32Array?Array:Float32Array,i={create:function(t,e){var i=new n(2);return null==t&&(t=0),null==e&&(e=0),i[0]=t,i[1]=e,i},copy:function(t,e){return t[0]=e[0],t[1]=e[1],t},clone:function(t){var e=new n(2);return e[0]=t[0],e[1]=t[1],e},set:function(t,e,n){return t[0]=e,t[1]=n,t},add:function(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t},scaleAndAdd:function(t,e,n,i){return t[0]=e[0]+n[0]*i,t[1]=e[1]+n[1]*i,t},sub:function(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t},len:function(t){return Math.sqrt(this.lenSquare(t))},lenSquare:function(t){return t[0]*t[0]+t[1]*t[1]},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:function(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t},normalize:function(t,e){var n=i.len(e);return 0===n?(t[0]=0,t[1]=0):(t[0]=e[0]/n,t[1]=e[1]/n),t},distance:function(t,e){return Math.sqrt((t[0]-e[0])*(t[0]-e[0])+(t[1]-e[1])*(t[1]-e[1]))},distanceSquare:function(t,e){return(t[0]-e[0])*(t[0]-e[0])+(t[1]-e[1])*(t[1]-e[1])},negate:function(t,e){return t[0]=-e[0],t[1]=-e[1],t},lerp:function(t,e,n,i){return t[0]=e[0]+i*(n[0]-e[0]),t[1]=e[1]+i*(n[1]-e[1]),t},applyTransform:function(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},min:function(t,e,n){return t[0]=Math.min(e[0],n[0]),t[1]=Math.min(e[1],n[1]),t},max:function(t,e,n){return t[0]=Math.max(e[0],n[0]),t[1]=Math.max(e[1],n[1]),t}};i.length=i.len,i.lengthSquare=i.lenSquare,i.dist=i.distance,i.distSquare=i.distanceSquare,t.exports=i},function(t,e,n){function i(t,e){return t&&t.hasOwnProperty(e)}var r=n(8),a=n(4),o=n(11),s=n(1),l=s.each,h=s.isObject,u={};u.normalizeToArray=function(t){return t instanceof Array?t:null==t?[]:[t]},u.defaultEmphasis=function(t,e){if(t){var n=t.emphasis=t.emphasis||{},i=t.normal=t.normal||{};l(e,function(t){var e=s.retrieve(n[t],i[t]);null!=e&&(n[t]=e)})}},u.LABEL_OPTIONS=["position","offset","show","textStyle","distance","formatter"],u.getDataItemValue=function(t){return t&&(null==t.value?t:t.value)},u.isDataItemOption=function(t){return h(t)&&!(t instanceof Array)},u.converDataValue=function(t,e){var n=e&&e.type;return"ordinal"===n?t:("time"!==n||isFinite(t)||null==t||"-"===t||(t=+a.parseDate(t)),null==t||""===t?NaN:+t)},u.createDataFormatModel=function(t,e){var n=new o;return s.mixin(n,u.dataFormatMixin),n.seriesIndex=e.seriesIndex,n.name=e.name||"",n.mainType=e.mainType,n.subType=e.subType,n.getData=function(){return t},n},u.dataFormatMixin={getDataParams:function(t,e){var n=this.getData(e),i=this.seriesIndex,r=this.name,a=this.getRawValue(t,e),o=n.getRawIndex(t),s=n.getName(t,!0),l=n.getRawDataItem(t);return{componentType:this.mainType,componentSubType:this.subType,seriesType:"series"===this.mainType?this.subType:null,seriesIndex:i,seriesName:r,name:s,dataIndex:o,data:l,dataType:e,value:a,color:n.getItemVisual(t,"color"),$vars:["seriesName","name","value"]}},getFormattedLabel:function(t,e,n,i){e=e||"normal";var a=this.getData(n),o=a.getItemModel(t),s=this.getDataParams(t,n);null!=i&&s.value instanceof Array&&(s.value=s.value[i]);var l=o.get(["label",e,"formatter"]);return"function"==typeof l?(s.status=e,l(s)):"string"==typeof l?r.formatTpl(l,s):void 0},getRawValue:function(t,e){var n=this.getData(e),i=n.getRawDataItem(t);if(null!=i)return!h(i)||i instanceof Array?i:i.value},formatTooltip:s.noop},u.mappingToExists=function(t,e){e=(e||[]).slice();var n=s.map(t||[],function(t,e){return{exist:t}});return l(e,function(t,i){if(h(t)){for(var r=0;r<n.length;r++)if(!n[r].option&&null!=t.id&&n[r].exist.id===t.id+"")return n[r].option=t,void(e[i]=null);for(var r=0;r<n.length;r++){var a=n[r].exist;if(!(n[r].option||null!=a.id&&null!=t.id||null==t.name||u.isIdInner(t)||u.isIdInner(a)||a.name!==t.name+""))return n[r].option=t,void(e[i]=null)}}}),l(e,function(t,e){if(h(t)){for(var i=0;i<n.length;i++){var r=n[i].exist;if(!n[i].option&&!u.isIdInner(r)&&null==t.id){n[i].option=t;break}}i>=n.length&&n.push({option:t})}}),n},u.makeIdAndName=function(t){var e={};l(t,function(t,n){var i=t.exist;i&&(e[i.id]=t)}),l(t,function(t,n){var i=t.option;s.assert(!i||null==i.id||!e[i.id]||e[i.id]===t,"id duplicates: "+(i&&i.id)),i&&null!=i.id&&(e[i.id]=t),!t.keyInfo&&(t.keyInfo={})}),l(t,function(t,n){var i=t.exist,r=t.option,a=t.keyInfo;if(h(r)){if(a.name=null!=r.name?r.name+"":i?i.name:"\0-",i)a.id=i.id;else if(null!=r.id)a.id=r.id+"";else{var o=0;do a.id="\0"+a.name+"\0"+o++;while(e[a.id])}e[a.id]=t}})},u.isIdInner=function(t){return h(t)&&t.id&&0===(t.id+"").indexOf("\0_ec_\0")},u.compressBatches=function(t,e){function n(t,e,n){for(var i=0,r=t.length;i<r;i++)for(var a=t[i].seriesId,o=u.normalizeToArray(t[i].dataIndex),s=n&&n[a],l=0,h=o.length;l<h;l++){var c=o[l];s&&s[c]?s[c]=null:(e[a]||(e[a]={}))[c]=1}}function i(t,e){var n=[];for(var r in t)if(t.hasOwnProperty(r)&&null!=t[r])if(e)n.push(+r);else{var a=i(t[r],!0);a.length&&n.push({seriesId:r,dataIndex:a})}return n}var r={},a={};return n(t||[],r),n(e||[],a,r),[i(r),i(a)]},u.queryDataIndex=function(t,e){return null!=e.dataIndexInside?e.dataIndexInside:null!=e.dataIndex?s.isArray(e.dataIndex)?s.map(e.dataIndex,function(e){return t.indexOfRawIndex(e)}):t.indexOfRawIndex(e.dataIndex):null!=e.name?s.isArray(e.name)?s.map(e.name,function(e){return t.indexOfName(e)}):t.indexOfName(e.name):void 0},u.parseFinder=function(t,e,n){if(s.isString(e)){var r={};r[e+"Index"]=0,e=r}var a=n&&n.defaultMainType;!a||i(e,a+"Index")||i(e,a+"Id")||i(e,a+"Name")||(e[a+"Index"]=0);var o={};return l(e,function(n,i){var n=e[i];if("dataIndex"===i||"dataIndexInside"===i)return void(o[i]=n);var r=i.match(/^(\w+)(Index|Id|Name)$/)||[],a=r[1],s=r[2];if(a&&s){var l={mainType:a};l[s.toLowerCase()]=n;var h=t.queryComponents(l);o[a+"Models"]=h,o[a+"Model"]=h[0]}}),o},t.exports=u},function(t,e,n){function i(t){r.call(this,t),this.path=new o}var r=n(36),a=n(1),o=n(29),s=n(149),l=n(65),h=l.prototype.getCanvasPattern,u=Math.abs;i.prototype={constructor:i,type:"path",__dirtyPath:!0,strokeContainThreshold:5,brush:function(t,e){var n=this.style,i=this.path,r=n.hasStroke(),a=n.hasFill(),o=n.fill,s=n.stroke,l=a&&!!o.colorStops,u=r&&!!s.colorStops,c=a&&!!o.image,f=r&&!!s.image;if(n.bind(t,this,e),this.setTransform(t),this.__dirty){var d=this.getBoundingRect();l&&(this._fillGradient=n.getGradient(t,o,d)),u&&(this._strokeGradient=n.getGradient(t,s,d))}l?t.fillStyle=this._fillGradient:c&&(t.fillStyle=h.call(o,t)),u?t.strokeStyle=this._strokeGradient:f&&(t.strokeStyle=h.call(s,t));var p=n.lineDash,g=n.lineDashOffset,v=!!t.setLineDash,m=this.getGlobalScale();i.setScale(m[0],m[1]),this.__dirtyPath||p&&!v&&r?(i=this.path.beginPath(t),p&&!v&&(i.setLineDash(p),i.setLineDashOffset(g)),this.buildPath(i,this.shape,!1),this.__dirtyPath=!1):(t.beginPath(),this.path.rebuildPath(t)),a&&i.fill(t),p&&v&&(t.setLineDash(p),t.lineDashOffset=g),r&&i.stroke(t),p&&v&&t.setLineDash([]),this.restoreTransform(t),null!=n.text&&this.drawRectText(t,this.getBoundingRect())},buildPath:function(t,e,n){},getBoundingRect:function(){var t=this._rect,e=this.style,n=!t;if(n){var i=this.path;this.__dirtyPath&&(i.beginPath(),this.buildPath(i,this.shape,!1)),t=i.getBoundingRect()}if(this._rect=t,e.hasStroke()){var r=this._rectWithStroke||(this._rectWithStroke=t.clone());if(this.__dirty||n){r.copy(t);var a=e.lineWidth,o=e.strokeNoScale?this.getLineScale():1;e.hasFill()||(a=Math.max(a,this.strokeContainThreshold||4)),o>1e-10&&(r.width+=a/o,r.height+=a/o,r.x-=a/o/2,r.y-=a/o/2)}return r}return t},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 a=this.path.data;if(r.hasStroke()){var o=r.lineWidth,l=r.strokeNoScale?this.getLineScale():1;if(l>1e-10&&(r.hasFill()||(o=Math.max(o,this.strokeContainThreshold)),s.containStroke(a,o/l,t,e)))return!0}if(r.hasFill())return s.contain(a,t,e)}return!1},dirty:function(t){null==t&&(t=!0),t&&(this.__dirtyPath=t,this._rect=null),this.__dirty=!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):r.prototype.attrKV.call(this,t,e)},setShape:function(t,e){var n=this.shape;if(n){if(a.isObject(t))for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i]);else n[t]=e;this.dirty(!0)}return this},getLineScale:function(){var t=this.transform;return t&&u(t[0]-1)>1e-10&&u(t[3]-1)>1e-10?Math.sqrt(u(t[0]*t[3]-t[2]*t[1])):1}},i.extend=function(t){var e=function(e){i.call(this,e),t.style&&this.style.extendFrom(t.style,!1);var n=t.shape;if(n){this.shape=this.shape||{};var r=this.shape;for(var a in n)!r.hasOwnProperty(a)&&n.hasOwnProperty(a)&&(r[a]=n[a])}t.init&&t.init.call(this,e)};a.inherits(e,i);for(var n in t)"style"!==n&&"shape"!==n&&(e.prototype[n]=t[n]);return e},a.inherits(i,r),t.exports=i},function(t,e,n){var i=n(1),r=n(4),a=n(17),o={};o.addCommas=function(t){return isNaN(t)?"-":(t=(t+"").split("."),t[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,"$1,")+(t.length>1?"."+t[1]:""))},o.toCamelCase=function(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},o.normalizeCssArray=function(t){var e=t.length;return"number"==typeof t?[t,t,t,t]:2===e?[t[0],t[1],t[0],t[1]]:3===e?[t[0],t[1],t[2],t[1]]:t};var s=o.encodeHTML=function(t){return String(t).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")},l=["a","b","c","d","e","f","g"],h=function(t,e){return"{"+t+(null==e?"":e)+"}"};o.formatTpl=function(t,e,n){i.isArray(e)||(e=[e]);var r=e.length;if(!r)return"";for(var a=e[0].$vars||[],o=0;o<a.length;o++){var u=l[o],c=h(u,0);t=t.replace(h(u),n?s(c):c)}for(var f=0;f<r;f++)for(var d=0;d<a.length;d++){var c=e[f][a[d]];t=t.replace(h(l[d],f),n?s(c):c)}return t};var u=function(t){return t<10?"0"+t:t};o.formatTime=function(t,e){"week"!==t&&"month"!==t&&"quarter"!==t&&"half-year"!==t&&"year"!==t||(t="MM-dd\nyyyy");var n=r.parseDate(e),i=n.getFullYear(),a=n.getMonth()+1,o=n.getDate(),s=n.getHours(),l=n.getMinutes(),h=n.getSeconds();return t=t.replace("MM",u(a)).toLowerCase().replace("yyyy",i).replace("yy",i%100).replace("dd",u(o)).replace("d",o).replace("hh",u(s)).replace("h",s).replace("mm",u(l)).replace("m",l).replace("ss",u(h)).replace("s",h)},o.capitalFirst=function(t){return t?t.charAt(0).toUpperCase()+t.substr(1):t},o.truncateText=a.truncateText,t.exports=o},function(t,e,n){"use strict";function i(t,e,n,i){n<0&&(t+=n,n=-n),i<0&&(e+=i,i=-i),this.x=t,this.y=e,this.width=n,this.height=i}var r=n(5),a=n(20),o=r.applyTransform,s=Math.min,l=Math.max;i.prototype={constructor:i,union:function(t){var e=s(t.x,this.x),n=s(t.y,this.y);this.width=l(t.x+t.width,this.x+this.width)-e,this.height=l(t.y+t.height,this.y+this.height)-n,this.x=e,this.y=n},applyTransform:function(){var t=[],e=[],n=[],i=[];return function(r){if(r){t[0]=n[0]=this.x,t[1]=i[1]=this.y,e[0]=i[0]=this.x+this.width,e[1]=n[1]=this.y+this.height,o(t,t,r),o(e,e,r),o(n,n,r),o(i,i,r),this.x=s(t[0],e[0],n[0],i[0]),this.y=s(t[1],e[1],n[1],i[1]);var a=l(t[0],e[0],n[0],i[0]),h=l(t[1],e[1],n[1],i[1]);this.width=a-this.x,this.height=h-this.y}}}(),calculateTransform:function(t){var e=this,n=t.width/e.width,i=t.height/e.height,r=a.create();return a.translate(r,r,[-e.x,-e.y]),a.scale(r,r,[n,i]),a.translate(r,r,[t.x,t.y]),r},intersect:function(t){if(!t)return!1;t instanceof i||(t=i.create(t));var e=this,n=e.x,r=e.x+e.width,a=e.y,o=e.y+e.height,s=t.x,l=t.x+t.width,h=t.y,u=t.y+t.height;return!(r<s||l<n||o<h||u<a)},contain:function(t,e){var n=this;return t>=n.x&&t<=n.x+n.width&&e>=n.y&&e<=n.y+n.height},clone:function(){return new i(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}}},i.create=function(t){return new i(t.x,t.y,t.width,t.height)},t.exports=i},function(t,e){function n(t){var e={},n={},i=t.match(/Firefox\/([\d.]+)/),r=t.match(/MSIE\s([\d.]+)/)||t.match(/Trident\/.+?rv:(([\d.]+))/),a=t.match(/Edge\/([\d.]+)/),o=/micromessenger/i.test(t);return i&&(n.firefox=!0,n.version=i[1]),r&&(n.ie=!0,n.version=r[1]),a&&(n.edge=!0,n.version=a[1]),o&&(n.weChat=!0),{browser:n,os:e,node:!1,canvasSupported:!!document.createElement("canvas").getContext,touchEventsSupported:"ontouchstart"in window&&!n.ie&&!n.edge,pointerEventsSupported:"onpointerdown"in window&&(n.edge||n.ie&&n.version>=11)}}var i={};i="undefined"==typeof navigator?{browser:{},os:{},node:!0,canvasSupported:!0}:n(navigator.userAgent),t.exports=i},function(t,e,n){function i(t,e,n){this.parentModel=e,this.ecModel=n,this.option=t}function r(t,e,n){for(var i=0;i<e.length&&(!e[i]||(t=t&&"object"==typeof t?t[e[i]]:null,null!=t));i++);return null==t&&n&&(t=n.get(e)),t}function a(t,e){var n=s.get(t,"getParent");return n?n.call(t,e):t.parentModel}var o=n(1),s=n(15),l=n(10);i.prototype={constructor:i,init:null,mergeOption:function(t){o.merge(this.option,t,!0)},get:function(t,e){return null==t?this.option:r(this.option,this.parsePath(t),!e&&a(this,t))},getShallow:function(t,e){var n=this.option,i=null==n?n:n[t],r=!e&&a(this,t);return null==i&&r&&(i=r.getShallow(t)),i},getModel:function(t,e){var n,o=null==t?this.option:r(this.option,t=this.parsePath(t));return e=e||(n=a(this,t))&&n.getModel(t),new i(o,e,this.ecModel)},isEmpty:function(){return null==this.option},restoreData:function(){},clone:function(){var t=this.constructor;return new t(o.clone(this.option))},setReadOnly:function(t){s.setReadOnly(this,t)},parsePath:function(t){return"string"==typeof t&&(t=t.split(".")),t},customizeGetParent:function(t){s.set(this,"getParent",t)},isAnimationEnabled:function(){if(!l.node){if(null!=this.option.animation)return!!this.option.animation;if(this.parentModel)return this.parentModel.isAnimationEnabled()}}},s.enableClassExtend(i);var h=o.mixin;h(i,n(131)),h(i,n(128)),h(i,n(132)),h(i,n(130)),t.exports=i},function(t,e,n){"use strict";function i(t,e,n,i,r){var a=0,o=0;null==i&&(i=1/0),null==r&&(r=1/0);var s=0;e.eachChild(function(l,h){var u,c,f=l.position,d=l.getBoundingRect(),p=e.childAt(h+1),g=p&&p.getBoundingRect();if("horizontal"===t){var v=d.width+(g?-g.x+d.x:0);u=a+v,u>i||l.newline?(a=0,u=v,o+=s+n,s=d.height):s=Math.max(s,d.height)}else{var m=d.height+(g?-g.y+d.y:0);c=o+m,c>r||l.newline?(a+=s+n,o=0,c=m,s=d.width):s=Math.max(s,d.width)}l.newline||(f[0]=a,f[1]=o,"horizontal"===t?a=u+n:o=c+n)})}var r=n(1),a=n(9),o=n(4),s=n(8),l=o.parsePercent,h=r.each,u={},c=u.LOCATION_PARAMS=["left","right","top","bottom","width","height"];u.box=i,u.vbox=r.curry(i,"vertical"),u.hbox=r.curry(i,"horizontal"),u.getAvailableSize=function(t,e,n){var i=e.width,r=e.height,a=l(t.x,i),o=l(t.y,r),h=l(t.x2,i),u=l(t.y2,r);return(isNaN(a)||isNaN(parseFloat(t.x)))&&(a=0),(isNaN(h)||isNaN(parseFloat(t.x2)))&&(h=i),(isNaN(o)||isNaN(parseFloat(t.y)))&&(o=0),(isNaN(u)||isNaN(parseFloat(t.y2)))&&(u=r),n=s.normalizeCssArray(n||0),{width:Math.max(h-a-n[1]-n[3],0),height:Math.max(u-o-n[0]-n[2],0)}},u.getLayoutRect=function(t,e,n){n=s.normalizeCssArray(n||0);var i=e.width,r=e.height,o=l(t.left,i),h=l(t.top,r),u=l(t.right,i),c=l(t.bottom,r),f=l(t.width,i),d=l(t.height,r),p=n[2]+n[0],g=n[1]+n[3],v=t.aspect;switch(isNaN(f)&&(f=i-u-g-o),isNaN(d)&&(d=r-c-p-h),isNaN(f)&&isNaN(d)&&(v>i/r?f=.8*i:d=.8*r),null!=v&&(isNaN(f)&&(f=v*d),isNaN(d)&&(d=f/v)),isNaN(o)&&(o=i-u-f-g),isNaN(h)&&(h=r-c-d-p),t.left||t.right){case"center":o=i/2-f/2-n[3];break;case"right":o=i-f-g}switch(t.top||t.bottom){case"middle":case"center":h=r/2-d/2-n[0];break;case"bottom":h=r-d-p}o=o||0,h=h||0,isNaN(f)&&(f=i-o-(u||0)),isNaN(d)&&(d=r-h-(c||0));var m=new a(o+n[3],h+n[0],f,d);return m.margin=n,m},u.positionElement=function(t,e,n,i,o){var s=!o||!o.hv||o.hv[0],l=!o||!o.hv||o.hv[1],h=o&&o.boundingMode||"all";if(s||l){var c;if("raw"===h)c="group"===t.type?new a(0,0,+e.width||0,+e.height||0):t.getBoundingRect();else if(c=t.getBoundingRect(),t.needLocalTransform()){var f=t.getLocalTransform();c=c.clone(),c.applyTransform(f)}e=u.getLayoutRect(r.defaults({width:c.width,
-height:c.height},e),n,i);var d=t.position,p=s?e.x-c.x:0,g=l?e.y-c.y:0;t.attr("position","raw"===h?[p,g]:[d[0]+p,d[1]+g])}},u.mergeLayoutParam=function(t,e,n){function i(i){var r={},s=0,l={},u=0,c=n.ignoreSize?1:2;if(h(i,function(e){l[e]=t[e]}),h(i,function(t){a(e,t)&&(r[t]=l[t]=e[t]),o(r,t)&&s++,o(l,t)&&u++}),u!==c&&s){if(s>=c)return r;for(var f=0;f<i.length;f++){var d=i[f];if(!a(r,d)&&a(t,d)){r[d]=t[d];break}}return r}return l}function a(t,e){return t.hasOwnProperty(e)}function o(t,e){return null!=t[e]&&"auto"!==t[e]}function s(t,e,n){h(t,function(t){e[t]=n[t]})}!r.isObject(n)&&(n={});var l=["width","left","right"],u=["height","top","bottom"],c=i(l),f=i(u);s(l,t,c),s(u,t,f)},u.getLayoutParams=function(t){return u.copyLayoutParams({},t)},u.copyLayoutParams=function(t,e){return e&&t&&h(c,function(n){e.hasOwnProperty(n)&&(t[n]=e[n])}),t},t.exports=u},function(t,e,n){function i(t){var e=[];return a.each(u.getClassesByMainType(t),function(t){o.apply(e,t.prototype.dependencies||[])}),a.map(e,function(t){return l.parseClassType(t).main})}var r=n(11),a=n(1),o=Array.prototype.push,s=n(44),l=n(15),h=n(12),u=r.extend({type:"component",id:"",name:"",mainType:"",subType:"",componentIndex:0,defaultOption:null,ecModel:null,dependentModels:[],uid:null,layoutMode:null,$constructor:function(t,e,n,i){r.call(this,t,e,n,i),this.uid=s.getUID("componentModel")},init:function(t,e,n,i){this.mergeDefaultAndTheme(t,n)},mergeDefaultAndTheme:function(t,e){var n=this.layoutMode,i=n?h.getLayoutParams(t):{},r=e.getTheme();a.merge(t,r.get(this.mainType)),a.merge(t,this.getDefaultOption()),n&&h.mergeLayoutParam(t,i,n)},mergeOption:function(t,e){a.merge(this.option,t,!0);var n=this.layoutMode;n&&h.mergeLayoutParam(this.option,t,n)},optionUpdated:function(t,e){},getDefaultOption:function(){if(!l.hasOwn(this,"__defaultOption")){for(var t=[],e=this.constructor;e;){var n=e.prototype.defaultOption;n&&t.push(n),e=e.superClass}for(var i={},r=t.length-1;r>=0;r--)i=a.merge(i,t[r],!0);l.set(this,"__defaultOption",i)}return l.get(this,"__defaultOption")},getReferringComponents:function(t){return this.ecModel.queryComponents({mainType:t,index:this.get(t+"Index",!0),id:this.get(t+"Id",!0)})}});l.enableClassManagement(u,{registerWhenExtend:!0}),s.enableSubTypeDefaulter(u),s.enableTopologicalTravel(u,i),a.mixin(u,n(129)),t.exports=u},function(t,e,n){(function(e){function i(t){return f.isArray(t)||(t=[t]),t}function r(t,e){var n=t.dimensions,i=new m(f.map(n,t.getDimensionInfo,t),t.hostModel);v(i,t);for(var r=i._storage={},a=t._storage,o=0;o<n.length;o++){var s=n[o],l=a[s];f.indexOf(e,s)>=0?r[s]=new l.constructor(a[s].length):r[s]=a[s]}return i}var a="undefined",o="undefined"==typeof window?e:window,s=typeof o.Float64Array===a?Array:o.Float64Array,l=typeof o.Int32Array===a?Array:o.Int32Array,h={"float":s,"int":l,ordinal:Array,number:Array,time:Array},u=n(11),c=n(43),f=n(1),d=n(6),p=f.isObject,g=["stackedOn","hasItemOption","_nameList","_idList","_rawData"],v=function(t,e){f.each(g.concat(e.__wrappedMethods||[]),function(n){e.hasOwnProperty(n)&&(t[n]=e[n])}),t.__wrappedMethods=e.__wrappedMethods},m=function(t,e){t=t||["x","y"];for(var n={},i=[],r=0;r<t.length;r++){var a,o={};"string"==typeof t[r]?(a=t[r],o={name:a,stackable:!1,type:"number"}):(o=t[r],a=o.name,o.type=o.type||"number"),i.push(a),n[a]=o}this.dimensions=i,this._dimensionInfos=n,this.hostModel=e,this.dataType,this.indices=[],this._storage={},this._nameList=[],this._idList=[],this._optionModels=[],this.stackedOn=null,this._visual={},this._layout={},this._itemVisuals=[],this._itemLayouts=[],this._graphicEls=[],this._rawData,this._extent},y=m.prototype;y.type="list",y.hasItemOption=!0,y.getDimension=function(t){return isNaN(t)||(t=this.dimensions[t]||t),t},y.getDimensionInfo=function(t){return f.clone(this._dimensionInfos[this.getDimension(t)])},y.initData=function(t,e,n){t=t||[],this._rawData=t;var i=this._storage={},r=this.indices=[],a=this.dimensions,o=t.length,s=this._dimensionInfos,l=[],u={};e=e||[];for(var c=0;c<a.length;c++){var f=s[a[c]],p=h[f.type];i[a[c]]=new p(o)}var g=this;n||(g.hasItemOption=!1),n=n||function(t,e,n,i){var r=d.getDataItemValue(t);return d.isDataItemOption(t)&&(g.hasItemOption=!0),d.converDataValue(r instanceof Array?r[i]:r,s[e])};for(var v=0;v<t.length;v++){for(var m=t[v],y=0;y<a.length;y++){var x=a[y],_=i[x];_[v]=n(m,x,v,y)}r.push(v)}for(var c=0;c<t.length;c++){e[c]||t[c]&&null!=t[c].name&&(e[c]=t[c].name);var b=e[c]||"",w=t[c]&&t[c].id;!w&&b&&(u[b]=u[b]||0,w=b,u[b]>0&&(w+="__ec__"+u[b]),u[b]++),w&&(l[c]=w)}this._nameList=e,this._idList=l},y.count=function(){return this.indices.length},y.get=function(t,e,n){var i=this._storage,r=this.indices[e];if(null==r)return NaN;var a=i[t]&&i[t][r];if(n){var o=this._dimensionInfos[t];if(o&&o.stackable)for(var s=this.stackedOn;s;){var l=s.get(t,e);(a>=0&&l>0||a<=0&&l<0)&&(a+=l),s=s.stackedOn}}return a},y.getValues=function(t,e,n){var i=[];f.isArray(t)||(n=e,e=t,t=this.dimensions);for(var r=0,a=t.length;r<a;r++)i.push(this.get(t[r],e,n));return i},y.hasValue=function(t){for(var e=this.dimensions,n=this._dimensionInfos,i=0,r=e.length;i<r;i++)if("ordinal"!==n[e[i]].type&&isNaN(this.get(e[i],t)))return!1;return!0},y.getDataExtent=function(t,e,n){t=this.getDimension(t);var i=this._storage[t],r=this.getDimensionInfo(t);e=r&&r.stackable&&e;var a,o=(this._extent||(this._extent={}))[t+!!e];if(o)return o;if(i){for(var s=1/0,l=-(1/0),h=0,u=this.count();h<u;h++)a=this.get(t,h,e),n&&!n(a,t,h)||(a<s&&(s=a),a>l&&(l=a));return this._extent[t+!!e]=[s,l]}return[1/0,-(1/0)]},y.getSum=function(t,e){var n=this._storage[t],i=0;if(n)for(var r=0,a=this.count();r<a;r++){var o=this.get(t,r,e);isNaN(o)||(i+=o)}return i},y.indexOf=function(t,e){var n=this._storage,i=n[t],r=this.indices;if(i)for(var a=0,o=r.length;a<o;a++){var s=r[a];if(i[s]===e)return a}return-1},y.indexOfName=function(t){for(var e=this.indices,n=this._nameList,i=0,r=e.length;i<r;i++){var a=e[i];if(n[a]===t)return i}return-1},y.indexOfRawIndex=function(t){var e=this.indices,n=e[t];if(null!=n&&n===t)return t;for(var i=0,r=e.length-1;i<=r;){var a=(i+r)/2|0;if(e[a]<t)i=a+1;else{if(!(e[a]>t))return a;r=a-1}}return-1},y.indexOfNearest=function(t,e,n,i){var r=this._storage,a=r[t];null==i&&(i=1/0);var o=-1;if(a)for(var s=Number.MAX_VALUE,l=0,h=this.count();l<h;l++){var u=e-this.get(t,l,n),c=Math.abs(u);u<=i&&(c<s||c===s&&u>0)&&(s=c,o=l)}return o},y.getRawIndex=function(t){var e=this.indices[t];return null==e?-1:e},y.getRawDataItem=function(t){return this._rawData[this.getRawIndex(t)]},y.getName=function(t){return this._nameList[this.indices[t]]||""},y.getId=function(t){return this._idList[this.indices[t]]||this.getRawIndex(t)+""},y.each=function(t,e,n,r){"function"==typeof t&&(r=n,n=e,e=t,t=[]),t=f.map(i(t),this.getDimension,this);var a=[],o=t.length,s=this.indices;r=r||this;for(var l=0;l<s.length;l++)switch(o){case 0:e.call(r,l);break;case 1:e.call(r,this.get(t[0],l,n),l);break;case 2:e.call(r,this.get(t[0],l,n),this.get(t[1],l,n),l);break;default:for(var h=0;h<o;h++)a[h]=this.get(t[h],l,n);a[h]=l,e.apply(r,a)}},y.filterSelf=function(t,e,n,r){"function"==typeof t&&(r=n,n=e,e=t,t=[]),t=f.map(i(t),this.getDimension,this);var a=[],o=[],s=t.length,l=this.indices;r=r||this;for(var h=0;h<l.length;h++){var u;if(1===s)u=e.call(r,this.get(t[0],h,n),h);else{for(var c=0;c<s;c++)o[c]=this.get(t[c],h,n);o[c]=h,u=e.apply(r,o)}u&&a.push(l[h])}return this.indices=a,this._extent={},this},y.mapArray=function(t,e,n,i){"function"==typeof t&&(i=n,n=e,e=t,t=[]);var r=[];return this.each(t,function(){r.push(e&&e.apply(this,arguments))},n,i),r},y.map=function(t,e,n,a){t=f.map(i(t),this.getDimension,this);var o=r(this,t),s=o.indices=this.indices,l=o._storage,h=[];return this.each(t,function(){var n=arguments[arguments.length-1],i=e&&e.apply(this,arguments);if(null!=i){"number"==typeof i&&(h[0]=i,i=h);for(var r=0;r<i.length;r++){var a=t[r],o=l[a],u=s[n];o&&(o[u]=i[r])}}},n,a),o},y.downSample=function(t,e,n,i){for(var a=r(this,[t]),o=this._storage,s=a._storage,l=this.indices,h=a.indices=[],u=[],c=[],f=Math.floor(1/e),d=s[t],p=this.count(),g=0;g<o[t].length;g++)s[t][g]=o[t][g];for(var g=0;g<p;g+=f){f>p-g&&(f=p-g,u.length=f);for(var v=0;v<f;v++){var m=l[g+v];u[v]=d[m],c[v]=m}var y=n(u),m=c[i(u,y)||0];d[m]=y,h.push(m)}return a},y.getItemModel=function(t){var e=this.hostModel;return t=this.indices[t],new u(this._rawData[t],e,e&&e.ecModel)},y.diff=function(t){var e,n=this._idList,i=t&&t._idList,r="e\0\0";return new c(t?t.indices:[],this.indices,function(t){return null!=(e=i[t])?e:r+t},function(t){return null!=(e=n[t])?e:r+t})},y.getVisual=function(t){var e=this._visual;return e&&e[t]},y.setVisual=function(t,e){if(p(t))for(var n in t)t.hasOwnProperty(n)&&this.setVisual(n,t[n]);else this._visual=this._visual||{},this._visual[t]=e},y.setLayout=function(t,e){if(p(t))for(var n in t)t.hasOwnProperty(n)&&this.setLayout(n,t[n]);else this._layout[t]=e},y.getLayout=function(t){return this._layout[t]},y.getItemLayout=function(t){return this._itemLayouts[t]},y.setItemLayout=function(t,e,n){this._itemLayouts[t]=n?f.extend(this._itemLayouts[t]||{},e):e},y.clearItemLayouts=function(){this._itemLayouts.length=0},y.getItemVisual=function(t,e,n){var i=this._itemVisuals[t],r=i&&i[e];return null!=r||n?r:this.getVisual(e)},y.setItemVisual=function(t,e,n){var i=this._itemVisuals[t]||{};if(this._itemVisuals[t]=i,p(e))for(var r in e)e.hasOwnProperty(r)&&(i[r]=e[r]);else i[e]=n},y.clearAllVisual=function(){this._visual={},this._itemVisuals=[]};var x=function(t){t.seriesIndex=this.seriesIndex,t.dataIndex=this.dataIndex,t.dataType=this.dataType};y.setItemGraphicEl=function(t,e){var n=this.hostModel;e&&(e.dataIndex=t,e.dataType=this.dataType,e.seriesIndex=n&&n.seriesIndex,"group"===e.type&&e.traverse(x,e)),this._graphicEls[t]=e},y.getItemGraphicEl=function(t){return this._graphicEls[t]},y.eachItemGraphicEl=function(t,e){f.each(this._graphicEls,function(n,i){n&&t&&t.call(e,n,i)})},y.cloneShallow=function(){var t=f.map(this.dimensions,this.getDimensionInfo,this),e=new m(t,this.hostModel);return e._storage=this._storage,v(e,this),e.indices=this.indices.slice(),this._extent&&(e._extent=f.extend({},this._extent)),e},y.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(f.slice(arguments)))})},y.TRANSFERABLE_METHODS=["cloneShallow","downSample","map"],y.CHANGABLE_METHODS=["filterSelf"],t.exports=m}).call(e,function(){return this}())},function(t,e,n){function i(t){o.assert(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(t),'componentType "'+t+'" illegal')}function r(t,e){var n=o.slice(arguments,2);return this.superClass.prototype[e].apply(t,n)}function a(t,e,n){return this.superClass.prototype[e].apply(t,n)}var o=n(1),s={},l=".",h="___EC__COMPONENT__CONTAINER___",u="\0ec_\0";s.set=function(t,e,n){return t[u+e]=n},s.get=function(t,e){return t[u+e]},s.hasOwn=function(t,e){return t.hasOwnProperty(u+e)};var c=s.parseClassType=function(t){var e={main:"",sub:""};return t&&(t=t.split(l),e.main=t[0]||"",e.sub=t[1]||""),e};s.enableClassExtend=function(t,e){t.$constructor=t,t.extend=function(t){var e=this,n=function(){t.$constructor?t.$constructor.apply(this,arguments):e.apply(this,arguments)};return o.extend(n.prototype,t),n.extend=this.extend,n.superCall=r,n.superApply=a,o.inherits(n,this),n.superClass=e,n}},s.enableClassManagement=function(t,e){function n(t){var e=r[t.main];return e&&e[h]||(e=r[t.main]={},e[h]=!0),e}e=e||{};var r={};if(t.registerClass=function(t,e){if(e)if(i(e),e=c(e),e.sub){if(e.sub!==h){var a=n(e);a[e.sub]=t}}else r[e.main]=t;return t},t.getClass=function(t,e,n){var i=r[t];if(i&&i[h]&&(i=e?i[e]:null),n&&!i)throw new Error(e?"Component "+t+"."+(e||"")+" not exists. Load it first.":t+".type should be specified.");return i},t.getClassesByMainType=function(t){t=c(t);var e=[],n=r[t.main];return n&&n[h]?o.each(n,function(t,n){n!==h&&e.push(t)}):e.push(n),e},t.hasClass=function(t){return t=c(t),!!r[t.main]},t.getAllClassMainTypes=function(){var t=[];return o.each(r,function(e,n){t.push(n)}),t},t.hasSubTypes=function(t){t=c(t);var e=r[t.main];return e&&e[h]},t.parseClassType=c,e.registerWhenExtend){var a=t.extend;a&&(t.extend=function(e){var n=a.call(this,e);return t.registerClass(n,e.type)})}return t},s.setReadOnly=function(t,e){},t.exports=s},function(t,e,n){"use strict";var i=n(1),r=n(8),a=n(15),o=n(6),s=n(13),l=n(57),h=n(10),u=n(12),c=a.set,f=a.get,d=r.encodeHTML,p=r.addCommas,g=s.extend({type:"series.__base__",seriesIndex:0,coordinateSystem:null,defaultOption:null,legendDataProvider:null,visualColorAccessPath:"itemStyle.normal.color",layoutMode:null,init:function(t,e,n,i){this.seriesIndex=this.componentIndex,this.mergeDefaultAndTheme(t,n),c(this,"dataBeforeProcessed",this.getInitialData(t,n)),this.restoreData()},mergeDefaultAndTheme:function(t,e){var n=this.layoutMode,r=n?u.getLayoutParams(t):{};i.merge(t,e.getTheme().get(this.subType)),i.merge(t,this.getDefaultOption()),o.defaultEmphasis(t.label,o.LABEL_OPTIONS),this.fillDataTextStyle(t.data),n&&u.mergeLayoutParam(t,r,n)},mergeOption:function(t,e){t=i.merge(this.option,t,!0),this.fillDataTextStyle(t.data);var n=this.layoutMode;n&&u.mergeLayoutParam(this.option,t,n);var r=this.getInitialData(t,e);r&&(c(this,"data",r),c(this,"dataBeforeProcessed",r.cloneShallow()))},fillDataTextStyle:function(t){if(t)for(var e=0;e<t.length;e++)t[e]&&t[e].label&&o.defaultEmphasis(t[e].label,o.LABEL_OPTIONS)},getInitialData:function(){},getData:function(t){var e=f(this,"data");return null==t?e:e.getLinkedData(t)},setData:function(t){c(this,"data",t)},getRawData:function(){return f(this,"dataBeforeProcessed")},coordDimToDataDim:function(t){return[t]},dataDimToCoordDim:function(t){return t},getBaseAxis:function(){var t=this.coordinateSystem;return t&&t.getBaseAxis&&t.getBaseAxis()},formatTooltip:function(t,e,n){function a(t){var n=[];return i.each(t,function(t,i){var a,s=o.getDimensionInfo(i),l=s&&s.type;a="ordinal"===l?t+"":"time"===l?e?"":r.formatTime("yyyy/MM/dd hh:mm:ss",t):p(t),a&&n.push(a)}),n.join(", ")}var o=f(this,"data"),s=this.getRawValue(t),l=d(i.isArray(s)?a(s):p(s)),h=o.getName(t),u=o.getItemVisual(t,"color");i.isObject(u)&&u.colorStops&&(u=(u.colorStops[0]||{}).color),u=u||"transparent";var c='<span style="display:inline-block;margin-right:5px;border-radius:10px;width:9px;height:9px;background-color:'+d(u)+'"></span>',g=this.name;return"\0-"===g&&(g=""),e?c+d(this.name)+" : "+l:(g&&d(g)+"<br />")+c+(h?d(h)+" : "+l:l)},isAnimationEnabled:function(){if(h.node)return!1;var t=this.getShallow("animation");return t&&this.getData().count()>this.getShallow("animationThreshold")&&(t=!1),t},restoreData:function(){c(this,"data",f(this,"dataBeforeProcessed").cloneShallow())},getColorFromPalette:function(t,e){var n=this.ecModel,i=l.getColorFromPalette.call(this,t,e);return i||(i=n.getColorFromPalette(t,e)),i},getAxisTooltipDataIndex:null,getTooltipPosition:null});i.mixin(g,o.dataFormatMixin),i.mixin(g,l),t.exports=g},function(t,e,n){function i(t,e){var n=t+":"+e;if(l[n])return l[n];for(var i=(t+"").split("\n"),r=0,a=0,o=i.length;a<o;a++)r=Math.max(p.measureText(i[a],e).width,r);return h>u&&(h=0,l={}),h++,l[n]=r,r}function r(t,e,n,r){var a=((t||"")+"").split("\n").length,o=i(t,e),s=i("国",e),l=a*s,h=new f(0,0,o,l);switch(h.lineHeight=s,r){case"bottom":case"alphabetic":h.y-=s;break;case"middle":h.y-=s/2}switch(n){case"end":case"right":h.x-=h.width;break;case"center":h.x-=h.width/2}return h}function a(t,e,n,i){var r=e.x,a=e.y,o=e.height,s=e.width,l=n.height,h=o/2-l/2,u="left";switch(t){case"left":r-=i,a+=h,u="right";break;case"right":r+=i+s,a+=h,u="left";break;case"top":r+=s/2,a-=i+l,u="center";break;case"bottom":r+=s/2,a+=o+i,u="center";break;case"inside":r+=s/2,a+=h,u="center";break;case"insideLeft":r+=i,a+=h,u="left";break;case"insideRight":r+=s-i,a+=h,u="right";break;case"insideTop":r+=s/2,a+=i,u="center";break;case"insideBottom":r+=s/2,a+=o-l-i,u="center";break;case"insideTopLeft":r+=i,a+=i,u="left";break;case"insideTopRight":r+=s-i,a+=i,u="right";break;case"insideBottomLeft":r+=i,a+=o-l-i;break;case"insideBottomRight":r+=s-i,a+=o-l-i,u="right"}return{x:r,y:a,textAlign:u,textBaseline:"top"}}function o(t,e,n,r,a){if(!e)return"";a=a||{},r=d(r,"...");for(var o=d(a.maxIterations,2),l=d(a.minChar,0),h=i("国",n),u=i("a",n),c=d(a.placeholder,""),f=e=Math.max(0,e-1),p=0;p<l&&f>=u;p++)f-=u;var g=i(r);g>f&&(r="",g=0),f=e-g;for(var v=(t+"").split("\n"),p=0,m=v.length;p<m;p++){var y=v[p],x=i(y,n);if(!(x<=e)){for(var _=0;;_++){if(x<=f||_>=o){y+=r;break}var b=0===_?s(y,f,u,h):x>0?Math.floor(y.length*f/x):0;y=y.substr(0,b),x=i(y,n)}""===y&&(y=c),v[p]=y}}return v.join("\n")}function s(t,e,n,i){for(var r=0,a=0,o=t.length;a<o&&r<e;a++){var s=t.charCodeAt(a);r+=0<=s&&s<=127?n:i}return a}var l={},h=0,u=5e3,c=n(1),f=n(9),d=c.retrieve,p={getWidth:i,getBoundingRect:r,adjustTextPositionOnRect:a,truncateText:o,measureText:function(t,e){var n=c.getContext();return n.font=e||"12px sans-serif",n.measureText(t)}};t.exports=p},function(t,e,n){"use strict";function i(t){return t>-w&&t<w}function r(t){return t>w||t<-w}function a(t,e,n,i,r){var a=1-r;return a*a*(a*t+3*r*e)+r*r*(r*i+3*a*n)}function o(t,e,n,i,r){var a=1-r;return 3*(((e-t)*a+2*(n-e)*r)*a+(i-n)*r*r)}function s(t,e,n,r,a,o){var s=r+3*(e-n)-t,l=3*(n-2*e+t),h=3*(e-t),u=t-a,c=l*l-3*s*h,f=l*h-9*s*u,d=h*h-3*l*u,p=0;if(i(c)&&i(f))if(i(l))o[0]=0;else{var g=-h/l;g>=0&&g<=1&&(o[p++]=g)}else{var v=f*f-4*c*d;if(i(v)){var m=f/c,g=-l/s+m,y=-m/2;g>=0&&g<=1&&(o[p++]=g),y>=0&&y<=1&&(o[p++]=y)}else if(v>0){var x=b(v),w=c*l+1.5*s*(-f+x),M=c*l+1.5*s*(-f-x);w=w<0?-_(-w,S):_(w,S),M=M<0?-_(-M,S):_(M,S);var g=(-l-(w+M))/(3*s);g>=0&&g<=1&&(o[p++]=g)}else{var A=(2*c*l-3*s*f)/(2*b(c*c*c)),I=Math.acos(A)/3,C=b(c),L=Math.cos(I),g=(-l-2*C*L)/(3*s),y=(-l+C*(L+T*Math.sin(I)))/(3*s),k=(-l+C*(L-T*Math.sin(I)))/(3*s);g>=0&&g<=1&&(o[p++]=g),y>=0&&y<=1&&(o[p++]=y),k>=0&&k<=1&&(o[p++]=k)}}return p}function l(t,e,n,a,o){var s=6*n-12*e+6*t,l=9*e+3*a-3*t-9*n,h=3*e-3*t,u=0;if(i(l)){if(r(s)){var c=-h/s;c>=0&&c<=1&&(o[u++]=c)}}else{var f=s*s-4*l*h;if(i(f))o[0]=-s/(2*l);else if(f>0){var d=b(f),c=(-s+d)/(2*l),p=(-s-d)/(2*l);c>=0&&c<=1&&(o[u++]=c),p>=0&&p<=1&&(o[u++]=p)}}return u}function h(t,e,n,i,r,a){var o=(e-t)*r+t,s=(n-e)*r+e,l=(i-n)*r+n,h=(s-o)*r+o,u=(l-s)*r+s,c=(u-h)*r+h;a[0]=t,a[1]=o,a[2]=h,a[3]=c,a[4]=c,a[5]=u,a[6]=l,a[7]=i}function u(t,e,n,i,r,o,s,l,h,u,c){var f,d,p,g,v,m=.005,y=1/0;A[0]=h,A[1]=u;for(var _=0;_<1;_+=.05)I[0]=a(t,n,r,s,_),I[1]=a(e,i,o,l,_),g=x(A,I),g<y&&(f=_,y=g);y=1/0;for(var w=0;w<32&&!(m<M);w++)d=f-m,p=f+m,I[0]=a(t,n,r,s,d),I[1]=a(e,i,o,l,d),g=x(I,A),d>=0&&g<y?(f=d,y=g):(C[0]=a(t,n,r,s,p),C[1]=a(e,i,o,l,p),v=x(C,A),p<=1&&v<y?(f=p,y=v):m*=.5);return c&&(c[0]=a(t,n,r,s,f),c[1]=a(e,i,o,l,f)),b(y)}function c(t,e,n,i){var r=1-i;return r*(r*t+2*i*e)+i*i*n}function f(t,e,n,i){return 2*((1-i)*(e-t)+i*(n-e))}function d(t,e,n,a,o){var s=t-2*e+n,l=2*(e-t),h=t-a,u=0;if(i(s)){if(r(l)){var c=-h/l;c>=0&&c<=1&&(o[u++]=c)}}else{var f=l*l-4*s*h;if(i(f)){var c=-l/(2*s);c>=0&&c<=1&&(o[u++]=c)}else if(f>0){var d=b(f),c=(-l+d)/(2*s),p=(-l-d)/(2*s);c>=0&&c<=1&&(o[u++]=c),p>=0&&p<=1&&(o[u++]=p)}}return u}function p(t,e,n){var i=t+n-2*e;return 0===i?.5:(t-e)/i}function g(t,e,n,i,r){var a=(e-t)*i+t,o=(n-e)*i+e,s=(o-a)*i+a;r[0]=t,r[1]=a,r[2]=s,r[3]=s,r[4]=o,r[5]=n}function v(t,e,n,i,r,a,o,s,l){var h,u=.005,f=1/0;A[0]=o,A[1]=s;for(var d=0;d<1;d+=.05){I[0]=c(t,n,r,d),I[1]=c(e,i,a,d);var p=x(A,I);p<f&&(h=d,f=p)}f=1/0;for(var g=0;g<32&&!(u<M);g++){var v=h-u,m=h+u;I[0]=c(t,n,r,v),I[1]=c(e,i,a,v);var p=x(I,A);if(v>=0&&p<f)h=v,f=p;else{C[0]=c(t,n,r,m),C[1]=c(e,i,a,m);var y=x(C,A);m<=1&&y<f?(h=m,f=y):u*=.5}}return l&&(l[0]=c(t,n,r,h),l[1]=c(e,i,a,h)),b(f)}var m=n(5),y=m.create,x=m.distSquare,_=Math.pow,b=Math.sqrt,w=1e-8,M=1e-4,T=b(3),S=1/3,A=y(),I=y(),C=y();t.exports={cubicAt:a,cubicDerivativeAt:o,cubicRootAt:s,cubicExtrema:l,cubicSubdivide:h,cubicProjectPoint:u,quadraticAt:c,quadraticDerivativeAt:f,quadraticRootAt:d,quadraticExtremum:p,quadraticSubdivide:g,quadraticProjectPoint:v}},function(t,e){function n(t){return t=Math.round(t),t<0?0:t>255?255:t}function i(t){return t=Math.round(t),t<0?0:t>360?360:t}function r(t){return t<0?0:t>1?1:t}function a(t){return n(t.length&&"%"===t.charAt(t.length-1)?parseFloat(t)/100*255:parseInt(t,10))}function o(t){return r(t.length&&"%"===t.charAt(t.length-1)?parseFloat(t)/100:parseFloat(t))}function s(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 l(t,e,n){return t+(e-t)*n}function h(t){if(t){t+="";var e=t.replace(/ /g,"").toLowerCase();if(e in x)return x[e].slice();if("#"!==e.charAt(0)){var n=e.indexOf("("),i=e.indexOf(")");if(n!==-1&&i+1===e.length){var r=e.substr(0,n),s=e.substr(n+1,i-(n+1)).split(","),l=1;switch(r){case"rgba":if(4!==s.length)return;l=o(s.pop());case"rgb":if(3!==s.length)return;return[a(s[0]),a(s[1]),a(s[2]),l];case"hsla":if(4!==s.length)return;return s[3]=o(s[3]),u(s);case"hsl":if(3!==s.length)return;return u(s);default:return}}}else{if(4===e.length){var h=parseInt(e.substr(1),16);if(!(h>=0&&h<=4095))return;return[(3840&h)>>4|(3840&h)>>8,240&h|(240&h)>>4,15&h|(15&h)<<4,1]}if(7===e.length){var h=parseInt(e.substr(1),16);if(!(h>=0&&h<=16777215))return;return[(16711680&h)>>16,(65280&h)>>8,255&h,1]}}}}function u(t){var e=(parseFloat(t[0])%360+360)%360/360,i=o(t[1]),r=o(t[2]),a=r<=.5?r*(i+1):r+i-r*i,l=2*r-a,h=[n(255*s(l,a,e+1/3)),n(255*s(l,a,e)),n(255*s(l,a,e-1/3))];return 4===t.length&&(h[3]=t[3]),h}function c(t){if(t){var e,n,i=t[0]/255,r=t[1]/255,a=t[2]/255,o=Math.min(i,r,a),s=Math.max(i,r,a),l=s-o,h=(s+o)/2;if(0===l)e=0,n=0;else{n=h<.5?l/(s+o):l/(2-s-o);var u=((s-i)/6+l/2)/l,c=((s-r)/6+l/2)/l,f=((s-a)/6+l/2)/l;i===s?e=f-c:r===s?e=1/3+u-f:a===s&&(e=2/3+c-u),e<0&&(e+=1),e>1&&(e-=1)}var d=[360*e,n,h];return null!=t[3]&&d.push(t[3]),d}}function f(t,e){var n=h(t);if(n){for(var i=0;i<3;i++)e<0?n[i]=n[i]*(1-e)|0:n[i]=(255-n[i])*e+n[i]|0;return y(n,4===n.length?"rgba":"rgb")}}function d(t,e){var n=h(t);if(n)return((1<<24)+(n[0]<<16)+(n[1]<<8)+ +n[2]).toString(16).slice(1)}function p(t,e,i){if(e&&e.length&&t>=0&&t<=1){i=i||[0,0,0,0];var r=t*(e.length-1),a=Math.floor(r),o=Math.ceil(r),s=e[a],h=e[o],u=r-a;return i[0]=n(l(s[0],h[0],u)),i[1]=n(l(s[1],h[1],u)),i[2]=n(l(s[2],h[2],u)),i[3]=n(l(s[3],h[3],u)),i}}function g(t,e,i){if(e&&e.length&&t>=0&&t<=1){var a=t*(e.length-1),o=Math.floor(a),s=Math.ceil(a),u=h(e[o]),c=h(e[s]),f=a-o,d=y([n(l(u[0],c[0],f)),n(l(u[1],c[1],f)),n(l(u[2],c[2],f)),r(l(u[3],c[3],f))],"rgba");return i?{color:d,leftIndex:o,rightIndex:s,value:a}:d}}function v(t,e,n,r){if(t=h(t))return t=c(t),null!=e&&(t[0]=i(e)),null!=n&&(t[1]=o(n)),null!=r&&(t[2]=o(r)),y(u(t),"rgba")}function m(t,e){if(t=h(t),t&&null!=e)return t[3]=r(e),y(t,"rgba")}function y(t,e){var n=t[0]+","+t[1]+","+t[2];return"rgba"!==e&&"hsva"!==e&&"hsla"!==e||(n+=","+t[3]),e+"("+n+")"}var x={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]};t.exports={parse:h,lift:f,toHex:d,fastMapToColor:p,mapToColor:g,modifyHSL:v,modifyAlpha:m,stringify:y}},function(t,e){var n="undefined"==typeof Float32Array?Array:Float32Array,i={create:function(){var t=new n(6);return i.identity(t),t},identity:function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t},copy:function(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},mul:function(t,e,n){var i=e[0]*n[0]+e[2]*n[1],r=e[1]*n[0]+e[3]*n[1],a=e[0]*n[2]+e[2]*n[3],o=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]=a,t[3]=o,t[4]=s,t[5]=l,t},translate:function(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},rotate:function(t,e,n){var i=e[0],r=e[2],a=e[4],o=e[1],s=e[3],l=e[5],h=Math.sin(n),u=Math.cos(n);return t[0]=i*u+o*h,t[1]=-i*h+o*u,t[2]=r*u+s*h,t[3]=-r*h+u*s,t[4]=u*a+h*l,t[5]=u*l-h*a,t},scale:function(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},invert:function(t,e){var n=e[0],i=e[2],r=e[4],a=e[1],o=e[3],s=e[5],l=n*o-a*i;return l?(l=1/l,t[0]=o*l,t[1]=-a*l,t[2]=-i*l,t[3]=n*l,t[4]=(i*s-o*r)*l,t[5]=(a*r-n*s)*l,t):null}};t.exports=i},function(t,e){var n=Array.prototype.slice,i=function(){this._$handlers={}};i.prototype={constructor:i,one:function(t,e,n){var i=this._$handlers;if(!e||!t)return this;i[t]||(i[t]=[]);for(var r=0;r<i[t].length;r++)if(i[t][r].h===e)return this;return i[t].push({h:e,one:!0,ctx:n||this}),this},on:function(t,e,n){var i=this._$handlers;if(!e||!t)return this;i[t]||(i[t]=[]);for(var r=0;r<i[t].length;r++)if(i[t][r].h===e)return this;return i[t].push({h:e,one:!1,ctx:n||this}),this},isSilent:function(t){var e=this._$handlers;return e[t]&&e[t].length},off:function(t,e){var n=this._$handlers;if(!t)return this._$handlers={},this;if(e){if(n[t]){for(var i=[],r=0,a=n[t].length;r<a;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},trigger:function(t){if(this._$handlers[t]){var e=arguments,i=e.length;i>3&&(e=n.call(e,1));for(var r=this._$handlers[t],a=r.length,o=0;o<a;){switch(i){case 1:r[o].h.call(r[o].ctx);break;case 2:r[o].h.call(r[o].ctx,e[1]);break;case 3:r[o].h.call(r[o].ctx,e[1],e[2]);break;default:r[o].h.apply(r[o].ctx,e)}r[o].one?(r.splice(o,1),a--):o++}}return this},triggerWithContext:function(t){if(this._$handlers[t]){var e=arguments,i=e.length;i>4&&(e=n.call(e,1,e.length-1));for(var r=e[e.length-1],a=this._$handlers[t],o=a.length,s=0;s<o;){switch(i){case 1:a[s].h.call(r);break;case 2:a[s].h.call(r,e[1]);break;case 3:a[s].h.call(r,e[1],e[2]);break;default:a[s].h.apply(r,e)}a[s].one?(a.splice(s,1),o--):s++}}return this}},t.exports=i},function(t,e,n){var i=n(137),r=n(38);n(138),n(136);var a=n(32),o=n(4),s=n(1),l=n(17),h={};h.getScaleExtent=function(t,e){var n,i,r,a=t.scale,l=a.type,h=e.getMin(),u=e.getMax(),c=null!=h,f=null!=u,d=a.getExtent();return"ordinal"===l?n=(e.get("data")||[]).length:(i=e.get("boundaryGap"),s.isArray(i)||(i=[i||0,i||0]),i[0]=o.parsePercent(i[0],1),i[1]=o.parsePercent(i[1],1),r=d[1]-d[0]),null==h&&(h="ordinal"===l?n?0:NaN:d[0]-i[0]*r),null==u&&(u="ordinal"===l?n?n-1:NaN:d[1]+i[1]*r),"dataMin"===h&&(h=d[0]),"dataMax"===u&&(u=d[1]),(null==h||!isFinite(h))&&(h=NaN),(null==u||!isFinite(u))&&(u=NaN),t.setBlank(s.eqNaN(h)||s.eqNaN(u)),e.getNeedCrossZero()&&(h>0&&u>0&&!c&&(h=0),h<0&&u<0&&!f&&(u=0)),[h,u]},h.niceScaleExtent=function(t,e){var n=t.scale,i=h.getScaleExtent(t,e),r=null!=e.getMin(),a=null!=e.getMax(),o=e.get("splitNumber");"log"===n.type&&(n.base=e.get("logBase")),n.setExtent(i[0],i[1]),n.niceExtent(o,r,a);var s=e.get("minInterval");if(isFinite(s)&&!r&&!a&&"interval"===n.type){var l=n.getInterval(),u=Math.max(Math.abs(l),s)/l;i=n.getExtent();var c=(i[1]+i[0])/2;n.setExtent(u*(i[0]-c)+c,u*(i[1]-c)+c),n.niceExtent(o)}var l=e.get("interval");null!=l&&n.setInterval&&n.setInterval(l)},h.createScaleByModel=function(t,e){if(e=e||t.get("type"))switch(e){case"category":return new i(t.getCategories(),[1/0,-(1/0)]);case"value":return new r;default:return(a.getClass(e)||r).create(t)}},h.ifAxisCrossZero=function(t){var e=t.scale.getExtent(),n=e[0],i=e[1];return!(n>0&&i>0||n<0&&i<0)},h.getAxisLabelInterval=function(t,e,n,i){var r,a=0,o=0,s=1;e.length>40&&(s=Math.floor(e.length/40));for(var h=0;h<t.length;h+=s){var u=t[h],c=l.getBoundingRect(e[h],n,"center","top");c[i?"x":"y"]+=u,c[i?"width":"height"]*=1.3,r?r.intersect(c)?(o++,a=Math.max(a,o)):(r.union(c),o=0):r=c.clone()}return 0===a&&s>1?s:(a+1)*s-1},h.getFormattedLabels=function(t,e){var n=t.scale,i=n.getTicksLabels(),r=n.getTicks();return"string"==typeof e?(e=function(t){return function(e){return t.replace("{value}",null!=e?e:"")}}(e),s.map(i,e)):"function"==typeof e?s.map(r,function(i,r){return e("category"===t.type?n.getLabel(i):i,r)},this):i},t.exports=h},function(t,e,n){"use strict";function i(){this._coordinateSystems=[]}var r=n(1),a={};i.prototype={constructor:i,create:function(t,e){var n=[];r.each(a,function(i,r){var a=i.create(t,e);n=n.concat(a||[])}),this._coordinateSystems=n},update:function(t,e){r.each(this._coordinateSystems,function(n){n.update&&n.update(t,e)})},getCoordinateSystems:function(){return this._coordinateSystems.slice()}},i.register=function(t,e){a[t]=e},i.get=function(t){return a[t]},t.exports=i},function(t,e,n){"use strict";var i=n(3),r=n(9),a=i.extendShape({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,a=e.height/2;t.moveTo(n,i-a),t.lineTo(n+r,i+a),t.lineTo(n-r,i+a),t.closePath()}}),o=i.extendShape({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,a=e.height/2;t.moveTo(n,i-a),t.lineTo(n+r,i),t.lineTo(n,i+a),t.lineTo(n-r,i),t.closePath()}}),s=i.extendShape({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,a=Math.max(r,e.height),o=r/2,s=o*o/(a-o),l=i-a+o+s,h=Math.asin(s/o),u=Math.cos(h)*o,c=Math.sin(h),f=Math.cos(h);t.arc(n,l,o,Math.PI-h,2*Math.PI+h);var d=.6*o,p=.7*o;t.bezierCurveTo(n+u-c*d,l+s+f*d,n,i-p,n,i),t.bezierCurveTo(n,i-p,n-u+c*d,l+s+f*d,n-u,l+s),t.closePath()}}),l=i.extendShape({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,a=e.y,o=i/3*2;t.moveTo(r,a),t.lineTo(r+o,a+n),t.lineTo(r,a+n/4*3),t.lineTo(r-o,a+n),t.lineTo(r,a),t.closePath()}}),h={line:i.Line,rect:i.Rect,roundRect:i.Rect,square:i.Rect,circle:i.Circle,diamond:o,pin:s,arrow:l,triangle:a},u={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 a=Math.min(n,i);r.x=t,r.y=e,r.width=a,r.height=a},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}},c={};for(var f in h)h.hasOwnProperty(f)&&(c[f]=new h[f]);var d=i.extendShape({type:"symbol",shape:{symbolType:"",x:0,y:0,width:0,height:0},beforeBrush:function(){var t=this.style,e=this.shape;"pin"===e.symbolType&&"inside"===t.textPosition&&(t.textPosition=["50%","40%"],t.textAlign="center",t.textVerticalAlign="middle")},buildPath:function(t,e,n){var i=e.symbolType,r=c[i];"none"!==e.symbolType&&(r||(i="rect",r=c[i]),u[i](e.x,e.y,e.width,e.height,r.shape),r.buildPath(t,r.shape,n))}}),p=function(t){if("image"!==this.type){var e=this.style,n=this.shape;n&&"line"===n.symbolType?e.stroke=t:this.__isEmptyBrush?(e.stroke=t,e.fill="#fff"):(e.fill&&(e.fill=t),e.stroke&&(e.stroke=t)),this.dirty(!1)}},g={createSymbol:function(t,e,n,a,o,s){var l=0===t.indexOf("empty");l&&(t=t.substr(5,1).toLowerCase()+t.substr(6));var h;return h=0===t.indexOf("image://")?new i.Image({style:{image:t.slice(8),x:e,y:n,width:a,height:o}}):0===t.indexOf("path://")?i.makePath(t.slice(7),{},new r(e,n,a,o)):new d({shape:{symbolType:t,x:e,y:n,width:a,height:o}}),h.__isEmptyBrush=l,h.setColor=p,h.setColor(s),h}};t.exports=g},function(t,e,n){"use strict";function i(t){return t.getBoundingClientRect?t.getBoundingClientRect():{left:0,top:0}}function r(t,e,n,i){return n=n||{},i||!u.canvasSupported?a(t,e,n):u.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):a(t,e,n),n}function a(t,e,n){var r=i(t);n.zrX=e.clientX-r.left,n.zrY=e.clientY-r.top}function o(t,e,n){if(e=e||window.event,null!=e.zrX)return e;var i=e.type,a=i&&i.indexOf("touch")>=0;if(a){var o="touchend"!=i?e.targetTouches[0]:e.changedTouches[0];o&&r(t,o,e,n)}else r(t,e,e,n),e.zrDelta=e.wheelDelta?e.wheelDelta/120:-(e.detail||0)/3;return e}function s(t,e,n){c?t.addEventListener(e,n):t.attachEvent("on"+e,n)}function l(t,e,n){c?t.removeEventListener(e,n):t.detachEvent("on"+e,n)}var h=n(21),u=n(10),c="undefined"!=typeof window&&!!window.addEventListener,f=c?function(t){t.preventDefault(),t.stopPropagation(),t.cancelBubble=!0}:function(t){t.returnValue=!1,t.cancelBubble=!0};t.exports={clientToLocal:r,normalizeEvent:o,addEventListener:s,removeEventListener:l,stop:f,Dispatcher:h}},,function(t,e,n){function i(t,e,n,i){if(!e)return t;var s=r(e[0]),l=a.isArray(s)&&s.length||1;n=n||[],i=i||"extra";for(var h=0;h<l;h++)if(!t[h]){var u=n[h]||i+(h-n.length);t[h]=o(e,h)?{type:"ordinal",name:u}:u}return t}function r(t){return a.isArray(t)?t:a.isObject(t)?t.value:t}var a=n(1),o=i.guessOrdinal=function(t,e){for(var n=0,i=t.length;n<i;n++){var o=r(t[n]);if(!a.isArray(o))return!1;var o=o[e];if(null!=o&&isFinite(o))return!1;if(a.isString(o)&&"-"!==o)return!0}return!1};t.exports=i},function(t,e,n){function i(){this.group=new o,this.uid=s.getUID("viewChart")}function r(t,e){if(t&&(t.trigger(e),"group"===t.type))for(var n=0;n<t.childCount();n++)r(t.childAt(n),e)}function a(t,e,n){var i=h.queryDataIndex(t,e);null!=i?u.each(h.normalizeToArray(i),function(e){r(t.getItemGraphicEl(e),n)}):t.eachItemGraphicEl(function(t){r(t,n)})}var o=n(34),s=n(44),l=n(15),h=n(6),u=n(1);i.prototype={type:"chart",init:function(t,e){},render:function(t,e,n,i){},highlight:function(t,e,n,i){a(t.getData(),i,"emphasis")},downplay:function(t,e,n,i){a(t.getData(),i,"normal")},remove:function(t,e){this.group.removeAll()},dispose:function(){}};var c=i.prototype;c.updateView=c.updateLayout=c.updateVisual=function(t,e,n,i){this.render(t,e,n,i)},l.enableClassExtend(i,["dispose"]),l.enableClassManagement(i,{registerWhenExtend:!0}),t.exports=i},function(t,e,n){"use strict";var i=n(18),r=n(5),a=n(75),o=n(9),s=n(33).devicePixelRatio,l={M:1,L:2,C:3,Q:4,A:5,Z:6,R:7},h=[],u=[],c=[],f=[],d=Math.min,p=Math.max,g=Math.cos,v=Math.sin,m=Math.sqrt,y=Math.abs,x="undefined"!=typeof Float32Array,_=function(){this.data=[],this._len=0,this._ctx=null,this._xi=0,this._yi=0,this._x0=0,this._y0=0,this._ux=0,this._uy=0};_.prototype={constructor:_,_lineDash:null,_dashOffset:0,_dashIdx:0,_dashSum:0,setScale:function(t,e){this._ux=y(1/s/t)||0,this._uy=y(1/s/e)||0},getContext:function(){return this._ctx},beginPath:function(t){return this._ctx=t,t&&t.beginPath(),t&&(this.dpr=t.dpr),this._len=0,this._lineDash&&(this._lineDash=null,this._dashOffset=0),this},moveTo:function(t,e){return this.addData(l.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 n=y(t-this._xi)>this._ux||y(e-this._yi)>this._uy||this._len<5;return this.addData(l.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},bezierCurveTo:function(t,e,n,i,r,a){return this.addData(l.C,t,e,n,i,r,a),this._ctx&&(this._needsDash()?this._dashedBezierTo(t,e,n,i,r,a):this._ctx.bezierCurveTo(t,e,n,i,r,a)),this._xi=r,this._yi=a,this},quadraticCurveTo:function(t,e,n,i){return this.addData(l.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},arc:function(t,e,n,i,r,a){return this.addData(l.A,t,e,n,n,i,r-i,0,a?0:1),this._ctx&&this._ctx.arc(t,e,n,i,r,a),this._xi=g(r)*n+t,this._yi=v(r)*n+t,this},arcTo:function(t,e,n,i,r){return this._ctx&&this._ctx.arcTo(t,e,n,i,r),this},rect:function(t,e,n,i){return this._ctx&&this._ctx.rect(t,e,n,i),this.addData(l.R,t,e,n,i),this},closePath:function(){this.addData(l.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},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,this._dashIdx=0;for(var e=0,n=0;n<t.length;n++)e+=t[n];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||!x||(this.data=new Float32Array(e));for(var n=0;n<e;n++)this.data[n]=t[n];this._len=e},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();x&&this.data instanceof Float32Array&&(this.data=new Float32Array(i+n));for(var r=0;r<e;r++)for(var a=t[r].data,o=0;o<a.length;o++)this.data[i++]=a[o];this._len=i},addData:function(t){var e=this.data;this._len+arguments.length>e.length&&(this._expandData(),e=this.data);for(var n=0;n<arguments.length;n++)e[this._len++]=arguments[n];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 n,i,r=this._dashSum,a=this._dashOffset,o=this._lineDash,s=this._ctx,l=this._xi,h=this._yi,u=t-l,c=e-h,f=m(u*u+c*c),g=l,v=h,y=o.length;for(u/=f,c/=f,a<0&&(a=r+a),a%=r,g-=a*u,v-=a*c;u>0&&g<=t||u<0&&g>=t||0==u&&(c>0&&v<=e||c<0&&v>=e);)i=this._dashIdx,n=o[i],g+=u*n,v+=c*n,this._dashIdx=(i+1)%y,u>0&&g<l||u<0&&g>l||c>0&&v<h||c<0&&v>h||s[i%2?"moveTo":"lineTo"](u>=0?d(g,t):p(g,t),c>=0?d(v,e):p(v,e));u=g-t,c=v-e,this._dashOffset=-m(u*u+c*c)},_dashedBezierTo:function(t,e,n,r,a,o){var s,l,h,u,c,f=this._dashSum,d=this._dashOffset,p=this._lineDash,g=this._ctx,v=this._xi,y=this._yi,x=i.cubicAt,_=0,b=this._dashIdx,w=p.length,M=0;for(d<0&&(d=f+d),d%=f,s=0;s<1;s+=.1)l=x(v,t,n,a,s+.1)-x(v,t,n,a,s),h=x(y,e,r,o,s+.1)-x(y,e,r,o,s),_+=m(l*l+h*h);for(;b<w&&(M+=p[b],!(M>d));b++);for(s=(M-d)/_;s<=1;)u=x(v,t,n,a,s),c=x(y,e,r,o,s),b%2?g.moveTo(u,c):g.lineTo(u,c),s+=p[b]/_,b=(b+1)%w;b%2!==0&&g.lineTo(a,o),l=a-u,h=o-c,this._dashOffset=-m(l*l+h*h)},_dashedQuadraticTo:function(t,e,n,i){var r=n,a=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,a)},toStatic:function(){var t=this.data;t instanceof Array&&(t.length=this._len,x&&(this.data=new Float32Array(t)))},getBoundingRect:function(){h[0]=h[1]=c[0]=c[1]=Number.MAX_VALUE,u[0]=u[1]=f[0]=f[1]=-Number.MAX_VALUE;for(var t=this.data,e=0,n=0,i=0,s=0,d=0;d<t.length;){var p=t[d++];switch(1==d&&(e=t[d],n=t[d+1],i=e,s=n),p){case l.M:i=t[d++],s=t[d++],e=i,n=s,c[0]=i,c[1]=s,f[0]=i,f[1]=s;break;case l.L:a.fromLine(e,n,t[d],t[d+1],c,f),e=t[d++],n=t[d++];break;case l.C:a.fromCubic(e,n,t[d++],t[d++],t[d++],t[d++],t[d],t[d+1],c,f),e=t[d++],n=t[d++];break;case l.Q:a.fromQuadratic(e,n,t[d++],t[d++],t[d],t[d+1],c,f),e=t[d++],n=t[d++];break;case l.A:var m=t[d++],y=t[d++],x=t[d++],_=t[d++],b=t[d++],w=t[d++]+b,M=(t[d++],1-t[d++]);1==d&&(i=g(b)*x+m,s=v(b)*_+y),a.fromArc(m,y,x,_,b,w,M,c,f),e=g(w)*x+m,n=v(w)*_+y;break;case l.R:i=e=t[d++],s=n=t[d++];var T=t[d++],S=t[d++];a.fromLine(i,s,i+T,s+S,c,f);break;case l.Z:e=i,n=s}r.min(h,h,c),r.max(u,u,f)}return 0===d&&(h[0]=h[1]=u[0]=u[1]=0),new o(h[0],h[1],u[0]-h[0],u[1]-h[1])},rebuildPath:function(t){for(var e,n,i,r,a,o,s=this.data,h=this._ux,u=this._uy,c=this._len,f=0;f<c;){var d=s[f++];switch(1==f&&(i=s[f],r=s[f+1],e=i,n=r),d){case l.M:e=i=s[f++],n=r=s[f++],t.moveTo(i,r);break;case l.L:a=s[f++],o=s[f++],(y(a-i)>h||y(o-r)>u||f===c-1)&&(t.lineTo(a,o),i=a,r=o);break;case l.C:t.bezierCurveTo(s[f++],s[f++],s[f++],s[f++],s[f++],s[f++]),i=s[f-2],r=s[f-1];break;case l.Q:t.quadraticCurveTo(s[f++],s[f++],s[f++],s[f++]),i=s[f-2],r=s[f-1];break;case l.A:var p=s[f++],m=s[f++],x=s[f++],_=s[f++],b=s[f++],w=s[f++],M=s[f++],T=s[f++],S=x>_?x:_,A=x>_?1:x/_,I=x>_?_/x:1,C=Math.abs(x-_)>.001,L=b+w;C?(t.translate(p,m),t.rotate(M),t.scale(A,I),t.arc(0,0,S,b,L,1-T),t.scale(1/A,1/I),t.rotate(-M),t.translate(-p,-m)):t.arc(p,m,S,b,L,1-T),1==f&&(e=g(b)*x+p,n=v(b)*_+m),i=g(L)*x+p,r=v(L)*_+m;break;case l.R:e=i=s[f],n=r=s[f+1],t.rect(s[f++],s[f++],s[f++],s[f++]);break;case l.Z:t.closePath(),i=e,r=n}}}},_.CMD=l,t.exports=_},function(t,e,n){var i=n(1);t.exports=function(t){for(var e=0;e<t.length;e++)t[e][1]||(t[e][1]=t[e][0]);return function(e){for(var n={},r=0;r<t.length;r++){var a=t[r][1];if(!(e&&i.indexOf(e,a)>=0)){var o=this.getShallow(a);null!=o&&(n[t[r][0]]=o)}}return n}}},function(t,e,n){"use strict";var i=n(3),r=n(1),a=n(2);n(53),n(109),a.extendComponentView({type:"grid",render:function(t,e){this.group.removeAll(),t.get("show")&&this.group.add(new i.Rect({shape:t.coordinateSystem.getRect(),style:r.defaults({fill:t.get("backgroundColor")},t.getItemStyle()),silent:!0,z2:-1}))}}),a.registerPreprocessor(function(t){t.xAxis&&t.yAxis&&!t.grid&&(t.grid={})})},function(t,e,n){function i(){this._extent=[1/0,-(1/0)],this._interval=0,this.init&&this.init.apply(this,arguments)}var r=n(15),a=i.prototype;a.parse=function(t){return t},a.contain=function(t){var e=this._extent;return t>=e[0]&&t<=e[1]},a.normalize=function(t){var e=this._extent;return e[1]===e[0]?.5:(t-e[0])/(e[1]-e[0])},a.scale=function(t){var e=this._extent;return t*(e[1]-e[0])+e[0]},a.unionExtent=function(t){var e=this._extent;t[0]<e[0]&&(e[0]=t[0]),t[1]>e[1]&&(e[1]=t[1])},a.unionExtentFromData=function(t,e){this.unionExtent(t.getDataExtent(e,!0))},a.getExtent=function(){return this._extent.slice()},a.setExtent=function(t,e){var n=this._extent;isNaN(t)||(n[0]=t),isNaN(e)||(n[1]=e)},a.getTicksLabels=function(){for(var t=[],e=this.getTicks(),n=0;n<e.length;n++)t.push(this.getLabel(e[n]));return t},r.enableClassExtend(i),r.enableClassManagement(i,{registerWhenExtend:!0}),t.exports=i},function(t,e){var n=1;"undefined"!=typeof window&&(n=Math.max(window.devicePixelRatio||1,1));var i={debugMode:0,devicePixelRatio:n};t.exports=i},function(t,e,n){var i=n(1),r=n(60),a=n(9),o=function(t){t=t||{},r.call(this,t);for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e]);this._children=[],this.__storage=null,this.__dirty=!0};o.prototype={constructor:o,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,n=0;n<e.length;n++)if(e[n].name===t)return e[n]},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 n=this._children,i=n.indexOf(e);i>=0&&(n.splice(i,0,t),this._doAdd(t))}return this},_doAdd:function(t){t.parent&&t.parent.remove(t),t.parent=this;var e=this.__storage,n=this.__zr;e&&e!==t.__storage&&(e.addToMap(t),t instanceof o&&t.addChildrenToStorage(e)),n&&n.refresh()},remove:function(t){var e=this.__zr,n=this.__storage,r=this._children,a=i.indexOf(r,t);return a<0?this:(r.splice(a,1),t.parent=null,n&&(n.delFromMap(t.id),t instanceof o&&t.delChildrenFromStorage(n)),e&&e.refresh(),this)},removeAll:function(){var t,e,n=this._children,i=this.__storage;for(e=0;e<n.length;e++)t=n[e],i&&(i.delFromMap(t.id),t instanceof o&&t.delChildrenFromStorage(i)),t.parent=null;return n.length=0,this},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},traverse:function(t,e){for(var n=0;n<this._children.length;n++){var i=this._children[n];t.call(e,i),"group"===i.type&&i.traverse(t,e)}return this},addChildrenToStorage:function(t){for(var e=0;e<this._children.length;e++){var n=this._children[e];t.addToMap(n),n instanceof o&&n.addChildrenToStorage(t)}},delChildrenFromStorage:function(t){for(var e=0;e<this._children.length;e++){var n=this._children[e];t.delFromMap(n.id),n instanceof o&&n.delChildrenFromStorage(t)}},dirty:function(){return this.__dirty=!0,this.__zr&&this.__zr.refresh(),this},getBoundingRect:function(t){for(var e=null,n=new a(0,0,0,0),i=t||this._children,r=[],o=0;o<i.length;o++){var s=i[o];if(!s.ignore&&!s.invisible){var l=s.getBoundingRect(),h=s.getLocalTransform(r);h?(n.copy(l),n.applyTransform(h),e=e||n.clone(),e.union(n)):(e=e||l.clone(),e.union(l))}}return e||n}},i.inherits(o,r),t.exports=o},function(t,e,n){"use strict";function i(t){for(var e=0;e<t.length&&null==t[e];)e++;return t[e]}function r(t){var e=i(t);return null!=e&&!c.isArray(p(e))}function a(t,e,n){t=t||[];var i=e.get("coordinateSystem"),a=v[i],o=d.get(i),s=a&&a(t,e,n),m=s&&s.dimensions;m||(m=o&&o.dimensions||["x","y"],m=u(m,t,m.concat(["value"])));var y=s?s.categoryIndex:-1,x=new h(m,e),_=l(s,t),b={},w=y>=0&&r(t)?function(t,e,n,i){return f.isDataItemOption(t)&&(x.hasItemOption=!0),i===y?n:g(p(t),m[i])}:function(t,e,n,i){var r=p(t),a=g(r&&r[i],m[i]);f.isDataItemOption(t)&&(x.hasItemOption=!0);var o=s&&s.categoryAxesModels;return o&&o[e]&&"string"==typeof a&&(b[e]=b[e]||o[e].getCategories(),a=c.indexOf(b[e],a),a<0&&!isNaN(a)&&(a=+a)),a};return x.hasItemOption=!1,x.initData(t,_,w),x}function o(t){return"category"!==t&&"time"!==t}function s(t){return"category"===t?"ordinal":"time"===t?"time":"float"}function l(t,e){var n,i=[],r=t&&t.dimensions[t.categoryIndex];if(r&&(n=t.categoryAxesModels[r.name]),n){var a=n.getCategories();if(a){var o=e.length;if(c.isArray(e[0])&&e[0].length>1){i=[];for(var s=0;s<o;s++)i[s]=a[e[s][t.categoryIndex||0]]}else i=a.slice(0)}}return i}var h=n(14),u=n(27),c=n(1),f=n(6),d=n(23),p=f.getDataItemValue,g=f.converDataValue,v={cartesian2d:function(t,e,n){var i=c.map(["xAxis","yAxis"],function(t){return n.queryComponents({mainType:t,index:e.get(t+"Index"),id:e.get(t+"Id")})[0]}),r=i[0],a=i[1],l=r.get("type"),h=a.get("type"),f=[{name:"x",type:s(l),stackable:o(l)},{name:"y",type:s(h),stackable:o(h)}],d="category"===l,p="category"===h;u(f,t,["x","y","z"]);var g={};return d&&(g.x=r),p&&(g.y=a),{dimensions:f,categoryIndex:d?0:p?1:-1,categoryAxesModels:g}},singleAxis:function(t,e,n){var i=n.queryComponents({mainType:"singleAxis",index:e.get("singleAxisIndex"),id:e.get("singleAxisId")})[0],r=i.get("type"),a="category"===r,l=[{name:"single",type:s(r),stackable:o(r)}];u(l,t);var h={};return a&&(h.single=i),{dimensions:l,categoryIndex:a?0:-1,categoryAxesModels:h}},polar:function(t,e,n){var i=n.queryComponents({mainType:"polar",index:e.get("polarIndex"),id:e.get("polarId")})[0],r=i.findAxisModel("angleAxis"),a=i.findAxisModel("radiusAxis"),l=a.get("type"),h=r.get("type"),c=[{name:"radius",type:s(l),stackable:o(l)},{name:"angle",type:s(h),stackable:o(h)}],f="category"===h,d="category"===l;u(c,t,["radius","angle","value"]);var p={};return d&&(p.radius=a),f&&(p.angle=r),{dimensions:c,categoryIndex:f?1:d?0:-1,categoryAxesModels:p}},geo:function(t,e,n){return{dimensions:u([{name:"lng"},{name:"lat"}],t,["lng","lat","value"])}}};t.exports=a},function(t,e,n){function i(t){t=t||{},o.call(this,t);for(var e in t)t.hasOwnProperty(e)&&"style"!==e&&(this[e]=t[e]);this.style=new a(t.style),this._rect=null,this.__clipPaths=[]}var r=n(1),a=n(66),o=n(60),s=n(77);i.prototype={constructor:i,type:"displayable",__dirty:!0,invisible:!1,z:0,z2:0,zlevel:0,draggable:!1,dragging:!1,silent:!1,culling:!1,cursor:"pointer",rectHover:!1,progressive:-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 n=this.transformCoordToLocal(t,e),i=this.getBoundingRect();return i.contain(n[0],n[1])},dirty:function(){this.__dirty=!0,this._rect=null,this.__zr&&this.__zr.refresh()},animateStyle:function(t){return this.animate("style",t)},attrKV:function(t,e){"style"!==t?o.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 a(t),this.dirty(!1),this}},r.inherits(i,o),r.mixin(i,s),t.exports=i},function(t,e){var n=function(t){this.colorStops=t||[]};n.prototype={constructor:n,addColorStop:function(t,e){this.colorStops.push({offset:t,color:e})}},t.exports=n},function(t,e,n){var i=n(4),r=n(8),a=n(32),o=Math.floor,s=Math.ceil,l=i.getPrecisionSafe,h=i.round,u=a.extend({type:"interval",_interval:0,setExtent:function(t,e){var n=this._extent;isNaN(t)||(n[0]=parseFloat(t)),isNaN(e)||(n[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]),u.prototype.setExtent.call(this,e[0],e[1])},getInterval:function(){return this._interval||this.niceTicks(),this._interval},setInterval:function(t){this._interval=t,this._niceExtent=this._extent.slice()},getTicks:function(){this._interval||this.niceTicks();var t=this._interval,e=this._extent,n=[],i=1e4;if(t){var r=this._niceExtent,a=l(t)+2;e[0]<r[0]&&n.push(e[0]);for(var o=r[0];o<=r[1];)if(n.push(o),o=h(o+t,a),n.length>i)return[];e[1]>(n.length?n[n.length-1]:r[1])&&n.push(e[1])}return n},getTicksLabels:function(){for(var t=[],e=this.getTicks(),n=0;n<e.length;n++)t.push(this.getLabel(e[n]));return t},getLabel:function(t){return r.addCommas(t)},niceTicks:function(t){t=t||5;var e=this._extent,n=e[1]-e[0];if(isFinite(n)){n<0&&(n=-n,e.reverse());var r=h(i.nice(n/t,!0),Math.max(l(e[0]),l(e[1]))+2),a=l(r)+2,u=[h(s(e[0]/r)*r,a),h(o(e[1]/r)*r,a)];this._interval=r,this._niceExtent=u}},niceExtent:function(t,e,n){var i=this._extent;if(i[0]===i[1])if(0!==i[0]){var r=i[0];n?i[0]-=r/2:(i[1]+=r/2,i[0]-=r/2)}else i[1]=1;var a=i[1]-i[0];isFinite(a)||(i[0]=0,i[1]=1),this.niceTicks(t);var l=this._interval;e||(i[0]=h(o(i[0]/l)*l)),n||(i[1]=h(s(i[1]/l)*l))}});u.create=function(){return new u},t.exports=u},function(t,e,n){function i(t){this.group=new a.Group,this._symbolCtor=t||o}function r(t,e,n){var i=t.getItemLayout(e);return i&&!isNaN(i[0])&&!isNaN(i[1])&&!(n&&n(e))&&"none"!==t.getItemVisual(e,"symbol")}var a=n(3),o=n(50),s=i.prototype;s.updateData=function(t,e){var n=this.group,i=t.hostModel,o=this._data,s=this._symbolCtor,l={itemStyle:i.getModel("itemStyle.normal").getItemStyle(["color"]),hoverItemStyle:i.getModel("itemStyle.emphasis").getItemStyle(),symbolRotate:i.get("symbolRotate"),symbolOffset:i.get("symbolOffset"),hoverAnimation:i.get("hoverAnimation"),labelModel:i.getModel("label.normal"),hoverLabelModel:i.getModel("label.emphasis")};t.diff(o).add(function(i){var a=t.getItemLayout(i);if(r(t,i,e)){var o=new s(t,i,l);o.attr("position",a),t.setItemGraphicEl(i,o),n.add(o)}}).update(function(h,u){var c=o.getItemGraphicEl(u),f=t.getItemLayout(h);return r(t,h,e)?(c?(c.updateData(t,h,l),a.updateProps(c,{position:f},i)):(c=new s(t,h),c.attr("position",f)),n.add(c),void t.setItemGraphicEl(h,c)):void n.remove(c)}).remove(function(t){var e=o.getItemGraphicEl(t);e&&e.fadeOut(function(){n.remove(e)})}).execute(),this._data=t},s.updateLayout=function(){var t=this._data;t&&t.eachItemGraphicEl(function(e,n){var i=t.getItemLayout(n);e.attr("position",i)})},s.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.exports=i},,,function(t,e,n){function i(t,e){var n=t[1]-t[0],i=e,r=n/i/2;t[0]+=r,t[1]-=r}var r=n(4),a=r.linearMap,o=n(1),s=[0,1],l=function(t,e,n){this.dim=t,this.scale=e,this._extent=n||[0,0],this.inverse=!1,this.onBand=!1};l.prototype={constructor:l,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},containData:function(t){return this.contain(this.dataToCoord(t))},getExtent:function(){var t=this._extent.slice();return t},getPixelPrecision:function(t){return r.getPixelPrecision(t||this.scale.getExtent(),this._extent)},setExtent:function(t,e){var n=this._extent;n[0]=t,n[1]=e},dataToCoord:function(t,e){var n=this._extent,r=this.scale;return t=r.normalize(t),this.onBand&&"ordinal"===r.type&&(n=n.slice(),i(n,r.count())),a(t,s,n,e)},coordToData:function(t,e){var n=this._extent,r=this.scale;this.onBand&&"ordinal"===r.type&&(n=n.slice(),i(n,r.count()));var o=a(t,n,s,e);return this.scale.scale(o)},getTicksCoords:function(t){if(this.onBand&&!t){for(var e=this.getBands(),n=[],i=0;i<e.length;i++)n.push(e[i][0]);return e[i-1]&&n.push(e[i-1][1]),n}return o.map(this.scale.getTicks(),this.dataToCoord,this)},getLabelsCoords:function(){return o.map(this.scale.getTicks(),this.dataToCoord,this)},getBands:function(){for(var t=this.getExtent(),e=[],n=this.scale.count(),i=t[0],r=t[1],a=r-i,o=0;o<n;o++)e.push([a*o/n+i,a*(o+1)/n+i]);return e},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},isBlank:function(){return this._isBlank},setBlank:function(t){this._isBlank=t}},t.exports=l},function(t,e){"use strict";function n(t){return t}function i(t,e,i,r){this._old=t,this._new=e,this._oldKeyGetter=i||n,this._newKeyGetter=r||n}function r(t,e,n,i){for(var r=0;r<t.length;r++){var a=i(t[r],r),o=e[a];null==o?(n.push(a),e[a]=r):(o.length||(e[a]=o=[o]),o.push(r))}}i.prototype={constructor:i,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,e=this._old,n=this._new,i=this._oldKeyGetter,a=this._newKeyGetter,o={},s={},l=[],h=[];for(r(e,o,l,i),r(n,s,h,a),t=0;t<e.length;t++){var u=l[t],c=s[u];if(null!=c){var f=c.length;f?(1===f&&(s[u]=null),c=c.unshift()):s[u]=null,this._update&&this._update(c,t)}else this._remove&&this._remove(t)}for(var t=0;t<h.length;t++){var u=h[t];if(s.hasOwnProperty(u)){var c=s[u];if(null==c)continue;if(c.length)for(var d=0,f=c.length;d<f;d++)this._add&&this._add(c[d]);else this._add&&this._add(c)}}}},t.exports=i},function(t,e,n){var i=n(1),r=n(15),a=r.parseClassType,o=0,s={},l="_";s.getUID=function(t){return[t||"",o++,Math.random()].join(l)},s.enableSubTypeDefaulter=function(t){var e={};return t.registerSubTypeDefaulter=function(t,n){t=a(t),e[t.main]=n},t.determineSubType=function(n,i){var r=i.type;if(!r){var o=a(n).main;t.hasSubTypes(n)&&e[o]&&(r=e[o](i))}return r},t},s.enableTopologicalTravel=function(t,e){function n(t){var n={},o=[];return i.each(t,function(s){var l=r(n,s),h=l.originalDeps=e(s),u=a(h,t);l.entryCount=u.length,0===l.entryCount&&o.push(s),i.each(u,function(t){i.indexOf(l.predecessor,t)<0&&l.predecessor.push(t);var e=r(n,t);i.indexOf(e.successor,t)<0&&e.successor.push(s)})}),{graph:n,noEntryList:o}}function r(t,e){return t[e]||(t[e]={predecessor:[],successor:[]}),t[e]}function a(t,e){var n=[];return i.each(t,function(t){i.indexOf(e,t)>=0&&n.push(t)}),n}t.topologicalTravel=function(t,e,r,a){function o(t){h[t].entryCount--,0===h[t].entryCount&&u.push(t)}function s(t){c[t]=!0,o(t)}if(t.length){var l=n(e),h=l.graph,u=l.noEntryList,c={};for(i.each(t,function(t){c[t]=!0});u.length;){var f=u.pop(),d=h[f],p=!!c[f];p&&(r.call(a,f,d.originalDeps.slice()),delete c[f]),i.each(d.successor,p?s:o)}i.each(c,function(){throw new Error("Circle dependency may exists")})}}},t.exports=s},function(t,e){t.exports=function(t,e,n,i,r){i.eachRawSeriesByType(t,function(t){var r=t.getData(),a=t.get("symbol")||e,o=t.get("symbolSize");r.setVisual({legendSymbol:n||a,symbol:a,symbolSize:o}),i.isSeriesFiltered(t)||("function"==typeof o&&r.each(function(e){var n=t.getRawValue(e),i=t.getDataParams(e);r.setItemVisual(e,"symbolSize",o(n,i))}),r.each(function(t){var e=r.getItemModel(t),n=e.getShallow("symbol",!0),i=e.getShallow("symbolSize",!0);null!=n&&r.setItemVisual(t,"symbol",n),null!=i&&r.setItemVisual(t,"symbolSize",i)}))})}},function(t,e){function n(t){for(var e=0;t>=u;)e|=1&t,t>>=1;return t+e}function i(t,e,n,i){var a=e+1;if(a===n)return 1;if(i(t[a++],t[e])<0){for(;a<n&&i(t[a],t[a-1])<0;)a++;r(t,e,a)}else for(;a<n&&i(t[a],t[a-1])>=0;)a++;return a-e}function r(t,e,n){for(n--;e<n;){var i=t[e];t[e++]=t[n],t[n--]=i}}function a(t,e,n,i,r){for(i===e&&i++;i<n;i++){for(var a,o=t[i],s=e,l=i;s<l;)a=s+l>>>1,r(o,t[a])<0?l=a:s=a+1;var h=i-s;switch(h){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(;h>0;)t[s+h]=t[s+h-1],h--}t[s]=o}}function o(t,e,n,i,r,a){var o=0,s=0,l=1;if(a(t,e[n+r])>0){for(s=i-r;l<s&&a(t,e[n+r+l])>0;)o=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s),o+=r,l+=r}else{for(s=r+1;l<s&&a(t,e[n+r-l])<=0;)o=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s);var h=o;o=r-l,l=r-h}for(o++;o<l;){var u=o+(l-o>>>1);a(t,e[n+u])>0?o=u+1:l=u}return l}function s(t,e,n,i,r,a){var o=0,s=0,l=1;if(a(t,e[n+r])<0){for(s=r+1;l<s&&a(t,e[n+r-l])<0;)o=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s);var h=o;o=r-l,l=r-h}else{for(s=i-r;l<s&&a(t,e[n+r+l])>=0;)o=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s),o+=r,l+=r}for(o++;o<l;){var u=o+(l-o>>>1);a(t,e[n+u])<0?l=u:o=u+1}return l}function l(t,e){function n(t,e){u[y]=t,d[y]=e,y+=1}function i(){for(;y>1;){var t=y-2;if(t>=1&&d[t-1]<=d[t]+d[t+1]||t>=2&&d[t-2]<=d[t]+d[t-1])d[t-1]<d[t+1]&&t--;else if(d[t]>d[t+1])break;a(t)}}function r(){for(;y>1;){var t=y-2;t>0&&d[t-1]<d[t+1]&&t--,a(t)}}function a(n){var i=u[n],r=d[n],a=u[n+1],c=d[n+1];d[n]=r+c,n===y-3&&(u[n+1]=u[n+2],d[n+1]=d[n+2]),y--;var f=s(t[a],t,i,r,0,e);i+=f,r-=f,0!==r&&(c=o(t[i+r-1],t,a,c,c-1,e),0!==c&&(r<=c?l(i,r,a,c):h(i,r,a,c)))}function l(n,i,r,a){var l=0;for(l=0;l<i;l++)x[l]=t[n+l];var h=0,u=r,f=n;if(t[f++]=t[u++],0!==--a){if(1===i){for(l=0;l<a;l++)t[f+l]=t[u+l];return void(t[f+a]=x[h])}for(var d,g,v,m=p;;){d=0,g=0,v=!1;do if(e(t[u],x[h])<0){if(t[f++]=t[u++],g++,d=0,0===--a){v=!0;break}}else if(t[f++]=x[h++],d++,g=0,1===--i){v=!0;break}while((d|g)<m);if(v)break;do{if(d=s(t[u],x,h,i,0,e),0!==d){for(l=0;l<d;l++)t[f+l]=x[h+l];if(f+=d,h+=d,i-=d,i<=1){v=!0;break}}if(t[f++]=t[u++],0===--a){v=!0;break}if(g=o(x[h],t,u,a,0,e),0!==g){for(l=0;l<g;l++)t[f+l]=t[u+l];if(f+=g,u+=g,a-=g,0===a){v=!0;break}}if(t[f++]=x[h++],1===--i){v=!0;break}m--}while(d>=c||g>=c);if(v)break;m<0&&(m=0),m+=2}if(p=m,p<1&&(p=1),1===i){for(l=0;l<a;l++)t[f+l]=t[u+l];t[f+a]=x[h]}else{if(0===i)throw new Error;for(l=0;l<i;l++)t[f+l]=x[h+l]}}else for(l=0;l<i;l++)t[f+l]=x[h+l]}function h(n,i,r,a){var l=0;for(l=0;l<a;l++)x[l]=t[r+l];var h=n+i-1,u=a-1,f=r+a-1,d=0,g=0;if(t[f--]=t[h--],0!==--i){if(1===a){for(f-=i,h-=i,g=f+1,d=h+1,l=i-1;l>=0;l--)t[g+l]=t[d+l];return void(t[f]=x[u])}for(var v=p;;){var m=0,y=0,_=!1;do if(e(x[u],t[h])<0){if(t[f--]=t[h--],m++,y=0,0===--i){_=!0;break}}else if(t[f--]=x[u--],y++,m=0,1===--a){_=!0;break}while((m|y)<v);if(_)break;do{if(m=i-s(x[u],t,n,i,i-1,e),0!==m){for(f-=m,h-=m,i-=m,g=f+1,d=h+1,l=m-1;l>=0;l--)t[g+l]=t[d+l];if(0===i){_=!0;break}}if(t[f--]=x[u--],1===--a){_=!0;break}if(y=a-o(t[h],x,0,a,a-1,e),0!==y){for(f-=y,u-=y,a-=y,g=f+1,d=u+1,l=0;l<y;l++)t[g+l]=x[d+l];if(a<=1){_=!0;break}}if(t[f--]=t[h--],0===--i){_=!0;break}v--}while(m>=c||y>=c);if(_)break;v<0&&(v=0),v+=2}if(p=v,p<1&&(p=1),1===a){for(f-=i,h-=i,g=f+1,d=h+1,l=i-1;l>=0;l--)t[g+l]=t[d+l];t[f]=x[u]}else{if(0===a)throw new Error;for(d=f-(a-1),l=0;l<a;l++)t[d+l]=x[l]}}else for(d=f-(a-1),l=0;l<a;l++)t[d+l]=x[l]}var u,d,p=c,g=0,v=f,m=0,y=0;g=t.length,g<2*f&&(v=g>>>1);var x=[];m=g<120?5:g<1542?10:g<119151?19:40,u=[],d=[],this.mergeRuns=i,this.forceMergeRuns=r,this.pushRun=n}function h(t,e,r,o){r||(r=0),o||(o=t.length);var s=o-r;if(!(s<2)){var h=0;if(s<u)return h=i(t,r,o,e),void a(t,r,o,r+h,e);var c=new l(t,e),f=n(s);do{if(h=i(t,r,o,e),h<f){var d=s;d>f&&(d=f),a(t,r,r+d,r+h,e),h=d}c.pushRun(r,h),c.mergeRuns(),s-=h,r+=h}while(0!==s);c.forceMergeRuns()}}var u=32,c=7,f=256;t.exports=h},function(t,e){var n={},i="\0__throttleOriginMethod",r="\0__throttleRate",a="\0__throttleType";n.throttle=function(t,e,n){function i(){h=(new Date).getTime(),u=null,t.apply(o,s||[])}var r,a,o,s,l=0,h=0,u=null;e=e||0;var c=function(){r=(new Date).getTime(),o=this,s=arguments,a=r-(n?l:h)-e,clearTimeout(u),n?u=setTimeout(i,e):a>=0?i():u=setTimeout(i,-a),l=r};return c.clear=function(){u&&(clearTimeout(u),u=null)},c},n.createOrUpdate=function(t,e,o,s){var l=t[e];if(l){var h=l[i]||l,u=l[a],c=l[r];if(c!==o||u!==s){if(null==o||!s)return t[e]=h;l=t[e]=n.throttle(h,o,"debounce"===s),l[i]=h,l[a]=s,l[r]=o}return l}},n.clear=function(t,e){var n=t[e];n&&n[i]&&(t[e]=n[i])},t.exports=n},function(t,e,n){var i=n(33);t.exports=function(){if(0!==i.debugMode)if(1==i.debugMode)for(var t in arguments)throw new Error(arguments[t]);else if(i.debugMode>1)for(var t in arguments)console.log(arguments[t])}},function(t,e,n){function i(t){r.call(this,t)}var r=n(36),a=n(9),o=n(1),s=n(151),l=new s(50);i.prototype={constructor:i,type:"image",brush:function(t,e){var n,i=this.style,r=i.image;if(i.bind(t,this,e),n="string"==typeof r?this._image:r,!n&&r){var a=l.get(r);if(!a)return n=new Image,n.onload=function(){n.onload=null;for(var t=0;t<a.pending.length;t++)a.pending[t].dirty()},a={image:n,pending:[this]},n.src=r,l.put(r,a),void(this._image=n);if(n=a.image,this._image=n,!n.width||!n.height)return void a.pending.push(this)}if(n){var o=i.width||n.width,s=i.height||n.height,h=i.x||0,u=i.y||0;
-if(!n.width||!n.height)return;if(this.setTransform(t),i.sWidth&&i.sHeight){var c=i.sx||0,f=i.sy||0;t.drawImage(n,c,f,i.sWidth,i.sHeight,h,u,o,s)}else if(i.sx&&i.sy){var c=i.sx,f=i.sy,d=o-c,p=s-f;t.drawImage(n,c,f,d,p,h,u,o,s)}else t.drawImage(n,h,u,o,s);null==i.width&&(i.width=o),null==i.height&&(i.height=s),this.restoreTransform(t),null!=i.text&&this.drawRectText(t,this.getBoundingRect())}},getBoundingRect:function(){var t=this.style;return this._rect||(this._rect=new a(t.x||0,t.y||0,t.width||0,t.height||0)),this._rect}},o.inherits(i,r),t.exports=i},function(t,e,n){function i(t,e){var n=t.getItemVisual(e,"symbolSize");return n instanceof Array?n.slice():[+n,+n]}function r(t){return[t[0]/2,t[1]/2]}function a(t,e,n){h.Group.call(this),this.updateData(t,e,n)}function o(t,e){this.parent.drift(t,e)}var s=n(1),l=n(24),h=n(3),u=n(4),c=a.prototype;c._createSymbol=function(t,e,n,i){this.removeAll();var a=e.hostModel,s=e.getItemVisual(n,"color"),u=l.createSymbol(t,-1,-1,2,2,s);u.attr({z2:100,culling:!0,scale:[0,0]}),u.drift=o,h.initProps(u,{scale:r(i)},a,n),this._symbolType=t,this.add(u)},c.stopSymbolAnimation=function(t){this.childAt(0).stopAnimation(t)},c.getSymbolPath=function(){return this.childAt(0)},c.getScale=function(){return this.childAt(0).scale},c.highlight=function(){this.childAt(0).trigger("emphasis")},c.downplay=function(){this.childAt(0).trigger("normal")},c.setZ=function(t,e){var n=this.childAt(0);n.zlevel=t,n.z=e},c.setDraggable=function(t){var e=this.childAt(0);e.draggable=t,e.cursor=t?"move":"pointer"},c.updateData=function(t,e,n){this.silent=!1;var a=t.getItemVisual(e,"symbol")||"circle",o=t.hostModel,s=i(t,e);if(a!==this._symbolType)this._createSymbol(a,t,e,s);else{var l=this.childAt(0);h.updateProps(l,{scale:r(s)},o,e)}this._updateCommon(t,e,s,n),this._seriesModel=o};var f=["itemStyle","normal"],d=["itemStyle","emphasis"],p=["label","normal"],g=["label","emphasis"];c._updateCommon=function(t,e,n,i){var a=this.childAt(0),o=t.hostModel,l=t.getItemVisual(e,"color");"image"!==a.type&&a.useStyle({strokeNoScale:!0}),i=i||null;var c=i&&i.itemStyle,v=i&&i.hoverItemStyle,m=i&&i.symbolRotate,y=i&&i.symbolOffset,x=i&&i.labelModel,_=i&&i.hoverLabelModel,b=i&&i.hoverAnimation;if(!i||t.hasItemOption){var w=t.getItemModel(e);c=w.getModel(f).getItemStyle(["color"]),v=w.getModel(d).getItemStyle(),m=w.getShallow("symbolRotate"),y=w.getShallow("symbolOffset"),x=w.getModel(p),_=w.getModel(g),b=w.getShallow("hoverAnimation")}else v=s.extend({},v);var M=a.style;a.attr("rotation",(m||0)*Math.PI/180||0),y&&a.attr("position",[u.parsePercent(y[0],n[0]),u.parsePercent(y[1],n[1])]),a.setColor(l),a.setStyle(c);var T=t.getItemVisual(e,"opacity");null!=T&&(M.opacity=T);for(var S,A,I=t.dimensions.slice();I.length&&(S=I.pop(),A=t.getDimensionInfo(S).type,"ordinal"===A||"time"===A););null!=S&&x.getShallow("show")?(h.setText(M,x,l),M.text=s.retrieve(o.getFormattedLabel(e,"normal"),t.get(S,e))):M.text="",null!=S&&_.getShallow("show")?(h.setText(v,_,l),v.text=s.retrieve(o.getFormattedLabel(e,"emphasis"),t.get(S,e))):v.text="",a.off("mouseover").off("mouseout").off("emphasis").off("normal"),a.hoverStyle=v,h.setHoverStyle(a);var C=r(n);if(b&&o.isAnimationEnabled()){var L=function(){var t=C[1]/C[0];this.animateTo({scale:[Math.max(1.1*C[0],C[0]+3),Math.max(1.1*C[1],C[1]+3*t)]},400,"elasticOut")},k=function(){this.animateTo({scale:C},400,"elasticOut")};a.on("mouseover",L).on("mouseout",k).on("emphasis",L).on("normal",k)}},c.fadeOut=function(t){var e=this.childAt(0);this.silent=!0,e.style.text="",h.updateProps(e,{scale:[0,0]},this._seriesModel,this.dataIndex,t)},s.inherits(a,h.Group),t.exports=a},function(t,e,n){function i(t){var e={componentType:t.mainType};return e[t.mainType+"Index"]=t.componentIndex,e}function r(t,e,n){var i,r,a=f(e-t.rotation);return d(a)?(r=n>0?"top":"bottom",i="center"):d(a-m)?(r=n>0?"bottom":"top",i="center"):(r="middle",i=a>0&&a<m?n>0?"right":"left":n>0?"left":"right"),{rotation:a,textAlign:i,verticalAlign:r}}function a(t,e,n,i){var r,a,o=f(n-t.rotation),s=i[0]>i[1],l="start"===e&&!s||"start"!==e&&s;return d(o-m/2)?(a=l?"bottom":"top",r="center"):d(o-1.5*m)?(a=l?"top":"bottom",r="center"):(a="middle",r=o<1.5*m&&o>m/2?l?"left":"right":l?"right":"left"),{rotation:o,textAlign:r,verticalAlign:a}}function o(t){var e=t.get("tooltip");return t.get("silent")||!(t.get("triggerEvent")||e&&e.show)}var s=n(1),l=n(8),h=n(3),u=n(11),c=n(4),f=c.remRadian,d=c.isRadianAroundZero,p=n(5),g=p.applyTransform,v=s.retrieve,m=Math.PI,y=function(t,e){this.opt=e,this.axisModel=t,s.defaults(e,{labelOffset:0,nameDirection:1,tickDirection:1,labelDirection:1,silent:!0}),this.group=new h.Group;var n=new h.Group({position:e.position.slice(),rotation:e.rotation});n.updateTransform(),this._transform=n.transform,this._dumbGroup=n};y.prototype={constructor:y,hasBuilder:function(t){return!!x[t]},add:function(t){x[t].call(this)},getGroup:function(){return this.group}};var x={axisLine:function(){var t=this.opt,e=this.axisModel;if(e.get("axisLine.show")){var n=this.axisModel.axis.getExtent(),i=this._transform,r=[n[0],0],a=[n[1],0];i&&(g(r,r,i),g(a,a,i)),this.group.add(new h.Line(h.subPixelOptimizeLine({anid:"line",shape:{x1:r[0],y1:r[1],x2:a[0],y2:a[1]},style:s.extend({lineCap:"round"},e.getModel("axisLine.lineStyle").getLineStyle()),strokeContainThreshold:t.strokeContainThreshold||5,silent:!0,z2:1})))}},axisTick:function(){var t=this.axisModel,e=t.axis;if(t.get("axisTick.show")&&!e.isBlank())for(var n=t.getModel("axisTick"),i=this.opt,r=n.getModel("lineStyle"),a=n.get("length"),o=b(n,i.labelInterval),l=e.getTicksCoords(n.get("alignWithLabel")),u=e.scale.getTicks(),c=[],f=[],d=this._transform,p=0;p<l.length;p++)if(!_(e,p,o)){var v=l[p];c[0]=v,c[1]=0,f[0]=v,f[1]=i.tickDirection*a,d&&(g(c,c,d),g(f,f,d)),this.group.add(new h.Line(h.subPixelOptimizeLine({anid:"tick_"+u[p],shape:{x1:c[0],y1:c[1],x2:f[0],y2:f[1]},style:s.defaults(r.getLineStyle(),{stroke:t.get("axisLine.lineStyle.color")}),z2:2,silent:!0})))}},axisLabel:function(){function t(t,e){var n=t&&t.getBoundingRect().clone(),i=e&&e.getBoundingRect().clone();if(n&&i)return n.applyTransform(t.getLocalTransform()),i.applyTransform(e.getLocalTransform()),n.intersect(i)}var e=this.opt,n=this.axisModel,a=n.axis,l=v(e.axisLabelShow,n.get("axisLabel.show"));if(l&&!a.isBlank()){var c=n.getModel("axisLabel"),f=c.getModel("textStyle"),d=c.get("margin"),p=a.scale.getTicks(),g=n.getFormattedLabels(),y=v(e.labelRotation,c.get("rotate"))||0;y=y*m/180;var x=r(e,y,e.labelDirection),b=n.get("data"),w=[],M=o(n),T=n.get("triggerEvent");if(s.each(p,function(t,r){if(!_(a,r,e.labelInterval)){var o=f;b&&b[t]&&b[t].textStyle&&(o=new u(b[t].textStyle,f,n.ecModel));var s=o.getTextColor()||n.get("axisLine.lineStyle.color"),l=a.dataToCoord(t),c=[l,e.labelOffset+e.labelDirection*d],p=a.scale.getLabel(t),v=new h.Text({anid:"label_"+t,style:{text:g[r],textAlign:o.get("align",!0)||x.textAlign,textVerticalAlign:o.get("baseline",!0)||x.verticalAlign,textFont:o.getFont(),fill:"function"==typeof s?s(p):s},position:c,rotation:x.rotation,silent:M,z2:10});T&&(v.eventData=i(n),v.eventData.targetType="axisLabel",v.eventData.value=p),this._dumbGroup.add(v),v.updateTransform(),w.push(v),this.group.add(v),v.decomposeTransform()}},this),null!=n.getMin()){var S=w[0],A=w[1];t(S,A)&&(S.ignore=!0)}if(null!=n.getMax()){var I=w[w.length-1],C=w[w.length-2];t(C,I)&&(I.ignore=!0)}}},axisName:function(){var t=this.opt,e=this.axisModel,n=v(t.axisName,e.get("name"));if(n){var u,c=e.get("nameLocation"),f=t.nameDirection,d=e.getModel("nameTextStyle"),p=e.get("nameGap")||0,g=this.axisModel.axis.getExtent(),y=g[0]>g[1]?-1:1,x=["start"===c?g[0]-y*p:"end"===c?g[1]+y*p:(g[0]+g[1])/2,"middle"===c?t.labelOffset+f*p:0],_=e.get("nameRotate");null!=_&&(_=_*m/180);var b;"middle"===c?u=r(t,null!=_?_:t.rotation,f):(u=a(t,c,_||0,g),b=t.axisNameAvailableWidth,null!=b&&(b=Math.abs(b/Math.sin(u.rotation)),!isFinite(b)&&(b=null)));var w=d.getFont(),M=e.get("nameTruncate",!0)||{},T=M.ellipsis,S=v(M.maxWidth,b),A=null!=T&&null!=S?l.truncateText(n,S,w,T,{minChar:2,placeholder:M.placeholder}):n,I=e.get("tooltip",!0),C=e.mainType,L={componentType:C,name:n,$vars:["name"]};L[C+"Index"]=e.componentIndex;var k=new h.Text({anid:"name",__fullText:n,__truncatedText:A,style:{text:A,textFont:w,fill:d.getTextColor()||e.get("axisLine.lineStyle.color"),textAlign:u.textAlign,textVerticalAlign:u.verticalAlign},position:x,rotation:u.rotation,silent:o(e),z2:1,tooltip:I&&I.show?s.extend({content:n,formatter:function(){return n},formatterParams:L},I):null});e.get("triggerEvent")&&(k.eventData=i(e),k.eventData.targetType="axisName",k.eventData.name=n),this._dumbGroup.add(k),k.updateTransform(),this.group.add(k),k.decomposeTransform()}}},_=y.ifIgnoreOnTick=function(t,e,n){var i,r=t.scale;return"ordinal"===r.type&&("function"==typeof n?(i=r.getTicks()[e],!n(i,r.getLabel(i))):e%(n+1))},b=y.getInterval=function(t,e){var n=t.get("interval");return null!=n&&"auto"!=n||(n=e),n};t.exports=y},function(t,e,n){function i(t){return r.isObject(t)&&null!=t.value?t.value:t}var r=n(1),a=n(22);t.exports={getFormattedLabels:function(){return a.getFormattedLabels(this.axis,this.get("axisLabel.formatter"))},getCategories:function(){return"category"===this.get("type")&&r.map(this.get("data"),i)},getMin:function(t){var e=this.option,n=t||null==e.rangeStart?e.min:e.rangeStart;return null==n||"dataMin"===n||r.eqNaN(n)||(n=this.axis.scale.parse(n)),n},getMax:function(t){var e=this.option,n=t||null==e.rangeEnd?e.max:e.rangeEnd;return null==n||"dataMax"===n||r.eqNaN(n)||(n=this.axis.scale.parse(n)),n},getNeedCrossZero:function(){var t=this.option;return null==t.rangeStart&&null==t.rangeEnd&&!t.scale},getCoordSysModel:r.noop,setRange:function(t,e){this.option.rangeStart=t,this.option.rangeEnd=e},resetRange:function(){this.option.rangeStart=this.option.rangeEnd=null}}},function(t,e,n){function i(t,e,n){return t.getCoordSysModel()===e}function r(t){var e,n=t.model,i=n.getFormattedLabels(),r=n.getModel("axisLabel.textStyle"),a=1,o=i.length;o>40&&(a=Math.ceil(o/40));for(var s=0;s<o;s+=a)if(!t.isLabelIgnored(s)){var l=r.getTextRect(i[s]);e?e.union(l):e=l}return e}function a(t,e,n){this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this._initCartesian(t,e,n),this._model=t}function o(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}}function s(t,e){return c.map(y,function(e){var n=t.getReferringComponents(e)[0];return n})}function l(t){return"cartesian2d"===t.get("coordinateSystem")}var h=n(12),u=n(22),c=n(1),f=n(121),d=n(119),p=c.each,g=u.ifAxisCrossZero,v=u.niceScaleExtent;n(122);var m=a.prototype;m.type="grid",m.getRect=function(){return this._rect},m.update=function(t,e){function n(t){var e=i[t];for(var n in e)if(e.hasOwnProperty(n)){var r=e[n];if(r&&("category"===r.type||!g(r)))return!0}return!1}var i=this._axesMap;this._updateScale(t,this._model),p(i.x,function(t){v(t,t.model)}),p(i.y,function(t){v(t,t.model)}),p(i.x,function(t){n("y")&&(t.onZero=!1)}),p(i.y,function(t){n("x")&&(t.onZero=!1)}),this.resize(this._model,e)},m.resize=function(t,e){function n(){p(a,function(t){var e=t.isHorizontal(),n=e?[0,i.width]:[0,i.height],r=t.inverse?1:0;t.setExtent(n[r],n[1-r]),o(t,e?i.x:i.y)})}var i=h.getLayoutRect(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()});this._rect=i;var a=this._axesList;n(),t.get("containLabel")&&(p(a,function(t){if(!t.model.get("axisLabel.inside")){var e=r(t);if(e){var n=t.isHorizontal()?"height":"width",a=t.model.get("axisLabel.margin");i[n]-=e[n]+a,"top"===t.position?i.y+=e.height+a:"left"===t.position&&(i.x+=e.width+a)}}}),n())},m.getAxis=function(t,e){var n=this._axesMap[t];if(null!=n){if(null==e)for(var i in n)if(n.hasOwnProperty(i))return n[i];return n[e]}},m.getCartesian=function(t,e){if(null!=t&&null!=e){var n="x"+t+"y"+e;return this._coordsMap[n]}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]},m.convertToPixel=function(t,e,n){var i=this._findConvertTarget(t,e);return i.cartesian?i.cartesian.dataToPoint(n):i.axis?i.axis.toGlobalCoord(i.axis.dataToCoord(n)):null},m.convertFromPixel=function(t,e,n){var i=this._findConvertTarget(t,e);return i.cartesian?i.cartesian.pointToData(n):i.axis?i.axis.coordToData(i.axis.toLocalCoord(n)):null},m._findConvertTarget=function(t,e){var n,i,r=e.seriesModel,a=e.xAxisModel||r&&r.getReferringComponents("xAxis")[0],o=e.yAxisModel||r&&r.getReferringComponents("yAxis")[0],s=e.gridModel,l=this._coordsList;if(r)n=r.coordinateSystem,c.indexOf(l,n)<0&&(n=null);else if(a&&o)n=this.getCartesian(a.componentIndex,o.componentIndex);else if(a)i=this.getAxis("x",a.componentIndex);else if(o)i=this.getAxis("y",o.componentIndex);else if(s){var h=s.coordinateSystem;h===this&&(n=this._coordsList[0])}return{cartesian:n,axis:i}},m.containPoint=function(t){var e=this._coordsList[0];if(e)return e.containPoint(t)},m._initCartesian=function(t,e,n){function r(n){return function(r,l){if(i(r,t,e)){var h=r.get("position");"x"===n?"top"!==h&&"bottom"!==h&&(h="bottom",a[h]&&(h="top"===h?"bottom":"top")):"left"!==h&&"right"!==h&&(h="left",a[h]&&(h="left"===h?"right":"left")),a[h]=!0;var c=new d(n,u.createScaleByModel(r),[0,0],r.get("type"),h),f="category"===c.type;c.onBand=f&&r.get("boundaryGap"),c.inverse=r.get("inverse"),c.onZero=r.get("axisLine.onZero"),r.axis=c,c.model=r,c.grid=this,c.index=l,this._axesList.push(c),o[n][l]=c,s[n]++}}}var a={left:!1,right:!1,top:!1,bottom:!1},o={x:{},y:{}},s={x:0,y:0};return e.eachComponent("xAxis",r("x"),this),e.eachComponent("yAxis",r("y"),this),s.x&&s.y?(this._axesMap=o,void p(o.x,function(t,e){p(o.y,function(n,i){var r="x"+e+"y"+i,a=new f(r);a.grid=this,this._coordsMap[r]=a,this._coordsList.push(a),a.addAxis(t),a.addAxis(n)},this)},this)):(this._axesMap={},void(this._axesList=[]))},m._updateScale=function(t,e){function n(t,e,n){p(n.coordDimToDataDim(e.dim),function(n){e.scale.unionExtentFromData(t,n)})}c.each(this._axesList,function(t){t.scale.setExtent(1/0,-(1/0))}),t.eachSeries(function(r){if(l(r)){var a=s(r,t),o=a[0],h=a[1];if(!i(o,e,t)||!i(h,e,t))return;var u=this.getCartesian(o.componentIndex,h.componentIndex),c=r.getData(),f=u.getAxis("x"),d=u.getAxis("y");"list"===c.type&&(n(c,f,r),n(c,d,r))}},this)};var y=["xAxis","yAxis"];a.create=function(t,e){var n=[];return t.eachComponent("grid",function(i,r){var o=new a(i,t,e);o.name="grid_"+r,o.resize(i,e),i.coordinateSystem=o,n.push(o)}),t.eachSeries(function(e){if(l(e)){var n=s(e,t),i=n[0],r=n[1],a=i.getCoordSysModel(),o=a.coordinateSystem;e.coordinateSystem=o.getCartesian(i.componentIndex,r.componentIndex)}}),n},a.dimensions=f.prototype.dimensions,n(23).register("cartesian2d",a),t.exports=a},function(t,e,n){var i=n(86),r=n(1),a=n(13),o=n(12),s=["value","category","time","log"];t.exports=function(t,e,n,l){r.each(s,function(a){e.extend({type:t+"Axis."+a,mergeDefaultAndTheme:function(e,i){var s=this.layoutMode,l=s?o.getLayoutParams(e):{},h=i.getTheme();r.merge(e,h.get(a+"Axis")),r.merge(e,this.getDefaultOption()),e.type=n(t,e),s&&o.mergeLayoutParam(e,l,s)},defaultOption:r.mergeAll([{},i[a+"Axis"],l],!0)})}),a.registerSubTypeDefaulter(t+"Axis",r.curry(n,t))}},function(t,e,n){"use strict";function i(t,e){return e.type||(e.data?"category":"value")}var r=n(13),a=n(1),o=n(54),s=r.extend({type:"cartesian2dAxis",axis:null,init:function(){s.superApply(this,"init",arguments),this.resetRange()},mergeOption:function(){s.superApply(this,"mergeOption",arguments),this.resetRange()},restoreData:function(){s.superApply(this,"restoreData",arguments),this.resetRange()},getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"grid",index:this.option.gridIndex,id:this.option.gridId})[0]}});a.merge(s.prototype,n(52));var l={offset:0};o("x",s,i,l),o("y",s,i,l),t.exports=s},function(t,e){t.exports=function(t,e){e.eachSeriesByType(t,function(t){var e=t.getData(),n=t.coordinateSystem;if(n){var i=n.dimensions;"singleAxis"===n.type?e.each(i[0],function(t,i){e.setItemLayout(i,isNaN(t)?[NaN,NaN]:n.dataToPoint(t))}):e.each(i,function(t,i,r){e.setItemLayout(r,isNaN(t)||isNaN(i)?[NaN,NaN]:n.dataToPoint([t,i]))},!0)}})}},function(t,e,n){var i=n(15),r=i.set,a=i.get;t.exports={clearColorPalette:function(){r(this,"colorIdx",0),r(this,"colorNameMap",{})},getColorFromPalette:function(t,e){e=e||this;var n=a(e,"colorIdx")||0,i=a(e,"colorNameMap")||r(e,"colorNameMap",{});if(i[t])return i[t];var o=this.get("color",!0)||[];if(o.length){var s=o[n];return t&&(i[t]=s),r(e,"colorIdx",(n+1)%o.length),s}}}},function(t,e){t.exports=function(t,e){var n=e.findComponents({mainType:"legend"});n&&n.length&&e.eachSeriesByType(t,function(t){var e=t.getData();e.filterSelf(function(t){for(var i=e.getName(t),r=0;r<n.length;r++)if(!n[r].isSelected(i))return!1;return!0},this)},this)}},function(t,e,n){var i=n(34),r=n(44),a=n(15),o=function(){this.group=new i,this.uid=r.getUID("viewComponent")};o.prototype={constructor:o,init:function(t,e){},render:function(t,e,n,i){},dispose:function(){}};var s=o.prototype;s.updateView=s.updateLayout=s.updateVisual=function(t,e,n,i){},a.enableClassExtend(o),a.enableClassManagement(o,{registerWhenExtend:!0}),t.exports=o},function(t,e,n){"use strict";var i=n(64),r=n(21),a=n(92),o=n(167),s=n(1),l=function(t){a.call(this,t),r.call(this,t),o.call(this,t),this.id=t.id||i()};l.prototype={type:"element",name:"",__zr:null,ignore:!1,clipPath:null,drift:function(t,e){switch(this.draggable){case"horizontal":e=0;break;case"vertical":t=0}var n=this.transform;n||(n=this.transform=[1,0,0,1,0,0]),n[4]+=t,n[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 n=this[t];n||(n=this[t]=[]),n[0]=e[0],n[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(s.isObject(t))for(var n in t)t.hasOwnProperty(n)&&this.attrKV(n,t[n]);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,t.__zr=e,t.__clipTarget=this,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 n=0;n<e.length;n++)t.animation.addAnimator(e[n]);this.clipPath&&this.clipPath.addSelfToZr(t)},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)}},s.mixin(l,o),s.mixin(l,a),s.mixin(l,r),t.exports=l},function(t,e,n){function i(t,e){return t[e]}function r(t,e,n){t[e]=n}function a(t,e,n){return(e-t)*n+t}function o(t,e,n){return n>.5?e:t}function s(t,e,n,i,r){var o=t.length;if(1==r)for(var s=0;s<o;s++)i[s]=a(t[s],e[s],n);else for(var l=t[0].length,s=0;s<o;s++)for(var h=0;h<l;h++)i[s][h]=a(t[s][h],e[s][h],n)}function l(t,e,n){var i=t.length,r=e.length;if(i!==r){var a=i>r;if(a)t.length=r;else for(var o=i;o<r;o++)t.push(1===n?e[o]:x.call(e[o]))}for(var s=t[0]&&t[0].length,o=0;o<t.length;o++)if(1===n)isNaN(t[o])&&(t[o]=e[o]);else for(var l=0;l<s;l++)isNaN(t[o][l])&&(t[o][l]=e[o][l])}function h(t,e,n){if(t===e)return!0;var i=t.length;if(i!==e.length)return!1;if(1===n){for(var r=0;r<i;r++)if(t[r]!==e[r])return!1}else for(var a=t[0].length,r=0;r<i;r++)for(var o=0;o<a;o++)if(t[r][o]!==e[r][o])return!1;return!0}function u(t,e,n,i,r,a,o,s,l){var h=t.length;if(1==l)for(var u=0;u<h;u++)s[u]=c(t[u],e[u],n[u],i[u],r,a,o);else for(var f=t[0].length,u=0;u<h;u++)for(var d=0;d<f;d++)s[u][d]=c(t[u][d],e[u][d],n[u][d],i[u][d],r,a,o)}function c(t,e,n,i,r,a,o){var s=.5*(n-t),l=.5*(i-e);return(2*(e-n)+s+l)*o+(-3*(e-n)-2*s-l)*a+s*r+e}function f(t){if(y(t)){var e=t.length;if(y(t[0])){for(var n=[],i=0;i<e;i++)n.push(x.call(t[i]));return n}return x.call(t)}return t}function d(t){return t[0]=Math.floor(t[0]),t[1]=Math.floor(t[1]),t[2]=Math.floor(t[2]),"rgba("+t.join(",")+")"}function p(t,e,n,i,r){var f=t._getter,p=t._setter,m="spline"===e,x=i.length;if(x){var _,b=i[0].value,w=y(b),M=!1,T=!1,S=w&&y(b[0])?2:1;i.sort(function(t,e){return t.time-e.time}),_=i[x-1].time;for(var A=[],I=[],C=i[0].value,L=!0,k=0;k<x;k++){A.push(i[k].time/_);var P=i[k].value;if(w&&h(P,C,S)||!w&&P===C||(L=!1),C=P,"string"==typeof P){var D=v.parse(P);D?(P=D,M=!0):T=!0}I.push(P)}if(!L){for(var O=I[x-1],k=0;k<x-1;k++)w?l(I[k],O,S):!isNaN(I[k])||isNaN(O)||T||M||(I[k]=O);w&&l(f(t._target,r),O,S);var E,z,N,R,B,F,G=0,V=0;if(M)var q=[0,0,0,0];var H=function(t,e){var n;if(e<0)n=0;else if(e<V){for(E=Math.min(G+1,x-1),n=E;n>=0&&!(A[n]<=e);n--);n=Math.min(n,x-2)}else{for(n=G;n<x&&!(A[n]>e);n++);n=Math.min(n-1,x-2)}G=n,V=e;var i=A[n+1]-A[n];if(0!==i)if(z=(e-A[n])/i,m)if(R=I[n],N=I[0===n?n:n-1],B=I[n>x-2?x-1:n+1],F=I[n>x-3?x-1:n+2],w)u(N,R,B,F,z,z*z,z*z*z,f(t,r),S);else{var l;if(M)l=u(N,R,B,F,z,z*z,z*z*z,q,1),l=d(q);else{if(T)return o(R,B,z);l=c(N,R,B,F,z,z*z,z*z*z)}p(t,r,l)}else if(w)s(I[n],I[n+1],z,f(t,r),S);else{var l;if(M)s(I[n],I[n+1],z,q,1),l=d(q);else{if(T)return o(I[n],I[n+1],z);l=a(I[n],I[n+1],z)}p(t,r,l)}},W=new g({target:t._target,life:_,loop:t._loop,delay:t._delay,onframe:H,ondestroy:n});return e&&"spline"!==e&&(W.easing=e),W}}}var g=n(145),v=n(19),m=n(1),y=m.isArrayLike,x=Array.prototype.slice,_=function(t,e,n,a){this._tracks={},this._target=t,this._loop=e||!1,this._getter=n||i,this._setter=a||r,this._clipCount=0,this._delay=0,this._doneList=[],this._onframeList=[],this._clipList=[]};_.prototype={when:function(t,e){var n=this._tracks;for(var i in e)if(e.hasOwnProperty(i)){if(!n[i]){n[i]=[];var r=this._getter(this._target,i);if(null==r)continue;0!==t&&n[i].push({time:0,value:f(r)})}n[i].push({time:t,value:e[i]})}return this},during:function(t){return this._onframeList.push(t),this},_doneCallback:function(){this._tracks={},this._clipList.length=0;for(var t=this._doneList,e=t.length,n=0;n<e;n++)t[n].call(this)},start:function(t){var e,n=this,i=0,r=function(){i--,i||n._doneCallback()};for(var a in this._tracks)if(this._tracks.hasOwnProperty(a)){var o=p(this,t,r,this._tracks[a],a);o&&(this._clipList.push(o),i++,this.animation&&this.animation.addClip(o),e=o)}if(e){var s=e.onframe;e.onframe=function(t,e){s(t,e);for(var i=0;i<n._onframeList.length;i++)n._onframeList[i](t,e)}}return i||this._doneCallback(),this},stop:function(t){for(var e=this._clipList,n=this.animation,i=0;i<e.length;i++){var r=e[i];t&&r.onframe(this._target,1),n&&n.removeClip(r)}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}},t.exports=_},function(t,e){t.exports="undefined"!=typeof window&&(window.requestAnimationFrame||window.msRequestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame)||function(t){setTimeout(t,16)}},function(t,e){var n=2*Math.PI;t.exports={normalizeRadian:function(t){return t%=n,t<0&&(t+=n),t}}},function(t,e){var n=2311;t.exports=function(){return n++}},function(t,e){var n=function(t,e){this.image=t,this.repeat=e,this.type="pattern"};n.prototype.getCanvasPattern=function(t){return this._canvasPattern||(this._canvasPattern=t.createPattern(this.image,this.repeat))},t.exports=n},function(t,e){function n(t,e,n){var i=e.x,r=e.x2,a=e.y,o=e.y2;e.global||(i=i*n.width+n.x,r=r*n.width+n.x,a=a*n.height+n.y,o=o*n.height+n.y);var s=t.createLinearGradient(i,a,r,o);return s}function i(t,e,n){var i=n.width,r=n.height,a=Math.min(i,r),o=e.x,s=e.y,l=e.r;e.global||(o=o*i+n.x,s=s*r+n.y,l*=a);var h=t.createRadialGradient(o,s,0,o,s,l);return h}var r=[["shadowBlur",0],["shadowOffsetX",0],["shadowOffsetY",0],["shadowColor","#000"],["lineCap","butt"],["lineJoin","miter"],["miterLimit",10]],a=function(t){this.extendFrom(t)};a.prototype={constructor:a,fill:"#000000",stroke:null,opacity:1,lineDash:null,lineDashOffset:0,shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,lineWidth:1,strokeNoScale:!1,text:null,textFill:"#000",textStroke:null,textPosition:"inside",textOffset:null,textBaseline:null,textAlign:null,textVerticalAlign:null,textDistance:5,textShadowBlur:0,textShadowOffsetX:0,textShadowOffsetY:0,textTransform:!1,textRotation:0,blend:null,bind:function(t,e,n){for(var i=this,a=n&&n.style,o=!a,s=0;s<r.length;s++){var l=r[s],h=l[0];(o||i[h]!==a[h])&&(t[h]=i[h]||l[1])}if((o||i.fill!==a.fill)&&(t.fillStyle=i.fill),(o||i.stroke!==a.stroke)&&(t.strokeStyle=i.stroke),(o||i.opacity!==a.opacity)&&(t.globalAlpha=null==i.opacity?1:i.opacity),(o||i.blend!==a.blend)&&(t.globalCompositeOperation=i.blend||"source-over"),this.hasStroke()){var u=i.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&&this.lineWidth>0},extendFrom:function(t,e){if(t){var n=this;for(var i in t)!t.hasOwnProperty(i)||!e&&n.hasOwnProperty(i)||(n[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,r){for(var a="radial"===e.type?i:n,o=a(t,e,r),s=e.colorStops,l=0;l<s.length;l++)o.addColorStop(s[l].offset,s[l].color);return o}};for(var o=a.prototype,s=0;s<r.length;s++){var l=r[s];l[0]in o||(o[l[0]]=l[1])}a.getGradient=o.getGradient,t.exports=a},function(t,e,n){var i=n(157),r=n(156);t.exports={buildPath:function(t,e,n){var a=e.points,o=e.smooth;if(a&&a.length>=2){if(o&&"spline"!==o){var s=r(a,o,n,e.smoothConstraint);t.moveTo(a[0][0],a[0][1]);for(var l=a.length,h=0;h<(n?l:l-1);h++){var u=s[2*h],c=s[2*h+1],f=a[(h+1)%l];t.bezierCurveTo(u[0],u[1],c[0],c[1],f[0],f[1])}}else{"spline"===o&&(a=i(a,n)),t.moveTo(a[0][0],a[0][1]);for(var h=1,d=a.length;h<d;h++)t.lineTo(a[h][0],a[h][1])}n&&t.closePath()}}}},,function(t,e,n){var i=n(1);t.exports={updateSelectedMap:function(t){this._selectTargetMap=i.reduce(t||[],function(t,e){return t[e.name]=e,t},{})},select:function(t){var e=this._selectTargetMap,n=e[t],r=this.get("selectedMode");"single"===r&&i.each(e,function(t){t.selected=!1}),n&&(n.selected=!0)},unSelect:function(t){var e=this._selectTargetMap[t];e&&(e.selected=!1)},toggleSelected:function(t){var e=this._selectTargetMap[t];if(null!=e)return this[e.selected?"unSelect":"select"](t),e.selected},isSelected:function(t){var e=this._selectTargetMap[t];return e&&e.selected}}},,,,,function(t,e){t.exports=function(t,e){var n={};e.eachRawSeriesByType(t,function(t){var i=t.getRawData(),r={};if(!e.isSeriesFiltered(t)){var a=t.getData();a.each(function(t){var e=a.getRawIndex(t);r[e]=t}),i.each(function(e){var o=r[e],s=null!=o&&a.getItemVisual(o,"color",!0);if(s)i.setItemVisual(e,"color",s);else{var l=i.getItemModel(e),h=l.get("itemStyle.normal.color")||t.getColorFromPalette(i.getName(e),n);i.setItemVisual(e,"color",h),null!=o&&a.setItemVisual(o,"color",h)}})}})}},function(t,e,n){var i=n(5),r=n(18),a={},o=Math.min,s=Math.max,l=Math.sin,h=Math.cos,u=i.create(),c=i.create(),f=i.create(),d=2*Math.PI;a.fromPoints=function(t,e,n){if(0!==t.length){var i,r=t[0],a=r[0],l=r[0],h=r[1],u=r[1];for(i=1;i<t.length;i++)r=t[i],a=o(a,r[0]),l=s(l,r[0]),h=o(h,r[1]),u=s(u,r[1]);e[0]=a,e[1]=h,n[0]=l,n[1]=u}},a.fromLine=function(t,e,n,i,r,a){r[0]=o(t,n),r[1]=o(e,i),a[0]=s(t,n),a[1]=s(e,i)};var p=[],g=[];a.fromCubic=function(t,e,n,i,a,l,h,u,c,f){var d,v=r.cubicExtrema,m=r.cubicAt,y=v(t,n,a,h,p);for(c[0]=1/0,c[1]=1/0,f[0]=-(1/0),f[1]=-(1/0),d=0;d<y;d++){var x=m(t,n,a,h,p[d]);c[0]=o(x,c[0]),f[0]=s(x,f[0])}for(y=v(e,i,l,u,g),d=0;d<y;d++){var _=m(e,i,l,u,g[d]);c[1]=o(_,c[1]),f[1]=s(_,f[1])}c[0]=o(t,c[0]),f[0]=s(t,f[0]),c[0]=o(h,c[0]),f[0]=s(h,f[0]),c[1]=o(e,c[1]),f[1]=s(e,f[1]),c[1]=o(u,c[1]),f[1]=s(u,f[1])},a.fromQuadratic=function(t,e,n,i,a,l,h,u){var c=r.quadraticExtremum,f=r.quadraticAt,d=s(o(c(t,n,a),1),0),p=s(o(c(e,i,l),1),0),g=f(t,n,a,d),v=f(e,i,l,p);h[0]=o(t,a,g),h[1]=o(e,l,v),u[0]=s(t,a,g),u[1]=s(e,l,v)},a.fromArc=function(t,e,n,r,a,o,s,p,g){var v=i.min,m=i.max,y=Math.abs(a-o);if(y%d<1e-4&&y>1e-4)return p[0]=t-n,p[1]=e-r,g[0]=t+n,void(g[1]=e+r);if(u[0]=h(a)*n+t,u[1]=l(a)*r+e,c[0]=h(o)*n+t,c[1]=l(o)*r+e,v(p,u,c),m(g,u,c),a%=d,a<0&&(a+=d),o%=d,o<0&&(o+=d),a>o&&!s?o+=d:a<o&&s&&(a+=d),s){var x=o;o=a,a=x}for(var _=0;_<o;_+=Math.PI/2)_>a&&(f[0]=h(_)*n+t,f[1]=l(_)*r+e,v(p,f,p),m(g,f,g))},t.exports=a},function(t,e,n){var i=n(36),r=n(1),a=n(17),o=function(t){i.call(this,t)};o.prototype={constructor:o,type:"text",brush:function(t,e){var n=this.style,i=n.x||0,r=n.y||0,o=n.text;if(null!=o&&(o+=""),n.bind(t,this,e),o){this.setTransform(t);var s,l=n.textAlign,h=n.textFont||n.font;if(n.textVerticalAlign){var u=a.getBoundingRect(o,h,n.textAlign,"top");switch(s="middle",n.textVerticalAlign){case"middle":r-=u.height/2-u.lineHeight/2;break;case"bottom":r-=u.height-u.lineHeight/2;break;default:r+=u.lineHeight/2}}else s=n.textBaseline;t.font=h||"12px sans-serif",t.textAlign=l||"left",t.textAlign!==l&&(t.textAlign="left"),t.textBaseline=s||"alphabetic",t.textBaseline!==s&&(t.textBaseline="alphabetic");for(var c=a.measureText("国",t.font).width,f=o.split("\n"),d=0;d<f.length;d++)n.hasFill()&&t.fillText(f[d],i,r),n.hasStroke()&&t.strokeText(f[d],i,r),r+=c;this.restoreTransform(t)}},getBoundingRect:function(){if(!this._rect){var t=this.style,e=t.textVerticalAlign,n=a.getBoundingRect(t.text+"",t.textFont||t.font,t.textAlign,e?"top":t.textBaseline);switch(e){case"middle":n.y-=n.height/2;break;case"bottom":n.y-=n.height}n.x+=t.x||0,n.y+=t.y||0,this._rect=n}return this._rect}},r.inherits(o,i),t.exports=o},function(t,e,n){function i(t,e){return"string"==typeof t?t.lastIndexOf("%")>=0?parseFloat(t)/100*e:parseFloat(t):t}var r=n(17),a=n(9),o=new a,s=function(){};s.prototype={constructor:s,drawRectText:function(t,e,n){var a=this.style,s=a.text;if(null!=s&&(s+=""),s){t.save();var l,h,u=a.textPosition,c=a.textOffset,f=a.textDistance,d=a.textAlign,p=a.textFont||a.font,g=a.textBaseline,v=a.textVerticalAlign;n=n||r.getBoundingRect(s,p,d,g);var m=this.transform;if(a.textTransform?this.setTransform(t):m&&(o.copy(e),o.applyTransform(m),e=o),u instanceof Array){if(l=e.x+i(u[0],e.width),h=e.y+i(u[1],e.height),d=d||"left",g=g||"top",v){switch(v){case"middle":h-=n.height/2-n.lineHeight/2;break;case"bottom":h-=n.height-n.lineHeight/2;break;default:h+=n.lineHeight/2}g="middle"}}else{var y=r.adjustTextPositionOnRect(u,e,n,f);l=y.x,h=y.y,d=d||y.textAlign,g=g||y.textBaseline}c&&(l+=c[0],h+=c[1]),t.textAlign=d||"left",t.textBaseline=g||"alphabetic";var x=a.textFill,_=a.textStroke;x&&(t.fillStyle=x),_&&(t.strokeStyle=_),t.font=p||"12px sans-serif",t.shadowBlur=a.textShadowBlur,t.shadowColor=a.textShadowColor||"transparent",t.shadowOffsetX=a.textShadowOffsetX,t.shadowOffsetY=a.textShadowOffsetY;var b=s.split("\n");a.textRotation&&(m&&t.translate(m[4],m[5]),t.rotate(a.textRotation),m&&t.translate(-m[4],-m[5]));for(var w=0;w<b.length;w++)x&&t.fillText(b[w],l,h),_&&t.strokeText(b[w],l,h),h+=n.lineHeight;t.restore()}}},t.exports=s},function(t,e,n){function i(t){delete d[t]}/*!
+var w=n(9),M=n(139),T=n(103),S=n(26),A=n(140),I=n(13),C=n(18),P=n(64),L=n(29),k=n(3),O=n(5),D=n(39),E=n(87),z=n(1),R=n(22),N=n(23),B=n(51),F=z.each,V=I.parseClassType,G=1e3,H=5e3,q=1e3,W=2e3,j=3e3,Z=4e3,U=5e3,X="__flagInMainProcess",Y="__hasGradientOrPatternBg",$="__optionUpdated",K=/^[a-zA-Z0-9_]+$/;r.prototype.on=i("on"),r.prototype.off=i("off"),r.prototype.one=i("one"),z.mixin(r,N);var Q=a.prototype;Q._onframe=function(){if(this[$]){var t=this[$].silent;this[X]=!0,J.prepareAndUpdate.call(this),this[X]=!1,this[$]=!1,h.call(this,t),u.call(this,t)}},Q.getDom=function(){return this._dom},Q.getZr=function(){return this._zr},Q.setOption=function(t,e,n){var i;if(z.isObject(e)&&(n=e.lazyUpdate,i=e.silent,e=e.notMerge),this[X]=!0,!this._model||e){var r=new A(this._api),a=this._theme,o=this._model=new M(null,null,a,r);o.init(null,null,a,r)}this.__lastOnlyGraphic=!(!t||!t.graphic),z.each(t,function(t,e){"graphic"!==e&&(this.__lastOnlyGraphic=!1)},this),this._model.setOption(t,rt,this.__lastOnlyGraphic),n?(this[$]={silent:i},this[X]=!1):(J.prepareAndUpdate.call(this),this._zr.flush(),this[$]=!1,this[X]=!1,h.call(this,i),u.call(this,i))},Q.setTheme=function(){console.log("ECharts#setTheme() is DEPRECATED in ECharts 3.0")},Q.getModel=function(){return this._model},Q.getOption=function(){return this._model&&this._model.getOption()},Q.getWidth=function(){return this._zr.getWidth()},Q.getHeight=function(){return this._zr.getHeight()},Q.getDevicePixelRatio=function(){return this._zr.painter.dpr||window.devicePixelRatio||1},Q.getRenderedCanvas=function(t){if(w.canvasSupported){t=t||{},t.pixelRatio=t.pixelRatio||1,t.backgroundColor=t.backgroundColor||this._model.get("backgroundColor");var e=this._zr,n=e.storage.getDisplayList();return z.each(n,function(t){t.stopAnimation(!0)}),e.painter.getRenderedCanvas(t)}},Q.getDataURL=function(t){t=t||{};var e=t.excludeComponents,n=this._model,i=[],r=this;F(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 a=this.getRenderedCanvas(t).toDataURL("image/"+(t&&t.type||"png"));return F(i,function(t){t.group.ignore=!1}),a},Q.getConnectedDataURL=function(t){if(w.canvasSupported){var e=this.group,n=Math.min,i=Math.max,r=1/0;if(ut[e]){var a=r,o=r,s=-r,l=-r,h=[],u=t&&t.pixelRatio||1;z.each(ht,function(r,u){if(r.group===e){var c=r.getRenderedCanvas(z.clone(t)),f=r.getDom().getBoundingClientRect();a=n(f.left,a),o=n(f.top,o),s=i(f.right,s),l=i(f.bottom,l),h.push({dom:c,left:f.left,top:f.top})}}),a*=u,o*=u,s*=u,l*=u;var c=s-a,f=l-o,d=z.createCanvas();d.width=c,d.height=f;var p=E.init(d);return F(h,function(t){var e=new k.Image({style:{x:t.left*u-a,y:t.top*u-o,image:t.dom}});p.add(e)}),p.refreshImmediately(),d.toDataURL("image/"+(t&&t.type||"png"))}return this.getDataURL(t)}},Q.convertToPixel=z.curry(o,"convertToPixel"),Q.convertFromPixel=z.curry(o,"convertFromPixel"),Q.containPixel=function(t,e){var n,i=this._model;return t=O.parseFinder(i,t),z.each(t,function(t,i){i.indexOf("Models")>=0&&z.each(t,function(t){var r=t.coordinateSystem;if(r&&r.containPoint)n|=!!r.containPoint(e);else if("seriesModels"===i){var a=this._chartsMap[t.__viewId];a&&a.containPoint&&(n|=a.containPoint(e,t))}},this)},this),!!n},Q.getVisual=function(t,e){var n=this._model;t=O.parseFinder(n,t,{defaultMainType:"series"});var i=t.seriesModel,r=i.getData(),a=t.hasOwnProperty("dataIndexInside")?t.dataIndexInside:t.hasOwnProperty("dataIndex")?r.indexOfRawIndex(t.dataIndex):null;return null!=a?r.getItemVisual(a,e):r.getVisual(e)},Q.getViewOfComponentModel=function(t){return this._componentsMap[t.__viewId]},Q.getViewOfSeriesModel=function(t){return this._chartsMap[t.__viewId]};var J={update:function(t){var e=this._model,n=this._api,i=this._coordSysMgr,r=this._zr;if(e){e.restoreData(),i.create(this._model,this._api),d.call(this,e,n),p.call(this,e),i.update(e,n),v.call(this,e,t),m.call(this,e,t);var a=e.get("backgroundColor")||"transparent",o=r.painter;if(o.isSingleCanvas&&o.isSingleCanvas())r.configLayer(0,{clearColor:a});else{if(!w.canvasSupported){var s=R.parse(a);a=R.stringify(s,"rgb"),0===s[3]&&(a="transparent")}a.colorStops||a.image?(r.configLayer(0,{clearColor:a}),this[Y]=!0,this._dom.style.background="transparent"):(this[Y]&&r.configLayer(0,{clearColor:null}),this[Y]=!1,this._dom.style.background=a)}F(at,function(t){t(e,n)})}},updateView:function(t){var e=this._model;e&&(e.eachSeries(function(t){t.getData().clearAllVisual()}),v.call(this,e,t),c.call(this,"updateView",e,t))},updateVisual:function(t){var e=this._model;e&&(e.eachSeries(function(t){t.getData().clearAllVisual()}),v.call(this,e,t,!0),c.call(this,"updateVisual",e,t))},updateLayout:function(t){var e=this._model;e&&(g.call(this,e,t),c.call(this,"updateLayout",e,t))},prepareAndUpdate:function(t){var e=this._model;f.call(this,"component",e),f.call(this,"chart",e),this.__lastOnlyGraphic?(F(this._componentsViews,function(n){var i=n.__model;i&&"graphic"===i.mainType&&(n.render(i,e,this._api,t),_(i,n))},this),this.__lastOnlyGraphic=!1):J.update.call(this,t)}};Q.resize=function(t){this[X]=!0,this._zr.resize(t);var e=this._model&&this._model.resetOption("media"),n=e?"prepareAndUpdate":"update";J[n].call(this),this._loadingFX&&this._loadingFX.resize(),this[X]=!1;var i=t&&t.silent;h.call(this,i),u.call(this,i)},Q.showLoading=function(t,e){if(z.isObject(t)&&(e=t,t=""),t=t||"default",this.hideLoading(),lt[t]){var n=lt[t](this._api,e),i=this._zr;this._loadingFX=n,i.add(n)}},Q.hideLoading=function(){this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null},Q.makeActionFromEvent=function(t){var e=z.extend({},t);return e.type=nt[t.type],e},Q.dispatchAction=function(t,e){if(z.isObject(e)||(e={silent:!!e}),et[t.type]){if(this[X])return void this._pendingActions.push(t);l.call(this,t,e.silent),e.flush?this._zr.flush(!0):e.flush!==!1&&w.browser.weChat&&this._throttledZrFlush(),h.call(this,e.silent),u.call(this,e.silent)}},Q.on=i("on"),Q.off=i("off"),Q.one=i("one");var tt=["click","dblclick","mouseover","mouseout","mousemove","mousedown","mouseup","globalout","contextmenu"];Q._initEvents=function(){F(tt,function(t){this._zr.on(t,function(e){var n,i=this.getModel(),r=e.target;if("globalout"===t)n={};else if(r&&null!=r.dataIndex){var a=r.dataModel||i.getSeriesByIndex(r.seriesIndex);n=a&&a.getDataParams(r.dataIndex,r.dataType)||{}}else r&&r.eventData&&(n=z.extend({},r.eventData));n&&(n.event=e,n.type=t,this.trigger(t,n))},this)},this),F(nt,function(t,e){this._messageCenter.on(e,function(t){this.trigger(e,t)},this)},this)},Q.isDisposed=function(){return this._disposed},Q.clear=function(){this.setOption({series:[]},!0)},Q.dispose=function(){if(!this._disposed){this._disposed=!0;var t=this._api,e=this._model;F(this._componentsViews,function(n){n.dispose(e,t)}),F(this._chartsViews,function(n){n.dispose(e,t)}),this._zr.dispose(),delete ht[this.id]}},z.mixin(a,N);var et={},nt={},it=[],rt=[],at=[],ot=[],st={},lt={},ht={},ut={},ct=new Date-0,ft=new Date-0,dt="_echarts_instance_",pt={version:"3.5.0",dependencies:{zrender:"3.4.0"}};pt.init=function(t,e,n){var i=new a(t,e,n);return i.id="ec_"+ct++,ht[i.id]=i,t.setAttribute&&t.setAttribute(dt,i.id),b(i),i},pt.connect=function(t){if(z.isArray(t)){var e=t;t=null,z.each(e,function(e){null!=e.group&&(t=e.group)}),t=t||"g_"+ft++,z.each(e,function(e){e.group=t})}return ut[t]=!0,t},pt.disConnect=function(t){ut[t]=!1},pt.disconnect=pt.disConnect,pt.dispose=function(t){z.isDom(t)?t=pt.getInstanceByDom(t):"string"==typeof t&&(t=ht[t]),t instanceof a&&!t.isDisposed()&&t.dispose()},pt.getInstanceByDom=function(t){var e=t.getAttribute(dt);return ht[e]},pt.getInstanceById=function(t){return ht[t]},pt.registerTheme=function(t,e){st[t]=e},pt.registerPreprocessor=function(t){rt.push(t)},pt.registerProcessor=function(t,e){"function"==typeof t&&(e=t,t=G),it.push({prio:t,func:e})},pt.registerPostUpdate=function(t){at.push(t)},pt.registerAction=function(t,e,n){"function"==typeof e&&(n=e,e="");var i=z.isObject(t)?t.type:[t,t={event:e}][0];t.event=(t.event||i).toLowerCase(),e=t.event,z.assert(K.test(i)&&K.test(e)),et[i]||(et[i]={action:n,actionInfo:t}),nt[e]=i},pt.registerCoordinateSystem=function(t,e){S.register(t,e)},pt.registerLayout=function(t,e){"function"==typeof t&&(e=t,t=q),ot.push({prio:t,func:e,isLayout:!0})},pt.registerVisual=function(t,e){"function"==typeof t&&(e=t,t=j),ot.push({prio:t,func:e})},pt.registerLoading=function(t,e){lt[t]=e},pt.extendComponentModel=function(t){return I.extend(t)},pt.extendComponentView=function(t){return P.extend(t)},pt.extendSeriesModel=function(t){return C.extend(t)},pt.extendChartView=function(t){return L.extend(t)},pt.setCanvasCreator=function(t){z.createCanvas=t},pt.registerVisual(W,n(153)),pt.registerPreprocessor(n(147)),pt.registerLoading("default",n(138)),pt.registerAction({type:"highlight",event:"highlight",update:"highlight"},z.noop),pt.registerAction({type:"downplay",event:"downplay",update:"downplay"},z.noop),pt.zrender=E,pt.List=n(14),pt.Model=n(10),pt.Axis=n(33),pt.graphic=n(3),pt.number=n(4),pt.format=n(7),pt.throttle=D.throttle,pt.matrix=n(19),pt.vector=n(6),pt.color=n(22),pt.util={},F(["map","each","filter","indexOf","inherits","reduce","filter","bind","curry","isArray","isString","isObject","isFunction","extend","defaults","clone","merge"],function(t){pt.util[t]=z[t]}),pt.helper=n(137),pt.PRIORITY={PROCESSOR:{FILTER:G,STATISTIC:H},VISUAL:{LAYOUT:q,GLOBAL:W,CHART:j,COMPONENT:Z,BRUSH:U}},t.exports=pt},function(t,e,n){"use strict";function i(t){return null!=t&&"none"!=t}function r(t){return"string"==typeof t?_.lift(t,-.1):t}function a(t){if(t.__hoverStlDirty){var e=t.style.stroke,n=t.style.fill,a=t.__hoverStl;a.fill=a.fill||(i(n)?r(n):null),a.stroke=a.stroke||(i(e)?r(e):null);var o={};for(var s in a)a.hasOwnProperty(s)&&(o[s]=t.style[s]);t.__normalStl=o,t.__hoverStlDirty=!1}}function o(t){t.__isHover||(a(t),t.useHoverLayer?t.__zr&&t.__zr.addHover(t,t.__hoverStl):(t.setStyle(t.__hoverStl),t.z2+=1),t.__isHover=!0)}function s(t){if(t.__isHover){var e=t.__normalStl;t.useHoverLayer?t.__zr&&t.__zr.removeHover(t):(e&&t.setStyle(e),t.z2-=1),t.__isHover=!1}}function l(t){"group"===t.type?t.traverse(function(t){"group"!==t.type&&o(t)}):o(t)}function h(t){"group"===t.type?t.traverse(function(t){"group"!==t.type&&s(t)}):s(t)}function u(t,e){t.__hoverStl=t.hoverStyle||e||{},t.__hoverStlDirty=!0,t.__isHover&&a(t)}function c(t){this.__hoverSilentOnTouch&&t.zrByTouch||!this.__isEmphasis&&l(this)}function f(t){this.__hoverSilentOnTouch&&t.zrByTouch||!this.__isEmphasis&&h(this)}function d(){this.__isEmphasis=!0,l(this)}function p(){this.__isEmphasis=!1,h(this)}function g(t,e,n,i,r,a){"function"==typeof r&&(a=r,r=null);var o=i&&i.isAnimationEnabled();if(o){var s=t?"Update":"",l=i.getShallow("animationDuration"+s),h=i.getShallow("animationEasing"+s),u=i.getShallow("animationDelay"+s);"function"==typeof u&&(u=u(r,i.getAnimationDelayParams?i.getAnimationDelayParams(e,r):null)),"function"==typeof l&&(l=l(r)),l>0?e.animateTo(n,l,u||0,h,a):(e.attr(n),a&&a())}else e.attr(n),a&&a()}var v=n(1),m=n(182),y=Math.round,x=n(8),_=n(22),b=n(19),w=n(6),M={};M.Group=n(36),M.Image=n(53),M.Text=n(85),M.Circle=n(173),M.Sector=n(179),M.Ring=n(178),M.Polygon=n(175),M.Polyline=n(176),M.Rect=n(177),M.Line=n(174),M.BezierCurve=n(172),M.Arc=n(171),M.CompoundPath=n(166),M.LinearGradient=n(101),M.RadialGradient=n(167),M.BoundingRect=n(11),M.extendShape=function(t){return x.extend(t)},M.extendPath=function(t,e){return m.extendFromString(t,e)},M.makePath=function(t,e,n,i){var r=m.createFromString(t,e),a=r.getBoundingRect();if(n){var o=a.width/a.height;if("center"===i){var s,l=n.height*o;l<=n.width?s=n.height:(l=n.width,s=l/o);var h=n.x+n.width/2,u=n.y+n.height/2;n.x=h-l/2,n.y=u-s/2,n.width=l,n.height=s}M.resizePath(r,n)}return r},M.mergePath=m.mergePath,M.resizePath=function(t,e){if(t.applyTransform){var n=t.getBoundingRect(),i=n.calculateTransform(e);t.applyTransform(i)}},M.subPixelOptimizeLine=function(t){var e=M.subPixelOptimize,n=t.shape,i=t.style.lineWidth;return y(2*n.x1)===y(2*n.x2)&&(n.x1=n.x2=e(n.x1,i,!0)),y(2*n.y1)===y(2*n.y2)&&(n.y1=n.y2=e(n.y1,i,!0)),t},M.subPixelOptimizeRect=function(t){var e=M.subPixelOptimize,n=t.shape,i=t.style.lineWidth,r=n.x,a=n.y,o=n.width,s=n.height;return n.x=e(n.x,i,!0),n.y=e(n.y,i,!0),n.width=Math.max(e(r+o,i,!1)-n.x,0===o?0:1),n.height=Math.max(e(a+s,i,!1)-n.y,0===s?0:1),t},M.subPixelOptimize=function(t,e,n){var i=y(2*t);return(i+y(e))%2===0?i/2:(i+(n?1:-1))/2},M.setHoverStyle=function(t,e,n){t.__hoverSilentOnTouch=n&&n.hoverSilentOnTouch,"group"===t.type?t.traverse(function(t){"group"!==t.type&&u(t,e)}):u(t,e),t.on("mouseover",c).on("mouseout",f),t.on("emphasis",d).on("normal",p)},M.setText=function(t,e,n){var i=e.getShallow("position")||"inside",r=e.getShallow("offset"),a=i.indexOf("inside")>=0?"white":n,o=e.getModel("textStyle");v.extend(t,{textDistance:e.getShallow("distance")||5,textFont:o.getFont(),textPosition:i,textOffset:r,textFill:o.getTextColor()||a})},M.updateProps=function(t,e,n,i,r){g(!0,t,e,n,i,r)},M.initProps=function(t,e,n,i,r){g(!1,t,e,n,i,r)},M.getTransform=function(t,e){for(var n=b.identity([]);t&&t!==e;)b.mul(n,t.getLocalTransform(),n),t=t.parent;return n},M.applyTransform=function(t,e,n){return n&&(e=b.invert([],e)),w.applyTransform([],t,e)},M.transformDirection=function(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]),a=["left"===t?-i:"right"===t?i:0,"top"===t?-r:"bottom"===t?r:0];return a=M.applyTransform(a,e,n),Math.abs(a[0])>Math.abs(a[1])?a[0]>0?"right":"left":a[1]>0?"bottom":"top"},M.groupTransition=function(t,e,n,i){function r(t){var e={};return t.traverse(function(t){!t.isGroup&&t.anid&&(e[t.anid]=t)}),e}function a(t){var e={position:w.clone(t.position),rotation:t.rotation};return t.shape&&(e.shape=v.extend({},t.shape)),e}if(t&&e){var o=r(t);e.traverse(function(t){if(!t.isGroup&&t.anid){var e=o[t.anid];if(e){var i=a(t);t.attr(a(e)),M.updateProps(t,i,n,t.dataIndex)}}})}},t.exports=M},function(t,e){function n(t){return t.replace(/^\s+/,"").replace(/\s+$/,"")}var i={},r=1e-4;i.linearMap=function(t,e,n,i){var r=e[1]-e[0],a=n[1]-n[0];if(0===r)return 0===a?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*a+n[0]},i.parsePercent=function(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).match(/%$/)?parseFloat(t)/100*e:parseFloat(t):null==t?NaN:+t},i.round=function(t,e,n){return null==e&&(e=10),e=Math.min(Math.max(0,e),20),t=(+t).toFixed(e),n?t:+t},i.asc=function(t){return t.sort(function(t,e){return t-e}),t},i.getPrecision=function(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},i.getPrecisionSafe=function(t){var e=t.toString(),n=e.indexOf(".");return n<0?0:e.length-1-n},i.getPixelPrecision=function(t,e){var n=Math.log,i=Math.LN10,r=Math.floor(n(t[1]-t[0])/i),a=Math.round(n(Math.abs(e[1]-e[0]))/i),o=Math.min(Math.max(-r+a,0),20);return isFinite(o)?o:20},i.MAX_SAFE_INTEGER=9007199254740991,i.remRadian=function(t){var e=2*Math.PI;return(t%e+e)%e},i.isRadianAroundZero=function(t){return t>-r&&t<r};var a=/^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d\d)(?::(\d\d)(?:[.,](\d+))?)?)?(?:Z|([\+\-]\d\d):?\d\d)?)?)?)?)?$/,o=(new Date).getTimezoneOffset();i.parseDate=function(t){if(t instanceof Date)return t;if("string"==typeof t){var e=a.exec(t);return e?new Date((+e[1]),+(e[2]||1)-1,+e[3]||1,+e[4]||0,+(e[5]||0)-60*(e[8]||0)-o,+e[6]||0,+e[7]||0):new Date(NaN)}return null==t?new Date(NaN):new Date(Math.round(t))},i.quantity=function(t){return Math.pow(10,Math.floor(Math.log(t)/Math.LN10))},i.nice=function(t,e){var n,r=i.quantity(t),a=t/r;return n=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*r},i.reformIntervals=function(t){function e(t,n,i){return t.interval[i]<n.interval[i]||t.interval[i]===n.interval[i]&&(t.close[i]-n.close[i]===(i?-1:1)||!i&&e(t,n,1))}t.sort(function(t,n){return e(t,n,0)?-1:1});for(var n=-(1/0),i=1,r=0;r<t.length;){for(var a=t[r].interval,o=t[r].close,s=0;s<2;s++)a[s]<=n&&(a[s]=n,o[s]=s?1:1-i),n=a[s],i=o[s];a[0]===a[1]&&o[0]*o[1]!==1?t.splice(r,1):r++}return t},i.isNumeric=function(t){return t-parseFloat(t)>=0},t.exports=i},function(t,e,n){function i(t,e){return t&&t.hasOwnProperty(e)}var r=n(7),a=n(4),o=n(10),s=n(1),l=s.each,h=s.isObject,u={};u.normalizeToArray=function(t){return t instanceof Array?t:null==t?[]:[t]},u.defaultEmphasis=function(t,e){if(t){var n=t.emphasis=t.emphasis||{},i=t.normal=t.normal||{};l(e,function(t){var e=s.retrieve(n[t],i[t]);null!=e&&(n[t]=e)})}},u.LABEL_OPTIONS=["position","offset","show","textStyle","distance","formatter"],u.getDataItemValue=function(t){return t&&(null==t.value?t:t.value)},u.isDataItemOption=function(t){return h(t)&&!(t instanceof Array)},u.converDataValue=function(t,e){var n=e&&e.type;return"ordinal"===n?t:("time"===n&&"number"!=typeof t&&null!=t&&"-"!==t&&(t=+a.parseDate(t)),null==t||""===t?NaN:+t)},u.createDataFormatModel=function(t,e){var n=new o;return s.mixin(n,u.dataFormatMixin),n.seriesIndex=e.seriesIndex,n.name=e.name||"",n.mainType=e.mainType,n.subType=e.subType,n.getData=function(){return t},n},u.dataFormatMixin={getDataParams:function(t,e){var n=this.getData(e),i=this.getRawValue(t,e),r=n.getRawIndex(t),a=n.getName(t,!0),o=n.getRawDataItem(t);return{componentType:this.mainType,componentSubType:this.subType,seriesType:"series"===this.mainType?this.subType:null,seriesIndex:this.seriesIndex,seriesId:this.id,seriesName:this.name,name:a,dataIndex:r,data:o,dataType:e,value:i,color:n.getItemVisual(t,"color"),$vars:["seriesName","name","value"]}},getFormattedLabel:function(t,e,n,i){e=e||"normal";var a=this.getData(n),o=a.getItemModel(t),s=this.getDataParams(t,n);null!=i&&s.value instanceof Array&&(s.value=s.value[i]);var l=o.get(["label",e,"formatter"]);return"function"==typeof l?(s.status=e,l(s)):"string"==typeof l?r.formatTpl(l,s):void 0},getRawValue:function(t,e){var n=this.getData(e),i=n.getRawDataItem(t);if(null!=i)return!h(i)||i instanceof Array?i:i.value},formatTooltip:s.noop},u.mappingToExists=function(t,e){e=(e||[]).slice();var n=s.map(t||[],function(t,e){return{exist:t}});return l(e,function(t,i){if(h(t)){for(var r=0;r<n.length;r++)if(!n[r].option&&null!=t.id&&n[r].exist.id===t.id+"")return n[r].option=t,void(e[i]=null);for(var r=0;r<n.length;r++){var a=n[r].exist;if(!(n[r].option||null!=a.id&&null!=t.id||null==t.name||u.isIdInner(t)||u.isIdInner(a)||a.name!==t.name+""))return n[r].option=t,void(e[i]=null)}}}),l(e,function(t,e){if(h(t)){for(var i=0;i<n.length;i++){var r=n[i].exist;if(!n[i].option&&!u.isIdInner(r)&&null==t.id){n[i].option=t;break}}i>=n.length&&n.push({option:t})}}),n},u.makeIdAndName=function(t){var e={};l(t,function(t,n){var i=t.exist;i&&(e[i.id]=t)}),l(t,function(t,n){var i=t.option;s.assert(!i||null==i.id||!e[i.id]||e[i.id]===t,"id duplicates: "+(i&&i.id)),i&&null!=i.id&&(e[i.id]=t),!t.keyInfo&&(t.keyInfo={})}),l(t,function(t,n){var i=t.exist,r=t.option,a=t.keyInfo;if(h(r)){if(a.name=null!=r.name?r.name+"":i?i.name:"\0-",i)a.id=i.id;else if(null!=r.id)a.id=r.id+"";else{var o=0;do a.id="\0"+a.name+"\0"+o++;while(e[a.id])}e[a.id]=t}})},u.isIdInner=function(t){return h(t)&&t.id&&0===(t.id+"").indexOf("\0_ec_\0")},u.compressBatches=function(t,e){function n(t,e,n){for(var i=0,r=t.length;i<r;i++)for(var a=t[i].seriesId,o=u.normalizeToArray(t[i].dataIndex),s=n&&n[a],l=0,h=o.length;l<h;l++){var c=o[l];s&&s[c]?s[c]=null:(e[a]||(e[a]={}))[c]=1}}function i(t,e){var n=[];for(var r in t)if(t.hasOwnProperty(r)&&null!=t[r])if(e)n.push(+r);else{var a=i(t[r],!0);a.length&&n.push({seriesId:r,dataIndex:a})}return n}var r={},a={};return n(t||[],r),n(e||[],a,r),[i(r),i(a)]},u.queryDataIndex=function(t,e){return null!=e.dataIndexInside?e.dataIndexInside:null!=e.dataIndex?s.isArray(e.dataIndex)?s.map(e.dataIndex,function(e){return t.indexOfRawIndex(e)}):t.indexOfRawIndex(e.dataIndex):null!=e.name?s.isArray(e.name)?s.map(e.name,function(e){return t.indexOfName(e)}):t.indexOfName(e.name):void 0},u.makeGetter=function(){var t=0;return function(){var e="\0__ec_prop_getter_"+t++;return function(t){return t[e]||(t[e]={})}}}(),u.parseFinder=function(t,e,n){if(s.isString(e)){var r={};r[e+"Index"]=0,e=r}var a=n&&n.defaultMainType;!a||i(e,a+"Index")||i(e,a+"Id")||i(e,a+"Name")||(e[a+"Index"]=0);var o={};return l(e,function(i,r){var i=e[r];if("dataIndex"===r||"dataIndexInside"===r)return void(o[r]=i);var a=r.match(/^(\w+)(Index|Id|Name)$/)||[],l=a[1],h=(a[2]||"").toLowerCase();if(!(!l||!h||null==i||"index"===h&&"none"===i||n&&n.includeMainTypes&&s.indexOf(n.includeMainTypes,l)<0)){var u={mainType:l};"index"===h&&"all"===i||(u[h]=i);var c=t.queryComponents(u);o[l+"Models"]=c,o[l+"Model"]=c[0]}}),o},t.exports=u},function(t,e){var n="undefined"==typeof Float32Array?Array:Float32Array,i={create:function(t,e){var i=new n(2);return null==t&&(t=0),null==e&&(e=0),i[0]=t,i[1]=e,i},copy:function(t,e){return t[0]=e[0],t[1]=e[1],t},clone:function(t){var e=new n(2);return e[0]=t[0],e[1]=t[1],e},set:function(t,e,n){return t[0]=e,t[1]=n,t},add:function(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t},scaleAndAdd:function(t,e,n,i){return t[0]=e[0]+n[0]*i,t[1]=e[1]+n[1]*i,t},sub:function(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t},len:function(t){return Math.sqrt(this.lenSquare(t))},lenSquare:function(t){return t[0]*t[0]+t[1]*t[1]},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:function(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t},normalize:function(t,e){var n=i.len(e);return 0===n?(t[0]=0,t[1]=0):(t[0]=e[0]/n,t[1]=e[1]/n),t},distance:function(t,e){return Math.sqrt((t[0]-e[0])*(t[0]-e[0])+(t[1]-e[1])*(t[1]-e[1]))},distanceSquare:function(t,e){return(t[0]-e[0])*(t[0]-e[0])+(t[1]-e[1])*(t[1]-e[1])},negate:function(t,e){return t[0]=-e[0],t[1]=-e[1],t},lerp:function(t,e,n,i){return t[0]=e[0]+i*(n[0]-e[0]),t[1]=e[1]+i*(n[1]-e[1]),t},applyTransform:function(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},min:function(t,e,n){return t[0]=Math.min(e[0],n[0]),t[1]=Math.min(e[1],n[1]),t},max:function(t,e,n){return t[0]=Math.max(e[0],n[0]),t[1]=Math.max(e[1],n[1]),t}};i.length=i.len,i.lengthSquare=i.lenSquare,i.dist=i.distance,i.distSquare=i.distanceSquare,t.exports=i},function(t,e,n){var i=n(1),r=n(4),a=n(16),o={};o.addCommas=function(t){return isNaN(t)?"-":(t=(t+"").split("."),t[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,"$1,")+(t.length>1?"."+t[1]:""))},o.toCamelCase=function(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},o.normalizeCssArray=function(t){var e=t.length;return"number"==typeof t?[t,t,t,t]:2===e?[t[0],t[1],t[0],t[1]]:3===e?[t[0],t[1],t[2],t[1]]:t};var s=o.encodeHTML=function(t){return String(t).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")},l=["a","b","c","d","e","f","g"],h=function(t,e){return"{"+t+(null==e?"":e)+"}"};o.formatTpl=function(t,e,n){i.isArray(e)||(e=[e]);var r=e.length;if(!r)return"";for(var a=e[0].$vars||[],o=0;o<a.length;o++){var u=l[o],c=h(u,0);t=t.replace(h(u),n?s(c):c)}for(var f=0;f<r;f++)for(var d=0;d<a.length;d++){var c=e[f][a[d]];t=t.replace(h(l[d],f),n?s(c):c)}return t},o.formatTplSimple=function(t,e,n){return i.each(e,function(e,i){t=t.replace("{"+i+"}",n?s(e):e)}),t};var u=function(t){return t<10?"0"+t:t};o.formatTime=function(t,e,n){"week"!==t&&"month"!==t&&"quarter"!==t&&"half-year"!==t&&"year"!==t||(t="MM-dd\nyyyy");var i=r.parseDate(e),a=n?"":"UTC",o=i["get"+a+"FullYear"](),s=i["get"+a+"Month"]()+1,l=i["get"+a+"Date"](),h=i["get"+a+"Hours"](),c=i["get"+a+"Minutes"](),f=i["get"+a+"Seconds"]();return t=t.replace("MM",u(s)).toLowerCase().replace("yyyy",o).replace("yy",o%100).replace("dd",u(l)).replace("d",l).replace("hh",u(h)).replace("h",h).replace("mm",u(c)).replace("m",c).replace("ss",u(f)).replace("s",f)},o.capitalFirst=function(t){return t?t.charAt(0).toUpperCase()+t.substr(1):t},o.truncateText=a.truncateText,t.exports=o},function(t,e,n){function i(t){r.call(this,t),this.path=new o}var r=n(40),a=n(1),o=n(30),s=n(163),l=n(71),h=l.prototype.getCanvasPattern,u=Math.abs;i.prototype={constructor:i,type:"path",__dirtyPath:!0,strokeContainThreshold:5,brush:function(t,e){var n=this.style,i=this.path,r=n.hasStroke(),a=n.hasFill(),o=n.fill,s=n.stroke,l=a&&!!o.colorStops,u=r&&!!s.colorStops,c=a&&!!o.image,f=r&&!!s.image;if(n.bind(t,this,e),this.setTransform(t),this.__dirty){var d=this.getBoundingRect();l&&(this._fillGradient=n.getGradient(t,o,d)),u&&(this._strokeGradient=n.getGradient(t,s,d))}l?t.fillStyle=this._fillGradient:c&&(t.fillStyle=h.call(o,t)),u?t.strokeStyle=this._strokeGradient:f&&(t.strokeStyle=h.call(s,t));var p=n.lineDash,g=n.lineDashOffset,v=!!t.setLineDash,m=this.getGlobalScale();i.setScale(m[0],m[1]),this.__dirtyPath||p&&!v&&r?(i=this.path.beginPath(t),p&&!v&&(i.setLineDash(p),i.setLineDashOffset(g)),this.buildPath(i,this.shape,!1),this.__dirtyPath=!1):(t.beginPath(),this.path.rebuildPath(t)),a&&i.fill(t),p&&v&&(t.setLineDash(p),t.lineDashOffset=g),r&&i.stroke(t),p&&v&&t.setLineDash([]),this.restoreTransform(t),null!=n.text&&this.drawRectText(t,this.getBoundingRect())},buildPath:function(t,e,n){},getBoundingRect:function(){var t=this._rect,e=this.style,n=!t;if(n){var i=this.path;this.__dirtyPath&&(i.beginPath(),this.buildPath(i,this.shape,!1)),t=i.getBoundingRect()}if(this._rect=t,e.hasStroke()){var r=this._rectWithStroke||(this._rectWithStroke=t.clone());if(this.__dirty||n){r.copy(t);var a=e.lineWidth,o=e.strokeNoScale?this.getLineScale():1;e.hasFill()||(a=Math.max(a,this.strokeContainThreshold||4)),o>1e-10&&(r.width+=a/o,r.height+=a/o,r.x-=a/o/2,r.y-=a/o/2)}return r}return t},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 a=this.path.data;if(r.hasStroke()){var o=r.lineWidth,l=r.strokeNoScale?this.getLineScale():1;if(l>1e-10&&(r.hasFill()||(o=Math.max(o,this.strokeContainThreshold)),s.containStroke(a,o/l,t,e)))return!0}if(r.hasFill())return s.contain(a,t,e)}return!1},dirty:function(t){null==t&&(t=!0),t&&(this.__dirtyPath=t,this._rect=null),this.__dirty=!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):r.prototype.attrKV.call(this,t,e)},setShape:function(t,e){var n=this.shape;if(n){if(a.isObject(t))for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i]);else n[t]=e;this.dirty(!0)}return this},getLineScale:function(){var t=this.transform;return t&&u(t[0]-1)>1e-10&&u(t[3]-1)>1e-10?Math.sqrt(u(t[0]*t[3]-t[2]*t[1])):1}},i.extend=function(t){var e=function(e){i.call(this,e),t.style&&this.style.extendFrom(t.style,!1);var n=t.shape;if(n){this.shape=this.shape||{};var r=this.shape;for(var a in n)!r.hasOwnProperty(a)&&n.hasOwnProperty(a)&&(r[a]=n[a])}t.init&&t.init.call(this,e)};a.inherits(e,i);for(var n in t)"style"!==n&&"shape"!==n&&(e.prototype[n]=t[n]);return e},a.inherits(i,r),t.exports=i},function(t,e){function n(t){var e={},n={},i=t.match(/Firefox\/([\d.]+)/),r=t.match(/MSIE\s([\d.]+)/)||t.match(/Trident\/.+?rv:(([\d.]+))/),a=t.match(/Edge\/([\d.]+)/),o=/micromessenger/i.test(t);return i&&(n.firefox=!0,n.version=i[1]),r&&(n.ie=!0,n.version=r[1]),a&&(n.edge=!0,n.version=a[1]),o&&(n.weChat=!0),{browser:n,os:e,node:!1,canvasSupported:!!document.createElement("canvas").getContext,touchEventsSupported:"ontouchstart"in window&&!n.ie&&!n.edge,pointerEventsSupported:"onpointerdown"in window&&(n.edge||n.ie&&n.version>=11)}}var i={};i="undefined"==typeof navigator?{browser:{},os:{},node:!0,canvasSupported:!0}:n(navigator.userAgent),t.exports=i},function(t,e,n){function i(t,e,n){this.parentModel=e,this.ecModel=n,this.option=t}function r(t,e,n){for(var i=0;i<e.length&&(!e[i]||(t=t&&"object"==typeof t?t[e[i]]:null,null!=t));i++);return null==t&&n&&(t=n.get(e)),t}function a(t,e){var n=s.get(t,"getParent");return n?n.call(t,e):t.parentModel}var o=n(1),s=n(15),l=n(9);i.prototype={constructor:i,init:null,mergeOption:function(t){o.merge(this.option,t,!0)},get:function(t,e){return null==t?this.option:r(this.option,this.parsePath(t),!e&&a(this,t))},getShallow:function(t,e){var n=this.option,i=null==n?n:n[t],r=!e&&a(this,t);return null==i&&r&&(i=r.getShallow(t)),i},getModel:function(t,e){var n,o=null==t?this.option:r(this.option,t=this.parsePath(t));return e=e||(n=a(this,t))&&n.getModel(t),new i(o,e,this.ecModel)},isEmpty:function(){return null==this.option},restoreData:function(){},clone:function(){var t=this.constructor;return new t(o.clone(this.option))},setReadOnly:function(t){s.setReadOnly(this,t)},parsePath:function(t){return"string"==typeof t&&(t=t.split(".")),t},customizeGetParent:function(t){s.set(this,"getParent",t)},isAnimationEnabled:function(){if(!l.node){if(null!=this.option.animation)return!!this.option.animation;if(this.parentModel)return this.parentModel.isAnimationEnabled()}}},s.enableClassExtend(i);var h=o.mixin;h(i,n(145)),h(i,n(142)),h(i,n(146)),h(i,n(144)),t.exports=i},function(t,e,n){"use strict";function i(t,e,n,i){n<0&&(t+=n,n=-n),i<0&&(e+=i,i=-i),this.x=t,this.y=e,this.width=n,this.height=i}var r=n(6),a=n(19),o=r.applyTransform,s=Math.min,l=Math.max;i.prototype={constructor:i,union:function(t){var e=s(t.x,this.x),n=s(t.y,this.y);this.width=l(t.x+t.width,this.x+this.width)-e,this.height=l(t.y+t.height,this.y+this.height)-n,this.x=e,this.y=n},applyTransform:function(){var t=[],e=[],n=[],i=[];return function(r){if(r){t[0]=n[0]=this.x,t[1]=i[1]=this.y,e[0]=i[0]=this.x+this.width,e[1]=n[1]=this.y+this.height,o(t,t,r),o(e,e,r),o(n,n,r),o(i,i,r),this.x=s(t[0],e[0],n[0],i[0]),this.y=s(t[1],e[1],n[1],i[1]);var a=l(t[0],e[0],n[0],i[0]),h=l(t[1],e[1],n[1],i[1]);this.width=a-this.x,this.height=h-this.y}}}(),calculateTransform:function(t){var e=this,n=t.width/e.width,i=t.height/e.height,r=a.create();return a.translate(r,r,[-e.x,-e.y]),a.scale(r,r,[n,i]),a.translate(r,r,[t.x,t.y]),r},intersect:function(t){if(!t)return!1;t instanceof i||(t=i.create(t));var e=this,n=e.x,r=e.x+e.width,a=e.y,o=e.y+e.height,s=t.x,l=t.x+t.width,h=t.y,u=t.y+t.height;return!(r<s||l<n||o<h||u<a)},contain:function(t,e){var n=this;return t>=n.x&&t<=n.x+n.width&&e>=n.y&&e<=n.y+n.height},clone:function(){return new i(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}}},i.create=function(t){return new i(t.x,t.y,t.width,t.height)},t.exports=i},function(t,e,n){"use strict";function i(t,e,n,i,r){var a=0,o=0;null==i&&(i=1/0),null==r&&(r=1/0);var s=0;e.eachChild(function(l,h){var u,c,f=l.position,d=l.getBoundingRect(),p=e.childAt(h+1),g=p&&p.getBoundingRect();if("horizontal"===t){var v=d.width+(g?-g.x+d.x:0);u=a+v,u>i||l.newline?(a=0,u=v,o+=s+n,s=d.height):s=Math.max(s,d.height)}else{var m=d.height+(g?-g.y+d.y:0);c=o+m,c>r||l.newline?(a+=s+n,o=0,c=m,s=d.width):s=Math.max(s,d.width)}l.newline||(f[0]=a,f[1]=o,"horizontal"===t?a=u+n:o=c+n)})}var r=n(1),a=n(11),o=n(4),s=n(7),l=o.parsePercent,h=r.each,u={},c=u.LOCATION_PARAMS=["left","right","top","bottom","width","height"],f=u.HV_NAMES=[["width","left","right"],["height","top","bottom"]];u.box=i,u.vbox=r.curry(i,"vertical"),u.hbox=r.curry(i,"horizontal"),u.getAvailableSize=function(t,e,n){var i=e.width,r=e.height,a=l(t.x,i),o=l(t.y,r),h=l(t.x2,i),u=l(t.y2,r);return(isNaN(a)||isNaN(parseFloat(t.x)))&&(a=0),(isNaN(h)||isNaN(parseFloat(t.x2)))&&(h=i),(isNaN(o)||isNaN(parseFloat(t.y)))&&(o=0),(isNaN(u)||isNaN(parseFloat(t.y2)))&&(u=r),
+n=s.normalizeCssArray(n||0),{width:Math.max(h-a-n[1]-n[3],0),height:Math.max(u-o-n[0]-n[2],0)}},u.getLayoutRect=function(t,e,n){n=s.normalizeCssArray(n||0);var i=e.width,r=e.height,o=l(t.left,i),h=l(t.top,r),u=l(t.right,i),c=l(t.bottom,r),f=l(t.width,i),d=l(t.height,r),p=n[2]+n[0],g=n[1]+n[3],v=t.aspect;switch(isNaN(f)&&(f=i-u-g-o),isNaN(d)&&(d=r-c-p-h),isNaN(f)&&isNaN(d)&&(v>i/r?f=.8*i:d=.8*r),null!=v&&(isNaN(f)&&(f=v*d),isNaN(d)&&(d=f/v)),isNaN(o)&&(o=i-u-f-g),isNaN(h)&&(h=r-c-d-p),t.left||t.right){case"center":o=i/2-f/2-n[3];break;case"right":o=i-f-g}switch(t.top||t.bottom){case"middle":case"center":h=r/2-d/2-n[0];break;case"bottom":h=r-d-p}o=o||0,h=h||0,isNaN(f)&&(f=i-o-(u||0)),isNaN(d)&&(d=r-h-(c||0));var m=new a(o+n[3],h+n[0],f,d);return m.margin=n,m},u.positionElement=function(t,e,n,i,o){var s=!o||!o.hv||o.hv[0],l=!o||!o.hv||o.hv[1],h=o&&o.boundingMode||"all";if(s||l){var c;if("raw"===h)c="group"===t.type?new a(0,0,+e.width||0,+e.height||0):t.getBoundingRect();else if(c=t.getBoundingRect(),t.needLocalTransform()){var f=t.getLocalTransform();c=c.clone(),c.applyTransform(f)}e=u.getLayoutRect(r.defaults({width:c.width,height:c.height},e),n,i);var d=t.position,p=s?e.x-c.x:0,g=l?e.y-c.y:0;t.attr("position","raw"===h?[p,g]:[d[0]+p,d[1]+g])}},u.sizeCalculable=function(t,e){return null!=t[f[e][0]]||null!=t[f[e][1]]&&null!=t[f[e][2]]},u.mergeLayoutParam=function(t,e,n){function i(n,i){var r={},s=0,u={},c=0,f=2;if(h(n,function(e){u[e]=t[e]}),h(n,function(t){a(e,t)&&(r[t]=u[t]=e[t]),o(r,t)&&s++,o(u,t)&&c++}),l[i])return o(e,n[2])&&(u[n[1]]=null),o(e,n[1])&&(u[n[2]]=null),u;if(c!==f&&s){if(s>=f)return r;for(var d=0;d<n.length;d++){var p=n[d];if(!a(r,p)&&a(t,p)){r[p]=t[p];break}}return r}return u}function a(t,e){return t.hasOwnProperty(e)}function o(t,e){return null!=t[e]&&"auto"!==t[e]}function s(t,e,n){h(t,function(t){e[t]=n[t]})}!r.isObject(n)&&(n={});var l=n.ignoreSize;!r.isArray(l)&&(l=[l,l]);var u=i(f[0],0),c=i(f[1],1);s(f[0],t,u),s(f[1],t,c)},u.getLayoutParams=function(t){return u.copyLayoutParams({},t)},u.copyLayoutParams=function(t,e){return e&&t&&h(c,function(n){e.hasOwnProperty(n)&&(t[n]=e[n])}),t},t.exports=u},function(t,e,n){function i(t){var e=[];return a.each(u.getClassesByMainType(t),function(t){o.apply(e,t.prototype.dependencies||[])}),a.map(e,function(t){return l.parseClassType(t).main})}var r=n(10),a=n(1),o=Array.prototype.push,s=n(49),l=n(15),h=n(12),u=r.extend({type:"component",id:"",name:"",mainType:"",subType:"",componentIndex:0,defaultOption:null,ecModel:null,dependentModels:[],uid:null,layoutMode:null,$constructor:function(t,e,n,i){r.call(this,t,e,n,i),this.uid=s.getUID("componentModel")},init:function(t,e,n,i){this.mergeDefaultAndTheme(t,n)},mergeDefaultAndTheme:function(t,e){var n=this.layoutMode,i=n?h.getLayoutParams(t):{},r=e.getTheme();a.merge(t,r.get(this.mainType)),a.merge(t,this.getDefaultOption()),n&&h.mergeLayoutParam(t,i,n)},mergeOption:function(t,e){a.merge(this.option,t,!0);var n=this.layoutMode;n&&h.mergeLayoutParam(this.option,t,n)},optionUpdated:function(t,e){},getDefaultOption:function(){if(!l.hasOwn(this,"__defaultOption")){for(var t=[],e=this.constructor;e;){var n=e.prototype.defaultOption;n&&t.push(n),e=e.superClass}for(var i={},r=t.length-1;r>=0;r--)i=a.merge(i,t[r],!0);l.set(this,"__defaultOption",i)}return l.get(this,"__defaultOption")},getReferringComponents:function(t){return this.ecModel.queryComponents({mainType:t,index:this.get(t+"Index",!0),id:this.get(t+"Id",!0)})}});l.enableClassManagement(u,{registerWhenExtend:!0}),s.enableSubTypeDefaulter(u),s.enableTopologicalTravel(u,i),a.mixin(u,n(143)),t.exports=u},function(t,e,n){(function(e){function i(t){return f.isArray(t)||(t=[t]),t}function r(t,e){var n=t.dimensions,i=new m(f.map(n,t.getDimensionInfo,t),t.hostModel);v(i,t);for(var r=i._storage={},a=t._storage,o=0;o<n.length;o++){var s=n[o],l=a[s];f.indexOf(e,s)>=0?r[s]=new l.constructor(a[s].length):r[s]=a[s]}return i}var a="undefined",o="undefined"==typeof window?e:window,s=typeof o.Float64Array===a?Array:o.Float64Array,l=typeof o.Int32Array===a?Array:o.Int32Array,h={"float":s,"int":l,ordinal:Array,number:Array,time:Array},u=n(10),c=n(48),f=n(1),d=n(5),p=f.isObject,g=["stackedOn","hasItemOption","_nameList","_idList","_rawData"],v=function(t,e){f.each(g.concat(e.__wrappedMethods||[]),function(n){e.hasOwnProperty(n)&&(t[n]=e[n])}),t.__wrappedMethods=e.__wrappedMethods},m=function(t,e){t=t||["x","y"];for(var n={},i=[],r=0;r<t.length;r++){var a,o={};"string"==typeof t[r]?(a=t[r],o={name:a,stackable:!1,type:"number"}):(o=t[r],a=o.name,o.type=o.type||"number"),i.push(a),n[a]=o}this.dimensions=i,this._dimensionInfos=n,this.hostModel=e,this.dataType,this.indices=[],this._storage={},this._nameList=[],this._idList=[],this._optionModels=[],this.stackedOn=null,this._visual={},this._layout={},this._itemVisuals=[],this._itemLayouts=[],this._graphicEls=[],this._rawData,this._extent},y=m.prototype;y.type="list",y.hasItemOption=!0,y.getDimension=function(t){return isNaN(t)||(t=this.dimensions[t]||t),t},y.getDimensionInfo=function(t){return f.clone(this._dimensionInfos[this.getDimension(t)])},y.initData=function(t,e,n){t=t||[],this._rawData=t;var i=this._storage={},r=this.indices=[],a=this.dimensions,o=t.length,s=this._dimensionInfos,l=[],u={};e=e||[];for(var c=0;c<a.length;c++){var f=s[a[c]],p=h[f.type];i[a[c]]=new p(o)}var g=this;n||(g.hasItemOption=!1),n=n||function(t,e,n,i){var r=d.getDataItemValue(t);return d.isDataItemOption(t)&&(g.hasItemOption=!0),d.converDataValue(r instanceof Array?r[i]:r,s[e])};for(var v=0;v<t.length;v++){for(var m=t[v],y=0;y<a.length;y++){var x=a[y],_=i[x];_[v]=n(m,x,v,y)}r.push(v)}for(var c=0;c<t.length;c++){e[c]||t[c]&&null!=t[c].name&&(e[c]=t[c].name);var b=e[c]||"",w=t[c]&&t[c].id;!w&&b&&(u[b]=u[b]||0,w=b,u[b]>0&&(w+="__ec__"+u[b]),u[b]++),w&&(l[c]=w)}this._nameList=e,this._idList=l},y.count=function(){return this.indices.length},y.get=function(t,e,n){var i=this._storage,r=this.indices[e];if(null==r)return NaN;var a=i[t]&&i[t][r];if(n){var o=this._dimensionInfos[t];if(o&&o.stackable)for(var s=this.stackedOn;s;){var l=s.get(t,e);(a>=0&&l>0||a<=0&&l<0)&&(a+=l),s=s.stackedOn}}return a},y.getValues=function(t,e,n){var i=[];f.isArray(t)||(n=e,e=t,t=this.dimensions);for(var r=0,a=t.length;r<a;r++)i.push(this.get(t[r],e,n));return i},y.hasValue=function(t){for(var e=this.dimensions,n=this._dimensionInfos,i=0,r=e.length;i<r;i++)if("ordinal"!==n[e[i]].type&&isNaN(this.get(e[i],t)))return!1;return!0},y.getDataExtent=function(t,e,n){t=this.getDimension(t);var i=this._storage[t],r=this.getDimensionInfo(t);e=r&&r.stackable&&e;var a,o=(this._extent||(this._extent={}))[t+!!e];if(o)return o;if(i){for(var s=1/0,l=-(1/0),h=0,u=this.count();h<u;h++)a=this.get(t,h,e),n&&!n(a,t,h)||(a<s&&(s=a),a>l&&(l=a));return this._extent[t+!!e]=[s,l]}return[1/0,-(1/0)]},y.getSum=function(t,e){var n=this._storage[t],i=0;if(n)for(var r=0,a=this.count();r<a;r++){var o=this.get(t,r,e);isNaN(o)||(i+=o)}return i},y.indexOf=function(t,e){var n=this._storage,i=n[t],r=this.indices;if(i)for(var a=0,o=r.length;a<o;a++){var s=r[a];if(i[s]===e)return a}return-1},y.indexOfName=function(t){for(var e=this.indices,n=this._nameList,i=0,r=e.length;i<r;i++){var a=e[i];if(n[a]===t)return i}return-1},y.indexOfRawIndex=function(t){var e=this.indices,n=e[t];if(null!=n&&n===t)return t;for(var i=0,r=e.length-1;i<=r;){var a=(i+r)/2|0;if(e[a]<t)i=a+1;else{if(!(e[a]>t))return a;r=a-1}}return-1},y.indexOfNearest=function(t,e,n,i){var r=this._storage,a=r[t],o=[];if(!a)return o;null==i&&(i=1/0);for(var s=Number.MAX_VALUE,l=-1,h=0,u=this.count();h<u;h++){var c=e-this.get(t,h,n),f=Math.abs(c);c<=i&&f<=s&&((f<s||c>=0&&l<0)&&(s=f,l=c,o.length=0),o.push(h))}return o},y.getRawIndex=function(t){var e=this.indices[t];return null==e?-1:e},y.getRawDataItem=function(t){return this._rawData[this.getRawIndex(t)]},y.getName=function(t){return this._nameList[this.indices[t]]||""},y.getId=function(t){return this._idList[this.indices[t]]||this.getRawIndex(t)+""},y.each=function(t,e,n,r){"function"==typeof t&&(r=n,n=e,e=t,t=[]),t=f.map(i(t),this.getDimension,this);var a=[],o=t.length,s=this.indices;r=r||this;for(var l=0;l<s.length;l++)switch(o){case 0:e.call(r,l);break;case 1:e.call(r,this.get(t[0],l,n),l);break;case 2:e.call(r,this.get(t[0],l,n),this.get(t[1],l,n),l);break;default:for(var h=0;h<o;h++)a[h]=this.get(t[h],l,n);a[h]=l,e.apply(r,a)}},y.filterSelf=function(t,e,n,r){"function"==typeof t&&(r=n,n=e,e=t,t=[]),t=f.map(i(t),this.getDimension,this);var a=[],o=[],s=t.length,l=this.indices;r=r||this;for(var h=0;h<l.length;h++){var u;if(1===s)u=e.call(r,this.get(t[0],h,n),h);else{for(var c=0;c<s;c++)o[c]=this.get(t[c],h,n);o[c]=h,u=e.apply(r,o)}u&&a.push(l[h])}return this.indices=a,this._extent={},this},y.mapArray=function(t,e,n,i){"function"==typeof t&&(i=n,n=e,e=t,t=[]);var r=[];return this.each(t,function(){r.push(e&&e.apply(this,arguments))},n,i),r},y.map=function(t,e,n,a){t=f.map(i(t),this.getDimension,this);var o=r(this,t),s=o.indices=this.indices,l=o._storage,h=[];return this.each(t,function(){var n=arguments[arguments.length-1],i=e&&e.apply(this,arguments);if(null!=i){"number"==typeof i&&(h[0]=i,i=h);for(var r=0;r<i.length;r++){var a=t[r],o=l[a],u=s[n];o&&(o[u]=i[r])}}},n,a),o},y.downSample=function(t,e,n,i){for(var a=r(this,[t]),o=this._storage,s=a._storage,l=this.indices,h=a.indices=[],u=[],c=[],f=Math.floor(1/e),d=s[t],p=this.count(),g=0;g<o[t].length;g++)s[t][g]=o[t][g];for(var g=0;g<p;g+=f){f>p-g&&(f=p-g,u.length=f);for(var v=0;v<f;v++){var m=l[g+v];u[v]=d[m],c[v]=m}var y=n(u),m=c[i(u,y)||0];d[m]=y,h.push(m)}return a},y.getItemModel=function(t){var e=this.hostModel;return t=this.indices[t],new u(this._rawData[t],e,e&&e.ecModel)},y.diff=function(t){var e,n=this._idList,i=t&&t._idList,r="e\0\0";return new c(t?t.indices:[],this.indices,function(t){return null!=(e=i[t])?e:r+t},function(t){return null!=(e=n[t])?e:r+t})},y.getVisual=function(t){var e=this._visual;return e&&e[t]},y.setVisual=function(t,e){if(p(t))for(var n in t)t.hasOwnProperty(n)&&this.setVisual(n,t[n]);else this._visual=this._visual||{},this._visual[t]=e},y.setLayout=function(t,e){if(p(t))for(var n in t)t.hasOwnProperty(n)&&this.setLayout(n,t[n]);else this._layout[t]=e},y.getLayout=function(t){return this._layout[t]},y.getItemLayout=function(t){return this._itemLayouts[t]},y.setItemLayout=function(t,e,n){this._itemLayouts[t]=n?f.extend(this._itemLayouts[t]||{},e):e},y.clearItemLayouts=function(){this._itemLayouts.length=0},y.getItemVisual=function(t,e,n){var i=this._itemVisuals[t],r=i&&i[e];return null!=r||n?r:this.getVisual(e)},y.setItemVisual=function(t,e,n){var i=this._itemVisuals[t]||{};if(this._itemVisuals[t]=i,p(e))for(var r in e)e.hasOwnProperty(r)&&(i[r]=e[r]);else i[e]=n},y.clearAllVisual=function(){this._visual={},this._itemVisuals=[]};var x=function(t){t.seriesIndex=this.seriesIndex,t.dataIndex=this.dataIndex,t.dataType=this.dataType};y.setItemGraphicEl=function(t,e){var n=this.hostModel;e&&(e.dataIndex=t,e.dataType=this.dataType,e.seriesIndex=n&&n.seriesIndex,"group"===e.type&&e.traverse(x,e)),this._graphicEls[t]=e},y.getItemGraphicEl=function(t){return this._graphicEls[t]},y.eachItemGraphicEl=function(t,e){f.each(this._graphicEls,function(n,i){n&&t&&t.call(e,n,i)})},y.cloneShallow=function(){var t=f.map(this.dimensions,this.getDimensionInfo,this),e=new m(t,this.hostModel);return e._storage=this._storage,v(e,this),e.indices=this.indices.slice(),this._extent&&(e._extent=f.extend({},this._extent)),e},y.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(f.slice(arguments)))})},y.TRANSFERABLE_METHODS=["cloneShallow","downSample","map"],y.CHANGABLE_METHODS=["filterSelf"],t.exports=m}).call(e,function(){return this}())},function(t,e,n){function i(t){o.assert(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(t),'componentType "'+t+'" illegal')}function r(t,e){var n=o.slice(arguments,2);return this.superClass.prototype[e].apply(t,n)}function a(t,e,n){return this.superClass.prototype[e].apply(t,n)}var o=n(1),s={},l=".",h="___EC__COMPONENT__CONTAINER___",u="\0ec_\0";s.set=function(t,e,n){return t[u+e]=n},s.get=function(t,e){return t[u+e]},s.hasOwn=function(t,e){return t.hasOwnProperty(u+e)};var c=s.parseClassType=function(t){var e={main:"",sub:""};return t&&(t=t.split(l),e.main=t[0]||"",e.sub=t[1]||""),e};s.enableClassExtend=function(t,e){t.$constructor=t,t.extend=function(t){var e=this,n=function(){t.$constructor?t.$constructor.apply(this,arguments):e.apply(this,arguments)};return o.extend(n.prototype,t),n.extend=this.extend,n.superCall=r,n.superApply=a,o.inherits(n,this),n.superClass=e,n}},s.enableClassManagement=function(t,e){function n(t){var e=r[t.main];return e&&e[h]||(e=r[t.main]={},e[h]=!0),e}e=e||{};var r={};if(t.registerClass=function(t,e){if(e)if(i(e),e=c(e),e.sub){if(e.sub!==h){var a=n(e);a[e.sub]=t}}else r[e.main]=t;return t},t.getClass=function(t,e,n){var i=r[t];if(i&&i[h]&&(i=e?i[e]:null),n&&!i)throw new Error(e?"Component "+t+"."+(e||"")+" not exists. Load it first.":t+".type should be specified.");return i},t.getClassesByMainType=function(t){t=c(t);var e=[],n=r[t.main];return n&&n[h]?o.each(n,function(t,n){n!==h&&e.push(t)}):e.push(n),e},t.hasClass=function(t){return t=c(t),!!r[t.main]},t.getAllClassMainTypes=function(){var t=[];return o.each(r,function(e,n){t.push(n)}),t},t.hasSubTypes=function(t){t=c(t);var e=r[t.main];return e&&e[h]},t.parseClassType=c,e.registerWhenExtend){var a=t.extend;a&&(t.extend=function(e){var n=a.call(this,e);return t.registerClass(n,e.type)})}return t},s.setReadOnly=function(t,e){},t.exports=s},function(t,e,n){function i(t,e){var n=t+":"+e;if(l[n])return l[n];for(var i=(t+"").split("\n"),r=0,a=0,o=i.length;a<o;a++)r=Math.max(p.measureText(i[a],e).width,r);return h>u&&(h=0,l={}),h++,l[n]=r,r}function r(t,e,n,r){var a=((t||"")+"").split("\n").length,o=i(t,e),s=i("国",e),l=a*s,h=new f(0,0,o,l);switch(h.lineHeight=s,r){case"bottom":case"alphabetic":h.y-=s;break;case"middle":h.y-=s/2}switch(n){case"end":case"right":h.x-=h.width;break;case"center":h.x-=h.width/2}return h}function a(t,e,n,i){var r=e.x,a=e.y,o=e.height,s=e.width,l=n.height,h=o/2-l/2,u="left";switch(t){case"left":r-=i,a+=h,u="right";break;case"right":r+=i+s,a+=h,u="left";break;case"top":r+=s/2,a-=i+l,u="center";break;case"bottom":r+=s/2,a+=o+i,u="center";break;case"inside":r+=s/2,a+=h,u="center";break;case"insideLeft":r+=i,a+=h,u="left";break;case"insideRight":r+=s-i,a+=h,u="right";break;case"insideTop":r+=s/2,a+=i,u="center";break;case"insideBottom":r+=s/2,a+=o-l-i,u="center";break;case"insideTopLeft":r+=i,a+=i,u="left";break;case"insideTopRight":r+=s-i,a+=i,u="right";break;case"insideBottomLeft":r+=i,a+=o-l-i;break;case"insideBottomRight":r+=s-i,a+=o-l-i,u="right"}return{x:r,y:a,textAlign:u,textBaseline:"top"}}function o(t,e,n,r,a){if(!e)return"";a=a||{},r=d(r,"...");for(var o=d(a.maxIterations,2),l=d(a.minChar,0),h=i("国",n),u=i("a",n),c=d(a.placeholder,""),f=e=Math.max(0,e-1),p=0;p<l&&f>=u;p++)f-=u;var g=i(r);g>f&&(r="",g=0),f=e-g;for(var v=(t+"").split("\n"),p=0,m=v.length;p<m;p++){var y=v[p],x=i(y,n);if(!(x<=e)){for(var _=0;;_++){if(x<=f||_>=o){y+=r;break}var b=0===_?s(y,f,u,h):x>0?Math.floor(y.length*f/x):0;y=y.substr(0,b),x=i(y,n)}""===y&&(y=c),v[p]=y}}return v.join("\n")}function s(t,e,n,i){for(var r=0,a=0,o=t.length;a<o&&r<e;a++){var s=t.charCodeAt(a);r+=0<=s&&s<=127?n:i}return a}var l={},h=0,u=5e3,c=n(1),f=n(11),d=c.retrieve,p={getWidth:i,getBoundingRect:r,adjustTextPositionOnRect:a,truncateText:o,measureText:function(t,e){var n=c.getContext();return n.font=e||"12px sans-serif",n.measureText(t)}};t.exports=p},function(t,e,n){var i=n(151),r=n(43);n(152),n(150);var a=n(34),o=n(4),s=n(1),l=n(16),h={};h.getScaleExtent=function(t,e){var n,i,r,a=t.type,l=e.getMin(),h=e.getMax(),u=null!=l,c=null!=h,f=t.getExtent();return"ordinal"===a?n=(e.get("data")||[]).length:(i=e.get("boundaryGap"),s.isArray(i)||(i=[i||0,i||0]),i[0]=o.parsePercent(i[0],1),i[1]=o.parsePercent(i[1],1),r=f[1]-f[0]),null==l&&(l="ordinal"===a?n?0:NaN:f[0]-i[0]*r),null==h&&(h="ordinal"===a?n?n-1:NaN:f[1]+i[1]*r),"dataMin"===l&&(l=f[0]),"dataMax"===h&&(h=f[1]),(null==l||!isFinite(l))&&(l=NaN),(null==h||!isFinite(h))&&(h=NaN),t.setBlank(s.eqNaN(l)||s.eqNaN(h)),e.getNeedCrossZero()&&(l>0&&h>0&&!u&&(l=0),l<0&&h<0&&!c&&(h=0)),[l,h]},h.niceScaleExtent=function(t,e){var n=h.getScaleExtent(t,e),i=null!=e.getMin(),r=null!=e.getMax(),a=e.get("splitNumber");"log"===t.type&&(t.base=e.get("logBase")),t.setExtent(n[0],n[1]),t.niceExtent(a,i,r);var o=e.get("minInterval");if(isFinite(o)&&!i&&!r&&"interval"===t.type){var s=t.getInterval(),l=Math.max(Math.abs(s),o)/s;n=t.getExtent();var u=(n[1]+n[0])/2;t.setExtent(l*(n[0]-u)+u,l*(n[1]-u)+u),t.niceExtent(a)}var s=e.get("interval");null!=s&&t.setInterval&&t.setInterval(s)},h.createScaleByModel=function(t,e){if(e=e||t.get("type"))switch(e){case"category":return new i(t.getCategories(),[1/0,-(1/0)]);case"value":return new r;default:return(a.getClass(e)||r).create(t)}},h.ifAxisCrossZero=function(t){var e=t.scale.getExtent(),n=e[0],i=e[1];return!(n>0&&i>0||n<0&&i<0)},h.getAxisLabelInterval=function(t,e,n,i){var r,a=0,o=0,s=1;e.length>40&&(s=Math.floor(e.length/40));for(var h=0;h<t.length;h+=s){var u=t[h],c=l.getBoundingRect(e[h],n,"center","top");c[i?"x":"y"]+=u,c[i?"width":"height"]*=1.3,r?r.intersect(c)?(o++,a=Math.max(a,o)):(r.union(c),o=0):r=c.clone()}return 0===a&&s>1?s:(a+1)*s-1},h.getFormattedLabels=function(t,e){var n=t.scale,i=n.getTicksLabels(),r=n.getTicks();return"string"==typeof e?(e=function(t){return function(e){return t.replace("{value}",null!=e?e:"")}}(e),s.map(i,e)):"function"==typeof e?s.map(r,function(n,i){return e(h.getAxisRawValue(t,n),i)},this):i},h.getAxisRawValue=function(t,e){return"category"===t.type?t.scale.getLabel(e):e},t.exports=h},function(t,e,n){"use strict";var i=n(1),r=n(7),a=n(15),o=n(5),s=n(13),l=n(62),h=n(9),u=n(12),c=a.set,f=a.get,d=r.encodeHTML,p=r.addCommas,g=s.extend({type:"series.__base__",seriesIndex:0,coordinateSystem:null,defaultOption:null,legendDataProvider:null,visualColorAccessPath:"itemStyle.normal.color",layoutMode:null,init:function(t,e,n,i){this.seriesIndex=this.componentIndex,this.mergeDefaultAndTheme(t,n);var r=this.getInitialData(t,n);c(this,"dataBeforeProcessed",r),this.restoreData()},mergeDefaultAndTheme:function(t,e){var n=this.layoutMode,r=n?u.getLayoutParams(t):{};i.merge(t,e.getTheme().get(this.subType)),i.merge(t,this.getDefaultOption()),o.defaultEmphasis(t.label,o.LABEL_OPTIONS),this.fillDataTextStyle(t.data),n&&u.mergeLayoutParam(t,r,n)},mergeOption:function(t,e){t=i.merge(this.option,t,!0),this.fillDataTextStyle(t.data);var n=this.layoutMode;n&&u.mergeLayoutParam(this.option,t,n);var r=this.getInitialData(t,e);r&&(c(this,"data",r),c(this,"dataBeforeProcessed",r.cloneShallow()))},fillDataTextStyle:function(t){if(t)for(var e=0;e<t.length;e++)t[e]&&t[e].label&&o.defaultEmphasis(t[e].label,o.LABEL_OPTIONS)},getInitialData:function(){},getData:function(t){var e=f(this,"data");return null==t?e:e.getLinkedData(t)},setData:function(t){c(this,"data",t)},getRawData:function(){return f(this,"dataBeforeProcessed")},coordDimToDataDim:function(t){return[t]},dataDimToCoordDim:function(t){return t},getBaseAxis:function(){var t=this.coordinateSystem;return t&&t.getBaseAxis&&t.getBaseAxis()},formatTooltip:function(t,e,n){function a(t){var n=[];return i.each(t,function(t,i){var a,s=o.getDimensionInfo(i),l=s&&s.type;a="ordinal"===l?t+"":"time"===l?e?"":r.formatTime("yyyy/MM/dd hh:mm:ss",t):p(t),a&&n.push(a)}),n.join(", ")}var o=f(this,"data"),s=this.getRawValue(t),l=d(i.isArray(s)?a(s):p(s)),h=o.getName(t),u=o.getItemVisual(t,"color");i.isObject(u)&&u.colorStops&&(u=(u.colorStops[0]||{}).color),u=u||"transparent";var c='<span style="display:inline-block;margin-right:5px;border-radius:10px;width:9px;height:9px;background-color:'+d(u)+'"></span>',g=this.name;return"\0-"===g&&(g=""),e?c+d(this.name)+" : "+l:(g&&d(g)+"<br />")+c+(h?d(h)+" : "+l:l)},isAnimationEnabled:function(){if(h.node)return!1;var t=this.getShallow("animation");return t&&this.getData().count()>this.getShallow("animationThreshold")&&(t=!1),t},restoreData:function(){c(this,"data",f(this,"dataBeforeProcessed").cloneShallow())},getColorFromPalette:function(t,e){var n=this.ecModel,i=l.getColorFromPalette.call(this,t,e);return i||(i=n.getColorFromPalette(t,e)),i},getAxisTooltipData:null,getTooltipPosition:null});i.mixin(g,o.dataFormatMixin),i.mixin(g,l),t.exports=g},function(t,e){var n="undefined"==typeof Float32Array?Array:Float32Array,i={create:function(){var t=new n(6);return i.identity(t),t},identity:function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t},copy:function(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},mul:function(t,e,n){var i=e[0]*n[0]+e[2]*n[1],r=e[1]*n[0]+e[3]*n[1],a=e[0]*n[2]+e[2]*n[3],o=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]=a,t[3]=o,t[4]=s,t[5]=l,t},translate:function(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},rotate:function(t,e,n){var i=e[0],r=e[2],a=e[4],o=e[1],s=e[3],l=e[5],h=Math.sin(n),u=Math.cos(n);return t[0]=i*u+o*h,t[1]=-i*h+o*u,t[2]=r*u+s*h,t[3]=-r*h+u*s,t[4]=u*a+h*l,t[5]=u*l-h*a,t},scale:function(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},invert:function(t,e){var n=e[0],i=e[2],r=e[4],a=e[1],o=e[3],s=e[5],l=n*o-a*i;return l?(l=1/l,t[0]=o*l,t[1]=-a*l,t[2]=-i*l,t[3]=n*l,t[4]=(i*s-o*r)*l,t[5]=(a*r-n*s)*l,t):null}};t.exports=i},function(t,e,n){"use strict";function i(t){return t.getBoundingClientRect?t.getBoundingClientRect():{left:0,top:0}}function r(t,e,n,i){return n=n||{},i||!u.canvasSupported?a(t,e,n):u.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):a(t,e,n),n}function a(t,e,n){var r=i(t);n.zrX=e.clientX-r.left,n.zrY=e.clientY-r.top}function o(t,e,n){if(e=e||window.event,null!=e.zrX)return e;var i=e.type,a=i&&i.indexOf("touch")>=0;if(a){var o="touchend"!=i?e.targetTouches[0]:e.changedTouches[0];o&&r(t,o,e,n)}else r(t,e,e,n),e.zrDelta=e.wheelDelta?e.wheelDelta/120:-(e.detail||0)/3;return e}function s(t,e,n){c?t.addEventListener(e,n):t.attachEvent("on"+e,n)}function l(t,e,n){c?t.removeEventListener(e,n):t.detachEvent("on"+e,n)}var h=n(23),u=n(9),c="undefined"!=typeof window&&!!window.addEventListener,f=c?function(t){t.preventDefault(),t.stopPropagation(),t.cancelBubble=!0}:function(t){t.returnValue=!1,t.cancelBubble=!0};t.exports={clientToLocal:r,normalizeEvent:o,addEventListener:s,removeEventListener:l,stop:f,Dispatcher:h}},function(t,e,n){"use strict";function i(t){return t>-w&&t<w}function r(t){return t>w||t<-w}function a(t,e,n,i,r){var a=1-r;return a*a*(a*t+3*r*e)+r*r*(r*i+3*a*n)}function o(t,e,n,i,r){var a=1-r;return 3*(((e-t)*a+2*(n-e)*r)*a+(i-n)*r*r)}function s(t,e,n,r,a,o){var s=r+3*(e-n)-t,l=3*(n-2*e+t),h=3*(e-t),u=t-a,c=l*l-3*s*h,f=l*h-9*s*u,d=h*h-3*l*u,p=0;if(i(c)&&i(f))if(i(l))o[0]=0;else{var g=-h/l;g>=0&&g<=1&&(o[p++]=g)}else{var v=f*f-4*c*d;if(i(v)){var m=f/c,g=-l/s+m,y=-m/2;g>=0&&g<=1&&(o[p++]=g),y>=0&&y<=1&&(o[p++]=y)}else if(v>0){var x=b(v),w=c*l+1.5*s*(-f+x),M=c*l+1.5*s*(-f-x);w=w<0?-_(-w,S):_(w,S),M=M<0?-_(-M,S):_(M,S);var g=(-l-(w+M))/(3*s);g>=0&&g<=1&&(o[p++]=g)}else{var A=(2*c*l-3*s*f)/(2*b(c*c*c)),I=Math.acos(A)/3,C=b(c),P=Math.cos(I),g=(-l-2*C*P)/(3*s),y=(-l+C*(P+T*Math.sin(I)))/(3*s),L=(-l+C*(P-T*Math.sin(I)))/(3*s);g>=0&&g<=1&&(o[p++]=g),y>=0&&y<=1&&(o[p++]=y),L>=0&&L<=1&&(o[p++]=L)}}return p}function l(t,e,n,a,o){var s=6*n-12*e+6*t,l=9*e+3*a-3*t-9*n,h=3*e-3*t,u=0;if(i(l)){if(r(s)){var c=-h/s;c>=0&&c<=1&&(o[u++]=c)}}else{var f=s*s-4*l*h;if(i(f))o[0]=-s/(2*l);else if(f>0){var d=b(f),c=(-s+d)/(2*l),p=(-s-d)/(2*l);c>=0&&c<=1&&(o[u++]=c),p>=0&&p<=1&&(o[u++]=p)}}return u}function h(t,e,n,i,r,a){var o=(e-t)*r+t,s=(n-e)*r+e,l=(i-n)*r+n,h=(s-o)*r+o,u=(l-s)*r+s,c=(u-h)*r+h;a[0]=t,a[1]=o,a[2]=h,a[3]=c,a[4]=c,a[5]=u,a[6]=l,a[7]=i}function u(t,e,n,i,r,o,s,l,h,u,c){var f,d,p,g,v,m=.005,y=1/0;A[0]=h,A[1]=u;for(var _=0;_<1;_+=.05)I[0]=a(t,n,r,s,_),I[1]=a(e,i,o,l,_),g=x(A,I),g<y&&(f=_,y=g);y=1/0;for(var w=0;w<32&&!(m<M);w++)d=f-m,p=f+m,I[0]=a(t,n,r,s,d),I[1]=a(e,i,o,l,d),g=x(I,A),d>=0&&g<y?(f=d,y=g):(C[0]=a(t,n,r,s,p),C[1]=a(e,i,o,l,p),v=x(C,A),p<=1&&v<y?(f=p,y=v):m*=.5);return c&&(c[0]=a(t,n,r,s,f),c[1]=a(e,i,o,l,f)),b(y)}function c(t,e,n,i){var r=1-i;return r*(r*t+2*i*e)+i*i*n}function f(t,e,n,i){return 2*((1-i)*(e-t)+i*(n-e))}function d(t,e,n,a,o){var s=t-2*e+n,l=2*(e-t),h=t-a,u=0;if(i(s)){if(r(l)){var c=-h/l;c>=0&&c<=1&&(o[u++]=c)}}else{var f=l*l-4*s*h;if(i(f)){var c=-l/(2*s);c>=0&&c<=1&&(o[u++]=c)}else if(f>0){var d=b(f),c=(-l+d)/(2*s),p=(-l-d)/(2*s);c>=0&&c<=1&&(o[u++]=c),p>=0&&p<=1&&(o[u++]=p)}}return u}function p(t,e,n){var i=t+n-2*e;return 0===i?.5:(t-e)/i}function g(t,e,n,i,r){var a=(e-t)*i+t,o=(n-e)*i+e,s=(o-a)*i+a;r[0]=t,r[1]=a,r[2]=s,r[3]=s,r[4]=o,r[5]=n}function v(t,e,n,i,r,a,o,s,l){var h,u=.005,f=1/0;A[0]=o,A[1]=s;for(var d=0;d<1;d+=.05){I[0]=c(t,n,r,d),I[1]=c(e,i,a,d);var p=x(A,I);p<f&&(h=d,f=p)}f=1/0;for(var g=0;g<32&&!(u<M);g++){var v=h-u,m=h+u;I[0]=c(t,n,r,v),I[1]=c(e,i,a,v);var p=x(I,A);if(v>=0&&p<f)h=v,f=p;else{C[0]=c(t,n,r,m),C[1]=c(e,i,a,m);var y=x(C,A);m<=1&&y<f?(h=m,f=y):u*=.5}}return l&&(l[0]=c(t,n,r,h),l[1]=c(e,i,a,h)),b(f)}var m=n(6),y=m.create,x=m.distSquare,_=Math.pow,b=Math.sqrt,w=1e-8,M=1e-4,T=b(3),S=1/3,A=y(),I=y(),C=y();t.exports={cubicAt:a,cubicDerivativeAt:o,cubicRootAt:s,cubicExtrema:l,cubicSubdivide:h,cubicProjectPoint:u,quadraticAt:c,quadraticDerivativeAt:f,quadraticRootAt:d,quadraticExtremum:p,quadraticSubdivide:g,quadraticProjectPoint:v}},function(t,e,n){function i(t){return t=Math.round(t),t<0?0:t>255?255:t}function r(t){return t=Math.round(t),t<0?0:t>360?360:t}function a(t){return t<0?0:t>1?1:t}function o(t){return i(t.length&&"%"===t.charAt(t.length-1)?parseFloat(t)/100*255:parseInt(t,10))}function s(t){return a(t.length&&"%"===t.charAt(t.length-1)?parseFloat(t)/100:parseFloat(t))}function l(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 h(t,e,n){return t+(e-t)*n}function u(t,e,n,i,r){return t[0]=e,t[1]=n,t[2]=i,t[3]=r,t}function c(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}function f(t,e){A&&c(A,e),A=S.put(t,A||e.slice())}function d(t,e){if(t){e=e||[];var n=S.get(t);if(n)return c(e,n);t+="";var i=t.replace(/ /g,"").toLowerCase();if(i in T)return c(e,T[i]),f(t,e),e;if("#"!==i.charAt(0)){var r=i.indexOf("("),a=i.indexOf(")");if(r!==-1&&a+1===i.length){var l=i.substr(0,r),h=i.substr(r+1,a-(r+1)).split(","),d=1;switch(l){case"rgba":if(4!==h.length)return void u(e,0,0,0,1);d=s(h.pop());case"rgb":return 3!==h.length?void u(e,0,0,0,1):(u(e,o(h[0]),o(h[1]),o(h[2]),d),f(t,e),e);case"hsla":return 4!==h.length?void u(e,0,0,0,1):(h[3]=s(h[3]),p(h,e),f(t,e),e);case"hsl":return 3!==h.length?void u(e,0,0,0,1):(p(h,e),f(t,e),e);default:return}}u(e,0,0,0,1)}else{if(4===i.length){var g=parseInt(i.substr(1),16);return g>=0&&g<=4095?(u(e,(3840&g)>>4|(3840&g)>>8,240&g|(240&g)>>4,15&g|(15&g)<<4,1),f(t,e),e):void u(e,0,0,0,1)}if(7===i.length){var g=parseInt(i.substr(1),16);return g>=0&&g<=16777215?(u(e,(16711680&g)>>16,(65280&g)>>8,255&g,1),f(t,e),e):void u(e,0,0,0,1)}}}}function p(t,e){var n=(parseFloat(t[0])%360+360)%360/360,r=s(t[1]),a=s(t[2]),o=a<=.5?a*(r+1):a+r-a*r,h=2*a-o;return e=e||[],u(e,i(255*l(h,o,n+1/3)),i(255*l(h,o,n)),i(255*l(h,o,n-1/3)),1),4===t.length&&(e[3]=t[3]),e}function g(t){if(t){var e,n,i=t[0]/255,r=t[1]/255,a=t[2]/255,o=Math.min(i,r,a),s=Math.max(i,r,a),l=s-o,h=(s+o)/2;if(0===l)e=0,n=0;else{n=h<.5?l/(s+o):l/(2-s-o);var u=((s-i)/6+l/2)/l,c=((s-r)/6+l/2)/l,f=((s-a)/6+l/2)/l;i===s?e=f-c:r===s?e=1/3+u-f:a===s&&(e=2/3+c-u),e<0&&(e+=1),e>1&&(e-=1)}var d=[360*e,n,h];return null!=t[3]&&d.push(t[3]),d}}function v(t,e){var n=d(t);if(n){for(var i=0;i<3;i++)e<0?n[i]=n[i]*(1-e)|0:n[i]=(255-n[i])*e+n[i]|0;return w(n,4===n.length?"rgba":"rgb")}}function m(t,e){var n=d(t);if(n)return((1<<24)+(n[0]<<16)+(n[1]<<8)+ +n[2]).toString(16).slice(1)}function y(t,e,n){if(n=n||[0,0,0,0],!e||!e.length||!(t>=0&&t<=1))return n;var r=t*(e.length-1),a=Math.floor(r),o=Math.ceil(r),s=e[a],l=e[o],u=r-a;return n[0]=i(h(s[0],l[0],u)),n[1]=i(h(s[1],l[1],u)),n[2]=i(h(s[2],l[2],u)),n[3]=i(h(s[3],l[3],u)),n}function x(t,e,n){if(e&&e.length&&t>=0&&t<=1){var r=t*(e.length-1),o=Math.floor(r),s=Math.ceil(r),l=d(e[o]),u=d(e[s]),c=r-o,f=w([i(h(l[0],u[0],c)),i(h(l[1],u[1],c)),i(h(l[2],u[2],c)),a(h(l[3],u[3],c))],"rgba");return n?{color:f,leftIndex:o,rightIndex:s,value:r}:f}}function _(t,e,n,i){if(t=d(t))return t=g(t),null!=e&&(t[0]=r(e)),null!=n&&(t[1]=s(n)),null!=i&&(t[2]=s(i)),w(p(t),"rgba")}function b(t,e){if(t=d(t),t&&null!=e)return t[3]=a(e),w(t,"rgba")}function w(t,e){if(t){var n=t[0]+","+t[1]+","+t[2];return"rgba"!==e&&"hsva"!==e&&"hsla"!==e||(n+=","+t[3]),e+"("+n+")"}}var M=n(69),T={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]},S=new M(20),A=null;t.exports={parse:d,lift:v,toHex:m,fastMapToColor:y,mapToColor:x,modifyHSL:_,modifyAlpha:b,stringify:w}},function(t,e){var n=Array.prototype.slice,i=function(){this._$handlers={}};i.prototype={constructor:i,one:function(t,e,n){var i=this._$handlers;if(!e||!t)return this;i[t]||(i[t]=[]);for(var r=0;r<i[t].length;r++)if(i[t][r].h===e)return this;return i[t].push({h:e,one:!0,ctx:n||this}),this},on:function(t,e,n){var i=this._$handlers;if(!e||!t)return this;i[t]||(i[t]=[]);for(var r=0;r<i[t].length;r++)if(i[t][r].h===e)return this;return i[t].push({h:e,one:!1,ctx:n||this}),this},isSilent:function(t){var e=this._$handlers;return e[t]&&e[t].length},off:function(t,e){var n=this._$handlers;if(!t)return this._$handlers={},this;if(e){if(n[t]){for(var i=[],r=0,a=n[t].length;r<a;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},trigger:function(t){if(this._$handlers[t]){var e=arguments,i=e.length;i>3&&(e=n.call(e,1));for(var r=this._$handlers[t],a=r.length,o=0;o<a;){switch(i){case 1:r[o].h.call(r[o].ctx);break;case 2:r[o].h.call(r[o].ctx,e[1]);break;case 3:r[o].h.call(r[o].ctx,e[1],e[2]);break;default:r[o].h.apply(r[o].ctx,e)}r[o].one?(r.splice(o,1),a--):o++}}return this},triggerWithContext:function(t){if(this._$handlers[t]){var e=arguments,i=e.length;i>4&&(e=n.call(e,1,e.length-1));for(var r=e[e.length-1],a=this._$handlers[t],o=a.length,s=0;s<o;){switch(i){case 1:a[s].h.call(r);break;case 2:a[s].h.call(r,e[1]);break;case 3:a[s].h.call(r,e[1],e[2]);break;default:a[s].h.apply(r,e)}a[s].one?(a.splice(s,1),o--):s++}}return this}},t.exports=i},function(t,e,n){"use strict";var i=n(3),r=n(11),a=i.extendShape({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,a=e.height/2;t.moveTo(n,i-a),t.lineTo(n+r,i+a),t.lineTo(n-r,i+a),t.closePath()}}),o=i.extendShape({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,a=e.height/2;t.moveTo(n,i-a),t.lineTo(n+r,i),t.lineTo(n,i+a),t.lineTo(n-r,i),t.closePath()}}),s=i.extendShape({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,a=Math.max(r,e.height),o=r/2,s=o*o/(a-o),l=i-a+o+s,h=Math.asin(s/o),u=Math.cos(h)*o,c=Math.sin(h),f=Math.cos(h);t.arc(n,l,o,Math.PI-h,2*Math.PI+h);var d=.6*o,p=.7*o;t.bezierCurveTo(n+u-c*d,l+s+f*d,n,i-p,n,i),t.bezierCurveTo(n,i-p,n-u+c*d,l+s+f*d,n-u,l+s),t.closePath()}}),l=i.extendShape({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,a=e.y,o=i/3*2;t.moveTo(r,a),t.lineTo(r+o,a+n),t.lineTo(r,a+n/4*3),t.lineTo(r-o,a+n),t.lineTo(r,a),t.closePath()}}),h={line:i.Line,rect:i.Rect,roundRect:i.Rect,square:i.Rect,circle:i.Circle,diamond:o,pin:s,arrow:l,triangle:a},u={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 a=Math.min(n,i);r.x=t,r.y=e,r.width=a,r.height=a},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}},c={};for(var f in h)h.hasOwnProperty(f)&&(c[f]=new h[f]);var d=i.extendShape({type:"symbol",shape:{symbolType:"",x:0,y:0,width:0,height:0},beforeBrush:function(){var t=this.style,e=this.shape;"pin"===e.symbolType&&"inside"===t.textPosition&&(t.textPosition=["50%","40%"],t.textAlign="center",t.textVerticalAlign="middle")},buildPath:function(t,e,n){var i=e.symbolType,r=c[i];"none"!==e.symbolType&&(r||(i="rect",r=c[i]),u[i](e.x,e.y,e.width,e.height,r.shape),r.buildPath(t,r.shape,n))}}),p=function(t){if("image"!==this.type){var e=this.style,n=this.shape;n&&"line"===n.symbolType?e.stroke=t:this.__isEmptyBrush?(e.stroke=t,e.fill="#fff"):(e.fill&&(e.fill=t),e.stroke&&(e.stroke=t)),this.dirty(!1)}},g={createSymbol:function(t,e,n,a,o,s){var l=0===t.indexOf("empty");l&&(t=t.substr(5,1).toLowerCase()+t.substr(6));var h;return h=0===t.indexOf("image://")?new i.Image({style:{image:t.slice(8),x:e,y:n,width:a,height:o}}):0===t.indexOf("path://")?i.makePath(t.slice(7),{},new r(e,n,a,o)):new d({shape:{symbolType:t,x:e,y:n,width:a,height:o}}),h.__isEmptyBrush=l,h.setColor=p,h.setColor(s),h}};t.exports=g},function(t,e,n){function i(t,e,n){if(!e)return t;n=n||{};var i=n.dimCount;if(null==i){var s=r(e[0]);i=a.isArray(s)&&s.length||1}for(var l=n.defaultNames||[],h=n.extraPrefix||"extra",u=0;u<i;u++)if(!t[u]){var c=l[u]||h+(u-l.length);t[u]=o(e,u)?{type:"ordinal",name:c}:c}return t}function r(t){return a.isArray(t)?t:a.isObject(t)?t.value:t}var a=n(1),o=i.guessOrdinal=function(t,e){for(var n=0,i=t.length;n<i;n++){var o=r(t[n]);if(!a.isArray(o))return!1;var o=o[e];if(null!=o&&isFinite(o))return!1;if(a.isString(o)&&"-"!==o)return!0}return!1};t.exports=i},function(t,e,n){"use strict";function i(){this._coordinateSystems=[]}var r=n(1),a={};i.prototype={constructor:i,create:function(t,e){var n=[];r.each(a,function(i,r){var a=i.create(t,e);n=n.concat(a||[])}),this._coordinateSystems=n},update:function(t,e){r.each(this._coordinateSystems,function(n){n.update&&n.update(t,e)})},getCoordinateSystems:function(){return this._coordinateSystems.slice()}},i.register=function(t,e){a[t]=e},i.get=function(t){return a[t]},t.exports=i},function(t,e,n){"use strict";function i(t){for(var e=0;e<t.length&&null==t[e];)e++;return t[e]}function r(t){var e=i(t);return null!=e&&!c.isArray(p(e))}function a(t,e,n){t=t||[];var i=e.get("coordinateSystem"),a=v[i],o=d.get(i),s=a&&a(t,e,n),m=s&&s.dimensions;m||(m=o&&(o.getDimensionsInfo?o.getDimensionsInfo():o.dimensions.slice())||["x","y"],m=u(m,t,{defaultNames:m.concat(["value"])}));var y=s?s.categoryIndex:-1,x=new h(m,e),_=l(s,t),b={},w=y>=0&&r(t)?function(t,e,n,i){return f.isDataItemOption(t)&&(x.hasItemOption=!0),i===y?n:g(p(t),m[i])}:function(t,e,n,i){var r=p(t),a=g(r&&r[i],m[i]);f.isDataItemOption(t)&&(x.hasItemOption=!0);var o=s&&s.categoryAxesModels;return o&&o[e]&&"string"==typeof a&&(b[e]=b[e]||o[e].getCategories(),a=c.indexOf(b[e],a),a<0&&!isNaN(a)&&(a=+a)),a};return x.hasItemOption=!1,x.initData(t,_,w),x}function o(t){return"category"!==t&&"time"!==t}function s(t){return"category"===t?"ordinal":"time"===t?"time":"float"}function l(t,e){var n,i=[],r=t&&t.dimensions[t.categoryIndex];if(r&&(n=t.categoryAxesModels[r.name]),n){var a=n.getCategories();if(a){var o=e.length;if(c.isArray(e[0])&&e[0].length>1){i=[];for(var s=0;s<o;s++)i[s]=a[e[s][t.categoryIndex||0]]}else i=a.slice(0)}}return i}var h=n(14),u=n(25),c=n(1),f=n(5),d=n(26),p=f.getDataItemValue,g=f.converDataValue,v={cartesian2d:function(t,e,n){var i=c.map(["xAxis","yAxis"],function(t){return n.queryComponents({mainType:t,index:e.get(t+"Index"),id:e.get(t+"Id")})[0]}),r=i[0],a=i[1],l=r.get("type"),h=a.get("type"),f=[{name:"x",type:s(l),stackable:o(l)},{name:"y",type:s(h),stackable:o(h)}],d="category"===l,p="category"===h;u(f,t,{defaultNames:["x","y","z"]});var g={};return d&&(g.x=r),p&&(g.y=a),{dimensions:f,categoryIndex:d?0:p?1:-1,categoryAxesModels:g}},singleAxis:function(t,e,n){var i=n.queryComponents({mainType:"singleAxis",index:e.get("singleAxisIndex"),id:e.get("singleAxisId")})[0],r=i.get("type"),a="category"===r,l=[{name:"single",type:s(r),stackable:o(r)}];u(l,t);var h={};return a&&(h.single=i),{dimensions:l,categoryIndex:a?0:-1,categoryAxesModels:h}},polar:function(t,e,n){var i=n.queryComponents({mainType:"polar",index:e.get("polarIndex"),id:e.get("polarId")})[0],r=i.findAxisModel("angleAxis"),a=i.findAxisModel("radiusAxis"),l=a.get("type"),h=r.get("type"),c=[{name:"radius",type:s(l),stackable:o(l)},{name:"angle",type:s(h),stackable:o(h)}],f="category"===h,d="category"===l;u(c,t,{defaultNames:["radius","angle","value"]});var p={};return d&&(p.radius=a),f&&(p.angle=r),{dimensions:c,categoryIndex:f?1:d?0:-1,categoryAxesModels:p}},geo:function(t,e,n){return{dimensions:u([{name:"lng"},{name:"lat"}],t,{defaultNames:["lng","lat","value"]})}}};t.exports=a},,function(t,e,n){function i(){this.group=new o,this.uid=s.getUID("viewChart")}function r(t,e){if(t&&(t.trigger(e),"group"===t.type))for(var n=0;n<t.childCount();n++)r(t.childAt(n),e)}function a(t,e,n){var i=h.queryDataIndex(t,e);null!=i?u.each(h.normalizeToArray(i),function(e){r(t.getItemGraphicEl(e),n)}):t.eachItemGraphicEl(function(t){r(t,n)})}var o=n(36),s=n(49),l=n(15),h=n(5),u=n(1);i.prototype={type:"chart",init:function(t,e){},render:function(t,e,n,i){},highlight:function(t,e,n,i){a(t.getData(),i,"emphasis")},downplay:function(t,e,n,i){a(t.getData(),i,"normal")},remove:function(t,e){this.group.removeAll()},dispose:function(){}};var c=i.prototype;c.updateView=c.updateLayout=c.updateVisual=function(t,e,n,i){this.render(t,e,n,i)},l.enableClassExtend(i,["dispose"]),l.enableClassManagement(i,{registerWhenExtend:!0}),t.exports=i},function(t,e,n){"use strict";var i=n(21),r=n(6),a=n(84),o=n(11),s=n(35).devicePixelRatio,l={M:1,L:2,C:3,Q:4,A:5,Z:6,R:7},h=[],u=[],c=[],f=[],d=Math.min,p=Math.max,g=Math.cos,v=Math.sin,m=Math.sqrt,y=Math.abs,x="undefined"!=typeof Float32Array,_=function(){this.data=[],this._len=0,this._ctx=null,this._xi=0,this._yi=0,this._x0=0,this._y0=0,this._ux=0,this._uy=0};_.prototype={constructor:_,_lineDash:null,_dashOffset:0,_dashIdx:0,_dashSum:0,setScale:function(t,e){this._ux=y(1/s/t)||0,this._uy=y(1/s/e)||0},getContext:function(){return this._ctx},beginPath:function(t){return this._ctx=t,t&&t.beginPath(),t&&(this.dpr=t.dpr),this._len=0,this._lineDash&&(this._lineDash=null,this._dashOffset=0),this},moveTo:function(t,e){return this.addData(l.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 n=y(t-this._xi)>this._ux||y(e-this._yi)>this._uy||this._len<5;return this.addData(l.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},bezierCurveTo:function(t,e,n,i,r,a){return this.addData(l.C,t,e,n,i,r,a),this._ctx&&(this._needsDash()?this._dashedBezierTo(t,e,n,i,r,a):this._ctx.bezierCurveTo(t,e,n,i,r,a)),this._xi=r,this._yi=a,this},quadraticCurveTo:function(t,e,n,i){return this.addData(l.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},arc:function(t,e,n,i,r,a){return this.addData(l.A,t,e,n,n,i,r-i,0,a?0:1),this._ctx&&this._ctx.arc(t,e,n,i,r,a),this._xi=g(r)*n+t,this._yi=v(r)*n+t,this},arcTo:function(t,e,n,i,r){return this._ctx&&this._ctx.arcTo(t,e,n,i,r),this},rect:function(t,e,n,i){return this._ctx&&this._ctx.rect(t,e,n,i),this.addData(l.R,t,e,n,i),this},closePath:function(){this.addData(l.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},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,this._dashIdx=0;for(var e=0,n=0;n<t.length;n++)e+=t[n];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||!x||(this.data=new Float32Array(e));for(var n=0;n<e;n++)this.data[n]=t[n];this._len=e},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();x&&this.data instanceof Float32Array&&(this.data=new Float32Array(i+n));for(var r=0;r<e;r++)for(var a=t[r].data,o=0;o<a.length;o++)this.data[i++]=a[o];this._len=i},addData:function(t){var e=this.data;this._len+arguments.length>e.length&&(this._expandData(),e=this.data);for(var n=0;n<arguments.length;n++)e[this._len++]=arguments[n];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 n,i,r=this._dashSum,a=this._dashOffset,o=this._lineDash,s=this._ctx,l=this._xi,h=this._yi,u=t-l,c=e-h,f=m(u*u+c*c),g=l,v=h,y=o.length;for(u/=f,c/=f,a<0&&(a=r+a),a%=r,g-=a*u,v-=a*c;u>0&&g<=t||u<0&&g>=t||0==u&&(c>0&&v<=e||c<0&&v>=e);)i=this._dashIdx,n=o[i],g+=u*n,v+=c*n,this._dashIdx=(i+1)%y,u>0&&g<l||u<0&&g>l||c>0&&v<h||c<0&&v>h||s[i%2?"moveTo":"lineTo"](u>=0?d(g,t):p(g,t),c>=0?d(v,e):p(v,e));u=g-t,c=v-e,this._dashOffset=-m(u*u+c*c)},_dashedBezierTo:function(t,e,n,r,a,o){var s,l,h,u,c,f=this._dashSum,d=this._dashOffset,p=this._lineDash,g=this._ctx,v=this._xi,y=this._yi,x=i.cubicAt,_=0,b=this._dashIdx,w=p.length,M=0;for(d<0&&(d=f+d),d%=f,s=0;s<1;s+=.1)l=x(v,t,n,a,s+.1)-x(v,t,n,a,s),h=x(y,e,r,o,s+.1)-x(y,e,r,o,s),_+=m(l*l+h*h);for(;b<w&&(M+=p[b],!(M>d));b++);for(s=(M-d)/_;s<=1;)u=x(v,t,n,a,s),c=x(y,e,r,o,s),b%2?g.moveTo(u,c):g.lineTo(u,c),s+=p[b]/_,b=(b+1)%w;b%2!==0&&g.lineTo(a,o),l=a-u,h=o-c,this._dashOffset=-m(l*l+h*h)},_dashedQuadraticTo:function(t,e,n,i){var r=n,a=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,a)},toStatic:function(){var t=this.data;t instanceof Array&&(t.length=this._len,x&&(this.data=new Float32Array(t)))},getBoundingRect:function(){h[0]=h[1]=c[0]=c[1]=Number.MAX_VALUE,u[0]=u[1]=f[0]=f[1]=-Number.MAX_VALUE;for(var t=this.data,e=0,n=0,i=0,s=0,d=0;d<t.length;){var p=t[d++];switch(1==d&&(e=t[d],n=t[d+1],i=e,s=n),p){case l.M:i=t[d++],s=t[d++],e=i,n=s,c[0]=i,c[1]=s,f[0]=i,f[1]=s;break;case l.L:a.fromLine(e,n,t[d],t[d+1],c,f),e=t[d++],n=t[d++];break;case l.C:a.fromCubic(e,n,t[d++],t[d++],t[d++],t[d++],t[d],t[d+1],c,f),e=t[d++],n=t[d++];break;case l.Q:a.fromQuadratic(e,n,t[d++],t[d++],t[d],t[d+1],c,f),e=t[d++],n=t[d++];break;case l.A:var m=t[d++],y=t[d++],x=t[d++],_=t[d++],b=t[d++],w=t[d++]+b,M=(t[d++],1-t[d++]);1==d&&(i=g(b)*x+m,s=v(b)*_+y),a.fromArc(m,y,x,_,b,w,M,c,f),e=g(w)*x+m,n=v(w)*_+y;break;case l.R:i=e=t[d++],s=n=t[d++];var T=t[d++],S=t[d++];a.fromLine(i,s,i+T,s+S,c,f);break;case l.Z:e=i,n=s}r.min(h,h,c),r.max(u,u,f)}return 0===d&&(h[0]=h[1]=u[0]=u[1]=0),new o(h[0],h[1],u[0]-h[0],u[1]-h[1])},rebuildPath:function(t){for(var e,n,i,r,a,o,s=this.data,h=this._ux,u=this._uy,c=this._len,f=0;f<c;){var d=s[f++];switch(1==f&&(i=s[f],r=s[f+1],e=i,n=r),d){case l.M:e=i=s[f++],n=r=s[f++],t.moveTo(i,r);break;case l.L:a=s[f++],o=s[f++],(y(a-i)>h||y(o-r)>u||f===c-1)&&(t.lineTo(a,o),i=a,r=o);break;case l.C:t.bezierCurveTo(s[f++],s[f++],s[f++],s[f++],s[f++],s[f++]),i=s[f-2],r=s[f-1];break;case l.Q:t.quadraticCurveTo(s[f++],s[f++],s[f++],s[f++]),i=s[f-2],r=s[f-1];break;case l.A:var p=s[f++],m=s[f++],x=s[f++],_=s[f++],b=s[f++],w=s[f++],M=s[f++],T=s[f++],S=x>_?x:_,A=x>_?1:x/_,I=x>_?_/x:1,C=Math.abs(x-_)>.001,P=b+w;C?(t.translate(p,m),t.rotate(M),t.scale(A,I),t.arc(0,0,S,b,P,1-T),t.scale(1/A,1/I),t.rotate(-M),t.translate(-p,-m)):t.arc(p,m,S,b,P,1-T),1==f&&(e=g(b)*x+p,n=v(b)*_+m),i=g(P)*x+p,r=v(P)*_+m;break;case l.R:e=i=s[f],n=r=s[f+1],t.rect(s[f++],s[f++],s[f++],s[f++]);break;case l.Z:t.closePath(),i=e,r=n}}}},_.CMD=l,t.exports=_},function(t,e,n){var i=n(1);t.exports=function(t){for(var e=0;e<t.length;e++)t[e][1]||(t[e][1]=t[e][0]);return function(e,n){for(var r={},a=0;a<t.length;a++){var o=t[a][1];if(!(e&&i.indexOf(e,o)>=0||n&&i.indexOf(n,o)<0)){var s=this.getShallow(o);null!=s&&(r[t[a][0]]=s)}}return r}}},function(t,e,n){function i(t,e,n){var i=e.getComponent("tooltip"),a=e.getComponent("axisPointer"),s=a.get("link",!0)||[],h=[];c(n.getCoordinateSystems(),function(n){function u(i,u,c){var f=c.model.getModel("axisPointer",a),d=f.get("show");if(d&&("auto"!==d||i||l(f))){null==u&&(u=f.get("triggerTooltip")),f=i?r(c,m,a,e,i,u):f;var v=f.get("snap"),y=p(c.model),x=u||v||"category"===c.type,_=t.axesInfo[y]={key:y,axis:c,coordSys:n,axisPointerModel:f,triggerTooltip:u,involveSeries:x,snap:v,useHandle:l(f),seriesModels:[]};g[y]=_,t.seriesInvolved|=x;var b=o(s,c);if(null!=b){var w=h[b]||(h[b]={axesInfo:{}});w.axesInfo[y]=_,w.mapper=s[b].mapper,_.linkGroup=w}}}if(n.axisPointerEnabled){var d=p(n.model),g=t.coordSysAxesInfo[d]={};t.coordSysMap[d]=n;var v=n.model,m=v.getModel("tooltip",i);if(c(n.getAxes(),f(u,!1,null)),n.getTooltipAxes&&i&&m.get("show")){var y="axis"===m.get("trigger"),x="cross"===m.get("axisPointer.type"),_=n.getTooltipAxes(m.get("axisPointer.axis"));(y||x)&&c(_.baseAxes,f(u,!x||"cross",y)),x&&c(_.otherAxes,f(u,"cross",!1))}}})}function r(t,e,n,i,r,a){var o=e.getModel("axisPointer"),s={};c(["type","snap","lineStyle","shadowStyle","label","animation","animationDurationUpdate","animationEasingUpdate","z"],function(t){s[t]=h.clone(o.get(t))}),s.snap="category"!==t.type&&!!a,"cross"===o.get("type")&&(s.type="line");var l=s.label||(s.label={});if(null==l.show&&(l.show=!1),"cross"===r&&(l.show=!0,!a)){var f=s.lineStyle=o.get("crossStyle");f&&h.defaults(l.textStyle||(l.textStyle={}),f.textStyle)}return t.model.getModel("axisPointer",new u(s,n,i))}function a(t,e){e.eachSeries(function(e){var n=e.coordinateSystem,i=e.get("tooltip.trigger",!0);n&&"none"!==i&&i!==!1&&"item"!==i&&e.get("axisPointer.show",!0)!==!1&&c(t.coordSysAxesInfo[p(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())})},this)}function o(t,e){for(var n=e.model,i=e.dim,r=0;r<t.length;r++){var a=t[r]||{};if(s(a[i+"AxisId"],n.id)||s(a[i+"AxisIndex"],n.componentIndex)||s(a[i+"AxisName"],n.name))return r}}function s(t,e){return"all"===t||h.isArray(t)&&h.indexOf(t,e)>=0||t===e}function l(t){return!!t.get("handle.show")}var h=n(1),u=n(10),c=h.each,f=h.curry,d={};d.collect=function(t,e){var n={axesInfo:{},seriesInvolved:!1,coordSysAxesInfo:{},coordSysMap:{}};return i(n,t,e),n.seriesInvolved&&a(n,t),n},d.fixValue=function(t){var e=d.getAxisInfo(t);if(e){var n=e.axisPointerModel,i=e.axis.scale,r=n.option,a=n.get("status"),o=n.get("value");null!=o&&(o=i.parse(o));var s=l(n);null==a&&(r.status=s?"show":"hide");var h=i.getExtent().slice();h[0]>h[1]&&h.reverse(),(null==o||o>h[1])&&(o=h[1]),o<h[0]&&(o=h[0]),r.value=o,s&&(r.status=e.axis.scale.isBlank()?"hide":"show")}},d.getAxisInfo=function(t){var e=t.ecModel.getComponent("axisPointer").coordSysAxesInfo;return e&&e.axesInfo[p(t)]},d.getAxisPointerModel=function(t){var e=d.getAxisInfo(t);return e&&e.axisPointerModel};var p=d.makeKey=function(t){return t.type+"||"+t.id};t.exports=d},function(t,e,n){function i(t,e){var n=t[1]-t[0],i=e,r=n/i/2;t[0]+=r,t[1]-=r}var r=n(4),a=r.linearMap,o=n(1),s=[0,1],l=function(t,e,n){this.dim=t,this.scale=e,this._extent=n||[0,0],this.inverse=!1,this.onBand=!1};l.prototype={constructor:l,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},containData:function(t){return this.contain(this.dataToCoord(t))},getExtent:function(){var t=this._extent.slice();return t},getPixelPrecision:function(t){return r.getPixelPrecision(t||this.scale.getExtent(),this._extent)},setExtent:function(t,e){var n=this._extent;n[0]=t,n[1]=e},dataToCoord:function(t,e){var n=this._extent,r=this.scale;return t=r.normalize(t),this.onBand&&"ordinal"===r.type&&(n=n.slice(),i(n,r.count())),a(t,s,n,e)},coordToData:function(t,e){var n=this._extent,r=this.scale;this.onBand&&"ordinal"===r.type&&(n=n.slice(),i(n,r.count()));var o=a(t,n,s,e);return this.scale.scale(o)},pointToData:function(t,e){},getTicksCoords:function(t){if(this.onBand&&!t){for(var e=this.getBands(),n=[],i=0;i<e.length;i++)n.push(e[i][0]);return e[i-1]&&n.push(e[i-1][1]),n}return o.map(this.scale.getTicks(),this.dataToCoord,this)},getLabelsCoords:function(){return o.map(this.scale.getTicks(),this.dataToCoord,this)},getBands:function(){for(var t=this.getExtent(),e=[],n=this.scale.count(),i=t[0],r=t[1],a=r-i,o=0;o<n;o++)e.push([a*o/n+i,a*(o+1)/n+i]);return e},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.exports=l},function(t,e,n){function i(){this._extent=[1/0,-(1/0)],this._interval=0,this.init&&this.init.apply(this,arguments)}var r=n(15),a=i.prototype;a.parse=function(t){return t},a.contain=function(t){var e=this._extent;return t>=e[0]&&t<=e[1]},a.normalize=function(t){var e=this._extent;return e[1]===e[0]?.5:(t-e[0])/(e[1]-e[0])},a.scale=function(t){var e=this._extent;return t*(e[1]-e[0])+e[0]},a.unionExtent=function(t){var e=this._extent;t[0]<e[0]&&(e[0]=t[0]),t[1]>e[1]&&(e[1]=t[1])},a.unionExtentFromData=function(t,e){this.unionExtent(t.getDataExtent(e,!0))},a.getExtent=function(){return this._extent.slice()},a.setExtent=function(t,e){var n=this._extent;isNaN(t)||(n[0]=t),isNaN(e)||(n[1]=e)},a.getTicksLabels=function(){for(var t=[],e=this.getTicks(),n=0;n<e.length;n++)t.push(this.getLabel(e[n]));return t},a.isBlank=function(){return this._isBlank},a.setBlank=function(t){this._isBlank=t},r.enableClassExtend(i),r.enableClassManagement(i,{registerWhenExtend:!0}),t.exports=i},function(t,e){var n=1;"undefined"!=typeof window&&(n=Math.max(window.devicePixelRatio||1,1));var i={debugMode:0,devicePixelRatio:n};t.exports=i},function(t,e,n){var i=n(1),r=n(65),a=n(11),o=function(t){t=t||{},r.call(this,t);for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e]);this._children=[],this.__storage=null,this.__dirty=!0};o.prototype={constructor:o,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,n=0;n<e.length;n++)if(e[n].name===t)return e[n]},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 n=this._children,i=n.indexOf(e);i>=0&&(n.splice(i,0,t),this._doAdd(t))}return this},_doAdd:function(t){t.parent&&t.parent.remove(t),t.parent=this;var e=this.__storage,n=this.__zr;e&&e!==t.__storage&&(e.addToMap(t),t instanceof o&&t.addChildrenToStorage(e)),n&&n.refresh()},remove:function(t){var e=this.__zr,n=this.__storage,r=this._children,a=i.indexOf(r,t);return a<0?this:(r.splice(a,1),t.parent=null,n&&(n.delFromMap(t.id),t instanceof o&&t.delChildrenFromStorage(n)),e&&e.refresh(),this)},removeAll:function(){var t,e,n=this._children,i=this.__storage;for(e=0;e<n.length;e++)t=n[e],i&&(i.delFromMap(t.id),t instanceof o&&t.delChildrenFromStorage(i)),t.parent=null;return n.length=0,this},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},traverse:function(t,e){for(var n=0;n<this._children.length;n++){var i=this._children[n];t.call(e,i),"group"===i.type&&i.traverse(t,e)}return this},addChildrenToStorage:function(t){for(var e=0;e<this._children.length;e++){var n=this._children[e];t.addToMap(n),n instanceof o&&n.addChildrenToStorage(t)}},delChildrenFromStorage:function(t){for(var e=0;e<this._children.length;e++){var n=this._children[e];t.delFromMap(n.id),n instanceof o&&n.delChildrenFromStorage(t)}},dirty:function(){return this.__dirty=!0,this.__zr&&this.__zr.refresh(),this},getBoundingRect:function(t){for(var e=null,n=new a(0,0,0,0),i=t||this._children,r=[],o=0;o<i.length;o++){var s=i[o];if(!s.ignore&&!s.invisible){var l=s.getBoundingRect(),h=s.getLocalTransform(r);h?(n.copy(l),n.applyTransform(h),e=e||n.clone(),e.union(n)):(e=e||l.clone(),e.union(l))}}return e||n}},i.inherits(o,r),t.exports=o},function(t,e,n){function i(t){var e={componentType:t.mainType};return e[t.mainType+"Index"]=t.componentIndex,e}function r(t,e,n,i){var r,a,o=c(n-t.rotation),s=i[0]>i[1],l="start"===e&&!s||"start"!==e&&s;return f(o-v/2)?(a=l?"bottom":"top",r="center"):f(o-1.5*v)?(a=l?"top":"bottom",r="center"):(a="middle",r=o<1.5*v&&o>v/2?l?"left":"right":l?"right":"left"),{rotation:o,textAlign:r,textVerticalAlign:a}}function a(t){var e=t.get("tooltip");return t.get("silent")||!(t.get("triggerEvent")||e&&e.show)}var o=n(1),s=n(7),l=n(3),h=n(10),u=n(4),c=u.remRadian,f=u.isRadianAroundZero,d=n(6),p=d.applyTransform,g=o.retrieve,v=Math.PI,m=function(t,e){this.opt=e,this.axisModel=t,o.defaults(e,{labelOffset:0,nameDirection:1,tickDirection:1,labelDirection:1,silent:!0}),this.group=new l.Group;var n=new l.Group({position:e.position.slice(),rotation:e.rotation});n.updateTransform(),this._transform=n.transform,this._dumbGroup=n};m.prototype={constructor:m,hasBuilder:function(t){return!!y[t]},add:function(t){y[t].call(this)},getGroup:function(){return this.group}};var y={axisLine:function(){var t=this.opt,e=this.axisModel;if(e.get("axisLine.show")){var n=this.axisModel.axis.getExtent(),i=this._transform,r=[n[0],0],a=[n[1],0];i&&(p(r,r,i),p(a,a,i)),this.group.add(new l.Line(l.subPixelOptimizeLine({anid:"line",shape:{x1:r[0],y1:r[1],x2:a[0],y2:a[1]},style:o.extend({lineCap:"round"},e.getModel("axisLine.lineStyle").getLineStyle()),strokeContainThreshold:t.strokeContainThreshold||5,silent:!0,z2:1})))}},axisTick:function(){var t=this.axisModel,e=t.axis;if(t.get("axisTick.show")&&!e.scale.isBlank())for(var n=t.getModel("axisTick"),i=this.opt,r=n.getModel("lineStyle"),a=n.get("length"),s=b(n,i.labelInterval),h=e.getTicksCoords(n.get("alignWithLabel")),u=e.scale.getTicks(),c=[],f=[],d=this._transform,g=0;g<h.length;g++)if(!_(e,g,s)){var v=h[g];c[0]=v,c[1]=0,f[0]=v,f[1]=i.tickDirection*a,d&&(p(c,c,d),p(f,f,d)),this.group.add(new l.Line(l.subPixelOptimizeLine({anid:"tick_"+u[g],shape:{x1:c[0],y1:c[1],x2:f[0],y2:f[1]},style:o.defaults(r.getLineStyle(),{stroke:t.get("axisLine.lineStyle.color")}),z2:2,silent:!0})))}},axisLabel:function(){function t(t,e){var n=t&&t.getBoundingRect().clone(),i=e&&e.getBoundingRect().clone();if(n&&i)return n.applyTransform(t.getLocalTransform()),i.applyTransform(e.getLocalTransform()),n.intersect(i)}var e=this.opt,n=this.axisModel,r=n.axis,s=g(e.axisLabelShow,n.get("axisLabel.show"));if(s&&!r.scale.isBlank()){var u=n.getModel("axisLabel"),c=u.getModel("textStyle"),f=u.get("margin"),d=r.scale.getTicks(),p=n.getFormattedLabels(),m=(g(e.labelRotate,u.get("rotate"))||0)*v/180,y=x(e.rotation,m,e.labelDirection),b=n.get("data"),w=[],M=a(n),T=n.get("triggerEvent");if(o.each(d,function(t,a){if(!_(r,a,e.labelInterval)){var o=c;b&&b[t]&&b[t].textStyle&&(o=new h(b[t].textStyle,c,n.ecModel));var s=o.getTextColor()||n.get("axisLine.lineStyle.color"),u=r.dataToCoord(t),d=[u,e.labelOffset+e.labelDirection*f],g=r.scale.getLabel(t),v=new l.Text({anid:"label_"+t,style:{text:p[a],textAlign:o.get("align",!0)||y.textAlign,textVerticalAlign:o.get("baseline",!0)||y.textVerticalAlign,textFont:o.getFont(),fill:"function"==typeof s?s("category"===r.type?g:"value"===r.type?t+"":t,a):s},position:d,rotation:y.rotation,silent:M,z2:10});T&&(v.eventData=i(n),v.eventData.targetType="axisLabel",v.eventData.value=g),this._dumbGroup.add(v),v.updateTransform(),w.push(v),this.group.add(v),v.decomposeTransform()}},this),null!=n.getMin()){var S=w[0],A=w[1];t(S,A)&&(S.ignore=!0)}if(null!=n.getMax()){var I=w[w.length-1],C=w[w.length-2];t(C,I)&&(I.ignore=!0)}}},axisName:function(){var t=this.opt,e=this.axisModel,n=g(t.axisName,e.get("name"));if(n){var h,u=e.get("nameLocation"),c=t.nameDirection,f=e.getModel("nameTextStyle"),d=e.get("nameGap")||0,p=this.axisModel.axis.getExtent(),m=p[0]>p[1]?-1:1,y=["start"===u?p[0]-m*d:"end"===u?p[1]+m*d:(p[0]+p[1])/2,"middle"===u?t.labelOffset+c*d:0],_=e.get("nameRotate");null!=_&&(_=_*v/180);var b;"middle"===u?h=x(t.rotation,null!=_?_:t.rotation,c):(h=r(t,u,_||0,p),b=t.axisNameAvailableWidth,null!=b&&(b=Math.abs(b/Math.sin(h.rotation)),!isFinite(b)&&(b=null)));var w=f.getFont(),M=e.get("nameTruncate",!0)||{},T=M.ellipsis,S=g(M.maxWidth,b),A=null!=T&&null!=S?s.truncateText(n,S,w,T,{minChar:2,placeholder:M.placeholder}):n,I=e.get("tooltip",!0),C=e.mainType,P={componentType:C,name:n,$vars:["name"]};P[C+"Index"]=e.componentIndex;var L=new l.Text({anid:"name",__fullText:n,__truncatedText:A,style:{text:A,textFont:w,fill:f.getTextColor()||e.get("axisLine.lineStyle.color"),textAlign:h.textAlign,textVerticalAlign:h.textVerticalAlign},position:y,rotation:h.rotation,silent:a(e),z2:1,tooltip:I&&I.show?o.extend({content:n,formatter:function(){return n},formatterParams:P},I):null});e.get("triggerEvent")&&(L.eventData=i(e),L.eventData.targetType="axisName",L.eventData.name=n),this._dumbGroup.add(L),L.updateTransform(),this.group.add(L),L.decomposeTransform()}}},x=m.innerTextLayout=function(t,e,n){var i,r,a=c(e-t);return f(a)?(r=n>0?"top":"bottom",i="center"):f(a-v)?(r=n>0?"bottom":"top",i="center"):(r="middle",i=a>0&&a<v?n>0?"right":"left":n>0?"left":"right"),{rotation:a,textAlign:i,textVerticalAlign:r}},_=m.ifIgnoreOnTick=function(t,e,n){var i,r=t.scale;return"ordinal"===r.type&&("function"==typeof n?(i=r.getTicks()[e],!n(i,r.getLabel(i))):e%(n+1))},b=m.getInterval=function(t,e){var n=t.get("interval");return null!=n&&"auto"!=n||(n=e),n};t.exports=m},function(t,e,n){n(93),n(45)},function(t,e){var n={},i="\0__throttleOriginMethod",r="\0__throttleRate",a="\0__throttleType";n.throttle=function(t,e,n){function i(){h=(new Date).getTime(),u=null,t.apply(o,s||[])}var r,a,o,s,l=0,h=0,u=null;e=e||0;var c=function(){r=(new Date).getTime(),o=this,s=arguments,a=r-(n?l:h)-e,clearTimeout(u),n?u=setTimeout(i,e):a>=0?i():u=setTimeout(i,-a),l=r};return c.clear=function(){u&&(clearTimeout(u),u=null)},c},n.createOrUpdate=function(t,e,o,s){var l=t[e];if(l){var h=l[i]||l,u=l[a],c=l[r];if(c!==o||u!==s){if(null==o||!s)return t[e]=h;l=t[e]=n.throttle(h,o,"debounce"===s),l[i]=h,l[a]=s,l[r]=o}return l}},n.clear=function(t,e){var n=t[e];n&&n[i]&&(t[e]=n[i])},t.exports=n},function(t,e,n){function i(t){t=t||{},o.call(this,t);for(var e in t)t.hasOwnProperty(e)&&"style"!==e&&(this[e]=t[e]);this.style=new a(t.style),this._rect=null,this.__clipPaths=[]}var r=n(1),a=n(72),o=n(65),s=n(86);i.prototype={constructor:i,type:"displayable",__dirty:!0,invisible:!1,z:0,z2:0,zlevel:0,draggable:!1,dragging:!1,silent:!1,culling:!1,cursor:"pointer",rectHover:!1,progressive:-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 n=this.transformCoordToLocal(t,e),i=this.getBoundingRect();return i.contain(n[0],n[1])},dirty:function(){this.__dirty=!0,this._rect=null,this.__zr&&this.__zr.refresh()},animateStyle:function(t){return this.animate("style",t)},attrKV:function(t,e){"style"!==t?o.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 a(t),this.dirty(!1),this}},r.inherits(i,o),r.mixin(i,s),t.exports=i},function(t,e){var n=function(t){this.colorStops=t||[]};n.prototype={constructor:n,addColorStop:function(t,e){this.colorStops.push({offset:t,color:e})}},t.exports=n},function(t,e,n){function i(t){return r.isObject(t)&&null!=t.value?t.value:t}var r=n(1),a=n(17);t.exports={getFormattedLabels:function(){return a.getFormattedLabels(this.axis,this.get("axisLabel.formatter"))},getCategories:function(){
+return"category"===this.get("type")&&r.map(this.get("data"),i)},getMin:function(t){var e=this.option,n=t||null==e.rangeStart?e.min:e.rangeStart;return this.axis&&null!=n&&"dataMin"!==n&&!r.eqNaN(n)&&(n=this.axis.scale.parse(n)),n},getMax:function(t){var e=this.option,n=t||null==e.rangeEnd?e.max:e.rangeEnd;return this.axis&&null!=n&&"dataMax"!==n&&!r.eqNaN(n)&&(n=this.axis.scale.parse(n)),n},getNeedCrossZero:function(){var t=this.option;return null==t.rangeStart&&null==t.rangeEnd&&!t.scale},getCoordSysModel:r.noop,setRange:function(t,e){this.option.rangeStart=t,this.option.rangeEnd=e},resetRange:function(){this.option.rangeStart=this.option.rangeEnd=null}}},function(t,e,n){var i=n(4),r=n(7),a=n(34),o=Math.floor,s=Math.ceil,l=i.getPrecisionSafe,h=i.round,u=a.extend({type:"interval",_interval:0,_intervalPrecision:2,setExtent:function(t,e){var n=this._extent;isNaN(t)||(n[0]=parseFloat(t)),isNaN(e)||(n[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]),u.prototype.setExtent.call(this,e[0],e[1])},getInterval:function(){return this._interval||this.niceTicks(),this._interval},setInterval:function(t){this._interval=t,this._niceExtent=this._extent.slice()},getTicks:function(){this._interval||this.niceTicks();var t=this._interval,e=this._extent,n=[],i=1e4;if(t){var r=this._niceExtent,a=this._intervalPrecision=l(t);a+=2,e[0]<r[0]&&n.push(e[0]);for(var o=r[0];o<=r[1];)if(n.push(o),o=h(o+t,a),n.length>i)return[];e[1]>(n.length?n[n.length-1]:r[1])&&n.push(e[1])}return n},getTicksLabels:function(){for(var t=[],e=this.getTicks(),n=0;n<e.length;n++)t.push(this.getLabel(e[n]));return t},getLabel:function(t,e){var n=e&&e.precision;return null!=t&&null!=n&&("auto"===n&&(n=this._intervalPrecision+2),t=h(t,n,e&&e.pad)),r.addCommas(t)},niceTicks:function(t){t=t||5;var e=this._extent,n=e[1]-e[0];if(isFinite(n)){n<0&&(n=-n,e.reverse());var r=h(i.nice(n/t,!0),Math.max(l(e[0]),l(e[1]))+2),a=l(r)+2,u=[h(s(e[0]/r)*r,a),h(o(e[1]/r)*r,a)];this._interval=r,this._niceExtent=u}},niceExtent:function(t,e,n){var i=this._extent;if(i[0]===i[1])if(0!==i[0]){var r=i[0];n?i[0]-=r/2:(i[1]+=r/2,i[0]-=r/2)}else i[1]=1;var a=i[1]-i[0];isFinite(a)||(i[0]=0,i[1]=1),this.niceTicks(t);var l=this._interval;e||(i[0]=h(o(i[0]/l)*l)),n||(i[1]=h(s(i[1]/l)*l))}});u.create=function(){return new u},t.exports=u},function(t,e,n){function i(t){this.group=new a.Group,this._symbolCtor=t||o}function r(t,e,n){var i=t.getItemLayout(e);return i&&!isNaN(i[0])&&!isNaN(i[1])&&!(n&&n(e))&&"none"!==t.getItemVisual(e,"symbol")}var a=n(3),o=n(54),s=i.prototype;s.updateData=function(t,e){var n=this.group,i=t.hostModel,o=this._data,s=this._symbolCtor,l={itemStyle:i.getModel("itemStyle.normal").getItemStyle(["color"]),hoverItemStyle:i.getModel("itemStyle.emphasis").getItemStyle(),symbolRotate:i.get("symbolRotate"),symbolOffset:i.get("symbolOffset"),hoverAnimation:i.get("hoverAnimation"),labelModel:i.getModel("label.normal"),hoverLabelModel:i.getModel("label.emphasis")};t.diff(o).add(function(i){var a=t.getItemLayout(i);if(r(t,i,e)){var o=new s(t,i,l);o.attr("position",a),t.setItemGraphicEl(i,o),n.add(o)}}).update(function(h,u){var c=o.getItemGraphicEl(u),f=t.getItemLayout(h);return r(t,h,e)?(c?(c.updateData(t,h,l),a.updateProps(c,{position:f},i)):(c=new s(t,h),c.attr("position",f)),n.add(c),void t.setItemGraphicEl(h,c)):void n.remove(c)}).remove(function(t){var e=o.getItemGraphicEl(t);e&&e.fadeOut(function(){n.remove(e)})}).execute(),this._data=t},s.updateLayout=function(){var t=this._data;t&&t.eachItemGraphicEl(function(e,n){var i=t.getItemLayout(n);e.attr("position",i)})},s.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.exports=i},function(t,e,n){var i=n(2),r=n(32),a=n(124),o=n(1);n(121),n(122),i.registerPreprocessor(function(t){if(t){(!t.axisPointer||0===t.axisPointer.length)&&(t.axisPointer={});var e=t.axisPointer.link;e&&!o.isArray(e)&&(t.axisPointer.link=[e])}}),i.registerProcessor(i.PRIORITY.PROCESSOR.STATISTIC,function(t,e){t.getComponent("axisPointer").coordSysAxesInfo=r.collect(t,e)}),i.registerAction({type:"updateAxisPointer",event:"updateAxisPointer",update:":updateAxisPointer"},function(t,e,n){var i=a(e.getComponent("axisPointer").coordSysAxesInfo,t.currTrigger,t,t.dispatchAction||o.bind(n.dispatchAction,n),e,n,t.tooltipOption,t.highDownKey);return i})},,,function(t,e){"use strict";function n(t){return t}function i(t,e,i,r){this._old=t,this._new=e,this._oldKeyGetter=i||n,this._newKeyGetter=r||n}function r(t,e,n,i){for(var r=0;r<t.length;r++){var a=i(t[r],r),o=e[a];null==o?(n.push(a),e[a]=r):(o.length||(e[a]=o=[o]),o.push(r))}}i.prototype={constructor:i,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,e=this._old,n=this._new,i=this._oldKeyGetter,a=this._newKeyGetter,o={},s={},l=[],h=[];for(r(e,o,l,i),r(n,s,h,a),t=0;t<e.length;t++){var u=l[t],c=s[u];if(null!=c){var f=c.length;f?(1===f&&(s[u]=null),c=c.unshift()):s[u]=null,this._update&&this._update(c,t)}else this._remove&&this._remove(t)}for(var t=0;t<h.length;t++){var u=h[t];if(s.hasOwnProperty(u)){var c=s[u];if(null==c)continue;if(c.length)for(var d=0,f=c.length;d<f;d++)this._add&&this._add(c[d]);else this._add&&this._add(c)}}}},t.exports=i},function(t,e,n){var i=n(1),r=n(15),a=r.parseClassType,o=0,s={},l="_";s.getUID=function(t){return[t||"",o++,Math.random()].join(l)},s.enableSubTypeDefaulter=function(t){var e={};return t.registerSubTypeDefaulter=function(t,n){t=a(t),e[t.main]=n},t.determineSubType=function(n,i){var r=i.type;if(!r){var o=a(n).main;t.hasSubTypes(n)&&e[o]&&(r=e[o](i))}return r},t},s.enableTopologicalTravel=function(t,e){function n(t){var n={},o=[];return i.each(t,function(s){var l=r(n,s),h=l.originalDeps=e(s),u=a(h,t);l.entryCount=u.length,0===l.entryCount&&o.push(s),i.each(u,function(t){i.indexOf(l.predecessor,t)<0&&l.predecessor.push(t);var e=r(n,t);i.indexOf(e.successor,t)<0&&e.successor.push(s)})}),{graph:n,noEntryList:o}}function r(t,e){return t[e]||(t[e]={predecessor:[],successor:[]}),t[e]}function a(t,e){var n=[];return i.each(t,function(t){i.indexOf(e,t)>=0&&n.push(t)}),n}t.topologicalTravel=function(t,e,r,a){function o(t){h[t].entryCount--,0===h[t].entryCount&&u.push(t)}function s(t){c[t]=!0,o(t)}if(t.length){var l=n(e),h=l.graph,u=l.noEntryList,c={};for(i.each(t,function(t){c[t]=!0});u.length;){var f=u.pop(),d=h[f],p=!!c[f];p&&(r.call(a,f,d.originalDeps.slice()),delete c[f]),i.each(d.successor,p?s:o)}i.each(c,function(){throw new Error("Circle dependency may exists")})}}},t.exports=s},function(t,e){t.exports=function(t,e,n,i,r){i.eachRawSeriesByType(t,function(t){var r=t.getData(),a=t.get("symbol")||e,o=t.get("symbolSize");r.setVisual({legendSymbol:n||a,symbol:a,symbolSize:o}),i.isSeriesFiltered(t)||("function"==typeof o&&r.each(function(e){var n=t.getRawValue(e),i=t.getDataParams(e);r.setItemVisual(e,"symbolSize",o(n,i))}),r.each(function(t){var e=r.getItemModel(t),n=e.getShallow("symbol",!0),i=e.getShallow("symbolSize",!0);null!=n&&r.setItemVisual(t,"symbol",n),null!=i&&r.setItemVisual(t,"symbolSize",i)}))})}},function(t,e){function n(t){for(var e=0;t>=u;)e|=1&t,t>>=1;return t+e}function i(t,e,n,i){var a=e+1;if(a===n)return 1;if(i(t[a++],t[e])<0){for(;a<n&&i(t[a],t[a-1])<0;)a++;r(t,e,a)}else for(;a<n&&i(t[a],t[a-1])>=0;)a++;return a-e}function r(t,e,n){for(n--;e<n;){var i=t[e];t[e++]=t[n],t[n--]=i}}function a(t,e,n,i,r){for(i===e&&i++;i<n;i++){for(var a,o=t[i],s=e,l=i;s<l;)a=s+l>>>1,r(o,t[a])<0?l=a:s=a+1;var h=i-s;switch(h){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(;h>0;)t[s+h]=t[s+h-1],h--}t[s]=o}}function o(t,e,n,i,r,a){var o=0,s=0,l=1;if(a(t,e[n+r])>0){for(s=i-r;l<s&&a(t,e[n+r+l])>0;)o=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s),o+=r,l+=r}else{for(s=r+1;l<s&&a(t,e[n+r-l])<=0;)o=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s);var h=o;o=r-l,l=r-h}for(o++;o<l;){var u=o+(l-o>>>1);a(t,e[n+u])>0?o=u+1:l=u}return l}function s(t,e,n,i,r,a){var o=0,s=0,l=1;if(a(t,e[n+r])<0){for(s=r+1;l<s&&a(t,e[n+r-l])<0;)o=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s);var h=o;o=r-l,l=r-h}else{for(s=i-r;l<s&&a(t,e[n+r+l])>=0;)o=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s),o+=r,l+=r}for(o++;o<l;){var u=o+(l-o>>>1);a(t,e[n+u])<0?l=u:o=u+1}return l}function l(t,e){function n(t,e){u[y]=t,d[y]=e,y+=1}function i(){for(;y>1;){var t=y-2;if(t>=1&&d[t-1]<=d[t]+d[t+1]||t>=2&&d[t-2]<=d[t]+d[t-1])d[t-1]<d[t+1]&&t--;else if(d[t]>d[t+1])break;a(t)}}function r(){for(;y>1;){var t=y-2;t>0&&d[t-1]<d[t+1]&&t--,a(t)}}function a(n){var i=u[n],r=d[n],a=u[n+1],c=d[n+1];d[n]=r+c,n===y-3&&(u[n+1]=u[n+2],d[n+1]=d[n+2]),y--;var f=s(t[a],t,i,r,0,e);i+=f,r-=f,0!==r&&(c=o(t[i+r-1],t,a,c,c-1,e),0!==c&&(r<=c?l(i,r,a,c):h(i,r,a,c)))}function l(n,i,r,a){var l=0;for(l=0;l<i;l++)x[l]=t[n+l];var h=0,u=r,f=n;if(t[f++]=t[u++],0!==--a){if(1===i){for(l=0;l<a;l++)t[f+l]=t[u+l];return void(t[f+a]=x[h])}for(var d,g,v,m=p;;){d=0,g=0,v=!1;do if(e(t[u],x[h])<0){if(t[f++]=t[u++],g++,d=0,0===--a){v=!0;break}}else if(t[f++]=x[h++],d++,g=0,1===--i){v=!0;break}while((d|g)<m);if(v)break;do{if(d=s(t[u],x,h,i,0,e),0!==d){for(l=0;l<d;l++)t[f+l]=x[h+l];if(f+=d,h+=d,i-=d,i<=1){v=!0;break}}if(t[f++]=t[u++],0===--a){v=!0;break}if(g=o(x[h],t,u,a,0,e),0!==g){for(l=0;l<g;l++)t[f+l]=t[u+l];if(f+=g,u+=g,a-=g,0===a){v=!0;break}}if(t[f++]=x[h++],1===--i){v=!0;break}m--}while(d>=c||g>=c);if(v)break;m<0&&(m=0),m+=2}if(p=m,p<1&&(p=1),1===i){for(l=0;l<a;l++)t[f+l]=t[u+l];t[f+a]=x[h]}else{if(0===i)throw new Error;for(l=0;l<i;l++)t[f+l]=x[h+l]}}else for(l=0;l<i;l++)t[f+l]=x[h+l]}function h(n,i,r,a){var l=0;for(l=0;l<a;l++)x[l]=t[r+l];var h=n+i-1,u=a-1,f=r+a-1,d=0,g=0;if(t[f--]=t[h--],0!==--i){if(1===a){for(f-=i,h-=i,g=f+1,d=h+1,l=i-1;l>=0;l--)t[g+l]=t[d+l];return void(t[f]=x[u])}for(var v=p;;){var m=0,y=0,_=!1;do if(e(x[u],t[h])<0){if(t[f--]=t[h--],m++,y=0,0===--i){_=!0;break}}else if(t[f--]=x[u--],y++,m=0,1===--a){_=!0;break}while((m|y)<v);if(_)break;do{if(m=i-s(x[u],t,n,i,i-1,e),0!==m){for(f-=m,h-=m,i-=m,g=f+1,d=h+1,l=m-1;l>=0;l--)t[g+l]=t[d+l];if(0===i){_=!0;break}}if(t[f--]=x[u--],1===--a){_=!0;break}if(y=a-o(t[h],x,0,a,a-1,e),0!==y){for(f-=y,u-=y,a-=y,g=f+1,d=u+1,l=0;l<y;l++)t[g+l]=x[d+l];if(a<=1){_=!0;break}}if(t[f--]=t[h--],0===--i){_=!0;break}v--}while(m>=c||y>=c);if(_)break;v<0&&(v=0),v+=2}if(p=v,p<1&&(p=1),1===a){for(f-=i,h-=i,g=f+1,d=h+1,l=i-1;l>=0;l--)t[g+l]=t[d+l];t[f]=x[u]}else{if(0===a)throw new Error;for(d=f-(a-1),l=0;l<a;l++)t[d+l]=x[l]}}else for(d=f-(a-1),l=0;l<a;l++)t[d+l]=x[l]}var u,d,p=c,g=0,v=f,m=0,y=0;g=t.length,g<2*f&&(v=g>>>1);var x=[];m=g<120?5:g<1542?10:g<119151?19:40,u=[],d=[],this.mergeRuns=i,this.forceMergeRuns=r,this.pushRun=n}function h(t,e,r,o){r||(r=0),o||(o=t.length);var s=o-r;if(!(s<2)){var h=0;if(s<u)return h=i(t,r,o,e),void a(t,r,o,r+h,e);var c=new l(t,e),f=n(s);do{if(h=i(t,r,o,e),h<f){var d=s;d>f&&(d=f),a(t,r,r+d,r+h,e),h=d}c.pushRun(r,h),c.mergeRuns(),s-=h,r+=h}while(0!==s);c.forceMergeRuns()}}var u=32,c=7,f=256;t.exports=h},function(t,e,n){var i=n(35);t.exports=function(){if(0!==i.debugMode)if(1==i.debugMode)for(var t in arguments)throw new Error(arguments[t]);else if(i.debugMode>1)for(var t in arguments)console.log(arguments[t])}},function(t,e,n){function i(t){r.call(this,t)}var r=n(40),a=n(11),o=n(1),s=n(69),l=new s(50);i.prototype={constructor:i,type:"image",brush:function(t,e){var n,i=this.style,r=i.image;if(i.bind(t,this,e),n="string"==typeof r?this._image:r,!n&&r){var a=l.get(r);if(!a)return n=new Image,n.onload=function(){n.onload=null;for(var t=0;t<a.pending.length;t++)a.pending[t].dirty()},a={image:n,pending:[this]},n.src=r,l.put(r,a),void(this._image=n);if(n=a.image,this._image=n,!n.width||!n.height)return void a.pending.push(this)}if(n){var o=i.x||0,s=i.y||0;if(!n.width||!n.height)return;var h=i.width,u=i.height,c=n.width/n.height;if(null==h&&null!=u?h=u*c:null==u&&null!=h?u=h/c:null==h&&null==u&&(h=n.width,u=n.height),this.setTransform(t),i.sWidth&&i.sHeight){var f=i.sx||0,d=i.sy||0;t.drawImage(n,f,d,i.sWidth,i.sHeight,o,s,h,u)}else if(i.sx&&i.sy){var f=i.sx,d=i.sy,p=h-f,g=u-d;t.drawImage(n,f,d,p,g,o,s,h,u)}else t.drawImage(n,o,s,h,u);this.restoreTransform(t),null!=i.text&&this.drawRectText(t,this.getBoundingRect())}},getBoundingRect:function(){var t=this.style;return this._rect||(this._rect=new a(t.x||0,t.y||0,t.width||0,t.height||0)),this._rect}},o.inherits(i,r),t.exports=i},function(t,e,n){function i(t,e){var n=t.getItemVisual(e,"symbolSize");return n instanceof Array?n.slice():[+n,+n]}function r(t){return[t[0]/2,t[1]/2]}function a(t,e,n){h.Group.call(this),this.updateData(t,e,n)}function o(t,e){this.parent.drift(t,e)}var s=n(1),l=n(24),h=n(3),u=n(4),c=a.prototype;c._createSymbol=function(t,e,n,i){this.removeAll();var a=e.hostModel,s=e.getItemVisual(n,"color"),u=l.createSymbol(t,-1,-1,2,2,s);u.attr({z2:100,culling:!0,scale:[0,0]}),u.drift=o,h.initProps(u,{scale:r(i)},a,n),this._symbolType=t,this.add(u)},c.stopSymbolAnimation=function(t){this.childAt(0).stopAnimation(t)},c.getSymbolPath=function(){return this.childAt(0)},c.getScale=function(){return this.childAt(0).scale},c.highlight=function(){this.childAt(0).trigger("emphasis")},c.downplay=function(){this.childAt(0).trigger("normal")},c.setZ=function(t,e){var n=this.childAt(0);n.zlevel=t,n.z=e},c.setDraggable=function(t){var e=this.childAt(0);e.draggable=t,e.cursor=t?"move":"pointer"},c.updateData=function(t,e,n){this.silent=!1;var a=t.getItemVisual(e,"symbol")||"circle",o=t.hostModel,s=i(t,e);if(a!==this._symbolType)this._createSymbol(a,t,e,s);else{var l=this.childAt(0);l.silent=!1,h.updateProps(l,{scale:r(s)},o,e)}this._updateCommon(t,e,s,n),this._seriesModel=o};var f=["itemStyle","normal"],d=["itemStyle","emphasis"],p=["label","normal"],g=["label","emphasis"];c._updateCommon=function(t,e,n,i){var a=this.childAt(0),o=t.hostModel,l=t.getItemVisual(e,"color");"image"!==a.type&&a.useStyle({strokeNoScale:!0}),i=i||null;var c=i&&i.itemStyle,v=i&&i.hoverItemStyle,m=i&&i.symbolRotate,y=i&&i.symbolOffset,x=i&&i.labelModel,_=i&&i.hoverLabelModel,b=i&&i.hoverAnimation;if(!i||t.hasItemOption){var w=t.getItemModel(e);c=w.getModel(f).getItemStyle(["color"]),v=w.getModel(d).getItemStyle(),m=w.getShallow("symbolRotate"),y=w.getShallow("symbolOffset"),x=w.getModel(p),_=w.getModel(g),b=w.getShallow("hoverAnimation")}else v=s.extend({},v);var M=a.style;a.attr("rotation",(m||0)*Math.PI/180||0),y&&a.attr("position",[u.parsePercent(y[0],n[0]),u.parsePercent(y[1],n[1])]),a.setColor(l),a.setStyle(c);var T=t.getItemVisual(e,"opacity");null!=T&&(M.opacity=T);for(var S,A,I=t.dimensions.slice();I.length&&(S=I.pop(),A=t.getDimensionInfo(S).type,"ordinal"===A||"time"===A););null!=S&&x.getShallow("show")?(h.setText(M,x,l),M.text=s.retrieve(o.getFormattedLabel(e,"normal"),t.get(S,e))):M.text="",null!=S&&_.getShallow("show")?(h.setText(v,_,l),v.text=s.retrieve(o.getFormattedLabel(e,"emphasis"),t.get(S,e))):v.text="",a.off("mouseover").off("mouseout").off("emphasis").off("normal"),a.hoverStyle=v,h.setHoverStyle(a);var C=r(n);if(b&&o.isAnimationEnabled()){var P=function(){var t=C[1]/C[0];this.animateTo({scale:[Math.max(1.1*C[0],C[0]+3),Math.max(1.1*C[1],C[1]+3*t)]},400,"elasticOut")},L=function(){this.animateTo({scale:C},400,"elasticOut")};a.on("mouseover",P).on("mouseout",L).on("emphasis",P).on("normal",L)}},c.fadeOut=function(t){var e=this.childAt(0);this.silent=e.silent=!0,e.style.text="",h.updateProps(e,{scale:[0,0]},this._seriesModel,this.dataIndex,t)},s.inherits(a,h.Group),t.exports=a},function(t,e,n){"use strict";function i(t,e,n,i){var r=i.getWidth(),a=i.getHeight();t[0]=Math.min(t[0]+e,r)-e,t[1]=Math.min(t[1]+n,a)-n,t[0]=Math.max(t[0],0),t[1]=Math.max(t[1],0)}var r=n(1),a=n(3),o=n(16),s=n(7),l=n(19),h=n(17),u=n(37),c={};c.buildElStyle=function(t){var e,n=t.get("type"),i=t.getModel(n+"Style");return"line"===n?(e=i.getLineStyle(),e.fill=null):"shadow"===n&&(e=i.getAreaStyle(),e.stroke=null),e},c.buildLabelElOption=function(t,e,n,r,a){var l=n.get("value"),h=c.getValueLabel(l,e.axis,e.ecModel,n.get("seriesDataIndices"),{precision:n.get("label.precision"),formatter:n.get("label.formatter")}),u=n.getModel("label"),f=u.getModel("textStyle"),d=s.normalizeCssArray(u.get("padding")||0),p=f.getFont(),g=o.getBoundingRect(h,p,a.textAlign,a.textBaseline),v=a.position,m=g.width+d[1]+d[3],y=g.height+d[0]+d[2],x=a.align;"right"===x&&(v[0]-=m),"center"===x&&(v[0]-=m/2);var _=a.verticalAlign;"bottom"===_&&(v[1]-=y),"middle"===_&&(v[1]-=y/2),i(v,m,y,r);var b=u.get("backgroundColor");b&&"auto"!==b||(b=e.get("axisLine.lineStyle.color")),t.label={shape:{x:0,y:0,width:m,height:y,r:u.get("borderRadius")},position:v.slice(),style:{text:h,textFont:p,textFill:f.getTextColor(),textPosition:"inside",fill:b,stroke:u.get("borderColor")||"transparent",lineWidth:u.get("borderWidth")||0,shadowBlur:u.get("shadowBlur"),shadowColor:u.get("shadowColor"),shadowOffsetX:u.get("shadowOffsetX"),shadowOffsetY:u.get("shadowOffsetY")}}},c.getValueLabel=function(t,e,n,i,a){var o=e.scale.getLabel(t,{precision:a.precision,pad:!0}),s=a.formatter;if(s){var l={value:h.getAxisRawValue(e,t),seriesData:[]};r.each(i,function(t){var e=n.getSeriesByIndex(t.seriesIndex),i=t.dataIndexInside,r=e&&e.getDataParams(i);r&&l.seriesData.push(r)}),r.isString(s)?o=s.replace("{value}",o):r.isFunction(s)&&(o=s(l))}return o},c.getTransformedPosition=function(t,e,n){var i=l.create();return l.rotate(i,i,n.rotation),l.translate(i,i,n.position),a.applyTransform([t.dataToCoord(e),(n.labelOffset||0)+(n.labelDirection||1)*(n.labelMargin||0)],i)},c.buildCartesianSingleLabelElOption=function(t,e,n,i,r,a){var o=u.innerTextLayout(n.rotation,0,n.labelDirection);n.labelMargin=r.get("label.margin"),c.buildLabelElOption(e,i,r,a,{position:c.getTransformedPosition(i.axis,t,n),align:o.textAlign,verticalAlign:o.textVerticalAlign})},c.makeLineShape=function(t,e,n){return n=n||0,{x1:t[n],y1:t[1-n],x2:e[n],y2:e[1-n]}},c.makeRectShape=function(t,e,n){return n=n||0,{x:t[n],y:t[1-n],width:e[n],height:e[1-n]}},c.makeSectorShape=function(t,e,n,i,r,a){return{cx:t,cy:e,r0:n,r:i,startAngle:r,endAngle:a,clockwise:!0}},t.exports=c},function(t,e,n){function i(t,e,n){return t.getCoordSysModel()===e}function r(t){var e,n=t.model,i=n.getFormattedLabels(),r=n.getModel("axisLabel.textStyle"),a=1,o=i.length;o>40&&(a=Math.ceil(o/40));for(var s=0;s<o;s+=a)if(!t.isLabelIgnored(s)){var l=r.getTextRect(i[s]);e?e.union(l):e=l}return e}function a(t,e,n){this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this._initCartesian(t,e,n),this.model=t}function o(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}}function s(t,e){return c.map(y,function(e){var n=t.getReferringComponents(e)[0];return n})}function l(t){return"cartesian2d"===t.get("coordinateSystem")}var h=n(12),u=n(17),c=n(1),f=n(134),d=n(132),p=c.each,g=u.ifAxisCrossZero,v=u.niceScaleExtent;n(135);var m=a.prototype;m.type="grid",m.axisPointerEnabled=!0,m.getRect=function(){return this._rect},m.update=function(t,e){function n(t){var e=i[t];for(var n in e)if(e.hasOwnProperty(n)){var r=e[n];if(r&&("category"===r.type||!g(r)))return!0}return!1}var i=this._axesMap;this._updateScale(t,this.model),p(i.x,function(t){v(t.scale,t.model)}),p(i.y,function(t){v(t.scale,t.model)}),p(i.x,function(t){n("y")&&(t.onZero=!1)}),p(i.y,function(t){n("x")&&(t.onZero=!1)}),this.resize(this.model,e)},m.resize=function(t,e){function n(){p(a,function(t){var e=t.isHorizontal(),n=e?[0,i.width]:[0,i.height],r=t.inverse?1:0;t.setExtent(n[r],n[1-r]),o(t,e?i.x:i.y)})}var i=h.getLayoutRect(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()});this._rect=i;var a=this._axesList;n(),t.get("containLabel")&&(p(a,function(t){if(!t.model.get("axisLabel.inside")){var e=r(t);if(e){var n=t.isHorizontal()?"height":"width",a=t.model.get("axisLabel.margin");i[n]-=e[n]+a,"top"===t.position?i.y+=e.height+a:"left"===t.position&&(i.x+=e.width+a)}}}),n())},m.getAxis=function(t,e){var n=this._axesMap[t];if(null!=n){if(null==e)for(var i in n)if(n.hasOwnProperty(i))return n[i];return n[e]}},m.getAxes=function(){return this._axesList.slice()},m.getCartesian=function(t,e){if(null!=t&&null!=e){var n="x"+t+"y"+e;return this._coordsMap[n]}c.isObject(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]},m.getCartesians=function(){return this._coordsList.slice()},m.convertToPixel=function(t,e,n){var i=this._findConvertTarget(t,e);return i.cartesian?i.cartesian.dataToPoint(n):i.axis?i.axis.toGlobalCoord(i.axis.dataToCoord(n)):null},m.convertFromPixel=function(t,e,n){var i=this._findConvertTarget(t,e);return i.cartesian?i.cartesian.pointToData(n):i.axis?i.axis.coordToData(i.axis.toLocalCoord(n)):null},m._findConvertTarget=function(t,e){var n,i,r=e.seriesModel,a=e.xAxisModel||r&&r.getReferringComponents("xAxis")[0],o=e.yAxisModel||r&&r.getReferringComponents("yAxis")[0],s=e.gridModel,l=this._coordsList;if(r)n=r.coordinateSystem,c.indexOf(l,n)<0&&(n=null);else if(a&&o)n=this.getCartesian(a.componentIndex,o.componentIndex);else if(a)i=this.getAxis("x",a.componentIndex);else if(o)i=this.getAxis("y",o.componentIndex);else if(s){var h=s.coordinateSystem;h===this&&(n=this._coordsList[0])}return{cartesian:n,axis:i}},m.containPoint=function(t){var e=this._coordsList[0];if(e)return e.containPoint(t)},m._initCartesian=function(t,e,n){function r(n){return function(r,l){if(i(r,t,e)){var h=r.get("position");"x"===n?"top"!==h&&"bottom"!==h&&(h="bottom",a[h]&&(h="top"===h?"bottom":"top")):"left"!==h&&"right"!==h&&(h="left",a[h]&&(h="left"===h?"right":"left")),a[h]=!0;var c=new d(n,u.createScaleByModel(r),[0,0],r.get("type"),h),f="category"===c.type;c.onBand=f&&r.get("boundaryGap"),c.inverse=r.get("inverse"),c.onZero=r.get("axisLine.onZero"),r.axis=c,c.model=r,c.grid=this,c.index=l,this._axesList.push(c),o[n][l]=c,s[n]++}}}var a={left:!1,right:!1,top:!1,bottom:!1},o={x:{},y:{}},s={x:0,y:0};return e.eachComponent("xAxis",r("x"),this),e.eachComponent("yAxis",r("y"),this),s.x&&s.y?(this._axesMap=o,void p(o.x,function(e,n){p(o.y,function(i,r){var a="x"+n+"y"+r,o=new f(a);o.grid=this,o.model=t,this._coordsMap[a]=o,this._coordsList.push(o),o.addAxis(e),o.addAxis(i)},this)},this)):(this._axesMap={},void(this._axesList=[]))},m._updateScale=function(t,e){function n(t,e,n){p(n.coordDimToDataDim(e.dim),function(n){e.scale.unionExtentFromData(t,n)})}c.each(this._axesList,function(t){t.scale.setExtent(1/0,-(1/0))}),t.eachSeries(function(r){if(l(r)){var a=s(r,t),o=a[0],h=a[1];if(!i(o,e,t)||!i(h,e,t))return;var u=this.getCartesian(o.componentIndex,h.componentIndex),c=r.getData(),f=u.getAxis("x"),d=u.getAxis("y");"list"===c.type&&(n(c,f,r),n(c,d,r))}},this)},m.getTooltipAxes=function(t){var e=[],n=[];return p(this.getCartesians(),function(i){var r=null!=t&&"auto"!==t?i.getAxis(t):i.getBaseAxis(),a=i.getOtherAxis(r);c.indexOf(e,r)<0&&e.push(r),c.indexOf(n,a)<0&&n.push(a)}),{baseAxes:e,otherAxes:n}};var y=["xAxis","yAxis"];a.create=function(t,e){var n=[];return t.eachComponent("grid",function(i,r){var o=new a(i,t,e);o.name="grid_"+r,o.resize(i,e),i.coordinateSystem=o,n.push(o)}),t.eachSeries(function(e){if(l(e)){var n=s(e,t),i=n[0],r=n[1],a=i.getCoordSysModel(),o=a.coordinateSystem;e.coordinateSystem=o.getCartesian(i.componentIndex,r.componentIndex)}}),n},a.dimensions=a.prototype.dimensions=f.prototype.dimensions,n(26).register("cartesian2d",a),t.exports=a},function(t,e,n){function i(t,e,n,i,o,s){if(t.axisPointerClass){var l=a.getAxisPointerModel(e);l?(t._axisPointer||(t._axisPointer=new t.axisPointerClass)).render(e,l,i,s):r(t,i)}}function r(t,e,n){var i=t._axisPointer;i&&i.dispose(e,n),t._axisPointer=null}var a=n(32),o=n(2).extendComponentView({type:"axis",_axisPointer:null,axisPointerClass:null,render:function(t,e,n,r){a.fixValue(t),o.superApply(this,"render",arguments),i(this,t,e,n,r,!0)},updateAxisPointer:function(t,e,n,r,a){i(this,t,e,n,r,!1)},remove:function(t,e){var n=this._axisPointer;n&&n.remove(e),o.superApply(this,"remove",arguments)},dispose:function(t,e){r(this,e),o.superApply(this,"dispose",arguments)}});t.exports=o},function(t,e,n){var i=n(1),r={};r.layout=function(t,e,n){function r(t,e){var n=a.getAxis(t);return n.toGlobalCoord(n.dataToCoord(0))}n=n||{};var a=t.coordinateSystem,o=e.axis,s={},l=o.position,h=o.onZero?"onZero":l,u=o.dim,c=a.getRect(),f=[c.x,c.x+c.width,c.y,c.y+c.height],d=e.get("offset")||0,p={x:{top:f[2]-d,bottom:f[3]+d},y:{left:f[0]-d,right:f[1]+d}};p.x.onZero=Math.max(Math.min(r("y"),p.x.bottom),p.x.top),p.y.onZero=Math.max(Math.min(r("x"),p.y.right),p.y.left),s.position=["y"===u?p.y[h]:f[0],"x"===u?p.x[h]:f[3]],s.rotation=Math.PI/2*("x"===u?0:1);var g={top:-1,bottom:1,left:-1,right:1};s.labelDirection=s.tickDirection=s.nameDirection=g[l],s.labelOffset=o.onZero?p[u][l]-p[u].onZero:0,e.get("axisTick.inside")&&(s.tickDirection=-s.tickDirection),i.retrieve(n.labelInside,e.get("axisLabel.inside"))&&(s.labelDirection=-s.labelDirection);var v=e.get("axisLabel.rotate");return s.labelRotate="top"===h?-v:v,s.labelInterval=o.getLabelInterval(),s.z2=1,s},t.exports=r},function(t,e,n){var i=n(96),r=n(1),a=n(13),o=n(12),s=["value","category","time","log"];t.exports=function(t,e,n,l){r.each(s,function(a){e.extend({type:t+"Axis."+a,mergeDefaultAndTheme:function(e,i){var s=this.layoutMode,l=s?o.getLayoutParams(e):{},h=i.getTheme();r.merge(e,h.get(a+"Axis")),r.merge(e,this.getDefaultOption()),e.type=n(t,e),s&&o.mergeLayoutParam(e,l,s)},defaultOption:r.mergeAll([{},i[a+"Axis"],l],!0)})}),a.registerSubTypeDefaulter(t+"Axis",r.curry(n,t))}},function(t,e,n){"use strict";function i(t,e){return e.type||(e.data?"category":"value")}var r=n(13),a=n(1),o=n(59),s=r.extend({type:"cartesian2dAxis",axis:null,init:function(){s.superApply(this,"init",arguments),this.resetRange()},mergeOption:function(){s.superApply(this,"mergeOption",arguments),this.resetRange()},restoreData:function(){s.superApply(this,"restoreData",arguments),this.resetRange()},getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"grid",index:this.option.gridIndex,id:this.option.gridId})[0]}});a.merge(s.prototype,n(42));var l={offset:0};o("x",s,i,l),o("y",s,i,l),t.exports=s},function(t,e){t.exports=function(t,e){e.eachSeriesByType(t,function(t){var e=t.getData(),n=t.coordinateSystem;if(n){var i=n.dimensions;1===i.length?e.each(i[0],function(t,i){e.setItemLayout(i,isNaN(t)?[NaN,NaN]:n.dataToPoint(t))}):2===i.length&&e.each(i,function(t,i,r){e.setItemLayout(r,isNaN(t)||isNaN(i)?[NaN,NaN]:n.dataToPoint([t,i]))},!0)}})}},function(t,e,n){var i=n(15),r=i.set,a=i.get;t.exports={clearColorPalette:function(){r(this,"colorIdx",0),r(this,"colorNameMap",{})},getColorFromPalette:function(t,e){e=e||this;var n=a(e,"colorIdx")||0,i=a(e,"colorNameMap")||r(e,"colorNameMap",{});if(i[t])return i[t];var o=this.get("color",!0)||[];if(o.length){var s=o[n];return t&&(i[t]=s),r(e,"colorIdx",(n+1)%o.length),s}}}},function(t,e){t.exports=function(t,e){var n=e.findComponents({mainType:"legend"});n&&n.length&&e.eachSeriesByType(t,function(t){var e=t.getData();e.filterSelf(function(t){for(var i=e.getName(t),r=0;r<n.length;r++)if(!n[r].isSelected(i))return!1;return!0},this)},this)}},function(t,e,n){var i=n(36),r=n(49),a=n(15),o=function(){this.group=new i,this.uid=r.getUID("viewComponent")};o.prototype={constructor:o,init:function(t,e){},render:function(t,e,n,i){},dispose:function(){}};var s=o.prototype;s.updateView=s.updateLayout=s.updateVisual=function(t,e,n,i){},a.enableClassExtend(o),a.enableClassManagement(o,{registerWhenExtend:!0}),t.exports=o},function(t,e,n){"use strict";var i=n(70),r=n(23),a=n(102),o=n(180),s=n(1),l=function(t){a.call(this,t),r.call(this,t),o.call(this,t),this.id=t.id||i()};l.prototype={type:"element",name:"",__zr:null,ignore:!1,clipPath:null,drift:function(t,e){switch(this.draggable){case"horizontal":e=0;break;case"vertical":t=0}var n=this.transform;n||(n=this.transform=[1,0,0,1,0,0]),n[4]+=t,n[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 n=this[t];n||(n=this[t]=[]),n[0]=e[0],n[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(s.isObject(t))for(var n in t)t.hasOwnProperty(n)&&this.attrKV(n,t[n]);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,t.__zr=e,t.__clipTarget=this,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 n=0;n<e.length;n++)t.animation.addAnimator(e[n]);this.clipPath&&this.clipPath.addSelfToZr(t)},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)}},s.mixin(l,o),s.mixin(l,a),s.mixin(l,r),t.exports=l},function(t,e,n){function i(t,e){return t[e]}function r(t,e,n){t[e]=n}function a(t,e,n){return(e-t)*n+t}function o(t,e,n){return n>.5?e:t}function s(t,e,n,i,r){var o=t.length;if(1==r)for(var s=0;s<o;s++)i[s]=a(t[s],e[s],n);else for(var l=t[0].length,s=0;s<o;s++)for(var h=0;h<l;h++)i[s][h]=a(t[s][h],e[s][h],n)}function l(t,e,n){var i=t.length,r=e.length;if(i!==r){var a=i>r;if(a)t.length=r;else for(var o=i;o<r;o++)t.push(1===n?e[o]:x.call(e[o]))}for(var s=t[0]&&t[0].length,o=0;o<t.length;o++)if(1===n)isNaN(t[o])&&(t[o]=e[o]);else for(var l=0;l<s;l++)isNaN(t[o][l])&&(t[o][l]=e[o][l])}function h(t,e,n){if(t===e)return!0;var i=t.length;if(i!==e.length)return!1;if(1===n){for(var r=0;r<i;r++)if(t[r]!==e[r])return!1}else for(var a=t[0].length,r=0;r<i;r++)for(var o=0;o<a;o++)if(t[r][o]!==e[r][o])return!1;return!0}function u(t,e,n,i,r,a,o,s,l){var h=t.length;if(1==l)for(var u=0;u<h;u++)s[u]=c(t[u],e[u],n[u],i[u],r,a,o);else for(var f=t[0].length,u=0;u<h;u++)for(var d=0;d<f;d++)s[u][d]=c(t[u][d],e[u][d],n[u][d],i[u][d],r,a,o)}function c(t,e,n,i,r,a,o){var s=.5*(n-t),l=.5*(i-e);return(2*(e-n)+s+l)*o+(-3*(e-n)-2*s-l)*a+s*r+e}function f(t){if(y(t)){var e=t.length;if(y(t[0])){for(var n=[],i=0;i<e;i++)n.push(x.call(t[i]));return n}return x.call(t)}return t}function d(t){return t[0]=Math.floor(t[0]),t[1]=Math.floor(t[1]),t[2]=Math.floor(t[2]),"rgba("+t.join(",")+")"}function p(t,e,n,i,r){var f=t._getter,p=t._setter,m="spline"===e,x=i.length;if(x){var _,b=i[0].value,w=y(b),M=!1,T=!1,S=w&&y(b[0])?2:1;i.sort(function(t,e){return t.time-e.time}),_=i[x-1].time;for(var A=[],I=[],C=i[0].value,P=!0,L=0;L<x;L++){A.push(i[L].time/_);var k=i[L].value;if(w&&h(k,C,S)||!w&&k===C||(P=!1),C=k,"string"==typeof k){var O=v.parse(k);O?(k=O,M=!0):T=!0}I.push(k)}if(!P){for(var D=I[x-1],L=0;L<x-1;L++)w?l(I[L],D,S):!isNaN(I[L])||isNaN(D)||T||M||(I[L]=D);w&&l(f(t._target,r),D,S);var E,z,R,N,B,F,V=0,G=0;if(M)var H=[0,0,0,0];var q=function(t,e){var n;if(e<0)n=0;else if(e<G){for(E=Math.min(V+1,x-1),n=E;n>=0&&!(A[n]<=e);n--);n=Math.min(n,x-2)}else{for(n=V;n<x&&!(A[n]>e);n++);n=Math.min(n-1,x-2)}V=n,G=e;var i=A[n+1]-A[n];if(0!==i)if(z=(e-A[n])/i,m)if(N=I[n],R=I[0===n?n:n-1],B=I[n>x-2?x-1:n+1],F=I[n>x-3?x-1:n+2],w)u(R,N,B,F,z,z*z,z*z*z,f(t,r),S);else{var l;if(M)l=u(R,N,B,F,z,z*z,z*z*z,H,1),l=d(H);else{if(T)return o(N,B,z);l=c(R,N,B,F,z,z*z,z*z*z)}p(t,r,l)}else if(w)s(I[n],I[n+1],z,f(t,r),S);else{var l;if(M)s(I[n],I[n+1],z,H,1),l=d(H);else{if(T)return o(I[n],I[n+1],z);l=a(I[n],I[n+1],z)}p(t,r,l)}},W=new g({target:t._target,life:_,loop:t._loop,delay:t._delay,onframe:q,ondestroy:n});return e&&"spline"!==e&&(W.easing=e),
+W}}}var g=n(159),v=n(22),m=n(1),y=m.isArrayLike,x=Array.prototype.slice,_=function(t,e,n,a){this._tracks={},this._target=t,this._loop=e||!1,this._getter=n||i,this._setter=a||r,this._clipCount=0,this._delay=0,this._doneList=[],this._onframeList=[],this._clipList=[]};_.prototype={when:function(t,e){var n=this._tracks;for(var i in e)if(e.hasOwnProperty(i)){if(!n[i]){n[i]=[];var r=this._getter(this._target,i);if(null==r)continue;0!==t&&n[i].push({time:0,value:f(r)})}n[i].push({time:t,value:e[i]})}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,n=0;n<e;n++)t[n].call(this)},start:function(t){var e,n=this,i=0,r=function(){i--,i||n._doneCallback()};for(var a in this._tracks)if(this._tracks.hasOwnProperty(a)){var o=p(this,t,r,this._tracks[a],a);o&&(this._clipList.push(o),i++,this.animation&&this.animation.addClip(o),e=o)}if(e){var s=e.onframe;e.onframe=function(t,e){s(t,e);for(var i=0;i<n._onframeList.length;i++)n._onframeList[i](t,e)}}return i||this._doneCallback(),this},stop:function(t){for(var e=this._clipList,n=this.animation,i=0;i<e.length;i++){var r=e[i];t&&r.onframe(this._target,1),n&&n.removeClip(r)}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}},t.exports=_},function(t,e){t.exports="undefined"!=typeof window&&(window.requestAnimationFrame||window.msRequestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame)||function(t){setTimeout(t,16)}},function(t,e){var n=2*Math.PI;t.exports={normalizeRadian:function(t){return t%=n,t<0&&(t+=n),t}}},function(t,e){var n=function(){this.head=null,this.tail=null,this._len=0},i=n.prototype;i.insert=function(t){var e=new r(t);return this.insertEntry(e),e},i.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++},i.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--},i.len=function(){return this._len},i.clear=function(){this.head=this.tail=null,this._len=0};var r=function(t){this.value=t,this.next,this.prev},a=function(t){this._list=new n,this._map={},this._maxSize=t||10,this._lastRemovedEntry=null},o=a.prototype;o.put=function(t,e){var n=this._list,i=this._map,a=null;if(null==i[t]){var o=n.len(),s=this._lastRemovedEntry;if(o>=this._maxSize&&o>0){var l=n.head;n.remove(l),delete i[l.key],a=l.value,this._lastRemovedEntry=l}s?s.value=e:s=new r(e),s.key=t,n.insertEntry(s),i[t]=s}return a},o.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},o.clear=function(){this._list.clear(),this._map={}},t.exports=a},function(t,e){var n=2311;t.exports=function(){return n++}},function(t,e){var n=function(t,e){this.image=t,this.repeat=e,this.type="pattern"};n.prototype.getCanvasPattern=function(t){return this._canvasPattern||(this._canvasPattern=t.createPattern(this.image,this.repeat))},t.exports=n},function(t,e){function n(t,e,n){var i=e.x,r=e.x2,a=e.y,o=e.y2;e.global||(i=i*n.width+n.x,r=r*n.width+n.x,a=a*n.height+n.y,o=o*n.height+n.y);var s=t.createLinearGradient(i,a,r,o);return s}function i(t,e,n){var i=n.width,r=n.height,a=Math.min(i,r),o=e.x,s=e.y,l=e.r;e.global||(o=o*i+n.x,s=s*r+n.y,l*=a);var h=t.createRadialGradient(o,s,0,o,s,l);return h}var r=[["shadowBlur",0],["shadowOffsetX",0],["shadowOffsetY",0],["shadowColor","#000"],["lineCap","butt"],["lineJoin","miter"],["miterLimit",10]],a=function(t){this.extendFrom(t)};a.prototype={constructor:a,fill:"#000000",stroke:null,opacity:1,lineDash:null,lineDashOffset:0,shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,lineWidth:1,strokeNoScale:!1,text:null,textFill:"#000",textStroke:null,textPosition:"inside",textOffset:null,textBaseline:null,textAlign:null,textVerticalAlign:null,textDistance:5,textShadowBlur:0,textShadowOffsetX:0,textShadowOffsetY:0,textTransform:!1,textRotation:0,blend:null,bind:function(t,e,n){for(var i=this,a=n&&n.style,o=!a,s=0;s<r.length;s++){var l=r[s],h=l[0];(o||i[h]!==a[h])&&(t[h]=i[h]||l[1])}if((o||i.fill!==a.fill)&&(t.fillStyle=i.fill),(o||i.stroke!==a.stroke)&&(t.strokeStyle=i.stroke),(o||i.opacity!==a.opacity)&&(t.globalAlpha=null==i.opacity?1:i.opacity),(o||i.blend!==a.blend)&&(t.globalCompositeOperation=i.blend||"source-over"),this.hasStroke()){var u=i.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&&this.lineWidth>0},extendFrom:function(t,e){if(t){var n=this;for(var i in t)!t.hasOwnProperty(i)||!e&&n.hasOwnProperty(i)||(n[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,r){for(var a="radial"===e.type?i:n,o=a(t,e,r),s=e.colorStops,l=0;l<s.length;l++)o.addColorStop(s[l].offset,s[l].color);return o}};for(var o=a.prototype,s=0;s<r.length;s++){var l=r[s];l[0]in o||(o[l[0]]=l[1])}a.getGradient=o.getGradient,t.exports=a},function(t,e,n){var i=n(170),r=n(169);t.exports={buildPath:function(t,e,n){var a=e.points,o=e.smooth;if(a&&a.length>=2){if(o&&"spline"!==o){var s=r(a,o,n,e.smoothConstraint);t.moveTo(a[0][0],a[0][1]);for(var l=a.length,h=0;h<(n?l:l-1);h++){var u=s[2*h],c=s[2*h+1],f=a[(h+1)%l];t.bezierCurveTo(u[0],u[1],c[0],c[1],f[0],f[1])}}else{"spline"===o&&(a=i(a,n)),t.moveTo(a[0][0],a[0][1]);for(var h=1,d=a.length;h<d;h++)t.lineTo(a[h][0],a[h][1])}n&&t.closePath()}}}},function(t,e,n){"use strict";function i(){}function r(t,e,n,i){a(d(n).lastProp,i)||(d(n).lastProp=i,e?f.updateProps(n,i,t):(n.stopAnimation(),n.attr(i)))}function a(t,e){if(u.isObject(t)&&u.isObject(e)){var n=!0;return u.each(e,function(e,i){n&=a(t[i],e)}),!!n}return t===e}function o(t,e){t[e.get("label.show")?"show":"hide"]()}function s(t){return{position:t.position.slice(),rotation:t.rotation||0}}function l(t,e){var n=t.get("icon"),i={x:-1,y:-1,width:2,height:2},r=u.extend({style:{strokeNoScale:!0},rectHover:!0,cursor:"move",draggable:!0},e);return 0===n.indexOf("image://")?(i.image=n.slice(8),r.style=i,new f.Image(r)):f.makePath(n.replace("path://",""),r,i,"center")}function h(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)})}var u=n(1),c=n(15),f=n(3),d=n(5).makeGetter(),p=n(32),g=n(20),v=n(39),m=u.clone,y=u.bind;i.prototype={_group:null,_lastGraphicKey:null,_handle:null,_dragging:!1,_lastValue:null,_lastStatus:null,_payloadInfo:null,animationThreshold:15,render:function(t,e,n,i){var a=e.get("value"),o=e.get("status");if(this._axisModel=t,this._axisPointerModel=e,this._api=n,i||this._lastValue!==a||this._lastStatus!==o){this._lastValue=a,this._lastStatus=o;var s=this._group,l=this._handle;if(!o||"hide"===o)return s&&s.hide(),void(l&&l.hide());s&&s.show(),l&&l.show();var c={};this.makeElOption(c,a,t,e,n);var d=c.graphicKey;d!==this._lastGraphicKey&&this.clear(n),this._lastGraphicKey=d;var p=this._moveAnimation=this.determineAnimation(t,e);if(s){var g=u.curry(r,e,p);this.updatePointerEl(s,c,g,e),this.updateLabelEl(s,c,g,e)}else s=this._group=new f.Group,this.createPointerEl(s,c,t,e),this.createLabelEl(s,c,t,e),n.getZr().add(s);h(s,e,!0),this._renderHandle(a)}},remove:function(t){this.clear(t)},dispose:function(t){this.clear(t)},determineAnimation:function(t,e){var n=e.get("animation"),i=t.axis,r="category"===i.type,a=e.get("snap");if(!a&&!r)return!1;if("auto"===n||null==n){var o=this.animationThreshold;if(r&&i.getBandWidth()>o)return!0;if(a){var s=p.getAxisInfo(t).seriesDataCount,l=i.getExtent();return Math.abs(l[0]-l[1])/s>o}return!1}return n===!0},makeElOption:function(t,e,n,i,r){},createPointerEl:function(t,e,n,i){var r=e.pointer,a=d(t).pointerEl=new f[r.type](m(e.pointer));t.add(a)},createLabelEl:function(t,e,n,i){var r=d(t).labelEl=new f.Rect(m(e.label));t.add(r),o(r,i)},updatePointerEl:function(t,e,n){var i=d(t).pointerEl;i&&(i.setStyle(e.pointer.style),n(i,{shape:e.pointer.shape}))},updateLabelEl:function(t,e,n,i){var r=d(t).labelEl;r&&(r.setStyle(e.label.style),n(r,{shape:e.label.shape,position:e.label.position}),o(r,i))},_renderHandle:function(t){if(!this._dragging&&this.updateHandleTransform){var e=this._axisPointerModel,n=this._api.getZr(),i=this._handle,r=e.getModel("handle"),a=e.get("status");if(!r.get("show")||!a||"hide"===a)return i&&n.remove(i),void(this._handle=null);var o;this._handle||(o=!0,i=this._handle=l(r,{onmousemove:function(t){g.stop(t.event)},onmousedown:y(this._onHandleDragMove,this,0,0),drift:y(this._onHandleDragMove,this),ondragend:y(this._onHandleDragEnd,this)}),n.add(i)),h(i,e,!1);var s=["color","borderColor","borderWidth","opacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY"];i.setStyle(r.getItemStyle(null,s));var c=r.get("size");u.isArray(c)||(c=[c,c]),i.attr("scale",[c[0]/2,c[1]/2]),v.createOrUpdate(this,"_doDispatchAxisPointer",r.get("throttle")||0,"fixRate"),this._moveHandleToValue(t,o)}},_moveHandleToValue:function(t,e){r(this._axisPointerModel,!e&&this._moveAnimation,this._handle,s(this.getHandleTransform(t,this._axisModel,this._axisPointerModel)))},_onHandleDragMove:function(t,e){var n=this._handle;if(n){this._dragging=!0;var i=this.updateHandleTransform(s(n),[t,e],this._axisModel,this._axisPointerModel);this._payloadInfo=i,n.stopAnimation(),n.attr(s(i)),d(n).lastProp=null,this._doDispatchAxisPointer()}},_doDispatchAxisPointer:function(){var t=this._handle;if(t){var e=this._payloadInfo,n={type:"updateAxisPointer",x:e.cursorPoint[0],y:e.cursorPoint[1],tooltipOption:e.tooltipOption,highDownKey:"axisPointerHandle"},i=this._axisModel.axis;n[i.dim+"AxisId"]=this._axisModel.id,this._api.dispatchAction(n)}},_onHandleDragEnd:function(t){this._dragging=!1;var e=this._handle;if(e){var n=this._axisPointerModel.get("value");this._moveHandleToValue(n),this._api.dispatchAction({type:"hideTip"})}},getHandleTransform:null,updateHandleTransform:null,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)},doClear:function(){},buildLabel:function(t,e,n){return n=n||0,{x:t[n],y:t[1-n],width:e[n],height:e[1-n]}}},i.prototype.constructor=i,c.enableClassExtend(i),t.exports=i},function(t,e,n){var i=n(1),r=n(5);t.exports=function(t,e){var n,a=[],o=t.seriesIndex;if(null==o||!(n=e.getSeriesByIndex(o)))return{point:[]};var s=n.getData(),l=r.queryDataIndex(s,t);if(null==l||i.isArray(l))return{point:[]};var h=s.getItemGraphicEl(l),u=n.coordinateSystem;if(n.getTooltipPosition)a=n.getTooltipPosition(l)||[];else if(u&&u.dataToPoint)a=u.dataToPoint(s.getValues(i.map(u.dimensions,function(t){return n.coordDimToDataDim(t)[0]}),l,!0))||[];else if(h){var c=h.getBoundingRect().clone();c.applyTransform(h.transform),a=[c.x+c.width/2,c.y+c.height/2]}return{point:a,el:h}}},function(t,e,n){function i(t,e){function n(n,i){t.on(n,function(n){var a=s(e);c(u(t).records,function(t){t&&i(t,n,a.dispatchAction)}),r(a.pendings,e)})}u(t).initialized||(u(t).initialized=!0,n("click",h.curry(o,"click")),n("mousemove",h.curry(o,"mousemove")),n("globalout",a))}function r(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))}function a(t,e,n){t.handler("leave",null,n)}function o(t,e,n,i){e.handler(t,n,i)}function s(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}}var l=n(9),h=n(1),u=n(5).makeGetter(),c=h.each,f={};f.register=function(t,e,n){if(!l.node){var r=e.getZr();u(r).records||(u(r).records={}),i(r,e);var a=u(r).records[t]||(u(r).records[t]={});a.handler=n}},f.unregister=function(t,e){if(!l.node){var n=e.getZr(),i=(u(n).records||{})[t];i&&(u(n).records[t]=null)}},t.exports=f},,function(t,e,n){var i=n(1);t.exports={updateSelectedMap:function(t){this._selectTargetMap=i.reduce(t||[],function(t,e){return t[e.name]=e,t},{})},select:function(t){var e=this._selectTargetMap,n=e[t],r=this.get("selectedMode");"single"===r&&i.each(e,function(t){t.selected=!1}),n&&(n.selected=!0)},unSelect:function(t){var e=this._selectTargetMap[t];e&&(e.selected=!1)},toggleSelected:function(t){var e=this._selectTargetMap[t];if(null!=e)return this[e.selected?"unSelect":"select"](t),e.selected},isSelected:function(t){var e=this._selectTargetMap[t];return e&&e.selected}}},,,,,function(t,e){t.exports=function(t,e){var n={};e.eachRawSeriesByType(t,function(t){var i=t.getRawData(),r={};if(!e.isSeriesFiltered(t)){var a=t.getData();a.each(function(t){var e=a.getRawIndex(t);r[e]=t}),i.each(function(e){var o=r[e],s=null!=o&&a.getItemVisual(o,"color",!0);if(s)i.setItemVisual(e,"color",s);else{var l=i.getItemModel(e),h=l.get("itemStyle.normal.color")||t.getColorFromPalette(i.getName(e),n);i.setItemVisual(e,"color",h),null!=o&&a.setItemVisual(o,"color",h)}})}})}},function(t,e,n){var i=n(6),r=n(21),a={},o=Math.min,s=Math.max,l=Math.sin,h=Math.cos,u=i.create(),c=i.create(),f=i.create(),d=2*Math.PI;a.fromPoints=function(t,e,n){if(0!==t.length){var i,r=t[0],a=r[0],l=r[0],h=r[1],u=r[1];for(i=1;i<t.length;i++)r=t[i],a=o(a,r[0]),l=s(l,r[0]),h=o(h,r[1]),u=s(u,r[1]);e[0]=a,e[1]=h,n[0]=l,n[1]=u}},a.fromLine=function(t,e,n,i,r,a){r[0]=o(t,n),r[1]=o(e,i),a[0]=s(t,n),a[1]=s(e,i)};var p=[],g=[];a.fromCubic=function(t,e,n,i,a,l,h,u,c,f){var d,v=r.cubicExtrema,m=r.cubicAt,y=v(t,n,a,h,p);for(c[0]=1/0,c[1]=1/0,f[0]=-(1/0),f[1]=-(1/0),d=0;d<y;d++){var x=m(t,n,a,h,p[d]);c[0]=o(x,c[0]),f[0]=s(x,f[0])}for(y=v(e,i,l,u,g),d=0;d<y;d++){var _=m(e,i,l,u,g[d]);c[1]=o(_,c[1]),f[1]=s(_,f[1])}c[0]=o(t,c[0]),f[0]=s(t,f[0]),c[0]=o(h,c[0]),f[0]=s(h,f[0]),c[1]=o(e,c[1]),f[1]=s(e,f[1]),c[1]=o(u,c[1]),f[1]=s(u,f[1])},a.fromQuadratic=function(t,e,n,i,a,l,h,u){var c=r.quadraticExtremum,f=r.quadraticAt,d=s(o(c(t,n,a),1),0),p=s(o(c(e,i,l),1),0),g=f(t,n,a,d),v=f(e,i,l,p);h[0]=o(t,a,g),h[1]=o(e,l,v),u[0]=s(t,a,g),u[1]=s(e,l,v)},a.fromArc=function(t,e,n,r,a,o,s,p,g){var v=i.min,m=i.max,y=Math.abs(a-o);if(y%d<1e-4&&y>1e-4)return p[0]=t-n,p[1]=e-r,g[0]=t+n,void(g[1]=e+r);if(u[0]=h(a)*n+t,u[1]=l(a)*r+e,c[0]=h(o)*n+t,c[1]=l(o)*r+e,v(p,u,c),m(g,u,c),a%=d,a<0&&(a+=d),o%=d,o<0&&(o+=d),a>o&&!s?o+=d:a<o&&s&&(a+=d),s){var x=o;o=a,a=x}for(var _=0;_<o;_+=Math.PI/2)_>a&&(f[0]=h(_)*n+t,f[1]=l(_)*r+e,v(p,f,p),m(g,f,g))},t.exports=a},function(t,e,n){var i=n(40),r=n(1),a=n(16),o=function(t){i.call(this,t)};o.prototype={constructor:o,type:"text",brush:function(t,e){var n=this.style,i=n.x||0,r=n.y||0,o=n.text;if(null!=o&&(o+=""),n.bind(t,this,e),o){this.setTransform(t);var s,l=n.textAlign,h=n.textFont||n.font;if(n.textVerticalAlign){var u=a.getBoundingRect(o,h,n.textAlign,"top");switch(s="middle",n.textVerticalAlign){case"middle":r-=u.height/2-u.lineHeight/2;break;case"bottom":r-=u.height-u.lineHeight/2;break;default:r+=u.lineHeight/2}}else s=n.textBaseline;t.font=h||"12px sans-serif",t.textAlign=l||"left",t.textAlign!==l&&(t.textAlign="left"),t.textBaseline=s||"alphabetic",t.textBaseline!==s&&(t.textBaseline="alphabetic");for(var c=a.measureText("国",t.font).width,f=o.split("\n"),d=0;d<f.length;d++)n.hasStroke()&&t.strokeText(f[d],i,r),n.hasFill()&&t.fillText(f[d],i,r),r+=c;this.restoreTransform(t)}},getBoundingRect:function(){var t=this.style;if(!this._rect){var e=t.textVerticalAlign,n=a.getBoundingRect(t.text+"",t.textFont||t.font,t.textAlign,e?"top":t.textBaseline);switch(e){case"middle":n.y-=n.height/2;break;case"bottom":n.y-=n.height}if(n.x+=t.x||0,n.y+=t.y||0,t.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}},r.inherits(o,i),t.exports=o},function(t,e,n){function i(t,e){return"string"==typeof t?t.lastIndexOf("%")>=0?parseFloat(t)/100*e:parseFloat(t):t}var r=n(16),a=n(11),o=new a,s=function(){};s.prototype={constructor:s,drawRectText:function(t,e,n){var a=this.style,s=a.text;if(null!=s&&(s+=""),s){t.save();var l,h,u=a.textPosition,c=a.textOffset,f=a.textDistance,d=a.textAlign,p=a.textFont||a.font,g=a.textBaseline,v=a.textVerticalAlign;n=n||r.getBoundingRect(s,p,d,g);var m=this.transform;if(a.textTransform?this.setTransform(t):m&&(o.copy(e),o.applyTransform(m),e=o),u instanceof Array){if(l=e.x+i(u[0],e.width),h=e.y+i(u[1],e.height),d=d||"left",g=g||"top",v){switch(v){case"middle":h-=n.height/2-n.lineHeight/2;break;case"bottom":h-=n.height-n.lineHeight/2;break;default:h+=n.lineHeight/2}g="middle"}}else{var y=r.adjustTextPositionOnRect(u,e,n,f);l=y.x,h=y.y,d=d||y.textAlign,g=g||y.textBaseline}c&&(l+=c[0],h+=c[1]),t.textAlign=d||"left",t.textBaseline=g||"alphabetic";var x=a.textFill,_=a.textStroke;x&&(t.fillStyle=x),_&&(t.strokeStyle=_),t.font=p||"12px sans-serif",t.shadowBlur=a.textShadowBlur,t.shadowColor=a.textShadowColor||"transparent",t.shadowOffsetX=a.textShadowOffsetX,t.shadowOffsetY=a.textShadowOffsetY;var b=s.split("\n");a.textRotation&&(m&&t.translate(m[4],m[5]),t.rotate(a.textRotation),m&&t.translate(-m[4],-m[5]));for(var w=0;w<b.length;w++)_&&t.strokeText(b[w],l,h),x&&t.fillText(b[w],l,h),h+=n.lineHeight;t.restore()}}},t.exports=s},function(t,e,n){function i(t){delete d[t]}/*!
 	 * ZRender, a high performance 2d drawing library.
 	 *
 	 * Copyright (c) 2013, Baidu Inc.
@@ -19,7 +20,7 @@
 	 * LICENSE
 	 * https://github.com/ecomfe/zrender/blob/master/LICENSE.txt
 	 */
-var r=n(64),a=n(10),o=n(1),s=n(140),l=n(143),h=n(144),u=n(152),c=!a.canvasSupported,f={canvas:n(142)},d={},p={};p.version="3.3.0",p.init=function(t,e){var n=new g(r(),t,e);return d[n.id]=n,n},p.dispose=function(t){if(t)t.dispose();else{for(var e in d)d.hasOwnProperty(e)&&d[e].dispose();d={}}return p},p.getInstance=function(t){return d[t]},p.registerPainter=function(t,e){f[t]=e};var g=function(t,e,n){n=n||{},this.dom=e,this.id=t;var i=this,r=new l,d=n.renderer;if(c){if(!f.vml)throw new Error("You need to require 'zrender/vml/vml' to support IE8");d="vml"}else d&&f[d]||(d="canvas");var p=new f[d](e,r,n);this.storage=r,this.painter=p;var g=a.node?null:new u(p.getViewportRoot());this.handler=new s(r,p,g,p.root),this.animation=new h({stage:{update:o.bind(this.flush,this)}}),this.animation.start(),this._needsRefresh;var v=r.delFromMap,m=r.addToMap;r.delFromMap=function(t){var e=r.get(t);v.call(r,t),e&&e.removeSelfFromZr(i)},r.addToMap=function(t){m.call(r,t),t.addSelfToZr(i)}};g.prototype={constructor:g,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(t,e),this._needsRefresh=!0},refreshImmediately:function(){this._needsRefresh=!1,this.painter.refresh(),this._needsRefresh=!1},refresh:function(){this._needsRefresh=!0},flush:function(){this._needsRefresh&&this.refreshImmediately(),this._needsRefreshHover&&this.refreshHoverImmediately()},addHover:function(t,e){this.painter.addHover&&(this.painter.addHover(t,e),this.refreshHover())},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,n){var i=r();return this.painter.pathToImage(i,t,e,n)},setCursorStyle:function(t){this.handler.setCursorStyle(t)},on:function(t,e,n){this.handler.on(t,e,n)},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,i(this.id)}},t.exports=p},function(t,e,n){var i=n(2),r=n(1);t.exports=function(t,e){r.each(e,function(e){e.update="updateView",i.registerAction(e,function(n,i){var r={};return i.eachComponent({mainType:"series",subType:t,query:n},function(t){t[e.method]&&t[e.method](n.name);var i=t.getData();i.each(function(e){var n=i.getName(e);r[n]=t.isSelected(n)||!1})}),{name:n.name,selected:r}})})}},function(t,e,n){"use strict";var i=n(16),r=n(35);t.exports=i.extend({type:"series.__base_bar__",getInitialData:function(t,e){return r(t.data,this,e)},getMarkerPosition:function(t){var e=this.coordinateSystem;if(e){var n=e.dataToPoint(t,!0),i=this.getData(),r=i.getLayout("offset"),a=i.getLayout("size"),o=e.getBaseAxis().isHorizontal()?0:1;return n[o]+=r+a/2,n}return[NaN,NaN]},defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,barMinHeight:0,itemStyle:{normal:{},emphasis:{}}}})},function(t,e,n){function i(t,e,n,i,r){a.setText(t,e,n),t.text=i,"outside"===t.textPosition&&(t.textPosition=r)}var r=n(1),a=n(3),o={};o.setLabel=function(t,e,n,a,o,s,l){var h=n.getModel("label.normal"),u=n.getModel("label.emphasis");h.get("show")?i(t,h,a,r.retrieve(o.getFormattedLabel(s,"normal"),o.getRawValue(s)),l):t.text="",u.get("show")?i(e,u,a,r.retrieve(o.getFormattedLabel(s,"emphasis"),o.getRawValue(s)),l):e.text=""},t.exports=o},function(t,e,n){function i(t){return isNaN(t[0])||isNaN(t[1])}function r(t,e,n,r,a,o,g,v,m,y,x){for(var _=0,b=n,w=0;w<r;w++){var M=e[b];if(b>=a||b<0)break;if(i(M)){if(x){b+=o;continue}break}if(b===n)t[o>0?"moveTo":"lineTo"](M[0],M[1]),c(d,M);else if(m>0){var T=b+o,S=e[T];if(x)for(;S&&i(e[T]);)T+=o,S=e[T];var A=.5,I=e[_],S=e[T];if(!S||i(S))c(p,M);else{i(S)&&!x&&(S=M),s.sub(f,S,I);var C,L;if("x"===y||"y"===y){var k="x"===y?0:1;C=Math.abs(M[k]-I[k]),L=Math.abs(M[k]-S[k])}else C=s.dist(M,I),L=s.dist(M,S);A=L/(L+C),u(p,M,f,-m*(1-A))}l(d,d,v),h(d,d,g),l(p,p,v),h(p,p,g),t.bezierCurveTo(d[0],d[1],p[0],p[1],M[0],M[1]),u(d,M,f,m*A)}else t.lineTo(M[0],M[1]);_=b,b+=o}return w}function a(t,e){var n=[1/0,1/0],i=[-(1/0),-(1/0)];if(e)for(var r=0;r<t.length;r++){var a=t[r];a[0]<n[0]&&(n[0]=a[0]),a[1]<n[1]&&(n[1]=a[1]),a[0]>i[0]&&(i[0]=a[0]),a[1]>i[1]&&(i[1]=a[1])}return{min:e?n:i,max:e?i:n}}var o=n(7),s=n(5),l=s.min,h=s.max,u=s.scaleAndAdd,c=s.copy,f=[],d=[],p=[];t.exports={Polyline:o.extend({type:"ec-polyline",shape:{points:[],smooth:0,smoothConstraint:!0,smoothMonotone:null,connectNulls:!1},style:{fill:null,stroke:"#000"},buildPath:function(t,e){var n=e.points,o=0,s=n.length,l=a(n,e.smoothConstraint);if(e.connectNulls){for(;s>0&&i(n[s-1]);s--);for(;o<s&&i(n[o]);o++);}for(;o<s;)o+=r(t,n,o,s,s,1,l.min,l.max,e.smooth,e.smoothMonotone,e.connectNulls)+1}}),Polygon:o.extend({type:"ec-polygon",shape:{points:[],stackedOnPoints:[],smooth:0,stackedOnSmooth:0,smoothConstraint:!0,smoothMonotone:null,connectNulls:!1},buildPath:function(t,e){var n=e.points,o=e.stackedOnPoints,s=0,l=n.length,h=e.smoothMonotone,u=a(n,e.smoothConstraint),c=a(o,e.smoothConstraint);if(e.connectNulls){for(;l>0&&i(n[l-1]);l--);for(;s<l&&i(n[s]);s++);}for(;s<l;){var f=r(t,n,s,l,l,1,u.min,u.max,e.smooth,h,e.connectNulls);r(t,o,s+f-1,f,l,-1,c.min,c.max,e.stackedOnSmooth,h,e.connectNulls),s+=f+1,t.closePath()}}})}},,,,function(t,e,n){var i=n(1),r={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},axisLine:{show:!0,onZero:!0,lineStyle:{color:"#333",width:1,type:"solid"}},axisTick:{show:!0,inside:!1,length:5,lineStyle:{width:1}},axisLabel:{show:!0,inside:!1,rotate:0,margin:8,textStyle:{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)"]}}},a=i.merge({boundaryGap:!0,splitLine:{show:!1},axisTick:{alignWithLabel:!1,interval:"auto"},axisLabel:{interval:"auto"}},r),o=i.merge({boundaryGap:[0,0],splitNumber:5},r),s=i.defaults({scale:!0,min:"dataMin",max:"dataMax"},o),l=i.defaults({logBase:10},o);l.scale=!0,t.exports={categoryAxis:a,valueAxis:o,timeAxis:s,logAxis:l}},function(t,e,n){"use strict";function i(t){return t.get("stack")||"__ec_stack_"+t.seriesIndex}function r(t){return t.dim+t.index}function a(t,e){var n={};s.each(t,function(t,e){var a=t.getData(),o=t.coordinateSystem,s=o.getBaseAxis(),l=s.getExtent(),u="category"===s.type?s.getBandWidth():Math.abs(l[1]-l[0])/a.count(),c=n[r(s)]||{bandWidth:u,remainedWidth:u,autoWidthCount:0,categoryGap:"20%",gap:"30%",stacks:{}},f=c.stacks;n[r(s)]=c;var d=i(t);f[d]||c.autoWidthCount++,f[d]=f[d]||{width:0,maxWidth:0};var p=h(t.get("barWidth"),u),g=h(t.get("barMaxWidth"),u),v=t.get("barGap"),m=t.get("barCategoryGap");p&&!f[d].width&&(p=Math.min(c.remainedWidth,p),f[d].width=p,c.remainedWidth-=p),g&&(f[d].maxWidth=g),null!=v&&(c.gap=v),null!=m&&(c.categoryGap=m)});var a={};return s.each(n,function(t,e){a[e]={};var n=t.stacks,i=t.bandWidth,r=h(t.categoryGap,i),o=h(t.gap,1),l=t.remainedWidth,u=t.autoWidthCount,c=(l-r)/(u+(u-1)*o);c=Math.max(c,0),s.each(n,function(t,e){var n=t.maxWidth;!t.width&&n&&n<c&&(n=Math.min(n,l),l-=n,t.width=n,u--)}),c=(l-r)/(u+(u-1)*o),c=Math.max(c,0);var f,d=0;s.each(n,function(t,e){t.width||(t.width=c),f=t,d+=t.width*(1+o)}),f&&(d-=f.width*o);var p=-d/2;s.each(n,function(t,n){a[e][n]=a[e][n]||{offset:p,width:t.width},p+=t.width*(1+o)})}),a}function o(t,e,n){var o=a(s.filter(e.getSeriesByType(t),function(t){return!e.isSeriesFiltered(t)&&t.coordinateSystem&&"cartesian2d"===t.coordinateSystem.type})),l={},h={};e.eachSeriesByType(t,function(t){var e=t.getData(),n=t.coordinateSystem,a=n.getBaseAxis(),s=i(t),u=o[r(a)][s],c=u.offset,f=u.width,d=n.getOtherAxis(a),p=t.get("barMinHeight")||0,g=a.onZero?d.toGlobalCoord(d.dataToCoord(0)):d.getGlobalExtent()[0],v=n.dataToPoints(e,!0);l[s]=l[s]||[],h[s]=h[s]||[],e.setLayout({offset:c,size:f}),e.each(d.dim,function(t,n){if(!isNaN(t)){l[s][n]||(l[s][n]={p:g,n:g},h[s][n]={p:g,n:g});var i,r,a,o,u=t>=0?"p":"n",m=v[n],y=l[s][n][u],x=h[s][n][u];d.isHorizontal()?(i=y,r=m[1]+c,a=m[0]-x,o=f,h[s][n][u]+=a,Math.abs(a)<p&&(a=(a<0?-1:1)*p),l[s][n][u]+=a):(i=m[0]+c,r=y,a=f,o=m[1]-x,h[s][n][u]+=o,Math.abs(o)<p&&(o=(o<=0?-1:1)*p),l[s][n][u]+=o),e.setItemLayout(n,{x:i,y:r,width:a,height:o})}},!0)},this)}var s=n(1),l=n(4),h=l.parsePercent;t.exports=o},function(t,e){t.exports={containStroke:function(t,e,n,i,r,a,o){if(0===r)return!1;var s=r,l=0,h=t;if(o>e+s&&o>i+s||o<e-s&&o<i-s||a>t+s&&a>n+s||a<t-s&&a<n-s)return!1;if(t===n)return Math.abs(a-t)<=s/2;l=(e-i)/(t-n),h=(t*i-n*e)/(t-n);var u=l*a-o+h,c=u*u/(l*l+1);return c<=s/2*s/2}}},function(t,e,n){var i=n(18);t.exports={containStroke:function(t,e,n,r,a,o,s,l,h){if(0===s)return!1;var u=s;if(h>e+u&&h>r+u&&h>o+u||h<e-u&&h<r-u&&h<o-u||l>t+u&&l>n+u&&l>a+u||l<t-u&&l<n-u&&l<a-u)return!1;var c=i.quadraticProjectPoint(t,e,n,r,a,o,l,h,null);return c<=u/2}}},function(t,e){t.exports=function(t,e,n,i,r,a){if(a>e&&a>i||a<e&&a<i)return 0;if(i===e)return 0;var o=i<e?1:-1,s=(a-e)/(i-e);1!==s&&0!==s||(o=i<e?.5:-.5);var l=s*(n-t)+t;return l>r?o:0}},function(t,e,n){"use strict";var i=n(1),r=n(37),a=function(t,e,n,i,a,o){this.x=null==t?0:t,this.y=null==e?0:e,this.x2=null==n?1:n,this.y2=null==i?0:i,this.type="linear",this.global=o||!1,r.call(this,a)};a.prototype={constructor:a},i.inherits(a,r),t.exports=a},function(t,e,n){"use strict";function i(t){return t>s||t<-s}var r=n(20),a=n(5),o=r.identity,s=5e-5,l=function(t){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},h=l.prototype;h.transform=null,h.needLocalTransform=function(){return i(this.rotation)||i(this.position[0])||i(this.position[1])||i(this.scale[0]-1)||i(this.scale[1]-1)},h.updateTransform=function(){var t=this.parent,e=t&&t.transform,n=this.needLocalTransform(),i=this.transform;return n||e?(i=i||r.create(),n?this.getLocalTransform(i):o(i),e&&(n?r.mul(i,t.transform,i):r.copy(i,t.transform)),this.transform=i,this.invTransform=this.invTransform||r.create(),void r.invert(this.invTransform,i)):void(i&&o(i))},h.getLocalTransform=function(t){t=t||[],o(t);var e=this.origin,n=this.scale,i=this.rotation,a=this.position;return e&&(t[4]-=e[0],t[5]-=e[1]),r.scale(t,t,n),i&&r.rotate(t,t,i),e&&(t[4]+=e[0],t[5]+=e[1]),t[4]+=a[0],t[5]+=a[1],t},h.setTransform=function(t){var e=this.transform,n=t.dpr||1;e?t.setTransform(n*e[0],n*e[1],n*e[2],n*e[3],n*e[4],n*e[5]):t.setTransform(n,0,0,n,0,0)},h.restoreTransform=function(t){var e=(this.transform,t.dpr||1);t.setTransform(e,0,0,e,0,0)};var u=[];h.decomposeTransform=function(){if(this.transform){var t=this.parent,e=this.transform;t&&t.transform&&(r.mul(u,t.invTransform,e),e=u);var n=e[0]*e[0]+e[1]*e[1],a=e[2]*e[2]+e[3]*e[3],o=this.position,s=this.scale;i(n-1)&&(n=Math.sqrt(n)),i(a-1)&&(a=Math.sqrt(a)),e[0]<0&&(n=-n),e[3]<0&&(a=-a),o[0]=e[4],o[1]=e[5],s[0]=n,s[1]=a,this.rotation=Math.atan2(-e[1]/a,e[0]/n)}},h.getGlobalScale=function(){var t=this.transform;if(!t)return[1,1];var e=Math.sqrt(t[0]*t[0]+t[1]*t[1]),n=Math.sqrt(t[2]*t[2]+t[3]*t[3]);return t[0]<0&&(e=-e),t[3]<0&&(n=-n),[e,n]},h.transformCoordToLocal=function(t,e){var n=[t,e],i=this.invTransform;return i&&a.applyTransform(n,n,i),n},h.transformCoordToGlobal=function(t,e){var n=[t,e],i=this.transform;return i&&a.applyTransform(n,n,i),n},t.exports=l},function(t,e,n){"use strict";function i(t){r.each(a,function(e){this[e]=r.bind(t[e],t)},this)}var r=n(1),a=["getDom","getZr","getWidth","getHeight","dispatchAction","isDisposed","on","off","getDataURL","getConnectedDataURL","getModel","getOption"];t.exports=i},function(t,e,n){var i=n(1);n(53),n(95),n(96);var r=n(87),a=n(2);a.registerLayout(i.curry(r,"bar")),a.registerVisual(function(t){t.eachSeriesByType("bar",function(t){var e=t.getData();e.setVisual("legendSymbol","roundRect")})}),n(31)},function(t,e,n){t.exports=n(80).extend({type:"series.bar",dependencies:["grid","polar"],brushSelector:"rect"})},function(t,e,n){"use strict";function i(t,e,n,i,r,a,o){var s=new h.Rect({shape:l.extend({},i)});if(a){var u=s.shape,c=r?"height":"width",f={};u[c]=0,f[c]=i[c],h[o?"updateProps":"initProps"](s,{shape:f},a,e)}return s}function r(t,e,n){n.style.text="",h.updateProps(n,{shape:{width:0}},e,t,function(){n.parent&&n.parent.remove(n)})}function a(t,e,n){var i=t.getItemLayout(e),r=s(n,i),a=i.width>0?1:-1,o=i.height>0?1:-1;return{x:i.x+a*r/2,y:i.y+o*r/2,width:i.width-a*r,height:i.height-o*r}}function o(t,e,n,i,r,a,o){var s=e.getItemVisual(n,"color"),c=e.getItemVisual(n,"opacity"),f=i.getModel("itemStyle.normal"),d=i.getModel("itemStyle.emphasis").getBarItemStyle();t.setShape("r",f.get("barBorderRadius")||0),t.useStyle(l.defaults({fill:s,opacity:c},f.getBarItemStyle()));var p=o?r.height>0?"bottom":"top":r.width>0?"left":"right";u.setLabel(t.style,d,i,s,a,n,p),h.setHoverStyle(t,d)}function s(t,e){var n=t.get(c)||0;return Math.min(n,Math.abs(e.width),Math.abs(e.height))}var l=n(1),h=n(3),u=n(81),c=["itemStyle","normal","barBorderWidth"];l.extend(n(11).prototype,n(97));var f=n(2).extendChartView({type:"bar",render:function(t,e,n){var i=t.get("coordinateSystem");return"cartesian2d"===i&&this._renderOnCartesian(t,e,n),this.group},dispose:l.noop,_renderOnCartesian:function(t,e,n){var s=this.group,l=t.getData(),u=this._data,c=t.coordinateSystem,f=c.getBaseAxis(),d=f.isHorizontal(),p=t.isAnimationEnabled()?t:null;l.diff(u).add(function(e){if(l.hasValue(e)){var n=l.getItemModel(e),r=a(l,e,n),h=i(l,e,n,r,d,p);l.setItemGraphicEl(e,h),s.add(h),o(h,l,e,n,r,t,d)}}).update(function(e,n){var r=u.getItemGraphicEl(n);if(!l.hasValue(e))return void s.remove(r);var c=l.getItemModel(e),f=a(l,e,c);r?h.updateProps(r,{shape:f},p,e):r=i(l,e,c,f,d,p,!0),l.setItemGraphicEl(e,r),s.add(r),o(r,l,e,c,f,t,d)}).remove(function(t){var e=u.getItemGraphicEl(t);e&&r(t,p,e)}).execute(),this._data=l},remove:function(t,e){var n=this.group,i=this._data;t.get("animation")?i&&i.eachItemGraphicEl(function(e){r(e.dataIndex,t,e)}):n.removeAll()}});t.exports=f},function(t,e,n){var i=n(30)([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["stroke","barBorderColor"],["lineWidth","barBorderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]);t.exports={getBarItemStyle:function(t){var e=i.call(this,t);if(this.getBorderLineDash){var n=this.getBorderLineDash();n&&(e.lineDash=n)}return e}}},,,function(t,e,n){var i=n(1),r=n(2),a=r.PRIORITY;n(101),n(102),r.registerVisual(i.curry(n(45),"line","circle","line")),r.registerLayout(i.curry(n(56),"line")),r.registerProcessor(a.PROCESSOR.STATISTIC,i.curry(n(135),"line")),n(31)},function(t,e,n){"use strict";var i=n(35),r=n(16);t.exports=r.extend({type:"series.line",dependencies:["grid","polar"],getInitialData:function(t,e){return i(t.data,this,e)},defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,hoverAnimation:!0,clipOverflow:!0,label:{normal:{position:"top"}},lineStyle:{normal:{width:2,type:"solid"}},step:!1,smooth:!1,smoothMonotone:null,symbol:"emptyCircle",symbolSize:4,symbolRotate:null,showSymbol:!0,showAllSymbol:!1,connectNulls:!1,sampling:"none",animationEasing:"linear",progressive:0,hoverLayerThreshold:1/0}})},function(t,e,n){"use strict";function i(t,e){if(t.length===e.length){for(var n=0;n<t.length;n++){var i=t[n],r=e[n];if(i[0]!==r[0]||i[1]!==r[1])return}return!0}}function r(t){return"number"==typeof t?t:t?.3:0}function a(t){var e=t.getGlobalExtent();if(t.onBand){var n=t.getBandWidth()/2-1,i=e[1]>e[0]?1:-1;e[0]+=i*n,e[1]-=i*n}return e}function o(t){return t>=0?1:-1}function s(t,e){var n=t.getBaseAxis(),i=t.getOtherAxis(n),r=n.onZero?0:i.scale.getExtent()[0],a=i.dim,s="x"===a||"radius"===a?1:0;return e.mapArray([a],function(i,l){for(var h,u=e.stackedOn;u&&o(u.get(a,l))===o(i);){h=u;break}var c=[];return c[s]=e.get(n.dim,l),c[1-s]=h?h.get(a,l,!0):r,t.dataToPoint(c)},!0)}function l(t,e,n){var i=a(t.getAxis("x")),r=a(t.getAxis("y")),o=t.getBaseAxis().isHorizontal(),s=Math.min(i[0],i[1]),l=Math.min(r[0],r[1]),h=Math.max(i[0],i[1])-s,u=Math.max(r[0],r[1])-l,c=n.get("lineStyle.normal.width")||2,f=n.get("clipOverflow")?c/2:Math.max(h,u);o?(l-=f,u+=2*f):(s-=f,h+=2*f);var d=new m.Rect({shape:{x:s,y:l,width:h,height:u}});return e&&(d.shape[o?"width":"height"]=0,m.initProps(d,{shape:{width:h,height:u}},n)),d}function h(t,e,n){var i=t.getAngleAxis(),r=t.getRadiusAxis(),a=r.getExtent(),o=i.getExtent(),s=Math.PI/180,l=new m.Sector({shape:{cx:t.cx,cy:t.cy,r0:a[0],r:a[1],startAngle:-o[0]*s,endAngle:-o[1]*s,clockwise:i.inverse}});return e&&(l.shape.endAngle=-o[0]*s,m.initProps(l,{shape:{endAngle:-o[1]*s}},n)),l}function u(t,e,n){return"polar"===t.type?h(t,e,n):l(t,e,n)}function c(t,e,n){for(var i=e.getBaseAxis(),r="x"===i.dim||"radius"===i.dim?0:1,a=[],o=0;o<t.length-1;o++){var s=t[o+1],l=t[o];a.push(l);var h=[];switch(n){case"end":h[r]=s[r],h[1-r]=l[1-r],a.push(h);break;case"middle":var u=(l[r]+s[r])/2,c=[];h[r]=c[r]=u,h[1-r]=l[1-r],c[1-r]=s[1-r],a.push(h),a.push(c);break;default:h[r]=l[r],h[1-r]=s[1-r],a.push(h)}}return t[o]&&a.push(t[o]),a}function f(t,e){var n=t.getVisual("visualMeta");if(n&&n.length&&t.count()){for(var i,r=n.length-1;r>=0;r--)if(n[r].dimension<2){i=n[r];break}if(i&&"cartesian2d"===e.type){var a=i.dimension,o=t.dimensions[a],s=e.getAxis(o),l=d.map(i.stops,function(t){return{coord:s.toGlobalCoord(s.dataToCoord(t.value)),color:t.color}}),h=l.length,u=i.outerColors.slice();h&&l[0].coord>l[h-1].coord&&(l.reverse(),u.reverse());var c=10,f=l[0].coord-c,p=l[h-1].coord+c,g=p-f;if(g<.001)return"transparent";d.each(l,function(t){t.offset=(t.coord-f)/g}),l.push({offset:h?l[h-1].offset:.5,color:u[1]||"transparent"}),l.unshift({offset:h?l[0].offset:.5,color:u[0]||"transparent"});var v=new m.LinearGradient(0,0,0,0,l,(!0));return v[o]=f,v[o+"2"]=p,v}}}var d=n(1),p=n(39),g=n(50),v=n(103),m=n(3),y=n(6),x=n(82),_=n(28);t.exports=_.extend({type:"line",init:function(){var t=new m.Group,e=new p;this.group.add(e.group),this._symbolDraw=e,this._lineGroup=t},render:function(t,e,n){var a=t.coordinateSystem,o=this.group,l=t.getData(),h=t.getModel("lineStyle.normal"),p=t.getModel("areaStyle.normal"),g=l.mapArray(l.getItemLayout,!0),v="polar"===a.type,m=this._coordSys,y=this._symbolDraw,x=this._polyline,_=this._polygon,b=this._lineGroup,w=t.get("animation"),M=!p.isEmpty(),T=s(a,l),S=t.get("showSymbol"),A=S&&!v&&!t.get("showAllSymbol")&&this._getSymbolIgnoreFunc(l,a),I=this._data;I&&I.eachItemGraphicEl(function(t,e){t.__temp&&(o.remove(t),I.setItemGraphicEl(e,null))}),S||y.remove(),o.add(b);var C=!v&&t.get("step");x&&m.type===a.type&&C===this._step?(M&&!_?_=this._newPolygon(g,T,a,w):_&&!M&&(b.remove(_),_=this._polygon=null),b.setClipPath(u(a,!1,t)),S&&y.updateData(l,A),l.eachItemGraphicEl(function(t){t.stopAnimation(!0)}),i(this._stackedOnPoints,T)&&i(this._points,g)||(w?this._updateAnimation(l,T,a,n,C):(C&&(g=c(g,a,C),T=c(T,a,C)),x.setShape({points:g}),_&&_.setShape({points:g,stackedOnPoints:T})))):(S&&y.updateData(l,A),C&&(g=c(g,a,C),T=c(T,a,C)),x=this._newPolyline(g,a,w),M&&(_=this._newPolygon(g,T,a,w)),b.setClipPath(u(a,!0,t)));var L=f(l,a)||l.getVisual("color");x.useStyle(d.defaults(h.getLineStyle(),{fill:"none",stroke:L,lineJoin:"bevel"}));var k=t.get("smooth");if(k=r(t.get("smooth")),x.setShape({smooth:k,smoothMonotone:t.get("smoothMonotone"),connectNulls:t.get("connectNulls")}),_){var P=l.stackedOn,D=0;if(_.useStyle(d.defaults(p.getAreaStyle(),{fill:L,opacity:.7,lineJoin:"bevel"})),P){var O=P.hostModel;D=r(O.get("smooth"))}_.setShape({smooth:k,stackedOnSmooth:D,smoothMonotone:t.get("smoothMonotone"),connectNulls:t.get("connectNulls")})}this._data=l,this._coordSys=a,this._stackedOnPoints=T,this._points=g,this._step=C},dispose:function(){},highlight:function(t,e,n,i){var r=t.getData(),a=y.queryDataIndex(r,i);if(!(a instanceof Array)&&null!=a&&a>=0){var o=r.getItemGraphicEl(a);if(!o){var s=r.getItemLayout(a);if(!s)return;o=new g(r,a),o.position=s,o.setZ(t.get("zlevel"),t.get("z")),o.ignore=isNaN(s[0])||isNaN(s[1]),o.__temp=!0,r.setItemGraphicEl(a,o),o.stopSymbolAnimation(!0),this.group.add(o)}o.highlight()}else _.prototype.highlight.call(this,t,e,n,i)},downplay:function(t,e,n,i){var r=t.getData(),a=y.queryDataIndex(r,i);if(null!=a&&a>=0){var o=r.getItemGraphicEl(a);o&&(o.__temp?(r.setItemGraphicEl(a,null),this.group.remove(o)):o.downplay())}else _.prototype.downplay.call(this,t,e,n,i)},_newPolyline:function(t){var e=this._polyline;return e&&this._lineGroup.remove(e),e=new x.Polyline({shape:{points:t},silent:!0,z2:10}),this._lineGroup.add(e),this._polyline=e,e},_newPolygon:function(t,e){var n=this._polygon;return n&&this._lineGroup.remove(n),n=new x.Polygon({shape:{points:t,stackedOnPoints:e},silent:!0}),this._lineGroup.add(n),this._polygon=n,n},_getSymbolIgnoreFunc:function(t,e){var n=e.getAxesByScale("ordinal")[0];if(n&&n.isLabelIgnored)return d.bind(n.isLabelIgnored,n)},_updateAnimation:function(t,e,n,i,r){var a=this._polyline,o=this._polygon,s=t.hostModel,l=v(this._data,t,this._stackedOnPoints,e,this._coordSys,n),h=l.current,u=l.stackedOnCurrent,f=l.next,d=l.stackedOnNext;r&&(h=c(l.current,n,r),u=c(l.stackedOnCurrent,n,r),f=c(l.next,n,r),d=c(l.stackedOnNext,n,r)),a.shape.__points=l.current,a.shape.points=h,m.updateProps(a,{shape:{points:f}},s),o&&(o.setShape({points:h,stackedOnPoints:u}),m.updateProps(o,{shape:{points:f,stackedOnPoints:d}},s));for(var p=[],g=l.status,y=0;y<g.length;y++){var x=g[y].cmd;if("="===x){var _=t.getItemGraphicEl(g[y].idx1);_&&p.push({el:_,ptIdx:y})}}a.animators&&a.animators.length&&a.animators[0].during(function(){for(var t=0;t<p.length;t++){var e=p[t].el;e.attr("position",a.shape.__points[p[t].ptIdx])}})},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._data=null}})},function(t,e){function n(t){return t>=0?1:-1}function i(t,e,i){for(var r,a=t.getBaseAxis(),o=t.getOtherAxis(a),s=a.onZero?0:o.scale.getExtent()[0],l=o.dim,h="x"===l||"radius"===l?1:0,u=e.stackedOn,c=e.get(l,i);u&&n(u.get(l,i))===n(c);){r=u;break}var f=[];return f[h]=e.get(a.dim,i),f[1-h]=r?r.get(l,i,!0):s,t.dataToPoint(f)}function r(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.exports=function(t,e,n,a,o,s){for(var l=r(t,e),h=[],u=[],c=[],f=[],d=[],p=[],g=[],v=s.dimensions,m=0;m<l.length;m++){var y=l[m],x=!0;switch(y.cmd){case"=":var _=t.getItemLayout(y.idx),b=e.getItemLayout(y.idx1);(isNaN(_[0])||isNaN(_[1]))&&(_=b.slice()),h.push(_),u.push(b),c.push(n[y.idx]),f.push(a[y.idx1]),g.push(e.getRawIndex(y.idx1));break;case"+":var w=y.idx;h.push(o.dataToPoint([e.get(v[0],w,!0),e.get(v[1],w,!0)])),u.push(e.getItemLayout(w).slice()),c.push(i(o,e,w)),f.push(a[w]),g.push(e.getRawIndex(w));break;case"-":var w=y.idx,M=t.getRawIndex(w);M!==w?(h.push(t.getItemLayout(w)),u.push(s.dataToPoint([t.get(v[0],w,!0),t.get(v[1],w,!0)])),c.push(n[w]),f.push(i(s,t,w)),g.push(M)):x=!1}x&&(d.push(y),p.push(p.length))}p.sort(function(t,e){return g[t]-g[e]});for(var T=[],S=[],A=[],I=[],C=[],m=0;m<p.length;m++){var w=p[m];T[m]=h[w],S[m]=u[w],A[m]=c[w],I[m]=f[w],C[m]=d[w]}return{current:T,next:S,stackedOnCurrent:A,stackedOnNext:I,status:C}}},function(t,e,n){var i=n(1),r=n(2);n(105),n(106),n(79)("pie",[{type:"pieToggleSelect",event:"pieselectchanged",method:"toggleSelected"},{type:"pieSelect",event:"pieselected",method:"select"},{type:"pieUnSelect",event:"pieunselected",method:"unSelect"}]),r.registerVisual(i.curry(n(74),"pie")),r.registerLayout(i.curry(n(108),"pie")),r.registerProcessor(i.curry(n(58),"pie"))},function(t,e,n){"use strict";var i=n(14),r=n(1),a=n(6),o=n(27),s=n(69),l=n(2).extendSeriesModel({type:"series.pie",init:function(t){l.superApply(this,"init",arguments),this.legendDataProvider=function(){return this.getRawData()},this.updateSelectedMap(t.data),this._defaultLabelLine(t)},mergeOption:function(t){l.superCall(this,"mergeOption",t),this.updateSelectedMap(this.option.data)},getInitialData:function(t,e){var n=o(["value"],t.data),r=new i(n,this);return r.initData(t.data),r},getDataParams:function(t){var e=this.getData(),n=l.superCall(this,"getDataParams",t),i=e.getSum("value");return n.percent=i?+(e.get("value",t)/i*100).toFixed(2):0,n.$vars.push("percent"),n},_defaultLabelLine:function(t){a.defaultEmphasis(t.labelLine,["show"]);var e=t.labelLine.normal,n=t.labelLine.emphasis;e.show=e.show&&t.label.normal.show,n.show=n.show&&t.label.emphasis.show},defaultOption:{zlevel:0,z:2,legendHoverLink:!0,hoverAnimation:!0,center:["50%","50%"],radius:[0,"75%"],clockwise:!0,startAngle:90,minAngle:0,selectedOffset:10,avoidLabelOverlap:!0,stillShowZeroSum:!0,label:{normal:{rotate:!1,show:!0,position:"outer"},emphasis:{}},labelLine:{normal:{show:!0,length:15,length2:15,smooth:!1,lineStyle:{width:1,type:"solid"}}},itemStyle:{normal:{borderWidth:1},emphasis:{}},animationType:"expansion",animationEasing:"cubicOut",data:[]}});r.mixin(l,s),t.exports=l},function(t,e,n){function i(t,e,n,i){var a=e.getData(),o=this.dataIndex,s=a.getName(o),l=e.get("selectedOffset");i.dispatchAction({type:"pieToggleSelect",from:t,name:s,seriesId:e.id}),a.each(function(t){r(a.getItemGraphicEl(t),a.getItemLayout(t),e.isSelected(a.getName(t)),l,n)})}function r(t,e,n,i,r){var a=(e.startAngle+e.endAngle)/2,o=Math.cos(a),s=Math.sin(a),l=n?i:0,h=[o*l,s*l];r?t.animate().when(200,{position:h}).start("bounceOut"):t.attr("position",h)}function a(t,e){function n(){a.ignore=a.hoverIgnore,o.ignore=o.hoverIgnore}function i(){a.ignore=a.normalIgnore,o.ignore=o.normalIgnore}s.Group.call(this);var r=new s.Sector({z2:2}),a=new s.Polyline,o=new s.Text;this.add(r),this.add(a),this.add(o),this.updateData(t,e,!0),this.on("emphasis",n).on("normal",i).on("mouseover",n).on("mouseout",i)}function o(t,e,n,i,r){var a=i.getModel("textStyle"),o="inside"===r||"inner"===r;return{fill:a.getTextColor()||(o?"#fff":t.getItemVisual(e,"color")),opacity:t.getItemVisual(e,"opacity"),textFont:a.getFont(),text:l.retrieve(t.hostModel.getFormattedLabel(e,n),t.getName(e))}}var s=n(3),l=n(1),h=a.prototype;h.updateData=function(t,e,n){function i(){o.stopAnimation(!0),o.animateTo({shape:{r:c.r+10}},300,"elasticOut")}function a(){o.stopAnimation(!0),o.animateTo({shape:{r:c.r}},300,"elasticOut")}var o=this.childAt(0),h=t.hostModel,u=t.getItemModel(e),c=t.getItemLayout(e),f=l.extend({},c);if(f.label=null,n){o.setShape(f);var d=h.getShallow("animationType");"scale"===d?(o.shape.r=c.r0,s.initProps(o,{shape:{r:c.r}},h,e)):(o.shape.endAngle=c.startAngle,s.updateProps(o,{shape:{endAngle:c.endAngle}},h,e))}else s.updateProps(o,{shape:f},h,e);var p=u.getModel("itemStyle"),g=t.getItemVisual(e,"color");o.useStyle(l.defaults({lineJoin:"bevel",fill:g},p.getModel("normal").getItemStyle())),o.hoverStyle=p.getModel("emphasis").getItemStyle(),r(this,t.getItemLayout(e),u.get("selected"),h.get("selectedOffset"),h.get("animation")),o.off("mouseover").off("mouseout").off("emphasis").off("normal"),u.get("hoverAnimation")&&h.isAnimationEnabled()&&o.on("mouseover",i).on("mouseout",a).on("emphasis",i).on("normal",a),this._updateLabel(t,e),s.setHoverStyle(this)},h._updateLabel=function(t,e){var n=this.childAt(1),i=this.childAt(2),r=t.hostModel,a=t.getItemModel(e),l=t.getItemLayout(e),h=l.label,u=t.getItemVisual(e,"color");s.updateProps(n,{shape:{points:h.linePoints||[[h.x,h.y],[h.x,h.y],[h.x,h.y]]}},r,e),s.updateProps(i,{style:{x:h.x,y:h.y}},r,e),i.attr({style:{textVerticalAlign:h.verticalAlign,textAlign:h.textAlign,textFont:h.font},rotation:h.rotation,origin:[h.x,h.y],z2:10});var c=a.getModel("label.normal"),f=a.getModel("label.emphasis"),d=a.getModel("labelLine.normal"),p=a.getModel("labelLine.emphasis"),g=c.get("position")||f.get("position");i.setStyle(o(t,e,"normal",c,g)),i.ignore=i.normalIgnore=!c.get("show"),i.hoverIgnore=!f.get("show"),n.ignore=n.normalIgnore=!d.get("show"),n.hoverIgnore=!p.get("show"),n.setStyle({stroke:u,opacity:t.getItemVisual(e,"opacity")}),n.setStyle(d.getModel("lineStyle").getLineStyle()),i.hoverStyle=o(t,e,"emphasis",f,g),n.hoverStyle=p.getModel("lineStyle").getLineStyle();var v=d.get("smooth");v&&v===!0&&(v=.4),n.setShape({smooth:v})},l.inherits(a,s.Group);var u=n(28).extend({type:"pie",init:function(){var t=new s.Group;this._sectorGroup=t},render:function(t,e,n,r){if(!r||r.from!==this.uid){var o=t.getData(),s=this._data,h=this.group,u=e.get("animation"),c=!s,f=t.get("animationType"),d=l.curry(i,this.uid,t,u,n),p=t.get("selectedMode");if(o.diff(s).add(function(t){var e=new a(o,t);c&&"scale"!==f&&e.eachChild(function(t){t.stopAnimation(!0)}),p&&e.on("click",d),o.setItemGraphicEl(t,e),h.add(e)}).update(function(t,e){var n=s.getItemGraphicEl(e);n.updateData(o,t),n.off("click"),p&&n.on("click",d),h.add(n),o.setItemGraphicEl(t,n)}).remove(function(t){var e=s.getItemGraphicEl(t);h.remove(e)}).execute(),u&&c&&o.count()>0&&"scale"!==f){var g=o.getItemLayout(0),v=Math.max(n.getWidth(),n.getHeight())/2,m=l.bind(h.removeClipPath,h);h.setClipPath(this._createClipPath(g.cx,g.cy,v,g.startAngle,g.clockwise,m,t))}this._data=o}},dispose:function(){},_createClipPath:function(t,e,n,i,r,a,o){var l=new s.Sector({shape:{cx:t,cy:e,r0:0,r:n,startAngle:i,endAngle:i,clockwise:r}});return s.initProps(l,{shape:{endAngle:i+(r?1:-1)*Math.PI*2}},o,a),l},containPoint:function(t,e){var n=e.getData(),i=n.getItemLayout(0);if(i){var r=t[0]-i.cx,a=t[1]-i.cy,o=Math.sqrt(r*r+a*a);return o<=i.r&&o>=i.r0}}});t.exports=u},function(t,e,n){"use strict";function i(t,e,n,i,r,a,o){function s(e,n,i,r){for(var a=e;a<n;a++)if(t[a].y+=i,a>e&&a+1<n&&t[a+1].y>t[a].y+t[a].height)return void l(a,i/2);l(n-1,i/2)}function l(e,n){for(var i=e;i>=0&&(t[i].y-=n,!(i>0&&t[i].y>t[i-1].y+t[i-1].height));i--);}function h(t,e,n,i,r,a){for(var o=a>0?e?Number.MAX_VALUE:0:e?Number.MAX_VALUE:0,s=0,l=t.length;s<l;s++)if("center"!==t[s].position){var h=Math.abs(t[s].y-i),u=t[s].len,c=t[s].len2,f=h<r+u?Math.sqrt((r+u+c)*(r+u+c)-h*h):Math.abs(t[s].x-n);e&&f>=o&&(f=o-10),!e&&f<=o&&(f=o+10),t[s].x=n+f*a,o=f}}t.sort(function(t,e){return t.y-e.y});for(var u,c=0,f=t.length,d=[],p=[],g=0;g<f;g++)u=t[g].y-c,u<0&&s(g,f,-u,r),c=t[g].y+t[g].height;o-c<0&&l(f-1,c-o);for(var g=0;g<f;g++)t[g].y>=n?p.push(t[g]):d.push(t[g]);h(d,!1,e,n,i,r),h(p,!0,e,n,i,r)}function r(t,e,n,r,a,o){for(var s=[],l=[],h=0;h<t.length;h++)t[h].x<e?s.push(t[h]):l.push(t[h]);i(l,e,n,r,1,a,o),i(s,e,n,r,-1,a,o);for(var h=0;h<t.length;h++){var u=t[h].linePoints;if(u){var c=u[1][0]-u[2][0];t[h].x<e?u[2][0]=t[h].x+3:u[2][0]=t[h].x-3,u[1][1]=u[2][1]=t[h].y,u[1][0]=u[2][0]+c}}}var a=n(17);t.exports=function(t,e,n,i){var o,s,l=t.getData(),h=[],u=!1;l.each(function(n){var i,r,c,f,d=l.getItemLayout(n),p=l.getItemModel(n),g=p.getModel("label.normal"),v=g.get("position")||p.get("label.emphasis.position"),m=p.getModel("labelLine.normal"),y=m.get("length"),x=m.get("length2"),_=(d.startAngle+d.endAngle)/2,b=Math.cos(_),w=Math.sin(_);o=d.cx,s=d.cy;var M="inside"===v||"inner"===v;if("center"===v)i=d.cx,r=d.cy,f="center";else{var T=(M?(d.r+d.r0)/2*b:d.r*b)+o,S=(M?(d.r+d.r0)/2*w:d.r*w)+s;if(i=T+3*b,r=S+3*w,!M){var A=T+b*(y+e-d.r),I=S+w*(y+e-d.r),C=A+(b<0?-1:1)*x,L=I;
-i=C+(b<0?-5:5),r=L,c=[[T,S],[A,I],[C,L]]}f=M?"center":b>0?"left":"right"}var k=g.getModel("textStyle").getFont(),P=g.get("rotate")?b<0?-_+Math.PI:-_:0,D=t.getFormattedLabel(n,"normal")||l.getName(n),O=a.getBoundingRect(D,k,f,"top");u=!!P,d.label={x:i,y:r,position:v,height:O.height,len:y,len2:x,linePoints:c,textAlign:f,verticalAlign:"middle",font:k,rotation:P},M||h.push(d.label)}),!u&&t.get("avoidLabelOverlap")&&r(h,o,s,e,n,i)}},function(t,e,n){var i=n(4),r=i.parsePercent,a=n(107),o=n(1),s=2*Math.PI,l=Math.PI/180;t.exports=function(t,e,n,h){e.eachSeriesByType(t,function(t){var e=t.get("center"),h=t.get("radius");o.isArray(h)||(h=[0,h]),o.isArray(e)||(e=[e,e]);var u=n.getWidth(),c=n.getHeight(),f=Math.min(u,c),d=r(e[0],u),p=r(e[1],c),g=r(h[0],f/2),v=r(h[1],f/2),m=t.getData(),y=-t.get("startAngle")*l,x=t.get("minAngle")*l,_=m.getSum("value"),b=Math.PI/(_||m.count())*2,w=t.get("clockwise"),M=t.get("roseType"),T=t.get("stillShowZeroSum"),S=m.getDataExtent("value");S[0]=0;var A=s,I=0,C=y,L=w?1:-1;if(m.each("value",function(t,e){var n;if(isNaN(t))return void m.setItemLayout(e,{angle:NaN,startAngle:NaN,endAngle:NaN,clockwise:w,cx:d,cy:p,r0:g,r:M?NaN:v});n="area"!==M?0===_&&T?b:t*b:s/(m.count()||1),n<x?(n=x,A-=x):I+=t;var r=C+L*n;m.setItemLayout(e,{angle:n,startAngle:C,endAngle:r,clockwise:w,cx:d,cy:p,r0:g,r:M?i.linearMap(t,S,[g,v]):v}),C=r},!0),A<s)if(A<=.001){var k=s/m.count();m.each(function(t){var e=m.getItemLayout(t);e.startAngle=y+L*t*k,e.endAngle=y+L*(t+1)*k})}else b=A/I,C=y,m.each("value",function(t,e){var n=m.getItemLayout(e),i=n.angle===x?x:t*b;n.startAngle=C,n.endAngle=C+L*i,C+=L*i});a(t,v,u,c)})}},function(t,e,n){"use strict";n(55),n(110)},function(t,e,n){function i(t,e){function n(t,e){var n=i.getAxis(t);return n.toGlobalCoord(n.dataToCoord(0))}var i=t.coordinateSystem,r=e.axis,a={},o=r.position,s=r.onZero?"onZero":o,l=r.dim,h=i.getRect(),u=[h.x,h.x+h.width,h.y,h.y+h.height],c=e.get("offset")||0,f={x:{top:u[2]-c,bottom:u[3]+c},y:{left:u[0]-c,right:u[1]+c}};f.x.onZero=Math.max(Math.min(n("y"),f.x.bottom),f.x.top),f.y.onZero=Math.max(Math.min(n("x"),f.y.right),f.y.left),a.position=["y"===l?f.y[s]:u[0],"x"===l?f.x[s]:u[3]],a.rotation=Math.PI/2*("x"===l?0:1);var d={top:-1,bottom:1,left:-1,right:1};a.labelDirection=a.tickDirection=a.nameDirection=d[o],r.onZero&&(a.labelOffset=f[l][o]-f[l].onZero),e.getModel("axisTick").get("inside")&&(a.tickDirection=-a.tickDirection),e.getModel("axisLabel").get("inside")&&(a.labelDirection=-a.labelDirection);var p=e.getModel("axisLabel").get("rotate");return a.labelRotation="top"===s?-p:p,a.labelInterval=r.getLabelInterval(),a.z2=1,a}var r=n(1),a=n(3),o=n(51),s=o.ifIgnoreOnTick,l=o.getInterval,h=["axisLine","axisLabel","axisTick","axisName"],u=["splitArea","splitLine"],c=n(2).extendComponentView({type:"axis",render:function(t,e){this.group.removeAll();var n=this._axisGroup;if(this._axisGroup=new a.Group,this.group.add(this._axisGroup),t.get("show")){var s=t.getCoordSysModel(),l=i(s,t),c=new o(t,l);r.each(h,c.add,c),this._axisGroup.add(c.getGroup()),r.each(u,function(e){t.get(e+".show")&&this["_"+e](t,s,l.labelInterval)},this),a.groupTransition(n,this._axisGroup,t)}},_splitLine:function(t,e,n){var i=t.axis;if(!i.isBlank()){var o=t.getModel("splitLine"),h=o.getModel("lineStyle"),u=h.get("color"),c=l(o,n);u=r.isArray(u)?u:[u];for(var f=e.coordinateSystem.getRect(),d=i.isHorizontal(),p=0,g=i.getTicksCoords(),v=i.scale.getTicks(),m=[],y=[],x=h.getLineStyle(),_=0;_<g.length;_++)if(!s(i,_,c)){var b=i.toGlobalCoord(g[_]);d?(m[0]=b,m[1]=f.y,y[0]=b,y[1]=f.y+f.height):(m[0]=f.x,m[1]=b,y[0]=f.x+f.width,y[1]=b);var w=p++%u.length;this._axisGroup.add(new a.Line(a.subPixelOptimizeLine({anid:"line_"+v[_],shape:{x1:m[0],y1:m[1],x2:y[0],y2:y[1]},style:r.defaults({stroke:u[w]},x),silent:!0})))}}},_splitArea:function(t,e,n){var i=t.axis;if(!i.isBlank()){var o=t.getModel("splitArea"),h=o.getModel("areaStyle"),u=h.get("color"),c=e.coordinateSystem.getRect(),f=i.getTicksCoords(),d=i.scale.getTicks(),p=i.toGlobalCoord(f[0]),g=i.toGlobalCoord(f[0]),v=0,m=l(o,n),y=h.getAreaStyle();u=r.isArray(u)?u:[u];for(var x=1;x<f.length;x++)if(!s(i,x,m)){var _,b,w,M,T=i.toGlobalCoord(f[x]);i.isHorizontal()?(_=p,b=c.y,w=T-_,M=c.height):(_=c.x,b=g,w=c.width,M=T-b);var S=v++%u.length;this._axisGroup.add(new a.Rect({anid:"area_"+d[x],shape:{x:_,y:b,width:w,height:M},style:r.defaults({fill:u[S]},y),silent:!0})),p=_+w,g=b+M}}}});c.extend({type:"xAxis"}),c.extend({type:"yAxis"})},,,,,,,,,function(t,e,n){var i=n(1),r=n(42),a=n(123),o=function(t,e,n,i,a){r.call(this,t,e,n),this.type=i||"value",this.position=a||"bottom"};o.prototype={constructor:o,index:0,onZero:!1,model:null,isHorizontal:function(){var t=this.position;return"top"===t||"bottom"===t},getGlobalExtent:function(){var t=this.getExtent();return t[0]=this.toGlobalCoord(t[0]),t[1]=this.toGlobalCoord(t[1]),t},getLabelInterval:function(){var t=this._labelInterval;return t||(t=this._labelInterval=a(this)),t},isLabelIgnored:function(t){if("category"===this.type){var e=this.getLabelInterval();return"function"==typeof e&&!e(t,this.scale.getLabel(t))||t%(e+1)}},toLocalCoord:null,toGlobalCoord:null},i.inherits(o,r),t.exports=o},function(t,e,n){"use strict";function i(t){return this._axes[t]}var r=n(1),a=function(t){this._axes={},this._dimList=[],this.name=t||""};a.prototype={constructor:a,type:"cartesian",getAxis:function(t){return this._axes[t]},getAxes:function(){return r.map(this._dimList,i,this)},getAxesByScale:function(t){return t=t.toLowerCase(),r.filter(this.getAxes(),function(e){return e.scale.type===t})},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 n=this._dimList,i=t instanceof Array?[]:{},r=0;r<n.length;r++){var a=n[r],o=this._axes[a];i[a]=o[e](t[a])}return i}},t.exports=a},function(t,e,n){"use strict";function i(t){a.call(this,t)}var r=n(1),a=n(120);i.prototype={constructor:i,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"),n=this.getAxis("y");return e.contain(e.toLocalCoord(t[0]))&&n.contain(n.toLocalCoord(t[1]))},containData:function(t){return this.getAxis("x").containData(t[0])&&this.getAxis("y").containData(t[1])},dataToPoints:function(t,e){return t.mapArray(["x","y"],function(t,e){return this.dataToPoint([t,e])},e,this)},dataToPoint:function(t,e){var n=this.getAxis("x"),i=this.getAxis("y");return[n.toGlobalCoord(n.dataToCoord(t[0],e)),i.toGlobalCoord(i.dataToCoord(t[1],e))]},pointToData:function(t,e){var n=this.getAxis("x"),i=this.getAxis("y");return[n.coordToData(n.toLocalCoord(t[0]),e),i.coordToData(i.toLocalCoord(t[1]),e)]},getOtherAxis:function(t){return this.getAxis("x"===t.dim?"y":"x")}},r.inherits(i,a),t.exports=i},function(t,e,n){"use strict";n(55);var i=n(13);t.exports=i.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"}})},function(t,e,n){"use strict";var i=n(1),r=n(22);t.exports=function(t){var e=t.model,n=e.getModel("axisLabel"),a=n.get("interval");return"category"!==t.type||"auto"!==a?"auto"===a?0:a:r.getAxisLabelInterval(i.map(t.scale.getTicks(),t.dataToCoord,t),e.getFormattedLabels(),n.getModel("textStyle").getFont(),t.isHorizontal())}},function(t,e,n){var i=n(3),r=n(1),a=Math.PI;t.exports=function(t,e){e=e||{},r.defaults(e,{text:"loading",color:"#c23531",textColor:"#000",maskColor:"rgba(255, 255, 255, 0.8)",zlevel:0});var n=new i.Rect({style:{fill:e.maskColor},zlevel:e.zlevel,z:1e4}),o=new i.Arc({shape:{startAngle:-a/2,endAngle:-a/2+.1,r:10},style:{stroke:e.color,lineCap:"round",lineWidth:5},zlevel:e.zlevel,z:10001}),s=new i.Rect({style:{fill:"none",text:e.text,textPosition:"right",textDistance:10,textFill:e.textColor},zlevel:e.zlevel,z:10001});o.animateShape(!0).when(1e3,{endAngle:3*a/2}).start("circularInOut"),o.animateShape(!0).when(1e3,{startAngle:3*a/2}).delay(300).start("circularInOut");var l=new i.Group;return l.add(o),l.add(s),l.add(n),l.resize=function(){var e=t.getWidth()/2,i=t.getHeight()/2;o.setShape({cx:e,cy:i});var r=o.shape.r;s.setShape({x:e-r,y:i-r,width:2*r,height:2*r}),n.setShape({x:0,y:0,width:t.getWidth(),height:t.getHeight()})},l.resize(),l}},function(t,e,n){function i(t,e){u.each(e,function(e,n){x.hasClass(n)||("object"==typeof e?t[n]=t[n]?u.merge(t[n],e,!1):u.clone(e):null==t[n]&&(t[n]=e))})}function r(t){t=t,this.option={},this.option[b]=1,this._componentsMap={},this._seriesIndices=null,i(t,this._theme.option),u.merge(t,_,!1),this.mergeOption(t)}function a(t,e){u.isArray(e)||(e=e?[e]:[]);var n={};return d(e,function(e){n[e]=(t[e]||[]).slice()}),n}function o(t,e,n){var i=e.type?e.type:n?n.subType:x.determineSubType(t,e);return i}function s(t){return g(t,function(t){return t.componentIndex})||[]}function l(t,e){return e.hasOwnProperty("subType")?p(t,function(t){return t.subType===e.subType}):t}function h(t){}var u=n(1),c=n(6),f=n(11),d=u.each,p=u.filter,g=u.map,v=u.isArray,m=u.indexOf,y=u.isObject,x=n(13),_=n(127),b="\0_ec_inner",w=f.extend({constructor:w,init:function(t,e,n,i){n=n||{},this.option=null,this._theme=new f(n),this._optionManager=i},setOption:function(t,e){u.assert(!(b in t),"please use chart.getOption()"),this._optionManager.setOption(t,e),this.resetOption()},resetOption:function(t){var e=!1,n=this._optionManager;if(!t||"recreate"===t){var i=n.mountOption("recreate"===t);this.option&&"recreate"!==t?(this.restoreData(),this.mergeOption(i)):r.call(this,i),e=!0}if("timeline"!==t&&"media"!==t||this.restoreData(),!t||"recreate"===t||"timeline"===t){var a=n.getTimelineOption(this);a&&(this.mergeOption(a),e=!0)}if(!t||"recreate"===t||"media"===t){var o=n.getMediaOption(this,this._api);o.length&&d(o,function(t){this.mergeOption(t,e=!0)},this)}return e},mergeOption:function(t){function e(e,r){var l=c.normalizeToArray(t[e]),h=c.mappingToExists(i[e],l);c.makeIdAndName(h),d(h,function(t,n){var i=t.option;y(i)&&(t.keyInfo.mainType=e,t.keyInfo.subType=o(e,i,t.exist))});var f=a(i,r);n[e]=[],i[e]=[],d(h,function(t,r){var a=t.exist,o=t.option;if(u.assert(y(o)||a,"Empty component definition"),o){var s=x.getClass(e,t.keyInfo.subType,!0);if(a&&a instanceof s)a.name=t.keyInfo.name,a.mergeOption(o,this),a.optionUpdated(o,!1);else{var l=u.extend({dependentModels:f,componentIndex:r},t.keyInfo);a=new s(o,this,this,l),u.extend(a,l),a.init(o,this,this,l),a.optionUpdated(null,!0)}}else a.mergeOption({},this),a.optionUpdated({},!1);i[e][r]=a,n[e][r]=a.option},this),"series"===e&&(this._seriesIndices=s(i.series))}var n=this.option,i=this._componentsMap,r=[];d(t,function(t,e){null!=t&&(x.hasClass(e)?r.push(e):n[e]=null==n[e]?u.clone(t):u.merge(n[e],t,!0))}),x.topologicalTravel(r,x.getAllClassMainTypes(),e,this),this._seriesIndices=this._seriesIndices||[]},getOption:function(){var t=u.clone(this.option);return d(t,function(e,n){if(x.hasClass(n)){for(var e=c.normalizeToArray(e),i=e.length-1;i>=0;i--)c.isIdInner(e[i])&&e.splice(i,1);t[n]=e}}),delete t[b],t},getTheme:function(){return this._theme},getComponent:function(t,e){var n=this._componentsMap[t];if(n)return n[e||0]},queryComponents:function(t){var e=t.mainType;if(!e)return[];var n=t.index,i=t.id,r=t.name,a=this._componentsMap[e];if(!a||!a.length)return[];var o;if(null!=n)v(n)||(n=[n]),o=p(g(n,function(t){return a[t]}),function(t){return!!t});else if(null!=i){var s=v(i);o=p(a,function(t){return s&&m(i,t.id)>=0||!s&&t.id===i})}else if(null!=r){var h=v(r);o=p(a,function(t){return h&&m(r,t.name)>=0||!h&&t.name===r})}else o=a;return l(o,t)},findComponents:function(t){function e(t){var e=r+"Index",n=r+"Id",i=r+"Name";return!t||null==t[e]&&null==t[n]&&null==t[i]?null:{mainType:r,index:t[e],id:t[n],name:t[i]}}function n(e){return t.filter?p(e,t.filter):e}var i=t.query,r=t.mainType,a=e(i),o=a?this.queryComponents(a):this._componentsMap[r];return n(l(o,t))},eachComponent:function(t,e,n){var i=this._componentsMap;if("function"==typeof t)n=e,e=t,d(i,function(t,i){d(t,function(t,r){e.call(n,i,t,r)})});else if(u.isString(t))d(i[t],e,n);else if(y(t)){var r=this.findComponents(t);d(r,e,n)}},getSeriesByName:function(t){var e=this._componentsMap.series;return p(e,function(e){return e.name===t})},getSeriesByIndex:function(t){return this._componentsMap.series[t]},getSeriesByType:function(t){var e=this._componentsMap.series;return p(e,function(e){return e.subType===t})},getSeries:function(){return this._componentsMap.series.slice()},eachSeries:function(t,e){h(this),d(this._seriesIndices,function(n){var i=this._componentsMap.series[n];t.call(e,i,n)},this)},eachRawSeries:function(t,e){d(this._componentsMap.series,t,e)},eachSeriesByType:function(t,e,n){h(this),d(this._seriesIndices,function(i){var r=this._componentsMap.series[i];r.subType===t&&e.call(n,r,i)},this)},eachRawSeriesByType:function(t,e,n){return d(this.getSeriesByType(t),e,n)},isSeriesFiltered:function(t){return h(this),u.indexOf(this._seriesIndices,t.componentIndex)<0},filterSeries:function(t,e){h(this);var n=p(this._componentsMap.series,t,e);this._seriesIndices=s(n)},restoreData:function(){var t=this._componentsMap;this._seriesIndices=s(t.series);var e=[];d(t,function(t,n){e.push(n)}),x.topologicalTravel(e,x.getAllClassMainTypes(),function(e,n){d(t[e],function(t){t.restoreData()})})}});u.mixin(w,n(57)),t.exports=w},function(t,e,n){function i(t){this._api=t,this._timelineOptions=[],this._mediaList=[],this._mediaDefault,this._currentMediaIndices=[],this._optionBackup,this._newBaseOption}function r(t,e,n){var i,r,a=[],o=[],s=t.timeline;if(t.baseOption&&(r=t.baseOption),(s||t.options)&&(r=r||{},a=(t.options||[]).slice()),t.media){r=r||{};var l=t.media;f(l,function(t){t&&t.option&&(t.query?o.push(t):i||(i=t))})}return r||(r=t),r.timeline||(r.timeline=s),f([r].concat(a).concat(h.map(o,function(t){return t.option})),function(t){f(e,function(e){e(t,n)})}),{baseOption:r,timelineOptions:a,mediaDefault:i,mediaList:o}}function a(t,e,n){var i={width:e,height:n,aspectratio:e/n},r=!0;return h.each(t,function(t,e){var n=e.match(v);if(n&&n[1]&&n[2]){var a=n[1],s=n[2].toLowerCase();o(i[s],t,a)||(r=!1)}}),r}function o(t,e,n){return"min"===n?t>=e:"max"===n?t<=e:t===e}function s(t,e){return t.join(",")===e.join(",")}function l(t,e){e=e||{},f(e,function(e,n){if(null!=e){var i=t[n];if(c.hasClass(n)){e=u.normalizeToArray(e),i=u.normalizeToArray(i);var r=u.mappingToExists(i,e);t[n]=p(r,function(t){return t.option&&t.exist?g(t.exist,t.option,!0):t.exist||t.option})}else t[n]=g(i,e,!0)}})}var h=n(1),u=n(6),c=n(13),f=h.each,d=h.clone,p=h.map,g=h.merge,v=/^(min|max)?(.+)$/;i.prototype={constructor:i,setOption:function(t,e){t=d(t,!0);var n=this._optionBackup,i=r.call(this,t,e,!n);this._newBaseOption=i.baseOption,n?(l(n.baseOption,i.baseOption),i.timelineOptions.length&&(n.timelineOptions=i.timelineOptions),i.mediaList.length&&(n.mediaList=i.mediaList),i.mediaDefault&&(n.mediaDefault=i.mediaDefault)):this._optionBackup=i},mountOption:function(t){var e=this._optionBackup;return this._timelineOptions=p(e.timelineOptions,d),this._mediaList=p(e.mediaList,d),this._mediaDefault=d(e.mediaDefault),this._currentMediaIndices=[],d(t?e.baseOption:this._newBaseOption)},getTimelineOption:function(t){var e,n=this._timelineOptions;if(n.length){var i=t.getComponent("timeline");i&&(e=d(n[i.getCurrentIndex()],!0))}return e},getMediaOption:function(t){var e=this._api.getWidth(),n=this._api.getHeight(),i=this._mediaList,r=this._mediaDefault,o=[],l=[];if(!i.length&&!r)return l;for(var h=0,u=i.length;h<u;h++)a(i[h].query,e,n)&&o.push(h);return!o.length&&r&&(o=[-1]),o.length&&!s(o,this._currentMediaIndices)&&(l=p(o,function(t){return d(t===-1?r.option:i[t].option)})),this._currentMediaIndices=o,l}},t.exports=i},function(t,e){var n="";"undefined"!=typeof navigator&&(n=navigator.platform||""),t.exports={color:["#c23531","#2f4554","#61a0a8","#d48265","#91c7ae","#749f83","#ca8622","#bda29a","#6e7074","#546570","#c4ccd3"],textStyle:{fontFamily:n.match(/^Win/)?"Microsoft YaHei":"sans-serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"},blendMode:null,animation:!0,animationDuration:1e3,animationDurationUpdate:300,animationEasing:"exponentialOut",animationEasingUpdate:"cubicOut",animationThreshold:2e3,progressiveThreshold:3e3,progressive:400,hoverLayerThreshold:3e3}},function(t,e,n){t.exports={getAreaStyle:n(30)([["fill","color"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["opacity"],["shadowColor"]])}},function(t,e){t.exports={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")}}}},function(t,e,n){var i=n(30)([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"],["textPosition"],["textAlign"]]);t.exports={getItemStyle:function(t){var e=i.call(this,t),n=this.getBorderLineDash();return n&&(e.lineDash=n),e},getBorderLineDash:function(){var t=this.get("borderType");return"solid"===t||null==t?null:"dashed"===t?[5,5]:[1,1]}}},function(t,e,n){var i=n(30)([["lineWidth","width"],["stroke","color"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]);t.exports={getLineStyle:function(t){var e=i.call(this,t),n=this.getLineDash(e.lineWidth);return n&&(e.lineDash=n),e},getLineDash:function(t){null==t&&(t=1);var e=this.get("type"),n=Math.max(t,2),i=4*t;return"solid"===e||null==e?null:"dashed"===e?[i,i]:[n,n]}}},function(t,e,n){function i(t,e){return t&&t.getShallow(e)}var r=n(17);t.exports={getTextColor:function(){var t=this.ecModel;return this.getShallow("color")||t&&t.get("textStyle.color")},getFont:function(){var t=this.ecModel,e=t&&t.getModel("textStyle");return[this.getShallow("fontStyle")||i(e,"fontStyle"),this.getShallow("fontWeight")||i(e,"fontWeight"),(this.getShallow("fontSize")||i(e,"fontSize")||12)+"px",this.getShallow("fontFamily")||i(e,"fontFamily")||"sans-serif"].join(" ")},getTextRect:function(t){return r.getBoundingRect(t,this.getFont(),this.getShallow("align"),this.getShallow("baseline"))},truncateText:function(t,e,n,i){return r.truncateText(t,e,this.getFont(),n,i)}}},function(t,e,n){function i(t,e){e=e.split(",");for(var n=t,i=0;i<e.length&&(n=n&&n[e[i]],null!=n);i++);return n}function r(t,e,n,i){e=e.split(",");for(var r,a=t,o=0;o<e.length-1;o++)r=e[o],null==a[r]&&(a[r]={}),a=a[r];(i||null==a[e[o]])&&(a[e[o]]=n)}function a(t){c(l,function(e){e[0]in t&&!(e[1]in t)&&(t[e[1]]=t[e[0]])})}var o=n(1),s=n(134),l=[["x","left"],["y","top"],["x2","right"],["y2","bottom"]],h=["grid","geo","parallel","legend","toolbox","title","visualMap","dataZoom","timeline"],u=["bar","boxplot","candlestick","chord","effectScatter","funnel","gauge","lines","graph","heatmap","line","map","parallel","pie","radar","sankey","scatter","treemap"],c=o.each;t.exports=function(t){c(t.series,function(t){if(o.isObject(t)){var e=t.type;if(s(t),"pie"!==e&&"gauge"!==e||null!=t.clockWise&&(t.clockwise=t.clockWise),"gauge"===e){var n=i(t,"pointer.color");null!=n&&r(t,"itemStyle.normal.color",n)}for(var l=0;l<u.length;l++)if(u[l]===t.type){a(t);break}}}),t.dataRange&&(t.visualMap=t.dataRange),c(h,function(e){var n=t[e];n&&(o.isArray(n)||(n=[n]),c(n,function(t){a(t)}))})}},function(t,e,n){function i(t){var e=t&&t.itemStyle;e&&r.each(a,function(n){var i=e.normal,a=e.emphasis;i&&i[n]&&(t[n]=t[n]||{},t[n].normal?r.merge(t[n].normal,i[n]):t[n].normal=i[n],i[n]=null),a&&a[n]&&(t[n]=t[n]||{},t[n].emphasis?r.merge(t[n].emphasis,a[n]):t[n].emphasis=a[n],a[n]=null)})}var r=n(1),a=["areaStyle","lineStyle","nodeStyle","linkStyle","chordStyle","label","labelLine"];t.exports=function(t){if(t){i(t),i(t.markPoint),i(t.markLine);var e=t.data;if(e){for(var n=0;n<e.length;n++)i(e[n]);var a=t.markPoint;if(a&&a.data)for(var o=a.data,n=0;n<o.length;n++)i(o[n]);var s=t.markLine;if(s&&s.data)for(var l=s.data,n=0;n<l.length;n++)r.isArray(l[n])?(i(l[n][0]),i(l[n][1])):i(l[n])}}}},function(t,e){var n={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 e},min:function(t){for(var e=1/0,n=0;n<t.length;n++)t[n]<e&&(e=t[n]);return e},nearest:function(t){return t[0]}},i=function(t,e){return Math.round(t.length/2)};t.exports=function(t,e,r){e.eachSeriesByType(t,function(t){var e=t.getData(),r=t.get("sampling"),a=t.coordinateSystem;if("cartesian2d"===a.type&&r){var o=a.getBaseAxis(),s=a.getOtherAxis(o),l=o.getExtent(),h=l[1]-l[0],u=Math.round(e.count()/h);if(u>1){var c;"string"==typeof r?c=n[r]:"function"==typeof r&&(c=r),c&&(e=e.downSample(s.dim,1/u,c,i),t.setData(e))}}},this)}},function(t,e,n){function i(t,e){return c(t,u(e))}var r=n(1),a=n(32),o=n(4),s=n(38),l=a.prototype,h=s.prototype,u=o.getPrecisionSafe,c=o.round,f=Math.floor,d=Math.ceil,p=Math.pow,g=Math.log,v=a.extend({type:"log",base:10,$constructor:function(){a.apply(this,arguments),this._originalScale=new s},getTicks:function(){var t=this._originalScale,e=this._extent,n=t.getExtent();return r.map(h.getTicks.call(this),function(r){var a=o.round(p(this.base,r));return a=r===e[0]&&t.__fixMin?i(a,n[0]):a,a=r===e[1]&&t.__fixMax?i(a,n[1]):a},this)},getLabel:h.getLabel,scale:function(t){return t=l.scale.call(this,t),p(this.base,t)},setExtent:function(t,e){var n=this.base;t=g(t)/g(n),e=g(e)/g(n),h.setExtent.call(this,t,e)},getExtent:function(){var t=this.base,e=l.getExtent.call(this);e[0]=p(t,e[0]),e[1]=p(t,e[1]);var n=this._originalScale,r=n.getExtent();return n.__fixMin&&(e[0]=i(e[0],r[0])),n.__fixMax&&(e[1]=i(e[1],r[1])),e},unionExtent:function(t){this._originalScale.unionExtent(t);var e=this.base;t[0]=g(t[0])/g(e),t[1]=g(t[1])/g(e),l.unionExtent.call(this,t)},unionExtentFromData:function(t,e){this.unionExtent(t.getDataExtent(e,!0,function(t){return t>0}))},niceTicks:function(t){t=t||10;var e=this._extent,n=e[1]-e[0];if(!(n===1/0||n<=0)){var i=o.quantity(n),r=t/n*i;for(r<=.5&&(i*=10);!isNaN(i)&&Math.abs(i)<1&&Math.abs(i)>0;)i*=10;var a=[o.round(d(e[0]/i)*i),o.round(f(e[1]/i)*i)];this._interval=i,this._niceExtent=a}},niceExtent:function(t,e,n){h.niceExtent.call(this,t,e,n);var i=this._originalScale;i.__fixMin=e,i.__fixMax=n}});r.each(["contain","normalize"],function(t){v.prototype[t]=function(e){return e=g(e)/g(this.base),l[t].call(this,e)}}),v.create=function(){return new v},t.exports=v},function(t,e,n){var i=n(1),r=n(32),a=r.prototype,o=r.extend({type:"ordinal",init:function(t,e){this._data=t,this._extent=e||[0,t.length-1]},parse:function(t){return"string"==typeof t?i.indexOf(this._data,t):Math.round(t)},contain:function(t){return t=this.parse(t),a.contain.call(this,t)&&null!=this._data[t]},normalize:function(t){return a.normalize.call(this,this.parse(t))},scale:function(t){return Math.round(a.scale.call(this,t))},getTicks:function(){for(var t=[],e=this._extent,n=e[0];n<=e[1];)t.push(n),n++;return t},getLabel:function(t){return this._data[t]},count:function(){return this._extent[1]-this._extent[0]+1},unionExtentFromData:function(t,e){this.unionExtent(t.getDataExtent(e,!1))},niceTicks:i.noop,niceExtent:i.noop});o.create=function(){return new o},t.exports=o},function(t,e,n){var i=n(1),r=n(4),a=n(8),o=n(38),s=o.prototype,l=Math.ceil,h=Math.floor,u=1e3,c=60*u,f=60*c,d=24*f,p=function(t,e,n,i){for(;n<i;){var r=n+i>>>1;t[r][2]<e?n=r+1:i=r}return n},g=o.extend({type:"time",getLabel:function(t){var e=this._stepLvl,n=new Date(t);return a.formatTime(e[0],n)},niceExtent:function(t,e,n){var i=this._extent;if(i[0]===i[1]&&(i[0]-=d,i[1]+=d),i[1]===-(1/0)&&i[0]===1/0){var a=new Date;i[1]=new Date(a.getFullYear(),a.getMonth(),a.getDate()),i[0]=i[1]-d}this.niceTicks(t);var o=this._interval;e||(i[0]=r.round(h(i[0]/o)*o)),n||(i[1]=r.round(l(i[1]/o)*o))},niceTicks:function(t){t=t||10;var e=this._extent,n=e[1]-e[0],i=n/t,a=v.length,o=p(v,i,0,a),s=v[Math.min(o,a-1)],u=s[2];if("year"===s[0]){var c=n/u,f=r.nice(c/t,!0);u*=f}var d=[l(e[0]/u)*u,h(e[1]/u)*u];this._stepLvl=s,this._interval=u,this._niceExtent=d},parse:function(t){return+r.parseDate(t)}});i.each(["contain","normalize"],function(t){g.prototype[t]=function(e){return s[t].call(this,this.parse(e))}});var v=[["hh:mm:ss",1,u],["hh:mm:ss",5,5*u],["hh:mm:ss",10,10*u],["hh:mm:ss",15,15*u],["hh:mm:ss",30,30*u],["hh:mm\nMM-dd",1,c],["hh:mm\nMM-dd",5,5*c],["hh:mm\nMM-dd",10,10*c],["hh:mm\nMM-dd",15,15*c],["hh:mm\nMM-dd",30,30*c],["hh:mm\nMM-dd",1,f],["hh:mm\nMM-dd",2,2*f],["hh:mm\nMM-dd",6,6*f],["hh:mm\nMM-dd",12,12*f],["MM-dd\nyyyy",1,d],["week",7,7*d],["month",1,31*d],["quarter",3,380*d/4],["half-year",6,380*d/2],["year",1,380*d]];g.create=function(){return new g},t.exports=g},function(t,e,n){var i=n(37);t.exports=function(t){function e(e){var n=(e.visualColorAccessPath||"itemStyle.normal.color").split("."),r=e.getData(),a=e.get(n)||e.getColorFromPalette(e.get("name"));r.setVisual("color",a),t.isSeriesFiltered(e)||("function"!=typeof a||a instanceof i||r.each(function(t){r.setItemVisual(t,"color",a(e.getDataParams(t)))}),r.each(function(t){var e=r.getItemModel(t),i=e.get(n,!0);null!=i&&r.setItemVisual(t,"color",i)}))}t.eachRawSeries(e)}},function(t,e,n){"use strict";function i(t,e,n){return{type:t,event:n,target:e,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}}function r(){}function a(t,e,n){if(t[t.rectHover?"rectContain":"contain"](e,n)){for(var i=t;i;){if(i.silent||i.clipPath&&!i.clipPath.contain(e,n))return!1;i=i.parent}return!0}return!1}var o=n(1),s=n(168),l=n(21);r.prototype.dispose=function(){};var h=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],u=function(t,e,n,i){l.call(this),this.storage=t,this.painter=e,this.painterRoot=i,n=n||new r,this.proxy=n,n.handler=this,this._hovered,this._lastTouchMoment,this._lastX,this._lastY,s.call(this),o.each(h,function(t){n.on&&n.on(t,this[t],this)},this)};u.prototype={constructor:u,mousemove:function(t){var e=t.zrX,n=t.zrY,i=this.findHover(e,n,null),r=this._hovered,a=this.proxy;this._hovered=i,a.setCursor&&a.setCursor(i?i.cursor:"default"),r&&i!==r&&r.__zr&&this.dispatchToElement(r,"mouseout",t),this.dispatchToElement(i,"mousemove",t),i&&i!==r&&this.dispatchToElement(i,"mouseover",t)},mouseout:function(t){this.dispatchToElement(this._hovered,"mouseout",t);var e,n=t.toElement||t.relatedTarget;do n=n&&n.parentNode;while(n&&9!=n.nodeType&&!(e=n===this.painterRoot));!e&&this.trigger("globalout",{event:t})},resize:function(t){this._hovered=null},dispatch:function(t,e){var n=this[t];n&&n.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,n){for(var r="on"+e,a=i(e,t,n),o=t;o&&(o[r]&&(a.cancelBubble=o[r].call(o,a)),o.trigger(e,a),o=o.parent,!a.cancelBubble););a.cancelBubble||(this.trigger(e,a),this.painter&&this.painter.eachOtherLayer(function(t){"function"==typeof t[r]&&t[r].call(t,a),t.trigger&&t.trigger(e,a)}))},findHover:function(t,e,n){for(var i=this.storage.getDisplayList(),r=i.length-1;r>=0;r--)if(!i[r].silent&&i[r]!==n&&!i[r].ignore&&a(i[r],t,e))return i[r]}},o.each(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],function(t){u.prototype[t]=function(e){var n=this.findHover(e.zrX,e.zrY,null);if("mousedown"===t)this._downel=n,this._upel=n;else if("mosueup"===t)this._upel=n;else if("click"===t&&this._downel!==this._upel)return;this.dispatchToElement(n,t,e)}}),o.mixin(u,l),o.mixin(u,s),t.exports=u},function(t,e,n){function i(){return!1}function r(t,e,n,i){var r=document.createElement(e),a=n.getWidth(),o=n.getHeight(),s=r.style;return s.position="absolute",s.left=0,s.top=0,s.width=a+"px",s.height=o+"px",r.width=a*i,r.height=o*i,r.setAttribute("data-zr-dom-id",t),r}var a=n(1),o=n(33),s=n(66),l=n(65),h=function(t,e,n){var s;n=n||o.devicePixelRatio,"string"==typeof t?s=r(t,"canvas",e,n):a.isObject(t)&&(s=t,t=s.id),this.id=t,this.dom=s;var l=s.style;l&&(s.onselectstart=i,l["-webkit-user-select"]="none",l["user-select"]="none",l["-webkit-touch-callout"]="none",l["-webkit-tap-highlight-color"]="rgba(0,0,0,0)",l.padding=0,l.margin=0,l["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=n};h.prototype={constructor:h,elCount:0,__dirty:!0,initContext:function(){this.ctx=this.dom.getContext("2d"),this.ctx.dpr=this.dpr},createBackBuffer:function(){var t=this.dpr;this.domBack=r("back-"+this.id,"canvas",this.painter,t),this.ctxBack=this.domBack.getContext("2d"),1!=t&&this.ctxBack.scale(t,t)},resize:function(t,e){var n=this.dpr,i=this.dom,r=i.style,a=this.domBack;r.width=t+"px",r.height=e+"px",i.width=t*n,i.height=e*n,a&&(a.width=t*n,a.height=e*n,1!=n&&this.ctxBack.scale(n,n))},clear:function(t){var e=this.dom,n=this.ctx,i=e.width,r=e.height,a=this.clearColor,o=this.motionBlur&&!t,h=this.lastFrameAlpha,u=this.dpr;if(o&&(this.domBack||this.createBackBuffer(),this.ctxBack.globalCompositeOperation="copy",this.ctxBack.drawImage(e,0,0,i/u,r/u)),n.clearRect(0,0,i,r),a){var c;a.colorStops?(c=a.__canvasGradient||s.getGradient(n,a,{x:0,y:0,width:i,height:r}),a.__canvasGradient=c):a.image&&(c=l.prototype.getCanvasPattern.call(a,n)),n.save(),n.fillStyle=c||a,n.fillRect(0,0,i,r),n.restore()}if(o){var f=this.domBack;n.save(),n.globalAlpha=h,n.drawImage(f,0,0,i,r),n.restore()}}},t.exports=h},function(t,e,n){"use strict";function i(t){return parseInt(t,10)}function r(t){return!!t&&(!!t.isBuildin||"function"==typeof t.resize&&"function"==typeof t.refresh)}function a(t){t.__unusedCount++}function o(t){1==t.__unusedCount&&t.clear()}function s(t,e,n){return x.copy(t.getBoundingRect()),t.transform&&x.applyTransform(t.transform),_.width=e,_.height=n,!x.intersect(_)}function l(t,e){if(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}function h(t,e){for(var n=0;n<t.length;n++){var i=t[n],r=i.path;i.setTransform(e),r.beginPath(e),i.buildPath(r,i.shape),e.clip(),i.restoreTransform(e)}}function u(t,e){var n=document.createElement("div");return n.style.cssText=["position:relative","overflow:hidden","width:"+t+"px","height:"+e+"px","padding:0","margin:0","border-width:0"].join(";")+";",n}var c=n(33),f=n(1),d=n(48),p=n(9),g=n(46),v=n(141),m=n(62),y=5,x=new p(0,0,0,0),_=new p(0,0,0,0),b=function(t,e,n){var i=!t.nodeName||"CANVAS"===t.nodeName.toUpperCase();this._opts=n=f.extend({},n||{}),this.dpr=n.devicePixelRatio||c.devicePixelRatio,this._singleCanvas=i,this.root=t;var r=t.style;r&&(r["-webkit-tap-highlight-color"]="transparent",r["-webkit-user-select"]=r["user-select"]=r["-webkit-touch-callout"]="none",t.innerHTML=""),this.storage=e;var a=this._zlevelList=[],o=this._layers={};if(this._layerConfig={},i){var s=t.width,l=t.height;this._width=s,this._height=l;var h=new v(t,this,1);h.initContext(),o[0]=h,a.push(0),this._domRoot=t}else{this._width=this._getSize(0),this._height=this._getSize(1);var d=this._domRoot=u(this._width,this._height);t.appendChild(d)}this.pathToImage=this._createPathToImage(),this._progressiveLayers=[],this._hoverlayer,this._hoverElements=[]};b.prototype={constructor:b,isSingleCanvas:function(){return this._singleCanvas},getViewportRoot:function(){return this._domRoot},refresh:function(t){var e=this.storage.getDisplayList(!0),n=this._zlevelList;this._paintList(e,t);for(var i=0;i<n.length;i++){var r=n[i],a=this._layers[r];!a.isBuildin&&a.refresh&&a.refresh()}return this.refreshHover(),this._progressiveLayers.length&&this._startProgessive(),this},addHover:function(t,e){
-if(!t.__hoverMir){var n=new t.constructor({style:t.style,shape:t.shape});n.__from=t,t.__hoverMir=n,n.setStyle(e),this._hoverElements.push(n)}},removeHover:function(t){var e=t.__hoverMir,n=this._hoverElements,i=f.indexOf(n,e);i>=0&&n.splice(i,1),t.__hoverMir=null},clearHover:function(t){for(var e=this._hoverElements,n=0;n<e.length;n++){var i=e[n].__from;i&&(i.__hoverMir=null)}e.length=0},refreshHover:function(){var t=this._hoverElements,e=t.length,n=this._hoverlayer;if(n&&n.clear(),e){g(t,this.storage.displayableSortFunc),n||(n=this._hoverlayer=this.getLayer(1e5));var i={};n.ctx.save();for(var r=0;r<e;){var a=t[r],o=a.__from;o&&o.__zr?(r++,o.invisible||(a.transform=o.transform,a.invTransform=o.invTransform,a.__clipPaths=o.__clipPaths,this._doPaintEl(a,n,!0,i))):(t.splice(r,1),o.__hoverMir=null,e--)}n.ctx.restore()}},_startProgessive:function(){function t(){n===e._progressiveToken&&e.storage&&(e._doPaintList(e.storage.getDisplayList()),e._furtherProgressive?(e._progress++,m(t)):e._progressiveToken=-1)}var e=this;if(e._furtherProgressive){var n=e._progressiveToken=+new Date;e._progress++,m(t)}},_clearProgressive:function(){this._progressiveToken=-1,this._progress=0,f.each(this._progressiveLayers,function(t){t.__dirty&&t.clear()})},_paintList:function(t,e){null==e&&(e=!1),this._updateLayerStatus(t),this._clearProgressive(),this.eachBuildinLayer(a),this._doPaintList(t,e),this.eachBuildinLayer(o)},_doPaintList:function(t,e){function n(t){var e=a.dpr||1;a.save(),a.globalAlpha=1,a.shadowBlur=0,i.__dirty=!0,a.setTransform(1,0,0,1,0,0),a.drawImage(t.dom,0,0,u*e,c*e),a.restore()}for(var i,r,a,o,s,l,h=0,u=this._width,c=this._height,p=this._progress,g=0,v=t.length;g<v;g++){var m=t[g],x=this._singleCanvas?0:m.zlevel,_=m.__frame;if(_<0&&s&&(n(s),s=null),r!==x&&(a&&a.restore(),o={},r=x,i=this.getLayer(r),i.isBuildin||d("ZLevel "+r+" has been used by unkown layer "+i.id),a=i.ctx,a.save(),i.__unusedCount=0,(i.__dirty||e)&&i.clear()),i.__dirty||e){if(_>=0){if(!s){if(s=this._progressiveLayers[Math.min(h++,y-1)],s.ctx.save(),s.renderScope={},s&&s.__progress>s.__maxProgress){g=s.__nextIdxNotProg-1;continue}l=s.__progress,s.__dirty||(p=l),s.__progress=p+1}_===p&&this._doPaintEl(m,s,!0,s.renderScope)}else this._doPaintEl(m,i,e,o);m.__dirty=!1}}s&&n(s),a&&a.restore(),this._furtherProgressive=!1,f.each(this._progressiveLayers,function(t){t.__maxProgress>=t.__progress&&(this._furtherProgressive=!0)},this)},_doPaintEl:function(t,e,n,i){var r=e.ctx,a=t.transform;if((e.__dirty||n)&&!t.invisible&&0!==t.style.opacity&&(!a||a[0]||a[3])&&(!t.culling||!s(t,this._width,this._height))){var o=t.__clipPaths;(i.prevClipLayer!==e||l(o,i.prevElClipPaths))&&(i.prevElClipPaths&&(i.prevClipLayer.ctx.restore(),i.prevClipLayer=i.prevElClipPaths=null,i.prevEl=null),o&&(r.save(),h(o,r),i.prevClipLayer=e,i.prevElClipPaths=o)),t.beforeBrush&&t.beforeBrush(r),t.brush(r,i.prevEl||null),i.prevEl=t,t.afterBrush&&t.afterBrush(r)}},getLayer:function(t){if(this._singleCanvas)return this._layers[0];var e=this._layers[t];return e||(e=new v("zr_"+t,this,this.dpr),e.isBuildin=!0,this._layerConfig[t]&&f.merge(e,this._layerConfig[t],!0),this.insertLayer(t,e),e.initContext()),e},insertLayer:function(t,e){var n=this._layers,i=this._zlevelList,a=i.length,o=null,s=-1,l=this._domRoot;if(n[t])return void d("ZLevel "+t+" has been used already");if(!r(e))return void d("Layer of zlevel "+t+" is not valid");if(a>0&&t>i[0]){for(s=0;s<a-1&&!(i[s]<t&&i[s+1]>t);s++);o=n[i[s]]}if(i.splice(s+1,0,t),o){var h=o.dom;h.nextSibling?l.insertBefore(e.dom,h.nextSibling):l.appendChild(e.dom)}else l.firstChild?l.insertBefore(e.dom,l.firstChild):l.appendChild(e.dom);n[t]=e},eachLayer:function(t,e){var n,i,r=this._zlevelList;for(i=0;i<r.length;i++)n=r[i],t.call(e,this._layers[n],n)},eachBuildinLayer:function(t,e){var n,i,r,a=this._zlevelList;for(r=0;r<a.length;r++)i=a[r],n=this._layers[i],n.isBuildin&&t.call(e,n,i)},eachOtherLayer:function(t,e){var n,i,r,a=this._zlevelList;for(r=0;r<a.length;r++)i=a[r],n=this._layers[i],n.isBuildin||t.call(e,n,i)},getLayers:function(){return this._layers},_updateLayerStatus:function(t){var e=this._layers,n=this._progressiveLayers,i={},r={};this.eachBuildinLayer(function(t,e){i[e]=t.elCount,t.elCount=0,t.__dirty=!1}),f.each(n,function(t,e){r[e]=t.elCount,t.elCount=0,t.__dirty=!1});for(var a,o,s=0,l=0,h=0,u=t.length;h<u;h++){var c=t[h],d=this._singleCanvas?0:c.zlevel,p=e[d],g=c.progressive;if(p&&(p.elCount++,p.__dirty=p.__dirty||c.__dirty),g>=0){o!==g&&(o=g,l++);var m=c.__frame=l-1;if(!a){var x=Math.min(s,y-1);a=n[x],a||(a=n[x]=new v("progressive",this,this.dpr),a.initContext()),a.__maxProgress=0}a.__dirty=a.__dirty||c.__dirty,a.elCount++,a.__maxProgress=Math.max(a.__maxProgress,m),a.__maxProgress>=a.__progress&&(p.__dirty=!0)}else c.__frame=-1,a&&(a.__nextIdxNotProg=h,s++,a=null)}a&&(s++,a.__nextIdxNotProg=h),this.eachBuildinLayer(function(t,e){i[e]!==t.elCount&&(t.__dirty=!0)}),n.length=Math.min(s,y),f.each(n,function(t,e){r[e]!==t.elCount&&(c.__dirty=!0),t.__dirty&&(t.__progress=0)})},clear:function(){return this.eachBuildinLayer(this._clearLayer),this},_clearLayer:function(t){t.clear()},configLayer:function(t,e){if(e){var n=this._layerConfig;n[t]?f.merge(n[t],e,!0):n[t]=e;var i=this._layers[t];i&&f.merge(i,n[t],!0)}},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(f.indexOf(n,t),1))},resize:function(t,e){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){n.style.width=t+"px",n.style.height=e+"px";for(var r in this._layers)this._layers.hasOwnProperty(r)&&this._layers[r].resize(t,e);f.each(this._progressiveLayers,function(n){n.resize(t,e)}),this.refresh(!0)}return this._width=t,this._height=e,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)return this._layers[0].dom;var e=new v("image",this,t.pixelRatio||this.dpr);e.initContext(),e.clearColor=t.backgroundColor,e.clear();for(var n=this.storage.getDisplayList(!0),i={},r=0;r<n.length;r++){var a=n[r];this._doPaintEl(a,e,!0,i)}return e.dom},getWidth:function(){return this._width},getHeight:function(){return this._height},_getSize:function(t){var e=this._opts,n=["width","height"][t],r=["clientWidth","clientHeight"][t],a=["paddingLeft","paddingTop"][t],o=["paddingRight","paddingBottom"][t];if(null!=e[n]&&"auto"!==e[n])return parseFloat(e[n]);var s=this.root,l=document.defaultView.getComputedStyle(s);return(s[r]||i(l[n])||i(s.style[n]))-(i(l[a])||0)-(i(l[o])||0)|0},_pathToImage:function(t,e,i,r,a){var o=document.createElement("canvas"),s=o.getContext("2d");o.width=i*a,o.height=r*a,s.clearRect(0,0,i*a,r*a);var l={position:e.position,rotation:e.rotation,scale:e.scale};e.position=[0,0,0],e.rotation=0,e.scale=[1,1],e&&e.brush(s);var h=n(49),u=new h({id:t,style:{x:0,y:0,image:o}});return null!=l.position&&(u.position=e.position=l.position),null!=l.rotation&&(u.rotation=e.rotation=l.rotation),null!=l.scale&&(u.scale=e.scale=l.scale),u},_createPathToImage:function(){var t=this;return function(e,n,i,r){return t._pathToImage(e,n,i,r,t.dpr)}}},t.exports=b},function(t,e,n){"use strict";function i(t,e){return t.zlevel===e.zlevel?t.z===e.z?t.z2-e.z2:t.z-e.z:t.zlevel-e.zlevel}var r=n(1),a=n(10),o=n(34),s=n(46),l=function(){this._elements={},this._roots=[],this._displayList=[],this._displayListLen=0};l.prototype={constructor:l,traverse:function(t,e){for(var n=0;n<this._roots.length;n++)this._roots[n].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,n=this._displayList,r=0,o=e.length;r<o;r++)this._updateAndAddDisplayable(e[r],null,t);n.length=this._displayListLen,a.canvasSupported&&s(n,i)},_updateAndAddDisplayable:function(t,e,n){if(!t.ignore||n){t.beforeUpdate(),t.__dirty&&t.update(),t.afterUpdate();var i=t.clipPath;if(i){e=e?e.slice():[];for(var r=i,a=t;r;)r.parent=a,r.updateTransform(),e.push(r),a=r,r=r.clipPath}if(t.isGroup){for(var o=t._children,s=0;s<o.length;s++){var l=o[s];t.__dirty&&(l.__dirty=!0),this._updateAndAddDisplayable(l,e,n)}t.__dirty=!1}else t.__clipPaths=e,this._displayList[this._displayListLen++]=t}},addRoot:function(t){this._elements[t.id]||(t instanceof o&&t.addChildrenToStorage(this),this.addToMap(t),this._roots.push(t))},delRoot:function(t){if(null==t){for(var e=0;e<this._roots.length;e++){var n=this._roots[e];n instanceof o&&n.delChildrenFromStorage(this)}return this._elements={},this._roots=[],this._displayList=[],void(this._displayListLen=0)}if(t instanceof Array)for(var e=0,i=t.length;e<i;e++)this.delRoot(t[e]);else{var a;a="string"==typeof t?this._elements[t]:t;var s=r.indexOf(this._roots,a);s>=0&&(this.delFromMap(a.id),this._roots.splice(s,1),a instanceof o&&a.delChildrenFromStorage(this))}},addToMap:function(t){return t instanceof o&&(t.__storage=this),t.dirty(!1),this._elements[t.id]=t,this},get:function(t){return this._elements[t]},delFromMap:function(t){var e=this._elements,n=e[t];return n&&(delete e[t],n instanceof o&&(n.__storage=null)),this},dispose:function(){this._elements=this._renderList=this._roots=null},displayableSortFunc:i},t.exports=l},function(t,e,n){"use strict";var i=n(1),r=n(25).Dispatcher,a=n(62),o=n(61),s=function(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,r.call(this)};s.prototype={constructor:s,addClip:function(t){this._clips.push(t)},addAnimator:function(t){t.animation=this;for(var e=t.getClips(),n=0;n<e.length;n++)this.addClip(e[n])},removeClip:function(t){var e=i.indexOf(this._clips,t);e>=0&&this._clips.splice(e,1)},removeAnimator:function(t){for(var e=t.getClips(),n=0;n<e.length;n++)this.removeClip(e[n]);t.animation=null},_update:function(){for(var t=(new Date).getTime()-this._pausedTime,e=t-this._time,n=this._clips,i=n.length,r=[],a=[],o=0;o<i;o++){var s=n[o],l=s.step(t);l&&(r.push(l),a.push(s))}for(var o=0;o<i;)n[o]._needsRemove?(n[o]=n[i-1],n.pop(),i--):o++;i=r.length;for(var o=0;o<i;o++)a[o].fire(r[o]);this._time=t,this.onframe(e),this.trigger("frame",e),this.stage.update&&this.stage.update()},_startLoop:function(){function t(){e._running&&(a(t),!e._paused&&e._update())}var e=this;this._running=!0,a(t)},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=[]},animate:function(t,e){e=e||{};var n=new o(t,e.loop,e.getter,e.setter);return this.addAnimator(n),n}},i.mixin(s,r),t.exports=s},function(t,e,n){function i(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}var r=n(146);i.prototype={constructor:i,step:function(t){this._initialized||(this._startTime=t+this._delay,this._initialized=!0);var e=(t-this._startTime)/this._life;if(!(e<0)){e=Math.min(e,1);var n=this.easing,i="string"==typeof n?r[n]:n,a="function"==typeof i?i(e):e;return this.fire("frame",a),1==e?this.loop?(this.restart(t),"restart"):(this._needsRemove=!0,"destroy"):null}},restart:function(t){var e=(t-this._startTime)%this._life;this._startTime=t-e+this.gap,this._needsRemove=!1},fire:function(t,e){t="on"+t,this[t]&&this[t](this._target,e)}},t.exports=i},function(t,e){var n={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*(-Math.pow(2,-10*(t-1))+2)},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,i=.4;return 0===t?0:1===t?1:(!n||n<1?(n=1,e=i/4):e=i*Math.asin(1/n)/(2*Math.PI),-(n*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i)))},elasticOut:function(t){var e,n=.1,i=.4;return 0===t?0:1===t?1:(!n||n<1?(n=1,e=i/4):e=i*Math.asin(1/n)/(2*Math.PI),n*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/i)+1)},elasticInOut:function(t){var e,n=.1,i=.4;return 0===t?0:1===t?1:(!n||n<1?(n=1,e=i/4):e=i*Math.asin(1/n)/(2*Math.PI),(t*=2)<1?-.5*(n*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i)):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?.5*(t*t*((e+1)*t-e)):.5*((t-=2)*t*((e+1)*t+e)+2)},bounceIn:function(t){return 1-n.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*n.bounceIn(2*t):.5*n.bounceOut(2*t-1)+.5}};t.exports=n},function(t,e,n){var i=n(63).normalizeRadian,r=2*Math.PI;t.exports={containStroke:function(t,e,n,a,o,s,l,h,u){if(0===l)return!1;var c=l;h-=t,u-=e;var f=Math.sqrt(h*h+u*u);if(f-c>n||f+c<n)return!1;if(Math.abs(a-o)%r<1e-4)return!0;if(s){var d=a;a=i(o),o=i(d)}else a=i(a),o=i(o);a>o&&(o+=r);var p=Math.atan2(u,h);return p<0&&(p+=r),p>=a&&p<=o||p+r>=a&&p+r<=o}}},function(t,e,n){var i=n(18);t.exports={containStroke:function(t,e,n,r,a,o,s,l,h,u,c){if(0===h)return!1;var f=h;if(c>e+f&&c>r+f&&c>o+f&&c>l+f||c<e-f&&c<r-f&&c<o-f&&c<l-f||u>t+f&&u>n+f&&u>a+f&&u>s+f||u<t-f&&u<n-f&&u<a-f&&u<s-f)return!1;var d=i.cubicProjectPoint(t,e,n,r,a,o,s,l,u,c,null);return d<=f/2}}},function(t,e,n){"use strict";function i(t,e){return Math.abs(t-e)<x}function r(){var t=b[0];b[0]=b[1],b[1]=t}function a(t,e,n,i,a,o,s,l,h,u){if(u>e&&u>i&&u>o&&u>l||u<e&&u<i&&u<o&&u<l)return 0;var c=g.cubicRootAt(e,i,o,l,u,_);if(0===c)return 0;for(var f,d,p=0,v=-1,m=0;m<c;m++){var y=_[m],x=0===y||1===y?.5:1,w=g.cubicAt(t,n,a,s,y);w<h||(v<0&&(v=g.cubicExtrema(e,i,o,l,b),b[1]<b[0]&&v>1&&r(),f=g.cubicAt(e,i,o,l,b[0]),v>1&&(d=g.cubicAt(e,i,o,l,b[1]))),p+=2==v?y<b[0]?f<e?x:-x:y<b[1]?d<f?x:-x:l<d?x:-x:y<b[0]?f<e?x:-x:l<f?x:-x)}return p}function o(t,e,n,i,r,a,o,s){if(s>e&&s>i&&s>a||s<e&&s<i&&s<a)return 0;var l=g.quadraticRootAt(e,i,a,s,_);if(0===l)return 0;var h=g.quadraticExtremum(e,i,a);if(h>=0&&h<=1){for(var u=0,c=g.quadraticAt(e,i,a,h),f=0;f<l;f++){var d=0===_[f]||1===_[f]?.5:1,p=g.quadraticAt(t,n,r,_[f]);p<o||(u+=_[f]<h?c<e?d:-d:a<c?d:-d)}return u}var d=0===_[0]||1===_[0]?.5:1,p=g.quadraticAt(t,n,r,_[0]);return p<o?0:a<e?d:-d}function s(t,e,n,i,r,a,o,s){if(s-=e,s>n||s<-n)return 0;var l=Math.sqrt(n*n-s*s);_[0]=-l,_[1]=l;var h=Math.abs(i-r);if(h<1e-4)return 0;if(h%y<1e-4){i=0,r=y;var u=a?1:-1;return o>=_[0]+t&&o<=_[1]+t?u:0}if(a){var l=i;i=p(r),r=p(l)}else i=p(i),r=p(r);i>r&&(r+=y);for(var c=0,f=0;f<2;f++){var d=_[f];if(d+t>o){var g=Math.atan2(s,d),u=a?1:-1;g<0&&(g=y+g),(g>=i&&g<=r||g+y>=i&&g+y<=r)&&(g>Math.PI/2&&g<1.5*Math.PI&&(u=-u),c+=u)}}return c}function l(t,e,n,r,l){for(var u=0,p=0,g=0,y=0,x=0,_=0;_<t.length;){var b=t[_++];switch(b===h.M&&_>1&&(n||(u+=v(p,g,y,x,r,l))),1==_&&(p=t[_],g=t[_+1],y=p,x=g),b){case h.M:y=t[_++],x=t[_++],p=y,g=x;break;case h.L:if(n){if(m(p,g,t[_],t[_+1],e,r,l))return!0}else u+=v(p,g,t[_],t[_+1],r,l)||0;p=t[_++],g=t[_++];break;case h.C:if(n){if(c.containStroke(p,g,t[_++],t[_++],t[_++],t[_++],t[_],t[_+1],e,r,l))return!0}else u+=a(p,g,t[_++],t[_++],t[_++],t[_++],t[_],t[_+1],r,l)||0;p=t[_++],g=t[_++];break;case h.Q:if(n){if(f.containStroke(p,g,t[_++],t[_++],t[_],t[_+1],e,r,l))return!0}else u+=o(p,g,t[_++],t[_++],t[_],t[_+1],r,l)||0;p=t[_++],g=t[_++];break;case h.A:var w=t[_++],M=t[_++],T=t[_++],S=t[_++],A=t[_++],I=t[_++],C=(t[_++],1-t[_++]),L=Math.cos(A)*T+w,k=Math.sin(A)*S+M;_>1?u+=v(p,g,L,k,r,l):(y=L,x=k);var P=(r-w)*S/T+w;if(n){if(d.containStroke(w,M,S,A,A+I,C,e,P,l))return!0}else u+=s(w,M,S,A,A+I,C,P,l);p=Math.cos(A+I)*T+w,g=Math.sin(A+I)*S+M;break;case h.R:y=p=t[_++],x=g=t[_++];var D=t[_++],O=t[_++],L=y+D,k=x+O;if(n){if(m(y,x,L,x,e,r,l)||m(L,x,L,k,e,r,l)||m(L,k,y,k,e,r,l)||m(y,k,y,x,e,r,l))return!0}else u+=v(L,x,L,k,r,l),u+=v(y,k,y,x,r,l);break;case h.Z:if(n){if(m(p,g,y,x,e,r,l))return!0}else u+=v(p,g,y,x,r,l);p=y,g=x}}return n||i(g,x)||(u+=v(p,g,y,x,r,l)||0),0!==u}var h=n(29).CMD,u=n(88),c=n(148),f=n(89),d=n(147),p=n(63).normalizeRadian,g=n(18),v=n(90),m=u.containStroke,y=2*Math.PI,x=1e-4,_=[-1,-1,-1],b=[-1,-1];t.exports={contain:function(t,e,n){return l(t,0,!1,e,n)},containStroke:function(t,e,n,i){return l(t,e,!0,n,i)}}},function(t,e,n){"use strict";function i(t){var e=t[1][0]-t[0][0],n=t[1][1]-t[0][1];return Math.sqrt(e*e+n*n)}function r(t){return[(t[0][0]+t[1][0])/2,(t[0][1]+t[1][1])/2]}var a=n(25),o=function(){this._track=[]};o.prototype={constructor:o,recognize:function(t,e,n){return this._doTrack(t,e,n),this._recognize(t)},clear:function(){return this._track.length=0,this},_doTrack:function(t,e,n){var i=t.touches;if(i){for(var r={points:[],touches:[],target:e,event:t},o=0,s=i.length;o<s;o++){var l=i[o],h=a.clientToLocal(n,l,{});r.points.push([h.zrX,h.zrY]),r.touches.push(l)}this._track.push(r)}},_recognize:function(t){for(var e in s)if(s.hasOwnProperty(e)){var n=s[e](this._track,t);if(n)return n}}};var s={pinch:function(t,e){var n=t.length;if(n){var a=(t[n-1]||{}).points,o=(t[n-2]||{}).points||a;if(o&&o.length>1&&a&&a.length>1){var s=i(a)/i(o);!isFinite(s)&&(s=1),e.pinchScale=s;var l=r(a);return e.pinchX=l[0],e.pinchY=l[1],{type:"pinch",target:t[0].target,event:e}}}}};t.exports=o},function(t,e){var n=function(){this.head=null,this.tail=null,this._len=0},i=n.prototype;i.insert=function(t){var e=new r(t);return this.insertEntry(e),e},i.insertEntry=function(t){this.head?(this.tail.next=t,t.prev=this.tail,this.tail=t):this.head=this.tail=t,this._len++},i.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--},i.len=function(){return this._len};var r=function(t){this.value=t,this.next,this.prev},a=function(t){this._list=new n,this._map={},this._maxSize=t||10},o=a.prototype;o.put=function(t,e){var n=this._list,i=this._map;if(null==i[t]){var r=n.len();if(r>=this._maxSize&&r>0){var a=n.head;n.remove(a),delete i[a.key]}var o=n.insert(e);o.key=t,i[t]=o}},o.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},o.clear=function(){this._list.clear(),this._map={}},t.exports=a},function(t,e,n){function i(t){return"mousewheel"===t&&f.browser.firefox?"DOMMouseScroll":t}function r(t,e,n){var i=t._gestureMgr;"start"===n&&i.clear();var r=i.recognize(e,t.handler.findHover(e.zrX,e.zrY,null),t.dom);if("end"===n&&i.clear(),r){var a=r.type;e.gestureEvent=a,t.handler.dispatchToElement(r.target,a,r.event)}}function a(t){t._touching=!0,clearTimeout(t._touchTimer),t._touchTimer=setTimeout(function(){t._touching=!1},700)}function o(t){var e=t.pointerType;return"pen"===e||"touch"===e}function s(t){function e(t,e){return function(){if(!e._touching)return t.apply(e,arguments)}}u.each(x,function(e){t._handlers[e]=u.bind(w[e],t)}),u.each(b,function(e){t._handlers[e]=u.bind(w[e],t)}),u.each(y,function(n){t._handlers[n]=e(w[n],t)})}function l(t){function e(e,n){u.each(e,function(e){p(t,i(e),n._handlers[e])},n)}c.call(this),this.dom=t,this._touching=!1,this._touchTimer,this._gestureMgr=new d,this._handlers={},s(this),f.pointerEventsSupported?e(b,this):(f.touchEventsSupported&&e(x,this),e(y,this))}var h=n(25),u=n(1),c=n(21),f=n(10),d=n(150),p=h.addEventListener,g=h.removeEventListener,v=h.normalizeEvent,m=300,y=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],x=["touchstart","touchend","touchmove"],_={pointerdown:1,pointerup:1,pointermove:1,pointerout:1},b=u.map(y,function(t){var e=t.replace("mouse","pointer");return _[e]?e:t}),w={mousemove:function(t){t=v(this.dom,t),this.trigger("mousemove",t)},mouseout:function(t){t=v(this.dom,t);var e=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=v(this.dom,t),t.zrByTouch=!0,this._lastTouchMoment=new Date,r(this,t,"start"),w.mousemove.call(this,t),w.mousedown.call(this,t),a(this)},touchmove:function(t){t=v(this.dom,t),t.zrByTouch=!0,r(this,t,"change"),w.mousemove.call(this,t),a(this)},touchend:function(t){t=v(this.dom,t),t.zrByTouch=!0,r(this,t,"end"),w.mouseup.call(this,t),+new Date-this._lastTouchMoment<m&&w.click.call(this,t),a(this)},pointerdown:function(t){w.mousedown.call(this,t)},pointermove:function(t){o(t)||w.mousemove.call(this,t)},pointerup:function(t){w.mouseup.call(this,t)},pointerout:function(t){o(t)||w.mouseout.call(this,t)}};u.each(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],function(t){w[t]=function(e){e=v(this.dom,e),this.trigger(t,e)}});var M=l.prototype;M.dispose=function(){for(var t=y.concat(x),e=0;e<t.length;e++){var n=t[e];g(this.dom,i(n),this._handlers[n])}},M.setCursor=function(t){this.dom.style.cursor=t||"default"},u.mixin(l,c),t.exports=l},function(t,e,n){var i=n(7);t.exports=i.extend({type:"compound",shape:{paths:null},_updatePathDirty:function(){for(var t=this.__dirtyPath,e=this.shape.paths,n=0;n<e.length;n++)t=t||e[n].__dirtyPath;this.__dirtyPath=t,this.__dirty=this.__dirty||t},beforeBrush:function(){this._updatePathDirty();for(var t=this.shape.paths||[],e=this.getGlobalScale(),n=0;n<t.length;n++)t[n].path.setScale(e[0],e[1])},buildPath:function(t,e){for(var n=e.paths||[],i=0;i<n.length;i++)n[i].buildPath(t,n[i].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(),i.prototype.getBoundingRect.call(this)}})},function(t,e,n){"use strict";var i=n(1),r=n(37),a=function(t,e,n,i,a){this.x=null==t?.5:t,this.y=null==e?.5:e,this.r=null==n?.5:n,this.type="radial",this.global=a||!1,r.call(this,i)};a.prototype={constructor:a},i.inherits(a,r),t.exports=a},function(t,e){t.exports={buildPath:function(t,e){var n,i,r,a,o=e.x,s=e.y,l=e.width,h=e.height,u=e.r;l<0&&(o+=l,l=-l),h<0&&(s+=h,h=-h),"number"==typeof u?n=i=r=a=u:u instanceof Array?1===u.length?n=i=r=a=u[0]:2===u.length?(n=r=u[0],i=a=u[1]):3===u.length?(n=u[0],i=a=u[1],r=u[2]):(n=u[0],i=u[1],r=u[2],a=u[3]):n=i=r=a=0;var c;n+i>l&&(c=n+i,n*=l/c,i*=l/c),r+a>l&&(c=r+a,r*=l/c,a*=l/c),i+r>h&&(c=i+r,i*=h/c,r*=h/c),n+a>h&&(c=n+a,n*=h/c,a*=h/c),t.moveTo(o+n,s),t.lineTo(o+l-i,s),0!==i&&t.quadraticCurveTo(o+l,s,o+l,s+i),t.lineTo(o+l,s+h-r),0!==r&&t.quadraticCurveTo(o+l,s+h,o+l-r,s+h),t.lineTo(o+a,s+h),0!==a&&t.quadraticCurveTo(o,s+h,o,s+h-a),t.lineTo(o,s+n),0!==n&&t.quadraticCurveTo(o,s,o+n,s)}}},function(t,e,n){var i=n(5),r=i.min,a=i.max,o=i.scale,s=i.distance,l=i.add;t.exports=function(t,e,n,h){var u,c,f,d,p=[],g=[],v=[],m=[];if(h){f=[1/0,1/0],d=[-(1/0),-(1/0)];for(var y=0,x=t.length;y<x;y++)r(f,f,t[y]),a(d,d,t[y]);r(f,f,h[0]),a(d,d,h[1])}for(var y=0,x=t.length;y<x;y++){var _=t[y];if(n)u=t[y?y-1:x-1],c=t[(y+1)%x];else{if(0===y||y===x-1){p.push(i.clone(t[y]));continue}u=t[y-1],c=t[y+1]}i.sub(g,c,u),o(g,g,e);var b=s(_,u),w=s(_,c),M=b+w;0!==M&&(b/=M,w/=M),o(v,g,-b),o(m,g,w);var T=l([],_,v),S=l([],_,m);h&&(a(T,T,f),r(T,T,d),a(S,S,f),r(S,S,d)),p.push(T),p.push(S)}return n&&p.push(p.shift()),p}},function(t,e,n){function i(t,e,n,i,r,a,o){var s=.5*(n-t),l=.5*(i-e);return(2*(e-n)+s+l)*o+(-3*(e-n)-2*s-l)*a+s*r+e}var r=n(5);t.exports=function(t,e){for(var n=t.length,a=[],o=0,s=1;s<n;s++)o+=r.distance(t[s-1],t[s]);var l=o/2;l=l<n?n:l;for(var s=0;s<l;s++){var h,u,c,f=s/(l-1)*(e?n:n-1),d=Math.floor(f),p=f-d,g=t[d%n];e?(h=t[(d-1+n)%n],u=t[(d+1)%n],c=t[(d+2)%n]):(h=t[0===d?d:d-1],u=t[d>n-2?n-1:d+1],c=t[d>n-3?n-1:d+2]);var v=p*p,m=p*v;a.push([i(h[0],g[0],u[0],c[0],p,v,m),i(h[1],g[1],u[1],c[1],p,v,m)])}return a}},function(t,e,n){t.exports=n(7).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 n=e.cx,i=e.cy,r=Math.max(e.r,0),a=e.startAngle,o=e.endAngle,s=e.clockwise,l=Math.cos(a),h=Math.sin(a);t.moveTo(l*r+n,h*r+i),t.arc(n,i,r,a,o,!s)}})},function(t,e,n){"use strict";function i(t,e,n){var i=t.cpx2,r=t.cpy2;return null===i||null===r?[(n?c:h)(t.x1,t.cpx1,t.cpx2,t.x2,e),(n?c:h)(t.y1,t.cpy1,t.cpy2,t.y2,e)]:[(n?u:l)(t.x1,t.cpx1,t.x2,e),(n?u:l)(t.y1,t.cpy1,t.y2,e)]}var r=n(18),a=n(5),o=r.quadraticSubdivide,s=r.cubicSubdivide,l=r.quadraticAt,h=r.cubicAt,u=r.quadraticDerivativeAt,c=r.cubicDerivativeAt,f=[];t.exports=n(7).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 n=e.x1,i=e.y1,r=e.x2,a=e.y2,l=e.cpx1,h=e.cpy1,u=e.cpx2,c=e.cpy2,d=e.percent;0!==d&&(t.moveTo(n,i),null==u||null==c?(d<1&&(o(n,l,r,d,f),l=f[1],r=f[2],o(i,h,a,d,f),h=f[1],a=f[2]),t.quadraticCurveTo(l,h,r,a)):(d<1&&(s(n,l,u,r,d,f),l=f[1],u=f[2],r=f[3],s(i,h,c,a,d,f),h=f[1],c=f[2],a=f[3]),t.bezierCurveTo(l,h,u,c,r,a)))},pointAt:function(t){return i(this.shape,t,!1)},tangentAt:function(t){var e=i(this.shape,t,!0);return a.normalize(e,e)}})},function(t,e,n){"use strict";t.exports=n(7).extend({type:"circle",shape:{cx:0,cy:0,r:0},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,!0)}})},function(t,e,n){t.exports=n(7).extend({type:"line",shape:{x1:0,y1:0,x2:0,y2:0,percent:1},style:{stroke:"#000",fill:null},buildPath:function(t,e){var n=e.x1,i=e.y1,r=e.x2,a=e.y2,o=e.percent;0!==o&&(t.moveTo(n,i),o<1&&(r=n*(1-o)+r*o,a=i*(1-o)+a*o),t.lineTo(r,a))},pointAt:function(t){var e=this.shape;return[e.x1*(1-t)+e.x2*t,e.y1*(1-t)+e.y2*t]}})},function(t,e,n){var i=n(67);t.exports=n(7).extend({type:"polygon",shape:{points:null,smooth:!1,smoothConstraint:null},buildPath:function(t,e){i.buildPath(t,e,!0)}})},function(t,e,n){var i=n(67);t.exports=n(7).extend({type:"polyline",shape:{points:null,smooth:!1,smoothConstraint:null},style:{stroke:"#000",fill:null},buildPath:function(t,e){i.buildPath(t,e,!1)}})},function(t,e,n){var i=n(155);t.exports=n(7).extend({type:"rect",shape:{r:0,x:0,y:0,width:0,height:0},buildPath:function(t,e){var n=e.x,r=e.y,a=e.width,o=e.height;e.r?i.buildPath(t,e):t.rect(n,r,a,o),t.closePath()}})},function(t,e,n){t.exports=n(7).extend({type:"ring",shape:{cx:0,cy:0,r:0,r0:0},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)}})},function(t,e,n){var i=n(10),r=n(7),a=[["shadowBlur",0],["shadowColor","#000"],["shadowOffsetX",0],["shadowOffsetY",0]];t.exports=r.extend({type:"sector",shape:{cx:0,cy:0,r0:0,r:0,startAngle:0,endAngle:2*Math.PI,clockwise:!0},brush:i.browser.ie&&i.browser.version>=11?function(){var t,e=this.__clipPaths,n=this.style;if(e)for(var i=0;i<e.length;i++){var o=e[i]&&e[i].shape;if(o&&o.startAngle===o.endAngle){for(var s=0;s<a.length;s++)a[s][2]=n[a[s][0]],n[a[s][0]]=a[s][1];t=!0;break}}if(r.prototype.brush.apply(this,arguments),t)for(var s=0;s<a.length;s++)n[a[s][0]]=a[s][2]}:r.prototype.brush,buildPath:function(t,e){var n=e.cx,i=e.cy,r=Math.max(e.r0||0,0),a=Math.max(e.r,0),o=e.startAngle,s=e.endAngle,l=e.clockwise,h=Math.cos(o),u=Math.sin(o);t.moveTo(h*r+n,u*r+i),t.lineTo(h*a+n,u*a+i),t.arc(n,i,a,o,s,!l),t.lineTo(Math.cos(s)*r+n,Math.sin(s)*r+i),0!==r&&t.arc(n,i,r,s,o,l),t.closePath()}})},function(t,e,n){"use strict";var i=n(61),r=n(1),a=r.isString,o=r.isFunction,s=r.isObject,l=n(48),h=function(){this.animators=[]};h.prototype={constructor:h,animate:function(t,e){var n,a=!1,o=this,s=this.__zr;if(t){var h=t.split("."),u=o;a="shape"===h[0];for(var c=0,f=h.length;c<f;c++)u&&(u=u[h[c]]);u&&(n=u)}else n=o;if(!n)return void l('Property "'+t+'" is not existed in element '+o.id);var d=o.animators,p=new i(n,e);return p.during(function(t){o.dirty(a)}).done(function(){d.splice(r.indexOf(d,p),1)}),d.push(p),s&&s.animation.addAnimator(p),p},stopAnimation:function(t){for(var e=this.animators,n=e.length,i=0;i<n;i++)e[i].stop(t);return e.length=0,this},animateTo:function(t,e,n,i,r){function s(){h--,h||r&&r()}a(n)?(r=i,i=n,n=0):o(i)?(r=i,i="linear",n=0):o(n)?(r=n,n=0):o(e)?(r=e,e=500):e||(e=500),this.stopAnimation(),this._animateToShallow("",this,t,e,n,i,r);var l=this.animators.slice(),h=l.length;h||r&&r();for(var u=0;u<l.length;u++)l[u].done(s).start(i)},_animateToShallow:function(t,e,n,i,a){var o={},l=0;for(var h in n)if(n.hasOwnProperty(h))if(null!=e[h])s(n[h])&&!r.isArrayLike(n[h])?this._animateToShallow(t?t+"."+h:h,e[h],n[h],i,a):(o[h]=n[h],l++);else if(null!=n[h])if(t){var u={};u[t]={},u[t][h]=n[h],this.attr(u)}else this.attr(h,n[h]);return l>0&&this.animate(t,!1).when(null==i?500:i,o).delay(a||0),this}},t.exports=h},function(t,e){function n(){this.on("mousedown",this._dragStart,this),this.on("mousemove",this._drag,this),this.on("mouseup",this._dragEnd,this),this.on("globalout",this._dragEnd,this)}n.prototype={constructor:n,_dragStart:function(t){var e=t.target;e&&e.draggable&&(this._draggingTarget=e,e.dragging=!0,this._x=t.offsetX,this._y=t.offsetY,this.dispatchToElement(e,"dragstart",t.event))},_drag:function(t){var e=this._draggingTarget;if(e){var n=t.offsetX,i=t.offsetY,r=n-this._x,a=i-this._y;this._x=n,this._y=i,e.drift(r,a,t),this.dispatchToElement(e,"drag",t.event);var o=this.findHover(n,i,e),s=this._dropTarget;this._dropTarget=o,e!==o&&(s&&o!==s&&this.dispatchToElement(s,"dragleave",t.event),o&&o!==s&&this.dispatchToElement(o,"dragenter",t.event))}},_dragEnd:function(t){var e=this._draggingTarget;e&&(e.dragging=!1),this.dispatchToElement(e,"dragend",t.event),this._dropTarget&&this.dispatchToElement(this._dropTarget,"drop",t.event),this._draggingTarget=null,this._dropTarget=null}},t.exports=n},function(t,e,n){function i(t,e,n,i,r,a,o,s,l,h,u){var g=l*(p/180),y=d(g)*(t-n)/2+f(g)*(e-i)/2,x=-1*f(g)*(t-n)/2+d(g)*(e-i)/2,_=y*y/(o*o)+x*x/(s*s);_>1&&(o*=c(_),s*=c(_));var b=(r===a?-1:1)*c((o*o*(s*s)-o*o*(x*x)-s*s*(y*y))/(o*o*(x*x)+s*s*(y*y)))||0,w=b*o*x/s,M=b*-s*y/o,T=(t+n)/2+d(g)*w-f(g)*M,S=(e+i)/2+f(g)*w+d(g)*M,A=m([1,0],[(y-w)/o,(x-M)/s]),I=[(y-w)/o,(x-M)/s],C=[(-1*y-w)/o,(-1*x-M)/s],L=m(I,C);v(I,C)<=-1&&(L=p),v(I,C)>=1&&(L=0),0===a&&L>0&&(L-=2*p),1===a&&L<0&&(L+=2*p),u.addData(h,T,S,o,s,A,L,g,a)}function r(t){if(!t)return[];var e,n=t.replace(/-/g," -").replace(/  /g," ").replace(/ /g,",").replace(/,,/g,",");for(e=0;e<u.length;e++)n=n.replace(new RegExp(u[e],"g"),"|"+u[e]);var r,a=n.split("|"),o=0,l=0,h=new s,c=s.CMD;for(e=1;e<a.length;e++){var f,d=a[e],p=d.charAt(0),g=0,v=d.slice(1).replace(/e,-/g,"e-").split(",");v.length>0&&""===v[0]&&v.shift();for(var m=0;m<v.length;m++)v[m]=parseFloat(v[m]);for(;g<v.length&&!isNaN(v[g])&&!isNaN(v[0]);){var y,x,_,b,w,M,T,S=o,A=l;switch(p){case"l":o+=v[g++],l+=v[g++],f=c.L,
-h.addData(f,o,l);break;case"L":o=v[g++],l=v[g++],f=c.L,h.addData(f,o,l);break;case"m":o+=v[g++],l+=v[g++],f=c.M,h.addData(f,o,l),p="l";break;case"M":o=v[g++],l=v[g++],f=c.M,h.addData(f,o,l),p="L";break;case"h":o+=v[g++],f=c.L,h.addData(f,o,l);break;case"H":o=v[g++],f=c.L,h.addData(f,o,l);break;case"v":l+=v[g++],f=c.L,h.addData(f,o,l);break;case"V":l=v[g++],f=c.L,h.addData(f,o,l);break;case"C":f=c.C,h.addData(f,v[g++],v[g++],v[g++],v[g++],v[g++],v[g++]),o=v[g-2],l=v[g-1];break;case"c":f=c.C,h.addData(f,v[g++]+o,v[g++]+l,v[g++]+o,v[g++]+l,v[g++]+o,v[g++]+l),o+=v[g-2],l+=v[g-1];break;case"S":y=o,x=l;var I=h.len(),C=h.data;r===c.C&&(y+=o-C[I-4],x+=l-C[I-3]),f=c.C,S=v[g++],A=v[g++],o=v[g++],l=v[g++],h.addData(f,y,x,S,A,o,l);break;case"s":y=o,x=l;var I=h.len(),C=h.data;r===c.C&&(y+=o-C[I-4],x+=l-C[I-3]),f=c.C,S=o+v[g++],A=l+v[g++],o+=v[g++],l+=v[g++],h.addData(f,y,x,S,A,o,l);break;case"Q":S=v[g++],A=v[g++],o=v[g++],l=v[g++],f=c.Q,h.addData(f,S,A,o,l);break;case"q":S=v[g++]+o,A=v[g++]+l,o+=v[g++],l+=v[g++],f=c.Q,h.addData(f,S,A,o,l);break;case"T":y=o,x=l;var I=h.len(),C=h.data;r===c.Q&&(y+=o-C[I-4],x+=l-C[I-3]),o=v[g++],l=v[g++],f=c.Q,h.addData(f,y,x,o,l);break;case"t":y=o,x=l;var I=h.len(),C=h.data;r===c.Q&&(y+=o-C[I-4],x+=l-C[I-3]),o+=v[g++],l+=v[g++],f=c.Q,h.addData(f,y,x,o,l);break;case"A":_=v[g++],b=v[g++],w=v[g++],M=v[g++],T=v[g++],S=o,A=l,o=v[g++],l=v[g++],f=c.A,i(S,A,o,l,M,T,_,b,w,f,h);break;case"a":_=v[g++],b=v[g++],w=v[g++],M=v[g++],T=v[g++],S=o,A=l,o+=v[g++],l+=v[g++],f=c.A,i(S,A,o,l,M,T,_,b,w,f,h)}}"z"!==p&&"Z"!==p||(f=c.Z,h.addData(f)),r=f}return h.toStatic(),h}function a(t,e){var n,i=r(t);return e=e||{},e.buildPath=function(t){t.setData(i.data),n&&l(t,n);var e=t.getContext();e&&t.rebuildPath(e)},e.applyTransform=function(t){n||(n=h.create()),h.mul(n,t,n),this.dirty(!0)},e}var o=n(7),s=n(29),l=n(170),h=n(20),u=["m","M","l","L","v","V","h","H","z","Z","c","C","q","Q","t","T","s","S","a","A"],c=Math.sqrt,f=Math.sin,d=Math.cos,p=Math.PI,g=function(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])},v=function(t,e){return(t[0]*e[0]+t[1]*e[1])/(g(t)*g(e))},m=function(t,e){return(t[0]*e[1]<t[1]*e[0]?-1:1)*Math.acos(v(t,e))};t.exports={createFromString:function(t,e){return new o(a(t,e))},extendFromString:function(t,e){return o.extend(a(t,e))},mergePath:function(t,e){for(var n=[],i=t.length,r=0;r<i;r++){var a=t[r];a.__dirty&&a.buildPath(a.path,a.shape,!0),n.push(a.path)}var s=new o(e);return s.buildPath=function(t){t.appendPath(n);var e=t.getContext();e&&t.rebuildPath(e)},s}}},function(t,e,n){function i(t,e){var n,i,a,u,c,f,d=t.data,p=r.M,g=r.C,v=r.L,m=r.R,y=r.A,x=r.Q;for(a=0,u=0;a<d.length;){switch(n=d[a++],u=a,i=0,n){case p:i=1;break;case v:i=1;break;case g:i=3;break;case x:i=2;break;case y:var _=e[4],b=e[5],w=l(e[0]*e[0]+e[1]*e[1]),M=l(e[2]*e[2]+e[3]*e[3]),T=h(-e[1]/M,e[0]/w);d[a++]+=_,d[a++]+=b,d[a++]*=w,d[a++]*=M,d[a++]+=T,d[a++]+=T,a+=2,u=a;break;case m:f[0]=d[a++],f[1]=d[a++],o(f,f,e),d[u++]=f[0],d[u++]=f[1],f[0]+=d[a++],f[1]+=d[a++],o(f,f,e),d[u++]=f[0],d[u++]=f[1]}for(c=0;c<i;c++){var f=s[c];f[0]=d[a++],f[1]=d[a++],o(f,f,e),d[u++]=f[0],d[u++]=f[1]}}}var r=n(29).CMD,a=n(5),o=a.applyTransform,s=[[],[],[]],l=Math.sqrt,h=Math.atan2;t.exports=i}])});
\ No newline at end of file
+var r=n(70),a=n(9),o=n(1),s=n(154),l=n(157),h=n(158),u=n(165),c=!a.canvasSupported,f={canvas:n(156)},d={},p={};p.version="3.4.0",p.init=function(t,e){var n=new g(r(),t,e);return d[n.id]=n,n},p.dispose=function(t){if(t)t.dispose();else{for(var e in d)d.hasOwnProperty(e)&&d[e].dispose();d={}}return p},p.getInstance=function(t){return d[t]},p.registerPainter=function(t,e){f[t]=e};var g=function(t,e,n){n=n||{},this.dom=e,this.id=t;var i=this,r=new l,d=n.renderer;if(c){if(!f.vml)throw new Error("You need to require 'zrender/vml/vml' to support IE8");d="vml"}else d&&f[d]||(d="canvas");var p=new f[d](e,r,n);this.storage=r,this.painter=p;var g=a.node?null:new u(p.getViewportRoot());this.handler=new s(r,p,g,p.root),this.animation=new h({stage:{update:o.bind(this.flush,this)}}),this.animation.start(),this._needsRefresh;var v=r.delFromMap,m=r.addToMap;r.delFromMap=function(t){var e=r.get(t);v.call(r,t),e&&e.removeSelfFromZr(i)},r.addToMap=function(t){m.call(r,t),t.addSelfToZr(i)}};g.prototype={constructor:g,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(t,e),this._needsRefresh=!0},refreshImmediately:function(){this._needsRefresh=!1,this.painter.refresh(),this._needsRefresh=!1},refresh:function(){this._needsRefresh=!0},flush:function(){this._needsRefresh&&this.refreshImmediately(),this._needsRefreshHover&&this.refreshHoverImmediately()},addHover:function(t,e){this.painter.addHover&&(this.painter.addHover(t,e),this.refreshHover())},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)},on:function(t,e,n){this.handler.on(t,e,n)},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,i(this.id)}},t.exports=p},function(t,e,n){var i=n(2),r=n(1);t.exports=function(t,e){r.each(e,function(e){e.update="updateView",i.registerAction(e,function(n,i){var r={};return i.eachComponent({mainType:"series",subType:t,query:n},function(t){t[e.method]&&t[e.method](n.name);var i=t.getData();i.each(function(e){var n=i.getName(e);r[n]=t.isSelected(n)||!1})}),{name:n.name,selected:r}})})}},function(t,e,n){"use strict";var i=n(18),r=n(27);t.exports=i.extend({type:"series.__base_bar__",getInitialData:function(t,e){return r(t.data,this,e)},getMarkerPosition:function(t){var e=this.coordinateSystem;if(e){var n=e.dataToPoint(t,!0),i=this.getData(),r=i.getLayout("offset"),a=i.getLayout("size"),o=e.getBaseAxis().isHorizontal()?0:1;return n[o]+=r+a/2,n}return[NaN,NaN]},defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,barMinHeight:0,itemStyle:{normal:{},emphasis:{}}}})},function(t,e,n){function i(t,e,n,i,r){a.setText(t,e,n),t.text=i,"outside"===t.textPosition&&(t.textPosition=r)}var r=n(1),a=n(3),o={};o.setLabel=function(t,e,n,a,o,s,l){var h=n.getModel("label.normal"),u=n.getModel("label.emphasis");h.get("show")?i(t,h,a,r.retrieve(o.getFormattedLabel(s,"normal"),o.getRawValue(s)),l):t.text="",u.get("show")?i(e,u,a,r.retrieve(o.getFormattedLabel(s,"emphasis"),o.getRawValue(s)),l):e.text=""},t.exports=o},function(t,e,n){function i(t){return isNaN(t[0])||isNaN(t[1])}function r(t,e,n,r,a,o,g,v,m,y,x){for(var _=0,b=n,w=0;w<r;w++){var M=e[b];if(b>=a||b<0)break;if(i(M)){if(x){b+=o;continue}break}if(b===n)t[o>0?"moveTo":"lineTo"](M[0],M[1]),c(d,M);else if(m>0){var T=b+o,S=e[T];if(x)for(;S&&i(e[T]);)T+=o,S=e[T];var A=.5,I=e[_],S=e[T];if(!S||i(S))c(p,M);else{i(S)&&!x&&(S=M),s.sub(f,S,I);var C,P;if("x"===y||"y"===y){var L="x"===y?0:1;C=Math.abs(M[L]-I[L]),P=Math.abs(M[L]-S[L])}else C=s.dist(M,I),P=s.dist(M,S);A=P/(P+C),u(p,M,f,-m*(1-A))}l(d,d,v),h(d,d,g),l(p,p,v),h(p,p,g),t.bezierCurveTo(d[0],d[1],p[0],p[1],M[0],M[1]),u(d,M,f,m*A)}else t.lineTo(M[0],M[1]);_=b,b+=o}return w}function a(t,e){var n=[1/0,1/0],i=[-(1/0),-(1/0)];if(e)for(var r=0;r<t.length;r++){var a=t[r];a[0]<n[0]&&(n[0]=a[0]),a[1]<n[1]&&(n[1]=a[1]),a[0]>i[0]&&(i[0]=a[0]),a[1]>i[1]&&(i[1]=a[1])}return{min:e?n:i,max:e?i:n}}var o=n(8),s=n(6),l=s.min,h=s.max,u=s.scaleAndAdd,c=s.copy,f=[],d=[],p=[];t.exports={Polyline:o.extend({type:"ec-polyline",shape:{points:[],smooth:0,smoothConstraint:!0,smoothMonotone:null,connectNulls:!1},style:{fill:null,stroke:"#000"},buildPath:function(t,e){var n=e.points,o=0,s=n.length,l=a(n,e.smoothConstraint);if(e.connectNulls){for(;s>0&&i(n[s-1]);s--);for(;o<s&&i(n[o]);o++);}for(;o<s;)o+=r(t,n,o,s,s,1,l.min,l.max,e.smooth,e.smoothMonotone,e.connectNulls)+1}}),Polygon:o.extend({type:"ec-polygon",shape:{points:[],stackedOnPoints:[],smooth:0,stackedOnSmooth:0,smoothConstraint:!0,smoothMonotone:null,connectNulls:!1},buildPath:function(t,e){var n=e.points,o=e.stackedOnPoints,s=0,l=n.length,h=e.smoothMonotone,u=a(n,e.smoothConstraint),c=a(o,e.smoothConstraint);if(e.connectNulls){for(;l>0&&i(n[l-1]);l--);for(;s<l&&i(n[s]);s++);}for(;s<l;){var f=r(t,n,s,l,l,1,u.min,u.max,e.smooth,h,e.connectNulls);r(t,o,s+f-1,f,l,-1,c.min,c.max,e.stackedOnSmooth,h,e.connectNulls),s+=f+1,t.closePath()}}})}},,function(t,e,n){"use strict";var i=n(3),r=n(1),a=n(2);n(56),n(119),a.extendComponentView({type:"grid",render:function(t,e){this.group.removeAll(),t.get("show")&&this.group.add(new i.Rect({shape:t.coordinateSystem.getRect(),style:r.defaults({fill:t.get("backgroundColor")},t.getItemStyle()),silent:!0,z2:-1}))}}),a.registerPreprocessor(function(t){t.xAxis&&t.yAxis&&!t.grid&&(t.grid={})})},,,function(t,e,n){var i=n(1),r={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,lineStyle:{color:"#333",width:1,type:"solid"}},axisTick:{show:!0,inside:!1,length:5,lineStyle:{width:1}},axisLabel:{show:!0,inside:!1,rotate:0,margin:8,textStyle:{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)"]}}},a=i.merge({boundaryGap:!0,splitLine:{show:!1},axisTick:{alignWithLabel:!1,interval:"auto"},axisLabel:{interval:"auto"}},r),o=i.merge({boundaryGap:[0,0],splitNumber:5},r),s=i.defaults({scale:!0,min:"dataMin",max:"dataMax"},o),l=i.defaults({logBase:10},o);l.scale=!0,t.exports={categoryAxis:a,valueAxis:o,timeAxis:s,logAxis:l}},function(t,e,n){"use strict";function i(t){return t.get("stack")||"__ec_stack_"+t.seriesIndex}function r(t){return t.dim+t.index}function a(t,e){var n={};s.each(t,function(t,e){var a=t.getData(),o=t.coordinateSystem,s=o.getBaseAxis(),l=s.getExtent(),u="category"===s.type?s.getBandWidth():Math.abs(l[1]-l[0])/a.count(),c=n[r(s)]||{bandWidth:u,remainedWidth:u,autoWidthCount:0,categoryGap:"20%",gap:"30%",stacks:{}},f=c.stacks;n[r(s)]=c;var d=i(t);f[d]||c.autoWidthCount++,f[d]=f[d]||{width:0,maxWidth:0};var p=h(t.get("barWidth"),u),g=h(t.get("barMaxWidth"),u),v=t.get("barGap"),m=t.get("barCategoryGap");p&&!f[d].width&&(p=Math.min(c.remainedWidth,p),f[d].width=p,c.remainedWidth-=p),g&&(f[d].maxWidth=g),null!=v&&(c.gap=v),null!=m&&(c.categoryGap=m)});var a={};return s.each(n,function(t,e){a[e]={};var n=t.stacks,i=t.bandWidth,r=h(t.categoryGap,i),o=h(t.gap,1),l=t.remainedWidth,u=t.autoWidthCount,c=(l-r)/(u+(u-1)*o);c=Math.max(c,0),s.each(n,function(t,e){var n=t.maxWidth;!t.width&&n&&n<c&&(n=Math.min(n,l),l-=n,t.width=n,u--)}),c=(l-r)/(u+(u-1)*o),c=Math.max(c,0);var f,d=0;s.each(n,function(t,e){t.width||(t.width=c),f=t,d+=t.width*(1+o)}),f&&(d-=f.width*o);var p=-d/2;s.each(n,function(t,n){a[e][n]=a[e][n]||{offset:p,width:t.width},p+=t.width*(1+o)})}),a}function o(t,e,n){var o=a(s.filter(e.getSeriesByType(t),function(t){return!e.isSeriesFiltered(t)&&t.coordinateSystem&&"cartesian2d"===t.coordinateSystem.type})),l={},h={};e.eachSeriesByType(t,function(t){var e=t.getData(),n=t.coordinateSystem,a=n.getBaseAxis(),s=i(t),u=o[r(a)][s],c=u.offset,f=u.width,d=n.getOtherAxis(a),p=t.get("barMinHeight")||0,g=a.onZero?d.toGlobalCoord(d.dataToCoord(0)):d.getGlobalExtent()[0],v=n.dataToPoints(e,!0);l[s]=l[s]||[],h[s]=h[s]||[],e.setLayout({offset:c,size:f}),e.each(d.dim,function(t,n){if(!isNaN(t)){l[s][n]||(l[s][n]={p:g,n:g},h[s][n]={p:g,n:g});var i,r,a,o,u=t>=0?"p":"n",m=v[n],y=l[s][n][u],x=h[s][n][u];d.isHorizontal()?(i=y,r=m[1]+c,a=m[0]-x,o=f,h[s][n][u]+=a,Math.abs(a)<p&&(a=(a<0?-1:1)*p),l[s][n][u]+=a):(i=m[0]+c,r=y,a=f,o=m[1]-x,h[s][n][u]+=o,Math.abs(o)<p&&(o=(o<=0?-1:1)*p),l[s][n][u]+=o),e.setItemLayout(n,{x:i,y:r,width:a,height:o})}},!0)},this)}var s=n(1),l=n(4),h=l.parsePercent;t.exports=o},function(t,e){t.exports={containStroke:function(t,e,n,i,r,a,o){if(0===r)return!1;var s=r,l=0,h=t;if(o>e+s&&o>i+s||o<e-s&&o<i-s||a>t+s&&a>n+s||a<t-s&&a<n-s)return!1;if(t===n)return Math.abs(a-t)<=s/2;l=(e-i)/(t-n),h=(t*i-n*e)/(t-n);var u=l*a-o+h,c=u*u/(l*l+1);return c<=s/2*s/2}}},function(t,e,n){var i=n(21);t.exports={containStroke:function(t,e,n,r,a,o,s,l,h){if(0===s)return!1;var u=s;if(h>e+u&&h>r+u&&h>o+u||h<e-u&&h<r-u&&h<o-u||l>t+u&&l>n+u&&l>a+u||l<t-u&&l<n-u&&l<a-u)return!1;var c=i.quadraticProjectPoint(t,e,n,r,a,o,l,h,null);return c<=u/2}}},function(t,e){t.exports=function(t,e,n,i,r,a){if(a>e&&a>i||a<e&&a<i)return 0;if(i===e)return 0;var o=i<e?1:-1,s=(a-e)/(i-e);1!==s&&0!==s||(o=i<e?.5:-.5);var l=s*(n-t)+t;return l>r?o:0}},function(t,e,n){"use strict";var i=n(1),r=n(41),a=function(t,e,n,i,a,o){this.x=null==t?0:t,this.y=null==e?0:e,this.x2=null==n?1:n,this.y2=null==i?0:i,this.type="linear",this.global=o||!1,r.call(this,a)};a.prototype={constructor:a},i.inherits(a,r),t.exports=a},function(t,e,n){"use strict";function i(t){return t>s||t<-s}var r=n(19),a=n(6),o=r.identity,s=5e-5,l=function(t){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},h=l.prototype;h.transform=null,h.needLocalTransform=function(){return i(this.rotation)||i(this.position[0])||i(this.position[1])||i(this.scale[0]-1)||i(this.scale[1]-1)},h.updateTransform=function(){var t=this.parent,e=t&&t.transform,n=this.needLocalTransform(),i=this.transform;return n||e?(i=i||r.create(),n?this.getLocalTransform(i):o(i),e&&(n?r.mul(i,t.transform,i):r.copy(i,t.transform)),this.transform=i,this.invTransform=this.invTransform||r.create(),void r.invert(this.invTransform,i)):void(i&&o(i))},h.getLocalTransform=function(t){t=t||[],o(t);var e=this.origin,n=this.scale,i=this.rotation,a=this.position;return e&&(t[4]-=e[0],t[5]-=e[1]),r.scale(t,t,n),i&&r.rotate(t,t,i),e&&(t[4]+=e[0],t[5]+=e[1]),t[4]+=a[0],t[5]+=a[1],t},h.setTransform=function(t){var e=this.transform,n=t.dpr||1;e?t.setTransform(n*e[0],n*e[1],n*e[2],n*e[3],n*e[4],n*e[5]):t.setTransform(n,0,0,n,0,0)},h.restoreTransform=function(t){var e=(this.transform,t.dpr||1);t.setTransform(e,0,0,e,0,0)};var u=[];h.decomposeTransform=function(){if(this.transform){var t=this.parent,e=this.transform;t&&t.transform&&(r.mul(u,t.invTransform,e),e=u);var n=e[0]*e[0]+e[1]*e[1],a=e[2]*e[2]+e[3]*e[3],o=this.position,s=this.scale;i(n-1)&&(n=Math.sqrt(n)),i(a-1)&&(a=Math.sqrt(a)),e[0]<0&&(n=-n),e[3]<0&&(a=-a),o[0]=e[4],o[1]=e[5],s[0]=n,s[1]=a,this.rotation=Math.atan2(-e[1]/a,e[0]/n)}},h.getGlobalScale=function(){var t=this.transform;if(!t)return[1,1];var e=Math.sqrt(t[0]*t[0]+t[1]*t[1]),n=Math.sqrt(t[2]*t[2]+t[3]*t[3]);return t[0]<0&&(e=-e),t[3]<0&&(n=-n),[e,n]},h.transformCoordToLocal=function(t,e){var n=[t,e],i=this.invTransform;return i&&a.applyTransform(n,n,i),n},h.transformCoordToGlobal=function(t,e){var n=[t,e],i=this.transform;return i&&a.applyTransform(n,n,i),n},t.exports=l},function(t,e,n){"use strict";function i(t,e){r.each(a,function(e){this[e]=r.bind(t[e],t)},this),this.getCoordinateSystems=r.bind(e.getCoordinateSystems,e)}var r=n(1),a=["getDom","getZr","getWidth","getHeight","getDevicePixelRatio","dispatchAction","isDisposed","on","off","getDataURL","getConnectedDataURL","getModel","getOption","getViewOfComponentModel","getViewOfSeriesModel"];t.exports=i},function(t,e,n){var i=n(1);n(56),n(105),n(106);var r=n(97),a=n(2);a.registerLayout(i.curry(r,"bar")),a.registerVisual(function(t){t.eachSeriesByType("bar",function(t){var e=t.getData();e.setVisual("legendSymbol","roundRect")})}),n(38)},function(t,e,n){t.exports=n(89).extend({type:"series.bar",dependencies:["grid","polar"],brushSelector:"rect"})},function(t,e,n){"use strict";function i(t,e,n,i,r,a,o){var s=new h.Rect({shape:l.extend({},i)});if(a){var u=s.shape,c=r?"height":"width",f={};u[c]=0,f[c]=i[c],h[o?"updateProps":"initProps"](s,{shape:f},a,e)}return s}function r(t,e,n){n.style.text="",h.updateProps(n,{shape:{width:0}},e,t,function(){n.parent&&n.parent.remove(n)})}function a(t,e,n){var i=t.getItemLayout(e),r=s(n,i),a=i.width>0?1:-1,o=i.height>0?1:-1;return{x:i.x+a*r/2,y:i.y+o*r/2,width:i.width-a*r,height:i.height-o*r}}function o(t,e,n,i,r,a,o){var s=e.getItemVisual(n,"color"),c=e.getItemVisual(n,"opacity"),f=i.getModel("itemStyle.normal"),d=i.getModel("itemStyle.emphasis").getBarItemStyle();t.setShape("r",f.get("barBorderRadius")||0),t.useStyle(l.defaults({fill:s,opacity:c},f.getBarItemStyle()));var p=o?r.height>0?"bottom":"top":r.width>0?"left":"right";u.setLabel(t.style,d,i,s,a,n,p),h.setHoverStyle(t,d)}function s(t,e){var n=t.get(c)||0;return Math.min(n,Math.abs(e.width),Math.abs(e.height))}var l=n(1),h=n(3),u=n(90),c=["itemStyle","normal","barBorderWidth"];l.extend(n(10).prototype,n(107));var f=n(2).extendChartView({type:"bar",render:function(t,e,n){var i=t.get("coordinateSystem");return"cartesian2d"===i&&this._renderOnCartesian(t,e,n),this.group},dispose:l.noop,_renderOnCartesian:function(t,e,n){var s=this.group,l=t.getData(),u=this._data,c=t.coordinateSystem,f=c.getBaseAxis(),d=f.isHorizontal(),p=t.isAnimationEnabled()?t:null;l.diff(u).add(function(e){if(l.hasValue(e)){var n=l.getItemModel(e),r=a(l,e,n),h=i(l,e,n,r,d,p);l.setItemGraphicEl(e,h),s.add(h),o(h,l,e,n,r,t,d)}}).update(function(e,n){var r=u.getItemGraphicEl(n);if(!l.hasValue(e))return void s.remove(r);var c=l.getItemModel(e),f=a(l,e,c);r?h.updateProps(r,{shape:f},p,e):r=i(l,e,c,f,d,p,!0),l.setItemGraphicEl(e,r),s.add(r),o(r,l,e,c,f,t,d)}).remove(function(t){var e=u.getItemGraphicEl(t);e&&r(t,p,e)}).execute(),this._data=l},remove:function(t,e){var n=this.group,i=this._data;t.get("animation")?i&&i.eachItemGraphicEl(function(e){r(e.dataIndex,t,e)}):n.removeAll()}});t.exports=f},function(t,e,n){var i=n(31)([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["stroke","barBorderColor"],["lineWidth","barBorderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]);t.exports={getBarItemStyle:function(t){var e=i.call(this,t);if(this.getBorderLineDash){var n=this.getBorderLineDash();n&&(e.lineDash=n)}return e}}},,,function(t,e,n){var i=n(1),r=n(2),a=r.PRIORITY;n(111),n(112),r.registerVisual(i.curry(n(50),"line","circle","line")),r.registerLayout(i.curry(n(61),"line")),r.registerProcessor(a.PROCESSOR.STATISTIC,i.curry(n(149),"line")),n(38)},function(t,e,n){"use strict";var i=n(27),r=n(18);t.exports=r.extend({type:"series.line",dependencies:["grid","polar"],getInitialData:function(t,e){return i(t.data,this,e)},defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,hoverAnimation:!0,clipOverflow:!0,label:{normal:{position:"top"}},lineStyle:{normal:{width:2,type:"solid"}},step:!1,smooth:!1,smoothMonotone:null,symbol:"emptyCircle",symbolSize:4,symbolRotate:null,showSymbol:!0,showAllSymbol:!1,connectNulls:!1,sampling:"none",animationEasing:"linear",progressive:0,hoverLayerThreshold:1/0}})},function(t,e,n){"use strict";function i(t,e){if(t.length===e.length){for(var n=0;n<t.length;n++){var i=t[n],r=e[n];if(i[0]!==r[0]||i[1]!==r[1])return}return!0}}function r(t){return"number"==typeof t?t:t?.3:0}function a(t){var e=t.getGlobalExtent();if(t.onBand){var n=t.getBandWidth()/2-1,i=e[1]>e[0]?1:-1;e[0]+=i*n,e[1]-=i*n}return e}function o(t){return t>=0?1:-1}function s(t,e){var n=t.getBaseAxis(),i=t.getOtherAxis(n),r=n.onZero?0:i.scale.getExtent()[0],a=i.dim,s="x"===a||"radius"===a?1:0;return e.mapArray([a],function(i,l){for(var h,u=e.stackedOn;u&&o(u.get(a,l))===o(i);){h=u;break}var c=[];return c[s]=e.get(n.dim,l),c[1-s]=h?h.get(a,l,!0):r,t.dataToPoint(c)},!0)}function l(t,e,n){var i=a(t.getAxis("x")),r=a(t.getAxis("y")),o=t.getBaseAxis().isHorizontal(),s=Math.min(i[0],i[1]),l=Math.min(r[0],r[1]),h=Math.max(i[0],i[1])-s,u=Math.max(r[0],r[1])-l,c=n.get("lineStyle.normal.width")||2,f=n.get("clipOverflow")?c/2:Math.max(h,u);o?(l-=f,u+=2*f):(s-=f,h+=2*f);var d=new m.Rect({shape:{x:s,y:l,width:h,height:u}});return e&&(d.shape[o?"width":"height"]=0,m.initProps(d,{shape:{width:h,height:u}},n)),d}function h(t,e,n){var i=t.getAngleAxis(),r=t.getRadiusAxis(),a=r.getExtent(),o=i.getExtent(),s=Math.PI/180,l=new m.Sector({shape:{cx:t.cx,cy:t.cy,r0:a[0],r:a[1],startAngle:-o[0]*s,endAngle:-o[1]*s,clockwise:i.inverse}});return e&&(l.shape.endAngle=-o[0]*s,m.initProps(l,{shape:{endAngle:-o[1]*s}},n)),l}function u(t,e,n){return"polar"===t.type?h(t,e,n):l(t,e,n)}function c(t,e,n){for(var i=e.getBaseAxis(),r="x"===i.dim||"radius"===i.dim?0:1,a=[],o=0;o<t.length-1;o++){var s=t[o+1],l=t[o];a.push(l);var h=[];switch(n){case"end":h[r]=s[r],h[1-r]=l[1-r],a.push(h);break;case"middle":var u=(l[r]+s[r])/2,c=[];h[r]=c[r]=u,h[1-r]=l[1-r],c[1-r]=s[1-r],a.push(h),a.push(c);break;default:h[r]=l[r],h[1-r]=s[1-r],a.push(h)}}return t[o]&&a.push(t[o]),a}function f(t,e){var n=t.getVisual("visualMeta");if(n&&n.length&&t.count()){for(var i,r=n.length-1;r>=0;r--)if(n[r].dimension<2){i=n[r];break}if(i&&"cartesian2d"===e.type){var a=i.dimension,o=t.dimensions[a],s=e.getAxis(o),l=d.map(i.stops,function(t){return{coord:s.toGlobalCoord(s.dataToCoord(t.value)),color:t.color}}),h=l.length,u=i.outerColors.slice();h&&l[0].coord>l[h-1].coord&&(l.reverse(),u.reverse());var c=10,f=l[0].coord-c,p=l[h-1].coord+c,g=p-f;if(g<.001)return"transparent";d.each(l,function(t){t.offset=(t.coord-f)/g}),l.push({offset:h?l[h-1].offset:.5,color:u[1]||"transparent"}),l.unshift({offset:h?l[0].offset:.5,color:u[0]||"transparent"});var v=new m.LinearGradient(0,0,0,0,l,(!0));return v[o]=f,v[o+"2"]=p,v}}}var d=n(1),p=n(44),g=n(54),v=n(113),m=n(3),y=n(5),x=n(91),_=n(29);t.exports=_.extend({type:"line",init:function(){var t=new m.Group,e=new p;this.group.add(e.group),this._symbolDraw=e,this._lineGroup=t},render:function(t,e,n){var a=t.coordinateSystem,o=this.group,l=t.getData(),h=t.getModel("lineStyle.normal"),p=t.getModel("areaStyle.normal"),g=l.mapArray(l.getItemLayout,!0),v="polar"===a.type,m=this._coordSys,y=this._symbolDraw,x=this._polyline,_=this._polygon,b=this._lineGroup,w=t.get("animation"),M=!p.isEmpty(),T=s(a,l),S=t.get("showSymbol"),A=S&&!v&&!t.get("showAllSymbol")&&this._getSymbolIgnoreFunc(l,a),I=this._data;I&&I.eachItemGraphicEl(function(t,e){t.__temp&&(o.remove(t),I.setItemGraphicEl(e,null))}),S||y.remove(),o.add(b);var C=!v&&t.get("step");x&&m.type===a.type&&C===this._step?(M&&!_?_=this._newPolygon(g,T,a,w):_&&!M&&(b.remove(_),_=this._polygon=null),b.setClipPath(u(a,!1,t)),S&&y.updateData(l,A),l.eachItemGraphicEl(function(t){t.stopAnimation(!0)}),i(this._stackedOnPoints,T)&&i(this._points,g)||(w?this._updateAnimation(l,T,a,n,C):(C&&(g=c(g,a,C),T=c(T,a,C)),x.setShape({points:g}),_&&_.setShape({points:g,stackedOnPoints:T})))):(S&&y.updateData(l,A),C&&(g=c(g,a,C),T=c(T,a,C)),x=this._newPolyline(g,a,w),M&&(_=this._newPolygon(g,T,a,w)),b.setClipPath(u(a,!0,t)));var P=f(l,a)||l.getVisual("color");x.useStyle(d.defaults(h.getLineStyle(),{fill:"none",stroke:P,lineJoin:"bevel"}));var L=t.get("smooth");if(L=r(t.get("smooth")),x.setShape({smooth:L,smoothMonotone:t.get("smoothMonotone"),connectNulls:t.get("connectNulls")}),_){var k=l.stackedOn,O=0;if(_.useStyle(d.defaults(p.getAreaStyle(),{fill:P,opacity:.7,lineJoin:"bevel"})),k){var D=k.hostModel;O=r(D.get("smooth"))}_.setShape({smooth:L,stackedOnSmooth:O,smoothMonotone:t.get("smoothMonotone"),connectNulls:t.get("connectNulls")})}this._data=l,this._coordSys=a,this._stackedOnPoints=T,this._points=g,this._step=C},dispose:function(){},highlight:function(t,e,n,i){var r=t.getData(),a=y.queryDataIndex(r,i);if(!(a instanceof Array)&&null!=a&&a>=0){var o=r.getItemGraphicEl(a);if(!o){var s=r.getItemLayout(a);if(!s)return;o=new g(r,a),o.position=s,o.setZ(t.get("zlevel"),t.get("z")),o.ignore=isNaN(s[0])||isNaN(s[1]),o.__temp=!0,r.setItemGraphicEl(a,o),o.stopSymbolAnimation(!0),this.group.add(o)}o.highlight()}else _.prototype.highlight.call(this,t,e,n,i)},downplay:function(t,e,n,i){var r=t.getData(),a=y.queryDataIndex(r,i);if(null!=a&&a>=0){var o=r.getItemGraphicEl(a);o&&(o.__temp?(r.setItemGraphicEl(a,null),this.group.remove(o)):o.downplay())}else _.prototype.downplay.call(this,t,e,n,i)},_newPolyline:function(t){var e=this._polyline;return e&&this._lineGroup.remove(e),e=new x.Polyline({shape:{points:t},silent:!0,z2:10}),this._lineGroup.add(e),this._polyline=e,e},_newPolygon:function(t,e){var n=this._polygon;return n&&this._lineGroup.remove(n),n=new x.Polygon({shape:{points:t,stackedOnPoints:e},silent:!0}),this._lineGroup.add(n),this._polygon=n,n},_getSymbolIgnoreFunc:function(t,e){var n=e.getAxesByScale("ordinal")[0];if(n&&n.isLabelIgnored)return d.bind(n.isLabelIgnored,n)},_updateAnimation:function(t,e,n,i,r){var a=this._polyline,o=this._polygon,s=t.hostModel,l=v(this._data,t,this._stackedOnPoints,e,this._coordSys,n),h=l.current,u=l.stackedOnCurrent,f=l.next,d=l.stackedOnNext;r&&(h=c(l.current,n,r),u=c(l.stackedOnCurrent,n,r),f=c(l.next,n,r),d=c(l.stackedOnNext,n,r)),a.shape.__points=l.current,a.shape.points=h,m.updateProps(a,{shape:{points:f}},s),o&&(o.setShape({points:h,stackedOnPoints:u}),m.updateProps(o,{shape:{points:f,stackedOnPoints:d}},s));for(var p=[],g=l.status,y=0;y<g.length;y++){var x=g[y].cmd;if("="===x){var _=t.getItemGraphicEl(g[y].idx1);_&&p.push({el:_,ptIdx:y})}}a.animators&&a.animators.length&&a.animators[0].during(function(){for(var t=0;t<p.length;t++){var e=p[t].el;e.attr("position",a.shape.__points[p[t].ptIdx])}})},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._data=null}})},function(t,e){function n(t){return t>=0?1:-1}function i(t,e,i){for(var r,a=t.getBaseAxis(),o=t.getOtherAxis(a),s=a.onZero?0:o.scale.getExtent()[0],l=o.dim,h="x"===l||"radius"===l?1:0,u=e.stackedOn,c=e.get(l,i);u&&n(u.get(l,i))===n(c);){r=u;break}var f=[];return f[h]=e.get(a.dim,i),f[1-h]=r?r.get(l,i,!0):s,t.dataToPoint(f)}function r(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.exports=function(t,e,n,a,o,s){for(var l=r(t,e),h=[],u=[],c=[],f=[],d=[],p=[],g=[],v=s.dimensions,m=0;m<l.length;m++){var y=l[m],x=!0;switch(y.cmd){case"=":var _=t.getItemLayout(y.idx),b=e.getItemLayout(y.idx1);(isNaN(_[0])||isNaN(_[1]))&&(_=b.slice()),h.push(_),u.push(b),c.push(n[y.idx]),f.push(a[y.idx1]),g.push(e.getRawIndex(y.idx1));break;case"+":var w=y.idx;h.push(o.dataToPoint([e.get(v[0],w,!0),e.get(v[1],w,!0)])),u.push(e.getItemLayout(w).slice()),c.push(i(o,e,w)),f.push(a[w]),g.push(e.getRawIndex(w));break;case"-":var w=y.idx,M=t.getRawIndex(w);M!==w?(h.push(t.getItemLayout(w)),u.push(s.dataToPoint([t.get(v[0],w,!0),t.get(v[1],w,!0)])),c.push(n[w]),f.push(i(s,t,w)),g.push(M)):x=!1}x&&(d.push(y),p.push(p.length))}p.sort(function(t,e){return g[t]-g[e]});for(var T=[],S=[],A=[],I=[],C=[],m=0;m<p.length;m++){var w=p[m];T[m]=h[w],S[m]=u[w],A[m]=c[w],I[m]=f[w],C[m]=d[w]}return{current:T,next:S,stackedOnCurrent:A,stackedOnNext:I,status:C}}},function(t,e,n){var i=n(1),r=n(2);n(115),n(116),n(88)("pie",[{type:"pieToggleSelect",event:"pieselectchanged",method:"toggleSelected"},{type:"pieSelect",event:"pieselected",method:"select"},{type:"pieUnSelect",event:"pieunselected",method:"unSelect"}]),r.registerVisual(i.curry(n(83),"pie")),r.registerLayout(i.curry(n(118),"pie")),r.registerProcessor(i.curry(n(63),"pie"))},function(t,e,n){"use strict";var i=n(14),r=n(1),a=n(5),o=n(25),s=n(78),l=n(2).extendSeriesModel({type:"series.pie",init:function(t){l.superApply(this,"init",arguments),this.legendDataProvider=function(){return this.getRawData()},this.updateSelectedMap(t.data),this._defaultLabelLine(t)},mergeOption:function(t){l.superCall(this,"mergeOption",t),this.updateSelectedMap(this.option.data)},getInitialData:function(t,e){var n=o(["value"],t.data),r=new i(n,this);return r.initData(t.data),r},getDataParams:function(t){var e=this.getData(),n=l.superCall(this,"getDataParams",t),i=e.getSum("value");return n.percent=i?+(e.get("value",t)/i*100).toFixed(2):0,n.$vars.push("percent"),n},_defaultLabelLine:function(t){a.defaultEmphasis(t.labelLine,["show"]);var e=t.labelLine.normal,n=t.labelLine.emphasis;e.show=e.show&&t.label.normal.show,n.show=n.show&&t.label.emphasis.show},defaultOption:{zlevel:0,z:2,legendHoverLink:!0,hoverAnimation:!0,center:["50%","50%"],radius:[0,"75%"],clockwise:!0,startAngle:90,minAngle:0,selectedOffset:10,avoidLabelOverlap:!0,stillShowZeroSum:!0,label:{normal:{rotate:!1,show:!0,position:"outer"},emphasis:{}},labelLine:{normal:{show:!0,length:15,length2:15,smooth:!1,lineStyle:{width:1,type:"solid"}}},itemStyle:{normal:{borderWidth:1},emphasis:{}},animationType:"expansion",animationEasing:"cubicOut",data:[]}});r.mixin(l,s),t.exports=l},function(t,e,n){function i(t,e,n,i){var a=e.getData(),o=this.dataIndex,s=a.getName(o),l=e.get("selectedOffset");i.dispatchAction({type:"pieToggleSelect",from:t,name:s,seriesId:e.id}),a.each(function(t){r(a.getItemGraphicEl(t),a.getItemLayout(t),e.isSelected(a.getName(t)),l,n)})}function r(t,e,n,i,r){var a=(e.startAngle+e.endAngle)/2,o=Math.cos(a),s=Math.sin(a),l=n?i:0,h=[o*l,s*l];r?t.animate().when(200,{position:h}).start("bounceOut"):t.attr("position",h)}function a(t,e){function n(){a.ignore=a.hoverIgnore,o.ignore=o.hoverIgnore}function i(){a.ignore=a.normalIgnore,o.ignore=o.normalIgnore}s.Group.call(this);var r=new s.Sector({z2:2}),a=new s.Polyline,o=new s.Text;this.add(r),this.add(a),this.add(o),this.updateData(t,e,!0),this.on("emphasis",n).on("normal",i).on("mouseover",n).on("mouseout",i)}function o(t,e,n,i,r){var a=i.getModel("textStyle"),o="inside"===r||"inner"===r;return{fill:a.getTextColor()||(o?"#fff":t.getItemVisual(e,"color")),opacity:t.getItemVisual(e,"opacity"),textFont:a.getFont(),text:l.retrieve(t.hostModel.getFormattedLabel(e,n),t.getName(e))}}var s=n(3),l=n(1),h=a.prototype;h.updateData=function(t,e,n){function i(){o.stopAnimation(!0),o.animateTo({shape:{r:c.r+10}},300,"elasticOut")}function a(){o.stopAnimation(!0),o.animateTo({shape:{r:c.r}},300,"elasticOut")}var o=this.childAt(0),h=t.hostModel,u=t.getItemModel(e),c=t.getItemLayout(e),f=l.extend({},c);if(f.label=null,n){o.setShape(f);var d=h.getShallow("animationType");"scale"===d?(o.shape.r=c.r0,s.initProps(o,{shape:{r:c.r}},h,e)):(o.shape.endAngle=c.startAngle,s.updateProps(o,{shape:{endAngle:c.endAngle}},h,e))}else s.updateProps(o,{shape:f},h,e);var p=u.getModel("itemStyle"),g=t.getItemVisual(e,"color");o.useStyle(l.defaults({lineJoin:"bevel",fill:g},p.getModel("normal").getItemStyle())),o.hoverStyle=p.getModel("emphasis").getItemStyle(),r(this,t.getItemLayout(e),u.get("selected"),h.get("selectedOffset"),h.get("animation")),o.off("mouseover").off("mouseout").off("emphasis").off("normal"),u.get("hoverAnimation")&&h.isAnimationEnabled()&&o.on("mouseover",i).on("mouseout",a).on("emphasis",i).on("normal",a),this._updateLabel(t,e),s.setHoverStyle(this)},h._updateLabel=function(t,e){var n=this.childAt(1),i=this.childAt(2),r=t.hostModel,a=t.getItemModel(e),l=t.getItemLayout(e),h=l.label,u=t.getItemVisual(e,"color");s.updateProps(n,{shape:{points:h.linePoints||[[h.x,h.y],[h.x,h.y],[h.x,h.y]]}},r,e),s.updateProps(i,{style:{x:h.x,y:h.y}},r,e),i.attr({style:{textVerticalAlign:h.verticalAlign,textAlign:h.textAlign,textFont:h.font},rotation:h.rotation,origin:[h.x,h.y],z2:10});var c=a.getModel("label.normal"),f=a.getModel("label.emphasis"),d=a.getModel("labelLine.normal"),p=a.getModel("labelLine.emphasis"),g=c.get("position")||f.get("position");i.setStyle(o(t,e,"normal",c,g)),i.ignore=i.normalIgnore=!c.get("show"),i.hoverIgnore=!f.get("show"),n.ignore=n.normalIgnore=!d.get("show"),n.hoverIgnore=!p.get("show"),n.setStyle({stroke:u,opacity:t.getItemVisual(e,"opacity")}),n.setStyle(d.getModel("lineStyle").getLineStyle()),i.hoverStyle=o(t,e,"emphasis",f,g),n.hoverStyle=p.getModel("lineStyle").getLineStyle();var v=d.get("smooth");v&&v===!0&&(v=.4),n.setShape({smooth:v})},l.inherits(a,s.Group);var u=n(29).extend({type:"pie",init:function(){var t=new s.Group;this._sectorGroup=t},render:function(t,e,n,r){if(!r||r.from!==this.uid){var o=t.getData(),s=this._data,h=this.group,u=e.get("animation"),c=!s,f=t.get("animationType"),d=l.curry(i,this.uid,t,u,n),p=t.get("selectedMode");if(o.diff(s).add(function(t){var e=new a(o,t);c&&"scale"!==f&&e.eachChild(function(t){t.stopAnimation(!0)}),p&&e.on("click",d),o.setItemGraphicEl(t,e),h.add(e)}).update(function(t,e){var n=s.getItemGraphicEl(e);n.updateData(o,t),n.off("click"),p&&n.on("click",d),h.add(n),o.setItemGraphicEl(t,n)}).remove(function(t){var e=s.getItemGraphicEl(t);h.remove(e)}).execute(),u&&c&&o.count()>0&&"scale"!==f){var g=o.getItemLayout(0),v=Math.max(n.getWidth(),n.getHeight())/2,m=l.bind(h.removeClipPath,h);h.setClipPath(this._createClipPath(g.cx,g.cy,v,g.startAngle,g.clockwise,m,t))}this._data=o}},dispose:function(){},_createClipPath:function(t,e,n,i,r,a,o){var l=new s.Sector({shape:{cx:t,cy:e,r0:0,r:n,startAngle:i,endAngle:i,clockwise:r}});return s.initProps(l,{shape:{endAngle:i+(r?1:-1)*Math.PI*2}},o,a),l},containPoint:function(t,e){var n=e.getData(),i=n.getItemLayout(0);if(i){var r=t[0]-i.cx,a=t[1]-i.cy,o=Math.sqrt(r*r+a*a);return o<=i.r&&o>=i.r0}}});t.exports=u},function(t,e,n){"use strict";function i(t,e,n,i,r,a,o){function s(e,n,i,r){for(var a=e;a<n;a++)if(t[a].y+=i,a>e&&a+1<n&&t[a+1].y>t[a].y+t[a].height)return void l(a,i/2);l(n-1,i/2)}function l(e,n){for(var i=e;i>=0&&(t[i].y-=n,!(i>0&&t[i].y>t[i-1].y+t[i-1].height));i--);}function h(t,e,n,i,r,a){for(var o=a>0?e?Number.MAX_VALUE:0:e?Number.MAX_VALUE:0,s=0,l=t.length;s<l;s++)if("center"!==t[s].position){var h=Math.abs(t[s].y-i),u=t[s].len,c=t[s].len2,f=h<r+u?Math.sqrt((r+u+c)*(r+u+c)-h*h):Math.abs(t[s].x-n);e&&f>=o&&(f=o-10),!e&&f<=o&&(f=o+10),t[s].x=n+f*a,o=f}}t.sort(function(t,e){return t.y-e.y});for(var u,c=0,f=t.length,d=[],p=[],g=0;g<f;g++)u=t[g].y-c,u<0&&s(g,f,-u,r),c=t[g].y+t[g].height;o-c<0&&l(f-1,c-o);for(var g=0;g<f;g++)t[g].y>=n?p.push(t[g]):d.push(t[g]);h(d,!1,e,n,i,r),h(p,!0,e,n,i,r)}function r(t,e,n,r,a,o){for(var s=[],l=[],h=0;h<t.length;h++)t[h].x<e?s.push(t[h]):l.push(t[h]);i(l,e,n,r,1,a,o),i(s,e,n,r,-1,a,o);for(var h=0;h<t.length;h++){var u=t[h].linePoints;if(u){var c=u[1][0]-u[2][0];t[h].x<e?u[2][0]=t[h].x+3:u[2][0]=t[h].x-3,u[1][1]=u[2][1]=t[h].y,u[1][0]=u[2][0]+c}}}var a=n(16);t.exports=function(t,e,n,i){
+var o,s,l=t.getData(),h=[],u=!1;l.each(function(n){var i,r,c,f,d=l.getItemLayout(n),p=l.getItemModel(n),g=p.getModel("label.normal"),v=g.get("position")||p.get("label.emphasis.position"),m=p.getModel("labelLine.normal"),y=m.get("length"),x=m.get("length2"),_=(d.startAngle+d.endAngle)/2,b=Math.cos(_),w=Math.sin(_);o=d.cx,s=d.cy;var M="inside"===v||"inner"===v;if("center"===v)i=d.cx,r=d.cy,f="center";else{var T=(M?(d.r+d.r0)/2*b:d.r*b)+o,S=(M?(d.r+d.r0)/2*w:d.r*w)+s;if(i=T+3*b,r=S+3*w,!M){var A=T+b*(y+e-d.r),I=S+w*(y+e-d.r),C=A+(b<0?-1:1)*x,P=I;i=C+(b<0?-5:5),r=P,c=[[T,S],[A,I],[C,P]]}f=M?"center":b>0?"left":"right"}var L=g.getModel("textStyle").getFont(),k=g.get("rotate")?b<0?-_+Math.PI:-_:0,O=t.getFormattedLabel(n,"normal")||l.getName(n),D=a.getBoundingRect(O,L,f,"top");u=!!k,d.label={x:i,y:r,position:v,height:D.height,len:y,len2:x,linePoints:c,textAlign:f,verticalAlign:"middle",font:L,rotation:k},M||h.push(d.label)}),!u&&t.get("avoidLabelOverlap")&&r(h,o,s,e,n,i)}},function(t,e,n){var i=n(4),r=i.parsePercent,a=n(117),o=n(1),s=2*Math.PI,l=Math.PI/180;t.exports=function(t,e,n,h){e.eachSeriesByType(t,function(t){var e=t.get("center"),h=t.get("radius");o.isArray(h)||(h=[0,h]),o.isArray(e)||(e=[e,e]);var u=n.getWidth(),c=n.getHeight(),f=Math.min(u,c),d=r(e[0],u),p=r(e[1],c),g=r(h[0],f/2),v=r(h[1],f/2),m=t.getData(),y=-t.get("startAngle")*l,x=t.get("minAngle")*l,_=m.getSum("value"),b=Math.PI/(_||m.count())*2,w=t.get("clockwise"),M=t.get("roseType"),T=t.get("stillShowZeroSum"),S=m.getDataExtent("value");S[0]=0;var A=s,I=0,C=y,P=w?1:-1;if(m.each("value",function(t,e){var n;if(isNaN(t))return void m.setItemLayout(e,{angle:NaN,startAngle:NaN,endAngle:NaN,clockwise:w,cx:d,cy:p,r0:g,r:M?NaN:v});n="area"!==M?0===_&&T?b:t*b:s/(m.count()||1),n<x?(n=x,A-=x):I+=t;var r=C+P*n;m.setItemLayout(e,{angle:n,startAngle:C,endAngle:r,clockwise:w,cx:d,cy:p,r0:g,r:M?i.linearMap(t,S,[g,v]):v}),C=r},!0),A<s)if(A<=.001){var L=s/m.count();m.each(function(t){var e=m.getItemLayout(t);e.startAngle=y+P*t*L,e.endAngle=y+P*(t+1)*L})}else b=A/I,C=y,m.each("value",function(t,e){var n=m.getItemLayout(e),i=n.angle===x?x:t*b;n.startAngle=C,n.endAngle=C+P*i,C+=P*i});a(t,v,u,c)})}},function(t,e,n){"use strict";n(60),n(120)},function(t,e,n){var i=n(1),r=n(3),a=n(37),o=n(123),s=n(57),l=n(58),h=a.ifIgnoreOnTick,u=a.getInterval,c=["axisLine","axisLabel","axisTick","axisName"],f=["splitArea","splitLine"],d=s.extend({type:"cartesianAxis",axisPointerClass:o,render:function(t,e,n,o){this.group.removeAll();var s=this._axisGroup;if(this._axisGroup=new r.Group,this.group.add(this._axisGroup),t.get("show")){var h=t.getCoordSysModel(),u=l.layout(h,t),p=new a(t,u);i.each(c,p.add,p),this._axisGroup.add(p.getGroup()),i.each(f,function(e){t.get(e+".show")&&this["_"+e](t,h,u.labelInterval)},this),r.groupTransition(s,this._axisGroup,t),d.superCall(this,"render",t,e,n,o)}},_splitLine:function(t,e,n){var a=t.axis;if(!a.scale.isBlank()){var o=t.getModel("splitLine"),s=o.getModel("lineStyle"),l=s.get("color"),c=u(o,n);l=i.isArray(l)?l:[l];for(var f=e.coordinateSystem.getRect(),d=a.isHorizontal(),p=0,g=a.getTicksCoords(),v=a.scale.getTicks(),m=[],y=[],x=s.getLineStyle(),_=0;_<g.length;_++)if(!h(a,_,c)){var b=a.toGlobalCoord(g[_]);d?(m[0]=b,m[1]=f.y,y[0]=b,y[1]=f.y+f.height):(m[0]=f.x,m[1]=b,y[0]=f.x+f.width,y[1]=b);var w=p++%l.length;this._axisGroup.add(new r.Line(r.subPixelOptimizeLine({anid:"line_"+v[_],shape:{x1:m[0],y1:m[1],x2:y[0],y2:y[1]},style:i.defaults({stroke:l[w]},x),silent:!0})))}}},_splitArea:function(t,e,n){var a=t.axis;if(!a.scale.isBlank()){var o=t.getModel("splitArea"),s=o.getModel("areaStyle"),l=s.get("color"),c=e.coordinateSystem.getRect(),f=a.getTicksCoords(),d=a.scale.getTicks(),p=a.toGlobalCoord(f[0]),g=a.toGlobalCoord(f[0]),v=0,m=u(o,n),y=s.getAreaStyle();l=i.isArray(l)?l:[l];for(var x=1;x<f.length;x++)if(!h(a,x,m)){var _,b,w,M,T=a.toGlobalCoord(f[x]);a.isHorizontal()?(_=p,b=c.y,w=T-_,M=c.height):(_=c.x,b=g,w=c.width,M=T-b);var S=v++%l.length;this._axisGroup.add(new r.Rect({anid:"area_"+d[x],shape:{x:_,y:b,width:w,height:M},style:i.defaults({fill:l[S]},y),silent:!0})),p=_+w,g=b+M}}}});d.extend({type:"xAxis"}),d.extend({type:"yAxis"})},function(t,e,n){var i=n(2),r=i.extendComponentModel({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,textStyle:{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.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z",size:45,margin:50,color:"#333",shadowBlur:3,shadowColor:"#aaa",shadowOffsetX:0,shadowOffsetY:2,throttle:40}}});t.exports=r},function(t,e,n){var i=n(76),r=n(2).extendComponentView({type:"axisPointer",render:function(t,e,n){var r=e.getComponent("tooltip"),a=t.get("triggerOn")||r&&r.get("triggerOn")||"mousemove|click";i.register("axisPointer",n,function(t,e,n){"none"!==a&&("leave"===t||a.indexOf(t)>=0)&&n({type:"updateAxisPointer",currTrigger:t,x:e&&e.offsetX,y:e&&e.offsetY})})},remove:function(t,e){i.disopse(e.getZr(),"axisPointer"),r.superApply(this._model,"remove",arguments)},dispose:function(t,e){i.unregister("axisPointer",e),r.superApply(this._model,"dispose",arguments)}})},function(t,e,n){"use strict";function i(t,e){var n={};return n[e.dim+"AxisIndex"]=e.index,t.getCartesian(n)}function r(t){return"x"===t.dim?0:1}var a=n(3),o=n(74),s=n(55),l=n(58),h=o.extend({makeElOption:function(t,e,n,r,a){var o=n.axis,h=o.grid,c=r.get("type"),f=i(h,o).getOtherAxis(o).getGlobalExtent(),d=o.toGlobalCoord(o.dataToCoord(e,!0)),p=s.buildElStyle(r),g=u[c](o,d,f,p);g.style=p,t.graphicKey=g.type,t.pointer=g;var v=l.layout(h.model,n);s.buildCartesianSingleLabelElOption(e,t,v,n,r,a)},getHandleTransform:function(t,e,n){var i=l.layout(e.axis.grid.model,e,{labelInside:!1});return i.labelMargin=n.get("handle.margin"),{position:s.getTransformedPosition(e.axis,t,i),rotation:i.rotation+(i.labelDirection<0?Math.PI:0)}},updateHandleTransform:function(t,e,n,r){var a=n.axis,o=a.grid,s=a.getGlobalExtent(!0),l=i(o,a).getOtherAxis(a).getGlobalExtent(),h="x"===a.dim?0:1,u=t.position;u[h]+=e[h],u[h]=Math.min(s[1],u[h]),u[h]=Math.max(s[0],u[h]);var c=(l[1]+l[0])/2,f=[c,c];f[h]=u[h];var d=[{verticalAlign:"middle"},{align:"center"}];return{position:u,rotation:t.rotation,cursorPoint:f,tooltipOption:d[h]}}}),u={line:function(t,e,n,i){var o=s.makeLineShape([e,n[0]],[e,n[1]],r(t));return a.subPixelOptimizeLine({shape:o,style:i}),{type:"Line",shape:o}},shadow:function(t,e,n,i){var a=t.getBandWidth(),o=n[1]-n[0];return{type:"Rect",shape:s.makeRectShape([e-a/2,n[0]],[a,o],r(t))}}};t.exports=h},function(t,e,n){function i(t,e,n,i,a,g,v,m){var b=[];b=null!=n.x&&null!=n.y?[n.x,n.y]:y({seriesIndex:n.seriesIndex,dataIndex:n.dataIndex},a).point;var w=t.axesInfo,M="leave"===e||p(b),T={},S={},A={list:[],map:{}},I=[],C={showPointer:_(o,S),showTooltip:_(s,A),highlight:_(l,I)};return x(t.coordSysMap,function(e,i){var a=e.containPoint(b);x(t.coordSysAxesInfo[i],function(t,e){var i=t.axis;M||!a||f(n,i)||r(t,i.pointToData(b),C,!1,T)})}),x(w,function(t,e){var n=t.linkGroup;n&&!S[e]&&x(n.axesInfo,function(e,i){var a=S[i];if(e!==t&&a){var o=a.value;n.mapper&&(o=t.axis.scale.parse(n.mapper(o,d(e),d(t)))),r(t,o,C,!0,T)}})}),h(S,w),u(A,b,v,i),c(I,i,g,m),T}function r(t,e,n,i,r){var o=t.axis;if(!o.scale.isBlank()&&o.containData(e)){if(!t.involveSeries)return void n.showPointer(t,e);var s=a(e,t),l=s.payloadBatch,h=s.snapToValue;l[0]&&null==r.seriesIndex&&g.extend(r,l[0]),!i&&t.snap&&o.containData(h)&&null!=h&&(e=h),n.highlight("highlight",l),n.showPointer(t,e,l),n.showTooltip(t,s,h)}}function a(t,e){var n=e.axis,i=n.dim,r=t,a=[],o=Number.MAX_VALUE,s=-1;return x(e.seriesModels,function(e,l){var h,u,c=e.coordDimToDataDim(i);if(e.getAxisTooltipData){var f=e.getAxisTooltipData(c,t,n);u=f.dataIndices,h=f.nestestValue}else{if(u=e.getData().indexOfNearest(c[0],t,!1,"category"===n.type?.5:null),!u.length)return;h=e.getData().get(c[0],u[0])}if(null!=h&&isFinite(h)){var d=t-h,p=Math.abs(d);p<=o&&((p<o||d>=0&&s<0)&&(o=p,s=d,r=h,a.length=0),x(u,function(t){a.push({seriesIndex:e.seriesIndex,dataIndexInside:t,dataIndex:e.getData().getRawIndex(t)})}))}}),{payloadBatch:a,snapToValue:r}}function o(t,e,n,i){t[e.key]={value:n,payloadBatch:i}}function s(t,e,n,i){var r=n.payloadBatch,a=e.axis,o=a.model,s=e.axisPointerModel;if(e.triggerTooltip&&r.length){var l=e.coordSys.model,h=m.makeKey(l),u=t.map[h];u||(u=t.map[h]={coordSysId:l.id,coordSysIndex:l.componentIndex,coordSysType:l.type,coordSysMainType:l.mainType,dataByAxis:[]},t.list.push(u)),u.dataByAxis.push({axisDim:a.dim,axisIndex:o.componentIndex,axisType:o.type,axisId:o.id,value:i,valueLabelOpt:{precision:s.get("label.precision"),formatter:s.get("label.formatter")},seriesDataIndices:r.slice()})}}function l(t,e,n){t.push.apply(t,n)}function h(t,e){x(e,function(e,n){var i=e.axisPointerModel.option,r=t[n];r?(!e.useHandle&&(i.status="show"),i.value=r.value,i.seriesDataIndices=(r.payloadBatch||[]).slice()):!e.useHandle&&(i.status="hide")})}function u(t,e,n,i){if(p(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,dataIndexInside:r.dataIndexInside,dataIndex:r.dataIndex,seriesIndex:r.seriesIndex,dataByCoordSys:t.list})}function c(t,e,n,i){var r=n.getZr();i="lastHighlights"+(i||"");var a=b(r)[i]||{},o=b(r)[i]={};g.each(t,function(t){var e=t.seriesIndex+" | "+t.dataIndex;o[e]=t});var s=[],l=[];g.each(a,function(t,e){!o[e]&&l.push(t)}),g.each(o,function(t,e){!a[e]&&s.push(t)}),l.length&&n.dispatchAction({type:"downplay",escapeConnect:!0,batch:l}),s.length&&n.dispatchAction({type:"highlight",escapeConnect:!0,batch:s})}function f(t,e){var n=1;return x(t,function(t,e){n&=!/^.+(AxisId|AxisName|AxisIndex)$/.test(e)}),!n&&x([["AxisId","id"],["AxisIndex","componentIndex"],["AxisName","name"]],function(i){var r=v.normalizeToArray(t[e.dim+i[0]]);n|=g.indexOf(r,e.model[i[1]])>=0}),!n}function d(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 p(t){return null==t[0]||isNaN(t[0])||null==t[1]||isNaN(t[1])}var g=n(1),v=n(5),m=n(32),y=n(75),x=g.each,_=g.curry,b=v.makeGetter();t.exports=i},,,,,,,,function(t,e,n){var i=n(1),r=n(33),a=n(136),o=function(t,e,n,i,a){r.call(this,t,e,n),this.type=i||"value",this.position=a||"bottom"};o.prototype={constructor:o,index:0,onZero:!1,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()},getLabelInterval:function(){var t=this._labelInterval;return t||(t=this._labelInterval=a(this)),t},isLabelIgnored:function(t){if("category"===this.type){var e=this.getLabelInterval();return"function"==typeof e&&!e(t,this.scale.getLabel(t))||t%(e+1)}},pointToData:function(t,e){return this.coordToData(this.toLocalCoord(t["x"===this.dim?0:1]),e)},toLocalCoord:null,toGlobalCoord:null},i.inherits(o,r),t.exports=o},function(t,e,n){"use strict";function i(t){return this._axes[t]}var r=n(1),a=function(t){this._axes={},this._dimList=[],this.name=t||""};a.prototype={constructor:a,type:"cartesian",getAxis:function(t){return this._axes[t]},getAxes:function(){return r.map(this._dimList,i,this)},getAxesByScale:function(t){return t=t.toLowerCase(),r.filter(this.getAxes(),function(e){return e.scale.type===t})},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 n=this._dimList,i=t instanceof Array?[]:{},r=0;r<n.length;r++){var a=n[r],o=this._axes[a];i[a]=o[e](t[a])}return i}},t.exports=a},function(t,e,n){"use strict";function i(t){a.call(this,t)}var r=n(1),a=n(133);i.prototype={constructor:i,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"),n=this.getAxis("y");return e.contain(e.toLocalCoord(t[0]))&&n.contain(n.toLocalCoord(t[1]))},containData:function(t){return this.getAxis("x").containData(t[0])&&this.getAxis("y").containData(t[1])},dataToPoints:function(t,e){return t.mapArray(["x","y"],function(t,e){return this.dataToPoint([t,e])},e,this)},dataToPoint:function(t,e){var n=this.getAxis("x"),i=this.getAxis("y");return[n.toGlobalCoord(n.dataToCoord(t[0],e)),i.toGlobalCoord(i.dataToCoord(t[1],e))]},pointToData:function(t,e){var n=this.getAxis("x"),i=this.getAxis("y");return[n.coordToData(n.toLocalCoord(t[0]),e),i.coordToData(i.toLocalCoord(t[1]),e)]},getOtherAxis:function(t){return this.getAxis("x"===t.dim?"y":"x")}},r.inherits(i,a),t.exports=i},function(t,e,n){"use strict";n(60);var i=n(13);t.exports=i.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"}})},function(t,e,n){"use strict";var i=n(1),r=n(17);t.exports=function(t){var e=t.model,n=e.getModel("axisLabel"),a=n.get("interval");return"category"!==t.type||"auto"!==a?"auto"===a?0:a:r.getAxisLabelInterval(i.map(t.scale.getTicks(),t.dataToCoord,t),e.getFormattedLabels(),n.getModel("textStyle").getFont(),t.isHorizontal())}},function(t,e,n){var i=n(27),r=n(24),a=n(17),o=n(42),s=n(10),l=n(1);t.exports={createList:function(t){var e=t.get("data");return i(e,t,t.ecModel)},completeDimensions:n(25),createSymbol:r.createSymbol,createScale:function(t,e){var n=e;e instanceof s||(n=new s(e),l.mixin(n,o));var i=a.createScaleByModel(n);return i.setExtent(t[0],t[1]),a.niceScaleExtent(i,n),i},mixinAxisModelCommonMethods:function(t){l.mixin(t,o)}}},function(t,e,n){var i=n(3),r=n(1),a=Math.PI;t.exports=function(t,e){e=e||{},r.defaults(e,{text:"loading",color:"#c23531",textColor:"#000",maskColor:"rgba(255, 255, 255, 0.8)",zlevel:0});var n=new i.Rect({style:{fill:e.maskColor},zlevel:e.zlevel,z:1e4}),o=new i.Arc({shape:{startAngle:-a/2,endAngle:-a/2+.1,r:10},style:{stroke:e.color,lineCap:"round",lineWidth:5},zlevel:e.zlevel,z:10001}),s=new i.Rect({style:{fill:"none",text:e.text,textPosition:"right",textDistance:10,textFill:e.textColor},zlevel:e.zlevel,z:10001});o.animateShape(!0).when(1e3,{endAngle:3*a/2}).start("circularInOut"),o.animateShape(!0).when(1e3,{startAngle:3*a/2}).delay(300).start("circularInOut");var l=new i.Group;return l.add(o),l.add(s),l.add(n),l.resize=function(){var e=t.getWidth()/2,i=t.getHeight()/2;o.setShape({cx:e,cy:i});var r=o.shape.r;s.setShape({x:e-r,y:i-r,width:2*r,height:2*r}),n.setShape({x:0,y:0,width:t.getWidth(),height:t.getHeight()})},l.resize(),l}},function(t,e,n){function i(t,e){u.each(e,function(e,n){x.hasClass(n)||("object"==typeof e?t[n]=t[n]?u.merge(t[n],e,!1):u.clone(e):null==t[n]&&(t[n]=e))})}function r(t){t=t,this.option={},this.option[b]=1,this._componentsMap={series:[]},this._seriesIndices=null,i(t,this._theme.option),u.merge(t,_,!1),this.mergeOption(t)}function a(t,e){u.isArray(e)||(e=e?[e]:[]);var n={};return d(e,function(e){n[e]=(t[e]||[]).slice()}),n}function o(t,e,n){var i=e.type?e.type:n?n.subType:x.determineSubType(t,e);return i}function s(t){return g(t,function(t){return t.componentIndex})||[]}function l(t,e){return e.hasOwnProperty("subType")?p(t,function(t){return t.subType===e.subType}):t}function h(t){}var u=n(1),c=n(5),f=n(10),d=u.each,p=u.filter,g=u.map,v=u.isArray,m=u.indexOf,y=u.isObject,x=n(13),_=n(141),b="\0_ec_inner",w=f.extend({constructor:w,init:function(t,e,n,i){n=n||{},this.option=null,this._theme=new f(n),this._optionManager=i},setOption:function(t,e,n){u.assert(!(b in t),"please use chart.getOption()"),this._optionManager.setOption(t,e),this.resetOption(null,n)},resetOption:function(t,e){var n=!1,i=this._optionManager;if(!t||"recreate"===t){var a=i.mountOption("recreate"===t);this.option&&"recreate"!==t?(!e&&this.restoreData(),this.mergeOption(a)):r.call(this,a),n=!0}if("timeline"!==t&&"media"!==t||this.restoreData(),!t||"recreate"===t||"timeline"===t){var o=i.getTimelineOption(this);o&&(this.mergeOption(o),n=!0)}if(!t||"recreate"===t||"media"===t){var s=i.getMediaOption(this,this._api);s.length&&d(s,function(t){this.mergeOption(t,n=!0)},this)}return n},mergeOption:function(t){function e(e,r){var l=c.normalizeToArray(t[e]),h=c.mappingToExists(i[e],l);c.makeIdAndName(h),d(h,function(t,n){var i=t.option;y(i)&&(t.keyInfo.mainType=e,t.keyInfo.subType=o(e,i,t.exist))});var f=a(i,r);n[e]=[],i[e]=[],d(h,function(t,r){var a=t.exist,o=t.option;if(u.assert(y(o)||a,"Empty component definition"),o){var s=x.getClass(e,t.keyInfo.subType,!0);if(a&&a instanceof s)a.name=t.keyInfo.name,a.mergeOption(o,this),a.optionUpdated(o,!1);else{var l=u.extend({dependentModels:f,componentIndex:r},t.keyInfo);a=new s(o,this,this,l),u.extend(a,l),a.init(o,this,this,l),a.optionUpdated(null,!0)}}else a.mergeOption({},this),a.optionUpdated({},!1);i[e][r]=a,n[e][r]=a.option},this),"series"===e&&(this._seriesIndices=s(i.series))}var n=this.option,i=this._componentsMap,r=[];d(t,function(t,e){null!=t&&(x.hasClass(e)?r.push(e):n[e]=null==n[e]?u.clone(t):u.merge(n[e],t,!0))}),x.topologicalTravel(r,x.getAllClassMainTypes(),e,this),this._seriesIndices=this._seriesIndices||[]},getOption:function(){var t=u.clone(this.option);return d(t,function(e,n){if(x.hasClass(n)){for(var e=c.normalizeToArray(e),i=e.length-1;i>=0;i--)c.isIdInner(e[i])&&e.splice(i,1);t[n]=e}}),delete t[b],t},getTheme:function(){return this._theme},getComponent:function(t,e){var n=this._componentsMap[t];if(n)return n[e||0]},queryComponents:function(t){var e=t.mainType;if(!e)return[];var n=t.index,i=t.id,r=t.name,a=this._componentsMap[e];if(!a||!a.length)return[];var o;if(null!=n)v(n)||(n=[n]),o=p(g(n,function(t){return a[t]}),function(t){return!!t});else if(null!=i){var s=v(i);o=p(a,function(t){return s&&m(i,t.id)>=0||!s&&t.id===i})}else if(null!=r){var h=v(r);o=p(a,function(t){return h&&m(r,t.name)>=0||!h&&t.name===r})}else o=a.slice();return l(o,t)},findComponents:function(t){function e(t){var e=r+"Index",n=r+"Id",i=r+"Name";return!t||null==t[e]&&null==t[n]&&null==t[i]?null:{mainType:r,index:t[e],id:t[n],name:t[i]}}function n(e){return t.filter?p(e,t.filter):e}var i=t.query,r=t.mainType,a=e(i),o=a?this.queryComponents(a):this._componentsMap[r];return n(l(o,t))},eachComponent:function(t,e,n){var i=this._componentsMap;if("function"==typeof t)n=e,e=t,d(i,function(t,i){d(t,function(t,r){e.call(n,i,t,r)})});else if(u.isString(t))d(i[t],e,n);else if(y(t)){var r=this.findComponents(t);d(r,e,n)}},getSeriesByName:function(t){var e=this._componentsMap.series;return p(e,function(e){return e.name===t})},getSeriesByIndex:function(t){return this._componentsMap.series[t]},getSeriesByType:function(t){var e=this._componentsMap.series;return p(e,function(e){return e.subType===t})},getSeries:function(){return this._componentsMap.series.slice()},eachSeries:function(t,e){h(this),d(this._seriesIndices,function(n){var i=this._componentsMap.series[n];t.call(e,i,n)},this)},eachRawSeries:function(t,e){d(this._componentsMap.series,t,e)},eachSeriesByType:function(t,e,n){h(this),d(this._seriesIndices,function(i){var r=this._componentsMap.series[i];r.subType===t&&e.call(n,r,i)},this)},eachRawSeriesByType:function(t,e,n){return d(this.getSeriesByType(t),e,n)},isSeriesFiltered:function(t){return h(this),u.indexOf(this._seriesIndices,t.componentIndex)<0},filterSeries:function(t,e){h(this);var n=p(this._componentsMap.series,t,e);this._seriesIndices=s(n)},restoreData:function(){var t=this._componentsMap;this._seriesIndices=s(t.series);var e=[];d(t,function(t,n){e.push(n)}),x.topologicalTravel(e,x.getAllClassMainTypes(),function(e,n){d(t[e],function(t){t.restoreData()})})}});u.mixin(w,n(62)),t.exports=w},function(t,e,n){function i(t){this._api=t,this._timelineOptions=[],this._mediaList=[],this._mediaDefault,this._currentMediaIndices=[],this._optionBackup,this._newBaseOption}function r(t,e,n){var i,r,a=[],o=[],s=t.timeline;if(t.baseOption&&(r=t.baseOption),(s||t.options)&&(r=r||{},a=(t.options||[]).slice()),t.media){r=r||{};var l=t.media;f(l,function(t){t&&t.option&&(t.query?o.push(t):i||(i=t))})}return r||(r=t),r.timeline||(r.timeline=s),f([r].concat(a).concat(h.map(o,function(t){return t.option})),function(t){f(e,function(e){e(t,n)})}),{baseOption:r,timelineOptions:a,mediaDefault:i,mediaList:o}}function a(t,e,n){var i={width:e,height:n,aspectratio:e/n},r=!0;return h.each(t,function(t,e){var n=e.match(v);if(n&&n[1]&&n[2]){var a=n[1],s=n[2].toLowerCase();o(i[s],t,a)||(r=!1)}}),r}function o(t,e,n){return"min"===n?t>=e:"max"===n?t<=e:t===e}function s(t,e){return t.join(",")===e.join(",")}function l(t,e){e=e||{},f(e,function(e,n){if(null!=e){var i=t[n];if(c.hasClass(n)){e=u.normalizeToArray(e),i=u.normalizeToArray(i);var r=u.mappingToExists(i,e);t[n]=p(r,function(t){return t.option&&t.exist?g(t.exist,t.option,!0):t.exist||t.option})}else t[n]=g(i,e,!0)}})}var h=n(1),u=n(5),c=n(13),f=h.each,d=h.clone,p=h.map,g=h.merge,v=/^(min|max)?(.+)$/;i.prototype={constructor:i,setOption:function(t,e){t=d(t,!0);var n=this._optionBackup,i=r.call(this,t,e,!n);this._newBaseOption=i.baseOption,n?(l(n.baseOption,i.baseOption),i.timelineOptions.length&&(n.timelineOptions=i.timelineOptions),i.mediaList.length&&(n.mediaList=i.mediaList),i.mediaDefault&&(n.mediaDefault=i.mediaDefault)):this._optionBackup=i},mountOption:function(t){var e=this._optionBackup;return this._timelineOptions=p(e.timelineOptions,d),this._mediaList=p(e.mediaList,d),this._mediaDefault=d(e.mediaDefault),this._currentMediaIndices=[],d(t?e.baseOption:this._newBaseOption)},getTimelineOption:function(t){var e,n=this._timelineOptions;if(n.length){var i=t.getComponent("timeline");i&&(e=d(n[i.getCurrentIndex()],!0))}return e},getMediaOption:function(t){var e=this._api.getWidth(),n=this._api.getHeight(),i=this._mediaList,r=this._mediaDefault,o=[],l=[];if(!i.length&&!r)return l;for(var h=0,u=i.length;h<u;h++)a(i[h].query,e,n)&&o.push(h);return!o.length&&r&&(o=[-1]),o.length&&!s(o,this._currentMediaIndices)&&(l=p(o,function(t){return d(t===-1?r.option:i[t].option)})),this._currentMediaIndices=o,l}},t.exports=i},function(t,e){var n="";"undefined"!=typeof navigator&&(n=navigator.platform||""),t.exports={color:["#c23531","#2f4554","#61a0a8","#d48265","#91c7ae","#749f83","#ca8622","#bda29a","#6e7074","#546570","#c4ccd3"],textStyle:{fontFamily:n.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}},function(t,e,n){t.exports={getAreaStyle:n(31)([["fill","color"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["opacity"],["shadowColor"]])}},function(t,e){t.exports={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")}}}},function(t,e,n){var i=n(31)([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"],["textPosition"],["textAlign"]]);t.exports={getItemStyle:function(t,e){var n=i.call(this,t,e),r=this.getBorderLineDash();return r&&(n.lineDash=r),n},getBorderLineDash:function(){var t=this.get("borderType");return"solid"===t||null==t?null:"dashed"===t?[5,5]:[1,1]}}},function(t,e,n){var i=n(31)([["lineWidth","width"],["stroke","color"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]);t.exports={getLineStyle:function(t){var e=i.call(this,t),n=this.getLineDash(e.lineWidth);return n&&(e.lineDash=n),e},getLineDash:function(t){null==t&&(t=1);var e=this.get("type"),n=Math.max(t,2),i=4*t;return"solid"===e||null==e?null:"dashed"===e?[i,i]:[n,n]}}},function(t,e,n){function i(t,e){return t&&t.getShallow(e)}var r=n(16);t.exports={getTextColor:function(){var t=this.ecModel;return this.getShallow("color")||t&&t.get("textStyle.color")},getFont:function(){var t=this.ecModel,e=t&&t.getModel("textStyle");return[this.getShallow("fontStyle")||i(e,"fontStyle"),this.getShallow("fontWeight")||i(e,"fontWeight"),(this.getShallow("fontSize")||i(e,"fontSize")||12)+"px",this.getShallow("fontFamily")||i(e,"fontFamily")||"sans-serif"].join(" ")},getTextRect:function(t){return r.getBoundingRect(t,this.getFont(),this.getShallow("align"),this.getShallow("baseline"))},truncateText:function(t,e,n,i){return r.truncateText(t,e,this.getFont(),n,i)}}},function(t,e,n){function i(t,e){e=e.split(",");for(var n=t,i=0;i<e.length&&(n=n&&n[e[i]],null!=n);i++);return n}function r(t,e,n,i){e=e.split(",");for(var r,a=t,o=0;o<e.length-1;o++)r=e[o],null==a[r]&&(a[r]={}),a=a[r];(i||null==a[e[o]])&&(a[e[o]]=n)}function a(t){c(l,function(e){e[0]in t&&!(e[1]in t)&&(t[e[1]]=t[e[0]])})}var o=n(1),s=n(148),l=[["x","left"],["y","top"],["x2","right"],["y2","bottom"]],h=["grid","geo","parallel","legend","toolbox","title","visualMap","dataZoom","timeline"],u=["bar","boxplot","candlestick","chord","effectScatter","funnel","gauge","lines","graph","heatmap","line","map","parallel","pie","radar","sankey","scatter","treemap"],c=o.each;t.exports=function(t){c(t.series,function(t){if(o.isObject(t)){var e=t.type;if(s(t),"pie"!==e&&"gauge"!==e||null!=t.clockWise&&(t.clockwise=t.clockWise),"gauge"===e){var n=i(t,"pointer.color");null!=n&&r(t,"itemStyle.normal.color",n)}for(var l=0;l<u.length;l++)if(u[l]===t.type){a(t);break}}}),t.dataRange&&(t.visualMap=t.dataRange),c(h,function(e){var n=t[e];n&&(o.isArray(n)||(n=[n]),c(n,function(t){a(t)}))})}},function(t,e,n){function i(t){var e=t&&t.itemStyle;e&&r.each(a,function(n){var i=e.normal,a=e.emphasis;i&&i[n]&&(t[n]=t[n]||{},t[n].normal?r.merge(t[n].normal,i[n]):t[n].normal=i[n],i[n]=null),a&&a[n]&&(t[n]=t[n]||{},t[n].emphasis?r.merge(t[n].emphasis,a[n]):t[n].emphasis=a[n],a[n]=null)})}var r=n(1),a=["areaStyle","lineStyle","nodeStyle","linkStyle","chordStyle","label","labelLine"];t.exports=function(t){if(t){i(t),i(t.markPoint),i(t.markLine);var e=t.data;if(e){for(var n=0;n<e.length;n++)i(e[n]);var a=t.markPoint;if(a&&a.data)for(var o=a.data,n=0;n<o.length;n++)i(o[n]);var s=t.markLine;if(s&&s.data)for(var l=s.data,n=0;n<l.length;n++)r.isArray(l[n])?(i(l[n][0]),i(l[n][1])):i(l[n])}}}},function(t,e){var n={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 e},min:function(t){for(var e=1/0,n=0;n<t.length;n++)t[n]<e&&(e=t[n]);return e},nearest:function(t){return t[0]}},i=function(t,e){return Math.round(t.length/2)};t.exports=function(t,e,r){e.eachSeriesByType(t,function(t){var e=t.getData(),r=t.get("sampling"),a=t.coordinateSystem;if("cartesian2d"===a.type&&r){var o=a.getBaseAxis(),s=a.getOtherAxis(o),l=o.getExtent(),h=l[1]-l[0],u=Math.round(e.count()/h);if(u>1){var c;"string"==typeof r?c=n[r]:"function"==typeof r&&(c=r),c&&(e=e.downSample(s.dim,1/u,c,i),t.setData(e))}}},this)}},function(t,e,n){function i(t,e){return c(t,u(e))}var r=n(1),a=n(34),o=n(4),s=n(43),l=a.prototype,h=s.prototype,u=o.getPrecisionSafe,c=o.round,f=Math.floor,d=Math.ceil,p=Math.pow,g=Math.log,v=a.extend({type:"log",base:10,$constructor:function(){a.apply(this,arguments),this._originalScale=new s},getTicks:function(){var t=this._originalScale,e=this._extent,n=t.getExtent();return r.map(h.getTicks.call(this),function(r){var a=o.round(p(this.base,r));return a=r===e[0]&&t.__fixMin?i(a,n[0]):a,a=r===e[1]&&t.__fixMax?i(a,n[1]):a},this)},getLabel:h.getLabel,scale:function(t){return t=l.scale.call(this,t),p(this.base,t)},setExtent:function(t,e){var n=this.base;t=g(t)/g(n),e=g(e)/g(n),h.setExtent.call(this,t,e)},getExtent:function(){var t=this.base,e=l.getExtent.call(this);e[0]=p(t,e[0]),e[1]=p(t,e[1]);var n=this._originalScale,r=n.getExtent();return n.__fixMin&&(e[0]=i(e[0],r[0])),n.__fixMax&&(e[1]=i(e[1],r[1])),e},unionExtent:function(t){this._originalScale.unionExtent(t);var e=this.base;t[0]=g(t[0])/g(e),t[1]=g(t[1])/g(e),l.unionExtent.call(this,t)},unionExtentFromData:function(t,e){this.unionExtent(t.getDataExtent(e,!0,function(t){return t>0}))},niceTicks:function(t){t=t||10;var e=this._extent,n=e[1]-e[0];if(!(n===1/0||n<=0)){var i=o.quantity(n),r=t/n*i;for(r<=.5&&(i*=10);!isNaN(i)&&Math.abs(i)<1&&Math.abs(i)>0;)i*=10;var a=[o.round(d(e[0]/i)*i),o.round(f(e[1]/i)*i)];this._interval=i,this._niceExtent=a}},niceExtent:function(t,e,n){h.niceExtent.call(this,t,e,n);var i=this._originalScale;i.__fixMin=e,i.__fixMax=n}});r.each(["contain","normalize"],function(t){v.prototype[t]=function(e){return e=g(e)/g(this.base),l[t].call(this,e)}}),v.create=function(){return new v},t.exports=v},function(t,e,n){var i=n(1),r=n(34),a=r.prototype,o=r.extend({type:"ordinal",init:function(t,e){this._data=t,this._extent=e||[0,t.length-1]},parse:function(t){return"string"==typeof t?i.indexOf(this._data,t):Math.round(t)},contain:function(t){return t=this.parse(t),a.contain.call(this,t)&&null!=this._data[t]},normalize:function(t){return a.normalize.call(this,this.parse(t))},scale:function(t){return Math.round(a.scale.call(this,t))},getTicks:function(){for(var t=[],e=this._extent,n=e[0];n<=e[1];)t.push(n),n++;return t},getLabel:function(t){return this._data[t]},count:function(){return this._extent[1]-this._extent[0]+1},unionExtentFromData:function(t,e){this.unionExtent(t.getDataExtent(e,!1))},niceTicks:i.noop,niceExtent:i.noop});o.create=function(){return new o},t.exports=o},function(t,e,n){var i=n(1),r=n(4),a=n(7),o=n(43),s=o.prototype,l=Math.ceil,h=Math.floor,u=1e3,c=60*u,f=60*c,d=24*f,p=function(t,e,n,i){for(;n<i;){var r=n+i>>>1;t[r][2]<e?n=r+1:i=r}return n},g=o.extend({type:"time",getLabel:function(t){var e=this._stepLvl,n=new Date(t);return a.formatTime(e[0],n)},niceExtent:function(t,e,n){var i=this._extent;if(i[0]===i[1]&&(i[0]-=d,i[1]+=d),i[1]===-(1/0)&&i[0]===1/0){var a=new Date;i[1]=new Date(a.getFullYear(),a.getMonth(),a.getDate()),i[0]=i[1]-d}this.niceTicks(t);var o=this._interval;e||(i[0]=r.round(h(i[0]/o)*o)),n||(i[1]=r.round(l(i[1]/o)*o))},niceTicks:function(t){t=t||10;var e=this._extent,n=e[1]-e[0],i=n/t,a=v.length,o=p(v,i,0,a),s=v[Math.min(o,a-1)],u=s[2];if("year"===s[0]){var c=n/u,f=r.nice(c/t,!0);u*=f}var d=[l(e[0]/u)*u,h(e[1]/u)*u];this._stepLvl=s,this._interval=u,this._niceExtent=d},parse:function(t){return+r.parseDate(t)}});i.each(["contain","normalize"],function(t){g.prototype[t]=function(e){return s[t].call(this,this.parse(e))}});var v=[["hh:mm:ss",1,u],["hh:mm:ss",5,5*u],["hh:mm:ss",10,10*u],["hh:mm:ss",15,15*u],["hh:mm:ss",30,30*u],["hh:mm\nMM-dd",1,c],["hh:mm\nMM-dd",5,5*c],["hh:mm\nMM-dd",10,10*c],["hh:mm\nMM-dd",15,15*c],["hh:mm\nMM-dd",30,30*c],["hh:mm\nMM-dd",1,f],["hh:mm\nMM-dd",2,2*f],["hh:mm\nMM-dd",6,6*f],["hh:mm\nMM-dd",12,12*f],["MM-dd\nyyyy",1,d],["week",7,7*d],["month",1,31*d],["quarter",3,380*d/4],["half-year",6,380*d/2],["year",1,380*d]];g.create=function(){return new g},t.exports=g},function(t,e,n){var i=n(41);t.exports=function(t){function e(e){var n=(e.visualColorAccessPath||"itemStyle.normal.color").split("."),r=e.getData(),a=e.get(n)||e.getColorFromPalette(e.get("name"));
+r.setVisual("color",a),t.isSeriesFiltered(e)||("function"!=typeof a||a instanceof i||r.each(function(t){r.setItemVisual(t,"color",a(e.getDataParams(t)))}),r.each(function(t){var e=r.getItemModel(t),i=e.get(n,!0);null!=i&&r.setItemVisual(t,"color",i)}))}t.eachRawSeries(e)}},function(t,e,n){"use strict";function i(t,e,n){return{type:t,event:n,target:e,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}}function r(){}function a(t,e,n){if(t[t.rectHover?"rectContain":"contain"](e,n)){for(var i=t;i;){if(i.silent||i.clipPath&&!i.clipPath.contain(e,n))return!1;i=i.parent}return!0}return!1}var o=n(1),s=n(181),l=n(23);r.prototype.dispose=function(){};var h=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],u=function(t,e,n,i){l.call(this),this.storage=t,this.painter=e,this.painterRoot=i,n=n||new r,this.proxy=n,n.handler=this,this._hovered,this._lastTouchMoment,this._lastX,this._lastY,s.call(this),o.each(h,function(t){n.on&&n.on(t,this[t],this)},this)};u.prototype={constructor:u,mousemove:function(t){var e=t.zrX,n=t.zrY,i=this.findHover(e,n,null),r=this._hovered,a=this.proxy;this._hovered=i,a.setCursor&&a.setCursor(i?i.cursor:"default"),r&&i!==r&&r.__zr&&this.dispatchToElement(r,"mouseout",t),this.dispatchToElement(i,"mousemove",t),i&&i!==r&&this.dispatchToElement(i,"mouseover",t)},mouseout:function(t){this.dispatchToElement(this._hovered,"mouseout",t);var e,n=t.toElement||t.relatedTarget;do n=n&&n.parentNode;while(n&&9!=n.nodeType&&!(e=n===this.painterRoot));!e&&this.trigger("globalout",{event:t})},resize:function(t){this._hovered=null},dispatch:function(t,e){var n=this[t];n&&n.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,n){for(var r="on"+e,a=i(e,t,n),o=t;o&&(o[r]&&(a.cancelBubble=o[r].call(o,a)),o.trigger(e,a),o=o.parent,!a.cancelBubble););a.cancelBubble||(this.trigger(e,a),this.painter&&this.painter.eachOtherLayer(function(t){"function"==typeof t[r]&&t[r].call(t,a),t.trigger&&t.trigger(e,a)}))},findHover:function(t,e,n){for(var i=this.storage.getDisplayList(),r=i.length-1;r>=0;r--)if(!i[r].silent&&i[r]!==n&&!i[r].ignore&&a(i[r],t,e))return i[r]}},o.each(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],function(t){u.prototype[t]=function(e){var n=this.findHover(e.zrX,e.zrY,null);if("mousedown"===t)this._downel=n,this._upel=n;else if("mosueup"===t)this._upel=n;else if("click"===t&&this._downel!==this._upel)return;this.dispatchToElement(n,t,e)}}),o.mixin(u,l),o.mixin(u,s),t.exports=u},function(t,e,n){function i(){return!1}function r(t,e,n,i){var r=document.createElement(e),a=n.getWidth(),o=n.getHeight(),s=r.style;return s.position="absolute",s.left=0,s.top=0,s.width=a+"px",s.height=o+"px",r.width=a*i,r.height=o*i,r.setAttribute("data-zr-dom-id",t),r}var a=n(1),o=n(35),s=n(72),l=n(71),h=function(t,e,n){var s;n=n||o.devicePixelRatio,"string"==typeof t?s=r(t,"canvas",e,n):a.isObject(t)&&(s=t,t=s.id),this.id=t,this.dom=s;var l=s.style;l&&(s.onselectstart=i,l["-webkit-user-select"]="none",l["user-select"]="none",l["-webkit-touch-callout"]="none",l["-webkit-tap-highlight-color"]="rgba(0,0,0,0)",l.padding=0,l.margin=0,l["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=n};h.prototype={constructor:h,elCount:0,__dirty:!0,initContext:function(){this.ctx=this.dom.getContext("2d"),this.ctx.dpr=this.dpr},createBackBuffer:function(){var t=this.dpr;this.domBack=r("back-"+this.id,"canvas",this.painter,t),this.ctxBack=this.domBack.getContext("2d"),1!=t&&this.ctxBack.scale(t,t)},resize:function(t,e){var n=this.dpr,i=this.dom,r=i.style,a=this.domBack;r.width=t+"px",r.height=e+"px",i.width=t*n,i.height=e*n,a&&(a.width=t*n,a.height=e*n,1!=n&&this.ctxBack.scale(n,n))},clear:function(t){var e=this.dom,n=this.ctx,i=e.width,r=e.height,a=this.clearColor,o=this.motionBlur&&!t,h=this.lastFrameAlpha,u=this.dpr;if(o&&(this.domBack||this.createBackBuffer(),this.ctxBack.globalCompositeOperation="copy",this.ctxBack.drawImage(e,0,0,i/u,r/u)),n.clearRect(0,0,i,r),a){var c;a.colorStops?(c=a.__canvasGradient||s.getGradient(n,a,{x:0,y:0,width:i,height:r}),a.__canvasGradient=c):a.image&&(c=l.prototype.getCanvasPattern.call(a,n)),n.save(),n.fillStyle=c||a,n.fillRect(0,0,i,r),n.restore()}if(o){var f=this.domBack;n.save(),n.globalAlpha=h,n.drawImage(f,0,0,i,r),n.restore()}}},t.exports=h},function(t,e,n){"use strict";function i(t){return parseInt(t,10)}function r(t){return!!t&&(!!t.__builtin__||"function"==typeof t.resize&&"function"==typeof t.refresh)}function a(t){t.__unusedCount++}function o(t){1==t.__unusedCount&&t.clear()}function s(t,e,n){return x.copy(t.getBoundingRect()),t.transform&&x.applyTransform(t.transform),_.width=e,_.height=n,!x.intersect(_)}function l(t,e){if(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}function h(t,e){for(var n=0;n<t.length;n++){var i=t[n],r=i.path;i.setTransform(e),r.beginPath(e),i.buildPath(r,i.shape),e.clip(),i.restoreTransform(e)}}function u(t,e){var n=document.createElement("div");return n.style.cssText=["position:relative","overflow:hidden","width:"+t+"px","height:"+e+"px","padding:0","margin:0","border-width:0"].join(";")+";",n}var c=n(35),f=n(1),d=n(52),p=n(11),g=n(51),v=n(155),m=n(67),y=5,x=new p(0,0,0,0),_=new p(0,0,0,0),b=function(t,e,n){var i=!t.nodeName||"CANVAS"===t.nodeName.toUpperCase();this._opts=n=f.extend({},n||{}),this.dpr=n.devicePixelRatio||c.devicePixelRatio,this._singleCanvas=i,this.root=t;var r=t.style;r&&(r["-webkit-tap-highlight-color"]="transparent",r["-webkit-user-select"]=r["user-select"]=r["-webkit-touch-callout"]="none",t.innerHTML=""),this.storage=e;var a=this._zlevelList=[],o=this._layers={};if(this._layerConfig={},i){null!=n.width&&(t.width=n.width),null!=n.height&&(t.height=n.height);var s=t.width,l=t.height;this._width=s,this._height=l;var h=new v(t,this,1);h.initContext(),o[0]=h,a.push(0),this._domRoot=t}else{this._width=this._getSize(0),this._height=this._getSize(1);var d=this._domRoot=u(this._width,this._height);t.appendChild(d)}this._progressiveLayers=[],this._hoverlayer,this._hoverElements=[]};b.prototype={constructor:b,isSingleCanvas:function(){return this._singleCanvas},getViewportRoot:function(){return this._domRoot},refresh:function(t){var e=this.storage.getDisplayList(!0),n=this._zlevelList;this._paintList(e,t);for(var i=0;i<n.length;i++){var r=n[i],a=this._layers[r];!a.__builtin__&&a.refresh&&a.refresh()}return this.refreshHover(),this._progressiveLayers.length&&this._startProgessive(),this},addHover:function(t,e){if(!t.__hoverMir){var n=new t.constructor({style:t.style,shape:t.shape});n.__from=t,t.__hoverMir=n,n.setStyle(e),this._hoverElements.push(n)}},removeHover:function(t){var e=t.__hoverMir,n=this._hoverElements,i=f.indexOf(n,e);i>=0&&n.splice(i,1),t.__hoverMir=null},clearHover:function(t){for(var e=this._hoverElements,n=0;n<e.length;n++){var i=e[n].__from;i&&(i.__hoverMir=null)}e.length=0},refreshHover:function(){var t=this._hoverElements,e=t.length,n=this._hoverlayer;if(n&&n.clear(),e){g(t,this.storage.displayableSortFunc),n||(n=this._hoverlayer=this.getLayer(1e5));var i={};n.ctx.save();for(var r=0;r<e;){var a=t[r],o=a.__from;o&&o.__zr?(r++,o.invisible||(a.transform=o.transform,a.invTransform=o.invTransform,a.__clipPaths=o.__clipPaths,this._doPaintEl(a,n,!0,i))):(t.splice(r,1),o.__hoverMir=null,e--)}n.ctx.restore()}},_startProgessive:function(){function t(){n===e._progressiveToken&&e.storage&&(e._doPaintList(e.storage.getDisplayList()),e._furtherProgressive?(e._progress++,m(t)):e._progressiveToken=-1)}var e=this;if(e._furtherProgressive){var n=e._progressiveToken=+new Date;e._progress++,m(t)}},_clearProgressive:function(){this._progressiveToken=-1,this._progress=0,f.each(this._progressiveLayers,function(t){t.__dirty&&t.clear()})},_paintList:function(t,e){null==e&&(e=!1),this._updateLayerStatus(t),this._clearProgressive(),this.eachBuiltinLayer(a),this._doPaintList(t,e),this.eachBuiltinLayer(o)},_doPaintList:function(t,e){function n(t){var e=a.dpr||1;a.save(),a.globalAlpha=1,a.shadowBlur=0,i.__dirty=!0,a.setTransform(1,0,0,1,0,0),a.drawImage(t.dom,0,0,u*e,c*e),a.restore()}for(var i,r,a,o,s,l,h=0,u=this._width,c=this._height,p=this._progress,g=0,v=t.length;g<v;g++){var m=t[g],x=this._singleCanvas?0:m.zlevel,_=m.__frame;if(_<0&&s&&(n(s),s=null),r!==x&&(a&&a.restore(),o={},r=x,i=this.getLayer(r),i.__builtin__||d("ZLevel "+r+" has been used by unkown layer "+i.id),a=i.ctx,a.save(),i.__unusedCount=0,(i.__dirty||e)&&i.clear()),i.__dirty||e){if(_>=0){if(!s){if(s=this._progressiveLayers[Math.min(h++,y-1)],s.ctx.save(),s.renderScope={},s&&s.__progress>s.__maxProgress){g=s.__nextIdxNotProg-1;continue}l=s.__progress,s.__dirty||(p=l),s.__progress=p+1}_===p&&this._doPaintEl(m,s,!0,s.renderScope)}else this._doPaintEl(m,i,e,o);m.__dirty=!1}}s&&n(s),a&&a.restore(),this._furtherProgressive=!1,f.each(this._progressiveLayers,function(t){t.__maxProgress>=t.__progress&&(this._furtherProgressive=!0)},this)},_doPaintEl:function(t,e,n,i){var r=e.ctx,a=t.transform;if((e.__dirty||n)&&!t.invisible&&0!==t.style.opacity&&(!a||a[0]||a[3])&&(!t.culling||!s(t,this._width,this._height))){var o=t.__clipPaths;(i.prevClipLayer!==e||l(o,i.prevElClipPaths))&&(i.prevElClipPaths&&(i.prevClipLayer.ctx.restore(),i.prevClipLayer=i.prevElClipPaths=null,i.prevEl=null),o&&(r.save(),h(o,r),i.prevClipLayer=e,i.prevElClipPaths=o)),t.beforeBrush&&t.beforeBrush(r),t.brush(r,i.prevEl||null),i.prevEl=t,t.afterBrush&&t.afterBrush(r)}},getLayer:function(t){if(this._singleCanvas)return this._layers[0];var e=this._layers[t];return e||(e=new v("zr_"+t,this,this.dpr),e.__builtin__=!0,this._layerConfig[t]&&f.merge(e,this._layerConfig[t],!0),this.insertLayer(t,e),e.initContext()),e},insertLayer:function(t,e){var n=this._layers,i=this._zlevelList,a=i.length,o=null,s=-1,l=this._domRoot;if(n[t])return void d("ZLevel "+t+" has been used already");if(!r(e))return void d("Layer of zlevel "+t+" is not valid");if(a>0&&t>i[0]){for(s=0;s<a-1&&!(i[s]<t&&i[s+1]>t);s++);o=n[i[s]]}if(i.splice(s+1,0,t),n[t]=e,!e.virtual)if(o){var h=o.dom;h.nextSibling?l.insertBefore(e.dom,h.nextSibling):l.appendChild(e.dom)}else l.firstChild?l.insertBefore(e.dom,l.firstChild):l.appendChild(e.dom)},eachLayer:function(t,e){var n,i,r=this._zlevelList;for(i=0;i<r.length;i++)n=r[i],t.call(e,this._layers[n],n)},eachBuiltinLayer:function(t,e){var n,i,r,a=this._zlevelList;for(r=0;r<a.length;r++)i=a[r],n=this._layers[i],n.__builtin__&&t.call(e,n,i)},eachOtherLayer:function(t,e){var n,i,r,a=this._zlevelList;for(r=0;r<a.length;r++)i=a[r],n=this._layers[i],n.__builtin__||t.call(e,n,i)},getLayers:function(){return this._layers},_updateLayerStatus:function(t){var e=this._layers,n=this._progressiveLayers,i={},r={};this.eachBuiltinLayer(function(t,e){i[e]=t.elCount,t.elCount=0,t.__dirty=!1}),f.each(n,function(t,e){r[e]=t.elCount,t.elCount=0,t.__dirty=!1});for(var a,o,s=0,l=0,h=0,u=t.length;h<u;h++){var c=t[h],d=this._singleCanvas?0:c.zlevel,p=e[d],g=c.progressive;if(p&&(p.elCount++,p.__dirty=p.__dirty||c.__dirty),g>=0){o!==g&&(o=g,l++);var m=c.__frame=l-1;if(!a){var x=Math.min(s,y-1);a=n[x],a||(a=n[x]=new v("progressive",this,this.dpr),a.initContext()),a.__maxProgress=0}a.__dirty=a.__dirty||c.__dirty,a.elCount++,a.__maxProgress=Math.max(a.__maxProgress,m),a.__maxProgress>=a.__progress&&(p.__dirty=!0)}else c.__frame=-1,a&&(a.__nextIdxNotProg=h,s++,a=null)}a&&(s++,a.__nextIdxNotProg=h),this.eachBuiltinLayer(function(t,e){i[e]!==t.elCount&&(t.__dirty=!0)}),n.length=Math.min(s,y),f.each(n,function(t,e){r[e]!==t.elCount&&(c.__dirty=!0),t.__dirty&&(t.__progress=0)})},clear:function(){return this.eachBuiltinLayer(this._clearLayer),this},_clearLayer:function(t){t.clear()},configLayer:function(t,e){if(e){var n=this._layerConfig;n[t]?f.merge(n[t],e,!0):n[t]=e;var i=this._layers[t];i&&f.merge(i,n[t],!0)}},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(f.indexOf(n,t),1))},resize:function(t,e){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){n.style.width=t+"px",n.style.height=e+"px";for(var r in this._layers)this._layers.hasOwnProperty(r)&&this._layers[r].resize(t,e);f.each(this._progressiveLayers,function(n){n.resize(t,e)}),this.refresh(!0)}return this._width=t,this._height=e,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)return this._layers[0].dom;var e=new v("image",this,t.pixelRatio||this.dpr);e.initContext(),e.clearColor=t.backgroundColor,e.clear();for(var n=this.storage.getDisplayList(!0),i={},r=0;r<n.length;r++){var a=n[r];this._doPaintEl(a,e,!0,i)}return e.dom},getWidth:function(){return this._width},getHeight:function(){return this._height},_getSize:function(t){var e=this._opts,n=["width","height"][t],r=["clientWidth","clientHeight"][t],a=["paddingLeft","paddingTop"][t],o=["paddingRight","paddingBottom"][t];if(null!=e[n]&&"auto"!==e[n])return parseFloat(e[n]);var s=this.root,l=document.defaultView.getComputedStyle(s);return(s[r]||i(l[n])||i(s.style[n]))-(i(l[a])||0)-(i(l[o])||0)|0},pathToImage:function(t,e){e=e||this.dpr;var i=document.createElement("canvas"),r=i.getContext("2d"),a=t.getBoundingRect(),o=t.style,s=o.shadowBlur,l=o.shadowOffsetX,h=o.shadowOffsetY,u=o.hasStroke()?o.lineWidth:0,c=Math.max(u/2,-l+s),f=Math.max(u/2,l+s),d=Math.max(u/2,-h+s),p=Math.max(u/2,h+s),g=a.width+c+f,v=a.height+d+p;i.width=g*e,i.height=v*e,r.scale(e,e),r.clearRect(0,0,g,v),r.dpr=e;var m={position:t.position,rotation:t.rotation,scale:t.scale};t.position=[c-a.x,d-a.y],t.rotation=0,t.scale=[1,1],t.updateTransform(),t&&t.brush(r);var y=n(53),x=new y({style:{x:0,y:0,image:i}});return null!=m.position&&(x.position=t.position=m.position),null!=m.rotation&&(x.rotation=t.rotation=m.rotation),null!=m.scale&&(x.scale=t.scale=m.scale),x}},t.exports=b},function(t,e,n){"use strict";function i(t,e){return t.zlevel===e.zlevel?t.z===e.z?t.z2-e.z2:t.z-e.z:t.zlevel-e.zlevel}var r=n(1),a=n(9),o=n(36),s=n(51),l=function(){this._elements={},this._roots=[],this._displayList=[],this._displayListLen=0};l.prototype={constructor:l,traverse:function(t,e){for(var n=0;n<this._roots.length;n++)this._roots[n].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,n=this._displayList,r=0,o=e.length;r<o;r++)this._updateAndAddDisplayable(e[r],null,t);n.length=this._displayListLen,a.canvasSupported&&s(n,i)},_updateAndAddDisplayable:function(t,e,n){if(!t.ignore||n){t.beforeUpdate(),t.__dirty&&t.update(),t.afterUpdate();var i=t.clipPath;if(i){e=e?e.slice():[];for(var r=i,a=t;r;)r.parent=a,r.updateTransform(),e.push(r),a=r,r=r.clipPath}if(t.isGroup){for(var o=t._children,s=0;s<o.length;s++){var l=o[s];t.__dirty&&(l.__dirty=!0),this._updateAndAddDisplayable(l,e,n)}t.__dirty=!1}else t.__clipPaths=e,this._displayList[this._displayListLen++]=t}},addRoot:function(t){this._elements[t.id]||(t instanceof o&&t.addChildrenToStorage(this),this.addToMap(t),this._roots.push(t))},delRoot:function(t){if(null==t){for(var e=0;e<this._roots.length;e++){var n=this._roots[e];n instanceof o&&n.delChildrenFromStorage(this)}return this._elements={},this._roots=[],this._displayList=[],void(this._displayListLen=0)}if(t instanceof Array)for(var e=0,i=t.length;e<i;e++)this.delRoot(t[e]);else{var a;a="string"==typeof t?this._elements[t]:t;var s=r.indexOf(this._roots,a);s>=0&&(this.delFromMap(a.id),this._roots.splice(s,1),a instanceof o&&a.delChildrenFromStorage(this))}},addToMap:function(t){return t instanceof o&&(t.__storage=this),t.dirty(!1),this._elements[t.id]=t,this},get:function(t){return this._elements[t]},delFromMap:function(t){var e=this._elements,n=e[t];return n&&(delete e[t],n instanceof o&&(n.__storage=null)),this},dispose:function(){this._elements=this._renderList=this._roots=null},displayableSortFunc:i},t.exports=l},function(t,e,n){"use strict";var i=n(1),r=n(20).Dispatcher,a=n(67),o=n(66),s=function(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,r.call(this)};s.prototype={constructor:s,addClip:function(t){this._clips.push(t)},addAnimator:function(t){t.animation=this;for(var e=t.getClips(),n=0;n<e.length;n++)this.addClip(e[n])},removeClip:function(t){var e=i.indexOf(this._clips,t);e>=0&&this._clips.splice(e,1)},removeAnimator:function(t){for(var e=t.getClips(),n=0;n<e.length;n++)this.removeClip(e[n]);t.animation=null},_update:function(){for(var t=(new Date).getTime()-this._pausedTime,e=t-this._time,n=this._clips,i=n.length,r=[],a=[],o=0;o<i;o++){var s=n[o],l=s.step(t,e);l&&(r.push(l),a.push(s))}for(var o=0;o<i;)n[o]._needsRemove?(n[o]=n[i-1],n.pop(),i--):o++;i=r.length;for(var o=0;o<i;o++)a[o].fire(r[o]);this._time=t,this.onframe(e),this.trigger("frame",e),this.stage.update&&this.stage.update()},_startLoop:function(){function t(){e._running&&(a(t),!e._paused&&e._update())}var e=this;this._running=!0,a(t)},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=[]},animate:function(t,e){e=e||{};var n=new o(t,e.loop,e.getter,e.setter);return this.addAnimator(n),n}},i.mixin(s,r),t.exports=s},function(t,e,n){function i(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}var r=n(160);i.prototype={constructor:i,step:function(t,e){if(this._initialized||(this._startTime=t+this._delay,this._initialized=!0),this._paused)return void(this._pausedTime+=e);var n=(t-this._startTime-this._pausedTime)/this._life;if(!(n<0)){n=Math.min(n,1);var i=this.easing,a="string"==typeof i?r[i]:i,o="function"==typeof a?a(n):n;return this.fire("frame",o),1==n?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){t="on"+t,this[t]&&this[t](this._target,e)},pause:function(){this._paused=!0},resume:function(){this._paused=!1}},t.exports=i},function(t,e){var n={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*(-Math.pow(2,-10*(t-1))+2)},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,i=.4;return 0===t?0:1===t?1:(!n||n<1?(n=1,e=i/4):e=i*Math.asin(1/n)/(2*Math.PI),-(n*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i)))},elasticOut:function(t){var e,n=.1,i=.4;return 0===t?0:1===t?1:(!n||n<1?(n=1,e=i/4):e=i*Math.asin(1/n)/(2*Math.PI),n*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/i)+1)},elasticInOut:function(t){var e,n=.1,i=.4;return 0===t?0:1===t?1:(!n||n<1?(n=1,e=i/4):e=i*Math.asin(1/n)/(2*Math.PI),(t*=2)<1?-.5*(n*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i)):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?.5*(t*t*((e+1)*t-e)):.5*((t-=2)*t*((e+1)*t+e)+2)},bounceIn:function(t){return 1-n.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*n.bounceIn(2*t):.5*n.bounceOut(2*t-1)+.5}};t.exports=n},function(t,e,n){var i=n(68).normalizeRadian,r=2*Math.PI;t.exports={containStroke:function(t,e,n,a,o,s,l,h,u){if(0===l)return!1;var c=l;h-=t,u-=e;var f=Math.sqrt(h*h+u*u);if(f-c>n||f+c<n)return!1;if(Math.abs(a-o)%r<1e-4)return!0;if(s){var d=a;a=i(o),o=i(d)}else a=i(a),o=i(o);a>o&&(o+=r);var p=Math.atan2(u,h);return p<0&&(p+=r),p>=a&&p<=o||p+r>=a&&p+r<=o}}},function(t,e,n){var i=n(21);t.exports={containStroke:function(t,e,n,r,a,o,s,l,h,u,c){if(0===h)return!1;var f=h;if(c>e+f&&c>r+f&&c>o+f&&c>l+f||c<e-f&&c<r-f&&c<o-f&&c<l-f||u>t+f&&u>n+f&&u>a+f&&u>s+f||u<t-f&&u<n-f&&u<a-f&&u<s-f)return!1;var d=i.cubicProjectPoint(t,e,n,r,a,o,s,l,u,c,null);return d<=f/2}}},function(t,e,n){"use strict";function i(t,e){return Math.abs(t-e)<x}function r(){var t=b[0];b[0]=b[1],b[1]=t}function a(t,e,n,i,a,o,s,l,h,u){if(u>e&&u>i&&u>o&&u>l||u<e&&u<i&&u<o&&u<l)return 0;var c=g.cubicRootAt(e,i,o,l,u,_);if(0===c)return 0;for(var f,d,p=0,v=-1,m=0;m<c;m++){var y=_[m],x=0===y||1===y?.5:1,w=g.cubicAt(t,n,a,s,y);w<h||(v<0&&(v=g.cubicExtrema(e,i,o,l,b),b[1]<b[0]&&v>1&&r(),f=g.cubicAt(e,i,o,l,b[0]),v>1&&(d=g.cubicAt(e,i,o,l,b[1]))),p+=2==v?y<b[0]?f<e?x:-x:y<b[1]?d<f?x:-x:l<d?x:-x:y<b[0]?f<e?x:-x:l<f?x:-x)}return p}function o(t,e,n,i,r,a,o,s){if(s>e&&s>i&&s>a||s<e&&s<i&&s<a)return 0;var l=g.quadraticRootAt(e,i,a,s,_);if(0===l)return 0;var h=g.quadraticExtremum(e,i,a);if(h>=0&&h<=1){for(var u=0,c=g.quadraticAt(e,i,a,h),f=0;f<l;f++){var d=0===_[f]||1===_[f]?.5:1,p=g.quadraticAt(t,n,r,_[f]);p<o||(u+=_[f]<h?c<e?d:-d:a<c?d:-d)}return u}var d=0===_[0]||1===_[0]?.5:1,p=g.quadraticAt(t,n,r,_[0]);return p<o?0:a<e?d:-d}function s(t,e,n,i,r,a,o,s){if(s-=e,s>n||s<-n)return 0;var l=Math.sqrt(n*n-s*s);_[0]=-l,_[1]=l;var h=Math.abs(i-r);if(h<1e-4)return 0;if(h%y<1e-4){i=0,r=y;var u=a?1:-1;return o>=_[0]+t&&o<=_[1]+t?u:0}if(a){var l=i;i=p(r),r=p(l)}else i=p(i),r=p(r);i>r&&(r+=y);for(var c=0,f=0;f<2;f++){var d=_[f];if(d+t>o){var g=Math.atan2(s,d),u=a?1:-1;g<0&&(g=y+g),(g>=i&&g<=r||g+y>=i&&g+y<=r)&&(g>Math.PI/2&&g<1.5*Math.PI&&(u=-u),c+=u)}}return c}function l(t,e,n,r,l){for(var u=0,p=0,g=0,y=0,x=0,_=0;_<t.length;){var b=t[_++];switch(b===h.M&&_>1&&(n||(u+=v(p,g,y,x,r,l))),1==_&&(p=t[_],g=t[_+1],y=p,x=g),b){case h.M:y=t[_++],x=t[_++],p=y,g=x;break;case h.L:if(n){if(m(p,g,t[_],t[_+1],e,r,l))return!0}else u+=v(p,g,t[_],t[_+1],r,l)||0;p=t[_++],g=t[_++];break;case h.C:if(n){if(c.containStroke(p,g,t[_++],t[_++],t[_++],t[_++],t[_],t[_+1],e,r,l))return!0}else u+=a(p,g,t[_++],t[_++],t[_++],t[_++],t[_],t[_+1],r,l)||0;p=t[_++],g=t[_++];break;case h.Q:if(n){if(f.containStroke(p,g,t[_++],t[_++],t[_],t[_+1],e,r,l))return!0}else u+=o(p,g,t[_++],t[_++],t[_],t[_+1],r,l)||0;p=t[_++],g=t[_++];break;case h.A:var w=t[_++],M=t[_++],T=t[_++],S=t[_++],A=t[_++],I=t[_++],C=(t[_++],1-t[_++]),P=Math.cos(A)*T+w,L=Math.sin(A)*S+M;_>1?u+=v(p,g,P,L,r,l):(y=P,x=L);var k=(r-w)*S/T+w;if(n){if(d.containStroke(w,M,S,A,A+I,C,e,k,l))return!0}else u+=s(w,M,S,A,A+I,C,k,l);p=Math.cos(A+I)*T+w,g=Math.sin(A+I)*S+M;break;case h.R:y=p=t[_++],x=g=t[_++];var O=t[_++],D=t[_++],P=y+O,L=x+D;if(n){if(m(y,x,P,x,e,r,l)||m(P,x,P,L,e,r,l)||m(P,L,y,L,e,r,l)||m(y,L,y,x,e,r,l))return!0}else u+=v(P,x,P,L,r,l),u+=v(y,L,y,x,r,l);break;case h.Z:if(n){if(m(p,g,y,x,e,r,l))return!0}else u+=v(p,g,y,x,r,l);p=y,g=x}}return n||i(g,x)||(u+=v(p,g,y,x,r,l)||0),0!==u}var h=n(30).CMD,u=n(98),c=n(162),f=n(99),d=n(161),p=n(68).normalizeRadian,g=n(21),v=n(100),m=u.containStroke,y=2*Math.PI,x=1e-4,_=[-1,-1,-1],b=[-1,-1];t.exports={contain:function(t,e,n){return l(t,0,!1,e,n)},containStroke:function(t,e,n,i){return l(t,e,!0,n,i)}}},function(t,e,n){"use strict";function i(t){var e=t[1][0]-t[0][0],n=t[1][1]-t[0][1];return Math.sqrt(e*e+n*n)}function r(t){return[(t[0][0]+t[1][0])/2,(t[0][1]+t[1][1])/2]}var a=n(20),o=function(){this._track=[]};o.prototype={constructor:o,recognize:function(t,e,n){return this._doTrack(t,e,n),this._recognize(t)},clear:function(){return this._track.length=0,this},_doTrack:function(t,e,n){var i=t.touches;if(i){for(var r={points:[],touches:[],target:e,event:t},o=0,s=i.length;o<s;o++){var l=i[o],h=a.clientToLocal(n,l,{});r.points.push([h.zrX,h.zrY]),r.touches.push(l)}this._track.push(r)}},_recognize:function(t){for(var e in s)if(s.hasOwnProperty(e)){var n=s[e](this._track,t);if(n)return n}}};var s={pinch:function(t,e){var n=t.length;if(n){var a=(t[n-1]||{}).points,o=(t[n-2]||{}).points||a;if(o&&o.length>1&&a&&a.length>1){var s=i(a)/i(o);!isFinite(s)&&(s=1),e.pinchScale=s;var l=r(a);return e.pinchX=l[0],e.pinchY=l[1],{type:"pinch",target:t[0].target,event:e}}}}};t.exports=o},function(t,e,n){function i(t){return"mousewheel"===t&&f.browser.firefox?"DOMMouseScroll":t}function r(t,e,n){var i=t._gestureMgr;"start"===n&&i.clear();var r=i.recognize(e,t.handler.findHover(e.zrX,e.zrY,null),t.dom);if("end"===n&&i.clear(),r){var a=r.type;e.gestureEvent=a,t.handler.dispatchToElement(r.target,a,r.event)}}function a(t){t._touching=!0,clearTimeout(t._touchTimer),t._touchTimer=setTimeout(function(){t._touching=!1},700)}function o(t){var e=t.pointerType;return"pen"===e||"touch"===e}function s(t){function e(t,e){return function(){if(!e._touching)return t.apply(e,arguments)}}u.each(x,function(e){t._handlers[e]=u.bind(w[e],t)}),u.each(b,function(e){t._handlers[e]=u.bind(w[e],t)}),u.each(y,function(n){t._handlers[n]=e(w[n],t)})}function l(t){function e(e,n){u.each(e,function(e){p(t,i(e),n._handlers[e])},n)}c.call(this),this.dom=t,this._touching=!1,this._touchTimer,this._gestureMgr=new d,this._handlers={},s(this),f.pointerEventsSupported?e(b,this):(f.touchEventsSupported&&e(x,this),e(y,this))}var h=n(20),u=n(1),c=n(23),f=n(9),d=n(164),p=h.addEventListener,g=h.removeEventListener,v=h.normalizeEvent,m=300,y=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],x=["touchstart","touchend","touchmove"],_={pointerdown:1,pointerup:1,pointermove:1,pointerout:1},b=u.map(y,function(t){var e=t.replace("mouse","pointer");return _[e]?e:t}),w={mousemove:function(t){t=v(this.dom,t),this.trigger("mousemove",t)},mouseout:function(t){t=v(this.dom,t);var e=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=v(this.dom,t),t.zrByTouch=!0,this._lastTouchMoment=new Date,r(this,t,"start"),w.mousemove.call(this,t),w.mousedown.call(this,t),a(this)},touchmove:function(t){t=v(this.dom,t),t.zrByTouch=!0,r(this,t,"change"),w.mousemove.call(this,t),a(this)},touchend:function(t){t=v(this.dom,t),t.zrByTouch=!0,r(this,t,"end"),w.mouseup.call(this,t),+new Date-this._lastTouchMoment<m&&w.click.call(this,t),a(this)},pointerdown:function(t){w.mousedown.call(this,t)},pointermove:function(t){o(t)||w.mousemove.call(this,t)},pointerup:function(t){w.mouseup.call(this,t)},pointerout:function(t){o(t)||w.mouseout.call(this,t)}};u.each(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],function(t){w[t]=function(e){e=v(this.dom,e),this.trigger(t,e)}});var M=l.prototype;M.dispose=function(){for(var t=y.concat(x),e=0;e<t.length;e++){var n=t[e];g(this.dom,i(n),this._handlers[n])}},M.setCursor=function(t){this.dom.style.cursor=t||"default"},u.mixin(l,c),t.exports=l},function(t,e,n){var i=n(8);t.exports=i.extend({type:"compound",shape:{paths:null},_updatePathDirty:function(){for(var t=this.__dirtyPath,e=this.shape.paths,n=0;n<e.length;n++)t=t||e[n].__dirtyPath;this.__dirtyPath=t,this.__dirty=this.__dirty||t},beforeBrush:function(){this._updatePathDirty();for(var t=this.shape.paths||[],e=this.getGlobalScale(),n=0;n<t.length;n++)t[n].path.setScale(e[0],e[1])},buildPath:function(t,e){for(var n=e.paths||[],i=0;i<n.length;i++)n[i].buildPath(t,n[i].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(),i.prototype.getBoundingRect.call(this)}})},function(t,e,n){"use strict";var i=n(1),r=n(41),a=function(t,e,n,i,a){this.x=null==t?.5:t,this.y=null==e?.5:e,this.r=null==n?.5:n,this.type="radial",this.global=a||!1,r.call(this,i)};a.prototype={constructor:a},i.inherits(a,r),t.exports=a},function(t,e){t.exports={buildPath:function(t,e){var n,i,r,a,o=e.x,s=e.y,l=e.width,h=e.height,u=e.r;l<0&&(o+=l,l=-l),h<0&&(s+=h,h=-h),"number"==typeof u?n=i=r=a=u:u instanceof Array?1===u.length?n=i=r=a=u[0]:2===u.length?(n=r=u[0],i=a=u[1]):3===u.length?(n=u[0],i=a=u[1],r=u[2]):(n=u[0],i=u[1],r=u[2],a=u[3]):n=i=r=a=0;var c;n+i>l&&(c=n+i,n*=l/c,i*=l/c),r+a>l&&(c=r+a,r*=l/c,a*=l/c),i+r>h&&(c=i+r,i*=h/c,r*=h/c),n+a>h&&(c=n+a,n*=h/c,a*=h/c),t.moveTo(o+n,s),t.lineTo(o+l-i,s),0!==i&&t.quadraticCurveTo(o+l,s,o+l,s+i),t.lineTo(o+l,s+h-r),0!==r&&t.quadraticCurveTo(o+l,s+h,o+l-r,s+h),t.lineTo(o+a,s+h),0!==a&&t.quadraticCurveTo(o,s+h,o,s+h-a),t.lineTo(o,s+n),0!==n&&t.quadraticCurveTo(o,s,o+n,s)}}},function(t,e,n){var i=n(6),r=i.min,a=i.max,o=i.scale,s=i.distance,l=i.add;t.exports=function(t,e,n,h){var u,c,f,d,p=[],g=[],v=[],m=[];if(h){f=[1/0,1/0],d=[-(1/0),-(1/0)];for(var y=0,x=t.length;y<x;y++)r(f,f,t[y]),a(d,d,t[y]);r(f,f,h[0]),a(d,d,h[1])}for(var y=0,x=t.length;y<x;y++){var _=t[y];if(n)u=t[y?y-1:x-1],c=t[(y+1)%x];else{if(0===y||y===x-1){p.push(i.clone(t[y]));continue}u=t[y-1],c=t[y+1]}i.sub(g,c,u),o(g,g,e);var b=s(_,u),w=s(_,c),M=b+w;0!==M&&(b/=M,w/=M),o(v,g,-b),o(m,g,w);var T=l([],_,v),S=l([],_,m);h&&(a(T,T,f),r(T,T,d),a(S,S,f),r(S,S,d)),p.push(T),p.push(S)}return n&&p.push(p.shift()),p}},function(t,e,n){function i(t,e,n,i,r,a,o){var s=.5*(n-t),l=.5*(i-e);return(2*(e-n)+s+l)*o+(-3*(e-n)-2*s-l)*a+s*r+e}var r=n(6);t.exports=function(t,e){for(var n=t.length,a=[],o=0,s=1;s<n;s++)o+=r.distance(t[s-1],t[s]);var l=o/2;l=l<n?n:l;for(var s=0;s<l;s++){var h,u,c,f=s/(l-1)*(e?n:n-1),d=Math.floor(f),p=f-d,g=t[d%n];e?(h=t[(d-1+n)%n],u=t[(d+1)%n],c=t[(d+2)%n]):(h=t[0===d?d:d-1],u=t[d>n-2?n-1:d+1],c=t[d>n-3?n-1:d+2]);var v=p*p,m=p*v;a.push([i(h[0],g[0],u[0],c[0],p,v,m),i(h[1],g[1],u[1],c[1],p,v,m)])}return a}},function(t,e,n){t.exports=n(8).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 n=e.cx,i=e.cy,r=Math.max(e.r,0),a=e.startAngle,o=e.endAngle,s=e.clockwise,l=Math.cos(a),h=Math.sin(a);t.moveTo(l*r+n,h*r+i),t.arc(n,i,r,a,o,!s)}})},function(t,e,n){"use strict";function i(t,e,n){var i=t.cpx2,r=t.cpy2;return null===i||null===r?[(n?c:h)(t.x1,t.cpx1,t.cpx2,t.x2,e),(n?c:h)(t.y1,t.cpy1,t.cpy2,t.y2,e)]:[(n?u:l)(t.x1,t.cpx1,t.x2,e),(n?u:l)(t.y1,t.cpy1,t.y2,e)];
+}var r=n(21),a=n(6),o=r.quadraticSubdivide,s=r.cubicSubdivide,l=r.quadraticAt,h=r.cubicAt,u=r.quadraticDerivativeAt,c=r.cubicDerivativeAt,f=[];t.exports=n(8).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 n=e.x1,i=e.y1,r=e.x2,a=e.y2,l=e.cpx1,h=e.cpy1,u=e.cpx2,c=e.cpy2,d=e.percent;0!==d&&(t.moveTo(n,i),null==u||null==c?(d<1&&(o(n,l,r,d,f),l=f[1],r=f[2],o(i,h,a,d,f),h=f[1],a=f[2]),t.quadraticCurveTo(l,h,r,a)):(d<1&&(s(n,l,u,r,d,f),l=f[1],u=f[2],r=f[3],s(i,h,c,a,d,f),h=f[1],c=f[2],a=f[3]),t.bezierCurveTo(l,h,u,c,r,a)))},pointAt:function(t){return i(this.shape,t,!1)},tangentAt:function(t){var e=i(this.shape,t,!0);return a.normalize(e,e)}})},function(t,e,n){"use strict";t.exports=n(8).extend({type:"circle",shape:{cx:0,cy:0,r:0},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,!0)}})},function(t,e,n){t.exports=n(8).extend({type:"line",shape:{x1:0,y1:0,x2:0,y2:0,percent:1},style:{stroke:"#000",fill:null},buildPath:function(t,e){var n=e.x1,i=e.y1,r=e.x2,a=e.y2,o=e.percent;0!==o&&(t.moveTo(n,i),o<1&&(r=n*(1-o)+r*o,a=i*(1-o)+a*o),t.lineTo(r,a))},pointAt:function(t){var e=this.shape;return[e.x1*(1-t)+e.x2*t,e.y1*(1-t)+e.y2*t]}})},function(t,e,n){var i=n(73);t.exports=n(8).extend({type:"polygon",shape:{points:null,smooth:!1,smoothConstraint:null},buildPath:function(t,e){i.buildPath(t,e,!0)}})},function(t,e,n){var i=n(73);t.exports=n(8).extend({type:"polyline",shape:{points:null,smooth:!1,smoothConstraint:null},style:{stroke:"#000",fill:null},buildPath:function(t,e){i.buildPath(t,e,!1)}})},function(t,e,n){var i=n(168);t.exports=n(8).extend({type:"rect",shape:{r:0,x:0,y:0,width:0,height:0},buildPath:function(t,e){var n=e.x,r=e.y,a=e.width,o=e.height;e.r?i.buildPath(t,e):t.rect(n,r,a,o),t.closePath()}})},function(t,e,n){t.exports=n(8).extend({type:"ring",shape:{cx:0,cy:0,r:0,r0:0},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)}})},function(t,e,n){var i=n(9),r=n(8),a=[["shadowBlur",0],["shadowColor","#000"],["shadowOffsetX",0],["shadowOffsetY",0]];t.exports=r.extend({type:"sector",shape:{cx:0,cy:0,r0:0,r:0,startAngle:0,endAngle:2*Math.PI,clockwise:!0},brush:i.browser.ie&&i.browser.version>=11?function(){var t,e=this.__clipPaths,n=this.style;if(e)for(var i=0;i<e.length;i++){var o=e[i]&&e[i].shape;if(o&&o.startAngle===o.endAngle){for(var s=0;s<a.length;s++)a[s][2]=n[a[s][0]],n[a[s][0]]=a[s][1];t=!0;break}}if(r.prototype.brush.apply(this,arguments),t)for(var s=0;s<a.length;s++)n[a[s][0]]=a[s][2]}:r.prototype.brush,buildPath:function(t,e){var n=e.cx,i=e.cy,r=Math.max(e.r0||0,0),a=Math.max(e.r,0),o=e.startAngle,s=e.endAngle,l=e.clockwise,h=Math.cos(o),u=Math.sin(o);t.moveTo(h*r+n,u*r+i),t.lineTo(h*a+n,u*a+i),t.arc(n,i,a,o,s,!l),t.lineTo(Math.cos(s)*r+n,Math.sin(s)*r+i),0!==r&&t.arc(n,i,r,s,o,l),t.closePath()}})},function(t,e,n){"use strict";var i=n(66),r=n(1),a=r.isString,o=r.isFunction,s=r.isObject,l=n(52),h=function(){this.animators=[]};h.prototype={constructor:h,animate:function(t,e){var n,a=!1,o=this,s=this.__zr;if(t){var h=t.split("."),u=o;a="shape"===h[0];for(var c=0,f=h.length;c<f;c++)u&&(u=u[h[c]]);u&&(n=u)}else n=o;if(!n)return void l('Property "'+t+'" is not existed in element '+o.id);var d=o.animators,p=new i(n,e);return p.during(function(t){o.dirty(a)}).done(function(){d.splice(r.indexOf(d,p),1)}),d.push(p),s&&s.animation.addAnimator(p),p},stopAnimation:function(t){for(var e=this.animators,n=e.length,i=0;i<n;i++)e[i].stop(t);return e.length=0,this},animateTo:function(t,e,n,i,r){function s(){h--,h||r&&r()}a(n)?(r=i,i=n,n=0):o(i)?(r=i,i="linear",n=0):o(n)?(r=n,n=0):o(e)?(r=e,e=500):e||(e=500),this.stopAnimation(),this._animateToShallow("",this,t,e,n,i,r);var l=this.animators.slice(),h=l.length;h||r&&r();for(var u=0;u<l.length;u++)l[u].done(s).start(i)},_animateToShallow:function(t,e,n,i,a){var o={},l=0;for(var h in n)if(n.hasOwnProperty(h))if(null!=e[h])s(n[h])&&!r.isArrayLike(n[h])?this._animateToShallow(t?t+"."+h:h,e[h],n[h],i,a):(o[h]=n[h],l++);else if(null!=n[h])if(t){var u={};u[t]={},u[t][h]=n[h],this.attr(u)}else this.attr(h,n[h]);return l>0&&this.animate(t,!1).when(null==i?500:i,o).delay(a||0),this}},t.exports=h},function(t,e){function n(){this.on("mousedown",this._dragStart,this),this.on("mousemove",this._drag,this),this.on("mouseup",this._dragEnd,this),this.on("globalout",this._dragEnd,this)}n.prototype={constructor:n,_dragStart:function(t){var e=t.target;e&&e.draggable&&(this._draggingTarget=e,e.dragging=!0,this._x=t.offsetX,this._y=t.offsetY,this.dispatchToElement(e,"dragstart",t.event))},_drag:function(t){var e=this._draggingTarget;if(e){var n=t.offsetX,i=t.offsetY,r=n-this._x,a=i-this._y;this._x=n,this._y=i,e.drift(r,a,t),this.dispatchToElement(e,"drag",t.event);var o=this.findHover(n,i,e),s=this._dropTarget;this._dropTarget=o,e!==o&&(s&&o!==s&&this.dispatchToElement(s,"dragleave",t.event),o&&o!==s&&this.dispatchToElement(o,"dragenter",t.event))}},_dragEnd:function(t){var e=this._draggingTarget;e&&(e.dragging=!1),this.dispatchToElement(e,"dragend",t.event),this._dropTarget&&this.dispatchToElement(this._dropTarget,"drop",t.event),this._draggingTarget=null,this._dropTarget=null}},t.exports=n},function(t,e,n){function i(t,e,n,i,r,a,o,s,l,h,u){var g=l*(p/180),y=d(g)*(t-n)/2+f(g)*(e-i)/2,x=-1*f(g)*(t-n)/2+d(g)*(e-i)/2,_=y*y/(o*o)+x*x/(s*s);_>1&&(o*=c(_),s*=c(_));var b=(r===a?-1:1)*c((o*o*(s*s)-o*o*(x*x)-s*s*(y*y))/(o*o*(x*x)+s*s*(y*y)))||0,w=b*o*x/s,M=b*-s*y/o,T=(t+n)/2+d(g)*w-f(g)*M,S=(e+i)/2+f(g)*w+d(g)*M,A=m([1,0],[(y-w)/o,(x-M)/s]),I=[(y-w)/o,(x-M)/s],C=[(-1*y-w)/o,(-1*x-M)/s],P=m(I,C);v(I,C)<=-1&&(P=p),v(I,C)>=1&&(P=0),0===a&&P>0&&(P-=2*p),1===a&&P<0&&(P+=2*p),u.addData(h,T,S,o,s,A,P,g,a)}function r(t){if(!t)return[];var e,n=t.replace(/-/g," -").replace(/  /g," ").replace(/ /g,",").replace(/,,/g,",");for(e=0;e<u.length;e++)n=n.replace(new RegExp(u[e],"g"),"|"+u[e]);var r,a=n.split("|"),o=0,l=0,h=new s,c=s.CMD;for(e=1;e<a.length;e++){var f,d=a[e],p=d.charAt(0),g=0,v=d.slice(1).replace(/e,-/g,"e-").split(",");v.length>0&&""===v[0]&&v.shift();for(var m=0;m<v.length;m++)v[m]=parseFloat(v[m]);for(;g<v.length&&!isNaN(v[g])&&!isNaN(v[0]);){var y,x,_,b,w,M,T,S=o,A=l;switch(p){case"l":o+=v[g++],l+=v[g++],f=c.L,h.addData(f,o,l);break;case"L":o=v[g++],l=v[g++],f=c.L,h.addData(f,o,l);break;case"m":o+=v[g++],l+=v[g++],f=c.M,h.addData(f,o,l),p="l";break;case"M":o=v[g++],l=v[g++],f=c.M,h.addData(f,o,l),p="L";break;case"h":o+=v[g++],f=c.L,h.addData(f,o,l);break;case"H":o=v[g++],f=c.L,h.addData(f,o,l);break;case"v":l+=v[g++],f=c.L,h.addData(f,o,l);break;case"V":l=v[g++],f=c.L,h.addData(f,o,l);break;case"C":f=c.C,h.addData(f,v[g++],v[g++],v[g++],v[g++],v[g++],v[g++]),o=v[g-2],l=v[g-1];break;case"c":f=c.C,h.addData(f,v[g++]+o,v[g++]+l,v[g++]+o,v[g++]+l,v[g++]+o,v[g++]+l),o+=v[g-2],l+=v[g-1];break;case"S":y=o,x=l;var I=h.len(),C=h.data;r===c.C&&(y+=o-C[I-4],x+=l-C[I-3]),f=c.C,S=v[g++],A=v[g++],o=v[g++],l=v[g++],h.addData(f,y,x,S,A,o,l);break;case"s":y=o,x=l;var I=h.len(),C=h.data;r===c.C&&(y+=o-C[I-4],x+=l-C[I-3]),f=c.C,S=o+v[g++],A=l+v[g++],o+=v[g++],l+=v[g++],h.addData(f,y,x,S,A,o,l);break;case"Q":S=v[g++],A=v[g++],o=v[g++],l=v[g++],f=c.Q,h.addData(f,S,A,o,l);break;case"q":S=v[g++]+o,A=v[g++]+l,o+=v[g++],l+=v[g++],f=c.Q,h.addData(f,S,A,o,l);break;case"T":y=o,x=l;var I=h.len(),C=h.data;r===c.Q&&(y+=o-C[I-4],x+=l-C[I-3]),o=v[g++],l=v[g++],f=c.Q,h.addData(f,y,x,o,l);break;case"t":y=o,x=l;var I=h.len(),C=h.data;r===c.Q&&(y+=o-C[I-4],x+=l-C[I-3]),o+=v[g++],l+=v[g++],f=c.Q,h.addData(f,y,x,o,l);break;case"A":_=v[g++],b=v[g++],w=v[g++],M=v[g++],T=v[g++],S=o,A=l,o=v[g++],l=v[g++],f=c.A,i(S,A,o,l,M,T,_,b,w,f,h);break;case"a":_=v[g++],b=v[g++],w=v[g++],M=v[g++],T=v[g++],S=o,A=l,o+=v[g++],l+=v[g++],f=c.A,i(S,A,o,l,M,T,_,b,w,f,h)}}"z"!==p&&"Z"!==p||(f=c.Z,h.addData(f)),r=f}return h.toStatic(),h}function a(t,e){var n,i=r(t);return e=e||{},e.buildPath=function(t){t.setData(i.data),n&&l(t,n);var e=t.getContext();e&&t.rebuildPath(e)},e.applyTransform=function(t){n||(n=h.create()),h.mul(n,t,n),this.dirty(!0)},e}var o=n(8),s=n(30),l=n(183),h=n(19),u=["m","M","l","L","v","V","h","H","z","Z","c","C","q","Q","t","T","s","S","a","A"],c=Math.sqrt,f=Math.sin,d=Math.cos,p=Math.PI,g=function(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])},v=function(t,e){return(t[0]*e[0]+t[1]*e[1])/(g(t)*g(e))},m=function(t,e){return(t[0]*e[1]<t[1]*e[0]?-1:1)*Math.acos(v(t,e))};t.exports={createFromString:function(t,e){return new o(a(t,e))},extendFromString:function(t,e){return o.extend(a(t,e))},mergePath:function(t,e){for(var n=[],i=t.length,r=0;r<i;r++){var a=t[r];a.__dirty&&a.buildPath(a.path,a.shape,!0),n.push(a.path)}var s=new o(e);return s.buildPath=function(t){t.appendPath(n);var e=t.getContext();e&&t.rebuildPath(e)},s}}},function(t,e,n){function i(t,e){var n,i,a,u,c,f,d=t.data,p=r.M,g=r.C,v=r.L,m=r.R,y=r.A,x=r.Q;for(a=0,u=0;a<d.length;){switch(n=d[a++],u=a,i=0,n){case p:i=1;break;case v:i=1;break;case g:i=3;break;case x:i=2;break;case y:var _=e[4],b=e[5],w=l(e[0]*e[0]+e[1]*e[1]),M=l(e[2]*e[2]+e[3]*e[3]),T=h(-e[1]/M,e[0]/w);d[a++]+=_,d[a++]+=b,d[a++]*=w,d[a++]*=M,d[a++]+=T,d[a++]+=T,a+=2,u=a;break;case m:f[0]=d[a++],f[1]=d[a++],o(f,f,e),d[u++]=f[0],d[u++]=f[1],f[0]+=d[a++],f[1]+=d[a++],o(f,f,e),d[u++]=f[0],d[u++]=f[1]}for(c=0;c<i;c++){var f=s[c];f[0]=d[a++],f[1]=d[a++],o(f,f,e),d[u++]=f[0],d[u++]=f[1]}}}var r=n(30).CMD,a=n(6),o=a.applyTransform,s=[[],[],[]],l=Math.sqrt,h=Math.atan2;t.exports=i}])});
\ No newline at end of file
diff --git a/dist/extension/bmap.js b/dist/extension/bmap.js
index 8e00525..22f6f37 100644
--- a/dist/extension/bmap.js
+++ b/dist/extension/bmap.js
@@ -103,10 +103,20 @@
 	        this._mapOffset = [0, 0];
 
 	        this._api = api;
+
+	        this._projection = new BMap.MercatorProjection();
 	    }
 
 	    BMapCoordSys.prototype.dimensions = ['lng', 'lat'];
 
+	    BMapCoordSys.prototype.setZoom = function (zoom) {
+	        this._zoom = zoom;
+	    };
+
+	    BMapCoordSys.prototype.setCenter = function (center) {
+	        this._center = this._projection.lngLatToPoint(new BMap.Point(center[0], center[1]));
+	    };
+
 	    BMapCoordSys.prototype.setMapOffset = function (mapOffset) {
 	        this._mapOffset = mapOffset;
 	    };
@@ -117,7 +127,16 @@
 
 	    BMapCoordSys.prototype.dataToPoint = function (data) {
 	        var point = new BMap.Point(data[0], data[1]);
-	        // TODO pointToOverlayPixel is toooooooo slow, cache the transform
+	        // TODO mercator projection is toooooooo slow
+	        // var mercatorPoint = this._projection.lngLatToPoint(point);
+
+	        // var width = this._api.getZr().getWidth();
+	        // var height = this._api.getZr().getHeight();
+	        // var divider = Math.pow(2, 18 - 10);
+	        // return [
+	        //     Math.round((mercatorPoint.x - this._center.x) / divider + width / 2),
+	        //     Math.round((this._center.y - mercatorPoint.y) / divider + height / 2)
+	        // ];
 	        var px = this._bmap.pointToOverlayPixel(point);
 	        var mapOffset = this._mapOffset;
 	        return [px.x - mapOffset[0], px.y - mapOffset[1]];
@@ -217,6 +236,9 @@
 
 	            bmapCoordSys = new BMapCoordSys(bmap, api);
 	            bmapCoordSys.setMapOffset(bmapModel.__mapOffset || [0, 0]);
+	            bmapCoordSys.setZoom(zoom);
+	            bmapCoordSys.setCenter(center);
+
 	            bmapModel.coordinateSystem = bmapCoordSys;
 	        });
 
diff --git a/dist/extension/bmap.min.js b/dist/extension/bmap.min.js
index cc485e9..9ee2a81 100644
--- a/dist/extension/bmap.min.js
+++ b/dist/extension/bmap.min.js
@@ -1 +1 @@
-!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("echarts")):"function"==typeof define&&define.amd?define(["echarts"],t):"object"==typeof exports?exports.bmap=t(require("echarts")):(e.echarts=e.echarts||{},e.echarts.bmap=t(e.echarts))}(this,function(e){return function(e){function t(n){if(o[n])return o[n].exports;var r=o[n]={exports:{},id:n,loaded:!1};return e[n].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var o={};return t.m=e,t.c=o,t.p="",t(0)}([function(e,t,o){var n;n=function(e){return o(1).registerCoordinateSystem("bmap",o(2)),o(3),o(4),o(1).registerAction({type:"bmapRoam",event:"bmapRoam",update:"updateLayout"},function(e,t){t.eachComponent("bmap",function(e){var t=e.getBMap(),o=t.getCenter();e.setCenterAndZoom([o.lng,o.lat],t.getZoom())})}),{version:"1.0.0"}}.call(t,o,t,e),!(void 0!==n&&(e.exports=n))},function(t,o){t.exports=e},function(e,t,o){var n;n=function(e){function t(e,t){this._bmap=e,this.dimensions=["lng","lat"],this._mapOffset=[0,0],this._api=t}function n(){function e(e){this._root=e}return e.prototype=new BMap.Overlay,e.prototype.initialize=function(e){return e.getPanes().labelPane.appendChild(this._root),this._root},e.prototype.draw=function(){},e}var r=o(1);t.prototype.dimensions=["lng","lat"],t.prototype.setMapOffset=function(e){this._mapOffset=e},t.prototype.getBMap=function(){return this._bmap},t.prototype.dataToPoint=function(e){var t=new BMap.Point(e[0],e[1]),o=this._bmap.pointToOverlayPixel(t),n=this._mapOffset;return[o.x-n[0],o.y-n[1]]},t.prototype.pointToData=function(e){var t=this._mapOffset,e=this._bmap.overlayPixelToPoint({x:e[0]+t[0],y:e[1]+t[1]});return[e.lng,e.lat]},t.prototype.getViewRect=function(){var e=this._api;return new r.graphic.BoundingRect(0,0,e.getWidth(),e.getHeight())},t.prototype.getRoamTransform=function(){return r.matrix.create()};var a;return t.dimensions=t.prototype.dimensions,t.create=function(e,o){var r,i=o.getDom();e.eachComponent("bmap",function(e){var p=o.getZr().painter.getViewportRoot();if("undefined"==typeof BMap)throw new Error("BMap api is not loaded");if(a=a||n(),r)throw new Error("Only one bmap component can exist");if(!e.__bmap){var s=i.querySelector(".ec-extension-bmap");s&&(p.style.left="0px",p.style.top="0px",i.removeChild(s)),s=document.createElement("div"),s.style.cssText="width:100%;height:100%",s.classList.add("ec-extension-bmap"),i.appendChild(s);var c=e.__bmap=new BMap.Map(s),m=new a(p);c.addOverlay(m)}var c=e.__bmap,l=e.get("center"),d=e.get("zoom");if(l&&d){var f=new BMap.Point(l[0],l[1]);c.centerAndZoom(f,d)}r=new t(c,o),r.setMapOffset(e.__mapOffset||[0,0]),e.coordinateSystem=r}),e.eachSeries(function(e){"bmap"===e.get("coordinateSystem")&&(e.coordinateSystem=r)})},t}.call(t,o,t,e),!(void 0!==n&&(e.exports=n))},function(e,t,o){var n;n=function(e){function t(e,t){return e&&t&&e[0]===t[0]&&e[1]===t[1]}return o(1).extendComponentModel({type:"bmap",getBMap:function(){return this.__bmap},setCenterAndZoom:function(e,t){this.option.center=e,this.option.zoom=t},centerOrZoomChanged:function(e,o){var n=this.option;return!(t(e,n.center)&&o===n.zoom)},defaultOption:{center:[104.114129,37.550339],zoom:5,mapStyle:{},roam:!1}})}.call(t,o,t,e),!(void 0!==n&&(e.exports=n))},function(e,t,o){var n;n=function(e){return o(1).extendComponentView({type:"bmap",render:function(e,t,o){function n(){r||o.dispatchAction({type:"bmapRoam"})}var r=!0,a=e.getBMap(),i=o.getZr().painter.getViewportRoot(),p=e.coordinateSystem,s=function(t,n){if(!r){var a=i.parentNode.parentNode.parentNode,s=[-parseInt(a.style.left,10)||0,-parseInt(a.style.top,10)||0];i.style.left=s[0]+"px",i.style.top=s[1]+"px",p.setMapOffset(s),e.__mapOffset=s,o.dispatchAction({type:"bmapRoam"})}};a.removeEventListener("moving",this._oldMoveHandler),a.removeEventListener("zoomend",this._oldZoomEndHandler),a.addEventListener("moving",s),a.addEventListener("zoomend",n),this._oldMoveHandler=s,this._oldZoomEndHandler=n;var c=e.get("roam");c&&"scale"!==c?a.enableDragging():a.disableDragging(),c&&"move"!==c?(a.enableScrollWheelZoom(),a.enableDoubleClickZoom(),a.enablePinchToZoom()):(a.disableScrollWheelZoom(),a.disableDoubleClickZoom(),a.disablePinchToZoom());var m=e.__mapStyle,l=e.get("mapStyle")||{},d=JSON.stringify(l);JSON.stringify(m)!==d&&(Object.keys(l).length&&a.setMapStyle(l),e.__mapStyle=JSON.parse(d)),r=!1}})}.call(t,o,t,e),!(void 0!==n&&(e.exports=n))}])});
\ No newline at end of file
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("echarts")):"function"==typeof define&&define.amd?define(["echarts"],t):"object"==typeof exports?exports.bmap=t(require("echarts")):(e.echarts=e.echarts||{},e.echarts.bmap=t(e.echarts))}(this,function(e){return function(e){function t(n){if(o[n])return o[n].exports;var r=o[n]={exports:{},id:n,loaded:!1};return e[n].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var o={};return t.m=e,t.c=o,t.p="",t(0)}([function(e,t,o){var n;n=function(e){return o(1).registerCoordinateSystem("bmap",o(2)),o(3),o(4),o(1).registerAction({type:"bmapRoam",event:"bmapRoam",update:"updateLayout"},function(e,t){t.eachComponent("bmap",function(e){var t=e.getBMap(),o=t.getCenter();e.setCenterAndZoom([o.lng,o.lat],t.getZoom())})}),{version:"1.0.0"}}.call(t,o,t,e),!(void 0!==n&&(e.exports=n))},function(t,o){t.exports=e},function(e,t,o){var n;n=function(e){function t(e,t){this._bmap=e,this.dimensions=["lng","lat"],this._mapOffset=[0,0],this._api=t,this._projection=new BMap.MercatorProjection}function n(){function e(e){this._root=e}return e.prototype=new BMap.Overlay,e.prototype.initialize=function(e){return e.getPanes().labelPane.appendChild(this._root),this._root},e.prototype.draw=function(){},e}var r=o(1);t.prototype.dimensions=["lng","lat"],t.prototype.setZoom=function(e){this._zoom=e},t.prototype.setCenter=function(e){this._center=this._projection.lngLatToPoint(new BMap.Point(e[0],e[1]))},t.prototype.setMapOffset=function(e){this._mapOffset=e},t.prototype.getBMap=function(){return this._bmap},t.prototype.dataToPoint=function(e){var t=new BMap.Point(e[0],e[1]),o=this._bmap.pointToOverlayPixel(t),n=this._mapOffset;return[o.x-n[0],o.y-n[1]]},t.prototype.pointToData=function(e){var t=this._mapOffset,e=this._bmap.overlayPixelToPoint({x:e[0]+t[0],y:e[1]+t[1]});return[e.lng,e.lat]},t.prototype.getViewRect=function(){var e=this._api;return new r.graphic.BoundingRect(0,0,e.getWidth(),e.getHeight())},t.prototype.getRoamTransform=function(){return r.matrix.create()};var i;return t.dimensions=t.prototype.dimensions,t.create=function(e,o){var r,a=o.getDom();e.eachComponent("bmap",function(e){var p=o.getZr().painter.getViewportRoot();if("undefined"==typeof BMap)throw new Error("BMap api is not loaded");if(i=i||n(),r)throw new Error("Only one bmap component can exist");if(!e.__bmap){var s=a.querySelector(".ec-extension-bmap");s&&(p.style.left="0px",p.style.top="0px",a.removeChild(s)),s=document.createElement("div"),s.style.cssText="width:100%;height:100%",s.classList.add("ec-extension-bmap"),a.appendChild(s);var c=e.__bmap=new BMap.Map(s),m=new i(p);c.addOverlay(m)}var c=e.__bmap,l=e.get("center"),d=e.get("zoom");if(l&&d){var f=new BMap.Point(l[0],l[1]);c.centerAndZoom(f,d)}r=new t(c,o),r.setMapOffset(e.__mapOffset||[0,0]),r.setZoom(d),r.setCenter(l),e.coordinateSystem=r}),e.eachSeries(function(e){"bmap"===e.get("coordinateSystem")&&(e.coordinateSystem=r)})},t}.call(t,o,t,e),!(void 0!==n&&(e.exports=n))},function(e,t,o){var n;n=function(e){function t(e,t){return e&&t&&e[0]===t[0]&&e[1]===t[1]}return o(1).extendComponentModel({type:"bmap",getBMap:function(){return this.__bmap},setCenterAndZoom:function(e,t){this.option.center=e,this.option.zoom=t},centerOrZoomChanged:function(e,o){var n=this.option;return!(t(e,n.center)&&o===n.zoom)},defaultOption:{center:[104.114129,37.550339],zoom:5,mapStyle:{},roam:!1}})}.call(t,o,t,e),!(void 0!==n&&(e.exports=n))},function(e,t,o){var n;n=function(e){return o(1).extendComponentView({type:"bmap",render:function(e,t,o){function n(){r||o.dispatchAction({type:"bmapRoam"})}var r=!0,i=e.getBMap(),a=o.getZr().painter.getViewportRoot(),p=e.coordinateSystem,s=function(t,n){if(!r){var i=a.parentNode.parentNode.parentNode,s=[-parseInt(i.style.left,10)||0,-parseInt(i.style.top,10)||0];a.style.left=s[0]+"px",a.style.top=s[1]+"px",p.setMapOffset(s),e.__mapOffset=s,o.dispatchAction({type:"bmapRoam"})}};i.removeEventListener("moving",this._oldMoveHandler),i.removeEventListener("zoomend",this._oldZoomEndHandler),i.addEventListener("moving",s),i.addEventListener("zoomend",n),this._oldMoveHandler=s,this._oldZoomEndHandler=n;var c=e.get("roam");c&&"scale"!==c?i.enableDragging():i.disableDragging(),c&&"move"!==c?(i.enableScrollWheelZoom(),i.enableDoubleClickZoom(),i.enablePinchToZoom()):(i.disableScrollWheelZoom(),i.disableDoubleClickZoom(),i.disablePinchToZoom());var m=e.__mapStyle,l=e.get("mapStyle")||{},d=JSON.stringify(l);JSON.stringify(m)!==d&&(Object.keys(l).length&&i.setMapStyle(l),e.__mapStyle=JSON.parse(d)),r=!1}})}.call(t,o,t,e),!(void 0!==n&&(e.exports=n))}])});
\ No newline at end of file
diff --git a/package.json b/package.json
index fc8b1c6..72751d3 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "echarts",
-  "version": "3.4.0",
+  "version": "3.5.0",
   "description": "A powerful charting and visualization library for browser",
   "keywords": [
     "visualization",
@@ -35,7 +35,7 @@
     "prepublish": "node build/amd2common.js"
   },
   "dependencies": {
-    "zrender": "^3.3.0"
+    "zrender": "^3.4.0"
   },
   "devDependencies": {
     "coordtransform": "^2.0.2",
@@ -45,6 +45,6 @@
     "fs-extra": "^0.26.5",
     "glob": "^7.0.0",
     "webpack": "^1.12.13",
-    "zrender": "^3.2.2"
+    "zrender": "^3.4.0"
   }
 }
diff --git a/src/echarts.js b/src/echarts.js
index 532b7af..1b590f8 100644
--- a/src/echarts.js
+++ b/src/echarts.js
@@ -1508,9 +1508,9 @@
         /**
          * @type {number}
          */
-        version: '3.4.0',
+        version: '3.5.0',
         dependencies: {
-            zrender: '3.3.0'
+            zrender: '3.4.0'
         }
     };