| 'use strict'; | 
| var globalThis = require('../internals/global-this'); | 
| var uncurryThis = require('../internals/function-uncurry-this'); | 
| var DESCRIPTORS = require('../internals/descriptors'); | 
| var NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection'); | 
| var FunctionName = require('../internals/function-name'); | 
| var createNonEnumerableProperty = require('../internals/create-non-enumerable-property'); | 
| var defineBuiltInAccessor = require('../internals/define-built-in-accessor'); | 
| var defineBuiltIns = require('../internals/define-built-ins'); | 
| var fails = require('../internals/fails'); | 
| var anInstance = require('../internals/an-instance'); | 
| var toIntegerOrInfinity = require('../internals/to-integer-or-infinity'); | 
| var toLength = require('../internals/to-length'); | 
| var toIndex = require('../internals/to-index'); | 
| var fround = require('../internals/math-fround'); | 
| var IEEE754 = require('../internals/ieee754'); | 
| var getPrototypeOf = require('../internals/object-get-prototype-of'); | 
| var setPrototypeOf = require('../internals/object-set-prototype-of'); | 
| var arrayFill = require('../internals/array-fill'); | 
| var arraySlice = require('../internals/array-slice'); | 
| var inheritIfRequired = require('../internals/inherit-if-required'); | 
| var copyConstructorProperties = require('../internals/copy-constructor-properties'); | 
| var setToStringTag = require('../internals/set-to-string-tag'); | 
| var InternalStateModule = require('../internals/internal-state'); | 
|   | 
| var PROPER_FUNCTION_NAME = FunctionName.PROPER; | 
| var CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE; | 
| var ARRAY_BUFFER = 'ArrayBuffer'; | 
| var DATA_VIEW = 'DataView'; | 
| var PROTOTYPE = 'prototype'; | 
| var WRONG_LENGTH = 'Wrong length'; | 
| var WRONG_INDEX = 'Wrong index'; | 
| var getInternalArrayBufferState = InternalStateModule.getterFor(ARRAY_BUFFER); | 
| var getInternalDataViewState = InternalStateModule.getterFor(DATA_VIEW); | 
| var setInternalState = InternalStateModule.set; | 
| var NativeArrayBuffer = globalThis[ARRAY_BUFFER]; | 
| var $ArrayBuffer = NativeArrayBuffer; | 
| var ArrayBufferPrototype = $ArrayBuffer && $ArrayBuffer[PROTOTYPE]; | 
| var $DataView = globalThis[DATA_VIEW]; | 
| var DataViewPrototype = $DataView && $DataView[PROTOTYPE]; | 
| var ObjectPrototype = Object.prototype; | 
| var Array = globalThis.Array; | 
| var RangeError = globalThis.RangeError; | 
| var fill = uncurryThis(arrayFill); | 
| var reverse = uncurryThis([].reverse); | 
|   | 
| var packIEEE754 = IEEE754.pack; | 
| var unpackIEEE754 = IEEE754.unpack; | 
|   | 
| var packInt8 = function (number) { | 
|   return [number & 0xFF]; | 
| }; | 
|   | 
| var packInt16 = function (number) { | 
|   return [number & 0xFF, number >> 8 & 0xFF]; | 
| }; | 
|   | 
| var packInt32 = function (number) { | 
|   return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF]; | 
| }; | 
|   | 
| var unpackInt32 = function (buffer) { | 
|   return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0]; | 
| }; | 
|   | 
| var packFloat32 = function (number) { | 
|   return packIEEE754(fround(number), 23, 4); | 
| }; | 
|   | 
| var packFloat64 = function (number) { | 
|   return packIEEE754(number, 52, 8); | 
| }; | 
|   | 
| var addGetter = function (Constructor, key, getInternalState) { | 
|   defineBuiltInAccessor(Constructor[PROTOTYPE], key, { | 
|     configurable: true, | 
|     get: function () { | 
|       return getInternalState(this)[key]; | 
|     } | 
|   }); | 
| }; | 
|   | 
| var get = function (view, count, index, isLittleEndian) { | 
|   var store = getInternalDataViewState(view); | 
|   var intIndex = toIndex(index); | 
|   var boolIsLittleEndian = !!isLittleEndian; | 
|   if (intIndex + count > store.byteLength) throw new RangeError(WRONG_INDEX); | 
|   var bytes = store.bytes; | 
|   var start = intIndex + store.byteOffset; | 
|   var pack = arraySlice(bytes, start, start + count); | 
|   return boolIsLittleEndian ? pack : reverse(pack); | 
| }; | 
|   | 
| var set = function (view, count, index, conversion, value, isLittleEndian) { | 
|   var store = getInternalDataViewState(view); | 
|   var intIndex = toIndex(index); | 
|   var pack = conversion(+value); | 
|   var boolIsLittleEndian = !!isLittleEndian; | 
|   if (intIndex + count > store.byteLength) throw new RangeError(WRONG_INDEX); | 
|   var bytes = store.bytes; | 
|   var start = intIndex + store.byteOffset; | 
|   for (var i = 0; i < count; i++) bytes[start + i] = pack[boolIsLittleEndian ? i : count - i - 1]; | 
| }; | 
|   | 
| if (!NATIVE_ARRAY_BUFFER) { | 
|   $ArrayBuffer = function ArrayBuffer(length) { | 
|     anInstance(this, ArrayBufferPrototype); | 
|     var byteLength = toIndex(length); | 
|     setInternalState(this, { | 
|       type: ARRAY_BUFFER, | 
|       bytes: fill(Array(byteLength), 0), | 
|       byteLength: byteLength | 
|     }); | 
|     if (!DESCRIPTORS) { | 
|       this.byteLength = byteLength; | 
|       this.detached = false; | 
|     } | 
|   }; | 
|   | 
|   ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE]; | 
|   | 
|   $DataView = function DataView(buffer, byteOffset, byteLength) { | 
|     anInstance(this, DataViewPrototype); | 
|     anInstance(buffer, ArrayBufferPrototype); | 
|     var bufferState = getInternalArrayBufferState(buffer); | 
|     var bufferLength = bufferState.byteLength; | 
|     var offset = toIntegerOrInfinity(byteOffset); | 
|     if (offset < 0 || offset > bufferLength) throw new RangeError('Wrong offset'); | 
|     byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength); | 
|     if (offset + byteLength > bufferLength) throw new RangeError(WRONG_LENGTH); | 
|     setInternalState(this, { | 
|       type: DATA_VIEW, | 
|       buffer: buffer, | 
|       byteLength: byteLength, | 
|       byteOffset: offset, | 
|       bytes: bufferState.bytes | 
|     }); | 
|     if (!DESCRIPTORS) { | 
|       this.buffer = buffer; | 
|       this.byteLength = byteLength; | 
|       this.byteOffset = offset; | 
|     } | 
|   }; | 
|   | 
|   DataViewPrototype = $DataView[PROTOTYPE]; | 
|   | 
|   if (DESCRIPTORS) { | 
|     addGetter($ArrayBuffer, 'byteLength', getInternalArrayBufferState); | 
|     addGetter($DataView, 'buffer', getInternalDataViewState); | 
|     addGetter($DataView, 'byteLength', getInternalDataViewState); | 
|     addGetter($DataView, 'byteOffset', getInternalDataViewState); | 
|   } | 
|   | 
|   defineBuiltIns(DataViewPrototype, { | 
|     getInt8: function getInt8(byteOffset) { | 
|       return get(this, 1, byteOffset)[0] << 24 >> 24; | 
|     }, | 
|     getUint8: function getUint8(byteOffset) { | 
|       return get(this, 1, byteOffset)[0]; | 
|     }, | 
|     getInt16: function getInt16(byteOffset /* , littleEndian */) { | 
|       var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : false); | 
|       return (bytes[1] << 8 | bytes[0]) << 16 >> 16; | 
|     }, | 
|     getUint16: function getUint16(byteOffset /* , littleEndian */) { | 
|       var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : false); | 
|       return bytes[1] << 8 | bytes[0]; | 
|     }, | 
|     getInt32: function getInt32(byteOffset /* , littleEndian */) { | 
|       return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false)); | 
|     }, | 
|     getUint32: function getUint32(byteOffset /* , littleEndian */) { | 
|       return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false)) >>> 0; | 
|     }, | 
|     getFloat32: function getFloat32(byteOffset /* , littleEndian */) { | 
|       return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false), 23); | 
|     }, | 
|     getFloat64: function getFloat64(byteOffset /* , littleEndian */) { | 
|       return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : false), 52); | 
|     }, | 
|     setInt8: function setInt8(byteOffset, value) { | 
|       set(this, 1, byteOffset, packInt8, value); | 
|     }, | 
|     setUint8: function setUint8(byteOffset, value) { | 
|       set(this, 1, byteOffset, packInt8, value); | 
|     }, | 
|     setInt16: function setInt16(byteOffset, value /* , littleEndian */) { | 
|       set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : false); | 
|     }, | 
|     setUint16: function setUint16(byteOffset, value /* , littleEndian */) { | 
|       set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : false); | 
|     }, | 
|     setInt32: function setInt32(byteOffset, value /* , littleEndian */) { | 
|       set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : false); | 
|     }, | 
|     setUint32: function setUint32(byteOffset, value /* , littleEndian */) { | 
|       set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : false); | 
|     }, | 
|     setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) { | 
|       set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : false); | 
|     }, | 
|     setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) { | 
|       set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : false); | 
|     } | 
|   }); | 
| } else { | 
|   var INCORRECT_ARRAY_BUFFER_NAME = PROPER_FUNCTION_NAME && NativeArrayBuffer.name !== ARRAY_BUFFER; | 
|   /* eslint-disable no-new, sonarjs/inconsistent-function-call -- required for testing */ | 
|   if (!fails(function () { | 
|     NativeArrayBuffer(1); | 
|   }) || !fails(function () { | 
|     new NativeArrayBuffer(-1); | 
|   }) || fails(function () { | 
|     new NativeArrayBuffer(); | 
|     new NativeArrayBuffer(1.5); | 
|     new NativeArrayBuffer(NaN); | 
|     return NativeArrayBuffer.length !== 1 || INCORRECT_ARRAY_BUFFER_NAME && !CONFIGURABLE_FUNCTION_NAME; | 
|   })) { | 
|     /* eslint-enable no-new, sonarjs/inconsistent-function-call -- required for testing */ | 
|     $ArrayBuffer = function ArrayBuffer(length) { | 
|       anInstance(this, ArrayBufferPrototype); | 
|       return inheritIfRequired(new NativeArrayBuffer(toIndex(length)), this, $ArrayBuffer); | 
|     }; | 
|   | 
|     $ArrayBuffer[PROTOTYPE] = ArrayBufferPrototype; | 
|   | 
|     ArrayBufferPrototype.constructor = $ArrayBuffer; | 
|   | 
|     copyConstructorProperties($ArrayBuffer, NativeArrayBuffer); | 
|   } else if (INCORRECT_ARRAY_BUFFER_NAME && CONFIGURABLE_FUNCTION_NAME) { | 
|     createNonEnumerableProperty(NativeArrayBuffer, 'name', ARRAY_BUFFER); | 
|   } | 
|   | 
|   // WebKit bug - the same parent prototype for typed arrays and data view | 
|   if (setPrototypeOf && getPrototypeOf(DataViewPrototype) !== ObjectPrototype) { | 
|     setPrototypeOf(DataViewPrototype, ObjectPrototype); | 
|   } | 
|   | 
|   // iOS Safari 7.x bug | 
|   var testView = new $DataView(new $ArrayBuffer(2)); | 
|   var $setInt8 = uncurryThis(DataViewPrototype.setInt8); | 
|   testView.setInt8(0, 2147483648); | 
|   testView.setInt8(1, 2147483649); | 
|   if (testView.getInt8(0) || !testView.getInt8(1)) defineBuiltIns(DataViewPrototype, { | 
|     setInt8: function setInt8(byteOffset, value) { | 
|       $setInt8(this, byteOffset, value << 24 >> 24); | 
|     }, | 
|     setUint8: function setUint8(byteOffset, value) { | 
|       $setInt8(this, byteOffset, value << 24 >> 24); | 
|     } | 
|   }, { unsafe: true }); | 
| } | 
|   | 
| setToStringTag($ArrayBuffer, ARRAY_BUFFER); | 
| setToStringTag($DataView, DATA_VIEW); | 
|   | 
| module.exports = { | 
|   ArrayBuffer: $ArrayBuffer, | 
|   DataView: $DataView | 
| }; |