MediaWiki:Gadget-libPolyfill-TypedArray.prototype.at.js

来自萌娘共享
跳转至: 导航搜索

注意:在保存之后,您可能需要清除浏览器缓存才能看到所作出的变更的影响。

  • Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5Ctrl-R(Mac为⌘-R
  • Google Chrome:Ctrl-Shift-R(Mac为⌘-Shift-R
  • Internet Explorer:按住Ctrl的同时单击刷新,或按Ctrl-F5
  • Opera:前往菜单 → 设置(Mac为Opera → Preferences),然后隐私和安全 → 清除浏览数据 → 缓存的图片和文件
/**
 * -------------------------------------------------------------------------
 * !!! DON'T MODIFY THIS PAGE MANUALLY, YOUR CHANGES WILL BE OVERWRITTEN !!!
 * -------------------------------------------------------------------------
 */
var _addText = '{{GHIACode|page=GHIA:MoegirlPediaInterfaceCodes/blob/master/src/gadgets/libPolyfill/MediaWiki:Gadget-libPolyfill-TypedArray.prototype.at.js|user=[[U:AnnAngela]]|co-authors=GH:github-actions[bot]|longId=40592b0b722ca3f6e5a448a8847015ae96151e5e|shortId=40592b0b|summary=feat: 新版 polyfill 生成机制 (#410)|body=<nowiki>Co-authored-by: github-actions[bot] <41898282+github-actions[bot]📧users.noreply.github.com></nowiki>}}'; 

/* <pre> */

"use strict";
(function () {
    if (!("Int8Array" in self && "at" in self.Int8Array.prototype)) {
        if (!("defineProperty" in Object && function () {
            try {
                var e = {};
                return Object.defineProperty(e, "test", { value: 42 }), !0;
            }
            catch (t) {
                return !1;
            }
        }())) {
            (function (nativeDefineProperty) {
                var supportsAccessors = Object.prototype.hasOwnProperty.call(Object.prototype, '__defineGetter__');
                var ERR_ACCESSORS_NOT_SUPPORTED = 'Getters & setters cannot be defined on this javascript engine';
                var ERR_VALUE_ACCESSORS = 'A property cannot both have accessors and be writable or have a value';
                Object.defineProperty = function defineProperty(object, property, descriptor) {
                    if (nativeDefineProperty && (object === window || object === document || object === Element.prototype || object instanceof Element)) {
                        return nativeDefineProperty(object, property, descriptor);
                    }
                    if (object === null || !(object instanceof Object || typeof object === 'object')) {
                        throw new TypeError('Object.defineProperty called on non-object');
                    }
                    if (!(descriptor instanceof Object)) {
                        throw new TypeError('Property description must be an object');
                    }
                    var propertyString = String(property);
                    var hasValueOrWritable = 'value' in descriptor || 'writable' in descriptor;
                    var getterType = 'get' in descriptor && typeof descriptor.get;
                    var setterType = 'set' in descriptor && typeof descriptor.set;
                    if (getterType) {
                        if (getterType === undefined) {
                            return object;
                        }
                        if (getterType !== 'function') {
                            throw new TypeError('Getter must be a function');
                        }
                        if (!supportsAccessors) {
                            throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);
                        }
                        if (hasValueOrWritable) {
                            throw new TypeError(ERR_VALUE_ACCESSORS);
                        }
                        Object.__defineGetter__.call(object, propertyString, descriptor.get);
                    }
                    else {
                        object[propertyString] = descriptor.value;
                    }
                    if (setterType) {
                        if (setterType === undefined) {
                            return object;
                        }
                        if (setterType !== 'function') {
                            throw new TypeError('Setter must be a function');
                        }
                        if (!supportsAccessors) {
                            throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);
                        }
                        if (hasValueOrWritable) {
                            throw new TypeError(ERR_VALUE_ACCESSORS);
                        }
                        Object.__defineSetter__.call(object, propertyString, descriptor.set);
                    }
                    if ('value' in descriptor) {
                        object[propertyString] = descriptor.value;
                    }
                    return object;
                };
            }(Object.defineProperty));
        }
        function CreateMethodProperty(O, P, V) {
            var newDesc = {
                value: V,
                writable: true,
                enumerable: false,
                configurable: true
            };
            Object.defineProperty(O, P, newDesc);
        }
        function ToNumber(argument) {
            return Number(argument);
        }
        function ToIntegerOrInfinity(argument) {
            var number = ToNumber(argument);
            if (isNaN(number) || number === 0 || 1 / number === -Infinity)
                return 0;
            if (number === Infinity)
                return Infinity;
            if (number === -Infinity)
                return -Infinity;
            var integer = Math.floor(Math.abs(number));
            if (number < 0)
                integer = -integer;
            return integer;
        }
        function Call(F, V) {
            var argumentsList = arguments.length > 2 ? arguments[2] : [];
            if (IsCallable(F) === false) {
                throw new TypeError(Object.prototype.toString.call(F) + 'is not a function.');
            }
            return F.apply(V, argumentsList);
        }
        function ToObject(argument) {
            if (argument === null || argument === undefined) {
                throw TypeError();
            }
            return Object(argument);
        }
        function GetV(v, p) {
            var o = ToObject(v);
            return o[p];
        }
        function IsCallable(argument) {
            return typeof argument === 'function';
        }
        function GetMethod(V, P) {
            var func = GetV(V, P);
            if (func === null || func === undefined) {
                return undefined;
            }
            if (IsCallable(func) === false) {
                throw new TypeError('Method not callable: ' + P);
            }
            return func;
        }
        function Get(O, P) {
            return O[P];
        }
        function Type(x) {
            switch (typeof x) {
                case 'undefined':
                    return 'undefined';
                case 'boolean':
                    return 'boolean';
                case 'number':
                    return 'number';
                case 'string':
                    return 'string';
                case 'symbol':
                    return 'symbol';
                default:
                    if (x === null)
                        return 'null';
                    if ('Symbol' in self && (x instanceof self.Symbol || x.constructor === self.Symbol))
                        return 'symbol';
                    return 'object';
            }
        }
        function OrdinaryToPrimitive(O, hint) {
            if (hint === 'string') {
                var methodNames = ['toString', 'valueOf'];
            }
            else {
                methodNames = ['valueOf', 'toString'];
            }
            for (var i = 0; i < methodNames.length; ++i) {
                var name = methodNames[i];
                var method = Get(O, name);
                if (IsCallable(method)) {
                    var result = Call(method, O);
                    if (Type(result) !== 'object') {
                        return result;
                    }
                }
            }
            throw new TypeError('Cannot convert to primitive.');
        }
        function ToPrimitive(input) {
            var PreferredType = arguments.length > 1 ? arguments[1] : undefined;
            if (Type(input) === 'object') {
                if (arguments.length < 2) {
                    var hint = 'default';
                }
                else if (PreferredType === String) {
                    hint = 'string';
                }
                else if (PreferredType === Number) {
                    hint = 'number';
                }
                var exoticToPrim = typeof self.Symbol === 'function' && typeof self.Symbol.toPrimitive === 'symbol' ? GetMethod(input, self.Symbol.toPrimitive) : undefined;
                if (exoticToPrim !== undefined) {
                    var result = Call(exoticToPrim, input, [hint]);
                    if (Type(result) !== 'object') {
                        return result;
                    }
                    throw new TypeError('Cannot convert exotic object to primitive.');
                }
                if (hint === 'default') {
                    hint = 'number';
                }
                return OrdinaryToPrimitive(input, hint);
            }
            return input;
        }
        function ToString(argument) {
            switch (Type(argument)) {
                case 'symbol':
                    throw new TypeError('Cannot convert a Symbol value to a string');
                case 'object':
                    var primValue = ToPrimitive(argument, String);
                    return ToString(primValue);
                default:
                    return String(argument);
            }
        }
        (function (global) {
            'use strict';
            var undefined = (void 0);
            var MAX_ARRAY_LENGTH = 1e5;
            function Type(v) {
                switch (typeof v) {
                    case 'undefined': return 'undefined';
                    case 'boolean': return 'boolean';
                    case 'number': return 'number';
                    case 'string': return 'string';
                    default: return v === null ? 'null' : 'object';
                }
            }
            function Class(v) { return Object.prototype.toString.call(v).replace(/^\[object *|\]$/g, ''); }
            function IsCallable(o) { return typeof o === 'function'; }
            function ToObject(v) {
                if (v === null || v === undefined)
                    throw TypeError();
                return Object(v);
            }
            function ToInt32(v) { return v >> 0; }
            function ToUint32(v) { return v >>> 0; }
            var LN2 = Math.LN2, abs = Math.abs, floor = Math.floor, log = Math.log, max = Math.max, min = Math.min, pow = Math.pow, round = Math.round;
            (function () {
                var orig = Object.defineProperty;
                var dom_only = !(function () { try {
                    return Object.defineProperty({}, 'x', {});
                }
                catch (_) {
                    return false;
                } }());
                if (!orig || dom_only) {
                    Object.defineProperty = function (o, prop, desc) {
                        if (orig)
                            try {
                                return orig(o, prop, desc);
                            }
                            catch (_) { }
                        if (o !== Object(o))
                            throw TypeError('Object.defineProperty called on non-object');
                        if (Object.prototype.__defineGetter__ && ('get' in desc))
                            Object.prototype.__defineGetter__.call(o, prop, desc.get);
                        if (Object.prototype.__defineSetter__ && ('set' in desc))
                            Object.prototype.__defineSetter__.call(o, prop, desc.set);
                        if ('value' in desc)
                            o[prop] = desc.value;
                        return o;
                    };
                }
            }());
            function makeArrayAccessors(obj) {
                if ('TYPED_ARRAY_POLYFILL_NO_ARRAY_ACCESSORS' in global)
                    return;
                if (obj.length > MAX_ARRAY_LENGTH)
                    throw RangeError('Array too large for polyfill');
                function makeArrayAccessor(index) {
                    try {
                        Object.defineProperty(obj, index, {
                            'get': function () { return obj._getter(index); },
                            'set': function (v) { obj._setter(index, v); },
                            enumerable: true,
                            configurable: false
                        });
                    }
                    catch (_) { }
                }
                var i;
                for (i = 0; i < obj.length; i += 1) {
                    makeArrayAccessor(i);
                }
            }
            function as_signed(value, bits) { var s = 32 - bits; return (value << s) >> s; }
            function as_unsigned(value, bits) { var s = 32 - bits; return (value << s) >>> s; }
            function packI8(n) { return [n & 0xff]; }
            function unpackI8(bytes) { return as_signed(bytes[0], 8); }
            function packU8(n) { return [n & 0xff]; }
            function unpackU8(bytes) { return as_unsigned(bytes[0], 8); }
            function packU8Clamped(n) { n = round(Number(n)); return [n < 0 ? 0 : n > 0xff ? 0xff : n & 0xff]; }
            function packI16(n) { return [n & 0xff, (n >> 8) & 0xff]; }
            function unpackI16(bytes) { return as_signed(bytes[1] << 8 | bytes[0], 16); }
            function packU16(n) { return [n & 0xff, (n >> 8) & 0xff]; }
            function unpackU16(bytes) { return as_unsigned(bytes[1] << 8 | bytes[0], 16); }
            function packI32(n) { return [n & 0xff, (n >> 8) & 0xff, (n >> 16) & 0xff, (n >> 24) & 0xff]; }
            function unpackI32(bytes) { return as_signed(bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0], 32); }
            function packU32(n) { return [n & 0xff, (n >> 8) & 0xff, (n >> 16) & 0xff, (n >> 24) & 0xff]; }
            function unpackU32(bytes) { return as_unsigned(bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0], 32); }
            function packIEEE754(v, ebits, fbits) {
                var bias = (1 << (ebits - 1)) - 1;
                function roundToEven(n) {
                    var w = floor(n), f = n - w;
                    if (f < 0.5)
                        return w;
                    if (f > 0.5)
                        return w + 1;
                    return w % 2 ? w + 1 : w;
                }
                var s, e, f;
                if (v !== v) {
                    e = (1 << ebits) - 1;
                    f = pow(2, fbits - 1);
                    s = 0;
                }
                else if (v === Infinity || v === -Infinity) {
                    e = (1 << ebits) - 1;
                    f = 0;
                    s = (v < 0) ? 1 : 0;
                }
                else if (v === 0) {
                    e = 0;
                    f = 0;
                    s = (1 / v === -Infinity) ? 1 : 0;
                }
                else {
                    s = v < 0;
                    v = abs(v);
                    if (v >= pow(2, 1 - bias)) {
                        e = min(floor(log(v) / LN2), 1023);
                        var significand = v / pow(2, e);
                        if (significand < 1) {
                            e -= 1;
                            significand *= 2;
                        }
                        if (significand >= 2) {
                            e += 1;
                            significand /= 2;
                        }
                        var d = pow(2, fbits);
                        f = roundToEven(significand * d) - d;
                        e += bias;
                        if (f / d >= 1) {
                            e += 1;
                            f = 0;
                        }
                        if (e > 2 * bias) {
                            e = (1 << ebits) - 1;
                            f = 0;
                        }
                    }
                    else {
                        e = 0;
                        f = roundToEven(v / pow(2, 1 - bias - fbits));
                    }
                }
                var bits = [], i;
                for (i = fbits; i; i -= 1) {
                    bits.push(f % 2 ? 1 : 0);
                    f = floor(f / 2);
                }
                for (i = ebits; i; i -= 1) {
                    bits.push(e % 2 ? 1 : 0);
                    e = floor(e / 2);
                }
                bits.push(s ? 1 : 0);
                bits.reverse();
                var str = bits.join('');
                var bytes = [];
                while (str.length) {
                    bytes.unshift(parseInt(str.substring(0, 8), 2));
                    str = str.substring(8);
                }
                return bytes;
            }
            function unpackIEEE754(bytes, ebits, fbits) {
                var bits = [], i, j, b, str, bias, s, e, f;
                for (i = 0; i < bytes.length; ++i) {
                    b = bytes[i];
                    for (j = 8; j; j -= 1) {
                        bits.push(b % 2 ? 1 : 0);
                        b = b >> 1;
                    }
                }
                bits.reverse();
                str = bits.join('');
                bias = (1 << (ebits - 1)) - 1;
                s = parseInt(str.substring(0, 1), 2) ? -1 : 1;
                e = parseInt(str.substring(1, 1 + ebits), 2);
                f = parseInt(str.substring(1 + ebits), 2);
                if (e === (1 << ebits) - 1) {
                    return f !== 0 ? NaN : s * Infinity;
                }
                else if (e > 0) {
                    return s * pow(2, e - bias) * (1 + f / pow(2, fbits));
                }
                else if (f !== 0) {
                    return s * pow(2, -(bias - 1)) * (f / pow(2, fbits));
                }
                else {
                    return s < 0 ? -0 : 0;
                }
            }
            function unpackF64(b) { return unpackIEEE754(b, 11, 52); }
            function packF64(v) { return packIEEE754(v, 11, 52); }
            function unpackF32(b) { return unpackIEEE754(b, 8, 23); }
            function packF32(v) { return packIEEE754(v, 8, 23); }
            (function () {
                function ArrayBuffer(length) {
                    length = ToInt32(length);
                    if (length < 0)
                        throw RangeError('ArrayBuffer size is not a small enough positive integer.');
                    Object.defineProperty(this, 'byteLength', { value: length });
                    Object.defineProperty(this, '_bytes', { value: Array(length) });
                    for (var i = 0; i < length; i += 1)
                        this._bytes[i] = 0;
                }
                global.ArrayBuffer = global.ArrayBuffer || ArrayBuffer;
                function $TypedArray$() {
                    if (!arguments.length || typeof arguments[0] !== 'object') {
                        return (function (length) {
                            length = ToInt32(length);
                            if (length < 0)
                                throw RangeError('length is not a small enough positive integer.');
                            Object.defineProperty(this, 'length', { value: length });
                            Object.defineProperty(this, 'byteLength', { value: length * this.BYTES_PER_ELEMENT });
                            Object.defineProperty(this, 'buffer', { value: new ArrayBuffer(this.byteLength) });
                            Object.defineProperty(this, 'byteOffset', { value: 0 });
                        }).apply(this, arguments);
                    }
                    if (arguments.length >= 1 &&
                        Type(arguments[0]) === 'object' &&
                        arguments[0] instanceof $TypedArray$) {
                        return (function (typedArray) {
                            if (this.constructor !== typedArray.constructor)
                                throw TypeError();
                            var byteLength = typedArray.length * this.BYTES_PER_ELEMENT;
                            Object.defineProperty(this, 'buffer', { value: new ArrayBuffer(byteLength) });
                            Object.defineProperty(this, 'byteLength', { value: byteLength });
                            Object.defineProperty(this, 'byteOffset', { value: 0 });
                            Object.defineProperty(this, 'length', { value: typedArray.length });
                            for (var i = 0; i < this.length; i += 1)
                                this._setter(i, typedArray._getter(i));
                        }).apply(this, arguments);
                    }
                    if (arguments.length >= 1 &&
                        Type(arguments[0]) === 'object' &&
                        !(arguments[0] instanceof $TypedArray$) &&
                        !(arguments[0] instanceof ArrayBuffer || Class(arguments[0]) === 'ArrayBuffer')) {
                        return (function (array) {
                            var byteLength = array.length * this.BYTES_PER_ELEMENT;
                            Object.defineProperty(this, 'buffer', { value: new ArrayBuffer(byteLength) });
                            Object.defineProperty(this, 'byteLength', { value: byteLength });
                            Object.defineProperty(this, 'byteOffset', { value: 0 });
                            Object.defineProperty(this, 'length', { value: array.length });
                            for (var i = 0; i < this.length; i += 1) {
                                var s = array[i];
                                this._setter(i, Number(s));
                            }
                        }).apply(this, arguments);
                    }
                    if (arguments.length >= 1 &&
                        Type(arguments[0]) === 'object' &&
                        (arguments[0] instanceof ArrayBuffer || Class(arguments[0]) === 'ArrayBuffer')) {
                        return (function (buffer, byteOffset, length) {
                            byteOffset = ToUint32(byteOffset);
                            if (byteOffset > buffer.byteLength)
                                throw RangeError('byteOffset out of range');
                            if (byteOffset % this.BYTES_PER_ELEMENT)
                                throw RangeError('buffer length minus the byteOffset is not a multiple of the element size.');
                            if (length === undefined) {
                                var byteLength = buffer.byteLength - byteOffset;
                                if (byteLength % this.BYTES_PER_ELEMENT)
                                    throw RangeError('length of buffer minus byteOffset not a multiple of the element size');
                                length = byteLength / this.BYTES_PER_ELEMENT;
                            }
                            else {
                                length = ToUint32(length);
                                byteLength = length * this.BYTES_PER_ELEMENT;
                            }
                            if ((byteOffset + byteLength) > buffer.byteLength)
                                throw RangeError('byteOffset and length reference an area beyond the end of the buffer');
                            Object.defineProperty(this, 'buffer', { value: buffer });
                            Object.defineProperty(this, 'byteLength', { value: byteLength });
                            Object.defineProperty(this, 'byteOffset', { value: byteOffset });
                            Object.defineProperty(this, 'length', { value: length });
                        }).apply(this, arguments);
                    }
                    throw TypeError();
                }
                Object.defineProperty($TypedArray$, 'from', { value: function (iterable) {
                        return new this(iterable);
                    } });
                Object.defineProperty($TypedArray$, 'of', { value: function () {
                        return new this(arguments);
                    } });
                var $TypedArrayPrototype$ = {};
                $TypedArray$.prototype = $TypedArrayPrototype$;
                Object.defineProperty($TypedArray$.prototype, '_getter', { value: function (index) {
                        if (arguments.length < 1)
                            throw SyntaxError('Not enough arguments');
                        index = ToUint32(index);
                        if (index >= this.length)
                            return undefined;
                        var bytes = [], i, o;
                        for (i = 0, o = this.byteOffset + index * this.BYTES_PER_ELEMENT; i < this.BYTES_PER_ELEMENT; i += 1, o += 1) {
                            bytes.push(this.buffer._bytes[o]);
                        }
                        return this._unpack(bytes);
                    } });
                Object.defineProperty($TypedArray$.prototype, 'get', { value: $TypedArray$.prototype._getter });
                Object.defineProperty($TypedArray$.prototype, '_setter', { value: function (index, value) {
                        if (arguments.length < 2)
                            throw SyntaxError('Not enough arguments');
                        index = ToUint32(index);
                        if (index >= this.length)
                            return;
                        var bytes = this._pack(value), i, o;
                        for (i = 0, o = this.byteOffset + index * this.BYTES_PER_ELEMENT; i < this.BYTES_PER_ELEMENT; i += 1, o += 1) {
                            this.buffer._bytes[o] = bytes[i];
                        }
                    } });
                Object.defineProperty($TypedArray$.prototype, 'constructor', { value: $TypedArray$ });
                Object.defineProperty($TypedArray$.prototype, 'copyWithin', { value: function (target, start) {
                        var end = arguments[2];
                        var o = ToObject(this);
                        var lenVal = o.length;
                        var len = ToUint32(lenVal);
                        len = max(len, 0);
                        var relativeTarget = ToInt32(target);
                        var to;
                        if (relativeTarget < 0)
                            to = max(len + relativeTarget, 0);
                        else
                            to = min(relativeTarget, len);
                        var relativeStart = ToInt32(start);
                        var from;
                        if (relativeStart < 0)
                            from = max(len + relativeStart, 0);
                        else
                            from = min(relativeStart, len);
                        var relativeEnd;
                        if (end === undefined)
                            relativeEnd = len;
                        else
                            relativeEnd = ToInt32(end);
                        var final;
                        if (relativeEnd < 0)
                            final = max(len + relativeEnd, 0);
                        else
                            final = min(relativeEnd, len);
                        var count = min(final - from, len - to);
                        var direction;
                        if (from < to && to < from + count) {
                            direction = -1;
                            from = from + count - 1;
                            to = to + count - 1;
                        }
                        else {
                            direction = 1;
                        }
                        while (count > 0) {
                            o._setter(to, o._getter(from));
                            from = from + direction;
                            to = to + direction;
                            count = count - 1;
                        }
                        return o;
                    } });
                Object.defineProperty($TypedArray$.prototype, 'every', { value: function (callbackfn) {
                        if (this === undefined || this === null)
                            throw TypeError();
                        var t = Object(this);
                        var len = ToUint32(t.length);
                        if (!IsCallable(callbackfn))
                            throw TypeError();
                        var thisArg = arguments[1];
                        for (var i = 0; i < len; i++) {
                            if (!callbackfn.call(thisArg, t._getter(i), i, t))
                                return false;
                        }
                        return true;
                    } });
                Object.defineProperty($TypedArray$.prototype, 'fill', { value: function (value) {
                        var start = arguments[1], end = arguments[2];
                        var o = ToObject(this);
                        var lenVal = o.length;
                        var len = ToUint32(lenVal);
                        len = max(len, 0);
                        var relativeStart = ToInt32(start);
                        var k;
                        if (relativeStart < 0)
                            k = max((len + relativeStart), 0);
                        else
                            k = min(relativeStart, len);
                        var relativeEnd;
                        if (end === undefined)
                            relativeEnd = len;
                        else
                            relativeEnd = ToInt32(end);
                        var final;
                        if (relativeEnd < 0)
                            final = max((len + relativeEnd), 0);
                        else
                            final = min(relativeEnd, len);
                        while (k < final) {
                            o._setter(k, value);
                            k += 1;
                        }
                        return o;
                    } });
                Object.defineProperty($TypedArray$.prototype, 'filter', { value: function (callbackfn) {
                        if (this === undefined || this === null)
                            throw TypeError();
                        var t = Object(this);
                        var len = ToUint32(t.length);
                        if (!IsCallable(callbackfn))
                            throw TypeError();
                        var res = [];
                        var thisp = arguments[1];
                        for (var i = 0; i < len; i++) {
                            var val = t._getter(i);
                            if (callbackfn.call(thisp, val, i, t))
                                res.push(val);
                        }
                        return new this.constructor(res);
                    } });
                Object.defineProperty($TypedArray$.prototype, 'find', { value: function (predicate) {
                        var o = ToObject(this);
                        var lenValue = o.length;
                        var len = ToUint32(lenValue);
                        if (!IsCallable(predicate))
                            throw TypeError();
                        var t = arguments.length > 1 ? arguments[1] : undefined;
                        var k = 0;
                        while (k < len) {
                            var kValue = o._getter(k);
                            var testResult = predicate.call(t, kValue, k, o);
                            if (Boolean(testResult))
                                return kValue;
                            ++k;
                        }
                        return undefined;
                    } });
                Object.defineProperty($TypedArray$.prototype, 'findIndex', { value: function (predicate) {
                        var o = ToObject(this);
                        var lenValue = o.length;
                        var len = ToUint32(lenValue);
                        if (!IsCallable(predicate))
                            throw TypeError();
                        var t = arguments.length > 1 ? arguments[1] : undefined;
                        var k = 0;
                        while (k < len) {
                            var kValue = o._getter(k);
                            var testResult = predicate.call(t, kValue, k, o);
                            if (Boolean(testResult))
                                return k;
                            ++k;
                        }
                        return -1;
                    } });
                Object.defineProperty($TypedArray$.prototype, 'forEach', { value: function (callbackfn) {
                        if (this === undefined || this === null)
                            throw TypeError();
                        var t = Object(this);
                        var len = ToUint32(t.length);
                        if (!IsCallable(callbackfn))
                            throw TypeError();
                        var thisp = arguments[1];
                        for (var i = 0; i < len; i++)
                            callbackfn.call(thisp, t._getter(i), i, t);
                    } });
                Object.defineProperty($TypedArray$.prototype, 'indexOf', { value: function (searchElement) {
                        if (this === undefined || this === null)
                            throw TypeError();
                        var t = Object(this);
                        var len = ToUint32(t.length);
                        if (len === 0)
                            return -1;
                        var n = 0;
                        if (arguments.length > 0) {
                            n = Number(arguments[1]);
                            if (n !== n) {
                                n = 0;
                            }
                            else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0)) {
                                n = (n > 0 || -1) * floor(abs(n));
                            }
                        }
                        if (n >= len)
                            return -1;
                        var k = n >= 0 ? n : max(len - abs(n), 0);
                        for (; k < len; k++) {
                            if (t._getter(k) === searchElement) {
                                return k;
                            }
                        }
                        return -1;
                    } });
                Object.defineProperty($TypedArray$.prototype, 'join', { value: function (separator) {
                        if (this === undefined || this === null)
                            throw TypeError();
                        var t = Object(this);
                        var len = ToUint32(t.length);
                        var tmp = Array(len);
                        for (var i = 0; i < len; ++i)
                            tmp[i] = t._getter(i);
                        return tmp.join(separator === undefined ? ',' : separator);
                    } });
                Object.defineProperty($TypedArray$.prototype, 'lastIndexOf', { value: function (searchElement) {
                        if (this === undefined || this === null)
                            throw TypeError();
                        var t = Object(this);
                        var len = ToUint32(t.length);
                        if (len === 0)
                            return -1;
                        var n = len;
                        if (arguments.length > 1) {
                            n = Number(arguments[1]);
                            if (n !== n) {
                                n = 0;
                            }
                            else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0)) {
                                n = (n > 0 || -1) * floor(abs(n));
                            }
                        }
                        var k = n >= 0 ? min(n, len - 1) : len - abs(n);
                        for (; k >= 0; k--) {
                            if (t._getter(k) === searchElement)
                                return k;
                        }
                        return -1;
                    } });
                Object.defineProperty($TypedArray$.prototype, 'map', { value: function (callbackfn) {
                        if (this === undefined || this === null)
                            throw TypeError();
                        var t = Object(this);
                        var len = ToUint32(t.length);
                        if (!IsCallable(callbackfn))
                            throw TypeError();
                        var res = [];
                        res.length = len;
                        var thisp = arguments[1];
                        for (var i = 0; i < len; i++)
                            res[i] = callbackfn.call(thisp, t._getter(i), i, t);
                        return new this.constructor(res);
                    } });
                Object.defineProperty($TypedArray$.prototype, 'reduce', { value: function (callbackfn) {
                        if (this === undefined || this === null)
                            throw TypeError();
                        var t = Object(this);
                        var len = ToUint32(t.length);
                        if (!IsCallable(callbackfn))
                            throw TypeError();
                        if (len === 0 && arguments.length === 1)
                            throw TypeError();
                        var k = 0;
                        var accumulator;
                        if (arguments.length >= 2) {
                            accumulator = arguments[1];
                        }
                        else {
                            accumulator = t._getter(k++);
                        }
                        while (k < len) {
                            accumulator = callbackfn.call(undefined, accumulator, t._getter(k), k, t);
                            k++;
                        }
                        return accumulator;
                    } });
                Object.defineProperty($TypedArray$.prototype, 'reduceRight', { value: function (callbackfn) {
                        if (this === undefined || this === null)
                            throw TypeError();
                        var t = Object(this);
                        var len = ToUint32(t.length);
                        if (!IsCallable(callbackfn))
                            throw TypeError();
                        if (len === 0 && arguments.length === 1)
                            throw TypeError();
                        var k = len - 1;
                        var accumulator;
                        if (arguments.length >= 2) {
                            accumulator = arguments[1];
                        }
                        else {
                            accumulator = t._getter(k--);
                        }
                        while (k >= 0) {
                            accumulator = callbackfn.call(undefined, accumulator, t._getter(k), k, t);
                            k--;
                        }
                        return accumulator;
                    } });
                Object.defineProperty($TypedArray$.prototype, 'reverse', { value: function () {
                        if (this === undefined || this === null)
                            throw TypeError();
                        var t = Object(this);
                        var len = ToUint32(t.length);
                        var half = floor(len / 2);
                        for (var i = 0, j = len - 1; i < half; ++i, --j) {
                            var tmp = t._getter(i);
                            t._setter(i, t._getter(j));
                            t._setter(j, tmp);
                        }
                        return t;
                    } });
                Object.defineProperty($TypedArray$.prototype, 'set', { value: function (index, value) {
                        if (arguments.length < 1)
                            throw SyntaxError('Not enough arguments');
                        var array, sequence, offset, len, i, s, d, byteOffset, byteLength, tmp;
                        if (typeof arguments[0] === 'object' && arguments[0].constructor === this.constructor) {
                            array = arguments[0];
                            offset = ToUint32(arguments[1]);
                            if (offset + array.length > this.length) {
                                throw RangeError('Offset plus length of array is out of range');
                            }
                            byteOffset = this.byteOffset + offset * this.BYTES_PER_ELEMENT;
                            byteLength = array.length * this.BYTES_PER_ELEMENT;
                            if (array.buffer === this.buffer) {
                                tmp = [];
                                for (i = 0, s = array.byteOffset; i < byteLength; i += 1, s += 1) {
                                    tmp[i] = array.buffer._bytes[s];
                                }
                                for (i = 0, d = byteOffset; i < byteLength; i += 1, d += 1) {
                                    this.buffer._bytes[d] = tmp[i];
                                }
                            }
                            else {
                                for (i = 0, s = array.byteOffset, d = byteOffset; i < byteLength; i += 1, s += 1, d += 1) {
                                    this.buffer._bytes[d] = array.buffer._bytes[s];
                                }
                            }
                        }
                        else if (typeof arguments[0] === 'object' && typeof arguments[0].length !== 'undefined') {
                            sequence = arguments[0];
                            len = ToUint32(sequence.length);
                            offset = ToUint32(arguments[1]);
                            if (offset + len > this.length) {
                                throw RangeError('Offset plus length of array is out of range');
                            }
                            for (i = 0; i < len; i += 1) {
                                s = sequence[i];
                                this._setter(offset + i, Number(s));
                            }
                        }
                        else {
                            throw TypeError('Unexpected argument type(s)');
                        }
                    } });
                Object.defineProperty($TypedArray$.prototype, 'slice', { value: function (start, end) {
                        var o = ToObject(this);
                        var lenVal = o.length;
                        var len = ToUint32(lenVal);
                        var relativeStart = ToInt32(start);
                        var k = (relativeStart < 0) ? max(len + relativeStart, 0) : min(relativeStart, len);
                        var relativeEnd = (end === undefined) ? len : ToInt32(end);
                        var final = (relativeEnd < 0) ? max(len + relativeEnd, 0) : min(relativeEnd, len);
                        var count = final - k;
                        var c = o.constructor;
                        var a = new c(count);
                        var n = 0;
                        while (k < final) {
                            var kValue = o._getter(k);
                            a._setter(n, kValue);
                            ++k;
                            ++n;
                        }
                        return a;
                    } });
                Object.defineProperty($TypedArray$.prototype, 'some', { value: function (callbackfn) {
                        if (this === undefined || this === null)
                            throw TypeError();
                        var t = Object(this);
                        var len = ToUint32(t.length);
                        if (!IsCallable(callbackfn))
                            throw TypeError();
                        var thisp = arguments[1];
                        for (var i = 0; i < len; i++) {
                            if (callbackfn.call(thisp, t._getter(i), i, t)) {
                                return true;
                            }
                        }
                        return false;
                    } });
                Object.defineProperty($TypedArray$.prototype, 'sort', { value: function (comparefn) {
                        if (this === undefined || this === null)
                            throw TypeError();
                        var t = Object(this);
                        var len = ToUint32(t.length);
                        var tmp = Array(len);
                        for (var i = 0; i < len; ++i)
                            tmp[i] = t._getter(i);
                        function sortCompare(x, y) {
                            if (x !== x && y !== y)
                                return +0;
                            if (x !== x)
                                return 1;
                            if (y !== y)
                                return -1;
                            if (comparefn !== undefined) {
                                return comparefn(x, y);
                            }
                            if (x < y)
                                return -1;
                            if (x > y)
                                return 1;
                            return +0;
                        }
                        tmp.sort(sortCompare);
                        for (i = 0; i < len; ++i)
                            t._setter(i, tmp[i]);
                        return t;
                    } });
                Object.defineProperty($TypedArray$.prototype, 'subarray', { value: function (start, end) {
                        function clamp(v, min, max) { return v < min ? min : v > max ? max : v; }
                        start = ToInt32(start);
                        end = ToInt32(end);
                        if (arguments.length < 1) {
                            start = 0;
                        }
                        if (arguments.length < 2) {
                            end = this.length;
                        }
                        if (start < 0) {
                            start = this.length + start;
                        }
                        if (end < 0) {
                            end = this.length + end;
                        }
                        start = clamp(start, 0, this.length);
                        end = clamp(end, 0, this.length);
                        var len = end - start;
                        if (len < 0) {
                            len = 0;
                        }
                        return new this.constructor(this.buffer, this.byteOffset + start * this.BYTES_PER_ELEMENT, len);
                    } });
                function makeTypedArray(elementSize, pack, unpack) {
                    var TypedArray = function () {
                        Object.defineProperty(this, 'constructor', { value: TypedArray });
                        $TypedArray$.apply(this, arguments);
                        makeArrayAccessors(this);
                    };
                    if ('__proto__' in TypedArray) {
                        TypedArray.__proto__ = $TypedArray$;
                    }
                    else {
                        TypedArray.from = $TypedArray$.from;
                        TypedArray.of = $TypedArray$.of;
                    }
                    TypedArray.BYTES_PER_ELEMENT = elementSize;
                    var TypedArrayPrototype = function () { };
                    TypedArrayPrototype.prototype = $TypedArrayPrototype$;
                    TypedArray.prototype = new TypedArrayPrototype();
                    Object.defineProperty(TypedArray.prototype, 'BYTES_PER_ELEMENT', { value: elementSize });
                    Object.defineProperty(TypedArray.prototype, '_pack', { value: pack });
                    Object.defineProperty(TypedArray.prototype, '_unpack', { value: unpack });
                    return TypedArray;
                }
                var Int8Array = makeTypedArray(1, packI8, unpackI8);
                var Uint8Array = makeTypedArray(1, packU8, unpackU8);
                var Uint8ClampedArray = makeTypedArray(1, packU8Clamped, unpackU8);
                var Int16Array = makeTypedArray(2, packI16, unpackI16);
                var Uint16Array = makeTypedArray(2, packU16, unpackU16);
                var Int32Array = makeTypedArray(4, packI32, unpackI32);
                var Uint32Array = makeTypedArray(4, packU32, unpackU32);
                var Float32Array = makeTypedArray(4, packF32, unpackF32);
                var Float64Array = makeTypedArray(8, packF64, unpackF64);
                global.Int8Array = global.Int8Array || Int8Array;
                global.Uint8Array = global.Uint8Array || Uint8Array;
                global.Uint8ClampedArray = global.Uint8ClampedArray || Uint8ClampedArray;
                global.Int16Array = global.Int16Array || Int16Array;
                global.Uint16Array = global.Uint16Array || Uint16Array;
                global.Int32Array = global.Int32Array || Int32Array;
                global.Uint32Array = global.Uint32Array || Uint32Array;
                global.Float32Array = global.Float32Array || Float32Array;
                global.Float64Array = global.Float64Array || Float64Array;
            }());
            (function () {
                function r(array, index) {
                    return IsCallable(array.get) ? array.get(index) : array[index];
                }
                var IS_BIG_ENDIAN = (function () {
                    var u16array = new Uint16Array([0x1234]), u8array = new Uint8Array(u16array.buffer);
                    return r(u8array, 0) === 0x12;
                }());
                function DataView(buffer, byteOffset, byteLength) {
                    if (!(buffer instanceof ArrayBuffer || Class(buffer) === 'ArrayBuffer'))
                        throw TypeError();
                    byteOffset = ToUint32(byteOffset);
                    if (byteOffset > buffer.byteLength)
                        throw RangeError('byteOffset out of range');
                    if (byteLength === undefined)
                        byteLength = buffer.byteLength - byteOffset;
                    else
                        byteLength = ToUint32(byteLength);
                    if ((byteOffset + byteLength) > buffer.byteLength)
                        throw RangeError('byteOffset and length reference an area beyond the end of the buffer');
                    Object.defineProperty(this, 'buffer', { value: buffer });
                    Object.defineProperty(this, 'byteLength', { value: byteLength });
                    Object.defineProperty(this, 'byteOffset', { value: byteOffset });
                }
                ;
                function makeGetter(arrayType) {
                    return function GetViewValue(byteOffset, littleEndian) {
                        byteOffset = ToUint32(byteOffset);
                        if (byteOffset + arrayType.BYTES_PER_ELEMENT > this.byteLength)
                            throw RangeError('Array index out of range');
                        byteOffset += this.byteOffset;
                        var uint8Array = new Uint8Array(this.buffer, byteOffset, arrayType.BYTES_PER_ELEMENT), bytes = [];
                        for (var i = 0; i < arrayType.BYTES_PER_ELEMENT; i += 1)
                            bytes.push(r(uint8Array, i));
                        if (Boolean(littleEndian) === Boolean(IS_BIG_ENDIAN))
                            bytes.reverse();
                        return r(new arrayType(new Uint8Array(bytes).buffer), 0);
                    };
                }
                Object.defineProperty(DataView.prototype, 'getUint8', { value: makeGetter(Uint8Array) });
                Object.defineProperty(DataView.prototype, 'getInt8', { value: makeGetter(Int8Array) });
                Object.defineProperty(DataView.prototype, 'getUint16', { value: makeGetter(Uint16Array) });
                Object.defineProperty(DataView.prototype, 'getInt16', { value: makeGetter(Int16Array) });
                Object.defineProperty(DataView.prototype, 'getUint32', { value: makeGetter(Uint32Array) });
                Object.defineProperty(DataView.prototype, 'getInt32', { value: makeGetter(Int32Array) });
                Object.defineProperty(DataView.prototype, 'getFloat32', { value: makeGetter(Float32Array) });
                Object.defineProperty(DataView.prototype, 'getFloat64', { value: makeGetter(Float64Array) });
                function makeSetter(arrayType) {
                    return function SetViewValue(byteOffset, value, littleEndian) {
                        byteOffset = ToUint32(byteOffset);
                        if (byteOffset + arrayType.BYTES_PER_ELEMENT > this.byteLength)
                            throw RangeError('Array index out of range');
                        var typeArray = new arrayType([value]), byteArray = new Uint8Array(typeArray.buffer), bytes = [], i, byteView;
                        for (i = 0; i < arrayType.BYTES_PER_ELEMENT; i += 1)
                            bytes.push(r(byteArray, i));
                        if (Boolean(littleEndian) === Boolean(IS_BIG_ENDIAN))
                            bytes.reverse();
                        byteView = new Uint8Array(this.buffer, byteOffset, arrayType.BYTES_PER_ELEMENT);
                        byteView.set(bytes);
                    };
                }
                Object.defineProperty(DataView.prototype, 'setUint8', { value: makeSetter(Uint8Array) });
                Object.defineProperty(DataView.prototype, 'setInt8', { value: makeSetter(Int8Array) });
                Object.defineProperty(DataView.prototype, 'setUint16', { value: makeSetter(Uint16Array) });
                Object.defineProperty(DataView.prototype, 'setInt16', { value: makeSetter(Int16Array) });
                Object.defineProperty(DataView.prototype, 'setUint32', { value: makeSetter(Uint32Array) });
                Object.defineProperty(DataView.prototype, 'setInt32', { value: makeSetter(Int32Array) });
                Object.defineProperty(DataView.prototype, 'setFloat32', { value: makeSetter(Float32Array) });
                Object.defineProperty(DataView.prototype, 'setFloat64', { value: makeSetter(Float64Array) });
                global.DataView = global.DataView || DataView;
            }());
        }(self));
        (function () {
            var typedArraysSupportIndexLookup = (function () {
                var uint8 = new Uint8Array(2);
                uint8[0] = 42;
                return uint8[0] === 42;
            });
            function getTypedArrayIndex(array, index) {
                if (typedArraysSupportIndexLookup) {
                    return array[index];
                }
                else {
                    return array._getter(index);
                }
            }
            function at(index) {
                var O = this;
                var len = O.length;
                var relativeIndex = ToIntegerOrInfinity(index);
                var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;
                if (k < 0 || k >= len)
                    return undefined;
                return getTypedArrayIndex(O, ToString(k));
            }
            if ('__proto__' in self.Int8Array.prototype) {
                CreateMethodProperty(self.Int8Array.prototype.__proto__, 'at', at);
            }
            else {
                CreateMethodProperty(self.Int8Array.prototype, 'at', at);
                CreateMethodProperty(self.Uint8Array.prototype, 'at', at);
                CreateMethodProperty(self.Uint8ClampedArray.prototype, 'at', at);
                CreateMethodProperty(self.Int16Array.prototype, 'at', at);
                CreateMethodProperty(self.Uint16Array.prototype, 'at', at);
                CreateMethodProperty(self.Int32Array.prototype, 'at', at);
                CreateMethodProperty(self.Uint32Array.prototype, 'at', at);
                CreateMethodProperty(self.Float32Array.prototype, 'at', at);
                CreateMethodProperty(self.Float64Array.prototype, 'at', at);
            }
        })();
    }
})(); 

/* </pre> */