@teselagen/range-utils 0.3.8 → 0.3.10
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/index.cjs +2619 -0
- package/index.d.ts +52 -51
- package/index.js +1560 -6017
- package/index.umd.cjs +2623 -0
- package/package.json +3 -2
- package/src/adjustRangeToInsert.js +1 -1
- package/src/adjustRangeToRotation.js +2 -2
- package/src/convertRangeIndices.js +5 -5
- package/src/expandOrContractCircularRangeToPosition.js +1 -1
- package/src/expandOrContractNonCircularRangeToPosition.js +1 -1
- package/src/expandOrContractRangeByLength.js +1 -1
- package/src/getOverlapsOfPotentiallyCircularRanges.js +1 -1
- package/src/index.js +1 -0
- package/src/isRangeOrPositionWithinRange.js +1 -1
- package/src/modulateRangeBySequenceLength.js +1 -1
- package/src/normalizeRange.js +1 -1
- package/src/provideInclusiveOptions.js +1 -1
- package/src/translateRange.js +1 -1
- package/src/trimAnnStartEndToFitSeqLength.js +9 -0
- package/src/trimAnnStartEndToFitSeqLength.test.js +35 -0
- package/src/trimRangeByAnotherRange.js +1 -1
- package/trimAnnStartEndToFitSeqLength.d.ts +1 -0
- package/trimAnnStartEndToFitSeqLength.test.d.ts +1 -0
- package/index.mjs +0 -7076
- package/index.umd.js +0 -7080
package/index.cjs
ADDED
@@ -0,0 +1,2619 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __defProp = Object.defineProperty;
|
3
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
4
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
5
|
+
function splitRangeIntoTwoPartsIfItIsCircular(range, sequenceLength) {
|
6
|
+
if (sequenceLength !== 0) {
|
7
|
+
sequenceLength = sequenceLength || Infinity;
|
8
|
+
}
|
9
|
+
const ranges = [];
|
10
|
+
if (range.start > range.end) {
|
11
|
+
ranges.push({
|
12
|
+
start: 0,
|
13
|
+
end: range.end,
|
14
|
+
type: "end"
|
15
|
+
});
|
16
|
+
ranges.push({
|
17
|
+
start: range.start,
|
18
|
+
end: sequenceLength - 1,
|
19
|
+
type: "beginning"
|
20
|
+
});
|
21
|
+
} else {
|
22
|
+
ranges.push({
|
23
|
+
start: range.start,
|
24
|
+
end: range.end,
|
25
|
+
type: "beginningAndEnd"
|
26
|
+
});
|
27
|
+
}
|
28
|
+
return ranges;
|
29
|
+
}
|
30
|
+
__name(splitRangeIntoTwoPartsIfItIsCircular, "splitRangeIntoTwoPartsIfItIsCircular");
|
31
|
+
var freeGlobal = typeof global == "object" && global && global.Object === Object && global;
|
32
|
+
var freeSelf = typeof self == "object" && self && self.Object === Object && self;
|
33
|
+
var root = freeGlobal || freeSelf || Function("return this")();
|
34
|
+
var Symbol$1 = root.Symbol;
|
35
|
+
var objectProto$f = Object.prototype;
|
36
|
+
var hasOwnProperty$c = objectProto$f.hasOwnProperty;
|
37
|
+
var nativeObjectToString$1 = objectProto$f.toString;
|
38
|
+
var symToStringTag$1 = Symbol$1 ? Symbol$1.toStringTag : void 0;
|
39
|
+
function getRawTag(value) {
|
40
|
+
var isOwn = hasOwnProperty$c.call(value, symToStringTag$1), tag = value[symToStringTag$1];
|
41
|
+
try {
|
42
|
+
value[symToStringTag$1] = void 0;
|
43
|
+
var unmasked = true;
|
44
|
+
} catch (e) {
|
45
|
+
}
|
46
|
+
var result = nativeObjectToString$1.call(value);
|
47
|
+
if (unmasked) {
|
48
|
+
if (isOwn) {
|
49
|
+
value[symToStringTag$1] = tag;
|
50
|
+
} else {
|
51
|
+
delete value[symToStringTag$1];
|
52
|
+
}
|
53
|
+
}
|
54
|
+
return result;
|
55
|
+
}
|
56
|
+
__name(getRawTag, "getRawTag");
|
57
|
+
var objectProto$e = Object.prototype;
|
58
|
+
var nativeObjectToString = objectProto$e.toString;
|
59
|
+
function objectToString(value) {
|
60
|
+
return nativeObjectToString.call(value);
|
61
|
+
}
|
62
|
+
__name(objectToString, "objectToString");
|
63
|
+
var nullTag = "[object Null]", undefinedTag = "[object Undefined]";
|
64
|
+
var symToStringTag = Symbol$1 ? Symbol$1.toStringTag : void 0;
|
65
|
+
function baseGetTag(value) {
|
66
|
+
if (value == null) {
|
67
|
+
return value === void 0 ? undefinedTag : nullTag;
|
68
|
+
}
|
69
|
+
return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);
|
70
|
+
}
|
71
|
+
__name(baseGetTag, "baseGetTag");
|
72
|
+
function isObjectLike(value) {
|
73
|
+
return value != null && typeof value == "object";
|
74
|
+
}
|
75
|
+
__name(isObjectLike, "isObjectLike");
|
76
|
+
var symbolTag$3 = "[object Symbol]";
|
77
|
+
function isSymbol(value) {
|
78
|
+
return typeof value == "symbol" || isObjectLike(value) && baseGetTag(value) == symbolTag$3;
|
79
|
+
}
|
80
|
+
__name(isSymbol, "isSymbol");
|
81
|
+
function arrayMap(array, iteratee) {
|
82
|
+
var index = -1, length = array == null ? 0 : array.length, result = Array(length);
|
83
|
+
while (++index < length) {
|
84
|
+
result[index] = iteratee(array[index], index, array);
|
85
|
+
}
|
86
|
+
return result;
|
87
|
+
}
|
88
|
+
__name(arrayMap, "arrayMap");
|
89
|
+
var isArray = Array.isArray;
|
90
|
+
var INFINITY$1 = 1 / 0;
|
91
|
+
var symbolProto$2 = Symbol$1 ? Symbol$1.prototype : void 0, symbolToString = symbolProto$2 ? symbolProto$2.toString : void 0;
|
92
|
+
function baseToString(value) {
|
93
|
+
if (typeof value == "string") {
|
94
|
+
return value;
|
95
|
+
}
|
96
|
+
if (isArray(value)) {
|
97
|
+
return arrayMap(value, baseToString) + "";
|
98
|
+
}
|
99
|
+
if (isSymbol(value)) {
|
100
|
+
return symbolToString ? symbolToString.call(value) : "";
|
101
|
+
}
|
102
|
+
var result = value + "";
|
103
|
+
return result == "0" && 1 / value == -INFINITY$1 ? "-0" : result;
|
104
|
+
}
|
105
|
+
__name(baseToString, "baseToString");
|
106
|
+
function isObject(value) {
|
107
|
+
var type = typeof value;
|
108
|
+
return value != null && (type == "object" || type == "function");
|
109
|
+
}
|
110
|
+
__name(isObject, "isObject");
|
111
|
+
function identity(value) {
|
112
|
+
return value;
|
113
|
+
}
|
114
|
+
__name(identity, "identity");
|
115
|
+
var asyncTag = "[object AsyncFunction]", funcTag$2 = "[object Function]", genTag$1 = "[object GeneratorFunction]", proxyTag = "[object Proxy]";
|
116
|
+
function isFunction(value) {
|
117
|
+
if (!isObject(value)) {
|
118
|
+
return false;
|
119
|
+
}
|
120
|
+
var tag = baseGetTag(value);
|
121
|
+
return tag == funcTag$2 || tag == genTag$1 || tag == asyncTag || tag == proxyTag;
|
122
|
+
}
|
123
|
+
__name(isFunction, "isFunction");
|
124
|
+
var coreJsData = root["__core-js_shared__"];
|
125
|
+
var maskSrcKey = function() {
|
126
|
+
var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || "");
|
127
|
+
return uid ? "Symbol(src)_1." + uid : "";
|
128
|
+
}();
|
129
|
+
function isMasked(func) {
|
130
|
+
return !!maskSrcKey && maskSrcKey in func;
|
131
|
+
}
|
132
|
+
__name(isMasked, "isMasked");
|
133
|
+
var funcProto$1 = Function.prototype;
|
134
|
+
var funcToString$1 = funcProto$1.toString;
|
135
|
+
function toSource(func) {
|
136
|
+
if (func != null) {
|
137
|
+
try {
|
138
|
+
return funcToString$1.call(func);
|
139
|
+
} catch (e) {
|
140
|
+
}
|
141
|
+
try {
|
142
|
+
return func + "";
|
143
|
+
} catch (e) {
|
144
|
+
}
|
145
|
+
}
|
146
|
+
return "";
|
147
|
+
}
|
148
|
+
__name(toSource, "toSource");
|
149
|
+
var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
|
150
|
+
var reIsHostCtor = /^\[object .+?Constructor\]$/;
|
151
|
+
var funcProto = Function.prototype, objectProto$d = Object.prototype;
|
152
|
+
var funcToString = funcProto.toString;
|
153
|
+
var hasOwnProperty$b = objectProto$d.hasOwnProperty;
|
154
|
+
var reIsNative = RegExp(
|
155
|
+
"^" + funcToString.call(hasOwnProperty$b).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"
|
156
|
+
);
|
157
|
+
function baseIsNative(value) {
|
158
|
+
if (!isObject(value) || isMasked(value)) {
|
159
|
+
return false;
|
160
|
+
}
|
161
|
+
var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
|
162
|
+
return pattern.test(toSource(value));
|
163
|
+
}
|
164
|
+
__name(baseIsNative, "baseIsNative");
|
165
|
+
function getValue(object, key) {
|
166
|
+
return object == null ? void 0 : object[key];
|
167
|
+
}
|
168
|
+
__name(getValue, "getValue");
|
169
|
+
function getNative(object, key) {
|
170
|
+
var value = getValue(object, key);
|
171
|
+
return baseIsNative(value) ? value : void 0;
|
172
|
+
}
|
173
|
+
__name(getNative, "getNative");
|
174
|
+
var WeakMap = getNative(root, "WeakMap");
|
175
|
+
var objectCreate = Object.create;
|
176
|
+
var baseCreate = /* @__PURE__ */ function() {
|
177
|
+
function object() {
|
178
|
+
}
|
179
|
+
__name(object, "object");
|
180
|
+
return function(proto) {
|
181
|
+
if (!isObject(proto)) {
|
182
|
+
return {};
|
183
|
+
}
|
184
|
+
if (objectCreate) {
|
185
|
+
return objectCreate(proto);
|
186
|
+
}
|
187
|
+
object.prototype = proto;
|
188
|
+
var result = new object();
|
189
|
+
object.prototype = void 0;
|
190
|
+
return result;
|
191
|
+
};
|
192
|
+
}();
|
193
|
+
function apply(func, thisArg, args) {
|
194
|
+
switch (args.length) {
|
195
|
+
case 0:
|
196
|
+
return func.call(thisArg);
|
197
|
+
case 1:
|
198
|
+
return func.call(thisArg, args[0]);
|
199
|
+
case 2:
|
200
|
+
return func.call(thisArg, args[0], args[1]);
|
201
|
+
case 3:
|
202
|
+
return func.call(thisArg, args[0], args[1], args[2]);
|
203
|
+
}
|
204
|
+
return func.apply(thisArg, args);
|
205
|
+
}
|
206
|
+
__name(apply, "apply");
|
207
|
+
function copyArray(source, array) {
|
208
|
+
var index = -1, length = source.length;
|
209
|
+
array || (array = Array(length));
|
210
|
+
while (++index < length) {
|
211
|
+
array[index] = source[index];
|
212
|
+
}
|
213
|
+
return array;
|
214
|
+
}
|
215
|
+
__name(copyArray, "copyArray");
|
216
|
+
var HOT_COUNT = 800, HOT_SPAN = 16;
|
217
|
+
var nativeNow = Date.now;
|
218
|
+
function shortOut(func) {
|
219
|
+
var count = 0, lastCalled = 0;
|
220
|
+
return function() {
|
221
|
+
var stamp = nativeNow(), remaining = HOT_SPAN - (stamp - lastCalled);
|
222
|
+
lastCalled = stamp;
|
223
|
+
if (remaining > 0) {
|
224
|
+
if (++count >= HOT_COUNT) {
|
225
|
+
return arguments[0];
|
226
|
+
}
|
227
|
+
} else {
|
228
|
+
count = 0;
|
229
|
+
}
|
230
|
+
return func.apply(void 0, arguments);
|
231
|
+
};
|
232
|
+
}
|
233
|
+
__name(shortOut, "shortOut");
|
234
|
+
function constant(value) {
|
235
|
+
return function() {
|
236
|
+
return value;
|
237
|
+
};
|
238
|
+
}
|
239
|
+
__name(constant, "constant");
|
240
|
+
var defineProperty = function() {
|
241
|
+
try {
|
242
|
+
var func = getNative(Object, "defineProperty");
|
243
|
+
func({}, "", {});
|
244
|
+
return func;
|
245
|
+
} catch (e) {
|
246
|
+
}
|
247
|
+
}();
|
248
|
+
var baseSetToString = !defineProperty ? identity : function(func, string) {
|
249
|
+
return defineProperty(func, "toString", {
|
250
|
+
"configurable": true,
|
251
|
+
"enumerable": false,
|
252
|
+
"value": constant(string),
|
253
|
+
"writable": true
|
254
|
+
});
|
255
|
+
};
|
256
|
+
var setToString = shortOut(baseSetToString);
|
257
|
+
function arrayEach(array, iteratee) {
|
258
|
+
var index = -1, length = array == null ? 0 : array.length;
|
259
|
+
while (++index < length) {
|
260
|
+
if (iteratee(array[index], index, array) === false) {
|
261
|
+
break;
|
262
|
+
}
|
263
|
+
}
|
264
|
+
return array;
|
265
|
+
}
|
266
|
+
__name(arrayEach, "arrayEach");
|
267
|
+
var MAX_SAFE_INTEGER$1 = 9007199254740991;
|
268
|
+
var reIsUint = /^(?:0|[1-9]\d*)$/;
|
269
|
+
function isIndex(value, length) {
|
270
|
+
var type = typeof value;
|
271
|
+
length = length == null ? MAX_SAFE_INTEGER$1 : length;
|
272
|
+
return !!length && (type == "number" || type != "symbol" && reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length);
|
273
|
+
}
|
274
|
+
__name(isIndex, "isIndex");
|
275
|
+
function baseAssignValue(object, key, value) {
|
276
|
+
if (key == "__proto__" && defineProperty) {
|
277
|
+
defineProperty(object, key, {
|
278
|
+
"configurable": true,
|
279
|
+
"enumerable": true,
|
280
|
+
"value": value,
|
281
|
+
"writable": true
|
282
|
+
});
|
283
|
+
} else {
|
284
|
+
object[key] = value;
|
285
|
+
}
|
286
|
+
}
|
287
|
+
__name(baseAssignValue, "baseAssignValue");
|
288
|
+
function eq(value, other) {
|
289
|
+
return value === other || value !== value && other !== other;
|
290
|
+
}
|
291
|
+
__name(eq, "eq");
|
292
|
+
var objectProto$c = Object.prototype;
|
293
|
+
var hasOwnProperty$a = objectProto$c.hasOwnProperty;
|
294
|
+
function assignValue(object, key, value) {
|
295
|
+
var objValue = object[key];
|
296
|
+
if (!(hasOwnProperty$a.call(object, key) && eq(objValue, value)) || value === void 0 && !(key in object)) {
|
297
|
+
baseAssignValue(object, key, value);
|
298
|
+
}
|
299
|
+
}
|
300
|
+
__name(assignValue, "assignValue");
|
301
|
+
function copyObject(source, props, object, customizer) {
|
302
|
+
var isNew = !object;
|
303
|
+
object || (object = {});
|
304
|
+
var index = -1, length = props.length;
|
305
|
+
while (++index < length) {
|
306
|
+
var key = props[index];
|
307
|
+
var newValue = void 0;
|
308
|
+
if (newValue === void 0) {
|
309
|
+
newValue = source[key];
|
310
|
+
}
|
311
|
+
if (isNew) {
|
312
|
+
baseAssignValue(object, key, newValue);
|
313
|
+
} else {
|
314
|
+
assignValue(object, key, newValue);
|
315
|
+
}
|
316
|
+
}
|
317
|
+
return object;
|
318
|
+
}
|
319
|
+
__name(copyObject, "copyObject");
|
320
|
+
var nativeMax = Math.max;
|
321
|
+
function overRest(func, start, transform) {
|
322
|
+
start = nativeMax(start === void 0 ? func.length - 1 : start, 0);
|
323
|
+
return function() {
|
324
|
+
var args = arguments, index = -1, length = nativeMax(args.length - start, 0), array = Array(length);
|
325
|
+
while (++index < length) {
|
326
|
+
array[index] = args[start + index];
|
327
|
+
}
|
328
|
+
index = -1;
|
329
|
+
var otherArgs = Array(start + 1);
|
330
|
+
while (++index < start) {
|
331
|
+
otherArgs[index] = args[index];
|
332
|
+
}
|
333
|
+
otherArgs[start] = transform(array);
|
334
|
+
return apply(func, this, otherArgs);
|
335
|
+
};
|
336
|
+
}
|
337
|
+
__name(overRest, "overRest");
|
338
|
+
function baseRest(func, start) {
|
339
|
+
return setToString(overRest(func, start, identity), func + "");
|
340
|
+
}
|
341
|
+
__name(baseRest, "baseRest");
|
342
|
+
var MAX_SAFE_INTEGER = 9007199254740991;
|
343
|
+
function isLength(value) {
|
344
|
+
return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
|
345
|
+
}
|
346
|
+
__name(isLength, "isLength");
|
347
|
+
function isArrayLike(value) {
|
348
|
+
return value != null && isLength(value.length) && !isFunction(value);
|
349
|
+
}
|
350
|
+
__name(isArrayLike, "isArrayLike");
|
351
|
+
function isIterateeCall(value, index, object) {
|
352
|
+
if (!isObject(object)) {
|
353
|
+
return false;
|
354
|
+
}
|
355
|
+
var type = typeof index;
|
356
|
+
if (type == "number" ? isArrayLike(object) && isIndex(index, object.length) : type == "string" && index in object) {
|
357
|
+
return eq(object[index], value);
|
358
|
+
}
|
359
|
+
return false;
|
360
|
+
}
|
361
|
+
__name(isIterateeCall, "isIterateeCall");
|
362
|
+
function createAssigner(assigner) {
|
363
|
+
return baseRest(function(object, sources) {
|
364
|
+
var index = -1, length = sources.length, customizer = length > 1 ? sources[length - 1] : void 0, guard = length > 2 ? sources[2] : void 0;
|
365
|
+
customizer = assigner.length > 3 && typeof customizer == "function" ? (length--, customizer) : void 0;
|
366
|
+
if (guard && isIterateeCall(sources[0], sources[1], guard)) {
|
367
|
+
customizer = length < 3 ? void 0 : customizer;
|
368
|
+
length = 1;
|
369
|
+
}
|
370
|
+
object = Object(object);
|
371
|
+
while (++index < length) {
|
372
|
+
var source = sources[index];
|
373
|
+
if (source) {
|
374
|
+
assigner(object, source, index, customizer);
|
375
|
+
}
|
376
|
+
}
|
377
|
+
return object;
|
378
|
+
});
|
379
|
+
}
|
380
|
+
__name(createAssigner, "createAssigner");
|
381
|
+
var objectProto$b = Object.prototype;
|
382
|
+
function isPrototype(value) {
|
383
|
+
var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto$b;
|
384
|
+
return value === proto;
|
385
|
+
}
|
386
|
+
__name(isPrototype, "isPrototype");
|
387
|
+
function baseTimes(n, iteratee) {
|
388
|
+
var index = -1, result = Array(n);
|
389
|
+
while (++index < n) {
|
390
|
+
result[index] = iteratee(index);
|
391
|
+
}
|
392
|
+
return result;
|
393
|
+
}
|
394
|
+
__name(baseTimes, "baseTimes");
|
395
|
+
var argsTag$3 = "[object Arguments]";
|
396
|
+
function baseIsArguments(value) {
|
397
|
+
return isObjectLike(value) && baseGetTag(value) == argsTag$3;
|
398
|
+
}
|
399
|
+
__name(baseIsArguments, "baseIsArguments");
|
400
|
+
var objectProto$a = Object.prototype;
|
401
|
+
var hasOwnProperty$9 = objectProto$a.hasOwnProperty;
|
402
|
+
var propertyIsEnumerable$1 = objectProto$a.propertyIsEnumerable;
|
403
|
+
var isArguments = baseIsArguments(/* @__PURE__ */ function() {
|
404
|
+
return arguments;
|
405
|
+
}()) ? baseIsArguments : function(value) {
|
406
|
+
return isObjectLike(value) && hasOwnProperty$9.call(value, "callee") && !propertyIsEnumerable$1.call(value, "callee");
|
407
|
+
};
|
408
|
+
function stubFalse() {
|
409
|
+
return false;
|
410
|
+
}
|
411
|
+
__name(stubFalse, "stubFalse");
|
412
|
+
var freeExports$2 = typeof exports == "object" && exports && !exports.nodeType && exports;
|
413
|
+
var freeModule$2 = freeExports$2 && typeof module == "object" && module && !module.nodeType && module;
|
414
|
+
var moduleExports$2 = freeModule$2 && freeModule$2.exports === freeExports$2;
|
415
|
+
var Buffer$1 = moduleExports$2 ? root.Buffer : void 0;
|
416
|
+
var nativeIsBuffer = Buffer$1 ? Buffer$1.isBuffer : void 0;
|
417
|
+
var isBuffer = nativeIsBuffer || stubFalse;
|
418
|
+
var argsTag$2 = "[object Arguments]", arrayTag$2 = "[object Array]", boolTag$3 = "[object Boolean]", dateTag$3 = "[object Date]", errorTag$2 = "[object Error]", funcTag$1 = "[object Function]", mapTag$5 = "[object Map]", numberTag$3 = "[object Number]", objectTag$3 = "[object Object]", regexpTag$3 = "[object RegExp]", setTag$5 = "[object Set]", stringTag$3 = "[object String]", weakMapTag$2 = "[object WeakMap]";
|
419
|
+
var arrayBufferTag$3 = "[object ArrayBuffer]", dataViewTag$4 = "[object DataView]", float32Tag$2 = "[object Float32Array]", float64Tag$2 = "[object Float64Array]", int8Tag$2 = "[object Int8Array]", int16Tag$2 = "[object Int16Array]", int32Tag$2 = "[object Int32Array]", uint8Tag$2 = "[object Uint8Array]", uint8ClampedTag$2 = "[object Uint8ClampedArray]", uint16Tag$2 = "[object Uint16Array]", uint32Tag$2 = "[object Uint32Array]";
|
420
|
+
var typedArrayTags = {};
|
421
|
+
typedArrayTags[float32Tag$2] = typedArrayTags[float64Tag$2] = typedArrayTags[int8Tag$2] = typedArrayTags[int16Tag$2] = typedArrayTags[int32Tag$2] = typedArrayTags[uint8Tag$2] = typedArrayTags[uint8ClampedTag$2] = typedArrayTags[uint16Tag$2] = typedArrayTags[uint32Tag$2] = true;
|
422
|
+
typedArrayTags[argsTag$2] = typedArrayTags[arrayTag$2] = typedArrayTags[arrayBufferTag$3] = typedArrayTags[boolTag$3] = typedArrayTags[dataViewTag$4] = typedArrayTags[dateTag$3] = typedArrayTags[errorTag$2] = typedArrayTags[funcTag$1] = typedArrayTags[mapTag$5] = typedArrayTags[numberTag$3] = typedArrayTags[objectTag$3] = typedArrayTags[regexpTag$3] = typedArrayTags[setTag$5] = typedArrayTags[stringTag$3] = typedArrayTags[weakMapTag$2] = false;
|
423
|
+
function baseIsTypedArray(value) {
|
424
|
+
return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
|
425
|
+
}
|
426
|
+
__name(baseIsTypedArray, "baseIsTypedArray");
|
427
|
+
function baseUnary(func) {
|
428
|
+
return function(value) {
|
429
|
+
return func(value);
|
430
|
+
};
|
431
|
+
}
|
432
|
+
__name(baseUnary, "baseUnary");
|
433
|
+
var freeExports$1 = typeof exports == "object" && exports && !exports.nodeType && exports;
|
434
|
+
var freeModule$1 = freeExports$1 && typeof module == "object" && module && !module.nodeType && module;
|
435
|
+
var moduleExports$1 = freeModule$1 && freeModule$1.exports === freeExports$1;
|
436
|
+
var freeProcess = moduleExports$1 && freeGlobal.process;
|
437
|
+
var nodeUtil = function() {
|
438
|
+
try {
|
439
|
+
var types = freeModule$1 && freeModule$1.require && freeModule$1.require("util").types;
|
440
|
+
if (types) {
|
441
|
+
return types;
|
442
|
+
}
|
443
|
+
return freeProcess && freeProcess.binding && freeProcess.binding("util");
|
444
|
+
} catch (e) {
|
445
|
+
}
|
446
|
+
}();
|
447
|
+
var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
|
448
|
+
var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
|
449
|
+
var objectProto$9 = Object.prototype;
|
450
|
+
var hasOwnProperty$8 = objectProto$9.hasOwnProperty;
|
451
|
+
function arrayLikeKeys(value, inherited) {
|
452
|
+
var isArr = isArray(value), isArg = !isArr && isArguments(value), isBuff = !isArr && !isArg && isBuffer(value), isType = !isArr && !isArg && !isBuff && isTypedArray(value), skipIndexes = isArr || isArg || isBuff || isType, result = skipIndexes ? baseTimes(value.length, String) : [], length = result.length;
|
453
|
+
for (var key in value) {
|
454
|
+
if ((inherited || hasOwnProperty$8.call(value, key)) && !(skipIndexes && // Safari 9 has enumerable `arguments.length` in strict mode.
|
455
|
+
(key == "length" || // Node.js 0.10 has enumerable non-index properties on buffers.
|
456
|
+
isBuff && (key == "offset" || key == "parent") || // PhantomJS 2 has enumerable non-index properties on typed arrays.
|
457
|
+
isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || // Skip index properties.
|
458
|
+
isIndex(key, length)))) {
|
459
|
+
result.push(key);
|
460
|
+
}
|
461
|
+
}
|
462
|
+
return result;
|
463
|
+
}
|
464
|
+
__name(arrayLikeKeys, "arrayLikeKeys");
|
465
|
+
function overArg(func, transform) {
|
466
|
+
return function(arg) {
|
467
|
+
return func(transform(arg));
|
468
|
+
};
|
469
|
+
}
|
470
|
+
__name(overArg, "overArg");
|
471
|
+
var nativeKeys = overArg(Object.keys, Object);
|
472
|
+
var objectProto$8 = Object.prototype;
|
473
|
+
var hasOwnProperty$7 = objectProto$8.hasOwnProperty;
|
474
|
+
function baseKeys(object) {
|
475
|
+
if (!isPrototype(object)) {
|
476
|
+
return nativeKeys(object);
|
477
|
+
}
|
478
|
+
var result = [];
|
479
|
+
for (var key in Object(object)) {
|
480
|
+
if (hasOwnProperty$7.call(object, key) && key != "constructor") {
|
481
|
+
result.push(key);
|
482
|
+
}
|
483
|
+
}
|
484
|
+
return result;
|
485
|
+
}
|
486
|
+
__name(baseKeys, "baseKeys");
|
487
|
+
function keys(object) {
|
488
|
+
return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
|
489
|
+
}
|
490
|
+
__name(keys, "keys");
|
491
|
+
var objectProto$7 = Object.prototype;
|
492
|
+
var hasOwnProperty$6 = objectProto$7.hasOwnProperty;
|
493
|
+
var assign = createAssigner(function(object, source) {
|
494
|
+
if (isPrototype(source) || isArrayLike(source)) {
|
495
|
+
copyObject(source, keys(source), object);
|
496
|
+
return;
|
497
|
+
}
|
498
|
+
for (var key in source) {
|
499
|
+
if (hasOwnProperty$6.call(source, key)) {
|
500
|
+
assignValue(object, key, source[key]);
|
501
|
+
}
|
502
|
+
}
|
503
|
+
});
|
504
|
+
function nativeKeysIn(object) {
|
505
|
+
var result = [];
|
506
|
+
if (object != null) {
|
507
|
+
for (var key in Object(object)) {
|
508
|
+
result.push(key);
|
509
|
+
}
|
510
|
+
}
|
511
|
+
return result;
|
512
|
+
}
|
513
|
+
__name(nativeKeysIn, "nativeKeysIn");
|
514
|
+
var objectProto$6 = Object.prototype;
|
515
|
+
var hasOwnProperty$5 = objectProto$6.hasOwnProperty;
|
516
|
+
function baseKeysIn(object) {
|
517
|
+
if (!isObject(object)) {
|
518
|
+
return nativeKeysIn(object);
|
519
|
+
}
|
520
|
+
var isProto = isPrototype(object), result = [];
|
521
|
+
for (var key in object) {
|
522
|
+
if (!(key == "constructor" && (isProto || !hasOwnProperty$5.call(object, key)))) {
|
523
|
+
result.push(key);
|
524
|
+
}
|
525
|
+
}
|
526
|
+
return result;
|
527
|
+
}
|
528
|
+
__name(baseKeysIn, "baseKeysIn");
|
529
|
+
function keysIn(object) {
|
530
|
+
return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
|
531
|
+
}
|
532
|
+
__name(keysIn, "keysIn");
|
533
|
+
var assignIn = createAssigner(function(object, source) {
|
534
|
+
copyObject(source, keysIn(source), object);
|
535
|
+
});
|
536
|
+
var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, reIsPlainProp = /^\w*$/;
|
537
|
+
function isKey(value, object) {
|
538
|
+
if (isArray(value)) {
|
539
|
+
return false;
|
540
|
+
}
|
541
|
+
var type = typeof value;
|
542
|
+
if (type == "number" || type == "symbol" || type == "boolean" || value == null || isSymbol(value)) {
|
543
|
+
return true;
|
544
|
+
}
|
545
|
+
return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object);
|
546
|
+
}
|
547
|
+
__name(isKey, "isKey");
|
548
|
+
var nativeCreate = getNative(Object, "create");
|
549
|
+
function hashClear() {
|
550
|
+
this.__data__ = nativeCreate ? nativeCreate(null) : {};
|
551
|
+
this.size = 0;
|
552
|
+
}
|
553
|
+
__name(hashClear, "hashClear");
|
554
|
+
function hashDelete(key) {
|
555
|
+
var result = this.has(key) && delete this.__data__[key];
|
556
|
+
this.size -= result ? 1 : 0;
|
557
|
+
return result;
|
558
|
+
}
|
559
|
+
__name(hashDelete, "hashDelete");
|
560
|
+
var HASH_UNDEFINED$2 = "__lodash_hash_undefined__";
|
561
|
+
var objectProto$5 = Object.prototype;
|
562
|
+
var hasOwnProperty$4 = objectProto$5.hasOwnProperty;
|
563
|
+
function hashGet(key) {
|
564
|
+
var data = this.__data__;
|
565
|
+
if (nativeCreate) {
|
566
|
+
var result = data[key];
|
567
|
+
return result === HASH_UNDEFINED$2 ? void 0 : result;
|
568
|
+
}
|
569
|
+
return hasOwnProperty$4.call(data, key) ? data[key] : void 0;
|
570
|
+
}
|
571
|
+
__name(hashGet, "hashGet");
|
572
|
+
var objectProto$4 = Object.prototype;
|
573
|
+
var hasOwnProperty$3 = objectProto$4.hasOwnProperty;
|
574
|
+
function hashHas(key) {
|
575
|
+
var data = this.__data__;
|
576
|
+
return nativeCreate ? data[key] !== void 0 : hasOwnProperty$3.call(data, key);
|
577
|
+
}
|
578
|
+
__name(hashHas, "hashHas");
|
579
|
+
var HASH_UNDEFINED$1 = "__lodash_hash_undefined__";
|
580
|
+
function hashSet(key, value) {
|
581
|
+
var data = this.__data__;
|
582
|
+
this.size += this.has(key) ? 0 : 1;
|
583
|
+
data[key] = nativeCreate && value === void 0 ? HASH_UNDEFINED$1 : value;
|
584
|
+
return this;
|
585
|
+
}
|
586
|
+
__name(hashSet, "hashSet");
|
587
|
+
function Hash(entries) {
|
588
|
+
var index = -1, length = entries == null ? 0 : entries.length;
|
589
|
+
this.clear();
|
590
|
+
while (++index < length) {
|
591
|
+
var entry = entries[index];
|
592
|
+
this.set(entry[0], entry[1]);
|
593
|
+
}
|
594
|
+
}
|
595
|
+
__name(Hash, "Hash");
|
596
|
+
Hash.prototype.clear = hashClear;
|
597
|
+
Hash.prototype["delete"] = hashDelete;
|
598
|
+
Hash.prototype.get = hashGet;
|
599
|
+
Hash.prototype.has = hashHas;
|
600
|
+
Hash.prototype.set = hashSet;
|
601
|
+
function listCacheClear() {
|
602
|
+
this.__data__ = [];
|
603
|
+
this.size = 0;
|
604
|
+
}
|
605
|
+
__name(listCacheClear, "listCacheClear");
|
606
|
+
function assocIndexOf(array, key) {
|
607
|
+
var length = array.length;
|
608
|
+
while (length--) {
|
609
|
+
if (eq(array[length][0], key)) {
|
610
|
+
return length;
|
611
|
+
}
|
612
|
+
}
|
613
|
+
return -1;
|
614
|
+
}
|
615
|
+
__name(assocIndexOf, "assocIndexOf");
|
616
|
+
var arrayProto = Array.prototype;
|
617
|
+
var splice = arrayProto.splice;
|
618
|
+
function listCacheDelete(key) {
|
619
|
+
var data = this.__data__, index = assocIndexOf(data, key);
|
620
|
+
if (index < 0) {
|
621
|
+
return false;
|
622
|
+
}
|
623
|
+
var lastIndex = data.length - 1;
|
624
|
+
if (index == lastIndex) {
|
625
|
+
data.pop();
|
626
|
+
} else {
|
627
|
+
splice.call(data, index, 1);
|
628
|
+
}
|
629
|
+
--this.size;
|
630
|
+
return true;
|
631
|
+
}
|
632
|
+
__name(listCacheDelete, "listCacheDelete");
|
633
|
+
function listCacheGet(key) {
|
634
|
+
var data = this.__data__, index = assocIndexOf(data, key);
|
635
|
+
return index < 0 ? void 0 : data[index][1];
|
636
|
+
}
|
637
|
+
__name(listCacheGet, "listCacheGet");
|
638
|
+
function listCacheHas(key) {
|
639
|
+
return assocIndexOf(this.__data__, key) > -1;
|
640
|
+
}
|
641
|
+
__name(listCacheHas, "listCacheHas");
|
642
|
+
function listCacheSet(key, value) {
|
643
|
+
var data = this.__data__, index = assocIndexOf(data, key);
|
644
|
+
if (index < 0) {
|
645
|
+
++this.size;
|
646
|
+
data.push([key, value]);
|
647
|
+
} else {
|
648
|
+
data[index][1] = value;
|
649
|
+
}
|
650
|
+
return this;
|
651
|
+
}
|
652
|
+
__name(listCacheSet, "listCacheSet");
|
653
|
+
function ListCache(entries) {
|
654
|
+
var index = -1, length = entries == null ? 0 : entries.length;
|
655
|
+
this.clear();
|
656
|
+
while (++index < length) {
|
657
|
+
var entry = entries[index];
|
658
|
+
this.set(entry[0], entry[1]);
|
659
|
+
}
|
660
|
+
}
|
661
|
+
__name(ListCache, "ListCache");
|
662
|
+
ListCache.prototype.clear = listCacheClear;
|
663
|
+
ListCache.prototype["delete"] = listCacheDelete;
|
664
|
+
ListCache.prototype.get = listCacheGet;
|
665
|
+
ListCache.prototype.has = listCacheHas;
|
666
|
+
ListCache.prototype.set = listCacheSet;
|
667
|
+
var Map = getNative(root, "Map");
|
668
|
+
function mapCacheClear() {
|
669
|
+
this.size = 0;
|
670
|
+
this.__data__ = {
|
671
|
+
"hash": new Hash(),
|
672
|
+
"map": new (Map || ListCache)(),
|
673
|
+
"string": new Hash()
|
674
|
+
};
|
675
|
+
}
|
676
|
+
__name(mapCacheClear, "mapCacheClear");
|
677
|
+
function isKeyable(value) {
|
678
|
+
var type = typeof value;
|
679
|
+
return type == "string" || type == "number" || type == "symbol" || type == "boolean" ? value !== "__proto__" : value === null;
|
680
|
+
}
|
681
|
+
__name(isKeyable, "isKeyable");
|
682
|
+
function getMapData(map2, key) {
|
683
|
+
var data = map2.__data__;
|
684
|
+
return isKeyable(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map;
|
685
|
+
}
|
686
|
+
__name(getMapData, "getMapData");
|
687
|
+
function mapCacheDelete(key) {
|
688
|
+
var result = getMapData(this, key)["delete"](key);
|
689
|
+
this.size -= result ? 1 : 0;
|
690
|
+
return result;
|
691
|
+
}
|
692
|
+
__name(mapCacheDelete, "mapCacheDelete");
|
693
|
+
function mapCacheGet(key) {
|
694
|
+
return getMapData(this, key).get(key);
|
695
|
+
}
|
696
|
+
__name(mapCacheGet, "mapCacheGet");
|
697
|
+
function mapCacheHas(key) {
|
698
|
+
return getMapData(this, key).has(key);
|
699
|
+
}
|
700
|
+
__name(mapCacheHas, "mapCacheHas");
|
701
|
+
function mapCacheSet(key, value) {
|
702
|
+
var data = getMapData(this, key), size = data.size;
|
703
|
+
data.set(key, value);
|
704
|
+
this.size += data.size == size ? 0 : 1;
|
705
|
+
return this;
|
706
|
+
}
|
707
|
+
__name(mapCacheSet, "mapCacheSet");
|
708
|
+
function MapCache(entries) {
|
709
|
+
var index = -1, length = entries == null ? 0 : entries.length;
|
710
|
+
this.clear();
|
711
|
+
while (++index < length) {
|
712
|
+
var entry = entries[index];
|
713
|
+
this.set(entry[0], entry[1]);
|
714
|
+
}
|
715
|
+
}
|
716
|
+
__name(MapCache, "MapCache");
|
717
|
+
MapCache.prototype.clear = mapCacheClear;
|
718
|
+
MapCache.prototype["delete"] = mapCacheDelete;
|
719
|
+
MapCache.prototype.get = mapCacheGet;
|
720
|
+
MapCache.prototype.has = mapCacheHas;
|
721
|
+
MapCache.prototype.set = mapCacheSet;
|
722
|
+
var FUNC_ERROR_TEXT = "Expected a function";
|
723
|
+
function memoize(func, resolver) {
|
724
|
+
if (typeof func != "function" || resolver != null && typeof resolver != "function") {
|
725
|
+
throw new TypeError(FUNC_ERROR_TEXT);
|
726
|
+
}
|
727
|
+
var memoized = /* @__PURE__ */ __name(function() {
|
728
|
+
var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache = memoized.cache;
|
729
|
+
if (cache.has(key)) {
|
730
|
+
return cache.get(key);
|
731
|
+
}
|
732
|
+
var result = func.apply(this, args);
|
733
|
+
memoized.cache = cache.set(key, result) || cache;
|
734
|
+
return result;
|
735
|
+
}, "memoized");
|
736
|
+
memoized.cache = new (memoize.Cache || MapCache)();
|
737
|
+
return memoized;
|
738
|
+
}
|
739
|
+
__name(memoize, "memoize");
|
740
|
+
memoize.Cache = MapCache;
|
741
|
+
var MAX_MEMOIZE_SIZE = 500;
|
742
|
+
function memoizeCapped(func) {
|
743
|
+
var result = memoize(func, function(key) {
|
744
|
+
if (cache.size === MAX_MEMOIZE_SIZE) {
|
745
|
+
cache.clear();
|
746
|
+
}
|
747
|
+
return key;
|
748
|
+
});
|
749
|
+
var cache = result.cache;
|
750
|
+
return result;
|
751
|
+
}
|
752
|
+
__name(memoizeCapped, "memoizeCapped");
|
753
|
+
var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
|
754
|
+
var reEscapeChar = /\\(\\)?/g;
|
755
|
+
var stringToPath = memoizeCapped(function(string) {
|
756
|
+
var result = [];
|
757
|
+
if (string.charCodeAt(0) === 46) {
|
758
|
+
result.push("");
|
759
|
+
}
|
760
|
+
string.replace(rePropName, function(match, number, quote, subString) {
|
761
|
+
result.push(quote ? subString.replace(reEscapeChar, "$1") : number || match);
|
762
|
+
});
|
763
|
+
return result;
|
764
|
+
});
|
765
|
+
function toString(value) {
|
766
|
+
return value == null ? "" : baseToString(value);
|
767
|
+
}
|
768
|
+
__name(toString, "toString");
|
769
|
+
function castPath(value, object) {
|
770
|
+
if (isArray(value)) {
|
771
|
+
return value;
|
772
|
+
}
|
773
|
+
return isKey(value, object) ? [value] : stringToPath(toString(value));
|
774
|
+
}
|
775
|
+
__name(castPath, "castPath");
|
776
|
+
var INFINITY = 1 / 0;
|
777
|
+
function toKey(value) {
|
778
|
+
if (typeof value == "string" || isSymbol(value)) {
|
779
|
+
return value;
|
780
|
+
}
|
781
|
+
var result = value + "";
|
782
|
+
return result == "0" && 1 / value == -INFINITY ? "-0" : result;
|
783
|
+
}
|
784
|
+
__name(toKey, "toKey");
|
785
|
+
function baseGet(object, path) {
|
786
|
+
path = castPath(path, object);
|
787
|
+
var index = 0, length = path.length;
|
788
|
+
while (object != null && index < length) {
|
789
|
+
object = object[toKey(path[index++])];
|
790
|
+
}
|
791
|
+
return index && index == length ? object : void 0;
|
792
|
+
}
|
793
|
+
__name(baseGet, "baseGet");
|
794
|
+
function get(object, path, defaultValue) {
|
795
|
+
var result = object == null ? void 0 : baseGet(object, path);
|
796
|
+
return result === void 0 ? defaultValue : result;
|
797
|
+
}
|
798
|
+
__name(get, "get");
|
799
|
+
function arrayPush(array, values) {
|
800
|
+
var index = -1, length = values.length, offset = array.length;
|
801
|
+
while (++index < length) {
|
802
|
+
array[offset + index] = values[index];
|
803
|
+
}
|
804
|
+
return array;
|
805
|
+
}
|
806
|
+
__name(arrayPush, "arrayPush");
|
807
|
+
var spreadableSymbol = Symbol$1 ? Symbol$1.isConcatSpreadable : void 0;
|
808
|
+
function isFlattenable(value) {
|
809
|
+
return isArray(value) || isArguments(value) || !!(spreadableSymbol && value && value[spreadableSymbol]);
|
810
|
+
}
|
811
|
+
__name(isFlattenable, "isFlattenable");
|
812
|
+
function baseFlatten(array, depth, predicate, isStrict, result) {
|
813
|
+
var index = -1, length = array.length;
|
814
|
+
predicate || (predicate = isFlattenable);
|
815
|
+
result || (result = []);
|
816
|
+
while (++index < length) {
|
817
|
+
var value = array[index];
|
818
|
+
if (predicate(value)) {
|
819
|
+
{
|
820
|
+
arrayPush(result, value);
|
821
|
+
}
|
822
|
+
} else {
|
823
|
+
result[result.length] = value;
|
824
|
+
}
|
825
|
+
}
|
826
|
+
return result;
|
827
|
+
}
|
828
|
+
__name(baseFlatten, "baseFlatten");
|
829
|
+
var getPrototype = overArg(Object.getPrototypeOf, Object);
|
830
|
+
function stackClear() {
|
831
|
+
this.__data__ = new ListCache();
|
832
|
+
this.size = 0;
|
833
|
+
}
|
834
|
+
__name(stackClear, "stackClear");
|
835
|
+
function stackDelete(key) {
|
836
|
+
var data = this.__data__, result = data["delete"](key);
|
837
|
+
this.size = data.size;
|
838
|
+
return result;
|
839
|
+
}
|
840
|
+
__name(stackDelete, "stackDelete");
|
841
|
+
function stackGet(key) {
|
842
|
+
return this.__data__.get(key);
|
843
|
+
}
|
844
|
+
__name(stackGet, "stackGet");
|
845
|
+
function stackHas(key) {
|
846
|
+
return this.__data__.has(key);
|
847
|
+
}
|
848
|
+
__name(stackHas, "stackHas");
|
849
|
+
var LARGE_ARRAY_SIZE = 200;
|
850
|
+
function stackSet(key, value) {
|
851
|
+
var data = this.__data__;
|
852
|
+
if (data instanceof ListCache) {
|
853
|
+
var pairs = data.__data__;
|
854
|
+
if (!Map || pairs.length < LARGE_ARRAY_SIZE - 1) {
|
855
|
+
pairs.push([key, value]);
|
856
|
+
this.size = ++data.size;
|
857
|
+
return this;
|
858
|
+
}
|
859
|
+
data = this.__data__ = new MapCache(pairs);
|
860
|
+
}
|
861
|
+
data.set(key, value);
|
862
|
+
this.size = data.size;
|
863
|
+
return this;
|
864
|
+
}
|
865
|
+
__name(stackSet, "stackSet");
|
866
|
+
function Stack(entries) {
|
867
|
+
var data = this.__data__ = new ListCache(entries);
|
868
|
+
this.size = data.size;
|
869
|
+
}
|
870
|
+
__name(Stack, "Stack");
|
871
|
+
Stack.prototype.clear = stackClear;
|
872
|
+
Stack.prototype["delete"] = stackDelete;
|
873
|
+
Stack.prototype.get = stackGet;
|
874
|
+
Stack.prototype.has = stackHas;
|
875
|
+
Stack.prototype.set = stackSet;
|
876
|
+
function baseAssign(object, source) {
|
877
|
+
return object && copyObject(source, keys(source), object);
|
878
|
+
}
|
879
|
+
__name(baseAssign, "baseAssign");
|
880
|
+
var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports;
|
881
|
+
var freeModule = freeExports && typeof module == "object" && module && !module.nodeType && module;
|
882
|
+
var moduleExports = freeModule && freeModule.exports === freeExports;
|
883
|
+
var Buffer2 = moduleExports ? root.Buffer : void 0, allocUnsafe = Buffer2 ? Buffer2.allocUnsafe : void 0;
|
884
|
+
function cloneBuffer(buffer, isDeep) {
|
885
|
+
var length = buffer.length, result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);
|
886
|
+
buffer.copy(result);
|
887
|
+
return result;
|
888
|
+
}
|
889
|
+
__name(cloneBuffer, "cloneBuffer");
|
890
|
+
function arrayFilter(array, predicate) {
|
891
|
+
var index = -1, length = array == null ? 0 : array.length, resIndex = 0, result = [];
|
892
|
+
while (++index < length) {
|
893
|
+
var value = array[index];
|
894
|
+
if (predicate(value, index, array)) {
|
895
|
+
result[resIndex++] = value;
|
896
|
+
}
|
897
|
+
}
|
898
|
+
return result;
|
899
|
+
}
|
900
|
+
__name(arrayFilter, "arrayFilter");
|
901
|
+
function stubArray() {
|
902
|
+
return [];
|
903
|
+
}
|
904
|
+
__name(stubArray, "stubArray");
|
905
|
+
var objectProto$3 = Object.prototype;
|
906
|
+
var propertyIsEnumerable = objectProto$3.propertyIsEnumerable;
|
907
|
+
var nativeGetSymbols = Object.getOwnPropertySymbols;
|
908
|
+
var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
|
909
|
+
if (object == null) {
|
910
|
+
return [];
|
911
|
+
}
|
912
|
+
object = Object(object);
|
913
|
+
return arrayFilter(nativeGetSymbols(object), function(symbol) {
|
914
|
+
return propertyIsEnumerable.call(object, symbol);
|
915
|
+
});
|
916
|
+
};
|
917
|
+
function copySymbols(source, object) {
|
918
|
+
return copyObject(source, getSymbols(source), object);
|
919
|
+
}
|
920
|
+
__name(copySymbols, "copySymbols");
|
921
|
+
function baseGetAllKeys(object, keysFunc, symbolsFunc) {
|
922
|
+
var result = keysFunc(object);
|
923
|
+
return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
|
924
|
+
}
|
925
|
+
__name(baseGetAllKeys, "baseGetAllKeys");
|
926
|
+
function getAllKeys(object) {
|
927
|
+
return baseGetAllKeys(object, keys, getSymbols);
|
928
|
+
}
|
929
|
+
__name(getAllKeys, "getAllKeys");
|
930
|
+
var DataView = getNative(root, "DataView");
|
931
|
+
var Promise$1 = getNative(root, "Promise");
|
932
|
+
var Set = getNative(root, "Set");
|
933
|
+
var mapTag$4 = "[object Map]", objectTag$2 = "[object Object]", promiseTag = "[object Promise]", setTag$4 = "[object Set]", weakMapTag$1 = "[object WeakMap]";
|
934
|
+
var dataViewTag$3 = "[object DataView]";
|
935
|
+
var dataViewCtorString = toSource(DataView), mapCtorString = toSource(Map), promiseCtorString = toSource(Promise$1), setCtorString = toSource(Set), weakMapCtorString = toSource(WeakMap);
|
936
|
+
var getTag = baseGetTag;
|
937
|
+
if (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag$3 || Map && getTag(new Map()) != mapTag$4 || Promise$1 && getTag(Promise$1.resolve()) != promiseTag || Set && getTag(new Set()) != setTag$4 || WeakMap && getTag(new WeakMap()) != weakMapTag$1) {
|
938
|
+
getTag = /* @__PURE__ */ __name(function(value) {
|
939
|
+
var result = baseGetTag(value), Ctor = result == objectTag$2 ? value.constructor : void 0, ctorString = Ctor ? toSource(Ctor) : "";
|
940
|
+
if (ctorString) {
|
941
|
+
switch (ctorString) {
|
942
|
+
case dataViewCtorString:
|
943
|
+
return dataViewTag$3;
|
944
|
+
case mapCtorString:
|
945
|
+
return mapTag$4;
|
946
|
+
case promiseCtorString:
|
947
|
+
return promiseTag;
|
948
|
+
case setCtorString:
|
949
|
+
return setTag$4;
|
950
|
+
case weakMapCtorString:
|
951
|
+
return weakMapTag$1;
|
952
|
+
}
|
953
|
+
}
|
954
|
+
return result;
|
955
|
+
}, "getTag");
|
956
|
+
}
|
957
|
+
var objectProto$2 = Object.prototype;
|
958
|
+
var hasOwnProperty$2 = objectProto$2.hasOwnProperty;
|
959
|
+
function initCloneArray(array) {
|
960
|
+
var length = array.length, result = new array.constructor(length);
|
961
|
+
if (length && typeof array[0] == "string" && hasOwnProperty$2.call(array, "index")) {
|
962
|
+
result.index = array.index;
|
963
|
+
result.input = array.input;
|
964
|
+
}
|
965
|
+
return result;
|
966
|
+
}
|
967
|
+
__name(initCloneArray, "initCloneArray");
|
968
|
+
var Uint8Array2 = root.Uint8Array;
|
969
|
+
function cloneArrayBuffer(arrayBuffer) {
|
970
|
+
var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
|
971
|
+
new Uint8Array2(result).set(new Uint8Array2(arrayBuffer));
|
972
|
+
return result;
|
973
|
+
}
|
974
|
+
__name(cloneArrayBuffer, "cloneArrayBuffer");
|
975
|
+
function cloneDataView(dataView, isDeep) {
|
976
|
+
var buffer = dataView.buffer;
|
977
|
+
return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
|
978
|
+
}
|
979
|
+
__name(cloneDataView, "cloneDataView");
|
980
|
+
var reFlags = /\w*$/;
|
981
|
+
function cloneRegExp(regexp) {
|
982
|
+
var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));
|
983
|
+
result.lastIndex = regexp.lastIndex;
|
984
|
+
return result;
|
985
|
+
}
|
986
|
+
__name(cloneRegExp, "cloneRegExp");
|
987
|
+
var symbolProto$1 = Symbol$1 ? Symbol$1.prototype : void 0, symbolValueOf$1 = symbolProto$1 ? symbolProto$1.valueOf : void 0;
|
988
|
+
function cloneSymbol(symbol) {
|
989
|
+
return symbolValueOf$1 ? Object(symbolValueOf$1.call(symbol)) : {};
|
990
|
+
}
|
991
|
+
__name(cloneSymbol, "cloneSymbol");
|
992
|
+
function cloneTypedArray(typedArray, isDeep) {
|
993
|
+
var buffer = typedArray.buffer;
|
994
|
+
return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
|
995
|
+
}
|
996
|
+
__name(cloneTypedArray, "cloneTypedArray");
|
997
|
+
var boolTag$2 = "[object Boolean]", dateTag$2 = "[object Date]", mapTag$3 = "[object Map]", numberTag$2 = "[object Number]", regexpTag$2 = "[object RegExp]", setTag$3 = "[object Set]", stringTag$2 = "[object String]", symbolTag$2 = "[object Symbol]";
|
998
|
+
var arrayBufferTag$2 = "[object ArrayBuffer]", dataViewTag$2 = "[object DataView]", float32Tag$1 = "[object Float32Array]", float64Tag$1 = "[object Float64Array]", int8Tag$1 = "[object Int8Array]", int16Tag$1 = "[object Int16Array]", int32Tag$1 = "[object Int32Array]", uint8Tag$1 = "[object Uint8Array]", uint8ClampedTag$1 = "[object Uint8ClampedArray]", uint16Tag$1 = "[object Uint16Array]", uint32Tag$1 = "[object Uint32Array]";
|
999
|
+
function initCloneByTag(object, tag, isDeep) {
|
1000
|
+
var Ctor = object.constructor;
|
1001
|
+
switch (tag) {
|
1002
|
+
case arrayBufferTag$2:
|
1003
|
+
return cloneArrayBuffer(object);
|
1004
|
+
case boolTag$2:
|
1005
|
+
case dateTag$2:
|
1006
|
+
return new Ctor(+object);
|
1007
|
+
case dataViewTag$2:
|
1008
|
+
return cloneDataView(object);
|
1009
|
+
case float32Tag$1:
|
1010
|
+
case float64Tag$1:
|
1011
|
+
case int8Tag$1:
|
1012
|
+
case int16Tag$1:
|
1013
|
+
case int32Tag$1:
|
1014
|
+
case uint8Tag$1:
|
1015
|
+
case uint8ClampedTag$1:
|
1016
|
+
case uint16Tag$1:
|
1017
|
+
case uint32Tag$1:
|
1018
|
+
return cloneTypedArray(object);
|
1019
|
+
case mapTag$3:
|
1020
|
+
return new Ctor();
|
1021
|
+
case numberTag$2:
|
1022
|
+
case stringTag$2:
|
1023
|
+
return new Ctor(object);
|
1024
|
+
case regexpTag$2:
|
1025
|
+
return cloneRegExp(object);
|
1026
|
+
case setTag$3:
|
1027
|
+
return new Ctor();
|
1028
|
+
case symbolTag$2:
|
1029
|
+
return cloneSymbol(object);
|
1030
|
+
}
|
1031
|
+
}
|
1032
|
+
__name(initCloneByTag, "initCloneByTag");
|
1033
|
+
function initCloneObject(object) {
|
1034
|
+
return typeof object.constructor == "function" && !isPrototype(object) ? baseCreate(getPrototype(object)) : {};
|
1035
|
+
}
|
1036
|
+
__name(initCloneObject, "initCloneObject");
|
1037
|
+
var mapTag$2 = "[object Map]";
|
1038
|
+
function baseIsMap(value) {
|
1039
|
+
return isObjectLike(value) && getTag(value) == mapTag$2;
|
1040
|
+
}
|
1041
|
+
__name(baseIsMap, "baseIsMap");
|
1042
|
+
var nodeIsMap = nodeUtil && nodeUtil.isMap;
|
1043
|
+
var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;
|
1044
|
+
var setTag$2 = "[object Set]";
|
1045
|
+
function baseIsSet(value) {
|
1046
|
+
return isObjectLike(value) && getTag(value) == setTag$2;
|
1047
|
+
}
|
1048
|
+
__name(baseIsSet, "baseIsSet");
|
1049
|
+
var nodeIsSet = nodeUtil && nodeUtil.isSet;
|
1050
|
+
var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;
|
1051
|
+
var argsTag$1 = "[object Arguments]", arrayTag$1 = "[object Array]", boolTag$1 = "[object Boolean]", dateTag$1 = "[object Date]", errorTag$1 = "[object Error]", funcTag = "[object Function]", genTag = "[object GeneratorFunction]", mapTag$1 = "[object Map]", numberTag$1 = "[object Number]", objectTag$1 = "[object Object]", regexpTag$1 = "[object RegExp]", setTag$1 = "[object Set]", stringTag$1 = "[object String]", symbolTag$1 = "[object Symbol]", weakMapTag = "[object WeakMap]";
|
1052
|
+
var arrayBufferTag$1 = "[object ArrayBuffer]", dataViewTag$1 = "[object DataView]", float32Tag = "[object Float32Array]", float64Tag = "[object Float64Array]", int8Tag = "[object Int8Array]", int16Tag = "[object Int16Array]", int32Tag = "[object Int32Array]", uint8Tag = "[object Uint8Array]", uint8ClampedTag = "[object Uint8ClampedArray]", uint16Tag = "[object Uint16Array]", uint32Tag = "[object Uint32Array]";
|
1053
|
+
var cloneableTags = {};
|
1054
|
+
cloneableTags[argsTag$1] = cloneableTags[arrayTag$1] = cloneableTags[arrayBufferTag$1] = cloneableTags[dataViewTag$1] = cloneableTags[boolTag$1] = cloneableTags[dateTag$1] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag$1] = cloneableTags[numberTag$1] = cloneableTags[objectTag$1] = cloneableTags[regexpTag$1] = cloneableTags[setTag$1] = cloneableTags[stringTag$1] = cloneableTags[symbolTag$1] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
|
1055
|
+
cloneableTags[errorTag$1] = cloneableTags[funcTag] = cloneableTags[weakMapTag] = false;
|
1056
|
+
function baseClone(value, bitmask, customizer, key, object, stack) {
|
1057
|
+
var result;
|
1058
|
+
if (result !== void 0) {
|
1059
|
+
return result;
|
1060
|
+
}
|
1061
|
+
if (!isObject(value)) {
|
1062
|
+
return value;
|
1063
|
+
}
|
1064
|
+
var isArr = isArray(value);
|
1065
|
+
if (isArr) {
|
1066
|
+
result = initCloneArray(value);
|
1067
|
+
{
|
1068
|
+
return copyArray(value, result);
|
1069
|
+
}
|
1070
|
+
} else {
|
1071
|
+
var tag = getTag(value), isFunc = tag == funcTag || tag == genTag;
|
1072
|
+
if (isBuffer(value)) {
|
1073
|
+
return cloneBuffer(value);
|
1074
|
+
}
|
1075
|
+
if (tag == objectTag$1 || tag == argsTag$1 || isFunc && !object) {
|
1076
|
+
result = isFunc ? {} : initCloneObject(value);
|
1077
|
+
{
|
1078
|
+
return copySymbols(value, baseAssign(result, value));
|
1079
|
+
}
|
1080
|
+
} else {
|
1081
|
+
if (!cloneableTags[tag]) {
|
1082
|
+
return object ? value : {};
|
1083
|
+
}
|
1084
|
+
result = initCloneByTag(value, tag);
|
1085
|
+
}
|
1086
|
+
}
|
1087
|
+
stack || (stack = new Stack());
|
1088
|
+
var stacked = stack.get(value);
|
1089
|
+
if (stacked) {
|
1090
|
+
return stacked;
|
1091
|
+
}
|
1092
|
+
stack.set(value, result);
|
1093
|
+
if (isSet(value)) {
|
1094
|
+
value.forEach(function(subValue) {
|
1095
|
+
result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));
|
1096
|
+
});
|
1097
|
+
} else if (isMap(value)) {
|
1098
|
+
value.forEach(function(subValue, key2) {
|
1099
|
+
result.set(key2, baseClone(subValue, bitmask, customizer, key2, value, stack));
|
1100
|
+
});
|
1101
|
+
}
|
1102
|
+
var keysFunc = getAllKeys;
|
1103
|
+
var props = isArr ? void 0 : keysFunc(value);
|
1104
|
+
arrayEach(props || value, function(subValue, key2) {
|
1105
|
+
if (props) {
|
1106
|
+
key2 = subValue;
|
1107
|
+
subValue = value[key2];
|
1108
|
+
}
|
1109
|
+
assignValue(result, key2, baseClone(subValue, bitmask, customizer, key2, value, stack));
|
1110
|
+
});
|
1111
|
+
return result;
|
1112
|
+
}
|
1113
|
+
__name(baseClone, "baseClone");
|
1114
|
+
var CLONE_SYMBOLS_FLAG = 4;
|
1115
|
+
function clone(value) {
|
1116
|
+
return baseClone(value, CLONE_SYMBOLS_FLAG);
|
1117
|
+
}
|
1118
|
+
__name(clone, "clone");
|
1119
|
+
var HASH_UNDEFINED = "__lodash_hash_undefined__";
|
1120
|
+
function setCacheAdd(value) {
|
1121
|
+
this.__data__.set(value, HASH_UNDEFINED);
|
1122
|
+
return this;
|
1123
|
+
}
|
1124
|
+
__name(setCacheAdd, "setCacheAdd");
|
1125
|
+
function setCacheHas(value) {
|
1126
|
+
return this.__data__.has(value);
|
1127
|
+
}
|
1128
|
+
__name(setCacheHas, "setCacheHas");
|
1129
|
+
function SetCache(values) {
|
1130
|
+
var index = -1, length = values == null ? 0 : values.length;
|
1131
|
+
this.__data__ = new MapCache();
|
1132
|
+
while (++index < length) {
|
1133
|
+
this.add(values[index]);
|
1134
|
+
}
|
1135
|
+
}
|
1136
|
+
__name(SetCache, "SetCache");
|
1137
|
+
SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
|
1138
|
+
SetCache.prototype.has = setCacheHas;
|
1139
|
+
function arraySome(array, predicate) {
|
1140
|
+
var index = -1, length = array == null ? 0 : array.length;
|
1141
|
+
while (++index < length) {
|
1142
|
+
if (predicate(array[index], index, array)) {
|
1143
|
+
return true;
|
1144
|
+
}
|
1145
|
+
}
|
1146
|
+
return false;
|
1147
|
+
}
|
1148
|
+
__name(arraySome, "arraySome");
|
1149
|
+
function cacheHas(cache, key) {
|
1150
|
+
return cache.has(key);
|
1151
|
+
}
|
1152
|
+
__name(cacheHas, "cacheHas");
|
1153
|
+
var COMPARE_PARTIAL_FLAG$5 = 1, COMPARE_UNORDERED_FLAG$3 = 2;
|
1154
|
+
function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
|
1155
|
+
var isPartial = bitmask & COMPARE_PARTIAL_FLAG$5, arrLength = array.length, othLength = other.length;
|
1156
|
+
if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
|
1157
|
+
return false;
|
1158
|
+
}
|
1159
|
+
var arrStacked = stack.get(array);
|
1160
|
+
var othStacked = stack.get(other);
|
1161
|
+
if (arrStacked && othStacked) {
|
1162
|
+
return arrStacked == other && othStacked == array;
|
1163
|
+
}
|
1164
|
+
var index = -1, result = true, seen = bitmask & COMPARE_UNORDERED_FLAG$3 ? new SetCache() : void 0;
|
1165
|
+
stack.set(array, other);
|
1166
|
+
stack.set(other, array);
|
1167
|
+
while (++index < arrLength) {
|
1168
|
+
var arrValue = array[index], othValue = other[index];
|
1169
|
+
if (customizer) {
|
1170
|
+
var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);
|
1171
|
+
}
|
1172
|
+
if (compared !== void 0) {
|
1173
|
+
if (compared) {
|
1174
|
+
continue;
|
1175
|
+
}
|
1176
|
+
result = false;
|
1177
|
+
break;
|
1178
|
+
}
|
1179
|
+
if (seen) {
|
1180
|
+
if (!arraySome(other, function(othValue2, othIndex) {
|
1181
|
+
if (!cacheHas(seen, othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, bitmask, customizer, stack))) {
|
1182
|
+
return seen.push(othIndex);
|
1183
|
+
}
|
1184
|
+
})) {
|
1185
|
+
result = false;
|
1186
|
+
break;
|
1187
|
+
}
|
1188
|
+
} else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
|
1189
|
+
result = false;
|
1190
|
+
break;
|
1191
|
+
}
|
1192
|
+
}
|
1193
|
+
stack["delete"](array);
|
1194
|
+
stack["delete"](other);
|
1195
|
+
return result;
|
1196
|
+
}
|
1197
|
+
__name(equalArrays, "equalArrays");
|
1198
|
+
function mapToArray(map2) {
|
1199
|
+
var index = -1, result = Array(map2.size);
|
1200
|
+
map2.forEach(function(value, key) {
|
1201
|
+
result[++index] = [key, value];
|
1202
|
+
});
|
1203
|
+
return result;
|
1204
|
+
}
|
1205
|
+
__name(mapToArray, "mapToArray");
|
1206
|
+
function setToArray(set) {
|
1207
|
+
var index = -1, result = Array(set.size);
|
1208
|
+
set.forEach(function(value) {
|
1209
|
+
result[++index] = value;
|
1210
|
+
});
|
1211
|
+
return result;
|
1212
|
+
}
|
1213
|
+
__name(setToArray, "setToArray");
|
1214
|
+
var COMPARE_PARTIAL_FLAG$4 = 1, COMPARE_UNORDERED_FLAG$2 = 2;
|
1215
|
+
var boolTag = "[object Boolean]", dateTag = "[object Date]", errorTag = "[object Error]", mapTag = "[object Map]", numberTag = "[object Number]", regexpTag = "[object RegExp]", setTag = "[object Set]", stringTag = "[object String]", symbolTag = "[object Symbol]";
|
1216
|
+
var arrayBufferTag = "[object ArrayBuffer]", dataViewTag = "[object DataView]";
|
1217
|
+
var symbolProto = Symbol$1 ? Symbol$1.prototype : void 0, symbolValueOf = symbolProto ? symbolProto.valueOf : void 0;
|
1218
|
+
function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
|
1219
|
+
switch (tag) {
|
1220
|
+
case dataViewTag:
|
1221
|
+
if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {
|
1222
|
+
return false;
|
1223
|
+
}
|
1224
|
+
object = object.buffer;
|
1225
|
+
other = other.buffer;
|
1226
|
+
case arrayBufferTag:
|
1227
|
+
if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array2(object), new Uint8Array2(other))) {
|
1228
|
+
return false;
|
1229
|
+
}
|
1230
|
+
return true;
|
1231
|
+
case boolTag:
|
1232
|
+
case dateTag:
|
1233
|
+
case numberTag:
|
1234
|
+
return eq(+object, +other);
|
1235
|
+
case errorTag:
|
1236
|
+
return object.name == other.name && object.message == other.message;
|
1237
|
+
case regexpTag:
|
1238
|
+
case stringTag:
|
1239
|
+
return object == other + "";
|
1240
|
+
case mapTag:
|
1241
|
+
var convert = mapToArray;
|
1242
|
+
case setTag:
|
1243
|
+
var isPartial = bitmask & COMPARE_PARTIAL_FLAG$4;
|
1244
|
+
convert || (convert = setToArray);
|
1245
|
+
if (object.size != other.size && !isPartial) {
|
1246
|
+
return false;
|
1247
|
+
}
|
1248
|
+
var stacked = stack.get(object);
|
1249
|
+
if (stacked) {
|
1250
|
+
return stacked == other;
|
1251
|
+
}
|
1252
|
+
bitmask |= COMPARE_UNORDERED_FLAG$2;
|
1253
|
+
stack.set(object, other);
|
1254
|
+
var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
|
1255
|
+
stack["delete"](object);
|
1256
|
+
return result;
|
1257
|
+
case symbolTag:
|
1258
|
+
if (symbolValueOf) {
|
1259
|
+
return symbolValueOf.call(object) == symbolValueOf.call(other);
|
1260
|
+
}
|
1261
|
+
}
|
1262
|
+
return false;
|
1263
|
+
}
|
1264
|
+
__name(equalByTag, "equalByTag");
|
1265
|
+
var COMPARE_PARTIAL_FLAG$3 = 1;
|
1266
|
+
var objectProto$1 = Object.prototype;
|
1267
|
+
var hasOwnProperty$1 = objectProto$1.hasOwnProperty;
|
1268
|
+
function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
|
1269
|
+
var isPartial = bitmask & COMPARE_PARTIAL_FLAG$3, objProps = getAllKeys(object), objLength = objProps.length, othProps = getAllKeys(other), othLength = othProps.length;
|
1270
|
+
if (objLength != othLength && !isPartial) {
|
1271
|
+
return false;
|
1272
|
+
}
|
1273
|
+
var index = objLength;
|
1274
|
+
while (index--) {
|
1275
|
+
var key = objProps[index];
|
1276
|
+
if (!(isPartial ? key in other : hasOwnProperty$1.call(other, key))) {
|
1277
|
+
return false;
|
1278
|
+
}
|
1279
|
+
}
|
1280
|
+
var objStacked = stack.get(object);
|
1281
|
+
var othStacked = stack.get(other);
|
1282
|
+
if (objStacked && othStacked) {
|
1283
|
+
return objStacked == other && othStacked == object;
|
1284
|
+
}
|
1285
|
+
var result = true;
|
1286
|
+
stack.set(object, other);
|
1287
|
+
stack.set(other, object);
|
1288
|
+
var skipCtor = isPartial;
|
1289
|
+
while (++index < objLength) {
|
1290
|
+
key = objProps[index];
|
1291
|
+
var objValue = object[key], othValue = other[key];
|
1292
|
+
if (customizer) {
|
1293
|
+
var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);
|
1294
|
+
}
|
1295
|
+
if (!(compared === void 0 ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {
|
1296
|
+
result = false;
|
1297
|
+
break;
|
1298
|
+
}
|
1299
|
+
skipCtor || (skipCtor = key == "constructor");
|
1300
|
+
}
|
1301
|
+
if (result && !skipCtor) {
|
1302
|
+
var objCtor = object.constructor, othCtor = other.constructor;
|
1303
|
+
if (objCtor != othCtor && ("constructor" in object && "constructor" in other) && !(typeof objCtor == "function" && objCtor instanceof objCtor && typeof othCtor == "function" && othCtor instanceof othCtor)) {
|
1304
|
+
result = false;
|
1305
|
+
}
|
1306
|
+
}
|
1307
|
+
stack["delete"](object);
|
1308
|
+
stack["delete"](other);
|
1309
|
+
return result;
|
1310
|
+
}
|
1311
|
+
__name(equalObjects, "equalObjects");
|
1312
|
+
var COMPARE_PARTIAL_FLAG$2 = 1;
|
1313
|
+
var argsTag = "[object Arguments]", arrayTag = "[object Array]", objectTag = "[object Object]";
|
1314
|
+
var objectProto = Object.prototype;
|
1315
|
+
var hasOwnProperty = objectProto.hasOwnProperty;
|
1316
|
+
function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
|
1317
|
+
var objIsArr = isArray(object), othIsArr = isArray(other), objTag = objIsArr ? arrayTag : getTag(object), othTag = othIsArr ? arrayTag : getTag(other);
|
1318
|
+
objTag = objTag == argsTag ? objectTag : objTag;
|
1319
|
+
othTag = othTag == argsTag ? objectTag : othTag;
|
1320
|
+
var objIsObj = objTag == objectTag, othIsObj = othTag == objectTag, isSameTag = objTag == othTag;
|
1321
|
+
if (isSameTag && isBuffer(object)) {
|
1322
|
+
if (!isBuffer(other)) {
|
1323
|
+
return false;
|
1324
|
+
}
|
1325
|
+
objIsArr = true;
|
1326
|
+
objIsObj = false;
|
1327
|
+
}
|
1328
|
+
if (isSameTag && !objIsObj) {
|
1329
|
+
stack || (stack = new Stack());
|
1330
|
+
return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
|
1331
|
+
}
|
1332
|
+
if (!(bitmask & COMPARE_PARTIAL_FLAG$2)) {
|
1333
|
+
var objIsWrapped = objIsObj && hasOwnProperty.call(object, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty.call(other, "__wrapped__");
|
1334
|
+
if (objIsWrapped || othIsWrapped) {
|
1335
|
+
var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other;
|
1336
|
+
stack || (stack = new Stack());
|
1337
|
+
return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
|
1338
|
+
}
|
1339
|
+
}
|
1340
|
+
if (!isSameTag) {
|
1341
|
+
return false;
|
1342
|
+
}
|
1343
|
+
stack || (stack = new Stack());
|
1344
|
+
return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
|
1345
|
+
}
|
1346
|
+
__name(baseIsEqualDeep, "baseIsEqualDeep");
|
1347
|
+
function baseIsEqual(value, other, bitmask, customizer, stack) {
|
1348
|
+
if (value === other) {
|
1349
|
+
return true;
|
1350
|
+
}
|
1351
|
+
if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) {
|
1352
|
+
return value !== value && other !== other;
|
1353
|
+
}
|
1354
|
+
return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
|
1355
|
+
}
|
1356
|
+
__name(baseIsEqual, "baseIsEqual");
|
1357
|
+
var COMPARE_PARTIAL_FLAG$1 = 1, COMPARE_UNORDERED_FLAG$1 = 2;
|
1358
|
+
function baseIsMatch(object, source, matchData, customizer) {
|
1359
|
+
var index = matchData.length, length = index;
|
1360
|
+
if (object == null) {
|
1361
|
+
return !length;
|
1362
|
+
}
|
1363
|
+
object = Object(object);
|
1364
|
+
while (index--) {
|
1365
|
+
var data = matchData[index];
|
1366
|
+
if (data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) {
|
1367
|
+
return false;
|
1368
|
+
}
|
1369
|
+
}
|
1370
|
+
while (++index < length) {
|
1371
|
+
data = matchData[index];
|
1372
|
+
var key = data[0], objValue = object[key], srcValue = data[1];
|
1373
|
+
if (data[2]) {
|
1374
|
+
if (objValue === void 0 && !(key in object)) {
|
1375
|
+
return false;
|
1376
|
+
}
|
1377
|
+
} else {
|
1378
|
+
var stack = new Stack();
|
1379
|
+
var result;
|
1380
|
+
if (!(result === void 0 ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG$1 | COMPARE_UNORDERED_FLAG$1, customizer, stack) : result)) {
|
1381
|
+
return false;
|
1382
|
+
}
|
1383
|
+
}
|
1384
|
+
}
|
1385
|
+
return true;
|
1386
|
+
}
|
1387
|
+
__name(baseIsMatch, "baseIsMatch");
|
1388
|
+
function isStrictComparable(value) {
|
1389
|
+
return value === value && !isObject(value);
|
1390
|
+
}
|
1391
|
+
__name(isStrictComparable, "isStrictComparable");
|
1392
|
+
function getMatchData(object) {
|
1393
|
+
var result = keys(object), length = result.length;
|
1394
|
+
while (length--) {
|
1395
|
+
var key = result[length], value = object[key];
|
1396
|
+
result[length] = [key, value, isStrictComparable(value)];
|
1397
|
+
}
|
1398
|
+
return result;
|
1399
|
+
}
|
1400
|
+
__name(getMatchData, "getMatchData");
|
1401
|
+
function matchesStrictComparable(key, srcValue) {
|
1402
|
+
return function(object) {
|
1403
|
+
if (object == null) {
|
1404
|
+
return false;
|
1405
|
+
}
|
1406
|
+
return object[key] === srcValue && (srcValue !== void 0 || key in Object(object));
|
1407
|
+
};
|
1408
|
+
}
|
1409
|
+
__name(matchesStrictComparable, "matchesStrictComparable");
|
1410
|
+
function baseMatches(source) {
|
1411
|
+
var matchData = getMatchData(source);
|
1412
|
+
if (matchData.length == 1 && matchData[0][2]) {
|
1413
|
+
return matchesStrictComparable(matchData[0][0], matchData[0][1]);
|
1414
|
+
}
|
1415
|
+
return function(object) {
|
1416
|
+
return object === source || baseIsMatch(object, source, matchData);
|
1417
|
+
};
|
1418
|
+
}
|
1419
|
+
__name(baseMatches, "baseMatches");
|
1420
|
+
function baseHasIn(object, key) {
|
1421
|
+
return object != null && key in Object(object);
|
1422
|
+
}
|
1423
|
+
__name(baseHasIn, "baseHasIn");
|
1424
|
+
function hasPath(object, path, hasFunc) {
|
1425
|
+
path = castPath(path, object);
|
1426
|
+
var index = -1, length = path.length, result = false;
|
1427
|
+
while (++index < length) {
|
1428
|
+
var key = toKey(path[index]);
|
1429
|
+
if (!(result = object != null && hasFunc(object, key))) {
|
1430
|
+
break;
|
1431
|
+
}
|
1432
|
+
object = object[key];
|
1433
|
+
}
|
1434
|
+
if (result || ++index != length) {
|
1435
|
+
return result;
|
1436
|
+
}
|
1437
|
+
length = object == null ? 0 : object.length;
|
1438
|
+
return !!length && isLength(length) && isIndex(key, length) && (isArray(object) || isArguments(object));
|
1439
|
+
}
|
1440
|
+
__name(hasPath, "hasPath");
|
1441
|
+
function hasIn(object, path) {
|
1442
|
+
return object != null && hasPath(object, path, baseHasIn);
|
1443
|
+
}
|
1444
|
+
__name(hasIn, "hasIn");
|
1445
|
+
var COMPARE_PARTIAL_FLAG = 1, COMPARE_UNORDERED_FLAG = 2;
|
1446
|
+
function baseMatchesProperty(path, srcValue) {
|
1447
|
+
if (isKey(path) && isStrictComparable(srcValue)) {
|
1448
|
+
return matchesStrictComparable(toKey(path), srcValue);
|
1449
|
+
}
|
1450
|
+
return function(object) {
|
1451
|
+
var objValue = get(object, path);
|
1452
|
+
return objValue === void 0 && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
|
1453
|
+
};
|
1454
|
+
}
|
1455
|
+
__name(baseMatchesProperty, "baseMatchesProperty");
|
1456
|
+
function baseProperty(key) {
|
1457
|
+
return function(object) {
|
1458
|
+
return object == null ? void 0 : object[key];
|
1459
|
+
};
|
1460
|
+
}
|
1461
|
+
__name(baseProperty, "baseProperty");
|
1462
|
+
function basePropertyDeep(path) {
|
1463
|
+
return function(object) {
|
1464
|
+
return baseGet(object, path);
|
1465
|
+
};
|
1466
|
+
}
|
1467
|
+
__name(basePropertyDeep, "basePropertyDeep");
|
1468
|
+
function property(path) {
|
1469
|
+
return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
|
1470
|
+
}
|
1471
|
+
__name(property, "property");
|
1472
|
+
function baseIteratee(value) {
|
1473
|
+
if (typeof value == "function") {
|
1474
|
+
return value;
|
1475
|
+
}
|
1476
|
+
if (value == null) {
|
1477
|
+
return identity;
|
1478
|
+
}
|
1479
|
+
if (typeof value == "object") {
|
1480
|
+
return isArray(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value);
|
1481
|
+
}
|
1482
|
+
return property(value);
|
1483
|
+
}
|
1484
|
+
__name(baseIteratee, "baseIteratee");
|
1485
|
+
function createBaseFor(fromRight) {
|
1486
|
+
return function(object, iteratee, keysFunc) {
|
1487
|
+
var index = -1, iterable = Object(object), props = keysFunc(object), length = props.length;
|
1488
|
+
while (length--) {
|
1489
|
+
var key = props[++index];
|
1490
|
+
if (iteratee(iterable[key], key, iterable) === false) {
|
1491
|
+
break;
|
1492
|
+
}
|
1493
|
+
}
|
1494
|
+
return object;
|
1495
|
+
};
|
1496
|
+
}
|
1497
|
+
__name(createBaseFor, "createBaseFor");
|
1498
|
+
var baseFor = createBaseFor();
|
1499
|
+
function baseForOwn(object, iteratee) {
|
1500
|
+
return object && baseFor(object, iteratee, keys);
|
1501
|
+
}
|
1502
|
+
__name(baseForOwn, "baseForOwn");
|
1503
|
+
function createBaseEach(eachFunc, fromRight) {
|
1504
|
+
return function(collection, iteratee) {
|
1505
|
+
if (collection == null) {
|
1506
|
+
return collection;
|
1507
|
+
}
|
1508
|
+
if (!isArrayLike(collection)) {
|
1509
|
+
return eachFunc(collection, iteratee);
|
1510
|
+
}
|
1511
|
+
var length = collection.length, index = -1, iterable = Object(collection);
|
1512
|
+
while (++index < length) {
|
1513
|
+
if (iteratee(iterable[index], index, iterable) === false) {
|
1514
|
+
break;
|
1515
|
+
}
|
1516
|
+
}
|
1517
|
+
return collection;
|
1518
|
+
};
|
1519
|
+
}
|
1520
|
+
__name(createBaseEach, "createBaseEach");
|
1521
|
+
var baseEach = createBaseEach(baseForOwn);
|
1522
|
+
function baseMap(collection, iteratee) {
|
1523
|
+
var index = -1, result = isArrayLike(collection) ? Array(collection.length) : [];
|
1524
|
+
baseEach(collection, function(value, key, collection2) {
|
1525
|
+
result[++index] = iteratee(value, key, collection2);
|
1526
|
+
});
|
1527
|
+
return result;
|
1528
|
+
}
|
1529
|
+
__name(baseMap, "baseMap");
|
1530
|
+
function map(collection, iteratee) {
|
1531
|
+
var func = isArray(collection) ? arrayMap : baseMap;
|
1532
|
+
return func(collection, baseIteratee(iteratee));
|
1533
|
+
}
|
1534
|
+
__name(map, "map");
|
1535
|
+
function flatMap(collection, iteratee) {
|
1536
|
+
return baseFlatten(map(collection, iteratee));
|
1537
|
+
}
|
1538
|
+
__name(flatMap, "flatMap");
|
1539
|
+
function getOverlapOfNonCircularRanges(rangeA, rangeB) {
|
1540
|
+
if (rangeA.start < rangeB.start) {
|
1541
|
+
if (rangeA.end < rangeB.start)
|
1542
|
+
;
|
1543
|
+
else {
|
1544
|
+
if (rangeA.end < rangeB.end) {
|
1545
|
+
return {
|
1546
|
+
start: rangeB.start,
|
1547
|
+
end: rangeA.end
|
1548
|
+
};
|
1549
|
+
} else {
|
1550
|
+
return {
|
1551
|
+
start: rangeB.start,
|
1552
|
+
end: rangeB.end
|
1553
|
+
};
|
1554
|
+
}
|
1555
|
+
}
|
1556
|
+
} else {
|
1557
|
+
if (rangeA.start > rangeB.end)
|
1558
|
+
;
|
1559
|
+
else {
|
1560
|
+
if (rangeA.end < rangeB.end) {
|
1561
|
+
return {
|
1562
|
+
start: rangeA.start,
|
1563
|
+
end: rangeA.end
|
1564
|
+
};
|
1565
|
+
} else {
|
1566
|
+
return {
|
1567
|
+
start: rangeA.start,
|
1568
|
+
end: rangeB.end
|
1569
|
+
};
|
1570
|
+
}
|
1571
|
+
}
|
1572
|
+
}
|
1573
|
+
}
|
1574
|
+
__name(getOverlapOfNonCircularRanges, "getOverlapOfNonCircularRanges");
|
1575
|
+
function getOverlapsOfPotentiallyCircularRanges(rangeA, rangeB, maxRangeLength, joinIfPossible) {
|
1576
|
+
const normalizedRangeA = splitRangeIntoTwoPartsIfItIsCircular(
|
1577
|
+
rangeA,
|
1578
|
+
maxRangeLength
|
1579
|
+
);
|
1580
|
+
const normalizedRangeB = splitRangeIntoTwoPartsIfItIsCircular(
|
1581
|
+
rangeB,
|
1582
|
+
maxRangeLength
|
1583
|
+
);
|
1584
|
+
let overlaps = [];
|
1585
|
+
normalizedRangeA.forEach(function(nonCircularRangeA) {
|
1586
|
+
normalizedRangeB.forEach(function(nonCircularRangeB) {
|
1587
|
+
const overlap = getOverlapOfNonCircularRanges(
|
1588
|
+
nonCircularRangeA,
|
1589
|
+
nonCircularRangeB
|
1590
|
+
);
|
1591
|
+
if (overlap) {
|
1592
|
+
overlaps.push(overlap);
|
1593
|
+
}
|
1594
|
+
});
|
1595
|
+
});
|
1596
|
+
if (joinIfPossible && normalizedRangeA.length === 2 && normalizedRangeB.length === 2 && maxRangeLength) {
|
1597
|
+
const joinedOverlap = {};
|
1598
|
+
overlaps = flatMap(overlaps, (o) => {
|
1599
|
+
if (o.start === 0) {
|
1600
|
+
joinedOverlap.end = o.end;
|
1601
|
+
return [];
|
1602
|
+
} else if (o.end === maxRangeLength - 1) {
|
1603
|
+
joinedOverlap.start = o.start;
|
1604
|
+
return [];
|
1605
|
+
}
|
1606
|
+
});
|
1607
|
+
overlaps.push(joinedOverlap);
|
1608
|
+
}
|
1609
|
+
return overlaps;
|
1610
|
+
}
|
1611
|
+
__name(getOverlapsOfPotentiallyCircularRanges, "getOverlapsOfPotentiallyCircularRanges");
|
1612
|
+
function trimNonCicularRangeByAnotherNonCircularRange(rangeToBeTrimmed, trimmingRange) {
|
1613
|
+
let outputTrimmedRange;
|
1614
|
+
if (!rangeToBeTrimmed) {
|
1615
|
+
return outputTrimmedRange;
|
1616
|
+
}
|
1617
|
+
if (rangeToBeTrimmed.start < trimmingRange.start) {
|
1618
|
+
if (rangeToBeTrimmed.end < trimmingRange.start) {
|
1619
|
+
outputTrimmedRange = {
|
1620
|
+
start: rangeToBeTrimmed.start,
|
1621
|
+
end: rangeToBeTrimmed.end
|
1622
|
+
};
|
1623
|
+
} else {
|
1624
|
+
if (rangeToBeTrimmed.end > trimmingRange.end) {
|
1625
|
+
outputTrimmedRange = {
|
1626
|
+
start: rangeToBeTrimmed.start,
|
1627
|
+
end: rangeToBeTrimmed.end
|
1628
|
+
};
|
1629
|
+
} else {
|
1630
|
+
outputTrimmedRange = {
|
1631
|
+
start: rangeToBeTrimmed.start,
|
1632
|
+
end: trimmingRange.start - 1
|
1633
|
+
};
|
1634
|
+
}
|
1635
|
+
}
|
1636
|
+
} else {
|
1637
|
+
if (rangeToBeTrimmed.end <= trimmingRange.end)
|
1638
|
+
;
|
1639
|
+
else {
|
1640
|
+
if (rangeToBeTrimmed.start > trimmingRange.end) {
|
1641
|
+
outputTrimmedRange = {
|
1642
|
+
end: rangeToBeTrimmed.end,
|
1643
|
+
start: rangeToBeTrimmed.start
|
1644
|
+
};
|
1645
|
+
} else {
|
1646
|
+
outputTrimmedRange = {
|
1647
|
+
end: rangeToBeTrimmed.end,
|
1648
|
+
start: trimmingRange.end + 1
|
1649
|
+
};
|
1650
|
+
}
|
1651
|
+
}
|
1652
|
+
}
|
1653
|
+
return outputTrimmedRange;
|
1654
|
+
}
|
1655
|
+
__name(trimNonCicularRangeByAnotherNonCircularRange, "trimNonCicularRangeByAnotherNonCircularRange");
|
1656
|
+
function trimRangeByAnotherRange(rangeToBeTrimmed, trimmingRange, sequenceLength) {
|
1657
|
+
if (!rangeToBeTrimmed || !trimmingRange) {
|
1658
|
+
console.warn("invalid range input");
|
1659
|
+
return null;
|
1660
|
+
}
|
1661
|
+
let position;
|
1662
|
+
for (position of [
|
1663
|
+
rangeToBeTrimmed.start,
|
1664
|
+
rangeToBeTrimmed.end,
|
1665
|
+
trimmingRange.start,
|
1666
|
+
trimmingRange.end
|
1667
|
+
]) {
|
1668
|
+
if (position < 0 || !position && position !== 0) {
|
1669
|
+
console.warn("invalid range input");
|
1670
|
+
return null;
|
1671
|
+
}
|
1672
|
+
}
|
1673
|
+
const overlaps = getOverlapsOfPotentiallyCircularRanges(
|
1674
|
+
rangeToBeTrimmed,
|
1675
|
+
trimmingRange,
|
1676
|
+
sequenceLength
|
1677
|
+
);
|
1678
|
+
if (!overlaps.length) {
|
1679
|
+
return rangeToBeTrimmed;
|
1680
|
+
}
|
1681
|
+
const splitRangesToBeTrimmed = splitRangeIntoTwoPartsIfItIsCircular(
|
1682
|
+
rangeToBeTrimmed,
|
1683
|
+
sequenceLength
|
1684
|
+
);
|
1685
|
+
splitRangesToBeTrimmed.forEach(function(nonCircularRangeToBeTrimmed, index) {
|
1686
|
+
overlaps.forEach(function(overlap) {
|
1687
|
+
if (nonCircularRangeToBeTrimmed) {
|
1688
|
+
nonCircularRangeToBeTrimmed = trimNonCicularRangeByAnotherNonCircularRange(
|
1689
|
+
nonCircularRangeToBeTrimmed,
|
1690
|
+
overlap
|
1691
|
+
);
|
1692
|
+
}
|
1693
|
+
});
|
1694
|
+
splitRangesToBeTrimmed[index] = nonCircularRangeToBeTrimmed;
|
1695
|
+
});
|
1696
|
+
const outputSplitRanges = splitRangesToBeTrimmed.filter(
|
1697
|
+
function(trimmedRange) {
|
1698
|
+
if (trimmedRange) {
|
1699
|
+
return true;
|
1700
|
+
}
|
1701
|
+
return false;
|
1702
|
+
}
|
1703
|
+
);
|
1704
|
+
let outputTrimmedRange;
|
1705
|
+
if (outputSplitRanges.length < 0)
|
1706
|
+
;
|
1707
|
+
else if (outputSplitRanges.length === 1) {
|
1708
|
+
outputTrimmedRange = outputSplitRanges[0];
|
1709
|
+
} else if (outputSplitRanges.length === 2) {
|
1710
|
+
if (outputSplitRanges[0].start < outputSplitRanges[1].start) {
|
1711
|
+
outputTrimmedRange = {
|
1712
|
+
start: outputSplitRanges[1].start,
|
1713
|
+
end: outputSplitRanges[0].end
|
1714
|
+
};
|
1715
|
+
} else {
|
1716
|
+
outputTrimmedRange = {
|
1717
|
+
start: outputSplitRanges[0].start,
|
1718
|
+
end: outputSplitRanges[1].end
|
1719
|
+
};
|
1720
|
+
}
|
1721
|
+
}
|
1722
|
+
if (outputTrimmedRange) {
|
1723
|
+
return assignIn({}, rangeToBeTrimmed, {
|
1724
|
+
start: outputTrimmedRange.start,
|
1725
|
+
end: outputTrimmedRange.end
|
1726
|
+
});
|
1727
|
+
}
|
1728
|
+
}
|
1729
|
+
__name(trimRangeByAnotherRange, "trimRangeByAnotherRange");
|
1730
|
+
function adjustRangeToDeletionOfAnotherRange(rangeToBeAdjusted, anotherRange, maxLength) {
|
1731
|
+
const trimmedRange = trimRangeByAnotherRange(
|
1732
|
+
rangeToBeAdjusted,
|
1733
|
+
anotherRange,
|
1734
|
+
maxLength
|
1735
|
+
);
|
1736
|
+
if (trimmedRange) {
|
1737
|
+
const nonCircularDeletionRanges = splitRangeIntoTwoPartsIfItIsCircular(
|
1738
|
+
anotherRange,
|
1739
|
+
maxLength
|
1740
|
+
);
|
1741
|
+
nonCircularDeletionRanges.forEach(function(nonCircularDeletionRange) {
|
1742
|
+
const deletionLength = nonCircularDeletionRange.end - nonCircularDeletionRange.start + 1;
|
1743
|
+
if (trimmedRange.start > trimmedRange.end) {
|
1744
|
+
if (nonCircularDeletionRange.start < trimmedRange.end) {
|
1745
|
+
trimmedRange.start -= deletionLength;
|
1746
|
+
trimmedRange.end -= deletionLength;
|
1747
|
+
} else if (nonCircularDeletionRange.start < trimmedRange.start) {
|
1748
|
+
trimmedRange.start -= deletionLength;
|
1749
|
+
} else
|
1750
|
+
;
|
1751
|
+
} else {
|
1752
|
+
if (nonCircularDeletionRange.start < trimmedRange.start) {
|
1753
|
+
trimmedRange.start -= deletionLength;
|
1754
|
+
trimmedRange.end -= deletionLength;
|
1755
|
+
} else if (nonCircularDeletionRange.start < trimmedRange.end) {
|
1756
|
+
trimmedRange.end -= deletionLength;
|
1757
|
+
} else
|
1758
|
+
;
|
1759
|
+
}
|
1760
|
+
});
|
1761
|
+
}
|
1762
|
+
return trimmedRange;
|
1763
|
+
}
|
1764
|
+
__name(adjustRangeToDeletionOfAnotherRange, "adjustRangeToDeletionOfAnotherRange");
|
1765
|
+
function adjustRangeToInsert(rangeToBeAdjusted, insertStart, insertLength) {
|
1766
|
+
const newRange = assign({}, rangeToBeAdjusted);
|
1767
|
+
if (rangeToBeAdjusted.start > rangeToBeAdjusted.end) {
|
1768
|
+
if (rangeToBeAdjusted.end >= insertStart) {
|
1769
|
+
newRange.start += insertLength;
|
1770
|
+
newRange.end += insertLength;
|
1771
|
+
} else if (rangeToBeAdjusted.start >= insertStart) {
|
1772
|
+
newRange.start += insertLength;
|
1773
|
+
}
|
1774
|
+
} else {
|
1775
|
+
if (rangeToBeAdjusted.start >= insertStart) {
|
1776
|
+
newRange.start += insertLength;
|
1777
|
+
newRange.end += insertLength;
|
1778
|
+
} else if (rangeToBeAdjusted.end >= insertStart) {
|
1779
|
+
newRange.end += insertLength;
|
1780
|
+
}
|
1781
|
+
}
|
1782
|
+
return newRange;
|
1783
|
+
}
|
1784
|
+
__name(adjustRangeToInsert, "adjustRangeToInsert");
|
1785
|
+
function checkIfNonCircularRangesOverlap(range, comparisonRange) {
|
1786
|
+
if (range.start < comparisonRange.start) {
|
1787
|
+
if (range.end < comparisonRange.start) {
|
1788
|
+
return false;
|
1789
|
+
} else {
|
1790
|
+
return true;
|
1791
|
+
}
|
1792
|
+
} else {
|
1793
|
+
if (range.start > comparisonRange.end) {
|
1794
|
+
return false;
|
1795
|
+
} else {
|
1796
|
+
return true;
|
1797
|
+
}
|
1798
|
+
}
|
1799
|
+
}
|
1800
|
+
__name(checkIfNonCircularRangesOverlap, "checkIfNonCircularRangesOverlap");
|
1801
|
+
function checkIfPotentiallyCircularRangesOverlap(range, comparisonRange) {
|
1802
|
+
return splitRangeIntoTwoPartsIfItIsCircular(range, Infinity).some(
|
1803
|
+
function(splitRange) {
|
1804
|
+
return splitRangeIntoTwoPartsIfItIsCircular(
|
1805
|
+
comparisonRange,
|
1806
|
+
Infinity
|
1807
|
+
).some(function(splitComparisonRange) {
|
1808
|
+
return checkIfNonCircularRangesOverlap(
|
1809
|
+
splitRange,
|
1810
|
+
splitComparisonRange
|
1811
|
+
);
|
1812
|
+
});
|
1813
|
+
}
|
1814
|
+
);
|
1815
|
+
}
|
1816
|
+
__name(checkIfPotentiallyCircularRangesOverlap, "checkIfPotentiallyCircularRangesOverlap");
|
1817
|
+
function collapseOverlapsGeneratedFromRangeComparisonIfPossible(overlaps, sequenceLength, optionalOriginalRange) {
|
1818
|
+
const originalRangeLinear = optionalOriginalRange && optionalOriginalRange.start <= optionalOriginalRange.end;
|
1819
|
+
if (overlaps.length === 1 || overlaps.length === 0) {
|
1820
|
+
return overlaps;
|
1821
|
+
} else if (overlaps.length === 2) {
|
1822
|
+
if (overlaps[0].start === 0 && overlaps[1].end + 1 === sequenceLength && !originalRangeLinear) {
|
1823
|
+
return [
|
1824
|
+
{
|
1825
|
+
start: overlaps[1].start,
|
1826
|
+
end: overlaps[0].end
|
1827
|
+
}
|
1828
|
+
];
|
1829
|
+
} else if (overlaps[1].start === 0 && overlaps[0].end + 1 === sequenceLength && !originalRangeLinear) {
|
1830
|
+
return [
|
1831
|
+
{
|
1832
|
+
start: overlaps[0].start,
|
1833
|
+
end: overlaps[1].end
|
1834
|
+
}
|
1835
|
+
];
|
1836
|
+
} else {
|
1837
|
+
return overlaps;
|
1838
|
+
}
|
1839
|
+
} else if (overlaps.length === 3) {
|
1840
|
+
const firstOverlap = overlaps[0];
|
1841
|
+
const secondOverlap = overlaps[1];
|
1842
|
+
const thirdOverlap = overlaps[2];
|
1843
|
+
let collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(
|
1844
|
+
[firstOverlap, secondOverlap],
|
1845
|
+
sequenceLength,
|
1846
|
+
optionalOriginalRange
|
1847
|
+
);
|
1848
|
+
if (collapsedOverlaps.length === 1) {
|
1849
|
+
collapsedOverlaps.push(thirdOverlap);
|
1850
|
+
return collapsedOverlaps;
|
1851
|
+
} else {
|
1852
|
+
collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(
|
1853
|
+
[firstOverlap, thirdOverlap],
|
1854
|
+
sequenceLength,
|
1855
|
+
optionalOriginalRange
|
1856
|
+
);
|
1857
|
+
if (collapsedOverlaps.length === 1) {
|
1858
|
+
collapsedOverlaps.push(secondOverlap);
|
1859
|
+
return collapsedOverlaps;
|
1860
|
+
} else {
|
1861
|
+
collapsedOverlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(
|
1862
|
+
[secondOverlap, thirdOverlap],
|
1863
|
+
sequenceLength,
|
1864
|
+
optionalOriginalRange
|
1865
|
+
);
|
1866
|
+
if (collapsedOverlaps.length === 1) {
|
1867
|
+
collapsedOverlaps.push(firstOverlap);
|
1868
|
+
return collapsedOverlaps;
|
1869
|
+
} else {
|
1870
|
+
return overlaps;
|
1871
|
+
}
|
1872
|
+
}
|
1873
|
+
}
|
1874
|
+
}
|
1875
|
+
}
|
1876
|
+
__name(collapseOverlapsGeneratedFromRangeComparisonIfPossible, "collapseOverlapsGeneratedFromRangeComparisonIfPossible");
|
1877
|
+
function convertRangeIndices(range, inputType, outputType) {
|
1878
|
+
inputType = inputType || {};
|
1879
|
+
outputType = outputType || {};
|
1880
|
+
return assign({}, range, {
|
1881
|
+
start: Number(range.start) + (inputType.inclusive1BasedStart ? outputType.inclusive1BasedStart ? 0 : -1 : outputType.inclusive1BasedStart ? 1 : 0),
|
1882
|
+
end: Number(range.end) + (inputType.inclusive1BasedEnd ? outputType.inclusive1BasedEnd ? 0 : -1 : outputType.inclusive1BasedEnd ? 1 : 0)
|
1883
|
+
});
|
1884
|
+
}
|
1885
|
+
__name(convertRangeIndices, "convertRangeIndices");
|
1886
|
+
function convertRangeTo0Based(range) {
|
1887
|
+
return convertRangeIndices(range, {
|
1888
|
+
inclusive1BasedStart: true,
|
1889
|
+
inclusive1BasedEnd: true
|
1890
|
+
});
|
1891
|
+
}
|
1892
|
+
__name(convertRangeTo0Based, "convertRangeTo0Based");
|
1893
|
+
function convertRangeTo1Based(range) {
|
1894
|
+
return convertRangeIndices(
|
1895
|
+
range,
|
1896
|
+
{},
|
1897
|
+
{ inclusive1BasedStart: true, inclusive1BasedEnd: true }
|
1898
|
+
);
|
1899
|
+
}
|
1900
|
+
__name(convertRangeTo1Based, "convertRangeTo1Based");
|
1901
|
+
function provideInclusiveOptions(funToWrap) {
|
1902
|
+
return function() {
|
1903
|
+
const args = Array.prototype.slice.call(arguments);
|
1904
|
+
const options = args[args.length - 1];
|
1905
|
+
if (options && (options.inclusive1BasedEnd || options.inclusive1BasedStart)) {
|
1906
|
+
args.forEach(function(arg, index) {
|
1907
|
+
if (arg && arg.start > -1 && options.inclusive1BasedStart) {
|
1908
|
+
args[index] = assign(arg, { start: arg.start - 1 });
|
1909
|
+
}
|
1910
|
+
if (arg && arg.end > -1 && options.inclusive1BasedEnd) {
|
1911
|
+
args[index] = assign(arg, { end: arg.end - 1 });
|
1912
|
+
}
|
1913
|
+
});
|
1914
|
+
}
|
1915
|
+
let returnVal = funToWrap.apply(this, args);
|
1916
|
+
if (returnVal && returnVal.start > -1 && options && options.inclusive1BasedStart) {
|
1917
|
+
returnVal = assign(returnVal, { start: returnVal.start + 1 });
|
1918
|
+
}
|
1919
|
+
if (returnVal && returnVal.end > -1 && options && options.inclusive1BasedEnd) {
|
1920
|
+
returnVal = assign(returnVal, { end: returnVal.end + 1 });
|
1921
|
+
}
|
1922
|
+
return returnVal;
|
1923
|
+
};
|
1924
|
+
}
|
1925
|
+
__name(provideInclusiveOptions, "provideInclusiveOptions");
|
1926
|
+
const getRangeLength = provideInclusiveOptions(getRangeLength$1);
|
1927
|
+
function getRangeLength$1(range, rangeMax) {
|
1928
|
+
let toRet;
|
1929
|
+
if (range.end < range.start) {
|
1930
|
+
toRet = rangeMax - range.start + range.end + 1;
|
1931
|
+
} else {
|
1932
|
+
toRet = range.end - range.start + 1;
|
1933
|
+
}
|
1934
|
+
if (range.overlapsSelf && rangeMax) {
|
1935
|
+
toRet += rangeMax;
|
1936
|
+
}
|
1937
|
+
return toRet;
|
1938
|
+
}
|
1939
|
+
__name(getRangeLength$1, "getRangeLength$1");
|
1940
|
+
function doesRangeSpanEntireSequence(range, sequenceLength) {
|
1941
|
+
if (getRangeLength(range) === sequenceLength) {
|
1942
|
+
return true;
|
1943
|
+
}
|
1944
|
+
}
|
1945
|
+
__name(doesRangeSpanEntireSequence, "doesRangeSpanEntireSequence");
|
1946
|
+
function isRangeWithinRange(rangeToCheck, containingRange, maxLength) {
|
1947
|
+
const ranges = trimRangeByAnotherRange(
|
1948
|
+
rangeToCheck,
|
1949
|
+
containingRange,
|
1950
|
+
maxLength
|
1951
|
+
);
|
1952
|
+
if (ranges === null)
|
1953
|
+
return false;
|
1954
|
+
return !ranges;
|
1955
|
+
}
|
1956
|
+
__name(isRangeWithinRange, "isRangeWithinRange");
|
1957
|
+
function isPositionWithinRange(position, range, sequenceLength, includeStartEdge, includeEndEdge) {
|
1958
|
+
const ranges = splitRangeIntoTwoPartsIfItIsCircular(range, sequenceLength);
|
1959
|
+
const positionFits = ranges.some(function(range2) {
|
1960
|
+
if (includeStartEdge ? position < range2.start : position <= range2.start) {
|
1961
|
+
return false;
|
1962
|
+
} else {
|
1963
|
+
if (includeEndEdge ? position <= range2.end + 1 : position <= range2.end) {
|
1964
|
+
return true;
|
1965
|
+
} else {
|
1966
|
+
return false;
|
1967
|
+
}
|
1968
|
+
}
|
1969
|
+
});
|
1970
|
+
return positionFits;
|
1971
|
+
}
|
1972
|
+
__name(isPositionWithinRange, "isPositionWithinRange");
|
1973
|
+
function isRangeOrPositionWithinRange(rangeOrPositionToCheck, containingRange, maxLength, includeStartEdge, includeEndEdge) {
|
1974
|
+
if (rangeOrPositionToCheck === void 0 || rangeOrPositionToCheck === null || containingRange === void 0 || containingRange === null) {
|
1975
|
+
return false;
|
1976
|
+
}
|
1977
|
+
if (isObject(rangeOrPositionToCheck)) {
|
1978
|
+
return isRangeWithinRange(
|
1979
|
+
rangeOrPositionToCheck,
|
1980
|
+
containingRange,
|
1981
|
+
maxLength
|
1982
|
+
);
|
1983
|
+
} else {
|
1984
|
+
return isPositionWithinRange(
|
1985
|
+
rangeOrPositionToCheck,
|
1986
|
+
containingRange,
|
1987
|
+
maxLength,
|
1988
|
+
includeStartEdge,
|
1989
|
+
includeEndEdge
|
1990
|
+
);
|
1991
|
+
}
|
1992
|
+
}
|
1993
|
+
__name(isRangeOrPositionWithinRange, "isRangeOrPositionWithinRange");
|
1994
|
+
function doesRangeSpanOrigin(range) {
|
1995
|
+
return range.start > range.end;
|
1996
|
+
}
|
1997
|
+
__name(doesRangeSpanOrigin, "doesRangeSpanOrigin");
|
1998
|
+
function normalizePositionByRangeLength(pPosition, sequenceLength, isInBetweenPositions) {
|
1999
|
+
let position = pPosition;
|
2000
|
+
if (position < 0) {
|
2001
|
+
position += sequenceLength;
|
2002
|
+
} else if (position + (isInBetweenPositions ? 0 : 1) > sequenceLength) {
|
2003
|
+
position -= sequenceLength;
|
2004
|
+
}
|
2005
|
+
return position < 0 ? 0 : position > sequenceLength - (isInBetweenPositions ? 0 : 1) ? sequenceLength - (isInBetweenPositions ? 0 : 1) : position;
|
2006
|
+
}
|
2007
|
+
__name(normalizePositionByRangeLength, "normalizePositionByRangeLength");
|
2008
|
+
function expandOrContractCircularRangeToPosition(range, position, maxLength) {
|
2009
|
+
const newRange = assign({}, range);
|
2010
|
+
let endMoved = true;
|
2011
|
+
if (range.end >= position) {
|
2012
|
+
if (position + maxLength - range.start > range.end - position) {
|
2013
|
+
newRange.end = normalizePositionByRangeLength(
|
2014
|
+
position - 1,
|
2015
|
+
maxLength,
|
2016
|
+
false
|
2017
|
+
);
|
2018
|
+
} else {
|
2019
|
+
newRange.start = position;
|
2020
|
+
endMoved = false;
|
2021
|
+
}
|
2022
|
+
} else {
|
2023
|
+
if (range.start < position) {
|
2024
|
+
if (range.end + maxLength - position > position - range.start) {
|
2025
|
+
newRange.start = position;
|
2026
|
+
endMoved = false;
|
2027
|
+
} else {
|
2028
|
+
newRange.end = position - 1;
|
2029
|
+
}
|
2030
|
+
} else {
|
2031
|
+
if (range.start - position > position - range.end) {
|
2032
|
+
newRange.end = position - 1;
|
2033
|
+
} else {
|
2034
|
+
endMoved = false;
|
2035
|
+
newRange.start = position;
|
2036
|
+
}
|
2037
|
+
}
|
2038
|
+
}
|
2039
|
+
return {
|
2040
|
+
newRange,
|
2041
|
+
endMoved
|
2042
|
+
};
|
2043
|
+
}
|
2044
|
+
__name(expandOrContractCircularRangeToPosition, "expandOrContractCircularRangeToPosition");
|
2045
|
+
function expandOrContractNonCircularRangeToPosition(range, position) {
|
2046
|
+
const newRange = assign({}, range);
|
2047
|
+
let endMoved = true;
|
2048
|
+
if (range.start > position) {
|
2049
|
+
newRange.start = position;
|
2050
|
+
endMoved = false;
|
2051
|
+
} else {
|
2052
|
+
if (range.end < position) {
|
2053
|
+
newRange.end = position - 1;
|
2054
|
+
} else {
|
2055
|
+
if (position - range.start > range.end - position) {
|
2056
|
+
newRange.end = position - 1;
|
2057
|
+
} else {
|
2058
|
+
newRange.start = position;
|
2059
|
+
endMoved = false;
|
2060
|
+
}
|
2061
|
+
}
|
2062
|
+
}
|
2063
|
+
return {
|
2064
|
+
newRange,
|
2065
|
+
endMoved
|
2066
|
+
};
|
2067
|
+
}
|
2068
|
+
__name(expandOrContractNonCircularRangeToPosition, "expandOrContractNonCircularRangeToPosition");
|
2069
|
+
function normalizeRange(range, sequenceLength) {
|
2070
|
+
return assign({}, range, {
|
2071
|
+
start: normalizePositionByRangeLength(range.start, sequenceLength),
|
2072
|
+
end: normalizePositionByRangeLength(range.end, sequenceLength)
|
2073
|
+
});
|
2074
|
+
}
|
2075
|
+
__name(normalizeRange, "normalizeRange");
|
2076
|
+
function expandOrContractRangeByLength(range, shiftBy, shiftStart, sequenceLength) {
|
2077
|
+
const rangeToReturn = clone(range);
|
2078
|
+
if (shiftStart) {
|
2079
|
+
rangeToReturn.start -= shiftBy;
|
2080
|
+
} else {
|
2081
|
+
rangeToReturn.end += shiftBy;
|
2082
|
+
}
|
2083
|
+
return normalizeRange(rangeToReturn, sequenceLength);
|
2084
|
+
}
|
2085
|
+
__name(expandOrContractRangeByLength, "expandOrContractRangeByLength");
|
2086
|
+
function expandOrContractRangeToPosition(range, position, maxLength) {
|
2087
|
+
if (range.start > range.end) {
|
2088
|
+
return expandOrContractCircularRangeToPosition(range, position, maxLength);
|
2089
|
+
} else {
|
2090
|
+
return expandOrContractNonCircularRangeToPosition(
|
2091
|
+
range,
|
2092
|
+
position
|
2093
|
+
);
|
2094
|
+
}
|
2095
|
+
}
|
2096
|
+
__name(expandOrContractRangeToPosition, "expandOrContractRangeToPosition");
|
2097
|
+
function translateRange(rangeToBeAdjusted, translateBy, rangeLength) {
|
2098
|
+
return assign({}, rangeToBeAdjusted, {
|
2099
|
+
start: normalizePositionByRangeLength(
|
2100
|
+
rangeToBeAdjusted.start + translateBy,
|
2101
|
+
rangeLength
|
2102
|
+
),
|
2103
|
+
end: normalizePositionByRangeLength(
|
2104
|
+
rangeToBeAdjusted.end + translateBy,
|
2105
|
+
rangeLength
|
2106
|
+
)
|
2107
|
+
});
|
2108
|
+
}
|
2109
|
+
__name(translateRange, "translateRange");
|
2110
|
+
function flipRelativeRange(innerRange, outerRange, sequenceLength) {
|
2111
|
+
const isFullyContained = isRangeWithinRange(
|
2112
|
+
innerRange,
|
2113
|
+
outerRange,
|
2114
|
+
sequenceLength
|
2115
|
+
);
|
2116
|
+
if (isFullyContained) {
|
2117
|
+
return flipFullyContainedRange(innerRange, outerRange, sequenceLength);
|
2118
|
+
} else {
|
2119
|
+
return flipNonFullyContainedRange(innerRange, outerRange, sequenceLength);
|
2120
|
+
}
|
2121
|
+
}
|
2122
|
+
__name(flipRelativeRange, "flipRelativeRange");
|
2123
|
+
function flipNonFullyContainedRange(innerRange, outerRange, sequenceLength) {
|
2124
|
+
const outerFullyContained = isRangeWithinRange(
|
2125
|
+
outerRange,
|
2126
|
+
innerRange,
|
2127
|
+
sequenceLength
|
2128
|
+
);
|
2129
|
+
let flippedInnerRange;
|
2130
|
+
if (outerFullyContained) {
|
2131
|
+
const expandBy1 = getRangeLength(
|
2132
|
+
{
|
2133
|
+
start: innerRange.start,
|
2134
|
+
end: outerRange.start
|
2135
|
+
},
|
2136
|
+
sequenceLength
|
2137
|
+
) - 1;
|
2138
|
+
flippedInnerRange = expandOrContractRangeByLength(
|
2139
|
+
outerRange,
|
2140
|
+
expandBy1,
|
2141
|
+
false,
|
2142
|
+
sequenceLength
|
2143
|
+
);
|
2144
|
+
const expandBy2 = getRangeLength(
|
2145
|
+
{
|
2146
|
+
end: innerRange.end,
|
2147
|
+
start: outerRange.end
|
2148
|
+
},
|
2149
|
+
sequenceLength
|
2150
|
+
) - 1;
|
2151
|
+
flippedInnerRange = expandOrContractRangeByLength(
|
2152
|
+
flippedInnerRange,
|
2153
|
+
expandBy2,
|
2154
|
+
true,
|
2155
|
+
sequenceLength
|
2156
|
+
);
|
2157
|
+
} else {
|
2158
|
+
const overlaps = getOverlapsOfPotentiallyCircularRanges(
|
2159
|
+
innerRange,
|
2160
|
+
outerRange,
|
2161
|
+
sequenceLength
|
2162
|
+
);
|
2163
|
+
if (overlaps.length >= 1) {
|
2164
|
+
const firstOverlap = overlaps[0];
|
2165
|
+
const overlapExtendsForward = firstOverlap.start !== outerRange.start;
|
2166
|
+
const flippedTruncatedInner = flipFullyContainedRange(
|
2167
|
+
firstOverlap,
|
2168
|
+
outerRange,
|
2169
|
+
sequenceLength
|
2170
|
+
);
|
2171
|
+
const lengthToExtend = getRangeLength(innerRange, sequenceLength) - getRangeLength(flippedTruncatedInner, sequenceLength);
|
2172
|
+
flippedInnerRange = expandOrContractRangeByLength(
|
2173
|
+
flippedTruncatedInner,
|
2174
|
+
lengthToExtend,
|
2175
|
+
overlapExtendsForward,
|
2176
|
+
sequenceLength
|
2177
|
+
);
|
2178
|
+
} else {
|
2179
|
+
throw new Error(
|
2180
|
+
"This case (relative ranges that do not overlap) is unsupported! "
|
2181
|
+
);
|
2182
|
+
}
|
2183
|
+
}
|
2184
|
+
return flippedInnerRange;
|
2185
|
+
}
|
2186
|
+
__name(flipNonFullyContainedRange, "flipNonFullyContainedRange");
|
2187
|
+
function flipFullyContainedRange(innerRange, outerRange, sequenceLength) {
|
2188
|
+
const translateBy = -outerRange.start;
|
2189
|
+
const translatedOuterRange = translateRange(
|
2190
|
+
outerRange,
|
2191
|
+
translateBy,
|
2192
|
+
sequenceLength
|
2193
|
+
);
|
2194
|
+
const translatedInnerRange = translateRange(
|
2195
|
+
innerRange,
|
2196
|
+
translateBy,
|
2197
|
+
sequenceLength
|
2198
|
+
);
|
2199
|
+
const translatedFlippedInnerRange = flipNonOriginSpanningContainedRange(
|
2200
|
+
translatedInnerRange,
|
2201
|
+
translatedOuterRange,
|
2202
|
+
sequenceLength
|
2203
|
+
);
|
2204
|
+
const flippedInnerRange = translateRange(
|
2205
|
+
translatedFlippedInnerRange,
|
2206
|
+
-translateBy,
|
2207
|
+
sequenceLength
|
2208
|
+
);
|
2209
|
+
return flippedInnerRange;
|
2210
|
+
}
|
2211
|
+
__name(flipFullyContainedRange, "flipFullyContainedRange");
|
2212
|
+
function flipNonOriginSpanningContainedRange(innerRange, outerRange, sequenceLength) {
|
2213
|
+
const offsetFromStart = innerRange.start - outerRange.start;
|
2214
|
+
const newInnerEnd = outerRange.end - offsetFromStart;
|
2215
|
+
const innerRangeLength = getRangeLength(innerRange, sequenceLength);
|
2216
|
+
return {
|
2217
|
+
end: newInnerEnd,
|
2218
|
+
start: newInnerEnd - (innerRangeLength - 1)
|
2219
|
+
};
|
2220
|
+
}
|
2221
|
+
__name(flipNonOriginSpanningContainedRange, "flipNonOriginSpanningContainedRange");
|
2222
|
+
function generateRandomRange(minStart, maxEnd, maxLength) {
|
2223
|
+
const start = getRandomInt(minStart, maxEnd);
|
2224
|
+
let end;
|
2225
|
+
if (maxLength) {
|
2226
|
+
end = normalizePositionByRangeLength(
|
2227
|
+
getRandomInt(start, start + maxLength),
|
2228
|
+
maxEnd
|
2229
|
+
);
|
2230
|
+
} else {
|
2231
|
+
end = getRandomInt(minStart, maxEnd);
|
2232
|
+
}
|
2233
|
+
return {
|
2234
|
+
start,
|
2235
|
+
end
|
2236
|
+
};
|
2237
|
+
}
|
2238
|
+
__name(generateRandomRange, "generateRandomRange");
|
2239
|
+
function getRandomInt(min, max) {
|
2240
|
+
return Math.floor(Math.random() * (max - min)) + min;
|
2241
|
+
}
|
2242
|
+
__name(getRandomInt, "getRandomInt");
|
2243
|
+
function getAnnotationRangeType(annotationRange, enclosingRangeType, forward) {
|
2244
|
+
if (annotationRange.start === enclosingRangeType.start) {
|
2245
|
+
if (annotationRange.end === enclosingRangeType.end) {
|
2246
|
+
return "beginningAndEnd";
|
2247
|
+
} else {
|
2248
|
+
if (forward) {
|
2249
|
+
return "start";
|
2250
|
+
} else {
|
2251
|
+
return "end";
|
2252
|
+
}
|
2253
|
+
}
|
2254
|
+
} else {
|
2255
|
+
if (annotationRange.end === enclosingRangeType.end) {
|
2256
|
+
if (forward) {
|
2257
|
+
return "end";
|
2258
|
+
} else {
|
2259
|
+
return "start";
|
2260
|
+
}
|
2261
|
+
} else {
|
2262
|
+
return "middle";
|
2263
|
+
}
|
2264
|
+
}
|
2265
|
+
}
|
2266
|
+
__name(getAnnotationRangeType, "getAnnotationRangeType");
|
2267
|
+
function getEachPositionInRangeAsArray(range, rangeMax) {
|
2268
|
+
const output = [];
|
2269
|
+
const length = getRangeLength(range, rangeMax);
|
2270
|
+
if (!(length > 0)) {
|
2271
|
+
return output;
|
2272
|
+
}
|
2273
|
+
for (let i = range.start; i < length + range.start; i++) {
|
2274
|
+
const position = normalizePositionByRangeLength(i, rangeMax);
|
2275
|
+
output.push(position);
|
2276
|
+
}
|
2277
|
+
return output;
|
2278
|
+
}
|
2279
|
+
__name(getEachPositionInRangeAsArray, "getEachPositionInRangeAsArray");
|
2280
|
+
function getLengthOfOverlappingRegionsBetweenTwoRanges(rangeA, rangeB, maxLength) {
|
2281
|
+
const overlaps = getOverlapsOfPotentiallyCircularRanges(
|
2282
|
+
rangeA,
|
2283
|
+
rangeB,
|
2284
|
+
maxLength
|
2285
|
+
);
|
2286
|
+
return overlaps.reduce(function(counter, overlap) {
|
2287
|
+
return counter + getRangeLength(overlap, maxLength);
|
2288
|
+
}, 0);
|
2289
|
+
}
|
2290
|
+
__name(getLengthOfOverlappingRegionsBetweenTwoRanges, "getLengthOfOverlappingRegionsBetweenTwoRanges");
|
2291
|
+
function getPositionFromAngle(angle, rangeMax, isInBetweenPositions) {
|
2292
|
+
const unroundedPostion = angle / Math.PI / 2 * rangeMax;
|
2293
|
+
return isInBetweenPositions ? Math.round(unroundedPostion) : Math.floor(unroundedPostion);
|
2294
|
+
}
|
2295
|
+
__name(getPositionFromAngle, "getPositionFromAngle");
|
2296
|
+
function getRangeAngles(range, rangeMax) {
|
2297
|
+
const { startAngle, totalAngle, endAngle } = getStartEndAndTotalAngle(
|
2298
|
+
range,
|
2299
|
+
rangeMax
|
2300
|
+
);
|
2301
|
+
return {
|
2302
|
+
startAngle,
|
2303
|
+
totalAngle,
|
2304
|
+
endAngle,
|
2305
|
+
centerAngle: startAngle + totalAngle / 2,
|
2306
|
+
locationAngles: range.locations && range.locations.map((location) => {
|
2307
|
+
return getRangeAngles(location, rangeMax);
|
2308
|
+
})
|
2309
|
+
};
|
2310
|
+
}
|
2311
|
+
__name(getRangeAngles, "getRangeAngles");
|
2312
|
+
function getStartEndAndTotalAngle(range, rangeMax) {
|
2313
|
+
const rangeLength = getRangeLength(
|
2314
|
+
{ start: range.start, end: range.end },
|
2315
|
+
rangeMax
|
2316
|
+
);
|
2317
|
+
return {
|
2318
|
+
startAngle: 2 * Math.PI * (range.start / rangeMax),
|
2319
|
+
totalAngle: rangeLength / rangeMax * Math.PI * 2,
|
2320
|
+
endAngle: 2 * Math.PI * (range.end + 1) / rangeMax
|
2321
|
+
//use a +1 here because the angle must encompass the end of the annotation
|
2322
|
+
};
|
2323
|
+
}
|
2324
|
+
__name(getStartEndAndTotalAngle, "getStartEndAndTotalAngle");
|
2325
|
+
function getMiddleOfRange(range, rangeMax) {
|
2326
|
+
const len = getRangeLength({ start: range.start, end: range.end }, rangeMax);
|
2327
|
+
return normalizePositionByRangeLength(
|
2328
|
+
range.start + Math.floor(len / 2),
|
2329
|
+
rangeMax
|
2330
|
+
);
|
2331
|
+
}
|
2332
|
+
__name(getMiddleOfRange, "getMiddleOfRange");
|
2333
|
+
function getRangesBetweenTwoRanges(range1, range2) {
|
2334
|
+
const newRanges = [];
|
2335
|
+
if (!(range1.start > -1 && range1.end > -1 && range2.start > -1 && range2.end > -1)) {
|
2336
|
+
return newRanges;
|
2337
|
+
}
|
2338
|
+
return [
|
2339
|
+
{
|
2340
|
+
start: range1.start,
|
2341
|
+
end: range2.end
|
2342
|
+
},
|
2343
|
+
{
|
2344
|
+
start: range2.start,
|
2345
|
+
end: range1.end
|
2346
|
+
}
|
2347
|
+
];
|
2348
|
+
}
|
2349
|
+
__name(getRangesBetweenTwoRanges, "getRangesBetweenTwoRanges");
|
2350
|
+
function getSequenceWithinRange(range, sequence) {
|
2351
|
+
if (range.start < 0 || range.end < 0)
|
2352
|
+
return "";
|
2353
|
+
if (range.start > range.end) {
|
2354
|
+
let subSequence = sequence.slice(range.start, sequence.length);
|
2355
|
+
if (typeof subSequence === "string") {
|
2356
|
+
subSequence += sequence.slice(0, range.end + 1);
|
2357
|
+
} else {
|
2358
|
+
subSequence = subSequence.concat(sequence.slice(0, range.end + 1));
|
2359
|
+
}
|
2360
|
+
return subSequence;
|
2361
|
+
} else {
|
2362
|
+
return sequence.slice(range.start, range.end + 1);
|
2363
|
+
}
|
2364
|
+
}
|
2365
|
+
__name(getSequenceWithinRange, "getSequenceWithinRange");
|
2366
|
+
function getShortestDistanceBetweenTwoPositions(position1, position2, sequenceLength) {
|
2367
|
+
if (position1 < position2) {
|
2368
|
+
const position1Holder = position1;
|
2369
|
+
position1 = position2;
|
2370
|
+
position2 = position1Holder;
|
2371
|
+
}
|
2372
|
+
const d1 = position1 - position2;
|
2373
|
+
const d2 = sequenceLength - position1 + position2;
|
2374
|
+
return Math.min(d1, d2);
|
2375
|
+
}
|
2376
|
+
__name(getShortestDistanceBetweenTwoPositions, "getShortestDistanceBetweenTwoPositions");
|
2377
|
+
function getYOffsetForPotentiallyCircularRange(range, YOffsetLevelsWithRanges, assignYOffsetToRange) {
|
2378
|
+
let yOffset = [];
|
2379
|
+
const openYOffsetFound = YOffsetLevelsWithRanges.some(
|
2380
|
+
function(rangesAlreadyAddedToYOffset, index) {
|
2381
|
+
const rangeBlocked = rangesAlreadyAddedToYOffset.some(
|
2382
|
+
function(comparisonRange) {
|
2383
|
+
return checkIfPotentiallyCircularRangesOverlap(
|
2384
|
+
range,
|
2385
|
+
comparisonRange
|
2386
|
+
);
|
2387
|
+
}
|
2388
|
+
);
|
2389
|
+
if (!rangeBlocked) {
|
2390
|
+
yOffset = index;
|
2391
|
+
if (assignYOffsetToRange)
|
2392
|
+
range.yOffset = index;
|
2393
|
+
rangesAlreadyAddedToYOffset.push(range);
|
2394
|
+
return true;
|
2395
|
+
}
|
2396
|
+
return false;
|
2397
|
+
}
|
2398
|
+
);
|
2399
|
+
if (!openYOffsetFound) {
|
2400
|
+
yOffset = YOffsetLevelsWithRanges.length;
|
2401
|
+
if (assignYOffsetToRange)
|
2402
|
+
range.yOffset = YOffsetLevelsWithRanges.length;
|
2403
|
+
}
|
2404
|
+
return yOffset;
|
2405
|
+
}
|
2406
|
+
__name(getYOffsetForPotentiallyCircularRange, "getYOffsetForPotentiallyCircularRange");
|
2407
|
+
function getYOffsetsForPotentiallyCircularRanges(ranges, assignYOffsetToRange) {
|
2408
|
+
const yOffsets = [];
|
2409
|
+
let maxYOffset = 0;
|
2410
|
+
const yOffsetLevels = [];
|
2411
|
+
ranges.forEach(function(range) {
|
2412
|
+
const yOffset = getYOffsetForPotentiallyCircularRange(
|
2413
|
+
range,
|
2414
|
+
yOffsetLevels,
|
2415
|
+
assignYOffsetToRange
|
2416
|
+
);
|
2417
|
+
yOffsets.push(yOffset);
|
2418
|
+
if (yOffset > maxYOffset) {
|
2419
|
+
maxYOffset = yOffset;
|
2420
|
+
}
|
2421
|
+
range.yOffset = yOffset;
|
2422
|
+
if (!yOffsetLevels[yOffset])
|
2423
|
+
yOffsetLevels[yOffset] = [];
|
2424
|
+
yOffsetLevels[yOffset].push(range);
|
2425
|
+
});
|
2426
|
+
return { yOffsets, maxYOffset };
|
2427
|
+
}
|
2428
|
+
__name(getYOffsetsForPotentiallyCircularRanges, "getYOffsetsForPotentiallyCircularRanges");
|
2429
|
+
const invertRange = provideInclusiveOptions(invertRange$1);
|
2430
|
+
function invertRange$1(rangeOrCaret, rangeMax) {
|
2431
|
+
if (rangeOrCaret.start > -1) {
|
2432
|
+
const start = rangeOrCaret.end + 1;
|
2433
|
+
const end = rangeOrCaret.start - 1;
|
2434
|
+
return {
|
2435
|
+
start: normalizePositionByRangeLength(start, rangeMax, false),
|
2436
|
+
end: normalizePositionByRangeLength(end, rangeMax, false)
|
2437
|
+
};
|
2438
|
+
} else {
|
2439
|
+
if (rangeOrCaret > -1) {
|
2440
|
+
return {
|
2441
|
+
start: normalizePositionByRangeLength(rangeOrCaret, rangeMax, false),
|
2442
|
+
end: normalizePositionByRangeLength(rangeOrCaret - 1, rangeMax, false)
|
2443
|
+
};
|
2444
|
+
}
|
2445
|
+
}
|
2446
|
+
}
|
2447
|
+
__name(invertRange$1, "invertRange$1");
|
2448
|
+
function isPositionCloserToRangeStartThanRangeEnd(position, range, maxLength) {
|
2449
|
+
const distanceFromStart = getShortestDistanceBetweenTwoPositions(
|
2450
|
+
range.start,
|
2451
|
+
position,
|
2452
|
+
maxLength
|
2453
|
+
);
|
2454
|
+
const distanceFromEnd = getShortestDistanceBetweenTwoPositions(
|
2455
|
+
range.end,
|
2456
|
+
position,
|
2457
|
+
maxLength
|
2458
|
+
);
|
2459
|
+
return distanceFromStart <= distanceFromEnd;
|
2460
|
+
}
|
2461
|
+
__name(isPositionCloserToRangeStartThanRangeEnd, "isPositionCloserToRangeStartThanRangeEnd");
|
2462
|
+
function loopEachPositionInRange(range, rangeMax, func) {
|
2463
|
+
getEachPositionInRangeAsArray(range, rangeMax).map(func);
|
2464
|
+
}
|
2465
|
+
__name(loopEachPositionInRange, "loopEachPositionInRange");
|
2466
|
+
function modulatePositionByRange(position, range) {
|
2467
|
+
let returnVal = position;
|
2468
|
+
if (position < range.start) {
|
2469
|
+
returnVal = range.end - (range.start - (position + 1));
|
2470
|
+
} else if (position > range.end) {
|
2471
|
+
returnVal = range.start + (position - range.end - 1);
|
2472
|
+
}
|
2473
|
+
return returnVal;
|
2474
|
+
}
|
2475
|
+
__name(modulatePositionByRange, "modulatePositionByRange");
|
2476
|
+
const modulateRangeBySequenceLength = provideInclusiveOptions(modulateRangeBySequenceLength$1);
|
2477
|
+
function modulateRangeBySequenceLength$1(range, seqLen) {
|
2478
|
+
return assign(range, {
|
2479
|
+
start: normalizePositionByRangeLength(range.start, seqLen),
|
2480
|
+
end: normalizePositionByRangeLength(range.end, seqLen)
|
2481
|
+
});
|
2482
|
+
}
|
2483
|
+
__name(modulateRangeBySequenceLength$1, "modulateRangeBySequenceLength$1");
|
2484
|
+
function normalizePositionByRangeLength1Based(position, sequenceLength) {
|
2485
|
+
return modulatePositionByRange(position, { start: 1, end: sequenceLength });
|
2486
|
+
}
|
2487
|
+
__name(normalizePositionByRangeLength1Based, "normalizePositionByRangeLength1Based");
|
2488
|
+
function reversePositionInRange(position, rangeLength, isInBetweenPositions) {
|
2489
|
+
return rangeLength - position - (isInBetweenPositions ? 0 : 1);
|
2490
|
+
}
|
2491
|
+
__name(reversePositionInRange, "reversePositionInRange");
|
2492
|
+
function trimNumberToFitWithin0ToAnotherNumber(numberToBeTrimmed, max) {
|
2493
|
+
if (numberToBeTrimmed < 0) {
|
2494
|
+
numberToBeTrimmed = 0;
|
2495
|
+
}
|
2496
|
+
if (numberToBeTrimmed > max) {
|
2497
|
+
numberToBeTrimmed = max;
|
2498
|
+
}
|
2499
|
+
return numberToBeTrimmed;
|
2500
|
+
}
|
2501
|
+
__name(trimNumberToFitWithin0ToAnotherNumber, "trimNumberToFitWithin0ToAnotherNumber");
|
2502
|
+
function zeroSubrangeByContainerRange(subRange, containerRange, sequenceLength) {
|
2503
|
+
const trimmedSubRange = trimRangeByAnotherRange(
|
2504
|
+
subRange,
|
2505
|
+
containerRange,
|
2506
|
+
sequenceLength
|
2507
|
+
);
|
2508
|
+
if (trimmedSubRange) {
|
2509
|
+
throw new Error(
|
2510
|
+
"subRange must be fully contained by containerRange! Otherwise this function does not make sense"
|
2511
|
+
);
|
2512
|
+
}
|
2513
|
+
const newSubrange = {};
|
2514
|
+
newSubrange.start = subRange.start - containerRange.start;
|
2515
|
+
newSubrange.end = subRange.end - containerRange.start;
|
2516
|
+
if (newSubrange.start < 0) {
|
2517
|
+
newSubrange.start += sequenceLength;
|
2518
|
+
}
|
2519
|
+
if (newSubrange.end < 0) {
|
2520
|
+
newSubrange.end += sequenceLength;
|
2521
|
+
}
|
2522
|
+
return newSubrange;
|
2523
|
+
}
|
2524
|
+
__name(zeroSubrangeByContainerRange, "zeroSubrangeByContainerRange");
|
2525
|
+
function adjustRangeToRotation(rangeToBeAdjusted, rotateTo = 0, rangeLength) {
|
2526
|
+
const mod = rangeLength ? modulo : identity;
|
2527
|
+
const newRange = assign({}, rangeToBeAdjusted, {
|
2528
|
+
start: mod(rangeToBeAdjusted.start - (rotateTo || 0), rangeLength),
|
2529
|
+
end: mod(rangeToBeAdjusted.end - (rotateTo || 0), rangeLength)
|
2530
|
+
});
|
2531
|
+
return newRange;
|
2532
|
+
}
|
2533
|
+
__name(adjustRangeToRotation, "adjustRangeToRotation");
|
2534
|
+
function modulo(n, m) {
|
2535
|
+
return (n % m + m) % m;
|
2536
|
+
}
|
2537
|
+
__name(modulo, "modulo");
|
2538
|
+
function getZeroedRangeOverlaps(annotation, selection, sequenceLength) {
|
2539
|
+
const overlaps = collapseOverlapsGeneratedFromRangeComparisonIfPossible(
|
2540
|
+
getOverlapsOfPotentiallyCircularRanges(
|
2541
|
+
annotation,
|
2542
|
+
selection,
|
2543
|
+
sequenceLength
|
2544
|
+
),
|
2545
|
+
sequenceLength,
|
2546
|
+
annotation
|
2547
|
+
);
|
2548
|
+
const zeroedOverlaps = overlaps.map((overlap) => {
|
2549
|
+
return zeroSubrangeByContainerRange(
|
2550
|
+
overlap,
|
2551
|
+
{
|
2552
|
+
start: selection.start,
|
2553
|
+
end: normalizePositionByRangeLength(selection.start - 1, sequenceLength)
|
2554
|
+
},
|
2555
|
+
sequenceLength
|
2556
|
+
);
|
2557
|
+
});
|
2558
|
+
return zeroedOverlaps;
|
2559
|
+
}
|
2560
|
+
__name(getZeroedRangeOverlaps, "getZeroedRangeOverlaps");
|
2561
|
+
function trimAnnStartEndToFitSeqLength(annStartOrEnd, sequenceLength) {
|
2562
|
+
return Math.max(
|
2563
|
+
0,
|
2564
|
+
Math.min(annStartOrEnd || 0, Math.max(sequenceLength - 1, 0))
|
2565
|
+
);
|
2566
|
+
}
|
2567
|
+
__name(trimAnnStartEndToFitSeqLength, "trimAnnStartEndToFitSeqLength");
|
2568
|
+
exports.adjustRangeToDeletionOfAnotherRange = adjustRangeToDeletionOfAnotherRange;
|
2569
|
+
exports.adjustRangeToInsert = adjustRangeToInsert;
|
2570
|
+
exports.adjustRangeToRotation = adjustRangeToRotation;
|
2571
|
+
exports.checkIfNonCircularRangesOverlap = checkIfNonCircularRangesOverlap;
|
2572
|
+
exports.checkIfPotentiallyCircularRangesOverlap = checkIfPotentiallyCircularRangesOverlap;
|
2573
|
+
exports.collapseOverlapsGeneratedFromRangeComparisonIfPossible = collapseOverlapsGeneratedFromRangeComparisonIfPossible;
|
2574
|
+
exports.convertRangeIndices = convertRangeIndices;
|
2575
|
+
exports.convertRangeTo0Based = convertRangeTo0Based;
|
2576
|
+
exports.convertRangeTo1Based = convertRangeTo1Based;
|
2577
|
+
exports.doesRangeSpanEntireSequence = doesRangeSpanEntireSequence;
|
2578
|
+
exports.doesRangeSpanOrigin = doesRangeSpanOrigin;
|
2579
|
+
exports.expandOrContractCircularRangeToPosition = expandOrContractCircularRangeToPosition;
|
2580
|
+
exports.expandOrContractNonCircularRangeToPosition = expandOrContractNonCircularRangeToPosition;
|
2581
|
+
exports.expandOrContractRangeByLength = expandOrContractRangeByLength;
|
2582
|
+
exports.expandOrContractRangeToPosition = expandOrContractRangeToPosition;
|
2583
|
+
exports.flipContainedRange = flipRelativeRange;
|
2584
|
+
exports.generateRandomRange = generateRandomRange;
|
2585
|
+
exports.getAnnotationRangeType = getAnnotationRangeType;
|
2586
|
+
exports.getEachPositionInRangeAsArray = getEachPositionInRangeAsArray;
|
2587
|
+
exports.getLengthOfOverlappingRegionsBetweenTwoRanges = getLengthOfOverlappingRegionsBetweenTwoRanges;
|
2588
|
+
exports.getMiddleOfRange = getMiddleOfRange;
|
2589
|
+
exports.getOverlapOfNonCircularRanges = getOverlapOfNonCircularRanges;
|
2590
|
+
exports.getOverlapsOfPotentiallyCircularRanges = getOverlapsOfPotentiallyCircularRanges;
|
2591
|
+
exports.getPositionFromAngle = getPositionFromAngle;
|
2592
|
+
exports.getRangeAngles = getRangeAngles;
|
2593
|
+
exports.getRangeLength = getRangeLength;
|
2594
|
+
exports.getRangesBetweenTwoRanges = getRangesBetweenTwoRanges;
|
2595
|
+
exports.getSequenceWithinRange = getSequenceWithinRange;
|
2596
|
+
exports.getShortestDistanceBetweenTwoPositions = getShortestDistanceBetweenTwoPositions;
|
2597
|
+
exports.getYOffsetForPotentiallyCircularRange = getYOffsetForPotentiallyCircularRange;
|
2598
|
+
exports.getYOffsetsForPotentiallyCircularRanges = getYOffsetsForPotentiallyCircularRanges;
|
2599
|
+
exports.getZeroedRangeOverlaps = getZeroedRangeOverlaps;
|
2600
|
+
exports.invertRange = invertRange;
|
2601
|
+
exports.isPositionCloserToRangeStartThanRangeEnd = isPositionCloserToRangeStartThanRangeEnd;
|
2602
|
+
exports.isPositionWithinRange = isPositionWithinRange;
|
2603
|
+
exports.isRangeOrPositionWithinRange = isRangeOrPositionWithinRange;
|
2604
|
+
exports.isRangeWithinRange = isRangeWithinRange;
|
2605
|
+
exports.loopEachPositionInRange = loopEachPositionInRange;
|
2606
|
+
exports.modulatePositionByRange = modulatePositionByRange;
|
2607
|
+
exports.modulateRangeBySequenceLength = modulateRangeBySequenceLength;
|
2608
|
+
exports.normalizePositionByRangeLength = normalizePositionByRangeLength;
|
2609
|
+
exports.normalizePositionByRangeLength1Based = normalizePositionByRangeLength1Based;
|
2610
|
+
exports.normalizeRange = normalizeRange;
|
2611
|
+
exports.provideInclusiveOptions = provideInclusiveOptions;
|
2612
|
+
exports.reversePositionInRange = reversePositionInRange;
|
2613
|
+
exports.splitRangeIntoTwoPartsIfItIsCircular = splitRangeIntoTwoPartsIfItIsCircular;
|
2614
|
+
exports.translateRange = translateRange;
|
2615
|
+
exports.trimAnnStartEndToFitSeqLength = trimAnnStartEndToFitSeqLength;
|
2616
|
+
exports.trimNonCicularRangeByAnotherNonCircularRange = trimNonCicularRangeByAnotherNonCircularRange;
|
2617
|
+
exports.trimNumberToFitWithin0ToAnotherNumber = trimNumberToFitWithin0ToAnotherNumber;
|
2618
|
+
exports.trimRangeByAnotherRange = trimRangeByAnotherRange;
|
2619
|
+
exports.zeroSubrangeByContainerRange = zeroSubrangeByContainerRange;
|