{"version":3,"sources":["../../node_modules/.pnpm/dom-helpers@3.4.0/node_modules/dom-helpers/class/addClass.js","../../node_modules/.pnpm/dom-helpers@3.4.0/node_modules/dom-helpers/class/hasClass.js","../../node_modules/.pnpm/dom-helpers@3.4.0/node_modules/dom-helpers/class/removeClass.js","../../node_modules/.pnpm/decode-uri-component@0.2.0/node_modules/decode-uri-component/index.js","../../node_modules/.pnpm/d3-time@2.1.1/node_modules/d3-time/src/millisecond.js","../../node_modules/.pnpm/d3-time@2.1.1/node_modules/d3-time/src/ticks.js","../../node_modules/.pnpm/d3-time@2.1.1/node_modules/d3-time/src/second.js","../../node_modules/.pnpm/d3-time@2.1.1/node_modules/d3-time/src/duration.js","../../../src/propertyUtils.js","../../../src/utils.js","../../../src/getOffsetParent.js","../../../src/isAncestorFixed.js","../../../src/getVisibleRectForElement.js","../../../src/adjustForViewport.js","../../../src/getRegion.js","../../../src/getAlignOffset.js","../../../src/getElFuturePos.js","../../../src/align/align.js","../../../src/align/alignElement.js","../../../src/align/alignPoint.js","../../node_modules/.pnpm/decimal.js-light@2.5.1/node_modules/decimal.js-light/decimal.js","../../node_modules/.pnpm/d3-time@2.1.1/node_modules/d3-time/src/interval.js","../../node_modules/.pnpm/d3-time@2.1.1/node_modules/d3-time/src/utcYear.js","../../node_modules/.pnpm/d3-time@2.1.1/node_modules/d3-time/src/utcMonth.js","../../node_modules/.pnpm/d3-time@2.1.1/node_modules/d3-time/src/utcWeek.js","../../node_modules/.pnpm/d3-time@2.1.1/node_modules/d3-time/src/utcDay.js","../../node_modules/.pnpm/d3-time@2.1.1/node_modules/d3-time/src/utcHour.js","../../node_modules/.pnpm/d3-time@2.1.1/node_modules/d3-time/src/utcMinute.js","../../node_modules/.pnpm/d3-time@2.1.1/node_modules/d3-time/src/year.js","../../node_modules/.pnpm/d3-time@2.1.1/node_modules/d3-time/src/month.js","../../node_modules/.pnpm/d3-time@2.1.1/node_modules/d3-time/src/week.js","../../node_modules/.pnpm/d3-time@2.1.1/node_modules/d3-time/src/day.js","../../node_modules/.pnpm/d3-time@2.1.1/node_modules/d3-time/src/hour.js","../../node_modules/.pnpm/d3-time@2.1.1/node_modules/d3-time/src/minute.js","../../src/utils.ts","../../src/comparator.ts","../../src/index.ts","../../node_modules/.pnpm/eventemitter3@4.0.7/node_modules/eventemitter3/index.js"],"names":["_interopRequireDefault","require","exports","__esModule","default","addClass","_hasClass","element","className","classList","add","setAttribute","baseVal","module","hasClass","contains","indexOf","replaceClassName","origClass","classToRemove","replace","RegExp","removeClass","remove","token","singleMatcher","multiMatcher","decodeComponents","components","split","decodeURIComponent","join","err","length","left","slice","right","Array","prototype","concat","call","decode","input","tokens","match","i","customDecodeURIComponent","replaceMap","exec","result","entries","Object","keys","key","encodedURI","TypeError","millisecond","interval","date","step","setTime","start","end","every","k","Math","floor","isFinite","milliseconds","range","ticker","year","month","week","day","hour","minute","tickIntervals","second","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","ticks","stop","count","reverse","tickInterval","target","abs","bisector","tickStep","max","t","utcYear","utcMonth","utcWeek","utcDay","utcHour","utcMinute","utcTicks","utcTickInterval","timeTicks","timeTickInterval","getMilliseconds","getUTCSeconds","seconds","jsCssMap","Webkit","Moz","ms","O","vendorPrefix","style","document","testProp","getVendorPrefix","name","getTransitionName","node","getTransformName","window","transform","matrix","x","parseFloat","y","matrix2d","matrix3d","match2d","arr","xy","setTransform","match3d","RE_NUM","originalStyle","elem","value","css","el","getComputedStyleX","doc","body","docElem","box","top","ret","w","method","d","getScroll","pos","getClientPosition","getScrollLeft","getScrollTop","obj","isWindow","computedStyle","val","getDocument","_RE_NUM_NO_PX","RE_POS","CURRENT_STYLE","RUNTIME_STYLE","LEFT","PX","rsLeft","dir","option","presetH","presetV","horizontalProperty","getOffsetDirection","verticalProperty","oppositeHorizontalProperty","oppositeOffsetDirection","oppositeVerticalProperty","originalTransition","originalOffset","getOffset","getTransitionProperty","setTransitionProperty","forceRelayout","old","offset","preset","off","originalXY","getTransformXY","resultXY","setTransformXY","oriOffset","oLeft","oTop","tLeft","tTop","setLeftTop","fn","BOX_MODELS","CONTENT_INDEX","PADDING_INDEX","BORDER_INDEX","MARGIN_INDEX","options","callback","j","props","prop","which","cssProp","domUtils","getParent","parent","each","refWin","win","documentElement","documentElementProp","extra","borderBoxValue","isBorderBox","isBorderBoxFn","cssBoxValue","Number","borderBoxValueOrIsBorderBox","getPBMWidth","cssShow","position","visibility","display","args","getWH","swap","first","getWHIgnoreDisplay","includeMargin","from","to","utils","getWindow","setOffset","clone","overflow","mix","getWindowScrollLeft","getWindowScrollTop","merge","viewportWidth","viewportHeight","positionStyle","skipStatic","visibleRect","bottom","Infinity","getOffsetParent","navigator","originalPosition","scrollX","scrollY","documentWidth","documentHeight","bodyStyle","alwaysByViewport","isAncestorFixed","maxVisibleWidth","maxVisibleHeight","size","width","elRegion","height","h","V","align","H","region","p1","getAlignOffset","points","p2","diff","targetOffset","elFuturePos","map","n","parseInt","str","convertOffset","source","newOverflowCfg","fail","getVisibleRectForElement","getRegion","normalizeOffset","getElFuturePos","newElRegion","isFailX","newPoints","flip","l","r","newOffset","flipOffset","newTargetOffset","newElFuturePos","isCompleteFailX","isFailY","b","isCompleteFailY","isStillFailX","isStillFailY","adjustForViewport","useCssRight","useCssBottom","useCssTransform","ignoreShake","targetRegion","refNodeRegion","isTargetNotOutOfVisible","isOutOfVisibleRect","doAlign","alignElement","pageX","tgtPoint","pageY","tgtRegion","pointInView","globalScope","MAX_DIGITS","Decimal","precision","rounding","toExpNeg","toExpPos","LN10","external","decimalError","invalidArgument","exponentOutOfRange","mathfloor","mathpow","pow","isDecimal","ONE","BASE","LOG_BASE","MAX_SAFE_INTEGER","MAX_E","P","absoluteValue","constructor","s","comparedTo","cmp","xdL","ydL","e","decimalPlaces","dp","dividedBy","div","divide","dividedToIntegerBy","idiv","Ctor","round","equals","eq","exponent","getBase10Exponent","greaterThan","gt","greaterThanOrEqualTo","gte","isInteger","isint","isNegative","isneg","isPositive","ispos","isZero","lessThan","lt","lessThanOrEqualTo","lte","logarithm","log","base","pr","wpr","Error","ln","minus","sub","subtract","modulo","mod","q","times","naturalExponential","exp","naturalLogarithm","negated","neg","plus","sd","z","squareRoot","sqrt","digitsToString","toExponential","toString","mul","carry","rL","xd","yd","push","pop","shift","toDecimalPlaces","todp","rm","checkInt32","toFixed","toInteger","toint","toNumber","toPower","sign","yIsInt","guard","yn","ceil","truncate","toPrecision","toSignificantDigits","tosd","valueOf","toJSON","len","unshift","min","ws","indexOfLastWord","getZeroString","multiplyInteger","temp","compare","a","aL","bL","prod","prodL","qd","rem","remL","rem0","xi","xL","yd0","yL","yz","denominator","sum","getLn10","zs","c","c0","numerator","x2","charAt","parseDecimal","search","substring","charCodeAt","rd","doRound","xdi","xe","xLTy","isExp","p","ps","test","ROUND_UP","ROUND_DOWN","ROUND_CEIL","ROUND_FLOOR","ROUND_HALF_UP","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_CEIL","ROUND_HALF_FLOOR","config","set","hasOwnProperty","v","define","t0","Date","t1","newInterval","floori","offseti","field","arguments","d0","d1","previous","filter","setUTCMonth","setUTCHours","setUTCFullYear","getUTCFullYear","utcYears","setUTCDate","getUTCMonth","utcMonths","utcWeekday","getUTCDate","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcSundays","utcMondays","utcTuesdays","utcWednesdays","utcThursdays","utcFridays","utcSaturdays","utcDays","setUTCMinutes","getUTCHours","utcHours","setUTCSeconds","getUTCMinutes","utcMinutes","setMonth","setHours","setFullYear","getFullYear","years","setDate","getMonth","months","weekday","getDate","getDay","getTimezoneOffset","sunday","monday","tuesday","wednesday","thursday","friday","saturday","sundays","mondays","tuesdays","wednesdays","thursdays","fridays","saturdays","days","getSeconds","getMinutes","getHours","hours","minutes","has","prefix","Events","create","__proto__","EE","context","once","addListener","emitter","event","listener","evt","_events","_eventsCount","clearEvent","EventEmitter","eventNames","names","events","getOwnPropertySymbols","listeners","handlers","ee","listenerCount","emit","a1","a2","a3","a4","a5","removeListener","undefined","apply","on","removeAllListeners","prefixed"],"mappings":"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","file":"static/js/vendors~main~77d46026.58f43b33.chunk.js","sourcesContent":["\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = addClass;\n\nvar _hasClass = _interopRequireDefault(require(\"./hasClass\"));\n\nfunction addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!(0, _hasClass.default)(element, className)) if (typeof element.className === 'string') element.className = element.className + ' ' + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + ' ' + className);\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = hasClass;\n\nfunction hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\n\nmodule.exports = exports[\"default\"];","'use strict';\n\nfunction replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp('(^|\\\\s)' + classToRemove + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nmodule.exports = function removeClass(element, className) {\n if (element.classList) element.classList.remove(className);else if (typeof element.className === 'string') element.className = replaceClassName(element.className, className);else element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n};","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp(token, 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn decodeURIComponent(components.join(''));\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher);\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher);\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport millisecond from \"./millisecond.js\";\nimport second from \"./second.js\";\nimport minute from \"./minute.js\";\nimport hour from \"./hour.js\";\nimport day from \"./day.js\";\nimport {sunday as week} from \"./week.js\";\nimport month from \"./month.js\";\nimport year from \"./year.js\";\nimport utcMinute from \"./utcMinute.js\";\nimport utcHour from \"./utcHour.js\";\nimport utcDay from \"./utcDay.js\";\nimport {utcSunday as utcWeek} from \"./utcWeek.js\";\nimport utcMonth from \"./utcMonth.js\";\nimport utcYear from \"./utcYear.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n const tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = bisector(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n\n return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(year, month, week, day, hour, minute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","let vendorPrefix;\n\nconst jsCssMap = {\n Webkit: '-webkit-',\n Moz: '-moz-',\n // IE did it wrong again ...\n ms: '-ms-',\n O: '-o-',\n};\n\nfunction getVendorPrefix() {\n if (vendorPrefix !== undefined) {\n return vendorPrefix;\n }\n vendorPrefix = '';\n const style = document.createElement('p').style;\n const testProp = 'Transform';\n for (const key in jsCssMap) {\n if (key + testProp in style) {\n vendorPrefix = key;\n }\n }\n return vendorPrefix;\n}\n\nfunction getTransitionName() {\n return getVendorPrefix()\n ? `${getVendorPrefix()}TransitionProperty`\n : 'transitionProperty';\n}\n\nexport function getTransformName() {\n return getVendorPrefix() ? `${getVendorPrefix()}Transform` : 'transform';\n}\n\nexport function setTransitionProperty(node, value) {\n const name = getTransitionName();\n if (name) {\n node.style[name] = value;\n if (name !== 'transitionProperty') {\n node.style.transitionProperty = value;\n }\n }\n}\n\nfunction setTransform(node, value) {\n const name = getTransformName();\n if (name) {\n node.style[name] = value;\n if (name !== 'transform') {\n node.style.transform = value;\n }\n }\n}\n\nexport function getTransitionProperty(node) {\n return node.style.transitionProperty || node.style[getTransitionName()];\n}\n\nexport function getTransformXY(node) {\n const style = window.getComputedStyle(node, null);\n const transform =\n style.getPropertyValue('transform') ||\n style.getPropertyValue(getTransformName());\n if (transform && transform !== 'none') {\n const matrix = transform.replace(/[^0-9\\-.,]/g, '').split(',');\n return {\n x: parseFloat(matrix[12] || matrix[4], 0),\n y: parseFloat(matrix[13] || matrix[5], 0),\n };\n }\n return {\n x: 0,\n y: 0,\n };\n}\n\nconst matrix2d = /matrix\\((.*)\\)/;\nconst matrix3d = /matrix3d\\((.*)\\)/;\n\nexport function setTransformXY(node, xy) {\n const style = window.getComputedStyle(node, null);\n const transform =\n style.getPropertyValue('transform') ||\n style.getPropertyValue(getTransformName());\n if (transform && transform !== 'none') {\n let arr;\n let match2d = transform.match(matrix2d);\n if (match2d) {\n match2d = match2d[1];\n arr = match2d.split(',').map(item => {\n return parseFloat(item, 10);\n });\n arr[4] = xy.x;\n arr[5] = xy.y;\n setTransform(node, `matrix(${arr.join(',')})`);\n } else {\n const match3d = transform.match(matrix3d)[1];\n arr = match3d.split(',').map(item => {\n return parseFloat(item, 10);\n });\n arr[12] = xy.x;\n arr[13] = xy.y;\n setTransform(node, `matrix3d(${arr.join(',')})`);\n }\n } else {\n setTransform(\n node,\n `translateX(${xy.x}px) translateY(${xy.y}px) translateZ(0)`,\n );\n }\n}\n","import {\n setTransitionProperty,\n getTransitionProperty,\n getTransformXY,\n setTransformXY,\n getTransformName,\n} from './propertyUtils';\n\nconst RE_NUM = /[\\-+]?(?:\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/.source;\n\nlet getComputedStyleX;\n\n// https://stackoverflow.com/a/3485654/3040605\nfunction forceRelayout(elem) {\n const originalStyle = elem.style.display;\n elem.style.display = 'none';\n elem.offsetHeight; // eslint-disable-line\n elem.style.display = originalStyle;\n}\n\nfunction css(el, name, v) {\n let value = v;\n if (typeof name === 'object') {\n for (const i in name) {\n if (name.hasOwnProperty(i)) {\n css(el, i, name[i]);\n }\n }\n return undefined;\n }\n if (typeof value !== 'undefined') {\n if (typeof value === 'number') {\n value = `${value}px`;\n }\n el.style[name] = value;\n return undefined;\n }\n return getComputedStyleX(el, name);\n}\n\nfunction getClientPosition(elem) {\n let box;\n let x;\n let y;\n const doc = elem.ownerDocument;\n const body = doc.body;\n const docElem = doc && doc.documentElement;\n // 根据 GBS 最新数据,A-Grade Browsers 都已支持 getBoundingClientRect 方法,不用再考虑传统的实现方式\n box = elem.getBoundingClientRect();\n\n // 注:jQuery 还考虑减去 docElem.clientLeft/clientTop\n // 但测试发现,这样反而会导致当 html 和 body 有边距/边框样式时,获取的值不正确\n // 此外,ie6 会忽略 html 的 margin 值,幸运地是没有谁会去设置 html 的 margin\n\n x = Math.floor(box.left);\n y = Math.floor(box.top);\n\n // In IE, most of the time, 2 extra pixels are added to the top and left\n // due to the implicit 2-pixel inset border. In IE6/7 quirks mode and\n // IE6 standards mode, this border can be overridden by setting the\n // document element's border to zero -- thus, we cannot rely on the\n // offset always being 2 pixels.\n\n // In quirks mode, the offset can be determined by querying the body's\n // clientLeft/clientTop, but in standards mode, it is found by querying\n // the document element's clientLeft/clientTop. Since we already called\n // getClientBoundingRect we have already forced a reflow, so it is not\n // too expensive just to query them all.\n\n // ie 下应该减去窗口的边框吧,毕竟默认 absolute 都是相对窗口定位的\n // 窗口边框标准是设 documentElement ,quirks 时设置 body\n // 最好禁止在 body 和 html 上边框 ,但 ie < 9 html 默认有 2px ,减去\n // 但是非 ie 不可能设置窗口边框,body html 也不是窗口 ,ie 可以通过 html,body 设置\n // 标准 ie 下 docElem.clientTop 就是 border-top\n // ie7 html 即窗口边框改变不了。永远为 2\n // 但标准 firefox/chrome/ie9 下 docElem.clientTop 是窗口边框,即使设了 border-top 也为 0\n\n x -= docElem.clientLeft || body.clientLeft || 0;\n y -= docElem.clientTop || body.clientTop || 0;\n\n return {\n left: x,\n top: y,\n };\n}\n\nfunction getScroll(w, top) {\n let ret = w[`page${top ? 'Y' : 'X'}Offset`];\n const method = `scroll${top ? 'Top' : 'Left'}`;\n if (typeof ret !== 'number') {\n const d = w.document;\n // ie6,7,8 standard mode\n ret = d.documentElement[method];\n if (typeof ret !== 'number') {\n // quirks mode\n ret = d.body[method];\n }\n }\n return ret;\n}\n\nfunction getScrollLeft(w) {\n return getScroll(w);\n}\n\nfunction getScrollTop(w) {\n return getScroll(w, true);\n}\n\nfunction getOffset(el) {\n const pos = getClientPosition(el);\n const doc = el.ownerDocument;\n const w = doc.defaultView || doc.parentWindow;\n pos.left += getScrollLeft(w);\n pos.top += getScrollTop(w);\n return pos;\n}\n\n/**\n * A crude way of determining if an object is a window\n * @member util\n */\nfunction isWindow(obj) {\n // must use == for ie8\n /* eslint eqeqeq:0 */\n return obj !== null && obj !== undefined && obj == obj.window;\n}\n\nfunction getDocument(node) {\n if (isWindow(node)) {\n return node.document;\n }\n if (node.nodeType === 9) {\n return node;\n }\n return node.ownerDocument;\n}\n\nfunction _getComputedStyle(elem, name, cs) {\n let computedStyle = cs;\n let val = '';\n const d = getDocument(elem);\n computedStyle = computedStyle || d.defaultView.getComputedStyle(elem, null);\n\n // https://github.com/kissyteam/kissy/issues/61\n if (computedStyle) {\n val = computedStyle.getPropertyValue(name) || computedStyle[name];\n }\n\n return val;\n}\n\nconst _RE_NUM_NO_PX = new RegExp(`^(${RE_NUM})(?!px)[a-z%]+$`, 'i');\nconst RE_POS = /^(top|right|bottom|left)$/;\nconst CURRENT_STYLE = 'currentStyle';\nconst RUNTIME_STYLE = 'runtimeStyle';\nconst LEFT = 'left';\nconst PX = 'px';\n\nfunction _getComputedStyleIE(elem, name) {\n // currentStyle maybe null\n // http://msdn.microsoft.com/en-us/library/ms535231.aspx\n let ret = elem[CURRENT_STYLE] && elem[CURRENT_STYLE][name];\n\n // 当 width/height 设置为百分比时,通过 pixelLeft 方式转换的 width/height 值\n // 一开始就处理了! CUSTOM_STYLE.height,CUSTOM_STYLE.width ,cssHook 解决@2011-08-19\n // 在 ie 下不对,需要直接用 offset 方式\n // borderWidth 等值也有问题,但考虑到 borderWidth 设为百分比的概率很小,这里就不考虑了\n\n // From the awesome hack by Dean Edwards\n // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n // If we're not dealing with a regular pixel number\n // but a number that has a weird ending, we need to convert it to pixels\n // exclude left right for relativity\n if (_RE_NUM_NO_PX.test(ret) && !RE_POS.test(name)) {\n // Remember the original values\n const style = elem.style;\n const left = style[LEFT];\n const rsLeft = elem[RUNTIME_STYLE][LEFT];\n\n // prevent flashing of content\n elem[RUNTIME_STYLE][LEFT] = elem[CURRENT_STYLE][LEFT];\n\n // Put in the new values to get a computed value out\n style[LEFT] = name === 'fontSize' ? '1em' : ret || 0;\n ret = style.pixelLeft + PX;\n\n // Revert the changed values\n style[LEFT] = left;\n\n elem[RUNTIME_STYLE][LEFT] = rsLeft;\n }\n return ret === '' ? 'auto' : ret;\n}\n\nif (typeof window !== 'undefined') {\n getComputedStyleX = window.getComputedStyle\n ? _getComputedStyle\n : _getComputedStyleIE;\n}\n\nfunction getOffsetDirection(dir, option) {\n if (dir === 'left') {\n return option.useCssRight ? 'right' : dir;\n }\n return option.useCssBottom ? 'bottom' : dir;\n}\n\nfunction oppositeOffsetDirection(dir) {\n if (dir === 'left') {\n return 'right';\n } else if (dir === 'right') {\n return 'left';\n } else if (dir === 'top') {\n return 'bottom';\n } else if (dir === 'bottom') {\n return 'top';\n }\n}\n\n// 设置 elem 相对 elem.ownerDocument 的坐标\nfunction setLeftTop(elem, offset, option) {\n // set position first, in-case top/left are set even on static elem\n if (css(elem, 'position') === 'static') {\n elem.style.position = 'relative';\n }\n let presetH = -999;\n let presetV = -999;\n const horizontalProperty = getOffsetDirection('left', option);\n const verticalProperty = getOffsetDirection('top', option);\n const oppositeHorizontalProperty = oppositeOffsetDirection(\n horizontalProperty,\n );\n const oppositeVerticalProperty = oppositeOffsetDirection(verticalProperty);\n\n if (horizontalProperty !== 'left') {\n presetH = 999;\n }\n\n if (verticalProperty !== 'top') {\n presetV = 999;\n }\n let originalTransition = '';\n const originalOffset = getOffset(elem);\n if ('left' in offset || 'top' in offset) {\n originalTransition = getTransitionProperty(elem) || '';\n setTransitionProperty(elem, 'none');\n }\n if ('left' in offset) {\n elem.style[oppositeHorizontalProperty] = '';\n elem.style[horizontalProperty] = `${presetH}px`;\n }\n if ('top' in offset) {\n elem.style[oppositeVerticalProperty] = '';\n elem.style[verticalProperty] = `${presetV}px`;\n }\n // force relayout\n forceRelayout(elem);\n const old = getOffset(elem);\n const originalStyle = {};\n for (const key in offset) {\n if (offset.hasOwnProperty(key)) {\n const dir = getOffsetDirection(key, option);\n const preset = key === 'left' ? presetH : presetV;\n const off = originalOffset[key] - old[key];\n if (dir === key) {\n originalStyle[dir] = preset + off;\n } else {\n originalStyle[dir] = preset - off;\n }\n }\n }\n css(elem, originalStyle);\n // force relayout\n forceRelayout(elem);\n if ('left' in offset || 'top' in offset) {\n setTransitionProperty(elem, originalTransition);\n }\n const ret = {};\n for (const key in offset) {\n if (offset.hasOwnProperty(key)) {\n const dir = getOffsetDirection(key, option);\n const off = offset[key] - originalOffset[key];\n if (key === dir) {\n ret[dir] = originalStyle[dir] + off;\n } else {\n ret[dir] = originalStyle[dir] - off;\n }\n }\n }\n css(elem, ret);\n}\n\nfunction setTransform(elem, offset) {\n const originalOffset = getOffset(elem);\n const originalXY = getTransformXY(elem);\n const resultXY = { x: originalXY.x, y: originalXY.y };\n if ('left' in offset) {\n resultXY.x = originalXY.x + offset.left - originalOffset.left;\n }\n if ('top' in offset) {\n resultXY.y = originalXY.y + offset.top - originalOffset.top;\n }\n setTransformXY(elem, resultXY);\n}\n\nfunction setOffset(elem, offset, option) {\n if (option.ignoreShake) {\n const oriOffset = getOffset(elem);\n\n const oLeft = oriOffset.left.toFixed(0);\n const oTop = oriOffset.top.toFixed(0);\n const tLeft = offset.left.toFixed(0);\n const tTop = offset.top.toFixed(0);\n\n if (oLeft === tLeft && oTop === tTop) {\n return;\n }\n }\n\n if (option.useCssRight || option.useCssBottom) {\n setLeftTop(elem, offset, option);\n } else if (\n option.useCssTransform &&\n getTransformName() in document.body.style\n ) {\n setTransform(elem, offset, option);\n } else {\n setLeftTop(elem, offset, option);\n }\n}\n\nfunction each(arr, fn) {\n for (let i = 0; i < arr.length; i++) {\n fn(arr[i]);\n }\n}\n\nfunction isBorderBoxFn(elem) {\n return getComputedStyleX(elem, 'boxSizing') === 'border-box';\n}\n\nconst BOX_MODELS = ['margin', 'border', 'padding'];\nconst CONTENT_INDEX = -1;\nconst PADDING_INDEX = 2;\nconst BORDER_INDEX = 1;\nconst MARGIN_INDEX = 0;\n\nfunction swap(elem, options, callback) {\n const old = {};\n const style = elem.style;\n let name;\n\n // Remember the old values, and insert the new ones\n for (name in options) {\n if (options.hasOwnProperty(name)) {\n old[name] = style[name];\n style[name] = options[name];\n }\n }\n\n callback.call(elem);\n\n // Revert the old values\n for (name in options) {\n if (options.hasOwnProperty(name)) {\n style[name] = old[name];\n }\n }\n}\n\nfunction getPBMWidth(elem, props, which) {\n let value = 0;\n let prop;\n let j;\n let i;\n for (j = 0; j < props.length; j++) {\n prop = props[j];\n if (prop) {\n for (i = 0; i < which.length; i++) {\n let cssProp;\n if (prop === 'border') {\n cssProp = `${prop}${which[i]}Width`;\n } else {\n cssProp = prop + which[i];\n }\n value += parseFloat(getComputedStyleX(elem, cssProp)) || 0;\n }\n }\n }\n return value;\n}\n\nconst domUtils = {\n getParent(element) {\n let parent = element;\n do {\n if (parent.nodeType === 11 && parent.host) {\n parent = parent.host;\n } else {\n parent = parent.parentNode;\n }\n } while (parent && parent.nodeType !== 1 && parent.nodeType !== 9);\n return parent;\n },\n};\n\neach(['Width', 'Height'], name => {\n domUtils[`doc${name}`] = refWin => {\n const d = refWin.document;\n return Math.max(\n // firefox chrome documentElement.scrollHeight< body.scrollHeight\n // ie standard mode : documentElement.scrollHeight> body.scrollHeight\n d.documentElement[`scroll${name}`],\n // quirks : documentElement.scrollHeight 最大等于可视窗口多一点?\n d.body[`scroll${name}`],\n domUtils[`viewport${name}`](d),\n );\n };\n\n domUtils[`viewport${name}`] = win => {\n // pc browser includes scrollbar in window.innerWidth\n const prop = `client${name}`;\n const doc = win.document;\n const body = doc.body;\n const documentElement = doc.documentElement;\n const documentElementProp = documentElement[prop];\n // 标准模式取 documentElement\n // backcompat 取 body\n return (\n (doc.compatMode === 'CSS1Compat' && documentElementProp) ||\n (body && body[prop]) ||\n documentElementProp\n );\n };\n});\n\n/*\n 得到元素的大小信息\n @param elem\n @param name\n @param {String} [extra] 'padding' : (css width) + padding\n 'border' : (css width) + padding + border\n 'margin' : (css width) + padding + border + margin\n */\nfunction getWH(elem, name, ex) {\n let extra = ex;\n if (isWindow(elem)) {\n return name === 'width'\n ? domUtils.viewportWidth(elem)\n : domUtils.viewportHeight(elem);\n } else if (elem.nodeType === 9) {\n return name === 'width'\n ? domUtils.docWidth(elem)\n : domUtils.docHeight(elem);\n }\n const which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n let borderBoxValue =\n name === 'width'\n ? Math.floor(elem.getBoundingClientRect().width)\n : Math.floor(elem.getBoundingClientRect().height);\n const isBorderBox = isBorderBoxFn(elem);\n let cssBoxValue = 0;\n if (\n borderBoxValue === null ||\n borderBoxValue === undefined ||\n borderBoxValue <= 0\n ) {\n borderBoxValue = undefined;\n // Fall back to computed then un computed css if necessary\n cssBoxValue = getComputedStyleX(elem, name);\n if (\n cssBoxValue === null ||\n cssBoxValue === undefined ||\n Number(cssBoxValue) < 0\n ) {\n cssBoxValue = elem.style[name] || 0;\n }\n // Normalize '', auto, and prepare for extra\n cssBoxValue = parseFloat(cssBoxValue) || 0;\n }\n if (extra === undefined) {\n extra = isBorderBox ? BORDER_INDEX : CONTENT_INDEX;\n }\n const borderBoxValueOrIsBorderBox =\n borderBoxValue !== undefined || isBorderBox;\n const val = borderBoxValue || cssBoxValue;\n if (extra === CONTENT_INDEX) {\n if (borderBoxValueOrIsBorderBox) {\n return val - getPBMWidth(elem, ['border', 'padding'], which);\n }\n return cssBoxValue;\n } else if (borderBoxValueOrIsBorderBox) {\n if (extra === BORDER_INDEX) {\n return val;\n }\n return (\n val +\n (extra === PADDING_INDEX\n ? -getPBMWidth(elem, ['border'], which)\n : getPBMWidth(elem, ['margin'], which))\n );\n }\n return cssBoxValue + getPBMWidth(elem, BOX_MODELS.slice(extra), which);\n}\n\nconst cssShow = {\n position: 'absolute',\n visibility: 'hidden',\n display: 'block',\n};\n\n// fix #119 : https://github.com/kissyteam/kissy/issues/119\nfunction getWHIgnoreDisplay(...args) {\n let val;\n const elem = args[0];\n // in case elem is window\n // elem.offsetWidth === undefined\n if (elem.offsetWidth !== 0) {\n val = getWH.apply(undefined, args);\n } else {\n swap(elem, cssShow, () => {\n val = getWH.apply(undefined, args);\n });\n }\n return val;\n}\n\neach(['width', 'height'], name => {\n const first = name.charAt(0).toUpperCase() + name.slice(1);\n domUtils[`outer${first}`] = (el, includeMargin) => {\n return (\n el &&\n getWHIgnoreDisplay(el, name, includeMargin ? MARGIN_INDEX : BORDER_INDEX)\n );\n };\n const which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n\n domUtils[name] = (elem, v) => {\n let val = v;\n if (val !== undefined) {\n if (elem) {\n const isBorderBox = isBorderBoxFn(elem);\n if (isBorderBox) {\n val += getPBMWidth(elem, ['padding', 'border'], which);\n }\n return css(elem, name, val);\n }\n return undefined;\n }\n return elem && getWHIgnoreDisplay(elem, name, CONTENT_INDEX);\n };\n});\n\nfunction mix(to, from) {\n for (const i in from) {\n if (from.hasOwnProperty(i)) {\n to[i] = from[i];\n }\n }\n return to;\n}\n\nconst utils = {\n getWindow(node) {\n if (node && node.document && node.setTimeout) {\n return node;\n }\n const doc = node.ownerDocument || node;\n return doc.defaultView || doc.parentWindow;\n },\n getDocument,\n offset(el, value, option) {\n if (typeof value !== 'undefined') {\n setOffset(el, value, option || {});\n } else {\n return getOffset(el);\n }\n },\n isWindow,\n each,\n css,\n clone(obj) {\n let i;\n const ret = {};\n for (i in obj) {\n if (obj.hasOwnProperty(i)) {\n ret[i] = obj[i];\n }\n }\n const overflow = obj.overflow;\n if (overflow) {\n for (i in obj) {\n if (obj.hasOwnProperty(i)) {\n ret.overflow[i] = obj.overflow[i];\n }\n }\n }\n return ret;\n },\n mix,\n getWindowScrollLeft(w) {\n return getScrollLeft(w);\n },\n getWindowScrollTop(w) {\n return getScrollTop(w);\n },\n merge(...args) {\n const ret = {};\n for (let i = 0; i < args.length; i++) {\n utils.mix(ret, args[i]);\n }\n return ret;\n },\n viewportWidth: 0,\n viewportHeight: 0,\n};\n\nmix(utils, domUtils);\n\nexport default utils;\n","import utils from './utils';\n\n/**\n * 得到会导致元素显示不全的祖先元素\n */\nconst { getParent } = utils;\n\nfunction getOffsetParent(element) {\n if (utils.isWindow(element) || element.nodeType === 9) {\n return null;\n }\n // ie 这个也不是完全可行\n /*\n
\n
\n 元素 6 高 100px 宽 50px
\n
\n
\n */\n // element.offsetParent does the right thing in ie7 and below. Return parent with layout!\n // In other browsers it only includes elements with position absolute, relative or\n // fixed, not elements with overflow set to auto or scroll.\n // if (UA.ie && ieMode < 8) {\n // return element.offsetParent;\n // }\n // 统一的 offsetParent 方法\n const doc = utils.getDocument(element);\n const body = doc.body;\n let parent;\n let positionStyle = utils.css(element, 'position');\n const skipStatic = positionStyle === 'fixed' || positionStyle === 'absolute';\n\n if (!skipStatic) {\n return element.nodeName.toLowerCase() === 'html'\n ? null\n : getParent(element);\n }\n\n for (\n parent = getParent(element);\n parent && parent !== body && parent.nodeType !== 9;\n parent = getParent(parent)\n ) {\n positionStyle = utils.css(parent, 'position');\n if (positionStyle !== 'static') {\n return parent;\n }\n }\n return null;\n}\n\nexport default getOffsetParent;\n","import utils from './utils';\n\nconst { getParent } = utils;\n\nexport default function isAncestorFixed(element) {\n if (utils.isWindow(element) || element.nodeType === 9) {\n return false;\n }\n\n const doc = utils.getDocument(element);\n const body = doc.body;\n let parent = null;\n for (\n parent = getParent(element);\n // 修复元素位于 document.documentElement 下导致崩溃问题\n parent && parent !== body && parent !== doc;\n parent = getParent(parent)\n ) {\n const positionStyle = utils.css(parent, 'position');\n if (positionStyle === 'fixed') {\n return true;\n }\n }\n return false;\n}\n","import utils from './utils';\nimport getOffsetParent from './getOffsetParent';\nimport isAncestorFixed from './isAncestorFixed';\n\n/**\n * 获得元素的显示部分的区域\n */\nfunction getVisibleRectForElement(element, alwaysByViewport) {\n const visibleRect = {\n left: 0,\n right: Infinity,\n top: 0,\n bottom: Infinity,\n };\n let el = getOffsetParent(element);\n const doc = utils.getDocument(element);\n const win = doc.defaultView || doc.parentWindow;\n const body = doc.body;\n const documentElement = doc.documentElement;\n\n // Determine the size of the visible rect by climbing the dom accounting for\n // all scrollable containers.\n while (el) {\n // clientWidth is zero for inline block elements in ie.\n if (\n (navigator.userAgent.indexOf('MSIE') === -1 || el.clientWidth !== 0) &&\n // body may have overflow set on it, yet we still get the entire\n // viewport. In some browsers, el.offsetParent may be\n // document.documentElement, so check for that too.\n (el !== body &&\n el !== documentElement &&\n utils.css(el, 'overflow') !== 'visible')\n ) {\n const pos = utils.offset(el);\n // add border\n pos.left += el.clientLeft;\n pos.top += el.clientTop;\n visibleRect.top = Math.max(visibleRect.top, pos.top);\n visibleRect.right = Math.min(\n visibleRect.right,\n // consider area without scrollBar\n pos.left + el.clientWidth,\n );\n visibleRect.bottom = Math.min(\n visibleRect.bottom,\n pos.top + el.clientHeight,\n );\n visibleRect.left = Math.max(visibleRect.left, pos.left);\n } else if (el === body || el === documentElement) {\n break;\n }\n el = getOffsetParent(el);\n }\n\n // Set element position to fixed\n // make sure absolute element itself don't affect it's visible area\n // https://github.com/ant-design/ant-design/issues/7601\n let originalPosition = null;\n if (!utils.isWindow(element) && element.nodeType !== 9) {\n originalPosition = element.style.position;\n const position = utils.css(element, 'position');\n if (position === 'absolute') {\n element.style.position = 'fixed';\n }\n }\n\n const scrollX = utils.getWindowScrollLeft(win);\n const scrollY = utils.getWindowScrollTop(win);\n const viewportWidth = utils.viewportWidth(win);\n const viewportHeight = utils.viewportHeight(win);\n let documentWidth = documentElement.scrollWidth;\n let documentHeight = documentElement.scrollHeight;\n\n // scrollXXX on html is sync with body which means overflow: hidden on body gets wrong scrollXXX.\n // We should cut this ourself.\n const bodyStyle = window.getComputedStyle(body);\n if (bodyStyle.overflowX === 'hidden') {\n documentWidth = win.innerWidth;\n }\n if (bodyStyle.overflowY === 'hidden') {\n documentHeight = win.innerHeight;\n }\n\n // Reset element position after calculate the visible area\n if (element.style) {\n element.style.position = originalPosition;\n }\n\n if (alwaysByViewport || isAncestorFixed(element)) {\n // Clip by viewport's size.\n visibleRect.left = Math.max(visibleRect.left, scrollX);\n visibleRect.top = Math.max(visibleRect.top, scrollY);\n visibleRect.right = Math.min(visibleRect.right, scrollX + viewportWidth);\n visibleRect.bottom = Math.min(visibleRect.bottom, scrollY + viewportHeight);\n } else {\n // Clip by document's size.\n const maxVisibleWidth = Math.max(documentWidth, scrollX + viewportWidth);\n visibleRect.right = Math.min(visibleRect.right, maxVisibleWidth);\n\n const maxVisibleHeight = Math.max(documentHeight, scrollY + viewportHeight);\n visibleRect.bottom = Math.min(visibleRect.bottom, maxVisibleHeight);\n }\n\n return visibleRect.top >= 0 &&\n visibleRect.left >= 0 &&\n visibleRect.bottom > visibleRect.top &&\n visibleRect.right > visibleRect.left\n ? visibleRect\n : null;\n}\n\nexport default getVisibleRectForElement;\n","import utils from './utils';\n\nfunction adjustForViewport(elFuturePos, elRegion, visibleRect, overflow) {\n const pos = utils.clone(elFuturePos);\n const size = {\n width: elRegion.width,\n height: elRegion.height,\n };\n\n if (overflow.adjustX && pos.left < visibleRect.left) {\n pos.left = visibleRect.left;\n }\n\n // Left edge inside and right edge outside viewport, try to resize it.\n if (\n overflow.resizeWidth &&\n pos.left >= visibleRect.left &&\n pos.left + size.width > visibleRect.right\n ) {\n size.width -= pos.left + size.width - visibleRect.right;\n }\n\n // Right edge outside viewport, try to move it.\n if (overflow.adjustX && pos.left + size.width > visibleRect.right) {\n // 保证左边界和可视区域左边界对齐\n pos.left = Math.max(visibleRect.right - size.width, visibleRect.left);\n }\n\n // Top edge outside viewport, try to move it.\n if (overflow.adjustY && pos.top < visibleRect.top) {\n pos.top = visibleRect.top;\n }\n\n // Top edge inside and bottom edge outside viewport, try to resize it.\n if (\n overflow.resizeHeight &&\n pos.top >= visibleRect.top &&\n pos.top + size.height > visibleRect.bottom\n ) {\n size.height -= pos.top + size.height - visibleRect.bottom;\n }\n\n // Bottom edge outside viewport, try to move it.\n if (overflow.adjustY && pos.top + size.height > visibleRect.bottom) {\n // 保证上边界和可视区域上边界对齐\n pos.top = Math.max(visibleRect.bottom - size.height, visibleRect.top);\n }\n\n return utils.mix(pos, size);\n}\n\nexport default adjustForViewport;\n","import utils from './utils';\n\nfunction getRegion(node) {\n let offset;\n let w;\n let h;\n if (!utils.isWindow(node) && node.nodeType !== 9) {\n offset = utils.offset(node);\n w = utils.outerWidth(node);\n h = utils.outerHeight(node);\n } else {\n const win = utils.getWindow(node);\n offset = {\n left: utils.getWindowScrollLeft(win),\n top: utils.getWindowScrollTop(win),\n };\n w = utils.viewportWidth(win);\n h = utils.viewportHeight(win);\n }\n offset.width = w;\n offset.height = h;\n return offset;\n}\n\nexport default getRegion;\n","/**\n * 获取 node 上的 align 对齐点 相对于页面的坐标\n */\n\nfunction getAlignOffset(region, align) {\n const V = align.charAt(0);\n const H = align.charAt(1);\n const w = region.width;\n const h = region.height;\n\n let x = region.left;\n let y = region.top;\n\n if (V === 'c') {\n y += h / 2;\n } else if (V === 'b') {\n y += h;\n }\n\n if (H === 'c') {\n x += w / 2;\n } else if (H === 'r') {\n x += w;\n }\n\n return {\n left: x,\n top: y,\n };\n}\n\nexport default getAlignOffset;\n","import getAlignOffset from './getAlignOffset';\n\nfunction getElFuturePos(elRegion, refNodeRegion, points, offset, targetOffset) {\n const p1 = getAlignOffset(refNodeRegion, points[1]);\n const p2 = getAlignOffset(elRegion, points[0]);\n const diff = [p2.left - p1.left, p2.top - p1.top];\n\n return {\n left: Math.round(elRegion.left - diff[0] + offset[0] - targetOffset[0]),\n top: Math.round(elRegion.top - diff[1] + offset[1] - targetOffset[1]),\n };\n}\n\nexport default getElFuturePos;\n","/**\n * align dom node flexibly\n * @author yiminghe@gmail.com\n */\n\nimport utils from '../utils';\nimport getVisibleRectForElement from '../getVisibleRectForElement';\nimport adjustForViewport from '../adjustForViewport';\nimport getRegion from '../getRegion';\nimport getElFuturePos from '../getElFuturePos';\n\n// http://yiminghe.iteye.com/blog/1124720\n\nfunction isFailX(elFuturePos, elRegion, visibleRect) {\n return (\n elFuturePos.left < visibleRect.left ||\n elFuturePos.left + elRegion.width > visibleRect.right\n );\n}\n\nfunction isFailY(elFuturePos, elRegion, visibleRect) {\n return (\n elFuturePos.top < visibleRect.top ||\n elFuturePos.top + elRegion.height > visibleRect.bottom\n );\n}\n\nfunction isCompleteFailX(elFuturePos, elRegion, visibleRect) {\n return (\n elFuturePos.left > visibleRect.right ||\n elFuturePos.left + elRegion.width < visibleRect.left\n );\n}\n\nfunction isCompleteFailY(elFuturePos, elRegion, visibleRect) {\n return (\n elFuturePos.top > visibleRect.bottom ||\n elFuturePos.top + elRegion.height < visibleRect.top\n );\n}\n\nfunction flip(points, reg, map) {\n const ret = [];\n utils.each(points, p => {\n ret.push(\n p.replace(reg, m => {\n return map[m];\n }),\n );\n });\n return ret;\n}\n\nfunction flipOffset(offset, index) {\n offset[index] = -offset[index];\n return offset;\n}\n\nfunction convertOffset(str, offsetLen) {\n let n;\n if (/%$/.test(str)) {\n n = (parseInt(str.substring(0, str.length - 1), 10) / 100) * offsetLen;\n } else {\n n = parseInt(str, 10);\n }\n return n || 0;\n}\n\nfunction normalizeOffset(offset, el) {\n offset[0] = convertOffset(offset[0], el.width);\n offset[1] = convertOffset(offset[1], el.height);\n}\n\n/**\n * @param el\n * @param tgtRegion 参照节点所占的区域: { left, top, width, height }\n * @param align\n */\nfunction doAlign(el, tgtRegion, align, isTgtRegionVisible) {\n let points = align.points;\n let offset = align.offset || [0, 0];\n let targetOffset = align.targetOffset || [0, 0];\n let overflow = align.overflow;\n const source = align.source || el;\n offset = [].concat(offset);\n targetOffset = [].concat(targetOffset);\n overflow = overflow || {};\n const newOverflowCfg = {};\n let fail = 0;\n const alwaysByViewport = !!(overflow && overflow.alwaysByViewport);\n // 当前节点可以被放置的显示区域\n const visibleRect = getVisibleRectForElement(source, alwaysByViewport);\n // 当前节点所占的区域, left/top/width/height\n const elRegion = getRegion(source);\n // 将 offset 转换成数值,支持百分比\n normalizeOffset(offset, elRegion);\n normalizeOffset(targetOffset, tgtRegion);\n // 当前节点将要被放置的位置\n let elFuturePos = getElFuturePos(\n elRegion,\n tgtRegion,\n points,\n offset,\n targetOffset,\n );\n // 当前节点将要所处的区域\n let newElRegion = utils.merge(elRegion, elFuturePos);\n\n // 如果可视区域不能完全放置当前节点时允许调整\n if (\n visibleRect &&\n (overflow.adjustX || overflow.adjustY) &&\n isTgtRegionVisible\n ) {\n if (overflow.adjustX) {\n // 如果横向不能放下\n if (isFailX(elFuturePos, elRegion, visibleRect)) {\n // 对齐位置反下\n const newPoints = flip(points, /[lr]/gi, {\n l: 'r',\n r: 'l',\n });\n // 偏移量也反下\n const newOffset = flipOffset(offset, 0);\n const newTargetOffset = flipOffset(targetOffset, 0);\n const newElFuturePos = getElFuturePos(\n elRegion,\n tgtRegion,\n newPoints,\n newOffset,\n newTargetOffset,\n );\n\n if (!isCompleteFailX(newElFuturePos, elRegion, visibleRect)) {\n fail = 1;\n points = newPoints;\n offset = newOffset;\n targetOffset = newTargetOffset;\n }\n }\n }\n\n if (overflow.adjustY) {\n // 如果纵向不能放下\n if (isFailY(elFuturePos, elRegion, visibleRect)) {\n // 对齐位置反下\n const newPoints = flip(points, /[tb]/gi, {\n t: 'b',\n b: 't',\n });\n // 偏移量也反下\n const newOffset = flipOffset(offset, 1);\n const newTargetOffset = flipOffset(targetOffset, 1);\n const newElFuturePos = getElFuturePos(\n elRegion,\n tgtRegion,\n newPoints,\n newOffset,\n newTargetOffset,\n );\n\n if (!isCompleteFailY(newElFuturePos, elRegion, visibleRect)) {\n fail = 1;\n points = newPoints;\n offset = newOffset;\n targetOffset = newTargetOffset;\n }\n }\n }\n\n // 如果失败,重新计算当前节点将要被放置的位置\n if (fail) {\n elFuturePos = getElFuturePos(\n elRegion,\n tgtRegion,\n points,\n offset,\n targetOffset,\n );\n utils.mix(newElRegion, elFuturePos);\n }\n const isStillFailX = isFailX(elFuturePos, elRegion, visibleRect);\n const isStillFailY = isFailY(elFuturePos, elRegion, visibleRect);\n // 检查反下后的位置是否可以放下了,如果仍然放不下:\n // 1. 复原修改过的定位参数\n if (isStillFailX || isStillFailY) {\n let newPoints = points;\n\n // 重置对应部分的翻转逻辑\n if (isStillFailX) {\n newPoints = flip(points, /[lr]/gi, {\n l: 'r',\n r: 'l',\n });\n }\n if (isStillFailY) {\n newPoints = flip(points, /[tb]/gi, {\n t: 'b',\n b: 't',\n });\n }\n\n points = newPoints;\n\n offset = align.offset || [0, 0];\n targetOffset = align.targetOffset || [0, 0];\n }\n // 2. 只有指定了可以调整当前方向才调整\n newOverflowCfg.adjustX = overflow.adjustX && isStillFailX;\n newOverflowCfg.adjustY = overflow.adjustY && isStillFailY;\n\n // 确实要调整,甚至可能会调整高度宽度\n if (newOverflowCfg.adjustX || newOverflowCfg.adjustY) {\n newElRegion = adjustForViewport(\n elFuturePos,\n elRegion,\n visibleRect,\n newOverflowCfg,\n );\n }\n }\n\n // need judge to in case set fixed with in css on height auto element\n if (newElRegion.width !== elRegion.width) {\n utils.css(\n source,\n 'width',\n utils.width(source) + newElRegion.width - elRegion.width,\n );\n }\n\n if (newElRegion.height !== elRegion.height) {\n utils.css(\n source,\n 'height',\n utils.height(source) + newElRegion.height - elRegion.height,\n );\n }\n\n // https://github.com/kissyteam/kissy/issues/190\n // 相对于屏幕位置没变,而 left/top 变了\n // 例如
\n utils.offset(\n source,\n {\n left: newElRegion.left,\n top: newElRegion.top,\n },\n {\n useCssRight: align.useCssRight,\n useCssBottom: align.useCssBottom,\n useCssTransform: align.useCssTransform,\n ignoreShake: align.ignoreShake,\n },\n );\n\n return {\n points,\n offset,\n targetOffset,\n overflow: newOverflowCfg,\n };\n}\n\nexport default doAlign;\n/**\n * 2012-04-26 yiminghe@gmail.com\n * - 优化智能对齐算法\n * - 慎用 resizeXX\n *\n * 2011-07-13 yiminghe@gmail.com note:\n * - 增加智能对齐,以及大小调整选项\n **/\n","import doAlign from './align';\nimport getOffsetParent from '../getOffsetParent';\nimport getVisibleRectForElement from '../getVisibleRectForElement';\nimport getRegion from '../getRegion';\n\nfunction isOutOfVisibleRect(target, alwaysByViewport) {\n const visibleRect = getVisibleRectForElement(target, alwaysByViewport);\n const targetRegion = getRegion(target);\n\n return (\n !visibleRect ||\n targetRegion.left + targetRegion.width <= visibleRect.left ||\n targetRegion.top + targetRegion.height <= visibleRect.top ||\n targetRegion.left >= visibleRect.right ||\n targetRegion.top >= visibleRect.bottom\n );\n}\n\nfunction alignElement(el, refNode, align) {\n const target = align.target || refNode;\n const refNodeRegion = getRegion(target);\n\n const isTargetNotOutOfVisible = !isOutOfVisibleRect(\n target,\n align.overflow && align.overflow.alwaysByViewport,\n );\n\n return doAlign(el, refNodeRegion, align, isTargetNotOutOfVisible);\n}\n\nalignElement.__getOffsetParent = getOffsetParent;\n\nalignElement.__getVisibleRectForElement = getVisibleRectForElement;\n\nexport default alignElement;\n","import utils from '../utils';\nimport doAlign from './align';\n\n/**\n * `tgtPoint`: { pageX, pageY } or { clientX, clientY }.\n * If client position provided, will internal convert to page position.\n */\n\nfunction alignPoint(el, tgtPoint, align) {\n let pageX;\n let pageY;\n\n const doc = utils.getDocument(el);\n const win = doc.defaultView || doc.parentWindow;\n\n const scrollX = utils.getWindowScrollLeft(win);\n const scrollY = utils.getWindowScrollTop(win);\n const viewportWidth = utils.viewportWidth(win);\n const viewportHeight = utils.viewportHeight(win);\n\n if ('pageX' in tgtPoint) {\n pageX = tgtPoint.pageX;\n } else {\n pageX = scrollX + tgtPoint.clientX;\n }\n\n if ('pageY' in tgtPoint) {\n pageY = tgtPoint.pageY;\n } else {\n pageY = scrollY + tgtPoint.clientY;\n }\n\n const tgtRegion = {\n left: pageX,\n top: pageY,\n width: 0,\n height: 0,\n };\n\n const pointInView =\n pageX >= 0 &&\n pageX <= scrollX + viewportWidth &&\n (pageY >= 0 && pageY <= scrollY + viewportHeight);\n\n // Provide default target point\n const points = [align.points[0], 'cc'];\n\n return doAlign(el, tgtRegion, { ...align, points }, pointInView);\n}\n\nexport default alignPoint;\n","/*! decimal.js-light v2.5.1 https://github.com/MikeMcl/decimal.js-light/LICENCE */\r\n;(function (globalScope) {\r\n 'use strict';\r\n\r\n\r\n /*\r\n * decimal.js-light v2.5.1\r\n * An arbitrary-precision Decimal type for JavaScript.\r\n * https://github.com/MikeMcl/decimal.js-light\r\n * Copyright (c) 2020 Michael Mclaughlin \r\n * MIT Expat Licence\r\n */\r\n\r\n\r\n // ----------------------------------- EDITABLE DEFAULTS ------------------------------------ //\r\n\r\n\r\n // The limit on the value of `precision`, and on the value of the first argument to\r\n // `toDecimalPlaces`, `toExponential`, `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n var MAX_DIGITS = 1e9, // 0 to 1e9\r\n\r\n\r\n // The initial configuration properties of the Decimal constructor.\r\n Decimal = {\r\n\r\n // These values must be integers within the stated ranges (inclusive).\r\n // Most of these values can be changed during run-time using `Decimal.config`.\r\n\r\n // The maximum number of significant digits of the result of a calculation or base conversion.\r\n // E.g. `Decimal.config({ precision: 20 });`\r\n precision: 20, // 1 to MAX_DIGITS\r\n\r\n // The rounding mode used by default by `toInteger`, `toDecimalPlaces`, `toExponential`,\r\n // `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n //\r\n // ROUND_UP 0 Away from zero.\r\n // ROUND_DOWN 1 Towards zero.\r\n // ROUND_CEIL 2 Towards +Infinity.\r\n // ROUND_FLOOR 3 Towards -Infinity.\r\n // ROUND_HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // ROUND_HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // ROUND_HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // ROUND_HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // ROUND_HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n //\r\n // E.g.\r\n // `Decimal.rounding = 4;`\r\n // `Decimal.rounding = Decimal.ROUND_HALF_UP;`\r\n rounding: 4, // 0 to 8\r\n\r\n // The exponent value at and beneath which `toString` returns exponential notation.\r\n // JavaScript numbers: -7\r\n toExpNeg: -7, // 0 to -MAX_E\r\n\r\n // The exponent value at and above which `toString` returns exponential notation.\r\n // JavaScript numbers: 21\r\n toExpPos: 21, // 0 to MAX_E\r\n\r\n // The natural logarithm of 10.\r\n // 115 digits\r\n LN10: '2.302585092994045684017991454684364207601101488628772976033327900967572609677352480235997205089598298341967784042286'\r\n },\r\n\r\n\r\n // ----------------------------------- END OF EDITABLE DEFAULTS ------------------------------- //\r\n\r\n\r\n external = true,\r\n\r\n decimalError = '[DecimalError] ',\r\n invalidArgument = decimalError + 'Invalid argument: ',\r\n exponentOutOfRange = decimalError + 'Exponent out of range: ',\r\n\r\n mathfloor = Math.floor,\r\n mathpow = Math.pow,\r\n\r\n isDecimal = /^(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i,\r\n\r\n ONE,\r\n BASE = 1e7,\r\n LOG_BASE = 7,\r\n MAX_SAFE_INTEGER = 9007199254740991,\r\n MAX_E = mathfloor(MAX_SAFE_INTEGER / LOG_BASE), // 1286742750677284\r\n\r\n // Decimal.prototype object\r\n P = {};\r\n\r\n\r\n // Decimal prototype methods\r\n\r\n\r\n /*\r\n * absoluteValue abs\r\n * comparedTo cmp\r\n * decimalPlaces dp\r\n * dividedBy div\r\n * dividedToIntegerBy idiv\r\n * equals eq\r\n * exponent\r\n * greaterThan gt\r\n * greaterThanOrEqualTo gte\r\n * isInteger isint\r\n * isNegative isneg\r\n * isPositive ispos\r\n * isZero\r\n * lessThan lt\r\n * lessThanOrEqualTo lte\r\n * logarithm log\r\n * minus sub\r\n * modulo mod\r\n * naturalExponential exp\r\n * naturalLogarithm ln\r\n * negated neg\r\n * plus add\r\n * precision sd\r\n * squareRoot sqrt\r\n * times mul\r\n * toDecimalPlaces todp\r\n * toExponential\r\n * toFixed\r\n * toInteger toint\r\n * toNumber\r\n * toPower pow\r\n * toPrecision\r\n * toSignificantDigits tosd\r\n * toString\r\n * valueOf val\r\n */\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the absolute value of this Decimal.\r\n *\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new this.constructor(this);\r\n if (x.s) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this Decimal is greater than the value of `y`,\r\n * -1 if the value of this Decimal is less than the value of `y`,\r\n * 0 if they have the same value\r\n *\r\n */\r\n P.comparedTo = P.cmp = function (y) {\r\n var i, j, xdL, ydL,\r\n x = this;\r\n\r\n y = new x.constructor(y);\r\n\r\n // Signs differ?\r\n if (x.s !== y.s) return x.s || -y.s;\r\n\r\n // Compare exponents.\r\n if (x.e !== y.e) return x.e > y.e ^ x.s < 0 ? 1 : -1;\r\n\r\n xdL = x.d.length;\r\n ydL = y.d.length;\r\n\r\n // Compare digit by digit.\r\n for (i = 0, j = xdL < ydL ? xdL : ydL; i < j; ++i) {\r\n if (x.d[i] !== y.d[i]) return x.d[i] > y.d[i] ^ x.s < 0 ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return xdL === ydL ? 0 : xdL > ydL ^ x.s < 0 ? 1 : -1;\r\n };\r\n\r\n\r\n /*\r\n * Return the number of decimal places of the value of this Decimal.\r\n *\r\n */\r\n P.decimalPlaces = P.dp = function () {\r\n var x = this,\r\n w = x.d.length - 1,\r\n dp = (w - x.e) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n w = x.d[w];\r\n if (w) for (; w % 10 == 0; w /= 10) dp--;\r\n\r\n return dp < 0 ? 0 : dp;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal divided by `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.dividedBy = P.div = function (y) {\r\n return divide(this, new this.constructor(y));\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the integer part of dividing the value of this Decimal\r\n * by the value of `y`, truncated to `precision` significant digits.\r\n *\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n return round(divide(x, new Ctor(y), 0, 1), Ctor.precision);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is equal to the value of `y`, otherwise return false.\r\n *\r\n */\r\n P.equals = P.eq = function (y) {\r\n return !this.cmp(y);\r\n };\r\n\r\n\r\n /*\r\n * Return the (base 10) exponent value of this Decimal (this.e is the base 10000000 exponent).\r\n *\r\n */\r\n P.exponent = function () {\r\n return getBase10Exponent(this);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is greater than the value of `y`, otherwise return\r\n * false.\r\n *\r\n */\r\n P.greaterThan = P.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is greater than or equal to the value of `y`,\r\n * otherwise return false.\r\n *\r\n */\r\n P.greaterThanOrEqualTo = P.gte = function (y) {\r\n return this.cmp(y) >= 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is an integer, otherwise return false.\r\n *\r\n */\r\n P.isInteger = P.isint = function () {\r\n return this.e > this.d.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is negative, otherwise return false.\r\n *\r\n */\r\n P.isNegative = P.isneg = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is positive, otherwise return false.\r\n *\r\n */\r\n P.isPositive = P.ispos = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is 0, otherwise return false.\r\n *\r\n */\r\n P.isZero = function () {\r\n return this.s === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is less than `y`, otherwise return false.\r\n *\r\n */\r\n P.lessThan = P.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is less than or equal to `y`, otherwise return false.\r\n *\r\n */\r\n P.lessThanOrEqualTo = P.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n };\r\n\r\n\r\n /*\r\n * Return the logarithm of the value of this Decimal to the specified base, truncated to\r\n * `precision` significant digits.\r\n *\r\n * If no base is specified, return log[10](x).\r\n *\r\n * log[base](x) = ln(x) / ln(base)\r\n *\r\n * The maximum error of the result is 1 ulp (unit in the last place).\r\n *\r\n * [base] {number|string|Decimal} The base of the logarithm.\r\n *\r\n */\r\n P.logarithm = P.log = function (base) {\r\n var r,\r\n x = this,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision,\r\n wpr = pr + 5;\r\n\r\n // Default base is 10.\r\n if (base === void 0) {\r\n base = new Ctor(10);\r\n } else {\r\n base = new Ctor(base);\r\n\r\n // log[-b](x) = NaN\r\n // log[0](x) = NaN\r\n // log[1](x) = NaN\r\n if (base.s < 1 || base.eq(ONE)) throw Error(decimalError + 'NaN');\r\n }\r\n\r\n // log[b](-x) = NaN\r\n // log[b](0) = -Infinity\r\n if (x.s < 1) throw Error(decimalError + (x.s ? 'NaN' : '-Infinity'));\r\n\r\n // log[b](1) = 0\r\n if (x.eq(ONE)) return new Ctor(0);\r\n\r\n external = false;\r\n r = divide(ln(x, wpr), ln(base, wpr), wpr);\r\n external = true;\r\n\r\n return round(r, pr);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal minus `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.minus = P.sub = function (y) {\r\n var x = this;\r\n y = new x.constructor(y);\r\n return x.s == y.s ? subtract(x, y) : add(x, (y.s = -y.s, y));\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal modulo `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.modulo = P.mod = function (y) {\r\n var q,\r\n x = this,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n y = new Ctor(y);\r\n\r\n // x % 0 = NaN\r\n if (!y.s) throw Error(decimalError + 'NaN');\r\n\r\n // Return x if x is 0.\r\n if (!x.s) return round(new Ctor(x), pr);\r\n\r\n // Prevent rounding of intermediate calculations.\r\n external = false;\r\n q = divide(x, y, 0, 1).times(y);\r\n external = true;\r\n\r\n return x.minus(q);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural exponential of the value of this Decimal,\r\n * i.e. the base e raised to the power the value of this Decimal, truncated to `precision`\r\n * significant digits.\r\n *\r\n */\r\n P.naturalExponential = P.exp = function () {\r\n return exp(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural logarithm of the value of this Decimal,\r\n * truncated to `precision` significant digits.\r\n *\r\n */\r\n P.naturalLogarithm = P.ln = function () {\r\n return ln(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal negated, i.e. as if multiplied by\r\n * -1.\r\n *\r\n */\r\n P.negated = P.neg = function () {\r\n var x = new this.constructor(this);\r\n x.s = -x.s || 0;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal plus `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.plus = P.add = function (y) {\r\n var x = this;\r\n y = new x.constructor(y);\r\n return x.s == y.s ? add(x, y) : subtract(x, (y.s = -y.s, y));\r\n };\r\n\r\n\r\n /*\r\n * Return the number of significant digits of the value of this Decimal.\r\n *\r\n * [z] {boolean|number} Whether to count integer-part trailing zeros: true, false, 1 or 0.\r\n *\r\n */\r\n P.precision = P.sd = function (z) {\r\n var e, sd, w,\r\n x = this;\r\n\r\n if (z !== void 0 && z !== !!z && z !== 1 && z !== 0) throw Error(invalidArgument + z);\r\n\r\n e = getBase10Exponent(x) + 1;\r\n w = x.d.length - 1;\r\n sd = w * LOG_BASE + 1;\r\n w = x.d[w];\r\n\r\n // If non-zero...\r\n if (w) {\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n for (; w % 10 == 0; w /= 10) sd--;\r\n\r\n // Add the number of digits of the first word.\r\n for (w = x.d[0]; w >= 10; w /= 10) sd++;\r\n }\r\n\r\n return z && e > sd ? e : sd;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the square root of this Decimal, truncated to `precision`\r\n * significant digits.\r\n *\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var e, n, pr, r, s, t, wpr,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n // Negative or zero?\r\n if (x.s < 1) {\r\n if (!x.s) return new Ctor(0);\r\n\r\n // sqrt(-x) = NaN\r\n throw Error(decimalError + 'NaN');\r\n }\r\n\r\n e = getBase10Exponent(x);\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+x);\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = digitsToString(x.d);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(n);\r\n e = mathfloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n pr = Ctor.precision;\r\n s = wpr = pr + 3;\r\n\r\n // Newton-Raphson iteration.\r\n for (;;) {\r\n t = r;\r\n r = t.plus(divide(x, t, wpr + 2)).times(0.5);\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === (n = digitsToString(r.d)).slice(0, wpr)) {\r\n n = n.slice(wpr - 3, wpr + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or\r\n // 4999, i.e. approaching a rounding boundary, continue the iteration.\r\n if (s == wpr && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n round(t, pr + 1, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n } else if (n != '9999') {\r\n break;\r\n }\r\n\r\n wpr += 4;\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return round(r, pr);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal times `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.times = P.mul = function (y) {\r\n var carry, e, i, k, r, rL, t, xdL, ydL,\r\n x = this,\r\n Ctor = x.constructor,\r\n xd = x.d,\r\n yd = (y = new Ctor(y)).d;\r\n\r\n // Return 0 if either is 0.\r\n if (!x.s || !y.s) return new Ctor(0);\r\n\r\n y.s *= x.s;\r\n e = x.e + y.e;\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Ensure xd points to the longer array.\r\n if (xdL < ydL) {\r\n r = xd;\r\n xd = yd;\r\n yd = r;\r\n rL = xdL;\r\n xdL = ydL;\r\n ydL = rL;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n r = [];\r\n rL = xdL + ydL;\r\n for (i = rL; i--;) r.push(0);\r\n\r\n // Multiply!\r\n for (i = ydL; --i >= 0;) {\r\n carry = 0;\r\n for (k = xdL + i; k > i;) {\r\n t = r[k] + yd[i] * xd[k - i - 1] + carry;\r\n r[k--] = t % BASE | 0;\r\n carry = t / BASE | 0;\r\n }\r\n\r\n r[k] = (r[k] + carry) % BASE | 0;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; !r[--rL];) r.pop();\r\n\r\n if (carry) ++e;\r\n else r.shift();\r\n\r\n y.d = r;\r\n y.e = e;\r\n\r\n return external ? round(y, Ctor.precision) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `dp`\r\n * decimal places using rounding mode `rm` or `rounding` if `rm` is omitted.\r\n *\r\n * If `dp` is omitted, return a new Decimal whose value is the value of this Decimal.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toDecimalPlaces = P.todp = function (dp, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n if (dp === void 0) return x;\r\n\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n return round(x, dp + getBase10Exponent(x) + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal in exponential notation rounded to\r\n * `dp` fixed decimal places using rounding mode `rounding`.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toExponential = function (dp, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = toString(x, true);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = round(new Ctor(x), dp + 1, rm);\r\n str = toString(x, true, dp + 1);\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal in normal (fixed-point) notation to\r\n * `dp` fixed decimal places and rounded using rounding mode `rm` or `rounding` if `rm` is\r\n * omitted.\r\n *\r\n * As with JavaScript numbers, (-0).toFixed(0) is '0', but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n * (-0).toFixed(3) is '0.000'.\r\n * (-0.5).toFixed(0) is '-0'.\r\n *\r\n */\r\n P.toFixed = function (dp, rm) {\r\n var str, y,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) return toString(x);\r\n\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n y = round(new Ctor(x), dp + getBase10Exponent(x) + 1, rm);\r\n str = toString(y.abs(), false, dp + getBase10Exponent(y) + 1);\r\n\r\n // To determine whether to add the minus sign look at the value before it was rounded,\r\n // i.e. look at `x` rather than `y`.\r\n return x.isneg() && !x.isZero() ? '-' + str : str;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number using\r\n * rounding mode `rounding`.\r\n *\r\n */\r\n P.toInteger = P.toint = function () {\r\n var x = this,\r\n Ctor = x.constructor;\r\n return round(new Ctor(x), getBase10Exponent(x) + 1, Ctor.rounding);\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this Decimal converted to a number primitive.\r\n *\r\n */\r\n P.toNumber = function () {\r\n return +this;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal raised to the power `y`,\r\n * truncated to `precision` significant digits.\r\n *\r\n * For non-integer or very large exponents pow(x, y) is calculated using\r\n *\r\n * x^y = exp(y*ln(x))\r\n *\r\n * The maximum error is 1 ulp (unit in last place).\r\n *\r\n * y {number|string|Decimal} The power to which to raise this Decimal.\r\n *\r\n */\r\n P.toPower = P.pow = function (y) {\r\n var e, k, pr, r, sign, yIsInt,\r\n x = this,\r\n Ctor = x.constructor,\r\n guard = 12,\r\n yn = +(y = new Ctor(y));\r\n\r\n // pow(x, 0) = 1\r\n if (!y.s) return new Ctor(ONE);\r\n\r\n x = new Ctor(x);\r\n\r\n // pow(0, y > 0) = 0\r\n // pow(0, y < 0) = Infinity\r\n if (!x.s) {\r\n if (y.s < 1) throw Error(decimalError + 'Infinity');\r\n return x;\r\n }\r\n\r\n // pow(1, y) = 1\r\n if (x.eq(ONE)) return x;\r\n\r\n pr = Ctor.precision;\r\n\r\n // pow(x, 1) = x\r\n if (y.eq(ONE)) return round(x, pr);\r\n\r\n e = y.e;\r\n k = y.d.length - 1;\r\n yIsInt = e >= k;\r\n sign = x.s;\r\n\r\n if (!yIsInt) {\r\n\r\n // pow(x < 0, y non-integer) = NaN\r\n if (sign < 0) throw Error(decimalError + 'NaN');\r\n\r\n // If y is a small integer use the 'exponentiation by squaring' algorithm.\r\n } else if ((k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) {\r\n r = new Ctor(ONE);\r\n\r\n // Max k of 9007199254740991 takes 53 loop iterations.\r\n // Maximum digits array length; leaves [28, 34] guard digits.\r\n e = Math.ceil(pr / LOG_BASE + 4);\r\n\r\n external = false;\r\n\r\n for (;;) {\r\n if (k % 2) {\r\n r = r.times(x);\r\n truncate(r.d, e);\r\n }\r\n\r\n k = mathfloor(k / 2);\r\n if (k === 0) break;\r\n\r\n x = x.times(x);\r\n truncate(x.d, e);\r\n }\r\n\r\n external = true;\r\n\r\n return y.s < 0 ? new Ctor(ONE).div(r) : round(r, pr);\r\n }\r\n\r\n // Result is negative if x is negative and the last digit of integer y is odd.\r\n sign = sign < 0 && y.d[Math.max(e, k)] & 1 ? -1 : 1;\r\n\r\n x.s = 1;\r\n external = false;\r\n r = y.times(ln(x, pr + guard));\r\n external = true;\r\n r = exp(r);\r\n r.s = sign;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal rounded to `sd` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * Return exponential notation if `sd` is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n var e, str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n e = getBase10Exponent(x);\r\n str = toString(x, e <= Ctor.toExpNeg || e >= Ctor.toExpPos);\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = round(new Ctor(x), sd, rm);\r\n e = getBase10Exponent(x);\r\n str = toString(x, sd <= e || e <= Ctor.toExpNeg, sd);\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `sd`\r\n * significant digits using rounding mode `rm`, or to `precision` and `rounding` respectively if\r\n * omitted.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toSignificantDigits = P.tosd = function (sd, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n }\r\n\r\n return round(new Ctor(x), sd, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal.\r\n *\r\n * Return exponential notation if this Decimal has a positive exponent equal to or greater than\r\n * `toExpPos`, or a negative exponent equal to or less than `toExpNeg`.\r\n *\r\n */\r\n P.toString = P.valueOf = P.val = P.toJSON = function () {\r\n var x = this,\r\n e = getBase10Exponent(x),\r\n Ctor = x.constructor;\r\n\r\n return toString(x, e <= Ctor.toExpNeg || e >= Ctor.toExpPos);\r\n };\r\n\r\n\r\n // Helper functions for Decimal.prototype (P) and/or Decimal methods, and their callers.\r\n\r\n\r\n /*\r\n * add P.minus, P.plus\r\n * checkInt32 P.todp, P.toExponential, P.toFixed, P.toPrecision, P.tosd\r\n * digitsToString P.log, P.sqrt, P.pow, toString, exp, ln\r\n * divide P.div, P.idiv, P.log, P.mod, P.sqrt, exp, ln\r\n * exp P.exp, P.pow\r\n * getBase10Exponent P.exponent, P.sd, P.toint, P.sqrt, P.todp, P.toFixed, P.toPrecision,\r\n * P.toString, divide, round, toString, exp, ln\r\n * getLn10 P.log, ln\r\n * getZeroString digitsToString, toString\r\n * ln P.log, P.ln, P.pow, exp\r\n * parseDecimal Decimal\r\n * round P.abs, P.idiv, P.log, P.minus, P.mod, P.neg, P.plus, P.toint, P.sqrt,\r\n * P.times, P.todp, P.toExponential, P.toFixed, P.pow, P.toPrecision, P.tosd,\r\n * divide, getLn10, exp, ln\r\n * subtract P.minus, P.plus\r\n * toString P.toExponential, P.toFixed, P.toPrecision, P.toString, P.valueOf\r\n * truncate P.pow\r\n *\r\n * Throws: P.log, P.mod, P.sd, P.sqrt, P.pow, checkInt32, divide, round,\r\n * getLn10, exp, ln, parseDecimal, Decimal, config\r\n */\r\n\r\n\r\n function add(x, y) {\r\n var carry, d, e, i, k, len, xd, yd,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n // If either is zero...\r\n if (!x.s || !y.s) {\r\n\r\n // Return x if y is zero.\r\n // Return y if y is non-zero.\r\n if (!y.s) y = new Ctor(x);\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n k = x.e;\r\n e = y.e;\r\n xd = xd.slice();\r\n i = k - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (i) {\r\n if (i < 0) {\r\n d = xd;\r\n i = -i;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = k;\r\n len = xd.length;\r\n }\r\n\r\n // Limit number of zeros prepended to max(ceil(pr / LOG_BASE), len) + 1.\r\n k = Math.ceil(pr / LOG_BASE);\r\n len = k > len ? k + 1 : len + 1;\r\n\r\n if (i > len) {\r\n i = len;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents. Note: Faster to use reverse then do unshifts.\r\n d.reverse();\r\n for (; i--;) d.push(0);\r\n d.reverse();\r\n }\r\n\r\n len = xd.length;\r\n i = yd.length;\r\n\r\n // If yd is longer than xd, swap xd and yd so xd points to the longer array.\r\n if (len - i < 0) {\r\n i = len;\r\n d = yd;\r\n yd = xd;\r\n xd = d;\r\n }\r\n\r\n // Only start adding at yd.length - 1 as the further digits of xd can be left as they are.\r\n for (carry = 0; i;) {\r\n carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0;\r\n xd[i] %= BASE;\r\n }\r\n\r\n if (carry) {\r\n xd.unshift(carry);\r\n ++e;\r\n }\r\n\r\n // Remove trailing zeros.\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n for (len = xd.length; xd[--len] == 0;) xd.pop();\r\n\r\n y.d = xd;\r\n y.e = e;\r\n\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n\r\n function checkInt32(i, min, max) {\r\n if (i !== ~~i || i < min || i > max) {\r\n throw Error(invalidArgument + i);\r\n }\r\n }\r\n\r\n\r\n function digitsToString(d) {\r\n var i, k, ws,\r\n indexOfLastWord = d.length - 1,\r\n str = '',\r\n w = d[0];\r\n\r\n if (indexOfLastWord > 0) {\r\n str += w;\r\n for (i = 1; i < indexOfLastWord; i++) {\r\n ws = d[i] + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n str += ws;\r\n }\r\n\r\n w = d[i];\r\n ws = w + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n } else if (w === 0) {\r\n return '0';\r\n }\r\n\r\n // Remove trailing zeros of last w.\r\n for (; w % 10 === 0;) w /= 10;\r\n\r\n return str + w;\r\n }\r\n\r\n\r\n var divide = (function () {\r\n\r\n // Assumes non-zero x and k, and hence non-zero result.\r\n function multiplyInteger(x, k) {\r\n var temp,\r\n carry = 0,\r\n i = x.length;\r\n\r\n for (x = x.slice(); i--;) {\r\n temp = x[i] * k + carry;\r\n x[i] = temp % BASE | 0;\r\n carry = temp / BASE | 0;\r\n }\r\n\r\n if (carry) x.unshift(carry);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, r;\r\n\r\n if (aL != bL) {\r\n r = aL > bL ? 1 : -1;\r\n } else {\r\n for (i = r = 0; i < aL; i++) {\r\n if (a[i] != b[i]) {\r\n r = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return r;\r\n }\r\n\r\n function subtract(a, b, aL) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * BASE + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1;) a.shift();\r\n }\r\n\r\n return function (x, y, pr, dp) {\r\n var cmp, e, i, k, prod, prodL, q, qd, rem, remL, rem0, sd, t, xi, xL, yd0, yL, yz,\r\n Ctor = x.constructor,\r\n sign = x.s == y.s ? 1 : -1,\r\n xd = x.d,\r\n yd = y.d;\r\n\r\n // Either 0?\r\n if (!x.s) return new Ctor(x);\r\n if (!y.s) throw Error(decimalError + 'Division by zero');\r\n\r\n e = x.e - y.e;\r\n yL = yd.length;\r\n xL = xd.length;\r\n q = new Ctor(sign);\r\n qd = q.d = [];\r\n\r\n // Result exponent may be one less than e.\r\n for (i = 0; yd[i] == (xd[i] || 0); ) ++i;\r\n if (yd[i] > (xd[i] || 0)) --e;\r\n\r\n if (pr == null) {\r\n sd = pr = Ctor.precision;\r\n } else if (dp) {\r\n sd = pr + (getBase10Exponent(x) - getBase10Exponent(y)) + 1;\r\n } else {\r\n sd = pr;\r\n }\r\n\r\n if (sd < 0) return new Ctor(0);\r\n\r\n // Convert precision in number of base 10 digits to base 1e7 digits.\r\n sd = sd / LOG_BASE + 2 | 0;\r\n i = 0;\r\n\r\n // divisor < 1e7\r\n if (yL == 1) {\r\n k = 0;\r\n yd = yd[0];\r\n sd++;\r\n\r\n // k is the carry.\r\n for (; (i < xL || k) && sd--; i++) {\r\n t = k * BASE + (xd[i] || 0);\r\n qd[i] = t / yd | 0;\r\n k = t % yd | 0;\r\n }\r\n\r\n // divisor >= 1e7\r\n } else {\r\n\r\n // Normalise xd and yd so highest order digit of yd is >= BASE/2\r\n k = BASE / (yd[0] + 1) | 0;\r\n\r\n if (k > 1) {\r\n yd = multiplyInteger(yd, k);\r\n xd = multiplyInteger(xd, k);\r\n yL = yd.length;\r\n xL = xd.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xd.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL;) rem[remL++] = 0;\r\n\r\n yz = yd.slice();\r\n yz.unshift(0);\r\n yd0 = yd[0];\r\n\r\n if (yd[1] >= BASE / 2) ++yd0;\r\n\r\n do {\r\n k = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, k.\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * BASE + (rem[1] || 0);\r\n\r\n // k will be how many times the divisor goes into the current remainder.\r\n k = rem0 / yd0 | 0;\r\n\r\n // Algorithm:\r\n // 1. product = divisor * trial digit (k)\r\n // 2. if product > remainder: product -= divisor, k--\r\n // 3. remainder -= product\r\n // 4. if product was < remainder at 2:\r\n // 5. compare new remainder and divisor\r\n // 6. If remainder > divisor: remainder -= divisor, k++\r\n\r\n if (k > 1) {\r\n if (k >= BASE) k = BASE - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiplyInteger(yd, k);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n cmp = compare(prod, rem, prodL, remL);\r\n\r\n // product > remainder.\r\n if (cmp == 1) {\r\n k--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yd, prodL);\r\n }\r\n } else {\r\n\r\n // cmp is -1.\r\n // If k is 0, there is no need to compare yd and rem again below, so change cmp to 1\r\n // to avoid it. If k is 1 there is a need to compare yd and rem again below.\r\n if (k == 0) cmp = k = 1;\r\n prod = yd.slice();\r\n }\r\n\r\n prodL = prod.length;\r\n if (prodL < remL) prod.unshift(0);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL);\r\n\r\n // If product was < previous remainder.\r\n if (cmp == -1) {\r\n remL = rem.length;\r\n\r\n // Compare divisor and new remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n if (cmp < 1) {\r\n k++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yd, remL);\r\n }\r\n }\r\n\r\n remL = rem.length;\r\n } else if (cmp === 0) {\r\n k++;\r\n rem = [0];\r\n } // if cmp === 1, k will be 0\r\n\r\n // Add the next digit, k, to the result array.\r\n qd[i++] = k;\r\n\r\n // Update the remainder.\r\n if (cmp && rem[0]) {\r\n rem[remL++] = xd[xi] || 0;\r\n } else {\r\n rem = [xd[xi]];\r\n remL = 1;\r\n }\r\n\r\n } while ((xi++ < xL || rem[0] !== void 0) && sd--);\r\n }\r\n\r\n // Leading zero?\r\n if (!qd[0]) qd.shift();\r\n\r\n q.e = e;\r\n\r\n return round(q, dp ? pr + getBase10Exponent(q) + 1 : pr);\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural exponential of `x` truncated to `sd`\r\n * significant digits.\r\n *\r\n * Taylor/Maclaurin series.\r\n *\r\n * exp(x) = x^0/0! + x^1/1! + x^2/2! + x^3/3! + ...\r\n *\r\n * Argument reduction:\r\n * Repeat x = x / 32, k += 5, until |x| < 0.1\r\n * exp(x) = exp(x / 2^k)^(2^k)\r\n *\r\n * Previously, the argument was initially reduced by\r\n * exp(x) = exp(r) * 10^k where r = x - k * ln10, k = floor(x / ln10)\r\n * to first put r in the range [0, ln10], before dividing by 32 until |x| < 0.1, but this was\r\n * found to be slower than just dividing repeatedly by 32 as above.\r\n *\r\n * (Math object integer min/max: Math.exp(709) = 8.2e+307, Math.exp(-745) = 5e-324)\r\n *\r\n * exp(x) is non-terminating for any finite, non-zero x.\r\n *\r\n */\r\n function exp(x, sd) {\r\n var denominator, guard, pow, sum, t, wpr,\r\n i = 0,\r\n k = 0,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n if (getBase10Exponent(x) > 16) throw Error(exponentOutOfRange + getBase10Exponent(x));\r\n\r\n // exp(0) = 1\r\n if (!x.s) return new Ctor(ONE);\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n t = new Ctor(0.03125);\r\n\r\n while (x.abs().gte(0.1)) {\r\n x = x.times(t); // x = x / 2^5\r\n k += 5;\r\n }\r\n\r\n // Estimate the precision increase necessary to ensure the first 4 rounding digits are correct.\r\n guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0;\r\n wpr += guard;\r\n denominator = pow = sum = new Ctor(ONE);\r\n Ctor.precision = wpr;\r\n\r\n for (;;) {\r\n pow = round(pow.times(x), wpr);\r\n denominator = denominator.times(++i);\r\n t = sum.plus(divide(pow, denominator, wpr));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n while (k--) sum = round(sum.times(sum), wpr);\r\n Ctor.precision = pr;\r\n return sd == null ? (external = true, round(sum, pr)) : sum;\r\n }\r\n\r\n sum = t;\r\n }\r\n }\r\n\r\n\r\n // Calculate the base 10 exponent from the base 1e7 exponent.\r\n function getBase10Exponent(x) {\r\n var e = x.e * LOG_BASE,\r\n w = x.d[0];\r\n\r\n // Add the number of digits of the first word of the digits array.\r\n for (; w >= 10; w /= 10) e++;\r\n return e;\r\n }\r\n\r\n\r\n function getLn10(Ctor, sd, pr) {\r\n\r\n if (sd > Ctor.LN10.sd()) {\r\n\r\n\r\n // Reset global state in case the exception is caught.\r\n external = true;\r\n if (pr) Ctor.precision = pr;\r\n throw Error(decimalError + 'LN10 precision limit exceeded');\r\n }\r\n\r\n return round(new Ctor(Ctor.LN10), sd);\r\n }\r\n\r\n\r\n function getZeroString(k) {\r\n var zs = '';\r\n for (; k--;) zs += '0';\r\n return zs;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural logarithm of `x` truncated to `sd` significant\r\n * digits.\r\n *\r\n * ln(n) is non-terminating (n != 1)\r\n *\r\n */\r\n function ln(y, sd) {\r\n var c, c0, denominator, e, numerator, sum, t, wpr, x2,\r\n n = 1,\r\n guard = 10,\r\n x = y,\r\n xd = x.d,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n // ln(-x) = NaN\r\n // ln(0) = -Infinity\r\n if (x.s < 1) throw Error(decimalError + (x.s ? 'NaN' : '-Infinity'));\r\n\r\n // ln(1) = 0\r\n if (x.eq(ONE)) return new Ctor(0);\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n if (x.eq(10)) {\r\n if (sd == null) external = true;\r\n return getLn10(Ctor, wpr);\r\n }\r\n\r\n wpr += guard;\r\n Ctor.precision = wpr;\r\n c = digitsToString(xd);\r\n c0 = c.charAt(0);\r\n e = getBase10Exponent(x);\r\n\r\n if (Math.abs(e) < 1.5e15) {\r\n\r\n // Argument reduction.\r\n // The series converges faster the closer the argument is to 1, so using\r\n // ln(a^b) = b * ln(a), ln(a) = ln(a^b) / b\r\n // multiply the argument by itself until the leading digits of the significand are 7, 8, 9,\r\n // 10, 11, 12 or 13, recording the number of multiplications so the sum of the series can\r\n // later be divided by this number, then separate out the power of 10 using\r\n // ln(a*10^b) = ln(a) + b*ln(10).\r\n\r\n // max n is 21 (gives 0.9, 1.0 or 1.1) (9e15 / 21 = 4.2e14).\r\n //while (c0 < 9 && c0 != 1 || c0 == 1 && c.charAt(1) > 1) {\r\n // max n is 6 (gives 0.7 - 1.3)\r\n while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) {\r\n x = x.times(y);\r\n c = digitsToString(x.d);\r\n c0 = c.charAt(0);\r\n n++;\r\n }\r\n\r\n e = getBase10Exponent(x);\r\n\r\n if (c0 > 1) {\r\n x = new Ctor('0.' + c);\r\n e++;\r\n } else {\r\n x = new Ctor(c0 + '.' + c.slice(1));\r\n }\r\n } else {\r\n\r\n // The argument reduction method above may result in overflow if the argument y is a massive\r\n // number with exponent >= 1500000000000000 (9e15 / 6 = 1.5e15), so instead recall this\r\n // function using ln(x*10^e) = ln(x) + e*ln(10).\r\n t = getLn10(Ctor, wpr + 2, pr).times(e + '');\r\n x = ln(new Ctor(c0 + '.' + c.slice(1)), wpr - guard).plus(t);\r\n\r\n Ctor.precision = pr;\r\n return sd == null ? (external = true, round(x, pr)) : x;\r\n }\r\n\r\n // x is reduced to a value near 1.\r\n\r\n // Taylor series.\r\n // ln(y) = ln((1 + x)/(1 - x)) = 2(x + x^3/3 + x^5/5 + x^7/7 + ...)\r\n // where x = (y - 1)/(y + 1) (|x| < 1)\r\n sum = numerator = x = divide(x.minus(ONE), x.plus(ONE), wpr);\r\n x2 = round(x.times(x), wpr);\r\n denominator = 3;\r\n\r\n for (;;) {\r\n numerator = round(numerator.times(x2), wpr);\r\n t = sum.plus(divide(numerator, new Ctor(denominator), wpr));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n sum = sum.times(2);\r\n\r\n // Reverse the argument reduction.\r\n if (e !== 0) sum = sum.plus(getLn10(Ctor, wpr + 2, pr).times(e + ''));\r\n sum = divide(sum, new Ctor(n), wpr);\r\n\r\n Ctor.precision = pr;\r\n return sd == null ? (external = true, round(sum, pr)) : sum;\r\n }\r\n\r\n sum = t;\r\n denominator += 2;\r\n }\r\n }\r\n\r\n\r\n /*\r\n * Parse the value of a new Decimal `x` from string `str`.\r\n */\r\n function parseDecimal(x, str) {\r\n var e, i, len;\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48;) ++i;\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(len - 1) === 48;) --len;\r\n str = str.slice(i, len);\r\n\r\n if (str) {\r\n len -= i;\r\n e = e - i - 1;\r\n x.e = mathfloor(e / LOG_BASE);\r\n x.d = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first word of the digits array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE;\r\n\r\n if (i < len) {\r\n if (i) x.d.push(+str.slice(0, i));\r\n for (len -= LOG_BASE; i < len;) x.d.push(+str.slice(i, i += LOG_BASE));\r\n str = str.slice(i);\r\n i = LOG_BASE - str.length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--;) str += '0';\r\n x.d.push(+str);\r\n\r\n if (external && (x.e > MAX_E || x.e < -MAX_E)) throw Error(exponentOutOfRange + e);\r\n } else {\r\n\r\n // Zero.\r\n x.s = 0;\r\n x.e = 0;\r\n x.d = [0];\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Round `x` to `sd` significant digits, using rounding mode `rm` if present (truncate otherwise).\r\n */\r\n function round(x, sd, rm) {\r\n var i, j, k, n, rd, doRound, w, xdi,\r\n xd = x.d;\r\n\r\n // rd: the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // w: the word of xd which contains the rounding digit, a base 1e7 number.\r\n // xdi: the index of w within xd.\r\n // n: the number of digits of w.\r\n // i: what would be the index of rd within w if all the numbers were 7 digits long (i.e. if\r\n // they had leading zeros)\r\n // j: if > 0, the actual index of rd within w (if < 0, rd is a leading zero).\r\n\r\n // Get the length of the first word of the digits array xd.\r\n for (n = 1, k = xd[0]; k >= 10; k /= 10) n++;\r\n i = sd - n;\r\n\r\n // Is the rounding digit in the first word of xd?\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n w = xd[xdi = 0];\r\n } else {\r\n xdi = Math.ceil((i + 1) / LOG_BASE);\r\n k = xd.length;\r\n if (xdi >= k) return x;\r\n w = k = xd[xdi];\r\n\r\n // Get the number of digits of w.\r\n for (n = 1; k >= 10; k /= 10) n++;\r\n\r\n // Get the index of rd within w.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within w, adjusted for leading zeros.\r\n // The number of leading zeros of w is given by LOG_BASE - n.\r\n j = i - LOG_BASE + n;\r\n }\r\n\r\n if (rm !== void 0) {\r\n k = mathpow(10, n - j - 1);\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = w / k % 10 | 0;\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n doRound = sd < 0 || xd[xdi + 1] !== void 0 || w % k;\r\n\r\n // The expression `w % mathpow(10, n - j - 1)` returns all the digits of w to the right of the\r\n // digit at (left-to-right) index j, e.g. if w is 908714 and j is 2, the expression will give\r\n // 714.\r\n\r\n doRound = rm < 4\r\n ? (rd || doRound) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || doRound || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? w / mathpow(10, n - j) : 0 : xd[xdi - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n }\r\n\r\n if (sd < 1 || !xd[0]) {\r\n if (doRound) {\r\n k = getBase10Exponent(x);\r\n xd.length = 1;\r\n\r\n // Convert sd to decimal places.\r\n sd = sd - k - 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE);\r\n x.e = mathfloor(-sd / LOG_BASE) || 0;\r\n } else {\r\n xd.length = 1;\r\n\r\n // Zero.\r\n xd[0] = x.e = x.s = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xd.length = xdi;\r\n k = 1;\r\n xdi--;\r\n } else {\r\n xd.length = xdi + 1;\r\n k = mathpow(10, LOG_BASE - i);\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of w.\r\n xd[xdi] = j > 0 ? (w / mathpow(10, n - j) % mathpow(10, j) | 0) * k : 0;\r\n }\r\n\r\n if (doRound) {\r\n for (;;) {\r\n\r\n // Is the digit to be rounded up in the first word of xd?\r\n if (xdi == 0) {\r\n if ((xd[0] += k) == BASE) {\r\n xd[0] = 1;\r\n ++x.e;\r\n }\r\n\r\n break;\r\n } else {\r\n xd[xdi] += k;\r\n if (xd[xdi] != BASE) break;\r\n xd[xdi--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xd.length; xd[--i] === 0;) xd.pop();\r\n\r\n if (external && (x.e > MAX_E || x.e < -MAX_E)) {\r\n throw Error(exponentOutOfRange + getBase10Exponent(x));\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function subtract(x, y) {\r\n var d, e, i, j, k, len, xd, xe, xLTy, yd,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n // Return y negated if x is zero.\r\n // Return x if y is zero and x is non-zero.\r\n if (!x.s || !y.s) {\r\n if (y.s) y.s = -y.s;\r\n else y = new Ctor(x);\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n\r\n // x and y are non-zero numbers with the same sign.\r\n\r\n e = y.e;\r\n xe = x.e;\r\n xd = xd.slice();\r\n k = xe - e;\r\n\r\n // If exponents differ...\r\n if (k) {\r\n xLTy = k < 0;\r\n\r\n if (xLTy) {\r\n d = xd;\r\n k = -k;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = xe;\r\n len = xd.length;\r\n }\r\n\r\n // Numbers with massively different exponents would result in a very high number of zeros\r\n // needing to be prepended, but this can be avoided while still ensuring correct rounding by\r\n // limiting the number of zeros to `Math.ceil(pr / LOG_BASE) + 2`.\r\n i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2;\r\n\r\n if (k > i) {\r\n k = i;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents.\r\n d.reverse();\r\n for (i = k; i--;) d.push(0);\r\n d.reverse();\r\n\r\n // Base 1e7 exponents equal.\r\n } else {\r\n\r\n // Check digits to determine which is the bigger number.\r\n\r\n i = xd.length;\r\n len = yd.length;\r\n xLTy = i < len;\r\n if (xLTy) len = i;\r\n\r\n for (i = 0; i < len; i++) {\r\n if (xd[i] != yd[i]) {\r\n xLTy = xd[i] < yd[i];\r\n break;\r\n }\r\n }\r\n\r\n k = 0;\r\n }\r\n\r\n if (xLTy) {\r\n d = xd;\r\n xd = yd;\r\n yd = d;\r\n y.s = -y.s;\r\n }\r\n\r\n len = xd.length;\r\n\r\n // Append zeros to xd if shorter.\r\n // Don't add zeros to yd if shorter as subtraction only needs to start at yd length.\r\n for (i = yd.length - len; i > 0; --i) xd[len++] = 0;\r\n\r\n // Subtract yd from xd.\r\n for (i = yd.length; i > k;) {\r\n if (xd[--i] < yd[i]) {\r\n for (j = i; j && xd[--j] === 0;) xd[j] = BASE - 1;\r\n --xd[j];\r\n xd[i] += BASE;\r\n }\r\n\r\n xd[i] -= yd[i];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] === 0;) xd.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xd[0] === 0; xd.shift()) --e;\r\n\r\n // Zero?\r\n if (!xd[0]) return new Ctor(0);\r\n\r\n y.d = xd;\r\n y.e = e;\r\n\r\n //return external && xd.length >= pr / LOG_BASE ? round(y, pr) : y;\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n\r\n function toString(x, isExp, sd) {\r\n var k,\r\n e = getBase10Exponent(x),\r\n str = digitsToString(x.d),\r\n len = str.length;\r\n\r\n if (isExp) {\r\n if (sd && (k = sd - len) > 0) {\r\n str = str.charAt(0) + '.' + str.slice(1) + getZeroString(k);\r\n } else if (len > 1) {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n\r\n str = str + (e < 0 ? 'e' : 'e+') + e;\r\n } else if (e < 0) {\r\n str = '0.' + getZeroString(-e - 1) + str;\r\n if (sd && (k = sd - len) > 0) str += getZeroString(k);\r\n } else if (e >= len) {\r\n str += getZeroString(e + 1 - len);\r\n if (sd && (k = sd - e - 1) > 0) str = str + '.' + getZeroString(k);\r\n } else {\r\n if ((k = e + 1) < len) str = str.slice(0, k) + '.' + str.slice(k);\r\n if (sd && (k = sd - len) > 0) {\r\n if (e + 1 === len) str += '.';\r\n str += getZeroString(k);\r\n }\r\n }\r\n\r\n return x.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Does not strip trailing zeros.\r\n function truncate(arr, len) {\r\n if (arr.length > len) {\r\n arr.length = len;\r\n return true;\r\n }\r\n }\r\n\r\n\r\n // Decimal methods\r\n\r\n\r\n /*\r\n * clone\r\n * config/set\r\n */\r\n\r\n\r\n /*\r\n * Create and return a Decimal constructor with the same configuration properties as this Decimal\r\n * constructor.\r\n *\r\n */\r\n function clone(obj) {\r\n var i, p, ps;\r\n\r\n /*\r\n * The Decimal constructor and exported function.\r\n * Return a new Decimal instance.\r\n *\r\n * value {number|string|Decimal} A numeric value.\r\n *\r\n */\r\n function Decimal(value) {\r\n var x = this;\r\n\r\n // Decimal called without new.\r\n if (!(x instanceof Decimal)) return new Decimal(value);\r\n\r\n // Retain a reference to this Decimal constructor, and shadow Decimal.prototype.constructor\r\n // which points to Object.\r\n x.constructor = Decimal;\r\n\r\n // Duplicate.\r\n if (value instanceof Decimal) {\r\n x.s = value.s;\r\n x.e = value.e;\r\n x.d = (value = value.d) ? value.slice() : value;\r\n return;\r\n }\r\n\r\n if (typeof value === 'number') {\r\n\r\n // Reject Infinity/NaN.\r\n if (value * 0 !== 0) {\r\n throw Error(invalidArgument + value);\r\n }\r\n\r\n if (value > 0) {\r\n x.s = 1;\r\n } else if (value < 0) {\r\n value = -value;\r\n x.s = -1;\r\n } else {\r\n x.s = 0;\r\n x.e = 0;\r\n x.d = [0];\r\n return;\r\n }\r\n\r\n // Fast path for small integers.\r\n if (value === ~~value && value < 1e7) {\r\n x.e = 0;\r\n x.d = [value];\r\n return;\r\n }\r\n\r\n return parseDecimal(x, value.toString());\r\n } else if (typeof value !== 'string') {\r\n throw Error(invalidArgument + value);\r\n }\r\n\r\n // Minus sign?\r\n if (value.charCodeAt(0) === 45) {\r\n value = value.slice(1);\r\n x.s = -1;\r\n } else {\r\n x.s = 1;\r\n }\r\n\r\n if (isDecimal.test(value)) parseDecimal(x, value);\r\n else throw Error(invalidArgument + value);\r\n }\r\n\r\n Decimal.prototype = P;\r\n\r\n Decimal.ROUND_UP = 0;\r\n Decimal.ROUND_DOWN = 1;\r\n Decimal.ROUND_CEIL = 2;\r\n Decimal.ROUND_FLOOR = 3;\r\n Decimal.ROUND_HALF_UP = 4;\r\n Decimal.ROUND_HALF_DOWN = 5;\r\n Decimal.ROUND_HALF_EVEN = 6;\r\n Decimal.ROUND_HALF_CEIL = 7;\r\n Decimal.ROUND_HALF_FLOOR = 8;\r\n\r\n Decimal.clone = clone;\r\n Decimal.config = Decimal.set = config;\r\n\r\n if (obj === void 0) obj = {};\r\n if (obj) {\r\n ps = ['precision', 'rounding', 'toExpNeg', 'toExpPos', 'LN10'];\r\n for (i = 0; i < ps.length;) if (!obj.hasOwnProperty(p = ps[i++])) obj[p] = this[p];\r\n }\r\n\r\n Decimal.config(obj);\r\n\r\n return Decimal;\r\n }\r\n\r\n\r\n /*\r\n * Configure global settings for a Decimal constructor.\r\n *\r\n * `obj` is an object with one or more of the following properties,\r\n *\r\n * precision {number}\r\n * rounding {number}\r\n * toExpNeg {number}\r\n * toExpPos {number}\r\n *\r\n * E.g. Decimal.config({ precision: 20, rounding: 4 })\r\n *\r\n */\r\n function config(obj) {\r\n if (!obj || typeof obj !== 'object') {\r\n throw Error(decimalError + 'Object expected');\r\n }\r\n var i, p, v,\r\n ps = [\r\n 'precision', 1, MAX_DIGITS,\r\n 'rounding', 0, 8,\r\n 'toExpNeg', -1 / 0, 0,\r\n 'toExpPos', 0, 1 / 0\r\n ];\r\n\r\n for (i = 0; i < ps.length; i += 3) {\r\n if ((v = obj[p = ps[i]]) !== void 0) {\r\n if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2]) this[p] = v;\r\n else throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n if ((v = obj[p = 'LN10']) !== void 0) {\r\n if (v == Math.LN10) this[p] = new this(v);\r\n else throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n\r\n // Create and configure initial Decimal constructor.\r\n Decimal = clone(Decimal);\r\n\r\n Decimal['default'] = Decimal.Decimal = Decimal;\r\n\r\n // Internal constant.\r\n ONE = new Decimal(1);\r\n\r\n\r\n // Export.\r\n\r\n\r\n // AMD.\r\n if (typeof define == 'function' && define.amd) {\r\n define(function () {\r\n return Decimal;\r\n });\r\n\r\n // Node and other environments that support module.exports.\r\n } else if (typeof module != 'undefined' && module.exports) {\r\n module.exports = Decimal;\r\n\r\n // Browser.\r\n } else {\r\n if (!globalScope) {\r\n globalScope = typeof self != 'undefined' && self && self.self == self\r\n ? self : Function('return this')();\r\n }\r\n\r\n globalScope.Decimal = Decimal;\r\n }\r\n})(this);\r\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","const HAS_WEAKSET_SUPPORT = typeof WeakSet === 'function';\n\nconst { keys } = Object;\n\ntype Cache = {\n add: (value: any) => void;\n has: (value: any) => boolean;\n};\n\nexport type EqualityComparator = (a: any, b: any, meta?: any) => boolean;\n\n/**\n * are the values passed strictly equal or both NaN\n *\n * @param a the value to compare against\n * @param b the value to test\n * @returns are the values equal by the SameValueZero principle\n */\nexport function sameValueZeroEqual(a: any, b: any) {\n return a === b || (a !== a && b !== b);\n}\n\n/**\n * is the value a plain object\n *\n * @param value the value to test\n * @returns is the value a plain object\n */\nexport function isPlainObject(value: any) {\n return value.constructor === Object || value.constructor == null;\n}\n\n/**\n * is the value promise-like (meaning it is thenable)\n *\n * @param value the value to test\n * @returns is the value promise-like\n */\nexport function isPromiseLike(value: any) {\n return !!value && typeof value.then === 'function';\n}\n\n/**\n * is the value passed a react element\n *\n * @param value the value to test\n * @returns is the value a react element\n */\nexport function isReactElement(value: any) {\n return !!(value && value.$$typeof);\n}\n\n/**\n * in cases where WeakSet is not supported, creates a new custom\n * object that mimics the necessary API aspects for cache purposes\n *\n * @returns the new cache object\n */\nexport function getNewCacheFallback(): Cache {\n const values: any[] = [];\n\n return {\n add(value: any) {\n values.push(value);\n },\n\n has(value: any) {\n return values.indexOf(value) !== -1;\n },\n };\n}\n\n/**\n * get a new cache object to prevent circular references\n *\n * @returns the new cache object\n */\nexport const getNewCache = ((canUseWeakMap: boolean) => {\n if (canUseWeakMap) {\n return function _getNewCache(): Cache {\n return new WeakSet();\n };\n }\n\n return getNewCacheFallback;\n})(HAS_WEAKSET_SUPPORT);\n\n/**\n * create a custom isEqual handler specific to circular objects\n *\n * @param [isEqual] the isEqual comparator to use instead of isDeepEqual\n * @returns the method to create the `isEqual` function\n */\nexport function createCircularEqualCreator(isEqual?: EqualityComparator) {\n return function createCircularEqual(comparator: EqualityComparator) {\n const _comparator = isEqual || comparator;\n\n return function circularEqual(\n a: any,\n b: any,\n cache: Cache = getNewCache(),\n ) {\n const isCacheableA = !!a && typeof a === 'object';\n const isCacheableB = !!b && typeof b === 'object';\n\n if (isCacheableA || isCacheableB) {\n const hasA = isCacheableA && cache.has(a);\n const hasB = isCacheableB && cache.has(b);\n\n if (hasA || hasB) {\n return hasA && hasB;\n }\n\n if (isCacheableA) {\n cache.add(a);\n }\n\n if (isCacheableB) {\n cache.add(b);\n }\n }\n\n return _comparator(a, b, cache);\n };\n };\n}\n\n/**\n * are the arrays equal in value\n *\n * @param a the array to test\n * @param b the array to test against\n * @param isEqual the comparator to determine equality\n * @param meta the meta object to pass through\n * @returns are the arrays equal\n */\nexport function areArraysEqual(\n a: any[],\n b: any[],\n isEqual: EqualityComparator,\n meta: any,\n) {\n let index = a.length;\n\n if (b.length !== index) {\n return false;\n }\n\n while (index-- > 0) {\n if (!isEqual(a[index], b[index], meta)) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * are the maps equal in value\n *\n * @param a the map to test\n * @param b the map to test against\n * @param isEqual the comparator to determine equality\n * @param meta the meta map to pass through\n * @returns are the maps equal\n */\nexport function areMapsEqual(\n a: Map,\n b: Map,\n isEqual: EqualityComparator,\n meta: any,\n) {\n let isValueEqual = a.size === b.size;\n\n if (isValueEqual && a.size) {\n const matchedIndices: Record = {};\n\n a.forEach((aValue, aKey) => {\n if (isValueEqual) {\n let hasMatch = false;\n let matchIndex = 0;\n\n b.forEach((bValue, bKey) => {\n if (!hasMatch && !matchedIndices[matchIndex]) {\n hasMatch =\n isEqual(aKey, bKey, meta) && isEqual(aValue, bValue, meta);\n\n if (hasMatch) {\n matchedIndices[matchIndex] = true;\n }\n }\n\n matchIndex++;\n });\n\n isValueEqual = hasMatch;\n }\n });\n }\n\n return isValueEqual;\n}\n\ntype Dictionary = {\n [key: string]: Type;\n [index: number]: Type;\n};\n\nconst OWNER = '_owner';\n\nconst hasOwnProperty = Function.prototype.bind.call(\n Function.prototype.call,\n Object.prototype.hasOwnProperty,\n);\n\n/**\n * are the objects equal in value\n *\n * @param a the object to test\n * @param b the object to test against\n * @param isEqual the comparator to determine equality\n * @param meta the meta object to pass through\n * @returns are the objects equal\n */\nexport function areObjectsEqual(\n a: Dictionary,\n b: Dictionary,\n isEqual: EqualityComparator,\n meta: any,\n) {\n const keysA = keys(a);\n\n let index = keysA.length;\n\n if (keys(b).length !== index) {\n return false;\n }\n\n if (index) {\n let key: string;\n\n while (index-- > 0) {\n key = keysA[index];\n\n if (key === OWNER) {\n const reactElementA = isReactElement(a);\n const reactElementB = isReactElement(b);\n\n if (\n (reactElementA || reactElementB) &&\n reactElementA !== reactElementB\n ) {\n return false;\n }\n }\n\n if (!hasOwnProperty(b, key) || !isEqual(a[key], b[key], meta)) {\n return false;\n }\n }\n }\n\n return true;\n}\n\n/**\n * are the regExps equal in value\n *\n * @param a the regExp to test\n * @param b the regExp to test agains\n * @returns are the regExps equal\n */\nexport function areRegExpsEqual(a: RegExp, b: RegExp) {\n return (\n a.source === b.source &&\n a.global === b.global &&\n a.ignoreCase === b.ignoreCase &&\n a.multiline === b.multiline &&\n a.unicode === b.unicode &&\n a.sticky === b.sticky &&\n a.lastIndex === b.lastIndex\n );\n}\n\n/**\n * are the sets equal in value\n *\n * @param a the set to test\n * @param b the set to test against\n * @param isEqual the comparator to determine equality\n * @param meta the meta set to pass through\n * @returns are the sets equal\n */\nexport function areSetsEqual(\n a: Set,\n b: Set,\n isEqual: EqualityComparator,\n meta: any,\n) {\n let isValueEqual = a.size === b.size;\n\n if (isValueEqual && a.size) {\n const matchedIndices: Record = {};\n\n a.forEach((aValue) => {\n if (isValueEqual) {\n let hasMatch = false;\n let matchIndex = 0;\n\n b.forEach((bValue) => {\n if (!hasMatch && !matchedIndices[matchIndex]) {\n hasMatch = isEqual(aValue, bValue, meta);\n\n if (hasMatch) {\n matchedIndices[matchIndex] = true;\n }\n }\n\n matchIndex++;\n });\n\n isValueEqual = hasMatch;\n }\n });\n }\n\n return isValueEqual;\n}\n","import {\n EqualityComparator,\n areArraysEqual,\n areMapsEqual,\n areObjectsEqual,\n areRegExpsEqual,\n areSetsEqual,\n isPlainObject,\n isPromiseLike,\n sameValueZeroEqual,\n} from './utils';\n\nconst HAS_MAP_SUPPORT = typeof Map === 'function';\nconst HAS_SET_SUPPORT = typeof Set === 'function';\n\ntype EqualityComparatorCreator = (fn: EqualityComparator) => EqualityComparator;\n\nexport function createComparator(createIsEqual?: EqualityComparatorCreator) {\n const isEqual: EqualityComparator =\n /* eslint-disable no-use-before-define */\n typeof createIsEqual === 'function'\n ? createIsEqual(comparator)\n : comparator;\n /* eslint-enable */\n\n /**\n * compare the value of the two objects and return true if they are equivalent in values\n *\n * @param a the value to test against\n * @param b the value to test\n * @param [meta] an optional meta object that is passed through to all equality test calls\n * @returns are a and b equivalent in value\n */\n function comparator(a: any, b: any, meta?: any) {\n if (a === b) {\n return true;\n }\n\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n if (isPlainObject(a) && isPlainObject(b)) {\n return areObjectsEqual(a, b, isEqual, meta);\n }\n\n let aShape = Array.isArray(a);\n let bShape = Array.isArray(b);\n\n if (aShape || bShape) {\n return aShape === bShape && areArraysEqual(a, b, isEqual, meta);\n }\n\n aShape = a instanceof Date;\n bShape = b instanceof Date;\n\n if (aShape || bShape) {\n return (\n aShape === bShape && sameValueZeroEqual(a.getTime(), b.getTime())\n );\n }\n\n aShape = a instanceof RegExp;\n bShape = b instanceof RegExp;\n\n if (aShape || bShape) {\n return aShape === bShape && areRegExpsEqual(a, b);\n }\n\n if (isPromiseLike(a) || isPromiseLike(b)) {\n return a === b;\n }\n\n if (HAS_MAP_SUPPORT) {\n aShape = a instanceof Map;\n bShape = b instanceof Map;\n\n if (aShape || bShape) {\n return aShape === bShape && areMapsEqual(a, b, isEqual, meta);\n }\n }\n\n if (HAS_SET_SUPPORT) {\n aShape = a instanceof Set;\n bShape = b instanceof Set;\n\n if (aShape || bShape) {\n return aShape === bShape && areSetsEqual(a, b, isEqual, meta);\n }\n }\n\n return areObjectsEqual(a, b, isEqual, meta);\n }\n\n return a !== a && b !== b;\n }\n\n return comparator;\n}\n","import { createComparator } from './comparator';\nimport { createCircularEqualCreator, sameValueZeroEqual } from './utils';\n\nexport { createComparator as createCustomEqual, sameValueZeroEqual };\n\nexport const deepEqual = createComparator();\nexport const shallowEqual = createComparator(() => sameValueZeroEqual);\n\nexport const circularDeepEqual = createComparator(createCircularEqualCreator());\nexport const circularShallowEqual = createComparator(\n createCircularEqualCreator(sameValueZeroEqual),\n);\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n"],"sourceRoot":""}