core-js 1.2.3 → 1.2.7
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/CHANGELOG.md +408 -386
- package/bower.json +1 -1
- package/build/Gruntfile.ls +0 -5
- package/build/build.ls +24 -22
- package/build/index.js +2 -2
- package/client/core.js +1412 -1272
- package/client/core.min.js +4 -4
- package/client/core.min.js.map +1 -1
- package/client/library.js +1220 -1122
- package/client/library.min.js +4 -4
- package/client/library.min.js.map +1 -1
- package/client/shim.js +1304 -1164
- package/client/shim.min.js +4 -4
- package/client/shim.min.js.map +1 -1
- package/es6/symbol.js +1 -0
- package/fn/symbol/index.js +1 -0
- package/library/es6/symbol.js +1 -0
- package/library/fn/symbol/index.js +1 -0
- package/library/modules/{$.unscope.js → $.add-to-unscopables.js} +0 -0
- package/library/modules/$.array-fill.js +1 -1
- package/library/modules/$.array-methods.js +2 -12
- package/library/modules/$.array-species-create.js +16 -0
- package/library/modules/$.buffer.js +278 -285
- package/library/modules/$.collection-strong.js +9 -8
- package/library/modules/$.collection-weak.js +16 -15
- package/library/modules/$.collection.js +21 -14
- package/library/modules/$.core.js +1 -1
- package/library/modules/{$.support-desc.js → $.descriptors.js} +0 -0
- package/library/modules/$.export.js +46 -0
- package/library/modules/$.fails-is-regexp.js +2 -1
- package/library/modules/$.fix-re-wks.js +10 -5
- package/library/modules/$.flags.js +5 -5
- package/library/modules/$.get-names.js +3 -3
- package/library/modules/$.hide.js +1 -1
- package/library/modules/$.is-array-iter.js +5 -3
- package/library/modules/$.iter-create.js +5 -3
- package/library/modules/$.iter-define.js +46 -30
- package/library/modules/$.iter-detect.js +8 -6
- package/library/modules/{$.expm1.js → $.math-expm1.js} +0 -0
- package/library/modules/{$.log1p.js → $.math-log1p.js} +0 -0
- package/library/modules/{$.sign.js → $.math-sign.js} +0 -0
- package/library/modules/$.microtask.js +9 -2
- package/library/modules/{$.assign.js → $.object-assign.js} +0 -0
- package/library/modules/$.object-sap.js +6 -4
- package/library/modules/$.redefine-all.js +5 -0
- package/library/modules/{$.redef.js → $.redefine.js} +0 -0
- package/library/modules/{$.same.js → $.same-value.js} +1 -0
- package/library/modules/$.set-species.js +13 -0
- package/library/modules/{$.tag.js → $.set-to-string-tag.js} +0 -0
- package/library/modules/$.species-constructor.js +7 -7
- package/library/modules/$.string-at.js +5 -6
- package/library/modules/$.string-trim.js +17 -14
- package/library/modules/$.task.js +0 -1
- package/library/modules/$.to-primitive.js +12 -0
- package/library/modules/$.typed-array.js +345 -294
- package/library/modules/$.typed.js +36 -0
- package/library/modules/$.wks.js +2 -1
- package/library/modules/core.delay.js +2 -2
- package/library/modules/core.dict.js +20 -19
- package/library/modules/core.function.part.js +3 -4
- package/library/modules/core.is-iterable.js +1 -1
- package/library/modules/core.log.js +2 -2
- package/library/modules/core.object.classof.js +2 -2
- package/library/modules/core.object.define.js +3 -3
- package/library/modules/core.object.is-object.js +2 -2
- package/library/modules/core.object.make.js +4 -4
- package/library/modules/core.string.escape-html.js +9 -9
- package/library/modules/core.string.unescape-html.js +9 -9
- package/library/modules/es5.js +61 -60
- package/library/modules/es6.array.copy-within.js +3 -4
- package/library/modules/es6.array.fill.js +3 -3
- package/library/modules/es6.array.find-index.js +6 -6
- package/library/modules/es6.array.find.js +6 -6
- package/library/modules/es6.array.from.js +2 -2
- package/library/modules/es6.array.iterator.js +8 -8
- package/library/modules/es6.array.of.js +2 -2
- package/library/modules/es6.array.species.js +1 -1
- package/library/modules/es6.date.to-string.js +0 -0
- package/library/modules/es6.math.acosh.js +5 -5
- package/library/modules/es6.math.asinh.js +2 -2
- package/library/modules/es6.math.atanh.js +2 -2
- package/library/modules/es6.math.cbrt.js +3 -3
- package/library/modules/es6.math.clz32.js +2 -2
- package/library/modules/es6.math.cosh.js +3 -3
- package/library/modules/es6.math.expm1.js +2 -2
- package/library/modules/es6.math.fround.js +4 -4
- package/library/modules/es6.math.hypot.js +3 -3
- package/library/modules/es6.math.imul.js +3 -3
- package/library/modules/es6.math.log10.js +2 -2
- package/library/modules/es6.math.log1p.js +2 -2
- package/library/modules/es6.math.log2.js +2 -2
- package/library/modules/es6.math.sign.js +2 -2
- package/library/modules/es6.math.sinh.js +4 -4
- package/library/modules/es6.math.tanh.js +4 -4
- package/library/modules/es6.math.trunc.js +2 -2
- package/library/modules/es6.number.epsilon.js +2 -2
- package/library/modules/es6.number.is-finite.js +2 -2
- package/library/modules/es6.number.is-integer.js +2 -2
- package/library/modules/es6.number.is-nan.js +2 -2
- package/library/modules/es6.number.is-safe-integer.js +2 -2
- package/library/modules/es6.number.max-safe-integer.js +2 -2
- package/library/modules/es6.number.min-safe-integer.js +2 -2
- package/library/modules/es6.number.parse-float.js +2 -2
- package/library/modules/es6.number.parse-int.js +2 -2
- package/library/modules/es6.object.assign.js +2 -2
- package/library/modules/es6.object.is.js +2 -4
- package/library/modules/es6.object.set-prototype-of.js +2 -2
- package/library/modules/es6.promise.js +96 -66
- package/library/modules/es6.reflect.apply.js +5 -4
- package/library/modules/es6.reflect.construct.js +4 -3
- package/library/modules/es6.reflect.define-property.js +2 -2
- package/library/modules/es6.reflect.delete-property.js +2 -2
- package/library/modules/es6.reflect.enumerate.js +2 -2
- package/library/modules/es6.reflect.get-own-property-descriptor.js +2 -2
- package/library/modules/es6.reflect.get-prototype-of.js +2 -2
- package/library/modules/es6.reflect.get.js +2 -2
- package/library/modules/es6.reflect.has.js +2 -2
- package/library/modules/es6.reflect.is-extensible.js +2 -2
- package/library/modules/es6.reflect.own-keys.js +2 -2
- package/library/modules/es6.reflect.prevent-extensions.js +2 -2
- package/library/modules/es6.reflect.set-prototype-of.js +2 -2
- package/library/modules/es6.reflect.set.js +2 -2
- package/library/modules/es6.regexp.constructor.js +1 -1
- package/library/modules/es6.string.code-point-at.js +3 -3
- package/library/modules/es6.string.ends-with.js +2 -2
- package/library/modules/es6.string.from-code-point.js +4 -4
- package/library/modules/es6.string.includes.js +4 -3
- package/library/modules/es6.string.raw.js +2 -2
- package/library/modules/es6.string.repeat.js +2 -2
- package/library/modules/es6.string.starts-with.js +2 -2
- package/library/modules/es6.symbol.js +17 -16
- package/library/modules/es6.typed.array-buffer.js +43 -0
- package/library/modules/es6.typed.data-view.js +4 -0
- package/library/modules/{es6.typed-arrays.float32-array.js → es6.typed.float32-array.js} +0 -0
- package/library/modules/{es6.typed-arrays.float64-array.js → es6.typed.float64-array.js} +0 -0
- package/library/modules/{es6.typed-arrays.int16-array.js → es6.typed.int16-array.js} +0 -0
- package/library/modules/{es6.typed-arrays.int32-array.js → es6.typed.int32-array.js} +0 -0
- package/library/modules/{es6.typed-arrays.int8-array.js → es6.typed.int8-array.js} +0 -0
- package/library/modules/{es6.typed-arrays.uint16-array.js → es6.typed.uint16-array.js} +0 -0
- package/library/modules/{es6.typed-arrays.uint32-array.js → es6.typed.uint32-array.js} +0 -0
- package/library/modules/{es6.typed-arrays.uint8-array.js → es6.typed.uint8-array.js} +0 -0
- package/library/modules/{es6.typed-arrays.uint8-clamped-array.js → es6.typed.uint8-clamped-array.js} +0 -0
- package/library/modules/es6.weak-map.js +2 -1
- package/library/modules/es7.array.includes.js +5 -3
- package/library/modules/es7.map.to-json.js +2 -2
- package/library/modules/es7.object.entries.js +2 -2
- package/library/modules/es7.object.get-own-property-descriptors.js +2 -2
- package/library/modules/es7.object.values.js +2 -2
- package/library/modules/es7.regexp.escape.js +4 -3
- package/library/modules/es7.set.to-json.js +2 -2
- package/library/modules/es7.string.at.js +5 -4
- package/library/modules/es7.string.pad-left.js +4 -3
- package/library/modules/es7.string.pad-right.js +4 -3
- package/library/modules/js.array.statics.js +4 -3
- package/library/modules/web.immediate.js +3 -3
- package/library/modules/web.timers.js +2 -2
- package/modules/$.add-to-unscopables.js +7 -0
- package/modules/$.array-fill.js +1 -1
- package/modules/$.array-methods.js +2 -12
- package/modules/$.array-species-create.js +16 -0
- package/modules/$.buffer.js +278 -285
- package/modules/$.collection-strong.js +9 -8
- package/modules/$.collection-weak.js +16 -15
- package/modules/$.collection.js +37 -25
- package/modules/$.core.js +1 -1
- package/modules/{$.support-desc.js → $.descriptors.js} +0 -0
- package/modules/$.export.js +41 -0
- package/modules/$.fails-is-regexp.js +2 -1
- package/modules/$.fix-re-wks.js +10 -5
- package/modules/$.flags.js +5 -5
- package/modules/$.get-names.js +3 -3
- package/modules/$.hide.js +1 -1
- package/modules/$.is-array-iter.js +5 -3
- package/modules/$.iter-create.js +5 -3
- package/modules/$.iter-define.js +46 -30
- package/modules/$.iter-detect.js +8 -6
- package/modules/{$.expm1.js → $.math-expm1.js} +0 -0
- package/modules/{$.log1p.js → $.math-log1p.js} +0 -0
- package/modules/{$.sign.js → $.math-sign.js} +0 -0
- package/modules/$.microtask.js +9 -2
- package/modules/{$.assign.js → $.object-assign.js} +0 -0
- package/modules/$.object-sap.js +6 -4
- package/modules/$.redefine-all.js +5 -0
- package/modules/{$.redef.js → $.redefine.js} +0 -0
- package/modules/{$.same.js → $.same-value.js} +1 -0
- package/modules/$.set-species.js +13 -0
- package/modules/{$.tag.js → $.set-to-string-tag.js} +0 -0
- package/modules/$.species-constructor.js +7 -7
- package/modules/$.string-at.js +5 -6
- package/modules/$.string-trim.js +17 -14
- package/modules/$.task.js +0 -1
- package/modules/$.to-primitive.js +12 -0
- package/modules/$.typed-array.js +345 -294
- package/modules/$.typed.js +36 -0
- package/modules/$.wks.js +2 -1
- package/modules/core.delay.js +2 -2
- package/modules/core.dict.js +20 -19
- package/modules/core.function.part.js +3 -4
- package/modules/core.is-iterable.js +1 -1
- package/modules/core.log.js +2 -2
- package/modules/core.object.classof.js +2 -2
- package/modules/core.object.define.js +3 -3
- package/modules/core.object.is-object.js +2 -2
- package/modules/core.object.make.js +4 -4
- package/modules/core.string.escape-html.js +9 -9
- package/modules/core.string.unescape-html.js +9 -9
- package/modules/es5.js +61 -60
- package/modules/es6.array.copy-within.js +3 -4
- package/modules/es6.array.fill.js +3 -3
- package/modules/es6.array.find-index.js +6 -6
- package/modules/es6.array.find.js +6 -6
- package/modules/es6.array.from.js +2 -2
- package/modules/es6.array.iterator.js +8 -8
- package/modules/es6.array.of.js +2 -2
- package/modules/es6.array.species.js +1 -1
- package/modules/es6.date.to-string.js +10 -0
- package/modules/es6.function.name.js +1 -1
- package/modules/es6.math.acosh.js +5 -5
- package/modules/es6.math.asinh.js +2 -2
- package/modules/es6.math.atanh.js +2 -2
- package/modules/es6.math.cbrt.js +3 -3
- package/modules/es6.math.clz32.js +2 -2
- package/modules/es6.math.cosh.js +3 -3
- package/modules/es6.math.expm1.js +2 -2
- package/modules/es6.math.fround.js +4 -4
- package/modules/es6.math.hypot.js +3 -3
- package/modules/es6.math.imul.js +3 -3
- package/modules/es6.math.log10.js +2 -2
- package/modules/es6.math.log1p.js +2 -2
- package/modules/es6.math.log2.js +2 -2
- package/modules/es6.math.sign.js +2 -2
- package/modules/es6.math.sinh.js +4 -4
- package/modules/es6.math.tanh.js +4 -4
- package/modules/es6.math.trunc.js +2 -2
- package/modules/es6.number.constructor.js +43 -29
- package/modules/es6.number.epsilon.js +2 -2
- package/modules/es6.number.is-finite.js +2 -2
- package/modules/es6.number.is-integer.js +2 -2
- package/modules/es6.number.is-nan.js +2 -2
- package/modules/es6.number.is-safe-integer.js +2 -2
- package/modules/es6.number.max-safe-integer.js +2 -2
- package/modules/es6.number.min-safe-integer.js +2 -2
- package/modules/es6.number.parse-float.js +2 -2
- package/modules/es6.number.parse-int.js +2 -2
- package/modules/es6.object.assign.js +2 -2
- package/modules/es6.object.is.js +2 -4
- package/modules/es6.object.set-prototype-of.js +2 -2
- package/modules/es6.object.to-string.js +1 -1
- package/modules/es6.promise.js +96 -66
- package/modules/es6.reflect.apply.js +5 -4
- package/modules/es6.reflect.construct.js +4 -3
- package/modules/es6.reflect.define-property.js +2 -2
- package/modules/es6.reflect.delete-property.js +2 -2
- package/modules/es6.reflect.enumerate.js +2 -2
- package/modules/es6.reflect.get-own-property-descriptor.js +2 -2
- package/modules/es6.reflect.get-prototype-of.js +2 -2
- package/modules/es6.reflect.get.js +2 -2
- package/modules/es6.reflect.has.js +2 -2
- package/modules/es6.reflect.is-extensible.js +2 -2
- package/modules/es6.reflect.own-keys.js +2 -2
- package/modules/es6.reflect.prevent-extensions.js +2 -2
- package/modules/es6.reflect.set-prototype-of.js +2 -2
- package/modules/es6.reflect.set.js +2 -2
- package/modules/es6.regexp.constructor.js +3 -3
- package/modules/es6.regexp.flags.js +1 -1
- package/modules/es6.string.code-point-at.js +3 -3
- package/modules/es6.string.ends-with.js +2 -2
- package/modules/es6.string.from-code-point.js +4 -4
- package/modules/es6.string.includes.js +4 -3
- package/modules/es6.string.raw.js +2 -2
- package/modules/es6.string.repeat.js +2 -2
- package/modules/es6.string.starts-with.js +2 -2
- package/modules/es6.symbol.js +17 -16
- package/modules/es6.typed.array-buffer.js +43 -0
- package/modules/es6.typed.data-view.js +4 -0
- package/modules/{es6.typed-arrays.float32-array.js → es6.typed.float32-array.js} +0 -0
- package/modules/{es6.typed-arrays.float64-array.js → es6.typed.float64-array.js} +0 -0
- package/modules/{es6.typed-arrays.int16-array.js → es6.typed.int16-array.js} +0 -0
- package/modules/{es6.typed-arrays.int32-array.js → es6.typed.int32-array.js} +0 -0
- package/modules/{es6.typed-arrays.int8-array.js → es6.typed.int8-array.js} +0 -0
- package/modules/{es6.typed-arrays.uint16-array.js → es6.typed.uint16-array.js} +0 -0
- package/modules/{es6.typed-arrays.uint32-array.js → es6.typed.uint32-array.js} +0 -0
- package/modules/{es6.typed-arrays.uint8-array.js → es6.typed.uint8-array.js} +0 -0
- package/modules/{es6.typed-arrays.uint8-clamped-array.js → es6.typed.uint8-clamped-array.js} +0 -0
- package/modules/es6.weak-map.js +2 -1
- package/modules/es7.array.includes.js +5 -3
- package/modules/es7.map.to-json.js +2 -2
- package/modules/es7.object.entries.js +2 -2
- package/modules/es7.object.get-own-property-descriptors.js +2 -2
- package/modules/es7.object.values.js +2 -2
- package/modules/es7.regexp.escape.js +4 -3
- package/modules/es7.set.to-json.js +2 -2
- package/modules/es7.string.at.js +5 -4
- package/modules/es7.string.pad-left.js +4 -3
- package/modules/es7.string.pad-right.js +4 -3
- package/modules/js.array.statics.js +4 -3
- package/modules/library/{$.unscope.js → $.add-to-unscopables.js} +0 -0
- package/modules/library/$.collection.js +21 -14
- package/modules/library/$.export.js +46 -0
- package/modules/library/{$.redef.js → $.redefine.js} +0 -0
- package/modules/library/$.set-species.js +13 -0
- package/modules/library/es6.date.to-string.js +0 -0
- package/modules/library/es6.regexp.constructor.js +1 -1
- package/modules/web.dom.iterable.js +2 -2
- package/modules/web.immediate.js +3 -3
- package/modules/web.timers.js +2 -2
- package/package.json +6 -6
- package/README.md +0 -1289
- package/library/modules/$.def.js +0 -47
- package/library/modules/$.mix.js +0 -5
- package/library/modules/$.species.js +0 -9
- package/library/modules/es6.typed-arrays.array-buffer.js +0 -33
- package/library/modules/es6.typed-arrays.data-view.js +0 -4
- package/modules/$.def.js +0 -42
- package/modules/$.mix.js +0 -5
- package/modules/$.species.js +0 -9
- package/modules/$.unscope.js +0 -6
- package/modules/es6.typed-arrays.array-buffer.js +0 -33
- package/modules/es6.typed-arrays.data-view.js +0 -4
- package/modules/library/$.def.js +0 -47
|
@@ -6,20 +6,10 @@
|
|
|
6
6
|
// 5 -> Array#find
|
|
7
7
|
// 6 -> Array#findIndex
|
|
8
8
|
var ctx = require('./$.ctx')
|
|
9
|
-
, isObject = require('./$.is-object')
|
|
10
9
|
, IObject = require('./$.iobject')
|
|
11
10
|
, toObject = require('./$.to-object')
|
|
12
11
|
, toLength = require('./$.to-length')
|
|
13
|
-
,
|
|
14
|
-
, SPECIES = require('./$.wks')('species');
|
|
15
|
-
// 9.4.2.3 ArraySpeciesCreate(originalArray, length)
|
|
16
|
-
var ASC = function(original, length){
|
|
17
|
-
var C;
|
|
18
|
-
if(isArray(original) && isObject(C = original.constructor)){
|
|
19
|
-
C = C[SPECIES];
|
|
20
|
-
if(C === null)C = undefined;
|
|
21
|
-
} return new (C === undefined ? Array : C)(length);
|
|
22
|
-
};
|
|
12
|
+
, asc = require('./$.array-species-create');
|
|
23
13
|
module.exports = function(TYPE){
|
|
24
14
|
var IS_MAP = TYPE == 1
|
|
25
15
|
, IS_FILTER = TYPE == 2
|
|
@@ -33,7 +23,7 @@ module.exports = function(TYPE){
|
|
|
33
23
|
, f = ctx(callbackfn, that, 3)
|
|
34
24
|
, length = toLength(self.length)
|
|
35
25
|
, index = 0
|
|
36
|
-
, result = IS_MAP ?
|
|
26
|
+
, result = IS_MAP ? asc($this, length) : IS_FILTER ? asc($this, 0) : undefined
|
|
37
27
|
, val, res;
|
|
38
28
|
for(;length > index; index++)if(NO_HOLES || index in self){
|
|
39
29
|
val = self[index];
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// 9.4.2.3 ArraySpeciesCreate(originalArray, length)
|
|
2
|
+
var isObject = require('./$.is-object')
|
|
3
|
+
, isArray = require('./$.is-array')
|
|
4
|
+
, SPECIES = require('./$.wks')('species');
|
|
5
|
+
module.exports = function(original, length){
|
|
6
|
+
var C;
|
|
7
|
+
if(isArray(original)){
|
|
8
|
+
C = original.constructor;
|
|
9
|
+
// cross-realm fallback
|
|
10
|
+
if(typeof C == 'function' && (C === Array || isArray(C.prototype)))C = undefined;
|
|
11
|
+
if(isObject(C)){
|
|
12
|
+
C = C[SPECIES];
|
|
13
|
+
if(C === null)C = undefined;
|
|
14
|
+
}
|
|
15
|
+
} return new (C === undefined ? Array : C)(length);
|
|
16
|
+
};
|
package/modules/$.buffer.js
CHANGED
|
@@ -1,295 +1,288 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
var
|
|
2
|
+
var $ = require('./$')
|
|
3
|
+
, global = require('./$.global')
|
|
4
|
+
, $typed = require('./$.typed')
|
|
5
|
+
, redefineAll = require('./$.redefine-all')
|
|
6
|
+
, strictNew = require('./$.strict-new')
|
|
7
|
+
, toInteger = require('./$.to-integer')
|
|
8
|
+
, toLength = require('./$.to-length')
|
|
9
|
+
, arrayFill = require('./$.array-fill')
|
|
10
|
+
, $ArrayBuffer = global.ArrayBuffer
|
|
11
|
+
, $DataView = global.DataView
|
|
12
|
+
, Math = global.Math
|
|
13
|
+
, parseInt = global.parseInt
|
|
14
|
+
, abs = Math.abs
|
|
15
|
+
, pow = Math.pow
|
|
16
|
+
, min = Math.min
|
|
17
|
+
, floor = Math.floor
|
|
18
|
+
, log = Math.log
|
|
19
|
+
, LN2 = Math.LN2
|
|
20
|
+
, BYTE_LENGTH = 'byteLength';
|
|
3
21
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
,
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
f = pow(2, fbits
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
s = 1 / v === -Infinity ? 1 : 0;
|
|
98
|
-
} else {
|
|
99
|
-
s = v < 0;
|
|
100
|
-
v = abs(v);
|
|
101
|
-
if(v >= pow(2, 1 - bias)){
|
|
102
|
-
e = min(floor(log(v) / LN2), 1023);
|
|
103
|
-
var significand = v / pow(2, e);
|
|
104
|
-
if(significand < 1){
|
|
105
|
-
e -= 1;
|
|
106
|
-
significand *= 2;
|
|
107
|
-
}
|
|
108
|
-
if(significand >= 2){
|
|
109
|
-
e += 1;
|
|
110
|
-
significand /= 2;
|
|
111
|
-
}
|
|
112
|
-
f = roundToEven(significand * pow(2, fbits));
|
|
113
|
-
if(f / pow(2, fbits) >= 2){
|
|
114
|
-
e = e + 1;
|
|
115
|
-
f = 1;
|
|
116
|
-
}
|
|
117
|
-
if(e > bias){
|
|
118
|
-
// Overflow
|
|
119
|
-
e = (1 << ebits) - 1;
|
|
120
|
-
f = 0;
|
|
121
|
-
} else {
|
|
122
|
-
// Normalized
|
|
123
|
-
e = e + bias;
|
|
124
|
-
f = f - pow(2, fbits);
|
|
125
|
-
}
|
|
22
|
+
// pack / unpack based on
|
|
23
|
+
// https://github.com/inexorabletash/polyfill/blob/v0.1.11/typedarray.js#L123-L264
|
|
24
|
+
// TODO: simplify
|
|
25
|
+
var signed = function(value, bits){
|
|
26
|
+
var s = 32 - bits;
|
|
27
|
+
return value << s >> s;
|
|
28
|
+
};
|
|
29
|
+
var unsigned = function(value, bits){
|
|
30
|
+
var s = 32 - bits;
|
|
31
|
+
return value << s >>> s;
|
|
32
|
+
};
|
|
33
|
+
var roundToEven = function(n){
|
|
34
|
+
var w = floor(n)
|
|
35
|
+
, f = n - w;
|
|
36
|
+
return f < .5 ? w : f > .5 ? w + 1 : w % 2 ? w + 1 : w;
|
|
37
|
+
};
|
|
38
|
+
var packI8 = function(n){
|
|
39
|
+
return [n & 0xff];
|
|
40
|
+
};
|
|
41
|
+
var unpackI8 = function(bytes){
|
|
42
|
+
return signed(bytes[0], 8);
|
|
43
|
+
};
|
|
44
|
+
var packU8 = function(n){
|
|
45
|
+
return [n & 0xff];
|
|
46
|
+
};
|
|
47
|
+
var unpackU8 = function(bytes){
|
|
48
|
+
return unsigned(bytes[0], 8);
|
|
49
|
+
};
|
|
50
|
+
var packI16 = function(n){
|
|
51
|
+
return [n & 0xff, n >> 8 & 0xff];
|
|
52
|
+
};
|
|
53
|
+
var unpackI16 = function(bytes){
|
|
54
|
+
return signed(bytes[1] << 8 | bytes[0], 16);
|
|
55
|
+
};
|
|
56
|
+
var packU16 = function(n){
|
|
57
|
+
return [n & 0xff, n >> 8 & 0xff];
|
|
58
|
+
};
|
|
59
|
+
var unpackU16 = function(bytes){
|
|
60
|
+
return unsigned(bytes[1] << 8 | bytes[0], 16);
|
|
61
|
+
};
|
|
62
|
+
var packI32 = function(n){
|
|
63
|
+
return [n & 0xff, n >> 8 & 0xff, n >> 16 & 0xff, n >> 24 & 0xff];
|
|
64
|
+
};
|
|
65
|
+
var unpackI32 = function(bytes){
|
|
66
|
+
return signed(bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0], 32);
|
|
67
|
+
};
|
|
68
|
+
var packU32 = function(n){
|
|
69
|
+
return [n & 0xff, n >> 8 & 0xff, n >> 16 & 0xff, n >> 24 & 0xff];
|
|
70
|
+
};
|
|
71
|
+
var unpackU32 = function(bytes){
|
|
72
|
+
return unsigned(bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0], 32);
|
|
73
|
+
};
|
|
74
|
+
var packIEEE754 = function(v, ebits, fbits) {
|
|
75
|
+
var bias = (1 << ebits - 1) - 1
|
|
76
|
+
, s, e, f, i, bits, str, bytes;
|
|
77
|
+
// Compute sign, exponent, fraction
|
|
78
|
+
if (v !== v) {
|
|
79
|
+
// NaN
|
|
80
|
+
// http://dev.w3.org/2006/webapi/WebIDL/#es-type-mapping
|
|
81
|
+
e = (1 << ebits) - 1;
|
|
82
|
+
f = pow(2, fbits - 1);
|
|
83
|
+
s = 0;
|
|
84
|
+
} else if(v === Infinity || v === -Infinity){
|
|
85
|
+
e = (1 << ebits) - 1;
|
|
86
|
+
f = 0;
|
|
87
|
+
s = v < 0 ? 1 : 0;
|
|
88
|
+
} else if(v === 0){
|
|
89
|
+
e = 0;
|
|
90
|
+
f = 0;
|
|
91
|
+
s = 1 / v === -Infinity ? 1 : 0;
|
|
92
|
+
} else {
|
|
93
|
+
s = v < 0;
|
|
94
|
+
v = abs(v);
|
|
95
|
+
if(v >= pow(2, 1 - bias)){
|
|
96
|
+
e = min(floor(log(v) / LN2), 1023);
|
|
97
|
+
var significand = v / pow(2, e);
|
|
98
|
+
if(significand < 1){
|
|
99
|
+
e -= 1;
|
|
100
|
+
significand *= 2;
|
|
101
|
+
}
|
|
102
|
+
if(significand >= 2){
|
|
103
|
+
e += 1;
|
|
104
|
+
significand /= 2;
|
|
105
|
+
}
|
|
106
|
+
f = roundToEven(significand * pow(2, fbits));
|
|
107
|
+
if(f / pow(2, fbits) >= 2){
|
|
108
|
+
e = e + 1;
|
|
109
|
+
f = 1;
|
|
110
|
+
}
|
|
111
|
+
if(e > bias){
|
|
112
|
+
// Overflow
|
|
113
|
+
e = (1 << ebits) - 1;
|
|
114
|
+
f = 0;
|
|
126
115
|
} else {
|
|
127
|
-
//
|
|
128
|
-
e =
|
|
129
|
-
f =
|
|
116
|
+
// Normalized
|
|
117
|
+
e = e + bias;
|
|
118
|
+
f = f - pow(2, fbits);
|
|
130
119
|
}
|
|
120
|
+
} else {
|
|
121
|
+
// Denormalized
|
|
122
|
+
e = 0;
|
|
123
|
+
f = roundToEven(v / pow(2, 1 - bias - fbits));
|
|
131
124
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
125
|
+
}
|
|
126
|
+
// Pack sign, exponent, fraction
|
|
127
|
+
bits = [];
|
|
128
|
+
for(i = fbits; i; i -= 1){
|
|
129
|
+
bits.push(f % 2 ? 1 : 0);
|
|
130
|
+
f = floor(f / 2);
|
|
131
|
+
}
|
|
132
|
+
for(i = ebits; i; i -= 1){
|
|
133
|
+
bits.push(e % 2 ? 1 : 0);
|
|
134
|
+
e = floor(e / 2);
|
|
135
|
+
}
|
|
136
|
+
bits.push(s ? 1 : 0);
|
|
137
|
+
bits.reverse();
|
|
138
|
+
str = bits.join('');
|
|
139
|
+
// Bits to bytes
|
|
140
|
+
bytes = [];
|
|
141
|
+
while(str.length){
|
|
142
|
+
bytes.unshift(parseInt(str.slice(0, 8), 2));
|
|
143
|
+
str = str.slice(8);
|
|
144
|
+
}
|
|
145
|
+
return bytes;
|
|
146
|
+
};
|
|
147
|
+
var unpackIEEE754 = function(bytes, ebits, fbits){
|
|
148
|
+
var bits = []
|
|
149
|
+
, i, j, b, str, bias, s, e, f;
|
|
150
|
+
for(i = 0; i < bytes.length; ++i)for(b = bytes[i], j = 8; j; --j){
|
|
151
|
+
bits.push(b % 2 ? 1 : 0);
|
|
152
|
+
b = b >> 1;
|
|
153
|
+
}
|
|
154
|
+
bits.reverse();
|
|
155
|
+
str = bits.join('');
|
|
156
|
+
// Unpack sign, exponent, fraction
|
|
157
|
+
bias = (1 << ebits - 1) - 1;
|
|
158
|
+
s = parseInt(str.slice(0, 1), 2) ? -1 : 1;
|
|
159
|
+
e = parseInt(str.slice(1, 1 + ebits), 2);
|
|
160
|
+
f = parseInt(str.slice(1 + ebits), 2);
|
|
161
|
+
// Produce number
|
|
162
|
+
if(e === (1 << ebits) - 1)return f !== 0 ? NaN : s * Infinity;
|
|
163
|
+
// Normalized
|
|
164
|
+
else if(e > 0)return s * pow(2, e - bias) * (1 + f / pow(2, fbits));
|
|
165
|
+
// Denormalized
|
|
166
|
+
else if(f !== 0)return s * pow(2, -(bias - 1)) * (f / pow(2, fbits));
|
|
167
|
+
return s < 0 ? -0 : 0;
|
|
168
|
+
};
|
|
169
|
+
var unpackF64 = function(b){
|
|
170
|
+
return unpackIEEE754(b, 11, 52);
|
|
171
|
+
};
|
|
172
|
+
var packF64 = function(v){
|
|
173
|
+
return packIEEE754(v, 11, 52);
|
|
174
|
+
};
|
|
175
|
+
var unpackF32 = function(b){
|
|
176
|
+
return unpackIEEE754(b, 8, 23);
|
|
177
|
+
};
|
|
178
|
+
var packF32 = function(v){
|
|
179
|
+
return packIEEE754(v, 8, 23);
|
|
180
|
+
};
|
|
187
181
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
182
|
+
var addGetter = function(C, key, internal){
|
|
183
|
+
$.setDesc(C.prototype, key, {get: function(){ return this[internal]; }});
|
|
184
|
+
};
|
|
191
185
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
186
|
+
var get = function(view, bytes, index, conversion, isLittleEndian){
|
|
187
|
+
var numIndex = +index
|
|
188
|
+
, intIndex = toInteger(numIndex);
|
|
189
|
+
if(numIndex != intIndex || intIndex < 0 || intIndex + bytes > view._l)throw RangeError();
|
|
190
|
+
var store = view._b._b
|
|
191
|
+
, start = intIndex + view._o
|
|
192
|
+
, pack = store.slice(start, start + bytes);
|
|
193
|
+
isLittleEndian || pack.reverse();
|
|
194
|
+
return conversion(pack);
|
|
195
|
+
};
|
|
196
|
+
var set = function(view, bytes, index, conversion, value, isLittleEndian){
|
|
197
|
+
var numIndex = +index
|
|
198
|
+
, intIndex = toInteger(numIndex);
|
|
199
|
+
if(numIndex != intIndex || intIndex < 0 || intIndex + bytes > view._l)throw RangeError();
|
|
200
|
+
var store = view._b._b
|
|
201
|
+
, start = intIndex + view._o
|
|
202
|
+
, pack = conversion(+value);
|
|
203
|
+
isLittleEndian || pack.reverse();
|
|
204
|
+
for(var i = 0; i < bytes; i++)store[start + i] = pack[i];
|
|
205
|
+
};
|
|
212
206
|
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
207
|
+
if(!$typed.ABV){
|
|
208
|
+
$ArrayBuffer = function ArrayBuffer(length){
|
|
209
|
+
strictNew(this, $ArrayBuffer, 'ArrayBuffer');
|
|
210
|
+
var numberLength = +length
|
|
211
|
+
, byteLength = toLength(numberLength);
|
|
212
|
+
if(numberLength != byteLength)throw RangeError();
|
|
213
|
+
this._b = arrayFill.call(Array(byteLength), 0);
|
|
214
|
+
this._l = byteLength;
|
|
215
|
+
};
|
|
216
|
+
addGetter($ArrayBuffer, BYTE_LENGTH, '_l');
|
|
223
217
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
};
|
|
236
|
-
addGetter($DataView, 'buffer', '_b');
|
|
237
|
-
addGetter($DataView, BYTE_LENGTH, '_l');
|
|
238
|
-
addGetter($DataView, 'byteOffset', '_o');
|
|
239
|
-
$mix($DataView.prototype, {
|
|
240
|
-
getInt8: function getInt8(byteOffset){
|
|
241
|
-
return get(this, 1, byteOffset, unpackI8);
|
|
242
|
-
},
|
|
243
|
-
getUint8: function getUint8(byteOffset){
|
|
244
|
-
return get(this, 1, byteOffset, unpackU8);
|
|
245
|
-
},
|
|
246
|
-
getInt16: function getInt16(byteOffset /*, littleEndian */){
|
|
247
|
-
return get(this, 2, byteOffset, unpackI16, arguments.length > 1 ? arguments[1] : undefined);
|
|
248
|
-
},
|
|
249
|
-
getUint16: function getUint16(byteOffset /*, littleEndian */){
|
|
250
|
-
return get(this, 2, byteOffset, unpackU16, arguments.length > 1 ? arguments[1] : undefined);
|
|
251
|
-
},
|
|
252
|
-
getInt32: function getInt32(byteOffset /*, littleEndian */){
|
|
253
|
-
return get(this, 4, byteOffset, unpackI32, arguments.length > 1 ? arguments[1] : undefined);
|
|
254
|
-
},
|
|
255
|
-
getUint32: function getUint32(byteOffset /*, littleEndian */){
|
|
256
|
-
return get(this, 4, byteOffset, unpackU32, arguments.length > 1 ? arguments[1] : undefined);
|
|
257
|
-
},
|
|
258
|
-
getFloat32: function getFloat32(byteOffset /*, littleEndian */){
|
|
259
|
-
return get(this, 4, byteOffset, unpackF32, arguments.length > 1 ? arguments[1] : undefined);
|
|
260
|
-
},
|
|
261
|
-
getFloat64: function getFloat64(byteOffset /*, littleEndian */){
|
|
262
|
-
return get(this, 8, byteOffset, unpackF64, arguments.length > 1 ? arguments[1] : undefined);
|
|
263
|
-
},
|
|
264
|
-
setInt8: function setInt8(byteOffset, value){
|
|
265
|
-
return set(this, 1, byteOffset, packI8, value);
|
|
266
|
-
},
|
|
267
|
-
setUint8: function setUint8(byteOffset, value){
|
|
268
|
-
return set(this, 1, byteOffset, packU8, value);
|
|
269
|
-
},
|
|
270
|
-
setInt16: function setInt16(byteOffset, value /*, littleEndian */){
|
|
271
|
-
return set(this, 2, byteOffset, packI16, value, arguments.length > 2 ? arguments[2] : undefined);
|
|
272
|
-
},
|
|
273
|
-
setUint16: function setUint16(byteOffset, value /*, littleEndian */){
|
|
274
|
-
return set(this, 2, byteOffset, packU16, value, arguments.length > 2 ? arguments[2] : undefined);
|
|
275
|
-
},
|
|
276
|
-
setInt32: function setInt32(byteOffset, value /*, littleEndian */){
|
|
277
|
-
return set(this, 4, byteOffset, packI32, value, arguments.length > 2 ? arguments[2] : undefined);
|
|
278
|
-
},
|
|
279
|
-
setUint32: function setUint32(byteOffset, value /*, littleEndian */){
|
|
280
|
-
return set(this, 4, byteOffset, packU32, value, arguments.length > 2 ? arguments[2] : undefined);
|
|
281
|
-
},
|
|
282
|
-
setFloat32: function setFloat32(byteOffset, value /*, littleEndian */){
|
|
283
|
-
return set(this, 4, byteOffset, packF32, value, arguments.length > 2 ? arguments[2] : undefined);
|
|
284
|
-
},
|
|
285
|
-
setFloat64: function setFloat64(byteOffset, value /*, littleEndian */){
|
|
286
|
-
return set(this, 8, byteOffset, packF64, value, arguments.length > 2 ? arguments[2] : undefined);
|
|
287
|
-
}
|
|
288
|
-
});
|
|
289
|
-
}
|
|
290
|
-
module.exports = {
|
|
291
|
-
useNative: useNativeBuffer,
|
|
292
|
-
ArrayBuffer: $ArrayBuffer,
|
|
293
|
-
DataView: $DataView
|
|
218
|
+
$DataView = function DataView(buffer, byteOffset, byteLength){
|
|
219
|
+
strictNew(this, $DataView, 'DataView');
|
|
220
|
+
if(!(buffer instanceof $ArrayBuffer))throw TypeError();
|
|
221
|
+
var bufferLength = buffer._l
|
|
222
|
+
, offset = toInteger(byteOffset);
|
|
223
|
+
if(offset < 0 || offset > bufferLength)throw RangeError();
|
|
224
|
+
byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);
|
|
225
|
+
if(offset + byteLength > bufferLength)throw RangeError();
|
|
226
|
+
this._b = buffer;
|
|
227
|
+
this._o = offset;
|
|
228
|
+
this._l = byteLength;
|
|
294
229
|
};
|
|
295
|
-
|
|
230
|
+
addGetter($DataView, 'buffer', '_b');
|
|
231
|
+
addGetter($DataView, BYTE_LENGTH, '_l');
|
|
232
|
+
addGetter($DataView, 'byteOffset', '_o');
|
|
233
|
+
redefineAll($DataView.prototype, {
|
|
234
|
+
getInt8: function getInt8(byteOffset){
|
|
235
|
+
return get(this, 1, byteOffset, unpackI8);
|
|
236
|
+
},
|
|
237
|
+
getUint8: function getUint8(byteOffset){
|
|
238
|
+
return get(this, 1, byteOffset, unpackU8);
|
|
239
|
+
},
|
|
240
|
+
getInt16: function getInt16(byteOffset /*, littleEndian */){
|
|
241
|
+
return get(this, 2, byteOffset, unpackI16, arguments.length > 1 ? arguments[1] : undefined);
|
|
242
|
+
},
|
|
243
|
+
getUint16: function getUint16(byteOffset /*, littleEndian */){
|
|
244
|
+
return get(this, 2, byteOffset, unpackU16, arguments.length > 1 ? arguments[1] : undefined);
|
|
245
|
+
},
|
|
246
|
+
getInt32: function getInt32(byteOffset /*, littleEndian */){
|
|
247
|
+
return get(this, 4, byteOffset, unpackI32, arguments.length > 1 ? arguments[1] : undefined);
|
|
248
|
+
},
|
|
249
|
+
getUint32: function getUint32(byteOffset /*, littleEndian */){
|
|
250
|
+
return get(this, 4, byteOffset, unpackU32, arguments.length > 1 ? arguments[1] : undefined);
|
|
251
|
+
},
|
|
252
|
+
getFloat32: function getFloat32(byteOffset /*, littleEndian */){
|
|
253
|
+
return get(this, 4, byteOffset, unpackF32, arguments.length > 1 ? arguments[1] : undefined);
|
|
254
|
+
},
|
|
255
|
+
getFloat64: function getFloat64(byteOffset /*, littleEndian */){
|
|
256
|
+
return get(this, 8, byteOffset, unpackF64, arguments.length > 1 ? arguments[1] : undefined);
|
|
257
|
+
},
|
|
258
|
+
setInt8: function setInt8(byteOffset, value){
|
|
259
|
+
return set(this, 1, byteOffset, packI8, value);
|
|
260
|
+
},
|
|
261
|
+
setUint8: function setUint8(byteOffset, value){
|
|
262
|
+
return set(this, 1, byteOffset, packU8, value);
|
|
263
|
+
},
|
|
264
|
+
setInt16: function setInt16(byteOffset, value /*, littleEndian */){
|
|
265
|
+
return set(this, 2, byteOffset, packI16, value, arguments.length > 2 ? arguments[2] : undefined);
|
|
266
|
+
},
|
|
267
|
+
setUint16: function setUint16(byteOffset, value /*, littleEndian */){
|
|
268
|
+
return set(this, 2, byteOffset, packU16, value, arguments.length > 2 ? arguments[2] : undefined);
|
|
269
|
+
},
|
|
270
|
+
setInt32: function setInt32(byteOffset, value /*, littleEndian */){
|
|
271
|
+
return set(this, 4, byteOffset, packI32, value, arguments.length > 2 ? arguments[2] : undefined);
|
|
272
|
+
},
|
|
273
|
+
setUint32: function setUint32(byteOffset, value /*, littleEndian */){
|
|
274
|
+
return set(this, 4, byteOffset, packU32, value, arguments.length > 2 ? arguments[2] : undefined);
|
|
275
|
+
},
|
|
276
|
+
setFloat32: function setFloat32(byteOffset, value /*, littleEndian */){
|
|
277
|
+
return set(this, 4, byteOffset, packF32, value, arguments.length > 2 ? arguments[2] : undefined);
|
|
278
|
+
},
|
|
279
|
+
setFloat64: function setFloat64(byteOffset, value /*, littleEndian */){
|
|
280
|
+
return set(this, 8, byteOffset, packF64, value, arguments.length > 2 ? arguments[2] : undefined);
|
|
281
|
+
}
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
require('./$.hide')($DataView.prototype, $typed.VIEW, true);
|
|
285
|
+
module.exports = {
|
|
286
|
+
ArrayBuffer: $ArrayBuffer,
|
|
287
|
+
DataView: $DataView
|
|
288
|
+
};
|