// Metro module 8 (f9). let isArray; const Deque = function Deque(a0) { let _capacity; L4: { let r14 = a0; if (typeof a0 !== "number") { const isArray2 = isArray(a0); _capacity = 16; if (!isArray2) { break L4; } r14 = a0.length; } const r3 = (Math.min(Math.max(16, r14), 1073741824) >>> 0) - 1; const r24 = r3 | r3 >> 1; const r27 = r24 | r24 >> 2; const r30 = r27 | r27 >> 4; const r33 = r30 | r30 >> 8; _capacity = 1 + (r33 | r33 >> 16); } this._capacity = _capacity; this._length = 0; this._front = 0; this._makeCapacity(); if (isArray(a0)) { const length = a0.length; const r6 = 0 < length; let r44 = 0; if (r6) { do { this[r44] = a0[r44]; r44 = r44 + 1; } while (r44 < length); } this._length = length; } }; Deque.prototype.toArray = function Deque$toArray() { const _length = this._length; const array = new Array(_length); const _front = this._front; const _capacity = this._capacity; let r0 = 0; while (r0 < _length) { array[r0] = this[_front + r0 & _capacity - 1]; r0 = r0 + 1; } return array; }; Deque.prototype.push = function Deque$push(a0) { const length = arguments.length; const _length = this._length; if (length > 1) { const _capacity = this._capacity; if (_length + length > _capacity) { let r29 = 0; const r30 = 0 < length; let r31 = _length; let r32 = r31; if (r30) { do { this._checkCapacity(r31 + 1); this[this._front + r31 & this._capacity - 1] = arguments[r29]; const _length2 = r31 + 1; this._length = _length2; r29 = r29 + 1; r31 = _length2; r32 = r31; } while (r29 < length); } return r32; } let _front = this._front; let r23 = 0; while (r23 < length) { this[_front + _length & _capacity - 1] = arguments[r23]; _front = _front + 1; r23 = r23 + 1; } this._length = _length + length; return _length + length; } let r5 = _length; if (length !== 0) { this._checkCapacity(_length + 1); this[this._front + _length & this._capacity - 1] = a0; this._length = _length + 1; r5 = _length + 1; } return r5; }; Deque.prototype.pop = function Deque$pop() { const _length = this._length; if (_length !== 0) { const r10 = this._front + _length - 1 & this._capacity - 1; const r11 = this[r10]; this[r10] = void 0; this._length = _length - 1; return r11; } }; Deque.prototype.shift = function Deque$shift() { const _length = this._length; if (_length !== 0) { const _front = this._front; const r3 = this[_front]; this[_front] = void 0; this._front = _front + 1 & this._capacity - 1; this._length = _length - 1; return r3; } }; Deque.prototype.unshift = function Deque$unshift(a0) { const _length = this._length; const length = arguments.length; if (length > 1) { const r24 = _length + length; const _capacity2 = this._capacity; if (r24 > _capacity2) { let r35 = length - 1; let r37 = _length; let r38 = r37; while (0 <= r35) { this._checkCapacity(r37 + 1); const _capacity3 = this._capacity; const _front4 = (this._front - 1 & _capacity3 - 1 ^ _capacity3) - _capacity3; this[_front4] = arguments[r35]; const _length2 = r37 + 1; this._length = _length2; this._front = _front4; r35 = r35 - 1; r37 = _length2; r38 = r37; } return r38; } let _front = this._front; let r27 = length - 1; let _front3 = _front; while (0 <= r27) { const r32 = (_front - 1 & _capacity2 - 1 ^ _capacity2) - _capacity2; this[r32] = arguments[r27]; r27 = r27 - 1; _front = r32; _front3 = _front; } this._front = _front3; this._length = _length + length; return _length + length; } if (length === 0) { return _length; } this._checkCapacity(_length + 1); const _capacity = this._capacity; const _front2 = (this._front - 1 & _capacity - 1 ^ _capacity) - _capacity; this[_front2] = a0; this._length = _length + 1; this._front = _front2; return _length + 1; }; Deque.prototype.peekBack = function Deque$peekBack() { const _length = this._length; if (_length !== 0) { return this[this._front + _length - 1 & this._capacity - 1]; } }; Deque.prototype.peekFront = function Deque$peekFront() { if (this._length !== 0) { return this[this._front]; } }; Deque.prototype.get = function Deque$get(a0) { if (a0 === (a0 | 0)) { const _length = this._length; const r4 = a0 < 0 ? a0 + _length : a0; if (!(r4 < 0) && !(r4 >= _length)) { return this[this._front + r4 & this._capacity - 1]; } } }; Deque.prototype.isEmpty = function Deque$isEmpty() { return this._length === 0; }; Deque.prototype.clear = function Deque$clear() { this._length = 0; this._front = 0; this._makeCapacity(); }; Deque.prototype.toString = function Deque$toString() { return this.toArray().toString(); }; Deque.prototype.valueOf = Deque.prototype.toString; Deque.prototype.removeFront = Deque.prototype.shift; Deque.prototype.removeBack = Deque.prototype.pop; Deque.prototype.insertFront = Deque.prototype.unshift; Deque.prototype.insertBack = Deque.prototype.push; Deque.prototype.enqueue = Deque.prototype.push; Deque.prototype.dequeue = Deque.prototype.shift; Deque.prototype.toJSON = Deque.prototype.toArray; Object.defineProperty(Deque.prototype, "length", { get: function get() { return this._length; }, set: function set() { throw new RangeError(""); } }); Deque.prototype._makeCapacity = function Deque$_makeCapacity() { const _capacity = this._capacity; let r0 = 0; while (r0 < _capacity) { this[r0] = void 0; r0 = r0 + 1; } }; Deque.prototype._checkCapacity = function Deque$_checkCapacity(a0) { let r19, _resizeTo; if (this._capacity < a0) { L5: { _resizeTo = this._resizeTo; const r2 = 1.5 * this._capacity + 16; let r12 = r2; if (typeof r12 !== "number") { const isArray2 = isArray(r2); r19 = 16; if (!isArray2) { break L5; } r12 = r2.length; } const r1 = (Math.min(Math.max(16, r12), 1073741824) >>> 0) - 1; const r28 = r1 | r1 >> 1; const r31 = r28 | r28 >> 2; const r34 = r31 | r31 >> 4; const r37 = r34 | r34 >> 8; r19 = 1 + (r37 | r37 >> 16); } _resizeTo.call(this, r19); } }; Deque.prototype._resizeTo = function Deque$_resizeTo(a0) { const _front = this._front; const _capacity = this._capacity; const array = new Array(_capacity); const _length = this._length; const r6 = 0 < _capacity; let r0 = 0; if (r6) { do { const r3 = r0 + 0; array[r3] = this[r3]; r0 = r0 + 1; } while (r0 < _capacity); } this._capacity = a0; this._makeCapacity(); this._front = 0; if (_front + _length <= _capacity) { const r34 = 0 < _length; let r35 = 0; if (r34) { do { this[r35 + 0] = array[r35 + _front]; r35 = r35 + 1; } while (r35 < _length); } } else { const r5 = _length - (_front + _length & _capacity - 1); let r26 = 0; while (r26 < r5) { this[r26 + 0] = array[r26 + _front]; r26 = r26 + 1; } const r30 = _length - r5; let r31 = 0; while (r31 < r30) { this[r31 + r5] = array[r31 + 0]; r31 = r31 + 1; } } }; isArray = Array.isArray; module.exports = Deque;