diff --git a/HISTORY.md b/HISTORY.md index d45dae4f8..647cee35f 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,16 +1,16 @@ # History -## not yet released, version 3.18.0 +## 2017-12-16, version 3.18.0 - Implemented function `rationalize`. Thanks @paulobuchsbaum. - Upgraded dependencies: ``` - decimal.js 7.2.3 → 7.4.0 - fraction.js 4.0.2 → 4.0.3 + decimal.js 7.2.3 → 9.0.1 (no breaking changes affecting mathjs) + fraction.js 4.0.2 → 4.0.4 tiny-emitter 2.0.0 → 2.0.2 ``` -- Upgraded dev dependencies +- Upgraded dev dependencies. - Fixed #975: a wrong example in the docs of lusolve. - Fixed #983: `pickRandom` returning an array instead of single value when input was an array with just one value. Clarified docs. diff --git a/dist/math.js b/dist/math.js index 7e1d8dfff..fd2edb78f 100644 --- a/dist/math.js +++ b/dist/math.js @@ -6,8 +6,8 @@ * It features real and complex numbers, units, matrices, a large set of * mathematical functions, and a flexible expression parser. * - * @version 3.17.0 - * @date 2017-11-18 + * @version 3.18.0 + * @date 2017-12-16 * * @license * Copyright (C) 2013-2017 Jos de Jong @@ -34,7 +34,7 @@ exports["math"] = factory(); else root["math"] = factory(); -})(this, function() { +})(typeof self !== 'undefined' ? self : this, function() { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; @@ -97,7 +97,7 @@ return /******/ (function(modules) { // webpackBootstrap /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 148); +/******/ return __webpack_require__(__webpack_require__.s = 151); /******/ }) /************************************************************************/ /******/ ([ @@ -237,10 +237,10 @@ module.exports = function deepMap(array, callback, skipZeros) { var number = __webpack_require__(3); var string = __webpack_require__(9); var object = __webpack_require__(5); -var types = __webpack_require__(59); +var types = __webpack_require__(60); var DimensionError = __webpack_require__(10); -var IndexError = __webpack_require__(51); +var IndexError = __webpack_require__(52); /** * Calculate the size of a multi dimensional array. @@ -1938,7 +1938,7 @@ exports.factory = factory; var formatNumber = __webpack_require__(3).format; -var formatBigNumber = __webpack_require__(165).format; +var formatBigNumber = __webpack_require__(168).format; var isBigNumber = __webpack_require__(71); /** @@ -2197,7 +2197,7 @@ module.exports = DimensionError; var nearlyEqual = __webpack_require__(3).nearlyEqual; -var bigNearlyEqual = __webpack_require__(35); +var bigNearlyEqual = __webpack_require__(36); function factory (type, config, load, typed) { @@ -4180,7 +4180,7 @@ function factory (type, config, load, typed) { var algorithm01 = load(__webpack_require__(33)); var algorithm04 = load(__webpack_require__(73)); - var algorithm10 = load(__webpack_require__(36)); + var algorithm10 = load(__webpack_require__(37)); var algorithm13 = load(__webpack_require__(8)); var algorithm14 = load(__webpack_require__(6)); @@ -4472,12 +4472,12 @@ function factory (type, config, load, typed) { var matrix = load(__webpack_require__(0)); var addScalar = load(__webpack_require__(20)); - var unaryMinus = load(__webpack_require__(37)); + var unaryMinus = load(__webpack_require__(38)); var algorithm01 = load(__webpack_require__(33)); var algorithm03 = load(__webpack_require__(15)); - var algorithm05 = load(__webpack_require__(60)); - var algorithm10 = load(__webpack_require__(36)); + var algorithm05 = load(__webpack_require__(61)); + var algorithm10 = load(__webpack_require__(37)); var algorithm13 = load(__webpack_require__(8)); var algorithm14 = load(__webpack_require__(6)); @@ -5102,13 +5102,13 @@ exports.factory = factory; exports.array = __webpack_require__(2); -exports['boolean'] = __webpack_require__(174); +exports['boolean'] = __webpack_require__(177); exports['function'] = __webpack_require__(32); exports.number = __webpack_require__(3); exports.object = __webpack_require__(5); exports.string = __webpack_require__(9); -exports.types = __webpack_require__(59); -exports.emitter = __webpack_require__(90); +exports.types = __webpack_require__(60); +exports.emitter = __webpack_require__(91); /***/ }), @@ -5845,12 +5845,12 @@ exports.factory = factory; "use strict"; -var naturalSort = __webpack_require__(483); +var naturalSort = __webpack_require__(485); function factory (type, config, load, typed) { var getTypeOf = load(__webpack_require__(76)); var matrix = load(__webpack_require__(0)); - var compare = load(__webpack_require__(49)); + var compare = load(__webpack_require__(51)); var compareBooleans = compare.signatures['boolean,boolean'] @@ -6305,7 +6305,7 @@ exports.factory = factory; var nearlyEqual = __webpack_require__(3).nearlyEqual; -var bigNearlyEqual = __webpack_require__(35); +var bigNearlyEqual = __webpack_require__(36); function factory (type, config, load, typed) { @@ -6490,6 +6490,211 @@ exports.factory = factory; "use strict"; +var latex = __webpack_require__(4); +var stringify = __webpack_require__(9).stringify; +var escape = __webpack_require__(9).escape; +var hasOwnProperty = __webpack_require__(5).hasOwnProperty; +var getSafeProperty = __webpack_require__(13).getSafeProperty; + +function factory (type, config, load, typed, math) { + var register = load(__webpack_require__(7)).register; + var compile = load(__webpack_require__(7)).compile; + var Node = load(__webpack_require__(14)); + + /** + * Check whether some name is a valueless unit like "inch". + * @param {string} name + * @return {boolean} + */ + function isValuelessUnit (name) { + return type.Unit ? type.Unit.isValuelessUnit(name) : false; + } + + /** + * @constructor SymbolNode + * @extends {Node} + * A symbol node can hold and resolve a symbol + * @param {string} name + * @extends {Node} + */ + function SymbolNode(name) { + if (!(this instanceof SymbolNode)) { + throw new SyntaxError('Constructor must be called with the new operator'); + } + + // validate input + if (typeof name !== 'string') throw new TypeError('String expected for parameter "name"'); + + this.name = name; + } + + SymbolNode.prototype = new Node(); + + SymbolNode.prototype.type = 'SymbolNode'; + + SymbolNode.prototype.isSymbolNode = true; + + /** + * Compile the node to javascript code + * @param {SymbolNode} node The node to be compiled + * @param {Object} defs Object which can be used to define functions + * or constants globally available for the compiled + * expression + * @param {Object} args Object with local function arguments, the key is + * the name of the argument, and the value is `true`. + * The object may not be mutated, but must be + * extended instead. + * @return {string} js + * @private + */ + function compileSymbolNode(node, defs, args) { + if (!(node instanceof SymbolNode)) { + throw new TypeError('No valid SymbolNode') + } + + // add a function to the definitions + defs['undef'] = undef; + defs['Unit'] = type.Unit; + defs.getSafeProperty = getSafeProperty; + defs.hasOwnProperty = hasOwnProperty; + + var jsName = stringify(node.name); // escaped node name inside double quotes + + if (hasOwnProperty(args, node.name)) { + // this is a FunctionAssignment argument + // (like an x when inside the expression of a function assignment `f(x) = ...`) + return args[node.name]; + } + else if (node.name in defs.math) { + return '(' + jsName + ' in scope ' + + '? getSafeProperty(scope, ' + jsName + ') ' + + ': getSafeProperty(math, ' + jsName + '))'; + } + else { + return '(' + + jsName + ' in scope ' + + '? getSafeProperty(scope, ' + jsName + ') ' + + ': ' + (isValuelessUnit(node.name) + ? 'new Unit(null, ' + jsName + ')' + : 'undef(' + jsName + ')') + + ')'; + } + } + + // register the compile function + register(SymbolNode.prototype.type, compileSymbolNode); + + /** + * Execute a callback for each of the child nodes of this node + * @param {function(child: Node, path: string, parent: Node)} callback + */ + SymbolNode.prototype.forEach = function (callback) { + // nothing to do, we don't have childs + }; + + /** + * Create a new SymbolNode having it's childs be the results of calling + * the provided callback function for each of the childs of the original node. + * @param {function(child: Node, path: string, parent: Node) : Node} callback + * @returns {SymbolNode} Returns a clone of the node + */ + SymbolNode.prototype.map = function (callback) { + return this.clone(); + }; + + /** + * Throws an error 'Undefined symbol {name}' + * @param {string} name + */ + function undef (name) { + throw new Error('Undefined symbol ' + name); + } + + /** + * Create a clone of this node, a shallow copy + * @return {SymbolNode} + */ + SymbolNode.prototype.clone = function() { + return new SymbolNode(this.name); + }; + + /** + * Get string representation + * @param {Object} options + * @return {string} str + * @override + */ + SymbolNode.prototype._toString = function(options) { + return this.name; + }; + + /** + * Get HTML representation + * @param {Object} options + * @return {string} str + * @override + */ + SymbolNode.prototype.toHTML = function(options) { + var name = escape(this.name); + + if (name == "true" || name == "false") { + return '' + name + ''; + } + else if (name == "i") { + return '' + name + ''; + } + else if (name == "Infinity") { + return '' + name + ''; + } + else if (name == "NaN") { + return '' + name + ''; + } + else if (name == "null") { + return '' + name + ''; + } + else if (name == "uninitialized") { + return '' + name + ''; + } + + return '' + name + ''; + }; + + /** + * Get LaTeX representation + * @param {Object} options + * @return {string} str + * @override + */ + SymbolNode.prototype._toTex = function(options) { + var isUnit = false; + if ((typeof math[this.name] === 'undefined') && isValuelessUnit(this.name)) { + isUnit = true; + } + var symbol = latex.toSymbol(this.name, isUnit); + if (symbol[0] === '\\') { + //no space needed if the symbol starts with '\' + return symbol; + } + //the space prevents symbols from breaking stuff like '\cdot' if it's written right before the symbol + return ' ' + symbol; + }; + + return SymbolNode; +} + +exports.name = 'SymbolNode'; +exports.path = 'expression.node'; +exports.math = true; // request access to the math namespace as 5th argument of the factory function +exports.factory = factory; + + +/***/ }), +/* 36 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + /** * Compares two BigNumbers. * @param {BigNumber} x First value to compare @@ -6536,7 +6741,7 @@ module.exports = function nearlyEqual(x, y, epsilon) { /***/ }), -/* 36 */ +/* 37 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6653,7 +6858,7 @@ exports.factory = factory; /***/ }), -/* 37 */ +/* 38 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6730,7 +6935,7 @@ exports.factory = factory; /***/ }), -/* 38 */ +/* 39 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6871,30 +7076,30 @@ exports.factory = factory; /***/ }), -/* 39 */ +/* 40 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var ArgumentsError = __webpack_require__(50); +var ArgumentsError = __webpack_require__(43); var deepMap = __webpack_require__(1); function factory (type, config, load, typed) { - var AccessorNode = load(__webpack_require__(102)); + var AccessorNode = load(__webpack_require__(103)); var ArrayNode = load(__webpack_require__(80)); - var AssignmentNode = load(__webpack_require__(104)); - var BlockNode = load(__webpack_require__(105)); - var ConditionalNode = load(__webpack_require__(106)); - var ConstantNode = load(__webpack_require__(53)); - var FunctionAssignmentNode = load(__webpack_require__(107)); + var AssignmentNode = load(__webpack_require__(105)); + var BlockNode = load(__webpack_require__(106)); + var ConditionalNode = load(__webpack_require__(107)); + var ConstantNode = load(__webpack_require__(47)); + var FunctionAssignmentNode = load(__webpack_require__(108)); var IndexNode = load(__webpack_require__(78)); - var ObjectNode = load(__webpack_require__(109)); - var OperatorNode = load(__webpack_require__(62)); + var ObjectNode = load(__webpack_require__(110)); + var OperatorNode = load(__webpack_require__(54)); var ParenthesisNode = load(__webpack_require__(63)); - var FunctionNode = load(__webpack_require__(54)); + var FunctionNode = load(__webpack_require__(55)); var RangeNode = load(__webpack_require__(79)); - var SymbolNode = load(__webpack_require__(40)); + var SymbolNode = load(__webpack_require__(35)); /** @@ -8430,216 +8635,11 @@ exports.path = 'expression'; exports.factory = factory; -/***/ }), -/* 40 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var latex = __webpack_require__(4); -var stringify = __webpack_require__(9).stringify; -var escape = __webpack_require__(9).escape; -var hasOwnProperty = __webpack_require__(5).hasOwnProperty; -var getSafeProperty = __webpack_require__(13).getSafeProperty; - -function factory (type, config, load, typed, math) { - var register = load(__webpack_require__(7)).register; - var compile = load(__webpack_require__(7)).compile; - var Node = load(__webpack_require__(14)); - - /** - * Check whether some name is a valueless unit like "inch". - * @param {string} name - * @return {boolean} - */ - function isValuelessUnit (name) { - return type.Unit ? type.Unit.isValuelessUnit(name) : false; - } - - /** - * @constructor SymbolNode - * @extends {Node} - * A symbol node can hold and resolve a symbol - * @param {string} name - * @extends {Node} - */ - function SymbolNode(name) { - if (!(this instanceof SymbolNode)) { - throw new SyntaxError('Constructor must be called with the new operator'); - } - - // validate input - if (typeof name !== 'string') throw new TypeError('String expected for parameter "name"'); - - this.name = name; - } - - SymbolNode.prototype = new Node(); - - SymbolNode.prototype.type = 'SymbolNode'; - - SymbolNode.prototype.isSymbolNode = true; - - /** - * Compile the node to javascript code - * @param {SymbolNode} node The node to be compiled - * @param {Object} defs Object which can be used to define functions - * or constants globally available for the compiled - * expression - * @param {Object} args Object with local function arguments, the key is - * the name of the argument, and the value is `true`. - * The object may not be mutated, but must be - * extended instead. - * @return {string} js - * @private - */ - function compileSymbolNode(node, defs, args) { - if (!(node instanceof SymbolNode)) { - throw new TypeError('No valid SymbolNode') - } - - // add a function to the definitions - defs['undef'] = undef; - defs['Unit'] = type.Unit; - defs.getSafeProperty = getSafeProperty; - defs.hasOwnProperty = hasOwnProperty; - - var jsName = stringify(node.name); // escaped node name inside double quotes - - if (hasOwnProperty(args, node.name)) { - // this is a FunctionAssignment argument - // (like an x when inside the expression of a function assignment `f(x) = ...`) - return args[node.name]; - } - else if (node.name in defs.math) { - return '(' + jsName + ' in scope ' + - '? getSafeProperty(scope, ' + jsName + ') ' + - ': getSafeProperty(math, ' + jsName + '))'; - } - else { - return '(' + - jsName + ' in scope ' + - '? getSafeProperty(scope, ' + jsName + ') ' + - ': ' + (isValuelessUnit(node.name) - ? 'new Unit(null, ' + jsName + ')' - : 'undef(' + jsName + ')') + - ')'; - } - } - - // register the compile function - register(SymbolNode.prototype.type, compileSymbolNode); - - /** - * Execute a callback for each of the child nodes of this node - * @param {function(child: Node, path: string, parent: Node)} callback - */ - SymbolNode.prototype.forEach = function (callback) { - // nothing to do, we don't have childs - }; - - /** - * Create a new SymbolNode having it's childs be the results of calling - * the provided callback function for each of the childs of the original node. - * @param {function(child: Node, path: string, parent: Node) : Node} callback - * @returns {SymbolNode} Returns a clone of the node - */ - SymbolNode.prototype.map = function (callback) { - return this.clone(); - }; - - /** - * Throws an error 'Undefined symbol {name}' - * @param {string} name - */ - function undef (name) { - throw new Error('Undefined symbol ' + name); - } - - /** - * Create a clone of this node, a shallow copy - * @return {SymbolNode} - */ - SymbolNode.prototype.clone = function() { - return new SymbolNode(this.name); - }; - - /** - * Get string representation - * @param {Object} options - * @return {string} str - * @override - */ - SymbolNode.prototype._toString = function(options) { - return this.name; - }; - - /** - * Get HTML representation - * @param {Object} options - * @return {string} str - * @override - */ - SymbolNode.prototype.toHTML = function(options) { - var name = escape(this.name); - - if (name == "true" || name == "false") { - return '' + name + ''; - } - else if (name == "i") { - return '' + name + ''; - } - else if (name == "Infinity") { - return '' + name + ''; - } - else if (name == "NaN") { - return '' + name + ''; - } - else if (name == "null") { - return '' + name + ''; - } - else if (name == "uninitialized") { - return '' + name + ''; - } - - return '' + name + ''; - }; - - /** - * Get LaTeX representation - * @param {Object} options - * @return {string} str - * @override - */ - SymbolNode.prototype._toTex = function(options) { - var isUnit = false; - if ((typeof math[this.name] === 'undefined') && isValuelessUnit(this.name)) { - isUnit = true; - } - var symbol = latex.toSymbol(this.name, isUnit); - if (symbol[0] === '\\') { - //no space needed if the symbol starts with '\' - return symbol; - } - //the space prevents symbols from breaking stuff like '\cdot' if it's written right before the symbol - return ' ' + symbol; - }; - - return SymbolNode; -} - -exports.name = 'SymbolNode'; -exports.path = 'expression.node'; -exports.math = true; // request access to the math namespace as 5th argument of the factory function -exports.factory = factory; - - /***/ }), /* 41 */ /***/ (function(module, exports, __webpack_require__) { -var IndexError = __webpack_require__(51); +var IndexError = __webpack_require__(52); /** * Transform zero-based indices to one-based indices in errors @@ -8665,7 +8665,7 @@ exports.transform = function (err) { "use strict"; -var isMatrix = __webpack_require__(58); +var isMatrix = __webpack_require__(59); /** * Recursively loop over all elements in a given multi dimensional array @@ -8699,6 +8699,47 @@ module.exports = function deepForEach (array, callback) { "use strict"; +/** + * Create a syntax error with the message: + * 'Wrong number of arguments in function ( provided, - expected)' + * @param {string} fn Function name + * @param {number} count Actual argument count + * @param {number} min Minimum required argument count + * @param {number} [max] Maximum required argument count + * @extends Error + */ +function ArgumentsError(fn, count, min, max) { + if (!(this instanceof ArgumentsError)) { + throw new SyntaxError('Constructor must be called with the new operator'); + } + + this.fn = fn; + this.count = count; + this.min = min; + this.max = max; + + this.message = 'Wrong number of arguments in function ' + fn + + ' (' + count + ' provided, ' + + min + ((max != undefined) ? ('-' + max) : '') + ' expected)'; + + this.stack = (new Error()).stack; +} + +ArgumentsError.prototype = new Error(); +ArgumentsError.prototype.constructor = Error; +ArgumentsError.prototype.name = 'ArgumentsError'; +ArgumentsError.prototype.isArgumentsError = true; + +module.exports = ArgumentsError; + + +/***/ }), +/* 44 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + var util = __webpack_require__(25); var DimensionError = __webpack_require__(10); var getSafeProperty = __webpack_require__(13).getSafeProperty; @@ -9584,14 +9625,14 @@ exports.lazy = false; // no lazy loading, as we alter type.Matrix._storage /***/ }), -/* 44 */ +/* 45 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var nearlyEqual = __webpack_require__(3).nearlyEqual; -var bigNearlyEqual = __webpack_require__(35); +var bigNearlyEqual = __webpack_require__(36); function factory (type, config, load, typed) { @@ -9770,7 +9811,7 @@ exports.factory = factory; /***/ }), -/* 45 */ +/* 46 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -9781,10 +9822,10 @@ var size = __webpack_require__(2).size; function factory (type, config, load, typed) { var latex = __webpack_require__(4); - var eye = load(__webpack_require__(61)); + var eye = load(__webpack_require__(62)); var multiply = load(__webpack_require__(12)); var matrix = load(__webpack_require__(0)); - var fraction = load(__webpack_require__(92)); + var fraction = load(__webpack_require__(93)); var number = load(__webpack_require__(74)); /** @@ -9978,13 +10019,269 @@ exports.factory = factory; /***/ }), -/* 46 */ +/* 47 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var isMatrix = __webpack_require__(58); +var getType = __webpack_require__(60).type; +var stringify = __webpack_require__(9).stringify; +var escape = __webpack_require__(9).escape; + +function factory (type, config, load, typed) { + var register = load(__webpack_require__(7)).register; + var compile = load(__webpack_require__(7)).compile; + var Node = load(__webpack_require__(14)); + + /** + * A ConstantNode holds a constant value like a number or string. A ConstantNode + * stores a stringified version of the value and uses this to compile to + * JavaScript. + * + * In case of a stringified number as input, this may be compiled to a BigNumber + * when the math instance is configured for BigNumbers. + * + * Usage: + * + * // stringified values with type + * new ConstantNode('2.3', 'number'); + * new ConstantNode('true', 'boolean'); + * new ConstantNode('hello', 'string'); + * + * // non-stringified values, type will be automatically detected + * new ConstantNode(2.3); + * new ConstantNode('hello'); + * + * @param {string | number | boolean | null | undefined} value + * When valueType is provided, value must contain + * an uninterpreted string representing the value. + * When valueType is undefined, value can be a + * number, string, boolean, null, or undefined, and + * the type will be determined automatically. + * @param {string} [valueType] The type of value. Choose from 'number', 'string', + * 'boolean', 'undefined', 'null' + * @constructor ConstantNode + * @extends {Node} + */ + function ConstantNode(value, valueType) { + if (!(this instanceof ConstantNode)) { + throw new SyntaxError('Constructor must be called with the new operator'); + } + + if (valueType) { + if (typeof valueType !== 'string') { + throw new TypeError('String expected for parameter "valueType"'); + } + if (typeof value !== 'string') { + throw new TypeError('String expected for parameter "value"'); + } + + this.value = value; + this.valueType = valueType; + } + else { + // stringify the value and determine the type + this.value = value + ''; + this.valueType = getType(value); + } + + if (!SUPPORTED_TYPES[this.valueType]) { + throw new TypeError('Unsupported type of value "' + this.valueType + '"'); + } + } + + var SUPPORTED_TYPES = { + 'number': true, + 'string': true, + 'boolean': true, + 'undefined': true, + 'null': true + }; + + ConstantNode.prototype = new Node(); + + ConstantNode.prototype.type = 'ConstantNode'; + + ConstantNode.prototype.isConstantNode = true; + + /** + * Compile the node to javascript code + * @param {ConstantNode} node The node to be compiled + * @param {Object} defs Object which can be used to define functions + * or constants globally available for the compiled + * expression + * @param {Object} args Object with local function arguments, the key is + * the name of the argument, and the value is `true`. + * The object may not be mutated, but must be + * extended instead. + * @return {string} js + * @private + */ + function compileConstantNode(node, defs, args) { + if (!(node instanceof ConstantNode)) { + throw new TypeError('No valid ConstantNode') + } + + switch (node.valueType) { + case 'number': + if (config.number === 'BigNumber') { + return 'math.bignumber(' + stringify(node.value) + ')'; + } + else if (config.number === 'Fraction') { + return 'math.fraction(' + stringify(node.value) + ')'; + } + else { + // remove leading zeros like '003.2' which are not allowed by JavaScript + validateNumericValue(node.value); + return node.value.replace(/^(0*)[0-9]/, function (match, zeros) { + return match.substring(zeros.length); + }); + } + + case 'string': + // Important to escape unescaped double quotes in the string + return stringify(node.value); + + case 'boolean': + // prevent invalid values + return String(node.value) === 'true' ? 'true' : 'false'; + + case 'undefined': + return 'undefined'; + + case 'null': + return 'null'; + + default: + // TODO: move this error to the constructor? + throw new TypeError('Unsupported type of constant "' + node.valueType + '"'); + } + } + + /** + * Test whether value is a string containing a numeric value + * @param {String} value + * @return {boolean} Returns true when ok + */ + function validateNumericValue (value) { + // The following regexp is relatively permissive + if (typeof value !== 'string' || + !/^[\-+]?((\d+\.?\d*)|(\d*\.?\d+))([eE][+\-]?\d+)?$/.test(value)) { + throw new Error('Invalid numeric value "' + value + '"'); + } + } + + // register the compile function + register(ConstantNode.prototype.type, compileConstantNode); + + /** + * Execute a callback for each of the child nodes of this node + * @param {function(child: Node, path: string, parent: Node)} callback + */ + ConstantNode.prototype.forEach = function (callback) { + // nothing to do, we don't have childs + }; + + + /** + * Create a new ConstantNode having it's childs be the results of calling + * the provided callback function for each of the childs of the original node. + * @param {function(child: Node, path: string, parent: Node) : Node} callback + * @returns {ConstantNode} Returns a clone of the node + */ + ConstantNode.prototype.map = function (callback) { + return this.clone(); + }; + + /** + * Create a clone of this node, a shallow copy + * @return {ConstantNode} + */ + ConstantNode.prototype.clone = function () { + return new ConstantNode(this.value, this.valueType); + }; + + /** + * Get string representation + * @param {Object} options + * @return {string} str + */ + ConstantNode.prototype._toString = function (options) { + switch (this.valueType) { + case 'string': + return stringify(this.value); + + default: + return this.value; + } + }; + + /** + * Get HTML representation + * @param {Object} options + * @return {string} str + */ + ConstantNode.prototype.toHTML = function (options) { + var value = escape(this.value); + switch (this.valueType) { + case 'number': + return '' + value + ''; + case 'string': + return '' + value + ''; + case 'boolean': + return '' + value + ''; + case 'null': + return '' + value + ''; + case 'undefined': + return '' + value + ''; + + default: + return '' + value + ''; + } + }; + + /** + * Get LaTeX representation + * @param {Object} options + * @return {string} str + */ + ConstantNode.prototype._toTex = function (options) { + var value = this.value, + index; + switch (this.valueType) { + case 'string': + return '\\mathtt{' + stringify(value) + '}'; + + case 'number': + index = value.toLowerCase().indexOf('e'); + if (index !== -1) { + return value.substring(0, index) + '\\cdot10^{' + + value.substring(index + 1) + '}'; + } + return value; + + default: + return value; + } + }; + + return ConstantNode; +} + +exports.name = 'ConstantNode'; +exports.path = 'expression.node'; +exports.factory = factory; + + +/***/ }), +/* 48 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var isMatrix = __webpack_require__(59); /** * Test whether a value is a collection: an Array or Matrix @@ -9997,7 +10294,7 @@ module.exports = function isCollection (x) { /***/ }), -/* 47 */ +/* 49 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -10009,7 +10306,7 @@ function factory (type, config, load, typed) { var divideScalar = load(__webpack_require__(19)); var multiply = load(__webpack_require__(12)); - var inv = load(__webpack_require__(114)); + var inv = load(__webpack_require__(116)); var matrix = load(__webpack_require__(0)); var algorithm11 = load(__webpack_require__(17)); @@ -10093,7 +10390,7 @@ exports.factory = factory; /***/ }), -/* 48 */ +/* 50 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -10156,21 +10453,21 @@ exports.factory = factory; /***/ }), -/* 49 */ +/* 51 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var nearlyEqual = __webpack_require__(3).nearlyEqual; -var bigNearlyEqual = __webpack_require__(35); +var bigNearlyEqual = __webpack_require__(36); function factory (type, config, load, typed) { var matrix = load(__webpack_require__(0)); var algorithm03 = load(__webpack_require__(15)); - var algorithm05 = load(__webpack_require__(60)); + var algorithm05 = load(__webpack_require__(61)); var algorithm12 = load(__webpack_require__(16)); var algorithm13 = load(__webpack_require__(8)); var algorithm14 = load(__webpack_require__(6)); @@ -10345,48 +10642,7 @@ exports.factory = factory; /***/ }), -/* 50 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -/** - * Create a syntax error with the message: - * 'Wrong number of arguments in function ( provided, - expected)' - * @param {string} fn Function name - * @param {number} count Actual argument count - * @param {number} min Minimum required argument count - * @param {number} [max] Maximum required argument count - * @extends Error - */ -function ArgumentsError(fn, count, min, max) { - if (!(this instanceof ArgumentsError)) { - throw new SyntaxError('Constructor must be called with the new operator'); - } - - this.fn = fn; - this.count = count; - this.min = min; - this.max = max; - - this.message = 'Wrong number of arguments in function ' + fn + - ' (' + count + ' provided, ' + - min + ((max != undefined) ? ('-' + max) : '') + ' expected)'; - - this.stack = (new Error()).stack; -} - -ArgumentsError.prototype = new Error(); -ArgumentsError.prototype.constructor = Error; -ArgumentsError.prototype.name = 'ArgumentsError'; -ArgumentsError.prototype.isArgumentsError = true; - -module.exports = ArgumentsError; - - -/***/ }), -/* 51 */ +/* 52 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -10439,7 +10695,7 @@ module.exports = IndexError; /***/ }), -/* 52 */ +/* 53 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -10761,262 +11017,6 @@ module.exports.getAssociativity = getAssociativity; module.exports.isAssociativeWith = isAssociativeWith; -/***/ }), -/* 53 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var getType = __webpack_require__(59).type; -var stringify = __webpack_require__(9).stringify; -var escape = __webpack_require__(9).escape; - -function factory (type, config, load, typed) { - var register = load(__webpack_require__(7)).register; - var compile = load(__webpack_require__(7)).compile; - var Node = load(__webpack_require__(14)); - - /** - * A ConstantNode holds a constant value like a number or string. A ConstantNode - * stores a stringified version of the value and uses this to compile to - * JavaScript. - * - * In case of a stringified number as input, this may be compiled to a BigNumber - * when the math instance is configured for BigNumbers. - * - * Usage: - * - * // stringified values with type - * new ConstantNode('2.3', 'number'); - * new ConstantNode('true', 'boolean'); - * new ConstantNode('hello', 'string'); - * - * // non-stringified values, type will be automatically detected - * new ConstantNode(2.3); - * new ConstantNode('hello'); - * - * @param {string | number | boolean | null | undefined} value - * When valueType is provided, value must contain - * an uninterpreted string representing the value. - * When valueType is undefined, value can be a - * number, string, boolean, null, or undefined, and - * the type will be determined automatically. - * @param {string} [valueType] The type of value. Choose from 'number', 'string', - * 'boolean', 'undefined', 'null' - * @constructor ConstantNode - * @extends {Node} - */ - function ConstantNode(value, valueType) { - if (!(this instanceof ConstantNode)) { - throw new SyntaxError('Constructor must be called with the new operator'); - } - - if (valueType) { - if (typeof valueType !== 'string') { - throw new TypeError('String expected for parameter "valueType"'); - } - if (typeof value !== 'string') { - throw new TypeError('String expected for parameter "value"'); - } - - this.value = value; - this.valueType = valueType; - } - else { - // stringify the value and determine the type - this.value = value + ''; - this.valueType = getType(value); - } - - if (!SUPPORTED_TYPES[this.valueType]) { - throw new TypeError('Unsupported type of value "' + this.valueType + '"'); - } - } - - var SUPPORTED_TYPES = { - 'number': true, - 'string': true, - 'boolean': true, - 'undefined': true, - 'null': true - }; - - ConstantNode.prototype = new Node(); - - ConstantNode.prototype.type = 'ConstantNode'; - - ConstantNode.prototype.isConstantNode = true; - - /** - * Compile the node to javascript code - * @param {ConstantNode} node The node to be compiled - * @param {Object} defs Object which can be used to define functions - * or constants globally available for the compiled - * expression - * @param {Object} args Object with local function arguments, the key is - * the name of the argument, and the value is `true`. - * The object may not be mutated, but must be - * extended instead. - * @return {string} js - * @private - */ - function compileConstantNode(node, defs, args) { - if (!(node instanceof ConstantNode)) { - throw new TypeError('No valid ConstantNode') - } - - switch (node.valueType) { - case 'number': - if (config.number === 'BigNumber') { - return 'math.bignumber(' + stringify(node.value) + ')'; - } - else if (config.number === 'Fraction') { - return 'math.fraction(' + stringify(node.value) + ')'; - } - else { - // remove leading zeros like '003.2' which are not allowed by JavaScript - validateNumericValue(node.value); - return node.value.replace(/^(0*)[0-9]/, function (match, zeros) { - return match.substring(zeros.length); - }); - } - - case 'string': - // Important to escape unescaped double quotes in the string - return stringify(node.value); - - case 'boolean': - // prevent invalid values - return String(node.value) === 'true' ? 'true' : 'false'; - - case 'undefined': - return 'undefined'; - - case 'null': - return 'null'; - - default: - // TODO: move this error to the constructor? - throw new TypeError('Unsupported type of constant "' + node.valueType + '"'); - } - } - - /** - * Test whether value is a string containing a numeric value - * @param {String} value - * @return {boolean} Returns true when ok - */ - function validateNumericValue (value) { - // The following regexp is relatively permissive - if (typeof value !== 'string' || - !/^[\-+]?((\d+\.?\d*)|(\d*\.?\d+))([eE][+\-]?\d+)?$/.test(value)) { - throw new Error('Invalid numeric value "' + value + '"'); - } - } - - // register the compile function - register(ConstantNode.prototype.type, compileConstantNode); - - /** - * Execute a callback for each of the child nodes of this node - * @param {function(child: Node, path: string, parent: Node)} callback - */ - ConstantNode.prototype.forEach = function (callback) { - // nothing to do, we don't have childs - }; - - - /** - * Create a new ConstantNode having it's childs be the results of calling - * the provided callback function for each of the childs of the original node. - * @param {function(child: Node, path: string, parent: Node) : Node} callback - * @returns {ConstantNode} Returns a clone of the node - */ - ConstantNode.prototype.map = function (callback) { - return this.clone(); - }; - - /** - * Create a clone of this node, a shallow copy - * @return {ConstantNode} - */ - ConstantNode.prototype.clone = function () { - return new ConstantNode(this.value, this.valueType); - }; - - /** - * Get string representation - * @param {Object} options - * @return {string} str - */ - ConstantNode.prototype._toString = function (options) { - switch (this.valueType) { - case 'string': - return stringify(this.value); - - default: - return this.value; - } - }; - - /** - * Get HTML representation - * @param {Object} options - * @return {string} str - */ - ConstantNode.prototype.toHTML = function (options) { - var value = escape(this.value); - switch (this.valueType) { - case 'number': - return '' + value + ''; - case 'string': - return '' + value + ''; - case 'boolean': - return '' + value + ''; - case 'null': - return '' + value + ''; - case 'undefined': - return '' + value + ''; - - default: - return '' + value + ''; - } - }; - - /** - * Get LaTeX representation - * @param {Object} options - * @return {string} str - */ - ConstantNode.prototype._toTex = function (options) { - var value = this.value, - index; - switch (this.valueType) { - case 'string': - return '\\mathtt{' + stringify(value) + '}'; - - case 'number': - index = value.toLowerCase().indexOf('e'); - if (index !== -1) { - return value.substring(0, index) + '\\cdot10^{' + - value.substring(index + 1) + '}'; - } - return value; - - default: - return value; - } - }; - - return ConstantNode; -} - -exports.name = 'ConstantNode'; -exports.path = 'expression.node'; -exports.factory = factory; - - /***/ }), /* 54 */ /***/ (function(module, exports, __webpack_require__) { @@ -11024,1096 +11024,21 @@ exports.factory = factory; "use strict"; -var latex = __webpack_require__(4); -var stringify = __webpack_require__(9).stringify; -var escape = __webpack_require__(9).escape; -var extend = __webpack_require__(5).extend; -var hasOwnProperty = __webpack_require__(5).hasOwnProperty; -var map = __webpack_require__(2).map; -var join = __webpack_require__(2).join; -var validateSafeMethod = __webpack_require__(13).validateSafeMethod; -var getUniqueArgumentName = __webpack_require__(108); - -function factory (type, config, load, typed, math) { - var register = load(__webpack_require__(7)).register; - var compile = load(__webpack_require__(7)).compile; - var Node = load(__webpack_require__(14)); - var SymbolNode = load(__webpack_require__(40)); - - /** - * @constructor FunctionNode - * @extends {./Node} - * invoke a list with arguments on a node - * @param {./Node | string} fn Node resolving with a function on which to invoke - * the arguments, typically a SymboNode or AccessorNode - * @param {./Node[]} args - */ - function FunctionNode(fn, args) { - if (!(this instanceof FunctionNode)) { - throw new SyntaxError('Constructor must be called with the new operator'); - } - - if (typeof fn === 'string') { - fn = new SymbolNode(fn); - } - - // validate input - if (!type.isNode(fn)) throw new TypeError('Node expected as parameter "fn"'); - if (!Array.isArray(args) || !args.every(type.isNode)) { - throw new TypeError('Array containing Nodes expected for parameter "args"'); - } - - this.fn = fn; - this.args = args || []; - - // readonly property name - Object.defineProperty(this, 'name', { - get: function () { - return this.fn.name || ''; - }.bind(this), - set: function () { - throw new Error('Cannot assign a new name, name is read-only'); - } - }); - - // TODO: deprecated since v3, remove some day - var deprecated = function () { - throw new Error('Property `FunctionNode.object` is deprecated, use `FunctionNode.fn` instead'); - }; - Object.defineProperty(this, 'object', { get: deprecated, set: deprecated }); - } - - FunctionNode.prototype = new Node(); - - FunctionNode.prototype.type = 'FunctionNode'; - - FunctionNode.prototype.isFunctionNode = true; - - /** - * Compile the node to javascript code - * @param {FunctionNode} node The node to be compiled - * @param {Object} defs Object which can be used to define functions - * or constants globally available for the compiled - * expression - * @param {Object} args Object with local function arguments, the key is - * the name of the argument, and the value is `true`. - * The object may not be mutated, but must be - * extended instead. - * @return {string} js - * @private - */ - function compileFunctionNode(node, defs, args) { - if (!(node instanceof FunctionNode)) { - throw new TypeError('No valid FunctionNode') - } - - // compile fn and arguments - var jsFn = compile(node.fn, defs, args); - var jsArgs = map(node.args, function (arg) { - return compile(arg, defs, args); - }); - var jsScope = compileScope(defs, args); - var argsName; - - if (type.isSymbolNode(node.fn)) { - // we can statically determine whether the function has an rawArgs property - var name = node.fn.name; - var fn = hasOwnProperty(defs.math, name) ? defs.math[name] : undefined; - var isRaw = (typeof fn === 'function') && (fn.rawArgs == true); - - if (isRaw) { - // pass unevaluated parameters (nodes) to the function - argsName = getUniqueArgumentName(defs); - defs[argsName] = node.args; - - return jsFn + '(' + argsName + ', math, ' + jsScope + ')'; // "raw" evaluation - } - else { - return jsFn + '(' + join(jsArgs, ', ') + ')'; // "regular" evaluation - } - } - else if (type.isAccessorNode(node.fn) && - type.isIndexNode(node.fn.index) && node.fn.index.isObjectProperty()) { - // execute the function with the right context: the object of the AccessorNode - argsName = getUniqueArgumentName(defs); - defs[argsName] = node.args; - defs.validateSafeMethod = validateSafeMethod - - var jsObject = compile(node.fn.object, defs, args); - var jsProp = stringify(node.fn.index.getObjectProperty()); - - return '(function () {' + - 'var object = ' + jsObject + ';' + - 'validateSafeMethod(object, ' + jsProp + ');' + - 'return (object[' + jsProp + '] && object[' + jsProp + '].rawArgs) ' + - ' ? object[' + jsProp + '](' + argsName + ', math, ' + jsScope + ')' + // "raw" evaluation - ' : object[' + jsProp + '](' + join(jsArgs, ', ') + ')' + // "regular" evaluation - '})()'; - } - else { // node.fn.isAccessorNode && !node.fn.index.isObjectProperty() - // we have to dynamically determine whether the function has a rawArgs property - argsName = getUniqueArgumentName(defs); - defs[argsName] = node.args; - - return '(function () {' + - 'var fn = ' + jsFn + ';' + - 'return (fn && fn.rawArgs) ' + - ' ? fn(' + argsName + ', math, ' + jsScope + ')' + // "raw" evaluation - ' : fn(' + join(jsArgs, ', ') + ')' + // "regular" evaluation - '})()'; - } - } - - // register the compile function - register(FunctionNode.prototype.type, compileFunctionNode); - - /** - * Merge function arguments into scope before passing to the actual function. - * This is needed when the function has `rawArgs=true`. In that case we have - * to pass the `scope` as third argument, including any variables of - * enclosing functions. - * @param {Object} defs Object which can be used to define functions - * or constants globally available for the compiled - * expression - * @param {Object} args Object with local function arguments, the key is - * the name of the argument, and the value is `true`. - * The object may not be mutated, but must be - * extended instead. - * @return {string} js - * @private - */ - function compileScope (defs, args) { - var names = Object.keys(args) - // .map(function (arg) { - // return args[arg]; - // }); - if (names.length === 0) { - return 'scope'; - } - else { - // merge arguments into scope - defs.extend = extend; - - var jsArgs = map(names, function (name) { - return stringify(name) + ': ' + args[name]; - }); - - return 'extend(extend({}, scope), {' + join(jsArgs, ', ') + '})'; - } - } - - /** - * Execute a callback for each of the child nodes of this node - * @param {function(child: Node, path: string, parent: Node)} callback - */ - FunctionNode.prototype.forEach = function (callback) { - for (var i = 0; i < this.args.length; i++) { - callback(this.args[i], 'args[' + i + ']', this); - } - }; - - /** - * Create a new FunctionNode having it's childs be the results of calling - * the provided callback function for each of the childs of the original node. - * @param {function(child: Node, path: string, parent: Node): Node} callback - * @returns {FunctionNode} Returns a transformed copy of the node - */ - FunctionNode.prototype.map = function (callback) { - var fn = this.fn.map(callback); - var args = []; - for (var i = 0; i < this.args.length; i++) { - args[i] = this._ifNode(callback(this.args[i], 'args[' + i + ']', this)); - } - return new FunctionNode(fn, args); - }; - - /** - * Create a clone of this node, a shallow copy - * @return {FunctionNode} - */ - FunctionNode.prototype.clone = function () { - return new FunctionNode(this.fn, this.args.slice(0)); - }; - - //backup Node's toString function - //@private - var nodeToString = FunctionNode.prototype.toString; - - /** - * Get string representation. (wrapper function) - * This overrides parts of Node's toString function. - * If callback is an object containing callbacks, it - * calls the correct callback for the current node, - * otherwise it falls back to calling Node's toString - * function. - * - * @param {Object} options - * @return {string} str - * @override - */ - FunctionNode.prototype.toString = function (options) { - var customString; - var name = this.fn.toString(options); - if (options && (typeof options.handler === 'object') && hasOwnProperty(options.handler, name)) { - //callback is a map of callback functions - customString = options.handler[name](this, options); - } - - if (typeof customString !== 'undefined') { - return customString; - } - - //fall back to Node's toString - return nodeToString.call(this, options); - }; - - /** - * Get string representation - * @param {Object} options - * @return {string} str - */ - FunctionNode.prototype._toString = function (options) { - var args = this.args.map(function (arg) { - return arg.toString(options); - }); - - var fn = type.isFunctionAssignmentNode(this.fn) - ? ('(' + this.fn.toString(options) + ')') - : this.fn.toString(options) - - // format the arguments like "add(2, 4.2)" - return fn + '(' + args.join(', ') + ')'; - }; - - /** - * Get HTML representation - * @param {Object} options - * @return {string} str - */ - FunctionNode.prototype.toHTML = function (options) { - var args = this.args.map(function (arg) { - return arg.toHTML(options); - }); - - // format the arguments like "add(2, 4.2)" - return '' + escape(this.fn) + '(' + args.join(',') + ')'; - }; - - /* - * Expand a LaTeX template - * - * @param {string} template - * @param {Node} node - * @param {Object} options - * @private - **/ - function expandTemplate(template, node, options) { - var latex = ''; - - // Match everything of the form ${identifier} or ${identifier[2]} or $$ - // while submatching identifier and 2 (in the second case) - var regex = new RegExp('\\$(?:\\{([a-z_][a-z_0-9]*)(?:\\[([0-9]+)\\])?\\}|\\$)', 'ig'); - - var inputPos = 0; //position in the input string - var match; - while ((match = regex.exec(template)) !== null) { //go through all matches - // add everything in front of the match to the LaTeX string - latex += template.substring(inputPos, match.index); - inputPos = match.index; - - if (match[0] === '$$') { // escaped dollar sign - latex += '$'; - inputPos++; - } - else { // template parameter - inputPos += match[0].length; - var property = node[match[1]]; - if (!property) { - throw new ReferenceError('Template: Property ' + match[1] + ' does not exist.'); - } - if (match[2] === undefined) { //no square brackets - switch (typeof property) { - case 'string': - latex += property; - break; - case 'object': - if (type.isNode(property)) { - latex += property.toTex(options); - } - else if (Array.isArray(property)) { - //make array of Nodes into comma separated list - latex += property.map(function (arg, index) { - if (type.isNode(arg)) { - return arg.toTex(options); - } - throw new TypeError('Template: ' + match[1] + '[' + index + '] is not a Node.'); - }).join(','); - } - else { - throw new TypeError('Template: ' + match[1] + ' has to be a Node, String or array of Nodes'); - } - break; - default: - throw new TypeError('Template: ' + match[1] + ' has to be a Node, String or array of Nodes'); - } - } - else { //with square brackets - if (type.isNode(property[match[2]] && property[match[2]])) { - latex += property[match[2]].toTex(options); - } - else { - throw new TypeError('Template: ' + match[1] + '[' + match[2] + '] is not a Node.'); - } - } - } - } - latex += template.slice(inputPos); //append rest of the template - - return latex; - } - - //backup Node's toTex function - //@private - var nodeToTex = FunctionNode.prototype.toTex; - - /** - * Get LaTeX representation. (wrapper function) - * This overrides parts of Node's toTex function. - * If callback is an object containing callbacks, it - * calls the correct callback for the current node, - * otherwise it falls back to calling Node's toTex - * function. - * - * @param {Object} options - * @return {string} - */ - FunctionNode.prototype.toTex = function (options) { - var customTex; - if (options && (typeof options.handler === 'object') && hasOwnProperty(options.handler, this.name)) { - //callback is a map of callback functions - customTex = options.handler[this.name](this, options); - } - - if (typeof customTex !== 'undefined') { - return customTex; - } - - //fall back to Node's toTex - return nodeToTex.call(this, options); - }; - - /** - * Get LaTeX representation - * @param {Object} options - * @return {string} str - */ - FunctionNode.prototype._toTex = function (options) { - var args = this.args.map(function (arg) { //get LaTeX of the arguments - return arg.toTex(options); - }); - - var latexConverter; - - if (math[this.name] && ((typeof math[this.name].toTex === 'function') || (typeof math[this.name].toTex === 'object') || (typeof math[this.name].toTex === 'string'))) { - //.toTex is a callback function - latexConverter = math[this.name].toTex; - } - - var customToTex; - switch (typeof latexConverter) { - case 'function': //a callback function - customToTex = latexConverter(this, options); - break; - case 'string': //a template string - customToTex = expandTemplate(latexConverter, this, options); - break; - case 'object': //an object with different "converters" for different numbers of arguments - switch (typeof latexConverter[args.length]) { - case 'function': - customToTex = latexConverter[args.length](this, options); - break; - case 'string': - customToTex = expandTemplate(latexConverter[args.length], this, options); - break; - } - } - - if (typeof customToTex !== 'undefined') { - return customToTex; - } - - return expandTemplate(latex.defaultTemplate, this, options); - }; - - /** - * Get identifier. - * @return {string} - */ - FunctionNode.prototype.getIdentifier = function () { - return this.type + ':' + this.name; - }; - - return FunctionNode; -} - -exports.name = 'FunctionNode'; -exports.path = 'expression.node'; -exports.math = true; // request access to the math namespace as 5th argument of the factory function -exports.factory = factory; - - -/***/ }), -/* 55 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var deepMap = __webpack_require__(1); -var number = __webpack_require__(3); - -function factory (type, config, load, typed) { - /** - * Test whether a value is positive: larger than zero. - * The function supports types `number`, `BigNumber`, `Fraction`, and `Unit`. - * - * The function is evaluated element-wise in case of Array or Matrix input. - * - * Syntax: - * - * math.isPositive(x) - * - * Examples: - * - * math.isPositive(3); // returns true - * math.isPositive(-2); // returns false - * math.isPositive(0); // returns false - * math.isPositive(-0); // returns false - * math.isPositive(0.5); // returns true - * math.isPositive(math.bignumber(2)); // returns true - * math.isPositive(math.fraction(-2, 5)); // returns false - * math.isPositive(math.fraction(1,3)); // returns false - * math.isPositive('2'); // returns true - * math.isPositive([2, 0, -3]'); // returns [true, false, false] - * - * See also: - * - * isNumeric, isZero, isNegative, isInteger - * - * @param {number | BigNumber | Fraction | Unit | Array | Matrix} x Value to be tested - * @return {boolean} Returns true when `x` is larger than zero. - * Throws an error in case of an unknown data type. - */ - var isPositive = typed('isPositive', { - 'number': function (x) { - return x > 0; - }, - - 'BigNumber': function (x) { - return !x.isNeg() && !x.isZero() && !x.isNaN(); - }, - - 'Fraction': function (x) { - return x.s > 0 && x.n > 0; - }, - - 'Unit': function (x) { - return isPositive(x.value); - }, - - 'Array | Matrix': function (x) { - return deepMap(x, isPositive); - } - }); - - return isPositive; -} - -exports.name = 'isPositive'; -exports.factory = factory; - - -/***/ }), -/* 56 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var deepMap = __webpack_require__(1); - -function factory (type, config, load, typed) { - /** - * Calculate the square root of a value. - * - * For matrices, the function is evaluated element wise. - * - * Syntax: - * - * math.sqrt(x) - * - * Examples: - * - * math.sqrt(25); // returns 5 - * math.square(5); // returns 25 - * math.sqrt(-4); // returns Complex 2i - * - * See also: - * - * square, multiply, cube, cbrt - * - * @param {number | BigNumber | Complex | Array | Matrix | Unit} x - * Value for which to calculate the square root. - * @return {number | BigNumber | Complex | Array | Matrix | Unit} - * Returns the square root of `x` - */ - var sqrt = typed('sqrt', { - 'number': _sqrtNumber, - - 'Complex': function (x) { - return x.sqrt(); - }, - - 'BigNumber': function (x) { - if (!x.isNegative() || config.predictable) { - return x.sqrt(); - } - else { - // negative value -> downgrade to number to do complex value computation - return _sqrtNumber(x.toNumber()); - } - }, - - 'Array | Matrix': function (x) { - // deep map collection, skip zeros since sqrt(0) = 0 - return deepMap(x, sqrt, true); - }, - - 'Unit': function (x) { - // Someday will work for complex units when they are implemented - return x.pow(0.5); - } - - }); - - /** - * Calculate sqrt for a number - * @param {number} x - * @returns {number | Complex} Returns the square root of x - * @private - */ - function _sqrtNumber(x) { - if (x >= 0 || config.predictable) { - return Math.sqrt(x); - } - else { - return new type.Complex(x, 0).sqrt(); - } - } - - sqrt.toTex = {1: '\\sqrt{${args[0]}}'}; - - return sqrt; -} - -exports.name = 'sqrt'; -exports.factory = factory; - - -/***/ }), -/* 57 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var deepMap = __webpack_require__(1); -var number = __webpack_require__(3); - -function factory (type, config, load, typed) { - /** - * Test whether a value is negative: smaller than zero. - * The function supports types `number`, `BigNumber`, `Fraction`, and `Unit`. - * - * The function is evaluated element-wise in case of Array or Matrix input. - * - * Syntax: - * - * math.isNegative(x) - * - * Examples: - * - * math.isNegative(3); // returns false - * math.isNegative(-2); // returns true - * math.isNegative(0); // returns false - * math.isNegative(-0); // returns false - * math.isNegative(math.bignumber(2)); // returns false - * math.isNegative(math.fraction(-2, 5)); // returns true - * math.isNegative('-2'); // returns true - * math.isNegative([2, 0, -3]'); // returns [false, false, true] - * - * See also: - * - * isNumeric, isPositive, isZero, isInteger - * - * @param {number | BigNumber | Fraction | Unit | Array | Matrix} x Value to be tested - * @return {boolean} Returns true when `x` is larger than zero. - * Throws an error in case of an unknown data type. - */ - var isNegative = typed('isNegative', { - 'number': function (x) { - return x < 0; - }, - - 'BigNumber': function (x) { - return x.isNeg() && !x.isZero() && !x.isNaN(); - }, - - 'Fraction': function (x) { - return x.s < 0; // It's enough to decide on the sign - }, - - 'Unit': function (x) { - return isNegative(x.value); - }, - - 'Array | Matrix': function (x) { - return deepMap(x, isNegative); - } - }); - - return isNegative; -} - -exports.name = 'isNegative'; -exports.factory = factory; - - -/***/ }), -/* 58 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -/** - * Test whether a value is a Matrix - * @param {*} x - * @returns {boolean} returns true with input is a Matrix - * (like a DenseMatrix or SparseMatrix) - */ -module.exports = function isMatrix (x) { - return x && x.constructor.prototype.isMatrix || false; -}; - - -/***/ }), -/* 59 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -/** - * Determine the type of a variable - * - * type(x) - * - * The following types are recognized: - * - * 'undefined' - * 'null' - * 'boolean' - * 'number' - * 'string' - * 'Array' - * 'Function' - * 'Date' - * 'RegExp' - * 'Object' - * - * @param {*} x - * @return {string} Returns the name of the type. Primitive types are lower case, - * non-primitive types are upper-camel-case. - * For example 'number', 'string', 'Array', 'Date'. - */ -exports.type = function(x) { - var type = typeof x; - - if (type === 'object') { - if (x === null) return 'null'; - if (Array.isArray(x)) return 'Array'; - if (x instanceof Date) return 'Date'; - if (x instanceof RegExp) return 'RegExp'; - if (x instanceof Boolean) return 'boolean'; - if (x instanceof Number) return 'number'; - if (x instanceof String) return 'string'; - - return 'Object'; - } - - if (type === 'function') return 'Function'; - - return type; -}; - - -/***/ }), -/* 60 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var DimensionError = __webpack_require__(10); - -function factory (type, config, load, typed) { - - var equalScalar = load(__webpack_require__(11)); - - var SparseMatrix = type.SparseMatrix; - - /** - * Iterates over SparseMatrix A and SparseMatrix B nonzero items and invokes the callback function f(Aij, Bij). - * Callback function invoked MAX(NNZA, NNZB) times - * - * - * ┌ f(Aij, Bij) ; A(i,j) !== 0 || B(i,j) !== 0 - * C(i,j) = ┤ - * └ 0 ; otherwise - * - * - * @param {Matrix} a The SparseMatrix instance (A) - * @param {Matrix} b The SparseMatrix instance (B) - * @param {Function} callback The f(Aij,Bij) operation to invoke - * - * @return {Matrix} SparseMatrix (C) - * - * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97620294 - */ - var algorithm05 = function (a, b, callback) { - // sparse matrix arrays - var avalues = a._values; - var aindex = a._index; - var aptr = a._ptr; - var asize = a._size; - var adt = a._datatype; - // sparse matrix arrays - var bvalues = b._values; - var bindex = b._index; - var bptr = b._ptr; - var bsize = b._size; - var bdt = b._datatype; - - // validate dimensions - if (asize.length !== bsize.length) - throw new DimensionError(asize.length, bsize.length); - - // check rows & columns - if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) - throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')'); - - // rows & columns - var rows = asize[0]; - var columns = asize[1]; - - // datatype - var dt; - // equal signature to use - var eq = equalScalar; - // zero value - var zero = 0; - // callback signature to use - var cf = callback; - - // process data types - if (typeof adt === 'string' && adt === bdt) { - // datatype - dt = adt; - // find signature that matches (dt, dt) - eq = typed.find(equalScalar, [dt, dt]); - // convert 0 to the same datatype - zero = typed.convert(0, dt); - // callback - cf = typed.find(callback, [dt, dt]); - } - - // result arrays - var cvalues = avalues && bvalues ? [] : undefined; - var cindex = []; - var cptr = []; - // matrix - var c = new SparseMatrix({ - values: cvalues, - index: cindex, - ptr: cptr, - size: [rows, columns], - datatype: dt - }); - - // workspaces - var xa = cvalues ? [] : undefined; - var xb = cvalues ? [] : undefined; - // marks indicating we have a value in x for a given column - var wa = []; - var wb = []; - - // vars - var i, j, k, k1; - - // loop columns - for (j = 0; j < columns; j++) { - // update cptr - cptr[j] = cindex.length; - // columns mark - var mark = j + 1; - // loop values A(:,j) - for (k = aptr[j], k1 = aptr[j + 1]; k < k1; k++) { - // row - i = aindex[k]; - // push index - cindex.push(i); - // update workspace - wa[i] = mark; - // check we need to process values - if (xa) - xa[i] = avalues[k]; - } - // loop values B(:,j) - for (k = bptr[j], k1 = bptr[j + 1]; k < k1; k++) { - // row - i = bindex[k]; - // check row existed in A - if (wa[i] !== mark) { - // push index - cindex.push(i); - } - // update workspace - wb[i] = mark; - // check we need to process values - if (xb) - xb[i] = bvalues[k]; - } - // check we need to process values (non pattern matrix) - if (cvalues) { - // initialize first index in j - k = cptr[j]; - // loop index in j - while (k < cindex.length) { - // row - i = cindex[k]; - // marks - var wai = wa[i]; - var wbi = wb[i]; - // check Aij or Bij are nonzero - if (wai === mark || wbi === mark) { - // matrix values @ i,j - var va = wai === mark ? xa[i] : zero; - var vb = wbi === mark ? xb[i] : zero; - // Cij - var vc = cf(va, vb); - // check for zero - if (!eq(vc, zero)) { - // push value - cvalues.push(vc); - // increment pointer - k++; - } - else { - // remove value @ i, do not increment pointer - cindex.splice(k, 1); - } - } - } - } - } - // update cptr - cptr[columns] = cindex.length; - - // return sparse matrix - return c; - }; - - return algorithm05; -} - -exports.name = 'algorithm05'; -exports.factory = factory; - - -/***/ }), -/* 61 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var array = __webpack_require__(2); -var isInteger = __webpack_require__(3).isInteger; - -function factory (type, config, load, typed) { - - var matrix = load(__webpack_require__(0)); - - /** - * Create a 2-dimensional identity matrix with size m x n or n x n. - * The matrix has ones on the diagonal and zeros elsewhere. - * - * Syntax: - * - * math.eye(n) - * math.eye(n, format) - * math.eye(m, n) - * math.eye(m, n, format) - * math.eye([m, n]) - * math.eye([m, n], format) - * - * Examples: - * - * math.eye(3); // returns [[1, 0, 0], [0, 1, 0], [0, 0, 1]] - * math.eye(3, 2); // returns [[1, 0], [0, 1], [0, 0]] - * - * var A = [[1, 2, 3], [4, 5, 6]]; - * math.eye(math.size(A)); // returns [[1, 0, 0], [0, 1, 0]] - * - * See also: - * - * diag, ones, zeros, size, range - * - * @param {...number | Matrix | Array} size The size for the matrix - * @param {string} [format] The Matrix storage format - * - * @return {Matrix | Array | number} A matrix with ones on the diagonal. - */ - var eye = typed('eye', { - '': function () { - return (config.matrix === 'Matrix') ? matrix([]) : []; - }, - - 'string': function (format) { - return matrix(format); - }, - - 'number | BigNumber': function (rows) { - return _eye(rows, rows, config.matrix === 'Matrix' ? 'default' : undefined); - }, - - 'number | BigNumber, string': function (rows, format) { - return _eye(rows, rows, format); - }, - - 'number | BigNumber, number | BigNumber': function (rows, cols) { - return _eye(rows, cols, config.matrix === 'Matrix' ? 'default' : undefined); - }, - - 'number | BigNumber, number | BigNumber, string': function (rows, cols, format) { - return _eye(rows, cols, format); - }, - - 'Array': function (size) { - return _eyeVector(size); - }, - - 'Array, string': function (size, format) { - return _eyeVector(size, format); - }, - - 'Matrix': function (size) { - return _eyeVector(size.valueOf(), size.storage()); - }, - - 'Matrix, string': function (size, format) { - return _eyeVector(size.valueOf(), format); - } - }); - - eye.toTex = undefined; // use default template - - return eye; - - function _eyeVector (size, format) { - switch (size.length) { - case 0: return format ? matrix(format) : []; - case 1: return _eye(size[0], size[0], format); - case 2: return _eye(size[0], size[1], format); - default: throw new Error('Vector containing two values expected'); - } - } - - /** - * Create an identity matrix - * @param {number | BigNumber} rows - * @param {number | BigNumber} cols - * @param {string} [format] - * @returns {Matrix} - * @private - */ - function _eye (rows, cols, format) { - // BigNumber constructor with the right precision - var Big = (type.isBigNumber(rows) || type.isBigNumber(cols)) - ? type.BigNumber - : null; - - if (type.isBigNumber(rows)) rows = rows.toNumber(); - if (type.isBigNumber(cols)) cols = cols.toNumber(); - - if (!isInteger(rows) || rows < 1) { - throw new Error('Parameters in function eye must be positive integers'); - } - if (!isInteger(cols) || cols < 1) { - throw new Error('Parameters in function eye must be positive integers'); - } - - var one = Big ? new type.BigNumber(1) : 1; - var defaultValue = Big ? new Big(0) : 0; - var size = [rows, cols]; - - // check we need to return a matrix - if (format) { - // get matrix storage constructor - var F = type.Matrix.storage(format); - // create diagonal matrix (use optimized implementation for storage format) - return F.diagonal(size, one, 0, defaultValue); - } - - // create and resize array - var res = array.resize([], size, defaultValue); - // fill in ones on the diagonal - var minimum = rows < cols ? rows : cols; - // fill diagonal - for (var d = 0; d < minimum; d++) { - res[d][d] = one; - } - return res; - } -} - -exports.name = 'eye'; -exports.factory = factory; - - -/***/ }), -/* 62 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - var latex = __webpack_require__(4); var map = __webpack_require__(2).map; var join = __webpack_require__(2).join; var stringify = __webpack_require__(9).stringify; var escape = __webpack_require__(9).escape; var isSafeMethod = __webpack_require__(13).isSafeMethod; -var operators = __webpack_require__(52); +var operators = __webpack_require__(53); function factory (type, config, load, typed) { var register = load(__webpack_require__(7)).register; var compile = load(__webpack_require__(7)).compile; var Node = load(__webpack_require__(14)); - var ConstantNode = load(__webpack_require__(53)); - var SymbolNode = load(__webpack_require__(40)); - var FunctionNode = load(__webpack_require__(54)); + var ConstantNode = load(__webpack_require__(47)); + var SymbolNode = load(__webpack_require__(35)); + var FunctionNode = load(__webpack_require__(55)); /** * @constructor OperatorNode @@ -12678,6 +11603,1081 @@ exports.path = 'expression.node'; exports.factory = factory; +/***/ }), +/* 55 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var latex = __webpack_require__(4); +var stringify = __webpack_require__(9).stringify; +var escape = __webpack_require__(9).escape; +var extend = __webpack_require__(5).extend; +var hasOwnProperty = __webpack_require__(5).hasOwnProperty; +var map = __webpack_require__(2).map; +var join = __webpack_require__(2).join; +var validateSafeMethod = __webpack_require__(13).validateSafeMethod; +var getUniqueArgumentName = __webpack_require__(109); + +function factory (type, config, load, typed, math) { + var register = load(__webpack_require__(7)).register; + var compile = load(__webpack_require__(7)).compile; + var Node = load(__webpack_require__(14)); + var SymbolNode = load(__webpack_require__(35)); + + /** + * @constructor FunctionNode + * @extends {./Node} + * invoke a list with arguments on a node + * @param {./Node | string} fn Node resolving with a function on which to invoke + * the arguments, typically a SymboNode or AccessorNode + * @param {./Node[]} args + */ + function FunctionNode(fn, args) { + if (!(this instanceof FunctionNode)) { + throw new SyntaxError('Constructor must be called with the new operator'); + } + + if (typeof fn === 'string') { + fn = new SymbolNode(fn); + } + + // validate input + if (!type.isNode(fn)) throw new TypeError('Node expected as parameter "fn"'); + if (!Array.isArray(args) || !args.every(type.isNode)) { + throw new TypeError('Array containing Nodes expected for parameter "args"'); + } + + this.fn = fn; + this.args = args || []; + + // readonly property name + Object.defineProperty(this, 'name', { + get: function () { + return this.fn.name || ''; + }.bind(this), + set: function () { + throw new Error('Cannot assign a new name, name is read-only'); + } + }); + + // TODO: deprecated since v3, remove some day + var deprecated = function () { + throw new Error('Property `FunctionNode.object` is deprecated, use `FunctionNode.fn` instead'); + }; + Object.defineProperty(this, 'object', { get: deprecated, set: deprecated }); + } + + FunctionNode.prototype = new Node(); + + FunctionNode.prototype.type = 'FunctionNode'; + + FunctionNode.prototype.isFunctionNode = true; + + /** + * Compile the node to javascript code + * @param {FunctionNode} node The node to be compiled + * @param {Object} defs Object which can be used to define functions + * or constants globally available for the compiled + * expression + * @param {Object} args Object with local function arguments, the key is + * the name of the argument, and the value is `true`. + * The object may not be mutated, but must be + * extended instead. + * @return {string} js + * @private + */ + function compileFunctionNode(node, defs, args) { + if (!(node instanceof FunctionNode)) { + throw new TypeError('No valid FunctionNode') + } + + // compile fn and arguments + var jsFn = compile(node.fn, defs, args); + var jsArgs = map(node.args, function (arg) { + return compile(arg, defs, args); + }); + var jsScope = compileScope(defs, args); + var argsName; + + if (type.isSymbolNode(node.fn)) { + // we can statically determine whether the function has an rawArgs property + var name = node.fn.name; + var fn = hasOwnProperty(defs.math, name) ? defs.math[name] : undefined; + var isRaw = (typeof fn === 'function') && (fn.rawArgs == true); + + if (isRaw) { + // pass unevaluated parameters (nodes) to the function + argsName = getUniqueArgumentName(defs); + defs[argsName] = node.args; + + return jsFn + '(' + argsName + ', math, ' + jsScope + ')'; // "raw" evaluation + } + else { + return jsFn + '(' + join(jsArgs, ', ') + ')'; // "regular" evaluation + } + } + else if (type.isAccessorNode(node.fn) && + type.isIndexNode(node.fn.index) && node.fn.index.isObjectProperty()) { + // execute the function with the right context: the object of the AccessorNode + argsName = getUniqueArgumentName(defs); + defs[argsName] = node.args; + defs.validateSafeMethod = validateSafeMethod + + var jsObject = compile(node.fn.object, defs, args); + var jsProp = stringify(node.fn.index.getObjectProperty()); + + return '(function () {' + + 'var object = ' + jsObject + ';' + + 'validateSafeMethod(object, ' + jsProp + ');' + + 'return (object[' + jsProp + '] && object[' + jsProp + '].rawArgs) ' + + ' ? object[' + jsProp + '](' + argsName + ', math, ' + jsScope + ')' + // "raw" evaluation + ' : object[' + jsProp + '](' + join(jsArgs, ', ') + ')' + // "regular" evaluation + '})()'; + } + else { // node.fn.isAccessorNode && !node.fn.index.isObjectProperty() + // we have to dynamically determine whether the function has a rawArgs property + argsName = getUniqueArgumentName(defs); + defs[argsName] = node.args; + + return '(function () {' + + 'var fn = ' + jsFn + ';' + + 'return (fn && fn.rawArgs) ' + + ' ? fn(' + argsName + ', math, ' + jsScope + ')' + // "raw" evaluation + ' : fn(' + join(jsArgs, ', ') + ')' + // "regular" evaluation + '})()'; + } + } + + // register the compile function + register(FunctionNode.prototype.type, compileFunctionNode); + + /** + * Merge function arguments into scope before passing to the actual function. + * This is needed when the function has `rawArgs=true`. In that case we have + * to pass the `scope` as third argument, including any variables of + * enclosing functions. + * @param {Object} defs Object which can be used to define functions + * or constants globally available for the compiled + * expression + * @param {Object} args Object with local function arguments, the key is + * the name of the argument, and the value is `true`. + * The object may not be mutated, but must be + * extended instead. + * @return {string} js + * @private + */ + function compileScope (defs, args) { + var names = Object.keys(args) + // .map(function (arg) { + // return args[arg]; + // }); + if (names.length === 0) { + return 'scope'; + } + else { + // merge arguments into scope + defs.extend = extend; + + var jsArgs = map(names, function (name) { + return stringify(name) + ': ' + args[name]; + }); + + return 'extend(extend({}, scope), {' + join(jsArgs, ', ') + '})'; + } + } + + /** + * Execute a callback for each of the child nodes of this node + * @param {function(child: Node, path: string, parent: Node)} callback + */ + FunctionNode.prototype.forEach = function (callback) { + for (var i = 0; i < this.args.length; i++) { + callback(this.args[i], 'args[' + i + ']', this); + } + }; + + /** + * Create a new FunctionNode having it's childs be the results of calling + * the provided callback function for each of the childs of the original node. + * @param {function(child: Node, path: string, parent: Node): Node} callback + * @returns {FunctionNode} Returns a transformed copy of the node + */ + FunctionNode.prototype.map = function (callback) { + var fn = this.fn.map(callback); + var args = []; + for (var i = 0; i < this.args.length; i++) { + args[i] = this._ifNode(callback(this.args[i], 'args[' + i + ']', this)); + } + return new FunctionNode(fn, args); + }; + + /** + * Create a clone of this node, a shallow copy + * @return {FunctionNode} + */ + FunctionNode.prototype.clone = function () { + return new FunctionNode(this.fn, this.args.slice(0)); + }; + + //backup Node's toString function + //@private + var nodeToString = FunctionNode.prototype.toString; + + /** + * Get string representation. (wrapper function) + * This overrides parts of Node's toString function. + * If callback is an object containing callbacks, it + * calls the correct callback for the current node, + * otherwise it falls back to calling Node's toString + * function. + * + * @param {Object} options + * @return {string} str + * @override + */ + FunctionNode.prototype.toString = function (options) { + var customString; + var name = this.fn.toString(options); + if (options && (typeof options.handler === 'object') && hasOwnProperty(options.handler, name)) { + //callback is a map of callback functions + customString = options.handler[name](this, options); + } + + if (typeof customString !== 'undefined') { + return customString; + } + + //fall back to Node's toString + return nodeToString.call(this, options); + }; + + /** + * Get string representation + * @param {Object} options + * @return {string} str + */ + FunctionNode.prototype._toString = function (options) { + var args = this.args.map(function (arg) { + return arg.toString(options); + }); + + var fn = type.isFunctionAssignmentNode(this.fn) + ? ('(' + this.fn.toString(options) + ')') + : this.fn.toString(options) + + // format the arguments like "add(2, 4.2)" + return fn + '(' + args.join(', ') + ')'; + }; + + /** + * Get HTML representation + * @param {Object} options + * @return {string} str + */ + FunctionNode.prototype.toHTML = function (options) { + var args = this.args.map(function (arg) { + return arg.toHTML(options); + }); + + // format the arguments like "add(2, 4.2)" + return '' + escape(this.fn) + '(' + args.join(',') + ')'; + }; + + /* + * Expand a LaTeX template + * + * @param {string} template + * @param {Node} node + * @param {Object} options + * @private + **/ + function expandTemplate(template, node, options) { + var latex = ''; + + // Match everything of the form ${identifier} or ${identifier[2]} or $$ + // while submatching identifier and 2 (in the second case) + var regex = new RegExp('\\$(?:\\{([a-z_][a-z_0-9]*)(?:\\[([0-9]+)\\])?\\}|\\$)', 'ig'); + + var inputPos = 0; //position in the input string + var match; + while ((match = regex.exec(template)) !== null) { //go through all matches + // add everything in front of the match to the LaTeX string + latex += template.substring(inputPos, match.index); + inputPos = match.index; + + if (match[0] === '$$') { // escaped dollar sign + latex += '$'; + inputPos++; + } + else { // template parameter + inputPos += match[0].length; + var property = node[match[1]]; + if (!property) { + throw new ReferenceError('Template: Property ' + match[1] + ' does not exist.'); + } + if (match[2] === undefined) { //no square brackets + switch (typeof property) { + case 'string': + latex += property; + break; + case 'object': + if (type.isNode(property)) { + latex += property.toTex(options); + } + else if (Array.isArray(property)) { + //make array of Nodes into comma separated list + latex += property.map(function (arg, index) { + if (type.isNode(arg)) { + return arg.toTex(options); + } + throw new TypeError('Template: ' + match[1] + '[' + index + '] is not a Node.'); + }).join(','); + } + else { + throw new TypeError('Template: ' + match[1] + ' has to be a Node, String or array of Nodes'); + } + break; + default: + throw new TypeError('Template: ' + match[1] + ' has to be a Node, String or array of Nodes'); + } + } + else { //with square brackets + if (type.isNode(property[match[2]] && property[match[2]])) { + latex += property[match[2]].toTex(options); + } + else { + throw new TypeError('Template: ' + match[1] + '[' + match[2] + '] is not a Node.'); + } + } + } + } + latex += template.slice(inputPos); //append rest of the template + + return latex; + } + + //backup Node's toTex function + //@private + var nodeToTex = FunctionNode.prototype.toTex; + + /** + * Get LaTeX representation. (wrapper function) + * This overrides parts of Node's toTex function. + * If callback is an object containing callbacks, it + * calls the correct callback for the current node, + * otherwise it falls back to calling Node's toTex + * function. + * + * @param {Object} options + * @return {string} + */ + FunctionNode.prototype.toTex = function (options) { + var customTex; + if (options && (typeof options.handler === 'object') && hasOwnProperty(options.handler, this.name)) { + //callback is a map of callback functions + customTex = options.handler[this.name](this, options); + } + + if (typeof customTex !== 'undefined') { + return customTex; + } + + //fall back to Node's toTex + return nodeToTex.call(this, options); + }; + + /** + * Get LaTeX representation + * @param {Object} options + * @return {string} str + */ + FunctionNode.prototype._toTex = function (options) { + var args = this.args.map(function (arg) { //get LaTeX of the arguments + return arg.toTex(options); + }); + + var latexConverter; + + if (math[this.name] && ((typeof math[this.name].toTex === 'function') || (typeof math[this.name].toTex === 'object') || (typeof math[this.name].toTex === 'string'))) { + //.toTex is a callback function + latexConverter = math[this.name].toTex; + } + + var customToTex; + switch (typeof latexConverter) { + case 'function': //a callback function + customToTex = latexConverter(this, options); + break; + case 'string': //a template string + customToTex = expandTemplate(latexConverter, this, options); + break; + case 'object': //an object with different "converters" for different numbers of arguments + switch (typeof latexConverter[args.length]) { + case 'function': + customToTex = latexConverter[args.length](this, options); + break; + case 'string': + customToTex = expandTemplate(latexConverter[args.length], this, options); + break; + } + } + + if (typeof customToTex !== 'undefined') { + return customToTex; + } + + return expandTemplate(latex.defaultTemplate, this, options); + }; + + /** + * Get identifier. + * @return {string} + */ + FunctionNode.prototype.getIdentifier = function () { + return this.type + ':' + this.name; + }; + + return FunctionNode; +} + +exports.name = 'FunctionNode'; +exports.path = 'expression.node'; +exports.math = true; // request access to the math namespace as 5th argument of the factory function +exports.factory = factory; + + +/***/ }), +/* 56 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var deepMap = __webpack_require__(1); +var number = __webpack_require__(3); + +function factory (type, config, load, typed) { + /** + * Test whether a value is positive: larger than zero. + * The function supports types `number`, `BigNumber`, `Fraction`, and `Unit`. + * + * The function is evaluated element-wise in case of Array or Matrix input. + * + * Syntax: + * + * math.isPositive(x) + * + * Examples: + * + * math.isPositive(3); // returns true + * math.isPositive(-2); // returns false + * math.isPositive(0); // returns false + * math.isPositive(-0); // returns false + * math.isPositive(0.5); // returns true + * math.isPositive(math.bignumber(2)); // returns true + * math.isPositive(math.fraction(-2, 5)); // returns false + * math.isPositive(math.fraction(1,3)); // returns false + * math.isPositive('2'); // returns true + * math.isPositive([2, 0, -3]'); // returns [true, false, false] + * + * See also: + * + * isNumeric, isZero, isNegative, isInteger + * + * @param {number | BigNumber | Fraction | Unit | Array | Matrix} x Value to be tested + * @return {boolean} Returns true when `x` is larger than zero. + * Throws an error in case of an unknown data type. + */ + var isPositive = typed('isPositive', { + 'number': function (x) { + return x > 0; + }, + + 'BigNumber': function (x) { + return !x.isNeg() && !x.isZero() && !x.isNaN(); + }, + + 'Fraction': function (x) { + return x.s > 0 && x.n > 0; + }, + + 'Unit': function (x) { + return isPositive(x.value); + }, + + 'Array | Matrix': function (x) { + return deepMap(x, isPositive); + } + }); + + return isPositive; +} + +exports.name = 'isPositive'; +exports.factory = factory; + + +/***/ }), +/* 57 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var deepMap = __webpack_require__(1); + +function factory (type, config, load, typed) { + /** + * Calculate the square root of a value. + * + * For matrices, the function is evaluated element wise. + * + * Syntax: + * + * math.sqrt(x) + * + * Examples: + * + * math.sqrt(25); // returns 5 + * math.square(5); // returns 25 + * math.sqrt(-4); // returns Complex 2i + * + * See also: + * + * square, multiply, cube, cbrt + * + * @param {number | BigNumber | Complex | Array | Matrix | Unit} x + * Value for which to calculate the square root. + * @return {number | BigNumber | Complex | Array | Matrix | Unit} + * Returns the square root of `x` + */ + var sqrt = typed('sqrt', { + 'number': _sqrtNumber, + + 'Complex': function (x) { + return x.sqrt(); + }, + + 'BigNumber': function (x) { + if (!x.isNegative() || config.predictable) { + return x.sqrt(); + } + else { + // negative value -> downgrade to number to do complex value computation + return _sqrtNumber(x.toNumber()); + } + }, + + 'Array | Matrix': function (x) { + // deep map collection, skip zeros since sqrt(0) = 0 + return deepMap(x, sqrt, true); + }, + + 'Unit': function (x) { + // Someday will work for complex units when they are implemented + return x.pow(0.5); + } + + }); + + /** + * Calculate sqrt for a number + * @param {number} x + * @returns {number | Complex} Returns the square root of x + * @private + */ + function _sqrtNumber(x) { + if (x >= 0 || config.predictable) { + return Math.sqrt(x); + } + else { + return new type.Complex(x, 0).sqrt(); + } + } + + sqrt.toTex = {1: '\\sqrt{${args[0]}}'}; + + return sqrt; +} + +exports.name = 'sqrt'; +exports.factory = factory; + + +/***/ }), +/* 58 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var deepMap = __webpack_require__(1); +var number = __webpack_require__(3); + +function factory (type, config, load, typed) { + /** + * Test whether a value is negative: smaller than zero. + * The function supports types `number`, `BigNumber`, `Fraction`, and `Unit`. + * + * The function is evaluated element-wise in case of Array or Matrix input. + * + * Syntax: + * + * math.isNegative(x) + * + * Examples: + * + * math.isNegative(3); // returns false + * math.isNegative(-2); // returns true + * math.isNegative(0); // returns false + * math.isNegative(-0); // returns false + * math.isNegative(math.bignumber(2)); // returns false + * math.isNegative(math.fraction(-2, 5)); // returns true + * math.isNegative('-2'); // returns true + * math.isNegative([2, 0, -3]'); // returns [false, false, true] + * + * See also: + * + * isNumeric, isPositive, isZero, isInteger + * + * @param {number | BigNumber | Fraction | Unit | Array | Matrix} x Value to be tested + * @return {boolean} Returns true when `x` is larger than zero. + * Throws an error in case of an unknown data type. + */ + var isNegative = typed('isNegative', { + 'number': function (x) { + return x < 0; + }, + + 'BigNumber': function (x) { + return x.isNeg() && !x.isZero() && !x.isNaN(); + }, + + 'Fraction': function (x) { + return x.s < 0; // It's enough to decide on the sign + }, + + 'Unit': function (x) { + return isNegative(x.value); + }, + + 'Array | Matrix': function (x) { + return deepMap(x, isNegative); + } + }); + + return isNegative; +} + +exports.name = 'isNegative'; +exports.factory = factory; + + +/***/ }), +/* 59 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** + * Test whether a value is a Matrix + * @param {*} x + * @returns {boolean} returns true with input is a Matrix + * (like a DenseMatrix or SparseMatrix) + */ +module.exports = function isMatrix (x) { + return x && x.constructor.prototype.isMatrix || false; +}; + + +/***/ }), +/* 60 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** + * Determine the type of a variable + * + * type(x) + * + * The following types are recognized: + * + * 'undefined' + * 'null' + * 'boolean' + * 'number' + * 'string' + * 'Array' + * 'Function' + * 'Date' + * 'RegExp' + * 'Object' + * + * @param {*} x + * @return {string} Returns the name of the type. Primitive types are lower case, + * non-primitive types are upper-camel-case. + * For example 'number', 'string', 'Array', 'Date'. + */ +exports.type = function(x) { + var type = typeof x; + + if (type === 'object') { + if (x === null) return 'null'; + if (Array.isArray(x)) return 'Array'; + if (x instanceof Date) return 'Date'; + if (x instanceof RegExp) return 'RegExp'; + if (x instanceof Boolean) return 'boolean'; + if (x instanceof Number) return 'number'; + if (x instanceof String) return 'string'; + + return 'Object'; + } + + if (type === 'function') return 'Function'; + + return type; +}; + + +/***/ }), +/* 61 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var DimensionError = __webpack_require__(10); + +function factory (type, config, load, typed) { + + var equalScalar = load(__webpack_require__(11)); + + var SparseMatrix = type.SparseMatrix; + + /** + * Iterates over SparseMatrix A and SparseMatrix B nonzero items and invokes the callback function f(Aij, Bij). + * Callback function invoked MAX(NNZA, NNZB) times + * + * + * ┌ f(Aij, Bij) ; A(i,j) !== 0 || B(i,j) !== 0 + * C(i,j) = ┤ + * └ 0 ; otherwise + * + * + * @param {Matrix} a The SparseMatrix instance (A) + * @param {Matrix} b The SparseMatrix instance (B) + * @param {Function} callback The f(Aij,Bij) operation to invoke + * + * @return {Matrix} SparseMatrix (C) + * + * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97620294 + */ + var algorithm05 = function (a, b, callback) { + // sparse matrix arrays + var avalues = a._values; + var aindex = a._index; + var aptr = a._ptr; + var asize = a._size; + var adt = a._datatype; + // sparse matrix arrays + var bvalues = b._values; + var bindex = b._index; + var bptr = b._ptr; + var bsize = b._size; + var bdt = b._datatype; + + // validate dimensions + if (asize.length !== bsize.length) + throw new DimensionError(asize.length, bsize.length); + + // check rows & columns + if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) + throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')'); + + // rows & columns + var rows = asize[0]; + var columns = asize[1]; + + // datatype + var dt; + // equal signature to use + var eq = equalScalar; + // zero value + var zero = 0; + // callback signature to use + var cf = callback; + + // process data types + if (typeof adt === 'string' && adt === bdt) { + // datatype + dt = adt; + // find signature that matches (dt, dt) + eq = typed.find(equalScalar, [dt, dt]); + // convert 0 to the same datatype + zero = typed.convert(0, dt); + // callback + cf = typed.find(callback, [dt, dt]); + } + + // result arrays + var cvalues = avalues && bvalues ? [] : undefined; + var cindex = []; + var cptr = []; + // matrix + var c = new SparseMatrix({ + values: cvalues, + index: cindex, + ptr: cptr, + size: [rows, columns], + datatype: dt + }); + + // workspaces + var xa = cvalues ? [] : undefined; + var xb = cvalues ? [] : undefined; + // marks indicating we have a value in x for a given column + var wa = []; + var wb = []; + + // vars + var i, j, k, k1; + + // loop columns + for (j = 0; j < columns; j++) { + // update cptr + cptr[j] = cindex.length; + // columns mark + var mark = j + 1; + // loop values A(:,j) + for (k = aptr[j], k1 = aptr[j + 1]; k < k1; k++) { + // row + i = aindex[k]; + // push index + cindex.push(i); + // update workspace + wa[i] = mark; + // check we need to process values + if (xa) + xa[i] = avalues[k]; + } + // loop values B(:,j) + for (k = bptr[j], k1 = bptr[j + 1]; k < k1; k++) { + // row + i = bindex[k]; + // check row existed in A + if (wa[i] !== mark) { + // push index + cindex.push(i); + } + // update workspace + wb[i] = mark; + // check we need to process values + if (xb) + xb[i] = bvalues[k]; + } + // check we need to process values (non pattern matrix) + if (cvalues) { + // initialize first index in j + k = cptr[j]; + // loop index in j + while (k < cindex.length) { + // row + i = cindex[k]; + // marks + var wai = wa[i]; + var wbi = wb[i]; + // check Aij or Bij are nonzero + if (wai === mark || wbi === mark) { + // matrix values @ i,j + var va = wai === mark ? xa[i] : zero; + var vb = wbi === mark ? xb[i] : zero; + // Cij + var vc = cf(va, vb); + // check for zero + if (!eq(vc, zero)) { + // push value + cvalues.push(vc); + // increment pointer + k++; + } + else { + // remove value @ i, do not increment pointer + cindex.splice(k, 1); + } + } + } + } + } + // update cptr + cptr[columns] = cindex.length; + + // return sparse matrix + return c; + }; + + return algorithm05; +} + +exports.name = 'algorithm05'; +exports.factory = factory; + + +/***/ }), +/* 62 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var array = __webpack_require__(2); +var isInteger = __webpack_require__(3).isInteger; + +function factory (type, config, load, typed) { + + var matrix = load(__webpack_require__(0)); + + /** + * Create a 2-dimensional identity matrix with size m x n or n x n. + * The matrix has ones on the diagonal and zeros elsewhere. + * + * Syntax: + * + * math.eye(n) + * math.eye(n, format) + * math.eye(m, n) + * math.eye(m, n, format) + * math.eye([m, n]) + * math.eye([m, n], format) + * + * Examples: + * + * math.eye(3); // returns [[1, 0, 0], [0, 1, 0], [0, 0, 1]] + * math.eye(3, 2); // returns [[1, 0], [0, 1], [0, 0]] + * + * var A = [[1, 2, 3], [4, 5, 6]]; + * math.eye(math.size(A)); // returns [[1, 0, 0], [0, 1, 0]] + * + * See also: + * + * diag, ones, zeros, size, range + * + * @param {...number | Matrix | Array} size The size for the matrix + * @param {string} [format] The Matrix storage format + * + * @return {Matrix | Array | number} A matrix with ones on the diagonal. + */ + var eye = typed('eye', { + '': function () { + return (config.matrix === 'Matrix') ? matrix([]) : []; + }, + + 'string': function (format) { + return matrix(format); + }, + + 'number | BigNumber': function (rows) { + return _eye(rows, rows, config.matrix === 'Matrix' ? 'default' : undefined); + }, + + 'number | BigNumber, string': function (rows, format) { + return _eye(rows, rows, format); + }, + + 'number | BigNumber, number | BigNumber': function (rows, cols) { + return _eye(rows, cols, config.matrix === 'Matrix' ? 'default' : undefined); + }, + + 'number | BigNumber, number | BigNumber, string': function (rows, cols, format) { + return _eye(rows, cols, format); + }, + + 'Array': function (size) { + return _eyeVector(size); + }, + + 'Array, string': function (size, format) { + return _eyeVector(size, format); + }, + + 'Matrix': function (size) { + return _eyeVector(size.valueOf(), size.storage()); + }, + + 'Matrix, string': function (size, format) { + return _eyeVector(size.valueOf(), format); + } + }); + + eye.toTex = undefined; // use default template + + return eye; + + function _eyeVector (size, format) { + switch (size.length) { + case 0: return format ? matrix(format) : []; + case 1: return _eye(size[0], size[0], format); + case 2: return _eye(size[0], size[1], format); + default: throw new Error('Vector containing two values expected'); + } + } + + /** + * Create an identity matrix + * @param {number | BigNumber} rows + * @param {number | BigNumber} cols + * @param {string} [format] + * @returns {Matrix} + * @private + */ + function _eye (rows, cols, format) { + // BigNumber constructor with the right precision + var Big = (type.isBigNumber(rows) || type.isBigNumber(cols)) + ? type.BigNumber + : null; + + if (type.isBigNumber(rows)) rows = rows.toNumber(); + if (type.isBigNumber(cols)) cols = cols.toNumber(); + + if (!isInteger(rows) || rows < 1) { + throw new Error('Parameters in function eye must be positive integers'); + } + if (!isInteger(cols) || cols < 1) { + throw new Error('Parameters in function eye must be positive integers'); + } + + var one = Big ? new type.BigNumber(1) : 1; + var defaultValue = Big ? new Big(0) : 0; + var size = [rows, cols]; + + // check we need to return a matrix + if (format) { + // get matrix storage constructor + var F = type.Matrix.storage(format); + // create diagonal matrix (use optimized implementation for storage format) + return F.diagonal(size, one, 0, defaultValue); + } + + // create and resize array + var res = array.resize([], size, defaultValue); + // fill in ones on the diagonal + var minimum = rows < cols ? rows : cols; + // fill diagonal + for (var d = 0; d < minimum; d++) { + res[d][d] = one; + } + return res; + } +} + +exports.name = 'eye'; +exports.factory = factory; + + /***/ }), /* 63 */ /***/ (function(module, exports, __webpack_require__) { @@ -12833,7 +12833,7 @@ exports.factory = factory; var clone = __webpack_require__(5).clone; var isInteger = __webpack_require__(3).isInteger; var array = __webpack_require__(2); -var IndexError = __webpack_require__(51); +var IndexError = __webpack_require__(52); var DimensionError = __webpack_require__(10); function factory (type, config, load, typed) { @@ -12982,8 +12982,8 @@ exports.factory = factory; var arraySize = __webpack_require__(2).size; -var isMatrix = __webpack_require__(58); -var IndexError = __webpack_require__(51); +var isMatrix = __webpack_require__(59); +var IndexError = __webpack_require__(52); /** * Reduce a given matrix or array to a new matrix or @@ -13072,7 +13072,7 @@ function _switch(mat){ "use strict"; -var isCollection = __webpack_require__(46); +var isCollection = __webpack_require__(48); /** * Test whether an array contains collections @@ -13282,7 +13282,7 @@ exports.factory = factory; "use strict"; -var scatter = __webpack_require__(436); +var scatter = __webpack_require__(438); var DimensionError = __webpack_require__(10); function factory (type, config, load, typed) { @@ -13455,7 +13455,7 @@ exports.factory = factory; var deepMap = __webpack_require__(1); function factory (type, config, load, typed) { - var gamma = load(__webpack_require__(137)); + var gamma = load(__webpack_require__(140)); var latex = __webpack_require__(4); /** @@ -14245,7 +14245,7 @@ exports.factory = factory; "use strict"; -var types = __webpack_require__(59); +var types = __webpack_require__(60); function factory (type, config, load, typed) { /** @@ -14351,9 +14351,9 @@ function factory (type, config, load, typed) { var compile = load(__webpack_require__(7)).compile; var Node = load(__webpack_require__(14)); var RangeNode = load(__webpack_require__(79)); - var SymbolNode = load(__webpack_require__(40)); + var SymbolNode = load(__webpack_require__(35)); - var Range = load(__webpack_require__(93)); + var Range = load(__webpack_require__(94)); var isArray = Array.isArray; @@ -14609,7 +14609,7 @@ exports.factory = factory; "use strict"; -var operators = __webpack_require__(52); +var operators = __webpack_require__(53); function factory (type, config, load, typed) { var register = load(__webpack_require__(7)).register; @@ -15081,5167 +15081,20 @@ exports.factory = factory; "use strict"; -var deepMap = __webpack_require__(1); -var number = __webpack_require__(3); - -function factory (type, config, load, typed) { - /** - * Test whether a value is zero. - * The function can check for zero for types `number`, `BigNumber`, `Fraction`, - * `Complex`, and `Unit`. - * - * The function is evaluated element-wise in case of Array or Matrix input. - * - * Syntax: - * - * math.isZero(x) - * - * Examples: - * - * math.isZero(0); // returns true - * math.isZero(2); // returns false - * math.isZero(0.5); // returns false - * math.isZero(math.bignumber(0)); // returns true - * math.isZero(math.fraction(0)); // returns true - * math.isZero(math.fraction(1,3)); // returns false - * math.isZero(math.complex('2 - 4i'); // returns false - * math.isZero(math.complex('0i'); // returns true - * math.isZero('0'); // returns true - * math.isZero('2'); // returns false - * math.isZero([2, 0, -3]'); // returns [false, true, false] - * - * See also: - * - * isNumeric, isPositive, isNegative, isInteger - * - * @param {number | BigNumber | Complex | Fraction | Unit | Array | Matrix} x Value to be tested - * @return {boolean} Returns true when `x` is zero. - * Throws an error in case of an unknown data type. - */ - var isZero = typed('isZero', { - 'number': function (x) { - return x === 0; - }, - - 'BigNumber': function (x) { - return x.isZero(); - }, - - 'Complex': function (x) { - return x.re === 0 && x.im === 0; - }, - - 'Fraction': function (x) { - return x.d === 1 && x.n === 0; - }, - - 'Unit': function (x) { - return isZero(x.value); - }, - - 'Array | Matrix': function (x) { - return deepMap(x, isZero); - } - }); - - return isZero; -} - -exports.name = 'isZero'; -exports.factory = factory; - - -/***/ }), -/* 83 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -function factory () { - - /** - * This function "flips" its input about the integer -1. - * - * @param {Number} i The value to flip - * - * Reference: http://faculty.cse.tamu.edu/davis/publications.html - */ - var cs_flip = function (i) { - // flip the value - return -i - 2; - }; - - return cs_flip; -} - -exports.name = 'cs_flip'; -exports.path = 'sparse'; -exports.factory = factory; - - -/***/ }), -/* 84 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var util = __webpack_require__(25); - -var string = util.string; -var array = util.array; - -var isArray = Array.isArray; - -function factory (type) { - - var DenseMatrix = type.DenseMatrix; - - /** - * Validates matrix and column vector b for backward/forward substitution algorithms. - * - * @param {Matrix} m An N x N matrix - * @param {Array | Matrix} b A column vector - * @param {Boolean} copy Return a copy of vector b - * - * @return {DenseMatrix} Dense column vector b - */ - var solveValidation = function (m, b, copy) { - // matrix size - var size = m.size(); - // validate matrix dimensions - if (size.length !== 2) - throw new RangeError('Matrix must be two dimensional (size: ' + string.format(size) + ')'); - // rows & columns - var rows = size[0]; - var columns = size[1]; - // validate rows & columns - if (rows !== columns) - throw new RangeError('Matrix must be square (size: ' + string.format(size) + ')'); - // vars - var data, i, bdata; - // check b is matrix - if (type.isMatrix(b)) { - // matrix size - var msize = b.size(); - // vector - if (msize.length === 1) { - // check vector length - if (msize[0] !== rows) - throw new RangeError('Dimension mismatch. Matrix columns must match vector length.'); - // create data array - data = []; - // matrix data (DenseMatrix) - bdata = b._data; - // loop b data - for (i = 0; i < rows; i++) { - // row array - data[i] = [bdata[i]]; - } - // return Dense Matrix - return new DenseMatrix({ - data: data, - size: [rows, 1], - datatype: b._datatype - }); - } - // two dimensions - if (msize.length === 2) { - // array must be a column vector - if (msize[0] !== rows || msize[1] !== 1) - throw new RangeError('Dimension mismatch. Matrix columns must match vector length.'); - // check matrix type - if (type.isDenseMatrix(b)) { - // check a copy is needed - if (copy) { - // create data array - data = []; - // matrix data (DenseMatrix) - bdata = b._data; - // loop b data - for (i = 0; i < rows; i++) { - // row array - data[i] = [bdata[i][0]]; - } - // return Dense Matrix - return new DenseMatrix({ - data: data, - size: [rows, 1], - datatype: b._datatype - }); - } - // b is already a column vector - return b; - } - // create data array - data = []; - for (i = 0; i < rows; i++) - data[i] = [0]; - // sparse matrix arrays - var values = b._values; - var index = b._index; - var ptr = b._ptr; - // loop values in column 0 - for (var k1 = ptr[1], k = ptr[0]; k < k1; k++) { - // row - i = index[k]; - // add to data - data[i][0] = values[k]; - } - // return Dense Matrix - return new DenseMatrix({ - data: data, - size: [rows, 1], - datatype: b._datatype - }); - } - // throw error - throw new RangeError('Dimension mismatch. Matrix columns must match vector length.'); - } - // check b is array - if (isArray(b)) { - // size - var asize = array.size(b); - // check matrix dimensions, vector - if (asize.length === 1) { - // check vector length - if (asize[0] !== rows) - throw new RangeError('Dimension mismatch. Matrix columns must match vector length.'); - // create data array - data = []; - // loop b - for (i = 0; i < rows; i++) { - // row array - data[i] = [b[i]]; - } - // return Dense Matrix - return new DenseMatrix({ - data: data, - size: [rows, 1] - }); - } - if (asize.length === 2) { - // array must be a column vector - if (asize[0] !== rows || asize[1] !== 1) - throw new RangeError('Dimension mismatch. Matrix columns must match vector length.'); - // create data array - data = []; - // loop b data - for (i = 0; i < rows; i++) { - // row array - data[i] = [b[i][0]]; - } - // return Dense Matrix - return new DenseMatrix({ - data: data, - size: [rows, 1] - }); - } - // throw error - throw new RangeError('Dimension mismatch. Matrix columns must match vector length.'); - } - }; - - return solveValidation; -} - -exports.factory = factory; - -/***/ }), -/* 85 */ -/***/ (function(module, exports, __webpack_require__) { - -var bitNot = __webpack_require__(86); - -/** - * Applies bitwise function to numbers - * @param {BigNumber} x - * @param {BigNumber} y - * @param {function (a, b)} func - * @return {BigNumber} - */ -module.exports = function bitwise(x, y, func) { - var BigNumber = x.constructor; - - var xBits, yBits; - var xSign = +(x.s < 0); - var ySign = +(y.s < 0); - if (xSign) { - xBits = decCoefficientToBinaryString(bitNot(x)); - for (var i = 0; i < xBits.length; ++i) { - xBits[i] ^= 1; - } - } else { - xBits = decCoefficientToBinaryString(x); - } - if (ySign) { - yBits = decCoefficientToBinaryString(bitNot(y)); - for (var i = 0; i < yBits.length; ++i) { - yBits[i] ^= 1; - } - } else { - yBits = decCoefficientToBinaryString(y); - } - - var minBits, maxBits, minSign; - if (xBits.length <= yBits.length) { - minBits = xBits; - maxBits = yBits; - minSign = xSign; - } else { - minBits = yBits; - maxBits = xBits; - minSign = ySign; - } - - var shortLen = minBits.length; - var longLen = maxBits.length; - var expFuncVal = func(xSign, ySign) ^ 1; - var outVal = new BigNumber(expFuncVal ^ 1); - var twoPower = new BigNumber(1); - var two = new BigNumber(2); - - var prevPrec = BigNumber.precision; - BigNumber.config({precision: 1E9}); - - while (shortLen > 0) { - if (func(minBits[--shortLen], maxBits[--longLen]) == expFuncVal) { - outVal = outVal.plus(twoPower); - } - twoPower = twoPower.times(two); - } - while (longLen > 0) { - if (func(minSign, maxBits[--longLen]) == expFuncVal) { - outVal = outVal.plus(twoPower); - } - twoPower = twoPower.times(two); - } - - BigNumber.config({precision: prevPrec}); - - if (expFuncVal == 0) { - outVal.s = -outVal.s; - } - return outVal; -}; - -/* Extracted from decimal.js, and edited to specialize. */ -function decCoefficientToBinaryString (x) { - // Convert to string - var a = x.d; // array with digits - var r = a[0] + ''; - - for (var i = 1; i < a.length; ++i) { - var s = a[i] + ''; - for (var z = 7 - s.length; z--; ) { - s = '0' + s; - } - - r += s; - } - - var j; - for (j = r.length - 1; r.charAt(j) == '0'; --j); - - var xe = x.e; - var str = r.slice(0, j + 1 || 1); - var strL = str.length; - if (xe > 0) { - if (++xe > strL) { - // Append zeros. - for (xe -= strL; xe--; str += '0'); - } else if (xe < strL) { - str = str.slice(0, xe) + '.' + str.slice(xe); - } - } - - // Convert from base 10 (decimal) to base 2 - var arr = [0]; - for (var i = 0; i < str.length; ) { - for (var arrL = arr.length; arrL--; arr[arrL] *= 10); - - arr[0] += str.charAt(i++) << 0; // convert to int - for (var j = 0; j < arr.length; ++j) { - if (arr[j] > 1) { - if (arr[j + 1] == null) { - arr[j + 1] = 0; - } - - arr[j + 1] += arr[j] >> 1; - arr[j] &= 1; - } - } - } - - return arr.reverse(); -} - - -/***/ }), -/* 86 */ -/***/ (function(module, exports) { - -/** - * Bitwise not - * @param {BigNumber} value - * @return {BigNumber} Result of ~`x`, fully precise - * - */ -module.exports = function bitNot (x) { - if (x.isFinite() && !x.isInteger()) { - throw new Error('Integer expected in function bitNot'); - } - - var BigNumber = x.constructor; - var prevPrec = BigNumber.precision; - BigNumber.config({precision: 1E9}); - - var x = x.plus(new BigNumber(1)); - x.s = -x.s || null; - - BigNumber.config({precision: prevPrec}); - return x; -}; - - -/***/ }), -/* 87 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var DimensionError = __webpack_require__(10); - -function factory (type, config, load, typed) { - - var equalScalar = load(__webpack_require__(11)); - - var SparseMatrix = type.SparseMatrix; - - /** - * Iterates over SparseMatrix A and SparseMatrix B nonzero items and invokes the callback function f(Aij, Bij). - * Callback function invoked MAX(NNZA, NNZB) times - * - * - * ┌ f(Aij, Bij) ; A(i,j) !== 0 && B(i,j) !== 0 - * C(i,j) = ┤ A(i,j) ; A(i,j) !== 0 - * └ 0 ; otherwise - * - * - * @param {Matrix} a The SparseMatrix instance (A) - * @param {Matrix} b The SparseMatrix instance (B) - * @param {Function} callback The f(Aij,Bij) operation to invoke - * - * @return {Matrix} SparseMatrix (C) - * - * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97620294 - */ - var algorithm08 = function (a, b, callback) { - // sparse matrix arrays - var avalues = a._values; - var aindex = a._index; - var aptr = a._ptr; - var asize = a._size; - var adt = a._datatype; - // sparse matrix arrays - var bvalues = b._values; - var bindex = b._index; - var bptr = b._ptr; - var bsize = b._size; - var bdt = b._datatype; - - // validate dimensions - if (asize.length !== bsize.length) - throw new DimensionError(asize.length, bsize.length); - - // check rows & columns - if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) - throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')'); - - // sparse matrix cannot be a Pattern matrix - if (!avalues || !bvalues) - throw new Error('Cannot perform operation on Pattern Sparse Matrices'); - - // rows & columns - var rows = asize[0]; - var columns = asize[1]; - - // datatype - var dt; - // equal signature to use - var eq = equalScalar; - // zero value - var zero = 0; - // callback signature to use - var cf = callback; - - // process data types - if (typeof adt === 'string' && adt === bdt) { - // datatype - dt = adt; - // find signature that matches (dt, dt) - eq = typed.find(equalScalar, [dt, dt]); - // convert 0 to the same datatype - zero = typed.convert(0, dt); - // callback - cf = typed.find(callback, [dt, dt]); - } - - // result arrays - var cvalues = []; - var cindex = []; - var cptr = []; - // matrix - var c = new SparseMatrix({ - values: cvalues, - index: cindex, - ptr: cptr, - size: [rows, columns], - datatype: dt - }); - - // workspace - var x = []; - // marks indicating we have a value in x for a given column - var w = []; - - // vars - var k, k0, k1, i; - - // loop columns - for (var j = 0; j < columns; j++) { - // update cptr - cptr[j] = cindex.length; - // columns mark - var mark = j + 1; - // loop values in a - for (k0 = aptr[j], k1 = aptr[j + 1], k = k0; k < k1; k++) { - // row - i = aindex[k]; - // mark workspace - w[i] = mark; - // set value - x[i] = avalues[k]; - // add index - cindex.push(i); - } - // loop values in b - for (k0 = bptr[j], k1 = bptr[j + 1], k = k0; k < k1; k++) { - // row - i = bindex[k]; - // check value exists in workspace - if (w[i] === mark) { - // evaluate callback - x[i] = cf(x[i], bvalues[k]); - } - } - // initialize first index in j - k = cptr[j]; - // loop index in j - while (k < cindex.length) { - // row - i = cindex[k]; - // value @ i - var v = x[i]; - // check for zero value - if (!eq(v, zero)) { - // push value - cvalues.push(v); - // increment pointer - k++; - } - else { - // remove value @ i, do not increment pointer - cindex.splice(k, 1); - } - } - } - // update cptr - cptr[columns] = cindex.length; - - // return sparse matrix - return c; - }; - - return algorithm08; -} - -exports.name = 'algorithm08'; -exports.factory = factory; - - -/***/ }), -/* 88 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var isInteger = __webpack_require__(3).isInteger; - -function factory (type, config, load, typed) { - var asc = load(__webpack_require__(49)); - function desc(a, b) { - return -asc(a, b); - } - - /** - * Partition-based selection of an array or 1D matrix. - * Will find the kth smallest value, and mutates the input array. - * Uses Quickselect. - * - * Syntax: - * - * math.partitionSelect(x, k) - * math.partitionSelect(x, k, compare) - * - * Examples: - * - * math.partitionSelect([5, 10, 1], 2); // returns 10 - * math.partitionSelect(['C', 'B', 'A', 'D'], 1); // returns 'B' - * - * function sortByLength (a, b) { - * return a.length - b.length; - * } - * math.partitionSelect(['Langdon', 'Tom', 'Sara'], 2, sortByLength); // returns 'Langdon' - * - * See also: - * - * sort - * - * @param {Matrix | Array} x A one dimensional matrix or array to sort - * @param {Number} k The kth smallest value to be retrieved; zero-based index - * @param {Function | 'asc' | 'desc'} [compare='asc'] - * An optional comparator function. The function is called as - * `compare(a, b)`, and must return 1 when a > b, -1 when a < b, - * and 0 when a == b. - * @return {*} Returns the kth lowest value. - */ - return typed('partitionSelect', { - 'Array | Matrix, number': function (x, k) { - return _partitionSelect(x, k, asc); - }, - - 'Array | Matrix, number, string': function (x, k, compare) { - if (compare === 'asc') { - return _partitionSelect(x, k, asc); - } - else if (compare === 'desc') { - return _partitionSelect(x, k, desc); - } - else { - throw new Error('Compare string must be "asc" or "desc"'); - } - }, - - 'Array | Matrix, number, function': _partitionSelect - }); - - function _partitionSelect(x, k, compare) { - if (!isInteger(k) || k < 0) { - throw new Error('k must be a non-negative integer'); - } - - if (type.isMatrix(x)) { - var size = x.size(); - if (size.length > 1) { - throw new Error('Only one dimensional matrices supported'); - } - return quickSelect(x.valueOf(), k, compare); - } - - if (Array.isArray(x)) { - return quickSelect(x, k, compare); - } - } - - /** - * Quickselect algorithm. - * Code adapted from: - * http://blog.teamleadnet.com/2012/07/quick-select-algorithm-find-kth-element.html - * - * @param {Array} arr - * @param {Number} k - * @param {Function} compare - * @private - */ - function quickSelect(arr, k, compare) { - if (k >= arr.length) { - throw new Error('k out of bounds'); - } - - var from = 0; - var to = arr.length - 1; - - // if from == to we reached the kth element - while (from < to) { - var r = from; - var w = to; - var pivot = arr[Math.floor(Math.random() * (to - from + 1)) + from]; - - // stop if the reader and writer meets - while (r < w) { - // arr[r] >= pivot - if (compare(arr[r], pivot) >= 0) { // put the large values at the end - var tmp = arr[w]; - arr[w] = arr[r]; - arr[r] = tmp; - --w; - } else { // the value is smaller than the pivot, skip - ++r; - } - } - - // if we stepped up (r++) we need to step one down (arr[r] > pivot) - if (compare(arr[r], pivot) > 0) { - --r; - } - - // the r pointer is on the end of the first k elements - if (k <= r) { - to = r; - } else { - from = r + 1; - } - } - - return arr[k]; - } -} - -exports.name = 'partitionSelect'; -exports.factory = factory; - - -/***/ }), -/* 89 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var ArgumentsError = __webpack_require__(50); -var isCollection = __webpack_require__(46); -var isNumber = __webpack_require__(3).isNumber; - -// TODO: rethink math.distribution -// TODO: rework to a typed function -function factory (type, config, load, typed, math) { - var matrix = load(__webpack_require__(0)); - var array = __webpack_require__(2); - - // seeded pseudo random number generator - var rng = load(__webpack_require__(490)); - - /** - * Create a distribution object with a set of random functions for given - * random distribution. - * - * Syntax: - * - * math.distribution(name) - * - * Examples: - * - * var normalDist = math.distribution('normal'); // create a normal distribution - * normalDist.random(0, 10); // get a random value between 0 and 10 - * - * See also: - * - * random, randomInt, pickRandom - * - * @param {string} name Name of a distribution. Choose from 'uniform', 'normal'. - * @return {Object} Returns a distribution object containing functions: - * `random([size] [, min] [, max])`, - * `randomInt([min] [, max])`, - * `pickRandom(array)` - */ - function distribution(name) { - if (!distributions.hasOwnProperty(name)) - throw new Error('Unknown distribution ' + name); - - var args = Array.prototype.slice.call(arguments, 1), - distribution = distributions[name].apply(this, args); - - return (function(distribution) { - - // This is the public API for all distributions - var randFunctions = { - - random: function(arg1, arg2, arg3) { - var size, min, max; - - if (arguments.length > 3) { - throw new ArgumentsError('random', arguments.length, 0, 3); - } else if (arguments.length === 1) { - // `random(max)` or `random(size)` - if (isCollection(arg1)) { - size = arg1; - } else { - max = arg1; - } - } else if (arguments.length === 2) { - // `random(min, max)` or `random(size, max)` - if (isCollection(arg1)) { - size = arg1; - max = arg2; - } else { - min = arg1; - max = arg2; - } - } else { - // `random(size, min, max)` - size = arg1; - min = arg2; - max = arg3; - } - - // TODO: validate type of size - if ((min !== undefined && !isNumber(min)) || (max !== undefined && !isNumber(max))) { - throw new TypeError('Invalid argument in function random'); - } - - if (max === undefined) max = 1; - if (min === undefined) min = 0; - if (size !== undefined) { - var res = _randomDataForMatrix(size.valueOf(), min, max, _random); - return type.isMatrix(size) ? matrix(res) : res; - } - return _random(min, max); - }, - - randomInt: typed({ - 'number | Array': function(arg) { - var min = 0; - - if (isCollection(arg)) { - var size = arg; - var max = 1; - var res = _randomDataForMatrix(size.valueOf(), min, max, _randomInt); - return type.isMatrix(size) ? matrix(res) : res; - } else { - var max = arg; - return _randomInt(min, max); - } - }, - 'number | Array, number': function(arg1, arg2) { - if (isCollection(arg1)) { - var size = arg1; - var max = arg2; - var min = 0; - var res = _randomDataForMatrix(size.valueOf(), min, max, _randomInt); - return type.isMatrix(size) ? matrix(res) : res; - } - else { - var min = arg1; - var max = arg2; - return _randomInt(min, max); - } - }, - 'Array, number, number': function(size, min, max) { - var res = _randomDataForMatrix(size.valueOf(), min, max, _randomInt); - return (size && size.isMatrix === true) ? matrix(res) : res; - } - }), - - pickRandom: typed({ - 'Array': function(possibles) { - return _pickRandom(possibles); - }, - 'Array, number | Array': function(possibles, arg2) { - var number, weights; - - if (Array.isArray(arg2)) { - weights = arg2; - } else if (isNumber(arg2)) { - number = arg2; - } else { - throw new TypeError('Invalid argument in function pickRandom') - } - - return _pickRandom(possibles, number, weights); - }, - 'Array, number | Array, Array | number': function(possibles, arg2, arg3) { - var number, weights; - - if (Array.isArray(arg2)) { - weights = arg2; - number = arg3; - } else { - weights = arg3; - number = arg2; - } - - if (!Array.isArray(weights) || !isNumber(number)) { - throw new TypeError('Invalid argument in function pickRandom'); - } - - return _pickRandom(possibles, number, weights); - } - }) - } - - var _pickRandom = function(possibles, number, weights) { - var single = (typeof number === 'undefined'); - - if (single) { - number = 1; - } - - if (type.isMatrix(possibles)) { - possibles = possibles.valueOf(); // get Array - } else if (!Array.isArray(possibles)) { - throw new TypeError('Unsupported type of value in function pickRandom'); - } - - if (array.size(possibles).length > 1) { - throw new Error('Only one dimensional vectors supported'); - } - - if (typeof weights !== 'undefined') { - if (weights.length != possibles.length) { - throw new Error('Weights must have the same length as possibles'); - } - - var totalWeights = 0; - - for (var i = 0, len = weights.length; i < len; i++) { - if (!isNumber(weights[i]) || weights[i] < 0) { - throw new Error('Weights must be an array of positive numbers'); - } - - totalWeights += weights[i]; - } - } - - var length = possibles.length; - - if (length == 0) { - return []; - } else if (number >= length) { - return possibles; - } - - var result = []; - var pick; - - while (result.length < number) { - if (typeof weights === 'undefined') { - pick = possibles[Math.floor(rng() * length)]; - } else { - var randKey = rng() * totalWeights; - - for (var i = 0, len = possibles.length; i < len; i++) { - randKey -= weights[i]; - - if (randKey < 0) { - pick = possibles[i]; - break; - } - } - } - - if (result.indexOf(pick) == -1) { - result.push(pick); - } - } - - return single ? result[0] : result; - - // TODO: add support for multi dimensional matrices - } - - var _random = function(min, max) { - return min + distribution() * (max - min); - }; - - var _randomInt = function(min, max) { - return Math.floor(min + distribution() * (max - min)); - }; - - // This is a function for generating a random matrix recursively. - var _randomDataForMatrix = function(size, min, max, randFunc) { - var data = [], length, i; - size = size.slice(0); - - if (size.length > 1) { - for (var i = 0, length = size.shift(); i < length; i++) { - data.push(_randomDataForMatrix(size, min, max, randFunc)); - } - } else { - for (var i = 0, length = size.shift(); i < length; i++) { - data.push(randFunc(min, max)); - } - } - - return data; - }; - - return randFunctions; - - })(distribution); - } - - // Each distribution is a function that takes no argument and when called returns - // a number between 0 and 1. - var distributions = { - - uniform: function() { - return rng; - }, - - // Implementation of normal distribution using Box-Muller transform - // ref : http://en.wikipedia.org/wiki/Box%E2%80%93Muller_transform - // We take : mean = 0.5, standard deviation = 1/6 - // so that 99.7% values are in [0, 1]. - normal: function() { - return function() { - var u1, u2, - picked = -1; - // We reject values outside of the interval [0, 1] - // TODO: check if it is ok to do that? - while (picked < 0 || picked > 1) { - u1 = rng(); - u2 = rng(); - picked = 1/6 * Math.pow(-2 * Math.log(u1), 0.5) * Math.cos(2 * Math.PI * u2) + 0.5; - } - return picked; - } - } - }; - - distribution.toTex = undefined; // use default template - - return distribution; -} - -exports.name = 'distribution'; -exports.factory = factory; - - -/***/ }), -/* 90 */ -/***/ (function(module, exports, __webpack_require__) { - -var Emitter = __webpack_require__(153); - -/** - * Extend given object with emitter functions `on`, `off`, `once`, `emit` - * @param {Object} obj - * @return {Object} obj - */ -exports.mixin = function (obj) { - // create event emitter - var emitter = new Emitter(); - - // bind methods to obj (we don't want to expose the emitter.e Array...) - obj.on = emitter.on.bind(emitter); - obj.off = emitter.off.bind(emitter); - obj.once = emitter.once.bind(emitter); - obj.emit = emitter.emit.bind(emitter); - - return obj; -}; - - -/***/ }), -/* 91 */ -/***/ (function(module, exports, __webpack_require__) { - -var Complex = __webpack_require__(168); -var format = __webpack_require__(3).format; -var isNumber = __webpack_require__(3).isNumber; function factory (type, config, load, typed, math) { - - /** - * Attach type information - */ - Complex.prototype.type = 'Complex'; - Complex.prototype.isComplex = true; - - - /** - * Get a JSON representation of the complex number - * @returns {Object} Returns a JSON object structured as: - * `{"mathjs": "Complex", "re": 2, "im": 3}` - */ - Complex.prototype.toJSON = function () { - return { - mathjs: 'Complex', - re: this.re, - im: this.im - }; - }; - - /* - * Return the value of the complex number in polar notation - * The angle phi will be set in the interval of [-pi, pi]. - * @return {{r: number, phi: number}} Returns and object with properties r and phi. - */ - Complex.prototype.toPolar = function () { - return { - r: this.abs(), - phi: this.arg() - }; - }; - - /** - * Get a string representation of the complex number, - * with optional formatting options. - * @param {Object | number | Function} [options] Formatting options. See - * lib/utils/number:format for a - * description of the available - * options. - * @return {string} str - */ - Complex.prototype.format = function (options) { - var str = ''; - var im = this.im; - var re = this.re; - var strRe = format(this.re, options); - var strIm = format(this.im, options); - - // round either re or im when smaller than the configured precision - var precision = isNumber(options) ? options : options ? options.precision : null; - if (precision !== null) { - var epsilon = Math.pow(10, -precision); - if (Math.abs(re / im) < epsilon) { - re = 0; - } - if (Math.abs(im / re) < epsilon) { - im = 0; - } - } - - if (im == 0) { - // real value - str = strRe; - } else if (re == 0) { - // purely complex value - if (im == 1) { - str = 'i'; - } else if (im == -1) { - str = '-i'; - } else { - str = strIm + 'i'; - } - } else { - // complex value - if (im < 0) { - if (im == -1) { - str = strRe + ' - i'; - } else { - str = strRe + ' - ' + strIm.substring(1) + 'i'; - } - } else { - if (im == 1) { - str = strRe + ' + i'; - } else { - str = strRe + ' + ' + strIm + 'i'; - } - } - } - return str; - }; - - /** - * Create a complex number from polar coordinates - * - * Usage: - * - * Complex.fromPolar(r: number, phi: number) : Complex - * Complex.fromPolar({r: number, phi: number}) : Complex - * - * @param {*} args... - * @return {Complex} - */ - Complex.fromPolar = function (args) { - switch (arguments.length) { - case 1: - var arg = arguments[0]; - if (typeof arg === 'object') { - return Complex(arg); - } - throw new TypeError('Input has to be an object with r and phi keys.'); - - case 2: - var r = arguments[0], - phi = arguments[1]; - if (isNumber(r)) { - if (type.isUnit(phi) && phi.hasBase('ANGLE')) { - // convert unit to a number in radians - phi = phi.toNumber('rad'); - } - - if (isNumber(phi)) { - return new Complex({r: r, phi: phi}); - } - - throw new TypeError('Phi is not a number nor an angle unit.'); - } else { - throw new TypeError('Radius r is not a number.'); - } - - default: - throw new SyntaxError('Wrong number of arguments in function fromPolar'); - } - }; - - - Complex.prototype.valueOf = Complex.prototype.toString; - - /** - * Create a Complex number from a JSON object - * @param {Object} json A JSON Object structured as - * {"mathjs": "Complex", "re": 2, "im": 3} - * All properties are optional, default values - * for `re` and `im` are 0. - * @return {Complex} Returns a new Complex number - */ - Complex.fromJSON = function (json) { - return new Complex(json); - }; - - // apply the current epsilon - Complex.EPSILON = config.epsilon; - - // listen for changed in the configuration, automatically apply changed epsilon - math.on('config', function (curr, prev) { - if (curr.epsilon !== prev.epsilon) { - Complex.EPSILON = curr.epsilon; - } - }); - - /** - * Compare two complex numbers, `a` and `b`: - * - * - Returns 1 when the real part of `a` is larger than the real part of `b` - * - Returns -1 when the real part of `a` is smaller than the real part of `b` - * - Returns 1 when the real parts are equal - * and the imaginary part of `a` is larger than the imaginary part of `b` - * - Returns -1 when the real parts are equal - * and the imaginary part of `a` is smaller than the imaginary part of `b` - * - Returns 0 when both real and imaginary parts are equal. - * - * @params {Complex} a - * @params {Complex} b - * @returns {number} Returns the comparison result: -1, 0, or 1 - */ - Complex.compare = function (a, b) { - if (a.re > b.re) { return 1; } - if (a.re < b.re) { return -1; } - - if (a.im > b.im) { return 1; } - if (a.im < b.im) { return -1; } - - return 0; - } - - return Complex; -} - -exports.name = 'Complex'; -exports.path = 'type'; -exports.factory = factory; -exports.math = true; // request access to the math namespace - - -/***/ }), -/* 92 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var deepMap = __webpack_require__(1); - -function factory (type, config, load, typed) { - /** - * Create a fraction convert a value to a fraction. - * - * Syntax: - * math.fraction(numerator, denominator) - * math.fraction({n: numerator, d: denominator}) - * math.fraction(matrix: Array | Matrix) Turn all matrix entries - * into fractions - * - * Examples: - * - * math.fraction(1, 3); - * math.fraction('2/3'); - * math.fraction({n: 2, d: 3}); - * math.fraction([0.2, 0.25, 1.25]); - * - * See also: - * - * bignumber, number, string, unit - * - * @param {number | string | Fraction | BigNumber | Array | Matrix} [args] - * Arguments specifying the numerator and denominator of - * the fraction - * @return {Fraction | Array | Matrix} Returns a fraction - */ - var fraction = typed('fraction', { - 'number': function (x) { - if (!isFinite(x) || isNaN(x)) { - throw new Error(x + ' cannot be represented as a fraction'); - } - - return new type.Fraction(x); - }, - - 'string': function (x) { - return new type.Fraction(x); - }, - - 'number, number': function (numerator, denominator) { - return new type.Fraction(numerator, denominator); - }, - - 'BigNumber': function (x) { - return new type.Fraction(x.toString()); - }, - - 'Fraction': function (x) { - return x; // fractions are immutable - }, - - 'Object': function (x) { - return new type.Fraction(x); - }, - - 'Array | Matrix': function (x) { - return deepMap(x, fraction); - } - }); - - return fraction; -} - -exports.name = 'fraction'; -exports.factory = factory; - - -/***/ }), -/* 93 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var number = __webpack_require__(3); - -function factory (type, config, load, typed) { - /** - * Create a range. A range has a start, step, and end, and contains functions - * to iterate over the range. - * - * A range can be constructed as: - * var range = new Range(start, end); - * var range = new Range(start, end, step); - * - * To get the result of the range: - * range.forEach(function (x) { - * console.log(x); - * }); - * range.map(function (x) { - * return math.sin(x); - * }); - * range.toArray(); - * - * Example usage: - * var c = new Range(2, 6); // 2:1:5 - * c.toArray(); // [2, 3, 4, 5] - * var d = new Range(2, -3, -1); // 2:-1:-2 - * d.toArray(); // [2, 1, 0, -1, -2] - * - * @class Range - * @constructor Range - * @param {number} start included lower bound - * @param {number} end excluded upper bound - * @param {number} [step] step size, default value is 1 - */ - function Range(start, end, step) { - if (!(this instanceof Range)) { - throw new SyntaxError('Constructor must be called with the new operator'); - } - - if (start != null) { - if (type.isBigNumber(start)) - start = start.toNumber(); - else if (typeof start !== 'number') - throw new TypeError('Parameter start must be a number'); - } - if (end != null) { - if (type.isBigNumber(end)) - end = end.toNumber(); - else if (typeof end !== 'number') - throw new TypeError('Parameter end must be a number'); - } - if (step != null) { - if (type.isBigNumber(step)) - step = step.toNumber(); - else if (typeof step !== 'number') - throw new TypeError('Parameter step must be a number'); - } - - this.start = (start != null) ? parseFloat(start) : 0; - this.end = (end != null) ? parseFloat(end) : 0; - this.step = (step != null) ? parseFloat(step) : 1; - } - - /** - * Attach type information - */ - Range.prototype.type = 'Range'; - Range.prototype.isRange = true; - - /** - * Parse a string into a range, - * The string contains the start, optional step, and end, separated by a colon. - * If the string does not contain a valid range, null is returned. - * For example str='0:2:11'. - * @memberof Range - * @param {string} str - * @return {Range | null} range - */ - Range.parse = function (str) { - if (typeof str !== 'string') { - return null; - } - - var args = str.split(':'); - var nums = args.map(function (arg) { - return parseFloat(arg); - }); - - var invalid = nums.some(function (num) { - return isNaN(num); - }); - if (invalid) { - return null; - } - - switch (nums.length) { - case 2: - return new Range(nums[0], nums[1]); - case 3: - return new Range(nums[0], nums[2], nums[1]); - default: - return null; - } - }; - - /** - * Create a clone of the range - * @return {Range} clone - */ - Range.prototype.clone = function () { - return new Range(this.start, this.end, this.step); - }; - - /** - * Retrieve the size of the range. - * Returns an array containing one number, the number of elements in the range. - * @memberof Range - * @returns {number[]} size - */ - Range.prototype.size = function () { - var len = 0, - start = this.start, - step = this.step, - end = this.end, - diff = end - start; - - if (number.sign(step) == number.sign(diff)) { - len = Math.ceil((diff) / step); - } - else if (diff == 0) { - len = 0; - } - - if (isNaN(len)) { - len = 0; - } - return [len]; - }; - - /** - * Calculate the minimum value in the range - * @memberof Range - * @return {number | undefined} min - */ - Range.prototype.min = function () { - var size = this.size()[0]; - - if (size > 0) { - if (this.step > 0) { - // positive step - return this.start; - } - else { - // negative step - return this.start + (size - 1) * this.step; - } - } - else { - return undefined; - } - }; - - /** - * Calculate the maximum value in the range - * @memberof Range - * @return {number | undefined} max - */ - Range.prototype.max = function () { - var size = this.size()[0]; - - if (size > 0) { - if (this.step > 0) { - // positive step - return this.start + (size - 1) * this.step; - } - else { - // negative step - return this.start; - } - } - else { - return undefined; - } - }; - - - /** - * Execute a callback function for each value in the range. - * @memberof Range - * @param {function} callback The callback method is invoked with three - * parameters: the value of the element, the index - * of the element, and the Range being traversed. - */ - Range.prototype.forEach = function (callback) { - var x = this.start; - var step = this.step; - var end = this.end; - var i = 0; - - if (step > 0) { - while (x < end) { - callback(x, [i], this); - x += step; - i++; - } - } - else if (step < 0) { - while (x > end) { - callback(x, [i], this); - x += step; - i++; - } - } - }; - - /** - * Execute a callback function for each value in the Range, and return the - * results as an array - * @memberof Range - * @param {function} callback The callback method is invoked with three - * parameters: the value of the element, the index - * of the element, and the Matrix being traversed. - * @returns {Array} array - */ - Range.prototype.map = function (callback) { - var array = []; - this.forEach(function (value, index, obj) { - array[index[0]] = callback(value, index, obj); - }); - return array; - }; - - /** - * Create an Array with a copy of the Ranges data - * @memberof Range - * @returns {Array} array - */ - Range.prototype.toArray = function () { - var array = []; - this.forEach(function (value, index) { - array[index[0]] = value; - }); - return array; - }; - - /** - * Get the primitive value of the Range, a one dimensional array - * @memberof Range - * @returns {Array} array - */ - Range.prototype.valueOf = function () { - // TODO: implement a caching mechanism for range.valueOf() - return this.toArray(); - }; - - /** - * Get a string representation of the range, with optional formatting options. - * Output is formatted as 'start:step:end', for example '2:6' or '0:0.2:11' - * @memberof Range - * @param {Object | number | function} [options] Formatting options. See - * lib/utils/number:format for a - * description of the available - * options. - * @returns {string} str - */ - Range.prototype.format = function (options) { - var str = number.format(this.start, options); - - if (this.step != 1) { - str += ':' + number.format(this.step, options); - } - str += ':' + number.format(this.end, options); - return str; - }; - - /** - * Get a string representation of the range. - * @memberof Range - * @returns {string} - */ - Range.prototype.toString = function () { - return this.format(); - }; - - /** - * Get a JSON representation of the range - * @memberof Range - * @returns {Object} Returns a JSON object structured as: - * `{"mathjs": "Range", "start": 2, "end": 4, "step": 1}` - */ - Range.prototype.toJSON = function () { - return { - mathjs: 'Range', - start: this.start, - end: this.end, - step: this.step - }; - }; - - /** - * Instantiate a Range from a JSON object - * @memberof Range - * @param {Object} json A JSON object structured as: - * `{"mathjs": "Range", "start": 2, "end": 4, "step": 1}` - * @return {Range} - */ - Range.fromJSON = function (json) { - return new Range(json.start, json.end, json.step); - }; - - return Range; -} - -exports.name = 'Range'; -exports.path = 'type'; -exports.factory = factory; - - -/***/ }), -/* 94 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -function factory (type, config, load, typed) { - /** - * A ResultSet contains a list or results - * @class ResultSet - * @param {Array} entries - * @constructor ResultSet - */ - function ResultSet(entries) { - if (!(this instanceof ResultSet)) { - throw new SyntaxError('Constructor must be called with the new operator'); - } - - this.entries = entries || []; - } - - /** - * Attach type information - */ - ResultSet.prototype.type = 'ResultSet'; - ResultSet.prototype.isResultSet = true; - - /** - * Returns the array with results hold by this ResultSet - * @memberof ResultSet - * @returns {Array} entries - */ - ResultSet.prototype.valueOf = function () { - return this.entries; - }; - - /** - * Returns the stringified results of the ResultSet - * @memberof ResultSet - * @returns {string} string - */ - ResultSet.prototype.toString = function () { - return '[' + this.entries.join(', ') + ']'; - }; - - /** - * Get a JSON representation of the ResultSet - * @memberof ResultSet - * @returns {Object} Returns a JSON object structured as: - * `{"mathjs": "ResultSet", "entries": [...]}` - */ - ResultSet.prototype.toJSON = function () { - return { - mathjs: 'ResultSet', - entries: this.entries - }; - }; - - /** - * Instantiate a ResultSet from a JSON object - * @memberof ResultSet - * @param {Object} json A JSON object structured as: - * `{"mathjs": "ResultSet", "entries": [...]}` - * @return {ResultSet} - */ - ResultSet.fromJSON = function (json) { - return new ResultSet(json.entries); - }; - - return ResultSet; -} - -exports.name = 'ResultSet'; -exports.path = 'type'; -exports.factory = factory; - - -/***/ }), -/* 95 */ -/***/ (function(module, exports, __webpack_require__) { - -var memoize = __webpack_require__(32).memoize; - -/** - * Calculate BigNumber e - * @param {function} BigNumber BigNumber constructor - * @returns {BigNumber} Returns e - */ -exports.e = memoize(function (BigNumber) { - return new BigNumber(1).exp(); -}, hasher); - -/** - * Calculate BigNumber golden ratio, phi = (1+sqrt(5))/2 - * @param {function} BigNumber BigNumber constructor - * @returns {BigNumber} Returns phi - */ -exports.phi = memoize(function (BigNumber) { - return new BigNumber(1).plus(new BigNumber(5).sqrt()).div(2); -}, hasher); - -/** - * Calculate BigNumber pi. - * @param {function} BigNumber BigNumber constructor - * @returns {BigNumber} Returns pi - */ -exports.pi = memoize(function (BigNumber) { - return BigNumber.acos(-1); -}, hasher); - -/** - * Calculate BigNumber tau, tau = 2 * pi - * @param {function} BigNumber BigNumber constructor - * @returns {BigNumber} Returns tau - */ -exports.tau = memoize(function (BigNumber) { - return exports.pi(BigNumber).times(2); -}, hasher); - -/** - * Create a hash for a BigNumber constructor function. The created has is - * the configured precision - * @param {Array} args Supposed to contain a single entry with - * a BigNumber constructor - * @return {number} precision - * @private - */ -function hasher (args) { - return args[0].precision; -} - - -/***/ }), -/* 96 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var deepMap = __webpack_require__(1); - -function factory (type, config, load, typed) { - /** - * Round a value towards zero. - * For matrices, the function is evaluated element wise. - * - * Syntax: - * - * math.fix(x) - * - * Examples: - * - * math.fix(3.2); // returns number 3 - * math.fix(3.8); // returns number 3 - * math.fix(-4.2); // returns number -4 - * math.fix(-4.7); // returns number -4 - * - * var c = math.complex(3.2, -2.7); - * math.fix(c); // returns Complex 3 - 2i - * - * math.fix([3.2, 3.8, -4.7]); // returns Array [3, 3, -4] - * - * See also: - * - * ceil, floor, round - * - * @param {number | BigNumber | Fraction | Complex | Array | Matrix} x Number to be rounded - * @return {number | BigNumber | Fraction | Complex | Array | Matrix} Rounded value - */ - var fix = typed('fix', { - 'number': function (x) { - return (x > 0) ? Math.floor(x) : Math.ceil(x); - }, - - 'Complex': function (x) { - return new type.Complex( - (x.re > 0) ? Math.floor(x.re) : Math.ceil(x.re), - (x.im > 0) ? Math.floor(x.im) : Math.ceil(x.im) - ); - }, - - 'BigNumber': function (x) { - return x.isNegative() ? x.ceil() : x.floor(); - }, - - 'Fraction': function (x) { - return x.s < 0 ? x.ceil() : x.floor(); - }, - - 'Array | Matrix': function (x) { - // deep map collection, skip zeros since fix(0) = 0 - return deepMap(x, fix, true); - } - }); - - fix.toTex = {1: '\\mathrm{${name}}\\left(${args[0]}\\right)'}; - - return fix; -} - -exports.name = 'fix'; -exports.factory = factory; - - -/***/ }), -/* 97 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var isInteger = __webpack_require__(3).isInteger; -var toFixed = __webpack_require__(3).toFixed; -var deepMap = __webpack_require__(1); - -var NO_INT = 'Number of decimals in function round must be an integer'; - -function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(0)); - var equalScalar = load(__webpack_require__(11)); - var zeros = load(__webpack_require__(38)); - - var algorithm11 = load(__webpack_require__(17)); - var algorithm12 = load(__webpack_require__(16)); - var algorithm14 = load(__webpack_require__(6)); - - /** - * Round a value towards the nearest integer. - * For matrices, the function is evaluated element wise. - * - * Syntax: - * - * math.round(x) - * math.round(x, n) - * - * Examples: - * - * math.round(3.2); // returns number 3 - * math.round(3.8); // returns number 4 - * math.round(-4.2); // returns number -4 - * math.round(-4.7); // returns number -5 - * math.round(math.pi, 3); // returns number 3.142 - * math.round(123.45678, 2); // returns number 123.46 - * - * var c = math.complex(3.2, -2.7); - * math.round(c); // returns Complex 3 - 3i - * - * math.round([3.2, 3.8, -4.7]); // returns Array [3, 4, -5] - * - * See also: - * - * ceil, fix, floor - * - * @param {number | BigNumber | Fraction | Complex | Array | Matrix} x Number to be rounded - * @param {number | BigNumber | Array} [n=0] Number of decimals - * @return {number | BigNumber | Fraction | Complex | Array | Matrix} Rounded value - */ - var round = typed('round', { - - 'number': Math.round, - - 'number, number': function (x, n) { - if (!isInteger(n)) {throw new TypeError(NO_INT);} - if (n < 0 || n > 15) {throw new Error('Number of decimals in function round must be in te range of 0-15');} - - return _round(x, n); - }, - - 'Complex': function (x) { - return x.round(); - }, - - 'Complex, number': function (x, n) { - if (n % 1) {throw new TypeError(NO_INT);} - - return x.round(n); - }, - - 'Complex, BigNumber': function (x, n) { - if (!n.isInteger()) {throw new TypeError(NO_INT);} - - var _n = n.toNumber(); - return x.round(_n); - }, - - 'number, BigNumber': function (x, n) { - if (!n.isInteger()) {throw new TypeError(NO_INT);} - - return new type.BigNumber(x).toDecimalPlaces(n.toNumber()); - }, - - 'BigNumber': function (x) { - return x.toDecimalPlaces(0); - }, - - 'BigNumber, BigNumber': function (x, n) { - if (!n.isInteger()) {throw new TypeError(NO_INT);} - - return x.toDecimalPlaces(n.toNumber()); - }, - - 'Fraction': function (x) { - return x.round(); - }, - - 'Fraction, number': function (x, n) { - if (n % 1) {throw new TypeError(NO_INT);} - return x.round(n); - }, - - 'Array | Matrix': function (x) { - // deep map collection, skip zeros since round(0) = 0 - return deepMap(x, round, true); - }, - - 'Matrix, number | BigNumber': function (x, y) { - // result - var c; - // check storage format - switch (x.storage()) { - case 'sparse': - c = algorithm11(x, y, round, false); - break; - default: - c = algorithm14(x, y, round, false); - break; - } - return c; - }, - - 'number | Complex | BigNumber, Matrix': function (x, y) { - // check scalar is zero - if (!equalScalar(x, 0)) { - // result - var c; - // check storage format - switch (y.storage()) { - case 'sparse': - c = algorithm12(y, x, round, true); - break; - default: - c = algorithm14(y, x, round, true); - break; - } - return c; - } - // do not execute algorithm, result will be a zero matrix - return zeros(y.size(), y.storage()); - }, - - 'Array, number | BigNumber': function (x, y) { - // use matrix implementation - return algorithm14(matrix(x), y, round, false).valueOf(); - }, - - 'number | Complex | BigNumber, Array': function (x, y) { - // use matrix implementation - return algorithm14(matrix(y), x, round, true).valueOf(); - } - }); - - round.toTex = { - 1: '\\left\\lfloor${args[0]}\\right\\rceil', - 2: undefined // use default template - }; - - return round; -} - -/** - * round a number to the given number of decimals, or to zero if decimals is - * not provided - * @param {number} value - * @param {number} decimals number of decimals, between 0 and 15 (0 by default) - * @return {number} roundedValue - * @private - */ -function _round (value, decimals) { - return parseFloat(toFixed(value, decimals)); -} - -exports.name = 'round'; -exports.factory = factory; - - -/***/ }), -/* 98 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var string = __webpack_require__(9); - -function factory (type, config, load, typed) { - /** - * Format a value of any type into a string. - * - * Syntax: - * - * math.format(value) - * math.format(value, options) - * math.format(value, precision) - * math.format(value, callback) - * - * Where: - * - * - `value: *` - * The value to be formatted - * - `options: Object` - * An object with formatting options. Available options: - * - `notation: string` - * Number notation. Choose from: - * - 'fixed' - * Always use regular number notation. - * For example '123.40' and '14000000' - * - 'exponential' - * Always use exponential notation. - * For example '1.234e+2' and '1.4e+7' - * - 'engineering' - * Always use engineering notation. - * For example '123.4e+0' and '14.0e+6' - * - 'auto' (default) - * Regular number notation for numbers having an absolute value between - * `lower` and `upper` bounds, and uses exponential notation elsewhere. - * Lower bound is included, upper bound is excluded. - * For example '123.4' and '1.4e7'. - * - `precision: number` - * A number between 0 and 16 to round the digits of the number. In case - * of notations 'exponential' and 'auto', `precision` defines the total - * number of significant digits returned and is undefined by default. - * In case of notation 'fixed', `precision` defines the number of - * significant digits after the decimal point, and is 0 by default. - * - `exponential: Object` - * An object containing two parameters, {number} lower and {number} upper, - * used by notation 'auto' to determine when to return exponential - * notation. Default values are `lower=1e-3` and `upper=1e5`. Only - * applicable for notation `auto`. - * - `fraction: string`. Available values: 'ratio' (default) or 'decimal'. - * For example `format(fraction(1, 3))` will output '1/3' when 'ratio' is - * configured, and will output `0.(3)` when 'decimal' is configured. - * - `callback: function` - * A custom formatting function, invoked for all numeric elements in `value`, - * for example all elements of a matrix, or the real and imaginary - * parts of a complex number. This callback can be used to override the - * built-in numeric notation with any type of formatting. Function `callback` - * is called with `value` as parameter and must return a string. - * - * When `value` is an Object: - * - * - When the object contains a property `format` being a function, this function - * is invoked as `value.format(options)` and the result is returned. - * - When the object has its own `toString` method, this method is invoked - * and the result is returned. - * - In other cases the function will loop over all object properties and - * return JSON object notation like '{"a": 2, "b": 3}'. - * - * When value is a function: - * - * - When the function has a property `syntax`, it returns this - * syntax description. - * - In other cases, a string `'function'` is returned. - * - * Examples: - * - * math.format(6.4); // returns '6.4' - * math.format(1240000); // returns '1.24e6' - * math.format(1/3); // returns '0.3333333333333333' - * math.format(1/3, 3); // returns '0.333' - * math.format(21385, 2); // returns '21000' - * math.format(12.071, {notation: 'fixed'}); // returns '12' - * math.format(2.3, {notation: 'fixed', precision: 2}); // returns '2.30' - * math.format(52.8, {notation: 'exponential'}); // returns '5.28e+1' - * math.format(12400, {notation: 'engineering'}); // returns '12.400e+3' - * - * function formatCurrency(value) { - * // return currency notation with two digits: - * return '$' + value.toFixed(2); - * - * // you could also use math.format inside the callback: - * // return '$' + math.format(value, {notation: 'fixed', precision: 2}); - * } - * math.format([2.1, 3, 0.016], formatCurrency}; // returns '[$2.10, $3.00, $0.02]' - * - * See also: - * - * print - * - * @param {*} value Value to be stringified - * @param {Object | Function | number} [options] Formatting options - * @return {string} The formatted value - */ - var format = typed('format', { - 'any': string.format, - 'any, Object | function | number': string.format - }); - - format.toTex = undefined; // use default template - - return format; -} - -exports.name = 'format'; -exports.factory = factory; - - -/***/ }), -/* 99 */ -/***/ (function(module, exports, __webpack_require__) { - -function factory (construction, config, load, typed) { - var docs = {}; - - - // construction functions - docs.bignumber = __webpack_require__(192); - docs['boolean'] = __webpack_require__(193); - docs.complex = __webpack_require__(194); - docs.createUnit = __webpack_require__(195); - docs.fraction = __webpack_require__(196); - docs.index = __webpack_require__(197); - docs.matrix = __webpack_require__(198); - docs.number = __webpack_require__(199); - docs.sparse = __webpack_require__(200); - docs.splitUnit = __webpack_require__(201); - docs.string = __webpack_require__(202); - docs.unit = __webpack_require__(203); - - // constants - docs.e = __webpack_require__(100); - docs.E = __webpack_require__(100); - docs['false'] = __webpack_require__(204); - docs.i = __webpack_require__(205); - docs['Infinity'] = __webpack_require__(206); - docs.LN2 = __webpack_require__(207); - docs.LN10 = __webpack_require__(208); - docs.LOG2E = __webpack_require__(209); - docs.LOG10E = __webpack_require__(210); - docs.NaN = __webpack_require__(211); - docs['null'] = __webpack_require__(212); - docs.pi = __webpack_require__(101); - docs.PI = __webpack_require__(101); - docs.phi = __webpack_require__(213); - docs.SQRT1_2 = __webpack_require__(214); - docs.SQRT2 = __webpack_require__(215); - docs.tau = __webpack_require__(216); - docs['true'] = __webpack_require__(217); - docs.version = __webpack_require__(218); - - // physical constants - // TODO: more detailed docs for physical constants - docs.speedOfLight = {description: 'Speed of light in vacuum', examples: ['speedOfLight']}; - docs.gravitationConstant = {description: 'Newtonian constant of gravitation', examples: ['gravitationConstant']}; - docs.planckConstant = {description: 'Planck constant', examples: ['planckConstant']}; - docs.reducedPlanckConstant = {description: 'Reduced Planck constant', examples: ['reducedPlanckConstant']}; - - docs.magneticConstant = {description: 'Magnetic constant (vacuum permeability)', examples: ['magneticConstant']}; - docs.electricConstant = {description: 'Electric constant (vacuum permeability)', examples: ['electricConstant']}; - docs.vacuumImpedance = {description: 'Characteristic impedance of vacuum', examples: ['vacuumImpedance']}; - docs.coulomb = {description: 'Coulomb\'s constant', examples: ['coulomb']}; - docs.elementaryCharge = {description: 'Elementary charge', examples: ['elementaryCharge']}; - docs.bohrMagneton = {description: 'Borh magneton', examples: ['bohrMagneton']}; - docs.conductanceQuantum = {description: 'Conductance quantum', examples: ['conductanceQuantum']}; - docs.inverseConductanceQuantum = {description: 'Inverse conductance quantum', examples: ['inverseConductanceQuantum']}; - //docs.josephson = {description: 'Josephson constant', examples: ['josephson']}; - docs.magneticFluxQuantum = {description: 'Magnetic flux quantum', examples: ['magneticFluxQuantum']}; - docs.nuclearMagneton = {description: 'Nuclear magneton', examples: ['nuclearMagneton']}; - docs.klitzing = {description: 'Von Klitzing constant', examples: ['klitzing']}; - - docs.bohrRadius = {description: 'Borh radius', examples: ['bohrRadius']}; - docs.classicalElectronRadius = {description: 'Classical electron radius', examples: ['classicalElectronRadius']}; - docs.electronMass = {description: 'Electron mass', examples: ['electronMass']}; - docs.fermiCoupling = {description: 'Fermi coupling constant', examples: ['fermiCoupling']}; - docs.fineStructure = {description: 'Fine-structure constant', examples: ['fineStructure']}; - docs.hartreeEnergy = {description: 'Hartree energy', examples: ['hartreeEnergy']}; - docs.protonMass = {description: 'Proton mass', examples: ['protonMass']}; - docs.deuteronMass = {description: 'Deuteron Mass', examples: ['deuteronMass']}; - docs.neutronMass = {description: 'Neutron mass', examples: ['neutronMass']}; - docs.quantumOfCirculation = {description: 'Quantum of circulation', examples: ['quantumOfCirculation']}; - docs.rydberg = {description: 'Rydberg constant', examples: ['rydberg']}; - docs.thomsonCrossSection = {description: 'Thomson cross section', examples: ['thomsonCrossSection']}; - docs.weakMixingAngle = {description: 'Weak mixing angle', examples: ['weakMixingAngle']}; - docs.efimovFactor = {description: 'Efimov factor', examples: ['efimovFactor']}; - - docs.atomicMass = {description: 'Atomic mass constant', examples: ['atomicMass']}; - docs.avogadro = {description: 'Avogadro\'s number', examples: ['avogadro']}; - docs.boltzmann = {description: 'Boltzmann constant', examples: ['boltzmann']}; - docs.faraday = {description: 'Faraday constant', examples: ['faraday']}; - docs.firstRadiation = {description: 'First radiation constant', examples: ['firstRadiation']}; - docs.loschmidt = {description: 'Loschmidt constant at T=273.15 K and p=101.325 kPa', examples: ['loschmidt']}; - docs.gasConstant = {description: 'Gas constant', examples: ['gasConstant']}; - docs.molarPlanckConstant = {description: 'Molar Planck constant', examples: ['molarPlanckConstant']}; - docs.molarVolume = {description: 'Molar volume of an ideal gas at T=273.15 K and p=101.325 kPa', examples: ['molarVolume']}; - docs.sackurTetrode = {description: 'Sackur-Tetrode constant at T=1 K and p=101.325 kPa', examples: ['sackurTetrode']}; - docs.secondRadiation = {description: 'Second radiation constant', examples: ['secondRadiation']}; - docs.stefanBoltzmann = {description: 'Stefan-Boltzmann constant', examples: ['stefanBoltzmann']}; - docs.wienDisplacement = {description: 'Wien displacement law constant', examples: ['wienDisplacement']}; - //docs.spectralRadiance = {description: 'First radiation constant for spectral radiance', examples: ['spectralRadiance']}; - - docs.molarMass = {description: 'Molar mass constant', examples: ['molarMass']}; - docs.molarMassC12 = {description: 'Molar mass constant of carbon-12', examples: ['molarMassC12']}; - docs.gravity = {description: 'Standard acceleration of gravity (standard acceleration of free-fall on Earth)', examples: ['gravity']}; - - docs.planckLength = {description: 'Planck length', examples: ['planckLength']}; - docs.planckMass = {description: 'Planck mass', examples: ['planckMass']}; - docs.planckTime = {description: 'Planck time', examples: ['planckTime']}; - docs.planckCharge = {description: 'Planck charge', examples: ['planckCharge']}; - docs.planckTemperature = {description: 'Planck temperature', examples: ['planckTemperature']}; - - // functions - algebra - docs.derivative = __webpack_require__(219); - docs.lsolve = __webpack_require__(220); - docs.lup = __webpack_require__(221); - docs.lusolve = __webpack_require__(222); - docs.simplify = __webpack_require__(223); - docs.slu = __webpack_require__(224); - docs.usolve = __webpack_require__(225); - docs.qr = __webpack_require__(226); - - // functions - arithmetic - docs.abs = __webpack_require__(227); - docs.add = __webpack_require__(228); - docs.cbrt = __webpack_require__(229); - docs.ceil = __webpack_require__(230); - docs.cube = __webpack_require__(231); - docs.divide = __webpack_require__(232); - docs.dotDivide = __webpack_require__(233); - docs.dotMultiply = __webpack_require__(234); - docs.dotPow = __webpack_require__(235); - docs.exp = __webpack_require__(236); - docs.fix = __webpack_require__(237); - docs.floor = __webpack_require__(238); - docs.gcd = __webpack_require__(239); - docs.hypot = __webpack_require__(240); - docs.lcm = __webpack_require__(241); - docs.log = __webpack_require__(242); - docs.log10 = __webpack_require__(243); - docs.mod = __webpack_require__(244); - docs.multiply = __webpack_require__(245); - docs.norm = __webpack_require__(246); - docs.nthRoot = __webpack_require__(247); - docs.pow = __webpack_require__(248); - docs.round = __webpack_require__(249); - docs.sign = __webpack_require__(250); - docs.sqrt = __webpack_require__(251); - docs.square = __webpack_require__(252); - docs.subtract = __webpack_require__(253); - docs.unaryMinus = __webpack_require__(254); - docs.unaryPlus = __webpack_require__(255); - docs.xgcd = __webpack_require__(256); - - // functions - bitwise - docs.bitAnd = __webpack_require__(257); - docs.bitNot = __webpack_require__(258); - docs.bitOr = __webpack_require__(259); - docs.bitXor = __webpack_require__(260); - docs.leftShift = __webpack_require__(261); - docs.rightArithShift = __webpack_require__(262); - docs.rightLogShift = __webpack_require__(263); - - // functions - combinatorics - docs.bellNumbers = __webpack_require__(264); - docs.catalan = __webpack_require__(265); - docs.composition = __webpack_require__(266); - docs.stirlingS2 = __webpack_require__(267); - - // functions - core - docs['config'] = __webpack_require__(268); - docs['import'] = __webpack_require__(269); - docs['typed'] = __webpack_require__(270); - - // functions - complex - docs.arg = __webpack_require__(271); - docs.conj = __webpack_require__(272); - docs.re = __webpack_require__(273); - docs.im = __webpack_require__(274); - - // functions - expression - docs['eval'] = __webpack_require__(275); - docs.help = __webpack_require__(276); - - // functions - geometry - docs.distance = __webpack_require__(277); - docs.intersect = __webpack_require__(278); - - // functions - logical - docs['and'] = __webpack_require__(279); - docs['not'] = __webpack_require__(280); - docs['or'] = __webpack_require__(281); - docs['xor'] = __webpack_require__(282); - - // functions - matrix - docs['concat'] = __webpack_require__(283); - docs.cross = __webpack_require__(284); - docs.det = __webpack_require__(285); - docs.diag = __webpack_require__(286); - docs.dot = __webpack_require__(287); - docs.eye = __webpack_require__(288); - docs.filter = __webpack_require__(289); - docs.flatten = __webpack_require__(290); - docs.forEach = __webpack_require__(291); - docs.inv = __webpack_require__(292); - docs.kron = __webpack_require__(293); - docs.map = __webpack_require__(294); - docs.ones = __webpack_require__(295); - docs.partitionSelect = __webpack_require__(296); - docs.range = __webpack_require__(297); - docs.resize = __webpack_require__(298); - docs.reshape = __webpack_require__(299); - docs.size = __webpack_require__(300); - docs.sort = __webpack_require__(301); - docs.squeeze = __webpack_require__(302); - docs.subset = __webpack_require__(303); - docs.trace = __webpack_require__(304); - docs.transpose = __webpack_require__(305); - docs.zeros = __webpack_require__(306); - - // functions - probability - docs.combinations = __webpack_require__(307); - //docs.distribution = require('./function/probability/distribution'); - docs.factorial = __webpack_require__(308); - docs.gamma = __webpack_require__(309); - docs.kldivergence = __webpack_require__(310); - docs.multinomial = __webpack_require__(311); - docs.permutations = __webpack_require__(312); - docs.pickRandom = __webpack_require__(313); - docs.random = __webpack_require__(314); - docs.randomInt = __webpack_require__(315); - - // functions - relational - docs.compare = __webpack_require__(316); - docs.compareNatural = __webpack_require__(317); - docs.deepEqual = __webpack_require__(318); - docs['equal'] = __webpack_require__(319); - docs.larger = __webpack_require__(320); - docs.largerEq = __webpack_require__(321); - docs.smaller = __webpack_require__(322); - docs.smallerEq = __webpack_require__(323); - docs.unequal = __webpack_require__(324); - - // functions - set - docs.setCartesian = __webpack_require__(325); - docs.setDifference = __webpack_require__(326); - docs.setDistinct = __webpack_require__(327); - docs.setIntersect = __webpack_require__(328); - docs.setIsSubset = __webpack_require__(329); - docs.setMultiplicity = __webpack_require__(330); - docs.setPowerset = __webpack_require__(331); - docs.setSize = __webpack_require__(332); - docs.setSymDifference = __webpack_require__(333); - docs.setUnion = __webpack_require__(334); - - // functions - special - docs.erf = __webpack_require__(335); - - // functions - statistics - docs.mad = __webpack_require__(336); - docs.max = __webpack_require__(337); - docs.mean = __webpack_require__(338); - docs.median = __webpack_require__(339); - docs.min = __webpack_require__(340); - docs.mode = __webpack_require__(341); - docs.prod = __webpack_require__(342); - docs.quantileSeq = __webpack_require__(343); - docs.std = __webpack_require__(344); - docs.sum = __webpack_require__(345); - docs['var'] = __webpack_require__(346); - - // functions - trigonometry - docs.acos = __webpack_require__(347); - docs.acosh = __webpack_require__(348); - docs.acot = __webpack_require__(349); - docs.acoth = __webpack_require__(350); - docs.acsc = __webpack_require__(351); - docs.acsch = __webpack_require__(352); - docs.asec = __webpack_require__(353); - docs.asech = __webpack_require__(354); - docs.asin = __webpack_require__(355); - docs.asinh = __webpack_require__(356); - docs.atan = __webpack_require__(357); - docs.atanh = __webpack_require__(358); - docs.atan2 = __webpack_require__(359); - docs.cos = __webpack_require__(360); - docs.cosh = __webpack_require__(361); - docs.cot = __webpack_require__(362); - docs.coth = __webpack_require__(363); - docs.csc = __webpack_require__(364); - docs.csch = __webpack_require__(365); - docs.sec = __webpack_require__(366); - docs.sech = __webpack_require__(367); - docs.sin = __webpack_require__(368); - docs.sinh = __webpack_require__(369); - docs.tan = __webpack_require__(370); - docs.tanh = __webpack_require__(371); - - // functions - units - docs.to = __webpack_require__(372); - - // functions - utils - docs.clone = __webpack_require__(373); - docs.format = __webpack_require__(374); - docs.isNaN = __webpack_require__(375); - docs.isInteger = __webpack_require__(376); - docs.isNegative = __webpack_require__(377); - docs.isNumeric = __webpack_require__(378); - docs.isPositive = __webpack_require__(379); - docs.isPrime = __webpack_require__(380); - docs.isZero = __webpack_require__(381); - // docs.print = require('./function/utils/print'); // TODO: add documentation for print as soon as the parser supports objects. - docs['typeof'] = __webpack_require__(382); - - return docs; -} - -exports.name = 'docs'; -exports.path = 'expression'; -exports.factory = factory; - - -/***/ }), -/* 100 */ -/***/ (function(module, exports) { - -module.exports = { - 'name': 'e', - 'category': 'Constants', - 'syntax': [ - 'e' - ], - 'description': 'Euler\'s number, the base of the natural logarithm. Approximately equal to 2.71828', - 'examples': [ - 'e', - 'e ^ 2', - 'exp(2)', - 'log(e)' - ], - 'seealso': ['exp'] -}; - - -/***/ }), -/* 101 */ -/***/ (function(module, exports) { - -module.exports = { - 'name': 'pi', - 'category': 'Constants', - 'syntax': [ - 'pi' - ], - 'description': 'The number pi is a mathematical constant that is the ratio of a circle\'s circumference to its diameter, and is approximately equal to 3.14159', - 'examples': [ - 'pi', - 'sin(pi/2)' - ], - 'seealso': ['tau'] -}; - - -/***/ }), -/* 102 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var stringify = __webpack_require__(9).stringify; -var getSafeProperty = __webpack_require__(13).getSafeProperty; - -function factory (type, config, load, typed) { - var register = load(__webpack_require__(7)).register; - var compile = load(__webpack_require__(7)).compile; - var Node = load(__webpack_require__(14)); - var IndexNode = load(__webpack_require__(78)); - var access = load(__webpack_require__(103)); - - /** - * @constructor AccessorNode - * @extends {Node} - * Access an object property or get a matrix subset - * - * @param {Node} object The object from which to retrieve - * a property or subset. - * @param {IndexNode} index IndexNode containing ranges - */ - function AccessorNode(object, index) { - if (!(this instanceof AccessorNode)) { - throw new SyntaxError('Constructor must be called with the new operator'); - } - - if (!type.isNode(object)) { - throw new TypeError('Node expected for parameter "object"'); - } - if (!type.isIndexNode(index)) { - throw new TypeError('IndexNode expected for parameter "index"'); - } - - this.object = object || null; - this.index = index; - - // readonly property name - Object.defineProperty(this, 'name', { - get: function () { - if (this.index) { - return (this.index.isObjectProperty()) - ? this.index.getObjectProperty() - : ''; - } - else { - return this.object.name || ''; - } - }.bind(this), - set: function () { - throw new Error('Cannot assign a new name, name is read-only'); - } - }); - } - - AccessorNode.prototype = new Node(); - - AccessorNode.prototype.type = 'AccessorNode'; - - AccessorNode.prototype.isAccessorNode = true; - - /** - * Compile the node to javascript code - * @param {AccessorNode} node Node to be compiled - * @param {Object} defs Object which can be used to define functions - * or constants globally available for the compiled - * expression - * @param {Object} args Object with local function arguments, the key is - * the name of the argument, and the value is `true`. - * The object may not be mutated, but must be - * extended instead. - * @return {string} js - * @private - */ - function compileAccessorNode(node, defs, args) { - if (!(node instanceof AccessorNode)) { - throw new TypeError('No valid AccessorNode') - } - - defs.access = access; - defs.getSafeProperty = getSafeProperty; - - var object = compile(node.object, defs, args); - var index = compile(node.index, defs, args); - - if (node.index.isObjectProperty()) { - var jsProp = stringify(node.index.getObjectProperty()); - return 'getSafeProperty(' + object + ', ' + jsProp + ')'; - } - else if (node.index.needsSize()) { - // if some parameters use the 'end' parameter, we need to calculate the size - return '(function () {' + - ' var object = ' + object + ';' + - ' var size = math.size(object).valueOf();' + - ' return access(object, ' + index + ');' + - '})()'; - } - else { - return 'access(' + object + ', ' + index + ')'; - } - } - - // register the compile function - register(AccessorNode.prototype.type, compileAccessorNode); - - /** - * Execute a callback for each of the child nodes of this node - * @param {function(child: Node, path: string, parent: Node)} callback - */ - AccessorNode.prototype.forEach = function (callback) { - callback(this.object, 'object', this); - callback(this.index, 'index', this); - }; - - /** - * Create a new AccessorNode having it's childs be the results of calling - * the provided callback function for each of the childs of the original node. - * @param {function(child: Node, path: string, parent: Node): Node} callback - * @returns {AccessorNode} Returns a transformed copy of the node - */ - AccessorNode.prototype.map = function (callback) { - return new AccessorNode( - this._ifNode(callback(this.object, 'object', this)), - this._ifNode(callback(this.index, 'index', this)) - ); - }; - - /** - * Create a clone of this node, a shallow copy - * @return {AccessorNode} - */ - AccessorNode.prototype.clone = function () { - return new AccessorNode(this.object, this.index); - }; - - /** - * Get string representation - * @param {Object} options - * @return {string} - */ - AccessorNode.prototype._toString = function (options) { - var object = this.object.toString(options); - if (needParenthesis(this.object)) { - object = '(' + object + ')'; - } - - return object + this.index.toString(options); - }; - - /** - * Get HTML representation - * @param {Object} options - * @return {string} - */ - AccessorNode.prototype.toHTML = function (options) { - var object = this.object.toHTML(options); - if (needParenthesis(this.object)) { - object = '(' + object + ')'; - } - - return object + this.index.toHTML(options); - }; - - /** - * Get LaTeX representation - * @param {Object} options - * @return {string} - */ - AccessorNode.prototype._toTex = function (options) { - var object = this.object.toTex(options); - if (needParenthesis(this.object)) { - object = '\\left(' + object + '\\right)'; - } - - return object + this.index.toTex(options); - }; - - /** - * Are parenthesis needed? - * @private - */ - function needParenthesis(node) { - // TODO: maybe make a method on the nodes which tells whether they need parenthesis? - return !( - type.isAccessorNode(node) || - type.isArrayNode(node) || - type.isConstantNode(node) || - type.isFunctionNode(node) || - type.isObjectNode(node) || - type.isParenthesisNode(node) || - type.isSymbolNode(node)); - } - - return AccessorNode; -} - -exports.name = 'AccessorNode'; -exports.path = 'expression.node'; -exports.factory = factory; - - -/***/ }), -/* 103 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var errorTransform = __webpack_require__(41).transform; -var getSafeProperty = __webpack_require__(13).getSafeProperty; - -function factory (type, config, load, typed) { - var subset = load(__webpack_require__(22)); - - /** - * Retrieve part of an object: - * - * - Retrieve a property from an object - * - Retrieve a part of a string - * - Retrieve a matrix subset - * - * @param {Object | Array | Matrix | string} object - * @param {Index} index - * @return {Object | Array | Matrix | string} Returns the subset - */ - return function access(object, index) { - try { - if (Array.isArray(object)) { - return subset(object, index); - } - else if (object && typeof object.subset === 'function') { // Matrix - return object.subset(index); - } - else if (typeof object === 'string') { - // TODO: move getStringSubset into a separate util file, use that - return subset(object, index); - } - else if (typeof object === 'object') { - if (!index.isObjectProperty()) { - throw new TypeError('Cannot apply a numeric index as object property'); - } - - return getSafeProperty(object, index.getObjectProperty()); - } - else { - throw new TypeError('Cannot apply index: unsupported type of object'); - } - } - catch (err) { - throw errorTransform(err); - } - } -} - -exports.factory = factory; - - -/***/ }), -/* 104 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var latex = __webpack_require__(4); -var stringify = __webpack_require__(9).stringify; -var getSafeProperty = __webpack_require__(13).getSafeProperty; -var setSafeProperty = __webpack_require__(13).setSafeProperty; - -function factory (type, config, load, typed) { - var register = load(__webpack_require__(7)).register; - var compile = load(__webpack_require__(7)).compile; - var Node = load(__webpack_require__(14)); - var ArrayNode = load(__webpack_require__(80)); - var matrix = load(__webpack_require__(0)); - var assign = load(__webpack_require__(385)); - var access = load(__webpack_require__(103)); - - var keywords = __webpack_require__(77); - var operators = __webpack_require__(52); - - /** - * @constructor AssignmentNode - * @extends {Node} - * - * Define a symbol, like `a=3.2`, update a property like `a.b=3.2`, or - * replace a subset of a matrix like `A[2,2]=42`. - * - * Syntax: - * - * new AssignmentNode(symbol, value) - * new AssignmentNode(object, index, value) - * - * Usage: - * - * new AssignmentNode(new SymbolNode('a'), new ConstantNode(2)); // a=2 - * new AssignmentNode(new SymbolNode('a'), new IndexNode('b'), new ConstantNode(2)) // a.b=2 - * new AssignmentNode(new SymbolNode('a'), new IndexNode(1, 2), new ConstantNode(3)) // a[1,2]=3 - * - * @param {SymbolNode | AccessorNode} object Object on which to assign a value - * @param {IndexNode} [index=null] Index, property name or matrix - * index. Optional. If not provided - * and `object` is a SymbolNode, - * the property is assigned to the - * global scope. - * @param {Node} value The value to be assigned - */ - function AssignmentNode(object, index, value) { - if (!(this instanceof AssignmentNode)) { - throw new SyntaxError('Constructor must be called with the new operator'); - } - - this.object = object; - this.index = value ? index : null; - this.value = value ? value : index; - - // validate input - if (!type.isSymbolNode(object) && !type.isAccessorNode(object)) { - throw new TypeError('SymbolNode or AccessorNode expected as "object"'); - } - if (type.isSymbolNode(object) && object.name === 'end') { - throw new Error('Cannot assign to symbol "end"'); - } - if (this.index && !type.isIndexNode(this.index)) { // index is optional - throw new TypeError('IndexNode expected as "index"'); - } - if (!type.isNode(this.value)) { - throw new TypeError('Node expected as "value"'); - } - - // readonly property name - Object.defineProperty(this, 'name', { - get: function () { - if (this.index) { - return (this.index.isObjectProperty()) - ? this.index.getObjectProperty() - : ''; - } - else { - return this.object.name || ''; - } - }.bind(this), - set: function () { - throw new Error('Cannot assign a new name, name is read-only'); - } - }); - } - - AssignmentNode.prototype = new Node(); - - AssignmentNode.prototype.type = 'AssignmentNode'; - - AssignmentNode.prototype.isAssignmentNode = true; - - /** - * Compile the node to javascript code - * @param {AssignmentNode} node The node to be compiled - * @param {Object} defs Object which can be used to define functions - * or constants globally available for the compiled - * expression - * @param {Object} args Object with local function arguments, the key is - * the name of the argument, and the value is `true`. - * The object may not be mutated, but must be - * extended instead. - * @private - */ - function compileAssignmentNode (node, defs, args) { - if (!(node instanceof AssignmentNode)) { - throw new TypeError('No valid AssignmentNode') - } - - defs.assign = assign; - defs.access = access; - defs.getSafeProperty = getSafeProperty; - defs.setSafeProperty = setSafeProperty; - - var size; - var object = compile(node.object, defs, args); - var index = node.index ? compile(node.index, defs, args) : null; - var value = compile(node.value, defs, args); - var jsName = stringify(node.object.name); - - if (!node.index) { - // apply a variable to the scope, for example `a=2` - if (!type.isSymbolNode(node.object)) { - throw new TypeError('SymbolNode expected as object'); - } - - return 'setSafeProperty(scope, ' + jsName + ', ' + value + ')'; - } - else if (node.index.isObjectProperty()) { - // apply an object property for example `a.b=2` - var jsProp = stringify(node.index.getObjectProperty()); - return 'setSafeProperty(' + object + ', ' + jsProp + ', ' + value + ')'; - } - else if (type.isSymbolNode(node.object)) { - // update a matrix subset, for example `a[2]=3` - size = node.index.needsSize() ? 'var size = math.size(object).valueOf();' : ''; - - // apply updated object to scope - return '(function () {' + - ' var object = ' + object + ';' + - ' var value = ' + value + ';' + - ' ' + size + - ' setSafeProperty(scope, ' + jsName + ', assign(object, ' + index + ', value));' + - ' return value;' + - '})()'; - } - else { // type.isAccessorNode(node.object) === true - // update a matrix subset, for example `a.b[2]=3` - size = node.index.needsSize() ? 'var size = math.size(object).valueOf();' : ''; - - // we will not use the compile function of the AccessorNode, but compile it - // ourselves here as we need the parent object of the AccessorNode: - // wee need to apply the updated object to parent object - var parentObject = compile(node.object.object, defs, args); - - if (node.object.index.isObjectProperty()) { - var jsParentProperty = stringify(node.object.index.getObjectProperty()); - return '(function () {' + - ' var parent = ' + parentObject + ';' + - ' var object = getSafeProperty(parent, ' + jsParentProperty + ');' + // parentIndex is a property - ' var value = ' + value + ';' + - size + - ' setSafeProperty(parent, ' + jsParentProperty + ', assign(object, ' + index + ', value));' + - ' return value;' + - '})()'; - } - else { - // if some parameters use the 'end' parameter, we need to calculate the size - var parentSize = node.object.index.needsSize() ? 'var size = math.size(parent).valueOf();' : ''; - var parentIndex = compile(node.object.index, defs, args); - - return '(function () {' + - ' var parent = ' + parentObject + ';' + - ' ' + parentSize + - ' var parentIndex = ' + parentIndex + ';' + - ' var object = access(parent, parentIndex);' + - ' var value = ' + value + ';' + - ' ' + size + - ' assign(parent, parentIndex, assign(object, ' + index + ', value));' + - ' return value;' + - '})()'; - } - } - } - - // register the compile function - register(AssignmentNode.prototype.type, compileAssignmentNode); - - /** - * Execute a callback for each of the child nodes of this node - * @param {function(child: Node, path: string, parent: Node)} callback - */ - AssignmentNode.prototype.forEach = function (callback) { - callback(this.object, 'object', this); - if (this.index) { - callback(this.index, 'index', this); - } - callback(this.value, 'value', this); - }; - - /** - * Create a new AssignmentNode having it's childs be the results of calling - * the provided callback function for each of the childs of the original node. - * @param {function(child: Node, path: string, parent: Node): Node} callback - * @returns {AssignmentNode} Returns a transformed copy of the node - */ - AssignmentNode.prototype.map = function (callback) { - var object = this._ifNode(callback(this.object, 'object', this)); - var index = this.index - ? this._ifNode(callback(this.index, 'index', this)) - : null; - var value = this._ifNode(callback(this.value, 'value', this)); - - return new AssignmentNode(object, index, value); - }; - - /** - * Create a clone of this node, a shallow copy - * @return {AssignmentNode} - */ - AssignmentNode.prototype.clone = function() { - return new AssignmentNode(this.object, this.index, this.value); - }; - - /* - * Is parenthesis needed? - * @param {node} node - * @param {string} [parenthesis='keep'] - * @private - */ - function needParenthesis(node, parenthesis) { - if (!parenthesis) { - parenthesis = 'keep'; - } - - var precedence = operators.getPrecedence(node, parenthesis); - var exprPrecedence = operators.getPrecedence(node.value, parenthesis); - return (parenthesis === 'all') - || ((exprPrecedence !== null) && (exprPrecedence <= precedence)); - } - - /** - * Get string representation - * @param {Object} options - * @return {string} - */ - AssignmentNode.prototype._toString = function(options) { - var object = this.object.toString(options); - var index = this.index ? this.index.toString(options) : ''; - var value = this.value.toString(options); - if (needParenthesis(this, options && options.parenthesis)) { - value = '(' + value + ')'; - } - - return object + index + ' = ' + value; - }; - - /** - * Get HTML representation - * @param {Object} options - * @return {string} - */ - AssignmentNode.prototype.toHTML = function(options) { - var object = this.object.toHTML(options); - var index = this.index ? this.index.toHTML(options) : ''; - var value = this.value.toHTML(options); - if (needParenthesis(this, options && options.parenthesis)) { - value = '(' + value + ')'; - } - - return object + index + '=' + value; - }; - - /** - * Get LaTeX representation - * @param {Object} options - * @return {string} - */ - AssignmentNode.prototype._toTex = function(options) { - var object = this.object.toTex(options); - var index = this.index ? this.index.toTex(options) : ''; - var value = this.value.toTex(options); - if (needParenthesis(this, options && options.parenthesis)) { - value = '\\left(' + value + '\\right)'; - } - - return object + index + ':=' + value; - }; - - return AssignmentNode; -} - -exports.name = 'AssignmentNode'; -exports.path = 'expression.node'; -exports.factory = factory; - - -/***/ }), -/* 105 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var map = __webpack_require__(2).map; -var join = __webpack_require__(2).join; - -function factory (type, config, load, typed) { - var register = load(__webpack_require__(7)).register; - var compile = load(__webpack_require__(7)).compile; - var Node = load(__webpack_require__(14)); - var ResultSet = load(__webpack_require__(94)); - - /** - * @constructor BlockNode - * @extends {Node} - * Holds a set with blocks - * @param {Array.<{node: Node} | {node: Node, visible: boolean}>} blocks - * An array with blocks, where a block is constructed as an Object - * with properties block, which is a Node, and visible, which is - * a boolean. The property visible is optional and is true by default - */ - function BlockNode(blocks) { - if (!(this instanceof BlockNode)) { - throw new SyntaxError('Constructor must be called with the new operator'); - } - - // validate input, copy blocks - if (!Array.isArray(blocks)) throw new Error('Array expected'); - this.blocks = blocks.map(function (block) { - var node = block && block.node; - var visible = block && block.visible !== undefined ? block.visible : true; - - if (!type.isNode(node)) throw new TypeError('Property "node" must be a Node'); - if (typeof visible !== 'boolean') throw new TypeError('Property "visible" must be a boolean'); - - return { - node: node, - visible: visible - } - }); - } - - BlockNode.prototype = new Node(); - - BlockNode.prototype.type = 'BlockNode'; - - BlockNode.prototype.isBlockNode = true; - - /** - * Compile the node to javascript code - * @param {BlockNode} node The node to be compiled - * @param {Object} defs Object which can be used to define functions - * or constants globally available for the compiled - * expression - * @param {Object} args Object with local function arguments, the key is - * the name of the argument, and the value is `true`. - * The object may not be mutated, but must be - * extended instead. - * @return {string} js - * @private - */ - function compileBlockNode (node, defs, args) { - if (!(node instanceof BlockNode)) { - throw new TypeError('No valid BlockNode') - } - - defs.ResultSet = ResultSet; - var blocks = map(node.blocks, function (param) { - var js = compile(param.node, defs, args); - if (param.visible) { - return 'results.push(' + js + ');'; - } - else { - return js + ';'; - } - }); - - return '(function () {' + - 'var results = [];' + - join(blocks, '') + - 'return new ResultSet(results);' + - '})()'; - } - - // register the compile function - register(BlockNode.prototype.type, compileBlockNode); - - /** - * Execute a callback for each of the child blocks of this node - * @param {function(child: Node, path: string, parent: Node)} callback - */ - BlockNode.prototype.forEach = function (callback) { - for (var i = 0; i < this.blocks.length; i++) { - callback(this.blocks[i].node, 'blocks[' + i + '].node', this); - } - }; - - /** - * Create a new BlockNode having it's childs be the results of calling - * the provided callback function for each of the childs of the original node. - * @param {function(child: Node, path: string, parent: Node): Node} callback - * @returns {BlockNode} Returns a transformed copy of the node - */ - BlockNode.prototype.map = function (callback) { - var blocks = []; - for (var i = 0; i < this.blocks.length; i++) { - var block = this.blocks[i]; - var node = this._ifNode(callback(block.node, 'blocks[' + i + '].node', this)); - blocks[i] = { - node: node, - visible: block.visible - }; - } - return new BlockNode(blocks); - }; - - /** - * Create a clone of this node, a shallow copy - * @return {BlockNode} - */ - BlockNode.prototype.clone = function () { - var blocks = this.blocks.map(function (block) { - return { - node: block.node, - visible: block.visible - }; - }); - - return new BlockNode(blocks); - }; - - /** - * Get string representation - * @param {Object} options - * @return {string} str - * @override - */ - BlockNode.prototype._toString = function (options) { - return this.blocks.map(function (param) { - return param.node.toString(options) + (param.visible ? '' : ';'); - }).join('\n'); - }; - - /** - * Get HTML representation - * @param {Object} options - * @return {string} str - * @override - */ - BlockNode.prototype.toHTML = function (options) { - return this.blocks.map(function (param) { - return param.node.toHTML(options) + (param.visible ? '' : ';'); - }).join('
'); - }; - - /** - * Get LaTeX representation - * @param {Object} options - * @return {string} str - */ - BlockNode.prototype._toTex = function (options) { - return this.blocks.map(function (param) { - return param.node.toTex(options) + (param.visible ? '' : ';'); - }).join('\\;\\;\n'); - }; - - return BlockNode; -} - -exports.name = 'BlockNode'; -exports.path = 'expression.node'; -exports.factory = factory; - - -/***/ }), -/* 106 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var latex = __webpack_require__(4); -var operators = __webpack_require__(52); - -function factory (type, config, load, typed) { - var register = load(__webpack_require__(7)).register; - var compile = load(__webpack_require__(7)).compile; - var Node = load(__webpack_require__(14)); - - /** - * A lazy evaluating conditional operator: 'condition ? trueExpr : falseExpr' - * - * @param {Node} condition Condition, must result in a boolean - * @param {Node} trueExpr Expression evaluated when condition is true - * @param {Node} falseExpr Expression evaluated when condition is true - * - * @constructor ConditionalNode - * @extends {Node} - */ - function ConditionalNode(condition, trueExpr, falseExpr) { - if (!(this instanceof ConditionalNode)) { - throw new SyntaxError('Constructor must be called with the new operator'); - } - if (!type.isNode(condition)) throw new TypeError('Parameter condition must be a Node'); - if (!type.isNode(trueExpr)) throw new TypeError('Parameter trueExpr must be a Node'); - if (!type.isNode(falseExpr)) throw new TypeError('Parameter falseExpr must be a Node'); - - this.condition = condition; - this.trueExpr = trueExpr; - this.falseExpr = falseExpr; - } - - ConditionalNode.prototype = new Node(); - - ConditionalNode.prototype.type = 'ConditionalNode'; - - ConditionalNode.prototype.isConditionalNode = true; - - /** - * Compile the node to javascript code - * @param {ConditionalNode} node The node to be compiled - * @param {Object} defs Object which can be used to define functions - * or constants globally available for the compiled - * expression - * @param {Object} args Object with local function arguments, the key is - * the name of the argument, and the value is `true`. - * The object may not be mutated, but must be - * extended instead. - * @return {string} js - * @private - */ - function compileConditionalNode(node, defs, args) { - if (!(node instanceof ConditionalNode)) { - throw new TypeError('No valid ConditionalNode') - } - - /** - * Test whether a condition is met - * @param {*} condition - * @returns {boolean} true if condition is true or non-zero, else false - */ - defs.testCondition = function (condition) { - if (typeof condition === 'number' - || typeof condition === 'boolean' - || typeof condition === 'string') { - return condition ? true : false; - } - - if (condition) { - if (type.isBigNumber(condition)) { - return condition.isZero() ? false : true; - } - - if (type.isComplex(condition)) { - return (condition.re || condition.im) ? true : false; - } - - if (type.isUnit(condition)) { - return condition.value ? true : false; - } - } - - if (condition === null || condition === undefined) { - return false; - } - - throw new TypeError('Unsupported type of condition "' + defs.math['typeof'](condition) + '"'); - }; - - return ( - 'testCondition(' + compile(node.condition, defs, args) + ') ? ' + - '( ' + compile(node.trueExpr, defs, args) + ') : ' + - '( ' + compile(node.falseExpr, defs, args) + ')' - ); - } - - // register the compile function - register(ConditionalNode.prototype.type, compileConditionalNode); - - /** - * Execute a callback for each of the child nodes of this node - * @param {function(child: Node, path: string, parent: Node)} callback - */ - ConditionalNode.prototype.forEach = function (callback) { - callback(this.condition, 'condition', this); - callback(this.trueExpr, 'trueExpr', this); - callback(this.falseExpr, 'falseExpr', this); - }; - - /** - * Create a new ConditionalNode having it's childs be the results of calling - * the provided callback function for each of the childs of the original node. - * @param {function(child: Node, path: string, parent: Node): Node} callback - * @returns {ConditionalNode} Returns a transformed copy of the node - */ - ConditionalNode.prototype.map = function (callback) { - return new ConditionalNode( - this._ifNode(callback(this.condition, 'condition', this)), - this._ifNode(callback(this.trueExpr, 'trueExpr', this)), - this._ifNode(callback(this.falseExpr, 'falseExpr', this)) - ); - }; - - /** - * Create a clone of this node, a shallow copy - * @return {ConditionalNode} - */ - ConditionalNode.prototype.clone = function () { - return new ConditionalNode(this.condition, this.trueExpr, this.falseExpr); - }; - - /** - * Get string representation - * @param {Object} options - * @return {string} str - */ - ConditionalNode.prototype._toString = function (options) { - var parenthesis = (options && options.parenthesis) ? options.parenthesis : 'keep'; - var precedence = operators.getPrecedence(this, parenthesis); - - //Enclose Arguments in parentheses if they are an OperatorNode - //or have lower or equal precedence - //NOTE: enclosing all OperatorNodes in parentheses is a decision - //purely based on aesthetics and readability - var condition = this.condition.toString(options); - var conditionPrecedence = operators.getPrecedence(this.condition, parenthesis); - if ((parenthesis === 'all') - || (this.condition.type === 'OperatorNode') - || ((conditionPrecedence !== null) && (conditionPrecedence <= precedence))) { - condition = '(' + condition + ')'; - } - - var trueExpr = this.trueExpr.toString(options); - var truePrecedence = operators.getPrecedence(this.trueExpr, parenthesis); - if ((parenthesis === 'all') - || (this.trueExpr.type === 'OperatorNode') - || ((truePrecedence !== null) && (truePrecedence <= precedence))) { - trueExpr = '(' + trueExpr + ')'; - } - - var falseExpr = this.falseExpr.toString(options); - var falsePrecedence = operators.getPrecedence(this.falseExpr, parenthesis); - if ((parenthesis === 'all') - || (this.falseExpr.type === 'OperatorNode') - || ((falsePrecedence !== null) && (falsePrecedence <= precedence))) { - falseExpr = '(' + falseExpr + ')'; - } - return condition + ' ? ' + trueExpr + ' : ' + falseExpr; - }; - - /** - * Get HTML representation - * @param {Object} options - * @return {string} str - */ - ConditionalNode.prototype.toHTML = function (options) { - var parenthesis = (options && options.parenthesis) ? options.parenthesis : 'keep'; - var precedence = operators.getPrecedence(this, parenthesis); - - //Enclose Arguments in parentheses if they are an OperatorNode - //or have lower or equal precedence - //NOTE: enclosing all OperatorNodes in parentheses is a decision - //purely based on aesthetics and readability - var condition = this.condition.toHTML(options); - var conditionPrecedence = operators.getPrecedence(this.condition, parenthesis); - if ((parenthesis === 'all') - || (this.condition.type === 'OperatorNode') - || ((conditionPrecedence !== null) && (conditionPrecedence <= precedence))) { - condition = '(' + condition + ')'; - } - - var trueExpr = this.trueExpr.toHTML(options); - var truePrecedence = operators.getPrecedence(this.trueExpr, parenthesis); - if ((parenthesis === 'all') - || (this.trueExpr.type === 'OperatorNode') - || ((truePrecedence !== null) && (truePrecedence <= precedence))) { - trueExpr = '(' + trueExpr + ')'; - } - - var falseExpr = this.falseExpr.toHTML(options); - var falsePrecedence = operators.getPrecedence(this.falseExpr, parenthesis); - if ((parenthesis === 'all') - || (this.falseExpr.type === 'OperatorNode') - || ((falsePrecedence !== null) && (falsePrecedence <= precedence))) { - falseExpr = '(' + falseExpr + ')'; - } - return condition + '?' + trueExpr + ':' + falseExpr; - }; - - /** - * Get LaTeX representation - * @param {Object} options - * @return {string} str - */ - ConditionalNode.prototype._toTex = function (options) { - return '\\begin{cases} {' - + this.trueExpr.toTex(options) + '}, &\\quad{\\text{if }\\;' - + this.condition.toTex(options) - + '}\\\\{' + this.falseExpr.toTex(options) - + '}, &\\quad{\\text{otherwise}}\\end{cases}'; - }; - - return ConditionalNode; -} - -exports.name = 'ConditionalNode'; -exports.path = 'expression.node'; -exports.factory = factory; - - -/***/ }), -/* 107 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var keywords = __webpack_require__(77); -var stringify = __webpack_require__(9).stringify; -var escape = __webpack_require__(9).escape; -var map = __webpack_require__(2).map; -var join = __webpack_require__(2).join; -var latex = __webpack_require__(4); -var operators = __webpack_require__(52); -var setSafeProperty = __webpack_require__(13).setSafeProperty; -var getUniqueArgumentName = __webpack_require__(108); - -function factory (type, config, load, typed) { - var register = load(__webpack_require__(7)).register; - var compile = load(__webpack_require__(7)).compile; - var Node = load(__webpack_require__(14)); - - /** - * @constructor FunctionAssignmentNode - * @extends {Node} - * Function assignment - * - * @param {string} name Function name - * @param {string[] | Array.<{name: string, type: string}>} params - * Array with function parameter names, or an - * array with objects containing the name - * and type of the parameter - * @param {Node} expr The function expression - */ - function FunctionAssignmentNode(name, params, expr) { - if (!(this instanceof FunctionAssignmentNode)) { - throw new SyntaxError('Constructor must be called with the new operator'); - } - - // validate input - if (typeof name !== 'string') throw new TypeError('String expected for parameter "name"'); - if (!Array.isArray(params)) throw new TypeError('Array containing strings or objects expected for parameter "params"'); - if (!type.isNode(expr)) throw new TypeError('Node expected for parameter "expr"'); - if (name in keywords) throw new Error('Illegal function name, "' + name + '" is a reserved keyword'); - - this.name = name; - this.params = params.map(function (param) { - return param && param.name || param; - }); - this.types = params.map(function (param) { - return param && param.type || 'any' - }); - this.expr = expr; - } - - FunctionAssignmentNode.prototype = new Node(); - - FunctionAssignmentNode.prototype.type = 'FunctionAssignmentNode'; - - FunctionAssignmentNode.prototype.isFunctionAssignmentNode = true; - - /** - * Compile the node to javascript code - * @param {FunctionAssignmentNode} node The node to be compiled - * @param {Object} defs Object which can be used to define functions - * or constants globally available for the compiled - * expression - * @param {Object} args Object with local function arguments, the key is - * the name of the argument, and the value is `true`. - * The object may not be mutated, but must be - * extended instead. - * @return {string} js - * @private - */ - function compileFunctionAssignmentNode(node, defs, args) { - if (!(node instanceof FunctionAssignmentNode)) { - throw new TypeError('No valid FunctionAssignmentNode') - } - - defs.typed = typed; - defs.setSafeProperty = setSafeProperty; - - // validate params - // FIXME: rename parameters to safe, internal names - - // we extend the original args and add the args to the child object - // and create a mapping from the unsafe param name to a safe, internal one - var childArgs = Object.create(args); - var jsParams = map(node.params, function (param) { - childArgs[param] = getUniqueArgumentName(childArgs); - return childArgs[param]; - }); - - // compile the function expression with the child args - var jsExpr = compile(node.expr, defs, childArgs); - var jsName = stringify(node.name); - - return 'setSafeProperty(scope, ' + jsName + ', ' + - ' (function () {' + - ' var fn = typed(' + jsName + ', {' + - ' ' + stringify(join(node.types, ',')) + ': function (' + join(jsParams, ',') + ') {' + - ' return ' + jsExpr + '' + - ' }' + - ' });' + - ' fn.syntax = ' + stringify(node.name + '(' + join(node.params, ', ') + ')') + ';' + - ' return fn;' + - ' })())'; - } - - // register the compile function - register(FunctionAssignmentNode.prototype.type, compileFunctionAssignmentNode); - - /** - * Execute a callback for each of the child nodes of this node - * @param {function(child: Node, path: string, parent: Node)} callback - */ - FunctionAssignmentNode.prototype.forEach = function (callback) { - callback(this.expr, 'expr', this); - }; - - /** - * Create a new FunctionAssignmentNode having it's childs be the results of calling - * the provided callback function for each of the childs of the original node. - * @param {function(child: Node, path: string, parent: Node): Node} callback - * @returns {FunctionAssignmentNode} Returns a transformed copy of the node - */ - FunctionAssignmentNode.prototype.map = function (callback) { - var expr = this._ifNode(callback(this.expr, 'expr', this)); - - return new FunctionAssignmentNode(this.name, this.params.slice(0), expr); - }; - - /** - * Create a clone of this node, a shallow copy - * @return {FunctionAssignmentNode} - */ - FunctionAssignmentNode.prototype.clone = function () { - return new FunctionAssignmentNode(this.name, this.params.slice(0), this.expr); - }; - - /** - * Is parenthesis needed? - * @param {Node} node - * @param {Object} parenthesis - * @private - */ - function needParenthesis(node, parenthesis) { - var precedence = operators.getPrecedence(node, parenthesis); - var exprPrecedence = operators.getPrecedence(node.expr, parenthesis); - - return (parenthesis === 'all') - || ((exprPrecedence !== null) && (exprPrecedence <= precedence)); - } - - /** - * get string representation - * @param {Object} options - * @return {string} str - */ - FunctionAssignmentNode.prototype._toString = function (options) { - var parenthesis = (options && options.parenthesis) ? options.parenthesis : 'keep'; - var expr = this.expr.toString(options); - if (needParenthesis(this, parenthesis)) { - expr = '(' + expr + ')'; - } - return this.name + '(' + this.params.join(', ') + ') = ' + expr; - }; - - /** - * get HTML representation - * @param {Object} options - * @return {string} str - */ - FunctionAssignmentNode.prototype.toHTML = function (options) { - var parenthesis = (options && options.parenthesis) ? options.parenthesis : 'keep'; - var params = []; - for (var i=0; i' + escape(this.params[i]) + ''); - } - var expr = this.expr.toHTML(options); - if (needParenthesis(this, parenthesis)) { - expr = '(' + expr + ')'; - } - return '' + escape(this.name) + '' + '(' + params.join(',') + ')=' + expr; - }; - - /** - * get LaTeX representation - * @param {Object} options - * @return {string} str - */ - FunctionAssignmentNode.prototype._toTex = function (options) { - var parenthesis = (options && options.parenthesis) ? options.parenthesis : 'keep'; - var expr = this.expr.toTex(options); - if (needParenthesis(this, parenthesis)) { - expr = '\\left(' + expr + '\\right)'; - } - - return '\\mathrm{' + this.name - + '}\\left(' + this.params.map(latex.toSymbol).join(',') + '\\right):=' + expr; - }; - - return FunctionAssignmentNode; -} -exports.name = 'FunctionAssignmentNode'; -exports.path = 'expression.node'; -exports.factory = factory; - - -/***/ }), -/* 108 */ -/***/ (function(module, exports) { - -/** - * Get a unique name for an argument name to store in defs - * @param {Object} defs - * @return {string} A string like 'arg1', 'arg2', ... - * @private - */ -function getUniqueArgumentName (defs) { - return 'arg' + Object.keys(defs).length -} - -module.exports = getUniqueArgumentName; - - -/***/ }), -/* 109 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var stringify = __webpack_require__(9).stringify; -var escape = __webpack_require__(9).escape; -var isSafeProperty = __webpack_require__(13).isSafeProperty; -var hasOwnProperty = __webpack_require__(5).hasOwnProperty; - -function factory (type, config, load, typed) { - var register = load(__webpack_require__(7)).register; - var compile = load(__webpack_require__(7)).compile; - var Node = load(__webpack_require__(14)); - - /** - * @constructor ObjectNode - * @extends {Node} - * Holds an object with keys/values - * @param {Object.} [properties] array with key/value pairs - */ - function ObjectNode(properties) { - if (!(this instanceof ObjectNode)) { - throw new SyntaxError('Constructor must be called with the new operator'); - } - - this.properties = properties || {}; - - // validate input - if (properties) { - if (!(typeof properties === 'object') || !Object.keys(properties).every(function (key) { - return type.isNode(properties[key]); - })) { - throw new TypeError('Object containing Nodes expected'); - } - } - } - - ObjectNode.prototype = new Node(); - - ObjectNode.prototype.type = 'ObjectNode'; - - ObjectNode.prototype.isObjectNode = true; - - /** - * Compile the node to javascript code - * @param {ObjectNode} node The node to be compiled - * @param {Object} defs Object which can be used to define functions - * or constants globally available for the compiled - * expression - * @param {Object} args Object with local function arguments, the key is - * the name of the argument, and the value is `true`. - * The object may not be mutated, but must be - * extended instead. - * @return {string} code - * @private - */ - function compileObjectNode(node, defs, args) { - if (!(node instanceof ObjectNode)) { - throw new TypeError('No valid ObjectNode') - } - - var entries = []; - for (var key in node.properties) { - if (hasOwnProperty(node.properties, key)) { - // we stringify/parse the key here to resolve unicode characters, - // so you cannot create a key like {"co\\u006Estructor": null} - var stringifiedKey = stringify(key) - var parsedKey = JSON.parse(stringifiedKey) - if (!isSafeProperty(node.properties, parsedKey)) { - throw new Error('No access to property "' + parsedKey + '"'); - } - - entries.push(stringifiedKey + ': ' + compile(node.properties[key], defs, args)); - } - } - return '{' + entries.join(', ') + '}'; - } - - // register the compile function - register(ObjectNode.prototype.type, compileObjectNode); - - /** - * Execute a callback for each of the child nodes of this node - * @param {function(child: Node, path: string, parent: Node)} callback - */ - ObjectNode.prototype.forEach = function (callback) { - for (var key in this.properties) { - if (this.properties.hasOwnProperty(key)) { - callback(this.properties[key], 'properties[' + stringify(key) + ']', this); - } - } - }; - - /** - * Create a new ObjectNode having it's childs be the results of calling - * the provided callback function for each of the childs of the original node. - * @param {function(child: Node, path: string, parent: Node): Node} callback - * @returns {ObjectNode} Returns a transformed copy of the node - */ - ObjectNode.prototype.map = function (callback) { - var properties = {}; - for (var key in this.properties) { - if (this.properties.hasOwnProperty(key)) { - properties[key] = this._ifNode(callback(this.properties[key], - 'properties[' + stringify(key) + ']', this)); - } - } - return new ObjectNode(properties); - }; - - /** - * Create a clone of this node, a shallow copy - * @return {ObjectNode} - */ - ObjectNode.prototype.clone = function() { - var properties = {}; - for (var key in this.properties) { - if (this.properties.hasOwnProperty(key)) { - properties[key] = this.properties[key]; - } - } - return new ObjectNode(properties); - }; - - /** - * Get string representation - * @param {Object} options - * @return {string} str - * @override - */ - ObjectNode.prototype._toString = function(options) { - var entries = []; - for (var key in this.properties) { - if (this.properties.hasOwnProperty(key)) { - entries.push(stringify(key) + ': ' + this.properties[key].toString(options)); - } - } - return '{' + entries.join(', ') + '}'; - }; - - /** - * Get HTML representation - * @param {Object} options - * @return {string} str - * @override - */ - ObjectNode.prototype.toHTML = function(options) { - var entries = []; - for (var key in this.properties) { - if (this.properties.hasOwnProperty(key)) { - entries.push('' + escape(key) + '' + ':' + this.properties[key].toHTML(options)); - } - } - return '{' + entries.join(',') + '}'; - }; - - /** - * Get LaTeX representation - * @param {Object} options - * @return {string} str - */ - ObjectNode.prototype._toTex = function(options) { - var entries = []; - for (var key in this.properties) { - if (this.properties.hasOwnProperty(key)) { - entries.push("\\mathbf{" + key + ':} & ' + this.properties[key].toTex(options) + "\\\\"); - } - } - return '\\left\\{\\begin{array}{ll}' + entries.join('\n') + '\\end{array}\\right\\}'; - }; - - return ObjectNode; -} - -exports.name = 'ObjectNode'; -exports.path = 'expression.node'; -exports.factory = factory; - - -/***/ }), -/* 110 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -function factory (type, config, load, typed, math) { - var Parser = load(__webpack_require__(111)); - - /** - * Create a parser. The function creates a new `math.expression.Parser` object. - * - * Syntax: - * - * math.parser() - * - * Examples: - * - * var parser = new math.parser(); - * - * // evaluate expressions - * var a = parser.eval('sqrt(3^2 + 4^2)'); // 5 - * var b = parser.eval('sqrt(-4)'); // 2i - * var c = parser.eval('2 inch in cm'); // 5.08 cm - * var d = parser.eval('cos(45 deg)'); // 0.7071067811865476 - * - * // define variables and functions - * parser.eval('x = 7 / 2'); // 3.5 - * parser.eval('x + 3'); // 6.5 - * parser.eval('function f(x, y) = x^y'); // f(x, y) - * parser.eval('f(2, 3)'); // 8 - * - * // get and set variables and functions - * var x = parser.get('x'); // 7 - * var f = parser.get('f'); // function - * var g = f(3, 2); // 9 - * parser.set('h', 500); - * var i = parser.eval('h / 2'); // 250 - * parser.set('hello', function (name) { - * return 'hello, ' + name + '!'; - * }); - * parser.eval('hello("user")'); // "hello, user!" - * - * // clear defined functions and variables - * parser.clear(); - * - * See also: - * - * eval, compile, parse - * - * @return {Parser} Parser - */ - return typed('parser', { - '': function () { - return new Parser(math); - } - }); -} - -exports.name = 'parser'; -exports.factory = factory; -exports.math = true; // requires the math namespace as 5th argument - - -/***/ }), -/* 111 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var extend = __webpack_require__(5).extend; -var customs = __webpack_require__(13); - -function factory (type, config, load, typed, math) { - var _parse = load(__webpack_require__(39)); - - /** - * @constructor Parser - * Parser contains methods to evaluate or parse expressions, and has a number - * of convenience methods to get, set, and remove variables from memory. Parser - * keeps a scope containing variables in memory, which is used for all - * evaluations. - * - * Methods: - * var result = parser.eval(expr); // evaluate an expression - * var value = parser.get(name); // retrieve a variable from the parser - * var values = parser.getAll(); // retrieve all defined variables - * parser.set(name, value); // set a variable in the parser - * parser.remove(name); // clear a variable from the - * // parsers scope - * parser.clear(); // clear the parsers scope - * - * Example usage: - * var parser = new Parser(); - * // Note: there is a convenience method which can be used instead: - * // var parser = new math.parser(); - * - * // evaluate expressions - * parser.eval('sqrt(3^2 + 4^2)'); // 5 - * parser.eval('sqrt(-4)'); // 2i - * parser.eval('2 inch in cm'); // 5.08 cm - * parser.eval('cos(45 deg)'); // 0.7071067811865476 - * - * // define variables and functions - * parser.eval('x = 7 / 2'); // 3.5 - * parser.eval('x + 3'); // 6.5 - * parser.eval('function f(x, y) = x^y'); // f(x, y) - * parser.eval('f(2, 3)'); // 8 - * - * // get and set variables and functions - * var x = parser.get('x'); // 7 - * var f = parser.get('f'); // function - * var g = f(3, 2); // 9 - * parser.set('h', 500); - * var i = parser.eval('h / 2'); // 250 - * parser.set('hello', function (name) { - * return 'hello, ' + name + '!'; - * }); - * parser.eval('hello("user")'); // "hello, user!" - * - * // clear defined functions and variables - * parser.clear(); - * - */ - function Parser() { - if (!(this instanceof Parser)) { - throw new SyntaxError( - 'Constructor must be called with the new operator'); - } - this.scope = {}; - } - - /** - * Attach type information - */ - Parser.prototype.type = 'Parser'; - Parser.prototype.isParser = true; - - /** - * Parse an expression and return the parsed function node. - * The node tree can be compiled via `code = node.compile(math)`, - * and the compiled code can be executed as `code.eval([scope])` - * @param {string} expr - * @return {Node} node - * @throws {Error} - */ - Parser.prototype.parse = function (expr) { - throw new Error('Parser.parse is deprecated. Use math.parse instead.'); - }; - - /** - * Parse and compile an expression, return the compiled javascript code. - * The node can be evaluated via code.eval([scope]) - * @param {string} expr - * @return {{eval: function}} code - * @throws {Error} - */ - Parser.prototype.compile = function (expr) { - throw new Error('Parser.compile is deprecated. Use math.compile instead.'); - }; - - /** - * Parse and evaluate the given expression - * @param {string} expr A string containing an expression, for example "2+3" - * @return {*} result The result, or undefined when the expression was empty - * @throws {Error} - */ - Parser.prototype.eval = function (expr) { - // TODO: validate arguments - return _parse(expr) - .compile() - .eval(this.scope); - }; - - /** - * Get a variable (a function or variable) by name from the parsers scope. - * Returns undefined when not found - * @param {string} name - * @return {* | undefined} value - */ - Parser.prototype.get = function (name) { - // TODO: validate arguments - return name in this.scope - ? customs.getSafeProperty(this.scope, name) - : undefined; - }; - - /** - * Get a map with all defined variables - * @return {Object} values - */ - Parser.prototype.getAll = function () { - return extend({}, this.scope); - }; - - /** - * Set a symbol (a function or variable) by name from the parsers scope. - * @param {string} name - * @param {* | undefined} value - */ - Parser.prototype.set = function (name, value) { - // TODO: validate arguments - return customs.setSafeProperty(this.scope, name, value); - }; - - /** - * Remove a variable from the parsers scope - * @param {string} name - */ - Parser.prototype.remove = function (name) { - // TODO: validate arguments - delete this.scope[name]; - }; - - /** - * Clear the scope with variables and functions - */ - Parser.prototype.clear = function () { - for (var name in this.scope) { - if (this.scope.hasOwnProperty(name)) { - delete this.scope[name]; - } - } - }; - - return Parser; -} - -exports.name = 'Parser'; -exports.path = 'expression'; -exports.factory = factory; -exports.math = true; // requires the math namespace as 5th argument - - -/***/ }), -/* 112 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var deepForEach = __webpack_require__(42); -var reduce = __webpack_require__(65); -var containsCollections = __webpack_require__(66); - -function factory (type, config, load, typed) { - var larger = load(__webpack_require__(34)); - - /** - * Compute the maximum value of a matrix or a list with values. - * In case of a multi dimensional array, the maximum of the flattened array - * will be calculated. When `dim` is provided, the maximum over the selected - * dimension will be calculated. Parameter `dim` is zero-based. - * - * Syntax: - * - * math.max(a, b, c, ...) - * math.max(A) - * math.max(A, dim) - * - * Examples: - * - * math.max(2, 1, 4, 3); // returns 4 - * math.max([2, 1, 4, 3]); // returns 4 - * - * // maximum over a specified dimension (zero-based) - * math.max([[2, 5], [4, 3], [1, 7]], 0); // returns [4, 7] - * math.max([[2, 5], [4, 3]], [1, 7], 1); // returns [5, 4, 7] - * - * math.max(2.7, 7.1, -4.5, 2.0, 4.1); // returns 7.1 - * math.min(2.7, 7.1, -4.5, 2.0, 4.1); // returns -4.5 - * - * See also: - * - * mean, median, min, prod, std, sum, var - * - * @param {... *} args A single matrix or or multiple scalar values - * @return {*} The maximum value - */ - var max = typed('max', { - // max([a, b, c, d, ...]) - 'Array | Matrix': _max, - - // max([a, b, c, d, ...], dim) - 'Array | Matrix, number | BigNumber': function (array, dim) { - return reduce(array, dim.valueOf(), _largest); - }, - - // max(a, b, c, d, ...) - '...': function (args) { - if (containsCollections(args)) { - throw new TypeError('Scalar values expected in function max'); - } - - return _max(args); - } - }); - - max.toTex = '\\max\\left(${args}\\right)'; - - return max; - - /** - * Return the largest of two values - * @param {*} x - * @param {*} y - * @returns {*} Returns x when x is largest, or y when y is largest - * @private - */ - function _largest(x, y){ - return larger(x, y) ? x : y; - } - - /** - * Recursively calculate the maximum value in an n-dimensional array - * @param {Array} array - * @return {number} max - * @private - */ - function _max(array) { - var max = undefined; - - deepForEach(array, function (value) { - if (max === undefined || larger(value, max)) { - max = value; - } - }); - - if (max === undefined) { - throw new Error('Cannot calculate max of an empty array'); - } - - return max; - } -} - -exports.name = 'max'; -exports.factory = factory; - - -/***/ }), -/* 113 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var size = __webpack_require__(2).size; -var deepForEach = __webpack_require__(42); -var reduce = __webpack_require__(65); -var containsCollections = __webpack_require__(66); - -function factory (type, config, load, typed) { - var add = load(__webpack_require__(18)); - var divide = load(__webpack_require__(47)); - - /** - * Compute the mean value of matrix or a list with values. - * In case of a multi dimensional array, the mean of the flattened array - * will be calculated. When `dim` is provided, the maximum over the selected - * dimension will be calculated. Parameter `dim` is zero-based. - * - * Syntax: - * - * math.mean(a, b, c, ...) - * math.mean(A) - * math.mean(A, dim) - * - * Examples: - * - * math.mean(2, 1, 4, 3); // returns 2.5 - * math.mean([1, 2.7, 3.2, 4]); // returns 2.725 - * - * math.mean([[2, 5], [6, 3], [1, 7]], 0); // returns [3, 5] - * math.mean([[2, 5], [6, 3], [1, 7]], 1); // returns [3.5, 4.5, 4] - * - * See also: - * - * median, min, max, sum, prod, std, var - * - * @param {... *} args A single matrix or or multiple scalar values - * @return {*} The mean of all values - */ - var mean = typed('mean', { - // mean([a, b, c, d, ...]) - 'Array | Matrix': _mean, - - // mean([a, b, c, d, ...], dim) - 'Array | Matrix, number | BigNumber': _nmean, - - // mean(a, b, c, d, ...) - '...': function (args) { - if (containsCollections(args)) { - throw new TypeError('Scalar values expected in function mean'); - } - - return _mean(args); - } - }); - - mean.toTex = undefined; // use default template - - return mean; - - /** - * Calculate the mean value in an n-dimensional array, returning a - * n-1 dimensional array - * @param {Array} array - * @param {number} dim - * @return {number} mean - * @private - */ - function _nmean(array, dim){ - var sum = reduce(array, dim, add); - var s = Array.isArray(array) ? size(array) : array.size(); - return divide(sum, s[dim]); - } - - /** - * Recursively calculate the mean value in an n-dimensional array - * @param {Array} array - * @return {number} mean - * @private - */ - function _mean(array) { - var sum = 0; - var num = 0; - - deepForEach(array, function (value) { - sum = add(sum, value); - num++; - }); - - if (num === 0) { - throw new Error('Cannot calculate mean of an empty array'); - } - - return divide(sum, num); - } -} - -exports.name = 'mean'; -exports.factory = factory; - - -/***/ }), -/* 114 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var util = __webpack_require__(25); - -function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(0)); - var divideScalar = load(__webpack_require__(19)); - var addScalar = load(__webpack_require__(20)); - var multiply = load(__webpack_require__(12)); - var unaryMinus = load(__webpack_require__(37)); - var det = load(__webpack_require__(115)); - var eye = load(__webpack_require__(61)); - - /** - * Calculate the inverse of a square matrix. - * - * Syntax: - * - * math.inv(x) - * - * Examples: - * - * math.inv([[1, 2], [3, 4]]); // returns [[-2, 1], [1.5, -0.5]] - * math.inv(4); // returns 0.25 - * 1 / 4; // returns 0.25 - * - * See also: - * - * det, transpose - * - * @param {number | Complex | Array | Matrix} x Matrix to be inversed - * @return {number | Complex | Array | Matrix} The inverse of `x`. - */ - var inv = typed('inv', { - 'Array | Matrix': function (x) { - var size = type.isMatrix(x) ? x.size() : util.array.size(x); - switch (size.length) { - case 1: - // vector - if (size[0] == 1) { - if (type.isMatrix(x)) { - return matrix([ - divideScalar(1, x.valueOf()[0]) - ]); - } - else { - return [ - divideScalar(1, x[0]) - ]; - } - } - else { - throw new RangeError('Matrix must be square ' + - '(size: ' + util.string.format(size) + ')'); - } - - case 2: - // two dimensional array - var rows = size[0]; - var cols = size[1]; - if (rows == cols) { - if (type.isMatrix(x)) { - return matrix( - _inv(x.valueOf(), rows, cols), - x.storage() - ); - } - else { - // return an Array - return _inv(x, rows, cols); - } - } - else { - throw new RangeError('Matrix must be square ' + - '(size: ' + util.string.format(size) + ')'); - } - - default: - // multi dimensional array - throw new RangeError('Matrix must be two dimensional ' + - '(size: ' + util.string.format(size) + ')'); - } - }, - - 'any': function (x) { - // scalar - return divideScalar(1, x); // FIXME: create a BigNumber one when configured for bignumbers - } - }); - - /** - * Calculate the inverse of a square matrix - * @param {Array[]} mat A square matrix - * @param {number} rows Number of rows - * @param {number} cols Number of columns, must equal rows - * @return {Array[]} inv Inverse matrix - * @private - */ - function _inv (mat, rows, cols){ - var r, s, f, value, temp; - - if (rows == 1) { - // this is a 1 x 1 matrix - value = mat[0][0]; - if (value == 0) { - throw Error('Cannot calculate inverse, determinant is zero'); - } - return [[ - divideScalar(1, value) - ]]; - } - else if (rows == 2) { - // this is a 2 x 2 matrix - var d = det(mat); - if (d == 0) { - throw Error('Cannot calculate inverse, determinant is zero'); - } - return [ - [ - divideScalar(mat[1][1], d), - divideScalar(unaryMinus(mat[0][1]), d) - ], - [ - divideScalar(unaryMinus(mat[1][0]), d), - divideScalar(mat[0][0], d) - ] - ]; - } - else { - // this is a matrix of 3 x 3 or larger - // calculate inverse using gauss-jordan elimination - // http://en.wikipedia.org/wiki/Gaussian_elimination - // http://mathworld.wolfram.com/MatrixInverse.html - // http://math.uww.edu/~mcfarlat/inverse.htm - - // make a copy of the matrix (only the arrays, not of the elements) - var A = mat.concat(); - for (r = 0; r < rows; r++) { - A[r] = A[r].concat(); - } - - // create an identity matrix which in the end will contain the - // matrix inverse - var B = eye(rows).valueOf(); - - // loop over all columns, and perform row reductions - for (var c = 0; c < cols; c++) { - // element Acc should be non zero. if not, swap content - // with one of the lower rows - r = c; - while (r < rows && A[r][c] == 0) { - r++; - } - if (r == rows || A[r][c] == 0) { - // TODO: in case of zero det, just return a matrix wih Infinity values? (like octave) - throw Error('Cannot calculate inverse, determinant is zero'); - } - if (r != c) { - temp = A[c]; A[c] = A[r]; A[r] = temp; - temp = B[c]; B[c] = B[r]; B[r] = temp; - } - - // eliminate non-zero values on the other rows at column c - var Ac = A[c], - Bc = B[c]; - for (r = 0; r < rows; r++) { - var Ar = A[r], - Br = B[r]; - if(r != c) { - // eliminate value at column c and row r - if (Ar[c] != 0) { - f = divideScalar(unaryMinus(Ar[c]), Ac[c]); - - // add (f * row c) to row r to eliminate the value - // at column c - for (s = c; s < cols; s++) { - Ar[s] = addScalar(Ar[s], multiply(f, Ac[s])); - } - for (s = 0; s < cols; s++) { - Br[s] = addScalar(Br[s], multiply(f, Bc[s])); - } - } - } - else { - // normalize value at Acc to 1, - // divide each value on row r with the value at Acc - f = Ac[c]; - for (s = c; s < cols; s++) { - Ar[s] = divideScalar(Ar[s], f); - } - for (s = 0; s < cols; s++) { - Br[s] = divideScalar(Br[s], f); - } - } - } - } - return B; - } - } - - inv.toTex = {1: '\\left(${args[0]}\\right)^{-1}'}; - - return inv; -} - -exports.name = 'inv'; -exports.factory = factory; - - -/***/ }), -/* 115 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var util = __webpack_require__(25); -var object = util.object; -var string = util.string; - -function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(0)); - var add = load(__webpack_require__(18)); - var subtract = load(__webpack_require__(21)); - var multiply = load(__webpack_require__(12)); - var unaryMinus = load(__webpack_require__(37)); - - /** - * Calculate the determinant of a matrix. - * - * Syntax: - * - * math.det(x) - * - * Examples: - * - * math.det([[1, 2], [3, 4]]); // returns -2 - * - * var A = [ - * [-2, 2, 3], - * [-1, 1, 3], - * [2, 0, -1] - * ] - * math.det(A); // returns 6 - * - * See also: - * - * inv - * - * @param {Array | Matrix} x A matrix - * @return {number} The determinant of `x` - */ - var det = typed('det', { - 'any': function (x) { - return object.clone(x); - }, - - 'Array | Matrix': function det (x) { - var size; - if (type.isMatrix(x)) { - size = x.size(); - } - else if (Array.isArray(x)) { - x = matrix(x); - size = x.size(); - } - else { - // a scalar - size = []; - } - - switch (size.length) { - case 0: - // scalar - return object.clone(x); - - case 1: - // vector - if (size[0] == 1) { - return object.clone(x.valueOf()[0]); - } - else { - throw new RangeError('Matrix must be square ' + - '(size: ' + string.format(size) + ')'); - } - - case 2: - // two dimensional array - var rows = size[0]; - var cols = size[1]; - if (rows == cols) { - return _det(x.clone().valueOf(), rows, cols); - } - else { - throw new RangeError('Matrix must be square ' + - '(size: ' + string.format(size) + ')'); - } - - default: - // multi dimensional array - throw new RangeError('Matrix must be two dimensional ' + - '(size: ' + string.format(size) + ')'); - } - } - }); - - det.toTex = {1: '\\det\\left(${args[0]}\\right)'}; - - return det; - - /** - * Calculate the determinant of a matrix - * @param {Array[]} matrix A square, two dimensional matrix - * @param {number} rows Number of rows of the matrix (zero-based) - * @param {number} cols Number of columns of the matrix (zero-based) - * @returns {number} det - * @private - */ - function _det (matrix, rows, cols) { - if (rows == 1) { - // this is a 1 x 1 matrix - return object.clone(matrix[0][0]); - } - else if (rows == 2) { - // this is a 2 x 2 matrix - // the determinant of [a11,a12;a21,a22] is det = a11*a22-a21*a12 - return subtract( - multiply(matrix[0][0], matrix[1][1]), - multiply(matrix[1][0], matrix[0][1]) - ); - } - else { - // this is an n x n matrix - var compute_mu = function (matrix) { - var i, j; - - // Compute the matrix with zero lower triangle, same upper triangle, - // and diagonals given by the negated sum of the below diagonal - // elements. - var mu = new Array(matrix.length); - var sum = 0; - for (i = 1; i < matrix.length; i++) { - sum = add(sum, matrix[i][i]); - } - - for (i = 0; i < matrix.length; i++) { - mu[i] = new Array(matrix.length); - mu[i][i] = unaryMinus(sum); - - for (j = 0; j < i; j++) { - mu[i][j] = 0; // TODO: make bignumber 0 in case of bignumber computation - } - - for (j = i + 1; j < matrix.length; j++) { - mu[i][j] = matrix[i][j]; - } - - if (i+1 < matrix.length) { - sum = subtract(sum, matrix[i + 1][i + 1]); - } - } - - return mu; - }; - - var fa = matrix; - for (var i = 0; i < rows - 1; i++) { - fa = multiply(compute_mu(fa), matrix); - } - - if (rows % 2 == 0) { - return unaryMinus(fa[0][0]); - } else { - return fa[0][0]; - } - } - } -} - -exports.name = 'det'; -exports.factory = factory; - - - -/***/ }), -/* 116 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var deepForEach = __webpack_require__(42); -var reduce = __webpack_require__(65); -var containsCollections = __webpack_require__(66); - -function factory (type, config, load, typed) { - var smaller = load(__webpack_require__(44)); - - /** - * Compute the maximum value of a matrix or a list of values. - * In case of a multi dimensional array, the maximum of the flattened array - * will be calculated. When `dim` is provided, the maximum over the selected - * dimension will be calculated. Parameter `dim` is zero-based. - * - * Syntax: - * - * math.min(a, b, c, ...) - * math.min(A) - * math.min(A, dim) - * - * Examples: - * - * math.min(2, 1, 4, 3); // returns 1 - * math.min([2, 1, 4, 3]); // returns 1 - * - * // maximum over a specified dimension (zero-based) - * math.min([[2, 5], [4, 3], [1, 7]], 0); // returns [1, 3] - * math.min([[2, 5], [4, 3], [1, 7]], 1); // returns [2, 3, 1] - * - * math.max(2.7, 7.1, -4.5, 2.0, 4.1); // returns 7.1 - * math.min(2.7, 7.1, -4.5, 2.0, 4.1); // returns -4.5 - * - * See also: - * - * mean, median, max, prod, std, sum, var - * - * @param {... *} args A single matrix or or multiple scalar values - * @return {*} The minimum value - */ - var min = typed('min', { - // min([a, b, c, d, ...]) - 'Array | Matrix': _min, - - // min([a, b, c, d, ...], dim) - 'Array | Matrix, number | BigNumber': function (array, dim) { - return reduce(array, dim.valueOf(), _smallest); - }, - - // min(a, b, c, d, ...) - '...': function (args) { - if (containsCollections(args)) { - throw new TypeError('Scalar values expected in function min'); - } - - return _min(args); - } - }); - - min.toTex = '\\min\\left(${args}\\right)'; - - return min; - - /** - * Return the smallest of two values - * @param {*} x - * @param {*} y - * @returns {*} Returns x when x is smallest, or y when y is smallest - * @private - */ - function _smallest(x, y) { - return smaller(x, y) ? x : y; - } - - /** - * Recursively calculate the minimum value in an n-dimensional array - * @param {Array} array - * @return {number} min - * @private - */ - function _min(array) { - var min = undefined; - - deepForEach(array, function (value) { - if (min === undefined || smaller(value, min)) { - min = value; - } - }); - - if (min === undefined) { - throw new Error('Cannot calculate min of an empty array'); - } - - return min; - } -} - -exports.name = 'min'; -exports.factory = factory; - - -/***/ }), -/* 117 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -function factory (type, config, load, typed) { - var matrix = load(__webpack_require__(0)); - - var ZERO = new type.BigNumber(0); - var ONE = new type.BigNumber(1); - - /** - * Create an array from a range. - * By default, the range end is excluded. This can be customized by providing - * an extra parameter `includeEnd`. - * - * Syntax: - * - * math.range(str [, includeEnd]) // Create a range from a string, - * // where the string contains the - * // start, optional step, and end, - * // separated by a colon. - * math.range(start, end [, includeEnd]) // Create a range with start and - * // end and a step size of 1. - * math.range(start, end, step [, includeEnd]) // Create a range with start, step, - * // and end. - * - * Where: - * - * - `str: string` - * A string 'start:end' or 'start:step:end' - * - `start: {number | BigNumber}` - * Start of the range - * - `end: number | BigNumber` - * End of the range, excluded by default, included when parameter includeEnd=true - * - `step: number | BigNumber` - * Step size. Default value is 1. - * - `includeEnd: boolean` - * Option to specify whether to include the end or not. False by default. - * - * Examples: - * - * math.range(2, 6); // [2, 3, 4, 5] - * math.range(2, -3, -1); // [2, 1, 0, -1, -2] - * math.range('2:1:6'); // [2, 3, 4, 5] - * math.range(2, 6, true); // [2, 3, 4, 5, 6] - * - * See also: - * - * ones, zeros, size, subset - * - * @param {*} args Parameters describing the ranges `start`, `end`, and optional `step`. - * @return {Array | Matrix} range - */ - var range = typed('range', { - // TODO: simplify signatures when typed-function supports default values and optional arguments - - // TODO: a number or boolean should not be converted to string here - 'string': _strRange, - 'string, boolean': _strRange, - - 'number, number': function (start, end) { - return _out(_rangeEx(start, end, 1)); - }, - 'number, number, number': function (start, end, step) { - return _out(_rangeEx(start, end, step)); - }, - 'number, number, boolean': function (start, end, includeEnd) { - return includeEnd - ? _out(_rangeInc(start, end, 1)) - : _out(_rangeEx(start, end, 1)); - }, - 'number, number, number, boolean': function (start, end, step, includeEnd) { - return includeEnd - ? _out(_rangeInc(start, end, step)) - : _out(_rangeEx(start, end, step)); - }, - - 'BigNumber, BigNumber': function (start, end) { - return _out(_bigRangeEx(start, end, ONE)); - }, - 'BigNumber, BigNumber, BigNumber': function (start, end, step) { - return _out(_bigRangeEx(start, end, step)); - }, - 'BigNumber, BigNumber, boolean': function (start, end, includeEnd) { - return includeEnd - ? _out(_bigRangeInc(start, end, ONE)) - : _out(_bigRangeEx(start, end, ONE)); - }, - 'BigNumber, BigNumber, BigNumber, boolean': function (start, end, step, includeEnd) { - return includeEnd - ? _out(_bigRangeInc(start, end, step)) - : _out(_bigRangeEx(start, end, step)); - } - - }); - - range.toTex = undefined; // use default template - - return range; - - function _out(arr) { - return config.matrix === 'Array' ? arr : matrix(arr); - } - - function _strRange (str, includeEnd) { - var r = _parse(str); - if (!r){ - throw new SyntaxError('String "' + str + '" is no valid range'); - } - - var fn; - if (config.number === 'BigNumber') { - fn = includeEnd ? _bigRangeInc : _bigRangeEx; - return _out(fn( - new type.BigNumber(r.start), - new type.BigNumber(r.end), - new type.BigNumber(r.step))); - } - else { - fn = includeEnd ? _rangeInc : _rangeEx; - return _out(fn(r.start, r.end, r.step)); - } - } - - /** - * Create a range with numbers. End is excluded - * @param {number} start - * @param {number} end - * @param {number} step - * @returns {Array} range - * @private - */ - function _rangeEx (start, end, step) { - var array = [], - x = start; - if (step > 0) { - while (x < end) { - array.push(x); - x += step; - } - } - else if (step < 0) { - while (x > end) { - array.push(x); - x += step; - } - } - - return array; - } - - /** - * Create a range with numbers. End is included - * @param {number} start - * @param {number} end - * @param {number} step - * @returns {Array} range - * @private - */ - function _rangeInc (start, end, step) { - var array = [], - x = start; - if (step > 0) { - while (x <= end) { - array.push(x); - x += step; - } - } - else if (step < 0) { - while (x >= end) { - array.push(x); - x += step; - } - } - - return array; - } - - /** - * Create a range with big numbers. End is excluded - * @param {BigNumber} start - * @param {BigNumber} end - * @param {BigNumber} step - * @returns {Array} range - * @private - */ - function _bigRangeEx (start, end, step) { - var array = [], - x = start; - if (step.gt(ZERO)) { - while (x.lt(end)) { - array.push(x); - x = x.plus(step); - } - } - else if (step.lt(ZERO)) { - while (x.gt(end)) { - array.push(x); - x = x.plus(step); - } - } - - return array; - } - - /** - * Create a range with big numbers. End is included - * @param {BigNumber} start - * @param {BigNumber} end - * @param {BigNumber} step - * @returns {Array} range - * @private - */ - function _bigRangeInc (start, end, step) { - var array = [], - x = start; - if (step.gt(ZERO)) { - while (x.lte(end)) { - array.push(x); - x = x.plus(step); - } - } - else if (step.lt(ZERO)) { - while (x.gte(end)) { - array.push(x); - x = x.plus(step); - } - } - - return array; - } - - /** - * Parse a string into a range, - * The string contains the start, optional step, and end, separated by a colon. - * If the string does not contain a valid range, null is returned. - * For example str='0:2:11'. - * @param {string} str - * @return {{start: number, end: number, step: number} | null} range Object containing properties start, end, step - * @private - */ - function _parse (str) { - var args = str.split(':'); - - // number - var nums = args.map(function (arg) { - // use Number and not parseFloat as Number returns NaN on invalid garbage in the string - return Number(arg); - }); - - var invalid = nums.some(function (num) { - return isNaN(num); - }); - if(invalid) { - return null; - } - - switch (nums.length) { - case 2: - return { - start: nums[0], - end: nums[1], - step: 1 - }; - - case 3: - return { - start: nums[0], - end: nums[2], - step: nums[1] - }; - - default: - return null; - } - } - -} - -exports.name = 'range'; -exports.factory = factory; - - -/***/ }), -/* 118 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - - -function factory (type, config, load, typed, math) { - var parse = load(__webpack_require__(39)); - var ConstantNode = load(__webpack_require__(53)); - var FunctionNode = load(__webpack_require__(54)); - var OperatorNode = load(__webpack_require__(62)); + var parse = load(__webpack_require__(40)); + var ConstantNode = load(__webpack_require__(47)); + var FunctionNode = load(__webpack_require__(55)); + var OperatorNode = load(__webpack_require__(54)); var ParenthesisNode = load(__webpack_require__(63)); - var SymbolNode = load(__webpack_require__(40)); + var SymbolNode = load(__webpack_require__(35)); var Node = load(__webpack_require__(14)); - var simplifyConstant = load(__webpack_require__(406)); - var simplifyCore = load(__webpack_require__(407)); - var resolve = load(__webpack_require__(408)); + var simplifyConstant = load(__webpack_require__(120)); + var simplifyCore = load(__webpack_require__(122)); + var resolve = load(__webpack_require__(409)); - var util = load(__webpack_require__(119)); + var util = load(__webpack_require__(121)); var isCommutative = util.isCommutative; var isAssociative = util.isAssociative; var flatten = util.flatten; @@ -20896,6 +15749,4927 @@ exports.name = 'simplify'; exports.factory = factory; +/***/ }), +/* 83 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var deepMap = __webpack_require__(1); +var number = __webpack_require__(3); + +function factory (type, config, load, typed) { + /** + * Test whether a value is zero. + * The function can check for zero for types `number`, `BigNumber`, `Fraction`, + * `Complex`, and `Unit`. + * + * The function is evaluated element-wise in case of Array or Matrix input. + * + * Syntax: + * + * math.isZero(x) + * + * Examples: + * + * math.isZero(0); // returns true + * math.isZero(2); // returns false + * math.isZero(0.5); // returns false + * math.isZero(math.bignumber(0)); // returns true + * math.isZero(math.fraction(0)); // returns true + * math.isZero(math.fraction(1,3)); // returns false + * math.isZero(math.complex('2 - 4i'); // returns false + * math.isZero(math.complex('0i'); // returns true + * math.isZero('0'); // returns true + * math.isZero('2'); // returns false + * math.isZero([2, 0, -3]'); // returns [false, true, false] + * + * See also: + * + * isNumeric, isPositive, isNegative, isInteger + * + * @param {number | BigNumber | Complex | Fraction | Unit | Array | Matrix} x Value to be tested + * @return {boolean} Returns true when `x` is zero. + * Throws an error in case of an unknown data type. + */ + var isZero = typed('isZero', { + 'number': function (x) { + return x === 0; + }, + + 'BigNumber': function (x) { + return x.isZero(); + }, + + 'Complex': function (x) { + return x.re === 0 && x.im === 0; + }, + + 'Fraction': function (x) { + return x.d === 1 && x.n === 0; + }, + + 'Unit': function (x) { + return isZero(x.value); + }, + + 'Array | Matrix': function (x) { + return deepMap(x, isZero); + } + }); + + return isZero; +} + +exports.name = 'isZero'; +exports.factory = factory; + + +/***/ }), +/* 84 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function factory () { + + /** + * This function "flips" its input about the integer -1. + * + * @param {Number} i The value to flip + * + * Reference: http://faculty.cse.tamu.edu/davis/publications.html + */ + var cs_flip = function (i) { + // flip the value + return -i - 2; + }; + + return cs_flip; +} + +exports.name = 'cs_flip'; +exports.path = 'sparse'; +exports.factory = factory; + + +/***/ }), +/* 85 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var util = __webpack_require__(25); + +var string = util.string; +var array = util.array; + +var isArray = Array.isArray; + +function factory (type) { + + var DenseMatrix = type.DenseMatrix; + + /** + * Validates matrix and column vector b for backward/forward substitution algorithms. + * + * @param {Matrix} m An N x N matrix + * @param {Array | Matrix} b A column vector + * @param {Boolean} copy Return a copy of vector b + * + * @return {DenseMatrix} Dense column vector b + */ + var solveValidation = function (m, b, copy) { + // matrix size + var size = m.size(); + // validate matrix dimensions + if (size.length !== 2) + throw new RangeError('Matrix must be two dimensional (size: ' + string.format(size) + ')'); + // rows & columns + var rows = size[0]; + var columns = size[1]; + // validate rows & columns + if (rows !== columns) + throw new RangeError('Matrix must be square (size: ' + string.format(size) + ')'); + // vars + var data, i, bdata; + // check b is matrix + if (type.isMatrix(b)) { + // matrix size + var msize = b.size(); + // vector + if (msize.length === 1) { + // check vector length + if (msize[0] !== rows) + throw new RangeError('Dimension mismatch. Matrix columns must match vector length.'); + // create data array + data = []; + // matrix data (DenseMatrix) + bdata = b._data; + // loop b data + for (i = 0; i < rows; i++) { + // row array + data[i] = [bdata[i]]; + } + // return Dense Matrix + return new DenseMatrix({ + data: data, + size: [rows, 1], + datatype: b._datatype + }); + } + // two dimensions + if (msize.length === 2) { + // array must be a column vector + if (msize[0] !== rows || msize[1] !== 1) + throw new RangeError('Dimension mismatch. Matrix columns must match vector length.'); + // check matrix type + if (type.isDenseMatrix(b)) { + // check a copy is needed + if (copy) { + // create data array + data = []; + // matrix data (DenseMatrix) + bdata = b._data; + // loop b data + for (i = 0; i < rows; i++) { + // row array + data[i] = [bdata[i][0]]; + } + // return Dense Matrix + return new DenseMatrix({ + data: data, + size: [rows, 1], + datatype: b._datatype + }); + } + // b is already a column vector + return b; + } + // create data array + data = []; + for (i = 0; i < rows; i++) + data[i] = [0]; + // sparse matrix arrays + var values = b._values; + var index = b._index; + var ptr = b._ptr; + // loop values in column 0 + for (var k1 = ptr[1], k = ptr[0]; k < k1; k++) { + // row + i = index[k]; + // add to data + data[i][0] = values[k]; + } + // return Dense Matrix + return new DenseMatrix({ + data: data, + size: [rows, 1], + datatype: b._datatype + }); + } + // throw error + throw new RangeError('Dimension mismatch. Matrix columns must match vector length.'); + } + // check b is array + if (isArray(b)) { + // size + var asize = array.size(b); + // check matrix dimensions, vector + if (asize.length === 1) { + // check vector length + if (asize[0] !== rows) + throw new RangeError('Dimension mismatch. Matrix columns must match vector length.'); + // create data array + data = []; + // loop b + for (i = 0; i < rows; i++) { + // row array + data[i] = [b[i]]; + } + // return Dense Matrix + return new DenseMatrix({ + data: data, + size: [rows, 1] + }); + } + if (asize.length === 2) { + // array must be a column vector + if (asize[0] !== rows || asize[1] !== 1) + throw new RangeError('Dimension mismatch. Matrix columns must match vector length.'); + // create data array + data = []; + // loop b data + for (i = 0; i < rows; i++) { + // row array + data[i] = [b[i][0]]; + } + // return Dense Matrix + return new DenseMatrix({ + data: data, + size: [rows, 1] + }); + } + // throw error + throw new RangeError('Dimension mismatch. Matrix columns must match vector length.'); + } + }; + + return solveValidation; +} + +exports.factory = factory; + +/***/ }), +/* 86 */ +/***/ (function(module, exports, __webpack_require__) { + +var bitNot = __webpack_require__(87); + +/** + * Applies bitwise function to numbers + * @param {BigNumber} x + * @param {BigNumber} y + * @param {function (a, b)} func + * @return {BigNumber} + */ +module.exports = function bitwise(x, y, func) { + var BigNumber = x.constructor; + + var xBits, yBits; + var xSign = +(x.s < 0); + var ySign = +(y.s < 0); + if (xSign) { + xBits = decCoefficientToBinaryString(bitNot(x)); + for (var i = 0; i < xBits.length; ++i) { + xBits[i] ^= 1; + } + } else { + xBits = decCoefficientToBinaryString(x); + } + if (ySign) { + yBits = decCoefficientToBinaryString(bitNot(y)); + for (var i = 0; i < yBits.length; ++i) { + yBits[i] ^= 1; + } + } else { + yBits = decCoefficientToBinaryString(y); + } + + var minBits, maxBits, minSign; + if (xBits.length <= yBits.length) { + minBits = xBits; + maxBits = yBits; + minSign = xSign; + } else { + minBits = yBits; + maxBits = xBits; + minSign = ySign; + } + + var shortLen = minBits.length; + var longLen = maxBits.length; + var expFuncVal = func(xSign, ySign) ^ 1; + var outVal = new BigNumber(expFuncVal ^ 1); + var twoPower = new BigNumber(1); + var two = new BigNumber(2); + + var prevPrec = BigNumber.precision; + BigNumber.config({precision: 1E9}); + + while (shortLen > 0) { + if (func(minBits[--shortLen], maxBits[--longLen]) == expFuncVal) { + outVal = outVal.plus(twoPower); + } + twoPower = twoPower.times(two); + } + while (longLen > 0) { + if (func(minSign, maxBits[--longLen]) == expFuncVal) { + outVal = outVal.plus(twoPower); + } + twoPower = twoPower.times(two); + } + + BigNumber.config({precision: prevPrec}); + + if (expFuncVal == 0) { + outVal.s = -outVal.s; + } + return outVal; +}; + +/* Extracted from decimal.js, and edited to specialize. */ +function decCoefficientToBinaryString (x) { + // Convert to string + var a = x.d; // array with digits + var r = a[0] + ''; + + for (var i = 1; i < a.length; ++i) { + var s = a[i] + ''; + for (var z = 7 - s.length; z--; ) { + s = '0' + s; + } + + r += s; + } + + var j; + for (j = r.length - 1; r.charAt(j) == '0'; --j); + + var xe = x.e; + var str = r.slice(0, j + 1 || 1); + var strL = str.length; + if (xe > 0) { + if (++xe > strL) { + // Append zeros. + for (xe -= strL; xe--; str += '0'); + } else if (xe < strL) { + str = str.slice(0, xe) + '.' + str.slice(xe); + } + } + + // Convert from base 10 (decimal) to base 2 + var arr = [0]; + for (var i = 0; i < str.length; ) { + for (var arrL = arr.length; arrL--; arr[arrL] *= 10); + + arr[0] += str.charAt(i++) << 0; // convert to int + for (var j = 0; j < arr.length; ++j) { + if (arr[j] > 1) { + if (arr[j + 1] == null) { + arr[j + 1] = 0; + } + + arr[j + 1] += arr[j] >> 1; + arr[j] &= 1; + } + } + } + + return arr.reverse(); +} + + +/***/ }), +/* 87 */ +/***/ (function(module, exports) { + +/** + * Bitwise not + * @param {BigNumber} value + * @return {BigNumber} Result of ~`x`, fully precise + * + */ +module.exports = function bitNot (x) { + if (x.isFinite() && !x.isInteger()) { + throw new Error('Integer expected in function bitNot'); + } + + var BigNumber = x.constructor; + var prevPrec = BigNumber.precision; + BigNumber.config({precision: 1E9}); + + var x = x.plus(new BigNumber(1)); + x.s = -x.s || null; + + BigNumber.config({precision: prevPrec}); + return x; +}; + + +/***/ }), +/* 88 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var DimensionError = __webpack_require__(10); + +function factory (type, config, load, typed) { + + var equalScalar = load(__webpack_require__(11)); + + var SparseMatrix = type.SparseMatrix; + + /** + * Iterates over SparseMatrix A and SparseMatrix B nonzero items and invokes the callback function f(Aij, Bij). + * Callback function invoked MAX(NNZA, NNZB) times + * + * + * ┌ f(Aij, Bij) ; A(i,j) !== 0 && B(i,j) !== 0 + * C(i,j) = ┤ A(i,j) ; A(i,j) !== 0 + * └ 0 ; otherwise + * + * + * @param {Matrix} a The SparseMatrix instance (A) + * @param {Matrix} b The SparseMatrix instance (B) + * @param {Function} callback The f(Aij,Bij) operation to invoke + * + * @return {Matrix} SparseMatrix (C) + * + * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97620294 + */ + var algorithm08 = function (a, b, callback) { + // sparse matrix arrays + var avalues = a._values; + var aindex = a._index; + var aptr = a._ptr; + var asize = a._size; + var adt = a._datatype; + // sparse matrix arrays + var bvalues = b._values; + var bindex = b._index; + var bptr = b._ptr; + var bsize = b._size; + var bdt = b._datatype; + + // validate dimensions + if (asize.length !== bsize.length) + throw new DimensionError(asize.length, bsize.length); + + // check rows & columns + if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) + throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')'); + + // sparse matrix cannot be a Pattern matrix + if (!avalues || !bvalues) + throw new Error('Cannot perform operation on Pattern Sparse Matrices'); + + // rows & columns + var rows = asize[0]; + var columns = asize[1]; + + // datatype + var dt; + // equal signature to use + var eq = equalScalar; + // zero value + var zero = 0; + // callback signature to use + var cf = callback; + + // process data types + if (typeof adt === 'string' && adt === bdt) { + // datatype + dt = adt; + // find signature that matches (dt, dt) + eq = typed.find(equalScalar, [dt, dt]); + // convert 0 to the same datatype + zero = typed.convert(0, dt); + // callback + cf = typed.find(callback, [dt, dt]); + } + + // result arrays + var cvalues = []; + var cindex = []; + var cptr = []; + // matrix + var c = new SparseMatrix({ + values: cvalues, + index: cindex, + ptr: cptr, + size: [rows, columns], + datatype: dt + }); + + // workspace + var x = []; + // marks indicating we have a value in x for a given column + var w = []; + + // vars + var k, k0, k1, i; + + // loop columns + for (var j = 0; j < columns; j++) { + // update cptr + cptr[j] = cindex.length; + // columns mark + var mark = j + 1; + // loop values in a + for (k0 = aptr[j], k1 = aptr[j + 1], k = k0; k < k1; k++) { + // row + i = aindex[k]; + // mark workspace + w[i] = mark; + // set value + x[i] = avalues[k]; + // add index + cindex.push(i); + } + // loop values in b + for (k0 = bptr[j], k1 = bptr[j + 1], k = k0; k < k1; k++) { + // row + i = bindex[k]; + // check value exists in workspace + if (w[i] === mark) { + // evaluate callback + x[i] = cf(x[i], bvalues[k]); + } + } + // initialize first index in j + k = cptr[j]; + // loop index in j + while (k < cindex.length) { + // row + i = cindex[k]; + // value @ i + var v = x[i]; + // check for zero value + if (!eq(v, zero)) { + // push value + cvalues.push(v); + // increment pointer + k++; + } + else { + // remove value @ i, do not increment pointer + cindex.splice(k, 1); + } + } + } + // update cptr + cptr[columns] = cindex.length; + + // return sparse matrix + return c; + }; + + return algorithm08; +} + +exports.name = 'algorithm08'; +exports.factory = factory; + + +/***/ }), +/* 89 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var isInteger = __webpack_require__(3).isInteger; + +function factory (type, config, load, typed) { + var asc = load(__webpack_require__(51)); + function desc(a, b) { + return -asc(a, b); + } + + /** + * Partition-based selection of an array or 1D matrix. + * Will find the kth smallest value, and mutates the input array. + * Uses Quickselect. + * + * Syntax: + * + * math.partitionSelect(x, k) + * math.partitionSelect(x, k, compare) + * + * Examples: + * + * math.partitionSelect([5, 10, 1], 2); // returns 10 + * math.partitionSelect(['C', 'B', 'A', 'D'], 1); // returns 'B' + * + * function sortByLength (a, b) { + * return a.length - b.length; + * } + * math.partitionSelect(['Langdon', 'Tom', 'Sara'], 2, sortByLength); // returns 'Langdon' + * + * See also: + * + * sort + * + * @param {Matrix | Array} x A one dimensional matrix or array to sort + * @param {Number} k The kth smallest value to be retrieved; zero-based index + * @param {Function | 'asc' | 'desc'} [compare='asc'] + * An optional comparator function. The function is called as + * `compare(a, b)`, and must return 1 when a > b, -1 when a < b, + * and 0 when a == b. + * @return {*} Returns the kth lowest value. + */ + return typed('partitionSelect', { + 'Array | Matrix, number': function (x, k) { + return _partitionSelect(x, k, asc); + }, + + 'Array | Matrix, number, string': function (x, k, compare) { + if (compare === 'asc') { + return _partitionSelect(x, k, asc); + } + else if (compare === 'desc') { + return _partitionSelect(x, k, desc); + } + else { + throw new Error('Compare string must be "asc" or "desc"'); + } + }, + + 'Array | Matrix, number, function': _partitionSelect + }); + + function _partitionSelect(x, k, compare) { + if (!isInteger(k) || k < 0) { + throw new Error('k must be a non-negative integer'); + } + + if (type.isMatrix(x)) { + var size = x.size(); + if (size.length > 1) { + throw new Error('Only one dimensional matrices supported'); + } + return quickSelect(x.valueOf(), k, compare); + } + + if (Array.isArray(x)) { + return quickSelect(x, k, compare); + } + } + + /** + * Quickselect algorithm. + * Code adapted from: + * http://blog.teamleadnet.com/2012/07/quick-select-algorithm-find-kth-element.html + * + * @param {Array} arr + * @param {Number} k + * @param {Function} compare + * @private + */ + function quickSelect(arr, k, compare) { + if (k >= arr.length) { + throw new Error('k out of bounds'); + } + + var from = 0; + var to = arr.length - 1; + + // if from == to we reached the kth element + while (from < to) { + var r = from; + var w = to; + var pivot = arr[Math.floor(Math.random() * (to - from + 1)) + from]; + + // stop if the reader and writer meets + while (r < w) { + // arr[r] >= pivot + if (compare(arr[r], pivot) >= 0) { // put the large values at the end + var tmp = arr[w]; + arr[w] = arr[r]; + arr[r] = tmp; + --w; + } else { // the value is smaller than the pivot, skip + ++r; + } + } + + // if we stepped up (r++) we need to step one down (arr[r] > pivot) + if (compare(arr[r], pivot) > 0) { + --r; + } + + // the r pointer is on the end of the first k elements + if (k <= r) { + to = r; + } else { + from = r + 1; + } + } + + return arr[k]; + } +} + +exports.name = 'partitionSelect'; +exports.factory = factory; + + +/***/ }), +/* 90 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var ArgumentsError = __webpack_require__(43); +var isCollection = __webpack_require__(48); +var isNumber = __webpack_require__(3).isNumber; + +// TODO: rethink math.distribution +// TODO: rework to a typed function +function factory (type, config, load, typed, math) { + var matrix = load(__webpack_require__(0)); + var array = __webpack_require__(2); + + // seeded pseudo random number generator + var rng = load(__webpack_require__(492)); + + /** + * Create a distribution object with a set of random functions for given + * random distribution. + * + * Syntax: + * + * math.distribution(name) + * + * Examples: + * + * var normalDist = math.distribution('normal'); // create a normal distribution + * normalDist.random(0, 10); // get a random value between 0 and 10 + * + * See also: + * + * random, randomInt, pickRandom + * + * @param {string} name Name of a distribution. Choose from 'uniform', 'normal'. + * @return {Object} Returns a distribution object containing functions: + * `random([size] [, min] [, max])`, + * `randomInt([min] [, max])`, + * `pickRandom(array)` + */ + function distribution(name) { + if (!distributions.hasOwnProperty(name)) + throw new Error('Unknown distribution ' + name); + + var args = Array.prototype.slice.call(arguments, 1), + distribution = distributions[name].apply(this, args); + + return (function(distribution) { + + // This is the public API for all distributions + var randFunctions = { + + random: function(arg1, arg2, arg3) { + var size, min, max; + + if (arguments.length > 3) { + throw new ArgumentsError('random', arguments.length, 0, 3); + } else if (arguments.length === 1) { + // `random(max)` or `random(size)` + if (isCollection(arg1)) { + size = arg1; + } else { + max = arg1; + } + } else if (arguments.length === 2) { + // `random(min, max)` or `random(size, max)` + if (isCollection(arg1)) { + size = arg1; + max = arg2; + } else { + min = arg1; + max = arg2; + } + } else { + // `random(size, min, max)` + size = arg1; + min = arg2; + max = arg3; + } + + // TODO: validate type of size + if ((min !== undefined && !isNumber(min)) || (max !== undefined && !isNumber(max))) { + throw new TypeError('Invalid argument in function random'); + } + + if (max === undefined) max = 1; + if (min === undefined) min = 0; + if (size !== undefined) { + var res = _randomDataForMatrix(size.valueOf(), min, max, _random); + return type.isMatrix(size) ? matrix(res) : res; + } + return _random(min, max); + }, + + randomInt: typed({ + 'number | Array': function(arg) { + var min = 0; + + if (isCollection(arg)) { + var size = arg; + var max = 1; + var res = _randomDataForMatrix(size.valueOf(), min, max, _randomInt); + return type.isMatrix(size) ? matrix(res) : res; + } else { + var max = arg; + return _randomInt(min, max); + } + }, + 'number | Array, number': function(arg1, arg2) { + if (isCollection(arg1)) { + var size = arg1; + var max = arg2; + var min = 0; + var res = _randomDataForMatrix(size.valueOf(), min, max, _randomInt); + return type.isMatrix(size) ? matrix(res) : res; + } + else { + var min = arg1; + var max = arg2; + return _randomInt(min, max); + } + }, + 'Array, number, number': function(size, min, max) { + var res = _randomDataForMatrix(size.valueOf(), min, max, _randomInt); + return (size && size.isMatrix === true) ? matrix(res) : res; + } + }), + + pickRandom: typed({ + 'Array': function(possibles) { + return _pickRandom(possibles); + }, + 'Array, number | Array': function(possibles, arg2) { + var number, weights; + + if (Array.isArray(arg2)) { + weights = arg2; + } else if (isNumber(arg2)) { + number = arg2; + } else { + throw new TypeError('Invalid argument in function pickRandom') + } + + return _pickRandom(possibles, number, weights); + }, + 'Array, number | Array, Array | number': function(possibles, arg2, arg3) { + var number, weights; + + if (Array.isArray(arg2)) { + weights = arg2; + number = arg3; + } else { + weights = arg3; + number = arg2; + } + + if (!Array.isArray(weights) || !isNumber(number)) { + throw new TypeError('Invalid argument in function pickRandom'); + } + + return _pickRandom(possibles, number, weights); + } + }) + } + + var _pickRandom = function(possibles, number, weights) { + var single = (typeof number === 'undefined'); + + if (single) { + number = 1; + } + + if (type.isMatrix(possibles)) { + possibles = possibles.valueOf(); // get Array + } else if (!Array.isArray(possibles)) { + throw new TypeError('Unsupported type of value in function pickRandom'); + } + + if (array.size(possibles).length > 1) { + throw new Error('Only one dimensional vectors supported'); + } + + if (typeof weights !== 'undefined') { + if (weights.length != possibles.length) { + throw new Error('Weights must have the same length as possibles'); + } + + var totalWeights = 0; + + for (var i = 0, len = weights.length; i < len; i++) { + if (!isNumber(weights[i]) || weights[i] < 0) { + throw new Error('Weights must be an array of positive numbers'); + } + + totalWeights += weights[i]; + } + } + + var length = possibles.length; + + if (length == 0) { + return []; + } else if (number >= length) { + return number > 1 ? possibles : possibles[0]; + } + + var result = []; + var pick; + + while (result.length < number) { + if (typeof weights === 'undefined') { + pick = possibles[Math.floor(rng() * length)]; + } else { + var randKey = rng() * totalWeights; + + for (var i = 0, len = possibles.length; i < len; i++) { + randKey -= weights[i]; + + if (randKey < 0) { + pick = possibles[i]; + break; + } + } + } + + if (result.indexOf(pick) == -1) { + result.push(pick); + } + } + + return single ? result[0] : result; + + // TODO: add support for multi dimensional matrices + } + + var _random = function(min, max) { + return min + distribution() * (max - min); + }; + + var _randomInt = function(min, max) { + return Math.floor(min + distribution() * (max - min)); + }; + + // This is a function for generating a random matrix recursively. + var _randomDataForMatrix = function(size, min, max, randFunc) { + var data = [], length, i; + size = size.slice(0); + + if (size.length > 1) { + for (var i = 0, length = size.shift(); i < length; i++) { + data.push(_randomDataForMatrix(size, min, max, randFunc)); + } + } else { + for (var i = 0, length = size.shift(); i < length; i++) { + data.push(randFunc(min, max)); + } + } + + return data; + }; + + return randFunctions; + + })(distribution); + } + + // Each distribution is a function that takes no argument and when called returns + // a number between 0 and 1. + var distributions = { + + uniform: function() { + return rng; + }, + + // Implementation of normal distribution using Box-Muller transform + // ref : http://en.wikipedia.org/wiki/Box%E2%80%93Muller_transform + // We take : mean = 0.5, standard deviation = 1/6 + // so that 99.7% values are in [0, 1]. + normal: function() { + return function() { + var u1, u2, + picked = -1; + // We reject values outside of the interval [0, 1] + // TODO: check if it is ok to do that? + while (picked < 0 || picked > 1) { + u1 = rng(); + u2 = rng(); + picked = 1/6 * Math.pow(-2 * Math.log(u1), 0.5) * Math.cos(2 * Math.PI * u2) + 0.5; + } + return picked; + } + } + }; + + distribution.toTex = undefined; // use default template + + return distribution; +} + +exports.name = 'distribution'; +exports.factory = factory; + + +/***/ }), +/* 91 */ +/***/ (function(module, exports, __webpack_require__) { + +var Emitter = __webpack_require__(156); + +/** + * Extend given object with emitter functions `on`, `off`, `once`, `emit` + * @param {Object} obj + * @return {Object} obj + */ +exports.mixin = function (obj) { + // create event emitter + var emitter = new Emitter(); + + // bind methods to obj (we don't want to expose the emitter.e Array...) + obj.on = emitter.on.bind(emitter); + obj.off = emitter.off.bind(emitter); + obj.once = emitter.once.bind(emitter); + obj.emit = emitter.emit.bind(emitter); + + return obj; +}; + + +/***/ }), +/* 92 */ +/***/ (function(module, exports, __webpack_require__) { + +var Complex = __webpack_require__(171); +var format = __webpack_require__(3).format; +var isNumber = __webpack_require__(3).isNumber; + +function factory (type, config, load, typed, math) { + + /** + * Attach type information + */ + Complex.prototype.type = 'Complex'; + Complex.prototype.isComplex = true; + + + /** + * Get a JSON representation of the complex number + * @returns {Object} Returns a JSON object structured as: + * `{"mathjs": "Complex", "re": 2, "im": 3}` + */ + Complex.prototype.toJSON = function () { + return { + mathjs: 'Complex', + re: this.re, + im: this.im + }; + }; + + /* + * Return the value of the complex number in polar notation + * The angle phi will be set in the interval of [-pi, pi]. + * @return {{r: number, phi: number}} Returns and object with properties r and phi. + */ + Complex.prototype.toPolar = function () { + return { + r: this.abs(), + phi: this.arg() + }; + }; + + /** + * Get a string representation of the complex number, + * with optional formatting options. + * @param {Object | number | Function} [options] Formatting options. See + * lib/utils/number:format for a + * description of the available + * options. + * @return {string} str + */ + Complex.prototype.format = function (options) { + var str = ''; + var im = this.im; + var re = this.re; + var strRe = format(this.re, options); + var strIm = format(this.im, options); + + // round either re or im when smaller than the configured precision + var precision = isNumber(options) ? options : options ? options.precision : null; + if (precision !== null) { + var epsilon = Math.pow(10, -precision); + if (Math.abs(re / im) < epsilon) { + re = 0; + } + if (Math.abs(im / re) < epsilon) { + im = 0; + } + } + + if (im == 0) { + // real value + str = strRe; + } else if (re == 0) { + // purely complex value + if (im == 1) { + str = 'i'; + } else if (im == -1) { + str = '-i'; + } else { + str = strIm + 'i'; + } + } else { + // complex value + if (im < 0) { + if (im == -1) { + str = strRe + ' - i'; + } else { + str = strRe + ' - ' + strIm.substring(1) + 'i'; + } + } else { + if (im == 1) { + str = strRe + ' + i'; + } else { + str = strRe + ' + ' + strIm + 'i'; + } + } + } + return str; + }; + + /** + * Create a complex number from polar coordinates + * + * Usage: + * + * Complex.fromPolar(r: number, phi: number) : Complex + * Complex.fromPolar({r: number, phi: number}) : Complex + * + * @param {*} args... + * @return {Complex} + */ + Complex.fromPolar = function (args) { + switch (arguments.length) { + case 1: + var arg = arguments[0]; + if (typeof arg === 'object') { + return Complex(arg); + } + throw new TypeError('Input has to be an object with r and phi keys.'); + + case 2: + var r = arguments[0], + phi = arguments[1]; + if (isNumber(r)) { + if (type.isUnit(phi) && phi.hasBase('ANGLE')) { + // convert unit to a number in radians + phi = phi.toNumber('rad'); + } + + if (isNumber(phi)) { + return new Complex({r: r, phi: phi}); + } + + throw new TypeError('Phi is not a number nor an angle unit.'); + } else { + throw new TypeError('Radius r is not a number.'); + } + + default: + throw new SyntaxError('Wrong number of arguments in function fromPolar'); + } + }; + + + Complex.prototype.valueOf = Complex.prototype.toString; + + /** + * Create a Complex number from a JSON object + * @param {Object} json A JSON Object structured as + * {"mathjs": "Complex", "re": 2, "im": 3} + * All properties are optional, default values + * for `re` and `im` are 0. + * @return {Complex} Returns a new Complex number + */ + Complex.fromJSON = function (json) { + return new Complex(json); + }; + + // apply the current epsilon + Complex.EPSILON = config.epsilon; + + // listen for changed in the configuration, automatically apply changed epsilon + math.on('config', function (curr, prev) { + if (curr.epsilon !== prev.epsilon) { + Complex.EPSILON = curr.epsilon; + } + }); + + /** + * Compare two complex numbers, `a` and `b`: + * + * - Returns 1 when the real part of `a` is larger than the real part of `b` + * - Returns -1 when the real part of `a` is smaller than the real part of `b` + * - Returns 1 when the real parts are equal + * and the imaginary part of `a` is larger than the imaginary part of `b` + * - Returns -1 when the real parts are equal + * and the imaginary part of `a` is smaller than the imaginary part of `b` + * - Returns 0 when both real and imaginary parts are equal. + * + * @params {Complex} a + * @params {Complex} b + * @returns {number} Returns the comparison result: -1, 0, or 1 + */ + Complex.compare = function (a, b) { + if (a.re > b.re) { return 1; } + if (a.re < b.re) { return -1; } + + if (a.im > b.im) { return 1; } + if (a.im < b.im) { return -1; } + + return 0; + } + + return Complex; +} + +exports.name = 'Complex'; +exports.path = 'type'; +exports.factory = factory; +exports.math = true; // request access to the math namespace + + +/***/ }), +/* 93 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var deepMap = __webpack_require__(1); + +function factory (type, config, load, typed) { + /** + * Create a fraction convert a value to a fraction. + * + * Syntax: + * math.fraction(numerator, denominator) + * math.fraction({n: numerator, d: denominator}) + * math.fraction(matrix: Array | Matrix) Turn all matrix entries + * into fractions + * + * Examples: + * + * math.fraction(1, 3); + * math.fraction('2/3'); + * math.fraction({n: 2, d: 3}); + * math.fraction([0.2, 0.25, 1.25]); + * + * See also: + * + * bignumber, number, string, unit + * + * @param {number | string | Fraction | BigNumber | Array | Matrix} [args] + * Arguments specifying the numerator and denominator of + * the fraction + * @return {Fraction | Array | Matrix} Returns a fraction + */ + var fraction = typed('fraction', { + 'number': function (x) { + if (!isFinite(x) || isNaN(x)) { + throw new Error(x + ' cannot be represented as a fraction'); + } + + return new type.Fraction(x); + }, + + 'string': function (x) { + return new type.Fraction(x); + }, + + 'number, number': function (numerator, denominator) { + return new type.Fraction(numerator, denominator); + }, + + 'BigNumber': function (x) { + return new type.Fraction(x.toString()); + }, + + 'Fraction': function (x) { + return x; // fractions are immutable + }, + + 'Object': function (x) { + return new type.Fraction(x); + }, + + 'Array | Matrix': function (x) { + return deepMap(x, fraction); + } + }); + + return fraction; +} + +exports.name = 'fraction'; +exports.factory = factory; + + +/***/ }), +/* 94 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var number = __webpack_require__(3); + +function factory (type, config, load, typed) { + /** + * Create a range. A range has a start, step, and end, and contains functions + * to iterate over the range. + * + * A range can be constructed as: + * var range = new Range(start, end); + * var range = new Range(start, end, step); + * + * To get the result of the range: + * range.forEach(function (x) { + * console.log(x); + * }); + * range.map(function (x) { + * return math.sin(x); + * }); + * range.toArray(); + * + * Example usage: + * var c = new Range(2, 6); // 2:1:5 + * c.toArray(); // [2, 3, 4, 5] + * var d = new Range(2, -3, -1); // 2:-1:-2 + * d.toArray(); // [2, 1, 0, -1, -2] + * + * @class Range + * @constructor Range + * @param {number} start included lower bound + * @param {number} end excluded upper bound + * @param {number} [step] step size, default value is 1 + */ + function Range(start, end, step) { + if (!(this instanceof Range)) { + throw new SyntaxError('Constructor must be called with the new operator'); + } + + if (start != null) { + if (type.isBigNumber(start)) + start = start.toNumber(); + else if (typeof start !== 'number') + throw new TypeError('Parameter start must be a number'); + } + if (end != null) { + if (type.isBigNumber(end)) + end = end.toNumber(); + else if (typeof end !== 'number') + throw new TypeError('Parameter end must be a number'); + } + if (step != null) { + if (type.isBigNumber(step)) + step = step.toNumber(); + else if (typeof step !== 'number') + throw new TypeError('Parameter step must be a number'); + } + + this.start = (start != null) ? parseFloat(start) : 0; + this.end = (end != null) ? parseFloat(end) : 0; + this.step = (step != null) ? parseFloat(step) : 1; + } + + /** + * Attach type information + */ + Range.prototype.type = 'Range'; + Range.prototype.isRange = true; + + /** + * Parse a string into a range, + * The string contains the start, optional step, and end, separated by a colon. + * If the string does not contain a valid range, null is returned. + * For example str='0:2:11'. + * @memberof Range + * @param {string} str + * @return {Range | null} range + */ + Range.parse = function (str) { + if (typeof str !== 'string') { + return null; + } + + var args = str.split(':'); + var nums = args.map(function (arg) { + return parseFloat(arg); + }); + + var invalid = nums.some(function (num) { + return isNaN(num); + }); + if (invalid) { + return null; + } + + switch (nums.length) { + case 2: + return new Range(nums[0], nums[1]); + case 3: + return new Range(nums[0], nums[2], nums[1]); + default: + return null; + } + }; + + /** + * Create a clone of the range + * @return {Range} clone + */ + Range.prototype.clone = function () { + return new Range(this.start, this.end, this.step); + }; + + /** + * Retrieve the size of the range. + * Returns an array containing one number, the number of elements in the range. + * @memberof Range + * @returns {number[]} size + */ + Range.prototype.size = function () { + var len = 0, + start = this.start, + step = this.step, + end = this.end, + diff = end - start; + + if (number.sign(step) == number.sign(diff)) { + len = Math.ceil((diff) / step); + } + else if (diff == 0) { + len = 0; + } + + if (isNaN(len)) { + len = 0; + } + return [len]; + }; + + /** + * Calculate the minimum value in the range + * @memberof Range + * @return {number | undefined} min + */ + Range.prototype.min = function () { + var size = this.size()[0]; + + if (size > 0) { + if (this.step > 0) { + // positive step + return this.start; + } + else { + // negative step + return this.start + (size - 1) * this.step; + } + } + else { + return undefined; + } + }; + + /** + * Calculate the maximum value in the range + * @memberof Range + * @return {number | undefined} max + */ + Range.prototype.max = function () { + var size = this.size()[0]; + + if (size > 0) { + if (this.step > 0) { + // positive step + return this.start + (size - 1) * this.step; + } + else { + // negative step + return this.start; + } + } + else { + return undefined; + } + }; + + + /** + * Execute a callback function for each value in the range. + * @memberof Range + * @param {function} callback The callback method is invoked with three + * parameters: the value of the element, the index + * of the element, and the Range being traversed. + */ + Range.prototype.forEach = function (callback) { + var x = this.start; + var step = this.step; + var end = this.end; + var i = 0; + + if (step > 0) { + while (x < end) { + callback(x, [i], this); + x += step; + i++; + } + } + else if (step < 0) { + while (x > end) { + callback(x, [i], this); + x += step; + i++; + } + } + }; + + /** + * Execute a callback function for each value in the Range, and return the + * results as an array + * @memberof Range + * @param {function} callback The callback method is invoked with three + * parameters: the value of the element, the index + * of the element, and the Matrix being traversed. + * @returns {Array} array + */ + Range.prototype.map = function (callback) { + var array = []; + this.forEach(function (value, index, obj) { + array[index[0]] = callback(value, index, obj); + }); + return array; + }; + + /** + * Create an Array with a copy of the Ranges data + * @memberof Range + * @returns {Array} array + */ + Range.prototype.toArray = function () { + var array = []; + this.forEach(function (value, index) { + array[index[0]] = value; + }); + return array; + }; + + /** + * Get the primitive value of the Range, a one dimensional array + * @memberof Range + * @returns {Array} array + */ + Range.prototype.valueOf = function () { + // TODO: implement a caching mechanism for range.valueOf() + return this.toArray(); + }; + + /** + * Get a string representation of the range, with optional formatting options. + * Output is formatted as 'start:step:end', for example '2:6' or '0:0.2:11' + * @memberof Range + * @param {Object | number | function} [options] Formatting options. See + * lib/utils/number:format for a + * description of the available + * options. + * @returns {string} str + */ + Range.prototype.format = function (options) { + var str = number.format(this.start, options); + + if (this.step != 1) { + str += ':' + number.format(this.step, options); + } + str += ':' + number.format(this.end, options); + return str; + }; + + /** + * Get a string representation of the range. + * @memberof Range + * @returns {string} + */ + Range.prototype.toString = function () { + return this.format(); + }; + + /** + * Get a JSON representation of the range + * @memberof Range + * @returns {Object} Returns a JSON object structured as: + * `{"mathjs": "Range", "start": 2, "end": 4, "step": 1}` + */ + Range.prototype.toJSON = function () { + return { + mathjs: 'Range', + start: this.start, + end: this.end, + step: this.step + }; + }; + + /** + * Instantiate a Range from a JSON object + * @memberof Range + * @param {Object} json A JSON object structured as: + * `{"mathjs": "Range", "start": 2, "end": 4, "step": 1}` + * @return {Range} + */ + Range.fromJSON = function (json) { + return new Range(json.start, json.end, json.step); + }; + + return Range; +} + +exports.name = 'Range'; +exports.path = 'type'; +exports.factory = factory; + + +/***/ }), +/* 95 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function factory (type, config, load, typed) { + /** + * A ResultSet contains a list or results + * @class ResultSet + * @param {Array} entries + * @constructor ResultSet + */ + function ResultSet(entries) { + if (!(this instanceof ResultSet)) { + throw new SyntaxError('Constructor must be called with the new operator'); + } + + this.entries = entries || []; + } + + /** + * Attach type information + */ + ResultSet.prototype.type = 'ResultSet'; + ResultSet.prototype.isResultSet = true; + + /** + * Returns the array with results hold by this ResultSet + * @memberof ResultSet + * @returns {Array} entries + */ + ResultSet.prototype.valueOf = function () { + return this.entries; + }; + + /** + * Returns the stringified results of the ResultSet + * @memberof ResultSet + * @returns {string} string + */ + ResultSet.prototype.toString = function () { + return '[' + this.entries.join(', ') + ']'; + }; + + /** + * Get a JSON representation of the ResultSet + * @memberof ResultSet + * @returns {Object} Returns a JSON object structured as: + * `{"mathjs": "ResultSet", "entries": [...]}` + */ + ResultSet.prototype.toJSON = function () { + return { + mathjs: 'ResultSet', + entries: this.entries + }; + }; + + /** + * Instantiate a ResultSet from a JSON object + * @memberof ResultSet + * @param {Object} json A JSON object structured as: + * `{"mathjs": "ResultSet", "entries": [...]}` + * @return {ResultSet} + */ + ResultSet.fromJSON = function (json) { + return new ResultSet(json.entries); + }; + + return ResultSet; +} + +exports.name = 'ResultSet'; +exports.path = 'type'; +exports.factory = factory; + + +/***/ }), +/* 96 */ +/***/ (function(module, exports, __webpack_require__) { + +var memoize = __webpack_require__(32).memoize; + +/** + * Calculate BigNumber e + * @param {function} BigNumber BigNumber constructor + * @returns {BigNumber} Returns e + */ +exports.e = memoize(function (BigNumber) { + return new BigNumber(1).exp(); +}, hasher); + +/** + * Calculate BigNumber golden ratio, phi = (1+sqrt(5))/2 + * @param {function} BigNumber BigNumber constructor + * @returns {BigNumber} Returns phi + */ +exports.phi = memoize(function (BigNumber) { + return new BigNumber(1).plus(new BigNumber(5).sqrt()).div(2); +}, hasher); + +/** + * Calculate BigNumber pi. + * @param {function} BigNumber BigNumber constructor + * @returns {BigNumber} Returns pi + */ +exports.pi = memoize(function (BigNumber) { + return BigNumber.acos(-1); +}, hasher); + +/** + * Calculate BigNumber tau, tau = 2 * pi + * @param {function} BigNumber BigNumber constructor + * @returns {BigNumber} Returns tau + */ +exports.tau = memoize(function (BigNumber) { + return exports.pi(BigNumber).times(2); +}, hasher); + +/** + * Create a hash for a BigNumber constructor function. The created has is + * the configured precision + * @param {Array} args Supposed to contain a single entry with + * a BigNumber constructor + * @return {number} precision + * @private + */ +function hasher (args) { + return args[0].precision; +} + + +/***/ }), +/* 97 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var deepMap = __webpack_require__(1); + +function factory (type, config, load, typed) { + /** + * Round a value towards zero. + * For matrices, the function is evaluated element wise. + * + * Syntax: + * + * math.fix(x) + * + * Examples: + * + * math.fix(3.2); // returns number 3 + * math.fix(3.8); // returns number 3 + * math.fix(-4.2); // returns number -4 + * math.fix(-4.7); // returns number -4 + * + * var c = math.complex(3.2, -2.7); + * math.fix(c); // returns Complex 3 - 2i + * + * math.fix([3.2, 3.8, -4.7]); // returns Array [3, 3, -4] + * + * See also: + * + * ceil, floor, round + * + * @param {number | BigNumber | Fraction | Complex | Array | Matrix} x Number to be rounded + * @return {number | BigNumber | Fraction | Complex | Array | Matrix} Rounded value + */ + var fix = typed('fix', { + 'number': function (x) { + return (x > 0) ? Math.floor(x) : Math.ceil(x); + }, + + 'Complex': function (x) { + return new type.Complex( + (x.re > 0) ? Math.floor(x.re) : Math.ceil(x.re), + (x.im > 0) ? Math.floor(x.im) : Math.ceil(x.im) + ); + }, + + 'BigNumber': function (x) { + return x.isNegative() ? x.ceil() : x.floor(); + }, + + 'Fraction': function (x) { + return x.s < 0 ? x.ceil() : x.floor(); + }, + + 'Array | Matrix': function (x) { + // deep map collection, skip zeros since fix(0) = 0 + return deepMap(x, fix, true); + } + }); + + fix.toTex = {1: '\\mathrm{${name}}\\left(${args[0]}\\right)'}; + + return fix; +} + +exports.name = 'fix'; +exports.factory = factory; + + +/***/ }), +/* 98 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var isInteger = __webpack_require__(3).isInteger; +var toFixed = __webpack_require__(3).toFixed; +var deepMap = __webpack_require__(1); + +var NO_INT = 'Number of decimals in function round must be an integer'; + +function factory (type, config, load, typed) { + var matrix = load(__webpack_require__(0)); + var equalScalar = load(__webpack_require__(11)); + var zeros = load(__webpack_require__(39)); + + var algorithm11 = load(__webpack_require__(17)); + var algorithm12 = load(__webpack_require__(16)); + var algorithm14 = load(__webpack_require__(6)); + + /** + * Round a value towards the nearest integer. + * For matrices, the function is evaluated element wise. + * + * Syntax: + * + * math.round(x) + * math.round(x, n) + * + * Examples: + * + * math.round(3.2); // returns number 3 + * math.round(3.8); // returns number 4 + * math.round(-4.2); // returns number -4 + * math.round(-4.7); // returns number -5 + * math.round(math.pi, 3); // returns number 3.142 + * math.round(123.45678, 2); // returns number 123.46 + * + * var c = math.complex(3.2, -2.7); + * math.round(c); // returns Complex 3 - 3i + * + * math.round([3.2, 3.8, -4.7]); // returns Array [3, 4, -5] + * + * See also: + * + * ceil, fix, floor + * + * @param {number | BigNumber | Fraction | Complex | Array | Matrix} x Number to be rounded + * @param {number | BigNumber | Array} [n=0] Number of decimals + * @return {number | BigNumber | Fraction | Complex | Array | Matrix} Rounded value + */ + var round = typed('round', { + + 'number': Math.round, + + 'number, number': function (x, n) { + if (!isInteger(n)) {throw new TypeError(NO_INT);} + if (n < 0 || n > 15) {throw new Error('Number of decimals in function round must be in te range of 0-15');} + + return _round(x, n); + }, + + 'Complex': function (x) { + return x.round(); + }, + + 'Complex, number': function (x, n) { + if (n % 1) {throw new TypeError(NO_INT);} + + return x.round(n); + }, + + 'Complex, BigNumber': function (x, n) { + if (!n.isInteger()) {throw new TypeError(NO_INT);} + + var _n = n.toNumber(); + return x.round(_n); + }, + + 'number, BigNumber': function (x, n) { + if (!n.isInteger()) {throw new TypeError(NO_INT);} + + return new type.BigNumber(x).toDecimalPlaces(n.toNumber()); + }, + + 'BigNumber': function (x) { + return x.toDecimalPlaces(0); + }, + + 'BigNumber, BigNumber': function (x, n) { + if (!n.isInteger()) {throw new TypeError(NO_INT);} + + return x.toDecimalPlaces(n.toNumber()); + }, + + 'Fraction': function (x) { + return x.round(); + }, + + 'Fraction, number': function (x, n) { + if (n % 1) {throw new TypeError(NO_INT);} + return x.round(n); + }, + + 'Array | Matrix': function (x) { + // deep map collection, skip zeros since round(0) = 0 + return deepMap(x, round, true); + }, + + 'Matrix, number | BigNumber': function (x, y) { + // result + var c; + // check storage format + switch (x.storage()) { + case 'sparse': + c = algorithm11(x, y, round, false); + break; + default: + c = algorithm14(x, y, round, false); + break; + } + return c; + }, + + 'number | Complex | BigNumber, Matrix': function (x, y) { + // check scalar is zero + if (!equalScalar(x, 0)) { + // result + var c; + // check storage format + switch (y.storage()) { + case 'sparse': + c = algorithm12(y, x, round, true); + break; + default: + c = algorithm14(y, x, round, true); + break; + } + return c; + } + // do not execute algorithm, result will be a zero matrix + return zeros(y.size(), y.storage()); + }, + + 'Array, number | BigNumber': function (x, y) { + // use matrix implementation + return algorithm14(matrix(x), y, round, false).valueOf(); + }, + + 'number | Complex | BigNumber, Array': function (x, y) { + // use matrix implementation + return algorithm14(matrix(y), x, round, true).valueOf(); + } + }); + + round.toTex = { + 1: '\\left\\lfloor${args[0]}\\right\\rceil', + 2: undefined // use default template + }; + + return round; +} + +/** + * round a number to the given number of decimals, or to zero if decimals is + * not provided + * @param {number} value + * @param {number} decimals number of decimals, between 0 and 15 (0 by default) + * @return {number} roundedValue + * @private + */ +function _round (value, decimals) { + return parseFloat(toFixed(value, decimals)); +} + +exports.name = 'round'; +exports.factory = factory; + + +/***/ }), +/* 99 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var string = __webpack_require__(9); + +function factory (type, config, load, typed) { + /** + * Format a value of any type into a string. + * + * Syntax: + * + * math.format(value) + * math.format(value, options) + * math.format(value, precision) + * math.format(value, callback) + * + * Where: + * + * - `value: *` + * The value to be formatted + * - `options: Object` + * An object with formatting options. Available options: + * - `notation: string` + * Number notation. Choose from: + * - 'fixed' + * Always use regular number notation. + * For example '123.40' and '14000000' + * - 'exponential' + * Always use exponential notation. + * For example '1.234e+2' and '1.4e+7' + * - 'engineering' + * Always use engineering notation. + * For example '123.4e+0' and '14.0e+6' + * - 'auto' (default) + * Regular number notation for numbers having an absolute value between + * `lower` and `upper` bounds, and uses exponential notation elsewhere. + * Lower bound is included, upper bound is excluded. + * For example '123.4' and '1.4e7'. + * - `precision: number` + * A number between 0 and 16 to round the digits of the number. In case + * of notations 'exponential' and 'auto', `precision` defines the total + * number of significant digits returned and is undefined by default. + * In case of notation 'fixed', `precision` defines the number of + * significant digits after the decimal point, and is 0 by default. + * - `exponential: Object` + * An object containing two parameters, {number} lower and {number} upper, + * used by notation 'auto' to determine when to return exponential + * notation. Default values are `lower=1e-3` and `upper=1e5`. Only + * applicable for notation `auto`. + * - `fraction: string`. Available values: 'ratio' (default) or 'decimal'. + * For example `format(fraction(1, 3))` will output '1/3' when 'ratio' is + * configured, and will output `0.(3)` when 'decimal' is configured. + * - `callback: function` + * A custom formatting function, invoked for all numeric elements in `value`, + * for example all elements of a matrix, or the real and imaginary + * parts of a complex number. This callback can be used to override the + * built-in numeric notation with any type of formatting. Function `callback` + * is called with `value` as parameter and must return a string. + * + * When `value` is an Object: + * + * - When the object contains a property `format` being a function, this function + * is invoked as `value.format(options)` and the result is returned. + * - When the object has its own `toString` method, this method is invoked + * and the result is returned. + * - In other cases the function will loop over all object properties and + * return JSON object notation like '{"a": 2, "b": 3}'. + * + * When value is a function: + * + * - When the function has a property `syntax`, it returns this + * syntax description. + * - In other cases, a string `'function'` is returned. + * + * Examples: + * + * math.format(6.4); // returns '6.4' + * math.format(1240000); // returns '1.24e6' + * math.format(1/3); // returns '0.3333333333333333' + * math.format(1/3, 3); // returns '0.333' + * math.format(21385, 2); // returns '21000' + * math.format(12.071, {notation: 'fixed'}); // returns '12' + * math.format(2.3, {notation: 'fixed', precision: 2}); // returns '2.30' + * math.format(52.8, {notation: 'exponential'}); // returns '5.28e+1' + * math.format(12400, {notation: 'engineering'}); // returns '12.400e+3' + * + * function formatCurrency(value) { + * // return currency notation with two digits: + * return '$' + value.toFixed(2); + * + * // you could also use math.format inside the callback: + * // return '$' + math.format(value, {notation: 'fixed', precision: 2}); + * } + * math.format([2.1, 3, 0.016], formatCurrency}; // returns '[$2.10, $3.00, $0.02]' + * + * See also: + * + * print + * + * @param {*} value Value to be stringified + * @param {Object | Function | number} [options] Formatting options + * @return {string} The formatted value + */ + var format = typed('format', { + 'any': string.format, + 'any, Object | function | number': string.format + }); + + format.toTex = undefined; // use default template + + return format; +} + +exports.name = 'format'; +exports.factory = factory; + + +/***/ }), +/* 100 */ +/***/ (function(module, exports, __webpack_require__) { + +function factory (construction, config, load, typed) { + var docs = {}; + + + // construction functions + docs.bignumber = __webpack_require__(195); + docs['boolean'] = __webpack_require__(196); + docs.complex = __webpack_require__(197); + docs.createUnit = __webpack_require__(198); + docs.fraction = __webpack_require__(199); + docs.index = __webpack_require__(200); + docs.matrix = __webpack_require__(201); + docs.number = __webpack_require__(202); + docs.sparse = __webpack_require__(203); + docs.splitUnit = __webpack_require__(204); + docs.string = __webpack_require__(205); + docs.unit = __webpack_require__(206); + + // constants + docs.e = __webpack_require__(101); + docs.E = __webpack_require__(101); + docs['false'] = __webpack_require__(207); + docs.i = __webpack_require__(208); + docs['Infinity'] = __webpack_require__(209); + docs.LN2 = __webpack_require__(210); + docs.LN10 = __webpack_require__(211); + docs.LOG2E = __webpack_require__(212); + docs.LOG10E = __webpack_require__(213); + docs.NaN = __webpack_require__(214); + docs['null'] = __webpack_require__(215); + docs.pi = __webpack_require__(102); + docs.PI = __webpack_require__(102); + docs.phi = __webpack_require__(216); + docs.SQRT1_2 = __webpack_require__(217); + docs.SQRT2 = __webpack_require__(218); + docs.tau = __webpack_require__(219); + docs['true'] = __webpack_require__(220); + docs.version = __webpack_require__(221); + + // physical constants + // TODO: more detailed docs for physical constants + docs.speedOfLight = {description: 'Speed of light in vacuum', examples: ['speedOfLight']}; + docs.gravitationConstant = {description: 'Newtonian constant of gravitation', examples: ['gravitationConstant']}; + docs.planckConstant = {description: 'Planck constant', examples: ['planckConstant']}; + docs.reducedPlanckConstant = {description: 'Reduced Planck constant', examples: ['reducedPlanckConstant']}; + + docs.magneticConstant = {description: 'Magnetic constant (vacuum permeability)', examples: ['magneticConstant']}; + docs.electricConstant = {description: 'Electric constant (vacuum permeability)', examples: ['electricConstant']}; + docs.vacuumImpedance = {description: 'Characteristic impedance of vacuum', examples: ['vacuumImpedance']}; + docs.coulomb = {description: 'Coulomb\'s constant', examples: ['coulomb']}; + docs.elementaryCharge = {description: 'Elementary charge', examples: ['elementaryCharge']}; + docs.bohrMagneton = {description: 'Borh magneton', examples: ['bohrMagneton']}; + docs.conductanceQuantum = {description: 'Conductance quantum', examples: ['conductanceQuantum']}; + docs.inverseConductanceQuantum = {description: 'Inverse conductance quantum', examples: ['inverseConductanceQuantum']}; + //docs.josephson = {description: 'Josephson constant', examples: ['josephson']}; + docs.magneticFluxQuantum = {description: 'Magnetic flux quantum', examples: ['magneticFluxQuantum']}; + docs.nuclearMagneton = {description: 'Nuclear magneton', examples: ['nuclearMagneton']}; + docs.klitzing = {description: 'Von Klitzing constant', examples: ['klitzing']}; + + docs.bohrRadius = {description: 'Borh radius', examples: ['bohrRadius']}; + docs.classicalElectronRadius = {description: 'Classical electron radius', examples: ['classicalElectronRadius']}; + docs.electronMass = {description: 'Electron mass', examples: ['electronMass']}; + docs.fermiCoupling = {description: 'Fermi coupling constant', examples: ['fermiCoupling']}; + docs.fineStructure = {description: 'Fine-structure constant', examples: ['fineStructure']}; + docs.hartreeEnergy = {description: 'Hartree energy', examples: ['hartreeEnergy']}; + docs.protonMass = {description: 'Proton mass', examples: ['protonMass']}; + docs.deuteronMass = {description: 'Deuteron Mass', examples: ['deuteronMass']}; + docs.neutronMass = {description: 'Neutron mass', examples: ['neutronMass']}; + docs.quantumOfCirculation = {description: 'Quantum of circulation', examples: ['quantumOfCirculation']}; + docs.rydberg = {description: 'Rydberg constant', examples: ['rydberg']}; + docs.thomsonCrossSection = {description: 'Thomson cross section', examples: ['thomsonCrossSection']}; + docs.weakMixingAngle = {description: 'Weak mixing angle', examples: ['weakMixingAngle']}; + docs.efimovFactor = {description: 'Efimov factor', examples: ['efimovFactor']}; + + docs.atomicMass = {description: 'Atomic mass constant', examples: ['atomicMass']}; + docs.avogadro = {description: 'Avogadro\'s number', examples: ['avogadro']}; + docs.boltzmann = {description: 'Boltzmann constant', examples: ['boltzmann']}; + docs.faraday = {description: 'Faraday constant', examples: ['faraday']}; + docs.firstRadiation = {description: 'First radiation constant', examples: ['firstRadiation']}; + docs.loschmidt = {description: 'Loschmidt constant at T=273.15 K and p=101.325 kPa', examples: ['loschmidt']}; + docs.gasConstant = {description: 'Gas constant', examples: ['gasConstant']}; + docs.molarPlanckConstant = {description: 'Molar Planck constant', examples: ['molarPlanckConstant']}; + docs.molarVolume = {description: 'Molar volume of an ideal gas at T=273.15 K and p=101.325 kPa', examples: ['molarVolume']}; + docs.sackurTetrode = {description: 'Sackur-Tetrode constant at T=1 K and p=101.325 kPa', examples: ['sackurTetrode']}; + docs.secondRadiation = {description: 'Second radiation constant', examples: ['secondRadiation']}; + docs.stefanBoltzmann = {description: 'Stefan-Boltzmann constant', examples: ['stefanBoltzmann']}; + docs.wienDisplacement = {description: 'Wien displacement law constant', examples: ['wienDisplacement']}; + //docs.spectralRadiance = {description: 'First radiation constant for spectral radiance', examples: ['spectralRadiance']}; + + docs.molarMass = {description: 'Molar mass constant', examples: ['molarMass']}; + docs.molarMassC12 = {description: 'Molar mass constant of carbon-12', examples: ['molarMassC12']}; + docs.gravity = {description: 'Standard acceleration of gravity (standard acceleration of free-fall on Earth)', examples: ['gravity']}; + + docs.planckLength = {description: 'Planck length', examples: ['planckLength']}; + docs.planckMass = {description: 'Planck mass', examples: ['planckMass']}; + docs.planckTime = {description: 'Planck time', examples: ['planckTime']}; + docs.planckCharge = {description: 'Planck charge', examples: ['planckCharge']}; + docs.planckTemperature = {description: 'Planck temperature', examples: ['planckTemperature']}; + + // functions - algebra + docs.derivative = __webpack_require__(222); + docs.lsolve = __webpack_require__(223); + docs.lup = __webpack_require__(224); + docs.lusolve = __webpack_require__(225); + docs.simplify = __webpack_require__(226); + docs.rationalize = __webpack_require__(227); + docs.slu = __webpack_require__(228); + docs.usolve = __webpack_require__(229); + docs.qr = __webpack_require__(230); + + // functions - arithmetic + docs.abs = __webpack_require__(231); + docs.add = __webpack_require__(232); + docs.cbrt = __webpack_require__(233); + docs.ceil = __webpack_require__(234); + docs.cube = __webpack_require__(235); + docs.divide = __webpack_require__(236); + docs.dotDivide = __webpack_require__(237); + docs.dotMultiply = __webpack_require__(238); + docs.dotPow = __webpack_require__(239); + docs.exp = __webpack_require__(240); + docs.fix = __webpack_require__(241); + docs.floor = __webpack_require__(242); + docs.gcd = __webpack_require__(243); + docs.hypot = __webpack_require__(244); + docs.lcm = __webpack_require__(245); + docs.log = __webpack_require__(246); + docs.log10 = __webpack_require__(247); + docs.mod = __webpack_require__(248); + docs.multiply = __webpack_require__(249); + docs.norm = __webpack_require__(250); + docs.nthRoot = __webpack_require__(251); + docs.pow = __webpack_require__(252); + docs.round = __webpack_require__(253); + docs.sign = __webpack_require__(254); + docs.sqrt = __webpack_require__(255); + docs.square = __webpack_require__(256); + docs.subtract = __webpack_require__(257); + docs.unaryMinus = __webpack_require__(258); + docs.unaryPlus = __webpack_require__(259); + docs.xgcd = __webpack_require__(260); + + // functions - bitwise + docs.bitAnd = __webpack_require__(261); + docs.bitNot = __webpack_require__(262); + docs.bitOr = __webpack_require__(263); + docs.bitXor = __webpack_require__(264); + docs.leftShift = __webpack_require__(265); + docs.rightArithShift = __webpack_require__(266); + docs.rightLogShift = __webpack_require__(267); + + // functions - combinatorics + docs.bellNumbers = __webpack_require__(268); + docs.catalan = __webpack_require__(269); + docs.composition = __webpack_require__(270); + docs.stirlingS2 = __webpack_require__(271); + + // functions - core + docs['config'] = __webpack_require__(272); + docs['import'] = __webpack_require__(273); + docs['typed'] = __webpack_require__(274); + + // functions - complex + docs.arg = __webpack_require__(275); + docs.conj = __webpack_require__(276); + docs.re = __webpack_require__(277); + docs.im = __webpack_require__(278); + + // functions - expression + docs['eval'] = __webpack_require__(279); + docs.help = __webpack_require__(280); + + // functions - geometry + docs.distance = __webpack_require__(281); + docs.intersect = __webpack_require__(282); + + // functions - logical + docs['and'] = __webpack_require__(283); + docs['not'] = __webpack_require__(284); + docs['or'] = __webpack_require__(285); + docs['xor'] = __webpack_require__(286); + + // functions - matrix + docs['concat'] = __webpack_require__(287); + docs.cross = __webpack_require__(288); + docs.det = __webpack_require__(289); + docs.diag = __webpack_require__(290); + docs.dot = __webpack_require__(291); + docs.eye = __webpack_require__(292); + docs.filter = __webpack_require__(293); + docs.flatten = __webpack_require__(294); + docs.forEach = __webpack_require__(295); + docs.inv = __webpack_require__(296); + docs.kron = __webpack_require__(297); + docs.map = __webpack_require__(298); + docs.ones = __webpack_require__(299); + docs.partitionSelect = __webpack_require__(300); + docs.range = __webpack_require__(301); + docs.resize = __webpack_require__(302); + docs.reshape = __webpack_require__(303); + docs.size = __webpack_require__(304); + docs.sort = __webpack_require__(305); + docs.squeeze = __webpack_require__(306); + docs.subset = __webpack_require__(307); + docs.trace = __webpack_require__(308); + docs.transpose = __webpack_require__(309); + docs.zeros = __webpack_require__(310); + + // functions - probability + docs.combinations = __webpack_require__(311); + //docs.distribution = require('./function/probability/distribution'); + docs.factorial = __webpack_require__(312); + docs.gamma = __webpack_require__(313); + docs.kldivergence = __webpack_require__(314); + docs.multinomial = __webpack_require__(315); + docs.permutations = __webpack_require__(316); + docs.pickRandom = __webpack_require__(317); + docs.random = __webpack_require__(318); + docs.randomInt = __webpack_require__(319); + + // functions - relational + docs.compare = __webpack_require__(320); + docs.compareNatural = __webpack_require__(321); + docs.deepEqual = __webpack_require__(322); + docs['equal'] = __webpack_require__(323); + docs.larger = __webpack_require__(324); + docs.largerEq = __webpack_require__(325); + docs.smaller = __webpack_require__(326); + docs.smallerEq = __webpack_require__(327); + docs.unequal = __webpack_require__(328); + + // functions - set + docs.setCartesian = __webpack_require__(329); + docs.setDifference = __webpack_require__(330); + docs.setDistinct = __webpack_require__(331); + docs.setIntersect = __webpack_require__(332); + docs.setIsSubset = __webpack_require__(333); + docs.setMultiplicity = __webpack_require__(334); + docs.setPowerset = __webpack_require__(335); + docs.setSize = __webpack_require__(336); + docs.setSymDifference = __webpack_require__(337); + docs.setUnion = __webpack_require__(338); + + // functions - special + docs.erf = __webpack_require__(339); + + // functions - statistics + docs.mad = __webpack_require__(340); + docs.max = __webpack_require__(341); + docs.mean = __webpack_require__(342); + docs.median = __webpack_require__(343); + docs.min = __webpack_require__(344); + docs.mode = __webpack_require__(345); + docs.prod = __webpack_require__(346); + docs.quantileSeq = __webpack_require__(347); + docs.std = __webpack_require__(348); + docs.sum = __webpack_require__(349); + docs['var'] = __webpack_require__(350); + + // functions - trigonometry + docs.acos = __webpack_require__(351); + docs.acosh = __webpack_require__(352); + docs.acot = __webpack_require__(353); + docs.acoth = __webpack_require__(354); + docs.acsc = __webpack_require__(355); + docs.acsch = __webpack_require__(356); + docs.asec = __webpack_require__(357); + docs.asech = __webpack_require__(358); + docs.asin = __webpack_require__(359); + docs.asinh = __webpack_require__(360); + docs.atan = __webpack_require__(361); + docs.atanh = __webpack_require__(362); + docs.atan2 = __webpack_require__(363); + docs.cos = __webpack_require__(364); + docs.cosh = __webpack_require__(365); + docs.cot = __webpack_require__(366); + docs.coth = __webpack_require__(367); + docs.csc = __webpack_require__(368); + docs.csch = __webpack_require__(369); + docs.sec = __webpack_require__(370); + docs.sech = __webpack_require__(371); + docs.sin = __webpack_require__(372); + docs.sinh = __webpack_require__(373); + docs.tan = __webpack_require__(374); + docs.tanh = __webpack_require__(375); + + // functions - units + docs.to = __webpack_require__(376); + + // functions - utils + docs.clone = __webpack_require__(377); + docs.format = __webpack_require__(378); + docs.isNaN = __webpack_require__(379); + docs.isInteger = __webpack_require__(380); + docs.isNegative = __webpack_require__(381); + docs.isNumeric = __webpack_require__(382); + docs.isPositive = __webpack_require__(383); + docs.isPrime = __webpack_require__(384); + docs.isZero = __webpack_require__(385); + // docs.print = require('./function/utils/print'); // TODO: add documentation for print as soon as the parser supports objects. + docs['typeof'] = __webpack_require__(386); + + return docs; +} + +exports.name = 'docs'; +exports.path = 'expression'; +exports.factory = factory; + + +/***/ }), +/* 101 */ +/***/ (function(module, exports) { + +module.exports = { + 'name': 'e', + 'category': 'Constants', + 'syntax': [ + 'e' + ], + 'description': 'Euler\'s number, the base of the natural logarithm. Approximately equal to 2.71828', + 'examples': [ + 'e', + 'e ^ 2', + 'exp(2)', + 'log(e)' + ], + 'seealso': ['exp'] +}; + + +/***/ }), +/* 102 */ +/***/ (function(module, exports) { + +module.exports = { + 'name': 'pi', + 'category': 'Constants', + 'syntax': [ + 'pi' + ], + 'description': 'The number pi is a mathematical constant that is the ratio of a circle\'s circumference to its diameter, and is approximately equal to 3.14159', + 'examples': [ + 'pi', + 'sin(pi/2)' + ], + 'seealso': ['tau'] +}; + + +/***/ }), +/* 103 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var stringify = __webpack_require__(9).stringify; +var getSafeProperty = __webpack_require__(13).getSafeProperty; + +function factory (type, config, load, typed) { + var register = load(__webpack_require__(7)).register; + var compile = load(__webpack_require__(7)).compile; + var Node = load(__webpack_require__(14)); + var IndexNode = load(__webpack_require__(78)); + var access = load(__webpack_require__(104)); + + /** + * @constructor AccessorNode + * @extends {Node} + * Access an object property or get a matrix subset + * + * @param {Node} object The object from which to retrieve + * a property or subset. + * @param {IndexNode} index IndexNode containing ranges + */ + function AccessorNode(object, index) { + if (!(this instanceof AccessorNode)) { + throw new SyntaxError('Constructor must be called with the new operator'); + } + + if (!type.isNode(object)) { + throw new TypeError('Node expected for parameter "object"'); + } + if (!type.isIndexNode(index)) { + throw new TypeError('IndexNode expected for parameter "index"'); + } + + this.object = object || null; + this.index = index; + + // readonly property name + Object.defineProperty(this, 'name', { + get: function () { + if (this.index) { + return (this.index.isObjectProperty()) + ? this.index.getObjectProperty() + : ''; + } + else { + return this.object.name || ''; + } + }.bind(this), + set: function () { + throw new Error('Cannot assign a new name, name is read-only'); + } + }); + } + + AccessorNode.prototype = new Node(); + + AccessorNode.prototype.type = 'AccessorNode'; + + AccessorNode.prototype.isAccessorNode = true; + + /** + * Compile the node to javascript code + * @param {AccessorNode} node Node to be compiled + * @param {Object} defs Object which can be used to define functions + * or constants globally available for the compiled + * expression + * @param {Object} args Object with local function arguments, the key is + * the name of the argument, and the value is `true`. + * The object may not be mutated, but must be + * extended instead. + * @return {string} js + * @private + */ + function compileAccessorNode(node, defs, args) { + if (!(node instanceof AccessorNode)) { + throw new TypeError('No valid AccessorNode') + } + + defs.access = access; + defs.getSafeProperty = getSafeProperty; + + var object = compile(node.object, defs, args); + var index = compile(node.index, defs, args); + + if (node.index.isObjectProperty()) { + var jsProp = stringify(node.index.getObjectProperty()); + return 'getSafeProperty(' + object + ', ' + jsProp + ')'; + } + else if (node.index.needsSize()) { + // if some parameters use the 'end' parameter, we need to calculate the size + return '(function () {' + + ' var object = ' + object + ';' + + ' var size = math.size(object).valueOf();' + + ' return access(object, ' + index + ');' + + '})()'; + } + else { + return 'access(' + object + ', ' + index + ')'; + } + } + + // register the compile function + register(AccessorNode.prototype.type, compileAccessorNode); + + /** + * Execute a callback for each of the child nodes of this node + * @param {function(child: Node, path: string, parent: Node)} callback + */ + AccessorNode.prototype.forEach = function (callback) { + callback(this.object, 'object', this); + callback(this.index, 'index', this); + }; + + /** + * Create a new AccessorNode having it's childs be the results of calling + * the provided callback function for each of the childs of the original node. + * @param {function(child: Node, path: string, parent: Node): Node} callback + * @returns {AccessorNode} Returns a transformed copy of the node + */ + AccessorNode.prototype.map = function (callback) { + return new AccessorNode( + this._ifNode(callback(this.object, 'object', this)), + this._ifNode(callback(this.index, 'index', this)) + ); + }; + + /** + * Create a clone of this node, a shallow copy + * @return {AccessorNode} + */ + AccessorNode.prototype.clone = function () { + return new AccessorNode(this.object, this.index); + }; + + /** + * Get string representation + * @param {Object} options + * @return {string} + */ + AccessorNode.prototype._toString = function (options) { + var object = this.object.toString(options); + if (needParenthesis(this.object)) { + object = '(' + object + ')'; + } + + return object + this.index.toString(options); + }; + + /** + * Get HTML representation + * @param {Object} options + * @return {string} + */ + AccessorNode.prototype.toHTML = function (options) { + var object = this.object.toHTML(options); + if (needParenthesis(this.object)) { + object = '(' + object + ')'; + } + + return object + this.index.toHTML(options); + }; + + /** + * Get LaTeX representation + * @param {Object} options + * @return {string} + */ + AccessorNode.prototype._toTex = function (options) { + var object = this.object.toTex(options); + if (needParenthesis(this.object)) { + object = '\\left(' + object + '\\right)'; + } + + return object + this.index.toTex(options); + }; + + /** + * Are parenthesis needed? + * @private + */ + function needParenthesis(node) { + // TODO: maybe make a method on the nodes which tells whether they need parenthesis? + return !( + type.isAccessorNode(node) || + type.isArrayNode(node) || + type.isConstantNode(node) || + type.isFunctionNode(node) || + type.isObjectNode(node) || + type.isParenthesisNode(node) || + type.isSymbolNode(node)); + } + + return AccessorNode; +} + +exports.name = 'AccessorNode'; +exports.path = 'expression.node'; +exports.factory = factory; + + +/***/ }), +/* 104 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var errorTransform = __webpack_require__(41).transform; +var getSafeProperty = __webpack_require__(13).getSafeProperty; + +function factory (type, config, load, typed) { + var subset = load(__webpack_require__(22)); + + /** + * Retrieve part of an object: + * + * - Retrieve a property from an object + * - Retrieve a part of a string + * - Retrieve a matrix subset + * + * @param {Object | Array | Matrix | string} object + * @param {Index} index + * @return {Object | Array | Matrix | string} Returns the subset + */ + return function access(object, index) { + try { + if (Array.isArray(object)) { + return subset(object, index); + } + else if (object && typeof object.subset === 'function') { // Matrix + return object.subset(index); + } + else if (typeof object === 'string') { + // TODO: move getStringSubset into a separate util file, use that + return subset(object, index); + } + else if (typeof object === 'object') { + if (!index.isObjectProperty()) { + throw new TypeError('Cannot apply a numeric index as object property'); + } + + return getSafeProperty(object, index.getObjectProperty()); + } + else { + throw new TypeError('Cannot apply index: unsupported type of object'); + } + } + catch (err) { + throw errorTransform(err); + } + } +} + +exports.factory = factory; + + +/***/ }), +/* 105 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var latex = __webpack_require__(4); +var stringify = __webpack_require__(9).stringify; +var getSafeProperty = __webpack_require__(13).getSafeProperty; +var setSafeProperty = __webpack_require__(13).setSafeProperty; + +function factory (type, config, load, typed) { + var register = load(__webpack_require__(7)).register; + var compile = load(__webpack_require__(7)).compile; + var Node = load(__webpack_require__(14)); + var ArrayNode = load(__webpack_require__(80)); + var matrix = load(__webpack_require__(0)); + var assign = load(__webpack_require__(389)); + var access = load(__webpack_require__(104)); + + var keywords = __webpack_require__(77); + var operators = __webpack_require__(53); + + /** + * @constructor AssignmentNode + * @extends {Node} + * + * Define a symbol, like `a=3.2`, update a property like `a.b=3.2`, or + * replace a subset of a matrix like `A[2,2]=42`. + * + * Syntax: + * + * new AssignmentNode(symbol, value) + * new AssignmentNode(object, index, value) + * + * Usage: + * + * new AssignmentNode(new SymbolNode('a'), new ConstantNode(2)); // a=2 + * new AssignmentNode(new SymbolNode('a'), new IndexNode('b'), new ConstantNode(2)) // a.b=2 + * new AssignmentNode(new SymbolNode('a'), new IndexNode(1, 2), new ConstantNode(3)) // a[1,2]=3 + * + * @param {SymbolNode | AccessorNode} object Object on which to assign a value + * @param {IndexNode} [index=null] Index, property name or matrix + * index. Optional. If not provided + * and `object` is a SymbolNode, + * the property is assigned to the + * global scope. + * @param {Node} value The value to be assigned + */ + function AssignmentNode(object, index, value) { + if (!(this instanceof AssignmentNode)) { + throw new SyntaxError('Constructor must be called with the new operator'); + } + + this.object = object; + this.index = value ? index : null; + this.value = value ? value : index; + + // validate input + if (!type.isSymbolNode(object) && !type.isAccessorNode(object)) { + throw new TypeError('SymbolNode or AccessorNode expected as "object"'); + } + if (type.isSymbolNode(object) && object.name === 'end') { + throw new Error('Cannot assign to symbol "end"'); + } + if (this.index && !type.isIndexNode(this.index)) { // index is optional + throw new TypeError('IndexNode expected as "index"'); + } + if (!type.isNode(this.value)) { + throw new TypeError('Node expected as "value"'); + } + + // readonly property name + Object.defineProperty(this, 'name', { + get: function () { + if (this.index) { + return (this.index.isObjectProperty()) + ? this.index.getObjectProperty() + : ''; + } + else { + return this.object.name || ''; + } + }.bind(this), + set: function () { + throw new Error('Cannot assign a new name, name is read-only'); + } + }); + } + + AssignmentNode.prototype = new Node(); + + AssignmentNode.prototype.type = 'AssignmentNode'; + + AssignmentNode.prototype.isAssignmentNode = true; + + /** + * Compile the node to javascript code + * @param {AssignmentNode} node The node to be compiled + * @param {Object} defs Object which can be used to define functions + * or constants globally available for the compiled + * expression + * @param {Object} args Object with local function arguments, the key is + * the name of the argument, and the value is `true`. + * The object may not be mutated, but must be + * extended instead. + * @private + */ + function compileAssignmentNode (node, defs, args) { + if (!(node instanceof AssignmentNode)) { + throw new TypeError('No valid AssignmentNode') + } + + defs.assign = assign; + defs.access = access; + defs.getSafeProperty = getSafeProperty; + defs.setSafeProperty = setSafeProperty; + + var size; + var object = compile(node.object, defs, args); + var index = node.index ? compile(node.index, defs, args) : null; + var value = compile(node.value, defs, args); + var jsName = stringify(node.object.name); + + if (!node.index) { + // apply a variable to the scope, for example `a=2` + if (!type.isSymbolNode(node.object)) { + throw new TypeError('SymbolNode expected as object'); + } + + return 'setSafeProperty(scope, ' + jsName + ', ' + value + ')'; + } + else if (node.index.isObjectProperty()) { + // apply an object property for example `a.b=2` + var jsProp = stringify(node.index.getObjectProperty()); + return 'setSafeProperty(' + object + ', ' + jsProp + ', ' + value + ')'; + } + else if (type.isSymbolNode(node.object)) { + // update a matrix subset, for example `a[2]=3` + size = node.index.needsSize() ? 'var size = math.size(object).valueOf();' : ''; + + // apply updated object to scope + return '(function () {' + + ' var object = ' + object + ';' + + ' var value = ' + value + ';' + + ' ' + size + + ' setSafeProperty(scope, ' + jsName + ', assign(object, ' + index + ', value));' + + ' return value;' + + '})()'; + } + else { // type.isAccessorNode(node.object) === true + // update a matrix subset, for example `a.b[2]=3` + size = node.index.needsSize() ? 'var size = math.size(object).valueOf();' : ''; + + // we will not use the compile function of the AccessorNode, but compile it + // ourselves here as we need the parent object of the AccessorNode: + // wee need to apply the updated object to parent object + var parentObject = compile(node.object.object, defs, args); + + if (node.object.index.isObjectProperty()) { + var jsParentProperty = stringify(node.object.index.getObjectProperty()); + return '(function () {' + + ' var parent = ' + parentObject + ';' + + ' var object = getSafeProperty(parent, ' + jsParentProperty + ');' + // parentIndex is a property + ' var value = ' + value + ';' + + size + + ' setSafeProperty(parent, ' + jsParentProperty + ', assign(object, ' + index + ', value));' + + ' return value;' + + '})()'; + } + else { + // if some parameters use the 'end' parameter, we need to calculate the size + var parentSize = node.object.index.needsSize() ? 'var size = math.size(parent).valueOf();' : ''; + var parentIndex = compile(node.object.index, defs, args); + + return '(function () {' + + ' var parent = ' + parentObject + ';' + + ' ' + parentSize + + ' var parentIndex = ' + parentIndex + ';' + + ' var object = access(parent, parentIndex);' + + ' var value = ' + value + ';' + + ' ' + size + + ' assign(parent, parentIndex, assign(object, ' + index + ', value));' + + ' return value;' + + '})()'; + } + } + } + + // register the compile function + register(AssignmentNode.prototype.type, compileAssignmentNode); + + /** + * Execute a callback for each of the child nodes of this node + * @param {function(child: Node, path: string, parent: Node)} callback + */ + AssignmentNode.prototype.forEach = function (callback) { + callback(this.object, 'object', this); + if (this.index) { + callback(this.index, 'index', this); + } + callback(this.value, 'value', this); + }; + + /** + * Create a new AssignmentNode having it's childs be the results of calling + * the provided callback function for each of the childs of the original node. + * @param {function(child: Node, path: string, parent: Node): Node} callback + * @returns {AssignmentNode} Returns a transformed copy of the node + */ + AssignmentNode.prototype.map = function (callback) { + var object = this._ifNode(callback(this.object, 'object', this)); + var index = this.index + ? this._ifNode(callback(this.index, 'index', this)) + : null; + var value = this._ifNode(callback(this.value, 'value', this)); + + return new AssignmentNode(object, index, value); + }; + + /** + * Create a clone of this node, a shallow copy + * @return {AssignmentNode} + */ + AssignmentNode.prototype.clone = function() { + return new AssignmentNode(this.object, this.index, this.value); + }; + + /* + * Is parenthesis needed? + * @param {node} node + * @param {string} [parenthesis='keep'] + * @private + */ + function needParenthesis(node, parenthesis) { + if (!parenthesis) { + parenthesis = 'keep'; + } + + var precedence = operators.getPrecedence(node, parenthesis); + var exprPrecedence = operators.getPrecedence(node.value, parenthesis); + return (parenthesis === 'all') + || ((exprPrecedence !== null) && (exprPrecedence <= precedence)); + } + + /** + * Get string representation + * @param {Object} options + * @return {string} + */ + AssignmentNode.prototype._toString = function(options) { + var object = this.object.toString(options); + var index = this.index ? this.index.toString(options) : ''; + var value = this.value.toString(options); + if (needParenthesis(this, options && options.parenthesis)) { + value = '(' + value + ')'; + } + + return object + index + ' = ' + value; + }; + + /** + * Get HTML representation + * @param {Object} options + * @return {string} + */ + AssignmentNode.prototype.toHTML = function(options) { + var object = this.object.toHTML(options); + var index = this.index ? this.index.toHTML(options) : ''; + var value = this.value.toHTML(options); + if (needParenthesis(this, options && options.parenthesis)) { + value = '(' + value + ')'; + } + + return object + index + '=' + value; + }; + + /** + * Get LaTeX representation + * @param {Object} options + * @return {string} + */ + AssignmentNode.prototype._toTex = function(options) { + var object = this.object.toTex(options); + var index = this.index ? this.index.toTex(options) : ''; + var value = this.value.toTex(options); + if (needParenthesis(this, options && options.parenthesis)) { + value = '\\left(' + value + '\\right)'; + } + + return object + index + ':=' + value; + }; + + return AssignmentNode; +} + +exports.name = 'AssignmentNode'; +exports.path = 'expression.node'; +exports.factory = factory; + + +/***/ }), +/* 106 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var map = __webpack_require__(2).map; +var join = __webpack_require__(2).join; + +function factory (type, config, load, typed) { + var register = load(__webpack_require__(7)).register; + var compile = load(__webpack_require__(7)).compile; + var Node = load(__webpack_require__(14)); + var ResultSet = load(__webpack_require__(95)); + + /** + * @constructor BlockNode + * @extends {Node} + * Holds a set with blocks + * @param {Array.<{node: Node} | {node: Node, visible: boolean}>} blocks + * An array with blocks, where a block is constructed as an Object + * with properties block, which is a Node, and visible, which is + * a boolean. The property visible is optional and is true by default + */ + function BlockNode(blocks) { + if (!(this instanceof BlockNode)) { + throw new SyntaxError('Constructor must be called with the new operator'); + } + + // validate input, copy blocks + if (!Array.isArray(blocks)) throw new Error('Array expected'); + this.blocks = blocks.map(function (block) { + var node = block && block.node; + var visible = block && block.visible !== undefined ? block.visible : true; + + if (!type.isNode(node)) throw new TypeError('Property "node" must be a Node'); + if (typeof visible !== 'boolean') throw new TypeError('Property "visible" must be a boolean'); + + return { + node: node, + visible: visible + } + }); + } + + BlockNode.prototype = new Node(); + + BlockNode.prototype.type = 'BlockNode'; + + BlockNode.prototype.isBlockNode = true; + + /** + * Compile the node to javascript code + * @param {BlockNode} node The node to be compiled + * @param {Object} defs Object which can be used to define functions + * or constants globally available for the compiled + * expression + * @param {Object} args Object with local function arguments, the key is + * the name of the argument, and the value is `true`. + * The object may not be mutated, but must be + * extended instead. + * @return {string} js + * @private + */ + function compileBlockNode (node, defs, args) { + if (!(node instanceof BlockNode)) { + throw new TypeError('No valid BlockNode') + } + + defs.ResultSet = ResultSet; + var blocks = map(node.blocks, function (param) { + var js = compile(param.node, defs, args); + if (param.visible) { + return 'results.push(' + js + ');'; + } + else { + return js + ';'; + } + }); + + return '(function () {' + + 'var results = [];' + + join(blocks, '') + + 'return new ResultSet(results);' + + '})()'; + } + + // register the compile function + register(BlockNode.prototype.type, compileBlockNode); + + /** + * Execute a callback for each of the child blocks of this node + * @param {function(child: Node, path: string, parent: Node)} callback + */ + BlockNode.prototype.forEach = function (callback) { + for (var i = 0; i < this.blocks.length; i++) { + callback(this.blocks[i].node, 'blocks[' + i + '].node', this); + } + }; + + /** + * Create a new BlockNode having it's childs be the results of calling + * the provided callback function for each of the childs of the original node. + * @param {function(child: Node, path: string, parent: Node): Node} callback + * @returns {BlockNode} Returns a transformed copy of the node + */ + BlockNode.prototype.map = function (callback) { + var blocks = []; + for (var i = 0; i < this.blocks.length; i++) { + var block = this.blocks[i]; + var node = this._ifNode(callback(block.node, 'blocks[' + i + '].node', this)); + blocks[i] = { + node: node, + visible: block.visible + }; + } + return new BlockNode(blocks); + }; + + /** + * Create a clone of this node, a shallow copy + * @return {BlockNode} + */ + BlockNode.prototype.clone = function () { + var blocks = this.blocks.map(function (block) { + return { + node: block.node, + visible: block.visible + }; + }); + + return new BlockNode(blocks); + }; + + /** + * Get string representation + * @param {Object} options + * @return {string} str + * @override + */ + BlockNode.prototype._toString = function (options) { + return this.blocks.map(function (param) { + return param.node.toString(options) + (param.visible ? '' : ';'); + }).join('\n'); + }; + + /** + * Get HTML representation + * @param {Object} options + * @return {string} str + * @override + */ + BlockNode.prototype.toHTML = function (options) { + return this.blocks.map(function (param) { + return param.node.toHTML(options) + (param.visible ? '' : ';'); + }).join('
'); + }; + + /** + * Get LaTeX representation + * @param {Object} options + * @return {string} str + */ + BlockNode.prototype._toTex = function (options) { + return this.blocks.map(function (param) { + return param.node.toTex(options) + (param.visible ? '' : ';'); + }).join('\\;\\;\n'); + }; + + return BlockNode; +} + +exports.name = 'BlockNode'; +exports.path = 'expression.node'; +exports.factory = factory; + + +/***/ }), +/* 107 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var latex = __webpack_require__(4); +var operators = __webpack_require__(53); + +function factory (type, config, load, typed) { + var register = load(__webpack_require__(7)).register; + var compile = load(__webpack_require__(7)).compile; + var Node = load(__webpack_require__(14)); + + /** + * A lazy evaluating conditional operator: 'condition ? trueExpr : falseExpr' + * + * @param {Node} condition Condition, must result in a boolean + * @param {Node} trueExpr Expression evaluated when condition is true + * @param {Node} falseExpr Expression evaluated when condition is true + * + * @constructor ConditionalNode + * @extends {Node} + */ + function ConditionalNode(condition, trueExpr, falseExpr) { + if (!(this instanceof ConditionalNode)) { + throw new SyntaxError('Constructor must be called with the new operator'); + } + if (!type.isNode(condition)) throw new TypeError('Parameter condition must be a Node'); + if (!type.isNode(trueExpr)) throw new TypeError('Parameter trueExpr must be a Node'); + if (!type.isNode(falseExpr)) throw new TypeError('Parameter falseExpr must be a Node'); + + this.condition = condition; + this.trueExpr = trueExpr; + this.falseExpr = falseExpr; + } + + ConditionalNode.prototype = new Node(); + + ConditionalNode.prototype.type = 'ConditionalNode'; + + ConditionalNode.prototype.isConditionalNode = true; + + /** + * Compile the node to javascript code + * @param {ConditionalNode} node The node to be compiled + * @param {Object} defs Object which can be used to define functions + * or constants globally available for the compiled + * expression + * @param {Object} args Object with local function arguments, the key is + * the name of the argument, and the value is `true`. + * The object may not be mutated, but must be + * extended instead. + * @return {string} js + * @private + */ + function compileConditionalNode(node, defs, args) { + if (!(node instanceof ConditionalNode)) { + throw new TypeError('No valid ConditionalNode') + } + + /** + * Test whether a condition is met + * @param {*} condition + * @returns {boolean} true if condition is true or non-zero, else false + */ + defs.testCondition = function (condition) { + if (typeof condition === 'number' + || typeof condition === 'boolean' + || typeof condition === 'string') { + return condition ? true : false; + } + + if (condition) { + if (type.isBigNumber(condition)) { + return condition.isZero() ? false : true; + } + + if (type.isComplex(condition)) { + return (condition.re || condition.im) ? true : false; + } + + if (type.isUnit(condition)) { + return condition.value ? true : false; + } + } + + if (condition === null || condition === undefined) { + return false; + } + + throw new TypeError('Unsupported type of condition "' + defs.math['typeof'](condition) + '"'); + }; + + return ( + 'testCondition(' + compile(node.condition, defs, args) + ') ? ' + + '( ' + compile(node.trueExpr, defs, args) + ') : ' + + '( ' + compile(node.falseExpr, defs, args) + ')' + ); + } + + // register the compile function + register(ConditionalNode.prototype.type, compileConditionalNode); + + /** + * Execute a callback for each of the child nodes of this node + * @param {function(child: Node, path: string, parent: Node)} callback + */ + ConditionalNode.prototype.forEach = function (callback) { + callback(this.condition, 'condition', this); + callback(this.trueExpr, 'trueExpr', this); + callback(this.falseExpr, 'falseExpr', this); + }; + + /** + * Create a new ConditionalNode having it's childs be the results of calling + * the provided callback function for each of the childs of the original node. + * @param {function(child: Node, path: string, parent: Node): Node} callback + * @returns {ConditionalNode} Returns a transformed copy of the node + */ + ConditionalNode.prototype.map = function (callback) { + return new ConditionalNode( + this._ifNode(callback(this.condition, 'condition', this)), + this._ifNode(callback(this.trueExpr, 'trueExpr', this)), + this._ifNode(callback(this.falseExpr, 'falseExpr', this)) + ); + }; + + /** + * Create a clone of this node, a shallow copy + * @return {ConditionalNode} + */ + ConditionalNode.prototype.clone = function () { + return new ConditionalNode(this.condition, this.trueExpr, this.falseExpr); + }; + + /** + * Get string representation + * @param {Object} options + * @return {string} str + */ + ConditionalNode.prototype._toString = function (options) { + var parenthesis = (options && options.parenthesis) ? options.parenthesis : 'keep'; + var precedence = operators.getPrecedence(this, parenthesis); + + //Enclose Arguments in parentheses if they are an OperatorNode + //or have lower or equal precedence + //NOTE: enclosing all OperatorNodes in parentheses is a decision + //purely based on aesthetics and readability + var condition = this.condition.toString(options); + var conditionPrecedence = operators.getPrecedence(this.condition, parenthesis); + if ((parenthesis === 'all') + || (this.condition.type === 'OperatorNode') + || ((conditionPrecedence !== null) && (conditionPrecedence <= precedence))) { + condition = '(' + condition + ')'; + } + + var trueExpr = this.trueExpr.toString(options); + var truePrecedence = operators.getPrecedence(this.trueExpr, parenthesis); + if ((parenthesis === 'all') + || (this.trueExpr.type === 'OperatorNode') + || ((truePrecedence !== null) && (truePrecedence <= precedence))) { + trueExpr = '(' + trueExpr + ')'; + } + + var falseExpr = this.falseExpr.toString(options); + var falsePrecedence = operators.getPrecedence(this.falseExpr, parenthesis); + if ((parenthesis === 'all') + || (this.falseExpr.type === 'OperatorNode') + || ((falsePrecedence !== null) && (falsePrecedence <= precedence))) { + falseExpr = '(' + falseExpr + ')'; + } + return condition + ' ? ' + trueExpr + ' : ' + falseExpr; + }; + + /** + * Get HTML representation + * @param {Object} options + * @return {string} str + */ + ConditionalNode.prototype.toHTML = function (options) { + var parenthesis = (options && options.parenthesis) ? options.parenthesis : 'keep'; + var precedence = operators.getPrecedence(this, parenthesis); + + //Enclose Arguments in parentheses if they are an OperatorNode + //or have lower or equal precedence + //NOTE: enclosing all OperatorNodes in parentheses is a decision + //purely based on aesthetics and readability + var condition = this.condition.toHTML(options); + var conditionPrecedence = operators.getPrecedence(this.condition, parenthesis); + if ((parenthesis === 'all') + || (this.condition.type === 'OperatorNode') + || ((conditionPrecedence !== null) && (conditionPrecedence <= precedence))) { + condition = '(' + condition + ')'; + } + + var trueExpr = this.trueExpr.toHTML(options); + var truePrecedence = operators.getPrecedence(this.trueExpr, parenthesis); + if ((parenthesis === 'all') + || (this.trueExpr.type === 'OperatorNode') + || ((truePrecedence !== null) && (truePrecedence <= precedence))) { + trueExpr = '(' + trueExpr + ')'; + } + + var falseExpr = this.falseExpr.toHTML(options); + var falsePrecedence = operators.getPrecedence(this.falseExpr, parenthesis); + if ((parenthesis === 'all') + || (this.falseExpr.type === 'OperatorNode') + || ((falsePrecedence !== null) && (falsePrecedence <= precedence))) { + falseExpr = '(' + falseExpr + ')'; + } + return condition + '?' + trueExpr + ':' + falseExpr; + }; + + /** + * Get LaTeX representation + * @param {Object} options + * @return {string} str + */ + ConditionalNode.prototype._toTex = function (options) { + return '\\begin{cases} {' + + this.trueExpr.toTex(options) + '}, &\\quad{\\text{if }\\;' + + this.condition.toTex(options) + + '}\\\\{' + this.falseExpr.toTex(options) + + '}, &\\quad{\\text{otherwise}}\\end{cases}'; + }; + + return ConditionalNode; +} + +exports.name = 'ConditionalNode'; +exports.path = 'expression.node'; +exports.factory = factory; + + +/***/ }), +/* 108 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var keywords = __webpack_require__(77); +var stringify = __webpack_require__(9).stringify; +var escape = __webpack_require__(9).escape; +var map = __webpack_require__(2).map; +var join = __webpack_require__(2).join; +var latex = __webpack_require__(4); +var operators = __webpack_require__(53); +var setSafeProperty = __webpack_require__(13).setSafeProperty; +var getUniqueArgumentName = __webpack_require__(109); + +function factory (type, config, load, typed) { + var register = load(__webpack_require__(7)).register; + var compile = load(__webpack_require__(7)).compile; + var Node = load(__webpack_require__(14)); + + /** + * @constructor FunctionAssignmentNode + * @extends {Node} + * Function assignment + * + * @param {string} name Function name + * @param {string[] | Array.<{name: string, type: string}>} params + * Array with function parameter names, or an + * array with objects containing the name + * and type of the parameter + * @param {Node} expr The function expression + */ + function FunctionAssignmentNode(name, params, expr) { + if (!(this instanceof FunctionAssignmentNode)) { + throw new SyntaxError('Constructor must be called with the new operator'); + } + + // validate input + if (typeof name !== 'string') throw new TypeError('String expected for parameter "name"'); + if (!Array.isArray(params)) throw new TypeError('Array containing strings or objects expected for parameter "params"'); + if (!type.isNode(expr)) throw new TypeError('Node expected for parameter "expr"'); + if (name in keywords) throw new Error('Illegal function name, "' + name + '" is a reserved keyword'); + + this.name = name; + this.params = params.map(function (param) { + return param && param.name || param; + }); + this.types = params.map(function (param) { + return param && param.type || 'any' + }); + this.expr = expr; + } + + FunctionAssignmentNode.prototype = new Node(); + + FunctionAssignmentNode.prototype.type = 'FunctionAssignmentNode'; + + FunctionAssignmentNode.prototype.isFunctionAssignmentNode = true; + + /** + * Compile the node to javascript code + * @param {FunctionAssignmentNode} node The node to be compiled + * @param {Object} defs Object which can be used to define functions + * or constants globally available for the compiled + * expression + * @param {Object} args Object with local function arguments, the key is + * the name of the argument, and the value is `true`. + * The object may not be mutated, but must be + * extended instead. + * @return {string} js + * @private + */ + function compileFunctionAssignmentNode(node, defs, args) { + if (!(node instanceof FunctionAssignmentNode)) { + throw new TypeError('No valid FunctionAssignmentNode') + } + + defs.typed = typed; + defs.setSafeProperty = setSafeProperty; + + // validate params + // FIXME: rename parameters to safe, internal names + + // we extend the original args and add the args to the child object + // and create a mapping from the unsafe param name to a safe, internal one + var childArgs = Object.create(args); + var jsParams = map(node.params, function (param) { + childArgs[param] = getUniqueArgumentName(childArgs); + return childArgs[param]; + }); + + // compile the function expression with the child args + var jsExpr = compile(node.expr, defs, childArgs); + var jsName = stringify(node.name); + + return 'setSafeProperty(scope, ' + jsName + ', ' + + ' (function () {' + + ' var fn = typed(' + jsName + ', {' + + ' ' + stringify(join(node.types, ',')) + ': function (' + join(jsParams, ',') + ') {' + + ' return ' + jsExpr + '' + + ' }' + + ' });' + + ' fn.syntax = ' + stringify(node.name + '(' + join(node.params, ', ') + ')') + ';' + + ' return fn;' + + ' })())'; + } + + // register the compile function + register(FunctionAssignmentNode.prototype.type, compileFunctionAssignmentNode); + + /** + * Execute a callback for each of the child nodes of this node + * @param {function(child: Node, path: string, parent: Node)} callback + */ + FunctionAssignmentNode.prototype.forEach = function (callback) { + callback(this.expr, 'expr', this); + }; + + /** + * Create a new FunctionAssignmentNode having it's childs be the results of calling + * the provided callback function for each of the childs of the original node. + * @param {function(child: Node, path: string, parent: Node): Node} callback + * @returns {FunctionAssignmentNode} Returns a transformed copy of the node + */ + FunctionAssignmentNode.prototype.map = function (callback) { + var expr = this._ifNode(callback(this.expr, 'expr', this)); + + return new FunctionAssignmentNode(this.name, this.params.slice(0), expr); + }; + + /** + * Create a clone of this node, a shallow copy + * @return {FunctionAssignmentNode} + */ + FunctionAssignmentNode.prototype.clone = function () { + return new FunctionAssignmentNode(this.name, this.params.slice(0), this.expr); + }; + + /** + * Is parenthesis needed? + * @param {Node} node + * @param {Object} parenthesis + * @private + */ + function needParenthesis(node, parenthesis) { + var precedence = operators.getPrecedence(node, parenthesis); + var exprPrecedence = operators.getPrecedence(node.expr, parenthesis); + + return (parenthesis === 'all') + || ((exprPrecedence !== null) && (exprPrecedence <= precedence)); + } + + /** + * get string representation + * @param {Object} options + * @return {string} str + */ + FunctionAssignmentNode.prototype._toString = function (options) { + var parenthesis = (options && options.parenthesis) ? options.parenthesis : 'keep'; + var expr = this.expr.toString(options); + if (needParenthesis(this, parenthesis)) { + expr = '(' + expr + ')'; + } + return this.name + '(' + this.params.join(', ') + ') = ' + expr; + }; + + /** + * get HTML representation + * @param {Object} options + * @return {string} str + */ + FunctionAssignmentNode.prototype.toHTML = function (options) { + var parenthesis = (options && options.parenthesis) ? options.parenthesis : 'keep'; + var params = []; + for (var i=0; i' + escape(this.params[i]) + ''); + } + var expr = this.expr.toHTML(options); + if (needParenthesis(this, parenthesis)) { + expr = '(' + expr + ')'; + } + return '' + escape(this.name) + '' + '(' + params.join(',') + ')=' + expr; + }; + + /** + * get LaTeX representation + * @param {Object} options + * @return {string} str + */ + FunctionAssignmentNode.prototype._toTex = function (options) { + var parenthesis = (options && options.parenthesis) ? options.parenthesis : 'keep'; + var expr = this.expr.toTex(options); + if (needParenthesis(this, parenthesis)) { + expr = '\\left(' + expr + '\\right)'; + } + + return '\\mathrm{' + this.name + + '}\\left(' + this.params.map(latex.toSymbol).join(',') + '\\right):=' + expr; + }; + + return FunctionAssignmentNode; +} +exports.name = 'FunctionAssignmentNode'; +exports.path = 'expression.node'; +exports.factory = factory; + + +/***/ }), +/* 109 */ +/***/ (function(module, exports) { + +/** + * Get a unique name for an argument name to store in defs + * @param {Object} defs + * @return {string} A string like 'arg1', 'arg2', ... + * @private + */ +function getUniqueArgumentName (defs) { + return 'arg' + Object.keys(defs).length +} + +module.exports = getUniqueArgumentName; + + +/***/ }), +/* 110 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var stringify = __webpack_require__(9).stringify; +var escape = __webpack_require__(9).escape; +var isSafeProperty = __webpack_require__(13).isSafeProperty; +var hasOwnProperty = __webpack_require__(5).hasOwnProperty; + +function factory (type, config, load, typed) { + var register = load(__webpack_require__(7)).register; + var compile = load(__webpack_require__(7)).compile; + var Node = load(__webpack_require__(14)); + + /** + * @constructor ObjectNode + * @extends {Node} + * Holds an object with keys/values + * @param {Object.} [properties] array with key/value pairs + */ + function ObjectNode(properties) { + if (!(this instanceof ObjectNode)) { + throw new SyntaxError('Constructor must be called with the new operator'); + } + + this.properties = properties || {}; + + // validate input + if (properties) { + if (!(typeof properties === 'object') || !Object.keys(properties).every(function (key) { + return type.isNode(properties[key]); + })) { + throw new TypeError('Object containing Nodes expected'); + } + } + } + + ObjectNode.prototype = new Node(); + + ObjectNode.prototype.type = 'ObjectNode'; + + ObjectNode.prototype.isObjectNode = true; + + /** + * Compile the node to javascript code + * @param {ObjectNode} node The node to be compiled + * @param {Object} defs Object which can be used to define functions + * or constants globally available for the compiled + * expression + * @param {Object} args Object with local function arguments, the key is + * the name of the argument, and the value is `true`. + * The object may not be mutated, but must be + * extended instead. + * @return {string} code + * @private + */ + function compileObjectNode(node, defs, args) { + if (!(node instanceof ObjectNode)) { + throw new TypeError('No valid ObjectNode') + } + + var entries = []; + for (var key in node.properties) { + if (hasOwnProperty(node.properties, key)) { + // we stringify/parse the key here to resolve unicode characters, + // so you cannot create a key like {"co\\u006Estructor": null} + var stringifiedKey = stringify(key) + var parsedKey = JSON.parse(stringifiedKey) + if (!isSafeProperty(node.properties, parsedKey)) { + throw new Error('No access to property "' + parsedKey + '"'); + } + + entries.push(stringifiedKey + ': ' + compile(node.properties[key], defs, args)); + } + } + return '{' + entries.join(', ') + '}'; + } + + // register the compile function + register(ObjectNode.prototype.type, compileObjectNode); + + /** + * Execute a callback for each of the child nodes of this node + * @param {function(child: Node, path: string, parent: Node)} callback + */ + ObjectNode.prototype.forEach = function (callback) { + for (var key in this.properties) { + if (this.properties.hasOwnProperty(key)) { + callback(this.properties[key], 'properties[' + stringify(key) + ']', this); + } + } + }; + + /** + * Create a new ObjectNode having it's childs be the results of calling + * the provided callback function for each of the childs of the original node. + * @param {function(child: Node, path: string, parent: Node): Node} callback + * @returns {ObjectNode} Returns a transformed copy of the node + */ + ObjectNode.prototype.map = function (callback) { + var properties = {}; + for (var key in this.properties) { + if (this.properties.hasOwnProperty(key)) { + properties[key] = this._ifNode(callback(this.properties[key], + 'properties[' + stringify(key) + ']', this)); + } + } + return new ObjectNode(properties); + }; + + /** + * Create a clone of this node, a shallow copy + * @return {ObjectNode} + */ + ObjectNode.prototype.clone = function() { + var properties = {}; + for (var key in this.properties) { + if (this.properties.hasOwnProperty(key)) { + properties[key] = this.properties[key]; + } + } + return new ObjectNode(properties); + }; + + /** + * Get string representation + * @param {Object} options + * @return {string} str + * @override + */ + ObjectNode.prototype._toString = function(options) { + var entries = []; + for (var key in this.properties) { + if (this.properties.hasOwnProperty(key)) { + entries.push(stringify(key) + ': ' + this.properties[key].toString(options)); + } + } + return '{' + entries.join(', ') + '}'; + }; + + /** + * Get HTML representation + * @param {Object} options + * @return {string} str + * @override + */ + ObjectNode.prototype.toHTML = function(options) { + var entries = []; + for (var key in this.properties) { + if (this.properties.hasOwnProperty(key)) { + entries.push('' + escape(key) + '' + ':' + this.properties[key].toHTML(options)); + } + } + return '{' + entries.join(',') + '}'; + }; + + /** + * Get LaTeX representation + * @param {Object} options + * @return {string} str + */ + ObjectNode.prototype._toTex = function(options) { + var entries = []; + for (var key in this.properties) { + if (this.properties.hasOwnProperty(key)) { + entries.push("\\mathbf{" + key + ':} & ' + this.properties[key].toTex(options) + "\\\\"); + } + } + return '\\left\\{\\begin{array}{ll}' + entries.join('\n') + '\\end{array}\\right\\}'; + }; + + return ObjectNode; +} + +exports.name = 'ObjectNode'; +exports.path = 'expression.node'; +exports.factory = factory; + + +/***/ }), +/* 111 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function factory (type, config, load, typed) { + var parse = load(__webpack_require__(40)); + + /** + * Parse an expression. Returns a node tree, which can be evaluated by + * invoking node.eval(); + * + * Note the evaluating arbitrary expressions may involve security risks, + * see [http://mathjs.org/docs/expressions/security.html](http://mathjs.org/docs/expressions/security.html) for more information. + * + * Syntax: + * + * math.parse(expr) + * math.parse(expr, options) + * math.parse([expr1, expr2, expr3, ...]) + * math.parse([expr1, expr2, expr3, ...], options) + * + * Example: + * + * var node = math.parse('sqrt(3^2 + 4^2)'); + * node.compile().eval(); // 5 + * + * var scope = {a:3, b:4} + * var node = math.parse('a * b'); // 12 + * var code = node.compile(); + * code.eval(scope); // 12 + * scope.a = 5; + * code.eval(scope); // 20 + * + * var nodes = math.parse(['a = 3', 'b = 4', 'a * b']); + * nodes[2].compile().eval(); // 12 + * + * See also: + * + * eval, compile + * + * @param {string | string[] | Matrix} expr Expression to be parsed + * @param {{nodes: Object}} [options] Available options: + * - `nodes` a set of custom nodes + * @return {Node | Node[]} node + * @throws {Error} + */ + return typed('parse', { + 'string | Array | Matrix': parse, + 'string | Array | Matrix, Object': parse + }); +} + +exports.name = 'parse'; +exports.factory = factory; + + +/***/ }), +/* 112 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function factory (type, config, load, typed, math) { + var Parser = load(__webpack_require__(113)); + + /** + * Create a parser. The function creates a new `math.expression.Parser` object. + * + * Syntax: + * + * math.parser() + * + * Examples: + * + * var parser = new math.parser(); + * + * // evaluate expressions + * var a = parser.eval('sqrt(3^2 + 4^2)'); // 5 + * var b = parser.eval('sqrt(-4)'); // 2i + * var c = parser.eval('2 inch in cm'); // 5.08 cm + * var d = parser.eval('cos(45 deg)'); // 0.7071067811865476 + * + * // define variables and functions + * parser.eval('x = 7 / 2'); // 3.5 + * parser.eval('x + 3'); // 6.5 + * parser.eval('function f(x, y) = x^y'); // f(x, y) + * parser.eval('f(2, 3)'); // 8 + * + * // get and set variables and functions + * var x = parser.get('x'); // 7 + * var f = parser.get('f'); // function + * var g = f(3, 2); // 9 + * parser.set('h', 500); + * var i = parser.eval('h / 2'); // 250 + * parser.set('hello', function (name) { + * return 'hello, ' + name + '!'; + * }); + * parser.eval('hello("user")'); // "hello, user!" + * + * // clear defined functions and variables + * parser.clear(); + * + * See also: + * + * eval, compile, parse + * + * @return {Parser} Parser + */ + return typed('parser', { + '': function () { + return new Parser(math); + } + }); +} + +exports.name = 'parser'; +exports.factory = factory; +exports.math = true; // requires the math namespace as 5th argument + + +/***/ }), +/* 113 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var extend = __webpack_require__(5).extend; +var customs = __webpack_require__(13); + +function factory (type, config, load, typed, math) { + var _parse = load(__webpack_require__(40)); + + /** + * @constructor Parser + * Parser contains methods to evaluate or parse expressions, and has a number + * of convenience methods to get, set, and remove variables from memory. Parser + * keeps a scope containing variables in memory, which is used for all + * evaluations. + * + * Methods: + * var result = parser.eval(expr); // evaluate an expression + * var value = parser.get(name); // retrieve a variable from the parser + * var values = parser.getAll(); // retrieve all defined variables + * parser.set(name, value); // set a variable in the parser + * parser.remove(name); // clear a variable from the + * // parsers scope + * parser.clear(); // clear the parsers scope + * + * Example usage: + * var parser = new Parser(); + * // Note: there is a convenience method which can be used instead: + * // var parser = new math.parser(); + * + * // evaluate expressions + * parser.eval('sqrt(3^2 + 4^2)'); // 5 + * parser.eval('sqrt(-4)'); // 2i + * parser.eval('2 inch in cm'); // 5.08 cm + * parser.eval('cos(45 deg)'); // 0.7071067811865476 + * + * // define variables and functions + * parser.eval('x = 7 / 2'); // 3.5 + * parser.eval('x + 3'); // 6.5 + * parser.eval('function f(x, y) = x^y'); // f(x, y) + * parser.eval('f(2, 3)'); // 8 + * + * // get and set variables and functions + * var x = parser.get('x'); // 7 + * var f = parser.get('f'); // function + * var g = f(3, 2); // 9 + * parser.set('h', 500); + * var i = parser.eval('h / 2'); // 250 + * parser.set('hello', function (name) { + * return 'hello, ' + name + '!'; + * }); + * parser.eval('hello("user")'); // "hello, user!" + * + * // clear defined functions and variables + * parser.clear(); + * + */ + function Parser() { + if (!(this instanceof Parser)) { + throw new SyntaxError( + 'Constructor must be called with the new operator'); + } + this.scope = {}; + } + + /** + * Attach type information + */ + Parser.prototype.type = 'Parser'; + Parser.prototype.isParser = true; + + /** + * Parse an expression and return the parsed function node. + * The node tree can be compiled via `code = node.compile(math)`, + * and the compiled code can be executed as `code.eval([scope])` + * @param {string} expr + * @return {Node} node + * @throws {Error} + */ + Parser.prototype.parse = function (expr) { + throw new Error('Parser.parse is deprecated. Use math.parse instead.'); + }; + + /** + * Parse and compile an expression, return the compiled javascript code. + * The node can be evaluated via code.eval([scope]) + * @param {string} expr + * @return {{eval: function}} code + * @throws {Error} + */ + Parser.prototype.compile = function (expr) { + throw new Error('Parser.compile is deprecated. Use math.compile instead.'); + }; + + /** + * Parse and evaluate the given expression + * @param {string} expr A string containing an expression, for example "2+3" + * @return {*} result The result, or undefined when the expression was empty + * @throws {Error} + */ + Parser.prototype.eval = function (expr) { + // TODO: validate arguments + return _parse(expr) + .compile() + .eval(this.scope); + }; + + /** + * Get a variable (a function or variable) by name from the parsers scope. + * Returns undefined when not found + * @param {string} name + * @return {* | undefined} value + */ + Parser.prototype.get = function (name) { + // TODO: validate arguments + return name in this.scope + ? customs.getSafeProperty(this.scope, name) + : undefined; + }; + + /** + * Get a map with all defined variables + * @return {Object} values + */ + Parser.prototype.getAll = function () { + return extend({}, this.scope); + }; + + /** + * Set a symbol (a function or variable) by name from the parsers scope. + * @param {string} name + * @param {* | undefined} value + */ + Parser.prototype.set = function (name, value) { + // TODO: validate arguments + return customs.setSafeProperty(this.scope, name, value); + }; + + /** + * Remove a variable from the parsers scope + * @param {string} name + */ + Parser.prototype.remove = function (name) { + // TODO: validate arguments + delete this.scope[name]; + }; + + /** + * Clear the scope with variables and functions + */ + Parser.prototype.clear = function () { + for (var name in this.scope) { + if (this.scope.hasOwnProperty(name)) { + delete this.scope[name]; + } + } + }; + + return Parser; +} + +exports.name = 'Parser'; +exports.path = 'expression'; +exports.factory = factory; +exports.math = true; // requires the math namespace as 5th argument + + +/***/ }), +/* 114 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var deepForEach = __webpack_require__(42); +var reduce = __webpack_require__(65); +var containsCollections = __webpack_require__(66); + +function factory (type, config, load, typed) { + var larger = load(__webpack_require__(34)); + + /** + * Compute the maximum value of a matrix or a list with values. + * In case of a multi dimensional array, the maximum of the flattened array + * will be calculated. When `dim` is provided, the maximum over the selected + * dimension will be calculated. Parameter `dim` is zero-based. + * + * Syntax: + * + * math.max(a, b, c, ...) + * math.max(A) + * math.max(A, dim) + * + * Examples: + * + * math.max(2, 1, 4, 3); // returns 4 + * math.max([2, 1, 4, 3]); // returns 4 + * + * // maximum over a specified dimension (zero-based) + * math.max([[2, 5], [4, 3], [1, 7]], 0); // returns [4, 7] + * math.max([[2, 5], [4, 3]], [1, 7], 1); // returns [5, 4, 7] + * + * math.max(2.7, 7.1, -4.5, 2.0, 4.1); // returns 7.1 + * math.min(2.7, 7.1, -4.5, 2.0, 4.1); // returns -4.5 + * + * See also: + * + * mean, median, min, prod, std, sum, var + * + * @param {... *} args A single matrix or or multiple scalar values + * @return {*} The maximum value + */ + var max = typed('max', { + // max([a, b, c, d, ...]) + 'Array | Matrix': _max, + + // max([a, b, c, d, ...], dim) + 'Array | Matrix, number | BigNumber': function (array, dim) { + return reduce(array, dim.valueOf(), _largest); + }, + + // max(a, b, c, d, ...) + '...': function (args) { + if (containsCollections(args)) { + throw new TypeError('Scalar values expected in function max'); + } + + return _max(args); + } + }); + + max.toTex = '\\max\\left(${args}\\right)'; + + return max; + + /** + * Return the largest of two values + * @param {*} x + * @param {*} y + * @returns {*} Returns x when x is largest, or y when y is largest + * @private + */ + function _largest(x, y){ + return larger(x, y) ? x : y; + } + + /** + * Recursively calculate the maximum value in an n-dimensional array + * @param {Array} array + * @return {number} max + * @private + */ + function _max(array) { + var max = undefined; + + deepForEach(array, function (value) { + if (max === undefined || larger(value, max)) { + max = value; + } + }); + + if (max === undefined) { + throw new Error('Cannot calculate max of an empty array'); + } + + return max; + } +} + +exports.name = 'max'; +exports.factory = factory; + + +/***/ }), +/* 115 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var size = __webpack_require__(2).size; +var deepForEach = __webpack_require__(42); +var reduce = __webpack_require__(65); +var containsCollections = __webpack_require__(66); + +function factory (type, config, load, typed) { + var add = load(__webpack_require__(18)); + var divide = load(__webpack_require__(49)); + + /** + * Compute the mean value of matrix or a list with values. + * In case of a multi dimensional array, the mean of the flattened array + * will be calculated. When `dim` is provided, the maximum over the selected + * dimension will be calculated. Parameter `dim` is zero-based. + * + * Syntax: + * + * math.mean(a, b, c, ...) + * math.mean(A) + * math.mean(A, dim) + * + * Examples: + * + * math.mean(2, 1, 4, 3); // returns 2.5 + * math.mean([1, 2.7, 3.2, 4]); // returns 2.725 + * + * math.mean([[2, 5], [6, 3], [1, 7]], 0); // returns [3, 5] + * math.mean([[2, 5], [6, 3], [1, 7]], 1); // returns [3.5, 4.5, 4] + * + * See also: + * + * median, min, max, sum, prod, std, var + * + * @param {... *} args A single matrix or or multiple scalar values + * @return {*} The mean of all values + */ + var mean = typed('mean', { + // mean([a, b, c, d, ...]) + 'Array | Matrix': _mean, + + // mean([a, b, c, d, ...], dim) + 'Array | Matrix, number | BigNumber': _nmean, + + // mean(a, b, c, d, ...) + '...': function (args) { + if (containsCollections(args)) { + throw new TypeError('Scalar values expected in function mean'); + } + + return _mean(args); + } + }); + + mean.toTex = undefined; // use default template + + return mean; + + /** + * Calculate the mean value in an n-dimensional array, returning a + * n-1 dimensional array + * @param {Array} array + * @param {number} dim + * @return {number} mean + * @private + */ + function _nmean(array, dim){ + var sum = reduce(array, dim, add); + var s = Array.isArray(array) ? size(array) : array.size(); + return divide(sum, s[dim]); + } + + /** + * Recursively calculate the mean value in an n-dimensional array + * @param {Array} array + * @return {number} mean + * @private + */ + function _mean(array) { + var sum = 0; + var num = 0; + + deepForEach(array, function (value) { + sum = add(sum, value); + num++; + }); + + if (num === 0) { + throw new Error('Cannot calculate mean of an empty array'); + } + + return divide(sum, num); + } +} + +exports.name = 'mean'; +exports.factory = factory; + + +/***/ }), +/* 116 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var util = __webpack_require__(25); + +function factory (type, config, load, typed) { + var matrix = load(__webpack_require__(0)); + var divideScalar = load(__webpack_require__(19)); + var addScalar = load(__webpack_require__(20)); + var multiply = load(__webpack_require__(12)); + var unaryMinus = load(__webpack_require__(38)); + var det = load(__webpack_require__(117)); + var eye = load(__webpack_require__(62)); + + /** + * Calculate the inverse of a square matrix. + * + * Syntax: + * + * math.inv(x) + * + * Examples: + * + * math.inv([[1, 2], [3, 4]]); // returns [[-2, 1], [1.5, -0.5]] + * math.inv(4); // returns 0.25 + * 1 / 4; // returns 0.25 + * + * See also: + * + * det, transpose + * + * @param {number | Complex | Array | Matrix} x Matrix to be inversed + * @return {number | Complex | Array | Matrix} The inverse of `x`. + */ + var inv = typed('inv', { + 'Array | Matrix': function (x) { + var size = type.isMatrix(x) ? x.size() : util.array.size(x); + switch (size.length) { + case 1: + // vector + if (size[0] == 1) { + if (type.isMatrix(x)) { + return matrix([ + divideScalar(1, x.valueOf()[0]) + ]); + } + else { + return [ + divideScalar(1, x[0]) + ]; + } + } + else { + throw new RangeError('Matrix must be square ' + + '(size: ' + util.string.format(size) + ')'); + } + + case 2: + // two dimensional array + var rows = size[0]; + var cols = size[1]; + if (rows == cols) { + if (type.isMatrix(x)) { + return matrix( + _inv(x.valueOf(), rows, cols), + x.storage() + ); + } + else { + // return an Array + return _inv(x, rows, cols); + } + } + else { + throw new RangeError('Matrix must be square ' + + '(size: ' + util.string.format(size) + ')'); + } + + default: + // multi dimensional array + throw new RangeError('Matrix must be two dimensional ' + + '(size: ' + util.string.format(size) + ')'); + } + }, + + 'any': function (x) { + // scalar + return divideScalar(1, x); // FIXME: create a BigNumber one when configured for bignumbers + } + }); + + /** + * Calculate the inverse of a square matrix + * @param {Array[]} mat A square matrix + * @param {number} rows Number of rows + * @param {number} cols Number of columns, must equal rows + * @return {Array[]} inv Inverse matrix + * @private + */ + function _inv (mat, rows, cols){ + var r, s, f, value, temp; + + if (rows == 1) { + // this is a 1 x 1 matrix + value = mat[0][0]; + if (value == 0) { + throw Error('Cannot calculate inverse, determinant is zero'); + } + return [[ + divideScalar(1, value) + ]]; + } + else if (rows == 2) { + // this is a 2 x 2 matrix + var d = det(mat); + if (d == 0) { + throw Error('Cannot calculate inverse, determinant is zero'); + } + return [ + [ + divideScalar(mat[1][1], d), + divideScalar(unaryMinus(mat[0][1]), d) + ], + [ + divideScalar(unaryMinus(mat[1][0]), d), + divideScalar(mat[0][0], d) + ] + ]; + } + else { + // this is a matrix of 3 x 3 or larger + // calculate inverse using gauss-jordan elimination + // http://en.wikipedia.org/wiki/Gaussian_elimination + // http://mathworld.wolfram.com/MatrixInverse.html + // http://math.uww.edu/~mcfarlat/inverse.htm + + // make a copy of the matrix (only the arrays, not of the elements) + var A = mat.concat(); + for (r = 0; r < rows; r++) { + A[r] = A[r].concat(); + } + + // create an identity matrix which in the end will contain the + // matrix inverse + var B = eye(rows).valueOf(); + + // loop over all columns, and perform row reductions + for (var c = 0; c < cols; c++) { + // element Acc should be non zero. if not, swap content + // with one of the lower rows + r = c; + while (r < rows && A[r][c] == 0) { + r++; + } + if (r == rows || A[r][c] == 0) { + // TODO: in case of zero det, just return a matrix wih Infinity values? (like octave) + throw Error('Cannot calculate inverse, determinant is zero'); + } + if (r != c) { + temp = A[c]; A[c] = A[r]; A[r] = temp; + temp = B[c]; B[c] = B[r]; B[r] = temp; + } + + // eliminate non-zero values on the other rows at column c + var Ac = A[c], + Bc = B[c]; + for (r = 0; r < rows; r++) { + var Ar = A[r], + Br = B[r]; + if(r != c) { + // eliminate value at column c and row r + if (Ar[c] != 0) { + f = divideScalar(unaryMinus(Ar[c]), Ac[c]); + + // add (f * row c) to row r to eliminate the value + // at column c + for (s = c; s < cols; s++) { + Ar[s] = addScalar(Ar[s], multiply(f, Ac[s])); + } + for (s = 0; s < cols; s++) { + Br[s] = addScalar(Br[s], multiply(f, Bc[s])); + } + } + } + else { + // normalize value at Acc to 1, + // divide each value on row r with the value at Acc + f = Ac[c]; + for (s = c; s < cols; s++) { + Ar[s] = divideScalar(Ar[s], f); + } + for (s = 0; s < cols; s++) { + Br[s] = divideScalar(Br[s], f); + } + } + } + } + return B; + } + } + + inv.toTex = {1: '\\left(${args[0]}\\right)^{-1}'}; + + return inv; +} + +exports.name = 'inv'; +exports.factory = factory; + + +/***/ }), +/* 117 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var util = __webpack_require__(25); +var object = util.object; +var string = util.string; + +function factory (type, config, load, typed) { + var matrix = load(__webpack_require__(0)); + var add = load(__webpack_require__(18)); + var subtract = load(__webpack_require__(21)); + var multiply = load(__webpack_require__(12)); + var unaryMinus = load(__webpack_require__(38)); + + /** + * Calculate the determinant of a matrix. + * + * Syntax: + * + * math.det(x) + * + * Examples: + * + * math.det([[1, 2], [3, 4]]); // returns -2 + * + * var A = [ + * [-2, 2, 3], + * [-1, 1, 3], + * [2, 0, -1] + * ] + * math.det(A); // returns 6 + * + * See also: + * + * inv + * + * @param {Array | Matrix} x A matrix + * @return {number} The determinant of `x` + */ + var det = typed('det', { + 'any': function (x) { + return object.clone(x); + }, + + 'Array | Matrix': function det (x) { + var size; + if (type.isMatrix(x)) { + size = x.size(); + } + else if (Array.isArray(x)) { + x = matrix(x); + size = x.size(); + } + else { + // a scalar + size = []; + } + + switch (size.length) { + case 0: + // scalar + return object.clone(x); + + case 1: + // vector + if (size[0] == 1) { + return object.clone(x.valueOf()[0]); + } + else { + throw new RangeError('Matrix must be square ' + + '(size: ' + string.format(size) + ')'); + } + + case 2: + // two dimensional array + var rows = size[0]; + var cols = size[1]; + if (rows == cols) { + return _det(x.clone().valueOf(), rows, cols); + } + else { + throw new RangeError('Matrix must be square ' + + '(size: ' + string.format(size) + ')'); + } + + default: + // multi dimensional array + throw new RangeError('Matrix must be two dimensional ' + + '(size: ' + string.format(size) + ')'); + } + } + }); + + det.toTex = {1: '\\det\\left(${args[0]}\\right)'}; + + return det; + + /** + * Calculate the determinant of a matrix + * @param {Array[]} matrix A square, two dimensional matrix + * @param {number} rows Number of rows of the matrix (zero-based) + * @param {number} cols Number of columns of the matrix (zero-based) + * @returns {number} det + * @private + */ + function _det (matrix, rows, cols) { + if (rows == 1) { + // this is a 1 x 1 matrix + return object.clone(matrix[0][0]); + } + else if (rows == 2) { + // this is a 2 x 2 matrix + // the determinant of [a11,a12;a21,a22] is det = a11*a22-a21*a12 + return subtract( + multiply(matrix[0][0], matrix[1][1]), + multiply(matrix[1][0], matrix[0][1]) + ); + } + else { + // this is an n x n matrix + var compute_mu = function (matrix) { + var i, j; + + // Compute the matrix with zero lower triangle, same upper triangle, + // and diagonals given by the negated sum of the below diagonal + // elements. + var mu = new Array(matrix.length); + var sum = 0; + for (i = 1; i < matrix.length; i++) { + sum = add(sum, matrix[i][i]); + } + + for (i = 0; i < matrix.length; i++) { + mu[i] = new Array(matrix.length); + mu[i][i] = unaryMinus(sum); + + for (j = 0; j < i; j++) { + mu[i][j] = 0; // TODO: make bignumber 0 in case of bignumber computation + } + + for (j = i + 1; j < matrix.length; j++) { + mu[i][j] = matrix[i][j]; + } + + if (i+1 < matrix.length) { + sum = subtract(sum, matrix[i + 1][i + 1]); + } + } + + return mu; + }; + + var fa = matrix; + for (var i = 0; i < rows - 1; i++) { + fa = multiply(compute_mu(fa), matrix); + } + + if (rows % 2 == 0) { + return unaryMinus(fa[0][0]); + } else { + return fa[0][0]; + } + } + } +} + +exports.name = 'det'; +exports.factory = factory; + + + +/***/ }), +/* 118 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var deepForEach = __webpack_require__(42); +var reduce = __webpack_require__(65); +var containsCollections = __webpack_require__(66); + +function factory (type, config, load, typed) { + var smaller = load(__webpack_require__(45)); + + /** + * Compute the maximum value of a matrix or a list of values. + * In case of a multi dimensional array, the maximum of the flattened array + * will be calculated. When `dim` is provided, the maximum over the selected + * dimension will be calculated. Parameter `dim` is zero-based. + * + * Syntax: + * + * math.min(a, b, c, ...) + * math.min(A) + * math.min(A, dim) + * + * Examples: + * + * math.min(2, 1, 4, 3); // returns 1 + * math.min([2, 1, 4, 3]); // returns 1 + * + * // maximum over a specified dimension (zero-based) + * math.min([[2, 5], [4, 3], [1, 7]], 0); // returns [1, 3] + * math.min([[2, 5], [4, 3], [1, 7]], 1); // returns [2, 3, 1] + * + * math.max(2.7, 7.1, -4.5, 2.0, 4.1); // returns 7.1 + * math.min(2.7, 7.1, -4.5, 2.0, 4.1); // returns -4.5 + * + * See also: + * + * mean, median, max, prod, std, sum, var + * + * @param {... *} args A single matrix or or multiple scalar values + * @return {*} The minimum value + */ + var min = typed('min', { + // min([a, b, c, d, ...]) + 'Array | Matrix': _min, + + // min([a, b, c, d, ...], dim) + 'Array | Matrix, number | BigNumber': function (array, dim) { + return reduce(array, dim.valueOf(), _smallest); + }, + + // min(a, b, c, d, ...) + '...': function (args) { + if (containsCollections(args)) { + throw new TypeError('Scalar values expected in function min'); + } + + return _min(args); + } + }); + + min.toTex = '\\min\\left(${args}\\right)'; + + return min; + + /** + * Return the smallest of two values + * @param {*} x + * @param {*} y + * @returns {*} Returns x when x is smallest, or y when y is smallest + * @private + */ + function _smallest(x, y) { + return smaller(x, y) ? x : y; + } + + /** + * Recursively calculate the minimum value in an n-dimensional array + * @param {Array} array + * @return {number} min + * @private + */ + function _min(array) { + var min = undefined; + + deepForEach(array, function (value) { + if (min === undefined || smaller(value, min)) { + min = value; + } + }); + + if (min === undefined) { + throw new Error('Cannot calculate min of an empty array'); + } + + return min; + } +} + +exports.name = 'min'; +exports.factory = factory; + + /***/ }), /* 119 */ /***/ (function(module, exports, __webpack_require__) { @@ -20903,6 +20677,547 @@ exports.factory = factory; "use strict"; +function factory (type, config, load, typed) { + var matrix = load(__webpack_require__(0)); + + var ZERO = new type.BigNumber(0); + var ONE = new type.BigNumber(1); + + /** + * Create an array from a range. + * By default, the range end is excluded. This can be customized by providing + * an extra parameter `includeEnd`. + * + * Syntax: + * + * math.range(str [, includeEnd]) // Create a range from a string, + * // where the string contains the + * // start, optional step, and end, + * // separated by a colon. + * math.range(start, end [, includeEnd]) // Create a range with start and + * // end and a step size of 1. + * math.range(start, end, step [, includeEnd]) // Create a range with start, step, + * // and end. + * + * Where: + * + * - `str: string` + * A string 'start:end' or 'start:step:end' + * - `start: {number | BigNumber}` + * Start of the range + * - `end: number | BigNumber` + * End of the range, excluded by default, included when parameter includeEnd=true + * - `step: number | BigNumber` + * Step size. Default value is 1. + * - `includeEnd: boolean` + * Option to specify whether to include the end or not. False by default. + * + * Examples: + * + * math.range(2, 6); // [2, 3, 4, 5] + * math.range(2, -3, -1); // [2, 1, 0, -1, -2] + * math.range('2:1:6'); // [2, 3, 4, 5] + * math.range(2, 6, true); // [2, 3, 4, 5, 6] + * + * See also: + * + * ones, zeros, size, subset + * + * @param {*} args Parameters describing the ranges `start`, `end`, and optional `step`. + * @return {Array | Matrix} range + */ + var range = typed('range', { + // TODO: simplify signatures when typed-function supports default values and optional arguments + + // TODO: a number or boolean should not be converted to string here + 'string': _strRange, + 'string, boolean': _strRange, + + 'number, number': function (start, end) { + return _out(_rangeEx(start, end, 1)); + }, + 'number, number, number': function (start, end, step) { + return _out(_rangeEx(start, end, step)); + }, + 'number, number, boolean': function (start, end, includeEnd) { + return includeEnd + ? _out(_rangeInc(start, end, 1)) + : _out(_rangeEx(start, end, 1)); + }, + 'number, number, number, boolean': function (start, end, step, includeEnd) { + return includeEnd + ? _out(_rangeInc(start, end, step)) + : _out(_rangeEx(start, end, step)); + }, + + 'BigNumber, BigNumber': function (start, end) { + return _out(_bigRangeEx(start, end, ONE)); + }, + 'BigNumber, BigNumber, BigNumber': function (start, end, step) { + return _out(_bigRangeEx(start, end, step)); + }, + 'BigNumber, BigNumber, boolean': function (start, end, includeEnd) { + return includeEnd + ? _out(_bigRangeInc(start, end, ONE)) + : _out(_bigRangeEx(start, end, ONE)); + }, + 'BigNumber, BigNumber, BigNumber, boolean': function (start, end, step, includeEnd) { + return includeEnd + ? _out(_bigRangeInc(start, end, step)) + : _out(_bigRangeEx(start, end, step)); + } + + }); + + range.toTex = undefined; // use default template + + return range; + + function _out(arr) { + return config.matrix === 'Array' ? arr : matrix(arr); + } + + function _strRange (str, includeEnd) { + var r = _parse(str); + if (!r){ + throw new SyntaxError('String "' + str + '" is no valid range'); + } + + var fn; + if (config.number === 'BigNumber') { + fn = includeEnd ? _bigRangeInc : _bigRangeEx; + return _out(fn( + new type.BigNumber(r.start), + new type.BigNumber(r.end), + new type.BigNumber(r.step))); + } + else { + fn = includeEnd ? _rangeInc : _rangeEx; + return _out(fn(r.start, r.end, r.step)); + } + } + + /** + * Create a range with numbers. End is excluded + * @param {number} start + * @param {number} end + * @param {number} step + * @returns {Array} range + * @private + */ + function _rangeEx (start, end, step) { + var array = [], + x = start; + if (step > 0) { + while (x < end) { + array.push(x); + x += step; + } + } + else if (step < 0) { + while (x > end) { + array.push(x); + x += step; + } + } + + return array; + } + + /** + * Create a range with numbers. End is included + * @param {number} start + * @param {number} end + * @param {number} step + * @returns {Array} range + * @private + */ + function _rangeInc (start, end, step) { + var array = [], + x = start; + if (step > 0) { + while (x <= end) { + array.push(x); + x += step; + } + } + else if (step < 0) { + while (x >= end) { + array.push(x); + x += step; + } + } + + return array; + } + + /** + * Create a range with big numbers. End is excluded + * @param {BigNumber} start + * @param {BigNumber} end + * @param {BigNumber} step + * @returns {Array} range + * @private + */ + function _bigRangeEx (start, end, step) { + var array = [], + x = start; + if (step.gt(ZERO)) { + while (x.lt(end)) { + array.push(x); + x = x.plus(step); + } + } + else if (step.lt(ZERO)) { + while (x.gt(end)) { + array.push(x); + x = x.plus(step); + } + } + + return array; + } + + /** + * Create a range with big numbers. End is included + * @param {BigNumber} start + * @param {BigNumber} end + * @param {BigNumber} step + * @returns {Array} range + * @private + */ + function _bigRangeInc (start, end, step) { + var array = [], + x = start; + if (step.gt(ZERO)) { + while (x.lte(end)) { + array.push(x); + x = x.plus(step); + } + } + else if (step.lt(ZERO)) { + while (x.gte(end)) { + array.push(x); + x = x.plus(step); + } + } + + return array; + } + + /** + * Parse a string into a range, + * The string contains the start, optional step, and end, separated by a colon. + * If the string does not contain a valid range, null is returned. + * For example str='0:2:11'. + * @param {string} str + * @return {{start: number, end: number, step: number} | null} range Object containing properties start, end, step + * @private + */ + function _parse (str) { + var args = str.split(':'); + + // number + var nums = args.map(function (arg) { + // use Number and not parseFloat as Number returns NaN on invalid garbage in the string + return Number(arg); + }); + + var invalid = nums.some(function (num) { + return isNaN(num); + }); + if(invalid) { + return null; + } + + switch (nums.length) { + case 2: + return { + start: nums[0], + end: nums[1], + step: 1 + }; + + case 3: + return { + start: nums[0], + end: nums[2], + step: nums[1] + }; + + default: + return null; + } + } + +} + +exports.name = 'range'; +exports.factory = factory; + + +/***/ }), +/* 120 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var digits = __webpack_require__(3).digits; +// TODO this could be improved by simplifying seperated constants under associative and commutative operators +function factory(type, config, load, typed, math) { + var util = load(__webpack_require__(121)); + var isCommutative = util.isCommutative; + var isAssociative = util.isAssociative; + var allChildren = util.allChildren; + var createMakeNodeFunction = util.createMakeNodeFunction; + var ConstantNode = math.expression.node.ConstantNode; + var OperatorNode = math.expression.node.OperatorNode; + + function simplifyConstant(expr) { + var res = foldFraction(expr); + return type.isNode(res) ? res : _toNode(res); + } + + function _eval(fnname, args) { + try { + return _toNumber(math[fnname].apply(null, args)); + } + catch (ignore) { + // sometimes the implicit type conversion causes the evaluation to fail, so we'll try again after removing Fractions + args = args.map(function(x){ + if (type.isFraction(x)) { + return x.valueOf(); + } + return x; + }); + return _toNumber(math[fnname].apply(null, args)); + } + } + + var _toNode = typed({ + 'Fraction': _fractionToNode, + 'number': function(n) { + if (n < 0) { + return unaryMinusNode(new ConstantNode(-n)); + } + return new ConstantNode(n); + }, + 'BigNumber': function(n) { + if (n < 0) { + return unaryMinusNode(new ConstantNode(n.negated().toString(), 'number')); + } + return new ConstantNode(n.toString(), 'number'); + }, + 'Complex': function(s) { + throw 'Cannot convert Complex number to Node'; + } + }); + + // convert a number to a fraction only if it can be expressed exactly + function _exactFraction(n) { + if (isFinite(n)) { + var f = math.fraction(n); + if (f.valueOf() === n) { + return f; + } + } + return n; + } + + // Convert numbers to a preferred number type in preference order: Fraction, number, Complex + // BigNumbers are left alone + var _toNumber = typed({ + 'string': function(s) { + if (config.number === 'BigNumber') { + return math.bignumber(s); + } + else if (config.number === 'Fraction') { + return math.fraction(s); + } + else { + return _exactFraction(parseFloat(s)); + } + }, + + 'Fraction': function(s) { return s; }, + + 'BigNumber': function(s) { return s; }, + + 'number': function(s) { + return _exactFraction(s); + }, + + 'Complex': function(s) { + if (s.im !== 0) { + return s; + } + return _exactFraction(s.re); + }, + }); + + function unaryMinusNode(n) { + return new OperatorNode('-', 'unaryMinus', [n]); + } + + function _fractionToNode(f) { + var n; + var vn = f.s*f.n; + if (vn < 0) { + n = new OperatorNode('-', 'unaryMinus', [new ConstantNode(-vn)]) + } + else { + n = new ConstantNode(vn); + } + + if (f.d === 1) { + return n; + } + return new OperatorNode('/', 'divide', [n, new ConstantNode(f.d)]); + } + + /* + * Create a binary tree from a list of Fractions and Nodes. + * Tries to fold Fractions by evaluating them until the first Node in the list is hit, so + * `args` should be sorted to have the Fractions at the start (if the operator is commutative). + * @param args - list of Fractions and Nodes + * @param fn - evaluator for the binary operation evaluator that accepts two Fractions + * @param makeNode - creates a binary OperatorNode/FunctionNode from a list of child Nodes + * if args.length is 1, returns args[0] + * @return - Either a Node representing a binary expression or Fraction + */ + function foldOp(fn, args, makeNode) { + return args.reduce(function(a, b) { + if (!type.isNode(a) && !type.isNode(b)) { + try { + return _eval(fn, [a,b]); + } + catch (ignoreandcontinue) {} + a = _toNode(a); + b = _toNode(b); + } + else if (!type.isNode(a)) { + a = _toNode(a); + } + else if (!type.isNode(b)) { + b = _toNode(b); + } + + return makeNode([a, b]); + }); + } + + // destroys the original node and returns a folded one + function foldFraction(node) { + switch(node.type) { + case 'SymbolNode': + return node; + case 'ConstantNode': + if (node.valueType === 'number') { + return _toNumber(node.value); + } + return node; + case 'FunctionNode': + if (math[node.name] && math[node.name].rawArgs) { + return node; + } + /* falls through */ + case 'OperatorNode': + var fn = node.fn.toString(); + var args; + var res; + var makeNode = createMakeNodeFunction(node); + if (node.args.length === 1) { + args = [foldFraction(node.args[0])]; + if (!type.isNode(args[0])) { + res = _eval(fn, args); + } + else { + res = makeNode(args); + } + } + else if (isAssociative(node)) { + args = allChildren(node); + args = args.map(foldFraction); + + if (isCommutative(fn)) { + // commutative binary operator + var consts = [], vars = []; + + for (var i=0; i < args.length; i++) { + if (!type.isNode(args[i])) { + consts.push(args[i]); + } + else { + vars.push(args[i]); + } + } + + if (consts.length > 1) { + res = foldOp(fn, consts, makeNode); + vars.unshift(res); + res = foldOp(fn, vars, makeNode); + } + else { + // we won't change the children order since it's not neccessary + res = foldOp(fn, args, makeNode); + } + } + else { + // non-commutative binary operator + res = foldOp(fn, args, makeNode); + } + } + else { + // non-associative binary operator + args = node.args.map(foldFraction); + res = foldOp(fn, args, makeNode); + } + return res; + case 'ParenthesisNode': + // remove the uneccessary parenthesis + return foldFraction(node.content); + case 'AccessorNode': + /* falls through */ + case 'ArrayNode': + /* falls through */ + case 'AssignmentNode': + /* falls through */ + case 'BlockNode': + /* falls through */ + case 'FunctionAssignmentNode': + /* falls through */ + case 'IndexNode': + /* falls through */ + case 'ObjectNode': + /* falls through */ + case 'RangeNode': + /* falls through */ + case 'UpdateNode': + /* falls through */ + case 'ConditionalNode': + /* falls through */ + default: + throw 'Unimplemented node type in simplifyConstant: '+node.type; + } + } + + return simplifyConstant; +} + +exports.math = true; +exports.name = 'simplifyConstant'; +exports.path = 'algebra.simplify'; +exports.factory = factory; + + +/***/ }), +/* 121 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + function factory(type, config, load, typed, math) { var FunctionNode = math.expression.node.FunctionNode; var OperatorNode = math.expression.node.OperatorNode; @@ -21061,7 +21376,168 @@ exports.factory = factory; exports.math = true; /***/ }), -/* 120 */ +/* 122 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function factory(type, config, load, typed, math) { + var ConstantNode = math.expression.node.ConstantNode; + var OperatorNode = math.expression.node.OperatorNode; + var FunctionNode = math.expression.node.FunctionNode; + + var node0 = new ConstantNode(0); + var node1 = new ConstantNode(1); + + /** + * simplifyCore() performs single pass simplification suitable for + * applications requiring ultimate performance. In contrast, simplify() + * extends simplifyCore() with additional passes to provide deeper + * simplification. + * + * Syntax: + * + * simplify.simpifyCore(expr) + * + * Examples: + * + * var f = math.parse('2 * 1 * x ^ (2 - 1)'); + * math.simplify.simpifyCore(f); // Node {2 * x} + * math.simplify('2 * 1 * x ^ (2 - 1)', [math.simplify.simpifyCore]); // Node {2 * x}; + * + * See also: + * + * derivative + * + * @param {Node} node + * The expression to be simplified + */ + function simplifyCore(node) { + if (type.isOperatorNode(node) && node.args.length <= 2) { + var a0 = simplifyCore(node.args[0]); + var a1 = node.args[1] && simplifyCore(node.args[1]); + if (node.op === "+") { + if (node.args.length === 1) { + return node.args[0]; + } + if (type.isConstantNode(a0)) { + if (a0.value === "0") { + return a1; + } else if (type.isConstantNode(a1) && a0.value && a0.value.length < 5 && a1.value && a1.value.length < 5) { + return new ConstantNode(Number(a0.value) + Number(a1.value)); + } + } + if (type.isConstantNode(a1) && a1.value === "0") { + return a0; + } + if (node.args.length === 2 && type.isOperatorNode(a1) && a1.op === '-' && a1.fn === 'unaryMinus') { + return new OperatorNode('-', 'subtract', [a0,a1.args[0]]); + } + return new OperatorNode(node.op, node.fn, a1 ? [a0,a1] : [a0]); + } else if (node.op === "-") { + if (type.isConstantNode(a0) && a1) { + if (type.isConstantNode(a1) && a0.value && a0.value.length < 5 && a1.value && a1.value.length < 5) { + return new ConstantNode(Number(a0.value) - Number(a1.value)); + } else if (a0.value === "0") { + return new OperatorNode("-", "unaryMinus", [a1]); + } + } + if (node.fn === "subtract" && node.args.length === 2) { + if (type.isConstantNode(a1) && a1.value === "0") { + return a0; + } + if (type.isOperatorNode(a1) && a1.fn === "unaryMinus") { + return simplifyCore(new OperatorNode("+", "add", [a0, a1.args[0]])); + } + return new OperatorNode(node.op, node.fn, [a0,a1]); + } else if (node.fn === "unaryMinus") { + if (type.isOperatorNode(a0)) { + if (a0.fn === 'unaryMinus') { + return a0.args[0]; + } + } + return new OperatorNode(node.op, node.fn, [a0]); + } + throw new Error('never happens'); + } else if (node.op === "*") { + if (type.isConstantNode(a0)) { + if (a0.value === "0") { + return node0; + } else if (a0.value === "1") { + return a1; + } else if (type.isConstantNode(a1) && a0.value && a0.value.length < 5 && a1.value && a1.value.length < 5) { + return new ConstantNode(Number(a0.value) * Number(a1.value)); + } + } + if (type.isConstantNode(a1)) { + if (a1.value === "0") { + return node0; + } else if (a1.value === "1") { + return a0; + } else if (type.isOperatorNode(a0) && a0.op === node.op) { + var a00 = a0.args[0]; + if (type.isConstantNode(a00) && a1.value && a1.value.length < 5 && a00.value && a00.value.length < 5) { + var a00_a1 = new ConstantNode(Number(a0.args[0].value) * Number(a1.value)); + return new OperatorNode(node.op, node.fn, [a00_a1, a0.args[1]]); // constants on left + } + } + return new OperatorNode(node.op, node.fn, [a1, a0]); // constants on left + } + return new OperatorNode(node.op, node.fn, [a0, a1]); + } else if (node.op === "/") { + if (type.isConstantNode(a0)) { + if (a0.value === "0") { + return node0; + } else if (type.isConstantNode(a1) && a0.value && a0.value.length < 5 && (a1.value === "1" || a1.value==="2" || a1.value==="4")) { + return new ConstantNode(Number(a0.value) / Number(a1.value)); + } + } + return new OperatorNode(node.op, node.fn, [a0, a1]); + } else if (node.op === "^") { + if (type.isConstantNode(a1)) { + if (a1.value === "0") { + return node1; + } else if (a1.value === "1") { + return a0; + } else if (type.isConstantNode(a1) && a0.value && a0.value.length < 5 && a1.value && a1.value.length < 2) { // fold constant + return new ConstantNode( + math.pow(Number(a0.value), Number(a1.value))); + } + } + return new OperatorNode(node.op, node.fn, [a0, a1]); + } + } else if (type.isParenthesisNode(node)) { + var c = simplifyCore(node.content); + if (type.isParenthesisNode(c) || type.isSymbolNode(c) || type.isConstantNode(c)) { + return c; + } + return new ParenthesisNode(c); + } else if (type.isFunctionNode(node)) { + var args = node.args.map(simplifyCore); + if (args.length === 1) { + if (type.isParenthesisNode(args[0])) { + args[0] = args[0].content; + } + } + return new FunctionNode(simplifyCore(node.fn), args); + } else { + // cannot simplify + } + return node; + } + + return simplifyCore; +} + +exports.math = true; +exports.name = 'simplifyCore'; +exports.path = 'algebra.simplify'; +exports.factory = factory; + + +/***/ }), +/* 123 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -21102,14 +21578,14 @@ exports.factory = factory; /***/ }), -/* 121 */ +/* 124 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var nearlyEqual = __webpack_require__(3).nearlyEqual; -var bigNearlyEqual = __webpack_require__(35); +var bigNearlyEqual = __webpack_require__(36); function factory (type, config, load, typed) { @@ -21313,7 +21789,7 @@ exports.factory = factory; /***/ }), -/* 122 */ +/* 125 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -21389,7 +21865,7 @@ exports.factory = factory; /***/ }), -/* 123 */ +/* 126 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -21451,7 +21927,7 @@ exports.factory = factory; /***/ }), -/* 124 */ +/* 127 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -21471,7 +21947,7 @@ function factory (type, config, load, typed) { var subtract = load(__webpack_require__(21)); var larger = load(__webpack_require__(34)); var equalScalar = load(__webpack_require__(11)); - var unaryMinus = load(__webpack_require__(37)); + var unaryMinus = load(__webpack_require__(38)); var SparseMatrix = type.SparseMatrix; var DenseMatrix = type.DenseMatrix; @@ -21845,7 +22321,7 @@ exports.factory = factory; /***/ }), -/* 125 */ +/* 128 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -21859,8 +22335,8 @@ var number = util.number, function factory (type, config, load, typed) { - var cs_sqr = load(__webpack_require__(410)); - var cs_lu = load(__webpack_require__(418)); + var cs_sqr = load(__webpack_require__(412)); + var cs_lu = load(__webpack_require__(420)); /** * Calculate the Sparse Matrix LU decomposition with full pivoting. Sparse Matrix `A` is decomposed in two matrices (`L`, `U`) and two permutation vectors (`pinv`, `q`) where @@ -21924,7 +22400,7 @@ exports.factory = factory; /***/ }), -/* 126 */ +/* 129 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -21983,14 +22459,14 @@ exports.factory = factory; /***/ }), -/* 127 */ +/* 130 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var nearlyEqual = __webpack_require__(3).nearlyEqual; -var bigNearlyEqual = __webpack_require__(35); +var bigNearlyEqual = __webpack_require__(36); function factory (type, config, load, typed) { @@ -22165,7 +22641,7 @@ exports.factory = factory; /***/ }), -/* 128 */ +/* 131 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -22195,7 +22671,7 @@ exports.factory = factory; /***/ }), -/* 129 */ +/* 132 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -22203,7 +22679,7 @@ exports.factory = factory; function factory (type, config, load) { - var cs_flip = load(__webpack_require__(83)); + var cs_flip = load(__webpack_require__(84)); /** * Marks the node at w[j] @@ -22227,7 +22703,7 @@ exports.factory = factory; /***/ }), -/* 130 */ +/* 133 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -22241,7 +22717,7 @@ function factory (type, config, load, typed) { var subtract = load(__webpack_require__(21)); var equalScalar = load(__webpack_require__(11)); - var solveValidation = load(__webpack_require__(84)); + var solveValidation = load(__webpack_require__(85)); var DenseMatrix = type.DenseMatrix; @@ -22421,7 +22897,7 @@ exports.factory = factory; /***/ }), -/* 131 */ +/* 134 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -22435,7 +22911,7 @@ function factory (type, config, load, typed) { var subtract = load(__webpack_require__(21)); var equalScalar = load(__webpack_require__(11)); - var solveValidation = load(__webpack_require__(84)); + var solveValidation = load(__webpack_require__(85)); var DenseMatrix = type.DenseMatrix; @@ -22616,7 +23092,7 @@ exports.factory = factory; /***/ }), -/* 132 */ +/* 135 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -22768,7 +23244,7 @@ exports.factory = factory; /***/ }), -/* 133 */ +/* 136 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -22924,7 +23400,7 @@ exports.factory = factory; /***/ }), -/* 134 */ +/* 137 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -23017,7 +23493,7 @@ exports.factory = factory; /***/ }), -/* 135 */ +/* 138 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -23171,7 +23647,7 @@ exports.factory = factory; /***/ }), -/* 136 */ +/* 139 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -23181,12 +23657,12 @@ function factory (type, config, load, typed) { var add = load(__webpack_require__(18)); var subtract = load(__webpack_require__(21)); var multiply = load(__webpack_require__(12)); - var divide = load(__webpack_require__(47)); - var pow = load(__webpack_require__(45)); + var divide = load(__webpack_require__(49)); + var pow = load(__webpack_require__(46)); var factorial = load(__webpack_require__(69)); var combinations = load(__webpack_require__(70)); - var isNegative = load(__webpack_require__(57)); - var isInteger = load(__webpack_require__(48)); + var isNegative = load(__webpack_require__(58)); + var isInteger = load(__webpack_require__(50)); var larger = load(__webpack_require__(34)); /** @@ -23247,7 +23723,7 @@ exports.factory = factory; /***/ }), -/* 137 */ +/* 140 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -23258,7 +23734,7 @@ var isInteger = __webpack_require__(3).isInteger; function factory (type, config, load, typed) { var multiply = load(__webpack_require__(12)); - var pow = load(__webpack_require__(45)); + var pow = load(__webpack_require__(46)); /** * Compute the gamma function of a value using Lanczos approximation for @@ -23456,7 +23932,7 @@ exports.factory = factory; /***/ }), -/* 138 */ +/* 141 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -23526,7 +24002,7 @@ exports.factory = factory; /***/ }), -/* 139 */ +/* 142 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -23612,7 +24088,7 @@ exports.factory = factory; /***/ }), -/* 140 */ +/* 143 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -23622,7 +24098,7 @@ var size = __webpack_require__(2).size; function factory (type, config, load, typed) { var matrix = load(__webpack_require__(0)); - var compareAsc = load(__webpack_require__(49)); + var compareAsc = load(__webpack_require__(51)); var compareDesc = function (a, b) { return -compareAsc(a, b); }; @@ -23743,7 +24219,7 @@ exports.factory = factory; /***/ }), -/* 141 */ +/* 144 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -23834,7 +24310,7 @@ exports.factory = factory; /***/ }), -/* 142 */ +/* 145 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -23847,7 +24323,7 @@ var generalize = __webpack_require__(2).generalize; function factory (type, config, load, typed) { var equal = load(__webpack_require__(30)); var index = load(__webpack_require__(27)); - var matrix = load(__webpack_require__(43)); + var matrix = load(__webpack_require__(44)); var size = load(__webpack_require__(28)); var subset = load(__webpack_require__(22)); var compareNatural = load(__webpack_require__(31)); @@ -23916,7 +24392,7 @@ exports.factory = factory; /***/ }), -/* 143 */ +/* 146 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -23929,7 +24405,7 @@ var generalize = __webpack_require__(2).generalize; function factory (type, config, load, typed) { var equal = load(__webpack_require__(30)); var index = load(__webpack_require__(27)); - var matrix = load(__webpack_require__(43)); + var matrix = load(__webpack_require__(44)); var size = load(__webpack_require__(28)); var subset = load(__webpack_require__(22)); var compareNatural = load(__webpack_require__(31)); @@ -23990,7 +24466,7 @@ exports.factory = factory; /***/ }), -/* 144 */ +/* 147 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -24002,9 +24478,9 @@ function factory (type, config, load, typed) { var index = load(__webpack_require__(27)); var concat = load(__webpack_require__(64)); var size = load(__webpack_require__(28)); - var sort = load(__webpack_require__(140)); + var sort = load(__webpack_require__(143)); var subset = load(__webpack_require__(22)); - var setDifference = load(__webpack_require__(142)); + var setDifference = load(__webpack_require__(145)); /** * Create the symmetric difference of two (multi)sets. @@ -24049,7 +24525,7 @@ exports.factory = factory; /***/ }), -/* 145 */ +/* 148 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -24062,8 +24538,8 @@ var containsCollections = __webpack_require__(66); function factory (type, config, load, typed) { var add = load(__webpack_require__(20)); var divide = load(__webpack_require__(19)); - var compare = load(__webpack_require__(49)); - var partitionSelect = load(__webpack_require__(88)); + var compare = load(__webpack_require__(51)); + var partitionSelect = load(__webpack_require__(89)); /** * Compute the median of a matrix or a list with values. The values are @@ -24174,7 +24650,7 @@ exports.factory = factory; /***/ }), -/* 146 */ +/* 149 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -24309,7 +24785,7 @@ exports.factory = factory; /***/ }), -/* 147 */ +/* 150 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -24384,10 +24860,10 @@ exports.factory = factory; /***/ }), -/* 148 */ +/* 151 */ /***/ (function(module, exports, __webpack_require__) { -var core = __webpack_require__(149); +var core = __webpack_require__(152); /** * math.js factory function. Creates a new instance of math.js @@ -24418,7 +24894,7 @@ function create (config) { math.create = create; // import data types, functions, constants, expression parser, etc. - math['import'](__webpack_require__(156)); + math['import'](__webpack_require__(159)); return math; } @@ -24428,21 +24904,21 @@ module.exports = create(); /***/ }), -/* 149 */ +/* 152 */ /***/ (function(module, exports, __webpack_require__) { -module.exports = __webpack_require__(150); +module.exports = __webpack_require__(153); /***/ }), -/* 150 */ +/* 153 */ /***/ (function(module, exports, __webpack_require__) { var isFactory = __webpack_require__(5).isFactory; -var typedFactory = __webpack_require__(151); -var emitter = __webpack_require__(90); +var typedFactory = __webpack_require__(154); +var emitter = __webpack_require__(91); -var importFactory = __webpack_require__(154); -var configFactory = __webpack_require__(155); +var importFactory = __webpack_require__(157); +var configFactory = __webpack_require__(158); /** * Math.js core. Creates a new, empty math.js instance @@ -24572,13 +25048,13 @@ exports.create = function create (options) { /***/ }), -/* 151 */ +/* 154 */ /***/ (function(module, exports, __webpack_require__) { -var typedFunction = __webpack_require__(152); +var typedFunction = __webpack_require__(155); var digits = __webpack_require__(3).digits; var isBigNumber = __webpack_require__(71); -var isMatrix = __webpack_require__(58); +var isMatrix = __webpack_require__(59); // returns a new instance of typed-function var createTyped = function () { @@ -24869,7 +25345,7 @@ exports.create = function create(type) { /***/ }), -/* 152 */ +/* 155 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -26269,7 +26745,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_ /***/ }), -/* 153 */ +/* 156 */ /***/ (function(module, exports) { function E () { @@ -26341,7 +26817,7 @@ module.exports = E; /***/ }), -/* 154 */ +/* 157 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -26350,7 +26826,7 @@ module.exports = E; var lazy = __webpack_require__(5).lazy; var isFactory = __webpack_require__(5).isFactory; var traverse = __webpack_require__(5).traverse; -var ArgumentsError = __webpack_require__(50); +var ArgumentsError = __webpack_require__(43); function factory (type, config, load, typed, math) { /** @@ -26655,7 +27131,7 @@ exports.lazy = true; /***/ }), -/* 155 */ +/* 158 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -26786,55 +27262,55 @@ exports.factory = factory; /***/ }), -/* 156 */ +/* 159 */ /***/ (function(module, exports, __webpack_require__) { module.exports = [ - __webpack_require__(157), // data types (Matrix, Complex, Unit, ...) - __webpack_require__(189), // constants - __webpack_require__(191), // expression parsing - __webpack_require__(403), // functions - __webpack_require__(546), // serialization utility (math.json.reviver) - __webpack_require__(548) // errors + __webpack_require__(160), // data types (Matrix, Complex, Unit, ...) + __webpack_require__(192), // constants + __webpack_require__(194), // expression parsing + __webpack_require__(406), // functions + __webpack_require__(548), // serialization utility (math.json.reviver) + __webpack_require__(550) // errors ]; /***/ }), -/* 157 */ +/* 160 */ /***/ (function(module, exports, __webpack_require__) { module.exports = [ - __webpack_require__(158), - __webpack_require__(162), - __webpack_require__(163), - __webpack_require__(167), + __webpack_require__(161), + __webpack_require__(165), + __webpack_require__(166), __webpack_require__(170), __webpack_require__(173), + __webpack_require__(176), __webpack_require__(74), - __webpack_require__(181), - __webpack_require__(182), - __webpack_require__(183) + __webpack_require__(184), + __webpack_require__(185), + __webpack_require__(186) ]; /***/ }), -/* 158 */ +/* 161 */ /***/ (function(module, exports, __webpack_require__) { module.exports = [ // type - __webpack_require__(159), + __webpack_require__(162), // construction function - __webpack_require__(161) + __webpack_require__(164) ]; /***/ }), -/* 159 */ +/* 162 */ /***/ (function(module, exports, __webpack_require__) { -var Decimal = __webpack_require__(160); // make sure to pick the es5 version +var Decimal = __webpack_require__(163); // make sure to pick the es5 version function factory (type, config, load, typed, math) { var BigNumber = Decimal.clone({precision: config.precision}); @@ -26884,16 +27360,16 @@ exports.factory = factory; exports.math = true; // request access to the math namespace /***/ }), -/* 160 */ +/* 163 */ /***/ (function(module, exports, __webpack_require__) { -var __WEBPACK_AMD_DEFINE_RESULT__;/*! decimal.js v7.2.3 https://github.com/MikeMcl/decimal.js/LICENCE */ +var __WEBPACK_AMD_DEFINE_RESULT__;/*! decimal.js v9.0.1 https://github.com/MikeMcl/decimal.js/LICENCE */ ;(function (globalScope) { 'use strict'; /* - * decimal.js v7.2.3 + * decimal.js v9.0.1 * An arbitrary-precision Decimal type for JavaScript. * https://github.com/MikeMcl/decimal.js * Copyright (c) 2017 Michael Mclaughlin @@ -26923,7 +27399,7 @@ var __WEBPACK_AMD_DEFINE_RESULT__;/*! decimal.js v7.2.3 https://github.com/MikeM // The initial configuration properties of the Decimal constructor. - Decimal = { + DEFAULTS = { // These values must be integers within the stated ranges (inclusive). // Most of these values can be changed at run-time using the `Decimal.config` method. @@ -26988,7 +27464,7 @@ var __WEBPACK_AMD_DEFINE_RESULT__;/*! decimal.js v7.2.3 https://github.com/MikeM // ----------------------------------- END OF EDITABLE DEFAULTS ------------------------------- // - inexact, noConflict, quadrant, + Decimal, inexact, noConflict, quadrant, external = true, decimalError = '[DecimalError] ', @@ -27012,7 +27488,7 @@ var __WEBPACK_AMD_DEFINE_RESULT__;/*! decimal.js v7.2.3 https://github.com/MikeM PI_PRECISION = PI.length - 1, // Decimal.prototype object - P = {}; + P = { name: '[object Decimal]' }; // Decimal prototype methods @@ -31049,6 +31525,7 @@ var __WEBPACK_AMD_DEFINE_RESULT__;/*! decimal.js v7.2.3 https://github.com/MikeM * minE {number} * modulo {number} * crypto {boolean|number} + * defaults {true} * * E.g. Decimal.config({ precision: 20, rounding: 4 }) * @@ -31056,6 +31533,7 @@ var __WEBPACK_AMD_DEFINE_RESULT__;/*! decimal.js v7.2.3 https://github.com/MikeM function config(obj) { if (!obj || typeof obj !== 'object') throw Error(decimalError + 'Object expected'); var i, p, v, + useDefaults = obj.defaults === true, ps = [ 'precision', 1, MAX_DIGITS, 'rounding', 0, 8, @@ -31067,13 +31545,15 @@ var __WEBPACK_AMD_DEFINE_RESULT__;/*! decimal.js v7.2.3 https://github.com/MikeM ]; for (i = 0; i < ps.length; i += 3) { - if ((v = obj[p = ps[i]]) !== void 0) { + if (p = ps[i], useDefaults) this[p] = DEFAULTS[p]; + if ((v = obj[p]) !== void 0) { if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2]) this[p] = v; else throw Error(invalidArgument + p + ': ' + v); } } - if ((v = obj[p = 'crypto']) !== void 0) { + if (p = 'crypto', useDefaults) this[p] = DEFAULTS[p]; + if ((v = obj[p]) !== void 0) { if (v === true || v === false || v === 0 || v === 1) { if (v) { if (typeof crypto != 'undefined' && crypto && @@ -31216,6 +31696,7 @@ var __WEBPACK_AMD_DEFINE_RESULT__;/*! decimal.js v7.2.3 https://github.com/MikeM Decimal.config = Decimal.set = config; Decimal.clone = clone; + Decimal.isDecimal = isDecimalInstance; Decimal.abs = abs; Decimal.acos = acos; @@ -31256,8 +31737,10 @@ var __WEBPACK_AMD_DEFINE_RESULT__;/*! decimal.js v7.2.3 https://github.com/MikeM if (obj === void 0) obj = {}; if (obj) { - ps = ['precision', 'rounding', 'toExpNeg', 'toExpPos', 'maxE', 'minE', 'modulo', 'crypto']; - for (i = 0; i < ps.length;) if (!obj.hasOwnProperty(p = ps[i++])) obj[p] = this[p]; + if (obj.defaults !== true) { + ps = ['precision', 'rounding', 'toExpNeg', 'toExpPos', 'maxE', 'minE', 'modulo', 'crypto']; + for (i = 0; i < ps.length;) if (!obj.hasOwnProperty(p = ps[i++])) obj[p] = this[p]; + } } Decimal.config(obj); @@ -31334,6 +31817,16 @@ var __WEBPACK_AMD_DEFINE_RESULT__;/*! decimal.js v7.2.3 https://github.com/MikeM } + /* + * Return true if object is a Decimal instance (where Decimal is any Decimal constructor), + * otherwise return false. + * + */ + function isDecimalInstance(obj) { + return obj instanceof Decimal || obj && obj.name === '[object Decimal]' || false; + } + + /* * Return a new Decimal whose value is the natural logarithm of `x`, rounded to `precision` * significant digits using rounding mode `rounding`. @@ -31664,7 +32157,9 @@ var __WEBPACK_AMD_DEFINE_RESULT__;/*! decimal.js v7.2.3 https://github.com/MikeM // Create and configure initial Decimal constructor. - Decimal = clone(Decimal); + Decimal = clone(DEFAULTS); + + Decimal['default'] = Decimal.Decimal = Decimal; // Create the internal constants from their string values. LN10 = new Decimal(LN10); @@ -31676,14 +32171,14 @@ var __WEBPACK_AMD_DEFINE_RESULT__;/*! decimal.js v7.2.3 https://github.com/MikeM // AMD. if (true) { - !(__WEBPACK_AMD_DEFINE_RESULT__ = function () { + !(__WEBPACK_AMD_DEFINE_RESULT__ = (function () { return Decimal; - }.call(exports, __webpack_require__, exports, module), + }).call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // Node and other environments that support module.exports. } else if (typeof module != 'undefined' && module.exports) { - module.exports = Decimal['default'] = Decimal.Decimal = Decimal; + module.exports = Decimal; // Browser. } else { @@ -31704,7 +32199,7 @@ var __WEBPACK_AMD_DEFINE_RESULT__;/*! decimal.js v7.2.3 https://github.com/MikeM /***/ }), -/* 161 */ +/* 164 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -31779,7 +32274,7 @@ exports.factory = factory; /***/ }), -/* 162 */ +/* 165 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -31864,20 +32359,20 @@ exports.factory = factory; /***/ }), -/* 163 */ +/* 166 */ /***/ (function(module, exports, __webpack_require__) { module.exports = [ // type - __webpack_require__(164), + __webpack_require__(167), // construction function - __webpack_require__(166) + __webpack_require__(169) ]; /***/ }), -/* 164 */ +/* 167 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -32049,7 +32544,7 @@ exports.lazy = false; // we need to register a listener on the import events, so /***/ }), -/* 165 */ +/* 168 */ /***/ (function(module, exports) { /** @@ -32238,7 +32733,7 @@ exports.toFixed = function (value, precision) { /***/ }), -/* 166 */ +/* 169 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -32296,20 +32791,20 @@ exports.factory = factory; /***/ }), -/* 167 */ +/* 170 */ /***/ (function(module, exports, __webpack_require__) { module.exports = [ // type - __webpack_require__(91), + __webpack_require__(92), // construction function - __webpack_require__(169) + __webpack_require__(172) ]; /***/ }), -/* 168 */ +/* 171 */ /***/ (function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/** @@ -33555,9 +34050,9 @@ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/** Complex['EPSILON'] = 1e-16; if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() { + !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function() { return Complex; - }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), + }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); } else if (typeof exports === 'object') { module['exports'] = Complex; @@ -33569,7 +34064,7 @@ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/** /***/ }), -/* 169 */ +/* 172 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -33676,23 +34171,23 @@ exports.factory = factory; /***/ }), -/* 170 */ +/* 173 */ /***/ (function(module, exports, __webpack_require__) { module.exports = [ // type - __webpack_require__(171), + __webpack_require__(174), // construction function - __webpack_require__(92) + __webpack_require__(93) ]; /***/ }), -/* 171 */ +/* 174 */ /***/ (function(module, exports, __webpack_require__) { -var Fraction = __webpack_require__(172); +var Fraction = __webpack_require__(175); /** * Attach type information @@ -33734,11 +34229,11 @@ exports.factory = factory; /***/ }), -/* 172 */ +/* 175 */ /***/ (function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/** - * @license Fraction.js v4.0.2 09/09/2015 + * @license Fraction.js v4.0.4 09/09/2015 * http://www.xarg.org/2014/03/rational-numbers-in-javascript/ * * Copyright (c) 2015, Robert Eisele (robert@xarg.org) @@ -33922,6 +34417,9 @@ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/** case "string": { B = p1.match(/\d+|./g); + + if (B === null) + throwInvalidParam(); if (B[A] === '-') {// Check for minus sign at the beginning s = -1; @@ -34508,9 +35006,9 @@ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/** }; if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () { + !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () { return Fraction; - }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), + }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); } else if (typeof exports === "object") { module["exports"] = Fraction; @@ -34522,29 +35020,29 @@ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/** /***/ }), -/* 173 */ +/* 176 */ /***/ (function(module, exports, __webpack_require__) { module.exports = [ // types __webpack_require__(72), - __webpack_require__(43), - __webpack_require__(175), - __webpack_require__(176), - __webpack_require__(177), + __webpack_require__(44), __webpack_require__(178), + __webpack_require__(179), + __webpack_require__(180), + __webpack_require__(181), __webpack_require__(27), - __webpack_require__(93), + __webpack_require__(94), // construction functions - __webpack_require__(179), + __webpack_require__(182), __webpack_require__(0), - __webpack_require__(180) + __webpack_require__(183) ]; /***/ }), -/* 174 */ +/* 177 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -34561,7 +35059,7 @@ exports.isBoolean = function(value) { /***/ }), -/* 175 */ +/* 178 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -36002,7 +36500,7 @@ exports.lazy = false; // no lazy loading, as we alter type.Matrix._storage /***/ }), -/* 176 */ +/* 179 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -36150,7 +36648,7 @@ exports.factory = factory; /***/ }), -/* 177 */ +/* 180 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -36158,7 +36656,7 @@ exports.factory = factory; function factory (type, config, load, typed) { - var smaller = load(__webpack_require__(44)); + var smaller = load(__webpack_require__(45)); var larger = load(__webpack_require__(34)); var oneOverLogPhi = 1.0 / Math.log((1.0 + Math.sqrt(5.0)) / 2.0); @@ -36506,7 +37004,7 @@ exports.factory = factory; /***/ }), -/* 178 */ +/* 181 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -36522,9 +37020,9 @@ var isString = string.isString; function factory (type, config, load) { - var DenseMatrix = load(__webpack_require__(43)); + var DenseMatrix = load(__webpack_require__(44)); - var smaller = load(__webpack_require__(44)); + var smaller = load(__webpack_require__(45)); function ImmutableDenseMatrix(data, datatype) { if (!(this instanceof ImmutableDenseMatrix)) @@ -36746,7 +37244,7 @@ exports.factory = factory; /***/ }), -/* 179 */ +/* 182 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -36817,7 +37315,7 @@ exports.factory = factory; /***/ }), -/* 180 */ +/* 183 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -36885,17 +37383,17 @@ exports.factory = factory; /***/ }), -/* 181 */ +/* 184 */ /***/ (function(module, exports, __webpack_require__) { module.exports = [ // type - __webpack_require__(94) + __webpack_require__(95) ]; /***/ }), -/* 182 */ +/* 185 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -36971,29 +37469,29 @@ exports.factory = factory; /***/ }), -/* 183 */ +/* 186 */ /***/ (function(module, exports, __webpack_require__) { module.exports = [ // type - __webpack_require__(184), - - // construction function - __webpack_require__(185), - - // create new units - __webpack_require__(186), - - // split units __webpack_require__(187), + // construction function + __webpack_require__(188), + + // create new units + __webpack_require__(189), + + // split units + __webpack_require__(190), + // physical constants - __webpack_require__(188) + __webpack_require__(191) ]; /***/ }), -/* 184 */ +/* 187 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -37001,23 +37499,23 @@ module.exports = [ var endsWith = __webpack_require__(9).endsWith; var clone = __webpack_require__(5).clone; -var constants = __webpack_require__(95); +var constants = __webpack_require__(96); function factory (type, config, load, typed, math) { var add = load(__webpack_require__(20)); var subtract = load(__webpack_require__(21)); var multiply = load(__webpack_require__(23)); var divide = load(__webpack_require__(19)); - var pow = load(__webpack_require__(45)); + var pow = load(__webpack_require__(46)); var abs = load(__webpack_require__(29)); - var fix = load(__webpack_require__(96)); - var round = load(__webpack_require__(97)); + var fix = load(__webpack_require__(97)); + var round = load(__webpack_require__(98)); var equal = load(__webpack_require__(30)); var isNumeric = load(__webpack_require__(75)); - var format = load(__webpack_require__(98)); + var format = load(__webpack_require__(99)); var getTypeOf = load(__webpack_require__(76)); var toNumber = load(__webpack_require__(74)); - var Complex = load(__webpack_require__(91)); + var Complex = load(__webpack_require__(92)); /** * A unit can be constructed in the following ways: @@ -40284,7 +40782,7 @@ exports.math = true; // request access to the math namespace /***/ }), -/* 185 */ +/* 188 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -40352,7 +40850,7 @@ exports.factory = factory; /***/ }), -/* 186 */ +/* 189 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -40444,7 +40942,7 @@ exports.factory = factory; /***/ }), -/* 187 */ +/* 190 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -40488,7 +40986,7 @@ exports.factory = factory; /***/ }), -/* 188 */ +/* 191 */ /***/ (function(module, exports, __webpack_require__) { var lazy = __webpack_require__(5).lazy; @@ -40584,14 +41082,14 @@ exports.math = true; // request access to the math namespace /***/ }), -/* 189 */ +/* 192 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var object = __webpack_require__(5); -var bigConstants = __webpack_require__(95); +var bigConstants = __webpack_require__(96); function factory (type, config, load, typed, math) { // listen for changed in the configuration, automatically reload @@ -40650,7 +41148,7 @@ function factory (type, config, load, typed, math) { setConstant(math, 'i', type.Complex.I); // meta information - setConstant(math, 'version', __webpack_require__(190)); + setConstant(math, 'version', __webpack_require__(193)); } // create a constant in both math and mathWithTransform @@ -40670,32 +41168,34 @@ exports.lazy = false; // no lazy loading of constants, the constants themselves exports.math = true; // request access to the math namespace /***/ }), -/* 190 */ +/* 193 */ /***/ (function(module, exports) { -module.exports = '3.17.0'; +module.exports = '3.18.0'; // Note: This file is automatically generated when building math.js. // Changes made in this file will be overwritten. /***/ }), -/* 191 */ +/* 194 */ /***/ (function(module, exports, __webpack_require__) { module.exports = [ - __webpack_require__(99), - __webpack_require__(383), - __webpack_require__(389), - __webpack_require__(391), + // Note that the docs folder is called "embeddedDocs" and not "docs" to prevent issues + // with yarn autoclean. See https://github.com/josdejong/mathjs/issues/969 + __webpack_require__(100), + __webpack_require__(387), + __webpack_require__(392), + __webpack_require__(394), - __webpack_require__(402), - __webpack_require__(39), - __webpack_require__(111) + __webpack_require__(405), + __webpack_require__(40), + __webpack_require__(113) ]; /***/ }), -/* 192 */ +/* 195 */ /***/ (function(module, exports) { module.exports = { @@ -40720,7 +41220,7 @@ module.exports = { /***/ }), -/* 193 */ +/* 196 */ /***/ (function(module, exports) { module.exports = { @@ -40747,7 +41247,7 @@ module.exports = { /***/ }), -/* 194 */ +/* 197 */ /***/ (function(module, exports) { module.exports = { @@ -40772,7 +41272,7 @@ module.exports = { /***/ }), -/* 195 */ +/* 198 */ /***/ (function(module, exports) { module.exports = { @@ -40796,7 +41296,7 @@ module.exports = { /***/ }), -/* 196 */ +/* 199 */ /***/ (function(module, exports) { module.exports = { @@ -40819,7 +41319,7 @@ module.exports = { /***/ }), -/* 197 */ +/* 200 */ /***/ (function(module, exports) { module.exports = { @@ -40850,7 +41350,7 @@ module.exports = { /***/ }), -/* 198 */ +/* 201 */ /***/ (function(module, exports) { module.exports = { @@ -40881,7 +41381,7 @@ module.exports = { /***/ }), -/* 199 */ +/* 202 */ /***/ (function(module, exports) { module.exports = { @@ -40911,7 +41411,7 @@ module.exports = { /***/ }), -/* 200 */ +/* 203 */ /***/ (function(module, exports) { module.exports = { @@ -40936,7 +41436,7 @@ module.exports = { /***/ }), -/* 201 */ +/* 204 */ /***/ (function(module, exports) { module.exports = { @@ -40957,7 +41457,7 @@ module.exports = { /***/ }), -/* 202 */ +/* 205 */ /***/ (function(module, exports) { module.exports = { @@ -40981,7 +41481,7 @@ module.exports = { /***/ }), -/* 203 */ +/* 206 */ /***/ (function(module, exports) { module.exports = { @@ -41007,7 +41507,7 @@ module.exports = { /***/ }), -/* 204 */ +/* 207 */ /***/ (function(module, exports) { module.exports = { @@ -41025,7 +41525,7 @@ module.exports = { /***/ }), -/* 205 */ +/* 208 */ /***/ (function(module, exports) { module.exports = { @@ -41045,7 +41545,7 @@ module.exports = { /***/ }), -/* 206 */ +/* 209 */ /***/ (function(module, exports) { module.exports = { @@ -41064,7 +41564,7 @@ module.exports = { /***/ }), -/* 207 */ +/* 210 */ /***/ (function(module, exports) { module.exports = { @@ -41083,7 +41583,7 @@ module.exports = { /***/ }), -/* 208 */ +/* 211 */ /***/ (function(module, exports) { module.exports = { @@ -41102,7 +41602,7 @@ module.exports = { /***/ }), -/* 209 */ +/* 212 */ /***/ (function(module, exports) { module.exports = { @@ -41121,7 +41621,7 @@ module.exports = { /***/ }), -/* 210 */ +/* 213 */ /***/ (function(module, exports) { module.exports = { @@ -41140,7 +41640,7 @@ module.exports = { /***/ }), -/* 211 */ +/* 214 */ /***/ (function(module, exports) { module.exports = { @@ -41159,7 +41659,7 @@ module.exports = { /***/ }), -/* 212 */ +/* 215 */ /***/ (function(module, exports) { module.exports = { @@ -41177,7 +41677,7 @@ module.exports = { /***/ }), -/* 213 */ +/* 216 */ /***/ (function(module, exports) { module.exports = { @@ -41195,7 +41695,7 @@ module.exports = { /***/ }), -/* 214 */ +/* 217 */ /***/ (function(module, exports) { module.exports = { @@ -41214,7 +41714,7 @@ module.exports = { /***/ }), -/* 215 */ +/* 218 */ /***/ (function(module, exports) { module.exports = { @@ -41233,7 +41733,7 @@ module.exports = { /***/ }), -/* 216 */ +/* 219 */ /***/ (function(module, exports) { module.exports = { @@ -41252,7 +41752,7 @@ module.exports = { /***/ }), -/* 217 */ +/* 220 */ /***/ (function(module, exports) { module.exports = { @@ -41270,7 +41770,7 @@ module.exports = { /***/ }), -/* 218 */ +/* 221 */ /***/ (function(module, exports) { module.exports = { @@ -41288,7 +41788,7 @@ module.exports = { /***/ }), -/* 219 */ +/* 222 */ /***/ (function(module, exports) { module.exports = { @@ -41316,7 +41816,7 @@ module.exports = { /***/ }), -/* 220 */ +/* 223 */ /***/ (function(module, exports) { module.exports = { @@ -41339,7 +41839,7 @@ module.exports = { /***/ }), -/* 221 */ +/* 224 */ /***/ (function(module, exports) { module.exports = { @@ -41362,7 +41862,7 @@ module.exports = { /***/ }), -/* 222 */ +/* 225 */ /***/ (function(module, exports) { module.exports = { @@ -41385,7 +41885,7 @@ module.exports = { /***/ }), -/* 223 */ +/* 226 */ /***/ (function(module, exports) { module.exports = { @@ -41410,7 +41910,30 @@ module.exports = { /***/ }), -/* 224 */ +/* 227 */ +/***/ (function(module, exports) { + +module.exports = { + 'name': 'rationalize', + 'category': 'Algebra', + 'syntax': [ + 'rationalize(expr)', + 'rationalize(expr, scope)', + 'rationalize(expr, scope, detailed)' + ], + 'description': 'Transform a rationalizable expression in a rational fraction. If rational fraction is one variable polynomial then converts the numerator and denominator in canonical form, with decreasing exponents, returning the coefficients of numerator.', + 'examples': [ + 'rationalize("2x/y - y/(x+1)")', + 'rationalize("2x/y - y/(x+1)", true)', + ], + 'seealso': [ + 'simplify' + ] +}; + + +/***/ }), +/* 228 */ /***/ (function(module, exports) { module.exports = { @@ -41430,7 +41953,7 @@ module.exports = { /***/ }), -/* 225 */ +/* 229 */ /***/ (function(module, exports) { module.exports = { @@ -41451,7 +41974,7 @@ module.exports = { /***/ }), -/* 226 */ +/* 230 */ /***/ (function(module, exports) { module.exports = { @@ -41472,7 +41995,7 @@ module.exports = { /***/ }), -/* 227 */ +/* 231 */ /***/ (function(module, exports) { module.exports = { @@ -41491,7 +42014,7 @@ module.exports = { /***/ }), -/* 228 */ +/* 232 */ /***/ (function(module, exports) { module.exports = { @@ -41516,7 +42039,7 @@ module.exports = { /***/ }), -/* 229 */ +/* 233 */ /***/ (function(module, exports) { module.exports = { @@ -41547,7 +42070,7 @@ module.exports = { /***/ }), -/* 230 */ +/* 234 */ /***/ (function(module, exports) { module.exports = { @@ -41568,7 +42091,7 @@ module.exports = { /***/ }), -/* 231 */ +/* 235 */ /***/ (function(module, exports) { module.exports = { @@ -41592,7 +42115,7 @@ module.exports = { /***/ }), -/* 232 */ +/* 236 */ /***/ (function(module, exports) { module.exports = { @@ -41618,7 +42141,7 @@ module.exports = { /***/ }), -/* 233 */ +/* 237 */ /***/ (function(module, exports) { module.exports = { @@ -41643,7 +42166,7 @@ module.exports = { /***/ }), -/* 234 */ +/* 238 */ /***/ (function(module, exports) { module.exports = { @@ -41668,7 +42191,7 @@ module.exports = { /***/ }), -/* 235 */ +/* 239 */ /***/ (function(module, exports) { module.exports = { @@ -41691,7 +42214,7 @@ module.exports = { /***/ }), -/* 236 */ +/* 240 */ /***/ (function(module, exports) { module.exports = { @@ -41716,7 +42239,7 @@ module.exports = { /***/ }), -/* 237 */ +/* 241 */ /***/ (function(module, exports) { module.exports = { @@ -41738,7 +42261,7 @@ module.exports = { /***/ }), -/* 238 */ +/* 242 */ /***/ (function(module, exports) { module.exports = { @@ -41759,7 +42282,7 @@ module.exports = { /***/ }), -/* 239 */ +/* 243 */ /***/ (function(module, exports) { module.exports = { @@ -41780,7 +42303,7 @@ module.exports = { /***/ }), -/* 240 */ +/* 244 */ /***/ (function(module, exports) { module.exports = { @@ -41802,7 +42325,7 @@ module.exports = { /***/ }), -/* 241 */ +/* 245 */ /***/ (function(module, exports) { module.exports = { @@ -41822,7 +42345,7 @@ module.exports = { /***/ }), -/* 242 */ +/* 246 */ /***/ (function(module, exports) { module.exports = { @@ -41850,7 +42373,7 @@ module.exports = { }; /***/ }), -/* 243 */ +/* 247 */ /***/ (function(module, exports) { module.exports = { @@ -41875,7 +42398,7 @@ module.exports = { /***/ }), -/* 244 */ +/* 248 */ /***/ (function(module, exports) { module.exports = { @@ -41901,7 +42424,7 @@ module.exports = { /***/ }), -/* 245 */ +/* 249 */ /***/ (function(module, exports) { module.exports = { @@ -41926,7 +42449,7 @@ module.exports = { /***/ }), -/* 246 */ +/* 250 */ /***/ (function(module, exports) { module.exports = { @@ -41952,7 +42475,7 @@ module.exports = { /***/ }), -/* 247 */ +/* 251 */ /***/ (function(module, exports) { module.exports = { @@ -41978,7 +42501,7 @@ module.exports = { }; /***/ }), -/* 248 */ +/* 252 */ /***/ (function(module, exports) { module.exports = { @@ -42000,7 +42523,7 @@ module.exports = { /***/ }), -/* 249 */ +/* 253 */ /***/ (function(module, exports) { module.exports = { @@ -42025,7 +42548,7 @@ module.exports = { /***/ }), -/* 250 */ +/* 254 */ /***/ (function(module, exports) { module.exports = { @@ -42048,7 +42571,7 @@ module.exports = { /***/ }), -/* 251 */ +/* 255 */ /***/ (function(module, exports) { module.exports = { @@ -42072,7 +42595,7 @@ module.exports = { /***/ }), -/* 252 */ +/* 256 */ /***/ (function(module, exports) { module.exports = { @@ -42099,7 +42622,7 @@ module.exports = { /***/ }), -/* 253 */ +/* 257 */ /***/ (function(module, exports) { module.exports = { @@ -42124,7 +42647,7 @@ module.exports = { /***/ }), -/* 254 */ +/* 258 */ /***/ (function(module, exports) { module.exports = { @@ -42148,7 +42671,7 @@ module.exports = { /***/ }), -/* 255 */ +/* 259 */ /***/ (function(module, exports) { module.exports = { @@ -42171,7 +42694,7 @@ module.exports = { /***/ }), -/* 256 */ +/* 260 */ /***/ (function(module, exports) { module.exports = { @@ -42191,7 +42714,7 @@ module.exports = { /***/ }), -/* 257 */ +/* 261 */ /***/ (function(module, exports) { module.exports = { @@ -42214,7 +42737,7 @@ module.exports = { /***/ }), -/* 258 */ +/* 262 */ /***/ (function(module, exports) { module.exports = { @@ -42237,7 +42760,7 @@ module.exports = { /***/ }), -/* 259 */ +/* 263 */ /***/ (function(module, exports) { module.exports = { @@ -42259,7 +42782,7 @@ module.exports = { /***/ }), -/* 260 */ +/* 264 */ /***/ (function(module, exports) { module.exports = { @@ -42280,7 +42803,7 @@ module.exports = { /***/ }), -/* 261 */ +/* 265 */ /***/ (function(module, exports) { module.exports = { @@ -42302,7 +42825,7 @@ module.exports = { /***/ }), -/* 262 */ +/* 266 */ /***/ (function(module, exports) { module.exports = { @@ -42325,7 +42848,7 @@ module.exports = { /***/ }), -/* 263 */ +/* 267 */ /***/ (function(module, exports) { module.exports = { @@ -42348,7 +42871,7 @@ module.exports = { /***/ }), -/* 264 */ +/* 268 */ /***/ (function(module, exports) { module.exports = { @@ -42366,7 +42889,7 @@ module.exports = { }; /***/ }), -/* 265 */ +/* 269 */ /***/ (function(module, exports) { module.exports = { @@ -42384,7 +42907,7 @@ module.exports = { }; /***/ }), -/* 266 */ +/* 270 */ /***/ (function(module, exports) { module.exports = { @@ -42401,7 +42924,7 @@ module.exports = { }; /***/ }), -/* 267 */ +/* 271 */ /***/ (function(module, exports) { module.exports = { @@ -42419,7 +42942,7 @@ module.exports = { /***/ }), -/* 268 */ +/* 272 */ /***/ (function(module, exports) { module.exports = { @@ -42441,7 +42964,7 @@ module.exports = { /***/ }), -/* 269 */ +/* 273 */ /***/ (function(module, exports) { module.exports = { @@ -42462,7 +42985,7 @@ module.exports = { /***/ }), -/* 270 */ +/* 274 */ /***/ (function(module, exports) { module.exports = { @@ -42483,7 +43006,7 @@ module.exports = { /***/ }), -/* 271 */ +/* 275 */ /***/ (function(module, exports) { module.exports = { @@ -42509,7 +43032,7 @@ module.exports = { /***/ }), -/* 272 */ +/* 276 */ /***/ (function(module, exports) { module.exports = { @@ -42535,7 +43058,7 @@ module.exports = { /***/ }), -/* 273 */ +/* 277 */ /***/ (function(module, exports) { module.exports = { @@ -42561,7 +43084,7 @@ module.exports = { /***/ }), -/* 274 */ +/* 278 */ /***/ (function(module, exports) { module.exports = { @@ -42587,7 +43110,7 @@ module.exports = { /***/ }), -/* 275 */ +/* 279 */ /***/ (function(module, exports) { module.exports = { @@ -42607,7 +43130,7 @@ module.exports = { /***/ }), -/* 276 */ +/* 280 */ /***/ (function(module, exports) { module.exports = { @@ -42627,7 +43150,7 @@ module.exports = { /***/ }), -/* 277 */ +/* 281 */ /***/ (function(module, exports) { module.exports = { @@ -42647,7 +43170,7 @@ module.exports = { /***/ }), -/* 278 */ +/* 282 */ /***/ (function(module, exports) { module.exports = { @@ -42667,7 +43190,7 @@ module.exports = { /***/ }), -/* 279 */ +/* 283 */ /***/ (function(module, exports) { module.exports = { @@ -42690,7 +43213,7 @@ module.exports = { /***/ }), -/* 280 */ +/* 284 */ /***/ (function(module, exports) { module.exports = { @@ -42714,7 +43237,7 @@ module.exports = { /***/ }), -/* 281 */ +/* 285 */ /***/ (function(module, exports) { module.exports = { @@ -42737,7 +43260,7 @@ module.exports = { /***/ }), -/* 282 */ +/* 286 */ /***/ (function(module, exports) { module.exports = { @@ -42761,7 +43284,7 @@ module.exports = { /***/ }), -/* 283 */ +/* 287 */ /***/ (function(module, exports) { module.exports = { @@ -42786,7 +43309,7 @@ module.exports = { /***/ }), -/* 284 */ +/* 288 */ /***/ (function(module, exports) { module.exports = { @@ -42809,7 +43332,7 @@ module.exports = { /***/ }), -/* 285 */ +/* 289 */ /***/ (function(module, exports) { module.exports = { @@ -42830,7 +43353,7 @@ module.exports = { /***/ }), -/* 286 */ +/* 290 */ /***/ (function(module, exports) { module.exports = { @@ -42854,7 +43377,7 @@ module.exports = { /***/ }), -/* 287 */ +/* 291 */ /***/ (function(module, exports) { module.exports = { @@ -42879,7 +43402,7 @@ module.exports = { /***/ }), -/* 288 */ +/* 292 */ /***/ (function(module, exports) { module.exports = { @@ -42904,7 +43427,7 @@ module.exports = { /***/ }), -/* 289 */ +/* 293 */ /***/ (function(module, exports) { module.exports = { @@ -42924,7 +43447,7 @@ module.exports = { /***/ }), -/* 290 */ +/* 294 */ /***/ (function(module, exports) { module.exports = { @@ -42947,7 +43470,7 @@ module.exports = { /***/ }), -/* 291 */ +/* 295 */ /***/ (function(module, exports) { module.exports = { @@ -42965,7 +43488,7 @@ module.exports = { /***/ }), -/* 292 */ +/* 296 */ /***/ (function(module, exports) { module.exports = { @@ -42987,7 +43510,7 @@ module.exports = { /***/ }), -/* 293 */ +/* 297 */ /***/ (function(module, exports) { module.exports = { @@ -43008,7 +43531,7 @@ module.exports = { /***/ }), -/* 294 */ +/* 298 */ /***/ (function(module, exports) { module.exports = { @@ -43026,7 +43549,7 @@ module.exports = { /***/ }), -/* 295 */ +/* 299 */ /***/ (function(module, exports) { module.exports = { @@ -43055,7 +43578,7 @@ module.exports = { /***/ }), -/* 296 */ +/* 300 */ /***/ (function(module, exports) { module.exports = { @@ -43075,7 +43598,7 @@ module.exports = { /***/ }), -/* 297 */ +/* 301 */ /***/ (function(module, exports) { module.exports = { @@ -43106,7 +43629,7 @@ module.exports = { /***/ }), -/* 298 */ +/* 302 */ /***/ (function(module, exports) { module.exports = { @@ -43131,7 +43654,7 @@ module.exports = { /***/ }), -/* 299 */ +/* 303 */ /***/ (function(module, exports) { module.exports = { @@ -43153,7 +43676,7 @@ module.exports = { /***/ }), -/* 300 */ +/* 304 */ /***/ (function(module, exports) { module.exports = { @@ -43177,7 +43700,7 @@ module.exports = { /***/ }), -/* 301 */ +/* 305 */ /***/ (function(module, exports) { module.exports = { @@ -43200,7 +43723,7 @@ module.exports = { /***/ }), -/* 302 */ +/* 306 */ /***/ (function(module, exports) { module.exports = { @@ -43223,7 +43746,7 @@ module.exports = { /***/ }), -/* 303 */ +/* 307 */ /***/ (function(module, exports) { module.exports = { @@ -43254,7 +43777,7 @@ module.exports = { /***/ }), -/* 304 */ +/* 308 */ /***/ (function(module, exports) { module.exports = { @@ -43275,7 +43798,7 @@ module.exports = { /***/ }), -/* 305 */ +/* 309 */ /***/ (function(module, exports) { module.exports = { @@ -43298,7 +43821,7 @@ module.exports = { /***/ }), -/* 306 */ +/* 310 */ /***/ (function(module, exports) { module.exports = { @@ -43326,7 +43849,7 @@ module.exports = { /***/ }), -/* 307 */ +/* 311 */ /***/ (function(module, exports) { module.exports = { @@ -43344,7 +43867,7 @@ module.exports = { /***/ }), -/* 308 */ +/* 312 */ /***/ (function(module, exports) { module.exports = { @@ -43365,7 +43888,7 @@ module.exports = { /***/ }), -/* 309 */ +/* 313 */ /***/ (function(module, exports) { module.exports = { @@ -43386,7 +43909,7 @@ module.exports = { /***/ }), -/* 310 */ +/* 314 */ /***/ (function(module, exports) { module.exports = { @@ -43404,7 +43927,7 @@ module.exports = { /***/ }), -/* 311 */ +/* 315 */ /***/ (function(module, exports) { module.exports = { @@ -43421,7 +43944,7 @@ module.exports = { }; /***/ }), -/* 312 */ +/* 316 */ /***/ (function(module, exports) { module.exports = { @@ -43441,7 +43964,7 @@ module.exports = { /***/ }), -/* 313 */ +/* 317 */ /***/ (function(module, exports) { module.exports = { @@ -43469,7 +43992,7 @@ module.exports = { /***/ }), -/* 314 */ +/* 318 */ /***/ (function(module, exports) { module.exports = { @@ -43495,7 +44018,7 @@ module.exports = { /***/ }), -/* 315 */ +/* 319 */ /***/ (function(module, exports) { module.exports = { @@ -43518,7 +44041,7 @@ module.exports = { }; /***/ }), -/* 316 */ +/* 320 */ /***/ (function(module, exports) { module.exports = { @@ -43543,7 +44066,7 @@ module.exports = { /***/ }), -/* 317 */ +/* 321 */ /***/ (function(module, exports) { module.exports = { @@ -43572,7 +44095,7 @@ module.exports = { /***/ }), -/* 318 */ +/* 322 */ /***/ (function(module, exports) { module.exports = { @@ -43594,7 +44117,7 @@ module.exports = { /***/ }), -/* 319 */ +/* 323 */ /***/ (function(module, exports) { module.exports = { @@ -43621,7 +44144,7 @@ module.exports = { /***/ }), -/* 320 */ +/* 324 */ /***/ (function(module, exports) { module.exports = { @@ -43649,7 +44172,7 @@ module.exports = { /***/ }), -/* 321 */ +/* 325 */ /***/ (function(module, exports) { module.exports = { @@ -43675,7 +44198,7 @@ module.exports = { /***/ }), -/* 322 */ +/* 326 */ /***/ (function(module, exports) { module.exports = { @@ -43702,7 +44225,7 @@ module.exports = { /***/ }), -/* 323 */ +/* 327 */ /***/ (function(module, exports) { module.exports = { @@ -43728,7 +44251,7 @@ module.exports = { /***/ }), -/* 324 */ +/* 328 */ /***/ (function(module, exports) { module.exports = { @@ -43756,7 +44279,7 @@ module.exports = { /***/ }), -/* 325 */ +/* 329 */ /***/ (function(module, exports) { module.exports = { @@ -43777,7 +44300,7 @@ module.exports = { /***/ }), -/* 326 */ +/* 330 */ /***/ (function(module, exports) { module.exports = { @@ -43799,7 +44322,7 @@ module.exports = { /***/ }), -/* 327 */ +/* 331 */ /***/ (function(module, exports) { module.exports = { @@ -43820,7 +44343,7 @@ module.exports = { /***/ }), -/* 328 */ +/* 332 */ /***/ (function(module, exports) { module.exports = { @@ -43842,7 +44365,7 @@ module.exports = { /***/ }), -/* 329 */ +/* 333 */ /***/ (function(module, exports) { module.exports = { @@ -43864,7 +44387,7 @@ module.exports = { /***/ }), -/* 330 */ +/* 334 */ /***/ (function(module, exports) { module.exports = { @@ -43886,7 +44409,7 @@ module.exports = { /***/ }), -/* 331 */ +/* 335 */ /***/ (function(module, exports) { module.exports = { @@ -43907,7 +44430,7 @@ module.exports = { /***/ }), -/* 332 */ +/* 336 */ /***/ (function(module, exports) { module.exports = { @@ -43930,7 +44453,7 @@ module.exports = { /***/ }), -/* 333 */ +/* 337 */ /***/ (function(module, exports) { module.exports = { @@ -43952,7 +44475,7 @@ module.exports = { /***/ }), -/* 334 */ +/* 338 */ /***/ (function(module, exports) { module.exports = { @@ -43974,7 +44497,7 @@ module.exports = { /***/ }), -/* 335 */ +/* 339 */ /***/ (function(module, exports) { module.exports = { @@ -43994,7 +44517,7 @@ module.exports = { /***/ }), -/* 336 */ +/* 340 */ /***/ (function(module, exports) { module.exports = { @@ -44019,7 +44542,7 @@ module.exports = { /***/ }), -/* 337 */ +/* 341 */ /***/ (function(module, exports) { module.exports = { @@ -44053,7 +44576,7 @@ module.exports = { /***/ }), -/* 338 */ +/* 342 */ /***/ (function(module, exports) { module.exports = { @@ -44086,7 +44609,7 @@ module.exports = { /***/ }), -/* 339 */ +/* 343 */ /***/ (function(module, exports) { module.exports = { @@ -44115,7 +44638,7 @@ module.exports = { /***/ }), -/* 340 */ +/* 344 */ /***/ (function(module, exports) { module.exports = { @@ -44149,7 +44672,7 @@ module.exports = { /***/ }), -/* 341 */ +/* 345 */ /***/ (function(module, exports) { module.exports = { @@ -44180,7 +44703,7 @@ module.exports = { /***/ }), -/* 342 */ +/* 346 */ /***/ (function(module, exports) { module.exports = { @@ -44210,7 +44733,7 @@ module.exports = { /***/ }), -/* 343 */ +/* 347 */ /***/ (function(module, exports) { module.exports = { @@ -44241,7 +44764,7 @@ module.exports = { }; /***/ }), -/* 344 */ +/* 348 */ /***/ (function(module, exports) { module.exports = { @@ -44274,7 +44797,7 @@ module.exports = { /***/ }), -/* 345 */ +/* 349 */ /***/ (function(module, exports) { module.exports = { @@ -44304,7 +44827,7 @@ module.exports = { /***/ }), -/* 346 */ +/* 350 */ /***/ (function(module, exports) { module.exports = { @@ -44337,7 +44860,7 @@ module.exports = { /***/ }), -/* 347 */ +/* 351 */ /***/ (function(module, exports) { module.exports = { @@ -44360,7 +44883,7 @@ module.exports = { /***/ }), -/* 348 */ +/* 352 */ /***/ (function(module, exports) { module.exports = { @@ -44381,7 +44904,7 @@ module.exports = { }; /***/ }), -/* 349 */ +/* 353 */ /***/ (function(module, exports) { module.exports = { @@ -44404,7 +44927,7 @@ module.exports = { /***/ }), -/* 350 */ +/* 354 */ /***/ (function(module, exports) { module.exports = { @@ -44425,7 +44948,7 @@ module.exports = { }; /***/ }), -/* 351 */ +/* 355 */ /***/ (function(module, exports) { module.exports = { @@ -44449,7 +44972,7 @@ module.exports = { /***/ }), -/* 352 */ +/* 356 */ /***/ (function(module, exports) { module.exports = { @@ -44470,7 +44993,7 @@ module.exports = { /***/ }), -/* 353 */ +/* 357 */ /***/ (function(module, exports) { module.exports = { @@ -44494,7 +45017,7 @@ module.exports = { /***/ }), -/* 354 */ +/* 358 */ /***/ (function(module, exports) { module.exports = { @@ -44515,7 +45038,7 @@ module.exports = { /***/ }), -/* 355 */ +/* 359 */ /***/ (function(module, exports) { module.exports = { @@ -44538,7 +45061,7 @@ module.exports = { /***/ }), -/* 356 */ +/* 360 */ /***/ (function(module, exports) { module.exports = { @@ -44559,7 +45082,7 @@ module.exports = { /***/ }), -/* 357 */ +/* 361 */ /***/ (function(module, exports) { module.exports = { @@ -44582,7 +45105,7 @@ module.exports = { /***/ }), -/* 358 */ +/* 362 */ /***/ (function(module, exports) { module.exports = { @@ -44603,7 +45126,7 @@ module.exports = { /***/ }), -/* 359 */ +/* 363 */ /***/ (function(module, exports) { module.exports = { @@ -44630,7 +45153,7 @@ module.exports = { /***/ }), -/* 360 */ +/* 364 */ /***/ (function(module, exports) { module.exports = { @@ -44656,7 +45179,7 @@ module.exports = { /***/ }), -/* 361 */ +/* 365 */ /***/ (function(module, exports) { module.exports = { @@ -44678,7 +45201,7 @@ module.exports = { /***/ }), -/* 362 */ +/* 366 */ /***/ (function(module, exports) { module.exports = { @@ -44701,7 +45224,7 @@ module.exports = { /***/ }), -/* 363 */ +/* 367 */ /***/ (function(module, exports) { module.exports = { @@ -44724,7 +45247,7 @@ module.exports = { /***/ }), -/* 364 */ +/* 368 */ /***/ (function(module, exports) { module.exports = { @@ -44747,7 +45270,7 @@ module.exports = { /***/ }), -/* 365 */ +/* 369 */ /***/ (function(module, exports) { module.exports = { @@ -44770,7 +45293,7 @@ module.exports = { /***/ }), -/* 366 */ +/* 370 */ /***/ (function(module, exports) { module.exports = { @@ -44793,7 +45316,7 @@ module.exports = { /***/ }), -/* 367 */ +/* 371 */ /***/ (function(module, exports) { module.exports = { @@ -44816,7 +45339,7 @@ module.exports = { /***/ }), -/* 368 */ +/* 372 */ /***/ (function(module, exports) { module.exports = { @@ -44842,7 +45365,7 @@ module.exports = { /***/ }), -/* 369 */ +/* 373 */ /***/ (function(module, exports) { module.exports = { @@ -44863,7 +45386,7 @@ module.exports = { /***/ }), -/* 370 */ +/* 374 */ /***/ (function(module, exports) { module.exports = { @@ -44888,7 +45411,7 @@ module.exports = { /***/ }), -/* 371 */ +/* 375 */ /***/ (function(module, exports) { module.exports = { @@ -44910,7 +45433,7 @@ module.exports = { /***/ }), -/* 372 */ +/* 376 */ /***/ (function(module, exports) { module.exports = { @@ -44931,7 +45454,7 @@ module.exports = { /***/ }), -/* 373 */ +/* 377 */ /***/ (function(module, exports) { module.exports = { @@ -44953,7 +45476,7 @@ module.exports = { /***/ }), -/* 374 */ +/* 378 */ /***/ (function(module, exports) { module.exports = { @@ -44975,7 +45498,7 @@ module.exports = { /***/ }), -/* 375 */ +/* 379 */ /***/ (function(module, exports) { module.exports = { @@ -44996,7 +45519,7 @@ module.exports = { /***/ }), -/* 376 */ +/* 380 */ /***/ (function(module, exports) { module.exports = { @@ -45016,7 +45539,7 @@ module.exports = { /***/ }), -/* 377 */ +/* 381 */ /***/ (function(module, exports) { module.exports = { @@ -45037,7 +45560,7 @@ module.exports = { /***/ }), -/* 378 */ +/* 382 */ /***/ (function(module, exports) { module.exports = { @@ -45062,7 +45585,7 @@ module.exports = { /***/ }), -/* 379 */ +/* 383 */ /***/ (function(module, exports) { module.exports = { @@ -45083,7 +45606,7 @@ module.exports = { /***/ }), -/* 380 */ +/* 384 */ /***/ (function(module, exports) { module.exports = { @@ -45102,7 +45625,7 @@ module.exports = { }; /***/ }), -/* 381 */ +/* 385 */ /***/ (function(module, exports) { module.exports = { @@ -45123,7 +45646,7 @@ module.exports = { /***/ }), -/* 382 */ +/* 386 */ /***/ (function(module, exports) { module.exports = { @@ -45144,20 +45667,20 @@ module.exports = { /***/ }), -/* 383 */ +/* 387 */ /***/ (function(module, exports, __webpack_require__) { module.exports = [ - __webpack_require__(384), - __webpack_require__(386), - __webpack_require__(387), __webpack_require__(388), - __webpack_require__(110) + __webpack_require__(390), + __webpack_require__(391), + __webpack_require__(111), + __webpack_require__(112) ]; /***/ }), -/* 384 */ +/* 388 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -45166,7 +45689,7 @@ module.exports = [ var deepMap = __webpack_require__(1); function factory (type, config, load, typed) { - var parse = load(__webpack_require__(39)); + var parse = load(__webpack_require__(40)); /** * Parse and compile an expression. @@ -45220,7 +45743,7 @@ exports.factory = factory; /***/ }), -/* 385 */ +/* 389 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -45280,7 +45803,7 @@ exports.factory = factory; /***/ }), -/* 386 */ +/* 390 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -45289,7 +45812,7 @@ exports.factory = factory; var deepMap = __webpack_require__(1); function factory (type, config, load, typed) { - var parse = load(__webpack_require__(39)); + var parse = load(__webpack_require__(40)); /** * Evaluate an expression. @@ -45352,7 +45875,7 @@ exports.name = 'eval'; exports.factory = factory; /***/ }), -/* 387 */ +/* 391 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -45361,7 +45884,7 @@ exports.factory = factory; var getSafeProperty = __webpack_require__(13).getSafeProperty; function factory (type, config, load, typed, math) { - var docs = load(__webpack_require__(99)); + var docs = load(__webpack_require__(100)); /** * Retrieve help on a function or data type. @@ -45425,90 +45948,31 @@ exports.factory = factory; /***/ }), -/* 388 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -function factory (type, config, load, typed) { - var parse = load(__webpack_require__(39)); - - /** - * Parse an expression. Returns a node tree, which can be evaluated by - * invoking node.eval(); - * - * Note the evaluating arbitrary expressions may involve security risks, - * see [http://mathjs.org/docs/expressions/security.html](http://mathjs.org/docs/expressions/security.html) for more information. - * - * Syntax: - * - * math.parse(expr) - * math.parse(expr, options) - * math.parse([expr1, expr2, expr3, ...]) - * math.parse([expr1, expr2, expr3, ...], options) - * - * Example: - * - * var node = math.parse('sqrt(3^2 + 4^2)'); - * node.compile().eval(); // 5 - * - * var scope = {a:3, b:4} - * var node = math.parse('a * b'); // 12 - * var code = node.compile(); - * code.eval(scope); // 12 - * scope.a = 5; - * code.eval(scope); // 20 - * - * var nodes = math.parse(['a = 3', 'b = 4', 'a * b']); - * nodes[2].compile().eval(); // 12 - * - * See also: - * - * eval, compile - * - * @param {string | string[] | Matrix} expr Expression to be parsed - * @param {{nodes: Object}} [options] Available options: - * - `nodes` a set of custom nodes - * @return {Node | Node[]} node - * @throws {Error} - */ - return typed('parse', { - 'string | Array | Matrix': parse, - 'string | Array | Matrix, Object': parse - }); -} - -exports.name = 'parse'; -exports.factory = factory; - - -/***/ }), -/* 389 */ +/* 392 */ /***/ (function(module, exports, __webpack_require__) { module.exports = [ - __webpack_require__(102), + __webpack_require__(103), __webpack_require__(80), - __webpack_require__(104), __webpack_require__(105), __webpack_require__(106), - __webpack_require__(53), - __webpack_require__(78), __webpack_require__(107), - __webpack_require__(54), + __webpack_require__(47), + __webpack_require__(78), + __webpack_require__(108), + __webpack_require__(55), __webpack_require__(14), - __webpack_require__(109), - __webpack_require__(62), + __webpack_require__(110), + __webpack_require__(54), __webpack_require__(63), __webpack_require__(79), - __webpack_require__(40), - __webpack_require__(390) + __webpack_require__(35), + __webpack_require__(393) ]; /***/ }), -/* 390 */ +/* 393 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -45532,25 +45996,25 @@ exports.factory = factory; /***/ }), -/* 391 */ +/* 394 */ /***/ (function(module, exports, __webpack_require__) { module.exports = [ - __webpack_require__(392), - __webpack_require__(393), - __webpack_require__(394), __webpack_require__(395), __webpack_require__(396), __webpack_require__(397), __webpack_require__(398), __webpack_require__(399), __webpack_require__(400), - __webpack_require__(401) + __webpack_require__(401), + __webpack_require__(402), + __webpack_require__(403), + __webpack_require__(404) ]; /***/ }), -/* 392 */ +/* 395 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -45597,7 +46061,7 @@ exports.factory = factory; /***/ }), -/* 393 */ +/* 396 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -45694,7 +46158,7 @@ exports.factory = factory; /***/ }), -/* 394 */ +/* 397 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -45773,7 +46237,7 @@ exports.factory = factory; /***/ }), -/* 395 */ +/* 398 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -45831,7 +46295,7 @@ exports.factory = factory; /***/ }), -/* 396 */ +/* 399 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -45928,14 +46392,14 @@ exports.factory = factory; /***/ }), -/* 397 */ +/* 400 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var errorTransform = __webpack_require__(41).transform; -var isCollection = __webpack_require__(46); +var isCollection = __webpack_require__(48); /** * Attach a transform function to math.max @@ -45945,7 +46409,7 @@ var isCollection = __webpack_require__(46); * from one-based to zero based */ function factory (type, config, load, typed) { - var max = load(__webpack_require__(112)); + var max = load(__webpack_require__(114)); return typed('max', { '...any': function (args) { @@ -45976,14 +46440,14 @@ exports.factory = factory; /***/ }), -/* 398 */ +/* 401 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var errorTransform = __webpack_require__(41).transform; -var isCollection = __webpack_require__(46); +var isCollection = __webpack_require__(48); /** * Attach a transform function to math.mean @@ -45993,7 +46457,7 @@ var isCollection = __webpack_require__(46); * from one-based to zero based */ function factory (type, config, load, typed) { - var mean = load(__webpack_require__(113)); + var mean = load(__webpack_require__(115)); return typed('mean', { '...any': function (args) { @@ -46024,14 +46488,14 @@ exports.factory = factory; /***/ }), -/* 399 */ +/* 402 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var errorTransform = __webpack_require__(41).transform; -var isCollection = __webpack_require__(46); +var isCollection = __webpack_require__(48); /** * Attach a transform function to math.min @@ -46041,7 +46505,7 @@ var isCollection = __webpack_require__(46); * from one-based to zero based */ function factory (type, config, load, typed) { - var min = load(__webpack_require__(116)); + var min = load(__webpack_require__(118)); return typed('min', { '...any': function (args) { @@ -46072,7 +46536,7 @@ exports.factory = factory; /***/ }), -/* 400 */ +/* 403 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -46085,7 +46549,7 @@ exports.factory = factory; * This transform creates a range which includes the end value */ function factory (type, config, load, typed) { - var range = load(__webpack_require__(117)); + var range = load(__webpack_require__(119)); return typed('range', { '...any': function (args) { @@ -46107,7 +46571,7 @@ exports.factory = factory; /***/ }), -/* 401 */ +/* 404 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -46142,7 +46606,7 @@ exports.factory = factory; /***/ }), -/* 402 */ +/* 405 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -46152,7 +46616,7 @@ var object = __webpack_require__(5); var string = __webpack_require__(9); function factory (type, config, load, typed) { - var parser = load(__webpack_require__(110))(); + var parser = load(__webpack_require__(112))(); /** * Documentation object @@ -46267,67 +46731,71 @@ exports.factory = factory; /***/ }), -/* 403 */ +/* 406 */ /***/ (function(module, exports, __webpack_require__) { module.exports = [ - __webpack_require__(404), - __webpack_require__(425), - __webpack_require__(444), - __webpack_require__(457), - __webpack_require__(461), - __webpack_require__(465), - __webpack_require__(468), - __webpack_require__(472), - __webpack_require__(485), - __webpack_require__(495), - __webpack_require__(498), - __webpack_require__(506), + __webpack_require__(407), + __webpack_require__(427), + __webpack_require__(446), + __webpack_require__(459), + __webpack_require__(463), + __webpack_require__(467), + __webpack_require__(470), + __webpack_require__(474), + __webpack_require__(487), + __webpack_require__(497), + __webpack_require__(500), __webpack_require__(508), - __webpack_require__(514), + __webpack_require__(510), __webpack_require__(516), - __webpack_require__(541), - __webpack_require__(543) + __webpack_require__(518), + __webpack_require__(543), + __webpack_require__(545) ]; /***/ }), -/* 404 */ +/* 407 */ /***/ (function(module, exports, __webpack_require__) { module.exports = [ - __webpack_require__(405), + __webpack_require__(408), // simplify - __webpack_require__(118), + __webpack_require__(82), + // polynomial + __webpack_require__(410), + + // decomposition - __webpack_require__(409), - __webpack_require__(124), - __webpack_require__(125), + __webpack_require__(411), + __webpack_require__(127), + __webpack_require__(128), // solver - __webpack_require__(130), - __webpack_require__(423), - __webpack_require__(131) + __webpack_require__(133), + __webpack_require__(425), + __webpack_require__(134) ]; /***/ }), -/* 405 */ +/* 408 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; function factory (type, config, load, typed) { - var parse = load(__webpack_require__(39)); - var simplify = load(__webpack_require__(118)); - var ConstantNode = load(__webpack_require__(53)); - var FunctionNode = load(__webpack_require__(54)); - var OperatorNode = load(__webpack_require__(62)); + var parse = load(__webpack_require__(40)); + var simplify = load(__webpack_require__(82)); + var ConstantNode = load(__webpack_require__(47)); + var FunctionNode = load(__webpack_require__(55)); + var OperatorNode = load(__webpack_require__(54)); var ParenthesisNode = load(__webpack_require__(63)); - var SymbolNode = load(__webpack_require__(40)); + var SymbolNode = load(__webpack_require__(35)); /** * Takes the derivative of an expression expressed in parser Nodes. @@ -47042,423 +47510,7 @@ exports.factory = factory; /***/ }), -/* 406 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var digits = __webpack_require__(3).digits; -// TODO this could be improved by simplifying seperated constants under associative and commutative operators -function factory(type, config, load, typed, math) { - var util = load(__webpack_require__(119)); - var isCommutative = util.isCommutative; - var isAssociative = util.isAssociative; - var allChildren = util.allChildren; - var createMakeNodeFunction = util.createMakeNodeFunction; - var ConstantNode = math.expression.node.ConstantNode; - var OperatorNode = math.expression.node.OperatorNode; - - function simplifyConstant(expr) { - var res = foldFraction(expr); - return type.isNode(res) ? res : _toNode(res); - } - - function _eval(fnname, args) { - try { - return _toNumber(math[fnname].apply(null, args)); - } - catch (ignore) { - // sometimes the implicit type conversion causes the evaluation to fail, so we'll try again after removing Fractions - args = args.map(function(x){ - if (type.isFraction(x)) { - return x.valueOf(); - } - return x; - }); - return _toNumber(math[fnname].apply(null, args)); - } - } - - var _toNode = typed({ - 'Fraction': _fractionToNode, - 'number': function(n) { - if (n < 0) { - return unaryMinusNode(new ConstantNode(-n)); - } - return new ConstantNode(n); - }, - 'BigNumber': function(n) { - if (n < 0) { - return unaryMinusNode(new ConstantNode(n.negated().toString(), 'number')); - } - return new ConstantNode(n.toString(), 'number'); - }, - 'Complex': function(s) { - throw 'Cannot convert Complex number to Node'; - } - }); - - // convert a number to a fraction only if it can be expressed exactly - function _exactFraction(n) { - if (isFinite(n)) { - var f = math.fraction(n); - if (f.valueOf() === n) { - return f; - } - } - return n; - } - - // Convert numbers to a preferred number type in preference order: Fraction, number, Complex - // BigNumbers are left alone - var _toNumber = typed({ - 'string': function(s) { - if (config.number === 'BigNumber') { - return math.bignumber(s); - } - else if (config.number === 'Fraction') { - return math.fraction(s); - } - else { - return _exactFraction(parseFloat(s)); - } - }, - - 'Fraction': function(s) { return s; }, - - 'BigNumber': function(s) { return s; }, - - 'number': function(s) { - return _exactFraction(s); - }, - - 'Complex': function(s) { - if (s.im !== 0) { - return s; - } - return _exactFraction(s.re); - }, - }); - - function unaryMinusNode(n) { - return new OperatorNode('-', 'unaryMinus', [n]); - } - - function _fractionToNode(f) { - var n; - var vn = f.s*f.n; - if (vn < 0) { - n = new OperatorNode('-', 'unaryMinus', [new ConstantNode(-vn)]) - } - else { - n = new ConstantNode(vn); - } - - if (f.d === 1) { - return n; - } - return new OperatorNode('/', 'divide', [n, new ConstantNode(f.d)]); - } - - /* - * Create a binary tree from a list of Fractions and Nodes. - * Tries to fold Fractions by evaluating them until the first Node in the list is hit, so - * `args` should be sorted to have the Fractions at the start (if the operator is commutative). - * @param args - list of Fractions and Nodes - * @param fn - evaluator for the binary operation evaluator that accepts two Fractions - * @param makeNode - creates a binary OperatorNode/FunctionNode from a list of child Nodes - * if args.length is 1, returns args[0] - * @return - Either a Node representing a binary expression or Fraction - */ - function foldOp(fn, args, makeNode) { - return args.reduce(function(a, b) { - if (!type.isNode(a) && !type.isNode(b)) { - try { - return _eval(fn, [a,b]); - } - catch (ignoreandcontinue) {} - a = _toNode(a); - b = _toNode(b); - } - else if (!type.isNode(a)) { - a = _toNode(a); - } - else if (!type.isNode(b)) { - b = _toNode(b); - } - - return makeNode([a, b]); - }); - } - - // destroys the original node and returns a folded one - function foldFraction(node) { - switch(node.type) { - case 'SymbolNode': - return node; - case 'ConstantNode': - if (node.valueType === 'number') { - return _toNumber(node.value); - } - return node; - case 'FunctionNode': - if (math[node.name] && math[node.name].rawArgs) { - return node; - } - /* falls through */ - case 'OperatorNode': - var fn = node.fn.toString(); - var args; - var res; - var makeNode = createMakeNodeFunction(node); - if (node.args.length === 1) { - args = [foldFraction(node.args[0])]; - if (!type.isNode(args[0])) { - res = _eval(fn, args); - } - else { - res = makeNode(args); - } - } - else if (isAssociative(node)) { - args = allChildren(node); - args = args.map(foldFraction); - - if (isCommutative(fn)) { - // commutative binary operator - var consts = [], vars = []; - - for (var i=0; i < args.length; i++) { - if (!type.isNode(args[i])) { - consts.push(args[i]); - } - else { - vars.push(args[i]); - } - } - - if (consts.length > 1) { - res = foldOp(fn, consts, makeNode); - vars.unshift(res); - res = foldOp(fn, vars, makeNode); - } - else { - // we won't change the children order since it's not neccessary - res = foldOp(fn, args, makeNode); - } - } - else { - // non-commutative binary operator - res = foldOp(fn, args, makeNode); - } - } - else { - // non-associative binary operator - args = node.args.map(foldFraction); - res = foldOp(fn, args, makeNode); - } - return res; - case 'ParenthesisNode': - // remove the uneccessary parenthesis - return foldFraction(node.content); - case 'AccessorNode': - /* falls through */ - case 'ArrayNode': - /* falls through */ - case 'AssignmentNode': - /* falls through */ - case 'BlockNode': - /* falls through */ - case 'FunctionAssignmentNode': - /* falls through */ - case 'IndexNode': - /* falls through */ - case 'ObjectNode': - /* falls through */ - case 'RangeNode': - /* falls through */ - case 'UpdateNode': - /* falls through */ - case 'ConditionalNode': - /* falls through */ - default: - throw 'Unimplemented node type in simplifyConstant: '+node.type; - } - } - - return simplifyConstant; -} - -exports.math = true; -exports.name = 'simplifyConstant'; -exports.path = 'algebra.simplify'; -exports.factory = factory; - - -/***/ }), -/* 407 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -function factory(type, config, load, typed, math) { - var ConstantNode = math.expression.node.ConstantNode; - var OperatorNode = math.expression.node.OperatorNode; - var FunctionNode = math.expression.node.FunctionNode; - - var node0 = new ConstantNode(0); - var node1 = new ConstantNode(1); - - /** - * simplifyCore() performs single pass simplification suitable for - * applications requiring ultimate performance. In contrast, simplify() - * extends simplifyCore() with additional passes to provide deeper - * simplification. - * - * Syntax: - * - * simplify.simpifyCore(expr) - * - * Examples: - * - * var f = math.parse('2 * 1 * x ^ (2 - 1)'); - * math.simplify.simpifyCore(f); // Node {2 * x} - * math.simplify('2 * 1 * x ^ (2 - 1)', [math.simplify.simpifyCore]); // Node {2 * x}; - * - * See also: - * - * derivative - * - * @param {Node} node - * The expression to be simplified - */ - function simplifyCore(node) { - if (type.isOperatorNode(node) && node.args.length <= 2) { - var a0 = simplifyCore(node.args[0]); - var a1 = node.args[1] && simplifyCore(node.args[1]); - if (node.op === "+") { - if (node.args.length === 1) { - return node.args[0]; - } - if (type.isConstantNode(a0)) { - if (a0.value === "0") { - return a1; - } else if (type.isConstantNode(a1) && a0.value && a0.value.length < 5 && a1.value && a1.value.length < 5) { - return new ConstantNode(Number(a0.value) + Number(a1.value)); - } - } - if (type.isConstantNode(a1) && a1.value === "0") { - return a0; - } - if (node.args.length === 2 && type.isOperatorNode(a1) && a1.op === '-' && a1.fn === 'unaryMinus') { - return new OperatorNode('-', 'subtract', [a0,a1.args[0]]); - } - return new OperatorNode(node.op, node.fn, a1 ? [a0,a1] : [a0]); - } else if (node.op === "-") { - if (type.isConstantNode(a0) && a1) { - if (type.isConstantNode(a1) && a0.value && a0.value.length < 5 && a1.value && a1.value.length < 5) { - return new ConstantNode(Number(a0.value) - Number(a1.value)); - } else if (a0.value === "0") { - return new OperatorNode("-", "unaryMinus", [a1]); - } - } - if (node.fn === "subtract" && node.args.length === 2) { - if (type.isConstantNode(a1) && a1.value === "0") { - return a0; - } - if (type.isOperatorNode(a1) && a1.fn === "unaryMinus") { - return simplifyCore(new OperatorNode("+", "add", [a0, a1.args[0]])); - } - return new OperatorNode(node.op, node.fn, [a0,a1]); - } else if (node.fn === "unaryMinus") { - if (type.isOperatorNode(a0)) { - if (a0.fn === 'unaryMinus') { - return a0.args[0]; - } - } - return new OperatorNode(node.op, node.fn, [a0]); - } - throw new Error('never happens'); - } else if (node.op === "*") { - if (type.isConstantNode(a0)) { - if (a0.value === "0") { - return node0; - } else if (a0.value === "1") { - return a1; - } else if (type.isConstantNode(a1) && a0.value && a0.value.length < 5 && a1.value && a1.value.length < 5) { - return new ConstantNode(Number(a0.value) * Number(a1.value)); - } - } - if (type.isConstantNode(a1)) { - if (a1.value === "0") { - return node0; - } else if (a1.value === "1") { - return a0; - } else if (type.isOperatorNode(a0) && a0.op === node.op) { - var a00 = a0.args[0]; - if (type.isConstantNode(a00) && a1.value && a1.value.length < 5 && a00.value && a00.value.length < 5) { - var a00_a1 = new ConstantNode(Number(a0.args[0].value) * Number(a1.value)); - return new OperatorNode(node.op, node.fn, [a00_a1, a0.args[1]]); // constants on left - } - } - return new OperatorNode(node.op, node.fn, [a1, a0]); // constants on left - } - return new OperatorNode(node.op, node.fn, [a0, a1]); - } else if (node.op === "/") { - if (type.isConstantNode(a0)) { - if (a0.value === "0") { - return node0; - } else if (type.isConstantNode(a1) && a0.value && a0.value.length < 5 && (a1.value === "1" || a1.value==="2" || a1.value==="4")) { - return new ConstantNode(Number(a0.value) / Number(a1.value)); - } - } - return new OperatorNode(node.op, node.fn, [a0, a1]); - } else if (node.op === "^") { - if (type.isConstantNode(a1)) { - if (a1.value === "0") { - return node1; - } else if (a1.value === "1") { - return a0; - } else if (type.isConstantNode(a1) && a0.value && a0.value.length < 5 && a1.value && a1.value.length < 2) { // fold constant - return new ConstantNode( - math.pow(Number(a0.value), Number(a1.value))); - } - } - return new OperatorNode(node.op, node.fn, [a0, a1]); - } - } else if (type.isParenthesisNode(node)) { - var c = simplifyCore(node.content); - if (type.isParenthesisNode(c) || type.isSymbolNode(c) || type.isConstantNode(c)) { - return c; - } - return new ParenthesisNode(c); - } else if (type.isFunctionNode(node)) { - var args = node.args.map(simplifyCore); - if (args.length === 1) { - if (type.isParenthesisNode(args[0])) { - args[0] = args[0].content; - } - } - return new FunctionNode(simplifyCore(node.fn), args); - } else { - // cannot simplify - } - return node; - } - - return simplifyCore; -} - -exports.math = true; -exports.name = 'simplifyCore'; -exports.path = 'algebra.simplify'; -exports.factory = factory; - - -/***/ }), -/* 408 */ +/* 409 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -47524,7 +47576,620 @@ exports.factory = factory; /***/ }), -/* 409 */ +/* 410 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function factory (type, config, load, typed) { + var simplify = load(__webpack_require__(82)); + var simplifyCore = load(__webpack_require__(122)); + var simplifyConstant = load(__webpack_require__(120)); + var ArgumentsError = __webpack_require__(43); + var parse = load(__webpack_require__(111)); + var number = __webpack_require__(3) + var ConstantNode = load(__webpack_require__(47)); + var OperatorNode = load(__webpack_require__(54)); + var SymbolNode = load(__webpack_require__(35)); + + /** + * Transform a rationalizable expression in a rational fraction. + * If rational fraction is one variable polynomial then converts + * the numerator and denominator in canonical form, with decreasing + * exponents, returning the coefficients of numerator. + * + * Syntax: + * + * rationalize(expr) + * rationalize(expr, detailed) + * rationalize(expr, scope) + * rationalize(expr, scope, detailed) + * + * Examples: + * + * math.rationalize('sin(x)+y') // Error: There is an unsolved function call + * math.rationalize('2x/y - y/(x+1)') // (2*x^2-y^2+2*x)/(x*y+y) + * math.rationalize('(2x+1)^6') + * // 64*x^6+192*x^5+240*x^4+160*x^3+60*x^2+12*x+1 + * math.rationalize('2x/( (2x-1) / (3x+2) ) - 5x/ ( (3x+4) / (2x^2-5) ) + 3') + * // -20*x^4+28*x^3+104*x^2+6*x-12)/(6*x^2+5*x-4) + * math.rationalize('x/(1-x)/(x-2)/(x-3)/(x-4) + 2x/ ( (1-2x)/(2-3x) )/ ((3-4x)/(4-5x) )') = + * // (-30*x^7+344*x^6-1506*x^5+3200*x^4-3472*x^3+1846*x^2-381*x)/ + * // (-8*x^6+90*x^5-383*x^4+780*x^3-797*x^2+390*x-72) + * + * math.rationalize('x+x+x+y',{y:1}) // 3*x+1 + * math.rationalize('x+x+x+y',{}) // 3*x+y + * ret = math.rationalize('x+x+x+y',{},true) + * // ret.expression=3*x+y, ret.variables = ["x","y"] + * ret = math.rationalize('-2+5x^2',{},true) + * // ret.expression=5*x^2-2, ret.variables = ["x"], ret.coefficients=[-2,0,5] + * + * See also: + * + * simplify + * + * @param {Node|string} expr The expression to check if is a polynomial expression + * @param {Object|boolean} optional scope of expression or true for already evaluated rational expression at input + * @param {Boolean} detailed optional True if return an object, false if return expression node (default) + * + * @return {Object | Expression Node} The rational polynomial of `expr` or na object + * {Object} + * {Expression Node} expression: node simplified expression + * {Expression Node} numerator: simplified numerator of expression + * {Expression Node | boolean} denominator: simplified denominator or false (if there is no denominator) + * {Array} variables: variable names + * {Array} coefficients: coefficients of numerator sorted by increased exponent + * {Expression Node} node simplified expression + * + */ + var rationalize = typed('rationalize', { + 'string': function (expr) { + return rationalize(parse(expr), {}, false); + }, + + 'string, boolean': function (expr, detailed) { + return rationalize(parse(expr), {} , detailed); + }, + + 'string, Object': function (expr, scope) { + return rationalize(parse(expr), scope, false); + }, + + 'string, Object, boolean': function (expr, scope, detailed) { + return rationalize(parse(expr), scope, detailed); + }, + + 'Node': function (expr) { + return rationalize(expr, {}, false); + }, + + 'Node, boolean': function (expr, detailed) { + return rationalize(expr, {}, detailed); + }, + + 'Node, Object': function (expr, scope) { + return rationalize(expr, scope, false); + }, + + 'Node, Object, boolean': function (expr, scope, detailed) { + + var polyRet = polynomial(expr, scope, true) // Check if expression is a rationalizable polynomial + var nVars = polyRet.variables.length; + var expr = polyRet.expression; + + if (nVars>=1) { // If expression in not a constant + var setRules = rulesRationalize(); // Rules for change polynomial in near canonical form + expr = expandPower(expr); // First expand power of polynomials (cannot be made from rules!) + var redoInic = true; // If has change after start, redo the beginning + var s = ""; // New expression + var sBefore; // Previous expression + var rules; + var eDistrDiv = true + + expr = simplify(expr, setRules.firstRules); // Apply the initial rules, including succ div rules + s = expr.toString(); + + + while (true) { // Apply alternately successive division rules and distr.div.rules + rules = eDistrDiv ? setRules.distrDivRules : setRules.sucDivRules + expr = simplify(expr,rules); // until no more changes + eDistrDiv = ! eDistrDiv; // Swap between Distr.Div and Succ. Div. Rules + + s = expr.toString(); + if (s===sBefore) break // No changes : end of the loop + + redoInic = true; + sBefore = s; + } + + if (redoInic) { // Apply first rules again without succ div rules (if there are changes) + expr = simplify(expr,setRules.firstRulesAgain); + } + expr = simplify(expr,setRules.finalRules); // Aplly final rules + + } // NVars >= 1 + + var coefficients=[]; + var retRationalize = {}; + + if (expr.type==='OperatorNode' && expr.op==='/') { // Separate numerator from denominator + if (nVars==1) { + expr.args[0] = polyToCanonical(expr.args[0],coefficients); + expr.args[1] = polyToCanonical(expr.args[1]); + } + if (detailed) { + retRationalize.numerator = expr.args[0]; + retRationalize.denominator = expr.args[1]; + } + } else { + if (nVars==1) expr = polyToCanonical(expr,coefficients); + if (detailed) { + retRationalize.numerator = expr; + retRationalize.denominator = null + } + } + // nVars + + if (! detailed) return expr; + retRationalize.coefficients = coefficients; + retRationalize.variables = polyRet.variables; + retRationalize.expression = expr; + return retRationalize; + } // ^^^^^^^ end of rationalize ^^^^^^^^ + }); // end of typed rationalize + + /** + * Function to simplify an expression using an optional scope and + * return it if the expression is a polynomial expression, i.e. + * an expression with one or more variables and the operators + * +, -, *, and ^, where the exponent can only be a positive integer. + * + * Syntax: + * + * polynomial(expr,scope,extended) + * + * @param {Node | string} expr The expression to simplify and check if is polynomial expression + * @param {object} scope Optional scope for expression simplification + * @param {boolean} extended Optional. Default is false. When true allows divide operator. + * + * + * @return {Object} + * {Object} node: node simplified expression + * {Array} variables: variable names + */ + function polynomial (expr, scope, extended) { + var variables = []; + var node = simplify(expr,scope); // Resolves any variables and functions with all defined parameters + extended = !! extended + + var oper = '+-*' + (extended ? '/' : ''); + recPoly(node) + var retFunc ={}; + retFunc.expression = node; + retFunc.variables = variables; + return retFunc; + + //------------------------------------------------------------------------------------------------------- + + /** + * Function to simplify an expression using an optional scope and + * return it if the expression is a polynomial expression, i.e. + * an expression with one or more variables and the operators + * +, -, *, and ^, where the exponent can only be a positive integer. + * + * Syntax: + * + * recPoly(node) + * + * + * @param {Node} node The current sub tree expression in recursion + * + * @return nothing, throw an exception if error + */ + function recPoly(node) { + var tp = node.type; // node type + if (tp==='FunctionNode') + throw new ArgumentsError('There is an unsolved function call') // No function call in polynomial expression + else if (tp==='OperatorNode') { + if (node.op==='^') { + if (node.args[1].type!=='ConstantNode' || ! number.isInteger(parseFloat(node.args[1].value))) + throw new ArgumentsError('There is a non-integer exponent'); + else + recPoly(node.args[0]); + } else { + if (oper.indexOf(node.op) === -1) throw new ArgumentsError('Operator ' + node.op + ' invalid in polynomial expression'); + for (var i=0;i infinite loop + // setRules.allRules =oldRules.concat(rulesFirst,rulesDistrDiv,rulesSucDiv); + + setRules.firstRules =oldRules.concat(rulesFirst,rulesSucDiv); // First rule set + setRules.distrDivRules = rulesDistrDiv; // Just distr. div. rules + setRules.sucDivRules = rulesSucDiv; // Jus succ. div. rules + setRules.firstRulesAgain = oldRules.concat(rulesFirst); // Last rules set without succ. div. + + // Division simplification + + // Second rule set. + // There is no aggregate expression with parentesis, but the only variable can be scattered. + setRules.finalRules=[ simplifyCore, // simplify.rules[0] + { l: 'n*-n', r: '-n^2' }, // Joining multiply with power 1 + { l: 'n*n', r: 'n^2' }, // Joining multiply with power 2 + simplifyConstant, // simplify.rules[14] old 3rd index in oldRules + { l: 'n*-n^n1', r: '-n^(n1+1)' }, // Joining multiply with power 3 + { l: 'n*n^n1', r: 'n^(n1+1)' }, // Joining multiply with power 4 + { l: 'n^n1*-n^n2', r: '-n^(n1+n2)' }, // Joining multiply with power 5 + { l: 'n^n1*n^n2', r: 'n^(n1+n2)' }, // Joining multiply with power 6 + { l: 'n^n1*-n', r: '-n^(n1+1)' }, // Joining multiply with power 7 + { l: 'n^n1*n', r: 'n^(n1+1)' }, // Joining multiply with power 8 + { l: 'n^n1/-n', r: '-n^(n1-1)' }, // Joining multiply with power 8 + { l: 'n^n1/n', r: 'n^(n1-1)' }, // Joining division with power 1 + { l: 'n/-n^n1', r: '-n^(1-n1)' }, // Joining division with power 2 + { l: 'n/n^n1', r: 'n^(1-n1)' }, // Joining division with power 3 + { l: 'n^n1/-n^n2', r: 'n^(n1-n2)' }, // Joining division with power 4 + { l: 'n^n1/n^n2', r: 'n^(n1-n2)' }, // Joining division with power 5 + { l: 'n1+(-n2*n3)', r: 'n1-n2*n3' }, // Solving useless parenthesis 1 + { l: 'v*(-c)', r: '-c*v' }, // Solving useless unary 2 + { l: 'n1+-n2', r: 'n1-n2' }, // Solving +- together (new!) + { l: 'v*c', r: 'c*v' }, // inversion constant with variable + { l: '(n1^n2)^n3', r:'(n1^(n2*n3))'}, // Power to Power + + ]; + return setRules; + } // End rulesRationalize + + //--------------------------------------------------------------------------------------- + /** + * Expand recursively a tree node for handling with expressions with exponents + * (it's not for constants, symbols or functions with exponents) + * PS: The other parameters are internal for recursion + * + * Syntax: + * + * expandPower(node) + * + * @param {Node} node Current expression node + * @param {node} parent Parent current node inside the recursion + * @param (int} Parent number of chid inside the rercursion + * + * @return {node} node expression with all powers expanded. + */ + function expandPower(node,parent,indParent) { + var tp = node.type; + var internal = (arguments.length>1) // TRUE in internal calls + + if (tp==='OperatorNode') { + var does = false; + if (node.op==='^') { // First operator: Parenthesis or UnaryMinus + if ( ( node.args[0].type==='ParenthesisNode' || + node.args[0].type==='OperatorNode' ) + && (node.args[1].type==='ConstantNode') ) { // Second operator: Constant + var val = parseFloat(node.args[1].value); + does = (val>=2 && number.isInteger(val)); + } + } + + if (does) { // Exponent >= 2 + //Before: + // operator A --> Subtree + // parent pow + // constant + // + if (val>2) { // Exponent > 2, + //AFTER: (exponent > 2) + // operator A --> Subtree + // parent * + // deep clone (operator A --> Subtree + // pow + // constant - 1 + // + var nEsqTopo = node.args[0]; + var nDirTopo = new OperatorNode('^', 'pow', [node.args[0].cloneDeep(),new ConstantNode(val-1)]); + node = new OperatorNode('*', 'multiply', [nEsqTopo, nDirTopo]); + } else // Expo = 2 - no power + + //AFTER: (exponent = 2) + // operator A --> Subtree + // parent oper + // deep clone (operator A --> Subtree) + // + node = new OperatorNode('*', 'multiply', [node.args[0], node.args[0].cloneDeep()]); + + if (internal) // Change parent references in internal recursive calls + if (indParent==='content') + parent.content = node; + else + parent.args[indParent] = node + } // does + } // Operator Node + + if (tp==='ParenthesisNode' ) // Recursion + expandPower(node.content,node,'content'); + else if (tp!=='ConstantNode' && tp!=='SymbolNode') + for (var i=0;i=0 ;i--) { + if (coefficients[i]===0) continue; + var n1 = new ConstantNode( + first ? coefficients[i] : Math.abs(coefficients[i])); + var op = coefficients[i]<0 ? '-' : '+'; + + if (i>0) { // Is not a constant without variable + var n2 = new SymbolNode(varname); + if (i>1) { + var n3 = new ConstantNode(i); + n2 = new OperatorNode('^', 'pow', [n2, n3]); + } + if (coefficients[i]===-1 && first) + n1 = new OperatorNode('-', 'unaryMinus', [n2]); + else if (Math.abs(coefficients[i])===1) + n1 = n2; + else + n1 = new OperatorNode('*', 'multiply', [n1, n2]); + } + + var no; + if (first) + no = n1; + else if (op==='+') + no = new OperatorNode('+', 'add', [no, n1]); + else + no = new OperatorNode('-', 'subtract', [no, n1]); + + first = false; + } // for + + if (first) + return new ConstantNode(0); + else + return no; + + /** + * Recursive auxilary function inside polyToCanonical for + * converting expression in canonical form + * + * Syntax: + * + * recurPol(node, noPai, obj) + * + * @param {Node} node The current subpolynomial expression + * @param {Node | Null} noPai The current parent node + * @param {object} obj Object with many internal flags + * + * @return {} No return. If error, throws an exception + */ + function recurPol(node,noPai,o) { + + var tp = node.type; + if (tp==='FunctionNode') // ***** FunctionName ***** + // No function call in polynomial expression + throw new ArgumentsError('There is an unsolved function call') + + else if (tp==='OperatorNode') { // ***** OperatorName ***** + if ('+-*^'.indexOf(node.op) === -1) throw new ArgumentsError('Operator ' + node.op + ' invalid'); + + if (noPai!==null) { + // -(unary),^ : children of *,+,- + if ( (node.fn==='unaryMinus' || node.fn==='pow') && noPai.fn !=='add' && + noPai.fn!=='subtract' && noPai.fn!=='multiply' ) + throw new ArgumentsError('Invalid ' + node.op + ' placing') + + // -,+,* : children of +,- + if ((node.fn==='subtract' || node.fn==='add' || node.fn==='multiply') && + noPai.fn!=='add' && noPai.fn!=='subtract' ) + throw new ArgumentsError('Invalid ' + node.op + ' placing'); + + // -,+ : first child + if ((node.fn==='subtract' || node.fn==='add' || + node.fn==='unaryMinus' ) && o.noFil!==0 ) + throw new ArgumentsError('Invalid ' + node.op + ' placing') + } // Has parent + + // Firers: ^,* Old: ^,&,-(unary): firers + if (node.op==='^' || node.op==='*') o.fire = node.op; + + for (var i=0;i it means there is no exponent above, so it's 1 (cte * var) + if (o.fire==='' || o.fire==='*' ) { + if (maxExpo<1) coefficients[1]=0; + coefficients[1] += o.cte* (o.oper==='+' ? 1 : -1); + maxExpo = Math.max(1,maxExpo); + } + + } else if (tp==='ConstantNode') { + var valor = parseFloat(node.value); + if (noPai === null) { + coefficients[0] = valor; + return; + } + if (noPai.op==='^') { + // cte: second child of power + if (o.noFil!==1) throw new ArgumentsError('Constant cannot be powered') + + if (! number.isInteger(valor) || valor<=0 ) + throw new ArgumentsError('Non-integer exponent is not allowed'); + + for (var i=maxExpo+1;imaxExpo) coefficients[valor]=0; + coefficients[valor] += o.cte * (o.oper==='+' ? 1 : -1) + maxExpo = Math.max(valor,maxExpo); + return; + } + o.cte = valor; + + // Cte: firer '' => There is no exponent and no multiplication, so the exponent is 0. + if (o.fire==='') + coefficients[0] += o.cte * (o.oper==='+'? 1 : -1); + + + } else + throw new ArgumentsError('Type ' + tp + ' is not allowed'); + return; + } // End of recurPol + + } // End of polyToCanonical + + return rationalize; +} // end of factory + +exports.name = 'rationalize'; +exports.factory = factory; + +/***/ }), +/* 411 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -47533,20 +48198,20 @@ exports.factory = factory; function factory (type, config, load, typed) { var matrix = load(__webpack_require__(0)); - var zeros = load(__webpack_require__(38)); - var eye = load(__webpack_require__(61)); - var clone = load(__webpack_require__(120)); + var zeros = load(__webpack_require__(39)); + var eye = load(__webpack_require__(62)); + var clone = load(__webpack_require__(123)); - var isZero = load(__webpack_require__(82)); - var isPositive = load(__webpack_require__(55)); - var unequal = load(__webpack_require__(121)); + var isZero = load(__webpack_require__(83)); + var isPositive = load(__webpack_require__(56)); + var unequal = load(__webpack_require__(124)); var abs = load(__webpack_require__(29)); - var sign = load(__webpack_require__(122)); - var sqrt = load(__webpack_require__(56)); - var conj = load(__webpack_require__(123)); + var sign = load(__webpack_require__(125)); + var sqrt = load(__webpack_require__(57)); + var conj = load(__webpack_require__(126)); - var unaryMinus = load(__webpack_require__(37)); + var unaryMinus = load(__webpack_require__(38)); var addScalar = load(__webpack_require__(20)); var divideScalar = load(__webpack_require__(19)); var multiplyScalar = load(__webpack_require__(23)); @@ -47790,7 +48455,7 @@ exports.factory = factory; /***/ }), -/* 410 */ +/* 412 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -47798,11 +48463,11 @@ exports.factory = factory; function factory (type, config, load) { - var cs_amd = load(__webpack_require__(411)); - var cs_permute = load(__webpack_require__(413)); - var cs_etree = load(__webpack_require__(414)); - var cs_post = load(__webpack_require__(415)); - var cs_counts = load(__webpack_require__(416)); + var cs_amd = load(__webpack_require__(413)); + var cs_permute = load(__webpack_require__(415)); + var cs_etree = load(__webpack_require__(416)); + var cs_post = load(__webpack_require__(417)); + var cs_counts = load(__webpack_require__(418)); /** * Symbolic ordering and analysis for QR and LU decompositions. @@ -47960,7 +48625,7 @@ exports.factory = factory; /***/ }), -/* 411 */ +/* 413 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -47968,9 +48633,9 @@ exports.factory = factory; function factory (type, config, load) { - var cs_flip = load(__webpack_require__(83)); - var cs_fkeep = load(__webpack_require__(412)); - var cs_tdfs = load(__webpack_require__(126)); + var cs_flip = load(__webpack_require__(84)); + var cs_fkeep = load(__webpack_require__(414)); + var cs_tdfs = load(__webpack_require__(129)); var add = load(__webpack_require__(18)); var multiply = load(__webpack_require__(12)); @@ -48540,7 +49205,7 @@ exports.factory = factory; /***/ }), -/* 412 */ +/* 414 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -48612,7 +49277,7 @@ exports.factory = factory; /***/ }), -/* 413 */ +/* 415 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -48690,7 +49355,7 @@ exports.factory = factory; /***/ }), -/* 414 */ +/* 416 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -48773,7 +49438,7 @@ exports.factory = factory; /***/ }), -/* 415 */ +/* 417 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -48781,7 +49446,7 @@ exports.factory = factory; function factory (type, config, load) { - var cs_tdfs = load(__webpack_require__(126)); + var cs_tdfs = load(__webpack_require__(129)); /** * Post order a tree of forest @@ -48839,7 +49504,7 @@ exports.factory = factory; /***/ }), -/* 416 */ +/* 418 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -48849,7 +49514,7 @@ function factory (type, config, load) { var transpose = load(__webpack_require__(67)); - var cs_leaf = load(__webpack_require__(417)); + var cs_leaf = load(__webpack_require__(419)); /** * Computes the column counts using the upper triangular part of A. @@ -48967,7 +49632,7 @@ exports.factory = factory; /***/ }), -/* 417 */ +/* 419 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -49040,7 +49705,7 @@ exports.factory = factory; /***/ }), -/* 418 */ +/* 420 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -49053,9 +49718,9 @@ function factory (type, config, load) { var multiply = load(__webpack_require__(12)); var larger = load(__webpack_require__(34)); - var largerEq = load(__webpack_require__(127)); + var largerEq = load(__webpack_require__(130)); - var cs_spsolve = load(__webpack_require__(419)); + var cs_spsolve = load(__webpack_require__(421)); var SparseMatrix = type.SparseMatrix; @@ -49225,7 +49890,7 @@ exports.factory = factory; /***/ }), -/* 419 */ +/* 421 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -49237,7 +49902,7 @@ function factory (type, config, load) { var multiply = load(__webpack_require__(12)); var subtract = load(__webpack_require__(21)); - var cs_reach = load(__webpack_require__(420)); + var cs_reach = load(__webpack_require__(422)); /** * The function cs_spsolve() computes the solution to G * x = bk, where bk is the @@ -49318,7 +49983,7 @@ exports.factory = factory; /***/ }), -/* 420 */ +/* 422 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -49326,9 +49991,9 @@ exports.factory = factory; function factory (type, config, load) { - var cs_dfs = load(__webpack_require__(421)); - var cs_marked = load(__webpack_require__(128)); - var cs_mark = load(__webpack_require__(129)); + var cs_dfs = load(__webpack_require__(423)); + var cs_marked = load(__webpack_require__(131)); + var cs_mark = load(__webpack_require__(132)); /** * The cs_reach function computes X = Reach(B), where B is the nonzero pattern of the n-by-1 @@ -49386,7 +50051,7 @@ exports.factory = factory; /***/ }), -/* 421 */ +/* 423 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -49394,9 +50059,9 @@ exports.factory = factory; function factory (type, config, load) { - var cs_marked = load(__webpack_require__(128)); - var cs_mark = load(__webpack_require__(129)); - var cs_unflip = load(__webpack_require__(422)); + var cs_marked = load(__webpack_require__(131)); + var cs_mark = load(__webpack_require__(132)); + var cs_unflip = load(__webpack_require__(424)); /** * Depth-first search computes the nonzero pattern xi of the directed graph G (Matrix) starting @@ -49478,7 +50143,7 @@ exports.factory = factory; /***/ }), -/* 422 */ +/* 424 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -49486,7 +50151,7 @@ exports.factory = factory; function factory (type, config, load) { - var cs_flip = load(__webpack_require__(83)); + var cs_flip = load(__webpack_require__(84)); /** * Flips the value if it is negative of returns the same value otherwise. @@ -49509,7 +50174,7 @@ exports.factory = factory; /***/ }), -/* 423 */ +/* 425 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -49520,14 +50185,14 @@ var isArray = Array.isArray; function factory (type, config, load, typed) { var matrix = load(__webpack_require__(0)); - var lup = load(__webpack_require__(124)); - var slu = load(__webpack_require__(125)); - var cs_ipvec = load(__webpack_require__(424)); + var lup = load(__webpack_require__(127)); + var slu = load(__webpack_require__(128)); + var cs_ipvec = load(__webpack_require__(426)); - var solveValidation = load(__webpack_require__(84)); + var solveValidation = load(__webpack_require__(85)); - var usolve = load(__webpack_require__(131)); - var lsolve = load(__webpack_require__(130)); + var usolve = load(__webpack_require__(134)); + var lsolve = load(__webpack_require__(133)); /** * Solves the linear system `A * x = b` where `A` is an [n x n] matrix and `b` is a [n] column vector. @@ -49549,7 +50214,7 @@ function factory (type, config, load, typed) { * * var a = [[-2, 3], [2, 1]]; * var b = [11, 9]; - * var x = lusolve(a, b); // [[-5.5], [20]] + * var x = math.lusolve(a, b); // [[2], [5]] * * See also: * @@ -49641,7 +50306,7 @@ exports.factory = factory; /***/ }), -/* 424 */ +/* 426 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -49689,46 +50354,46 @@ exports.factory = factory; /***/ }), -/* 425 */ +/* 427 */ /***/ (function(module, exports, __webpack_require__) { module.exports = [ __webpack_require__(29), __webpack_require__(18), __webpack_require__(20), - __webpack_require__(426), - __webpack_require__(427), __webpack_require__(428), - __webpack_require__(47), - __webpack_require__(132), __webpack_require__(429), __webpack_require__(430), + __webpack_require__(49), + __webpack_require__(135), __webpack_require__(431), - __webpack_require__(96), __webpack_require__(432), __webpack_require__(433), + __webpack_require__(97), __webpack_require__(434), __webpack_require__(435), - __webpack_require__(134), + __webpack_require__(436), __webpack_require__(437), - __webpack_require__(438), - __webpack_require__(12), + __webpack_require__(137), __webpack_require__(439), __webpack_require__(440), - __webpack_require__(45), - __webpack_require__(97), - __webpack_require__(122), - __webpack_require__(56), + __webpack_require__(12), __webpack_require__(441), - __webpack_require__(21), - __webpack_require__(37), __webpack_require__(442), - __webpack_require__(443) + __webpack_require__(46), + __webpack_require__(98), + __webpack_require__(125), + __webpack_require__(57), + __webpack_require__(443), + __webpack_require__(21), + __webpack_require__(38), + __webpack_require__(444), + __webpack_require__(445) ]; /***/ }), -/* 426 */ +/* 428 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -49737,8 +50402,8 @@ module.exports = [ var deepMap = __webpack_require__(1); function factory (type, config, load, typed) { - var unaryMinus = load(__webpack_require__(37)); - var isNegative = load(__webpack_require__(57)); + var unaryMinus = load(__webpack_require__(38)); + var isNegative = load(__webpack_require__(58)); var matrix = load(__webpack_require__(0)); /** @@ -49920,7 +50585,7 @@ exports.factory = factory; /***/ }), -/* 427 */ +/* 429 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -49988,7 +50653,7 @@ exports.factory = factory; /***/ }), -/* 428 */ +/* 430 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -50059,7 +50724,7 @@ exports.factory = factory; /***/ }), -/* 429 */ +/* 431 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -50072,7 +50737,7 @@ function factory (type, config, load, typed) { var latex = __webpack_require__(4); var algorithm02 = load(__webpack_require__(24)); - var algorithm09 = load(__webpack_require__(133)); + var algorithm09 = load(__webpack_require__(136)); var algorithm11 = load(__webpack_require__(17)); var algorithm13 = load(__webpack_require__(8)); var algorithm14 = load(__webpack_require__(6)); @@ -50209,7 +50874,7 @@ exports.factory = factory; /***/ }), -/* 430 */ +/* 432 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -50218,7 +50883,7 @@ exports.factory = factory; function factory (type, config, load, typed) { var matrix = load(__webpack_require__(0)); - var pow = load(__webpack_require__(45)); + var pow = load(__webpack_require__(46)); var latex = __webpack_require__(4); var algorithm03 = load(__webpack_require__(15)); @@ -50357,7 +51022,7 @@ exports.factory = factory; /***/ }), -/* 431 */ +/* 433 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -50421,7 +51086,7 @@ exports.factory = factory; /***/ }), -/* 432 */ +/* 434 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -50488,7 +51153,7 @@ exports.factory = factory; /***/ }), -/* 433 */ +/* 435 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -50502,7 +51167,7 @@ function factory (type, config, load, typed) { var algorithm01 = load(__webpack_require__(33)); var algorithm04 = load(__webpack_require__(73)); - var algorithm10 = load(__webpack_require__(36)); + var algorithm10 = load(__webpack_require__(37)); var algorithm13 = load(__webpack_require__(8)); var algorithm14 = load(__webpack_require__(6)); @@ -50694,7 +51359,7 @@ exports.factory = factory; /***/ }), -/* 434 */ +/* 436 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -50707,9 +51372,9 @@ function factory (type, config, load, typed) { var add = load(__webpack_require__(20)); var divide = load(__webpack_require__(19)); var multiply = load(__webpack_require__(23)); - var sqrt = load(__webpack_require__(56)); - var smaller = load(__webpack_require__(44)); - var isPositive = load(__webpack_require__(55)); + var sqrt = load(__webpack_require__(57)); + var smaller = load(__webpack_require__(45)); + var isPositive = load(__webpack_require__(56)); /** * Calculate the hypotenusa of a list with values. The hypotenusa is defined as: @@ -50785,7 +51450,7 @@ exports.factory = factory; /***/ }), -/* 435 */ +/* 437 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -51006,7 +51671,7 @@ exports.factory = factory; /***/ }), -/* 436 */ +/* 438 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -51077,7 +51742,7 @@ module.exports = function scatter(a, j, w, x, u, mark, c, f, inverse, update, va /***/ }), -/* 437 */ +/* 439 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -51162,7 +51827,7 @@ exports.factory = factory; /***/ }), -/* 438 */ +/* 440 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -51175,7 +51840,7 @@ function factory (type, config, load, typed) { var algorithm02 = load(__webpack_require__(24)); var algorithm03 = load(__webpack_require__(15)); - var algorithm05 = load(__webpack_require__(60)); + var algorithm05 = load(__webpack_require__(61)); var algorithm11 = load(__webpack_require__(17)); var algorithm12 = load(__webpack_require__(16)); var algorithm13 = load(__webpack_require__(8)); @@ -51353,7 +52018,7 @@ exports.factory = factory; /***/ }), -/* 439 */ +/* 441 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -51363,14 +52028,14 @@ function factory (type, config, load, typed) { var abs = load(__webpack_require__(29)); var add = load(__webpack_require__(18)); - var pow = load(__webpack_require__(45)); - var sqrt = load(__webpack_require__(56)); + var pow = load(__webpack_require__(46)); + var sqrt = load(__webpack_require__(57)); var multiply = load(__webpack_require__(12)); var equalScalar = load(__webpack_require__(11)); var larger = load(__webpack_require__(34)); - var smaller = load(__webpack_require__(44)); + var smaller = load(__webpack_require__(45)); var matrix = load(__webpack_require__(0)); - var trace = load(__webpack_require__(135)); + var trace = load(__webpack_require__(138)); var transpose = load(__webpack_require__(67)); @@ -51575,7 +52240,7 @@ exports.factory = factory; /***/ }), -/* 440 */ +/* 442 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -51881,7 +52546,7 @@ exports.factory = factory; /***/ }), -/* 441 */ +/* 443 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -51953,7 +52618,7 @@ exports.factory = factory; /***/ }), -/* 442 */ +/* 444 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -52032,7 +52697,7 @@ exports.factory = factory; /***/ }), -/* 443 */ +/* 445 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -52176,29 +52841,29 @@ exports.factory = factory; /***/ }), -/* 444 */ +/* 446 */ /***/ (function(module, exports, __webpack_require__) { module.exports = [ - __webpack_require__(445), __webpack_require__(447), - __webpack_require__(448), + __webpack_require__(449), __webpack_require__(450), __webpack_require__(452), __webpack_require__(454), - __webpack_require__(456) + __webpack_require__(456), + __webpack_require__(458) ]; /***/ }), -/* 445 */ +/* 447 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var isInteger = __webpack_require__(3).isInteger; -var bigBitAnd = __webpack_require__(446); +var bigBitAnd = __webpack_require__(448); function factory (type, config, load, typed) { var latex = __webpack_require__(4); @@ -52347,10 +53012,10 @@ exports.factory = factory; /***/ }), -/* 446 */ +/* 448 */ /***/ (function(module, exports, __webpack_require__) { -var bitwise = __webpack_require__(85); +var bitwise = __webpack_require__(86); /** * Bitwise and for Bignumbers @@ -52421,14 +53086,14 @@ module.exports = function bitAnd(x, y) { /***/ }), -/* 447 */ +/* 449 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var deepMap = __webpack_require__(1); -var bigBitNot = __webpack_require__(86); +var bigBitNot = __webpack_require__(87); var isInteger = __webpack_require__(3).isInteger; function factory (type, config, load, typed) { @@ -52484,14 +53149,14 @@ exports.factory = factory; /***/ }), -/* 448 */ +/* 450 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var isInteger = __webpack_require__(3).isInteger; -var bigBitOr = __webpack_require__(449); +var bigBitOr = __webpack_require__(451); function factory (type, config, load, typed) { var latex = __webpack_require__(4); @@ -52500,7 +53165,7 @@ function factory (type, config, load, typed) { var algorithm01 = load(__webpack_require__(33)); var algorithm04 = load(__webpack_require__(73)); - var algorithm10 = load(__webpack_require__(36)); + var algorithm10 = load(__webpack_require__(37)); var algorithm13 = load(__webpack_require__(8)); var algorithm14 = load(__webpack_require__(6)); @@ -52640,10 +53305,10 @@ exports.factory = factory; /***/ }), -/* 449 */ +/* 451 */ /***/ (function(module, exports, __webpack_require__) { -var bitwise = __webpack_require__(85); +var bitwise = __webpack_require__(86); /** * Bitwise OR for BigNumbers @@ -52699,14 +53364,14 @@ module.exports = function bitOr (x, y) { /***/ }), -/* 450 */ +/* 452 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var isInteger = __webpack_require__(3).isInteger; -var bigBitXor = __webpack_require__(451); +var bigBitXor = __webpack_require__(453); function factory (type, config, load, typed) { var latex = __webpack_require__(4); @@ -52855,11 +53520,11 @@ exports.factory = factory; /***/ }), -/* 451 */ +/* 453 */ /***/ (function(module, exports, __webpack_require__) { -var bitwise = __webpack_require__(85); -var bitNot = __webpack_require__(86); +var bitwise = __webpack_require__(86); +var bitNot = __webpack_require__(87); /** * Bitwise XOR for BigNumbers @@ -52921,26 +53586,26 @@ module.exports = function bitXor(x, y) { /***/ }), -/* 452 */ +/* 454 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var isInteger = __webpack_require__(3).isInteger; -var bigLeftShift = __webpack_require__(453); +var bigLeftShift = __webpack_require__(455); function factory (type, config, load, typed) { var latex = __webpack_require__(4); var matrix = load(__webpack_require__(0)); var equalScalar = load(__webpack_require__(11)); - var zeros = load(__webpack_require__(38)); + var zeros = load(__webpack_require__(39)); var algorithm01 = load(__webpack_require__(33)); var algorithm02 = load(__webpack_require__(24)); - var algorithm08 = load(__webpack_require__(87)); - var algorithm10 = load(__webpack_require__(36)); + var algorithm08 = load(__webpack_require__(88)); + var algorithm10 = load(__webpack_require__(37)); var algorithm11 = load(__webpack_require__(17)); var algorithm13 = load(__webpack_require__(8)); var algorithm14 = load(__webpack_require__(6)); @@ -53090,7 +53755,7 @@ exports.factory = factory; /***/ }), -/* 453 */ +/* 455 */ /***/ (function(module, exports) { @@ -53137,26 +53802,26 @@ module.exports = function leftShift (x, y) { /***/ }), -/* 454 */ +/* 456 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var isInteger = __webpack_require__(3).isInteger; -var bigRightArithShift = __webpack_require__(455); +var bigRightArithShift = __webpack_require__(457); function factory (type, config, load, typed) { var latex = __webpack_require__(4); var matrix = load(__webpack_require__(0)); var equalScalar = load(__webpack_require__(11)); - var zeros = load(__webpack_require__(38)); + var zeros = load(__webpack_require__(39)); var algorithm01 = load(__webpack_require__(33)); var algorithm02 = load(__webpack_require__(24)); - var algorithm08 = load(__webpack_require__(87)); - var algorithm10 = load(__webpack_require__(36)); + var algorithm08 = load(__webpack_require__(88)); + var algorithm10 = load(__webpack_require__(37)); var algorithm11 = load(__webpack_require__(17)); var algorithm13 = load(__webpack_require__(8)); var algorithm14 = load(__webpack_require__(6)); @@ -53306,7 +53971,7 @@ exports.factory = factory; /***/ }), -/* 455 */ +/* 457 */ /***/ (function(module, exports) { /* @@ -53359,7 +54024,7 @@ module.exports = function rightArithShift (x, y) { /***/ }), -/* 456 */ +/* 458 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -53372,12 +54037,12 @@ function factory (type, config, load, typed) { var matrix = load(__webpack_require__(0)); var equalScalar = load(__webpack_require__(11)); - var zeros = load(__webpack_require__(38)); + var zeros = load(__webpack_require__(39)); var algorithm01 = load(__webpack_require__(33)); var algorithm02 = load(__webpack_require__(24)); - var algorithm08 = load(__webpack_require__(87)); - var algorithm10 = load(__webpack_require__(36)); + var algorithm08 = load(__webpack_require__(88)); + var algorithm10 = load(__webpack_require__(37)); var algorithm11 = load(__webpack_require__(17)); var algorithm13 = load(__webpack_require__(8)); var algorithm14 = load(__webpack_require__(6)); @@ -53528,19 +54193,19 @@ exports.factory = factory; /***/ }), -/* 457 */ +/* 459 */ /***/ (function(module, exports, __webpack_require__) { module.exports = [ - __webpack_require__(458), - __webpack_require__(459), - __webpack_require__(136), - __webpack_require__(460) + __webpack_require__(460), + __webpack_require__(461), + __webpack_require__(139), + __webpack_require__(462) ]; /***/ }), -/* 458 */ +/* 460 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -53548,9 +54213,9 @@ module.exports = [ function factory (type, config, load, typed) { var add = load(__webpack_require__(18)); - var stirlingS2 = load(__webpack_require__(136)); - var isNegative = load(__webpack_require__(57)); - var isInteger = load(__webpack_require__(48)); + var stirlingS2 = load(__webpack_require__(139)); + var isNegative = load(__webpack_require__(58)); + var isInteger = load(__webpack_require__(50)); /** * The Bell Numbers count the number of partitions of a set. A partition is a pairwise disjoint subset of S whose union is S. @@ -53600,7 +54265,7 @@ exports.factory = factory; /***/ }), -/* 459 */ +/* 461 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -53609,8 +54274,8 @@ exports.factory = factory; function factory (type, config, load, typed) { var combinations = load(__webpack_require__(70)); var add = load(__webpack_require__(20)); - var isPositive = load(__webpack_require__(55)); - var isInteger = load(__webpack_require__(48)); + var isPositive = load(__webpack_require__(56)); + var isInteger = load(__webpack_require__(50)); var larger = load(__webpack_require__(34)); /** @@ -53658,7 +54323,7 @@ exports.factory = factory; /***/ }), -/* 460 */ +/* 462 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -53666,11 +54331,11 @@ exports.factory = factory; function factory (type, config, load, typed) { var add = load(__webpack_require__(18)); - var divide = load(__webpack_require__(47)); + var divide = load(__webpack_require__(49)); var multiply = load(__webpack_require__(12)); var combinations = load(__webpack_require__(70)); - var isNegative = load(__webpack_require__(57)); - var isInteger = load(__webpack_require__(48)); + var isNegative = load(__webpack_require__(58)); + var isInteger = load(__webpack_require__(50)); /** @@ -53716,19 +54381,19 @@ exports.factory = factory; /***/ }), -/* 461 */ +/* 463 */ /***/ (function(module, exports, __webpack_require__) { module.exports = [ - __webpack_require__(462), - __webpack_require__(123), - __webpack_require__(463), - __webpack_require__(464) + __webpack_require__(464), + __webpack_require__(126), + __webpack_require__(465), + __webpack_require__(466) ]; /***/ }), -/* 462 */ +/* 464 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -53794,7 +54459,7 @@ exports.factory = factory; /***/ }), -/* 463 */ +/* 465 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -53858,7 +54523,7 @@ exports.factory = factory; /***/ }), -/* 464 */ +/* 466 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -53922,17 +54587,17 @@ exports.factory = factory; /***/ }), -/* 465 */ +/* 467 */ /***/ (function(module, exports, __webpack_require__) { module.exports = [ - __webpack_require__(466), - __webpack_require__(467) + __webpack_require__(468), + __webpack_require__(469) ]; /***/ }), -/* 466 */ +/* 468 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -54081,7 +54746,7 @@ exports.factory = factory; /***/ }), -/* 467 */ +/* 469 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -54389,19 +55054,19 @@ exports.factory = factory; /***/ }), -/* 468 */ +/* 470 */ /***/ (function(module, exports, __webpack_require__) { module.exports = [ - __webpack_require__(469), - __webpack_require__(138), - __webpack_require__(470), - __webpack_require__(471) + __webpack_require__(471), + __webpack_require__(141), + __webpack_require__(472), + __webpack_require__(473) ]; /***/ }), -/* 469 */ +/* 471 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -54411,9 +55076,9 @@ function factory (type, config, load, typed) { var latex = __webpack_require__(4); var matrix = load(__webpack_require__(0)); - var zeros = load(__webpack_require__(38)); - var not = load(__webpack_require__(138)); - var isZero = load(__webpack_require__(82)); + var zeros = load(__webpack_require__(39)); + var not = load(__webpack_require__(141)); + var isZero = load(__webpack_require__(83)); var algorithm02 = load(__webpack_require__(24)); var algorithm06 = load(__webpack_require__(68)); @@ -54579,7 +55244,7 @@ exports.factory = factory; /***/ }), -/* 470 */ +/* 472 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -54591,7 +55256,7 @@ function factory (type, config, load, typed) { var matrix = load(__webpack_require__(0)); var algorithm03 = load(__webpack_require__(15)); - var algorithm05 = load(__webpack_require__(60)); + var algorithm05 = load(__webpack_require__(61)); var algorithm12 = load(__webpack_require__(16)); var algorithm13 = load(__webpack_require__(8)); var algorithm14 = load(__webpack_require__(6)); @@ -54744,7 +55409,7 @@ exports.factory = factory; /***/ }), -/* 471 */ +/* 473 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -54909,39 +55574,39 @@ exports.factory = factory; /***/ }), -/* 472 */ +/* 474 */ /***/ (function(module, exports, __webpack_require__) { module.exports = [ __webpack_require__(64), - __webpack_require__(473), - __webpack_require__(115), - __webpack_require__(474), __webpack_require__(475), - __webpack_require__(61), + __webpack_require__(117), __webpack_require__(476), __webpack_require__(477), + __webpack_require__(62), __webpack_require__(478), - __webpack_require__(114), __webpack_require__(479), - __webpack_require__(139), __webpack_require__(480), - __webpack_require__(88), - __webpack_require__(117), + __webpack_require__(116), __webpack_require__(481), + __webpack_require__(142), __webpack_require__(482), - __webpack_require__(28), - __webpack_require__(140), + __webpack_require__(89), + __webpack_require__(119), + __webpack_require__(483), __webpack_require__(484), + __webpack_require__(28), + __webpack_require__(143), + __webpack_require__(486), __webpack_require__(22), - __webpack_require__(135), + __webpack_require__(138), __webpack_require__(67), - __webpack_require__(38) + __webpack_require__(39) ]; /***/ }), -/* 473 */ +/* 475 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -55049,7 +55714,7 @@ exports.factory = factory; /***/ }), -/* 474 */ +/* 476 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -55226,7 +55891,7 @@ exports.factory = factory; /***/ }), -/* 475 */ +/* 477 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -55312,7 +55977,7 @@ exports.factory = factory; /***/ }), -/* 476 */ +/* 478 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -55403,7 +56068,7 @@ exports.factory = factory; /***/ }), -/* 477 */ +/* 479 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -55455,7 +56120,7 @@ exports.factory = factory; /***/ }), -/* 478 */ +/* 480 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -55539,7 +56204,7 @@ exports.factory = factory; /***/ }), -/* 479 */ +/* 481 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -55636,7 +56301,7 @@ exports.factory = factory; /***/ }), -/* 480 */ +/* 482 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -55777,7 +56442,7 @@ exports.factory = factory; /***/ }), -/* 481 */ +/* 483 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -55858,14 +56523,14 @@ exports.factory = factory; /***/ }), -/* 482 */ +/* 484 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var DimensionError = __webpack_require__(10); -var ArgumentsError = __webpack_require__(50); +var ArgumentsError = __webpack_require__(43); var isInteger = __webpack_require__(3).isInteger; var format = __webpack_require__(9).format; @@ -56003,7 +56668,7 @@ exports.factory = factory; /***/ }), -/* 483 */ +/* 485 */ /***/ (function(module, exports) { /* @@ -56054,7 +56719,7 @@ module.exports = function naturalSort (a, b) { /***/ }), -/* 484 */ +/* 486 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -56122,25 +56787,25 @@ exports.factory = factory; /***/ }), -/* 485 */ +/* 487 */ /***/ (function(module, exports, __webpack_require__) { module.exports = [ //require('./distribution'), // TODO: rethink math.distribution __webpack_require__(70), __webpack_require__(69), - __webpack_require__(137), - __webpack_require__(486), - __webpack_require__(487), + __webpack_require__(140), __webpack_require__(488), __webpack_require__(489), - __webpack_require__(493), - __webpack_require__(494) + __webpack_require__(490), + __webpack_require__(491), + __webpack_require__(495), + __webpack_require__(496) ]; /***/ }), -/* 486 */ +/* 488 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -56149,11 +56814,11 @@ module.exports = [ function factory(type, config, load, typed) { var matrix = load(__webpack_require__(0)); - var divide = load(__webpack_require__(47)); - var sum = load(__webpack_require__(141)); + var divide = load(__webpack_require__(49)); + var sum = load(__webpack_require__(144)); var multiply = load(__webpack_require__(12)); - var dotDivide = load(__webpack_require__(132)); - var log = load(__webpack_require__(134)); + var dotDivide = load(__webpack_require__(135)); + var log = load(__webpack_require__(137)); var isNumeric = load(__webpack_require__(75)); /** @@ -56238,7 +56903,7 @@ exports.factory = factory; /***/ }), -/* 487 */ +/* 489 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -56249,10 +56914,10 @@ var deepForEach = __webpack_require__(42); function factory (type, config, load, typed) { var add = load(__webpack_require__(18)); var multiply = load(__webpack_require__(12)); - var divide = load(__webpack_require__(47)); + var divide = load(__webpack_require__(49)); var factorial = load(__webpack_require__(69)); - var isInteger = load(__webpack_require__(48)); - var isPositive = load(__webpack_require__(55)); + var isInteger = load(__webpack_require__(50)); + var isPositive = load(__webpack_require__(56)); /** * Multinomial Coefficients compute the number of ways of picking a1, a2, ..., ai unordered outcomes from `n` possibilities. @@ -56298,7 +56963,7 @@ exports.factory = factory; /***/ }), -/* 488 */ +/* 490 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -56399,14 +57064,14 @@ exports.factory = factory; /***/ }), -/* 489 */ +/* 491 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; function factory (type, config, load, typed) { - var distribution = load(__webpack_require__(89)); + var distribution = load(__webpack_require__(90)); /** * Random pick one or more values from a one dimensional array. @@ -56435,8 +57100,8 @@ function factory (type, config, load, typed) { * @param {Array} array A one dimensional array * @param {Int} number An int or float * @param {Array} weights An array of ints or floats - * @return {number} One of the elements of the provided input array - * @return {array} An array of elements of the provided input array + * @return {number | Array} Returns a single random value from array when number is 1 or undefined. + * Returns an array with the configured number of elements when number is > 1. */ // TODO: rework pickRandom to a typed-function var pickRandom = distribution('uniform').pickRandom; @@ -56451,13 +57116,13 @@ exports.factory = factory; /***/ }), -/* 490 */ +/* 492 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var seedrandom = __webpack_require__(491); +var seedrandom = __webpack_require__(493); // create a random seed here to prevent an infinite loop from seed-random // inside the factory. Reason is that math.random is defined as a getter/setter @@ -56500,7 +57165,7 @@ exports.math = true; /***/ }), -/* 491 */ +/* 493 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -56678,10 +57343,10 @@ function tostring(a) { // mixkey(Math.random(), pool); -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(492))) +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(494))) /***/ }), -/* 492 */ +/* 494 */ /***/ (function(module, exports) { var g; @@ -56708,14 +57373,14 @@ module.exports = g; /***/ }), -/* 493 */ +/* 495 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; function factory (type, config, load, typed) { - var distribution = load(__webpack_require__(89)); + var distribution = load(__webpack_require__(90)); /** * Return a random number larger or equal to `min` and smaller than `max` @@ -56760,14 +57425,14 @@ exports.factory = factory; /***/ }), -/* 494 */ +/* 496 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; function factory (type, config, load, typed) { - var distribution = load(__webpack_require__(89)); + var distribution = load(__webpack_require__(90)); /** * Return a random integer number larger or equal to `min` and smaller than `max` @@ -56810,24 +57475,24 @@ exports.factory = factory; /***/ }), -/* 495 */ +/* 497 */ /***/ (function(module, exports, __webpack_require__) { module.exports = [ - __webpack_require__(49), + __webpack_require__(51), __webpack_require__(31), - __webpack_require__(496), + __webpack_require__(498), __webpack_require__(30), __webpack_require__(34), - __webpack_require__(127), - __webpack_require__(44), - __webpack_require__(497), - __webpack_require__(121) + __webpack_require__(130), + __webpack_require__(45), + __webpack_require__(499), + __webpack_require__(124) ]; /***/ }), -/* 496 */ +/* 498 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -56915,14 +57580,14 @@ exports.factory = factory; /***/ }), -/* 497 */ +/* 499 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var nearlyEqual = __webpack_require__(3).nearlyEqual; -var bigNearlyEqual = __webpack_require__(35); +var bigNearlyEqual = __webpack_require__(36); function factory (type, config, load, typed) { @@ -57096,25 +57761,25 @@ exports.factory = factory; /***/ }), -/* 498 */ +/* 500 */ /***/ (function(module, exports, __webpack_require__) { module.exports = [ - __webpack_require__(499), - __webpack_require__(142), - __webpack_require__(500), - __webpack_require__(143), __webpack_require__(501), + __webpack_require__(145), __webpack_require__(502), + __webpack_require__(146), __webpack_require__(503), __webpack_require__(504), - __webpack_require__(144), - __webpack_require__(505) + __webpack_require__(505), + __webpack_require__(506), + __webpack_require__(147), + __webpack_require__(507) ]; /***/ }), -/* 499 */ +/* 501 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -57124,7 +57789,7 @@ var flatten = __webpack_require__(2).flatten; function factory (type, config, load, typed) { var index = load(__webpack_require__(27)); - var matrix = load(__webpack_require__(43)); + var matrix = load(__webpack_require__(44)); var size = load(__webpack_require__(28)); var subset = load(__webpack_require__(22)); var compareNatural = load(__webpack_require__(31)); @@ -57181,7 +57846,7 @@ exports.factory = factory; /***/ }), -/* 500 */ +/* 502 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -57192,7 +57857,7 @@ var flatten = __webpack_require__(2).flatten; function factory (type, config, load, typed) { var equal = load(__webpack_require__(30)); var index = load(__webpack_require__(27)); - var matrix = load(__webpack_require__(43)); + var matrix = load(__webpack_require__(44)); var size = load(__webpack_require__(28)); var subset = load(__webpack_require__(22)); var compareNatural = load(__webpack_require__(31)); @@ -57248,7 +57913,7 @@ exports.factory = factory; /***/ }), -/* 501 */ +/* 503 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -57320,7 +57985,7 @@ exports.factory = factory; /***/ }), -/* 502 */ +/* 504 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -57379,7 +58044,7 @@ exports.factory = factory; /***/ }), -/* 503 */ +/* 505 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -57463,7 +58128,7 @@ exports.factory = factory; /***/ }), -/* 504 */ +/* 506 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -57525,7 +58190,7 @@ exports.factory = factory; /***/ }), -/* 505 */ +/* 507 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -57538,8 +58203,8 @@ function factory (type, config, load, typed) { var concat = load(__webpack_require__(64)); var size = load(__webpack_require__(28)); var subset = load(__webpack_require__(22)); - var setIntersect = load(__webpack_require__(143)); - var setSymDifference = load(__webpack_require__(144)); + var setIntersect = load(__webpack_require__(146)); + var setSymDifference = load(__webpack_require__(147)); /** * Create the union of two (multi)sets. @@ -57584,16 +58249,16 @@ exports.factory = factory; /***/ }), -/* 506 */ +/* 508 */ /***/ (function(module, exports, __webpack_require__) { module.exports = [ - __webpack_require__(507) + __webpack_require__(509) ]; /***/ }), -/* 507 */ +/* 509 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -57797,26 +58462,26 @@ exports.factory = factory; /***/ }), -/* 508 */ +/* 510 */ /***/ (function(module, exports, __webpack_require__) { module.exports = [ - __webpack_require__(509), - __webpack_require__(112), - __webpack_require__(113), - __webpack_require__(145), - __webpack_require__(116), - __webpack_require__(510), __webpack_require__(511), + __webpack_require__(114), + __webpack_require__(115), + __webpack_require__(148), + __webpack_require__(118), __webpack_require__(512), __webpack_require__(513), - __webpack_require__(141), - __webpack_require__(146) + __webpack_require__(514), + __webpack_require__(515), + __webpack_require__(144), + __webpack_require__(149) ]; /***/ }), -/* 509 */ +/* 511 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -57826,8 +58491,8 @@ var flatten = __webpack_require__(2).flatten; function factory (type, config, load, typed) { var abs = load(__webpack_require__(29)); - var map = load(__webpack_require__(139)); - var median = load(__webpack_require__(145)); + var map = load(__webpack_require__(142)); + var median = load(__webpack_require__(148)); var subtract = load(__webpack_require__(21)); /** @@ -57887,7 +58552,7 @@ exports.factory = factory; /***/ }), -/* 510 */ +/* 512 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -57970,7 +58635,7 @@ exports.name = 'mode'; exports.factory = factory; /***/ }), -/* 511 */ +/* 513 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -58053,7 +58718,7 @@ exports.factory = factory; /***/ }), -/* 512 */ +/* 514 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -58062,13 +58727,13 @@ exports.factory = factory; var isInteger = __webpack_require__(3).isInteger; var isNumber = __webpack_require__(3).isNumber; var flatten = __webpack_require__(2).flatten; -var isCollection = __webpack_require__(46); +var isCollection = __webpack_require__(48); function factory (type, config, load, typed) { var add = load(__webpack_require__(18)); var multiply = load(__webpack_require__(12)); - var partitionSelect = load(__webpack_require__(88)); - var compare = load(__webpack_require__(49)); + var partitionSelect = load(__webpack_require__(89)); + var compare = load(__webpack_require__(51)); /** * Compute the prob order quantile of a matrix or a list with values. @@ -58317,15 +58982,15 @@ exports.factory = factory; /***/ }), -/* 513 */ +/* 515 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; function factory (type, config, load, typed) { - var sqrt = load(__webpack_require__(56)); - var variance = load(__webpack_require__(146)); + var sqrt = load(__webpack_require__(57)); + var variance = load(__webpack_require__(149)); /** * Compute the standard deviation of a matrix or a list with values. @@ -58398,17 +59063,17 @@ exports.factory = factory; /***/ }), -/* 514 */ +/* 516 */ /***/ (function(module, exports, __webpack_require__) { module.exports = [ - __webpack_require__(98), - __webpack_require__(515) + __webpack_require__(99), + __webpack_require__(517) ]; /***/ }), -/* 515 */ +/* 517 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -58502,14 +59167,12 @@ exports.factory = factory; /***/ }), -/* 516 */ +/* 518 */ /***/ (function(module, exports, __webpack_require__) { module.exports = [ - __webpack_require__(517), - __webpack_require__(147), - __webpack_require__(518), __webpack_require__(519), + __webpack_require__(150), __webpack_require__(520), __webpack_require__(521), __webpack_require__(522), @@ -58530,12 +59193,14 @@ module.exports = [ __webpack_require__(537), __webpack_require__(538), __webpack_require__(539), - __webpack_require__(540) + __webpack_require__(540), + __webpack_require__(541), + __webpack_require__(542) ]; /***/ }), -/* 517 */ +/* 519 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -58601,7 +59266,7 @@ exports.factory = factory; /***/ }), -/* 518 */ +/* 520 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -58662,7 +59327,7 @@ exports.factory = factory; /***/ }), -/* 519 */ +/* 521 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -58724,7 +59389,7 @@ exports.factory = factory; /***/ }), -/* 520 */ +/* 522 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -58789,7 +59454,7 @@ exports.factory = factory; /***/ }), -/* 521 */ +/* 523 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -58849,7 +59514,7 @@ exports.factory = factory; /***/ }), -/* 522 */ +/* 524 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -58913,7 +59578,7 @@ exports.factory = factory; /***/ }), -/* 523 */ +/* 525 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -58922,7 +59587,7 @@ exports.factory = factory; var deepMap = __webpack_require__(1); function factory (type, config, load, typed) { - var acosh = typed.find(load(__webpack_require__(147)), ['Complex']); + var acosh = typed.find(load(__webpack_require__(150)), ['Complex']); /** * Calculate the hyperbolic arcsecant of a value, @@ -58984,7 +59649,7 @@ exports.factory = factory; /***/ }), -/* 524 */ +/* 526 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -59051,7 +59716,7 @@ exports.factory = factory; /***/ }), -/* 525 */ +/* 527 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -59111,7 +59776,7 @@ exports.factory = factory; /***/ }), -/* 526 */ +/* 528 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -59173,7 +59838,7 @@ exports.factory = factory; /***/ }), -/* 527 */ +/* 529 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -59185,7 +59850,7 @@ function factory (type, config, load, typed) { var algorithm02 = load(__webpack_require__(24)); var algorithm03 = load(__webpack_require__(15)); - var algorithm09 = load(__webpack_require__(133)); + var algorithm09 = load(__webpack_require__(136)); var algorithm11 = load(__webpack_require__(17)); var algorithm12 = load(__webpack_require__(16)); var algorithm13 = load(__webpack_require__(8)); @@ -59332,7 +59997,7 @@ exports.factory = factory; /***/ }), -/* 528 */ +/* 530 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -59404,7 +60069,7 @@ exports.factory = factory; /***/ }), -/* 529 */ +/* 531 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -59473,7 +60138,7 @@ exports.factory = factory; /***/ }), -/* 530 */ +/* 532 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -59546,7 +60211,7 @@ exports.factory = factory; /***/ }), -/* 531 */ +/* 533 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -59611,7 +60276,7 @@ exports.factory = factory; /***/ }), -/* 532 */ +/* 534 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -59687,7 +60352,7 @@ exports.factory = factory; /***/ }), -/* 533 */ +/* 535 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -59752,7 +60417,7 @@ exports.factory = factory; /***/ }), -/* 534 */ +/* 536 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -59834,7 +60499,7 @@ exports.factory = factory; /***/ }), -/* 535 */ +/* 537 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -59899,7 +60564,7 @@ exports.factory = factory; /***/ }), -/* 536 */ +/* 538 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -59974,7 +60639,7 @@ exports.factory = factory; /***/ }), -/* 537 */ +/* 539 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -60044,7 +60709,7 @@ exports.factory = factory; /***/ }), -/* 538 */ +/* 540 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -60118,7 +60783,7 @@ exports.factory = factory; /***/ }), -/* 539 */ +/* 541 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -60184,7 +60849,7 @@ exports.factory = factory; /***/ }), -/* 540 */ +/* 542 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -60262,15 +60927,15 @@ exports.factory = factory; /***/ }), -/* 541 */ +/* 543 */ /***/ (function(module, exports, __webpack_require__) { module.exports = [ - __webpack_require__(542) + __webpack_require__(544) ]; /***/ }), -/* 542 */ +/* 544 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -60367,24 +61032,24 @@ exports.factory = factory; /***/ }), -/* 543 */ +/* 545 */ /***/ (function(module, exports, __webpack_require__) { module.exports = [ - __webpack_require__(120), - __webpack_require__(48), - __webpack_require__(57), + __webpack_require__(123), + __webpack_require__(50), + __webpack_require__(58), __webpack_require__(75), - __webpack_require__(55), - __webpack_require__(544), - __webpack_require__(82), - __webpack_require__(545), + __webpack_require__(56), + __webpack_require__(546), + __webpack_require__(83), + __webpack_require__(547), __webpack_require__(76) ]; /***/ }), -/* 544 */ +/* 546 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -60472,7 +61137,7 @@ exports.factory = factory; /***/ }), -/* 545 */ +/* 547 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -60545,16 +61210,16 @@ exports.factory = factory; /***/ }), -/* 546 */ +/* 548 */ /***/ (function(module, exports, __webpack_require__) { module.exports = [ - __webpack_require__(547) + __webpack_require__(549) ]; /***/ }), -/* 547 */ +/* 549 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -60583,15 +61248,15 @@ exports.factory = factory; /***/ }), -/* 548 */ +/* 550 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var ArgumentsError = __webpack_require__(50); +var ArgumentsError = __webpack_require__(43); var DimensionError = __webpack_require__(10); -var IndexError = __webpack_require__(51); +var IndexError = __webpack_require__(52); module.exports = [ { diff --git a/dist/math.map b/dist/math.map deleted file mode 100644 index d47237080..000000000 --- a/dist/math.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["math.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","type","config","load","typed","_create","data","format","datatype","M","Matrix","storage","matrix","","string","string, string","Array","Array | Matrix, string","Array | Matrix, string, string","toTex","0","1","2","deepMap","array","callback","skipZeros","map","x","_validate","size","dim","len","length","DimensionError","dimNext","child","isArray","_resize","defaultValue","elem","oldLen","newLen","minLen","Math","min","UNINITIALIZED","_reshape","sizes","accumulator","shift","push","slice","_squeeze","dims","ii","next","_unsqueeze","number","IndexError","validate","isScalar","validateIndex","index","isNumber","isInteger","TypeError","resize","Error","forEach","value","_defaultValue","undefined","reshape","newArray","flatArray","flatten","product","arr","reduce","prev","curr","e","squeeze","unsqueeze","outer","unshift","flat","filter","filterRegExp","regexp","entry","test","join","separator","identify","a","b","count","identifier","generalize","zeros","isFinite","round","sign","options","Infinity","isNaN","notation","precision","toFixed","toExponential","toEngineering","toPrecision","exponential","replace","digits","arguments","splitNumber","match","String","toLowerCase","SyntaxError","exponent","parseFloat","dot","indexOf","coefficients","split","parseInt","rounded","roundDigits","newExp","significandsDiff","abs","concat","expDiff","decimalIdx","decimals","decimalVal","str","toString","splitValue","pp","splice","first","lower","upper","pow","removed","pop","DBL_EPSILON","Number","EPSILON","nearlyEqual","y","epsilon","diff","max","symbols","Alpha","alpha","Beta","beta","Gamma","gamma","Delta","delta","Epsilon","varepsilon","Zeta","zeta","Eta","eta","Theta","theta","vartheta","Iota","iota","Kappa","kappa","varkappa","Lambda","lambda","Mu","mu","Nu","nu","Xi","xi","Omicron","omicron","Pi","pi","varpi","Rho","rho","varrho","Sigma","sigma","varsigma","Tau","tau","Upsilon","upsilon","Phi","phi","varphi","Chi","chi","Psi","psi","Omega","omega","true","false","inf","Inf","infinity","oo","lim","operators","transpose","factorial","dotPow","unaryPlus","unaryMinus","bitNot","not","multiply","divide","dotMultiply","dotDivide","mod","add","subtract","to","leftShift","rightArithShift","rightLogShift","equal","unequal","smaller","larger","smallerEq","largerEq","bitAnd","bitXor","bitOr","and","xor","or","defaultTemplate","units","deg","toSymbol","isUnit","substring","isBigNumber","clone","valueOf","Boolean","Date","RegExp","key","extend","prop","deepExtend","constructor","deepEqual","canDefineProperty","lazy","fn","_value","_uninitialized","set","traverse","path","obj","names","isFactory","DenseMatrix","algorithm14","inverse","dt","adata","_data","asize","_size","adt","_datatype","cf","convert","find","cdata","_iterate","f","level","av","bv","cv","j","register","compileFunction","compileFunctions","compile","node","defs","args","_compile","algorithm13","bdata","bsize","bdt","csize","RangeError","util","isString","formatArray","looksLikeFraction","formatNumber","formatBigNumber","endsWith","text","search","start","end","fraction","syntax","entries","stringify","escaped","charAt","escape","actual","expected","relation","message","stack","isDimensionError","equalScalar","boolean, boolean","number, number","BigNumber, BigNumber","eq","bigNearlyEqual","Fraction, Fraction","equals","Complex, Complex","Unit, Unit","equalBase","latex","addScalar","multiplyScalar","algorithm11","SparseMatrix","Array, Array","_validateMatrixDimensions","isMatrix","Matrix, Matrix","xsize","ysize","_multiplyVectorVector","_multiplyVectorMatrix","_multiplyMatrixVector","_multiplyMatrixMatrix","Matrix, Array","Array, Matrix","Matrix, any","any, Matrix","Array, any","any, Array","any, any","Array | Matrix | any, Array | Matrix | any, ...any","rest","result","signatures","size1","size2","af","mf","_multiplyVectorDenseMatrix","alength","bcolumns","sum","_multiplyDenseMatrixVector","_multiplySparseMatrixVector","_multiplyDenseMatrixDenseMatrix","_multiplyDenseMatrixSparseMatrix","_multiplySparseMatrixDenseMatrix","_multiplySparseMatrixSparseMatrix","arows","acolumns","row","bvalues","_values","bindex","_index","bptr","_ptr","zero","cvalues","cindex","cptr","values","ptr","jb","kb0","kb1","last","cij","mark","kb","ib","avalues","aindex","aptr","brows","w","vbi","ka0","ka1","ka","ia","p1","ic","vbij","p0","getSafeProperty","isPlainObject","isSafeProperty","isSafeMethod","setSafeProperty","safeNativeProperties","Function","validateSafeMethod","method","__proto__","safeNativeMethods","toLocaleString","math","Node","_validateScope","scope","symbol","keywords","eval","isNode","comment","expression","mathWithTransform","code","defsCode","keys","factoryCode","_ifNode","_traverse","parent","transform","_transform","replacement","nodes","cloneDeep","other","customString","handler","_toString","toHTML","customTex","_toTex","getIdentifier","getContent","algorithm03","denseMatrix","sparseMatrix","rows","columns","z","k0","k1","k","algorithm12","r","v","algorithm01","algorithm04","algorithm10","divideScalar","div","Unit, number | Fraction | BigNumber","res","_normalize","number | Fraction | BigNumber, Unit","plus","fixPrefix","algorithm05","sub","minus","_getSubstring","isIndex","strLen","range","dimension","substr","_setSubstring","chars","subset","Array, Index","Matrix, Index","Object, Index","_getObjectProperty","string, Index","Array, Index, any","Array, Index, any, any","Matrix, Index, any","Matrix, Index, any, any","string, Index, string","string, Index, string, string","Object, Index, any","_setObjectProperty","updated","mul","times","number | Fraction | BigNumber | Complex, Unit","Unit, number | Fraction | BigNumber | Complex","algorithm02","types","emitter","algorithm07","xa","xb","wa","wb","_scatter","va","vb","Index","ranges","_dimensions","_isScalar","arg","isRange","_createImmutableMatrix","ImmutableDenseMatrix","create","apply","isObjectProperty","getObjectProperty","toArray","strings","JSON","toJSON","mathjs","dimensions","fromJSON","json","number | Complex | BigNumber | Unit | boolean | null","Complex","BigNumber","Fraction","Array | Matrix","Unit","compareMatricesAndArrays","isSparseMatrix","compareArrays","isDenseMatrix","compareNatural","compareObjects","keysX","keysY","sort","naturalSort","getTypeOf","compare","compareBooleans","typeX","typeY","compareComplexNumbers","formatUnits","re","im","memoize","hasher","cache","hash","maxArgumentCount","signature","callWithRightArgumentCount","argCount","gt","isZero","lte","neg","_zeros","hasBigNumbers","toNumber","...number | BigNumber | string","parse","expr","ArgumentsError","extra_nodes","parseStart","nesting_level","conditional_level","prevPreview","nextPreview","nextNextPreview","getToken","token_type","TOKENTYPE","NULL","token","isWhitespace","DELIMITER","c2","c3","DELIMITERS","isDigitDot","isAlpha","isDigit","NAMED_DELIMITERS","SYMBOL","UNKNOWN","createSyntaxError","NUMBER","isDecimalMark","getTokenSkipNewline","openParams","closeParams","parseBlock","createError","visible","blocks","parseAssignment","BlockNode","ConstantNode","valid","parseConditional","isSymbolNode","AssignmentNode","SymbolNode","isAccessorNode","isFunctionNode","FunctionAssignmentNode","parseLogicalOr","condition","trueExpr","falseExpr","ConditionalNode","parseLogicalXor","OperatorNode","parseLogicalAnd","parseBitwiseOr","parseBitwiseXor","parseBitwiseAnd","parseRelational","params","parseShift","==","!=","<",">","<=",">=","parseConversion","<<",">>",">>>","parseRange","in","parseAddSubtract","RangeNode","parseMultiplyDivide","+","-","parseUnary","*",".*","/","./","%","isConstantNode","isOperatorNode","op","~","parsePow","parseLeftHandOperators","parseCustomNodes","!","'","parseAccessors","CustomNode","parseSymbol","parseString","FunctionNode","AccessorNode","IndexNode","dotNotation","parseStringToken","parseMatrix","cols","parseRow","items","ArrayNode","parseObject","properties","ObjectNode","parseNumber","parseParentheses","ParenthesisNode","parseEnd","col","error",",","(",")","[","]","{","}","\"",";","^",".^","&","|","^|","=",":","?","cPrev","cNext","isValidLatinOrGreek","isValidMathSymbol","high","low","nestingLevel","isValuelessUnit","compileSymbolNode","undef","jsName","err","isIndexError","deepForEach","preprocess","_get","_getSubmatrix","_set","submatrix","sSize","iSize","_fit","_setSubmatrix","dataIndex","subIndex","newSize","changed","index_i","copy","me","recurse","diagonal","kSuper","kSub","ms","swapRows","_swapRows","vi","_storage","dense","lt","_pow","predictable","yFrac","yNum","ex","NaN","_powArray","eye","px","_powMatrix","Array, number","Array, BigNumber","Matrix, number","Matrix, BigNumber","Unit, number","inv","Array | Matrix, Array | Matrix","any, Array | Matrix","isInt","cmp","isArgumentsError","getPrecedence","_node","parenthesis","getAssociativity","associativity","isAssociativeWith","nodeA","nodeB","identifierA","identifierB","associativeWith","latexLeftParens","latexRightParens","latexParens","OperatorNode:or","OperatorNode:xor","OperatorNode:and","OperatorNode:bitOr","OperatorNode:bitXor","OperatorNode:bitAnd","OperatorNode:equal","OperatorNode:unequal","OperatorNode:smaller","OperatorNode:larger","OperatorNode:smallerEq","OperatorNode:largerEq","OperatorNode:leftShift","OperatorNode:rightArithShift","OperatorNode:rightLogShift","OperatorNode:to","OperatorNode:add","OperatorNode:subtract","OperatorNode:multiply","OperatorNode:divide","OperatorNode:dotMultiply","OperatorNode:dotDivide","OperatorNode:mod","OperatorNode:unaryPlus","OperatorNode:unaryMinus","OperatorNode:bitNot","OperatorNode:not","OperatorNode:pow","OperatorNode:dotPow","OperatorNode:factorial","OperatorNode:transpose","valueType","getType","SUPPORTED_TYPES","compileConstantNode","validateNumericValue","boolean","null","every","bind","deprecated","compileFunctionNode","argsName","jsFn","jsArgs","jsScope","compileScope","isRaw","rawArgs","getUniqueArgumentName","isIndexNode","jsObject","jsProp","expandTemplate","template","regex","inputPos","exec","ReferenceError","nodeToString","isFunctionAssignmentNode","nodeToTex","latexConverter","customToTex","isPositive","isNeg","_sqrtNumber","sqrt","isNegative","wai","wbi","vc","_eyeVector","_eye","Big","one","F","minimum","number | BigNumber","number | BigNumber, string","number | BigNumber, number | BigNumber","number | BigNumber, number | BigNumber, string","Array, string","Matrix, string","implicit","compileOperatorNode","calculateNecessaryParentheses","precedence","parens","operandPrecedence","operandIdentifier","rootIdentifier","lhsParens","lhsPrecedence","assocWithLhs","rhsParens","rhsPrecedence","assocWithRhs","lhsIdentifier","rhsIdentifier","argPrecedence","assocWithArg","argAssociativity","isParenthesisNode","assoc","operand","lhs","rhs","stringifiedArgs","lhsTex","rhsTex","texifiedArgs","content","compileParenthesisNode","...Array | Matrix | number | BigNumber","prevDim","asMatrix","matrices","_concat","...string","concatDim","_reduce","mat","ret","val","tran","_switch","I","J","tmp","arraySize","isCollection","_denseTranspose","_sparseTranspose","any","transposedRow","transposed","q","algorithm06","u","scatter","combinations","isPositiveInteger","dividedBy","gte","num","Unit, string | Unit","unit","valuelessUnit","isNumeric","number | BigNumber | Fraction | boolean","Complex | Unit | string","_typeof","t","isComplex","isFraction","isChain","isHelp","compileIndexNode","childArgs","step","Range","isRangeNode","needsEnd","needsSize","some","compileRangeNode","startPrecedence","stepPrecedence","endPrecedence","endSymbols","compileArrayNode","item","isArrayNode","childNode","subScope","cs_flip","solveValidation","msize","decCoefficientToBinaryString","xe","strL","arrL","reverse","func","xBits","yBits","xSign","ySign","minBits","maxBits","minSign","shortLen","longLen","expFuncVal","outVal","twoPower","two","prevPrec","algorithm08","desc","asc","_partitionSelect","quickSelect","from","pivot","floor","random","Array | Matrix, number","Array | Matrix, number, string","Array | Matrix, number, function","distribution","distributions","randFunctions","arg1","arg2","arg3","_randomDataForMatrix","_random","randomInt","number | Array","_randomInt","number | Array, number","Array, number, number","pickRandom","possibles","_pickRandom","Array, number | Array","weights","Array, number | Array, Array | number","single","totalWeights","pick","rng","randKey","randFunc","uniform","normal","u1","u2","picked","log","cos","PI","Emitter","mixin","on","off","once","emit","toPolar","strRe","strIm","fromPolar","hasBase","numerator","denominator","nums","invalid","ceil","ResultSet","isResultSet","exp","acos","fix","NO_INT","_round","Complex, number","Complex, BigNumber","_n","number, BigNumber","toDecimalPlaces","Fraction, number","Matrix, number | BigNumber","number | Complex | BigNumber, Matrix","Array, number | BigNumber","number | Complex | BigNumber, Array","any, Object | function | number","construction","docs","bignumber","complex","createUnit","sparse","splitUnit","E","LN2","LN10","LOG2E","LOG10E","SQRT1_2","SQRT2","version","speedOfLight","description","examples","gravitationConstant","planckConstant","reducedPlanckConstant","magneticConstant","electricConstant","vacuumImpedance","coulomb","elementaryCharge","bohrMagneton","conductanceQuantum","inverseConductanceQuantum","magneticFluxQuantum","nuclearMagneton","klitzing","bohrRadius","classicalElectronRadius","electronMass","fermiCoupling","fineStructure","hartreeEnergy","protonMass","deuteronMass","neutronMass","quantumOfCirculation","rydberg","thomsonCrossSection","weakMixingAngle","efimovFactor","atomicMass","avogadro","boltzmann","faraday","firstRadiation","loschmidt","gasConstant","molarPlanckConstant","molarVolume","sackurTetrode","secondRadiation","stefanBoltzmann","wienDisplacement","molarMass","molarMassC12","gravity","planckLength","planckMass","planckTime","planckCharge","planckTemperature","derivative","lsolve","lup","lusolve","simplify","slu","usolve","qr","cbrt","cube","gcd","hypot","lcm","log10","norm","nthRoot","square","xgcd","bellNumbers","catalan","composition","stirlingS2","conj","help","distance","intersect","cross","det","diag","kron","ones","partitionSelect","trace","kldivergence","multinomial","permutations","setCartesian","setDifference","setDistinct","setIntersect","setIsSubset","setMultiplicity","setPowerset","setSize","setSymDifference","setUnion","erf","mad","mean","median","mode","prod","quantileSeq","std","acosh","acot","acoth","acsc","acsch","asec","asech","asin","asinh","atan","atanh","atan2","cosh","cot","coth","csc","csch","sec","sech","sin","sinh","tan","tanh","isPrime","category","seealso","compileAccessorNode","access","needParenthesis","isObjectNode","errorTransform","compileAssignmentNode","assign","parentObject","jsParentProperty","parentSize","parentIndex","exprPrecedence","isAssignmentNode","block","compileBlockNode","param","js","isBlockNode","compileConditionalNode","testCondition","isConditionalNode","conditionPrecedence","truePrecedence","falsePrecedence","compileFunctionAssignmentNode","jsParams","jsExpr","compileObjectNode","stringifiedKey","parsedKey","Parser","_parse","isParser","customs","getAll","remove","clear","_largest","_max","Array | Matrix, number | BigNumber","...","containsCollections","_nmean","_mean","_inv","temp","A","B","Ac","Bc","Ar","Br","_det","compute_mu","fa","_smallest","_min","_out","_strRange","includeEnd","_bigRangeInc","_bigRangeEx","_rangeInc","_rangeEx","ZERO","ONE","string, boolean","number, number, number","number, number, boolean","number, number, number, boolean","BigNumber, BigNumber, BigNumber","BigNumber, BigNumber, boolean","BigNumber, BigNumber, BigNumber, boolean","removeParens","_buildRules","rules","ruleSet","newRule","rule","ruleType","lr","context","evaluate","isAssociative","makeNode","createMakeNodeFunction","expandsym","_getExpandPlaceholderSymbol","expanded","unflattenr","_lastsym","getSplits","right","rightArgs","isCommutative","mergeMatch","match1","match2","placeholders","_exactMatch","combineChildMatches","list1","list2","merged","i1","i2","mergeChildMatches","childMatches","sets","uniqueSets","unique","_ruleMatch","isSplit","splits","splitMatches","matchSet","childMatch","SUPPORTED_CONSTANTS","simplifyConstant","simplifyCore","resolve","unflattenl","string, Object","string, Array","string, Array, Object","Node, Object","Node, Array","Node, Array, Object","visited","applyRule","commutative","repl","matches","associative","allChildren","children","findChildren","curnode","console","_unequal","conjugate","Spa","_denseLUP","_sparseLUP","L","U","ldata","lsize","udata","usize","pabsv","vjj","absv","vij","pv","lvalues","lindex","lptr","uvalues","uindex","uptr","pv_co","pv_oc","swapIndeces","kx","ky","spa","vkj","_forEachRow","vik","accumulate","swap","cs_sqr","cs_lu","SparseMatrix, number, number","order","threshold","pinv","cs_tdfs","head","post","top","cs_marked","cs_mark","SparseMatrix, Array | Matrix","_sparseForwardSubstitution","DenseMatrix, Array | Matrix","_denseForwardSubstitution","Array, Array | Matrix","xj","bj","jvalues","jindex","_sparseBackwardSubstitution","_denseBackwardSubstitution","algorithm09","ln","base","_denseTrace","_sparseTrace","kFactorial","negativeOne","kChooseI","iPower","bigFactorial","twoN","threeN","fourN","fiveN","g","real","den","twoPiSqrt","Array, function","_map","Matrix, function","_comparator","compareAsc","compareDesc","_arrayIsVector","_matrixIsVector","_sum","a1","a2","inb2","b1","b2","_median","mid","left","middle2","middle","number | BigNumber | Complex | Unit","number | BigNumber | Complex | Unit, number | BigNumber | Complex | Unit","_var","normalization","variance","DEFAULT_NORMALIZATION","_acosh","core","typedFactory","importFactory","configFactory","instance","factories","_config","instances","randomSeed","typedFunction","createTyped","isBoolean","isFunction","isDate","isRegExp","isObject","isNull","isUndefined","conversions","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","getTypeTest","hint","getName","fns","actualType","_expected","_fn","anyType","contains","Refs","categories","Param","varArgs","_types","trim","_varArgs","Signature","_params","childs","fallThrough","parseSignatures","rawSignatures","ignore","expand","signature_i","existing","filterAnyTypeSignatures","filtered","mapSignatures","normalized","hasConversions","parseTree","anys","nodeSignature","overlapping","matchingAnys","paramsStartWith","getArgs","_typed","refs","_signatures","safeName","maxParams","toCode","body","conversion","cat","ac","bc","ai","bi","toConversion","newParam","aLast","bLast","prefix","ref","getTests","tests","allTypes","exactTypes","conversion_i","_innerCode","exceptions","_exceptions","...Function","addType","addConversion","ctx","listener","self","_","evtArr","evts","liveEvents","math_import","_importFactory","isSupportedType","_import","silent","wrap","_wrap","isTypedFunction","override","_importTransform","allowedInExpressions","wrapper","existingTransform","namespace","resolver","factoryAllowedInExpressions","unsafe","chain","validateOption","MATRIX","changes","findIndex","warn","Decimal","globalScope","digitsToString","ws","indexOfLastWord","LOG_BASE","getZeroString","checkInt32","invalidArgument","checkRoundingDigits","rm","repeating","di","rd","mathpow","convertBase","baseIn","baseOut","NUMERALS","cosine","Ctor","taylorSeries","cos2x","finalise","sd","isTruncated","roundUp","xd","xdi","out","BASE","external","maxE","minE","finiteToString","isExp","nonFiniteToString","getBase10Exponent","getLn10","pr","LN10_PRECISION","precisionLimitExceeded","getPi","PI_PRECISION","getPrecision","zs","intPow","truncate","mathfloor","isOdd","maxOrMin","ltgt","naturalExponential","guard","wpr","rep","rounding","naturalLogarithm","c0","x1","x2","parseDecimal","charCodeAt","parseOther","divisor","isFloat","isHex","isBinary","isOctal","sine","sin2_x","d5","d16","d20","isHyperbolic","toLessThanHalfPi","halfPi","quadrant","divToInt","toStringBinary","MAX_DIGITS","inexact","decimalError","ps","EXP_LIMIT","crypto","getRandomValues","randomBytes","cryptoUnavailable","isDecimal","P","ROUND_UP","ROUND_DOWN","ROUND_CEIL","ROUND_FLOOR","ROUND_HALF_UP","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_CEIL","ROUND_HALF_FLOOR","EUCLID","log2","trunc","Uint32Array","modulo","toExpNeg","toExpPos","MAX_SAFE_INTEGER","absoluteValue","comparedTo","xdL","ydL","yd","xs","ys","cubeRoot","t3","t3plusx","decimalPlaces","dp","dividedToIntegerBy","greaterThan","greaterThanOrEqualTo","hyperbolicCosine","cosh2_x","d8","hyperbolicSine","sinh2_x","hyperbolicTangent","inverseCosine","inverseHyperbolicCosine","inverseHyperbolicSine","inverseHyperbolicTangent","xsd","inverseSine","inverseTangent","isPos","lessThan","lessThanOrEqualTo","logarithm","isBase10","xLTy","negated","carry","squareRoot","tangent","rL","toBinary","toDP","toFraction","maxD","d0","d1","d2","n0","n1","toHexadecimal","toHex","toNearest","toOctal","toPower","yn","toSignificantDigits","toSD","truncated","multiplyInteger","aL","bL","logBase","more","prodL","qd","rem","remL","rem0","xL","yd0","yL","yz","bool","lcase","Chain","createProxy","chainify","createLazyProxy","done","arg0","logHypot","_a","_b","parser_exit","tokens","loh","t1","t2","noIM","oneMinus","onePlus","places","toVector","errorConstructor","IntermediateInheritor","throwInvalidParam","InvalidParameter","MAX_CYCLE_LEN","DivisionByZero","p2","C","D","N","modpow","cycleLen","cycleStart","rem1","rem2","divisible","excludeWhole","whole","toLatex","toContinued","dec","cycLen","cycOff","_createFromMatrix","_createFromArray","source","density","_getsubset","_setsubset","idx","kk","mvalues","mindex","mptr","x0","y0","_getValueIndex","_remove","_insert","bottom","ins","colIndex","rowIndex","r1","c1","h","invoke","minRow","maxRow","minColumn","maxColumn","_toArray","vx","vy","_heap","FibonacciHeap","isSpa","insert","heap","extractMinimum","nodei","nodej","_minimum","oneOverLogPhi","isFibonacciHeap","degree","isEmpty","numberOfChildren","tempRight","_findMinimumNode","_decreaseKey","_cut","_cascadingCut","_linkNodes","numRoots","isImmutableDenseMatrix","...number | string | BigNumber | Range | Array | Matrix","UNIT_NONE","PREFIXES","NONE","power","BASE_DIMENSIONS","isUnitListSimplified","skipWhitespace","revert","oldIndex","tentativeNumber","tentativeIndex","parseUnit","unitName","parseCharacter","toFind","_findUnit","UNITS","prefixes","prefixLen","prefixName","calculateAngleValues","constants","rad","grad","cycle","arcsec","arcmin","assertUnitNameIsValid","isValidAlpha","valueStr","powerMultiplierCurrent","expectingUnit","powerMultiplierStack","powerMultiplierStackProduct","oldC","uStr","baseDim","UNIT_SYSTEMS","auto","allowNoUnits","_isDerived","unitValue","unitOffset","unitPower","unitPrefixValue","_getNumberConverter","offset","_denormalize","prefixValue","BASE_UNITS","inverted","valThis","valOther","getNumericIfUnitless","toNumeric","simplifyUnitListLazy","matchingBase","proposedUnitList","currentUnitSystem","matchingUnit","missingBaseDim","toSI","strNum","strDen","nNum","nDen","isImaginary","isReal","_bestPrefix","unitStr","absValue","absUnitValue","bestPrefix","bestDiff","scientific","parts","xFixed","xNumeric","xRounded","isNearlyEqual","testSum","SHORT","da","G","T","Z","Y","LONG","deca","hecto","kilo","mega","giga","tera","peta","exa","zetta","yotta","deci","centi","milli","micro","nano","pico","femto","atto","zepto","yocto","SQUARED","CUBIC","BINARY_SHORT","Ki","Mi","Gi","Ti","Ei","Zi","Yi","BINARY_LONG","kibi","mebi","gibi","tebi","pebi","exi","zebi","yobi","BTU","MM","SHORTLONG","MASS","LENGTH","TIME","CURRENT","TEMPERATURE","LUMINOUS_INTENSITY","AMOUNT_OF_SUBSTANCE","FORCE","SURFACE","VOLUME","ENERGY","POWER","PRESSURE","ELECTRIC_CHARGE","ELECTRIC_CAPACITANCE","ELECTRIC_POTENTIAL","ELECTRIC_RESISTANCE","ELECTRIC_INDUCTANCE","ELECTRIC_CONDUCTANCE","MAGNETIC_FLUX","MAGNETIC_FLUX_DENSITY","FREQUENCY","ANGLE","BIT","BASE_UNIT_NONE","meter","inch","foot","yard","mile","link","rod","angstrom","ft","mi","li","ch","mil","m2","sqin","sqft","sqyd","sqmi","sqrd","sqch","sqmil","acre","hectare","m3","litre","cuin","cuft","cuyd","teaspoon","tablespoon","drop","gtt","minim","fluiddram","fluidounce","gill","cc","cup","pint","quart","gallon","beerbarrel","oilbarrel","hogshead","fldr","floz","gi","cp","pt","qt","gal","bbl","obl","gram","ton","tonne","grain","dram","ounce","poundmass","hundredweight","stick","stone","gr","dr","oz","lbm","cwt","second","minute","hour","day","week","month","year","decade","century","millennium","hertz","reciprocal","Hz","ampere","K","degC","degF","degR","kelvin","celsius","fahrenheit","rankine","mol","mole","cd","candela","newton","dyn","dyne","lbf","poundforce","kip","joule","erg","Wh","eV","electronvolt","W","watt","hp","VAR","VA","Pa","atm","bar","torr","mmHg","mmH2O","cmH2O","farad","volt","V","ohm","henry","H","siemens","S","weber","Wb","tesla","bits","bytes","ALIASES","meters","inches","feet","yards","miles","links","rods","chains","angstroms","litres","liter","liters","teaspoons","tablespoons","minims","fluiddrams","fluidounces","gills","cups","pints","quarts","gallons","beerbarrels","oilbarrels","hogsheads","gtts","grams","tons","tonnes","grains","drams","ounces","poundmasses","hundredweights","sticks","lb","lbs","kips","acres","hectares","sqfeet","sqyard","sqmile","sqmiles","mmhg","mmh2o","cmh2o","seconds","secs","minutes","mins","hours","hr","hrs","days","weeks","months","years","radians","degrees","gradian","gradians","cycles","arcsecond","arcseconds","arcminute","arcminutes","BTUs","watts","joules","amperes","coulombs","volts","ohms","farads","webers","teslas","electronvolts","moles","si","bit","cgs","us","setUnitSystem","getUnitSystem","typeConverters","alias","deleteUnit","aliases","lastUnit","createUnitSingle","definition","defUnit","toUpperCase","newUnit","anyMatch","baseName","newBaseUnit","aliasName","number | BigNumber | Fraction | Complex, string","Object, Object","string, Unit | string | Object, Object","def","string, Unit | string | Object","Unit, Array","fixedUnit","setLazyConstant","setConstant","bigConstants","Array | Matrix, Object","doc","Help","string | Array | Matrix","string | Array | Matrix, Object","UpdateNode","...any","lastIndex","filterTransform","compileInlineExpression","_filter","Array, RegExp","Matrix, RegExp","forEachTransform","_forEach","Array | Matrix, function","isSet","mapTransform","orig","argsCount","parser","funcArgsCheck","Node, SymbolNode, Object","variable","constNodes","constTag","_derivative","Node, SymbolNode","string, SymbolNode","string, SymbolNode, Object","string, string, Object","Node, string","Node, string, Object","_simplify","deriv","_derivTex","Node, SymbolNode, ConstantNode","string, string, number","Object, ConstantNode, string","Object, SymbolNode, string","varName","Object, ParenthesisNode, string","Object, FunctionAssignmentNode, string","Object, FunctionNode | OperatorNode, string","isConst","ConstantNode, Object","SymbolNode, Object","ParenthesisNode, Object","FunctionAssignmentNode, Object","FunctionNode, Object","funcDerivative","negative","chainDerivative","OperatorNode, Object","newArgs","expValue","powMinusOne","foldFraction","_toNode","_eval","fnname","_toNumber","_exactFraction","unaryMinusNode","_fractionToNode","vn","foldOp","ignoreandcontinue","consts","vars","a0","node0","a00","a00_a1","node1","_denseQR","_sparseQR","Q","R","Qdata","Rdata","sgn","conjSgn","alphaSquared","cs_amd","cs_permute","cs_etree","cs_post","cs_counts","_vcount","unz","lnz","leftmost","tail","nque","pa","cs_fkeep","lemax","cm","_createTargetMatrix","_diag","k2","pj","nvi","pk","eln","pn","cnz","nv","elen","hhead","_initializeQuotientGraph","nel","_initializeDegreeLists","mindeg","elenk","nvk","dk","pk1","pk2","_wclear","wnvi","dext","p3","p4","nvj","jlast","ok","at","tindex","tptr","nz","t0","ata","inext","ancestor","cs_leaf","maxfirst","prevleaf","colcount","jleaf","sparent","jprev","cs_spsolve","tol","ipiv","xabs","cs_reach","lo","gvalues","gindex","gptr","gsize","cs_dfs","cs_unflip","jnew","cs_ipvec","_lusolve","SparseMatrix, Array | Matrix, number, number","Object, Array | Matrix","_toMatrix","_cbrtComplex","allRoots","arg_3","principal","_cbrtNumber","all","_cbrtUnit","negate","third","Complex, boolean","_gcdBigNumber","_gcd","number | BigNumber, Matrix","number | BigNumber, Array","Array | Matrix | number | BigNumber, Array | Matrix | number | BigNumber, ...Array | Matrix | number | BigNumber","_hypot","largest","... number | BigNumber","_lcmBigNumber","_lcm","update","_log10","_mod","_norm","sizeX","POSITIVE_INFINITY","pinf","NEGATIVE_INFINITY","ninf","maxc","cj","maxr","ri","boolean | null","number | Complex | BigNumber | boolean | null, number | BigNumber | string","Array, number | BigNumber | string","Matrix, number | BigNumber | string","_bigNthRoot","_nthRoot","_nthComplexRoot","roots","boolean | string | null","_xgcd","lastx","lasty","_xgcdBigNumber","bigBitAnd","bitwise","bigBitNot","bigBitOr","negOne","bigBitXor","bigLeftShift","bigRightArithShift","_2d","_3d","_4d","_intersect2d","p1a","p1b","p2a","p2b","o1","o2","_intersect3d","y1","z1","y2","z2","x3","y3","z3","x4","y4","z4","d1343","d4321","d1321","d4343","d2121","ta","tb","pax","pay","paz","pbx","pby","pbz","_intersectLinePlane","py","pz","Array, Array, Array","plane","Array, Array, Array, Array","Matrix, Matrix, Matrix","Matrix, Matrix, Matrix, Matrix","xCoeff","yCoeff","constant","_distancePointLine2D","Object, Object, Object","lineTwoPtY","lineTwoPtX","lineOnePtY","lineOnePtX","pointX","pointY","_parametricLine","_distancePointLine3D","_distance2d","_distance3d","xCoeffLine","yCoeffLine","pointZ","z0","pointOneX","pointOneY","pointTwoX","pointTwoY","pointOneZ","pointTwoZ","_pairwise","_distancePairwise","_objectToArray","yDiff","xDiff","radicant","zDiff","_cross","highestDimension","xSize","ySize","_createDiagonalMatrix","_getDiagonal","dm","vector","Array, number, string","Array, BigNumber, string","Matrix, number, string","Matrix, BigNumber, string","_dot","_filterCallback","_flatten","_kron","_ones","_resizeString","defaultChar","oFxNcL","oFyNcL","sre","dre","hre","ore","insensitive","xN","yN","xD","yD","cLoc","numS","_kldiv","plength","qlength","sumq","sump","qnorm","pnorm","denom","setSeed","seed","singletonRandom","seedrandom","global","ARC4","keylen","width","mask","depth","typ","mixkey","smear","stringseed","tostring","autoseed","GLOBAL","Uint8Array","navigator","plugins","screen","pool","fromCharCode","chunks","window","startdenom","significance","overflow","oldRandom","use_entropy","entropy","arc4","resetGlobal","_deepEqual","number | BigNumber | Fraction | Complex, Array | Matrix","_subset","bitarray","_sort","Array | Matrix, boolean","erf1","ysq","xnum","xden","erfc2","del","erfc3","SQRPI","MAX_NUM","THRESH","_mad","med","_mode","_prod","probOrN","sorted","probArr","dataArr","_quantileSeq","nPlusOne","intN","currProb","prob","fracPart","integerPart","integerPartNumber","number | BigNumber | Unit","_std","print","_print","string, Object, number | Object","original","_atanh","_cosh","_coth","_csch","_sech","_sinh","_tanh","Unit, Unit | string"],"mappings":"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AAa,SAMT,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,MACR4tC,SAAY,aACZr4B,QACE,SACA,gBAEFowB,YAAe,8NACfC,UACE,WACA,eACA,SACA,SACA,iBACA,uBACA,mBACA,SAEFiI,SACE,MACA,WAME,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,QACR4tC,SAAY,aACZr4B,QACE,YAEFowB,YAAe,4CACfC,UACE,iBACA,eACA,SACA,uBACA,kBAEFiI,SACE,MACA,SAOE,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,MACR4tC,SAAY,YACZr4B,QACE,QACA,UACA,aAEFowB,YACI,gEACJC,UACE,QACA,SACA,WACA,mBACA,WACA,YAEFiI,SAAY,YAMR,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,WACR4tC,SAAY,YACZr4B,QACE,QACA,kBAEFowB,YAAe,uBACfC,UACE,gBACA,UACA,YACA,cACA,cAEFiI,SACE,YAOE,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,OACR4tC,SAAY,aACZr4B,QACE,UACA,cAEFowB,YAAe,oDACfC,UACE,YACA,aACA,eACA,6BACA,8BACA,kBACA,4BACA,gCACA,mCAOE,SAAU1mC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,UACR4tC,SAAY,aACZr4B,QACE,aACA,oBAEFowB,YAAe,qJAGfC,UACE,QACA,iBACA,gBACA,WAEFiI,SACE,OACA,SAME,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,MACR4tC,SAAY,YACZr4B,QACE,QACA,aAEFowB,YACI,uCACJC,UACE,MACA,QACA,oBAEFiI,SAAa,cAMT,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,QACR4tC,SAAY,aACZr4B,QACE,WACA,eAEFowB,YACI,4LACJC,UACE,aACA,aACA,cACA,cACA,eACA,uBAEFiI,SAAY,OAAQ,QAAS,SAMzB,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,OACR4tC,SAAY,aACZr4B,QACE,WAEFowB,YACI,i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OD,SACLe,KAAQ,MACR4tC,SAAY,UACZr4B,QACE,UAEFowB,YAAe,6GACfC,UACE,WACA,YACA,UAEFiI,aAMI,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,MACR4tC,SAAY,aACZr4B,QACE,oBACA,UAEFowB,YAAe,8KACfC,UACE,kBACA,kBAEFiI,SACE,OACA,SACA,MACA,SAOE,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,MACR4tC,SAAY,aACZr4B,QACE,oBACA,SACA,eAEFowB,YAAe,iDACfC,UACE,kBACA,oBACA,oBACA,uBACA,uBACA,gCACA,iCAEFiI,SACE,OACA,SACA,MACA,OACA,MACA,MACA,SAOE,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,OACR4tC,SAAY,aACZr4B,QACE,qBACA,UACA,gBAEFowB,YAAe,mDACfC,UACE,mBACA,qBACA,qBACA,wBACA,wBACA,8BAEFiI,SACE,MACA,SACA,MACA,OACA,MACA,MACA,SAOE,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,SACR4tC,SAAY,aACZr4B,QACE,uBACA,aAEFowB,YAAe,mLACfC,UACE,kBACA,yBAEFiI,SACE,MACA,OACA,MACA,OACA,MACA,MACA,MACA,iBAOE,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,MACR4tC,SAAY,aACZr4B,QACE,oBACA,SACA,eAEFowB,YAAe,iDACfC,UACE,kBACA,oBACA,oBACA,uBACA,uBACA,gCACA,iCAEFiI,SACE,MACA,OACA,SACA,OACA,MACA,MACA,SAOE,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,OACR4tC,SAAY,aACZr4B,QACE,qBACA,UACA,4BAEFowB,YAAe,2HACfC,UACE,sBACA,8BACA,uBAEFiI,SACE,MACA,OACA,MACA,SACA,OACA,MACA,MACA,SAOE,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,OACR4tC,SAAY,aACZr4B,QACE,qBACA,WAEFowB,YAAe,qCACfC,UACE,gBACA,kBACA,sBAEFiI,SACE,MACA,OACA,MACA,SACA,MACA,MACA,MACA,SAOE,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,cACR4tC,SAAY,aACZr4B,QACE,iCACA,gDACA,+BAEFowB,YAAe,sWACfC,UACE,kCACA,yCACA,gCACA,yCAEFiI,SACE,OACA,SACA,MACA,MACA,OACA,MACA,MACA,SAME,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,MACR4tC,SAAY,aACZr4B,QACE,oBACA,SACA,yBAEFowB,YAAe,4KACfC,UACE,eACA,oBACA,mCACA,8BACA,2BAEFiI,SACE,MACA,OACA,MACA,SACA,MACA,OACA,MACA,SAOE,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,MACR4tC,SAAY,aACZr4B,QACE,oBACA,UAEFowB,YAAe,iCACfC,UACE,kBACA,oBACA,qBAEFiI,SACE,MACA,OACA,SACA,MACA,OACA,MACA,MACA,SAOE,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,MACR4tC,SAAY,aACZr4B,QACE,oBACA,SACA,yBAEFowB,YAAe,gIACfC,UACE,eACA,oBACA,mCACA,8BACA,2BAEFiI,SACE,MACA,OACA,MACA,SACA,MACA,OACA,MACA,SAOE,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,OACR4tC,SAAY,eACZr4B,QACE,WAEFowB,YAAe,oDACfC,UACE,YACA,kBAEFiI,SACE,MACA,OACA,UAOE,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,QACR4tC,SAAY,eACZr4B,QACE,YAEFowB,YAAe,6FACfC,UACE,cAEFiI,SACE,OACA,QACA,WAME,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,OACR4tC,SAAY,eACZr4B,QACE,WAEFowB,YAAe,8CACfC,UACE,YACA,iBACA,WAEFiI,SACE,MACA,UAOE,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,QACR4tC,SAAY,eACZr4B,QACE,YAEFowB,YAAe,6GACfC,UACE,WACA,cAEFiI,SACE,QACA,WAME,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,OACR4tC,SAAY,eACZr4B,QACE,WAEFowB,YAAe,8CACfC,UACE,UACA,iBACA,aAEFiI,SACE,MACA,OACA,UAOE,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,QACR4tC,SAAY,eACZr4B,QACE,YAEFowB,YAAe,sGACfC,UACE,cAEFiI,SACE,QACA,WAOE,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,OACR4tC,SAAY,eACZr4B,QACE,WAEFowB,YAAe,2CACfC,UACE,YACA,iBACA,WAEFiI,SACE,OACA,OACA,UAOE,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,QACR4tC,SAAY,eACZr4B,QACE,YAEFowB,YAAe,2CACfC,UACE,cAEFiI,SACE,QACA,WAOE,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,OACR4tC,SAAY,eACZr4B,QACE,WAEFowB,YAAe,kDACfC,UACE,YACA,kBAEFiI,SACE,MACA,OACA,UAOE,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,QACR4tC,SAAY,eACZr4B,QACE,YAEFowB,YAAe,8FACfC,UACE,cAEFiI,SACE,QACA,WAOE,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,OACR4tC,SAAY,eACZr4B,QACE,WAEFowB,YAAe,qDACfC,UACE,YACA,kBAEFiI,SACE,MACA,OACA,UAOE,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,QACR4tC,SAAY,eACZr4B,QACE,YAEFowB,YAAe,mGACfC,UACE,cAEFiI,SACE,QACA,WAOE,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,QACR4tC,SAAY,eACZr4B,QACE,eAEFowB,YACI,qEACJC,UACE,mBACA,wBACA,iBACA,iBACA,eAEFiI,SACE,MACA,MACA,SAOE,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,MACR4tC,SAAY,eACZr4B,QACE,UAEFowB,YAAe,sCACfC,UACE,SACA,kBACA,eACA,cACA,2BAEFiI,SACE,OACA,MACA,SAOE,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,OACR4tC,SAAY,eACZr4B,QACE,WAEFowB,YAAe,iDACfC,UACE,aAEFiI,SACE,OACA,OACA,UAOE,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,MACR4tC,SAAY,eACZr4B,QACE,UAEFowB,YAAe,6DACfC,UACE,SACA,cAEFiI,SACE,MACA,MACA,SAOE,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,OACR4tC,SAAY,eACZr4B,QACE,WAEFowB,YAAe,oDACfC,UACE,UACA,eAEFiI,SACE,OACA,OACA,UAOE,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,MACR4tC,SAAY,eACZr4B,QACE,UAEFowB,YAAe,4DACfC,UACE,SACA,cAEFiI,SACE,MACA,MACA,SAOE,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,OACR4tC,SAAY,eACZr4B,QACE,WAEFowB,YAAe,wEACfC,UACE,UACA,eAEFiI,SACE,OACA,OACA,UAOE,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,MACR4tC,SAAY,eACZr4B,QACE,UAEFowB,YAAe,0DACfC,UACE,SACA,cAEFiI,SACE,MACA,MACA,SAOE,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,OACR4tC,SAAY,eACZr4B,QACE,WAEFowB,YAAe,sEACfC,UACE,UACA,eAEFiI,SACE,OACA,OACA,UAOE,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,MACR4tC,SAAY,eACZr4B,QACE,UAEFowB,YAAe,oCACfC,UACE,SACA,kBACA,cACA,cACA,2BAEFiI,SACE,OACA,MACA,SAOE,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,OACR4tC,SAAY,eACZr4B,QACE,WAEFowB,YAAe,+CACfC,UACE,aAEFiI,SACE,OACA,UAOE,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,MACR4tC,SAAY,eACZr4B,QACE,UAEFowB,YAAe,uCACfC,UACE,WACA,sBACA,cACA,eAEFiI,SACE,OACA,MACA,SAOE,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,OACR4tC,SAAY,eACZr4B,QACE,WAEFowB,YAAe,kDACfC,UACE,YACA,yBAEFiI,SACE,OACA,UAOE,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,KACR4tC,SAAY,QACZr4B,QACE,YACA,eAEFowB,YAAe,8BACfC,UACE,eACA,aACA,oBAEFiI,aAMI,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,QACR4tC,SAAY,QACZr4B,QACE,YAEFowB,YAAe,sFACfC,UACE,aACA,gBACA,gBACA,sBACA,wBAEFiI,aAMI,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,SACR4tC,SAAY,QACZr4B,QACE,gBACA,4BAEFowB,YAAe,wCACfC,UACE,cACA,iBACA,aACA,iBAEFiI,SAAY,WAMR,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,QACR4tC,SAAY,QACZr4B,QACE,YAEFowB,YAAe,6CACfC,UACE,WACA,eACA,aACA,mBAEFiI,SAAY,aAAc,YAAa,aAAc,YAMjD,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,YACR4tC,SAAY,QACZr4B,QACE,gBAEFowB,YAAe,6CACfC,UACE,eACA,iBACA,2BAEFiI,SAAY,aAAc,YAAa,aAAc,YAMjD,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,aACR4tC,SAAY,QACZr4B,QACE,iBAEFowB,YAAe,uDACfC,UACE,gBACA,gBACA,iBACA,4BAEFiI,SAAY,YAAa,YAAa,aAAc,YAMhD,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,YACR4tC,SAAY,QACZr4B,QACE,gBAEFowB,YAAe,qHAEfC,UACE,eACA,eACA,4BACA,6BACA,iBACA,oBACA,kCAEFiI,SAAY,YAAa,SAAU,aAAc,aAAc,WAM3D,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,aACR4tC,SAAY,QACZr4B,QACE,iBAEFowB,YAAe,sDACfC,UACE,gBACA,gBACA,iBACA,4BAEFiI,SAAY,YAAa,YAAa,aAAc,YAMhD,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,UACR4tC,SAAY,QACZr4B,QACE,cAEFowB,YAAe,4EACfC,UACE,aACA,cACA,yBAEFiI,SAAY,YAAa,YAAa,aAAc,YAKhD,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,SACR4tC,SAAY,QACZr4B,QACE,aAEFowB,YAAe,gCACfC,UACE,YACA,YACA,aACA,yBAEFiI,SAAY,YAAa,YAAa,aAAc,gBAMhD,SAAU3uC,EAAQD,GAExBC,EAAOD,SACLe,KAAQ,SACR4tC,SAAY,QACZr4B,QACE,aAEFowB,YAAe,8BACfC,UACE,cACA,iBACA,iBACA,yBAEFiI,aAMI,SAAU3uC,EAAQD,EAASM,GAEjCL,EAAOD,SACLM,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,OAMhB,SAAUL,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAAIilB,GAAQllB,EAAK3B,EAAoB,IAoCrC,OAAO4B,GAAM,WACXU,OAAU,SAAUwkB,GAClB,MAAOD,GAAMC,GAAMrS,WAGrB+P,iBAAkB,SAAUsC,GAC1B,MAAO/jB,GAAQ+jB,EAAM,SAAU3f,GAC7B,MAAO0f,GAAM1f,GAAOsN,eA9C5B,GAAI1R,GAAU/C,EAAoB,EAoDlCN,GAAQe,KAAO,UACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAMA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAAIsf,GAASvf,EAAK3B,EAAoB,KAClCoC,EAAST,EAAK3B,EAAoB,GAgBtC,OAAO,UAAgBmB,EAAQoE,EAAOO,GACpC,IACE,GAAItD,MAAMqB,QAAQ1C,GAChB,MAAOiB,GAAOjB,GAAQ+f,OAAO3b,EAAOO,GAAO8L,SAExC,IAAIzQ,GAAmC,kBAAlBA,GAAO+f,OAC/B,MAAO/f,GAAO+f,OAAO3b,EAAOO,EAEzB,IAAsB,gBAAX3E,GAEd,MAAO+f,GAAO/f,EAAQoE,EAAOO,EAE1B,IAAsB,gBAAX3E,GAAqB,CACnC,IAAKoE,EAAMme,mBACT,KAAMhe,WAAU,kDAGlB,OADA8W,GAAgBrb,EAAQoE,EAAMoe,oBAAqB7d,GAC5C3E,EAGP,KAAM,IAAIuE,WAAU,kDAGxB,MAAOmqB,GACH,KAAM8e,GAAe9e,KA7C7B,GAAI8e,GAAiB3uC,EAAoB,IAAIke,UACzC1B,EAAkBxc,EAAoB,IAAIwc,eAiD9C9c,GAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAAIilB,GAAQllB,EAAK3B,EAAoB,IAkCrC,OAAO4B,GAAM,WACXU,OAAU,SAAUwkB,GAClB,GAAI3J,KACJ,OAAO0J,GAAMC,GAAMrS,UAAU6I,KAAKH,IAGpC84B,iBAAkB,SAAUnvB,EAAM3J,GAChC,MAAO0J,GAAMC,GAAMrS,UAAU6I,KAAKH,IAGpCqH,iBAAkB,SAAUsC,GAC1B,GAAI3J,KACJ,OAAOpa,GAAQ+jB,EAAM,SAAU3f,GAC7B,MAAO0f,GAAM1f,GAAOsN,UAAU6I,KAAKH,MAIvC2xD,yBAA0B,SAAUhoD,EAAM3J,GACxC,MAAOpa,GAAQ+jB,EAAM,SAAU3f,GAC7B,MAAO0f,GAAM1f,GAAOsN,UAAU6I,KAAKH,QAxD3C,GAAIpa,GAAU/C,EAAoB,EA8DlCN,GAAQe,KAAO,OACff,EAAQD,QAAUA,GAIZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,EAAOob,GAC3C,GAAIqoB,GAAO1jC,EAAK3B,EAAoB,IAoBpC,OAAO4B,GAAM,QACXw6B,IAAO,SAAUxmB,GACf,GAAI1D,GACAzR,EAAOmV,CAEX,IAAsB,gBAAXA,GACT,IAAK1D,IAAQ8K,GAEX,GAAIA,EAAK1b,eAAe4Q,IAAU0D,IAAWoH,EAAK9K,GAAQ,CACxDzR,EAAOyR,CACP,OAmBN,GAAI68D,GAAM3yD,EAAgBipB,EAAM5kC,EAChC,KAAKsuE,EACH,KAAM,IAAInpE,OAAM,8BAAgCnF,EAAO,IAEzD,OAAO,IAAIgB,GAAKutE,KAAKD,MAxD3B,GAAI3yD,GAAkBpc,EAAoB,IAAIoc,eA6D9C1c,GAAQsd,MAAO,EACftd,EAAQe,KAAO,OACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAGA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAAIilB,GAAQllB,EAAK3B,EAAoB,IAyCrC,OAAO4B,GAAM,SACXqtE,0BAA2BpoD,EAC3BqoD,kCAAmCroD,IAIvCnnB,EAAQe,KAAO,QACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjCL,EAAOD,SACLM,EAAoB,KACpBA,EAAoB,IACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,KACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,KACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,OAMhB,SAAUL,EAAQD,EAASM,GAEjC,YAGA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC;AAIpC,QAASutE,KAEP,KAAM,IAAIvpE,OAAM,yDAGlB,MAAOupE,GAGTzvE,EAAQe,KAAO,aACff,EAAQmT,KAAO,kBACfnT,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjCL,EAAOD,SACLM,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,OAMhB,SAAUL,EAAQD,EAASM,GAEjC,YAYA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAAImI,GAASpI,EAAK3B,EAAoB,IAGvC,OAAO4B,GAAM,UACVwtE,SAAU,SAAUx6D,GAElB,GAAIy6D,GAAYz6D,EAAKnR,OAAS,EAC1BwX,EAAOrG,EAAKy6D,EACZ5tE,GAAK+D,SAASyV,GAChBrG,EAAKy6D,GAAap0D,EAAO,EAElBxZ,EAAKiQ,YAAYuJ,KACxBrG,EAAKy6D,GAAap0D,EAAKwF,MAAM,GAG/B,KACE,MAAO1W,GAAO0Z,MAAM,KAAM7O,GAE5B,MAAOib,GACL,KAAM8e,GAAe9e,OA7B7B,GAAI8e,GAAiB3uC,EAAoB,IAAIke,SAmC7Cxe,GAAQe,KAAO,SACff,EAAQmT,KAAO,uBACfnT,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAcA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAIpC,QAAS0tE,GAAgB16D,EAAMoI,EAAMG,GACnC,GAAI/Z,GAAGH,CAiBP,OAfI2R,GAAK,KACPxR,EAAIwR,EAAK,GAAGH,UAAU6I,KAAKH,IAGzBvI,EAAK,KAGL3R,EAFExB,EAAK6nB,aAAa1U,EAAK,KAAOnT,EAAKi2B,yBAAyB9iB,EAAK,IAExDA,EAAK,GAAGH,UAAU6I,KAAKH,GAIvBoyD,EAAwB36D,EAAK,GAAIoI,EAAMG,IAI/CnW,EAAO5D,EAAGH,GArBnB,GAAIssE,GAA0B5tE,EAAK3B,EAAoB,KACnDoC,EAAST,EAAK3B,EAAoB,GAsBtCsvE,GAAgBx4C,SAAU,CAG1B,IAAI9vB,GAASpF,EAAM,UACjBg6C,kBAAmB4zB,EAEnB1zB,mBAAoB,SAAU14C,EAAGgE,GAC/B,MAAOhF,GAAOotE,EAAQpsE,EAAEwgB,UAAWxc,KAGrCqoE,gBAAiBxoE,EAEjByoE,iBAAkB,SAAUtsE,EAAGgE,GAC7B,MAAOhF,GAAO6E,EAAa7D,EAAEwgB,UAAWxc,MAM5C,OAFAJ,GAAOrE,MAAQqD,OAERspE,EAaT,QAASE,GAASpsE,EAAGH,GAEnB,GAAI2R,GAAOqR,EAAiBhjB,EAE5B,OAAO+D,GAAO5D,EAAG,SAAU0C,EAAOP,EAAOvC,GAEvC,MAAa,KAAT4R,EACK3R,EAAS6C,GAEA,IAAT8O,EACA3R,EAAS6C,GAAQP,EAAQ,IAGzBtC,EAAS6C,GAAQP,EAAQ,GAAIvC,KAhF1C,GAAIgE,GAAShH,EAAoB,GAAGgH,OAChCC,EAAejH,EAAoB,GAAGiH,aACtCgf,EAAmBjmB,EAAoB,IAAIimB,gBAmF/CvmB,GAAQe,KAAO,SACff,EAAQmT,KAAO,uBACfnT,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAYA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAGpC,QAAS+tE,GAAiB/6D,EAAMoI,EAAMG,GACpC,GAAI/Z,GAAGH,CAiBP,OAfI2R,GAAK,KACPxR,EAAIwR,EAAK,GAAGH,UAAU6I,KAAKH,IAGzBvI,EAAK,KAGL3R,EAFIxB,EAAK6nB,aAAa1U,EAAK,KAAOnT,EAAKi2B,yBAAyB9iB,EAAK,IAE1DA,EAAK,GAAGH,UAAU6I,KAAKH,GAIvBoyD,EAAwB36D,EAAK,GAAIoI,EAAMG,IAI/CyyD,EAASxsE,EAAGH,GApBrB,GAAIssE,GAA0B5tE,EAAK3B,EAAoB,IAsBvD2vE,GAAiB74C,SAAU,CAG3B,IAAI84C,GAAWhuE,EAAM,WACnBiuE,2BAA4B,SAAU7sE,EAAOC,GAE3C,GAAI2R,GAAOqR,EAAiBhjB,GAExB+tB,EAAU,SAAUlrB,EAAOP,GACzB/C,MAAMqB,QAAQiC,GAChBD,EAAQC,EAAO,SAAUlC,EAAOzD,GAE9B6wB,EAAQptB,EAAO2B,EAAMwE,OAAO5J,EAAI,MAKrB,IAATyU,EACF3R,EAAS6C,GAEO,IAAT8O,EACP3R,EAAS6C,EAAOP,GAGhBtC,EAAS6C,EAAOP,EAAOvC,GAI7BguB,GAAQhuB,EAAM4O,gBAIlB,OAAO+9D,GAhET,GAAI1pD,GAAmBjmB,EAAoB,IAAIimB,iBAC3CpgB,EAAU7F,EAAoB,GAAG6F,OAkErCnG,GAAQe,KAAO,UACff,EAAQmT,KAAO,uBACfnT,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YASA,SAASP,GAASgC,EAAMC,EAAQC,GAE9B,MAAO,YAEL,IAAK,GADDiT,MACKzU,EAAI,EAAG4E,EAAK8D,UAAUpF,OAAQtD,EAAI4E,EAAI5E,IAAK,CAClD,GAAIijB,GAAMva,UAAU1I,EAGpB,IAAIsB,EAAK4hB,QAAQD,GACfA,EAAIvN,QACJuN,EAAItN,KAAQsN,EAAI0a,KAAO,EAAI,EAAI,MAE5B,IAAI1a,GAAOA,EAAI0sD,SAAU,EAC5B1sD,EAAMA,EAAIjgB,IAAI,SAAUwc,GAAK,MAAOA,GAAI,QAErC,IAAIle,EAAKoC,QAAQuf,IAAQ3hB,EAAKqW,SAASsL,GAC1CA,EAAMA,EAAIjgB,IAAI,SAAUwc,GAAK,MAAOA,GAAI,QAErC,IAAIle,EAAK+D,SAAS4d,GACrBA,QAEG,IAAI3hB,EAAKiQ,YAAY0R,GACxBA,EAAMA,EAAIuD,WAAa,MAEpB,IAAmB,gBAARvD,GAId,KAAM,IAAI1d,WAAU,+DAGtBkP,GAAKzU,GAAKijB,EAGZ,GAAIlD,GAAM,GAAIze,GAAKuhB,KAEnB,OADAvhB,GAAKuhB,MAAMS,MAAMvD,EAAKtL,GACfsL,GAIXxgB,EAAQe,KAAO,QACff,EAAQmT,KAAO,uBACfnT,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAYA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAIpC,QAASmuE,GAAan7D,EAAMoI,EAAMG,GAChC,GAAI/Z,GAAGH,CAiBP,OAfI2R,GAAK,KACPxR,EAAIwR,EAAK,GAAGH,UAAU6I,KAAKH,IAGzBvI,EAAK,KAGL3R,EAFExB,EAAK6nB,aAAa1U,EAAK,KAAOnT,EAAKi2B,yBAAyB9iB,EAAK,IAExDA,EAAK,GAAGH,UAAU6I,KAAKH,GAIvBoyD,EAAwB36D,EAAK,GAAIoI,EAAMG,IAI/Cha,EAAIC,EAAGH,GArBhB,GAAIssE,GAA0B5tE,EAAK3B,EAAoB,KACnDoC,EAAST,EAAK3B,EAAoB,GAsBtC+vE,GAAaj5C,SAAU,CAGvB,IAAI3zB,GAAMvB,EAAM,OACdg6C,kBAAmB,SAAUx4C,EAAGH,GAC9B,MAAO44C,GAAKz4C,EAAGH,EAAUG,IAG3B04C,mBAAoB,SAAU14C,EAAGH,GAC/B,MAAOb,GAAOy5C,EAAKz4C,EAAEwO,UAAW3O,EAAUG,MAI9C,OAAO2sE,GAWT,QAASl0B,GAAM74C,EAAOC,EAAU+sE,GAI9B,QAASh/C,GAAQlrB,EAAOP,GACtB,MAAI/C,OAAMqB,QAAQiC,GACT3C,EAAI2C,EAAO,SAAUlC,EAAOzD,GAEjC,MAAO6wB,GAAQptB,EAAO2B,EAAMwE,OAAO5J,EAAI,MAKvB,IAAd8vE,EACKhtE,EAAS6C,GAEK,IAAdmqE,EACAhtE,EAAS6C,EAAOP,GAGhBtC,EAAS6C,EAAOP,EAAOyqE,GAlBpC,GAAIC,GAAYhqD,EAAiBhjB,EAuBjC,OAAO+tB,GAAQhuB,MAlFjB,GAAIijB,GAAmBjmB,EAAoB,IAAIimB,iBAC3C9iB,EAAMnD,EAAoB,GAAGmD,GAoFjCzD,GAAQe,KAAO,MACff,EAAQmT,KAAO,uBACfnT,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAaA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAAI0J,GAAM3J,EAAK3B,EAAoB,KAEnC,OAAO4B,GAAM,OACXwtE,SAAU,SAAUx6D,GAElB,GAAmB,GAAfA,EAAKnR,QAAew4B,EAAarnB,EAAK,IAAK,CAC7C,GAAIrR,GAAMqR,EAAK,EACXnT,GAAK+D,SAASjC,GAChBqR,EAAK,GAAKrR,EAAM,EAET9B,EAAKiQ,YAAYnO,KACxBqR,EAAK,GAAKrR,EAAIkd,MAAM,IAIxB,IACE,MAAOnV,GAAImY,MAAM,KAAM7O,GAEzB,MAAOib,GACL,KAAM8e,GAAe9e,OA9B7B,GAAI8e,GAAiB3uC,EAAoB,IAAIke,UACzC+d,EAAej8B,EAAoB,GAmCvCN,GAAQe,KAAO,MACff,EAAQmT,KAAO,uBACfnT,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAaA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAAI2qC,GAAO5qC,EAAK3B,EAAoB,KAEpC,OAAO4B,GAAM,QACXwtE,SAAU,SAAUx6D,GAElB,GAAmB,GAAfA,EAAKnR,QAAew4B,EAAarnB,EAAK,IAAK,CAC7C,GAAIrR,GAAMqR,EAAK,EACXnT,GAAK+D,SAASjC,GAChBqR,EAAK,GAAKrR,EAAM,EAET9B,EAAKiQ,YAAYnO,KACxBqR,EAAK,GAAKrR,EAAIkd,MAAM,IAIxB,IACE,MAAO8rB,GAAK9oB,MAAM,KAAM7O,GAE1B,MAAOib,GACL,KAAM8e,GAAe9e,OA9B7B,GAAI8e,GAAiB3uC,EAAoB,IAAIke,UACzC+d,EAAej8B,EAAoB,GAmCvCN,GAAQe,KAAO,OACff,EAAQmT,KAAO,uBACfnT,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAaA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAAIyC,GAAM1C,EAAK3B,EAAoB,KAEnC,OAAO4B,GAAM,OACXwtE,SAAU,SAAUx6D,GAElB,GAAmB,GAAfA,EAAKnR,QAAew4B,EAAarnB,EAAK,IAAK,CAC7C,GAAIrR,GAAMqR,EAAK,EACXnT,GAAK+D,SAASjC,GAChBqR,EAAK,GAAKrR,EAAM,EAET9B,EAAKiQ,YAAYnO,KACxBqR,EAAK,GAAKrR,EAAIkd,MAAM,IAIxB,IACE,MAAOpc,GAAIof,MAAM,KAAM7O,GAEzB,MAAOib,GACL,KAAM8e,GAAe9e,OA9B7B,GAAI8e,GAAiB3uC,EAAoB,IAAIke,UACzC+d,EAAej8B,EAAoB,GAmCvCN,GAAQe,KAAO,MACff,EAAQmT,KAAO,uBACfnT,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YASA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAAIif,GAAQlf,EAAK3B,EAAoB,KAErC,OAAO4B,GAAM,SACXwtE,SAAU,SAAUx6D,GAClB,GAAIy6D,GAAYz6D,EAAKnR,OAAS,EAC1BwX,EAAOrG,EAAKy6D,EAMhB,OALoB,iBAATp0D,IAETrG,EAAKjQ,MAAK,GAGLkc,EAAM4C,MAAM,KAAM7O,MAK/BlV,EAAQe,KAAO,QACff,EAAQmT,KAAO,uBACfnT,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAWA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAAIsf,GAASvf,EAAK3B,EAAoB,IAEtC,OAAO4B,GAAM,UACXwtE,SAAU,SAAUx6D,GAClB,IACE,MAAOsM,GAAOuC,MAAM,KAAM7O,GAE5B,MAAOib,GACL,KAAM8e,GAAe9e,OAjB7B,GAAI8e,GAAiB3uC,EAAoB,IAAIke,SAuB7Cxe,GAAQe,KAAO,SACff,EAAQmT,KAAO,uBACfnT,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAMA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAcpC,QAASotE,GAAKD,GACZ,KAAMjvE,eAAgBkvE,IACpB,KAAM,IAAI9lE,aAAY,mDAGxB,KAAK6lE,EAAM,KAAM,IAAInpE,OAAM,yBAE3B9F,MAAKivE,IAAMA,EApBb,GAAImB,GAASvuE,EAAK3B,EAAoB,OA0GtC,OAhFAgvE,GAAK3tE,UAAUI,KAAO,OACtButE,EAAK3tE,UAAUs8B,QAAS,EAOxBqxC,EAAK3tE,UAAUgJ,SAAW,WACxB,GAAI0kE,GAAMjvE,KAAKivE,QACXzuC,EAAO,IAcX,IAZIyuC,EAAItuE,OACN6/B,GAAQ,SAAWyuC,EAAItuE,KAAO,QAE5BsuE,EAAI1gC,WACN/N,GAAQ,aAAeyuC,EAAI1gC,SAAW,QAEpC0gC,EAAI3oC,cACN9F,GAAQ,qBAAuByuC,EAAI3oC,YAAc,QAE/C2oC,EAAI/4D,SACNsqB,GAAQ,gBAAkByuC,EAAI/4D,OAAO3O,KAAK,UAAY,QAEpD0nE,EAAI1oC,SAAU,CAChB/F,GAAQ,aACR,KAAK,GAAIngC,GAAI,EAAGA,EAAI4uE,EAAI1oC,SAAS5iC,OAAQtD,IAAK,CAC5C,GAAI2mB,GAAOioD,EAAI1oC,SAASlmC,EACxBmgC,IAAQ,OAASxZ,EAAO,IAExB,IAAI5G,EACJ,KAEEA,EAAMgwD,EAAO5yD,KAAKwJ,GAEpB,MAAOpgB,GACLwZ,EAAMxZ,EAEIV,SAARka,GAAsBze,EAAKk8B,OAAOzd,KACpCogB,GAAQ,WAAah+B,EAAOP,OAAOme,GAAM7X,UAAW,KAAO,MAG/Di4B,GAAQ,KAMV,MAJIyuC,GAAIzgC,SAAWygC,EAAIzgC,QAAQ7qC,SAC7B68B,GAAQ,aAAeyuC,EAAIzgC,QAAQjnC,KAAK,MAAQ,MAG3Ci5B,GAMT0uC,EAAK3tE,UAAU0iB,OAAS,WACtB,GAAIjR,GAAM3R,EAAOwQ,MAAM7R,KAAKivE,IAE5B,OADAj8D,GAAIkR,OAAS,OACNlR,GAQTk8D,EAAK9qD,SAAW,SAAUC,GACxB,GAAI4qD,KACJ,KAAK,GAAI78D,KAAQiS,GACF,WAATjS,IACF68D,EAAI78D,GAAQiS,EAAKjS,GAGrB,OAAO,IAAI88D,GAAKD,IAMlBC,EAAK3tE,UAAUuQ,QAAUo9D,EAAK3tE,UAAUgJ,SAEjC2kE,EA9GT,GAAI7tE,GAASnB,EAAoB,GAC7BsC,EAAStC,EAAoB,EAgHjCN,GAAQe,KAAO,OACff,EAAQmT,KAAO,OACfnT,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjCL,EAAOD,SACLM,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,OAMhB,SAAUL,EAAQD,EAASM,GAEjCL,EAAOD,SACLM,EAAoB,KAGpBA,EAAoB,KAGpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KAGpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,OAMhB,SAAUL,EAAQD,EAASM,GAEjC,YAGA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAurBpC,QAASuuE,GAAcz7D,GAErB,GAAkB,OAAbA,EAAKjU,MAA8B,WAAbiU,EAAKjU,MAA0C,GAApBiU,EAAKE,KAAKnR,OAAhE,CAQA,IAAK,GAAItD,GAAI,EAAGA,EAAIuU,EAAKE,KAAKnR,SAAUtD,EACtCuU,EAAKE,KAAKzU,GAAK,GAAIgpB,GAAa,EAIlC,MADAzU,GAAKD,UAAU6I,OACT,GAAI1X,OAAM,uCArsBlB,GAAIihB,GAAQllB,EAAK3B,EAAoB,KACjC2pC,EAAWhoC,EAAK3B,EAAoB,MACpCmpB,EAAexnB,EAAK3B,EAAoB,KACxC8sB,EAAenrB,EAAK3B,EAAoB,KACxCkqB,EAAevoB,EAAK3B,EAAoB,KACxC6tB,EAAkBlsB,EAAK3B,EAAoB,KAC3CwpB,EAAa7nB,EAAK3B,EAAoB,KAwCtCupC,EAAa3nC,EAAM,cACrBwuE,2BAA4B,SAAUtpD,EAAMupD,EAAUpoE,GACpD,GAAIqoE,KACJC,GAASD,EAAYxpD,EAAMupD,EAAS5vE,KACpC,IAAIyf,GAAMswD,EAAY1pD,EAAMwpD,EAC5B,OAAOroE,GAAQ0hC,SAAWA,EAASzpB,GAAOA,GAE5CuwD,mBAAoB,SAAU3pD,EAAMupD,GAClC,MAAO9mC,GAAWziB,EAAMupD,GAAW1mC,UAAU,KAG/C+mC,qBAAsB,SAAU5pD,EAAMupD,GACpC,MAAO9mC,GAAW1iB,EAAMC,GAAOupD,IAEjCM,6BAA8B,SAAU7pD,EAAMupD,EAAUpoE,GACtD,MAAOshC,GAAW1iB,EAAMC,GAAOupD,EAAUpoE,IAG3C1F,iBAAkB,SAAUukB,EAAMupD,GAChC,MAAO9mC,GAAW1iB,EAAMC,GAAOD,EAAMwpD,KAEvCO,yBAA0B,SAAU9pD,EAAMupD,EAAUpoE,GAClD,MAAOshC,GAAW1iB,EAAMC,GAAOD,EAAMwpD,GAAWpoE,IAGlD4oE,eAAgB,SAAU/pD,EAAMupD,GAC9B,MAAO9mC,GAAWziB,EAAMD,EAAMwpD,KAEhCS,uBAAwB,SAAUhqD,EAAMupD,EAAUpoE,GAChD,MAAOshC,GAAWziB,EAAMD,EAAMwpD,GAAWpoE,KAkB7CshC,GAAWwnC,WAAY,EAEvBxnC,EAAW5mC,MAAQ,SAASquE,GAC1B,MAAOC,GAAUxtD,MAAM,KAAMutD,EAAMp8D,MAGrC,IAAIq8D,GAAYrvE,EAAM,aACpB6uE,mBAAoB,SAAU3pD,EAAM1jB,GAClC,MAAO6tE,GAAUnqD,EAAKzc,WAAYjH,EAAEiH,WAAY,IAElD6mE,iCAAkC,SAAUpqD,EAAM1jB,EAAGk2C,GACnD,MAAO23B,GAAUnqD,EAAKzc,WAAYjH,EAAE3C,KAAM64C,EAAMxzC,QAElDqrE,yBAA0B,SAAUrqD,EAAM1jB,EAAGk2C,GAC3C,GAAI94C,EAOJ,OALEA,GADY,IAAV84C,EACE,aAAel2C,EAAI,IAGnB,OAASk2C,EAAQ,YAAcl2C,EAAI,KAAOk2C,EAAQ,KAEjD94C,EAAI,UAAYsmB,EAAO,cAmB9BypD,EAAW3uE,EAAM,YACnBwvE,+BAAgC,SAAUd,EAAY57D,GACpD,MAAO47D,GAAW57D,IAAQ,GAG5B28D,6BAA8B,SAAUf,EAAY57D,EAAM48D,GAGxD,MAAI58D,GAAKjU,MAAQ6wE,IACRhB,EAAW57D,IAAQ,IAK9B68D,kCAAmC,SAAUjB,EAAY57D,EAAM48D,GAC7D,MAAOf,GAASD,EAAY57D,EAAKomB,QAASw2C,IAG5CE,yCAA0C,SAAUlB,EAAY57D,EAAM48D,GACpE,MAAI58D,GAAK8V,OAAOlhB,QAAQgoE,KAAY,EAC3BhB,EAAW57D,IAAQ,EAErB67D,EAASD,EAAY57D,EAAKoS,KAAMwqD,IAGzCG,8CAA+C,SAAUnB,EAAY57D,EAAM48D,GACzE,GAAwB,GAApB58D,EAAKE,KAAKnR,OAAa,CAEzB,IAAK,GADDiuE,GAAUnB,EAASD,EAAY57D,EAAKE,KAAK,GAAI08D,GACxCnxE,EAAI,EAAGA,EAAIuU,EAAKE,KAAKnR,SAAUtD,EACtCuxE,EAAUnB,EAASD,EAAY57D,EAAKE,KAAKzU,GAAImxE,IAAYI,CAG3D,IAAIA,EACF,MAAOpB,GAAW57D,IAAQ,EAG9B,OAAO,KAWP87D,EAAc5uE,EAAM,eACtB+vE,uBAAwB,SAAUj9D,GAC/B,MAAO,IAAIyU,GAAa,IAAKzU,EAAKmhB,YAGrC+7C,qBAAsB,SAAUl9D,EAAM47D,GACpC,MAAyBtqE,UAArBsqE,EAAW57D,GACN,GAAIyU,GAAa,IAAKznB,EAAOwD,QAE/B,GAAIikB,GAAa,IAAKznB,EAAOwD,SAGtC2sE,0BAA2B,SAAUn9D,EAAM47D,GACzC,MAAO,IAAIziD,GAAgB2iD,EAAY97D,EAAKomB,QAASw1C,KAGvDwB,iCAAkC,SAAUp9D,EAAM47D,GAChD,MAAyBtqE,UAArBsqE,EAAW57D,GACN,GAAIyU,GAAa,IAAKznB,EAAOwD,QAE/BsrE,EAAY97D,EAAKoS,KAAMwpD,IAGhCyB,uBAAwB,SAAUr9D,EAAM47D,GAKtC,GAJwB,GAApB57D,EAAKE,KAAKnR,QACZ0sE,EAAcz7D,GAGS1O,SAArBsqE,EAAW57D,GACb,MAAO,IAAIyU,GAAa,IAAKznB,EAAOwD,OAGtC,IACIm8B,GAKA2wC,EANA5wC,EAAO1sB,EAAKE,KAAK,GAGjBoL,GAAM,EACNiyD,GAAW,CAGf,QAAQv9D,EAAKjU,MACX,IAAK,OAEHuf,GAAM,EACNgyD,EAAiB,GAAI9nD,GAAa,IAAK,YACrC,GAAIf,GAAa,IAAKznB,EAAOwD,QAC7B,GAAIglB,GAAa,IAAK,OACpBkX,EACA,GAAIlX,GAAa,IAAK,UACpB,GAAIf,GAAa,IAAKznB,EAAOwD,QAC7B,GAAIikB,GAAa,IAAKznB,EAAOwD,aAInC,MACF,KAAK,OACL,IAAK,UAEH,GAAwB,GAApBwP,EAAKE,KAAKnR,OAAa,CACzBuc,GAAM,EACNgyD,EAAiB,GAAI9nD,GAAa,IAAK,YACrC,GAAIf,GAAa,IAAKznB,EAAOwD,QAC7B,GAAI4nB,GAAa,QAASsU,KAE5B,OAYF,MARAC,GAAO,GAAInX,GAAa,IAAK,UAC3B,GAAIf,GAAa,IAAKznB,EAAOwD,QAC7BwP,EAAKE,KAAK,KAIZ07D,EAAWjvC,GAAQivC,EAAW57D,EAAKE,KAAK,IAEjC47D,EAAY,GAAItmD,GAAa,IAAK,OAAQkX,EAAMC,IAAQivC,EACjE,KAAK,QACHjvC,EAAO,GAAIlY,GAAa,KAAMznB,EAAOwD,OACvC,KAAK,MACH,GAAKm8B,GAA4B,GAApB3sB,EAAKE,KAAKnR,OAGhB,CAAA,IAAI49B,GAAqCr7B,SAA7BsqE,EAAW57D,EAAKE,KAAK,IAQtC,MAAO47D,GAAY,GAAItmD,GAAa,IAAK,UACrC,GAAI4C,GAAa,OAAQsU,IACzB,GAAItU,GAAa,OAAQpY,EAAKE,KAAK,OACjC07D,EATN0B,GAAiB,GAAI9nD,GAAa,IAAK,YACrCkX,EAAKzvB,QACL,GAAImb,GAAa,OAAQuU,GAAQ3sB,EAAKE,KAAK,WAL7Co9D,GAAiB5wC,EAAKzvB,OAexBqO,IAAM,CACN,MACF,KAAK,MAEHgyD,EAAiB,GAAIllD,GAAa,OAAQsU,EAAKzvB,SAC/C,MACF,KAAK,MAEHqgE,EAAiB,GAAIllD,GAAa,OAAQsU,EAAKzvB,SAC/C,MACF,KAAK,MAEHqgE,EAAiB,GAAI9nD,GAAa,IAAK,cACrC,GAAI4C,GAAa,OAAQsU,EAAKzvB,WAEhC,MACF,KAAK,MAEHqgE,EAAiB,GAAI9nD,GAAa,IAAK,OACrC,GAAI4C,GAAa,OAAQsU,EAAKzvB,UAC9B,GAAIwX,GAAa,IAAKznB,EAAOwD,SAE/B,MACF,KAAK,MAEH8sE,EAAiB,GAAI9nD,GAAa,IAAK,YACrCxV,EACA,GAAIoY,GAAa,OAAQsU,EAAKzvB,WAEhC,MACF,KAAK,MAEHsgE,GAAW,EACXD,EAAiB,GAAI9nD,GAAa,IAAK,YACrCxV,EACA,GAAIoY,GAAa,OAAQsU,EAAKzvB,WAEhC,MACF,KAAK,MAEHsgE,GAAW,EACXD,EAAiB,GAAI9nD,GAAa,IAAK,OACrC,GAAI4C,GAAa,OAAQsU,EAAKzvB,UAC9B,GAAIwX,GAAa,IAAKznB,EAAOwD,SAE/B,MACF,KAAK,OAEH8a,GAAM,EACNgyD,EAAiB,GAAIllD,GAAa,QAChC,GAAI5C,GAAa,IAAK,YACpB,GAAIf,GAAa,IAAKznB,EAAOwD,QAC7B,GAAIglB,GAAa,IAAK,OACpBkX,EAAKzvB,QACL,GAAIwX,GAAa,IAAKznB,EAAOwD,aAInC,MACF,KAAK,OAEH8a,GAAM,EACNiyD,GAAW,EACXD,EAAiB,GAAIllD,GAAa,QAChC,GAAI5C,GAAa,IAAK,YACpB,GAAIf,GAAa,IAAKznB,EAAOwD,QAC7B,GAAIglB,GAAa,IAAK,OACpBkX,EAAKzvB,QACL,GAAIwX,GAAa,IAAKznB,EAAOwD,aAInC,MACF,KAAK,OAEH8a,GAAM,EACNgyD,EAAiB,GAAI9nD,GAAa,IAAK,OACrC,GAAIA,GAAa,IAAK,OACpBkX,EAAKzvB,QACL,GAAIwX,GAAa,IAAKznB,EAAOwD,UAE/B,GAAIikB,GAAa,IAAKznB,EAAOwD,SAE/B,MACF,KAAK,OAEH8a,GAAM,EACNgyD,EAAiB,GAAI9nD,GAAa,IAAK,YACrC,GAAI4C,GAAa,OAAQsU,EAAKzvB,UAC9B,GAAImb,GAAa,QACf,GAAI5C,GAAa,IAAK,YACpB,GAAIA,GAAa,IAAK,OACpBkX,EAAKzvB,QACL,GAAIwX,GAAa,IAAKznB,EAAOwD,UAE/B,GAAIikB,GAAa,IAAKznB,EAAOwD,aAInC,MACF,KAAK,OAEH8a,GAAM,EACNiyD,GAAW,EACXD,EAAiB,GAAI9nD,GAAa,IAAK,YACrC,GAAI4C,GAAa,OAAQsU,EAAKzvB,UAC9B,GAAImb,GAAa,QACf,GAAI5C,GAAa,IAAK,YACpB,GAAIA,GAAa,IAAK,OACpBkX,EAAKzvB,QACL,GAAIwX,GAAa,IAAKznB,EAAOwD,UAE/B,GAAIikB,GAAa,IAAKznB,EAAOwD,aAInC,MACF,KAAK,OAEH8a,GAAM,EACNiyD,GAAW,EACXD,EAAiB,GAAI9nD,GAAa,IAAK,OACrC,GAAIA,GAAa,IAAK,OACpBkX,EAAKzvB,QACL,GAAIwX,GAAa,IAAKznB,EAAOwD,UAE/B,GAAIikB,GAAa,IAAKznB,EAAOwD,SAE/B,MACF,KAAK,OAEH8sE,EAAiB,GAAIllD,GAAa,QAASsU,EAAKzvB,SAChD,MACF,KAAK,OAEHqgE,EAAiB,GAAIllD,GAAa,QAASsU,EAAKzvB,SAChD,MACF,KAAK,OAEHqgE,EAAiB,GAAI9nD,GAAa,IAAK,OACrC,GAAI4C,GAAa,QAASsU,EAAKzvB,UAC/B,GAAIwX,GAAa,IAAKznB,EAAOwD,SAE/B,MACF,KAAK,OAEH+sE,GAAW,EACXD,EAAiB,GAAI9nD,GAAa,IAAK,YACrCxV,EACA,GAAIoY,GAAa,QAASsU,EAAKzvB,WAEjC,MACF,KAAK,OAEHsgE,GAAW,EACXD,EAAiB,GAAI9nD,GAAa,IAAK,YACrCxV,EACA,GAAIoY,GAAa,QAASsU,EAAKzvB,WAEjC,MACF,KAAK,OAEHsgE,GAAW,EACXD,EAAiB,GAAI9nD,GAAa,IAAK,OACrC,GAAI4C,GAAa,QAASsU,EAAKzvB,UAC/B,GAAIwX,GAAa,IAAKznB,EAAOwD,SAE/B,MACF,KAAK,QAEH8a,GAAM,EACNgyD,EAAiB,GAAIllD,GAAa,QAChC,GAAI5C,GAAa,IAAK,OACpB,GAAIA,GAAa,IAAK,OACpBkX,EAAKzvB,QACL,GAAIwX,GAAa,IAAKznB,EAAOwD,UAE/B,GAAIikB,GAAa,IAAKznB,EAAOwD,WAGjC,MACF,KAAK,QAEH8a,GAAM,EACNgyD,EAAiB,GAAIllD,GAAa,QAChC,GAAI5C,GAAa,IAAK,YACpB,GAAIA,GAAa,IAAK,OACpBkX,EAAKzvB,QACL,GAAIwX,GAAa,IAAKznB,EAAOwD,UAE/B,GAAIikB,GAAa,IAAKznB,EAAOwD,WAGjC,MACF,KAAK,QAEH8a,GAAM,EACNgyD,EAAiB,GAAI9nD,GAAa,IAAK,YACrC,GAAIf,GAAa,IAAKznB,EAAOwD,QAC7B,GAAIglB,GAAa,IAAK,OACpBkX,EAAKzvB,QACL,GAAIwX,GAAa,IAAKznB,EAAOwD,WAGjC,MACF,KAAK,QAEH8a,GAAM,EACNiyD,GAAW,EACXD,EAAiB,GAAI9nD,GAAa,IAAK,YACrCkX,EAAKzvB,QACL,GAAImb,GAAa,QACf,GAAI5C,GAAa,IAAK,YACpB,GAAIf,GAAa,IAAKznB,EAAOwD,QAC7B,GAAIglB,GAAa,IAAK,OACpBkX,EAAKzvB,QACL,GAAIwX,GAAa,IAAKznB,EAAOwD,eAKrC,MACF,KAAK,QAEH8a,GAAM,EACNiyD,GAAW,EACXD,EAAiB,GAAI9nD,GAAa,IAAK,YACrC,GAAI4C,GAAa,OAAQsU,EAAKzvB,UAC9B,GAAImb,GAAa,QACf,GAAI5C,GAAa,IAAK,OACpB,GAAIA,GAAa,IAAK,OACpBkX,EAAKzvB,QACL,GAAIwX,GAAa,IAAKznB,EAAOwD,UAE/B,GAAIikB,GAAa,IAAKznB,EAAOwD,aAInC,MACF,KAAK,QAEH8a,GAAM,EACNiyD,GAAW,EACXD,EAAiB,GAAI9nD,GAAa,IAAK,YACrC,GAAIf,GAAa,IAAKznB,EAAOwD,QAC7B,GAAIglB,GAAa,IAAK,OACpBkX,EAAKzvB,QACL,GAAIwX,GAAa,IAAKznB,EAAOwD,WAGjC,MACF,KAAK,MAEH8sE,EAAiB,GAAI9nD,GAAa,IAAK,UACrC,GAAI4C,GAAa,GAAItD,GAAW,QAAS4X,EAAKzvB,UAC9CyvB,EAAKzvB,SAEP,MACF,KAAK,QACL,QAAS,KAAM,IAAI/L,OAAM,aAAe8O,EAAKjU,KAAO,iCAGtD,GAAI0rB,GAAImT,CACJtf,IACFmM,EAAK,IACLmT,EAAO,WAEPnT,EAAK,IACLmT,EAAO,WAMT,IAAI4yC,GAAkB1B,EAAYpvC,EAAMkvC,EAIxC,OAHI2B,KACFC,EAAkB,GAAIhoD,GAAa,IAAK,cAAegoD,KAElD,GAAIhoD,GAAaiC,EAAImT,GAAO4yC,EAAiBF,KAGtDG,uBAAwB,SAAUz9D,EAAM47D,GACtC,GAAyBtqE,SAArBsqE,EAAW57D,GACb,MAAO,IAAIyU,GAAa,IAAKznB,EAAOwD,OAGtC,IAAIk8B,GAAO1sB,EAAKE,KAAK,GACjBysB,EAAO3sB,EAAKE,KAAK,EAErB,QAAQF,EAAKyX,IACX,IAAK,IACL,IAAK,IAEH,MAAwB,IAApBzX,EAAKE,KAAKnR,OACL,GAAIymB,GAAaxV,EAAKyX,GAAIzX,EAAKlC,IAAKg+D,EAAYpvC,EAAMkvC,KAIxD,GAAIpmD,GAAaxV,EAAKyX,GAAIzX,EAAKlC,IACpCg+D,EAAYpvC,EAAMkvC,GAClBE,EAAYnvC,EAAMivC,IAEtB,KAAK,IAEH,GAAyBtqE,SAArBsqE,EAAWlvC,IAA4Cp7B,SAArBsqE,EAAWjvC,GAAqB,CACpE,GAAI+wC,GAAgCpsE,SAArBsqE,EAAWlvC,IACrBA,EAAKzvB,QAAS6+D,EAAYnvC,EAAMivC,KAChCjvC,EAAK1vB,QAAS6+D,EAAYpvC,EAAMkvC,GAErC,OAAO,IAAIpmD,GAAa,IAAK,WAAYkoD,GAI3C,MAAO,IAAIloD,GAAa,IAAK,OAC3B,GAAIA,GAAa,IAAK,YAAasmD,EAAYpvC,EAAMkvC,GAAajvC,EAAK1vB,UACvE,GAAIuY,GAAa,IAAK,YAAakX,EAAKzvB,QAAS6+D,EAAYnvC,EAAMivC,MAEvE,KAAK,IAEH,MAAyBtqE,UAArBsqE,EAAWjvC,GACN,GAAInX,GAAa,IAAK,UAAWsmD,EAAYpvC,EAAMkvC,GAAajvC,IAIhDr7B,SAArBsqE,EAAWlvC,GACN,GAAIlX,GAAa,IAAK,YAC3B,GAAIA,GAAa,IAAK,cAAekX,IACrC,GAAIlX,GAAa,IAAK,UACpBsmD,EAAYnvC,EAAMivC,GAClB,GAAIpmD,GAAa,IAAK,OAAQmX,EAAK1vB,QAAS,GAAIwX,GAAa,IAAKznB,EAAOwD,cAMxE,GAAIglB,GAAa,IAAK,UAC3B,GAAIA,GAAa,IAAK,YACpB,GAAIA,GAAa,IAAK,YAAasmD,EAAYpvC,EAAMkvC,GAAajvC,EAAK1vB,UACvE,GAAIuY,GAAa,IAAK,YAAakX,EAAKzvB,QAAS6+D,EAAYnvC,EAAMivC,OAErE,GAAIpmD,GAAa,IAAK,OAAQmX,EAAK1vB,QAAS,GAAIwX,GAAa,IAAKznB,EAAOwD,WAE7E,KAAK,IACH,GAAyBc,SAArBsqE,EAAWlvC,GAEb,OAAI3/B,EAAKwqB,eAAemV,IAAyB,MAAfA,EAAKt7B,OAAgC,MAAfs7B,EAAKt7B,MAKtD,GAAIokB,GAAa,IAAK,YAC3BxV,EACA,GAAIwV,GAAa,IAAK,YACpB,GAAI4C,GAAa,OAAQsU,EAAKzvB,UAC9B6+D,EAAYnvC,EAAK1vB,QAAS2+D,OARrB,GAAInnD,GAAa,IAAKznB,EAAOwD,OAaxC,IAAyBc,SAArBsqE,EAAWjvC,GAAqB,CAClC,GAAI5/B,EAAKwqB,eAAeoV,GAAO,CAC7B,GAAIgxC,GAAWhxC,EAAKv7B,KAGpB,IAAiB,MAAbusE,EACF,MAAO,IAAIlpD,GAAa,IAAKznB,EAAOwD,OAGtC,IAAiB,MAAbmtE,EACF,MAAO7B,GAAYpvC,EAAMkvC,GAK7B,GAAIgC,GAAc,GAAIpoD,GAAa,IAAK,OACtCkX,EAAKzvB,QACL,GAAIuY,GAAa,IAAK,YACpBmX,EACA,GAAIlY,GAAa,IAAKznB,EAAOwD,WAIjC,OAAO,IAAIglB,GAAa,IAAK,YAC3BmX,EAAK1vB,QACL,GAAIuY,GAAa,IAAK,YACpBsmD,EAAYpvC,EAAMkvC,GAClBgC,MAMN,MAAO,IAAIpoD,GAAa,IAAK,YAC3B,GAAIA,GAAa,IAAK,OAAQkX,EAAKzvB,QAAS0vB,EAAK1vB,UACjD,GAAIuY,GAAa,IAAK,OACpB,GAAIA,GAAa,IAAK,YACpBsmD,EAAYpvC,EAAMkvC,GAClB,GAAIpmD,GAAa,IAAK,UAAWmX,EAAK1vB,QAASyvB,EAAKzvB,YAEtD,GAAIuY,GAAa,IAAK,YACpBsmD,EAAYnvC,EAAMivC,GAClB,GAAIxjD,GAAa,OAAQsU,EAAKzvB,eAItC,KAAK,IACL,IAAK,MACL,QAAS,KAAM,IAAI/L,OAAM,aAAe8O,EAAKyX,GAAK,oCA8BxD,OAAOod,GAGT7pC,EAAQe,KAAO,aACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAAQgC,EAAMC,EAAQC,EAAMC,EAAOob,GAS1C,QAAS64B,GAAiB/uB,GACxB,GAAI5G,GAAMqyD,EAAazrD,EACvB,OAAOrlB,GAAK8b,OAAO2C,GAAOA,EAAMsyD,EAAQtyD,GAG1C,QAASuyD,GAAMC,EAAQ99D,GACrB,IACE,MAAO+9D,GAAU31D,EAAK01D,GAAQjvD,MAAM,KAAM7O,IAE5C,MAAOsrC,GAQL,MANAtrC,GAAOA,EAAKzR,IAAI,SAASC,GACvB,MAAI3B,GAAKg8B,WAAWr6B,GACXA,EAAEwO,UAEJxO,IAEFuvE,EAAU31D,EAAK01D,GAAQjvD,MAAM,KAAM7O,KAwB9C,QAASg+D,GAAe3xE,GACtB,GAAI6G,SAAS7G,GAAI,CACf,GAAI+S,GAAIgJ,EAAKjH,SAAS9U,EACtB,IAAI+S,EAAEpC,YAAc3Q,EAClB,MAAO+S,GAGX,MAAO/S,GAkCT,QAAS4xE,GAAe5xE,GACtB,MAAO,IAAIipB,GAAa,IAAK,cAAejpB,IAG9C,QAAS6xE,GAAgB9+D,GACvB,GAAI/S,GACA8xE,EAAK/+D,EAAExS,EAAEwS,EAAE/S,CAQf,OANEA,GADE8xE,EAAK,EACH,GAAI7oD,GAAa,IAAK,cAAe,GAAIf,IAAc4pD,KAGvD,GAAI5pD,GAAa4pD,GAGX,IAAR/+D,EAAExT,EACGS,EAEF,GAAIipB,GAAa,IAAK,UAAWjpB,EAAG,GAAIkoB,GAAanV,EAAExT,KAahE,QAASwyE,GAAOxgE,EAAIoC,EAAM++B,GACxB,MAAO/+B,GAAKrO,OAAO,SAASiB,EAAGC,GAC7B,GAAKhG,EAAK8b,OAAO/V,IAAO/F,EAAK8b,OAAO9V,GAQ1BhG,EAAK8b,OAAO/V,GAGZ/F,EAAK8b,OAAO9V,KACpBA,EAAI+qE,EAAQ/qE,IAHZD,EAAIgrE,EAAQhrE,OAT0B,CACtC,IACE,MAAOirE,GAAMjgE,GAAKhL,EAAEC,IAEtB,MAAOwrE,IACPzrE,EAAIgrE,EAAQhrE,GACZC,EAAI+qE,EAAQ/qE,GASd,MAAOksC,IAAUnsC,EAAGC,MAKxB,QAAS8qE,GAAa79D,GACpB,OAAOA,EAAKjT,MACV,IAAK,aACH,MAAOiT,EACT,KAAK,eACH,MAAuB,WAAnBA,EAAKmhB,UACA88C,EAAUj+D,EAAK5O,OAEjB4O,CACT,KAAK,eACH,GAAIsI,EAAKtI,EAAKjU,OAASuc,EAAKtI,EAAKjU,MAAMq2B,QACrC,MAAOpiB,EAGX,KAAK,eACH,GACIE,GACAsL,EAFA1N,EAAKkC,EAAKlC,GAAGnI,WAGbspC,EAAWC,EAAuBl/B,EACtC,IAAyB,IAArBA,EAAKE,KAAKnR,OACZmR,GAAQ29D,EAAa79D,EAAKE,KAAK,KAK7BsL,EAJGze,EAAK8b,OAAO3I,EAAK,IAId++B,EAAS/+B,GAHT69D,EAAMjgE,EAAIoC,OAMf,IAAI8+B,EAAch/B,GAIrB,GAHAE,EAAOiiC,EAAYniC,GACnBE,EAAOA,EAAKzR,IAAIovE,GAEZl+B,EAAc7hC,GAAK,CAIrB,IAAK,GAFD0gE,MAAaC,KAERhzE,EAAE,EAAGA,EAAIyU,EAAKnR,OAAQtD,IACxBsB,EAAK8b,OAAO3I,EAAKzU,IAIpBgzE,EAAKxuE,KAAKiQ,EAAKzU,IAHf+yE,EAAOvuE,KAAKiQ,EAAKzU,GAOjB+yE,GAAOzvE,OAAS,GAClByc,EAAM8yD,EAAOxgE,EAAI0gE,EAAQv/B,GACzBw/B,EAAKrsE,QAAQoZ,GACbA,EAAM8yD,EAAOxgE,EAAI2gE,EAAMx/B,IAIvBzzB,EAAM8yD,EAAOxgE,EAAIoC,EAAM++B,OAKzBzzB,GAAM8yD,EAAOxgE,EAAIoC,EAAM++B,OAKzB/+B,GAAOF,EAAKE,KAAKzR,IAAIovE,GACrBryD,EAAM8yD,EAAOxgE,EAAIoC,EAAM++B,EAEzB,OAAOzzB,EACT,KAAK,kBAEH,MAAOqyD,GAAa79D,EAAKomB,QAC3B,KAAK,eAEL,IAAK,YAEL,IAAK,iBAEL,IAAK,YAEL,IAAK,yBAEL,IAAK,YAEL,IAAK,aAEL,IAAK,YAEL,IAAK,aAEL,IAAK,kBAEL,QACE,KAAM,gDAAgDpmB,EAAKjT,MAxOjE,GAAI2T,GAAOzT,EAAK3B,EAAoB,MAChCq0C,EAAgBj/B,EAAKi/B,cACrBX,EAAgBt+B,EAAKs+B,cACrBmD,EAAczhC,EAAKyhC,YACnBjD,EAAyBx+B,EAAKw+B,uBAC9BzqB,EAAenM,EAAKS,WAAW/I,KAAKyU,aACpCe,EAAelN,EAAKS,WAAW/I,KAAKwV,aAuBpCsoD,EAAU5wE,GACZ2iB,SAAYuuD,EACZ5tE,OAAU,SAASjE,GACjB,MAAIA,GAAI,EACC4xE,EAAe,GAAI1pD,IAAcloB,IAEnC,GAAIkoB,GAAaloB,IAE1BqjB,UAAa,SAASrjB,GACpB,MAAIA,GAAI,EACC4xE,EAAe,GAAI1pD,GAAaloB,EAAE2sD,UAAUvjD,WAAY,WAE1D,GAAI8e,GAAaloB,EAAEoJ,WAAY,WAExCga,QAAW,SAAS7iB,GAClB,KAAM,2CAiBNmxE,EAAY/wE,GACdU,OAAU,SAASd,GACjB,MAAsB,cAAlBE,EAAOwD,OACF8X,EAAKsoB,UAAU9jC,GAEG,aAAlBE,EAAOwD,OACP8X,EAAKjH,SAASvU,GAGdoxE,EAAexpE,WAAW5H,KAIrC+iB,SAAY,SAAS/iB,GAAK,MAAOA,IAEjC8iB,UAAa,SAAS9iB,GAAK,MAAOA,IAElC0D,OAAU,SAAS1D,GACjB,MAAOoxE,GAAepxE,IAGxB6iB,QAAW,SAAS7iB,GAClB,MAAa,KAATA,EAAEokB,GACGpkB,EAEFoxE,EAAepxE,EAAEmkB,MAsJ5B,OAAOkwB,GA/OI71C,EAAoB,GAAG4I,MAkPpClJ,GAAQsd,MAAO,EACftd,EAAQe,KAAO,mBACff,EAAQmT,KAAO,mBACfnT,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAGA,SAASP,GAAQgC,EAAMC,EAAQC,EAAMC,EAAOob,GA+B1C,QAAS84B,GAAaphC,GACpB,GAAIjT,EAAKyqB,eAAexX,IAASA,EAAKE,KAAKnR,QAAU,EAAG,CACtD,GAAI2vE,GAAKt9B,EAAaphC,EAAKE,KAAK,IAC5BynC,EAAK3nC,EAAKE,KAAK,IAAMkhC,EAAaphC,EAAKE,KAAK,GAChD,IAAgB,MAAZF,EAAKyX,GAAY,CACjB,GAAyB,IAArBzX,EAAKE,KAAKnR,OACZ,MAAOiR,GAAKE,KAAK,EAEnB,IAAInT,EAAKwqB,eAAemnD,GAAK,CACzB,GAAiB,MAAbA,EAAGttE,MACH,MAAOu2C,EACJ,IAAI56C,EAAKwqB,eAAeowB,IAAO+2B,EAAGttE,OAASstE,EAAGttE,MAAMrC,OAAS,GAAK44C,EAAGv2C,OAASu2C,EAAGv2C,MAAMrC,OAAS,EACnG,MAAO,IAAI0lB,GAAane,OAAOooE,EAAGttE,OAASkF,OAAOqxC,EAAGv2C,QAG7D,MAAIrE,GAAKwqB,eAAeowB,IAAoB,MAAbA,EAAGv2C,MACvBstE,EAEc,IAArB1+D,EAAKE,KAAKnR,QAAgBhC,EAAKyqB,eAAemwB,IAAiB,MAAVA,EAAGlwB,IAAwB,eAAVkwB,EAAG7pC,GAClE,GAAI0X,GAAa,IAAK,YAAakpD,EAAG/2B,EAAGznC,KAAK,KAElD,GAAIsV,GAAaxV,EAAKyX,GAAIzX,EAAKlC,GAAI6pC,GAAM+2B,EAAG/2B,IAAO+2B,IACvD,GAAgB,MAAZ1+D,EAAKyX,GAAY,CACxB,GAAI1qB,EAAKwqB,eAAemnD,IAAO/2B,EAAI,CAC/B,GAAI56C,EAAKwqB,eAAeowB,IAAO+2B,EAAGttE,OAASstE,EAAGttE,MAAMrC,OAAS,GAAK44C,EAAGv2C,OAASu2C,EAAGv2C,MAAMrC,OAAS,EAC5F,MAAO,IAAI0lB,GAAane,OAAOooE,EAAGttE,OAASkF,OAAOqxC,EAAGv2C,OAClD,IAAiB,MAAbstE,EAAGttE,MACV,MAAO,IAAIokB,GAAa,IAAK,cAAemyB,IAGpD,GAAgB,aAAZ3nC,EAAKlC,IAA0C,IAArBkC,EAAKE,KAAKnR,OACpC,MAAIhC,GAAKwqB,eAAeowB,IAAoB,MAAbA,EAAGv2C,MACvBstE,EAEP3xE,EAAKyqB,eAAemwB,IAAiB,eAAVA,EAAG7pC,GACvBsjC,EAAa,GAAI5rB,GAAa,IAAK,OAAQkpD,EAAI/2B,EAAGznC,KAAK,MAE3D,GAAIsV,GAAaxV,EAAKyX,GAAIzX,EAAKlC,IAAK4gE,EAAG/2B,GAC3C,IAAgB,eAAZ3nC,EAAKlC,GACZ,MAAI/Q,GAAKyqB,eAAeknD,IACN,eAAVA,EAAG5gE,GACI4gE,EAAGx+D,KAAK,GAGhB,GAAIsV,GAAaxV,EAAKyX,GAAIzX,EAAKlC,IAAK4gE,GAE/C,MAAM,IAAIxtE,OAAM,iBACb,GAAgB,MAAZ8O,EAAKyX,GAAY,CACxB,GAAI1qB,EAAKwqB,eAAemnD,GAAK,CACzB,GAAiB,MAAbA,EAAGttE,MACH,MAAOutE,EACJ,IAAiB,MAAbD,EAAGttE,MACV,MAAOu2C,EACJ,IAAI56C,EAAKwqB,eAAeowB,IAAO+2B,EAAGttE,OAASstE,EAAGttE,MAAMrC,OAAS,GAAK44C,EAAGv2C,OAASu2C,EAAGv2C,MAAMrC,OAAS,EACnG,MAAO,IAAI0lB,GAAane,OAAOooE,EAAGttE,OAASkF,OAAOqxC,EAAGv2C,QAG7D,GAAIrE,EAAKwqB,eAAeowB,GAAK,CACzB,GAAiB,MAAbA,EAAGv2C,MACH,MAAOutE,EACJ,IAAiB,MAAbh3B,EAAGv2C,MACV,MAAOstE,EACJ,IAAI3xE,EAAKyqB,eAAeknD,IAAOA,EAAGjnD,KAAOzX,EAAKyX,GAAI,CACrD,GAAImnD,GAAMF,EAAGx+D,KAAK,EAClB,IAAInT,EAAKwqB,eAAeqnD,IAAQj3B,EAAGv2C,OAASu2C,EAAGv2C,MAAMrC,OAAS,GAAK6vE,EAAIxtE,OAASwtE,EAAIxtE,MAAMrC,OAAS,EAAG,CAClG,GAAI8vE,GAAU,GAAIpqD,GAAane,OAAOooE,EAAGx+D,KAAK,GAAG9O,OAASkF,OAAOqxC,EAAGv2C,OACpE,OAAO,IAAIokB,GAAaxV,EAAKyX,GAAIzX,EAAKlC,IAAK+gE,EAAQH,EAAGx+D,KAAK,MAGnE,MAAO,IAAIsV,GAAaxV,EAAKyX,GAAIzX,EAAKlC,IAAK6pC,EAAI+2B,IAEnD,MAAO,IAAIlpD,GAAaxV,EAAKyX,GAAIzX,EAAKlC,IAAK4gE,EAAI/2B,IAC5C,GAAgB,MAAZ3nC,EAAKyX,GAAY,CACxB,GAAI1qB,EAAKwqB,eAAemnD,GAAK,CACzB,GAAiB,MAAbA,EAAGttE,MACH,MAAOutE,EACJ,IAAI5xE,EAAKwqB,eAAeowB,IAAO+2B,EAAGttE,OAASstE,EAAGttE,MAAMrC,OAAS,IAAmB,MAAb44C,EAAGv2C,OAA4B,MAAXu2C,EAAGv2C,OAA0B,MAAXu2C,EAAGv2C,OAC/G,MAAO,IAAIqjB,GAAane,OAAOooE,EAAGttE,OAASkF,OAAOqxC,EAAGv2C,QAG7D,MAAO,IAAIokB,GAAaxV,EAAKyX,GAAIzX,EAAKlC,IAAK4gE,EAAI/2B,IAC5C,GAAgB,MAAZ3nC,EAAKyX,GAAY,CACxB,GAAI1qB,EAAKwqB,eAAeowB,GAAK,CACzB,GAAiB,MAAbA,EAAGv2C,MACH,MAAO0tE,EACJ,IAAiB,MAAbn3B,EAAGv2C,MACV,MAAOstE,EACJ,IAAI3xE,EAAKwqB,eAAeowB,IAAO+2B,EAAGttE,OAASstE,EAAGttE,MAAMrC,OAAS,GAAK44C,EAAGv2C,OAASu2C,EAAGv2C,MAAMrC,OAAS,EACnG,MAAO,IAAI0lB,GACPnM,EAAKpS,IAAII,OAAOooE,EAAGttE,OAAQkF,OAAOqxC,EAAGv2C,SAGjD,MAAO,IAAIokB,GAAaxV,EAAKyX,GAAIzX,EAAKlC,IAAK4gE,EAAI/2B,SAE9C,CAAA,GAAI56C,EAAK44B,kBAAkB3lB,GAAO,CACrC,GAAInU,GAAIu1C,EAAaphC,EAAKomB,QAC1B,OAAIr5B,GAAK44B,kBAAkB95B,IAAMkB,EAAK6nB,aAAa/oB,IAAMkB,EAAKwqB,eAAe1rB,GAClEA,EAEJ,GAAIstB,iBAAgBttB,GACxB,GAAIkB,EAAKioB,eAAehV,GAAO,CAChC,GAAIE,GAAOF,EAAKE,KAAKzR,IAAI2yC,EAMzB,OALoB,KAAhBlhC,EAAKnR,QACDhC,EAAK44B,kBAAkBzlB,EAAK,MAC5BA,EAAK,GAAKA,EAAK,GAAGkmB,SAGnB,GAAIhO,GAAagpB,EAAaphC,EAAKlC,IAAKoC,IAIrD,MAAOF,GA7IT,GAAIyU,GAAenM,EAAKS,WAAW/I,KAAKyU,aACpCe,EAAelN,EAAKS,WAAW/I,KAAKwV,aACpC4C,EAAe9P,EAAKS,WAAW/I,KAAKoY,aAEpCumD,EAAQ,GAAIlqD,GAAa,GACzBqqD,EAAQ,GAAIrqD,GAAa,EA2I7B,OAAO2sB,GAGTp2C,EAAQsd,MAAO,EACftd,EAAQe,KAAO,eACff,EAAQmT,KAAO,mBACfnT,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAGA,SAASP,GAAQgC,EAAMC,EAAQC,EAAMC,EAAOob,GAuB1C,QAAS+4B,GAAQrhC,EAAMyI,GACrB,IAAKA,EACD,MAAOzI,EAEX,IAAIjT,EAAK6nB,aAAa5U,GAAO,CACzB,GAAI5O,GAAQqX,EAAMzI,EAAKjU,KACvB,IAAIqF,YAAiBmX,GACjB,MAAO84B,GAAQjwC,EAAOqX,EACnB,IAAqB,gBAAVrX,GACd,MAAOkX,GAAK6J,MAAM7d,OAAOlD,QAE1B,CAAA,GAAIrE,EAAKyqB,eAAexX,GAAO,CAClC,GAAIE,GAAOF,EAAKE,KAAKzR,IAAI,SAAUigB,GACjC,MAAO2yB,GAAQ3yB,EAAKjG,IAEtB,OAAO,IAAI+M,GAAaxV,EAAKyX,GAAIzX,EAAKlC,GAAIoC,GACvC,GAAInT,EAAK44B,kBAAkB3lB,GAC9B,MAAO,IAAImZ,GAAgBkoB,EAAQrhC,EAAKomB,QAAS3d,GAC9C,IAAI1b,EAAKioB,eAAehV,GAAO,CAClC,GAAIE,GAAOF,EAAKE,KAAKzR,IAAI,SAAUigB,GACjC,MAAO2yB,GAAQ3yB,EAAKjG,IAEtB,OAAO,IAAI2P,GAAapY,EAAKjU,KAAMmU,IAEvC,MAAOF,GA9CT,GAAIuI,GAAOD,EAAKS,WAAW/I,KAAKuI,KAC5BiN,EAAelN,EAAKS,WAAW/I,KAAKwV,aACpC4C,EAAe9P,EAAKS,WAAW/I,KAAKoY,aACpCe,EAAkB7Q,EAAKS,WAAW/I,KAAKmZ,eA8C3C,OAAOkoB,GAGTr2C,EAAQsd,MAAO,EACftd,EAAQe,KAAO,UACff,EAAQmT,KAAO,mBACfnT,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAGA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAEpC,GAAIQ,GAAST,EAAK3B,EAAoB,IAClC6H,EAAQlG,EAAK3B,EAAoB,KACjCkyB,EAAMvwB,EAAK3B,EAAoB,KAG/BsmB,GAFQ3kB,EAAK3B,EAAoB,MAExB2B,EAAK3B,EAAoB,MAElCyQ,GADa9O,EAAK3B,EAAoB,KAC5B2B,EAAK3B,EAAoB,OAGnCgI,GADMrG,EAAK3B,EAAoB,KACxB2B,EAAK3B,EAAoB,OAChCi4B,EAAOt2B,EAAK3B,EAAoB,KAChC6qC,EAAOlpC,EAAK3B,EAAoB,MAEhC0P,EAAa/N,EAAK3B,EAAoB,KACtCwX,EAAY7V,EAAK3B,EAAoB,KACrC+f,EAAepe,EAAK3B,EAAoB,KACxCyX,EAAiB9V,EAAK3B,EAAoB,KAC1CmQ,EAAWxO,EAAK3B,EAAoB,KA8CpC8pC,EAAKloC,EAAM,MAEbqR,YAAe,SAAU3S,GACvB,MAAOmzE,GAASnzE,IAGlBqX,aAAgB,SAAUrX,GACxB,MAAOozE,GAAUpzE,IAGnBkC,MAAS,SAAUgF,GAEjB,GAAIlH,GAAI8B,EAAOoF,GAEXkY,EAAI+zD,EAASnzE,EAEjB,QACEqzE,EAAGj0D,EAAEi0D,EAAE/hE,UACPgiE,EAAGl0D,EAAEk0D,EAAEhiE,cAKT6hE,EAAW,SAAUnzE,GAGvB,GAUIH,GAAGkU,EAAGmL,EAVNL,EAAO7e,EAAEkT,MAAM,GACf4Z,EAAO9sB,EAAEkT,MAAM,GAEfmgE,EAAIzhD,GAAK/S,GAAO,SAChB00D,EAAQF,EAAErgE,MAEVsgE,EAAItzE,EAAEqR,QACNmiE,EAAQF,EAAEtgE,MAKVoI,EAAI7T,GAAOsX,GAAO,GAEtB,KAAKK,EAAI,EAAGA,EAAIpb,KAAKC,IAAI+oB,EAAMjO,KAASK,EAAG,CA0BzC,GAAImhB,GAAQmzC,EAAMt0D,GAAGA,GACjBu0D,EAAMrkE,EAAW1H,EAAK24B,IACtBqzC,EAAUnpC,EAAKkpC,GAEfE,EAAe,CAEnB,KAAI9zE,EAAIqf,EAAGrf,EAAIgf,EAAMhf,IACnB8zE,EAAez8D,EAAUy8D,EAAcx8D,EAAeq8D,EAAM3zE,GAAGqf,GAAIqrB,EAAKipC,EAAM3zE,GAAGqf,KAGnF,IAAI/T,GAAQgM,EAAes8D,EAAK97C,EAAKg8C,GAGrC,KAAK3tD,EAAO7a,GAAQ,CAGlB,GAAIm3B,GAAKzyB,EAASwwB,EAAOl1B,EAKzB,KAFAiQ,EAAE8D,GAAK,EAEFrf,EAAIqf,EAAE,EAAGrf,EAAIgf,EAAMhf,IACtBub,EAAEvb,GAAK4f,EAAa+zD,EAAM3zE,GAAGqf,GAAIojB,EAInC,IAEIphC,GAFA0M,EAAMwB,EAAWm7B,EAAK9qB,EAAa6iB,EAAIn3B,IAgB3C,KAAK4I,EAAImL,EAAGnL,EAAI+Y,EAAM/Y,IAAK,CAIzB,IAHA7S,EAAI,EAGCrB,EAAIqf,EAAGrf,EAAIgf,EAAMhf,IACpBqB,EAAIgW,EAAUhW,EAAGiW,EAAeozB,EAAKnvB,EAAEvb,IAAK2zE,EAAM3zE,GAAGkU,IAMvD,KAFA7S,EAAIiW,EAAejW,EAAG0M,GAEjB/N,EAAIqf,EAAGrf,EAAIgf,EAAMhf,IACpB2zE,EAAM3zE,GAAGkU,GAAKoD,EACZtH,EAAS2jE,EAAM3zE,GAAGkU,GAAIoD,EAAeiE,EAAEvb,GAAIqB,IAC3CwyE,GAWN,IAAK7zE,EAAI,EAAGA,EAAIgf,EAAMhf,IAAK,CAIzB,IAHAqB,EAAI,EAGC6S,EAAImL,EAAGnL,EAAI8K,EAAM9K,IACpB7S,EAAIgW,EAAUhW,EAAGiW,EAAeo8D,EAAM1zE,GAAGkU,GAAIqH,EAAErH,IAMjD,KAFA7S,EAAIiW,EAAejW,EAAG0M,GAEjBmG,EAAImL,EAAGnL,EAAI8K,IAAQ9K,EACtBw/D,EAAM1zE,GAAGkU,GAAK0L,EACZ5P,EAAS0jE,EAAM1zE,GAAGkU,GAAIoD,EAAejW,EAAGqpC,EAAKnvB,EAAErH,MAC/C2/D,KAWV,IAAK7zE,EAAI,EAAGA,EAAIgf,IAAQhf,EACtB,IAAKkU,EAAI,EAAGA,EAAIlU,GAAKkU,EAAI+Y,IAAQ/Y,EAAG,CAClC,GAAI5D,EAAQ,EAAGsP,EAAa+zD,EAAM3zE,GAAGkU,GAAI,MACvC,KAAM,IAAIzO,OAAM,kEAEdzF,EAAI,KAAOkU,EAAI,QAAUy/D,EAAM3zE,GAAGkU,GAAK,IAG3Cy/D,GAAM3zE,GAAGkU,GAAKoD,EAAeq8D,EAAM3zE,GAAGkU,GAAI,GAK9C,OACEs/D,EAAGA,EACHC,EAAGA,EACHvpE,SAAU,WACR,MAAO,MAAQvK,KAAK6zE,EAAEtpE,WAAa,QAAUvK,KAAK8zE,EAAEvpE,cAKtDqpE,EAAY,SAAUpzE,GAExB,KAAM,IAAIsF,OAAM,8CAIlB,OAAOkkC,GAGTpqC,EAAQe,KAAO,KACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAGA,SAASP,GAASgC,EAAMC,EAAQC,GAE9B,GAAIuyE,GAASvyE,EAAK3B,EAAoB,MAClCm0E,EAAaxyE,EAAK3B,EAAoB,MACtCo0E,EAAWzyE,EAAK3B,EAAoB,MACpCq0E,EAAU1yE,EAAK3B,EAAoB,MACnCs0E,EAAY3yE,EAAK3B,EAAoB,MAcrCm5C,EAAS,SAAUG,EAAO9xC,EAAGsiC,GAE/B,GAKItqB,GALAhE,EAAOhU,EAAE+S,KACThH,EAAQ/L,EAAEgM,MAEVvS,EAAIsS,EAAM,GAIV/R,IAIJ,IAFAA,EAAE+6B,EAAI23C,EAAO56B,EAAO9xC,GAEhB8xC,IAAU93C,EAAE+6B,EACd,MAAO,KAET,IAAIuN,EAAI,CAEN,GAAIvpC,GAAI+4C,EAAQ66B,EAAW3sE,EAAG,KAAMhG,EAAE+6B,EAAG,GAAK/0B,CAE9ChG,GAAEyc,OAASm2D,EAAS7zE,EAAG,EAEvB,IAAIo5C,GAAO06B,EAAS7yE,EAAEyc,OAAQhd,EAI9B,IAFAO,EAAEqhE,GAAKyR,EAAU/zE,EAAGiB,EAAEyc,OAAQ07B,EAAM,GAEhCp5C,GAAKiB,EAAEyc,QAAUzc,EAAEqhE,IAAM0R,EAAQh0E,EAAGiB,GAEtC,IAAKA,EAAEgzE,IAAM,EAAGh1D,EAAI,EAAGA,EAAIve,EAAGue,IAC5Bhe,EAAEgzE,KAAOhzE,EAAEqhE,GAAGrjD,OAKlBhe,GAAEgzE,IAAM,EAAKh5D,EAAKva,GAAMA,EACxBO,EAAEizE,IAAMjzE,EAAEgzE,GAGZ,OAAOhzE,IAML+yE,EAAU,SAAU/sE,EAAGhG,GAEzB,GAAIga,GAAOhU,EAAE+S,KACTgB,EAAS/T,EAAE6S,OACX9G,EAAQ/L,EAAEgM,MAEVlT,EAAIiT,EAAM,GACVtS,EAAIsS,EAAM,EAEd/R,GAAEg4C,QACFh4C,EAAEkzE,WAEF,IAUIv0E,GAAGqf,EAAGje,EAAG4a,EAAIH,EAVbiC,EAASzc,EAAEyc,OACXu7B,EAAOh4C,EAAEg4C,KACTk7B,EAAWlzE,EAAEkzE,SAEbh5D,KACA1W,EAAO,EACP00C,EAAOp5C,EACPq0E,EAAOr0E,EAAIW,EACX2zE,EAAOt0E,EAAI,EAAIW,CAInB,KAAKue,EAAI,EAAGA,EAAIve,EAAGue,IAEjB9D,EAAEg+B,EAAOl6B,IAAK,EACd9D,EAAEi5D,EAAOn1D,IAAK,EACd9D,EAAEk5D,EAAOp1D,GAAK,CAGhB,KAAKrf,EAAI,EAAGA,EAAIG,EAAGH,IACjBu0E,EAASv0E,IAAK,CAEhB,KAAKqf,EAAIve,EAAI,EAAGue,GAAK,EAAGA,IAEtB,IAAKrD,EAAKX,EAAKgE,GAAIxD,EAAKR,EAAKgE,EAAI,GAAIje,EAAI4a,EAAI5a,EAAIya,EAAIza,IAEnDmzE,EAASn5D,EAAOha,IAAMie,CAI1B,KAAKrf,EAAIG,EAAI,EAAGH,GAAK,EAAGA,IAEtBq5C,EAAKr5C,IAAK,EACVqf,EAAIk1D,EAASv0E,GAETqf,IAAK,IAGa,IAAlB9D,EAAEk5D,EAAOp1D,OACX9D,EAAEi5D,EAAOn1D,GAAKrf,GAEhBub,EAAE1W,EAAO7E,GAAKub,EAAEg+B,EAAOl6B,GACvB9D,EAAEg+B,EAAOl6B,GAAKrf,EAKhB,KAHAqB,EAAEizE,IAAM,EACRjzE,EAAEm/D,GAAKrgE,EAEFkf,EAAI,EAAGA,EAAIve,EAAGue,IAWjB,GATArf,EAAIub,EAAEg+B,EAAOl6B,GAEbhe,EAAEizE,MAEEt0E,EAAI,IACNA,EAAIqB,EAAEm/D,MAERnnB,EAAKr5C,GAAKqf,MAEJo1D,EAAKp1D,IAAM,GAAjB,CAGAhe,EAAEizE,KAAO/4D,EAAEk5D,EAAOp1D,EAElB,IAAIq1D,GAAK52D,EAAOuB,EACZq1D,KAAM,IACa,IAAjBn5D,EAAEk5D,EAAOC,KACXn5D,EAAEi5D,EAAOE,GAAMn5D,EAAEi5D,EAAOn1D,IAC1B9D,EAAE1W,EAAO0W,EAAEi5D,EAAOn1D,IAAM9D,EAAEg+B,EAAOm7B,GACjCn5D,EAAEg+B,EAAOm7B,GAAMn5D,EAAE1W,EAAO7E,GACxBub,EAAEk5D,EAAOC,IAAOn5D,EAAEk5D,EAAOp1D,IAG7B,IAAKrf,EAAI,EAAGA,EAAIG,EAAGH,IACbq5C,EAAKr5C,GAAK,IACZq5C,EAAKr5C,GAAKqf,IAEd,QAAO,EAGT,OAAO25B,GAGTz5C,EAAQe,KAAO,SACff,EAAQmT,KAAO,SACfnT,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAGA,SAASP,GAASgC,EAAMC,EAAQC,GAE9B,GAAIm9B,GAAUn9B,EAAK3B,EAAoB,KACnC80E,EAAWnzE,EAAK3B,EAAoB,MACpCy5C,EAAU93C,EAAK3B,EAAoB,MAEnCkQ,EAAYvO,EAAK3B,EAAoB,KACrC6P,EAAYlO,EAAK3B,EAAoB,KACrCsP,EAAY3N,EAAK3B,EAAoB,KAerCk0E,EAAS,SAAU56B,EAAO9xC,GAE5B,IAAKA,GAAK8xC,GAAS,GAAKA,EAAQ,EAC9B,MAAO,KAET,IAAI/lC,GAAQ/L,EAAEgM,MAEVlT,EAAIiT,EAAM,GACVtS,EAAIsS,EAAM,GAEVwhE,EAAQ,EAERtjD,EAAQrtB,KAAKkH,IAAI,GAAI,GAAKlH,KAAK6zB,KAAKh3B,GACxCwwB,GAAQrtB,KAAKC,IAAIpD,EAAI,EAAGwwB,EAExB,IAAIujD,GAAKC,EAAoB37B,EAAO9xC,EAAGlH,EAAGW,EAAGwwB,EAE7CqjD,GAASE,EAAIE,EAAO,KAsCpB,KApCA,GAiCI/0E,GAAGkU,EAAGmL,EAAGD,EAAI41D,EAAIzuE,EAAG0uE,EAAIz6B,EAAI06B,EAAKC,EAAIC,EAAKv5D,EAAI41C,EAAI4jB,EAAIrhB,EAAG3zD,EAjCzDka,EAASs6D,EAAG36D,OACZM,EAAOq6D,EAAGz6D,KAGVk7D,EAAM96D,EAAK1Z,GAGXupD,KAGA+b,KACA/iE,EAAM,EACNkyE,EAAKz0E,EAAI,EACT+D,EAAO,GAAK/D,EAAI,GAChBy4C,EAAO,GAAKz4C,EAAI,GAChB00E,EAAO,GAAK10E,EAAI,GAChBs0D,EAAS,GAAKt0D,EAAI,GAClBya,EAAI,GAAKza,EAAI,GACb20E,EAAQ,GAAK30E,EAAI,GAGjBga,EAAOuvC,EAGPrvC,EAAO06D,EAAyB50E,EAAG0Z,EAAM4rD,EAAG/iE,EAAKk2C,EAAMz+B,EAAMjW,EAAM4wE,EAAOF,EAAIh6D,EAAGi6D,EAAMpgB,GAGvFugB,EAAMC,EAAuB90E,EAAG0Z,EAAM4rD,EAAGhR,EAAQogB,EAAMj6D,EAAG+V,EAAOikD,EAAIh8B,EAAMz+B,EAAMjW,GAGjFgxE,EAAS,EAMNF,EAAM70E,GAAG,CAId,IAAKue,GAAI,EAAIw2D,EAAS/0E,IAAMue,EAAI+mD,EAAE7sB,EAAOs8B,MAAY,EAAIA,KACrDzP,EAAEvhE,EAAOwa,KAAM,IACjBvE,EAAKsrD,EAAEvhE,EAAOwa,KAAM,GAEtB+mD,EAAE7sB,EAAOs8B,GAAUzP,EAAEvhE,EAAOwa,EAE5B,IAAIy2D,GAAQ1P,EAAEoP,EAAOn2D,GAEjB02D,EAAM3P,EAAEmP,EAAKl2D,EAEjBs2D,IAAOI,CAKP,IAAIC,GAAK,CAET5P,GAAEmP,EAAKl2D,IAAM02D,CACb,IAAI30E,GAAIoZ,EAAK6E,GAET42D,EAAiB,IAAVH,EAAe10E,EAAIk0E,EAC1BY,GAAMD,CACV,KAAK72D,EAAK,EAAGA,GAAM02D,EAAQ,EAAG12D,IAAM,CAgBlC,IAfIA,EAAK02D,GAEPvvE,EAAI8Y,EAEJ41D,EAAK7zE,EAELo5C,EAAK4rB,EAAE/iE,EAAMgc,GAAKy2D,IAIlBvvE,EAAIgU,EAAOnZ,KACX6zE,EAAKz6D,EAAKjU,GAEVi0C,EAAK4rB,EAAE/iE,EAAMkD,IAEVyuE,EAAK,EAAGA,GAAMx6B,EAAIw6B,IACrBh1E,EAAIua,EAAO06D,MAENC,EAAM9O,EAAEmP,EAAKv1E,KAAO,IAGzBg2E,GAAMd,EAEN9O,EAAEmP,EAAKv1E,IAAMk1E,EAEb36D,EAAO27D,MAASl2E,EACZomE,EAAEvhE,EAAO7E,KAAM,IACjB8a,EAAKsrD,EAAEvhE,EAAO7E,IAAM8a,EAAK9a,IAEvB8a,EAAK9a,KAAM,EACbomE,EAAEvhE,EAAOiW,EAAK9a,IAAMomE,EAAEvhE,EAAO7E,GAE7BomE,EAAE7sB,EAAO6sB,EAAEhR,EAASp1D,IAAMomE,EAAEvhE,EAAO7E,GAEnCuG,IAAK8Y,IAEP7E,EAAKjU,GAAKo4B,EAAQtf,GAElB+mD,EAAE7qD,EAAIhV,GAAK,GAoBf,IAhBc,IAAVuvE,IACFR,EAAMY,IAER9P,EAAEhR,EAAS/1C,GAAK22D,EAEhBx7D,EAAK6E,GAAK42D,EACV7P,EAAE/iE,EAAMgc,GAAK62D,GAAMD,EAEnB7P,EAAEoP,EAAOn2D,IAAK,EAMdrE,EAAOm7D,EAAQn7D,EAAM45D,EAAOxO,EAAG7qD,EAAGza,GAE7Bq0E,EAAKc,EAAKd,EAAKe,GAAKf,IAGvB,GAFAn1E,EAAIua,EAAO46D,MAENC,EAAMhP,EAAEoP,EAAOx1E,KAAO,GAA3B,CAGAk1E,GAAO9O,EAAEmP,EAAKv1E,EACd,IAAIo2E,IAAOp7D,EAAOk6D,CAElB,KAAK9zE,EAAIoZ,EAAKxa,GAAI6b,EAAKrB,EAAKxa,GAAKo1E,EAAM,EAAGh0E,GAAKya,EAAIza,IACjDmF,EAAIgU,EAAOnZ,GACPglE,EAAE7qD,EAAIhV,IAAMyU,EAEdorD,EAAE7qD,EAAIhV,IAAM2uE,EAEQ,IAAb9O,EAAE7qD,EAAIhV,KAEb6/D,EAAE7qD,EAAIhV,GAAK6/D,EAAEhR,EAAS7uD,GAAK6vE,IAUjC,IAAKjB,EAAKc,EAAKd,EAAKe,GAAKf,IAAM,CAO7B,IALAn1E,EAAIua,EAAO46D,GACXt5D,EAAKrB,EAAKxa,GACVyxD,EAAK51C,EAAKuqD,EAAEoP,EAAOx1E,GAAK,EACxBq1E,EAAKx5D,EAEAm4C,EAAI,EAAG3zD,EAAI,EAAGe,EAAIya,EAAIza,GAAKqwD,EAAIrwD,IAGlC,GAFAmF,EAAIgU,EAAOnZ,GAEM,IAAbglE,EAAE7qD,EAAIhV,GAAU,CAElB,GAAI8vE,IAAOjQ,EAAE7qD,EAAIhV,GAAKyU,CAClBq7D,IAAO,GAETh2E,GAAKg2E,GAEL97D,EAAO86D,KAAQ9uE,EAEfytD,GAAKztD,IAILiU,EAAKjU,GAAKo4B,EAAQtf,GAElB+mD,EAAE7qD,EAAIhV,GAAK,GAKjB6/D,EAAEoP,EAAOx1E,GAAKq1E,EAAKx5D,EAAK,CACxB,IAAIy6D,IAAKjB,EACLkB,GAAK16D,EAAKuqD,EAAE/iE,EAAMrD,EAEtB,KAAKoB,EAAIqwD,EAAK,EAAGrwD,EAAIm1E,GAAIn1E,IAAK,CAC5B8S,EAAIqG,EAAOnZ,EAEX,IAAIo1E,IAAMpQ,EAAEmP,EAAKrhE,EACbsiE,KAAO,IAGXn2E,GAAKm2E,GAELj8D,EAAO86D,KAAQnhE,EAEf8/C,GAAK9/C,GAGG,IAAN7T,GAEFma,EAAKxa,GAAK2+B,EAAQtf,GAClB61D,GAAO9O,EAAEmP,EAAKv1E,GAEdg2E,GAAMd,EAENa,GAAOb,EACPS,GAAOT,EACP9O,EAAEmP,EAAKv1E,GAAK,EAEZomE,EAAEoP,EAAOx1E,IAAK,IAIdomE,EAAEhR,EAASp1D,GAAKiE,KAAKC,IAAIkiE,EAAEhR,EAASp1D,GAAIK,GAExCka,EAAO86D,GAAM96D,EAAO+7D,IAEpB/7D,EAAO+7D,IAAM/7D,EAAOsB,GAEpBtB,EAAOsB,GAAMwD,EAEb+mD,EAAE/iE,EAAMrD,GAAKq1E,EAAKx5D,EAAK,EAEvBm4C,GAAKA,EAAI,GAAKA,EAAIA,GAAKlzD,EAEvBslE,EAAEvhE,EAAO7E,GAAKomE,EAAEqP,EAAQzhB,GACxBoS,EAAEqP,EAAQzhB,GAAKh0D,EAEf8a,EAAK9a,GAAKg0D,GAWd,IAPAoS,EAAEhR,EAAS/1C,GAAK22D,EAChBpB,EAAQ3wE,KAAKkH,IAAIypE,EAAOoB,GAExBh7D,EAAOm7D,EAAQn7D,EAAO45D,EAAOA,EAAOxO,EAAG7qD,EAAGza,GAIrCq0E,EAAKc,EAAKd,EAAKe,GAAKf,IAGvB,GAFAn1E,EAAIua,EAAO46D,KAEP/O,EAAEmP,EAAKv1E,IAAM,GAOjB,IAJAg0D,EAAIl5C,EAAK9a,GACTA,EAAIomE,EAAEqP,EAAQzhB,GAEdoS,EAAEqP,EAAQzhB,IAAK,EACRh0D,IAAK,GAAMomE,EAAEvhE,EAAO7E,KAAM,EAAIA,EAAIomE,EAAEvhE,EAAO7E,GAAIgb,IAAQ,CAG5D,IAFAw/B,EAAK4rB,EAAE/iE,EAAMrD,GACbo1E,EAAMhP,EAAEoP,EAAOx1E,GACVoB,EAAIoZ,EAAKxa,GAAK,EAAGoB,GAAKoZ,EAAKxa,GAAKw6C,EAAK,EAAGp5C,IAC3CglE,EAAE7qD,EAAIhB,EAAOnZ,IAAM4Z,CACrB,IAAIy7D,IAAQz2E,CAEZ,KAAKkU,EAAIkyD,EAAEvhE,EAAO7E,GAAIkU,IAAK,GAAM,CAC/B,GAAIwiE,IAAKtQ,EAAE/iE,EAAM6Q,KAAOsmC,GAAM4rB,EAAEoP,EAAOthE,KAAOkhE,CAC9C,KAAKh0E,EAAIoZ,EAAKtG,GAAK,EAAGwiE,IAAMt1E,GAAKoZ,EAAKtG,GAAKsmC,EAAK,EAAGp5C,IAE7CglE,EAAE7qD,EAAIhB,EAAOnZ,KAAO4Z,IACtB07D,GAAK,EAGLA,KAEFl8D,EAAKtG,GAAKyqB,EAAQ3+B,GAClBomE,EAAEmP,EAAKv1E,IAAMomE,EAAEmP,EAAKrhE,GACpBkyD,EAAEmP,EAAKrhE,GAAK,EAEZkyD,EAAEoP,EAAOthE,IAAK,EAEdA,EAAIkyD,EAAEvhE,EAAOqP,GACbkyD,EAAEvhE,EAAO4xE,IAASviE,IAIlBuiE,GAAQviE,EACRA,EAAIkyD,EAAEvhE,EAAOqP,KAQrB,IAAK9S,EAAI60E,EAAKd,EAAKc,EAAKd,EAAKe,GAAKf,IAChCn1E,EAAIua,EAAO46D,IAEND,GAAO9O,EAAEmP,EAAKv1E,KAAO,IAG1BomE,EAAEmP,EAAKv1E,GAAKk1E,EAEZ70E,EAAI+lE,EAAEhR,EAASp1D,GAAKg2E,EAAKd,EACzB70E,EAAI4D,KAAKC,IAAI7D,EAAGS,EAAI60E,EAAMT,GACtB9O,EAAE7sB,EAAOl5C,KAAM,IACjBya,EAAKsrD,EAAE7sB,EAAOl5C,IAAML,GAEtBomE,EAAEvhE,EAAO7E,GAAKomE,EAAE7sB,EAAOl5C,GACvBya,EAAK9a,IAAK,EACVomE,EAAE7sB,EAAOl5C,GAAKL,EAEd61E,EAAS5xE,KAAKC,IAAI2xE,EAAQx1E,GAC1B+lE,EAAEhR,EAASp1D,GAAKK,EAEhBka,EAAOnZ,KAAOpB,EAGhBomE,GAAEmP,EAAKl2D,GAAK02D,EAEmB,KAA1B3P,EAAE/iE,EAAMgc,GAAKje,EAAI60E,KAEpBz7D,EAAK6E,IAAK,EAEV+mD,EAAE7qD,EAAI8D,GAAK,GAEC,IAAVy2D,IAEFR,EAAMl0E,GAUV,IAAKpB,EAAI,EAAGA,EAAIc,EAAGd,IACjBwa,EAAKxa,GAAK2+B,EAAQnkB,EAAKxa,GACzB,KAAKkU,EAAI,EAAGA,GAAKpT,EAAGoT,IAClBkyD,EAAE7sB,EAAOrlC,IAAK,CAEhB,KAAKA,EAAIpT,EAAGoT,GAAK,EAAGA,IAEdkyD,EAAEmP,EAAKrhE,GAAK,IAGhBkyD,EAAEvhE,EAAOqP,GAAKkyD,EAAE7sB,EAAO/+B,EAAKtG,IAC5BkyD,EAAE7sB,EAAO/+B,EAAKtG,IAAMA,EAGtB,KAAK3N,EAAIzF,EAAGyF,GAAK,EAAGA,IAEd6/D,EAAEmP,EAAKhvE,IAAM,GAEbiU,EAAKjU,KAAM,IAEb6/D,EAAEvhE,EAAO0B,GAAK6/D,EAAE7sB,EAAO/+B,EAAKjU,IAC5B6/D,EAAE7sB,EAAO/+B,EAAKjU,IAAMA,EAIxB,KAAK8Y,EAAI,EAAGrf,EAAI,EAAGA,GAAKc,EAAGd,IACrBwa,EAAKxa,KAAM,IACbqf,EAAIi6B,EAAQt5C,EAAGqf,EAAG+mD,EAAG7sB,EAAM10C,EAAMwlD,EAAG9uC,GAKxC,OAFA8uC,GAAEhgD,OAAOggD,EAAE/mD,OAAS,EAAG,GAEhB+mD,GAsBLyqB,EAAsB,SAAU37B,EAAO9xC,EAAGlH,EAAGW,EAAGwwB,GAElD,GAAIqlD,GAAKxnE,EAAU9H,EAGnB,IAAc,IAAV8xC,GAAer4C,IAAMX,EAEvB,MAAO4P,GAAI1I,EAAGsvE,EAIhB,IAAa,GAATx9B,EAAY,CAOd,IAAK,GALDy9B,GAASD,EAAGz8D,OACZ28D,EAAOF,EAAGv8D,KAEVq3C,EAAK,EAEAv9C,EAAI,EAAGA,EAAI/T,EAAG+T,IAAK,CAE1B,GAAI9S,GAAIy1E,EAAK3iE,EAIb,IAFA2iE,EAAK3iE,GAAKu9C,IAENolB,EAAK3iE,EAAI,GAAK9S,EAAIkwB,GAGtB,IAAK,GAAIzV,GAAKg7D,EAAK3iE,EAAI,GAAI9S,EAAIya,EAAIza,IACjCw1E,EAAOnlB,KAAQmlB,EAAOx1E,GAO1B,MAJAy1E,GAAK12E,GAAKsxD,EAEVpqD,EAAI8H,EAAUwnE,GAEPjnE,EAASinE,EAAItvE,GAItB,MAAOqI,GAASinE,EAAItvE,IAWlBquE,EAA2B,SAAU50E,EAAG0Z,EAAM4rD,EAAG/iE,EAAKk2C,EAAMz+B,EAAMjW,EAAM4wE,EAAOF,EAAIh6D,EAAGi6D,EAAMpgB,GAE9F,IAAK,GAAI/1C,GAAI,EAAGA,EAAIve,EAAGue,IACrB+mD,EAAE/iE,EAAMgc,GAAK7E,EAAK6E,EAAI,GAAK7E,EAAK6E,EAClC+mD,GAAE/iE,EAAMvC,GAAK,CAEb,KAAK,GAAId,GAAI,EAAGA,GAAKc,EAAGd,IAEtBomE,EAAE7sB,EAAOv5C,IAAK,EACd8a,EAAK9a,IAAK,EACVomE,EAAEvhE,EAAO7E,IAAK,EAEdomE,EAAEqP,EAAQz1E,IAAK,EAEfomE,EAAEmP,EAAKv1E,GAAK,EAEZomE,EAAE7qD,EAAIvb,GAAK,EAEXomE,EAAEoP,EAAOx1E,GAAK,EAEdomE,EAAEhR,EAASp1D,GAAKomE,EAAE/iE,EAAMrD,EAG1B,IAAIgb,GAAOm7D,EAAQ,EAAG,EAAG/P,EAAG7qD,EAAGza,EAQ/B,OANAslE,GAAEoP,EAAO10E,IAAK,EAEd0Z,EAAK1Z,IAAK,EAEVslE,EAAE7qD,EAAIza,GAAK,EAEJka,GAQL46D,EAAyB,SAAU90E,EAAG0Z,EAAM4rD,EAAGhR,EAAQogB,EAAMj6D,EAAG+V,EAAOikD,EAAIh8B,EAAMz+B,EAAMjW,GAIzF,IAAK,GAFD8wE,GAAM,EAED31E,EAAI,EAAGA,EAAIc,EAAGd,IAAK,CAE1B,GAAIK,GAAI+lE,EAAEhR,EAASp1D,EAEnB,IAAU,IAANK,EAEF+lE,EAAEoP,EAAOx1E,IAAK,EACd21E,IAEAn7D,EAAKxa,IAAK,EACVomE,EAAE7qD,EAAIvb,GAAK,MAER,IAAIK,EAAIixB,EAEX80C,EAAEmP,EAAKv1E,GAAK,EAEZomE,EAAEoP,EAAOx1E,IAAK,EACd21E,IACAn7D,EAAKxa,GAAK2+B,EAAQ79B,GAClBslE,EAAEmP,EAAKz0E,SAEJ,CACH,GAAIkzD,GAAIoS,EAAE7sB,EAAOl5C,EACb2zD,KAAK,IACPl5C,EAAKk5C,GAAKh0D,GAEZomE,EAAEvhE,EAAO7E,GAAKomE,EAAE7sB,EAAOl5C,GACvB+lE,EAAE7sB,EAAOl5C,GAAKL,GAGlB,MAAO21E,IAGLQ,EAAU,SAASn7D,EAAM45D,EAAOxO,EAAG7qD,EAAGza,GACxC,GAAIka,EAAO,GAAMA,EAAO45D,EAAQ,EAAI,CAClC,IAAK,GAAIv1D,GAAI,EAAGA,EAAIve,EAAGue,IACJ,IAAb+mD,EAAE7qD,EAAI8D,KACR+mD,EAAE7qD,EAAI8D,GAAK,EAEfrE,GAAO,EAGT,MAAOA,IAGL+5D,EAAQ,SAAU/0E,EAAGkU,GACvB,MAAOlU,IAAKkU,EAGd,OAAO6/D,GAGTx0E,EAAQe,KAAO,SACff,EAAQmT,KAAO,SACfnT,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAGA,SAASP,KAiBP,GAAIq1E,GAAW,SAAUttE,EAAGvE,EAAUsb,GAWpC,IAAK,GATDjD,GAAU9T,EAAE2S,QACZoB,EAAS/T,EAAE6S,OACXmB,EAAOhU,EAAE+S,KACThH,EAAQ/L,EAAEgM,MAEVvS,EAAIsS,EAAM,GAEV0jE,EAAK,EAEA5iE,EAAI,EAAGA,EAAIpT,EAAGoT,IAAK,CAE1B,GAAI9S,GAAIia,EAAKnH,EAGb,KADAmH,EAAKnH,GAAK4iE,EACH11E,EAAIia,EAAKnH,EAAE,GAAI9S,IAEhB0B,EAASsY,EAAOha,GAAI8S,EAAGiH,EAAUA,EAAQ/Z,GAAK,EAAGgd,KAEnDhD,EAAO07D,GAAM17D,EAAOha,GAEhB+Z,IACFA,EAAQ27D,GAAM37D,EAAQ/Z,IAExB01E,KAYN,MAPAz7D,GAAKva,GAAKg2E,EAEV17D,EAAO/Q,OAAOysE,EAAI17D,EAAO9X,OAASwzE,GAE9B37D,GACFA,EAAQ9Q,OAAOysE,EAAI37D,EAAQ7X,OAASwzE,GAE/B,EAGT,OAAOnC,GAGTp1E,EAAQe,KAAO,WACff,EAAQmT,KAAO,SACfnT,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAGA,SAASP,GAASgC,GAEhB,GAAIkW,GAAelW,EAAKkW,aAcpBw8D,EAAa,SAAU3sE,EAAGgyC,EAAMjd,EAAG3hB,GAiBrC,IAAK,GAfDU,GAAU9T,EAAE2S,QACZoB,EAAS/T,EAAE6S,OACXmB,EAAOhU,EAAE+S,KACThH,EAAQ/L,EAAEgM,MACVC,EAAMjM,EAAEkM,UAERpT,EAAIiT,EAAM,GACVtS,EAAIsS,EAAM,GAEVkH,EAAUG,GAAUpT,EAAE2S,WAAe,KACrCO,KACAC,KAEAs8D,EAAK,EAEAz3D,EAAI,EAAGA,EAAIve,EAAGue,IAAK,CAE1B7E,EAAK6E,GAAKy3D,CAIV,KAAK,GAFD5iE,GAAIkoB,EAAKA,EAAE/c,GAAMA,EAEZ03D,EAAK17D,EAAKnH,GAAI08C,EAAKv1C,EAAKnH,EAAI,GAAIkpB,EAAI25C,EAAI35C,EAAIwzB,EAAIxzB,IAAK,CAE5D,GAAI7d,GAAI85B,EAAOA,EAAKj+B,EAAOgiB,IAAMhiB,EAAOgiB,EAExC7iB,GAAOu8D,GAAMv3D,EAETjF,IACFA,EAAQw8D,GAAM37D,EAAQiiB,IAExB05C,KAMJ,MAFAt8D,GAAK1Z,GAAKg2E,EAEH,GAAIt/D,IACTiD,OAAQH,EACRlV,MAAOmV,EACPG,IAAKF,EACLrX,MAAOhD,EAAGW,GACVe,SAAUyR,IAId,OAAO0gE,GAGTz0E,EAAQe,KAAO,aACff,EAAQmT,KAAO,SACfnT,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAGA,SAASP,KAWP,GAAI20E,GAAW,SAAU5sE,EAAG2vE,GAE1B,IAAK3vE,EACH,MAAO,KAET,IAeIrH,GAAGi3E,EAfH77D,EAAS/T,EAAE6S,OACXmB,EAAOhU,EAAE+S,KACThH,EAAQ/L,EAAEgM,MAEVlT,EAAIiT,EAAM,GACVtS,EAAIsS,EAAM,GAGV0K,KAGAvC,KACA27D,EAAW,EACX7wE,EAAOvF,CAKX,IAAIk2E,EAEF,IAAKh3E,EAAI,EAAGA,EAAIG,EAAGH,IACjBub,EAAElV,EAAOrG,IAAK,CAGlB,KAAK,GAAIqf,GAAI,EAAGA,EAAIve,EAAGue,IAAK,CAE1BvB,EAAOuB,IAAK,EAEZ9D,EAAE27D,EAAW73D,IAAK,CAElB,KAAK,GAAIrD,GAAKX,EAAKgE,GAAIxD,EAAKR,EAAKgE,EAAI,GAAIje,EAAI4a,EAAI5a,EAAIya,EAAIza,IAAK,CAE5D,GAAIme,GAAInE,EAAOha,EAIf,KAFApB,EAAIg3E,EAAOz7D,EAAElV,EAAOkZ,GAAMA,EAEnBvf,IAAK,GAAMA,EAAIqf,EAAGrf,EAAIi3E,EAE3BA,EAAQ17D,EAAE27D,EAAWl3E,GAErBub,EAAE27D,EAAWl3E,GAAKqf,EAEd43D,IAAS,IACXn5D,EAAO9d,GAAKqf,EAEZ23D,KACFz7D,EAAElV,EAAOkZ,GAAKF,IAGpB,MAAOvB,GAGT,OAAOm2D,GAGT10E,EAAQe,KAAO,WACff,EAAQmT,KAAO,SACfnT,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAGA,SAASP,GAASgC,EAAMC,EAAQC,GAE9B,GAAI83C,GAAU93C,EAAK3B,EAAoB,MAUnCq0E,EAAU,SAAUp2D,EAAQhd,GAE9B,IAAKgd,EACH,MAAO,KAET,IACI5J,GADAmL,EAAI,EAGJm6B,KAEAj+B,KACAg+B,EAAO,EACP10C,EAAO/D,EACPyV,EAAQ,EAAIzV,CAEhB,KAAKoT,EAAI,EAAGA,EAAIpT,EAAGoT,IAEjBqH,EAAEg+B,EAAOrlC,IAAK,CAGhB,KAAKA,EAAIpT,EAAE,EAAGoT,GAAK,EAAGA,IAEhB4J,EAAO5J,KAAM,IAGjBqH,EAAE1W,EAAOqP,GAAKqH,EAAEg+B,EAAOz7B,EAAO5J,IAC9BqH,EAAEg+B,EAAOz7B,EAAO5J,IAAMA,EAGxB,KAAKA,EAAI,EAAGA,EAAIpT,EAAGoT,IAEb4J,EAAO5J,KAAM,IAGjBmL,EAAIi6B,EAAQplC,EAAGmL,EAAG9D,EAAGg+B,EAAM10C,EAAM20C,EAAMjjC,GAEzC,OAAOijC,GAGT,OAAO06B,GAGT30E,EAAQe,KAAO,UACff,EAAQmT,KAAO,SACfnT,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAGA,SAASP,GAASgC,EAAMC,EAAQC,GAE9B,GAAI2N,GAAY3N,EAAK3B,EAAoB,KAErCs3E,EAAU31E,EAAK3B,EAAoB,MAcnCs0E,EAAY,SAAU9sE,EAAGyW,EAAQ07B,EAAMw9B,GAEzC,IAAK3vE,IAAMyW,IAAW07B,EACpB,MAAO,KAET,IAKIx5C,GAAGkU,EAAGmL,EAAIsc,EAAIv6B,EAAG4a,EAAIH,EALrBzI,EAAQ/L,EAAEgM,MAEVlT,EAAIiT,EAAM,GACVtS,EAAIsS,EAAM,GAKV/R,EAAI,EAAIP,GAAKk2E,EAAOl2E,EAAIX,EAAI,EAAK,GAEjCob,KACA27D,EAAW,EACXE,EAAWt2E,EACXu2E,EAAW,EAAIv2E,EACfwJ,EAAQ,EAAIxJ,EACZy4C,EAAO,EAAIz4C,EACX+D,EAAO,EAAI/D,EAAI,CAEnB,KAAKue,EAAI,EAAGA,EAAIhe,EAAGge,IACjB9D,EAAE8D,IAAK,CAGT,IAAIi4D,MAGAX,EAAKxnE,EAAU9H,GAEfuvE,EAASD,EAAGz8D,OACZ28D,EAAOF,EAAGv8D,IAGd,KAAKiF,EAAI,EAAGA,EAAIve,EAAGue,IAIjB,IAHAnL,EAAIslC,EAAKn6B,GAETi4D,EAASpjE,GAAMqH,EAAEjR,EAAQ4J,KAAM,EAAM,EAAI,EAClCA,IAAK,GAAMqH,EAAEjR,EAAQ4J,KAAM,EAAIA,EAAI4J,EAAO5J,GAC/CqH,EAAEjR,EAAQ4J,GAAKmL,CAInB,IAAI23D,EAAK,CAEP,IAAK33D,EAAI,EAAGA,EAAIve,EAAGue,IACjB9D,EAAEi+B,EAAKn6B,IAAMA,CAEf,KAAKrf,EAAI,EAAGA,EAAIG,EAAGH,IAAK,CAEtB,IAAKqf,EAAIve,EAAGkb,EAAK66D,EAAK72E,GAAI6b,EAAKg7D,EAAK72E,EAAI,GAAIoB,EAAI4a,EAAI5a,EAAIya,EAAIza,IAC1Die,EAAIpb,KAAKC,IAAImb,EAAG9D,EAAEq7D,EAAOx1E,IAE3Bma,GAAE1W,EAAO7E,GAAKub,EAAEg+B,EAAOl6B,GACvB9D,EAAEg+B,EAAOl6B,GAAKrf,GAKlB,IAAKA,EAAI,EAAGA,EAAIc,EAAGd,IACjBub,EAAE27D,EAAWl3E,GAAKA,CAEpB,KAAKqf,EAAI,EAAGA,EAAIve,EAAGue,IAAK,CAQtB,IANAnL,EAAIslC,EAAKn6B,GAELvB,EAAO5J,KAAM,GACfojE,EAASx5D,EAAO5J,MAGbynB,EAAKq7C,EAAMz7D,EAAEg+B,EAAOl6B,GAAKnL,EAAIynB,IAAK,EAAIA,EAAKq7C,EAAMz7D,EAAE1W,EAAO82B,IAAK,EAClE,IAAKv6B,EAAIy1E,EAAKl7C,GAAIv6B,EAAIy1E,EAAKl7C,EAAE,GAAIv6B,IAAK,CACpCpB,EAAI42E,EAAOx1E,EACX,IAAIme,GAAI43D,EAAQn3E,EAAGkU,EAAGqH,EAAGjR,EAAO8sE,EAAUC,EAAUH,EAEhD33D,GAAEg4D,OAAS,GACbD,EAASpjE,KAEI,GAAXqL,EAAEg4D,OACJD,EAAS/3D,EAAE6c,KAGbte,EAAO5J,KAAM,IACfqH,EAAE27D,EAAWhjE,GAAK4J,EAAO5J,IAG7B,IAAKA,EAAI,EAAGA,EAAIpT,EAAGoT,IACb4J,EAAO5J,KAAM,IACfojE,EAASx5D,EAAO5J,KAAOojE,EAASpjE,GAEpC,OAAOojE,GAGT,OAAOnD,GAGT50E,EAAQe,KAAO,YACff,EAAQmT,KAAO,SACfnT,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAGA,SAASP,KAkBP,GAAI63E,GAAU,SAAUn3E,EAAGkU,EAAGqH,EAAGjR,EAAO8sE,EAAUC,EAAUH,GAE1D,GAAI71E,GAAGm2E,EAASC,EAIZr7C,EADAm7C,EAAQ,CAIZ,IAAIv3E,GAAKkU,GAAKqH,EAAEjR,EAAQ4J,IAAMqH,EAAE67D,EAAWp3E,GACzC,OAAO,CAQT,IANAub,EAAE67D,EAAWp3E,GAAKub,EAAEjR,EAAQ4J,GAE5BujE,EAAQl8D,EAAE87D,EAAWr3E,GACrBub,EAAE87D,EAAWr3E,GAAKkU,EAGdujE,KAAU,EAEZF,EAAQ,EACRn7C,EAAIp8B,MAED,CAIH,IAFAu3E,EAAQ,EAEHn7C,EAAIq7C,EAAOr7C,GAAK7gB,EAAE27D,EAAW96C,GAAIA,EAAI7gB,EAAE27D,EAAW96C,IACvD,IAAK/6B,EAAIo2E,EAAOp2E,GAAK+6B,EAAG/6B,EAAIm2E,EAE1BA,EAAUj8D,EAAE27D,EAAW71E,GACvBka,EAAE27D,EAAW71E,GAAK+6B,EAGtB,OACEm7C,MAAOA,EACPn7C,EAAGA,GAIP,OAAO+6C,GAGT53E,EAAQe,KAAO,UACff,EAAQmT,KAAO,SACfnT,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAGA,SAASP,GAASgC,EAAMC,EAAQC,GAE9B,GAAImI,GAAMnI,EAAK3B,EAAoB,KAC/B+f,EAAepe,EAAK3B,EAAoB,KACxC6P,EAAWlO,EAAK3B,EAAoB,KAEpC2Q,EAAShP,EAAK3B,EAAoB,KAClC6Q,EAAWlP,EAAK3B,EAAoB,MAEpC63E,EAAal2E,EAAK3B,EAAoB,MAEtC2X,EAAelW,EAAKkW,aAiBpByhC,EAAQ,SAAU94C,EAAGkB,EAAGs2E,GAE1B,IAAKx3E,EACH,MAAO,KAET,IAIIi8B,GAJAj5B,EAAOhD,EAAEkT,MAETvS,EAAIqC,EAAK,GAGTmxE,EAAM,IACND,EAAM,GAENhzE,KACF+6B,EAAI/6B,EAAE+6B,EACNk4C,EAAMjzE,EAAEizE,KAAOA,EACfD,EAAMhzE,EAAEgzE,KAAOA,EAGjB,IAwBIr0E,GAAGoB,EAxBH22C,KACAC,KACAC,KAEAb,EAAI,GAAI5/B,IACViD,OAAQs9B,EACR3yC,MAAO4yC,EACPt9B,IAAKu9B,EACL90C,MAAOrC,EAAGA,KAGRo3C,KACAC,KACAC,KAEAf,EAAI,GAAI7/B,IACViD,OAAQy9B,EACR9yC,MAAO+yC,EACPz9B,IAAK09B,EACLj1C,MAAOrC,EAAGA,KAGRu4C,KAIAp2C,KACAiK,IAEJ,KAAKlN,EAAI,EAAGA,EAAIc,EAAGd,IAEjBiD,EAAEjD,GAAK,EAEPq5C,EAAKr5C,IAAK,EAEVi4C,EAAKj4C,EAAI,GAAK,CAGhBs0E,GAAM,EACND,EAAM,CAEN,KAAK,GAAIh1D,GAAI,EAAGA,EAAIve,EAAGue,IAAK,CAE1B44B,EAAK54B,GAAKi1D,EACVl8B,EAAK/4B,GAAKg1D,CAEV,IAAIzmD,GAAMwO,EAAIA,EAAE/c,GAAKA,EAEjBo6B,EAAMi+B,EAAWtgC,EAAGj3C,EAAGytB,EAAK1gB,EAAIjK,EAAGo2C,EAAM,GAEzCu+B,GAAO,EACPvwE,GAAI,CAER,KAAKjG,EAAIq4C,EAAKr4C,EAAIN,EAAGM,IAInB,GAFApB,EAAIkN,EAAG9L,GAEHi4C,EAAKr5C,GAAK,EAAG,CAEf,GAAI63E,GAAOluE,EAAI1G,EAAEjD,GAEbwQ,GAAOqnE,EAAMxwE,KAEfA,EAAIwwE,EACJD,EAAO53E,OAKTm4C,GAAOk8B,GAAOh7B,EAAKr5C,GACnBk4C,EAAQm8B,KAASpxE,EAAEjD,EAIvB,IAAI43E,IAAQ,GAAMvwE,GAAK,EACrB,MAAO,KAELgyC,GAAKzrB,GAAO,GAAKld,EAAS/G,EAAI1G,EAAE2qB,IAAOle,EAASrI,EAAGswE,MACrDC,EAAOhqD,EAET,IAAI4S,GAAQv9B,EAAE20E,EAUd,KARAz/B,EAAOk8B,GAAOh1D,EACd64B,EAAQm8B,KAAS7zC,EAEjB6Y,EAAKu+B,GAAQv4D,EAEb24B,EAAOs8B,GAAOsD,EACd7/B,EAAQu8B,KAAS,EAEZlzE,EAAIq4C,EAAKr4C,EAAIN,EAAGM,IAEnBpB,EAAIkN,EAAG9L,GAEHi4C,EAAKr5C,GAAK,IAEZg4C,EAAOs8B,GAAOt0E,EAEd+3C,EAAQu8B,KAAS10D,EAAa3c,EAAEjD,GAAIwgC,IAGtCv9B,EAAEjD,GAAK,EAOX,IAHAi4C,EAAKn3C,GAAKwzE,EACVl8B,EAAKt3C,GAAKuzE,EAELjzE,EAAI,EAAGA,EAAIkzE,EAAKlzE,IACnB42C,EAAO52C,GAAKi4C,EAAKrB,EAAO52C,GAO1B,OALA22C,GAAQ1tC,OAAOiqE,EAAKv8B,EAAQz0C,OAASgxE,GACrCt8B,EAAO3tC,OAAOiqE,EAAKt8B,EAAO10C,OAASgxE,GACnCp8B,EAAQ7tC,OAAOgqE,EAAKn8B,EAAQ50C,OAAS+wE,GACrCl8B,EAAO9tC,OAAOgqE,EAAKl8B,EAAO70C,OAAS+wE,IAGjCj9B,EAAGA,EACHC,EAAGA,EACHgC,KAAMA,GAIV,OAAOJ,GAGT15C,EAAQe,KAAO,QACff,EAAQmT,KAAO,SACfnT,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAGA,SAASP,GAASgC,EAAMC,EAAQC,GAE9B,GAAIoe,GAAepe,EAAK3B,EAAoB,KACxC6P,EAAWlO,EAAK3B,EAAoB,KACpCmQ,EAAWxO,EAAK3B,EAAoB,KAEpCi4E,EAAWt2E,EAAK3B,EAAoB,MAqBpC63E,EAAa,SAAUr8B,EAAG/zC,EAAG+X,EAAGnS,EAAIjK,EAAGo2C,EAAM0+B,GAE/C,GAWI32E,GAAG4a,EAAIH,EAAIugB,EAXX47C,EAAU38B,EAAErhC,QACZi+D,EAAS58B,EAAEnhC,OACXg+D,EAAO78B,EAAEjhC,KACT+9D,EAAQ98B,EAAEhoC,MAEVvS,EAAIq3E,EAAM,GAEVp+D,EAAUzS,EAAE0S,QACZC,EAAS3S,EAAE4S,OACXC,EAAO7S,EAAE8S,KAITq/B,EAAMq+B,EAASz8B,EAAG/zC,EAAG+X,EAAGnS,EAAImsC,EAEhC,KAAKj4C,EAAIq4C,EAAKr4C,EAAIN,EAAGM,IACnB6B,EAAEiK,EAAG9L,IAAM,CAEb,KAAK4a,EAAK7B,EAAKkF,GAAIxD,EAAK1B,EAAKkF,EAAI,GAAIje,EAAI4a,EAAI5a,EAAIya,EAAIza,IACnD6B,EAAEgX,EAAO7Y,IAAM2Y,EAAQ3Y,EAEzB,KAAK,GAAI4wB,GAAKynB,EAAKznB,EAAKlxB,EAAGkxB,IAAM,CAE/B,GAAI9d,GAAIhH,EAAG8kB,GAEP2J,EAAI0d,EAAOA,EAAKnlC,GAAKA,CAEzB,MAAIynB,EAAI,GAWR,IARA3f,EAAKk8D,EAAKv8C,GACV9f,EAAKq8D,EAAKv8C,EAAI,GAEd14B,EAAEiR,GAAK0L,EAAa3c,EAAEiR,GAAI8jE,EAAQD,EAAK/7D,EAAMH,EAAK,IAElDza,EAAI22E,EAAM/7D,EAAK,EAAKA,EACpBogB,EAAI27C,EAAK,EAAQl8D,EAAK,EAEdza,EAAIg7B,EAAIh7B,IAAK,CAEnB,GAAIpB,GAAIi4E,EAAO72E,EAEf6B,GAAEjD,GAAKgQ,EAAS/M,EAAEjD,GAAI0P,EAASsoE,EAAQ52E,GAAI6B,EAAEiR,MAIjD,MAAOulC,GAGT,OAAOi+B,GAGTn4E,EAAQe,KAAO,aACff,EAAQmT,KAAO,SACfnT,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAGA,SAASP,GAASgC,EAAMC,EAAQC,GAE9B,GAAI42E,GAAS52E,EAAK3B,EAAoB,MAClC65C,EAAYl4C,EAAK3B,EAAoB,MACrC85C,EAAUn4C,EAAK3B,EAAoB,MAkBnCi4E,EAAW,SAAUz8B,EAAG/zC,EAAG+X,EAAGnS,EAAImsC,GAEpC,GAQIj4C,GAAG4a,EAAIH,EARPq8D,EAAO78B,EAAEjhC,KACT+9D,EAAQ98B,EAAEhoC,MAEV4G,EAAS3S,EAAE4S,OACXC,EAAO7S,EAAE8S,KAETtZ,EAAIq3E,EAAM,GAIV1+B,EAAM34C,CAEV,KAAKkb,EAAK7B,EAAKkF,GAAIxD,EAAK1B,EAAKkF,EAAI,GAAIje,EAAI4a,EAAI5a,EAAIya,EAAIza,IAAK,CAExD,GAAIpB,GAAIia,EAAO7Y,EAEVs4C,GAAUw+B,EAAMl4E,KAEnBy5C,EAAM2+B,EAAOp4E,EAAGq7C,EAAG5B,EAAKvsC,EAAImsC,IAIhC,IAAKj4C,EAAIq4C,EAAKr4C,EAAIN,EAAGM,IAEnBu4C,EAAQu+B,EAAMhrE,EAAG9L,GAEnB,OAAOq4C,GAGT,OAAOq+B,GAGTv4E,EAAQe,KAAO,WACff,EAAQmT,KAAO,SACfnT,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAGA,SAASP,GAASgC,EAAMC,EAAQC,GAE9B,GAAIk4C,GAAYl4C,EAAK3B,EAAoB,MACrC85C,EAAYn4C,EAAK3B,EAAoB,MACrCw4E,EAAY72E,EAAK3B,EAAoB,MAkBrCu4E,EAAS,SAAUlkE,EAAGmnC,EAAG5B,EAAKvsC,EAAImsC,GAEpC,GAMIr5C,GAAGoB,EAAGqwD,EANNrsD,EAAQi2C,EAAEnhC,OACVQ,EAAM2gC,EAAEjhC,KACRjX,EAAOk4C,EAAEhoC,MAETvS,EAAIqC,EAAK,GAITo2C,EAAO,CAIX,KAFArsC,EAAG,GAAKgH,EAEDqlC,GAAQ,GAAG,CAEhBrlC,EAAIhH,EAAGqsC,EAEP,IAAI++B,GAAOj/B,EAAOA,EAAKnlC,GAAKA,CAEvBwlC,GAAUh/B,EAAKxG,KAElBylC,EAAQj/B,EAAKxG,GAEbhH,EAAGpM,EAAIy4C,GAAQ++B,EAAO,EAAI,EAAID,EAAU39D,EAAI49D,IAG9C,IAAIloB,GAAO,CAEX,KAAKhvD,EAAI8L,EAAGpM,EAAIy4C,GAAOkY,EAAK6mB,EAAO,EAAI,EAAID,EAAU39D,EAAI49D,EAAK,IAAKl3E,EAAIqwD,EAAIrwD,IAIzE,GAFApB,EAAIoF,EAAMhE,IAENs4C,EAAUh/B,EAAK1a,GAAnB,CAGAkN,EAAGpM,EAAIy4C,GAAQn4C,EAEf8L,IAAKqsC,GAAQv5C,EAEbowD,EAAO,CAEP,OAGEA,IAEF7W,IAEArsC,IAAKusC,GAAOvlC,GAGhB,MAAOulC,GAGT,OAAO2+B,GAGT74E,EAAQe,KAAO,SACff,EAAQmT,KAAO,SACfnT,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAGA,SAASP,GAASgC,EAAMC,EAAQC,GAE9B,GAAIm9B,GAAUn9B,EAAK3B,EAAoB,KASnCw4E,EAAY,SAAUr4E,GAExB,MAAOA,GAAI,EAAI2+B,EAAQ3+B,GAAKA,EAG9B,OAAOq4E,GAGT94E,EAAQe,KAAO,YACff,EAAQmT,KAAO,SACfnT,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAEpC,GAAIQ,GAAST,EAAK3B,EAAoB,IAClCypC,EAAM9nC,EAAK3B,EAAoB,MAC/B4pC,EAAMjoC,EAAK3B,EAAoB,MAC/B04E,EAAW/2E,EAAK3B,EAAoB,MAEpC++B,EAAkBp9B,EAAK3B,EAAoB,KAE3C6pC,EAASloC,EAAK3B,EAAoB,MAClCwpC,EAAS7nC,EAAK3B,EAAoB,MAmClC0pC,EAAU9nC,EAAM,WAElBu4C,wBAAyB,SAAU3yC,EAAGC,GAEpCD,EAAIpF,EAAOoF,EAEX,IAAIhH,GAAIipC,EAAIjiC,GAERpE,EAAIu1E,EAASn4E,EAAE+2C,EAAG/2C,EAAEg3C,EAAGh3C,EAAEe,EAAG,KAAMkG,EAEtC,OAAOrE,GAAEwO,WAGXqoC,8BAA+B,SAAUzyC,EAAGC,GAE1C,GAAIjH,GAAIipC,EAAIjiC,EAEZ,OAAOmxE,GAASn4E,EAAE+2C,EAAG/2C,EAAEg3C,EAAGh3C,EAAEe,EAAG,KAAMkG,IAGvCsyC,+BAAgC,SAAUvyC,EAAGC,GAE3C,GAAIjH,GAAIipC,EAAIjiC,EAEZ,OAAOmxE,GAASn4E,EAAE+2C,EAAG/2C,EAAEg3C,EAAGh3C,EAAEe,EAAG,KAAMkG,IAGvCmxE,+CAAgD,SAAUpxE,EAAGC,EAAG6xC,EAAOC,GAErE,GAAI/4C,GAAIopC,EAAIpiC,EAAG8xC,EAAOC,EAEtB,OAAOo/B,GAASn4E,EAAE+2C,EAAG/2C,EAAEg3C,EAAGh3C,EAAEe,EAAGf,EAAE+7B,EAAG90B,IAGtCoxE,yBAA0B,SAAUr4E,EAAGiH,GAErC,MAAOkxE,GAASn4E,EAAE+2C,EAAG/2C,EAAEg3C,EAAGh3C,EAAEe,EAAGf,EAAE+7B,EAAG90B,MAIpCqxE,EAAY,SAAUtxE,GAExB,GAAI/F,EAAKqW,SAAStQ,GAChB,MAAOA,EAET,IAAI3D,EAAQ2D,GACV,MAAOpF,GAAOoF,EAEhB,MAAM,IAAI9B,WAAU,oCAGlBizE,EAAW,SAAUv4E,EAAGq8B,EAAGl7B,EAAGg7B,EAAG90B,GAEnCrH,EAAI04E,EAAU14E,GACdq8B,EAAIq8C,EAAUr8C,GAEdh1B,EAAIs3B,EAAgB3+B,EAAGqH,GAAG,GAEtBlG,IACFkG,EAAE6L,MAAQolE,EAASn3E,EAAGkG,EAAE6L,OAE1B,IAAInI,GAAIq+B,EAAOppC,EAAGqH,GAEdrE,EAAIymC,EAAOpN,EAAGtxB,EAKlB,OAHIoxB,KACFn5B,EAAEkQ,MAAQolE,EAASn8C,EAAGn5B,EAAEkQ,QAEnBlQ,EAGT,OAAOsmC,GAtHT,GAAI7lC,GAAUrB,MAAMqB,OAyHpBnE,GAAQe,KAAO,UACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAGA,SAASP,KAUP,GAAIi5E,GAAW,SAAUn3E,EAAGkG,EAAGxG,GAE7B,GAAIue,GACAve,EAAIwG,EAAEhE,OACNL,IAEJ,IAAI7B,EAEF,IAAKie,EAAI,EAAGA,EAAIve,EAAGue,IAEjBpc,EAAE7B,EAAEie,IAAM/X,EAAE+X,OAKd,KAAKA,EAAI,EAAGA,EAAIve,EAAGue,IAEjBpc,EAAEoc,GAAK/X,EAAE+X,EAGb,OAAOpc,GAGT,OAAOs1E,GAGTh5E,EAAQe,KAAO,WACff,EAAQmT,KAAO,SACfnT,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjCL,EAAOD,SACLM,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,IACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,IACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,IACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,KACpBA,EAAoB,IACpBA,EAAoB,KACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,KACpBA,EAAoB,OAMhB,SAAUL,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GA0EpC,QAASm3E,GAAa31E,EAAG41E,GAGvB,GAAIC,GAAQ71E,EAAEggB,MAAQ,EAClBtZ,EAAM1G,EAAE0G,MAGRovE,EAAY,GAAIz3E,GAAK4iB,QAAQ80D,EAAYrvE,GAAM,GAAGmY,IAClD,GAAIxgB,GAAK4iB,QAAQ,EAAG40D,GAAO70C,MAE/B,IAAI40C,EAAU,CACZ,GAAII,IACAF,EACA,GAAIz3E,GAAK4iB,QAAQ80D,EAAYrvE,GAAM,GAAGmY,IACpC,GAAIxgB,GAAK4iB,QAAQ,EAAG40D,EAAkB,EAAV70E,KAAK6+B,GAAS,GAAGmB,OAC/C,GAAI3iC,GAAK4iB,QAAQ80D,EAAYrvE,GAAM,GAAGmY,IACpC,GAAIxgB,GAAK4iB,QAAQ,EAAG40D,EAAkB,EAAV70E,KAAK6+B,GAAS,GAAGmB,OAGnD,OAA0B,UAAlB1iC,EAAOU,OAAsBg3E,EAAMh3E,EAAOg3E,GAGlD,MAAOF,GAUX,QAASG,GAAUj2E,GACjB,GAAGA,EAAE0C,OAASrE,EAAK+7B,UAAUp6B,EAAE0C,OAAQ,CACrC,GAAIiT,GAAS3V,EAAEuO,OAIf,OAHAoH,GAAOjT,MAAQ,EACfiT,EAASA,EAAOnO,IAAI,EAAI,GACxBmO,EAAOjT,MAAQizE,EAAa31E,EAAE0C,OACvBiT,EAGP,GAAIugE,GAASphD,EAAW90B,EAAE0C,MACtBwzE,KACFl2E,EAAE0C,MAAQ4J,EAAWtM,EAAE0C,OAIzB,IAAIyzE,EAEFA,GADE93E,EAAKiQ,YAAYtO,EAAE0C,OACb,GAAIrE,GAAK6iB,UAAU,GAAGtE,IAAI,GAE3Bve,EAAKg8B,WAAWr6B,EAAE0C,OACjB,GAAIrE,GAAK8iB,SAAS,EAAG,GAGrB,EAAE,CAGZ,IAAIxL,GAAS3V,EAAEwH,IAAI2uE,EAMnB,OAJID,KACFvgE,EAAOjT,MAAQ4J,EAAWqJ,EAAOjT,QAG5BiT,EAzIX,GAAIrJ,GAAa/N,EAAK3B,EAAoB,KACtCk4B,EAAav2B,EAAK3B,EAAoB,KACtCoC,EAAST,EAAK3B,EAAoB,IAyClC+pC,EAAOnoC,EAAM,QACfsD,OAAUi0E,EAIV90D,QAAW00D,EAEXS,mBAAoBT,EAEpBz0D,UAAa,SAAUlhB,GACrB,MAAOA,GAAE2mC;EAGXtlB,KAAQ40D,EAER70D,iBAAkB,SAAUphB,GAE1B,MAAOL,GAAQK,EAAG2mC,GAAM,KAmF5B,OAFAA,GAAKpnC,OAASE,EAAG,yBAEVknC,EAlJT,GAAIhnC,GAAU/C,EAAoB,GA+J9Bm5E,EAAc/0E,KAAK2lC,MAAQ,SAAU3mC,GACvC,GAAU,IAANA,EACF,MAAOA,EAGT,IACI2V,GADAugE,EAASl2E,EAAI,CAcjB,OAZIk2E,KACFl2E,GAAKA,GAGH0E,SAAS1E,IACX2V,EAAS3U,KAAKggC,IAAIhgC,KAAK2+B,IAAI3/B,GAAK,GAEhC2V,GAAU3V,GAAK2V,EAASA,GAAW,EAAIA,GAAW,GAElDA,EAAS3V,EAGJk2E,GAAUvgE,EAASA,EAG5BrZ,GAAQe,KAAO,OACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GA6BpC,GAAIqiC,GAAOriC,EAAM,QACfsD,OAAUd,KAAK6/B,KAEf5f,QAAW,SAAUjhB,GACnB,MAAOA,GAAE6gC,QAGX3f,UAAa,SAAUlhB,GACrB,MAAOA,GAAE6gC,QAGX1f,SAAY,SAAUnhB,GACpB,MAAOA,GAAE6gC,QAGXzf,iBAAkB,SAAUphB,GAE1B,MAAOL,GAAQK,EAAG6gC,GAAM,KAM5B,OAFAA,GAAKthC,OAASE,EAAG,yCAEVohC,EAtDT,GAAIlhC,GAAU/C,EAAoB,EAyDlCN,GAAQe,KAAO,OACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GA0BpC,GAAIooC,GAAOpoC,EAAM,QACfsD,OAAU,SAAU9B,GAClB,MAAOA,GAAIA,EAAIA,GAGjBihB,QAAW,SAAUjhB,GACnB,MAAOA,GAAE6e,IAAI7e,GAAG6e,IAAI7e,IAGtBkhB,UAAa,SAAUlhB,GACrB,MAAOA,GAAE8e,MAAM9e,GAAG8e,MAAM9e,IAG1BmhB,SAAY,SAAUnhB,GACpB,MAAOA,GAAEwH,IAAI,IAGf4Z,iBAAkB,SAAUphB,GAE1B,MAAOL,GAAQK,EAAG4mC,GAAM,IAG1BvlB,KAAQ,SAASrhB,GACf,MAAOA,GAAEwH,IAAI,KAMjB,OAFAo/B,GAAKrnC,OAASE,EAAG,+BAEVmnC,EAzDT,GAAIjnC,GAAU/C,EAAoB,EA4DlCN,GAAQe,KAAO,OACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAGA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAEpC,GAAIQ,GAAST,EAAK3B,EAAoB,IAClCyX,EAAiB9V,EAAK3B,EAAoB,KAC1CuX,EAAQvX,EAAoB,GAE5BqiB,EAAc1gB,EAAK3B,EAAoB,KACvC06C,EAAc/4C,EAAK3B,EAAoB,MACvC0X,EAAc/V,EAAK3B,EAAoB,KACvC8U,EAAcnT,EAAK3B,EAAoB,IACvCkT,EAAcvR,EAAK3B,EAAoB,IA4BvC+P,EAAcnO,EAAM,eAEtBgX,WAAYnB,EAEZM,iBAAkB,SAAU3U,EAAG+H,GAE7B,GAAI5K,EAGJ,QAAQ6C,EAAEjB,WACR,IAAK,SACH,OAAQgJ,EAAEhJ,WACR,IAAK,SAEH5B,EAAIm6C,EAAYt3C,EAAG+H,EAAGsM,GAAgB,EACtC,MACF,SAEElX,EAAI8hB,EAAYlX,EAAG/H,EAAGqU,GAAgB,GAG1C,KACF,SACE,OAAQtM,EAAEhJ,WACR,IAAK,SAEH5B,EAAI8hB,EAAYjf,EAAG+H,EAAGsM,GAAgB,EACtC,MACF,SAEElX,EAAIuU,EAAY1R,EAAG+H,EAAGsM,IAK9B,MAAOlX,IAGTqX,eAAgB,SAAUxU,EAAG+H,GAE3B,MAAO4E,GAAY3N,EAAOgB,GAAIhB,EAAO+I,IAAIyG,WAG3C2G,gBAAiB,SAAUnV,EAAG+H,GAE5B,MAAO4E,GAAY3N,EAAOgB,GAAI+H,IAGhCmN,gBAAiB,SAAUlV,EAAG+H,GAE5B,MAAO4E,GAAY3M,EAAGhB,EAAO+I,KAG/BqN,cAAe,SAAUpV,EAAG+H,GAE1B,GAAI5K,EAEJ,QAAQ6C,EAAEjB,WACR,IAAK,SACH5B,EAAImX,EAAYtU,EAAG+H,EAAGsM,GAAgB,EACtC,MACF,SACElX,EAAI2S,EAAY9P,EAAG+H,EAAGsM,GAAgB,GAG1C,MAAOlX,IAGTkY,cAAe,SAAUrV,EAAG+H,GAE1B,GAAI5K,EAEJ,QAAQ4K,EAAEhJ,WACR,IAAK,SACH5B,EAAImX,EAAYvM,EAAG/H,EAAGqU,GAAgB,EACtC,MACF,SACElX,EAAI2S,EAAY/H,EAAG/H,EAAGqU,GAAgB,GAG1C,MAAOlX,IAGTmY,aAAc,SAAUtV,EAAG+H,GAEzB,MAAO+H,GAAY9Q,EAAOgB,GAAI+H,EAAGsM,GAAgB,GAAO7F,WAG1D+G,aAAc,SAAUvV,EAAG+H,GAEzB,MAAO+H,GAAY9Q,EAAO+I,GAAI/H,EAAGqU,GAAgB,GAAM7F,YAQ3D,OAJA7B,GAAYpN,OACVG,EAAG,oBAAsByU,EAAMlI,UAAuB,YAAI,sBAGrDU,EAGTrQ,EAAQe,KAAO,cACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAGA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAEpC,GAAIQ,GAAST,EAAK3B,EAAoB,IAClC4K,EAAMjJ,EAAK3B,EAAoB,KAC/BuX,EAAQvX,EAAoB,GAE5Bgf,EAAcrd,EAAK3B,EAAoB,KACvCwiB,EAAc7gB,EAAK3B,EAAoB,KACvC0X,EAAc/V,EAAK3B,EAAoB,KACvCyf,EAAc9d,EAAK3B,EAAoB,KACvC8U,EAAcnT,EAAK3B,EAAoB,IACvCkT,EAAcvR,EAAK3B,EAAoB,IAyBvCwP,EAAS5N,EAAM,UAEjBgX,WAAYhO,EAEZmN,iBAAkB,SAAU3U,EAAG+H,GAE7B,GAAI5K,EAGJ,QAAQ6C,EAAEjB,WACR,IAAK,SACH,OAAQgJ,EAAEhJ,WACR,IAAK,SAEH5B,EAAIiiB,EAAYpf,EAAG+H,EAAGP,GAAK,EAC3B,MACF,SAEErK,EAAIye,EAAY7T,EAAG/H,EAAGwH,GAAK,GAG/B,KACF,SACE,OAAQO,EAAEhJ,WACR,IAAK,SAEH5B,EAAIye,EAAY5b,EAAG+H,EAAGP,GAAK,EAC3B,MACF,SAEErK,EAAIuU,EAAY1R,EAAG+H,EAAGP,IAK9B,MAAOrK,IAGTqX,eAAgB,SAAUxU,EAAG+H,GAE3B,MAAOqE,GAAOpN,EAAOgB,GAAIhB,EAAO+I,IAAIyG,WAGtC2G,gBAAiB,SAAUnV,EAAG+H,GAE5B,MAAOqE,GAAOpN,EAAOgB,GAAI+H,IAG3BmN,gBAAiB,SAAUlV,EAAG+H,GAE5B,MAAOqE,GAAOpM,EAAGhB,EAAO+I,KAG1BqN,cAAe,SAAUpV,EAAG+H,GAE1B,GAAI5K,EAEJ,QAAQ6C,EAAEjB,WACR,IAAK,SACH5B,EAAImX,EAAYtU,EAAG+H,EAAGqE,GAAQ,EAC9B,MACF,SACEjP,EAAI2S,EAAY9P,EAAG+H,EAAGqE,GAAQ,GAGlC,MAAOjP,IAGTkY,cAAe,SAAUrV,EAAG+H,GAE1B,GAAI5K,EAEJ,QAAQ4K,EAAEhJ,WACR,IAAK,SACH5B,EAAIkf,EAAYtU,EAAG/H,EAAGoM,GAAQ,EAC9B,MACF,SACEjP,EAAI2S,EAAY/H,EAAG/H,EAAGoM,GAAQ,GAGlC,MAAOjP,IAGTmY,aAAc,SAAUtV,EAAG+H,GAEzB,MAAO+H,GAAY9Q,EAAOgB,GAAI+H,EAAGqE,GAAQ,GAAOoC,WAGlD+G,aAAc,SAAUvV,EAAG+H,GAEzB,MAAO+H,GAAY9Q,EAAO+I,GAAI/H,EAAGoM,GAAQ,GAAMoC,YAQnD,OAJApC,GAAO7M,OACLG,EAAG,oBAAsByU,EAAMlI,UAAkB,OAAI,sBAGhDG,EAGT9P,EAAQe,KAAO,SACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GA6BpC,GAAIwiC,GAAMxiC,EAAM,OACdsD,OAAUd,KAAKggC,IAEf/f,QAAW,SAAUjhB,GACnB,MAAOA,GAAEghC,OAGX9f,UAAa,SAAUlhB,GACrB,MAAOA,GAAEghC,OAGX5f,iBAAkB,SAAUphB,GAE1B,MAAOL,GAAQK,EAAGghC,KAMtB,OAFAA,GAAIzhC,OAASE,EAAG,kCAETuhC,EAlDT,GAAIrhC,GAAU/C,EAAoB,EAqDlCN,GAAQe,KAAO,MACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GA4BpC,GAAIg/B,GAAQh/B,EAAM,SAChBsD,OAAUd,KAAKw8B,MAEfvc,QAAW,SAAUjhB,GACnB,MAAOA,GAAEw9B,SAGXtc,UAAa,SAAUlhB,GACrB,MAAOA,GAAEw9B,SAGXrc,SAAY,SAAUnhB,GACpB,MAAOA,GAAEw9B,SAGXpc,iBAAkB,SAAUphB,GAE1B,MAAOL,GAAQK,EAAGw9B,GAAO,KAM7B,OAFAA,GAAMj+B,OAASE,EAAG,2CAEX+9B,EArDT,GAAI79B,GAAU/C,EAAoB,EAwDlCN,GAAQe,KAAO,QACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GA2JpC,QAAS63E,GAAcjyE,EAAGC,GACxB,IAAKD,EAAEqrB,UAAYprB,EAAEorB,QACnB,KAAM,IAAIjtB,OAAM,qDAKlB,KADA,GAAI4U,GAAO,GAAI/Y,GAAK6iB,UAAU,IACtB7c,EAAE6e,UAAU,CAClB,GAAI5G,GAAIlY,EAAEyI,IAAIxI,EACdD,GAAIC,EACJA,EAAIiY,EAEN,MAAOlY,GAAEkqB,GAAGlX,GAAQhT,EAAEgf,MAAQhf,EArKhC,GAAIpF,GAAST,EAAK3B,EAAoB,IAElC4f,EAAcje,EAAK3B,EAAoB,KACvC6f,EAAcle,EAAK3B,EAAoB,KACvC8f,EAAcne,EAAK3B,EAAoB,KACvC8U,EAAcnT,EAAK3B,EAAoB,IACvCkT,EAAcvR,EAAK3B,EAAoB,IA2BvCiqC,EAAMroC,EAAM,OAEdkV,iBAAkB4iE,EAElB3iE,uBAAwB0iE,EAExBviE,qBAAsB,SAAU9T,EAAG+H,GACjC,MAAO/H,GAAE6mC,IAAI9+B,IAGf4M,iBAAkB,SAAU3U,EAAG+H,GAE7B,GAAI5K,EAGJ,QAAQ6C,EAAEjB,WACR,IAAK,SACH,OAAQgJ,EAAEhJ,WACR,IAAK,SAEH5B,EAAIsf,EAAYzc,EAAG+H,EAAG8+B,EACtB,MACF,SAEE1pC,EAAIqf,EAAYzU,EAAG/H,EAAG6mC,GAAK,GAG/B,KACF,SACE,OAAQ9+B,EAAEhJ,WACR,IAAK,SAEH5B,EAAIqf,EAAYxc,EAAG+H,EAAG8+B,GAAK,EAC3B,MACF,SAEE1pC,EAAIuU,EAAY1R,EAAG+H,EAAG8+B,IAK9B,MAAO1pC,IAGTqX,eAAgB,SAAUxU,EAAG+H,GAE3B,MAAO8+B,GAAI7nC,EAAOgB,GAAIhB,EAAO+I,IAAIyG,WAGnC2G,gBAAiB,SAAUnV,EAAG+H,GAE5B,MAAO8+B,GAAI7nC,EAAOgB,GAAI+H,IAGxBmN,gBAAiB,SAAUlV,EAAG+H,GAE5B,MAAO8+B,GAAI7mC,EAAGhB,EAAO+I,KAGvB45B,6BAA8B,SAAU3hC,EAAG+H,GAEzC,GAAI5K,EAEJ,QAAQ6C,EAAEjB,WACR,IAAK,SACH5B,EAAIuf,EAAY1c,EAAG+H,EAAG8+B,GAAK,EAC3B,MACF,SACE1pC,EAAI2S,EAAY9P,EAAG+H,EAAG8+B,GAAK,GAG/B,MAAO1pC,IAGTo5E,6BAA8B,SAAUv2E,EAAG+H,GAEzC,GAAI5K,EAEJ,QAAQ4K,EAAEhJ,WACR,IAAK,SACH5B,EAAIuf,EAAY3U,EAAG/H,EAAG6mC,GAAK,EAC3B,MACF,SACE1pC,EAAI2S,EAAY/H,EAAG/H,EAAG6mC,GAAK,GAG/B,MAAO1pC,IAGT0kC,4BAA6B,SAAU7hC,EAAG+H,GAExC,MAAO+H,GAAY9Q,EAAOgB,GAAI+H,EAAG8+B,GAAK,GAAOr4B,WAG/CgoE,4BAA6B,SAAUx2E,EAAG+H,GAExC,MAAO+H,GAAY9Q,EAAO+I,GAAI/H,EAAG6mC,GAAK,GAAMr4B,WAI9CioE,mHAAoH,SAAUryE,EAAGC,EAAGmN,GAElI,IAAK,GADDsL,GAAM+pB,EAAIziC,EAAGC,GACRtH,EAAI,EAAGA,EAAIyU,EAAKnR,OAAQtD,IAC/B+f,EAAM+pB,EAAI/pB,EAAKtL,EAAKzU,GAEtB,OAAO+f,KAMX,OAFA+pB,GAAItnC,MAAQ,8BAELsnC,EAgCT,QAASyvC,GAAKlyE,EAAGC,GACf,IAAKhC,EAAU+B,KAAO/B,EAAUgC,GAC9B,KAAM,IAAI7B,OAAM,qDAKlB,KADA,GAAI8Z,GACQ,GAALjY,GACLiY,EAAIlY,EAAIC,EACRD,EAAIC,EACJA,EAAIiY,CAEN,OAAQlY,GAAI,GAAMA,EAAIA,EAhMxB,GAAI/B,GAAYzF,EAAoB,GAAGyF,SAmMvC/F,GAAQe,KAAO,MACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAqDpC,QAASk4E,GAAQllE,GAMf,IAAK,GAHDmE,GAAS,EACTghE,EAAU,EAEL55E,EAAI,EAAGA,EAAIyU,EAAKnR,OAAQtD,IAAK,CACpC,GAAI2F,GAAQgE,EAAI8K,EAAKzU,GACjBuQ,GAAQqpE,EAASj0E,IACnBiT,EAASlJ,EAASkJ,EAAQlJ,EAASC,EAAOiqE,EAASj0E,GAAQgK,EAAOiqE,EAASj0E,KAC3EiT,EAAS7I,EAAI6I,EAAQ,GACrBghE,EAAUj0E,GAEViT,EAAS7I,EAAI6I,EAAQ+e,EAAWhyB,GAAS+J,EAASC,EAAOhK,EAAOi0E,GAAUjqE,EAAOhK,EAAOi0E,IAAYj0E,GAIxG,MAAO+J,GAASkqE,EAAS9hD,EAAKlf,IArEhC,GAAIjP,GAAMnI,EAAK3B,EAAoB,KAC/BkQ,EAAMvO,EAAK3B,EAAoB,KAC/B8P,EAASnO,EAAK3B,EAAoB,KAClC6P,EAAWlO,EAAK3B,EAAoB,KACpCi4B,EAAOt2B,EAAK3B,EAAoB,KAChC0Q,EAAU/O,EAAK3B,EAAoB,KACnC83B,EAAan2B,EAAK3B,EAAoB,KA4BtCkqC,EAAQtoC,EAAM,SAChBo4E,yBAA0BF,EAE1Bt3E,MAAS,SAAUY,GACjB,MAAO8mC,GAAMzmB,MAAMymB,EAAO9jC,EAAQhD,KAGpClB,OAAU,SAAUkB,GAClB,MAAO8mC,GAAMzmB,MAAMymB,EAAO9jC,EAAQhD,EAAEwgB,cAgCxC,OAFAsmB,GAAMvnC,MAAQ,gCAEPunC,EA7ET,GAAI9jC,GAAUpG,EAAoB,GAAGoG,OAgFrC1G,GAAQe,KAAO,QACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GA+JpC,QAASq4E,GAAczyE,EAAGC,GACxB,IAAKD,EAAEqrB,UAAYprB,EAAEorB,QACnB,KAAM,IAAIjtB,OAAM,qDAGlB,IAAI4B,EAAE8e,UAAY7e,EAAE6e,SAClB,MAAO,IAAI7kB,GAAK6iB,UAAU,EAM5B,KADA,GAAIooB,GAAOllC,EAAE0a,MAAMza,IACXA,EAAE6e,UAAU,CAClB,GAAIiX,GAAI91B,CACRA,GAAID,EAAEyI,IAAIstB,GACV/1B,EAAI+1B,EAEN,MAAOmP,GAAK1sB,IAAIxY,GAAGsC,MA9KrB,GAAI1H,GAAST,EAAK3B,EAAoB,IAElCqiB,EAAc1gB,EAAK3B,EAAoB,KACvCw8B,EAAc76B,EAAK3B,EAAoB,KACvC0X,EAAc/V,EAAK3B,EAAoB,KACvC8U,EAAcnT,EAAK3B,EAAoB,IACvCkT,EAAcvR,EAAK3B,EAAoB,IA+BvCmqC,EAAMvoC,EAAM,OACdkV,iBAAkBojE,EAElBnjE,uBAAwBkjE,EAExB/iE,qBAAsB,SAAU9T,EAAG+H,GAEjC,MAAO/H,GAAE+mC,IAAIh/B,IAGf4M,iBAAkB,SAAU3U,EAAG+H,GAE7B,GAAI5K,EAGJ,QAAQ6C,EAAEjB,WACR,IAAK,SACH,OAAQgJ,EAAEhJ,WACR,IAAK,SAEH5B,EAAIi8B,EAAYp5B,EAAG+H,EAAGg/B,EACtB,MACF,SAEE5pC,EAAI8hB,EAAYlX,EAAG/H,EAAG+mC,GAAK,GAG/B,KACF,SACE,OAAQh/B,EAAEhJ,WACR,IAAK,SAEH5B,EAAI8hB,EAAYjf,EAAG+H,EAAGg/B,GAAK,EAC3B,MACF,SAEE5pC,EAAIuU,EAAY1R,EAAG+H,EAAGg/B,IAK9B,MAAO5pC,IAGTqX,eAAgB,SAAUxU,EAAG+H,GAE3B,MAAOg/B,GAAI/nC,EAAOgB,GAAIhB,EAAO+I,IAAIyG,WAGnC2G,gBAAiB,SAAUnV,EAAG+H,GAE5B,MAAOg/B,GAAI/nC,EAAOgB,GAAI+H,IAGxBmN,gBAAiB,SAAUlV,EAAG+H,GAE5B,MAAOg/B,GAAI/mC,EAAGhB,EAAO+I,KAGvB45B,6BAA8B,SAAU3hC,EAAG+H,GAEzC,GAAI5K,EAEJ,QAAQ6C,EAAEjB,WACR,IAAK,SACH5B,EAAImX,EAAYtU,EAAG+H,EAAGg/B,GAAK,EAC3B,MACF,SACE5pC,EAAI2S,EAAY9P,EAAG+H,EAAGg/B,GAAK,GAG/B,MAAO5pC,IAGTo5E,6BAA8B,SAAUv2E,EAAG+H,GAEzC,GAAI5K,EAEJ,QAAQ4K,EAAEhJ,WACR,IAAK,SACH5B,EAAImX,EAAYvM,EAAG/H,EAAG+mC,GAAK,EAC3B,MACF,SACE5pC,EAAI2S,EAAY/H,EAAG/H,EAAG+mC,GAAK,GAG/B,MAAO5pC,IAGT0kC,4BAA6B,SAAU7hC,EAAG+H,GAExC,MAAO+H,GAAY9Q,EAAOgB,GAAI+H,EAAGg/B,GAAK,GAAOv4B,WAG/CgoE,4BAA6B,SAAUx2E,EAAG+H,GAExC,MAAO+H,GAAY9Q,EAAO+I,GAAI/H,EAAG+mC,GAAK,GAAMv4B,WAI9CioE,mHAAoH,SAAUryE,EAAGC,EAAGmN,GAElI,IAAK,GADDsL,GAAMiqB,EAAI3iC,EAAGC,GACRtH,EAAI,EAAGA,EAAIyU,EAAKnR,OAAQtD,IAC/B+f,EAAMiqB,EAAIjqB,EAAKtL,EAAKzU,GAEtB,OAAO+f,KAMX,OAFAiqB,GAAIxnC,MAAQqD,OAELmkC,EAqCT,QAAS+vC,GAAM1yE,EAAGC,GAChB,IAAKhC,EAAU+B,KAAO/B,EAAUgC,GAC9B,KAAM,IAAI7B,OAAM,qDAGlB,IAAS,GAAL4B,GAAe,GAALC,EACZ,MAAO,EAOT,KAFA,GAAI81B,GACAmP,EAAOllC,EAAIC,EACH,GAALA,GACL81B,EAAI91B,EACJA,EAAID,EAAI+1B,EACR/1B,EAAI+1B,CAEN,OAAOn5B,MAAK0F,IAAI4iC,EAAOllC,GA/MzB,GAAI/B,GAAYzF,EAAoB,GAAGyF,SAkNvC/F,GAAQe,KAAO,MACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAGAL,GAAOD,QAAU,SAAiB8H,EAAG6M,EAAGqH,EAAGtY,EAAGq5B,EAAGthB,EAAM5a,EAAGyT,EAAGb,EAASgnE,EAAQr0E,GAE5E,GAOI0Z,GAAGF,EAAIC,EAAIpf,EAPXmb,EAAU9T,EAAE2S,QACZoB,EAAS/T,EAAE6S,OACXmB,EAAOhU,EAAE+S,KAETG,EAASna,EAAE8Z,MAMf,IAAIjX,EAEF,IAAKkc,EAAK9D,EAAKnH,GAAIkL,EAAK/D,EAAKnH,EAAI,GAAImL,EAAIF,EAAIE,EAAID,EAAIC,IAEnDrf,EAAIob,EAAOiE,GAEP9D,EAAEvb,KAAOgb,GAEXO,EAAEvb,GAAKgb,EAEPT,EAAO/V,KAAKxE,GAERg6E,GAEF/2E,EAAEjD,GAAKgT,EAAUa,EAAEsH,EAAQkE,GAAI1Z,GAASkO,EAAElO,EAAOwV,EAAQkE,IAEzDid,EAAEt8B,GAAKgb,GAIP/X,EAAEjD,GAAKmb,EAAQkE,KAKjBpc,EAAEjD,GAAKgT,EAAUa,EAAEsH,EAAQkE,GAAIpc,EAAEjD,IAAM6T,EAAE5Q,EAAEjD,GAAImb,EAAQkE,IAEvDid,EAAEt8B,GAAKgb,OAMX,KAAKmE,EAAK9D,EAAKnH,GAAIkL,EAAK/D,EAAKnH,EAAI,GAAImL,EAAIF,EAAIE,EAAID,EAAIC,IAEnDrf,EAAIob,EAAOiE,GAEP9D,EAAEvb,KAAOgb,GAEXO,EAAEvb,GAAKgb,EAEPT,EAAO/V,KAAKxE,IAIZs8B,EAAEt8B,GAAKgb,IAST,SAAUxb,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GA0BpC,GAAIwoC,GAAQxoC,EAAM,SAChBsD,OAAU,SAAU9B,GAClB,MAAIA,IAAK,GAAK1B,EAAOkwB,YACZwoD,EAAOh3E,GAIP,GAAI3B,GAAK4iB,QAAQjhB,EAAG,GAAG2/B,MAAM/iB,IAAI5b,KAAKyhC,OAIjDxhB,QAAW,SAAUjhB,GACnB,MAAO,IAAI3B,GAAK4iB,QAAQjhB,GAAG2/B,MAAM/iB,IAAI5b,KAAKyhC,OAG5CvhB,UAAa,SAAUlhB,GACrB,OAAKA,EAAE80B,cAAgBx2B,EAAOkwB,YACrBxuB,EAAE2/B,MAIF,GAAIthC,GAAK4iB,QAAQjhB,EAAEujB,WAAY,GAAGoc,MAAM/iB,IAAI5b,KAAKyhC,OAI5DrhB,iBAAkB,SAAUphB,GAC1B,MAAOL,GAAQK,EAAGgnC,KAMtB,OAFAA,GAAMznC,OAASE,EAAG,uCAEXunC,EA5DT,GAAIrnC,GAAU/C,EAAoB,GAqE9Bo6E,EAASh2E,KAAKgmC,OAAS,SAAUhnC,GACnC,MAAOgB,MAAK2+B,IAAI3/B,GAAKgB,KAAKyhC,KAG5BnmC,GAAQe,KAAO,QACff,EAAQD,QAAUA,GAMZ,SAAUE,EAAQD,EAASM,GAEjC,YAGA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAmKpC,QAASy4E,GAAKj3E,EAAG+H,GACf,GAAIA,EAAI,EAIN,MAAO/H,GAAI+H,EAAI/G,KAAKw8B,MAAMx9B,EAAI+H,EAE3B,IAAU,IAANA,EACP,MAAO/H,EAIP,MAAM,IAAIwC,OAAM,+CA7KpB,GAAIxD,GAAST,EAAK3B,EAAoB,IAClCuX,EAAQvX,EAAoB,GAE5BqiB,EAAc1gB,EAAK3B,EAAoB,KACvCgf,EAAcrd,EAAK3B,EAAoB,KACvCugB,EAAc5e,EAAK3B,EAAoB,KACvC0X,EAAc/V,EAAK3B,EAAoB,KACvCyf,EAAc9d,EAAK3B,EAAoB,KACvC8U,EAAcnT,EAAK3B,EAAoB,IACvCkT,EAAcvR,EAAK3B,EAAoB,IAqCvCiQ,EAAMrO,EAAM,OAEdkV,iBAAkBujE,EAElBtjE,uBAAwB,SAAU3T,EAAG+H,GACnC,MAAOA,GAAEmb,SAAWljB,EAAIA,EAAE6M,IAAI9E,IAGhC+L,qBAAsB,SAAU9T,EAAG+H,GACjC,MAAO/H,GAAE6M,IAAI9E,IAGf4M,iBAAkB,SAAU3U,EAAG+H,GAE7B,GAAI5K,EAGJ,QAAQ6C,EAAEjB,WACR,IAAK,SACH,OAAQgJ,EAAEhJ,WACR,IAAK,SAEH5B,EAAIggB,EAAYnd,EAAG+H,EAAG8E,GAAK,EAC3B,MACF,SAEE1P,EAAI8hB,EAAYlX,EAAG/H,EAAG6M,GAAK,GAG/B,KACF,SACE,OAAQ9E,EAAEhJ,WACR,IAAK,SAEH5B,EAAIye,EAAY5b,EAAG+H,EAAG8E,GAAK,EAC3B,MACF,SAEE1P,EAAIuU,EAAY1R,EAAG+H,EAAG8E,IAK9B,MAAO1P,IAGTqX,eAAgB,SAAUxU,EAAG+H,GAE3B,MAAO8E,GAAI7N,EAAOgB,GAAIhB,EAAO+I,IAAIyG,WAGnC2G,gBAAiB,SAAUnV,EAAG+H,GAE5B,MAAO8E,GAAI7N,EAAOgB,GAAI+H,IAGxBmN,gBAAiB,SAAUlV,EAAG+H,GAE5B,MAAO8E,GAAI7M,EAAGhB,EAAO+I,KAGvBqN,cAAe,SAAUpV,EAAG+H,GAE1B,GAAI5K,EAEJ,QAAQ6C,EAAEjB,WACR,IAAK,SACH5B,EAAImX,EAAYtU,EAAG+H,EAAG8E,GAAK,EAC3B,MACF,SACE1P,EAAI2S,EAAY9P,EAAG+H,EAAG8E,GAAK,GAG/B,MAAO1P,IAGTkY,cAAe,SAAUrV,EAAG+H,GAE1B,GAAI5K,EAEJ,QAAQ4K,EAAEhJ,WACR,IAAK,SACH5B,EAAIkf,EAAYtU,EAAG/H,EAAG6M,GAAK,EAC3B,MACF,SACE1P,EAAI2S,EAAY/H,EAAG/H,EAAG6M,GAAK,GAG/B,MAAO1P,IAGTmY,aAAc,SAAUtV,EAAG+H,GAEzB,MAAO+H,GAAY9Q,EAAOgB,GAAI+H,EAAG8E,GAAK,GAAO2B,WAG/C+G,aAAc,SAAUvV,EAAG+H,GAEzB,MAAO+H,GAAY9Q,EAAO+I,GAAI/H,EAAG6M,GAAK,GAAM2B,YAQhD,OAJA3B,GAAItN,OACFG,EAAG,oBAAsByU,EAAMlI,UAAe,IAAI,sBAG7CY,EA0BTvQ,EAAQe,KAAO,MACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAGA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAmGpC,QAAS04E,GAAOl3E,EAAG7B,GAEjB,GAAIg5E,GAAQn3E,EAAEE,MAGd,IAAoB,GAAhBi3E,EAAM92E,OAAa,CAErB,GAAIlC,IAAMyJ,OAAOwvE,mBAA2B,QAANj5E,EAAa,CAEjD,GAAIk5E,GAAO,CASX,OAPAr3E,GAAEyC,QACA,SAAUC,GACR,GAAI6Z,GAAI7V,EAAIhE,EACR6K,GAAOgP,EAAG86D,KACZA,EAAO96D,KAEX,GACK86D,EAET,GAAIl5E,IAAMyJ,OAAO0vE,mBAA2B,SAANn5E,EAAc,CAElD,GAAIo5E,EASJ,OAPAv3E,GAAEyC,QACA,SAAUC,GACR,GAAI6Z,GAAI7V,EAAIhE,EACP60E,KAAQjqE,EAAQiP,EAAGg7D,KACtBA,EAAOh7D,KAEX,GACKg7D,GAAQ,EAEjB,GAAU,QAANp5E,EACF,MAAO+4E,GAAMl3E,EAAG,EAElB,IAAiB,gBAAN7B,KAAmB4G,MAAM5G,GAAI,CAEtC,IAAKqV,EAAYrV,EAAG,GAAI,CAEtB,GAAIN,GAAI,CAOR,OALAmC,GAAEyC,QACA,SAAUC,GACR7E,EAAIiP,EAAItF,EAAId,EAAIhE,GAAQvE,GAAIN,KAE9B,GACK2J,EAAI3J,EAAG,EAAIM,GAEpB,MAAOyJ,QAAOwvE,kBAGhB,KAAM,IAAI50E,OAAM,+BAGlB,GAAoB,GAAhB20E,EAAM92E,OAAa,CAErB,GAAU,IAANlC,EAAS,CAEX,GAAIhB,MAEAq6E,EAAO,CAWX,OATAx3E,GAAEyC,QACA,SAAUC,EAAOP,GACf,GAAI8O,GAAI9O,EAAM,GACVs1E,EAAK3qE,EAAI3P,EAAE8T,IAAM,EAAGvK,EAAIhE,GACxB6K,GAAOkqE,EAAID,KACbA,EAAOC,GACTt6E,EAAE8T,GAAKwmE,IAET,GACKD,EAET,GAAIr5E,IAAMyJ,OAAOwvE,mBAA2B,QAANj5E,EAAa,CAEjD,GAAIme,MAEAo7D,EAAO,CAWX,OATA13E,GAAEyC,QACA,SAAUC,EAAOP,GACf,GAAIpF,GAAIoF,EAAM,GACVw1E,EAAK7qE,EAAIwP,EAAEvf,IAAM,EAAG2J,EAAIhE,GACxB6K,GAAOoqE,EAAID,KACbA,EAAOC,GACTr7D,EAAEvf,GAAK46E,IAET,GACKD,EAET,GAAU,QAANv5E,EAEF,MAAO02B,GAAKsT,EAAM17B,EAASP,EAAUlM,GAAIA,IAE3C,IAAU,IAAN7B,EAEF,KAAM,IAAIqE,OAAM,6FAGlB,MAAM,IAAIA,OAAM,gCArMpB,GAAIkE,GAAcnI,EAAK3B,EAAoB,KACvCkQ,EAAcvO,EAAK3B,EAAoB,KACvC4K,EAAcjJ,EAAK3B,EAAoB,KACvCi4B,EAAct2B,EAAK3B,EAAoB,KACvC6P,EAAclO,EAAK3B,EAAoB,KACvC4W,EAAcjV,EAAK3B,EAAoB,KACvC2Q,EAAchP,EAAK3B,EAAoB,KACvC0Q,EAAc/O,EAAK3B,EAAoB,KACvCoC,EAAcT,EAAK3B,EAAoB,IACvCurC,EAAc5pC,EAAK3B,EAAoB,MACvCsP,EAAc3N,EAAK3B,EAAoB,KAyCvCqqC,EAAOzoC,EAAM,QACfsD,OAAUd,KAAK0F,IAEfua,QAAW,SAAUjhB,GACnB,MAAOA,GAAE0G,OAGXwa,UAAa,SAAUlhB,GAErB,MAAOA,GAAE0G,OAGXkxE,iBAAmB,SAAU53E,GAE3B,MAAOgB,MAAK0F,IAAI1G,IAGlBZ,MAAS,SAAUY,GACjB,MAAOk3E,GAAMl4E,EAAOgB,GAAI,IAG1BlB,OAAU,SAAUkB,GAClB,MAAOk3E,GAAMl3E,EAAG,IAGlB63E,6EAA8E,SAAU73E,GAEtF,MAAOinC,GAAKjnC,IAGd83E,qCAAsC,SAAU93E,EAAG7B,GACjD,MAAO+4E,GAAMl4E,EAAOgB,GAAI7B,IAG1B45E,sCAAuC,SAAU/3E,EAAG7B,GAClD,MAAO+4E,GAAMl3E,EAAG7B,KAwHpB,OALA8oC,GAAK1nC,OACHE,EAAG,gCACHC,EAAGkD,QAGEqkC,EAGT3qC,EAAQe,KAAO,OACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAGA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAuLpC,QAASw5E,GAAY5zE,EAAGhI,GACtB,GAAI6I,GAAY5G,EAAK6iB,UAAUjc,UAC3BmwB,EAAM/2B,EAAK6iB,UAAU3S,OAAOtJ,UAAWA,EAAY,IACnDmS,EAAO,GAAI/Y,GAAK6iB,UAAU,GAE1BmU,EAAM,GAAID,GAAI,GACd9F,EAAMlzB,EAAK04B,YAKf,IAJIxF,IACFlzB,EAAOA,EAAKgnB,OAGVhnB,EAAK8mB,SACP,KAAM,IAAI1gB,OAAM,wBAElB,IAAI4B,EAAE0wB,eAAiB14B,EAAKsK,MAAMmG,IAAI,GAAGkH,OAAO,GAC9C,KAAM,IAAIvR,OAAM,uCAIlB,IAAI4B,EAAE8e,SACJ,MAAOoM,GAAM,GAAI8F,GAAItwB,EAAAA,GAAY,CAEnC,KAAKV,EAAEM,WACL,MAAO4qB,GAAMlY,EAAOhT,CAGtB,IAAIpE,GAAIoE,EAAEsC,MAAMc,IAAI6tB,EAAIzY,IAAIxgB,GAI5B,OADA4D,GAAIoE,EAAEuwB,QAAU30B,EAAEojB,MAAQpjB,EACnB,GAAI3B,GAAK6iB,WAAWoO,EAAM+F,EAAIzY,IAAI5c,GAAKA,GAAGqF,YAAYJ,IAnN/D,GAAIjG,GAAST,EAAK3B,EAAoB,IAElC4f,EAAcje,EAAK3B,EAAoB,KACvCqiB,EAAc1gB,EAAK3B,EAAoB,KACvCw8B,EAAc76B,EAAK3B,EAAoB,KACvC0X,EAAc/V,EAAK3B,EAAoB,KACvC8U,EAAcnT,EAAK3B,EAAoB,IACvCkT,EAAcvR,EAAK3B,EAAoB,IA+BvCsqC,EAAU1oC,EAAM,WAElBsD,OAAU,SAAU9B,GAClB,MAAOi4E,GAASj4E,EAAG,IAErB0T,iBAAkBukE,EAElB/2D,UAAa,SAAUlhB,GACrB,MAAOg4E,GAAYh4E,EAAG,GAAI3B,GAAK6iB,UAAU,KAE3CD,QAAY,SAASjhB,GACnB,MAAOk4E,GAAgBl4E,EAAG,IAE5BqhC,kBAAoB62C,EACpBvkE,uBAAwBqkE,EAExB52D,iBAAkB,SAAUphB,GAC1B,MAAOknC,GAAQlnC,EAAG,IAGpB2U,iBAAkB,SAAU3U,EAAG+H,GAE7B,GAAI5K,EAGJ,QAAQ6C,EAAEjB,WACR,IAAK,SACH,OAAQgJ,EAAEhJ,WACR,IAAK,SAEH,GAAoB,IAAhBgJ,EAAE6nD,UAMJ,KAAM,IAAIptD,OAAM,wBAJhBrF,GAAIi8B,EAAYp5B,EAAG+H,EAAGm/B,EAMxB,MACF,SAEE/pC,EAAI8hB,EAAYlX,EAAG/H,EAAGknC,GAAS,GAGnC,KACF,SACE,OAAQn/B,EAAEhJ,WACR,IAAK,SAEH,GAAoB,IAAhBgJ,EAAE6nD,UAMJ,KAAM,IAAIptD,OAAM,wBAJhBrF,GAAIqf,EAAYxc,EAAG+H,EAAGm/B,GAAS,EAMjC,MACF,SAEE/pC,EAAIuU,EAAY1R,EAAG+H,EAAGm/B,IAK9B,MAAO/pC,IAGTqX,eAAgB,SAAUxU,EAAG+H,GAE3B,MAAOm/B,GAAQloC,EAAOgB,GAAIhB,EAAO+I,IAAIyG,WAGvC2G,gBAAiB,SAAUnV,EAAG+H,GAE5B,MAAOm/B,GAAQloC,EAAOgB,GAAI+H,IAG5BmN,gBAAiB,SAAUlV,EAAG+H,GAE5B,MAAOm/B,GAAQlnC,EAAGhB,EAAO+I,KAG3B45B,6BAA8B,SAAU3hC,EAAG+H,GAEzC,GAAI5K,EAEJ,QAAQ6C,EAAEjB,WACR,IAAK,SACH5B,EAAImX,EAAYtU,EAAG+H,EAAGm/B,GAAS,EAC/B,MACF,SACE/pC,EAAI2S,EAAY9P,EAAG+H,EAAGm/B,GAAS,GAGnC,MAAO/pC,IAGTo5E,6BAA8B,SAAUv2E,EAAG+H,GAEzC,GAAI5K,EAEJ,QAAQ4K,EAAEhJ,WACR,IAAK,SAEH,GAAoB,IAAhBgJ,EAAE6nD,UAMJ,KAAM,IAAIptD,OAAM,wBAJhBrF,GAAImX,EAAYvM,EAAG/H,EAAGknC,GAAS,EAMjC,MACF,SACE/pC,EAAI2S,EAAY/H,EAAG/H,EAAGknC,GAAS,GAGnC,MAAO/pC,IAGT0kC,4BAA6B,SAAU7hC,EAAG+H,GAExC,MAAOm/B,GAAQloC,EAAOgB,GAAI+H,GAAGyG,WAG/BgoE,4BAA6B,SAAUx2E,EAAG+H,GAExC,MAAOm/B,GAAQlnC,EAAGhB,EAAO+I,IAAIyG,YAMjC,OAFA04B,GAAQ3nC,OAASG,EAAG,kCAEbwnC,EAkDT,QAAS+wC,GAAS7zE,EAAGhI,GACnB,GAAIkzB,GAAMlzB,EAAO,CAKjB,IAJIkzB,IACFlzB,GAAQA,GAGG,IAATA,EACF,KAAM,IAAIoG,OAAM,wBAElB,IAAI4B,EAAI,GAAMpD,KAAK0F,IAAItK,GAAQ,GAAK,EAClC,KAAM,IAAIoG,OAAM,uCAIlB,IAAS,GAAL4B,EACF,MAAOkrB,GAAMxqB,EAAAA,EAAW,CAE1B,KAAKJ,SAASN,GACZ,MAAOkrB,GAAM,EAAIlrB,CAGnB,IAAIpE,GAAIgB,KAAKwG,IAAIxG,KAAK0F,IAAItC,GAAI,EAAEhI,EAIhC,OADA4D,GAAIoE,EAAI,GAAKpE,EAAIA,EACVsvB,EAAM,EAAItvB,EAAIA,EAgCvB,QAASk4E,GAAgB9zE,EAAGhI,GAC1B,GAAIA,EAAO,EAAG,KAAM,IAAIoG,OAAM,iCAC9B,IAAa,IAATpG,EAAY,KAAM,IAAIoG,OAAM,wBAChC,IAAIpG,EAAO,IAAM,EAAG,KAAM,IAAIoG,OAAM,0BAKpC,KAAI,GAJAwd,GAAM5b,EAAE4b,MACRtZ,EAAMtC,EAAEsC,MACRyxE,KACA77D,EAAItb,KAAKwG,IAAId,EAAK,EAAEtK,GAChBggB,EAAI,EAAGA,EAAIhgB,EAAMggB,IACvB+7D,EAAM52E,MAAM+a,EAAGA,EAAGpR,KAAM8U,EAAM,EAAIhf,KAAK6+B,GAAKzjB,GAAGhgB,GAEjD,OAAO+7E,GAGT77E,EAAQe,KAAO,UACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GA2BpC,GAAI2oC,GAAS3oC,EAAM,UACjBsD,OAAU,SAAU9B,GAClB,MAAOA,GAAIA,GAGbihB,QAAW,SAAUjhB,GACnB,MAAOA,GAAE6e,IAAI7e,IAGfkhB,UAAa,SAAUlhB,GACrB,MAAOA,GAAE8e,MAAM9e,IAGjBmhB,SAAY,SAAUnhB,GACpB,MAAOA,GAAE6e,IAAI7e,IAGfohB,iBAAkB,SAAUphB,GAE1B,MAAOL,GAAQK,EAAGmnC,GAAQ,IAG5B9lB,KAAQ,SAASrhB,GACf,MAAOA,GAAEwH,IAAI,KAMjB,OAFA2/B,GAAO5nC,OAASE,EAAG,+BAEZ0nC,EA1DT,GAAIxnC,GAAU/C,EAAoB,EA6DlCN,GAAQe,KAAO,SACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAAI2V,GAAQvX,EAAoB,GA0B5ByP,EAAY7N,EAAM,aACpBsD,OAAU,SAAU9B,GAClB,MAAOA,IAGTihB,QAAW,SAAUjhB,GACnB,MAAOA,IAGTkhB,UAAa,SAAUlhB,GACrB,MAAOA,IAGTmhB,SAAY,SAAUnhB,GACpB,MAAOA,IAGTqhB,KAAQ,SAAUrhB,GAChB,MAAOA,GAAEuO,SAGX6S,iBAAkB,SAAUphB,GAE1B,MAAOL,GAAQK,EAAGqM,GAAW,IAG/B+rE,0BAA2B,SAAUp4E,GAEnC,MAAyB,aAAjB1B,EAAOwD,OAAyB,GAAIzD,GAAK6iB,WAAWlhB,IAAKA,IAQrE,OAJAqM,GAAU9M,OACRE,EAAG0U,EAAMlI,UAAqB,UAAI,6BAG7BI,EAjET,GAAI1M,GAAU/C,EAAoB,EAoElCN,GAAQe,KAAO,YACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GA2CpC,QAAS65E,GAAOj0E,EAAGC,GAEjB,GAAI81B,GACAhB,EACA7c,EACAtc,EAAI,EAAGs4E,EAAQ,EACfvwE,EAAI,EAAGwwE,EAAQ,CAEnB,KAAKl2E,EAAU+B,KAAO/B,EAAUgC,GAC9B,KAAM,IAAI7B,OAAM,sDAGlB,MAAO6B,GACL80B,EAAIn4B,KAAKw8B,MAAMp5B,EAAIC,GACnBiY,EAAIlY,EAAI+0B,EAAE90B,EAEV81B,EAAIn6B,EACJA,EAAIs4E,EAAQn/C,EAAIn5B,EAChBs4E,EAAQn+C,EAERA,EAAIpyB,EACJA,EAAIwwE,EAAQp/C,EAAIpxB,EAChBwwE,EAAQp+C,EAER/1B,EAAIC,EACJA,EAAIiY,CAGN,IAAIQ,EAOJ,OALEA,GADE1Y,EAAI,IACEA,GAAIk0E,GAAQC,IAGbn0E,EAAGA,EAAIk0E,EAAQ,EAAGC,GAED,UAAlBj6E,EAAOU,OAAsB8d,EAAM9d,EAAO8d,GAUpD,QAAS07D,GAAep0E,EAAGC,GAEzB,GAAI81B,GACAhB,EACA7c,EACAlF,EAAO,GAAI/Y,GAAK6iB,UAAU,GAC1BmU,EAAM,GAAIh3B,GAAK6iB,UAAU,GACzBlhB,EAAIoX,EACJkhE,EAAQjjD,EACRttB,EAAIstB,EACJkjD,EAAQnhE,CAEZ,KAAKhT,EAAEqrB,UAAYprB,EAAEorB,QACnB,KAAM,IAAIjtB,OAAM,sDAGlB,OAAQ6B,EAAE6e,UACRiW,EAAI/0B,EAAEwY,IAAIvY,GAAGm5B,QACblhB,EAAIlY,EAAEyI,IAAIxI,GAEV81B,EAAIn6B,EACJA,EAAIs4E,EAAMj7D,MAAM8b,EAAEra,MAAM9e,IACxBs4E,EAAQn+C,EAERA,EAAIpyB,EACJA,EAAIwwE,EAAMl7D,MAAM8b,EAAEra,MAAM/W,IACxBwwE,EAAQp+C,EAER/1B,EAAIC,EACJA,EAAIiY,CAGN,IAAIQ,EAOJ,OALEA,GADE1Y,EAAEkqB,GAAGlX,IACAhT,EAAEgf,MAAOk1D,EAAMl1D,MAAOm1D,EAAMn1D,QAG5Bhf,EAAIA,EAAE8e,SAAmB,EAARo1D,EAAWC,GAEX,UAAlBj6E,EAAOU,OAAsB8d,EAAM9d,EAAO8d,GA9HpD,GAAI9d,GAAST,EAAK3B,EAAoB,IAyBlCwqC,EAAO5oC,EAAM,QACfkV,iBAAkB2kE,EAClB1kE,uBAAwB6kE,GAM1B,OAFApxC,GAAK7nC,MAAQqD,OAENwkC,EApCT,GAAI/kC,GAAYzF,EAAoB,GAAGyF,SAqIvC/F,GAAQe,KAAO,OACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjCL,EAAOD,SACLM,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,OAMhB,SAAUL,EAAQD,EAASM,GAEjC,YAMA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAAI2V,GAAQvX,EAAoB,GAE5BoC,EAAST,EAAK3B,EAAoB,IAElCqiB,EAAc1gB,EAAK3B,EAAoB,KACvCw8B,EAAc76B,EAAK3B,EAAoB,KACvC0X,EAAc/V,EAAK3B,EAAoB,KACvC8U,EAAcnT,EAAK3B,EAAoB,IACvCkT,EAAcvR,EAAK3B,EAAoB,IAwBvC8Q,EAASlP,EAAM,UAEjBkV,iBAAkB,SAAU1T,EAAG+H,GAC7B,IAAK1F,EAAUrC,KAAOqC,EAAU0F,GAC9B,KAAM,IAAIvF,OAAM,uCAGlB,OAAOxC,GAAI+H,GAGb4L,uBAAwB8kE,EAExB9jE,iBAAkB,SAAU3U,EAAG+H,GAE7B,GAAI5K,EAGJ,QAAQ6C,EAAEjB,WACR,IAAK,SACH,OAAQgJ,EAAEhJ,WACR,IAAK,SAEH5B,EAAIi8B,EAAYp5B,EAAG+H,EAAG2F,GAAQ,EAC9B,MACF,SAEEvQ,EAAI8hB,EAAYlX,EAAG/H,EAAG0N,GAAQ,GAGlC,KACF,SACE,OAAQ3F,EAAEhJ,WACR,IAAK,SAEH5B,EAAI8hB,EAAYjf,EAAG+H,EAAG2F,GAAQ,EAC9B,MACF,SAEEvQ,EAAIuU,EAAY1R,EAAG+H,EAAG2F,IAK9B,MAAOvQ,IAGTqX,eAAgB,SAAUxU,EAAG+H,GAE3B,MAAO2F,GAAO1O,EAAOgB,GAAIhB,EAAO+I,IAAIyG,WAGtC2G,gBAAiB,SAAUnV,EAAG+H,GAE5B,MAAO2F,GAAO1O,EAAOgB,GAAI+H,IAG3BmN,gBAAiB,SAAUlV,EAAG+H,GAE5B,MAAO2F,GAAO1N,EAAGhB,EAAO+I,KAG1BqN,cAAe,SAAUpV,EAAG+H,GAE1B,GAAI5K,EAEJ,QAAQ6C,EAAEjB,WACR,IAAK,SACH5B,EAAImX,EAAYtU,EAAG+H,EAAG2F,GAAQ,EAC9B,MACF,SACEvQ,EAAI2S,EAAY9P,EAAG+H,EAAG2F,GAAQ,GAGlC,MAAOvQ,IAGTkY,cAAe,SAAUrV,EAAG+H,GAE1B,GAAI5K,EAEJ,QAAQ4K,EAAEhJ,WACR,IAAK,SACH5B,EAAImX,EAAYvM,EAAG/H,EAAG0N,GAAQ,EAC9B,MACF,SACEvQ,EAAI2S,EAAY/H,EAAG/H,EAAG0N,GAAQ,GAGlC,MAAOvQ,IAGTmY,aAAc,SAAUtV,EAAG+H,GAEzB,MAAO+H,GAAY9Q,EAAOgB,GAAI+H,EAAG2F,GAAQ,GAAOc,WAGlD+G,aAAc,SAAUvV,EAAG+H,GAEzB,MAAO+H,GAAY9Q,EAAO+I,GAAI/H,EAAG0N,GAAQ,GAAMc,YAQnD,OAJAd,GAAOnO,OACLG,EAAG,oBAAsByU,EAAMlI,UAAkB,OAAI,sBAGhDyB,EA9IT,GAAIrL,GAAYzF,EAAoB,GAAGyF,UACnCo2E,EAAY77E,EAAoB,IAgJpCN,GAAQe,KAAO,SACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,GAAI87E,GAAU97E,EAAoB,GAuBlCL,GAAOD,QAAU,SAAgB0D,EAAG+H,GAClC,GAAK/H,EAAE0E,aAAe1E,EAAEqC,aAAiB0F,EAAErD,aAAeqD,EAAE1F,YAC1D,KAAM,IAAIG,OAAM,uCAGlB,IAAI0e,GAAYlhB,EAAEgP,WAClB,IAAIhP,EAAE+E,SAAWgD,EAAEhD,QACjB,MAAO,IAAImc,GAAU0N,IAGvB,IAAI5uB,EAAEkjB,UAAYnb,EAAE6L,IAAG,IAAO5T,EAAE4T,GAAG7L,GACjC,MAAO/H,EAET,IAAI+H,EAAEmb,UAAYljB,EAAE4T,IAAG,GACrB,MAAO7L,EAGT,KAAK/H,EAAE0E,aAAeqD,EAAErD,WAAY,CAClC,IAAK1E,EAAE0E,aAAeqD,EAAErD,WACtB,MAAI1E,GAAE80B,cAAgB/sB,EAAE+sB,aACf90B,EAEF,GAAIkhB,GAAU,EAEvB,KAAKlhB,EAAE0E,WACL,MAAIqD,GAAE+sB,aACG90B,EAELA,EAAE80B,aACG,GAAI5T,GAAU,GAEhBnZ,CAET,KAAKA,EAAErD,WACL,MAAI1E,GAAE80B,aACG/sB,EAELA,EAAE+sB,aACG,GAAI5T,GAAU,GAEhBlhB,EAGX,MAAO04E,GAAQ14E,EAAG+H,EAAG,SAAU3D,EAAGC,GAAK,MAAOD,GAAIC,MAM9C,SAAU9H,EAAQD,EAASM,GAEjC,YAOA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAAI2V,GAAQvX,EAAoB,GAwB5B2P,EAAS/N,EAAM,UACjBsD,OAAU,SAAU9B,GAClB,IAAKqC,EAAUrC,GACb,KAAM,IAAIwC,OAAM,sCAGlB,QAAQxC,GAGVkhB,UAAay3D,EAEbv3D,iBAAkB,SAAUphB,GAC1B,MAAOL,GAAQK,EAAGuM,KAQtB,OAJAA,GAAOhN,OACLE,EAAG0U,EAAMlI,UAAkB,OAAI,6BAG1BM,EAjDT,GAAI5M,GAAU/C,EAAoB,GAC9B+7E,EAAY/7E,EAAoB,IAChCyF,EAAYzF,EAAoB,GAAGyF,SAkDvC/F,GAAQe,KAAO,SACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAMA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAAI2V,GAAQvX,EAAoB,GAE5BoC,EAAST,EAAK3B,EAAoB,IAElC4f,EAAcje,EAAK3B,EAAoB,KACvC6f,EAAcle,EAAK3B,EAAoB,KACvC8f,EAAcne,EAAK3B,EAAoB,KACvC8U,EAAcnT,EAAK3B,EAAoB,IACvCkT,EAAcvR,EAAK3B,EAAoB,IAyBvCgR,EAAQpP,EAAM,SAEhBkV,iBAAkB,SAAU1T,EAAG+H,GAC7B,IAAK1F,EAAUrC,KAAOqC,EAAU0F,GAC9B,KAAM,IAAIvF,OAAM,sCAGlB,OAAOxC,GAAI+H,GAGb4L,uBAAwBilE,EAExBjkE,iBAAkB,SAAU3U,EAAG+H,GAE7B,GAAI5K,EAGJ,QAAQ6C,EAAEjB,WACR,IAAK,SACH,OAAQgJ,EAAEhJ,WACR,IAAK,SAEH5B,EAAIsf,EAAYzc,EAAG+H,EAAG6F,EACtB,MACF,SAEEzQ,EAAIqf,EAAYzU,EAAG/H,EAAG4N,GAAO,GAGjC,KACF,SACE,OAAQ7F,EAAEhJ,WACR,IAAK,SAEH5B,EAAIqf,EAAYxc,EAAG+H,EAAG6F,GAAO,EAC7B,MACF,SACEzQ,EAAIuU,EAAY1R,EAAG+H,EAAG6F,IAK9B,MAAOzQ,IAGTqX,eAAgB,SAAUxU,EAAG+H,GAE3B,MAAO6F,GAAM5O,EAAOgB,GAAIhB,EAAO+I,IAAIyG,WAGrC2G,gBAAiB,SAAUnV,EAAG+H,GAE5B,MAAO6F,GAAM5O,EAAOgB,GAAI+H,IAG1BmN,gBAAiB,SAAUlV,EAAG+H,GAE5B,MAAO6F,GAAM5N,EAAGhB,EAAO+I,KAGzBqN,cAAe,SAAUpV,EAAG+H,GAE1B,GAAI5K,EAEJ,QAAQ6C,EAAEjB,WACR,IAAK,SACH5B,EAAIuf,EAAY1c,EAAG+H,EAAG6F,GAAO,EAC7B,MACF,SACEzQ,EAAI2S,EAAY9P,EAAG+H,EAAG6F,GAAO,GAGjC,MAAOzQ,IAGTkY,cAAe,SAAUrV,EAAG+H,GAE1B,GAAI5K,EAEJ,QAAQ4K,EAAEhJ,WACR,IAAK,SACH5B,EAAIuf,EAAY3U,EAAG/H,EAAG4N,GAAO,EAC7B,MACF,SACEzQ,EAAI2S,EAAY/H,EAAG/H,EAAG4N,GAAO,GAGjC,MAAOzQ,IAGTmY,aAAc,SAAUtV,EAAG+H,GAEzB,MAAO+H,GAAY9Q,EAAOgB,GAAI+H,EAAG6F,GAAO,GAAOY,WAGjD+G,aAAc,SAAUvV,EAAG+H,GAEzB,MAAO+H,GAAY9Q,EAAO+I,GAAI/H,EAAG4N,GAAO,GAAMY,YAQlD,OAJAZ,GAAMrO,OACJG,EAAG,oBAAsByU,EAAMlI,UAAiB,MAAI,sBAG/C2B,EA9IT,GAAIvL,GAAYzF,EAAoB,GAAGyF,UACnCu2E,EAAWh8E,EAAoB,IAgJnCN,GAAQe,KAAO,QACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,GAAI87E,GAAU97E,EAAoB,GAsBlCL,GAAOD,QAAU,SAAgB0D,EAAG+H,GAClC,GAAK/H,EAAE0E,aAAe1E,EAAEqC,aAAiB0F,EAAErD,aAAeqD,EAAE1F,YAC1D,KAAM,IAAIG,OAAM,sCAGlB,IAAI0e,GAAYlhB,EAAEgP,WAClB,IAAIhP,EAAE+E,SAAWgD,EAAEhD,QACjB,MAAO,IAAImc,GAAU0N,IAGvB,IAAIiqD,GAAS,GAAI33D,IAAU,EAC3B,OAAIlhB,GAAEkjB,UAAYnb,EAAE6L,GAAGilE,IAAW74E,EAAE4T,GAAG7L,GAC9BA,EAELA,EAAEmb,UAAYljB,EAAE4T,GAAGilE,GACd74E,EAGJA,EAAE0E,YAAeqD,EAAErD,WAWjBg0E,EAAQ14E,EAAG+H,EAAG,SAAU3D,EAAGC,GAAK,MAAOD,GAAIC,KAV1CrE,EAAE0E,aAAe1E,EAAE80B,cAAgB/sB,EAAE+sB,cACtC90B,EAAE80B,eAAiB/sB,EAAE+sB,eAAiB/sB,EAAErD,WACpCm0E,EAEL74E,EAAE80B,cAAgB/sB,EAAE+sB,aACf90B,EAAE0E,WAAa1E,EAAI+H,EAErB/H,EAAE0E,WAAaqD,EAAI/H,IASxB,SAAUzD,EAAQD,EAASM,GAEjC,YAMA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAAI2V,GAAQvX,EAAoB,GAE5BoC,EAAST,EAAK3B,EAAoB,IAElCgf,EAAcrd,EAAK3B,EAAoB,KACvCwiB,EAAc7gB,EAAK3B,EAAoB,KACvCyf,EAAc9d,EAAK3B,EAAoB,KACvC8U,EAAcnT,EAAK3B,EAAoB,IACvCkT,EAAcvR,EAAK3B,EAAoB,IAwBvC+Q,EAASnP,EAAM,UAEjBkV,iBAAkB,SAAU1T,EAAG+H,GAC7B,IAAK1F,EAAUrC,KAAOqC,EAAU0F,GAC9B,KAAM,IAAIvF,OAAM,uCAGlB,OAAOxC,GAAI+H,GAGb4L,uBAAwBmlE,EAExBnkE,iBAAkB,SAAU3U,EAAG+H,GAE7B,GAAI5K,EAGJ,QAAQ6C,EAAEjB,WACR,IAAK,SACH,OAAQgJ,EAAEhJ,WACR,IAAK,SAEH5B,EAAIiiB,EAAYpf,EAAG+H,EAAG4F,EACtB,MACF,SAEExQ,EAAIye,EAAY7T,EAAG/H,EAAG2N,GAAQ,GAGlC,KACF,SACE,OAAQ5F,EAAEhJ,WACR,IAAK,SAEH5B,EAAIye,EAAY5b,EAAG+H,EAAG4F,GAAQ,EAC9B,MACF,SAEExQ,EAAIuU,EAAY1R,EAAG+H,EAAG4F,IAK9B,MAAOxQ,IAGTqX,eAAgB,SAAUxU,EAAG+H,GAE3B,MAAO4F,GAAO3O,EAAOgB,GAAIhB,EAAO+I,IAAIyG,WAGtC2G,gBAAiB,SAAUnV,EAAG+H,GAE5B,MAAO4F,GAAO3O,EAAOgB,GAAI+H,IAG3BmN,gBAAiB,SAAUlV,EAAG+H,GAE5B,MAAO4F,GAAO3N,EAAGhB,EAAO+I,KAG1BqN,cAAe,SAAUpV,EAAG+H,GAE1B,GAAI5K,EAEJ,QAAQ6C,EAAEjB,WACR,IAAK,SACH5B,EAAIkf,EAAYrc,EAAG+H,EAAG4F,GAAQ,EAC9B,MACF,SACExQ,EAAI2S,EAAY9P,EAAG+H,EAAG4F,GAAQ,GAGlC,MAAOxQ,IAGTkY,cAAe,SAAUrV,EAAG+H,GAE1B,GAAI5K,EAEJ,QAAQ4K,EAAEhJ,WACR,IAAK,SACH5B,EAAIkf,EAAYtU,EAAG/H,EAAG2N,GAAQ,EAC9B,MACF,SACExQ,EAAI2S,EAAY/H,EAAG/H,EAAG2N,GAAQ,GAGlC,MAAOxQ,IAGTmY,aAAc,SAAUtV,EAAG+H,GAEzB,MAAO+H,GAAY9Q,EAAOgB,GAAI+H,EAAG4F,GAAQ,GAAOa,WAGlD+G,aAAc,SAAUvV,EAAG+H,GAEzB,MAAO+H,GAAY9Q,EAAO+I,GAAI/H,EAAG2N,GAAQ,GAAMa,YAQnD,OAJAb,GAAOpO,OACLG,EAAG,oBAAsByU,EAAMlI,UAAkB,OAAI,sBAGhD0B,EA9IT,GAAItL,GAAYzF,EAAoB,GAAGyF,UACnCy2E,EAAYl8E,EAAoB,IAgJpCN,GAAQe,KAAO,SACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,GAAI87E,GAAU97E,EAAoB,IAC9B2P,EAAS3P,EAAoB,GAqBjCL,GAAOD,QAAU,SAAgB0D,EAAG+H,GAClC,GAAK/H,EAAE0E,aAAe1E,EAAEqC,aAAiB0F,EAAErD,aAAeqD,EAAE1F,YAC1D,KAAM,IAAIG,OAAM,uCAGlB,IAAI0e,GAAYlhB,EAAEgP,WAClB,IAAIhP,EAAE+E,SAAWgD,EAAEhD,QACjB,MAAO,IAAImc,GAAU0N,IAEvB,IAAI5uB,EAAEkjB,SACJ,MAAOnb,EAET,IAAIA,EAAEmb,SACJ,MAAOljB,EAGT,IAAIA,EAAE4T,GAAG7L,GACP,MAAO,IAAImZ,GAAU,EAGvB,IAAI23D,GAAS,GAAI33D,IAAU,EAC3B,OAAIlhB,GAAE4T,GAAGilE,GACAtsE,EAAOxE,GAEZA,EAAE6L,GAAGilE,GACAtsE,EAAOvM,GAGXA,EAAE0E,YAAeqD,EAAErD,WAQjBg0E,EAAQ14E,EAAG+H,EAAG,SAAU3D,EAAGC,GAAK,MAAOD,GAAIC,IAP3CrE,EAAE0E,YAAeqD,EAAErD,WAGjB,GAAIwc,GAAUlhB,EAAE80B,cAAgB/sB,EAAE+sB,aAClChwB,EAAAA,IACAA,EAAAA,IAJE+zE,IAYP,SAAUt8E,EAAQD,EAASM,GAEjC,YAMA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAAI2V,GAAQvX,EAAoB,GAE5BoC,EAAST,EAAK3B,EAAoB,IAClC4W,EAAcjV,EAAK3B,EAAoB,KACvC6H,EAAQlG,EAAK3B,EAAoB,KAEjC4f,EAAcje,EAAK3B,EAAoB,KACvCqiB,EAAc1gB,EAAK3B,EAAoB,KACvCqgC,EAAc1+B,EAAK3B,EAAoB,KACvC8f,EAAcne,EAAK3B,EAAoB,KACvC0X,EAAc/V,EAAK3B,EAAoB,KACvC8U,EAAcnT,EAAK3B,EAAoB,IACvCkT,EAAcvR,EAAK3B,EAAoB,IAyBvCqQ,EAAYzO,EAAM,aAEpBkV,iBAAkB,SAAU1T,EAAG+H,GAC7B,IAAK1F,EAAUrC,KAAOqC,EAAU0F,GAC9B,KAAM,IAAIvF,OAAM,0CAGlB,OAAOxC,IAAK+H,GAGd4L,uBAAwBolE,EAExBpkE,iBAAkB,SAAU3U,EAAG+H,GAE7B,GAAI5K,EAGJ,QAAQ6C,EAAEjB,WACR,IAAK,SACH,OAAQgJ,EAAEhJ,WACR,IAAK,SAEH5B,EAAI8/B,EAAYj9B,EAAG+H,EAAGkF,GAAW,EACjC,MACF,SAEE9P,EAAI8hB,EAAYlX,EAAG/H,EAAGiN,GAAW,GAGrC,KACF,SACE,OAAQlF,EAAEhJ,WACR,IAAK,SAEH5B,EAAIqf,EAAYxc,EAAG+H,EAAGkF,GAAW,EACjC,MACF,SAEE9P,EAAIuU,EAAY1R,EAAG+H,EAAGkF,IAK9B,MAAO9P,IAGTqX,eAAgB,SAAUxU,EAAG+H,GAE3B,MAAOkF,GAAUjO,EAAOgB,GAAIhB,EAAO+I,IAAIyG,WAGzC2G,gBAAiB,SAAUnV,EAAG+H,GAE5B,MAAOkF,GAAUjO,EAAOgB,GAAI+H,IAG9BmN,gBAAiB,SAAUlV,EAAG+H,GAE5B,MAAOkF,GAAUjN,EAAGhB,EAAO+I,KAG7B45B,6BAA8B,SAAU3hC,EAAG+H,GAEzC,IAAKyL,EAAYzL,EAAG,GAAI,CAEtB,GAAI5K,EAEJ,QAAQ6C,EAAEjB,WACR,IAAK,SACH5B,EAAImX,EAAYtU,EAAG+H,EAAGkF,GAAW,EACjC,MACF,SACE9P,EAAI2S,EAAY9P,EAAG+H,EAAGkF,GAAW,GAGrC,MAAO9P,GAET,MAAO6C,GAAEuO,SAGXgoE,6BAA8B,SAAUv2E,EAAG+H,GAEzC,IAAKyL,EAAYxT,EAAG,GAAI,CAEtB,GAAI7C,EAEJ,QAAQ4K,EAAEhJ,WACR,IAAK,SACH5B,EAAIuf,EAAY3U,EAAG/H,EAAGiN,GAAW,EACjC,MACF,SACE9P,EAAI2S,EAAY/H,EAAG/H,EAAGiN,GAAW,GAGrC,MAAO9P,GAET,MAAOsH,GAAMsD,EAAE7H,OAAQ6H,EAAEhJ,YAG3B8iC,4BAA6B,SAAU7hC,EAAG+H,GAExC,MAAOkF,GAAUjO,EAAOgB,GAAI+H,GAAGyG,WAGjCgoE,4BAA6B,SAAUx2E,EAAG+H,GAExC,MAAOkF,GAAUjN,EAAGhB,EAAO+I,IAAIyG,YAQnC,OAJAvB,GAAU1N,OACRG,EAAG,oBAAsByU,EAAMlI,UAAqB,UAAI,sBAGnDgB,EA3JT,GAAI5K,GAAYzF,EAAoB,GAAGyF,UACnC02E,EAAen8E,EAAoB,IA6JvCN,GAAQe,KAAO,YACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,GAqBxBC,EAAOD,QAAU,SAAoB0D,EAAG+H,GACtC,GAAK/H,EAAE0E,aAAe1E,EAAEqC,aAAiB0F,EAAErD,aAAeqD,EAAE1F,YAC1D,KAAM,IAAIG,OAAM,0CAGlB,IAAI0e,GAAYlhB,EAAEgP,WAClB,OAAIhP,GAAE+E,SAAWgD,EAAEhD,SAAYgD,EAAE+sB,eAAiB/sB,EAAEmb,SAC3C,GAAIhC,GAAU0N,KAEnB5uB,EAAEkjB,UAAYnb,EAAEmb,SACXljB,EAEJA,EAAE0E,YAAeqD,EAAErD,WAKpBqD,EAAEumB,GAAG,IACAtuB,EAAE8e,MAAM9d,KAAKwG,IAAI,EAAGO,EAAEwb,YAAc,IAEtCvjB,EAAE8e,MAAM,GAAIoC,GAAU,GAAG1Z,IAAIO,IAP3B,GAAImZ,GAAU0N,OAanB,SAAUryB,EAAQD,EAASM,GAEjC,YAMA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAAI2V,GAAQvX,EAAoB,GAE5BoC,EAAST,EAAK3B,EAAoB,IAClC4W,EAAcjV,EAAK3B,EAAoB,KACvC6H,EAAQlG,EAAK3B,EAAoB,KAEjC4f,EAAcje,EAAK3B,EAAoB,KACvCqiB,EAAc1gB,EAAK3B,EAAoB,KACvCqgC,EAAc1+B,EAAK3B,EAAoB,KACvC8f,EAAcne,EAAK3B,EAAoB,KACvC0X,EAAc/V,EAAK3B,EAAoB,KACvC8U,EAAcnT,EAAK3B,EAAoB,IACvCkT,EAAcvR,EAAK3B,EAAoB,IAyBvCsQ,EAAkB1O,EAAM,mBAE1BkV,iBAAkB,SAAU1T,EAAG+H,GAC7B,IAAK1F,EAAUrC,KAAOqC,EAAU0F,GAC9B,KAAM,IAAIvF,OAAM,gDAGlB,OAAOxC,IAAK+H,GAGd4L,uBAAwBqlE,EAExBrkE,iBAAkB,SAAU3U,EAAG+H,GAE7B,GAAI5K,EAGJ,QAAQ6C,EAAEjB,WACR,IAAK,SACH,OAAQgJ,EAAEhJ,WACR,IAAK,SAEH5B,EAAI8/B,EAAYj9B,EAAG+H,EAAGmF,GAAiB,EACvC,MACF,SAEE/P,EAAI8hB,EAAYlX,EAAG/H,EAAGkN,GAAiB,GAG3C,KACF,SACE,OAAQnF,EAAEhJ,WACR,IAAK,SAEH5B,EAAIqf,EAAYxc,EAAG+H,EAAGmF,GAAiB,EACvC,MACF,SAEE/P,EAAIuU,EAAY1R,EAAG+H,EAAGmF,IAK9B,MAAO/P,IAGTqX,eAAgB,SAAUxU,EAAG+H,GAE3B,MAAOmF,GAAgBlO,EAAOgB,GAAIhB,EAAO+I,IAAIyG,WAG/C2G,gBAAiB,SAAUnV,EAAG+H,GAE5B,MAAOmF,GAAgBlO,EAAOgB,GAAI+H,IAGpCmN,gBAAiB,SAAUlV,EAAG+H,GAE5B,MAAOmF,GAAgBlN,EAAGhB,EAAO+I,KAGnC45B,6BAA8B,SAAU3hC,EAAG+H,GAEzC,IAAKyL,EAAYzL,EAAG,GAAI,CAEtB,GAAI5K,EAEJ,QAAQ6C,EAAEjB,WACR,IAAK,SACH5B,EAAImX,EAAYtU,EAAG+H,EAAGmF,GAAiB,EACvC,MACF,SACE/P,EAAI2S,EAAY9P,EAAG+H,EAAGmF,GAAiB,GAG3C,MAAO/P,GAET,MAAO6C,GAAEuO,SAGXgoE,6BAA8B,SAAUv2E,EAAG+H,GAEzC,IAAKyL,EAAYxT,EAAG,GAAI,CAEtB,GAAI7C,EAEJ,QAAQ4K,EAAEhJ,WACR,IAAK,SACH5B,EAAIuf,EAAY3U,EAAG/H,EAAGkN,GAAiB,EACvC,MACF,SACE/P,EAAI2S,EAAY/H,EAAG/H,EAAGkN,GAAiB,GAG3C,MAAO/P,GAET,MAAOsH,GAAMsD,EAAE7H,OAAQ6H,EAAEhJ,YAG3B8iC,4BAA6B,SAAU7hC,EAAG+H,GAExC,MAAOmF,GAAgBlO,EAAOgB,GAAI+H,GAAGyG,WAGvCgoE,4BAA6B,SAAUx2E,EAAG+H,GAExC,MAAOmF,GAAgBlN,EAAGhB,EAAO+I,IAAIyG,YAQzC,OAJAtB,GAAgB3N,OACdG,EAAG,oBAAsByU,EAAMlI,UAA2B,gBAAI,sBAGzDiB,EA3JT,GAAI7K,GAAYzF,EAAoB,GAAGyF,UACnC22E,EAAqBp8E,EAAoB,IA6J7CN,GAAQe,KAAO,kBACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,GAqBxBC,EAAOD,QAAU,SAA0B0D,EAAG+H,GAC5C,GAAK/H,EAAE0E,aAAe1E,EAAEqC,aAAiB0F,EAAErD,aAAeqD,EAAE1F,YAC1D,KAAM,IAAIG,OAAM,gDAGlB,IAAI0e,GAAYlhB,EAAEgP,WAClB,OAAIhP,GAAE+E,SAAWgD,EAAEhD,SAAYgD,EAAE+sB,eAAiB/sB,EAAEmb,SAC3C,GAAIhC,GAAU0N,KAEnB5uB,EAAEkjB,UAAYnb,EAAEmb,SACXljB,EAEJ+H,EAAErD,WAWHqD,EAAEumB,GAAG,IACAtuB,EAAE4c,IAAI5b,KAAKwG,IAAI,EAAGO,EAAEwb,YAAc,IAAIia,QAExCx9B,EAAE4c,IAAI,GAAIsE,GAAU,GAAG1Z,IAAIO,IAAIy1B,QAZ3B,GAAItc,GADTlhB,EAAE80B,cACiB,EAElB90B,EAAE0E,WAGc,EAFEkqB,OAerB,SAAUryB,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAAI2V,GAAQvX,EAAoB,GAE5BoC,EAAST,EAAK3B,EAAoB,IAClC4W,EAAcjV,EAAK3B,EAAoB,KACvC6H,EAAQlG,EAAK3B,EAAoB,KAEjC4f,EAAcje,EAAK3B,EAAoB,KACvCqiB,EAAc1gB,EAAK3B,EAAoB,KACvCqgC,EAAc1+B,EAAK3B,EAAoB,KACvC8f,EAAcne,EAAK3B,EAAoB,KACvC0X,EAAc/V,EAAK3B,EAAoB,KACvC8U,EAAcnT,EAAK3B,EAAoB,IACvCkT,EAAcvR,EAAK3B,EAAoB,IA0BvCuQ,EAAgB3O,EAAM,iBAExBkV,iBAAkB,SAAU1T,EAAG+H,GAC7B,IAAK1F,EAAUrC,KAAOqC,EAAU0F,GAC9B,KAAM,IAAIvF,OAAM,8CAGlB,OAAOxC,KAAM+H,GAKf4M,iBAAkB,SAAU3U,EAAG+H,GAE7B,GAAI5K,EAGJ,QAAQ6C,EAAEjB,WACR,IAAK,SACH,OAAQgJ,EAAEhJ,WACR,IAAK,SAEH5B,EAAI8/B,EAAYj9B,EAAG+H,EAAGoF,GAAe,EACrC,MACF,SAEEhQ,EAAI8hB,EAAYlX,EAAG/H,EAAGmN,GAAe,GAGzC,KACF,SACE,OAAQpF,EAAEhJ,WACR,IAAK,SAEH5B,EAAIqf,EAAYxc,EAAG+H,EAAGoF,GAAe,EACrC,MACF,SAEEhQ,EAAIuU,EAAY1R,EAAG+H,EAAGoF,IAK9B,MAAOhQ,IAGTqX,eAAgB,SAAUxU,EAAG+H,GAE3B,MAAOoF,GAAcnO,EAAOgB,GAAIhB,EAAO+I,IAAIyG,WAG7C2G,gBAAiB,SAAUnV,EAAG+H,GAE5B,MAAOoF,GAAcnO,EAAOgB,GAAI+H,IAGlCmN,gBAAiB,SAAUlV,EAAG+H,GAE5B,MAAOoF,GAAcnN,EAAGhB,EAAO+I,KAGjC45B,6BAA8B,SAAU3hC,EAAG+H,GAEzC,IAAKyL,EAAYzL,EAAG,GAAI,CAEtB,GAAI5K,EAEJ,QAAQ6C,EAAEjB,WACR,IAAK,SACH5B,EAAImX,EAAYtU,EAAG+H,EAAGoF,GAAe,EACrC,MACF,SACEhQ,EAAI2S,EAAY9P,EAAG+H,EAAGoF,GAAe,GAGzC,MAAOhQ,GAET,MAAO6C,GAAEuO,SAGXgoE,6BAA8B,SAAUv2E,EAAG+H,GAEzC,IAAKyL,EAAYxT,EAAG,GAAI,CAEtB,GAAI7C,EAEJ,QAAQ4K,EAAEhJ,WACR,IAAK,SACH5B,EAAIuf,EAAY3U,EAAG/H,EAAGmN,GAAe,EACrC,MACF,SACEhQ,EAAI2S,EAAY/H,EAAG/H,EAAGmN,GAAe,GAGzC,MAAOhQ,GAET,MAAOsH,GAAMsD,EAAE7H,OAAQ6H,EAAEhJ,YAG3B8iC,4BAA6B,SAAU7hC,EAAG+H,GAExC,MAAOoF,GAAcnO,EAAOgB,GAAI+H,GAAGyG,WAGrCgoE,4BAA6B,SAAUx2E,EAAG+H,GAExC,MAAOoF,GAAcnN,EAAGhB,EAAO+I,IAAIyG,YAQvC,OAJArB,GAAc5N,OACZG,EAAG,oBAAsByU,EAAMlI,UAAyB,cAAI,sBAGvDkB,EA3JT,GAAI9K,GAAYzF,EAAoB,GAAGyF,SA8JvC/F,GAAQe,KAAO,gBACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjCL,EAAOD,SACLM,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,OAMhB,SAAUL,EAAQD,EAASM,GAEjC,YAGA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAAIsO,GAAMvO,EAAK3B,EAAoB,KAC/B4qC,EAAajpC,EAAK3B,EAAoB,MACtCk4B,EAAav2B,EAAK3B,EAAoB,KACtCyF,EAAY9D,EAAK3B,EAAoB,KAuBrCyqC,EAAc7oC,EAAM,eACtBg3B,qBAAsB,SAAU33B,GAE9B,IAAKwE,EAAUxE,IAAMi3B,EAAWj3B,GAC9B,KAAM,IAAIyE,WAAU,8DAKtB,KAAI,GADAqT,GAAS,EACL5Y,EAAI,EAAGA,GAAKc,EAAGd,IACrB4Y,EAAS7I,EAAI6I,EAAQ6xB,EAAW3pC,EAAGd,GAGrC,OAAO4Y,KAMX,OAFA0xB,GAAY9nC,OAASE,EAAG,4BAEjB4nC,EAGT/qC,EAAQe,KAAO,cACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAGA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAAI+6B,GAAeh7B,EAAK3B,EAAoB,KACxCkQ,EAAMvO,EAAK3B,EAAoB,KAC/B83B,EAAan2B,EAAK3B,EAAoB,KACtCyF,EAAY9D,EAAK3B,EAAoB,KACrC2Q,EAAShP,EAAK3B,EAAoB,KAwBlC2qC,EAAe/oC,EAAM,eACvBk3B,yCAA0C,SAAU73B,EAAGue,GACrD,KAAK/Z,EAAUxE,IAAO62B,EAAW72B,IAAOwE,EAAU+Z,IAAOsY,EAAWtY,IAClE,KAAM,IAAI9Z,WAAU,0DAEjB,IAAIiL,EAAO6O,EAAGve,GACjB,KAAM,IAAIyE,WAAU,4DAGtB,OAAOi3B,GAAazsB,EAAIjP,GAAG,GAAKiP,EAAIsP,GAAG,MAM3C,OAFAmrB,GAAYhoC,MAAQqD,OAEb2kC,EAGTjrC,EAAQe,KAAO,cACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAGA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAAIsO,GAAMvO,EAAK3B,EAAoB,KAC/B8P,EAASnO,EAAK3B,EAAoB,KAClC6P,EAAWlO,EAAK3B,EAAoB,KACpC28B,EAAeh7B,EAAK3B,EAAoB,KACxCk4B,EAAav2B,EAAK3B,EAAoB,KACtCyF,EAAY9D,EAAK3B,EAAoB,KAwBrC0qC,EAAU9oC,EAAM,WAClBg3B,qBAAsB,SAAU33B,GAE9B,IAAKwE,EAAUxE,IAAMi3B,EAAWj3B,GAC9B,KAAM,IAAIyE,WAAU,0DAGtB,OAAOoK,GAAO6sB,EAAa9sB,EAAS5O,EAAE,GAAIA,GAAIiP,EAAIjP,EAAE,MAOxD,OAFAypC,GAAQ/nC,OAASE,EAAG,4BAEb6nC,EAGThrC,EAAQe,KAAO,UACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjCL,EAAOD,SACLM,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,OAMhB,SAAUL,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GA4BpC,GAAIwhB,GAAMxhB,EAAM,OACdsD,OAAU,SAAU9B,GAClB,MAAOgB,MAAKopC,MAAM,EAAGpqC,IAGvBkhB,UAAa,SAAUlhB,GACrB,MAAO3B,GAAK6iB,UAAUkpB,MAAM,EAAGpqC,IAGjCihB,QAAW,SAAUjhB,GACnB,MAAOA,GAAEggB,OAKXoB,iBAAkB,SAAUphB,GAC1B,MAAOL,GAAQK,EAAGggB,KAMtB,OAFAA,GAAIzgB,OAASE,EAAG,kCAETugB,EApDT,GAAIrgB,GAAU/C,EAAoB,EAuDlCN,GAAQe,KAAO,MACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GA4BpC,GAAIgkB,GAAKhkB,EAAM,MACbsD,OAAU,SAAU9B,GAClB,MAAO,IAGTkhB,UAAa,SAAUlhB,GACrB,MAAO,IAAI3B,GAAK6iB,UAAU,IAG5BD,QAAW,SAAUjhB,GACnB,MAAOA,GAAEwiB,IAGXpB,iBAAkB,SAAUphB,GAC1B,MAAOL,GAAQK,EAAGwiB,KAMtB,OAFAA,GAAGjjB,OAASE,EAAG,+CAER+iB,EAlDT,GAAI7iB,GAAU/C,EAAoB,EAqDlCN,GAAQe,KAAO,KACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GA4BpC,GAAI+jB,GAAK/jB,EAAM,MACbsD,OAAU,SAAU9B,GAClB,MAAOA,IAGTkhB,UAAa,SAAUlhB,GACrB,MAAOA,IAGTihB,QAAW,SAAUjhB,GACnB,MAAOA,GAAEuiB,IAGXnB,iBAAkB,SAAUphB,GAC1B,MAAOL,GAAQK,EAAGuiB,KAMtB,OAFAA,GAAGhjB,OAASE,EAAG,+CAER8iB,EAlDT,GAAI5iB,GAAU/C,EAAoB,EAqDlCN,GAAQe,KAAO,KACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjCL,EAAOD,SACLM,EAAoB,KACpBA,EAAoB,OAMhB,SAAUL,EAAQD,EAASM,GAEjC,YAGA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GA4EpC,QAASy6E,GAAIj5E,GACX,MAAoB,KAAbA,EAAEK,QAAgC,gBAATL,GAAE,IAAmC,gBAATA,GAAE,GAGhE,QAASk5E,GAAIl5E,GACX,MAAoB,KAAbA,EAAEK,QAAgC,gBAATL,GAAE,IAAmC,gBAATA,GAAE,IAAmC,gBAATA,GAAE,GAG5F,QAASm5E,GAAIn5E,GACX,MAAoB,KAAbA,EAAEK,QAAgC,gBAATL,GAAE,IAAmC,gBAATA,GAAE,IAAmC,gBAATA,GAAE,IAAmC,gBAATA,GAAE,GAGxH,QAASo5E,GAAaC,EAAKC,EAAKC,EAAKC,GACnC,GAAIC,GAAKJ,EACLK,EAAKH,EACLruB,EAAKn+C,EAAS0sE,EAAIH,GAClBnuB,EAAKp+C,EAAS2sE,EAAIF,GAClB1xC,EAAMojB,EAAG,GAAGC,EAAG,GAAKA,EAAG,GAAGD,EAAG,EACjC,IAAIxkD,EAAIohC,GAAOxpC,EAAO0J,QACpB,MAAO,KAET,IAAImyB,IAAKgxB,EAAG,GAAGsuB,EAAG,GAAKtuB,EAAG,GAAGsuB,EAAG,GAAKtuB,EAAG,GAAGuuB,EAAG,GAAKvuB,EAAG,GAAGuuB,EAAG,IAAM5xC,CAClE,OAAOh7B,GAAIL,EAASy+C,EAAI/wB,GAAIs/C,GAG9B,QAASE,GAAat0B,EAAIu0B,EAAIC,EAAIv0B,EAAIw0B,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GAChE,GAAIC,IAASj1B,EAAK20B,IAAKG,EAAKH,IAAOJ,EAAKK,IAAKG,EAAKH,IAAOJ,EAAKK,IAAKG,EAAKH,GACpEK,GAASJ,EAAKH,IAAK10B,EAAKD,IAAO+0B,EAAKH,IAAKH,EAAKF,IAAOS,EAAKH,IAAKH,EAAKF,GACpEW,GAASn1B,EAAK20B,IAAK10B,EAAKD,IAAOu0B,EAAKK,IAAKH,EAAKF,IAAOC,EAAKK,IAAKH,EAAKF,GACpEY,GAASN,EAAKH,IAAKG,EAAKH,IAAOI,EAAKH,IAAKG,EAAKH,IAAOI,EAAKH,IAAKG,EAAKH,GACpEQ,GAASp1B,EAAKD,IAAKC,EAAKD,IAAOy0B,EAAKF,IAAKE,EAAKF,IAAOG,EAAKF,IAAKE,EAAKF,GACpEc,GAAOL,EAAMC,EAAQC,EAAMC,IAAYC,EAAMD,EAAQF,EAAMA,GAC3DK,GAAON,EAAQK,EAAKJ,GAAU,EAE9BM,EAAMx1B,EAAKs1B,GAAMr1B,EAAKD,GACtBy1B,EAAMlB,EAAKe,GAAMb,EAAKF,GACtBmB,EAAMlB,EAAKc,GAAMZ,EAAKF,GACtBmB,EAAMhB,EAAKY,GAAMT,EAAKH,GACtBiB,EAAMhB,EAAKW,GAAMR,EAAKH,GACtBiB,EAAMhB,EAAKU,GAAMP,EAAKH,EAC1B,OAAIW,KAAQG,GAAOF,IAAQG,GAAOF,IAAQG,GAChCL,EAAKC,EAAKC,GAGX,KAIX,QAASI,GAAoB91B,EAAIu0B,EAAIC,EAAIv0B,EAAIw0B,EAAIC,EAAI/5E,EAAG+H,EAAGkU,EAAG9e,GAC5D,GAAIg9B,IAAKh9B,EAAIkoD,EAAGrlD,EAAI45E,EAAG7xE,EAAI8xE,EAAG59D,IAAIqpC,EAAGtlD,EAAI85E,EAAG/xE,EAAIgyE,EAAG99D,EAAIopC,EAAGrlD,EAAI45E,EAAG7xE,EAAI8xE,EAAG59D,GACpE8S,EAAKs2B,EAAKlrB,GAAKmrB,EAAKD,GACpB+1B,EAAKxB,EAAKz/C,GAAK2/C,EAAKF,GACpByB,EAAKxB,EAAK1/C,GAAK4/C,EAAKF,EACxB,QAAQ9qD,EAAIqsD,EAAIC,GA/HlB,GAAI30E,GAAMnI,EAAK3B,EAAoB,KAC/BkQ,EAAMvO,EAAK3B,EAAoB,KAC/BoC,EAAST,EAAK3B,EAAoB,IAClC6P,EAAWlO,EAAK3B,EAAoB,KACpCmQ,EAAWxO,EAAK3B,EAAoB,KA6BpCgrC,EAAYppC,EAAM,aACpB88E,sBAAuB,SAAUt7E,EAAG+H,EAAGwzE,GACrC,IAAKrC,EAAIl5E,GAAM,KAAM,IAAIsC,WAAU,mDACnC,KAAK42E,EAAInxE,GAAM,KAAM,IAAIzF,WAAU,oDACnC,KAAK62E,EAAIoC,GAAU,KAAM,IAAIj5E,WAAU,kDAEvC,OAAO64E,GAAoBn7E,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAI+H,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIwzE,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,KAGrGC,6BAA8B,SAAUljE,EAAGtY,EAAG+H,EAAGkU,GAC/C,GAAiB,IAAb3D,EAAEjY,OAAc,CAClB,IAAK44E,EAAI3gE,GAAM,KAAM,IAAIhW,WAAU,mDACnC,KAAK22E,EAAIj5E,GAAM,KAAM,IAAIsC,WAAU,oDACnC,KAAK22E,EAAIlxE,GAAM,KAAM,IAAIzF,WAAU,mDACnC,KAAK22E,EAAIh9D,GAAM,KAAM,IAAI3Z,WAAU,oDAEnC,OAAO82E,GAAa9gE,EAAGtY,EAAG+H,EAAGkU,GAE1B,GAAiB,IAAb3D,EAAEjY,OAAc,CACvB,IAAK64E,EAAI5gE,GAAM,KAAM,IAAIhW,WAAU,mDACnC,KAAK42E,EAAIl5E,GAAM,KAAM,IAAIsC,WAAU,oDACnC,KAAK42E,EAAInxE,GAAM,KAAM,IAAIzF,WAAU,mDACnC,KAAK42E,EAAIj9D,GAAM,KAAM,IAAI3Z,WAAU,oDAEnC,OAAOq3E,GAAarhE,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAItY,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAI+H,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIkU,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAGxF,KAAM,IAAI3Z,WAAU,wDAIxBm5E,yBAA0B,SAAUz7E,EAAG+H,EAAGwzE,GACxC,MAAOv8E,GAAO4oC,EAAU5nC,EAAEwO,UAAWzG,EAAEyG,UAAW+sE,EAAM/sE,aAG1DktE,iCAAkC,SAAUpjE,EAAGtY,EAAG+H,EAAGkU,GAEnD,MAAOjd,GAAO4oC,EAAUtvB,EAAE9J,UAAWxO,EAAEwO,UAAWzG,EAAEyG,UAAWyN,EAAEzN,cA+DrE,OAAOo5B,GAGTtrC,EAAQe,KAAO,YACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAGA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAsDImpC,IAtDSppC,EAAK3B,EAAoB,IAsDvB4B,EAAM,YACnB88E,sBAAuB,SAASt7E,EAAG+H,EAAGkU,GAEpC,GAAgB,GAAZjc,EAAEK,QAA2B,GAAZ0H,EAAE1H,QAA2B,GAAZ4b,EAAE5b,OAAY,CAClD,IAAK44E,EAAIj5E,GAAM,KAAM,IAAIsC,WAAU,mDACnC,KAAK22E,EAAIlxE,GAAM,KAAM,IAAIzF,WAAU,oDACnC,KAAK22E,EAAIh9D,GAAM,KAAM,IAAI3Z,WAAU,mDACnC,IAAIpF,IAAK+e,EAAE,GAAGA,EAAE,KAAKlU,EAAE,GAAGA,EAAE,IACxB4zE,EAASz+E,EAAEA,EAAE6K,EAAE,GACf6zE,GAAS,GAAI1+E,EAAE6K,EAAE,IACjB8zE,EAAW77E,EAAE,EAEjB,OAAO87E,GAAqB97E,EAAE,GAAIA,EAAE,GAAI27E,EAAQC,EAAQC,GAGxD,KAAM,IAAIv5E,WAAU,iCAGxBy5E,yBAA0B,SAAS/7E,EAAG+H,EAAGkU,GACvC,GAA6B,GAAzBze,OAAOid,KAAKza,GAAGK,QAAwC,GAAzB7C,OAAOid,KAAK1S,GAAG1H,QAAwC,GAAzB7C,OAAOid,KAAKwB,GAAG5b,OAAY,CACzF,IAAK44E,EAAIj5E,GAAM,KAAM,IAAIsC,WAAU,gDACnC,KAAK22E,EAAIlxE,GAAM,KAAM,IAAIzF,WAAU,wDACnC,KAAK22E,EAAIh9D,GAAM,KAAM,IAAI3Z,WAAU;AACnC,GAAItC,EAAE9B,eAAe,WAAa8B,EAAE9B,eAAe,WAAa6J,EAAE7J,eAAe,eAC/E6J,EAAE7J,eAAe,eAAiB+d,EAAE/d,eAAe,eAAiB+d,EAAE/d,eAAe,cAAc,CACnG,GAAIhB,IAAK+e,EAAE+/D,WAAW//D,EAAEggE,aAAal0E,EAAEm0E,WAAWn0E,EAAEo0E,YAChDR,EAASz+E,EAAEA,EAAE6K,EAAEo0E,WACfP,GAAS,GAAI1+E,EAAE6K,EAAEo0E,YACjBN,EAAW77E,EAAEo8E,MAEjB,OAAON,GAAqB97E,EAAEo8E,OAAQp8E,EAAEq8E,OAAQV,EAAQC,EAAQC,GAGhE,KAAM,IAAIv5E,WAAU,0BAItB,KAAM,IAAIA,WAAU,iCAGxBkS,eAAgB,SAASxU,EAAG+H,GAE1B,GAAgB,GAAZ/H,EAAEK,QAA2B,GAAZ0H,EAAE1H,OAAY,CACjC,IAAK44E,EAAIj5E,GAAM,KAAM,IAAIsC,WAAU,mDACnC,KAAK42E,EAAInxE,GAAM,KAAM,IAAIzF,WAAU,oDAEnC,OAAOw5E,GAAqB97E,EAAE,GAAIA,EAAE,GAAI+H,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAGnD,GAAgB,GAAZ/H,EAAEK,QAA2B,GAAZ0H,EAAE1H,OAAY,CACtC,IAAK64E,EAAIl5E,GAAM,KAAM,IAAIsC,WAAU,mDACnC,KAAKg6E,EAAgBv0E,GAAM,KAAM,IAAIzF,WAAU,oDAE/C,OAAOi6E,GAAqBv8E,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAI+H,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAG3E,GAAgB,GAAZ/H,EAAEK,QAA2B,GAAZ0H,EAAE1H,OAAY,CACtC,IAAK44E,EAAIj5E,GAAM,KAAM,IAAIsC,WAAU,mDACnC,KAAK22E,EAAIlxE,GAAM,KAAM,IAAIzF,WAAU,oDAEnC,OAAOk6E,GAAYx8E,EAAE,GAAIA,EAAE,GAAI+H,EAAE,GAAIA,EAAE,IAGpC,GAAe,GAAZ/H,EAAEK,QAA2B,GAAZ0H,EAAE1H,OAAY,CACrC,IAAK64E,EAAIl5E,GAAM,KAAM,IAAIsC,WAAU,mDACnC,KAAK42E,EAAInxE,GAAM,KAAM,IAAIzF,WAAU,oDAEnC,OAAOm6E,GAAYz8E,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAI+H,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAGnD,KAAM,IAAIzF,WAAU,iCAGxB2oE,iBAAkB,SAASjrE,EAAG+H,GAC5B,GAA6B,GAAzBvK,OAAOid,KAAKza,GAAGK,QAAwC,GAAzB7C,OAAOid,KAAK1S,GAAG1H,OAAY,CAC3D,IAAK44E,EAAIj5E,GAAM,KAAM,IAAIsC,WAAU,gDACnC,KAAK42E,EAAInxE,GAAM,KAAM,IAAIzF,WAAU,kEACnC,IAAItC,EAAE9B,eAAe,WAAa8B,EAAE9B,eAAe,WAAa6J,EAAE7J,eAAe,eAC/E6J,EAAE7J,eAAe,eAAiB6J,EAAE7J,eAAe,cAEnD,MAAO49E,GAAqB97E,EAAEo8E,OAAQp8E,EAAEq8E,OAAQt0E,EAAE20E,WAAY30E,EAAE40E,WAAY50E,EAAE8zE,SAG9E,MAAM,IAAIv5E,WAAU,0BAInB,GAA6B,GAAzB9E,OAAOid,KAAKza,GAAGK,QAAwC,GAAzB7C,OAAOid,KAAK1S,GAAG1H,OAAY,CAChE,IAAK64E,EAAIl5E,GAAM,KAAM,IAAIsC,WAAU,wDACnC,KAAKg6E,EAAgBv0E,GAAM,KAAM,IAAIzF,WAAU,qDAC/C,IAAItC,EAAE9B,eAAe,WAAa8B,EAAE9B,eAAe,WAAa6J,EAAE7J,eAAe,OAC/E6J,EAAE7J,eAAe,OAAS6J,EAAE7J,eAAe,OAAS6J,EAAE7J,eAAe,MACrE6J,EAAE7J,eAAe,MAAQ6J,EAAE7J,eAAe,KAE1C,MAAOq+E,GAAqBv8E,EAAEo8E,OAAQp8E,EAAEq8E,OAAQr8E,EAAE48E,OAAQ70E,EAAEqoD,GAAIroD,EAAEsoD,GAAItoD,EAAE80E,GAAI90E,EAAE3D,EAAG2D,EAAE1D,EAAG0D,EAAE5K,EAGxF,MAAM,IAAImF,WAAU,0BAInB,GAA6B,GAAzB9E,OAAOid,KAAKza,GAAGK,QAAwC,GAAzB7C,OAAOid,KAAK1S,GAAG1H,OAAY,CAChE,IAAK44E,EAAIj5E,GAAM,KAAM,IAAIsC,WAAU,sDACnC,KAAK22E,EAAIlxE,GAAM,KAAM,IAAIzF,WAAU,sDACnC,IAAItC,EAAE9B,eAAe,cAAgB8B,EAAE9B,eAAe,cACpD6J,EAAE7J,eAAe,cAAgB6J,EAAE7J,eAAe,aAElD,MAAOs+E,GAAYx8E,EAAE88E,UAAW98E,EAAE+8E,UAAWh1E,EAAEi1E,UAAWj1E,EAAEk1E,UAG5D,MAAM,IAAI36E,WAAU,0BAInB,GAA4B,GAAzB9E,OAAOid,KAAKza,GAAGK,QAAwC,GAAzB7C,OAAOid,KAAK1S,GAAG1H,OAAY,CAC/D,IAAK64E,EAAIl5E,GAAM,KAAM,IAAIsC,WAAU,iEACnC,KAAK42E,EAAInxE,GAAM,KAAM,IAAIzF,WAAU,iEACnC,IAAItC,EAAE9B,eAAe,cAAgB8B,EAAE9B,eAAe,cAAgB8B,EAAE9B,eAAe,cACrF6J,EAAE7J,eAAe,cAAgB6J,EAAE7J,eAAe,cAAgB6J,EAAE7J,eAAe,aAEnF,MAAOu+E,GAAYz8E,EAAE88E,UAAW98E,EAAE+8E,UAAW/8E,EAAEk9E,UAAWn1E,EAAEi1E,UAAWj1E,EAAEk1E,UAAWl1E,EAAEo1E,UAGtF,MAAM,IAAI76E,WAAU,0BAItB,KAAM,IAAIA,WAAU,iCAGxBlD,MAAS,SAAS8D,GAChB,IAAKk6E,EAAUl6E,GAAQ,KAAM,IAAIZ,WAAU,mEAE3C,OAAO+6E,GAAkBn6E,MAG7B,OAAOykC,GAGT,QAASsxC,GAAI70E,GAKX,MAHIA,GAAE4K,cAAgB5P,QACpBgF,EAAIk5E,EAAel5E,IAEE,gBAATA,GAAE,IAAmC,gBAATA,GAAE,GAG9C,QAAS80E,GAAI90E,GAKX,MAHIA,GAAE4K,cAAgB5P,QACpBgF,EAAIk5E,EAAel5E,IAEE,gBAATA,GAAE,IAAmC,gBAATA,GAAE,IAAmC,gBAATA,GAAE,GAG1E,QAASk4E,GAAgBl4E,GAIvB,MAHIA,GAAE4K,cAAgB5P,QACpBgF,EAAIk5E,EAAel5E,IAEE,gBAATA,GAAE,IAAmC,gBAATA,GAAE,IAAmC,gBAATA,GAAE,IACtD,gBAATA,GAAE,IAAmC,gBAATA,GAAE,IAAmC,gBAATA,GAAE,GAIrE,QAASk5E,GAAe//E,GAGtB,IAAK,GAFDkd,GAAOjd,OAAOid,KAAKld,GACnB6G,KACKrH,EAAI,EAAGA,EAAI0d,EAAKpa,OAAQtD,IAC/BqH,EAAE7C,KAAKhE,EAAEkd,EAAK1d,IAEhB,OAAOqH,GAGT,QAASg5E,GAAUh5E,GAEjB,GAAmB,GAAfA,EAAE,GAAG/D,QAAkC,gBAAZ+D,GAAE,GAAG,IAAsC,gBAAZA,GAAE,GAAG,IACjE,IAAI,GAAIrH,KAAKqH,GACX,GAAmB,GAAfA,EAAErH,GAAGsD,QAAkC,gBAAZ+D,GAAErH,GAAG,IAAsC,gBAAZqH,GAAErH,GAAG,GACjE,OAAO,MAIR,CAAA,GAAmB,GAAfqH,EAAE,GAAG/D,QAAkC,gBAAZ+D,GAAE,GAAG,IAAsC,gBAAZA,GAAE,GAAG,IAAsC,gBAAZA,GAAE,GAAG,GAQrG,OAAO,CAPP,KAAI,GAAIrH,KAAKqH,GACX,GAAmB,GAAfA,EAAErH,GAAGsD,QAAkC,gBAAZ+D,GAAErH,GAAG,IAAsC,gBAAZqH,GAAErH,GAAG,IAAsC,gBAAZqH,GAAErH,GAAG,GAChG,OAAO,EAOb,OAAO,EAGT,QAAS++E,GAAqB97E,EAAG+H,EAAG3D,EAAGC,EAAGlH,GACxC,GAAIw8B,GAAO34B,KAAK0F,IAAItC,EAAEpE,EAAIqE,EAAE0D,EAAI5K,GAC5Bm7C,EAAMt3C,KAAKwG,IAAKpD,EAAEA,EAAIC,EAAEA,EAAI,IAC5BsR,EAAUgkB,EAAI2e,CAClB,OAAO3iC,GAGT,QAAS4mE,GAAqBv8E,EAAG+H,EAAGkU,EAAGm0C,EAAIC,EAAIwsB,EAAIz4E,EAAGC,EAAGlH,GACvD,GAAIw8B,KAAS02B,EAAGtoD,GAAG,GAAO80E,EAAG5gE,GAAG,GAAQ4gE,EAAG5gE,GAAG,GAAOm0C,EAAGpwD,GAAG,GAAQowD,EAAGpwD,GAAG,GAAOqwD,EAAGtoD,GAAG,EACtF4xB,GAAM34B,KAAKwG,IAAImyB,EAAI,GAAGA,EAAI,GAAKA,EAAI,GAAGA,EAAI,GAAKA,EAAI,GAAGA,EAAI,GAAI,GAC9D,IAAI2e,GAAMt3C,KAAKwG,IAAIpD,EAAEA,EAAIC,EAAEA,EAAIlH,EAAEA,EAAG,IAChCwY,EAASgkB,EAAI2e,CACjB,OAAO3iC,GAGT,QAAS6mE,GAAYn3B,EAAIu0B,EAAIt0B,EAAIw0B,GAC/B,GAAIyD,GAAQzD,EAAKF,EACb4D,EAAQl4B,EAAKD,EACbo4B,EAAWF,EAAQA,EAAQC,EAAQA,EACnC7nE,EAAS3U,KAAKwG,IAAIi2E,EAAU,GAChC,OAAO9nE,GAGT,QAAS8mE,GAAYp3B,EAAIu0B,EAAIC,EAAIv0B,EAAIw0B,EAAIC,GACvC,GAAI2D,GAAQ3D,EAAKF,EACb0D,EAAQzD,EAAKF,EACb4D,EAAQl4B,EAAKD,EACbo4B,EAAWC,EAAQA,EAAQH,EAAQA,EAAQC,EAAQA,EACnD7nE,EAAS3U,KAAKwG,IAAIi2E,EAAU,GAChC,OAAO9nE,GAGT,QAAS0nE,GAAkBj5E,GAEzB,IAAI,GADAuR,MACI5Y,EAAI,EAAGA,EAAIqH,EAAE/D,OAAO,EAAGtD,IAC7B,IAAI,GAAIkU,GAAIlU,EAAE,EAAGkU,EAAI7M,EAAE/D,OAAQ4Q,IACV,GAAf7M,EAAE,GAAG/D,OACPsV,EAAOpU,KAAKi7E,EAAYp4E,EAAErH,GAAG,GAAIqH,EAAErH,GAAG,GAAIqH,EAAE6M,GAAG,GAAI7M,EAAE6M,GAAG,KAElC,GAAf7M,EAAE,GAAG/D,QACZsV,EAAOpU,KAAKk7E,EAAYr4E,EAAErH,GAAG,GAAIqH,EAAErH,GAAG,GAAIqH,EAAErH,GAAG,GAAIqH,EAAE6M,GAAG,GAAI7M,EAAE6M,GAAG,GAAI7M,EAAE6M,GAAG,IAIhF,OAAO0E,GAGTrZ,EAAQe,KAAO,WACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjCL,EAAOD,SACLM,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,OAMhB,SAAUL,EAAQD,EAASM,GAEjC,YAGA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAAI2V,GAAQvX,EAAoB,GAE5BoC,EAAST,EAAK3B,EAAoB,IAClC6H,EAAQlG,EAAK3B,EAAoB,KACjC4P,EAAMjO,EAAK3B,EAAoB,MAG/BqiB,GAFS1gB,EAAK3B,EAAoB,KAEpB2B,EAAK3B,EAAoB,MACvCw8B,EAAc76B,EAAK3B,EAAoB,KACvC0X,EAAc/V,EAAK3B,EAAoB,KACvC8U,EAAcnT,EAAK3B,EAAoB,IACvCkT,EAAcvR,EAAK3B,EAAoB,IA8BvCiR,EAAMrP,EAAM,OAEdkV,iBAAkB,SAAU1T,EAAG+H,GAC7B,SAAU/H,IAAK+H,IAGjBiM,mBAAoB,SAAUhU,EAAG+H,GAC/B,QAAiB,IAAT/H,EAAEuiB,IAAqB,IAATviB,EAAEwiB,IAAuB,IAATza,EAAEwa,IAAqB,IAATxa,EAAEya,KAGxD7O,uBAAwB,SAAU3T,EAAG+H,GACnC,QAAQ/H,EAAEkjB,UAAanb,EAAEmb,UAAaljB,EAAE+E,SAAYgD,EAAEhD,UAGxDkP,aAAc,SAAUjU,EAAG+H,GACzB,MAAO8F,GAAI7N,EAAE0C,MAAOqF,EAAErF,QAGxBiS,iBAAkB,SAAU3U,EAAG+H,GAE7B,GAAI5K,EAGJ,QAAQ6C,EAAEjB,WACR,IAAK,SACH,OAAQgJ,EAAEhJ,WACR,IAAK,SAEH5B,EAAIi8B,EAAYp5B,EAAG+H,EAAG8F,GAAK,EAC3B,MACF,SAEE1Q,EAAI8hB,EAAYlX,EAAG/H,EAAG6N,GAAK,GAG/B,KACF,SACE,OAAQ9F,EAAEhJ,WACR,IAAK,SAEH5B,EAAI8hB,EAAYjf,EAAG+H,EAAG8F,GAAK,EAC3B,MACF,SAEE1Q,EAAIuU,EAAY1R,EAAG+H,EAAG8F,IAK9B,MAAO1Q,IAGTqX,eAAgB,SAAUxU,EAAG+H,GAE3B,MAAO8F,GAAI7O,EAAOgB,GAAIhB,EAAO+I,IAAIyG,WAGnC2G,gBAAiB,SAAUnV,EAAG+H,GAE5B,MAAO8F,GAAI7O,EAAOgB,GAAI+H,IAGxBmN,gBAAiB,SAAUlV,EAAG+H,GAE5B,MAAO8F,GAAI7N,EAAGhB,EAAO+I,KAGvBqN,cAAe,SAAUpV,EAAG+H,GAE1B,GAAIyE,EAAIzE,GAEN,MAAOtD,GAAMzE,EAAEE,OAAQF,EAAEjB,UAG3B,IAAI5B,EAEJ,QAAQ6C,EAAEjB,WACR,IAAK,SACH5B,EAAImX,EAAYtU,EAAG+H,EAAG8F,GAAK,EAC3B,MACF,SACE1Q,EAAI2S,EAAY9P,EAAG+H,EAAG8F,GAAK,GAG/B,MAAO1Q,IAGTkY,cAAe,SAAUrV,EAAG+H,GAE1B,GAAIyE,EAAIxM,GAEN,MAAOyE,GAAMzE,EAAEE,OAAQF,EAAEjB,UAG3B,IAAI5B,EAEJ,QAAQ4K,EAAEhJ,WACR,IAAK,SACH5B,EAAImX,EAAYvM,EAAG/H,EAAG6N,GAAK,EAC3B,MACF,SACE1Q,EAAI2S,EAAY/H,EAAG/H,EAAG6N,GAAK,GAG/B,MAAO1Q,IAGTmY,aAAc,SAAUtV,EAAG+H,GAEzB,MAAO8F,GAAI7O,EAAOgB,GAAI+H,GAAGyG,WAG3B+G,aAAc,SAAUvV,EAAG+H,GAEzB,MAAO8F,GAAI7N,EAAGhB,EAAO+I,IAAIyG,YAQ7B,OAJAX,GAAItO,OACFG,EAAG,oBAAsByU,EAAMlI,UAAe,IAAI,sBAG7C4B,EAGTvR,EAAQe,KAAO,MACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAGA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAAI2V,GAAQvX,EAAoB,GAE5BoC,EAAST,EAAK3B,EAAoB,IAElCgf,EAAcrd,EAAK3B,EAAoB,KACvCugB,EAAc5e,EAAK3B,EAAoB,KACvCyf,EAAc9d,EAAK3B,EAAoB,KACvC8U,EAAcnT,EAAK3B,EAAoB,IACvCkT,EAAcvR,EAAK3B,EAAoB,IA8BvCmR,EAAKvP,EAAM,MAEbkV,iBAAkB,SAAU1T,EAAG+H,GAC7B,SAAU/H,IAAK+H,IAGjBiM,mBAAoB,SAAUhU,EAAG+H,GAC/B,MAAiB,KAAT/H,EAAEuiB,IAAqB,IAATviB,EAAEwiB,IAAuB,IAATza,EAAEwa,IAAqB,IAATxa,EAAEya,IAGxD7O,uBAAwB,SAAU3T,EAAG+H,GACnC,OAAS/H,EAAEkjB,WAAaljB,EAAE+E,UAAcgD,EAAEmb,WAAanb,EAAEhD,SAG3DkP,aAAc,SAAUjU,EAAG+H,GACzB,MAAOgG,GAAG/N,EAAE0C,MAAOqF,EAAErF,QAGvBiS,iBAAkB,SAAU3U,EAAG+H,GAE7B,GAAI5K,EAGJ,QAAQ6C,EAAEjB,WACR,IAAK,SACH,OAAQgJ,EAAEhJ,WACR,IAAK,SAEH5B,EAAIggB,EAAYnd,EAAG+H,EAAGgG,EACtB,MACF,SAEE5Q,EAAIye,EAAY7T,EAAG/H,EAAG+N,GAAI,GAG9B,KACF,SACE,OAAQhG,EAAEhJ,WACR,IAAK,SAEH5B,EAAIye,EAAY5b,EAAG+H,EAAGgG,GAAI,EAC1B,MACF,SAEE5Q,EAAIuU,EAAY1R,EAAG+H,EAAGgG,IAK9B,MAAO5Q,IAGTqX,eAAgB,SAAUxU,EAAG+H,GAE3B,MAAOgG,GAAG/O,EAAOgB,GAAIhB,EAAO+I,IAAIyG,WAGlC2G,gBAAiB,SAAUnV,EAAG+H,GAE5B,MAAOgG,GAAG/O,EAAOgB,GAAI+H,IAGvBmN,gBAAiB,SAAUlV,EAAG+H,GAE5B,MAAOgG,GAAG/N,EAAGhB,EAAO+I,KAGtBqN,cAAe,SAAUpV,EAAG+H,GAE1B,GAAI5K,EAEJ,QAAQ6C,EAAEjB,WACR,IAAK,SACH5B,EAAIkf,EAAYrc,EAAG+H,EAAGgG,GAAI,EAC1B,MACF,SACE5Q,EAAI2S,EAAY9P,EAAG+H,EAAGgG,GAAI,GAG9B,MAAO5Q,IAGTkY,cAAe,SAAUrV,EAAG+H,GAE1B,GAAI5K,EAEJ,QAAQ4K,EAAEhJ,WACR,IAAK,SACH5B,EAAIkf,EAAYtU,EAAG/H,EAAG+N,GAAI,EAC1B,MACF,SACE5Q,EAAI2S,EAAY/H,EAAG/H,EAAG+N,GAAI,GAG9B,MAAO5Q,IAGTmY,aAAc,SAAUtV,EAAG+H,GAEzB,MAAO+H,GAAY9Q,EAAOgB,GAAI+H,EAAGgG,GAAI,GAAOS,WAG9C+G,aAAc,SAAUvV,EAAG+H,GAEzB,MAAO+H,GAAY9Q,EAAO+I,GAAI/H,EAAG+N,GAAI,GAAMS,YAQ/C,OAJAT,GAAGxO,OACDG,EAAG,oBAAsByU,EAAMlI,UAAc,GAAI,sBAG5C8B,EAGTzR,EAAQe,KAAO,KACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAGA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAAI2V,GAAQvX,EAAoB,GAE5BoC,EAAST,EAAK3B,EAAoB,IAElCgf,EAAcrd,EAAK3B,EAAoB,KACvCwiB,EAAc7gB,EAAK3B,EAAoB,KACvCyf,EAAc9d,EAAK3B,EAAoB,KACvC8U,EAAcnT,EAAK3B,EAAoB,IACvCkT,EAAcvR,EAAK3B,EAAoB,IA8BvCkR,EAAMtP,EAAM,OAEdkV,iBAAkB,SAAU1T,EAAG+H,GAC7B,QAAS/H,KAAQ+H,GAGnBiM,mBAAoB,SAAUhU,EAAG+H,GAC/B,OAAkB,IAAT/H,EAAEuiB,IAAqB,IAATviB,EAAEwiB,MAAwB,IAATza,EAAEwa,IAAqB,IAATxa,EAAEya,KAG1D7O,uBAAwB,SAAU3T,EAAG+H,GACnC,QAAU/H,EAAEkjB,WAAaljB,EAAE+E,YAAegD,EAAEmb,WAAanb,EAAEhD,UAG7DkP,aAAc,SAAUjU,EAAG+H,GACzB,MAAO+F,GAAI9N,EAAE0C,MAAOqF,EAAErF,QAGxBiS,iBAAkB,SAAU3U,EAAG+H,GAE7B,GAAI5K,EAGJ,QAAQ6C,EAAEjB,WACR,IAAK,SACH,OAAQgJ,EAAEhJ,WACR,IAAK,SAEH5B,EAAIiiB,EAAYpf,EAAG+H,EAAG+F,EACtB,MACF,SAEE3Q,EAAIye,EAAY7T,EAAG/H,EAAG8N,GAAK,GAG/B,KACF,SACE,OAAQ/F,EAAEhJ,WACR,IAAK,SAEH5B,EAAIye,EAAY5b,EAAG+H,EAAG+F,GAAK,EAC3B,MACF,SAEE3Q,EAAIuU,EAAY1R,EAAG+H,EAAG+F,IAK9B,MAAO3Q,IAGTqX,eAAgB,SAAUxU,EAAG+H,GAE3B,MAAO+F,GAAI9O,EAAOgB,GAAIhB,EAAO+I,IAAIyG,WAGnC2G,gBAAiB,SAAUnV,EAAG+H,GAE5B,MAAO+F,GAAI9O,EAAOgB,GAAI+H,IAGxBmN,gBAAiB,SAAUlV,EAAG+H,GAE5B,MAAO+F,GAAI9N,EAAGhB,EAAO+I,KAGvBqN,cAAe,SAAUpV,EAAG+H,GAE1B,GAAI5K,EAEJ,QAAQ6C,EAAEjB,WACR,IAAK,SACH5B,EAAIkf,EAAYrc,EAAG+H,EAAG+F,GAAK,EAC3B,MACF,SACE3Q,EAAI2S,EAAY9P,EAAG+H,EAAG+F,GAAK,GAG/B,MAAO3Q,IAGTkY,cAAe,SAAUrV,EAAG+H,GAE1B,GAAI5K,EAEJ,QAAQ4K,EAAEhJ,WACR,IAAK,SACH5B,EAAIkf,EAAYtU,EAAG/H,EAAG8N,GAAK,EAC3B,MACF,SACE3Q,EAAI2S,EAAY/H,EAAG/H,EAAG8N,GAAK,GAG/B,MAAO3Q,IAGTmY,aAAc,SAAUtV,EAAG+H,GAEzB,MAAO+H,GAAY9Q,EAAOgB,GAAI+H,EAAG+F,GAAK,GAAOU,WAG/C+G,aAAc,SAAUvV,EAAG+H,GAEzB,MAAO+H,GAAY9Q,EAAO+I,GAAI/H,EAAG8N,GAAK,GAAMU,YAQhD,OAJAV,GAAIvO,OACFG,EAAG,oBAAsByU,EAAMlI,UAAe,IAAI,sBAG7C6B,EAGTxR,EAAQe,KAAO,MACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjCL,EAAOD,SACLM,EAAoB,IACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,IACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,IACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,IACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,IACpBA,EAAoB,KACpBA,EAAoB,IACpBA,EAAoB,MAMhB,SAAUL,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAmEpC,QAASm/E,GAAO39E,EAAG+H,GACjB,GAAI61E,GAAmB58E,KAAKkH,IAAItI,EAAMM,KAAKF,GAAGK,OAAQT,EAAMM,KAAK6H,GAAG1H,OAEpEL,GAAIJ,EAAM2D,QAAQvD,GAClB+H,EAAInI,EAAM2D,QAAQwE,EAElB,IAAI81E,GAAQj+E,EAAMM,KAAKF,GACnB89E,EAAQl+E,EAAMM,KAAK6H,EAEvB,IAAoB,GAAhB81E,EAAMx9E,QAA+B,GAAhBy9E,EAAMz9E,QAA2B,GAAZw9E,EAAM,IAAuB,GAAZC,EAAM,GACnE,KAAM,IAAI/rE,YAAW,6CACL8rE,EAAM55E,KAAK,MAAQ,WAAa65E,EAAM75E,KAAK,MAAQ,KAGrE,IAAIhB,IACF8J,EAASN,EAASzM,EAAE,GAAI+H,EAAE,IAAK0E,EAASzM,EAAE,GAAI+H,EAAE,KAChDgF,EAASN,EAASzM,EAAE,GAAI+H,EAAE,IAAK0E,EAASzM,EAAE,GAAI+H,EAAE,KAChDgF,EAASN,EAASzM,EAAE,GAAI+H,EAAE,IAAK0E,EAASzM,EAAE,GAAI+H,EAAE,KAGlD,OAAI61E,GAAmB,GACb36E,GAEDA,EAzFX,GAAIjE,GAAWT,EAAK3B,EAAoB,IACpCmQ,EAAWxO,EAAK3B,EAAoB,KACpC6P,EAAWlO,EAAK3B,EAAoB,KAmCpCirC,EAAQrpC,EAAM,SAChBmW,iBAAkB,SAAU3U,EAAG+H,GAC7B,MAAO/I,GAAO2+E,EAAO39E,EAAEwgB,UAAWzY,EAAEyY,aAGtCtL,gBAAiB,SAAUlV,EAAG+H,GAC5B,MAAO/I,GAAO2+E,EAAO39E,EAAEwgB,UAAWzY,KAGpCoN,gBAAiB,SAAUnV,EAAG+H,GAC5B,MAAO/I,GAAO2+E,EAAO39E,EAAG+H,EAAEyY,aAG5BhM,eAAgBmpE,GAOlB,OAJA91C,GAAMtoC,OACJG,EAAG,6DAGEmoC,EA5DT,GAAIjoC,GAAQhD,EAAoB,EAiGhCN,GAAQe,KAAO,QACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAOA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GA0GpC,QAASszE,GAAO9xE,EAAGoc,EAAGlc,EAAMvB,GAC1B,IAAK0D,EAAU+Z,GACb,KAAM,IAAI9Z,WAAW,uDAGvB,IAAIwrB,GAAS1R,EAAI,EAAIA,EAAI,EACrB2R,EAAO3R,EAAI,GAAKA,EAAI,CAGxB,QAAQlc,EAAKG,QACX,IAAK,GACH,MAAO09E,GAAsB/9E,EAAGoc,EAAGzd,EAAQuB,EAAK,GAAI6tB,EAAMD,EAC5D,KAAK,GACH,MAAOkwD,GAAah+E,EAAGoc,EAAGzd,EAAQuB,EAAM6tB,EAAMD,GAElD,KAAM,IAAI/b,YAAW,kDAGvB,QAASgsE,GAAsB/9E,EAAGoc,EAAGzd,EAAQ3B,EAAG+wB,EAAMD,GAEpD,GAAIE,IAAMhxB,EAAI+wB,EAAM/wB,EAAI8wB,GAEpBwH,EAAIj3B,EAAKS,OAAOC,QAAQJ,GAAU,SAElCzB,EAAIo4B,EAAEzH,SAASG,EAAIhuB,EAAGoc,EAE1B,OAAkB,QAAXzd,EAAkBzB,EAAIA,EAAEsR,UAGjC,QAASwvE,GAAah+E,EAAGoc,EAAGzd,EAAQP,EAAG2vB,EAAMD,GAE3C,GAAIzvB,EAAKqW,SAAS1U,GAAI,CAEpB,GAAIi+E,GAAKj+E,EAAE6tB,SAASzR,EAEpB,OAAe,QAAXzd,EAEEA,IAAWs/E,EAAGl/E,UACTC,EAAOi/E,EAAIt/E,GACbs/E,EAEFA,EAAGzvE,UAOZ,IAAK,GAJD3Q,GAAImD,KAAKC,IAAI7C,EAAE,GAAK2vB,EAAM3vB,EAAE,GAAK0vB,GAEjCowD,KAEKnhF,EAAI,EAAGA,EAAIc,EAAGd,IACrBmhF,EAAOnhF,GAAKiD,EAAEjD,EAAIgxB,GAAMhxB,EAAI+wB,EAG9B,OAAkB,QAAXnvB,EAAkBK,EAAOk/E,GAAUA,EA5J5C,GAAIl/E,GAAST,EAAK3B,EAAoB,IAuClCmrC,EAAOvpC,EAAM,QAGfY,MAAS,SAAUY,GACjB,MAAO8xE,GAAM9xE,EAAG,EAAGJ,EAAMM,KAAKF,GAAI,OAGpCivB,gBAAiB,SAAUjvB,EAAGoc,GAC5B,MAAO01D,GAAM9xE,EAAGoc,EAAGxc,EAAMM,KAAKF,GAAI,OAGpCkvB,mBAAoB,SAAUlvB,EAAGoc,GAC/B,MAAO01D,GAAM9xE,EAAGoc,EAAEmH,WAAY3jB,EAAMM,KAAKF,GAAI,OAG/C41B,gBAAiB,SAAU51B,EAAGrB,GAC5B,MAAOmzE,GAAM9xE,EAAG,EAAGJ,EAAMM,KAAKF,GAAIrB,IAGpCw/E,wBAAyB,SAAUn+E,EAAGoc,EAAGzd,GACvC,MAAOmzE,GAAM9xE,EAAGoc,EAAGxc,EAAMM,KAAKF,GAAIrB,IAGpCy/E,2BAA4B,SAAUp+E,EAAGoc,EAAGzd,GAC1C,MAAOmzE,GAAM9xE,EAAGoc,EAAEmH,WAAY3jB,EAAMM,KAAKF,GAAIrB,IAG/CG,OAAU,SAAUkB,GAClB,MAAO8xE,GAAM9xE,EAAG,EAAGA,EAAEE,OAAQF,EAAEjB,YAGjCowB,iBAAkB,SAAUnvB,EAAGoc,GAC7B,MAAO01D,GAAM9xE,EAAGoc,EAAGpc,EAAEE,OAAQF,EAAEjB,YAGjCqwB,oBAAqB,SAAUpvB,EAAGoc,GAChC,MAAO01D,GAAM9xE,EAAGoc,EAAEmH,WAAYvjB,EAAEE,OAAQF,EAAEjB,YAG5C82B,iBAAkB,SAAU71B,EAAGrB,GAC7B,MAAOmzE,GAAM9xE,EAAG,EAAGA,EAAEE,OAAQvB,IAG/B0/E,yBAA0B,SAAUr+E,EAAGoc,EAAGzd,GACxC,MAAOmzE,GAAM9xE,EAAGoc,EAAGpc,EAAEE,OAAQvB,IAG/B2/E,4BAA6B,SAAUt+E,EAAGoc,EAAGzd,GAC3C,MAAOmzE,GAAM9xE,EAAGoc,EAAEmH,WAAYvjB,EAAEE,OAAQvB,KAM5C,OAFAopC,GAAKxoC,MAAQqD,OAENmlC,EAnGT,GAAInoC,GAAYhD,EAAoB,GAEhCyF,GADYzF,EAAoB,GAAG2R,MACvB3R,EAAoB,GAAGyF,UAoKvC/F,GAAQe,KAAO,OACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAuDpC,QAAS+/E,GAAKv+E,EAAG+H,GACf,GAAI81E,GAAO39E,EAAKF,GACZ89E,EAAQ59E,EAAK6H,GACb3H,EAAMy9E,EAAM,EAEhB,IAAqB,IAAjBA,EAAMx9E,QAAiC,IAAjBy9E,EAAMz9E,OAAc,KAAM,IAAI0R,YAAW,kBACnE,IAAI8rE,EAAM,IAAMC,EAAM,GAAI,KAAM,IAAI/rE,YAAW,mCAAqC8rE,EAAM,GAAK,OAASC,EAAM,GAAK,IACnH,IAAW,GAAP19E,EAAU,KAAM,IAAI2R,YAAW,oDAGnC,KAAK,GADDu3B,GAAO,EACFvsC,EAAI,EAAGA,EAAIqD,EAAKrD,IACvBusC,EAAOx8B,EAAIw8B,EAAM78B,EAASzM,EAAEjD,GAAIgL,EAAEhL,IAGpC,OAAOusC,GApET,GAAIx8B,GAAWvO,EAAK3B,EAAoB,KACpC6P,EAAWlO,EAAK3B,EAAoB,KAyBpCqJ,EAAMzH,EAAM,OACdmW,iBAAkB,SAAU3U,EAAG+H,GAC7B,MAAOw2E,GAAKv+E,EAAEwgB,UAAWzY,EAAEyY,YAG7BtL,gBAAiB,SAAUlV,EAAG+H,GAC5B,MAAOw2E,GAAKv+E,EAAEwgB,UAAWzY,IAG3BoN,gBAAiB,SAAUnV,EAAG+H,GAC5B,MAAOw2E,GAAKv+E,EAAG+H,EAAEyY,YAGnBhM,eAAgB+pE,GAKlB,OAFAt4E,GAAI1G,OAASG,EAAG,6CAETuG,EA/CT,GAAI/F,GAAOtD,EAAoB,GAAGsD,IA2ElC5D,GAAQe,KAAO,MACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAOA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAAIQ,GAAST,EAAK3B,EAAoB,IA+BlCgH,EAASpF,EAAM,UACjBg6C,kBAAmBgmC,EAEnB9lC,mBAAoB,SAAU14C,EAAGgE,GAC/B,MAAOhF,GAAOw/E,EAAgBx+E,EAAEwgB,UAAWxc,KAG7CqoE,gBAAiBxoE,EAEjByoE,iBAAkB,SAAUtsE,EAAGgE,GAC7B,MAAOhF,GAAO6E,EAAa7D,EAAEwgB,UAAWxc,MAM5C,OAFAJ,GAAOrE,MAAQqD,OAERgB,EAUT,QAAS46E,GAAiBx+E,EAAGH,GAE3B,GAAI2R,GAAOqR,EAAiBhjB,EAE5B,OAAO+D,GAAO5D,EAAG,SAAU0C,EAAOP,EAAOvC,GAEvC,MAAa,KAAT4R,EACK3R,EAAS6C,GAEA,IAAT8O,EACA3R,EAAS6C,GAAQP,IAGjBtC,EAAS6C,GAAQP,GAAQvC,KA3EtC,GAAIgE,GAAShH,EAAoB,GAAGgH,OAChCC,EAAejH,EAAoB,GAAGiH,aACtCgf,EAAmBjmB,EAAoB,IAAIimB,gBA8E/CvmB,GAAQe,KAAO,SACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAMA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAAIQ,GAAST,EAAK3B,EAAoB,IAoBlCoG,EAAUxE,EAAM,WAClBY,MAAS,SAAUY,GACjB,MAAOy+E,GAASlwE,EAAMvO,KAGxBlB,OAAU,SAAUkB,GAClB,GAAI2D,GAAO86E,EAASlwE,EAAMvO,EAAEwgB,WAE5B,OAAOxhB,GAAO2E,KAMlB,OAFAX,GAAQzD,MAAQqD,OAETI,EAtCT,GAAIuL,GAAQ3R,EAAoB,GAAG2R,MAC/BkwE,EAAW7hF,EAAoB,GAAGoG,OAwCtC1G,GAAQe,KAAO,UACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAMA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAwBpC,GAAIiE,GAAUjE,EAAM,WAClBg6C,kBAAmBg0B,EAEnB9zB,mBAAoB,SAAU14C,EAAGH,GAC/B,MAAOG,GAAEyC,QAAQ5C,KAMrB,OAFA4C,GAAQlD,MAAQqD,OAETH,EAST,QAAS+pE,GAAU5sE,EAAOC,GAExB,GAAI2R,GAAOqR,EAAiBhjB,GAExB+tB,EAAU,SAAUlrB,EAAOP,GACzB/C,MAAMqB,QAAQiC,GAChBD,EAAQC,EAAO,SAAUlC,EAAOzD,GAE9B6wB,EAAQptB,EAAO2B,EAAMwE,OAAO5J,MAKjB,IAATyU,EACF3R,EAAS6C,GAEO,IAAT8O,EACP3R,EAAS6C,EAAOP,GAGhBtC,EAAS6C,EAAOP,EAAOvC,GAI7BguB,GAAQhuB,MAtEV,GAAIijB,GAAmBjmB,EAAoB,IAAIimB,iBAC3CpgB,EAAU7F,EAAoB,GAAG6F,OAwErCnG,GAAQe,KAAO,UACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAAQgC,EAAMC,EAAQC,EAAMC,GAuDjC,QAASkgF,GAAMt6E,EAAGC,GAUd,GARuB,IAAnBnE,EAAKkE,GAAG/D,SAEV+D,GAAKA,IAEgB,IAAnBlE,EAAKmE,GAAGhE,SAEVgE,GAAKA,IAEHnE,EAAKkE,GAAG/D,OAAS,GAAKH,EAAKmE,GAAGhE,OAAS,EACvC,KAAM,IAAI0R,YAAW,+EACN2O,KAAK5N,UAAU1O,EAAE/D,QAAU,SAAWqgB,KAAK5N,UAAUzO,EAAEhE,QAAU,IAEpF,IAAI85B,MACA7d,IAEJ,OAAOlY,GAAErE,IAAI,SAASqE,GAClB,MAAOC,GAAEtE,IAAI,SAASsE,GAClB,MAAOD,GAAErE,IAAI,SAASgI,GAClB,MAAO1D,GAAEtE,IAAI,SAASC,GAClB,MAAOsc,GAAE/a,KAAK8S,EAAetM,EAAG/H,OAErCm6B,EAAE54B,KAAK+a,UAEf6d,OAAWA,EA/EpB,GAAIn7B,GAAST,EAAK3B,EAAoB,IAClCyX,EAAiB9V,EAAK3B,EAAoB,KA4BxCorC,EAAOxpC,EAAM,QACbmW,iBAAkB,SAAS3U,EAAG+H,GAC1B,MAAO/I,GAAO0/E,EAAM1+E,EAAEwgB,UAAWzY,EAAEyY,aAGvCtL,gBAAiB,SAASlV,EAAG+H,GACzB,MAAO/I,GAAO0/E,EAAM1+E,EAAEwgB,UAAWzY,KAGrCoN,gBAAiB,SAASnV,EAAG+H,GACzB,MAAO/I,GAAO0/E,EAAM1+E,EAAG+H,EAAEyY,aAG7BhM,eAAgBkqE,GAGpB,OAAO12C,GAhDX,GAAI9nC,GAAOtD,EAAoB,GAAGsD,IAsFlC5D,GAAQe,KAAO,OACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAMA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAkFpC,QAASmgF,GAAMz+E,EAAMvB,GACnB,GAAI2kB,GAAgBvG,EAAW7c,GAC3BS,EAAe2iB,EAAgB,GAAIjlB,GAAK6iB,UAAU,GAAK,CAG3D,IAFAjhB,EAAUC,GAENvB,EAAQ,CAEV,GAAIzB,GAAI8B,EAAOL,EACf,OAAIuB,GAAKG,OAAS,EACTnD,EAAEqF,OAAOrC,EAAMS,GAEjBzD,EAIP,GAAIgG,KACJ,OAAIhD,GAAKG,OAAS,EACTkC,EAAOW,EAAKhD,EAAMS,GAEpBuC,EAKX,QAAS6Z,GAAW7c,GAClB,GAAIojB,IAAgB,CAOpB,OANApjB,GAAKuC,QAAQ,SAAUC,EAAOP,EAAOe,GAC/B7E,EAAKiQ,YAAY5L,KACnB4gB,GAAgB,EAChBpgB,EAAIf,GAASO,EAAM6gB,cAGhBD,EAIT,QAASrjB,GAAWC,GAClBA,EAAKuC,QAAQ,SAAUC,GACrB,GAAqB,gBAAVA,KAAuBL,EAAUK,IAAUA,EAAQ,EAC5D,KAAM,IAAIF,OAAM,2DAxHtB,GAAIxD,GAAST,EAAK3B,EAAoB,IAmClCqrC,EAAOzpC,EAAM,QACfS,GAAI,WACF,MAA0B,UAAlBX,EAAOU,OACT2/E,MACAA,KAAU,YAKlBn7D,iCAAkC,SAAUtjB,GAC1C,GAAI2X,GAAO3X,EAAKA,EAAKG,OAAS,EAC9B,IAAoB,gBAATwX,GAAmB,CAC5B,GAAIlZ,GAASuB,EAAKwH,KAClB,OAAOi3E,GAAMz+E,EAAMvB,GAEhB,MAAsB,UAAlBL,EAAOU,OACP2/E,EAAMz+E,GAGNy+E,EAAMz+E,EAAM,YAIvBd,MAASu/E,EAET7/E,OAAU,SAAUoB,GAClB,GAAIvB,GAASuB,EAAKnB,SAClB,OAAO4/E,GAAMz+E,EAAKsO,UAAW7P,IAG/BU,yBAA0B,SAAUa,EAAMvB,GACxC,MAAOggF,GAAOz+E,EAAKsO,UAAW7P,KAMlC,OAFAspC,GAAK1oC,MAAQqD,OAENqlC,EA5ET,GAAI5lC,GAAYzF,EAAoB,GAAGyF,UACnCE,EAAS3F,EAAoB,GAAG2F,MAiIpCjG,GAAQe,KAAO,OACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAQA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAAIQ,GAAST,EAAK3B,EAAoB,IAsClCiG,EAAUrE,EAAM,WAElB0W,gBAAiB,SAAUlV,EAAGoB,GAC5B,MAAGpB,GAAE6C,QACI7C,EAAE6C,QAAQzB,GAEVpC,EAAOY,EAAMiD,QAAQ7C,EAAEwO,UAAWpN,KAI7CoT,eAAgB,SAAUxU,EAAGoB,GAM3B,MALAA,GAAMqB,QAAQ,SAAUvC,GACtB,IAAKmC,EAAUnC,GACb,KAAM,IAAIoC,WAAU,+BAAiCpC,KAGlDN,EAAMiD,QAAQ7C,EAAGoB,KAO5B,OAFAyB,GAAQtD,MAAQqD,OAETC,EAnET,GAEIR,IAFiBzF,EAAoB,IAEzBA,EAAoB,GAAGyF,WACnCzC,EAAQhD,EAAoB,EAmEhCN,GAAQe,KAAO,UACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAWA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GA2FpC,QAASogF,GAAc53E,EAAK9G,EAAM2+E,GAChC,GAAoBj8E,SAAhBi8E,GACF,GAA2B,gBAAhBA,IAAmD,IAAvBA,EAAYx+E,OACjD,KAAM,IAAIiC,WAAU,iDAItBu8E,GAAc,GAGhB,IAAoB,IAAhB3+E,EAAKG,OACP,KAAM,IAAIC,GAAeJ,EAAKG,OAAQ,EAExC,IAAID,GAAMF,EAAK,EACf,IAAmB,gBAARE,KAAqBiC,EAAUjC,GACxC,KAAM,IAAIkC,WAAU,uDACJ3D,EAAOuB,GAAQ,IAGjC,IAAI8G,EAAI3G,OAASD,EACf,MAAO4G,GAAIqH,UAAU,EAAGjO,EAErB,IAAI4G,EAAI3G,OAASD,EAAK,CAEzB,IAAK,GADD0c,GAAM9V,EACDjK,EAAI,EAAG4E,EAAKvB,EAAM4G,EAAI3G,OAAQtD,EAAI4E,EAAI5E,IAC7C+f,GAAO+hE,CAET,OAAO/hE,GAGP,MAAO9V,GAxHX,GAAIhI,GAAST,EAAK3B,EAAoB,IA6BlC2F,EAAS,SAAiBvC,EAAGE,EAAMS,GACrC,GAAwB,GAApB8E,UAAUpF,QAAmC,GAApBoF,UAAUpF,OACrC,KAAM,IAAIsjB,GAAe,SAAUle,UAAUpF,OAAQ,EAAG,EAe1D,IAZIhC,EAAKqW,SAASxU,KAChBA,EAAOA,EAAKsO,WAGVnQ,EAAKiQ,YAAYpO,EAAK,MAExBA,EAAOA,EAAKH,IAAI,SAAU2C,GACxB,MAAOrE,GAAKiQ,YAAY5L,GAASA,EAAM6gB,WAAa7gB,KAKpDrE,EAAKqW,SAAS1U,GAEhB,MAAOA,GAAEuC,OAAOrC,EAAMS,GAAc,EAGtC,IAAiB,gBAANX,GAET,MAAO4+E,GAAc5+E,EAAGE,EAAMS,EAIhC,IAAIm3B,IAAW14B,MAAMqB,QAAQT,IAAgC,UAAlB1B,EAAOU,MAElD,IAAmB,GAAfkB,EAAKG,OAAa,CAEpB,KAAOjB,MAAMqB,QAAQT,IACnBA,EAAIA,EAAE,EAGR,OAAOuO,GAAMvO,GAIRZ,MAAMqB,QAAQT,KACjBA,GAAKA,IAEPA,EAAIuO,EAAMvO,EAEV,IAAI8c,GAAMld,EAAM2C,OAAOvC,EAAGE,EAAMS,EAChC,OAAOm3B,GAAW94B,EAAO8d,GAAOA,EAMpC,OAFAva,GAAOhD,MAAQqD,OAERL,EA1FT,GAAIjC,GAAiB1D,EAAoB,IACrC+mB,EAAiB/mB,EAAoB,IAErCyF,EAAYzF,EAAoB,GAAGyF,UACnC1D,EAAS/B,EAAoB,GAAG+B,OAChC4P,EAAQ3R,EAAoB,GAAG2R,MAC/B3O,EAAQhD,EAAoB,EAgIhCN,GAAQe,KAAO,SACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,GAOxBC,EAAOD,QAAU,QAASylB,GAAa3d,EAAGC,GACzC,YACA,IAeCy6E,GAAQC,EAfLx8D,EAAK,8EACRy8D,EAAM,iBACNC,EAAM,iHACNC,EAAM,iBACNC,EAAM,KACNpiF,EAAI,SAASqB,GAAK,MAAO2jB,GAAYq9D,cAAgB,GAAKhhF,GAAGyH,eAAiB,GAAKzH,GAEnF4B,EAAIjD,EAAEqH,GAAGmB,QAAQy5E,EAAK,KAAO,GAC7Bj3E,EAAIhL,EAAEsH,GAAGkB,QAAQy5E,EAAK,KAAO,GAE7BK,EAAKr/E,EAAEuF,QAAQgd,EAAI,UAAUhd,QAAQ,MAAM,IAAIA,QAAQ,MAAM,IAAIa,MAAM,MACvEk5E,EAAKv3E,EAAExC,QAAQgd,EAAI,UAAUhd,QAAQ,MAAM,IAAIA,QAAQ,MAAM,IAAIa,MAAM,MAEvEm5E,EAAKl5E,SAASrG,EAAE2F,MAAMu5E,GAAM,KAAsB,IAAdG,EAAGh/E,QAAgBL,EAAE2F,MAAMs5E,IAAQvwE,KAAK+U,MAAMzjB,GAClFw/E,EAAKn5E,SAAS0B,EAAEpC,MAAMu5E,GAAM,KAAOK,GAAMx3E,EAAEpC,MAAMs5E,IAAQvwE,KAAK+U,MAAM1b,IAAM,IAG3E,IAAIy3E,EAAI,CACP,GAAKD,EAAKC,EAAO,OAAO,CACnB,IAAKD,EAAKC,EAAO,MAAO,GAG9B,IAAI,GAAIC,GAAK,EAAGC,EAAK1+E,KAAKkH,IAAIm3E,EAAGh/E,OAAQi/E,EAAGj/E,QAASo/E,EAAOC,EAAMD,IAAQ,CAKzE,GAHAX,IAAWO,EAAGI,IAAS,IAAI95E,MAAMw5E,IAAQn5E,WAAWq5E,EAAGI,KAAUJ,EAAGI,IAAS,EAC7EV,IAAWO,EAAGG,IAAS,IAAI95E,MAAMw5E,IAAQn5E,WAAWs5E,EAAGG,KAAUH,EAAGG,IAAS,EAEzE16E,MAAM+5E,KAAY/5E,MAAMg6E,GAAW,MAAQh6E,OAAM+5E,GAAW,GAAI,CAMpE,UAJgBA,UAAkBC,KACjCD,GAAU,GACVC,GAAU,IAEPD,EAASC,EAAU,OAAO,CAC9B,IAAID,EAASC,EAAU,MAAO,GAE/B,MAAO,KAMF,SAAUxiF,EAAQD,EAASM,GAEjC,YAMA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAAIQ,GAAST,EAAK3B,EAAoB,IA+BlC2G,EAAU/E,EAAM,WAClBY,MAAS,SAAUY,GACjB,MAAOJ,GAAM2D,QAAQxF,EAAOwQ,MAAMvO,KAGpClB,OAAU,SAAUkB,GAClB,GAAI8c,GAAMld,EAAM2D,QAAQvD,EAAEwgB,UAE1B,OAAOphB,OAAMqB,QAAQqc,GAAO9d,EAAO8d,GAAOA,GAG5Ckc,IAAO,SAAUh5B,GAEf,MAAOjC,GAAOwQ,MAAMvO,KAMxB,OAFAuD,GAAQhE,MAAQqD,OAETW,EAtDT,GAAIxF,GAASnB,EAAoB,GAC7BgD,EAAQhD,EAAoB,EAwDhCN,GAAQe,KAAO,UACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjCL,EAAOD,SAELM,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,OAMhB,SAAUL,EAAQD,EAASM,GAEjC,YAIA,SAASP,GAAQgC,EAAMC,EAAQC,EAAMC,GA4CjC,QAASmhF,GAAOxmD,EAAGh7B,GACf,GAAIyhF,GAAUzhF,EAAE+B,OAAOG,OACnBw/E,EAAU1mD,EAAEj5B,OAAOG,MACvB,IAAIu/E,EAAU,EACV,KAAM,IAAIp9E,OAAM,uCAGpB,IAAIq9E,EAAU,EACV,KAAM,IAAIr9E,OAAM,wCAGpB,IAAGo9E,IAAYC,EACX,KAAM,IAAIr9E,OAAM,sCAIpB,IAAIs9E,GAAO1pE,EAAI+iB,EACf,IAAa,IAAT2mD,EACA,KAAM,IAAIt9E,OAAM,mDAGpB,IAAIu9E,GAAO3pE,EAAIjY,EACf,IAAa,IAAT4hF,EACA,KAAM,IAAIv9E,OAAM,oDAEpB,IAAIw9E,GAAQtzE,EAAOysB,EAAG/iB,EAAI+iB,IACtB8mD,EAAQvzE,EAAOvO,EAAGiY,EAAIjY,IAEtBwX,EAASS,EAAI3J,EAASuzE,EAAOrgD,EAAI/yB,EAAUozE,EAAOC,KACtD,OAAIlmD,GAAUpkB,GACHA,EAGA/N,OAAOgnB,IA5EtB,GAAI5vB,GAAST,EAAK3B,EAAoB,IAClC8P,EAASnO,EAAK3B,EAAoB,KAClCwZ,EAAM7X,EAAK3B,EAAoB,MAC/B6P,EAAWlO,EAAK3B,EAAoB,KACpCgQ,EAAYrO,EAAK3B,EAAoB,MACrC+iC,EAAMphC,EAAK3B,EAAoB,MAC/Bm9B,EAAYx7B,EAAK3B,EAAoB,KAkBrCwrC,EAAe5pC,EAAM,gBACrBgW,eAAgB,SAAS2kB,EAAGh7B,GACxB,MAAOwhF,GAAO3gF,EAAOm6B,GAAIn6B,EAAOb,KAGpC+W,gBAAiB,SAASikB,EAAGh7B,GACzB,MAAOwhF,GAAOxmD,EAAGn6B,EAAOb,KAG5BgX,gBAAiB,SAASgkB,EAAGh7B,GACzB,MAAOwhF,GAAO3gF,EAAOm6B,GAAIh7B,IAG7BwW,iBAAkB,SAASwkB,EAAGh7B,GAC1B,MAAOwhF,GAAOxmD,EAAGh7B,KA0CzB,OAAOiqC,GAIX9rC,EAAQe,KAAO,eACff,EAAQD,QAAUA,GAMZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAAIsO,GAAMvO,EAAK3B,EAAoB,KAC/B6P,EAAWlO,EAAK3B,EAAoB,KACpC8P,EAASnO,EAAK3B,EAAoB,KAClCuP,EAAY5N,EAAK3B,EAAoB,KACrCyF,EAAY9D,EAAK3B,EAAoB,KACrC83B,EAAan2B,EAAK3B,EAAoB,IAuB1C,OAAO4B,GAAM,eACX4iB,iBAAkB,SAAUhd,GAC1B,GAAIgS,GAAM,EACN8pE,EAAQ,CAUZ,OARAvzD,GAAYvoB,EAAG,SAASq6C,GACtB,IAAIp8C,EAAUo8C,KAAQ/pB,EAAW+pB,GAC/B,KAAM,IAAIn8C,WAAU,0DAEtB8T,GAAMtJ,EAAIsJ,EAAKqoC,GACfyhC,EAAQzzE,EAASyzE,EAAO/zE,EAAUsyC,MAG7B/xC,EAAOP,EAAUiK,GAAM8pE,MA5CpC,GAAIvzD,GAAc/vB,EAAoB,GAiDtCN,GAAQe,KAAO,cACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAAI2N,GAAY5N,EAAK3B,EAAoB,KA2BrC0rC,EAAe9pC,EAAM,gBACvBg3B,qBAAsBrpB,EAEtBuH,iBAAkB,SAAU7V,EAAGue,GAC7B,GAAIzG,GAAQ5Y,CAEZ,KAAKsF,EAAUxE,IAAMA,EAAI,EACvB,KAAM,IAAIyE,WAAU,2DAEtB,KAAKD,EAAU+Z,IAAMA,EAAI,EACvB,KAAM,IAAI9Z,WAAU,2DAEtB,IAAI8Z,EAAIve,EACN,KAAM,IAAIyE,WAAU,mEAKtB,KADAqT,EAAS,EACJ5Y,EAAIc,EAAIue,EAAI,EAAGrf,GAAKc,EAAGd,IAC1B4Y,GAAkB5Y,CAGpB,OAAO4Y,IAGThC,uBAAwB,SAAU9V,EAAGue,GACnC,GAAIzG,GAAQ5Y,CAEZ,KAAKy8B,EAAkB37B,KAAO27B,EAAkBpd,GAC9C,KAAM,IAAI9Z,WAAU,2DAEtB,IAAI8Z,EAAE6G,GAAGplB,GACP,KAAM,IAAIyE,WAAU,mEAItB,KADAqT,EAAS,GAAItX,GAAK6iB,UAAU,GACvBnkB,EAAIc,EAAEwf,MAAMjB,GAAGa,KAAK,GAAIlgB,EAAEomB,IAAItlB,GAAId,EAAIA,EAAEkgB,KAAK,GAChDtH,EAASA,EAAOmJ,MAAM/hB,EAGxB,OAAO4Y,KAQX,OAFA2yB,GAAa/oC,MAAQqD,OAEd0lC,EAQT,QAAS9O,GAAkB37B,GACzB,MAAOA,GAAEwE,aAAexE,EAAE67B,IAAI,GAvFhC,GAAIr3B,GAAYzF,EAAoB,GAAGyF,SA0FvC/F,GAAQe,KAAO,eACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAGA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAAIq/B,GAAet/B,EAAK3B,EAAoB,KAiCxC8hC,EAAcb,EAAa,WAAWa,UAI1C,OAFAA,GAAWn/B,MAAQqD,OAEZ87B,EAGTpiC,EAAQe,KAAO,aACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAaA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,EAAOob,GAI3C,QAASumE,GAASC,GAChB3iD,EAAkB,OAAT2iD,EAAgBC,EAAkBC,EAAW16E,OAAOw6E,IAO/D,QAASjhD,KACL,MAAO1B,KAZX,GAAIA,EAwBJ,OAhBA0iD,GAAQ7hF,EAAOo8C,YAQf9gC,EAAKomB,GAAG,SAAU,SAAU38B,EAAMD,EAAMm+C,GAEZ3+C,SAAvB2+C,EAAQ7G,YAETylC,EAAQ98E,EAAKq3C,cAIVvb,EAnCT,GAAImhD,GAAa1jF,EAAoB,KAQjCyjF,EAAkBC,GA8BtBhkF,GAAQD,QAAUA,EAClBC,EAAQsd,MAAO,GAKT,SAAUrd,EAAQD,EAASM,GAEjC,cAC4B,SAAS2jF,GAkFrC,QAASC,GAAK5xE,GACZ,GAAIurB,GAAGsmD,EAAS7xE,EAAIvO,OAChBstB,EAAKjxB,KAAMK,EAAI,EAAGkU,EAAI0c,EAAG5wB,EAAI4wB,EAAG1c,EAAI,EAAG7S,EAAIuvB,EAAG22C,IAMlD,KAHKmc,IAAU7xE,GAAO6xE,MAGf1jF,EAAI2jF,GACTtiF,EAAErB,GAAKA,GAET,KAAKA,EAAI,EAAGA,EAAI2jF,EAAO3jF,IACrBqB,EAAErB,GAAKqB,EAAE6S,EAAI0vE,EAAQ1vE,EAAIrC,EAAI7R,EAAI0jF,IAAWtmD,EAAI/7B,EAAErB,KAClDqB,EAAE6S,GAAKkpB,GAIRxM,EAAGyqB,EAAI,SAAS9zC,GAIf,IAFA,GAAI61B,GAAG7d,EAAI,EACPvf,EAAI4wB,EAAG5wB,EAAGkU,EAAI0c,EAAG1c,EAAG7S,EAAIuvB,EAAG22C,EACxBhgE,KACL61B,EAAI/7B,EAAErB,EAAI4jF,EAAQ5jF,EAAI,GACtBuf,EAAIA,EAAIokE,EAAQtiF,EAAEuiF,GAASviF,EAAErB,GAAKqB,EAAE6S,EAAI0vE,EAAQ1vE,EAAIkpB,KAAQ/7B,EAAE6S,GAAKkpB,GAGrE,OADAxM,GAAG5wB,EAAIA,EAAG4wB,EAAG1c,EAAIA,EACVqL,IAGNokE,GAOL,QAAS19E,GAAQ0M,EAAKkxE,GACpB,GAAwC9xE,GAApC6G,KAAakrE,SAAcnxE,IAAK,EACpC,IAAIkxE,GAAgB,KAAPC,EACX,IAAK/xE,IAAQY,GACX,IAAMiG,EAAOpU,KAAKyB,EAAQ0M,EAAIZ,GAAO8xE,EAAQ,IAAO,MAAOt9E,IAG/D,MAAQqS,GAAOtV,OAASsV,EAAgB,KAAPkrE,EAAanxE,EAAMA,EAAM,KAQ5D,QAASoxE,GAAOV,EAAMxxE,GAEpB,IADA,GAA4BmyE,GAAxBC,EAAaZ,EAAO,GAAWnvE,EAAI,EAChCA,EAAI+vE,EAAW3gF,QACpBuO,EAAI+xE,EAAO1vE,GACT0vE,GAASI,GAAyB,GAAhBnyE,EAAI+xE,EAAO1vE,IAAW+vE,EAAWx7B,WAAWv0C,IAElE,OAAOgwE,GAASryE,GAQlB,QAASsyE,GAASd,GAChB,IAEE,MADAe,GAAOp6B,OAAOC,gBAAgBo5B,EAAO,GAAIgB,YAAWV,IAC7CO,EAASb,GAChB,MAAO98E,GACP,QAAS,GAAIoL,MAAMyyE,EAAQA,EAAOE,WAAaF,EAAOE,UAAUC,QACxDH,EAAOI,OAAQN,EAASO,KAQpC,QAASP,GAAS78E,GAChB,MAAOwB,QAAO67E,aAAaphE,MAAM,EAAGjc,GAhKtC,GAAIs8E,GAAQ,IACRgB,EAAS,EACTl8E,EAAS,GACTg8E,KACAL,EAA2B,mBAAXZ,GAAyBoB,OAASpB,EAKlDqB,EAAa5gF,KAAKwG,IAAIk5E,EAAOgB,GAC7BG,EAAe7gF,KAAKwG,IAAI,EAAGhC,GAC3Bs8E,EAA0B,EAAfD,EACXlB,EAAOD,EAAQ,EAGfqB,EAAY/gF,KAAKy8B,MAMrBlhC,GAAOD,QAAU,SAAS8jF,EAAMv7E,GAC9B,GAAIA,GAAWA,EAAQ07E,UAAW,EAIhC,MAHA17E,GAAQ07E,QAAS,EACjBv/E,KAAKy8B,OAASlhC,EAAOD,QAAQ8jF,EAAMv7E,GACnCA,EAAQ07E,QAAS,EACVv/E,KAAKy8B,MAEd,IAAIukD,GAAen9E,GAAWA,EAAQo9E,UAAY,EAC9CrzE,KAQAszE,GALYpB,EAAO99E,EACrBg/E,GAAe5B,EAAMa,EAASO,IAC9B,IAAK/7E,WAAY26E,EAAOc,IAAY,GAAItyE,GAG/B,GAAI4xE,GAAK5xE,GAUpB,OAPAkyE,GAAOG,EAASiB,EAAK5d,GAAIkd,GAOlB,WAIL,IAHA,GAAI3jF,GAAIqkF,EAAK9pC,EAAEspC,GACXtkF,EAAIwkF,EACJ5hF,EAAI,EACDnC,EAAIgkF,GACThkF,GAAKA,EAAImC,GAAK0gF,EACdtjF,GAAKsjF,EACL1gF,EAAIkiF,EAAK9pC,EAAE,EAEb,MAAOv6C,GAAKikF,GACVjkF,GAAK,EACLT,GAAK,EACL4C,KAAO,CAET,QAAQnC,EAAImC,GAAK5C,IAIrBb,EAAOD,QAAQ6lF,YAAc,WAC3BnhF,KAAKy8B,OAASskD,GAwGhBjB,EAAO9/E,KAAKy8B,SAAU+jD,KAEOvkF,KAAKX,EAASM,EAAoB,OAIzD,SAAUL,EAAQD,GAExB,GAAI87C,EAGJA,GAAI,WACH,MAAO17C,QAGR,KAEC07C,EAAIA,GAAK9+B,SAAS,mBAAoB,EAAGY,MAAM,QAC9C,MAAM5W,GAEc,gBAAXq+E,UACTvpC,EAAIupC,QAONplF,EAAOD,QAAU87C,GAKX,SAAU77C,EAAQD,EAASM,GAEjC,YAGA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAAIq/B,GAAet/B,EAAK3B,EAAoB,KAiCxC6gC,EAASI,EAAa,WAAWJ,MAIrC,OAFAA,GAAOl+B,MAAQqD,OAER66B,EAGTnhC,EAAQe,KAAO,SACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAGA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAAIq/B,GAAet/B,EAAK3B,EAAoB,KA+BxCyhC,EAAYR,EAAa,WAAWQ,SAIxC,OAFAA,GAAU9+B,MAAQqD,OAEXy7B,EAGT/hC,EAAQe,KAAO,YACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjCL,EAAOD,SACLM,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,KACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,KACpBA,EAAoB,IACpBA,EAAoB,KACpBA,EAAoB,OAMhB,SAAUL,EAAQD,EAASM,GAEjC,YAGA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GA8CpC,QAAS4jF,GAAWpiF,EAAG+H,GACrB,GAAI3I,MAAMqB,QAAQT,GAAI,CACpB,GAAIZ,MAAMqB,QAAQsH,GAAI,CACpB,GAAI3H,GAAMJ,EAAEK,MACZ,IAAID,IAAQ2H,EAAE1H,OACZ,OAAO,CAGT,KAAK,GAAItD,GAAI,EAAGA,EAAIqD,EAAKrD,IACvB,IAAKqlF,EAAWpiF,EAAEjD,GAAIgL,EAAEhL,IACtB,OAAO,CAIX,QAAO,EAGP,OAAO,EAIT,OAAIqC,MAAMqB,QAAQsH,IAITqF,EAAMpN,EAAG+H,GAtEtB,GAAIqF,GAAQ7O,EAAK3B,EAAoB,KA6BjCqS,EAAYzQ,EAAM,aACpBgX,WAAY,SAAUxV,EAAG+H,GACvB,MAAOq6E,GAAWpiF,EAAEwO,UAAWzG,EAAEyG,aAMrC,OAFAS,GAAU1P,MAAQqD,OAEXqM,EAuCT3S,EAAQe,KAAO,YACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAMA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAEpC,GAAIQ,GAAST,EAAK3B,EAAoB,IAElCgf,EAAcrd,EAAK3B,EAAoB,KACvCwiB,EAAc7gB,EAAK3B,EAAoB,KACvCyf,EAAc9d,EAAK3B,EAAoB,KACvC8U,EAAcnT,EAAK3B,EAAoB,IACvCkT,EAAcvR,EAAK3B,EAAoB,IAEvCuX,EAAQvX,EAAoB,GA2B5B4Q,EAAYhP,EAAM,aAEpBiV,mBAAoB,SAAUzT,EAAG+H,GAC/B,MAAO/H,IAAK+H,GAGd2L,iBAAkB,SAAU1T,EAAG+H,GAC7B,MAAO/H,IAAK+H,GAAKD,EAAY9H,EAAG+H,EAAGzJ,EAAO0J,UAG5C2L,uBAAwB,SAAU3T,EAAG+H,GACnC,MAAO/H,GAAEmjB,IAAIpb,IAAM8L,EAAe7T,EAAG+H,EAAGzJ,EAAO0J,UAGjD8L,qBAAsB,SAAU9T,EAAG+H,GACjC,MAAwB,KAAjB/H,EAAEiiB,QAAQla,IAGnBiM,mBAAoB,WAClB,KAAM,IAAI1R,WAAU,wDAGtB2R,aAAc,SAAUjU,EAAG+H,GACzB,IAAK/H,EAAEkU,UAAUnM,GACf,KAAM,IAAIvF,OAAM,2CAElB,OAAOgL,GAAUxN,EAAE0C,MAAOqF,EAAErF,QAG9BvD,iBAAkB,SAAUa,EAAG+H,GAC7B,MAAO/H,IAAK+H,GAGd4M,iBAAkB,SAAU3U,EAAG+H,GAE7B,GAAI5K,EAGJ,QAAQ6C,EAAEjB,WACR,IAAK,SACH,OAAQgJ,EAAEhJ,WACR,IAAK,SAEH5B,EAAIiiB,EAAYpf,EAAG+H,EAAGyF,EACtB,MACF,SAEErQ,EAAIye,EAAY7T,EAAG/H,EAAGwN,GAAW,GAGrC,KACF,SACE,OAAQzF,EAAEhJ,WACR,IAAK,SAEH5B,EAAIye,EAAY5b,EAAG+H,EAAGyF,GAAW,EACjC,MACF,SAEErQ,EAAIuU,EAAY1R,EAAG+H,EAAGyF,IAK9B,MAAOrQ,IAGTqX,eAAgB,SAAUxU,EAAG+H,GAE3B,MAAOyF,GAAUxO,EAAOgB,GAAIhB,EAAO+I,IAAIyG,WAGzC2G,gBAAiB,SAAUnV,EAAG+H,GAE5B,MAAOyF,GAAUxO,EAAOgB,GAAI+H,IAG9BmN,gBAAiB,SAAUlV,EAAG+H,GAE5B,MAAOyF,GAAUxN,EAAGhB,EAAO+I,KAG7BqN,cAAe,SAAUpV,EAAG+H,GAE1B,GAAI5K,EAEJ,QAAQ6C,EAAEjB,WACR,IAAK,SACH5B,EAAIkf,EAAYrc,EAAG+H,EAAGyF,GAAW,EACjC,MACF,SACErQ,EAAI2S,EAAY9P,EAAG+H,EAAGyF,GAAW,GAGrC,MAAOrQ,IAGTkY,cAAe,SAAUrV,EAAG+H,GAE1B,GAAI5K,EAEJ,QAAQ4K,EAAEhJ,WACR,IAAK,SACH5B,EAAIkf,EAAYtU,EAAG/H,EAAGwN,GAAW,EACjC,MACF,SACErQ,EAAI2S,EAAY/H,EAAG/H,EAAGwN,GAAW,GAGrC,MAAOrQ,IAGTmY,aAAc,SAAUtV,EAAG+H,GAEzB,MAAO+H,GAAY9Q,EAAOgB,GAAI+H,EAAGyF,GAAW,GAAOgB,WAGrD+G,aAAc,SAAUvV,EAAG+H,GAEzB,MAAO+H,GAAY9Q,EAAO+I,GAAI/H,EAAGwN,GAAW,GAAMgB,YAQtD,OAJAhB,GAAUjO,OACRG,EAAG,oBAAsByU,EAAMlI,UAAqB,UAAI,sBAGnDuB,EAvKT,GAAI1F,GAAclL,EAAoB,GAAGkL,YACrC+L,EAAiBjX,EAAoB,GAyKzCN,GAAQe,KAAO,YACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjCL,EAAOD,SACLM,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,OAMhB,SAAUL,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAAI2D,GAAQ5D,EAAK3B,EAAoB,KACjCoC,EAAST,EAAK3B,EAAoB,KAClCsD,EAAO3B,EAAK3B,EAAoB,KAChCkhB,EAASvf,EAAK3B,EAAoB,KAClC8kB,EAAiBnjB,EAAK3B,EAAoB,KAsB1C2rC,EAAe/pC,EAAM,gBACvB+wB,iCAAkC,SAAU0pB,EAAIC,GAC9C,GAAuC,IAAnCp7B,EAAO5d,EAAK+4C,GAAK,GAAI92C,GAAM,KAAgD,IAAnC2b,EAAO5d,EAAKg5C,GAAK,GAAI/2C,GAAM,IACrE,GAAIwT,UAMJ,KAAK,GAHDyjC,GAAKp2C,EAAQ5D,MAAMqB,QAAQw4C,GAAMA,EAAKA,EAAGz4B,WAAWsB,KAAKJ,GACzD23B,EAAKr2C,EAAQ5D,MAAMqB,QAAQy4C,GAAMA,EAAKA,EAAG14B,WAAWsB,KAAKJ,GACzD/L,KACK5Y,EAAE,EAAGA,EAAEq8C,EAAG/4C,OAAQtD,IACzB,IAAK,GAAIkU,GAAE,EAAGA,EAAEooC,EAAGh5C,OAAQ4Q,IACzB0E,EAAOpU,MAAM63C,EAAGr8C,GAAIs8C,EAAGpoC,IAK7B,OAAI7R,OAAMqB,QAAQw4C,IAAO75C,MAAMqB,QAAQy4C,GAC9BvjC,EAGF,GAAI3W,GAAO2W,KAItB,OAAO4yB,GArDT,GAAIvlC,GAAUpG,EAAoB,GAAGoG,OAwDrC1G,GAAQe,KAAO,eACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAAI4O,GAAQ7O,EAAK3B,EAAoB,KACjCuF,EAAQ5D,EAAK3B,EAAoB,KACjCoC,EAAST,EAAK3B,EAAoB,KAClCsD,EAAO3B,EAAK3B,EAAoB,KAChCkhB,EAASvf,EAAK3B,EAAoB,KAClC8kB,EAAiBnjB,EAAK3B,EAAoB,KAqB1C6rC,EAAcjqC,EAAM,eACtB4iB,iBAAkB,SAAUhd,GAC1B,GAAsC,IAAlC0Z,EAAO5d,EAAKkE,GAAI,GAAIjC,GAAM,IAC5B,GAAIwT,UAED,CACH,GAAItR,GAAIrB,EAAQ5D,MAAMqB,QAAQ2D,GAAKA,EAAIA,EAAEoc,WAAWsB,KAAKJ,GACrD/L,IACJA,GAAOpU,KAAK8C,EAAE,GACd,KAAK,GAAItH,GAAE,EAAGA,EAAEsH,EAAEhE,OAAQtD,IACnBqQ,EAAM/I,EAAEtH,GAAIsH,EAAEtH,EAAE,KACnB4Y,EAAOpU,KAAK8C,EAAEtH,IAKpB,MAAIqC,OAAMqB,QAAQ2D,GACTuR,EAGF,GAAI3W,GAAO2W,KAItB,OAAO8yB,GArDT,GAAIzlC,GAAUpG,EAAoB,GAAGoG,OAwDrC1G,GAAQe,KAAO,cACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAMA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAAI4O,GAAQ7O,EAAK3B,EAAoB,KACjCuF,EAAQ5D,EAAK3B,EAAoB,KACjCsD,EAAO3B,EAAK3B,EAAoB,KAChCkhB,EAASvf,EAAK3B,EAAoB,KAClC8kB,EAAiBnjB,EAAK3B,EAAoB,KAuB1C+rC,EAAcnqC,EAAM,eACtB+wB,iCAAkC,SAAU0pB,EAAIC,GAC9C,GAAuC,IAAnCp7B,EAAO5d,EAAK+4C,GAAK,GAAI92C,GAAM,IAC7B,OAAO,CAEJ,IAAuC,IAAnC2b,EAAO5d,EAAKg5C,GAAK,GAAI/2C,GAAM,IAClC,OAAO,CAKT,KAAK,GADDg3C,GAFAC,EAAKj1C,EAASnB,EAAQ5D,MAAMqB,QAAQw4C,GAAMA,EAAKA,EAAGz4B,WAAWsB,KAAKJ,IAClE23B,EAAKl1C,EAASnB,EAAQ5D,MAAMqB,QAAQy4C,GAAMA,EAAKA,EAAG14B,WAAWsB,KAAKJ,IAE7D3kB,EAAE,EAAGA,EAAEq8C,EAAG/4C,OAAQtD,IAAK,CAC9Bo8C,GAAO,CACP,KAAK,GAAIloC,GAAE,EAAGA,EAAEooC,EAAGh5C,OAAQ4Q,IACzB,GAAI7D,EAAMgsC,EAAGr8C,GAAG2F,MAAO22C,EAAGpoC,GAAGvO,QAAU02C,EAAGr8C,GAAGwH,aAAe80C,EAAGpoC,GAAG1M,WAAY,CAC5E40C,GAAO,CACP,OAGJ,GAAIA,KAAS,EACX,OAAO,EAGX,OAAO,IAIX,OAAOxQ,GA1DT,GAAI3lC,GAAUpG,EAAoB,GAAGoG,QACjCmB,EAAWvH,EAAoB,GAAGuH,QA4DtC7H,GAAQe,KAAO,cACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAAI4O,GAAQ7O,EAAK3B,EAAoB,KACjCuF,EAAQ5D,EAAK3B,EAAoB,KACjCsD,EAAO3B,EAAK3B,EAAoB,KAChCkhB,EAASvf,EAAK3B,EAAoB,KAuBlCgsC,EAAkBpqC,EAAM,mBAC1B6jF,0DAA2D,SAAU/+E,EAAGc,GACtE,GAAsC,IAAlC0Z,EAAO5d,EAAKkE,GAAI,GAAIjC,GAAM,IAC5B,MAAO,EAIT,KAAK,GAFDkC,GAAIrB,EAAQ5D,MAAMqB,QAAQ2D,GAAKA,EAAIA,EAAEoc,WACrClc,EAAQ,EACHvH,EAAE,EAAGA,EAAEsH,EAAEhE,OAAQtD,IACpBqQ,EAAM/I,EAAEtH,GAAIuG,IACdgB,GAGJ,OAAOA,KAIX,OAAOskC,GA7CT,GAAI5lC,GAAUpG,EAAoB,GAAGoG,OAgDrC1G,GAAQe,KAAO,kBACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GA6CpC,QAAS8jF,GAAQ1iF,EAAO2iF,GAEtB,IAAK,GADD5sE,MACK5Y,EAAE,EAAGA,EAAEwlF,EAASliF,OAAQtD,IACX,MAAhBwlF,EAASxlF,IACX4Y,EAAOpU,KAAK3B,EAAM7C,GAGtB,OAAO4Y,GAIT,QAAS6sE,GAAM5iF,GAEb,IAAK,GADDouC,MACKjxC,EAAE6C,EAAMS,OAAO,EAAGtD,EAAE,EAAGA,IAC9B,IAAK,GAAIkU,GAAE,EAAGA,EAAElU,EAAGkU,IACbrR,EAAMqR,GAAG5Q,OAAST,EAAMqR,EAAE,GAAG5Q,SAC/B2tC,EAAOpuC,EAAMqR,GACbrR,EAAMqR,GAAKrR,EAAMqR,EAAE,GACnBrR,EAAMqR,EAAE,GAAK+8B,EAInB,OAAOpuC,GAlET,GAAIuC,GAAQ5D,EAAK3B,EAAoB,KACjCsD,EAAO3B,EAAK3B,EAAoB,KAChCkhB,EAASvf,EAAK3B,EAAoB,KAClC8kB,EAAiBnjB,EAAK3B,EAAoB,KAqB1CisC,EAAcrqC,EAAM,eACtB4iB,iBAAkB,SAAUhd,GAC1B,GAAsC,IAAlC0Z,EAAO5d,EAAKkE,GAAI,GAAIjC,GAAM,IAC5B,QAKF,KAHA,GAAIkC,GAAIrB,EAAQ5D,MAAMqB,QAAQ2D,GAAKA,EAAIA,EAAEoc,WAAWsB,KAAKJ,GACrD/L,KACA7T,EAAS,EACNA,EAAOmF,SAAS,GAAG5G,QAAUgE,EAAEhE,QACpCsV,EAAOpU,KAAK+gF,EAAQj+E,EAAGvC,EAAOmF,SAAS,GAAGb,MAAM,IAAI61B,YACpDn6B,GAGF,OAAO0gF,GAAM7sE,KAIjB,OAAOkzB,GA5CT,GAAI7lC,GAAUpG,EAAoB,GAAGoG,OAyErC1G,GAAQe,KAAO,cACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAAI4O,GAAQ7O,EAAK3B,EAAoB,KACjC8kB,EAAiBnjB,EAAK3B,EAAoB,KAuB1CksC,EAAUtqC,EAAM,WAClB4iB,iBAAkB,SAAUhd,GAC1B,MAAOhF,OAAMqB,QAAQ2D,GAAKpB,EAAQoB,GAAG/D,OAAS2C,EAAQoB,EAAEoc,WAAWngB,QAErEoiF,0BAA2B,SAAUr+E,EAAG6tC,GACtC,GAAIA,KAAW,GAAsB,IAAb7tC,EAAE/D,OACxB,MAAOjB,OAAMqB,QAAQ2D,GAAKpB,EAAQoB,GAAG/D,OAAS2C,EAAQoB,EAAEoc,WAAWngB,MAKnE,KAAK,GAFDgE,GAAIrB,EAAQ5D,MAAMqB,QAAQ2D,GAAKA,EAAIA,EAAEoc,WAAWsB,KAAKJ,GACrDpd,EAAQ,EACHvH,EAAE,EAAGA,EAAEsH,EAAEhE,OAAQtD,IACnBqQ,EAAM/I,EAAEtH,GAAIsH,EAAEtH,EAAE,KACnBuH,GAGJ,OAAOA,KAKb,OAAOwkC,GAhDT,GAAI9lC,GAAUpG,EAAoB,GAAGoG,OAmDrC1G,GAAQe,KAAO,UACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAAI2D,GAAQ5D,EAAK3B,EAAoB,KACjC+J,EAASpI,EAAK3B,EAAoB,KAClCsD,EAAO3B,EAAK3B,EAAoB,KAChCkhB,EAASvf,EAAK3B,EAAoB,KAClC8rC,EAAenqC,EAAK3B,EAAoB,MACxCmsC,EAAmBxqC,EAAK3B,EAAoB,MAuB5CosC,EAAWxqC,EAAM,YACnB+wB,iCAAkC,SAAU0pB,EAAIC,GAC9C,GAAuC,IAAnCp7B,EAAO5d,EAAK+4C,GAAK,GAAI92C,GAAM,IAC7B,MAAOa,GAAQk2C,EAEZ,IAAuC,IAAnCp7B,EAAO5d,EAAKg5C,GAAK,GAAI/2C,GAAM,IAClC,MAAOa,GAAQi2C,EAEjB,IAAIG,GAAKp2C,EAAQi2C,GACbI,EAAKr2C,EAAQk2C,EACjB,OAAOvyC,GAAOoiC,EAAiBqQ,EAAIC,GAAK3Q,EAAa0Q,EAAIC,MAI7D,OAAOrQ,GA7CT,GAAIhmC,GAAUpG,EAAoB,GAAGoG,OAgDrC1G,GAAQe,KAAO,WACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjCL,EAAOD,SACLM,EAAoB,OAMhB,SAAUL,EAAQD,EAASM,GAEjC,YAOA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GA+DpC,QAASkkF,GAAK36E,GACZ,GAGIhL,GAHA4lF,EAAM56E,EAAIA,EACV66E,EAAOx7B,EAAE,GAAG,GAAGu7B,EACfE,EAAOF,CAGX,KAAK5lF,EAAI,EAAGA,EAAI,EAAGA,GAAK,EACtB6lF,GAAQA,EAAOx7B,EAAE,GAAGrqD,IAAM4lF,EAC1BE,GAAQA,EAAOtS,EAAE,GAAGxzE,IAAM4lF,CAE5B,OAAO56E,IAAK66E,EAAOx7B,EAAE,GAAG,KAAOy7B,EAAOtS,EAAE,GAAG,IAU7C,QAASuS,GAAM/6E,GACb,GAEIhL,GAFA6lF,EAAOx7B,EAAE,GAAG,GAAKr/C,EACjB86E,EAAO96E,CAGX,KAAKhL,EAAI,EAAGA,EAAI,EAAGA,GAAK,EACtB6lF,GAAQA,EAAOx7B,EAAE,GAAGrqD,IAAMgL,EAC1B86E,GAAQA,EAAOtS,EAAE,GAAGxzE,IAAMgL,CAE5B,IAAI4N,IAAUitE,EAAOx7B,EAAE,GAAG,KAAOy7B,EAAOtS,EAAE,GAAG,IACzCoS,EAAMt8E,SAAa,GAAJ0B,GAAU,GACzBg7E,GAAOh7E,EAAI46E,IAAQ56E,EAAI46E,EAC3B,OAAO3hF,MAAKggC,KAAK2hD,EAAIA,GAAO3hF,KAAKggC,KAAK+hD,GAAOptE,EAY/C,QAASqtE,GAAMj7E,GACb,GAGIhL,GAHA4lF,EAAM,GAAK56E,EAAIA,GACf66E,EAAOx7B,EAAE,GAAG,GAAKu7B,EACjBE,EAAOF,CAGX,KAAK5lF,EAAI,EAAGA,EAAI,EAAGA,GAAK,EACtB6lF,GAAQA,EAAOx7B,EAAE,GAAGrqD,IAAM4lF,EAC1BE,GAAQA,EAAOtS,EAAE,GAAGxzE,IAAM4lF,CAE5B,IAAIhtE,GAASgtE,GAAOC,EAAOx7B,EAAE,GAAG,KAAOy7B,EAAOtS,EAAE,GAAG,GACnD56D,IAAUstE,EAAQttE,GAAU5N,EAC5B46E,EAAMt8E,SAAa,GAAJ0B,GAAU,EACzB,IAAIg7E,IAAOh7E,EAAI46E,IAAQ56E,EAAI46E,EAC3B,OAAO3hF,MAAKggC,KAAK2hD,EAAIA,GAAO3hF,KAAKggC,KAAK+hD,GAAOptE,EAhG/C,GAAIszB,GAAMzqC,EAAM,OACdsD,OAAU,SAAU9B,GAClB,GAAI+H,GAAI/G,KAAK0F,IAAI1G,EAEjB,OAAI+H,IAAKm7E,EACAt+E,EAAK5E,GAEV+H,GAAKo7E,EACAv+E,EAAK5E,GAAK0iF,EAAK36E,GAEpBA,GAAK,EACAnD,EAAK5E,IAAM,EAAI8iF,EAAM/6E,IAEvBnD,EAAK5E,IAAM,EAAIgjF,EAAMj7E,KAM9BmZ,UAAa,SAAUrjB,GACrB,MAAO,IAAIQ,GAAK6iB,UAAU+nB,EAAIprC,EAAE0lB,cAGlCnC,iBAAkB,SAAUvjB,GAC1B,MAAO8B,GAAQ9B,EAAGorC,KA6EtB,OAFAA,GAAI1pC,OAASE,EAAG,gCAETwpC,EAlIT,GAAItpC,GAAU/C,EAAoB,GAC9BgI,EAAOhI,EAAoB,GAAGgI,KAwI9Bu+E,EAAS,OAMTF,EAAQ,kBAOR77B,IACF,mBAAwB,mBACxB,iBAAwB,mBACxB,qBAEA,kBAAwB,kBACxB,kBAAwB,kBACxB,iBAAwB,mBACxB,mBAAwB,mBACxB,wBAEA,mBAAwB,mBACxB,mBAAwB,oBACxB,qBAAwB,sBAQtBmpB,IACF,mBAAwB,mBACxB,mBAAwB,oBAExB,mBAAwB,kBACxB,kBAAwB,mBACxB,mBAAwB,kBACxB,mBAAwB,qBAExB,kBAAwB,mBACxB,kBAAwB,mBACxB,uBAQE2S,EAAUliF,KAAKwG,IAAI,EAAG,GAG1BlL,GAAQe,KAAO,MACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjCL,EAAOD,SACLM,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,OAMhB,SAAUL,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GA4CpC,QAAS4kF,GAAKxjF,GAGZ,GAFAA,EAAQoD,EAAQpD,EAAM4O,WAED,IAAjB5O,EAAMS,OACR,KAAM,IAAImC,OAAM,+DAGlB,IAAI6gF,GAAMj6C,EAAOxpC,EACjB,OAAOwpC,GAAOrpC,EAAIH,EAAO,SAAU8C,GACjC,MAAOgE,GAAIqG,EAASrK,EAAO2gF,OApD/B,GAAI38E,GAAWnI,EAAK3B,EAAoB,KACpCmD,EAAWxB,EAAK3B,EAAoB,MACpCwsC,EAAW7qC,EAAK3B,EAAoB,MACpCmQ,EAAWxO,EAAK3B,EAAoB,KA0BpCssC,EAAM1qC,EAAM,OAEd4iB,iBAAkBgiE,EAGlBz1C,MAAO,SAAUn8B,GACf,MAAO4xE,GAAK5xE,KAMhB,OAFA03B,GAAI3pC,MAAQqD,OAELsmC,EA5CT,GAAIlmC,GAAUpG,EAAoB,GAAGoG,OA4DrC1G,GAAQe,KAAO,MACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GA4CpC,QAAS8kF,GAAM9rE,GACbA,EAASxU,EAAQwU,EAAOhJ,UACxB,IAAImrB,GAAMniB,EAAOnX,MACjB,IAAW,GAAPs5B,EACF,KAAM,IAAIn3B,OAAM,0CAGlB,IAAI8B,MACA+kC,KACAnhC,EAAM,CACV,KAAK,GAAInL,KAAKya,GACNA,EAAOza,IAAMuH,KACjBA,EAAMkT,EAAOza,IAAM,GAErBuH,EAAMkT,EAAOza,MACTuH,EAAMkT,EAAOza,KAAOmL,EACtBmhC,EAAK9nC,KAAKiW,EAAOza,IAEVuH,EAAMkT,EAAOza,IAAMmL,IAC1BA,EAAM5D,EAAMkT,EAAOza,IACnBssC,GAAQ7xB,EAAOza,IAGnB,OAAOssC,GAvCT,GAAIA,GAAO7qC,EAAM,QACf4iB,iBAAmBkiE,EAEnB31C,MAAO,SAAUn8B,GACf,MAAO8xE,GAAM9xE,KAIjB,OAAO63B,GAtCT,GAAIrmC,GAAUpG,EAAoB,GAAGoG,OAyErC1G,GAAQe,KAAO,OACff,EAAQD,QAAUA,GAIZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAuDpC,QAAS+kF,GAAM3jF,GACb,GAAI0pC,GAAO1mC,MAMX,IAJA+pB,EAAY/sB,EAAO,SAAU8C,GAC3B4mC,EAAiB1mC,SAAT0mC,EAAsB5mC,EAAQ+J,EAAS68B,EAAM5mC,KAG1CE,SAAT0mC,EACF,KAAM,IAAI9mC,OAAM,0CAGlB,OAAO8mC,GAjET,GAAI78B,GAAWlO,EAAK3B,EAAoB,KA2BpC0sC,EAAO9qC,EAAM,QAEf4iB,iBAAkBmiE,EAGlB71C,qCAAsC,SAAU9tC,EAAOO,GAErD,KAAM,IAAIqC,OAAM,sCAKlBmrC,MAAO,SAAUn8B,GACf,MAAO+xE,GAAM/xE,KAMjB,OAFA83B,GAAK/pC,MAAQqD,OAEN0mC,EAjDT,GAAI3c,GAAc/vB,EAAoB,GAwEtCN,GAAQe,KAAO,OACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAQA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAwCpC,QAAS+qC,GAAY7qC,EAAM8kF,EAASC,GAClC,GAAIC,GAASC,EAAStuD,CAEtB,IAAI5vB,UAAUpF,OAAS,GAAKoF,UAAUpF,OAAS,EAC7C,KAAM,IAAIyF,aAAY,wDAGxB,IAAI+yB,EAAan6B,GAAO,CAEtB,GADA+kF,EAASA,IAAU,EACG,iBAAXA,GAAsB,CAE/B,GADAE,EAAUjlF,EAAK8P,UACXpM,EAASohF,GAAU,CACrB,GAAIA,EAAU,EACZ,KAAM,IAAIhhF,OAAM,8BAGlB,IAAIghF,GAAW,EAEb,MAAOI,GAAaD,EAASH,EAASC,EAGxC,IAAID,EAAU,EAAG,CAEf,IAAKnhF,EAAUmhF,GACb,KAAM,IAAIhhF,OAAM,+BAGlB,IAAIqhF,GAAWL,EAAU,CACzBE,GAAU,GAAItkF,OAAMokF,EACpB,KAAK,GAAIzmF,GAAI,EAAGA,EAAIymF,GAClBE,EAAQ3mF,GAAK6mF,EAAaD,IAAY5mF,EAAK8mF,EAAUJ,EAEvD,OAAOC,IAIX,GAAIrlF,EAAKiQ,YAAYk1E,GAAU,CAC7B,GAAIA,EAAQ1uD,aACV,KAAM,IAAItyB,OAAM,8BAKlB,IAFA6yB,EAAM,GAAImuD,GAAQx0E,YAAY,GAE1Bw0E,EAAQrgE,IAAIkS,GAEd,MAAOuuD,GAAaD,EAASH,EAASC,EAGxC,IAAID,EAAQvgE,GAAGoS,GAAM,CAEnB,IAAKmuD,EAAQnhF,YACX,KAAM,IAAIG,OAAM,+BAKlB,IAAIshF,GAAON,EAAQjgE,UACnB,IAAIugE,EAAO,WACT,KAAM,IAAIthF,OAAM,oFAGlB,IAAIqhF,GAAW,GAAIxlF,GAAK6iB,UAAU4iE,EAAO,EACzCJ,GAAU,GAAItkF,OAAM0kF,EACpB,KAAK,GAAI/mF,GAAI,EAAGA,EAAI+mF,GAClBJ,EAAQ3mF,GAAK6mF,EAAaD,EAAS,GAAItlF,GAAK6iB,YAAYnkB,GAAG6f,IAAIinE,GAAWJ;AAE5E,MAAOC,IAIX,GAAItkF,MAAMqB,QAAQ+iF,GAAU,CAE1BE,EAAU,GAAItkF,OAAMokF,EAAQnjF,OAC5B,KAAK,GAAItD,GAAI,EAAGA,EAAI2mF,EAAQrjF,SAAUtD,EAAG,CACvC,GAAIgnF,GAAWP,EAAQzmF,EACvB,IAAIqF,EAAS2hF,IACX,GAAIA,EAAW,GAAKA,EAAW,EAC7B,KAAM,IAAIvhF,OAAM,sDAEb,CAAA,IAAInE,EAAKiQ,YAAYy1E,GAM1B,KAAM,IAAIzhF,WAAU,sDAJpB,IADA+yB,EAAM,GAAI0uD,GAAS/0E,YAAY,GAC3B+0E,EAASjvD,cAAgBivD,EAAS9gE,GAAGoS,GACvC,KAAM,IAAI7yB,OAAM,kDAMpBkhF,EAAQ3mF,GAAK6mF,EAAaD,EAASI,EAAUN,GAE/C,MAAOC,GAGT,KAAM,IAAIphF,WAAU,uDAGtB,KAAM,IAAIA,WAAU,uDAGtB,KAAM,IAAIA,WAAU,uDAYtB,QAASshF,GAAahkF,EAAOokF,EAAMP,GACjC,GAAI9/E,GAAOX,EAAQpD,GACfQ,EAAMuD,EAAKtD,MACf,IAAY,IAARD,EACF,KAAM,IAAIoC,OAAM,iDAGlB,IAAIJ,EAAS4hF,GAAO,CAClB,GAAI7hF,GAAQ6hF,GAAQ5jF,EAAI,GACpB6jF,EAAW9hF,EAAQ,CACvB,IAAiB,IAAb8hF,EAAgB,CAClB,GAAIvhF,GAAQ+gF,EAAS9/E,EAAKxB,GAAS+lC,EAAgBvkC,EAAMxB,EAIzD,OAFAH,GAASU,GAEFA,EAGT,GAEI82C,GAAMzI,EAFNmzC,EAAcljF,KAAKw8B,MAAMr7B,EAG7B,IAAIshF,EACFjqC,EAAO71C,EAAKugF,GACZnzC,EAAQptC,EAAKugF,EAAY,OACpB,CACLnzC,EAAQ7I,EAAgBvkC,EAAMugF,EAAY,GAG1C1qC,EAAO71C,EAAKugF,EACZ,KAAK,GAAInnF,GAAI,EAAGA,EAAImnF,IAAennF,EAC7BklB,EAAQte,EAAK5G,GAAIy8C,GAAQ,IAC3BA,EAAO71C,EAAK5G,IASlB,MAJAiF,GAASw3C,GACTx3C,EAAS+uC,GAGFjkC,EAAIL,EAAS+sC,EAAM,EAAIyqC,GAAWx3E,EAASskC,EAAOkzC,IAI3D,GAAI9hF,GAAQ6hF,EAAKllE,MAAM1e,EAAI,EAC3B,IAAI+B,EAAME,YAAa,CACrBF,EAAQA,EAAMohB,UACd,IAAI7gB,GAAQ+gF,EAAS9/E,EAAKxB,GAAS+lC,EAAgBvkC,EAAMxB,EAIzD,OAFAH,GAASU,GAEFA,EAGT,GAII82C,GAAMzI,EAJNmzC,EAAc/hF,EAAMq7B,QACpBymD,EAAW9hF,EAAMkb,MAAM6mE,GACvBC,EAAoBD,EAAY3gE,UAGpC,IAAIkgE,EACFjqC,EAAO71C,EAAKwgF,GACZpzC,EAAQptC,EAAKwgF,EAAkB,OAC1B,CACLpzC,EAAQ7I,EAAgBvkC,EAAMwgF,EAAkB,GAGhD3qC,EAAO71C,EAAKwgF,EACZ,KAAK,GAAIpnF,GAAI,EAAGA,EAAIonF,IAAqBpnF,EACnCklB,EAAQte,EAAK5G,GAAIy8C,GAAQ,IAC3BA,EAAO71C,EAAK5G,IAKlBiF,EAASw3C,GACTx3C,EAAS+uC,EAGT,IAAI1b,GAAM,GAAI4uD,GAASj1E,YAAY,EACnC,OAAOlC,GAAIL,EAAS+sC,EAAMnkB,EAAIhY,MAAM4mE,IAAYx3E,EAASskC,EAAOkzC,IArOlE,GAAIn3E,GAAMvO,EAAK3B,EAAoB,KAC/B6P,EAAWlO,EAAK3B,EAAoB,KACpCsrC,EAAkB3pC,EAAK3B,EAAoB,KAC3CqlB,EAAU1jB,EAAK3B,EAAoB,KA2OnCoF,EAAWxD,GACb4lF,4BAA6B,SAAUpkF,GACrC,MAAOA,KAIX,OAAOupC,GA1PT,GAAIlnC,GAAYzF,EAAoB,GAAGyF,UACnCD,EAAWxF,EAAoB,GAAGwF,SAClCY,EAAUpG,EAAoB,GAAGoG,QACjC61B,EAAej8B,EAAoB,GA0PvCN,GAAQe,KAAO,cACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAGA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GA6DpC,QAAS6lF,GAAKzkF,EAAOk6C,GACnB,GAAoB,GAAhBl6C,EAAMS,OACR,KAAM,IAAIyF,aAAY,4DAGxB,OAAO+uB,GAAKklB,EAAS15B,MAAM,KAAM5a,YAjEnC,GAAIovB,GAAat2B,EAAK3B,EAAoB,KACtCm9C,EAAax7C,EAAK3B,EAAoB,MA0CtC4sC,EAAMhrC,EAAM,OAEd4iB,iBAAkBijE,EAGlBhlF,yBAA0BglF,EAG1B12C,MAAO,SAAUn8B,GACf,MAAO6yE,GAAK7yE,KAMhB,OAFAg4B,GAAIjqC,MAAQqD,OAEL4mC,EAWTltC,EAAQe,KAAO,MACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjCL,EAAOD,SACLM,EAAoB,IACpBA,EAAoB,OAMhB,SAAUL,EAAQD,EAASM,GAEjC,YAMA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAuCpC,GAAI8lF,GAAQ9lF,EAAO,SACjBq0C,iBAAkB0xC,EAClBC,kCAAmCD,GAKrC,OAFAD,GAAM/kF,MAAQqD,OAEP0hF,EAWT,QAASC,GAAOvwD,EAAUxc,EAAQ3S,GAChC,MAAOmvB,GAASzuB,QAAQ,eAAgB,SAAUk/E,EAAU71E,GAGtD,IAFA,GAAI6L,GAAO7L,EAAIxI,MAAM,KACjB1D,EAAQ8U,EAAOiD,EAAKnZ,SACjBmZ,EAAKpa,QAAoBuC,SAAVF,GAAqB,CACzC,GAAI0Z,GAAI3B,EAAKnZ,OACboB,GAAQ0Z,EAAI1Z,EAAM0Z,GAAK1Z,EAAQ,IAGjC,MAAcE,UAAVF,EACGuP,EAASvP,GAILA,EAHA/D,EAAO+D,EAAOmC,GAOlB4/E,IA9Ef,GAAIxyE,GAAWrV,EAAoB,GAAGqV,SAClCtT,EAAS/B,EAAoB,GAAG+B,MAkFpCrC,GAAQe,KAAO,QACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjCL,EAAOD,SACLM,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,OAMhB,SAAUL,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAyBpC,GAAIyiC,GAAOziC,EAAM,QACfsD,OAAU,SAAU9B,GAClB,MAAKA,KAAK,GAAMA,GAAK,GAAM1B,EAAOkwB,YACzBxtB,KAAKigC,KAAKjhC,GAGV,GAAI3B,GAAK4iB,QAAQjhB,EAAG,GAAGihC,QAIlChgB,QAAW,SAAUjhB,GACnB,MAAOA,GAAEihC,QAGX/f,UAAa,SAAUlhB,GACrB,MAAOA,GAAEihC,QAGX7f,iBAAkB,SAAUphB,GAC1B,MAAOL,GAAQK,EAAGihC,KAMtB,OAFAA,GAAK1hC,OAASE,EAAG,uCAEVwhC,EApDT,GAAIthC,GAAU/C,EAAoB,EAuDlCN,GAAQe,KAAO,OACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAyBpC,GAAIkrC,GAAOlrC,EAAM,QACfsD,OAAU,SAAU9B,GAClB,MAAOgB,MAAKkpC,KAAK,EAAIlqC,IAGvBihB,QAAW,SAAUjhB,GACnB,MAAOA,GAAE0pC,QAGXxoB,UAAa,SAAUlhB,GACrB,MAAO,IAAI3B,GAAK6iB,UAAU,GAAGtE,IAAI5c,GAAGkqC,QAGtC9oB,iBAAkB,SAAUphB,GAC1B,MAAOL,GAAQK,EAAG0pC,KAMtB,OAFAA,GAAKnqC,OAASE,EAAG,uCAEViqC,EA/CT,GAAI/pC,GAAU/C,EAAoB,EAkDlCN,GAAQe,KAAO,OACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAuBpC,GAAImrC,GAAQnrC,EAAM,SAChBsD,OAAU,SAAU9B,GAClB,MAAIA,IAAK,GAAKA,IAAK,GAAM1B,EAAOkwB,YACvB9pB,SAAS1E,IAAMgB,KAAK2+B,KAAK3/B,EAAE,GAAGA,GAAKgB,KAAK2+B,IAAI3/B,GAAGA,EAAE,KAAO,EAAI,EAE9D,GAAI3B,GAAK4iB,QAAQjhB,EAAG,GAAG2pC,SAGhC1oB,QAAW,SAAUjhB,GACnB,MAAOA,GAAE2pC,SAGXzoB,UAAa,SAAUlhB,GACrB,MAAO,IAAI3B,GAAK6iB,UAAU,GAAGtE,IAAI5c,GAAGmqC,SAGtC/oB,iBAAkB,SAAUphB,GAC1B,MAAOL,GAAQK,EAAG2pC,KAMtB,OAFAA,GAAMpqC,OAASE,EAAG,wCAEXkqC,EAhDT,GAAIhqC,GAAU/C,EAAoB,EAmDlCN,GAAQe,KAAO,QACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAMA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAyBpC,GAAIorC,GAAOprC,EAAM,QACfsD,OAAU,SAAU9B,GAClB,MAAIA,KAAK,GAAMA,GAAK,GAAK1B,EAAOkwB,YACvBxtB,KAAKgpC,KAAK,EAAIhqC,GAEhB,GAAI3B,GAAK4iB,QAAQjhB,EAAG,GAAG4pC,QAGhC3oB,QAAW,SAAUjhB,GACnB,MAAOA,GAAE4pC,QAGX1oB,UAAa,SAAUlhB,GACrB,MAAO,IAAI3B,GAAK6iB,UAAU,GAAGtE,IAAI5c,GAAGgqC,QAGtC5oB,iBAAkB,SAAUphB,GAC1B,MAAOL,GAAQK,EAAG4pC,KAMtB,OAFAA,GAAKrqC,OAASE,EAAG,uCAEVmqC,EAnDT,GAAIjqC,GAAU/C,EAAoB,EAsDlCN,GAAQe,KAAO,OACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAuBpC,GAAIqrC,GAAQrrC,EAAM,SAChBsD,OAAU,SAAU9B,GAElB,MADAA,GAAI,EAAIA,EACDgB,KAAK2+B,IAAI3/B,EAAIgB,KAAK6zB,KAAK70B,EAAEA,EAAI,KAGtCihB,QAAW,SAAUjhB,GACnB,MAAOA,GAAE6pC,SAGX3oB,UAAa,SAAUlhB,GACrB,MAAO,IAAI3B,GAAK6iB,UAAU,GAAGtE,IAAI5c,GAAGiqC,SAGtC7oB,iBAAkB,SAAUphB,GAC1B,MAAOL,GAAQK,EAAG6pC,KAMtB,OAFAA,GAAMtqC,OAASE,EAAG,gDAEXoqC,EA9CT,GAAIlqC,GAAU/C,EAAoB,EAiDlCN,GAAQe,KAAO,QACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAyBpC,GAAIsrC,GAAOtrC,EAAM,QACfsD,OAAU,SAAU9B,GAClB,MAAIA,KAAK,GAAMA,GAAK,GAAK1B,EAAOkwB,YACvBxtB,KAAKigC,KAAK,EAAIjhC,GAEhB,GAAI3B,GAAK4iB,QAAQjhB,EAAG,GAAG8pC,QAGhC7oB,QAAW,SAAUjhB,GACnB,MAAOA,GAAE8pC,QAGX5oB,UAAa,SAAUlhB,GACrB,MAAO,IAAI3B,GAAK6iB,UAAU,GAAGtE,IAAI5c,GAAGihC,QAGtC7f,iBAAkB,SAAUphB,GAC1B,MAAOL,GAAQK,EAAG8pC,KAMtB,OAFAA,GAAKvqC,OAASE,EAAG,uCAEVqqC,EAlDT,GAAInqC,GAAU/C,EAAoB,EAqDlCN,GAAQe,KAAO,OACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAuBIurC,IAvBQvrC,EAAMiS,KAAKlS,EAAK3B,EAAoB,OAAQ,YAuB5C4B,EAAM,SAChBsD,OAAU,SAAU9B,GAClB,GAAKA,GAAK,GAAKA,IAAK,GAAO1B,EAAOkwB,YAAa,CAC7CxuB,EAAI,EAAIA,CAER,IAAIq4B,GAAMr3B,KAAK6zB,KAAK70B,EAAEA,EAAI,EAC1B,OAAIA,GAAI,GAAK1B,EAAOkwB,YACXxtB,KAAK2+B,IAAItH,EAAMr4B,GAGjB,GAAI3B,GAAK4iB,QAAQjgB,KAAK2+B,IAAItH,EAAMr4B,GAAIgB,KAAK6+B,IAGlD,MAAO,IAAIxhC,GAAK4iB,QAAQjhB,EAAG,GAAG+pC,SAGhC9oB,QAAW,SAAUjhB,GACnB,MAAOA,GAAE+pC,SAGX7oB,UAAa,SAAUlhB,GACrB,MAAO,IAAI3B,GAAK6iB,UAAU,GAAGtE,IAAI5c,GAAGypC,SAGtCroB,iBAAkB,SAAUphB,GAC1B,MAAOL,GAAQK,EAAG+pC,MAMtB,OAFAA,GAAMxqC,OAASE,EAAG,gDAEXsqC,EAzDT,GAAIpqC,GAAU/C,EAAoB,EA4DlCN,GAAQe,KAAO,QACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAyBpC,GAAIwrC,GAAOxrC,EAAM,QACfsD,OAAU,SAAU9B,GAClB,MAAKA,KAAK,GAAMA,GAAK,GAAM1B,EAAOkwB,YACzBxtB,KAAKgpC,KAAKhqC,GAGV,GAAI3B,GAAK4iB,QAAQjhB,EAAG,GAAGgqC,QAIlC/oB,QAAW,SAAUjhB,GACnB,MAAOA,GAAEgqC,QAGX9oB,UAAa,SAAUlhB,GACrB,MAAOA,GAAEgqC,QAGX5oB,iBAAkB,SAAUphB,GAE1B,MAAOL,GAAQK,EAAGgqC,GAAM,KAM5B,OAFAA,GAAKzqC,OAASE,EAAG,uCAEVuqC,EArDT,GAAIrqC,GAAU/C,EAAoB,EAwDlCN,GAAQe,KAAO,OACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAuBpC,GAAIyrC,GAAQzrC,EAAM,SAChBsD,OAAUd,KAAKipC,OAAS,SAAUjqC,GAChC,MAAOgB,MAAK2+B,IAAI3+B,KAAK6zB,KAAK70B,EAAEA,EAAI,GAAKA,IAGvCihB,QAAW,SAAUjhB,GACjB,MAAOA,GAAEiqC,SAGb/oB,UAAa,SAAUlhB,GACrB,MAAOA,GAAEiqC,SAGX7oB,iBAAkB,SAAUphB,GAE1B,MAAOL,GAAQK,EAAGiqC,GAAO,KAM7B,OAFAA,GAAM1qC,OAASE,EAAG,wCAEXwqC,EA9CT,GAAItqC,GAAU/C,EAAoB,EAiDlCN,GAAQe,KAAO,QACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAyBpC,GAAI0rC,GAAO1rC,EAAM,QACfsD,OAAU,SAAU9B,GAClB,MAAOgB,MAAKkpC,KAAKlqC,IAGnBihB,QAAW,SAAUjhB,GACnB,MAAOA,GAAEkqC,QAGXhpB,UAAa,SAAUlhB,GACrB,MAAOA,GAAEkqC,QAGX9oB,iBAAkB,SAAUphB,GAE1B,MAAOL,GAAQK,EAAGkqC,GAAM,KAM5B,OAFAA,GAAK3qC,OAASE,EAAG,uCAEVyqC,EAhDT,GAAIvqC,GAAU/C,EAAoB,EAmDlCN,GAAQe,KAAO,OACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAGA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAEpC,GAAIQ,GAAST,EAAK3B,EAAoB,IAElCqiB,EAAc1gB,EAAK3B,EAAoB,KACvCgf,EAAcrd,EAAK3B,EAAoB,KACvC06C,EAAc/4C,EAAK3B,EAAoB,MACvC0X,EAAc/V,EAAK3B,EAAoB,KACvCyf,EAAc9d,EAAK3B,EAAoB,KACvC8U,EAAcnT,EAAK3B,EAAoB,IACvCkT,EAAcvR,EAAK3B,EAAoB,IA+BvCwtC,EAAQ5rC,EAAM,SAEhBkV,iBAAkB1S,KAAKopC,MAMvBz2B,uBAAwB,SAAU5L,EAAG/H,GACnC,MAAO3B,GAAK6iB,UAAUkpB,MAAMriC,EAAG/H,IAGjC2U,iBAAkB,SAAU3U,EAAG+H,GAE7B,GAAI5K,EAGJ,QAAQ6C,EAAEjB,WACR,IAAK,SACH,OAAQgJ,EAAEhJ,WACR,IAAK,SAEH5B,EAAIm6C,EAAYt3C,EAAG+H,EAAGqiC,GAAO,EAC7B,MACF,SAEEjtC,EAAI8hB,EAAYlX,EAAG/H,EAAGoqC,GAAO,GAGjC,KACF,SACE,OAAQriC,EAAEhJ,WACR,IAAK,SAEH5B,EAAIye,EAAY5b,EAAG+H,EAAGqiC,GAAO,EAC7B,MACF,SAEEjtC,EAAIuU,EAAY1R,EAAG+H,EAAGqiC,IAK9B,MAAOjtC,IAGTqX,eAAgB,SAAUxU,EAAG+H,GAE3B,MAAOqiC,GAAMprC,EAAOgB,GAAIhB,EAAO+I,IAAIyG,WAGrC2G,gBAAiB,SAAUnV,EAAG+H,GAE5B,MAAOqiC,GAAMprC,EAAOgB,GAAI+H,IAG1BmN,gBAAiB,SAAUlV,EAAG+H,GAE5B,MAAOqiC,GAAMpqC,EAAGhB,EAAO+I,KAGzB45B,6BAA8B,SAAU3hC,EAAG+H,GAEzC,GAAI5K,EAEJ,QAAQ6C,EAAEjB,WACR,IAAK,SACH5B,EAAImX,EAAYtU,EAAG+H,EAAGqiC,GAAO,EAC7B,MACF,SACEjtC,EAAI2S,EAAY9P,EAAG+H,EAAGqiC,GAAO,GAGjC,MAAOjtC,IAGTo5E,6BAA8B,SAAUv2E,EAAG+H,GAEzC,GAAI5K,EAEJ,QAAQ4K,EAAEhJ,WACR,IAAK,SACH5B,EAAIkf,EAAYtU,EAAG/H,EAAGoqC,GAAO,EAC7B,MACF,SACEjtC,EAAI2S,EAAY/H,EAAG/H,EAAGoqC,GAAO,GAGjC,MAAOjtC,IAGT0kC,4BAA6B,SAAU7hC,EAAG+H,GAExC,MAAO+H,GAAY9Q,EAAOgB,GAAI+H,EAAGqiC,GAAO,GAAO57B,WAGjDgoE,4BAA6B,SAAUx2E,EAAG+H,GAExC,MAAO+H,GAAY9Q,EAAO+I,GAAI/H,EAAGoqC,GAAO,GAAM57B,YAMlD,OAFA47B,GAAM7qC,OAASG,EAAG,yCAEX0qC,EAGT9tC,EAAQe,KAAO,QACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAsBpC,GAAI2rC,GAAQ3rC,EAAM,SAChBsD,OAAU,SAAU9B,GAClB,MAAKA,IAAK,GAAKA,IAAK,GAAO1B,EAAOkwB,YACzBk2D,EAAO1kF,GAET,GAAI3B,GAAK4iB,QAAQjhB,EAAG,GAAGmqC,SAGhClpB,QAAW,SAAUjhB,GACnB,MAAOA,GAAEmqC,SAGXjpB,UAAa,SAAUlhB,GACrB,MAAOA,GAAEmqC,SAGX/oB,iBAAkB,SAAUphB,GAE1B,MAAOL,GAAQK,EAAGmqC,GAAO,KAM7B,OAFAA,GAAM5qC,OAASE,EAAG,wCAEX0qC,EAhDT,GAAIxqC,GAAU/C,EAAoB,GAyD9B8nF,EAAS1jF,KAAKmpC,OAAS,SAAUnqC,GACnC,MAAOgB,MAAK2+B,KAAK,EAAI3/B,IAAI,EAAIA,IAAM,EAGrC1D,GAAQe,KAAO,QACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GA4BpC,GAAIohC,GAAMphC,EAAM,OACdsD,OAAUd,KAAK4+B,IAEf3e,QAAW,SAAUjhB,GACnB,MAAOA,GAAE4/B,OAGX1e,UAAa,SAAUlhB,GACrB,MAAOA,GAAE4/B,OAGXve,KAAQ,SAAUrhB,GAChB,IAAKA,EAAEwgC,QAAQniC,EAAKgjB,KAAK20C,WAAWuG,OAClC,KAAM,IAAIj6D,WAAW,mCAEvB,OAAOs9B,GAAI5/B,EAAE0C,QAGf0e,iBAAkB,SAAUphB,GAC1B,MAAOL,GAAQK,EAAG4/B,KAMtB,OAFAA,GAAIrgC,OAASE,EAAG,kCAETmgC,EAvDT,GAAIjgC,GAAU/C,EAAoB,EA0DlCN,GAAQe,KAAO,MACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAsBpC,GAAI6rC,GAAO7rC,EAAM,QACfsD,OAAU6iF,EAEV1jE,QAAW,SAAUjhB,GACnB,MAAOA,GAAEqqC,QAGXnpB,UAAa,SAAUlhB,GACrB,MAAOA,GAAEqqC,QAGXhpB,KAAQ,SAAUrhB,GAChB,IAAKA,EAAEwgC,QAAQniC,EAAKgjB,KAAK20C,WAAWuG,OAClC,KAAM,IAAIj6D,WAAW,oCAEvB,OAAO+nC,GAAKrqC,EAAE0C,QAGhB0e,iBAAkB,SAAUphB,GAC1B,MAAOL,GAAQK,EAAGqqC,KAMtB,OAFAA,GAAK9qC,OAASE,EAAG,mCAEV4qC,EAjDT,GAAI1qC,GAAU/C,EAAoB,GA0D9B+nF,EAAQ3jF,KAAKqpC,MAAQ,SAAUrqC,GACjC,OAAQgB,KAAKggC,IAAIhhC,GAAKgB,KAAKggC,KAAKhhC,IAAM,EAGxC1D,GAAQe,KAAO,OACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAsBpC,GAAI8rC,GAAM9rC,EAAM,OACdsD,OAAU,SAAU9B,GAClB,MAAO,GAAIgB,KAAK8pC,IAAI9qC,IAGtBihB,QAAW,SAAUjhB,GACnB,MAAOA,GAAEsqC,OAGXppB,UAAa,SAAUlhB,GACrB,MAAO,IAAI3B,GAAK6iB,UAAU,GAAGtE,IAAI5c,EAAE8qC,QAGrCzpB,KAAQ,SAAUrhB,GAChB,IAAKA,EAAEwgC,QAAQniC,EAAKgjB,KAAK20C,WAAWuG,OAClC,KAAM,IAAIj6D,WAAW,mCAEvB,OAAOgoC,GAAItqC,EAAE0C,QAGf0e,iBAAkB,SAAUphB,GAC1B,MAAOL,GAAQK,EAAGsqC,KAMtB,OAFAA,GAAI/qC,OAASE,EAAG,kCAET6qC,EAnDT,GAAI3qC,GAAU/C,EAAoB,EAsDlCN,GAAQe,KAAO,MACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAwBpC,GAAI+rC,GAAO/rC,EAAM,QACfsD,OAAU8iF,EAEV3jE,QAAW,SAAUjhB,GACnB,MAAOA,GAAEuqC,QAGXrpB,UAAa,SAAUlhB,GACrB,MAAO,IAAI3B,GAAK6iB,UAAU,GAAGtE,IAAI5c,EAAE+qC,SAGrC1pB,KAAQ,SAAUrhB,GAChB,IAAKA,EAAEwgC,QAAQniC,EAAKgjB,KAAK20C,WAAWuG,OAClC,KAAM,IAAIj6D,WAAW,oCAEvB,OAAOioC,GAAKvqC,EAAE0C,QAGhB0e,iBAAkB,SAAUphB,GAC1B,MAAOL,GAAQK,EAAGuqC,KAMtB,OAFAA,GAAKhrC,OAASE,EAAG,mCAEV8qC,EAST,QAASq6C,GAAM5kF,GACb,GAAIsD,GAAItC,KAAKggC,IAAI,EAAIhhC,EACrB,QAAQsD,EAAI,IAAMA,EAAI,GA9DxB,GAAI3D,GAAU/C,EAAoB,EAiElCN,GAAQe,KAAO,OACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAsBpC,GAAIgsC,GAAMhsC,EAAM,OACdsD,OAAU,SAAU9B,GAClB,MAAO,GAAIgB,KAAK4pC,IAAI5qC,IAGtBihB,QAAW,SAAUjhB,GACnB,MAAOA,GAAEwqC,OAGXtpB,UAAa,SAAUlhB,GACrB,MAAO,IAAI3B,GAAK6iB,UAAU,GAAGtE,IAAI5c,EAAE4qC,QAGrCvpB,KAAQ,SAAUrhB,GAChB,IAAKA,EAAEwgC,QAAQniC,EAAKgjB,KAAK20C,WAAWuG,OAClC,KAAM,IAAIj6D,WAAW,mCAEvB,OAAOkoC,GAAIxqC,EAAE0C,QAGf0e,iBAAkB,SAAUphB,GAC1B,MAAOL,GAAQK,EAAGwqC,KAMtB,OAFAA,GAAIjrC,OAASE,EAAG,kCAET+qC,EAnDT,GAAI7qC,GAAU/C,EAAoB,EAsDlCN,GAAQe,KAAO,MACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAMA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAwBpC,GAAIisC,GAAOjsC,EAAM,QACfsD,OAAU+iF,EAEV5jE,QAAW,SAAUjhB,GACnB,MAAOA,GAAEyqC,QAGXvpB,UAAa,SAAUlhB,GACrB,MAAO,IAAI3B,GAAK6iB,UAAU,GAAGtE,IAAI5c,EAAE6qC,SAGrCxpB,KAAQ,SAAUrhB,GAChB,IAAKA,EAAEwgC,QAAQniC,EAAKgjB,KAAK20C,WAAWuG,OAClC,KAAM,IAAIj6D,WAAW,oCAEvB,OAAOmoC,GAAKzqC,EAAE0C,QAGhB0e,iBAAkB,SAAUphB,GAC1B,MAAOL,GAAQK,EAAGyqC,KAMtB,OAFAA,GAAKlrC,OAASE,EAAG,2CAEVgrC,EAST,QAASo6C,GAAM7kF,GAEb,MAAS,IAALA,EACK4H,OAAOwvE,kBAGPp2E,KAAK0F,IAAI,GAAK1F,KAAKggC,IAAIhhC,GAAKgB,KAAKggC,KAAKhhC,KAAO4E,EAAK5E,GAnE7D,GAAIL,GAAU/C,EAAoB,GAC9BgI,EAAOhI,EAAoB,GAAGgI,IAsElCtI,GAAQe,KAAO,OACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAsBpC,GAAIksC,GAAMlsC,EAAM,OACdsD,OAAU,SAAU9B,GAClB,MAAO,GAAIgB,KAAK4+B,IAAI5/B,IAGtBihB,QAAW,SAAUjhB,GACnB,MAAOA,GAAE0qC,OAGXxpB,UAAa,SAAUlhB,GACrB,MAAO,IAAI3B,GAAK6iB,UAAU,GAAGtE,IAAI5c,EAAE4/B,QAGrCve,KAAQ,SAAUrhB,GAChB,IAAKA,EAAEwgC,QAAQniC,EAAKgjB,KAAK20C,WAAWuG,OAClC,KAAM,IAAIj6D,WAAW,mCAEvB,OAAOooC,GAAI1qC,EAAE0C,QAGf0e,iBAAkB,SAAUphB,GAC1B,MAAOL,GAAQK,EAAG0qC,KAMtB,OAFAA,GAAInrC,OAASE,EAAG,kCAETirC,EAnDT,GAAI/qC,GAAU/C,EAAoB,EAsDlCN,GAAQe,KAAO,MACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAwBpC,GAAImsC,GAAOnsC,EAAM,QACfsD,OAAUgjF,EAEV7jE,QAAW,SAAUjhB,GACnB,MAAOA,GAAE2qC,QAGXzpB,UAAa,SAAUlhB,GACrB,MAAO,IAAI3B,GAAK6iB,UAAU,GAAGtE,IAAI5c,EAAEqqC,SAGrChpB,KAAQ,SAAUrhB,GAChB,IAAKA,EAAEwgC,QAAQniC,EAAKgjB,KAAK20C,WAAWuG,OAClC,KAAM,IAAIj6D,WAAW,oCAEvB,OAAOqoC,GAAK3qC,EAAE0C,QAGhB0e,iBAAkB,SAAUphB,GAC1B,MAAOL,GAAQK,EAAG2qC,KAMtB,OAFAA,GAAKprC,OAASE,EAAG,2CAEVkrC,EAST,QAASm6C,GAAM9kF,GACb,MAAO,IAAKgB,KAAKggC,IAAIhhC,GAAKgB,KAAKggC,KAAKhhC,IA7DtC,GAAIL,GAAU/C,EAAoB,EAgElCN,GAAQe,KAAO,OACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GA4BpC,GAAIosC,GAAMpsC,EAAM,OACdsD,OAAUd,KAAK4pC,IAEf3pB,QAAW,SAAUjhB,GACnB,MAAOA,GAAE4qC,OAGX1pB,UAAa,SAAUlhB,GACrB,MAAOA,GAAE4qC,OAGXvpB,KAAQ,SAAUrhB,GAChB,IAAKA,EAAEwgC,QAAQniC,EAAKgjB,KAAK20C,WAAWuG,OAClC,KAAM,IAAIj6D,WAAW,mCAEvB,OAAOsoC,GAAI5qC,EAAE0C,QAGf0e,iBAAkB,SAAUphB,GAE1B,MAAOL,GAAQK,EAAG4qC,GAAK,KAM3B,OAFAA,GAAIrrC,OAASE,EAAG,kCAETmrC,EAxDT,GAAIjrC,GAAU/C,EAAoB,EA2DlCN,GAAQe,KAAO,MACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAsBpC,GAAIqsC,GAAOrsC,EAAM,QACfsD,OAAUijF,EAEV9jE,QAAW,SAAUjhB,GACnB,MAAOA,GAAE6qC,QAGX3pB,UAAa,SAAUlhB,GACrB,MAAOA,GAAE6qC,QAGXxpB,KAAQ,SAAUrhB,GAChB,IAAKA,EAAEwgC,QAAQniC,EAAKgjB,KAAK20C,WAAWuG,OAClC,KAAM,IAAIj6D,WAAW,oCAEvB,OAAOuoC,GAAK7qC,EAAE0C,QAGhB0e,iBAAkB,SAAUphB,GAE1B,MAAOL,GAAQK,EAAG6qC,GAAM,KAM5B,OAFAA,GAAKtrC,OAASE,EAAG,mCAEVorC,EAlDT,GAAIlrC,GAAU/C,EAAoB,GA2D9BmoF,EAAQ/jF,KAAK6pC,MAAQ,SAAU7qC,GACjC,OAAQgB,KAAKggC,IAAIhhC,GAAKgB,KAAKggC,KAAKhhC,IAAM,EAGxC1D,GAAQe,KAAO,OACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAwBpC,GAAIssC,GAAMtsC,EAAM,OACdsD,OAAUd,KAAK8pC,IAEf7pB,QAAW,SAAUjhB,GACjB,MAAOA,GAAE8qC,OAGb5pB,UAAa,SAAUlhB,GACrB,MAAOA,GAAE8qC,OAGXzpB,KAAQ,SAAUrhB,GAChB,IAAKA,EAAEwgC,QAAQniC,EAAKgjB,KAAK20C,WAAWuG,OAClC,KAAM,IAAIj6D,WAAW,mCAEvB,OAAOwoC,GAAI9qC,EAAE0C,QAGf0e,iBAAkB,SAAUphB,GAE1B,MAAOL,GAAQK,EAAG8qC,GAAK,KAM3B,OAFAA,GAAIvrC,OAASE,EAAG,kCAETqrC,EApDT,GAAInrC,GAAU/C,EAAoB,EAuDlCN,GAAQe,KAAO,MACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAKA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAyBpC,GAAIusC,GAAOvsC,EAAM,QACfsD,OAAUkjF,EAEV/jE,QAAW,SAAUjhB,GACjB,MAAOA,GAAE+qC,QAGb7pB,UAAa,SAAUlhB,GACrB,MAAOA,GAAE+qC,QAGX1pB,KAAQ,SAAUrhB,GAChB,IAAKA,EAAEwgC,QAAQniC,EAAKgjB,KAAK20C,WAAWuG,OAClC,KAAM,IAAIj6D,WAAW,oCAEvB,OAAOyoC,GAAK/qC,EAAE0C,QAGhB0e,iBAAkB,SAAUphB,GAE1B,MAAOL,GAAQK,EAAG+qC,GAAM,KAM5B,OAFAA,GAAKxrC,OAASE,EAAG,mCAEVsrC,EArDT,GAAIprC,GAAU/C,EAAoB,GA8D9BooF,EAAQhkF,KAAK+pC,MAAQ,SAAU/qC,GACjC,GAAIsD,GAAItC,KAAKggC,IAAI,EAAIhhC,EACrB,QAAQsD,EAAI,IAAMA,EAAI,GAGxBhH,GAAQe,KAAO,OACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjCL,EAAOD,SACLM,EAAoB,OAKhB,SAAUL,EAAQD,EAASM,GAEjC,YAGA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GACpC,GAAI2V,GAAQvX,EAAoB,GAE5BoC,EAAST,EAAK3B,EAAoB,IAElC8U,EAAcnT,EAAK3B,EAAoB,IACvCkT,EAAcvR,EAAK3B,EAAoB,IA0BvCoQ,EAAKxO,EAAM,MAEbymF,sBAAuB,SAAUjlF,EAAG65B,GAClC,MAAO75B,GAAEgN,GAAG6sB,IAGdllB,iBAAkB,SAAU3U,EAAG+H,GAE7B,MAAO2J,GAAY1R,EAAG+H,EAAGiF,IAG3BwH,eAAgB,SAAUxU,EAAG+H,GAE3B,MAAOiF,GAAGhO,EAAOgB,GAAIhB,EAAO+I,IAAIyG,WAGlC2G,gBAAiB,SAAUnV,EAAG+H,GAE5B,MAAOiF,GAAGhO,EAAOgB,GAAI+H,IAGvBmN,gBAAiB,SAAUlV,EAAG+H,GAE5B,MAAOiF,GAAGhN,EAAGhB,EAAO+I,KAGtBqN,cAAe,SAAUpV,EAAG+H,GAE1B,MAAO+H,GAAY9P,EAAG+H,EAAGiF,GAAI,IAG/BqI,cAAe,SAAUrV,EAAG+H,GAE1B,MAAO+H,GAAY/H,EAAG/H,EAAGgN,GAAI,IAG/BsI,aAAc,SAAUtV,EAAG+H,GAEzB,MAAO+H,GAAY9Q,EAAOgB,GAAI+H,EAAGiF,GAAI,GAAOwB,WAG9C+G,aAAc,SAAUvV,EAAG+H,GAEzB,MAAO+H,GAAY9Q,EAAO+I,GAAI/H,EAAGgN,GAAI,GAAMwB,YAQ/C,OAJAxB,GAAGzN,OACDG,EAAG,oBAAsByU,EAAMlI,UAAc,GAAI,sBAG5Ce,EAGT1Q,EAAQe,KAAO,KACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjCL,EAAOD,SACLM,EAAoB,KACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,KACpBA,EAAoB,IACpBA,EAAoB,KACpBA,EAAoB,MAMhB,SAAUL,EAAQD,EAASM,GAEjC,YAMA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GA6BpC,GAAIwsC,GAAUxsC,EAAM,WAClBsD,OAAU,SAAU9B,GAClB,GAAIA,EAAI,EACN,OAAO,CAET,IAAS,GAALA,EACF,OAAO,CAET,IAAIA,EAAI,GAAK,EACX,OAAO,CAET,KAAK,GAAIjD,GAAI,EAAGA,EAAIA,GAAKiD,EAAGjD,GAAK,EAC/B,GAAIiD,EAAIjD,GAAK,EACX,OAAO,CAGX,QAAO,GAGTmkB,UAAa,SAAUlhB,GACrB,GAAIA,EAAEsuB,GAAG,GACP,OAAO,CAET,IAAItuB,EAAE+T,OAAO,GACX,OAAO,CAET,IAAI/T,EAAE6M,IAAI,GAAGqW,SACX,OAAO,CAET,KAAI,GAAInmB,GAAIsB,EAAK6iB,UAAU,GAAInkB,EAAE+hB,MAAM/hB,GAAGomB,IAAInjB,GAAIjD,EAAIA,EAAEkgB,KAAK,GAC3D,GAAIjd,EAAE6M,IAAI9P,GAAGmmB,SACX,OAAO,CAGX,QAAO,GAGT9B,iBAAkB,SAAUphB,GAC1B,MAAOL,GAAQK,EAAGgrC,KAItB,OAAOA,GA1ET,GAAIrrC,GAAU/C,EAAoB,EA6ElCN,GAAQe,KAAO,UACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAMA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GA8BpC,GAAIuG,GAAQvG,EAAM,SAChBsD,OAAU,SAAU9B,GAClB,MAAO4H,QAAO7C,MAAM/E,IAGtBkhB,UAAa,SAAUlhB,GACrB,MAAOA,GAAE+E,SAGXoc,SAAY,SAAUnhB,GACpB,OAAO,GAGTihB,QAAW,SAAUjhB,GACnB,MAAOA,GAAE+E,SAGXsc,KAAQ,SAAUrhB,GAChB,MAAO4H,QAAO7C,MAAM/E,EAAE0C,QAGxB0e,iBAAkB,SAAUphB,GAC1B,MAAOL,GAAQK,EAAG4H,OAAO7C,SAI7B,OAAOA,GA3DT,GAAIpF,GAAU/C,EAAoB,EACrBA,GAAoB,EA6DjCN,GAAQe,KAAO,QACff,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjCL,EAAOD,SACLM,EAAoB,OAMhB,SAAUL,EAAQD,EAASM,GAEjC,YAGA,SAASP,GAASgC,EAAMC,EAAQC,EAAMC,GAOpC,MAAO,UAAiBoQ,EAAKlM,GAC3B,GAAIsM,GAAc3Q,EAAKqE,GAASA,EAAMke,OACtC,OAAI5R,IAA+C,kBAAzBA,GAAY8R,SAC7B9R,EAAY8R,SAASpe,GAGvBA,GAIXpG,EAAQe,KAAO,UACff,EAAQmT,KAAO,OACfnT,EAAQD,QAAUA,GAKZ,SAAUE,EAAQD,EAASM,GAEjC,YAGA,IAAI+mB,GAAiB/mB,EAAoB,IACrC0D,EAAiB1D,EAAoB,IACrCmF,EAAanF,EAAoB,GAErCL,GAAOD,UAEHe,KAAM,iBAAkBoS,KAAM,QAC9BpT,QAAS,WACP,MAAOsnB,MAITtmB,KAAM,iBACNoS,KAAM,QACNpT,QAAS,WACP,MAAOiE,MAITjD,KAAM,aACNoS,KAAM,QACNpT,QAAS,WACP,MAAO0F","file":"math"} \ No newline at end of file diff --git a/dist/math.min.js b/dist/math.min.js index 7c74128f1..e7d05ef7d 100644 --- a/dist/math.min.js +++ b/dist/math.min.js @@ -6,8 +6,8 @@ * It features real and complex numbers, units, matrices, a large set of * mathematical functions, and a flexible expression parser. * - * @version 3.17.0 - * @date 2017-11-18 + * @version 3.18.0 + * @date 2017-12-16 * * @license * Copyright (C) 2013-2017 Jos de Jong @@ -24,32 +24,18 @@ * License for the specific language governing permissions and limitations under * the License. */ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.math=t():e.math=t()}(this,function(){return function(e){function t(n){if(r[n])return r[n].exports;var i=r[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=148)}([function(e,t,r){"use strict";function n(e,t,r,n){function i(t,r,n){var i=e.Matrix.storage(r||"default");return new i(t,n)}var a=n("matrix",{"":function(){return i([])},string:function(e){return i([],e)},"string, string":function(e,t){return i([],e,t)},Array:function(e){return i(e)},Matrix:function(e){return i(e,e.storage())},"Array | Matrix, string":i,"Array | Matrix, string, string":i});return a.toTex={0:"\\begin{bmatrix}\\end{bmatrix}",1:"\\left(${args[0]}\\right)",2:"\\left(${args[0]}\\right)"},a}t.name="matrix",t.factory=n},function(e,t,r){"use strict";e.exports=function e(t,r,n){return t&&"function"==typeof t.map?t.map(function(t){return e(t,r,n)}):r(t)}},function(e,t,r){"use strict";function n(e,t,r){var i,a=e.length;if(a!=t[r])throw new f(a,t[r]);if(r")}function i(e,r,n,a){var o,s,u=e.length,c=r[n],f=Math.min(u,c);if(e.length=c,n=t)throw new l(e,t)},t.UNINITIALIZED={},t.resize=function(e,t,r){if(!Array.isArray(e)||!Array.isArray(t))throw new TypeError("Array expected");if(0===t.length)throw new Error("Resizing to scalar is not supported");t.forEach(function(e){if(!u.isNumber(e)||!u.isInteger(e)||e<0)throw new TypeError("Invalid size, must contain positive integers (size: "+c.format(t)+")")});var n=void 0!==r?r:0;return i(e,t,0,n),e},t.reshape=function(e,r){var n,i=t.flatten(e),o=function(e){return e.reduce(function(e,t){return e*t})};if(!Array.isArray(e)||!Array.isArray(r))throw new TypeError("Array expected");if(0===r.length)throw new f(0,o(t.size(e)),"!=");try{n=a(i,r)}catch(n){if(n instanceof f)throw new f(o(r),o(t.size(e)),"!=");throw n}if(i.length>0)throw new f(o(r),o(t.size(e)),"!=");return n},t.squeeze=function(e,r){for(var n=r||t.size(e);Array.isArray(e)&&1===e.length;)e=e[0],n.shift();for(var i=n.length;1===n[i-1];)i--;return i0?1:e<0?-1:0},t.format=function(e,r){if("function"==typeof r)return r(e);if(e===1/0)return"Infinity";if(e===-(1/0))return"-Infinity";if(isNaN(e))return"NaN";var n="auto",i=void 0;switch(r&&(r.notation&&(n=r.notation),t.isNumber(r)?i=r:r.precision&&(i=r.precision)),n){case"fixed":return t.toFixed(e,i);case"exponential":return t.toExponential(e,i);case"engineering":return t.toEngineering(e,i);case"auto":return t.toPrecision(e,i,r&&r.exponential).replace(/((\.\d*?)(0+))($|e)/,function(){var e=arguments[2],t=arguments[4];return"."!==e?e+t:t});default:throw new Error('Unknown notation "'+n+'". Choose "auto", "exponential", or "fixed".')}},t.splitNumber=function(e){var t=String(e).toLowerCase().match(/^0*?(-?)(\d+\.?\d*)(e([+-]?\d+))?$/);if(!t)throw new SyntaxError("Invalid number "+e);var r=t[1],n=t[2],i=parseFloat(t[4]||"0"),a=n.indexOf(".");i+=a!==-1?a-1:n.length-1;var o=n.replace(".","").replace(/^0*/,function(e){return i-=e.length,""}).replace(/0*$/,"").split("").map(function(e){return parseInt(e)});return 0===o.length&&(o.push(0),i++),{sign:r,coefficients:o,exponent:i}},t.toEngineering=function(e,r){if(isNaN(e)||!isFinite(e))return String(e);var i=t.roundDigits(t.splitNumber(e),r),a=i.exponent,o=i.coefficients,s=a%3===0?a:a<0?a-3-a%3:a-a%3,u=a>=0?a:Math.abs(s);o.length-1=0;)f++;var l=o.slice(f).join(""),p=l.match(/[1-9]/)?"."+l:"",h=o.slice(0,f).join("")+p+"e"+(a>=0?"+":"")+s.toString();return i.sign+h},t.toFixed=function(e,r){if(isNaN(e)||!isFinite(e))return String(e);var i=t.splitNumber(e),a=t.roundDigits(i,i.exponent+1+(r||0)),o=a.coefficients,s=a.exponent+1,u=s+(r||0);return o.length0?"."+o.join(""):"")+"e"+(s>=0?"+":"")+s},t.toPrecision=function(e,r,i){if(isNaN(e)||!isFinite(e))return String(e);var a=i&&void 0!==i.lower?i.lower:.001,o=i&&void 0!==i.upper?i.upper:1e5,s=t.splitNumber(e),u=Math.abs(Math.pow(10,s.exponent));if(u=o)return t.toExponential(e,r);var c=r?t.roundDigits(s,r):s,f=c.coefficients,l=c.exponent;f.length0?l:0;return pt){var i=n.splice(t,n.length-t);if(i[0]>=5){var a=t-1;for(n[a]++;10===n[a];)n.pop(),0===a&&(n.unshift(0),r.exponent++,a++),a--,n[a]++}}return r},t.digits=function(e){return e.toExponential().replace(/e.*$/,"").replace(/^0\.?0*|\./,"").length},t.DBL_EPSILON=Number.EPSILON||2.220446049250313e-16,t.nearlyEqual=function(e,r,n){if(null==n)return e==r;if(e==r)return!0;if(isNaN(e)||isNaN(r))return!1;if(isFinite(e)&&isFinite(r)){var i=Math.abs(e-r);return i>",rightLogShift:">>>",equal:"=",unequal:"\\neq",smaller:"<",larger:">",smallerEq:"\\leq",largerEq:"\\geq",bitAnd:"\\&",bitXor:"\\underline{|}",bitOr:"|",and:"\\wedge",xor:"\\veebar",or:"\\vee"},t.defaultTemplate="\\mathrm{${name}}\\left(${args}\\right)";var n={deg:"^\\circ"};t.toSymbol=function(e,r){if(r="undefined"!=typeof r&&r)return n.hasOwnProperty(e)?n[e]:"\\mathrm{"+e+"}";if(t.symbols.hasOwnProperty(e))return t.symbols[e];if(e.indexOf("_")!==-1){var i=e.indexOf("_");return t.toSymbol(e.substring(0,i))+"_{"+t.toSymbol(e.substring(i+1))+"}"}return e}},function(e,t,r){"use strict";var n=r(71);t.clone=function e(r){var i=typeof r;if("number"===i||"string"===i||"boolean"===i||null===r||void 0===r)return r;if("function"==typeof r.clone)return r.clone();if(Array.isArray(r))return r.map(function(t){return e(t)});if(r instanceof Number)return new Number(r.valueOf());if(r instanceof String)return new String(r.valueOf());if(r instanceof Boolean)return new Boolean(r.valueOf());if(r instanceof Date)return new Date(r.valueOf());if(n(r))return r;if(r instanceof RegExp)throw new TypeError("Cannot clone "+r);return t.map(r,e)},t.map=function(e,r){var n={};for(var i in e)t.hasOwnProperty(e,i)&&(n[i]=r(e[i]));return n},t.extend=function(e,r){for(var n in r)t.hasOwnProperty(r,n)&&(e[n]=r[n]);return e},t.deepExtend=function e(r,n){if(Array.isArray(n))throw new TypeError("Arrays are not supported by deepExtend");for(var i in n)if(t.hasOwnProperty(n,i))if(n[i]&&n[i].constructor===Object)void 0===r[i]&&(r[i]={}),r[i].constructor===Object?e(r[i],n[i]):r[i]=n[i];else{if(Array.isArray(n[i]))throw new TypeError("Arrays are not supported by deepExtend");r[i]=n[i]}return r},t.deepEqual=function(e,r){var n,i,a;if(Array.isArray(e)){if(!Array.isArray(r))return!1;if(e.length!=r.length)return!1;for(i=0,a=e.length;i0?s(p,0,f,f[0],c,t,o):[];return new a({data:h,size:i(f),datatype:u})},s=function(e,t,r,n,i,a,o){var u=[];if(t===r.length-1)for(var c=0;c0?s(v,0,h,h[0],o,f):[];return new i({data:g,size:h,datatype:d})},s=function(e,t,r,n,i,a){var o=[];if(t===r.length-1)for(var u=0;u/g,">")}},function(e,t,r){"use strict";function n(e,t,r){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");this.actual=e,this.expected=t,this.relation=r,this.message="Dimension mismatch ("+(Array.isArray(e)?"["+e.join(", ")+"]":e)+" "+(this.relation||"!=")+" "+(Array.isArray(t)?"["+t.join(", ")+"]":t)+")",this.stack=(new Error).stack}n.prototype=new RangeError,n.prototype.constructor=RangeError,n.prototype.name="DimensionError",n.prototype.isDimensionError=!0,e.exports=n},function(e,t,r){"use strict";function n(e,t,r,n){var o=n("equalScalar",{"boolean, boolean":function(e,t){return e===t},"number, number":function(e,r){return e===r||i(e,r,t.epsilon)},"BigNumber, BigNumber":function(e,r){return e.eq(r)||a(e,r,t.epsilon)},"Fraction, Fraction":function(e,t){return e.equals(t)},"Complex, Complex":function(e,t){return e.equals(t)},"Unit, Unit":function(e,t){if(!e.equalBase(t))throw new Error("Cannot compare units with different base");return o(e.value,t.value)},"string, string":function(e,t){return e===t}});return o}var i=r(3).nearlyEqual,a=r(35);t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var s=r(4),u=n(r(0)),c=n(r(20)),f=n(r(23)),l=n(r(11)),p=n(r(17)),h=n(r(6)),m=e.DenseMatrix,d=e.SparseMatrix,v=o("multiply",i({"Array, Array":function(t,r){g(a.size(t),a.size(r));var n=v(u(t),u(r));return e.isMatrix(n)?n.valueOf():n},"Matrix, Matrix":function(e,t){var r=e.size(),n=t.size();return g(r,n),1===r.length?1===n.length?y(e,t,r[0]):x(e,t):1===n.length?b(e,t):N(e,t)},"Matrix, Array":function(e,t){return v(e,u(t))},"Array, Matrix":function(e,t){return v(u(e,t.storage()),t)},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=p(e,t,f,!1);break;case"dense":r=h(e,t,f,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=p(t,e,f,!0);break;case"dense":r=h(t,e,f,!0)}return r},"Array, any":function(e,t){return h(u(e),t,f,!1).valueOf()},"any, Array":function(e,t){return h(u(t),e,f,!0).valueOf()},"any, any":f,"Array | Matrix | any, Array | Matrix | any, ...any":function(e,t,r){for(var n=v(e,t),i=0;iT)for(var S=0,C=0;C0)throw new Error("Calling compile(math) is deprecated. Call the function as compile() instead.");var e={math:u.expression.mathWithTransform,args:{},_validateScope:f},t={},r=l(this,e,t),n=Object.keys(e).map(function(e){return" var "+e+' = defs["'+e+'"];'}),i=n.join(" ")+'return { "eval": function (scope) { if (scope) _validateScope(scope); scope = scope || {}; return '+r+"; }};",a=new Function("defs",i);return a(e)},c.prototype.forEach=function(e){throw new Error("Cannot run forEach on a Node interface")},c.prototype.map=function(e){throw new Error("Cannot run map on a Node interface")},c.prototype._ifNode=function(t){if(!e.isNode(t))throw new TypeError("Callback function must return a Node");return t},c.prototype.traverse=function(e){function t(e,r){e.forEach(function(e,n,i){r(e,n,i),t(e,r)})}e(this,null,null),t(this,e)},c.prototype.transform=function(e){function t(e,r){return e.map(function(e,n,i){var a=r(e,n,i);return t(a,r)})}var r=e(this,null,null);return t(r,e)},c.prototype.filter=function(e){var t=[];return this.traverse(function(r,n,i){e(r,n,i)&&t.push(r)}),t},c.prototype.find=function(){throw new Error("Function Node.find is deprecated. Use Node.filter instead.")},c.prototype.match=function(){throw new Error("Function Node.match is deprecated. See functions Node.filter, Node.transform, Node.traverse.")},c.prototype.clone=function(){throw new Error("Cannot clone a Node interface")},c.prototype.cloneDeep=function(){return this.map(function(e){return e.cloneDeep()})},c.prototype.equals=function(e){return!!e&&a(this,e)},c.prototype.toString=function(e){var t;if(e&&"object"==typeof e)switch(typeof e.handler){case"object":case"undefined":break;case"function":t=e.handler(this,e);break;default:throw new TypeError("Object or function expected as callback")}return"undefined"!=typeof t?t:this._toString(e)},c.prototype.toHTML=function(e){var t;if(e&&"object"==typeof e)switch(typeof e.handler){case"object":case"undefined":break;case"function":t=e.handler(this,e);break;default:throw new TypeError("Object or function expected as callback")}return"undefined"!=typeof t?t:this.toHTML(e)},c.prototype._toString=function(){throw new Error("_toString not implemented for "+this.type)},c.prototype.toTex=function(e){var t;if(e&&"object"==typeof e)switch(typeof e.handler){case"object":case"undefined":break;case"function":t=e.handler(this,e);break;default:throw new TypeError("Object or function expected as callback")}return"undefined"!=typeof t?t:this._toTex(e)},c.prototype._toTex=function(e){throw new Error("_toTex not implemented for "+this.type)},c.prototype.getIdentifier=function(){return this.type},c.prototype.getContent=function(){return this},c}var i=r(77),a=r(5).deepEqual,o=r(5).hasOwnProperty;t.name="Node",t.path="expression.node",t.math=!0,t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=e.DenseMatrix,o=function(e,t,r,o){var s=e._data,u=e._size,c=e._datatype,f=t._values,l=t._index,p=t._ptr,h=t._size,m=t._datatype;if(u.length!==h.length)throw new i(u.length,h.length);if(u[0]!==h[0]||u[1]!==h[1])throw new RangeError("Dimension mismatch. Matrix A ("+u+") must match Matrix B ("+h+")");if(!f)throw new Error("Cannot perform operation on Dense Matrix and Pattern Sparse Matrix");var d,v=u[0],g=u[1],y=0,x=r;"string"==typeof c&&c===m&&(d=c,y=n.convert(0,d),x=n.find(r,[d,d]));for(var w=[],b=0;bo)for(c=o-1,a=u.length;ct.length?1:e.length0?1:-1:a(n,o);if("Array"===n||"Matrix"===n||"Array"===o||"Matrix"===o)return r=s(e,t),0!==r?r:a(n,o);if(n!==o)return a(n,o);if("Complex"===n)return i(e,t);if("Unit"===n)return e.equalBase(t)?h(e.value,t.value):u(e.formatUnits(),t.formatUnits());if("boolean"===n)return p(e,t);if("string"===n)return a(e,t);if("Object"===n)return c(e,t);if("null"===n)return 0;if("undefined"===n)return 0;throw new TypeError('Unsupported type of value "'+n+'"')}});return h.toTex=void 0,h}function i(e,t){return e.re>t.re?1:e.ret.im?1:e.imt},"number, number":function(e,r){return e>r&&!i(e,r,t.epsilon)},"BigNumber, BigNumber":function(e,r){return e.gt(r)&&!a(e,r,t.epsilon)},"Fraction, Fraction":function(e,t){return 1===e.compare(t)},"Complex, Complex":function(){throw new TypeError("No ordering relation is defined for complex numbers")},"Unit, Unit":function(e,t){if(!e.equalBase(t))throw new Error("Cannot compare units with different base");return m(e.value,t.value)},"string, string":function(e,t){return e>t},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=c(e,t,m);break;default:r=u(t,e,m,!0)}break;default:switch(t.storage()){case"sparse":r=u(e,t,m,!1);break;default:r=l(e,t,m)}}return r},"Array, Array":function(e,t){return m(s(e),s(t)).valueOf()},"Array, Matrix":function(e,t){return m(s(e),t)},"Matrix, Array":function(e,t){return m(e,s(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=f(e,t,m,!1);break;default:r=p(e,t,m,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=f(t,e,m,!0);break;default:r=p(t,e,m,!0)}return r},"Array, any":function(e,t){return p(s(e),t,m,!1).valueOf()},"any, Array":function(e,t){return p(s(t),e,m,!0).valueOf()}});return m.toTex={2:"\\left(${args[0]}"+h.operators.larger+"${args[1]}\\right)"},m}var i=r(3).nearlyEqual,a=r(35);t.name="larger",t.factory=n},function(e,t,r){"use strict";e.exports=function(e,t,r){if(null==r)return e.eq(t);if(e.eq(t))return!0;if(e.isNaN()||t.isNaN())return!1;if(e.isFinite()&&t.isFinite()){var n=e.minus(t).abs();if(n.isZero())return!0;var i=e.constructor.max(e.abs(),t.abs());return n.lte(i.times(r))}return!1}},function(e,t,r){"use strict";function n(e,t,r,n){var i=e.DenseMatrix,a=function(e,t,r,a){var o=e._values,s=e._index,u=e._ptr,c=e._size,f=e._datatype;if(!o)throw new Error("Cannot perform operation on Pattern Sparse Matrix and Scalar value");var l,p=c[0],h=c[1],m=r;"string"==typeof f&&(l=f,t=n.convert(t,l),m=n.find(r,[l,l]));for(var d=[],v=new i({data:d,size:[p,h],datatype:l}),g=[],y=[],x=0;x0?o.resize(t,i):o}var s=[];return t.length>0?a(s,t,i):s}function u(t){var r=!1;return t.forEach(function(t,n,i){e.isBigNumber(t)&&(r=!0,i[n]=t.toNumber())}),r}function c(e){e.forEach(function(e){if("number"!=typeof e||!i(e)||e<0)throw new Error("Parameters in function zeros must be positive integers")})}var f=n(r(0)),l=o("zeros",{"":function(){return"Array"===t.matrix?s([]):s([],"default")},"...number | BigNumber | string":function(e){var r=e[e.length-1];if("string"==typeof r){var n=e.pop();return s(e,n)}return"Array"===t.matrix?s(e):s(e,"default")},Array:s,Matrix:function(e){var t=e.storage();return s(e.valueOf(),t)},"Array | Matrix, string":function(e,t){return s(e.valueOf(),t)}});return l.toTex=void 0,l}var i=r(3).isInteger,a=r(2).resize;t.name="zeros",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function s(t,r){if(1!=arguments.length&&2!=arguments.length)throw new i("parse",arguments.length,1,2);if(he=r&&r.nodes?r.nodes:{},"string"==typeof t)return me=t,g();if(Array.isArray(t)||t instanceof e.Matrix)return a(t,function(e){if("string"!=typeof e)throw new TypeError("String expected");return me=e,g()});throw new TypeError("String or matrix expected")}function u(){ve=0,ge=me.charAt(0),we=0,be=null}function c(){ve++,ge=me.charAt(ve)}function f(){return me.charAt(ve-1)}function l(){return me.charAt(ve+1)}function p(){return me.charAt(ve+2)}function h(){for(xe=fe.NULL,ye="",de="";s.isWhitespace(ge,we);)c();if("#"==ge)for(;"\n"!=ge&&""!=ge;)de+=ge,c();if(""==ge)return void(xe=fe.DELIMITER);if("\n"==ge&&!we)return xe=fe.DELIMITER,ye=ge,void c();var e=ge+l(),t=e+p();if(3==t.length&&le[t])return xe=fe.DELIMITER,ye=t,c(),c(),void c();if(2==e.length&&le[e])return xe=fe.DELIMITER,ye=e,c(),void c();if(le[ge])return xe=fe.DELIMITER,ye=ge,void c();if(!s.isDigitDot(ge)){if(s.isAlpha(ge,f(),l())){for(;s.isAlpha(ge,f(),l())||s.isDigit(ge);)ye+=ge,c();return void(xe=pe.hasOwnProperty(ye)?fe.DELIMITER:fe.SYMBOL)}for(xe=fe.UNKNOWN;""!=ge;)ye+=ge,c();throw W('Syntax error in part "'+ye+'"')}if(xe=fe.NUMBER,"."==ge)ye+=ge,c(),s.isDigit(ge)||(xe=fe.DELIMITER);else{for(;s.isDigit(ge);)ye+=ge,c();s.isDecimalMark(ge,l())&&(ye+=ge,c())}for(;s.isDigit(ge);)ye+=ge,c();if(e=l(),"E"==ge||"e"==ge)if(s.isDigit(e)||"-"==e||"+"==e){if(ye+=ge,c(),"+"!=ge&&"-"!=ge||(ye+=ge,c()),!s.isDigit(ge))throw W('Digit expected, got "'+ge+'"');for(;s.isDigit(ge);)ye+=ge,c();if(s.isDecimalMark(ge,l()))throw W('Digit expected, got "'+ge+'"')}else if("."==e)throw c(),W('Digit expected, got "'+ge+'"')}function m(){do h();while("\n"==ye)}function d(){we++}function v(){we--}function g(){u(),h();var e=y();if(""!=ye)throw xe==fe.DELIMITER?Y("Unexpected operator "+ye):W('Unexpected part "'+ye+'"');return e}function y(){var e,t,r=[];for(""!=ye&&"\n"!=ye&&";"!=ye&&(e=x(),e.comment=de);"\n"==ye||";"==ye;)0==r.length&&e&&(t=";"!=ye,r.push({node:e,visible:t})),h(),"\n"!=ye&&";"!=ye&&""!=ye&&(e=x(),e.comment=de,t=";"!=ye,r.push({node:e,visible:t}));return r.length>0?new K(r):(e||(e=new te("undefined","undefined"),e.comment=de),e)}function x(){var t,r,n,i,a=w();if("="==ye){if(e.isSymbolNode(a))return t=a.name,m(),n=x(),new Q(new ce(t),n);if(e.isAccessorNode(a))return m(),n=x(),new Q(a.object,a.index,n);if(e.isFunctionNode(a)&&e.isSymbolNode(a.fn)&&(i=!0,r=[],t=a.name,a.args.forEach(function(t,n){e.isSymbolNode(t)?r[n]=t.name:i=!1}),i))return m(),n=x(),new re(t,r,n);throw W("Invalid left hand side of assignment operator =")}return a}function w(){for(var e=b();"?"==ye;){var t=be;be=we,m();var r=e,n=x();if(":"!=ye)throw W("False part of conditional expression expected");be=null,m();var i=x();e=new ee(r,n,i),be=t}return e}function b(){for(var e=N();"or"==ye;)m(),e=new ae("or","or",[e,N()]);return e}function N(){for(var e=E();"xor"==ye;)m(),e=new ae("xor","xor",[e,E()]);return e}function E(){for(var e=M();"and"==ye;)m(),e=new ae("and","and",[e,M()]);return e}function M(){for(var e=A();"|"==ye;)m(),e=new ae("|","bitOr",[e,A()]);return e}function A(){for(var e=O();"^|"==ye;)m(),e=new ae("^|","bitXor",[e,O()]);return e}function O(){for(var e=T();"&"==ye;)m(),e=new ae("&","bitAnd",[e,T()]);return e}function T(){var e,t,r,n,i;for(e=_(),t={"==":"equal","!=":"unequal","<":"smaller",">":"larger","<=":"smallerEq",">=":"largerEq"};t.hasOwnProperty(ye);)r=ye,n=t[r],m(),i=[e,_()],e=new ae(r,n,i);return e}function _(){var e,t,r,n,i;for(e=S(),t={"<<":"leftShift",">>":"rightArithShift",">>>":"rightLogShift"};t.hasOwnProperty(ye);)r=ye,n=t[r],m(),i=[e,S()],e=new ae(r,n,i);return e}function S(){var e,t,r,n,i;for(e=C(),t={to:"to",in:"to"};t.hasOwnProperty(ye);)r=ye,n=t[r],m(),"in"===r&&""===ye?e=new ae("*","multiply",[e,new ce("in")],!0):(i=[e,C()],e=new ae(r,n,i));return e}function C(){var e,t=[];if(e=":"==ye?new te("1","number"):z(),":"==ye&&be!==we){for(t.push(e);":"==ye&&t.length<3;)m(),")"==ye||"]"==ye||","==ye||""==ye?t.push(new ce("end")):t.push(z());e=3==t.length?new ue(t[0],t[2],t[1]):new ue(t[0],t[1])}return e}function z(){var e,t,r,n,i;for(e=k(),t={"+":"add","-":"subtract"};t.hasOwnProperty(ye);)r=ye,n=t[r],m(),i=[e,k()],e=new ae(r,n,i);return e}function k(){var t,r,n,i,a;for(t=I(),r=t,n={"*":"multiply",".*":"dotMultiply","/":"divide","./":"dotDivide","%":"mod",mod:"mod"};;)if(n.hasOwnProperty(ye))i=ye,a=n[i],m(),r=I(),t=new ae(i,a,[t,r]);else{if(!(xe===fe.SYMBOL||"in"===ye&&e.isConstantNode(t))&&(xe!==fe.NUMBER||e.isConstantNode(r)||e.isOperatorNode(r)&&"!"!==r.op)&&"("!==ye)break;r=I(),t=new ae("*","multiply",[t,r],!0)}return t}function I(){var e,t,r,n={"-":"unaryMinus","+":"unaryPlus","~":"bitNot",not:"not"};return n.hasOwnProperty(ye)?(r=n[ye],e=ye,m(),t=[I()],new ae(e,r,t)):B()}function B(){var e,t,r,n;return e=P(),"^"!=ye&&".^"!=ye||(t=ye,r="^"==t?"pow":"dotPow",m(),n=[e,I()],e=new ae(t,r,n)),e}function P(){var e,t,r,n,i;for(e=R(),t={"!":"factorial","'":"transpose"};t.hasOwnProperty(ye);)r=ye,n=t[r],h(),i=[e],e=new ae(r,n,i),e=q(e);return e}function R(){var e=[];if(xe==fe.SYMBOL&&he.hasOwnProperty(ye)){var t=he[ye];if(h(),"("==ye){if(e=[],d(),h(),")"!=ye)for(e.push(x());","==ye;)h(),e.push(x());if(")"!=ye)throw W("Parenthesis ) expected");v(),h()}return new t(e)}return U()}function U(){var e,t;return xe==fe.SYMBOL||xe==fe.DELIMITER&&ye in pe?(t=ye,h(),e=new ce(t),e=q(e)):L()}function q(t,r){for(var n;!("("!==ye&&"["!==ye&&"."!==ye||r&&r.indexOf(ye)===-1);)if(n=[],"("===ye){if(!(e.isSymbolNode(t)||e.isAccessorNode(t)||e.isFunctionNode(t)))return t;if(d(),h(),")"!==ye)for(n.push(x());","===ye;)h(),n.push(x());if(")"!==ye)throw W("Parenthesis ) expected");v(),h(),t=new se(t,n)}else if("["===ye){if(d(),h(),"]"!==ye)for(n.push(x());","===ye;)h(),n.push(x());if("]"!==ye)throw W("Parenthesis ] expected");v(),h(),t=new X(t,new ne(n))}else{if(h(),xe!==fe.SYMBOL)throw W("Property name expected after dot");n.push(new te(ye)),h();var i=!0;t=new X(t,new ne(n,i))}return t}function L(){var e,t;return'"'==ye?(t=j(),e=new te(t,"string"),e=q(e)):F()}function j(){for(var e="";""!=ge&&'"'!=ge;)"\\"==ge&&(e+=ge,c()),e+=ge,c();if(h(),'"'!=ye)throw W('End of string " expected');return h(),e}function F(){var e,t,r,n;if("["==ye){if(d(),h(),"]"!=ye){var i=D();if(";"==ye){for(r=1,t=[i];";"==ye;)h(),t[r]=D(),r++;if("]"!=ye)throw W("End of matrix ] expected");v(),h(),n=t[0].items.length;for(var a=1;a":!0,"<=":!0,">=":!0,"<<":!0,">>":!0,">>>":!0},pe={mod:!0,to:!0,in:!0,and:!0,xor:!0,or:!0,not:!0},he={},me="",de="",ve=0,ge="",ye="",xe=fe.NULL,we=0,be=null;return s.isAlpha=function(e,t,r){return s.isValidLatinOrGreek(e)||s.isValidMathSymbol(e,r)||s.isValidMathSymbol(t,e)},s.isValidLatinOrGreek=function(e){return/^[a-zA-Z_$\u00C0-\u02AF\u0370-\u03FF\u2100-\u214F]$/.test(e)},s.isValidMathSymbol=function(e,t){return/^[\uD835]$/.test(e)&&/^[\uDC00-\uDFFF]$/.test(t)&&/^[^\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDFCC\uDFCD]$/.test(t)},s.isWhitespace=function(e,t){return" "==e||"\t"==e||"\n"==e&&t>0},s.isDecimalMark=function(e,t){return"."==e&&"/"!==t&&"*"!==t&&"^"!==t},s.isDigitDot=function(e){return e>="0"&&e<="9"||"."==e},s.isDigit=function(e){return e>="0"&&e<="9"},s}var i=r(50),a=r(1);t.name="parse",t.path="expression",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,c,f){function l(t){return!!e.Unit&&e.Unit.isValuelessUnit(t)}function p(e){if(!(this instanceof p))throw new SyntaxError("Constructor must be called with the new operator");if("string"!=typeof e)throw new TypeError('String expected for parameter "name"');this.name=e}function h(t,r,n){if(!(t instanceof p))throw new TypeError("No valid SymbolNode");r.undef=m,r.Unit=e.Unit,r.getSafeProperty=u,r.hasOwnProperty=s;var i=a(t.name);return s(n,t.name)?n[t.name]:t.name in r.math?"("+i+" in scope ? getSafeProperty(scope, "+i+") : getSafeProperty(math, "+i+"))":"("+i+" in scope ? getSafeProperty(scope, "+i+") : "+(l(t.name)?"new Unit(null, "+i+")":"undef("+i+")")+")"}function m(e){throw new Error("Undefined symbol "+e)}var d=n(r(7)).register,v=(n(r(7)).compile,n(r(14)));return p.prototype=new v,p.prototype.type="SymbolNode",p.prototype.isSymbolNode=!0,d(p.prototype.type,h),p.prototype.forEach=function(e){},p.prototype.map=function(e){return this.clone()},p.prototype.clone=function(){return new p(this.name)},p.prototype._toString=function(e){return this.name},p.prototype.toHTML=function(e){var t=o(this.name);return"true"==t||"false"==t?''+t+"":"i"==t?''+t+"":"Infinity"==t?''+t+"":"NaN"==t?''+t+"":"null"==t?''+t+"":"uninitialized"==t?''+t+"":''+t+""},p.prototype._toTex=function(e){var t=!1;"undefined"==typeof f[this.name]&&l(this.name)&&(t=!0);var r=i.toSymbol(this.name,t);return"\\"===r[0]?r:" "+r},p}var i=r(4),a=r(9).stringify,o=r(9).escape,s=r(5).hasOwnProperty,u=r(13).getSafeProperty;t.name="SymbolNode",t.path="expression.node",t.math=!0,t.factory=n},function(e,t,r){var n=r(51);t.transform=function(e){return e&&e.isIndexError?new n(e.index+1,e.min+1,void 0!==e.max?e.max+1:void 0):e}},function(e,t,r){"use strict";var n=r(58);e.exports=function e(t,r){n(t)&&(t=t.valueOf());for(var i=0,a=t.length;i");var h=r.max().map(function(e){return e+1});w(t,h,i);var m=c.length,d=0;x(t._data,r,n,m,d)}return t}function x(e,t,r,n,i){var a=i===n-1,o=t.dimension(i);a?o.forEach(function(t,n){m(t),e[t]=r[n[0]]}):o.forEach(function(a,o){m(a),x(e[a],t,r[o[0]],n,i+1)})}function w(e,t,r){for(var n=e._size.slice(0),i=!1;n.lengthn[a]&&(n[a]=t[a],i=!0);i&&E(e,n,r)}function b(e){for(var t=0,r=e.length;t0?t:0,n=t<0?-t:0,i=this._size[0],a=this._size[1],o=Math.min(i-n,a-r),s=[],u=0;u0?n:0,m=n<0?-n:0,v=t[0],g=t[1],y=Math.min(v-m,g-u);if(f(r)){if(r.length!==y)throw new Error("Invalid value array length");o=function(e){return r[e]}}else if(e.isMatrix(r)){var x=r.size();if(1!==x.length||x[0]!==y)throw new Error("Invalid matrix length");o=function(e){return r.get([e])}}else o=function(){return r};i||(i=e.isBigNumber(o(0))?new e.BigNumber(0):0);var w=[];if(t.length>0){w=s.resize(w,t,i);for(var b=0;b1&&n===-(1/0)?0:t.predictable&&(r<-1&&n===1/0||r>-1&&r<0&&n===-(1/0))?NaN:i(n)||r>=0||t.predictable?Math.pow(r,n):new e.Complex(r,0).pow(n,0)}function u(e,t){if(!i(t)||t<0)throw new TypeError("For A^b, b must be a positive integer (value is "+t+")");var r=a(e);if(2!=r.length)throw new Error("For A^b, A must be 2 dimensional (A has "+r.length+" dimensions)");if(r[0]!=r[1])throw new Error("For A^b, A must be square (size is "+r[0]+"x"+r[1]+")");for(var n=l(r[0]).valueOf(),o=e;t>=1;)1==(1&t)&&(n=p(o,n)),t>>=1,o=p(o,o);return n}function c(e,t){return h(u(e.valueOf(),t))}var f=r(4),l=n(r(61)),p=n(r(12)),h=n(r(0)),m=n(r(92)),d=n(r(74)),v=o("pow",{"number, number":s,"Complex, Complex":function(e,t){return e.pow(t)},"BigNumber, BigNumber":function(r,n){return n.isInteger()||r>=0||t.predictable?r.pow(n):new e.Complex(r.toNumber(),0).pow(n.toNumber(),0)},"Fraction, Fraction":function(e,r){if(1!==r.d){if(t.predictable)throw new Error("Function pow does not support non-integer exponents for fractions.");return s(e.valueOf(),r.valueOf())}return e.pow(r)},"Array, number":u,"Array, BigNumber":function(e,t){return u(e,t.toNumber())},"Matrix, number":c,"Matrix, BigNumber":function(e,t){return c(e,t.toNumber())},"Unit, number":function(e,t){return e.pow(t)}});return v.toTex={2:"\\left(${args[0]}\\right)"+f.operators.pow+"{${args[1]}}"},v}var i=r(3).isInteger,a=r(2).size;t.name="pow",t.factory=n},function(e,t,r){"use strict";var n=r(58);e.exports=function(e){return Array.isArray(e)||n(e)}},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(19)),s=n(r(12)),u=n(r(114)),c=n(r(0)),f=n(r(17)),l=n(r(6)),p=a("divide",i({"Array | Matrix, Array | Matrix":function(e,t){return s(e,u(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=f(e,t,o,!1);break;case"dense":r=l(e,t,o,!1)}return r},"Array, any":function(e,t){return l(c(e),t,o,!1).valueOf()},"any, Array | Matrix":function(e,t){return s(e,u(t))}},o.signatures));return p.toTex={2:"\\frac{${args[0]}}{${args[1]}}"},p}var i=r(5).extend;t.name="divide",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var o=n("isInteger",{number:a.isInteger,BigNumber:function(e){return e.isInt()},Fraction:function(e){return 1===e.d&&isFinite(e.n)},"Array | Matrix":function(e){return i(e,o)}});return o}var i=r(1),a=r(3);t.name="isInteger",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var s=n(r(0)),u=n(r(15)),c=n(r(60)),f=n(r(16)),l=n(r(8)),p=n(r(6)),h=o("compare",{"boolean, boolean":function(e,t){return e===t?0:e>t?1:-1},"number, number":function(e,r){return e===r||i(e,r,t.epsilon)?0:e>r?1:-1},"BigNumber, BigNumber":function(r,n){return r.eq(n)||a(r,n,t.epsilon)?new e.BigNumber(0):new e.BigNumber(r.cmp(n))},"Fraction, Fraction":function(t,r){return new e.Fraction(t.compare(r))},"Complex, Complex":function(){throw new TypeError("No ordering relation is defined for complex numbers")},"Unit, Unit":function(e,t){if(!e.equalBase(t))throw new Error("Cannot compare units with different base");return h(e.value,t.value)},"string, string":function(e,t){return e===t?0:e>t?1:-1},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=c(e,t,h);break;default:r=u(t,e,h,!0)}break;default:switch(t.storage()){case"sparse":r=u(e,t,h,!1);break;default:r=l(e,t,h)}}return r},"Array, Array":function(e,t){return h(s(e),s(t)).valueOf()},"Array, Matrix":function(e,t){return h(s(e),t)},"Matrix, Array":function(e,t){return h(e,s(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=f(e,t,h,!1);break;default:r=p(e,t,h,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=f(t,e,h,!0);break;default:r=p(t,e,h,!0)}return r},"Array, any":function(e,t){return p(s(e),t,h,!1).valueOf()},"any, Array":function(e,t){return p(s(t),e,h,!0).valueOf()}});return h.toTex=void 0,h}var i=r(3).nearlyEqual,a=r(35);t.name="compare",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,i){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");this.fn=e,this.count=t,this.min=r,this.max=i,this.message="Wrong number of arguments in function "+e+" ("+t+" provided, "+r+(void 0!=i?"-"+i:"")+" expected)",this.stack=(new Error).stack}n.prototype=new Error,n.prototype.constructor=Error,n.prototype.name="ArgumentsError",n.prototype.isArgumentsError=!0,e.exports=n},function(e,t,r){"use strict";function n(e,t,r){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");this.index=e,arguments.length<3?(this.min=0,this.max=t):(this.min=t,this.max=r),void 0!==this.min&&this.index=this.max?this.message="Index out of range ("+this.index+" > "+(this.max-1)+")":this.message="Index out of range ("+this.index+")",this.stack=(new Error).stack}n.prototype=new RangeError,n.prototype.constructor=RangeError,n.prototype.name="IndexError",n.prototype.isIndexError=!0,e.exports=n},function(e,t,r){"use strict";function n(e,t){var r=e;"keep"!==t&&(r=e.getContent());for(var n=r.getIdentifier(),i=0;i'+t+"";case"string":return''+t+"";case"boolean":return''+t+"";case"null":return''+t+"";case"undefined":return''+t+"";default:return''+t+""}},u.prototype._toTex=function(e){var t,r=this.value;switch(this.valueType){case"string":return"\\mathtt{"+a(r)+"}";case"number":return t=r.toLowerCase().indexOf("e"),t!==-1?r.substring(0,t)+"\\cdot10^{"+r.substring(t+1)+"}":r;default:return r}},u}var i=r(59).type,a=r(9).stringify,o=r(9).escape;t.name="ConstantNode",t.path="expression.node",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,h,m){function d(t,r){if(!(this instanceof d))throw new SyntaxError("Constructor must be called with the new operator");if("string"==typeof t&&(t=new N(t)),!e.isNode(t))throw new TypeError('Node expected as parameter "fn"');if(!Array.isArray(r)||!r.every(e.isNode))throw new TypeError('Array containing Nodes expected for parameter "args"');this.fn=t,this.args=r||[],Object.defineProperty(this,"name",{get:function(){return this.fn.name||""}.bind(this),set:function(){throw new Error("Cannot assign a new name, name is read-only")}});var n=function(){throw new Error("Property `FunctionNode.object` is deprecated, use `FunctionNode.fn` instead")};Object.defineProperty(this,"object",{get:n,set:n})}function v(t,r,n){if(!(t instanceof d))throw new TypeError("No valid FunctionNode");var i,o=w(t.fn,r,n),s=c(t.args,function(e){return w(e,r,n)}),h=g(r,n);if(e.isSymbolNode(t.fn)){var m=t.fn.name,v=u(r.math,m)?r.math[m]:void 0,y="function"==typeof v&&1==v.rawArgs;return y?(i=p(r),r[i]=t.args,o+"("+i+", math, "+h+")"):o+"("+f(s,", ")+")"}if(e.isAccessorNode(t.fn)&&e.isIndexNode(t.fn.index)&&t.fn.index.isObjectProperty()){i=p(r),r[i]=t.args,r.validateSafeMethod=l;var x=w(t.fn.object,r,n),b=a(t.fn.index.getObjectProperty());return"(function () {var object = "+x+";validateSafeMethod(object, "+b+");return (object["+b+"] && object["+b+"].rawArgs) ? object["+b+"]("+i+", math, "+h+") : object["+b+"]("+f(s,", ")+")})()"}return i=p(r),r[i]=t.args,"(function () {var fn = "+o+";return (fn && fn.rawArgs) ? fn("+i+", math, "+h+") : fn("+f(s,", ")+")})()"}function g(e,t){var r=Object.keys(t);if(0===r.length)return"scope";e.extend=s;var n=c(r,function(e){return a(e)+": "+t[e]});return"extend(extend({}, scope), {"+f(n,", ")+"})"}function y(t,r,n){for(var i,a="",o=new RegExp("\\$(?:\\{([a-z_][a-z_0-9]*)(?:\\[([0-9]+)\\])?\\}|\\$)","ig"),s=0;null!==(i=o.exec(t));)if(a+=t.substring(s,i.index),s=i.index,"$$"===i[0])a+="$",s++;else{s+=i[0].length;var u=r[i[1]];if(!u)throw new ReferenceError("Template: Property "+i[1]+" does not exist.");if(void 0===i[2])switch(typeof u){case"string":a+=u;break;case"object":if(e.isNode(u))a+=u.toTex(n);else{if(!Array.isArray(u))throw new TypeError("Template: "+i[1]+" has to be a Node, String or array of Nodes");a+=u.map(function(t,r){if(e.isNode(t))return t.toTex(n);throw new TypeError("Template: "+i[1]+"["+r+"] is not a Node.")}).join(",")}break;default:throw new TypeError("Template: "+i[1]+" has to be a Node, String or array of Nodes")}else{if(!e.isNode(u[i[2]]&&u[i[2]]))throw new TypeError("Template: "+i[1]+"["+i[2]+"] is not a Node.");a+=u[i[2]].toTex(n)}}return a+=t.slice(s)}var x=n(r(7)).register,w=n(r(7)).compile,b=n(r(14)),N=n(r(40));d.prototype=new b,d.prototype.type="FunctionNode",d.prototype.isFunctionNode=!0,x(d.prototype.type,v),d.prototype.forEach=function(e){for(var t=0;t'+o(this.fn)+'('+t.join(',')+')'};var M=d.prototype.toTex;return d.prototype.toTex=function(e){var t;return e&&"object"==typeof e.handler&&u(e.handler,this.name)&&(t=e.handler[this.name](this,e)),"undefined"!=typeof t?t:M.call(this,e)},d.prototype._toTex=function(e){var t,r=this.args.map(function(t){return t.toTex(e)});!m[this.name]||"function"!=typeof m[this.name].toTex&&"object"!=typeof m[this.name].toTex&&"string"!=typeof m[this.name].toTex||(t=m[this.name].toTex);var n;switch(typeof t){case"function":n=t(this,e);break;case"string":n=y(t,this,e);break;case"object":switch(typeof t[r.length]){case"function":n=t[r.length](this,e);break;case"string":n=y(t[r.length],this,e)}}return"undefined"!=typeof n?n:y(i.defaultTemplate,this,e)},d.prototype.getIdentifier=function(){return this.type+":"+this.name},d}var i=r(4),a=r(9).stringify,o=r(9).escape,s=r(5).extend,u=r(5).hasOwnProperty,c=r(2).map,f=r(2).join,l=r(13).validateSafeMethod,p=r(108);t.name="FunctionNode",t.path="expression.node",t.math=!0,t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("isPositive",{number:function(e){return e>0},BigNumber:function(e){return!e.isNeg()&&!e.isZero()&&!e.isNaN()},Fraction:function(e){return e.s>0&&e.n>0},Unit:function(e){return a(e.value)},"Array | Matrix":function(e){return i(e,a)}});return a}var i=r(1);r(3);t.name="isPositive",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){function a(r){return r>=0||t.predictable?Math.sqrt(r):new e.Complex(r,0).sqrt()}var o=n("sqrt",{number:a,Complex:function(e){return e.sqrt()},BigNumber:function(e){return!e.isNegative()||t.predictable?e.sqrt():a(e.toNumber())},"Array | Matrix":function(e){return i(e,o,!0)},Unit:function(e){return e.pow(.5)}});return o.toTex={1:"\\sqrt{${args[0]}}"},o}var i=r(1);t.name="sqrt",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("isNegative",{number:function(e){return e<0},BigNumber:function(e){return e.isNeg()&&!e.isZero()&&!e.isNaN()},Fraction:function(e){return e.s<0},Unit:function(e){return a(e.value)},"Array | Matrix":function(e){return i(e,a)}});return a}var i=r(1);r(3);t.name="isNegative",t.factory=n},function(e,t,r){"use strict";e.exports=function(e){return e&&e.constructor.prototype.isMatrix||!1}},function(e,t,r){"use strict";t.type=function(e){var t=typeof e;return"object"===t?null===e?"null":Array.isArray(e)?"Array":e instanceof Date?"Date":e instanceof RegExp?"RegExp":e instanceof Boolean?"boolean":e instanceof Number?"number":e instanceof String?"string":"Object":"function"===t?"Function":t}},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(11)),s=e.SparseMatrix,u=function(e,t,r){var n=e._values,u=e._index,c=e._ptr,f=e._size,l=e._datatype,p=t._values,h=t._index,m=t._ptr,d=t._size,v=t._datatype;if(f.length!==d.length)throw new i(f.length,d.length);if(f[0]!==d[0]||f[1]!==d[1])throw new RangeError("Dimension mismatch. Matrix A ("+f+") must match Matrix B ("+d+")");var g,y=f[0],x=f[1],w=o,b=0,N=r;"string"==typeof l&&l===v&&(g=l,w=a.find(o,[g,g]),b=a.convert(0,g),N=a.find(r,[g,g]));var E,M,A,O,T=n&&p?[]:void 0,_=[],S=[],C=new s({values:T,index:_,ptr:S,size:[y,x],datatype:g}),z=T?[]:void 0,k=T?[]:void 0,I=[],B=[];for(M=0;M2&&"OperatorNode:add"!==e.getIdentifier()&&"OperatorNode:multiply"!==e.getIdentifier()){var s=n.map(function(e){switch(e.getContent().type){case"ArrayNode":case"ConstantNode":case"SymbolNode":case"ParenthesisNode":return!1;default:return!0}});return s}var u=void 0;switch(n.length){case 0:u=[];break;case 1:var c=f.getPrecedence(n[0],t);if(i&&null!==c){var l,p;if("keep"===t?(l=n[0].getIdentifier(),p=e.getIdentifier()):(l=n[0].getContent().getIdentifier(),p=e.getContent().getIdentifier()),f.properties[a][p].latexLeftParens===!1){u=[!1];break}if(f.properties[c][l].latexParens===!1){u=[!1];break}}if(null===c){u=[!1];break}if(c<=a){u=[!0];break}u=[!1];break;case 2:var h,m=f.getPrecedence(n[0],t),d=f.isAssociativeWith(e,n[0],t);h=null!==m&&(m===a&&"right"===o&&!d||m=2&&"OperatorNode:multiply"===e.getIdentifier()&&e.implicit&&"auto"===t&&"hide"===r&&(u=n.map(function(e,t){var r="ParenthesisNode"===e.getIdentifier();return!(!u[t]&&!r)})),u}var d=n(r(7)).register,v=n(r(7)).compile,g=n(r(14));n(r(53)),n(r(40)),n(r(54));return p.prototype=new g,p.prototype.type="OperatorNode",p.prototype.isOperatorNode=!0,d(p.prototype.type,h),p.prototype.forEach=function(e){for(var t=0;t2&&("OperatorNode:add"===this.getIdentifier()||"OperatorNode:multiply"===this.getIdentifier())){var c=n.map(function(t,r){return t=t.toString(e),i[r]&&(t="("+t+")"),t});return this.implicit&&"OperatorNode:multiply"===this.getIdentifier()&&"hide"===r?c.join(" "):c.join(" "+this.op+" ")}return this.fn+"("+this.args.join(", ")+")"},p.prototype.toHTML=function(e){var t=e&&e.parenthesis?e.parenthesis:"keep",r=e&&e.implicit?e.implicit:"hide",n=this.args,i=m(this,t,r,n,!1);if(1===n.length){var a=f.getAssociativity(this,t),o=n[0].toHTML(e);return i[0]&&(o='('+o+')'),"right"===a?''+u(this.op)+""+o:"left"===a?''+u(this.op)+""+o:''+u(this.op)+""+o}if(2==n.length){var s=n[0].toHTML(e),c=n[1].toHTML(e);return i[0]&&(s='('+s+')'),i[1]&&(c='('+c+')'),this.implicit&&"OperatorNode:multiply"===this.getIdentifier()&&"hide"==r?s+''+c:s+''+u(this.op)+""+c}if(n.length>2&&("OperatorNode:add"===this.getIdentifier()||"OperatorNode:multiply"===this.getIdentifier())){var l=n.map(function(t,r){return t=t.toHTML(e),i[r]&&(t='('+t+')'),t});return this.implicit&&"OperatorNode:multiply"===this.getIdentifier()&&"hide"===r?l.join(''):l.join(''+u(this.op)+"")}return''+u(this.fn)+'('+l.join(',')+')'},p.prototype._toTex=function(e){var t=e&&e.parenthesis?e.parenthesis:"keep",r=e&&e.implicit?e.implicit:"hide",n=this.args,a=m(this,t,r,n,!0),o=i.operators[this.fn];if(o="undefined"==typeof o?this.op:o,1===n.length){var s=f.getAssociativity(this,t),u=n[0].toTex(e);return a[0]&&(u="\\left("+u+"\\right)"),"right"===s?o+u:"left"===s?u+o:u+o}if(2===n.length){var c=n[0],l=c.toTex(e);a[0]&&(l="\\left("+l+"\\right)");var p=n[1],h=p.toTex(e);a[1]&&(h="\\left("+h+"\\right)");var d;switch(d="keep"===t?c.getIdentifier():c.getContent().getIdentifier(),this.getIdentifier()){case"OperatorNode:divide":return o+"{"+l+"}{"+h+"}";case"OperatorNode:pow":switch(l="{"+l+"}",h="{"+h+"}",d){case"ConditionalNode":case"OperatorNode:divide":l="\\left("+l+"\\right)"}case"OperatorNode:multiply":if(this.implicit&&"hide"===r)return l+"~"+h}return l+o+h}if(n.length>2&&("OperatorNode:add"===this.getIdentifier()||"OperatorNode:multiply"===this.getIdentifier())){var v=n.map(function(t,r){ -return t=t.toTex(e),a[r]&&(t="\\left("+t+"\\right)"),t});return"OperatorNode:multiply"===this.getIdentifier()&&this.implicit?v.join("~"):v.join(o)}return"\\mathrm{"+this.fn+"}\\left("+n.map(function(t){return t.toTex(e)}).join(",")+"\\right)"},p.prototype.getIdentifier=function(){return this.type+":"+this.fn},p}var i=r(4),a=r(2).map,o=r(2).join,s=r(9).stringify,u=r(9).escape,c=r(13).isSafeMethod,f=r(52);t.name="OperatorNode",t.path="expression.node",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function a(t){if(!(this instanceof a))throw new SyntaxError("Constructor must be called with the new operator");if(!e.isNode(t))throw new TypeError('Node expected for parameter "content"');this.content=t}function o(e,t,r){if(!(e instanceof a))throw new TypeError("No valid ParenthesisNode");return u(e.content,t,r)}var s=n(r(7)).register,u=n(r(7)).compile,c=n(r(14));return a.prototype=new c,a.prototype.type="ParenthesisNode",a.prototype.isParenthesisNode=!0,s(a.prototype.type,o),a.prototype.getContent=function(){return this.content.getContent()},a.prototype.forEach=function(e){e(this.content,"content",this)},a.prototype.map=function(e){var t=e(this.content,"content",this);return new a(t)},a.prototype.clone=function(){return new a(this.content)},a.prototype._toString=function(e){return!e||e&&!e.parenthesis||e&&"keep"===e.parenthesis?"("+this.content.toString(e)+")":this.content.toString(e)},a.prototype.toHTML=function(e){return!e||e&&!e.parenthesis||e&&"keep"===e.parenthesis?'('+this.content.toHTML(e)+')':this.content.toHTML(e)},a.prototype._toTex=function(e){return!e||e&&!e.parenthesis||e&&"keep"===e.parenthesis?"\\left("+this.content.toTex(e)+"\\right)":this.content.toTex(e)},a}t.name="ParenthesisNode",t.path="expression.node",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,f){var l=n(r(0)),p=f("concat",{"...Array | Matrix | number | BigNumber":function(t){var r,n,f=t.length,p=-1,h=!1,m=[];for(r=0;r0&&p>n)throw new u(p,n+1)}else{var v=a(d).valueOf(),g=s.size(v);if(m[r]=v,n=p,p=g.length-1,r>0&&p!=n)throw new c(n+1,p+1)}}if(0==m.length)throw new SyntaxError("At least one matrix expected");for(var y=m.shift();m.length;)y=i(y,m.shift(),p,0);return h?l(y):y},"...string":function(e){return e.join("")}});return p.toTex=void 0,p}function i(e,t,r,n){if(n=i.length)throw new s(t,i.length);return o(e)?e.create(n(e.valueOf(),t,r)):n(e,t,r)}},function(e,t,r){"use strict";var n=r(46);e.exports=function(e){for(var t=0;te)throw new TypeError("k must be less than or equal to n");for(r=Math.max(t,e-t),n=1,i=1;i<=e-r;i++)n=n*(r+i)/i;return n},"BigNumber, BigNumber":function(t,r){var n,a,o,s,u=new e.BigNumber(1);if(!i(t)||!i(r))throw new TypeError("Positive integer value expected in function combinations");if(r.gt(t))throw new TypeError("k must be less than n in function combinations");for(n=t.minus(r),r.lt(n)&&(n=r),a=u,o=u,s=t.minus(n);o.lte(s);o=o.plus(1))a=a.times(n.plus(o)).dividedBy(o);return a}});return o.toTex={2:"\\binom{${args[0]}}{${args[1]}}"},o}function i(e){return e.isInteger()&&e.gte(0)}var a=r(3).isInteger;t.name="combinations",t.factory=n},function(e,t){e.exports=function(e){return e&&e.constructor.prototype.isBigNumber||!1}},function(e,t,r){"use strict";function n(e,t,r,n){function i(){if(!(this instanceof i))throw new SyntaxError("Constructor must be called with the new operator")}return i.prototype.type="Matrix",i.prototype.isMatrix=!0,i.storage=function(e){if(!o(e))throw new TypeError("format must be a string value");var t=i._storage[e];if(!t)throw new SyntaxError("Unsupported matrix storage format: "+e);return t},i._storage={},i.prototype.storage=function(){throw new Error("Cannot invoke storage on a Matrix interface")},i.prototype.datatype=function(){throw new Error("Cannot invoke datatype on a Matrix interface")},i.prototype.create=function(e,t){throw new Error("Cannot invoke create on a Matrix interface")},i.prototype.subset=function(e,t,r){throw new Error("Cannot invoke subset on a Matrix interface")},i.prototype.get=function(e){throw new Error("Cannot invoke get on a Matrix interface")},i.prototype.set=function(e,t,r){throw new Error("Cannot invoke set on a Matrix interface")},i.prototype.resize=function(e,t){throw new Error("Cannot invoke resize on a Matrix interface")},i.prototype.reshape=function(e,t){throw new Error("Cannot invoke reshape on a Matrix interface")},i.prototype.clone=function(){throw new Error("Cannot invoke clone on a Matrix interface")},i.prototype.size=function(){throw new Error("Cannot invoke size on a Matrix interface")},i.prototype.map=function(e,t){throw new Error("Cannot invoke map on a Matrix interface")},i.prototype.forEach=function(e){throw new Error("Cannot invoke forEach on a Matrix interface")},i.prototype.toArray=function(){throw new Error("Cannot invoke toArray on a Matrix interface")},i.prototype.valueOf=function(){throw new Error("Cannot invoke valueOf on a Matrix interface")},i.prototype.format=function(e){throw new Error("Cannot invoke format on a Matrix interface")},i.prototype.toString=function(){throw new Error("Cannot invoke toString on a Matrix interface")},i}var i=r(25),a=i.string,o=a.isString;t.name="Matrix",t.path="type",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(11)),s=e.SparseMatrix,u=function(e,t,r){var n=e._values,u=e._index,c=e._ptr,f=e._size,l=e._datatype,p=t._values,h=t._index,m=t._ptr,d=t._size,v=t._datatype;if(f.length!==d.length)throw new i(f.length,d.length);if(f[0]!==d[0]||f[1]!==d[1])throw new RangeError("Dimension mismatch. Matrix A ("+f+") must match Matrix B ("+d+")");var g,y=f[0],x=f[1],w=o,b=0,N=r;"string"==typeof l&&l===v&&(g=l,w=a.find(o,[g,g]),b=a.convert(0,g),N=a.find(r,[g,g]));var E,M,A,O,T,_=n&&p?[]:void 0,S=[],C=[],z=new s({values:_,index:S,ptr:C,size:[y,x],datatype:g}),k=n&&p?[]:void 0,I=n&&p?[]:void 0,B=[],P=[];for(M=0;M.'+o(this.getObjectProperty())+"":'['+t.join(',')+']'},u.prototype._toTex=function(e){var t=this.dimensions.map(function(t){return t.toTex(e)});return this.dotNotation?"."+this.getObjectProperty():"_{"+t.join(",")+"}"},u.prototype.needsSize=function(){return this.dimensions.some(function(t){return e.isRangeNode(t)&&t.needsEnd()||e.isSymbolNode(t)&&"end"===t.name})},u}var i=r(2).map,a=r(2).join,o=r(9).escape;t.name="IndexNode",t.path="expression.node",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){function o(t,r,n){if(!(this instanceof o))throw new SyntaxError("Constructor must be called with the new operator");if(!e.isNode(t))throw new TypeError("Node expected");if(!e.isNode(r))throw new TypeError("Node expected");if(n&&!e.isNode(n))throw new TypeError("Node expected");if(arguments.length>3)throw new Error("Too many arguments");this.start=t,this.end=r,this.step=n||null}function s(e,t,r){if(!(e instanceof o))throw new TypeError("No valid RangeNode");return"math.range("+f(e.start,t,r)+", "+f(e.end,t,r)+(e.step?", "+f(e.step,t,r):"")+")"}function u(e,t){var r=i.getPrecedence(e,t),n={},a=i.getPrecedence(e.start,t);if(n.start=null!==a&&a<=r||"all"===t,e.step){var o=i.getPrecedence(e.step,t);n.step=null!==o&&o<=r||"all"===t}var s=i.getPrecedence(e.end,t);return n.end=null!==s&&s<=r||"all"===t,n}var c=n(r(7)).register,f=n(r(7)).compile,l=n(r(14));return o.prototype=new l,o.prototype.type="RangeNode",o.prototype.isRangeNode=!0,o.prototype.needsEnd=function(){var t=this.filter(function(t){return e.isSymbolNode(t)&&"end"===t.name});return t.length>0},c(o.prototype.type,s),o.prototype.forEach=function(e){e(this.start,"start",this),e(this.end,"end",this),this.step&&e(this.step,"step",this)},o.prototype.map=function(e){return new o(this._ifNode(e(this.start,"start",this)),this._ifNode(e(this.end,"end",this)),this.step&&this._ifNode(e(this.step,"step",this)))},o.prototype.clone=function(){return new o(this.start,this.end,this.step&&this.step)},o.prototype._toString=function(e){var t,r=e&&e.parenthesis?e.parenthesis:"keep",n=u(this,r),i=this.start.toString(e);if(n.start&&(i="("+i+")"),t=i,this.step){var a=this.step.toString(e);n.step&&(a="("+a+")"),t+=":"+a}var o=this.end.toString(e);return n.end&&(o="("+o+")"),t+=":"+o},o.prototype.toHTML=function(e){var t,r=e&&e.parenthesis?e.parenthesis:"keep",n=u(this,r),i=this.start.toHTML(e);if(n.start&&(i='('+i+')'),t=i,this.step){var a=this.step.toHTML(e);n.step&&(a='('+a+')'),t+=':'+a}var o=this.end.toHTML(e);return n.end&&(o='('+o+')'),t+=':'+o},o.prototype._toTex=function(e){var t=e&&e.parenthesis?e.parenthesis:"keep",r=u(this,t),n=this.start.toTex(e);if(r.start&&(n="\\left("+n+"\\right)"),this.step){var i=this.step.toTex(e);r.step&&(i="\\left("+i+"\\right)"),n+=":"+i}var a=this.end.toTex(e);return r.end&&(a="\\left("+a+"\\right)"),n+=":"+a},o}var i=r(52);t.name="RangeNode",t.path="expression.node",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function s(t){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(this.items=t||[],!Array.isArray(this.items)||!this.items.every(e.isNode))throw new TypeError("Array containing Nodes expected");var r=function(){throw new Error("Property `ArrayNode.nodes` is deprecated, use `ArrayNode.items` instead")};Object.defineProperty(this,"nodes",{get:r,set:r})}function u(e,t,r){if(!(e instanceof s))throw new TypeError("No valid ArrayNode");var n="Array"!==t.math.config().matrix,o=i(e.items,function(e){return f(e,t,r)});return(n?"math.matrix([":"[")+a(o,",")+(n?"])":"]")}var c=n(r(7)).register,f=n(r(7)).compile,l=n(r(14));return s.prototype=new l,s.prototype.type="ArrayNode",s.prototype.isArrayNode=!0,c(s.prototype.type,u),s.prototype.forEach=function(e){for(var t=0;t['+t.join(',')+']'},s.prototype._toTex=function(e){var t="\\begin{bmatrix}";return this.items.forEach(function(r){t+=r.items?r.items.map(function(t){return t.toTex(e)}).join("&"):r.toTex(e),t+="\\\\"}),t+="\\end{bmatrix}"},s}var i=r(2).map,a=r(2).join;t.name="ArrayNode",t.path="expression.node",t.factory=n},function(e,t){function r(e,t,r,n){return function(t,r,n){var i=t.filter(function(t){return e.isSymbolNode(t)&&!(t.name in r)&&!(t.name in n)})[0];if(!i)throw new Error('No undefined variable found in inline expression "'+t+'"');var a=i.name,o=Object.create(n),s=t.compile();return function(e){return o[a]=e,s.eval(o)}}}t.factory=r},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("isZero",{number:function(e){return 0===e},BigNumber:function(e){return e.isZero()},Complex:function(e){return 0===e.re&&0===e.im},Fraction:function(e){return 1===e.d&&0===e.n},Unit:function(e){return a(e.value)},"Array | Matrix":function(e){return i(e,a)}});return a}var i=r(1);r(3);t.name="isZero",t.factory=n},function(e,t,r){"use strict";function n(){var e=function(e){return-e-2};return e}t.name="cs_flip",t.path="sparse",t.factory=n},function(e,t,r){"use strict";function n(e){var t=e.DenseMatrix,r=function(r,n,i){var u=r.size();if(2!==u.length)throw new RangeError("Matrix must be two dimensional (size: "+a.format(u)+")");var c=u[0],f=u[1];if(c!==f)throw new RangeError("Matrix must be square (size: "+a.format(u)+")");var l,p,h;if(e.isMatrix(n)){var m=n.size();if(1===m.length){if(m[0]!==c)throw new RangeError("Dimension mismatch. Matrix columns must match vector length.");for(l=[],h=n._data,p=0;p0)if(++s>c)for(s-=c;s--;u+="0");else s1&&(null==f[o+1]&&(f[o+1]=0),f[o+1]+=f[o]>>1,f[o]&=1)}return f.reverse()}var i=r(86);e.exports=function(e,t,r){var a,o,s=e.constructor,u=+(e.s<0),c=+(t.s<0);if(u){a=n(i(e));for(var f=0;f0;)r(l[--m],p[--d])==v&&(g=g.plus(y)),y=y.times(x);for(;d>0;)r(h,p[--d])==v&&(g=g.plus(y)),y=y.times(x);return s.config({precision:w}),0==v&&(g.s=-g.s),g}},function(e,t){e.exports=function(e){if(e.isFinite()&&!e.isInteger())throw new Error("Integer expected in function bitNot");var t=e.constructor,r=t.precision;t.config({precision:1e9});var e=e.plus(new t(1));return e.s=-e.s||null,t.config({precision:r}),e}},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(11)),s=e.SparseMatrix,u=function(e,t,r){var n=e._values,u=e._index,c=e._ptr,f=e._size,l=e._datatype,p=t._values,h=t._index,m=t._ptr,d=t._size,v=t._datatype;if(f.length!==d.length)throw new i(f.length,d.length);if(f[0]!==d[0]||f[1]!==d[1])throw new RangeError("Dimension mismatch. Matrix A ("+f+") must match Matrix B ("+d+")");if(!n||!p)throw new Error("Cannot perform operation on Pattern Sparse Matrices");var g,y=f[0],x=f[1],w=o,b=0,N=r;"string"==typeof l&&l===v&&(g=l,w=a.find(o,[g,g]),b=a.convert(0,g),N=a.find(r,[g,g]));for(var E,M,A,O,T=[],_=[],S=[],C=new s({values:T,index:_,ptr:S,size:[y,x],datatype:g}),z=[],k=[],I=0;I1)throw new Error("Only one dimensional matrices supported");return u(t.valueOf(),r,n)}if(Array.isArray(t))return u(t,r,n)}function u(e,t,r){if(t>=e.length)throw new Error("k out of bounds");for(var n=0,i=e.length-1;n=0){var u=e[o];e[o]=e[a],e[a]=u,--o}else++a;r(e[a],s)>0&&--a,t<=a?i=a:n=a+1}return e[t]}var c=n(r(49));return a("partitionSelect",{"Array | Matrix, number":function(e,t){return s(e,t,c)},"Array | Matrix, number, string":function(e,t,r){if("asc"===r)return s(e,t,c);if("desc"===r)return s(e,t,o);throw new Error('Compare string must be "asc" or "desc"')},"Array | Matrix, number, function":s})}var i=r(3).isInteger;t.name="partitionSelect",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,s,u){function c(t){if(!h.hasOwnProperty(t))throw new Error("Unknown distribution "+t);var r=Array.prototype.slice.call(arguments,1),n=h[t].apply(this,r);return function(t){var r={random:function(t,r,n){var s,c,l;if(arguments.length>3)throw new i("random",arguments.length,0,3);if(1===arguments.length?a(t)?s=t:l=t:2===arguments.length?a(t)?(s=t,l=r):(c=t,l=r):(s=t,c=r,l=n),void 0!==c&&!o(c)||void 0!==l&&!o(l))throw new TypeError("Invalid argument in function random");if(void 0===l&&(l=1),void 0===c&&(c=0),void 0!==s){var p=h(s.valueOf(),c,l,u);return e.isMatrix(s)?f(p):p}return u(c,l)},randomInt:s({"number | Array":function(t){var r=0;if(a(t)){var n=t,i=1,o=h(n.valueOf(),r,i,c);return e.isMatrix(n)?f(o):o}var i=t;return c(r,i)},"number | Array, number":function(t,r){if(a(t)){var n=t,i=r,o=0,s=h(n.valueOf(),o,i,c);return e.isMatrix(n)?f(s):s}var o=t,i=r;return c(o,i)},"Array, number, number":function(e,t,r){var n=h(e.valueOf(),t,r,c);return e&&e.isMatrix===!0?f(n):n}}),pickRandom:s({Array:function(e){return n(e)},"Array, number | Array":function(e,t){var r,i;if(Array.isArray(t))i=t;else{if(!o(t))throw new TypeError("Invalid argument in function pickRandom");r=t}return n(e,r,i)},"Array, number | Array, Array | number":function(e,t,r){var i,a;if(Array.isArray(t)?(a=t,i=r):(a=r,i=t),!Array.isArray(a)||!o(i))throw new TypeError("Invalid argument in function pickRandom");return n(e,i,a)}})},n=function(t,r,n){var i="undefined"==typeof r;if(i&&(r=1),e.isMatrix(t))t=t.valueOf();else if(!Array.isArray(t))throw new TypeError("Unsupported type of value in function pickRandom");if(l.size(t).length>1)throw new Error("Only one dimensional vectors supported");if("undefined"!=typeof n){if(n.length!=t.length)throw new Error("Weights must have the same length as possibles");for(var a=0,s=0,u=n.length;s=c)return t;for(var f,h=[];h.length1)for(var a=0,i=e.shift();a1;)e=p(),t=p(),r=1/6*Math.pow(-2*Math.log(e),.5)*Math.cos(2*Math.PI*t)+.5;return r}}};return c.toTex=void 0,c}var i=r(50),a=r(46),o=r(3).isNumber;t.name="distribution",t.factory=n},function(e,t,r){var n=r(153);t.mixin=function(e){var t=new n;return e.on=t.on.bind(t),e.off=t.off.bind(t),e.once=t.once.bind(t),e.emit=t.emit.bind(t),e}},function(e,t,r){function n(e,t,r,n,s){return i.prototype.type="Complex",i.prototype.isComplex=!0,i.prototype.toJSON=function(){return{mathjs:"Complex",re:this.re,im:this.im}},i.prototype.toPolar=function(){return{r:this.abs(),phi:this.arg()}},i.prototype.format=function(e){var t="",r=this.im,n=this.re,i=a(this.re,e),s=a(this.im,e),u=o(e)?e:e?e.precision:null;if(null!==u){var c=Math.pow(10,-u);Math.abs(n/r)t.re?1:e.ret.im?1:e.im0?this.step>0?this.start:this.start+(e-1)*this.step:void 0},a.prototype.max=function(){var e=this.size()[0];return e>0?this.step>0?this.start+(e-1)*this.step:this.start:void 0},a.prototype.forEach=function(e){var t=this.start,r=this.step,n=this.end,i=0;if(r>0)for(;tn;)e(t,[i],this),t+=r,i++},a.prototype.map=function(e){var t=[];return this.forEach(function(r,n,i){t[n[0]]=e(r,n,i)}),t},a.prototype.toArray=function(){var e=[];return this.forEach(function(t,r){ -e[r[0]]=t}),e},a.prototype.valueOf=function(){return this.toArray()},a.prototype.format=function(e){var t=i.format(this.start,e);return 1!=this.step&&(t+=":"+i.format(this.step,e)),t+=":"+i.format(this.end,e)},a.prototype.toString=function(){return this.format()},a.prototype.toJSON=function(){return{mathjs:"Range",start:this.start,end:this.end,step:this.step}},a.fromJSON=function(e){return new a(e.start,e.end,e.step)},a}var i=r(3);t.name="Range",t.path="type",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){function i(e){if(!(this instanceof i))throw new SyntaxError("Constructor must be called with the new operator");this.entries=e||[]}return i.prototype.type="ResultSet",i.prototype.isResultSet=!0,i.prototype.valueOf=function(){return this.entries},i.prototype.toString=function(){return"["+this.entries.join(", ")+"]"},i.prototype.toJSON=function(){return{mathjs:"ResultSet",entries:this.entries}},i.fromJSON=function(e){return new i(e.entries)},i}t.name="ResultSet",t.path="type",t.factory=n},function(e,t,r){function n(e){return e[0].precision}var i=r(32).memoize;t.e=i(function(e){return new e(1).exp()},n),t.phi=i(function(e){return new e(1).plus(new e(5).sqrt()).div(2)},n),t.pi=i(function(e){return e.acos(-1)},n),t.tau=i(function(e){return t.pi(e).times(2)},n)},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("fix",{number:function(e){return e>0?Math.floor(e):Math.ceil(e)},Complex:function(t){return new e.Complex(t.re>0?Math.floor(t.re):Math.ceil(t.re),t.im>0?Math.floor(t.im):Math.ceil(t.im))},BigNumber:function(e){return e.isNegative()?e.ceil():e.floor()},Fraction:function(e){return e.s<0?e.ceil():e.floor()},"Array | Matrix":function(e){return i(e,a,!0)}});return a.toTex={1:"\\mathrm{${name}}\\left(${args[0]}\\right)"},a}var i=r(1);t.name="fix",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var c=n(r(0)),f=n(r(11)),l=n(r(38)),p=n(r(17)),h=n(r(16)),m=n(r(6)),d=o("round",{number:Math.round,"number, number":function(e,t){if(!a(t))throw new TypeError(u);if(t<0||t>15)throw new Error("Number of decimals in function round must be in te range of 0-15");return i(e,t)},Complex:function(e){return e.round()},"Complex, number":function(e,t){if(t%1)throw new TypeError(u);return e.round(t)},"Complex, BigNumber":function(e,t){if(!t.isInteger())throw new TypeError(u);var r=t.toNumber();return e.round(r)},"number, BigNumber":function(t,r){if(!r.isInteger())throw new TypeError(u);return new e.BigNumber(t).toDecimalPlaces(r.toNumber())},BigNumber:function(e){return e.toDecimalPlaces(0)},"BigNumber, BigNumber":function(e,t){if(!t.isInteger())throw new TypeError(u);return e.toDecimalPlaces(t.toNumber())},Fraction:function(e){return e.round()},"Fraction, number":function(e,t){if(t%1)throw new TypeError(u);return e.round(t)},"Array | Matrix":function(e){return s(e,d,!0)},"Matrix, number | BigNumber":function(e,t){var r;switch(e.storage()){case"sparse":r=p(e,t,d,!1);break;default:r=m(e,t,d,!1)}return r},"number | Complex | BigNumber, Matrix":function(e,t){if(!f(e,0)){var r;switch(t.storage()){case"sparse":r=h(t,e,d,!0);break;default:r=m(t,e,d,!0)}return r}return l(t.size(),t.storage())},"Array, number | BigNumber":function(e,t){return m(c(e),t,d,!1).valueOf()},"number | Complex | BigNumber, Array":function(e,t){return m(c(t),e,d,!0).valueOf()}});return d.toTex={1:"\\left\\lfloor${args[0]}\\right\\rceil",2:void 0},d}function i(e,t){return parseFloat(o(e,t))}var a=r(3).isInteger,o=r(3).toFixed,s=r(1),u="Number of decimals in function round must be an integer";t.name="round",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("format",{any:i.format,"any, Object | function | number":i.format});return a.toTex=void 0,a}var i=r(9);t.name="format",t.factory=n},function(e,t,r){function n(e,t,n,i){var a={};return a.bignumber=r(192),a.boolean=r(193),a.complex=r(194),a.createUnit=r(195),a.fraction=r(196),a.index=r(197),a.matrix=r(198),a.number=r(199),a.sparse=r(200),a.splitUnit=r(201),a.string=r(202),a.unit=r(203),a.e=r(100),a.E=r(100),a.false=r(204),a.i=r(205),a.Infinity=r(206),a.LN2=r(207),a.LN10=r(208),a.LOG2E=r(209),a.LOG10E=r(210),a.NaN=r(211),a.null=r(212),a.pi=r(101),a.PI=r(101),a.phi=r(213),a.SQRT1_2=r(214),a.SQRT2=r(215),a.tau=r(216),a.true=r(217),a.version=r(218),a.speedOfLight={description:"Speed of light in vacuum",examples:["speedOfLight"]},a.gravitationConstant={description:"Newtonian constant of gravitation",examples:["gravitationConstant"]},a.planckConstant={description:"Planck constant",examples:["planckConstant"]},a.reducedPlanckConstant={description:"Reduced Planck constant",examples:["reducedPlanckConstant"]},a.magneticConstant={description:"Magnetic constant (vacuum permeability)",examples:["magneticConstant"]},a.electricConstant={description:"Electric constant (vacuum permeability)",examples:["electricConstant"]},a.vacuumImpedance={description:"Characteristic impedance of vacuum",examples:["vacuumImpedance"]},a.coulomb={description:"Coulomb's constant",examples:["coulomb"]},a.elementaryCharge={description:"Elementary charge",examples:["elementaryCharge"]},a.bohrMagneton={description:"Borh magneton",examples:["bohrMagneton"]},a.conductanceQuantum={description:"Conductance quantum",examples:["conductanceQuantum"]},a.inverseConductanceQuantum={description:"Inverse conductance quantum",examples:["inverseConductanceQuantum"]},a.magneticFluxQuantum={description:"Magnetic flux quantum",examples:["magneticFluxQuantum"]},a.nuclearMagneton={description:"Nuclear magneton",examples:["nuclearMagneton"]},a.klitzing={description:"Von Klitzing constant",examples:["klitzing"]},a.bohrRadius={description:"Borh radius",examples:["bohrRadius"]},a.classicalElectronRadius={description:"Classical electron radius",examples:["classicalElectronRadius"]},a.electronMass={description:"Electron mass",examples:["electronMass"]},a.fermiCoupling={description:"Fermi coupling constant",examples:["fermiCoupling"]},a.fineStructure={description:"Fine-structure constant",examples:["fineStructure"]},a.hartreeEnergy={description:"Hartree energy",examples:["hartreeEnergy"]},a.protonMass={description:"Proton mass",examples:["protonMass"]},a.deuteronMass={description:"Deuteron Mass",examples:["deuteronMass"]},a.neutronMass={description:"Neutron mass",examples:["neutronMass"]},a.quantumOfCirculation={description:"Quantum of circulation",examples:["quantumOfCirculation"]},a.rydberg={description:"Rydberg constant",examples:["rydberg"]},a.thomsonCrossSection={description:"Thomson cross section",examples:["thomsonCrossSection"]},a.weakMixingAngle={description:"Weak mixing angle",examples:["weakMixingAngle"]},a.efimovFactor={description:"Efimov factor",examples:["efimovFactor"]},a.atomicMass={description:"Atomic mass constant",examples:["atomicMass"]},a.avogadro={description:"Avogadro's number",examples:["avogadro"]},a.boltzmann={description:"Boltzmann constant",examples:["boltzmann"]},a.faraday={description:"Faraday constant",examples:["faraday"]},a.firstRadiation={description:"First radiation constant",examples:["firstRadiation"]},a.loschmidt={description:"Loschmidt constant at T=273.15 K and p=101.325 kPa",examples:["loschmidt"]},a.gasConstant={description:"Gas constant",examples:["gasConstant"]},a.molarPlanckConstant={description:"Molar Planck constant",examples:["molarPlanckConstant"]},a.molarVolume={description:"Molar volume of an ideal gas at T=273.15 K and p=101.325 kPa",examples:["molarVolume"]},a.sackurTetrode={description:"Sackur-Tetrode constant at T=1 K and p=101.325 kPa",examples:["sackurTetrode"]},a.secondRadiation={description:"Second radiation constant",examples:["secondRadiation"]},a.stefanBoltzmann={description:"Stefan-Boltzmann constant",examples:["stefanBoltzmann"]},a.wienDisplacement={description:"Wien displacement law constant",examples:["wienDisplacement"]},a.molarMass={description:"Molar mass constant",examples:["molarMass"]},a.molarMassC12={description:"Molar mass constant of carbon-12",examples:["molarMassC12"]},a.gravity={description:"Standard acceleration of gravity (standard acceleration of free-fall on Earth)",examples:["gravity"]},a.planckLength={description:"Planck length",examples:["planckLength"]},a.planckMass={description:"Planck mass",examples:["planckMass"]},a.planckTime={description:"Planck time",examples:["planckTime"]},a.planckCharge={description:"Planck charge",examples:["planckCharge"]},a.planckTemperature={description:"Planck temperature",examples:["planckTemperature"]},a.derivative=r(219),a.lsolve=r(220),a.lup=r(221),a.lusolve=r(222),a.simplify=r(223),a.slu=r(224),a.usolve=r(225),a.qr=r(226),a.abs=r(227),a.add=r(228),a.cbrt=r(229),a.ceil=r(230),a.cube=r(231),a.divide=r(232),a.dotDivide=r(233),a.dotMultiply=r(234),a.dotPow=r(235),a.exp=r(236),a.fix=r(237),a.floor=r(238),a.gcd=r(239),a.hypot=r(240),a.lcm=r(241),a.log=r(242),a.log10=r(243),a.mod=r(244),a.multiply=r(245),a.norm=r(246),a.nthRoot=r(247),a.pow=r(248),a.round=r(249),a.sign=r(250),a.sqrt=r(251),a.square=r(252),a.subtract=r(253),a.unaryMinus=r(254),a.unaryPlus=r(255),a.xgcd=r(256),a.bitAnd=r(257),a.bitNot=r(258),a.bitOr=r(259),a.bitXor=r(260),a.leftShift=r(261),a.rightArithShift=r(262),a.rightLogShift=r(263),a.bellNumbers=r(264),a.catalan=r(265),a.composition=r(266),a.stirlingS2=r(267),a.config=r(268),a.import=r(269),a.typed=r(270),a.arg=r(271),a.conj=r(272),a.re=r(273),a.im=r(274),a.eval=r(275),a.help=r(276),a.distance=r(277),a.intersect=r(278),a.and=r(279),a.not=r(280),a.or=r(281),a.xor=r(282),a.concat=r(283),a.cross=r(284),a.det=r(285),a.diag=r(286),a.dot=r(287),a.eye=r(288),a.filter=r(289),a.flatten=r(290),a.forEach=r(291),a.inv=r(292),a.kron=r(293),a.map=r(294),a.ones=r(295),a.partitionSelect=r(296),a.range=r(297),a.resize=r(298),a.reshape=r(299),a.size=r(300),a.sort=r(301),a.squeeze=r(302),a.subset=r(303),a.trace=r(304),a.transpose=r(305),a.zeros=r(306),a.combinations=r(307),a.factorial=r(308),a.gamma=r(309),a.kldivergence=r(310),a.multinomial=r(311),a.permutations=r(312),a.pickRandom=r(313),a.random=r(314),a.randomInt=r(315),a.compare=r(316),a.compareNatural=r(317),a.deepEqual=r(318),a.equal=r(319),a.larger=r(320),a.largerEq=r(321),a.smaller=r(322),a.smallerEq=r(323),a.unequal=r(324),a.setCartesian=r(325),a.setDifference=r(326),a.setDistinct=r(327),a.setIntersect=r(328),a.setIsSubset=r(329),a.setMultiplicity=r(330),a.setPowerset=r(331),a.setSize=r(332),a.setSymDifference=r(333),a.setUnion=r(334),a.erf=r(335),a.mad=r(336),a.max=r(337),a.mean=r(338),a.median=r(339),a.min=r(340),a.mode=r(341),a.prod=r(342),a.quantileSeq=r(343),a.std=r(344),a.sum=r(345),a.var=r(346),a.acos=r(347),a.acosh=r(348),a.acot=r(349),a.acoth=r(350),a.acsc=r(351),a.acsch=r(352),a.asec=r(353),a.asech=r(354),a.asin=r(355),a.asinh=r(356),a.atan=r(357),a.atanh=r(358),a.atan2=r(359),a.cos=r(360),a.cosh=r(361),a.cot=r(362),a.coth=r(363),a.csc=r(364),a.csch=r(365),a.sec=r(366),a.sech=r(367),a.sin=r(368),a.sinh=r(369),a.tan=r(370),a.tanh=r(371),a.to=r(372),a.clone=r(373),a.format=r(374),a.isNaN=r(375),a.isInteger=r(376),a.isNegative=r(377),a.isNumeric=r(378),a.isPositive=r(379),a.isPrime=r(380),a.isZero=r(381),a.typeof=r(382),a}t.name="docs",t.path="expression",t.factory=n},function(e,t){e.exports={name:"e",category:"Constants",syntax:["e"],description:"Euler's number, the base of the natural logarithm. Approximately equal to 2.71828",examples:["e","e ^ 2","exp(2)","log(e)"],seealso:["exp"]}},function(e,t){e.exports={name:"pi",category:"Constants",syntax:["pi"],description:"The number pi is a mathematical constant that is the ratio of a circle's circumference to its diameter, and is approximately equal to 3.14159",examples:["pi","sin(pi/2)"],seealso:["tau"]}},function(e,t,r){"use strict";function n(e,t,n,o){function s(t,r){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!e.isNode(t))throw new TypeError('Node expected for parameter "object"');if(!e.isIndexNode(r))throw new TypeError('IndexNode expected for parameter "index"');this.object=t||null,this.index=r,Object.defineProperty(this,"name",{get:function(){return this.index?this.index.isObjectProperty()?this.index.getObjectProperty():"":this.object.name||""}.bind(this),set:function(){throw new Error("Cannot assign a new name, name is read-only")}})}function u(e,t,r){if(!(e instanceof s))throw new TypeError("No valid AccessorNode");t.access=h,t.getSafeProperty=a;var n=l(e.object,t,r),o=l(e.index,t,r);if(e.index.isObjectProperty()){var u=i(e.index.getObjectProperty());return"getSafeProperty("+n+", "+u+")"}return e.index.needsSize()?"(function () { var object = "+n+"; var size = math.size(object).valueOf(); return access(object, "+o+");})()":"access("+n+", "+o+")"}function c(t){return!(e.isAccessorNode(t)||e.isArrayNode(t)||e.isConstantNode(t)||e.isFunctionNode(t)||e.isObjectNode(t)||e.isParenthesisNode(t)||e.isSymbolNode(t))}var f=n(r(7)).register,l=n(r(7)).compile,p=n(r(14)),h=(n(r(78)),n(r(103)));return s.prototype=new p,s.prototype.type="AccessorNode",s.prototype.isAccessorNode=!0,f(s.prototype.type,u),s.prototype.forEach=function(e){e(this.object,"object",this),e(this.index,"index",this)},s.prototype.map=function(e){return new s(this._ifNode(e(this.object,"object",this)),this._ifNode(e(this.index,"index",this)))},s.prototype.clone=function(){return new s(this.object,this.index)},s.prototype._toString=function(e){var t=this.object.toString(e);return c(this.object)&&(t="("+t+")"),t+this.index.toString(e)},s.prototype.toHTML=function(e){var t=this.object.toHTML(e);return c(this.object)&&(t='('+t+')'),t+this.index.toHTML(e)},s.prototype._toTex=function(e){var t=this.object.toTex(e);return c(this.object)&&(t="\\left("+t+"\\right)"),t+this.index.toTex(e)},s}var i=r(9).stringify,a=r(13).getSafeProperty;t.name="AccessorNode",t.path="expression.node",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var s=n(r(22));return function(e,t){try{if(Array.isArray(e))return s(e,t);if(e&&"function"==typeof e.subset)return e.subset(t);if("string"==typeof e)return s(e,t);if("object"==typeof e){if(!t.isObjectProperty())throw new TypeError("Cannot apply a numeric index as object property");return a(e,t.getObjectProperty())}throw new TypeError("Cannot apply index: unsupported type of object")}catch(e){throw i(e)}}}var i=r(41).transform,a=r(13).getSafeProperty;t.factory=n},function(e,t,r){"use strict";function n(e,t,n,s){function u(t,r,n){if(!(this instanceof u))throw new SyntaxError("Constructor must be called with the new operator");if(this.object=t,this.index=n?r:null,this.value=n?n:r,!e.isSymbolNode(t)&&!e.isAccessorNode(t))throw new TypeError('SymbolNode or AccessorNode expected as "object"');if(e.isSymbolNode(t)&&"end"===t.name)throw new Error('Cannot assign to symbol "end"');if(this.index&&!e.isIndexNode(this.index))throw new TypeError('IndexNode expected as "index"');if(!e.isNode(this.value))throw new TypeError('Node expected as "value"');Object.defineProperty(this,"name",{get:function(){return this.index?this.index.isObjectProperty()?this.index.getObjectProperty():"":this.object.name||""}.bind(this),set:function(){throw new Error("Cannot assign a new name, name is read-only")}})}function c(t,r,n){if(!(t instanceof u))throw new TypeError("No valid AssignmentNode");r.assign=m,r.access=d,r.getSafeProperty=a,r.setSafeProperty=o;var s,c=p(t.object,r,n),f=t.index?p(t.index,r,n):null,l=p(t.value,r,n),h=i(t.object.name);if(t.index){if(t.index.isObjectProperty()){var v=i(t.index.getObjectProperty());return"setSafeProperty("+c+", "+v+", "+l+")"}if(e.isSymbolNode(t.object))return s=t.index.needsSize()?"var size = math.size(object).valueOf();":"","(function () { var object = "+c+"; var value = "+l+"; "+s+" setSafeProperty(scope, "+h+", assign(object, "+f+", value)); return value;})()";s=t.index.needsSize()?"var size = math.size(object).valueOf();":"";var g=p(t.object.object,r,n);if(t.object.index.isObjectProperty()){var y=i(t.object.index.getObjectProperty());return"(function () { var parent = "+g+"; var object = getSafeProperty(parent, "+y+"); var value = "+l+";"+s+" setSafeProperty(parent, "+y+", assign(object, "+f+", value)); return value;})()"}var x=t.object.index.needsSize()?"var size = math.size(parent).valueOf();":"",w=p(t.object.index,r,n);return"(function () { var parent = "+g+"; "+x+" var parentIndex = "+w+"; var object = access(parent, parentIndex); var value = "+l+"; "+s+" assign(parent, parentIndex, assign(object, "+f+", value)); return value;})()"}if(!e.isSymbolNode(t.object))throw new TypeError("SymbolNode expected as object");return"setSafeProperty(scope, "+h+", "+l+")"}function f(e,t){t||(t="keep");var r=v.getPrecedence(e,t),n=v.getPrecedence(e.value,t);return"all"===t||null!==n&&n<=r}var l=n(r(7)).register,p=n(r(7)).compile,h=n(r(14)),m=(n(r(80)),n(r(0)),n(r(385))),d=n(r(103)),v=(r(77),r(52));return u.prototype=new h,u.prototype.type="AssignmentNode",u.prototype.isAssignmentNode=!0,l(u.prototype.type,c),u.prototype.forEach=function(e){e(this.object,"object",this),this.index&&e(this.index,"index",this),e(this.value,"value",this)},u.prototype.map=function(e){var t=this._ifNode(e(this.object,"object",this)),r=this.index?this._ifNode(e(this.index,"index",this)):null,n=this._ifNode(e(this.value,"value",this));return new u(t,r,n)},u.prototype.clone=function(){return new u(this.object,this.index,this.value)},u.prototype._toString=function(e){var t=this.object.toString(e),r=this.index?this.index.toString(e):"",n=this.value.toString(e);return f(this,e&&e.parenthesis)&&(n="("+n+")"),t+r+" = "+n},u.prototype.toHTML=function(e){var t=this.object.toHTML(e),r=this.index?this.index.toHTML(e):"",n=this.value.toHTML(e);return f(this,e&&e.parenthesis)&&(n='('+n+')'),t+r+'='+n},u.prototype._toTex=function(e){var t=this.object.toTex(e),r=this.index?this.index.toTex(e):"",n=this.value.toTex(e);return f(this,e&&e.parenthesis)&&(n="\\left("+n+"\\right)"),t+r+":="+n},u}var i=(r(4),r(9).stringify),a=r(13).getSafeProperty,o=r(13).setSafeProperty;t.name="AssignmentNode",t.path="expression.node",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function s(t){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!Array.isArray(t))throw new Error("Array expected");this.blocks=t.map(function(t){var r=t&&t.node,n=!t||void 0===t.visible||t.visible;if(!e.isNode(r))throw new TypeError('Property "node" must be a Node');if("boolean"!=typeof n)throw new TypeError('Property "visible" must be a boolean');return{node:r,visible:n}})}function u(e,t,r){if(!(e instanceof s))throw new TypeError("No valid BlockNode");t.ResultSet=p;var n=i(e.blocks,function(e){var n=f(e.node,t,r);return e.visible?"results.push("+n+");":n+";"});return"(function () {var results = [];"+a(n,"")+"return new ResultSet(results);})()"}var c=n(r(7)).register,f=n(r(7)).compile,l=n(r(14)),p=n(r(94));return s.prototype=new l,s.prototype.type="BlockNode",s.prototype.isBlockNode=!0,c(s.prototype.type,u),s.prototype.forEach=function(e){for(var t=0;t;')}).join('
')},s.prototype._toTex=function(e){return this.blocks.map(function(t){return t.node.toTex(e)+(t.visible?"":";")}).join("\\;\\;\n")},s}var i=r(2).map,a=r(2).join;t.name="BlockNode",t.path="expression.node",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){function o(t,r,n){if(!(this instanceof o))throw new SyntaxError("Constructor must be called with the new operator");if(!e.isNode(t))throw new TypeError("Parameter condition must be a Node");if(!e.isNode(r))throw new TypeError("Parameter trueExpr must be a Node");if(!e.isNode(n))throw new TypeError("Parameter falseExpr must be a Node");this.condition=t,this.trueExpr=r,this.falseExpr=n}function s(t,r,n){if(!(t instanceof o))throw new TypeError("No valid ConditionalNode");return r.testCondition=function(t){if("number"==typeof t||"boolean"==typeof t||"string"==typeof t)return!!t;if(t){if(e.isBigNumber(t))return!t.isZero();if(e.isComplex(t))return!(!t.re&&!t.im);if(e.isUnit(t))return!!t.value}if(null===t||void 0===t)return!1;throw new TypeError('Unsupported type of condition "'+r.math.typeof(t)+'"')},"testCondition("+c(t.condition,r,n)+") ? ( "+c(t.trueExpr,r,n)+") : ( "+c(t.falseExpr,r,n)+")"}var u=n(r(7)).register,c=n(r(7)).compile,f=n(r(14));return o.prototype=new f,o.prototype.type="ConditionalNode",o.prototype.isConditionalNode=!0,u(o.prototype.type,s),o.prototype.forEach=function(e){e(this.condition,"condition",this),e(this.trueExpr,"trueExpr",this),e(this.falseExpr,"falseExpr",this)},o.prototype.map=function(e){return new o(this._ifNode(e(this.condition,"condition",this)),this._ifNode(e(this.trueExpr,"trueExpr",this)),this._ifNode(e(this.falseExpr,"falseExpr",this)))},o.prototype.clone=function(){return new o(this.condition,this.trueExpr,this.falseExpr)},o.prototype._toString=function(e){var t=e&&e.parenthesis?e.parenthesis:"keep",r=i.getPrecedence(this,t),n=this.condition.toString(e),a=i.getPrecedence(this.condition,t);("all"===t||"OperatorNode"===this.condition.type||null!==a&&a<=r)&&(n="("+n+")");var o=this.trueExpr.toString(e),s=i.getPrecedence(this.trueExpr,t);("all"===t||"OperatorNode"===this.trueExpr.type||null!==s&&s<=r)&&(o="("+o+")");var u=this.falseExpr.toString(e),c=i.getPrecedence(this.falseExpr,t);return("all"===t||"OperatorNode"===this.falseExpr.type||null!==c&&c<=r)&&(u="("+u+")"),n+" ? "+o+" : "+u},o.prototype.toHTML=function(e){var t=e&&e.parenthesis?e.parenthesis:"keep",r=i.getPrecedence(this,t),n=this.condition.toHTML(e),a=i.getPrecedence(this.condition,t);("all"===t||"OperatorNode"===this.condition.type||null!==a&&a<=r)&&(n='('+n+')');var o=this.trueExpr.toHTML(e),s=i.getPrecedence(this.trueExpr,t);("all"===t||"OperatorNode"===this.trueExpr.type||null!==s&&s<=r)&&(o='('+o+')');var u=this.falseExpr.toHTML(e),c=i.getPrecedence(this.falseExpr,t);return("all"===t||"OperatorNode"===this.falseExpr.type||null!==c&&c<=r)&&(u='('+u+')'),n+'?'+o+':'+u},o.prototype._toTex=function(e){return"\\begin{cases} {"+this.trueExpr.toTex(e)+"}, &\\quad{\\text{if }\\;"+this.condition.toTex(e)+"}\\\\{"+this.falseExpr.toTex(e)+"}, &\\quad{\\text{otherwise}}\\end{cases}"},o}var i=(r(4),r(52));t.name="ConditionalNode",t.path="expression.node",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,h){function m(t,r,n){if(!(this instanceof m))throw new SyntaxError("Constructor must be called with the new operator");if("string"!=typeof t)throw new TypeError('String expected for parameter "name"');if(!Array.isArray(r))throw new TypeError('Array containing strings or objects expected for parameter "params"');if(!e.isNode(n))throw new TypeError('Node expected for parameter "expr"');if(t in i)throw new Error('Illegal function name, "'+t+'" is a reserved keyword');this.name=t,this.params=r.map(function(e){return e&&e.name||e}),this.types=r.map(function(e){return e&&e.type||"any"}),this.expr=n}function d(e,t,r){if(!(e instanceof m))throw new TypeError("No valid FunctionAssignmentNode");t.typed=h,t.setSafeProperty=l;var n=Object.create(r),i=s(e.params,function(e){return n[e]=p(n),n[e]}),o=y(e.expr,t,n),c=a(e.name);return"setSafeProperty(scope, "+c+", (function () { var fn = typed("+c+", { "+a(u(e.types,","))+": function ("+u(i,",")+") { return "+o+" } }); fn.syntax = "+a(e.name+"("+u(e.params,", ")+")")+"; return fn; })())"}function v(e,t){var r=f.getPrecedence(e,t),n=f.getPrecedence(e.expr,t);return"all"===t||null!==n&&n<=r}var g=n(r(7)).register,y=n(r(7)).compile,x=n(r(14));return m.prototype=new x,m.prototype.type="FunctionAssignmentNode",m.prototype.isFunctionAssignmentNode=!0,g(m.prototype.type,d),m.prototype.forEach=function(e){e(this.expr,"expr",this)},m.prototype.map=function(e){var t=this._ifNode(e(this.expr,"expr",this));return new m(this.name,this.params.slice(0),t)},m.prototype.clone=function(){return new m(this.name,this.params.slice(0),this.expr)},m.prototype._toString=function(e){var t=e&&e.parenthesis?e.parenthesis:"keep",r=this.expr.toString(e);return v(this,t)&&(r="("+r+")"),this.name+"("+this.params.join(", ")+") = "+r},m.prototype.toHTML=function(e){for(var t=e&&e.parenthesis?e.parenthesis:"keep",r=[],n=0;n'+o(this.params[n])+"");var i=this.expr.toHTML(e);return v(this,t)&&(i='('+i+')'),''+o(this.name)+'('+r.join(',')+')='+i},m.prototype._toTex=function(e){var t=e&&e.parenthesis?e.parenthesis:"keep",r=this.expr.toTex(e);return v(this,t)&&(r="\\left("+r+"\\right)"),"\\mathrm{"+this.name+"}\\left("+this.params.map(c.toSymbol).join(",")+"\\right):="+r},m}var i=r(77),a=r(9).stringify,o=r(9).escape,s=r(2).map,u=r(2).join,c=r(4),f=r(52),l=r(13).setSafeProperty,p=r(108);t.name="FunctionAssignmentNode",t.path="expression.node",t.factory=n},function(e,t){function r(e){return"arg"+Object.keys(e).length}e.exports=r},function(e,t,r){"use strict";function n(e,t,n,u){function c(t){if(!(this instanceof c))throw new SyntaxError("Constructor must be called with the new operator");if(this.properties=t||{},t&&("object"!=typeof t||!Object.keys(t).every(function(r){return e.isNode(t[r])})))throw new TypeError("Object containing Nodes expected")}function f(e,t,r){if(!(e instanceof c))throw new TypeError("No valid ObjectNode");var n=[];for(var a in e.properties)if(s(e.properties,a)){var u=i(a),f=JSON.parse(u);if(!o(e.properties,f))throw new Error('No access to property "'+f+'"');n.push(u+": "+p(e.properties[a],t,r))}return"{"+n.join(", ")+"}"}var l=n(r(7)).register,p=n(r(7)).compile,h=n(r(14));return c.prototype=new h,c.prototype.type="ObjectNode",c.prototype.isObjectNode=!0,l(c.prototype.type,f),c.prototype.forEach=function(e){for(var t in this.properties)this.properties.hasOwnProperty(t)&&e(this.properties[t],"properties["+i(t)+"]",this)},c.prototype.map=function(e){var t={};for(var r in this.properties)this.properties.hasOwnProperty(r)&&(t[r]=this._ifNode(e(this.properties[r],"properties["+i(r)+"]",this)));return new c(t)},c.prototype.clone=function(){var e={};for(var t in this.properties)this.properties.hasOwnProperty(t)&&(e[t]=this.properties[t]);return new c(e)},c.prototype._toString=function(e){var t=[];for(var r in this.properties)this.properties.hasOwnProperty(r)&&t.push(i(r)+": "+this.properties[r].toString(e));return"{"+t.join(", ")+"}"},c.prototype.toHTML=function(e){var t=[];for(var r in this.properties)this.properties.hasOwnProperty(r)&&t.push(''+a(r)+':'+this.properties[r].toHTML(e));return'{'+t.join(',')+'}'},c.prototype._toTex=function(e){var t=[];for(var r in this.properties)this.properties.hasOwnProperty(r)&&t.push("\\mathbf{"+r+":} & "+this.properties[r].toTex(e)+"\\\\");return"\\left\\{\\begin{array}{ll}"+t.join("\n")+"\\end{array}\\right\\}"},c}var i=r(9).stringify,a=r(9).escape,o=r(13).isSafeProperty,s=r(5).hasOwnProperty;t.name="ObjectNode",t.path="expression.node",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i,a){var o=n(r(111));return i("parser",{"":function(){return new o(a)}})}t.name="parser",t.factory=n,t.math=!0},function(e,t,r){"use strict";function n(e,t,n,o,s){function u(){if(!(this instanceof u))throw new SyntaxError("Constructor must be called with the new operator");this.scope={}}var c=n(r(39));return u.prototype.type="Parser",u.prototype.isParser=!0,u.prototype.parse=function(e){throw new Error("Parser.parse is deprecated. Use math.parse instead.")},u.prototype.compile=function(e){throw new Error("Parser.compile is deprecated. Use math.compile instead.")},u.prototype.eval=function(e){return c(e).compile().eval(this.scope)},u.prototype.get=function(e){return e in this.scope?a.getSafeProperty(this.scope,e):void 0},u.prototype.getAll=function(){return i({},this.scope)},u.prototype.set=function(e,t){return a.setSafeProperty(this.scope,e,t)},u.prototype.remove=function(e){delete this.scope[e]},u.prototype.clear=function(){for(var e in this.scope)this.scope.hasOwnProperty(e)&&delete this.scope[e]},u}var i=r(5).extend,a=r(13);t.name="Parser",t.path="expression",t.factory=n,t.math=!0},function(e,t,r){"use strict";function n(e,t,n,s){function u(e,t){return f(e,t)?e:t}function c(e){var t=void 0;if(i(e,function(e){(void 0===t||f(e,t))&&(t=e)}),void 0===t)throw new Error("Cannot calculate max of an empty array");return t}var f=n(r(34)),l=s("max",{"Array | Matrix":c,"Array | Matrix, number | BigNumber":function(e,t){return a(e,t.valueOf(),u)},"...":function(e){if(o(e))throw new TypeError("Scalar values expected in function max");return c(e)}});return l.toTex="\\max\\left(${args}\\right)",l}var i=r(42),a=r(65),o=r(66);t.name="max",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,u){function c(e,t){var r=o(e,t,l),n=Array.isArray(e)?i(e):e.size();return p(r,n[t])}function f(e){var t=0,r=0;if(a(e,function(e){t=l(t,e),r++}),0===r)throw new Error("Cannot calculate mean of an empty array");return p(t,r)}var l=n(r(18)),p=n(r(47)),h=u("mean",{"Array | Matrix":f,"Array | Matrix, number | BigNumber":c,"...":function(e){if(s(e))throw new TypeError("Scalar values expected in function mean");return f(e)}});return h.toTex=void 0,h}var i=r(2).size,a=r(42),o=r(65),s=r(66);t.name="mean",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){function o(e,t,r){var n,i,a,o,s;if(1==t){if(o=e[0][0],0==o)throw Error("Cannot calculate inverse, determinant is zero");return[[u(1,o)]]}if(2==t){var m=p(e);if(0==m)throw Error("Cannot calculate inverse, determinant is zero");return[[u(e[1][1],m),u(l(e[0][1]),m)],[u(l(e[1][0]),m),u(e[0][0],m)]]}var d=e.concat();for(n=0;n0)for(;it;)n.push(i),i+=r;return n}function u(e,t,r){var n=[],i=e;if(r>0)for(;i<=t;)n.push(i),i+=r;else if(r<0)for(;i>=t;)n.push(i),i+=r;return n}function c(e,t,r){var n=[],i=e;if(r.gt(h))for(;i.lt(t);)n.push(i),i=i.plus(r);else if(r.lt(h))for(;i.gt(t);)n.push(i),i=i.plus(r);return n}function f(e,t,r){var n=[],i=e;if(r.gt(h))for(;i.lte(t);)n.push(i),i=i.plus(r);else if(r.lt(h))for(;i.gte(t);)n.push(i),i=i.plus(r);return n}function l(e){var t=e.split(":"),r=t.map(function(e){return Number(e)}),n=r.some(function(e){return isNaN(e)});if(n)return null;switch(r.length){case 2:return{start:r[0],end:r[1],step:1};case 3:return{start:r[0],end:r[2],step:r[1]};default:return null}}var p=n(r(0)),h=new e.BigNumber(0),m=new e.BigNumber(1),d=i("range",{string:o,"string, boolean":o,"number, number":function(e,t){return a(s(e,t,1))},"number, number, number":function(e,t,r){return a(s(e,t,r))},"number, number, boolean":function(e,t,r){return a(r?u(e,t,1):s(e,t,1))},"number, number, number, boolean":function(e,t,r,n){return a(n?u(e,t,r):s(e,t,r))},"BigNumber, BigNumber":function(e,t){return a(c(e,t,m))},"BigNumber, BigNumber, BigNumber":function(e,t,r){return a(c(e,t,r))},"BigNumber, BigNumber, boolean":function(e,t,r){return a(r?f(e,t,m):c(e,t,m))},"BigNumber, BigNumber, BigNumber, boolean":function(e,t,r,n){return a(n?f(e,t,r):c(e,t,r))}});return d.toTex=void 0,d}t.name="range",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i,a){function o(t){return t.transform(function(t,r,n){return e.isParenthesisNode(t)?t.content:t})}function s(e){for(var t=[],r=0;r");if(2!==s.length)throw SyntaxError("Could not parse rule: "+i);i={l:s[0],r:s[1]};case"object":if(n={l:o(d(i.l)),r:o(d(i.r))},i.context&&(n.evaluate=i.context),i.evaluate&&(n.evaluate=d(i.evaluate)),n.l.isOperatorNode&&O(n.l)){var c=C(n.l),f=u();n.expanded={},n.expanded.l=c([n.l.clone(),f]),T(n.expanded.l),_(n.expanded.l),n.expanded.r=c([n.r,f])}break;case"function":n=i;break;default:throw TypeError("Unsupported type of rule: "+a)}t.push(n)}return t}function u(){return new w("_p"+I++)}function c(e,t){var r,n,i=[],a=C(e);if(A(e,t))for(var o=0;o=2&&2===t.args.length){for(var o=c(r,t.context),s=[],u=0;u2)throw Error("Unexpected non-binary associative function: "+t.toString());return[]}for(var l=[],u=0;u2&&o(e)){for(var i=e.args.pop();e.args.length>0;)i=t([e.args.pop(),i]);e.args=i.args}}}function f(e){if(e.args&&0!==e.args.length){for(var t=l(e),r=e.args.length,n=0;n2&&o(e)){for(var i=e.args.shift();e.args.length>0;)i=t([i,e.args.shift()]);e.args=i.args}}}function l(t){return e.isOperatorNode(t)?function(e){try{return new h(t.op,t.fn,e)}catch(e){return console.error(e),[]}}:function(e){return new p(new m(t.name),e)}}var p=i.expression.node.FunctionNode,h=i.expression.node.OperatorNode,m=i.expression.node.SymbolNode,d={add:!0,multiply:!0},v={add:!0,multiply:!0};return{createMakeNodeFunction:l,isCommutative:a,isAssociative:o,flatten:s,allChildren:u,unflattenr:c,unflattenl:f}}t.factory=n,t.math=!0},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("clone",{any:i.clone});return a.toTex=void 0,a}var i=r(5);t.name="clone",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var s=n(r(0)),u=n(r(15)),c=n(r(26)),f=n(r(16)),l=n(r(8)),p=n(r(6)),h=r(4),m=o("unequal",{"any, any":function(e,t){return null===e?null!==t:null===t?null!==e:void 0===e?void 0!==t:void 0===t?void 0!==e:d(e,t)},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=c(e,t,d);break;default:r=u(t,e,d,!0)}break;default:switch(t.storage()){case"sparse":r=u(e,t,d,!1);break;default:r=l(e,t,d)}}return r},"Array, Array":function(e,t){return m(s(e),s(t)).valueOf()},"Array, Matrix":function(e,t){return m(s(e),t)},"Matrix, Array":function(e,t){return m(e,s(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=f(e,t,d,!1);break;default:r=p(e,t,d,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=f(t,e,d,!0);break;default:r=p(t,e,d,!0)}return r},"Array, any":function(e,t){return p(s(e),t,d,!1).valueOf()},"any, Array":function(e,t){return p(s(t),e,d,!0).valueOf()}}),d=o("_unequal",{"boolean, boolean":function(e,t){return e!==t},"number, number":function(e,r){return!i(e,r,t.epsilon)},"BigNumber, BigNumber":function(e,r){return!a(e,r,t.epsilon)},"Fraction, Fraction":function(e,t){return!e.equals(t)},"Complex, Complex":function(e,t){return!e.equals(t)},"Unit, Unit":function(e,t){if(!e.equalBase(t))throw new Error("Cannot compare units with different base");return m(e.value,t.value)},"string, string":function(e,t){return e!==t}});return m.toTex={2:"\\left(${args[0]}"+h.operators.unequal+"${args[1]}\\right)"},m}var i=r(3).nearlyEqual,a=r(35);t.name="unequal",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var o=n("sign",{number:i.sign,Complex:function(e){return e.sign()},BigNumber:function(t){return new e.BigNumber(t.cmp(0))},Fraction:function(t){return new e.Fraction(t.s,1)},"Array | Matrix":function(e){return a(e,o,!0)},Unit:function(e){return o(e.value)}});return o.toTex={1:"\\mathrm{${name}}\\left(${args[0]}\\right)"},o}var i=r(3),a=r(1);t.name="sign",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("conj",{number:function(e){return e},BigNumber:function(e){return e},Complex:function(e){return e.conjugate()},"Array | Matrix":function(e){return i(e,a)}});return a.toTex={1:"\\left(${args[0]}\\right)^*"},a}var i=r(1);t.name="conj",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var o=n(r(0)),s=n(r(29)),u=n(r(20)),c=n(r(19)),f=n(r(23)),l=n(r(21)),p=n(r(34)),h=n(r(11)),m=n(r(37)),d=e.SparseMatrix,v=e.DenseMatrix,g=e.Spa,y=i("lup",{DenseMatrix:function(e){return x(e)},SparseMatrix:function(e){return w(e)},Array:function(e){var t=o(e),r=x(t);return{L:r.L.valueOf(),U:r.U.valueOf(),p:r.p}}}),x=function(e){var t,r,n,i=e._size[0],o=e._size[1],m=Math.min(i,o),d=a.clone(e._data),g=[],y=[i,m],x=[],w=[m,o],b=[];for(t=0;t0)for(t=0;t0&&S.forEach(0,r-1,function(e,t){d._forEachRow(e,y,x,w,function(r,n){r>e&&S.accumulate(r,m(f(n,t)))})});var k=r,I=S.get(r),B=s(I);S.forEach(r+1,i-1,function(e,t){var r=s(t);p(r,B)&&(k=e,B=r,I=t)}),r!==k&&(d._swapRows(r,k,b[1],y,x,w),d._swapRows(r,k,A[1],N,E,M),S.swap(r,k),_(r,k)),S.forEach(0,i-1,function(e,t){e<=r?(N.push(t),E.push(e)):(t=c(t,I),h(t,0)||(y.push(t),x.push(e)))})}return M.push(N.length),w.push(y.length),{L:new d({values:y,index:x,ptr:w,size:b}),U:new d({values:N,index:E,ptr:M,size:A}),p:O,toString:function(){return"L: "+this.L.toString()+"\nU: "+this.U.toString()+"\nP: "+this.p}}};return y}var i=r(25),a=i.object;t.name="lup",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(410)),s=n(r(418)),u=i("slu",{"SparseMatrix, number, number":function(e,t,r){if(!o(t)||t<0||t>3)throw new Error("Symbolic Ordering and Analysis order must be an integer number in the interval [0, 3]");if(r<0||r>1)throw new Error("Partial pivoting threshold must be a number from 0 to 1");var n=a(t,e,!1),i=s(e,n,r);return{L:i.L,U:i.U,p:i.pinv,q:n.q,toString:function(){return"L: "+this.L.toString()+"\nU: "+this.U.toString()+"\np: "+this.p.toString()+(this.q?"\nq: "+this.q.toString():"")+"\n"}}}});return u}var i=r(25),a=i.number,o=a.isInteger;t.name="slu",t.factory=n},function(e,t,r){"use strict";function n(){var e=function(e,t,r,n,i,a,o){var s=0;for(r[o]=e;s>=0;){var u=r[o+s],c=r[n+u];c==-1?(s--,a[t++]=u):(r[n+u]=r[i+c],++s,r[o+s]=c)}return t};return e}t.name="cs_tdfs",t.path="sparse",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var s=n(r(0)),u=n(r(15)),c=n(r(26)),f=n(r(16)),l=n(r(8)),p=n(r(6)),h=r(4),m=o("largerEq",{"boolean, boolean":function(e,t){return e>=t},"number, number":function(e,r){return e>=r||i(e,r,t.epsilon)},"BigNumber, BigNumber":function(e,r){return e.gte(r)||a(e,r,t.epsilon)},"Fraction, Fraction":function(e,t){return e.compare(t)!==-1},"Complex, Complex":function(){throw new TypeError("No ordering relation is defined for complex numbers")},"Unit, Unit":function(e,t){if(!e.equalBase(t))throw new Error("Cannot compare units with different base");return m(e.value,t.value)},"string, string":function(e,t){return e>=t},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=c(e,t,m);break;default:r=u(t,e,m,!0)}break;default:switch(t.storage()){case"sparse":r=u(e,t,m,!1);break;default:r=l(e,t,m)}}return r},"Array, Array":function(e,t){return m(s(e),s(t)).valueOf()},"Array, Matrix":function(e,t){return m(s(e),t)},"Matrix, Array":function(e,t){return m(e,s(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=f(e,t,m,!1);break;default:r=p(e,t,m,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=f(t,e,m,!0);break;default:r=p(t,e,m,!0)}return r},"Array, any":function(e,t){return p(s(e),t,m,!1).valueOf()},"any, Array":function(e,t){return p(s(t),e,m,!0).valueOf()}});return m.toTex={2:"\\left(${args[0]}"+h.operators.largerEq+"${args[1]}\\right)"},m}var i=r(3).nearlyEqual,a=r(35);t.name="largerEq",t.factory=n},function(e,t,r){"use strict";function n(){var e=function(e,t){return e[t]<0};return e}t.name="cs_marked",t.path="sparse",t.factory=n},function(e,t,r){"use strict";function n(e,t,n){var i=n(r(83)),a=function(e,t){e[t]=i(e[t])};return a}t.name="cs_mark",t.path="sparse",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(0)),o=n(r(19)),s=n(r(23)),u=n(r(21)),c=n(r(11)),f=n(r(84)),l=e.DenseMatrix,p=i("lsolve",{"SparseMatrix, Array | Matrix":function(e,t){return m(e,t)},"DenseMatrix, Array | Matrix":function(e,t){return h(e,t)},"Array, Array | Matrix":function(e,t){var r=a(e),n=h(r,t);return n.valueOf()}}),h=function(e,t){t=f(e,t,!0);for(var r=t._data,n=e._size[0],i=e._size[1],a=[],p=e._data,h=0;hg&&(w.push(h[n]),b.push(r));if(c(x,0))throw new Error("Linear system cannot be solved since matrix is singular");var E=o(y,x);for(n=0,N=b.length;n=0;h--){var m,d=r[h][0]||0;if(c(d,0))m=0;else{var v=p[h][h];if(c(v,0))throw new Error("Linear system cannot be solved since matrix is singular");m=o(d,v);for(var g=h-1;g>=0;g--)r[g]=[u(r[g][0]||0,s(m,p[g][h]))]}a[h]=[m]}return new l({data:a,size:[n,1]})},m=function(e,t){t=f(e,t,!0);for(var r,n,i=t._data,a=e._size[0],p=e._size[1],h=e._values,m=e._index,d=e._ptr,v=[],g=p-1;g>=0;g--){var y=i[g][0]||0;if(c(y,0))v[g]=[0];else{var x=0,w=[],b=[],N=d[g],E=d[g+1];for(n=E-1;n>=N;n--)r=m[n],r===g?x=h[n]:r=0||t.predictable?Math.log(r):new e.Complex(r,0).log()},Complex:function(e){return e.log()},BigNumber:function(r){return!r.isNegative()||t.predictable?r.ln():new e.Complex(r.toNumber(),0).log()},"Array | Matrix":function(e){return i(e,s)},"any, any":function(e,t){return o(s(e),s(t))}});return s.toTex={1:"\\ln\\left(${args[0]}\\right)",2:"\\log_{${args[1]}}\\left(${args[0]}\\right)"},s}var i=r(1);t.name="log",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var s=n(r(0)),u=n(r(18)),c=o("trace",{Array:function(e){return c(s(e))},Matrix:function(e){var t;switch(e.storage()){case"dense":t=f(e);break;case"sparse":t=l(e)}return t},any:i}),f=function(e){var t=e._size,r=e._data;switch(t.length){case 1:if(1==t[0])return i(r[0]);throw new RangeError("Matrix must be square (size: "+a(t)+")");case 2:var n=t[0],o=t[1];if(n===o){for(var s=0,c=0;c0)for(var f=0;ff)break}return c}throw new RangeError("Matrix must be square (size: "+a(i)+")")};return c.toTex={1:"\\mathrm{tr}\\left(${args[0]}\\right)"},c}var i=r(5).clone,a=r(9).format;t.name="trace",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(18)),o=n(r(21)),s=n(r(12)),u=n(r(47)),c=n(r(45)),f=n(r(69)),l=n(r(70)),p=n(r(57)),h=n(r(48)),m=n(r(34)),d=i("stirlingS2",{"number | BigNumber, number | BigNumber":function(e,t){if(!h(e)||p(e)||!h(t)||p(t))throw new TypeError("Non-negative integer value expected in function stirlingS2");if(m(t,e))throw new TypeError("k must be less than or equal to n in function stirlingS2");for(var r=f(t),n=0,i=0;i<=t;i++){var d=c(-1,o(t,i)),v=l(t,i),g=c(i,e);n=a(n,s(s(v,g),d))}return u(n,r)}});return d.toTex={2:"\\mathrm{S}\\left(${args}\\right)"},d}t.name="stirlingS2",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,u){function c(r){if(r.isZero())return new e.BigNumber(1);for(var n=t.precision+(0|Math.log(r.toNumber())),i=e.BigNumber.clone({precision:n}),a=new i(r),o=r.toNumber()-1;o>1;)a=a.times(o),o--;return new e.BigNumber(a.toPrecision(e.BigNumber.precision))}var f=n(r(12)),l=n(r(45)),p=u("gamma",{number:function(e){var t,r;if(a(e)){if(e<=0)return isFinite(e)?1/0:NaN;if(e>171)return 1/0;for(var n=e-2,i=e-1;n>1;)i*=n,n--;return 0==i&&(i=1),i}if(e<.5)return Math.PI/(Math.sin(Math.PI*e)*p(1-e));if(e>=171.35)return 1/0;if(e>85){var u=e*e,c=u*e,f=c*e,l=f*e;return Math.sqrt(2*Math.PI/e)*Math.pow(e/Math.E,e)*(1+1/(12*e)+1/(288*u)-139/(51840*c)-571/(2488320*f)+163879/(209018880*l)+5246819/(75246796800*l*e))}--e,r=s[0];for(var h=1;h0&&(a=e[o]);return m(a,n)}var s=l(e,(t-1)/2);return h(s)}var u=n(r(20)),c=n(r(19)),f=n(r(49)),l=n(r(88)),p=o("median",{"Array | Matrix":s,"Array | Matrix, number | BigNumber":function(e,t){ -throw new Error("median(A, dim) is not yet supported")},"...":function(e){if(a(e))throw new TypeError("Scalar values expected in function median");return s(e)}}),h=o({"number | BigNumber | Complex | Unit":function(e){return e}}),m=o({"number | BigNumber | Complex | Unit, number | BigNumber | Complex | Unit":function(e,t){return c(u(e,t),2)}});return p.toTex=void 0,p}var i=r(2).flatten,a=(r(65),r(66));t.name="median",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function s(t,r){var n=0,i=0;if(0==t.length)throw new SyntaxError("Function var requires one or more parameters (0 provided)");if(a(t,function(e){n=u(n,e),i++}),0===i)throw new Error("Cannot calculate var of an empty array");var o=l(n,i);switch(n=0,a(t,function(e){var t=c(e,o);n=u(n,f(t,t))}),r){case"uncorrected":return l(n,i);case"biased":return l(n,i+1);case"unbiased":var s=e.isBigNumber(n)?new e.BigNumber(0):0;return 1==i?s:l(n,i-1);default:throw new Error('Unknown normalization "'+r+'". Choose "unbiased" (default), "uncorrected", or "biased".')}}var u=n(r(20)),c=n(r(21)),f=n(r(23)),l=n(r(19)),p=o("variance",{"Array | Matrix":function(e){return s(e,i)},"Array | Matrix, string":s,"...":function(e){return s(e,i)}});return p.toTex="\\mathrm{Var}\\left(${args}\\right)",p}var i="unbiased",a=r(42);t.name="var",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var o=n("acosh",{number:function(r){return r>=1||t.predictable?a(r):r<=-1?new e.Complex(Math.log(Math.sqrt(r*r-1)-r),Math.PI):new e.Complex(r,0).acosh()},Complex:function(e){return e.acosh()},BigNumber:function(e){return e.acosh()},"Array | Matrix":function(e){return i(e,o)}});return o.toTex={1:"\\cosh^{-1}\\left(${args[0]}\\right)"},o}var i=r(1),a=Math.acosh||function(e){return Math.log(Math.sqrt(e*e-1)+e)};t.name="acosh",t.factory=n},function(e,t,r){function n(e){var t=i.create(e);return t.create=n,t.import(r(156)),t}var i=r(149);e.exports=n()},function(e,t,r){e.exports=r(150)},function(e,t,r){var n=r(5).isFactory,i=r(151),a=r(90),o=r(154),s=r(155);t.create=function(e){function t(e){if(!n(e))throw new Error("Factory object with properties `type`, `name`, and `factory` expected");var i,a=r.indexOf(e);return a===-1?(i=e.math===!0?e.factory(c.type,f,t,c.typed,c):e.factory(c.type,f,t,c.typed),r.push(e),u.push(i)):i=u[a],i}if("function"!=typeof Object.create)throw new Error("ES5 not supported by this JavaScript engine. Please load the es5-shim and es5-sham library for compatibility.");var r=[],u=[],c=a.mixin({});c.type={},c.expression={transform:{},mathWithTransform:{}},c.typed=i.create(c.type);var f={epsilon:1e-12,matrix:"Matrix",number:"number",precision:64,predictable:!1,randomSeed:null};return c.import=t(o),c.config=t(s),c.expression.mathWithTransform.config=c.config,e&&c.config(e),c}},function(e,t,r){var n=r(152),i=r(3).digits,a=r(71),o=r(58),s=function(){return s=n.create,n};t.create=function(e){e.isNumber=function(e){return"number"==typeof e},e.isComplex=function(t){return e.Complex&&t instanceof e.Complex||!1},e.isBigNumber=a,e.isFraction=function(t){return e.Fraction&&t instanceof e.Fraction||!1},e.isUnit=function(e){return e&&e.constructor.prototype.isUnit||!1},e.isString=function(e){return"string"==typeof e},e.isArray=Array.isArray,e.isMatrix=o,e.isDenseMatrix=function(e){return e&&e.isDenseMatrix&&e.constructor.prototype.isMatrix||!1},e.isSparseMatrix=function(e){return e&&e.isSparseMatrix&&e.constructor.prototype.isMatrix||!1},e.isRange=function(e){return e&&e.constructor.prototype.isRange||!1},e.isIndex=function(e){return e&&e.constructor.prototype.isIndex||!1},e.isBoolean=function(e){return"boolean"==typeof e},e.isResultSet=function(e){return e&&e.constructor.prototype.isResultSet||!1},e.isHelp=function(e){return e&&e.constructor.prototype.isHelp||!1},e.isFunction=function(e){return"function"==typeof e},e.isDate=function(e){return e instanceof Date},e.isRegExp=function(e){return e instanceof RegExp},e.isObject=function(e){return"object"==typeof e},e.isNull=function(e){return null===e},e.isUndefined=function(e){return void 0===e},e.isAccessorNode=function(e){return e&&e.isAccessorNode&&e.constructor.prototype.isNode||!1},e.isArrayNode=function(e){return e&&e.isArrayNode&&e.constructor.prototype.isNode||!1},e.isAssignmentNode=function(e){return e&&e.isAssignmentNode&&e.constructor.prototype.isNode||!1},e.isBlockNode=function(e){return e&&e.isBlockNode&&e.constructor.prototype.isNode||!1},e.isConditionalNode=function(e){return e&&e.isConditionalNode&&e.constructor.prototype.isNode||!1},e.isConstantNode=function(e){return e&&e.isConstantNode&&e.constructor.prototype.isNode||!1},e.isFunctionAssignmentNode=function(e){return e&&e.isFunctionAssignmentNode&&e.constructor.prototype.isNode||!1},e.isFunctionNode=function(e){return e&&e.isFunctionNode&&e.constructor.prototype.isNode||!1},e.isIndexNode=function(e){return e&&e.isIndexNode&&e.constructor.prototype.isNode||!1},e.isNode=function(e){return e&&e.isNode&&e.constructor.prototype.isNode||!1},e.isObjectNode=function(e){return e&&e.isObjectNode&&e.constructor.prototype.isNode||!1},e.isOperatorNode=function(e){return e&&e.isOperatorNode&&e.constructor.prototype.isNode||!1},e.isParenthesisNode=function(e){return e&&e.isParenthesisNode&&e.constructor.prototype.isNode||!1},e.isRangeNode=function(e){return e&&e.isRangeNode&&e.constructor.prototype.isNode||!1},e.isSymbolNode=function(e){return e&&e.isSymbolNode&&e.constructor.prototype.isNode||!1},e.isChain=function(e){return e&&e.constructor.prototype.isChain||!1};var t=s();return t.types=[{name:"number",test:e.isNumber},{name:"Complex",test:e.isComplex},{name:"BigNumber",test:e.isBigNumber},{name:"Fraction",test:e.isFraction},{name:"Unit",test:e.isUnit},{name:"string",test:e.isString},{name:"Array",test:e.isArray},{name:"Matrix",test:e.isMatrix},{name:"DenseMatrix",test:e.isDenseMatrix},{name:"SparseMatrix",test:e.isSparseMatrix},{name:"Range",test:e.isRange},{name:"Index",test:e.isIndex},{name:"boolean",test:e.isBoolean},{name:"ResultSet",test:e.isResultSet},{name:"Help",test:e.isHelp},{name:"function",test:e.isFunction},{name:"Date",test:e.isDate},{name:"RegExp",test:e.isRegExp},{name:"Object",test:e.isObject},{name:"null",test:e.isNull},{name:"undefined",test:e.isUndefined},{name:"OperatorNode",test:e.isOperatorNode},{name:"ConstantNode",test:e.isConstantNode},{name:"SymbolNode",test:e.isSymbolNode},{name:"ParenthesisNode",test:e.isParenthesisNode},{name:"FunctionNode",test:e.isFunctionNode},{name:"FunctionAssignmentNode",test:e.isFunctionAssignmentNode},{name:"ArrayNode",test:e.isArrayNode},{name:"AssignmentNode",test:e.isAssignmentNode},{name:"BlockNode",test:e.isBlockNode},{name:"ConditionalNode",test:e.isConditionalNode},{name:"IndexNode",test:e.isIndexNode},{name:"RangeNode",test:e.isRangeNode},{name:"Node",test:e.isNode}],t.conversions=[{from:"number",to:"BigNumber",convert:function(t){if(i(t)>15)throw new TypeError("Cannot implicitly convert a number with >15 significant digits to BigNumber (value: "+t+"). Use function bignumber(x) to convert to BigNumber.");return new e.BigNumber(t)}},{from:"number",to:"Complex",convert:function(t){return new e.Complex(t,0)}},{from:"number",to:"string",convert:function(e){return e+""}},{from:"BigNumber",to:"Complex",convert:function(t){return new e.Complex(t.toNumber(),0)}},{from:"Fraction",to:"BigNumber",convert:function(e){throw new TypeError("Cannot implicitly convert a Fraction to BigNumber or vice versa. Use function bignumber(x) to convert to BigNumber or fraction(x) to convert to Fraction.")}},{from:"Fraction",to:"Complex",convert:function(t){return new e.Complex(t.valueOf(),0)}},{from:"number",to:"Fraction",convert:function(t){var r=new e.Fraction(t);if(r.valueOf()!==t)throw new TypeError("Cannot implicitly convert a number to a Fraction when there will be a loss of precision (value: "+t+"). Use function fraction(x) to convert to Fraction.");return new e.Fraction(t)}},{from:"string",to:"number",convert:function(e){var t=Number(e);if(isNaN(t))throw new Error('Cannot convert "'+e+'" to a number');return t}},{from:"string",to:"BigNumber",convert:function(t){try{return new e.BigNumber(t)}catch(e){throw new Error('Cannot convert "'+t+'" to BigNumber')}}},{from:"string",to:"Fraction",convert:function(t){try{return new e.Fraction(t)}catch(e){throw new Error('Cannot convert "'+t+'" to Fraction')}}},{from:"string",to:"Complex",convert:function(t){try{return new e.Complex(t)}catch(e){throw new Error('Cannot convert "'+t+'" to Complex')}}},{from:"boolean",to:"number",convert:function(e){return+e}},{from:"boolean",to:"BigNumber",convert:function(t){return new e.BigNumber(+t)}},{from:"boolean",to:"Fraction",convert:function(t){return new e.Fraction(+t)}},{from:"boolean",to:"string",convert:function(e){return+e}},{from:"null",to:"number",convert:function(){return 0}},{from:"null",to:"string",convert:function(){return"null"}},{from:"null",to:"BigNumber",convert:function(){return new e.BigNumber(0)}},{from:"null",to:"Fraction",convert:function(){return new e.Fraction(0)}},{from:"Array",to:"Matrix",convert:function(t){return new e.DenseMatrix(t)}},{from:"Matrix",to:"Array",convert:function(e){return e.valueOf()}}],t}},function(e,t,r){"use strict";var n,i,a;!function(r,o){i=[],n=o,a="function"==typeof n?n.apply(t,i):n,!(void 0!==a&&(e.exports=a))}(this,function(){function e(){function t(e){for(var t,r=0;rr&&!c?"Unexpected type of argument in function "+u+" (expected: "+s.join(" or ")+", actual: "+o+", index: "+r+")":"Too few arguments in function "+u+" (expected: "+s.join(" or ")+", index: "+r+")":"Too many arguments in function "+u+" (expected: "+r+", actual: "+t+")";var l=new TypeError(a);return l.data=f,l}function i(e){this.name=e||"refs",this.categories={}}function a(e,t){if("string"==typeof e){var r=e.trim(),n="..."===r.substr(0,3);if(n&&(r=r.substr(3)),""===r)this.types=["any"];else{this.types=r.split("|");for(var i=0;it&&(t=n)}return t}function d(e){for(var t,r=0;r0},a.prototype.contains=function(e){for(var t=0;tt.params.length)return 1;if(e.params.lengtho)return 1;if(i "+i+") {"),n.push(r+" var varArgs = [];"),n.push(r+" for (var i = "+i+"; i < arguments.length; i++) {"),n.push(r+" varArgs.push(arguments[i]);"),n.push(r+" }"),n.push(this.signature.toCode(e,r+" ")),n.push(r+"}");else{for(var s=function(r,n){for(var i=[],a=0;a "+r+") {",t+" throw createError(name, arguments.length, "+r+", arguments["+r+"]);",t+"}"].join("\n");for(var n={},i=[],a=0;a0){for(a+=o,t=1;tr)throw Error(Me+e)}function s(e,t,r,n){var i,a,o,s;for(a=e[0];a>=10;a/=10)--t;return--t<0?(t+=Be,i=0):(i=Math.ceil((t+1)/Be),t%=Be),a=_e(10,Be-t),s=e[i]%a|0,null==n?t<3?(0==t?s=s/100|0:1==t&&(s=s/10|0),o=r<4&&99999==s||r>3&&49999==s||5e4==s||0==s):o=(r<4&&s+1==a||r>3&&s+1==a/2)&&(e[i+1]/a/100|0)==_e(10,t-2)-1||(s==a/2||0==s)&&0==(e[i+1]/a/100|0):t<4?(0==t?s=s/1e3|0:1==t?s=s/100|0:2==t&&(s=s/10|0),o=(n||r<4)&&9999==s||!n&&r>3&&4999==s):o=((n||r<4)&&s+1==a||!n&&r>3&&s+1==a/2)&&(e[i+1]/a/1e3|0)==_e(10,t-3)-1,o}function u(e,t,r){for(var n,i,a=[0],o=0,s=e.length;or-1&&(void 0===a[n+1]&&(a[n+1]=0),a[n+1]+=a[n]/r|0,a[n]%=r)}return a.reverse()}function c(e,t){var r,n,i=t.d.length;i<32?(r=Math.ceil(i/3),n=Math.pow(4,-r).toString()):(r=16,n="2.3283064365386962890625e-10"),e.precision+=r,t=O(e,1,t.times(n),new e(1));for(var a=r;a--;){var o=t.times(t);t=o.times(o).minus(o).times(8).plus(1)}return e.precision-=r,t}function f(e,t,r,n){var i,a,o,s,u,c,f,l,p,h=e.constructor;e:if(null!=t){if(l=e.d,!l)return e;for(i=1,s=l[0];s>=10;s/=10)i++;if(a=t-i,a<0)a+=Be,o=t,f=l[p=0],u=f/_e(10,i-o-1)%10|0;else if(p=Math.ceil((a+1)/Be),s=l.length,p>=s){if(!n)break e;for(;s++<=p;)l.push(0);f=u=0,i=1,a%=Be,o=a-Be+1}else{for(f=s=l[p],i=1;s>=10;s/=10)i++;a%=Be,o=a-Be+i,u=o<0?0:f/_e(10,i-o-1)%10|0}if(n=n||t<0||void 0!==l[p+1]||(o<0?f:f%_e(10,i-o-1)),c=r<4?(u||n)&&(0==r||r==(e.s<0?3:2)):u>5||5==u&&(4==r||n||6==r&&(a>0?o>0?f/_e(10,i-o):0:l[p-1])%10&1||r==(e.s<0?8:7)),t<1||!l[0])return l.length=0,c?(t-=e.e+1,l[0]=_e(10,(Be-t%Be)%Be),e.e=-t||0):l[0]=e.e=0,e;if(0==a?(l.length=p,s=1,p--):(l.length=p+1,s=_e(10,Be-a),l[p]=o>0?(f/_e(10,i-o)%_e(10,o)|0)*s:0),c)for(;;){if(0==p){for(a=1,o=l[0];o>=10;o/=10)a++;for(o=l[0]+=s,s=1;o>=10;o/=10)s++;a!=s&&(e.e++,l[0]==Ie&&(l[0]=1));break}if(l[p]+=s,l[p]!=Ie)break;l[p--]=0,s=1}for(a=l.length;0===l[--a];)l.pop()}return Ne&&(e.e>h.maxE?(e.d=null,e.e=NaN):e.e0?o=o.charAt(0)+"."+o.slice(1)+v(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(e.e<0?"e":"e+")+e.e):i<0?(o="0."+v(-i-1)+o,r&&(n=r-s)>0&&(o+=v(n))):i>=s?(o+=v(i+1-s),r&&(n=r-i-1)>0&&(o=o+"."+v(n))):((n=i+1)0&&(i+1===s&&(o+="."),o+=v(n))),o}function p(e,t){var r=e[0];for(t*=Be;r>=10;r/=10)t++;return t}function h(e,t,r){if(t>Re)throw Ne=!0,r&&(e.precision=r),Error(Ae);return f(new e(xe),t,1,!0)}function m(e,t,r){if(t>Ue)throw Error(Ae);return f(new e(we),t,r,!0)}function d(e){var t=e.length-1,r=t*Be+1;if(t=e[t]){for(;t%10==0;t/=10)r--;for(t=e[0];t>=10;t/=10)r++}return r}function v(e){for(var t="";e--;)t+="0";return t}function g(e,t,r,n){var i,a=new e(1),o=Math.ceil(n/Be+4);for(Ne=!1;;){if(r%2&&(a=a.times(t),S(a.d,o)&&(i=!0)),r=Te(r/2),0===r){r=a.d.length-1,i&&0===a.d[r]&&++a.d[r];break}t=t.times(t),S(t.d,o)}return Ne=!0,a}function y(e){return 1&e.d[e.d.length-1]}function x(e,t,r){for(var n,i=new e(t[0]),a=0;++a17)return new d(e.d?e.d[0]?e.s<0?0:1/0:1:e.s?e.s<0?0:e:NaN);for(null==t?(Ne=!1,l=g):l=t,c=new d(.03125);e.e>-2;)e=e.times(c),m+=5;for(n=Math.log(_e(2,m))/Math.LN10*2+5|0,l+=n,r=o=u=new d(1),d.precision=l;;){if(o=f(o.times(e),l,1),r=r.times(++h),c=u.plus(Le(o,r,l,1)),a(c.d).slice(0,l)===a(u.d).slice(0,l)){for(i=m;i--;)u=f(u.times(u),l,1);if(null!=t)return d.precision=g,u;if(!(p<3&&s(u.d,l-n,v,p)))return f(u,d.precision=g,v,Ne=!0);d.precision=l+=10,r=o=c=new d(1),h=0,p++}u=c}}function b(e,t){var r,n,i,o,u,c,l,p,m,d,v,g=1,y=10,x=e,w=x.d,N=x.constructor,E=N.rounding,M=N.precision;if(x.s<0||!w||!w[0]||!x.e&&1==w[0]&&1==w.length)return new N(w&&!w[0]?-1/0:1!=x.s?NaN:w?0:x);if(null==t?(Ne=!1,m=M):m=t,N.precision=m+=y,r=a(w),n=r.charAt(0),!(Math.abs(o=x.e)<15e14))return p=h(N,m+2,M).times(o+""),x=b(new N(n+"."+r.slice(1)),m-y).plus(p),N.precision=M,null==t?f(x,M,E,Ne=!0):x;for(;n<7&&1!=n||1==n&&r.charAt(1)>3;)x=x.times(e),r=a(x.d),n=r.charAt(0),g++;for(o=x.e,n>1?(x=new N("0."+r),o++):x=new N(n+"."+r.slice(1)),d=x,l=u=x=Le(x.minus(1),x.plus(1),m,1),v=f(x.times(x),m,1),i=3;;){if(u=f(u.times(v),m,1),p=l.plus(Le(u,new N(i),m,1)),a(p.d).slice(0,m)===a(l.d).slice(0,m)){if(l=l.times(2),0!==o&&(l=l.plus(h(N,m+2,M).times(o+""))),l=Le(l,new N(g),m,1),null!=t)return N.precision=M,l;if(!s(l.d,m-y,E,c))return f(l,N.precision=M,E,Ne=!0);N.precision=m+=y,p=u=x=Le(d.minus(1),d.plus(1),m,1), -v=f(x.times(x),m,1),i=c=1}l=p,i+=2}}function N(e){return String(e.s*e.s/0)}function E(e,t){var r,n,i;for((r=t.indexOf("."))>-1&&(t=t.replace(".","")),(n=t.search(/e/i))>0?(r<0&&(r=n),r+=+t.slice(n+1),t=t.substring(0,n)):r<0&&(r=t.length),n=0;48===t.charCodeAt(n);n++);for(i=t.length;48===t.charCodeAt(i-1);--i);if(t=t.slice(n,i)){if(i-=n,e.e=r=r-n-1,e.d=[],n=(r+1)%Be,r<0&&(n+=Be),ne.constructor.maxE?(e.d=null,e.e=NaN):e.e0?(c=+t.slice(a+1),t=t.substring(2,a)):t=t.slice(2),a=t.indexOf("."),o=a>=0,n=e.constructor,o&&(t=t.replace(".",""),s=t.length,a=s-a,i=g(n,new n(r),a,2*a)),f=u(t,r,Ie),l=f.length-1,a=l;0===f[a];--a)f.pop();return a<0?new n(0*e.s):(e.e=p(f,l),e.d=f,Ne=!1,o&&(e=Le(e,i,4*s)),c&&(e=e.times(Math.abs(c)<54?Math.pow(2,c):be.pow(2,c))),Ne=!0,e)}function A(e,t){var r,n=t.d.length;if(n<3)return O(e,2,t,t);r=1.4*Math.sqrt(n),r=r>16?16:0|r,t=t.times(Math.pow(5,-r)),t=O(e,2,t,t);for(var i,a=new e(5),o=new e(16),s=new e(20);r--;)i=t.times(t),t=t.times(a.plus(i.times(o.times(i).minus(s))));return t}function O(e,t,r,n,i){var a,o,s,u,c=1,f=e.precision,l=Math.ceil(f/Be);for(Ne=!1,u=r.times(r),s=new e(n);;){if(o=Le(s.times(u),new e(t++*t++),f,1),s=i?n.plus(o):n.minus(o),n=Le(o.times(u),new e(t++*t++),f,1),o=s.plus(n),void 0!==o.d[l]){for(a=l;o.d[a]===s.d[a]&&a--;);if(a==-1)break}a=s,s=n,n=o,o=a,c++}return Ne=!0,o.d.length=l+1,o}function T(e,t){var r,n=t.s<0,i=m(e,e.precision,1),a=i.times(.5);if(t=t.abs(),t.lte(a))return de=n?4:1,t;if(r=t.divToInt(i),r.isZero())de=n?3:2;else{if(t=t.minus(r.times(i)),t.lte(a))return de=y(r)?n?2:3:n?4:1,t;de=y(r)?n?1:4:n?3:2}return t.minus(i).abs()}function _(e,t,r,n){var i,a,s,c,f,p,h,m,d,v=e.constructor,g=void 0!==r;if(g?(o(r,1,ge),void 0===n?n=v.rounding:o(n,0,8)):(r=v.precision,n=v.rounding),e.isFinite()){for(h=l(e),s=h.indexOf("."),g?(i=2,16==t?r=4*r-3:8==t&&(r=3*r-2)):i=t,s>=0&&(h=h.replace(".",""),d=new v(1),d.e=h.length-s,d.d=u(l(d),10,i),d.e=d.d.length),m=u(h,10,i),a=f=m.length;0==m[--f];)m.pop();if(m[0]){if(s<0?a--:(e=new v(e),e.d=m,e.e=a,e=Le(e,d,r,n,0,i),m=e.d,a=e.e,p=me),s=m[r],c=i/2,p=p||void 0!==m[r+1],p=n<4?(void 0!==s||p)&&(0===n||n===(e.s<0?3:2)):s>c||s===c&&(4===n||p||6===n&&1&m[r-1]||n===(e.s<0?8:7)),m.length=r,p)for(;++m[--r]>i-1;)m[r]=0,r||(++a,m.unshift(1));for(f=m.length;!m[f-1];--f);for(s=0,h="";s1)if(16==t||8==t){for(s=16==t?4:3,--f;f%s;f++)h+="0";for(m=u(h,i,t),f=m.length;!m[f-1];--f);for(s=1,h="1.";sf)for(a-=f;a--;)h+="0";else at)return e.length=t,!0}function C(e){return new this(e).abs()}function z(e){return new this(e).acos()}function k(e){return new this(e).acosh()}function I(e,t){return new this(e).plus(t)}function B(e){return new this(e).asin()}function P(e){return new this(e).asinh()}function R(e){return new this(e).atan()}function U(e){return new this(e).atanh()}function q(e,t){e=new this(e),t=new this(t);var r,n=this.precision,i=this.rounding,a=n+4;return e.s&&t.s?e.d||t.d?!t.d||e.isZero()?(r=t.s<0?m(this,n,i):new this(0),r.s=e.s):!e.d||t.isZero()?(r=m(this,a,1).times(.5),r.s=e.s):t.s<0?(this.precision=a,this.rounding=1,r=this.atan(Le(e,t,a,1)),t=m(this,a,1),this.precision=n,this.rounding=i,r=e.s<0?r.minus(t):r.plus(t)):r=this.atan(Le(e,t,a,1)):(r=m(this,a,1).times(t.s>0?.25:.75),r.s=e.s):r=new this(NaN),r}function L(e){return new this(e).cbrt()}function j(e){return f(e=new this(e),e.e+1,2)}function F(e){if(!e||"object"!=typeof e)throw Error(Ee+"Object expected");var t,r,n,i=["precision",1,ge,"rounding",0,8,"toExpNeg",-ve,0,"toExpPos",0,ve,"maxE",0,ve,"minE",-ve,0,"modulo",0,9];for(t=0;t=i[t+1]&&n<=i[t+2]))throw Error(Me+r+": "+n);this[r]=n}if(void 0!==(n=e[r="crypto"])){if(n!==!0&&n!==!1&&0!==n&&1!==n)throw Error(Me+r+": "+n);if(n){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw Error(Oe);this[r]=!0}else this[r]=!1}return this}function D(e){return new this(e).cos()}function H(e){return new this(e).cosh()}function $(e){function t(e){var r,n,i,a=this;if(!(a instanceof t))return new t(e);if(a.constructor=t,e instanceof t)return a.s=e.s,a.e=e.e,void(a.d=(e=e.d)?e.slice():e);if(i=typeof e,"number"===i){if(0===e)return a.s=1/e<0?-1:1,a.e=0,void(a.d=[0]);if(e<0?(e=-e,a.s=-1):a.s=1,e===~~e&&e<1e7){for(r=0,n=e;n>=10;n/=10)r++;return a.e=r,void(a.d=[e])}return 0*e!==0?(e||(a.s=NaN),a.e=NaN,void(a.d=null)):E(a,e.toString())}if("string"!==i)throw Error(Me+e);return 45===e.charCodeAt(0)?(e=e.slice(1),a.s=-1):a.s=1,ke.test(e)?E(a,e):M(a,e)}var r,n,i;if(t.prototype=qe,t.ROUND_UP=0,t.ROUND_DOWN=1,t.ROUND_CEIL=2,t.ROUND_FLOOR=3,t.ROUND_HALF_UP=4,t.ROUND_HALF_DOWN=5,t.ROUND_HALF_EVEN=6,t.ROUND_HALF_CEIL=7,t.ROUND_HALF_FLOOR=8,t.EUCLID=9,t.config=t.set=F,t.clone=$,t.abs=C,t.acos=z,t.acosh=k,t.add=I,t.asin=B,t.asinh=P,t.atan=R,t.atanh=U,t.atan2=q,t.cbrt=L,t.ceil=j,t.cos=D,t.cosh=H,t.div=G,t.exp=Z,t.floor=V,t.hypot=W,t.ln=Y,t.log=X,t.log10=Q,t.log2=J,t.max=K,t.min=ee,t.mod=te,t.mul=re,t.pow=ne,t.random=ie,t.round=ae,t.sign=oe,t.sin=se,t.sinh=ue,t.sqrt=ce,t.sub=fe,t.tan=le,t.tanh=pe,t.trunc=he,void 0===e&&(e={}),e)for(i=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],r=0;r=429e7?t[a]=crypto.getRandomValues(new Uint32Array(1))[0]:u[a++]=i%1e7;else{if(!crypto.randomBytes)throw Error(Oe);for(t=crypto.randomBytes(n*=4);a=214e7?crypto.randomBytes(4).copy(t,a):(u.push(i%1e7),a+=4);a=n/4}else for(;a=10;i/=10)n++;ne.e^u<0?1:-1;for(n=o.length,i=s.length,t=0,r=ns[t]^u<0?1:-1;return n===i?0:n>i^u<0?1:-1},qe.cosine=qe.cos=function(){var e,t,r=this,n=r.constructor;return r.d?r.d[0]?(e=n.precision,t=n.rounding,n.precision=e+Math.max(r.e,r.sd())+Be,n.rounding=1,r=c(n,T(n,r)),n.precision=e,n.rounding=t,f(2==de||3==de?r.neg():r,e,t,!0)):new n(1):new n(NaN)},qe.cubeRoot=qe.cbrt=function(){var e,t,r,n,i,o,s,u,c,l,p=this,h=p.constructor;if(!p.isFinite()||p.isZero())return new h(p);for(Ne=!1,o=p.s*Math.pow(p.s*p,1/3),o&&Math.abs(o)!=1/0?n=new h(o.toString()):(r=a(p.d),e=p.e,(o=(e-r.length+1)%3)&&(r+=1==o||o==-2?"0":"00"),o=Math.pow(r,1/3),e=Te((e+1)/3)-(e%3==(e<0?-1:2)),o==1/0?r="5e"+e:(r=o.toExponential(),r=r.slice(0,r.indexOf("e")+1)+e),n=new h(r),n.s=p.s),s=(e=h.precision)+3;;)if(u=n,c=u.times(u).times(u),l=c.plus(p),n=Le(l.plus(p).times(u),l.plus(c),s+2,1),a(u.d).slice(0,s)===(r=a(n.d)).slice(0,s)){if(r=r.slice(s-3,s+1),"9999"!=r&&(i||"4999"!=r)){+r&&(+r.slice(1)||"5"!=r.charAt(0))||(f(n,e+1,1),t=!n.times(n).times(n).eq(p));break}if(!i&&(f(u,e+1,0),u.times(u).times(u).eq(p))){n=u;break}s+=4,i=1}return Ne=!0,f(n,e,h.rounding,t)},qe.decimalPlaces=qe.dp=function(){var e,t=this.d,r=NaN;if(t){if(e=t.length-1,r=(e-Te(this.e/Be))*Be,e=t[e])for(;e%10==0;e/=10)r--;r<0&&(r=0)}return r},qe.dividedBy=qe.div=function(e){return Le(this,new this.constructor(e))},qe.dividedToIntegerBy=qe.divToInt=function(e){var t=this,r=t.constructor;return f(Le(t,new r(e),0,1,1),r.precision,r.rounding)},qe.equals=qe.eq=function(e){return 0===this.cmp(e)},qe.floor=function(){return f(new this.constructor(this),this.e+1,3)},qe.greaterThan=qe.gt=function(e){return this.cmp(e)>0},qe.greaterThanOrEqualTo=qe.gte=function(e){var t=this.cmp(e);return 1==t||0===t},qe.hyperbolicCosine=qe.cosh=function(){var e,t,r,n,i,a=this,o=a.constructor,s=new o(1);if(!a.isFinite())return new o(a.s?1/0:NaN);if(a.isZero())return s;r=o.precision,n=o.rounding,o.precision=r+Math.max(a.e,a.sd())+4,o.rounding=1,i=a.d.length,i<32?(e=Math.ceil(i/3),t=Math.pow(4,-e).toString()):(e=16,t="2.3283064365386962890625e-10"),a=O(o,1,a.times(t),new o(1),!0);for(var u,c=e,l=new o(8);c--;)u=a.times(a),a=s.minus(u.times(l.minus(u.times(l))));return f(a,o.precision=r,o.rounding=n,!0)},qe.hyperbolicSine=qe.sinh=function(){var e,t,r,n,i=this,a=i.constructor;if(!i.isFinite()||i.isZero())return new a(i);if(t=a.precision,r=a.rounding,a.precision=t+Math.max(i.e,i.sd())+4,a.rounding=1,n=i.d.length,n<3)i=O(a,2,i,i,!0);else{e=1.4*Math.sqrt(n),e=e>16?16:0|e,i=i.times(Math.pow(5,-e)),i=O(a,2,i,i,!0);for(var o,s=new a(5),u=new a(16),c=new a(20);e--;)o=i.times(i),i=i.times(s.plus(o.times(u.times(o).plus(c))))}return a.precision=t,a.rounding=r,f(i,t,r,!0)},qe.hyperbolicTangent=qe.tanh=function(){var e,t,r=this,n=r.constructor;return r.isFinite()?r.isZero()?new n(r):(e=n.precision,t=n.rounding,n.precision=e+7,n.rounding=1,Le(r.sinh(),r.cosh(),n.precision=e,n.rounding=t)):new n(r.s)},qe.inverseCosine=qe.acos=function(){var e,t=this,r=t.constructor,n=t.abs().cmp(1),i=r.precision,a=r.rounding;return n!==-1?0===n?t.isNeg()?m(r,i,a):new r(0):new r(NaN):t.isZero()?m(r,i+4,a).times(.5):(r.precision=i+6,r.rounding=1,t=t.asin(),e=m(r,i+4,a).times(.5),r.precision=i,r.rounding=a,e.minus(t))},qe.inverseHyperbolicCosine=qe.acosh=function(){var e,t,r=this,n=r.constructor;return r.lte(1)?new n(r.eq(1)?0:NaN):r.isFinite()?(e=n.precision,t=n.rounding,n.precision=e+Math.max(Math.abs(r.e),r.sd())+4,n.rounding=1,Ne=!1,r=r.times(r).minus(1).sqrt().plus(r),Ne=!0,n.precision=e,n.rounding=t,r.ln()):new n(r)},qe.inverseHyperbolicSine=qe.asinh=function(){var e,t,r=this,n=r.constructor;return!r.isFinite()||r.isZero()?new n(r):(e=n.precision,t=n.rounding,n.precision=e+2*Math.max(Math.abs(r.e),r.sd())+6,n.rounding=1,Ne=!1,r=r.times(r).plus(1).sqrt().plus(r),Ne=!0,n.precision=e,n.rounding=t,r.ln())},qe.inverseHyperbolicTangent=qe.atanh=function(){var e,t,r,n,i=this,a=i.constructor;return i.isFinite()?i.e>=0?new a(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(e=a.precision,t=a.rounding,n=i.sd(),Math.max(n,e)<2*-i.e-1?f(new a(i),e,t,!0):(a.precision=r=n-i.e,i=Le(i.plus(1),new a(1).minus(i),r+e,1),a.precision=e+4,a.rounding=1,i=i.ln(),a.precision=e,a.rounding=t,i.times(.5))):new a(NaN)},qe.inverseSine=qe.asin=function(){var e,t,r,n,i=this,a=i.constructor;return i.isZero()?new a(i):(t=i.abs().cmp(1),r=a.precision,n=a.rounding,t!==-1?0===t?(e=m(a,r+4,n).times(.5),e.s=i.s,e):new a(NaN):(a.precision=r+6,a.rounding=1,i=i.div(new a(1).minus(i.times(i)).sqrt().plus(1)).atan(),a.precision=r,a.rounding=n,i.times(2)))},qe.inverseTangent=qe.atan=function(){var e,t,r,n,i,a,o,s,u,c=this,l=c.constructor,p=l.precision,h=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&p+4<=Ue)return o=m(l,p+4,h).times(.25),o.s=c.s,o}else{if(!c.s)return new l(NaN);if(p+4<=Ue)return o=m(l,p+4,h).times(.5),o.s=c.s,o}for(l.precision=s=p+10,l.rounding=1,r=Math.min(28,s/Be+2|0),e=r;e;--e)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(Ne=!1,t=Math.ceil(s/Be),n=1,u=c.times(c),o=new l(c),i=c;e!==-1;)if(i=i.times(u),a=o.minus(i.div(n+=2)),i=i.times(u),o=a.plus(i.div(n+=2)),void 0!==o.d[t])for(e=t;o.d[e]===a.d[e]&&e--;);return r&&(o=o.times(2<this.d.length-2},qe.isNaN=function(){return!this.s},qe.isNegative=qe.isNeg=function(){return this.s<0},qe.isPositive=qe.isPos=function(){return this.s>0},qe.isZero=function(){return!!this.d&&0===this.d[0]},qe.lessThan=qe.lt=function(e){return this.cmp(e)<0},qe.lessThanOrEqualTo=qe.lte=function(e){return this.cmp(e)<1},qe.logarithm=qe.log=function(e){var t,r,n,i,o,u,c,l,p=this,m=p.constructor,d=m.precision,v=m.rounding,g=5;if(null==e)e=new m(10),t=!0;else{if(e=new m(e),r=e.d,e.s<0||!r||!r[0]||e.eq(1))return new m(NaN);t=e.eq(10)}if(r=p.d,p.s<0||!r||!r[0]||p.eq(1))return new m(r&&!r[0]?-1/0:1!=p.s?NaN:r?0:1/0);if(t)if(r.length>1)o=!0;else{for(i=r[0];i%10===0;)i/=10;o=1!==i}if(Ne=!1,c=d+g,u=b(p,c),n=t?h(m,c+10):b(e,c),l=Le(u,n,c,1),s(l.d,i=d,v))do if(c+=10,u=b(p,c),n=t?h(m,c+10):b(e,c),l=Le(u,n,c,1),!o){+a(l.d).slice(i+1,i+15)+1==1e14&&(l=f(l,d+1,0));break}while(s(l.d,i+=10,v));return Ne=!0,f(l,d,v)},qe.minus=qe.sub=function(e){var t,r,n,i,a,o,s,u,c,l,h,m,d=this,v=d.constructor;if(e=new v(e),!d.d||!e.d)return d.s&&e.s?d.d?e.s=-e.s:e=new v(e.d||d.s!==e.s?d:NaN):e=new v(NaN),e;if(d.s!=e.s)return e.s=-e.s,d.plus(e);if(c=d.d,m=e.d,s=v.precision,u=v.rounding,!c[0]||!m[0]){if(m[0])e.s=-e.s;else{if(!c[0])return new v(3===u?-0:0);e=new v(d)}return Ne?f(e,s,u):e}if(r=Te(e.e/Be),l=Te(d.e/Be),c=c.slice(),a=l-r){for(h=a<0,h?(t=c,a=-a,o=m.length):(t=m,r=l,o=c.length),n=Math.max(Math.ceil(s/Be),o)+2,a>n&&(a=n,t.length=1),t.reverse(),n=a;n--;)t.push(0);t.reverse()}else{for(n=c.length,o=m.length,h=n0;--n)c[o++]=0;for(n=m.length;n>a;){if(c[--n]o?a+1:o+1,i>o&&(i=o,r.length=1),r.reverse();i--;)r.push(0);r.reverse()}for(o=c.length,i=l.length,o-i<0&&(i=o,r=l,l=c,c=r),t=0;i;)t=(c[--i]=c[i]+l[i]+t)/Ie|0,c[i]%=Ie;for(t&&(c.unshift(t),++n),o=c.length;0==c[--o];)c.pop();return e.d=c,e.e=p(c,n),Ne?f(e,s,u):e},qe.precision=qe.sd=function(e){var t,r=this;if(void 0!==e&&e!==!!e&&1!==e&&0!==e)throw Error(Me+e);return r.d?(t=d(r.d),e&&r.e+1>t&&(t=r.e+1)):t=NaN,t},qe.round=function(){var e=this,t=e.constructor;return f(new t(e),e.e+1,t.rounding)},qe.sine=qe.sin=function(){var e,t,r=this,n=r.constructor;return r.isFinite()?r.isZero()?new n(r):(e=n.precision,t=n.rounding,n.precision=e+Math.max(r.e,r.sd())+Be,n.rounding=1,r=A(n,T(n,r)),n.precision=e,n.rounding=t,f(de>2?r.neg():r,e,t,!0)):new n(NaN)},qe.squareRoot=qe.sqrt=function(){var e,t,r,n,i,o,s=this,u=s.d,c=s.e,l=s.s,p=s.constructor;if(1!==l||!u||!u[0])return new p(!l||l<0&&(!u||u[0])?NaN:u?s:1/0);for(Ne=!1,l=Math.sqrt(+s),0==l||l==1/0?(t=a(u),(t.length+c)%2==0&&(t+="0"),l=Math.sqrt(t),c=Te((c+1)/2)-(c<0||c%2),l==1/0?t="1e"+c:(t=l.toExponential(),t=t.slice(0,t.indexOf("e")+1)+c),n=new p(t)):n=new p(l.toString()),r=(c=p.precision)+3;;)if(o=n,n=o.plus(Le(s,o,r+2,1)).times(.5),a(o.d).slice(0,r)===(t=a(n.d)).slice(0,r)){if(t=t.slice(r-3,r+1),"9999"!=t&&(i||"4999"!=t)){+t&&(+t.slice(1)||"5"!=t.charAt(0))||(f(n,c+1,1),e=!n.times(n).eq(s));break}if(!i&&(f(o,c+1,0),o.times(o).eq(s))){n=o;break}r+=4,i=1}return Ne=!0,f(n,c,p.rounding,e)},qe.tangent=qe.tan=function(){var e,t,r=this,n=r.constructor;return r.isFinite()?r.isZero()?new n(r):(e=n.precision,t=n.rounding,n.precision=e+10,n.rounding=1,r=r.sin(),r.s=1,r=Le(r,new n(1).minus(r.times(r)).sqrt(),e+10,0),n.precision=e,n.rounding=t,f(2==de||4==de?r.neg():r,e,t,!0)):new n(NaN)},qe.times=qe.mul=function(e){var t,r,n,i,a,o,s,u,c,l=this,h=l.constructor,m=l.d,d=(e=new h(e)).d;if(e.s*=l.s,!(m&&m[0]&&d&&d[0]))return new h(!e.s||m&&!m[0]&&!d||d&&!d[0]&&!m?NaN:m&&d?0*e.s:e.s/0);for(r=Te(l.e/Be)+Te(e.e/Be),u=m.length,c=d.length,u=0;){for(t=0,i=u+n;i>n;)s=a[i]+d[n]*m[i-n-1]+t,a[i--]=s%Ie|0,t=s/Ie|0;a[i]=(a[i]+t)%Ie|0}for(;!a[--o];)a.pop();return t?++r:a.shift(),e.d=a,e.e=p(a,r),Ne?f(e,h.precision,h.rounding):e},qe.toBinary=function(e,t){return _(this,2,e,t)},qe.toDecimalPlaces=qe.toDP=function(e,t){var r=this,n=r.constructor;return r=new n(r),void 0===e?r:(o(e,0,ge),void 0===t?t=n.rounding:o(t,0,8),f(r,e+r.e+1,t))},qe.toExponential=function(e,t){var r,n=this,i=n.constructor;return void 0===e?r=l(n,!0):(o(e,0,ge),void 0===t?t=i.rounding:o(t,0,8),n=f(new i(n),e+1,t),r=l(n,!0,e+1)),n.isNeg()&&!n.isZero()?"-"+r:r},qe.toFixed=function(e,t){var r,n,i=this,a=i.constructor;return void 0===e?r=l(i):(o(e,0,ge),void 0===t?t=a.rounding:o(t,0,8),n=f(new a(i),e+i.e+1,t),r=l(n,!1,e+n.e+1)),i.isNeg()&&!i.isZero()?"-"+r:r},qe.toFraction=function(e){var t,r,n,i,o,s,u,c,f,l,p,h,m=this,v=m.d,g=m.constructor;if(!v)return new g(m);if(f=r=new g(1),n=c=new g(0),t=new g(n),o=t.e=d(v)-m.e-1,s=o%Be,t.d[0]=_e(10,s<0?Be+s:s),null==e)e=o>0?t:f;else{if(u=new g(e),!u.isInt()||u.lt(f))throw Error(Me+u);e=u.gt(t)?o>0?t:f:u}for(Ne=!1,u=new g(a(v)),l=g.precision,g.precision=o=v.length*Be*2;p=Le(u,t,0,1,1),i=r.plus(p.times(n)),1!=i.cmp(e);)r=n,n=i,i=f,f=c.plus(p.times(i)),c=i,i=t,t=u.minus(p.times(i)),u=i;return i=Le(e.minus(r),n,0,1,1),c=c.plus(i.times(f)),r=r.plus(i.times(n)),c.s=f.s=m.s,h=Le(f,n,o,1).minus(m).abs().cmp(Le(c,r,o,1).minus(m).abs())<1?[f,n]:[c,r],g.precision=l,Ne=!0,h},qe.toHexadecimal=qe.toHex=function(e,t){return _(this,16,e,t)},qe.toNearest=function(e,t){var r=this,n=r.constructor;if(r=new n(r),null==e){if(!r.d)return r;e=new n(1),t=n.rounding}else{if(e=new n(e),void 0!==t&&o(t,0,8),!r.d)return e.s?r:e;if(!e.d)return e.s&&(e.s=r.s),e}return e.d[0]?(Ne=!1,t<4&&(t=[4,5,7,8][t]),r=Le(r,e,0,t,1).times(e),Ne=!0,f(r)):(e.s=r.s,r=e),r},qe.toNumber=function(){return+this},qe.toOctal=function(e,t){return _(this,8,e,t)},qe.toPower=qe.pow=function(e){var t,r,n,i,o,u,c=this,l=c.constructor,p=+(e=new l(e));if(!(c.d&&e.d&&c.d[0]&&e.d[0]))return new l(_e(+c,p));if(c=new l(c),c.eq(1))return c;if(n=l.precision,o=l.rounding,e.eq(1))return f(c,n,o);if(t=Te(e.e/Be),t>=e.d.length-1&&(r=p<0?-p:p)<=Pe)return i=g(l,c,r,n),e.s<0?new l(1).div(i):f(i,n,o);if(u=c.s,u<0){if(tl.maxE+1||t0?u/0:0):(Ne=!1,l.rounding=c.s=1,r=Math.min(12,(t+"").length),i=w(e.times(b(c,n+r)),n),i.d&&(i=f(i,n+5,1),s(i.d,n,o)&&(t=n+10,i=f(w(e.times(b(c,t+r)),t),t+5,1),+a(i.d).slice(n+1,n+15)+1==1e14&&(i=f(i,n+1,0)))),i.s=u,Ne=!0,l.rounding=o,f(i,n,o))},qe.toPrecision=function(e,t){var r,n=this,i=n.constructor;return void 0===e?r=l(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(o(e,1,ge),void 0===t?t=i.rounding:o(t,0,8),n=f(new i(n),e,t),r=l(n,e<=n.e||n.e<=i.toExpNeg,e)),n.isNeg()&&!n.isZero()?"-"+r:r},qe.toSignificantDigits=qe.toSD=function(e,t){var r=this,n=r.constructor;return void 0===e?(e=n.precision,t=n.rounding):(o(e,1,ge),void 0===t?t=n.rounding:o(t,0,8)),f(new n(r),e,t)},qe.toString=function(){var e=this,t=e.constructor,r=l(e,e.e<=t.toExpNeg||e.e>=t.toExpPos);return e.isNeg()&&!e.isZero()?"-"+r:r},qe.truncated=qe.trunc=function(){return f(new this.constructor(this),this.e+1,1)},qe.valueOf=qe.toJSON=function(){var e=this,t=e.constructor,r=l(e,e.e<=t.toExpNeg||e.e>=t.toExpPos);return e.isNeg()?"-"+r:r};var Le=function(){function e(e,t,r){var n,i=0,a=e.length;for(e=e.slice();a--;)n=e[a]*t+i,e[a]=n%r|0,i=n/r|0;return i&&e.unshift(i),e}function t(e,t,r,n){var i,a;if(r!=n)a=r>n?1:-1;else for(i=a=0;it[i]?1:-1;break}return a}function r(e,t,r,n){for(var i=0;r--;)e[r]-=i,i=e[r]1;)e.shift()}return function(n,i,a,o,s,u){var c,l,p,h,m,d,v,g,y,x,w,b,N,E,M,A,O,T,_,S,C=n.constructor,z=n.s==i.s?1:-1,k=n.d,I=i.d;if(!(k&&k[0]&&I&&I[0]))return new C(n.s&&i.s&&(k?!I||k[0]!=I[0]:I)?k&&0==k[0]||!I?0*z:z/0:NaN);for(u?(m=1,l=n.e-i.e):(u=Ie,m=Be,l=Te(n.e/m)-Te(i.e/m)),_=I.length,O=k.length,y=new C(z),x=y.d=[],p=0;I[p]==(k[p]||0);p++);if(I[p]>(k[p]||0)&&l--,null==a?(E=a=C.precision,o=C.rounding):E=s?a+(n.e-i.e)+1:a,E<0)x.push(1),d=!0;else{if(E=E/m+2|0,p=0,1==_){for(h=0,I=I[0],E++;(p1&&(I=e(I,h,u),k=e(k,h,u),_=I.length,O=k.length),A=_,w=k.slice(0,_),b=w.length;b<_;)w[b++]=0;S=I.slice(),S.unshift(0),T=I[0],I[1]>=u/2&&++T;do h=0,c=t(I,w,_,b),c<0?(N=w[0],_!=b&&(N=N*u+(w[1]||0)),h=N/T|0,h>1?(h>=u&&(h=u-1),v=e(I,h,u),g=v.length,b=w.length,c=t(v,w,g,b),1==c&&(h--,r(v,_=10;h/=10)p++;y.e=p+l*m-1,f(y,s?a+y.e+1:a,o,d)}return y}}();be=$(be),xe=new be(xe),we=new be(we),n=function(){return be}.call(t,r,t,e),!(void 0!==n&&(e.exports=n))}(this)},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("bignumber",{"":function(){return new e.BigNumber(0)},number:function(t){return new e.BigNumber(t+"")},string:function(t){return new e.BigNumber(t)},BigNumber:function(e){return e},Fraction:function(t){return new e.BigNumber(t.n).div(t.d)},"Array | Matrix":function(e){return i(e,a)}});return a.toTex={0:"0",1:"\\left(${args[0]}\\right)"},a}var i=r(1);t.name="bignumber",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("bool",{"":function(){return!1},boolean:function(e){return e},number:function(e){return!!e},BigNumber:function(e){return!e.isZero()},string:function(e){var t=e.toLowerCase();if("true"===t)return!0;if("false"===t)return!1;var r=Number(e);if(""!=e&&!isNaN(r))return!!r;throw new Error('Cannot convert "'+e+'" to a boolean')},"Array | Matrix":function(e){return i(e,a)}});return a}var i=r(1);t.name="boolean",t.factory=n},function(e,t,r){e.exports=[r(164),r(166)]},function(e,t,r){"use strict";function n(e,t,r,n,o){function s(t){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");e.isChain(t)?this.value=t.value:this.value=t}function u(e,t){"function"==typeof t&&(s.prototype[e]=f(t))}function c(e,t){a(s.prototype,e,function(){var e=t();if("function"==typeof e)return f(e)})}function f(e){return function(){for(var t=[this.value],r=0;r")}function i(e,r,n,a){var o,s,u=e.length,c=r[n],f=Math.min(u,c);if(e.length=c,n=t)throw new l(e,t)},t.UNINITIALIZED={},t.resize=function(e,t,r){if(!Array.isArray(e)||!Array.isArray(t))throw new TypeError("Array expected");if(0===t.length)throw new Error("Resizing to scalar is not supported");t.forEach(function(e){if(!u.isNumber(e)||!u.isInteger(e)||e<0)throw new TypeError("Invalid size, must contain positive integers (size: "+c.format(t)+")")});return i(e,t,0,void 0!==r?r:0),e},t.reshape=function(e,r){var n,i=t.flatten(e),o=function(e){return e.reduce(function(e,t){return e*t})};if(!Array.isArray(e)||!Array.isArray(r))throw new TypeError("Array expected");if(0===r.length)throw new f(0,o(t.size(e)),"!=");try{n=a(i,r)}catch(n){if(n instanceof f)throw new f(o(r),o(t.size(e)),"!=");throw n}if(i.length>0)throw new f(o(r),o(t.size(e)),"!=");return n},t.squeeze=function(e,r){for(var n=r||t.size(e);Array.isArray(e)&&1===e.length;)e=e[0],n.shift();for(var i=n.length;1===n[i-1];)i--;return i0?1:e<0?-1:0},t.format=function(e,r){if("function"==typeof r)return r(e);if(e===1/0)return"Infinity";if(e===-1/0)return"-Infinity";if(isNaN(e))return"NaN";var n="auto",i=void 0;switch(r&&(r.notation&&(n=r.notation),t.isNumber(r)?i=r:r.precision&&(i=r.precision)),n){case"fixed":return t.toFixed(e,i);case"exponential":return t.toExponential(e,i);case"engineering":return t.toEngineering(e,i);case"auto":return t.toPrecision(e,i,r&&r.exponential).replace(/((\.\d*?)(0+))($|e)/,function(){var e=arguments[2],t=arguments[4];return"."!==e?e+t:t});default:throw new Error('Unknown notation "'+n+'". Choose "auto", "exponential", or "fixed".')}},t.splitNumber=function(e){var t=String(e).toLowerCase().match(/^0*?(-?)(\d+\.?\d*)(e([+-]?\d+))?$/);if(!t)throw new SyntaxError("Invalid number "+e);var r=t[1],n=t[2],i=parseFloat(t[4]||"0"),a=n.indexOf(".");i+=-1!==a?a-1:n.length-1;var o=n.replace(".","").replace(/^0*/,function(e){return i-=e.length,""}).replace(/0*$/,"").split("").map(function(e){return parseInt(e)});return 0===o.length&&(o.push(0),i++),{sign:r,coefficients:o,exponent:i}},t.toEngineering=function(e,r){if(isNaN(e)||!isFinite(e))return String(e);var i=t.roundDigits(t.splitNumber(e),r),a=i.exponent,o=i.coefficients,s=a%3==0?a:a<0?a-3-a%3:a-a%3,u=a>=0?a:Math.abs(s);o.length-1=0;)f++;var l=o.slice(f).join(""),p=l.match(/[1-9]/)?"."+l:"",h=o.slice(0,f).join("")+p+"e"+(a>=0?"+":"")+s.toString();return i.sign+h},t.toFixed=function(e,r){if(isNaN(e)||!isFinite(e))return String(e);var i=t.splitNumber(e),a=t.roundDigits(i,i.exponent+1+(r||0)),o=a.coefficients,s=a.exponent+1,u=s+(r||0);return o.length0?"."+o.join(""):"")+"e"+(s>=0?"+":"")+s},t.toPrecision=function(e,r,i){if(isNaN(e)||!isFinite(e))return String(e);var a=i&&void 0!==i.lower?i.lower:.001,o=i&&void 0!==i.upper?i.upper:1e5,s=t.splitNumber(e),u=Math.abs(Math.pow(10,s.exponent));if(u=o)return t.toExponential(e,r);var c=r?t.roundDigits(s,r):s,f=c.coefficients,l=c.exponent;f.length0?l:0;return pt){if(n.splice(t,n.length-t)[0]>=5){var i=t-1;for(n[i]++;10===n[i];)n.pop(),0===i&&(n.unshift(0),r.exponent++,i++),n[--i]++}}return r},t.digits=function(e){return e.toExponential().replace(/e.*$/,"").replace(/^0\.?0*|\./,"").length},t.DBL_EPSILON=Number.EPSILON||2.220446049250313e-16,t.nearlyEqual=function(e,r,n){if(null==n)return e==r;if(e==r)return!0;if(isNaN(e)||isNaN(r))return!1;if(isFinite(e)&&isFinite(r)){var i=Math.abs(e-r);return i>",rightLogShift:">>>",equal:"=",unequal:"\\neq",smaller:"<",larger:">",smallerEq:"\\leq",largerEq:"\\geq",bitAnd:"\\&",bitXor:"\\underline{|}",bitOr:"|",and:"\\wedge",xor:"\\veebar",or:"\\vee"},t.defaultTemplate="\\mathrm{${name}}\\left(${args}\\right)";var n={deg:"^\\circ"};t.toSymbol=function(e,r){if(r=void 0!==r&&r)return n.hasOwnProperty(e)?n[e]:"\\mathrm{"+e+"}";if(t.symbols.hasOwnProperty(e))return t.symbols[e];if(-1!==e.indexOf("_")){var i=e.indexOf("_");return t.toSymbol(e.substring(0,i))+"_{"+t.toSymbol(e.substring(i+1))+"}"}return e}},function(e,t,r){"use strict";var n=r(71);t.clone=function e(r){var i=typeof r;if("number"===i||"string"===i||"boolean"===i||null===r||void 0===r)return r;if("function"==typeof r.clone)return r.clone();if(Array.isArray(r))return r.map(function(t){return e(t)});if(r instanceof Number)return new Number(r.valueOf());if(r instanceof String)return new String(r.valueOf());if(r instanceof Boolean)return new Boolean(r.valueOf());if(r instanceof Date)return new Date(r.valueOf());if(n(r))return r;if(r instanceof RegExp)throw new TypeError("Cannot clone "+r);return t.map(r,e)},t.map=function(e,r){var n={};for(var i in e)t.hasOwnProperty(e,i)&&(n[i]=r(e[i]));return n},t.extend=function(e,r){for(var n in r)t.hasOwnProperty(r,n)&&(e[n]=r[n]);return e},t.deepExtend=function e(r,n){if(Array.isArray(n))throw new TypeError("Arrays are not supported by deepExtend");for(var i in n)if(t.hasOwnProperty(n,i))if(n[i]&&n[i].constructor===Object)void 0===r[i]&&(r[i]={}),r[i].constructor===Object?e(r[i],n[i]):r[i]=n[i];else{if(Array.isArray(n[i]))throw new TypeError("Arrays are not supported by deepExtend");r[i]=n[i]}return r},t.deepEqual=function(e,r){var n,i,a;if(Array.isArray(e)){if(!Array.isArray(r))return!1;if(e.length!=r.length)return!1;for(i=0,a=e.length;i0?o(p,0,f,f[0],c,t,s):[];return new a({data:h,size:n(f),datatype:u})}}},function(e,t,r){var n=r(5).hasOwnProperty;t.factory=function(){var e={};return{register:function(t,r){if(void 0!==e[t])throw new Error('Cannot register type "'+t+'": already exists');e[t]=r},compile:function(t,r,i){if(n(e,t.type))return(0,e[t.type])(t,r,i);if("function"!=typeof t._compile||n(t,"_compile"))throw new Error('Cannot compile node: unknown type "'+t.type+'"');return t._compile(r,i)}}}},function(e,t,r){"use strict";var n=r(25),i=r(10);n.string.isString;t.name="algorithm13",t.factory=function(e,t,r,n){var a=e.DenseMatrix,o=function(e,t,r,n,i,a){var s=[];if(t===r.length-1)for(var u=0;u0?o(g,0,h,h[0],s,f):[];return new a({data:v,size:h,datatype:d})}}},function(e,t,r){"use strict";function n(e,r){if(Array.isArray(e)){for(var i="[",a=e.length,o=0;o/g,">")}},function(e,t,r){"use strict";function n(e,t,r){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");this.actual=e,this.expected=t,this.relation=r,this.message="Dimension mismatch ("+(Array.isArray(e)?"["+e.join(", ")+"]":e)+" "+(this.relation||"!=")+" "+(Array.isArray(t)?"["+t.join(", ")+"]":t)+")",this.stack=(new Error).stack}(n.prototype=new RangeError).constructor=RangeError,n.prototype.name="DimensionError",n.prototype.isDimensionError=!0,e.exports=n},function(e,t,r){"use strict";var n=r(3).nearlyEqual,i=r(36);t.factory=function(e,t,r,a){var o=a("equalScalar",{"boolean, boolean":function(e,t){return e===t},"number, number":function(e,r){return e===r||n(e,r,t.epsilon)},"BigNumber, BigNumber":function(e,r){return e.eq(r)||i(e,r,t.epsilon)},"Fraction, Fraction":function(e,t){return e.equals(t)},"Complex, Complex":function(e,t){return e.equals(t)},"Unit, Unit":function(e,t){if(!e.equalBase(t))throw new Error("Cannot compare units with different base");return o(e.value,t.value)},"string, string":function(e,t){return e===t}});return o}},function(e,t,r){"use strict";var n=r(5).extend,i=r(2);t.name="multiply",t.factory=function(e,t,a,o){var s=r(4),u=a(r(0)),c=a(r(20)),f=a(r(23)),l=a(r(11)),p=a(r(17)),h=a(r(6)),m=e.DenseMatrix,d=e.SparseMatrix,g=o("multiply",n({"Array, Array":function(t,r){v(i.size(t),i.size(r));var n=g(u(t),u(r));return e.isMatrix(n)?n.valueOf():n},"Matrix, Matrix":function(e,t){var r=e.size(),n=t.size();return v(r,n),1===r.length?1===n.length?y(e,t,r[0]):x(e,t):1===n.length?b(e,t):N(e,t)},"Matrix, Array":function(e,t){return g(e,u(t))},"Array, Matrix":function(e,t){return g(u(e,t.storage()),t)},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=p(e,t,f,!1);break;case"dense":r=h(e,t,f,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=p(t,e,f,!0);break;case"dense":r=h(t,e,f,!0)}return r},"Array, any":function(e,t){return h(u(e),t,f,!1).valueOf()},"any, Array":function(e,t){return h(u(t),e,f,!0).valueOf()},"any, any":f,"Array | Matrix | any, Array | Matrix | any, ...any":function(e,t,r){for(var n=g(e,t),i=0;iT)for(var _=0,C=0;C0)throw new Error("Calling compile(math) is deprecated. Call the function as compile() instead.");var e={math:u.expression.mathWithTransform,args:{},_validateScope:f},t=l(this,e,{}),r=Object.keys(e).map(function(e){return" var "+e+' = defs["'+e+'"];'}).join(" ")+'return { "eval": function (scope) { if (scope) _validateScope(scope); scope = scope || {}; return '+t+"; }};";return new Function("defs",r)(e)},c.prototype.forEach=function(e){throw new Error("Cannot run forEach on a Node interface")},c.prototype.map=function(e){throw new Error("Cannot run map on a Node interface")},c.prototype._ifNode=function(t){if(!e.isNode(t))throw new TypeError("Callback function must return a Node");return t},c.prototype.traverse=function(e){function t(e,r){e.forEach(function(e,n,i){r(e,n,i),t(e,r)})}e(this,null,null),t(this,e)},c.prototype.transform=function(e){function t(e,r){return e.map(function(e,n,i){return t(r(e,n,i),r)})}return t(e(this,null,null),e)},c.prototype.filter=function(e){var t=[];return this.traverse(function(r,n,i){e(r,n,i)&&t.push(r)}),t},c.prototype.find=function(){throw new Error("Function Node.find is deprecated. Use Node.filter instead.")},c.prototype.match=function(){throw new Error("Function Node.match is deprecated. See functions Node.filter, Node.transform, Node.traverse.")},c.prototype.clone=function(){throw new Error("Cannot clone a Node interface")},c.prototype.cloneDeep=function(){return this.map(function(e){return e.cloneDeep()})},c.prototype.equals=function(e){return!!e&&i(this,e)},c.prototype.toString=function(e){var t;if(e&&"object"==typeof e)switch(typeof e.handler){case"object":case"undefined":break;case"function":t=e.handler(this,e);break;default:throw new TypeError("Object or function expected as callback")}return void 0!==t?t:this._toString(e)},c.prototype.toHTML=function(e){var t;if(e&&"object"==typeof e)switch(typeof e.handler){case"object":case"undefined":break;case"function":t=e.handler(this,e);break;default:throw new TypeError("Object or function expected as callback")}return void 0!==t?t:this.toHTML(e)},c.prototype._toString=function(){throw new Error("_toString not implemented for "+this.type)},c.prototype.toTex=function(e){var t;if(e&&"object"==typeof e)switch(typeof e.handler){case"object":case"undefined":break;case"function":t=e.handler(this,e);break;default:throw new TypeError("Object or function expected as callback")}return void 0!==t?t:this._toTex(e)},c.prototype._toTex=function(e){throw new Error("_toTex not implemented for "+this.type)},c.prototype.getIdentifier=function(){return this.type},c.prototype.getContent=function(){return this},c}},function(e,t,r){"use strict";var n=r(10);t.name="algorithm03",t.factory=function(e,t,r,i){var a=e.DenseMatrix;return function(e,t,r,o){var s=e._data,u=e._size,c=e._datatype,f=t._values,l=t._index,p=t._ptr,h=t._size,m=t._datatype;if(u.length!==h.length)throw new n(u.length,h.length);if(u[0]!==h[0]||u[1]!==h[1])throw new RangeError("Dimension mismatch. Matrix A ("+u+") must match Matrix B ("+h+")");if(!f)throw new Error("Cannot perform operation on Dense Matrix and Pattern Sparse Matrix");var d,g=u[0],v=u[1],y=0,x=r;"string"==typeof c&&c===m&&(d=c,y=i.convert(0,d),x=i.find(r,[d,d]));for(var w=[],b=0;bs)for(f=s-1,a=u.length;ft.length?1:e.length0?1:-1:n(i,a);if("Array"===i||"Matrix"===i||"Array"===a||"Matrix"===a)return 0!==(r=o(e,t))?r:n(i,a);if(i!==a)return n(i,a);if("Complex"===i)return function(e,t){return e.re>t.re?1:e.ret.im?1:e.imt},"number, number":function(e,r){return e>r&&!n(e,r,t.epsilon)},"BigNumber, BigNumber":function(e,r){return e.gt(r)&&!i(e,r,t.epsilon)},"Fraction, Fraction":function(e,t){return 1===e.compare(t)},"Complex, Complex":function(){throw new TypeError("No ordering relation is defined for complex numbers")},"Unit, Unit":function(e,t){if(!e.equalBase(t))throw new Error("Cannot compare units with different base");return m(e.value,t.value)},"string, string":function(e,t){return e>t},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=c(e,t,m);break;default:r=u(t,e,m,!0)}break;default:switch(t.storage()){case"sparse":r=u(e,t,m,!1);break;default:r=l(e,t,m)}}return r},"Array, Array":function(e,t){return m(s(e),s(t)).valueOf()},"Array, Matrix":function(e,t){return m(s(e),t)},"Matrix, Array":function(e,t){return m(e,s(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=f(e,t,m,!1);break;default:r=p(e,t,m,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=f(t,e,m,!0);break;default:r=p(t,e,m,!0)}return r},"Array, any":function(e,t){return p(s(e),t,m,!1).valueOf()},"any, Array":function(e,t){return p(s(t),e,m,!0).valueOf()}});return m.toTex={2:"\\left(${args[0]}"+h.operators.larger+"${args[1]}\\right)"},m}},function(e,t,r){"use strict";var n=r(4),i=r(9).stringify,a=r(9).escape,o=r(5).hasOwnProperty,s=r(13).getSafeProperty;t.name="SymbolNode",t.path="expression.node",t.math=!0,t.factory=function(e,t,u,c,f){function l(t){return!!e.Unit&&e.Unit.isValuelessUnit(t)}function p(e){if(!(this instanceof p))throw new SyntaxError("Constructor must be called with the new operator");if("string"!=typeof e)throw new TypeError('String expected for parameter "name"');this.name=e}function h(e){throw new Error("Undefined symbol "+e)}var m=u(r(7)).register,d=(u(r(7)).compile,u(r(14)));return p.prototype=new d,p.prototype.type="SymbolNode",p.prototype.isSymbolNode=!0,m(p.prototype.type,function(t,r,n){if(!(t instanceof p))throw new TypeError("No valid SymbolNode");r.undef=h,r.Unit=e.Unit,r.getSafeProperty=s,r.hasOwnProperty=o;var a=i(t.name);return o(n,t.name)?n[t.name]:t.name in r.math?"("+a+" in scope ? getSafeProperty(scope, "+a+") : getSafeProperty(math, "+a+"))":"("+a+" in scope ? getSafeProperty(scope, "+a+") : "+(l(t.name)?"new Unit(null, "+a+")":"undef("+a+")")+")"}),p.prototype.forEach=function(e){},p.prototype.map=function(e){return this.clone()},p.prototype.clone=function(){return new p(this.name)},p.prototype._toString=function(e){return this.name},p.prototype.toHTML=function(e){var t=a(this.name);return"true"==t||"false"==t?''+t+"":"i"==t?''+t+"":"Infinity"==t?''+t+"":"NaN"==t?''+t+"":"null"==t?''+t+"":"uninitialized"==t?''+t+"":''+t+""},p.prototype._toTex=function(e){var t=!1;void 0===f[this.name]&&l(this.name)&&(t=!0);var r=n.toSymbol(this.name,t);return"\\"===r[0]?r:" "+r},p}},function(e,t,r){"use strict";e.exports=function(e,t,r){if(null==r)return e.eq(t);if(e.eq(t))return!0;if(e.isNaN()||t.isNaN())return!1;if(e.isFinite()&&t.isFinite()){var n=e.minus(t).abs();if(n.isZero())return!0;var i=e.constructor.max(e.abs(),t.abs());return n.lte(i.times(r))}return!1}},function(e,t,r){"use strict";t.name="algorithm10",t.factory=function(e,t,r,n){var i=e.DenseMatrix;return function(e,t,r,a){var o=e._values,s=e._index,u=e._ptr,c=e._size,f=e._datatype;if(!o)throw new Error("Cannot perform operation on Pattern Sparse Matrix and Scalar value");var l,p=c[0],h=c[1],m=r;"string"==typeof f&&(l=f,t=n.convert(t,l),m=n.find(r,[l,l]));for(var d=[],g=new i({data:d,size:[p,h],datatype:l}),v=[],y=[],x=0;x0?o.resize(t,a):o}var s=[];return t.length>0?i(s,t,a):s}var u=a(r(0)),c=o("zeros",{"":function(){return"Array"===t.matrix?s([]):s([],"default")},"...number | BigNumber | string":function(e){return"string"==typeof e[e.length-1]?s(e,e.pop()):"Array"===t.matrix?s(e):s(e,"default")},Array:s,Matrix:function(e){var t=e.storage();return s(e.valueOf(),t)},"Array | Matrix, string":function(e,t){return s(e.valueOf(),t)}});return c.toTex=void 0,c}},function(e,t,r){"use strict";var n=r(43),i=r(1);t.name="parse",t.path="expression",t.factory=function(e,t,a,o){function s(t,r){if(1!=arguments.length&&2!=arguments.length)throw new n("parse",arguments.length,1,2);if(Q=r&&r.nodes?r.nodes:{},"string"==typeof t)return K=t,d();if(Array.isArray(t)||t instanceof e.Matrix)return i(t,function(e){if("string"!=typeof e)throw new TypeError("String expected");return K=e,d()});throw new TypeError("String or matrix expected")}function u(){te++,re=K.charAt(te)}function c(){return K.charAt(te-1)}function f(){return K.charAt(te+1)}function l(){for(ie=Y.NULL,ne="",ee="";s.isWhitespace(re,ae);)u();if("#"==re)for(;"\n"!=re&&""!=re;)ee+=re,u();if(""!=re){if("\n"==re&&!ae)return ie=Y.DELIMITER,ne=re,void u();var e=re+f(),t=e+K.charAt(te+2);if(3==t.length&&X[t])return ie=Y.DELIMITER,ne=t,u(),u(),void u();if(2==e.length&&X[e])return ie=Y.DELIMITER,ne=e,u(),void u();if(X[re])return ie=Y.DELIMITER,ne=re,void u();if(s.isDigitDot(re)){if(ie=Y.NUMBER,"."==re)ne+=re,u(),s.isDigit(re)||(ie=Y.DELIMITER);else{for(;s.isDigit(re);)ne+=re,u();s.isDecimalMark(re,f())&&(ne+=re,u())}for(;s.isDigit(re);)ne+=re,u();if(e=f(),"E"==re||"e"==re)if(s.isDigit(e)||"-"==e||"+"==e){if(ne+=re,u(),"+"!=re&&"-"!=re||(ne+=re,u()),!s.isDigit(re))throw I('Digit expected, got "'+re+'"');for(;s.isDigit(re);)ne+=re,u();if(s.isDecimalMark(re,f()))throw I('Digit expected, got "'+re+'"')}else if("."==e)throw u(),I('Digit expected, got "'+re+'"')}else{if(!s.isAlpha(re,c(),f())){for(ie=Y.UNKNOWN;""!=re;)ne+=re,u();throw I('Syntax error in part "'+ne+'"')}for(;s.isAlpha(re,c(),f())||s.isDigit(re);)ne+=re,u();ie=J.hasOwnProperty(ne)?Y.DELIMITER:Y.SYMBOL}}else ie=Y.DELIMITER}function p(){do{l()}while("\n"==ne)}function h(){ae++}function m(){ae--}function d(){te=0,re=K.charAt(0),ae=0,oe=null,l();var e=function(){var e,t,r=[];for(""!=ne&&"\n"!=ne&&";"!=ne&&((e=g()).comment=ee);"\n"==ne||";"==ne;)0==r.length&&e&&(t=";"!=ne,r.push({node:e,visible:t})),l(),"\n"!=ne&&";"!=ne&&""!=ne&&((e=g()).comment=ee,t=";"!=ne,r.push({node:e,visible:t}));return r.length>0?new q(r):(e||((e=new j("undefined","undefined")).comment=ee),e)}();if(""!=ne)throw ie==Y.DELIMITER?B("Unexpected operator "+ne):I('Unexpected part "'+ne+'"');return e}function g(){var t,r,n,i,a=function(){for(var e=function(){for(var e=v();"or"==ne;)p(),e=new $("or","or",[e,v()]);return e}();"?"==ne;){var t=oe;oe=ae,p();var r=e,n=g();if(":"!=ne)throw I("False part of conditional expression expected");oe=null,p();var i=g();e=new L(r,n,i),oe=t}return e}();if("="==ne){if(e.isSymbolNode(a))return t=a.name,p(),n=g(),new U(new W(t),n);if(e.isAccessorNode(a))return p(),n=g(),new U(a.object,a.index,n);if(e.isFunctionNode(a)&&e.isSymbolNode(a.fn)&&(i=!0,r=[],t=a.name,a.args.forEach(function(t,n){e.isSymbolNode(t)?r[n]=t.name:i=!1}),i))return p(),n=g(),new F(t,r,n);throw I("Invalid left hand side of assignment operator =")}return a}function v(){for(var e=y();"xor"==ne;)p(),e=new $("xor","xor",[e,y()]);return e}function y(){for(var e=x();"and"==ne;)p(),e=new $("and","and",[e,x()]);return e}function x(){for(var e=w();"|"==ne;)p(),e=new $("|","bitOr",[e,w()]);return e}function w(){for(var e=b();"^|"==ne;)p(),e=new $("^|","bitXor",[e,b()]);return e}function b(){for(var e=N();"&"==ne;)p(),e=new $("&","bitAnd",[e,N()]);return e}function N(){var e,t,r,n,i;for(e=E(),t={"==":"equal","!=":"unequal","<":"smaller",">":"larger","<=":"smallerEq",">=":"largerEq"};t.hasOwnProperty(ne);)n=t[r=ne],p(),i=[e,E()],e=new $(r,n,i);return e}function E(){var e,t,r,n,i;for(e=M(),t={"<<":"leftShift",">>":"rightArithShift",">>>":"rightLogShift"};t.hasOwnProperty(ne);)n=t[r=ne],p(),i=[e,M()],e=new $(r,n,i);return e}function M(){var e,t,r,n,i;for(e=A(),t={to:"to",in:"to"};t.hasOwnProperty(ne);)n=t[r=ne],p(),"in"===r&&""===ne?e=new $("*","multiply",[e,new W("in")],!0):(i=[e,A()],e=new $(r,n,i));return e}function A(){var e,t=[];if(e=":"==ne?new j("1","number"):O(),":"==ne&&oe!==ae){for(t.push(e);":"==ne&&t.length<3;)p(),")"==ne||"]"==ne||","==ne||""==ne?t.push(new W("end")):t.push(O());e=3==t.length?new V(t[0],t[2],t[1]):new V(t[0],t[1])}return e}function O(){var e,t,r,n,i;for(e=T(),t={"+":"add","-":"subtract"};t.hasOwnProperty(ne);)n=t[r=ne],p(),i=[e,T()],e=new $(r,n,i);return e}function T(){var t,r,n,i,a;for(r=t=S(),n={"*":"multiply",".*":"dotMultiply","/":"divide","./":"dotDivide","%":"mod",mod:"mod"};;)if(n.hasOwnProperty(ne))a=n[i=ne],p(),r=S(),t=new $(i,a,[t,r]);else{if(!(ie===Y.SYMBOL||"in"===ne&&e.isConstantNode(t))&&(ie!==Y.NUMBER||e.isConstantNode(r)||e.isOperatorNode(r)&&"!"!==r.op)&&"("!==ne)break;r=S(),t=new $("*","multiply",[t,r],!0)}return t}function S(){var e,t,r,n={"-":"unaryMinus","+":"unaryPlus","~":"bitNot",not:"not"};return n.hasOwnProperty(ne)?(r=n[ne],e=ne,p(),t=[S()],new $(e,r,t)):function(){var e,t,r,n;return e=function(){var e,t,r,n;for(e=function(){var e=[];if(ie==Y.SYMBOL&&Q.hasOwnProperty(ne)){var t=Q[ne];if(l(),"("==ne){if(e=[],h(),l(),")"!=ne)for(e.push(g());","==ne;)l(),e.push(g());if(")"!=ne)throw I("Parenthesis ) expected");m(),l()}return new t(e)}return function(){var e,t;return ie==Y.SYMBOL||ie==Y.DELIMITER&&ne in J?(t=ne,l(),e=new W(t),e=_(e)):function(){var e,t;return'"'==ne?(t=C(),e=new j(t,"string"),e=_(e)):function(){var e,t,r,n;if("["==ne){if(h(),l(),"]"!=ne){var i=z();if(";"==ne){for(r=1,t=[i];";"==ne;)l(),t[r]=z(),r++;if("]"!=ne)throw I("End of matrix ] expected");m(),l(),n=t[0].items.length;for(var a=1;a":!0,"<=":!0,">=":!0,"<<":!0,">>":!0,">>>":!0},J={mod:!0,to:!0,in:!0,and:!0,xor:!0,or:!0,not:!0},Q={},K="",ee="",te=0,re="",ne="",ie=Y.NULL,ae=0,oe=null;return s.isAlpha=function(e,t,r){return s.isValidLatinOrGreek(e)||s.isValidMathSymbol(e,r)||s.isValidMathSymbol(t,e)},s.isValidLatinOrGreek=function(e){return/^[a-zA-Z_$\u00C0-\u02AF\u0370-\u03FF\u2100-\u214F]$/.test(e)},s.isValidMathSymbol=function(e,t){return/^[\uD835]$/.test(e)&&/^[\uDC00-\uDFFF]$/.test(t)&&/^[^\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDFCC\uDFCD]$/.test(t)},s.isWhitespace=function(e,t){return" "==e||"\t"==e||"\n"==e&&t>0},s.isDecimalMark=function(e,t){return"."==e&&"/"!==t&&"*"!==t&&"^"!==t},s.isDigitDot=function(e){return e>="0"&&e<="9"||"."==e},s.isDigit=function(e){return e>="0"&&e<="9"},s}},function(e,t,r){var n=r(52);t.transform=function(e){return e&&e.isIndexError?new n(e.index+1,e.min+1,void 0!==e.max?e.max+1:void 0):e}},function(e,t,r){"use strict";var n=r(59);e.exports=function e(t,r){n(t)&&(t=t.valueOf());for(var i=0,a=t.length;in[a]&&(n[a]=t[a],i=!0);i&&b(e,n,r)}function x(e){for(var t=0,r=e.length;t");y(t,r.max().map(function(e){return e+1}),a);var h=c.length;v(t._data,r,n,h,0)}return t}(this,t,r,n);default:throw new SyntaxError("Wrong number of arguments")}},d.prototype.get=function(e){if(!c(e))throw new TypeError("Array expected");if(e.length!=this._size.length)throw new i(e.length,this._size.length);for(var t=0;t0?t:0,n=t<0?-t:0,i=this._size[0],a=this._size[1],o=Math.min(i-n,a-r),s=[],u=0;u0?n:0,h=n<0?-n:0,g=t[0],v=t[1],y=Math.min(g-h,v-u);if(c(r)){if(r.length!==y)throw new Error("Invalid value array length");s=function(e){return r[e]}}else if(e.isMatrix(r)){var x=r.size();if(1!==x.length||x[0]!==y)throw new Error("Invalid matrix length");s=function(e){return r.get([e])}}else s=function(){return r};i||(i=e.isBigNumber(s(0))?new e.BigNumber(0):0);var w=[];if(t.length>0){w=o.resize(w,t,i);for(var b=0;b1&&i===-1/0?0:t.predictable&&(r<-1&&i===1/0||r>-1&&r<0&&i===-1/0)?NaN:n(i)||r>=0||t.predictable?Math.pow(r,i):new e.Complex(r,0).pow(i,0)}function u(e,t){if(!n(t)||t<0)throw new TypeError("For A^b, b must be a positive integer (value is "+t+")");var r=i(e);if(2!=r.length)throw new Error("For A^b, A must be 2 dimensional (A has "+r.length+" dimensions)");if(r[0]!=r[1])throw new Error("For A^b, A must be square (size is "+r[0]+"x"+r[1]+")");for(var a=l(r[0]).valueOf(),o=e;t>=1;)1==(1&t)&&(a=p(o,a)),t>>=1,o=p(o,o);return a}function c(e,t){return h(u(e.valueOf(),t))}var f=r(4),l=a(r(62)),p=a(r(12)),h=a(r(0)),m=a(r(93)),d=a(r(74)),g=o("pow",{"number, number":s,"Complex, Complex":function(e,t){return e.pow(t)},"BigNumber, BigNumber":function(r,n){return n.isInteger()||r>=0||t.predictable?r.pow(n):new e.Complex(r.toNumber(),0).pow(n.toNumber(),0)},"Fraction, Fraction":function(e,r){if(1!==r.d){if(t.predictable)throw new Error("Function pow does not support non-integer exponents for fractions.");return s(e.valueOf(),r.valueOf())}return e.pow(r)},"Array, number":u,"Array, BigNumber":function(e,t){return u(e,t.toNumber())},"Matrix, number":c,"Matrix, BigNumber":function(e,t){return c(e,t.toNumber())},"Unit, number":function(e,t){return e.pow(t)}});return g.toTex={2:"\\left(${args[0]}\\right)"+f.operators.pow+"{${args[1]}}"},g}},function(e,t,r){"use strict";var n=r(60).type,i=r(9).stringify,a=r(9).escape;t.name="ConstantNode",t.path="expression.node",t.factory=function(e,t,o,s){function u(e,t){if(!(this instanceof u))throw new SyntaxError("Constructor must be called with the new operator");if(t){if("string"!=typeof t)throw new TypeError('String expected for parameter "valueType"');if("string"!=typeof e)throw new TypeError('String expected for parameter "value"');this.value=e,this.valueType=t}else this.value=e+"",this.valueType=n(e);if(!l[this.valueType])throw new TypeError('Unsupported type of value "'+this.valueType+'"')}var c=o(r(7)).register,f=(o(r(7)).compile,o(r(14))),l={number:!0,string:!0,boolean:!0,undefined:!0,null:!0};return u.prototype=new f,u.prototype.type="ConstantNode",u.prototype.isConstantNode=!0,c(u.prototype.type,function(e,r,n){if(!(e instanceof u))throw new TypeError("No valid ConstantNode");switch(e.valueType){case"number":return"BigNumber"===t.number?"math.bignumber("+i(e.value)+")":"Fraction"===t.number?"math.fraction("+i(e.value)+")":(function(e){if("string"!=typeof e||!/^[\-+]?((\d+\.?\d*)|(\d*\.?\d+))([eE][+\-]?\d+)?$/.test(e))throw new Error('Invalid numeric value "'+e+'"')}(e.value),e.value.replace(/^(0*)[0-9]/,function(e,t){return e.substring(t.length)}));case"string":return i(e.value);case"boolean":return"true"===String(e.value)?"true":"false";case"undefined":return"undefined";case"null":return"null";default:throw new TypeError('Unsupported type of constant "'+e.valueType+'"')}}),u.prototype.forEach=function(e){},u.prototype.map=function(e){return this.clone()},u.prototype.clone=function(){return new u(this.value,this.valueType)},u.prototype._toString=function(e){switch(this.valueType){case"string":return i(this.value);default:return this.value}},u.prototype.toHTML=function(e){var t=a(this.value);switch(this.valueType){case"number":return''+t+"";case"string":return''+t+"";case"boolean":return''+t+"";case"null":return''+t+"";case"undefined":return''+t+"";default:return''+t+""}},u.prototype._toTex=function(e){var t,r=this.value;switch(this.valueType){case"string":return"\\mathtt{"+i(r)+"}";case"number":return-1!==(t=r.toLowerCase().indexOf("e"))?r.substring(0,t)+"\\cdot10^{"+r.substring(t+1)+"}":r;default:return r}},u}},function(e,t,r){"use strict";var n=r(59);e.exports=function(e){return Array.isArray(e)||n(e)}},function(e,t,r){"use strict";var n=r(5).extend;t.name="divide",t.factory=function(e,t,i,a){var o=i(r(19)),s=i(r(12)),u=i(r(116)),c=i(r(0)),f=i(r(17)),l=i(r(6)),p=a("divide",n({"Array | Matrix, Array | Matrix":function(e,t){return s(e,u(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=f(e,t,o,!1);break;case"dense":r=l(e,t,o,!1)}return r},"Array, any":function(e,t){return l(c(e),t,o,!1).valueOf()},"any, Array | Matrix":function(e,t){return s(e,u(t))}},o.signatures));return p.toTex={2:"\\frac{${args[0]}}{${args[1]}}"},p}},function(e,t,r){"use strict";var n=r(1),i=r(3);t.name="isInteger",t.factory=function(e,t,r,a){var o=a("isInteger",{number:i.isInteger,BigNumber:function(e){return e.isInt()},Fraction:function(e){return 1===e.d&&isFinite(e.n)},"Array | Matrix":function(e){return n(e,o)}});return o}},function(e,t,r){"use strict";var n=r(3).nearlyEqual,i=r(36);t.name="compare",t.factory=function(e,t,a,o){var s=a(r(0)),u=a(r(15)),c=a(r(61)),f=a(r(16)),l=a(r(8)),p=a(r(6)),h=o("compare",{"boolean, boolean":function(e,t){return e===t?0:e>t?1:-1},"number, number":function(e,r){return e===r||n(e,r,t.epsilon)?0:e>r?1:-1},"BigNumber, BigNumber":function(r,n){return r.eq(n)||i(r,n,t.epsilon)?new e.BigNumber(0):new e.BigNumber(r.cmp(n))},"Fraction, Fraction":function(t,r){return new e.Fraction(t.compare(r))},"Complex, Complex":function(){throw new TypeError("No ordering relation is defined for complex numbers")},"Unit, Unit":function(e,t){if(!e.equalBase(t))throw new Error("Cannot compare units with different base");return h(e.value,t.value)},"string, string":function(e,t){return e===t?0:e>t?1:-1},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=c(e,t,h);break;default:r=u(t,e,h,!0)}break;default:switch(t.storage()){case"sparse":r=u(e,t,h,!1);break;default:r=l(e,t,h)}}return r},"Array, Array":function(e,t){return h(s(e),s(t)).valueOf()},"Array, Matrix":function(e,t){return h(s(e),t)},"Matrix, Array":function(e,t){return h(e,s(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=f(e,t,h,!1);break;default:r=p(e,t,h,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=f(t,e,h,!0);break;default:r=p(t,e,h,!0)}return r},"Array, any":function(e,t){return p(s(e),t,h,!1).valueOf()},"any, Array":function(e,t){return p(s(t),e,h,!0).valueOf()}});return h.toTex=void 0,h}},function(e,t,r){"use strict";function n(e,t,r){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");this.index=e,arguments.length<3?(this.min=0,this.max=t):(this.min=t,this.max=r),void 0!==this.min&&this.index=this.max?this.message="Index out of range ("+this.index+" > "+(this.max-1)+")":this.message="Index out of range ("+this.index+")",this.stack=(new Error).stack}(n.prototype=new RangeError).constructor=RangeError,n.prototype.name="IndexError",n.prototype.isIndexError=!0,e.exports=n},function(e,t,r){"use strict";function n(e,t){var r=e;"keep"!==t&&(r=e.getContent());for(var n=r.getIdentifier(),a=0;a2&&"OperatorNode:add"!==e.getIdentifier()&&"OperatorNode:multiply"!==e.getIdentifier())return n.map(function(e){switch(e.getContent().type){case"ArrayNode":case"ConstantNode":case"SymbolNode":case"ParenthesisNode":return!1;default:return!0}});var s=void 0;switch(n.length){case 0:s=[];break;case 1:var u=c.getPrecedence(n[0],t);if(i&&null!==u){var f;if("keep"===t?(f=n[0].getIdentifier(),v=e.getIdentifier()):(f=n[0].getContent().getIdentifier(),v=e.getContent().getIdentifier()),!1===c.properties[a][v].latexLeftParens){s=[!1];break}if(!1===c.properties[u][f].latexParens){s=[!1];break}}if(null===u){s=[!1];break}if(u<=a){s=[!0];break}s=[!1];break;case 2:var l,p=c.getPrecedence(n[0],t),h=c.isAssociativeWith(e,n[0],t);l=null!==p&&(p===a&&"right"===o&&!h||p=2&&"OperatorNode:multiply"===e.getIdentifier()&&e.implicit&&"auto"===t&&"hide"===r&&(s=n.map(function(e,t){var r="ParenthesisNode"===e.getIdentifier();return!(!s[t]&&!r)})),s}var m=f(r(7)).register,d=f(r(7)).compile,g=f(r(14));return f(r(47)),f(r(35)),f(r(55)),p.prototype=new g,p.prototype.type="OperatorNode",p.prototype.isOperatorNode=!0,m(p.prototype.type,function(e,t,r){if(!(e instanceof p))throw new TypeError("No valid OperatorNode");if("string"!=typeof e.fn||!u(t.math,e.fn))throw t.math[e.fn]?new Error('No access to function "'+e.fn+'"'):new Error("Function "+e.fn+' missing in provided namespace "math"');var n=i(e.args,function(e){return d(e,t,r)});return"math["+o(e.fn)+"]("+a(n,", ")+")"}),p.prototype.forEach=function(e){for(var t=0;t2&&("OperatorNode:add"===this.getIdentifier()||"OperatorNode:multiply"===this.getIdentifier())){var f=n.map(function(t,r){return t=t.toString(e),i[r]&&(t="("+t+")"),t});return this.implicit&&"OperatorNode:multiply"===this.getIdentifier()&&"hide"===r?f.join(" "):f.join(" "+this.op+" ")}return this.fn+"("+this.args.join(", ")+")"},p.prototype.toHTML=function(e){var t=e&&e.parenthesis?e.parenthesis:"keep",r=e&&e.implicit?e.implicit:"hide",n=this.args,i=h(this,t,r,n,!1);if(1===n.length){var a=c.getAssociativity(this,t),o=n[0].toHTML(e);return i[0]&&(o='('+o+')'),"right"===a?''+s(this.op)+""+o:''+s(this.op)+""+o}if(2==n.length){var u=n[0].toHTML(e),f=n[1].toHTML(e);return i[0]&&(u='('+u+')'),i[1]&&(f='('+f+')'),this.implicit&&"OperatorNode:multiply"===this.getIdentifier()&&"hide"==r?u+''+f:u+''+s(this.op)+""+f}if(n.length>2&&("OperatorNode:add"===this.getIdentifier()||"OperatorNode:multiply"===this.getIdentifier())){var l=n.map(function(t,r){return t=t.toHTML(e),i[r]&&(t='('+t+')'),t});return this.implicit&&"OperatorNode:multiply"===this.getIdentifier()&&"hide"===r?l.join(''):l.join(''+s(this.op)+"")}return''+s(this.fn)+'('+l.join(',')+')'},p.prototype._toTex=function(e){var t=e&&e.parenthesis?e.parenthesis:"keep",r=e&&e.implicit?e.implicit:"hide",i=this.args,a=h(this,t,r,i,!0),o=n.operators[this.fn];if(o=void 0===o?this.op:o,1===i.length){var s=c.getAssociativity(this,t),u=i[0].toTex(e);return a[0]&&(u="\\left("+u+"\\right)"),"right"===s?o+u:u+o}if(2===i.length){var f=i[0],l=f.toTex(e);a[0]&&(l="\\left("+l+"\\right)");var p=i[1].toTex(e);a[1]&&(p="\\left("+p+"\\right)");var m;switch(m="keep"===t?f.getIdentifier():f.getContent().getIdentifier(),this.getIdentifier()){case"OperatorNode:divide":return o+"{"+l+"}{"+p+"}";case"OperatorNode:pow":switch(l="{"+l+"}",p="{"+p+"}",m){case"ConditionalNode":case"OperatorNode:divide":l="\\left("+l+"\\right)"}case"OperatorNode:multiply":if(this.implicit&&"hide"===r)return l+"~"+p}return l+o+p}if(i.length>2&&("OperatorNode:add"===this.getIdentifier()||"OperatorNode:multiply"===this.getIdentifier())){var d=i.map(function(t,r){return t=t.toTex(e),a[r]&&(t="\\left("+t+"\\right)"),t});return"OperatorNode:multiply"===this.getIdentifier()&&this.implicit?d.join("~"):d.join(o)}return"\\mathrm{"+this.fn+"}\\left("+i.map(function(t){return t.toTex(e)}).join(",")+"\\right)"},p.prototype.getIdentifier=function(){return this.type+":"+this.fn},p}},function(e,t,r){"use strict";var n=r(4),i=r(9).stringify,a=r(9).escape,o=r(5).extend,s=r(5).hasOwnProperty,u=r(2).map,c=r(2).join,f=r(13).validateSafeMethod,l=r(109);t.name="FunctionNode",t.path="expression.node",t.math=!0,t.factory=function(e,t,p,h,m){function d(t,r){if(!(this instanceof d))throw new SyntaxError("Constructor must be called with the new operator");if("string"==typeof t&&(t=new w(t)),!e.isNode(t))throw new TypeError('Node expected as parameter "fn"');if(!Array.isArray(r)||!r.every(e.isNode))throw new TypeError('Array containing Nodes expected for parameter "args"');this.fn=t,this.args=r||[],Object.defineProperty(this,"name",{get:function(){return this.fn.name||""}.bind(this),set:function(){throw new Error("Cannot assign a new name, name is read-only")}});var n=function(){throw new Error("Property `FunctionNode.object` is deprecated, use `FunctionNode.fn` instead")};Object.defineProperty(this,"object",{get:n,set:n})}function g(t,r,n){for(var i,a="",o=new RegExp("\\$(?:\\{([a-z_][a-z_0-9]*)(?:\\[([0-9]+)\\])?\\}|\\$)","ig"),s=0;null!==(i=o.exec(t));)if(a+=t.substring(s,i.index),s=i.index,"$$"===i[0])a+="$",s++;else{s+=i[0].length;var u=r[i[1]];if(!u)throw new ReferenceError("Template: Property "+i[1]+" does not exist.");if(void 0===i[2])switch(typeof u){case"string":a+=u;break;case"object":if(e.isNode(u))a+=u.toTex(n);else{if(!Array.isArray(u))throw new TypeError("Template: "+i[1]+" has to be a Node, String or array of Nodes");a+=u.map(function(t,r){if(e.isNode(t))return t.toTex(n);throw new TypeError("Template: "+i[1]+"["+r+"] is not a Node.")}).join(",")}break;default:throw new TypeError("Template: "+i[1]+" has to be a Node, String or array of Nodes")}else{if(!e.isNode(u[i[2]]&&u[i[2]]))throw new TypeError("Template: "+i[1]+"["+i[2]+"] is not a Node.");a+=u[i[2]].toTex(n)}}return a+=t.slice(s)}var v=p(r(7)).register,y=p(r(7)).compile,x=p(r(14)),w=p(r(35));(d.prototype=new x).type="FunctionNode",d.prototype.isFunctionNode=!0,v(d.prototype.type,function(t,r,n){if(!(t instanceof d))throw new TypeError("No valid FunctionNode");var a,p=y(t.fn,r,n),h=u(t.args,function(e){return y(e,r,n)}),m=function(e,t){var r=Object.keys(t);if(0===r.length)return"scope";e.extend=o;var n=u(r,function(e){return i(e)+": "+t[e]});return"extend(extend({}, scope), {"+c(n,", ")+"})"}(r,n);if(e.isSymbolNode(t.fn)){var g=t.fn.name,v=s(r.math,g)?r.math[g]:void 0;return"function"==typeof v&&1==v.rawArgs?(a=l(r),r[a]=t.args,p+"("+a+", math, "+m+")"):p+"("+c(h,", ")+")"}if(e.isAccessorNode(t.fn)&&e.isIndexNode(t.fn.index)&&t.fn.index.isObjectProperty()){a=l(r),r[a]=t.args,r.validateSafeMethod=f;var x=y(t.fn.object,r,n),w=i(t.fn.index.getObjectProperty());return"(function () {var object = "+x+";validateSafeMethod(object, "+w+");return (object["+w+"] && object["+w+"].rawArgs) ? object["+w+"]("+a+", math, "+m+") : object["+w+"]("+c(h,", ")+")})()"}return a=l(r),r[a]=t.args,"(function () {var fn = "+p+";return (fn && fn.rawArgs) ? fn("+a+", math, "+m+") : fn("+c(h,", ")+")})()"}),d.prototype.forEach=function(e){for(var t=0;t'+a(this.fn)+'('+t.join(',')+')'};var N=d.prototype.toTex;return d.prototype.toTex=function(e){var t;return e&&"object"==typeof e.handler&&s(e.handler,this.name)&&(t=e.handler[this.name](this,e)),void 0!==t?t:N.call(this,e)},d.prototype._toTex=function(e){var t,r=this.args.map(function(t){return t.toTex(e)});!m[this.name]||"function"!=typeof m[this.name].toTex&&"object"!=typeof m[this.name].toTex&&"string"!=typeof m[this.name].toTex||(t=m[this.name].toTex);var i;switch(typeof t){case"function":i=t(this,e);break;case"string":i=g(t,this,e);break;case"object":switch(typeof t[r.length]){case"function":i=t[r.length](this,e);break;case"string":i=g(t[r.length],this,e)}}return void 0!==i?i:g(n.defaultTemplate,this,e)},d.prototype.getIdentifier=function(){return this.type+":"+this.name},d}},function(e,t,r){"use strict";var n=r(1);r(3);t.name="isPositive",t.factory=function(e,t,r,i){var a=i("isPositive",{number:function(e){return e>0},BigNumber:function(e){return!e.isNeg()&&!e.isZero()&&!e.isNaN()},Fraction:function(e){return e.s>0&&e.n>0},Unit:function(e){return a(e.value)},"Array | Matrix":function(e){return n(e,a)}});return a}},function(e,t,r){"use strict";var n=r(1);t.name="sqrt",t.factory=function(e,t,r,i){function a(r){return r>=0||t.predictable?Math.sqrt(r):new e.Complex(r,0).sqrt()}var o=i("sqrt",{number:a,Complex:function(e){return e.sqrt()},BigNumber:function(e){return!e.isNegative()||t.predictable?e.sqrt():a(e.toNumber())},"Array | Matrix":function(e){return n(e,o,!0)},Unit:function(e){return e.pow(.5)}});return o.toTex={1:"\\sqrt{${args[0]}}"},o}},function(e,t,r){"use strict";var n=r(1);r(3);t.name="isNegative",t.factory=function(e,t,r,i){var a=i("isNegative",{number:function(e){return e<0},BigNumber:function(e){return e.isNeg()&&!e.isZero()&&!e.isNaN()},Fraction:function(e){return e.s<0},Unit:function(e){return a(e.value)},"Array | Matrix":function(e){return n(e,a)}});return a}},function(e,t,r){"use strict";e.exports=function(e){return e&&e.constructor.prototype.isMatrix||!1}},function(e,t,r){"use strict";t.type=function(e){var t=typeof e;return"object"===t?null===e?"null":Array.isArray(e)?"Array":e instanceof Date?"Date":e instanceof RegExp?"RegExp":e instanceof Boolean?"boolean":e instanceof Number?"number":e instanceof String?"string":"Object":"function"===t?"Function":t}},function(e,t,r){"use strict";var n=r(10);t.name="algorithm05",t.factory=function(e,t,i,a){var o=i(r(11)),s=e.SparseMatrix;return function(e,t,r){var i=e._values,u=e._index,c=e._ptr,f=e._size,l=e._datatype,p=t._values,h=t._index,m=t._ptr,d=t._size,g=t._datatype;if(f.length!==d.length)throw new n(f.length,d.length);if(f[0]!==d[0]||f[1]!==d[1])throw new RangeError("Dimension mismatch. Matrix A ("+f+") must match Matrix B ("+d+")");var v,y=f[0],x=f[1],w=o,b=0,N=r;"string"==typeof l&&l===g&&(v=l,w=a.find(o,[v,v]),b=a.convert(0,v),N=a.find(r,[v,v]));var E,M,A,O,T=i&&p?[]:void 0,S=[],_=[],C=new s({values:T,index:S,ptr:_,size:[y,x],datatype:v}),z=T?[]:void 0,k=T?[]:void 0,I=[],B=[];for(M=0;M('+this.content.toHTML(e)+')':this.content.toHTML(e)},a.prototype._toTex=function(e){return!e||e&&!e.parenthesis||e&&"keep"===e.parenthesis?"\\left("+this.content.toTex(e)+"\\right)":this.content.toTex(e)},a}},function(e,t,r){"use strict";function n(e,t,r,i){if(i0&&p>c)throw new s(p,c+1)}else{var g=i(d).valueOf(),v=o.size(g);if(m[r]=g,c=p,p=v.length-1,r>0&&p!=c)throw new u(c+1,p+1)}}if(0==m.length)throw new SyntaxError("At least one matrix expected");for(var y=m.shift();m.length;)y=n(y,m.shift(),p,0);return h?l(y):y},"...string":function(e){return e.join("")}});return p.toTex=void 0,p}},function(e,t,r){"use strict";function n(e,t,r){var i,a,o,s;if(t<=0){if(Array.isArray(e[0])){for(s=function(e){var t,r,n=e.length,i=e[0].length,a=[];for(r=0;r=s.length)throw new o(t,s.length);return a(e)?e.create(n(e.valueOf(),t,r)):n(e,t,r)}},function(e,t,r){"use strict";var n=r(48);e.exports=function(e){for(var t=0;te)throw new TypeError("k must be less than or equal to n");for(r=Math.max(t,e-t),n=1,a=1;a<=e-r;a++)n=n*(r+a)/a;return n},"BigNumber, BigNumber":function(t,r){var i,a,o,s,u=new e.BigNumber(1);if(!n(t)||!n(r))throw new TypeError("Positive integer value expected in function combinations");if(r.gt(t))throw new TypeError("k must be less than n in function combinations");for(i=t.minus(r),r.lt(i)&&(i=r),a=u,o=u,s=t.minus(i);o.lte(s);o=o.plus(1))a=a.times(i.plus(o)).dividedBy(o);return a}});return o.toTex={2:"\\binom{${args[0]}}{${args[1]}}"},o}},function(e,t){e.exports=function(e){return e&&e.constructor.prototype.isBigNumber||!1}},function(e,t,r){"use strict";var n=r(25).string.isString;t.name="Matrix",t.path="type",t.factory=function(e,t,r,i){function a(){if(!(this instanceof a))throw new SyntaxError("Constructor must be called with the new operator")}return a.prototype.type="Matrix",a.prototype.isMatrix=!0,a.storage=function(e){if(!n(e))throw new TypeError("format must be a string value");var t=a._storage[e];if(!t)throw new SyntaxError("Unsupported matrix storage format: "+e);return t},a._storage={},a.prototype.storage=function(){throw new Error("Cannot invoke storage on a Matrix interface")},a.prototype.datatype=function(){throw new Error("Cannot invoke datatype on a Matrix interface")},a.prototype.create=function(e,t){throw new Error("Cannot invoke create on a Matrix interface")},a.prototype.subset=function(e,t,r){throw new Error("Cannot invoke subset on a Matrix interface")},a.prototype.get=function(e){throw new Error("Cannot invoke get on a Matrix interface")},a.prototype.set=function(e,t,r){throw new Error("Cannot invoke set on a Matrix interface")},a.prototype.resize=function(e,t){throw new Error("Cannot invoke resize on a Matrix interface")},a.prototype.reshape=function(e,t){throw new Error("Cannot invoke reshape on a Matrix interface")},a.prototype.clone=function(){throw new Error("Cannot invoke clone on a Matrix interface")},a.prototype.size=function(){throw new Error("Cannot invoke size on a Matrix interface")},a.prototype.map=function(e,t){throw new Error("Cannot invoke map on a Matrix interface")},a.prototype.forEach=function(e){throw new Error("Cannot invoke forEach on a Matrix interface")},a.prototype.toArray=function(){throw new Error("Cannot invoke toArray on a Matrix interface")},a.prototype.valueOf=function(){throw new Error("Cannot invoke valueOf on a Matrix interface")},a.prototype.format=function(e){throw new Error("Cannot invoke format on a Matrix interface")},a.prototype.toString=function(){throw new Error("Cannot invoke toString on a Matrix interface")},a}},function(e,t,r){"use strict";var n=r(10);t.name="algorithm04",t.factory=function(e,t,i,a){var o=i(r(11)),s=e.SparseMatrix;return function(e,t,r){var i=e._values,u=e._index,c=e._ptr,f=e._size,l=e._datatype,p=t._values,h=t._index,m=t._ptr,d=t._size,g=t._datatype;if(f.length!==d.length)throw new n(f.length,d.length);if(f[0]!==d[0]||f[1]!==d[1])throw new RangeError("Dimension mismatch. Matrix A ("+f+") must match Matrix B ("+d+")");var v,y=f[0],x=f[1],w=o,b=0,N=r;"string"==typeof l&&l===g&&(v=l,w=a.find(o,[v,v]),b=a.convert(0,v),N=a.find(r,[v,v]));var E,M,A,O,T,S=i&&p?[]:void 0,_=[],C=[],z=new s({values:S,index:_,ptr:C,size:[y,x],datatype:v}),k=i&&p?[]:void 0,I=i&&p?[]:void 0,B=[],P=[];for(M=0;M.'+a(this.getObjectProperty())+"":'['+t.join(',')+']'},u.prototype._toTex=function(e){var t=this.dimensions.map(function(t){return t.toTex(e)});return this.dotNotation?"."+this.getObjectProperty():"_{"+t.join(",")+"}"},u.prototype.needsSize=function(){return this.dimensions.some(function(t){return e.isRangeNode(t)&&t.needsEnd()||e.isSymbolNode(t)&&"end"===t.name})},u}},function(e,t,r){"use strict";var n=r(53);t.name="RangeNode",t.path="expression.node",t.factory=function(e,t,i,a){function o(t,r,n){if(!(this instanceof o))throw new SyntaxError("Constructor must be called with the new operator");if(!e.isNode(t))throw new TypeError("Node expected");if(!e.isNode(r))throw new TypeError("Node expected");if(n&&!e.isNode(n))throw new TypeError("Node expected");if(arguments.length>3)throw new Error("Too many arguments");this.start=t,this.end=r,this.step=n||null}function s(e,t){var r=n.getPrecedence(e,t),i={},a=n.getPrecedence(e.start,t);if(i.start=null!==a&&a<=r||"all"===t,e.step){var o=n.getPrecedence(e.step,t);i.step=null!==o&&o<=r||"all"===t}var s=n.getPrecedence(e.end,t);return i.end=null!==s&&s<=r||"all"===t,i}var u=i(r(7)).register,c=i(r(7)).compile,f=i(r(14));return o.prototype=new f,o.prototype.type="RangeNode",o.prototype.isRangeNode=!0,o.prototype.needsEnd=function(){return this.filter(function(t){return e.isSymbolNode(t)&&"end"===t.name}).length>0},u(o.prototype.type,function(e,t,r){if(!(e instanceof o))throw new TypeError("No valid RangeNode");return"math.range("+c(e.start,t,r)+", "+c(e.end,t,r)+(e.step?", "+c(e.step,t,r):"")+")"}),o.prototype.forEach=function(e){e(this.start,"start",this),e(this.end,"end",this),this.step&&e(this.step,"step",this)},o.prototype.map=function(e){return new o(this._ifNode(e(this.start,"start",this)),this._ifNode(e(this.end,"end",this)),this.step&&this._ifNode(e(this.step,"step",this)))},o.prototype.clone=function(){return new o(this.start,this.end,this.step&&this.step)},o.prototype._toString=function(e){var t,r=s(this,e&&e.parenthesis?e.parenthesis:"keep"),n=this.start.toString(e);if(r.start&&(n="("+n+")"),t=n,this.step){var i=this.step.toString(e);r.step&&(i="("+i+")"),t+=":"+i}var a=this.end.toString(e);return r.end&&(a="("+a+")"),t+=":"+a},o.prototype.toHTML=function(e){var t,r=s(this,e&&e.parenthesis?e.parenthesis:"keep"),n=this.start.toHTML(e);if(r.start&&(n='('+n+')'),t=n,this.step){var i=this.step.toHTML(e);r.step&&(i='('+i+')'),t+=':'+i}var a=this.end.toHTML(e);return r.end&&(a='('+a+')'),t+=':'+a},o.prototype._toTex=function(e){var t=s(this,e&&e.parenthesis?e.parenthesis:"keep"),r=this.start.toTex(e);if(t.start&&(r="\\left("+r+"\\right)"),this.step){var n=this.step.toTex(e);t.step&&(n="\\left("+n+"\\right)"),r+=":"+n}var i=this.end.toTex(e);return t.end&&(i="\\left("+i+"\\right)"),r+=":"+i},o}},function(e,t,r){"use strict";var n=r(2).map,i=r(2).join;t.name="ArrayNode",t.path="expression.node",t.factory=function(e,t,a,o){function s(t){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(this.items=t||[],!Array.isArray(this.items)||!this.items.every(e.isNode))throw new TypeError("Array containing Nodes expected");var r=function(){throw new Error("Property `ArrayNode.nodes` is deprecated, use `ArrayNode.items` instead")};Object.defineProperty(this,"nodes",{get:r,set:r})}var u=a(r(7)).register,c=a(r(7)).compile,f=a(r(14));return s.prototype=new f,s.prototype.type="ArrayNode",s.prototype.isArrayNode=!0,u(s.prototype.type,function(e,t,r){if(!(e instanceof s))throw new TypeError("No valid ArrayNode");var a="Array"!==t.math.config().matrix,o=n(e.items,function(e){return c(e,t,r)});return(a?"math.matrix([":"[")+i(o,",")+(a?"])":"]")}),s.prototype.forEach=function(e){for(var t=0;t['+this.items.map(function(t){return t.toHTML(e)}).join(',')+']'},s.prototype._toTex=function(e){var t="\\begin{bmatrix}";return this.items.forEach(function(r){r.items?t+=r.items.map(function(t){return t.toTex(e)}).join("&"):t+=r.toTex(e),t+="\\\\"}),t+="\\end{bmatrix}"},s}},function(e,t){t.factory=function(e,t,r,n){return function(t,r,n){var i=t.filter(function(t){return e.isSymbolNode(t)&&!(t.name in r)&&!(t.name in n)})[0];if(!i)throw new Error('No undefined variable found in inline expression "'+t+'"');var a=i.name,o=Object.create(n),s=t.compile();return function(e){return o[a]=e,s.eval(o)}}}},function(e,t,r){"use strict";t.math=!0,t.name="simplify",t.factory=function(e,t,n,i,a){function o(t){return t.transform(function(t,r,n){return e.isParenthesisNode(t)?t.content:t})}function s(e){for(var t=[],r=0;r");if(2!==s.length)throw SyntaxError("Could not parse rule: "+i);i={l:s[0],r:s[1]};case"object":if(n={l:o(p(i.l)),r:o(p(i.r))},i.context&&(n.evaluate=i.context),i.evaluate&&(n.evaluate=p(i.evaluate)),n.l.isOperatorNode&&E(n.l)){var u=T(n.l),c=new v("_p"+C++);n.expanded={},n.expanded.l=u([n.l.clone(),c]),M(n.expanded.l),A(n.expanded.l),n.expanded.r=u([n.r,c])}break;case"function":n=i;break;default:throw TypeError("Unsupported type of rule: "+a)}t.push(n)}return t}function u(e,t){var r={placeholders:{}};if(!e.placeholders&&!t.placeholders)return r;if(!e.placeholders)return t;if(!t.placeholders)return e;for(var n in e.placeholders)if(r.placeholders[n]=e.placeholders[n],t.placeholders.hasOwnProperty(n)&&!l(e.placeholders[n],t.placeholders[n]))return null;for(var n in t.placeholders)r.placeholders[n]=t.placeholders[n];return r}function c(e,t){var r=[];if(0===e.length||0===t.length)return r;for(var n,i=0;i=2&&2===t.args.length){var o=function(e,t){var r,n,i=[],a=T(e);if(N(e,t))for(var o=0;o2)throw Error("Unexpected non-binary associative function: "+t.toString());return[]}for(var l=[],p=0;p0)if(++o>u)for(o-=u;o--;s+="0");else o1&&(null==c[l+1]&&(c[l+1]=0),c[l+1]+=c[l]>>1,c[l]&=1)}return c.reverse()}var i=r(87);e.exports=function(e,t,r){var a,o,s=e.constructor,u=+(e.s<0),c=+(t.s<0);if(u){a=n(i(e));for(var f=0;f0;)r(l[--m],p[--d])==g&&(v=v.plus(y)),y=y.times(x);for(;d>0;)r(h,p[--d])==g&&(v=v.plus(y)),y=y.times(x);return s.config({precision:w}),0==g&&(v.s=-v.s),v}},function(e,t){e.exports=function(e){if(e.isFinite()&&!e.isInteger())throw new Error("Integer expected in function bitNot");var t=e.constructor,r=t.precision;t.config({precision:1e9});return(e=e.plus(new t(1))).s=-e.s||null,t.config({precision:r}),e}},function(e,t,r){"use strict";var n=r(10);t.name="algorithm08",t.factory=function(e,t,i,a){var o=i(r(11)),s=e.SparseMatrix;return function(e,t,r){var i=e._values,u=e._index,c=e._ptr,f=e._size,l=e._datatype,p=t._values,h=t._index,m=t._ptr,d=t._size,g=t._datatype;if(f.length!==d.length)throw new n(f.length,d.length);if(f[0]!==d[0]||f[1]!==d[1])throw new RangeError("Dimension mismatch. Matrix A ("+f+") must match Matrix B ("+d+")");if(!i||!p)throw new Error("Cannot perform operation on Pattern Sparse Matrices");var v,y=f[0],x=f[1],w=o,b=0,N=r;"string"==typeof l&&l===g&&(v=l,w=a.find(o,[v,v]),b=a.convert(0,v),N=a.find(r,[v,v]));for(var E,M,A,O,T=[],S=[],_=[],C=new s({values:T,index:S,ptr:_,size:[y,x],datatype:v}),z=[],k=[],I=0;I1)throw new Error("Only one dimensional matrices supported");return u(t.valueOf(),r,i)}if(Array.isArray(t))return u(t,r,i)}function u(e,t,r){if(t>=e.length)throw new Error("k out of bounds");for(var n=0,i=e.length-1;n=0){var u=e[o];e[o]=e[a],e[a]=u,--o}else++a;r(e[a],s)>0&&--a,t<=a?i=a:n=a+1}return e[t]}var c=i(r(51));return a("partitionSelect",{"Array | Matrix, number":function(e,t){return s(e,t,c)},"Array | Matrix, number, string":function(e,t,r){if("asc"===r)return s(e,t,c);if("desc"===r)return s(e,t,o);throw new Error('Compare string must be "asc" or "desc"')},"Array | Matrix, number, function":s})}},function(e,t,r){"use strict";var n=r(43),i=r(48),a=r(3).isNumber;t.name="distribution",t.factory=function(e,t,o,s,u){function c(t){if(!h.hasOwnProperty(t))throw new Error("Unknown distribution "+t);var r=Array.prototype.slice.call(arguments,1);return function(t){var r={random:function(t,r,o){var s,c,l;if(arguments.length>3)throw new n("random",arguments.length,0,3);if(1===arguments.length?i(t)?s=t:l=t:2===arguments.length?i(t)?(s=t,l=r):(c=t,l=r):(s=t,c=r,l=o),void 0!==c&&!a(c)||void 0!==l&&!a(l))throw new TypeError("Invalid argument in function random");if(void 0===l&&(l=1),void 0===c&&(c=0),void 0!==s){var p=h(s.valueOf(),c,l,u);return e.isMatrix(s)?f(p):p}return u(c,l)},randomInt:s({"number | Array":function(t){if(i(t)){var r=t,n=1,a=h(r.valueOf(),0,n,c);return e.isMatrix(r)?f(a):a}return c(0,n=t)},"number | Array, number":function(t,r){if(i(t)){var n=t,a=r,o=0,s=h(n.valueOf(),o,a,c);return e.isMatrix(n)?f(s):s}return c(o=t,a=r)},"Array, number, number":function(e,t,r){var n=h(e.valueOf(),t,r,c);return e&&!0===e.isMatrix?f(n):n}}),pickRandom:s({Array:function(e){return o(e)},"Array, number | Array":function(e,t){var r,n;if(Array.isArray(t))n=t;else{if(!a(t))throw new TypeError("Invalid argument in function pickRandom");r=t}return o(e,r,n)},"Array, number | Array, Array | number":function(e,t,r){var n,i;if(Array.isArray(t)?(i=t,n=r):(i=r,n=t),!Array.isArray(i)||!a(n))throw new TypeError("Invalid argument in function pickRandom");return o(e,n,i)}})},o=function(t,r,n){var i=void 0===r;if(i&&(r=1),e.isMatrix(t))t=t.valueOf();else if(!Array.isArray(t))throw new TypeError("Unsupported type of value in function pickRandom");if(l.size(t).length>1)throw new Error("Only one dimensional vectors supported");if(void 0!==n){if(n.length!=t.length)throw new Error("Weights must have the same length as possibles");for(var o=0,s=0,u=n.length;s=c)return r>1?t:t[0];for(var f,h=[];h.length1)for(var a=0,o=e.shift();a1;)e=p(),t=p(),r=1/6*Math.pow(-2*Math.log(e),.5)*Math.cos(2*Math.PI*t)+.5;return r}}};return c.toTex=void 0,c}},function(e,t,r){var n=r(156);t.mixin=function(e){var t=new n;return e.on=t.on.bind(t),e.off=t.off.bind(t),e.once=t.once.bind(t),e.emit=t.emit.bind(t),e}},function(e,t,r){var n=r(171),i=r(3).format,a=r(3).isNumber;t.name="Complex",t.path="type",t.factory=function(e,t,r,o,s){return n.prototype.type="Complex",n.prototype.isComplex=!0,n.prototype.toJSON=function(){return{mathjs:"Complex",re:this.re,im:this.im}},n.prototype.toPolar=function(){return{r:this.abs(),phi:this.arg()}},n.prototype.format=function(e){var t=this.im,r=this.re,n=i(this.re,e),o=i(this.im,e),s=a(e)?e:e?e.precision:null;if(null!==s){var u=Math.pow(10,-s);Math.abs(r/t)t.re?1:e.ret.im?1:e.im0?this.step>0?this.start:this.start+(e-1)*this.step:void 0},a.prototype.max=function(){var e=this.size()[0];return e>0?this.step>0?this.start+(e-1)*this.step:this.start:void 0},a.prototype.forEach=function(e){var t=this.start,r=this.step,n=this.end,i=0;if(r>0)for(;tn;)e(t,[i],this),t+=r,i++},a.prototype.map=function(e){var t=[];return this.forEach(function(r,n,i){t[n[0]]=e(r,n,i)}),t},a.prototype.toArray=function(){var e=[];return this.forEach(function(t,r){e[r[0]]=t}),e},a.prototype.valueOf=function(){return this.toArray()},a.prototype.format=function(e){var t=n.format(this.start,e);return 1!=this.step&&(t+=":"+n.format(this.step,e)),t+=":"+n.format(this.end,e)},a.prototype.toString=function(){return this.format()},a.prototype.toJSON=function(){return{mathjs:"Range",start:this.start,end:this.end,step:this.step}},a.fromJSON=function(e){return new a(e.start,e.end,e.step)},a}},function(e,t,r){"use strict";t.name="ResultSet",t.path="type",t.factory=function(e,t,r,n){function i(e){if(!(this instanceof i))throw new SyntaxError("Constructor must be called with the new operator");this.entries=e||[]}return i.prototype.type="ResultSet",i.prototype.isResultSet=!0,i.prototype.valueOf=function(){return this.entries},i.prototype.toString=function(){return"["+this.entries.join(", ")+"]"},i.prototype.toJSON=function(){return{mathjs:"ResultSet",entries:this.entries}},i.fromJSON=function(e){return new i(e.entries)},i}},function(e,t,r){function n(e){return e[0].precision}var i=r(32).memoize;t.e=i(function(e){return new e(1).exp()},n),t.phi=i(function(e){return new e(1).plus(new e(5).sqrt()).div(2)},n),t.pi=i(function(e){return e.acos(-1)},n),t.tau=i(function(e){return t.pi(e).times(2)},n)},function(e,t,r){"use strict";var n=r(1);t.name="fix",t.factory=function(e,t,r,i){var a=i("fix",{number:function(e){return e>0?Math.floor(e):Math.ceil(e)},Complex:function(t){return new e.Complex(t.re>0?Math.floor(t.re):Math.ceil(t.re),t.im>0?Math.floor(t.im):Math.ceil(t.im))},BigNumber:function(e){return e.isNegative()?e.ceil():e.floor()},Fraction:function(e){return e.s<0?e.ceil():e.floor()},"Array | Matrix":function(e){return n(e,a,!0)}});return a.toTex={1:"\\mathrm{${name}}\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(3).isInteger,i=r(3).toFixed,a=r(1),o="Number of decimals in function round must be an integer";t.name="round",t.factory=function(e,t,s,u){var c=s(r(0)),f=s(r(11)),l=s(r(39)),p=s(r(17)),h=s(r(16)),m=s(r(6)),d=u("round",{number:Math.round,"number, number":function(e,t){if(!n(t))throw new TypeError(o);if(t<0||t>15)throw new Error("Number of decimals in function round must be in te range of 0-15");return function(e,t){return parseFloat(i(e,t))}(e,t)},Complex:function(e){return e.round()},"Complex, number":function(e,t){if(t%1)throw new TypeError(o);return e.round(t)},"Complex, BigNumber":function(e,t){if(!t.isInteger())throw new TypeError(o);var r=t.toNumber();return e.round(r)},"number, BigNumber":function(t,r){if(!r.isInteger())throw new TypeError(o);return new e.BigNumber(t).toDecimalPlaces(r.toNumber())},BigNumber:function(e){return e.toDecimalPlaces(0)},"BigNumber, BigNumber":function(e,t){if(!t.isInteger())throw new TypeError(o);return e.toDecimalPlaces(t.toNumber())},Fraction:function(e){return e.round()},"Fraction, number":function(e,t){if(t%1)throw new TypeError(o);return e.round(t)},"Array | Matrix":function(e){return a(e,d,!0)},"Matrix, number | BigNumber":function(e,t){var r;switch(e.storage()){case"sparse":r=p(e,t,d,!1);break;default:r=m(e,t,d,!1)}return r},"number | Complex | BigNumber, Matrix":function(e,t){if(!f(e,0)){var r;switch(t.storage()){case"sparse":r=h(t,e,d,!0);break;default:r=m(t,e,d,!0)}return r}return l(t.size(),t.storage())},"Array, number | BigNumber":function(e,t){return m(c(e),t,d,!1).valueOf()},"number | Complex | BigNumber, Array":function(e,t){return m(c(t),e,d,!0).valueOf()}});return d.toTex={1:"\\left\\lfloor${args[0]}\\right\\rceil",2:void 0},d}},function(e,t,r){"use strict";var n=r(9);t.name="format",t.factory=function(e,t,r,i){var a=i("format",{any:n.format,"any, Object | function | number":n.format});return a.toTex=void 0,a}},function(e,t,r){t.name="docs",t.path="expression",t.factory=function(e,t,n,i){var a={};return a.bignumber=r(195),a.boolean=r(196),a.complex=r(197),a.createUnit=r(198),a.fraction=r(199),a.index=r(200),a.matrix=r(201),a.number=r(202),a.sparse=r(203),a.splitUnit=r(204),a.string=r(205),a.unit=r(206),a.e=r(101),a.E=r(101),a.false=r(207),a.i=r(208),a[1/0]=r(209),a.LN2=r(210),a.LN10=r(211),a.LOG2E=r(212),a.LOG10E=r(213),a.NaN=r(214),a.null=r(215),a.pi=r(102),a.PI=r(102),a.phi=r(216),a.SQRT1_2=r(217),a.SQRT2=r(218),a.tau=r(219),a.true=r(220),a.version=r(221),a.speedOfLight={description:"Speed of light in vacuum",examples:["speedOfLight"]},a.gravitationConstant={description:"Newtonian constant of gravitation",examples:["gravitationConstant"]},a.planckConstant={description:"Planck constant",examples:["planckConstant"]},a.reducedPlanckConstant={description:"Reduced Planck constant",examples:["reducedPlanckConstant"]},a.magneticConstant={description:"Magnetic constant (vacuum permeability)",examples:["magneticConstant"]},a.electricConstant={description:"Electric constant (vacuum permeability)",examples:["electricConstant"]},a.vacuumImpedance={description:"Characteristic impedance of vacuum",examples:["vacuumImpedance"]},a.coulomb={description:"Coulomb's constant",examples:["coulomb"]},a.elementaryCharge={description:"Elementary charge",examples:["elementaryCharge"]},a.bohrMagneton={description:"Borh magneton",examples:["bohrMagneton"]},a.conductanceQuantum={description:"Conductance quantum",examples:["conductanceQuantum"]},a.inverseConductanceQuantum={description:"Inverse conductance quantum",examples:["inverseConductanceQuantum"]},a.magneticFluxQuantum={description:"Magnetic flux quantum",examples:["magneticFluxQuantum"]},a.nuclearMagneton={description:"Nuclear magneton",examples:["nuclearMagneton"]},a.klitzing={description:"Von Klitzing constant",examples:["klitzing"]},a.bohrRadius={description:"Borh radius",examples:["bohrRadius"]},a.classicalElectronRadius={description:"Classical electron radius",examples:["classicalElectronRadius"]},a.electronMass={description:"Electron mass",examples:["electronMass"]},a.fermiCoupling={description:"Fermi coupling constant",examples:["fermiCoupling"]},a.fineStructure={description:"Fine-structure constant",examples:["fineStructure"]},a.hartreeEnergy={description:"Hartree energy",examples:["hartreeEnergy"]},a.protonMass={description:"Proton mass",examples:["protonMass"]},a.deuteronMass={description:"Deuteron Mass",examples:["deuteronMass"]},a.neutronMass={description:"Neutron mass",examples:["neutronMass"]},a.quantumOfCirculation={description:"Quantum of circulation",examples:["quantumOfCirculation"]},a.rydberg={description:"Rydberg constant",examples:["rydberg"]},a.thomsonCrossSection={description:"Thomson cross section",examples:["thomsonCrossSection"]},a.weakMixingAngle={description:"Weak mixing angle",examples:["weakMixingAngle"]},a.efimovFactor={description:"Efimov factor",examples:["efimovFactor"]},a.atomicMass={description:"Atomic mass constant",examples:["atomicMass"]},a.avogadro={description:"Avogadro's number",examples:["avogadro"]},a.boltzmann={description:"Boltzmann constant",examples:["boltzmann"]},a.faraday={description:"Faraday constant",examples:["faraday"]},a.firstRadiation={description:"First radiation constant",examples:["firstRadiation"]},a.loschmidt={description:"Loschmidt constant at T=273.15 K and p=101.325 kPa",examples:["loschmidt"]},a.gasConstant={description:"Gas constant",examples:["gasConstant"]},a.molarPlanckConstant={description:"Molar Planck constant",examples:["molarPlanckConstant"]},a.molarVolume={description:"Molar volume of an ideal gas at T=273.15 K and p=101.325 kPa",examples:["molarVolume"]},a.sackurTetrode={description:"Sackur-Tetrode constant at T=1 K and p=101.325 kPa",examples:["sackurTetrode"]},a.secondRadiation={description:"Second radiation constant",examples:["secondRadiation"]},a.stefanBoltzmann={description:"Stefan-Boltzmann constant",examples:["stefanBoltzmann"]},a.wienDisplacement={description:"Wien displacement law constant",examples:["wienDisplacement"]},a.molarMass={description:"Molar mass constant",examples:["molarMass"]},a.molarMassC12={description:"Molar mass constant of carbon-12",examples:["molarMassC12"]},a.gravity={description:"Standard acceleration of gravity (standard acceleration of free-fall on Earth)",examples:["gravity"]},a.planckLength={description:"Planck length",examples:["planckLength"]},a.planckMass={description:"Planck mass",examples:["planckMass"]},a.planckTime={description:"Planck time",examples:["planckTime"]},a.planckCharge={description:"Planck charge",examples:["planckCharge"]},a.planckTemperature={description:"Planck temperature",examples:["planckTemperature"]},a.derivative=r(222),a.lsolve=r(223),a.lup=r(224),a.lusolve=r(225),a.simplify=r(226),a.rationalize=r(227),a.slu=r(228),a.usolve=r(229),a.qr=r(230),a.abs=r(231),a.add=r(232),a.cbrt=r(233),a.ceil=r(234),a.cube=r(235),a.divide=r(236),a.dotDivide=r(237),a.dotMultiply=r(238),a.dotPow=r(239),a.exp=r(240),a.fix=r(241),a.floor=r(242),a.gcd=r(243),a.hypot=r(244),a.lcm=r(245),a.log=r(246),a.log10=r(247),a.mod=r(248),a.multiply=r(249),a.norm=r(250),a.nthRoot=r(251),a.pow=r(252),a.round=r(253),a.sign=r(254),a.sqrt=r(255),a.square=r(256),a.subtract=r(257),a.unaryMinus=r(258),a.unaryPlus=r(259),a.xgcd=r(260),a.bitAnd=r(261),a.bitNot=r(262),a.bitOr=r(263),a.bitXor=r(264),a.leftShift=r(265),a.rightArithShift=r(266),a.rightLogShift=r(267),a.bellNumbers=r(268),a.catalan=r(269),a.composition=r(270),a.stirlingS2=r(271),a.config=r(272),a.import=r(273),a.typed=r(274),a.arg=r(275),a.conj=r(276),a.re=r(277),a.im=r(278),a.eval=r(279),a.help=r(280),a.distance=r(281),a.intersect=r(282),a.and=r(283),a.not=r(284),a.or=r(285),a.xor=r(286),a.concat=r(287),a.cross=r(288),a.det=r(289),a.diag=r(290),a.dot=r(291),a.eye=r(292),a.filter=r(293),a.flatten=r(294),a.forEach=r(295),a.inv=r(296),a.kron=r(297),a.map=r(298),a.ones=r(299),a.partitionSelect=r(300),a.range=r(301),a.resize=r(302),a.reshape=r(303),a.size=r(304),a.sort=r(305),a.squeeze=r(306),a.subset=r(307),a.trace=r(308),a.transpose=r(309),a.zeros=r(310),a.combinations=r(311),a.factorial=r(312),a.gamma=r(313),a.kldivergence=r(314),a.multinomial=r(315),a.permutations=r(316),a.pickRandom=r(317),a.random=r(318),a.randomInt=r(319),a.compare=r(320),a.compareNatural=r(321),a.deepEqual=r(322),a.equal=r(323),a.larger=r(324),a.largerEq=r(325),a.smaller=r(326),a.smallerEq=r(327),a.unequal=r(328),a.setCartesian=r(329),a.setDifference=r(330),a.setDistinct=r(331),a.setIntersect=r(332),a.setIsSubset=r(333),a.setMultiplicity=r(334),a.setPowerset=r(335),a.setSize=r(336),a.setSymDifference=r(337),a.setUnion=r(338),a.erf=r(339),a.mad=r(340),a.max=r(341),a.mean=r(342),a.median=r(343),a.min=r(344),a.mode=r(345),a.prod=r(346),a.quantileSeq=r(347),a.std=r(348),a.sum=r(349),a.var=r(350),a.acos=r(351),a.acosh=r(352),a.acot=r(353),a.acoth=r(354),a.acsc=r(355),a.acsch=r(356),a.asec=r(357),a.asech=r(358),a.asin=r(359),a.asinh=r(360),a.atan=r(361),a.atanh=r(362),a.atan2=r(363),a.cos=r(364),a.cosh=r(365),a.cot=r(366),a.coth=r(367),a.csc=r(368),a.csch=r(369),a.sec=r(370),a.sech=r(371),a.sin=r(372),a.sinh=r(373),a.tan=r(374),a.tanh=r(375),a.to=r(376),a.clone=r(377),a.format=r(378),a.isNaN=r(379),a.isInteger=r(380),a.isNegative=r(381),a.isNumeric=r(382),a.isPositive=r(383),a.isPrime=r(384),a.isZero=r(385),a.typeof=r(386),a}},function(e,t){e.exports={name:"e",category:"Constants",syntax:["e"],description:"Euler's number, the base of the natural logarithm. Approximately equal to 2.71828",examples:["e","e ^ 2","exp(2)","log(e)"],seealso:["exp"]}},function(e,t){e.exports={name:"pi",category:"Constants",syntax:["pi"],description:"The number pi is a mathematical constant that is the ratio of a circle's circumference to its diameter, and is approximately equal to 3.14159",examples:["pi","sin(pi/2)"],seealso:["tau"]}},function(e,t,r){"use strict";var n=r(9).stringify,i=r(13).getSafeProperty;t.name="AccessorNode",t.path="expression.node",t.factory=function(e,t,a,o){function s(t,r){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!e.isNode(t))throw new TypeError('Node expected for parameter "object"');if(!e.isIndexNode(r))throw new TypeError('IndexNode expected for parameter "index"');this.object=t||null,this.index=r,Object.defineProperty(this,"name",{get:function(){return this.index?this.index.isObjectProperty()?this.index.getObjectProperty():"":this.object.name||""}.bind(this),set:function(){throw new Error("Cannot assign a new name, name is read-only")}})}function u(t){return!(e.isAccessorNode(t)||e.isArrayNode(t)||e.isConstantNode(t)||e.isFunctionNode(t)||e.isObjectNode(t)||e.isParenthesisNode(t)||e.isSymbolNode(t))}var c=a(r(7)).register,f=a(r(7)).compile,l=a(r(14)),p=(a(r(78)),a(r(104)));return s.prototype=new l,s.prototype.type="AccessorNode",s.prototype.isAccessorNode=!0,c(s.prototype.type,function(e,t,r){if(!(e instanceof s))throw new TypeError("No valid AccessorNode");t.access=p,t.getSafeProperty=i;var a=f(e.object,t,r),o=f(e.index,t,r);return e.index.isObjectProperty()?"getSafeProperty("+a+", "+n(e.index.getObjectProperty())+")":e.index.needsSize()?"(function () { var object = "+a+"; var size = math.size(object).valueOf(); return access(object, "+o+");})()":"access("+a+", "+o+")"}),s.prototype.forEach=function(e){e(this.object,"object",this),e(this.index,"index",this)},s.prototype.map=function(e){return new s(this._ifNode(e(this.object,"object",this)),this._ifNode(e(this.index,"index",this)))},s.prototype.clone=function(){return new s(this.object,this.index)},s.prototype._toString=function(e){var t=this.object.toString(e);return u(this.object)&&(t="("+t+")"),t+this.index.toString(e)},s.prototype.toHTML=function(e){var t=this.object.toHTML(e);return u(this.object)&&(t='('+t+')'),t+this.index.toHTML(e)},s.prototype._toTex=function(e){var t=this.object.toTex(e);return u(this.object)&&(t="\\left("+t+"\\right)"),t+this.index.toTex(e)},s}},function(e,t,r){"use strict";var n=r(41).transform,i=r(13).getSafeProperty;t.factory=function(e,t,a,o){var s=a(r(22));return function(e,t){try{if(Array.isArray(e))return s(e,t);if(e&&"function"==typeof e.subset)return e.subset(t);if("string"==typeof e)return s(e,t);if("object"==typeof e){if(!t.isObjectProperty())throw new TypeError("Cannot apply a numeric index as object property");return i(e,t.getObjectProperty())}throw new TypeError("Cannot apply index: unsupported type of object")}catch(e){throw n(e)}}}},function(e,t,r){"use strict";r(4);var n=r(9).stringify,i=r(13).getSafeProperty,a=r(13).setSafeProperty;t.name="AssignmentNode",t.path="expression.node",t.factory=function(e,t,o,s){function u(t,r,n){if(!(this instanceof u))throw new SyntaxError("Constructor must be called with the new operator");if(this.object=t,this.index=n?r:null,this.value=n||r,!e.isSymbolNode(t)&&!e.isAccessorNode(t))throw new TypeError('SymbolNode or AccessorNode expected as "object"');if(e.isSymbolNode(t)&&"end"===t.name)throw new Error('Cannot assign to symbol "end"');if(this.index&&!e.isIndexNode(this.index))throw new TypeError('IndexNode expected as "index"');if(!e.isNode(this.value))throw new TypeError('Node expected as "value"');Object.defineProperty(this,"name",{get:function(){return this.index?this.index.isObjectProperty()?this.index.getObjectProperty():"":this.object.name||""}.bind(this),set:function(){throw new Error("Cannot assign a new name, name is read-only")}})}function c(e,t){t||(t="keep");var r=d.getPrecedence(e,t),n=d.getPrecedence(e.value,t);return"all"===t||null!==n&&n<=r}var f=o(r(7)).register,l=o(r(7)).compile,p=o(r(14)),h=(o(r(80)),o(r(0)),o(r(389))),m=o(r(104)),d=(r(77),r(53));return u.prototype=new p,u.prototype.type="AssignmentNode",u.prototype.isAssignmentNode=!0,f(u.prototype.type,function(t,r,o){if(!(t instanceof u))throw new TypeError("No valid AssignmentNode");r.assign=h,r.access=m,r.getSafeProperty=i,r.setSafeProperty=a;var s,c=l(t.object,r,o),f=t.index?l(t.index,r,o):null,p=l(t.value,r,o),d=n(t.object.name);if(t.index){if(t.index.isObjectProperty())return"setSafeProperty("+c+", "+n(t.index.getObjectProperty())+", "+p+")";if(e.isSymbolNode(t.object))return s=t.index.needsSize()?"var size = math.size(object).valueOf();":"","(function () { var object = "+c+"; var value = "+p+"; "+s+" setSafeProperty(scope, "+d+", assign(object, "+f+", value)); return value;})()";s=t.index.needsSize()?"var size = math.size(object).valueOf();":"";var g=l(t.object.object,r,o);if(t.object.index.isObjectProperty()){var v=n(t.object.index.getObjectProperty());return"(function () { var parent = "+g+"; var object = getSafeProperty(parent, "+v+"); var value = "+p+";"+s+" setSafeProperty(parent, "+v+", assign(object, "+f+", value)); return value;})()"}return"(function () { var parent = "+g+"; "+(t.object.index.needsSize()?"var size = math.size(parent).valueOf();":"")+" var parentIndex = "+l(t.object.index,r,o)+"; var object = access(parent, parentIndex); var value = "+p+"; "+s+" assign(parent, parentIndex, assign(object, "+f+", value)); return value;})()"}if(!e.isSymbolNode(t.object))throw new TypeError("SymbolNode expected as object");return"setSafeProperty(scope, "+d+", "+p+")"}),u.prototype.forEach=function(e){e(this.object,"object",this),this.index&&e(this.index,"index",this),e(this.value,"value",this)},u.prototype.map=function(e){return new u(this._ifNode(e(this.object,"object",this)),this.index?this._ifNode(e(this.index,"index",this)):null,this._ifNode(e(this.value,"value",this)))},u.prototype.clone=function(){return new u(this.object,this.index,this.value)},u.prototype._toString=function(e){var t=this.object.toString(e),r=this.index?this.index.toString(e):"",n=this.value.toString(e);return c(this,e&&e.parenthesis)&&(n="("+n+")"),t+r+" = "+n},u.prototype.toHTML=function(e){var t=this.object.toHTML(e),r=this.index?this.index.toHTML(e):"",n=this.value.toHTML(e);return c(this,e&&e.parenthesis)&&(n='('+n+')'),t+r+'='+n},u.prototype._toTex=function(e){var t=this.object.toTex(e),r=this.index?this.index.toTex(e):"",n=this.value.toTex(e);return c(this,e&&e.parenthesis)&&(n="\\left("+n+"\\right)"),t+r+":="+n},u}},function(e,t,r){"use strict";var n=r(2).map,i=r(2).join;t.name="BlockNode",t.path="expression.node",t.factory=function(e,t,a,o){function s(t){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!Array.isArray(t))throw new Error("Array expected");this.blocks=t.map(function(t){var r=t&&t.node,n=!t||void 0===t.visible||t.visible;if(!e.isNode(r))throw new TypeError('Property "node" must be a Node');if("boolean"!=typeof n)throw new TypeError('Property "visible" must be a boolean');return{node:r,visible:n}})}var u=a(r(7)).register,c=a(r(7)).compile,f=a(r(14)),l=a(r(95));return s.prototype=new f,s.prototype.type="BlockNode",s.prototype.isBlockNode=!0,u(s.prototype.type,function(e,t,r){if(!(e instanceof s))throw new TypeError("No valid BlockNode");t.ResultSet=l;var a=n(e.blocks,function(e){var n=c(e.node,t,r);return e.visible?"results.push("+n+");":n+";"});return"(function () {var results = [];"+i(a,"")+"return new ResultSet(results);})()"}),s.prototype.forEach=function(e){for(var t=0;t;')}).join('
')},s.prototype._toTex=function(e){return this.blocks.map(function(t){return t.node.toTex(e)+(t.visible?"":";")}).join("\\;\\;\n")},s}},function(e,t,r){"use strict";r(4);var n=r(53);t.name="ConditionalNode",t.path="expression.node",t.factory=function(e,t,i,a){function o(t,r,n){if(!(this instanceof o))throw new SyntaxError("Constructor must be called with the new operator");if(!e.isNode(t))throw new TypeError("Parameter condition must be a Node");if(!e.isNode(r))throw new TypeError("Parameter trueExpr must be a Node");if(!e.isNode(n))throw new TypeError("Parameter falseExpr must be a Node");this.condition=t,this.trueExpr=r,this.falseExpr=n}var s=i(r(7)).register,u=i(r(7)).compile,c=i(r(14));return o.prototype=new c,o.prototype.type="ConditionalNode",o.prototype.isConditionalNode=!0,s(o.prototype.type,function(t,r,n){if(!(t instanceof o))throw new TypeError("No valid ConditionalNode");return r.testCondition=function(t){if("number"==typeof t||"boolean"==typeof t||"string"==typeof t)return!!t;if(t){if(e.isBigNumber(t))return!t.isZero();if(e.isComplex(t))return!(!t.re&&!t.im);if(e.isUnit(t))return!!t.value}if(null===t||void 0===t)return!1;throw new TypeError('Unsupported type of condition "'+r.math.typeof(t)+'"')},"testCondition("+u(t.condition,r,n)+") ? ( "+u(t.trueExpr,r,n)+") : ( "+u(t.falseExpr,r,n)+")"}),o.prototype.forEach=function(e){e(this.condition,"condition",this),e(this.trueExpr,"trueExpr",this),e(this.falseExpr,"falseExpr",this)},o.prototype.map=function(e){return new o(this._ifNode(e(this.condition,"condition",this)),this._ifNode(e(this.trueExpr,"trueExpr",this)),this._ifNode(e(this.falseExpr,"falseExpr",this)))},o.prototype.clone=function(){return new o(this.condition,this.trueExpr,this.falseExpr)},o.prototype._toString=function(e){var t=e&&e.parenthesis?e.parenthesis:"keep",r=n.getPrecedence(this,t),i=this.condition.toString(e),a=n.getPrecedence(this.condition,t);("all"===t||"OperatorNode"===this.condition.type||null!==a&&a<=r)&&(i="("+i+")");var o=this.trueExpr.toString(e),s=n.getPrecedence(this.trueExpr,t);("all"===t||"OperatorNode"===this.trueExpr.type||null!==s&&s<=r)&&(o="("+o+")");var u=this.falseExpr.toString(e),c=n.getPrecedence(this.falseExpr,t);return("all"===t||"OperatorNode"===this.falseExpr.type||null!==c&&c<=r)&&(u="("+u+")"),i+" ? "+o+" : "+u},o.prototype.toHTML=function(e){var t=e&&e.parenthesis?e.parenthesis:"keep",r=n.getPrecedence(this,t),i=this.condition.toHTML(e),a=n.getPrecedence(this.condition,t);("all"===t||"OperatorNode"===this.condition.type||null!==a&&a<=r)&&(i='('+i+')');var o=this.trueExpr.toHTML(e),s=n.getPrecedence(this.trueExpr,t);("all"===t||"OperatorNode"===this.trueExpr.type||null!==s&&s<=r)&&(o='('+o+')');var u=this.falseExpr.toHTML(e),c=n.getPrecedence(this.falseExpr,t);return("all"===t||"OperatorNode"===this.falseExpr.type||null!==c&&c<=r)&&(u='('+u+')'),i+'?'+o+':'+u},o.prototype._toTex=function(e){return"\\begin{cases} {"+this.trueExpr.toTex(e)+"}, &\\quad{\\text{if }\\;"+this.condition.toTex(e)+"}\\\\{"+this.falseExpr.toTex(e)+"}, &\\quad{\\text{otherwise}}\\end{cases}"},o}},function(e,t,r){"use strict";var n=r(77),i=r(9).stringify,a=r(9).escape,o=r(2).map,s=r(2).join,u=r(4),c=r(53),f=r(13).setSafeProperty,l=r(109);t.name="FunctionAssignmentNode",t.path="expression.node",t.factory=function(e,t,p,h){function m(t,r,i){if(!(this instanceof m))throw new SyntaxError("Constructor must be called with the new operator");if("string"!=typeof t)throw new TypeError('String expected for parameter "name"');if(!Array.isArray(r))throw new TypeError('Array containing strings or objects expected for parameter "params"');if(!e.isNode(i))throw new TypeError('Node expected for parameter "expr"');if(t in n)throw new Error('Illegal function name, "'+t+'" is a reserved keyword');this.name=t,this.params=r.map(function(e){return e&&e.name||e}),this.types=r.map(function(e){return e&&e.type||"any"}),this.expr=i}function d(e,t){var r=c.getPrecedence(e,t),n=c.getPrecedence(e.expr,t);return"all"===t||null!==n&&n<=r}var g=p(r(7)).register,v=p(r(7)).compile,y=p(r(14));return m.prototype=new y,m.prototype.type="FunctionAssignmentNode",m.prototype.isFunctionAssignmentNode=!0,g(m.prototype.type,function(e,t,r){if(!(e instanceof m))throw new TypeError("No valid FunctionAssignmentNode");t.typed=h,t.setSafeProperty=f;var n=Object.create(r),a=o(e.params,function(e){return n[e]=l(n),n[e]}),u=v(e.expr,t,n),c=i(e.name);return"setSafeProperty(scope, "+c+", (function () { var fn = typed("+c+", { "+i(s(e.types,","))+": function ("+s(a,",")+") { return "+u+" } }); fn.syntax = "+i(e.name+"("+s(e.params,", ")+")")+"; return fn; })())"}),m.prototype.forEach=function(e){e(this.expr,"expr",this)},m.prototype.map=function(e){var t=this._ifNode(e(this.expr,"expr",this));return new m(this.name,this.params.slice(0),t)},m.prototype.clone=function(){return new m(this.name,this.params.slice(0),this.expr)},m.prototype._toString=function(e){var t=e&&e.parenthesis?e.parenthesis:"keep",r=this.expr.toString(e);return d(this,t)&&(r="("+r+")"),this.name+"("+this.params.join(", ")+") = "+r},m.prototype.toHTML=function(e){for(var t=e&&e.parenthesis?e.parenthesis:"keep",r=[],n=0;n'+a(this.params[n])+"");var i=this.expr.toHTML(e);return d(this,t)&&(i='('+i+')'),''+a(this.name)+'('+r.join(',')+')='+i},m.prototype._toTex=function(e){var t=e&&e.parenthesis?e.parenthesis:"keep",r=this.expr.toTex(e);return d(this,t)&&(r="\\left("+r+"\\right)"),"\\mathrm{"+this.name+"}\\left("+this.params.map(u.toSymbol).join(",")+"\\right):="+r},m}},function(e,t){e.exports=function(e){return"arg"+Object.keys(e).length}},function(e,t,r){"use strict";var n=r(9).stringify,i=r(9).escape,a=r(13).isSafeProperty,o=r(5).hasOwnProperty;t.name="ObjectNode",t.path="expression.node",t.factory=function(e,t,s,u){function c(t){if(!(this instanceof c))throw new SyntaxError("Constructor must be called with the new operator");if(this.properties=t||{},t&&("object"!=typeof t||!Object.keys(t).every(function(r){return e.isNode(t[r])})))throw new TypeError("Object containing Nodes expected")}var f=s(r(7)).register,l=s(r(7)).compile,p=s(r(14));return c.prototype=new p,c.prototype.type="ObjectNode",c.prototype.isObjectNode=!0,f(c.prototype.type,function(e,t,r){if(!(e instanceof c))throw new TypeError("No valid ObjectNode");var i=[];for(var s in e.properties)if(o(e.properties,s)){var u=n(s),f=JSON.parse(u);if(!a(e.properties,f))throw new Error('No access to property "'+f+'"');i.push(u+": "+l(e.properties[s],t,r))}return"{"+i.join(", ")+"}"}),c.prototype.forEach=function(e){for(var t in this.properties)this.properties.hasOwnProperty(t)&&e(this.properties[t],"properties["+n(t)+"]",this)},c.prototype.map=function(e){var t={};for(var r in this.properties)this.properties.hasOwnProperty(r)&&(t[r]=this._ifNode(e(this.properties[r],"properties["+n(r)+"]",this)));return new c(t)},c.prototype.clone=function(){var e={};for(var t in this.properties)this.properties.hasOwnProperty(t)&&(e[t]=this.properties[t]);return new c(e)},c.prototype._toString=function(e){var t=[];for(var r in this.properties)this.properties.hasOwnProperty(r)&&t.push(n(r)+": "+this.properties[r].toString(e));return"{"+t.join(", ")+"}"},c.prototype.toHTML=function(e){var t=[];for(var r in this.properties)this.properties.hasOwnProperty(r)&&t.push(''+i(r)+':'+this.properties[r].toHTML(e));return'{'+t.join(',')+'}'},c.prototype._toTex=function(e){var t=[];for(var r in this.properties)this.properties.hasOwnProperty(r)&&t.push("\\mathbf{"+r+":} & "+this.properties[r].toTex(e)+"\\\\");return"\\left\\{\\begin{array}{ll}"+t.join("\n")+"\\end{array}\\right\\}"},c}},function(e,t,r){"use strict";t.name="parse",t.factory=function(e,t,n,i){var a=n(r(40));return i("parse",{"string | Array | Matrix":a,"string | Array | Matrix, Object":a})}},function(e,t,r){"use strict";t.name="parser",t.factory=function(e,t,n,i,a){var o=n(r(113));return i("parser",{"":function(){return new o(a)}})},t.math=!0},function(e,t,r){"use strict";var n=r(5).extend,i=r(13);t.name="Parser",t.path="expression",t.factory=function(e,t,a,o,s){function u(){if(!(this instanceof u))throw new SyntaxError("Constructor must be called with the new operator");this.scope={}}var c=a(r(40));return u.prototype.type="Parser",u.prototype.isParser=!0,u.prototype.parse=function(e){throw new Error("Parser.parse is deprecated. Use math.parse instead.")},u.prototype.compile=function(e){throw new Error("Parser.compile is deprecated. Use math.compile instead.")},u.prototype.eval=function(e){return c(e).compile().eval(this.scope)},u.prototype.get=function(e){return e in this.scope?i.getSafeProperty(this.scope,e):void 0},u.prototype.getAll=function(){return n({},this.scope)},u.prototype.set=function(e,t){return i.setSafeProperty(this.scope,e,t)},u.prototype.remove=function(e){delete this.scope[e]},u.prototype.clear=function(){for(var e in this.scope)this.scope.hasOwnProperty(e)&&delete this.scope[e]},u},t.math=!0},function(e,t,r){"use strict";var n=r(42),i=r(65),a=r(66);t.name="max",t.factory=function(e,t,o,s){function u(e,t){return f(e,t)?e:t}function c(e){var t=void 0;if(n(e,function(e){(void 0===t||f(e,t))&&(t=e)}),void 0===t)throw new Error("Cannot calculate max of an empty array");return t}var f=o(r(34)),l=s("max",{"Array | Matrix":c,"Array | Matrix, number | BigNumber":function(e,t){return i(e,t.valueOf(),u)},"...":function(e){if(a(e))throw new TypeError("Scalar values expected in function max");return c(e)}});return l.toTex="\\max\\left(${args}\\right)",l}},function(e,t,r){"use strict";var n=r(2).size,i=r(42),a=r(65),o=r(66);t.name="mean",t.factory=function(e,t,s,u){function c(e){var t=0,r=0;if(i(e,function(e){t=f(t,e),r++}),0===r)throw new Error("Cannot calculate mean of an empty array");return l(t,r)}var f=s(r(18)),l=s(r(49)),p=u("mean",{"Array | Matrix":c,"Array | Matrix, number | BigNumber":function(e,t){var r=a(e,t,f),i=Array.isArray(e)?n(e):e.size();return l(r,i[t])},"...":function(e){if(o(e))throw new TypeError("Scalar values expected in function mean");return c(e)}});return p.toTex=void 0,p}},function(e,t,r){"use strict";var n=r(25);t.name="inv",t.factory=function(e,t,i,a){function o(e,t,r){var n,i,a,o,s;if(1==t){if(0==(o=e[0][0]))throw Error("Cannot calculate inverse, determinant is zero");return[[u(1,o)]]}if(2==t){var m=p(e);if(0==m)throw Error("Cannot calculate inverse, determinant is zero");return[[u(e[1][1],m),u(l(e[0][1]),m)],[u(l(e[1][0]),m),u(e[0][0],m)]]}var d=e.concat();for(n=0;n0)for(;it;)n.push(i),i+=r;return n}function u(e,t,r){var n=[],i=e;if(r>0)for(;i<=t;)n.push(i),i+=r;else if(r<0)for(;i>=t;)n.push(i),i+=r;return n}function c(e,t,r){var n=[],i=e;if(r.gt(p))for(;i.lt(t);)n.push(i),i=i.plus(r);else if(r.lt(p))for(;i.gt(t);)n.push(i),i=i.plus(r);return n}function f(e,t,r){var n=[],i=e;if(r.gt(p))for(;i.lte(t);)n.push(i),i=i.plus(r);else if(r.lt(p))for(;i.gte(t);)n.push(i),i=i.plus(r);return n}var l=n(r(0)),p=new e.BigNumber(0),h=new e.BigNumber(1),m=i("range",{string:o,"string, boolean":o,"number, number":function(e,t){return a(s(e,t,1))},"number, number, number":function(e,t,r){return a(s(e,t,r))},"number, number, boolean":function(e,t,r){return a(r?u(e,t,1):s(e,t,1))},"number, number, number, boolean":function(e,t,r,n){return a(n?u(e,t,r):s(e,t,r))},"BigNumber, BigNumber":function(e,t){return a(c(e,t,h))},"BigNumber, BigNumber, BigNumber":function(e,t,r){return a(c(e,t,r))},"BigNumber, BigNumber, boolean":function(e,t,r){return a(r?f(e,t,h):c(e,t,h))},"BigNumber, BigNumber, BigNumber, boolean":function(e,t,r,n){return a(n?f(e,t,r):c(e,t,r))}});return m.toTex=void 0,m}},function(e,t,r){"use strict";r(3).digits;t.math=!0,t.name="simplifyConstant",t.path="algebra.simplify",t.factory=function(e,t,n,i,a){function o(t,r){try{return x(a[t].apply(null,r))}catch(n){return r=r.map(function(t){return e.isFraction(t)?t.valueOf():t}),x(a[t].apply(null,r))}}function s(e){if(isFinite(e)){var t=a.fraction(e);if(t.valueOf()===e)return t}return e}function u(e){return new v("-","unaryMinus",[e])}function c(t,r,n){return r.reduce(function(r,i){if(e.isNode(r)||e.isNode(i))e.isNode(r)?e.isNode(i)||(i=y(i)):r=y(r);else{try{return o(t,[r,i])}catch(e){}r=y(r),i=y(i)}return n([r,i])})}function f(t){switch(t.type){case"SymbolNode":return t;case"ConstantNode":return"number"===t.valueType?x(t.value):t;case"FunctionNode":if(a[t.name]&&a[t.name].rawArgs)return t;case"OperatorNode":var r,n,i=t.fn.toString(),s=d(t);if(1===t.args.length)r=[f(t.args[0])],n=e.isNode(r[0])?s(r):o(i,r);else if(h(t))if(r=m(t),r=r.map(f),p(i)){for(var u=[],l=[],g=0;g1?(n=c(i,u,s),l.unshift(n),n=c(i,l,s)):n=c(i,r,s)}else n=c(i,r,s);else n=c(i,r=t.args.map(f),s);return n;case"ParenthesisNode":return f(t.content);case"AccessorNode":case"ArrayNode":case"AssignmentNode":case"BlockNode":case"FunctionAssignmentNode":case"IndexNode":case"ObjectNode":case"RangeNode":case"UpdateNode":case"ConditionalNode":default:throw"Unimplemented node type in simplifyConstant: "+t.type}}var l=n(r(121)),p=l.isCommutative,h=l.isAssociative,m=l.allChildren,d=l.createMakeNodeFunction,g=a.expression.node.ConstantNode,v=a.expression.node.OperatorNode,y=i({Fraction:function(e){var t,r=e.s*e.n;return t=r<0?new v("-","unaryMinus",[new g(-r)]):new g(r),1===e.d?t:new v("/","divide",[t,new g(e.d)])},number:function(e){return e<0?u(new g(-e)):new g(e)},BigNumber:function(e){return e<0?u(new g(e.negated().toString(),"number")):new g(e.toString(),"number")},Complex:function(e){throw"Cannot convert Complex number to Node"}}),x=i({string:function(e){return"BigNumber"===t.number?a.bignumber(e):"Fraction"===t.number?a.fraction(e):s(parseFloat(e))},Fraction:function(e){return e},BigNumber:function(e){return e},number:function(e){return s(e)},Complex:function(e){return 0!==e.im?e:s(e.re)}});return function(t){var r=f(t);return e.isNode(r)?r:y(r)}}},function(e,t,r){"use strict";t.factory=function(e,t,r,n,i){function a(e,t){if(!e.args||e.args.length<=1)return!0;var r=e.fn.toString();return t&&t.hasOwnProperty(r)&&t[r].hasOwnProperty("associative")?t[r].associative:d[r]||!1}function o(e){if(!e.args||0===e.args.length)return e;e.args=s(e);for(var t=0;t2&&a(e)){for(var i=e.args.pop();e.args.length>0;)i=t([e.args.pop(),i]);e.args=i.args}}}function c(e){if(e.args&&0!==e.args.length){for(var t=f(e),r=e.args.length,n=0;n2&&a(e)){for(var i=e.args.shift();e.args.length>0;)i=t([i,e.args.shift()]);e.args=i.args}}}function f(t){return e.isOperatorNode(t)?function(e){try{return new p(t.op,t.fn,e)}catch(e){return console.error(e),[]}}:function(e){return new l(new h(t.name),e)}}var l=i.expression.node.FunctionNode,p=i.expression.node.OperatorNode,h=i.expression.node.SymbolNode,m={add:!0,multiply:!0},d={add:!0,multiply:!0};return{createMakeNodeFunction:f,isCommutative:function(e,t){if(!e.args||e.args.length<=1)return!0;var r=e.fn.toString();return t&&t.hasOwnProperty(r)&&t[r].hasOwnProperty("commutative")?t[r].commutative:m[r]||!1},isAssociative:a,flatten:o,allChildren:s,unflattenr:u,unflattenl:c}},t.math=!0},function(e,t,r){"use strict";t.math=!0,t.name="simplifyCore",t.path="algebra.simplify",t.factory=function(e,t,r,n,i){function a(t){if(e.isOperatorNode(t)&&t.args.length<=2){var r=a(t.args[0]),n=t.args[1]&&a(t.args[1]);if("+"===t.op){if(1===t.args.length)return t.args[0];if(e.isConstantNode(r)){if("0"===r.value)return n;if(e.isConstantNode(n)&&r.value&&r.value.length<5&&n.value&&n.value.length<5)return new o(Number(r.value)+Number(n.value))}return e.isConstantNode(n)&&"0"===n.value?r:2===t.args.length&&e.isOperatorNode(n)&&"-"===n.op&&"unaryMinus"===n.fn?new s("-","subtract",[r,n.args[0]]):new s(t.op,t.fn,n?[r,n]:[r])}if("-"===t.op){if(e.isConstantNode(r)&&n){if(e.isConstantNode(n)&&r.value&&r.value.length<5&&n.value&&n.value.length<5)return new o(Number(r.value)-Number(n.value));if("0"===r.value)return new s("-","unaryMinus",[n])}if("subtract"===t.fn&&2===t.args.length)return e.isConstantNode(n)&&"0"===n.value?r:e.isOperatorNode(n)&&"unaryMinus"===n.fn?a(new s("+","add",[r,n.args[0]])):new s(t.op,t.fn,[r,n]);if("unaryMinus"===t.fn)return e.isOperatorNode(r)&&"unaryMinus"===r.fn?r.args[0]:new s(t.op,t.fn,[r]);throw new Error("never happens")}if("*"===t.op){if(e.isConstantNode(r)){if("0"===r.value)return c;if("1"===r.value)return n;if(e.isConstantNode(n)&&r.value&&r.value.length<5&&n.value&&n.value.length<5)return new o(Number(r.value)*Number(n.value))}if(e.isConstantNode(n)){if("0"===n.value)return c;if("1"===n.value)return r;if(e.isOperatorNode(r)&&r.op===t.op){var l=r.args[0];if(e.isConstantNode(l)&&n.value&&n.value.length<5&&l.value&&l.value.length<5){var p=new o(Number(r.args[0].value)*Number(n.value));return new s(t.op,t.fn,[p,r.args[1]])}}return new s(t.op,t.fn,[n,r])}return new s(t.op,t.fn,[r,n])}if("/"===t.op){if(e.isConstantNode(r)){if("0"===r.value)return c;if(e.isConstantNode(n)&&r.value&&r.value.length<5&&("1"===n.value||"2"===n.value||"4"===n.value))return new o(Number(r.value)/Number(n.value))}return new s(t.op,t.fn,[r,n])}if("^"===t.op){if(e.isConstantNode(n)){if("0"===n.value)return f;if("1"===n.value)return r;if(e.isConstantNode(n)&&r.value&&r.value.length<5&&n.value&&n.value.length<2)return new o(i.pow(Number(r.value),Number(n.value)))}return new s(t.op,t.fn,[r,n])}}else{if(e.isParenthesisNode(t)){var h=a(t.content);return e.isParenthesisNode(h)||e.isSymbolNode(h)||e.isConstantNode(h)?h:new ParenthesisNode(h)}if(e.isFunctionNode(t)){var m=t.args.map(a);return 1===m.length&&e.isParenthesisNode(m[0])&&(m[0]=m[0].content),new u(a(t.fn),m)}}return t}var o=i.expression.node.ConstantNode,s=i.expression.node.OperatorNode,u=i.expression.node.FunctionNode,c=new o(0),f=new o(1);return a}},function(e,t,r){"use strict";var n=r(5);t.name="clone",t.factory=function(e,t,r,i){var a=i("clone",{any:n.clone});return a.toTex=void 0,a}},function(e,t,r){"use strict";var n=r(3).nearlyEqual,i=r(36);t.name="unequal",t.factory=function(e,t,a,o){var s=a(r(0)),u=a(r(15)),c=a(r(26)),f=a(r(16)),l=a(r(8)),p=a(r(6)),h=r(4),m=o("unequal",{"any, any":function(e,t){return null===e?null!==t:null===t?null!==e:void 0===e?void 0!==t:void 0===t?void 0!==e:d(e,t)},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=c(e,t,d);break;default:r=u(t,e,d,!0)}break;default:switch(t.storage()){case"sparse":r=u(e,t,d,!1);break;default:r=l(e,t,d)}}return r},"Array, Array":function(e,t){return m(s(e),s(t)).valueOf()},"Array, Matrix":function(e,t){return m(s(e),t)},"Matrix, Array":function(e,t){return m(e,s(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=f(e,t,d,!1);break;default:r=p(e,t,d,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=f(t,e,d,!0);break;default:r=p(t,e,d,!0)}return r},"Array, any":function(e,t){return p(s(e),t,d,!1).valueOf()},"any, Array":function(e,t){return p(s(t),e,d,!0).valueOf()}}),d=o("_unequal",{"boolean, boolean":function(e,t){return e!==t},"number, number":function(e,r){return!n(e,r,t.epsilon)},"BigNumber, BigNumber":function(e,r){return!i(e,r,t.epsilon)},"Fraction, Fraction":function(e,t){return!e.equals(t)},"Complex, Complex":function(e,t){return!e.equals(t)},"Unit, Unit":function(e,t){if(!e.equalBase(t))throw new Error("Cannot compare units with different base");return m(e.value,t.value)},"string, string":function(e,t){return e!==t}});return m.toTex={2:"\\left(${args[0]}"+h.operators.unequal+"${args[1]}\\right)"},m}},function(e,t,r){"use strict";var n=r(3),i=r(1);t.name="sign",t.factory=function(e,t,r,a){var o=a("sign",{number:n.sign,Complex:function(e){return e.sign()},BigNumber:function(t){return new e.BigNumber(t.cmp(0))},Fraction:function(t){return new e.Fraction(t.s,1)},"Array | Matrix":function(e){return i(e,o,!0)},Unit:function(e){return o(e.value)}});return o.toTex={1:"\\mathrm{${name}}\\left(${args[0]}\\right)"},o}},function(e,t,r){"use strict";var n=r(1);t.name="conj",t.factory=function(e,t,r,i){var a=i("conj",{number:function(e){return e},BigNumber:function(e){return e},Complex:function(e){return e.conjugate()},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\left(${args[0]}\\right)^*"},a}},function(e,t,r){"use strict";var n=r(25).object;t.name="lup",t.factory=function(e,t,i,a){var o=i(r(0)),s=i(r(29)),u=i(r(20)),c=i(r(19)),f=i(r(23)),l=i(r(21)),p=i(r(34)),h=i(r(11)),m=i(r(38)),d=e.SparseMatrix,g=e.DenseMatrix,v=e.Spa,y=a("lup",{DenseMatrix:function(e){return x(e)},SparseMatrix:function(e){return w(e)},Array:function(e){var t=o(e),r=x(t);return{L:r.L.valueOf(),U:r.U.valueOf(),p:r.p}}}),x=function(e){var t,r,i,a=e._size[0],o=e._size[1],m=Math.min(a,o),d=n.clone(e._data),v=[],y=[a,m],x=[],w=[m,o],b=[];for(t=0;t0)for(t=0;t0&&_.forEach(0,r-1,function(e,t){d._forEachRow(e,y,x,w,function(r,n){r>e&&_.accumulate(r,m(f(n,t)))})});var k=r,I=_.get(r),B=s(I);_.forEach(r+1,i-1,function(e,t){var r=s(t);p(r,B)&&(k=e,B=r,I=t)}),r!==k&&(d._swapRows(r,k,b[1],y,x,w),d._swapRows(r,k,A[1],N,E,M),_.swap(r,k),S(r,k)),_.forEach(0,i-1,function(e,t){e<=r?(N.push(t),E.push(e)):(t=c(t,I),h(t,0)||(y.push(t),x.push(e)))})}return M.push(N.length),w.push(y.length),{L:new d({values:y,index:x,ptr:w,size:b}),U:new d({values:N,index:E,ptr:M,size:A}),p:O,toString:function(){return"L: "+this.L.toString()+"\nU: "+this.U.toString()+"\nP: "+this.p}}};return y}},function(e,t,r){"use strict";var n=r(25).number.isInteger;t.name="slu",t.factory=function(e,t,i,a){var o=i(r(412)),s=i(r(420));return a("slu",{"SparseMatrix, number, number":function(e,t,r){if(!n(t)||t<0||t>3)throw new Error("Symbolic Ordering and Analysis order must be an integer number in the interval [0, 3]");if(r<0||r>1)throw new Error("Partial pivoting threshold must be a number from 0 to 1");var i=o(t,e,!1),a=s(e,i,r);return{L:a.L,U:a.U,p:a.pinv,q:i.q,toString:function(){return"L: "+this.L.toString()+"\nU: "+this.U.toString()+"\np: "+this.p.toString()+(this.q?"\nq: "+this.q.toString():"")+"\n"}}}})}},function(e,t,r){"use strict";t.name="cs_tdfs",t.path="sparse",t.factory=function(){return function(e,t,r,n,i,a,o){var s=0;for(r[o]=e;s>=0;){var u=r[o+s],c=r[n+u];-1==c?(s--,a[t++]=u):(r[n+u]=r[i+c],r[o+ ++s]=c)}return t}}},function(e,t,r){"use strict";var n=r(3).nearlyEqual,i=r(36);t.name="largerEq",t.factory=function(e,t,a,o){var s=a(r(0)),u=a(r(15)),c=a(r(26)),f=a(r(16)),l=a(r(8)),p=a(r(6)),h=r(4),m=o("largerEq",{"boolean, boolean":function(e,t){return e>=t},"number, number":function(e,r){return e>=r||n(e,r,t.epsilon)},"BigNumber, BigNumber":function(e,r){return e.gte(r)||i(e,r,t.epsilon)},"Fraction, Fraction":function(e,t){return-1!==e.compare(t)},"Complex, Complex":function(){throw new TypeError("No ordering relation is defined for complex numbers")},"Unit, Unit":function(e,t){if(!e.equalBase(t))throw new Error("Cannot compare units with different base");return m(e.value,t.value)},"string, string":function(e,t){return e>=t},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=c(e,t,m);break;default:r=u(t,e,m,!0)}break;default:switch(t.storage()){case"sparse":r=u(e,t,m,!1);break;default:r=l(e,t,m)}}return r},"Array, Array":function(e,t){return m(s(e),s(t)).valueOf()},"Array, Matrix":function(e,t){return m(s(e),t)},"Matrix, Array":function(e,t){return m(e,s(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=f(e,t,m,!1);break;default:r=p(e,t,m,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=f(t,e,m,!0);break;default:r=p(t,e,m,!0)}return r},"Array, any":function(e,t){return p(s(e),t,m,!1).valueOf()},"any, Array":function(e,t){return p(s(t),e,m,!0).valueOf()}});return m.toTex={2:"\\left(${args[0]}"+h.operators.largerEq+"${args[1]}\\right)"},m}},function(e,t,r){"use strict";t.name="cs_marked",t.path="sparse",t.factory=function(){return function(e,t){return e[t]<0}}},function(e,t,r){"use strict";t.name="cs_mark",t.path="sparse",t.factory=function(e,t,n){var i=n(r(84));return function(e,t){e[t]=i(e[t])}}},function(e,t,r){"use strict";t.name="lsolve",t.factory=function(e,t,n,i){var a=n(r(0)),o=n(r(19)),s=n(r(23)),u=n(r(21)),c=n(r(11)),f=n(r(85)),l=e.DenseMatrix,p=i("lsolve",{"SparseMatrix, Array | Matrix":function(e,t){return m(e,t)},"DenseMatrix, Array | Matrix":function(e,t){return h(e,t)},"Array, Array | Matrix":function(e,t){var r=a(e);return h(r,t).valueOf()}}),h=function(e,t){for(var r=(t=f(e,t,!0))._data,n=e._size[0],i=e._size[1],a=[],p=e._data,h=0;hv&&(w.push(h[n]),b.push(r));if(c(x,0))throw new Error("Linear system cannot be solved since matrix is singular");var E=o(y,x);for(n=0,N=b.length;n=0;h--){var m,d=r[h][0]||0;if(c(d,0))m=0;else{var g=p[h][h];if(c(g,0))throw new Error("Linear system cannot be solved since matrix is singular");m=o(d,g);for(var v=h-1;v>=0;v--)r[v]=[u(r[v][0]||0,s(m,p[v][h]))]}a[h]=[m]}return new l({data:a,size:[n,1]})},m=function(e,t){for(var r,n,i=(t=f(e,t,!0))._data,a=e._size[0],p=e._size[1],h=e._values,m=e._index,d=e._ptr,g=[],v=p-1;v>=0;v--){var y=i[v][0]||0;if(c(y,0))g[v]=[0];else{var x=0,w=[],b=[],N=d[v],E=d[v+1];for(n=E-1;n>=N;n--)(r=m[n])===v?x=h[n]:r=0||t.predictable?Math.log(r):new e.Complex(r,0).log()},Complex:function(e){return e.log()},BigNumber:function(r){return!r.isNegative()||t.predictable?r.ln():new e.Complex(r.toNumber(),0).log()},"Array | Matrix":function(e){return n(e,s)},"any, any":function(e,t){return o(s(e),s(t))}});return s.toTex={1:"\\ln\\left(${args[0]}\\right)",2:"\\log_{${args[1]}}\\left(${args[0]}\\right)"},s}},function(e,t,r){"use strict";var n=r(5).clone,i=r(9).format;t.name="trace",t.factory=function(e,t,a,o){var s=a(r(0)),u=a(r(18)),c=o("trace",{Array:function(e){return c(s(e))},Matrix:function(e){var t;switch(e.storage()){case"dense":t=f(e);break;case"sparse":t=l(e)}return t},any:n}),f=function(e){var t=e._size,r=e._data;switch(t.length){case 1:if(1==t[0])return n(r[0]);throw new RangeError("Matrix must be square (size: "+i(t)+")");case 2:var a=t[0];if(a===t[1]){for(var o=0,s=0;s0)for(var f=0;ff)break}return c}throw new RangeError("Matrix must be square (size: "+i(a)+")")};return c.toTex={1:"\\mathrm{tr}\\left(${args[0]}\\right)"},c}},function(e,t,r){"use strict";t.name="stirlingS2",t.factory=function(e,t,n,i){var a=n(r(18)),o=n(r(21)),s=n(r(12)),u=n(r(49)),c=n(r(46)),f=n(r(69)),l=n(r(70)),p=n(r(58)),h=n(r(50)),m=n(r(34)),d=i("stirlingS2",{"number | BigNumber, number | BigNumber":function(e,t){if(!h(e)||p(e)||!h(t)||p(t))throw new TypeError("Non-negative integer value expected in function stirlingS2");if(m(t,e))throw new TypeError("k must be less than or equal to n in function stirlingS2");for(var r=f(t),n=0,i=0;i<=t;i++){var d=c(-1,o(t,i)),g=l(t,i),v=c(i,e);n=a(n,s(s(g,v),d))}return u(n,r)}});return d.toTex={2:"\\mathrm{S}\\left(${args}\\right)"},d}},function(e,t,r){"use strict";var n=r(1),i=r(3).isInteger,a=4.7421875,o=[.9999999999999971,57.15623566586292,-59.59796035547549,14.136097974741746,-.4919138160976202,3399464998481189e-20,4652362892704858e-20,-9837447530487956e-20,.0001580887032249125,-.00021026444172410488,.00021743961811521265,-.0001643181065367639,8441822398385275e-20,-26190838401581408e-21,36899182659531625e-22];t.name="gamma",t.factory=function(e,t,s,u){var c=s(r(12)),f=s(r(46)),l=u("gamma",{number:function(e){var t,r;if(i(e)){if(e<=0)return isFinite(e)?1/0:NaN;if(e>171)return 1/0;for(var n=e-2,s=e-1;n>1;)s*=n,n--;return 0==s&&(s=1),s}if(e<.5)return Math.PI/(Math.sin(Math.PI*e)*l(1-e));if(e>=171.35)return 1/0;if(e>85){var u=e*e,c=u*e,f=c*e,p=f*e;return Math.sqrt(2*Math.PI/e)*Math.pow(e/Math.E,e)*(1+1/(12*e)+1/(288*u)-139/(51840*c)-571/(2488320*f)+163879/(209018880*p)+5246819/(75246796800*p*e))}--e,r=o[0];for(var h=1;h1;)i=i.times(a),a--;return new e.BigNumber(i.toPrecision(e.BigNumber.precision))}(r.minus(1));if(!r.isFinite())return new e.BigNumber(r.isNegative()?NaN:1/0);throw new Error("Integer BigNumber expected")},"Array | Matrix":function(e){return n(e,l)}});return l.toTex={1:"\\Gamma\\left(${args[0]}\\right)"},l}},function(e,t,r){"use strict";var n=r(1);t.name="not",t.factory=function(e,t,i,a){var o=r(4),s=a("not",{number:function(e){return!e},Complex:function(e){return 0===e.re&&0===e.im},BigNumber:function(e){return e.isZero()||e.isNaN()},Unit:function(e){return s(e.value)},"Array | Matrix":function(e){return n(e,s)}});return s.toTex={1:o.operators.not+"\\left(${args[0]}\\right)"},s}},function(e,t,r){"use strict";function n(e,t){var r=i(t),n=function(i,a){return Array.isArray(i)?i.map(function(e,t){return n(e,a.concat(t))}):1===r?t(i):2===r?t(i,a):t(i,a,e)};return n(e,[])}var i=r(32).maxArgumentCount;t.name="map",t.factory=function(e,t,r,i){var a=i("map",{"Array, function":n,"Matrix, function":function(e,t){return e.map(t)}});return a.toTex=void 0,a}},function(e,t,r){"use strict";var n=r(2).size;t.name="sort",t.factory=function(e,t,i,a){function o(e){if("asc"===e)return f;if("desc"===e)return l;if("natural"===e)return p;throw new Error('String "asc", "desc", or "natural" expected')}function s(e){if(1!==n(e).length)throw new Error("One dimensional array expected")}function u(e){if(1!==e.size().length)throw new Error("One dimensional matrix expected")}var c=i(r(0)),f=i(r(51)),l=function(e,t){return-f(e,t)},p=i(r(31)),h=a("sort",{Array:function(e){return s(e),e.sort(f)},Matrix:function(e){return u(e),c(e.toArray().sort(f),e.storage())},"Array, function":function(e,t){return s(e),e.sort(t)},"Matrix, function":function(e,t){return u(e),c(e.toArray().sort(t),e.storage())},"Array, string":function(e,t){return s(e),e.sort(o(t))},"Matrix, string":function(e,t){return u(e),c(e.toArray().sort(o(t)),e.storage())}});return h.toTex=void 0,h}},function(e,t,r){"use strict";var n=r(42);t.name="sum",t.factory=function(e,t,i,a){function o(r){var i=void 0;if(n(r,function(e){i=void 0===i?e:s(i,e)}),void 0===i)switch(t.number){case"number":return 0;case"BigNumber":return new e.BigNumber(0);case"Fraction":return new e.Fraction(0);default:return 0}return i}var s=i(r(20)),u=a("sum",{"Array | Matrix":function(e){return o(e)},"Array | Matrix, number | BigNumber":function(){throw new Error("sum(A, dim) is not yet supported")},"...":function(e){return o(e)}});return u.toTex=void 0,u}},function(e,t,r){"use strict";var n=r(2).flatten,i=r(2).identify,a=r(2).generalize;t.name="setDifference",t.factory=function(e,t,o,s){var u=o(r(30)),c=o(r(27)),f=o(r(44)),l=o(r(28)),p=o(r(22)),h=o(r(31));return s("setDifference",{"Array | Matrix, Array | Matrix":function(e,t){if(0===p(l(e),new c(0)))var r=[];else{if(0===p(l(t),new c(0)))return n(e.toArray());for(var o,s=i(n(Array.isArray(e)?e:e.toArray()).sort(h)),m=i(n(Array.isArray(t)?t:t.toArray()).sort(h)),d=(r=[],0);d0&&(a=e[o]);return m(a,i)}var s=l(e,(t-1)/2);return h(s)}var u=a(r(20)),c=a(r(19)),f=a(r(51)),l=a(r(89)),p=o("median",{"Array | Matrix":s,"Array | Matrix, number | BigNumber":function(e,t){throw new Error("median(A, dim) is not yet supported")},"...":function(e){if(i(e))throw new TypeError("Scalar values expected in function median");return s(e)}}),h=o({"number | BigNumber | Complex | Unit":function(e){return e}}),m=o({"number | BigNumber | Complex | Unit, number | BigNumber | Complex | Unit":function(e,t){return c(u(e,t),2)}});return p.toTex=void 0,p}},function(e,t,r){"use strict";var n="unbiased",i=r(42);t.name="var",t.factory=function(e,t,a,o){function s(t,r){var n=0,a=0;if(0==t.length)throw new SyntaxError("Function var requires one or more parameters (0 provided)");if(i(t,function(e){n=u(n,e),a++}),0===a)throw new Error("Cannot calculate var of an empty array");var o=l(n,a);switch(n=0,i(t,function(e){var t=c(e,o);n=u(n,f(t,t))}),r){case"uncorrected":return l(n,a);case"biased":return l(n,a+1);case"unbiased":var s=e.isBigNumber(n)?new e.BigNumber(0):0;return 1==a?s:l(n,a-1);default:throw new Error('Unknown normalization "'+r+'". Choose "unbiased" (default), "uncorrected", or "biased".')}}var u=a(r(20)),c=a(r(21)),f=a(r(23)),l=a(r(19)),p=o("variance",{"Array | Matrix":function(e){return s(e,n)},"Array | Matrix, string":s,"...":function(e){return s(e,n)}});return p.toTex="\\mathrm{Var}\\left(${args}\\right)",p}},function(e,t,r){"use strict";var n=r(1),i=Math.acosh||function(e){return Math.log(Math.sqrt(e*e-1)+e)};t.name="acosh",t.factory=function(e,t,r,a){var o=a("acosh",{number:function(r){return r>=1||t.predictable?i(r):r<=-1?new e.Complex(Math.log(Math.sqrt(r*r-1)-r),Math.PI):new e.Complex(r,0).acosh()},Complex:function(e){return e.acosh()},BigNumber:function(e){return e.acosh()},"Array | Matrix":function(e){return n(e,o)}});return o.toTex={1:"\\cosh^{-1}\\left(${args[0]}\\right)"},o}},function(e,t,r){function n(e){var t=i.create(e);return t.create=n,t.import(r(159)),t}var i=r(152);e.exports=n()},function(e,t,r){e.exports=r(153)},function(e,t,r){var n=r(5).isFactory,i=r(154),a=r(91),o=r(157),s=r(158);t.create=function(e){function t(e){if(!n(e))throw new Error("Factory object with properties `type`, `name`, and `factory` expected");var i,a=r.indexOf(e);return-1===a?(i=!0===e.math?e.factory(c.type,f,t,c.typed,c):e.factory(c.type,f,t,c.typed),r.push(e),u.push(i)):i=u[a],i}if("function"!=typeof Object.create)throw new Error("ES5 not supported by this JavaScript engine. Please load the es5-shim and es5-sham library for compatibility.");var r=[],u=[],c=a.mixin({});c.type={},c.expression={transform:{},mathWithTransform:{}},c.typed=i.create(c.type);var f={epsilon:1e-12,matrix:"Matrix",number:"number",precision:64,predictable:!1,randomSeed:null};return c.import=t(o),c.config=t(s),c.expression.mathWithTransform.config=c.config,e&&c.config(e),c}},function(e,t,r){var n=r(155),i=r(3).digits,a=r(71),o=r(59),s=function(){return s=n.create,n};t.create=function(e){e.isNumber=function(e){return"number"==typeof e},e.isComplex=function(t){return e.Complex&&t instanceof e.Complex||!1},e.isBigNumber=a,e.isFraction=function(t){return e.Fraction&&t instanceof e.Fraction||!1},e.isUnit=function(e){return e&&e.constructor.prototype.isUnit||!1},e.isString=function(e){return"string"==typeof e},e.isArray=Array.isArray,e.isMatrix=o,e.isDenseMatrix=function(e){return e&&e.isDenseMatrix&&e.constructor.prototype.isMatrix||!1},e.isSparseMatrix=function(e){return e&&e.isSparseMatrix&&e.constructor.prototype.isMatrix||!1},e.isRange=function(e){return e&&e.constructor.prototype.isRange||!1},e.isIndex=function(e){return e&&e.constructor.prototype.isIndex||!1},e.isBoolean=function(e){return"boolean"==typeof e},e.isResultSet=function(e){return e&&e.constructor.prototype.isResultSet||!1},e.isHelp=function(e){return e&&e.constructor.prototype.isHelp||!1},e.isFunction=function(e){return"function"==typeof e},e.isDate=function(e){return e instanceof Date},e.isRegExp=function(e){return e instanceof RegExp},e.isObject=function(e){return"object"==typeof e},e.isNull=function(e){return null===e},e.isUndefined=function(e){return void 0===e},e.isAccessorNode=function(e){return e&&e.isAccessorNode&&e.constructor.prototype.isNode||!1},e.isArrayNode=function(e){return e&&e.isArrayNode&&e.constructor.prototype.isNode||!1},e.isAssignmentNode=function(e){return e&&e.isAssignmentNode&&e.constructor.prototype.isNode||!1},e.isBlockNode=function(e){return e&&e.isBlockNode&&e.constructor.prototype.isNode||!1},e.isConditionalNode=function(e){return e&&e.isConditionalNode&&e.constructor.prototype.isNode||!1},e.isConstantNode=function(e){return e&&e.isConstantNode&&e.constructor.prototype.isNode||!1},e.isFunctionAssignmentNode=function(e){return e&&e.isFunctionAssignmentNode&&e.constructor.prototype.isNode||!1},e.isFunctionNode=function(e){return e&&e.isFunctionNode&&e.constructor.prototype.isNode||!1},e.isIndexNode=function(e){return e&&e.isIndexNode&&e.constructor.prototype.isNode||!1},e.isNode=function(e){return e&&e.isNode&&e.constructor.prototype.isNode||!1},e.isObjectNode=function(e){return e&&e.isObjectNode&&e.constructor.prototype.isNode||!1},e.isOperatorNode=function(e){return e&&e.isOperatorNode&&e.constructor.prototype.isNode||!1},e.isParenthesisNode=function(e){return e&&e.isParenthesisNode&&e.constructor.prototype.isNode||!1},e.isRangeNode=function(e){return e&&e.isRangeNode&&e.constructor.prototype.isNode||!1},e.isSymbolNode=function(e){return e&&e.isSymbolNode&&e.constructor.prototype.isNode||!1},e.isChain=function(e){return e&&e.constructor.prototype.isChain||!1};var t=s();return t.types=[{name:"number",test:e.isNumber},{name:"Complex",test:e.isComplex},{name:"BigNumber",test:e.isBigNumber},{name:"Fraction",test:e.isFraction},{name:"Unit",test:e.isUnit},{name:"string",test:e.isString},{name:"Array",test:e.isArray},{name:"Matrix",test:e.isMatrix},{name:"DenseMatrix",test:e.isDenseMatrix},{name:"SparseMatrix",test:e.isSparseMatrix},{name:"Range",test:e.isRange},{name:"Index",test:e.isIndex},{name:"boolean",test:e.isBoolean},{name:"ResultSet",test:e.isResultSet},{name:"Help",test:e.isHelp},{name:"function",test:e.isFunction},{name:"Date",test:e.isDate},{name:"RegExp",test:e.isRegExp},{name:"Object",test:e.isObject},{name:"null",test:e.isNull},{name:"undefined",test:e.isUndefined},{name:"OperatorNode",test:e.isOperatorNode},{name:"ConstantNode",test:e.isConstantNode},{name:"SymbolNode",test:e.isSymbolNode},{name:"ParenthesisNode",test:e.isParenthesisNode},{name:"FunctionNode",test:e.isFunctionNode},{name:"FunctionAssignmentNode",test:e.isFunctionAssignmentNode},{name:"ArrayNode",test:e.isArrayNode},{name:"AssignmentNode",test:e.isAssignmentNode},{name:"BlockNode",test:e.isBlockNode},{name:"ConditionalNode",test:e.isConditionalNode},{name:"IndexNode",test:e.isIndexNode},{name:"RangeNode",test:e.isRangeNode},{name:"Node",test:e.isNode}],t.conversions=[{from:"number",to:"BigNumber",convert:function(t){if(i(t)>15)throw new TypeError("Cannot implicitly convert a number with >15 significant digits to BigNumber (value: "+t+"). Use function bignumber(x) to convert to BigNumber.");return new e.BigNumber(t)}},{from:"number",to:"Complex",convert:function(t){return new e.Complex(t,0)}},{from:"number",to:"string",convert:function(e){return e+""}},{from:"BigNumber",to:"Complex",convert:function(t){return new e.Complex(t.toNumber(),0)}},{from:"Fraction",to:"BigNumber",convert:function(e){throw new TypeError("Cannot implicitly convert a Fraction to BigNumber or vice versa. Use function bignumber(x) to convert to BigNumber or fraction(x) to convert to Fraction.")}},{from:"Fraction",to:"Complex",convert:function(t){return new e.Complex(t.valueOf(),0)}},{from:"number",to:"Fraction",convert:function(t){if(new e.Fraction(t).valueOf()!==t)throw new TypeError("Cannot implicitly convert a number to a Fraction when there will be a loss of precision (value: "+t+"). Use function fraction(x) to convert to Fraction.");return new e.Fraction(t)}},{from:"string",to:"number",convert:function(e){var t=Number(e);if(isNaN(t))throw new Error('Cannot convert "'+e+'" to a number');return t}},{from:"string",to:"BigNumber",convert:function(t){try{return new e.BigNumber(t)}catch(e){throw new Error('Cannot convert "'+t+'" to BigNumber')}}},{from:"string",to:"Fraction",convert:function(t){try{return new e.Fraction(t)}catch(e){throw new Error('Cannot convert "'+t+'" to Fraction')}}},{from:"string",to:"Complex",convert:function(t){try{return new e.Complex(t)}catch(e){throw new Error('Cannot convert "'+t+'" to Complex')}}},{from:"boolean",to:"number",convert:function(e){return+e}},{from:"boolean",to:"BigNumber",convert:function(t){return new e.BigNumber(+t)}},{from:"boolean",to:"Fraction",convert:function(t){return new e.Fraction(+t)}},{from:"boolean",to:"string",convert:function(e){return+e}},{from:"null",to:"number",convert:function(){return 0}},{from:"null",to:"string",convert:function(){return"null"}},{from:"null",to:"BigNumber",convert:function(){return new e.BigNumber(0)}},{from:"null",to:"Fraction",convert:function(){return new e.Fraction(0)}},{from:"Array",to:"Matrix",convert:function(t){return new e.DenseMatrix(t)}},{from:"Matrix",to:"Array",convert:function(e){return e.valueOf()}}],t}},function(e,t,r){"use strict";var n,i,a;!function(r,o){i=[],void 0===(a="function"==typeof(n=o)?n.apply(t,i):n)||(e.exports=a)}(0,function(){function e(){function t(e){for(var t,r=0;rr&&!c?"Unexpected type of argument in function "+u+" (expected: "+s.join(" or ")+", actual: "+o+", index: "+r+")":"Too few arguments in function "+u+" (expected: "+s.join(" or ")+", index: "+r+")":"Too many arguments in function "+u+" (expected: "+r+", actual: "+t+")";var h=new TypeError(a);return h.data=p,h}function i(e){this.name=e||"refs",this.categories={}}function a(e,t){if("string"==typeof e){var r=e.trim(),n="..."===r.substr(0,3);if(n&&(r=r.substr(3)),""===r)this.types=["any"];else{this.types=r.split("|");for(var i=0;it&&(t=n)}return t}(a));c.push("function "+f+"("+p.join(", ")+") {"),c.push(' "use strict";'),c.push(" var name = "+JSON.stringify(e||"")+";"),c.push(s.toCode(r," ",!1)),c.push("}");var h=[r.toCode(),"return "+c.join("\n")].join("\n"),m=new Function(r.name,"createError",h)(r,n);return m.signatures=function(e){for(var t={},r=0;r0},a.prototype.contains=function(e){for(var t=0;tt.params.length)return 1;if(e.params.lengtho)return 1;if(i "+i+") {"),n.push(r+" var varArgs = [];"),n.push(r+" for (var i = "+i+"; i < arguments.length; i++) {"),n.push(r+" varArgs.push(arguments[i]);"),n.push(r+" }"),n.push(this.signature.toCode(e,r+" ")),n.push(r+"}");else{for(var s=function(r,n){for(var i=[],a=0;a "+r+") {",t+" throw createError(name, arguments.length, "+r+", arguments["+r+"]);",t+"}"].join("\n");for(var n={},i=[],a=0;a0){for(a+=o,t=1;tr)throw Error(Ee+e)}function s(e,t,r,n){var i,a,o,s;for(a=e[0];a>=10;a/=10)--t;return--t<0?(t+=Ie,i=0):(i=Math.ceil((t+1)/Ie),t%=Ie),a=Te(10,Ie-t),s=e[i]%a|0,null==n?t<3?(0==t?s=s/100|0:1==t&&(s=s/10|0),o=r<4&&99999==s||r>3&&49999==s||5e4==s||0==s):o=(r<4&&s+1==a||r>3&&s+1==a/2)&&(e[i+1]/a/100|0)==Te(10,t-2)-1||(s==a/2||0==s)&&0==(e[i+1]/a/100|0):t<4?(0==t?s=s/1e3|0:1==t?s=s/100|0:2==t&&(s=s/10|0),o=(n||r<4)&&9999==s||!n&&r>3&&4999==s):o=((n||r<4)&&s+1==a||!n&&r>3&&s+1==a/2)&&(e[i+1]/a/1e3|0)==Te(10,t-3)-1,o}function u(e,t,r){for(var n,i,a=[0],o=0,s=e.length;or-1&&(void 0===a[n+1]&&(a[n+1]=0),a[n+1]+=a[n]/r|0,a[n]%=r)}return a.reverse()}function c(e,t,r,n){var i,a,o,s,u,c,f,l,p,h=e.constructor;e:if(null!=t){if(!(l=e.d))return e;for(i=1,s=l[0];s>=10;s/=10)i++;if((a=t-i)<0)a+=Ie,o=t,u=(f=l[p=0])/Te(10,i-o-1)%10|0;else if(p=Math.ceil((a+1)/Ie),s=l.length,p>=s){if(!n)break e;for(;s++<=p;)l.push(0);f=u=0,i=1,o=(a%=Ie)-Ie+1}else{for(f=s=l[p],i=1;s>=10;s/=10)i++;u=(o=(a%=Ie)-Ie+i)<0?0:f/Te(10,i-o-1)%10|0}if(n=n||t<0||void 0!==l[p+1]||(o<0?f:f%Te(10,i-o-1)),c=r<4?(u||n)&&(0==r||r==(e.s<0?3:2)):u>5||5==u&&(4==r||n||6==r&&(a>0?o>0?f/Te(10,i-o):0:l[p-1])%10&1||r==(e.s<0?8:7)),t<1||!l[0])return l.length=0,c?(t-=e.e+1,l[0]=Te(10,(Ie-t%Ie)%Ie),e.e=-t||0):l[0]=e.e=0,e;if(0==a?(l.length=p,s=1,p--):(l.length=p+1,s=Te(10,Ie-a),l[p]=o>0?(f/Te(10,i-o)%Te(10,o)|0)*s:0),c)for(;;){if(0==p){for(a=1,o=l[0];o>=10;o/=10)a++;for(o=l[0]+=s,s=1;o>=10;o/=10)s++;a!=s&&(e.e++,l[0]==ke&&(l[0]=1));break}if(l[p]+=s,l[p]!=ke)break;l[p--]=0,s=1}for(a=l.length;0===l[--a];)l.pop()}return be&&(e.e>h.maxE?(e.d=null,e.e=NaN):e.e0?o=o.charAt(0)+"."+o.slice(1)+d(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(e.e<0?"e":"e+")+e.e):i<0?(o="0."+d(-i-1)+o,r&&(n=r-s)>0&&(o+=d(n))):i>=s?(o+=d(i+1-s),r&&(n=r-i-1)>0&&(o=o+"."+d(n))):((n=i+1)0&&(i+1===s&&(o+="."),o+=d(n))),o}function l(e,t){var r=e[0];for(t*=Ie;r>=10;r/=10)t++;return t}function p(e,t,r){if(t>Be)throw be=!0,r&&(e.precision=r),Error(Me);return c(new e(ye),t,1,!0)}function h(e,t,r){if(t>Pe)throw Error(Me);return c(new e(xe),t,r,!0)}function m(e){var t=e.length-1,r=t*Ie+1;if(t=e[t]){for(;t%10==0;t/=10)r--;for(t=e[0];t>=10;t/=10)r++}return r}function d(e){for(var t="";e--;)t+="0";return t}function g(e,t,r,n){var i,a=new e(1),o=Math.ceil(n/Ie+4);for(be=!1;;){if(r%2&&O((a=a.times(t)).d,o)&&(i=!0),0===(r=Oe(r/2))){r=a.d.length-1,i&&0===a.d[r]&&++a.d[r];break}O((t=t.times(t)).d,o)}return be=!0,a}function v(e){return 1&e.d[e.d.length-1]}function y(e,t,r){for(var n,i=new e(t[0]),a=0;++a17)return new d(e.d?e.d[0]?e.s<0?0:1/0:1:e.s?e.s<0?0:e:NaN);for(null==t?(be=!1,l=v):l=t,f=new d(.03125);e.e>-2;)e=e.times(f),m+=5;for(l+=n=Math.log(Te(2,m))/Math.LN10*2+5|0,r=o=u=new d(1),d.precision=l;;){if(o=c(o.times(e),l,1),r=r.times(++h),f=u.plus(Ue(o,r,l,1)),a(f.d).slice(0,l)===a(u.d).slice(0,l)){for(i=m;i--;)u=c(u.times(u),l,1);if(null!=t)return d.precision=v,u;if(!(p<3&&s(u.d,l-n,g,p)))return c(u,d.precision=v,g,be=!0);d.precision=l+=10,r=o=f=new d(1),h=0,p++}u=f}}function w(e,t){var r,n,i,o,u,f,l,h,m,d,g,v=1,y=e,x=y.d,b=y.constructor,N=b.rounding,E=b.precision;if(y.s<0||!x||!x[0]||!y.e&&1==x[0]&&1==x.length)return new b(x&&!x[0]?-1/0:1!=y.s?NaN:x?0:y);if(null==t?(be=!1,m=E):m=t,b.precision=m+=10,r=a(x),n=r.charAt(0),!(Math.abs(o=y.e)<15e14))return h=p(b,m+2,E).times(o+""),y=w(new b(n+"."+r.slice(1)),m-10).plus(h),b.precision=E,null==t?c(y,E,N,be=!0):y;for(;n<7&&1!=n||1==n&&r.charAt(1)>3;)n=(r=a((y=y.times(e)).d)).charAt(0),v++;for(o=y.e,n>1?(y=new b("0."+r),o++):y=new b(n+"."+r.slice(1)),d=y,l=u=y=Ue(y.minus(1),y.plus(1),m,1),g=c(y.times(y),m,1),i=3;;){if(u=c(u.times(g),m,1),h=l.plus(Ue(u,new b(i),m,1)),a(h.d).slice(0,m)===a(l.d).slice(0,m)){if(l=l.times(2),0!==o&&(l=l.plus(p(b,m+2,E).times(o+""))),l=Ue(l,new b(v),m,1),null!=t)return b.precision=E,l;if(!s(l.d,m-10,N,f))return c(l,b.precision=E,N,be=!0);b.precision=m+=10,h=u=y=Ue(d.minus(1),d.plus(1),m,1),g=c(y.times(y),m,1),i=f=1}l=h,i+=2}}function b(e){return String(e.s*e.s/0)}function N(e,t){var r,n,i;for((r=t.indexOf("."))>-1&&(t=t.replace(".","")),(n=t.search(/e/i))>0?(r<0&&(r=n),r+=+t.slice(n+1),t=t.substring(0,n)):r<0&&(r=t.length),n=0;48===t.charCodeAt(n);n++);for(i=t.length;48===t.charCodeAt(i-1);--i);if(t=t.slice(n,i)){if(i-=n,e.e=r=r-n-1,e.d=[],n=(r+1)%Ie,r<0&&(n+=Ie),ne.constructor.maxE?(e.d=null,e.e=NaN):e.e=0&&(h=h.replace(".",""),(d=new g(1)).e=h.length-s,d.d=u(f(d),10,i),d.e=d.d.length),a=l=(m=u(h,10,i)).length;0==m[--l];)m.pop();if(m[0]){if(s<0?a--:((e=new g(e)).d=m,e.e=a,m=(e=Ue(e,d,r,n,0,i)).d,a=e.e,p=he),s=m[r],c=i/2,p=p||void 0!==m[r+1],p=n<4?(void 0!==s||p)&&(0===n||n===(e.s<0?3:2)):s>c||s===c&&(4===n||p||6===n&&1&m[r-1]||n===(e.s<0?8:7)),m.length=r,p)for(;++m[--r]>i-1;)m[r]=0,r||(++a,m.unshift(1));for(l=m.length;!m[l-1];--l);for(s=0,h="";s1)if(16==t||8==t){for(s=16==t?4:3,--l;l%s;l++)h+="0";for(l=(m=u(h,i,t)).length;!m[l-1];--l);for(s=1,h="1.";sl)for(a-=l;a--;)h+="0";else at)return e.length=t,!0}function T(e){return new this(e).abs()}function S(e){return new this(e).acos()}function _(e){return new this(e).acosh()}function C(e,t){return new this(e).plus(t)}function z(e){return new this(e).asin()}function k(e){return new this(e).asinh()}function I(e){return new this(e).atan()}function B(e){return new this(e).atanh()}function P(e,t){e=new this(e),t=new this(t);var r,n=this.precision,i=this.rounding,a=n+4;return e.s&&t.s?e.d||t.d?!t.d||e.isZero()?(r=t.s<0?h(this,n,i):new this(0)).s=e.s:!e.d||t.isZero()?(r=h(this,a,1).times(.5)).s=e.s:t.s<0?(this.precision=a,this.rounding=1,r=this.atan(Ue(e,t,a,1)),t=h(this,a,1),this.precision=n,this.rounding=i,r=e.s<0?r.minus(t):r.plus(t)):r=this.atan(Ue(e,t,a,1)):(r=h(this,a,1).times(t.s>0?.25:.75)).s=e.s:r=new this(NaN),r}function R(e){return new this(e).cbrt()}function U(e){return c(e=new this(e),e.e+1,2)}function q(e){if(!e||"object"!=typeof e)throw Error(Ne+"Object expected");var t,r,n,i=!0===e.defaults,a=["precision",1,ge,"rounding",0,8,"toExpNeg",-de,0,"toExpPos",0,de,"maxE",0,de,"minE",-de,0,"modulo",0,9];for(t=0;t=a[t+1]&&n<=a[t+2]))throw Error(Ee+r+": "+n);this[r]=n}if(r="crypto",i&&(this[r]=we[r]),void 0!==(n=e[r])){if(!0!==n&&!1!==n&&0!==n&&1!==n)throw Error(Ee+r+": "+n);if(n){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw Error(Ae);this[r]=!0}else this[r]=!1}return this}function L(e){return new this(e).cos()}function j(e){return new this(e).cosh()}function F(e){function t(e){var r,n,i;if(!(this instanceof t))return new t(e);if(this.constructor=t,e instanceof t)return this.s=e.s,this.e=e.e,void(this.d=(e=e.d)?e.slice():e);if("number"==(i=typeof e)){if(0===e)return this.s=1/e<0?-1:1,this.e=0,void(this.d=[0]);if(e<0?(e=-e,this.s=-1):this.s=1,e===~~e&&e<1e7){for(r=0,n=e;n>=10;n/=10)r++;return this.e=r,void(this.d=[e])}return 0*e!=0?(e||(this.s=NaN),this.e=NaN,void(this.d=null)):N(this,e.toString())}if("string"!==i)throw Error(Ee+e);return 45===e.charCodeAt(0)?(e=e.slice(1),this.s=-1):this.s=1,ze.test(e)?N(this,e):function(e,t){var r,n,i,a,o,s,c,f,p;if("Infinity"===t||"NaN"===t)return+t||(e.s=NaN),e.e=NaN,e.d=null,e;if(_e.test(t))r=16,t=t.toLowerCase();else if(Se.test(t))r=2;else{if(!Ce.test(t))throw Error(Ee+t);r=8}for((a=t.search(/p/i))>0?(c=+t.slice(a+1),t=t.substring(2,a)):t=t.slice(2),o=(a=t.indexOf("."))>=0,n=e.constructor,o&&(a=(s=(t=t.replace(".","")).length)-a,i=g(n,new n(r),a,2*a)),a=p=(f=u(t,r,ke)).length-1;0===f[a];--a)f.pop();return a<0?new n(0*e.s):(e.e=l(f,p),e.d=f,be=!1,o&&(e=Ue(e,i,4*s)),c&&(e=e.times(Math.abs(c)<54?Math.pow(2,c):pe.pow(2,c))),be=!0,e)}(this,e)}var r,n,i;if(t.prototype=Re,t.ROUND_UP=0,t.ROUND_DOWN=1,t.ROUND_CEIL=2,t.ROUND_FLOOR=3,t.ROUND_HALF_UP=4,t.ROUND_HALF_DOWN=5,t.ROUND_HALF_EVEN=6,t.ROUND_HALF_CEIL=7,t.ROUND_HALF_FLOOR=8,t.EUCLID=9,t.config=t.set=q,t.clone=F,t.isDecimal=Z,t.abs=T,t.acos=S,t.acosh=_,t.add=C,t.asin=z,t.asinh=k,t.atan=I,t.atanh=B,t.atan2=P,t.cbrt=R,t.ceil=U,t.cos=L,t.cosh=j,t.div=D,t.exp=H,t.floor=$,t.hypot=G,t.ln=V,t.log=W,t.log10=X,t.log2=Y,t.max=J,t.min=Q,t.mod=K,t.mul=ee,t.pow=te,t.random=re,t.round=ne,t.sign=ie,t.sin=ae,t.sinh=oe,t.sqrt=se,t.sub=ue,t.tan=ce,t.tanh=fe,t.trunc=le,void 0===e&&(e={}),e&&!0!==e.defaults)for(i=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],r=0;r=429e7?t[a]=crypto.getRandomValues(new Uint32Array(1))[0]:u[a++]=i%1e7;else{if(!crypto.randomBytes)throw Error(Ae);for(t=crypto.randomBytes(n*=4);a=214e7?crypto.randomBytes(4).copy(t,a):(u.push(i%1e7),a+=4);a=n/4}else for(;a=10;i/=10)n++;ne.e^s<0?1:-1;for(t=0,r=(n=a.length)<(i=o.length)?n:i;to[t]^s<0?1:-1;return n===i?0:n>i^s<0?1:-1},Re.cosine=Re.cos=function(){var e,t,r=this,n=r.constructor;return r.d?r.d[0]?(e=n.precision,t=n.rounding,n.precision=e+Math.max(r.e,r.sd())+Ie,n.rounding=1,r=function(e,t){var r,n,i=t.d.length;i<32?(r=Math.ceil(i/3),n=Math.pow(4,-r).toString()):(r=16,n="2.3283064365386962890625e-10"),e.precision+=r,t=E(e,1,t.times(n),new e(1));for(var a=r;a--;){var o=t.times(t);t=o.times(o).minus(o).times(8).plus(1)}return e.precision-=r,t}(n,M(n,r)),n.precision=e,n.rounding=t,c(2==me||3==me?r.neg():r,e,t,!0)):new n(1):new n(NaN)},Re.cubeRoot=Re.cbrt=function(){var e,t,r,n,i,o,s,u,f,l,p=this.constructor;if(!this.isFinite()||this.isZero())return new p(this);for(be=!1,(o=this.s*Math.pow(this.s*this,1/3))&&Math.abs(o)!=1/0?n=new p(o.toString()):(r=a(this.d),(o=((e=this.e)-r.length+1)%3)&&(r+=1==o||-2==o?"0":"00"),o=Math.pow(r,1/3),e=Oe((e+1)/3)-(e%3==(e<0?-1:2)),(n=new p(r=o==1/0?"5e"+e:(r=o.toExponential()).slice(0,r.indexOf("e")+1)+e)).s=this.s),s=(e=p.precision)+3;;)if(u=n,f=u.times(u).times(u),l=f.plus(this),n=Ue(l.plus(this).times(u),l.plus(f),s+2,1),a(u.d).slice(0,s)===(r=a(n.d)).slice(0,s)){if("9999"!=(r=r.slice(s-3,s+1))&&(i||"4999"!=r)){+r&&(+r.slice(1)||"5"!=r.charAt(0))||(c(n,e+1,1),t=!n.times(n).times(n).eq(this));break}if(!i&&(c(u,e+1,0),u.times(u).times(u).eq(this))){n=u;break}s+=4,i=1}return be=!0,c(n,e,p.rounding,t)},Re.decimalPlaces=Re.dp=function(){var e,t=this.d,r=NaN;if(t){if(e=t.length-1,r=(e-Oe(this.e/Ie))*Ie,e=t[e])for(;e%10==0;e/=10)r--;r<0&&(r=0)}return r},Re.dividedBy=Re.div=function(e){return Ue(this,new this.constructor(e))},Re.dividedToIntegerBy=Re.divToInt=function(e){var t=this.constructor;return c(Ue(this,new t(e),0,1,1),t.precision,t.rounding)},Re.equals=Re.eq=function(e){return 0===this.cmp(e)},Re.floor=function(){return c(new this.constructor(this),this.e+1,3)},Re.greaterThan=Re.gt=function(e){return this.cmp(e)>0},Re.greaterThanOrEqualTo=Re.gte=function(e){var t=this.cmp(e);return 1==t||0===t},Re.hyperbolicCosine=Re.cosh=function(){var e,t,r,n,i,a=this,o=a.constructor,s=new o(1);if(!a.isFinite())return new o(a.s?1/0:NaN);if(a.isZero())return s;r=o.precision,n=o.rounding,o.precision=r+Math.max(a.e,a.sd())+4,o.rounding=1,(i=a.d.length)<32?(e=Math.ceil(i/3),t=Math.pow(4,-e).toString()):(e=16,t="2.3283064365386962890625e-10"),a=E(o,1,a.times(t),new o(1),!0);for(var u,f=e,l=new o(8);f--;)u=a.times(a),a=s.minus(u.times(l.minus(u.times(l))));return c(a,o.precision=r,o.rounding=n,!0)},Re.hyperbolicSine=Re.sinh=function(){var e,t,r,n,i=this,a=i.constructor;if(!i.isFinite()||i.isZero())return new a(i);if(t=a.precision,r=a.rounding,a.precision=t+Math.max(i.e,i.sd())+4,a.rounding=1,(n=i.d.length)<3)i=E(a,2,i,i,!0);else{e=(e=1.4*Math.sqrt(n))>16?16:0|e,i=E(a,2,i=i.times(Math.pow(5,-e)),i,!0);for(var o,s=new a(5),u=new a(16),f=new a(20);e--;)o=i.times(i),i=i.times(s.plus(o.times(u.times(o).plus(f))))}return a.precision=t,a.rounding=r,c(i,t,r,!0)},Re.hyperbolicTangent=Re.tanh=function(){var e,t,r=this.constructor;return this.isFinite()?this.isZero()?new r(this):(e=r.precision,t=r.rounding,r.precision=e+7,r.rounding=1,Ue(this.sinh(),this.cosh(),r.precision=e,r.rounding=t)):new r(this.s)},Re.inverseCosine=Re.acos=function(){var e,t=this,r=t.constructor,n=t.abs().cmp(1),i=r.precision,a=r.rounding;return-1!==n?0===n?t.isNeg()?h(r,i,a):new r(0):new r(NaN):t.isZero()?h(r,i+4,a).times(.5):(r.precision=i+6,r.rounding=1,t=t.asin(),e=h(r,i+4,a).times(.5),r.precision=i,r.rounding=a,e.minus(t))},Re.inverseHyperbolicCosine=Re.acosh=function(){var e,t,r=this,n=r.constructor;return r.lte(1)?new n(r.eq(1)?0:NaN):r.isFinite()?(e=n.precision,t=n.rounding,n.precision=e+Math.max(Math.abs(r.e),r.sd())+4,n.rounding=1,be=!1,r=r.times(r).minus(1).sqrt().plus(r),be=!0,n.precision=e,n.rounding=t,r.ln()):new n(r)},Re.inverseHyperbolicSine=Re.asinh=function(){var e,t,r=this,n=r.constructor;return!r.isFinite()||r.isZero()?new n(r):(e=n.precision,t=n.rounding,n.precision=e+2*Math.max(Math.abs(r.e),r.sd())+6,n.rounding=1,be=!1,r=r.times(r).plus(1).sqrt().plus(r),be=!0,n.precision=e,n.rounding=t,r.ln())},Re.inverseHyperbolicTangent=Re.atanh=function(){var e,t,r,n,i=this,a=i.constructor;return i.isFinite()?i.e>=0?new a(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(e=a.precision,t=a.rounding,n=i.sd(),Math.max(n,e)<2*-i.e-1?c(new a(i),e,t,!0):(a.precision=r=n-i.e,i=Ue(i.plus(1),new a(1).minus(i),r+e,1),a.precision=e+4,a.rounding=1,i=i.ln(),a.precision=e,a.rounding=t,i.times(.5))):new a(NaN)},Re.inverseSine=Re.asin=function(){var e,t,r,n,i=this,a=i.constructor;return i.isZero()?new a(i):(t=i.abs().cmp(1),r=a.precision,n=a.rounding,-1!==t?0===t?(e=h(a,r+4,n).times(.5),e.s=i.s,e):new a(NaN):(a.precision=r+6,a.rounding=1,i=i.div(new a(1).minus(i.times(i)).sqrt().plus(1)).atan(),a.precision=r,a.rounding=n,i.times(2)))},Re.inverseTangent=Re.atan=function(){var e,t,r,n,i,a,o,s,u,f=this,l=f.constructor,p=l.precision,m=l.rounding;if(f.isFinite()){if(f.isZero())return new l(f);if(f.abs().eq(1)&&p+4<=Pe)return o=h(l,p+4,m).times(.25),o.s=f.s,o}else{if(!f.s)return new l(NaN);if(p+4<=Pe)return o=h(l,p+4,m).times(.5),o.s=f.s,o}for(l.precision=s=p+10,l.rounding=1,e=r=Math.min(28,s/Ie+2|0);e;--e)f=f.div(f.times(f).plus(1).sqrt().plus(1));for(be=!1,t=Math.ceil(s/Ie),n=1,u=f.times(f),o=new l(f),i=f;-1!==e;)if(i=i.times(u),a=o.minus(i.div(n+=2)),i=i.times(u),void 0!==(o=a.plus(i.div(n+=2))).d[t])for(e=t;o.d[e]===a.d[e]&&e--;);return r&&(o=o.times(2<this.d.length-2},Re.isNaN=function(){return!this.s},Re.isNegative=Re.isNeg=function(){return this.s<0},Re.isPositive=Re.isPos=function(){return this.s>0},Re.isZero=function(){return!!this.d&&0===this.d[0]},Re.lessThan=Re.lt=function(e){return this.cmp(e)<0},Re.lessThanOrEqualTo=Re.lte=function(e){return this.cmp(e)<1},Re.logarithm=Re.log=function(e){var t,r,n,i,o,u,f,l,h=this.constructor,m=h.precision,d=h.rounding;if(null==e)e=new h(10),t=!0;else{if(e=new h(e),r=e.d,e.s<0||!r||!r[0]||e.eq(1))return new h(NaN);t=e.eq(10)}if(r=this.d,this.s<0||!r||!r[0]||this.eq(1))return new h(r&&!r[0]?-1/0:1!=this.s?NaN:r?0:1/0);if(t)if(r.length>1)o=!0;else{for(i=r[0];i%10==0;)i/=10;o=1!==i}if(be=!1,f=m+5,u=w(this,f),n=t?p(h,f+10):w(e,f),l=Ue(u,n,f,1),s(l.d,i=m,d))do{if(f+=10,u=w(this,f),n=t?p(h,f+10):w(e,f),l=Ue(u,n,f,1),!o){+a(l.d).slice(i+1,i+15)+1==1e14&&(l=c(l,m+1,0));break}}while(s(l.d,i+=10,d));return be=!0,c(l,m,d)},Re.minus=Re.sub=function(e){var t,r,n,i,a,o,s,u,f,p,h,m,d=this.constructor;if(e=new d(e),!this.d||!e.d)return this.s&&e.s?this.d?e.s=-e.s:e=new d(e.d||this.s!==e.s?this:NaN):e=new d(NaN),e;if(this.s!=e.s)return e.s=-e.s,this.plus(e);if(f=this.d,m=e.d,s=d.precision,u=d.rounding,!f[0]||!m[0]){if(m[0])e.s=-e.s;else{if(!f[0])return new d(3===u?-0:0);e=new d(this)}return be?c(e,s,u):e}if(r=Oe(e.e/Ie),p=Oe(this.e/Ie),f=f.slice(),a=p-r){for((h=a<0)?(t=f,a=-a,o=m.length):(t=m,r=p,o=f.length),a>(n=Math.max(Math.ceil(s/Ie),o)+2)&&(a=n,t.length=1),t.reverse(),n=a;n--;)t.push(0);t.reverse()}else{for((h=(n=f.length)<(o=m.length))&&(o=n),n=0;n0;--n)f[o++]=0;for(n=m.length;n>a;){if(f[--n](o=(a=Math.ceil(s/Ie))>o?a+1:o+1)&&(i=o,r.length=1),r.reverse();i--;)r.push(0);r.reverse()}for((o=f.length)-(i=p.length)<0&&(i=o,r=p,p=f,f=r),t=0;i;)t=(f[--i]=f[i]+p[i]+t)/ke|0,f[i]%=ke;for(t&&(f.unshift(t),++n),o=f.length;0==f[--o];)f.pop();return e.d=f,e.e=l(f,n),be?c(e,s,u):e},Re.precision=Re.sd=function(e){var t;if(void 0!==e&&e!==!!e&&1!==e&&0!==e)throw Error(Ee+e);return this.d?(t=m(this.d),e&&this.e+1>t&&(t=this.e+1)):t=NaN,t},Re.round=function(){var e=this.constructor;return c(new e(this),this.e+1,e.rounding)},Re.sine=Re.sin=function(){var e,t,r=this,n=r.constructor;return r.isFinite()?r.isZero()?new n(r):(e=n.precision,t=n.rounding,n.precision=e+Math.max(r.e,r.sd())+Ie,n.rounding=1,r=function(e,t){var r,n=t.d.length;if(n<3)return E(e,2,t,t);r=(r=1.4*Math.sqrt(n))>16?16:0|r,t=E(e,2,t=t.times(Math.pow(5,-r)),t);for(var i,a=new e(5),o=new e(16),s=new e(20);r--;)i=t.times(t),t=t.times(a.plus(i.times(o.times(i).minus(s))));return t}(n,M(n,r)),n.precision=e,n.rounding=t,c(me>2?r.neg():r,e,t,!0)):new n(NaN)},Re.squareRoot=Re.sqrt=function(){var e,t,r,n,i,o,s=this.d,u=this.e,f=this.s,l=this.constructor;if(1!==f||!s||!s[0])return new l(!f||f<0&&(!s||s[0])?NaN:s?this:1/0);for(be=!1,0==(f=Math.sqrt(+this))||f==1/0?(((t=a(s)).length+u)%2==0&&(t+="0"),f=Math.sqrt(t),u=Oe((u+1)/2)-(u<0||u%2),n=new l(t=f==1/0?"1e"+u:(t=f.toExponential()).slice(0,t.indexOf("e")+1)+u)):n=new l(f.toString()),r=(u=l.precision)+3;;)if(o=n,n=o.plus(Ue(this,o,r+2,1)).times(.5),a(o.d).slice(0,r)===(t=a(n.d)).slice(0,r)){if("9999"!=(t=t.slice(r-3,r+1))&&(i||"4999"!=t)){+t&&(+t.slice(1)||"5"!=t.charAt(0))||(c(n,u+1,1),e=!n.times(n).eq(this));break}if(!i&&(c(o,u+1,0),o.times(o).eq(this))){n=o;break}r+=4,i=1}return be=!0,c(n,u,l.rounding,e)},Re.tangent=Re.tan=function(){var e,t,r=this,n=r.constructor;return r.isFinite()?r.isZero()?new n(r):(e=n.precision,t=n.rounding,n.precision=e+10,n.rounding=1,r=r.sin(),r.s=1,r=Ue(r,new n(1).minus(r.times(r)).sqrt(),e+10,0),n.precision=e,n.rounding=t,c(2==me||4==me?r.neg():r,e,t,!0)):new n(NaN)},Re.times=Re.mul=function(e){var t,r,n,i,a,o,s,u,f,p=this.constructor,h=this.d,m=(e=new p(e)).d;if(e.s*=this.s,!(h&&h[0]&&m&&m[0]))return new p(!e.s||h&&!h[0]&&!m||m&&!m[0]&&!h?NaN:h&&m?0*e.s:e.s/0);for(r=Oe(this.e/Ie)+Oe(e.e/Ie),(u=h.length)<(f=m.length)&&(a=h,h=m,m=a,o=u,u=f,f=o),a=[],n=o=u+f;n--;)a.push(0);for(n=f;--n>=0;){for(t=0,i=u+n;i>n;)s=a[i]+m[n]*h[i-n-1]+t,a[i--]=s%ke|0,t=s/ke|0;a[i]=(a[i]+t)%ke|0}for(;!a[--o];)a.pop();return t?++r:a.shift(),e.d=a,e.e=l(a,r),be?c(e,p.precision,p.rounding):e},Re.toBinary=function(e,t){return A(this,2,e,t)},Re.toDecimalPlaces=Re.toDP=function(e,t){var r=this,n=r.constructor;return r=new n(r),void 0===e?r:(o(e,0,ge),void 0===t?t=n.rounding:o(t,0,8),c(r,e+r.e+1,t))},Re.toExponential=function(e,t){var r,n=this,i=n.constructor;return void 0===e?r=f(n,!0):(o(e,0,ge),void 0===t?t=i.rounding:o(t,0,8),r=f(n=c(new i(n),e+1,t),!0,e+1)),n.isNeg()&&!n.isZero()?"-"+r:r},Re.toFixed=function(e,t){var r,n,i=this.constructor;return void 0===e?r=f(this):(o(e,0,ge),void 0===t?t=i.rounding:o(t,0,8),r=f(n=c(new i(this),e+this.e+1,t),!1,e+n.e+1)),this.isNeg()&&!this.isZero()?"-"+r:r},Re.toFraction=function(e){var t,r,n,i,o,s,u,c,f,l,p,h,d=this.d,g=this.constructor;if(!d)return new g(this);if(f=r=new g(1),n=c=new g(0),t=new g(n),o=t.e=m(d)-this.e-1,s=o%Ie,t.d[0]=Te(10,s<0?Ie+s:s),null==e)e=o>0?t:f;else{if(!(u=new g(e)).isInt()||u.lt(f))throw Error(Ee+u);e=u.gt(t)?o>0?t:f:u}for(be=!1,u=new g(a(d)),l=g.precision,g.precision=o=d.length*Ie*2;p=Ue(u,t,0,1,1),1!=(i=r.plus(p.times(n))).cmp(e);)r=n,n=i,i=f,f=c.plus(p.times(i)),c=i,i=t,t=u.minus(p.times(i)),u=i;return i=Ue(e.minus(r),n,0,1,1),c=c.plus(i.times(f)),r=r.plus(i.times(n)),c.s=f.s=this.s,h=Ue(f,n,o,1).minus(this).abs().cmp(Ue(c,r,o,1).minus(this).abs())<1?[f,n]:[c,r],g.precision=l,be=!0,h},Re.toHexadecimal=Re.toHex=function(e,t){return A(this,16,e,t)},Re.toNearest=function(e,t){var r=this,n=r.constructor;if(r=new n(r),null==e){if(!r.d)return r;e=new n(1),t=n.rounding}else{if(e=new n(e),void 0!==t&&o(t,0,8),!r.d)return e.s?r:e;if(!e.d)return e.s&&(e.s=r.s),e}return e.d[0]?(be=!1,t<4&&(t=[4,5,7,8][t]),r=Ue(r,e,0,t,1).times(e),be=!0,c(r)):(e.s=r.s,r=e),r},Re.toNumber=function(){return+this},Re.toOctal=function(e,t){return A(this,8,e,t)},Re.toPower=Re.pow=function(e){var t,r,n,i,o,u,f=this,l=f.constructor,p=+(e=new l(e));if(!(f.d&&e.d&&f.d[0]&&e.d[0]))return new l(Te(+f,p));if((f=new l(f)).eq(1))return f;if(n=l.precision,o=l.rounding,e.eq(1))return c(f,n,o);if((t=Oe(e.e/Ie))>=e.d.length-1&&(r=p<0?-p:p)<=9007199254740991)return i=g(l,f,r,n),e.s<0?new l(1).div(i):c(i,n,o);if((u=f.s)<0){if(tl.maxE+1||t0?u/0:0):(be=!1,l.rounding=f.s=1,r=Math.min(12,(t+"").length),(i=x(e.times(w(f,n+r)),n)).d&&s((i=c(i,n+5,1)).d,n,o)&&(t=n+10,+a((i=c(x(e.times(w(f,t+r)),t),t+5,1)).d).slice(n+1,n+15)+1==1e14&&(i=c(i,n+1,0))),i.s=u,be=!0,l.rounding=o,c(i,n,o))},Re.toPrecision=function(e,t){var r,n=this,i=n.constructor;return void 0===e?r=f(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(o(e,1,ge),void 0===t?t=i.rounding:o(t,0,8),r=f(n=c(new i(n),e,t),e<=n.e||n.e<=i.toExpNeg,e)),n.isNeg()&&!n.isZero()?"-"+r:r},Re.toSignificantDigits=Re.toSD=function(e,t){var r=this.constructor;return void 0===e?(e=r.precision,t=r.rounding):(o(e,1,ge),void 0===t?t=r.rounding:o(t,0,8)),c(new r(this),e,t)},Re.toString=function(){var e=this.constructor,t=f(this,this.e<=e.toExpNeg||this.e>=e.toExpPos);return this.isNeg()&&!this.isZero()?"-"+t:t},Re.truncated=Re.trunc=function(){return c(new this.constructor(this),this.e+1,1)},Re.valueOf=Re.toJSON=function(){var e=this.constructor,t=f(this,this.e<=e.toExpNeg||this.e>=e.toExpPos);return this.isNeg()?"-"+t:t};var Ue=function(){function e(e,t,r){var n,i=0,a=e.length;for(e=e.slice();a--;)n=e[a]*t+i,e[a]=n%r|0,i=n/r|0;return i&&e.unshift(i),e}function t(e,t,r,n){var i,a;if(r!=n)a=r>n?1:-1;else for(i=a=0;it[i]?1:-1;break}return a}function r(e,t,r,n){for(var i=0;r--;)e[r]-=i,i=e[r]1;)e.shift()}return function(n,i,a,o,s,u){var f,l,p,h,m,d,g,v,y,x,w,b,N,E,M,A,O,T,S,_,C=n.constructor,z=n.s==i.s?1:-1,k=n.d,I=i.d;if(!(k&&k[0]&&I&&I[0]))return new C(n.s&&i.s&&(k?!I||k[0]!=I[0]:I)?k&&0==k[0]||!I?0*z:z/0:NaN);for(u?(m=1,l=n.e-i.e):(u=ke,m=Ie,l=Oe(n.e/m)-Oe(i.e/m)),S=I.length,O=k.length,x=(y=new C(z)).d=[],p=0;I[p]==(k[p]||0);p++);if(I[p]>(k[p]||0)&&l--,null==a?(E=a=C.precision,o=C.rounding):E=s?a+(n.e-i.e)+1:a,E<0)x.push(1),d=!0;else{if(E=E/m+2|0,p=0,1==S){for(h=0,I=I[0],E++;(p1&&(I=e(I,h,u),k=e(k,h,u),S=I.length,O=k.length),A=S,b=(w=k.slice(0,S)).length;b=u/2&&++T;do{h=0,(f=t(I,w,S,b))<0?(N=w[0],S!=b&&(N=N*u+(w[1]||0)),(h=N/T|0)>1?(h>=u&&(h=u-1),1==(f=t(g=e(I,h,u),w,v=g.length,b=w.length))&&(h--,r(g,S=10;h/=10)p++;y.e=p+l*m-1,c(y,s?a+y.e+1:a,o,d)}return y}}();(pe=F(we)).default=pe.Decimal=pe,ye=new pe(ye),xe=new pe(xe),void 0===(n=function(){return pe}.call(t,r,t,e))||(e.exports=n)}()},function(e,t,r){"use strict";var n=r(1);t.name="bignumber",t.factory=function(e,t,r,i){var a=i("bignumber",{"":function(){return new e.BigNumber(0)},number:function(t){return new e.BigNumber(t+"")},string:function(t){return new e.BigNumber(t)},BigNumber:function(e){return e},Fraction:function(t){return new e.BigNumber(t.n).div(t.d)},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={0:"0",1:"\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(1);t.name="boolean",t.factory=function(e,t,r,i){var a=i("bool",{"":function(){return!1},boolean:function(e){return e},number:function(e){return!!e},BigNumber:function(e){return!e.isZero()},string:function(e){var t=e.toLowerCase();if("true"===t)return!0;if("false"===t)return!1;var r=Number(e);if(""!=e&&!isNaN(r))return!!r;throw new Error('Cannot convert "'+e+'" to a boolean')},"Array | Matrix":function(e){return n(e,a)}});return a}},function(e,t,r){e.exports=[r(167),r(169)]},function(e,t,r){"use strict";var n=r(9).format,i=r(5).lazy;t.name="Chain",t.path="type",t.factory=function(e,t,r,a,o){function s(t){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");e.isChain(t)?this.value=t.value:this.value=t}function u(e,t){"function"==typeof t&&(s.prototype[e]=c(t))}function c(e){return function(){for(var t=[this.value],r=0;r0&&l();break;case"number":s.im=0,s.re=e;break;default:l()}isNaN(s.re)||isNaN(s.im)};o.prototype={re:0,im:0,sign:function(){var e=this.abs();return new o(this.re/e,this.im/e)},add:function(e,t){return p(e,t),new o(this.re+s.re,this.im+s.im)},sub:function(e,t){return p(e,t),new o(this.re-s.re,this.im-s.im)},mul:function(e,t){return p(e,t),0===s.im&&0===this.im?new o(this.re*s.re,0):new o(this.re*s.re-this.im*s.im,this.re*s.im+this.im*s.re)},div:function(e,t){p(e,t),e=this.re,t=this.im;var r,n,i=s.re,a=s.im;return 0===a?0===i?new o(0!==e?e/0:0,0!==t?t/0:0):new o(e/i,t/i):Math.abs(i)=0)return new o(Math.pow(e,s.re),0);if(0===e)switch((s.re%4+4)%4){case 0:return new o(Math.pow(t,s.re),0);case 1:return new o(0,Math.pow(t,s.re));case 2:return new o(-Math.pow(t,s.re),0);case 3:return new o(0,-Math.pow(t,s.re))}}var r=Math.atan2(t,e),n=a(e,t);return e=Math.exp(s.re*n-s.im*r),t=s.im*n+s.re*r,new o(e*Math.cos(t),e*Math.sin(t))},sqrt:function(){var e,t,r=this.re,n=this.im,i=this.abs();if(r>=0){if(0===n)return new o(Math.sqrt(r),0);e=.5*Math.sqrt(2*(i+r))}else e=Math.abs(n)/Math.sqrt(2*(i-r));return t=r<=0?.5*Math.sqrt(2*(i-r)):Math.abs(n)/Math.sqrt(2*(i+r)),new o(e,n<0?-t:t)},exp:function(){var e=Math.exp(this.re);return 0===this.im,new o(e*Math.cos(this.im),e*Math.sin(this.im))},log:function(){var e=this.re,t=this.im;return new o(a(e,t),Math.atan2(t,e))},abs:function(){return f(this.re,this.im)},arg:function(){return Math.atan2(this.im,this.re)},sin:function(){var e=this.re,t=this.im;return new o(Math.sin(e)*u(t),Math.cos(e)*c(t))},cos:function(){var e=this.re,t=this.im;return new o(Math.cos(e)*u(t),-Math.sin(e)*c(t))},tan:function(){var e=2*this.re,t=2*this.im,r=Math.cos(e)+u(t);return new o(Math.sin(e)/r,c(t)/r)},cot:function(){var e=2*this.re,t=2*this.im,r=Math.cos(e)-u(t);return new o(-Math.sin(e)/r,c(t)/r)},sec:function(){var e=this.re,t=this.im,r=.5*u(2*t)+.5*Math.cos(2*e);return new o(Math.cos(e)*u(t)/r,Math.sin(e)*c(t)/r)},csc:function(){var e=this.re,t=this.im,r=.5*u(2*t)-.5*Math.cos(2*e);return new o(Math.sin(e)*u(t)/r,-Math.cos(e)*c(t)/r)},asin:function(){var e=this.re,t=this.im,r=new o(t*t-e*e+1,-2*e*t).sqrt(),n=new o(r.re-t,r.im+e).log();return new o(n.im,-n.re)},acos:function(){var e=this.re,t=this.im,r=new o(t*t-e*e+1,-2*e*t).sqrt(),n=new o(r.re-t,r.im+e).log();return new o(Math.PI/2-n.im,n.re)},atan:function(){var e=this.re,t=this.im;if(0===e){if(1===t)return new o(0,1/0);if(t===-1)return new o(0,-(1/0))}var r=e*e+(1-t)*(1-t),n=new o((1-t*t-e*e)/r,-2*e/r).log();return new o(-.5*n.im,.5*n.re)},acot:function(){var e=this.re,t=this.im;if(0===t)return new o(Math.atan2(1,e),0);var r=e*e+t*t;return 0!==r?new o(e/r,-t/r).atan():new o(0!==e?e/0:0,0!==t?-t/0:0).atan()},asec:function(){var e=this.re,t=this.im;if(0===e&&0===t)return new o(0,1/0);var r=e*e+t*t;return 0!==r?new o(e/r,-t/r).acos():new o(0!==e?e/0:0,0!==t?-t/0:0).acos()},acsc:function(){var e=this.re,t=this.im;if(0===e&&0===t)return new o(Math.PI/2,1/0);var r=e*e+t*t;return 0!==r?new o(e/r,-t/r).asin():new o(0!==e?e/0:0,0!==t?-t/0:0).asin()},sinh:function(){var e=this.re,t=this.im;return new o(c(e)*Math.cos(t),u(e)*Math.sin(t))},cosh:function(){var e=this.re,t=this.im;return new o(u(e)*Math.cos(t),c(e)*Math.sin(t))},tanh:function(){var e=2*this.re,t=2*this.im,r=u(e)+Math.cos(t);return new o(c(e)/r,Math.sin(t)/r)},coth:function(){var e=2*this.re,t=2*this.im,r=u(e)-Math.cos(t);return new o(c(e)/r,-Math.sin(t)/r)},csch:function(){var e=this.re,t=this.im,r=Math.cos(2*t)-u(2*e);return new o(-2*c(e)*Math.cos(t)/r,2*u(e)*Math.sin(t)/r)},sech:function(){var e=this.re,t=this.im,r=Math.cos(2*t)+u(2*e);return new o(2*u(e)*Math.cos(t)/r,-2*c(e)*Math.sin(t)/r)},asinh:function(){var e=this.im;this.im=-this.re,this.re=e;var t=this.asin();return this.re=-this.im,this.im=e,e=t.re,t.re=-t.im,t.im=e,t},acosh:function(){var e,t=this.acos();return t.im<=0?(e=t.re,t.re=-t.im,t.im=e):(e=t.im,t.im=-t.re,t.re=e),t},atanh:function(){var e=this.re,t=this.im,r=e>1&&0===t,n=1-e,i=1+e,s=n*n+t*t,u=0!==s?new o((i*n-t*t)/s,(t*n+i*t)/s):new o(e!==-1?e/0:0,0!==t?t/0:0),c=u.re;return u.re=a(u.re,u.im)/2,u.im=Math.atan2(u.im,c)/2,r&&(u.im=-u.im),u},acoth:function(){var e=this.re,t=this.im;if(0===e&&0===t)return new o(0,Math.PI/2);var r=e*e+t*t;return 0!==r?new o(e/r,-t/r).atanh():new o(0!==e?e/0:0,0!==t?-t/0:0).atanh()},acsch:function(){var e=this.re,t=this.im;if(0===t)return new o(0!==e?Math.log(e+Math.sqrt(e*e+1)):1/0,0);var r=e*e+t*t;return 0!==r?new o(e/r,-t/r).asinh():new o(0!==e?e/0:0,0!==t?-t/0:0).asinh()},asech:function(){var e=this.re,t=this.im;if(0===e&&0===t)return new o(1/0,0);var r=e*e+t*t;return 0!==r?new o(e/r,-t/r).acosh():new o(0!==e?e/0:0,0!==t?-t/0:0).acosh()},inverse:function(){var e=this.re,t=this.im,r=e*e+t*t;return new o(0!==e?e/r:0,0!==t?-t/r:0)},conjugate:function(){return new o(this.re,-this.im)},neg:function(){return new o(-this.re,-this.im)},ceil:function(e){return e=Math.pow(10,e||0),new o(Math.ceil(this.re*e)/e,Math.ceil(this.im*e)/e)},floor:function(e){return e=Math.pow(10,e||0),new o(Math.floor(this.re*e)/e,Math.floor(this.im*e)/e)},round:function(e){return e=Math.pow(10,e||0),new o(Math.round(this.re*e)/e,Math.round(this.im*e)/e)},equals:function(e,t){return p(e,t),Math.abs(s.re-this.re)<=o.EPSILON&&Math.abs(s.im-this.im)<=o.EPSILON},clone:function(){return new o(this.re,this.im)},toString:function(){var e=this.re,t=this.im,r="";return isNaN(e)||isNaN(t)?"NaN":(0!==e&&(r+=e),0!==t&&(0!==e?r+=t<0?" - ":" + ":t<0&&(r+="-"),t=Math.abs(t),1!==t&&(r+=t),r+="i"),r?r:"0")},toVector:function(){return[this.re,this.im]},valueOf:function(){return 0===this.im?this.re:null},isNaN:function(){return isNaN(this.re)||isNaN(this.im)},isFinite:function(){return isFinite(this.re)&&isFinite(this.im)}},o.ZERO=new o(0,0),o.ONE=new o(1,0),o.I=new o(0,1),o.PI=new o(Math.PI,0),o.E=new o(Math.E,0),o.EPSILON=1e-16,n=[],i=function(){return o}.apply(t,n),!(void 0!==i&&(e.exports=i))}(this)},function(e,t,r){"use strict";function n(e,t,n,a){var o=r(4),s=a("complex",{"":function(){return e.Complex.ZERO},number:function(t){return new e.Complex(t,0)},"number, number":function(t,r){return new e.Complex(t,r)},"BigNumber, BigNumber":function(t,r){return new e.Complex(t.toNumber(),r.toNumber())},Complex:function(e){return e.clone()},string:function(t){return e.Complex(t)},Object:function(t){if("re"in t&&"im"in t)return new e.Complex(t.re,t.im);if("r"in t&&"phi"in t)return new e.Complex(t);throw new Error("Expected object with either properties re and im, or properties r and phi.")},"Array | Matrix":function(e){return i(e,s)}});return s.toTex={0:"0",1:"\\left(${args[0]}\\right)",2:"\\left(\\left(${args[0]}\\right)+"+o.symbols.i+"\\cdot\\left(${args[1]}\\right)\\right)"},s}var i=r(1);t.name="complex",t.factory=n},function(e,t,r){e.exports=[r(171),r(92)]},function(e,t,r){function n(e,t,r,n){return i}var i=r(172);i.prototype.type="Fraction",i.prototype.isFraction=!0,i.prototype.toJSON=function(){return{mathjs:"Fraction",n:this.s*this.n,d:this.d}},i.fromJSON=function(e){return new i(e)},t.name="Fraction",t.path="type",t.factory=n},function(e,t,r){var n,i;/** - * @license Fraction.js v4.0.2 09/09/2015 +!function(r){"use strict";function i(e,t){var r=Math.abs(e),n=Math.abs(t);return 0===e?Math.log(n):0===t?Math.log(r):r<3e3&&n<3e3?.5*Math.log(e*e+t*t):Math.log(e/Math.cos(Math.atan2(t,e)))}function a(e,t){if(!(this instanceof a))return new a(e,t);f(e,t),this.re=o.re,this.im=o.im}var o={re:0,im:0},s=function(e){return.5*(Math.exp(e)+Math.exp(-e))},u=function(e){return.5*(Math.exp(e)-Math.exp(-e))},c=function(){throw SyntaxError("Invalid Param")},f=function(e,t){if(void 0===e||null===e)o.re=o.im=0;else if(void 0!==t)o.re=e,o.im=t;else switch(typeof e){case"object":"im"in e&&"re"in e?(o.re=e.re,o.im=e.im):"abs"in e&&"arg"in e?(o.re=e.abs*Math.cos(e.arg),o.im=e.abs*Math.sin(e.arg)):"r"in e&&"phi"in e?(o.re=e.r*Math.cos(e.phi),o.im=e.r*Math.sin(e.phi)):2===e.length?(o.re=e[0],o.im=e[1]):c();break;case"string":o.im=o.re=0;var r=e.match(/\d+\.?\d*e[+-]?\d+|\d+\.?\d*|\.\d+|./g),n=1,i=0;null===r&&c();for(var a=0;a0&&c();break;case"number":o.im=0,o.re=e;break;default:c()}isNaN(o.re)||isNaN(o.im)};a.prototype={re:0,im:0,sign:function(){var e=this.abs();return new a(this.re/e,this.im/e)},add:function(e,t){return f(e,t),new a(this.re+o.re,this.im+o.im)},sub:function(e,t){return f(e,t),new a(this.re-o.re,this.im-o.im)},mul:function(e,t){return f(e,t),0===o.im&&0===this.im?new a(this.re*o.re,0):new a(this.re*o.re-this.im*o.im,this.re*o.im+this.im*o.re)},div:function(e,t){f(e,t),e=this.re,t=this.im;var r,n,i=o.re,s=o.im;return 0===s?0===i?new a(0!==e?e/0:0,0!==t?t/0:0):new a(e/i,t/i):Math.abs(i)=0)return new a(Math.pow(e,o.re),0);if(0===e)switch((o.re%4+4)%4){case 0:return new a(Math.pow(t,o.re),0);case 1:return new a(0,Math.pow(t,o.re));case 2:return new a(-Math.pow(t,o.re),0);case 3:return new a(0,-Math.pow(t,o.re))}}var r=Math.atan2(t,e),n=i(e,t);return e=Math.exp(o.re*n-o.im*r),t=o.im*n+o.re*r,new a(e*Math.cos(t),e*Math.sin(t))},sqrt:function(){var e,t,r=this.re,n=this.im,i=this.abs();if(r>=0){if(0===n)return new a(Math.sqrt(r),0);e=.5*Math.sqrt(2*(i+r))}else e=Math.abs(n)/Math.sqrt(2*(i-r));return t=r<=0?.5*Math.sqrt(2*(i-r)):Math.abs(n)/Math.sqrt(2*(i+r)),new a(e,n<0?-t:t)},exp:function(){var e=Math.exp(this.re);return this.im,new a(e*Math.cos(this.im),e*Math.sin(this.im))},log:function(){var e=this.re,t=this.im;return new a(i(e,t),Math.atan2(t,e))},abs:function(){return function(e,t){var r=Math.abs(e),n=Math.abs(t);return r<3e3&&n<3e3?Math.sqrt(r*r+n*n):(r1&&0===t,n=1-e,o=1+e,s=n*n+t*t,u=0!==s?new a((o*n-t*t)/s,(t*n+o*t)/s):new a(-1!==e?e/0:0,0!==t?t/0:0),c=u.re;return u.re=i(u.re,u.im)/2,u.im=Math.atan2(u.im,c)/2,r&&(u.im=-u.im),u},acoth:function(){var e=this.re,t=this.im;if(0===e&&0===t)return new a(0,Math.PI/2);var r=e*e+t*t;return 0!==r?new a(e/r,-t/r).atanh():new a(0!==e?e/0:0,0!==t?-t/0:0).atanh()},acsch:function(){var e=this.re,t=this.im;if(0===t)return new a(0!==e?Math.log(e+Math.sqrt(e*e+1)):1/0,0);var r=e*e+t*t;return 0!==r?new a(e/r,-t/r).asinh():new a(0!==e?e/0:0,0!==t?-t/0:0).asinh()},asech:function(){var e=this.re,t=this.im;if(0===e&&0===t)return new a(1/0,0);var r=e*e+t*t;return 0!==r?new a(e/r,-t/r).acosh():new a(0!==e?e/0:0,0!==t?-t/0:0).acosh()},inverse:function(){var e=this.re,t=this.im,r=e*e+t*t;return new a(0!==e?e/r:0,0!==t?-t/r:0)},conjugate:function(){return new a(this.re,-this.im)},neg:function(){return new a(-this.re,-this.im)},ceil:function(e){return e=Math.pow(10,e||0),new a(Math.ceil(this.re*e)/e,Math.ceil(this.im*e)/e)},floor:function(e){return e=Math.pow(10,e||0),new a(Math.floor(this.re*e)/e,Math.floor(this.im*e)/e)},round:function(e){return e=Math.pow(10,e||0),new a(Math.round(this.re*e)/e,Math.round(this.im*e)/e)},equals:function(e,t){return f(e,t),Math.abs(o.re-this.re)<=a.EPSILON&&Math.abs(o.im-this.im)<=a.EPSILON},clone:function(){return new a(this.re,this.im)},toString:function(){var e=this.re,t=this.im,r="";return isNaN(e)||isNaN(t)?"NaN":(0!==e&&(r+=e),0!==t&&(0!==e?r+=t<0?" - ":" + ":t<0&&(r+="-"),1!==(t=Math.abs(t))&&(r+=t),r+="i"),r||"0")},toVector:function(){return[this.re,this.im]},valueOf:function(){return 0===this.im?this.re:null},isNaN:function(){return isNaN(this.re)||isNaN(this.im)},isFinite:function(){return isFinite(this.re)&&isFinite(this.im)}},a.ZERO=new a(0,0),a.ONE=new a(1,0),a.I=new a(0,1),a.PI=new a(Math.PI,0),a.E=new a(Math.E,0),a.EPSILON=1e-16,void 0===(n=function(){return a}.apply(t,[]))||(e.exports=n)}()},function(e,t,r){"use strict";var n=r(1);t.name="complex",t.factory=function(e,t,i,a){var o=r(4),s=a("complex",{"":function(){return e.Complex.ZERO},number:function(t){return new e.Complex(t,0)},"number, number":function(t,r){return new e.Complex(t,r)},"BigNumber, BigNumber":function(t,r){return new e.Complex(t.toNumber(),r.toNumber())},Complex:function(e){return e.clone()},string:function(t){return e.Complex(t)},Object:function(t){if("re"in t&&"im"in t)return new e.Complex(t.re,t.im);if("r"in t&&"phi"in t)return new e.Complex(t);throw new Error("Expected object with either properties re and im, or properties r and phi.")},"Array | Matrix":function(e){return n(e,s)}});return s.toTex={0:"0",1:"\\left(${args[0]}\\right)",2:"\\left(\\left(${args[0]}\\right)+"+o.symbols.i+"\\cdot\\left(${args[1]}\\right)\\right)"},s}},function(e,t,r){e.exports=[r(174),r(93)]},function(e,t,r){var n=r(175);n.prototype.type="Fraction",n.prototype.isFraction=!0,n.prototype.toJSON=function(){return{mathjs:"Fraction",n:this.s*this.n,d:this.d}},n.fromJSON=function(e){return new n(e)},t.name="Fraction",t.path="type",t.factory=function(e,t,r,i){return n}},function(e,t,r){var n;/** + * @license Fraction.js v4.0.4 09/09/2015 * http://www.xarg.org/2014/03/rational-numbers-in-javascript/ * * Copyright (c) 2015, Robert Eisele (robert@xarg.org) * Dual licensed under the MIT or GPL Version 2 licenses. **/ -!function(r){"use strict";function a(e){var t=function(){var t=Error.apply(this,arguments);t.name=this.name=e,this.stack=t.stack,this.message=t.message},r=function(){};return r.prototype=Error.prototype,t.prototype=new r,t}function o(e,t){return isNaN(e=parseInt(e,10))&&s(),e*t}function s(){throw new p}function u(e,t){return this instanceof u?(h(e,t),e=u.REDUCE?g(f.d,f.n):1,this.s=f.s,this.n=f.n/e,void(this.d=f.d/e)):new u(e,t)}var c=2e3,f={s:1,n:0,d:1},l=u.DivisionByZero=a("DivisionByZero"),p=u.InvalidParameter=a("InvalidParameter"),h=function(e,t){var r,n=0,i=1,a=1,u=0,c=0,p=0,h=1,m=1,d=0,v=1,g=1,y=1,x=1e7;if(void 0===e||null===e);else if(void 0!==t)n=e,i=t,a=n*i;else switch(typeof e){case"object":"d"in e&&"n"in e?(n=e.n,i=e.d,"s"in e&&(n*=e.s)):0 in e?(n=e[0],1 in e&&(i=e[1])):s(),a=n*i;break;case"number":if(e<0&&(a=e,e=-e),e%1===0)n=e;else if(e>0){for(e>=1&&(m=Math.pow(10,Math.floor(1+Math.log(e)/Math.LN10)),e/=m);v<=x&&y<=x;){if(r=(d+g)/(v+y),e===r){v+y<=x?(n=d+g,i=v+y):y>v?(n=g,i=y):(n=d,i=v);break}e>r?(d+=g,v+=y):(g+=d,y+=v),v>x?(n=g,i=y):(n=d,i=v)}n*=m}else(isNaN(e)||isNaN(t))&&(i=n=NaN);break;case"string":if(v=e.match(/\d+|./g),"-"===v[d]?(a=-1,d++):"+"===v[d]&&d++,v.length===d+1?c=o(v[d++],a):"."===v[d+1]||"."===v[d]?("."!==v[d]&&(u=o(v[d++],a)),d++,(d+1===v.length||"("===v[d+1]&&")"===v[d+3]||"'"===v[d+1]&&"'"===v[d+3])&&(c=o(v[d],a),h=Math.pow(10,v[d].length),d++),("("===v[d]&&")"===v[d+2]||"'"===v[d]&&"'"===v[d+2])&&(p=o(v[d+1],a),m=Math.pow(10,v[d+1].length)-1,d+=3)):"/"===v[d+1]||":"===v[d+1]?(c=o(v[d],a),h=o(v[d+2],1),d+=3):"/"===v[d+3]&&" "===v[d+1]&&(u=o(v[d],a),c=o(v[d+2],a),h=o(v[d+4],1),d+=5),v.length<=d){i=h*m,a=n=p+i*u+m*c;break}default:s()}if(0===i)throw new l;f.s=a<0?-1:1,f.n=Math.abs(n),f.d=Math.abs(i)},m=function(e,t,r){for(var n=1;t>0;e=e*e%r,t>>=1)1&t&&(n=n*e%r);return n},d=function(e,t){for(;t%2===0;t/=2);for(;t%5===0;t/=5);if(1===t)return 0;for(var r=10%t,n=1;1!==r;n++)if(r=10*r%t,n>c)return 0;return n},v=function(e,t,r){for(var n=1,i=m(10,r,t),a=0;a<300;a++){if(n===i)return a;n=10*n%t,i=10*i%t}return 0},g=function(e,t){if(!e)return t;if(!t)return e;for(;;){if(e%=t,!e)return t;if(t%=e,!t)return e}};u.REDUCE=1,u.prototype={s:1,n:0,d:1,abs:function(){return new u(this.n,this.d)},neg:function(){return new u(-this.s*this.n,this.d)},add:function(e,t){return h(e,t),new u(this.s*this.n*f.d+f.s*this.d*f.n,this.d*f.d)},sub:function(e,t){return h(e,t),new u(this.s*this.n*f.d-f.s*this.d*f.n,this.d*f.d)},mul:function(e,t){return h(e,t),new u(this.s*f.s*this.n*f.n,this.d*f.d)},div:function(e,t){return h(e,t),new u(this.s*f.s*this.n*f.d,this.d*f.n)},clone:function(){return new u(this)},mod:function(e,t){return isNaN(this.n)||isNaN(this.d)?new u(NaN):void 0===e?new u(this.s*this.n%this.d,1):(h(e,t),0===f.n&&0===this.d&&u(0,0),new u(this.s*f.d*this.n%(f.n*this.d),f.d*this.d))},gcd:function(e,t){return h(e,t),new u(g(f.n,this.n),f.d*this.d/g(f.d,this.d))},lcm:function(e,t){return h(e,t),0===f.n&&0===this.n?new u:new u(f.n*this.n/g(f.n,this.n),g(f.d,this.d))},ceil:function(e){return e=Math.pow(10,e||0),isNaN(this.n)||isNaN(this.d)?new u(NaN):new u(Math.ceil(e*this.s*this.n/this.d),e)},floor:function(e){return e=Math.pow(10,e||0),isNaN(this.n)||isNaN(this.d)?new u(NaN):new u(Math.floor(e*this.s*this.n/this.d),e)},round:function(e){return e=Math.pow(10,e||0),isNaN(this.n)||isNaN(this.d)?new u(NaN):new u(Math.round(e*this.s*this.n/this.d),e)},inverse:function(){return new u(this.s*this.d,this.n)},pow:function(e){return e<0?new u(Math.pow(this.s*this.d,-e),Math.pow(this.n,-e)):new u(Math.pow(this.s*this.n,e),Math.pow(this.d,e))},equals:function(e,t){return h(e,t),this.s*this.n*f.d===f.s*f.n*this.d},compare:function(e,t){h(e,t);var r=this.s*this.n*f.d-f.s*f.n*this.d;return(00&&(r+=t,r+=" ",n%=i),r+=n,r+="/",r+=i),r},toLatex:function(e){var t,r="",n=this.n,i=this.d;return this.s<0&&(r+="-"),1===i?r+=n:(e&&(t=Math.floor(n/i))>0&&(r+=t,n%=i),r+="\\frac{",r+=n,r+="}{",r+=i,r+="}"),r},toContinued:function(){var e,t=this.n,r=this.d,n=[];do n.push(Math.floor(t/r)),e=t%r,t=r,r=e;while(1!==t);return n},toString:function(){var e,t=this.n,r=this.d;if(isNaN(t)||isNaN(r))return"NaN";u.REDUCE||(e=g(t,r),t/=e,r/=e);var n=15,i=d(t,r),a=v(t,r,i),o=this.s===-1?"-":"";if(o+=t/r|0,t%=r,t*=10,t&&(o+="."),i){for(var s=a;s--;)o+=t/r|0,t%=r,t*=10;o+="(";for(var s=i;s--;)o+=t/r|0,t%=r,t*=10;o+=")"}else for(var s=n;t&&s--;)o+=t/r|0,t%=r,t*=10;return o}},n=[],i=function(){return u}.apply(t,n),!(void 0!==i&&(e.exports=i))}(this)},function(e,t,r){e.exports=[r(72),r(43),r(175),r(176),r(177),r(178),r(27),r(93),r(179),r(0),r(180)]},function(e,t,r){"use strict";t.isBoolean=function(e){return"boolean"==typeof e}},function(e,t,r){"use strict";function n(e,t,n,d){function v(t,r){if(!(this instanceof v))throw new SyntaxError("Constructor must be called with the new operator");if(r&&!h(r))throw new Error("Invalid datatype: "+r);if(e.isMatrix(t))x(this,t,r);else if(t&&f(t.index)&&f(t.ptr)&&f(t.size))this._values=t.values,this._index=t.index,this._ptr=t.ptr,this._size=t.size,this._datatype=r||t.datatype;else if(f(t))w(this,t,r);else{if(t)throw new TypeError("Unsupported type of data ("+i.types.type(t)+")");this._values=[],this._index=[],this._ptr=[0],this._size=[0,0],this._datatype=r}}var g=n(r(72)),y=n(r(11)),x=function(e,t,r){"SparseMatrix"===t.type?(e._values=t._values?s.clone(t._values):void 0,e._index=s.clone(t._index),e._ptr=s.clone(t._ptr),e._size=s.clone(t._size),e._datatype=r||t._datatype):w(e,t.valueOf(),r||t._datatype)},w=function(e,t,r){e._values=[],e._index=[],e._ptr=[],e._datatype=r;var n=t.length,i=0,a=y,o=0;if(h(r)&&(a=d.find(y,[r,r])||y,o=d.convert(0,r)),n>0){var s=0;do{e._ptr.push(e._index.length);for(var u=0;u");for(var h=r.min()[0],m=r.min()[1],d=u[0],v=u[1],g=0;go-1||i>s-1)&&(O(this,Math.max(n+1,o),Math.max(i+1,s),r),o=this._size[0],s=this._size[1]),m(n,o),m(i,s);var l=E(n,this._ptr[i],this._ptr[i+1],this._index);return lp){for(u=p;ul){if(f){var m=0;for(u=0;ut-1&&(e._values.splice(c,1),e._index.splice(c,1),g++)}e._ptr[u]=e._values.length}return e._size[0]=t,e._size[1]=r,e};v.prototype.reshape=function(e,t){if(!f(e))throw new TypeError("Array expected");if(2!==e.length)throw new Error("Sparse matrices can only be reshaped in two dimensions");if(e.forEach(function(t){if(!c.isNumber(t)||!c.isInteger(t)||t<0)throw new TypeError("Invalid size, must contain positive integers (size: "+u.format(e)+")")}),this._size[0]*this._size[1]!==e[0]*e[1])throw new Error("Reshaping sparse matrix will result in the wrong number of elements");var r=t?this.clone():this;if(this._size[0]===e[0]&&this._size[1]===e[1])return r;for(var n=[],i=0;i=t&&N<=r){if(!o)for(var E=w;E "+(this._values?u.format(this._values[c],e):"X")}return i},v.prototype.toString=function(){return u.format(this.toArray())},v.prototype.toJSON=function(){return{mathjs:"SparseMatrix",values:this._values,index:this._index,ptr:this._ptr,size:this._size,datatype:this._datatype}},v.prototype.diagonal=function(t){if(t){if(e.isBigNumber(t)&&(t=t.toNumber()),!l(t)||!p(t))throw new TypeError("The parameter k must be an integer number")}else t=0;var r=t>0?t:0,n=t<0?-t:0,i=this._size[0],a=this._size[1],o=Math.min(i-n,a-r),s=[],u=[],c=[];c[0]=0;for(var f=r;f0?n:0,m=n<0?-n:0,g=t[0],x=t[1],w=Math.min(g-m,x-c);if(f(r)){if(r.length!==w)throw new Error("Invalid value array length");u=function(e){return r[e]}}else if(e.isMatrix(r)){var b=r.size();if(1!==b.length||b[0]!==w)throw new Error("Invalid matrix length");u=function(e){return r.get([e])}}else u=function(){return r};for(var N=[],E=[],M=[],A=0;A=0&&O=u||i[f]!==t)){var p=n?n[c]:void 0;i.splice(f,0,t),n&&n.splice(f,0,p),i.splice(f<=c?c+1:c,1),n&&n.splice(f<=c?c+1:c,1)}else if(f=u||i[c]!==e)){var h=n?n[f]:void 0;i.splice(c,0,e),n&&n.splice(c,0,h),i.splice(c<=f?f+1:f,1),n&&n.splice(c<=f?f+1:f,1)}}},e.Matrix._storage.sparse=v,v}var i=r(25),a=r(10),o=i.array,s=i.object,u=i.string,c=i.number,f=Array.isArray,l=c.isNumber,p=c.isInteger,h=u.isString,m=o.validateIndex;t.name="SparseMatrix",t.path="type",t.factory=n,t.lazy=!1},function(e,t,r){"use strict";function n(e,t,n){function i(){if(!(this instanceof i))throw new SyntaxError("Constructor must be called with the new operator");this._values=[],this._heap=new e.FibonacciHeap}var a=n(r(18)),o=n(r(11));return i.prototype.type="Spa",i.prototype.isSpa=!0,i.prototype.set=function(e,t){if(this._values[e])this._values[e].value=t;else{var r=this._heap.insert(e,t);this._values[e]=r}},i.prototype.get=function(e){var t=this._values[e];return t?t.value:0},i.prototype.accumulate=function(e,t){var r=this._values[e];r?r.value=a(r.value,t):(r=this._heap.insert(e,t),this._values[e]=r)},i.prototype.forEach=function(e,t,r){var n=this._heap,i=this._values,a=[],s=n.extractMinimum();for(s&&a.push(s);s&&s.key<=t;)s.key>=e&&(o(s.value,0)||r(s.key,s.value,this)),s=n.extractMinimum(),s&&a.push(s);for(var u=0;u0;){var i=n.right;n.left.right=n.right,n.right.left=n.left,n.left=t,n.right=t.right,t.right=n,n.right.left=n,n.parent=null,n=i,r--}return e.left.right=e.right,e.right.left=e.left,e==e.right?t=null:(t=e.right,t=h(t,this._size)),this._size--,this._minimum=t,e},a.prototype.remove=function(e){this._minimum=c(this._minimum,e,-1),this.extractMinimum()};var c=function(e,t,r){t.key=r;var n=t.parent;return n&&o(t.key,n.key)&&(f(e,t,n),l(e,n)),o(t.key,e.key)&&(e=t),e},f=function(e,t,r){t.left.right=t.right,t.right.left=t.left,r.degree--,r.child==t&&(r.child=t.right),0===r.degree&&(r.child=null),t.left=e,t.right=e.right,e.right=t,t.right.left=t,t.parent=null,t.mark=!1},l=function(e,t){var r=t.parent;r&&(t.mark?(f(e,t,r),l(r)):t.mark=!0)},p=function(e,t){e.left.right=e.right,e.right.left=e.left,e.parent=t,t.child?(e.left=t.child,e.right=t.child.right,t.child.right=e,e.right.left=e):(t.child=e,e.right=e,e.left=e),t.degree++,e.mark=!1},h=function(e,t){var r=Math.floor(Math.log(t)*u)+1,n=new Array(r),i=0,a=e;if(a)for(i++,a=a.right;a!==e;)i++,a=a.right;for(var c;i>0;){for(var f=a.degree,l=a.right;;){if(c=n[f],!c)break;if(s(a.key,c.key)){var h=c;c=a,a=h}p(c,a),n[f]=null,f++}n[f]=a,a=l,i--}e=null;for(var m=0;m="0"&&e<="9"||"."==e}function p(e){return e>="0"&&e<="9"}function h(){R++,U=P.charAt(R)}function m(e){R=e,U=P.charAt(R)}function d(){var e,t="";if(e=R,"+"==U?h():"-"==U&&(t+=U,h()),!l(U))return m(e),null;if("."==U){if(t+=U,h(),!p(U))return m(e),null}else{for(;p(U);)t+=U,h();"."==U&&(t+=U,h())}for(;p(U);)t+=U,h();if("E"==U||"e"==U){var r="",n=R;if(r+=U,h(),"+"!=U&&"-"!=U||(r+=U,h()),!p(U))return m(n),t;for(t+=r;p(U);)t+=U,h()}return t}function v(){for(var e="",t=P.charCodeAt(R);t>=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122;)e+=U,h(),t=P.charCodeAt(R);return t=e.charCodeAt(0),t>=65&&t<=90||t>=97&&t<=122?e||null:null}function g(e){return U===e?(h(),e):null}function y(e){if(G.hasOwnProperty(e)){var t=G[e],r=t.prefixes[""];return{unit:t,prefix:r}}for(var n in G)if(G.hasOwnProperty(n)&&i(e,n)){var t=G[n],a=e.length-n.length,o=e.substring(0,a),r=t.prefixes.hasOwnProperty(o)?t.prefixes[o]:void 0;if(void 0!==r)return{unit:t,prefix:r}}return null}function x(t){if("BigNumber"===t.number){var r=o.pi(e.BigNumber);G.rad.value=new e.BigNumber(1),G.deg.value=r.div(180),G.grad.value=r.div(200),G.cycle.value=r.times(2),G.arcsec.value=r.div(648e3),G.arcmin.value=r.div(10800)}else G.rad.value=1,G.deg.value=Math.PI/180,G.grad.value=Math.PI/200,G.cycle.value=2*Math.PI,G.arcsec.value=Math.PI/648e3,G.arcmin.value=Math.PI/10800}function w(e){for(var t=0;t="0"&&e<="9"};if(0===t&&!n(r))throw new Error('Invalid unit name (must begin with alpha character): "'+e+'"');if(t>0&&!n(r)&&!i(r))throw new Error('Invalid unit name (only alphanumeric characters are allowed): "'+e+'"')}}var b=n(r(20)),N=n(r(21)),E=n(r(23)),M=n(r(19)),A=n(r(45)),O=n(r(29)),T=n(r(96)),_=n(r(97)),S=n(r(30)),C=n(r(75)),z=n(r(98)),k=n(r(76)),I=n(r(74)),B=n(r(91));c.prototype.type="Unit",c.prototype.isUnit=!0;var P,R,U;c.parse=function(r,n){if(n=n||{},P=r,R=-1,U="","string"!=typeof P)throw new TypeError("Invalid argument in Unit.parse, string expected");var i=new c;i.units=[],h(),f();var a=d(),o=null;a&&(o="BigNumber"===t.number?new e.BigNumber(a):"Fraction"===t.number?new e.Fraction(a):parseFloat(a)),f();for(var s=1,u=!1,l=[],p=1;;){for(f();"("===U;)l.push(s),p*=s,s=1,h(),f();if(!U)break;var m=U,x=v();if(null==x)throw new SyntaxError('Unexpected "'+m+'" in "'+P+'" at index '+R.toString());var w=y(x);if(null==w)throw new SyntaxError('Unit "'+x+'" not found.');var b=s*p;if(f(),g("^")){f();var N=d();if(null==N)throw new SyntaxError('In "'+r+'", "^" must be followed by a floating-point number');b*=N}i.units.push({unit:w.unit,prefix:w.prefix,power:b});for(var E=0;E1||Math.abs(this.units[0].power-1)>1e-15)},c.prototype._normalize=function(e){var t,r,n,i,a;if(null==e||0===this.units.length)return e;if(this._isDerived()){var o=e;a=c._getNumberConverter(k(e));for(var s=0;s1e-12)return!1;return!0},c.prototype.equalBase=function(e){for(var t=0;t1e-12)return!1;return!0},c.prototype.equals=function(e){return this.equalBase(e)&&S(this.value,e.value)},c.prototype.multiply=function(e){for(var t=this.clone(),r=0;r1e-12&&(W.hasOwnProperty(o)?t.push({unit:W[o].unit,prefix:W[o].prefix,power:this.dimensions[a]||0}):i=!0)}t.length1e-12){if(!V.si.hasOwnProperty(n))throw new Error("Cannot express custom unit "+n+" in SI units");t.push({unit:V.si[n].unit,prefix:V.si[n].prefix,power:e.dimensions[r]||0})}}return e.units=t,e.isUnitListSimplified=!0,e},c.prototype.formatUnits=function(){this.simplifyUnitListLazy();for(var e="",t="",r=0,n=0,i=0;i0?(r++,e+=" "+this.units[i].prefix.name+this.units[i].unit.name,Math.abs(this.units[i].power-1)>1e-15&&(e+="^"+this.units[i].power)):this.units[i].power<0&&n++;if(n>0)for(var i=0;i0?(t+=" "+this.units[i].prefix.name+this.units[i].unit.name,Math.abs(this.units[i].power+1)>1e-15&&(t+="^"+-this.units[i].power)):(t+=" "+this.units[i].prefix.name+this.units[i].unit.name,t+="^"+this.units[i].power));e=e.substr(1),t=t.substr(1),r>1&&n>0&&(e="("+e+")"),n>1&&r>0&&(t="("+t+")");var a=e;return r>0&&n>0&&(a+=" / "),a+=t},c.prototype.format=function(t){this.simplifyUnitListLazy();var r=!1,n=!0;"undefined"!=typeof this.value&&null!==this.value&&e.isComplex(this.value)&&(r=Math.abs(this.value.re)<1e-14,n=Math.abs(this.value.im)<1e-14);for(var i in this.units)this.units[i].unit&&("VA"===this.units[i].unit.name&&r?this.units[i].unit=G.VAR:"VAR"!==this.units[i].unit.name||r||(this.units[i].unit=G.VA));1!==this.units.length||this.fixPrefix||Math.abs(this.units[0].power-Math.round(this.units[0].power))<1e-14&&(this.units[0].prefix=this._bestPrefix());var a=this._denormalize(this.value),o=null!==this.value?z(a,t||{}):"",s=this.formatUnits();return this.value&&e.isComplex(this.value)&&(o="("+o+")"),s.length>0&&o.length>0&&(o+=" "),o+=s},c.prototype._bestPrefix=function(){if(1!==this.units.length)throw new Error("Can only compute the best prefix for single units with integer powers, like kg, s^2, N^-1, and so forth!");if(Math.abs(this.units[0].power-Math.round(this.units[0].power))>=1e-14)throw new Error("Can only compute the best prefix for single units with integer powers, like kg, s^2, N^-1, and so forth!");var e=O(this.value),t=O(this.units[0].unit.value),r=this.units[0].prefix;if(0===e)return r;var n=this.units[0].power,i=Math.log(e/Math.pow(r.value*t,n))/Math.LN10-1.2;if(i>-2.200001&&i<1.800001)return r;i=Math.abs(i);var a=this.units[0].unit.prefixes;for(var o in a)if(a.hasOwnProperty(o)){var s=a[o];if(s.scientific){var u=Math.abs(Math.log(e/Math.pow(s.value*t,n))/Math.LN10-1.2);(u1e-12){p=!1;break}if(p){l=!0;break}}if(!l){var m=e+"_STUFF",d={dimensions:a.dimensions.slice(0)};d.key=m,D[m]=d,W[m]={unit:f,prefix:L.NONE[""]},f.base=m}}else{var m=e+"_STUFF";if(F.indexOf(m)>=0)throw new Error('Cannot create new base unit "'+e+'": a base unit with that name already exists (and cannot be overridden)');F.push(m);for(var v in D)D.hasOwnProperty(v)&&(D[v].dimensions[F.length-1]=0);for(var d={dimensions:[]},u=0;u1, -1 when x<0, and 0 when x=0.",examples:["sign(3.5)","sign(-4.2)","sign(0)"],seealso:["abs"]}},function(e,t){e.exports={name:"sqrt",category:"Arithmetic",syntax:["sqrt(x)"],description:"Compute the square root value. If x = y * y, then y is the square root of x.",examples:["sqrt(25)","5 * 5","sqrt(-1)"],seealso:["square","multiply"]}},function(e,t){e.exports={name:"square",category:"Arithmetic",syntax:["square(x)"],description:"Compute the square of a value. The square of x is x * x.",examples:["square(3)","sqrt(9)","3^2","3 * 3"],seealso:["multiply","pow","sqrt","cube"]}},function(e,t){e.exports={name:"subtract",category:"Operators",syntax:["x - y","subtract(x, y)"],description:"subtract two values.",examples:["a = 5.3 - 2","a + 2","2/3 - 1/6","2 * 3 - 3","2.1 km - 500m"],seealso:["add"]}},function(e,t){e.exports={name:"unaryMinus",category:"Operators",syntax:["-x","unaryMinus(x)"],description:"Inverse the sign of a value. Converts booleans and strings to numbers.",examples:["-4.5","-(-5.6)",'-"22"'],seealso:["add","subtract","unaryPlus"]}},function(e,t){e.exports={name:"unaryPlus",category:"Operators",syntax:["+x","unaryPlus(x)"],description:"Converts booleans and strings to numbers.",examples:["+true",'+"2"'],seealso:["add","subtract","unaryMinus"]}},function(e,t){e.exports={name:"xgcd",category:"Arithmetic",syntax:["xgcd(a, b)"],description:"Calculate the extended greatest common divisor for two values. The result is an array [d, x, y] with 3 entries, where d is the greatest common divisor, and d = x * a + y * b.",examples:["xgcd(8, 12)","gcd(8, 12)","xgcd(36163, 21199)"],seealso:["gcd","lcm"]}},function(e,t){e.exports={name:"bitAnd",category:"Bitwise",syntax:["x & y","bitAnd(x, y)"],description:"Bitwise AND operation. Performs the logical AND operation on each pair of the corresponding bits of the two given values by multiplying them. If both bits in the compared position are 1, the bit in the resulting binary representation is 1, otherwise, the result is 0",examples:["5 & 3","bitAnd(53, 131)","[1, 12, 31] & 42"],seealso:["bitNot","bitOr","bitXor","leftShift","rightArithShift","rightLogShift"]}},function(e,t){e.exports={name:"bitNot",category:"Bitwise",syntax:["~x","bitNot(x)"],description:"Bitwise NOT operation. Performs a logical negation on each bit of the given value. Bits that are 0 become 1, and those that are 1 become 0.",examples:["~1","~2","bitNot([2, -3, 4])"],seealso:["bitAnd","bitOr","bitXor","leftShift","rightArithShift","rightLogShift"]}},function(e,t){e.exports={name:"bitOr",category:"Bitwise",syntax:["x | y","bitOr(x, y)"],description:"Bitwise OR operation. Performs the logical inclusive OR operation on each pair of corresponding bits of the two given values. The result in each position is 1 if the first bit is 1 or the second bit is 1 or both bits are 1, otherwise, the result is 0.",examples:["5 | 3","bitOr([1, 2, 3], 4)"],seealso:["bitAnd","bitNot","bitXor","leftShift","rightArithShift","rightLogShift"]}},function(e,t){e.exports={name:"bitXor",category:"Bitwise",syntax:["bitXor(x, y)"],description:"Bitwise XOR operation, exclusive OR. Performs the logical exclusive OR operation on each pair of corresponding bits of the two given values. The result in each position is 1 if only the first bit is 1 or only the second bit is 1, but will be 0 if both are 0 or both are 1.",examples:["bitOr(1, 2)","bitXor([2, 3, 4], 4)"],seealso:["bitAnd","bitNot","bitOr","leftShift","rightArithShift","rightLogShift"]}},function(e,t){e.exports={name:"leftShift",category:"Bitwise",syntax:["x << y","leftShift(x, y)"],description:"Bitwise left logical shift of a value x by y number of bits.",examples:["4 << 1","8 >> 1"],seealso:["bitAnd","bitNot","bitOr","bitXor","rightArithShift","rightLogShift"]}},function(e,t){e.exports={name:"rightArithShift",category:"Bitwise",syntax:["x >> y","rightArithShift(x, y)"],description:"Bitwise right arithmetic shift of a value x by y number of bits.",examples:["8 >> 1","4 << 1","-12 >> 2"],seealso:["bitAnd","bitNot","bitOr","bitXor","leftShift","rightLogShift"]}},function(e,t){e.exports={name:"rightLogShift",category:"Bitwise",syntax:["x >>> y","rightLogShift(x, y)"],description:"Bitwise right logical shift of a value x by y number of bits.",examples:["8 >>> 1","4 << 1","-12 >>> 2"],seealso:["bitAnd","bitNot","bitOr","bitXor","leftShift","rightArithShift"]}},function(e,t){e.exports={name:"bellNumbers",category:"Combinatorics",syntax:["bellNumbers(n)"],description:"The Bell Numbers count the number of partitions of a set. A partition is a pairwise disjoint subset of S whose union is S. `bellNumbers` only takes integer arguments. The following condition must be enforced: n >= 0.",examples:["bellNumbers(3)","bellNumbers(8)"],seealso:["stirlingS2"]}},function(e,t){e.exports={name:"catalan",category:"Combinatorics",syntax:["catalan(n)"],description:"The Catalan Numbers enumerate combinatorial structures of many different types. catalan only takes integer arguments. The following condition must be enforced: n >= 0.",examples:["catalan(3)","catalan(8)"],seealso:["bellNumbers"]}},function(e,t){e.exports={name:"composition",category:"Combinatorics",syntax:["composition(n, k)"],description:"The composition counts of n into k parts. composition only takes integer arguments. The following condition must be enforced: k <= n.",examples:["composition(5, 3)"],seealso:["combinations"]}},function(e,t){e.exports={name:"stirlingS2",category:"Combinatorics",syntax:["stirlingS2(n, k)"],description:"he Stirling numbers of the second kind, counts the number of ways to partition a set of n labelled objects into k nonempty unlabelled subsets. `stirlingS2` only takes integer arguments. The following condition must be enforced: k <= n. If n = k or k = 1, then s(n,k) = 1.",examples:["stirlingS2(5, 3)"],seealso:["bellNumbers"]}},function(e,t){e.exports={name:"config",category:"Core",syntax:["config()","config(options)"],description:"Get configuration or change configuration.",examples:["config()","1/3 + 1/4",'config({number: "Fraction"})',"1/3 + 1/4"],seealso:[]}},function(e,t){e.exports={name:"import",category:"Core",syntax:["import(functions)","import(functions, options)"],description:"Import functions or constants from an object.",examples:["import({myFn: f(x)=x^2, myConstant: 32 })","myFn(2)","myConstant"],seealso:[]}},function(e,t){e.exports={name:"typed",category:"Core",syntax:["typed(signatures)","typed(name, signatures)"],description:"Create a typed function.",examples:['double = typed({ "number, number": f(x)=x+x })',"double(2)",'double("hello")'],seealso:[]}},function(e,t){e.exports={name:"arg",category:"Complex",syntax:["arg(x)"],description:"Compute the argument of a complex value. If x = a+bi, the argument is computed as atan2(b, a).",examples:["arg(2 + 2i)","atan2(3, 2)","arg(2 + 3i)"],seealso:["re","im","conj","abs"]}},function(e,t){e.exports={name:"conj",category:"Complex",syntax:["conj(x)"],description:"Compute the complex conjugate of a complex value. If x = a+bi, the complex conjugate is a-bi.",examples:["conj(2 + 3i)","conj(2 - 3i)","conj(-5.2i)"],seealso:["re","im","abs","arg"]}},function(e,t){e.exports={name:"re",category:"Complex",syntax:["re(x)"],description:"Get the real part of a complex number.",examples:["re(2 + 3i)","im(2 + 3i)","re(-5.2i)","re(2.4)"],seealso:["im","conj","abs","arg"]}},function(e,t){e.exports={name:"im",category:"Complex",syntax:["im(x)"],description:"Get the imaginary part of a complex number.",examples:["im(2 + 3i)","re(2 + 3i)","im(-5.2i)","im(2.4)"],seealso:["re","conj","abs","arg"]}},function(e,t){e.exports={name:"eval",category:"Expression",syntax:["eval(expression)","eval([expr1, expr2, expr3, ...])"],description:"Evaluate an expression or an array with expressions.",examples:['eval("2 + 3")','eval("sqrt(" + 4 + ")")'],seealso:[]}},function(e,t){e.exports={name:"help",category:"Expression",syntax:["help(object)","help(string)"],description:"Display documentation on a function or data type.",examples:["help(sqrt)",'help("complex")'],seealso:[]}},function(e,t){e.exports={name:"distance",category:"Geometry",syntax:["distance([x1, y1], [x2, y2])","distance([[x1, y1], [x2, y2])"],description:"Calculates the Euclidean distance between two points.",examples:["distance([0,0], [4,4])","distance([[0,0], [4,4]])"],seealso:[]}},function(e,t){e.exports={name:"intersect",category:"Geometry",syntax:["intersect(expr1, expr2, expr3, expr4)","intersect(expr1, expr2, expr3)"],description:"Computes the intersection point of lines and/or planes.",examples:["intersect([0, 0], [10, 10], [10, 0], [0, 10])","intersect([1, 0, 1], [4, -2, 2], [1, 1, 1, 6])"],seealso:[]}},function(e,t){e.exports={name:"and",category:"Logical",syntax:["x and y","and(x, y)"],description:"Logical and. Test whether two values are both defined with a nonzero/nonempty value.",examples:["true and false","true and true","2 and 4"],seealso:["not","or","xor"]}},function(e,t){e.exports={name:"not",category:"Logical",syntax:["not x","not(x)"],description:"Logical not. Flips the boolean value of given argument.",examples:["not true","not false","not 2","not 0"],seealso:["and","or","xor"]}},function(e,t){e.exports={name:"or",category:"Logical",syntax:["x or y","or(x, y)"],description:"Logical or. Test if at least one value is defined with a nonzero/nonempty value.",examples:["true or false","false or false","0 or 4"],seealso:["not","and","xor"]}},function(e,t){e.exports={name:"xor",category:"Logical",syntax:["x xor y","xor(x, y)"],description:"Logical exclusive or, xor. Test whether one and only one value is defined with a nonzero/nonempty value.",examples:["true xor false","false xor false","true xor true","0 xor 4"],seealso:["not","and","or"]}},function(e,t){e.exports={name:"concat",category:"Matrix",syntax:["concat(A, B, C, ...)","concat(A, B, C, ..., dim)"],description:"Concatenate matrices. By default, the matrices are concatenated by the last dimension. The dimension on which to concatenate can be provided as last argument.",examples:["A = [1, 2; 5, 6]","B = [3, 4; 7, 8]","concat(A, B)","concat(A, B, 1)","concat(A, B, 2)"],seealso:["det","diag","eye","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"cross",category:"Matrix",syntax:["cross(A, B)"],description:"Calculate the cross product for two vectors in three dimensional space.",examples:["cross([1, 1, 0], [0, 1, 1])","cross([3, -3, 1], [4, 9, 2])","cross([2, 3, 4], [5, 6, 7])"],seealso:["multiply","dot"]}},function(e,t){e.exports={name:"det",category:"Matrix",syntax:["det(x)"],description:"Calculate the determinant of a matrix",examples:["det([1, 2; 3, 4])","det([-2, 2, 3; -1, 1, 3; 2, 0, -1])"],seealso:["concat","diag","eye","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"diag",category:"Matrix",syntax:["diag(x)","diag(x, k)"],description:"Create a diagonal matrix or retrieve the diagonal of a matrix. When x is a vector, a matrix with the vector values on the diagonal will be returned. When x is a matrix, a vector with the diagonal values of the matrix is returned. When k is provided, the k-th diagonal will be filled in or retrieved, if k is positive, the values are placed on the super diagonal. When k is negative, the values are placed on the sub diagonal.",examples:["diag(1:3)","diag(1:3, 1)","a = [1, 2, 3; 4, 5, 6; 7, 8, 9]","diag(a)"],seealso:["concat","det","eye","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"dot",category:"Matrix",syntax:["dot(A, B)","A * B"],description:"Calculate the dot product of two vectors. The dot product of A = [a1, a2, a3, ..., an] and B = [b1, b2, b3, ..., bn] is defined as dot(A, B) = a1 * b1 + a2 * b2 + a3 * b3 + ... + an * bn",examples:["dot([2, 4, 1], [2, 2, 3])","[2, 4, 1] * [2, 2, 3]"],seealso:["multiply","cross"]}},function(e,t){e.exports={name:"eye",category:"Matrix",syntax:["eye(n)","eye(m, n)","eye([m, n])"],description:"Returns the identity matrix with size m-by-n. The matrix has ones on the diagonal and zeros elsewhere.",examples:["eye(3)","eye(3, 5)","a = [1, 2, 3; 4, 5, 6]","eye(size(a))"],seealso:["concat","det","diag","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"filter",category:"Matrix",syntax:["filter(x, test)"],description:"Filter items in a matrix.",examples:["isPositive(x) = x > 0","filter([6, -2, -1, 4, 3], isPositive)","filter([6, -2, 0, 1, 0], x != 0)"],seealso:["sort","map","forEach"] -}},function(e,t){e.exports={name:"flatten",category:"Matrix",syntax:["flatten(x)"],description:"Flatten a multi dimensional matrix into a single dimensional matrix.",examples:["a = [1, 2, 3; 4, 5, 6]","size(a)","b = flatten(a)","size(b)"],seealso:["concat","resize","size","squeeze"]}},function(e,t){e.exports={name:"forEach",category:"Matrix",syntax:["forEach(x, callback)"],description:"Iterates over all elements of a matrix/array, and executes the given callback function.",examples:["forEach([1, 2, 3], function(val) { console.log(val) })"],seealso:["map","sort","filter"]}},function(e,t){e.exports={name:"inv",category:"Matrix",syntax:["inv(x)"],description:"Calculate the inverse of a matrix",examples:["inv([1, 2; 3, 4])","inv(4)","1 / 4"],seealso:["concat","det","diag","eye","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"kron",category:"Matrix",syntax:["kron(x, y)"],description:"Calculates the kronecker product of 2 matrices or vectors.",examples:["kron([[1, 0], [0, 1]], [[1, 2], [3, 4]])","kron([1,1], [2,3,4])"],seealso:["multiply","dot","cross"]}},function(e,t){e.exports={name:"map",category:"Matrix",syntax:["map(x, callback)"],description:"Create a new matrix or array with the results of the callback function executed on each entry of the matrix/array.",examples:["map([1, 2, 3], square)"],seealso:["filter","forEach"]}},function(e,t){e.exports={name:"ones",category:"Matrix",syntax:["ones(m)","ones(m, n)","ones(m, n, p, ...)","ones([m])","ones([m, n])","ones([m, n, p, ...])"],description:"Create a matrix containing ones.",examples:["ones(3)","ones(3, 5)","ones([2,3]) * 4.5","a = [1, 2, 3; 4, 5, 6]","ones(size(a))"],seealso:["concat","det","diag","eye","inv","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"partitionSelect",category:"Matrix",syntax:["partitionSelect(x, k)","partitionSelect(x, k, compare)"],description:"Partition-based selection of an array or 1D matrix. Will find the kth smallest value, and mutates the input array. Uses Quickselect.",examples:["partitionSelect([5, 10, 1], 2)",'partitionSelect(["C", "B", "A", "D"], 1)'],seealso:["sort"]}},function(e,t){e.exports={name:"range",category:"Type",syntax:["start:end","start:step:end","range(start, end)","range(start, end, step)","range(string)"],description:"Create a range. Lower bound of the range is included, upper bound is excluded.",examples:["1:5","3:-1:-3","range(3, 7)","range(0, 12, 2)",'range("4:10")',"a = [1, 2, 3, 4; 5, 6, 7, 8]","a[1:2, 1:2]"],seealso:["concat","det","diag","eye","inv","ones","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"resize",category:"Matrix",syntax:["resize(x, size)","resize(x, size, defaultValue)"],description:"Resize a matrix.",examples:["resize([1,2,3,4,5], [3])","resize([1,2,3], [5])","resize([1,2,3], [5], -1)","resize(2, [2, 3])",'resize("hello", [8], "!")'],seealso:["size","subset","squeeze","reshape"]}},function(e,t){e.exports={name:"reshape",category:"Matrix",syntax:["reshape(x, sizes)"],description:"Reshape a multi dimensional array to fit the specified dimensions.",examples:["reshape([1, 2, 3, 4, 5, 6], [2, 3])","reshape([[1, 2], [3, 4]], [1, 4])","reshape([[1, 2], [3, 4]], [4])"],seealso:["size","squeeze","resize"]}},function(e,t){e.exports={name:"size",category:"Matrix",syntax:["size(x)"],description:"Calculate the size of a matrix.",examples:["size(2.3)",'size("hello world")',"a = [1, 2; 3, 4; 5, 6]","size(a)","size(1:6)"],seealso:["concat","det","diag","eye","inv","ones","range","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"sort",category:"Matrix",syntax:["sort(x)","sort(x, compare)"],description:'Sort the items in a matrix. Compare can be a string "asc", "desc", "natural", or a custom sort function.',examples:["sort([5, 10, 1])",'sort(["C", "B", "A", "D"])',"sortByLength(a, b) = size(a)[1] - size(b)[1]",'sort(["Langdon", "Tom", "Sara"], sortByLength)','sort(["10", "1", "2"], "natural")'],seealso:["map","filter","forEach"]}},function(e,t){e.exports={name:"squeeze",category:"Matrix",syntax:["squeeze(x)"],description:"Remove inner and outer singleton dimensions from a matrix.",examples:["a = zeros(3,2,1)","size(squeeze(a))","b = zeros(1,1,3)","size(squeeze(b))"],seealso:["concat","det","diag","eye","inv","ones","range","size","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"subset",category:"Matrix",syntax:["value(index)","value(index) = replacement","subset(value, [index])","subset(value, [index], replacement)"],description:"Get or set a subset of a matrix or string. Indexes are one-based. Both the ranges lower-bound and upper-bound are included.",examples:["d = [1, 2; 3, 4]","e = []","e[1, 1:2] = [5, 6]","e[2, :] = [7, 8]","f = d * e","f[2, 1]","f[:, 1]"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","trace","transpose","zeros"]}},function(e,t){e.exports={name:"trace",category:"Matrix",syntax:["trace(A)"],description:"Calculate the trace of a matrix: the sum of the elements on the main diagonal of a square matrix.",examples:["A = [1, 2, 3; -1, 2, 3; 2, 0, 3]","trace(A)"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","subset","transpose","zeros"]}},function(e,t){e.exports={name:"transpose",category:"Matrix",syntax:["x'","transpose(x)"],description:"Transpose a matrix",examples:["a = [1, 2, 3; 4, 5, 6]","a'","transpose(a)"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","subset","trace","zeros"]}},function(e,t){e.exports={name:"zeros",category:"Matrix",syntax:["zeros(m)","zeros(m, n)","zeros(m, n, p, ...)","zeros([m])","zeros([m, n])","zeros([m, n, p, ...])"],description:"Create a matrix containing zeros.",examples:["zeros(3)","zeros(3, 5)","a = [1, 2, 3; 4, 5, 6]","zeros(size(a))"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","subset","trace","transpose"]}},function(e,t){e.exports={name:"combinations",category:"Probability",syntax:["combinations(n, k)"],description:"Compute the number of combinations of n items taken k at a time",examples:["combinations(7, 5)"],seealso:["permutations","factorial"]}},function(e,t){e.exports={name:"factorial",category:"Probability",syntax:["n!","factorial(n)"],description:"Compute the factorial of a value",examples:["5!","5 * 4 * 3 * 2 * 1","3!"],seealso:["combinations","permutations","gamma"]}},function(e,t){e.exports={name:"gamma",category:"Probability",syntax:["gamma(n)"],description:"Compute the gamma function. For small values, the Lanczos approximation is used, and for large values the extended Stirling approximation.",examples:["gamma(4)","3!","gamma(1/2)","sqrt(pi)"],seealso:["factorial"]}},function(e,t){e.exports={name:"kldivergence",category:"Probability",syntax:["kldivergence(x, y)"],description:"Calculate the Kullback-Leibler (KL) divergence between two distributions.",examples:["kldivergence([0.7,0.5,0.4], [0.2,0.9,0.5])"],seealso:[]}},function(e,t){e.exports={name:"multinomial",category:"Probability",syntax:["multinomial(A)"],description:"Multinomial Coefficients compute the number of ways of picking a1, a2, ..., ai unordered outcomes from `n` possibilities. multinomial takes one array of integers as an argument. The following condition must be enforced: every ai > 0.",examples:["multinomial([1, 2, 1])"],seealso:["combinations","factorial"]}},function(e,t){e.exports={name:"permutations",category:"Probability",syntax:["permutations(n)","permutations(n, k)"],description:"Compute the number of permutations of n items taken k at a time",examples:["permutations(5)","permutations(5, 3)"],seealso:["combinations","factorial"]}},function(e,t){e.exports={name:"pickRandom",category:"Probability",syntax:["pickRandom(array)","pickRandom(array, number)","pickRandom(array, weights)","pickRandom(array, number, weights)","pickRandom(array, weights, number)"],description:"Pick a random entry from a given array.",examples:["pickRandom(0:10)","pickRandom([1, 3, 1, 6])","pickRandom([1, 3, 1, 6], 2)","pickRandom([1, 3, 1, 6], [2, 3, 2, 1])","pickRandom([1, 3, 1, 6], 2, [2, 3, 2, 1])","pickRandom([1, 3, 1, 6], [2, 3, 2, 1], 2)"],seealso:["random","randomInt"]}},function(e,t){e.exports={name:"random",category:"Probability",syntax:["random()","random(max)","random(min, max)","random(size)","random(size, max)","random(size, min, max)"],description:"Return a random number.",examples:["random()","random(10, 20)","random([2, 3])"],seealso:["pickRandom","randomInt"]}},function(e,t){e.exports={name:"randomInt",category:"Probability",syntax:["randomInt(max)","randomInt(min, max)","randomInt(size)","randomInt(size, max)","randomInt(size, min, max)"],description:"Return a random integer number",examples:["randomInt(10, 20)","randomInt([2, 3], 10)"],seealso:["pickRandom","random"]}},function(e,t){e.exports={name:"compare",category:"Relational",syntax:["compare(x, y)"],description:"Compare two values. Returns 1 if x is larger than y, -1 if x is smaller than y, and 0 if x and y are equal.",examples:["compare(2, 3)","compare(3, 2)","compare(2, 2)","compare(5cm, 40mm)","compare(2, [1, 2, 3])"],seealso:["equal","unequal","smaller","smallerEq","largerEq","compareNatural"]}},function(e,t){e.exports={name:"compareNatural",category:"Relational",syntax:["compareNatural(x, y)"],description:"Compare two values of any type in a deterministic, natural way.",examples:["compareNatural(2, 3)","compareNatural(3, 2)","compareNatural(2, 2)","compareNatural(5cm, 40mm)",'compareNatural("2", "10")',"compareNatural(2 + 3i, 2 + 4i)","compareNatural([1, 2, 4], [1, 2, 3])","compareNatural([1, 5], [1, 2, 3])","compareNatural([1, 2], [1, 2])","compareNatural({a: 2}, {a: 4})"],seealso:["equal","unequal","smaller","smallerEq","largerEq","compare"]}},function(e,t){e.exports={name:"deepEqual",category:"Relational",syntax:["deepEqual(x, y)"],description:"Check equality of two matrices element wise. Returns true if the size of both matrices is equal and when and each of the elements are equal.",examples:["deepEqual([1,3,4], [1,3,4])","deepEqual([1,3,4], [1,3])"],seealso:["equal","unequal","smaller","larger","smallerEq","largerEq","compare"]}},function(e,t){e.exports={name:"equal",category:"Relational",syntax:["x == y","equal(x, y)"],description:"Check equality of two values. Returns true if the values are equal, and false if not.",examples:["2+2 == 3","2+2 == 4","a = 3.2","b = 6-2.8","a == b","50cm == 0.5m"],seealso:["unequal","smaller","larger","smallerEq","largerEq","compare","deepEqual"]}},function(e,t){e.exports={name:"larger",category:"Relational",syntax:["x > y","larger(x, y)"],description:"Check if value x is larger than y. Returns true if x is larger than y, and false if not.",examples:["2 > 3","5 > 2*2","a = 3.3","b = 6-2.8","(a > b)","(b < a)","5 cm > 2 inch"],seealso:["equal","unequal","smaller","smallerEq","largerEq","compare"]}},function(e,t){e.exports={name:"largerEq",category:"Relational",syntax:["x >= y","largerEq(x, y)"],description:"Check if value x is larger or equal to y. Returns true if x is larger or equal to y, and false if not.",examples:["2 >= 1+1","2 > 1+1","a = 3.2","b = 6-2.8","(a >= b)"],seealso:["equal","unequal","smallerEq","smaller","compare"]}},function(e,t){e.exports={name:"smaller",category:"Relational",syntax:["x < y","smaller(x, y)"],description:"Check if value x is smaller than value y. Returns true if x is smaller than y, and false if not.",examples:["2 < 3","5 < 2*2","a = 3.3","b = 6-2.8","(a < b)","5 cm < 2 inch"],seealso:["equal","unequal","larger","smallerEq","largerEq","compare"]}},function(e,t){e.exports={name:"smallerEq",category:"Relational",syntax:["x <= y","smallerEq(x, y)"],description:"Check if value x is smaller or equal to value y. Returns true if x is smaller than y, and false if not.",examples:["2 <= 1+1","2 < 1+1","a = 3.2","b = 6-2.8","(a <= b)"],seealso:["equal","unequal","larger","smaller","largerEq","compare"]}},function(e,t){e.exports={name:"unequal",category:"Relational",syntax:["x != y","unequal(x, y)"],description:"Check unequality of two values. Returns true if the values are unequal, and false if they are equal.",examples:["2+2 != 3","2+2 != 4","a = 3.2","b = 6-2.8","a != b","50cm != 0.5m","5 cm != 2 inch"],seealso:["equal","smaller","larger","smallerEq","largerEq","compare","deepEqual"]}},function(e,t){e.exports={name:"setCartesian",category:"Set",syntax:["setCartesian(set1, set2)"],description:"Create the cartesian product of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setCartesian([1, 2], [3, 4])"],seealso:["setUnion","setIntersect","setDifference","setPowerset"]}},function(e,t){e.exports={name:"setDifference",category:"Set",syntax:["setDifference(set1, set2)"],description:"Create the difference of two (multi)sets: every element of set1, that is not the element of set2. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setDifference([1, 2, 3, 4], [3, 4, 5, 6])","setDifference([[1, 2], [3, 4]], [[3, 4], [5, 6]])"],seealso:["setUnion","setIntersect","setSymDifference"]}},function(e,t){e.exports={name:"setDistinct",category:"Set",syntax:["setDistinct(set)"],description:"Collect the distinct elements of a multiset. A multi-dimension array will be converted to a single-dimension array before the operation.",examples:["setDistinct([1, 1, 1, 2, 2, 3])"],seealso:["setMultiplicity"]}},function(e,t){e.exports={name:"setIntersect",category:"Set",syntax:["setIntersect(set1, set2)"],description:"Create the intersection of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setIntersect([1, 2, 3, 4], [3, 4, 5, 6])","setIntersect([[1, 2], [3, 4]], [[3, 4], [5, 6]])"],seealso:["setUnion","setDifference"]}},function(e,t){e.exports={name:"setIsSubset",category:"Set",syntax:["setIsSubset(set1, set2)"],description:"Check whether a (multi)set is a subset of another (multi)set: every element of set1 is the element of set2. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setIsSubset([1, 2], [3, 4, 5, 6])","setIsSubset([3, 4], [3, 4, 5, 6])"],seealso:["setUnion","setIntersect","setDifference"]}},function(e,t){e.exports={name:"setMultiplicity",category:"Set",syntax:["setMultiplicity(element, set)"],description:"Count the multiplicity of an element in a multiset. A multi-dimension array will be converted to a single-dimension array before the operation.",examples:["setMultiplicity(1, [1, 2, 2, 4])","setMultiplicity(2, [1, 2, 2, 4])"],seealso:["setDistinct","setSize"]}},function(e,t){e.exports={name:"setPowerset",category:"Set",syntax:["setPowerset(set)"],description:"Create the powerset of a (multi)set: the powerset contains very possible subsets of a (multi)set. A multi-dimension array will be converted to a single-dimension array before the operation.",examples:["setPowerset([1, 2, 3])"],seealso:["setCartesian"]}},function(e,t){e.exports={name:"setSize",category:"Set",syntax:["setSize(set)","setSize(set, unique)"],description:'Count the number of elements of a (multi)set. When the second parameter "unique" is true, count only the unique values. A multi-dimension array will be converted to a single-dimension array before the operation.',examples:["setSize([1, 2, 2, 4])","setSize([1, 2, 2, 4], true)"],seealso:["setUnion","setIntersect","setDifference"]}},function(e,t){e.exports={name:"setSymDifference",category:"Set",syntax:["setSymDifference(set1, set2)"],description:"Create the symmetric difference of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setSymDifference([1, 2, 3, 4], [3, 4, 5, 6])","setSymDifference([[1, 2], [3, 4]], [[3, 4], [5, 6]])"],seealso:["setUnion","setIntersect","setDifference"]}},function(e,t){e.exports={name:"setUnion",category:"Set",syntax:["setUnion(set1, set2)"],description:"Create the union of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setUnion([1, 2, 3, 4], [3, 4, 5, 6])","setUnion([[1, 2], [3, 4]], [[3, 4], [5, 6]])"],seealso:["setIntersect","setDifference"]}},function(e,t){e.exports={name:"erf",category:"Special",syntax:["erf(x)"],description:"Compute the erf function of a value using a rational Chebyshev approximations for different intervals of x",examples:["erf(0.2)","erf(-0.5)","erf(4)"],seealso:[]}},function(e,t){e.exports={name:"mad",category:"Statistics",syntax:["mad(a, b, c, ...)","mad(A)"],description:"Compute the median absolute deviation of a matrix or a list with values. The median absolute deviation is defined as the median of the absolute deviations from the median.",examples:["mad(10, 20, 30)","mad([1, 2, 3])"],seealso:["mean","median","std","abs"]}},function(e,t){e.exports={name:"max",category:"Statistics",syntax:["max(a, b, c, ...)","max(A)","max(A, dim)"],description:"Compute the maximum value of a list of values.",examples:["max(2, 3, 4, 1)","max([2, 3, 4, 1])","max([2, 5; 4, 3])","max([2, 5; 4, 3], 1)","max([2, 5; 4, 3], 2)","max(2.7, 7.1, -4.5, 2.0, 4.1)","min(2.7, 7.1, -4.5, 2.0, 4.1)"],seealso:["mean","median","min","prod","std","sum","var"]}},function(e,t){e.exports={name:"mean",category:"Statistics",syntax:["mean(a, b, c, ...)","mean(A)","mean(A, dim)"],description:"Compute the arithmetic mean of a list of values.",examples:["mean(2, 3, 4, 1)","mean([2, 3, 4, 1])","mean([2, 5; 4, 3])","mean([2, 5; 4, 3], 1)","mean([2, 5; 4, 3], 2)","mean([1.0, 2.7, 3.2, 4.0])"],seealso:["max","median","min","prod","std","sum","var"]}},function(e,t){e.exports={name:"median",category:"Statistics",syntax:["median(a, b, c, ...)","median(A)"],description:"Compute the median of all values. The values are sorted and the middle value is returned. In case of an even number of values, the average of the two middle values is returned.",examples:["median(5, 2, 7)","median([3, -1, 5, 7])"],seealso:["max","mean","min","prod","std","sum","var","quantileSeq"]}},function(e,t){e.exports={name:"min",category:"Statistics",syntax:["min(a, b, c, ...)","min(A)","min(A, dim)"],description:"Compute the minimum value of a list of values.",examples:["min(2, 3, 4, 1)","min([2, 3, 4, 1])","min([2, 5; 4, 3])","min([2, 5; 4, 3], 1)","min([2, 5; 4, 3], 2)","min(2.7, 7.1, -4.5, 2.0, 4.1)","max(2.7, 7.1, -4.5, 2.0, 4.1)"],seealso:["max","mean","median","prod","std","sum","var"]}},function(e,t){e.exports={name:"mode",category:"Statistics",syntax:["mode(a, b, c, ...)","mode(A)","mode(A, a, b, B, c, ...)"],description:"Computes the mode of all values as an array. In case mode being more than one, multiple values are returned in an array.",examples:["mode(2, 1, 4, 3, 1)","mode([1, 2.7, 3.2, 4, 2.7])","mode(1, 4, 6, 1, 6)"],seealso:["max","mean","min","median","prod","std","sum","var"]}},function(e,t){e.exports={name:"prod",category:"Statistics",syntax:["prod(a, b, c, ...)","prod(A)"],description:"Compute the product of all values.",examples:["prod(2, 3, 4)","prod([2, 3, 4])","prod([2, 5; 4, 3])"],seealso:["max","mean","min","median","min","std","sum","var"]}},function(e,t){e.exports={name:"quantileSeq",category:"Statistics",syntax:["quantileSeq(A, prob[, sorted])","quantileSeq(A, [prob1, prob2, ...][, sorted])","quantileSeq(A, N[, sorted])"],description:"Compute the prob order quantile of a matrix or a list with values. The sequence is sorted and the middle value is returned. Supported types of sequence values are: Number, BigNumber, Unit Supported types of probablity are: Number, BigNumber. \n\nIn case of a (multi dimensional) array or matrix, the prob order quantile of all elements will be calculated.",examples:["quantileSeq([3, -1, 5, 7], 0.5)","quantileSeq([3, -1, 5, 7], [1/3, 2/3])","quantileSeq([3, -1, 5, 7], 2)","quantileSeq([-1, 3, 5, 7], 0.5, true)"],seealso:["mean","median","min","max","prod","std","sum","var"]}},function(e,t){e.exports={name:"std",category:"Statistics",syntax:["std(a, b, c, ...)","std(A)","std(A, normalization)"],description:'Compute the standard deviation of all values, defined as std(A) = sqrt(var(A)). Optional parameter normalization can be "unbiased" (default), "uncorrected", or "biased".',examples:["std(2, 4, 6)","std([2, 4, 6, 8])",'std([2, 4, 6, 8], "uncorrected")','std([2, 4, 6, 8], "biased")',"std([1, 2, 3; 4, 5, 6])"],seealso:["max","mean","min","median","min","prod","sum","var"]}},function(e,t){e.exports={name:"sum",category:"Statistics",syntax:["sum(a, b, c, ...)","sum(A)"],description:"Compute the sum of all values.",examples:["sum(2, 3, 4, 1)","sum([2, 3, 4, 1])","sum([2, 5; 4, 3])"],seealso:["max","mean","median","min","prod","std","sum","var"]}},function(e,t){e.exports={name:"var",category:"Statistics",syntax:["var(a, b, c, ...)","var(A)","var(A, normalization)"],description:'Compute the variance of all values. Optional parameter normalization can be "unbiased" (default), "uncorrected", or "biased".',examples:["var(2, 4, 6)","var([2, 4, 6, 8])",'var([2, 4, 6, 8], "uncorrected")','var([2, 4, 6, 8], "biased")',"var([1, 2, 3; 4, 5, 6])"],seealso:["max","mean","min","median","min","prod","std","sum"]}},function(e,t){e.exports={name:"acos",category:"Trigonometry",syntax:["acos(x)"],description:"Compute the inverse cosine of a value in radians.",examples:["acos(0.5)","acos(cos(2.3))"],seealso:["cos","atan","asin"]}},function(e,t){e.exports={name:"acosh",category:"Trigonometry",syntax:["acosh(x)"],description:"Calculate the hyperbolic arccos of a value, defined as `acosh(x) = ln(sqrt(x^2 - 1) + x)`.",examples:["acosh(1.5)"],seealso:["cosh","asinh","atanh"]}},function(e,t){e.exports={name:"acot",category:"Trigonometry",syntax:["acot(x)"],description:"Calculate the inverse cotangent of a value.",examples:["acot(0.5)","acot(cot(0.5))","acot(2)"],seealso:["cot","atan"]}},function(e,t){e.exports={name:"acoth",category:"Trigonometry",syntax:["acoth(x)"],description:"Calculate the hyperbolic arccotangent of a value, defined as `acoth(x) = (ln((x+1)/x) + ln(x/(x-1))) / 2`.",examples:["acoth(2)","acoth(0.5)"],seealso:["acsch","asech"]}},function(e,t){e.exports={name:"acsc",category:"Trigonometry",syntax:["acsc(x)"],description:"Calculate the inverse cotangent of a value.",examples:["acsc(2)","acsc(csc(0.5))","acsc(0.5)"],seealso:["csc","asin","asec"]}},function(e,t){e.exports={name:"acsch",category:"Trigonometry",syntax:["acsch(x)"],description:"Calculate the hyperbolic arccosecant of a value, defined as `acsch(x) = ln(1/x + sqrt(1/x^2 + 1))`.",examples:["acsch(0.5)"],seealso:["asech","acoth"]}},function(e,t){e.exports={name:"asec",category:"Trigonometry",syntax:["asec(x)"],description:"Calculate the inverse secant of a value.",examples:["asec(0.5)","asec(sec(0.5))","asec(2)"],seealso:["acos","acot","acsc"]}},function(e,t){e.exports={name:"asech",category:"Trigonometry",syntax:["asech(x)"],description:"Calculate the inverse secant of a value.",examples:["asech(0.5)"],seealso:["acsch","acoth"]}},function(e,t){e.exports={name:"asin",category:"Trigonometry",syntax:["asin(x)"],description:"Compute the inverse sine of a value in radians.",examples:["asin(0.5)","asin(sin(0.5))"],seealso:["sin","acos","atan"]}},function(e,t){e.exports={name:"asinh",category:"Trigonometry",syntax:["asinh(x)"],description:"Calculate the hyperbolic arcsine of a value, defined as `asinh(x) = ln(x + sqrt(x^2 + 1))`.",examples:["asinh(0.5)"],seealso:["acosh","atanh"]}},function(e,t){e.exports={name:"atan",category:"Trigonometry",syntax:["atan(x)"],description:"Compute the inverse tangent of a value in radians.",examples:["atan(0.5)","atan(tan(0.5))"],seealso:["tan","acos","asin"]}},function(e,t){e.exports={name:"atanh",category:"Trigonometry",syntax:["atanh(x)"],description:"Calculate the hyperbolic arctangent of a value, defined as `atanh(x) = ln((1 + x)/(1 - x)) / 2`.",examples:["atanh(0.5)"],seealso:["acosh","asinh"]}},function(e,t){e.exports={name:"atan2",category:"Trigonometry",syntax:["atan2(y, x)"],description:"Computes the principal value of the arc tangent of y/x in radians.",examples:["atan2(2, 2) / pi","angle = 60 deg in rad","x = cos(angle)","y = sin(angle)","atan2(y, x)"],seealso:["sin","cos","tan"]}},function(e,t){e.exports={name:"cos",category:"Trigonometry",syntax:["cos(x)"],description:"Compute the cosine of x in radians.",examples:["cos(2)","cos(pi / 4) ^ 2","cos(180 deg)","cos(60 deg)","sin(0.2)^2 + cos(0.2)^2"],seealso:["acos","sin","tan"]}},function(e,t){e.exports={name:"cosh",category:"Trigonometry",syntax:["cosh(x)"],description:"Compute the hyperbolic cosine of x in radians.",examples:["cosh(0.5)"],seealso:["sinh","tanh","coth"]}},function(e,t){e.exports={name:"cot",category:"Trigonometry",syntax:["cot(x)"],description:"Compute the cotangent of x in radians. Defined as 1/tan(x)",examples:["cot(2)","1 / tan(2)"],seealso:["sec","csc","tan"]}},function(e,t){e.exports={name:"coth",category:"Trigonometry",syntax:["coth(x)"],description:"Compute the hyperbolic cotangent of x in radians.",examples:["coth(2)","1 / tanh(2)"],seealso:["sech","csch","tanh"]}},function(e,t){e.exports={name:"csc",category:"Trigonometry",syntax:["csc(x)"],description:"Compute the cosecant of x in radians. Defined as 1/sin(x)",examples:["csc(2)","1 / sin(2)"],seealso:["sec","cot","sin"]}},function(e,t){e.exports={name:"csch",category:"Trigonometry",syntax:["csch(x)"],description:"Compute the hyperbolic cosecant of x in radians. Defined as 1/sinh(x)",examples:["csch(2)","1 / sinh(2)"],seealso:["sech","coth","sinh"]}},function(e,t){e.exports={name:"sec",category:"Trigonometry",syntax:["sec(x)"],description:"Compute the secant of x in radians. Defined as 1/cos(x)",examples:["sec(2)","1 / cos(2)"],seealso:["cot","csc","cos"]}},function(e,t){e.exports={name:"sech",category:"Trigonometry",syntax:["sech(x)"],description:"Compute the hyperbolic secant of x in radians. Defined as 1/cosh(x)",examples:["sech(2)","1 / cosh(2)"],seealso:["coth","csch","cosh"]}},function(e,t){e.exports={name:"sin",category:"Trigonometry",syntax:["sin(x)"],description:"Compute the sine of x in radians.",examples:["sin(2)","sin(pi / 4) ^ 2","sin(90 deg)","sin(30 deg)","sin(0.2)^2 + cos(0.2)^2"],seealso:["asin","cos","tan"]}},function(e,t){e.exports={name:"sinh",category:"Trigonometry",syntax:["sinh(x)"],description:"Compute the hyperbolic sine of x in radians.",examples:["sinh(0.5)"],seealso:["cosh","tanh"]}},function(e,t){e.exports={name:"tan",category:"Trigonometry",syntax:["tan(x)"],description:"Compute the tangent of x in radians.",examples:["tan(0.5)","sin(0.5) / cos(0.5)","tan(pi / 4)","tan(45 deg)"],seealso:["atan","sin","cos"]}},function(e,t){e.exports={name:"tanh",category:"Trigonometry",syntax:["tanh(x)"],description:"Compute the hyperbolic tangent of x in radians.",examples:["tanh(0.5)","sinh(0.5) / cosh(0.5)"],seealso:["sinh","cosh"]}},function(e,t){e.exports={name:"to",category:"Units",syntax:["x to unit","to(x, unit)"],description:"Change the unit of a value.",examples:["5 inch to cm","3.2kg to g","16 bytes in bits"],seealso:[]}},function(e,t){e.exports={name:"clone",category:"Utils",syntax:["clone(x)"],description:"Clone a variable. Creates a copy of primitive variables,and a deep copy of matrices",examples:["clone(3.5)","clone(2 - 4i)","clone(45 deg)","clone([1, 2; 3, 4])",'clone("hello world")'],seealso:[]}},function(e,t){e.exports={name:"format",category:"Utils",syntax:["format(value)","format(value, precision)"],description:"Format a value of any type as string.",examples:["format(2.3)","format(3 - 4i)","format([])","format(pi, 3)"],seealso:["print"]}},function(e,t){e.exports={name:"isNaN",category:"Utils",syntax:["isNaN(x)"],description:"Test whether a value is NaN (not a number)",examples:["isNaN(2)","isNaN(0 / 0)","isNaN(NaN)","isNaN(Infinity)"],seealso:["isNegative","isNumeric","isPositive","isZero"]}},function(e,t){e.exports={name:"isInteger",category:"Utils",syntax:["isInteger(x)"],description:"Test whether a value is an integer number.",examples:["isInteger(2)","isInteger(3.5)","isInteger([3, 0.5, -2])"],seealso:["isNegative","isNumeric","isPositive","isZero"]}},function(e,t){e.exports={name:"isNegative",category:"Utils",syntax:["isNegative(x)"],description:"Test whether a value is negative: smaller than zero.",examples:["isNegative(2)","isNegative(0)","isNegative(-4)","isNegative([3, 0.5, -2])"],seealso:["isInteger","isNumeric","isPositive","isZero"]}},function(e,t){e.exports={name:"isNumeric",category:"Utils",syntax:["isNumeric(x)"],description:"Test whether a value is a numeric value. Returns true when the input is a number, BigNumber, Fraction, or boolean.",examples:["isNumeric(2)","isNumeric(0)","isNumeric(bignumber(500))","isNumeric(fraction(0.125))",'isNumeric("3")',"isNumeric(2 + 3i)",'isNumeric([2.3, "foo", false])'],seealso:["isInteger","isZero","isNegative","isPositive","isNaN"]}},function(e,t){e.exports={name:"isPositive",category:"Utils",syntax:["isPositive(x)"],description:"Test whether a value is positive: larger than zero.",examples:["isPositive(2)","isPositive(0)","isPositive(-4)","isPositive([3, 0.5, -2])"],seealso:["isInteger","isNumeric","isNegative","isZero"]}},function(e,t){e.exports={name:"isPrime",category:"Utils",syntax:["isPrime(x)"],description:"Test whether a value is prime: has no divisors other than itself and one.",examples:["isPrime(3)","isPrime(-2)","isPrime([2, 17, 100])"],seealso:["isInteger","isNumeric","isNegative","isZero"]}},function(e,t){e.exports={name:"isZero",category:"Utils",syntax:["isZero(x)"],description:"Test whether a value is zero.",examples:["isZero(2)","isZero(0)","isZero(-4)","isZero([3, 0, -2, 0])"],seealso:["isInteger","isNumeric","isNegative","isPositive"]}},function(e,t){e.exports={name:"typeof",category:"Utils",syntax:["typeof(x)"],description:"Get the type of a variable.",examples:["typeof(3.5)","typeof(2 - 4i)","typeof(45 deg)",'typeof("hello world")'],seealso:[]}},function(e,t,r){e.exports=[r(384),r(386),r(387),r(388),r(110)]},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(39));return a("compile",{string:function(e){return o(e).compile()},"Array | Matrix":function(e){return i(e,function(e){return o(e).compile()})}})}var i=r(1);t.name="compile",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var s=n(r(22)),u=n(r(0));return function(e,t,r){try{if(Array.isArray(e))return u(e).subset(t,r).valueOf();if(e&&"function"==typeof e.subset)return e.subset(t,r);if("string"==typeof e)return s(e,t,r);if("object"==typeof e){if(!t.isObjectProperty())throw TypeError("Cannot apply a numeric index as object property");return a(e,t.getObjectProperty(),r),e}throw new TypeError("Cannot apply index: unsupported type of object")}catch(e){throw i(e)}}}var i=r(41).transform,a=r(13).setSafeProperty;t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(39));return a("compile",{string:function(e){var t={};return o(e).compile().eval(t)},"string, Object":function(e,t){return o(e).compile().eval(t)},"Array | Matrix":function(e){var t={};return i(e,function(e){return o(e).compile().eval(t)})},"Array | Matrix, Object":function(e,t){return i(e,function(e){return o(e).compile().eval(t)})}})}var i=r(1);t.name="eval",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a,o){var s=n(r(99));return a("help",{any:function(t){var r,n=t;if("string"!=typeof t)for(r in o)if(o.hasOwnProperty(r)&&t===o[r]){n=r;break}var a=i(s,n);if(!a)throw new Error('No documentation found on "'+n+'"');return new e.Help(a)}})}var i=r(13).getSafeProperty;t.math=!0,t.name="help",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(39));return i("parse",{"string | Array | Matrix":a,"string | Array | Matrix, Object":a})}t.name="parse",t.factory=n},function(e,t,r){e.exports=[r(102),r(80),r(104),r(105),r(106),r(53),r(78),r(107),r(54),r(14),r(109),r(62),r(63),r(79),r(40),r(390)]},function(e,t,r){"use strict";function n(e,t,r,n){ -function i(){throw new Error("UpdateNode is deprecated. Use AssignmentNode instead.")}return i}t.name="UpdateNode",t.path="expression.node",t.factory=n},function(e,t,r){e.exports=[r(392),r(393),r(394),r(395),r(396),r(397),r(398),r(399),r(400),r(401)]},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(64));return a("concat",{"...any":function(t){var r=t.length-1,n=t[r];e.isNumber(n)?t[r]=n-1:e.isBigNumber(n)&&(t[r]=n.minus(1));try{return o.apply(null,t)}catch(e){throw i(e)}}})}var i=r(41).transform;t.name="concat",t.path="expression.transform",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){function s(t,r,n){var i,a;return t[0]&&(i=t[0].compile().eval(n)),t[1]&&(a=e.isSymbolNode(t[1])||e.isFunctionAssignmentNode(t[1])?t[1].compile().eval(n):u(t[1],r,n)),f(i,a)}var u=n(r(81)),c=n(r(0));s.rawArgs=!0;var f=a("filter",{"Array, function":i,"Matrix, function":function(e,t){return c(i(e.toArray(),t))},"Array, RegExp":o,"Matrix, RegExp":function(e,t){return c(o(e.toArray(),t))}});return f.toTex=void 0,s}function i(e,t){var r=s(t);return a(e,function(e,n,i){return 1===r?t(e):2===r?t(e,[n+1]):t(e,[n+1],i)})}var a=r(2).filter,o=r(2).filterRegExp,s=r(32).maxArgumentCount;t.name="filter",t.path="expression.transform",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function s(t,r,n){var i,a;return t[0]&&(i=t[0].compile().eval(n)),t[1]&&(a=e.isSymbolNode(t[1])||e.isFunctionAssignmentNode(t[1])?t[1].compile().eval(n):u(t[1],r,n)),c(i,a)}var u=n(r(81));s.rawArgs=!0;var c=o("forEach",{"Array | Matrix, function":function(e,t){var r=i(t),n=function(i,o){Array.isArray(i)?a(i,function(e,t){n(e,o.concat(t+1))}):1===r?t(i):2===r?t(i,o):t(i,o,e)};n(e.valueOf(),[])}});return s}var i=r(32).maxArgumentCount,a=r(2).forEach;t.name="forEach",t.path="expression.transform",t.factory=n},function(e,t,r){"use strict";function n(e,t,r){return function(){for(var t=[],r=0,n=arguments.length;r0?0:2;else if(i&&i.isSet===!0)i=i.map(function(e){return e-1});else if(e.isArray(i)||e.isMatrix(i))i=i.map(function(e){return e-1});else if(e.isNumber(i))i--;else if(e.isBigNumber(i))i=i.toNumber()-1;else if("string"!=typeof i)throw new TypeError("Dimension must be an Array, Matrix, number, string, or Range");t[r]=i}var a=new e.Index;return e.Index.apply(a,t),a}}t.name="index",t.path="expression.transform",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){function o(t,r,n){var i,a;return t[0]&&(i=t[0].compile().eval(n)),t[1]&&(a=e.isSymbolNode(t[1])||e.isFunctionAssignmentNode(t[1])?t[1].compile().eval(n):s(t[1],r,n)),c(i,a)}var s=n(r(81)),u=n(r(0));o.rawArgs=!0;var c=a("map",{"Array, function":function(e,t){return i(e,t,e)},"Matrix, function":function(e,t){return u(i(e.valueOf(),t,e))}});return o}function i(e,t,r){function n(e,a){return Array.isArray(e)?o(e,function(e,t){return n(e,a.concat(t+1))}):1===i?t(e):2===i?t(e,a):t(e,a,r)}var i=a(t);return n(e,[])}var a=r(32).maxArgumentCount,o=r(2).map;t.name="map",t.path="expression.transform",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var s=n(r(112));return o("max",{"...any":function(t){if(2==t.length&&a(t[0])){var r=t[1];e.isNumber(r)?t[1]=r-1:e.isBigNumber(r)&&(t[1]=r.minus(1))}try{return s.apply(null,t)}catch(e){throw i(e)}}})}var i=r(41).transform,a=r(46);t.name="max",t.path="expression.transform",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var s=n(r(113));return o("mean",{"...any":function(t){if(2==t.length&&a(t[0])){var r=t[1];e.isNumber(r)?t[1]=r-1:e.isBigNumber(r)&&(t[1]=r.minus(1))}try{return s.apply(null,t)}catch(e){throw i(e)}}})}var i=r(41).transform,a=r(46);t.name="mean",t.path="expression.transform",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var s=n(r(116));return o("min",{"...any":function(t){if(2==t.length&&a(t[0])){var r=t[1];e.isNumber(r)?t[1]=r-1:e.isBigNumber(r)&&(t[1]=r.minus(1))}try{return s.apply(null,t)}catch(e){throw i(e)}}})}var i=r(41).transform,a=r(46);t.name="min",t.path="expression.transform",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(117));return i("range",{"...any":function(e){var t=e.length-1,r=e[t];return"boolean"!=typeof r&&e.push(!0),a.apply(null,e)}})}t.name="range",t.path="expression.transform",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(22));return a("subset",{"...any":function(e){try{return o.apply(null,e)}catch(e){throw i(e)}}})}var i=r(41).transform;t.name="subset",t.path="expression.transform",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function s(e){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!e)throw new Error('Argument "doc" missing');this.doc=e}var u=n(r(110))();return s.prototype.type="Help",s.prototype.isHelp=!0,s.prototype.toString=function(){var t=this.doc||{},r="\n";if(t.name&&(r+="Name: "+t.name+"\n\n"),t.category&&(r+="Category: "+t.category+"\n\n"),t.description&&(r+="Description:\n "+t.description+"\n\n"),t.syntax&&(r+="Syntax:\n "+t.syntax.join("\n ")+"\n\n"),t.examples){r+="Examples:\n";for(var n=0;n1?(n=l(i,u,o),c.unshift(n),n=l(i,c,o)):n=l(i,r,o)}else n=l(i,r,o);else r=t.args.map(p),n=l(i,r,o);return n;case"ParenthesisNode":return p(t.content);case"AccessorNode":case"ArrayNode":case"AssignmentNode":case"BlockNode":case"FunctionAssignmentNode":case"IndexNode":case"ObjectNode":case"RangeNode":case"UpdateNode":case"ConditionalNode":default:throw"Unimplemented node type in simplifyConstant: "+t.type}}var h=n(r(119)),m=h.isCommutative,d=h.isAssociative,v=h.allChildren,g=h.createMakeNodeFunction,y=a.expression.node.ConstantNode,x=a.expression.node.OperatorNode,w=i({Fraction:f,number:function(e){return e<0?c(new y(-e)):new y(e)},BigNumber:function(e){return e<0?c(new y(e.negated().toString(),"number")):new y(e.toString(),"number")},Complex:function(e){throw"Cannot convert Complex number to Node"}}),b=i({string:function(e){return"BigNumber"===t.number?a.bignumber(e):"Fraction"===t.number?a.fraction(e):u(parseFloat(e))},Fraction:function(e){return e},BigNumber:function(e){return e},number:function(e){return u(e)},Complex:function(e){return 0!==e.im?e:u(e.re)}});return o}r(3).digits;t.math=!0,t.name="simplifyConstant",t.path="algebra.simplify",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n,i){function a(t){if(e.isOperatorNode(t)&&t.args.length<=2){var r=a(t.args[0]),n=t.args[1]&&a(t.args[1]);if("+"===t.op){if(1===t.args.length)return t.args[0];if(e.isConstantNode(r)){if("0"===r.value)return n;if(e.isConstantNode(n)&&r.value&&r.value.length<5&&n.value&&n.value.length<5)return new o(Number(r.value)+Number(n.value))}return e.isConstantNode(n)&&"0"===n.value?r:2===t.args.length&&e.isOperatorNode(n)&&"-"===n.op&&"unaryMinus"===n.fn?new s("-","subtract",[r,n.args[0]]):new s(t.op,t.fn,n?[r,n]:[r])}if("-"===t.op){if(e.isConstantNode(r)&&n){if(e.isConstantNode(n)&&r.value&&r.value.length<5&&n.value&&n.value.length<5)return new o(Number(r.value)-Number(n.value));if("0"===r.value)return new s("-","unaryMinus",[n])}if("subtract"===t.fn&&2===t.args.length)return e.isConstantNode(n)&&"0"===n.value?r:e.isOperatorNode(n)&&"unaryMinus"===n.fn?a(new s("+","add",[r,n.args[0]])):new s(t.op,t.fn,[r,n]);if("unaryMinus"===t.fn)return e.isOperatorNode(r)&&"unaryMinus"===r.fn?r.args[0]:new s(t.op,t.fn,[r]);throw new Error("never happens")}if("*"===t.op){if(e.isConstantNode(r)){if("0"===r.value)return c;if("1"===r.value)return n;if(e.isConstantNode(n)&&r.value&&r.value.length<5&&n.value&&n.value.length<5)return new o(Number(r.value)*Number(n.value))}if(e.isConstantNode(n)){if("0"===n.value)return c;if("1"===n.value)return r;if(e.isOperatorNode(r)&&r.op===t.op){var l=r.args[0];if(e.isConstantNode(l)&&n.value&&n.value.length<5&&l.value&&l.value.length<5){var p=new o(Number(r.args[0].value)*Number(n.value));return new s(t.op,t.fn,[p,r.args[1]])}}return new s(t.op,t.fn,[n,r])}return new s(t.op,t.fn,[r,n])}if("/"===t.op){if(e.isConstantNode(r)){if("0"===r.value)return c;if(e.isConstantNode(n)&&r.value&&r.value.length<5&&("1"===n.value||"2"===n.value||"4"===n.value))return new o(Number(r.value)/Number(n.value))}return new s(t.op,t.fn,[r,n])}if("^"===t.op){if(e.isConstantNode(n)){if("0"===n.value)return f;if("1"===n.value)return r;if(e.isConstantNode(n)&&r.value&&r.value.length<5&&n.value&&n.value.length<2)return new o(i.pow(Number(r.value),Number(n.value)))}return new s(t.op,t.fn,[r,n])}}else{if(e.isParenthesisNode(t)){var h=a(t.content);return e.isParenthesisNode(h)||e.isSymbolNode(h)||e.isConstantNode(h)?h:new ParenthesisNode(h)}if(e.isFunctionNode(t)){var m=t.args.map(a);return 1===m.length&&e.isParenthesisNode(m[0])&&(m[0]=m[0].content),new u(a(t.fn),m)}}return t}var o=i.expression.node.ConstantNode,s=i.expression.node.OperatorNode,u=i.expression.node.FunctionNode,c=new o(0),f=new o(1);return a}t.math=!0,t.name="simplifyCore",t.path="algebra.simplify",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n,i){function a(t,r){if(!r)return t;if(e.isSymbolNode(t)){var n=r[t.name];if(n instanceof o)return a(n,r);if("number"==typeof n)return i.parse(String(n))}else{if(e.isOperatorNode(t)){var f=t.args.map(function(e){return a(e,r)});return new s(t.op,t.fn,f)}if(e.isParenthesisNode(t))return new c(a(t.content,r));if(e.isFunctionNode(t)){var f=t.args.map(function(e){return a(e,r)});return new u(t.name,f)}}return t}var o=i.expression.node.Node,s=i.expression.node.OperatorNode,u=i.expression.node.FunctionNode,c=i.expression.node.ParenthesisNode;return a}t.math=!0,t.name="resolve",t.path="algebra.simplify",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(0)),o=n(r(38)),s=n(r(61)),u=(n(r(120)),n(r(82))),c=(n(r(55)),n(r(121))),f=(n(r(29)),n(r(122))),l=n(r(56)),p=n(r(123)),h=n(r(37)),m=n(r(20)),d=n(r(19)),v=n(r(23)),g=n(r(21)),y=i("qr",{DenseMatrix:function(e){return x(e)},SparseMatrix:function(e){return w(e)},Array:function(e){var t=a(e),r=x(t);return{Q:r.Q.valueOf(),R:r.R.valueOf()}}}),x=function(e){var t,r,n,i=e._size[0],a=e._size[1],y=s([i],"dense"),x=y._data,w=e.clone(),b=w._data,N=o([i],"");for(n=0;n=0;u--)for(f=r[u],l=r[u+1],c=f;c=0;s--)h[s]=-1,u=m[s],u!=-1&&(0===d[x+u]++&&(d[y+u]=s),d[v+s]=d[g+u],d[g+u]=s);for(t.lnz=0,t.m2=a,u=0;u3)return null;var r=t._size,n=r[0],s=r[1],u=0,c=Math.max(16,10*Math.sqrt(s));c=Math.min(s-2,c);var f=l(e,t,n,s,c);a(f,d,null);for(var v,g,y,x,w,b,N,E,M,A,O,T,_,S,C,z,k=f._index,I=f._ptr,B=I[s],P=[],R=[],U=0,q=s+1,L=2*(s+1),j=3*(s+1),F=4*(s+1),D=5*(s+1),H=6*(s+1),$=7*(s+1),G=P,Z=p(s,I,R,U,j,G,L,$,q,H,F,D),V=h(s,I,R,D,F,H,c,q,j,G,L),W=0;VY?(b=y,N=Q,E=R[U+y]-Y):(b=k[Q++],N=I[b],E=R[U+b]),w=1;w<=E;w++)v=k[N++],(M=R[q+v])<=0||(J+=M,R[q+v]=-M,k[ee++]=v,R[L+v]!=-1&&(G[R[L+v]]=G[v]),G[v]!=-1?R[L+G[v]]=R[L+v]:R[j+R[D+v]]=R[L+v]);b!=y&&(I[b]=i(y),R[H+b]=0)}for(0!==Y&&(B=ee),R[D+y]=J,I[y]=K,R[U+y]=ee-K,R[F+y]=-2,Z=m(Z,u,R,H,s),A=K;A=Z?R[H+b]-=M:0!==R[H+b]&&(R[H+b]=R[D+b]+te)}for(A=K;A0?(z+=re,k[S++]=b,C+=b):(I[b]=i(y),R[H+b]=0)}R[F+v]=S-T+1;var ne=S,ie=T+R[U+v];for(Q=_+1;Q=0))for(C=G[v],v=R[$+C],R[$+C]=-1;v!=-1&&R[L+v]!=-1;v=R[L+v],Z++){for(E=R[U+v],O=R[F+v],Q=I[v]+1;Q<=I[v]+E-1;Q++)R[H+k[Q]]=Z;var oe=v;for(g=R[L+v];g!=-1;){var se=R[U+g]===E&&R[F+g]===O;for(Q=I[g]+1;se&&Q<=I[g]+E-1;Q++)R[H+k[Q]]!=Z&&(se=0);se?(I[g]=i(v),R[q+v]+=R[q+g],R[q+g]=0,R[F+g]=-1,g=R[L+g],R[L+oe]=g):(oe=g,g=R[L+g])}}for(Q=K,A=K;A=0;g--)R[q+g]>0||(R[L+g]=R[j+I[g]],R[j+I[g]]=g);for(b=s;b>=0;b--)R[q+b]<=0||I[b]!=-1&&(R[L+b]=R[j+I[b]],R[j+I[b]]=b);for(y=0,v=0;v<=s;v++)I[v]==-1&&(y=o(v,y,R,j,L,P,H));return P.splice(P.length-1,1),P},l=function(e,t,r,n,i){var a=c(t);if(1===e&&n===r)return s(t,a);if(2==e){for(var o=a._index,f=a._ptr,l=0,p=0;pi))for(var m=f[p+1];hs)r[u+h]=0,r[a+h]=-1,p++,t[h]=i(e),r[u+e]++;else{var d=r[c+m];d!=-1&&(f[d]=h),r[l+h]=r[c+m],r[c+m]=h}}return p},m=function(e,t,r,n,i){if(e<2||e+t<0){for(var a=0;a=0;r--)e[r]!=-1&&(o[u+r]=o[s+e[r]],o[s+e[r]]=r);for(r=0;r=1&&M[s]++,2==_.jleaf&&M[_.q]--}t[s]!=-1&&(g[y+s]=t[s])}for(s=0;s=0;){e=n[d];var v=s?s[e]:e;i(p,e)||(a(p,e),n[m+d]=v<0?0:o(p[v]));var g=1;for(c=n[m+d],f=v<0?0:o(p[v+1]);c=0||t.predictable?a(r):new e.Complex(r,0).log().div(Math.LN10)},Complex:function(t){return new e.Complex(t).log().div(Math.LN10)},BigNumber:function(r){return!r.isNegative()||t.predictable?r.log():new e.Complex(r.toNumber(),0).log().div(Math.LN10)},"Array | Matrix":function(e){return i(e,o)}});return o.toTex={1:"\\log_{10}\\left(${args[0]}\\right)"},o}var i=r(1),a=Math.log10||function(e){return Math.log(e)/Math.LN10};t.name="log10",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function a(e,t){if(t>0)return e-t*Math.floor(e/t);if(0===t)return e;throw new Error("Cannot calculate mod for a negative divisor")}var o=n(r(0)),s=r(4),u=n(r(24)),c=n(r(15)),f=n(r(60)),l=n(r(17)),p=n(r(16)),h=n(r(8)),m=n(r(6)),d=i("mod",{"number, number":a,"BigNumber, BigNumber":function(e,t){return t.isZero()?e:e.mod(t)},"Fraction, Fraction":function(e,t){return e.mod(t)},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=f(e,t,d,!1);break;default:r=u(t,e,d,!0)}break;default:switch(t.storage()){case"sparse":r=c(e,t,d,!1);break;default:r=h(e,t,d)}}return r},"Array, Array":function(e,t){return d(o(e),o(t)).valueOf()},"Array, Matrix":function(e,t){return d(o(e),t)},"Matrix, Array":function(e,t){return d(e,o(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=l(e,t,d,!1);break;default:r=m(e,t,d,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=p(t,e,d,!0);break;default:r=m(t,e,d,!0)}return r},"Array, any":function(e,t){return m(o(e),t,d,!1).valueOf()},"any, Array":function(e,t){return m(o(t),e,d,!0).valueOf()}});return d.toTex={2:"\\left(${args[0]}"+s.operators.mod+"${args[1]}\\right)"},d}t.name="mod",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function a(e,t){var r=e.size();if(1==r.length){if(t===Number.POSITIVE_INFINITY||"inf"===t){var n=0;return e.forEach(function(e){var t=o(e);p(t,n)&&(n=t)},!0),n}if(t===Number.NEGATIVE_INFINITY||"-inf"===t){var i;return e.forEach(function(e){var t=o(e);i&&!h(t,i)||(i=t)},!0),i||0}if("fro"===t)return a(e,2);if("number"==typeof t&&!isNaN(t)){if(!l(t,0)){var m=0;return e.forEach(function(e){m=s(u(o(e),t),m)},!0),u(m,1/t)}return Number.POSITIVE_INFINITY}throw new Error("Unsupported parameter value")}if(2==r.length){if(1===t){var g=[],y=0;return e.forEach(function(e,t){var r=t[1],n=s(g[r]||0,o(e));p(n,y)&&(y=n),g[r]=n},!0),y}if(t===Number.POSITIVE_INFINITY||"inf"===t){var x=[],w=0;return e.forEach(function(e,t){var r=t[0],n=s(x[r]||0,o(e));p(n,w)&&(w=n),x[r]=n},!0),w}if("fro"===t)return c(d(f(v(e),e)));if(2===t)throw new Error("Unsupported parameter value, missing implementation of matrix singular value decomposition");throw new Error("Unsupported parameter value")}}var o=n(r(29)),s=n(r(18)),u=n(r(45)),c=n(r(56)),f=n(r(12)),l=n(r(11)),p=n(r(34)),h=n(r(44)),m=n(r(0)),d=n(r(135)),v=n(r(67)),g=i("norm",{number:Math.abs,Complex:function(e){return e.abs()},BigNumber:function(e){return e.abs()},"boolean | null":function(e){return Math.abs(e)},Array:function(e){return a(m(e),2)},Matrix:function(e){return a(e,2)},"number | Complex | BigNumber | boolean | null, number | BigNumber | string":function(e){return g(e)},"Array, number | BigNumber | string":function(e,t){return a(m(e),t)},"Matrix, number | BigNumber | string":function(e,t){return a(e,t)}});return g.toTex={1:"\\left\\|${args[0]}\\right\\|",2:void 0},g}t.name="norm",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function s(t,r){var n=e.BigNumber.precision,i=e.BigNumber.clone({precision:n+2}),a=new e.BigNumber(0),o=new i(1),s=r.isNegative();if(s&&(r=r.neg()),r.isZero())throw new Error("Root must be non-zero");if(t.isNegative()&&!r.abs().mod(2).equals(1))throw new Error("Root must be odd when a is negative.");if(t.isZero())return s?new i(1/0):0;if(!t.isFinite())return s?a:t;var u=t.abs().pow(o.div(r));return u=t.isNeg()?u.neg():u,new e.BigNumber((s?o.div(u):u).toPrecision(n))}var u=n(r(0)),c=n(r(33)),f=n(r(24)),l=n(r(68)),p=n(r(17)),h=n(r(8)),m=n(r(6)),d=o("nthRoot",{number:function(e){return i(e,2)},"number, number":i,BigNumber:function(t){return s(t,new e.BigNumber(2))},Complex:function(e){return a(e,2)},"Complex, number":a,"BigNumber, BigNumber":s,"Array | Matrix":function(e){return d(e,2)},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":if(1!==t.density())throw new Error("Root must be non-zero");r=l(e,t,d);break;default:r=f(t,e,d,!0)}break;default:switch(t.storage()){case"sparse":if(1!==t.density())throw new Error("Root must be non-zero");r=c(e,t,d,!1);break;default:r=h(e,t,d)}}return r},"Array, Array":function(e,t){return d(u(e),u(t)).valueOf()},"Array, Matrix":function(e,t){return d(u(e),t)},"Matrix, Array":function(e,t){return d(e,u(t))},"Matrix, number | BigNumber":function(e,t){var r;switch(e.storage()){case"sparse":r=p(e,t,d,!1);break;default:r=m(e,t,d,!1)}return r},"number | BigNumber, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":if(1!==t.density())throw new Error("Root must be non-zero");r=p(t,e,d,!0);break;default:r=m(t,e,d,!0)}return r},"Array, number | BigNumber":function(e,t){return d(u(e),t).valueOf()},"number | BigNumber, Array":function(e,t){return d(e,u(t)).valueOf()}});return d.toTex={2:"\\sqrt[${args[1]}]{${args[0]}}"},d}function i(e,t){var r=t<0;if(r&&(t=-t),0===t)throw new Error("Root must be non-zero");if(e<0&&Math.abs(t)%2!=1)throw new Error("Root must be odd when a is negative.");if(0==e)return r?1/0:0;if(!isFinite(e))return r?0:e;var n=Math.pow(Math.abs(e),1/t);return n=e<0?-n:n,r?1/n:n}function a(e,t){if(t<0)throw new Error("Root must be greater than zero");if(0===t)throw new Error("Root must be non-zero");if(t%1!==0)throw new Error("Root must be an integer");for(var r=e.arg(),n=e.abs(),i=[],a=Math.pow(n,1/t),o=0;o>t},"BigNumber, BigNumber":a,"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=h(e,t,y,!1);break;default:r=p(t,e,y,!0)}break;default:switch(t.storage()){case"sparse":r=l(e,t,y,!1);break;default:r=v(e,t,y)}}return r},"Array, Array":function(e,t){return y(u(e),u(t)).valueOf()},"Array, Matrix":function(e,t){return y(u(e),t)},"Matrix, Array":function(e,t){return y(e,u(t))},"Matrix, number | BigNumber":function(e,t){if(!c(t,0)){var r;switch(e.storage()){case"sparse":r=d(e,t,y,!1);break;default:r=g(e,t,y,!1)}return r}return e.clone()},"number | BigNumber, Matrix":function(e,t){if(!c(e,0)){var r;switch(t.storage()){case"sparse":r=m(t,e,y,!0);break;default:r=g(t,e,y,!0)}return r}return f(t.size(),t.storage())},"Array, number | BigNumber":function(e,t){return y(u(e),t).valueOf()},"number | BigNumber, Array":function(e,t){return y(e,u(t)).valueOf()}});return y.toTex={2:"\\left(${args[0]}"+s.operators.rightArithShift+"${args[1]}\\right)"},y}var i=r(3).isInteger,a=r(455);t.name="rightArithShift",t.factory=n},function(e,t){e.exports=function(e,t){if(e.isFinite()&&!e.isInteger()||t.isFinite()&&!t.isInteger())throw new Error("Integers expected in function rightArithShift");var r=e.constructor;return e.isNaN()||t.isNaN()||t.isNegative()&&!t.isZero()?new r(NaN):e.isZero()||t.isZero()?e:t.isFinite()?t.lt(55)?e.div(Math.pow(2,t.toNumber())+"").floor():e.div(new r(2).pow(t)).floor():new r(e.isNegative()?-1:e.isFinite()?0:NaN)}},function(e,t,r){"use strict";function n(e,t,n,a){var o=r(4),s=n(r(0)),u=n(r(11)),c=n(r(38)),f=n(r(33)),l=n(r(24)),p=n(r(87)),h=n(r(36)),m=n(r(17)),d=n(r(8)),v=n(r(6)),g=a("rightLogShift",{"number, number":function(e,t){if(!i(e)||!i(t))throw new Error("Integers expected in function rightLogShift");return e>>>t},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=p(e,t,g,!1);break;default:r=l(t,e,g,!0)}break;default:switch(t.storage()){case"sparse":r=f(e,t,g,!1);break;default:r=d(e,t,g)}}return r},"Array, Array":function(e,t){return g(s(e),s(t)).valueOf()},"Array, Matrix":function(e,t){return g(s(e),t)},"Matrix, Array":function(e,t){return g(e,s(t))},"Matrix, number | BigNumber":function(e,t){if(!u(t,0)){var r;switch(e.storage()){case"sparse":r=m(e,t,g,!1);break;default:r=v(e,t,g,!1)}return r}return e.clone()},"number | BigNumber, Matrix":function(e,t){if(!u(e,0)){var r;switch(t.storage()){case"sparse":r=h(t,e,g,!0);break;default:r=v(t,e,g,!0)}return r}return c(t.size(),t.storage())},"Array, number | BigNumber":function(e,t){return g(s(e),t).valueOf()},"number | BigNumber, Array":function(e,t){return g(e,s(t)).valueOf()}});return g.toTex={2:"\\left(${args[0]}"+o.operators.rightLogShift+"${args[1]}\\right)"},g}var i=r(3).isInteger;t.name="rightLogShift",t.factory=n},function(e,t,r){e.exports=[r(458),r(459),r(136),r(460)]},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(18)),o=n(r(136)),s=n(r(57)),u=n(r(48)),c=i("bellNumbers",{"number | BigNumber":function(e){if(!u(e)||s(e))throw new TypeError("Non-negative integer value expected in function bellNumbers");for(var t=0,r=0;r<=e;r++)t=a(t,o(e,r));return t}});return c.toTex={1:"\\mathrm{B}_{${args[0]}}"},c}t.name="bellNumbers",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(70)),o=n(r(20)),s=n(r(55)),u=n(r(48)),c=n(r(34)),f=i("composition",{"number | BigNumber, number | BigNumber":function(e,t){if(!(u(e)&&s(e)&&u(t)&&s(t)))throw new TypeError("Positive integer value expected in function composition");if(c(t,e))throw new TypeError("k must be less than or equal to n in function composition");return a(o(e,-1),o(t,-1))}});return f.toTex=void 0,f}t.name="composition",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(18)),o=n(r(47)),s=n(r(12)),u=n(r(70)),c=n(r(57)),f=n(r(48)),l=i("catalan",{"number | BigNumber":function(e){if(!f(e)||c(e))throw new TypeError("Non-negative integer value expected in function catalan");return o(u(s(e,2),e),a(e,1))}});return l.toTex={1:"\\mathrm{C}_{${args[0]}}"},l}t.name="catalan",t.factory=n},function(e,t,r){e.exports=[r(462),r(123),r(463),r(464)]},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("arg",{number:function(e){return Math.atan2(0,e)},BigNumber:function(t){return e.BigNumber.atan2(0,t)},Complex:function(e){return e.arg()},"Array | Matrix":function(e){return i(e,a)}});return a.toTex={1:"\\arg\\left(${args[0]}\\right)"},a}var i=r(1);t.name="arg",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("im",{number:function(e){return 0},BigNumber:function(t){return new e.BigNumber(0)},Complex:function(e){return e.im},"Array | Matrix":function(e){return i(e,a)}});return a.toTex={1:"\\Im\\left\\lbrace${args[0]}\\right\\rbrace"},a}var i=r(1);t.name="im",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("re",{number:function(e){return e},BigNumber:function(e){return e},Complex:function(e){return e.re},"Array | Matrix":function(e){return i(e,a)}});return a.toTex={1:"\\Re\\left\\lbrace${args[0]}\\right\\rbrace"},a}var i=r(1);t.name="re",t.factory=n},function(e,t,r){e.exports=[r(466),r(467)]},function(e,t,r){"use strict";function n(e,t,n,i){function a(e){return 2===e.length&&"number"==typeof e[0]&&"number"==typeof e[1]}function o(e){return 3===e.length&&"number"==typeof e[0]&&"number"==typeof e[1]&&"number"==typeof e[2]}function s(e){return 4===e.length&&"number"==typeof e[0]&&"number"==typeof e[1]&&"number"==typeof e[2]&&"number"==typeof e[3]}function u(e,r,n,i){var a=e,o=n,s=d(a,r),u=d(o,i),c=s[0]*u[1]-u[0]*s[1];if(l(c)1?[o]:o}var s=n(r(0)),u=n(r(21)),c=n(r(12)),f=a("cross",{"Matrix, Matrix":function(e,t){return s(o(e.toArray(),t.toArray()))},"Matrix, Array":function(e,t){return s(o(e.toArray(),t))},"Array, Matrix":function(e,t){return s(o(e,t.toArray()))},"Array, Array":o});return f.toTex={2:"\\left(${args[0]}\\right)\\times\\left(${args[1]}\\right)"},f}var i=r(2);t.name="cross",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function s(e,t,r,n){if(!a(t))throw new TypeError("Second parameter in function diag must be an integer");var i=t>0?t:0,o=t<0?-t:0;switch(r.length){case 1:return u(e,t,n,r[0],o,i);case 2:return c(e,t,n,r,o,i)}throw new RangeError("Matrix for function diag must be 2 dimensional")}function u(t,r,n,i,a,o){var s=[i+a,i+o],u=e.Matrix.storage(n||"dense"),c=u.diagonal(s,t,r);return null!==n?c:c.valueOf()}function c(t,r,n,i,a,o){if(e.isMatrix(t)){var s=t.diagonal(r);return null!==n?n!==s.storage()?f(s,n):s:s.valueOf()}for(var u=Math.min(i[0]-a,i[1]-o),c=[],l=0;l2||i(t).length>2)throw new RangeError("Vectors with dimensions greater then 2 are not supported expected (Size x = "+JSON.stringify(e.length)+", y = "+JSON.stringify(t.length)+")");var r=[],n=[];return e.map(function(e){return t.map(function(t){return e.map(function(e){return t.map(function(t){return n.push(u(e,t))})},r.push(n=[]))})},r=[])&&r}var s=n(r(0)),u=n(r(23)),c=a("kron",{"Matrix, Matrix":function(e,t){return s(o(e.toArray(),t.toArray()))},"Matrix, Array":function(e,t){return s(o(e.toArray(),t))},"Array, Matrix":function(e,t){return s(o(e,t.toArray()))},"Array, Array":o});return c}var i=r(2).size;t.name="kron",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){function s(t,r){var n=u(t),i=n?new e.BigNumber(1):1;if(c(t),r){var o=f(r);return t.length>0?o.resize(t,i):o}var s=[];return t.length>0?a(s,t,i):s}function u(t){var r=!1;return t.forEach(function(t,n,i){e.isBigNumber(t)&&(r=!0,i[n]=t.toNumber())}),r}function c(e){e.forEach(function(e){if("number"!=typeof e||!i(e)||e<0)throw new Error("Parameters in function ones must be positive integers")})}var f=n(r(0)),l=o("ones",{"":function(){return"Array"===t.matrix?s([]):s([],"default")},"...number | BigNumber | string":function(e){var r=e[e.length-1];if("string"==typeof r){var n=e.pop();return s(e,n)}return"Array"===t.matrix?s(e):s(e,"default")},Array:s,Matrix:function(e){var t=e.storage();return s(e.valueOf(),t)},"Array | Matrix, string":function(e,t){return s(e.valueOf(),t)}});return l.toTex=void 0,l}var i=r(3).isInteger,a=r(2).resize;t.name="ones",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var s=n(r(0)),u=o("reshape",{"Matrix, Array":function(e,t){return e.reshape?e.reshape(t):s(a.reshape(e.valueOf(),t))},"Array, Array":function(e,t){return t.forEach(function(e){if(!i(e))throw new TypeError("Invalid size for dimension: "+e)}),a.reshape(e,t)}});return u.toTex=void 0,u}var i=(r(10),r(3).isInteger),a=r(2);t.name="reshape",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,f){function l(e,t,r){if(void 0!==r){if("string"!=typeof r||1!==r.length)throw new TypeError("Single character expected as defaultValue")}else r=" ";if(1!==t.length)throw new i(t.length,1);var n=t[0];if("number"!=typeof n||!o(n))throw new TypeError("Invalid size, must contain positive integers (size: "+s(t)+")");if(e.length>n)return e.substring(0,n);if(e.lengthv)return 1}for(var g=0,y=Math.max(h.length,m.length);gi)return 1}return 0}},function(e,t,r){"use strict";function n(e,t,n,o){var s=n(r(0)),u=o("squeeze",{Array:function(e){return a.squeeze(i.clone(e))},Matrix:function(e){var t=a.squeeze(e.toArray());return Array.isArray(t)?s(t):t},any:function(e){return i.clone(e)}});return u.toTex=void 0,u}var i=r(5),a=r(2);t.name="squeeze",t.factory=n},function(e,t,r){e.exports=[r(70),r(69),r(137),r(486),r(487),r(488),r(489),r(493),r(494)]},function(e,t,r){"use strict";function n(e,t,n,i){function a(e,t){var r=t.size().length,n=e.size().length;if(r>1)throw new Error("first object must be one dimensional");if(n>1)throw new Error("second object must be one dimensional");if(r!==n)throw new Error("Length of two vectors must be equal");var i=u(e);if(0===i)throw new Error("Sum of elements in first object must be non zero");var a=u(t);if(0===a)throw new Error("Sum of elements in second object must be non zero");var o=s(e,u(e)),h=s(t,u(t)),m=u(c(o,l(f(o,h))));return p(m)?m:Number.NaN}var o=n(r(0)),s=n(r(47)),u=n(r(141)),c=n(r(12)),f=n(r(132)),l=n(r(134)),p=n(r(75)),h=i("kldivergence",{"Array, Array":function(e,t){return a(o(e),o(t))},"Matrix, Array":function(e,t){return a(e,o(t))},"Array, Matrix":function(e,t){return a(o(e),t)},"Matrix, Matrix":function(e,t){return a(e,t)}});return h}t.name="kldivergence",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(18)),s=n(r(12)),u=n(r(47)),c=n(r(69)),f=n(r(48)),l=n(r(55));return a("multinomial",{"Array | Matrix":function(e){var t=0,r=1;return i(e,function(e){if(!f(e)||!l(e))throw new TypeError("Positive integer value expected in function multinomial");t=o(t,e),r=s(r,c(e))}),u(c(t),r)}})}var i=r(42);t.name="multinomial",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,o){var s=n(r(69)),u=o("permutations",{"number | BigNumber":s,"number, number":function(e,t){var r,n;if(!a(e)||e<0)throw new TypeError("Positive integer value expected in function permutations");if(!a(t)||t<0)throw new TypeError("Positive integer value expected in function permutations");if(t>e)throw new TypeError("second argument k must be less than or equal to first argument n");for(r=1,n=e-t+1;n<=e;n++)r*=n;return r},"BigNumber, BigNumber":function(t,r){var n,a;if(!i(t)||!i(r))throw new TypeError("Positive integer value expected in function permutations");if(r.gt(t))throw new TypeError("second argument k must be less than or equal to first argument n");for(n=new e.BigNumber(1),a=t.minus(r).plus(1);a.lte(t);a=a.plus(1))n=n.times(a);return n}});return u.toTex=void 0,u}function i(e){return e.isInteger()&&e.gte(0)}var a=r(3).isInteger;t.name="permutations",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(89)),o=a("uniform").pickRandom;return o.toTex=void 0,o}t.name="pickRandom",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n,o){function s(e){c=null===e?a:i(String(e))}function u(){return c()}var c;return s(t.randomSeed),o.on("config",function(e,t,r){void 0!==r.randomSeed&&s(e.randomSeed)}),u}var i=r(491),a=i();t.factory=n,t.math=!0},function(e,t,r){"use strict";(function(t){function r(e){var t,r=e.length,n=this,i=0,a=n.i=n.j=0,o=n.S=[];for(r||(e=[r++]);i=m;)e/=2,t/=2,r>>>=1;return(e+r)/t}},e.exports.resetGlobal=function(){Math.random=v},i(Math.random(),f)}).call(t,r(492))},function(e,t){var r;r=function(){return this}();try{r=r||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(r=window)}e.exports=r},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(89)),o=a("uniform").random;return o.toTex=void 0,o}t.name="random",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(89)),o=a("uniform").randomInt;return o.toTex=void 0,o}t.name="randomInt",t.factory=n},function(e,t,r){e.exports=[r(49),r(31),r(496),r(30),r(34),r(127),r(44),r(497),r(121)]},function(e,t,r){"use strict";function n(e,t,n,i){function a(e,t){if(Array.isArray(e)){if(Array.isArray(t)){var r=e.length;if(r!==t.length)return!1;for(var n=0;n0;r--)for(var n=0;ne[n+1].length&&(t=e[n],e[n]=e[n+1],e[n+1]=t);return e}var u=n(r(27)),c=n(r(28)),f=n(r(22)),l=n(r(31)),p=a("setPowerset",{"Array | Matrix":function(e){if(0===f(c(e),new u(0)))return[];for(var t=i(Array.isArray(e)?e:e.toArray()).sort(l),r=[],n=0;n.toString(2).length<=t.length;)r.push(o(t,n.toString(2).split("").reverse())),n++;return s(r)}});return p}var i=r(2).flatten;t.name="setPowerset",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=n(r(30)),s=n(r(31)),u=a("setSize",{"Array | Matrix":function(e){return Array.isArray(e)?i(e).length:i(e.toArray()).length},"Array | Matrix, boolean":function(e,t){if(t===!1||0===e.length)return Array.isArray(e)?i(e).length:i(e.toArray()).length;for(var r=i(Array.isArray(e)?e:e.toArray()).sort(s),n=1,a=1;a=f?a(e):t<=o?a(e)*l(t):t<=4?a(e)*(1-p(t)):a(e)*(1-h(t))},BigNumber:function(t){return new e.BigNumber(m(t.toNumber()))},"Array | Matrix":function(e){return i(e,m)}});return m.toTex={1:"erf\\left(${args[0]}\\right)"},m}var i=r(1),a=r(3).sign,o=.46875,s=.5641895835477563,u=[[3.1611237438705655,113.86415415105016,377.485237685302,3209.3775891384694,.18577770618460315],[.5641884969886701,8.883149794388377,66.11919063714163,298.6351381974001,881.952221241769,1712.0476126340707,2051.0783778260716,1230.3393547979972,2.1531153547440383e-8],[.30532663496123236,.36034489994980445,.12578172611122926,.016083785148742275,.0006587491615298378,.016315387137302097]],c=[[23.601290952344122,244.02463793444417,1282.6165260773723,2844.236833439171],[15.744926110709835,117.6939508913125,537.1811018620099,1621.3895745666903,3290.7992357334597,4362.619090143247,3439.3676741437216,1230.3393548037495],[2.568520192289822,1.8729528499234604,.5279051029514285,.06051834131244132,.0023352049762686918]],f=Math.pow(2,53);t.name="erf",t.factory=n},function(e,t,r){e.exports=[r(509),r(112),r(113),r(145),r(116),r(510),r(511),r(512),r(513),r(141),r(146)]},function(e,t,r){"use strict";function n(e,t,n,a){function o(e){if(e=i(e.valueOf()),0===e.length)throw new Error("Cannot calculate median absolute deviation of an empty array");var t=c(e);return c(u(e,function(e){return s(f(e,t))}))}var s=n(r(29)),u=n(r(139)),c=n(r(145)),f=n(r(21)),l=a("mad",{"Array | Matrix":o,"...":function(e){return o(e)}});return l.toTex=void 0,l}var i=r(2).flatten;t.name="mad",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){function a(e){e=i(e.valueOf());var t=e.length;if(0==t)throw new Error("Cannot calculate mode of an empty array");var r={},n=[],a=0;for(var o in e)e[o]in r||(r[e[o]]=0),r[e[o]]++,r[e[o]]==a?n.push(e[o]):r[e[o]]>a&&(a=r[e[o]],n=[e[o]]);return n}var o=n("mode",{"Array | Matrix":a,"...":function(e){return a(e)}});return o}var i=r(2).flatten;t.name="mode",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){function o(e){var t=void 0;if(i(e,function(e){t=void 0===t?e:s(t,e)}),void 0===t)throw new Error("Cannot calculate prod of an empty array");return t}var s=n(r(23)),u=a("prod",{"Array | Matrix":o,"Array | Matrix, number | BigNumber":function(e,t){throw new Error("prod(A, dim) is not yet supported")},"...":function(e){return o(e)}});return u.toTex=void 0,u}var i=r(42);t.name="prod",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,u){function c(t,r,n){var o,u,c;if(arguments.length<2||arguments.length>3)throw new SyntaxError("Function quantileSeq requires two or three parameters");if(s(t)){if(n=n||!1,"boolean"==typeof n){if(u=t.valueOf(),a(r)){if(r<0)throw new Error("N/prob must be non-negative");if(r<=1)return f(u,r,n);if(r>1){if(!i(r))throw new Error("N must be a positive integer");var l=r+1;o=new Array(r);for(var p=0;p4294967295)throw new Error("N must be less than or equal to 2^32-1, as that is the maximum length of an Array");var l=new e.BigNumber(h+1);o=new Array(h);for(var p=0;p1)throw new Error("Probability must be between 0 and 1, inclusive")}else{if(!e.isBigNumber(m))throw new TypeError("Unexpected type of argument in function quantileSeq");if(c=new m.constructor(1),m.isNegative()||m.gt(c))throw new Error("Probability must be between 0 and 1, inclusive")}o[p]=f(u,m,n)}return o}throw new TypeError("Unexpected type of argument in function quantileSeq")}throw new TypeError("Unexpected type of argument in function quantileSeq")}throw new TypeError("Unexpected type of argument in function quantileSeq")}function f(e,t,r){var n=o(e),i=n.length;if(0===i)throw new Error("Cannot calculate quantile of an empty sequence");if(a(t)){var s=t*(i-1),u=s%1;if(0===u){var c=r?n[s]:h(n,s);return d(c),c}var f,v,g=Math.floor(s);if(r)f=n[g],v=n[g+1];else{v=h(n,g+1),f=n[g];for(var y=0;y0&&(f=n[y])}return d(f),d(v),l(p(f,1-u),p(v,u))}var s=t.times(i-1);if(s.isInteger()){s=s.toNumber();var c=r?n[s]:h(n,s);return d(c),c}var f,v,g=s.floor(),u=s.minus(g),x=g.toNumber();if(r)f=n[x],v=n[x+1];else{v=h(n,x+1),f=n[x];for(var y=0;y0&&(f=n[y])}d(f),d(v);var w=new u.constructor(1);return l(p(f,w.minus(u)),p(v,u))}var l=n(r(18)),p=n(r(12)),h=n(r(88)),m=n(r(49)),d=u({"number | BigNumber | Unit":function(e){return e}});return c}var i=r(3).isInteger,a=r(3).isNumber,o=r(2).flatten,s=r(46);t.name="quantileSeq",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){function a(e,t){if(0==e.length)throw new SyntaxError("Function std requires one or more parameters (0 provided)");return o(s.apply(null,arguments))}var o=n(r(56)),s=n(r(146)),u=i("std",{"Array | Matrix":a,"Array | Matrix, string":a,"...":function(e){return a(e)}});return u.toTex=void 0,u}t.name="std",t.factory=n},function(e,t,r){e.exports=[r(98),r(515)]},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("print",{"string, Object":i,"string, Object, number | Object":i});return a.toTex=void 0,a}function i(e,t,r){return e.replace(/\$([\w\.]+)/g,function(e,n){for(var i=n.split("."),s=t[i.shift()];i.length&&void 0!==s;){var u=i.shift();s=u?s[u]:s+"."}return void 0!==s?a(s)?s:o(s,r):e})}var a=r(9).isString,o=r(9).format;t.name="print",t.factory=n},function(e,t,r){e.exports=[r(517),r(147),r(518),r(519),r(520),r(521),r(522),r(523),r(524),r(525),r(526),r(527),r(528),r(529),r(530),r(531),r(532),r(533),r(534),r(535),r(536),r(537),r(538),r(539),r(540)]},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("acos",{number:function(r){return r>=-1&&r<=1||t.predictable?Math.acos(r):new e.Complex(r,0).acos()},Complex:function(e){return e.acos()},BigNumber:function(e){return e.acos()},"Array | Matrix":function(e){return i(e,a)}});return a.toTex={1:"\\cos^{-1}\\left(${args[0]}\\right)"},a}var i=r(1);t.name="acos",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("acot",{number:function(e){return Math.atan(1/e)},Complex:function(e){return e.acot()},BigNumber:function(t){return new e.BigNumber(1).div(t).atan()},"Array | Matrix":function(e){return i(e,a)}});return a.toTex={1:"\\cot^{-1}\\left(${args[0]}\\right)"},a}var i=r(1);t.name="acot",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("acoth",{number:function(r){return r>=1||r<=-1||t.predictable?isFinite(r)?(Math.log((r+1)/r)+Math.log(r/(r-1)))/2:0:new e.Complex(r,0).acoth()},Complex:function(e){return e.acoth()},BigNumber:function(t){return new e.BigNumber(1).div(t).atanh()},"Array | Matrix":function(e){return i(e,a)}});return a.toTex={1:"\\coth^{-1}\\left(${args[0]}\\right)"},a}var i=r(1);t.name="acoth",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("acsc",{number:function(r){return r<=-1||r>=1||t.predictable?Math.asin(1/r):new e.Complex(r,0).acsc()},Complex:function(e){return e.acsc()},BigNumber:function(t){return new e.BigNumber(1).div(t).asin()},"Array | Matrix":function(e){return i(e,a)}});return a.toTex={1:"\\csc^{-1}\\left(${args[0]}\\right)"},a}var i=r(1);t.name="acsc",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("acsch",{number:function(e){return e=1/e,Math.log(e+Math.sqrt(e*e+1))},Complex:function(e){return e.acsch()},BigNumber:function(t){return new e.BigNumber(1).div(t).asinh()},"Array | Matrix":function(e){return i(e,a)}});return a.toTex={1:"\\mathrm{csch}^{-1}\\left(${args[0]}\\right)"},a}var i=r(1);t.name="acsch",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("asec",{number:function(r){return r<=-1||r>=1||t.predictable?Math.acos(1/r):new e.Complex(r,0).asec()},Complex:function(e){return e.asec()},BigNumber:function(t){return new e.BigNumber(1).div(t).acos()},"Array | Matrix":function(e){return i(e,a)}});return a.toTex={1:"\\sec^{-1}\\left(${args[0]}\\right)"},a}var i=r(1);t.name="asec",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,a){var o=(a.find(n(r(147)),["Complex"]),a("asech",{number:function(r){if(r<=1&&r>=-1||t.predictable){r=1/r;var n=Math.sqrt(r*r-1);return r>0||t.predictable?Math.log(n+r):new e.Complex(Math.log(n-r),Math.PI)}return new e.Complex(r,0).asech()},Complex:function(e){return e.asech()},BigNumber:function(t){return new e.BigNumber(1).div(t).acosh()},"Array | Matrix":function(e){return i(e,o)}}));return o.toTex={1:"\\mathrm{sech}^{-1}\\left(${args[0]}\\right)"},o}var i=r(1);t.name="asech",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("asin",{number:function(r){return r>=-1&&r<=1||t.predictable?Math.asin(r):new e.Complex(r,0).asin()},Complex:function(e){return e.asin()},BigNumber:function(e){return e.asin()},"Array | Matrix":function(e){return i(e,a,!0)}});return a.toTex={1:"\\sin^{-1}\\left(${args[0]}\\right)"},a}var i=r(1);t.name="asin",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("asinh",{number:Math.asinh||function(e){return Math.log(Math.sqrt(e*e+1)+e)},Complex:function(e){return e.asinh()},BigNumber:function(e){return e.asinh()},"Array | Matrix":function(e){return i(e,a,!0)}});return a.toTex={1:"\\sinh^{-1}\\left(${args[0]}\\right)"},a}var i=r(1);t.name="asinh",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("atan",{number:function(e){return Math.atan(e)},Complex:function(e){return e.atan()},BigNumber:function(e){return e.atan()},"Array | Matrix":function(e){return i(e,a,!0)}});return a.toTex={1:"\\tan^{-1}\\left(${args[0]}\\right)"},a}var i=r(1);t.name="atan",t.factory=n},function(e,t,r){"use strict";function n(e,t,n,i){var a=n(r(0)),o=n(r(24)),s=n(r(15)),u=n(r(133)),c=n(r(17)),f=n(r(16)),l=n(r(8)),p=n(r(6)),h=i("atan2",{"number, number":Math.atan2,"BigNumber, BigNumber":function(t,r){return e.BigNumber.atan2(t,r)},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=u(e,t,h,!1);break;default:r=o(t,e,h,!0)}break;default:switch(t.storage()){case"sparse":r=s(e,t,h,!1);break;default:r=l(e,t,h)}}return r},"Array, Array":function(e,t){return h(a(e),a(t)).valueOf()},"Array, Matrix":function(e,t){return h(a(e),t)},"Matrix, Array":function(e,t){return h(e,a(t))},"Matrix, number | BigNumber":function(e,t){var r;switch(e.storage()){case"sparse":r=c(e,t,h,!1);break;default:r=p(e,t,h,!1)}return r},"number | BigNumber, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=f(t,e,h,!0);break;default:r=p(t,e,h,!0)}return r},"Array, number | BigNumber":function(e,t){return p(a(e),t,h,!1).valueOf()},"number | BigNumber, Array":function(e,t){return p(a(t),e,h,!0).valueOf()}});return h.toTex={2:"\\mathrm{atan2}\\left(${args}\\right)"},h}t.name="atan2",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var o=n("atanh",{number:function(r){return r<=1&&r>=-1||t.predictable?a(r):new e.Complex(r,0).atanh()},Complex:function(e){return e.atanh()},BigNumber:function(e){return e.atanh()},"Array | Matrix":function(e){return i(e,o,!0)}});return o.toTex={1:"\\tanh^{-1}\\left(${args[0]}\\right)"},o}var i=r(1),a=Math.atanh||function(e){return Math.log((1+e)/(1-e))/2};t.name="atanh",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("cos",{number:Math.cos,Complex:function(e){return e.cos()},BigNumber:function(e){return e.cos()},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function cos is no angle");return a(t.value)},"Array | Matrix":function(e){return i(e,a)}});return a.toTex={1:"\\cos\\left(${args[0]}\\right)"},a}var i=r(1);t.name="cos",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var o=n("cosh",{number:a,Complex:function(e){return e.cosh()},BigNumber:function(e){return e.cosh()},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function cosh is no angle");return o(t.value)},"Array | Matrix":function(e){return i(e,o)}});return o.toTex={1:"\\cosh\\left(${args[0]}\\right)"},o}var i=r(1),a=Math.cosh||function(e){return(Math.exp(e)+Math.exp(-e))/2};t.name="cosh",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("cot",{number:function(e){return 1/Math.tan(e)},Complex:function(e){return e.cot()},BigNumber:function(t){return new e.BigNumber(1).div(t.tan())},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function cot is no angle");return a(t.value)},"Array | Matrix":function(e){return i(e,a)}});return a.toTex={1:"\\cot\\left(${args[0]}\\right)"},a}var i=r(1);t.name="cot",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var o=n("coth",{number:i,Complex:function(e){return e.coth()},BigNumber:function(t){return new e.BigNumber(1).div(t.tanh())},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function coth is no angle");return o(t.value)},"Array | Matrix":function(e){return a(e,o)}});return o.toTex={1:"\\coth\\left(${args[0]}\\right)"},o}function i(e){var t=Math.exp(2*e);return(t+1)/(t-1)}var a=r(1);t.name="coth",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("csc",{number:function(e){return 1/Math.sin(e)},Complex:function(e){return e.csc()},BigNumber:function(t){return new e.BigNumber(1).div(t.sin())},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function csc is no angle");return a(t.value)},"Array | Matrix":function(e){return i(e,a)}});return a.toTex={1:"\\csc\\left(${args[0]}\\right)"},a}var i=r(1);t.name="csc",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var o=n("csch",{number:i,Complex:function(e){return e.csch()},BigNumber:function(t){return new e.BigNumber(1).div(t.sinh())},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function csch is no angle");return o(t.value)},"Array | Matrix":function(e){return a(e,o)}});return o.toTex={1:"\\mathrm{csch}\\left(${args[0]}\\right)"},o}function i(e){return 0==e?Number.POSITIVE_INFINITY:Math.abs(2/(Math.exp(e)-Math.exp(-e)))*o(e)}var a=r(1),o=r(3).sign;t.name="csch",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("sec",{number:function(e){return 1/Math.cos(e)},Complex:function(e){return e.sec()},BigNumber:function(t){return new e.BigNumber(1).div(t.cos())},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sec is no angle");return a(t.value)},"Array | Matrix":function(e){return i(e,a)}});return a.toTex={1:"\\sec\\left(${args[0]}\\right)"},a}var i=r(1);t.name="sec",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var o=n("sech",{number:i,Complex:function(e){return e.sech()},BigNumber:function(t){return new e.BigNumber(1).div(t.cosh())},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sech is no angle");return o(t.value)},"Array | Matrix":function(e){return a(e,o)}});return o.toTex={1:"\\mathrm{sech}\\left(${args[0]}\\right)"},o}function i(e){return 2/(Math.exp(e)+Math.exp(-e))}var a=r(1);t.name="sech",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("sin",{number:Math.sin,Complex:function(e){return e.sin()},BigNumber:function(e){return e.sin()},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sin is no angle");return a(t.value)},"Array | Matrix":function(e){return i(e,a,!0)}});return a.toTex={1:"\\sin\\left(${args[0]}\\right)"},a}var i=r(1);t.name="sin",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var o=n("sinh",{number:a,Complex:function(e){return e.sinh()},BigNumber:function(e){return e.sinh()},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sinh is no angle");return o(t.value)},"Array | Matrix":function(e){return i(e,o,!0)}});return o.toTex={1:"\\sinh\\left(${args[0]}\\right)"},o}var i=r(1),a=Math.sinh||function(e){return(Math.exp(e)-Math.exp(-e))/2};t.name="sinh",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("tan",{number:Math.tan,Complex:function(e){return e.tan()},BigNumber:function(e){return e.tan()},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function tan is no angle");return a(t.value)},"Array | Matrix":function(e){return i(e,a,!0)}});return a.toTex={1:"\\tan\\left(${args[0]}\\right)"},a}var i=r(1);t.name="tan",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var o=n("tanh",{number:a,Complex:function(e){return e.tanh()},BigNumber:function(e){return e.tanh()},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function tanh is no angle");return o(t.value)},"Array | Matrix":function(e){return i(e,o,!0)}});return o.toTex={1:"\\tanh\\left(${args[0]}\\right)"},o}var i=r(1),a=Math.tanh||function(e){var t=Math.exp(2*e);return(t-1)/(t+1)};t.name="tanh",t.factory=n},function(e,t,r){e.exports=[r(542)]},function(e,t,r){"use strict";function n(e,t,n,i){var a=r(4),o=n(r(0)),s=n(r(8)),u=n(r(6)),c=i("to",{"Unit, Unit | string":function(e,t){return e.to(t)},"Matrix, Matrix":function(e,t){return s(e,t,c)},"Array, Array":function(e,t){return c(o(e),o(t)).valueOf()},"Array, Matrix":function(e,t){return c(o(e),t)},"Matrix, Array":function(e,t){return c(e,o(t))},"Matrix, any":function(e,t){return u(e,t,c,!1)},"any, Matrix":function(e,t){return u(t,e,c,!0)},"Array, any":function(e,t){return u(o(e),t,c,!1).valueOf()},"any, Array":function(e,t){return u(o(t),e,c,!0).valueOf()}});return c.toTex={2:"\\left(${args[0]}"+a.operators.to+"${args[1]}\\right)"},c}t.name="to",t.factory=n},function(e,t,r){e.exports=[r(120),r(48),r(57),r(75),r(55),r(544),r(82),r(545),r(76)]},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("isPrime",{number:function(e){if(e<2)return!1;if(2==e)return!0;if(e%2==0)return!1;for(var t=3;t*t<=e;t+=2)if(e%t==0)return!1;return!0},BigNumber:function(t){if(t.lt(2))return!1;if(t.equals(2))return!0;if(t.mod(2).isZero())return!1;for(var r=e.BigNumber(3);r.times(r).lte(t);r=r.plus(1))if(t.mod(r).isZero())return!1;return!0},"Array | Matrix":function(e){return i(e,a)}});return a}var i=r(1);t.name="isPrime",t.factory=n},function(e,t,r){"use strict";function n(e,t,r,n){var a=n("isNaN",{number:function(e){return Number.isNaN(e)},BigNumber:function(e){return e.isNaN()},Fraction:function(e){return!1},Complex:function(e){return e.isNaN()},Unit:function(e){return Number.isNaN(e.value)},"Array | Matrix":function(e){return i(e,Number.isNaN)}});return a}var i=r(1);r(3);t.name="isNaN",t.factory=n},function(e,t,r){e.exports=[r(547)]},function(e,t,r){"use strict";function n(e,t,r,n){return function(t,r){var n=e[r&&r.mathjs];return n&&"function"==typeof n.fromJSON?n.fromJSON(r):r}}t.name="reviver",t.path="json",t.factory=n},function(e,t,r){"use strict";var n=r(50),i=r(10),a=r(51);e.exports=[{name:"ArgumentsError",path:"error",factory:function(){return n}},{name:"DimensionError",path:"error",factory:function(){return i}},{name:"IndexError",path:"error",factory:function(){return a}}]}])}); -//# sourceMappingURL=math.map \ No newline at end of file +!function(r){"use strict";function i(e){var t=function(){var t=Error.apply(this,arguments);t.name=this.name=e,this.stack=t.stack,this.message=t.message},r=function(){};return r.prototype=Error.prototype,t.prototype=new r,t}function a(e,t){return isNaN(e=parseInt(e,10))&&o(),e*t}function o(){throw new f}function s(e,t){if(!(this instanceof s))return new s(e,t);l(e,t),e=s.REDUCE?p(u.d,u.n):1,this.s=u.s,this.n=u.n/e,this.d=u.d/e}var u={s:1,n:0,d:1},c=s.DivisionByZero=i("DivisionByZero"),f=s.InvalidParameter=i("InvalidParameter"),l=function(e,t){var r,n=0,i=1,s=1,f=0,l=0,p=0,h=1,m=1,d=0,g=1,v=1,y=1;if(void 0===e||null===e);else if(void 0!==t)s=(n=e)*(i=t);else switch(typeof e){case"object":"d"in e&&"n"in e?(n=e.n,i=e.d,"s"in e&&(n*=e.s)):0 in e?(n=e[0],1 in e&&(i=e[1])):o(),s=n*i;break;case"number":if(e<0&&(s=e,e=-e),e%1==0)n=e;else if(e>0){for(e>=1&&(e/=m=Math.pow(10,Math.floor(1+Math.log(e)/Math.LN10)));g<=1e7&&y<=1e7;){if(r=(d+v)/(g+y),e===r){g+y<=1e7?(n=d+v,i=g+y):y>g?(n=v,i=y):(n=d,i=g);break}e>r?(d+=v,g+=y):(v+=d,y+=g),g>1e7?(n=v,i=y):(n=d,i=g)}n*=m}else(isNaN(e)||isNaN(t))&&(i=n=NaN);break;case"string":if(null===(g=e.match(/\d+|./g))&&o(),"-"===g[d]?(s=-1,d++):"+"===g[d]&&d++,g.length===d+1?l=a(g[d++],s):"."===g[d+1]||"."===g[d]?("."!==g[d]&&(f=a(g[d++],s)),(++d+1===g.length||"("===g[d+1]&&")"===g[d+3]||"'"===g[d+1]&&"'"===g[d+3])&&(l=a(g[d],s),h=Math.pow(10,g[d].length),d++),("("===g[d]&&")"===g[d+2]||"'"===g[d]&&"'"===g[d+2])&&(p=a(g[d+1],s),m=Math.pow(10,g[d+1].length)-1,d+=3)):"/"===g[d+1]||":"===g[d+1]?(l=a(g[d],s),h=a(g[d+2],1),d+=3):"/"===g[d+3]&&" "===g[d+1]&&(f=a(g[d],s),l=a(g[d+2],s),h=a(g[d+4],1),d+=5),g.length<=d){s=n=p+(i=h*m)*f+m*l;break}default:o()}if(0===i)throw new c;u.s=s<0?-1:1,u.n=Math.abs(n),u.d=Math.abs(i)},p=function(e,t){if(!e)return t;if(!t)return e;for(;;){if(!(e%=t))return t;if(!(t%=e))return e}};s.REDUCE=1,s.prototype={s:1,n:0,d:1,abs:function(){return new s(this.n,this.d)},neg:function(){return new s(-this.s*this.n,this.d)},add:function(e,t){return l(e,t),new s(this.s*this.n*u.d+u.s*this.d*u.n,this.d*u.d)},sub:function(e,t){return l(e,t),new s(this.s*this.n*u.d-u.s*this.d*u.n,this.d*u.d)},mul:function(e,t){return l(e,t),new s(this.s*u.s*this.n*u.n,this.d*u.d)},div:function(e,t){return l(e,t),new s(this.s*u.s*this.n*u.d,this.d*u.n)},clone:function(){return new s(this)},mod:function(e,t){return isNaN(this.n)||isNaN(this.d)?new s(NaN):void 0===e?new s(this.s*this.n%this.d,1):(l(e,t),0===u.n&&0===this.d&&s(0,0),new s(this.s*u.d*this.n%(u.n*this.d),u.d*this.d))},gcd:function(e,t){return l(e,t),new s(p(u.n,this.n),u.d*this.d/p(u.d,this.d))},lcm:function(e,t){return l(e,t),0===u.n&&0===this.n?new s:new s(u.n*this.n/p(u.n,this.n),p(u.d,this.d))},ceil:function(e){return e=Math.pow(10,e||0),isNaN(this.n)||isNaN(this.d)?new s(NaN):new s(Math.ceil(e*this.s*this.n/this.d),e)},floor:function(e){return e=Math.pow(10,e||0),isNaN(this.n)||isNaN(this.d)?new s(NaN):new s(Math.floor(e*this.s*this.n/this.d),e)},round:function(e){return e=Math.pow(10,e||0),isNaN(this.n)||isNaN(this.d)?new s(NaN):new s(Math.round(e*this.s*this.n/this.d),e)},inverse:function(){return new s(this.s*this.d,this.n)},pow:function(e){return e<0?new s(Math.pow(this.s*this.d,-e),Math.pow(this.n,-e)):new s(Math.pow(this.s*this.n,e),Math.pow(this.d,e))},equals:function(e,t){return l(e,t),this.s*this.n*u.d==u.s*u.n*this.d},compare:function(e,t){l(e,t);var r=this.s*this.n*u.d-u.s*u.n*this.d;return(00&&(r+=t,r+=" ",n%=i),r+=n,r+="/",r+=i),r},toLatex:function(e){var t,r="",n=this.n,i=this.d;return this.s<0&&(r+="-"),1===i?r+=n:(e&&(t=Math.floor(n/i))>0&&(r+=t,n%=i),r+="\\frac{",r+=n,r+="}{",r+=i,r+="}"),r},toContinued:function(){var e,t=this.n,r=this.d,n=[];do{n.push(Math.floor(t/r)),e=t%r,t=r,r=e}while(1!==t);return n},toString:function(){var e,t=this.n,r=this.d;if(isNaN(t)||isNaN(r))return"NaN";s.REDUCE||(t/=e=p(t,r),r/=e);var n=function(e,t){for(;t%2==0;t/=2);for(;t%5==0;t/=5);if(1===t)return 0;for(var r=10%t,n=1;1!==r;n++)if(r=10*r%t,n>2e3)return 0;return n}(0,r),i=function(e,t,r){for(var n=1,i=function(e,t,r){for(var n=1;t>0;e=e*e%r,t>>=1)1&t&&(n=n*e%r);return n}(10,r,t),a=0;a<300;a++){if(n===i)return a;n=10*n%t,i=10*i%t}return 0}(0,r,n),a=-1===this.s?"-":"";if(a+=t/r|0,t%=r,(t*=10)&&(a+="."),n){for(var o=i;o--;)a+=t/r|0,t%=r,t*=10;a+="(";for(o=n;o--;)a+=t/r|0,t%=r,t*=10;a+=")"}else for(o=15;t&&o--;)a+=t/r|0,t%=r,t*=10;return a}},void 0===(n=function(){return s}.apply(t,[]))||(e.exports=n)}()},function(e,t,r){e.exports=[r(72),r(44),r(178),r(179),r(180),r(181),r(27),r(94),r(182),r(0),r(183)]},function(e,t,r){"use strict";t.isBoolean=function(e){return"boolean"==typeof e}},function(e,t,r){"use strict";var n=r(25),i=r(10),a=n.array,o=n.object,s=n.string,u=n.number,c=Array.isArray,f=u.isNumber,l=u.isInteger,p=s.isString,h=a.validateIndex;t.name="SparseMatrix",t.path="type",t.factory=function(e,t,m,d){function g(t,r){if(!(this instanceof g))throw new SyntaxError("Constructor must be called with the new operator");if(r&&!p(r))throw new Error("Invalid datatype: "+r);if(e.isMatrix(t))x(this,t,r);else if(t&&c(t.index)&&c(t.ptr)&&c(t.size))this._values=t.values,this._index=t.index,this._ptr=t.ptr,this._size=t.size,this._datatype=r||t.datatype;else if(c(t))w(this,t,r);else{if(t)throw new TypeError("Unsupported type of data ("+n.types.type(t)+")");this._values=[],this._index=[],this._ptr=[0],this._size=[0,0],this._datatype=r}}var v=m(r(72)),y=m(r(11)),x=function(e,t,r){"SparseMatrix"===t.type?(e._values=t._values?o.clone(t._values):void 0,e._index=o.clone(t._index),e._ptr=o.clone(t._ptr),e._size=o.clone(t._size),e._datatype=r||t._datatype):w(e,t.valueOf(),r||t._datatype)},w=function(e,t,r){e._values=[],e._index=[],e._ptr=[],e._datatype=r;var n=t.length,i=0,a=y,o=0;if(p(r)&&(a=d.find(y,[r,r])||y,o=d.convert(0,r)),n>0){var s=0;do{e._ptr.push(e._index.length);for(var u=0;u");for(var h=r.min()[0],m=r.min()[1],d=u[0],g=u[1],v=0;vo-1||a>s-1)&&(O(this,Math.max(n+1,o),Math.max(a+1,s),r),o=this._size[0],s=this._size[1]),h(n,o),h(a,s);var l=E(n,this._ptr[a],this._ptr[a+1],this._index);return lh){for(u=h;ul){if(f){var m=0;for(u=0;ut-1&&(e._values.splice(c,1),e._index.splice(c,1),v++)}e._ptr[u]=e._values.length}return e._size[0]=t,e._size[1]=r,e};g.prototype.reshape=function(e,t){if(!c(e))throw new TypeError("Array expected");if(2!==e.length)throw new Error("Sparse matrices can only be reshaped in two dimensions");if(e.forEach(function(t){if(!u.isNumber(t)||!u.isInteger(t)||t<0)throw new TypeError("Invalid size, must contain positive integers (size: "+s.format(e)+")")}),this._size[0]*this._size[1]!=e[0]*e[1])throw new Error("Reshaping sparse matrix will result in the wrong number of elements");var r=t?this.clone():this;if(this._size[0]===e[0]&&this._size[1]===e[1])return r;for(var n=[],i=0;i=t&&N<=r){if(!o)for(var E=w;E "+(this._values?s.format(this._values[c],e):"X")}return i},g.prototype.toString=function(){return s.format(this.toArray())},g.prototype.toJSON=function(){return{mathjs:"SparseMatrix",values:this._values,index:this._index,ptr:this._ptr,size:this._size,datatype:this._datatype}},g.prototype.diagonal=function(t){if(t){if(e.isBigNumber(t)&&(t=t.toNumber()),!f(t)||!l(t))throw new TypeError("The parameter k must be an integer number")}else t=0;var r=t>0?t:0,n=t<0?-t:0,i=this._size[0],a=this._size[1],o=Math.min(i-n,a-r),s=[],u=[],c=[];c[0]=0;for(var p=r;p0?n:0,m=n<0?-n:0,v=t[0],x=t[1],w=Math.min(v-m,x-h);if(c(r)){if(r.length!==w)throw new Error("Invalid value array length");u=function(e){return r[e]}}else if(e.isMatrix(r)){var b=r.size();if(1!==b.length||b[0]!==w)throw new Error("Invalid matrix length");u=function(e){return r.get([e])}}else u=function(){return r};for(var N=[],E=[],M=[],A=0;A=0&&O=u||i[f]!==t)){var p=n?n[c]:void 0;i.splice(f,0,t),n&&n.splice(f,0,p),i.splice(f<=c?c+1:c,1),n&&n.splice(f<=c?c+1:c,1)}else if(f=u||i[c]!==e)){var h=n?n[f]:void 0;i.splice(c,0,e),n&&n.splice(c,0,h),i.splice(c<=f?f+1:f,1),n&&n.splice(c<=f?f+1:f,1)}}},e.Matrix._storage.sparse=g,g},t.lazy=!1},function(e,t,r){"use strict";t.name="Spa",t.path="type",t.factory=function(e,t,n){function i(){if(!(this instanceof i))throw new SyntaxError("Constructor must be called with the new operator");this._values=[],this._heap=new e.FibonacciHeap}var a=n(r(18)),o=n(r(11));return i.prototype.type="Spa",i.prototype.isSpa=!0,i.prototype.set=function(e,t){if(this._values[e])this._values[e].value=t;else{var r=this._heap.insert(e,t);this._values[e]=r}},i.prototype.get=function(e){var t=this._values[e];return t?t.value:0},i.prototype.accumulate=function(e,t){var r=this._values[e];r?r.value=a(r.value,t):(r=this._heap.insert(e,t),this._values[e]=r)},i.prototype.forEach=function(e,t,r){var n=this._heap,i=this._values,a=[],s=n.extractMinimum();for(s&&a.push(s);s&&s.key<=t;)s.key>=e&&(o(s.value,0)||r(s.key,s.value,this)),(s=n.extractMinimum())&&a.push(s);for(var u=0;u0;){var i=n.right;n.left.right=n.right,n.right.left=n.left,n.left=t,n.right=t.right,t.right=n,n.right.left=n,n.parent=null,n=i,r--}return e.left.right=e.right,e.right.left=e.left,e==e.right?t=null:(t=e.right,t=h(t,this._size)),this._size--,this._minimum=t,e},a.prototype.remove=function(e){this._minimum=c(this._minimum,e,-1),this.extractMinimum()};var c=function(e,t,r){t.key=r;var n=t.parent;return n&&o(t.key,n.key)&&(f(e,t,n),l(e,n)),o(t.key,e.key)&&(e=t),e},f=function(e,t,r){t.left.right=t.right,t.right.left=t.left,r.degree--,r.child==t&&(r.child=t.right),0===r.degree&&(r.child=null),t.left=e,t.right=e.right,e.right=t,t.right.left=t,t.parent=null,t.mark=!1},l=function(e,t){var r=t.parent;r&&(t.mark?(f(e,t,r),l(r)):t.mark=!0)},p=function(e,t){e.left.right=e.right,e.right.left=e.left,e.parent=t,t.child?(e.left=t.child,e.right=t.child.right,t.child.right=e,e.right.left=e):(t.child=e,e.right=e,e.left=e),t.degree++,e.mark=!1},h=function(e,t){var r=Math.floor(Math.log(t)*u)+1,n=new Array(r),i=0,a=e;if(a)for(i++,a=a.right;a!==e;)i++,a=a.right;for(var c;i>0;){for(var f=a.degree,l=a.right;c=n[f];){if(s(a.key,c.key)){var h=c;c=a,a=h}p(c,a),n[f]=null,f++}n[f]=a,a=l,i--}e=null;for(var m=0;m="0"&&e<="9"}function p(){B++,P=I.charAt(B)}function h(e){B=e,P=I.charAt(B)}function m(){var e,t="";if(e=B,"+"==P?p():"-"==P&&(t+=P,p()),!function(e){return e>="0"&&e<="9"||"."==e}(P))return h(e),null;if("."==P){if(t+=P,p(),!l(P))return h(e),null}else{for(;l(P);)t+=P,p();"."==P&&(t+=P,p())}for(;l(P);)t+=P,p();if("E"==P||"e"==P){var r="",n=B;if(r+=P,p(),"+"!=P&&"-"!=P||(r+=P,p()),!l(P))return h(n),t;for(t+=r;l(P);)t+=P,p()}return t}function d(){for(var e="",t=I.charCodeAt(B);t>=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122;)e+=P,p(),t=I.charCodeAt(B);return(t=e.charCodeAt(0))>=65&&t<=90||t>=97&&t<=122?e||null:null}function g(e){return P===e?(p(),e):null}function v(e){if(D.hasOwnProperty(e))return{unit:i=D[e],prefix:r=i.prefixes[""]};for(var t in D)if(D.hasOwnProperty(t)&&n(e,t)){var r,i=D[t],a=e.length-t.length,o=e.substring(0,a);if(void 0!==(r=i.prefixes.hasOwnProperty(o)?i.prefixes[o]:void 0))return{unit:i,prefix:r}}return null}function y(t){if("BigNumber"===t.number){var r=a.pi(e.BigNumber);D.rad.value=new e.BigNumber(1),D.deg.value=r.div(180),D.grad.value=r.div(200),D.cycle.value=r.times(2),D.arcsec.value=r.div(648e3),D.arcmin.value=r.div(10800)}else D.rad.value=1,D.deg.value=Math.PI/180,D.grad.value=Math.PI/200,D.cycle.value=2*Math.PI,D.arcsec.value=Math.PI/648e3,D.arcmin.value=Math.PI/10800}var x=o(r(20)),w=o(r(21)),b=o(r(23)),N=o(r(19)),E=o(r(46)),M=o(r(29)),A=o(r(97)),O=o(r(98)),T=o(r(30)),S=o(r(75)),_=o(r(99)),C=o(r(76)),z=o(r(74)),k=o(r(92));c.prototype.type="Unit",c.prototype.isUnit=!0;var I,B,P;c.parse=function(r,n){if(n=n||{},I=r,B=-1,P="","string"!=typeof I)throw new TypeError("Invalid argument in Unit.parse, string expected");var i=new c;i.units=[],p(),f();var a=m(),o=null;a&&(o="BigNumber"===t.number?new e.BigNumber(a):"Fraction"===t.number?new e.Fraction(a):parseFloat(a)),f();for(var s=1,u=!1,l=[],h=1;;){for(f();"("===P;)l.push(s),h*=s,s=1,p(),f();if(!P)break;var y=P,x=d();if(null==x)throw new SyntaxError('Unexpected "'+y+'" in "'+I+'" at index '+B.toString());var w=v(x);if(null==w)throw new SyntaxError('Unit "'+x+'" not found.');var b=s*h;if(f(),g("^")){f();var N=m();if(null==N)throw new SyntaxError('In "'+r+'", "^" must be followed by a floating-point number');b*=N}i.units.push({unit:w.unit,prefix:w.prefix,power:b});for(var E=0;E1||Math.abs(this.units[0].power-1)>1e-15)},c.prototype._normalize=function(e){var t,r,n,i,a;if(null==e||0===this.units.length)return e;if(this._isDerived()){var o=e;a=c._getNumberConverter(C(e));for(var s=0;s1e-12)return!1;return!0},c.prototype.equalBase=function(e){for(var t=0;t1e-12)return!1;return!0},c.prototype.equals=function(e){return this.equalBase(e)&&T(this.value,e.value)},c.prototype.multiply=function(e){for(var t=this.clone(),r=0;r1e-12&&(G.hasOwnProperty(o)?t.push({unit:G[o].unit,prefix:G[o].prefix,power:this.dimensions[a]||0}):i=!0)}t.length1e-12){if(!$.si.hasOwnProperty(n))throw new Error("Cannot express custom unit "+n+" in SI units");t.push({unit:$.si[n].unit,prefix:$.si[n].prefix,power:e.dimensions[r]||0})}}return e.units=t,e.isUnitListSimplified=!0,e},c.prototype.formatUnits=function(){this.simplifyUnitListLazy();for(var e="",t="",r=0,n=0,i=0;i0?(r++,e+=" "+this.units[i].prefix.name+this.units[i].unit.name,Math.abs(this.units[i].power-1)>1e-15&&(e+="^"+this.units[i].power)):this.units[i].power<0&&n++;if(n>0)for(i=0;i0?(t+=" "+this.units[i].prefix.name+this.units[i].unit.name,Math.abs(this.units[i].power+1)>1e-15&&(t+="^"+-this.units[i].power)):(t+=" "+this.units[i].prefix.name+this.units[i].unit.name,t+="^"+this.units[i].power));e=e.substr(1),t=t.substr(1),r>1&&n>0&&(e="("+e+")"),n>1&&r>0&&(t="("+t+")");var a=e;return r>0&&n>0&&(a+=" / "),a+=t},c.prototype.format=function(t){this.simplifyUnitListLazy();var r=!1;void 0!==this.value&&null!==this.value&&e.isComplex(this.value)&&(r=Math.abs(this.value.re)<1e-14,Math.abs(this.value.im));for(var n in this.units)this.units[n].unit&&("VA"===this.units[n].unit.name&&r?this.units[n].unit=D.VAR:"VAR"!==this.units[n].unit.name||r||(this.units[n].unit=D.VA));1!==this.units.length||this.fixPrefix||Math.abs(this.units[0].power-Math.round(this.units[0].power))<1e-14&&(this.units[0].prefix=this._bestPrefix());var i=this._denormalize(this.value),a=null!==this.value?_(i,t||{}):"",o=this.formatUnits();return this.value&&e.isComplex(this.value)&&(a="("+a+")"),o.length>0&&a.length>0&&(a+=" "),a+=o},c.prototype._bestPrefix=function(){if(1!==this.units.length)throw new Error("Can only compute the best prefix for single units with integer powers, like kg, s^2, N^-1, and so forth!");if(Math.abs(this.units[0].power-Math.round(this.units[0].power))>=1e-14)throw new Error("Can only compute the best prefix for single units with integer powers, like kg, s^2, N^-1, and so forth!");var e=M(this.value),t=M(this.units[0].unit.value),r=this.units[0].prefix;if(0===e)return r;var n=this.units[0].power,i=Math.log(e/Math.pow(r.value*t,n))/Math.LN10-1.2;if(i>-2.200001&&i<1.800001)return r;i=Math.abs(i);var a=this.units[0].unit.prefixes;for(var o in a)if(a.hasOwnProperty(o)){var s=a[o];if(s.scientific){var u=Math.abs(Math.log(e/Math.pow(s.value*t,n))/Math.LN10-1.2);(u0&&!n(r)&&!function(e){return e>="0"&&e<="9"}(r))throw new Error('Invalid unit name (only alphanumeric characters are allowed): "'+e+'"')}}(e);var n,i,a=null,o=[],s=0;if(t&&"Unit"===t.type)a=t.clone();else if("string"==typeof t)""!==t&&(n=t);else{if("object"!=typeof t)throw new TypeError('Cannot create unit "'+e+'" from "'+t.toString()+'": expecting "string" or "Unit" or "Object"');n=t.definition,i=t.prefixes,s=t.offset,t.aliases&&(o=t.aliases.valueOf())}if(o)for(var u=0;u1e-12){p=!1;break}if(p){l=!0;break}}l||(m=e+"_STUFF",(g={dimensions:a.dimensions.slice(0)}).key=m,j[m]=g,G[m]={unit:f,prefix:U.NONE[""]},f.base=m)}else{var m=e+"_STUFF";if(L.indexOf(m)>=0)throw new Error('Cannot create new base unit "'+e+'": a base unit with that name already exists (and cannot be overridden)');L.push(m);for(var d in j)j.hasOwnProperty(d)&&(j[d].dimensions[L.length-1]=0);var g={dimensions:[]};for(u=0;u1, -1 when x<0, and 0 when x=0.",examples:["sign(3.5)","sign(-4.2)","sign(0)"],seealso:["abs"]}},function(e,t){e.exports={name:"sqrt",category:"Arithmetic",syntax:["sqrt(x)"],description:"Compute the square root value. If x = y * y, then y is the square root of x.",examples:["sqrt(25)","5 * 5","sqrt(-1)"],seealso:["square","multiply"]}},function(e,t){e.exports={name:"square",category:"Arithmetic",syntax:["square(x)"],description:"Compute the square of a value. The square of x is x * x.",examples:["square(3)","sqrt(9)","3^2","3 * 3"],seealso:["multiply","pow","sqrt","cube"]}},function(e,t){e.exports={name:"subtract",category:"Operators",syntax:["x - y","subtract(x, y)"],description:"subtract two values.",examples:["a = 5.3 - 2","a + 2","2/3 - 1/6","2 * 3 - 3","2.1 km - 500m"],seealso:["add"]}},function(e,t){e.exports={name:"unaryMinus",category:"Operators",syntax:["-x","unaryMinus(x)"],description:"Inverse the sign of a value. Converts booleans and strings to numbers.",examples:["-4.5","-(-5.6)",'-"22"'],seealso:["add","subtract","unaryPlus"]}},function(e,t){e.exports={name:"unaryPlus",category:"Operators",syntax:["+x","unaryPlus(x)"],description:"Converts booleans and strings to numbers.",examples:["+true",'+"2"'],seealso:["add","subtract","unaryMinus"]}},function(e,t){e.exports={name:"xgcd",category:"Arithmetic",syntax:["xgcd(a, b)"],description:"Calculate the extended greatest common divisor for two values. The result is an array [d, x, y] with 3 entries, where d is the greatest common divisor, and d = x * a + y * b.",examples:["xgcd(8, 12)","gcd(8, 12)","xgcd(36163, 21199)"],seealso:["gcd","lcm"]}},function(e,t){e.exports={name:"bitAnd",category:"Bitwise",syntax:["x & y","bitAnd(x, y)"],description:"Bitwise AND operation. Performs the logical AND operation on each pair of the corresponding bits of the two given values by multiplying them. If both bits in the compared position are 1, the bit in the resulting binary representation is 1, otherwise, the result is 0",examples:["5 & 3","bitAnd(53, 131)","[1, 12, 31] & 42"],seealso:["bitNot","bitOr","bitXor","leftShift","rightArithShift","rightLogShift"]}},function(e,t){e.exports={name:"bitNot",category:"Bitwise",syntax:["~x","bitNot(x)"],description:"Bitwise NOT operation. Performs a logical negation on each bit of the given value. Bits that are 0 become 1, and those that are 1 become 0.",examples:["~1","~2","bitNot([2, -3, 4])"],seealso:["bitAnd","bitOr","bitXor","leftShift","rightArithShift","rightLogShift"]}},function(e,t){e.exports={name:"bitOr",category:"Bitwise",syntax:["x | y","bitOr(x, y)"],description:"Bitwise OR operation. Performs the logical inclusive OR operation on each pair of corresponding bits of the two given values. The result in each position is 1 if the first bit is 1 or the second bit is 1 or both bits are 1, otherwise, the result is 0.",examples:["5 | 3","bitOr([1, 2, 3], 4)"],seealso:["bitAnd","bitNot","bitXor","leftShift","rightArithShift","rightLogShift"]}},function(e,t){e.exports={name:"bitXor",category:"Bitwise",syntax:["bitXor(x, y)"],description:"Bitwise XOR operation, exclusive OR. Performs the logical exclusive OR operation on each pair of corresponding bits of the two given values. The result in each position is 1 if only the first bit is 1 or only the second bit is 1, but will be 0 if both are 0 or both are 1.",examples:["bitOr(1, 2)","bitXor([2, 3, 4], 4)"],seealso:["bitAnd","bitNot","bitOr","leftShift","rightArithShift","rightLogShift"]}},function(e,t){e.exports={name:"leftShift",category:"Bitwise",syntax:["x << y","leftShift(x, y)"],description:"Bitwise left logical shift of a value x by y number of bits.",examples:["4 << 1","8 >> 1"],seealso:["bitAnd","bitNot","bitOr","bitXor","rightArithShift","rightLogShift"]}},function(e,t){e.exports={name:"rightArithShift",category:"Bitwise",syntax:["x >> y","rightArithShift(x, y)"],description:"Bitwise right arithmetic shift of a value x by y number of bits.",examples:["8 >> 1","4 << 1","-12 >> 2"],seealso:["bitAnd","bitNot","bitOr","bitXor","leftShift","rightLogShift"]}},function(e,t){e.exports={name:"rightLogShift",category:"Bitwise",syntax:["x >>> y","rightLogShift(x, y)"],description:"Bitwise right logical shift of a value x by y number of bits.",examples:["8 >>> 1","4 << 1","-12 >>> 2"],seealso:["bitAnd","bitNot","bitOr","bitXor","leftShift","rightArithShift"]}},function(e,t){e.exports={name:"bellNumbers",category:"Combinatorics",syntax:["bellNumbers(n)"],description:"The Bell Numbers count the number of partitions of a set. A partition is a pairwise disjoint subset of S whose union is S. `bellNumbers` only takes integer arguments. The following condition must be enforced: n >= 0.",examples:["bellNumbers(3)","bellNumbers(8)"],seealso:["stirlingS2"]}},function(e,t){e.exports={name:"catalan",category:"Combinatorics",syntax:["catalan(n)"],description:"The Catalan Numbers enumerate combinatorial structures of many different types. catalan only takes integer arguments. The following condition must be enforced: n >= 0.",examples:["catalan(3)","catalan(8)"],seealso:["bellNumbers"]}},function(e,t){e.exports={name:"composition",category:"Combinatorics",syntax:["composition(n, k)"],description:"The composition counts of n into k parts. composition only takes integer arguments. The following condition must be enforced: k <= n.",examples:["composition(5, 3)"],seealso:["combinations"]}},function(e,t){e.exports={name:"stirlingS2",category:"Combinatorics",syntax:["stirlingS2(n, k)"],description:"he Stirling numbers of the second kind, counts the number of ways to partition a set of n labelled objects into k nonempty unlabelled subsets. `stirlingS2` only takes integer arguments. The following condition must be enforced: k <= n. If n = k or k = 1, then s(n,k) = 1.",examples:["stirlingS2(5, 3)"],seealso:["bellNumbers"]}},function(e,t){e.exports={name:"config",category:"Core",syntax:["config()","config(options)"],description:"Get configuration or change configuration.",examples:["config()","1/3 + 1/4",'config({number: "Fraction"})',"1/3 + 1/4"],seealso:[]}},function(e,t){e.exports={name:"import",category:"Core",syntax:["import(functions)","import(functions, options)"],description:"Import functions or constants from an object.",examples:["import({myFn: f(x)=x^2, myConstant: 32 })","myFn(2)","myConstant"],seealso:[]}},function(e,t){e.exports={name:"typed",category:"Core",syntax:["typed(signatures)","typed(name, signatures)"],description:"Create a typed function.",examples:['double = typed({ "number, number": f(x)=x+x })',"double(2)",'double("hello")'],seealso:[]}},function(e,t){e.exports={name:"arg",category:"Complex",syntax:["arg(x)"],description:"Compute the argument of a complex value. If x = a+bi, the argument is computed as atan2(b, a).",examples:["arg(2 + 2i)","atan2(3, 2)","arg(2 + 3i)"],seealso:["re","im","conj","abs"]}},function(e,t){e.exports={name:"conj",category:"Complex",syntax:["conj(x)"],description:"Compute the complex conjugate of a complex value. If x = a+bi, the complex conjugate is a-bi.",examples:["conj(2 + 3i)","conj(2 - 3i)","conj(-5.2i)"],seealso:["re","im","abs","arg"]}},function(e,t){e.exports={name:"re",category:"Complex",syntax:["re(x)"],description:"Get the real part of a complex number.",examples:["re(2 + 3i)","im(2 + 3i)","re(-5.2i)","re(2.4)"],seealso:["im","conj","abs","arg"]}},function(e,t){e.exports={name:"im",category:"Complex",syntax:["im(x)"],description:"Get the imaginary part of a complex number.",examples:["im(2 + 3i)","re(2 + 3i)","im(-5.2i)","im(2.4)"],seealso:["re","conj","abs","arg"]}},function(e,t){e.exports={name:"eval",category:"Expression",syntax:["eval(expression)","eval([expr1, expr2, expr3, ...])"],description:"Evaluate an expression or an array with expressions.",examples:['eval("2 + 3")','eval("sqrt(" + 4 + ")")'],seealso:[]}},function(e,t){e.exports={name:"help",category:"Expression",syntax:["help(object)","help(string)"],description:"Display documentation on a function or data type.",examples:["help(sqrt)",'help("complex")'],seealso:[]}},function(e,t){e.exports={name:"distance",category:"Geometry",syntax:["distance([x1, y1], [x2, y2])","distance([[x1, y1], [x2, y2])"],description:"Calculates the Euclidean distance between two points.",examples:["distance([0,0], [4,4])","distance([[0,0], [4,4]])"],seealso:[]}},function(e,t){e.exports={name:"intersect",category:"Geometry",syntax:["intersect(expr1, expr2, expr3, expr4)","intersect(expr1, expr2, expr3)"],description:"Computes the intersection point of lines and/or planes.",examples:["intersect([0, 0], [10, 10], [10, 0], [0, 10])","intersect([1, 0, 1], [4, -2, 2], [1, 1, 1, 6])"],seealso:[]}},function(e,t){e.exports={name:"and",category:"Logical",syntax:["x and y","and(x, y)"],description:"Logical and. Test whether two values are both defined with a nonzero/nonempty value.",examples:["true and false","true and true","2 and 4"],seealso:["not","or","xor"]}},function(e,t){e.exports={name:"not",category:"Logical",syntax:["not x","not(x)"],description:"Logical not. Flips the boolean value of given argument.",examples:["not true","not false","not 2","not 0"],seealso:["and","or","xor"]}},function(e,t){e.exports={name:"or",category:"Logical",syntax:["x or y","or(x, y)"],description:"Logical or. Test if at least one value is defined with a nonzero/nonempty value.",examples:["true or false","false or false","0 or 4"],seealso:["not","and","xor"]}},function(e,t){e.exports={name:"xor",category:"Logical",syntax:["x xor y","xor(x, y)"],description:"Logical exclusive or, xor. Test whether one and only one value is defined with a nonzero/nonempty value.",examples:["true xor false","false xor false","true xor true","0 xor 4"],seealso:["not","and","or"]}},function(e,t){e.exports={name:"concat",category:"Matrix",syntax:["concat(A, B, C, ...)","concat(A, B, C, ..., dim)"],description:"Concatenate matrices. By default, the matrices are concatenated by the last dimension. The dimension on which to concatenate can be provided as last argument.",examples:["A = [1, 2; 5, 6]","B = [3, 4; 7, 8]","concat(A, B)","concat(A, B, 1)","concat(A, B, 2)"],seealso:["det","diag","eye","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"cross",category:"Matrix",syntax:["cross(A, B)"],description:"Calculate the cross product for two vectors in three dimensional space.",examples:["cross([1, 1, 0], [0, 1, 1])","cross([3, -3, 1], [4, 9, 2])","cross([2, 3, 4], [5, 6, 7])"],seealso:["multiply","dot"]}},function(e,t){e.exports={name:"det",category:"Matrix",syntax:["det(x)"],description:"Calculate the determinant of a matrix",examples:["det([1, 2; 3, 4])","det([-2, 2, 3; -1, 1, 3; 2, 0, -1])"],seealso:["concat","diag","eye","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"diag",category:"Matrix",syntax:["diag(x)","diag(x, k)"],description:"Create a diagonal matrix or retrieve the diagonal of a matrix. When x is a vector, a matrix with the vector values on the diagonal will be returned. When x is a matrix, a vector with the diagonal values of the matrix is returned. When k is provided, the k-th diagonal will be filled in or retrieved, if k is positive, the values are placed on the super diagonal. When k is negative, the values are placed on the sub diagonal.",examples:["diag(1:3)","diag(1:3, 1)","a = [1, 2, 3; 4, 5, 6; 7, 8, 9]","diag(a)"],seealso:["concat","det","eye","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"dot",category:"Matrix",syntax:["dot(A, B)","A * B"],description:"Calculate the dot product of two vectors. The dot product of A = [a1, a2, a3, ..., an] and B = [b1, b2, b3, ..., bn] is defined as dot(A, B) = a1 * b1 + a2 * b2 + a3 * b3 + ... + an * bn",examples:["dot([2, 4, 1], [2, 2, 3])","[2, 4, 1] * [2, 2, 3]"],seealso:["multiply","cross"]}},function(e,t){e.exports={name:"eye",category:"Matrix",syntax:["eye(n)","eye(m, n)","eye([m, n])"],description:"Returns the identity matrix with size m-by-n. The matrix has ones on the diagonal and zeros elsewhere.",examples:["eye(3)","eye(3, 5)","a = [1, 2, 3; 4, 5, 6]","eye(size(a))"],seealso:["concat","det","diag","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"filter",category:"Matrix",syntax:["filter(x, test)"],description:"Filter items in a matrix.",examples:["isPositive(x) = x > 0","filter([6, -2, -1, 4, 3], isPositive)","filter([6, -2, 0, 1, 0], x != 0)"],seealso:["sort","map","forEach"]}},function(e,t){e.exports={name:"flatten",category:"Matrix",syntax:["flatten(x)"],description:"Flatten a multi dimensional matrix into a single dimensional matrix.",examples:["a = [1, 2, 3; 4, 5, 6]","size(a)","b = flatten(a)","size(b)"],seealso:["concat","resize","size","squeeze"]}},function(e,t){e.exports={name:"forEach",category:"Matrix",syntax:["forEach(x, callback)"],description:"Iterates over all elements of a matrix/array, and executes the given callback function.",examples:["forEach([1, 2, 3], function(val) { console.log(val) })"],seealso:["map","sort","filter"]}},function(e,t){e.exports={name:"inv",category:"Matrix",syntax:["inv(x)"],description:"Calculate the inverse of a matrix",examples:["inv([1, 2; 3, 4])","inv(4)","1 / 4"],seealso:["concat","det","diag","eye","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"kron",category:"Matrix",syntax:["kron(x, y)"],description:"Calculates the kronecker product of 2 matrices or vectors.",examples:["kron([[1, 0], [0, 1]], [[1, 2], [3, 4]])","kron([1,1], [2,3,4])"],seealso:["multiply","dot","cross"]}},function(e,t){e.exports={name:"map",category:"Matrix",syntax:["map(x, callback)"],description:"Create a new matrix or array with the results of the callback function executed on each entry of the matrix/array.",examples:["map([1, 2, 3], square)"],seealso:["filter","forEach"]}},function(e,t){e.exports={name:"ones",category:"Matrix",syntax:["ones(m)","ones(m, n)","ones(m, n, p, ...)","ones([m])","ones([m, n])","ones([m, n, p, ...])"],description:"Create a matrix containing ones.",examples:["ones(3)","ones(3, 5)","ones([2,3]) * 4.5","a = [1, 2, 3; 4, 5, 6]","ones(size(a))"],seealso:["concat","det","diag","eye","inv","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"partitionSelect",category:"Matrix",syntax:["partitionSelect(x, k)","partitionSelect(x, k, compare)"],description:"Partition-based selection of an array or 1D matrix. Will find the kth smallest value, and mutates the input array. Uses Quickselect.",examples:["partitionSelect([5, 10, 1], 2)",'partitionSelect(["C", "B", "A", "D"], 1)'],seealso:["sort"]}},function(e,t){e.exports={name:"range",category:"Type",syntax:["start:end","start:step:end","range(start, end)","range(start, end, step)","range(string)"],description:"Create a range. Lower bound of the range is included, upper bound is excluded.",examples:["1:5","3:-1:-3","range(3, 7)","range(0, 12, 2)",'range("4:10")',"a = [1, 2, 3, 4; 5, 6, 7, 8]","a[1:2, 1:2]"],seealso:["concat","det","diag","eye","inv","ones","size","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"resize",category:"Matrix",syntax:["resize(x, size)","resize(x, size, defaultValue)"],description:"Resize a matrix.",examples:["resize([1,2,3,4,5], [3])","resize([1,2,3], [5])","resize([1,2,3], [5], -1)","resize(2, [2, 3])",'resize("hello", [8], "!")'],seealso:["size","subset","squeeze","reshape"]}},function(e,t){e.exports={name:"reshape",category:"Matrix",syntax:["reshape(x, sizes)"],description:"Reshape a multi dimensional array to fit the specified dimensions.",examples:["reshape([1, 2, 3, 4, 5, 6], [2, 3])","reshape([[1, 2], [3, 4]], [1, 4])","reshape([[1, 2], [3, 4]], [4])"],seealso:["size","squeeze","resize"]}},function(e,t){e.exports={name:"size",category:"Matrix",syntax:["size(x)"],description:"Calculate the size of a matrix.",examples:["size(2.3)",'size("hello world")',"a = [1, 2; 3, 4; 5, 6]","size(a)","size(1:6)"],seealso:["concat","det","diag","eye","inv","ones","range","squeeze","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"sort",category:"Matrix",syntax:["sort(x)","sort(x, compare)"],description:'Sort the items in a matrix. Compare can be a string "asc", "desc", "natural", or a custom sort function.',examples:["sort([5, 10, 1])",'sort(["C", "B", "A", "D"])',"sortByLength(a, b) = size(a)[1] - size(b)[1]",'sort(["Langdon", "Tom", "Sara"], sortByLength)','sort(["10", "1", "2"], "natural")'],seealso:["map","filter","forEach"]}},function(e,t){e.exports={name:"squeeze",category:"Matrix",syntax:["squeeze(x)"],description:"Remove inner and outer singleton dimensions from a matrix.",examples:["a = zeros(3,2,1)","size(squeeze(a))","b = zeros(1,1,3)","size(squeeze(b))"],seealso:["concat","det","diag","eye","inv","ones","range","size","subset","trace","transpose","zeros"]}},function(e,t){e.exports={name:"subset",category:"Matrix",syntax:["value(index)","value(index) = replacement","subset(value, [index])","subset(value, [index], replacement)"],description:"Get or set a subset of a matrix or string. Indexes are one-based. Both the ranges lower-bound and upper-bound are included.",examples:["d = [1, 2; 3, 4]","e = []","e[1, 1:2] = [5, 6]","e[2, :] = [7, 8]","f = d * e","f[2, 1]","f[:, 1]"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","trace","transpose","zeros"]}},function(e,t){e.exports={name:"trace",category:"Matrix",syntax:["trace(A)"],description:"Calculate the trace of a matrix: the sum of the elements on the main diagonal of a square matrix.",examples:["A = [1, 2, 3; -1, 2, 3; 2, 0, 3]","trace(A)"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","subset","transpose","zeros"]}},function(e,t){e.exports={name:"transpose",category:"Matrix",syntax:["x'","transpose(x)"],description:"Transpose a matrix",examples:["a = [1, 2, 3; 4, 5, 6]","a'","transpose(a)"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","subset","trace","zeros"]}},function(e,t){e.exports={name:"zeros",category:"Matrix",syntax:["zeros(m)","zeros(m, n)","zeros(m, n, p, ...)","zeros([m])","zeros([m, n])","zeros([m, n, p, ...])"],description:"Create a matrix containing zeros.",examples:["zeros(3)","zeros(3, 5)","a = [1, 2, 3; 4, 5, 6]","zeros(size(a))"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","subset","trace","transpose"]}},function(e,t){e.exports={name:"combinations",category:"Probability",syntax:["combinations(n, k)"],description:"Compute the number of combinations of n items taken k at a time",examples:["combinations(7, 5)"],seealso:["permutations","factorial"]}},function(e,t){e.exports={name:"factorial",category:"Probability",syntax:["n!","factorial(n)"],description:"Compute the factorial of a value",examples:["5!","5 * 4 * 3 * 2 * 1","3!"],seealso:["combinations","permutations","gamma"]}},function(e,t){e.exports={name:"gamma",category:"Probability",syntax:["gamma(n)"],description:"Compute the gamma function. For small values, the Lanczos approximation is used, and for large values the extended Stirling approximation.",examples:["gamma(4)","3!","gamma(1/2)","sqrt(pi)"],seealso:["factorial"]}},function(e,t){e.exports={name:"kldivergence",category:"Probability",syntax:["kldivergence(x, y)"],description:"Calculate the Kullback-Leibler (KL) divergence between two distributions.",examples:["kldivergence([0.7,0.5,0.4], [0.2,0.9,0.5])"],seealso:[]}},function(e,t){e.exports={name:"multinomial",category:"Probability",syntax:["multinomial(A)"],description:"Multinomial Coefficients compute the number of ways of picking a1, a2, ..., ai unordered outcomes from `n` possibilities. multinomial takes one array of integers as an argument. The following condition must be enforced: every ai > 0.",examples:["multinomial([1, 2, 1])"],seealso:["combinations","factorial"]}},function(e,t){e.exports={name:"permutations",category:"Probability",syntax:["permutations(n)","permutations(n, k)"],description:"Compute the number of permutations of n items taken k at a time",examples:["permutations(5)","permutations(5, 3)"],seealso:["combinations","factorial"]}},function(e,t){e.exports={name:"pickRandom",category:"Probability",syntax:["pickRandom(array)","pickRandom(array, number)","pickRandom(array, weights)","pickRandom(array, number, weights)","pickRandom(array, weights, number)"],description:"Pick a random entry from a given array.",examples:["pickRandom(0:10)","pickRandom([1, 3, 1, 6])","pickRandom([1, 3, 1, 6], 2)","pickRandom([1, 3, 1, 6], [2, 3, 2, 1])","pickRandom([1, 3, 1, 6], 2, [2, 3, 2, 1])","pickRandom([1, 3, 1, 6], [2, 3, 2, 1], 2)"],seealso:["random","randomInt"]}},function(e,t){e.exports={name:"random",category:"Probability",syntax:["random()","random(max)","random(min, max)","random(size)","random(size, max)","random(size, min, max)"],description:"Return a random number.",examples:["random()","random(10, 20)","random([2, 3])"],seealso:["pickRandom","randomInt"]}},function(e,t){e.exports={name:"randomInt",category:"Probability",syntax:["randomInt(max)","randomInt(min, max)","randomInt(size)","randomInt(size, max)","randomInt(size, min, max)"],description:"Return a random integer number",examples:["randomInt(10, 20)","randomInt([2, 3], 10)"],seealso:["pickRandom","random"]}},function(e,t){e.exports={name:"compare",category:"Relational",syntax:["compare(x, y)"],description:"Compare two values. Returns 1 if x is larger than y, -1 if x is smaller than y, and 0 if x and y are equal.",examples:["compare(2, 3)","compare(3, 2)","compare(2, 2)","compare(5cm, 40mm)","compare(2, [1, 2, 3])"],seealso:["equal","unequal","smaller","smallerEq","largerEq","compareNatural"]}},function(e,t){e.exports={name:"compareNatural",category:"Relational",syntax:["compareNatural(x, y)"],description:"Compare two values of any type in a deterministic, natural way.",examples:["compareNatural(2, 3)","compareNatural(3, 2)","compareNatural(2, 2)","compareNatural(5cm, 40mm)",'compareNatural("2", "10")',"compareNatural(2 + 3i, 2 + 4i)","compareNatural([1, 2, 4], [1, 2, 3])","compareNatural([1, 5], [1, 2, 3])","compareNatural([1, 2], [1, 2])","compareNatural({a: 2}, {a: 4})"],seealso:["equal","unequal","smaller","smallerEq","largerEq","compare"]}},function(e,t){e.exports={name:"deepEqual",category:"Relational",syntax:["deepEqual(x, y)"],description:"Check equality of two matrices element wise. Returns true if the size of both matrices is equal and when and each of the elements are equal.",examples:["deepEqual([1,3,4], [1,3,4])","deepEqual([1,3,4], [1,3])"],seealso:["equal","unequal","smaller","larger","smallerEq","largerEq","compare"]}},function(e,t){e.exports={name:"equal",category:"Relational",syntax:["x == y","equal(x, y)"],description:"Check equality of two values. Returns true if the values are equal, and false if not.",examples:["2+2 == 3","2+2 == 4","a = 3.2","b = 6-2.8","a == b","50cm == 0.5m"],seealso:["unequal","smaller","larger","smallerEq","largerEq","compare","deepEqual"]}},function(e,t){e.exports={name:"larger",category:"Relational",syntax:["x > y","larger(x, y)"],description:"Check if value x is larger than y. Returns true if x is larger than y, and false if not.",examples:["2 > 3","5 > 2*2","a = 3.3","b = 6-2.8","(a > b)","(b < a)","5 cm > 2 inch"],seealso:["equal","unequal","smaller","smallerEq","largerEq","compare"]}},function(e,t){e.exports={name:"largerEq",category:"Relational",syntax:["x >= y","largerEq(x, y)"],description:"Check if value x is larger or equal to y. Returns true if x is larger or equal to y, and false if not.",examples:["2 >= 1+1","2 > 1+1","a = 3.2","b = 6-2.8","(a >= b)"],seealso:["equal","unequal","smallerEq","smaller","compare"]}},function(e,t){e.exports={name:"smaller",category:"Relational",syntax:["x < y","smaller(x, y)"],description:"Check if value x is smaller than value y. Returns true if x is smaller than y, and false if not.",examples:["2 < 3","5 < 2*2","a = 3.3","b = 6-2.8","(a < b)","5 cm < 2 inch"],seealso:["equal","unequal","larger","smallerEq","largerEq","compare"]}},function(e,t){e.exports={name:"smallerEq",category:"Relational",syntax:["x <= y","smallerEq(x, y)"],description:"Check if value x is smaller or equal to value y. Returns true if x is smaller than y, and false if not.",examples:["2 <= 1+1","2 < 1+1","a = 3.2","b = 6-2.8","(a <= b)"],seealso:["equal","unequal","larger","smaller","largerEq","compare"]}},function(e,t){e.exports={name:"unequal",category:"Relational",syntax:["x != y","unequal(x, y)"],description:"Check unequality of two values. Returns true if the values are unequal, and false if they are equal.",examples:["2+2 != 3","2+2 != 4","a = 3.2","b = 6-2.8","a != b","50cm != 0.5m","5 cm != 2 inch"],seealso:["equal","smaller","larger","smallerEq","largerEq","compare","deepEqual"]}},function(e,t){e.exports={name:"setCartesian",category:"Set",syntax:["setCartesian(set1, set2)"],description:"Create the cartesian product of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setCartesian([1, 2], [3, 4])"],seealso:["setUnion","setIntersect","setDifference","setPowerset"]}},function(e,t){e.exports={name:"setDifference",category:"Set",syntax:["setDifference(set1, set2)"],description:"Create the difference of two (multi)sets: every element of set1, that is not the element of set2. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setDifference([1, 2, 3, 4], [3, 4, 5, 6])","setDifference([[1, 2], [3, 4]], [[3, 4], [5, 6]])"],seealso:["setUnion","setIntersect","setSymDifference"]}},function(e,t){e.exports={name:"setDistinct",category:"Set",syntax:["setDistinct(set)"],description:"Collect the distinct elements of a multiset. A multi-dimension array will be converted to a single-dimension array before the operation.",examples:["setDistinct([1, 1, 1, 2, 2, 3])"],seealso:["setMultiplicity"]}},function(e,t){e.exports={name:"setIntersect",category:"Set",syntax:["setIntersect(set1, set2)"],description:"Create the intersection of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setIntersect([1, 2, 3, 4], [3, 4, 5, 6])","setIntersect([[1, 2], [3, 4]], [[3, 4], [5, 6]])"],seealso:["setUnion","setDifference"]}},function(e,t){e.exports={name:"setIsSubset",category:"Set",syntax:["setIsSubset(set1, set2)"],description:"Check whether a (multi)set is a subset of another (multi)set: every element of set1 is the element of set2. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setIsSubset([1, 2], [3, 4, 5, 6])","setIsSubset([3, 4], [3, 4, 5, 6])"],seealso:["setUnion","setIntersect","setDifference"]}},function(e,t){e.exports={name:"setMultiplicity",category:"Set",syntax:["setMultiplicity(element, set)"],description:"Count the multiplicity of an element in a multiset. A multi-dimension array will be converted to a single-dimension array before the operation.",examples:["setMultiplicity(1, [1, 2, 2, 4])","setMultiplicity(2, [1, 2, 2, 4])"],seealso:["setDistinct","setSize"]}},function(e,t){e.exports={name:"setPowerset",category:"Set",syntax:["setPowerset(set)"],description:"Create the powerset of a (multi)set: the powerset contains very possible subsets of a (multi)set. A multi-dimension array will be converted to a single-dimension array before the operation.",examples:["setPowerset([1, 2, 3])"],seealso:["setCartesian"]}},function(e,t){e.exports={name:"setSize",category:"Set",syntax:["setSize(set)","setSize(set, unique)"],description:'Count the number of elements of a (multi)set. When the second parameter "unique" is true, count only the unique values. A multi-dimension array will be converted to a single-dimension array before the operation.',examples:["setSize([1, 2, 2, 4])","setSize([1, 2, 2, 4], true)"],seealso:["setUnion","setIntersect","setDifference"]}},function(e,t){e.exports={name:"setSymDifference",category:"Set",syntax:["setSymDifference(set1, set2)"],description:"Create the symmetric difference of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setSymDifference([1, 2, 3, 4], [3, 4, 5, 6])","setSymDifference([[1, 2], [3, 4]], [[3, 4], [5, 6]])"],seealso:["setUnion","setIntersect","setDifference"]}},function(e,t){e.exports={name:"setUnion",category:"Set",syntax:["setUnion(set1, set2)"],description:"Create the union of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.",examples:["setUnion([1, 2, 3, 4], [3, 4, 5, 6])","setUnion([[1, 2], [3, 4]], [[3, 4], [5, 6]])"],seealso:["setIntersect","setDifference"]}},function(e,t){e.exports={name:"erf",category:"Special",syntax:["erf(x)"],description:"Compute the erf function of a value using a rational Chebyshev approximations for different intervals of x",examples:["erf(0.2)","erf(-0.5)","erf(4)"],seealso:[]}},function(e,t){e.exports={name:"mad",category:"Statistics",syntax:["mad(a, b, c, ...)","mad(A)"],description:"Compute the median absolute deviation of a matrix or a list with values. The median absolute deviation is defined as the median of the absolute deviations from the median.",examples:["mad(10, 20, 30)","mad([1, 2, 3])"],seealso:["mean","median","std","abs"]}},function(e,t){e.exports={name:"max",category:"Statistics",syntax:["max(a, b, c, ...)","max(A)","max(A, dim)"],description:"Compute the maximum value of a list of values.",examples:["max(2, 3, 4, 1)","max([2, 3, 4, 1])","max([2, 5; 4, 3])","max([2, 5; 4, 3], 1)","max([2, 5; 4, 3], 2)","max(2.7, 7.1, -4.5, 2.0, 4.1)","min(2.7, 7.1, -4.5, 2.0, 4.1)"],seealso:["mean","median","min","prod","std","sum","var"]}},function(e,t){e.exports={name:"mean",category:"Statistics",syntax:["mean(a, b, c, ...)","mean(A)","mean(A, dim)"],description:"Compute the arithmetic mean of a list of values.",examples:["mean(2, 3, 4, 1)","mean([2, 3, 4, 1])","mean([2, 5; 4, 3])","mean([2, 5; 4, 3], 1)","mean([2, 5; 4, 3], 2)","mean([1.0, 2.7, 3.2, 4.0])"],seealso:["max","median","min","prod","std","sum","var"]}},function(e,t){e.exports={name:"median",category:"Statistics",syntax:["median(a, b, c, ...)","median(A)"],description:"Compute the median of all values. The values are sorted and the middle value is returned. In case of an even number of values, the average of the two middle values is returned.",examples:["median(5, 2, 7)","median([3, -1, 5, 7])"],seealso:["max","mean","min","prod","std","sum","var","quantileSeq"]}},function(e,t){e.exports={name:"min",category:"Statistics",syntax:["min(a, b, c, ...)","min(A)","min(A, dim)"],description:"Compute the minimum value of a list of values.",examples:["min(2, 3, 4, 1)","min([2, 3, 4, 1])","min([2, 5; 4, 3])","min([2, 5; 4, 3], 1)","min([2, 5; 4, 3], 2)","min(2.7, 7.1, -4.5, 2.0, 4.1)","max(2.7, 7.1, -4.5, 2.0, 4.1)"],seealso:["max","mean","median","prod","std","sum","var"]}},function(e,t){e.exports={name:"mode",category:"Statistics",syntax:["mode(a, b, c, ...)","mode(A)","mode(A, a, b, B, c, ...)"],description:"Computes the mode of all values as an array. In case mode being more than one, multiple values are returned in an array.",examples:["mode(2, 1, 4, 3, 1)","mode([1, 2.7, 3.2, 4, 2.7])","mode(1, 4, 6, 1, 6)"],seealso:["max","mean","min","median","prod","std","sum","var"]}},function(e,t){e.exports={name:"prod",category:"Statistics",syntax:["prod(a, b, c, ...)","prod(A)"],description:"Compute the product of all values.",examples:["prod(2, 3, 4)","prod([2, 3, 4])","prod([2, 5; 4, 3])"],seealso:["max","mean","min","median","min","std","sum","var"]}},function(e,t){e.exports={name:"quantileSeq",category:"Statistics",syntax:["quantileSeq(A, prob[, sorted])","quantileSeq(A, [prob1, prob2, ...][, sorted])","quantileSeq(A, N[, sorted])"],description:"Compute the prob order quantile of a matrix or a list with values. The sequence is sorted and the middle value is returned. Supported types of sequence values are: Number, BigNumber, Unit Supported types of probablity are: Number, BigNumber. \n\nIn case of a (multi dimensional) array or matrix, the prob order quantile of all elements will be calculated.",examples:["quantileSeq([3, -1, 5, 7], 0.5)","quantileSeq([3, -1, 5, 7], [1/3, 2/3])","quantileSeq([3, -1, 5, 7], 2)","quantileSeq([-1, 3, 5, 7], 0.5, true)"],seealso:["mean","median","min","max","prod","std","sum","var"]}},function(e,t){e.exports={name:"std",category:"Statistics",syntax:["std(a, b, c, ...)","std(A)","std(A, normalization)"],description:'Compute the standard deviation of all values, defined as std(A) = sqrt(var(A)). Optional parameter normalization can be "unbiased" (default), "uncorrected", or "biased".',examples:["std(2, 4, 6)","std([2, 4, 6, 8])",'std([2, 4, 6, 8], "uncorrected")','std([2, 4, 6, 8], "biased")',"std([1, 2, 3; 4, 5, 6])"],seealso:["max","mean","min","median","min","prod","sum","var"]}},function(e,t){e.exports={name:"sum",category:"Statistics",syntax:["sum(a, b, c, ...)","sum(A)"],description:"Compute the sum of all values.",examples:["sum(2, 3, 4, 1)","sum([2, 3, 4, 1])","sum([2, 5; 4, 3])"],seealso:["max","mean","median","min","prod","std","sum","var"]}},function(e,t){e.exports={name:"var",category:"Statistics",syntax:["var(a, b, c, ...)","var(A)","var(A, normalization)"],description:'Compute the variance of all values. Optional parameter normalization can be "unbiased" (default), "uncorrected", or "biased".',examples:["var(2, 4, 6)","var([2, 4, 6, 8])",'var([2, 4, 6, 8], "uncorrected")','var([2, 4, 6, 8], "biased")',"var([1, 2, 3; 4, 5, 6])"],seealso:["max","mean","min","median","min","prod","std","sum"]}},function(e,t){e.exports={name:"acos",category:"Trigonometry",syntax:["acos(x)"],description:"Compute the inverse cosine of a value in radians.",examples:["acos(0.5)","acos(cos(2.3))"],seealso:["cos","atan","asin"]}},function(e,t){e.exports={name:"acosh",category:"Trigonometry",syntax:["acosh(x)"],description:"Calculate the hyperbolic arccos of a value, defined as `acosh(x) = ln(sqrt(x^2 - 1) + x)`.",examples:["acosh(1.5)"],seealso:["cosh","asinh","atanh"]}},function(e,t){e.exports={name:"acot",category:"Trigonometry",syntax:["acot(x)"],description:"Calculate the inverse cotangent of a value.",examples:["acot(0.5)","acot(cot(0.5))","acot(2)"],seealso:["cot","atan"]}},function(e,t){e.exports={name:"acoth",category:"Trigonometry",syntax:["acoth(x)"],description:"Calculate the hyperbolic arccotangent of a value, defined as `acoth(x) = (ln((x+1)/x) + ln(x/(x-1))) / 2`.",examples:["acoth(2)","acoth(0.5)"],seealso:["acsch","asech"]}},function(e,t){e.exports={name:"acsc",category:"Trigonometry",syntax:["acsc(x)"],description:"Calculate the inverse cotangent of a value.",examples:["acsc(2)","acsc(csc(0.5))","acsc(0.5)"],seealso:["csc","asin","asec"]}},function(e,t){e.exports={name:"acsch",category:"Trigonometry",syntax:["acsch(x)"],description:"Calculate the hyperbolic arccosecant of a value, defined as `acsch(x) = ln(1/x + sqrt(1/x^2 + 1))`.",examples:["acsch(0.5)"],seealso:["asech","acoth"]}},function(e,t){e.exports={name:"asec",category:"Trigonometry",syntax:["asec(x)"],description:"Calculate the inverse secant of a value.",examples:["asec(0.5)","asec(sec(0.5))","asec(2)"],seealso:["acos","acot","acsc"]}},function(e,t){e.exports={name:"asech",category:"Trigonometry",syntax:["asech(x)"],description:"Calculate the inverse secant of a value.",examples:["asech(0.5)"],seealso:["acsch","acoth"]}},function(e,t){e.exports={name:"asin",category:"Trigonometry",syntax:["asin(x)"],description:"Compute the inverse sine of a value in radians.",examples:["asin(0.5)","asin(sin(0.5))"],seealso:["sin","acos","atan"]}},function(e,t){e.exports={name:"asinh",category:"Trigonometry",syntax:["asinh(x)"],description:"Calculate the hyperbolic arcsine of a value, defined as `asinh(x) = ln(x + sqrt(x^2 + 1))`.",examples:["asinh(0.5)"],seealso:["acosh","atanh"]}},function(e,t){e.exports={name:"atan",category:"Trigonometry",syntax:["atan(x)"],description:"Compute the inverse tangent of a value in radians.",examples:["atan(0.5)","atan(tan(0.5))"],seealso:["tan","acos","asin"]}},function(e,t){e.exports={name:"atanh",category:"Trigonometry",syntax:["atanh(x)"],description:"Calculate the hyperbolic arctangent of a value, defined as `atanh(x) = ln((1 + x)/(1 - x)) / 2`.",examples:["atanh(0.5)"],seealso:["acosh","asinh"]}},function(e,t){e.exports={name:"atan2",category:"Trigonometry",syntax:["atan2(y, x)"],description:"Computes the principal value of the arc tangent of y/x in radians.",examples:["atan2(2, 2) / pi","angle = 60 deg in rad","x = cos(angle)","y = sin(angle)","atan2(y, x)"],seealso:["sin","cos","tan"]}},function(e,t){e.exports={name:"cos",category:"Trigonometry",syntax:["cos(x)"],description:"Compute the cosine of x in radians.",examples:["cos(2)","cos(pi / 4) ^ 2","cos(180 deg)","cos(60 deg)","sin(0.2)^2 + cos(0.2)^2"],seealso:["acos","sin","tan"]}},function(e,t){e.exports={name:"cosh",category:"Trigonometry",syntax:["cosh(x)"],description:"Compute the hyperbolic cosine of x in radians.",examples:["cosh(0.5)"],seealso:["sinh","tanh","coth"]}},function(e,t){e.exports={name:"cot",category:"Trigonometry",syntax:["cot(x)"],description:"Compute the cotangent of x in radians. Defined as 1/tan(x)",examples:["cot(2)","1 / tan(2)"],seealso:["sec","csc","tan"]}},function(e,t){e.exports={name:"coth",category:"Trigonometry",syntax:["coth(x)"],description:"Compute the hyperbolic cotangent of x in radians.",examples:["coth(2)","1 / tanh(2)"],seealso:["sech","csch","tanh"]}},function(e,t){e.exports={name:"csc",category:"Trigonometry",syntax:["csc(x)"],description:"Compute the cosecant of x in radians. Defined as 1/sin(x)",examples:["csc(2)","1 / sin(2)"],seealso:["sec","cot","sin"]}},function(e,t){e.exports={name:"csch",category:"Trigonometry",syntax:["csch(x)"],description:"Compute the hyperbolic cosecant of x in radians. Defined as 1/sinh(x)",examples:["csch(2)","1 / sinh(2)"],seealso:["sech","coth","sinh"]}},function(e,t){e.exports={name:"sec",category:"Trigonometry",syntax:["sec(x)"],description:"Compute the secant of x in radians. Defined as 1/cos(x)",examples:["sec(2)","1 / cos(2)"],seealso:["cot","csc","cos"]}},function(e,t){e.exports={name:"sech",category:"Trigonometry",syntax:["sech(x)"],description:"Compute the hyperbolic secant of x in radians. Defined as 1/cosh(x)",examples:["sech(2)","1 / cosh(2)"],seealso:["coth","csch","cosh"]}},function(e,t){e.exports={name:"sin",category:"Trigonometry",syntax:["sin(x)"],description:"Compute the sine of x in radians.",examples:["sin(2)","sin(pi / 4) ^ 2","sin(90 deg)","sin(30 deg)","sin(0.2)^2 + cos(0.2)^2"],seealso:["asin","cos","tan"]}},function(e,t){e.exports={name:"sinh",category:"Trigonometry",syntax:["sinh(x)"],description:"Compute the hyperbolic sine of x in radians.",examples:["sinh(0.5)"],seealso:["cosh","tanh"]}},function(e,t){e.exports={name:"tan",category:"Trigonometry",syntax:["tan(x)"],description:"Compute the tangent of x in radians.",examples:["tan(0.5)","sin(0.5) / cos(0.5)","tan(pi / 4)","tan(45 deg)"],seealso:["atan","sin","cos"]}},function(e,t){e.exports={name:"tanh",category:"Trigonometry",syntax:["tanh(x)"],description:"Compute the hyperbolic tangent of x in radians.",examples:["tanh(0.5)","sinh(0.5) / cosh(0.5)"],seealso:["sinh","cosh"]}},function(e,t){e.exports={name:"to",category:"Units",syntax:["x to unit","to(x, unit)"],description:"Change the unit of a value.",examples:["5 inch to cm","3.2kg to g","16 bytes in bits"],seealso:[]}},function(e,t){e.exports={name:"clone",category:"Utils",syntax:["clone(x)"],description:"Clone a variable. Creates a copy of primitive variables,and a deep copy of matrices",examples:["clone(3.5)","clone(2 - 4i)","clone(45 deg)","clone([1, 2; 3, 4])",'clone("hello world")'],seealso:[]}},function(e,t){e.exports={name:"format",category:"Utils",syntax:["format(value)","format(value, precision)"],description:"Format a value of any type as string.",examples:["format(2.3)","format(3 - 4i)","format([])","format(pi, 3)"],seealso:["print"]}},function(e,t){e.exports={name:"isNaN",category:"Utils",syntax:["isNaN(x)"],description:"Test whether a value is NaN (not a number)",examples:["isNaN(2)","isNaN(0 / 0)","isNaN(NaN)","isNaN(Infinity)"],seealso:["isNegative","isNumeric","isPositive","isZero"]}},function(e,t){e.exports={name:"isInteger",category:"Utils",syntax:["isInteger(x)"],description:"Test whether a value is an integer number.",examples:["isInteger(2)","isInteger(3.5)","isInteger([3, 0.5, -2])"],seealso:["isNegative","isNumeric","isPositive","isZero"]}},function(e,t){e.exports={name:"isNegative",category:"Utils",syntax:["isNegative(x)"],description:"Test whether a value is negative: smaller than zero.",examples:["isNegative(2)","isNegative(0)","isNegative(-4)","isNegative([3, 0.5, -2])"],seealso:["isInteger","isNumeric","isPositive","isZero"]}},function(e,t){e.exports={name:"isNumeric",category:"Utils",syntax:["isNumeric(x)"],description:"Test whether a value is a numeric value. Returns true when the input is a number, BigNumber, Fraction, or boolean.",examples:["isNumeric(2)","isNumeric(0)","isNumeric(bignumber(500))","isNumeric(fraction(0.125))",'isNumeric("3")',"isNumeric(2 + 3i)",'isNumeric([2.3, "foo", false])'],seealso:["isInteger","isZero","isNegative","isPositive","isNaN"]}},function(e,t){e.exports={name:"isPositive",category:"Utils",syntax:["isPositive(x)"],description:"Test whether a value is positive: larger than zero.",examples:["isPositive(2)","isPositive(0)","isPositive(-4)","isPositive([3, 0.5, -2])"],seealso:["isInteger","isNumeric","isNegative","isZero"]}},function(e,t){e.exports={name:"isPrime",category:"Utils",syntax:["isPrime(x)"],description:"Test whether a value is prime: has no divisors other than itself and one.",examples:["isPrime(3)","isPrime(-2)","isPrime([2, 17, 100])"],seealso:["isInteger","isNumeric","isNegative","isZero"]}},function(e,t){e.exports={name:"isZero",category:"Utils",syntax:["isZero(x)"],description:"Test whether a value is zero.",examples:["isZero(2)","isZero(0)","isZero(-4)","isZero([3, 0, -2, 0])"],seealso:["isInteger","isNumeric","isNegative","isPositive"]}},function(e,t){e.exports={name:"typeof",category:"Utils",syntax:["typeof(x)"],description:"Get the type of a variable.",examples:["typeof(3.5)","typeof(2 - 4i)","typeof(45 deg)",'typeof("hello world")'],seealso:[]}},function(e,t,r){e.exports=[r(388),r(390),r(391),r(111),r(112)]},function(e,t,r){"use strict";var n=r(1);t.name="compile",t.factory=function(e,t,i,a){var o=i(r(40));return a("compile",{string:function(e){return o(e).compile()},"Array | Matrix":function(e){return n(e,function(e){return o(e).compile()})}})}},function(e,t,r){"use strict";var n=r(41).transform,i=r(13).setSafeProperty;t.factory=function(e,t,a,o){var s=a(r(22)),u=a(r(0));return function(e,t,r){try{if(Array.isArray(e))return u(e).subset(t,r).valueOf();if(e&&"function"==typeof e.subset)return e.subset(t,r);if("string"==typeof e)return s(e,t,r);if("object"==typeof e){if(!t.isObjectProperty())throw TypeError("Cannot apply a numeric index as object property");return i(e,t.getObjectProperty(),r),e}throw new TypeError("Cannot apply index: unsupported type of object")}catch(e){throw n(e)}}}},function(e,t,r){"use strict";var n=r(1);t.name="eval",t.factory=function(e,t,i,a){var o=i(r(40));return a("compile",{string:function(e){return o(e).compile().eval({})},"string, Object":function(e,t){return o(e).compile().eval(t)},"Array | Matrix":function(e){var t={};return n(e,function(e){return o(e).compile().eval(t)})},"Array | Matrix, Object":function(e,t){return n(e,function(e){return o(e).compile().eval(t)})}})}},function(e,t,r){"use strict";var n=r(13).getSafeProperty;t.math=!0,t.name="help",t.factory=function(e,t,i,a,o){var s=i(r(100));return a("help",{any:function(t){var r,i=t;if("string"!=typeof t)for(r in o)if(o.hasOwnProperty(r)&&t===o[r]){i=r;break}var a=n(s,i);if(!a)throw new Error('No documentation found on "'+i+'"');return new e.Help(a)}})}},function(e,t,r){e.exports=[r(103),r(80),r(105),r(106),r(107),r(47),r(78),r(108),r(55),r(14),r(110),r(54),r(63),r(79),r(35),r(393)]},function(e,t,r){"use strict";t.name="UpdateNode",t.path="expression.node",t.factory=function(e,t,r,n){return function(){throw new Error("UpdateNode is deprecated. Use AssignmentNode instead.")}}},function(e,t,r){e.exports=[r(395),r(396),r(397),r(398),r(399),r(400),r(401),r(402),r(403),r(404)]},function(e,t,r){"use strict";var n=r(41).transform;t.name="concat",t.path="expression.transform",t.factory=function(e,t,i,a){var o=i(r(64));return a("concat",{"...any":function(t){var r=t.length-1,i=t[r];e.isNumber(i)?t[r]=i-1:e.isBigNumber(i)&&(t[r]=i.minus(1));try{return o.apply(null,t)}catch(e){throw n(e)}}})}},function(e,t,r){"use strict";function n(e,t){var r=o(t);return i(e,function(e,n,i){return 1===r?t(e):2===r?t(e,[n+1]):t(e,[n+1],i)})}var i=r(2).filter,a=r(2).filterRegExp,o=r(32).maxArgumentCount;t.name="filter",t.path="expression.transform",t.factory=function(e,t,i,o){function s(t,r,n){var i,a;return t[0]&&(i=t[0].compile().eval(n)),t[1]&&(a=e.isSymbolNode(t[1])||e.isFunctionAssignmentNode(t[1])?t[1].compile().eval(n):u(t[1],r,n)),f(i,a)}var u=i(r(81)),c=i(r(0));s.rawArgs=!0;var f=o("filter",{"Array, function":n,"Matrix, function":function(e,t){return c(n(e.toArray(),t))},"Array, RegExp":a,"Matrix, RegExp":function(e,t){return c(a(e.toArray(),t))}});return f.toTex=void 0,s}},function(e,t,r){"use strict";var n=r(32).maxArgumentCount,i=r(2).forEach;t.name="forEach",t.path="expression.transform",t.factory=function(e,t,a,o){function s(t,r,n){var i,a;return t[0]&&(i=t[0].compile().eval(n)),t[1]&&(a=e.isSymbolNode(t[1])||e.isFunctionAssignmentNode(t[1])?t[1].compile().eval(n):u(t[1],r,n)),c(i,a)}var u=a(r(81));s.rawArgs=!0;var c=o("forEach",{"Array | Matrix, function":function(e,t){var r=n(t),a=function(n,o){Array.isArray(n)?i(n,function(e,t){a(e,o.concat(t+1))}):1===r?t(n):2===r?t(n,o):t(n,o,e)};a(e.valueOf(),[])}});return s}},function(e,t,r){"use strict";t.name="index",t.path="expression.transform",t.factory=function(e,t,r){return function(){for(var t=[],r=0,n=arguments.length;r0?0:2;else if(i&&!0===i.isSet)i=i.map(function(e){return e-1});else if(e.isArray(i)||e.isMatrix(i))i=i.map(function(e){return e-1});else if(e.isNumber(i))i--;else if(e.isBigNumber(i))i=i.toNumber()-1;else if("string"!=typeof i)throw new TypeError("Dimension must be an Array, Matrix, number, string, or Range");t[r]=i}var a=new e.Index;return e.Index.apply(a,t),a}}},function(e,t,r){"use strict";function n(e,t,r){function n(e,i){return Array.isArray(e)?a(e,function(e,t){return n(e,i.concat(t+1))}):1===o?t(e):2===o?t(e,i):t(e,i,r)}var o=i(t);return n(e,[])}var i=r(32).maxArgumentCount,a=r(2).map;t.name="map",t.path="expression.transform",t.factory=function(e,t,i,a){function o(t,r,n){var i,a;return t[0]&&(i=t[0].compile().eval(n)),t[1]&&(a=e.isSymbolNode(t[1])||e.isFunctionAssignmentNode(t[1])?t[1].compile().eval(n):s(t[1],r,n)),c(i,a)}var s=i(r(81)),u=i(r(0));o.rawArgs=!0;var c=a("map",{"Array, function":function(e,t){return n(e,t,e)},"Matrix, function":function(e,t){return u(n(e.valueOf(),t,e))}});return o}},function(e,t,r){"use strict";var n=r(41).transform,i=r(48);t.name="max",t.path="expression.transform",t.factory=function(e,t,a,o){var s=a(r(114));return o("max",{"...any":function(t){if(2==t.length&&i(t[0])){var r=t[1];e.isNumber(r)?t[1]=r-1:e.isBigNumber(r)&&(t[1]=r.minus(1))}try{return s.apply(null,t)}catch(e){throw n(e)}}})}},function(e,t,r){"use strict";var n=r(41).transform,i=r(48);t.name="mean",t.path="expression.transform",t.factory=function(e,t,a,o){var s=a(r(115));return o("mean",{"...any":function(t){if(2==t.length&&i(t[0])){var r=t[1];e.isNumber(r)?t[1]=r-1:e.isBigNumber(r)&&(t[1]=r.minus(1))}try{return s.apply(null,t)}catch(e){throw n(e)}}})}},function(e,t,r){"use strict";var n=r(41).transform,i=r(48);t.name="min",t.path="expression.transform",t.factory=function(e,t,a,o){var s=a(r(118));return o("min",{"...any":function(t){if(2==t.length&&i(t[0])){var r=t[1];e.isNumber(r)?t[1]=r-1:e.isBigNumber(r)&&(t[1]=r.minus(1))}try{return s.apply(null,t)}catch(e){throw n(e)}}})}},function(e,t,r){"use strict";t.name="range",t.path="expression.transform",t.factory=function(e,t,n,i){var a=n(r(119));return i("range",{"...any":function(e){return"boolean"!=typeof e[e.length-1]&&e.push(!0),a.apply(null,e)}})}},function(e,t,r){"use strict";var n=r(41).transform;t.name="subset",t.path="expression.transform",t.factory=function(e,t,i,a){var o=i(r(22));return a("subset",{"...any":function(e){try{return o.apply(null,e)}catch(e){throw n(e)}}})}},function(e,t,r){"use strict";var n=r(5),i=r(9);t.name="Help",t.path="type",t.factory=function(e,t,a,o){function s(e){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!e)throw new Error('Argument "doc" missing');this.doc=e}var u=a(r(112))();return s.prototype.type="Help",s.prototype.isHelp=!0,s.prototype.toString=function(){var t=this.doc||{},r="\n";if(t.name&&(r+="Name: "+t.name+"\n\n"),t.category&&(r+="Category: "+t.category+"\n\n"),t.description&&(r+="Description:\n "+t.description+"\n\n"),t.syntax&&(r+="Syntax:\n "+t.syntax.join("\n ")+"\n\n"),t.examples){r+="Examples:\n";for(var n=0;n1;if("OperatorNode"===n){var o=!1;if("^"===e.op&&("ParenthesisNode"===e.args[0].type||"OperatorNode"===e.args[0].type)&&"ConstantNode"===e.args[1].type){var s=parseFloat(e.args[1].value);o=s>=2&&p.isInteger(s)}if(o){if(s>2){var u=e.args[0],c=new m("^","pow",[e.args[0].cloneDeep(),new h(s-1)]);e=new m("*","multiply",[u,c])}else e=new m("*","multiply",[e.args[0],e.args[0].cloneDeep()]);i&&("content"===r?t.content=e:t.args[r]=e)}}if("ParenthesisNode"===n)a(e.content,e,"content");else if("ConstantNode"!==n&&"SymbolNode"!==n)for(var f=0;fa&&(t[c]=0),t[c]+=i.cte*("+"===i.oper?1:-1),void(a=Math.max(c,a))}i.cte=c,""===i.fire&&(t[0]+=i.cte*("+"===i.oper?1:-1))}}var n;void 0===t&&(t=[]),t[0]=0;var i={};i.cte=1,i.oper="+",i.fire="";var a=0,o="";r(e,null,i);var s=!0;for(n=a=t.length-1;n>=0;n--)if(0!==t[n]){var u=new h(s?t[n]:Math.abs(t[n])),c=t[n]<0?"-":"+";if(n>0){var l=new d(o);if(n>1){var g=new h(n);l=new m("^","pow",[l,g])}u=-1===t[n]&&s?new m("-","unaryMinus",[l]):1===Math.abs(t[n])?l:new m("*","multiply",[u,l])}var v;v=s?u:"+"===c?new m("+","add",[v,u]):new m("-","subtract",[v,u]),s=!1}return s?new h(0):v}var s=n(r(82)),u=n(r(122)),c=n(r(120)),f=r(43),l=n(r(111)),p=r(3),h=n(r(47)),m=n(r(54)),d=n(r(35)),g=i("rationalize",{string:function(e){return g(l(e),{},!1)},"string, boolean":function(e,t){return g(l(e),{},t)},"string, Object":function(e,t){return g(l(e),t,!1)},"string, Object, boolean":function(e,t,r){return g(l(e),t,r)},Node:function(e){return g(e,{},!1)},"Node, boolean":function(e,t){return g(e,{},t)},"Node, Object":function(e,t){return g(e,t,!1)},"Node, Object, boolean":function(e,t,r){var n=function(e,t,r){function n(e){var t=e.type;if("FunctionNode"===t)throw new f("There is an unsolved function call");if("OperatorNode"===t)if("^"===e.op){if("ConstantNode"!==e.args[1].type||!p.isInteger(parseFloat(e.args[1].value)))throw new f("There is a non-integer exponent");n(e.args[0])}else{if(-1===o.indexOf(e.op))throw new f("Operator "+e.op+" invalid in polynomial expression");for(var r=0;r=1){var l=function(){var e=[u,{l:"n+n",r:"2*n"},{l:"n+-n",r:"0"},c,{l:"n*(n1^-1)",r:"n/n1"},{l:"n*n1^-n2",r:"n/n1^n2"},{l:"n1^-1",r:"1/n1"},{l:"n*(n1/n2)",r:"(n*n1)/n2"},{l:"1*n",r:"n"}],t=[{l:"(-n1)/(-n2)",r:"n1/n2"},{l:"(-n1)*(-n2)",r:"n1*n2"},{l:"n1--n2",r:"n1+n2"},{l:"n1-n2",r:"n1+(-n2)"},{l:"(n1+n2)*n3",r:"(n1*n3 + n2*n3)"},{l:"n1*(n2+n3)",r:"(n1*n2+n1*n3)"},{l:"c1*n + c2*n",r:"(c1+c2)*n"},{l:"-v*-c",r:"c*v"},{l:"-v*c",r:"-c*v"},{l:"v*-c",r:"-c*v"},{l:"v*c",r:"c*v"},{l:"-(-n1*n2)",r:"(n1*n2)"},{l:"-(n1*n2)",r:"(-n1*n2)"},{l:"-(-n1+n2)",r:"(n1-n2)"},{l:"-(n1+n2)",r:"(-n1-n2)"},{l:"(n1^n2)^n3",r:"(n1^(n2*n3))"},{l:"-(-n1/n2)",r:"(n1/n2)"},{l:"-(n1/n2)",r:"(-n1/n2)"}],r=[{l:"(n1/(n2/n3))",r:"((n1*n3)/n2)"},{l:"(n1/n2/n3)",r:"(n1/(n2*n3))"}],n={};return n.firstRules=e.concat(t,r),n.distrDivRules=[{l:"(n1/n2 + n3/n4)",r:"((n1*n4 + n3*n2)/(n2*n4))"},{l:"(n1/n2 + n3)",r:"((n1 + n3*n2)/n2)"},{l:"(n1 + n2/n3)",r:"((n1*n3 + n2)/n3)"}],n.sucDivRules=r,n.firstRulesAgain=e.concat(t),n.finalRules=[u,{l:"n*-n",r:"-n^2"},{l:"n*n",r:"n^2"},c,{l:"n*-n^n1",r:"-n^(n1+1)"},{l:"n*n^n1",r:"n^(n1+1)"},{l:"n^n1*-n^n2",r:"-n^(n1+n2)"},{l:"n^n1*n^n2",r:"n^(n1+n2)"},{l:"n^n1*-n",r:"-n^(n1+1)"},{l:"n^n1*n",r:"n^(n1+1)"},{l:"n^n1/-n",r:"-n^(n1-1)"},{l:"n^n1/n",r:"n^(n1-1)"},{l:"n/-n^n1",r:"-n^(1-n1)"},{l:"n/n^n1",r:"n^(1-n1)"},{l:"n^n1/-n^n2",r:"n^(n1-n2)"},{l:"n^n1/n^n2",r:"n^(n1-n2)"},{l:"n1+(-n2*n3)",r:"n1-n2*n3"},{l:"v*(-c)",r:"-c*v"},{l:"n1+-n2",r:"n1-n2"},{l:"v*c",r:"c*v"},{l:"(n1^n2)^n3",r:"(n1^(n2*n3))"}],n}();e=a(e);var h,m,d=!0,g="",v=!0;for(g=(e=s(e,l.firstRules)).toString();m=v?l.distrDivRules:l.sucDivRules,e=s(e,m),v=!v,(g=e.toString())!==h;)d=!0,h=g;d&&(e=s(e,l.firstRulesAgain)),e=s(e,l.finalRules)}var y=[],x={};return"OperatorNode"===e.type&&"/"===e.op?(1==i&&(e.args[0]=o(e.args[0],y),e.args[1]=o(e.args[1])),r&&(x.numerator=e.args[0],x.denominator=e.args[1])):(1==i&&(e=o(e,y)),r&&(x.numerator=e,x.denominator=null)),r?(x.coefficients=y,x.variables=n.variables,x.expression=e,x):e}});return g}},function(e,t,r){"use strict";t.name="qr",t.factory=function(e,t,n,i){var a=n(r(0)),o=n(r(39)),s=n(r(62)),u=(n(r(123)),n(r(83))),c=(n(r(56)),n(r(124))),f=(n(r(29)),n(r(125))),l=n(r(57)),p=n(r(126)),h=n(r(38)),m=n(r(20)),d=n(r(19)),g=n(r(23)),v=n(r(21)),y=i("qr",{DenseMatrix:function(e){return x(e)},SparseMatrix:function(e){return w(e)},Array:function(e){var t=a(e),r=x(t);return{Q:r.Q.valueOf(),R:r.R.valueOf()}}}),x=function(e){var t,r,n,i=e._size[0],a=e._size[1],y=s([i],"dense"),x=y._data,w=e.clone(),b=w._data,N=o([i],"");for(n=0;n=0;u--)for(f=r[u],l=r[u+1],c=f;c=0;s--)h[s]=-1,-1!=(u=m[s])&&(0==d[y+u]++&&(d[v+u]=s),d[0+s]=d[g+u],d[g+u]=s);for(t.lnz=0,t.m2=a,u=0;ui))for(var m=f[p+1];hs)r[u+h]=0,r[a+h]=-1,p++,t[h]=i(e),r[u+e]++;else{var d=r[c+m];-1!=d&&(f[d]=h),r[l+h]=r[c+m],r[c+m]=h}}return p},h=function(e,t,r,n,i){if(e<2||e+t<0){for(var a=0;a3)return null;var r=t._size,n=r[0],s=r[1],u=0,c=Math.max(16,10*Math.sqrt(s));c=Math.min(s-2,c);var d=f(e,t,n,s,c);a(d,m,null);for(var g,v,y,x,w,b,N,E,M,A,O,T,S,_,C,z,k=d._index,I=d._ptr,B=I[s],P=[],R=[],U=s+1,q=2*(s+1),L=3*(s+1),j=4*(s+1),F=5*(s+1),D=6*(s+1),H=7*(s+1),$=P,G=l(s,I,R,0,L,$,q,H,U,D,j,F),Z=p(s,I,R,F,j,D,c,U,L,$,q),V=0;ZW?(b=y,N=J,E=R[0+y]-W):(N=I[b=k[J++]],E=R[0+b]),w=1;w<=E;w++)(M=R[U+(g=k[N++])])<=0||(X+=M,R[U+g]=-M,k[K++]=g,-1!=R[q+g]&&($[R[q+g]]=$[g]),-1!=$[g]?R[q+$[g]]=R[q+g]:R[L+R[F+g]]=R[q+g]);b!=y&&(I[b]=i(y),R[D+b]=0)}for(0!==W&&(B=K),R[F+y]=X,I[y]=Q,R[0+y]=K-Q,R[j+y]=-2,G=h(G,u,R,D,s),A=Q;A=G?R[D+b]-=M:0!==R[D+b]&&(R[D+b]=R[F+b]+ee)}for(A=Q;A0?(z+=te,k[_++]=b,C+=b):(I[b]=i(y),R[D+b]=0)}R[j+g]=_-T+1;var re=_,ne=T+R[0+g];for(J=S+1;J=0))for(g=R[H+(C=$[g])],R[H+C]=-1;-1!=g&&-1!=R[q+g];g=R[q+g],G++){for(E=R[0+g],O=R[j+g],J=I[g]+1;J<=I[g]+E-1;J++)R[D+k[J]]=G;var ae=g;for(v=R[q+g];-1!=v;){var oe=R[0+v]===E&&R[j+v]===O;for(J=I[v]+1;oe&&J<=I[v]+E-1;J++)R[D+k[J]]!=G&&(oe=0);oe?(I[v]=i(g),R[U+g]+=R[U+v],R[U+v]=0,R[j+v]=-1,v=R[q+v],R[q+ae]=v):(ae=v,v=R[q+v])}}for(J=Q,A=Q;A=0;v--)R[U+v]>0||(R[q+v]=R[L+I[v]],R[L+I[v]]=v);for(b=s;b>=0;b--)R[U+b]<=0||-1!=I[b]&&(R[q+b]=R[L+I[b]],R[L+I[b]]=b);for(y=0,g=0;g<=s;g++)-1==I[g]&&(y=o(g,y,R,L,q,P,D));return P.splice(P.length-1,1),P}}},function(e,t,r){"use strict";t.name="cs_fkeep",t.path="sparse",t.factory=function(){return function(e,t,r){for(var n=e._values,i=e._index,a=e._ptr,o=e._size[1],s=0,u=0;u=0;r--)-1!=e[r]&&(o[s+r]=o[0+e[r]],o[0+e[r]]=r);for(r=0;r=1&&E[s]++,2==T.jleaf&&E[T.q]--}-1!=t[s]&&(v[0+s]=t[s])}for(s=0;s=0;){e=n[m];var d=s?s[e]:e;i(p,e)||(a(p,e),n[h+m]=d<0?0:o(p[d]));var g=1;for(c=n[h+m],f=d<0?0:o(p[d+1]);c=0||t.predictable?i(r):new e.Complex(r,0).log().div(Math.LN10)},Complex:function(t){return new e.Complex(t).log().div(Math.LN10)},BigNumber:function(r){return!r.isNegative()||t.predictable?r.log():new e.Complex(r.toNumber(),0).log().div(Math.LN10)},"Array | Matrix":function(e){return n(e,o)}});return o.toTex={1:"\\log_{10}\\left(${args[0]}\\right)"},o}},function(e,t,r){"use strict";t.name="mod",t.factory=function(e,t,n,i){var a=n(r(0)),o=r(4),s=n(r(24)),u=n(r(15)),c=n(r(61)),f=n(r(17)),l=n(r(16)),p=n(r(8)),h=n(r(6)),m=i("mod",{"number, number":function(e,t){if(t>0)return e-t*Math.floor(e/t);if(0===t)return e;throw new Error("Cannot calculate mod for a negative divisor")},"BigNumber, BigNumber":function(e,t){return t.isZero()?e:e.mod(t)},"Fraction, Fraction":function(e,t){return e.mod(t)},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=c(e,t,m,!1);break;default:r=s(t,e,m,!0)}break;default:switch(t.storage()){case"sparse":r=u(e,t,m,!1);break;default:r=p(e,t,m)}}return r},"Array, Array":function(e,t){return m(a(e),a(t)).valueOf()},"Array, Matrix":function(e,t){return m(a(e),t)},"Matrix, Array":function(e,t){return m(e,a(t))},"Matrix, any":function(e,t){var r;switch(e.storage()){case"sparse":r=f(e,t,m,!1);break;default:r=h(e,t,m,!1)}return r},"any, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=l(t,e,m,!0);break;default:r=h(t,e,m,!0)}return r},"Array, any":function(e,t){return h(a(e),t,m,!1).valueOf()},"any, Array":function(e,t){return h(a(t),e,m,!0).valueOf()}});return m.toTex={2:"\\left(${args[0]}"+o.operators.mod+"${args[1]}\\right)"},m}},function(e,t,r){"use strict";t.name="norm",t.factory=function(e,t,n,i){function a(e,t){var r=e.size();if(1==r.length){if(t===Number.POSITIVE_INFINITY||"inf"===t){var n=0;return e.forEach(function(e){var t=o(e);p(t,n)&&(n=t)},!0),n}if(t===Number.NEGATIVE_INFINITY||"-inf"===t){var i;return e.forEach(function(e){var t=o(e);i&&!h(t,i)||(i=t)},!0),i||0}if("fro"===t)return a(e,2);if("number"==typeof t&&!isNaN(t)){if(!l(t,0)){var m=0;return e.forEach(function(e){m=s(u(o(e),t),m)},!0),u(m,1/t)}return Number.POSITIVE_INFINITY}throw new Error("Unsupported parameter value")}if(2==r.length){if(1===t){var v=[],y=0;return e.forEach(function(e,t){var r=t[1],n=s(v[r]||0,o(e));p(n,y)&&(y=n),v[r]=n},!0),y}if(t===Number.POSITIVE_INFINITY||"inf"===t){var x=[],w=0;return e.forEach(function(e,t){var r=t[0],n=s(x[r]||0,o(e));p(n,w)&&(w=n),x[r]=n},!0),w}if("fro"===t)return c(d(f(g(e),e)));if(2===t)throw new Error("Unsupported parameter value, missing implementation of matrix singular value decomposition");throw new Error("Unsupported parameter value")}}var o=n(r(29)),s=n(r(18)),u=n(r(46)),c=n(r(57)),f=n(r(12)),l=n(r(11)),p=n(r(34)),h=n(r(45)),m=n(r(0)),d=n(r(138)),g=n(r(67)),v=i("norm",{number:Math.abs,Complex:function(e){return e.abs()},BigNumber:function(e){return e.abs()},"boolean | null":function(e){return Math.abs(e)},Array:function(e){return a(m(e),2)},Matrix:function(e){return a(e,2)},"number | Complex | BigNumber | boolean | null, number | BigNumber | string":function(e){return v(e)},"Array, number | BigNumber | string":function(e,t){return a(m(e),t)},"Matrix, number | BigNumber | string":function(e,t){return a(e,t)}});return v.toTex={1:"\\left\\|${args[0]}\\right\\|",2:void 0},v}},function(e,t,r){"use strict";function n(e,t){var r=t<0;if(r&&(t=-t),0===t)throw new Error("Root must be non-zero");if(e<0&&Math.abs(t)%2!=1)throw new Error("Root must be odd when a is negative.");if(0==e)return r?1/0:0;if(!isFinite(e))return r?0:e;var n=Math.pow(Math.abs(e),1/t);return n=e<0?-n:n,r?1/n:n}function i(e,t){if(t<0)throw new Error("Root must be greater than zero");if(0===t)throw new Error("Root must be non-zero");if(t%1!=0)throw new Error("Root must be an integer");for(var r=e.arg(),n=e.abs(),i=[],a=Math.pow(n,1/t),o=0;o>t},"BigNumber, BigNumber":i,"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=h(e,t,y,!1);break;default:r=p(t,e,y,!0)}break;default:switch(t.storage()){case"sparse":r=l(e,t,y,!1);break;default:r=g(e,t,y)}}return r},"Array, Array":function(e,t){return y(u(e),u(t)).valueOf()},"Array, Matrix":function(e,t){return y(u(e),t)},"Matrix, Array":function(e,t){return y(e,u(t))},"Matrix, number | BigNumber":function(e,t){if(!c(t,0)){var r;switch(e.storage()){case"sparse":r=d(e,t,y,!1);break;default:r=v(e,t,y,!1)}return r}return e.clone()},"number | BigNumber, Matrix":function(e,t){if(!c(e,0)){var r;switch(t.storage()){case"sparse":r=m(t,e,y,!0);break;default:r=v(t,e,y,!0)}return r}return f(t.size(),t.storage())},"Array, number | BigNumber":function(e,t){return y(u(e),t).valueOf()},"number | BigNumber, Array":function(e,t){return y(e,u(t)).valueOf()}});return y.toTex={2:"\\left(${args[0]}"+s.operators.rightArithShift+"${args[1]}\\right)"},y}},function(e,t){e.exports=function(e,t){if(e.isFinite()&&!e.isInteger()||t.isFinite()&&!t.isInteger())throw new Error("Integers expected in function rightArithShift");var r=e.constructor;return e.isNaN()||t.isNaN()||t.isNegative()&&!t.isZero()?new r(NaN):e.isZero()||t.isZero()?e:t.isFinite()?t.lt(55)?e.div(Math.pow(2,t.toNumber())+"").floor():e.div(new r(2).pow(t)).floor():e.isNegative()?new r(-1):e.isFinite()?new r(0):new r(NaN)}},function(e,t,r){"use strict";var n=r(3).isInteger;t.name="rightLogShift",t.factory=function(e,t,i,a){var o=r(4),s=i(r(0)),u=i(r(11)),c=i(r(39)),f=i(r(33)),l=i(r(24)),p=i(r(88)),h=i(r(37)),m=i(r(17)),d=i(r(8)),g=i(r(6)),v=a("rightLogShift",{"number, number":function(e,t){if(!n(e)||!n(t))throw new Error("Integers expected in function rightLogShift");return e>>>t},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=p(e,t,v,!1);break;default:r=l(t,e,v,!0)}break;default:switch(t.storage()){case"sparse":r=f(e,t,v,!1);break;default:r=d(e,t,v)}}return r},"Array, Array":function(e,t){return v(s(e),s(t)).valueOf()},"Array, Matrix":function(e,t){return v(s(e),t)},"Matrix, Array":function(e,t){return v(e,s(t))},"Matrix, number | BigNumber":function(e,t){if(!u(t,0)){var r;switch(e.storage()){case"sparse":r=m(e,t,v,!1);break;default:r=g(e,t,v,!1)}return r}return e.clone()},"number | BigNumber, Matrix":function(e,t){if(!u(e,0)){var r;switch(t.storage()){case"sparse":r=h(t,e,v,!0);break;default:r=g(t,e,v,!0)}return r}return c(t.size(),t.storage())},"Array, number | BigNumber":function(e,t){return v(s(e),t).valueOf()},"number | BigNumber, Array":function(e,t){return v(e,s(t)).valueOf()}});return v.toTex={2:"\\left(${args[0]}"+o.operators.rightLogShift+"${args[1]}\\right)"},v}},function(e,t,r){e.exports=[r(460),r(461),r(139),r(462)]},function(e,t,r){"use strict";t.name="bellNumbers",t.factory=function(e,t,n,i){var a=n(r(18)),o=n(r(139)),s=n(r(58)),u=n(r(50)),c=i("bellNumbers",{"number | BigNumber":function(e){if(!u(e)||s(e))throw new TypeError("Non-negative integer value expected in function bellNumbers");for(var t=0,r=0;r<=e;r++)t=a(t,o(e,r));return t}});return c.toTex={1:"\\mathrm{B}_{${args[0]}}"},c}},function(e,t,r){"use strict";t.name="composition",t.factory=function(e,t,n,i){var a=n(r(70)),o=n(r(20)),s=n(r(56)),u=n(r(50)),c=n(r(34)),f=i("composition",{"number | BigNumber, number | BigNumber":function(e,t){if(!(u(e)&&s(e)&&u(t)&&s(t)))throw new TypeError("Positive integer value expected in function composition");if(c(t,e))throw new TypeError("k must be less than or equal to n in function composition");return a(o(e,-1),o(t,-1))}});return f.toTex=void 0,f}},function(e,t,r){"use strict";t.name="catalan",t.factory=function(e,t,n,i){var a=n(r(18)),o=n(r(49)),s=n(r(12)),u=n(r(70)),c=n(r(58)),f=n(r(50)),l=i("catalan",{"number | BigNumber":function(e){if(!f(e)||c(e))throw new TypeError("Non-negative integer value expected in function catalan");return o(u(s(e,2),e),a(e,1))}});return l.toTex={1:"\\mathrm{C}_{${args[0]}}"},l}},function(e,t,r){e.exports=[r(464),r(126),r(465),r(466)]},function(e,t,r){"use strict";var n=r(1);t.name="arg",t.factory=function(e,t,r,i){var a=i("arg",{number:function(e){return Math.atan2(0,e)},BigNumber:function(t){return e.BigNumber.atan2(0,t)},Complex:function(e){return e.arg()},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\arg\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(1);t.name="im",t.factory=function(e,t,r,i){var a=i("im",{number:function(e){return 0},BigNumber:function(t){return new e.BigNumber(0)},Complex:function(e){return e.im},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\Im\\left\\lbrace${args[0]}\\right\\rbrace"},a}},function(e,t,r){"use strict";var n=r(1);t.name="re",t.factory=function(e,t,r,i){var a=i("re",{number:function(e){return e},BigNumber:function(e){return e},Complex:function(e){return e.re},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\Re\\left\\lbrace${args[0]}\\right\\rbrace"},a}},function(e,t,r){e.exports=[r(468),r(469)]},function(e,t,r){"use strict";t.name="intersect",t.factory=function(e,t,n,i){function a(e){return 2===e.length&&"number"==typeof e[0]&&"number"==typeof e[1]}function o(e){return 3===e.length&&"number"==typeof e[0]&&"number"==typeof e[1]&&"number"==typeof e[2]}var s=n(r(29)),u=n(r(18)),c=n(r(0)),f=n(r(12)),l=n(r(21)),p=i("intersect",{"Array, Array, Array":function(e,t,r){if(!o(e))throw new TypeError("Array with 3 numbers expected for first argument");if(!o(t))throw new TypeError("Array with 3 numbers expected for second argument");if(!function(e){return 4===e.length&&"number"==typeof e[0]&&"number"==typeof e[1]&&"number"==typeof e[2]&&"number"==typeof e[3]}(r))throw new TypeError("Array with 4 numbers expected as third argument");return function(e,t,r,n,i,a,o,s,u,c){var f=(c-e*o-t*s-r*u)/(n*o+i*s+a*u-e*o-t*s-r*u);return[e+f*(n-e),t+f*(i-t),r+f*(a-r)]}(e[0],e[1],e[2],t[0],t[1],t[2],r[0],r[1],r[2],r[3])},"Array, Array, Array, Array":function(e,r,n,i){if(2===e.length){if(!a(e))throw new TypeError("Array with 2 numbers expected for first argument");if(!a(r))throw new TypeError("Array with 2 numbers expected for second argument");if(!a(n))throw new TypeError("Array with 2 numbers expected for third argument");if(!a(i))throw new TypeError("Array with 2 numbers expected for fourth argument");return function(e,r,n,i){var a=e,o=n,c=l(a,r),p=l(o,i),h=c[0]*p[1]-p[0]*c[1];if(s(h)1?[o]:o}var s=i(r(0)),u=i(r(21)),c=i(r(12)),f=a("cross",{"Matrix, Matrix":function(e,t){return s(o(e.toArray(),t.toArray()))},"Matrix, Array":function(e,t){return s(o(e.toArray(),t))},"Array, Matrix":function(e,t){return s(o(e,t.toArray()))},"Array, Array":o});return f.toTex={2:"\\left(${args[0]}\\right)\\times\\left(${args[1]}\\right)"},f}},function(e,t,r){"use strict";var n=r(2),i=(r(5).clone,r(3).isInteger);t.name="diag",t.factory=function(e,t,a,o){function s(t,r,n,a){if(!i(r))throw new TypeError("Second parameter in function diag must be an integer");var o=r>0?r:0,s=r<0?-r:0;switch(n.length){case 1:return function(t,r,n,i,a,o){var s=[i+a,i+o],u=e.Matrix.storage(n||"dense").diagonal(s,t,r);return null!==n?u:u.valueOf()}(t,r,a,n[0],s,o);case 2:return function(t,r,n,i,a,o){if(e.isMatrix(t)){var s=t.diagonal(r);return null!==n?n!==s.storage()?u(s,n):s:s.valueOf()}for(var c=Math.min(i[0]-a,i[1]-o),f=[],l=0;l2||n(t).length>2)throw new RangeError("Vectors with dimensions greater then 2 are not supported expected (Size x = "+JSON.stringify(e.length)+", y = "+JSON.stringify(t.length)+")");var r=[],i=[];return e.map(function(e){return t.map(function(t){return e.map(function(e){return t.map(function(t){return i.push(u(e,t))})},r.push(i=[]))})},r=[])&&r}var s=i(r(0)),u=i(r(23));return a("kron",{"Matrix, Matrix":function(e,t){return s(o(e.toArray(),t.toArray()))},"Matrix, Array":function(e,t){return s(o(e.toArray(),t))},"Array, Matrix":function(e,t){return s(o(e,t.toArray()))},"Array, Array":o})}},function(e,t,r){"use strict";var n=r(3).isInteger,i=r(2).resize;t.name="ones",t.factory=function(e,t,a,o){function s(t,r){var a=function(t){var r=!1;return t.forEach(function(t,n,i){e.isBigNumber(t)&&(r=!0,i[n]=t.toNumber())}),r}(t)?new e.BigNumber(1):1;if(function(e){e.forEach(function(e){if("number"!=typeof e||!n(e)||e<0)throw new Error("Parameters in function ones must be positive integers")})}(t),r){var o=u(r);return t.length>0?o.resize(t,a):o}var s=[];return t.length>0?i(s,t,a):s}var u=a(r(0)),c=o("ones",{"":function(){return"Array"===t.matrix?s([]):s([],"default")},"...number | BigNumber | string":function(e){return"string"==typeof e[e.length-1]?s(e,e.pop()):"Array"===t.matrix?s(e):s(e,"default")},Array:s,Matrix:function(e){var t=e.storage();return s(e.valueOf(),t)},"Array | Matrix, string":function(e,t){return s(e.valueOf(),t)}});return c.toTex=void 0,c}},function(e,t,r){"use strict";r(10);var n=r(3).isInteger,i=r(2);t.name="reshape",t.factory=function(e,t,a,o){var s=a(r(0)),u=o("reshape",{"Matrix, Array":function(e,t){return e.reshape?e.reshape(t):s(i.reshape(e.valueOf(),t))},"Array, Array":function(e,t){return t.forEach(function(e){if(!n(e))throw new TypeError("Invalid size for dimension: "+e)}),i.reshape(e,t)}});return u.toTex=void 0,u}},function(e,t,r){"use strict";var n=r(10),i=r(43),a=r(3).isInteger,o=r(9).format,s=r(5).clone,u=r(2);t.name="resize",t.factory=function(e,t,c,f){var l=c(r(0)),p=function(r,c,f){if(2!=arguments.length&&3!=arguments.length)throw new i("resize",arguments.length,2,3);if(e.isMatrix(c)&&(c=c.valueOf()),e.isBigNumber(c[0])&&(c=c.map(function(t){return e.isBigNumber(t)?t.toNumber():t})),e.isMatrix(r))return r.resize(c,f,!0);if("string"==typeof r)return function(e,t,r){if(void 0!==r){if("string"!=typeof r||1!==r.length)throw new TypeError("Single character expected as defaultValue")}else r=" ";if(1!==t.length)throw new n(t.length,1);var i=t[0];if("number"!=typeof i||!a(i))throw new TypeError("Invalid size, must contain positive integers (size: "+o(t)+")");if(e.length>i)return e.substring(0,i);if(e.lengthg)return 1}for(var v=0,y=Math.max(h.length,m.length);vi)return 1}return 0}},function(e,t,r){"use strict";var n=r(5),i=r(2);t.name="squeeze",t.factory=function(e,t,a,o){var s=a(r(0)),u=o("squeeze",{Array:function(e){return i.squeeze(n.clone(e))},Matrix:function(e){var t=i.squeeze(e.toArray());return Array.isArray(t)?s(t):t},any:function(e){return n.clone(e)}});return u.toTex=void 0,u}},function(e,t,r){e.exports=[r(70),r(69),r(140),r(488),r(489),r(490),r(491),r(495),r(496)]},function(e,t,r){"use strict";t.name="kldivergence",t.factory=function(e,t,n,i){function a(e,t){var r=t.size().length,n=e.size().length;if(r>1)throw new Error("first object must be one dimensional");if(n>1)throw new Error("second object must be one dimensional");if(r!==n)throw new Error("Length of two vectors must be equal");if(0===u(e))throw new Error("Sum of elements in first object must be non zero");if(0===u(t))throw new Error("Sum of elements in second object must be non zero");var i=s(e,u(e)),a=s(t,u(t)),o=u(c(i,l(f(i,a))));return p(o)?o:Number.NaN}var o=n(r(0)),s=n(r(49)),u=n(r(144)),c=n(r(12)),f=n(r(135)),l=n(r(137)),p=n(r(75));return i("kldivergence",{"Array, Array":function(e,t){return a(o(e),o(t))},"Matrix, Array":function(e,t){return a(e,o(t))},"Array, Matrix":function(e,t){return a(o(e),t)},"Matrix, Matrix":function(e,t){return a(e,t)}})}},function(e,t,r){"use strict";var n=r(42);t.name="multinomial",t.factory=function(e,t,i,a){var o=i(r(18)),s=i(r(12)),u=i(r(49)),c=i(r(69)),f=i(r(50)),l=i(r(56));return a("multinomial",{"Array | Matrix":function(e){var t=0,r=1;return n(e,function(e){if(!f(e)||!l(e))throw new TypeError("Positive integer value expected in function multinomial");t=o(t,e),r=s(r,c(e))}),u(c(t),r)}})}},function(e,t,r){"use strict";function n(e){return e.isInteger()&&e.gte(0)}var i=r(3).isInteger;t.name="permutations",t.factory=function(e,t,a,o){var s=o("permutations",{"number | BigNumber":a(r(69)),"number, number":function(e,t){var r,n;if(!i(e)||e<0)throw new TypeError("Positive integer value expected in function permutations");if(!i(t)||t<0)throw new TypeError("Positive integer value expected in function permutations");if(t>e)throw new TypeError("second argument k must be less than or equal to first argument n");for(r=1,n=e-t+1;n<=e;n++)r*=n;return r},"BigNumber, BigNumber":function(t,r){var i,a;if(!n(t)||!n(r))throw new TypeError("Positive integer value expected in function permutations");if(r.gt(t))throw new TypeError("second argument k must be less than or equal to first argument n");for(i=new e.BigNumber(1),a=t.minus(r).plus(1);a.lte(t);a=a.plus(1))i=i.times(a);return i}});return s.toTex=void 0,s}},function(e,t,r){"use strict";t.name="pickRandom",t.factory=function(e,t,n,i){var a=n(r(90))("uniform").pickRandom;return a.toTex=void 0,a}},function(e,t,r){"use strict";var n=r(493),i=n();t.factory=function(e,t,r,a,o){function s(e){u=null===e?i:n(String(e))}var u;return s(t.randomSeed),o.on("config",function(e,t,r){void 0!==r.randomSeed&&s(e.randomSeed)}),function(){return u()}},t.math=!0},function(e,t,r){"use strict";(function(t){function r(e,t){var n,i=[],a=(typeof e)[0];if(t&&"o"==a)for(n in e)try{i.push(r(e[n],t-1))}catch(e){}return i.length?i:"s"==a?e:e+"\0"}function n(e,t){for(var r,n=e+"",a=0;a=f;)e/=2,t/=2,r>>>=1;return(e+r)/t}},e.exports.resetGlobal=function(){Math.random=p},n(Math.random(),o)}).call(t,r(494))},function(e,t){var r;r=function(){return this}();try{r=r||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(r=window)}e.exports=r},function(e,t,r){"use strict";t.name="random",t.factory=function(e,t,n,i){var a=n(r(90))("uniform").random;return a.toTex=void 0,a}},function(e,t,r){"use strict";t.name="randomInt",t.factory=function(e,t,n,i){var a=n(r(90))("uniform").randomInt;return a.toTex=void 0,a}},function(e,t,r){e.exports=[r(51),r(31),r(498),r(30),r(34),r(130),r(45),r(499),r(124)]},function(e,t,r){"use strict";t.name="deepEqual",t.factory=function(e,t,n,i){function a(e,t){if(Array.isArray(e)){if(Array.isArray(t)){var r=e.length;if(r!==t.length)return!1;for(var n=0;n0;r--)for(var n=0;ne[n+1].length&&(t=e[n],e[n]=e[n+1],e[n+1]=t);return e}(r)}})}},function(e,t,r){"use strict";var n=r(2).flatten;t.name="setSize",t.factory=function(e,t,i,a){var o=i(r(30)),s=i(r(31));return a("setSize",{"Array | Matrix":function(e){return Array.isArray(e)?n(e).length:n(e.toArray()).length},"Array | Matrix, boolean":function(e,t){if(!1===t||0===e.length)return Array.isArray(e)?n(e).length:n(e.toArray()).length;for(var r=n(Array.isArray(e)?e:e.toArray()).sort(s),i=1,a=1;a=c?i(e):t<=a?i(e)*function(e){var t,r=e*e,n=s[0][4]*r,i=r;for(t=0;t<3;t+=1)n=(n+s[0][t])*r,i=(i+u[0][t])*r;return e*(n+s[0][3])/(i+u[0][3])}(t):t<=4?i(e)*(1-function(e){var t,r=s[1][8]*e,n=e;for(t=0;t<7;t+=1)r=(r+s[1][t])*e,n=(n+u[1][t])*e;var i=(r+s[1][7])/(n+u[1][7]),a=parseInt(16*e)/16,o=(e-a)*(e+a);return Math.exp(-a*a)*Math.exp(-o)*i}(t)):i(e)*(1-function(e){var t,r=1/(e*e),n=s[2][5]*r,i=r;for(t=0;t<4;t+=1)n=(n+s[2][t])*r,i=(i+u[2][t])*r;var a=r*(n+s[2][4])/(i+u[2][4]);a=(o-a)/e;var c=(e-(r=parseInt(16*e)/16))*(e+r);return Math.exp(-r*r)*Math.exp(-c)*a}(t))},BigNumber:function(t){return new e.BigNumber(l(t.toNumber()))},"Array | Matrix":function(e){return n(e,l)}});return l.toTex={1:"erf\\left(${args[0]}\\right)"},l}},function(e,t,r){e.exports=[r(511),r(114),r(115),r(148),r(118),r(512),r(513),r(514),r(515),r(144),r(149)]},function(e,t,r){"use strict";var n=r(2).flatten;t.name="mad",t.factory=function(e,t,i,a){function o(e){if(0===(e=n(e.valueOf())).length)throw new Error("Cannot calculate median absolute deviation of an empty array");var t=c(e);return c(u(e,function(e){return s(f(e,t))}))}var s=i(r(29)),u=i(r(142)),c=i(r(148)),f=i(r(21)),l=a("mad",{"Array | Matrix":o,"...":function(e){return o(e)}});return l.toTex=void 0,l}},function(e,t,r){"use strict";var n=r(2).flatten;t.name="mode",t.factory=function(e,t,r,i){function a(e){if(0==(e=n(e.valueOf())).length)throw new Error("Cannot calculate mode of an empty array");var t={},r=[],i=0;for(var a in e)e[a]in t||(t[e[a]]=0),t[e[a]]++,t[e[a]]==i?r.push(e[a]):t[e[a]]>i&&(i=t[e[a]],r=[e[a]]);return r}return i("mode",{"Array | Matrix":a,"...":function(e){return a(e)}})}},function(e,t,r){"use strict";var n=r(42);t.name="prod",t.factory=function(e,t,i,a){function o(e){var t=void 0;if(n(e,function(e){t=void 0===t?e:s(t,e)}),void 0===t)throw new Error("Cannot calculate prod of an empty array");return t}var s=i(r(23)),u=a("prod",{"Array | Matrix":o,"Array | Matrix, number | BigNumber":function(e,t){throw new Error("prod(A, dim) is not yet supported")},"...":function(e){return o(e)}});return u.toTex=void 0,u}},function(e,t,r){"use strict";var n=r(3).isInteger,i=r(3).isNumber,a=r(2).flatten,o=r(48);t.name="quantileSeq",t.factory=function(e,t,s,u){function c(e,t,r){var n=a(e),o=n.length;if(0===o)throw new Error("Cannot calculate quantile of an empty sequence");if(i(t)){if(0==(y=(d=t*(o-1))%1)){var s=r?n[d]:p(n,d);return m(s),s}var u=Math.floor(d);if(r)g=n[u],v=n[u+1];else{v=p(n,u+1),g=n[u];for(var c=0;c0&&(g=n[c])}return m(g),m(v),f(l(g,1-y),l(v,y))}var d;if((d=t.times(o-1)).isInteger())return d=d.toNumber(),s=r?n[d]:p(n,d),m(s),s;u=d.floor();var g,v,y=d.minus(u),x=u.toNumber();if(r)g=n[x],v=n[x+1];else for(v=p(n,x+1),g=n[x],c=0;c0&&(g=n[c]);m(g),m(v);var w=new y.constructor(1);return f(l(g,w.minus(y)),l(v,y))}var f=s(r(18)),l=s(r(12)),p=s(r(89)),h=s(r(51)),m=u({"number | BigNumber | Unit":function(e){return e}});return function(t,r,a){var s,u,f;if(arguments.length<2||arguments.length>3)throw new SyntaxError("Function quantileSeq requires two or three parameters");if(o(t)){if("boolean"==typeof(a=a||!1)){if(u=t.valueOf(),i(r)){if(r<0)throw new Error("N/prob must be non-negative");if(r<=1)return c(u,r,a);if(r>1){if(!n(r))throw new Error("N must be a positive integer");var l=r+1;s=new Array(r);for(var p=0;p4294967295)throw new Error("N must be less than or equal to 2^32-1, as that is the maximum length of an Array");for(l=new e.BigNumber(h+1),s=new Array(h),p=0;p1)throw new Error("Probability must be between 0 and 1, inclusive")}else{if(!e.isBigNumber(m))throw new TypeError("Unexpected type of argument in function quantileSeq");if(f=new m.constructor(1),m.isNegative()||m.gt(f))throw new Error("Probability must be between 0 and 1, inclusive")}s[p]=c(u,m,a)}return s}throw new TypeError("Unexpected type of argument in function quantileSeq")}throw new TypeError("Unexpected type of argument in function quantileSeq")}throw new TypeError("Unexpected type of argument in function quantileSeq")}}},function(e,t,r){"use strict";t.name="std",t.factory=function(e,t,n,i){function a(e,t){if(0==e.length)throw new SyntaxError("Function std requires one or more parameters (0 provided)");return o(s.apply(null,arguments))}var o=n(r(57)),s=n(r(149)),u=i("std",{"Array | Matrix":a,"Array | Matrix, string":a,"...":function(e){return a(e)}});return u.toTex=void 0,u}},function(e,t,r){e.exports=[r(99),r(517)]},function(e,t,r){"use strict";function n(e,t,r){return e.replace(/\$([\w\.]+)/g,function(e,n){for(var o=n.split("."),s=t[o.shift()];o.length&&void 0!==s;){var u=o.shift();s=u?s[u]:s+"."}return void 0!==s?i(s)?s:a(s,r):e})}var i=r(9).isString,a=r(9).format;t.name="print",t.factory=function(e,t,r,i){var a=i("print",{"string, Object":n,"string, Object, number | Object":n});return a.toTex=void 0,a}},function(e,t,r){e.exports=[r(519),r(150),r(520),r(521),r(522),r(523),r(524),r(525),r(526),r(527),r(528),r(529),r(530),r(531),r(532),r(533),r(534),r(535),r(536),r(537),r(538),r(539),r(540),r(541),r(542)]},function(e,t,r){"use strict";var n=r(1);t.name="acos",t.factory=function(e,t,r,i){var a=i("acos",{number:function(r){return r>=-1&&r<=1||t.predictable?Math.acos(r):new e.Complex(r,0).acos()},Complex:function(e){return e.acos()},BigNumber:function(e){return e.acos()},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\cos^{-1}\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(1);t.name="acot",t.factory=function(e,t,r,i){var a=i("acot",{number:function(e){return Math.atan(1/e)},Complex:function(e){return e.acot()},BigNumber:function(t){return new e.BigNumber(1).div(t).atan()},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\cot^{-1}\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(1);t.name="acoth",t.factory=function(e,t,r,i){var a=i("acoth",{number:function(r){return r>=1||r<=-1||t.predictable?isFinite(r)?(Math.log((r+1)/r)+Math.log(r/(r-1)))/2:0:new e.Complex(r,0).acoth()},Complex:function(e){return e.acoth()},BigNumber:function(t){return new e.BigNumber(1).div(t).atanh()},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\coth^{-1}\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(1);t.name="acsc",t.factory=function(e,t,r,i){var a=i("acsc",{number:function(r){return r<=-1||r>=1||t.predictable?Math.asin(1/r):new e.Complex(r,0).acsc()},Complex:function(e){return e.acsc()},BigNumber:function(t){return new e.BigNumber(1).div(t).asin()},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\csc^{-1}\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(1);t.name="acsch",t.factory=function(e,t,r,i){var a=i("acsch",{number:function(e){return e=1/e,Math.log(e+Math.sqrt(e*e+1))},Complex:function(e){return e.acsch()},BigNumber:function(t){return new e.BigNumber(1).div(t).asinh()},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\mathrm{csch}^{-1}\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(1);t.name="asec",t.factory=function(e,t,r,i){var a=i("asec",{number:function(r){return r<=-1||r>=1||t.predictable?Math.acos(1/r):new e.Complex(r,0).asec()},Complex:function(e){return e.asec()},BigNumber:function(t){return new e.BigNumber(1).div(t).acos()},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\sec^{-1}\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(1);t.name="asech",t.factory=function(e,t,i,a){a.find(i(r(150)),["Complex"]);var o=a("asech",{number:function(r){if(r<=1&&r>=-1||t.predictable){r=1/r;var n=Math.sqrt(r*r-1);return r>0||t.predictable?Math.log(n+r):new e.Complex(Math.log(n-r),Math.PI)}return new e.Complex(r,0).asech()},Complex:function(e){return e.asech()},BigNumber:function(t){return new e.BigNumber(1).div(t).acosh()},"Array | Matrix":function(e){return n(e,o)}});return o.toTex={1:"\\mathrm{sech}^{-1}\\left(${args[0]}\\right)"},o}},function(e,t,r){"use strict";var n=r(1);t.name="asin",t.factory=function(e,t,r,i){var a=i("asin",{number:function(r){return r>=-1&&r<=1||t.predictable?Math.asin(r):new e.Complex(r,0).asin()},Complex:function(e){return e.asin()},BigNumber:function(e){return e.asin()},"Array | Matrix":function(e){return n(e,a,!0)}});return a.toTex={1:"\\sin^{-1}\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(1);t.name="asinh",t.factory=function(e,t,r,i){var a=i("asinh",{number:Math.asinh||function(e){return Math.log(Math.sqrt(e*e+1)+e)},Complex:function(e){return e.asinh()},BigNumber:function(e){return e.asinh()},"Array | Matrix":function(e){return n(e,a,!0)}});return a.toTex={1:"\\sinh^{-1}\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(1);t.name="atan",t.factory=function(e,t,r,i){var a=i("atan",{number:function(e){return Math.atan(e)},Complex:function(e){return e.atan()},BigNumber:function(e){return e.atan()},"Array | Matrix":function(e){return n(e,a,!0)}});return a.toTex={1:"\\tan^{-1}\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";t.name="atan2",t.factory=function(e,t,n,i){var a=n(r(0)),o=n(r(24)),s=n(r(15)),u=n(r(136)),c=n(r(17)),f=n(r(16)),l=n(r(8)),p=n(r(6)),h=i("atan2",{"number, number":Math.atan2,"BigNumber, BigNumber":function(t,r){return e.BigNumber.atan2(t,r)},"Matrix, Matrix":function(e,t){var r;switch(e.storage()){case"sparse":switch(t.storage()){case"sparse":r=u(e,t,h,!1);break;default:r=o(t,e,h,!0)}break;default:switch(t.storage()){case"sparse":r=s(e,t,h,!1);break;default:r=l(e,t,h)}}return r},"Array, Array":function(e,t){return h(a(e),a(t)).valueOf()},"Array, Matrix":function(e,t){return h(a(e),t)},"Matrix, Array":function(e,t){return h(e,a(t))},"Matrix, number | BigNumber":function(e,t){var r;switch(e.storage()){case"sparse":r=c(e,t,h,!1);break;default:r=p(e,t,h,!1)}return r},"number | BigNumber, Matrix":function(e,t){var r;switch(t.storage()){case"sparse":r=f(t,e,h,!0);break;default:r=p(t,e,h,!0)}return r},"Array, number | BigNumber":function(e,t){return p(a(e),t,h,!1).valueOf()},"number | BigNumber, Array":function(e,t){return p(a(t),e,h,!0).valueOf()}});return h.toTex={2:"\\mathrm{atan2}\\left(${args}\\right)"},h}},function(e,t,r){"use strict";var n=r(1),i=Math.atanh||function(e){return Math.log((1+e)/(1-e))/2};t.name="atanh",t.factory=function(e,t,r,a){var o=a("atanh",{number:function(r){return r<=1&&r>=-1||t.predictable?i(r):new e.Complex(r,0).atanh()},Complex:function(e){return e.atanh()},BigNumber:function(e){return e.atanh()},"Array | Matrix":function(e){return n(e,o,!0)}});return o.toTex={1:"\\tanh^{-1}\\left(${args[0]}\\right)"},o}},function(e,t,r){"use strict";var n=r(1);t.name="cos",t.factory=function(e,t,r,i){var a=i("cos",{number:Math.cos,Complex:function(e){return e.cos()},BigNumber:function(e){return e.cos()},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function cos is no angle");return a(t.value)},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\cos\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(1),i=Math.cosh||function(e){return(Math.exp(e)+Math.exp(-e))/2};t.name="cosh",t.factory=function(e,t,r,a){var o=a("cosh",{number:i,Complex:function(e){return e.cosh()},BigNumber:function(e){return e.cosh()},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function cosh is no angle");return o(t.value)},"Array | Matrix":function(e){return n(e,o)}});return o.toTex={1:"\\cosh\\left(${args[0]}\\right)"},o}},function(e,t,r){"use strict";var n=r(1);t.name="cot",t.factory=function(e,t,r,i){var a=i("cot",{number:function(e){return 1/Math.tan(e)},Complex:function(e){return e.cot()},BigNumber:function(t){return new e.BigNumber(1).div(t.tan())},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function cot is no angle");return a(t.value)},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\cot\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";function n(e){var t=Math.exp(2*e);return(t+1)/(t-1)}var i=r(1);t.name="coth",t.factory=function(e,t,r,a){var o=a("coth",{number:n,Complex:function(e){return e.coth()},BigNumber:function(t){return new e.BigNumber(1).div(t.tanh())},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function coth is no angle");return o(t.value)},"Array | Matrix":function(e){return i(e,o)}});return o.toTex={1:"\\coth\\left(${args[0]}\\right)"},o}},function(e,t,r){"use strict";var n=r(1);t.name="csc",t.factory=function(e,t,r,i){var a=i("csc",{number:function(e){return 1/Math.sin(e)},Complex:function(e){return e.csc()},BigNumber:function(t){return new e.BigNumber(1).div(t.sin())},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function csc is no angle");return a(t.value)},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\csc\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";function n(e){return 0==e?Number.POSITIVE_INFINITY:Math.abs(2/(Math.exp(e)-Math.exp(-e)))*a(e)}var i=r(1),a=r(3).sign;t.name="csch",t.factory=function(e,t,r,a){var o=a("csch",{number:n,Complex:function(e){return e.csch()},BigNumber:function(t){return new e.BigNumber(1).div(t.sinh())},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function csch is no angle");return o(t.value)},"Array | Matrix":function(e){return i(e,o)}});return o.toTex={1:"\\mathrm{csch}\\left(${args[0]}\\right)"},o}},function(e,t,r){"use strict";var n=r(1);t.name="sec",t.factory=function(e,t,r,i){var a=i("sec",{number:function(e){return 1/Math.cos(e)},Complex:function(e){return e.sec()},BigNumber:function(t){return new e.BigNumber(1).div(t.cos())},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sec is no angle");return a(t.value)},"Array | Matrix":function(e){return n(e,a)}});return a.toTex={1:"\\sec\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";function n(e){return 2/(Math.exp(e)+Math.exp(-e))}var i=r(1);t.name="sech",t.factory=function(e,t,r,a){var o=a("sech",{number:n,Complex:function(e){return e.sech()},BigNumber:function(t){return new e.BigNumber(1).div(t.cosh())},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sech is no angle");return o(t.value)},"Array | Matrix":function(e){return i(e,o)}});return o.toTex={1:"\\mathrm{sech}\\left(${args[0]}\\right)"},o}},function(e,t,r){"use strict";var n=r(1);t.name="sin",t.factory=function(e,t,r,i){var a=i("sin",{number:Math.sin,Complex:function(e){return e.sin()},BigNumber:function(e){return e.sin()},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sin is no angle");return a(t.value)},"Array | Matrix":function(e){return n(e,a,!0)}});return a.toTex={1:"\\sin\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(1),i=Math.sinh||function(e){return(Math.exp(e)-Math.exp(-e))/2};t.name="sinh",t.factory=function(e,t,r,a){var o=a("sinh",{number:i,Complex:function(e){return e.sinh()},BigNumber:function(e){return e.sinh()},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sinh is no angle");return o(t.value)},"Array | Matrix":function(e){return n(e,o,!0)}});return o.toTex={1:"\\sinh\\left(${args[0]}\\right)"},o}},function(e,t,r){"use strict";var n=r(1);t.name="tan",t.factory=function(e,t,r,i){var a=i("tan",{number:Math.tan,Complex:function(e){return e.tan()},BigNumber:function(e){return e.tan()},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function tan is no angle");return a(t.value)},"Array | Matrix":function(e){return n(e,a,!0)}});return a.toTex={1:"\\tan\\left(${args[0]}\\right)"},a}},function(e,t,r){"use strict";var n=r(1),i=Math.tanh||function(e){var t=Math.exp(2*e);return(t-1)/(t+1)};t.name="tanh",t.factory=function(e,t,r,a){var o=a("tanh",{number:i,Complex:function(e){return e.tanh()},BigNumber:function(e){return e.tanh()},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError("Unit in function tanh is no angle");return o(t.value)},"Array | Matrix":function(e){return n(e,o,!0)}});return o.toTex={1:"\\tanh\\left(${args[0]}\\right)"},o}},function(e,t,r){e.exports=[r(544)]},function(e,t,r){"use strict";t.name="to",t.factory=function(e,t,n,i){var a=r(4),o=n(r(0)),s=n(r(8)),u=n(r(6)),c=i("to",{"Unit, Unit | string":function(e,t){return e.to(t)},"Matrix, Matrix":function(e,t){return s(e,t,c)},"Array, Array":function(e,t){return c(o(e),o(t)).valueOf()},"Array, Matrix":function(e,t){return c(o(e),t)},"Matrix, Array":function(e,t){return c(e,o(t))},"Matrix, any":function(e,t){return u(e,t,c,!1)},"any, Matrix":function(e,t){return u(t,e,c,!0)},"Array, any":function(e,t){return u(o(e),t,c,!1).valueOf()},"any, Array":function(e,t){return u(o(t),e,c,!0).valueOf()}});return c.toTex={2:"\\left(${args[0]}"+a.operators.to+"${args[1]}\\right)"},c}},function(e,t,r){e.exports=[r(123),r(50),r(58),r(75),r(56),r(546),r(83),r(547),r(76)]},function(e,t,r){"use strict";var n=r(1);t.name="isPrime",t.factory=function(e,t,r,i){var a=i("isPrime",{number:function(e){if(e<2)return!1;if(2==e)return!0;if(e%2==0)return!1;for(var t=3;t*t<=e;t+=2)if(e%t==0)return!1;return!0},BigNumber:function(t){if(t.lt(2))return!1;if(t.equals(2))return!0;if(t.mod(2).isZero())return!1;for(var r=e.BigNumber(3);r.times(r).lte(t);r=r.plus(1))if(t.mod(r).isZero())return!1;return!0},"Array | Matrix":function(e){return n(e,a)}});return a}},function(e,t,r){"use strict";var n=r(1);r(3);t.name="isNaN",t.factory=function(e,t,r,i){return i("isNaN",{number:function(e){return Number.isNaN(e)},BigNumber:function(e){return e.isNaN()},Fraction:function(e){return!1},Complex:function(e){return e.isNaN()},Unit:function(e){return Number.isNaN(e.value)},"Array | Matrix":function(e){return n(e,Number.isNaN)}})}},function(e,t,r){e.exports=[r(549)]},function(e,t,r){"use strict";t.name="reviver",t.path="json",t.factory=function(e,t,r,n){return function(t,r){var n=e[r&&r.mathjs];return n&&"function"==typeof n.fromJSON?n.fromJSON(r):r}}},function(e,t,r){"use strict";var n=r(43),i=r(10),a=r(52);e.exports=[{name:"ArgumentsError",path:"error",factory:function(){return n}},{name:"DimensionError",path:"error",factory:function(){return i}},{name:"IndexError",path:"error",factory:function(){return a}}]}])}); +//# sourceMappingURL=math.min.map \ No newline at end of file diff --git a/dist/math.min.map b/dist/math.min.map new file mode 100644 index 000000000..ca318eb9c --- /dev/null +++ b/dist/math.min.map @@ -0,0 +1 @@ +{"version":3,"sources":["math.js"],"names":["root","factory","exports","module","define","amd","self","this","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","type","config","load","typed","_create","data","format","datatype","Matrix","storage","matrix","","string","string, string","Array","Array | Matrix, string","Array | Matrix, string, string","toTex","0","1","2","deepMap","array","callback","skipZeros","map","x","_validate","size","dim","len","length","DimensionError","dimNext","child","isArray","_resize","defaultValue","elem","oldLen","newLen","minLen","Math","min","UNINITIALIZED","_reshape","sizes","accumulator","shift","push","slice","_squeeze","dims","ii","next","_unsqueeze","number","IndexError","validate","validateIndex","index","isNumber","isInteger","TypeError","resize","Error","forEach","value","undefined","reshape","newArray","flatArray","flatten","product","arr","reduce","prev","curr","e","squeeze","unsqueeze","outer","unshift","flat","filter","filterRegExp","regexp","entry","test","join","separator","identify","a","b","count","identifier","generalize","zeros","isFinite","round","sign","options","Infinity","isNaN","notation","precision","toFixed","toExponential","toEngineering","toPrecision","exponential","replace","digits","arguments","splitNumber","match","String","toLowerCase","SyntaxError","exponent","parseFloat","dot","indexOf","coefficients","split","parseInt","rounded","roundDigits","newExp","significandsDiff","abs","concat","expDiff","decimalIdx","decimals","decimalVal","str","toString","splitValue","pp","splice","first","lower","upper","pow","pop","DBL_EPSILON","Number","EPSILON","nearlyEqual","y","epsilon","diff","max","symbols","Alpha","alpha","Beta","beta","Gamma","gamma","Delta","delta","Epsilon","varepsilon","Zeta","zeta","Eta","eta","Theta","theta","vartheta","Iota","iota","Kappa","kappa","varkappa","Lambda","lambda","Mu","mu","Nu","nu","Xi","xi","Omicron","omicron","Pi","pi","varpi","Rho","rho","varrho","Sigma","sigma","varsigma","Tau","tau","Upsilon","upsilon","Phi","phi","varphi","Chi","chi","Psi","psi","Omega","omega","true","false","inf","Inf","infinity","oo","lim","operators","transpose","factorial","dotPow","unaryPlus","unaryMinus","bitNot","not","multiply","divide","dotMultiply","dotDivide","mod","add","subtract","to","leftShift","rightArithShift","rightLogShift","equal","unequal","smaller","larger","smallerEq","largerEq","bitAnd","bitXor","bitOr","and","xor","or","defaultTemplate","units","deg","toSymbol","isUnit","substring","isBigNumber","clone","valueOf","Boolean","Date","RegExp","key","extend","prop","deepExtend","constructor","deepEqual","canDefineProperty","lazy","fn","_value","_uninitialized","set","traverse","path","obj","names","isFactory","DenseMatrix","_iterate","f","level","av","bv","inverse","cv","j","dt","adata","_data","asize","_size","adt","_datatype","cf","convert","find","cdata","compileFunctions","register","compileFunction","compile","node","defs","args","_compile","util","isString","bdata","bsize","bdt","csize","RangeError","formatArray","formatNumber","formatBigNumber","endsWith","text","search","start","end","looksLikeFraction","fraction","syntax","entries","stringify","escaped","charAt","escape","actual","expected","relation","message","stack","isDimensionError","bigNearlyEqual","equalScalar","boolean, boolean","number, number","BigNumber, BigNumber","eq","Fraction, Fraction","equals","Complex, Complex","Unit, Unit","equalBase","latex","addScalar","multiplyScalar","algorithm11","algorithm14","SparseMatrix","Array, Array","_validateMatrixDimensions","isMatrix","Matrix, Matrix","xsize","ysize","_multiplyVectorVector","_multiplyVectorMatrix","_multiplyMatrixVector","_multiplyMatrixMatrix","Matrix, Array","Array, Matrix","Matrix, any","any, Matrix","Array, any","any, Array","any, any","Array | Matrix | any, Array | Matrix | any, ...any","rest","result","signatures","size1","size2","af","mf","_multiplyVectorDenseMatrix","alength","bcolumns","sum","_multiplyDenseMatrixVector","_multiplySparseMatrixVector","_multiplyDenseMatrixDenseMatrix","_multiplyDenseMatrixSparseMatrix","_multiplySparseMatrixDenseMatrix","_multiplySparseMatrixSparseMatrix","arows","acolumns","row","bvalues","_values","bindex","_index","bptr","_ptr","zero","cvalues","cindex","cptr","values","ptr","jb","kb0","kb1","last","cij","mark","kb","ib","avalues","aindex","aptr","brows","w","vbi","ka0","ka1","ka","ia","p1","ic","vbij","p0","isSafeProperty","safeNativeProperties","Function","isSafeMethod","method","__proto__","safeNativeMethods","isPlainObject","toLocaleString","getSafeProperty","setSafeProperty","validateSafeMethod","keywords","math","Node","_validateScope","scope","symbol","eval","isNode","comment","expression","mathWithTransform","code","factoryCode","keys","_ifNode","_traverse","parent","transform","_transform","nodes","cloneDeep","other","customString","handler","_toString","toHTML","customTex","_toTex","getIdentifier","getContent","denseMatrix","sparseMatrix","rows","columns","z","k0","k1","k","r","v","algorithm01","algorithm04","algorithm10","algorithm13","divideScalar","div","Unit, number | Fraction | BigNumber","res","_normalize","number | Fraction | BigNumber, Unit","plus","fixPrefix","algorithm03","algorithm05","sub","minus","_getObjectProperty","dimension","_setObjectProperty","replacement","updated","_setSubstring","isIndex","range","strLen","chars","subset","Array, Index","isScalar","Matrix, Index","Object, Index","string, Index","substr","Array, Index, any","Array, Index, any, any","Matrix, Index, any","Matrix, Index, any, any","string, Index, string","string, Index, string, string","Object, Index, any","mul","times","number | Fraction | BigNumber | Complex, Unit","Unit, number | Fraction | BigNumber | Complex","types","emitter","_scatter","xa","xb","wa","wb","va","vb","Index","ranges","_dimensions","_isScalar","arg","isRange","_createImmutableMatrix","ImmutableDenseMatrix","create","apply","isObjectProperty","getObjectProperty","toArray","strings","JSON","toJSON","mathjs","dimensions","fromJSON","json","number | Complex | BigNumber | Unit | boolean | null","Complex","BigNumber","Fraction","Array | Matrix","Unit","algorithm07","algorithm12","naturalSort","compareMatricesAndArrays","isSparseMatrix","compareArrays","isDenseMatrix","compareNatural","getTypeOf","compare","compareBooleans","typeX","typeY","re","im","compareComplexNumbers","formatUnits","keysX","keysY","sort","compareObjects","memoize","hasher","cache","hash","maxArgumentCount","signature","callWithRightArgumentCount","argCount","gt","isValuelessUnit","SymbolNode","undef","isSymbolNode","jsName","isZero","lte","neg","_zeros","hasBigNumbers","toNumber","...number | BigNumber | string","ArgumentsError","parse","expr","extra_nodes","parseStart","prevPreview","nextPreview","getToken","token_type","TOKENTYPE","NULL","token","isWhitespace","nesting_level","DELIMITER","c2","c3","DELIMITERS","isDigitDot","NUMBER","isDigit","isDecimalMark","createSyntaxError","isAlpha","UNKNOWN","NAMED_DELIMITERS","SYMBOL","getTokenSkipNewline","openParams","closeParams","conditional_level","visible","blocks","parseAssignment","BlockNode","ConstantNode","parseBlock","createError","valid","parseLogicalXor","OperatorNode","parseLogicalOr","condition","trueExpr","falseExpr","ConditionalNode","parseConditional","AssignmentNode","isAccessorNode","isFunctionNode","FunctionAssignmentNode","parseLogicalAnd","parseBitwiseOr","parseBitwiseXor","parseBitwiseAnd","parseRelational","params","parseShift","==","!=","<",">","<=",">=","parseConversion","<<",">>",">>>","parseRange","in","parseAddSubtract","RangeNode","parseMultiplyDivide","+","-","parseUnary","*",".*","/","./","%","isConstantNode","isOperatorNode","op","~","CustomNode","parseAccessors","parseStringToken","cols","parseRow","items","ArrayNode","properties","ObjectNode","ParenthesisNode","parseEnd","parseParentheses","parseNumber","parseObject","parseMatrix","parseString","parseSymbol","parseCustomNodes","!","'","parseLeftHandOperators","parsePow","FunctionNode","AccessorNode","IndexNode","col","error",",","(",")","[","]","{","}","\"",";","^",".^","&","|","^|","=",":","?","cPrev","cNext","isValidLatinOrGreek","isValidMathSymbol","high","low","nestingLevel","err","isIndexError","deepForEach","isArgumentsError","preprocess","_getSubmatrix","_setSubmatrix","submatrix","dataIndex","subIndex","_fit","newSize","changed","_get","sSize","iSize","_set","index_i","copy","me","recurse","diagonal","kSuper","kSub","ms","swapRows","_swapRows","vi","_storage","dense","lt","_pow","predictable","yFrac","yNum","ex","NaN","_powArray","eye","px","_powMatrix","Array, number","Array, BigNumber","Matrix, number","Matrix, BigNumber","Unit, number","getType","valueType","SUPPORTED_TYPES","boolean","null","validateNumericValue","inv","Array | Matrix, Array | Matrix","any, Array | Matrix","isInt","cmp","getPrecedence","_node","parenthesis","latexLeftParens","latexRightParens","latexParens","OperatorNode:or","associativity","associativeWith","OperatorNode:xor","OperatorNode:and","OperatorNode:bitOr","OperatorNode:bitXor","OperatorNode:bitAnd","OperatorNode:equal","OperatorNode:unequal","OperatorNode:smaller","OperatorNode:larger","OperatorNode:smallerEq","OperatorNode:largerEq","OperatorNode:leftShift","OperatorNode:rightArithShift","OperatorNode:rightLogShift","OperatorNode:to","OperatorNode:add","OperatorNode:subtract","OperatorNode:multiply","OperatorNode:divide","OperatorNode:dotMultiply","OperatorNode:dotDivide","OperatorNode:mod","OperatorNode:unaryPlus","OperatorNode:unaryMinus","OperatorNode:bitNot","OperatorNode:not","OperatorNode:pow","OperatorNode:dotPow","OperatorNode:factorial","OperatorNode:transpose","getAssociativity","isAssociativeWith","nodeA","nodeB","identifierA","identifierB","implicit","every","calculateNecessaryParentheses","precedence","operandPrecedence","operandIdentifier","rootIdentifier","lhsParens","lhsPrecedence","assocWithLhs","rhsParens","rhsPrecedence","assocWithRhs","lhsIdentifier","rhsIdentifier","argPrecedence","assocWithArg","argAssociativity","isParenthesisNode","jsArgs","parens","assoc","operand","lhs","rhs","stringifiedArgs","lhsTex","rhsTex","texifiedArgs","getUniqueArgumentName","bind","deprecated","expandTemplate","template","regex","inputPos","exec","ReferenceError","argsName","jsFn","jsScope","compileScope","rawArgs","isIndexNode","jsObject","jsProp","nodeToString","isFunctionAssignmentNode","nodeToTex","latexConverter","customToTex","isPositive","isNeg","_sqrtNumber","sqrt","isNegative","wai","wbi","vc","_eyeVector","_eye","Big","one","minimum","number | BigNumber","number | BigNumber, string","number | BigNumber, number | BigNumber","number | BigNumber, number | BigNumber, string","Array, string","Matrix, string","content","_concat","concatDim","...Array | Matrix | number | BigNumber","prevDim","asMatrix","matrices","...string","_reduce","mat","ret","val","tran","I","J","tmp","_switch","arraySize","isCollection","_denseTranspose","_sparseTranspose","any","transposedRow","transposed","q","scatter","u","isPositiveInteger","gte","combinations","dividedBy","num","Unit, string | Unit","unit","valuelessUnit","isNumeric","number | BigNumber | Fraction | boolean","Complex | Unit | string","_typeof","t","isComplex","isFraction","isChain","isHelp","dotNotation","Range","childArgs","step","isRangeNode","needsEnd","needsSize","some","startPrecedence","stepPrecedence","endPrecedence","isArrayNode","item","childNode","subScope","removeParens","_buildRules","rules","ruleSet","newRule","rule","ruleType","lr","context","evaluate","isAssociative","makeNode","createMakeNodeFunction","expandsym","_lastsym","expanded","unflattenr","mergeMatch","match1","match2","placeholders","_exactMatch","combineChildMatches","list1","list2","merged","i1","i2","_ruleMatch","isSplit","splits","right","rightArgs","isCommutative","getSplits","splitMatches","matchSet","childMatches","childMatch","sets","uniqueSets","unique","mergeChildMatches","SUPPORTED_CONSTANTS","simplifyConstant","simplifyCore","resolve","unflattenl","simplify","string, Object","string, Array","string, Array, Object","Node, Object","Node, Array","Node, Array, Object","visited","applyRule","LN2","LN10","LOG2E","LOG10E","SQRT1_2","SQRT2","commutative","repl","matches","msize","decCoefficientToBinaryString","xe","strL","arrL","reverse","func","xBits","yBits","xSign","ySign","minBits","maxBits","minSign","shortLen","longLen","expFuncVal","outVal","twoPower","two","prevPrec","desc","asc","_partitionSelect","quickSelect","from","pivot","floor","random","Array | Matrix, number","Array | Matrix, number, string","Array | Matrix, number, function","distribution","distributions","randFunctions","arg1","arg2","arg3","_randomDataForMatrix","_random","randomInt","number | Array","_randomInt","number | Array, number","Array, number, number","pickRandom","possibles","_pickRandom","Array, number | Array","weights","Array, number | Array, Array | number","single","totalWeights","pick","rng","randKey","randFunc","uniform","normal","u1","u2","picked","log","cos","PI","Emitter","mixin","on","off","once","emit","toPolar","strRe","strIm","fromPolar","hasBase","numerator","denominator","nums","ceil","ResultSet","isResultSet","exp","acos","fix","NO_INT","_round","Complex, number","Complex, BigNumber","_n","number, BigNumber","toDecimalPlaces","Fraction, number","Matrix, number | BigNumber","number | Complex | BigNumber, Matrix","Array, number | BigNumber","number | Complex | BigNumber, Array","any, Object | function | number","construction","docs","bignumber","complex","createUnit","sparse","splitUnit","E","version","speedOfLight","description","examples","gravitationConstant","planckConstant","reducedPlanckConstant","magneticConstant","electricConstant","vacuumImpedance","coulomb","elementaryCharge","bohrMagneton","conductanceQuantum","inverseConductanceQuantum","magneticFluxQuantum","nuclearMagneton","klitzing","bohrRadius","classicalElectronRadius","electronMass","fermiCoupling","fineStructure","hartreeEnergy","protonMass","deuteronMass","neutronMass","quantumOfCirculation","rydberg","thomsonCrossSection","weakMixingAngle","efimovFactor","atomicMass","avogadro","boltzmann","faraday","firstRadiation","loschmidt","gasConstant","molarPlanckConstant","molarVolume","sackurTetrode","secondRadiation","stefanBoltzmann","wienDisplacement","molarMass","molarMassC12","gravity","planckLength","planckMass","planckTime","planckCharge","planckTemperature","derivative","lsolve","lup","lusolve","rationalize","slu","usolve","qr","cbrt","cube","gcd","hypot","lcm","log10","norm","nthRoot","square","xgcd","bellNumbers","catalan","composition","stirlingS2","conj","help","distance","intersect","cross","det","diag","kron","ones","partitionSelect","trace","kldivergence","multinomial","permutations","setCartesian","setDifference","setDistinct","setIntersect","setIsSubset","setMultiplicity","setPowerset","setSize","setSymDifference","setUnion","erf","mad","mean","median","mode","prod","quantileSeq","std","acosh","acot","acoth","acsc","acsch","asec","asech","asin","asinh","atan","atanh","atan2","cosh","cot","coth","csc","csch","sec","sech","sin","sinh","tan","tanh","isPrime","category","seealso","needParenthesis","isObjectNode","access","errorTransform","exprPrecedence","assign","isAssignmentNode","parentObject","jsParentProperty","block","isBlockNode","param","js","isConditionalNode","testCondition","conditionPrecedence","truePrecedence","falsePrecedence","jsParams","jsExpr","stringifiedKey","parsedKey","string | Array | Matrix","string | Array | Matrix, Object","Parser","customs","_parse","isParser","getAll","remove","clear","containsCollections","_largest","_max","Array | Matrix, number | BigNumber","...","_mean","_inv","temp","A","B","Ac","Bc","Ar","Br","compute_mu","fa","_det","_smallest","_min","_out","_strRange","includeEnd","_bigRangeInc","_bigRangeEx","_rangeInc","_rangeEx","ZERO","ONE","string, boolean","number, number, number","number, number, boolean","number, number, number, boolean","BigNumber, BigNumber, BigNumber","BigNumber, BigNumber, boolean","BigNumber, BigNumber, BigNumber, boolean","_eval","fnname","_toNumber","ignore","_exactFraction","unaryMinusNode","foldOp","_toNode","ignoreandcontinue","foldFraction","allChildren","consts","vars","vn","negated","associative","children","findChildren","curnode","console","a0","a1","node0","a00","a00_a1","node1","_unequal","conjugate","Spa","_denseLUP","_sparseLUP","L","U","ldata","lsize","udata","usize","pabsv","vjj","absv","vij","pv","lvalues","lindex","lptr","uvalues","uindex","uptr","pv_co","pv_oc","swapIndeces","kx","ky","spa","vkj","_forEachRow","vik","accumulate","swap","cs_sqr","cs_lu","SparseMatrix, number, number","order","threshold","pinv","head","post","top","cs_flip","solveValidation","SparseMatrix, Array | Matrix","_sparseForwardSubstitution","DenseMatrix, Array | Matrix","_denseForwardSubstitution","Array, Array | Matrix","xj","bj","jvalues","jindex","_sparseBackwardSubstitution","_denseBackwardSubstitution","algorithm02","ln","base","_denseTrace","_sparseTrace","kFactorial","negativeOne","kChooseI","iPower","g","twoN","threeN","fourN","fiveN","real","den","twoPiSqrt","bigFactorial","_map","Array, function","Matrix, function","_comparator","compareAsc","compareDesc","_arrayIsVector","_matrixIsVector","_sum","a2","inb2","b1","b2","_median","mid","left","middle2","middle","number | BigNumber | Complex | Unit","number | BigNumber | Complex | Unit, number | BigNumber | Complex | Unit","DEFAULT_NORMALIZATION","_var","normalization","variance","_acosh","core","typedFactory","importFactory","configFactory","instance","factories","_config","instances","randomSeed","typedFunction","createTyped","isBoolean","isFunction","isDate","isRegExp","isObject","isNull","isUndefined","conversions","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","getTypeTest","hint","getName","fns","actualType","_expected","_fn","anyType","contains","Refs","categories","Param","varArgs","_types","trim","_varArgs","Signature","_params","childs","fallThrough","parseTree","anys","nodeSignature","filtered","existing","overlapping","matchingAnys","paramsStartWith","_typed","refs","_signatures","rawSignatures","expand","signature_i","parseSignatures","filterAnyTypeSignatures","safeName","getArgs","maxParams","toCode","body","normalized","hasConversions","mapSignatures","cat","ac","bc","ai","bi","toConversion","conversion","newParam","aLast","bLast","prefix","ref","getTests","tests","allTypes","exactTypes","conversion_i","_innerCode","exceptions","_exceptions","...Function","addType","addConversion","ctx","listener","_","evtArr","evts","liveEvents","math_import","_importFactory","isSupportedType","wrap","wrapper","_wrap","isTypedFunction","override","_importTransform","silent","_import","allowedInExpressions","existingTransform","namespace","resolver","factoryAllowedInExpressions","unsafe","chain","validateOption","findIndex","warn","MATRIX","changes","Decimal","globalScope","digitsToString","ws","indexOfLastWord","LOG_BASE","getZeroString","checkInt32","invalidArgument","checkRoundingDigits","rm","repeating","di","rd","mathpow","convertBase","baseIn","baseOut","NUMERALS","finalise","sd","isTruncated","roundUp","xd","xdi","Ctor","out","BASE","external","maxE","minE","finiteToString","isExp","nonFiniteToString","getBase10Exponent","getLn10","pr","LN10_PRECISION","precisionLimitExceeded","getPi","PI_PRECISION","getPrecision","zs","intPow","truncate","mathfloor","isOdd","maxOrMin","ltgt","naturalExponential","guard","wpr","rep","rounding","naturalLogarithm","c0","x1","x2","parseDecimal","charCodeAt","taylorSeries","isHyperbolic","toLessThanHalfPi","halfPi","quadrant","divToInt","toStringBinary","MAX_DIGITS","inexact","decimalError","useDefaults","defaults","ps","EXP_LIMIT","DEFAULTS","crypto","getRandomValues","randomBytes","cryptoUnavailable","isDecimal","divisor","isFloat","isHex","isBinary","isOctal","parseOther","P","ROUND_UP","ROUND_DOWN","ROUND_CEIL","ROUND_FLOOR","ROUND_HALF_UP","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_CEIL","ROUND_HALF_FLOOR","EUCLID","isDecimalInstance","log2","trunc","Uint32Array","modulo","toExpNeg","toExpPos","absoluteValue","comparedTo","xdL","ydL","yd","xs","ys","cosine","cos2x","cubeRoot","t3","t3plusx","decimalPlaces","dp","dividedToIntegerBy","greaterThan","greaterThanOrEqualTo","hyperbolicCosine","cosh2_x","d8","hyperbolicSine","sinh2_x","d5","d16","d20","hyperbolicTangent","inverseCosine","inverseHyperbolicCosine","inverseHyperbolicSine","inverseHyperbolicTangent","xsd","inverseSine","inverseTangent","isPos","lessThan","lessThanOrEqualTo","logarithm","isBase10","xLTy","carry","sine","sin2_x","squareRoot","tangent","rL","toBinary","toDP","toFraction","maxD","d0","d1","d2","n0","n1","toHexadecimal","toHex","toNearest","toOctal","toPower","yn","toSignificantDigits","toSD","truncated","multiplyInteger","aL","bL","logBase","more","prodL","qd","rem","remL","rem0","xL","yd0","yL","yz","bool","lcase","Chain","createProxy","chainify","done","arg0","createLazyProxy","logHypot","_a","_b","parser_exit","tokens","loh","t1","t2","noIM","oneMinus","onePlus","places","toVector","errorConstructor","IntermediateInheritor","throwInvalidParam","InvalidParameter","DivisionByZero","p2","M","C","D","divisible","excludeWhole","whole","toLatex","toContinued","N","cycLen","cycleLen","cycOff","rem1","rem2","modpow","cycleStart","_createFromMatrix","_createFromArray","source","density","_getsubset","_setsubset","idx","kk","mvalues","mindex","mptr","x0","y0","_getValueIndex","_remove","_insert","bottom","ins","colIndex","rowIndex","r1","c1","h","minRow","maxRow","minColumn","maxColumn","invoke","_toArray","vx","vy","_heap","FibonacciHeap","isSpa","insert","heap","extractMinimum","nodei","nodej","_minimum","oneOverLogPhi","isFibonacciHeap","degree","isEmpty","numberOfChildren","tempRight","_findMinimumNode","_decreaseKey","_cut","_cascadingCut","_linkNodes","numRoots","isImmutableDenseMatrix","...number | string | BigNumber | Range | Array | Matrix","constants","UNIT_NONE","PREFIXES","NONE","power","BASE_DIMENSIONS","isUnitListSimplified","skipWhitespace","revert","oldIndex","tentativeNumber","tentativeIndex","parseUnit","unitName","parseCharacter","toFind","_findUnit","UNITS","prefixes","prefixLen","prefixName","calculateAngleValues","rad","grad","cycle","arcsec","arcmin","valueStr","powerMultiplierCurrent","expectingUnit","powerMultiplierStack","powerMultiplierStackProduct","oldC","uStr","baseDim","UNIT_SYSTEMS","auto","allowNoUnits","_isDerived","unitValue","unitOffset","unitPower","unitPrefixValue","_getNumberConverter","offset","_denormalize","prefixValue","BASE_UNITS","inverted","valThis","valOther","getNumericIfUnitless","toNumeric","simplifyUnitListLazy","matchingBase","proposedUnitList","currentUnitSystem","matchingUnit","missingBaseDim","toSI","strNum","strDen","nNum","nDen","isImaginary","_bestPrefix","unitStr","absValue","absUnitValue","bestPrefix","bestDiff","scientific","parts","xNumeric","xRounded","testSum","SHORT","da","G","T","Z","Y","LONG","deca","hecto","kilo","mega","giga","tera","peta","exa","zetta","yotta","deci","centi","milli","micro","nano","pico","femto","atto","zepto","yocto","SQUARED","CUBIC","BINARY_SHORT","Ki","Mi","Gi","Ti","Ei","Zi","Yi","BINARY_LONG","kibi","mebi","gibi","tebi","pebi","exi","zebi","yobi","BTU","MM","SHORTLONG","MASS","LENGTH","TIME","CURRENT","TEMPERATURE","LUMINOUS_INTENSITY","AMOUNT_OF_SUBSTANCE","FORCE","SURFACE","VOLUME","ENERGY","POWER","PRESSURE","ELECTRIC_CHARGE","ELECTRIC_CAPACITANCE","ELECTRIC_POTENTIAL","ELECTRIC_RESISTANCE","ELECTRIC_INDUCTANCE","ELECTRIC_CONDUCTANCE","MAGNETIC_FLUX","MAGNETIC_FLUX_DENSITY","FREQUENCY","ANGLE","BIT","meter","inch","foot","yard","mile","link","rod","angstrom","ft","mi","li","ch","mil","m2","sqin","sqft","sqyd","sqmi","sqrd","sqch","sqmil","acre","hectare","m3","litre","cuin","cuft","cuyd","teaspoon","tablespoon","drop","gtt","minim","fluiddram","fluidounce","gill","cc","cup","pint","quart","gallon","beerbarrel","oilbarrel","hogshead","fldr","floz","gi","cp","pt","qt","gal","bbl","obl","gram","ton","tonne","grain","dram","ounce","poundmass","hundredweight","stick","stone","gr","dr","oz","lbm","cwt","second","minute","hour","day","week","month","year","decade","century","millennium","hertz","reciprocal","Hz","ampere","K","degC","degF","degR","kelvin","celsius","fahrenheit","rankine","mol","mole","cd","candela","newton","dyn","dyne","lbf","poundforce","kip","joule","erg","Wh","eV","electronvolt","W","watt","hp","VAR","VA","Pa","atm","bar","torr","mmHg","mmH2O","cmH2O","farad","F","volt","V","ohm","henry","H","siemens","S","weber","Wb","tesla","bits","bytes","ALIASES","meters","inches","feet","yards","miles","links","rods","chains","angstroms","litres","liter","liters","teaspoons","tablespoons","minims","fluiddrams","fluidounces","gills","cups","pints","quarts","gallons","beerbarrels","oilbarrels","hogsheads","gtts","grams","tons","tonnes","grains","drams","ounces","poundmasses","hundredweights","sticks","lb","lbs","kips","acres","hectares","sqfeet","sqyard","sqmile","sqmiles","mmhg","mmh2o","cmh2o","seconds","secs","minutes","mins","hours","hr","hrs","days","weeks","months","years","radians","degrees","gradian","gradians","cycles","arcsecond","arcseconds","arcminute","arcminutes","BTUs","watts","joules","amperes","coulombs","volts","ohms","farads","webers","teslas","electronvolts","moles","si","bit","cgs","us","setUnitSystem","getUnitSystem","typeConverters","alias","deleteUnit","aliases","lastUnit","createUnitSingle","isValidAlpha","assertUnitNameIsValid","definition","defUnit","toUpperCase","newUnit","anyMatch","baseName","newBaseUnit","aliasName","number | BigNumber | Fraction | Complex, string","Object, Object","string, Unit | string | Object, Object","def","string, Unit | string | Object","Unit, Array","setLazyConstant","fixedUnit","setConstant","bigConstants","Array | Matrix, Object","doc","Help","...any","lastIndex","_filter","filterTransform","compileInlineExpression","Array, RegExp","Matrix, RegExp","forEachTransform","_forEach","Array | Matrix, function","isSet","orig","argsCount","mapTransform","parser","Node, SymbolNode, Object","variable","constNodes","constTag","_derivative","Node, SymbolNode","string, SymbolNode","string, SymbolNode, Object","string, string, Object","Node, string","Node, string, Object","_simplify","deriv","_derivTex","Node, SymbolNode, ConstantNode","string, string, number","Object, ConstantNode, string","Object, SymbolNode, string","varName","Object, ParenthesisNode, string","Object, FunctionAssignmentNode, string","Object, FunctionNode | OperatorNode, string","isConst","ConstantNode, Object","SymbolNode, Object","ParenthesisNode, Object","FunctionAssignmentNode, Object","FunctionNode, Object","funcArgsCheck","funcDerivative","negative","chainDerivative","OperatorNode, Object","newArgs","expValue","powMinusOne","expandPower","indParent","tp","internal","does","nEsqTopo","nDirTopo","polyToCanonical","recurPol","noPai","noFil","fire","oper","cte","varname","maxExpo","valor","n2","n3","no","detailed","string, Object, boolean","Node, boolean","Node, Object, boolean","polyRet","extended","recPoly","variables","retFunc","polynomial","nVars","setRules","oldRules","rulesFirst","rulesSucDiv","firstRules","distrDivRules","sucDivRules","firstRulesAgain","finalRules","rulesRationalize","sBefore","redoInic","eDistrDiv","retRationalize","_denseQR","_sparseQR","Q","R","Qdata","Rdata","sgn","conjSgn","alphaSquared","cs_amd","cs_permute","cs_etree","cs_post","cs_counts","_vcount","leftmost","tail","nque","lnz","pa","unz","cs_fkeep","cs_tdfs","_createTargetMatrix","at","tindex","tptr","_initializeQuotientGraph","hhead","nv","elen","_wclear","_initializeDegreeLists","nel","lemax","_diag","cm","k2","pj","nvi","pk","eln","pn","cnz","mindeg","elenk","nvk","dk","pk1","pk2","wnvi","dext","p3","p4","nvj","jlast","ok","nz","t0","ata","inext","cs_leaf","maxfirst","prevleaf","colcount","jleaf","ancestor","sparent","jprev","cs_spsolve","tol","ipiv","xabs","cs_reach","lo","gvalues","gindex","gptr","cs_dfs","cs_marked","cs_mark","gsize","cs_unflip","jnew","cs_ipvec","_lusolve","SparseMatrix, Array | Matrix, number, number","Object, Array | Matrix","_toMatrix","_cbrtNumber","negate","_cbrtComplex","allRoots","arg_3","principal","all","Complex, boolean","third","algorithm09","_gcd","number | BigNumber, Matrix","number | BigNumber, Array","Array | Matrix | number | BigNumber, Array | Matrix | number | BigNumber, ...Array | Matrix | number | BigNumber","... number | BigNumber","largest","_lcm","algorithm06","update","_log10","_norm","sizeX","POSITIVE_INFINITY","pinf","NEGATIVE_INFINITY","ninf","maxc","cj","maxr","ri","boolean | null","number | Complex | BigNumber | boolean | null, number | BigNumber | string","Array, number | BigNumber | string","Matrix, number | BigNumber | string","_nthRoot","_nthComplexRoot","roots","_bigNthRoot","boolean | string | null","lastx","lasty","bigBitAnd","bitwise","bigBitNot","bigBitOr","negOne","bigBitXor","bigLeftShift","algorithm08","bigRightArithShift","_2d","_3d","Array, Array, Array","plane","_4d","y1","z1","y2","z2","_intersectLinePlane","Array, Array, Array, Array","p1a","p1b","p2a","p2b","o1","o2","_intersect2d","x3","y3","z3","x4","y4","z4","d1343","d4321","d4343","ta","tb","pax","pay","paz","_intersect3d","Matrix, Matrix, Matrix","Matrix, Matrix, Matrix, Matrix","_objectToArray","_parametricLine","_distancePointLine2D","_distancePointLine3D","z0","_distance2d","yDiff","xDiff","radicant","_distance3d","zDiff","xCoeff","yCoeff","constant","Object, Object, Object","lineTwoPtY","lineTwoPtX","lineOnePtY","lineOnePtX","pointX","pointY","xCoeffLine","yCoeffLine","pointZ","pointOneX","pointOneY","pointTwoX","pointTwoY","pointOneZ","pointTwoZ","_pairwise","_distancePairwise","_cross","highestDimension","xSize","ySize","_createDiagonalMatrix","dm","vector","_getDiagonal","Array, number, string","Array, BigNumber, string","Matrix, number, string","Matrix, BigNumber, string","_dot","_filterCallback","_flatten","_kron","_ones","defaultChar","_resizeString","oFxNcL","oFyNcL","sre","dre","hre","ore","insensitive","xN","yN","xD","yD","cLoc","numS","_kldiv","plength","qlength","qnorm","pnorm","denom","seedrandom","singletonRandom","setSeed","seed","global","depth","typ","mixkey","smear","stringseed","mask","tostring","fromCharCode","width","pool","GLOBAL","window","startdenom","significance","overflow","oldRandom","arc4","entropy","Uint8Array","navigator","plugins","screen","autoseed","keylen","resetGlobal","_deepEqual","number | BigNumber | Fraction | Complex, Array | Matrix","bitarray","_subset","_sort","Array | Matrix, boolean","THRESH","SQRPI","MAX_NUM","ysq","xnum","xden","erf1","del","erfc2","erfc3","_mad","med","_mode","_prod","_quantileSeq","prob","sorted","fracPart","integerPart","integerPartNumber","number | BigNumber | Unit","probOrN","probArr","dataArr","nPlusOne","intN","currProb","_std","_print","original","print","string, Object, number | Object","_atanh","_cosh","_coth","_csch","_sech","_sinh","_tanh","Unit, Unit | string"],"mappings":"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oBACA,uBACA,uBACA,gCACA,iCAEFiI,SACE,OACA,SACA,MACA,OACA,MACA,MACA,SAOE,SAAUjxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRiwC,SAAY,aACZh7B,QACE,qBACA,UACA,gBAEF+yB,YAAe,mDACfC,UACE,mBACA,qBACA,qBACA,wBACA,wBACA,8BAEFiI,SACE,MACA,SACA,MACA,OACA,MACA,MACA,SAOE,SAAUjxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,SACRiwC,SAAY,aACZh7B,QACE,uBACA,aAEF+yB,YAAe,mLACfC,UACE,kBACA,yBAEFiI,SACE,MACA,OACA,MACA,OACA,MACA,MACA,MACA,iBAOE,SAAUjxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRiwC,SAAY,aACZh7B,QACE,oBACA,SACA,eAEF+yB,YAAe,iDACfC,UACE,kBACA,oBACA,oBACA,uBACA,uBACA,gCACA,iCAEFiI,SACE,MACA,OACA,SACA,OACA,MACA,MACA,SAOE,SAAUjxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRiwC,SAAY,aACZh7B,QACE,qBACA,UACA,4BAEF+yB,YAAe,2HACfC,UACE,sBACA,8BACA,uBAEFiI,SACE,MACA,OACA,MACA,SACA,OACA,MACA,MACA,SAOE,SAAUjxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRiwC,SAAY,aACZh7B,QACE,qBACA,WAEF+yB,YAAe,qCACfC,UACE,gBACA,kBACA,sBAEFiI,SACE,MACA,OACA,MACA,SACA,MACA,MACA,MACA,SAOE,SAAUjxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,cACRiwC,SAAY,aACZh7B,QACE,iCACA,gDACA,+BAEF+yB,YAAe,sWACfC,UACE,kCACA,yCACA,gCACA,yCAEFiI,SACE,OACA,SACA,MACA,MACA,OACA,MACA,MACA,SAME,SAAUjxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRiwC,SAAY,aACZh7B,QACE,oBACA,SACA,yBAEF+yB,YAAe,4KACfC,UACE,eACA,oBACA,mCACA,8BACA,2BAEFiI,SACE,MACA,OACA,MACA,SACA,MACA,OACA,MACA,SAOE,SAAUjxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRiwC,SAAY,aACZh7B,QACE,oBACA,UAEF+yB,YAAe,iCACfC,UACE,kBACA,oBACA,qBAEFiI,SACE,MACA,OACA,SACA,MACA,OACA,MACA,MACA,SAOE,SAAUjxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,MACRiwC,SAAY,aACZh7B,QACE,oBACA,SACA,yBAEF+yB,YAAe,gIACfC,UACE,eACA,oBACA,mCACA,8BACA,2BAEFiI,SACE,MACA,OACA,MACA,SACA,MACA,OACA,MACA,SAOE,SAAUjxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRiwC,SAAY,eACZh7B,QACE,WAEF+yB,YAAe,oDACfC,UACE,YACA,kBAEFiI,SACE,MACA,OACA,UAOE,SAAUjxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,QACRiwC,SAAY,eACZh7B,QACE,YAEF+yB,YAAe,6FACfC,UACE,cAEFiI,SACE,OACA,QACA,WAME,SAAUjxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRiwC,SAAY,eACZh7B,QACE,WAEF+yB,YAAe,8CACfC,UACE,YACA,iBACA,WAEFiI,SACE,MACA,UAOE,SAAUjxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,QACRiwC,SAAY,eACZh7B,QACE,YAEF+yB,YAAe,6GACfC,UACE,WACA,cAEFiI,SACE,QACA,WAME,SAAUjxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRiwC,SAAY,eACZh7B,QACE,WAEF+yB,YAAe,8CACfC,UACE,UACA,iBACA,aAEFiI,SACE,MACA,OACA,UAOE,SAAUjxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,QACRiwC,SAAY,eACZh7B,QACE,YAEF+yB,YAAe,sGACfC,UACE,cAEFiI,SACE,QACA,WAOE,SAAUjxC,EAAQD,GAExBC,EAAOD,SACLgB,KAAQ,OACRiwC,SAAY,eACZh7B,QACE,WAE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","file":"math.js"} \ No newline at end of file diff --git a/docs/reference/functions.md b/docs/reference/functions.md index 0191851de..369ed10af 100644 --- a/docs/reference/functions.md +++ b/docs/reference/functions.md @@ -44,6 +44,7 @@ Function | Description [math.lup(A)](functions/lup.md) | Calculate the Matrix LU decomposition with partial pivoting. [math.lusolve(A, b)](functions/lusolve.md) | Solves the linear system `A * x = b` where `A` is an [n x n] matrix and `b` is a [n] column vector. [math.qr(A)](functions/qr.md) | Calculate the Matrix QR decomposition. +[rationalize(expr)](functions/rationalize.md) | Transform a rationalizable expression in a rational fraction. [simplify(expr)](functions/simplify.md) | Simplify an expression tree. [math.slu(A, order, threshold)](functions/slu.md) | Calculate the Sparse Matrix LU decomposition with full pivoting. [math.usolve(U, b)](functions/usolve.md) | Solves the linear equation system by backward substitution. diff --git a/docs/reference/functions/lusolve.md b/docs/reference/functions/lusolve.md index e6da0b121..cc9c9c960 100644 --- a/docs/reference/functions/lusolve.md +++ b/docs/reference/functions/lusolve.md @@ -41,7 +41,7 @@ var x2 = math.lusolve(f, [1, 2, 1, -1]); // x2 = [[1], [1], [1/3], [-0. var a = [[-2, 3], [2, 1]]; var b = [11, 9]; -var x = lusolve(a, b); // [[-5.5], [20]] +var x = math.lusolve(a, b); // [[2], [5]] ``` diff --git a/docs/reference/functions/pickRandom.md b/docs/reference/functions/pickRandom.md index 4cd4e700d..830342148 100644 --- a/docs/reference/functions/pickRandom.md +++ b/docs/reference/functions/pickRandom.md @@ -28,7 +28,7 @@ Parameter | Type | Description Type | Description ---- | ----------- -array | An array of elements of the provided input array +number | Array | Returns a single random value from array when number is 1 or undefined. Returns an array with the configured number of elements when number is > 1. ## Examples diff --git a/docs/reference/functions/rationalize.md b/docs/reference/functions/rationalize.md new file mode 100644 index 000000000..9f10b58c4 --- /dev/null +++ b/docs/reference/functions/rationalize.md @@ -0,0 +1,59 @@ + + +# Function rationalize + +Transform a rationalizable expression in a rational fraction. +If rational fraction is one variable polynomial then converts +the numerator and denominator in canonical form, with decreasing +exponents, returning the coefficients of numerator. + + +## Syntax + +```js +rationalize(expr) +rationalize(expr, detailed) +rationalize(expr, scope) +rationalize(expr, scope, detailed) +``` + +### Parameters + +Parameter | Type | Description +--------- | ---- | ----------- +`expr` | Node | string | The expression to check if is a polynomial expression +`optional` | Object | boolean | scope of expression or true for already evaluated rational expression at input +`detailed` | Boolean | optional True if return an object, false if return expression node (default) + +### Returns + +Type | Description +---- | ----------- +Object | Expression Node | The rational polynomial of `expr` or na object {Object} {Expression Node} expression: node simplified expression {Expression Node} numerator: simplified numerator of expression {Expression Node | boolean} denominator: simplified denominator or false (if there is no denominator) {Array} variables: variable names {Array} coefficients: coefficients of numerator sorted by increased exponent {Expression Node} node simplified expression + + +## Examples + +```js +math.rationalize('sin(x)+y') // Error: There is an unsolved function call +math.rationalize('2x/y - y/(x+1)') // (2*x^2-y^2+2*x)/(x*y+y) +math.rationalize('(2x+1)^6') + // 64*x^6+192*x^5+240*x^4+160*x^3+60*x^2+12*x+1 +math.rationalize('2x/( (2x-1) / (3x+2) ) - 5x/ ( (3x+4) / (2x^2-5) ) + 3') + // -20*x^4+28*x^3+104*x^2+6*x-12)/(6*x^2+5*x-4) +math.rationalize('x/(1-x)/(x-2)/(x-3)/(x-4) + 2x/ ( (1-2x)/(2-3x) )/ ((3-4x)/(4-5x) )') = + // (-30*x^7+344*x^6-1506*x^5+3200*x^4-3472*x^3+1846*x^2-381*x)/ + // (-8*x^6+90*x^5-383*x^4+780*x^3-797*x^2+390*x-72) + +math.rationalize('x+x+x+y',{y:1}) // 3*x+1 +math.rationalize('x+x+x+y',{}) // 3*x+y +ret = math.rationalize('x+x+x+y',{},true) + // ret.expression=3*x+y, ret.variables = ["x","y"] +ret = math.rationalize('-2+5x^2',{},true) + // ret.expression=5*x^2-2, ret.variables = ["x"], ret.coefficients=[-2,0,5] +``` + + +## See also + +[simplify](simplify.md) diff --git a/lib/version.js b/lib/version.js index a501f7d91..d6f4fbd7a 100644 --- a/lib/version.js +++ b/lib/version.js @@ -1,3 +1,3 @@ -module.exports = '3.17.0'; +module.exports = '3.18.0'; // Note: This file is automatically generated when building math.js. // Changes made in this file will be overwritten. diff --git a/package-lock.json b/package-lock.json index dde3a4326..296e90d33 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "mathjs", - "version": "3.17.0", + "version": "3.18.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 2e11a4929..fca387bed 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mathjs", - "version": "3.17.0", + "version": "3.18.0", "description": "Math.js is an extensive math library for JavaScript and Node.js. It features a flexible expression parser with support for symbolic computation, comes with a large set of built-in functions and constants, and offers an integrated solution to work with different data types like numbers, big numbers, complex numbers, fractions, units, and matrices.", "author": "Jos de Jong (https://github.com/josdejong)", "contributors": [