@pie-lib/math-evaluator 3.0.0-next.0 → 3.1.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/__tests__/index.test.js +306 -0
- package/lib/index.js +1 -1
- package/package.json +3 -11
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
6
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
7
|
+
var _index = _interopRequireWildcard(require("../index"));
|
|
8
|
+
var _lodash = _interopRequireDefault(require("lodash"));
|
|
9
|
+
var _templateObject, _templateObject2, _templateObject3;
|
|
10
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
11
|
+
describe('math-evaluator', function () {
|
|
12
|
+
describe('latexToText', function () {
|
|
13
|
+
var assertLatexToText = function assertLatexToText(input, expected) {
|
|
14
|
+
it("".concat(input, " => ").concat(expected), function () {
|
|
15
|
+
var result = (0, _index.latexToText)(input);
|
|
16
|
+
expect(result).toEqual(expected);
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
assertLatexToText('\\frac{ \\frac{1}{3}}{3}', '(1/3)/3');
|
|
20
|
+
assertLatexToText('\\neq', '0 != 0');
|
|
21
|
+
assertLatexToText('10 \\neq 20', '10 != 20');
|
|
22
|
+
assertLatexToText('10 \\neq', '10 != 0');
|
|
23
|
+
assertLatexToText('\\neq 10', '0 != 10');
|
|
24
|
+
assertLatexToText('40%', 'percent(40)');
|
|
25
|
+
assertLatexToText('%', 'percent(0)');
|
|
26
|
+
assertLatexToText('12%', 'percent(12)');
|
|
27
|
+
assertLatexToText('12\\%', 'percent(12)');
|
|
28
|
+
assertLatexToText('-12.5%', '- percent(12.5)');
|
|
29
|
+
assertLatexToText('-12.5\\%', '- percent(12.5)');
|
|
30
|
+
});
|
|
31
|
+
var assert = function assert(isEqual, opts) {
|
|
32
|
+
return function (label) {
|
|
33
|
+
return function () {
|
|
34
|
+
var args = Array.from(arguments);
|
|
35
|
+
var pairs = _lodash["default"].chunk(args, 2);
|
|
36
|
+
describe(label, function () {
|
|
37
|
+
pairs.forEach(function (_ref) {
|
|
38
|
+
var _ref2 = (0, _slicedToArray2["default"])(_ref, 2),
|
|
39
|
+
a = _ref2[0],
|
|
40
|
+
b = _ref2[1];
|
|
41
|
+
it("".concat(a, " === ").concat(b, " ? ").concat(isEqual), function () {
|
|
42
|
+
expect((0, _index["default"])(a, b, opts)).toBe(isEqual);
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
var assertEqual = assert(true);
|
|
50
|
+
var assertNotEqual = assert(false);
|
|
51
|
+
var assertLatexEqual = assert(true, {
|
|
52
|
+
isLatex: true
|
|
53
|
+
});
|
|
54
|
+
var assertLatexNotEqual = assert(false, {
|
|
55
|
+
isLatex: true
|
|
56
|
+
});
|
|
57
|
+
var _amjs = function _amjs(only) {
|
|
58
|
+
return function (a, b, equal) {
|
|
59
|
+
var fn = only ? it.only : it;
|
|
60
|
+
fn("".concat(a, " === ").concat(b, " => ").concat(equal), function () {
|
|
61
|
+
var as = (0, _index.latexToText)(a);
|
|
62
|
+
var bs = (0, _index.latexToText)(b);
|
|
63
|
+
expect((0, _index.ave)(as, bs)).toEqual(equal);
|
|
64
|
+
});
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
var assertThroughMathJs = _amjs(false);
|
|
68
|
+
assertThroughMathJs.only = _amjs(true);
|
|
69
|
+
var _als = function _als(only) {
|
|
70
|
+
return function (input, expected) {
|
|
71
|
+
var fn = only ? it.only : it;
|
|
72
|
+
fn("".concat(input, " => ").concat(expected), function () {
|
|
73
|
+
expect((0, _index.latexToText)(input)).toEqual(expected);
|
|
74
|
+
});
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
var assertLatexFromString = _als(false);
|
|
78
|
+
assertLatexFromString.only = _als(true);
|
|
79
|
+
describe('ch6456', function () {
|
|
80
|
+
assertEqual('percent')('-12.5%', '-12.5%');
|
|
81
|
+
assertEqual('percent')('-12.5\\%', '-12.5%');
|
|
82
|
+
assertNotEqual('percent')('-11.5%', '-12.5%');
|
|
83
|
+
});
|
|
84
|
+
describe('ch6456 - latex', function () {
|
|
85
|
+
assertLatexEqual('percent')('\\frac{1}{2} -12.5%', '\\frac{2}{4} -12.5%');
|
|
86
|
+
assertLatexEqual('percent')('\\frac{1}{2} -12.5%', '\\frac{2}{4} -12.5\\%');
|
|
87
|
+
assertLatexNotEqual('percent')('\\frac{4}{2} -12.5%', '\\frac{2}{4} -12.5\\%');
|
|
88
|
+
assertLatexNotEqual('percent')('\\frac{2}{2} -12.5%', '\\frac{2}{4} -12.5\\%');
|
|
89
|
+
});
|
|
90
|
+
describe('PIE-188-math-expressions', function () {
|
|
91
|
+
// it('parses expressions correctly', async () => {
|
|
92
|
+
|
|
93
|
+
// geometry
|
|
94
|
+
|
|
95
|
+
// MULTIPLY WITH VARIABLE BASED
|
|
96
|
+
assertThroughMathJs('\\parallel x', '\\parallel x', true);
|
|
97
|
+
assertThroughMathJs('\\parallel x', '\\parallel x', true);
|
|
98
|
+
assertThroughMathJs('\\parallel x', '\\parallel 0', false);
|
|
99
|
+
assertThroughMathJs('\\overrightarrow{x + 4}', '\\overrightarrow {4 + x}', true);
|
|
100
|
+
assertThroughMathJs('\\overrightarrow{4x^2 + 4}', '\\overrightarrow {4x^2 + 8 - 4}', true);
|
|
101
|
+
assertThroughMathJs('\\overrightarrow{21*2*x}', '\\overrightarrow {42x}', true);
|
|
102
|
+
assertLatexFromString('\\nparallel x', 'nparallel x');
|
|
103
|
+
assertLatexFromString('\\overrightarrow{x}', 'overrightarrow x');
|
|
104
|
+
assertLatexFromString('\\overleftrightarrow{x}', 'overleftrightarrow x');
|
|
105
|
+
assertLatexFromString('\\perp x', 'perp x');
|
|
106
|
+
assertLatexFromString('\\angle x', 'angle x');
|
|
107
|
+
assertLatexFromString('\\overarc x', 'overarc x');
|
|
108
|
+
assertLatexFromString('\\measuredangle x', 'measuredangle x');
|
|
109
|
+
assertLatexFromString('\\triangle x', 'triangle x');
|
|
110
|
+
assertLatexFromString('\\parallelogram x', 'parallelogram x');
|
|
111
|
+
assertLatexFromString('\\odot x', 'odot x');
|
|
112
|
+
assertLatexFromString('\\degree x', 'degree x');
|
|
113
|
+
assertLatexFromString('\\sim x', 'sim x');
|
|
114
|
+
assertLatexFromString('\\cong x', 'cong x');
|
|
115
|
+
assertLatexFromString('\\ncong x', 'ncong x');
|
|
116
|
+
assertLatexFromString('\\napprox x', 'napprox x'); // UNRECOGNIZED BY LEARNOSITY
|
|
117
|
+
assertLatexFromString('\\nim x', 'nim x'); // UNRECOGNIZED BY LEARNOSITY
|
|
118
|
+
assertLatexFromString('\\sim x', 'sim x');
|
|
119
|
+
expect(function () {
|
|
120
|
+
return (0, _index.latexToText)('\\sim 4', {
|
|
121
|
+
unknownCommandBehavior: 'error'
|
|
122
|
+
});
|
|
123
|
+
}).toThrow();
|
|
124
|
+
|
|
125
|
+
// comparisons
|
|
126
|
+
|
|
127
|
+
assertLatexFromString('1 \\lt 2', '1 < 2');
|
|
128
|
+
assertLatexFromString('1 \\gt 2', '1 > 2');
|
|
129
|
+
assertLatexFromString('1 \\le 2', '1 ≤ 2');
|
|
130
|
+
assertLatexFromString('1 \\ge 2', '1 ≥ 2');
|
|
131
|
+
|
|
132
|
+
// exponents
|
|
133
|
+
|
|
134
|
+
assertLatexFromString('2^2', '2^2');
|
|
135
|
+
assertLatexFromString('2^{3}', '2^3');
|
|
136
|
+
|
|
137
|
+
// roots
|
|
138
|
+
|
|
139
|
+
assertLatexFromString('\\sqrt{2}', 'sqrt(2)');
|
|
140
|
+
assertLatexFromString('\\sqrt[{3}]{3}', '3^(1/3)');
|
|
141
|
+
|
|
142
|
+
// fractions
|
|
143
|
+
|
|
144
|
+
assertLatexFromString('\\frac{3}{3}', '3/3');
|
|
145
|
+
assertLatexFromString('\\frac{x}{3}', 'x/3');
|
|
146
|
+
assertLatexFromString('x\\frac{5}{3}', 'x (5/3)');
|
|
147
|
+
|
|
148
|
+
// ACTUAL OPERATOR BASED
|
|
149
|
+
assertLatexFromString('\\overline{x}', 'overline x');
|
|
150
|
+
assertLatexFromString('\\pm', 'pm');
|
|
151
|
+
assertLatexFromString('\\approx x', 'approx x');
|
|
152
|
+
|
|
153
|
+
// logarithms
|
|
154
|
+
|
|
155
|
+
assertLatexFromString("4'", "4'");
|
|
156
|
+
assertLatexFromString('\\log 4', 'log(4)');
|
|
157
|
+
assertLatexFromString('\\log(4x)', 'log(4 x)');
|
|
158
|
+
assertLatexFromString('\\ln 4', 'ln(4)');
|
|
159
|
+
assertLatexFromString('|4|', '|4|');
|
|
160
|
+
assertLatexFromString('(4)', '4');
|
|
161
|
+
assertLatexFromString('(4 + x) * 5', '(4 + x) * 5');
|
|
162
|
+
assertLatexFromString('[4]', '4');
|
|
163
|
+
assertLatexFromString('\\mu', 'μ');
|
|
164
|
+
assertLatexFromString('\\Sigma', 'Σ');
|
|
165
|
+
assertLatexFromString('x^{15}', 'x^15');
|
|
166
|
+
assertLatexFromString('x_{15}', 'x_15');
|
|
167
|
+
|
|
168
|
+
// Trigo
|
|
169
|
+
|
|
170
|
+
assertLatexFromString('\\sin(x)', 'sin(x)');
|
|
171
|
+
assertLatexFromString('\\cos(x)', 'cos(x)');
|
|
172
|
+
assertLatexFromString('\\tan(x)', 'tan(x)');
|
|
173
|
+
assertLatexFromString('\\sec(x)', 'sec(x)');
|
|
174
|
+
assertLatexFromString('\\csc(x)', 'csc(x)');
|
|
175
|
+
assertLatexFromString('\\cot(x)', 'cot(x)');
|
|
176
|
+
});
|
|
177
|
+
|
|
178
|
+
// assertNotEqual('custom latex')('1530', `\\odot`);
|
|
179
|
+
assertNotEqual('evaluates simple expressions correctly')('0', 'x', '3x', '4x');
|
|
180
|
+
assertEqual('evaluates simple expressions correctly')('x', 'x', '2x', '2x');
|
|
181
|
+
describe('bad frac throws error', function () {
|
|
182
|
+
it('throws an error', function () {
|
|
183
|
+
expect(function () {
|
|
184
|
+
return (0, _index["default"])('\\frac12', '\\frac34', {
|
|
185
|
+
isLatex: true
|
|
186
|
+
});
|
|
187
|
+
}).toThrow('Expecting {');
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
describe('7119', function () {
|
|
191
|
+
it.each(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n v | isEqual\n ", " | ", "\n ", " | ", "\n ", " | ", "\n ", " | ", "\n ", " | ", "\n ", " | ", "\n ", " | ", "\n "])), '4.5', true, '3.2 + 1.3', true, '(4 - \\frac{4}{5}) + 1.3', true, '\\frac{9}{2}', true, '4 \\frac{1}{2}', true, '\\frac{10}{2} - 0.5', true, '4.55', false)('$a == $isEqual', function (_ref3) {
|
|
192
|
+
var v = _ref3.v,
|
|
193
|
+
isEqual = _ref3.isEqual;
|
|
194
|
+
var result = (0, _index["default"])('4 \\frac{1}{2}', v, {
|
|
195
|
+
isLatex: true
|
|
196
|
+
});
|
|
197
|
+
expect(result).toEqual(isEqual);
|
|
198
|
+
});
|
|
199
|
+
it('?', function () {
|
|
200
|
+
expect((0, _index.latexToText)('4\\frac{1}{2}')).toEqual('4 + 1/2');
|
|
201
|
+
});
|
|
202
|
+
});
|
|
203
|
+
assertEqual('evaluates simple expressions correctly 2')('100', '100', '50 + 50', '25 * 4', '200 / 2', '20 * 5', '2.5 * 40', '10 * 10');
|
|
204
|
+
assertNotEqual('evaluates simple expressions correctly 2')('100', '0', '0', '50 * 2', '44 + 57', '100', '44 + 57', '50 * 3');
|
|
205
|
+
assertEqual('evaluates simple expressions correctly 3')('50 + 50', '100', '100 / 2 + 50', '100', '2 + 2', '4', '1/2 + .5', '1');
|
|
206
|
+
assertNotEqual('evaluates simple expressions correctly 3')('50 + 51', '100', '25 * 2 + 51', '100', '1/2 + .5', '1.9', '1/2 + .5', '1.1');
|
|
207
|
+
assertEqual('evaluates simple expressions correctly 4')('50 + 50', '100', '100 / 2 + 50', '100', '2 + 2', '4', '1/2 + .5', '1', '13/2', '13/2', '26/4', '13/2', '6 + 1/2', '13/2', '6.5', '13/2');
|
|
208
|
+
assertNotEqual('evaluates simple expressions correctly 4')('50 + 51', '100', '25 * 2 + 51', '100', '1/2 + .5', '1.9', '1/2 + .5', '1.1', '14/2', '13/2', '6.6', '13/2');
|
|
209
|
+
it.each(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n a | b\n ", " | ", "\n "])), '((x^2 + x) / x) - 1', 'x')('$a == $b', function (_ref4) {
|
|
210
|
+
var a = _ref4.a,
|
|
211
|
+
b = _ref4.b;
|
|
212
|
+
expect((0, _index["default"])(a, b)).toBe(true);
|
|
213
|
+
});
|
|
214
|
+
assertEqual('evaluates simple variable expressions correctly')('x', 'x', 'x + 0', 'x', '(x-2) + 2', 'x', '((x^2 + x) / x) - 1', 'x', '2x/2', 'x', '(x + 2)^2', '(x + 2)^2', 'x^2 + 4x + 4', '(x + 2)^2', 'x^2 + 4(x+1)', '(x + 2)^2', 'x^2 + 8 ((x+1) / 2)', '(x + 2)^2');
|
|
215
|
+
assertNotEqual('evaluates simple variable expressions correctly')('y', 'x', 'x + 1', 'x', 'x^3 + 4x + 4', '(x + 2)^2', 'x^2 + 4(x+2)', '(x + 2)^2');
|
|
216
|
+
assertEqual('evaluates simple variable expressions correctly 2')('(2 + x)^2', '(x + 2)^2', 'x^2 + 4x + 4', '(x + 2)^2', 'x^2 + 4(x+1)', '(x + 2)^2', 'x^2 + 8 ((x+1) / 2)', '(x + 2)^2');
|
|
217
|
+
assertEqual('evaluates expressions correctly with variable exponents')('(2 + x)^2x', '(x + 2)^2x', 'y^(2 x)', 'y^(x+x)');
|
|
218
|
+
assertEqual('evaluates function expressions correctly with variable parameters')('sqrt(4x)', 'sqrt(2x+2x)', 'sqrt(x^2)', 'sqrt(((x+1)^2) - ((x+1)^2) + x^2)');
|
|
219
|
+
assertNotEqual('evaluates simple variable expressions correctly 2')('x^3 + 4x + 4', '(x + 2)^2', 'x^2 + 4(x+2)', '(x + 2)^2');
|
|
220
|
+
it('correctly consumes allowDecimals option', function () {
|
|
221
|
+
expect((0, _index["default"])('123', '123', {
|
|
222
|
+
allowDecimals: true
|
|
223
|
+
})).toEqual(true);
|
|
224
|
+
expect((0, _index["default"])('123', '123.0', {
|
|
225
|
+
allowDecimals: true
|
|
226
|
+
})).toEqual(true);
|
|
227
|
+
expect((0, _index["default"])('123,0', '123.0', {
|
|
228
|
+
allowDecimals: true
|
|
229
|
+
})).toEqual(true);
|
|
230
|
+
expect((0, _index["default"])('123,0', '123.0', {
|
|
231
|
+
allowDecimals: false
|
|
232
|
+
})).toEqual(false);
|
|
233
|
+
expect((0, _index["default"])('123', '123.0', {
|
|
234
|
+
allowDecimals: false
|
|
235
|
+
})).toEqual(false);
|
|
236
|
+
expect((0, _index["default"])('123', '123,0', {
|
|
237
|
+
allowDecimals: false
|
|
238
|
+
})).toEqual(false);
|
|
239
|
+
});
|
|
240
|
+
it('correctly consumes allowDecimals option for complex examples too', function () {
|
|
241
|
+
expect((0, _index["default"])('1500000', '1500000', {
|
|
242
|
+
allowDecimals: true
|
|
243
|
+
})).toEqual(true);
|
|
244
|
+
expect((0, _index["default"])('1,500,000', '1,500,000', {
|
|
245
|
+
allowDecimals: true
|
|
246
|
+
})).toEqual(true);
|
|
247
|
+
expect((0, _index["default"])('1500000', '1,500,000', {
|
|
248
|
+
allowDecimals: true
|
|
249
|
+
})).toEqual(true);
|
|
250
|
+
expect((0, _index["default"])('1500000', '1,500,000.00', {
|
|
251
|
+
allowDecimals: true
|
|
252
|
+
})).toEqual(true);
|
|
253
|
+
expect((0, _index["default"])('1500000', '1,500,000.0', {
|
|
254
|
+
allowDecimals: true
|
|
255
|
+
})).toEqual(true);
|
|
256
|
+
expect((0, _index["default"])('1,500,000.0', '1,500,000.00', {
|
|
257
|
+
allowDecimals: true
|
|
258
|
+
})).toEqual(true);
|
|
259
|
+
expect((0, _index["default"])('1500000', '1,500000', {
|
|
260
|
+
allowDecimals: true
|
|
261
|
+
})).toEqual(false);
|
|
262
|
+
expect((0, _index["default"])('1500000', '1500,000', {
|
|
263
|
+
allowDecimals: true
|
|
264
|
+
})).toEqual(false);
|
|
265
|
+
expect((0, _index["default"])('1500000', '1,500,000.01', {
|
|
266
|
+
allowDecimals: true
|
|
267
|
+
})).toEqual(false);
|
|
268
|
+
expect((0, _index["default"])('1500000', '1,500,00,0', {
|
|
269
|
+
allowDecimals: true
|
|
270
|
+
})).toEqual(false);
|
|
271
|
+
expect((0, _index["default"])('1500000', '1500,000', {
|
|
272
|
+
allowDecimals: true
|
|
273
|
+
})).toEqual(false);
|
|
274
|
+
expect((0, _index["default"])('1500000', ',1500,000', {
|
|
275
|
+
allowDecimals: true
|
|
276
|
+
})).toEqual(false);
|
|
277
|
+
});
|
|
278
|
+
it('evaluates simple trigo expressions correctly', function () {
|
|
279
|
+
expect((0, _index["default"])('sin(x)', 'sin(x)')).toEqual(true);
|
|
280
|
+
expect((0, _index["default"])('tan(x)', 'tan(x)')).toEqual(true);
|
|
281
|
+
});
|
|
282
|
+
it('correctly creates math expressions 1', function () {
|
|
283
|
+
expect((0, _index["default"])('f^{-1}\\left(x\\right)=\\sqrt{x-1}+3', 'f^{-1}\\left(x\\right)=\\sqrt{x-1}+3', {
|
|
284
|
+
allowDecimals: true,
|
|
285
|
+
isLatex: true
|
|
286
|
+
})).toEqual(true);
|
|
287
|
+
});
|
|
288
|
+
it('correctly creates math expressions 2', function () {
|
|
289
|
+
expect((0, _index["default"])('72\\div12=6\\text{eggs}', '72\\div12=6\\text{eggs}', {
|
|
290
|
+
allowDecimals: true,
|
|
291
|
+
isLatex: true
|
|
292
|
+
})).toEqual(true);
|
|
293
|
+
});
|
|
294
|
+
describe('PD-3', function () {
|
|
295
|
+
it.each(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n a | b\n ", " | ", "\n ", " | ", "\n ", " | ", "\n ", " | ", "\n ", " | ", "\n ", "\n ", "\n "])), '\\left(x\\right)^{ \\frac{1}{\\left(y + 3\\right)}}', '\\sqrt[\\left(y + 3\\right)]{x}', '\\left(x\\right)^{\\frac{1}{3}}', '\\sqrt[3]{x}', '\\left(x\\right)^{\\frac{1}{n}}', '\\sqrt[n]{x}', '\\left(x\\right)^{\\frac{1}{2}}', '\\sqrt{x}', '\\left(x-1\\right)^{\\frac{1}{2}}+3', '\\sqrt{x-1}+3', 'f^{-1}\\left(x\\right)=\\left(x-1\\right)^{\\frac{1}{2}}+3', 'f^{-1}\\left(x\\right)=\\sqrt{x-1}+3')('$a == $b', function (_ref5) {
|
|
296
|
+
var a = _ref5.a,
|
|
297
|
+
b = _ref5.b;
|
|
298
|
+
var opts = {
|
|
299
|
+
allowDecimals: true,
|
|
300
|
+
isLatex: true
|
|
301
|
+
};
|
|
302
|
+
expect((0, _index["default"])(a, b, opts)).toBeTruthy();
|
|
303
|
+
});
|
|
304
|
+
});
|
|
305
|
+
});
|
|
306
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaW5kZXgiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl90ZW1wbGF0ZU9iamVjdCIsIl90ZW1wbGF0ZU9iamVjdDIiLCJfdGVtcGxhdGVPYmplY3QzIiwiZSIsInQiLCJXZWFrTWFwIiwiciIsIm4iLCJfX2VzTW9kdWxlIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiX3R5cGVvZiIsImhhcyIsImdldCIsInNldCIsIl90IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJkZXNjcmliZSIsImFzc2VydExhdGV4VG9UZXh0IiwiaW5wdXQiLCJleHBlY3RlZCIsIml0IiwiY29uY2F0IiwicmVzdWx0IiwibGF0ZXhUb1RleHQiLCJleHBlY3QiLCJ0b0VxdWFsIiwiYXNzZXJ0IiwiaXNFcXVhbCIsIm9wdHMiLCJsYWJlbCIsImFyZ3MiLCJBcnJheSIsImZyb20iLCJhcmd1bWVudHMiLCJwYWlycyIsIl8iLCJjaHVuayIsImZvckVhY2giLCJfcmVmIiwiX3JlZjIiLCJfc2xpY2VkVG9BcnJheTIiLCJhIiwiYiIsImFyZVZhbHVlc0VxdWFsIiwidG9CZSIsImFzc2VydEVxdWFsIiwiYXNzZXJ0Tm90RXF1YWwiLCJhc3NlcnRMYXRleEVxdWFsIiwiaXNMYXRleCIsImFzc2VydExhdGV4Tm90RXF1YWwiLCJfYW1qcyIsIm9ubHkiLCJlcXVhbCIsImZuIiwiYXMiLCJicyIsImF2ZSIsImFzc2VydFRocm91Z2hNYXRoSnMiLCJfYWxzIiwiYXNzZXJ0TGF0ZXhGcm9tU3RyaW5nIiwidW5rbm93bkNvbW1hbmRCZWhhdmlvciIsInRvVGhyb3ciLCJlYWNoIiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJfcmVmMyIsInYiLCJfcmVmNCIsImFsbG93RGVjaW1hbHMiLCJfcmVmNSIsInRvQmVUcnV0aHkiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvX190ZXN0c19fL2luZGV4LnRlc3QuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFyZVZhbHVlc0VxdWFsLCB7IGF2ZSwgbGF0ZXhUb1RleHQgfSBmcm9tICcuLi9pbmRleCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5kZXNjcmliZSgnbWF0aC1ldmFsdWF0b3InLCAoKSA9PiB7XG4gIGRlc2NyaWJlKCdsYXRleFRvVGV4dCcsICgpID0+IHtcbiAgICBjb25zdCBhc3NlcnRMYXRleFRvVGV4dCA9IChpbnB1dCwgZXhwZWN0ZWQpID0+IHtcbiAgICAgIGl0KGAke2lucHV0fSA9PiAke2V4cGVjdGVkfWAsICgpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbGF0ZXhUb1RleHQoaW5wdXQpO1xuICAgICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgICAgIH0pO1xuICAgIH07XG4gICAgYXNzZXJ0TGF0ZXhUb1RleHQoJ1xcXFxmcmFjeyBcXFxcZnJhY3sxfXszfX17M30nLCAnKDEvMykvMycpO1xuICAgIGFzc2VydExhdGV4VG9UZXh0KCdcXFxcbmVxJywgJzAgIT0gMCcpO1xuICAgIGFzc2VydExhdGV4VG9UZXh0KCcxMCBcXFxcbmVxIDIwJywgJzEwICE9IDIwJyk7XG4gICAgYXNzZXJ0TGF0ZXhUb1RleHQoJzEwIFxcXFxuZXEnLCAnMTAgIT0gMCcpO1xuICAgIGFzc2VydExhdGV4VG9UZXh0KCdcXFxcbmVxIDEwJywgJzAgIT0gMTAnKTtcbiAgICBhc3NlcnRMYXRleFRvVGV4dCgnNDAlJywgJ3BlcmNlbnQoNDApJyk7XG4gICAgYXNzZXJ0TGF0ZXhUb1RleHQoJyUnLCAncGVyY2VudCgwKScpO1xuICAgIGFzc2VydExhdGV4VG9UZXh0KCcxMiUnLCAncGVyY2VudCgxMiknKTtcbiAgICBhc3NlcnRMYXRleFRvVGV4dCgnMTJcXFxcJScsICdwZXJjZW50KDEyKScpO1xuICAgIGFzc2VydExhdGV4VG9UZXh0KCctMTIuNSUnLCAnLSBwZXJjZW50KDEyLjUpJyk7XG4gICAgYXNzZXJ0TGF0ZXhUb1RleHQoJy0xMi41XFxcXCUnLCAnLSBwZXJjZW50KDEyLjUpJyk7XG4gIH0pO1xuXG4gIGNvbnN0IGFzc2VydCA9IChpc0VxdWFsLCBvcHRzKSA9PiAobGFiZWwpID0+XG4gICAgZnVuY3Rpb24oKSB7XG4gICAgICBjb25zdCBhcmdzID0gQXJyYXkuZnJvbShhcmd1bWVudHMpO1xuICAgICAgY29uc3QgcGFpcnMgPSBfLmNodW5rKGFyZ3MsIDIpO1xuXG4gICAgICBkZXNjcmliZShsYWJlbCwgKCkgPT4ge1xuICAgICAgICBwYWlycy5mb3JFYWNoKChbYSwgYl0pID0+IHtcbiAgICAgICAgICBpdChgJHthfSA9PT0gJHtifSA/ICR7aXNFcXVhbH1gLCAoKSA9PiB7XG4gICAgICAgICAgICBleHBlY3QoYXJlVmFsdWVzRXF1YWwoYSwgYiwgb3B0cykpLnRvQmUoaXNFcXVhbCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfTtcblxuICBjb25zdCBhc3NlcnRFcXVhbCA9IGFzc2VydCh0cnVlKTtcbiAgY29uc3QgYXNzZXJ0Tm90RXF1YWwgPSBhc3NlcnQoZmFsc2UpO1xuXG4gIGNvbnN0IGFzc2VydExhdGV4RXF1YWwgPSBhc3NlcnQodHJ1ZSwgeyBpc0xhdGV4OiB0cnVlIH0pO1xuICBjb25zdCBhc3NlcnRMYXRleE5vdEVxdWFsID0gYXNzZXJ0KGZhbHNlLCB7IGlzTGF0ZXg6IHRydWUgfSk7XG5cbiAgY29uc3QgX2FtanMgPSAob25seSkgPT4gKGEsIGIsIGVxdWFsKSA9PiB7XG4gICAgY29uc3QgZm4gPSBvbmx5ID8gaXQub25seSA6IGl0O1xuICAgIGZuKGAke2F9ID09PSAke2J9ID0+ICR7ZXF1YWx9YCwgKCkgPT4ge1xuICAgICAgY29uc3QgYXMgPSBsYXRleFRvVGV4dChhKTtcbiAgICAgIGNvbnN0IGJzID0gbGF0ZXhUb1RleHQoYik7XG4gICAgICBleHBlY3QoYXZlKGFzLCBicykpLnRvRXF1YWwoZXF1YWwpO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IGFzc2VydFRocm91Z2hNYXRoSnMgPSBfYW1qcyhmYWxzZSk7XG4gIGFzc2VydFRocm91Z2hNYXRoSnMub25seSA9IF9hbWpzKHRydWUpO1xuXG4gIGNvbnN0IF9hbHMgPSAob25seSkgPT4gKGlucHV0LCBleHBlY3RlZCkgPT4ge1xuICAgIGNvbnN0IGZuID0gb25seSA/IGl0Lm9ubHkgOiBpdDtcbiAgICBmbihgJHtpbnB1dH0gPT4gJHtleHBlY3RlZH1gLCAoKSA9PiB7XG4gICAgICBleHBlY3QobGF0ZXhUb1RleHQoaW5wdXQpKS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBhc3NlcnRMYXRleEZyb21TdHJpbmcgPSBfYWxzKGZhbHNlKTtcbiAgYXNzZXJ0TGF0ZXhGcm9tU3RyaW5nLm9ubHkgPSBfYWxzKHRydWUpO1xuXG4gIGRlc2NyaWJlKCdjaDY0NTYnLCAoKSA9PiB7XG4gICAgYXNzZXJ0RXF1YWwoJ3BlcmNlbnQnKSgnLTEyLjUlJywgJy0xMi41JScpO1xuICAgIGFzc2VydEVxdWFsKCdwZXJjZW50JykoJy0xMi41XFxcXCUnLCAnLTEyLjUlJyk7XG4gICAgYXNzZXJ0Tm90RXF1YWwoJ3BlcmNlbnQnKSgnLTExLjUlJywgJy0xMi41JScpO1xuICB9KTtcblxuICBkZXNjcmliZSgnY2g2NDU2IC0gbGF0ZXgnLCAoKSA9PiB7XG4gICAgYXNzZXJ0TGF0ZXhFcXVhbCgncGVyY2VudCcpKCdcXFxcZnJhY3sxfXsyfSAtMTIuNSUnLCAnXFxcXGZyYWN7Mn17NH0gLTEyLjUlJyk7XG4gICAgYXNzZXJ0TGF0ZXhFcXVhbCgncGVyY2VudCcpKCdcXFxcZnJhY3sxfXsyfSAtMTIuNSUnLCAnXFxcXGZyYWN7Mn17NH0gLTEyLjVcXFxcJScpO1xuICAgIGFzc2VydExhdGV4Tm90RXF1YWwoJ3BlcmNlbnQnKSgnXFxcXGZyYWN7NH17Mn0gLTEyLjUlJywgJ1xcXFxmcmFjezJ9ezR9IC0xMi41XFxcXCUnKTtcbiAgICBhc3NlcnRMYXRleE5vdEVxdWFsKCdwZXJjZW50JykoJ1xcXFxmcmFjezJ9ezJ9IC0xMi41JScsICdcXFxcZnJhY3syfXs0fSAtMTIuNVxcXFwlJyk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdQSUUtMTg4LW1hdGgtZXhwcmVzc2lvbnMnLCAoKSA9PiB7XG4gICAgLy8gaXQoJ3BhcnNlcyBleHByZXNzaW9ucyBjb3JyZWN0bHknLCBhc3luYyAoKSA9PiB7XG5cbiAgICAvLyBnZW9tZXRyeVxuXG4gICAgLy8gTVVMVElQTFkgV0lUSCBWQVJJQUJMRSBCQVNFRFxuICAgIGFzc2VydFRocm91Z2hNYXRoSnMoJ1xcXFxwYXJhbGxlbCB4JywgJ1xcXFxwYXJhbGxlbCB4JywgdHJ1ZSk7XG4gICAgYXNzZXJ0VGhyb3VnaE1hdGhKcygnXFxcXHBhcmFsbGVsIHgnLCAnXFxcXHBhcmFsbGVsICAgeCcsIHRydWUpO1xuICAgIGFzc2VydFRocm91Z2hNYXRoSnMoJ1xcXFxwYXJhbGxlbCB4JywgJ1xcXFxwYXJhbGxlbCAgIDAnLCBmYWxzZSk7XG4gICAgYXNzZXJ0VGhyb3VnaE1hdGhKcygnXFxcXG92ZXJyaWdodGFycm93e3ggKyA0fScsICdcXFxcb3ZlcnJpZ2h0YXJyb3cgezQgKyB4fScsIHRydWUpO1xuICAgIGFzc2VydFRocm91Z2hNYXRoSnMoJ1xcXFxvdmVycmlnaHRhcnJvd3s0eF4yICsgNH0nLCAnXFxcXG92ZXJyaWdodGFycm93IHs0eF4yICsgOCAtIDR9JywgdHJ1ZSk7XG4gICAgYXNzZXJ0VGhyb3VnaE1hdGhKcygnXFxcXG92ZXJyaWdodGFycm93ezIxKjIqeH0nLCAnXFxcXG92ZXJyaWdodGFycm93IHs0Mnh9JywgdHJ1ZSk7XG4gICAgYXNzZXJ0TGF0ZXhGcm9tU3RyaW5nKCdcXFxcbnBhcmFsbGVsIHgnLCAnbnBhcmFsbGVsIHgnKTtcbiAgICBhc3NlcnRMYXRleEZyb21TdHJpbmcoJ1xcXFxvdmVycmlnaHRhcnJvd3t4fScsICdvdmVycmlnaHRhcnJvdyB4Jyk7XG4gICAgYXNzZXJ0TGF0ZXhGcm9tU3RyaW5nKCdcXFxcb3ZlcmxlZnRyaWdodGFycm93e3h9JywgJ292ZXJsZWZ0cmlnaHRhcnJvdyB4Jyk7XG4gICAgYXNzZXJ0TGF0ZXhGcm9tU3RyaW5nKCdcXFxccGVycCB4JywgJ3BlcnAgeCcpO1xuICAgIGFzc2VydExhdGV4RnJvbVN0cmluZygnXFxcXGFuZ2xlIHgnLCAnYW5nbGUgeCcpO1xuICAgIGFzc2VydExhdGV4RnJvbVN0cmluZygnXFxcXG92ZXJhcmMgeCcsICdvdmVyYXJjIHgnKTtcbiAgICBhc3NlcnRMYXRleEZyb21TdHJpbmcoJ1xcXFxtZWFzdXJlZGFuZ2xlIHgnLCAnbWVhc3VyZWRhbmdsZSB4Jyk7XG4gICAgYXNzZXJ0TGF0ZXhGcm9tU3RyaW5nKCdcXFxcdHJpYW5nbGUgeCcsICd0cmlhbmdsZSB4Jyk7XG4gICAgYXNzZXJ0TGF0ZXhGcm9tU3RyaW5nKCdcXFxccGFyYWxsZWxvZ3JhbSB4JywgJ3BhcmFsbGVsb2dyYW0geCcpO1xuICAgIGFzc2VydExhdGV4RnJvbVN0cmluZygnXFxcXG9kb3QgeCcsICdvZG90IHgnKTtcbiAgICBhc3NlcnRMYXRleEZyb21TdHJpbmcoJ1xcXFxkZWdyZWUgeCcsICdkZWdyZWUgeCcpO1xuICAgIGFzc2VydExhdGV4RnJvbVN0cmluZygnXFxcXHNpbSB4JywgJ3NpbSB4Jyk7XG4gICAgYXNzZXJ0TGF0ZXhGcm9tU3RyaW5nKCdcXFxcY29uZyB4JywgJ2NvbmcgeCcpO1xuICAgIGFzc2VydExhdGV4RnJvbVN0cmluZygnXFxcXG5jb25nIHgnLCAnbmNvbmcgeCcpO1xuICAgIGFzc2VydExhdGV4RnJvbVN0cmluZygnXFxcXG5hcHByb3ggeCcsICduYXBwcm94IHgnKTsgLy8gVU5SRUNPR05JWkVEIEJZIExFQVJOT1NJVFlcbiAgICBhc3NlcnRMYXRleEZyb21TdHJpbmcoJ1xcXFxuaW0geCcsICduaW0geCcpOyAvLyBVTlJFQ09HTklaRUQgQlkgTEVBUk5PU0lUWVxuICAgIGFzc2VydExhdGV4RnJvbVN0cmluZygnXFxcXHNpbSB4JywgJ3NpbSB4Jyk7XG4gICAgZXhwZWN0KCgpID0+IGxhdGV4VG9UZXh0KCdcXFxcc2ltIDQnLCB7IHVua25vd25Db21tYW5kQmVoYXZpb3I6ICdlcnJvcicgfSkpLnRvVGhyb3coKTtcblxuICAgIC8vIGNvbXBhcmlzb25zXG5cbiAgICBhc3NlcnRMYXRleEZyb21TdHJpbmcoJzEgXFxcXGx0IDInLCAnMSA8IDInKTtcblxuICAgIGFzc2VydExhdGV4RnJvbVN0cmluZygnMSBcXFxcZ3QgMicsICcxID4gMicpO1xuXG4gICAgYXNzZXJ0TGF0ZXhGcm9tU3RyaW5nKCcxIFxcXFxsZSAyJywgJzEg4omkIDInKTtcblxuICAgIGFzc2VydExhdGV4RnJvbVN0cmluZygnMSBcXFxcZ2UgMicsICcxIOKJpSAyJyk7XG5cbiAgICAvLyBleHBvbmVudHNcblxuICAgIGFzc2VydExhdGV4RnJvbVN0cmluZygnMl4yJywgJzJeMicpO1xuXG4gICAgYXNzZXJ0TGF0ZXhGcm9tU3RyaW5nKCcyXnszfScsICcyXjMnKTtcblxuICAgIC8vIHJvb3RzXG5cbiAgICBhc3NlcnRMYXRleEZyb21TdHJpbmcoJ1xcXFxzcXJ0ezJ9JywgJ3NxcnQoMiknKTtcblxuICAgIGFzc2VydExhdGV4RnJvbVN0cmluZygnXFxcXHNxcnRbezN9XXszfScsICczXigxLzMpJyk7XG5cbiAgICAvLyBmcmFjdGlvbnNcblxuICAgIGFzc2VydExhdGV4RnJvbVN0cmluZygnXFxcXGZyYWN7M317M30nLCAnMy8zJyk7XG5cbiAgICBhc3NlcnRMYXRleEZyb21TdHJpbmcoJ1xcXFxmcmFje3h9ezN9JywgJ3gvMycpO1xuXG4gICAgYXNzZXJ0TGF0ZXhGcm9tU3RyaW5nKCd4XFxcXGZyYWN7NX17M30nLCAneCAoNS8zKScpO1xuXG4gICAgLy8gQUNUVUFMIE9QRVJBVE9SIEJBU0VEXG4gICAgYXNzZXJ0TGF0ZXhGcm9tU3RyaW5nKCdcXFxcb3ZlcmxpbmV7eH0nLCAnb3ZlcmxpbmUgeCcpO1xuICAgIGFzc2VydExhdGV4RnJvbVN0cmluZygnXFxcXHBtJywgJ3BtJyk7XG4gICAgYXNzZXJ0TGF0ZXhGcm9tU3RyaW5nKCdcXFxcYXBwcm94IHgnLCAnYXBwcm94IHgnKTtcblxuICAgIC8vIGxvZ2FyaXRobXNcblxuICAgIGFzc2VydExhdGV4RnJvbVN0cmluZyhcIjQnXCIsIFwiNCdcIik7XG4gICAgYXNzZXJ0TGF0ZXhGcm9tU3RyaW5nKCdcXFxcbG9nIDQnLCAnbG9nKDQpJyk7XG4gICAgYXNzZXJ0TGF0ZXhGcm9tU3RyaW5nKCdcXFxcbG9nKDR4KScsICdsb2coNCB4KScpO1xuICAgIGFzc2VydExhdGV4RnJvbVN0cmluZygnXFxcXGxuIDQnLCAnbG4oNCknKTtcblxuICAgIGFzc2VydExhdGV4RnJvbVN0cmluZygnfDR8JywgJ3w0fCcpO1xuICAgIGFzc2VydExhdGV4RnJvbVN0cmluZygnKDQpJywgJzQnKTtcbiAgICBhc3NlcnRMYXRleEZyb21TdHJpbmcoJyg0ICsgeCkgKiA1JywgJyg0ICsgeCkgKiA1Jyk7XG4gICAgYXNzZXJ0TGF0ZXhGcm9tU3RyaW5nKCdbNF0nLCAnNCcpO1xuICAgIGFzc2VydExhdGV4RnJvbVN0cmluZygnXFxcXG11JywgJ868Jyk7XG4gICAgYXNzZXJ0TGF0ZXhGcm9tU3RyaW5nKCdcXFxcU2lnbWEnLCAnzqMnKTtcbiAgICBhc3NlcnRMYXRleEZyb21TdHJpbmcoJ3heezE1fScsICd4XjE1Jyk7XG4gICAgYXNzZXJ0TGF0ZXhGcm9tU3RyaW5nKCd4X3sxNX0nLCAneF8xNScpO1xuXG4gICAgLy8gVHJpZ29cblxuICAgIGFzc2VydExhdGV4RnJvbVN0cmluZygnXFxcXHNpbih4KScsICdzaW4oeCknKTtcbiAgICBhc3NlcnRMYXRleEZyb21TdHJpbmcoJ1xcXFxjb3MoeCknLCAnY29zKHgpJyk7XG4gICAgYXNzZXJ0TGF0ZXhGcm9tU3RyaW5nKCdcXFxcdGFuKHgpJywgJ3Rhbih4KScpO1xuICAgIGFzc2VydExhdGV4RnJvbVN0cmluZygnXFxcXHNlYyh4KScsICdzZWMoeCknKTtcbiAgICBhc3NlcnRMYXRleEZyb21TdHJpbmcoJ1xcXFxjc2MoeCknLCAnY3NjKHgpJyk7XG4gICAgYXNzZXJ0TGF0ZXhGcm9tU3RyaW5nKCdcXFxcY290KHgpJywgJ2NvdCh4KScpO1xuICB9KTtcblxuICAvLyBhc3NlcnROb3RFcXVhbCgnY3VzdG9tIGxhdGV4JykoJzE1MzAnLCBgXFxcXG9kb3RgKTtcbiAgYXNzZXJ0Tm90RXF1YWwoJ2V2YWx1YXRlcyBzaW1wbGUgZXhwcmVzc2lvbnMgY29ycmVjdGx5JykoJzAnLCAneCcsICczeCcsICc0eCcpO1xuXG4gIGFzc2VydEVxdWFsKCdldmFsdWF0ZXMgc2ltcGxlIGV4cHJlc3Npb25zIGNvcnJlY3RseScpKCd4JywgJ3gnLCAnMngnLCAnMngnKTtcblxuICBkZXNjcmliZSgnYmFkIGZyYWMgdGhyb3dzIGVycm9yJywgKCkgPT4ge1xuICAgIGl0KCd0aHJvd3MgYW4gZXJyb3InLCAoKSA9PiB7XG4gICAgICBleHBlY3QoKCkgPT4gYXJlVmFsdWVzRXF1YWwoJ1xcXFxmcmFjMTInLCAnXFxcXGZyYWMzNCcsIHsgaXNMYXRleDogdHJ1ZSB9KSkudG9UaHJvdygnRXhwZWN0aW5nIHsnKTtcbiAgICB9KTtcbiAgfSk7XG4gIGRlc2NyaWJlKCc3MTE5JywgKCkgPT4ge1xuICAgIGl0LmVhY2hgXG4gICAgICB2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGlzRXF1YWxcbiAgICAgICR7JzQuNSd9ICAgICAgICAgICAgICAgICAgICAgIHwgJHt0cnVlfVxuICAgICAgJHsnMy4yICsgMS4zJ30gICAgICAgICAgICAgICAgfCAke3RydWV9XG4gICAgICAkeycoNCAtIFxcXFxmcmFjezR9ezV9KSArIDEuMyd9IHwgJHt0cnVlfVxuICAgICAgJHsnXFxcXGZyYWN7OX17Mn0nfSAgICAgICAgICAgICB8ICR7dHJ1ZX1cbiAgICAgICR7JzQgXFxcXGZyYWN7MX17Mn0nfSAgICAgICAgICAgfCAke3RydWV9XG4gICAgICAkeydcXFxcZnJhY3sxMH17Mn0gLSAwLjUnfSAgICAgIHwgJHt0cnVlfVxuICAgICAgJHsnNC41NSd9ICAgICAgICAgICAgICAgICAgICAgfCAke2ZhbHNlfVxuICAgIGAoJyRhID09ICRpc0VxdWFsJywgKHsgdiwgaXNFcXVhbCB9KSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhcmVWYWx1ZXNFcXVhbCgnNCBcXFxcZnJhY3sxfXsyfScsIHYsIHsgaXNMYXRleDogdHJ1ZSB9KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoaXNFcXVhbCk7XG4gICAgfSk7XG5cbiAgICBpdCgnPycsICgpID0+IHtcbiAgICAgIGV4cGVjdChsYXRleFRvVGV4dCgnNFxcXFxmcmFjezF9ezJ9JykpLnRvRXF1YWwoJzQgKyAxLzInKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgYXNzZXJ0RXF1YWwoJ2V2YWx1YXRlcyBzaW1wbGUgZXhwcmVzc2lvbnMgY29ycmVjdGx5IDInKShcbiAgICAnMTAwJyxcbiAgICAnMTAwJyxcbiAgICAnNTAgKyA1MCcsXG4gICAgJzI1ICogNCcsXG4gICAgJzIwMCAvIDInLFxuICAgICcyMCAqIDUnLFxuICAgICcyLjUgKiA0MCcsXG4gICAgJzEwICogMTAnLFxuICApO1xuXG4gIGFzc2VydE5vdEVxdWFsKCdldmFsdWF0ZXMgc2ltcGxlIGV4cHJlc3Npb25zIGNvcnJlY3RseSAyJykoXG4gICAgJzEwMCcsXG4gICAgJzAnLFxuICAgICcwJyxcbiAgICAnNTAgKiAyJyxcbiAgICAnNDQgKyA1NycsXG4gICAgJzEwMCcsXG4gICAgJzQ0ICsgNTcnLFxuICAgICc1MCAqIDMnLFxuICApO1xuXG4gIGFzc2VydEVxdWFsKCdldmFsdWF0ZXMgc2ltcGxlIGV4cHJlc3Npb25zIGNvcnJlY3RseSAzJykoXG4gICAgJzUwICsgNTAnLFxuICAgICcxMDAnLFxuICAgICcxMDAgLyAyICsgNTAnLFxuICAgICcxMDAnLFxuICAgICcyICsgMicsXG4gICAgJzQnLFxuICAgICcxLzIgKyAuNScsXG4gICAgJzEnLFxuICApO1xuXG4gIGFzc2VydE5vdEVxdWFsKCdldmFsdWF0ZXMgc2ltcGxlIGV4cHJlc3Npb25zIGNvcnJlY3RseSAzJykoXG4gICAgJzUwICsgNTEnLFxuICAgICcxMDAnLFxuICAgICcyNSAqIDIgKyA1MScsXG4gICAgJzEwMCcsXG4gICAgJzEvMiArIC41JyxcbiAgICAnMS45JyxcbiAgICAnMS8yICsgLjUnLFxuICAgICcxLjEnLFxuICApO1xuXG4gIGFzc2VydEVxdWFsKCdldmFsdWF0ZXMgc2ltcGxlIGV4cHJlc3Npb25zIGNvcnJlY3RseSA0JykoXG4gICAgJzUwICsgNTAnLFxuICAgICcxMDAnLFxuICAgICcxMDAgLyAyICsgNTAnLFxuICAgICcxMDAnLFxuICAgICcyICsgMicsXG4gICAgJzQnLFxuICAgICcxLzIgKyAuNScsXG4gICAgJzEnLFxuICAgICcxMy8yJyxcbiAgICAnMTMvMicsXG4gICAgJzI2LzQnLFxuICAgICcxMy8yJyxcbiAgICAnNiArIDEvMicsXG4gICAgJzEzLzInLFxuICAgICc2LjUnLFxuICAgICcxMy8yJyxcbiAgKTtcblxuICBhc3NlcnROb3RFcXVhbCgnZXZhbHVhdGVzIHNpbXBsZSBleHByZXNzaW9ucyBjb3JyZWN0bHkgNCcpKFxuICAgICc1MCArIDUxJyxcbiAgICAnMTAwJyxcbiAgICAnMjUgKiAyICsgNTEnLFxuICAgICcxMDAnLFxuICAgICcxLzIgKyAuNScsXG4gICAgJzEuOScsXG4gICAgJzEvMiArIC41JyxcbiAgICAnMS4xJyxcbiAgICAnMTQvMicsXG4gICAgJzEzLzInLFxuICAgICc2LjYnLFxuICAgICcxMy8yJyxcbiAgKTtcblxuICBpdC5lYWNoYFxuICAgIGEgICAgICAgICAgICAgICAgICAgICAgICB8IGJcbiAgICAkeycoKHheMiArIHgpIC8geCkgLSAxJ30gfCAkeyd4J31cbiAgYCgnJGEgPT0gJGInLCAoeyBhLCBiIH0pID0+IHtcbiAgICBleHBlY3QoYXJlVmFsdWVzRXF1YWwoYSwgYikpLnRvQmUodHJ1ZSk7XG4gIH0pO1xuXG4gIGFzc2VydEVxdWFsKCdldmFsdWF0ZXMgc2ltcGxlIHZhcmlhYmxlIGV4cHJlc3Npb25zIGNvcnJlY3RseScpKFxuICAgICd4JyxcbiAgICAneCcsXG4gICAgJ3ggKyAwJyxcbiAgICAneCcsXG4gICAgJyh4LTIpICsgMicsXG4gICAgJ3gnLFxuICAgICcoKHheMiArIHgpIC8geCkgLSAxJyxcbiAgICAneCcsXG4gICAgJzJ4LzInLFxuICAgICd4JyxcbiAgICAnKHggKyAyKV4yJyxcbiAgICAnKHggKyAyKV4yJyxcbiAgICAneF4yICsgNHggKyA0JyxcbiAgICAnKHggKyAyKV4yJyxcbiAgICAneF4yICsgNCh4KzEpJyxcbiAgICAnKHggKyAyKV4yJyxcbiAgICAneF4yICsgOCAoKHgrMSkgLyAyKScsXG4gICAgJyh4ICsgMileMicsXG4gICk7XG5cbiAgYXNzZXJ0Tm90RXF1YWwoJ2V2YWx1YXRlcyBzaW1wbGUgdmFyaWFibGUgZXhwcmVzc2lvbnMgY29ycmVjdGx5JykoXG4gICAgJ3knLFxuICAgICd4JyxcbiAgICAneCArIDEnLFxuICAgICd4JyxcbiAgICAneF4zICsgNHggKyA0JyxcbiAgICAnKHggKyAyKV4yJyxcbiAgICAneF4yICsgNCh4KzIpJyxcbiAgICAnKHggKyAyKV4yJyxcbiAgKTtcblxuICBhc3NlcnRFcXVhbCgnZXZhbHVhdGVzIHNpbXBsZSB2YXJpYWJsZSBleHByZXNzaW9ucyBjb3JyZWN0bHkgMicpKFxuICAgICcoMiArIHgpXjInLFxuICAgICcoeCArIDIpXjInLFxuICAgICd4XjIgKyA0eCArIDQnLFxuICAgICcoeCArIDIpXjInLFxuICAgICd4XjIgKyA0KHgrMSknLFxuICAgICcoeCArIDIpXjInLFxuICAgICd4XjIgKyA4ICgoeCsxKSAvIDIpJyxcbiAgICAnKHggKyAyKV4yJyxcbiAgKTtcblxuICBhc3NlcnRFcXVhbCgnZXZhbHVhdGVzIGV4cHJlc3Npb25zIGNvcnJlY3RseSB3aXRoIHZhcmlhYmxlIGV4cG9uZW50cycpKFxuICAgICcoMiArIHgpXjJ4JyxcbiAgICAnKHggKyAyKV4yeCcsXG4gICAgJ3leKDIgeCknLFxuICAgICd5Xih4K3gpJyxcbiAgKTtcblxuICBhc3NlcnRFcXVhbCgnZXZhbHVhdGVzIGZ1bmN0aW9uIGV4cHJlc3Npb25zIGNvcnJlY3RseSB3aXRoIHZhcmlhYmxlIHBhcmFtZXRlcnMnKShcbiAgICAnc3FydCg0eCknLFxuICAgICdzcXJ0KDJ4KzJ4KScsXG4gICAgJ3NxcnQoeF4yKScsXG4gICAgJ3NxcnQoKCh4KzEpXjIpIC0gKCh4KzEpXjIpICsgeF4yKScsXG4gICk7XG5cbiAgYXNzZXJ0Tm90RXF1YWwoJ2V2YWx1YXRlcyBzaW1wbGUgdmFyaWFibGUgZXhwcmVzc2lvbnMgY29ycmVjdGx5IDInKShcbiAgICAneF4zICsgNHggKyA0JyxcbiAgICAnKHggKyAyKV4yJyxcbiAgICAneF4yICsgNCh4KzIpJyxcbiAgICAnKHggKyAyKV4yJyxcbiAgKTtcblxuICBpdCgnY29ycmVjdGx5IGNvbnN1bWVzIGFsbG93RGVjaW1hbHMgb3B0aW9uJywgKCkgPT4ge1xuICAgIGV4cGVjdChhcmVWYWx1ZXNFcXVhbCgnMTIzJywgJzEyMycsIHsgYWxsb3dEZWNpbWFsczogdHJ1ZSB9KSkudG9FcXVhbCh0cnVlKTtcbiAgICBleHBlY3QoYXJlVmFsdWVzRXF1YWwoJzEyMycsICcxMjMuMCcsIHsgYWxsb3dEZWNpbWFsczogdHJ1ZSB9KSkudG9FcXVhbCh0cnVlKTtcbiAgICBleHBlY3QoYXJlVmFsdWVzRXF1YWwoJzEyMywwJywgJzEyMy4wJywgeyBhbGxvd0RlY2ltYWxzOiB0cnVlIH0pKS50b0VxdWFsKHRydWUpO1xuICAgIGV4cGVjdChhcmVWYWx1ZXNFcXVhbCgnMTIzLDAnLCAnMTIzLjAnLCB7IGFsbG93RGVjaW1hbHM6IGZhbHNlIH0pKS50b0VxdWFsKGZhbHNlKTtcbiAgICBleHBlY3QoYXJlVmFsdWVzRXF1YWwoJzEyMycsICcxMjMuMCcsIHsgYWxsb3dEZWNpbWFsczogZmFsc2UgfSkpLnRvRXF1YWwoZmFsc2UpO1xuICAgIGV4cGVjdChhcmVWYWx1ZXNFcXVhbCgnMTIzJywgJzEyMywwJywgeyBhbGxvd0RlY2ltYWxzOiBmYWxzZSB9KSkudG9FcXVhbChmYWxzZSk7XG4gIH0pO1xuXG4gIGl0KCdjb3JyZWN0bHkgY29uc3VtZXMgYWxsb3dEZWNpbWFscyBvcHRpb24gZm9yIGNvbXBsZXggZXhhbXBsZXMgdG9vJywgKCkgPT4ge1xuICAgIGV4cGVjdChhcmVWYWx1ZXNFcXVhbCgnMTUwMDAwMCcsICcxNTAwMDAwJywgeyBhbGxvd0RlY2ltYWxzOiB0cnVlIH0pKS50b0VxdWFsKHRydWUpO1xuICAgIGV4cGVjdChhcmVWYWx1ZXNFcXVhbCgnMSw1MDAsMDAwJywgJzEsNTAwLDAwMCcsIHsgYWxsb3dEZWNpbWFsczogdHJ1ZSB9KSkudG9FcXVhbCh0cnVlKTtcbiAgICBleHBlY3QoYXJlVmFsdWVzRXF1YWwoJzE1MDAwMDAnLCAnMSw1MDAsMDAwJywgeyBhbGxvd0RlY2ltYWxzOiB0cnVlIH0pKS50b0VxdWFsKHRydWUpO1xuICAgIGV4cGVjdChhcmVWYWx1ZXNFcXVhbCgnMTUwMDAwMCcsICcxLDUwMCwwMDAuMDAnLCB7IGFsbG93RGVjaW1hbHM6IHRydWUgfSkpLnRvRXF1YWwodHJ1ZSk7XG4gICAgZXhwZWN0KGFyZVZhbHVlc0VxdWFsKCcxNTAwMDAwJywgJzEsNTAwLDAwMC4wJywgeyBhbGxvd0RlY2ltYWxzOiB0cnVlIH0pKS50b0VxdWFsKHRydWUpO1xuICAgIGV4cGVjdChhcmVWYWx1ZXNFcXVhbCgnMSw1MDAsMDAwLjAnLCAnMSw1MDAsMDAwLjAwJywgeyBhbGxvd0RlY2ltYWxzOiB0cnVlIH0pKS50b0VxdWFsKHRydWUpO1xuICAgIGV4cGVjdChhcmVWYWx1ZXNFcXVhbCgnMTUwMDAwMCcsICcxLDUwMDAwMCcsIHsgYWxsb3dEZWNpbWFsczogdHJ1ZSB9KSkudG9FcXVhbChmYWxzZSk7XG4gICAgZXhwZWN0KGFyZVZhbHVlc0VxdWFsKCcxNTAwMDAwJywgJzE1MDAsMDAwJywgeyBhbGxvd0RlY2ltYWxzOiB0cnVlIH0pKS50b0VxdWFsKGZhbHNlKTtcbiAgICBleHBlY3QoYXJlVmFsdWVzRXF1YWwoJzE1MDAwMDAnLCAnMSw1MDAsMDAwLjAxJywgeyBhbGxvd0RlY2ltYWxzOiB0cnVlIH0pKS50b0VxdWFsKGZhbHNlKTtcbiAgICBleHBlY3QoYXJlVmFsdWVzRXF1YWwoJzE1MDAwMDAnLCAnMSw1MDAsMDAsMCcsIHsgYWxsb3dEZWNpbWFsczogdHJ1ZSB9KSkudG9FcXVhbChmYWxzZSk7XG4gICAgZXhwZWN0KGFyZVZhbHVlc0VxdWFsKCcxNTAwMDAwJywgJzE1MDAsMDAwJywgeyBhbGxvd0RlY2ltYWxzOiB0cnVlIH0pKS50b0VxdWFsKGZhbHNlKTtcbiAgICBleHBlY3QoYXJlVmFsdWVzRXF1YWwoJzE1MDAwMDAnLCAnLDE1MDAsMDAwJywgeyBhbGxvd0RlY2ltYWxzOiB0cnVlIH0pKS50b0VxdWFsKGZhbHNlKTtcbiAgfSk7XG5cbiAgaXQoJ2V2YWx1YXRlcyBzaW1wbGUgdHJpZ28gZXhwcmVzc2lvbnMgY29ycmVjdGx5JywgKCkgPT4ge1xuICAgIGV4cGVjdChhcmVWYWx1ZXNFcXVhbCgnc2luKHgpJywgJ3Npbih4KScpKS50b0VxdWFsKHRydWUpO1xuICAgIGV4cGVjdChhcmVWYWx1ZXNFcXVhbCgndGFuKHgpJywgJ3Rhbih4KScpKS50b0VxdWFsKHRydWUpO1xuICB9KTtcblxuICBpdCgnY29ycmVjdGx5IGNyZWF0ZXMgbWF0aCBleHByZXNzaW9ucyAxJywgKCkgPT4ge1xuICAgIGV4cGVjdChcbiAgICAgIGFyZVZhbHVlc0VxdWFsKCdmXnstMX1cXFxcbGVmdCh4XFxcXHJpZ2h0KT1cXFxcc3FydHt4LTF9KzMnLCAnZl57LTF9XFxcXGxlZnQoeFxcXFxyaWdodCk9XFxcXHNxcnR7eC0xfSszJywge1xuICAgICAgICBhbGxvd0RlY2ltYWxzOiB0cnVlLFxuICAgICAgICBpc0xhdGV4OiB0cnVlLFxuICAgICAgfSksXG4gICAgKS50b0VxdWFsKHRydWUpO1xuICB9KTtcblxuICBpdCgnY29ycmVjdGx5IGNyZWF0ZXMgbWF0aCBleHByZXNzaW9ucyAyJywgKCkgPT4ge1xuICAgIGV4cGVjdChcbiAgICAgIGFyZVZhbHVlc0VxdWFsKCc3MlxcXFxkaXYxMj02XFxcXHRleHR7ZWdnc30nLCAnNzJcXFxcZGl2MTI9NlxcXFx0ZXh0e2VnZ3N9Jywge1xuICAgICAgICBhbGxvd0RlY2ltYWxzOiB0cnVlLFxuICAgICAgICBpc0xhdGV4OiB0cnVlLFxuICAgICAgfSksXG4gICAgKS50b0VxdWFsKHRydWUpO1xuICB9KTtcblxuICBkZXNjcmliZSgnUEQtMycsICgpID0+IHtcbiAgICBpdC5lYWNoYFxuICAgICAgYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYlxuICAgICAgJHsnXFxcXGxlZnQoeFxcXFxyaWdodCleeyBcXFxcZnJhY3sxfXtcXFxcbGVmdCh5ICsgM1xcXFxyaWdodCl9fSd9ICAgICAgICB8ICR7J1xcXFxzcXJ0W1xcXFxsZWZ0KHkgKyAzXFxcXHJpZ2h0KV17eH0nfVxuICAgICAgJHsnXFxcXGxlZnQoeFxcXFxyaWdodClee1xcXFxmcmFjezF9ezN9fSd9ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJHsnXFxcXHNxcnRbM117eH0nfVxuICAgICAgJHsnXFxcXGxlZnQoeFxcXFxyaWdodClee1xcXFxmcmFjezF9e259fSd9ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJHsnXFxcXHNxcnRbbl17eH0nfVxuICAgICAgJHsnXFxcXGxlZnQoeFxcXFxyaWdodClee1xcXFxmcmFjezF9ezJ9fSd9ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJHsnXFxcXHNxcnR7eH0nfVxuICAgICAgJHsnXFxcXGxlZnQoeC0xXFxcXHJpZ2h0KV57XFxcXGZyYWN7MX17Mn19KzMnfSAgICAgICAgICAgICAgICAgICAgICAgIHwgJHsnXFxcXHNxcnR7eC0xfSszJ31cbiAgICAgICR7J2Zeey0xfVxcXFxsZWZ0KHhcXFxccmlnaHQpPVxcXFxsZWZ0KHgtMVxcXFxyaWdodClee1xcXFxmcmFjezF9ezJ9fSszJ31cbiAgICAgICR7J2Zeey0xfVxcXFxsZWZ0KHhcXFxccmlnaHQpPVxcXFxzcXJ0e3gtMX0rMyd9XG4gICAgYCgnJGEgPT0gJGInLCAoeyBhLCBiIH0pID0+IHtcbiAgICAgIGNvbnN0IG9wdHMgPSB7IGFsbG93RGVjaW1hbHM6IHRydWUsIGlzTGF0ZXg6IHRydWUgfTtcbiAgICAgIGV4cGVjdChhcmVWYWx1ZXNFcXVhbChhLCBiLCBvcHRzKSkudG9CZVRydXRoeSgpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFBdUIsSUFBQUcsZUFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQTtBQUFBLFNBQUFOLHdCQUFBTyxDQUFBLEVBQUFDLENBQUEsNkJBQUFDLE9BQUEsTUFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBVCx1QkFBQSxZQUFBQSx3QkFBQU8sQ0FBQSxFQUFBQyxDQUFBLFNBQUFBLENBQUEsSUFBQUQsQ0FBQSxJQUFBQSxDQUFBLENBQUFLLFVBQUEsU0FBQUwsQ0FBQSxNQUFBTSxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxLQUFBQyxTQUFBLG1CQUFBVCxDQUFBLGlCQUFBQSxDQUFBLGdCQUFBVSxPQUFBLENBQUFWLENBQUEsMEJBQUFBLENBQUEsU0FBQVEsQ0FBQSxNQUFBRixDQUFBLEdBQUFMLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLFFBQUFHLENBQUEsQ0FBQUssR0FBQSxDQUFBWCxDQUFBLFVBQUFNLENBQUEsQ0FBQU0sR0FBQSxDQUFBWixDQUFBLEdBQUFNLENBQUEsQ0FBQU8sR0FBQSxDQUFBYixDQUFBLEVBQUFRLENBQUEsY0FBQU0sRUFBQSxJQUFBZCxDQUFBLGdCQUFBYyxFQUFBLE9BQUFDLGNBQUEs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
|
package/lib/index.js
CHANGED
|
@@ -153,4 +153,4 @@ var ave = exports.ave = function ave(a, b) {
|
|
|
153
153
|
return arm.equals(brm);
|
|
154
154
|
};
|
|
155
155
|
var _default = exports["default"] = areValuesEqual;
|
|
156
|
-
//# sourceMappingURL=index.js.map
|
|
156
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtYXRoanMiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfbWF0aEV4cHJlc3Npb25zIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWNpbWFsQ29tbWFSZWdleCIsImRlY2ltYWxSZWdleCIsImRlY2ltYWxXaXRoVGhvdXNhbmRTZXBhcmF0b3JOdW1iZXJSZWdleCIsInJhdGlvbmFsaXplQWxsUG9zc2libGVTdWJOb2RlcyIsImV4cHJlc3Npb24iLCJyYXRpb25hbGl6ZSIsInBhcnNlIiwidHJlZSIsInRyYW5zZm9ybWVkVHJlZSIsInRyYW5zZm9ybSIsIm5vZGUiLCJyYXRpb25hbGl6ZWROb2RlIiwiX3VudXNlZCIsInByZXBhcmVFeHByZXNzaW9uIiwic3RyaW5nIiwiaXNMYXRleCIsInJldHVyblZhbHVlIiwidHJpbSIsInJlcGxhY2UiLCJsYXRleFRvVGV4dCIsImNvbmNhdCIsInRleHRUb01hdGhUZXh0IiwidW5rbm93bkNvbW1hbmRzIiwidG9TdHJpbmciLCJsYXRleFRvQXN0T3B0cyIsIm1pc3NpbmdGYWN0b3IiLCJ0b2tlbiIsImNvbnNvbGUiLCJ3YXJuIiwidG9rZW5fdHlwZSIsInVua25vd25Db21tYW5kQmVoYXZpb3IiLCJhc3RUb1RleHRPcHRzIiwidW5pY29kZV9vcGVyYXRvcnMiLCJuZSIsIm9wZXJhbmRzIiwiam9pbiIsIl8iLCJleHBvcnRzIiwibGF0ZXgiLCJleHRyYU90cHMiLCJ1bmRlZmluZWQiLCJsYSIsIm1lIiwiY29udmVydGVycyIsImxhdGV4VG9Bc3RPYmoiLCJhdCIsImFzdFRvVGV4dE9iaiIsImFzdCIsImNvbnZlcnQiLCJ0ZXh0VG9Bc3RPYmoiLCJzaG91bGRSYXRpb25hbGl6ZUVudGlyZVRyZWUiLCJzaG91bGREb0l0IiwidHJhdmVyc2UiLCJ0eXBlIiwiZm4iLCJleHBvbmVudCIsImFyZ3MiLCJjb21waWxlIiwiZXZhbCIsImZ1bmN0aW9uUGFyYW1ldGVyIiwiX3VudXNlZDIiLCJjb250YWluc0RlY2ltYWwiLCJtYXRjaCIsIlNJTVBMSUZZX1JVTEVTIiwibCIsInNpbXBsaWZ5IiwidiIsInJ1bGVzIiwiYXJlVmFsdWVzRXF1YWwiLCJ2YWx1ZU9uZSIsInZhbHVlVHdvIiwib3B0aW9ucyIsImFsbG93RGVjaW1hbHMiLCJpbnZlcnNlIiwidmFsdWVPbmVUb1VzZSIsInZhbHVlVHdvVG9Vc2UiLCJ0ZXN0IiwicHJlcGFyZWRWYWx1ZU9uZSIsInByZXBhcmVkVmFsdWVUd28iLCJvbmUiLCJ0d28iLCJlcXVhbHMiLCJhdmUiLCJhIiwiYiIsImFtIiwiYm0iLCJhcm0iLCJicm0iLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5pbXBvcnQgKiBhcyBtYXRoanMgZnJvbSAnbWF0aGpzJztcbmltcG9ydCBtZSBmcm9tICdAcGllLWZyYW1ld29yay9tYXRoLWV4cHJlc3Npb25zJztcblxuY29uc3QgZGVjaW1hbENvbW1hUmVnZXggPSAvLC9nO1xuY29uc3QgZGVjaW1hbFJlZ2V4ID0gL1xcLnwsL2c7XG5jb25zdCBkZWNpbWFsV2l0aFRob3VzYW5kU2VwYXJhdG9yTnVtYmVyUmVnZXggPSAvXig/ITArXFwuMDApKD89LnsxLDl9KFxcLnwkKSkoPyEwKD8hXFwuKSlcXGR7MSwzfSgsXFxkezN9KSooXFwuXFxkKyk/JC87XG5cbmNvbnN0IHJhdGlvbmFsaXplQWxsUG9zc2libGVTdWJOb2RlcyA9IChleHByZXNzaW9uKSA9PiByYXRpb25hbGl6ZShtYXRoanMucGFyc2UoZXhwcmVzc2lvbikpO1xuY29uc3QgcmF0aW9uYWxpemUgPSAodHJlZSkgPT4ge1xuICBjb25zdCB0cmFuc2Zvcm1lZFRyZWUgPSB0cmVlLnRyYW5zZm9ybSgobm9kZSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByYXRpb25hbGl6ZWROb2RlID0gbWF0aGpzLnJhdGlvbmFsaXplKG5vZGUpO1xuICAgICAgcmV0dXJuIHJhdGlvbmFsaXplZE5vZGU7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gdHJhbnNmb3JtZWRUcmVlO1xufTtcblxuZnVuY3Rpb24gcHJlcGFyZUV4cHJlc3Npb24oc3RyaW5nLCBpc0xhdGV4KSB7XG4gIGxldCByZXR1cm5WYWx1ZSA9IHN0cmluZyA/IHN0cmluZy50cmltKCkgOiAnJztcblxuICByZXR1cm5WYWx1ZSA9IHJldHVyblZhbHVlLnJlcGxhY2UoZGVjaW1hbENvbW1hUmVnZXgsICcuJyk7XG5cbiAgcmV0dXJuVmFsdWUgPSBpc0xhdGV4XG4gICAgPyBsYXRleFRvVGV4dChgJHtyZXR1cm5WYWx1ZX1gKVxuICAgIDogdGV4dFRvTWF0aFRleHQoYCR7cmV0dXJuVmFsdWV9YCwgeyB1bmtub3duQ29tbWFuZHM6ICdwYXNzdGhyb3VnaCcgfSkudG9TdHJpbmcoKTtcblxuICByZXR1cm5WYWx1ZSA9IHJldHVyblZhbHVlLnJlcGxhY2UoJz0nLCAnPT0nKTtcbiAgcmV0dXJuIHJhdGlvbmFsaXplQWxsUG9zc2libGVTdWJOb2RlcyhyZXR1cm5WYWx1ZSk7XG59XG5cbmNvbnN0IGxhdGV4VG9Bc3RPcHRzID0ge1xuICBtaXNzaW5nRmFjdG9yOiAodG9rZW4sIGUpID0+IHtcbiAgICBjb25zb2xlLndhcm4oJ21pc3NpbmcgZmFjdG9yIGZvcjogJywgdG9rZW4udG9rZW5fdHlwZSk7XG4gICAgaWYgKHRva2VuLnRva2VuX3R5cGUgPT09ICdOVU1CRVInKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfSxcbiAgdW5rbm93bkNvbW1hbmRCZWhhdmlvcjogJ3Bhc3N0aHJvdWdoJyxcbn07XG5cbmNvbnN0IGFzdFRvVGV4dE9wdHMgPSB7XG4gIHVuaWNvZGVfb3BlcmF0b3JzOiB7XG4gICAgbmU6IGZ1bmN0aW9uKG9wZXJhbmRzKSB7XG4gICAgICByZXR1cm4gb3BlcmFuZHMuam9pbignICE9ICcpO1xuICAgIH0sXG4gICAgJyUnOiBmdW5jdGlvbihvcGVyYW5kcykge1xuICAgICAgcmV0dXJuIGBwZXJjZW50KCR7b3BlcmFuZHNbMF19KWA7XG4gICAgfSxcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBsYXRleFRvVGV4dCA9IChsYXRleCwgZXh0cmFPdHBzID0ge30pID0+IHtcbiAgY29uc3QgbGEgPSBuZXcgbWUuY29udmVydGVycy5sYXRleFRvQXN0T2JqKHsgLi4ubGF0ZXhUb0FzdE9wdHMsIC4uLmV4dHJhT3RwcyB9KTtcblxuICBjb25zdCBhdCA9IG5ldyBtZS5jb252ZXJ0ZXJzLmFzdFRvVGV4dE9iaih7IC4uLmFzdFRvVGV4dE9wdHMsIC4uLmV4dHJhT3RwcyB9KTtcblxuICBjb25zdCBhc3QgPSBsYS5jb252ZXJ0KGxhdGV4KTtcblxuICByZXR1cm4gYXQuY29udmVydChhc3QpO1xufTtcblxuZXhwb3J0IGNvbnN0IHRleHRUb01hdGhUZXh0ID0gKGxhdGV4LCBleHRyYU90cHMgPSB7fSkgPT4ge1xuICBjb25zdCBsYSA9IG5ldyBtZS5jb252ZXJ0ZXJzLnRleHRUb0FzdE9iaih7IC4uLmxhdGV4VG9Bc3RPcHRzLCAuLi5leHRyYU90cHMgfSk7XG5cbiAgY29uc3QgYXQgPSBuZXcgbWUuY29udmVydGVycy5hc3RUb1RleHRPYmooeyAuLi5hc3RUb1RleHRPcHRzLCAuLi5leHRyYU90cHMgfSk7XG5cbiAgY29uc3QgYXN0ID0gbGEuY29udmVydChsYXRleCk7XG5cbiAgcmV0dXJuIGF0LmNvbnZlcnQoYXN0KTtcbn07XG5cbmZ1bmN0aW9uIHNob3VsZFJhdGlvbmFsaXplRW50aXJlVHJlZSh0cmVlKSB7XG4gIGxldCBzaG91bGREb0l0ID0gdHJ1ZTtcblxuICAvLyB3ZSBuZWVkIHRvIGl0ZXJhdGUgdGhlIGVudGlyZSB0cmVlIHRvIGNoZWNrIGZvciBzb21lIGNvbmRpdGlvbnMgdGhhdCBtaWdodCBtYWtlIHJhdGlvbmFsaXphdGlvbiBpbXBvc3NpYmxlXG4gIHRyeSB7XG4gICAgdHJlZS50cmF2ZXJzZSgobm9kZSkgPT4ge1xuICAgICAgLy8gaWYgd2UgaGF2ZSBhIHZhcmlhYmxlIGFzIGFuIGV4cG9uZW50IGZvciBwb3dlciBvcGVyYXRpb24sIHdlIHNob3VsZCBub3QgcmF0aW9uYWxpemVcbiAgICAgIC8vIHRyeSB0byBzZWUgaWYgdGhlcmUgYXJlIHBvd2VyIG9wZXJhdGlvbnMgd2l0aCB2YXJpYWJsZSBleHBvbmVudHNcbiAgICAgIGlmIChub2RlLnR5cGUgPT09ICdPcGVyYXRvck5vZGUnICYmIG5vZGUuZm4gPT09ICdwb3cnKSB7XG4gICAgICAgIGNvbnN0IGV4cG9uZW50ID0gbm9kZS5hcmdzWzFdO1xuXG4gICAgICAgIC8vIHRyeSB0byBzZWUgaWYgaXQgY2FuIGJlIGNvbXBpbGVkIGFuZCBldmFsdWF0ZWQgLSBpZiBpdCdzIGEgbm9uLW51bWVyaWNhbCB2YWx1ZSwgaXQnbGwgdGhyb3cgYW4gZXJyb3JcbiAgICAgICAgZXhwb25lbnQuY29tcGlsZSgpLmV2YWwoKTtcbiAgICAgIH1cblxuICAgICAgLy8gd2UgY2Fubm90IGhhdmUgdmFyaWFibGVzIGZvciB1bnJlc29sdmVkIGZ1bmN0aW9uIGNhbGxzIGVpdGhlclxuICAgICAgaWYgKG5vZGUudHlwZSA9PT0gJ0Z1bmN0aW9uTm9kZScpIHtcbiAgICAgICAgLy90cnkgdG8gc2VlIGlmIHRoZSBhcmd1bWVudCB0aGF0IHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBjYW4gYmUgcmVzb2x2ZWQgYXMgbm9uLXZhcmlhYmxlXG4gICAgICAgIGNvbnN0IGZ1bmN0aW9uUGFyYW1ldGVyID0gbm9kZS5hcmdzWzBdO1xuXG4gICAgICAgIC8vIGlmIGl0IGhvbGRzIHZhcmlhYmxlcywgdGhpcyB3aWxsIHRocm93IGFuIGVycm9yXG4gICAgICAgIGZ1bmN0aW9uUGFyYW1ldGVyLmNvbXBpbGUoKS5ldmFsKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBtYXRoanMucmF0aW9uYWxpemUodHJlZSk7XG4gIH0gY2F0Y2gge1xuICAgIHNob3VsZERvSXQgPSBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBzaG91bGREb0l0O1xufVxuXG5mdW5jdGlvbiBjb250YWluc0RlY2ltYWwoZXhwcmVzc2lvbiA9ICcnKSB7XG4gIHJldHVybiBleHByZXNzaW9uLm1hdGNoKGRlY2ltYWxSZWdleCk7XG59XG5jb25zdCBTSU1QTElGWV9SVUxFUyA9IFtcbiAgeyBsOiAnbjFeKDEvbjIpJywgcjogJ250aFJvb3QobjEsIG4yKScgfSxcbiAgeyBsOiAnc3FydChuMSknLCByOiAnbnRoUm9vdChuMSwgMiknIH0sXG5dO1xuXG5jb25zdCBzaW1wbGlmeSA9ICh2KSA9PiBtYXRoanMuc2ltcGxpZnkodiwgU0lNUExJRllfUlVMRVMuY29uY2F0KG1hdGhqcy5zaW1wbGlmeS5ydWxlcykpOyAvLy5jb25jYXQoU0lNUExJRllfUlVMRVMpKTtcblxuY29uc3QgYXJlVmFsdWVzRXF1YWwgPSAodmFsdWVPbmUsIHZhbHVlVHdvLCBvcHRpb25zID0ge30pID0+IHtcbiAgY29uc3Qge1xuICAgIC8vIGlmIGV4cGxpY2l0bHkgc2V0IHRvIGZhbHNlLCBoYXZpbmcgYSBkZWNpbWFsIHZhbHVlIGluIGVpdGhlciBzaWRlIHdpbGwgcmVzdWx0IGluIGEgZmFsc2UgZXF1YWxpdHlcbiAgICAvLyByZWdhcmRsZXNzIG9mIG1hdGhlbWF0aWNhbCBjb3JyZWN0bmVzc1xuICAgIGFsbG93RGVjaW1hbHMsXG4gICAgaXNMYXRleCwgLy8gaWYgdGhlIHBhc3NlZCBpbiB2YWx1ZXMgYXJlIGxhdGV4LCB0aGV5IG5lZWQgdG8gYmUgZXNjYXBlZFxuICAgIGludmVyc2UsIC8vIHJldHVybnMgaW52ZXJzZSBmb3IgdGhlIGNvbXBhcmlzb24gcmVzdWx0XG4gIH0gPSBvcHRpb25zO1xuXG4gIGxldCB2YWx1ZU9uZVRvVXNlID0gdmFsdWVPbmU7XG4gIGxldCB2YWx1ZVR3b1RvVXNlID0gdmFsdWVUd287XG5cbiAgaWYgKGFsbG93RGVjaW1hbHMgPT09IGZhbHNlKSB7XG4gICAgaWYgKGNvbnRhaW5zRGVjaW1hbCh2YWx1ZU9uZSkgfHwgY29udGFpbnNEZWNpbWFsKHZhbHVlVHdvKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSBlbHNlIGlmIChhbGxvd0RlY2ltYWxzID09PSB0cnVlKSB7XG4gICAgaWYgKGNvbnRhaW5zRGVjaW1hbCh2YWx1ZU9uZSkgJiYgZGVjaW1hbFdpdGhUaG91c2FuZFNlcGFyYXRvck51bWJlclJlZ2V4LnRlc3QodmFsdWVPbmUpKSB7XG4gICAgICB2YWx1ZU9uZVRvVXNlID0gdmFsdWVPbmUucmVwbGFjZShkZWNpbWFsQ29tbWFSZWdleCwgJycpO1xuICAgIH1cblxuICAgIGlmIChjb250YWluc0RlY2ltYWwodmFsdWVUd28pICYmIGRlY2ltYWxXaXRoVGhvdXNhbmRTZXBhcmF0b3JOdW1iZXJSZWdleC50ZXN0KHZhbHVlVHdvKSkge1xuICAgICAgdmFsdWVUd29Ub1VzZSA9IHZhbHVlVHdvLnJlcGxhY2UoZGVjaW1hbENvbW1hUmVnZXgsICcnKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBwcmVwYXJlZFZhbHVlT25lID0gcHJlcGFyZUV4cHJlc3Npb24odmFsdWVPbmVUb1VzZSwgaXNMYXRleCwgYWxsb3dEZWNpbWFscyk7XG4gIGNvbnN0IHByZXBhcmVkVmFsdWVUd28gPSBwcmVwYXJlRXhwcmVzc2lvbih2YWx1ZVR3b1RvVXNlLCBpc0xhdGV4LCBhbGxvd0RlY2ltYWxzKTtcblxuICBsZXQgb25lID0gc2hvdWxkUmF0aW9uYWxpemVFbnRpcmVUcmVlKHByZXBhcmVkVmFsdWVPbmUpID8gbWF0aGpzLnJhdGlvbmFsaXplKHByZXBhcmVkVmFsdWVPbmUpIDogcHJlcGFyZWRWYWx1ZU9uZTtcbiAgbGV0IHR3byA9IHNob3VsZFJhdGlvbmFsaXplRW50aXJlVHJlZShwcmVwYXJlZFZhbHVlVHdvKSA/IG1hdGhqcy5yYXRpb25hbGl6ZShwcmVwYXJlZFZhbHVlVHdvKSA6IHByZXBhcmVkVmFsdWVUd287XG5cbiAgb25lID0gc2ltcGxpZnkob25lKTtcbiAgdHdvID0gc2ltcGxpZnkodHdvKTtcblxuICBjb25zdCBlcXVhbHMgPSBvbmUuZXF1YWxzKHR3byk7XG5cbiAgcmV0dXJuIGludmVyc2UgPyAhZXF1YWxzIDogZXF1YWxzO1xufTtcblxuZXhwb3J0IGNvbnN0IGF2ZSA9IChhLCBiKSA9PiB7XG4gIGNvbnN0IGFtID0gbWF0aGpzLnBhcnNlKGEpO1xuICBjb25zdCBibSA9IG1hdGhqcy5wYXJzZShiKTtcblxuICBjb25zdCBhcm0gPSBzaW1wbGlmeShhbSk7XG4gIGNvbnN0IGJybSA9IHNpbXBsaWZ5KGJtKTtcbiAgcmV0dXJuIGFybS5lcXVhbHMoYnJtKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGFyZVZhbHVlc0VxdWFsO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxnQkFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQWlELFNBQUFELHdCQUFBSSxDQUFBLEVBQUFDLENBQUEsNkJBQUFDLE9BQUEsTUFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBTix1QkFBQSxZ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
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "3.
|
|
6
|
+
"version": "3.1.0-next.0",
|
|
7
7
|
"description": "Math evaluator tool for comparing expressions for equality",
|
|
8
8
|
"keywords": [
|
|
9
9
|
"math",
|
|
@@ -23,16 +23,8 @@
|
|
|
23
23
|
"mathjs": "^7.0.1"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
|
-
"@pie-lib/test-utils": "
|
|
26
|
+
"@pie-lib/test-utils": "1.1.0-next.0"
|
|
27
27
|
},
|
|
28
28
|
"scripts": {},
|
|
29
|
-
"gitHead": "
|
|
30
|
-
"exports": {
|
|
31
|
-
".": {
|
|
32
|
-
"require": "./lib/index.js",
|
|
33
|
-
"import": "./src/index.js",
|
|
34
|
-
"default": "./lib/index.js"
|
|
35
|
-
},
|
|
36
|
-
"./esm": "./esm/index.js"
|
|
37
|
-
}
|
|
29
|
+
"gitHead": "f712381d2cb985998863c1aed041ec05ee7b0249"
|
|
38
30
|
}
|