(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Equation = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o solve('2+5+6') * * @param {String} expression * The expression to create an equation for (containing variables) * @return {Function} * The function which replaces variables with values in order * and solves the expression */ equation: function equation(expression) { var stack = parseExpression(expression); var variables = []; stack.forEach(function varCheck(a) { if (Array.isArray(a)) { return a.forEach(varCheck); } if (isVariable(a)) { // grouped variables like (y) need to have their parantheses removed variables.push(_.removeSymbols(a)); } }); return function () { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } stack.forEach(function varCheck(a, i, arr) { if (Array.isArray(a)) { return a.forEach(varCheck); } var index = variables.indexOf(a); if (index > -1) { // grouped variables like (y) need to have their parantheses removed arr[i] = args[index]; } }); stack = sortStack(stack); stack = _.parseNumbers(stack); stack = solveStack(stack); return stack; }; }, registerOperator: function registerOperator(key, options) { _operators2['default'][key] = options; }, registerConstant: function registerConstant(key, options) { _constants2['default'][key] = options; } }; var solveStack = function solveStack(_x) { var _again = true; _function: while (_again) { var stack = _x; _again = false; // if an operator takes an expression argument, we should not dive into it // and solve the expression inside var hasExpressionArgument = stack.some(function (a) { return _operators2['default'][a] && _operators2['default'][a].hasExpression; }); if (!hasExpressionArgument && stack.some(Array.isArray)) { stack = stack.map(function (group) { if (!Array.isArray(group)) { return group; } return solveStack(group); }); _x = stack; _again = true; hasExpressionArgument = undefined; continue _function; } else { return evaluate(stack); } } }; var PRECEDENCES = Object.keys(_operators2['default']).map(function (key) { return _operators2['default'][key].precedence; }); var MAX_PRECEDENCE = Math.max.apply(Math, _toConsumableArray(PRECEDENCES)); var MIN_PRECEDENCE = Math.min.apply(Math, _toConsumableArray(PRECEDENCES)); /** * Parses the given expression into an array of separated * numbers and operators/functions. * The result is passed to parseGroups * * @param {String} expression * The expression to parse * @return {Array} * The parsed array */ var parseExpression = function parseExpression(expression) { // function arguments can be separated using comma, // but we parse as groups, so this is the solution to getting comma to work // sigma(0, 4, 2@) becomes sigma(0)(4)(2@) so every argument is parsed // separately expression = expression.replace(/,/g, ')('); var stream = new _readstream2['default'](expression), stack = [], record = '', cur = undefined, past = undefined; // Create an array of separated numbers & operators while (stream.next()) { cur = stream.current(); past = stack.length - 1; if (cur === ' ') { continue; } // it's probably a function with a length more than one if (!_.isNumber(cur) && !_operators2['default'][cur] && cur !== '.' && cur !== '(' && cur !== ')') { record += cur; } else if (record.length) { var beforeRecord = past - (record.length - 1); if (isVariable(record) && _.isNumber(stack[beforeRecord])) { stack.push('*'); } stack.push(record, cur); record = ''; // numbers and decimals } else if (_.isNumber(stack[past]) && (_.isNumber(cur) || cur === '.')) { stack[past] += cur; // negation sign } else if (stack[past] === '-') { var beforeSign = stack[past - 1]; // 2 / -5 is OK, pass if (_operators2['default'][beforeSign]) { stack[past] += cur; // (2+1) - 5 becomes (2+1) + -5 } else if (beforeSign === ')') { stack[past] = '+'; stack.push('-' + cur); // 2 - 5 is also OK, pass } else if (_.isNumber(beforeSign) || isVariable(beforeSign)) { stack.push(cur); } else { stack[past] += cur; } } else { stack.push(cur); } } if (record.length) { var beforeRecord = past - (record.length - 1); if (isVariable(record) && _.isNumber(stack[beforeRecord])) { stack.push('*'); } stack.push(record); } return parseGroups(stack); }; /** * Takes the parsed array from parseExpression and * groups up expressions in parantheses in deep arrays * * Example: 2+(5+4) becomes [2, [5, '+', 4]] * * @param {Array} stack * The parsed expression * @return {Array} * Grouped up expression */ var parseGroups = function parseGroups(stack) { // Parantheses become inner arrays which will then be processed first var depth = 0; return stack.reduce(function (a, b) { if (b.indexOf('(') > -1) { if (b.length > 1) { _.dive(a, depth).push(b.replace('(', ''), []); } else { _.dive(a, depth).push([]); } depth++; } else if (b === ')') { depth--; } else { _.dive(a, depth).push(b); } return a; }, []); }; /** * Gives information about an operator's format * including number of left and right arguments * * @param {String/Object} operator * The operator object or operator name (e.g. +, -) * @return {Object} * An object including the count of left and right arguments */ var formatInfo = function formatInfo(operator) { var op = typeof operator === 'string' ? _operators2['default'][operator] : operator; if (!op) { return null; } var format = op.format.split('1'), left = format[0].length, right = format[1].length; return { left: left, right: right }; }; /** * Groups up operators and their arguments based on their precedence * in deep arrays, the higher the priority, the deeper the group. * This simplifies the evaluating process, the only thing to do is to * evaluate from bottom up, evaluating deep groups first * * @param {Array} stack * The parsed and grouped expression * @return {Array} * Grouped expression based on precedences */ var sortStack = function sortStack(stack) { var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = stack.entries()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var _step$value = _slicedToArray(_step.value, 2); var index = _step$value[0]; var item = _step$value[1]; if (Array.isArray(item)) { stack.splice(index, 1, sortStack(item)); } } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator['return']) { _iterator['return'](); } } finally { if (_didIteratorError) { throw _iteratorError; } } } for (var i = MIN_PRECEDENCE; i <= MAX_PRECEDENCE; i++) { for (var index = 0; index < stack.length; ++index) { var item = stack[index]; var op = _operators2['default'][item]; if (!op || op.precedence !== i) { continue; } var _formatInfo = formatInfo(op); var left = _formatInfo.left; var right = _formatInfo.right; var group = stack.splice(index - left, left + right + 1, []); stack[index - left] = group; for (var y = 0; y < i; y++) { group = [group]; } index -= right; } } return stack; }; /** * Evaluates the given math expression. * The expression is an array with an operator and arguments * * Example: evaluate([2, '+', 4]) == 6 * * @param {Array} stack * A single math expression * @return {Number} * Result of the expression */ var evaluate = function evaluate(stack) { var _operators$op; var op = findOperator(stack); if (!op) { return stack[0]; } var _formatInfo2 = formatInfo(op); var left = _formatInfo2.left; var leftArguments = stack.slice(0, left), rightArguments = stack.slice(left + 1); return fixFloat((_operators$op = _operators2['default'][op]).fn.apply(_operators$op, _toConsumableArray(leftArguments).concat(_toConsumableArray(rightArguments)))); }; /** * Finds the first operator in an array and returns it * * @param {Array} arr * The array to look for an operator in * @return {Object} * The operator object or null if no operator is found */ var findOperator = function findOperator(arr) { var _iteratorNormalCompletion2 = true; var _didIteratorError2 = false; var _iteratorError2 = undefined; try { for (var _iterator2 = arr[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { var o = _step2.value; if (typeof o === 'string') { return o; } } } catch (err) { _didIteratorError2 = true; _iteratorError2 = err; } finally { try { if (!_iteratorNormalCompletion2 && _iterator2['return']) { _iterator2['return'](); } } finally { if (_didIteratorError2) { throw _iteratorError2; } } } return null; }; /** * Replaces constants in a string with their values * * @param {String} expression * The expression to replace constants in * @return {String} * The expression with constants replaced */ var replaceConstants = function replaceConstants(expression) { return expression.replace(/[A-Z]*/g, function (a) { var c = _constants2['default'][a]; if (!c) { return a; } return typeof c === 'function' ? c() : c; }); }; /** * Fixes JavaScript's floating point precisions - Issue #5 * * @param {Number} number * The number to fix * @return {Number} * Fixed number */ var fixFloat = function fixFloat(number) { return +number.toFixed(15); }; /** * Recognizes variables such as x, y, z * @param {String} a * The string to check for * @return {Boolean} * true if variable, else false */ var SPECIALS = '()[]{}'.split(''); var isVariable = function isVariable(a) { return typeof a === 'string' && !_.isNumber(a) && !_operators2['default'][a] && a === a.toLowerCase() && SPECIALS.indexOf(a) === -1; }; exports.isVariable = isVariable; exports['default'] = Equation; },{"./constants":1,"./helpers":2,"./operators":4,"./readstream":5,"babel/polyfill":8}],4:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var _index = require('./index'); var _index2 = _interopRequireDefault(_index); /* * Operators and Functions * fn: function used to evaluate value * format: the format using which arguments are parsed: * 0 indicates an argument and 1 indicates the operator * e.g: factorial is 01, add is 010, like 2!, 2+2 * precedence: determines which operators should be evaluated first * the lower the value, the higher the precedence * hasExpression: determines if any of the operator arguments are an expression * This way, arguments will not be solved by equation and instead * you have to call solve on each argument yourself. * You get the arguments as parsed arrays sigma(0, 5, 2@) becomes * sigma(0, 5, [2, '*', '@']). See sigma operator for reference */ exports['default'] = { '^': { fn: function fn(a, b) { return Math.pow(a, b); }, format: '010', precedence: 0 }, '*': { fn: function fn(a, b) { return a * b; }, format: '010', precedence: 1 }, '/': { fn: function fn(a, b) { return a / b; }, format: '010', precedence: 1 }, '%': { fn: function fn(a, b) { return a % b; }, format: '010', precedence: 1 }, '\\': { fn: function fn(a, b) { return Math.floor(a / b); }, format: '010', precedence: 1 }, '+': { fn: function fn(a, b) { return a + b; }, format: '010', precedence: 2 }, '-': { fn: function fn(a, b) { return a - b; }, format: '010', precedence: 2 }, '!': { fn: function fn(a) { var sum = 1; for (var i = 1; i <= a; ++i) { sum *= i; } return sum; }, format: '01', precedence: 2 }, 'log': { fn: Math.log, format: '10', precedence: -1 }, 'ln': { fn: Math.log, format: '10', precedence: -1 }, 'lg': { fn: function fn(a) { return Math.log(a) / Math.log(2); }, format: '10', precedence: -1 }, 'sin': { fn: Math.sin, format: '10', precedence: -1 }, 'cos': { fn: Math.cos, format: '10', precedence: -1 }, 'tan': { fn: Math.tan, format: '10', precedence: -1 }, 'cot': { fn: Math.cot, format: '10', precedence: -1 }, 'round': { fn: Math.round, format: '10', precedence: -1 }, 'floor': { fn: Math.floor, format: '10', precedence: -1 }, 'sigma': { fn: function fn(from, to, expression) { var expr = expression.join('').replace(/,/g, ''); var regex = new RegExp(ITERATOR_SIGN, 'g'); var sum = 0; for (var i = from; i <= to; i++) { sum += _index2['default'].solve(expr.replace(regex, i)); } return sum; }, format: '1000', hasExpression: true, precedence: -1 } }; var ITERATOR_SIGN = '@'; module.exports = exports['default']; },{"./index":3}],5:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); exports['default'] = function (string) { var i = 0, buffer = []; return { next: function next() { buffer.push(string[i]); if (i >= string.length) { return null; } return string[i++]; }, current: function current() { return string[i - 1]; }, index: function index() { return i - 1; }, to: function to(n) { var temp = ''; var dest = i + n; for (i = i; i < dest; ++i) { temp += [string[i]]; } return temp; }, drain: function drain() { return buffer.splice(0, buffer.length); }, replace: function replace(start, end, _replace) { var temp = string.split(''); temp.splice(start, end, _replace); string = temp.join(''); i = i - (end - start); }, go: function go(n) { i += n; }, all: function all() { return string; } }; }; module.exports = exports['default']; },{}],6:[function(require,module,exports){ (function (global){ "use strict"; require("core-js/shim"); require("regenerator/runtime"); if (global._babelPolyfill) { throw new Error("only one instance of babel/polyfill is allowed"); } global._babelPolyfill = true; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) },{"core-js/shim":195,"regenerator/runtime":197}],7:[function(require,module,exports){ module.exports = require("./lib/polyfill"); },{"./lib/polyfill":6}],8:[function(require,module,exports){ module.exports = require("babel-core/polyfill"); },{"babel-core/polyfill":7}],9:[function(require,module,exports){ module.exports = function(it){ if(typeof it != 'function')throw TypeError(it + ' is not a function!'); return it; }; },{}],10:[function(require,module,exports){ // 22.1.3.31 Array.prototype[@@unscopables] var UNSCOPABLES = require('./$.wks')('unscopables') , ArrayProto = Array.prototype; if(ArrayProto[UNSCOPABLES] == undefined)require('./$.hide')(ArrayProto, UNSCOPABLES, {}); module.exports = function(key){ ArrayProto[UNSCOPABLES][key] = true; }; },{"./$.hide":38,"./$.wks":90}],11:[function(require,module,exports){ var isObject = require('./$.is-object'); module.exports = function(it){ if(!isObject(it))throw TypeError(it + ' is not an object!'); return it; }; },{"./$.is-object":45}],12:[function(require,module,exports){ // 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length) 'use strict'; var toObject = require('./$.to-object') , toIndex = require('./$.to-index') , toLength = require('./$.to-length'); module.exports = [].copyWithin || function copyWithin(target/*= 0*/, start/*= 0, end = @length*/){ var O = toObject(this) , len = toLength(O.length) , to = toIndex(target, len) , from = toIndex(start, len) , $$ = arguments , end = $$.length > 2 ? $$[2] : undefined , count = Math.min((end === undefined ? len : toIndex(end, len)) - from, len - to) , inc = 1; if(from < to && to < from + count){ inc = -1; from += count - 1; to += count - 1; } while(count-- > 0){ if(from in O)O[to] = O[from]; else delete O[to]; to += inc; from += inc; } return O; }; },{"./$.to-index":83,"./$.to-length":86,"./$.to-object":87}],13:[function(require,module,exports){ // 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length) 'use strict'; var toObject = require('./$.to-object') , toIndex = require('./$.to-index') , toLength = require('./$.to-length'); module.exports = [].fill || function fill(value /*, start = 0, end = @length */){ var O = toObject(this) , length = toLength(O.length) , $$ = arguments , $$len = $$.length , index = toIndex($$len > 1 ? $$[1] : undefined, length) , end = $$len > 2 ? $$[2] : undefined , endPos = end === undefined ? length : toIndex(end, length); while(endPos > index)O[index++] = value; return O; }; },{"./$.to-index":83,"./$.to-length":86,"./$.to-object":87}],14:[function(require,module,exports){ // false -> Array#indexOf // true -> Array#includes var toIObject = require('./$.to-iobject') , toLength = require('./$.to-length') , toIndex = require('./$.to-index'); module.exports = function(IS_INCLUDES){ return function($this, el, fromIndex){ var O = toIObject($this) , length = toLength(O.length) , index = toIndex(fromIndex, length) , value; // Array#includes uses SameValueZero equality algorithm if(IS_INCLUDES && el != el)while(length > index){ value = O[index++]; if(value != value)return true; // Array#toIndex ignores holes, Array#includes - not } else for(;length > index; index++)if(IS_INCLUDES || index in O){ if(O[index] === el)return IS_INCLUDES || index; } return !IS_INCLUDES && -1; }; }; },{"./$.to-index":83,"./$.to-iobject":85,"./$.to-length":86}],15:[function(require,module,exports){ // 0 -> Array#forEach // 1 -> Array#map // 2 -> Array#filter // 3 -> Array#some // 4 -> Array#every // 5 -> Array#find // 6 -> Array#findIndex var ctx = require('./$.ctx') , IObject = require('./$.iobject') , toObject = require('./$.to-object') , toLength = require('./$.to-length') , asc = require('./$.array-species-create'); module.exports = function(TYPE){ var IS_MAP = TYPE == 1 , IS_FILTER = TYPE == 2 , IS_SOME = TYPE == 3 , IS_EVERY = TYPE == 4 , IS_FIND_INDEX = TYPE == 6 , NO_HOLES = TYPE == 5 || IS_FIND_INDEX; return function($this, callbackfn, that){ var O = toObject($this) , self = IObject(O) , f = ctx(callbackfn, that, 3) , length = toLength(self.length) , index = 0 , result = IS_MAP ? asc($this, length) : IS_FILTER ? asc($this, 0) : undefined , val, res; for(;length > index; index++)if(NO_HOLES || index in self){ val = self[index]; res = f(val, index, O); if(TYPE){ if(IS_MAP)result[index] = res; // map else if(res)switch(TYPE){ case 3: return true; // some case 5: return val; // find case 6: return index; // findIndex case 2: result.push(val); // filter } else if(IS_EVERY)return false; // every } } return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result; }; }; },{"./$.array-species-create":16,"./$.ctx":24,"./$.iobject":41,"./$.to-length":86,"./$.to-object":87}],16:[function(require,module,exports){ // 9.4.2.3 ArraySpeciesCreate(originalArray, length) var isObject = require('./$.is-object') , isArray = require('./$.is-array') , SPECIES = require('./$.wks')('species'); module.exports = function(original, length){ var C; if(isArray(original)){ C = original.constructor; // cross-realm fallback if(typeof C == 'function' && (C === Array || isArray(C.prototype)))C = undefined; if(isObject(C)){ C = C[SPECIES]; if(C === null)C = undefined; } } return new (C === undefined ? Array : C)(length); }; },{"./$.is-array":43,"./$.is-object":45,"./$.wks":90}],17:[function(require,module,exports){ // getting tag from 19.1.3.6 Object.prototype.toString() var cof = require('./$.cof') , TAG = require('./$.wks')('toStringTag') // ES3 wrong here , ARG = cof(function(){ return arguments; }()) == 'Arguments'; module.exports = function(it){ var O, T, B; return it === undefined ? 'Undefined' : it === null ? 'Null' // @@toStringTag case : typeof (T = (O = Object(it))[TAG]) == 'string' ? T // builtinTag case : ARG ? cof(O) // ES3 arguments fallback : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B; }; },{"./$.cof":18,"./$.wks":90}],18:[function(require,module,exports){ var toString = {}.toString; module.exports = function(it){ return toString.call(it).slice(8, -1); }; },{}],19:[function(require,module,exports){ 'use strict'; var $ = require('./$') , hide = require('./$.hide') , redefineAll = require('./$.redefine-all') , ctx = require('./$.ctx') , strictNew = require('./$.strict-new') , defined = require('./$.defined') , forOf = require('./$.for-of') , $iterDefine = require('./$.iter-define') , step = require('./$.iter-step') , ID = require('./$.uid')('id') , $has = require('./$.has') , isObject = require('./$.is-object') , setSpecies = require('./$.set-species') , DESCRIPTORS = require('./$.descriptors') , isExtensible = Object.isExtensible || isObject , SIZE = DESCRIPTORS ? '_s' : 'size' , id = 0; var fastKey = function(it, create){ // return primitive with prefix if(!isObject(it))return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; if(!$has(it, ID)){ // can't set id to frozen object if(!isExtensible(it))return 'F'; // not necessary to add id if(!create)return 'E'; // add missing object id hide(it, ID, ++id); // return object id with prefix } return 'O' + it[ID]; }; var getEntry = function(that, key){ // fast case var index = fastKey(key), entry; if(index !== 'F')return that._i[index]; // frozen object case for(entry = that._f; entry; entry = entry.n){ if(entry.k == key)return entry; } }; module.exports = { getConstructor: function(wrapper, NAME, IS_MAP, ADDER){ var C = wrapper(function(that, iterable){ strictNew(that, C, NAME); that._i = $.create(null); // index that._f = undefined; // first entry that._l = undefined; // last entry that[SIZE] = 0; // size if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that); }); redefineAll(C.prototype, { // 23.1.3.1 Map.prototype.clear() // 23.2.3.2 Set.prototype.clear() clear: function clear(){ for(var that = this, data = that._i, entry = that._f; entry; entry = entry.n){ entry.r = true; if(entry.p)entry.p = entry.p.n = undefined; delete data[entry.i]; } that._f = that._l = undefined; that[SIZE] = 0; }, // 23.1.3.3 Map.prototype.delete(key) // 23.2.3.4 Set.prototype.delete(value) 'delete': function(key){ var that = this , entry = getEntry(that, key); if(entry){ var next = entry.n , prev = entry.p; delete that._i[entry.i]; entry.r = true; if(prev)prev.n = next; if(next)next.p = prev; if(that._f == entry)that._f = next; if(that._l == entry)that._l = prev; that[SIZE]--; } return !!entry; }, // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined) // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined) forEach: function forEach(callbackfn /*, that = undefined */){ var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3) , entry; while(entry = entry ? entry.n : this._f){ f(entry.v, entry.k, this); // revert to the last existing entry while(entry && entry.r)entry = entry.p; } }, // 23.1.3.7 Map.prototype.has(key) // 23.2.3.7 Set.prototype.has(value) has: function has(key){ return !!getEntry(this, key); } }); if(DESCRIPTORS)$.setDesc(C.prototype, 'size', { get: function(){ return defined(this[SIZE]); } }); return C; }, def: function(that, key, value){ var entry = getEntry(that, key) , prev, index; // change existing entry if(entry){ entry.v = value; // create new entry } else { that._l = entry = { i: index = fastKey(key, true), // <- index k: key, // <- key v: value, // <- value p: prev = that._l, // <- previous entry n: undefined, // <- next entry r: false // <- removed }; if(!that._f)that._f = entry; if(prev)prev.n = entry; that[SIZE]++; // add to index if(index !== 'F')that._i[index] = entry; } return that; }, getEntry: getEntry, setStrong: function(C, NAME, IS_MAP){ // add .keys, .values, .entries, [@@iterator] // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11 $iterDefine(C, NAME, function(iterated, kind){ this._t = iterated; // target this._k = kind; // kind this._l = undefined; // previous }, function(){ var that = this , kind = that._k , entry = that._l; // revert to the last existing entry while(entry && entry.r)entry = entry.p; // get next entry if(!that._t || !(that._l = entry = entry ? entry.n : that._t._f)){ // or finish the iteration that._t = undefined; return step(1); } // return step by kind if(kind == 'keys' )return step(0, entry.k); if(kind == 'values')return step(0, entry.v); return step(0, [entry.k, entry.v]); }, IS_MAP ? 'entries' : 'values' , !IS_MAP, true); // add [@@species], 23.1.2.2, 23.2.2.2 setSpecies(NAME); } }; },{"./$":53,"./$.ctx":24,"./$.defined":25,"./$.descriptors":26,"./$.for-of":34,"./$.has":37,"./$.hide":38,"./$.is-object":45,"./$.iter-define":49,"./$.iter-step":51,"./$.redefine-all":67,"./$.set-species":72,"./$.strict-new":76,"./$.uid":89}],20:[function(require,module,exports){ // https://github.com/DavidBruant/Map-Set.prototype.toJSON var forOf = require('./$.for-of') , classof = require('./$.classof'); module.exports = function(NAME){ return function toJSON(){ if(classof(this) != NAME)throw TypeError(NAME + "#toJSON isn't generic"); var arr = []; forOf(this, false, arr.push, arr); return arr; }; }; },{"./$.classof":17,"./$.for-of":34}],21:[function(require,module,exports){ 'use strict'; var hide = require('./$.hide') , redefineAll = require('./$.redefine-all') , anObject = require('./$.an-object') , isObject = require('./$.is-object') , strictNew = require('./$.strict-new') , forOf = require('./$.for-of') , createArrayMethod = require('./$.array-methods') , $has = require('./$.has') , WEAK = require('./$.uid')('weak') , isExtensible = Object.isExtensible || isObject , arrayFind = createArrayMethod(5) , arrayFindIndex = createArrayMethod(6) , id = 0; // fallback for frozen keys var frozenStore = function(that){ return that._l || (that._l = new FrozenStore); }; var FrozenStore = function(){ this.a = []; }; var findFrozen = function(store, key){ return arrayFind(store.a, function(it){ return it[0] === key; }); }; FrozenStore.prototype = { get: function(key){ var entry = findFrozen(this, key); if(entry)return entry[1]; }, has: function(key){ return !!findFrozen(this, key); }, set: function(key, value){ var entry = findFrozen(this, key); if(entry)entry[1] = value; else this.a.push([key, value]); }, 'delete': function(key){ var index = arrayFindIndex(this.a, function(it){ return it[0] === key; }); if(~index)this.a.splice(index, 1); return !!~index; } }; module.exports = { getConstructor: function(wrapper, NAME, IS_MAP, ADDER){ var C = wrapper(function(that, iterable){ strictNew(that, C, NAME); that._i = id++; // collection id that._l = undefined; // leak store for frozen objects if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that); }); redefineAll(C.prototype, { // 23.3.3.2 WeakMap.prototype.delete(key) // 23.4.3.3 WeakSet.prototype.delete(value) 'delete': function(key){ if(!isObject(key))return false; if(!isExtensible(key))return frozenStore(this)['delete'](key); return $has(key, WEAK) && $has(key[WEAK], this._i) && delete key[WEAK][this._i]; }, // 23.3.3.4 WeakMap.prototype.has(key) // 23.4.3.4 WeakSet.prototype.has(value) has: function has(key){ if(!isObject(key))return false; if(!isExtensible(key))return frozenStore(this).has(key); return $has(key, WEAK) && $has(key[WEAK], this._i); } }); return C; }, def: function(that, key, value){ if(!isExtensible(anObject(key))){ frozenStore(that).set(key, value); } else { $has(key, WEAK) || hide(key, WEAK, {}); key[WEAK][that._i] = value; } return that; }, frozenStore: frozenStore, WEAK: WEAK }; },{"./$.an-object":11,"./$.array-methods":15,"./$.for-of":34,"./$.has":37,"./$.hide":38,"./$.is-object":45,"./$.redefine-all":67,"./$.strict-new":76,"./$.uid":89}],22:[function(require,module,exports){ 'use strict'; var global = require('./$.global') , $export = require('./$.export') , redefine = require('./$.redefine') , redefineAll = require('./$.redefine-all') , forOf = require('./$.for-of') , strictNew = require('./$.strict-new') , isObject = require('./$.is-object') , fails = require('./$.fails') , $iterDetect = require('./$.iter-detect') , setToStringTag = require('./$.set-to-string-tag'); module.exports = function(NAME, wrapper, methods, common, IS_MAP, IS_WEAK){ var Base = global[NAME] , C = Base , ADDER = IS_MAP ? 'set' : 'add' , proto = C && C.prototype , O = {}; var fixMethod = function(KEY){ var fn = proto[KEY]; redefine(proto, KEY, KEY == 'delete' ? function(a){ return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a); } : KEY == 'has' ? function has(a){ return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a); } : KEY == 'get' ? function get(a){ return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a); } : KEY == 'add' ? function add(a){ fn.call(this, a === 0 ? 0 : a); return this; } : function set(a, b){ fn.call(this, a === 0 ? 0 : a, b); return this; } ); }; if(typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function(){ new C().entries().next(); }))){ // create collection constructor C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER); redefineAll(C.prototype, methods); } else { var instance = new C // early implementations not supports chaining , HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false , THROWS_ON_PRIMITIVES = fails(function(){ instance.has(1); }) // most early implementations doesn't supports iterables, most modern - not close it correctly , ACCEPT_ITERABLES = $iterDetect(function(iter){ new C(iter); }) // eslint-disable-line no-new // for early implementations -0 and +0 not the same , BUGGY_ZERO; if(!ACCEPT_ITERABLES){ C = wrapper(function(target, iterable){ strictNew(target, C, NAME); var that = new Base; if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that); return that; }); C.prototype = proto; proto.constructor = C; } IS_WEAK || instance.forEach(function(val, key){ BUGGY_ZERO = 1 / key === -Infinity; }); if(THROWS_ON_PRIMITIVES || BUGGY_ZERO){ fixMethod('delete'); fixMethod('has'); IS_MAP && fixMethod('get'); } if(BUGGY_ZERO || HASNT_CHAINING)fixMethod(ADDER); // weak collections should not contains .clear method if(IS_WEAK && proto.clear)delete proto.clear; } setToStringTag(C, NAME); O[NAME] = C; $export($export.G + $export.W + $export.F * (C != Base), O); if(!IS_WEAK)common.setStrong(C, NAME, IS_MAP); return C; }; },{"./$.export":29,"./$.fails":31,"./$.for-of":34,"./$.global":36,"./$.is-object":45,"./$.iter-detect":50,"./$.redefine":68,"./$.redefine-all":67,"./$.set-to-string-tag":73,"./$.strict-new":76}],23:[function(require,module,exports){ var core = module.exports = {version: '1.2.6'}; if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef },{}],24:[function(require,module,exports){ // optional / simple context binding var aFunction = require('./$.a-function'); module.exports = function(fn, that, length){ aFunction(fn); if(that === undefined)return fn; switch(length){ case 1: return function(a){ return fn.call(that, a); }; case 2: return function(a, b){ return fn.call(that, a, b); }; case 3: return function(a, b, c){ return fn.call(that, a, b, c); }; } return function(/* ...args */){ return fn.apply(that, arguments); }; }; },{"./$.a-function":9}],25:[function(require,module,exports){ // 7.2.1 RequireObjectCoercible(argument) module.exports = function(it){ if(it == undefined)throw TypeError("Can't call method on " + it); return it; }; },{}],26:[function(require,module,exports){ // Thank's IE8 for his funny defineProperty module.exports = !require('./$.fails')(function(){ return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7; }); },{"./$.fails":31}],27:[function(require,module,exports){ var isObject = require('./$.is-object') , document = require('./$.global').document // in old IE typeof document.createElement is 'object' , is = isObject(document) && isObject(document.createElement); module.exports = function(it){ return is ? document.createElement(it) : {}; }; },{"./$.global":36,"./$.is-object":45}],28:[function(require,module,exports){ // all enumerable object keys, includes symbols var $ = require('./$'); module.exports = function(it){ var keys = $.getKeys(it) , getSymbols = $.getSymbols; if(getSymbols){ var symbols = getSymbols(it) , isEnum = $.isEnum , i = 0 , key; while(symbols.length > i)if(isEnum.call(it, key = symbols[i++]))keys.push(key); } return keys; }; },{"./$":53}],29:[function(require,module,exports){ var global = require('./$.global') , core = require('./$.core') , hide = require('./$.hide') , redefine = require('./$.redefine') , ctx = require('./$.ctx') , PROTOTYPE = 'prototype'; var $export = function(type, name, source){ var IS_FORCED = type & $export.F , IS_GLOBAL = type & $export.G , IS_STATIC = type & $export.S , IS_PROTO = type & $export.P , IS_BIND = type & $export.B , target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE] , exports = IS_GLOBAL ? core : core[name] || (core[name] = {}) , expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {}) , key, own, out, exp; if(IS_GLOBAL)source = name; for(key in source){ // contains in native own = !IS_FORCED && target && key in target; // export native or passed out = (own ? target : source)[key]; // bind timers to global for call from export context exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; // extend global if(target && !own)redefine(target, key, out); // export if(exports[key] != out)hide(exports, key, exp); if(IS_PROTO && expProto[key] != out)expProto[key] = out; } }; global.core = core; // type bitmap $export.F = 1; // forced $export.G = 2; // global $export.S = 4; // static $export.P = 8; // proto $export.B = 16; // bind $export.W = 32; // wrap module.exports = $export; },{"./$.core":23,"./$.ctx":24,"./$.global":36,"./$.hide":38,"./$.redefine":68}],30:[function(require,module,exports){ var MATCH = require('./$.wks')('match'); module.exports = function(KEY){ var re = /./; try { '/./'[KEY](re); } catch(e){ try { re[MATCH] = false; return !'/./'[KEY](re); } catch(f){ /* empty */ } } return true; }; },{"./$.wks":90}],31:[function(require,module,exports){ module.exports = function(exec){ try { return !!exec(); } catch(e){ return true; } }; },{}],32:[function(require,module,exports){ 'use strict'; var hide = require('./$.hide') , redefine = require('./$.redefine') , fails = require('./$.fails') , defined = require('./$.defined') , wks = require('./$.wks'); module.exports = function(KEY, length, exec){ var SYMBOL = wks(KEY) , original = ''[KEY]; if(fails(function(){ var O = {}; O[SYMBOL] = function(){ return 7; }; return ''[KEY](O) != 7; })){ redefine(String.prototype, KEY, exec(defined, SYMBOL, original)); hide(RegExp.prototype, SYMBOL, length == 2 // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue) // 21.2.5.11 RegExp.prototype[@@split](string, limit) ? function(string, arg){ return original.call(string, this, arg); } // 21.2.5.6 RegExp.prototype[@@match](string) // 21.2.5.9 RegExp.prototype[@@search](string) : function(string){ return original.call(string, this); } ); } }; },{"./$.defined":25,"./$.fails":31,"./$.hide":38,"./$.redefine":68,"./$.wks":90}],33:[function(require,module,exports){ 'use strict'; // 21.2.5.3 get RegExp.prototype.flags var anObject = require('./$.an-object'); module.exports = function(){ var that = anObject(this) , result = ''; if(that.global) result += 'g'; if(that.ignoreCase) result += 'i'; if(that.multiline) result += 'm'; if(that.unicode) result += 'u'; if(that.sticky) result += 'y'; return result; }; },{"./$.an-object":11}],34:[function(require,module,exports){ var ctx = require('./$.ctx') , call = require('./$.iter-call') , isArrayIter = require('./$.is-array-iter') , anObject = require('./$.an-object') , toLength = require('./$.to-length') , getIterFn = require('./core.get-iterator-method'); module.exports = function(iterable, entries, fn, that){ var iterFn = getIterFn(iterable) , f = ctx(fn, that, entries ? 2 : 1) , index = 0 , length, step, iterator; if(typeof iterFn != 'function')throw TypeError(iterable + ' is not iterable!'); // fast case for arrays with default iterator if(isArrayIter(iterFn))for(length = toLength(iterable.length); length > index; index++){ entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]); } else for(iterator = iterFn.call(iterable); !(step = iterator.next()).done; ){ call(iterator, f, step.value, entries); } }; },{"./$.an-object":11,"./$.ctx":24,"./$.is-array-iter":42,"./$.iter-call":47,"./$.to-length":86,"./core.get-iterator-method":91}],35:[function(require,module,exports){ // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window var toIObject = require('./$.to-iobject') , getNames = require('./$').getNames , toString = {}.toString; var windowNames = typeof window == 'object' && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : []; var getWindowNames = function(it){ try { return getNames(it); } catch(e){ return windowNames.slice(); } }; module.exports.get = function getOwnPropertyNames(it){ if(windowNames && toString.call(it) == '[object Window]')return getWindowNames(it); return getNames(toIObject(it)); }; },{"./$":53,"./$.to-iobject":85}],36:[function(require,module,exports){ // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 var global = module.exports = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')(); if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef },{}],37:[function(require,module,exports){ var hasOwnProperty = {}.hasOwnProperty; module.exports = function(it, key){ return hasOwnProperty.call(it, key); }; },{}],38:[function(require,module,exports){ var $ = require('./$') , createDesc = require('./$.property-desc'); module.exports = require('./$.descriptors') ? function(object, key, value){ return $.setDesc(object, key, createDesc(1, value)); } : function(object, key, value){ object[key] = value; return object; }; },{"./$":53,"./$.descriptors":26,"./$.property-desc":66}],39:[function(require,module,exports){ module.exports = require('./$.global').document && document.documentElement; },{"./$.global":36}],40:[function(require,module,exports){ // fast apply, http://jsperf.lnkit.com/fast-apply/5 module.exports = function(fn, args, that){ var un = that === undefined; switch(args.length){ case 0: return un ? fn() : fn.call(that); case 1: return un ? fn(args[0]) : fn.call(that, args[0]); case 2: return un ? fn(args[0], args[1]) : fn.call(that, args[0], args[1]); case 3: return un ? fn(args[0], args[1], args[2]) : fn.call(that, args[0], args[1], args[2]); case 4: return un ? fn(args[0], args[1], args[2], args[3]) : fn.call(that, args[0], args[1], args[2], args[3]); } return fn.apply(that, args); }; },{}],41:[function(require,module,exports){ // fallback for non-array-like ES3 and non-enumerable old V8 strings var cof = require('./$.cof'); module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){ return cof(it) == 'String' ? it.split('') : Object(it); }; },{"./$.cof":18}],42:[function(require,module,exports){ // check on default Array iterator var Iterators = require('./$.iterators') , ITERATOR = require('./$.wks')('iterator') , ArrayProto = Array.prototype; module.exports = function(it){ return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it); }; },{"./$.iterators":52,"./$.wks":90}],43:[function(require,module,exports){ // 7.2.2 IsArray(argument) var cof = require('./$.cof'); module.exports = Array.isArray || function(arg){ return cof(arg) == 'Array'; }; },{"./$.cof":18}],44:[function(require,module,exports){ // 20.1.2.3 Number.isInteger(number) var isObject = require('./$.is-object') , floor = Math.floor; module.exports = function isInteger(it){ return !isObject(it) && isFinite(it) && floor(it) === it; }; },{"./$.is-object":45}],45:[function(require,module,exports){ module.exports = function(it){ return typeof it === 'object' ? it !== null : typeof it === 'function'; }; },{}],46:[function(require,module,exports){ // 7.2.8 IsRegExp(argument) var isObject = require('./$.is-object') , cof = require('./$.cof') , MATCH = require('./$.wks')('match'); module.exports = function(it){ var isRegExp; return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp'); }; },{"./$.cof":18,"./$.is-object":45,"./$.wks":90}],47:[function(require,module,exports){ // call something on iterator step with safe closing on error var anObject = require('./$.an-object'); module.exports = function(iterator, fn, value, entries){ try { return entries ? fn(anObject(value)[0], value[1]) : fn(value); // 7.4.6 IteratorClose(iterator, completion) } catch(e){ var ret = iterator['return']; if(ret !== undefined)anObject(ret.call(iterator)); throw e; } }; },{"./$.an-object":11}],48:[function(require,module,exports){ 'use strict'; var $ = require('./$') , descriptor = require('./$.property-desc') , setToStringTag = require('./$.set-to-string-tag') , IteratorPrototype = {}; // 25.1.2.1.1 %IteratorPrototype%[@@iterator]() require('./$.hide')(IteratorPrototype, require('./$.wks')('iterator'), function(){ return this; }); module.exports = function(Constructor, NAME, next){ Constructor.prototype = $.create(IteratorPrototype, {next: descriptor(1, next)}); setToStringTag(Constructor, NAME + ' Iterator'); }; },{"./$":53,"./$.hide":38,"./$.property-desc":66,"./$.set-to-string-tag":73,"./$.wks":90}],49:[function(require,module,exports){ 'use strict'; var LIBRARY = require('./$.library') , $export = require('./$.export') , redefine = require('./$.redefine') , hide = require('./$.hide') , has = require('./$.has') , Iterators = require('./$.iterators') , $iterCreate = require('./$.iter-create') , setToStringTag = require('./$.set-to-string-tag') , getProto = require('./$').getProto , ITERATOR = require('./$.wks')('iterator') , BUGGY = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next` , FF_ITERATOR = '@@iterator' , KEYS = 'keys' , VALUES = 'values'; var returnThis = function(){ return this; }; module.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED){ $iterCreate(Constructor, NAME, next); var getMethod = function(kind){ if(!BUGGY && kind in proto)return proto[kind]; switch(kind){ case KEYS: return function keys(){ return new Constructor(this, kind); }; case VALUES: return function values(){ return new Constructor(this, kind); }; } return function entries(){ return new Constructor(this, kind); }; }; var TAG = NAME + ' Iterator' , DEF_VALUES = DEFAULT == VALUES , VALUES_BUG = false , proto = Base.prototype , $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT] , $default = $native || getMethod(DEFAULT) , methods, key; // Fix native if($native){ var IteratorPrototype = getProto($default.call(new Base)); // Set @@toStringTag to native iterators setToStringTag(IteratorPrototype, TAG, true); // FF fix if(!LIBRARY && has(proto, FF_ITERATOR))hide(IteratorPrototype, ITERATOR, returnThis); // fix Array#{values, @@iterator}.name in V8 / FF if(DEF_VALUES && $native.name !== VALUES){ VALUES_BUG = true; $default = function values(){ return $native.call(this); }; } } // Define iterator if((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])){ hide(proto, ITERATOR, $default); } // Plug for library Iterators[NAME] = $default; Iterators[TAG] = returnThis; if(DEFAULT){ methods = { values: DEF_VALUES ? $default : getMethod(VALUES), keys: IS_SET ? $default : getMethod(KEYS), entries: !DEF_VALUES ? $default : getMethod('entries') }; if(FORCED)for(key in methods){ if(!(key in proto))redefine(proto, key, methods[key]); } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods); } return methods; }; },{"./$":53,"./$.export":29,"./$.has":37,"./$.hide":38,"./$.iter-create":48,"./$.iterators":52,"./$.library":55,"./$.redefine":68,"./$.set-to-string-tag":73,"./$.wks":90}],50:[function(require,module,exports){ var ITERATOR = require('./$.wks')('iterator') , SAFE_CLOSING = false; try { var riter = [7][ITERATOR](); riter['return'] = function(){ SAFE_CLOSING = true; }; Array.from(riter, function(){ throw 2; }); } catch(e){ /* empty */ } module.exports = function(exec, skipClosing){ if(!skipClosing && !SAFE_CLOSING)return false; var safe = false; try { var arr = [7] , iter = arr[ITERATOR](); iter.next = function(){ return {done: safe = true}; }; arr[ITERATOR] = function(){ return iter; }; exec(arr); } catch(e){ /* empty */ } return safe; }; },{"./$.wks":90}],51:[function(require,module,exports){ module.exports = function(done, value){ return {value: value, done: !!done}; }; },{}],52:[function(require,module,exports){ module.exports = {}; },{}],53:[function(require,module,exports){ var $Object = Object; module.exports = { create: $Object.create, getProto: $Object.getPrototypeOf, isEnum: {}.propertyIsEnumerable, getDesc: $Object.getOwnPropertyDescriptor, setDesc: $Object.defineProperty, setDescs: $Object.defineProperties, getKeys: $Object.keys, getNames: $Object.getOwnPropertyNames, getSymbols: $Object.getOwnPropertySymbols, each: [].forEach }; },{}],54:[function(require,module,exports){ var $ = require('./$') , toIObject = require('./$.to-iobject'); module.exports = function(object, el){ var O = toIObject(object) , keys = $.getKeys(O) , length = keys.length , index = 0 , key; while(length > index)if(O[key = keys[index++]] === el)return key; }; },{"./$":53,"./$.to-iobject":85}],55:[function(require,module,exports){ module.exports = false; },{}],56:[function(require,module,exports){ // 20.2.2.14 Math.expm1(x) module.exports = Math.expm1 || function expm1(x){ return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1; }; },{}],57:[function(require,module,exports){ // 20.2.2.20 Math.log1p(x) module.exports = Math.log1p || function log1p(x){ return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x); }; },{}],58:[function(require,module,exports){ // 20.2.2.28 Math.sign(x) module.exports = Math.sign || function sign(x){ return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1; }; },{}],59:[function(require,module,exports){ var global = require('./$.global') , macrotask = require('./$.task').set , Observer = global.MutationObserver || global.WebKitMutationObserver , process = global.process , Promise = global.Promise , isNode = require('./$.cof')(process) == 'process' , head, last, notify; var flush = function(){ var parent, domain, fn; if(isNode && (parent = process.domain)){ process.domain = null; parent.exit(); } while(head){ domain = head.domain; fn = head.fn; if(domain)domain.enter(); fn(); // <- currently we use it only for Promise - try / catch not required if(domain)domain.exit(); head = head.next; } last = undefined; if(parent)parent.enter(); }; // Node.js if(isNode){ notify = function(){ process.nextTick(flush); }; // browsers with MutationObserver } else if(Observer){ var toggle = 1 , node = document.createTextNode(''); new Observer(flush).observe(node, {characterData: true}); // eslint-disable-line no-new notify = function(){ node.data = toggle = -toggle; }; // environments with maybe non-completely correct, but existent Promise } else if(Promise && Promise.resolve){ notify = function(){ Promise.resolve().then(flush); }; // for other environments - macrotask based on: // - setImmediate // - MessageChannel // - window.postMessag // - onreadystatechange // - setTimeout } else { notify = function(){ // strange IE + webpack dev server bug - use .call(global) macrotask.call(global, flush); }; } module.exports = function asap(fn){ var task = {fn: fn, next: undefined, domain: isNode && process.domain}; if(last)last.next = task; if(!head){ head = task; notify(); } last = task; }; },{"./$.cof":18,"./$.global":36,"./$.task":82}],60:[function(require,module,exports){ // 19.1.2.1 Object.assign(target, source, ...) var $ = require('./$') , toObject = require('./$.to-object') , IObject = require('./$.iobject'); // should work with symbols and should have deterministic property order (V8 bug) module.exports = require('./$.fails')(function(){ var a = Object.assign , A = {} , B = {} , S = Symbol() , K = 'abcdefghijklmnopqrst'; A[S] = 7; K.split('').forEach(function(k){ B[k] = k; }); return a({}, A)[S] != 7 || Object.keys(a({}, B)).join('') != K; }) ? function assign(target, source){ // eslint-disable-line no-unused-vars var T = toObject(target) , $$ = arguments , $$len = $$.length , index = 1 , getKeys = $.getKeys , getSymbols = $.getSymbols , isEnum = $.isEnum; while($$len > index){ var S = IObject($$[index++]) , keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S) , length = keys.length , j = 0 , key; while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key]; } return T; } : Object.assign; },{"./$":53,"./$.fails":31,"./$.iobject":41,"./$.to-object":87}],61:[function(require,module,exports){ // most Object methods by ES6 should accept primitives var $export = require('./$.export') , core = require('./$.core') , fails = require('./$.fails'); module.exports = function(KEY, exec){ var fn = (core.Object || {})[KEY] || Object[KEY] , exp = {}; exp[KEY] = exec(fn); $export($export.S + $export.F * fails(function(){ fn(1); }), 'Object', exp); }; },{"./$.core":23,"./$.export":29,"./$.fails":31}],62:[function(require,module,exports){ var $ = require('./$') , toIObject = require('./$.to-iobject') , isEnum = $.isEnum; module.exports = function(isEntries){ return function(it){ var O = toIObject(it) , keys = $.getKeys(O) , length = keys.length , i = 0 , result = [] , key; while(length > i)if(isEnum.call(O, key = keys[i++])){ result.push(isEntries ? [key, O[key]] : O[key]); } return result; }; }; },{"./$":53,"./$.to-iobject":85}],63:[function(require,module,exports){ // all object keys, includes non-enumerable and symbols var $ = require('./$') , anObject = require('./$.an-object') , Reflect = require('./$.global').Reflect; module.exports = Reflect && Reflect.ownKeys || function ownKeys(it){ var keys = $.getNames(anObject(it)) , getSymbols = $.getSymbols; return getSymbols ? keys.concat(getSymbols(it)) : keys; }; },{"./$":53,"./$.an-object":11,"./$.global":36}],64:[function(require,module,exports){ 'use strict'; var path = require('./$.path') , invoke = require('./$.invoke') , aFunction = require('./$.a-function'); module.exports = function(/* ...pargs */){ var fn = aFunction(this) , length = arguments.length , pargs = Array(length) , i = 0 , _ = path._ , holder = false; while(length > i)if((pargs[i] = arguments[i++]) === _)holder = true; return function(/* ...args */){ var that = this , $$ = arguments , $$len = $$.length , j = 0, k = 0, args; if(!holder && !$$len)return invoke(fn, pargs, that); args = pargs.slice(); if(holder)for(;length > j; j++)if(args[j] === _)args[j] = $$[k++]; while($$len > k)args.push($$[k++]); return invoke(fn, args, that); }; }; },{"./$.a-function":9,"./$.invoke":40,"./$.path":65}],65:[function(require,module,exports){ module.exports = require('./$.global'); },{"./$.global":36}],66:[function(require,module,exports){ module.exports = function(bitmap, value){ return { enumerable : !(bitmap & 1), configurable: !(bitmap & 2), writable : !(bitmap & 4), value : value }; }; },{}],67:[function(require,module,exports){ var redefine = require('./$.redefine'); module.exports = function(target, src){ for(var key in src)redefine(target, key, src[key]); return target; }; },{"./$.redefine":68}],68:[function(require,module,exports){ // add fake Function#toString // for correct work wrapped methods / constructors with methods like LoDash isNative var global = require('./$.global') , hide = require('./$.hide') , SRC = require('./$.uid')('src') , TO_STRING = 'toString' , $toString = Function[TO_STRING] , TPL = ('' + $toString).split(TO_STRING); require('./$.core').inspectSource = function(it){ return $toString.call(it); }; (module.exports = function(O, key, val, safe){ if(typeof val == 'function'){ val.hasOwnProperty(SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key))); val.hasOwnProperty('name') || hide(val, 'name', key); } if(O === global){ O[key] = val; } else { if(!safe)delete O[key]; hide(O, key, val); } })(Function.prototype, TO_STRING, function toString(){ return typeof this == 'function' && this[SRC] || $toString.call(this); }); },{"./$.core":23,"./$.global":36,"./$.hide":38,"./$.uid":89}],69:[function(require,module,exports){ module.exports = function(regExp, replace){ var replacer = replace === Object(replace) ? function(part){ return replace[part]; } : replace; return function(it){ return String(it).replace(regExp, replacer); }; }; },{}],70:[function(require,module,exports){ // 7.2.9 SameValue(x, y) module.exports = Object.is || function is(x, y){ return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y; }; },{}],71:[function(require,module,exports){ // Works with __proto__ only. Old v8 can't work with null proto objects. /* eslint-disable no-proto */ var getDesc = require('./$').getDesc , isObject = require('./$.is-object') , anObject = require('./$.an-object'); var check = function(O, proto){ anObject(O); if(!isObject(proto) && proto !== null)throw TypeError(proto + ": can't set as prototype!"); }; module.exports = { set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line function(test, buggy, set){ try { set = require('./$.ctx')(Function.call, getDesc(Object.prototype, '__proto__').set, 2); set(test, []); buggy = !(test instanceof Array); } catch(e){ buggy = true; } return function setPrototypeOf(O, proto){ check(O, proto); if(buggy)O.__proto__ = proto; else set(O, proto); return O; }; }({}, false) : undefined), check: check }; },{"./$":53,"./$.an-object":11,"./$.ctx":24,"./$.is-object":45}],72:[function(require,module,exports){ 'use strict'; var global = require('./$.global') , $ = require('./$') , DESCRIPTORS = require('./$.descriptors') , SPECIES = require('./$.wks')('species'); module.exports = function(KEY){ var C = global[KEY]; if(DESCRIPTORS && C && !C[SPECIES])$.setDesc(C, SPECIES, { configurable: true, get: function(){ return this; } }); }; },{"./$":53,"./$.descriptors":26,"./$.global":36,"./$.wks":90}],73:[function(require,module,exports){ var def = require('./$').setDesc , has = require('./$.has') , TAG = require('./$.wks')('toStringTag'); module.exports = function(it, tag, stat){ if(it && !has(it = stat ? it : it.prototype, TAG))def(it, TAG, {configurable: true, value: tag}); }; },{"./$":53,"./$.has":37,"./$.wks":90}],74:[function(require,module,exports){ var global = require('./$.global') , SHARED = '__core-js_shared__' , store = global[SHARED] || (global[SHARED] = {}); module.exports = function(key){ return store[key] || (store[key] = {}); }; },{"./$.global":36}],75:[function(require,module,exports){ // 7.3.20 SpeciesConstructor(O, defaultConstructor) var anObject = require('./$.an-object') , aFunction = require('./$.a-function') , SPECIES = require('./$.wks')('species'); module.exports = function(O, D){ var C = anObject(O).constructor, S; return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S); }; },{"./$.a-function":9,"./$.an-object":11,"./$.wks":90}],76:[function(require,module,exports){ module.exports = function(it, Constructor, name){ if(!(it instanceof Constructor))throw TypeError(name + ": use the 'new' operator!"); return it; }; },{}],77:[function(require,module,exports){ var toInteger = require('./$.to-integer') , defined = require('./$.defined'); // true -> String#at // false -> String#codePointAt module.exports = function(TO_STRING){ return function(that, pos){ var s = String(defined(that)) , i = toInteger(pos) , l = s.length , a, b; if(i < 0 || i >= l)return TO_STRING ? '' : undefined; a = s.charCodeAt(i); return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff ? TO_STRING ? s.charAt(i) : a : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; }; }; },{"./$.defined":25,"./$.to-integer":84}],78:[function(require,module,exports){ // helper for String#{startsWith, endsWith, includes} var isRegExp = require('./$.is-regexp') , defined = require('./$.defined'); module.exports = function(that, searchString, NAME){ if(isRegExp(searchString))throw TypeError('String#' + NAME + " doesn't accept regex!"); return String(defined(that)); }; },{"./$.defined":25,"./$.is-regexp":46}],79:[function(require,module,exports){ // https://github.com/ljharb/proposal-string-pad-left-right var toLength = require('./$.to-length') , repeat = require('./$.string-repeat') , defined = require('./$.defined'); module.exports = function(that, maxLength, fillString, left){ var S = String(defined(that)) , stringLength = S.length , fillStr = fillString === undefined ? ' ' : String(fillString) , intMaxLength = toLength(maxLength); if(intMaxLength <= stringLength)return S; if(fillStr == '')fillStr = ' '; var fillLen = intMaxLength - stringLength , stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length)); if(stringFiller.length > fillLen)stringFiller = stringFiller.slice(0, fillLen); return left ? stringFiller + S : S + stringFiller; }; },{"./$.defined":25,"./$.string-repeat":80,"./$.to-length":86}],80:[function(require,module,exports){ 'use strict'; var toInteger = require('./$.to-integer') , defined = require('./$.defined'); module.exports = function repeat(count){ var str = String(defined(this)) , res = '' , n = toInteger(count); if(n < 0 || n == Infinity)throw RangeError("Count can't be negative"); for(;n > 0; (n >>>= 1) && (str += str))if(n & 1)res += str; return res; }; },{"./$.defined":25,"./$.to-integer":84}],81:[function(require,module,exports){ var $export = require('./$.export') , defined = require('./$.defined') , fails = require('./$.fails') , spaces = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003' + '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF' , space = '[' + spaces + ']' , non = '\u200b\u0085' , ltrim = RegExp('^' + space + space + '*') , rtrim = RegExp(space + space + '*$'); var exporter = function(KEY, exec){ var exp = {}; exp[KEY] = exec(trim); $export($export.P + $export.F * fails(function(){ return !!spaces[KEY]() || non[KEY]() != non; }), 'String', exp); }; // 1 -> String#trimLeft // 2 -> String#trimRight // 3 -> String#trim var trim = exporter.trim = function(string, TYPE){ string = String(defined(string)); if(TYPE & 1)string = string.replace(ltrim, ''); if(TYPE & 2)string = string.replace(rtrim, ''); return string; }; module.exports = exporter; },{"./$.defined":25,"./$.export":29,"./$.fails":31}],82:[function(require,module,exports){ var ctx = require('./$.ctx') , invoke = require('./$.invoke') , html = require('./$.html') , cel = require('./$.dom-create') , global = require('./$.global') , process = global.process , setTask = global.setImmediate , clearTask = global.clearImmediate , MessageChannel = global.MessageChannel , counter = 0 , queue = {} , ONREADYSTATECHANGE = 'onreadystatechange' , defer, channel, port; var run = function(){ var id = +this; if(queue.hasOwnProperty(id)){ var fn = queue[id]; delete queue[id]; fn(); } }; var listner = function(event){ run.call(event.data); }; // Node.js 0.9+ & IE10+ has setImmediate, otherwise: if(!setTask || !clearTask){ setTask = function setImmediate(fn){ var args = [], i = 1; while(arguments.length > i)args.push(arguments[i++]); queue[++counter] = function(){ invoke(typeof fn == 'function' ? fn : Function(fn), args); }; defer(counter); return counter; }; clearTask = function clearImmediate(id){ delete queue[id]; }; // Node.js 0.8- if(require('./$.cof')(process) == 'process'){ defer = function(id){ process.nextTick(ctx(run, id, 1)); }; // Browsers with MessageChannel, includes WebWorkers } else if(MessageChannel){ channel = new MessageChannel; port = channel.port2; channel.port1.onmessage = listner; defer = ctx(port.postMessage, port, 1); // Browsers with postMessage, skip WebWorkers // IE8 has postMessage, but it's sync & typeof its postMessage is 'object' } else if(global.addEventListener && typeof postMessage == 'function' && !global.importScripts){ defer = function(id){ global.postMessage(id + '', '*'); }; global.addEventListener('message', listner, false); // IE8- } else if(ONREADYSTATECHANGE in cel('script')){ defer = function(id){ html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function(){ html.removeChild(this); run.call(id); }; }; // Rest old browsers } else { defer = function(id){ setTimeout(ctx(run, id, 1), 0); }; } } module.exports = { set: setTask, clear: clearTask }; },{"./$.cof":18,"./$.ctx":24,"./$.dom-create":27,"./$.global":36,"./$.html":39,"./$.invoke":40}],83:[function(require,module,exports){ var toInteger = require('./$.to-integer') , max = Math.max , min = Math.min; module.exports = function(index, length){ index = toInteger(index); return index < 0 ? max(index + length, 0) : min(index, length); }; },{"./$.to-integer":84}],84:[function(require,module,exports){ // 7.1.4 ToInteger var ceil = Math.ceil , floor = Math.floor; module.exports = function(it){ return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); }; },{}],85:[function(require,module,exports){ // to indexed object, toObject with fallback for non-array-like ES3 strings var IObject = require('./$.iobject') , defined = require('./$.defined'); module.exports = function(it){ return IObject(defined(it)); }; },{"./$.defined":25,"./$.iobject":41}],86:[function(require,module,exports){ // 7.1.15 ToLength var toInteger = require('./$.to-integer') , min = Math.min; module.exports = function(it){ return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 }; },{"./$.to-integer":84}],87:[function(require,module,exports){ // 7.1.13 ToObject(argument) var defined = require('./$.defined'); module.exports = function(it){ return Object(defined(it)); }; },{"./$.defined":25}],88:[function(require,module,exports){ // 7.1.1 ToPrimitive(input [, PreferredType]) var isObject = require('./$.is-object'); // instead of the ES6 spec version, we didn't implement @@toPrimitive case // and the second argument - flag - preferred type is a string module.exports = function(it, S){ if(!isObject(it))return it; var fn, val; if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val; if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val; if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val; throw TypeError("Can't convert object to primitive value"); }; },{"./$.is-object":45}],89:[function(require,module,exports){ var id = 0 , px = Math.random(); module.exports = function(key){ return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); }; },{}],90:[function(require,module,exports){ var store = require('./$.shared')('wks') , uid = require('./$.uid') , Symbol = require('./$.global').Symbol; module.exports = function(name){ return store[name] || (store[name] = Symbol && Symbol[name] || (Symbol || uid)('Symbol.' + name)); }; },{"./$.global":36,"./$.shared":74,"./$.uid":89}],91:[function(require,module,exports){ var classof = require('./$.classof') , ITERATOR = require('./$.wks')('iterator') , Iterators = require('./$.iterators'); module.exports = require('./$.core').getIteratorMethod = function(it){ if(it != undefined)return it[ITERATOR] || it['@@iterator'] || Iterators[classof(it)]; }; },{"./$.classof":17,"./$.core":23,"./$.iterators":52,"./$.wks":90}],92:[function(require,module,exports){ 'use strict'; var $ = require('./$') , $export = require('./$.export') , DESCRIPTORS = require('./$.descriptors') , createDesc = require('./$.property-desc') , html = require('./$.html') , cel = require('./$.dom-create') , has = require('./$.has') , cof = require('./$.cof') , invoke = require('./$.invoke') , fails = require('./$.fails') , anObject = require('./$.an-object') , aFunction = require('./$.a-function') , isObject = require('./$.is-object') , toObject = require('./$.to-object') , toIObject = require('./$.to-iobject') , toInteger = require('./$.to-integer') , toIndex = require('./$.to-index') , toLength = require('./$.to-length') , IObject = require('./$.iobject') , IE_PROTO = require('./$.uid')('__proto__') , createArrayMethod = require('./$.array-methods') , arrayIndexOf = require('./$.array-includes')(false) , ObjectProto = Object.prototype , ArrayProto = Array.prototype , arraySlice = ArrayProto.slice , arrayJoin = ArrayProto.join , defineProperty = $.setDesc , getOwnDescriptor = $.getDesc , defineProperties = $.setDescs , factories = {} , IE8_DOM_DEFINE; if(!DESCRIPTORS){ IE8_DOM_DEFINE = !fails(function(){ return defineProperty(cel('div'), 'a', {get: function(){ return 7; }}).a != 7; }); $.setDesc = function(O, P, Attributes){ if(IE8_DOM_DEFINE)try { return defineProperty(O, P, Attributes); } catch(e){ /* empty */ } if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!'); if('value' in Attributes)anObject(O)[P] = Attributes.value; return O; }; $.getDesc = function(O, P){ if(IE8_DOM_DEFINE)try { return getOwnDescriptor(O, P); } catch(e){ /* empty */ } if(has(O, P))return createDesc(!ObjectProto.propertyIsEnumerable.call(O, P), O[P]); }; $.setDescs = defineProperties = function(O, Properties){ anObject(O); var keys = $.getKeys(Properties) , length = keys.length , i = 0 , P; while(length > i)$.setDesc(O, P = keys[i++], Properties[P]); return O; }; } $export($export.S + $export.F * !DESCRIPTORS, 'Object', { // 19.1.2.6 / 15.2.3.3 Object.getOwnPropertyDescriptor(O, P) getOwnPropertyDescriptor: $.getDesc, // 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes) defineProperty: $.setDesc, // 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties) defineProperties: defineProperties }); // IE 8- don't enum bug keys var keys1 = ('constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,' + 'toLocaleString,toString,valueOf').split(',') // Additional keys for getOwnPropertyNames , keys2 = keys1.concat('length', 'prototype') , keysLen1 = keys1.length; // Create object with `null` prototype: use iframe Object with cleared prototype var createDict = function(){ // Thrash, waste and sodomy: IE GC bug var iframe = cel('iframe') , i = keysLen1 , gt = '>' , iframeDocument; iframe.style.display = 'none'; html.appendChild(iframe); iframe.src = 'javascript:'; // eslint-disable-line no-script-url // createDict = iframe.contentWindow.Object; // html.removeChild(iframe); iframeDocument = iframe.contentWindow.document; iframeDocument.open(); iframeDocument.write('