(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) { function solveStack(_x) { return _solveStack.apply(this, arguments); } solveStack.toString = function () { return _solveStack.toString(); }; return solveStack; })(function (stack) { // 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); }); return solveStack(stack); } 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) { function sortStack(_x2) { return _sortStack.apply(this, arguments); } sortStack.toString = function () { return _sortStack.toString(); }; return sortStack; })(function (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":189}],4:[function(require,module,exports){ 'use strict'; var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }; Object.defineProperty(exports, '__esModule', { value: true }); var _Equation = require('./index'); var _Equation2 = _interopRequireWildcard(_Equation); /* * 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 = 0; 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 += _Equation2['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) { function replace(_x, _x2, _x3) { return _replace.apply(this, arguments); } replace.toString = function () { return _replace.toString(); }; return replace; })(function (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":186,"regenerator/runtime":187}],7:[function(require,module,exports){ module.exports = function(it){ if(typeof it != 'function')throw TypeError(it + ' is not a function!'); return it; }; },{}],8:[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":38}],9:[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":74,"./$.to-iobject":76,"./$.to-length":77}],10:[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'); 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 ? Array(length) : IS_FILTER ? [] : 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; }; }; },{"./$.ctx":19,"./$.iobject":35,"./$.to-length":77,"./$.to-object":78}],11:[function(require,module,exports){ // 19.1.2.1 Object.assign(target, source, ...) var toObject = require('./$.to-object') , IObject = require('./$.iobject') , enumKeys = require('./$.enum-keys'); /* eslint-disable no-unused-vars */ module.exports = Object.assign || function assign(target, source){ /* eslint-enable no-unused-vars */ var T = toObject(target) , l = arguments.length , i = 1; while(l > i){ var S = IObject(arguments[i++]) , keys = enumKeys(S) , length = keys.length , j = 0 , key; while(length > j)T[key = keys[j++]] = S[key]; } return T; }; },{"./$.enum-keys":23,"./$.iobject":35,"./$.to-object":78}],12:[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":13,"./$.wks":81}],13:[function(require,module,exports){ var toString = {}.toString; module.exports = function(it){ return toString.call(it).slice(8, -1); }; },{}],14:[function(require,module,exports){ 'use strict'; var $ = require('./$') , hide = require('./$.hide') , ctx = require('./$.ctx') , species = require('./$.species') , strictNew = require('./$.strict-new') , defined = require('./$.defined') , forOf = require('./$.for-of') , step = require('./$.iter-step') , ID = require('./$.uid')('id') , $has = require('./$.has') , isObject = require('./$.is-object') , isExtensible = Object.isExtensible || isObject , SUPPORT_DESC = require('./$.support-desc') , SIZE = SUPPORT_DESC ? '_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); }); require('./$.mix')(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[1], 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(SUPPORT_DESC)$.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 require('./$.iter-define')(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 species(C); species(require('./$.core')[NAME]); // for wrapper } }; },{"./$":46,"./$.core":18,"./$.ctx":19,"./$.defined":21,"./$.for-of":28,"./$.has":31,"./$.hide":32,"./$.is-object":38,"./$.iter-define":42,"./$.iter-step":44,"./$.mix":51,"./$.species":64,"./$.strict-new":65,"./$.support-desc":71,"./$.uid":79}],15:[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":12,"./$.for-of":28}],16:[function(require,module,exports){ 'use strict'; var hide = require('./$.hide') , anObject = require('./$.an-object') , strictNew = require('./$.strict-new') , forOf = require('./$.for-of') , method = require('./$.array-methods') , WEAK = require('./$.uid')('weak') , isObject = require('./$.is-object') , $has = require('./$.has') , isExtensible = Object.isExtensible || isObject , find = method(5) , findIndex = method(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 find(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 = findIndex(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); }); require('./$.mix')(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":8,"./$.array-methods":10,"./$.for-of":28,"./$.has":31,"./$.hide":32,"./$.is-object":38,"./$.mix":51,"./$.strict-new":65,"./$.uid":79}],17:[function(require,module,exports){ 'use strict'; var global = require('./$.global') , $def = require('./$.def') , BUGGY = require('./$.iter-buggy') , forOf = require('./$.for-of') , strictNew = require('./$.strict-new'); 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]; require('./$.redef')(proto, KEY, KEY == 'delete' ? function(a){ return fn.call(this, a === 0 ? 0 : a); } : KEY == 'has' ? function has(a){ return fn.call(this, a === 0 ? 0 : a); } : KEY == 'get' ? function get(a){ return 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 || !BUGGY && proto.forEach && proto.entries)){ // create collection constructor C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER); require('./$.mix')(C.prototype, methods); } else { var inst = new C , chain = inst[ADDER](IS_WEAK ? {} : -0, 1) , buggyZero; // wrap for init collections from iterable if(!require('./$.iter-detect')(function(iter){ new C(iter); })){ // eslint-disable-line no-new 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 || inst.forEach(function(val, key){ buggyZero = 1 / key === -Infinity; }); // fix converting -0 key to +0 if(buggyZero){ fixMethod('delete'); fixMethod('has'); IS_MAP && fixMethod('get'); } // + fix .add & .set for chaining if(buggyZero || chain !== inst)fixMethod(ADDER); // weak collections should not contains .clear method if(IS_WEAK && proto.clear)delete proto.clear; } require('./$.tag')(C, NAME); O[NAME] = C; $def($def.G + $def.W + $def.F * (C != Base), O); if(!IS_WEAK)common.setStrong(C, NAME, IS_MAP); return C; }; },{"./$.def":20,"./$.for-of":28,"./$.global":30,"./$.iter-buggy":39,"./$.iter-detect":43,"./$.mix":51,"./$.redef":58,"./$.strict-new":65,"./$.tag":72}],18:[function(require,module,exports){ var core = module.exports = {}; if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef },{}],19:[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":7}],20:[function(require,module,exports){ var global = require('./$.global') , core = require('./$.core') , hide = require('./$.hide') , $redef = require('./$.redef') , PROTOTYPE = 'prototype'; var ctx = function(fn, that){ return function(){ return fn.apply(that, arguments); }; }; var $def = function(type, name, source){ var key, own, out, exp , isGlobal = type & $def.G , isProto = type & $def.P , target = isGlobal ? global : type & $def.S ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE] , exports = isGlobal ? core : core[name] || (core[name] = {}); if(isGlobal)source = name; for(key in source){ // contains in native own = !(type & $def.F) && target && key in target; // export native or passed out = (own ? target : source)[key]; // bind timers to global for call from export context if(type & $def.B && own)exp = ctx(out, global); else exp = isProto && typeof out == 'function' ? ctx(Function.call, out) : out; // extend global if(target && !own)$redef(target, key, out); // export if(exports[key] != out)hide(exports, key, exp); if(isProto)(exports[PROTOTYPE] || (exports[PROTOTYPE] = {}))[key] = out; } }; global.core = core; // type bitmap $def.F = 1; // forced $def.G = 2; // global $def.S = 4; // static $def.P = 8; // proto $def.B = 16; // bind $def.W = 32; // wrap module.exports = $def; },{"./$.core":18,"./$.global":30,"./$.hide":32,"./$.redef":58}],21:[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; }; },{}],22:[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":30,"./$.is-object":38}],23:[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; }; },{"./$":46}],24:[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; }; },{}],25:[function(require,module,exports){ module.exports = function(exec){ try { return !!exec(); } catch(e){ return true; } }; },{}],26:[function(require,module,exports){ 'use strict'; module.exports = function(KEY, length, exec){ var defined = require('./$.defined') , SYMBOL = require('./$.wks')(KEY) , original = ''[KEY]; if(require('./$.fails')(function(){ var O = {}; O[SYMBOL] = function(){ return 7; }; return ''[KEY](O) != 7; })){ require('./$.redef')(String.prototype, KEY, exec(defined, SYMBOL, original)); require('./$.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":21,"./$.fails":25,"./$.hide":32,"./$.redef":58,"./$.wks":81}],27:[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":8}],28:[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":8,"./$.ctx":19,"./$.is-array-iter":36,"./$.iter-call":40,"./$.to-length":77,"./core.get-iterator-method":82}],29:[function(require,module,exports){ // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window var toString = {}.toString , toIObject = require('./$.to-iobject') , getNames = require('./$').getNames; 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)); }; },{"./$":46,"./$.to-iobject":76}],30:[function(require,module,exports){ var global = typeof self != 'undefined' && self.Math == Math ? self : Function('return this')(); module.exports = global; if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef },{}],31:[function(require,module,exports){ var hasOwnProperty = {}.hasOwnProperty; module.exports = function(it, key){ return hasOwnProperty.call(it, key); }; },{}],32:[function(require,module,exports){ var $ = require('./$') , createDesc = require('./$.property-desc'); module.exports = require('./$.support-desc') ? function(object, key, value){ return $.setDesc(object, key, createDesc(1, value)); } : function(object, key, value){ object[key] = value; return object; }; },{"./$":46,"./$.property-desc":57,"./$.support-desc":71}],33:[function(require,module,exports){ module.exports = require('./$.global').document && document.documentElement; },{"./$.global":30}],34:[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); }; },{}],35:[function(require,module,exports){ // indexed object, fallback for non-array-like ES3 strings var cof = require('./$.cof'); module.exports = 0 in Object('z') ? Object : function(it){ return cof(it) == 'String' ? it.split('') : Object(it); }; },{"./$.cof":13}],36:[function(require,module,exports){ // check on default Array iterator var Iterators = require('./$.iterators') , ITERATOR = require('./$.wks')('iterator'); module.exports = function(it){ return (Iterators.Array || Array.prototype[ITERATOR]) === it; }; },{"./$.iterators":45,"./$.wks":81}],37:[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":38}],38:[function(require,module,exports){ // http://jsperf.com/core-js-isobject module.exports = function(it){ return it !== null && (typeof it == 'object' || typeof it == 'function'); }; },{}],39:[function(require,module,exports){ // Safari has buggy iterators w/o `next` module.exports = 'keys' in [] && !('next' in [].keys()); },{}],40:[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":8}],41:[function(require,module,exports){ 'use strict'; var $ = require('./$') , 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: require('./$.property-desc')(1,next)}); require('./$.tag')(Constructor, NAME + ' Iterator'); }; },{"./$":46,"./$.hide":32,"./$.property-desc":57,"./$.tag":72,"./$.wks":81}],42:[function(require,module,exports){ 'use strict'; var LIBRARY = require('./$.library') , $def = require('./$.def') , $redef = require('./$.redef') , hide = require('./$.hide') , has = require('./$.has') , SYMBOL_ITERATOR = require('./$.wks')('iterator') , Iterators = require('./$.iterators') , FF_ITERATOR = '@@iterator' , KEYS = 'keys' , VALUES = 'values'; var returnThis = function(){ return this; }; module.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCE){ require('./$.iter-create')(Constructor, NAME, next); var createMethod = function(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' , proto = Base.prototype , _native = proto[SYMBOL_ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT] , _default = _native || createMethod(DEFAULT) , methods, key; // Fix native if(_native){ var IteratorPrototype = require('./$').getProto(_default.call(new Base)); // Set @@toStringTag to native iterators require('./$.tag')(IteratorPrototype, TAG, true); // FF fix if(!LIBRARY && has(proto, FF_ITERATOR))hide(IteratorPrototype, SYMBOL_ITERATOR, returnThis); } // Define iterator if(!LIBRARY || FORCE)hide(proto, SYMBOL_ITERATOR, _default); // Plug for library Iterators[NAME] = _default; Iterators[TAG] = returnThis; if(DEFAULT){ methods = { keys: IS_SET ? _default : createMethod(KEYS), values: DEFAULT == VALUES ? _default : createMethod(VALUES), entries: DEFAULT != VALUES ? _default : createMethod('entries') }; if(FORCE)for(key in methods){ if(!(key in proto))$redef(proto, key, methods[key]); } else $def($def.P + $def.F * require('./$.iter-buggy'), NAME, methods); } }; },{"./$":46,"./$.def":20,"./$.has":31,"./$.hide":32,"./$.iter-buggy":39,"./$.iter-create":41,"./$.iterators":45,"./$.library":48,"./$.redef":58,"./$.tag":72,"./$.wks":81}],43:[function(require,module,exports){ var SYMBOL_ITERATOR = require('./$.wks')('iterator') , SAFE_CLOSING = false; try { var riter = [7][SYMBOL_ITERATOR](); riter['return'] = function(){ SAFE_CLOSING = true; }; Array.from(riter, function(){ throw 2; }); } catch(e){ /* empty */ } module.exports = function(exec){ if(!SAFE_CLOSING)return false; var safe = false; try { var arr = [7] , iter = arr[SYMBOL_ITERATOR](); iter.next = function(){ safe = true; }; arr[SYMBOL_ITERATOR] = function(){ return iter; }; exec(arr); } catch(e){ /* empty */ } return safe; }; },{"./$.wks":81}],44:[function(require,module,exports){ module.exports = function(done, value){ return {value: value, done: !!done}; }; },{}],45:[function(require,module,exports){ module.exports = {}; },{}],46:[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 }; },{}],47:[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; }; },{"./$":46,"./$.to-iobject":76}],48:[function(require,module,exports){ module.exports = false; },{}],49:[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); }; },{}],50:[function(require,module,exports){ var global = require('./$.global') , macrotask = require('./$.task').set , Observer = global.MutationObserver || global.WebKitMutationObserver , process = global.process , head, last, notify; function flush(){ while(head){ head.fn.call(); // <- currently we use it only for Promise - try / catch not required head = head.next; } last = undefined; } // Node.js if(require('./$.cof')(process) == 'process'){ 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; }; // 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}; if(last)last.next = task; if(!head){ head = task; notify(); } last = task; }; },{"./$.cof":13,"./$.global":30,"./$.task":73}],51:[function(require,module,exports){ var $redef = require('./$.redef'); module.exports = function(target, src){ for(var key in src)$redef(target, key, src[key]); return target; }; },{"./$.redef":58}],52:[function(require,module,exports){ // most Object methods by ES6 should accept primitives module.exports = function(KEY, exec){ var $def = require('./$.def') , fn = (require('./$.core').Object || {})[KEY] || Object[KEY] , exp = {}; exp[KEY] = exec(fn); $def($def.S + $def.F * require('./$.fails')(function(){ fn(1); }), 'Object', exp); }; },{"./$.core":18,"./$.def":20,"./$.fails":25}],53:[function(require,module,exports){ var $ = require('./$') , toIObject = require('./$.to-iobject'); module.exports = function(isEntries){ return function(it){ var O = toIObject(it) , keys = $.getKeys(O) , length = keys.length , i = 0 , result = Array(length) , key; if(isEntries)while(length > i)result[i] = [key = keys[i++], O[key]]; else while(length > i)result[i] = O[keys[i++]]; return result; }; }; },{"./$":46,"./$.to-iobject":76}],54:[function(require,module,exports){ // all object keys, includes non-enumerable and symbols var $ = require('./$') , anObject = require('./$.an-object'); module.exports = function ownKeys(it){ var keys = $.getNames(anObject(it)) , getSymbols = $.getSymbols; return getSymbols ? keys.concat(getSymbols(it)) : keys; }; },{"./$":46,"./$.an-object":8}],55:[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 , _length = arguments.length , j = 0, k = 0, args; if(!holder && !_length)return invoke(fn, pargs, that); args = pargs.slice(); if(holder)for(;length > j; j++)if(args[j] === _)args[j] = arguments[k++]; while(_length > k)args.push(arguments[k++]); return invoke(fn, args, that); }; }; },{"./$.a-function":7,"./$.invoke":34,"./$.path":56}],56:[function(require,module,exports){ module.exports = require('./$.global'); },{"./$.global":30}],57:[function(require,module,exports){ module.exports = function(bitmap, value){ return { enumerable : !(bitmap & 1), configurable: !(bitmap & 2), writable : !(bitmap & 4), value : value }; }; },{}],58:[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'){ hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key))); if(!('name' in val))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":18,"./$.global":30,"./$.hide":32,"./$.uid":79}],59:[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); }; }; },{}],60:[function(require,module,exports){ module.exports = Object.is || function is(x, y){ return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y; }; },{}],61:[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(buggy, set){ try { set = require('./$.ctx')(Function.call, getDesc(Object.prototype, '__proto__').set, 2); set({}, []); } catch(e){ buggy = true; } return function setPrototypeOf(O, proto){ check(O, proto); if(buggy)O.__proto__ = proto; else set(O, proto); return O; }; }() : undefined), check: check }; },{"./$":46,"./$.an-object":8,"./$.ctx":19,"./$.is-object":38}],62:[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":30}],63:[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; }; },{}],64:[function(require,module,exports){ 'use strict'; var $ = require('./$') , SPECIES = require('./$.wks')('species'); module.exports = function(C){ if(require('./$.support-desc') && !(SPECIES in C))$.setDesc(C, SPECIES, { configurable: true, get: function(){ return this; } }); }; },{"./$":46,"./$.support-desc":71,"./$.wks":81}],65:[function(require,module,exports){ module.exports = function(it, Constructor, name){ if(!(it instanceof Constructor))throw TypeError(name + ": use the 'new' operator!"); return it; }; },{}],66:[function(require,module,exports){ // true -> String#at // false -> String#codePointAt var toInteger = require('./$.to-integer') , defined = require('./$.defined'); 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":21,"./$.to-integer":75}],67:[function(require,module,exports){ // helper for String#{startsWith, endsWith, includes} var defined = require('./$.defined') , cof = require('./$.cof'); module.exports = function(that, searchString, NAME){ if(cof(searchString) == 'RegExp')throw TypeError('String#' + NAME + " doesn't accept regex!"); return String(defined(that)); }; },{"./$.cof":13,"./$.defined":21}],68:[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 = left ? stringFiller.slice(stringFiller.length - fillLen) : stringFiller.slice(0, fillLen); return left ? stringFiller + S : S + stringFiller; }; },{"./$.defined":21,"./$.string-repeat":69,"./$.to-length":77}],69:[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":21,"./$.to-integer":75}],70:[function(require,module,exports){ // 1 -> String#trimLeft // 2 -> String#trimRight // 3 -> String#trim var trim = function(string, TYPE){ string = String(defined(string)); if(TYPE & 1)string = string.replace(ltrim, ''); if(TYPE & 2)string = string.replace(rtrim, ''); return string; }; var $def = require('./$.def') , defined = require('./$.defined') , 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 + '*$'); module.exports = function(KEY, exec){ var exp = {}; exp[KEY] = exec(trim); $def($def.P + $def.F * require('./$.fails')(function(){ return !!spaces[KEY]() || non[KEY]() != non; }), 'String', exp); }; },{"./$.def":20,"./$.defined":21,"./$.fails":25}],71:[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":25}],72:[function(require,module,exports){ var has = require('./$.has') , hide = require('./$.hide') , TAG = require('./$.wks')('toStringTag'); module.exports = function(it, tag, stat){ if(it && !has(it = stat ? it : it.prototype, TAG))hide(it, TAG, tag); }; },{"./$.has":31,"./$.hide":32,"./$.wks":81}],73:[function(require,module,exports){ 'use strict'; 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.importScript){ 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":13,"./$.ctx":19,"./$.dom-create":22,"./$.global":30,"./$.html":33,"./$.invoke":34}],74:[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":75}],75:[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); }; },{}],76:[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":21,"./$.iobject":35}],77:[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":75}],78:[function(require,module,exports){ // 7.1.13 ToObject(argument) var defined = require('./$.defined'); module.exports = function(it){ return Object(defined(it)); }; },{"./$.defined":21}],79:[function(require,module,exports){ var id = 0 , px = Math.random(); module.exports = function(key){ return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); }; },{}],80:[function(require,module,exports){ // 22.1.3.31 Array.prototype[@@unscopables] var UNSCOPABLES = require('./$.wks')('unscopables'); if(!(UNSCOPABLES in []))require('./$.hide')(Array.prototype, UNSCOPABLES, {}); module.exports = function(key){ [][UNSCOPABLES][key] = true; }; },{"./$.hide":32,"./$.wks":81}],81:[function(require,module,exports){ var store = require('./$.shared')('wks') , Symbol = require('./$.global').Symbol; module.exports = function(name){ return store[name] || (store[name] = Symbol && Symbol[name] || (Symbol || require('./$.uid'))('Symbol.' + name)); }; },{"./$.global":30,"./$.shared":62,"./$.uid":79}],82:[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":12,"./$.core":18,"./$.iterators":45,"./$.wks":81}],83:[function(require,module,exports){ 'use strict'; var $ = require('./$') , SUPPORT_DESC = require('./$.support-desc') , createDesc = require('./$.property-desc') , html = require('./$.html') , cel = require('./$.dom-create') , has = require('./$.has') , cof = require('./$.cof') , $def = require('./$.def') , invoke = require('./$.invoke') , arrayMethod = require('./$.array-methods') , IE_PROTO = require('./$.uid')('__proto__') , isObject = require('./$.is-object') , anObject = require('./$.an-object') , aFunction = require('./$.a-function') , toObject = require('./$.to-object') , toIObject = require('./$.to-iobject') , toInteger = require('./$.to-integer') , toIndex = require('./$.to-index') , toLength = require('./$.to-length') , IObject = require('./$.iobject') , fails = require('./$.fails') , ObjectProto = Object.prototype , A = [] , _slice = A.slice , _join = A.join , defineProperty = $.setDesc , getOwnDescriptor = $.getDesc , defineProperties = $.setDescs , $indexOf = require('./$.array-includes')(false) , factories = {} , IE8_DOM_DEFINE; if(!SUPPORT_DESC){ 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; }; } $def($def.S + $def.F * !SUPPORT_DESC, '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('