@norskvideo/moq-js-player 0.6.2 → 0.6.4

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.
@@ -1 +1 @@
1
- {"version":3,"file":"moq-publisher.esm.js","sources":["../../transport/buffer.ts","../../transport/base_data.ts","../../transport/control/subscribe.ts","../../transport/control/subscribe_ok.ts","../../transport/control/subscribe_error.ts","../../transport/control/subscribe_update.ts","../../transport/control/subscribe_namespace.ts","../../transport/control/subscribe_namespace_ok.ts","../../transport/control/subscribe_namespace_error.ts","../../transport/control/unsubscribe.ts","../../transport/control/publish.ts","../../transport/control/publish_ok.ts","../../transport/control/publish_error.ts","../../transport/control/publish_done.ts","../../transport/control/publish_namespace.ts","../../transport/control/publish_namespace_ok.ts","../../transport/control/publish_namespace_error.ts","../../transport/control/publish_namespace_done.ts","../../transport/control/fetch.ts","../../transport/control/fetch_ok.ts","../../transport/control/fetch_error.ts","../../transport/control/fetch_cancel.ts","../../transport/control/go_away.ts","../../transport/control/client_setup.ts","../../transport/control/server_setup.ts","../../transport/control/index.ts","../../transport/utils.ts","../../transport/stream.ts","../../transport/subgroup.ts","../../transport/objects.ts","../../common/error.ts","../../common/async.ts","../../transport/publisher.ts","../../transport/subscriber.ts","../../transport/connection.ts","../../transport/client.ts","../../contribute/segment.ts","../../node_modules/mp4box/dist/mp4box.all.js","../../media/mp4/index.ts","../../contribute/container.ts","../../contribute/audio.ts","../../contribute/video.ts","../../contribute/track.ts","../../common/settings.ts","../../contribute/broadcast.ts","../../media/catalog/index.ts","../../publish/index.ts","../../moq-publisher/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"// file:src/log.js\n/* \n * Copyright (c) 2012-2013. Telecom ParisTech/TSI/MM/GPAC Cyril Concolato\n * License: BSD-3-Clause (see LICENSE file)\n */\nvar Log = (function (){\n\t\tvar start = new Date();\n\t\tvar LOG_LEVEL_ERROR \t= 4;\n\t\tvar LOG_LEVEL_WARNING \t= 3;\n\t\tvar LOG_LEVEL_INFO \t\t= 2;\n\t\tvar LOG_LEVEL_DEBUG\t\t= 1;\n\t\tvar log_level = LOG_LEVEL_ERROR;\n\t\tvar logObject = {\n\t\t\tsetLogLevel : function(level) {\n\t\t\t\tif (level == this.debug) log_level = LOG_LEVEL_DEBUG;\n\t\t\t\telse if (level == this.info) log_level = LOG_LEVEL_INFO;\n\t\t\t\telse if (level == this.warn) log_level = LOG_LEVEL_WARNING;\n\t\t\t\telse if (level == this.error) log_level = LOG_LEVEL_ERROR;\n\t\t\t\telse log_level = LOG_LEVEL_ERROR;\n\t\t\t},\n\t\t\tdebug : function(module, msg) {\n\t\t\t\tif (console.debug === undefined) {\n\t\t\t\t\tconsole.debug = console.log;\n\t\t\t\t}\n\t\t\t\tif (LOG_LEVEL_DEBUG >= log_level) {\n\t\t\t\t\tconsole.debug(\"[\"+Log.getDurationString(new Date()-start,1000)+\"]\",\"[\"+module+\"]\",msg);\n\t\t\t\t}\n\t\t\t},\n\t\t\tlog : function(module, msg) {\n\t\t\t\tthis.debug(module.msg)\n\t\t\t},\n\t\t\tinfo : function(module, msg) {\n\t\t\t\tif (LOG_LEVEL_INFO >= log_level) {\n\t\t\t\t\tconsole.info(\"[\"+Log.getDurationString(new Date()-start,1000)+\"]\",\"[\"+module+\"]\",msg);\n\t\t\t\t}\n\t\t\t},\n\t\t\twarn : function(module, msg) {\n\t\t\t\tif (LOG_LEVEL_WARNING >= log_level) {\n\t\t\t\t\tconsole.warn(\"[\"+Log.getDurationString(new Date()-start,1000)+\"]\",\"[\"+module+\"]\",msg);\n\t\t\t\t}\n\t\t\t},\n\t\t\terror : function(module, msg) {\n\t\t\t\tif (LOG_LEVEL_ERROR >= log_level) {\n\t\t\t\t\tconsole.error(\"[\"+Log.getDurationString(new Date()-start,1000)+\"]\",\"[\"+module+\"]\",msg);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\treturn logObject;\n\t})();\n\t\n/* Helper function to print a duration value in the form H:MM:SS.MS */\nLog.getDurationString = function(duration, _timescale) {\n\tvar neg;\n\t/* Helper function to print a number on a fixed number of digits */\n\tfunction pad(number, length) {\n\t\tvar str = '' + number;\n\t\tvar a = str.split('.');\t\t\n\t\twhile (a[0].length < length) {\n\t\t\ta[0] = '0' + a[0];\n\t\t}\n\t\treturn a.join('.');\n\t}\n\tif (duration < 0) {\n\t\tneg = true;\n\t\tduration = -duration;\n\t} else {\n\t\tneg = false;\t\n\t}\n\tvar timescale = _timescale || 1;\n\tvar duration_sec = duration/timescale;\n\tvar hours = Math.floor(duration_sec/3600);\n\tduration_sec -= hours * 3600;\n\tvar minutes = Math.floor(duration_sec/60);\n\tduration_sec -= minutes * 60;\t\t\n\tvar msec = duration_sec*1000;\n\tduration_sec = Math.floor(duration_sec);\n\tmsec -= duration_sec*1000;\n\tmsec = Math.floor(msec);\n\treturn (neg ? \"-\": \"\")+hours+\":\"+pad(minutes,2)+\":\"+pad(duration_sec,2)+\".\"+pad(msec,3);\n}\n\t\n/* Helper function to stringify HTML5 TimeRanges objects */\t\nLog.printRanges = function(ranges) {\n\tvar length = ranges.length;\n\tif (length > 0) {\n\t\tvar str = \"\";\n\t\tfor (var i = 0; i < length; i++) {\n\t\t if (i > 0) str += \",\";\n\t\t str += \"[\"+Log.getDurationString(ranges.start(i))+ \",\"+Log.getDurationString(ranges.end(i))+\"]\";\n\t\t}\n\t\treturn str;\n\t} else {\n\t\treturn \"(empty)\";\n\t}\n}\n\nif (typeof exports !== 'undefined') {\n\texports.Log = Log;\n}\n// file:src/stream.js\nvar MP4BoxStream = function(arrayBuffer) {\n if (arrayBuffer instanceof ArrayBuffer) {\n this.buffer = arrayBuffer;\n this.dataview = new DataView(arrayBuffer);\n } else {\n throw (\"Needs an array buffer\");\n }\n this.position = 0;\n};\n\n/*************************************************************************\n Common API between MultiBufferStream and SimpleStream\n *************************************************************************/\nMP4BoxStream.prototype.getPosition = function() {\n return this.position;\n}\n\nMP4BoxStream.prototype.getEndPosition = function() {\n return this.buffer.byteLength;\n}\n\nMP4BoxStream.prototype.getLength = function() {\n return this.buffer.byteLength;\n}\n\nMP4BoxStream.prototype.seek = function (pos) {\n var npos = Math.max(0, Math.min(this.buffer.byteLength, pos));\n this.position = (isNaN(npos) || !isFinite(npos)) ? 0 : npos;\n return true;\n}\n\nMP4BoxStream.prototype.isEos = function () {\n return this.getPosition() >= this.getEndPosition();\n}\n\n/*************************************************************************\n Read methods, simimar to DataStream but simpler\n *************************************************************************/\nMP4BoxStream.prototype.readAnyInt = function(size, signed) {\n var res = 0;\n if (this.position + size <= this.buffer.byteLength) {\n switch (size) {\n case 1:\n if (signed) {\n res = this.dataview.getInt8(this.position);\n } else {\n res = this.dataview.getUint8(this.position);\n }\n break;\n case 2:\n if (signed) {\n res = this.dataview.getInt16(this.position);\n } else {\n res = this.dataview.getUint16(this.position);\n }\n break;\n case 3:\n if (signed) {\n throw (\"No method for reading signed 24 bits values\");\n } else {\n res = this.dataview.getUint8(this.position) << 16;\n res |= this.dataview.getUint8(this.position+1) << 8;\n res |= this.dataview.getUint8(this.position+2);\n }\n break;\n case 4:\n if (signed) {\n res = this.dataview.getInt32(this.position);\n } else {\n res = this.dataview.getUint32(this.position);\n }\n break;\n case 8:\n if (signed) {\n throw (\"No method for reading signed 64 bits values\");\n } else {\n res = this.dataview.getUint32(this.position) << 32;\n res |= this.dataview.getUint32(this.position+4);\n }\n break;\n default:\n throw (\"readInt method not implemented for size: \"+size);\n }\n this.position+= size;\n return res;\n } else {\n throw (\"Not enough bytes in buffer\");\n }\n}\n\nMP4BoxStream.prototype.readUint8 = function() {\n return this.readAnyInt(1, false);\n}\n\nMP4BoxStream.prototype.readUint16 = function() {\n return this.readAnyInt(2, false);\n}\n\nMP4BoxStream.prototype.readUint24 = function() {\n return this.readAnyInt(3, false);\n}\n\nMP4BoxStream.prototype.readUint32 = function() {\n return this.readAnyInt(4, false);\n}\n\nMP4BoxStream.prototype.readUint64 = function() {\n return this.readAnyInt(8, false);\n}\n\nMP4BoxStream.prototype.readString = function(length) {\n if (this.position + length <= this.buffer.byteLength) {\n var s = \"\";\n for (var i = 0; i < length; i++) {\n s += String.fromCharCode(this.readUint8());\n }\n return s;\n } else {\n throw (\"Not enough bytes in buffer\");\n }\n}\n\nMP4BoxStream.prototype.readCString = function() {\n var arr = [];\n while(true) {\n var b = this.readUint8();\n if (b !== 0) {\n arr.push(b);\n } else {\n break;\n }\n }\n return String.fromCharCode.apply(null, arr); \n}\n\nMP4BoxStream.prototype.readInt8 = function() {\n return this.readAnyInt(1, true);\n}\n\nMP4BoxStream.prototype.readInt16 = function() {\n return this.readAnyInt(2, true);\n}\n\nMP4BoxStream.prototype.readInt32 = function() {\n return this.readAnyInt(4, true);\n}\n\nMP4BoxStream.prototype.readInt64 = function() {\n return this.readAnyInt(8, false);\n}\n\nMP4BoxStream.prototype.readUint8Array = function(length) {\n var arr = new Uint8Array(length);\n for (var i = 0; i < length; i++) {\n arr[i] = this.readUint8();\n }\n return arr;\n}\n\nMP4BoxStream.prototype.readInt16Array = function(length) {\n var arr = new Int16Array(length);\n for (var i = 0; i < length; i++) {\n arr[i] = this.readInt16();\n }\n return arr;\n}\n\nMP4BoxStream.prototype.readUint16Array = function(length) {\n var arr = new Int16Array(length);\n for (var i = 0; i < length; i++) {\n arr[i] = this.readUint16();\n }\n return arr;\n}\n\nMP4BoxStream.prototype.readUint32Array = function(length) {\n var arr = new Uint32Array(length);\n for (var i = 0; i < length; i++) {\n arr[i] = this.readUint32();\n }\n return arr;\n}\n\nMP4BoxStream.prototype.readInt32Array = function(length) {\n var arr = new Int32Array(length);\n for (var i = 0; i < length; i++) {\n arr[i] = this.readInt32();\n }\n return arr;\n}\n\nif (typeof exports !== 'undefined') {\n exports.MP4BoxStream = MP4BoxStream;\n}// file:src/DataStream.js\n/**\n DataStream reads scalars, arrays and structs of data from an ArrayBuffer.\n It's like a file-like DataView on steroids.\n\n @param {ArrayBuffer} arrayBuffer ArrayBuffer to read from.\n @param {?Number} byteOffset Offset from arrayBuffer beginning for the DataStream.\n @param {?Boolean} endianness DataStream.BIG_ENDIAN or DataStream.LITTLE_ENDIAN (the default).\n */\nvar DataStream = function(arrayBuffer, byteOffset, endianness) {\n this._byteOffset = byteOffset || 0;\n if (arrayBuffer instanceof ArrayBuffer) {\n this.buffer = arrayBuffer;\n } else if (typeof arrayBuffer == \"object\") {\n this.dataView = arrayBuffer;\n if (byteOffset) {\n this._byteOffset += byteOffset;\n }\n } else {\n this.buffer = new ArrayBuffer(arrayBuffer || 0);\n }\n this.position = 0;\n this.endianness = endianness == null ? DataStream.LITTLE_ENDIAN : endianness;\n};\nDataStream.prototype = {};\n\nDataStream.prototype.getPosition = function() {\n return this.position;\n}\n\n/**\n Internal function to resize the DataStream buffer when required.\n @param {number} extra Number of bytes to add to the buffer allocation.\n @return {null}\n */\nDataStream.prototype._realloc = function(extra) {\n if (!this._dynamicSize) {\n return;\n }\n var req = this._byteOffset + this.position + extra;\n var blen = this._buffer.byteLength;\n if (req <= blen) {\n if (req > this._byteLength) {\n this._byteLength = req;\n }\n return;\n }\n if (blen < 1) {\n blen = 1;\n }\n while (req > blen) {\n blen *= 2;\n }\n var buf = new ArrayBuffer(blen);\n var src = new Uint8Array(this._buffer);\n var dst = new Uint8Array(buf, 0, src.length);\n dst.set(src);\n this.buffer = buf;\n this._byteLength = req;\n};\n\n/**\n Internal function to trim the DataStream buffer when required.\n Used for stripping out the extra bytes from the backing buffer when\n the virtual byteLength is smaller than the buffer byteLength (happens after\n growing the buffer with writes and not filling the extra space completely).\n\n @return {null}\n */\nDataStream.prototype._trimAlloc = function() {\n if (this._byteLength == this._buffer.byteLength) {\n return;\n }\n var buf = new ArrayBuffer(this._byteLength);\n var dst = new Uint8Array(buf);\n var src = new Uint8Array(this._buffer, 0, dst.length);\n dst.set(src);\n this.buffer = buf;\n};\n\n\n/**\n Big-endian const to use as default endianness.\n @type {boolean}\n */\nDataStream.BIG_ENDIAN = false;\n\n/**\n Little-endian const to use as default endianness.\n @type {boolean}\n */\nDataStream.LITTLE_ENDIAN = true;\n\n/**\n Virtual byte length of the DataStream backing buffer.\n Updated to be max of original buffer size and last written size.\n If dynamicSize is false is set to buffer size.\n @type {number}\n */\nDataStream.prototype._byteLength = 0;\n\n/**\n Returns the byte length of the DataStream object.\n @type {number}\n */\nObject.defineProperty(DataStream.prototype, 'byteLength',\n { get: function() {\n return this._byteLength - this._byteOffset;\n }});\n\n/**\n Set/get the backing ArrayBuffer of the DataStream object.\n The setter updates the DataView to point to the new buffer.\n @type {Object}\n */\nObject.defineProperty(DataStream.prototype, 'buffer',\n { get: function() {\n this._trimAlloc();\n return this._buffer;\n },\n set: function(v) {\n this._buffer = v;\n this._dataView = new DataView(this._buffer, this._byteOffset);\n this._byteLength = this._buffer.byteLength;\n } });\n\n/**\n Set/get the byteOffset of the DataStream object.\n The setter updates the DataView to point to the new byteOffset.\n @type {number}\n */\nObject.defineProperty(DataStream.prototype, 'byteOffset',\n { get: function() {\n return this._byteOffset;\n },\n set: function(v) {\n this._byteOffset = v;\n this._dataView = new DataView(this._buffer, this._byteOffset);\n this._byteLength = this._buffer.byteLength;\n } });\n\n/**\n Set/get the backing DataView of the DataStream object.\n The setter updates the buffer and byteOffset to point to the DataView values.\n @type {Object}\n */\nObject.defineProperty(DataStream.prototype, 'dataView',\n { get: function() {\n return this._dataView;\n },\n set: function(v) {\n this._byteOffset = v.byteOffset;\n this._buffer = v.buffer;\n this._dataView = new DataView(this._buffer, this._byteOffset);\n this._byteLength = this._byteOffset + v.byteLength;\n } });\n\n/**\n Sets the DataStream read/write position to given position.\n Clamps between 0 and DataStream length.\n\n @param {number} pos Position to seek to.\n @return {null}\n */\nDataStream.prototype.seek = function(pos) {\n var npos = Math.max(0, Math.min(this.byteLength, pos));\n this.position = (isNaN(npos) || !isFinite(npos)) ? 0 : npos;\n};\n\n/**\n Returns true if the DataStream seek pointer is at the end of buffer and\n there's no more data to read.\n\n @return {boolean} True if the seek pointer is at the end of the buffer.\n */\nDataStream.prototype.isEof = function() {\n return (this.position >= this._byteLength);\n};\n\n\n/**\n Maps a Uint8Array into the DataStream buffer.\n\n Nice for quickly reading in data.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} Uint8Array to the DataStream backing buffer.\n */\nDataStream.prototype.mapUint8Array = function(length) {\n this._realloc(length * 1);\n var arr = new Uint8Array(this._buffer, this.byteOffset+this.position, length);\n this.position += length * 1;\n return arr;\n};\n\n\n/**\n Reads an Int32Array of desired length and endianness from the DataStream.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} The read Int32Array.\n */\nDataStream.prototype.readInt32Array = function(length, e) {\n length = length == null ? (this.byteLength-this.position / 4) : length;\n var arr = new Int32Array(length);\n DataStream.memcpy(arr.buffer, 0,\n this.buffer, this.byteOffset+this.position,\n length*arr.BYTES_PER_ELEMENT);\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\n this.position += arr.byteLength;\n return arr;\n};\n\n/**\n Reads an Int16Array of desired length and endianness from the DataStream.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} The read Int16Array.\n */\nDataStream.prototype.readInt16Array = function(length, e) {\n length = length == null ? (this.byteLength-this.position / 2) : length;\n var arr = new Int16Array(length);\n DataStream.memcpy(arr.buffer, 0,\n this.buffer, this.byteOffset+this.position,\n length*arr.BYTES_PER_ELEMENT);\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\n this.position += arr.byteLength;\n return arr;\n};\n\n/**\n Reads an Int8Array of desired length from the DataStream.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} The read Int8Array.\n */\nDataStream.prototype.readInt8Array = function(length) {\n length = length == null ? (this.byteLength-this.position) : length;\n var arr = new Int8Array(length);\n DataStream.memcpy(arr.buffer, 0,\n this.buffer, this.byteOffset+this.position,\n length*arr.BYTES_PER_ELEMENT);\n this.position += arr.byteLength;\n return arr;\n};\n\n/**\n Reads a Uint32Array of desired length and endianness from the DataStream.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} The read Uint32Array.\n */\nDataStream.prototype.readUint32Array = function(length, e) {\n length = length == null ? (this.byteLength-this.position / 4) : length;\n var arr = new Uint32Array(length);\n DataStream.memcpy(arr.buffer, 0,\n this.buffer, this.byteOffset+this.position,\n length*arr.BYTES_PER_ELEMENT);\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\n this.position += arr.byteLength;\n return arr;\n};\n\n/**\n Reads a Uint16Array of desired length and endianness from the DataStream.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} The read Uint16Array.\n */\nDataStream.prototype.readUint16Array = function(length, e) {\n length = length == null ? (this.byteLength-this.position / 2) : length;\n var arr = new Uint16Array(length);\n DataStream.memcpy(arr.buffer, 0,\n this.buffer, this.byteOffset+this.position,\n length*arr.BYTES_PER_ELEMENT);\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\n this.position += arr.byteLength;\n return arr;\n};\n\n/**\n Reads a Uint8Array of desired length from the DataStream.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} The read Uint8Array.\n */\nDataStream.prototype.readUint8Array = function(length) {\n length = length == null ? (this.byteLength-this.position) : length;\n var arr = new Uint8Array(length);\n DataStream.memcpy(arr.buffer, 0,\n this.buffer, this.byteOffset+this.position,\n length*arr.BYTES_PER_ELEMENT);\n this.position += arr.byteLength;\n return arr;\n};\n\n/**\n Reads a Float64Array of desired length and endianness from the DataStream.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} The read Float64Array.\n */\nDataStream.prototype.readFloat64Array = function(length, e) {\n length = length == null ? (this.byteLength-this.position / 8) : length;\n var arr = new Float64Array(length);\n DataStream.memcpy(arr.buffer, 0,\n this.buffer, this.byteOffset+this.position,\n length*arr.BYTES_PER_ELEMENT);\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\n this.position += arr.byteLength;\n return arr;\n};\n\n/**\n Reads a Float32Array of desired length and endianness from the DataStream.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} The read Float32Array.\n */\nDataStream.prototype.readFloat32Array = function(length, e) {\n length = length == null ? (this.byteLength-this.position / 4) : length;\n var arr = new Float32Array(length);\n DataStream.memcpy(arr.buffer, 0,\n this.buffer, this.byteOffset+this.position,\n length*arr.BYTES_PER_ELEMENT);\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\n this.position += arr.byteLength;\n return arr;\n};\n\n\n/**\n Reads a 32-bit int from the DataStream with the desired endianness.\n\n @param {?boolean} e Endianness of the number.\n @return {number} The read number.\n */\nDataStream.prototype.readInt32 = function(e) {\n var v = this._dataView.getInt32(this.position, e == null ? this.endianness : e);\n this.position += 4;\n return v;\n};\n\n/**\n Reads a 16-bit int from the DataStream with the desired endianness.\n\n @param {?boolean} e Endianness of the number.\n @return {number} The read number.\n */\nDataStream.prototype.readInt16 = function(e) {\n var v = this._dataView.getInt16(this.position, e == null ? this.endianness : e);\n this.position += 2;\n return v;\n};\n\n/**\n Reads an 8-bit int from the DataStream.\n\n @return {number} The read number.\n */\nDataStream.prototype.readInt8 = function() {\n var v = this._dataView.getInt8(this.position);\n this.position += 1;\n return v;\n};\n\n/**\n Reads a 32-bit unsigned int from the DataStream with the desired endianness.\n\n @param {?boolean} e Endianness of the number.\n @return {number} The read number.\n */\nDataStream.prototype.readUint32 = function(e) {\n var v = this._dataView.getUint32(this.position, e == null ? this.endianness : e);\n this.position += 4;\n return v;\n};\n\n/**\n Reads a 16-bit unsigned int from the DataStream with the desired endianness.\n\n @param {?boolean} e Endianness of the number.\n @return {number} The read number.\n */\nDataStream.prototype.readUint16 = function(e) {\n var v = this._dataView.getUint16(this.position, e == null ? this.endianness : e);\n this.position += 2;\n return v;\n};\n\n/**\n Reads an 8-bit unsigned int from the DataStream.\n\n @return {number} The read number.\n */\nDataStream.prototype.readUint8 = function() {\n var v = this._dataView.getUint8(this.position);\n this.position += 1;\n return v;\n};\n\n/**\n Reads a 32-bit float from the DataStream with the desired endianness.\n\n @param {?boolean} e Endianness of the number.\n @return {number} The read number.\n */\nDataStream.prototype.readFloat32 = function(e) {\n var v = this._dataView.getFloat32(this.position, e == null ? this.endianness : e);\n this.position += 4;\n return v;\n};\n\n/**\n Reads a 64-bit float from the DataStream with the desired endianness.\n\n @param {?boolean} e Endianness of the number.\n @return {number} The read number.\n */\nDataStream.prototype.readFloat64 = function(e) {\n var v = this._dataView.getFloat64(this.position, e == null ? this.endianness : e);\n this.position += 8;\n return v;\n};\n\n/**\n Native endianness. Either DataStream.BIG_ENDIAN or DataStream.LITTLE_ENDIAN\n depending on the platform endianness.\n\n @type {boolean}\n */\nDataStream.endianness = new Int8Array(new Int16Array([1]).buffer)[0] > 0;\n\n/**\n Copies byteLength bytes from the src buffer at srcOffset to the\n dst buffer at dstOffset.\n\n @param {Object} dst Destination ArrayBuffer to write to.\n @param {number} dstOffset Offset to the destination ArrayBuffer.\n @param {Object} src Source ArrayBuffer to read from.\n @param {number} srcOffset Offset to the source ArrayBuffer.\n @param {number} byteLength Number of bytes to copy.\n */\nDataStream.memcpy = function(dst, dstOffset, src, srcOffset, byteLength) {\n var dstU8 = new Uint8Array(dst, dstOffset, byteLength);\n var srcU8 = new Uint8Array(src, srcOffset, byteLength);\n dstU8.set(srcU8);\n};\n\n/**\n Converts array to native endianness in-place.\n\n @param {Object} array Typed array to convert.\n @param {boolean} arrayIsLittleEndian True if the data in the array is\n little-endian. Set false for big-endian.\n @return {Object} The converted typed array.\n */\nDataStream.arrayToNative = function(array, arrayIsLittleEndian) {\n if (arrayIsLittleEndian == this.endianness) {\n return array;\n } else {\n return this.flipArrayEndianness(array);\n }\n};\n\n/**\n Converts native endianness array to desired endianness in-place.\n\n @param {Object} array Typed array to convert.\n @param {boolean} littleEndian True if the converted array should be\n little-endian. Set false for big-endian.\n @return {Object} The converted typed array.\n */\nDataStream.nativeToEndian = function(array, littleEndian) {\n if (this.endianness == littleEndian) {\n return array;\n } else {\n return this.flipArrayEndianness(array);\n }\n};\n\n/**\n Flips typed array endianness in-place.\n\n @param {Object} array Typed array to flip.\n @return {Object} The converted typed array.\n */\nDataStream.flipArrayEndianness = function(array) {\n var u8 = new Uint8Array(array.buffer, array.byteOffset, array.byteLength);\n for (var i=0; i<array.byteLength; i+=array.BYTES_PER_ELEMENT) {\n for (var j=i+array.BYTES_PER_ELEMENT-1, k=i; j>k; j--, k++) {\n var tmp = u8[k];\n u8[k] = u8[j];\n u8[j] = tmp;\n }\n }\n return array;\n};\n\n/**\n Seek position where DataStream#readStruct ran into a problem.\n Useful for debugging struct parsing.\n\n @type {number}\n */\nDataStream.prototype.failurePosition = 0;\n\nString.fromCharCodeUint8 = function(uint8arr) {\n var arr = [];\n for (var i = 0; i < uint8arr.length; i++) {\n arr[i] = uint8arr[i];\n }\n return String.fromCharCode.apply(null, arr);\n}\n/**\n Read a string of desired length and encoding from the DataStream.\n\n @param {number} length The length of the string to read in bytes.\n @param {?string} encoding The encoding of the string data in the DataStream.\n Defaults to ASCII.\n @return {string} The read string.\n */\nDataStream.prototype.readString = function(length, encoding) {\n if (encoding == null || encoding == \"ASCII\") {\n return String.fromCharCodeUint8.apply(null, [this.mapUint8Array(length == null ? this.byteLength-this.position : length)]);\n } else {\n return (new TextDecoder(encoding)).decode(this.mapUint8Array(length));\n }\n};\n\n/**\n Read null-terminated string of desired length from the DataStream. Truncates\n the returned string so that the null byte is not a part of it.\n\n @param {?number} length The length of the string to read.\n @return {string} The read string.\n */\nDataStream.prototype.readCString = function(length) {\n var blen = this.byteLength-this.position;\n var u8 = new Uint8Array(this._buffer, this._byteOffset + this.position);\n var len = blen;\n if (length != null) {\n len = Math.min(length, blen);\n }\n for (var i = 0; i < len && u8[i] !== 0; i++); // find first zero byte\n var s = String.fromCharCodeUint8.apply(null, [this.mapUint8Array(i)]);\n if (length != null) {\n this.position += len-i;\n } else if (i != blen) {\n this.position += 1; // trailing zero if not at end of buffer\n }\n return s;\n};\n\n/* \n TODO: fix endianness for 24/64-bit fields\n TODO: check range/support for 64-bits numbers in JavaScript\n*/\nvar MAX_SIZE = Math.pow(2, 32);\n\nDataStream.prototype.readInt64 = function () {\n return (this.readInt32()*MAX_SIZE)+this.readUint32();\n}\nDataStream.prototype.readUint64 = function () {\n\treturn (this.readUint32()*MAX_SIZE)+this.readUint32();\n}\n\nDataStream.prototype.readInt64 = function () {\n return (this.readUint32()*MAX_SIZE)+this.readUint32();\n}\n\nDataStream.prototype.readUint24 = function () {\n\treturn (this.readUint8()<<16)+(this.readUint8()<<8)+this.readUint8();\n}\n\nif (typeof exports !== 'undefined') {\n exports.DataStream = DataStream; \n}\n// file:src/DataStream-write.js\n/**\n Saves the DataStream contents to the given filename.\n Uses Chrome's anchor download property to initiate download.\n \n @param {string} filename Filename to save as.\n @return {null}\n */\nDataStream.prototype.save = function(filename) {\n var blob = new Blob([this.buffer]);\n if (window.URL && URL.createObjectURL) {\n var url = window.URL.createObjectURL(blob);\n var a = document.createElement('a');\n // Required in Firefox:\n document.body.appendChild(a);\n a.setAttribute('href', url);\n a.setAttribute('download', filename);\n // Required in Firefox:\n a.setAttribute('target', '_self');\n a.click();\n window.URL.revokeObjectURL(url);\n } else {\n throw(\"DataStream.save: Can't create object URL.\");\n }\n};\n\n/**\n Whether to extend DataStream buffer when trying to write beyond its size.\n If set, the buffer is reallocated to twice its current size until the\n requested write fits the buffer.\n @type {boolean}\n */\nDataStream.prototype._dynamicSize = true;\nObject.defineProperty(DataStream.prototype, 'dynamicSize',\n { get: function() {\n return this._dynamicSize;\n },\n set: function(v) {\n if (!v) {\n this._trimAlloc();\n }\n this._dynamicSize = v;\n } });\n\n/**\n Internal function to trim the DataStream buffer when required.\n Used for stripping out the first bytes when not needed anymore.\n\n @return {null}\n */\nDataStream.prototype.shift = function(offset) {\n var buf = new ArrayBuffer(this._byteLength-offset);\n var dst = new Uint8Array(buf);\n var src = new Uint8Array(this._buffer, offset, dst.length);\n dst.set(src);\n this.buffer = buf;\n this.position -= offset;\n};\n\n/**\n Writes an Int32Array of specified endianness to the DataStream.\n\n @param {Object} arr The array to write.\n @param {?boolean} e Endianness of the data to write.\n */\nDataStream.prototype.writeInt32Array = function(arr, e) {\n this._realloc(arr.length * 4);\n if (arr instanceof Int32Array &&\n this.byteOffset+this.position % arr.BYTES_PER_ELEMENT === 0) {\n DataStream.memcpy(this._buffer, this.byteOffset+this.position,\n arr.buffer, 0,\n arr.byteLength);\n this.mapInt32Array(arr.length, e);\n } else {\n for (var i=0; i<arr.length; i++) {\n this.writeInt32(arr[i], e);\n }\n }\n};\n\n/**\n Writes an Int16Array of specified endianness to the DataStream.\n\n @param {Object} arr The array to write.\n @param {?boolean} e Endianness of the data to write.\n */\nDataStream.prototype.writeInt16Array = function(arr, e) {\n this._realloc(arr.length * 2);\n if (arr instanceof Int16Array &&\n this.byteOffset+this.position % arr.BYTES_PER_ELEMENT === 0) {\n DataStream.memcpy(this._buffer, this.byteOffset+this.position,\n arr.buffer, 0,\n arr.byteLength);\n this.mapInt16Array(arr.length, e);\n } else {\n for (var i=0; i<arr.length; i++) {\n this.writeInt16(arr[i], e);\n }\n }\n};\n\n/**\n Writes an Int8Array to the DataStream.\n\n @param {Object} arr The array to write.\n */\nDataStream.prototype.writeInt8Array = function(arr) {\n this._realloc(arr.length * 1);\n if (arr instanceof Int8Array &&\n this.byteOffset+this.position % arr.BYTES_PER_ELEMENT === 0) {\n DataStream.memcpy(this._buffer, this.byteOffset+this.position,\n arr.buffer, 0,\n arr.byteLength);\n this.mapInt8Array(arr.length);\n } else {\n for (var i=0; i<arr.length; i++) {\n this.writeInt8(arr[i]);\n }\n }\n};\n\n/**\n Writes a Uint32Array of specified endianness to the DataStream.\n\n @param {Object} arr The array to write.\n @param {?boolean} e Endianness of the data to write.\n */\nDataStream.prototype.writeUint32Array = function(arr, e) {\n this._realloc(arr.length * 4);\n if (arr instanceof Uint32Array &&\n this.byteOffset+this.position % arr.BYTES_PER_ELEMENT === 0) {\n DataStream.memcpy(this._buffer, this.byteOffset+this.position,\n arr.buffer, 0,\n arr.byteLength);\n this.mapUint32Array(arr.length, e);\n } else {\n for (var i=0; i<arr.length; i++) {\n this.writeUint32(arr[i], e);\n }\n }\n};\n\n/**\n Writes a Uint16Array of specified endianness to the DataStream.\n\n @param {Object} arr The array to write.\n @param {?boolean} e Endianness of the data to write.\n */\nDataStream.prototype.writeUint16Array = function(arr, e) {\n this._realloc(arr.length * 2);\n if (arr instanceof Uint16Array &&\n this.byteOffset+this.position % arr.BYTES_PER_ELEMENT === 0) {\n DataStream.memcpy(this._buffer, this.byteOffset+this.position,\n arr.buffer, 0,\n arr.byteLength);\n this.mapUint16Array(arr.length, e);\n } else {\n for (var i=0; i<arr.length; i++) {\n this.writeUint16(arr[i], e);\n }\n }\n};\n\n/**\n Writes a Uint8Array to the DataStream.\n\n @param {Object} arr The array to write.\n */\nDataStream.prototype.writeUint8Array = function(arr) {\n this._realloc(arr.length * 1);\n if (arr instanceof Uint8Array &&\n this.byteOffset+this.position % arr.BYTES_PER_ELEMENT === 0) {\n DataStream.memcpy(this._buffer, this.byteOffset+this.position,\n arr.buffer, 0,\n arr.byteLength);\n this.mapUint8Array(arr.length);\n } else {\n for (var i=0; i<arr.length; i++) {\n this.writeUint8(arr[i]);\n }\n }\n};\n\n/**\n Writes a Float64Array of specified endianness to the DataStream.\n\n @param {Object} arr The array to write.\n @param {?boolean} e Endianness of the data to write.\n */\nDataStream.prototype.writeFloat64Array = function(arr, e) {\n this._realloc(arr.length * 8);\n if (arr instanceof Float64Array &&\n this.byteOffset+this.position % arr.BYTES_PER_ELEMENT === 0) {\n DataStream.memcpy(this._buffer, this.byteOffset+this.position,\n arr.buffer, 0,\n arr.byteLength);\n this.mapFloat64Array(arr.length, e);\n } else {\n for (var i=0; i<arr.length; i++) {\n this.writeFloat64(arr[i], e);\n }\n }\n};\n\n/**\n Writes a Float32Array of specified endianness to the DataStream.\n\n @param {Object} arr The array to write.\n @param {?boolean} e Endianness of the data to write.\n */\nDataStream.prototype.writeFloat32Array = function(arr, e) {\n this._realloc(arr.length * 4);\n if (arr instanceof Float32Array &&\n this.byteOffset+this.position % arr.BYTES_PER_ELEMENT === 0) {\n DataStream.memcpy(this._buffer, this.byteOffset+this.position,\n arr.buffer, 0,\n arr.byteLength);\n this.mapFloat32Array(arr.length, e);\n } else {\n for (var i=0; i<arr.length; i++) {\n this.writeFloat32(arr[i], e);\n }\n }\n};\n\n\n/**\n Writes a 32-bit int to the DataStream with the desired endianness.\n\n @param {number} v Number to write.\n @param {?boolean} e Endianness of the number.\n */\nDataStream.prototype.writeInt32 = function(v, e) {\n this._realloc(4);\n this._dataView.setInt32(this.position, v, e == null ? this.endianness : e);\n this.position += 4;\n};\n\n/**\n Writes a 16-bit int to the DataStream with the desired endianness.\n\n @param {number} v Number to write.\n @param {?boolean} e Endianness of the number.\n */\nDataStream.prototype.writeInt16 = function(v, e) {\n this._realloc(2);\n this._dataView.setInt16(this.position, v, e == null ? this.endianness : e);\n this.position += 2;\n};\n\n/**\n Writes an 8-bit int to the DataStream.\n\n @param {number} v Number to write.\n */\nDataStream.prototype.writeInt8 = function(v) {\n this._realloc(1);\n this._dataView.setInt8(this.position, v);\n this.position += 1;\n};\n\n/**\n Writes a 32-bit unsigned int to the DataStream with the desired endianness.\n\n @param {number} v Number to write.\n @param {?boolean} e Endianness of the number.\n */\nDataStream.prototype.writeUint32 = function(v, e) {\n this._realloc(4);\n this._dataView.setUint32(this.position, v, e == null ? this.endianness : e);\n this.position += 4;\n};\n\n/**\n Writes a 16-bit unsigned int to the DataStream with the desired endianness.\n\n @param {number} v Number to write.\n @param {?boolean} e Endianness of the number.\n */\nDataStream.prototype.writeUint16 = function(v, e) {\n this._realloc(2);\n this._dataView.setUint16(this.position, v, e == null ? this.endianness : e);\n this.position += 2;\n};\n\n/**\n Writes an 8-bit unsigned int to the DataStream.\n\n @param {number} v Number to write.\n */\nDataStream.prototype.writeUint8 = function(v) {\n this._realloc(1);\n this._dataView.setUint8(this.position, v);\n this.position += 1;\n};\n\n/**\n Writes a 32-bit float to the DataStream with the desired endianness.\n\n @param {number} v Number to write.\n @param {?boolean} e Endianness of the number.\n */\nDataStream.prototype.writeFloat32 = function(v, e) {\n this._realloc(4);\n this._dataView.setFloat32(this.position, v, e == null ? this.endianness : e);\n this.position += 4;\n};\n\n/**\n Writes a 64-bit float to the DataStream with the desired endianness.\n\n @param {number} v Number to write.\n @param {?boolean} e Endianness of the number.\n */\nDataStream.prototype.writeFloat64 = function(v, e) {\n this._realloc(8);\n this._dataView.setFloat64(this.position, v, e == null ? this.endianness : e);\n this.position += 8;\n};\n\n/**\n Write a UCS-2 string of desired endianness to the DataStream. The\n lengthOverride argument lets you define the number of characters to write.\n If the string is shorter than lengthOverride, the extra space is padded with\n zeroes.\n\n @param {string} str The string to write.\n @param {?boolean} endianness The endianness to use for the written string data.\n @param {?number} lengthOverride The number of characters to write.\n */\nDataStream.prototype.writeUCS2String = function(str, endianness, lengthOverride) {\n if (lengthOverride == null) {\n lengthOverride = str.length;\n }\n for (var i = 0; i < str.length && i < lengthOverride; i++) {\n this.writeUint16(str.charCodeAt(i), endianness);\n }\n for (; i<lengthOverride; i++) {\n this.writeUint16(0);\n }\n};\n\n/**\n Writes a string of desired length and encoding to the DataStream.\n\n @param {string} s The string to write.\n @param {?string} encoding The encoding for the written string data.\n Defaults to ASCII.\n @param {?number} length The number of characters to write.\n */\nDataStream.prototype.writeString = function(s, encoding, length) {\n var i = 0;\n if (encoding == null || encoding == \"ASCII\") {\n if (length != null) {\n var len = Math.min(s.length, length);\n for (i=0; i<len; i++) {\n this.writeUint8(s.charCodeAt(i));\n }\n for (; i<length; i++) {\n this.writeUint8(0);\n }\n } else {\n for (i=0; i<s.length; i++) {\n this.writeUint8(s.charCodeAt(i));\n }\n }\n } else {\n this.writeUint8Array((new TextEncoder(encoding)).encode(s.substring(0, length)));\n }\n};\n\n/**\n Writes a null-terminated string to DataStream and zero-pads it to length\n bytes. If length is not given, writes the string followed by a zero.\n If string is longer than length, the written part of the string does not have\n a trailing zero.\n\n @param {string} s The string to write.\n @param {?number} length The number of characters to write.\n */\nDataStream.prototype.writeCString = function(s, length) {\n var i = 0;\n if (length != null) {\n var len = Math.min(s.length, length);\n for (i=0; i<len; i++) {\n this.writeUint8(s.charCodeAt(i));\n }\n for (; i<length; i++) {\n this.writeUint8(0);\n }\n } else {\n for (i=0; i<s.length; i++) {\n this.writeUint8(s.charCodeAt(i));\n }\n this.writeUint8(0);\n }\n};\n\n/**\n Writes a struct to the DataStream. Takes a structDefinition that gives the\n types and a struct object that gives the values. Refer to readStruct for the\n structure of structDefinition.\n\n @param {Object} structDefinition Type definition of the struct.\n @param {Object} struct The struct data object.\n */\nDataStream.prototype.writeStruct = function(structDefinition, struct) {\n for (var i = 0; i < structDefinition.length; i+=2) {\n var t = structDefinition[i+1];\n this.writeType(t, struct[structDefinition[i]], struct);\n }\n};\n\n/**\n Writes object v of type t to the DataStream.\n\n @param {Object} t Type of data to write.\n @param {Object} v Value of data to write.\n @param {Object} struct Struct to pass to write callback functions.\n */\nDataStream.prototype.writeType = function(t, v, struct) {\n var tp;\n if (typeof t == \"function\") {\n return t(this, v);\n } else if (typeof t == \"object\" && !(t instanceof Array)) {\n return t.set(this, v, struct);\n }\n var lengthOverride = null;\n var charset = \"ASCII\";\n var pos = this.position;\n if (typeof(t) == 'string' && /:/.test(t)) {\n tp = t.split(\":\");\n t = tp[0];\n lengthOverride = parseInt(tp[1]);\n }\n if (typeof t == 'string' && /,/.test(t)) {\n tp = t.split(\",\");\n t = tp[0];\n charset = parseInt(tp[1]);\n }\n\n switch(t) {\n case 'uint8':\n this.writeUint8(v);\n break;\n case 'int8':\n this.writeInt8(v);\n break;\n\n case 'uint16':\n this.writeUint16(v, this.endianness);\n break;\n case 'int16':\n this.writeInt16(v, this.endianness);\n break;\n case 'uint32':\n this.writeUint32(v, this.endianness);\n break;\n case 'int32':\n this.writeInt32(v, this.endianness);\n break;\n case 'float32':\n this.writeFloat32(v, this.endianness);\n break;\n case 'float64':\n this.writeFloat64(v, this.endianness);\n break;\n\n case 'uint16be':\n this.writeUint16(v, DataStream.BIG_ENDIAN);\n break;\n case 'int16be':\n this.writeInt16(v, DataStream.BIG_ENDIAN);\n break;\n case 'uint32be':\n this.writeUint32(v, DataStream.BIG_ENDIAN);\n break;\n case 'int32be':\n this.writeInt32(v, DataStream.BIG_ENDIAN);\n break;\n case 'float32be':\n this.writeFloat32(v, DataStream.BIG_ENDIAN);\n break;\n case 'float64be':\n this.writeFloat64(v, DataStream.BIG_ENDIAN);\n break;\n\n case 'uint16le':\n this.writeUint16(v, DataStream.LITTLE_ENDIAN);\n break;\n case 'int16le':\n this.writeInt16(v, DataStream.LITTLE_ENDIAN);\n break;\n case 'uint32le':\n this.writeUint32(v, DataStream.LITTLE_ENDIAN);\n break;\n case 'int32le':\n this.writeInt32(v, DataStream.LITTLE_ENDIAN);\n break;\n case 'float32le':\n this.writeFloat32(v, DataStream.LITTLE_ENDIAN);\n break;\n case 'float64le':\n this.writeFloat64(v, DataStream.LITTLE_ENDIAN);\n break;\n\n case 'cstring':\n this.writeCString(v, lengthOverride);\n break;\n\n case 'string':\n this.writeString(v, charset, lengthOverride);\n break;\n\n case 'u16string':\n this.writeUCS2String(v, this.endianness, lengthOverride);\n break;\n\n case 'u16stringle':\n this.writeUCS2String(v, DataStream.LITTLE_ENDIAN, lengthOverride);\n break;\n\n case 'u16stringbe':\n this.writeUCS2String(v, DataStream.BIG_ENDIAN, lengthOverride);\n break;\n\n default:\n if (t.length == 3) {\n var ta = t[1];\n for (var i=0; i<v.length; i++) {\n this.writeType(ta, v[i]);\n }\n break;\n } else {\n this.writeStruct(t, v);\n break;\n }\n }\n if (lengthOverride != null) {\n this.position = pos;\n this._realloc(lengthOverride);\n this.position = pos + lengthOverride;\n }\n};\n\n\nDataStream.prototype.writeUint64 = function (v) {\n\tvar h = Math.floor(v / MAX_SIZE);\n\tthis.writeUint32(h);\n\tthis.writeUint32(v & 0xFFFFFFFF);\n}\n\nDataStream.prototype.writeUint24 = function (v) {\n\tthis.writeUint8((v & 0x00FF0000)>>16);\n\tthis.writeUint8((v & 0x0000FF00)>>8);\n\tthis.writeUint8((v & 0x000000FF));\n}\n\nDataStream.prototype.adjustUint32 = function(position, value) {\n\tvar pos = this.position;\n\tthis.seek(position);\n\tthis.writeUint32(value);\n\tthis.seek(pos);\n}\n// file:src/DataStream-map.js\n/**\n Maps an Int32Array into the DataStream buffer, swizzling it to native\n endianness in-place. The current offset from the start of the buffer needs to\n be a multiple of element size, just like with typed array views.\n\n Nice for quickly reading in data. Warning: potentially modifies the buffer\n contents.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} Int32Array to the DataStream backing buffer.\n */\nDataStream.prototype.mapInt32Array = function(length, e) {\n this._realloc(length * 4);\n var arr = new Int32Array(this._buffer, this.byteOffset+this.position, length);\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\n this.position += length * 4;\n return arr;\n};\n\n/**\n Maps an Int16Array into the DataStream buffer, swizzling it to native\n endianness in-place. The current offset from the start of the buffer needs to\n be a multiple of element size, just like with typed array views.\n\n Nice for quickly reading in data. Warning: potentially modifies the buffer\n contents.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} Int16Array to the DataStream backing buffer.\n */\nDataStream.prototype.mapInt16Array = function(length, e) {\n this._realloc(length * 2);\n var arr = new Int16Array(this._buffer, this.byteOffset+this.position, length);\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\n this.position += length * 2;\n return arr;\n};\n\n/**\n Maps an Int8Array into the DataStream buffer.\n\n Nice for quickly reading in data.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} Int8Array to the DataStream backing buffer.\n */\nDataStream.prototype.mapInt8Array = function(length) {\n this._realloc(length * 1);\n var arr = new Int8Array(this._buffer, this.byteOffset+this.position, length);\n this.position += length * 1;\n return arr;\n};\n\n/**\n Maps a Uint32Array into the DataStream buffer, swizzling it to native\n endianness in-place. The current offset from the start of the buffer needs to\n be a multiple of element size, just like with typed array views.\n\n Nice for quickly reading in data. Warning: potentially modifies the buffer\n contents.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} Uint32Array to the DataStream backing buffer.\n */\nDataStream.prototype.mapUint32Array = function(length, e) {\n this._realloc(length * 4);\n var arr = new Uint32Array(this._buffer, this.byteOffset+this.position, length);\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\n this.position += length * 4;\n return arr;\n};\n\n/**\n Maps a Uint16Array into the DataStream buffer, swizzling it to native\n endianness in-place. The current offset from the start of the buffer needs to\n be a multiple of element size, just like with typed array views.\n\n Nice for quickly reading in data. Warning: potentially modifies the buffer\n contents.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} Uint16Array to the DataStream backing buffer.\n */\nDataStream.prototype.mapUint16Array = function(length, e) {\n this._realloc(length * 2);\n var arr = new Uint16Array(this._buffer, this.byteOffset+this.position, length);\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\n this.position += length * 2;\n return arr;\n};\n\n/**\n Maps a Float64Array into the DataStream buffer, swizzling it to native\n endianness in-place. The current offset from the start of the buffer needs to\n be a multiple of element size, just like with typed array views.\n\n Nice for quickly reading in data. Warning: potentially modifies the buffer\n contents.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} Float64Array to the DataStream backing buffer.\n */\nDataStream.prototype.mapFloat64Array = function(length, e) {\n this._realloc(length * 8);\n var arr = new Float64Array(this._buffer, this.byteOffset+this.position, length);\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\n this.position += length * 8;\n return arr;\n};\n\n/**\n Maps a Float32Array into the DataStream buffer, swizzling it to native\n endianness in-place. The current offset from the start of the buffer needs to\n be a multiple of element size, just like with typed array views.\n\n Nice for quickly reading in data. Warning: potentially modifies the buffer\n contents.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} Float32Array to the DataStream backing buffer.\n */\nDataStream.prototype.mapFloat32Array = function(length, e) {\n this._realloc(length * 4);\n var arr = new Float32Array(this._buffer, this.byteOffset+this.position, length);\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\n this.position += length * 4;\n return arr;\n};\n// file:src/buffer.js\n/**\n * MultiBufferStream is a class that acts as a SimpleStream for parsing \n * It holds several, possibly non-contiguous ArrayBuffer objects, each with a fileStart property \n * containing the offset for the buffer data in an original/virtual file \n *\n * It inherits also from DataStream for all read/write/alloc operations\n */\n\n/**\n * Constructor\n */\nvar MultiBufferStream = function(buffer) {\n\t/* List of ArrayBuffers, with a fileStart property, sorted in fileStart order and non overlapping */\n\tthis.buffers = [];\t\n\tthis.bufferIndex = -1;\n\tif (buffer) {\n\t\tthis.insertBuffer(buffer);\n\t\tthis.bufferIndex = 0;\n\t}\n}\nMultiBufferStream.prototype = new DataStream(new ArrayBuffer(), 0, DataStream.BIG_ENDIAN);\n\n/************************************************************************************\n Methods for the managnement of the buffers (insertion, removal, concatenation, ...)\n ***********************************************************************************/\n\nMultiBufferStream.prototype.initialized = function() {\n\tvar firstBuffer;\n\tif (this.bufferIndex > -1) {\n\t\treturn true;\n\t} else if (this.buffers.length > 0) {\n\t\tfirstBuffer = this.buffers[0];\n\t\tif (firstBuffer.fileStart === 0) {\n\t\t\tthis.buffer = firstBuffer;\n\t\t\tthis.bufferIndex = 0;\n\t\t\tLog.debug(\"MultiBufferStream\", \"Stream ready for parsing\");\n\t\t\treturn true;\n\t\t} else {\n\t\t\tLog.warn(\"MultiBufferStream\", \"The first buffer should have a fileStart of 0\");\n\t\t\tthis.logBufferLevel();\n\t\t\treturn false;\n\t\t}\n\t} else {\n\t\tLog.warn(\"MultiBufferStream\", \"No buffer to start parsing from\");\n\t\tthis.logBufferLevel();\n\t\treturn false;\n\t}\t\t\t\n}\n\n/**\n * helper functions to concatenate two ArrayBuffer objects\n * @param {ArrayBuffer} buffer1 \n * @param {ArrayBuffer} buffer2 \n * @return {ArrayBuffer} the concatenation of buffer1 and buffer2 in that order\n */\nArrayBuffer.concat = function(buffer1, buffer2) {\n Log.debug(\"ArrayBuffer\", \"Trying to create a new buffer of size: \"+(buffer1.byteLength + buffer2.byteLength));\n var tmp = new Uint8Array(buffer1.byteLength + buffer2.byteLength);\n tmp.set(new Uint8Array(buffer1), 0);\n tmp.set(new Uint8Array(buffer2), buffer1.byteLength);\n return tmp.buffer;\n};\n\n/**\n * Reduces the size of a given buffer, but taking the part between offset and offset+newlength\n * @param {ArrayBuffer} buffer \n * @param {Number} offset the start of new buffer\n * @param {Number} newLength the length of the new buffer\n * @return {ArrayBuffer} the new buffer\n */\nMultiBufferStream.prototype.reduceBuffer = function(buffer, offset, newLength) {\n\tvar smallB;\n\tsmallB = new Uint8Array(newLength);\n\tsmallB.set(new Uint8Array(buffer, offset, newLength));\n\tsmallB.buffer.fileStart = buffer.fileStart+offset;\n\tsmallB.buffer.usedBytes = 0;\n\treturn smallB.buffer;\t\n}\n\n/**\n * Inserts the new buffer in the sorted list of buffers,\n * making sure, it is not overlapping with existing ones (possibly reducing its size).\n * if the new buffer overrides/replaces the 0-th buffer (for instance because it is bigger), \n * updates the DataStream buffer for parsing \n*/\nMultiBufferStream.prototype.insertBuffer = function(ab) {\t\n\tvar to_add = true;\n\t/* TODO: improve insertion if many buffers */\n\tfor (var i = 0; i < this.buffers.length; i++) {\n\t\tvar b = this.buffers[i];\n\t\tif (ab.fileStart <= b.fileStart) {\n\t\t\t/* the insertion position is found */\n\t\t\tif (ab.fileStart === b.fileStart) {\n\t\t\t\t/* The new buffer overlaps with an existing buffer */\n\t\t\t\tif (ab.byteLength > b.byteLength) {\n\t\t\t\t\t/* the new buffer is bigger than the existing one\n\t\t\t\t\t remove the existing buffer and try again to insert \n\t\t\t\t\t the new buffer to check overlap with the next ones */\n\t\t\t\t\tthis.buffers.splice(i, 1);\n\t\t\t\t\ti--; \n\t\t\t\t\tcontinue;\n\t\t\t\t} else {\n\t\t\t\t\t/* the new buffer is smaller than the existing one, just drop it */\n\t\t\t\t\tLog.warn(\"MultiBufferStream\", \"Buffer (fileStart: \"+ab.fileStart+\" - Length: \"+ab.byteLength+\") already appended, ignoring\");\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t/* The beginning of the new buffer is not overlapping with an existing buffer\n\t\t\t\t let's check the end of it */\n\t\t\t\tif (ab.fileStart + ab.byteLength <= b.fileStart) {\n\t\t\t\t\t/* no overlap, we can add it as is */\n\t\t\t\t} else {\n\t\t\t\t\t/* There is some overlap, cut the new buffer short, and add it*/\n\t\t\t\t\tab = this.reduceBuffer(ab, 0, b.fileStart - ab.fileStart);\n\t\t\t\t}\n\t\t\t\tLog.debug(\"MultiBufferStream\", \"Appending new buffer (fileStart: \"+ab.fileStart+\" - Length: \"+ab.byteLength+\")\");\n\t\t\t\tthis.buffers.splice(i, 0, ab);\n\t\t\t\t/* if this new buffer is inserted in the first place in the list of the buffer, \n\t\t\t\t and the DataStream is initialized, make it the buffer used for parsing */\n\t\t\t\tif (i === 0) {\n\t\t\t\t\tthis.buffer = ab;\n\t\t\t\t}\n\t\t\t}\n\t\t\tto_add = false;\n\t\t\tbreak;\n\t\t} else if (ab.fileStart < b.fileStart + b.byteLength) {\n\t\t\t/* the new buffer overlaps its beginning with the end of the current buffer */\n\t\t\tvar offset = b.fileStart + b.byteLength - ab.fileStart;\n\t\t\tvar newLength = ab.byteLength - offset;\n\t\t\tif (newLength > 0) {\n\t\t\t\t/* the new buffer is bigger than the current overlap, drop the overlapping part and try again inserting the remaining buffer */\n\t\t\t\tab = this.reduceBuffer(ab, offset, newLength);\n\t\t\t} else {\n\t\t\t\t/* the content of the new buffer is entirely contained in the existing buffer, drop it entirely */\n\t\t\t\tto_add = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\t/* if the buffer has not been added, we can add it at the end */\n\tif (to_add) {\n\t\tLog.debug(\"MultiBufferStream\", \"Appending new buffer (fileStart: \"+ab.fileStart+\" - Length: \"+ab.byteLength+\")\");\n\t\tthis.buffers.push(ab);\n\t\t/* if this new buffer is inserted in the first place in the list of the buffer, \n\t\t and the DataStream is initialized, make it the buffer used for parsing */\n\t\tif (i === 0) {\n\t\t\tthis.buffer = ab;\n\t\t}\n\t}\n}\n\n/**\n * Displays the status of the buffers (number and used bytes)\n * @param {Object} info callback method for display\n */\nMultiBufferStream.prototype.logBufferLevel = function(info) {\n\tvar i;\n\tvar buffer;\n\tvar used, total;\n\tvar ranges = [];\n\tvar range;\n\tvar bufferedString = \"\";\n\tused = 0;\n\ttotal = 0;\n\tfor (i = 0; i < this.buffers.length; i++) {\n\t\tbuffer = this.buffers[i];\n\t\tif (i === 0) {\n\t\t\trange = {};\n\t\t\tranges.push(range);\n\t\t\trange.start = buffer.fileStart;\n\t\t\trange.end = buffer.fileStart+buffer.byteLength;\n\t\t\tbufferedString += \"[\"+range.start+\"-\";\n\t\t} else if (range.end === buffer.fileStart) {\n\t\t\trange.end = buffer.fileStart+buffer.byteLength;\n\t\t} else {\n\t\t\trange = {};\n\t\t\trange.start = buffer.fileStart;\n\t\t\tbufferedString += (ranges[ranges.length-1].end-1)+\"], [\"+range.start+\"-\";\n\t\t\trange.end = buffer.fileStart+buffer.byteLength;\n\t\t\tranges.push(range);\n\t\t}\n\t\tused += buffer.usedBytes;\n\t\ttotal += buffer.byteLength;\n\t}\n\tif (ranges.length > 0) {\n\t\tbufferedString += (range.end-1)+\"]\";\n\t}\n\tvar log = (info ? Log.info : Log.debug)\n\tif (this.buffers.length === 0) {\n\t\tlog(\"MultiBufferStream\", \"No more buffer in memory\");\n\t} else {\n\t\tlog(\"MultiBufferStream\", \"\"+this.buffers.length+\" stored buffer(s) (\"+used+\"/\"+total+\" bytes), continuous ranges: \"+bufferedString);\n\t}\n}\n\nMultiBufferStream.prototype.cleanBuffers = function () {\n\tvar i;\n\tvar buffer;\n\tfor (i = 0; i < this.buffers.length; i++) {\n\t\tbuffer = this.buffers[i];\n\t\tif (buffer.usedBytes === buffer.byteLength) {\n\t\t\tLog.debug(\"MultiBufferStream\", \"Removing buffer #\"+i);\n\t\t\tthis.buffers.splice(i, 1);\n\t\t\ti--;\n\t\t}\n\t}\n}\n\nMultiBufferStream.prototype.mergeNextBuffer = function() {\n\tvar next_buffer;\n\tif (this.bufferIndex+1 < this.buffers.length) {\n\t\tnext_buffer = this.buffers[this.bufferIndex+1];\n\t\tif (next_buffer.fileStart === this.buffer.fileStart + this.buffer.byteLength) {\n\t\t\tvar oldLength = this.buffer.byteLength;\n\t\t\tvar oldUsedBytes = this.buffer.usedBytes;\n\t\t\tvar oldFileStart = this.buffer.fileStart;\n\t\t\tthis.buffers[this.bufferIndex] = ArrayBuffer.concat(this.buffer, next_buffer);\n\t\t\tthis.buffer = this.buffers[this.bufferIndex];\n\t\t\tthis.buffers.splice(this.bufferIndex+1, 1);\n\t\t\tthis.buffer.usedBytes = oldUsedBytes; /* TODO: should it be += ? */\n\t\t\tthis.buffer.fileStart = oldFileStart;\n\t\t\tLog.debug(\"ISOFile\", \"Concatenating buffer for box parsing (length: \"+oldLength+\"->\"+this.buffer.byteLength+\")\");\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t} else {\n\t\treturn false;\n\t}\n}\n\n\n/*************************************************************************\n Seek-related functions\n *************************************************************************/\n\n/**\n * Finds the buffer that holds the given file position\n * @param {Boolean} fromStart indicates if the search should start from the current buffer (false) \n * or from the first buffer (true)\n * @param {Number} filePosition position in the file to seek to\n * @param {Boolean} markAsUsed indicates if the bytes in between the current position and the seek position \n * should be marked as used for garbage collection\n * @return {Number} the index of the buffer holding the seeked file position, -1 if not found.\n */\nMultiBufferStream.prototype.findPosition = function(fromStart, filePosition, markAsUsed) {\n\tvar i;\n\tvar abuffer = null;\n\tvar index = -1;\n\n\t/* find the buffer with the largest position smaller than the given position */\n\tif (fromStart === true) {\n\t /* the reposition can be in the past, we need to check from the beginning of the list of buffers */\n\t\ti = 0;\n\t} else {\n\t\ti = this.bufferIndex;\n\t}\n\n\twhile (i < this.buffers.length) {\n\t\tabuffer = this.buffers[i];\n\t\tif (abuffer.fileStart <= filePosition) {\n\t\t\tindex = i;\n\t\t\tif (markAsUsed) {\n\t\t\t\tif (abuffer.fileStart + abuffer.byteLength <= filePosition) {\n\t\t\t\t\tabuffer.usedBytes = abuffer.byteLength;\t\n\t\t\t\t} else {\n\t\t\t\t\tabuffer.usedBytes = filePosition - abuffer.fileStart;\n\t\t\t\t}\t\t\n\t\t\t\tthis.logBufferLevel();\t\n\t\t\t}\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t\ti++;\n\t}\n\n\tif (index !== -1) {\n\t\tabuffer = this.buffers[index];\n\t\tif (abuffer.fileStart + abuffer.byteLength >= filePosition) {\t\t\t\n\t\t\tLog.debug(\"MultiBufferStream\", \"Found position in existing buffer #\"+index);\n\t\t\treturn index;\n\t\t} else {\n\t\t\treturn -1;\n\t\t}\n\t} else {\n\t\treturn -1;\n\t}\n}\n\n/**\n * Finds the largest file position contained in a buffer or in the next buffers if they are contiguous (no gap)\n * starting from the given buffer index or from the current buffer if the index is not given\n *\n * @param {Number} inputindex Index of the buffer to start from\n * @return {Number} The largest file position found in the buffers\n */\nMultiBufferStream.prototype.findEndContiguousBuf = function(inputindex) {\n\tvar i;\n\tvar currentBuf;\n\tvar nextBuf;\n\tvar index = (inputindex !== undefined ? inputindex : this.bufferIndex);\n\tcurrentBuf = this.buffers[index];\n\t/* find the end of the contiguous range of data */\n\tif (this.buffers.length > index+1) {\n\t\tfor (i = index+1; i < this.buffers.length; i++) {\n\t\t\tnextBuf = this.buffers[i];\n\t\t\tif (nextBuf.fileStart === currentBuf.fileStart + currentBuf.byteLength) {\n\t\t\t\tcurrentBuf = nextBuf;\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\t/* return the position of last byte in the file that we have */\n\treturn currentBuf.fileStart + currentBuf.byteLength;\n}\n\n/**\n * Returns the largest file position contained in the buffers, larger than the given position\n * @param {Number} pos the file position to start from\n * @return {Number} the largest position in the current buffer or in the buffer and the next contiguous \n * buffer that holds the given position\n */\nMultiBufferStream.prototype.getEndFilePositionAfter = function(pos) {\n\tvar index = this.findPosition(true, pos, false);\n\tif (index !== -1) {\n\t\treturn this.findEndContiguousBuf(index);\n\t} else {\n\t\treturn pos;\n\t}\n}\n\n/*************************************************************************\n Garbage collection related functions\n *************************************************************************/\n\n/**\n * Marks a given number of bytes as used in the current buffer for garbage collection\n * @param {Number} nbBytes \n */\nMultiBufferStream.prototype.addUsedBytes = function(nbBytes) {\n\tthis.buffer.usedBytes += nbBytes;\n\tthis.logBufferLevel();\n}\n\n/**\n * Marks the entire current buffer as used, ready for garbage collection\n */\nMultiBufferStream.prototype.setAllUsedBytes = function() {\n\tthis.buffer.usedBytes = this.buffer.byteLength;\n\tthis.logBufferLevel();\n}\n\n/*************************************************************************\n Common API between MultiBufferStream and SimpleStream\n *************************************************************************/\n\n/**\n * Tries to seek to a given file position\n * if possible, repositions the parsing from there and returns true \n * if not possible, does not change anything and returns false \n * @param {Number} filePosition position in the file to seek to\n * @param {Boolean} fromStart indicates if the search should start from the current buffer (false) \n * or from the first buffer (true)\n * @param {Boolean} markAsUsed indicates if the bytes in between the current position and the seek position \n * should be marked as used for garbage collection\n * @return {Boolean} true if the seek succeeded, false otherwise\n */\nMultiBufferStream.prototype.seek = function(filePosition, fromStart, markAsUsed) {\n\tvar index;\n\tindex = this.findPosition(fromStart, filePosition, markAsUsed);\n\tif (index !== -1) {\n\t\tthis.buffer = this.buffers[index];\n\t\tthis.bufferIndex = index;\n\t\tthis.position = filePosition - this.buffer.fileStart;\n\t\tLog.debug(\"MultiBufferStream\", \"Repositioning parser at buffer position: \"+this.position);\n\t\treturn true;\n\t} else {\n\t\tLog.debug(\"MultiBufferStream\", \"Position \"+filePosition+\" not found in buffered data\");\n\t\treturn false;\n\t}\n}\n\n/**\n * Returns the current position in the file\n * @return {Number} the position in the file\n */\nMultiBufferStream.prototype.getPosition = function() {\n\tif (this.bufferIndex === -1 || this.buffers[this.bufferIndex] === null) {\n\t\tthrow \"Error accessing position in the MultiBufferStream\";\n\t}\n\treturn this.buffers[this.bufferIndex].fileStart+this.position;\n}\n\n/**\n * Returns the length of the current buffer\n * @return {Number} the length of the current buffer\n */\nMultiBufferStream.prototype.getLength = function() {\n\treturn this.byteLength;\n}\n\nMultiBufferStream.prototype.getEndPosition = function() {\n\tif (this.bufferIndex === -1 || this.buffers[this.bufferIndex] === null) {\n\t\tthrow \"Error accessing position in the MultiBufferStream\";\n\t}\n\treturn this.buffers[this.bufferIndex].fileStart+this.byteLength;\n}\n\nif (typeof exports !== 'undefined') {\n\texports.MultiBufferStream = MultiBufferStream;\n}// file:src/descriptor.js\n/*\n * Copyright (c) 2012-2013. Telecom ParisTech/TSI/MM/GPAC Cyril Concolato\n * License: BSD-3-Clause (see LICENSE file)\n */\nvar MPEG4DescriptorParser = function () {\n\tvar ES_DescrTag \t\t\t= 0x03;\n\tvar DecoderConfigDescrTag \t= 0x04;\n\tvar DecSpecificInfoTag \t\t= 0x05;\n\tvar SLConfigDescrTag \t\t= 0x06;\n\n\tvar descTagToName = [];\n\tdescTagToName[ES_DescrTag] \t\t\t\t= \"ES_Descriptor\";\n\tdescTagToName[DecoderConfigDescrTag] \t= \"DecoderConfigDescriptor\";\n\tdescTagToName[DecSpecificInfoTag] \t\t= \"DecoderSpecificInfo\";\n\tdescTagToName[SLConfigDescrTag] \t\t= \"SLConfigDescriptor\";\n\n\tthis.getDescriptorName = function(tag) {\n\t\treturn descTagToName[tag];\n\t}\n\n\tvar that = this;\n\tvar classes = {};\n\n\tthis.parseOneDescriptor = function (stream) {\n\t\tvar hdrSize = 0;\n\t\tvar size = 0;\n\t\tvar tag;\n\t\tvar desc;\n\t\tvar byteRead;\n\t\ttag = stream.readUint8();\n\t\thdrSize++;\n\t\tbyteRead = stream.readUint8();\n\t\thdrSize++;\n\t\twhile (byteRead & 0x80) {\n\t\t\tsize = (size << 7) + (byteRead & 0x7F);\n\t\t\tbyteRead = stream.readUint8();\n\t\t\thdrSize++;\n\t\t}\n\t\tsize = (size << 7) + (byteRead & 0x7F);\n\t\tLog.debug(\"MPEG4DescriptorParser\", \"Found \"+(descTagToName[tag] || \"Descriptor \"+tag)+\", size \"+size+\" at position \"+stream.getPosition());\n\t\tif (descTagToName[tag]) {\n\t\t\tdesc = new classes[descTagToName[tag]](size);\n\t\t} else {\n\t\t\tdesc = new classes.Descriptor(size);\n\t\t}\n\t\tdesc.parse(stream);\n\t\treturn desc;\n\t}\n\n\tclasses.Descriptor = function(_tag, _size) {\n\t\tthis.tag = _tag;\n\t\tthis.size = _size;\n\t\tthis.descs = [];\n\t}\n\n\tclasses.Descriptor.prototype.parse = function (stream) {\n\t\tthis.data = stream.readUint8Array(this.size);\n\t}\n\n\tclasses.Descriptor.prototype.findDescriptor = function (tag) {\n\t\tfor (var i = 0; i < this.descs.length; i++) {\n\t\t\tif (this.descs[i].tag == tag) {\n\t\t\t\treturn this.descs[i];\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tclasses.Descriptor.prototype.parseRemainingDescriptors = function (stream) {\n\t\tvar start = stream.position;\n\t\twhile (stream.position < start+this.size) {\n\t\t\tvar desc = that.parseOneDescriptor(stream);\n\t\t\tthis.descs.push(desc);\n\t\t}\n\t}\n\n\tclasses.ES_Descriptor = function (size) {\n\t\tclasses.Descriptor.call(this, ES_DescrTag, size);\n\t}\n\n\tclasses.ES_Descriptor.prototype = new classes.Descriptor();\n\n\tclasses.ES_Descriptor.prototype.parse = function(stream) {\n\t\tthis.ES_ID = stream.readUint16();\n\t\tthis.flags = stream.readUint8();\n\t\tthis.size -= 3;\n\t\tif (this.flags & 0x80) {\n\t\t\tthis.dependsOn_ES_ID = stream.readUint16();\n\t\t\tthis.size -= 2;\n\t\t} else {\n\t\t\tthis.dependsOn_ES_ID = 0;\n\t\t}\n\t\tif (this.flags & 0x40) {\n\t\t\tvar l = stream.readUint8();\n\t\t\tthis.URL = stream.readString(l);\n\t\t\tthis.size -= l+1;\n\t\t} else {\n\t\t\tthis.URL = \"\";\n\t\t}\n\t\tif (this.flags & 0x20) {\n\t\t\tthis.OCR_ES_ID = stream.readUint16();\n\t\t\tthis.size -= 2;\n\t\t} else {\n\t\t\tthis.OCR_ES_ID = 0;\n\t\t}\n\t\tthis.parseRemainingDescriptors(stream);\n\t}\n\n\tclasses.ES_Descriptor.prototype.getOTI = function(stream) {\n\t\tvar dcd = this.findDescriptor(DecoderConfigDescrTag);\n\t\tif (dcd) {\n\t\t\treturn dcd.oti;\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\tclasses.ES_Descriptor.prototype.getAudioConfig = function(stream) {\n\t\tvar dcd = this.findDescriptor(DecoderConfigDescrTag);\n\t\tif (!dcd) return null;\n\t\tvar dsi = dcd.findDescriptor(DecSpecificInfoTag);\n\t\tif (dsi && dsi.data) {\n\t\t\tvar audioObjectType = (dsi.data[0]& 0xF8) >> 3;\n\t\t\tif (audioObjectType === 31 && dsi.data.length >= 2) {\n\t\t\t\taudioObjectType = 32 + ((dsi.data[0] & 0x7) << 3) + ((dsi.data[1] & 0xE0) >> 5);\n\t\t\t}\n\t\t\treturn audioObjectType;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tclasses.DecoderConfigDescriptor = function (size) {\n\t\tclasses.Descriptor.call(this, DecoderConfigDescrTag, size);\n\t}\n\tclasses.DecoderConfigDescriptor.prototype = new classes.Descriptor();\n\n\tclasses.DecoderConfigDescriptor.prototype.parse = function(stream) {\n\t\tthis.oti = stream.readUint8();\n\t\tthis.streamType = stream.readUint8();\n\t\tthis.upStream = ((this.streamType >> 1) & 1) !== 0;\n\t\tthis.streamType = this.streamType >>> 2;\n\t\tthis.bufferSize = stream.readUint24();\n\t\tthis.maxBitrate = stream.readUint32();\n\t\tthis.avgBitrate = stream.readUint32();\n\t\tthis.size -= 13;\n\t\tthis.parseRemainingDescriptors(stream);\n\t}\n\n\tclasses.DecoderSpecificInfo = function (size) {\n\t\tclasses.Descriptor.call(this, DecSpecificInfoTag, size);\n\t}\n\tclasses.DecoderSpecificInfo.prototype = new classes.Descriptor();\n\n\tclasses.SLConfigDescriptor = function (size) {\n\t\tclasses.Descriptor.call(this, SLConfigDescrTag, size);\n\t}\n\tclasses.SLConfigDescriptor.prototype = new classes.Descriptor();\n\n\treturn this;\n}\n\nif (typeof exports !== 'undefined') {\n\texports.MPEG4DescriptorParser = MPEG4DescriptorParser;\n}\n// file:src/box.js\n/*\n * Copyright (c) 2012-2013. Telecom ParisTech/TSI/MM/GPAC Cyril Concolato\n * License: BSD-3-Clause (see LICENSE file)\n */\nvar BoxParser = {\n\tERR_INVALID_DATA : -1,\n\tERR_NOT_ENOUGH_DATA : 0,\n\tOK : 1,\n\n\t// Boxes to be created with default parsing\n\tBASIC_BOXES: [\n\t\t{type: \"mdat\", name: \"MediaDataBox\"},\n\t\t{type: \"idat\", name: \"ItemDataBox\"},\n\t\t{type: \"free\", name: \"FreeSpaceBox\"},\n\t\t{type: \"skip\", name: \"FreeSpaceBox\"},\n\t\t{type: \"meco\", name: \"AdditionalMetadataContainerBox\"},\n\t\t{type: \"strk\", name: \"SubTrackBox\"}\n\t],\n\tFULL_BOXES: [\n\t\t{type: \"hmhd\", name: \"HintMediaHeaderBox\"},\n\t\t{type: \"nmhd\", name: \"NullMediaHeaderBox\"},\n\t\t{type: \"iods\", name: \"ObjectDescriptorBox\"},\n\t\t{type: \"xml \", name: \"XMLBox\"},\n\t\t{type: \"bxml\", name: \"BinaryXMLBox\"},\n\t\t{type: \"ipro\", name: \"ItemProtectionBox\"},\n\t\t{type: \"mere\", name: \"MetaboxRelationBox\"}\n\t],\n\tCONTAINER_BOXES: [\n\t\t[{type: \"moov\", name: \"CompressedMovieBox\"}, [\"trak\", \"pssh\"]],\n\t\t[{type: \"trak\", name: \"TrackBox\"}],\n\t\t[{type: \"edts\", name: \"EditBox\"}],\n\t\t[{type: \"mdia\", name: \"MediaBox\"}],\n\t\t[{type: \"minf\", name: \"MediaInformationBox\"}],\n\t\t[{type: \"dinf\", name: \"DataInformationBox\"}],\n\t\t[{type: \"stbl\", name: \"SampleTableBox\"}, [\"sgpd\", \"sbgp\"]],\n\t\t[{type: \"mvex\", name: \"MovieExtendsBox\"}, [\"trex\"]],\n\t\t[{type: \"moof\", name: \"CompressedMovieFragmentBox\"}, [\"traf\"]],\n\t\t[{type: \"traf\", name: \"TrackFragmentBox\"}, [\"trun\", \"sgpd\", \"sbgp\"]],\n\t\t[{type: \"vttc\", name: \"VTTCueBox\"}],\n\t\t[{type: \"tref\", name: \"TrackReferenceBox\"}],\n\t\t[{type: \"iref\", name: \"ItemReferenceBox\"}],\n\t\t[{type: \"mfra\", name: \"MovieFragmentRandomAccessBox\"}, [\"tfra\"]],\n\t\t[{type: \"meco\", name: \"AdditionalMetadataContainerBox\"}],\n\t\t[{type: \"hnti\", name: \"trackhintinformation\"}],\n\t\t[{type: \"hinf\", name: \"hintstatisticsbox\"}],\n\t\t[{type: \"strk\", name: \"SubTrackBox\"}],\n\t\t[{type: \"strd\", name: \"SubTrackDefinitionBox\"}],\n\t\t[{type: \"sinf\", name: \"ProtectionSchemeInfoBox\"}],\n\t\t[{type: \"rinf\", name: \"RestrictedSchemeInfoBox\"}],\n\t\t[{type: \"schi\", name: \"SchemeInformationBox\"}],\n\t\t[{type: \"trgr\", name: \"TrackGroupBox\"}],\n\t\t[{type: \"udta\", name: \"UserDataBox\"}, [\"kind\"]],\n\t\t[{type: \"iprp\", name: \"ItemPropertiesBox\"}, [\"ipma\"]],\n\t\t[{type: \"ipco\", name: \"ItemPropertyContainerBox\"}],\n\t\t[{type: \"grpl\", name: \"GroupsListBox\"}],\n\t\t[{type: \"j2kH\", name: \"J2KHeaderInfoBox\"}],\n\t\t[{type: \"etyp\", name: \"ExtendedTypeBox\"}, [\"tyco\"]]\n\t],\n\t// Boxes effectively created\n\tboxCodes : [],\n\tfullBoxCodes : [],\n\tcontainerBoxCodes : [],\n\tsampleEntryCodes : {},\n\tsampleGroupEntryCodes: [],\n\ttrackGroupTypes: [],\n\tUUIDBoxes: {},\n\tUUIDs: [],\n\tinitialize: function() {\n\t\tBoxParser.FullBox.prototype = new BoxParser.Box();\n\t\tBoxParser.ContainerBox.prototype = new BoxParser.Box();\n\t\tBoxParser.SampleEntry.prototype = new BoxParser.Box();\n\t\tBoxParser.TrackGroupTypeBox.prototype = new BoxParser.FullBox();\n\n\t\t/* creating constructors for simple boxes */\n\t\tBoxParser.BASIC_BOXES.forEach(function(box) {\n\t\t\tBoxParser.createBoxCtor(box.type, box.name)\n\t\t});\n\t\tBoxParser.FULL_BOXES.forEach(function(box) {\n\t\t\tBoxParser.createFullBoxCtor(box.type, box.name);\n\t\t});\n\t\tBoxParser.CONTAINER_BOXES.forEach(function(boxes) {\n\t\t\tBoxParser.createContainerBoxCtor(boxes[0].type, boxes[0].name, null, boxes[1]);\n\t\t});\n\t},\n\tBox: function(_type, _size, _name, _uuid) {\n\t\tthis.type = _type;\n\t\tthis.box_name = _name;\n\t\tthis.size = _size;\n\t\tthis.uuid = _uuid;\n\t},\n\tFullBox: function(type, size, name, uuid) {\n\t\tBoxParser.Box.call(this, type, size, name, uuid);\n\t\tthis.flags = 0;\n\t\tthis.version = 0;\n\t},\n\tContainerBox: function(type, size, name, uuid) {\n\t\tBoxParser.Box.call(this, type, size, name, uuid);\n\t\tthis.boxes = [];\n\t},\n\tSampleEntry: function(type, size, hdr_size, start) {\n\t\tBoxParser.ContainerBox.call(this, type, size);\n\t\tthis.hdr_size = hdr_size;\n\t\tthis.start = start;\n\t},\n\tSampleGroupEntry: function(type) {\n\t\tthis.grouping_type = type;\n\t},\n\tTrackGroupTypeBox: function(type, size) {\n\t\tBoxParser.FullBox.call(this, type, size);\n\t},\n\tcreateBoxCtor: function(type, name, parseMethod){\n\t\tBoxParser.boxCodes.push(type);\n\t\tBoxParser[type+\"Box\"] = function(size) {\n\t\t\tBoxParser.Box.call(this, type, size, name);\n\t\t}\n\t\tBoxParser[type+\"Box\"].prototype = new BoxParser.Box();\n\t\tif (parseMethod) BoxParser[type+\"Box\"].prototype.parse = parseMethod;\n\t},\n\tcreateFullBoxCtor: function(type, name, parseMethod) {\n\t\t//BoxParser.fullBoxCodes.push(type);\n\t\tBoxParser[type+\"Box\"] = function(size) {\n\t\t\tBoxParser.FullBox.call(this, type, size, name);\n\t\t}\n\t\tBoxParser[type+\"Box\"].prototype = new BoxParser.FullBox();\n\t\tBoxParser[type+\"Box\"].prototype.parse = function(stream) {\n\t\t\tthis.parseFullHeader(stream);\n\t\t\tif (parseMethod) {\n\t\t\t\tparseMethod.call(this, stream);\n\t\t\t}\n\t\t};\n\t},\n\taddSubBoxArrays: function(subBoxNames) {\n\t\tif (subBoxNames) {\n\t\t\tthis.subBoxNames = subBoxNames;\n\t\t\tvar nbSubBoxes = subBoxNames.length;\n\t\t\tfor (var k = 0; k<nbSubBoxes; k++) {\n\t\t\t\tthis[subBoxNames[k]+\"s\"] = [];\n\t\t\t}\n\t\t}\n\t},\n\tcreateContainerBoxCtor: function(type, name, parseMethod, subBoxNames) {\n\t\t//BoxParser.containerBoxCodes.push(type);\n\t\tBoxParser[type+\"Box\"] = function(size) {\n\t\t\tBoxParser.ContainerBox.call(this, type, size, name);\n\t\t\tBoxParser.addSubBoxArrays.call(this, subBoxNames);\n\t\t}\n\t\tBoxParser[type+\"Box\"].prototype = new BoxParser.ContainerBox();\n\t\tif (parseMethod) BoxParser[type+\"Box\"].prototype.parse = parseMethod;\n\t},\n\tcreateMediaSampleEntryCtor: function(mediaType, parseMethod, subBoxNames) {\n\t\tBoxParser.sampleEntryCodes[mediaType] = [];\n\t\tBoxParser[mediaType+\"SampleEntry\"] = function(type, size) {\n\t\t\tBoxParser.SampleEntry.call(this, type, size);\n\t\t\tBoxParser.addSubBoxArrays.call(this, subBoxNames);\n\t\t};\n\t\tBoxParser[mediaType+\"SampleEntry\"].prototype = new BoxParser.SampleEntry();\n\t\tif (parseMethod) BoxParser[mediaType+\"SampleEntry\"].prototype .parse = parseMethod;\n\t},\n\tcreateSampleEntryCtor: function(mediaType, type, parseMethod, subBoxNames) {\n\t\tBoxParser.sampleEntryCodes[mediaType].push(type);\n\t\tBoxParser[type+\"SampleEntry\"] = function(size) {\n\t\t\tBoxParser[mediaType+\"SampleEntry\"].call(this, type, size);\n\t\t\tBoxParser.addSubBoxArrays.call(this, subBoxNames);\n\t\t};\n\t\tBoxParser[type+\"SampleEntry\"].prototype = new BoxParser[mediaType+\"SampleEntry\"]();\n\t\tif (parseMethod) BoxParser[type+\"SampleEntry\"].prototype.parse = parseMethod;\n\t},\n\tcreateEncryptedSampleEntryCtor: function(mediaType, type, parseMethod) {\n\t\tBoxParser.createSampleEntryCtor.call(this, mediaType, type, parseMethod, [\"sinf\"]);\n\t},\n\tcreateSampleGroupCtor: function(type, parseMethod) {\n\t\t//BoxParser.sampleGroupEntryCodes.push(type);\n\t\tBoxParser[type+\"SampleGroupEntry\"] = function(size) {\n\t\t\tBoxParser.SampleGroupEntry.call(this, type, size);\n\t\t}\n\t\tBoxParser[type+\"SampleGroupEntry\"].prototype = new BoxParser.SampleGroupEntry();\n\t\tif (parseMethod) BoxParser[type+\"SampleGroupEntry\"].prototype.parse = parseMethod;\n\t},\n\tcreateTrackGroupCtor: function(type, parseMethod) {\n\t\t//BoxParser.trackGroupTypes.push(type);\n\t\tBoxParser[type+\"TrackGroupTypeBox\"] = function(size) {\n\t\t\tBoxParser.TrackGroupTypeBox.call(this, type, size);\n\t\t}\n\t\tBoxParser[type+\"TrackGroupTypeBox\"].prototype = new BoxParser.TrackGroupTypeBox();\n\t\tif (parseMethod) BoxParser[type+\"TrackGroupTypeBox\"].prototype.parse = parseMethod;\n\t},\n\tcreateUUIDBox: function(uuid, name, isFullBox, isContainerBox, parseMethod) {\n\t\tBoxParser.UUIDs.push(uuid);\n\t\tBoxParser.UUIDBoxes[uuid] = function(size) {\n\t\t\tif (isFullBox) {\n\t\t\t\tBoxParser.FullBox.call(this, \"uuid\", size, name, uuid);\n\t\t\t} else {\n\t\t\t\tif (isContainerBox) {\n\t\t\t\t\tBoxParser.ContainerBox.call(this, \"uuid\", size, name, uuid);\n\t\t\t\t} else {\n\t\t\t\t\tBoxParser.Box.call(this, \"uuid\", size, name, uuid);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tBoxParser.UUIDBoxes[uuid].prototype = (isFullBox ? new BoxParser.FullBox() : (isContainerBox ? new BoxParser.ContainerBox() : new BoxParser.Box()));\n\t\tif (parseMethod) {\n\t\t\tif (isFullBox) {\n\t\t\t\tBoxParser.UUIDBoxes[uuid].prototype.parse = function(stream) {\n\t\t\t\t\tthis.parseFullHeader(stream);\n\t\t\t\t\tif (parseMethod) {\n\t\t\t\t\t\tparseMethod.call(this, stream);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tBoxParser.UUIDBoxes[uuid].prototype.parse = parseMethod;\n\t\t\t}\n\t\t}\n\t}\n}\n\nBoxParser.initialize();\n\nBoxParser.TKHD_FLAG_ENABLED = 0x000001;\nBoxParser.TKHD_FLAG_IN_MOVIE = 0x000002;\nBoxParser.TKHD_FLAG_IN_PREVIEW = 0x000004;\n\nBoxParser.TFHD_FLAG_BASE_DATA_OFFSET\t= 0x01;\nBoxParser.TFHD_FLAG_SAMPLE_DESC\t\t\t= 0x02;\nBoxParser.TFHD_FLAG_SAMPLE_DUR\t\t\t= 0x08;\nBoxParser.TFHD_FLAG_SAMPLE_SIZE\t\t\t= 0x10;\nBoxParser.TFHD_FLAG_SAMPLE_FLAGS\t\t= 0x20;\nBoxParser.TFHD_FLAG_DUR_EMPTY\t\t\t= 0x10000;\nBoxParser.TFHD_FLAG_DEFAULT_BASE_IS_MOOF= 0x20000;\n\nBoxParser.TRUN_FLAGS_DATA_OFFSET= 0x01;\nBoxParser.TRUN_FLAGS_FIRST_FLAG\t= 0x04;\nBoxParser.TRUN_FLAGS_DURATION\t= 0x100;\nBoxParser.TRUN_FLAGS_SIZE\t\t= 0x200;\nBoxParser.TRUN_FLAGS_FLAGS\t\t= 0x400;\nBoxParser.TRUN_FLAGS_CTS_OFFSET\t= 0x800;\n\nBoxParser.Box.prototype.add = function(name) {\n\treturn this.addBox(new BoxParser[name+\"Box\"]());\n}\n\nBoxParser.Box.prototype.addBox = function(box) {\n\tthis.boxes.push(box);\n\tif (this[box.type+\"s\"]) {\n\t\tthis[box.type+\"s\"].push(box);\n\t} else {\n\t\tthis[box.type] = box;\n\t}\n\treturn box;\n}\n\nBoxParser.Box.prototype.set = function(prop, value) {\n\tthis[prop] = value;\n\treturn this;\n}\n\nBoxParser.Box.prototype.addEntry = function(value, _prop) {\n\tvar prop = _prop || \"entries\";\n\tif (!this[prop]) {\n\t\tthis[prop] = [];\n\t}\n\tthis[prop].push(value);\n\treturn this;\n}\n\nif (typeof exports !== \"undefined\") {\n\texports.BoxParser = BoxParser;\n}\n// file:src/box-parse.js\n/* \n * Copyright (c) Telecom ParisTech/TSI/MM/GPAC Cyril Concolato\n * License: BSD-3-Clause (see LICENSE file)\n */\nBoxParser.parseUUID = function(stream) {\n\treturn BoxParser.parseHex16(stream);\n}\n\nBoxParser.parseHex16 = function(stream) {\n\tvar hex16 = \"\"\n\tfor (var i = 0; i <16; i++) {\n\t\tvar hex = stream.readUint8().toString(16);\n\t\thex16 += (hex.length === 1 ? \"0\"+hex : hex);\n\t}\n\treturn hex16;\n}\n\nBoxParser.parseOneBox = function(stream, headerOnly, parentSize) {\n\tvar box;\n\tvar start = stream.getPosition();\n\tvar hdr_size = 0;\n\tvar diff;\n\tvar uuid;\n\tif (stream.getEndPosition() - start < 8) {\n\t\tLog.debug(\"BoxParser\", \"Not enough data in stream to parse the type and size of the box\");\n\t\treturn { code: BoxParser.ERR_NOT_ENOUGH_DATA };\n\t}\n\tif (parentSize && parentSize < 8) {\n\t\tLog.debug(\"BoxParser\", \"Not enough bytes left in the parent box to parse a new box\");\n\t\treturn { code: BoxParser.ERR_NOT_ENOUGH_DATA };\n\t}\n\tvar size = stream.readUint32();\n\tvar type = stream.readString(4);\n\tvar box_type = type;\n\tLog.debug(\"BoxParser\", \"Found box of type '\"+type+\"' and size \"+size+\" at position \"+start);\n\thdr_size = 8;\n\tif (type == \"uuid\") {\n\t\tif ((stream.getEndPosition() - stream.getPosition() < 16) || (parentSize -hdr_size < 16)) {\n\t\t\tstream.seek(start);\n\t\t\tLog.debug(\"BoxParser\", \"Not enough bytes left in the parent box to parse a UUID box\");\n\t\t\treturn { code: BoxParser.ERR_NOT_ENOUGH_DATA };\n\t\t}\n\t\tuuid = BoxParser.parseUUID(stream);\n\t\thdr_size += 16;\n\t\tbox_type = uuid;\n\t}\n\tif (size == 1) {\n\t\tif ((stream.getEndPosition() - stream.getPosition() < 8) || (parentSize && (parentSize - hdr_size) < 8)) {\n\t\t\tstream.seek(start);\n\t\t\tLog.warn(\"BoxParser\", \"Not enough data in stream to parse the extended size of the \\\"\"+type+\"\\\" box\");\n\t\t\treturn { code: BoxParser.ERR_NOT_ENOUGH_DATA };\n\t\t}\n\t\tsize = stream.readUint64();\n\t\thdr_size += 8;\n\t} else if (size === 0) {\n\t\t/* box extends till the end of file or invalid file */\n\t\tif (parentSize) {\n\t\t\tsize = parentSize;\n\t\t} else {\n\t\t\t/* box extends till the end of file */\n\t\t\tif (type !== \"mdat\") {\n\t\t\t\tLog.error(\"BoxParser\", \"Unlimited box size not supported for type: '\"+type+\"'\");\n\t\t\t\tbox = new BoxParser.Box(type, size);\n\t\t\t\treturn { code: BoxParser.OK, box: box, size: box.size };\n\t\t\t}\n\t\t}\n\t}\n\tif (size !== 0 && size < hdr_size) {\n\t\tLog.error(\"BoxParser\", \"Box of type \"+type+\" has an invalid size \"+size+\" (too small to be a box)\");\n\t\treturn { code: BoxParser.ERR_NOT_ENOUGH_DATA, type: type, size: size, hdr_size: hdr_size, start: start };\n\t}\n\tif (size !== 0 && parentSize && size > parentSize) {\n\t\tLog.error(\"BoxParser\", \"Box of type '\"+type+\"' has a size \"+size+\" greater than its container size \"+parentSize);\n\t\treturn { code: BoxParser.ERR_NOT_ENOUGH_DATA, type: type, size: size, hdr_size: hdr_size, start: start };\n\t}\n\tif (size !== 0 && start + size > stream.getEndPosition()) {\n\t\tstream.seek(start);\n\t\tLog.info(\"BoxParser\", \"Not enough data in stream to parse the entire '\"+type+\"' box\");\n\t\treturn { code: BoxParser.ERR_NOT_ENOUGH_DATA, type: type, size: size, hdr_size: hdr_size, start: start };\n\t}\n\tif (headerOnly) {\n\t\treturn { code: BoxParser.OK, type: type, size: size, hdr_size: hdr_size, start: start };\n\t} else {\n\t\tif (BoxParser[type+\"Box\"]) {\n\t\t\tbox = new BoxParser[type+\"Box\"](size);\n\t\t} else {\n\t\t\tif (type !== \"uuid\") {\n\t\t\t\tLog.warn(\"BoxParser\", \"Unknown box type: '\"+type+\"'\");\n\t\t\t\tbox = new BoxParser.Box(type, size);\n\t\t\t\tbox.has_unparsed_data = true;\n\t\t\t} else {\n\t\t\t\tif (BoxParser.UUIDBoxes[uuid]) {\n\t\t\t\t\tbox = new BoxParser.UUIDBoxes[uuid](size);\n\t\t\t\t} else {\n\t\t\t\t\tLog.warn(\"BoxParser\", \"Unknown uuid type: '\"+uuid+\"'\");\n\t\t\t\t\tbox = new BoxParser.Box(type, size);\n\t\t\t\t\tbox.uuid = uuid;\n\t\t\t\t\tbox.has_unparsed_data = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tbox.hdr_size = hdr_size;\n\t/* recording the position of the box in the input stream */\n\tbox.start = start;\n\tif (box.write === BoxParser.Box.prototype.write && box.type !== \"mdat\") {\n\t\tLog.info(\"BoxParser\", \"'\"+box_type+\"' box writing not yet implemented, keeping unparsed data in memory for later write\");\n\t\tbox.parseDataAndRewind(stream);\n\t}\n\tbox.parse(stream);\n\tdiff = stream.getPosition() - (box.start+box.size);\n\tif (diff < 0) {\n\t\tLog.warn(\"BoxParser\", \"Parsing of box '\"+box_type+\"' did not read the entire indicated box data size (missing \"+(-diff)+\" bytes), seeking forward\");\n\t\tstream.seek(box.start+box.size);\n\t} else if (diff > 0) {\n\t\tLog.error(\"BoxParser\", \"Parsing of box '\"+box_type+\"' read \"+diff+\" more bytes than the indicated box data size, seeking backwards\");\n\t\tif (box.size !== 0) stream.seek(box.start+box.size);\n\t}\n\treturn { code: BoxParser.OK, box: box, size: box.size };\n}\n\nBoxParser.Box.prototype.parse = function(stream) {\n\tif (this.type != \"mdat\") {\n\t\tthis.data = stream.readUint8Array(this.size-this.hdr_size);\n\t} else {\n\t\tif (this.size === 0) {\n\t\t\tstream.seek(stream.getEndPosition());\n\t\t} else {\n\t\t\tstream.seek(this.start+this.size);\n\t\t}\n\t}\n}\n\n/* Used to parse a box without consuming its data, to allow detailled parsing\n Useful for boxes for which a write method is not yet implemented */\nBoxParser.Box.prototype.parseDataAndRewind = function(stream) {\n\tthis.data = stream.readUint8Array(this.size-this.hdr_size);\n\t// rewinding\n\tstream.position -= this.size-this.hdr_size;\n}\n\nBoxParser.FullBox.prototype.parseDataAndRewind = function(stream) {\n\tthis.parseFullHeader(stream);\n\tthis.data = stream.readUint8Array(this.size-this.hdr_size);\n\t// restore the header size as if the full header had not been parsed\n\tthis.hdr_size -= 4;\n\t// rewinding\n\tstream.position -= this.size-this.hdr_size;\n}\n\nBoxParser.FullBox.prototype.parseFullHeader = function (stream) {\n\tthis.version = stream.readUint8();\n\tthis.flags = stream.readUint24();\n\tthis.hdr_size += 4;\n}\n\nBoxParser.FullBox.prototype.parse = function (stream) {\n\tthis.parseFullHeader(stream);\n\tthis.data = stream.readUint8Array(this.size-this.hdr_size);\n}\n\nBoxParser.ContainerBox.prototype.parse = function(stream) {\n\tvar ret;\n\tvar box;\n\twhile (stream.getPosition() < this.start+this.size) {\n\t\tret = BoxParser.parseOneBox(stream, false, this.size - (stream.getPosition() - this.start));\n\t\tif (ret.code === BoxParser.OK) {\n\t\t\tbox = ret.box;\n\t\t\t/* store the box in the 'boxes' array to preserve box order (for offset) but also store box in a property for more direct access */\n\t\t\tthis.boxes.push(box);\n\t\t\tif (this.subBoxNames && this.subBoxNames.indexOf(box.type) != -1) {\n\t\t\t\tthis[this.subBoxNames[this.subBoxNames.indexOf(box.type)]+\"s\"].push(box);\n\t\t\t} else {\n\t\t\t\tvar box_type = box.type !== \"uuid\" ? box.type : box.uuid;\n\t\t\t\tif (this[box_type]) {\n\t\t\t\t\tLog.warn(\"Box of type \"+box_type+\" already stored in field of this type\");\n\t\t\t\t} else {\n\t\t\t\t\tthis[box_type] = box;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\t}\n}\n\nBoxParser.Box.prototype.parseLanguage = function(stream) {\n\tthis.language = stream.readUint16();\n\tvar chars = [];\n\tchars[0] = (this.language>>10)&0x1F;\n\tchars[1] = (this.language>>5)&0x1F;\n\tchars[2] = (this.language)&0x1F;\n\tthis.languageString = String.fromCharCode(chars[0]+0x60, chars[1]+0x60, chars[2]+0x60);\n}\n\n// file:src/parsing/sampleentries/sampleentry.js\nBoxParser.SAMPLE_ENTRY_TYPE_VISUAL \t\t= \"Visual\";\nBoxParser.SAMPLE_ENTRY_TYPE_AUDIO \t\t= \"Audio\";\nBoxParser.SAMPLE_ENTRY_TYPE_HINT \t\t= \"Hint\";\nBoxParser.SAMPLE_ENTRY_TYPE_METADATA \t= \"Metadata\";\nBoxParser.SAMPLE_ENTRY_TYPE_SUBTITLE \t= \"Subtitle\";\nBoxParser.SAMPLE_ENTRY_TYPE_SYSTEM \t\t= \"System\";\nBoxParser.SAMPLE_ENTRY_TYPE_TEXT \t\t= \"Text\";\n\nBoxParser.SampleEntry.prototype.parseHeader = function(stream) {\n\tstream.readUint8Array(6);\n\tthis.data_reference_index = stream.readUint16();\n\tthis.hdr_size += 8;\n}\n\nBoxParser.SampleEntry.prototype.parse = function(stream) {\n\tthis.parseHeader(stream);\n\tthis.data = stream.readUint8Array(this.size - this.hdr_size);\n}\n\nBoxParser.SampleEntry.prototype.parseDataAndRewind = function(stream) {\n\tthis.parseHeader(stream);\n\tthis.data = stream.readUint8Array(this.size - this.hdr_size);\n\t// restore the header size as if the sample entry header had not been parsed\n\tthis.hdr_size -= 8;\n\t// rewinding\n\tstream.position -= this.size-this.hdr_size;\n}\n\nBoxParser.SampleEntry.prototype.parseFooter = function(stream) {\n\tBoxParser.ContainerBox.prototype.parse.call(this, stream);\n}\n\n// Base SampleEntry types with default parsing\nBoxParser.createMediaSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_HINT);\nBoxParser.createMediaSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_METADATA);\nBoxParser.createMediaSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_SUBTITLE);\nBoxParser.createMediaSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_SYSTEM);\nBoxParser.createMediaSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_TEXT);\n\n//Base SampleEntry types for Audio and Video with specific parsing\nBoxParser.createMediaSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, function(stream) {\n\tvar compressorname_length;\n\tthis.parseHeader(stream);\n\tstream.readUint16();\n\tstream.readUint16();\n\tstream.readUint32Array(3);\n\tthis.width = stream.readUint16();\n\tthis.height = stream.readUint16();\n\tthis.horizresolution = stream.readUint32();\n\tthis.vertresolution = stream.readUint32();\n\tstream.readUint32();\n\tthis.frame_count = stream.readUint16();\n\tcompressorname_length = Math.min(31, stream.readUint8());\n\tthis.compressorname = stream.readString(compressorname_length);\n\tif (compressorname_length < 31) {\n\t\tstream.readString(31 - compressorname_length);\n\t}\n\tthis.depth = stream.readUint16();\n\tstream.readUint16();\n\tthis.parseFooter(stream);\n});\n\nBoxParser.createMediaSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO, function(stream) {\n\tthis.parseHeader(stream);\n\tstream.readUint32Array(2);\n\tthis.channel_count = stream.readUint16();\n\tthis.samplesize = stream.readUint16();\n\tstream.readUint16();\n\tstream.readUint16();\n\tthis.samplerate = (stream.readUint32()/(1<<16));\n\tthis.parseFooter(stream);\n});\n\n// Sample entries inheriting from Audio and Video\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"avc1\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"avc2\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"avc3\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"avc4\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"av01\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"dav1\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"hvc1\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"hev1\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"hvt1\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"lhe1\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"dvh1\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"dvhe\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"vvc1\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"vvi1\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"vvs1\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"vvcN\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"vp08\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"vp09\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"avs3\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"j2ki\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"mjp2\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"mjpg\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL,\t\"uncv\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO, \t\"mp4a\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO, \t\"ac-3\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO, \t\"ac-4\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO, \t\"ec-3\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO, \t\"Opus\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO, \t\"mha1\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO, \t\"mha2\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO, \t\"mhm1\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO, \t\"mhm2\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO, \t\"fLaC\");\n\n// Encrypted sample entries\nBoxParser.createEncryptedSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \t\"encv\");\nBoxParser.createEncryptedSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO, \t\"enca\");\nBoxParser.createEncryptedSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_SUBTITLE, \t\"encu\");\nBoxParser.createEncryptedSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_SYSTEM, \t\"encs\");\nBoxParser.createEncryptedSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_TEXT, \t\t\"enct\");\nBoxParser.createEncryptedSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_METADATA, \t\"encm\");\n// file:src/parsing/a1lx.js\nBoxParser.createBoxCtor(\"a1lx\", \"AV1LayeredImageIndexingProperty\", function(stream) {\n\tvar large_size = stream.readUint8() & 1;\n\tvar FieldLength = ((large_size & 1) + 1) * 16;\n\tthis.layer_size = [];\n\tfor (var i = 0; i < 3; i++) {\n\t\tif (FieldLength == 16) {\n\t\t\tthis.layer_size[i] = stream.readUint16();\n\t\t} else {\n\t\t\tthis.layer_size[i] = stream.readUint32();\n\t\t}\n\t}\n});// file:src/parsing/a1op.js\nBoxParser.createBoxCtor(\"a1op\", \"OperatingPointSelectorProperty\", function(stream) {\n\tthis.op_index = stream.readUint8();\n});// file:src/parsing/auxC.js\nBoxParser.createFullBoxCtor(\"auxC\", \"AuxiliaryTypeProperty\", function(stream) {\n\tthis.aux_type = stream.readCString();\n\tvar aux_subtype_length = this.size - this.hdr_size - (this.aux_type.length + 1);\n\tthis.aux_subtype = stream.readUint8Array(aux_subtype_length);\n});// file:src/parsing/av1C.js\nBoxParser.createBoxCtor(\"av1C\", \"AV1CodecConfigurationBox\", function(stream) {\n\tvar i;\n\tvar toparse;\n\tvar tmp = stream.readUint8();\n\tif ((tmp >> 7 & 0x1) !== 1) {\n\t\tLog.error(\"av1C marker problem\");\n\t\treturn;\n\t}\n\tthis.version = tmp & 0x7F;\n\tif (this.version !== 1) {\n\t\tLog.error(\"av1C version \"+this.version+\" not supported\");\n\t\treturn;\n\t}\n\ttmp = stream.readUint8();\n\tthis.seq_profile = (tmp >> 5) & 0x7;\n\tthis.seq_level_idx_0 = tmp & 0x1F;\n\ttmp = stream.readUint8();\n\tthis.seq_tier_0 = (tmp >> 7) & 0x1;\n\tthis.high_bitdepth = (tmp >> 6) & 0x1;\n\tthis.twelve_bit = (tmp >> 5) & 0x1;\n\tthis.monochrome = (tmp >> 4) & 0x1;\n\tthis.chroma_subsampling_x = (tmp >> 3) & 0x1;\n\tthis.chroma_subsampling_y = (tmp >> 2) & 0x1;\n\tthis.chroma_sample_position = (tmp & 0x3);\n\ttmp = stream.readUint8();\n\tthis.reserved_1 = (tmp >> 5) & 0x7;\n\tif (this.reserved_1 !== 0) {\n\t\tLog.error(\"av1C reserved_1 parsing problem\");\n\t\treturn;\n\t}\n\tthis.initial_presentation_delay_present = (tmp >> 4) & 0x1;\n\tif (this.initial_presentation_delay_present === 1) {\n\t\tthis.initial_presentation_delay_minus_one = (tmp & 0xF);\n\t} else {\n\t\tthis.reserved_2 = (tmp & 0xF);\n\t\tif (this.reserved_2 !== 0) {\n\t\t\tLog.error(\"av1C reserved_2 parsing problem\");\n\t\t\treturn;\n\t\t}\n\t}\n\n\tvar configOBUs_length = this.size - this.hdr_size - 4;\n\tthis.configOBUs = stream.readUint8Array(configOBUs_length);\n});\n\n// file:src/parsing/avcC.js\nfunction printPS(ps) {\n\tvar str = \"<table class='inner-table'>\";\n\tstr += \"<thead><tr><th>length</th><th>nalu_data</th></tr></thead>\";\n\tstr += \"<tbody>\";\n\n\tfor (var i=0; i < ps.length; i++) {\n\t\tvar nalu = ps[i];\n\t\tstr += \"<tr>\";\n\t\tstr += \"<td>\"+nalu.length+\"</td>\";\n\t\tstr += \"<td>\";\n\t\tstr += nalu.nalu.reduce(function(str, byte) {\n\t\t\treturn str + byte.toString(16).padStart(2, \"0\");\n\t\t}, \"0x\");\n\t\tstr += \"</td></tr>\";\n\t}\n\tstr += \"</tbody></table>\";\n\treturn str;\n}\n\nBoxParser.createBoxCtor(\"avcC\", \"AVCConfigurationBox\", function(stream) {\n\tvar i;\n\tvar toparse;\n\tthis.configurationVersion = stream.readUint8();\n\tthis.AVCProfileIndication = stream.readUint8();\n\tthis.profile_compatibility = stream.readUint8();\n\tthis.AVCLevelIndication = stream.readUint8();\n\tthis.lengthSizeMinusOne = (stream.readUint8() & 0x3);\n\tthis.nb_SPS_nalus = (stream.readUint8() & 0x1F);\n\ttoparse = this.size - this.hdr_size - 6;\n\tthis.SPS = [];\n\tthis.SPS.toString = function () {\n\t\treturn printPS(this);\n\t}\n\tfor (i = 0; i < this.nb_SPS_nalus; i++) {\n\t\tthis.SPS[i] = {};\n\t\tthis.SPS[i].length = stream.readUint16();\n\t\tthis.SPS[i].nalu = stream.readUint8Array(this.SPS[i].length);\n\t\ttoparse -= 2+this.SPS[i].length;\n\t}\n\tthis.nb_PPS_nalus = stream.readUint8();\n\ttoparse--;\n\tthis.PPS = [];\n\tthis.PPS.toString = function () {\n\t\treturn printPS(this);\n\t}\n\tfor (i = 0; i < this.nb_PPS_nalus; i++) {\n\t\tthis.PPS[i] = {};\n\t\tthis.PPS[i].length = stream.readUint16();\n\t\tthis.PPS[i].nalu = stream.readUint8Array(this.PPS[i].length);\n\t\ttoparse -= 2+this.PPS[i].length;\n\t}\n\tif (toparse>0) {\n\t\tthis.ext = stream.readUint8Array(toparse);\n\t}\n});\n\n// file:src/parsing/btrt.js\nBoxParser.createBoxCtor(\"btrt\", \"BitRateBox\", function(stream) {\n\tthis.bufferSizeDB = stream.readUint32();\n\tthis.maxBitrate = stream.readUint32();\n\tthis.avgBitrate = stream.readUint32();\n});\n\n// file:src/parsing/ccst.js\nBoxParser.createFullBoxCtor(\"ccst\", \"CodingConstraintsBox\", function(stream) {\n\tvar flags = stream.readUint8();\n\tthis.all_ref_pics_intra = ((flags & 0x80) == 0x80);\n\tthis.intra_pred_used = ((flags & 0x40) == 0x40);\n\tthis.max_ref_per_pic = ((flags & 0x3f) >> 2);\n\tstream.readUint24();\n});\n\n// file:src/parsing/cdef.js\nBoxParser.createBoxCtor(\"cdef\", \"ComponentDefinitionBox\", function(stream) {\n var i;\n this.channel_count = stream.readUint16();\n this.channel_indexes = [];\n this.channel_types = [];\n this.channel_associations = [];\n for (i = 0; i < this.channel_count; i++) {\n this.channel_indexes.push(stream.readUint16());\n this.channel_types.push(stream.readUint16());\n this.channel_associations.push(stream.readUint16());\n }\n});\n\n// file:src/parsing/clap.js\nBoxParser.createBoxCtor(\"clap\", \"CleanApertureBox\", function(stream) {\n\tthis.cleanApertureWidthN = stream.readUint32();\n\tthis.cleanApertureWidthD = stream.readUint32();\n\tthis.cleanApertureHeightN = stream.readUint32();\n\tthis.cleanApertureHeightD = stream.readUint32();\n\tthis.horizOffN = stream.readUint32();\n\tthis.horizOffD = stream.readUint32();\n\tthis.vertOffN = stream.readUint32();\n\tthis.vertOffD = stream.readUint32();\n});// file:src/parsing/clli.js\nBoxParser.createBoxCtor(\"clli\", \"ContentLightLevelBox\", function(stream) {\n\tthis.max_content_light_level = stream.readUint16();\n this.max_pic_average_light_level = stream.readUint16();\n});\n\n// file:src/parsing/cmex.js\nBoxParser.createFullBoxCtor(\"cmex\", \"CameraExtrinsicMatrixProperty\", function(stream) {\n\tif (this.flags & 0x1) {\n\t\tthis.pos_x = stream.readInt32();\n\t}\n\tif (this.flags & 0x2) {\n\t\tthis.pos_y = stream.readInt32();\n\t}\n\tif (this.flags & 0x4) {\n\t\tthis.pos_z = stream.readInt32();\n\t}\n\tif (this.flags & 0x8) {\n\t\tif (this.version == 0) {\n\t\t\tif (this.flags & 0x10) {\n\t\t\t\tthis.quat_x = stream.readInt32();\n\t\t\t\tthis.quat_y = stream.readInt32();\n\t\t\t\tthis.quat_z = stream.readInt32();\n\t\t\t} else {\n\t\t\t\tthis.quat_x = stream.readInt16();\n\t\t\t\tthis.quat_y = stream.readInt16();\n\t\t\t\tthis.quat_z = stream.readInt16();\n\t\t\t}\n\t\t} else if (this.version == 1) {\n\t\t\t//ViewpointGlobalCoordinateSysRotationStruct rot;\n\t\t}\n\t}\n\tif (this.flags & 0x20) {\n\t\tthis.id = stream.readUint32();\n\t}\n});\n// file:src/parsing/cmin.js\nBoxParser.createFullBoxCtor(\"cmin\", \"CameraIntrinsicMatrixProperty\", function(stream) {\n\tthis.focal_length_x = stream.readInt32();\n\tthis.principal_point_x = stream.readInt32();\n\tthis.principal_point_y = stream.readInt32();\n\tif (this.flags & 0x1) {\n\t\tthis.focal_length_y = stream.readInt32();\n\t\tthis.skew_factor = stream.readInt32();\n\t}\n});// file:src/parsing/cmpd.js\nBoxParser.createBoxCtor(\"cmpd\", \"ComponentDefinitionBox\", function(stream) {\n\tthis.component_count = stream.readUint32();\n\tthis.component_types = [];\n\tthis.component_type_urls = [];\n\tfor (i = 0; i < this.component_count; i++) {\n\t\tvar component_type = stream.readUint16();\n\t\tthis.component_types.push(component_type);\n\t\tif (component_type >= 0x8000) {\n\t\t\tthis.component_type_urls.push(stream.readCString());\n\t\t}\n\t}\n});// file:src/parsing/co64.js\nBoxParser.createFullBoxCtor(\"co64\", \"ChunkLargeOffsetBox\", function(stream) {\n\tvar entry_count;\n\tvar i;\n\tentry_count = stream.readUint32();\n\tthis.chunk_offsets = [];\n\tif (this.version === 0) {\n\t\tfor(i=0; i<entry_count; i++) {\n\t\t\tthis.chunk_offsets.push(stream.readUint64());\n\t\t}\n\t}\n});\n\n// file:src/parsing/CoLL.js\nBoxParser.createFullBoxCtor(\"CoLL\", \"ContentLightLevelBox\", function(stream) {\n\tthis.maxCLL = stream.readUint16();\n this.maxFALL = stream.readUint16();\n});\n\n// file:src/parsing/colr.js\nBoxParser.createBoxCtor(\"colr\", \"ColourInformationBox\", function(stream) {\n\tthis.colour_type = stream.readString(4);\n\tif (this.colour_type === 'nclx') {\n\t\tthis.colour_primaries = stream.readUint16();\n\t\tthis.transfer_characteristics = stream.readUint16();\n\t\tthis.matrix_coefficients = stream.readUint16();\n\t\tvar tmp = stream.readUint8();\n\t\tthis.full_range_flag = tmp >> 7;\n\t} else if (this.colour_type === 'rICC') {\n\t\tthis.ICC_profile = stream.readUint8Array(this.size - 4);\n\t} else if (this.colour_type === 'prof') {\n\t\tthis.ICC_profile = stream.readUint8Array(this.size - 4);\n\t}\n});// file:src/parsing/cprt.js\nBoxParser.createFullBoxCtor(\"cprt\", \"CopyrightBox\", function (stream) {\n\tthis.parseLanguage(stream);\n\tthis.notice = stream.readCString();\n});\n\n// file:src/parsing/cslg.js\nBoxParser.createFullBoxCtor(\"cslg\", \"CompositionToDecodeBox\", function(stream) {\n\tvar entry_count;\n\tif (this.version === 0) {\n\t\tthis.compositionToDTSShift = stream.readInt32(); /* signed */\n\t\tthis.leastDecodeToDisplayDelta = stream.readInt32(); /* signed */\n\t\tthis.greatestDecodeToDisplayDelta = stream.readInt32(); /* signed */\n\t\tthis.compositionStartTime = stream.readInt32(); /* signed */\n\t\tthis.compositionEndTime = stream.readInt32(); /* signed */\n\t}\n});\n\n// file:src/parsing/ctts.js\nBoxParser.createFullBoxCtor(\"ctts\", \"CompositionOffsetBox\", function(stream) {\n\tvar entry_count;\n\tvar i;\n\tentry_count = stream.readUint32();\n\tthis.sample_counts = [];\n\tthis.sample_offsets = [];\n\tif (this.version === 0) {\n\t\tfor(i=0; i<entry_count; i++) {\n\t\t\tthis.sample_counts.push(stream.readUint32());\n\t\t\t/* some files are buggy and declare version=0 while using signed offsets.\n\t\t\t The likelyhood of using the most significant bit in a 32-bits time offset is very low,\n\t\t\t so using signed value here as well */\n\t\t\t var value = stream.readInt32();\n\t\t\t if (value < 0) {\n\t\t\t \t\tLog.warn(\"BoxParser\", \"ctts box uses negative values without using version 1\");\n\t\t\t }\n\t\t\tthis.sample_offsets.push(value);\n\t\t}\n\t} else if (this.version == 1) {\n\t\tfor(i=0; i<entry_count; i++) {\n\t\t\tthis.sample_counts.push(stream.readUint32());\n\t\t\tthis.sample_offsets.push(stream.readInt32()); /* signed */\n\t\t}\n\t}\n});\n\n// file:src/parsing/dac3.js\nBoxParser.createBoxCtor(\"dac3\", \"AC3SpecificBox\", function(stream) {\n\tvar tmp_byte1 = stream.readUint8();\n\tvar tmp_byte2 = stream.readUint8();\n\tvar tmp_byte3 = stream.readUint8();\n\tthis.fscod = tmp_byte1 >> 6;\n\tthis.bsid = ((tmp_byte1 >> 1) & 0x1F);\n\tthis.bsmod = ((tmp_byte1 & 0x1) << 2) | ((tmp_byte2 >> 6) & 0x3);\n\tthis.acmod = ((tmp_byte2 >> 3) & 0x7);\n\tthis.lfeon = ((tmp_byte2 >> 2) & 0x1);\n\tthis.bit_rate_code = (tmp_byte2 & 0x3) | ((tmp_byte3 >> 5) & 0x7);\n});\n\n// file:src/parsing/dec3.js\nBoxParser.createBoxCtor(\"dec3\", \"EC3SpecificBox\", function(stream) {\n\tvar tmp_16 = stream.readUint16();\n\tthis.data_rate = tmp_16 >> 3;\n\tthis.num_ind_sub = tmp_16 & 0x7;\n\tthis.ind_subs = [];\n\tfor (var i = 0; i < this.num_ind_sub+1; i++) {\n\t\tvar ind_sub = {};\n\t\tthis.ind_subs.push(ind_sub);\n\t\tvar tmp_byte1 = stream.readUint8();\n\t\tvar tmp_byte2 = stream.readUint8();\n\t\tvar tmp_byte3 = stream.readUint8();\n\t\tind_sub.fscod = tmp_byte1 >> 6;\n\t\tind_sub.bsid = ((tmp_byte1 >> 1) & 0x1F);\n\t\tind_sub.bsmod = ((tmp_byte1 & 0x1) << 4) | ((tmp_byte2 >> 4) & 0xF);\n\t\tind_sub.acmod = ((tmp_byte2 >> 1) & 0x7);\n\t\tind_sub.lfeon = (tmp_byte2 & 0x1);\n\t\tind_sub.num_dep_sub = ((tmp_byte3 >> 1) & 0xF);\n\t\tif (ind_sub.num_dep_sub > 0) {\n\t\t\tind_sub.chan_loc = ((tmp_byte3 & 0x1) << 8) | stream.readUint8();\n\t\t}\n\t}\n});\n\n// file:src/parsing/dfLa.js\nBoxParser.createFullBoxCtor(\"dfLa\", \"FLACSpecificBox\", function(stream) {\n var BLOCKTYPE_MASK = 0x7F;\n var LASTMETADATABLOCKFLAG_MASK = 0x80;\n\n var boxesFound = [];\n var knownBlockTypes = [\n \"STREAMINFO\",\n \"PADDING\",\n \"APPLICATION\",\n \"SEEKTABLE\",\n \"VORBIS_COMMENT\",\n \"CUESHEET\",\n \"PICTURE\",\n \"RESERVED\"\n ];\n\n // for (i=0; ; i++) { // to end of box\n do {\n var flagAndType = stream.readUint8();\n\n var type = Math.min(\n (flagAndType & BLOCKTYPE_MASK),\n (knownBlockTypes.length - 1)\n );\n\n // if this is a STREAMINFO block, read the true samplerate since this\n // can be different to the AudioSampleEntry samplerate.\n if (!(type)) {\n // read past all the other stuff\n stream.readUint8Array(13);\n\n // extract samplerate\n this.samplerate = (stream.readUint32() >> 12);\n\n // read to end of STREAMINFO\n stream.readUint8Array(20);\n } else {\n // not interested in other block types so just discard length bytes\n stream.readUint8Array(stream.readUint24());\n }\n\n boxesFound.push(knownBlockTypes[type]);\n\n if (!!(flagAndType & LASTMETADATABLOCKFLAG_MASK)) {\n break;\n }\n } while (true);\n\n this.numMetadataBlocks =\n boxesFound.length + \" (\" + boxesFound.join(\", \") + \")\";\n});\n// file:src/parsing/dimm.js\nBoxParser.createBoxCtor(\"dimm\", \"hintimmediateBytesSent\", function(stream) {\n\tthis.bytessent = stream.readUint64();\n});\n\n// file:src/parsing/dmax.js\nBoxParser.createBoxCtor(\"dmax\", \"hintlongestpacket\", function(stream) {\n\tthis.time = stream.readUint32();\n});\n\n// file:src/parsing/dmed.js\nBoxParser.createBoxCtor(\"dmed\", \"hintmediaBytesSent\", function(stream) {\n\tthis.bytessent = stream.readUint64();\n});\n\n// file:src/parsing/dOps.js\nBoxParser.createBoxCtor(\"dOps\", \"OpusSpecificBox\", function(stream) {\n\tthis.Version = stream.readUint8();\n\tthis.OutputChannelCount = stream.readUint8();\n\tthis.PreSkip = stream.readUint16();\n\tthis.InputSampleRate = stream.readUint32();\n\tthis.OutputGain = stream.readInt16();\n\tthis.ChannelMappingFamily = stream.readUint8();\n\tif (this.ChannelMappingFamily !== 0) {\n\t\tthis.StreamCount = stream.readUint8();\n\t\tthis.CoupledCount = stream.readUint8();\n\t\tthis.ChannelMapping = [];\n\t\tfor (var i = 0; i < this.OutputChannelCount; i++) {\n\t\t\tthis.ChannelMapping[i] = stream.readUint8();\n\t\t}\n\t}\n});\n\n// file:src/parsing/dref.js\nBoxParser.createFullBoxCtor(\"dref\", \"DataReferenceBox\", function(stream) {\n\tvar ret;\n\tvar box;\n\tthis.entries = [];\n\tvar entry_count = stream.readUint32();\n\tfor (var i = 0; i < entry_count; i++) {\n\t\tret = BoxParser.parseOneBox(stream, false, this.size - (stream.getPosition() - this.start));\n\t\tif (ret.code === BoxParser.OK) {\n\t\t\tbox = ret.box;\n\t\t\tthis.entries.push(box);\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\t}\n});\n\n// file:src/parsing/drep.js\nBoxParser.createBoxCtor(\"drep\", \"hintrepeatedBytesSent\", function(stream) {\n\tthis.bytessent = stream.readUint64();\n});\n\n// file:src/parsing/elng.js\nBoxParser.createFullBoxCtor(\"elng\", \"ExtendedLanguageBox\", function(stream) {\n\tthis.extended_language = stream.readString(this.size-this.hdr_size);\n});\n\n// file:src/parsing/elst.js\nBoxParser.createFullBoxCtor(\"elst\", \"EditListBox\", function(stream) {\n\tthis.entries = [];\n\tvar entry_count = stream.readUint32();\n\tfor (var i = 0; i < entry_count; i++) {\n\t\tvar entry = {};\n\t\tthis.entries.push(entry);\n\t\tif (this.version === 1) {\n\t\t\tentry.segment_duration = stream.readUint64();\n\t\t\tentry.media_time = stream.readInt64();\n\t\t} else {\n\t\t\tentry.segment_duration = stream.readUint32();\n\t\t\tentry.media_time = stream.readInt32();\n\t\t}\n\t\tentry.media_rate_integer = stream.readInt16();\n\t\tentry.media_rate_fraction = stream.readInt16();\n\t}\n});\n\n// file:src/parsing/emsg.js\nBoxParser.createFullBoxCtor(\"emsg\", \"EventMessageBox\", function(stream) {\n\tif (this.version == 1) {\n\t\tthis.timescale \t\t\t\t\t= stream.readUint32();\n\t\tthis.presentation_time \t\t\t= stream.readUint64();\n\t\tthis.event_duration\t\t\t \t= stream.readUint32();\n\t\tthis.id \t\t\t\t\t\t= stream.readUint32();\n\t\tthis.scheme_id_uri \t\t\t\t= stream.readCString();\n\t\tthis.value \t\t\t\t\t\t= stream.readCString();\n\t} else {\n\t\tthis.scheme_id_uri \t\t\t\t= stream.readCString();\n\t\tthis.value \t\t\t\t\t\t= stream.readCString();\n\t\tthis.timescale \t\t\t\t\t= stream.readUint32();\n\t\tthis.presentation_time_delta \t= stream.readUint32();\n\t\tthis.event_duration\t\t\t \t= stream.readUint32();\n\t\tthis.id \t\t\t\t\t\t= stream.readUint32();\n\t}\n\tvar message_size = this.size - this.hdr_size - (4*4 + (this.scheme_id_uri.length+1) + (this.value.length+1));\n\tif (this.version == 1) {\n\t\tmessage_size -= 4;\n\t}\n\tthis.message_data = stream.readUint8Array(message_size);\n});\n\n// file:src/parsing/EntityToGroup.js\n// ISO/IEC 14496-12:2022 Section 8.18.3 Entity to group box\nBoxParser.createEntityToGroupCtor = function(type, parseMethod) {\n BoxParser[type+\"Box\"] = function(size) {\n BoxParser.FullBox.call(this, type, size);\n }\n BoxParser[type+\"Box\"].prototype = new BoxParser.FullBox();\n BoxParser[type+\"Box\"].prototype.parse = function(stream) {\n this.parseFullHeader(stream);\n if (parseMethod) {\n parseMethod.call(this, stream);\n } else {\n this.group_id = stream.readUint32();\n this.num_entities_in_group = stream.readUint32();\n this.entity_ids = [];\n for (i = 0; i < this.num_entities_in_group; i++) {\n var entity_id = stream.readUint32();\n this.entity_ids.push(entity_id);\n }\n }\n };\n};\n\n// Auto exposure bracketing (ISO/IEC 23008-12:2022 Section 6.8.6.2.1)\nBoxParser.createEntityToGroupCtor(\"aebr\");\n\n// Flash exposure bracketing (ISO/IEC 23008-12:2022 Section 6.8.6.5.1)\nBoxParser.createEntityToGroupCtor(\"afbr\");\n\n// Album collection (ISO/IEC 23008-12:2022 Section 6.8.7.1)\nBoxParser.createEntityToGroupCtor(\"albc\");\n\n// Alternative entity (ISO/IEC 14496-12:2022 Section 8.18.3.1)\nBoxParser.createEntityToGroupCtor(\"altr\");\n\n// Burst image entity group (ISO/IEC 23008-12:2022 Section 6.8.2.2)\nBoxParser.createEntityToGroupCtor(\"brst\");\n\n// Depth of field bracketing (ISO/IEC 23008-12:2022 Section 6.8.6.6.1)\nBoxParser.createEntityToGroupCtor(\"dobr\");\n\n// Equivalent entity (ISO/IEC 23008-12:2022 Section 6.8.1.1)\nBoxParser.createEntityToGroupCtor(\"eqiv\");\n\n// Favourites collection (ISO/IEC 23008-12:2022 Section 6.8.7.2)\nBoxParser.createEntityToGroupCtor(\"favc\");\n\n// Focus bracketing (ISO/IEC 23008-12:2022 Section 6.8.6.4.1)\nBoxParser.createEntityToGroupCtor(\"fobr\");\n\n// Audio to image entity group (ISO/IEC 23008-12:2022 Section 6.8.4)\nBoxParser.createEntityToGroupCtor(\"iaug\");\n\n// Panorama (ISO/IEC 23008-12:2022 Section 6.8.8.1)\nBoxParser.createEntityToGroupCtor(\"pano\");\n\n// Slideshow (ISO/IEC 23008-12:2022 Section 6.8.9.1)\nBoxParser.createEntityToGroupCtor(\"slid\");\n\n// Stereo pair (ISO/IEC 23008-12:2022 Section 6.8.5)\nBoxParser.createEntityToGroupCtor(\"ster\");\n\n// Time-synchronised capture entity group (ISO/IEC 23008-12:2022 Section 6.8.3)\nBoxParser.createEntityToGroupCtor(\"tsyn\");\n\n// White balance bracketing (ISO/IEC 23008-12:2022 Section 6.8.6.3.1)\nBoxParser.createEntityToGroupCtor(\"wbbr\");\n\n// Alternative entity (ISO/IEC 23008-12:2022 AMD1 Section 6.8.10)\nBoxParser.createEntityToGroupCtor(\"prgr\");\n\n// Image Pyramid entity group (ISO/IEC 23008-12:20xx Section 6.8.11)\nBoxParser.createEntityToGroupCtor(\"pymd\", function(stream) {\n this.group_id = stream.readUint32();\n this.num_entities_in_group = stream.readUint32();\n this.entity_ids = [];\n for (var i = 0; i < this.num_entities_in_group; i++) {\n var entity_id = stream.readUint32();\n this.entity_ids.push(entity_id);\n }\n \n this.tile_size_x = stream.readUint16();\n this.tile_size_y = stream.readUint16();\n this.layer_binning = [];\n this.tiles_in_layer_column_minus1 = [];\n this.tiles_in_layer_row_minus1 = [];\n for (i = 0; i < this.num_entities_in_group; i++) {\n this.layer_binning[i] = stream.readUint16();\n this.tiles_in_layer_row_minus1[i] = stream.readUint16();\n this.tiles_in_layer_column_minus1[i] = stream.readUint16();\n }\n});\n\n// file:src/parsing/esds.js\nBoxParser.createFullBoxCtor(\"esds\", \"ElementaryStreamDescriptorBox\", function(stream) {\n\tvar esd_data = stream.readUint8Array(this.size-this.hdr_size);\n\tif (typeof MPEG4DescriptorParser !== \"undefined\") {\n\t\tvar esd_parser = new MPEG4DescriptorParser();\n\t\tthis.esd = esd_parser.parseOneDescriptor(new DataStream(esd_data.buffer, 0, DataStream.BIG_ENDIAN));\n\t}\n});\n\n// file:src/parsing/fiel.js\nBoxParser.createBoxCtor(\"fiel\", \"FieldHandlingBox\", function(stream) {\n\tthis.fieldCount = stream.readUint8();\n\tthis.fieldOrdering = stream.readUint8();\n});\n\n// file:src/parsing/frma.js\nBoxParser.createBoxCtor(\"frma\", \"OriginalFormatBox\", function(stream) {\n\tthis.data_format = stream.readString(4);\n});\n\n// file:src/parsing/ftyp.js\nBoxParser.createBoxCtor(\"ftyp\", \"FileTypeBox\", function(stream) {\n\tvar toparse = this.size - this.hdr_size;\n\tthis.major_brand = stream.readString(4);\n\tthis.minor_version = stream.readUint32();\n\ttoparse -= 8;\n\tthis.compatible_brands = [];\n\tvar i = 0;\n\twhile (toparse>=4) {\n\t\tthis.compatible_brands[i] = stream.readString(4);\n\t\ttoparse -= 4;\n\t\ti++;\n\t}\n});\n\n// file:src/parsing/hdlr.js\nBoxParser.createFullBoxCtor(\"hdlr\", \"HandlerBox\", function(stream) {\n\tif (this.version === 0) {\n\t\tstream.readUint32();\n\t\tthis.handler = stream.readString(4);\n\t\tstream.readUint32Array(3);\n\t\tthis.name = stream.readString(this.size-this.hdr_size-20);\n\t\tif (this.name[this.name.length-1]==='\\0') {\n\t\t\tthis.name = this.name.slice(0,-1);\n\t\t}\n\t}\n});\n\n// file:src/parsing/hvcC.js\nBoxParser.createBoxCtor(\"hvcC\", \"HEVCConfigurationBox\", function(stream) {\n\tvar i, j;\n\tvar nb_nalus;\n\tvar length;\n\tvar tmp_byte;\n\tthis.configurationVersion = stream.readUint8();\n\ttmp_byte = stream.readUint8();\n\tthis.general_profile_space = tmp_byte >> 6;\n\tthis.general_tier_flag = (tmp_byte & 0x20) >> 5;\n\tthis.general_profile_idc = (tmp_byte & 0x1F);\n\tthis.general_profile_compatibility = stream.readUint32();\n\tthis.general_constraint_indicator = stream.readUint8Array(6);\n\tthis.general_level_idc = stream.readUint8();\n\tthis.min_spatial_segmentation_idc = stream.readUint16() & 0xFFF;\n\tthis.parallelismType = (stream.readUint8() & 0x3);\n\tthis.chroma_format_idc = (stream.readUint8() & 0x3);\n\tthis.bit_depth_luma_minus8 = (stream.readUint8() & 0x7);\n\tthis.bit_depth_chroma_minus8 = (stream.readUint8() & 0x7);\n\tthis.avgFrameRate = stream.readUint16();\n\ttmp_byte = stream.readUint8();\n\tthis.constantFrameRate = (tmp_byte >> 6);\n\tthis.numTemporalLayers = (tmp_byte & 0XD) >> 3;\n\tthis.temporalIdNested = (tmp_byte & 0X4) >> 2;\n\tthis.lengthSizeMinusOne = (tmp_byte & 0X3);\n\n\tthis.nalu_arrays = [];\n\tthis.nalu_arrays.toString = function () {\n\t\tvar str = \"<table class='inner-table'>\";\n\t\tstr += \"<thead><tr><th>completeness</th><th>nalu_type</th><th>nalu_data</th></tr></thead>\";\n\t\tstr += \"<tbody>\";\n\n\t\tfor (var i=0; i<this.length; i++) {\n\t\t\tvar nalu_array = this[i];\n\t\t\tstr += \"<tr>\";\n\t\t\tstr += \"<td rowspan='\"+nalu_array.length+\"'>\"+nalu_array.completeness+\"</td>\";\n\t\t\tstr += \"<td rowspan='\"+nalu_array.length+\"'>\"+nalu_array.nalu_type+\"</td>\";\n\t\t\tfor (var j=0; j<nalu_array.length; j++) {\n\t\t\t\tvar nalu = nalu_array[j];\n\t\t\t\tif (j !== 0) str += \"<tr>\";\n\t\t\t\tstr += \"<td>\";\n\t\t\t\tstr += nalu.data.reduce(function(str, byte) {\n\t\t\t\t\treturn str + byte.toString(16).padStart(2, \"0\");\n\t\t\t\t}, \"0x\");\n\t\t\t\tstr += \"</td></tr>\";\n\t\t\t}\n\t\t}\n\t\tstr += \"</tbody></table>\";\n\t\treturn str;\n\t}\n\tvar numOfArrays = stream.readUint8();\n\tfor (i = 0; i < numOfArrays; i++) {\n\t\tvar nalu_array = [];\n\t\tthis.nalu_arrays.push(nalu_array);\n\t\ttmp_byte = stream.readUint8()\n\t\tnalu_array.completeness = (tmp_byte & 0x80) >> 7;\n\t\tnalu_array.nalu_type = tmp_byte & 0x3F;\n\t\tvar numNalus = stream.readUint16();\n\t\tfor (j = 0; j < numNalus; j++) {\n\t\t\tvar nalu = {}\n\t\t\tnalu_array.push(nalu);\n\t\t\tlength = stream.readUint16();\n\t\t\tnalu.data = stream.readUint8Array(length);\n\t\t}\n\t}\n});\n\n// file:src/parsing/iinf.js\nBoxParser.createFullBoxCtor(\"iinf\", \"ItemInfoBox\", function(stream) {\n\tvar ret;\n\tif (this.version === 0) {\n\t\tthis.entry_count = stream.readUint16();\n\t} else {\n\t\tthis.entry_count = stream.readUint32();\n\t}\n\tthis.item_infos = [];\n\tfor (var i = 0; i < this.entry_count; i++) {\n\t\tret = BoxParser.parseOneBox(stream, false, this.size - (stream.getPosition() - this.start));\n\t\tif (ret.code === BoxParser.OK) {\n\t\t\tif (ret.box.type !== \"infe\") {\n\t\t\t\tLog.error(\"BoxParser\", \"Expected 'infe' box, got \"+ret.box.type);\n\t\t\t}\n\t\t\tthis.item_infos[i] = ret.box;\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\t}\n});\n\n// file:src/parsing/iloc.js\nBoxParser.createFullBoxCtor(\"iloc\", \"ItemLocationBox\", function(stream) {\n\tvar byte;\n\tbyte = stream.readUint8();\n\tthis.offset_size = (byte >> 4) & 0xF;\n\tthis.length_size = byte & 0xF;\n\tbyte = stream.readUint8();\n\tthis.base_offset_size = (byte >> 4) & 0xF;\n\tif (this.version === 1 || this.version === 2) {\n\t\tthis.index_size = byte & 0xF;\n\t} else {\n\t\tthis.index_size = 0;\n\t\t// reserved = byte & 0xF;\n\t}\n\tthis.items = [];\n\tvar item_count = 0;\n\tif (this.version < 2) {\n\t\titem_count = stream.readUint16();\n\t} else if (this.version === 2) {\n\t\titem_count = stream.readUint32();\n\t} else {\n\t\tthrow \"version of iloc box not supported\";\n\t}\n\tfor (var i = 0; i < item_count; i++) {\n\t\tvar item = {};\n\t\tthis.items.push(item);\n\t\tif (this.version < 2) {\n\t\t\titem.item_ID = stream.readUint16();\n\t\t} else if (this.version === 2) {\n\t\t\titem.item_ID = stream.readUint32();\n\t\t} else {\n\t\t\tthrow \"version of iloc box not supported\";\n\t\t}\n\t\tif (this.version === 1 || this.version === 2) {\n\t\t\titem.construction_method = (stream.readUint16() & 0xF);\n\t\t} else {\n\t\t\titem.construction_method = 0;\n\t\t}\n\t\titem.data_reference_index = stream.readUint16();\n\t\tswitch(this.base_offset_size) {\n\t\t\tcase 0:\n\t\t\t\titem.base_offset = 0;\n\t\t\t\tbreak;\n\t\t\tcase 4:\n\t\t\t\titem.base_offset = stream.readUint32();\n\t\t\t\tbreak;\n\t\t\tcase 8:\n\t\t\t\titem.base_offset = stream.readUint64();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow \"Error reading base offset size\";\n\t\t}\n\t\tvar extent_count = stream.readUint16();\n\t\titem.extents = [];\n\t\tfor (var j=0; j < extent_count; j++) {\n\t\t\tvar extent = {};\n\t\t\titem.extents.push(extent);\n\t\t\tif (this.version === 1 || this.version === 2) {\n\t\t\t\tswitch(this.index_size) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\textent.extent_index = 0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\textent.extent_index = stream.readUint32();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 8:\n\t\t\t\t\t\textent.extent_index = stream.readUint64();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthrow \"Error reading extent index\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tswitch(this.offset_size) {\n\t\t\t\tcase 0:\n\t\t\t\t\textent.extent_offset = 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 4:\n\t\t\t\t\textent.extent_offset = stream.readUint32();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 8:\n\t\t\t\t\textent.extent_offset = stream.readUint64();\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow \"Error reading extent index\";\n\t\t\t}\n\t\t\tswitch(this.length_size) {\n\t\t\t\tcase 0:\n\t\t\t\t\textent.extent_length = 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 4:\n\t\t\t\t\textent.extent_length = stream.readUint32();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 8:\n\t\t\t\t\textent.extent_length = stream.readUint64();\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow \"Error reading extent index\";\n\t\t\t}\n\t\t}\n\t}\n});\n\n// file:src/parsing/imir.js\nBoxParser.createBoxCtor(\"imir\", \"ImageMirror\", function(stream) {\n\tvar tmp = stream.readUint8();\n\tthis.reserved = tmp >> 7;\n\tthis.axis = tmp & 1;\n});// file:src/parsing/infe.js\nBoxParser.createFullBoxCtor(\"infe\", \"ItemInfoEntry\", function(stream) {\n\tif (this.version === 0 || this.version === 1) {\n\t\tthis.item_ID = stream.readUint16();\n\t\tthis.item_protection_index = stream.readUint16();\n\t\tthis.item_name = stream.readCString();\n\t\tthis.content_type = stream.readCString();\n\t\tthis.content_encoding = stream.readCString();\n\t}\n\tif (this.version === 1) {\n\t\tthis.extension_type = stream.readString(4);\n\t\tLog.warn(\"BoxParser\", \"Cannot parse extension type\");\n\t\tstream.seek(this.start+this.size);\n\t\treturn;\n\t}\n\tif (this.version >= 2) {\n\t\tif (this.version === 2) {\n\t\t\tthis.item_ID = stream.readUint16();\n\t\t} else if (this.version === 3) {\n\t\t\tthis.item_ID = stream.readUint32();\n\t\t}\n\t\tthis.item_protection_index = stream.readUint16();\n\t\tthis.item_type = stream.readString(4);\n\t\tthis.item_name = stream.readCString();\n\t\tif (this.item_type === \"mime\") {\n\t\t\tthis.content_type = stream.readCString();\n\t\t\tthis.content_encoding = stream.readCString();\n\t\t} else if (this.item_type === \"uri \") {\n\t\t\tthis.item_uri_type = stream.readCString();\n\t\t}\n\t}\n});\n// file:src/parsing/ipma.js\nBoxParser.createFullBoxCtor(\"ipma\", \"ItemPropertyAssociationBox\", function(stream) {\n\tvar i, j;\n\tentry_count = stream.readUint32();\n\tthis.associations = [];\n\tfor(i=0; i<entry_count; i++) {\n\t\tvar item_assoc = {};\n\t\tthis.associations.push(item_assoc);\n\t\tif (this.version < 1) {\n\t\t\titem_assoc.id = stream.readUint16();\n\t\t} else {\n\t\t\titem_assoc.id = stream.readUint32();\n\t\t}\n\t\tvar association_count = stream.readUint8();\n\t\titem_assoc.props = [];\n\t\tfor (j = 0; j < association_count; j++) {\n\t\t\tvar tmp = stream.readUint8();\n\t\t\tvar p = {};\n\t\t\titem_assoc.props.push(p);\n\t\t\tp.essential = ((tmp & 0x80) >> 7) === 1;\n\t\t\tif (this.flags & 0x1) {\n\t\t\t\tp.property_index = (tmp & 0x7F) << 8 | stream.readUint8();\n\t\t\t} else {\n\t\t\t\tp.property_index = (tmp & 0x7F);\n\t\t\t}\n\t\t}\n\t}\n});\n\n// file:src/parsing/iref.js\nBoxParser.createFullBoxCtor(\"iref\", \"ItemReferenceBox\", function(stream) {\n\tvar ret;\n\tvar entryCount;\n\tvar box;\n\tthis.references = [];\n\n\twhile (stream.getPosition() < this.start+this.size) {\n\t\tret = BoxParser.parseOneBox(stream, true, this.size - (stream.getPosition() - this.start));\n\t\tif (ret.code === BoxParser.OK) {\n\t\t\tif (this.version === 0) {\n\t\t\t\tbox = new BoxParser.SingleItemTypeReferenceBox(ret.type, ret.size, ret.hdr_size, ret.start);\n\t\t\t} else {\n\t\t\t\tbox = new BoxParser.SingleItemTypeReferenceBoxLarge(ret.type, ret.size, ret.hdr_size, ret.start);\n\t\t\t}\n\t\t\tif (box.write === BoxParser.Box.prototype.write && box.type !== \"mdat\") {\n\t\t\t\tLog.warn(\"BoxParser\", box.type+\" box writing not yet implemented, keeping unparsed data in memory for later write\");\n\t\t\t\tbox.parseDataAndRewind(stream);\n\t\t\t}\n\t\t\tbox.parse(stream);\n\t\t\tthis.references.push(box);\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\t}\n});\n// file:src/parsing/irot.js\nBoxParser.createBoxCtor(\"irot\", \"ImageRotation\", function(stream) {\n\tthis.angle = stream.readUint8() & 0x3;\n});\n\n// file:src/parsing/ispe.js\nBoxParser.createFullBoxCtor(\"ispe\", \"ImageSpatialExtentsProperty\", function(stream) {\n\tthis.image_width = stream.readUint32();\n\tthis.image_height = stream.readUint32();\n});// file:src/parsing/kind.js\nBoxParser.createFullBoxCtor(\"kind\", \"KindBox\", function(stream) {\n\tthis.schemeURI = stream.readCString();\n\tthis.value = stream.readCString();\n});\n// file:src/parsing/leva.js\nBoxParser.createFullBoxCtor(\"leva\", \"LevelAssignmentBox\", function(stream) {\n\tvar count = stream.readUint8();\n\tthis.levels = [];\n\tfor (var i = 0; i < count; i++) {\n\t\tvar level = {};\n\t\tthis.levels[i] = level;\n\t\tlevel.track_ID = stream.readUint32();\n\t\tvar tmp_byte = stream.readUint8();\n\t\tlevel.padding_flag = tmp_byte >> 7;\n\t\tlevel.assignment_type = tmp_byte & 0x7F;\n\t\tswitch (level.assignment_type) {\n\t\t\tcase 0:\n\t\t\t\tlevel.grouping_type = stream.readString(4);\n\t\t\t\tbreak;\n\t\t\tcase 1:\n\t\t\t\tlevel.grouping_type = stream.readString(4);\n\t\t\t\tlevel.grouping_type_parameter = stream.readUint32();\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t\tbreak;\n\t\t\tcase 4:\n\t\t\t\tlevel.sub_track_id = stream.readUint32();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tLog.warn(\"BoxParser\", \"Unknown leva assignement type\");\n\t\t}\n\t}\n});\n\n// file:src/parsing/lhvC.js\nBoxParser.createBoxCtor(\"lhvC\", \"LHEVCConfigurationBox\", function(stream) {\n\tvar i, j;\n\tvar tmp_byte;\n\tthis.configurationVersion = stream.readUint8();\n\tthis.min_spatial_segmentation_idc = stream.readUint16() & 0xFFF;\n\tthis.parallelismType = (stream.readUint8() & 0x3);\n\ttmp_byte = stream.readUint8();\n\tthis.numTemporalLayers = (tmp_byte & 0XD) >> 3;\n\tthis.temporalIdNested = (tmp_byte & 0X4) >> 2;\n\tthis.lengthSizeMinusOne = (tmp_byte & 0X3);\n\n\tthis.nalu_arrays = [];\n\tthis.nalu_arrays.toString = function () {\n\t\tvar str = \"<table class='inner-table'>\";\n\t\tstr += \"<thead><tr><th>completeness</th><th>nalu_type</th><th>nalu_data</th></tr></thead>\";\n\t\tstr += \"<tbody>\";\n\n\t\tfor (var i=0; i<this.length; i++) {\n\t\t\tvar nalu_array = this[i];\n\t\t\tstr += \"<tr>\";\n\t\t\tstr += \"<td rowspan='\"+nalu_array.length+\"'>\"+nalu_array.completeness+\"</td>\";\n\t\t\tstr += \"<td rowspan='\"+nalu_array.length+\"'>\"+nalu_array.nalu_type+\"</td>\";\n\t\t\tfor (var j=0; j<nalu_array.length; j++) {\n\t\t\t\tvar nalu = nalu_array[j];\n\t\t\t\tif (j !== 0) str += \"<tr>\";\n\t\t\t\tstr += \"<td>\";\n\t\t\t\tstr += nalu.data.reduce(function(str, byte) {\n\t\t\t\t\treturn str + byte.toString(16).padStart(2, \"0\");\n\t\t\t\t}, \"0x\");\n\t\t\t\tstr += \"</td></tr>\";\n\t\t\t}\n\t\t}\n\t\tstr += \"</tbody></table>\";\n\t\treturn str;\n\t}\n\tvar numOfArrays = stream.readUint8();\n\tfor (i = 0; i < numOfArrays; i++) {\n\t\tvar nalu_array = [];\n\t\tthis.nalu_arrays.push(nalu_array);\n\t\ttmp_byte = stream.readUint8()\n\t\tnalu_array.completeness = (tmp_byte & 0x80) >> 7;\n\t\tnalu_array.nalu_type = tmp_byte & 0x3F;\n\t\tvar numNalus = stream.readUint16();\n\t\tfor (j = 0; j < numNalus; j++) {\n\t\t\tvar nalu = {}\n\t\t\tnalu_array.push(nalu);\n\t\t\tvar length = stream.readUint16();\n\t\t\tnalu.data = stream.readUint8Array(length);\n\t\t}\n\t}\n});\n\n// file:src/parsing/lsel.js\nBoxParser.createBoxCtor(\"lsel\", \"LayerSelectorProperty\", function(stream) {\n\tthis.layer_id = stream.readUint16();\n});// file:src/parsing/maxr.js\nBoxParser.createBoxCtor(\"maxr\", \"hintmaxrate\", function(stream) {\n\tthis.period = stream.readUint32();\n\tthis.bytes = stream.readUint32();\n});\n\n// file:src/parsing/mdcv.js\nfunction ColorPoint(x, y) {\n this.x = x;\n this.y = y;\n}\n\nColorPoint.prototype.toString = function() {\n return \"(\"+this.x+\",\"+this.y+\")\";\n}\n\nBoxParser.createBoxCtor(\"mdcv\", \"MasteringDisplayColourVolumeBox\", function(stream) {\n this.display_primaries = [];\n this.display_primaries[0] = new ColorPoint(stream.readUint16(),stream.readUint16());\n this.display_primaries[1] = new ColorPoint(stream.readUint16(),stream.readUint16());\n this.display_primaries[2] = new ColorPoint(stream.readUint16(),stream.readUint16());\n this.white_point = new ColorPoint(stream.readUint16(),stream.readUint16());\n this.max_display_mastering_luminance = stream.readUint32();\n this.min_display_mastering_luminance = stream.readUint32();\n});\n\n// file:src/parsing/mdhd.js\nBoxParser.createFullBoxCtor(\"mdhd\", \"MediaHeaderBox\", function(stream) {\n\tif (this.version == 1) {\n\t\tthis.creation_time = stream.readUint64();\n\t\tthis.modification_time = stream.readUint64();\n\t\tthis.timescale = stream.readUint32();\n\t\tthis.duration = stream.readUint64();\n\t} else {\n\t\tthis.creation_time = stream.readUint32();\n\t\tthis.modification_time = stream.readUint32();\n\t\tthis.timescale = stream.readUint32();\n\t\tthis.duration = stream.readUint32();\n\t}\n\tthis.parseLanguage(stream);\n\tstream.readUint16();\n});\n\n// file:src/parsing/mehd.js\nBoxParser.createFullBoxCtor(\"mehd\", \"MovieExtendsHeaderBox\", function(stream) {\n\tif (this.flags & 0x1) {\n\t\tLog.warn(\"BoxParser\", \"mehd box incorrectly uses flags set to 1, converting version to 1\");\n\t\tthis.version = 1;\n\t}\n\tif (this.version == 1) {\n\t\tthis.fragment_duration = stream.readUint64();\n\t} else {\n\t\tthis.fragment_duration = stream.readUint32();\n\t}\n});\n\n// file:src/parsing/meta.js\nBoxParser.createFullBoxCtor(\"meta\", \"MetaBox\", function(stream) {\n\tthis.boxes = [];\n\tBoxParser.ContainerBox.prototype.parse.call(this, stream);\n});\n// file:src/parsing/mfhd.js\nBoxParser.createFullBoxCtor(\"mfhd\", \"MovieFragmentHeaderBox\", function(stream) {\n\tthis.sequence_number = stream.readUint32();\n});\n\n// file:src/parsing/mfro.js\nBoxParser.createFullBoxCtor(\"mfro\", \"MovieFragmentRandomAccessOffsetBox\", function(stream) {\n\tthis._size = stream.readUint32();\n});\n\n// file:src/parsing/mskC.js\nBoxParser.createFullBoxCtor(\"mskC\", \"MaskConfigurationProperty\", function(stream) {\n this.bits_per_pixel = stream.readUint8();\n});\n\n// file:src/parsing/mvhd.js\nBoxParser.createFullBoxCtor(\"mvhd\", \"MovieHeaderBox\", function(stream) {\n\tif (this.version == 1) {\n\t\tthis.creation_time = stream.readUint64();\n\t\tthis.modification_time = stream.readUint64();\n\t\tthis.timescale = stream.readUint32();\n\t\tthis.duration = stream.readUint64();\n\t} else {\n\t\tthis.creation_time = stream.readUint32();\n\t\tthis.modification_time = stream.readUint32();\n\t\tthis.timescale = stream.readUint32();\n\t\tthis.duration = stream.readUint32();\n\t}\n\tthis.rate = stream.readUint32();\n\tthis.volume = stream.readUint16()>>8;\n\tstream.readUint16();\n\tstream.readUint32Array(2);\n\tthis.matrix = stream.readUint32Array(9);\n\tstream.readUint32Array(6);\n\tthis.next_track_id = stream.readUint32();\n});\n// file:src/parsing/npck.js\nBoxParser.createBoxCtor(\"npck\", \"hintPacketsSent\", function(stream) {\n\tthis.packetssent = stream.readUint32();\n});\n\n// file:src/parsing/nump.js\nBoxParser.createBoxCtor(\"nump\", \"hintPacketsSent\", function(stream) {\n\tthis.packetssent = stream.readUint64();\n});\n\n// file:src/parsing/padb.js\nBoxParser.createFullBoxCtor(\"padb\", \"PaddingBitsBox\", function(stream) {\n\tvar sample_count = stream.readUint32();\n\tthis.padbits = [];\n\tfor (var i = 0; i < Math.floor((sample_count+1)/2); i++) {\n\t\tthis.padbits = stream.readUint8();\n\t}\n});\n\n// file:src/parsing/pasp.js\nBoxParser.createBoxCtor(\"pasp\", \"PixelAspectRatioBox\", function(stream) {\n\tthis.hSpacing = stream.readUint32();\n\tthis.vSpacing = stream.readUint32();\n});// file:src/parsing/payl.js\nBoxParser.createBoxCtor(\"payl\", \"CuePayloadBox\", function(stream) {\n\tthis.text = stream.readString(this.size - this.hdr_size);\n});\n\n// file:src/parsing/payt.js\nBoxParser.createBoxCtor(\"payt\", \"hintpayloadID\", function(stream) {\n\tthis.payloadID = stream.readUint32();\n\tvar count = stream.readUint8();\n\tthis.rtpmap_string = stream.readString(count);\n});\n\n// file:src/parsing/pdin.js\nBoxParser.createFullBoxCtor(\"pdin\", \"ProgressiveDownloadInfoBox\", function(stream) {\n\tvar count = (this.size - this.hdr_size)/8;\n\tthis.rate = [];\n\tthis.initial_delay = [];\n\tfor (var i = 0; i < count; i++) {\n\t\tthis.rate[i] = stream.readUint32();\n\t\tthis.initial_delay[i] = stream.readUint32();\n\t}\n});\n\n// file:src/parsing/pitm.js\nBoxParser.createFullBoxCtor(\"pitm\", \"PrimaryItemBox\", function(stream) {\n\tif (this.version === 0) {\n\t\tthis.item_id = stream.readUint16();\n\t} else {\n\t\tthis.item_id = stream.readUint32();\n\t}\n});\n\n// file:src/parsing/pixi.js\nBoxParser.createFullBoxCtor(\"pixi\", \"PixelInformationProperty\", function(stream) {\n\tvar i;\n\tthis.num_channels = stream.readUint8();\n\tthis.bits_per_channels = [];\n\tfor (i = 0; i < this.num_channels; i++) {\n\t\tthis.bits_per_channels[i] = stream.readUint8();\n\t}\n});\n\n// file:src/parsing/pmax.js\nBoxParser.createBoxCtor(\"pmax\", \"hintlargestpacket\", function(stream) {\n\tthis.bytes = stream.readUint32();\n});\n\n// file:src/parsing/prdi.js\nBoxParser.createFullBoxCtor(\"prdi\", \"ProgressiveDerivedImageItemInformationProperty\", function(stream) {\n\tthis.step_count = stream.readUint16();\n\tthis.item_count = [];\n\tif (this.flags & 0x2) {\n\t\tfor (var i = 0; i < this.step_count; i++) {\n\t\t\tthis.item_count[i] = stream.readUint16();\n\t\t}\n\t}\n});// file:src/parsing/prft.js\nBoxParser.createFullBoxCtor(\"prft\", \"ProducerReferenceTimeBox\", function(stream) {\n\tthis.ref_track_id = stream.readUint32();\n\tthis.ntp_timestamp = stream.readUint64();\n\tif (this.version === 0) {\n\t\tthis.media_time = stream.readUint32();\n\t} else {\n\t\tthis.media_time = stream.readUint64();\n\t}\n});\n\n// file:src/parsing/pssh.js\nBoxParser.createFullBoxCtor(\"pssh\", \"ProtectionSystemSpecificHeaderBox\", function(stream) {\n\tthis.system_id = BoxParser.parseHex16(stream);\n\tif (this.version > 0) {\n\t\tvar count = stream.readUint32();\n\t\tthis.kid = [];\n\t\tfor (var i = 0; i < count; i++) {\n\t\t\tthis.kid[i] = BoxParser.parseHex16(stream);\n\t\t}\n\t}\n\tvar datasize = stream.readUint32();\n\tif (datasize > 0) {\n\t\tthis.data = stream.readUint8Array(datasize);\n\t}\n});\n\n// file:src/parsing/qt/clef.js\nBoxParser.createFullBoxCtor(\"clef\", \"TrackCleanApertureDimensionsBox\", function(stream) {\n\tthis.width = stream.readUint32();\n\tthis.height = stream.readUint32();\n});// file:src/parsing/qt/enof.js\nBoxParser.createFullBoxCtor(\"enof\", \"TrackEncodedPixelsDimensionsBox\", function(stream) {\n\tthis.width = stream.readUint32();\n\tthis.height = stream.readUint32();\n});// file:src/parsing/qt/prof.js\nBoxParser.createFullBoxCtor(\"prof\", \"TrackProductionApertureDimensionsBox\", function(stream) {\n\tthis.width = stream.readUint32();\n\tthis.height = stream.readUint32();\n});// file:src/parsing/qt/tapt.js\nBoxParser.createContainerBoxCtor(\"tapt\", \"TrackApertureModeDimensionsBox\", null, [ \"clef\", \"prof\", \"enof\"]);// file:src/parsing/rtp.js\nBoxParser.createBoxCtor(\"rtp \", \"rtpmoviehintinformation\", function(stream) {\n\tthis.descriptionformat = stream.readString(4);\n\tthis.sdptext = stream.readString(this.size - this.hdr_size - 4);\n});\n\n// file:src/parsing/saio.js\nBoxParser.createFullBoxCtor(\"saio\", \"SampleAuxiliaryInformationOffsetsBox\", function(stream) {\n\tif (this.flags & 0x1) {\n\t\tthis.aux_info_type = stream.readString(4);\n\t\tthis.aux_info_type_parameter = stream.readUint32();\n\t}\n\tvar count = stream.readUint32();\n\tthis.offset = [];\n\tfor (var i = 0; i < count; i++) {\n\t\tif (this.version === 0) {\n\t\t\tthis.offset[i] = stream.readUint32();\n\t\t} else {\n\t\t\tthis.offset[i] = stream.readUint64();\n\t\t}\n\t}\n});\n// file:src/parsing/saiz.js\nBoxParser.createFullBoxCtor(\"saiz\", \"SampleAuxiliaryInformationSizesBox\", function(stream) {\n\tif (this.flags & 0x1) {\n\t\tthis.aux_info_type = stream.readString(4);\n\t\tthis.aux_info_type_parameter = stream.readUint32();\n\t}\n\tthis.default_sample_info_size = stream.readUint8();\n\tthis.sample_count = stream.readUint32();\n\tthis.sample_info_size = [];\n\tif (this.default_sample_info_size === 0) {\n\t\tfor (var i = 0; i < this.sample_count; i++) {\n\t\t\tthis.sample_info_size[i] = stream.readUint8();\n\t\t}\n\t}\n});\n\n// file:src/parsing/sampleentries/mett.js\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_METADATA, \"mett\", function(stream) {\n\tthis.parseHeader(stream);\n\tthis.content_encoding = stream.readCString();\n\tthis.mime_format = stream.readCString();\n\tthis.parseFooter(stream);\n});\n\n// file:src/parsing/sampleentries/metx.js\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_METADATA, \"metx\", function(stream) {\n\tthis.parseHeader(stream);\n\tthis.content_encoding = stream.readCString();\n\tthis.namespace = stream.readCString();\n\tthis.schema_location = stream.readCString();\n\tthis.parseFooter(stream);\n});\n\n// file:src/parsing/sampleentries/sbtt.js\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_SUBTITLE, \"sbtt\", function(stream) {\n\tthis.parseHeader(stream);\n\tthis.content_encoding = stream.readCString();\n\tthis.mime_format = stream.readCString();\n\tthis.parseFooter(stream);\n});\n\n// file:src/parsing/sampleentries/stpp.js\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_SUBTITLE, \"stpp\", function(stream) {\n\tthis.parseHeader(stream);\n\tthis.namespace = stream.readCString();\n\tthis.schema_location = stream.readCString();\n\tthis.auxiliary_mime_types = stream.readCString();\n\tthis.parseFooter(stream);\n});\n\n// file:src/parsing/sampleentries/stxt.js\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_SUBTITLE, \"stxt\", function(stream) {\n\tthis.parseHeader(stream);\n\tthis.content_encoding = stream.readCString();\n\tthis.mime_format = stream.readCString();\n\tthis.parseFooter(stream);\n});\n\n// file:src/parsing/sampleentries/tx3g.js\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_SUBTITLE, \"tx3g\", function(stream) {\n\tthis.parseHeader(stream);\n\tthis.displayFlags = stream.readUint32();\n\tthis.horizontal_justification = stream.readInt8();\n\tthis.vertical_justification = stream.readInt8();\n\tthis.bg_color_rgba = stream.readUint8Array(4);\n\tthis.box_record = stream.readInt16Array(4);\n\tthis.style_record = stream.readUint8Array(12);\n\tthis.parseFooter(stream);\n});\n// file:src/parsing/sampleentries/wvtt.js\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_METADATA, \"wvtt\", function(stream) {\n\tthis.parseHeader(stream);\n\tthis.parseFooter(stream);\n});\n\n// file:src/parsing/samplegroups/alst.js\nBoxParser.createSampleGroupCtor(\"alst\", function(stream) {\n\tvar i;\n\tvar roll_count = stream.readUint16();\n\tthis.first_output_sample = stream.readUint16();\n\tthis.sample_offset = [];\n\tfor (i = 0; i < roll_count; i++) {\n\t\tthis.sample_offset[i] = stream.readUint32();\n\t}\n\tvar remaining = this.description_length - 4 - 4*roll_count;\n\tthis.num_output_samples = [];\n\tthis.num_total_samples = [];\n\tfor (i = 0; i < remaining/4; i++) {\n\t\tthis.num_output_samples[i] = stream.readUint16();\n\t\tthis.num_total_samples[i] = stream.readUint16();\n\t}\n});\n\n// file:src/parsing/samplegroups/avll.js\nBoxParser.createSampleGroupCtor(\"avll\", function(stream) {\n\tthis.layerNumber = stream.readUint8();\n\tthis.accurateStatisticsFlag = stream.readUint8();\n\tthis.avgBitRate = stream.readUint16();\n\tthis.avgFrameRate = stream.readUint16();\n});\n\n// file:src/parsing/samplegroups/avss.js\nBoxParser.createSampleGroupCtor(\"avss\", function(stream) {\n\tthis.subSequenceIdentifier = stream.readUint16();\n\tthis.layerNumber = stream.readUint8();\n\tvar tmp_byte = stream.readUint8();\n\tthis.durationFlag = tmp_byte >> 7;\n\tthis.avgRateFlag = (tmp_byte >> 6) & 0x1;\n\tif (this.durationFlag) {\n\t\tthis.duration = stream.readUint32();\n\t}\n\tif (this.avgRateFlag) {\n\t\tthis.accurateStatisticsFlag = stream.readUint8();\n\t\tthis.avgBitRate = stream.readUint16();\n\t\tthis.avgFrameRate = stream.readUint16();\n\t}\n\tthis.dependency = [];\n\tvar numReferences = stream.readUint8();\n\tfor (var i = 0; i < numReferences; i++) {\n\t\tvar dependencyInfo = {};\n\t\tthis.dependency.push(dependencyInfo);\n\t\tdependencyInfo.subSeqDirectionFlag = stream.readUint8();\n\t\tdependencyInfo.layerNumber = stream.readUint8();\n\t\tdependencyInfo.subSequenceIdentifier = stream.readUint16();\n\t}\n});\n\n// file:src/parsing/samplegroups/dtrt.js\nBoxParser.createSampleGroupCtor(\"dtrt\", function(stream) {\n\tLog.warn(\"BoxParser\", \"Sample Group type: \"+this.grouping_type+\" not fully parsed\");\n});\n\n// file:src/parsing/samplegroups/mvif.js\nBoxParser.createSampleGroupCtor(\"mvif\", function(stream) {\n\tLog.warn(\"BoxParser\", \"Sample Group type: \"+this.grouping_type+\" not fully parsed\");\n});\n\n// file:src/parsing/samplegroups/prol.js\nBoxParser.createSampleGroupCtor(\"prol\", function(stream) {\n\tthis.roll_distance = stream.readInt16();\n});\n\n// file:src/parsing/samplegroups/rap.js\nBoxParser.createSampleGroupCtor(\"rap \", function(stream) {\n\tvar tmp_byte = stream.readUint8();\n\tthis.num_leading_samples_known = tmp_byte >> 7;\n\tthis.num_leading_samples = tmp_byte & 0x7F;\n});\n\n// file:src/parsing/samplegroups/rash.js\nBoxParser.createSampleGroupCtor(\"rash\", function(stream) {\n\tthis.operation_point_count = stream.readUint16();\n\tif (this.description_length !== 2+(this.operation_point_count === 1?2:this.operation_point_count*6)+9) {\n\t\tLog.warn(\"BoxParser\", \"Mismatch in \"+this.grouping_type+\" sample group length\");\n\t\tthis.data = stream.readUint8Array(this.description_length-2);\n\t} else {\n\t\tif (this.operation_point_count === 1) {\n\t\t\tthis.target_rate_share = stream.readUint16();\n\t\t} else {\n\t\t\tthis.target_rate_share = [];\n\t\t\tthis.available_bitrate = [];\n\t\t\tfor (var i = 0; i < this.operation_point_count; i++) {\n\t\t\t\tthis.available_bitrate[i] = stream.readUint32();\n\t\t\t\tthis.target_rate_share[i] = stream.readUint16();\n\t\t\t}\n\t\t}\n\t\tthis.maximum_bitrate = stream.readUint32();\n\t\tthis.minimum_bitrate = stream.readUint32();\n\t\tthis.discard_priority = stream.readUint8();\n\t}\n});\n\n// file:src/parsing/samplegroups/roll.js\nBoxParser.createSampleGroupCtor(\"roll\", function(stream) {\n\tthis.roll_distance = stream.readInt16();\n});\n\n// file:src/parsing/samplegroups/samplegroup.js\nBoxParser.SampleGroupEntry.prototype.parse = function(stream) {\n\tLog.warn(\"BoxParser\", \"Unknown Sample Group type: \"+this.grouping_type);\n\tthis.data = stream.readUint8Array(this.description_length);\n}\n\n// file:src/parsing/samplegroups/scif.js\nBoxParser.createSampleGroupCtor(\"scif\", function(stream) {\n\tLog.warn(\"BoxParser\", \"Sample Group type: \"+this.grouping_type+\" not fully parsed\");\n});\n\n// file:src/parsing/samplegroups/scnm.js\nBoxParser.createSampleGroupCtor(\"scnm\", function(stream) {\n\tLog.warn(\"BoxParser\", \"Sample Group type: \"+this.grouping_type+\" not fully parsed\");\n});\n\n// file:src/parsing/samplegroups/seig.js\nBoxParser.createSampleGroupCtor(\"seig\", function(stream) {\n\tthis.reserved = stream.readUint8();\n\tvar tmp = stream.readUint8();\n\tthis.crypt_byte_block = tmp >> 4;\n\tthis.skip_byte_block = tmp & 0xF;\n\tthis.isProtected = stream.readUint8();\n\tthis.Per_Sample_IV_Size = stream.readUint8();\n\tthis.KID = BoxParser.parseHex16(stream);\n\tthis.constant_IV_size = 0;\n\tthis.constant_IV = 0;\n\tif (this.isProtected === 1 && this.Per_Sample_IV_Size === 0) {\n\t\tthis.constant_IV_size = stream.readUint8();\n\t\tthis.constant_IV = stream.readUint8Array(this.constant_IV_size);\n\t}\n});\n\n// file:src/parsing/samplegroups/stsa.js\nBoxParser.createSampleGroupCtor(\"stsa\", function(stream) {\n\tLog.warn(\"BoxParser\", \"Sample Group type: \"+this.grouping_type+\" not fully parsed\");\n});\n\n// file:src/parsing/samplegroups/sync.js\nBoxParser.createSampleGroupCtor(\"sync\", function(stream) {\n\tvar tmp_byte = stream.readUint8();\n\tthis.NAL_unit_type = tmp_byte & 0x3F;\n});\n\n// file:src/parsing/samplegroups/tele.js\nBoxParser.createSampleGroupCtor(\"tele\", function(stream) {\n\tvar tmp_byte = stream.readUint8();\n\tthis.level_independently_decodable = tmp_byte >> 7;\n});\n\n// file:src/parsing/samplegroups/tsas.js\nBoxParser.createSampleGroupCtor(\"tsas\", function(stream) {\n\tLog.warn(\"BoxParser\", \"Sample Group type: \"+this.grouping_type+\" not fully parsed\");\n});\n\n// file:src/parsing/samplegroups/tscl.js\nBoxParser.createSampleGroupCtor(\"tscl\", function(stream) {\n\tLog.warn(\"BoxParser\", \"Sample Group type: \"+this.grouping_type+\" not fully parsed\");\n});\n\n// file:src/parsing/samplegroups/vipr.js\nBoxParser.createSampleGroupCtor(\"vipr\", function(stream) {\n\tLog.warn(\"BoxParser\", \"Sample Group type: \"+this.grouping_type+\" not fully parsed\");\n});\n\n// file:src/parsing/sbgp.js\nBoxParser.createFullBoxCtor(\"sbgp\", \"SampleToGroupBox\", function(stream) {\n\tthis.grouping_type = stream.readString(4);\n\tif (this.version === 1) {\n\t\tthis.grouping_type_parameter = stream.readUint32();\n\t} else {\n\t\tthis.grouping_type_parameter = 0;\n\t}\n\tthis.entries = [];\n\tvar entry_count = stream.readUint32();\n\tfor (var i = 0; i < entry_count; i++) {\n\t\tvar entry = {};\n\t\tthis.entries.push(entry);\n\t\tentry.sample_count = stream.readInt32();\n\t\tentry.group_description_index = stream.readInt32();\n\t}\n});\n\n// file:src/parsing/sbpm.js\nfunction Pixel(row, col) {\n\tthis.bad_pixel_row = row;\n\tthis.bad_pixel_column = col;\n}\n\nPixel.prototype.toString = function pixelToString() {\n\treturn \"[row: \" + this.bad_pixel_row + \", column: \" + this.bad_pixel_column + \"]\";\n}\n\nBoxParser.createFullBoxCtor(\"sbpm\", \"SensorBadPixelsMapBox\", function(stream) {\n\tvar i;\n\tthis.component_count = stream.readUint16();\n this.component_index = [];\n for (i = 0; i < this.component_count; i++) {\n this.component_index.push(stream.readUint16());\n }\n\tvar flags = stream.readUint8();\n\tthis.correction_applied = (0x80 == (flags & 0x80));\n\tthis.num_bad_rows = stream.readUint32();\n\tthis.num_bad_cols = stream.readUint32();\n\tthis.num_bad_pixels = stream.readUint32();\n\tthis.bad_rows = [];\n\tthis.bad_columns = [];\n\tthis.bad_pixels = [];\n\tfor (i = 0; i < this.num_bad_rows; i++) {\n\t\tthis.bad_rows.push(stream.readUint32());\n\t}\n\tfor (i = 0; i < this.num_bad_cols; i++) {\n\t\tthis.bad_columns.push(stream.readUint32());\n\t}\n\tfor (i = 0; i < this.num_bad_pixels; i++) {\n\t\tvar row = stream.readUint32();\n\t\tvar col = stream.readUint32();\n\t\tthis.bad_pixels.push(new Pixel(row, col));\n\t}\n});\n\n// file:src/parsing/schm.js\nBoxParser.createFullBoxCtor(\"schm\", \"SchemeTypeBox\", function(stream) {\n\tthis.scheme_type = stream.readString(4);\n\tthis.scheme_version = stream.readUint32();\n\tif (this.flags & 0x000001) {\n\t\tthis.scheme_uri = stream.readString(this.size - this.hdr_size - 8);\n\t}\n});\n\n// file:src/parsing/sdp.js\nBoxParser.createBoxCtor(\"sdp \", \"rtptracksdphintinformation\", function(stream) {\n\tthis.sdptext = stream.readString(this.size - this.hdr_size);\n});\n\n// file:src/parsing/sdtp.js\nBoxParser.createFullBoxCtor(\"sdtp\", \"SampleDependencyTypeBox\", function(stream) {\n\tvar tmp_byte;\n\tvar count = (this.size - this.hdr_size);\n\tthis.is_leading = [];\n\tthis.sample_depends_on = [];\n\tthis.sample_is_depended_on = [];\n\tthis.sample_has_redundancy = [];\n\tfor (var i = 0; i < count; i++) {\n\t\ttmp_byte = stream.readUint8();\n\t\tthis.is_leading[i] = tmp_byte >> 6;\n\t\tthis.sample_depends_on[i] = (tmp_byte >> 4) & 0x3;\n\t\tthis.sample_is_depended_on[i] = (tmp_byte >> 2) & 0x3;\n\t\tthis.sample_has_redundancy[i] = tmp_byte & 0x3;\n\t}\n});\n\n// file:src/parsing/senc.js\n// Cannot be fully parsed because Per_Sample_IV_Size needs to be known\r\nBoxParser.createFullBoxCtor(\"senc\", \"SampleEncryptionBox\" /*, function(stream) {\r\n\tthis.parseFullHeader(stream);\r\n\tvar sample_count = stream.readUint32();\r\n\tthis.samples = [];\r\n\tfor (var i = 0; i < sample_count; i++) {\r\n\t\tvar sample = {};\r\n\t\t// tenc.default_Per_Sample_IV_Size or seig.Per_Sample_IV_Size\r\n\t\tsample.InitializationVector = this.readUint8Array(Per_Sample_IV_Size*8);\r\n\t\tif (this.flags & 0x2) {\r\n\t\t\tsample.subsamples = [];\r\n\t\t\tsubsample_count = stream.readUint16();\r\n\t\t\tfor (var j = 0; j < subsample_count; j++) {\r\n\t\t\t\tvar subsample = {};\r\n\t\t\t\tsubsample.BytesOfClearData = stream.readUint16();\r\n\t\t\t\tsubsample.BytesOfProtectedData = stream.readUint32();\r\n\t\t\t\tsample.subsamples.push(subsample);\r\n\t\t\t}\r\n\t\t}\r\n\t\t// TODO\r\n\t\tthis.samples.push(sample);\r\n\t}\r\n}*/);\r\n// file:src/parsing/sgpd.js\nBoxParser.createFullBoxCtor(\"sgpd\", \"SampleGroupDescriptionBox\", function(stream) {\n\tthis.grouping_type = stream.readString(4);\n\tLog.debug(\"BoxParser\", \"Found Sample Groups of type \"+this.grouping_type);\n\tif (this.version === 1) {\n\t\tthis.default_length = stream.readUint32();\n\t} else {\n\t\tthis.default_length = 0;\n\t}\n\tif (this.version >= 2) {\n\t\tthis.default_group_description_index = stream.readUint32();\n\t}\n\tthis.entries = [];\n\tvar entry_count = stream.readUint32();\n\tfor (var i = 0; i < entry_count; i++) {\n\t\tvar entry;\n\t\tif (BoxParser[this.grouping_type+\"SampleGroupEntry\"]) {\n\t\t\tentry = new BoxParser[this.grouping_type+\"SampleGroupEntry\"](this.grouping_type);\n\t\t} else {\n\t\t\tentry = new BoxParser.SampleGroupEntry(this.grouping_type);\n\t\t}\n\t\tthis.entries.push(entry);\n\t\tif (this.version === 1) {\n\t\t\tif (this.default_length === 0) {\n\t\t\t\tentry.description_length = stream.readUint32();\n\t\t\t} else {\n\t\t\t\tentry.description_length = this.default_length;\n\t\t\t}\n\t\t} else {\n\t\t\tentry.description_length = this.default_length;\n\t\t}\n\t\tif (entry.write === BoxParser.SampleGroupEntry.prototype.write) {\n\t\t\tLog.info(\"BoxParser\", \"SampleGroup for type \"+this.grouping_type+\" writing not yet implemented, keeping unparsed data in memory for later write\");\n\t\t\t// storing data\n\t\t\tentry.data = stream.readUint8Array(entry.description_length);\n\t\t\t// rewinding\n\t\t\tstream.position -= entry.description_length;\n\t\t}\n\t\tentry.parse(stream);\n\t}\n});\n\n// file:src/parsing/sidx.js\nBoxParser.createFullBoxCtor(\"sidx\", \"CompressedSegmentIndexBox\", function(stream) {\n\tthis.reference_ID = stream.readUint32();\n\tthis.timescale = stream.readUint32();\n\tif (this.version === 0) {\n\t\tthis.earliest_presentation_time = stream.readUint32();\n\t\tthis.first_offset = stream.readUint32();\n\t} else {\n\t\tthis.earliest_presentation_time = stream.readUint64();\n\t\tthis.first_offset = stream.readUint64();\n\t}\n\tstream.readUint16();\n\tthis.references = [];\n\tvar count = stream.readUint16();\n\tfor (var i = 0; i < count; i++) {\n\t\tvar ref = {};\n\t\tthis.references.push(ref);\n\t\tvar tmp_32 = stream.readUint32();\n\t\tref.reference_type = (tmp_32 >> 31) & 0x1;\n\t\tref.referenced_size = tmp_32 & 0x7FFFFFFF;\n\t\tref.subsegment_duration = stream.readUint32();\n\t\ttmp_32 = stream.readUint32();\n\t\tref.starts_with_SAP = (tmp_32 >> 31) & 0x1;\n\t\tref.SAP_type = (tmp_32 >> 28) & 0x7;\n\t\tref.SAP_delta_time = tmp_32 & 0xFFFFFFF;\n\t}\n});\n\n// file:src/parsing/singleitemtypereference.js\nBoxParser.SingleItemTypeReferenceBox = function(type, size, hdr_size, start) {\n\tBoxParser.Box.call(this, type, size);\n\tthis.hdr_size = hdr_size;\n\tthis.start = start;\n}\nBoxParser.SingleItemTypeReferenceBox.prototype = new BoxParser.Box();\nBoxParser.SingleItemTypeReferenceBox.prototype.parse = function(stream) {\n\tthis.from_item_ID = stream.readUint16();\n\tvar count = stream.readUint16();\n\tthis.references = [];\n\tfor(var i = 0; i < count; i++) {\n\t\tthis.references[i] = {};\n\t\tthis.references[i].to_item_ID = stream.readUint16();\n\t}\n}\n\n// file:src/parsing/singleitemtypereferencelarge.js\nBoxParser.SingleItemTypeReferenceBoxLarge = function(type, size, hdr_size, start) {\n\tBoxParser.Box.call(this, type, size);\n\tthis.hdr_size = hdr_size;\n\tthis.start = start;\n}\nBoxParser.SingleItemTypeReferenceBoxLarge.prototype = new BoxParser.Box();\nBoxParser.SingleItemTypeReferenceBoxLarge.prototype.parse = function(stream) {\n\tthis.from_item_ID = stream.readUint32();\n\tvar count = stream.readUint16();\n\tthis.references = [];\n\tfor(var i = 0; i < count; i++) {\n\t\tthis.references[i] = {};\n\t\tthis.references[i].to_item_ID = stream.readUint32();\n\t}\n}\n\n// file:src/parsing/SmDm.js\nBoxParser.createFullBoxCtor(\"SmDm\", \"SMPTE2086MasteringDisplayMetadataBox\", function(stream) {\n\tthis.primaryRChromaticity_x = stream.readUint16();\n this.primaryRChromaticity_y = stream.readUint16();\n this.primaryGChromaticity_x = stream.readUint16();\n this.primaryGChromaticity_y = stream.readUint16();\n this.primaryBChromaticity_x = stream.readUint16();\n this.primaryBChromaticity_y = stream.readUint16();\n this.whitePointChromaticity_x = stream.readUint16();\n this.whitePointChromaticity_y = stream.readUint16();\n this.luminanceMax = stream.readUint32();\n this.luminanceMin = stream.readUint32();\n});\n\n// file:src/parsing/smhd.js\nBoxParser.createFullBoxCtor(\"smhd\", \"SoundMediaHeaderBox\", function(stream) {\n\tthis.balance = stream.readUint16();\n\tstream.readUint16();\n});\n\n// file:src/parsing/ssix.js\nBoxParser.createFullBoxCtor(\"ssix\", \"CompressedSubsegmentIndexBox\", function(stream) {\n\tthis.subsegments = [];\n\tvar subsegment_count = stream.readUint32();\n\tfor (var i = 0; i < subsegment_count; i++) {\n\t\tvar subsegment = {};\n\t\tthis.subsegments.push(subsegment);\n\t\tsubsegment.ranges = [];\n\t\tvar range_count = stream.readUint32();\n\t\tfor (var j = 0; j < range_count; j++) {\n\t\t\tvar range = {};\n\t\t\tsubsegment.ranges.push(range);\n\t\t\trange.level = stream.readUint8();\n\t\t\trange.range_size = stream.readUint24();\n\t\t}\n\t}\n});\n\n// file:src/parsing/stco.js\nBoxParser.createFullBoxCtor(\"stco\", \"ChunkOffsetBox\", function(stream) {\n\tvar entry_count;\n\tentry_count = stream.readUint32();\n\tthis.chunk_offsets = [];\n\tif (this.version === 0) {\n\t\tfor (var i = 0; i < entry_count; i++) {\n\t\t\tthis.chunk_offsets.push(stream.readUint32());\n\t\t}\n\t}\n});\n\n// file:src/parsing/stdp.js\nBoxParser.createFullBoxCtor(\"stdp\", \"DegradationPriorityBox\", function(stream) {\n\tvar count = (this.size - this.hdr_size)/2;\n\tthis.priority = [];\n\tfor (var i = 0; i < count; i++) {\n\t\tthis.priority[i] = stream.readUint16();\n\t}\n});\n\n// file:src/parsing/sthd.js\nBoxParser.createFullBoxCtor(\"sthd\", \"SubtitleMediaHeaderBox\");\n\n// file:src/parsing/stri.js\nBoxParser.createFullBoxCtor(\"stri\", \"SubTrackInformationBox\", function(stream) {\n\tthis.switch_group = stream.readUint16();\n\tthis.alternate_group = stream.readUint16();\n\tthis.sub_track_id = stream.readUint32();\n\tvar count = (this.size - this.hdr_size - 8)/4;\n\tthis.attribute_list = [];\n\tfor (var i = 0; i < count; i++) {\n\t\tthis.attribute_list[i] = stream.readUint32();\n\t}\n});\n\n// file:src/parsing/stsc.js\nBoxParser.createFullBoxCtor(\"stsc\", \"SampleToChunkBox\", function(stream) {\n\tvar entry_count;\n\tvar i;\n\tentry_count = stream.readUint32();\n\tthis.first_chunk = [];\n\tthis.samples_per_chunk = [];\n\tthis.sample_description_index = [];\n\tif (this.version === 0) {\n\t\tfor(i=0; i<entry_count; i++) {\n\t\t\tthis.first_chunk.push(stream.readUint32());\n\t\t\tthis.samples_per_chunk.push(stream.readUint32());\n\t\t\tthis.sample_description_index.push(stream.readUint32());\n\t\t}\n\t}\n});\n\n// file:src/parsing/stsd.js\nBoxParser.createFullBoxCtor(\"stsd\", \"SampleDescriptionBox\", function(stream) {\n\tvar i;\n\tvar ret;\n\tvar entryCount;\n\tvar box;\n\tthis.entries = [];\n\tentryCount = stream.readUint32();\n\tfor (i = 1; i <= entryCount; i++) {\n\t\tret = BoxParser.parseOneBox(stream, true, this.size - (stream.getPosition() - this.start));\n\t\tif (ret.code === BoxParser.OK) {\n\t\t\tif (BoxParser[ret.type+\"SampleEntry\"]) {\n\t\t\t\tbox = new BoxParser[ret.type+\"SampleEntry\"](ret.size);\n\t\t\t\tbox.hdr_size = ret.hdr_size;\n\t\t\t\tbox.start = ret.start;\n\t\t\t} else {\n\t\t\t\tLog.warn(\"BoxParser\", \"Unknown sample entry type: \"+ret.type);\n\t\t\t\tbox = new BoxParser.SampleEntry(ret.type, ret.size, ret.hdr_size, ret.start);\n\t\t\t}\n\t\t\tif (box.write === BoxParser.SampleEntry.prototype.write) {\n\t\t\t\tLog.info(\"BoxParser\", \"SampleEntry \"+box.type+\" box writing not yet implemented, keeping unparsed data in memory for later write\");\n\t\t\t\tbox.parseDataAndRewind(stream);\n\t\t\t}\n\t\t\tbox.parse(stream);\n\t\t\tthis.entries.push(box);\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\t}\n});\n\n// file:src/parsing/stsg.js\nBoxParser.createFullBoxCtor(\"stsg\", \"SubTrackSampleGroupBox\", function(stream) {\n\tthis.grouping_type = stream.readUint32();\n\tvar count = stream.readUint16();\n\tthis.group_description_index = [];\n\tfor (var i = 0; i < count; i++) {\n\t\tthis.group_description_index[i] = stream.readUint32();\n\t}\n});\n\n// file:src/parsing/stsh.js\nBoxParser.createFullBoxCtor(\"stsh\", \"ShadowSyncSampleBox\", function(stream) {\n\tvar entry_count;\n\tvar i;\n\tentry_count = stream.readUint32();\n\tthis.shadowed_sample_numbers = [];\n\tthis.sync_sample_numbers = [];\n\tif (this.version === 0) {\n\t\tfor(i=0; i<entry_count; i++) {\n\t\t\tthis.shadowed_sample_numbers.push(stream.readUint32());\n\t\t\tthis.sync_sample_numbers.push(stream.readUint32());\n\t\t}\n\t}\n});\n\n// file:src/parsing/stss.js\nBoxParser.createFullBoxCtor(\"stss\", \"SyncSampleBox\", function(stream) {\n\tvar i;\n\tvar entry_count;\n\tentry_count = stream.readUint32();\n\tif (this.version === 0) {\n\t\tthis.sample_numbers = [];\n\t\tfor(i=0; i<entry_count; i++) {\n\t\t\tthis.sample_numbers.push(stream.readUint32());\n\t\t}\n\t}\n});\n\n// file:src/parsing/stsz.js\nBoxParser.createFullBoxCtor(\"stsz\", \"SampleSizeBox\", function(stream) {\n\tvar i;\n\tthis.sample_sizes = [];\n\tif (this.version === 0) {\n\t\tthis.sample_size = stream.readUint32();\n\t\tthis.sample_count = stream.readUint32();\n\t\tfor (i = 0; i < this.sample_count; i++) {\n\t\t\tif (this.sample_size === 0) {\n\t\t\t\tthis.sample_sizes.push(stream.readUint32());\n\t\t\t} else {\n\t\t\t\tthis.sample_sizes[i] = this.sample_size;\n\t\t\t}\n\t\t}\n\t}\n});\n\n// file:src/parsing/stts.js\nBoxParser.createFullBoxCtor(\"stts\", \"TimeToSampleBox\", function(stream) {\n\tvar entry_count;\n\tvar i;\n\tvar delta;\n\tentry_count = stream.readUint32();\n\tthis.sample_counts = [];\n\tthis.sample_deltas = [];\n\tif (this.version === 0) {\n\t\tfor(i=0; i<entry_count; i++) {\n\t\t\tthis.sample_counts.push(stream.readUint32());\n\t\t\tdelta = stream.readInt32();\n\t\t\tif (delta < 0) {\n\t\t\t\tLog.warn(\"BoxParser\", \"File uses negative stts sample delta, using value 1 instead, sync may be lost!\");\n\t\t\t\tdelta = 1;\n\t\t\t}\n\t\t\tthis.sample_deltas.push(delta);\n\t\t}\n\t}\n});\n\n// file:src/parsing/stvi.js\nBoxParser.createFullBoxCtor(\"stvi\", \"StereoVideoBox\", function(stream) {\n\tvar tmp32 = stream.readUint32();\n\tthis.single_view_allowed = tmp32 & 0x3;\n\tthis.stereo_scheme = stream.readUint32();\n\tvar length = stream.readUint32();\n\tthis.stereo_indication_type = stream.readString(length);\n\tvar ret;\n\tvar box;\n\tthis.boxes = [];\n\twhile (stream.getPosition() < this.start+this.size) {\n\t\tret = BoxParser.parseOneBox(stream, false, this.size - (stream.getPosition() - this.start));\n\t\tif (ret.code === BoxParser.OK) {\n\t\t\tbox = ret.box;\n\t\t\tthis.boxes.push(box);\n\t\t\tthis[box.type] = box;\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\t}\n});\n\n// file:src/parsing/styp.js\nBoxParser.createBoxCtor(\"styp\", \"SegmentTypeBox\", function(stream) {\n\tBoxParser.ftypBox.prototype.parse.call(this, stream);\n});\n\n// file:src/parsing/stz2.js\nBoxParser.createFullBoxCtor(\"stz2\", \"CompactSampleSizeBox\", function(stream) {\n\tvar i;\n\tvar sample_size;\n\tvar sample_count;\n\tthis.sample_sizes = [];\n\tif (this.version === 0) {\n\t\tthis.reserved = stream.readUint24();\n\t\tthis.field_size = stream.readUint8();\n\t\tsample_count = stream.readUint32();\n\t\tif (this.field_size === 4) {\n\t\t\tfor (i = 0; i < sample_count; i+=2) {\n\t\t\t\tvar tmp = stream.readUint8();\n\t\t\t\tthis.sample_sizes[i] = (tmp >> 4) & 0xF;\n\t\t\t\tthis.sample_sizes[i+1] = tmp & 0xF;\n\t\t\t}\n\t\t} else if (this.field_size === 8) {\n\t\t\tfor (i = 0; i < sample_count; i++) {\n\t\t\t\tthis.sample_sizes[i] = stream.readUint8();\n\t\t\t}\n\t\t} else if (this.field_size === 16) {\n\t\t\tfor (i = 0; i < sample_count; i++) {\n\t\t\t\tthis.sample_sizes[i] = stream.readUint16();\n\t\t\t}\n\t\t} else {\n\t\t\tLog.error(\"BoxParser\", \"Error in length field in stz2 box\");\n\t\t}\n\t}\n});\n\n// file:src/parsing/subs.js\nBoxParser.createFullBoxCtor(\"subs\", \"SubSampleInformationBox\", function(stream) {\n\tvar i,j;\n\tvar entry_count;\n\tvar subsample_count;\n\tentry_count = stream.readUint32();\n\tthis.entries = [];\n\tfor (i = 0; i < entry_count; i++) {\n\t\tvar sampleInfo = {};\n\t\tthis.entries[i] = sampleInfo;\n\t\tsampleInfo.sample_delta = stream.readUint32();\n\t\tsampleInfo.subsamples = [];\n\t\tsubsample_count = stream.readUint16();\n\t\tif (subsample_count>0) {\n\t\t\tfor (j = 0; j < subsample_count; j++) {\n\t\t\t\tvar subsample = {};\n\t\t\t\tsampleInfo.subsamples.push(subsample);\n\t\t\t\tif (this.version == 1) {\n\t\t\t\t\tsubsample.size = stream.readUint32();\n\t\t\t\t} else {\n\t\t\t\t\tsubsample.size = stream.readUint16();\n\t\t\t\t}\n\t\t\t\tsubsample.priority = stream.readUint8();\n\t\t\t\tsubsample.discardable = stream.readUint8();\n\t\t\t\tsubsample.codec_specific_parameters = stream.readUint32();\n\t\t\t}\n\t\t}\n\t}\n});\n\n// file:src/parsing/tenc.js\nBoxParser.createFullBoxCtor(\"tenc\", \"TrackEncryptionBox\", function(stream) {\n\tstream.readUint8(); // reserved\n\tif (this.version === 0) {\n\t\tstream.readUint8();\n\t} else {\n\t\tvar tmp = stream.readUint8();\n\t\tthis.default_crypt_byte_block = (tmp >> 4) & 0xF;\n\t\tthis.default_skip_byte_block = tmp & 0xF;\n\t}\n\tthis.default_isProtected = stream.readUint8();\n\tthis.default_Per_Sample_IV_Size = stream.readUint8();\n\tthis.default_KID = BoxParser.parseHex16(stream);\n\tif (this.default_isProtected === 1 && this.default_Per_Sample_IV_Size === 0) {\n\t\tthis.default_constant_IV_size = stream.readUint8();\n\t\tthis.default_constant_IV = stream.readUint8Array(this.default_constant_IV_size);\n\t}\n});// file:src/parsing/tfdt.js\nBoxParser.createFullBoxCtor(\"tfdt\", \"TrackFragmentBaseMediaDecodeTimeBox\", function(stream) {\n\tif (this.version == 1) {\n\t\tthis.baseMediaDecodeTime = stream.readUint64();\n\t} else {\n\t\tthis.baseMediaDecodeTime = stream.readUint32();\n\t}\n});\n\n// file:src/parsing/tfhd.js\nBoxParser.createFullBoxCtor(\"tfhd\", \"TrackFragmentHeaderBox\", function(stream) {\n\tvar readBytes = 0;\n\tthis.track_id = stream.readUint32();\n\tif (this.size - this.hdr_size > readBytes && (this.flags & BoxParser.TFHD_FLAG_BASE_DATA_OFFSET)) {\n\t\tthis.base_data_offset = stream.readUint64();\n\t\treadBytes += 8;\n\t} else {\n\t\tthis.base_data_offset = 0;\n\t}\n\tif (this.size - this.hdr_size > readBytes && (this.flags & BoxParser.TFHD_FLAG_SAMPLE_DESC)) {\n\t\tthis.default_sample_description_index = stream.readUint32();\n\t\treadBytes += 4;\n\t} else {\n\t\tthis.default_sample_description_index = 0;\n\t}\n\tif (this.size - this.hdr_size > readBytes && (this.flags & BoxParser.TFHD_FLAG_SAMPLE_DUR)) {\n\t\tthis.default_sample_duration = stream.readUint32();\n\t\treadBytes += 4;\n\t} else {\n\t\tthis.default_sample_duration = 0;\n\t}\n\tif (this.size - this.hdr_size > readBytes && (this.flags & BoxParser.TFHD_FLAG_SAMPLE_SIZE)) {\n\t\tthis.default_sample_size = stream.readUint32();\n\t\treadBytes += 4;\n\t} else {\n\t\tthis.default_sample_size = 0;\n\t}\n\tif (this.size - this.hdr_size > readBytes && (this.flags & BoxParser.TFHD_FLAG_SAMPLE_FLAGS)) {\n\t\tthis.default_sample_flags = stream.readUint32();\n\t\treadBytes += 4;\n\t} else {\n\t\tthis.default_sample_flags = 0;\n\t}\n});\n\n// file:src/parsing/tfra.js\nBoxParser.createFullBoxCtor(\"tfra\", \"TrackFragmentRandomAccessBox\", function(stream) {\n\tthis.track_ID = stream.readUint32();\n\tstream.readUint24();\n\tvar tmp_byte = stream.readUint8();\n\tthis.length_size_of_traf_num = (tmp_byte >> 4) & 0x3;\n\tthis.length_size_of_trun_num = (tmp_byte >> 2) & 0x3;\n\tthis.length_size_of_sample_num = (tmp_byte) & 0x3;\n\tthis.entries = [];\n\tvar number_of_entries = stream.readUint32();\n\tfor (var i = 0; i < number_of_entries; i++) {\n\t\tif (this.version === 1) {\n\t\t\tthis.time = stream.readUint64();\n\t\t\tthis.moof_offset = stream.readUint64();\n\t\t} else {\n\t\t\tthis.time = stream.readUint32();\n\t\t\tthis.moof_offset = stream.readUint32();\n\t\t}\n\t\tthis.traf_number = stream[\"readUint\"+(8*(this.length_size_of_traf_num+1))]();\n\t\tthis.trun_number = stream[\"readUint\"+(8*(this.length_size_of_trun_num+1))]();\n\t\tthis.sample_number = stream[\"readUint\"+(8*(this.length_size_of_sample_num+1))]();\n\t}\n});\n\n// file:src/parsing/tkhd.js\nBoxParser.createFullBoxCtor(\"tkhd\", \"TrackHeaderBox\", function(stream) {\n\tif (this.version == 1) {\n\t\tthis.creation_time = stream.readUint64();\n\t\tthis.modification_time = stream.readUint64();\n\t\tthis.track_id = stream.readUint32();\n\t\tstream.readUint32();\n\t\tthis.duration = stream.readUint64();\n\t} else {\n\t\tthis.creation_time = stream.readUint32();\n\t\tthis.modification_time = stream.readUint32();\n\t\tthis.track_id = stream.readUint32();\n\t\tstream.readUint32();\n\t\tthis.duration = stream.readUint32();\n\t}\n\tstream.readUint32Array(2);\n\tthis.layer = stream.readInt16();\n\tthis.alternate_group = stream.readInt16();\n\tthis.volume = stream.readInt16()>>8;\n\tstream.readUint16();\n\tthis.matrix = stream.readInt32Array(9);\n\tthis.width = stream.readUint32();\n\tthis.height = stream.readUint32();\n});\n\n// file:src/parsing/tmax.js\nBoxParser.createBoxCtor(\"tmax\", \"hintmaxrelativetime\", function(stream) {\n\tthis.time = stream.readUint32();\n});\n\n// file:src/parsing/tmin.js\nBoxParser.createBoxCtor(\"tmin\", \"hintminrelativetime\", function(stream) {\n\tthis.time = stream.readUint32();\n});\n\n// file:src/parsing/totl.js\nBoxParser.createBoxCtor(\"totl\", \"hintBytesSent\", function(stream) {\n\tthis.bytessent = stream.readUint32();\n});\n\n// file:src/parsing/tpay.js\nBoxParser.createBoxCtor(\"tpay\", \"hintBytesSent\", function(stream) {\n\tthis.bytessent = stream.readUint32();\n});\n\n// file:src/parsing/tpyl.js\nBoxParser.createBoxCtor(\"tpyl\", \"hintBytesSent\", function(stream) {\n\tthis.bytessent = stream.readUint64();\n});\n\n// file:src/parsing/TrackGroup.js\nBoxParser.TrackGroupTypeBox.prototype.parse = function(stream) {\n\tthis.parseFullHeader(stream);\n\tthis.track_group_id = stream.readUint32();\n}\n\n// file:src/parsing/trackgroups/msrc.js\nBoxParser.createTrackGroupCtor(\"msrc\");// file:src/parsing/TrakReference.js\nBoxParser.TrackReferenceTypeBox = function(type, size, hdr_size, start) {\n\tBoxParser.Box.call(this, type, size);\n\tthis.hdr_size = hdr_size;\n\tthis.start = start;\n}\nBoxParser.TrackReferenceTypeBox.prototype = new BoxParser.Box();\nBoxParser.TrackReferenceTypeBox.prototype.parse = function(stream) {\n\tthis.track_ids = stream.readUint32Array((this.size-this.hdr_size)/4);\n}\n\n// file:src/parsing/tref.js\nBoxParser.trefBox.prototype.parse = function(stream) {\n\tvar ret;\n\tvar box;\n\twhile (stream.getPosition() < this.start+this.size) {\n\t\tret = BoxParser.parseOneBox(stream, true, this.size - (stream.getPosition() - this.start));\n\t\tif (ret.code === BoxParser.OK) {\n\t\t\tbox = new BoxParser.TrackReferenceTypeBox(ret.type, ret.size, ret.hdr_size, ret.start);\n\t\t\tif (box.write === BoxParser.Box.prototype.write && box.type !== \"mdat\") {\n\t\t\t\tLog.info(\"BoxParser\", \"TrackReference \"+box.type+\" box writing not yet implemented, keeping unparsed data in memory for later write\");\n\t\t\t\tbox.parseDataAndRewind(stream);\n\t\t\t}\n\t\t\tbox.parse(stream);\n\t\t\tthis.boxes.push(box);\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\t}\n}\n\n// file:src/parsing/trep.js\nBoxParser.createFullBoxCtor(\"trep\", \"TrackExtensionPropertiesBox\", function(stream) {\n\tthis.track_ID = stream.readUint32();\n\tthis.boxes = [];\n\twhile (stream.getPosition() < this.start+this.size) {\n\t\tret = BoxParser.parseOneBox(stream, false, this.size - (stream.getPosition() - this.start));\n\t\tif (ret.code === BoxParser.OK) {\n\t\t\tbox = ret.box;\n\t\t\tthis.boxes.push(box);\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\t}\n});\n\n// file:src/parsing/trex.js\nBoxParser.createFullBoxCtor(\"trex\", \"TrackExtendsBox\", function(stream) {\n\tthis.track_id = stream.readUint32();\n\tthis.default_sample_description_index = stream.readUint32();\n\tthis.default_sample_duration = stream.readUint32();\n\tthis.default_sample_size = stream.readUint32();\n\tthis.default_sample_flags = stream.readUint32();\n});\n\n// file:src/parsing/trpy.js\nBoxParser.createBoxCtor(\"trpy\", \"hintBytesSent\", function(stream) {\n\tthis.bytessent = stream.readUint64();\n});\n\n// file:src/parsing/trun.js\nBoxParser.createFullBoxCtor(\"trun\", \"TrackRunBox\", function(stream) {\n\tvar readBytes = 0;\n\tthis.sample_count = stream.readUint32();\n\treadBytes+= 4;\n\tif (this.size - this.hdr_size > readBytes && (this.flags & BoxParser.TRUN_FLAGS_DATA_OFFSET) ) {\n\t\tthis.data_offset = stream.readInt32(); //signed\n\t\treadBytes += 4;\n\t} else {\n\t\tthis.data_offset = 0;\n\t}\n\tif (this.size - this.hdr_size > readBytes && (this.flags & BoxParser.TRUN_FLAGS_FIRST_FLAG) ) {\n\t\tthis.first_sample_flags = stream.readUint32();\n\t\treadBytes += 4;\n\t} else {\n\t\tthis.first_sample_flags = 0;\n\t}\n\tthis.sample_duration = [];\n\tthis.sample_size = [];\n\tthis.sample_flags = [];\n\tthis.sample_composition_time_offset = [];\n\tif (this.size - this.hdr_size > readBytes) {\n\t\tfor (var i = 0; i < this.sample_count; i++) {\n\t\t\tif (this.flags & BoxParser.TRUN_FLAGS_DURATION) {\n\t\t\t\tthis.sample_duration[i] = stream.readUint32();\n\t\t\t}\n\t\t\tif (this.flags & BoxParser.TRUN_FLAGS_SIZE) {\n\t\t\t\tthis.sample_size[i] = stream.readUint32();\n\t\t\t}\n\t\t\tif (this.flags & BoxParser.TRUN_FLAGS_FLAGS) {\n\t\t\t\tthis.sample_flags[i] = stream.readUint32();\n\t\t\t}\n\t\t\tif (this.flags & BoxParser.TRUN_FLAGS_CTS_OFFSET) {\n\t\t\t\tif (this.version === 0) {\n\t\t\t\t\tthis.sample_composition_time_offset[i] = stream.readUint32();\n\t\t\t\t} else {\n\t\t\t\t\tthis.sample_composition_time_offset[i] = stream.readInt32(); //signed\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n});\n\n// file:src/parsing/tsel.js\nBoxParser.createFullBoxCtor(\"tsel\", \"TrackSelectionBox\", function(stream) {\n\tthis.switch_group = stream.readUint32();\n\tvar count = (this.size - this.hdr_size - 4)/4;\n\tthis.attribute_list = [];\n\tfor (var i = 0; i < count; i++) {\n\t\tthis.attribute_list[i] = stream.readUint32();\n\t}\n});\n\n// file:src/parsing/txtC.js\nBoxParser.createFullBoxCtor(\"txtC\", \"TextConfigBox\", function(stream) {\n\tthis.config = stream.readCString();\n});\n\n// file:src/parsing/tyco.js\nBoxParser.createBoxCtor(\"tyco\", \"TypeCombinationBox\", function(stream) {\n\tvar count = (this.size - this.hdr_size) / 4;\n\tthis.compatible_brands = [];\n\tfor (var i = 0; i < count; i++) {\n\t\tthis.compatible_brands[i] = stream.readString(4);\n\t}\n});\n\n// file:src/parsing/udes.js\nBoxParser.createFullBoxCtor(\"udes\", \"UserDescriptionProperty\", function(stream) {\n\tthis.lang = stream.readCString();\n\tthis.name = stream.readCString();\n\tthis.description = stream.readCString();\n\tthis.tags = stream.readCString();\n});\n\n// file:src/parsing/uncC.js\nBoxParser.createFullBoxCtor(\"uncC\", \"UncompressedFrameConfigBox\", function(stream) {\n var i;\n this.profile = stream.readString(4);\n if (this.version == 1) {\n // Nothing - just the profile\n } else if (this.version == 0) {\n this.component_count = stream.readUint32();\n this.component_index = [];\n this.component_bit_depth_minus_one = [];\n this.component_format = [];\n this.component_align_size = [];\n for (i = 0; i < this.component_count; i++) {\n this.component_index.push(stream.readUint16());\n this.component_bit_depth_minus_one.push(stream.readUint8());\n this.component_format.push(stream.readUint8());\n this.component_align_size.push(stream.readUint8());\n }\n this.sampling_type = stream.readUint8();\n this.interleave_type = stream.readUint8();\n this.block_size = stream.readUint8();\n var flags = stream.readUint8();\n this.component_little_endian = (flags >> 7) & 0x1;\n this.block_pad_lsb = (flags >> 6) & 0x1;\n this.block_little_endian = (flags >> 5) & 0x1;\n this.block_reversed = (flags >> 4) & 0x1;\n this.pad_unknown = (flags >> 3) & 0x1;\n this.pixel_size = stream.readUint32();\n this.row_align_size = stream.readUint32();\n this.tile_align_size = stream.readUint32();\n this.num_tile_cols_minus_one = stream.readUint32();\n this.num_tile_rows_minus_one = stream.readUint32();\n }\n});\n\n// file:src/parsing/url.js\nBoxParser.createFullBoxCtor(\"url \", \"DataEntryUrlBox\", function(stream) {\n\tif (this.flags !== 0x000001) {\n\t\tthis.location = stream.readCString();\n\t}\n});\n\n// file:src/parsing/urn.js\nBoxParser.createFullBoxCtor(\"urn \", \"DataEntryUrnBox\", function(stream) {\n\tthis.name = stream.readCString();\n\tif (this.size - this.hdr_size - this.name.length - 1 > 0) {\n\t\tthis.location = stream.readCString();\n\t}\n});\n\n// file:src/parsing/uuid/piff/piffLsm.js\nBoxParser.createUUIDBox(\"a5d40b30e81411ddba2f0800200c9a66\", \"LiveServerManifestBox\", true, false, function(stream) {\n this.LiveServerManifest = stream.readString(this.size - this.hdr_size)\n .replace(/&/g, \"&amp;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\")\n .replace(/\"/g, \"&quot;\")\n .replace(/'/g, \"&#039;\");\n});// file:src/parsing/uuid/piff/piffPssh.js\nBoxParser.createUUIDBox(\"d08a4f1810f34a82b6c832d8aba183d3\", \"PiffProtectionSystemSpecificHeaderBox\", true, false, function(stream) {\n\tthis.system_id = BoxParser.parseHex16(stream);\n\tvar datasize = stream.readUint32();\n\tif (datasize > 0) {\n\t\tthis.data = stream.readUint8Array(datasize);\n\t}\n});\n\n// file:src/parsing/uuid/piff/piffSenc.js\nBoxParser.createUUIDBox(\"a2394f525a9b4f14a2446c427c648df4\", \"PiffSampleEncryptionBox\", true, false /*, function(stream) {\n\tif (this.flags & 0x1) {\n\t\tthis.AlgorithmID = stream.readUint24();\n\t\tthis.IV_size = stream.readUint8();\n\t\tthis.KID = BoxParser.parseHex16(stream);\n\t}\n\tvar sample_count = stream.readUint32();\n\tthis.samples = [];\n\tfor (var i = 0; i < sample_count; i++) {\n\t\tvar sample = {};\n\t\tsample.InitializationVector = this.readUint8Array(this.IV_size*8);\n\t\tif (this.flags & 0x2) {\n\t\t\tsample.subsamples = [];\n\t\t\tsample.NumberOfEntries = stream.readUint16();\n\t\t\tfor (var j = 0; j < sample.NumberOfEntries; j++) {\n\t\t\t\tvar subsample = {};\n\t\t\t\tsubsample.BytesOfClearData = stream.readUint16();\n\t\t\t\tsubsample.BytesOfProtectedData = stream.readUint32();\n\t\t\t\tsample.subsamples.push(subsample);\n\t\t\t}\n\t\t}\n\t\tthis.samples.push(sample);\n\t}\n}*/);\n// file:src/parsing/uuid/piff/piffTenc.js\nBoxParser.createUUIDBox(\"8974dbce7be74c5184f97148f9882554\", \"PiffTrackEncryptionBox\", true, false, function(stream) {\n\tthis.default_AlgorithmID = stream.readUint24();\n\tthis.default_IV_size = stream.readUint8();\n\tthis.default_KID = BoxParser.parseHex16(stream);\n});// file:src/parsing/uuid/piff/piffTfrf.js\nBoxParser.createUUIDBox(\"d4807ef2ca3946958e5426cb9e46a79f\", \"TfrfBox\", true, false, function(stream) {\n this.fragment_count = stream.readUint8();\n this.entries = [];\n\n for (var i = 0; i < this.fragment_count; i++) {\n var entry = {};\n var absolute_time = 0;\n var absolute_duration = 0;\n\n if (this.version === 1) {\n absolute_time = stream.readUint64();\n absolute_duration = stream.readUint64();\n } else {\n absolute_time = stream.readUint32();\n absolute_duration = stream.readUint32();\n }\n\n entry.absolute_time = absolute_time;\n entry.absolute_duration = absolute_duration;\n\n this.entries.push(entry);\n }\n});// file:src/parsing/uuid/piff/piffTfxd.js\nBoxParser.createUUIDBox(\"6d1d9b0542d544e680e2141daff757b2\", \"TfxdBox\", true, false, function(stream) {\n if (this.version === 1) {\n this.absolute_time = stream.readUint64();\n this.duration = stream.readUint64();\n } else {\n this.absolute_time = stream.readUint32();\n this.duration = stream.readUint32();\n }\n});// file:src/parsing/vmhd.js\nBoxParser.createFullBoxCtor(\"vmhd\", \"VideoMediaHeaderBox\", function(stream) {\n\tthis.graphicsmode = stream.readUint16();\n\tthis.opcolor = stream.readUint16Array(3);\n});\n\n// file:src/parsing/vpcC.js\nBoxParser.createFullBoxCtor(\"vpcC\", \"VPCodecConfigurationRecord\", function (stream) {\n\tvar tmp;\n\tif (this.version === 1) {\n\t\tthis.profile = stream.readUint8();\n\t\tthis.level = stream.readUint8();\n\t\ttmp = stream.readUint8();\n\t\tthis.bitDepth = tmp >> 4;\n\t\tthis.chromaSubsampling = (tmp >> 1) & 0x7;\n\t\tthis.videoFullRangeFlag = tmp & 0x1;\n\t\tthis.colourPrimaries = stream.readUint8();\n\t\tthis.transferCharacteristics = stream.readUint8();\n\t\tthis.matrixCoefficients = stream.readUint8();\n\t\tthis.codecIntializationDataSize = stream.readUint16();\n\t\tthis.codecIntializationData = stream.readUint8Array(this.codecIntializationDataSize);\n\t} else {\n\t\tthis.profile = stream.readUint8();\n\t\tthis.level = stream.readUint8();\n\t\ttmp = stream.readUint8();\n\t\tthis.bitDepth = (tmp >> 4) & 0xF;\n\t\tthis.colorSpace = tmp & 0xF;\n\t\ttmp = stream.readUint8();\n\t\tthis.chromaSubsampling = (tmp >> 4) & 0xF;\n\t\tthis.transferFunction = (tmp >> 1) & 0x7;\n\t\tthis.videoFullRangeFlag = tmp & 0x1;\n\t\tthis.codecIntializationDataSize = stream.readUint16();\n\t\tthis.codecIntializationData = stream.readUint8Array(this.codecIntializationDataSize);\n\t}\n});// file:src/parsing/vttC.js\nBoxParser.createBoxCtor(\"vttC\", \"WebVTTConfigurationBox\", function(stream) {\n\tthis.text = stream.readString(this.size - this.hdr_size);\n});\n\n// file:src/parsing/vvcC.js\nBoxParser.createFullBoxCtor(\"vvcC\", \"VvcConfigurationBox\", function (stream) {\n var i, j;\n\n // helper object to simplify extracting individual bits\n var bitReader = {\n held_bits: undefined,\n num_held_bits: 0,\n\n stream_read_1_bytes: function (strm) {\n this.held_bits = strm.readUint8();\n this.num_held_bits = 1 * 8;\n },\n stream_read_2_bytes: function (strm) {\n this.held_bits = strm.readUint16();\n this.num_held_bits = 2 * 8;\n },\n\n extract_bits: function (num_bits) {\n var ret = (this.held_bits >> (this.num_held_bits - num_bits)) & ((1 << num_bits) - 1);\n this.num_held_bits -= num_bits;\n return ret;\n }\n };\n\n // VvcDecoderConfigurationRecord\n bitReader.stream_read_1_bytes(stream);\n bitReader.extract_bits(5); // reserved\n this.lengthSizeMinusOne = bitReader.extract_bits(2);\n this.ptl_present_flag = bitReader.extract_bits(1);\n\n if (this.ptl_present_flag) {\n bitReader.stream_read_2_bytes(stream);\n this.ols_idx = bitReader.extract_bits(9);\n this.num_sublayers = bitReader.extract_bits(3);\n this.constant_frame_rate = bitReader.extract_bits(2);\n this.chroma_format_idc = bitReader.extract_bits(2);\n\n bitReader.stream_read_1_bytes(stream);\n this.bit_depth_minus8 = bitReader.extract_bits(3);\n bitReader.extract_bits(5); // reserved\n\n // VvcPTLRecord\n {\n bitReader.stream_read_2_bytes(stream);\n bitReader.extract_bits(2); // reserved\n this.num_bytes_constraint_info = bitReader.extract_bits(6);\n this.general_profile_idc = bitReader.extract_bits(7);\n this.general_tier_flag = bitReader.extract_bits(1);\n\n this.general_level_idc = stream.readUint8();\n\n bitReader.stream_read_1_bytes(stream);\n this.ptl_frame_only_constraint_flag = bitReader.extract_bits(1);\n this.ptl_multilayer_enabled_flag = bitReader.extract_bits(1);\n\n this.general_constraint_info = new Uint8Array(this.num_bytes_constraint_info);\n if (this.num_bytes_constraint_info) {\n for (i = 0; i < this.num_bytes_constraint_info - 1; i++) {\n var cnstr1 = bitReader.extract_bits(6);\n bitReader.stream_read_1_bytes(stream);\n var cnstr2 = bitReader.extract_bits(2);\n\n this.general_constraint_info[i] = ((cnstr1 << 2) | cnstr2);\n }\n this.general_constraint_info[this.num_bytes_constraint_info - 1] = bitReader.extract_bits(6);\n } else {\n //forbidden in spec!\n bitReader.extract_bits(6);\n }\n\n if (this.num_sublayers > 1) {\n bitReader.stream_read_1_bytes(stream);\n this.ptl_sublayer_present_mask = 0;\n for (j = this.num_sublayers - 2; j >= 0; --j) {\n var val = bitReader.extract_bits(1);\n this.ptl_sublayer_present_mask |= val << j;\n }\n for (j = this.num_sublayers; j <= 8 && this.num_sublayers > 1; ++j) {\n bitReader.extract_bits(1); // ptl_reserved_zero_bit\n }\n\n this.sublayer_level_idc = [];\n for (j = this.num_sublayers - 2; j >= 0; --j) {\n if (this.ptl_sublayer_present_mask & (1 << j)) {\n this.sublayer_level_idc[j] = stream.readUint8();\n }\n }\n }\n\n this.ptl_num_sub_profiles = stream.readUint8();\n this.general_sub_profile_idc = [];\n if (this.ptl_num_sub_profiles) {\n for (i = 0; i < this.ptl_num_sub_profiles; i++) {\n this.general_sub_profile_idc.push(stream.readUint32());\n }\n }\n } // end VvcPTLRecord\n\n this.max_picture_width = stream.readUint16();\n this.max_picture_height = stream.readUint16();\n this.avg_frame_rate = stream.readUint16();\n }\n\n var VVC_NALU_OPI = 12;\n var VVC_NALU_DEC_PARAM = 13;\n\n this.nalu_arrays = [];\n var num_of_arrays = stream.readUint8();\n for (i = 0; i < num_of_arrays; i++) {\n var nalu_array = [];\n this.nalu_arrays.push(nalu_array);\n\n bitReader.stream_read_1_bytes(stream);\n nalu_array.completeness = bitReader.extract_bits(1);\n bitReader.extract_bits(2); // reserved\n nalu_array.nalu_type = bitReader.extract_bits(5);\n\n var numNalus = 1;\n if (nalu_array.nalu_type != VVC_NALU_DEC_PARAM && nalu_array.nalu_type != VVC_NALU_OPI) {\n numNalus = stream.readUint16();\n }\n\n for (j = 0; j < numNalus; j++) {\n var len = stream.readUint16();\n nalu_array.push({\n data: stream.readUint8Array(len),\n length: len\n });\n }\n }\n});\n// file:src/parsing/vvnC.js\nBoxParser.createFullBoxCtor(\"vvnC\", \"VvcNALUConfigBox\", function (stream) {\n // VvcNALUConfigBox\n var tmp = strm.readUint8();\n this.lengthSizeMinusOne = (tmp & 0x3);\n});\n// file:src/box-codecs.js\nBoxParser.SampleEntry.prototype.isVideo = function() {\n\treturn false;\n}\n\nBoxParser.SampleEntry.prototype.isAudio = function() {\n\treturn false;\n}\n\nBoxParser.SampleEntry.prototype.isSubtitle = function() {\n\treturn false;\n}\n\nBoxParser.SampleEntry.prototype.isMetadata = function() {\n\treturn false;\n}\n\nBoxParser.SampleEntry.prototype.isHint = function() {\n\treturn false;\n}\n\nBoxParser.SampleEntry.prototype.getCodec = function() {\n\treturn this.type.replace('.','');\n}\n\nBoxParser.SampleEntry.prototype.getWidth = function() {\n\treturn \"\";\n}\n\nBoxParser.SampleEntry.prototype.getHeight = function() {\n\treturn \"\";\n}\n\nBoxParser.SampleEntry.prototype.getChannelCount = function() {\n\treturn \"\";\n}\n\nBoxParser.SampleEntry.prototype.getSampleRate = function() {\n\treturn \"\";\n}\n\nBoxParser.SampleEntry.prototype.getSampleSize = function() {\n\treturn \"\";\n}\n\nBoxParser.VisualSampleEntry.prototype.isVideo = function() {\n\treturn true;\n}\n\nBoxParser.VisualSampleEntry.prototype.getWidth = function() {\n\treturn this.width;\n}\n\nBoxParser.VisualSampleEntry.prototype.getHeight = function() {\n\treturn this.height;\n}\n\nBoxParser.AudioSampleEntry.prototype.isAudio = function() {\n\treturn true;\n}\n\nBoxParser.AudioSampleEntry.prototype.getChannelCount = function() {\n\treturn this.channel_count;\n}\n\nBoxParser.AudioSampleEntry.prototype.getSampleRate = function() {\n\treturn this.samplerate;\n}\n\nBoxParser.AudioSampleEntry.prototype.getSampleSize = function() {\n\treturn this.samplesize;\n}\n\nBoxParser.SubtitleSampleEntry.prototype.isSubtitle = function() {\n\treturn true;\n}\n\nBoxParser.MetadataSampleEntry.prototype.isMetadata = function() {\n\treturn true;\n}\n\n\nBoxParser.decimalToHex = function(d, padding) {\n\tvar hex = Number(d).toString(16);\n\tpadding = typeof (padding) === \"undefined\" || padding === null ? padding = 2 : padding;\n\twhile (hex.length < padding) {\n\t\thex = \"0\" + hex;\n\t}\n\treturn hex;\n}\n\nBoxParser.avc1SampleEntry.prototype.getCodec =\nBoxParser.avc2SampleEntry.prototype.getCodec =\nBoxParser.avc3SampleEntry.prototype.getCodec =\nBoxParser.avc4SampleEntry.prototype.getCodec = function() {\n\tvar baseCodec = BoxParser.SampleEntry.prototype.getCodec.call(this);\n\tif (this.avcC) {\n\t\treturn baseCodec+\".\"+BoxParser.decimalToHex(this.avcC.AVCProfileIndication)+\n\t\t\t\t\t\t \"\"+BoxParser.decimalToHex(this.avcC.profile_compatibility)+\n\t\t\t\t\t\t \"\"+BoxParser.decimalToHex(this.avcC.AVCLevelIndication);\n\t} else {\n\t\treturn baseCodec;\n\t}\n}\n\nBoxParser.hev1SampleEntry.prototype.getCodec =\nBoxParser.hvc1SampleEntry.prototype.getCodec = function() {\n\tvar i;\n\tvar baseCodec = BoxParser.SampleEntry.prototype.getCodec.call(this);\n\tif (this.hvcC) {\n\t\tbaseCodec += '.';\n\t\tswitch (this.hvcC.general_profile_space) {\n\t\t\tcase 0:\n\t\t\t\tbaseCodec += '';\n\t\t\t\tbreak;\n\t\t\tcase 1:\n\t\t\t\tbaseCodec += 'A';\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tbaseCodec += 'B';\n\t\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t\tbaseCodec += 'C';\n\t\t\t\tbreak;\n\t\t}\n\t\tbaseCodec += this.hvcC.general_profile_idc;\n\t\tbaseCodec += '.';\n\t\tvar val = this.hvcC.general_profile_compatibility;\n\t\tvar reversed = 0;\n\t\tfor (i=0; i<32; i++) {\n\t\t\treversed |= val & 1;\n\t\t\tif (i==31) break;\n\t\t\treversed <<= 1;\n\t\t\tval >>=1;\n\t\t}\n\t\tbaseCodec += BoxParser.decimalToHex(reversed, 0);\n\t\tbaseCodec += '.';\n\t\tif (this.hvcC.general_tier_flag === 0) {\n\t\t\tbaseCodec += 'L';\n\t\t} else {\n\t\t\tbaseCodec += 'H';\n\t\t}\n\t\tbaseCodec += this.hvcC.general_level_idc;\n\t\tvar hasByte = false;\n\t\tvar constraint_string = \"\";\n\t\tfor (i = 5; i >= 0; i--) {\n\t\t\tif (this.hvcC.general_constraint_indicator[i] || hasByte) {\n\t\t\t\tconstraint_string = \".\"+BoxParser.decimalToHex(this.hvcC.general_constraint_indicator[i], 0)+constraint_string;\n\t\t\t\thasByte = true;\n\t\t\t}\n\t\t}\n\t\tbaseCodec += constraint_string;\n\t}\n\treturn baseCodec;\n}\n\nBoxParser.vvc1SampleEntry.prototype.getCodec =\nBoxParser.vvi1SampleEntry.prototype.getCodec = function () {\n\tvar i;\n\tvar baseCodec = BoxParser.SampleEntry.prototype.getCodec.call(this);\n\tif (this.vvcC) {\n\t\tbaseCodec += '.' + this.vvcC.general_profile_idc;\n\t\tif (this.vvcC.general_tier_flag) {\n\t\t\tbaseCodec += '.H';\n\t\t} else {\n\t\t\tbaseCodec += '.L';\n\t\t}\n\t\tbaseCodec += this.vvcC.general_level_idc;\n\n\t\tvar constraint_string = \"\";\n\t\tif (this.vvcC.general_constraint_info) {\n\t\t\tvar bytes = [];\n\t\t\tvar byte = 0;\n\t\t\tbyte |= this.vvcC.ptl_frame_only_constraint << 7;\n\t\t\tbyte |= this.vvcC.ptl_multilayer_enabled << 6;\n\t\t\tvar last_nonzero;\n\t\t\tfor (i = 0; i < this.vvcC.general_constraint_info.length; ++i) {\n\t\t\t\tbyte |= (this.vvcC.general_constraint_info[i] >> 2) & 0x3f;\n\t\t\t\tbytes.push(byte);\n\t\t\t\tif (byte) {\n\t\t\t\t\tlast_nonzero = i;\n\t\t\t\t}\n\n\t\t\t\tbyte = (this.vvcC.general_constraint_info[i] >> 2) & 0x03;\n\t\t\t}\n\n\t\t\tif (last_nonzero === undefined) {\n\t\t\t\tconstraint_string = \".CA\";\n\t\t\t}\n\t\t\telse {\n\t\t\t\tconstraint_string = \".C\"\n\t\t\t\tvar base32_chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567\";\n\t\t\t\tvar held_bits = 0;\n\t\t\t\tvar num_held_bits = 0;\n\t\t\t\tfor (i = 0; i <= last_nonzero; ++i) {\n\t\t\t\t\theld_bits = (held_bits << 8) | bytes[i];\n\t\t\t\t\tnum_held_bits += 8;\n\n\t\t\t\t\twhile (num_held_bits >= 5) {\n\t\t\t\t\t\tvar val = (held_bits >> (num_held_bits - 5)) & 0x1f;\n\t\t\t\t\t\tconstraint_string += base32_chars[val];\n\n\t\t\t\t\t\tnum_held_bits -= 5;\n\t\t\t\t\t\theld_bits &= (1 << num_held_bits) - 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (num_held_bits) {\n\t\t\t\t\theld_bits <<= (5 - num_held_bits); // right-pad with zeros to 5 bits (is this correct?)\n\t\t\t\t\tconstraint_string += base32_chars[held_bits & 0x1f];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tbaseCodec += constraint_string;\n\t}\n\treturn baseCodec;\n}\n\nBoxParser.mp4aSampleEntry.prototype.getCodec = function() {\n\tvar baseCodec = BoxParser.SampleEntry.prototype.getCodec.call(this);\n\tif (this.esds && this.esds.esd) {\n\t\tvar oti = this.esds.esd.getOTI();\n\t\tvar dsi = this.esds.esd.getAudioConfig();\n\t\treturn baseCodec+\".\"+BoxParser.decimalToHex(oti)+(dsi ? \".\"+dsi: \"\");\n\t} else {\n\t\treturn baseCodec;\n\t}\n}\n\nBoxParser.stxtSampleEntry.prototype.getCodec = function() {\n\tvar baseCodec = BoxParser.SampleEntry.prototype.getCodec.call(this);\n\tif(this.mime_format) {\n\t\treturn baseCodec + \".\" + this.mime_format;\n\t} else {\n\t\treturn baseCodec\n\t}\n}\n\nBoxParser.vp08SampleEntry.prototype.getCodec =\nBoxParser.vp09SampleEntry.prototype.getCodec = function() {\n\tvar baseCodec = BoxParser.SampleEntry.prototype.getCodec.call(this);\n\tvar level = this.vpcC.level;\n\tif (level == 0) {\n\t\tlevel = \"00\";\n\t}\n\tvar bitDepth = this.vpcC.bitDepth;\n\tif (bitDepth == 8) {\n\t\tbitDepth = \"08\";\n\t}\n\treturn baseCodec + \".0\" + this.vpcC.profile + \".\" + level + \".\" + bitDepth;\n}\n\nBoxParser.av01SampleEntry.prototype.getCodec = function() {\n\tvar baseCodec = BoxParser.SampleEntry.prototype.getCodec.call(this);\n\tvar level = this.av1C.seq_level_idx_0;\n\tif (level < 10) {\n\t\tlevel = \"0\" + level;\n\t}\n\tvar bitdepth;\n\tif (this.av1C.seq_profile === 2 && this.av1C.high_bitdepth === 1) {\n\t\tbitdepth = (this.av1C.twelve_bit === 1) ? \"12\" : \"10\";\n\t} else if ( this.av1C.seq_profile <= 2 ) {\n\t\tbitdepth = (this.av1C.high_bitdepth === 1) ? \"10\" : \"08\";\n\t}\n\t// TODO need to parse the SH to find color config\n\treturn baseCodec+\".\"+this.av1C.seq_profile+\".\"+level+(this.av1C.seq_tier_0?\"H\":\"M\")+\".\"+bitdepth;//+\".\"+this.av1C.monochrome+\".\"+this.av1C.chroma_subsampling_x+\"\"+this.av1C.chroma_subsampling_y+\"\"+this.av1C.chroma_sample_position;\n}\n// file:src/box-write.js\n/* \n * Copyright (c) Telecom ParisTech/TSI/MM/GPAC Cyril Concolato\n * License: BSD-3-Clause (see LICENSE file)\n */\nBoxParser.Box.prototype.writeHeader = function(stream, msg) {\n\tthis.size += 8;\n\tif (this.size > MAX_SIZE) {\n\t\tthis.size += 8;\n\t}\n\tif (this.type === \"uuid\") {\n\t\tthis.size += 16;\n\t}\n\tLog.debug(\"BoxWriter\", \"Writing box \"+this.type+\" of size: \"+this.size+\" at position \"+stream.getPosition()+(msg || \"\"));\n\tif (this.size > MAX_SIZE) {\n\t\tstream.writeUint32(1);\n\t} else {\n\t\tthis.sizePosition = stream.getPosition();\n\t\tstream.writeUint32(this.size);\n\t}\n\tstream.writeString(this.type, null, 4);\n\tif (this.type === \"uuid\") {\n\t\tstream.writeUint8Array(this.uuid);\n\t}\n\tif (this.size > MAX_SIZE) {\n\t\tstream.writeUint64(this.size);\n\t} \n}\n\nBoxParser.FullBox.prototype.writeHeader = function(stream) {\n\tthis.size += 4;\n\tBoxParser.Box.prototype.writeHeader.call(this, stream, \" v=\"+this.version+\" f=\"+this.flags);\n\tstream.writeUint8(this.version);\n\tstream.writeUint24(this.flags);\n}\n\nBoxParser.Box.prototype.write = function(stream) {\n\tif (this.type === \"mdat\") {\n\t\t/* TODO: fix this */\n\t\tif (this.data) {\n\t\t\tthis.size = this.data.length;\n\t\t\tthis.writeHeader(stream);\n\t\t\tstream.writeUint8Array(this.data);\n\t\t}\n\t} else {\n\t\tthis.size = (this.data ? this.data.length : 0);\n\t\tthis.writeHeader(stream);\n\t\tif (this.data) {\n\t\t\tstream.writeUint8Array(this.data);\n\t\t}\n\t}\n}\n\nBoxParser.ContainerBox.prototype.write = function(stream) {\n\tthis.size = 0;\n\tthis.writeHeader(stream);\n\tfor (var i=0; i<this.boxes.length; i++) {\n\t\tif (this.boxes[i]) {\n\t\t\tthis.boxes[i].write(stream);\n\t\t\tthis.size += this.boxes[i].size;\n\t\t}\n\t}\n\t/* adjusting the size, now that all sub-boxes are known */\n\tLog.debug(\"BoxWriter\", \"Adjusting box \"+this.type+\" with new size \"+this.size);\n\tstream.adjustUint32(this.sizePosition, this.size);\n}\n\nBoxParser.TrackReferenceTypeBox.prototype.write = function(stream) {\n\tthis.size = this.track_ids.length*4;\n\tthis.writeHeader(stream);\n\tstream.writeUint32Array(this.track_ids);\n}\n\n// file:src/writing/avcC.js\nBoxParser.avcCBox.prototype.write = function(stream) {\n\tvar i;\n\tthis.size = 7;\n\tfor (i = 0; i < this.SPS.length; i++) {\n\t\tthis.size += 2+this.SPS[i].length;\n\t}\n\tfor (i = 0; i < this.PPS.length; i++) {\n\t\tthis.size += 2+this.PPS[i].length;\n\t}\n\tif (this.ext) {\n\t\tthis.size += this.ext.length;\n\t}\n\tthis.writeHeader(stream);\n\tstream.writeUint8(this.configurationVersion);\n\tstream.writeUint8(this.AVCProfileIndication);\n\tstream.writeUint8(this.profile_compatibility);\n\tstream.writeUint8(this.AVCLevelIndication);\n\tstream.writeUint8(this.lengthSizeMinusOne + (63<<2));\n\tstream.writeUint8(this.SPS.length + (7<<5));\n\tfor (i = 0; i < this.SPS.length; i++) {\n\t\tstream.writeUint16(this.SPS[i].length);\n\t\tstream.writeUint8Array(this.SPS[i].nalu);\n\t}\n\tstream.writeUint8(this.PPS.length);\n\tfor (i = 0; i < this.PPS.length; i++) {\n\t\tstream.writeUint16(this.PPS[i].length);\n\t\tstream.writeUint8Array(this.PPS[i].nalu);\n\t}\n\tif (this.ext) {\n\t\tstream.writeUint8Array(this.ext);\n\t}\n}\n\n// file:src/writing/co64.js\nBoxParser.co64Box.prototype.write = function(stream) {\n\tvar i;\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 4+8*this.chunk_offsets.length;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.chunk_offsets.length);\n\tfor(i=0; i<this.chunk_offsets.length; i++) {\n\t\tstream.writeUint64(this.chunk_offsets[i]);\n\t}\n}\n\n// file:src/writing/cslg.js\nBoxParser.cslgBox.prototype.write = function(stream) {\n\tvar i;\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 4*5;\n\tthis.writeHeader(stream);\n\tstream.writeInt32(this.compositionToDTSShift);\n\tstream.writeInt32(this.leastDecodeToDisplayDelta);\n\tstream.writeInt32(this.greatestDecodeToDisplayDelta);\n\tstream.writeInt32(this.compositionStartTime);\n\tstream.writeInt32(this.compositionEndTime);\n}\n\n// file:src/writing/ctts.js\nBoxParser.cttsBox.prototype.write = function(stream) {\n\tvar i;\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 4+8*this.sample_counts.length;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.sample_counts.length);\n\tfor(i=0; i<this.sample_counts.length; i++) {\n\t\tstream.writeUint32(this.sample_counts[i]);\n\t\tif (this.version === 1) {\n\t\t\tstream.writeInt32(this.sample_offsets[i]); /* signed */\n\t\t} else {\t\t\t\n\t\t\tstream.writeUint32(this.sample_offsets[i]); /* unsigned */\n\t\t}\n\t}\n}\n\n// file:src/writing/dref.js\nBoxParser.drefBox.prototype.write = function(stream) {\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 4; //\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.entries.length);\n\tfor (var i = 0; i < this.entries.length; i++) {\n\t\tthis.entries[i].write(stream);\n\t\tthis.size += this.entries[i].size;\n\t}\t\n\t/* adjusting the size, now that all sub-boxes are known */\n\tLog.debug(\"BoxWriter\", \"Adjusting box \"+this.type+\" with new size \"+this.size);\n\tstream.adjustUint32(this.sizePosition, this.size);\n}\n\n// file:src/writing/elng.js\nBoxParser.elngBox.prototype.write = function(stream) {\n\tthis.version = 0;\t\n\tthis.flags = 0;\n\tthis.size = this.extended_language.length;\n\tthis.writeHeader(stream);\n\tstream.writeString(this.extended_language);\n}\n\n// file:src/writing/elst.js\nBoxParser.elstBox.prototype.write = function(stream) {\n\tthis.version = 0;\t\n\tthis.flags = 0;\n\tthis.size = 4+12*this.entries.length;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.entries.length);\n\tfor (var i = 0; i < this.entries.length; i++) {\n\t\tvar entry = this.entries[i];\n\t\tstream.writeUint32(entry.segment_duration);\n\t\tstream.writeInt32(entry.media_time);\n\t\tstream.writeInt16(entry.media_rate_integer);\n\t\tstream.writeInt16(entry.media_rate_fraction);\n\t}\n}\n\n// file:src/writing/emsg.js\nBoxParser.emsgBox.prototype.write = function(stream) {\n\tthis.version = 0;\t\n\tthis.flags = 0;\n\tthis.size = 4*4+this.message_data.length+(this.scheme_id_uri.length+1)+(this.value.length+1);\n\tthis.writeHeader(stream);\n\tstream.writeCString(this.scheme_id_uri);\n\tstream.writeCString(this.value);\n\tstream.writeUint32(this.timescale);\n\tstream.writeUint32(this.presentation_time_delta);\n\tstream.writeUint32(this.event_duration);\n\tstream.writeUint32(this.id);\n\tstream.writeUint8Array(this.message_data);\n}\n\n// file:src/writing/ftyp.js\nBoxParser.ftypBox.prototype.write = function(stream) {\n\tthis.size = 8+4*this.compatible_brands.length;\n\tthis.writeHeader(stream);\n\tstream.writeString(this.major_brand, null, 4);\n\tstream.writeUint32(this.minor_version);\n\tfor (var i = 0; i < this.compatible_brands.length; i++) {\n\t\tstream.writeString(this.compatible_brands[i], null, 4);\n\t}\n}\n\n// file:src/writing/hdlr.js\nBoxParser.hdlrBox.prototype.write = function(stream) {\n\tthis.size = 5*4+this.name.length+1;\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(0);\n\tstream.writeString(this.handler, null, 4);\n\tstream.writeUint32(0);\n\tstream.writeUint32(0);\n\tstream.writeUint32(0);\n\tstream.writeCString(this.name);\n}\n\n// file:src/writing/hvcC.js\nBoxParser.hvcCBox.prototype.write = function(stream) {\n var i,j;\n this.size = 23;\n\n for (i = 0; i < this.nalu_arrays.length; i++) {\n this.size += 3;\n for (j = 0; j < this.nalu_arrays[i].length; j++) {\n this.size += 2 + this.nalu_arrays[i][j].data.length;\n }\n }\n\n this.writeHeader(stream);\n\n stream.writeUint8(this.configurationVersion);\n stream.writeUint8((this.general_profile_space << 6) +\n (this.general_tier_flag << 5) +\n this.general_profile_idc);\n stream.writeUint32(this.general_profile_compatibility);\n stream.writeUint8Array(this.general_constraint_indicator);\n stream.writeUint8(this.general_level_idc);\n stream.writeUint16(this.min_spatial_segmentation_idc + (15<<24));\n stream.writeUint8(this.parallelismType + (63<<2));\n stream.writeUint8(this.chroma_format_idc + (63<<2));\n stream.writeUint8(this.bit_depth_luma_minus8 + (31<<3));\n stream.writeUint8(this.bit_depth_chroma_minus8 + (31<<3));\n stream.writeUint16(this.avgFrameRate);\n stream.writeUint8((this.constantFrameRate<<6) +\n (this.numTemporalLayers<<3) +\n (this.temporalIdNested<<2) +\n this.lengthSizeMinusOne);\n stream.writeUint8(this.nalu_arrays.length);\n for (i = 0; i < this.nalu_arrays.length; i++) {\n // bit(1) array_completeness + bit(1) reserved = 0 + bit(6) nal_unit_type\n stream.writeUint8((this.nalu_arrays[i].completeness<<7) +\n this.nalu_arrays[i].nalu_type);\n stream.writeUint16(this.nalu_arrays[i].length);\n for (j = 0; j < this.nalu_arrays[i].length; j++) {\n stream.writeUint16(this.nalu_arrays[i][j].data.length);\n stream.writeUint8Array(this.nalu_arrays[i][j].data);\n }\n }\n}\n// file:src/writing/kind.js\nBoxParser.kindBox.prototype.write = function(stream) {\n\tthis.version = 0;\t\n\tthis.flags = 0;\n\tthis.size = (this.schemeURI.length+1)+(this.value.length+1);\n\tthis.writeHeader(stream);\n\tstream.writeCString(this.schemeURI);\n\tstream.writeCString(this.value);\n}\n\n// file:src/writing/mdhd.js\nBoxParser.mdhdBox.prototype.write = function(stream) {\n\tthis.size = 4*4+2*2;\n\tthis.flags = 0;\n\tthis.version = 0;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.creation_time);\n\tstream.writeUint32(this.modification_time);\n\tstream.writeUint32(this.timescale);\n\tstream.writeUint32(this.duration);\n\tstream.writeUint16(this.language);\n\tstream.writeUint16(0);\n}\n\n// file:src/writing/mehd.js\nBoxParser.mehdBox.prototype.write = function(stream) {\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 4;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.fragment_duration);\n}\n\n// file:src/writing/mfhd.js\nBoxParser.mfhdBox.prototype.write = function(stream) {\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 4;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.sequence_number);\n}\n\n// file:src/writing/mvhd.js\nBoxParser.mvhdBox.prototype.write = function(stream) {\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 23*4+2*2;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.creation_time);\n\tstream.writeUint32(this.modification_time);\n\tstream.writeUint32(this.timescale);\n\tstream.writeUint32(this.duration);\n\tstream.writeUint32(this.rate);\n\tstream.writeUint16(this.volume<<8);\n\tstream.writeUint16(0);\n\tstream.writeUint32(0);\n\tstream.writeUint32(0);\n\tstream.writeUint32Array(this.matrix);\n\tstream.writeUint32(0);\n\tstream.writeUint32(0);\n\tstream.writeUint32(0);\n\tstream.writeUint32(0);\n\tstream.writeUint32(0);\n\tstream.writeUint32(0);\n\tstream.writeUint32(this.next_track_id);\n}\n\n// file:src/writing/sampleentry.js\nBoxParser.SampleEntry.prototype.writeHeader = function(stream) {\n\tthis.size = 8;\n\tBoxParser.Box.prototype.writeHeader.call(this, stream);\n\tstream.writeUint8(0);\n\tstream.writeUint8(0);\n\tstream.writeUint8(0);\n\tstream.writeUint8(0);\n\tstream.writeUint8(0);\n\tstream.writeUint8(0);\n\tstream.writeUint16(this.data_reference_index);\n}\n\nBoxParser.SampleEntry.prototype.writeFooter = function(stream) {\n\tfor (var i=0; i<this.boxes.length; i++) {\n\t\tthis.boxes[i].write(stream);\n\t\tthis.size += this.boxes[i].size;\n\t}\n\tLog.debug(\"BoxWriter\", \"Adjusting box \"+this.type+\" with new size \"+this.size);\n\tstream.adjustUint32(this.sizePosition, this.size);\t\n}\n\nBoxParser.SampleEntry.prototype.write = function(stream) {\n\tthis.writeHeader(stream);\n\tstream.writeUint8Array(this.data);\n\tthis.size += this.data.length;\n\tLog.debug(\"BoxWriter\", \"Adjusting box \"+this.type+\" with new size \"+this.size);\n\tstream.adjustUint32(this.sizePosition, this.size);\t\n}\n\nBoxParser.VisualSampleEntry.prototype.write = function(stream) {\n\tthis.writeHeader(stream);\n\tthis.size += 2*7+6*4+32;\n\tstream.writeUint16(0); \n\tstream.writeUint16(0);\n\tstream.writeUint32(0);\n\tstream.writeUint32(0);\n\tstream.writeUint32(0);\n\tstream.writeUint16(this.width);\n\tstream.writeUint16(this.height);\n\tstream.writeUint32(this.horizresolution);\n\tstream.writeUint32(this.vertresolution);\n\tstream.writeUint32(0);\n\tstream.writeUint16(this.frame_count);\n\tstream.writeUint8(Math.min(31, this.compressorname.length));\n\tstream.writeString(this.compressorname, null, 31);\n\tstream.writeUint16(this.depth);\n\tstream.writeInt16(-1);\n\tthis.writeFooter(stream);\n}\n\nBoxParser.AudioSampleEntry.prototype.write = function(stream) {\n\tthis.writeHeader(stream);\n\tthis.size += 2*4+3*4;\n\tstream.writeUint32(0);\n\tstream.writeUint32(0);\n\tstream.writeUint16(this.channel_count);\n\tstream.writeUint16(this.samplesize);\n\tstream.writeUint16(0);\n\tstream.writeUint16(0);\n\tstream.writeUint32(this.samplerate<<16);\n\tthis.writeFooter(stream);\n}\n\nBoxParser.stppSampleEntry.prototype.write = function(stream) {\n\tthis.writeHeader(stream);\n\tthis.size += this.namespace.length+1+\n\t\t\t\t this.schema_location.length+1+\n\t\t\t\t this.auxiliary_mime_types.length+1;\n\tstream.writeCString(this.namespace);\n\tstream.writeCString(this.schema_location);\n\tstream.writeCString(this.auxiliary_mime_types);\n\tthis.writeFooter(stream);\n}\n\n// file:src/writing/samplegroups/samplegroup.js\nBoxParser.SampleGroupEntry.prototype.write = function(stream) {\n\tstream.writeUint8Array(this.data);\n}\n\n// file:src/writing/sbgp.js\nBoxParser.sbgpBox.prototype.write = function(stream) {\n\tthis.version = 1;\t\n\tthis.flags = 0;\n\tthis.size = 12+8*this.entries.length;\n\tthis.writeHeader(stream);\n\tstream.writeString(this.grouping_type, null, 4);\n\tstream.writeUint32(this.grouping_type_parameter);\n\tstream.writeUint32(this.entries.length);\n\tfor (var i = 0; i < this.entries.length; i++) {\n\t\tvar entry = this.entries[i];\n\t\tstream.writeInt32(entry.sample_count);\n\t\tstream.writeInt32(entry.group_description_index);\n\t}\n}\n\n// file:src/writing/sgpd.js\nBoxParser.sgpdBox.prototype.write = function(stream) {\n\tvar i;\n\tvar entry;\n\t// leave version as read\n\t// this.version;\n\tthis.flags = 0;\n\tthis.size = 12;\n\tfor (i = 0; i < this.entries.length; i++) {\n\t\tentry = this.entries[i];\n\t\tif (this.version === 1) {\n\t\t\tif (this.default_length === 0) {\n\t\t\t\tthis.size += 4;\n\t\t\t}\n\t\t\tthis.size += entry.data.length;\n\t\t}\n\t}\n\tthis.writeHeader(stream);\n\tstream.writeString(this.grouping_type, null, 4);\n\tif (this.version === 1) {\n\t\tstream.writeUint32(this.default_length);\n\t}\n\tif (this.version >= 2) {\n\t\tstream.writeUint32(this.default_sample_description_index);\n\t}\n\tstream.writeUint32(this.entries.length);\n\tfor (i = 0; i < this.entries.length; i++) {\n\t\tentry = this.entries[i];\n\t\tif (this.version === 1) {\n\t\t\tif (this.default_length === 0) {\n\t\t\t\tstream.writeUint32(entry.description_length);\n\t\t\t}\n\t\t}\n\t\tentry.write(stream);\n\t}\n}\n\n\n// file:src/writing/sidx.js\nBoxParser.sidxBox.prototype.write = function(stream) {\n\tthis.version = 0;\t\n\tthis.flags = 0;\n\tthis.size = 4*4+2+2+12*this.references.length;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.reference_ID);\n\tstream.writeUint32(this.timescale);\n\tstream.writeUint32(this.earliest_presentation_time);\n\tstream.writeUint32(this.first_offset);\n\tstream.writeUint16(0);\n\tstream.writeUint16(this.references.length);\n\tfor (var i = 0; i < this.references.length; i++) {\n\t\tvar ref = this.references[i];\n\t\tstream.writeUint32(ref.reference_type << 31 | ref.referenced_size);\n\t\tstream.writeUint32(ref.subsegment_duration);\n\t\tstream.writeUint32(ref.starts_with_SAP << 31 | ref.SAP_type << 28 | ref.SAP_delta_time);\n\t}\n}\n\n// file:src/writing/smhd.js\nBoxParser.smhdBox.prototype.write = function(stream) {\n var i;\n this.version = 0;\n this.flags = 1;\n this.size = 4;\n this.writeHeader(stream);\n stream.writeUint16(this.balance);\n stream.writeUint16(0);\n}\n// file:src/writing/stco.js\nBoxParser.stcoBox.prototype.write = function(stream) {\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 4+4*this.chunk_offsets.length;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.chunk_offsets.length);\n\tstream.writeUint32Array(this.chunk_offsets);\n}\n\n// file:src/writing/stsc.js\nBoxParser.stscBox.prototype.write = function(stream) {\n\tvar i;\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 4+12*this.first_chunk.length;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.first_chunk.length);\n\tfor(i=0; i<this.first_chunk.length; i++) {\n\t\tstream.writeUint32(this.first_chunk[i]);\n\t\tstream.writeUint32(this.samples_per_chunk[i]);\n\t\tstream.writeUint32(this.sample_description_index[i]);\n\t}\n}\n\n// file:src/writing/stsd.js\nBoxParser.stsdBox.prototype.write = function(stream) {\n\tvar i;\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 0;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.entries.length);\n\tthis.size += 4;\n\tfor (i = 0; i < this.entries.length; i++) {\n\t\tthis.entries[i].write(stream);\n\t\tthis.size += this.entries[i].size;\n\t}\n\t/* adjusting the size, now that all sub-boxes are known */\n\tLog.debug(\"BoxWriter\", \"Adjusting box \"+this.type+\" with new size \"+this.size);\n\tstream.adjustUint32(this.sizePosition, this.size);\n}\n\n// file:src/writing/stsh.js\nBoxParser.stshBox.prototype.write = function(stream) {\n\tvar i;\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 4+8*this.shadowed_sample_numbers.length;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.shadowed_sample_numbers.length);\n\tfor(i=0; i<this.shadowed_sample_numbers.length; i++) {\n\t\tstream.writeUint32(this.shadowed_sample_numbers[i]);\n\t\tstream.writeUint32(this.sync_sample_numbers[i]);\n\t}\n}\n\n// file:src/writing/stss.js\nBoxParser.stssBox.prototype.write = function(stream) {\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 4+4*this.sample_numbers.length;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.sample_numbers.length);\n\tstream.writeUint32Array(this.sample_numbers);\n}\n\n// file:src/writing/stsz.js\nBoxParser.stszBox.prototype.write = function(stream) {\n\tvar i;\n\tvar constant = true;\n\tthis.version = 0;\n\tthis.flags = 0;\n\tif (this.sample_sizes.length > 0) {\n\t\ti = 0;\n\t\twhile (i+1 < this.sample_sizes.length) {\n\t\t\tif (this.sample_sizes[i+1] !== this.sample_sizes[0]) {\n\t\t\t\tconstant = false;\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\ti++;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconstant = false;\n\t}\n\tthis.size = 8;\n\tif (!constant) {\n\t\tthis.size += 4*this.sample_sizes.length;\n\t}\n\tthis.writeHeader(stream);\n\tif (!constant) {\n\t\tstream.writeUint32(0);\n\t} else {\n\t\tstream.writeUint32(this.sample_sizes[0]);\n\t}\n\tstream.writeUint32(this.sample_sizes.length);\n\tif (!constant) {\n\t\tstream.writeUint32Array(this.sample_sizes);\n\t}\t\n}\n\n// file:src/writing/stts.js\nBoxParser.sttsBox.prototype.write = function(stream) {\n\tvar i;\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 4+8*this.sample_counts.length;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.sample_counts.length);\n\tfor(i=0; i<this.sample_counts.length; i++) {\n\t\tstream.writeUint32(this.sample_counts[i]);\n\t\tstream.writeUint32(this.sample_deltas[i]);\n\t}\n}\n\n// file:src/writing/tfdt.js\nBoxParser.tfdtBox.prototype.write = function(stream) {\n\tvar UINT32_MAX = Math.pow(2, 32) - 1;\n\t// use version 1 if baseMediaDecodeTime does not fit 32 bits\n\tthis.version = this.baseMediaDecodeTime > UINT32_MAX ? 1 : 0;\n\tthis.flags = 0;\n\tthis.size = 4;\n\tif (this.version === 1) {\n\t\tthis.size += 4;\n\t}\n\tthis.writeHeader(stream);\n\tif (this.version === 1) {\n\t\tstream.writeUint64(this.baseMediaDecodeTime);\n\t} else {\n\t\tstream.writeUint32(this.baseMediaDecodeTime);\n\t}\n}\n\n// file:src/writing/tfhd.js\nBoxParser.tfhdBox.prototype.write = function(stream) {\n\tthis.version = 0;\n\tthis.size = 4;\n\tif (this.flags & BoxParser.TFHD_FLAG_BASE_DATA_OFFSET) {\n\t\tthis.size += 8;\n\t}\n\tif (this.flags & BoxParser.TFHD_FLAG_SAMPLE_DESC) {\n\t\tthis.size += 4;\n\t}\n\tif (this.flags & BoxParser.TFHD_FLAG_SAMPLE_DUR) {\n\t\tthis.size += 4;\n\t}\n\tif (this.flags & BoxParser.TFHD_FLAG_SAMPLE_SIZE) {\n\t\tthis.size += 4;\n\t}\n\tif (this.flags & BoxParser.TFHD_FLAG_SAMPLE_FLAGS) {\n\t\tthis.size += 4;\n\t}\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.track_id);\n\tif (this.flags & BoxParser.TFHD_FLAG_BASE_DATA_OFFSET) {\n\t\tstream.writeUint64(this.base_data_offset);\n\t}\n\tif (this.flags & BoxParser.TFHD_FLAG_SAMPLE_DESC) {\n\t\tstream.writeUint32(this.default_sample_description_index);\n\t}\n\tif (this.flags & BoxParser.TFHD_FLAG_SAMPLE_DUR) {\n\t\tstream.writeUint32(this.default_sample_duration);\n\t}\n\tif (this.flags & BoxParser.TFHD_FLAG_SAMPLE_SIZE) {\n\t\tstream.writeUint32(this.default_sample_size);\n\t}\n\tif (this.flags & BoxParser.TFHD_FLAG_SAMPLE_FLAGS) {\n\t\tstream.writeUint32(this.default_sample_flags);\n\t}\n}\n\n// file:src/writing/tkhd.js\nBoxParser.tkhdBox.prototype.write = function(stream) {\n\tthis.version = 0;\n\t//this.flags = 0;\n\tthis.size = 4*18+2*4;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.creation_time);\n\tstream.writeUint32(this.modification_time);\n\tstream.writeUint32(this.track_id);\n\tstream.writeUint32(0);\n\tstream.writeUint32(this.duration);\n\tstream.writeUint32(0);\n\tstream.writeUint32(0);\n\tstream.writeInt16(this.layer);\n\tstream.writeInt16(this.alternate_group);\n\tstream.writeInt16(this.volume<<8);\n\tstream.writeUint16(0);\n\tstream.writeInt32Array(this.matrix);\n\tstream.writeUint32(this.width);\n\tstream.writeUint32(this.height);\n}\n\n// file:src/writing/trex.js\nBoxParser.trexBox.prototype.write = function(stream) {\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 4*5;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.track_id);\n\tstream.writeUint32(this.default_sample_description_index);\n\tstream.writeUint32(this.default_sample_duration);\n\tstream.writeUint32(this.default_sample_size);\n\tstream.writeUint32(this.default_sample_flags);\n}\n\n// file:src/writing/trun.js\nBoxParser.trunBox.prototype.write = function(stream) {\n\tthis.version = 0;\n\tthis.size = 4;\n\tif (this.flags & BoxParser.TRUN_FLAGS_DATA_OFFSET) {\n\t\tthis.size += 4;\n\t}\n\tif (this.flags & BoxParser.TRUN_FLAGS_FIRST_FLAG) {\n\t\tthis.size += 4;\n\t}\n\tif (this.flags & BoxParser.TRUN_FLAGS_DURATION) {\n\t\tthis.size += 4*this.sample_duration.length;\n\t}\n\tif (this.flags & BoxParser.TRUN_FLAGS_SIZE) {\n\t\tthis.size += 4*this.sample_size.length;\n\t}\n\tif (this.flags & BoxParser.TRUN_FLAGS_FLAGS) {\n\t\tthis.size += 4*this.sample_flags.length;\n\t}\n\tif (this.flags & BoxParser.TRUN_FLAGS_CTS_OFFSET) {\n\t\tthis.size += 4*this.sample_composition_time_offset.length;\n\t}\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.sample_count);\n\tif (this.flags & BoxParser.TRUN_FLAGS_DATA_OFFSET) {\n\t\tthis.data_offset_position = stream.getPosition();\n\t\tstream.writeInt32(this.data_offset); //signed\n\t}\n\tif (this.flags & BoxParser.TRUN_FLAGS_FIRST_FLAG) {\n\t\tstream.writeUint32(this.first_sample_flags);\n\t}\n\tfor (var i = 0; i < this.sample_count; i++) {\n\t\tif (this.flags & BoxParser.TRUN_FLAGS_DURATION) {\n\t\t\tstream.writeUint32(this.sample_duration[i]);\n\t\t}\n\t\tif (this.flags & BoxParser.TRUN_FLAGS_SIZE) {\n\t\t\tstream.writeUint32(this.sample_size[i]);\n\t\t}\n\t\tif (this.flags & BoxParser.TRUN_FLAGS_FLAGS) {\n\t\t\tstream.writeUint32(this.sample_flags[i]);\n\t\t}\n\t\tif (this.flags & BoxParser.TRUN_FLAGS_CTS_OFFSET) {\n\t\t\tif (this.version === 0) {\n\t\t\t\tstream.writeUint32(this.sample_composition_time_offset[i]);\n\t\t\t} else {\n\t\t\t\tstream.writeInt32(this.sample_composition_time_offset[i]); //signed\n\t\t\t}\n\t\t}\n\t}\t\t\n}\n\n// file:src/writing/url.js\nBoxParser[\"url Box\"].prototype.write = function(stream) {\n\tthis.version = 0;\t\n\tif (this.location) {\n\t\tthis.flags = 0;\n\t\tthis.size = this.location.length+1;\n\t} else {\n\t\tthis.flags = 0x000001;\n\t\tthis.size = 0;\n\t}\n\tthis.writeHeader(stream);\n\tif (this.location) {\n\t\tstream.writeCString(this.location);\n\t}\n}\n\n// file:src/writing/urn.js\nBoxParser[\"urn Box\"].prototype.write = function(stream) {\n\tthis.version = 0;\t\n\tthis.flags = 0;\n\tthis.size = this.name.length+1+(this.location ? this.location.length+1 : 0);\n\tthis.writeHeader(stream);\n\tstream.writeCString(this.name);\n\tif (this.location) {\n\t\tstream.writeCString(this.location);\n\t}\n}\n\n// file:src/writing/vmhd.js\nBoxParser.vmhdBox.prototype.write = function(stream) {\n\tvar i;\n\tthis.version = 0;\n\tthis.flags = 1;\n\tthis.size = 8;\n\tthis.writeHeader(stream);\n\tstream.writeUint16(this.graphicsmode);\n\tstream.writeUint16Array(this.opcolor);\n}\n\n// file:src/box-unpack.js\n/* \n * Copyright (c) Telecom ParisTech/TSI/MM/GPAC Cyril Concolato\n * License: BSD-3-Clause (see LICENSE file)\n */\nBoxParser.cttsBox.prototype.unpack = function(samples) {\n\tvar i, j, k;\n\tk = 0;\n\tfor (i = 0; i < this.sample_counts.length; i++) {\n\t\tfor (j = 0; j < this.sample_counts[i]; j++) {\n\t\t\tsamples[k].pts = samples[k].dts + this.sample_offsets[i];\n\t\t\tk++;\n\t\t}\n\t}\n}\n\nBoxParser.sttsBox.prototype.unpack = function(samples) {\n\tvar i, j, k;\n\tk = 0;\n\tfor (i = 0; i < this.sample_counts.length; i++) {\n\t\tfor (j = 0; j < this.sample_counts[i]; j++) {\n\t\t\tif (k === 0) {\n\t\t\t\tsamples[k].dts = 0;\n\t\t\t} else {\n\t\t\t\tsamples[k].dts = samples[k-1].dts + this.sample_deltas[i];\n\t\t\t}\n\t\t\tk++;\n\t\t}\n\t}\n}\n\nBoxParser.stcoBox.prototype.unpack = function(samples) {\n\tvar i;\n\tfor (i = 0; i < this.chunk_offsets.length; i++) {\n\t\tsamples[i].offset = this.chunk_offsets[i];\n\t}\n}\n\nBoxParser.stscBox.prototype.unpack = function(samples) {\n\tvar i, j, k, l, m;\n\tl = 0;\n\tm = 0;\n\tfor (i = 0; i < this.first_chunk.length; i++) {\n\t\tfor (j = 0; j < (i+1 < this.first_chunk.length ? this.first_chunk[i+1] : Infinity); j++) {\n\t\t\tm++;\n\t\t\tfor (k = 0; k < this.samples_per_chunk[i]; k++) {\n\t\t\t\tif (samples[l]) {\n\t\t\t\t\tsamples[l].description_index = this.sample_description_index[i];\n\t\t\t\t\tsamples[l].chunk_index = m;\n\t\t\t\t} else {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tl++;\n\t\t\t}\t\t\t\n\t\t}\n\t}\n}\n\nBoxParser.stszBox.prototype.unpack = function(samples) {\n\tvar i;\n\tfor (i = 0; i < this.sample_sizes.length; i++) {\n\t\tsamples[i].size = this.sample_sizes[i];\n\t}\n}\n// file:src/box-diff.js\n\nBoxParser.DIFF_BOXES_PROP_NAMES = [ \"boxes\", \"entries\", \"references\", \"subsamples\",\n\t\t\t\t\t \t \"items\", \"item_infos\", \"extents\", \"associations\",\n\t\t\t\t\t \t \"subsegments\", \"ranges\", \"seekLists\", \"seekPoints\",\n\t\t\t\t\t \t \"esd\", \"levels\"];\n\nBoxParser.DIFF_PRIMITIVE_ARRAY_PROP_NAMES = [ \"compatible_brands\", \"matrix\", \"opcolor\", \"sample_counts\", \"sample_deltas\",\n\"first_chunk\", \"samples_per_chunk\", \"sample_sizes\", \"chunk_offsets\", \"sample_offsets\", \"sample_description_index\", \"sample_duration\" ];\n\nBoxParser.boxEqualFields = function(box_a, box_b) {\n\tif (box_a && !box_b) return false;\n\tvar prop;\n\tfor (prop in box_a) {\n\t\tif (BoxParser.DIFF_BOXES_PROP_NAMES.indexOf(prop) > -1) {\n\t\t\tcontinue;\n\t\t// } else if (excluded_fields && excluded_fields.indexOf(prop) > -1) {\n\t\t// \tcontinue;\n\t\t} else if (box_a[prop] instanceof BoxParser.Box || box_b[prop] instanceof BoxParser.Box) {\n\t\t\tcontinue;\n\t\t} else if (typeof box_a[prop] === \"undefined\" || typeof box_b[prop] === \"undefined\") {\n\t\t\tcontinue;\n\t\t} else if (typeof box_a[prop] === \"function\" || typeof box_b[prop] === \"function\") {\n\t\t\tcontinue;\n\t\t} else if (\n\t\t\t(box_a.subBoxNames && box_a.subBoxNames.indexOf(prop.slice(0,4)) > -1) ||\n\t\t\t(box_b.subBoxNames && box_b.subBoxNames.indexOf(prop.slice(0,4)) > -1)) {\n\t\t\tcontinue;\n\t\t} else {\n\t\t\tif (prop === \"data\" || prop === \"start\" || prop === \"size\" || prop === \"creation_time\" || prop === \"modification_time\") {\n\t\t\t\tcontinue;\n\t\t\t} else if (BoxParser.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(prop) > -1) {\n\t\t\t\tcontinue;\n\t\t\t} else {\n\t\t\t\tif (box_a[prop] !== box_b[prop]) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n\nBoxParser.boxEqual = function(box_a, box_b) {\n\tif (!BoxParser.boxEqualFields(box_a, box_b)) {\n\t\treturn false;\n\t}\n\tfor (var j = 0; j < BoxParser.DIFF_BOXES_PROP_NAMES.length; j++) {\n\t\tvar name = BoxParser.DIFF_BOXES_PROP_NAMES[j];\n\t\tif (box_a[name] && box_b[name]) {\n\t\t\tif (!BoxParser.boxEqual(box_a[name], box_b[name])) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n// file:src/text-mp4.js\n/* \n * Copyright (c) 2012-2013. Telecom ParisTech/TSI/MM/GPAC Cyril Concolato\n * License: BSD-3-Clause (see LICENSE file)\n */\nvar VTTin4Parser = function() {\t\n}\n\nVTTin4Parser.prototype.parseSample = function(data) {\n\tvar cues, cue;\n\tvar stream = new MP4BoxStream(data.buffer);\n\tcues = [];\n\twhile (!stream.isEos()) {\n\t\tcue = BoxParser.parseOneBox(stream, false);\n\t\tif (cue.code === BoxParser.OK && cue.box.type === \"vttc\") {\n\t\t\tcues.push(cue.box);\n\t\t}\t\t\n\t}\n\treturn cues;\n}\n\nVTTin4Parser.prototype.getText = function (startTime, endTime, data) {\n\tfunction pad(n, width, z) {\n\t z = z || '0';\n\t n = n + '';\n\t return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;\n\t}\n\tfunction secToTimestamp(insec) {\n\t\tvar h = Math.floor(insec/3600);\n\t\tvar m = Math.floor((insec - h*3600)/60);\n\t\tvar s = Math.floor(insec - h*3600 - m*60);\n\t\tvar ms = Math.floor((insec - h*3600 - m*60 - s)*1000);\n\t\treturn \"\"+pad(h, 2)+\":\"+pad(m,2)+\":\"+pad(s, 2)+\".\"+pad(ms, 3);\n\t}\n\tvar cues = this.parseSample(data);\n\tvar string = \"\";\n\tfor (var i = 0; i < cues.length; i++) {\n\t\tvar cueIn4 = cues[i];\n\t\tstring += secToTimestamp(startTime)+\" --> \"+secToTimestamp(endTime)+\"\\r\\n\";\n\t\tstring += cueIn4.payl.text;\n\t}\n\treturn string;\n}\n\nvar XMLSubtitlein4Parser = function() {\t\n}\n\nXMLSubtitlein4Parser.prototype.parseSample = function(sample) {\n\tvar res = {};\t\n\tvar i;\n\tres.resources = [];\n\tvar stream = new MP4BoxStream(sample.data.buffer);\n\tif (!sample.subsamples || sample.subsamples.length === 0) {\n\t\tres.documentString = stream.readString(sample.data.length);\n\t} else {\n\t\tres.documentString = stream.readString(sample.subsamples[0].size);\n\t\tif (sample.subsamples.length > 1) {\n\t\t\tfor (i = 1; i < sample.subsamples.length; i++) {\n\t\t\t\tres.resources[i] = stream.readUint8Array(sample.subsamples[i].size);\n\t\t\t}\n\t\t}\n\t}\n\tif (typeof (DOMParser) !== \"undefined\") {\n\t\tres.document = (new DOMParser()).parseFromString(res.documentString, \"application/xml\");\n\t}\n\treturn res;\n}\n\nvar Textin4Parser = function() {\t\n}\n\nTextin4Parser.prototype.parseSample = function(sample) {\n\tvar textString;\n\tvar stream = new MP4BoxStream(sample.data.buffer);\n\ttextString = stream.readString(sample.data.length);\n\treturn textString;\n}\n\nTextin4Parser.prototype.parseConfig = function(data) {\n\tvar textString;\n\tvar stream = new MP4BoxStream(data.buffer);\n\tstream.readUint32(); // version & flags\n\ttextString = stream.readCString();\n\treturn textString;\n}\n\nif (typeof exports !== 'undefined') {\n\texports.VTTin4Parser = VTTin4Parser;\n\texports.XMLSubtitlein4Parser = XMLSubtitlein4Parser;\n\texports.Textin4Parser = Textin4Parser;\n}\n// file:src/isofile.js\n/*\n * Copyright (c) 2012-2013. Telecom ParisTech/TSI/MM/GPAC Cyril Concolato\n * License: BSD-3-Clause (see LICENSE file)\n */\nvar ISOFile = function (stream) {\n\t/* MutiBufferStream object used to parse boxes */\n\tthis.stream = stream || new MultiBufferStream();\n\t/* Array of all boxes (in order) found in the file */\n\tthis.boxes = [];\n\t/* Array of all mdats */\n\tthis.mdats = [];\n\t/* Array of all moofs */\n\tthis.moofs = [];\n\t/* Boolean indicating if the file is compatible with progressive parsing (moov first) */\n\tthis.isProgressive = false;\n\t/* Boolean used to fire moov start event only once */\n\tthis.moovStartFound = false;\n\t/* Callback called when the moov parsing starts */\n\tthis.onMoovStart = null;\n\t/* Boolean keeping track of the call to onMoovStart, to avoid double calls */\n\tthis.moovStartSent = false;\n\t/* Callback called when the moov is entirely parsed */\n\tthis.onReady = null;\n\t/* Boolean keeping track of the call to onReady, to avoid double calls */\n\tthis.readySent = false;\n\t/* Callback to call when segments are ready */\n\tthis.onSegment = null;\n\t/* Callback to call when samples are ready */\n\tthis.onSamples = null;\n\t/* Callback to call when there is an error in the parsing or processing of samples */\n\tthis.onError = null;\n\t/* Boolean indicating if the moov box run-length encoded tables of sample information have been processed */\n\tthis.sampleListBuilt = false;\n\t/* Array of Track objects for which fragmentation of samples is requested */\n\tthis.fragmentedTracks = [];\n\t/* Array of Track objects for which extraction of samples is requested */\n\tthis.extractedTracks = [];\n\t/* Boolean indicating that fragmention is ready */\n\tthis.isFragmentationInitialized = false;\n\t/* Boolean indicating that fragmented has started */\n\tthis.sampleProcessingStarted = false;\n\t/* Number of the next 'moof' to generate when fragmenting */\n\tthis.nextMoofNumber = 0;\n\t/* Boolean indicating if the initial list of items has been produced */\n\tthis.itemListBuilt = false;\n\t/* Array of items */\n\tthis.items = [];\n\t/* Array of entity groups */\n\tthis.entity_groups = [];\n\t/* Callback called when the sidx box is entirely parsed */\n\tthis.onSidx = null;\n\t/* Boolean keeping track of the call to onSidx, to avoid double calls */\n\tthis.sidxSent = false;\n}\n\nISOFile.prototype.setSegmentOptions = function(id, user, options) {\n\tvar trak = this.getTrackById(id);\n\tif (trak) {\n\t\tvar fragTrack = {};\n\t\tthis.fragmentedTracks.push(fragTrack);\n\t\tfragTrack.id = id;\n\t\tfragTrack.user = user;\n\t\tfragTrack.trak = trak;\n\t\ttrak.nextSample = 0;\n\t\tfragTrack.segmentStream = null;\n\t\tfragTrack.nb_samples = 1000;\n\t\tfragTrack.rapAlignement = true;\n\t\tif (options) {\n\t\t\tif (options.nbSamples) fragTrack.nb_samples = options.nbSamples;\n\t\t\tif (options.rapAlignement) fragTrack.rapAlignement = options.rapAlignement;\n\t\t}\n\t}\n}\n\nISOFile.prototype.unsetSegmentOptions = function(id) {\n\tvar index = -1;\n\tfor (var i = 0; i < this.fragmentedTracks.length; i++) {\n\t\tvar fragTrack = this.fragmentedTracks[i];\n\t\tif (fragTrack.id == id) {\n\t\t\tindex = i;\n\t\t}\n\t}\n\tif (index > -1) {\n\t\tthis.fragmentedTracks.splice(index, 1);\n\t}\n}\n\nISOFile.prototype.setExtractionOptions = function(id, user, options) {\n\tvar trak = this.getTrackById(id);\n\tif (trak) {\n\t\tvar extractTrack = {};\n\t\tthis.extractedTracks.push(extractTrack);\n\t\textractTrack.id = id;\n\t\textractTrack.user = user;\n\t\textractTrack.trak = trak;\n\t\ttrak.nextSample = 0;\n\t\textractTrack.nb_samples = 1000;\n\t\textractTrack.samples = [];\n\t\tif (options) {\n\t\t\tif (options.nbSamples) extractTrack.nb_samples = options.nbSamples;\n\t\t}\n\t}\n}\n\nISOFile.prototype.unsetExtractionOptions = function(id) {\n\tvar index = -1;\n\tfor (var i = 0; i < this.extractedTracks.length; i++) {\n\t\tvar extractTrack = this.extractedTracks[i];\n\t\tif (extractTrack.id == id) {\n\t\t\tindex = i;\n\t\t}\n\t}\n\tif (index > -1) {\n\t\tthis.extractedTracks.splice(index, 1);\n\t}\n}\n\nISOFile.prototype.parse = function() {\n\tvar found;\n\tvar ret;\n\tvar box;\n\tvar parseBoxHeadersOnly = false;\n\n\tif (this.restoreParsePosition)\t{\n\t\tif (!this.restoreParsePosition()) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\twhile (true) {\n\n\t\tif (this.hasIncompleteMdat && this.hasIncompleteMdat()) {\n\t\t\tif (this.processIncompleteMdat()) {\n\t\t\t\tcontinue;\n\t\t\t} else {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else {\n\t\t\tif (this.saveParsePosition)\t{\n\t\t\t\tthis.saveParsePosition();\n\t\t\t}\n\t\t\tret = BoxParser.parseOneBox(this.stream, parseBoxHeadersOnly);\n\t\t\tif (ret.code === BoxParser.ERR_NOT_ENOUGH_DATA) {\n\t\t\t\tif (this.processIncompleteBox) {\n\t\t\t\t\tif (this.processIncompleteBox(ret)) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar box_type;\n\t\t\t\t/* the box is entirely parsed */\n\t\t\t\tbox = ret.box;\n\t\t\t\tbox_type = (box.type !== \"uuid\" ? box.type : box.uuid);\n\t\t\t\t/* store the box in the 'boxes' array to preserve box order (for file rewrite if needed) */\n\t\t\t\tthis.boxes.push(box);\n\t\t\t\t/* but also store box in a property for more direct access */\n\t\t\t\tswitch (box_type) {\n\t\t\t\t\tcase \"mdat\":\n\t\t\t\t\t\tthis.mdats.push(box);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"moof\":\n\t\t\t\t\t\tthis.moofs.push(box);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"moov\":\n\t\t\t\t\t\tthis.moovStartFound = true;\n\t\t\t\t\t\tif (this.mdats.length === 0) {\n\t\t\t\t\t\t\tthis.isProgressive = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t/* no break */\n\t\t\t\t\t\t/* falls through */\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif (this[box_type] !== undefined) {\n\t\t\t\t\t\t\tLog.warn(\"ISOFile\", \"Duplicate Box of type: \"+box_type+\", overriding previous occurrence\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis[box_type] = box;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (this.updateUsedBytes) {\n\t\t\t\t\tthis.updateUsedBytes(box, ret);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nISOFile.prototype.checkBuffer = function (ab) {\n\tif (ab === null || ab === undefined) {\n\t\tthrow(\"Buffer must be defined and non empty\");\n\t}\n\tif (ab.fileStart === undefined) {\n\t\tthrow(\"Buffer must have a fileStart property\");\n\t}\n\tif (ab.byteLength === 0) {\n\t\tLog.warn(\"ISOFile\", \"Ignoring empty buffer (fileStart: \"+ab.fileStart+\")\");\n\t\tthis.stream.logBufferLevel();\n\t\treturn false;\n\t}\n\tLog.info(\"ISOFile\", \"Processing buffer (fileStart: \"+ab.fileStart+\")\");\n\n\t/* mark the bytes in the buffer as not being used yet */\n\tab.usedBytes = 0;\n\tthis.stream.insertBuffer(ab);\n\tthis.stream.logBufferLevel();\n\n\tif (!this.stream.initialized()) {\n\t\tLog.warn(\"ISOFile\", \"Not ready to start parsing\");\n\t\treturn false;\n\t}\n\treturn true;\n}\n\n/* Processes a new ArrayBuffer (with a fileStart property)\n Returns the next expected file position, or undefined if not ready to parse */\nISOFile.prototype.appendBuffer = function(ab, last) {\n\tvar nextFileStart;\n\tif (!this.checkBuffer(ab)) {\n\t\treturn;\n\t}\n\n\t/* Parse whatever is in the existing buffers */\n\tthis.parse();\n\n\t/* Check if the moovStart callback needs to be called */\n\tif (this.moovStartFound && !this.moovStartSent) {\n\t\tthis.moovStartSent = true;\n\t\tif (this.onMoovStart) this.onMoovStart();\n\t}\n\n\tif (this.moov) {\n\t\t/* A moov box has been entirely parsed */\n\n\t\t/* if this is the first call after the moov is found we initialize the list of samples (may be empty in fragmented files) */\n\t\tif (!this.sampleListBuilt) {\n\t\t\tthis.buildSampleLists();\n\t\t\tthis.sampleListBuilt = true;\n\t\t}\n\n\t\t/* We update the sample information if there are any new moof boxes */\n\t\tthis.updateSampleLists();\n\n\t\t/* If the application needs to be informed that the 'moov' has been found,\n\t\t we create the information object and callback the application */\n\t\tif (this.onReady && !this.readySent) {\n\t\t\tthis.readySent = true;\n\t\t\tthis.onReady(this.getInfo());\n\t\t}\n\n\t\t/* See if any sample extraction or segment creation needs to be done with the available samples */\n\t\tthis.processSamples(last);\n\n\t\t/* Inform about the best range to fetch next */\n\t\tif (this.nextSeekPosition) {\n\t\t\tnextFileStart = this.nextSeekPosition;\n\t\t\tthis.nextSeekPosition = undefined;\n\t\t} else {\n\t\t\tnextFileStart = this.nextParsePosition;\n\t\t}\n\t\tif (this.stream.getEndFilePositionAfter) {\n\t\t\tnextFileStart = this.stream.getEndFilePositionAfter(nextFileStart);\n\t\t}\n\t} else {\n\t\tif (this.nextParsePosition) {\n\t\t\t/* moov has not been parsed but the first buffer was received,\n\t\t\t the next fetch should probably be the next box start */\n\t\t\tnextFileStart = this.nextParsePosition;\n\t\t} else {\n\t\t\t/* No valid buffer has been parsed yet, we cannot know what to parse next */\n\t\t\tnextFileStart = 0;\n\t\t}\n\t}\n\tif (this.sidx) {\n\t\tif (this.onSidx && !this.sidxSent) {\n\t\t\tthis.onSidx(this.sidx);\n\t\t\tthis.sidxSent = true;\n\t\t}\n\t}\n\tif (this.meta) {\n\t\tif (this.flattenItemInfo && !this.itemListBuilt) {\n\t\t\tthis.flattenItemInfo();\n\t\t\tthis.itemListBuilt = true;\n\t\t}\n\t\tif (this.processItems) {\n\t\t\tthis.processItems(this.onItem);\n\t\t}\n\t}\n\n\tif (this.stream.cleanBuffers) {\n\t\tLog.info(\"ISOFile\", \"Done processing buffer (fileStart: \"+ab.fileStart+\") - next buffer to fetch should have a fileStart position of \"+nextFileStart);\n\t\tthis.stream.logBufferLevel();\n\t\tthis.stream.cleanBuffers();\n\t\tthis.stream.logBufferLevel(true);\n\t\tLog.info(\"ISOFile\", \"Sample data size in memory: \"+this.getAllocatedSampleDataSize());\n\t}\n\treturn nextFileStart;\n}\n\nISOFile.prototype.getInfo = function() {\n\tvar i, j;\n\tvar movie = {};\n\tvar trak;\n\tvar track;\n\tvar ref;\n\tvar sample_desc;\n\tvar _1904 = (new Date('1904-01-01T00:00:00Z').getTime());\n\n\tif (this.moov) {\n\t\tmovie.hasMoov = true;\n\t\tmovie.duration = this.moov.mvhd.duration;\n\t\tmovie.timescale = this.moov.mvhd.timescale;\n\t\tmovie.isFragmented = (this.moov.mvex != null);\n\t\tif (movie.isFragmented && this.moov.mvex.mehd) {\n\t\t\tmovie.fragment_duration = this.moov.mvex.mehd.fragment_duration;\n\t\t}\n\t\tmovie.isProgressive = this.isProgressive;\n\t\tmovie.hasIOD = (this.moov.iods != null);\n\t\tmovie.brands = [];\n\t\tmovie.brands.push(this.ftyp.major_brand);\n\t\tmovie.brands = movie.brands.concat(this.ftyp.compatible_brands);\n\t\tmovie.created = new Date(_1904+this.moov.mvhd.creation_time*1000);\n\t\tmovie.modified = new Date(_1904+this.moov.mvhd.modification_time*1000);\n\t\tmovie.tracks = [];\n\t\tmovie.audioTracks = [];\n\t\tmovie.videoTracks = [];\n\t\tmovie.subtitleTracks = [];\n\t\tmovie.metadataTracks = [];\n\t\tmovie.hintTracks = [];\n\t\tmovie.otherTracks = [];\n\t\tfor (i = 0; i < this.moov.traks.length; i++) {\n\t\t\ttrak = this.moov.traks[i];\n\t\t\tsample_desc = trak.mdia.minf.stbl.stsd.entries[0];\n\t\t\ttrack = {};\n\t\t\tmovie.tracks.push(track);\n\t\t\ttrack.id = trak.tkhd.track_id;\n\t\t\ttrack.name = trak.mdia.hdlr.name;\n\t\t\ttrack.references = [];\n\t\t\tif (trak.tref) {\n\t\t\t\tfor (j = 0; j < trak.tref.boxes.length; j++) {\n\t\t\t\t\tref = {};\n\t\t\t\t\ttrack.references.push(ref);\n\t\t\t\t\tref.type = trak.tref.boxes[j].type;\n\t\t\t\t\tref.track_ids = trak.tref.boxes[j].track_ids;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (trak.edts) {\n\t\t\t\ttrack.edits = trak.edts.elst.entries;\n\t\t\t}\n\t\t\ttrack.created = new Date(_1904+trak.tkhd.creation_time*1000);\n\t\t\ttrack.modified = new Date(_1904+trak.tkhd.modification_time*1000);\n\t\t\ttrack.movie_duration = trak.tkhd.duration;\n\t\t\ttrack.movie_timescale = movie.timescale;\n\t\t\ttrack.layer = trak.tkhd.layer;\n\t\t\ttrack.alternate_group = trak.tkhd.alternate_group;\n\t\t\ttrack.volume = trak.tkhd.volume;\n\t\t\ttrack.matrix = trak.tkhd.matrix;\n\t\t\ttrack.track_width = trak.tkhd.width/(1<<16);\n\t\t\ttrack.track_height = trak.tkhd.height/(1<<16);\n\t\t\ttrack.timescale = trak.mdia.mdhd.timescale;\n\t\t\ttrack.cts_shift = trak.mdia.minf.stbl.cslg;\n\t\t\ttrack.duration = trak.mdia.mdhd.duration;\n\t\t\ttrack.samples_duration = trak.samples_duration;\n\t\t\ttrack.codec = sample_desc.getCodec();\n\t\t\ttrack.kind = (trak.udta && trak.udta.kinds.length ? trak.udta.kinds[0] : { schemeURI: \"\", value: \"\"});\n\t\t\ttrack.language = (trak.mdia.elng ? trak.mdia.elng.extended_language : trak.mdia.mdhd.languageString);\n\t\t\ttrack.nb_samples = trak.samples.length;\n\t\t\ttrack.size = trak.samples_size;\n\t\t\ttrack.bitrate = (track.size*8*track.timescale)/track.samples_duration;\n\t\t\tif (sample_desc.isAudio()) {\n\t\t\t\ttrack.type = \"audio\";\n\t\t\t\tmovie.audioTracks.push(track);\n\t\t\t\ttrack.audio = {};\n\t\t\t\ttrack.audio.sample_rate = sample_desc.getSampleRate();\n\t\t\t\ttrack.audio.channel_count = sample_desc.getChannelCount();\n\t\t\t\ttrack.audio.sample_size = sample_desc.getSampleSize();\n\t\t\t} else if (sample_desc.isVideo()) {\n\t\t\t\ttrack.type = \"video\";\n\t\t\t\tmovie.videoTracks.push(track);\n\t\t\t\ttrack.video = {};\n\t\t\t\ttrack.video.width = sample_desc.getWidth();\n\t\t\t\ttrack.video.height = sample_desc.getHeight();\n\t\t\t} else if (sample_desc.isSubtitle()) {\n\t\t\t\ttrack.type = \"subtitles\";\n\t\t\t\tmovie.subtitleTracks.push(track);\n\t\t\t} else if (sample_desc.isHint()) {\n\t\t\t\ttrack.type = \"metadata\";\n\t\t\t\tmovie.hintTracks.push(track);\n\t\t\t} else if (sample_desc.isMetadata()) {\n\t\t\t\ttrack.type = \"metadata\";\n\t\t\t\tmovie.metadataTracks.push(track);\n\t\t\t} else {\n\t\t\t\ttrack.type = \"metadata\";\n\t\t\t\tmovie.otherTracks.push(track);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tmovie.hasMoov = false;\n\t}\n\tmovie.mime = \"\";\n\tif (movie.hasMoov && movie.tracks) {\n\t\tif (movie.videoTracks && movie.videoTracks.length > 0) {\n\t\t\tmovie.mime += 'video/mp4; codecs=\\\"';\n\t\t} else if (movie.audioTracks && movie.audioTracks.length > 0) {\n\t\t\tmovie.mime += 'audio/mp4; codecs=\\\"';\n\t\t} else {\n\t\t\tmovie.mime += 'application/mp4; codecs=\\\"';\n\t\t}\n\t\tfor (i = 0; i < movie.tracks.length; i++) {\n\t\t\tif (i !== 0) movie.mime += ',';\n\t\t\tmovie.mime+= movie.tracks[i].codec;\n\t\t}\n\t\tmovie.mime += '\\\"; profiles=\\\"';\n\t\tmovie.mime += this.ftyp.compatible_brands.join();\n\t\tmovie.mime += '\\\"';\n\t}\n\treturn movie;\n}\n\nISOFile.prototype.setNextSeekPositionFromSample = function (sample) {\n\tif (!sample) {\n\t\treturn;\n\t}\n\tif (this.nextSeekPosition) {\n\t\tthis.nextSeekPosition = Math.min(sample.offset+sample.alreadyRead,this.nextSeekPosition);\n\t} else {\n\t\tthis.nextSeekPosition = sample.offset+sample.alreadyRead;\n\t}\n}\n\nISOFile.prototype.processSamples = function(last) {\n\tvar i;\n\tvar trak;\n\tif (!this.sampleProcessingStarted) return;\n\n\t/* For each track marked for fragmentation,\n\t check if the next sample is there (i.e. if the sample information is known (i.e. moof has arrived) and if it has been downloaded)\n\t and create a fragment with it */\n\tif (this.isFragmentationInitialized && this.onSegment !== null) {\n\t\tfor (i = 0; i < this.fragmentedTracks.length; i++) {\n\t\t\tvar fragTrak = this.fragmentedTracks[i];\n\t\t\ttrak = fragTrak.trak;\n\t\t\twhile (trak.nextSample < trak.samples.length && this.sampleProcessingStarted) {\n\t\t\t\t/* The sample information is there (either because the file is not fragmented and this is not the last sample,\n\t\t\t\tor because the file is fragmented and the moof for that sample has been received */\n\t\t\t\tLog.debug(\"ISOFile\", \"Creating media fragment on track #\"+fragTrak.id +\" for sample \"+trak.nextSample);\n\t\t\t\tvar result = this.createFragment(fragTrak.id, trak.nextSample, fragTrak.segmentStream);\n\t\t\t\tif (result) {\n\t\t\t\t\tfragTrak.segmentStream = result;\n\t\t\t\t\ttrak.nextSample++;\n\t\t\t\t} else {\n\t\t\t\t\t/* The fragment could not be created because the media data is not there (not downloaded), wait for it */\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t/* A fragment is created by sample, but the segment is the accumulation in the buffer of these fragments.\n\t\t\t\t It is flushed only as requested by the application (nb_samples) to avoid too many callbacks */\n\t\t\t\tif (trak.nextSample % fragTrak.nb_samples === 0 || (last || trak.nextSample >= trak.samples.length)) {\n\t\t\t\t\tLog.info(\"ISOFile\", \"Sending fragmented data on track #\"+fragTrak.id+\" for samples [\"+Math.max(0,trak.nextSample-fragTrak.nb_samples)+\",\"+(trak.nextSample-1)+\"]\");\n\t\t\t\t\tLog.info(\"ISOFile\", \"Sample data size in memory: \"+this.getAllocatedSampleDataSize());\n\t\t\t\t\tif (this.onSegment) {\n\t\t\t\t\t\tthis.onSegment(fragTrak.id, fragTrak.user, fragTrak.segmentStream.buffer, trak.nextSample, (last || trak.nextSample >= trak.samples.length));\n\t\t\t\t\t}\n\t\t\t\t\t/* force the creation of a new buffer */\n\t\t\t\t\tfragTrak.segmentStream = null;\n\t\t\t\t\tif (fragTrak !== this.fragmentedTracks[i]) {\n\t\t\t\t\t\t/* make sure we can stop fragmentation if needed */\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif (this.onSamples !== null) {\n\t\t/* For each track marked for data export,\n\t\t check if the next sample is there (i.e. has been downloaded) and send it */\n\t\tfor (i = 0; i < this.extractedTracks.length; i++) {\n\t\t\tvar extractTrak = this.extractedTracks[i];\n\t\t\ttrak = extractTrak.trak;\n\t\t\twhile (trak.nextSample < trak.samples.length && this.sampleProcessingStarted) {\n\t\t\t\tLog.debug(\"ISOFile\", \"Exporting on track #\"+extractTrak.id +\" sample #\"+trak.nextSample);\n\t\t\t\tvar sample = this.getSample(trak, trak.nextSample);\n\t\t\t\tif (sample) {\n\t\t\t\t\ttrak.nextSample++;\n\t\t\t\t\textractTrak.samples.push(sample);\n\t\t\t\t} else {\n\t\t\t\t\tthis.setNextSeekPositionFromSample(trak.samples[trak.nextSample]);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (trak.nextSample % extractTrak.nb_samples === 0 || trak.nextSample >= trak.samples.length) {\n\t\t\t\t\tLog.debug(\"ISOFile\", \"Sending samples on track #\"+extractTrak.id+\" for sample \"+trak.nextSample);\n\t\t\t\t\tif (this.onSamples) {\n\t\t\t\t\t\tthis.onSamples(extractTrak.id, extractTrak.user, extractTrak.samples);\n\t\t\t\t\t}\n\t\t\t\t\textractTrak.samples = [];\n\t\t\t\t\tif (extractTrak !== this.extractedTracks[i]) {\n\t\t\t\t\t\t/* check if the extraction needs to be stopped */\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n/* Find and return specific boxes using recursion and early return */\nISOFile.prototype.getBox = function(type) {\n var result = this.getBoxes(type, true);\n return (result.length ? result[0] : null);\n}\n\nISOFile.prototype.getBoxes = function(type, returnEarly) {\n var result = [];\n ISOFile._sweep.call(this, type, result, returnEarly);\n return result;\n}\n\nISOFile._sweep = function(type, result, returnEarly) {\n if (this.type && this.type == type) result.push(this);\n for (var box in this.boxes) {\n if (result.length && returnEarly) return;\n ISOFile._sweep.call(this.boxes[box], type, result, returnEarly);\n }\n}\n\nISOFile.prototype.getTrackSamplesInfo = function(track_id) {\n\tvar track = this.getTrackById(track_id);\n\tif (track) {\n\t\treturn track.samples;\n\t} else {\n\t\treturn;\n\t}\n}\n\nISOFile.prototype.getTrackSample = function(track_id, number) {\n\tvar track = this.getTrackById(track_id);\n\tvar sample = this.getSample(track, number);\n\treturn sample;\n}\n\n/* Called by the application to release the resources associated to samples already forwarded to the application */\nISOFile.prototype.releaseUsedSamples = function (id, sampleNum) {\n\tvar size = 0;\n\tvar trak = this.getTrackById(id);\n\tif (!trak.lastValidSample) trak.lastValidSample = 0;\n\tfor (var i = trak.lastValidSample; i < sampleNum; i++) {\n\t\tsize+=this.releaseSample(trak, i);\n\t}\n\tLog.info(\"ISOFile\", \"Track #\"+id+\" released samples up to \"+sampleNum+\" (released size: \"+size+\", remaining: \"+this.samplesDataSize+\")\");\n\ttrak.lastValidSample = sampleNum;\n}\n\nISOFile.prototype.start = function() {\n\tthis.sampleProcessingStarted = true;\n\tthis.processSamples(false);\n}\n\nISOFile.prototype.stop = function() {\n\tthis.sampleProcessingStarted = false;\n}\n\n/* Called by the application to flush the remaining samples (e.g. once the download is finished or when no more samples will be added) */\nISOFile.prototype.flush = function() {\n\tLog.info(\"ISOFile\", \"Flushing remaining samples\");\n\tthis.updateSampleLists();\n\tthis.processSamples(true);\n\tthis.stream.cleanBuffers();\n\tthis.stream.logBufferLevel(true);\n}\n\n/* Finds the byte offset for a given time on a given track\n also returns the time of the previous rap */\nISOFile.prototype.seekTrack = function(time, useRap, trak) {\n\tvar j;\n\tvar sample;\n\tvar seek_offset = Infinity;\n\tvar rap_seek_sample_num = 0;\n\tvar seek_sample_num = 0;\n\tvar timescale;\n\n\tif (trak.samples.length === 0) {\n\t\tLog.info(\"ISOFile\", \"No sample in track, cannot seek! Using time \"+Log.getDurationString(0, 1) +\" and offset: \"+0);\n\t\treturn { offset: 0, time: 0 };\n\t}\n\n\tfor (j = 0; j < trak.samples.length; j++) {\n\t\tsample = trak.samples[j];\n\t\tif (j === 0) {\n\t\t\tseek_sample_num = 0;\n\t\t\ttimescale = sample.timescale;\n\t\t} else if (sample.cts > time * sample.timescale) {\n\t\t\tseek_sample_num = j-1;\n\t\t\tbreak;\n\t\t}\n\t\tif (useRap && sample.is_sync) {\n\t\t\trap_seek_sample_num = j;\n\t\t}\n\t}\n\tif (useRap) {\n\t\tseek_sample_num = rap_seek_sample_num;\n\t}\n\ttime = trak.samples[seek_sample_num].cts;\n\ttrak.nextSample = seek_sample_num;\n\twhile (trak.samples[seek_sample_num].alreadyRead === trak.samples[seek_sample_num].size) {\n\t\t// No remaining samples to look for, all are downloaded.\n\t\tif (!trak.samples[seek_sample_num + 1]) {\n\t\t\tbreak;\n\t\t}\n\t\tseek_sample_num++;\n\t}\n\tseek_offset = trak.samples[seek_sample_num].offset+trak.samples[seek_sample_num].alreadyRead;\n\tLog.info(\"ISOFile\", \"Seeking to \"+(useRap ? \"RAP\": \"\")+\" sample #\"+trak.nextSample+\" on track \"+trak.tkhd.track_id+\", time \"+Log.getDurationString(time, timescale) +\" and offset: \"+seek_offset);\n\treturn { offset: seek_offset, time: time/timescale };\n}\n\nISOFile.prototype.getTrackDuration = function (trak) {\n\tvar sample;\n\n\tif (!trak.samples) {\n\t\treturn Infinity;\n\t}\n\tsample = trak.samples[trak.samples.length - 1];\n\treturn (sample.cts + sample.duration) / sample.timescale;\n}\n\n/* Finds the byte offset in the file corresponding to the given time or to the time of the previous RAP */\nISOFile.prototype.seek = function(time, useRap) {\n\tvar moov = this.moov;\n\tvar trak;\n\tvar trak_seek_info;\n\tvar i;\n\tvar seek_info = { offset: Infinity, time: Infinity };\n\tif (!this.moov) {\n\t\tthrow \"Cannot seek: moov not received!\";\n\t} else {\n\t\tfor (i = 0; i<moov.traks.length; i++) {\n\t\t\ttrak = moov.traks[i];\n\t\t\tif (time > this.getTrackDuration(trak)) { // skip tracks that already ended\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\ttrak_seek_info = this.seekTrack(time, useRap, trak);\n\t\t\tif (trak_seek_info.offset < seek_info.offset) {\n\t\t\t\tseek_info.offset = trak_seek_info.offset;\n\t\t\t}\n\t\t\tif (trak_seek_info.time < seek_info.time) {\n\t\t\t\tseek_info.time = trak_seek_info.time;\n\t\t\t}\n\t\t}\n\t\tLog.info(\"ISOFile\", \"Seeking at time \"+Log.getDurationString(seek_info.time, 1)+\" needs a buffer with a fileStart position of \"+seek_info.offset);\n\t\tif (seek_info.offset === Infinity) {\n\t\t\t/* No sample info, in all tracks, cannot seek */\n\t\t\tseek_info = { offset: this.nextParsePosition, time: 0 };\n\t\t} else {\n\t\t\t/* check if the seek position is already in some buffer and\n\t\t\t in that case return the end of that buffer (or of the last contiguous buffer) */\n\t\t\t/* TODO: Should wait until append operations are done */\n\t\t\tseek_info.offset = this.stream.getEndFilePositionAfter(seek_info.offset);\n\t\t}\n\t\tLog.info(\"ISOFile\", \"Adjusted seek position (after checking data already in buffer): \"+seek_info.offset);\n\t\treturn seek_info;\n\t}\n}\n\nISOFile.prototype.equal = function(b) {\n\tvar box_index = 0;\n\twhile (box_index < this.boxes.length && box_index < b.boxes.length) {\n\t\tvar a_box = this.boxes[box_index];\n\t\tvar b_box = b.boxes[box_index];\n\t\tif (!BoxParser.boxEqual(a_box, b_box)) {\n\t\t\treturn false;\n\t\t}\n\t\tbox_index++;\n\t}\n\treturn true;\n}\n\nif (typeof exports !== 'undefined') {\n\texports.ISOFile = ISOFile;\n}\n// file:src/isofile-advanced-parsing.js\n/* position in the current buffer of the beginning of the last box parsed */\nISOFile.prototype.lastBoxStartPosition = 0;\n/* indicator if the parsing is stuck in the middle of an mdat box */\nISOFile.prototype.parsingMdat = null;\n/* next file position that the parser needs:\n - 0 until the first buffer (i.e. fileStart ===0) has been received \n - otherwise, the next box start until the moov box has been parsed\n - otherwise, the position of the next sample to fetch\n */\nISOFile.prototype.nextParsePosition = 0;\n/* keep mdat data */\nISOFile.prototype.discardMdatData = false;\n\nISOFile.prototype.processIncompleteBox = function(ret) {\n\tvar box;\n\tvar merged;\n\tvar found;\n\t\n\t/* we did not have enough bytes in the current buffer to parse the entire box */\n\tif (ret.type === \"mdat\") { \n\t\t/* we had enough bytes to get its type and size and it's an 'mdat' */\n\t\t\n\t\t/* special handling for mdat boxes, since we don't actually need to parse it linearly \n\t\t we create the box */\n\t\tbox = new BoxParser[ret.type+\"Box\"](ret.size);\t\n\t\tthis.parsingMdat = box;\n\t\tthis.boxes.push(box);\n\t\tthis.mdats.push(box);\t\t\t\n\t\tbox.start = ret.start;\n\t\tbox.hdr_size = ret.hdr_size;\n\t\tthis.stream.addUsedBytes(box.hdr_size);\n\n\t\t/* indicate that the parsing should start from the end of the box */\n\t\tthis.lastBoxStartPosition = box.start + box.size;\n \t\t/* let's see if we have the end of the box in the other buffers */\n\t\tfound = this.stream.seek(box.start + box.size, false, this.discardMdatData);\n\t\tif (found) {\n\t\t\t/* found the end of the box */\n\t\t\tthis.parsingMdat = null;\n\t\t\t/* let's see if we can parse more in this buffer */\n\t\t\treturn true;\n\t\t} else {\n\t\t\t/* 'mdat' end not found in the existing buffers */\n\t\t\t/* determine the next position in the file to start parsing from */\n\t\t\tif (!this.moovStartFound) {\n\t\t\t\t/* moov not find yet, \n\t\t\t\t the file probably has 'mdat' at the beginning, and 'moov' at the end, \n\t\t\t\t indicate that the downloader should not try to download those bytes now */\n\t\t\t\tthis.nextParsePosition = box.start + box.size;\n\t\t\t} else {\n\t\t\t\t/* we have the start of the moov box, \n\t\t\t\t the next bytes should try to complete the current 'mdat' */\n\t\t\t\tthis.nextParsePosition = this.stream.findEndContiguousBuf();\n\t\t\t}\n\t\t\t/* not much we can do, wait for more buffers to arrive */\n\t\t\treturn false;\n\t\t}\n\t} else {\n\t\t/* box is incomplete, we may not even know its type */\n\t\tif (ret.type === \"moov\") { \n\t\t\t/* the incomplete box is a 'moov' box */\n\t\t\tthis.moovStartFound = true;\n\t\t\tif (this.mdats.length === 0) {\n\t\t\t\tthis.isProgressive = true;\n\t\t\t}\n\t\t}\n\t\t/* either it's not an mdat box (and we need to parse it, we cannot skip it)\n\t\t (TODO: we could skip 'free' boxes ...)\n\t\t\t or we did not have enough data to parse the type and size of the box, \n\t\t we try to concatenate the current buffer with the next buffer to restart parsing */\n\t\tmerged = (this.stream.mergeNextBuffer ? this.stream.mergeNextBuffer() : false);\n\t\tif (merged) {\n\t\t\t/* The next buffer was contiguous, the merging succeeded,\n\t\t\t we can now continue parsing, \n\t\t\t the next best position to parse is at the end of this new buffer */\n\t\t\tthis.nextParsePosition = this.stream.getEndPosition();\n\t\t\treturn true;\n\t\t} else {\n\t\t\t/* we cannot concatenate existing buffers because they are not contiguous or because there is no additional buffer */\n\t\t\t/* The next best position to parse is still at the end of this old buffer */\n\t\t\tif (!ret.type) {\n\t\t\t\t/* There were not enough bytes in the buffer to parse the box type and length,\n\t\t\t\t the next fetch should retrieve those missing bytes, i.e. the next bytes after this buffer */\n\t\t\t\tthis.nextParsePosition = this.stream.getEndPosition();\n\t\t\t} else {\n\t\t\t\t/* we had enough bytes to parse size and type of the incomplete box\n\t\t\t\t if we haven't found yet the moov box, skip this one and try the next one \n\t\t\t\t if we have found the moov box, let's continue linear parsing */\n\t\t\t\tif (this.moovStartFound) {\n\t\t\t\t\tthis.nextParsePosition = this.stream.getEndPosition();\n\t\t\t\t} else {\n\t\t\t\t\tthis.nextParsePosition = this.stream.getPosition() + ret.size;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}\n}\n\nISOFile.prototype.hasIncompleteMdat = function () {\n\treturn (this.parsingMdat !== null);\n}\n\nISOFile.prototype.processIncompleteMdat = function () {\n\tvar box;\n\tvar found;\n\t\n\t/* we are in the parsing of an incomplete mdat box */\n\tbox = this.parsingMdat;\n\n\tfound = this.stream.seek(box.start + box.size, false, this.discardMdatData);\n\tif (found) {\n\t\tLog.debug(\"ISOFile\", \"Found 'mdat' end in buffered data\");\n\t\t/* the end of the mdat has been found */ \n\t\tthis.parsingMdat = null;\n\t\t/* we can parse more in this buffer */\n\t\treturn true;\n\t} else {\n\t\t/* we don't have the end of this mdat yet, \n\t\t indicate that the next byte to fetch is the end of the buffers we have so far, \n\t\t return and wait for more buffer to come */\n\t\tthis.nextParsePosition = this.stream.findEndContiguousBuf();\n\t\treturn false;\n\t}\n}\n\nISOFile.prototype.restoreParsePosition = function() {\n\t/* Reposition at the start position of the previous box not entirely parsed */\n\treturn this.stream.seek(this.lastBoxStartPosition, true, this.discardMdatData);\n}\n\nISOFile.prototype.saveParsePosition = function() {\n\t/* remember the position of the box start in case we need to roll back (if the box is incomplete) */\n\tthis.lastBoxStartPosition = this.stream.getPosition();\t\n}\n\nISOFile.prototype.updateUsedBytes = function(box, ret) {\n\tif (this.stream.addUsedBytes) {\n\t\tif (box.type === \"mdat\") {\n\t\t\t/* for an mdat box, only its header is considered used, other bytes will be used when sample data is requested */\n\t\t\tthis.stream.addUsedBytes(box.hdr_size);\n\t\t\tif (this.discardMdatData) {\n\t\t\t\tthis.stream.addUsedBytes(box.size-box.hdr_size);\n\t\t\t}\n\t\t} else {\n\t\t\t/* for all other boxes, the entire box data is considered used */\n\t\t\tthis.stream.addUsedBytes(box.size);\n\t\t}\t\n\t}\n}\n// file:src/isofile-advanced-creation.js\nISOFile.prototype.add = BoxParser.Box.prototype.add;\nISOFile.prototype.addBox = BoxParser.Box.prototype.addBox;\n\nISOFile.prototype.init = function (_options) {\n\tvar options = _options || {}; \n\tvar ftyp = this.add(\"ftyp\").set(\"major_brand\", (options.brands && options.brands[0]) || \"iso4\")\n\t\t\t\t\t\t\t .set(\"minor_version\", 0)\n\t\t\t\t\t\t\t .set(\"compatible_brands\", options.brands || [\"iso4\"]);\n\tvar moov = this.add(\"moov\");\n\tmoov.add(\"mvhd\").set(\"timescale\", options.timescale || 600)\n\t\t\t\t\t.set(\"rate\", options.rate || 1<<16)\n\t\t\t\t\t.set(\"creation_time\", 0)\n\t\t\t\t\t.set(\"modification_time\", 0)\n\t\t\t\t\t.set(\"duration\", options.duration || 0)\n\t\t\t\t\t.set(\"volume\", (options.width) ? 0 : 0x0100)\n\t\t\t\t\t.set(\"matrix\", [ 1<<16, 0, 0, 0, 1<<16, 0, 0, 0, 0x40000000])\n\t\t\t\t\t.set(\"next_track_id\", 1);\n\tmoov.add(\"mvex\");\n\treturn this;\n}\n\nISOFile.prototype.addTrack = function (_options) {\n\tif (!this.moov) {\n\t\tthis.init(_options);\n\t}\n\n\tvar options = _options || {}; \n\toptions.width = options.width || 320;\n\toptions.height = options.height || 320;\n\toptions.id = options.id || this.moov.mvhd.next_track_id;\n\toptions.type = options.type || \"avc1\";\n\n\tvar trak = this.moov.add(\"trak\");\n\tthis.moov.mvhd.next_track_id = options.id+1;\n\ttrak.add(\"tkhd\").set(\"flags\",BoxParser.TKHD_FLAG_ENABLED | \n\t\t\t\t\t\t\t\t BoxParser.TKHD_FLAG_IN_MOVIE | \n\t\t\t\t\t\t\t\t BoxParser.TKHD_FLAG_IN_PREVIEW)\n\t\t\t\t\t.set(\"creation_time\",0)\n\t\t\t\t\t.set(\"modification_time\", 0)\n\t\t\t\t\t.set(\"track_id\", options.id)\n\t\t\t\t\t.set(\"duration\", options.duration || 0)\n\t\t\t\t\t.set(\"layer\", options.layer || 0)\n\t\t\t\t\t.set(\"alternate_group\", 0)\n\t\t\t\t\t.set(\"volume\", 1)\n\t\t\t\t\t.set(\"matrix\", [ 1<<16, 0, 0, 0, 1<<16, 0, 0, 0, 0x40000000 ])\n\t\t\t\t\t.set(\"width\", options.width << 16)\n\t\t\t\t\t.set(\"height\", options.height << 16);\n\n\tvar mdia = trak.add(\"mdia\");\n\tmdia.add(\"mdhd\").set(\"creation_time\", 0)\n\t\t\t\t\t.set(\"modification_time\", 0)\n\t\t\t\t\t.set(\"timescale\", options.timescale || 1)\n\t\t\t\t\t.set(\"duration\", options.media_duration || 0)\n\t\t\t\t\t.set(\"language\", options.language || \"und\");\n\n\tmdia.add(\"hdlr\").set(\"handler\", options.hdlr || \"vide\")\n\t\t\t\t\t.set(\"name\", options.name || \"Track created with MP4Box.js\");\n\n\tmdia.add(\"elng\").set(\"extended_language\", options.language || \"fr-FR\");\n\n\tvar minf = mdia.add(\"minf\");\n\tif (BoxParser[options.type+\"SampleEntry\"] === undefined) return;\n\tvar sample_description_entry = new BoxParser[options.type+\"SampleEntry\"]();\n\tsample_description_entry.data_reference_index = 1;\n\tvar media_type = \"\";\n\tfor (var mediaType in BoxParser.sampleEntryCodes) {\n\t\tvar codes = BoxParser.sampleEntryCodes[mediaType];\n\t\tfor (var i = 0; i < codes.length; i++) {\n\t\t\tif (codes.indexOf(options.type) > -1) {\n\t\t\t\tmedia_type = mediaType;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tswitch(media_type) {\n\t\tcase \"Visual\":\n\t\t\tminf.add(\"vmhd\").set(\"graphicsmode\",0).set(\"opcolor\", [ 0, 0, 0 ]);\n\t\t\tsample_description_entry.set(\"width\", options.width)\n\t\t\t\t\t\t.set(\"height\", options.height)\n\t\t\t\t\t\t.set(\"horizresolution\", 0x48<<16)\n\t\t\t\t\t\t.set(\"vertresolution\", 0x48<<16)\n\t\t\t\t\t\t.set(\"frame_count\", 1)\n\t\t\t\t\t\t.set(\"compressorname\", options.type+\" Compressor\")\n\t\t\t\t\t\t.set(\"depth\", 0x18);\n\t\t\tif (options.avcDecoderConfigRecord) {\n\t\t\t\tvar avcC = new BoxParser.avcCBox();\n\t\t\t\tavcC.parse(new MP4BoxStream(options.avcDecoderConfigRecord));\n\t\t\t\tsample_description_entry.addBox(avcC);\n\t\t\t} else if (options.hevcDecoderConfigRecord) {\n\t\t\t\tvar hvcC = new BoxParser.hvcCBox();\n\t\t\t\thvcC.parse(new MP4BoxStream(options.hevcDecoderConfigRecord));\n\t\t\t\tsample_description_entry.addBox(hvcC);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"Audio\":\n\t\t\tminf.add(\"smhd\").set(\"balance\", options.balance || 0);\n\t\t\tsample_description_entry.set(\"channel_count\", options.channel_count || 2)\n\t\t\t\t\t\t.set(\"samplesize\", options.samplesize || 16)\n\t\t\t\t\t\t.set(\"samplerate\", options.samplerate || 1<<16);\n\t\t\tbreak;\n\t\tcase \"Hint\":\n\t\t\tminf.add(\"hmhd\"); // TODO: add properties\n\t\t\tbreak;\n\t\tcase \"Subtitle\":\n\t\t\tminf.add(\"sthd\");\n\t\t\tswitch (options.type) {\n\t\t\t\tcase \"stpp\":\n\t\t\t\t\tsample_description_entry.set(\"namespace\", options.namespace || \"nonamespace\")\n\t\t\t\t\t\t\t\t.set(\"schema_location\", options.schema_location || \"\")\n\t\t\t\t\t\t\t\t.set(\"auxiliary_mime_types\", options.auxiliary_mime_types || \"\");\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"Metadata\":\n\t\t\tminf.add(\"nmhd\");\n\t\t\tbreak;\n\t\tcase \"System\":\n\t\t\tminf.add(\"nmhd\");\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tminf.add(\"nmhd\");\n\t\t\tbreak;\n\t}\n\tif (options.description) {\n\t\tsample_description_entry.addBox(options.description);\n\t}\n\tif (options.description_boxes) {\n\t\toptions.description_boxes.forEach(function (b) {\n\t\t\tsample_description_entry.addBox(b);\n\t\t});\n\t}\n\tminf.add(\"dinf\").add(\"dref\").addEntry((new BoxParser[\"url Box\"]()).set(\"flags\", 0x1));\n\tvar stbl = minf.add(\"stbl\");\n\tstbl.add(\"stsd\").addEntry(sample_description_entry);\n\tstbl.add(\"stts\").set(\"sample_counts\", [])\n\t\t\t\t\t.set(\"sample_deltas\", []);\n\tstbl.add(\"stsc\").set(\"first_chunk\", [])\n\t\t\t\t\t.set(\"samples_per_chunk\", [])\n\t\t\t\t\t.set(\"sample_description_index\", []);\n\tstbl.add(\"stco\").set(\"chunk_offsets\", []);\n\tstbl.add(\"stsz\").set(\"sample_sizes\", []);\n\n\tthis.moov.mvex.add(\"trex\").set(\"track_id\", options.id)\n\t\t\t\t\t\t\t .set(\"default_sample_description_index\", options.default_sample_description_index || 1)\n\t\t\t\t\t\t\t .set(\"default_sample_duration\", options.default_sample_duration || 0)\n\t\t\t\t\t\t\t .set(\"default_sample_size\", options.default_sample_size || 0)\n\t\t\t\t\t\t\t .set(\"default_sample_flags\", options.default_sample_flags || 0);\n\tthis.buildTrakSampleLists(trak);\n\treturn options.id;\n}\n\nBoxParser.Box.prototype.computeSize = function(stream_) {\n\tvar stream = stream_ || new DataStream();\n\tstream.endianness = DataStream.BIG_ENDIAN;\n\tthis.write(stream);\n}\n\nISOFile.prototype.addSample = function (track_id, data, _options) {\n\tvar options = _options || {};\n\tvar sample = {};\n\tvar trak = this.getTrackById(track_id);\n\tif (trak === null) return;\n sample.number = trak.samples.length;\n\tsample.track_id = trak.tkhd.track_id;\n\tsample.timescale = trak.mdia.mdhd.timescale;\n\tsample.description_index = (options.sample_description_index ? options.sample_description_index - 1: 0);\n\tsample.description = trak.mdia.minf.stbl.stsd.entries[sample.description_index];\n\tsample.data = data;\n\tsample.size = data.byteLength;\n\tsample.alreadyRead = sample.size;\n\tsample.duration = options.duration || 1;\n\tsample.cts = options.cts || 0;\n\tsample.dts = options.dts || 0;\n\tsample.is_sync = options.is_sync || false;\n\tsample.is_leading = options.is_leading || 0;\n\tsample.depends_on = options.depends_on || 0;\n\tsample.is_depended_on = options.is_depended_on || 0;\n\tsample.has_redundancy = options.has_redundancy || 0;\n\tsample.degradation_priority = options.degradation_priority || 0;\n\tsample.offset = 0;\n\tsample.subsamples = options.subsamples;\n\ttrak.samples.push(sample);\n\ttrak.samples_size += sample.size;\n\ttrak.samples_duration += sample.duration;\n\tif (trak.first_dts === undefined) {\n\t\ttrak.first_dts = options.dts;\n\t}\n\n\tthis.processSamples();\n\t\n\tvar moof = this.createSingleSampleMoof(sample);\n\tthis.addBox(moof);\n\tmoof.computeSize();\n\t/* adjusting the data_offset now that the moof size is known*/\n\tmoof.trafs[0].truns[0].data_offset = moof.size+8; //8 is mdat header\n\tthis.add(\"mdat\").data = new Uint8Array(data);\n\treturn sample;\n}\n\nISOFile.prototype.createSingleSampleMoof = function(sample) {\n\tvar sample_flags = 0;\n\tif (sample.is_sync)\n\t\tsample_flags = (1 << 25); // sample_depends_on_none (I picture)\n\telse\n\t\tsample_flags = (1 << 16); // non-sync\n\n\tvar moof = new BoxParser.moofBox();\n\tmoof.add(\"mfhd\").set(\"sequence_number\", this.nextMoofNumber);\n\tthis.nextMoofNumber++;\n\tvar traf = moof.add(\"traf\");\n\tvar trak = this.getTrackById(sample.track_id);\n\ttraf.add(\"tfhd\").set(\"track_id\", sample.track_id)\n\t\t\t\t\t.set(\"flags\", BoxParser.TFHD_FLAG_DEFAULT_BASE_IS_MOOF);\n\ttraf.add(\"tfdt\").set(\"baseMediaDecodeTime\", (sample.dts - (trak.first_dts || 0)));\n\ttraf.add(\"trun\").set(\"flags\", BoxParser.TRUN_FLAGS_DATA_OFFSET | BoxParser.TRUN_FLAGS_DURATION | \n\t\t\t\t \t\t\t\t BoxParser.TRUN_FLAGS_SIZE | BoxParser.TRUN_FLAGS_FLAGS | \n\t\t\t\t \t\t\t\t BoxParser.TRUN_FLAGS_CTS_OFFSET)\n\t\t\t\t\t.set(\"data_offset\",0)\n\t\t\t\t\t.set(\"first_sample_flags\",0)\n\t\t\t\t\t.set(\"sample_count\",1)\n\t\t\t\t\t.set(\"sample_duration\",[sample.duration])\n\t\t\t\t\t.set(\"sample_size\",[sample.size])\n\t\t\t\t\t.set(\"sample_flags\",[sample_flags])\n\t\t\t\t\t.set(\"sample_composition_time_offset\", [sample.cts - sample.dts]);\n\treturn moof;\n}\n\n// file:src/isofile-sample-processing.js\n/* Index of the last moof box received */\nISOFile.prototype.lastMoofIndex = 0;\n\n/* size of the buffers allocated for samples */\nISOFile.prototype.samplesDataSize = 0;\n\n/* Resets all sample tables */\nISOFile.prototype.resetTables = function () {\n\tvar i;\n\tvar trak, stco, stsc, stsz, stts, ctts, stss;\n\tthis.initial_duration = this.moov.mvhd.duration;\n\tthis.moov.mvhd.duration = 0;\n\tfor (i = 0; i < this.moov.traks.length; i++) {\n\t\ttrak = this.moov.traks[i];\n\t\ttrak.tkhd.duration = 0;\n\t\ttrak.mdia.mdhd.duration = 0;\n\t\tstco = trak.mdia.minf.stbl.stco || trak.mdia.minf.stbl.co64;\n\t\tstco.chunk_offsets = [];\n\t\tstsc = trak.mdia.minf.stbl.stsc;\n\t\tstsc.first_chunk = [];\n\t\tstsc.samples_per_chunk = [];\n\t\tstsc.sample_description_index = [];\n\t\tstsz = trak.mdia.minf.stbl.stsz || trak.mdia.minf.stbl.stz2;\n\t\tstsz.sample_sizes = [];\n\t\tstts = trak.mdia.minf.stbl.stts;\n\t\tstts.sample_counts = [];\n\t\tstts.sample_deltas = [];\n\t\tctts = trak.mdia.minf.stbl.ctts;\n\t\tif (ctts) {\n\t\t\tctts.sample_counts = [];\n\t\t\tctts.sample_offsets = [];\n\t\t}\n\t\tstss = trak.mdia.minf.stbl.stss;\n\t\tvar k = trak.mdia.minf.stbl.boxes.indexOf(stss);\n\t\tif (k != -1) trak.mdia.minf.stbl.boxes[k] = null;\n\t}\n}\n\nISOFile.initSampleGroups = function(trak, traf, sbgps, trak_sgpds, traf_sgpds) {\n\tvar l;\n\tvar k;\n\tvar sample_groups_info;\n\tvar sample_group_info;\n\tvar sample_group_key;\n\tfunction SampleGroupInfo(_type, _parameter, _sbgp) {\n\t\tthis.grouping_type = _type;\n\t\tthis.grouping_type_parameter = _parameter;\n\t\tthis.sbgp = _sbgp;\n\t\tthis.last_sample_in_run = -1;\n\t\tthis.entry_index = -1;\t\t\n\t}\n\tif (traf) {\n\t\ttraf.sample_groups_info = [];\n\t} \n\tif (!trak.sample_groups_info) {\n\t\ttrak.sample_groups_info = [];\n\t}\n\tfor (k = 0; k < sbgps.length; k++) {\n\t\tsample_group_key = sbgps[k].grouping_type +\"/\"+ sbgps[k].grouping_type_parameter;\n\t\tsample_group_info = new SampleGroupInfo(sbgps[k].grouping_type, sbgps[k].grouping_type_parameter, sbgps[k]);\n\t\tif (traf) {\n\t\t\ttraf.sample_groups_info[sample_group_key] = sample_group_info;\n\t\t}\n\t\tif (!trak.sample_groups_info[sample_group_key]) {\n\t\t\ttrak.sample_groups_info[sample_group_key] = sample_group_info;\n\t\t}\n\t\tfor (l=0; l <trak_sgpds.length; l++) {\n\t\t\tif (trak_sgpds[l].grouping_type === sbgps[k].grouping_type) {\n\t\t\t\tsample_group_info.description = trak_sgpds[l];\n\t\t\t\tsample_group_info.description.used = true;\n\t\t\t}\n\t\t}\n\t\tif (traf_sgpds) {\n\t\t\tfor (l=0; l <traf_sgpds.length; l++) {\n\t\t\t\tif (traf_sgpds[l].grouping_type === sbgps[k].grouping_type) {\n\t\t\t\t\tsample_group_info.fragment_description = traf_sgpds[l];\n\t\t\t\t\tsample_group_info.fragment_description.used = true;\n\t\t\t\t\tsample_group_info.is_fragment = true;\n\t\t\t\t}\n\t\t\t}\t\t\t\n\t\t}\n\t}\n\tif (!traf) {\n\t\tfor (k = 0; k < trak_sgpds.length; k++) {\n\t\t\tif (!trak_sgpds[k].used && trak_sgpds[k].version >= 2) {\n\t\t\t\tsample_group_key = trak_sgpds[k].grouping_type +\"/0\";\n\t\t\t\tsample_group_info = new SampleGroupInfo(trak_sgpds[k].grouping_type, 0);\n\t\t\t\tif (!trak.sample_groups_info[sample_group_key]) {\n\t\t\t\t\ttrak.sample_groups_info[sample_group_key] = sample_group_info;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (traf_sgpds) {\n\t\t\tfor (k = 0; k < traf_sgpds.length; k++) {\n\t\t\t\tif (!traf_sgpds[k].used && traf_sgpds[k].version >= 2) {\n\t\t\t\t\tsample_group_key = traf_sgpds[k].grouping_type +\"/0\";\n\t\t\t\t\tsample_group_info = new SampleGroupInfo(traf_sgpds[k].grouping_type, 0);\n\t\t\t\t\tsample_group_info.is_fragment = true;\n\t\t\t\t\tif (!traf.sample_groups_info[sample_group_key]) {\n\t\t\t\t\t\ttraf.sample_groups_info[sample_group_key] = sample_group_info;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nISOFile.setSampleGroupProperties = function(trak, sample, sample_number, sample_groups_info) {\n\tvar k;\n\tvar index;\n\tsample.sample_groups = [];\n\tfor (k in sample_groups_info) {\n\t\tsample.sample_groups[k] = {};\n\t\tsample.sample_groups[k].grouping_type = sample_groups_info[k].grouping_type;\n\t\tsample.sample_groups[k].grouping_type_parameter = sample_groups_info[k].grouping_type_parameter;\n\t\tif (sample_number >= sample_groups_info[k].last_sample_in_run) {\n\t\t\tif (sample_groups_info[k].last_sample_in_run < 0) {\n\t\t\t\tsample_groups_info[k].last_sample_in_run = 0;\n\t\t\t}\n\t\t\tsample_groups_info[k].entry_index++;\t\n\t\t\tif (sample_groups_info[k].entry_index <= sample_groups_info[k].sbgp.entries.length - 1) {\n\t\t\t\tsample_groups_info[k].last_sample_in_run += sample_groups_info[k].sbgp.entries[sample_groups_info[k].entry_index].sample_count;\n\t\t\t}\n\t\t}\n\t\tif (sample_groups_info[k].entry_index <= sample_groups_info[k].sbgp.entries.length - 1) {\n\t\t\tsample.sample_groups[k].group_description_index = sample_groups_info[k].sbgp.entries[sample_groups_info[k].entry_index].group_description_index;\n\t\t} else {\n\t\t\tsample.sample_groups[k].group_description_index = -1; // special value for not defined\n\t\t}\n\t\tif (sample.sample_groups[k].group_description_index !== 0) {\n\t\t\tvar description;\n\t\t\tif (sample_groups_info[k].fragment_description) {\n\t\t\t\tdescription = sample_groups_info[k].fragment_description;\n\t\t\t} else {\n\t\t\t\tdescription = sample_groups_info[k].description;\n\t\t\t}\n\t\t\tif (sample.sample_groups[k].group_description_index > 0) {\n\t\t\t\tif (sample.sample_groups[k].group_description_index > 65535) {\n\t\t\t\t\tindex = (sample.sample_groups[k].group_description_index >> 16)-1;\n\t\t\t\t} else {\n\t\t\t\t\tindex = sample.sample_groups[k].group_description_index-1;\n\t\t\t\t}\n\t\t\t\tif (description && index >= 0) {\n\t\t\t\t\tsample.sample_groups[k].description = description.entries[index];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (description && description.version >= 2) {\n\t\t\t\t\tif (description.default_group_description_index > 0) {\t\t\t\t\t\t\t\t\n\t\t\t\t\t\tsample.sample_groups[k].description = description.entries[description.default_group_description_index-1];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nISOFile.process_sdtp = function (sdtp, sample, number) {\n\tif (!sample) {\n\t\treturn;\n\t}\n\tif (sdtp) {\n\t\tsample.is_leading = sdtp.is_leading[number];\n\t\tsample.depends_on = sdtp.sample_depends_on[number];\n\t\tsample.is_depended_on = sdtp.sample_is_depended_on[number];\n\t\tsample.has_redundancy = sdtp.sample_has_redundancy[number];\n\t} else {\n\t\tsample.is_leading = 0;\n\t\tsample.depends_on = 0;\n\t\tsample.is_depended_on = 0\n\t\tsample.has_redundancy = 0;\n\t}\t\n}\n\n/* Build initial sample list from sample tables */\nISOFile.prototype.buildSampleLists = function() {\t\n\tvar i;\n\tvar trak;\n\tfor (i = 0; i < this.moov.traks.length; i++) {\n\t\ttrak = this.moov.traks[i];\n\t\tthis.buildTrakSampleLists(trak);\n\t}\n}\n\nISOFile.prototype.buildTrakSampleLists = function(trak) {\t\n\tvar j, k;\n\tvar stco, stsc, stsz, stts, ctts, stss, stsd, subs, sbgps, sgpds, stdp;\n\tvar chunk_run_index, chunk_index, last_chunk_in_run, offset_in_chunk, last_sample_in_chunk;\n\tvar last_sample_in_stts_run, stts_run_index, last_sample_in_ctts_run, ctts_run_index, last_stss_index, last_subs_index, subs_entry_index, last_subs_sample_index;\n\n\ttrak.samples = [];\n\ttrak.samples_duration = 0;\n\ttrak.samples_size = 0;\n\tstco = trak.mdia.minf.stbl.stco || trak.mdia.minf.stbl.co64;\n\tstsc = trak.mdia.minf.stbl.stsc;\n\tstsz = trak.mdia.minf.stbl.stsz || trak.mdia.minf.stbl.stz2;\n\tstts = trak.mdia.minf.stbl.stts;\n\tctts = trak.mdia.minf.stbl.ctts;\n\tstss = trak.mdia.minf.stbl.stss;\n\tstsd = trak.mdia.minf.stbl.stsd;\n\tsubs = trak.mdia.minf.stbl.subs;\n\tstdp = trak.mdia.minf.stbl.stdp;\n\tsbgps = trak.mdia.minf.stbl.sbgps;\n\tsgpds = trak.mdia.minf.stbl.sgpds;\n\t\n\tlast_sample_in_stts_run = -1;\n\tstts_run_index = -1;\n\tlast_sample_in_ctts_run = -1;\n\tctts_run_index = -1;\n\tlast_stss_index = 0;\n\tsubs_entry_index = 0;\n\tlast_subs_sample_index = 0;\t\t\n\n\tISOFile.initSampleGroups(trak, null, sbgps, sgpds);\n\n\tif (typeof stsz === \"undefined\") {\n\t\treturn;\n\t}\n\n\t/* we build the samples one by one and compute their properties */\n\tfor (j = 0; j < stsz.sample_sizes.length; j++) {\n\t\tvar sample = {};\n\t\tsample.number = j;\n\t\tsample.track_id = trak.tkhd.track_id;\n\t\tsample.timescale = trak.mdia.mdhd.timescale;\n\t\tsample.alreadyRead = 0;\n\t\ttrak.samples[j] = sample;\n\t\t/* size can be known directly */\n\t\tsample.size = stsz.sample_sizes[j];\n\t\ttrak.samples_size += sample.size;\n\t\t/* computing chunk-based properties (offset, sample description index)*/\n\t\tif (j === 0) {\t\t\t\t\n\t\t\tchunk_index = 1; /* the first sample is in the first chunk (chunk indexes are 1-based) */\n\t\t\tchunk_run_index = 0; /* the first chunk is the first entry in the first_chunk table */\n\t\t\tsample.chunk_index = chunk_index;\n\t\t\tsample.chunk_run_index = chunk_run_index;\n\t\t\tlast_sample_in_chunk = stsc.samples_per_chunk[chunk_run_index];\n\t\t\toffset_in_chunk = 0;\n\n\t\t\t/* Is there another entry in the first_chunk table ? */\n\t\t\tif (chunk_run_index + 1 < stsc.first_chunk.length) {\n\t\t\t\t/* The last chunk in the run is the chunk before the next first chunk */\n\t\t\t\tlast_chunk_in_run = stsc.first_chunk[chunk_run_index+1]-1; \t\n\t\t\t} else {\n\t\t\t\t/* There is only one entry in the table, it is valid for all future chunks*/\n\t\t\t\tlast_chunk_in_run = Infinity;\n\t\t\t}\n\t\t} else {\n\t\t\tif (j < last_sample_in_chunk) {\n\t\t\t\t/* the sample is still in the current chunk */\n\t\t\t\tsample.chunk_index = chunk_index;\n\t\t\t\tsample.chunk_run_index = chunk_run_index;\n\t\t\t} else {\n\t\t\t\t/* the sample is in the next chunk */\n\t\t\t\tchunk_index++;\n\t\t\t\tsample.chunk_index = chunk_index;\n\t\t\t\t/* reset the accumulated offset in the chunk */\n\t\t\t\toffset_in_chunk = 0;\n\t\t\t\tif (chunk_index <= last_chunk_in_run) {\n\t\t\t\t\t/* stay in the same entry of the first_chunk table */\n\t\t\t\t\t/* chunk_run_index unmodified */\n\t\t\t\t} else {\n\t\t\t\t\tchunk_run_index++;\n\t\t\t\t\t/* Is there another entry in the first_chunk table ? */\n\t\t\t\t\tif (chunk_run_index + 1 < stsc.first_chunk.length) {\n\t\t\t\t\t\t/* The last chunk in the run is the chunk before the next first chunk */\n\t\t\t\t\t\tlast_chunk_in_run = stsc.first_chunk[chunk_run_index+1]-1; \t\n\t\t\t\t\t} else {\n\t\t\t\t\t\t/* There is only one entry in the table, it is valid for all future chunks*/\n\t\t\t\t\t\tlast_chunk_in_run = Infinity;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\tsample.chunk_run_index = chunk_run_index;\n\t\t\t\tlast_sample_in_chunk += stsc.samples_per_chunk[chunk_run_index];\n\t\t\t}\n\t\t}\n\n\t\tsample.description_index = stsc.sample_description_index[sample.chunk_run_index]-1;\n\t\tsample.description = stsd.entries[sample.description_index];\n\t\tsample.offset = stco.chunk_offsets[sample.chunk_index-1] + offset_in_chunk; /* chunk indexes are 1-based */\n\t\toffset_in_chunk += sample.size;\n\n\t\t/* setting dts, cts, duration and rap flags */\n\t\tif (j > last_sample_in_stts_run) {\n\t\t\tstts_run_index++;\n\t\t\tif (last_sample_in_stts_run < 0) {\n\t\t\t\tlast_sample_in_stts_run = 0;\n\t\t\t}\n\t\t\tlast_sample_in_stts_run += stts.sample_counts[stts_run_index];\t\t\t\t\n\t\t}\n\t\tif (j > 0) {\n\t\t\ttrak.samples[j-1].duration = stts.sample_deltas[stts_run_index];\n\t\t\ttrak.samples_duration += trak.samples[j-1].duration;\n\t\t\tsample.dts = trak.samples[j-1].dts + trak.samples[j-1].duration;\n\t\t} else {\n\t\t\tsample.dts = 0;\n\t\t}\n\t\tif (ctts) {\n\t\t\tif (j >= last_sample_in_ctts_run) {\n\t\t\t\tctts_run_index++;\n\t\t\t\tif (last_sample_in_ctts_run < 0) {\n\t\t\t\t\tlast_sample_in_ctts_run = 0;\n\t\t\t\t}\n\t\t\t\tlast_sample_in_ctts_run += ctts.sample_counts[ctts_run_index];\t\t\t\t\n\t\t\t}\n\t\t\tsample.cts = trak.samples[j].dts + ctts.sample_offsets[ctts_run_index];\n\t\t} else {\n\t\t\tsample.cts = sample.dts;\n\t\t}\n\t\tif (stss) {\n\t\t\tif (j == stss.sample_numbers[last_stss_index] - 1) { // sample numbers are 1-based\n\t\t\t\tsample.is_sync = true;\n\t\t\t\tlast_stss_index++;\n\t\t\t} else {\n\t\t\t\tsample.is_sync = false;\t\t\t\t\n\t\t\t\tsample.degradation_priority = 0;\n\t\t\t}\n\t\t\tif (subs) {\n\t\t\t\tif (subs.entries[subs_entry_index].sample_delta + last_subs_sample_index == j+1) {\n\t\t\t\t\tsample.subsamples = subs.entries[subs_entry_index].subsamples;\n\t\t\t\t\tlast_subs_sample_index += subs.entries[subs_entry_index].sample_delta;\n\t\t\t\t\tsubs_entry_index++;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tsample.is_sync = true;\n\t\t}\n\t\tISOFile.process_sdtp(trak.mdia.minf.stbl.sdtp, sample, sample.number);\n\t\tif (stdp) {\n\t\t\tsample.degradation_priority = stdp.priority[j];\n\t\t} else {\n\t\t\tsample.degradation_priority = 0;\n\t\t}\n\t\tif (subs) {\n\t\t\tif (subs.entries[subs_entry_index].sample_delta + last_subs_sample_index == j) {\n\t\t\t\tsample.subsamples = subs.entries[subs_entry_index].subsamples;\n\t\t\t\tlast_subs_sample_index += subs.entries[subs_entry_index].sample_delta;\n\t\t\t}\n\t\t}\n\t\tif (sbgps.length > 0 || sgpds.length > 0) {\n\t\t\tISOFile.setSampleGroupProperties(trak, sample, j, trak.sample_groups_info);\n\t\t}\n\t}\n\tif (j>0) {\n\t\ttrak.samples[j-1].duration = Math.max(trak.mdia.mdhd.duration - trak.samples[j-1].dts, 0);\n\t\ttrak.samples_duration += trak.samples[j-1].duration;\n\t}\n}\n\n/* Update sample list when new 'moof' boxes are received */\nISOFile.prototype.updateSampleLists = function() {\t\n\tvar i, j, k;\n\tvar default_sample_description_index, default_sample_duration, default_sample_size, default_sample_flags;\n\tvar last_run_position;\n\tvar box, moof, traf, trak, trex;\n\tvar sample;\n\tvar sample_flags;\n\t\n\tif (this.moov === undefined) {\n\t\treturn;\n\t}\n\t/* if the input file is fragmented and fetched in multiple downloads, we need to update the list of samples */\n\twhile (this.lastMoofIndex < this.moofs.length) {\n\t\tbox = this.moofs[this.lastMoofIndex];\n\t\tthis.lastMoofIndex++;\n\t\tif (box.type == \"moof\") {\n\t\t\tmoof = box;\n\t\t\tfor (i = 0; i < moof.trafs.length; i++) {\n\t\t\t\ttraf = moof.trafs[i];\n\t\t\t\ttrak = this.getTrackById(traf.tfhd.track_id);\n\t\t\t\ttrex = this.getTrexById(traf.tfhd.track_id);\n\t\t\t\tif (traf.tfhd.flags & BoxParser.TFHD_FLAG_SAMPLE_DESC) {\n\t\t\t\t\tdefault_sample_description_index = traf.tfhd.default_sample_description_index;\n\t\t\t\t} else {\n\t\t\t\t\tdefault_sample_description_index = (trex ? trex.default_sample_description_index: 1);\n\t\t\t\t}\n\t\t\t\tif (traf.tfhd.flags & BoxParser.TFHD_FLAG_SAMPLE_DUR) {\n\t\t\t\t\tdefault_sample_duration = traf.tfhd.default_sample_duration;\n\t\t\t\t} else {\n\t\t\t\t\tdefault_sample_duration = (trex ? trex.default_sample_duration : 0);\n\t\t\t\t}\n\t\t\t\tif (traf.tfhd.flags & BoxParser.TFHD_FLAG_SAMPLE_SIZE) {\n\t\t\t\t\tdefault_sample_size = traf.tfhd.default_sample_size;\n\t\t\t\t} else {\n\t\t\t\t\tdefault_sample_size = (trex ? trex.default_sample_size : 0);\n\t\t\t\t}\n\t\t\t\tif (traf.tfhd.flags & BoxParser.TFHD_FLAG_SAMPLE_FLAGS) {\n\t\t\t\t\tdefault_sample_flags = traf.tfhd.default_sample_flags;\n\t\t\t\t} else {\n\t\t\t\t\tdefault_sample_flags = (trex ? trex.default_sample_flags : 0);\n\t\t\t\t}\n\t\t\t\ttraf.sample_number = 0;\n\t\t\t\t/* process sample groups */\n\t\t\t\tif (traf.sbgps.length > 0) {\n\t\t\t\t\tISOFile.initSampleGroups(trak, traf, traf.sbgps, trak.mdia.minf.stbl.sgpds, traf.sgpds);\n\t\t\t\t}\n\t\t\t\tfor (j = 0; j < traf.truns.length; j++) {\n\t\t\t\t\tvar trun = traf.truns[j];\n\t\t\t\t\tfor (k = 0; k < trun.sample_count; k++) {\n\t\t\t\t\t\tsample = {};\n\t\t\t\t\t\tsample.moof_number = this.lastMoofIndex;\n\t\t\t\t\t\tsample.number_in_traf = traf.sample_number;\n\t\t\t\t\t\ttraf.sample_number++;\n\t\t\t sample.number = trak.samples.length;\n\t\t\t\t\t\ttraf.first_sample_index = trak.samples.length;\n\t\t\t\t\t\ttrak.samples.push(sample);\n\t\t\t\t\t\tsample.track_id = trak.tkhd.track_id;\n\t\t\t\t\t\tsample.timescale = trak.mdia.mdhd.timescale;\n\t\t\t\t\t\tsample.description_index = default_sample_description_index-1;\n\t\t\t\t\t\tsample.description = trak.mdia.minf.stbl.stsd.entries[sample.description_index];\n\t\t\t\t\t\tsample.size = default_sample_size;\n\t\t\t\t\t\tif (trun.flags & BoxParser.TRUN_FLAGS_SIZE) {\n\t\t\t\t\t\t\tsample.size = trun.sample_size[k];\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttrak.samples_size += sample.size;\n\t\t\t\t\t\tsample.duration = default_sample_duration;\n\t\t\t\t\t\tif (trun.flags & BoxParser.TRUN_FLAGS_DURATION) {\n\t\t\t\t\t\t\tsample.duration = trun.sample_duration[k];\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttrak.samples_duration += sample.duration;\n\t\t\t\t\t\tif (trak.first_traf_merged || k > 0) {\n\t\t\t\t\t\t\tsample.dts = trak.samples[trak.samples.length-2].dts+trak.samples[trak.samples.length-2].duration;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (traf.tfdt) {\n\t\t\t\t\t\t\t\tsample.dts = traf.tfdt.baseMediaDecodeTime;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tsample.dts = 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttrak.first_traf_merged = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsample.cts = sample.dts;\n\t\t\t\t\t\tif (trun.flags & BoxParser.TRUN_FLAGS_CTS_OFFSET) {\n\t\t\t\t\t\t\tsample.cts = sample.dts + trun.sample_composition_time_offset[k];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsample_flags = default_sample_flags;\n\t\t\t\t\t\tif (trun.flags & BoxParser.TRUN_FLAGS_FLAGS) {\n\t\t\t\t\t\t\tsample_flags = trun.sample_flags[k];\n\t\t\t\t\t\t} else if (k === 0 && (trun.flags & BoxParser.TRUN_FLAGS_FIRST_FLAG)) {\n\t\t\t\t\t\t\tsample_flags = trun.first_sample_flags;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsample.is_sync = ((sample_flags >> 16 & 0x1) ? false : true);\n\t\t\t\t\t\tsample.is_leading = (sample_flags >> 26 & 0x3);\n\t\t\t\t\t\tsample.depends_on = (sample_flags >> 24 & 0x3);\n\t\t\t\t\t\tsample.is_depended_on = (sample_flags >> 22 & 0x3);\n\t\t\t\t\t\tsample.has_redundancy = (sample_flags >> 20 & 0x3);\n\t\t\t\t\t\tsample.degradation_priority = (sample_flags & 0xFFFF);\n\t\t\t\t\t\t//ISOFile.process_sdtp(traf.sdtp, sample, sample.number_in_traf);\n\t\t\t\t\t\tvar bdop = (traf.tfhd.flags & BoxParser.TFHD_FLAG_BASE_DATA_OFFSET) ? true : false;\n\t\t\t\t\t\tvar dbim = (traf.tfhd.flags & BoxParser.TFHD_FLAG_DEFAULT_BASE_IS_MOOF) ? true : false;\n\t\t\t\t\t\tvar dop = (trun.flags & BoxParser.TRUN_FLAGS_DATA_OFFSET) ? true : false;\n\t\t\t\t\t\tvar bdo = 0;\n\t\t\t\t\t\tif (!bdop) {\n\t\t\t\t\t\t\tif (!dbim) {\n\t\t\t\t\t\t\t\tif (j === 0) { // the first track in the movie fragment\n\t\t\t\t\t\t\t\t\tbdo = moof.start; // the position of the first byte of the enclosing Movie Fragment Box\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tbdo = last_run_position; // end of the data defined by the preceding *track* (irrespective of the track id) fragment in the moof\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tbdo = moof.start;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbdo = traf.tfhd.base_data_offset;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (j === 0 && k === 0) {\n\t\t\t\t\t\t\tif (dop) {\n\t\t\t\t\t\t\t\tsample.offset = bdo + trun.data_offset; // If the data-offset is present, it is relative to the base-data-offset established in the track fragment header\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tsample.offset = bdo; // the data for this run starts the base-data-offset defined by the track fragment header\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsample.offset = last_run_position; // this run starts immediately after the data of the previous run\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlast_run_position = sample.offset + sample.size;\n\t\t\t\t\t\tif (traf.sbgps.length > 0 || traf.sgpds.length > 0 ||\n\t\t\t\t\t\t\ttrak.mdia.minf.stbl.sbgps.length > 0 || trak.mdia.minf.stbl.sgpds.length > 0) {\n\t\t\t\t\t\t\tISOFile.setSampleGroupProperties(trak, sample, sample.number_in_traf, traf.sample_groups_info);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (traf.subs) {\n\t\t\t\t\ttrak.has_fragment_subsamples = true;\n\t\t\t\t\tvar sample_index = traf.first_sample_index;\n\t\t\t\t\tfor (j = 0; j < traf.subs.entries.length; j++) {\n\t\t\t\t\t\tsample_index += traf.subs.entries[j].sample_delta;\n\t\t\t\t\t\tsample = trak.samples[sample_index-1];\n\t\t\t\t\t\tsample.subsamples = traf.subs.entries[j].subsamples;\n\t\t\t\t\t}\t\t\t\t\t\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\t\n}\n\n/* Try to get sample data for a given sample:\n returns null if not found\n returns the same sample if already requested\n */\nISOFile.prototype.getSample = function(trak, sampleNum) {\t\n\tvar buffer;\n\tvar sample = trak.samples[sampleNum];\n\t\n\tif (!this.moov) {\n\t\treturn null;\n\t}\n\n\tif (!sample.data) {\n\t\t/* Not yet fetched */\n\t\tsample.data = new Uint8Array(sample.size);\n\t\tsample.alreadyRead = 0;\n\t\tthis.samplesDataSize += sample.size;\n\t\tLog.debug(\"ISOFile\", \"Allocating sample #\"+sampleNum+\" on track #\"+trak.tkhd.track_id+\" of size \"+sample.size+\" (total: \"+this.samplesDataSize+\")\");\n\t} else if (sample.alreadyRead == sample.size) {\n\t\t/* Already fetched entirely */\n\t\treturn sample;\n\t}\n\n\t/* The sample has only been partially fetched, we need to check in all buffers */\n\twhile(true) {\n\t\tvar index =\tthis.stream.findPosition(true, sample.offset + sample.alreadyRead, false);\n\t\tif (index > -1) {\n\t\t\tbuffer = this.stream.buffers[index];\n\t\t\tvar lengthAfterStart = buffer.byteLength - (sample.offset + sample.alreadyRead - buffer.fileStart);\n\t\t\tif (sample.size - sample.alreadyRead <= lengthAfterStart) {\n\t\t\t\t/* the (rest of the) sample is entirely contained in this buffer */\n\n\t\t\t\tLog.debug(\"ISOFile\",\"Getting sample #\"+sampleNum+\" data (alreadyRead: \"+sample.alreadyRead+\" offset: \"+\n\t\t\t\t\t(sample.offset+sample.alreadyRead - buffer.fileStart)+\" read size: \"+(sample.size - sample.alreadyRead)+\" full size: \"+sample.size+\")\");\n\n\t\t\t\tDataStream.memcpy(sample.data.buffer, sample.alreadyRead,\n\t\t\t\t buffer, sample.offset+sample.alreadyRead - buffer.fileStart, sample.size - sample.alreadyRead);\n\n\t\t\t\t/* update the number of bytes used in this buffer and check if it needs to be removed */\n\t\t\t\tbuffer.usedBytes += sample.size - sample.alreadyRead;\n\t\t\t\tthis.stream.logBufferLevel();\n\n\t\t\t\tsample.alreadyRead = sample.size;\n\n\t\t\t\treturn sample;\n\t\t\t} else {\n\t\t\t\t/* the sample does not end in this buffer */\n\n\t\t\t\tif (lengthAfterStart === 0) return null;\n\n\t\t\t\tLog.debug(\"ISOFile\",\"Getting sample #\"+sampleNum+\" partial data (alreadyRead: \"+sample.alreadyRead+\" offset: \"+\n\t\t\t\t\t(sample.offset+sample.alreadyRead - buffer.fileStart)+\" read size: \"+lengthAfterStart+\" full size: \"+sample.size+\")\");\n\n\t\t\t\tDataStream.memcpy(sample.data.buffer, sample.alreadyRead,\n\t\t\t\t buffer, sample.offset+sample.alreadyRead - buffer.fileStart, lengthAfterStart);\n\t\t\t\tsample.alreadyRead += lengthAfterStart;\n\n\t\t\t\t/* update the number of bytes used in this buffer and check if it needs to be removed */\n\t\t\t\tbuffer.usedBytes += lengthAfterStart;\n\t\t\t\tthis.stream.logBufferLevel();\n\n\t\t\t\t/* keep looking in the next buffer */\n\t\t\t}\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n}\n\n/* Release the memory used to store the data of the sample */\nISOFile.prototype.releaseSample = function(trak, sampleNum) {\t\n\tvar sample = trak.samples[sampleNum];\n\tif (sample.data) {\n\t\tthis.samplesDataSize -= sample.size;\n\t\tsample.data = null;\n\t\tsample.alreadyRead = 0;\n\t\treturn sample.size;\n\t} else {\n\t\treturn 0;\n\t}\n}\n\nISOFile.prototype.getAllocatedSampleDataSize = function() {\n\treturn this.samplesDataSize;\n}\n\n/* Builds the MIME Type 'codecs' sub-parameters for the whole file */\nISOFile.prototype.getCodecs = function() {\t\n\tvar i;\n\tvar codecs = \"\";\n\tfor (i = 0; i < this.moov.traks.length; i++) {\n\t\tvar trak = this.moov.traks[i];\n\t\tif (i>0) {\n\t\t\tcodecs+=\",\"; \n\t\t}\n\t\tcodecs += trak.mdia.minf.stbl.stsd.entries[0].getCodec();\t\t\n\t}\n\treturn codecs;\n}\n\n/* Helper function */\nISOFile.prototype.getTrexById = function(id) {\t\n\tvar i;\n\tif (!this.moov || !this.moov.mvex) return null;\n\tfor (i = 0; i < this.moov.mvex.trexs.length; i++) {\n\t\tvar trex = this.moov.mvex.trexs[i];\n\t\tif (trex.track_id == id) return trex;\n\t}\n\treturn null;\n}\n\n/* Helper function */\nISOFile.prototype.getTrackById = function(id) {\n\tif (this.moov === undefined) {\n\t\treturn null;\n\t}\n\tfor (var j = 0; j < this.moov.traks.length; j++) {\n\t\tvar trak = this.moov.traks[j];\n\t\tif (trak.tkhd.track_id == id) return trak;\n\t}\n\treturn null;\n}\n// file:src/isofile-item-processing.js\n/* size of the buffers allocated for samples */\nISOFile.prototype.itemsDataSize = 0;\n\nISOFile.prototype.flattenItemInfo = function() {\t\n\tvar items = this.items;\n\tvar entity_groups = this.entity_groups;\n\tvar i, j;\n\tvar item;\n\tvar meta = this.meta;\n\tif (meta === null || meta === undefined) return;\n\tif (meta.hdlr === undefined) return;\n\tif (meta.iinf === undefined) return;\n\tfor (i = 0; i < meta.iinf.item_infos.length; i++) {\n\t\titem = {};\n\t\titem.id = meta.iinf.item_infos[i].item_ID;\n\t\titems[item.id] = item;\n\t\titem.ref_to = [];\n\t\titem.name = meta.iinf.item_infos[i].item_name;\n\t\tif (meta.iinf.item_infos[i].protection_index > 0) {\n\t\t\titem.protection = meta.ipro.protections[meta.iinf.item_infos[i].protection_index-1];\n\t\t}\n\t\tif (meta.iinf.item_infos[i].item_type) {\n\t\t\titem.type = meta.iinf.item_infos[i].item_type;\n\t\t} else {\n\t\t\titem.type = \"mime\";\n\t\t}\n\t\titem.content_type = meta.iinf.item_infos[i].content_type;\n\t\titem.content_encoding = meta.iinf.item_infos[i].content_encoding;\n\t\titem.item_uri_type = meta.iinf.item_infos[i].item_uri_type;\n\t}\n\tif (meta.grpl) {\n\t\tfor (i = 0; i < meta.grpl.boxes.length; i++) {\n\t\t\tentity_group = {};\n\t\t\tentity_group.id = meta.grpl.boxes[i].group_id;\n\t\t\tentity_group.entity_ids = meta.grpl.boxes[i].entity_ids;\n\t\t\tentity_group.type = meta.grpl.boxes[i].type;\n\t\t\tentity_groups[entity_group.id] = entity_group;\n\t\t}\n\t}\n\tif (meta.iloc) {\n\t\tfor(i = 0; i < meta.iloc.items.length; i++) {\n\t\t\tvar offset;\n\t\t\tvar itemloc = meta.iloc.items[i];\n\t\t\titem = items[itemloc.item_ID];\n\t\t\tif (itemloc.data_reference_index !== 0) {\n\t\t\t\tLog.warn(\"Item storage with reference to other files: not supported\");\n\t\t\t\titem.source = meta.dinf.boxes[itemloc.data_reference_index-1];\n\t\t\t}\n\t\t\tswitch(itemloc.construction_method) {\n\t\t\t\tcase 0: // offset into the file referenced by the data reference index\n\t\t\t\tbreak;\n\t\t\t\tcase 1: // offset into the idat box of this meta box\n\t\t\t\tbreak;\n\t\t\t\tcase 2: // offset into another item\n\t\t\t\tLog.warn(\"Item storage with construction_method : not supported\");\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\titem.extents = [];\n\t\t\titem.size = 0;\n\t\t\tfor (j = 0; j < itemloc.extents.length; j++) {\n\t\t\t\titem.extents[j] = {};\n\t\t\t\titem.extents[j].offset = itemloc.extents[j].extent_offset + itemloc.base_offset;\n\t\t\t\tif (itemloc.construction_method == 1) {\n\t\t\t\t\titem.extents[j].offset += meta.idat.start + meta.idat.hdr_size;\n\t\t\t\t}\n\t\t\t\titem.extents[j].length = itemloc.extents[j].extent_length;\n\t\t\t\titem.extents[j].alreadyRead = 0;\n\t\t\t\titem.size += item.extents[j].length;\n\t\t\t}\n\t\t}\n\t}\n\tif (meta.pitm) {\n\t\titems[meta.pitm.item_id].primary = true;\n\t}\n\tif (meta.iref) {\n\t\tfor (i=0; i <meta.iref.references.length; i++) {\n\t\t\tvar ref = meta.iref.references[i];\n\t\t\tfor (j=0; j<ref.references.length; j++) {\n\t\t\t\titems[ref.from_item_ID].ref_to.push({type: ref.type, id: ref.references[j]});\n\t\t\t}\n\t\t}\n\t}\n\tif (meta.iprp) {\n\t\tfor (var k = 0; k < meta.iprp.ipmas.length; k++) {\n\t\t\tvar ipma = meta.iprp.ipmas[k];\n\t\t\tfor (i = 0; i < ipma.associations.length; i++) {\n\t\t\t\tvar association = ipma.associations[i];\n\t\t\t\titem = items[association.id];\n\t\t\t\tif (!item) {\n\t\t\t\t\titem = entity_groups[association.id];\n\t\t\t\t}\n\t\t\t\tif (item) {\n\t\t\t\t\tif (item.properties === undefined) {\n\t\t\t\t\t\titem.properties = {};\n\t\t\t\t\t\titem.properties.boxes = [];\n\t\t\t\t\t}\n\t\t\t\t\tfor (j = 0; j < association.props.length; j++) {\n\t\t\t\t\t\tvar propEntry = association.props[j];\n\t\t\t\t\t\tif (propEntry.property_index > 0 && propEntry.property_index-1 < meta.iprp.ipco.boxes.length) {\n\t\t\t\t\t\t\tvar propbox = meta.iprp.ipco.boxes[propEntry.property_index-1];\n\t\t\t\t\t\t\titem.properties[propbox.type] = propbox;\n\t\t\t\t\t\t\titem.properties.boxes.push(propbox);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nISOFile.prototype.getItem = function(item_id) {\t\n\tvar buffer;\n\tvar item;\n\t\n\tif (!this.meta) {\n\t\treturn null;\n\t}\n\n \titem = this.items[item_id];\n\tif (!item.data && item.size) {\n\t\t/* Not yet fetched */\n\t\titem.data = new Uint8Array(item.size);\n\t\titem.alreadyRead = 0;\n\t\tthis.itemsDataSize += item.size;\n\t\tLog.debug(\"ISOFile\", \"Allocating item #\"+item_id+\" of size \"+item.size+\" (total: \"+this.itemsDataSize+\")\");\n\t} else if (item.alreadyRead === item.size) {\n\t\t/* Already fetched entirely */\n\t\treturn item;\n\t}\n\n\t/* The item has only been partially fetched, we need to check in all buffers to find the remaining extents*/\n\n\tfor (var i = 0; i < item.extents.length; i++) {\n\t\tvar extent = item.extents[i];\n\t\tif (extent.alreadyRead === extent.length) {\n\t\t\tcontinue;\n\t\t} else {\n\t\t\tvar index =\tthis.stream.findPosition(true, extent.offset + extent.alreadyRead, false);\n\t\t\tif (index > -1) {\n\t\t\t\tbuffer = this.stream.buffers[index];\n\t\t\t\tvar lengthAfterStart = buffer.byteLength - (extent.offset + extent.alreadyRead - buffer.fileStart);\n\t\t\t\tif (extent.length - extent.alreadyRead <= lengthAfterStart) {\n\t\t\t\t\t/* the (rest of the) extent is entirely contained in this buffer */\n\n\t\t\t\t\tLog.debug(\"ISOFile\",\"Getting item #\"+item_id+\" extent #\"+i+\" data (alreadyRead: \"+extent.alreadyRead+\n\t\t\t\t\t\t\" offset: \"+(extent.offset+extent.alreadyRead - buffer.fileStart)+\" read size: \"+(extent.length - extent.alreadyRead)+\n\t\t\t\t\t\t\" full extent size: \"+extent.length+\" full item size: \"+item.size+\")\");\n\n\t\t\t\t\tDataStream.memcpy(item.data.buffer, item.alreadyRead, \n\t\t\t\t\t buffer, extent.offset+extent.alreadyRead - buffer.fileStart, extent.length - extent.alreadyRead);\n\n\t\t\t\t\t/* update the number of bytes used in this buffer and check if it needs to be removed */\n\t\t\t\t\tbuffer.usedBytes += extent.length - extent.alreadyRead;\n\t\t\t\t\tthis.stream.logBufferLevel();\n\n\t\t\t\t\titem.alreadyRead += (extent.length - extent.alreadyRead);\n\t\t\t\t\textent.alreadyRead = extent.length;\n\t\t\t\t} else {\n\t\t\t\t\t/* the sample does not end in this buffer */\n\n\t\t\t\t\tLog.debug(\"ISOFile\",\"Getting item #\"+item_id+\" extent #\"+i+\" partial data (alreadyRead: \"+extent.alreadyRead+\" offset: \"+\n\t\t\t\t\t\t(extent.offset+extent.alreadyRead - buffer.fileStart)+\" read size: \"+lengthAfterStart+\n\t\t\t\t\t\t\" full extent size: \"+extent.length+\" full item size: \"+item.size+\")\");\n\n\t\t\t\t\tDataStream.memcpy(item.data.buffer, item.alreadyRead, \n\t\t\t\t\t buffer, extent.offset+extent.alreadyRead - buffer.fileStart, lengthAfterStart);\n\t\t\t\t\textent.alreadyRead += lengthAfterStart;\n\t\t\t\t\titem.alreadyRead += lengthAfterStart;\n\n\t\t\t\t\t/* update the number of bytes used in this buffer and check if it needs to be removed */\n\t\t\t\t\tbuffer.usedBytes += lengthAfterStart;\n\t\t\t\t\tthis.stream.logBufferLevel();\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t}\n\tif (item.alreadyRead === item.size) {\n\t\t/* fetched entirely */\n\t\treturn item;\n\t} else {\n\t\treturn null;\n\t}\n}\n\n/* Release the memory used to store the data of the item */\nISOFile.prototype.releaseItem = function(item_id) {\t\n\tvar item = this.items[item_id];\n\tif (item.data) {\n\t\tthis.itemsDataSize -= item.size;\n\t\titem.data = null;\n\t\titem.alreadyRead = 0;\n\t\tfor (var i = 0; i < item.extents.length; i++) {\n\t\t\tvar extent = item.extents[i];\n\t\t\textent.alreadyRead = 0;\n\t\t}\n\t\treturn item.size;\n\t} else {\n\t\treturn 0;\n\t}\n}\n\n\nISOFile.prototype.processItems = function(callback) {\n\tfor(var i in this.items) {\n\t\tvar item = this.items[i];\n\t\tthis.getItem(item.id);\n\t\tif (callback && !item.sent) {\n\t\t\tcallback(item);\n\t\t\titem.sent = true;\n\t\t\titem.data = null;\n\t\t}\n\t}\n}\n\nISOFile.prototype.hasItem = function(name) {\n\tfor(var i in this.items) {\n\t\tvar item = this.items[i];\n\t\tif (item.name === name) {\n\t\t\treturn item.id;\n\t\t}\n\t}\n\treturn -1;\n}\n\nISOFile.prototype.getMetaHandler = function() {\n\tif (!this.meta) {\n\t\treturn null;\n\t} else {\n\t\treturn this.meta.hdlr.handler;\t\t\n\t}\n}\n\nISOFile.prototype.getPrimaryItem = function() {\n\tif (!this.meta || !this.meta.pitm) {\n\t\treturn null;\n\t} else {\n\t\treturn this.getItem(this.meta.pitm.item_id);\n\t}\n}\n\nISOFile.prototype.itemToFragmentedTrackFile = function(_options) {\n\tvar options = _options || {};\n\tvar item = null;\n\tif (options.itemId) {\n\t\titem = this.getItem(options.itemId);\n\t} else {\n\t\titem = this.getPrimaryItem();\n\t}\n\tif (item == null) return null;\n\n\tvar file = new ISOFile();\n\tfile.discardMdatData = false;\n\t// assuming the track type is the same as the item type\n\tvar trackOptions = { type: item.type, description_boxes: item.properties.boxes};\n\tif (item.properties.ispe) {\n\t\ttrackOptions.width = item.properties.ispe.image_width;\n\t\ttrackOptions.height = item.properties.ispe.image_height;\n\t}\n\tvar trackId = file.addTrack(trackOptions);\n\tif (trackId) {\n\t\tfile.addSample(trackId, item.data);\n\t\treturn file;\n\t} else {\n\t\treturn null;\n\t}\n}\n\n// file:src/isofile-write.js\n/* Rewrite the entire file */\nISOFile.prototype.write = function(outstream) {\n\tfor (var i=0; i<this.boxes.length; i++) {\n\t\tthis.boxes[i].write(outstream);\n\t}\n}\n\nISOFile.prototype.createFragment = function(track_id, sampleNumber, stream_) {\n\tvar trak = this.getTrackById(track_id);\n\tvar sample = this.getSample(trak, sampleNumber);\n\tif (sample == null) {\n\t\tthis.setNextSeekPositionFromSample(trak.samples[sampleNumber]);\n\t\treturn null;\n\t}\n\t\n\tvar stream = stream_ || new DataStream();\n\tstream.endianness = DataStream.BIG_ENDIAN;\n\n\tvar moof = this.createSingleSampleMoof(sample);\n\tmoof.write(stream);\n\n\t/* adjusting the data_offset now that the moof size is known*/\n\tmoof.trafs[0].truns[0].data_offset = moof.size+8; //8 is mdat header\n\tLog.debug(\"MP4Box\", \"Adjusting data_offset with new value \"+moof.trafs[0].truns[0].data_offset);\n\tstream.adjustUint32(moof.trafs[0].truns[0].data_offset_position, moof.trafs[0].truns[0].data_offset);\n\t\t\n\tvar mdat = new BoxParser.mdatBox();\n\tmdat.data = sample.data;\n\tmdat.write(stream);\n\treturn stream;\n}\n\n/* Modify the file and create the initialization segment */\nISOFile.writeInitializationSegment = function(ftyp, moov, total_duration, sample_duration) {\n\tvar i;\n\tvar index;\n\tvar mehd;\n\tvar trex;\n\tvar box;\n\tLog.debug(\"ISOFile\", \"Generating initialization segment\");\n\n\tvar stream = new DataStream();\n\tstream.endianness = DataStream.BIG_ENDIAN;\n\tftyp.write(stream);\n\t\n\t/* we can now create the new mvex box */\n\tvar mvex = moov.add(\"mvex\");\n\tif (total_duration) {\n\t\tmvex.add(\"mehd\").set(\"fragment_duration\", total_duration);\n\t}\n\tfor (i = 0; i < moov.traks.length; i++) {\n\t\tmvex.add(\"trex\").set(\"track_id\", moov.traks[i].tkhd.track_id)\n\t\t\t\t\t\t.set(\"default_sample_description_index\", 1)\n\t\t\t\t\t\t.set(\"default_sample_duration\", sample_duration)\n\t\t\t\t\t\t.set(\"default_sample_size\", 0)\n\t\t\t\t\t\t.set(\"default_sample_flags\", 1<<16)\n\t}\n\tmoov.write(stream);\n\n\treturn stream.buffer;\n\n}\n\nISOFile.prototype.save = function(name) {\n\tvar stream = new DataStream();\n\tstream.endianness = DataStream.BIG_ENDIAN;\n\tthis.write(stream);\n\tstream.save(name);\t\n}\n\nISOFile.prototype.getBuffer = function() {\n\tvar stream = new DataStream();\n\tstream.endianness = DataStream.BIG_ENDIAN;\n\tthis.write(stream);\n\treturn stream.buffer;\n}\n\nISOFile.prototype.initializeSegmentation = function() {\n\tvar i;\n\tvar j;\n\tvar box;\n\tvar initSegs;\n\tvar trak;\n\tvar seg;\n\tif (this.onSegment === null) {\n\t\tLog.warn(\"MP4Box\", \"No segmentation callback set!\");\n\t}\n\tif (!this.isFragmentationInitialized) {\n\t\tthis.isFragmentationInitialized = true;\t\t\n\t\tthis.nextMoofNumber = 0;\n\t\tthis.resetTables();\n\t}\t\n\tinitSegs = [];\t\n\tfor (i = 0; i < this.fragmentedTracks.length; i++) {\n\t\tvar moov = new BoxParser.moovBox();\n\t\tmoov.mvhd = this.moov.mvhd;\n\t moov.boxes.push(moov.mvhd);\n\t\ttrak = this.getTrackById(this.fragmentedTracks[i].id);\n\t\tmoov.boxes.push(trak);\n\t\tmoov.traks.push(trak);\n\t\tseg = {};\n\t\tseg.id = trak.tkhd.track_id;\n\t\tseg.user = this.fragmentedTracks[i].user;\n\t\tseg.buffer = ISOFile.writeInitializationSegment(this.ftyp, moov, (this.moov.mvex && this.moov.mvex.mehd ? this.moov.mvex.mehd.fragment_duration: undefined), (this.moov.traks[i].samples.length>0 ? this.moov.traks[i].samples[0].duration: 0));\n\t\tinitSegs.push(seg);\n\t}\n\treturn initSegs;\n}\n\n// file:src/box-print.js\n/* \n * Copyright (c) Telecom ParisTech/TSI/MM/GPAC Cyril Concolato\n * License: BSD-3-Clause (see LICENSE file)\n */\nBoxParser.Box.prototype.printHeader = function(output) {\n\tthis.size += 8;\n\tif (this.size > MAX_SIZE) {\n\t\tthis.size += 8;\n\t}\n\tif (this.type === \"uuid\") {\n\t\tthis.size += 16;\n\t}\n\toutput.log(output.indent+\"size:\"+this.size);\n\toutput.log(output.indent+\"type:\"+this.type);\n}\n\nBoxParser.FullBox.prototype.printHeader = function(output) {\n\tthis.size += 4;\n\tBoxParser.Box.prototype.printHeader.call(this, output);\n\toutput.log(output.indent+\"version:\"+this.version);\n\toutput.log(output.indent+\"flags:\"+this.flags);\n}\n\nBoxParser.Box.prototype.print = function(output) {\n\tthis.printHeader(output);\n}\n\nBoxParser.ContainerBox.prototype.print = function(output) {\n\tthis.printHeader(output);\n\tfor (var i=0; i<this.boxes.length; i++) {\n\t\tif (this.boxes[i]) {\n\t\t\tvar prev_indent = output.indent;\n\t\t\toutput.indent += \" \";\n\t\t\tthis.boxes[i].print(output);\n\t\t\toutput.indent = prev_indent;\n\t\t}\n\t}\n}\n\nISOFile.prototype.print = function(output) {\n\toutput.indent = \"\";\n\tfor (var i=0; i<this.boxes.length; i++) {\n\t\tif (this.boxes[i]) {\n\t\t\tthis.boxes[i].print(output);\n\t\t}\n\t}\t\n}\n\nBoxParser.mvhdBox.prototype.print = function(output) {\n\tBoxParser.FullBox.prototype.printHeader.call(this, output);\n\toutput.log(output.indent+\"creation_time: \"+this.creation_time);\n\toutput.log(output.indent+\"modification_time: \"+this.modification_time);\n\toutput.log(output.indent+\"timescale: \"+this.timescale);\n\toutput.log(output.indent+\"duration: \"+this.duration);\n\toutput.log(output.indent+\"rate: \"+this.rate);\n\toutput.log(output.indent+\"volume: \"+(this.volume>>8));\n\toutput.log(output.indent+\"matrix: \"+this.matrix.join(\", \"));\n\toutput.log(output.indent+\"next_track_id: \"+this.next_track_id);\n}\n\nBoxParser.tkhdBox.prototype.print = function(output) {\n\tBoxParser.FullBox.prototype.printHeader.call(this, output);\n\toutput.log(output.indent+\"creation_time: \"+this.creation_time);\n\toutput.log(output.indent+\"modification_time: \"+this.modification_time);\n\toutput.log(output.indent+\"track_id: \"+this.track_id);\n\toutput.log(output.indent+\"duration: \"+this.duration);\n\toutput.log(output.indent+\"volume: \"+(this.volume>>8));\n\toutput.log(output.indent+\"matrix: \"+this.matrix.join(\", \"));\n\toutput.log(output.indent+\"layer: \"+this.layer);\n\toutput.log(output.indent+\"alternate_group: \"+this.alternate_group);\n\toutput.log(output.indent+\"width: \"+this.width);\n\toutput.log(output.indent+\"height: \"+this.height);\n}// file:src/mp4box.js\n/*\n * Copyright (c) 2012-2013. Telecom ParisTech/TSI/MM/GPAC Cyril Concolato\n * License: BSD-3-Clause (see LICENSE file)\n */\nvar MP4Box = {};\n\nMP4Box.createFile = function (_keepMdatData, _stream) {\n\t/* Boolean indicating if bytes containing media data should be kept in memory */\n\tvar keepMdatData = (_keepMdatData !== undefined ? _keepMdatData : true);\n\tvar file = new ISOFile(_stream);\n\tfile.discardMdatData = (keepMdatData ? false : true);\n\treturn file;\n}\n\nif (typeof exports !== 'undefined') {\n\texports.createFile = MP4Box.createFile;\n}\n",null,null,null,null,null,null,null,null,null,null],"names":["MAX_U6","Math","pow","MAX_U14","MAX_U30","MAX_U53","Number","MAX_SAFE_INTEGER","MAX_U62","ImmutableBytesBuffer","buffer","offset","view","constructor","this","DataView","byteOffset","length","remaining","Uint8Array","slice","firstByteValue","getRemainingBuffer","subarray","getU8","Error","val","getUint8","getU16","getUint16","getU32","getUint32","getU64","getBigUint64","getVarInt","first","prefix","BigInt","getNumberVarInt","getBytes","len","getVarBytes","getUtf8String","TextDecoder","decode","MutableBytesBuffer","byteLength","enoughSpaceAvailable","required","newBuffer","x","set","putU8","v","setUint8","putU16","setUint16","putU32","setUint32","putU64","setBigUint64","putVarInt","value","shift","i","putBytes","putUtf8String","bytes","TextEncoder","encode","putLengthPrefixedByteArray","ReadableStreamBuffer","reader","readableStream","getReader","waitForBytes","Promise","resolve","fillTo","fill","result","read","done","temp","size","readAll","maxLength","undefined","getInt16","close","releaseLock","cancel","release","WritableStreamBuffer","writer","writableStream","getWriter","write","data","flush","clear","ReadableWritableStreamBuffer","readStreamBuffer","writeStreamBuffer","releaseAll","readBuffer","readStream","writeBuffer","writeStream","Tuple","TupleField","Location","KeyValuePairs","Parameters","GroupOrder","FilterType","Subscribe","SubscribeOk","SubscribeError","SubscribeUpdate","SubscribeNamespace","SubscribeNamespaceOk","SubscribeNamespaceError","Unsubscribe","Publish","PublishOk","PublishError","PublishDone","PublishNamespace","PublishNamespaceOk","PublishNamespaceError","PublishNamespaceDone","FetchType","StandaloneFetch","JoiningFetch","Fetch","FetchOk","FetchError","FetchCancel","GoAway","ClientSetup","ServerSetup","Version","ControlMessageType","async","sleep","ms","setTimeout","serialize","tuple","buf","forEach","field","serialized","deserialize","push","encoded","location","group","object","valueIsVarInt","key","deserialize_with_size","pairs","Map","deserialize_with_reader","order","Publisher","Ascending","Descending","NextGroupStart","LargestObject","AbsoluteStart","AbsoluteRange","mainBuf","payloadBuf","id","namespace","name","subscriber_priority","group_order","forward","filter_type","start_location","end_group","params","track_alias","expires","content_exists","largest_location","code","reason","subscription_id","stream_count","Standalone","Relative","Absolute","end_location","r","start","fetch_type","standalone","joining","end_of_track","session_uri","versions","version","supportedVersionLen","toString","t","ReservedSetupV00","MaxRequestId","RequestsBlocked","ControlStream","decoder","encoder","nextRequestId","mutex","c","Decoder","Encoder","recv","message","send","msg","unlock","lock","payload","p","then","incr","messageType","advertisedLength","console","error","rawPayload","res","type","w","m","SubgroupHeader","SubgroupObject","SubgroupType","ObjectForwardingPreference","Status","ObjectDatagramType","ObjectDatagram","header","group_id","hasExplicitSubgroupId","subgroup_id","publisher_priority","obj","object_id","extension_headers","object_payload","status","try_from","Type0x10","Type0x11","Type0x12","Type0x13","Type0x14","Type0x15","Type0x18","Type0x19","Type0x1A","Type0x1B","Type0x1C","Type0x1D","isSubgroupIdPresent","isSubgroupIdZero","isSubgroupFirstObjectId","isExtensionPresent","contains_end_of_group","SubgroupWriter","stream","SubgroupReader","extHeaders","obj_payload_len","NORMAL","OBJECT_NULL","GROUP_END","TRACK_END","Type0x0","Type0x1","Type0x2","Type0x3","Type0x4","Type0x5","Type0x6","Type0x7","Type0x20","Type0x21","isEndOfGroup","hasExtensions","hasObjectId","hasStatus","alias","extHeadersLength","extHeadersData","Objects","quic","h","datagrams","writable","TrackWriter","createUnidirectionalStream","subgroupHeader","streams","incomingUnidirectionalStreams","subgroupType","e","asError","String","Deferred","promise","reject","pending","Watch","current","next","init","update","Function","Notify","wait","wake","Queue","closed","capacity","queue","CountQueuingStrategy","highWaterMark","TransformStream","readable","abort","err","control","objects","publishedNamespaces","waitingPublishNamespaceRequests","subscribe","subscribeQueue","nextTrackAlias","publish_namespace","has","join","publishNamespaceSend","PublishNamespaceSend","Control.ControlMessageType","subscribed","recvSubscribe","recvUnsubscribe","recvPublishNamespaceOk","recvPublishNamespaceError","get","onOk","onError","warn","trackAlias","SubscribeRecv","unsubscribe","delete","state","ok","active","subscriberPriority","groupOrder","track","ack","acked","serve","props","priority","subgroup","Subscriber","publishedNamespacesQueue","trackToIDMap","trackAliasMap","aliasToSubscriptionMap","pendingTrack","recvPublishNamespace","recvPublishNamespaceDone","recvSubscribeOk","recvSubscribeError","recvPublishDone","publishNamespace","PublishNamespaceRecv","_msg","subscribe_namespace","SubscribeSend","subscription_req","Control.GroupOrder","Control.FilterType","trackID","callback","onDone","recvObject","subscriptionId","onData","_code","_reason","streamCount","Connection","controlStream","publisher","subscriber","running","run","closeCode","all","runControl","runObjects","Client","fingerprint","config","fetchFingerprint","catch","connect","options","serverCertificateHashes","WebTransport","url","ready","createBidirectionalStream","sendOrder","Control.Version","DRAFT_14","Control.ClientSetup","server","readServerSetup","Stream.ControlStream","response","fetch","hexString","text","hexBytes","parseInt","algorithm","bufferLen","bufReader","readClientSetup","Segment","input","cache","timestamp","backpressure","ByteLengthQueuingStrategy","transport","transform","chunk","controller","max","duration","enqueue","chunks","tee","log_level","Log","Date","setLogLevel","level","debug","info","module","log","getDurationString","_timescale","neg","pad","number","a","split","duration_sec","hours","floor","minutes","msec","printRanges","ranges","str","end","exports","MP4BoxStream","arrayBuffer","ArrayBuffer","dataview","position","prototype","getPosition","getEndPosition","getLength","seek","pos","npos","min","isNaN","isFinite","isEos","readAnyInt","signed","getInt8","getInt32","readUint8","readUint16","readUint24","readUint32","readUint64","readString","s","fromCharCode","readCString","arr","b","apply","readInt8","readInt16","readInt32","readInt64","readUint8Array","readInt16Array","Int16Array","readUint16Array","readUint32Array","Uint32Array","readInt32Array","Int32Array","DataStream","endianness","_byteOffset","dataView","LITTLE_ENDIAN","_realloc","extra","_dynamicSize","req","blen","_buffer","_byteLength","src","_trimAlloc","dst","BIG_ENDIAN","Object","defineProperty","_dataView","isEof","mapUint8Array","memcpy","BYTES_PER_ELEMENT","arrayToNative","readInt8Array","Int8Array","Uint16Array","readFloat64Array","Float64Array","readFloat32Array","Float32Array","readFloat32","getFloat32","readFloat64","getFloat64","dstOffset","srcOffset","dstU8","srcU8","array","arrayIsLittleEndian","flipArrayEndianness","nativeToEndian","littleEndian","u8","j","k","tmp","failurePosition","fromCharCodeUint8","uint8arr","encoding","MAX_SIZE","save","filename","blob","Blob","window","URL","createObjectURL","document","createElement","body","appendChild","setAttribute","click","revokeObjectURL","writeInt32Array","mapInt32Array","writeInt32","writeInt16Array","mapInt16Array","writeInt16","writeInt8Array","mapInt8Array","writeInt8","writeUint32Array","mapUint32Array","writeUint32","writeUint16Array","mapUint16Array","writeUint16","writeUint8Array","writeUint8","writeFloat64Array","mapFloat64Array","writeFloat64","writeFloat32Array","mapFloat32Array","writeFloat32","setInt32","setInt16","setInt8","setFloat32","setFloat64","writeUCS2String","lengthOverride","charCodeAt","writeString","substring","writeCString","writeStruct","structDefinition","struct","writeType","tp","Array","charset","test","ta","writeUint64","writeUint24","adjustUint32","MultiBufferStream","buffers","bufferIndex","insertBuffer","initialized","firstBuffer","fileStart","logBufferLevel","concat","buffer1","buffer2","reduceBuffer","newLength","smallB","usedBytes","ab","to_add","splice","used","total","range","bufferedString","cleanBuffers","mergeNextBuffer","next_buffer","oldLength","oldUsedBytes","oldFileStart","findPosition","fromStart","filePosition","markAsUsed","abuffer","index","findEndContiguousBuf","inputindex","currentBuf","nextBuf","getEndFilePositionAfter","addUsedBytes","nbBytes","setAllUsedBytes","MPEG4DescriptorParser","descTagToName","getDescriptorName","tag","that","classes","parseOneDescriptor","desc","byteRead","Descriptor","parse","_tag","_size","descs","findDescriptor","parseRemainingDescriptors","ES_Descriptor","call","ES_ID","flags","dependsOn_ES_ID","l","OCR_ES_ID","getOTI","dcd","oti","getAudioConfig","dsi","audioObjectType","DecoderConfigDescriptor","streamType","upStream","bufferSize","maxBitrate","avgBitrate","DecoderSpecificInfo","SLConfigDescriptor","BoxParser","ERR_INVALID_DATA","ERR_NOT_ENOUGH_DATA","OK","BASIC_BOXES","FULL_BOXES","CONTAINER_BOXES","boxCodes","fullBoxCodes","containerBoxCodes","sampleEntryCodes","sampleGroupEntryCodes","trackGroupTypes","UUIDBoxes","UUIDs","initialize","FullBox","Box","ContainerBox","SampleEntry","TrackGroupTypeBox","box","createBoxCtor","createFullBoxCtor","boxes","createContainerBoxCtor","_type","_name","_uuid","box_name","uuid","hdr_size","SampleGroupEntry","grouping_type","parseMethod","parseFullHeader","addSubBoxArrays","subBoxNames","nbSubBoxes","createMediaSampleEntryCtor","mediaType","createSampleEntryCtor","createEncryptedSampleEntryCtor","createSampleGroupCtor","createTrackGroupCtor","createUUIDBox","isFullBox","isContainerBox","printPS","ps","nalu","reduce","byte","padStart","ColorPoint","y","Pixel","row","col","bad_pixel_row","bad_pixel_column","TKHD_FLAG_ENABLED","TKHD_FLAG_IN_MOVIE","TKHD_FLAG_IN_PREVIEW","TFHD_FLAG_BASE_DATA_OFFSET","TFHD_FLAG_SAMPLE_DESC","TFHD_FLAG_SAMPLE_DUR","TFHD_FLAG_SAMPLE_SIZE","TFHD_FLAG_SAMPLE_FLAGS","TFHD_FLAG_DUR_EMPTY","TFHD_FLAG_DEFAULT_BASE_IS_MOOF","TRUN_FLAGS_DATA_OFFSET","TRUN_FLAGS_FIRST_FLAG","TRUN_FLAGS_DURATION","TRUN_FLAGS_SIZE","TRUN_FLAGS_FLAGS","TRUN_FLAGS_CTS_OFFSET","add","addBox","prop","addEntry","_prop","parseUUID","parseHex16","hex16","hex","parseOneBox","headerOnly","parentSize","diff","box_type","has_unparsed_data","parseDataAndRewind","ret","indexOf","parseLanguage","language","chars","languageString","SAMPLE_ENTRY_TYPE_VISUAL","SAMPLE_ENTRY_TYPE_AUDIO","SAMPLE_ENTRY_TYPE_HINT","SAMPLE_ENTRY_TYPE_METADATA","SAMPLE_ENTRY_TYPE_SUBTITLE","SAMPLE_ENTRY_TYPE_SYSTEM","SAMPLE_ENTRY_TYPE_TEXT","parseHeader","data_reference_index","parseFooter","compressorname_length","width","height","horizresolution","vertresolution","frame_count","compressorname","depth","channel_count","samplesize","samplerate","FieldLength","layer_size","op_index","aux_type","aux_subtype_length","aux_subtype","seq_profile","seq_level_idx_0","seq_tier_0","high_bitdepth","twelve_bit","monochrome","chroma_subsampling_x","chroma_subsampling_y","chroma_sample_position","reserved_1","initial_presentation_delay_present","initial_presentation_delay_minus_one","reserved_2","configOBUs_length","configOBUs","toparse","configurationVersion","AVCProfileIndication","profile_compatibility","AVCLevelIndication","lengthSizeMinusOne","nb_SPS_nalus","SPS","nb_PPS_nalus","PPS","ext","bufferSizeDB","all_ref_pics_intra","intra_pred_used","max_ref_per_pic","channel_indexes","channel_types","channel_associations","cleanApertureWidthN","cleanApertureWidthD","cleanApertureHeightN","cleanApertureHeightD","horizOffN","horizOffD","vertOffN","vertOffD","max_content_light_level","max_pic_average_light_level","pos_x","pos_y","pos_z","quat_x","quat_y","quat_z","focal_length_x","principal_point_x","principal_point_y","focal_length_y","skew_factor","component_count","component_types","component_type_urls","component_type","entry_count","chunk_offsets","maxCLL","maxFALL","colour_type","colour_primaries","transfer_characteristics","matrix_coefficients","full_range_flag","ICC_profile","notice","compositionToDTSShift","leastDecodeToDisplayDelta","greatestDecodeToDisplayDelta","compositionStartTime","compositionEndTime","sample_counts","sample_offsets","tmp_byte1","tmp_byte2","tmp_byte3","fscod","bsid","bsmod","acmod","lfeon","bit_rate_code","tmp_16","data_rate","num_ind_sub","ind_subs","ind_sub","num_dep_sub","chan_loc","boxesFound","knownBlockTypes","flagAndType","numMetadataBlocks","bytessent","time","OutputChannelCount","PreSkip","InputSampleRate","OutputGain","ChannelMappingFamily","StreamCount","CoupledCount","ChannelMapping","entries","extended_language","entry","segment_duration","media_time","media_rate_integer","media_rate_fraction","timescale","presentation_time","event_duration","scheme_id_uri","presentation_time_delta","message_size","message_data","createEntityToGroupCtor","num_entities_in_group","entity_ids","entity_id","tile_size_x","tile_size_y","layer_binning","tiles_in_layer_column_minus1","tiles_in_layer_row_minus1","esd_data","esd_parser","esd","fieldCount","fieldOrdering","data_format","major_brand","minor_version","compatible_brands","handler","tmp_byte","general_profile_space","general_tier_flag","general_profile_idc","general_profile_compatibility","general_constraint_indicator","general_level_idc","min_spatial_segmentation_idc","parallelismType","chroma_format_idc","bit_depth_luma_minus8","bit_depth_chroma_minus8","avgFrameRate","constantFrameRate","numTemporalLayers","temporalIdNested","nalu_arrays","nalu_array","completeness","nalu_type","numOfArrays","numNalus","item_infos","offset_size","length_size","base_offset_size","index_size","items","item_count","item","item_ID","construction_method","base_offset","extent_count","extents","extent","extent_index","extent_offset","extent_length","reserved","axis","item_protection_index","item_name","content_type","content_encoding","extension_type","item_type","item_uri_type","associations","item_assoc","association_count","essential","property_index","references","SingleItemTypeReferenceBox","SingleItemTypeReferenceBoxLarge","angle","image_width","image_height","schemeURI","count","levels","track_ID","padding_flag","assignment_type","grouping_type_parameter","sub_track_id","layer_id","period","display_primaries","white_point","max_display_mastering_luminance","min_display_mastering_luminance","creation_time","modification_time","fragment_duration","sequence_number","bits_per_pixel","rate","volume","matrix","next_track_id","packetssent","sample_count","padbits","hSpacing","vSpacing","payloadID","rtpmap_string","initial_delay","item_id","num_channels","bits_per_channels","step_count","ref_track_id","ntp_timestamp","system_id","kid","datasize","descriptionformat","sdptext","aux_info_type","aux_info_type_parameter","default_sample_info_size","sample_info_size","mime_format","schema_location","auxiliary_mime_types","displayFlags","horizontal_justification","vertical_justification","bg_color_rgba","box_record","style_record","roll_count","first_output_sample","sample_offset","description_length","num_output_samples","num_total_samples","layerNumber","accurateStatisticsFlag","avgBitRate","subSequenceIdentifier","durationFlag","avgRateFlag","dependency","numReferences","dependencyInfo","subSeqDirectionFlag","roll_distance","num_leading_samples_known","num_leading_samples","operation_point_count","target_rate_share","available_bitrate","maximum_bitrate","minimum_bitrate","discard_priority","crypt_byte_block","skip_byte_block","isProtected","Per_Sample_IV_Size","KID","constant_IV_size","constant_IV","NAL_unit_type","level_independently_decodable","group_description_index","component_index","correction_applied","num_bad_rows","num_bad_cols","num_bad_pixels","bad_rows","bad_columns","bad_pixels","scheme_type","scheme_version","scheme_uri","is_leading","sample_depends_on","sample_is_depended_on","sample_has_redundancy","default_length","default_group_description_index","reference_ID","earliest_presentation_time","first_offset","ref","tmp_32","reference_type","referenced_size","subsegment_duration","starts_with_SAP","SAP_type","SAP_delta_time","from_item_ID","to_item_ID","primaryRChromaticity_x","primaryRChromaticity_y","primaryGChromaticity_x","primaryGChromaticity_y","primaryBChromaticity_x","primaryBChromaticity_y","whitePointChromaticity_x","whitePointChromaticity_y","luminanceMax","luminanceMin","balance","subsegments","subsegment_count","subsegment","range_count","range_size","switch_group","alternate_group","attribute_list","first_chunk","samples_per_chunk","sample_description_index","entryCount","shadowed_sample_numbers","sync_sample_numbers","sample_numbers","sample_sizes","sample_size","delta","sample_deltas","tmp32","single_view_allowed","stereo_scheme","stereo_indication_type","ftypBox","field_size","subsample_count","sampleInfo","sample_delta","subsamples","subsample","discardable","codec_specific_parameters","default_crypt_byte_block","default_skip_byte_block","default_isProtected","default_Per_Sample_IV_Size","default_KID","default_constant_IV_size","default_constant_IV","baseMediaDecodeTime","readBytes","track_id","base_data_offset","default_sample_description_index","default_sample_duration","default_sample_size","default_sample_flags","length_size_of_traf_num","length_size_of_trun_num","length_size_of_sample_num","number_of_entries","moof_offset","traf_number","trun_number","sample_number","layer","track_group_id","TrackReferenceTypeBox","track_ids","trefBox","data_offset","first_sample_flags","sample_duration","sample_flags","sample_composition_time_offset","lang","description","tags","profile","component_bit_depth_minus_one","component_format","component_align_size","sampling_type","interleave_type","block_size","component_little_endian","block_pad_lsb","block_little_endian","block_reversed","pad_unknown","pixel_size","row_align_size","tile_align_size","num_tile_cols_minus_one","num_tile_rows_minus_one","LiveServerManifest","replace","default_AlgorithmID","default_IV_size","fragment_count","absolute_time","absolute_duration","graphicsmode","opcolor","bitDepth","chromaSubsampling","videoFullRangeFlag","colourPrimaries","transferCharacteristics","matrixCoefficients","codecIntializationDataSize","codecIntializationData","colorSpace","transferFunction","bitReader","held_bits","num_held_bits","stream_read_1_bytes","strm","stream_read_2_bytes","extract_bits","num_bits","ptl_present_flag","ols_idx","num_sublayers","constant_frame_rate","bit_depth_minus8","num_bytes_constraint_info","ptl_frame_only_constraint_flag","ptl_multilayer_enabled_flag","general_constraint_info","cnstr1","cnstr2","ptl_sublayer_present_mask","sublayer_level_idc","ptl_num_sub_profiles","general_sub_profile_idc","max_picture_width","max_picture_height","avg_frame_rate","num_of_arrays","isVideo","isAudio","isSubtitle","isMetadata","isHint","getCodec","getWidth","getHeight","getChannelCount","getSampleRate","getSampleSize","VisualSampleEntry","AudioSampleEntry","SubtitleSampleEntry","MetadataSampleEntry","decimalToHex","d","padding","avc1SampleEntry","avc2SampleEntry","avc3SampleEntry","avc4SampleEntry","baseCodec","avcC","hev1SampleEntry","hvc1SampleEntry","hvcC","reversed","hasByte","constraint_string","vvc1SampleEntry","vvi1SampleEntry","vvcC","last_nonzero","ptl_frame_only_constraint","ptl_multilayer_enabled","base32_chars","mp4aSampleEntry","esds","stxtSampleEntry","vp08SampleEntry","vp09SampleEntry","vpcC","av01SampleEntry","bitdepth","av1C","writeHeader","sizePosition","avcCBox","co64Box","cslgBox","cttsBox","drefBox","elngBox","elstBox","emsgBox","hdlrBox","hvcCBox","kindBox","mdhdBox","mehdBox","mfhdBox","mvhdBox","writeFooter","stppSampleEntry","sbgpBox","sgpdBox","sidxBox","smhdBox","stcoBox","stscBox","stsdBox","stshBox","stssBox","stszBox","constant","sttsBox","tfdtBox","UINT32_MAX","tfhdBox","tkhdBox","trexBox","trunBox","data_offset_position","vmhdBox","unpack","samples","pts","dts","Infinity","description_index","chunk_index","DIFF_BOXES_PROP_NAMES","DIFF_PRIMITIVE_ARRAY_PROP_NAMES","boxEqualFields","box_a","box_b","boxEqual","VTTin4Parser","parseSample","cues","cue","getText","startTime","endTime","n","z","secToTimestamp","insec","string","cueIn4","payl","XMLSubtitlein4Parser","sample","documentString","resources","DOMParser","parseFromString","Textin4Parser","parseConfig","ISOFile","mdats","moofs","isProgressive","moovStartFound","onMoovStart","moovStartSent","onReady","readySent","onSegment","onSamples","sampleListBuilt","fragmentedTracks","extractedTracks","isFragmentationInitialized","sampleProcessingStarted","nextMoofNumber","itemListBuilt","entity_groups","onSidx","sidxSent","setSegmentOptions","user","trak","getTrackById","fragTrack","nextSample","segmentStream","nb_samples","rapAlignement","nbSamples","unsetSegmentOptions","setExtractionOptions","extractTrack","unsetExtractionOptions","restoreParsePosition","hasIncompleteMdat","processIncompleteMdat","saveParsePosition","processIncompleteBox","updateUsedBytes","checkBuffer","appendBuffer","last","nextFileStart","moov","buildSampleLists","updateSampleLists","getInfo","processSamples","nextSeekPosition","nextParsePosition","sidx","meta","flattenItemInfo","processItems","onItem","getAllocatedSampleDataSize","sample_desc","movie","_1904","getTime","hasMoov","mvhd","isFragmented","mvex","mehd","hasIOD","iods","brands","ftyp","created","modified","tracks","audioTracks","videoTracks","subtitleTracks","metadataTracks","hintTracks","otherTracks","traks","mdia","minf","stbl","stsd","tkhd","hdlr","tref","edts","edits","elst","movie_duration","movie_timescale","track_width","track_height","mdhd","cts_shift","cslg","samples_duration","codec","kind","udta","kinds","elng","samples_size","bitrate","audio","sample_rate","video","mime","setNextSeekPositionFromSample","alreadyRead","fragTrak","createFragment","extractTrak","getSample","getBox","getBoxes","returnEarly","_sweep","getTrackSamplesInfo","getTrackSample","releaseUsedSamples","sampleNum","lastValidSample","releaseSample","samplesDataSize","stop","seekTrack","useRap","seek_offset","rap_seek_sample_num","seek_sample_num","cts","is_sync","getTrackDuration","trak_seek_info","seek_info","equal","box_index","a_box","b_box","lastBoxStartPosition","parsingMdat","discardMdatData","_options","addTrack","media_duration","sample_description_entry","media_type","codes","avcDecoderConfigRecord","hevcDecoderConfigRecord","description_boxes","buildTrakSampleLists","computeSize","stream_","addSample","depends_on","is_depended_on","has_redundancy","degradation_priority","first_dts","moof","createSingleSampleMoof","trafs","truns","moofBox","traf","lastMoofIndex","resetTables","stsc","stts","ctts","stss","initial_duration","stco","co64","stsz","stz2","initSampleGroups","sbgps","trak_sgpds","traf_sgpds","sample_group_info","sample_group_key","SampleGroupInfo","_parameter","_sbgp","sbgp","last_sample_in_run","entry_index","sample_groups_info","fragment_description","is_fragment","setSampleGroupProperties","sample_groups","process_sdtp","sdtp","subs","sgpds","stdp","chunk_run_index","last_chunk_in_run","offset_in_chunk","last_sample_in_chunk","last_sample_in_stts_run","stts_run_index","last_sample_in_ctts_run","ctts_run_index","last_stss_index","subs_entry_index","last_subs_sample_index","last_run_position","trex","tfhd","getTrexById","trun","moof_number","number_in_traf","first_sample_index","first_traf_merged","tfdt","bdop","dbim","dop","bdo","has_fragment_subsamples","sample_index","lengthAfterStart","getCodecs","codecs","trexs","itemsDataSize","iinf","ref_to","protection_index","protection","ipro","protections","grpl","entity_group","iloc","itemloc","source","dinf","idat","pitm","primary","iref","iprp","ipmas","ipma","association","properties","propEntry","ipco","propbox","getItem","releaseItem","sent","hasItem","getMetaHandler","getPrimaryItem","itemToFragmentedTrackFile","itemId","file","trackOptions","ispe","trackId","outstream","sampleNumber","mdat","mdatBox","writeInitializationSegment","total_duration","getBuffer","initializeSegmentation","initSegs","seg","moovBox","printHeader","output","indent","print","prev_indent","MP4Box","_keepMdatData","_stream","keepMdatData","createFile","MP4.BoxParser","dOpsBox","mapping","Container","mp4","frame","segment","MP4.ISOFile","isDecoderConfig","codedWidth","isVideoConfig","numberOfChannels","sampleRate","codedHeight","dops","MP4.Stream","copyTo","SUPPORTED","encoderConfig","decoderConfig","frames","bind","AudioEncoder","metadata","configure","isSupported","short","includes","isConfigSupported","supported","keyframeNext","keyframeCounter","bitrateMode","latencyMode","hardwareAcceleration","VideoEncoder","keyFrame","encodeQueueSize","framerate","Track","segments","notify","media","runAudio","isVideoTrack","runVideo","MediaStreamTrackProcessor","Audio.Encoder","container","WritableStream","pipeThrough","pipeTo","Video.Encoder","at","desiredSize","ReadableStream","pull","isAudioTrackSettings","settings","isVideoTrackSettings","Broadcast","catalog","connection","mediaTracks","getTracks","getSettings","audioContext","AudioContext","createMediaStreamSource","MediaStream","assign","initTrack","selectionParams","mimeType","frameRate","channelConfig","channelCount","streamingFormat","streamingFormatVersion","supportsDeltaUpdates","commonTrackFields","packaging","renderGroup","serveSubscribe","base","lastIndexOf","splitExt","serveCatalog","serveInit","serveTrack","JSON","stringify","Catalog.encode","serveSegment","attach","srcObject","PublisherApi","client","broadcast","opts","fingerprintUrl","publish","bcConfig","PublisherMoq","HTMLElement","shadow","cameraSelect","microphoneSelect","previewVideo","connectButton","playbackUrlTextarea","mediaStream","isPublishing","super","attachShadow","mode","style","textContent","classList","autoplay","playsInline","muted","readOnly","rows","display","marginTop","append","handleDeviceChange","handleClick","navigator","mediaDevices","addEventListener","startPreview","connectedCallback","populateDeviceLists","disconnectedCallback","removeEventListener","devices","enumerateDevices","vids","filter","mics","innerHTML","o","deviceId","label","vidId","micId","videoConstraints","exact","ideal","audioConstraints","getUserMedia","disabled","getAttribute","crypto","randomUUID","getAudioTracks","makeEven","videoConfig","videoWidth","videoHeight","audioConfig","playbackBaseUrl","customElements","define"],"mappings":"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,EAAUmG,yBAA0B,QACpEnG,EAAUyC,sBAAsBzC,EAAUmG,yBAA0B,QACpEnG,EAAUyC,sBAAsBzC,EAAUmG,yBAA0B,QACpEnG,EAAUyC,sBAAsBzC,EAAUmG,yBAA0B,QACpEnG,EAAUyC,sBAAsBzC,EAAUmG,yBAA0B,QACpEnG,EAAUyC,sBAAsBzC,EAAUmG,yBAA0B,QACpEnG,EAAUyC,sBAAsBzC,EAAUmG,yBAA0B,QACpEnG,EAAUyC,sBAAsBzC,EAAUmG,yBAA0B,QACpEnG,EAAUyC,sBAAsBzC,EAAUmG,yBAA0B,QACpEnG,EAAUyC,sBAAsBzC,EAAUmG,yBAA0B,QACpEnG,EAAUyC,sBAAsBzC,EAAUmG,yBAA0B,QACpEnG,EAAUyC,sBAAsBzC,EAAUmG,yBAA0B,QACpEnG,EAAUyC,sBAAsBzC,EAAUmG,yBAA0B,QACpEnG,EAAUyC,sBAAsBzC,EAAUmG,yBAA0B,QACpEnG,EAAUyC,sBAAsBzC,EAAUmG,yBAA0B,QACpEnG,EAAUyC,sBAAsBzC,EAAUmG,yBAA0B,QACpEnG,EAAUyC,sBAAsBzC,EAAUmG,yBAA0B,QACpEnG,EAAUyC,sBAAsBzC,EAAUmG,yBAA0B,QACpEnG,EAAUyC,sBAAsBzC,EAAUmG,yBAA0B,QACpEnG,EAAUyC,sBAAsBzC,EAAUmG,yBAA0B,QACpEnG,EAAUyC,sBAAsBzC,EAAUmG,yBAA0B,QACpEnG,EAAUyC,sBAAsBzC,EAAUmG,yBAA0B,QACpEnG,EAAUyC,sBAAsBzC,EAAUoG,wBAA0B,QACpEpG,EAAUyC,sBAAsBzC,EAAUoG,wBAA0B,QACpEpG,EAAUyC,sBAAsBzC,EAAUoG,wBAA0B,QACpEpG,EAAUyC,sBAAsBzC,EAAUoG,wBAA0B,QACpEpG,EAAUyC,sBAAsBzC,EAAUoG,wBAA0B,QACpEpG,EAAUyC,sBAAsBzC,EAAUoG,wBAA0B,QACpEpG,EAAUyC,sBAAsBzC,EAAUoG,wBAA0B,QACpEpG,EAAUyC,sBAAsBzC,EAAUoG,wBAA0B,QACpEpG,EAAUyC,sBAAsBzC,EAAUoG,wBAA0B,QACpEpG,EAAUyC,sBAAsBzC,EAAUoG,wBAA0B,QAGpEpG,EAAU0C,+BAA+B1C,EAAUmG,yBAA2B,QAC9EnG,EAAU0C,+BAA+B1C,EAAUoG,wBAA0B,QAC7EpG,EAAU0C,+BAA+B1C,EAAUuG,2BAA6B,QAChFvG,EAAU0C,+BAA+B1C,EAAUwG,yBAA2B,QAC9ExG,EAAU0C,+BAA+B1C,EAAUyG,uBAA0B,QAC7EzG,EAAU0C,+BAA+B1C,EAAUsG,2BAA6B,QAEhFtG,EAAUsB,cAAc,OAAQ,kCAAmC,SAASld,GAC3E,IACIojB,EAAuC,IAAL,GADA,EAArBpjB,EAAOoO,cAExB1e,KAAK2zB,WAAa,GAClB,IAAK,IAAIzwB,EAAI,EAAGA,EAAI,EAAGA,IAErBlD,KAAK2zB,WAAWzwB,GADE,IAAfwwB,EACkBpjB,EAAOqO,aAEPrO,EAAOuO,YAG/B,GACAqN,EAAUsB,cAAc,OAAQ,iCAAkC,SAASld,GAC1EtQ,KAAK4zB,SAAWtjB,EAAOoO,WACxB,GACAwN,EAAUuB,kBAAkB,OAAQ,wBAAyB,SAASnd,GACrEtQ,KAAK6zB,SAAWvjB,EAAO4O,cACvB,IAAI4U,EAAqB9zB,KAAKsE,KAAOtE,KAAKiuB,UAAYjuB,KAAK6zB,SAAS1zB,OAAS,GAC7EH,KAAK+zB,YAAczjB,EAAOoP,eAAeoU,EAC1C,GACA5H,EAAUsB,cAAc,OAAQ,2BAA4B,SAASld,GAGpE,IAAI2S,EAAM3S,EAAOoO,YACjB,GAAyB,IAApBuE,GAAO,GACXpH,EAAIjO,MAAM,4BAIX,GADA5N,KAAKgM,QAAgB,IAANiX,EACM,IAAjBjjB,KAAKgM,QAiBT,GAbAiX,EAAM3S,EAAOoO,YACb1e,KAAKg0B,YAAe/Q,GAAO,EAAK,EAChCjjB,KAAKi0B,gBAAwB,GAANhR,EACvBA,EAAM3S,EAAOoO,YACb1e,KAAKk0B,WAAcjR,GAAO,EAAK,EAC/BjjB,KAAKm0B,cAAiBlR,GAAO,EAAK,EAClCjjB,KAAKo0B,WAAcnR,GAAO,EAAK,EAC/BjjB,KAAKq0B,WAAcpR,GAAO,EAAK,EAC/BjjB,KAAKs0B,qBAAwBrR,GAAO,EAAK,EACzCjjB,KAAKu0B,qBAAwBtR,GAAO,EAAK,EACzCjjB,KAAKw0B,uBAAgC,EAANvR,EAC/BA,EAAM3S,EAAOoO,YACb1e,KAAKy0B,WAAcxR,GAAO,EAAK,EACP,IAApBjjB,KAAKy0B,WAAT,CAKA,GADAz0B,KAAK00B,mCAAsCzR,GAAO,EAAK,EACP,IAA5CjjB,KAAK00B,mCACR10B,KAAK20B,qCAA8C,GAAN1R,OAG7C,GADAjjB,KAAK40B,WAAoB,GAAN3R,EACK,IAApBjjB,KAAK40B,WAER,YADA/Y,EAAIjO,MAAM,mCAKZ,IAAIinB,EAAoB70B,KAAKsE,KAAOtE,KAAKiuB,SAAW,EACpDjuB,KAAK80B,WAAaxkB,EAAOoP,eAAemV,EAbzC,MAFEhZ,EAAIjO,MAAM,wCAjBViO,EAAIjO,MAAM,gBAAgB5N,KAAKgM,QAAQ,iBAiCzC,GAsBAkgB,EAAUsB,cAAc,OAAQ,sBAAuB,SAASld,GAC/D,IAAIpN,EACA6xB,EAYJ,IAXA/0B,KAAKg1B,qBAAuB1kB,EAAOoO,YACnC1e,KAAKi1B,qBAAuB3kB,EAAOoO,YACnC1e,KAAKk1B,sBAAwB5kB,EAAOoO,YACpC1e,KAAKm1B,mBAAqB7kB,EAAOoO,YACjC1e,KAAKo1B,mBAA2C,EAArB9kB,EAAOoO,YAClC1e,KAAKq1B,aAAqC,GAArB/kB,EAAOoO,YAC5BqW,EAAU/0B,KAAKsE,KAAOtE,KAAKiuB,SAAW,EACtCjuB,KAAKs1B,IAAM,GACXt1B,KAAKs1B,IAAIppB,SAAW,WACnB,OAAOgjB,EAAQlvB,KACjB,EACMkD,EAAI,EAAGA,EAAIlD,KAAKq1B,aAAcnyB,IAClClD,KAAKs1B,IAAIpyB,GAAK,CAAA,EACdlD,KAAKs1B,IAAIpyB,GAAG/C,OAASmQ,EAAOqO,aAC5B3e,KAAKs1B,IAAIpyB,GAAGksB,KAAO9e,EAAOoP,eAAe1f,KAAKs1B,IAAIpyB,GAAG/C,QACrD40B,GAAW,EAAE/0B,KAAKs1B,IAAIpyB,GAAG/C,OAQ1B,IANAH,KAAKu1B,aAAejlB,EAAOoO,YAC3BqW,IACA/0B,KAAKw1B,IAAM,GACXx1B,KAAKw1B,IAAItpB,SAAW,WACnB,OAAOgjB,EAAQlvB,KACjB,EACMkD,EAAI,EAAGA,EAAIlD,KAAKu1B,aAAcryB,IAClClD,KAAKw1B,IAAItyB,GAAK,CAAA,EACdlD,KAAKw1B,IAAItyB,GAAG/C,OAASmQ,EAAOqO,aAC5B3e,KAAKw1B,IAAItyB,GAAGksB,KAAO9e,EAAOoP,eAAe1f,KAAKw1B,IAAItyB,GAAG/C,QACrD40B,GAAW,EAAE/0B,KAAKw1B,IAAItyB,GAAG/C,OAEtB40B,EAAQ,IACX/0B,KAAKy1B,IAAMnlB,EAAOoP,eAAeqV,GAEnC,GAGA7I,EAAUsB,cAAc,OAAQ,aAAc,SAASld,GACtDtQ,KAAK01B,aAAeplB,EAAOuO,aAC3B7e,KAAK8rB,WAAaxb,EAAOuO,aACzB7e,KAAK+rB,WAAazb,EAAOuO,YAC1B,GAGAqN,EAAUuB,kBAAkB,OAAQ,uBAAwB,SAASnd,GACpE,IAAI0a,EAAQ1a,EAAOoO,YACnB1e,KAAK21B,qBAAwC,KAAjB3K,GAC5BhrB,KAAK41B,kBAAqC,IAAjB5K,GACzBhrB,KAAK61B,iBAA4B,GAAR7K,IAAiB,EAC1C1a,EAAOsO,YACR,GAGAsN,EAAUsB,cAAc,OAAQ,yBAA0B,SAASld,GAC/D,IAAIpN,EAKJ,IAJAlD,KAAKuzB,cAAgBjjB,EAAOqO,aAC5B3e,KAAK81B,gBAAkB,GACvB91B,KAAK+1B,cAAgB,GACrB/1B,KAAKg2B,qBAAuB,GACvB9yB,EAAI,EAAGA,EAAIlD,KAAKuzB,cAAerwB,IAChClD,KAAK81B,gBAAgBjtB,KAAKyH,EAAOqO,cACjC3e,KAAK+1B,cAAcltB,KAAKyH,EAAOqO,cAC/B3e,KAAKg2B,qBAAqBntB,KAAKyH,EAAOqO,aAE9C,GAGAuN,EAAUsB,cAAc,OAAQ,mBAAoB,SAASld,GAC5DtQ,KAAKi2B,oBAAsB3lB,EAAOuO,aAClC7e,KAAKk2B,oBAAsB5lB,EAAOuO,aAClC7e,KAAKm2B,qBAAuB7lB,EAAOuO,aACnC7e,KAAKo2B,qBAAuB9lB,EAAOuO,aACnC7e,KAAKq2B,UAAY/lB,EAAOuO,aACxB7e,KAAKs2B,UAAYhmB,EAAOuO,aACxB7e,KAAKu2B,SAAWjmB,EAAOuO,aACvB7e,KAAKw2B,SAAWlmB,EAAOuO,YACxB,GACAqN,EAAUsB,cAAc,OAAQ,uBAAwB,SAASld,GAChEtQ,KAAKy2B,wBAA0BnmB,EAAOqO,aACnC3e,KAAK02B,4BAA8BpmB,EAAOqO,YAC9C,GAGAuN,EAAUuB,kBAAkB,OAAQ,gCAAiC,SAASnd,GAC5D,EAAbtQ,KAAKgrB,QACRhrB,KAAK22B,MAAQrmB,EAAOkP,aAEJ,EAAbxf,KAAKgrB,QACRhrB,KAAK42B,MAAQtmB,EAAOkP,aAEJ,EAAbxf,KAAKgrB,QACRhrB,KAAK62B,MAAQvmB,EAAOkP,aAEJ,EAAbxf,KAAKgrB,QACY,GAAhBhrB,KAAKgM,QACS,GAAbhM,KAAKgrB,OACRhrB,KAAK82B,OAASxmB,EAAOkP,YACrBxf,KAAK+2B,OAASzmB,EAAOkP,YACrBxf,KAAKg3B,OAAS1mB,EAAOkP,cAErBxf,KAAK82B,OAASxmB,EAAOiP,YACrBvf,KAAK+2B,OAASzmB,EAAOiP,YACrBvf,KAAKg3B,OAAS1mB,EAAOiP,aAEZvf,KAAKgM,SAIA,GAAbhM,KAAKgrB,QACRhrB,KAAKkK,GAAKoG,EAAOuO,aAEnB,GAEAqN,EAAUuB,kBAAkB,OAAQ,gCAAiC,SAASnd,GAC7EtQ,KAAKi3B,eAAiB3mB,EAAOkP,YAC7Bxf,KAAKk3B,kBAAoB5mB,EAAOkP,YAChCxf,KAAKm3B,kBAAoB7mB,EAAOkP,YACf,EAAbxf,KAAKgrB,QACRhrB,KAAKo3B,eAAiB9mB,EAAOkP,YAC7Bxf,KAAKq3B,YAAc/mB,EAAOkP,YAE5B,GACA0M,EAAUsB,cAAc,OAAQ,yBAA0B,SAASld,GAIlE,IAHAtQ,KAAKs3B,gBAAkBhnB,EAAOuO,aAC9B7e,KAAKu3B,gBAAkB,GACvBv3B,KAAKw3B,oBAAsB,GACtBt0B,EAAI,EAAGA,EAAIlD,KAAKs3B,gBAAiBp0B,IAAK,CAC1C,IAAIu0B,EAAiBnnB,EAAOqO,aAC5B3e,KAAKu3B,gBAAgB1uB,KAAK4uB,GACtBA,GAAkB,OACrBz3B,KAAKw3B,oBAAoB3uB,KAAKyH,EAAO4O,cAExC,CACA,GACAgN,EAAUuB,kBAAkB,OAAQ,sBAAuB,SAASnd,GACnE,IAAIonB,EACAx0B,EAGJ,GAFAw0B,EAAcpnB,EAAOuO,aACrB7e,KAAK23B,cAAgB,GACA,IAAjB33B,KAAKgM,QACR,IAAI9I,EAAE,EAAGA,EAAEw0B,EAAax0B,IACvBlD,KAAK23B,cAAc9uB,KAAKyH,EAAOwO,aAGlC,GAGAoN,EAAUuB,kBAAkB,OAAQ,uBAAwB,SAASnd,GACpEtQ,KAAK43B,OAAStnB,EAAOqO,aAClB3e,KAAK63B,QAAUvnB,EAAOqO,YAC1B,GAGAuN,EAAUsB,cAAc,OAAQ,uBAAwB,SAASld,GAEhE,GADAtQ,KAAK83B,YAAcxnB,EAAOyO,WAAW,GACZ,SAArB/e,KAAK83B,YAAwB,CAChC93B,KAAK+3B,iBAAmBznB,EAAOqO,aAC/B3e,KAAKg4B,yBAA2B1nB,EAAOqO,aACvC3e,KAAKi4B,oBAAsB3nB,EAAOqO,aAClC,IAAIsE,EAAM3S,EAAOoO,YACjB1e,KAAKk4B,gBAAkBjV,GAAO,CAChC,MAAiC,SAArBjjB,KAAK83B,aAEgB,SAArB93B,KAAK83B,eADf93B,KAAKm4B,YAAc7nB,EAAOoP,eAAe1f,KAAKsE,KAAO,GAIvD,GACA4nB,EAAUuB,kBAAkB,OAAQ,eAAgB,SAAUnd,GAC7DtQ,KAAKiyB,cAAc3hB,GACnBtQ,KAAKo4B,OAAS9nB,EAAO4O,aACtB,GAGAgN,EAAUuB,kBAAkB,OAAQ,yBAA0B,SAASnd,GAEjD,IAAjBtQ,KAAKgM,UACRhM,KAAKq4B,sBAAwB/nB,EAAOkP,YACpCxf,KAAKs4B,0BAA4BhoB,EAAOkP,YACxCxf,KAAKu4B,6BAA+BjoB,EAAOkP,YAC3Cxf,KAAKw4B,qBAAuBloB,EAAOkP,YACnCxf,KAAKy4B,mBAAqBnoB,EAAOkP,YAEnC,GAGA0M,EAAUuB,kBAAkB,OAAQ,uBAAwB,SAASnd,GACpE,IAAIonB,EACAx0B,EAIJ,GAHAw0B,EAAcpnB,EAAOuO,aACrB7e,KAAK04B,cAAgB,GACrB14B,KAAK24B,eAAiB,GACD,IAAjB34B,KAAKgM,QACR,IAAI9I,EAAE,EAAGA,EAAEw0B,EAAax0B,IAAK,CAC5BlD,KAAK04B,cAAc7vB,KAAKyH,EAAOuO,cAI5B,IAAI7b,EAAQsN,EAAOkP,YACfxc,EAAQ,GACV6Y,EAAIpG,KAAK,YAAa,yDAE3BzV,KAAK24B,eAAe9vB,KAAK7F,EAC5B,MACQ,GAAoB,GAAhBhD,KAAKgM,QACf,IAAI9I,EAAE,EAAGA,EAAEw0B,EAAax0B,IACvBlD,KAAK04B,cAAc7vB,KAAKyH,EAAOuO,cAC/B7e,KAAK24B,eAAe9vB,KAAKyH,EAAOkP,YAGnC,GAGA0M,EAAUsB,cAAc,OAAQ,iBAAkB,SAASld,GAC1D,IAAIsoB,EAAYtoB,EAAOoO,YACnBma,EAAYvoB,EAAOoO,YACnBoa,EAAYxoB,EAAOoO,YACvB1e,KAAK+4B,MAAQH,GAAa,EAC1B54B,KAAKg5B,KAAUJ,GAAa,EAAK,GACjC54B,KAAKi5B,OAAsB,EAAZL,IAAqB,EAAOC,GAAa,EAAK,EAC7D74B,KAAKk5B,MAAUL,GAAa,EAAK,EACjC74B,KAAKm5B,MAAUN,GAAa,EAAK,EACjC74B,KAAKo5B,cAA6B,EAAZP,EAAqBC,GAAa,EAAK,CAC9D,GAGA5M,EAAUsB,cAAc,OAAQ,iBAAkB,SAASld,GAC1D,IAAI+oB,EAAS/oB,EAAOqO,aACpB3e,KAAKs5B,UAAYD,GAAU,EAC3Br5B,KAAKu5B,YAAuB,EAATF,EACnBr5B,KAAKw5B,SAAW,GAChB,IAAK,IAAIt2B,EAAI,EAAGA,EAAIlD,KAAKu5B,YAAY,EAAGr2B,IAAK,CAC5C,IAAIu2B,EAAU,CAAA,EACdz5B,KAAKw5B,SAAS3wB,KAAK4wB,GACnB,IAAIb,EAAYtoB,EAAOoO,YACnBma,EAAYvoB,EAAOoO,YACnBoa,EAAYxoB,EAAOoO,YACvB+a,EAAQV,MAAQH,GAAa,EAC7Ba,EAAQT,KAAUJ,GAAa,EAAK,GACpCa,EAAQR,OAAsB,EAAZL,IAAoB,EAAOC,GAAa,EAAK,GAC/DY,EAAQP,MAAUL,GAAa,EAAK,EACpCY,EAAQN,MAAqB,EAAZN,EACjBY,EAAQC,YAAgBZ,GAAa,EAAK,GACtCW,EAAQC,YAAc,IACzBD,EAAQE,UAAyB,EAAZb,IAAoB,EAAKxoB,EAAOoO,YAExD,CACA,GAGAwN,EAAUuB,kBAAkB,OAAQ,kBAAmB,SAASnd,GAiB5D,IAhBA,IAGIspB,EAAa,GACbC,EAAkB,CAClB,aACA,UACA,cACA,YACA,iBACA,WACA,UACA,cAID,CACC,IAAIC,EAAcxpB,EAAOoO,YAErB3Q,EAAO5O,KAAK+e,IAnBC,IAoBZ4b,EACAD,EAAgB15B,OAAS,GAqB9B,GAhBM4N,EAWFuC,EAAOoP,eAAepP,EAAOsO,eAT7BtO,EAAOoP,eAAe,IAGtB1f,KAAKyzB,WAAcnjB,EAAOuO,cAAgB,GAG1CvO,EAAOoP,eAAe,KAM1Bka,EAAW/wB,KAAKgxB,EAAgB9rB,IAvCH,IAyCtB+rB,EACH,KAEZ,CAEI95B,KAAK+5B,kBACDH,EAAWz5B,OAAS,KAAOy5B,EAAW/kB,KAAK,MAAQ,GAC3D,GAEAqX,EAAUsB,cAAc,OAAQ,yBAA0B,SAASld,GAClEtQ,KAAKg6B,UAAY1pB,EAAOwO,YACzB,GAGAoN,EAAUsB,cAAc,OAAQ,oBAAqB,SAASld,GAC7DtQ,KAAKi6B,KAAO3pB,EAAOuO,YACpB,GAGAqN,EAAUsB,cAAc,OAAQ,qBAAsB,SAASld,GAC9DtQ,KAAKg6B,UAAY1pB,EAAOwO,YACzB,GAGAoN,EAAUsB,cAAc,OAAQ,kBAAmB,SAASld,GAO3D,GANAtQ,KAAKgI,QAAUsI,EAAOoO,YACtB1e,KAAKk6B,mBAAqB5pB,EAAOoO,YACjC1e,KAAKm6B,QAAU7pB,EAAOqO,aACtB3e,KAAKo6B,gBAAkB9pB,EAAOuO,aAC9B7e,KAAKq6B,WAAa/pB,EAAOiP,YACzBvf,KAAKs6B,qBAAuBhqB,EAAOoO,YACD,IAA9B1e,KAAKs6B,qBAA4B,CACpCt6B,KAAKu6B,YAAcjqB,EAAOoO,YAC1B1e,KAAKw6B,aAAelqB,EAAOoO,YAC3B1e,KAAKy6B,eAAiB,GACtB,IAAK,IAAIv3B,EAAI,EAAGA,EAAIlD,KAAKk6B,mBAAoBh3B,IAC5ClD,KAAKy6B,eAAev3B,GAAKoN,EAAOoO,WAEnC,CACA,GAGAwN,EAAUuB,kBAAkB,OAAQ,mBAAoB,SAASnd,GAChE,IAAIyhB,EACAxE,EACJvtB,KAAK06B,QAAU,GAEf,IADA,IAAIhD,EAAcpnB,EAAOuO,aAChB3b,EAAI,EAAGA,EAAIw0B,EAAax0B,IAAK,CAErC,IADA6uB,EAAM7F,EAAUsF,YAAYlhB,GAAQ,EAAOtQ,KAAKsE,MAAQgM,EAAOsN,cAAgB5d,KAAKyL,SAC5ET,OAASkhB,EAAUG,GAI1B,OAHAkB,EAAMwE,EAAIxE,IACVvtB,KAAK06B,QAAQ7xB,KAAK0kB,EAIrB,CACA,GAGArB,EAAUsB,cAAc,OAAQ,wBAAyB,SAASld,GACjEtQ,KAAKg6B,UAAY1pB,EAAOwO,YACzB,GAGAoN,EAAUuB,kBAAkB,OAAQ,sBAAuB,SAASnd,GACnEtQ,KAAK26B,kBAAoBrqB,EAAOyO,WAAW/e,KAAKsE,KAAKtE,KAAKiuB,SAC3D,GAGA/B,EAAUuB,kBAAkB,OAAQ,cAAe,SAASnd,GAC3DtQ,KAAK06B,QAAU,GAEf,IADA,IAAIhD,EAAcpnB,EAAOuO,aAChB3b,EAAI,EAAGA,EAAIw0B,EAAax0B,IAAK,CACrC,IAAI03B,EAAQ,CAAA,EACZ56B,KAAK06B,QAAQ7xB,KAAK+xB,GACG,IAAjB56B,KAAKgM,SACR4uB,EAAMC,iBAAmBvqB,EAAOwO,aAChC8b,EAAME,WAAaxqB,EAAOmP,cAE1Bmb,EAAMC,iBAAmBvqB,EAAOuO,aAChC+b,EAAME,WAAaxqB,EAAOkP,aAE3Bob,EAAMG,mBAAqBzqB,EAAOiP,YAClCqb,EAAMI,oBAAsB1qB,EAAOiP,WACrC,CACA,GAGA2M,EAAUuB,kBAAkB,OAAQ,kBAAmB,SAASnd,GAC3C,GAAhBtQ,KAAKgM,SACRhM,KAAKi7B,UAAiB3qB,EAAOuO,aAC7B7e,KAAKk7B,kBAAuB5qB,EAAOwO,aACnC9e,KAAKm7B,eAAqB7qB,EAAOuO,aACjC7e,KAAKkK,GAAWoG,EAAOuO,aACvB7e,KAAKo7B,cAAoB9qB,EAAO4O,cAChClf,KAAKgD,MAAcsN,EAAO4O,gBAE1Blf,KAAKo7B,cAAoB9qB,EAAO4O,cAChClf,KAAKgD,MAAcsN,EAAO4O,cAC1Blf,KAAKi7B,UAAiB3qB,EAAOuO,aAC7B7e,KAAKq7B,wBAA2B/qB,EAAOuO,aACvC7e,KAAKm7B,eAAqB7qB,EAAOuO,aACjC7e,KAAKkK,GAAWoG,EAAOuO,cAExB,IAAIyc,EAAet7B,KAAKsE,KAAOtE,KAAKiuB,UAAY,IAAOjuB,KAAKo7B,cAAcj7B,OAAO,IAAMH,KAAKgD,MAAM7C,OAAO,IACrF,GAAhBH,KAAKgM,UACRsvB,GAAgB,GAEjBt7B,KAAKu7B,aAAejrB,EAAOoP,eAAe4b,EAC3C,GAIApP,EAAUsP,wBAA0B,SAASztB,EAAMqgB,GAC/ClC,EAAUne,EAAK,OAAS,SAASzJ,GAC7B4nB,EAAUgB,QAAQpC,KAAK9qB,KAAM+N,EAAMzJ,EAC3C,EACI4nB,EAAUne,EAAK,OAAO4P,UAAY,IAAIuO,EAAUgB,QAChDhB,EAAUne,EAAK,OAAO4P,UAAU4M,MAAQ,SAASja,GAE7C,GADAtQ,KAAKquB,gBAAgB/d,GACjB8d,EACAA,EAAYtD,KAAK9qB,KAAMsQ,QAKvB,IAHAtQ,KAAK0O,SAAW4B,EAAOuO,aACvB7e,KAAKy7B,sBAAwBnrB,EAAOuO,aACpC7e,KAAK07B,WAAa,GACbx4B,EAAI,EAAGA,EAAIlD,KAAKy7B,sBAAuBv4B,IAAK,CAC7C,IAAIy4B,EAAYrrB,EAAOuO,aACvB7e,KAAK07B,WAAW7yB,KAAK8yB,EACrC,CAEA,CACA,EAGAzP,EAAUsP,wBAAwB,QAGlCtP,EAAUsP,wBAAwB,QAGlCtP,EAAUsP,wBAAwB,QAGlCtP,EAAUsP,wBAAwB,QAGlCtP,EAAUsP,wBAAwB,QAGlCtP,EAAUsP,wBAAwB,QAGlCtP,EAAUsP,wBAAwB,QAGlCtP,EAAUsP,wBAAwB,QAGlCtP,EAAUsP,wBAAwB,QAGlCtP,EAAUsP,wBAAwB,QAGlCtP,EAAUsP,wBAAwB,QAGlCtP,EAAUsP,wBAAwB,QAGlCtP,EAAUsP,wBAAwB,QAGlCtP,EAAUsP,wBAAwB,QAGlCtP,EAAUsP,wBAAwB,QAGlCtP,EAAUsP,wBAAwB,QAGlCtP,EAAUsP,wBAAwB,OAAQ,SAASlrB,GAC/CtQ,KAAK0O,SAAW4B,EAAOuO,aACvB7e,KAAKy7B,sBAAwBnrB,EAAOuO,aACpC7e,KAAK07B,WAAa,GAClB,IAAK,IAAIx4B,EAAI,EAAGA,EAAIlD,KAAKy7B,sBAAuBv4B,IAAK,CACjD,IAAIy4B,EAAYrrB,EAAOuO,aACvB7e,KAAK07B,WAAW7yB,KAAK8yB,EAC7B,CAOI,IALA37B,KAAK47B,YAActrB,EAAOqO,aAC1B3e,KAAK67B,YAAcvrB,EAAOqO,aAC1B3e,KAAK87B,cAAgB,GACrB97B,KAAK+7B,6BAA+B,GACpC/7B,KAAKg8B,0BAA4B,GAC5B94B,EAAI,EAAGA,EAAIlD,KAAKy7B,sBAAuBv4B,IACxClD,KAAK87B,cAAc54B,GAAKoN,EAAOqO,aAC/B3e,KAAKg8B,0BAA0B94B,GAAKoN,EAAOqO,aAC3C3e,KAAK+7B,6BAA6B74B,GAAKoN,EAAOqO,YAEtD,GAGAuN,EAAUuB,kBAAkB,OAAQ,gCAAiC,SAASnd,GAC7E,IAAI2rB,EAAW3rB,EAAOoP,eAAe1f,KAAKsE,KAAKtE,KAAKiuB,UACpD,QAAqC,IAA1BpE,EAAuC,CACjD,IAAIqS,EAAa,IAAIrS,EACrB7pB,KAAKm8B,IAAMD,EAAW/R,mBAAmB,IAAIjK,EAAW+b,EAASr8B,OAAQ,EAAGsgB,EAAWe,YACzF,CACA,GAGAiL,EAAUsB,cAAc,OAAQ,mBAAoB,SAASld,GAC5DtQ,KAAKo8B,WAAa9rB,EAAOoO,YACzB1e,KAAKq8B,cAAgB/rB,EAAOoO,WAC7B,GAGAwN,EAAUsB,cAAc,OAAQ,oBAAqB,SAASld,GAC7DtQ,KAAKs8B,YAAchsB,EAAOyO,WAAW,EACtC,GAGAmN,EAAUsB,cAAc,OAAQ,cAAe,SAASld,GACvD,IAAIykB,EAAU/0B,KAAKsE,KAAOtE,KAAKiuB,SAC/BjuB,KAAKu8B,YAAcjsB,EAAOyO,WAAW,GACrC/e,KAAKw8B,cAAgBlsB,EAAOuO,aAC5BkW,GAAW,EACX/0B,KAAKy8B,kBAAoB,GAEzB,IADA,IAAIv5B,EAAI,EACD6xB,GAAS,GACf/0B,KAAKy8B,kBAAkBv5B,GAAKoN,EAAOyO,WAAW,GAC9CgW,GAAW,EACX7xB,GAEF,GAGAgpB,EAAUuB,kBAAkB,OAAQ,aAAc,SAASnd,GACrC,IAAjBtQ,KAAKgM,UACRsE,EAAOuO,aACP7e,KAAK08B,QAAUpsB,EAAOyO,WAAW,GACjCzO,EAAOwP,gBAAgB,GACvB9f,KAAKoK,KAAOkG,EAAOyO,WAAW/e,KAAKsE,KAAKtE,KAAKiuB,SAAS,IAClB,OAAhCjuB,KAAKoK,KAAKpK,KAAKoK,KAAKjK,OAAO,KAC9BH,KAAKoK,KAAOpK,KAAKoK,KAAK9J,MAAM,OAG/B,GAGA4rB,EAAUsB,cAAc,OAAQ,uBAAwB,SAASld,GAChE,IAAIpN,EAAG6f,EAEH5iB,EACAw8B,EACJ38B,KAAKg1B,qBAAuB1kB,EAAOoO,YACnCie,EAAWrsB,EAAOoO,YAClB1e,KAAK48B,sBAAwBD,GAAY,EACzC38B,KAAK68B,mBAAgC,GAAXF,IAAoB,EAC9C38B,KAAK88B,oBAAkC,GAAXH,EAC5B38B,KAAK+8B,8BAAgCzsB,EAAOuO,aAC5C7e,KAAKg9B,6BAA+B1sB,EAAOoP,eAAe,GAC1D1f,KAAKi9B,kBAAoB3sB,EAAOoO,YAChC1e,KAAKk9B,6BAAqD,KAAtB5sB,EAAOqO,aAC3C3e,KAAKm9B,gBAAwC,EAArB7sB,EAAOoO,YAC/B1e,KAAKo9B,kBAA0C,EAArB9sB,EAAOoO,YACjC1e,KAAKq9B,sBAA8C,EAArB/sB,EAAOoO,YACrC1e,KAAKs9B,wBAAgD,EAArBhtB,EAAOoO,YACvC1e,KAAKu9B,aAAejtB,EAAOqO,aAC3Bge,EAAWrsB,EAAOoO,YAClB1e,KAAKw9B,kBAAqBb,GAAY,EACtC38B,KAAKy9B,mBAAgC,GAAXd,IAAmB,EAC7C38B,KAAK09B,kBAA+B,EAAXf,IAAmB,EAC5C38B,KAAKo1B,mBAAiC,EAAXuH,EAE3B38B,KAAK29B,YAAc,GACnB39B,KAAK29B,YAAYzxB,SAAW,WAC3B,IAAIiR,EAAM,8BACVA,GAAO,oFACPA,GAAO,UAEP,IAAK,IAAIja,EAAE,EAAGA,EAAElD,KAAKG,OAAQ+C,IAAK,CACjC,IAAI06B,EAAa59B,KAAKkD,GACtBia,GAAO,OACPA,GAAO,gBAAgBygB,EAAWz9B,OAAO,KAAKy9B,EAAWC,aAAa,QACtE1gB,GAAO,gBAAgBygB,EAAWz9B,OAAO,KAAKy9B,EAAWE,UAAU,QACnE,IAAK,IAAI/a,EAAE,EAAGA,EAAE6a,EAAWz9B,OAAQ4iB,IAExB,IAANA,IAAS5F,GAAO,QACpBA,GAAO,OACPA,GAHWygB,EAAW7a,GAGV3d,KAAKiqB,OAAO,SAASlS,EAAKmS,GACrC,OAAOnS,EAAMmS,EAAKpjB,SAAS,IAAIqjB,SAAS,EAAG,IAChD,EAAO,MACHpS,GAAO,YAEX,CAEE,OADAA,GAAO,kBAET,EACC,IAAI4gB,EAAcztB,EAAOoO,YACzB,IAAKxb,EAAI,EAAGA,EAAI66B,EAAa76B,IAAK,CACjC,IAAI06B,EAAa,GACjB59B,KAAK29B,YAAY90B,KAAK+0B,GACtBjB,EAAWrsB,EAAOoO,YAClBkf,EAAWC,cAA2B,IAAXlB,IAAoB,EAC/CiB,EAAWE,UAAuB,GAAXnB,EACvB,IAAIqB,EAAW1tB,EAAOqO,aACtB,IAAKoE,EAAI,EAAGA,EAAIib,EAAUjb,IAAK,CAC9B,IAAIqM,EAAO,CAAA,EACXwO,EAAW/0B,KAAKumB,GAChBjvB,EAASmQ,EAAOqO,aAChByQ,EAAKhqB,KAASkL,EAAOoP,eAAevf,EACvC,CACA,CACA,GAGA+rB,EAAUuB,kBAAkB,OAAQ,cAAe,SAASnd,GAC3D,IAAIyhB,EACiB,IAAjB/xB,KAAKgM,QACRhM,KAAK03B,YAAcpnB,EAAOqO,aAE1B3e,KAAK03B,YAAcpnB,EAAOuO,aAE3B7e,KAAKi+B,WAAa,GAClB,IAAK,IAAI/6B,EAAI,EAAGA,EAAIlD,KAAK03B,YAAax0B,IAAK,CAE1C,IADA6uB,EAAM7F,EAAUsF,YAAYlhB,GAAQ,EAAOtQ,KAAKsE,MAAQgM,EAAOsN,cAAgB5d,KAAKyL,SAC5ET,OAASkhB,EAAUG,GAM1B,OALqB,SAAjB0F,EAAIxE,IAAIxf,MACX8N,EAAIjO,MAAM,YAAa,4BAA4BmkB,EAAIxE,IAAIxf,MAE5D/N,KAAKi+B,WAAW/6B,GAAK6uB,EAAIxE,GAI5B,CACA,GAGArB,EAAUuB,kBAAkB,OAAQ,kBAAmB,SAASnd,GAC/D,IAAIgf,EACJA,EAAOhf,EAAOoO,YACd1e,KAAKk+B,YAAe5O,GAAQ,EAAK,GACjCtvB,KAAKm+B,YAAqB,GAAP7O,EACnBA,EAAOhf,EAAOoO,YACd1e,KAAKo+B,iBAAoB9O,GAAQ,EAAK,GACjB,IAAjBtvB,KAAKgM,SAAkC,IAAjBhM,KAAKgM,QAC9BhM,KAAKq+B,WAAoB,GAAP/O,EAElBtvB,KAAKq+B,WAAa,EAGnBr+B,KAAKs+B,MAAQ,GACb,IAAIC,EAAa,EACjB,GAAIv+B,KAAKgM,QAAU,EAClBuyB,EAAajuB,EAAOqO,iBACd,IAAqB,IAAjB3e,KAAKgM,QAGf,KAAM,oCAFNuyB,EAAajuB,EAAOuO,YAGtB,CACC,IAAK,IAAI3b,EAAI,EAAGA,EAAIq7B,EAAYr7B,IAAK,CACpC,IAAIs7B,EAAO,CAAA,EAEX,GADAx+B,KAAKs+B,MAAMz1B,KAAK21B,GACZx+B,KAAKgM,QAAU,EAClBwyB,EAAKC,QAAUnuB,EAAOqO,iBAChB,IAAqB,IAAjB3e,KAAKgM,QAGf,KAAM,oCAFNwyB,EAAKC,QAAUnuB,EAAOuO,YAGzB,CAOE,OANqB,IAAjB7e,KAAKgM,SAAkC,IAAjBhM,KAAKgM,QAC9BwyB,EAAKE,oBAA6C,GAAtBpuB,EAAOqO,aAEnC6f,EAAKE,oBAAsB,EAE5BF,EAAK3L,qBAAuBviB,EAAOqO,aAC5B3e,KAAKo+B,kBACX,KAAK,EACJI,EAAKG,YAAc,EACnB,MACD,KAAK,EACJH,EAAKG,YAAcruB,EAAOuO,aAC1B,MACD,KAAK,EACJ2f,EAAKG,YAAcruB,EAAOwO,aAC1B,MACD,QACC,KAAM,iCAER,IAAI8f,EAAetuB,EAAOqO,aAC1B6f,EAAKK,QAAU,GACf,IAAK,IAAI9b,EAAE,EAAGA,EAAI6b,EAAc7b,IAAK,CACpC,IAAI+b,EAAS,CAAA,EAEb,GADAN,EAAKK,QAAQh2B,KAAKi2B,GACG,IAAjB9+B,KAAKgM,SAAkC,IAAjBhM,KAAKgM,QAC9B,OAAOhM,KAAKq+B,YACX,KAAK,EACJS,EAAOC,aAAe,EACtB,MACD,KAAK,EACJD,EAAOC,aAAezuB,EAAOuO,aAC7B,MACD,KAAK,EACJigB,EAAOC,aAAezuB,EAAOwO,aAC7B,MACD,QACC,KAAM,6BAGT,OAAO9e,KAAKk+B,aACX,KAAK,EACJY,EAAOE,cAAgB,EACvB,MACD,KAAK,EACJF,EAAOE,cAAgB1uB,EAAOuO,aAC9B,MACD,KAAK,EACJigB,EAAOE,cAAgB1uB,EAAOwO,aAC9B,MACD,QACC,KAAM,6BAER,OAAO9e,KAAKm+B,aACX,KAAK,EACJW,EAAOG,cAAgB,EACvB,MACD,KAAK,EACJH,EAAOG,cAAgB3uB,EAAOuO,aAC9B,MACD,KAAK,EACJigB,EAAOG,cAAgB3uB,EAAOwO,aAC9B,MACD,QACC,KAAM,6BAEX,CACA,CACA,GAGAoN,EAAUsB,cAAc,OAAQ,cAAe,SAASld,GACvD,IAAI2S,EAAM3S,EAAOoO,YACjB1e,KAAKk/B,SAAWjc,GAAO,EACvBjjB,KAAKm/B,KAAa,EAANlc,CACb,GACAiJ,EAAUuB,kBAAkB,OAAQ,gBAAiB,SAASnd,GAQ7D,GAPqB,IAAjBtQ,KAAKgM,SAAkC,IAAjBhM,KAAKgM,UAC9BhM,KAAKy+B,QAAUnuB,EAAOqO,aACtB3e,KAAKo/B,sBAAwB9uB,EAAOqO,aACpC3e,KAAKq/B,UAAY/uB,EAAO4O,cACxBlf,KAAKs/B,aAAehvB,EAAO4O,cAC3Blf,KAAKu/B,iBAAmBjvB,EAAO4O,eAEX,IAAjBlf,KAAKgM,QAIR,OAHAhM,KAAKw/B,eAAiBlvB,EAAOyO,WAAW,GACxClD,EAAIpG,KAAK,YAAa,oCACtBnF,EAAOyN,KAAK/d,KAAKyL,MAAMzL,KAAKsE,MAGzBtE,KAAKgM,SAAW,IACE,IAAjBhM,KAAKgM,QACRhM,KAAKy+B,QAAUnuB,EAAOqO,aACK,IAAjB3e,KAAKgM,UACfhM,KAAKy+B,QAAUnuB,EAAOuO,cAEvB7e,KAAKo/B,sBAAwB9uB,EAAOqO,aACpC3e,KAAKy/B,UAAYnvB,EAAOyO,WAAW,GACnC/e,KAAKq/B,UAAY/uB,EAAO4O,cACD,SAAnBlf,KAAKy/B,WACRz/B,KAAKs/B,aAAehvB,EAAO4O,cAC3Blf,KAAKu/B,iBAAmBjvB,EAAO4O,eACF,SAAnBlf,KAAKy/B,YACfz/B,KAAK0/B,cAAgBpvB,EAAO4O,eAG/B,GAEAgN,EAAUuB,kBAAkB,OAAQ,6BAA8B,SAASnd,GAC1E,IAAIpN,EAAG6f,EAGP,IAFA2U,YAAcpnB,EAAOuO,aACrB7e,KAAK2/B,aAAe,GAChBz8B,EAAE,EAAGA,EAAEw0B,YAAax0B,IAAK,CAC5B,IAAI08B,EAAa,CAAA,EACjB5/B,KAAK2/B,aAAa92B,KAAK+2B,GACnB5/B,KAAKgM,QAAU,EAClB4zB,EAAW11B,GAAKoG,EAAOqO,aAEvBihB,EAAW11B,GAAKoG,EAAOuO,aAExB,IAAIghB,EAAoBvvB,EAAOoO,YAE/B,IADAkhB,EAAWrpB,MAAQ,GACdwM,EAAI,EAAGA,EAAI8c,EAAmB9c,IAAK,CACvC,IAAIE,EAAM3S,EAAOoO,YACbpR,EAAI,CAAA,EACRsyB,EAAWrpB,MAAM1N,KAAKyE,GACtBA,EAAEwyB,WAAoB,IAAN7c,IAAe,GAAO,EACrB,EAAbjjB,KAAKgrB,MACR1d,EAAEyyB,gBAAwB,IAAN9c,IAAe,EAAI3S,EAAOoO,YAE9CpR,EAAEyyB,eAAwB,IAAN9c,CAExB,CACA,CACA,GAGAiJ,EAAUuB,kBAAkB,OAAQ,mBAAoB,SAASnd,GAChE,IAAIyhB,EAEAxE,EAGJ,IAFAvtB,KAAKggC,WAAa,GAEX1vB,EAAOsN,cAAgB5d,KAAKyL,MAAMzL,KAAKsE,MAAM,CAEnD,IADAytB,EAAM7F,EAAUsF,YAAYlhB,GAAQ,EAAMtQ,KAAKsE,MAAQgM,EAAOsN,cAAgB5d,KAAKyL,SAC3ET,OAASkhB,EAAUG,GAa1B,QAXCkB,EADoB,IAAjBvtB,KAAKgM,QACF,IAAIkgB,EAAU+T,2BAA2BlO,EAAIhkB,KAAMgkB,EAAIztB,KAAMytB,EAAI9D,SAAU8D,EAAItmB,OAE/E,IAAIygB,EAAUgU,gCAAgCnO,EAAIhkB,KAAMgkB,EAAIztB,KAAMytB,EAAI9D,SAAU8D,EAAItmB,QAEnFtG,QAAU+mB,EAAUiB,IAAIxP,UAAUxY,OAAsB,SAAbooB,EAAIxf,OACtD8N,EAAIpG,KAAK,YAAa8X,EAAIxf,KAAK,qFAC/Bwf,EAAIuE,mBAAmBxhB,IAExBid,EAAIhD,MAAMja,GACVtQ,KAAKggC,WAAWn3B,KAAK0kB,EAIxB,CACA,GAEArB,EAAUsB,cAAc,OAAQ,gBAAiB,SAASld,GACzDtQ,KAAKmgC,MAA6B,EAArB7vB,EAAOoO,WACrB,GAGAwN,EAAUuB,kBAAkB,OAAQ,8BAA+B,SAASnd,GAC3EtQ,KAAKogC,YAAc9vB,EAAOuO,aAC1B7e,KAAKqgC,aAAe/vB,EAAOuO,YAC5B,GACAqN,EAAUuB,kBAAkB,OAAQ,UAAW,SAASnd,GACvDtQ,KAAKsgC,UAAYhwB,EAAO4O,cACxBlf,KAAKgD,MAAQsN,EAAO4O,aACrB,GAEAgN,EAAUuB,kBAAkB,OAAQ,qBAAsB,SAASnd,GAClE,IAAIiwB,EAAQjwB,EAAOoO,YACnB1e,KAAKwgC,OAAS,GACd,IAAK,IAAIt9B,EAAI,EAAGA,EAAIq9B,EAAOr9B,IAAK,CAC/B,IAAI8Y,EAAQ,CAAA,EACZhc,KAAKwgC,OAAOt9B,GAAK8Y,EACjBA,EAAMykB,SAAWnwB,EAAOuO,aACxB,IAAI8d,EAAWrsB,EAAOoO,YAGtB,OAFA1C,EAAM0kB,aAAe/D,GAAY,EACjC3gB,EAAM2kB,gBAA6B,IAAXhE,EAChB3gB,EAAM2kB,iBACb,KAAK,EACJ3kB,EAAMmS,cAAgB7d,EAAOyO,WAAW,GACxC,MACD,KAAK,EACJ/C,EAAMmS,cAAgB7d,EAAOyO,WAAW,GACxC/C,EAAM4kB,wBAA0BtwB,EAAOuO,aACvC,MACD,KAAK,EAEL,KAAK,EACJ,MACD,KAAK,EACJ7C,EAAM6kB,aAAevwB,EAAOuO,aAC5B,MACD,QACChD,EAAIpG,KAAK,YAAa,iCAE1B,CACA,GAGAyW,EAAUsB,cAAc,OAAQ,wBAAyB,SAASld,GACjE,IAAIpN,EAAG6f,EACH4Z,EACJ38B,KAAKg1B,qBAAuB1kB,EAAOoO,YACnC1e,KAAKk9B,6BAAqD,KAAtB5sB,EAAOqO,aAC3C3e,KAAKm9B,gBAAwC,EAArB7sB,EAAOoO,YAC/Bie,EAAWrsB,EAAOoO,YAClB1e,KAAKy9B,mBAAgC,GAAXd,IAAmB,EAC7C38B,KAAK09B,kBAA+B,EAAXf,IAAmB,EAC5C38B,KAAKo1B,mBAAiC,EAAXuH,EAE3B38B,KAAK29B,YAAc,GACnB39B,KAAK29B,YAAYzxB,SAAW,WAC3B,IAAIiR,EAAM,8BACVA,GAAO,oFACPA,GAAO,UAEP,IAAK,IAAIja,EAAE,EAAGA,EAAElD,KAAKG,OAAQ+C,IAAK,CACjC,IAAI06B,EAAa59B,KAAKkD,GACtBia,GAAO,OACPA,GAAO,gBAAgBygB,EAAWz9B,OAAO,KAAKy9B,EAAWC,aAAa,QACtE1gB,GAAO,gBAAgBygB,EAAWz9B,OAAO,KAAKy9B,EAAWE,UAAU,QACnE,IAAK,IAAI/a,EAAE,EAAGA,EAAE6a,EAAWz9B,OAAQ4iB,IAExB,IAANA,IAAS5F,GAAO,QACpBA,GAAO,OACPA,GAHWygB,EAAW7a,GAGV3d,KAAKiqB,OAAO,SAASlS,EAAKmS,GACrC,OAAOnS,EAAMmS,EAAKpjB,SAAS,IAAIqjB,SAAS,EAAG,IAChD,EAAO,MACHpS,GAAO,YAEX,CAEE,OADAA,GAAO,kBAET,EACC,IAAI4gB,EAAcztB,EAAOoO,YACzB,IAAKxb,EAAI,EAAGA,EAAI66B,EAAa76B,IAAK,CACjC,IAAI06B,EAAa,GACjB59B,KAAK29B,YAAY90B,KAAK+0B,GACtBjB,EAAWrsB,EAAOoO,YAClBkf,EAAWC,cAA2B,IAAXlB,IAAoB,EAC/CiB,EAAWE,UAAuB,GAAXnB,EACvB,IAAIqB,EAAW1tB,EAAOqO,aACtB,IAAKoE,EAAI,EAAGA,EAAIib,EAAUjb,IAAK,CAC9B,IAAIqM,EAAO,CAAA,EACXwO,EAAW/0B,KAAKumB,GAChB,IAAIjvB,EAASmQ,EAAOqO,aACpByQ,EAAKhqB,KAAQkL,EAAOoP,eAAevf,EACtC,CACA,CACA,GAGA+rB,EAAUsB,cAAc,OAAQ,wBAAyB,SAASld,GACjEtQ,KAAK8gC,SAAWxwB,EAAOqO,YACxB,GACAuN,EAAUsB,cAAc,OAAQ,cAAe,SAASld,GACvDtQ,KAAK+gC,OAASzwB,EAAOuO,aACrB7e,KAAKqD,MAAQiN,EAAOuO,YACrB,GAQA2Q,EAAW7R,UAAUzR,SAAW,WAC5B,MAAO,IAAIlM,KAAKoC,EAAE,IAAIpC,KAAKyvB,EAAE,GACjC,EAEAvD,EAAUsB,cAAc,OAAQ,kCAAmC,SAASld,GACxEtQ,KAAKghC,kBAAoB,GACzBhhC,KAAKghC,kBAAkB,GAAK,IAAIxR,EAAWlf,EAAOqO,aAAarO,EAAOqO,cACtE3e,KAAKghC,kBAAkB,GAAK,IAAIxR,EAAWlf,EAAOqO,aAAarO,EAAOqO,cACtE3e,KAAKghC,kBAAkB,GAAK,IAAIxR,EAAWlf,EAAOqO,aAAarO,EAAOqO,cACtE3e,KAAKihC,YAAc,IAAIzR,EAAWlf,EAAOqO,aAAarO,EAAOqO,cAC7D3e,KAAKkhC,gCAAkC5wB,EAAOuO,aAC9C7e,KAAKmhC,gCAAkC7wB,EAAOuO,YAClD,GAGAqN,EAAUuB,kBAAkB,OAAQ,iBAAkB,SAASnd,GAC1C,GAAhBtQ,KAAKgM,SACRhM,KAAKohC,cAAgB9wB,EAAOwO,aAC5B9e,KAAKqhC,kBAAoB/wB,EAAOwO,aAChC9e,KAAKi7B,UAAY3qB,EAAOuO,aACxB7e,KAAKwb,SAAWlL,EAAOwO,eAEvB9e,KAAKohC,cAAgB9wB,EAAOuO,aAC5B7e,KAAKqhC,kBAAoB/wB,EAAOuO,aAChC7e,KAAKi7B,UAAY3qB,EAAOuO,aACxB7e,KAAKwb,SAAWlL,EAAOuO,cAExB7e,KAAKiyB,cAAc3hB,GACnBA,EAAOqO,YACR,GAGAuN,EAAUuB,kBAAkB,OAAQ,wBAAyB,SAASnd,GACpD,EAAbtQ,KAAKgrB,QACRnP,EAAIpG,KAAK,YAAa,qEACtBzV,KAAKgM,QAAU,GAEI,GAAhBhM,KAAKgM,QACRhM,KAAKshC,kBAAoBhxB,EAAOwO,aAEhC9e,KAAKshC,kBAAoBhxB,EAAOuO,YAElC,GAGAqN,EAAUuB,kBAAkB,OAAQ,UAAW,SAASnd,GACvDtQ,KAAK0tB,MAAQ,GACbxB,EAAUkB,aAAazP,UAAU4M,MAAMO,KAAK9qB,KAAMsQ,EACnD,GAEA4b,EAAUuB,kBAAkB,OAAQ,yBAA0B,SAASnd,GACtEtQ,KAAKuhC,gBAAkBjxB,EAAOuO,YAC/B,GAGAqN,EAAUuB,kBAAkB,OAAQ,qCAAsC,SAASnd,GAClFtQ,KAAKyqB,MAAQna,EAAOuO,YACrB,GAGAqN,EAAUuB,kBAAkB,OAAQ,4BAA6B,SAASnd,GACtEtQ,KAAKwhC,eAAiBlxB,EAAOoO,WACjC,GAGAwN,EAAUuB,kBAAkB,OAAQ,iBAAkB,SAASnd,GAC1C,GAAhBtQ,KAAKgM,SACRhM,KAAKohC,cAAgB9wB,EAAOwO,aAC5B9e,KAAKqhC,kBAAoB/wB,EAAOwO,aAChC9e,KAAKi7B,UAAY3qB,EAAOuO,aACxB7e,KAAKwb,SAAWlL,EAAOwO,eAEvB9e,KAAKohC,cAAgB9wB,EAAOuO,aAC5B7e,KAAKqhC,kBAAoB/wB,EAAOuO,aAChC7e,KAAKi7B,UAAY3qB,EAAOuO,aACxB7e,KAAKwb,SAAWlL,EAAOuO,cAExB7e,KAAKyhC,KAAOnxB,EAAOuO,aACnB7e,KAAK0hC,OAASpxB,EAAOqO,cAAc,EACnCrO,EAAOqO,aACPrO,EAAOwP,gBAAgB,GACvB9f,KAAK2hC,OAASrxB,EAAOwP,gBAAgB,GACrCxP,EAAOwP,gBAAgB,GACvB9f,KAAK4hC,cAAgBtxB,EAAOuO,YAC7B,GAEAqN,EAAUsB,cAAc,OAAQ,kBAAmB,SAASld,GAC3DtQ,KAAK6hC,YAAcvxB,EAAOuO,YAC3B,GAGAqN,EAAUsB,cAAc,OAAQ,kBAAmB,SAASld,GAC3DtQ,KAAK6hC,YAAcvxB,EAAOwO,YAC3B,GAGAoN,EAAUuB,kBAAkB,OAAQ,iBAAkB,SAASnd,GAC9D,IAAIwxB,EAAexxB,EAAOuO,aAC1B7e,KAAK+hC,QAAU,GACf,IAAK,IAAI7+B,EAAI,EAAGA,EAAI/D,KAAK2d,OAAOglB,EAAa,GAAG,GAAI5+B,IACnDlD,KAAK+hC,QAAUzxB,EAAOoO,WAExB,GAGAwN,EAAUsB,cAAc,OAAQ,sBAAuB,SAASld,GAC/DtQ,KAAKgiC,SAAW1xB,EAAOuO,aACvB7e,KAAKiiC,SAAW3xB,EAAOuO,YACxB,GACAqN,EAAUsB,cAAc,OAAQ,gBAAiB,SAASld,GACzDtQ,KAAKsa,KAAOhK,EAAOyO,WAAW/e,KAAKsE,KAAOtE,KAAKiuB,SAChD,GAGA/B,EAAUsB,cAAc,OAAQ,gBAAiB,SAASld,GACzDtQ,KAAKkiC,UAAY5xB,EAAOuO,aACxB,IAAI0hB,EAAQjwB,EAAOoO,YACnB1e,KAAKmiC,cAAgB7xB,EAAOyO,WAAWwhB,EACxC,GAGArU,EAAUuB,kBAAkB,OAAQ,6BAA8B,SAASnd,GAC1E,IAAIiwB,GAASvgC,KAAKsE,KAAOtE,KAAKiuB,UAAU,EACxCjuB,KAAKyhC,KAAO,GACZzhC,KAAKoiC,cAAgB,GACrB,IAAK,IAAIl/B,EAAI,EAAGA,EAAIq9B,EAAOr9B,IAC1BlD,KAAKyhC,KAAKv+B,GAAKoN,EAAOuO,aACtB7e,KAAKoiC,cAAcl/B,GAAKoN,EAAOuO,YAEjC,GAGAqN,EAAUuB,kBAAkB,OAAQ,iBAAkB,SAASnd,GACzC,IAAjBtQ,KAAKgM,QACRhM,KAAKqiC,QAAU/xB,EAAOqO,aAEtB3e,KAAKqiC,QAAU/xB,EAAOuO,YAExB,GAGAqN,EAAUuB,kBAAkB,OAAQ,2BAA4B,SAASnd,GACxE,IAAIpN,EAGJ,IAFAlD,KAAKsiC,aAAehyB,EAAOoO,YAC3B1e,KAAKuiC,kBAAoB,GACpBr/B,EAAI,EAAGA,EAAIlD,KAAKsiC,aAAcp/B,IAClClD,KAAKuiC,kBAAkBr/B,GAAKoN,EAAOoO,WAErC,GAGAwN,EAAUsB,cAAc,OAAQ,oBAAqB,SAASld,GAC7DtQ,KAAKqD,MAAQiN,EAAOuO,YACrB,GAGAqN,EAAUuB,kBAAkB,OAAQ,iDAAkD,SAASnd,GAG9F,GAFAtQ,KAAKwiC,WAAalyB,EAAOqO,aACzB3e,KAAKu+B,WAAa,GACD,EAAbv+B,KAAKgrB,MACR,IAAK,IAAI9nB,EAAI,EAAGA,EAAIlD,KAAKwiC,WAAYt/B,IACpClD,KAAKu+B,WAAWr7B,GAAKoN,EAAOqO,YAG/B,GACAuN,EAAUuB,kBAAkB,OAAQ,2BAA4B,SAASnd,GACxEtQ,KAAKyiC,aAAenyB,EAAOuO,aAC3B7e,KAAK0iC,cAAgBpyB,EAAOwO,aACP,IAAjB9e,KAAKgM,QACRhM,KAAK86B,WAAaxqB,EAAOuO,aAEzB7e,KAAK86B,WAAaxqB,EAAOwO,YAE3B,GAGAoN,EAAUuB,kBAAkB,OAAQ,oCAAqC,SAASnd,GAEjF,GADAtQ,KAAK2iC,UAAYzW,EAAUmF,WAAW/gB,GAClCtQ,KAAKgM,QAAU,EAAG,CACrB,IAAIu0B,EAAQjwB,EAAOuO,aACnB7e,KAAK4iC,IAAM,GACX,IAAK,IAAI1/B,EAAI,EAAGA,EAAIq9B,EAAOr9B,IAC1BlD,KAAK4iC,IAAI1/B,GAAKgpB,EAAUmF,WAAW/gB,EAEtC,CACC,IAAIuyB,EAAWvyB,EAAOuO,aAClBgkB,EAAW,IACd7iC,KAAKoF,KAAOkL,EAAOoP,eAAemjB,GAEpC,GAGA3W,EAAUuB,kBAAkB,OAAQ,kCAAmC,SAASnd,GAC/EtQ,KAAKgzB,MAAQ1iB,EAAOuO,aACpB7e,KAAKizB,OAAS3iB,EAAOuO,YACtB,GACAqN,EAAUuB,kBAAkB,OAAQ,kCAAmC,SAASnd,GAC/EtQ,KAAKgzB,MAAQ1iB,EAAOuO,aACpB7e,KAAKizB,OAAS3iB,EAAOuO,YACtB,GACAqN,EAAUuB,kBAAkB,OAAQ,uCAAwC,SAASnd,GACpFtQ,KAAKgzB,MAAQ1iB,EAAOuO,aACpB7e,KAAKizB,OAAS3iB,EAAOuO,YACtB,GACAqN,EAAUyB,uBAAuB,OAAQ,iCAAkC,KAAM,CAAE,OAAQ,OAAQ,SACnGzB,EAAUsB,cAAc,OAAQ,0BAA2B,SAASld,GACnEtQ,KAAK8iC,kBAAoBxyB,EAAOyO,WAAW,GAC3C/e,KAAK+iC,QAAUzyB,EAAOyO,WAAW/e,KAAKsE,KAAOtE,KAAKiuB,SAAW,EAC9D,GAGA/B,EAAUuB,kBAAkB,OAAQ,uCAAwC,SAASnd,GACnE,EAAbtQ,KAAKgrB,QACRhrB,KAAKgjC,cAAgB1yB,EAAOyO,WAAW,GACvC/e,KAAKijC,wBAA0B3yB,EAAOuO,cAEvC,IAAI0hB,EAAQjwB,EAAOuO,aACnB7e,KAAKH,OAAS,GACd,IAAK,IAAIqD,EAAI,EAAGA,EAAIq9B,EAAOr9B,IACL,IAAjBlD,KAAKgM,QACRhM,KAAKH,OAAOqD,GAAKoN,EAAOuO,aAExB7e,KAAKH,OAAOqD,GAAKoN,EAAOwO,YAG3B,GAEAoN,EAAUuB,kBAAkB,OAAQ,qCAAsC,SAASnd,GAQlF,GAPiB,EAAbtQ,KAAKgrB,QACRhrB,KAAKgjC,cAAgB1yB,EAAOyO,WAAW,GACvC/e,KAAKijC,wBAA0B3yB,EAAOuO,cAEvC7e,KAAKkjC,yBAA2B5yB,EAAOoO,YACvC1e,KAAK8hC,aAAexxB,EAAOuO,aAC3B7e,KAAKmjC,iBAAmB,GACc,IAAlCnjC,KAAKkjC,yBACR,IAAK,IAAIhgC,EAAI,EAAGA,EAAIlD,KAAK8hC,aAAc5+B,IACtClD,KAAKmjC,iBAAiBjgC,GAAKoN,EAAOoO,WAGrC,GAGAwN,EAAUyC,sBAAsBzC,EAAUsG,2BAA4B,OAAQ,SAASliB,GACtFtQ,KAAK4yB,YAAYtiB,GACjBtQ,KAAKu/B,iBAAmBjvB,EAAO4O,cAC/Blf,KAAKojC,YAAc9yB,EAAO4O,cAC1Blf,KAAK8yB,YAAYxiB,EAClB,GAGA4b,EAAUyC,sBAAsBzC,EAAUsG,2BAA4B,OAAQ,SAASliB,GACtFtQ,KAAK4yB,YAAYtiB,GACjBtQ,KAAKu/B,iBAAmBjvB,EAAO4O,cAC/Blf,KAAKmK,UAAYmG,EAAO4O,cACxBlf,KAAKqjC,gBAAkB/yB,EAAO4O,cAC9Blf,KAAK8yB,YAAYxiB,EAClB,GAGA4b,EAAUyC,sBAAsBzC,EAAUuG,2BAA4B,OAAQ,SAASniB,GACtFtQ,KAAK4yB,YAAYtiB,GACjBtQ,KAAKu/B,iBAAmBjvB,EAAO4O,cAC/Blf,KAAKojC,YAAc9yB,EAAO4O,cAC1Blf,KAAK8yB,YAAYxiB,EAClB,GAGA4b,EAAUyC,sBAAsBzC,EAAUuG,2BAA4B,OAAQ,SAASniB,GACtFtQ,KAAK4yB,YAAYtiB,GACjBtQ,KAAKmK,UAAYmG,EAAO4O,cACxBlf,KAAKqjC,gBAAkB/yB,EAAO4O,cAC9Blf,KAAKsjC,qBAAuBhzB,EAAO4O,cACnClf,KAAK8yB,YAAYxiB,EAClB,GAGA4b,EAAUyC,sBAAsBzC,EAAUuG,2BAA4B,OAAQ,SAASniB,GACtFtQ,KAAK4yB,YAAYtiB,GACjBtQ,KAAKu/B,iBAAmBjvB,EAAO4O,cAC/Blf,KAAKojC,YAAc9yB,EAAO4O,cAC1Blf,KAAK8yB,YAAYxiB,EAClB,GAGA4b,EAAUyC,sBAAsBzC,EAAUuG,2BAA4B,OAAQ,SAASniB,GACtFtQ,KAAK4yB,YAAYtiB,GACjBtQ,KAAKujC,aAAejzB,EAAOuO,aAC3B7e,KAAKwjC,yBAA2BlzB,EAAOgP,WACvCtf,KAAKyjC,uBAAyBnzB,EAAOgP,WACrCtf,KAAK0jC,cAAgBpzB,EAAOoP,eAAe,GAC3C1f,KAAK2jC,WAAarzB,EAAOqP,eAAe,GACxC3f,KAAK4jC,aAAetzB,EAAOoP,eAAe,IAC1C1f,KAAK8yB,YAAYxiB,EAClB,GAEA4b,EAAUyC,sBAAsBzC,EAAUsG,2BAA4B,OAAQ,SAASliB,GACtFtQ,KAAK4yB,YAAYtiB,GACjBtQ,KAAK8yB,YAAYxiB,EAClB,GAGA4b,EAAU2C,sBAAsB,OAAQ,SAASve,GAChD,IAAIpN,EACA2gC,EAAavzB,EAAOqO,aAGxB,IAFA3e,KAAK8jC,oBAAsBxzB,EAAOqO,aAClC3e,KAAK+jC,cAAgB,GAChB7gC,EAAI,EAAGA,EAAI2gC,EAAY3gC,IAC3BlD,KAAK+jC,cAAc7gC,GAAKoN,EAAOuO,aAEhC,IAAIze,EAAYJ,KAAKgkC,mBAAqB,EAAI,EAAEH,EAGhD,IAFA7jC,KAAKikC,mBAAqB,GAC1BjkC,KAAKkkC,kBAAoB,GACpBhhC,EAAI,EAAGA,EAAI9C,EAAU,EAAG8C,IAC5BlD,KAAKikC,mBAAmB/gC,GAAKoN,EAAOqO,aACpC3e,KAAKkkC,kBAAkBhhC,GAAKoN,EAAOqO,YAErC,GAGAuN,EAAU2C,sBAAsB,OAAQ,SAASve,GAChDtQ,KAAKmkC,YAAc7zB,EAAOoO,YAC1B1e,KAAKokC,uBAAyB9zB,EAAOoO,YACrC1e,KAAKqkC,WAAa/zB,EAAOqO,aACzB3e,KAAKu9B,aAAejtB,EAAOqO,YAC5B,GAGAuN,EAAU2C,sBAAsB,OAAQ,SAASve,GAChDtQ,KAAKskC,sBAAwBh0B,EAAOqO,aACpC3e,KAAKmkC,YAAc7zB,EAAOoO,YAC1B,IAAIie,EAAWrsB,EAAOoO,YACtB1e,KAAKukC,aAAe5H,GAAY,EAChC38B,KAAKwkC,YAAe7H,GAAY,EAAK,EACjC38B,KAAKukC,eACRvkC,KAAKwb,SAAWlL,EAAOuO,cAEpB7e,KAAKwkC,cACRxkC,KAAKokC,uBAAyB9zB,EAAOoO,YACrC1e,KAAKqkC,WAAa/zB,EAAOqO,aACzB3e,KAAKu9B,aAAejtB,EAAOqO,cAE5B3e,KAAKykC,WAAa,GAElB,IADA,IAAIC,EAAgBp0B,EAAOoO,YAClBxb,EAAI,EAAGA,EAAIwhC,EAAexhC,IAAK,CACvC,IAAIyhC,EAAiB,CAAA,EACrB3kC,KAAKykC,WAAW57B,KAAK87B,GACrBA,EAAeC,oBAAsBt0B,EAAOoO,YAC5CimB,EAAeR,YAAc7zB,EAAOoO,YACpCimB,EAAeL,sBAAwBh0B,EAAOqO,YAChD,CACA,GAGAuN,EAAU2C,sBAAsB,OAAQ,SAASve,GAChDuL,EAAIpG,KAAK,YAAa,sBAAsBzV,KAAKmuB,cAAc,oBAChE,GAGAjC,EAAU2C,sBAAsB,OAAQ,SAASve,GAChDuL,EAAIpG,KAAK,YAAa,sBAAsBzV,KAAKmuB,cAAc,oBAChE,GAGAjC,EAAU2C,sBAAsB,OAAQ,SAASve,GAChDtQ,KAAK6kC,cAAgBv0B,EAAOiP,WAC7B,GAGA2M,EAAU2C,sBAAsB,OAAQ,SAASve,GAChD,IAAIqsB,EAAWrsB,EAAOoO,YACtB1e,KAAK8kC,0BAA4BnI,GAAY,EAC7C38B,KAAK+kC,oBAAiC,IAAXpI,CAC5B,GAGAzQ,EAAU2C,sBAAsB,OAAQ,SAASve,GAEhD,GADAtQ,KAAKglC,sBAAwB10B,EAAOqO,aAChC3e,KAAKgkC,qBAAuB,GAAkC,IAA/BhkC,KAAKglC,sBAA4B,EAA6B,EAA3BhlC,KAAKglC,uBAAyB,EACnGnpB,EAAIpG,KAAK,YAAa,eAAezV,KAAKmuB,cAAc,wBACxDnuB,KAAKoF,KAAQkL,EAAOoP,eAAe1f,KAAKgkC,mBAAmB,OACrD,CACN,GAAmC,IAA/BhkC,KAAKglC,sBACRhlC,KAAKilC,kBAAoB30B,EAAOqO,iBAC1B,CACN3e,KAAKilC,kBAAoB,GACzBjlC,KAAKklC,kBAAoB,GACzB,IAAK,IAAIhiC,EAAI,EAAGA,EAAIlD,KAAKglC,sBAAuB9hC,IAC/ClD,KAAKklC,kBAAkBhiC,GAAKoN,EAAOuO,aACnC7e,KAAKilC,kBAAkB/hC,GAAKoN,EAAOqO,YAEvC,CACE3e,KAAKmlC,gBAAkB70B,EAAOuO,aAC9B7e,KAAKolC,gBAAkB90B,EAAOuO,aAC9B7e,KAAKqlC,iBAAmB/0B,EAAOoO,WACjC,CACA,GAGAwN,EAAU2C,sBAAsB,OAAQ,SAASve,GAChDtQ,KAAK6kC,cAAgBv0B,EAAOiP,WAC7B,GAGA2M,EAAUgC,iBAAiBvQ,UAAU4M,MAAQ,SAASja,GACrDuL,EAAIpG,KAAK,YAAa,8BAA8BzV,KAAKmuB,eACzDnuB,KAAKoF,KAAQkL,EAAOoP,eAAe1f,KAAKgkC,mBACzC,EAGA9X,EAAU2C,sBAAsB,OAAQ,SAASve,GAChDuL,EAAIpG,KAAK,YAAa,sBAAsBzV,KAAKmuB,cAAc,oBAChE,GAGAjC,EAAU2C,sBAAsB,OAAQ,SAASve,GAChDuL,EAAIpG,KAAK,YAAa,sBAAsBzV,KAAKmuB,cAAc,oBAChE,GAGAjC,EAAU2C,sBAAsB,OAAQ,SAASve,GAChDtQ,KAAKk/B,SAAW5uB,EAAOoO,YACvB,IAAIuE,EAAM3S,EAAOoO,YACjB1e,KAAKslC,iBAAmBriB,GAAO,EAC/BjjB,KAAKulC,gBAAwB,GAANtiB,EACvBjjB,KAAKwlC,YAAcl1B,EAAOoO,YAC1B1e,KAAKylC,mBAAqBn1B,EAAOoO,YACjC1e,KAAK0lC,IAAMxZ,EAAUmF,WAAW/gB,GAChCtQ,KAAK2lC,iBAAmB,EACxB3lC,KAAK4lC,YAAc,EACM,IAArB5lC,KAAKwlC,aAAiD,IAA5BxlC,KAAKylC,qBAClCzlC,KAAK2lC,iBAAmBr1B,EAAOoO,YAC/B1e,KAAK4lC,YAAct1B,EAAOoP,eAAe1f,KAAK2lC,kBAEhD,GAGAzZ,EAAU2C,sBAAsB,OAAQ,SAASve,GAChDuL,EAAIpG,KAAK,YAAa,sBAAsBzV,KAAKmuB,cAAc,oBAChE,GAGAjC,EAAU2C,sBAAsB,OAAQ,SAASve,GAChD,IAAIqsB,EAAWrsB,EAAOoO,YACtB1e,KAAK6lC,cAA2B,GAAXlJ,CACtB,GAGAzQ,EAAU2C,sBAAsB,OAAQ,SAASve,GAChD,IAAIqsB,EAAWrsB,EAAOoO,YACtB1e,KAAK8lC,8BAAgCnJ,GAAY,CAClD,GAGAzQ,EAAU2C,sBAAsB,OAAQ,SAASve,GAChDuL,EAAIpG,KAAK,YAAa,sBAAsBzV,KAAKmuB,cAAc,oBAChE,GAGAjC,EAAU2C,sBAAsB,OAAQ,SAASve,GAChDuL,EAAIpG,KAAK,YAAa,sBAAsBzV,KAAKmuB,cAAc,oBAChE,GAGAjC,EAAU2C,sBAAsB,OAAQ,SAASve,GAChDuL,EAAIpG,KAAK,YAAa,sBAAsBzV,KAAKmuB,cAAc,oBAChE,GAGAjC,EAAUuB,kBAAkB,OAAQ,mBAAoB,SAASnd,GAChEtQ,KAAKmuB,cAAgB7d,EAAOyO,WAAW,GAClB,IAAjB/e,KAAKgM,QACRhM,KAAK4gC,wBAA0BtwB,EAAOuO,aAEtC7e,KAAK4gC,wBAA0B,EAEhC5gC,KAAK06B,QAAU,GAEf,IADA,IAAIhD,EAAcpnB,EAAOuO,aAChB3b,EAAI,EAAGA,EAAIw0B,EAAax0B,IAAK,CACrC,IAAI03B,EAAQ,CAAA,EACZ56B,KAAK06B,QAAQ7xB,KAAK+xB,GAClBA,EAAMkH,aAAexxB,EAAOkP,YAC5Bob,EAAMmL,wBAA0Bz1B,EAAOkP,WACzC,CACA,GAQAkQ,EAAM/R,UAAUzR,SAAW,WAC1B,MAAO,SAAWlM,KAAK6vB,cAAgB,aAAe7vB,KAAK8vB,iBAAmB,GAC/E,EAEA5D,EAAUuB,kBAAkB,OAAQ,wBAAyB,SAASnd,GACrE,IAAIpN,EAGD,IAFHlD,KAAKs3B,gBAAkBhnB,EAAOqO,aAC3B3e,KAAKgmC,gBAAkB,GAClB9iC,EAAI,EAAGA,EAAIlD,KAAKs3B,gBAAiBp0B,IAClClD,KAAKgmC,gBAAgBn9B,KAAKyH,EAAOqO,cAExC,IAAIqM,EAAQ1a,EAAOoO,YAQnB,IAPA1e,KAAKimC,qBAAsB,KAASjb,GACpChrB,KAAKkmC,aAAe51B,EAAOuO,aAC3B7e,KAAKmmC,aAAe71B,EAAOuO,aAC3B7e,KAAKomC,eAAiB91B,EAAOuO,aAC7B7e,KAAKqmC,SAAW,GAChBrmC,KAAKsmC,YAAc,GACnBtmC,KAAKumC,WAAa,GACbrjC,EAAI,EAAGA,EAAIlD,KAAKkmC,aAAchjC,IAClClD,KAAKqmC,SAASx9B,KAAKyH,EAAOuO,cAE3B,IAAK3b,EAAI,EAAGA,EAAIlD,KAAKmmC,aAAcjjC,IAClClD,KAAKsmC,YAAYz9B,KAAKyH,EAAOuO,cAE9B,IAAK3b,EAAI,EAAGA,EAAIlD,KAAKomC,eAAgBljC,IAAK,CACzC,IAAIysB,EAAMrf,EAAOuO,aACb+Q,EAAMtf,EAAOuO,aACjB7e,KAAKumC,WAAW19B,KAAK,IAAI6mB,EAAMC,EAAKC,GACtC,CACA,GAGA1D,EAAUuB,kBAAkB,OAAQ,gBAAiB,SAASnd,GAC7DtQ,KAAKwmC,YAAcl2B,EAAOyO,WAAW,GACrC/e,KAAKymC,eAAiBn2B,EAAOuO,aACZ,EAAb7e,KAAKgrB,QACRhrB,KAAK0mC,WAAap2B,EAAOyO,WAAW/e,KAAKsE,KAAOtE,KAAKiuB,SAAW,GAElE,GAGA/B,EAAUsB,cAAc,OAAQ,6BAA8B,SAASld,GACtEtQ,KAAK+iC,QAAUzyB,EAAOyO,WAAW/e,KAAKsE,KAAOtE,KAAKiuB,SACnD,GAGA/B,EAAUuB,kBAAkB,OAAQ,0BAA2B,SAASnd,GACvE,IAAIqsB,EACA4D,EAASvgC,KAAKsE,KAAOtE,KAAKiuB,SAC9BjuB,KAAK2mC,WAAa,GAClB3mC,KAAK4mC,kBAAoB,GACzB5mC,KAAK6mC,sBAAwB,GAC7B7mC,KAAK8mC,sBAAwB,GAC7B,IAAK,IAAI5jC,EAAI,EAAGA,EAAIq9B,EAAOr9B,IAC1By5B,EAAWrsB,EAAOoO,YAClB1e,KAAK2mC,WAAWzjC,GAAKy5B,GAAY,EACjC38B,KAAK4mC,kBAAkB1jC,GAAMy5B,GAAY,EAAK,EAC9C38B,KAAK6mC,sBAAsB3jC,GAAMy5B,GAAY,EAAK,EAClD38B,KAAK8mC,sBAAsB5jC,GAAgB,EAAXy5B,CAElC,GAIAzQ,EAAUuB,kBAAkB,OAAQ,uBAuBpCvB,EAAUuB,kBAAkB,OAAQ,4BAA6B,SAASnd,GACzEtQ,KAAKmuB,cAAgB7d,EAAOyO,WAAW,GACvClD,EAAII,MAAM,YAAa,+BAA+Bjc,KAAKmuB,eACtC,IAAjBnuB,KAAKgM,QACRhM,KAAK+mC,eAAiBz2B,EAAOuO,aAE7B7e,KAAK+mC,eAAiB,EAEnB/mC,KAAKgM,SAAW,IACnBhM,KAAKgnC,gCAAkC12B,EAAOuO,cAE/C7e,KAAK06B,QAAU,GAEf,IADA,IAAIhD,EAAcpnB,EAAOuO,aAChB3b,EAAI,EAAGA,EAAIw0B,EAAax0B,IAAK,CACrC,IAAI03B,EAEHA,EADG1O,EAAUlsB,KAAKmuB,cAAc,oBACxB,IAAIjC,EAAUlsB,KAAKmuB,cAAc,oBAAoBnuB,KAAKmuB,eAE1D,IAAIjC,EAAUgC,iBAAiBluB,KAAKmuB,eAE7CnuB,KAAK06B,QAAQ7xB,KAAK+xB,GACG,IAAjB56B,KAAKgM,SACoB,IAAxBhM,KAAK+mC,eACRnM,EAAMoJ,mBAAqB1zB,EAAOuO,aAKnC+b,EAAMoJ,mBAAqBhkC,KAAK+mC,eAE7BnM,EAAMz1B,QAAU+mB,EAAUgC,iBAAiBvQ,UAAUxY,QACxD0W,EAAIK,KAAK,YAAa,wBAAwBlc,KAAKmuB,cAAc,iFAEjEyM,EAAMx1B,KAAOkL,EAAOoP,eAAekb,EAAMoJ,oBAEzC1zB,EAAOoN,UAAYkd,EAAMoJ,oBAE1BpJ,EAAMrQ,MAAMja,EACd,CACA,GAGA4b,EAAUuB,kBAAkB,OAAQ,4BAA6B,SAASnd,GACzEtQ,KAAKinC,aAAe32B,EAAOuO,aAC3B7e,KAAKi7B,UAAY3qB,EAAOuO,aACH,IAAjB7e,KAAKgM,SACRhM,KAAKknC,2BAA6B52B,EAAOuO,aACzC7e,KAAKmnC,aAAe72B,EAAOuO,eAE3B7e,KAAKknC,2BAA6B52B,EAAOwO,aACzC9e,KAAKmnC,aAAe72B,EAAOwO,cAE5BxO,EAAOqO,aACP3e,KAAKggC,WAAa,GAElB,IADA,IAAIO,EAAQjwB,EAAOqO,aACVzb,EAAI,EAAGA,EAAIq9B,EAAOr9B,IAAK,CAC/B,IAAIkkC,EAAM,CAAA,EACVpnC,KAAKggC,WAAWn3B,KAAKu+B,GACrB,IAAIC,EAAS/2B,EAAOuO,aACpBuoB,EAAIE,eAAkBD,GAAU,GAAM,EACtCD,EAAIG,gBAA2B,WAATF,EACtBD,EAAII,oBAAsBl3B,EAAOuO,aACjCwoB,EAAS/2B,EAAOuO,aAChBuoB,EAAIK,gBAAmBJ,GAAU,GAAM,EACvCD,EAAIM,SAAYL,GAAU,GAAM,EAChCD,EAAIO,eAA0B,UAATN,CACvB,CACA,GAGAnb,EAAU+T,2BAA6B,SAASlyB,EAAMzJ,EAAM2pB,EAAUxiB,GACrEygB,EAAUiB,IAAIrC,KAAK9qB,KAAM+N,EAAMzJ,GAC/BtE,KAAKiuB,SAAWA,EAChBjuB,KAAKyL,MAAQA,CACd,EACAygB,EAAU+T,2BAA2BtiB,UAAY,IAAIuO,EAAUiB,IAC/DjB,EAAU+T,2BAA2BtiB,UAAU4M,MAAQ,SAASja,GAC/DtQ,KAAK4nC,aAAet3B,EAAOqO,aAC3B,IAAI4hB,EAASjwB,EAAOqO,aACpB3e,KAAKggC,WAAa,GAClB,IAAI,IAAI98B,EAAI,EAAGA,EAAIq9B,EAAOr9B,IACzBlD,KAAKggC,WAAW98B,GAAK,CAAA,EACrBlD,KAAKggC,WAAW98B,GAAG2kC,WAAav3B,EAAOqO,YAEzC,EAGAuN,EAAUgU,gCAAkC,SAASnyB,EAAMzJ,EAAM2pB,EAAUxiB,GAC1EygB,EAAUiB,IAAIrC,KAAK9qB,KAAM+N,EAAMzJ,GAC/BtE,KAAKiuB,SAAWA,EAChBjuB,KAAKyL,MAAQA,CACd,EACAygB,EAAUgU,gCAAgCviB,UAAY,IAAIuO,EAAUiB,IACpEjB,EAAUgU,gCAAgCviB,UAAU4M,MAAQ,SAASja,GACpEtQ,KAAK4nC,aAAet3B,EAAOuO,aAC3B,IAAI0hB,EAASjwB,EAAOqO,aACpB3e,KAAKggC,WAAa,GAClB,IAAI,IAAI98B,EAAI,EAAGA,EAAIq9B,EAAOr9B,IACzBlD,KAAKggC,WAAW98B,GAAK,CAAA,EACrBlD,KAAKggC,WAAW98B,GAAG2kC,WAAav3B,EAAOuO,YAEzC,EAGAqN,EAAUuB,kBAAkB,OAAQ,uCAAwC,SAASnd,GACpFtQ,KAAK8nC,uBAAyBx3B,EAAOqO,aAClC3e,KAAK+nC,uBAAyBz3B,EAAOqO,aACrC3e,KAAKgoC,uBAAyB13B,EAAOqO,aACrC3e,KAAKioC,uBAAyB33B,EAAOqO,aACrC3e,KAAKkoC,uBAAyB53B,EAAOqO,aACrC3e,KAAKmoC,uBAAyB73B,EAAOqO,aACrC3e,KAAKooC,yBAA2B93B,EAAOqO,aACvC3e,KAAKqoC,yBAA2B/3B,EAAOqO,aACvC3e,KAAKsoC,aAAeh4B,EAAOuO,aAC3B7e,KAAKuoC,aAAej4B,EAAOuO,YAC/B,GAGAqN,EAAUuB,kBAAkB,OAAQ,sBAAuB,SAASnd,GACnEtQ,KAAKwoC,QAAUl4B,EAAOqO,aACtBrO,EAAOqO,YACR,GAGAuN,EAAUuB,kBAAkB,OAAQ,+BAAgC,SAASnd,GAC5EtQ,KAAKyoC,YAAc,GAEnB,IADA,IAAIC,EAAmBp4B,EAAOuO,aACrB3b,EAAI,EAAGA,EAAIwlC,EAAkBxlC,IAAK,CAC1C,IAAIylC,EAAa,CAAA,EACjB3oC,KAAKyoC,YAAY5/B,KAAK8/B,GACtBA,EAAWzrB,OAAS,GAEpB,IADA,IAAI0rB,EAAct4B,EAAOuO,aAChBkE,EAAI,EAAGA,EAAI6lB,EAAa7lB,IAAK,CACrC,IAAIwF,EAAQ,CAAA,EACZogB,EAAWzrB,OAAOrU,KAAK0f,GACvBA,EAAMvM,MAAQ1L,EAAOoO,YACrB6J,EAAMsgB,WAAav4B,EAAOsO,YAC7B,CACA,CACA,GAGAsN,EAAUuB,kBAAkB,OAAQ,iBAAkB,SAASnd,GAC9D,IAAIonB,EAGJ,GAFAA,EAAcpnB,EAAOuO,aACrB7e,KAAK23B,cAAgB,GACA,IAAjB33B,KAAKgM,QACR,IAAK,IAAI9I,EAAI,EAAGA,EAAIw0B,EAAax0B,IAChClD,KAAK23B,cAAc9uB,KAAKyH,EAAOuO,aAGlC,GAGAqN,EAAUuB,kBAAkB,OAAQ,yBAA0B,SAASnd,GACtE,IAAIiwB,GAASvgC,KAAKsE,KAAOtE,KAAKiuB,UAAU,EACxCjuB,KAAKwW,SAAW,GAChB,IAAK,IAAItT,EAAI,EAAGA,EAAIq9B,EAAOr9B,IAC1BlD,KAAKwW,SAAStT,GAAKoN,EAAOqO,YAE5B,GAGAuN,EAAUuB,kBAAkB,OAAQ,0BAGpCvB,EAAUuB,kBAAkB,OAAQ,yBAA0B,SAASnd,GACtEtQ,KAAK8oC,aAAex4B,EAAOqO,aAC3B3e,KAAK+oC,gBAAkBz4B,EAAOqO,aAC9B3e,KAAK6gC,aAAevwB,EAAOuO,aAC3B,IAAI0hB,GAASvgC,KAAKsE,KAAOtE,KAAKiuB,SAAW,GAAG,EAC5CjuB,KAAKgpC,eAAiB,GACtB,IAAK,IAAI9lC,EAAI,EAAGA,EAAIq9B,EAAOr9B,IAC1BlD,KAAKgpC,eAAe9lC,GAAKoN,EAAOuO,YAElC,GAGAqN,EAAUuB,kBAAkB,OAAQ,mBAAoB,SAASnd,GAChE,IAAIonB,EACAx0B,EAKJ,GAJAw0B,EAAcpnB,EAAOuO,aACrB7e,KAAKipC,YAAc,GACnBjpC,KAAKkpC,kBAAoB,GACzBlpC,KAAKmpC,yBAA2B,GACX,IAAjBnpC,KAAKgM,QACR,IAAI9I,EAAE,EAAGA,EAAEw0B,EAAax0B,IACvBlD,KAAKipC,YAAYpgC,KAAKyH,EAAOuO,cAC7B7e,KAAKkpC,kBAAkBrgC,KAAKyH,EAAOuO,cACnC7e,KAAKmpC,yBAAyBtgC,KAAKyH,EAAOuO,aAG7C,GAGAqN,EAAUuB,kBAAkB,OAAQ,uBAAwB,SAASnd,GACpE,IAAIpN,EACA6uB,EACAqX,EACA7b,EAGJ,IAFAvtB,KAAK06B,QAAU,GACf0O,EAAa94B,EAAOuO,aACf3b,EAAI,EAAGA,GAAKkmC,EAAYlmC,IAAK,CAEjC,IADA6uB,EAAM7F,EAAUsF,YAAYlhB,GAAQ,EAAMtQ,KAAKsE,MAAQgM,EAAOsN,cAAgB5d,KAAKyL,SAC3ET,OAASkhB,EAAUG,GAgB1B,OAfIH,EAAU6F,EAAIhkB,KAAK,iBACtBwf,EAAM,IAAIrB,EAAU6F,EAAIhkB,KAAK,eAAegkB,EAAIztB,OAC5C2pB,SAAW8D,EAAI9D,SACnBV,EAAI9hB,MAAQsmB,EAAItmB,QAEhBoQ,EAAIpG,KAAK,YAAa,8BAA8Bsc,EAAIhkB,MACxDwf,EAAM,IAAIrB,EAAUmB,YAAY0E,EAAIhkB,KAAMgkB,EAAIztB,KAAMytB,EAAI9D,SAAU8D,EAAItmB,QAEnE8hB,EAAIpoB,QAAU+mB,EAAUmB,YAAY1P,UAAUxY,QACjD0W,EAAIK,KAAK,YAAa,eAAeqR,EAAIxf,KAAK,qFAC9Cwf,EAAIuE,mBAAmBxhB,IAExBid,EAAIhD,MAAMja,GACVtQ,KAAK06B,QAAQ7xB,KAAK0kB,EAIrB,CACA,GAGArB,EAAUuB,kBAAkB,OAAQ,yBAA0B,SAASnd,GACtEtQ,KAAKmuB,cAAgB7d,EAAOuO,aAC5B,IAAI0hB,EAAQjwB,EAAOqO,aACnB3e,KAAK+lC,wBAA0B,GAC/B,IAAK,IAAI7iC,EAAI,EAAGA,EAAIq9B,EAAOr9B,IAC1BlD,KAAK+lC,wBAAwB7iC,GAAKoN,EAAOuO,YAE3C,GAGAqN,EAAUuB,kBAAkB,OAAQ,sBAAuB,SAASnd,GACnE,IAAIonB,EACAx0B,EAIJ,GAHAw0B,EAAcpnB,EAAOuO,aACrB7e,KAAKqpC,wBAA0B,GAC/BrpC,KAAKspC,oBAAsB,GACN,IAAjBtpC,KAAKgM,QACR,IAAI9I,EAAE,EAAGA,EAAEw0B,EAAax0B,IACvBlD,KAAKqpC,wBAAwBxgC,KAAKyH,EAAOuO,cACzC7e,KAAKspC,oBAAoBzgC,KAAKyH,EAAOuO,aAGxC,GAGAqN,EAAUuB,kBAAkB,OAAQ,gBAAiB,SAASnd,GAC7D,IAAIpN,EACAw0B,EAEJ,GADAA,EAAcpnB,EAAOuO,aACA,IAAjB7e,KAAKgM,QAER,IADAhM,KAAKupC,eAAiB,GAClBrmC,EAAE,EAAGA,EAAEw0B,EAAax0B,IACvBlD,KAAKupC,eAAe1gC,KAAKyH,EAAOuO,aAGnC,GAGAqN,EAAUuB,kBAAkB,OAAQ,gBAAiB,SAASnd,GAC7D,IAAIpN,EAEJ,GADAlD,KAAKwpC,aAAe,GACC,IAAjBxpC,KAAKgM,QAGR,IAFAhM,KAAKypC,YAAcn5B,EAAOuO,aAC1B7e,KAAK8hC,aAAexxB,EAAOuO,aACtB3b,EAAI,EAAGA,EAAIlD,KAAK8hC,aAAc5+B,IACT,IAArBlD,KAAKypC,YACRzpC,KAAKwpC,aAAa3gC,KAAKyH,EAAOuO,cAE9B7e,KAAKwpC,aAAatmC,GAAKlD,KAAKypC,WAIhC,GAGAvd,EAAUuB,kBAAkB,OAAQ,kBAAmB,SAASnd,GAC/D,IAAIonB,EACAx0B,EACAwmC,EAIJ,GAHAhS,EAAcpnB,EAAOuO,aACrB7e,KAAK04B,cAAgB,GACrB14B,KAAK2pC,cAAgB,GACA,IAAjB3pC,KAAKgM,QACR,IAAI9I,EAAE,EAAGA,EAAEw0B,EAAax0B,IACvBlD,KAAK04B,cAAc7vB,KAAKyH,EAAOuO,eAC/B6qB,EAAQp5B,EAAOkP,aACH,IACX3D,EAAIpG,KAAK,YAAa,kFACtBi0B,EAAQ,GAET1pC,KAAK2pC,cAAc9gC,KAAK6gC,EAG3B,GAGAxd,EAAUuB,kBAAkB,OAAQ,iBAAkB,SAASnd,GAC9D,IAAIs5B,EAAQt5B,EAAOuO,aACnB7e,KAAK6pC,oBAA8B,EAARD,EAC3B5pC,KAAK8pC,cAAgBx5B,EAAOuO,aAC5B,IAEIkT,EACAxE,EAHAptB,EAASmQ,EAAOuO,aAKpB,IAJA7e,KAAK+pC,uBAAyBz5B,EAAOyO,WAAW5e,GAGhDH,KAAK0tB,MAAQ,GACNpd,EAAOsN,cAAgB5d,KAAKyL,MAAMzL,KAAKsE,MAAM,CAEnD,IADAytB,EAAM7F,EAAUsF,YAAYlhB,GAAQ,EAAOtQ,KAAKsE,MAAQgM,EAAOsN,cAAgB5d,KAAKyL,SAC5ET,OAASkhB,EAAUG,GAK1B,OAJAkB,EAAMwE,EAAIxE,IACVvtB,KAAK0tB,MAAM7kB,KAAK0kB,GAChBvtB,KAAKutB,EAAIxf,MAAQwf,CAIpB,CACA,GAGArB,EAAUsB,cAAc,OAAQ,iBAAkB,SAASld,GAC1D4b,EAAU8d,QAAQrsB,UAAU4M,MAAMO,KAAK9qB,KAAMsQ,EAC9C,GAGA4b,EAAUuB,kBAAkB,OAAQ,uBAAwB,SAASnd,GACpE,IAAIpN,EAEA4+B,EAEJ,GADA9hC,KAAKwpC,aAAe,GACC,IAAjBxpC,KAAKgM,QAIR,GAHAhM,KAAKk/B,SAAW5uB,EAAOsO,aACvB5e,KAAKiqC,WAAa35B,EAAOoO,YACzBojB,EAAexxB,EAAOuO,aACE,IAApB7e,KAAKiqC,WACR,IAAK/mC,EAAI,EAAGA,EAAI4+B,EAAc5+B,GAAG,EAAG,CACnC,IAAI+f,EAAM3S,EAAOoO,YACjB1e,KAAKwpC,aAAatmC,GAAM+f,GAAO,EAAK,GACpCjjB,KAAKwpC,aAAatmC,EAAE,GAAW,GAAN+f,CAC7B,MACS,GAAwB,IAApBjjB,KAAKiqC,WACf,IAAK/mC,EAAI,EAAGA,EAAI4+B,EAAc5+B,IAC7BlD,KAAKwpC,aAAatmC,GAAKoN,EAAOoO,iBAEzB,GAAwB,KAApB1e,KAAKiqC,WACf,IAAK/mC,EAAI,EAAGA,EAAI4+B,EAAc5+B,IAC7BlD,KAAKwpC,aAAatmC,GAAKoN,EAAOqO,kBAG/B9C,EAAIjO,MAAM,YAAa,oCAG1B,GAGAse,EAAUuB,kBAAkB,OAAQ,0BAA2B,SAASnd,GACvE,IAAIpN,EAAE6f,EACF2U,EACAwS,EAGJ,IAFAxS,EAAcpnB,EAAOuO,aACrB7e,KAAK06B,QAAU,GACVx3B,EAAI,EAAGA,EAAIw0B,EAAax0B,IAAK,CACjC,IAAIinC,EAAa,CAAA,EAKjB,GAJAnqC,KAAK06B,QAAQx3B,GAAKinC,EAClBA,EAAWC,aAAe95B,EAAOuO,aACjCsrB,EAAWE,WAAa,IACxBH,EAAkB55B,EAAOqO,cACL,EACnB,IAAKoE,EAAI,EAAGA,EAAImnB,EAAiBnnB,IAAK,CACrC,IAAIunB,EAAY,CAAA,EAChBH,EAAWE,WAAWxhC,KAAKyhC,GACP,GAAhBtqC,KAAKgM,QACRs+B,EAAUhmC,KAAOgM,EAAOuO,aAExByrB,EAAUhmC,KAAOgM,EAAOqO,aAEzB2rB,EAAU9zB,SAAWlG,EAAOoO,YAC5B4rB,EAAUC,YAAcj6B,EAAOoO,YAC/B4rB,EAAUE,0BAA4Bl6B,EAAOuO,YACjD,CAEA,CACA,GAGAqN,EAAUuB,kBAAkB,OAAQ,qBAAsB,SAASnd,GAElE,GADAA,EAAOoO,YACc,IAAjB1e,KAAKgM,QACRsE,EAAOoO,gBACD,CACN,IAAIuE,EAAM3S,EAAOoO,YACjB1e,KAAKyqC,yBAA4BxnB,GAAO,EAAK,GAC7CjjB,KAAK0qC,wBAAgC,GAANznB,CACjC,CACCjjB,KAAK2qC,oBAAsBr6B,EAAOoO,YAClC1e,KAAK4qC,2BAA6Bt6B,EAAOoO,YACzC1e,KAAK6qC,YAAc3e,EAAUmF,WAAW/gB,GACP,IAA7BtQ,KAAK2qC,qBAAiE,IAApC3qC,KAAK4qC,6BAC1C5qC,KAAK8qC,yBAA2Bx6B,EAAOoO,YACvC1e,KAAK+qC,oBAAsBz6B,EAAOoP,eAAe1f,KAAK8qC,0BAExD,GACA5e,EAAUuB,kBAAkB,OAAQ,sCAAuC,SAASnd,GAC/D,GAAhBtQ,KAAKgM,QACRhM,KAAKgrC,oBAAsB16B,EAAOwO,aAElC9e,KAAKgrC,oBAAsB16B,EAAOuO,YAEpC,GAGAqN,EAAUuB,kBAAkB,OAAQ,yBAA0B,SAASnd,GACtE,IAAI26B,EAAY,EAChBjrC,KAAKkrC,SAAW56B,EAAOuO,aACnB7e,KAAKsE,KAAOtE,KAAKiuB,SAAWgd,GAAcjrC,KAAKgrB,MAAQkB,EAAUgE,4BACpElwB,KAAKmrC,iBAAmB76B,EAAOwO,aAC/BmsB,GAAa,GAEbjrC,KAAKmrC,iBAAmB,EAErBnrC,KAAKsE,KAAOtE,KAAKiuB,SAAWgd,GAAcjrC,KAAKgrB,MAAQkB,EAAUiE,uBACpEnwB,KAAKorC,iCAAmC96B,EAAOuO,aAC/CosB,GAAa,GAEbjrC,KAAKorC,iCAAmC,EAErCprC,KAAKsE,KAAOtE,KAAKiuB,SAAWgd,GAAcjrC,KAAKgrB,MAAQkB,EAAUkE,sBACpEpwB,KAAKqrC,wBAA0B/6B,EAAOuO,aACtCosB,GAAa,GAEbjrC,KAAKqrC,wBAA0B,EAE5BrrC,KAAKsE,KAAOtE,KAAKiuB,SAAWgd,GAAcjrC,KAAKgrB,MAAQkB,EAAUmE,uBACpErwB,KAAKsrC,oBAAsBh7B,EAAOuO,aAClCosB,GAAa,GAEbjrC,KAAKsrC,oBAAsB,EAExBtrC,KAAKsE,KAAOtE,KAAKiuB,SAAWgd,GAAcjrC,KAAKgrB,MAAQkB,EAAUoE,wBACpEtwB,KAAKurC,qBAAuBj7B,EAAOuO,aACnCosB,GAAa,GAEbjrC,KAAKurC,qBAAuB,CAE9B,GAGArf,EAAUuB,kBAAkB,OAAQ,+BAAgC,SAASnd,GAC5EtQ,KAAKygC,SAAWnwB,EAAOuO,aACvBvO,EAAOsO,aACP,IAAI+d,EAAWrsB,EAAOoO,YACtB1e,KAAKwrC,wBAA2B7O,GAAY,EAAK,EACjD38B,KAAKyrC,wBAA2B9O,GAAY,EAAK,EACjD38B,KAAK0rC,0BAAyC,EAAZ/O,EAClC38B,KAAK06B,QAAU,GAEf,IADA,IAAIiR,EAAoBr7B,EAAOuO,aACtB3b,EAAI,EAAGA,EAAIyoC,EAAmBzoC,IACjB,IAAjBlD,KAAKgM,SACRhM,KAAKi6B,KAAO3pB,EAAOwO,aACnB9e,KAAK4rC,YAAct7B,EAAOwO,eAE1B9e,KAAKi6B,KAAO3pB,EAAOuO,aACnB7e,KAAK4rC,YAAct7B,EAAOuO,cAE3B7e,KAAK6rC,YAAcv7B,EAAO,WAAY,GAAGtQ,KAAKwrC,wBAAwB,MACtExrC,KAAK8rC,YAAcx7B,EAAO,WAAY,GAAGtQ,KAAKyrC,wBAAwB,MACtEzrC,KAAK+rC,cAAgBz7B,EAAO,WAAY,GAAGtQ,KAAK0rC,0BAA0B,KAE5E,GAGAxf,EAAUuB,kBAAkB,OAAQ,iBAAkB,SAASnd,GAC1C,GAAhBtQ,KAAKgM,SACRhM,KAAKohC,cAAgB9wB,EAAOwO,aAC5B9e,KAAKqhC,kBAAoB/wB,EAAOwO,aAChC9e,KAAKkrC,SAAW56B,EAAOuO,aACvBvO,EAAOuO,aACP7e,KAAKwb,SAAWlL,EAAOwO,eAEvB9e,KAAKohC,cAAgB9wB,EAAOuO,aAC5B7e,KAAKqhC,kBAAoB/wB,EAAOuO,aAChC7e,KAAKkrC,SAAW56B,EAAOuO,aACvBvO,EAAOuO,aACP7e,KAAKwb,SAAWlL,EAAOuO,cAExBvO,EAAOwP,gBAAgB,GACvB9f,KAAKgsC,MAAQ17B,EAAOiP,YACpBvf,KAAK+oC,gBAAkBz4B,EAAOiP,YAC9Bvf,KAAK0hC,OAASpxB,EAAOiP,aAAa,EAClCjP,EAAOqO,aACP3e,KAAK2hC,OAASrxB,EAAO0P,eAAe,GACpChgB,KAAKgzB,MAAQ1iB,EAAOuO,aACpB7e,KAAKizB,OAAS3iB,EAAOuO,YACtB,GAGAqN,EAAUsB,cAAc,OAAQ,sBAAuB,SAASld,GAC/DtQ,KAAKi6B,KAAO3pB,EAAOuO,YACpB,GAGAqN,EAAUsB,cAAc,OAAQ,sBAAuB,SAASld,GAC/DtQ,KAAKi6B,KAAO3pB,EAAOuO,YACpB,GAGAqN,EAAUsB,cAAc,OAAQ,gBAAiB,SAASld,GACzDtQ,KAAKg6B,UAAY1pB,EAAOuO,YACzB,GAGAqN,EAAUsB,cAAc,OAAQ,gBAAiB,SAASld,GACzDtQ,KAAKg6B,UAAY1pB,EAAOuO,YACzB,GAGAqN,EAAUsB,cAAc,OAAQ,gBAAiB,SAASld,GACzDtQ,KAAKg6B,UAAY1pB,EAAOwO,YACzB,GAGAoN,EAAUoB,kBAAkB3P,UAAU4M,MAAQ,SAASja,GACtDtQ,KAAKquB,gBAAgB/d,GACrBtQ,KAAKisC,eAAiB37B,EAAOuO,YAC9B,EAGAqN,EAAU4C,qBAAqB,QAC/B5C,EAAUggB,sBAAwB,SAASn+B,EAAMzJ,EAAM2pB,EAAUxiB,GAChEygB,EAAUiB,IAAIrC,KAAK9qB,KAAM+N,EAAMzJ,GAC/BtE,KAAKiuB,SAAWA,EAChBjuB,KAAKyL,MAAQA,CACd,EACAygB,EAAUggB,sBAAsBvuB,UAAY,IAAIuO,EAAUiB,IAC1DjB,EAAUggB,sBAAsBvuB,UAAU4M,MAAQ,SAASja,GAC1DtQ,KAAKmsC,UAAY77B,EAAOwP,iBAAiB9f,KAAKsE,KAAKtE,KAAKiuB,UAAU,EACnE,EAGA/B,EAAUkgB,QAAQzuB,UAAU4M,MAAQ,SAASja,GAG5C,IAFA,IAAIyhB,EACAxE,EACGjd,EAAOsN,cAAgB5d,KAAKyL,MAAMzL,KAAKsE,MAAM,CAEnD,IADAytB,EAAM7F,EAAUsF,YAAYlhB,GAAQ,EAAMtQ,KAAKsE,MAAQgM,EAAOsN,cAAgB5d,KAAKyL,SAC3ET,OAASkhB,EAAUG,GAS1B,QARAkB,EAAM,IAAIrB,EAAUggB,sBAAsBna,EAAIhkB,KAAMgkB,EAAIztB,KAAMytB,EAAI9D,SAAU8D,EAAItmB,QACxEtG,QAAU+mB,EAAUiB,IAAIxP,UAAUxY,OAAsB,SAAbooB,EAAIxf,OACtD8N,EAAIK,KAAK,YAAa,kBAAkBqR,EAAIxf,KAAK,qFACjDwf,EAAIuE,mBAAmBxhB,IAExBid,EAAIhD,MAAMja,GACVtQ,KAAK0tB,MAAM7kB,KAAK0kB,EAInB,CACA,EAGArB,EAAUuB,kBAAkB,OAAQ,8BAA+B,SAASnd,GAG3E,IAFAtQ,KAAKygC,SAAWnwB,EAAOuO,aACvB7e,KAAK0tB,MAAQ,GACNpd,EAAOsN,cAAgB5d,KAAKyL,MAAMzL,KAAKsE,MAAM,CAEnD,GADAytB,IAAM7F,EAAUsF,YAAYlhB,GAAQ,EAAOtQ,KAAKsE,MAAQgM,EAAOsN,cAAgB5d,KAAKyL,QAChFsmB,IAAI/mB,OAASkhB,EAAUG,GAI1B,OAHAkB,IAAMwE,IAAIxE,IACVvtB,KAAK0tB,MAAM7kB,KAAK0kB,IAInB,CACA,GAGArB,EAAUuB,kBAAkB,OAAQ,kBAAmB,SAASnd,GAC/DtQ,KAAKkrC,SAAW56B,EAAOuO,aACvB7e,KAAKorC,iCAAmC96B,EAAOuO,aAC/C7e,KAAKqrC,wBAA0B/6B,EAAOuO,aACtC7e,KAAKsrC,oBAAsBh7B,EAAOuO,aAClC7e,KAAKurC,qBAAuBj7B,EAAOuO,YACpC,GAGAqN,EAAUsB,cAAc,OAAQ,gBAAiB,SAASld,GACzDtQ,KAAKg6B,UAAY1pB,EAAOwO,YACzB,GAGAoN,EAAUuB,kBAAkB,OAAQ,cAAe,SAASnd,GAC3D,IAAI26B,EAAY,EAmBhB,GAlBAjrC,KAAK8hC,aAAexxB,EAAOuO,aAC3BosB,GAAY,EACRjrC,KAAKsE,KAAOtE,KAAKiuB,SAAWgd,GAAcjrC,KAAKgrB,MAAQkB,EAAUuE,wBACpEzwB,KAAKqsC,YAAc/7B,EAAOkP,YAC1ByrB,GAAa,GAEbjrC,KAAKqsC,YAAc,EAEhBrsC,KAAKsE,KAAOtE,KAAKiuB,SAAWgd,GAAcjrC,KAAKgrB,MAAQkB,EAAUwE,uBACpE1wB,KAAKssC,mBAAqBh8B,EAAOuO,aACjCosB,GAAa,GAEbjrC,KAAKssC,mBAAqB,EAE3BtsC,KAAKusC,gBAAkB,GACvBvsC,KAAKypC,YAAc,GACnBzpC,KAAKwsC,aAAe,GACpBxsC,KAAKysC,+BAAiC,GAClCzsC,KAAKsE,KAAOtE,KAAKiuB,SAAWgd,EAC/B,IAAK,IAAI/nC,EAAI,EAAGA,EAAIlD,KAAK8hC,aAAc5+B,IAClClD,KAAKgrB,MAAQkB,EAAUyE,sBAC1B3wB,KAAKusC,gBAAgBrpC,GAAKoN,EAAOuO,cAE9B7e,KAAKgrB,MAAQkB,EAAU0E,kBAC1B5wB,KAAKypC,YAAYvmC,GAAKoN,EAAOuO,cAE1B7e,KAAKgrB,MAAQkB,EAAU2E,mBAC1B7wB,KAAKwsC,aAAatpC,GAAKoN,EAAOuO,cAE3B7e,KAAKgrB,MAAQkB,EAAU4E,wBACL,IAAjB9wB,KAAKgM,QACRhM,KAAKysC,+BAA+BvpC,GAAKoN,EAAOuO,aAEhD7e,KAAKysC,+BAA+BvpC,GAAKoN,EAAOkP,YAKrD,GAGA0M,EAAUuB,kBAAkB,OAAQ,oBAAqB,SAASnd,GACjEtQ,KAAK8oC,aAAex4B,EAAOuO,aAC3B,IAAI0hB,GAASvgC,KAAKsE,KAAOtE,KAAKiuB,SAAW,GAAG,EAC5CjuB,KAAKgpC,eAAiB,GACtB,IAAK,IAAI9lC,EAAI,EAAGA,EAAIq9B,EAAOr9B,IAC1BlD,KAAKgpC,eAAe9lC,GAAKoN,EAAOuO,YAElC,GAGAqN,EAAUuB,kBAAkB,OAAQ,gBAAiB,SAASnd,GAC7DtQ,KAAKkZ,OAAS5I,EAAO4O,aACtB,GAGAgN,EAAUsB,cAAc,OAAQ,qBAAsB,SAASld,GAC9D,IAAIiwB,GAASvgC,KAAKsE,KAAOtE,KAAKiuB,UAAY,EAC1CjuB,KAAKy8B,kBAAoB,GACzB,IAAK,IAAIv5B,EAAI,EAAGA,EAAIq9B,EAAOr9B,IAC1BlD,KAAKy8B,kBAAkBv5B,GAAKoN,EAAOyO,WAAW,EAEhD,GAGAmN,EAAUuB,kBAAkB,OAAQ,0BAA2B,SAASnd,GACvEtQ,KAAK0sC,KAAOp8B,EAAO4O,cACnBlf,KAAKoK,KAAOkG,EAAO4O,cACnBlf,KAAK2sC,YAAcr8B,EAAO4O,cAC1Blf,KAAK4sC,KAAOt8B,EAAO4O,aACpB,GAGAgN,EAAUuB,kBAAkB,OAAQ,6BAA8B,SAASnd,GACvE,IAAIpN,EAEJ,GADAlD,KAAK6sC,QAAUv8B,EAAOyO,WAAW,GACb,GAAhB/e,KAAKgM,cAEF,GAAoB,GAAhBhM,KAAKgM,QAAc,CAM1B,IALAhM,KAAKs3B,gBAAkBhnB,EAAOuO,aAC9B7e,KAAKgmC,gBAAkB,GACvBhmC,KAAK8sC,8BAAgC,GACrC9sC,KAAK+sC,iBAAmB,GACxB/sC,KAAKgtC,qBAAuB,GACvB9pC,EAAI,EAAGA,EAAIlD,KAAKs3B,gBAAiBp0B,IAClClD,KAAKgmC,gBAAgBn9B,KAAKyH,EAAOqO,cACjC3e,KAAK8sC,8BAA8BjkC,KAAKyH,EAAOoO,aAC/C1e,KAAK+sC,iBAAiBlkC,KAAKyH,EAAOoO,aAClC1e,KAAKgtC,qBAAqBnkC,KAAKyH,EAAOoO,aAE1C1e,KAAKitC,cAAgB38B,EAAOoO,YAC5B1e,KAAKktC,gBAAkB58B,EAAOoO,YAC9B1e,KAAKmtC,WAAa78B,EAAOoO,YACzB,IAAIsM,EAAQ1a,EAAOoO,YACnB1e,KAAKotC,wBAA2BpiB,GAAS,EAAK,EAC9ChrB,KAAKqtC,cAAiBriB,GAAS,EAAK,EACpChrB,KAAKstC,oBAAuBtiB,GAAS,EAAK,EAC1ChrB,KAAKutC,eAAkBviB,GAAS,EAAK,EACrChrB,KAAKwtC,YAAexiB,GAAS,EAAK,EAClChrB,KAAKytC,WAAan9B,EAAOuO,aACzB7e,KAAK0tC,eAAiBp9B,EAAOuO,aAC7B7e,KAAK2tC,gBAAkBr9B,EAAOuO,aAC9B7e,KAAK4tC,wBAA0Bt9B,EAAOuO,aACtC7e,KAAK6tC,wBAA0Bv9B,EAAOuO,YAC9C,CACA,GAGAqN,EAAUuB,kBAAkB,OAAQ,kBAAmB,SAASnd,GAC5C,IAAftQ,KAAKgrB,QACRhrB,KAAK+I,SAAWuH,EAAO4O,cAEzB,GAGAgN,EAAUuB,kBAAkB,OAAQ,kBAAmB,SAASnd,GAC/DtQ,KAAKoK,KAAOkG,EAAO4O,cACflf,KAAKsE,KAAOtE,KAAKiuB,SAAWjuB,KAAKoK,KAAKjK,OAAS,EAAI,IACtDH,KAAK+I,SAAWuH,EAAO4O,cAEzB,GAGAgN,EAAU6C,cAAc,mCAAoC,yBAAyB,GAAM,EAAO,SAASze,GACvGtQ,KAAK8tC,mBAAqBx9B,EAAOyO,WAAW/e,KAAKsE,KAAOtE,KAAKiuB,UACxD8f,QAAQ,KAAM,SACdA,QAAQ,KAAM,QACdA,QAAQ,KAAM,QACdA,QAAQ,KAAM,UACdA,QAAQ,KAAM,SACvB,GACA7hB,EAAU6C,cAAc,mCAAoC,yCAAyC,GAAM,EAAO,SAASze,GAC1HtQ,KAAK2iC,UAAYzW,EAAUmF,WAAW/gB,GACtC,IAAIuyB,EAAWvyB,EAAOuO,aAClBgkB,EAAW,IACd7iC,KAAKoF,KAAOkL,EAAOoP,eAAemjB,GAEpC,GAGA3W,EAAU6C,cAAc,mCAAoC,2BAA2B,GAAM,GAyB7F7C,EAAU6C,cAAc,mCAAoC,0BAA0B,GAAM,EAAO,SAASze,GAC3GtQ,KAAKguC,oBAAsB19B,EAAOsO,aAClC5e,KAAKiuC,gBAAkB39B,EAAOoO,YAC9B1e,KAAK6qC,YAAc3e,EAAUmF,WAAW/gB,EACzC,GACA4b,EAAU6C,cAAc,mCAAoC,WAAW,GAAM,EAAO,SAASze,GACzFtQ,KAAKkuC,eAAiB59B,EAAOoO,YAC7B1e,KAAK06B,QAAU,GAEf,IAAK,IAAIx3B,EAAI,EAAGA,EAAIlD,KAAKkuC,eAAgBhrC,IAAK,CAC1C,IAAI03B,EAAQ,CAAA,EACRuT,EAAgB,EAChBC,EAAoB,EAEH,IAAjBpuC,KAAKgM,SACLmiC,EAAgB79B,EAAOwO,aACvBsvB,EAAoB99B,EAAOwO,eAE3BqvB,EAAgB79B,EAAOuO,aACvBuvB,EAAoB99B,EAAOuO,cAG/B+b,EAAMuT,cAAgBA,EACtBvT,EAAMwT,kBAAoBA,EAE1BpuC,KAAK06B,QAAQ7xB,KAAK+xB,EAC1B,CACA,GACA1O,EAAU6C,cAAc,mCAAoC,WAAW,GAAM,EAAO,SAASze,GACpE,IAAjBtQ,KAAKgM,SACNhM,KAAKmuC,cAAgB79B,EAAOwO,aAC5B9e,KAAKwb,SAAWlL,EAAOwO,eAEvB9e,KAAKmuC,cAAgB79B,EAAOuO,aAC5B7e,KAAKwb,SAAWlL,EAAOuO,aAE9B,GACAqN,EAAUuB,kBAAkB,OAAQ,sBAAuB,SAASnd,GACnEtQ,KAAKquC,aAAe/9B,EAAOqO,aAC3B3e,KAAKsuC,QAAUh+B,EAAOuP,gBAAgB,EACvC,GAGAqM,EAAUuB,kBAAkB,OAAQ,6BAA8B,SAAUnd,GAC3E,IAAI2S,EACiB,IAAjBjjB,KAAKgM,SACRhM,KAAK6sC,QAAUv8B,EAAOoO,YACtB1e,KAAKgc,MAAQ1L,EAAOoO,YACpBuE,EAAM3S,EAAOoO,YACb1e,KAAKuuC,SAAWtrB,GAAO,EACvBjjB,KAAKwuC,kBAAqBvrB,GAAO,EAAK,EACtCjjB,KAAKyuC,mBAA2B,EAANxrB,EAC1BjjB,KAAK0uC,gBAAkBp+B,EAAOoO,YAC9B1e,KAAK2uC,wBAA0Br+B,EAAOoO,YACtC1e,KAAK4uC,mBAAqBt+B,EAAOoO,YACjC1e,KAAK6uC,2BAA6Bv+B,EAAOqO,aACzC3e,KAAK8uC,uBAAyBx+B,EAAOoP,eAAe1f,KAAK6uC,8BAEzD7uC,KAAK6sC,QAAUv8B,EAAOoO,YACtB1e,KAAKgc,MAAQ1L,EAAOoO,YACpBuE,EAAM3S,EAAOoO,YACb1e,KAAKuuC,SAAYtrB,GAAO,EAAK,GAC7BjjB,KAAK+uC,WAAmB,GAAN9rB,EAClBA,EAAM3S,EAAOoO,YACb1e,KAAKwuC,kBAAqBvrB,GAAO,EAAK,GACtCjjB,KAAKgvC,iBAAoB/rB,GAAO,EAAK,EACrCjjB,KAAKyuC,mBAA2B,EAANxrB,EAC1BjjB,KAAK6uC,2BAA6Bv+B,EAAOqO,aACzC3e,KAAK8uC,uBAAyBx+B,EAAOoP,eAAe1f,KAAK6uC,4BAE3D,GACA3iB,EAAUsB,cAAc,OAAQ,yBAA0B,SAASld,GAClEtQ,KAAKsa,KAAOhK,EAAOyO,WAAW/e,KAAKsE,KAAOtE,KAAKiuB,SAChD,GAGA/B,EAAUuB,kBAAkB,OAAQ,sBAAuB,SAAUnd,GACnE,IAAIpN,EAAG6f,EAGHksB,EAAY,CACdC,eAAWzqC,EACX0qC,cAAe,EAEfC,oBAAqB,SAAUC,GAC7BrvC,KAAKkvC,UAAYG,EAAK3wB,YACtB1e,KAAKmvC,cAAgB,CAC3B,EACIG,oBAAqB,SAAUD,GAC7BrvC,KAAKkvC,UAAYG,EAAK1wB,aACtB3e,KAAKmvC,cAAgB,EAC3B,EAEII,aAAc,SAAUC,GACtB,IAAIzd,EAAO/xB,KAAKkvC,WAAclvC,KAAKmvC,cAAgBK,GAAe,GAAKA,GAAY,EAEnF,OADAxvC,KAAKmvC,eAAiBK,EACfzd,CACb,GASE,GALAkd,EAAUG,oBAAoB9+B,GAC9B2+B,EAAUM,aAAa,GACvBvvC,KAAKo1B,mBAAqB6Z,EAAUM,aAAa,GACjDvvC,KAAKyvC,iBAAmBR,EAAUM,aAAa,GAE3CvvC,KAAKyvC,iBAAkB,CA0BvB,GAzBFR,EAAUK,oBAAoBh/B,GAC9BtQ,KAAK0vC,QAAUT,EAAUM,aAAa,GACtCvvC,KAAK2vC,cAAgBV,EAAUM,aAAa,GAC5CvvC,KAAK4vC,oBAAsBX,EAAUM,aAAa,GAClDvvC,KAAKo9B,kBAAoB6R,EAAUM,aAAa,GAEhDN,EAAUG,oBAAoB9+B,GAC9BtQ,KAAK6vC,iBAAmBZ,EAAUM,aAAa,GAC/CN,EAAUM,aAAa,GAIrBN,EAAUK,oBAAoBh/B,GAC9B2+B,EAAUM,aAAa,GACvBvvC,KAAK8vC,0BAA4Bb,EAAUM,aAAa,GACxDvvC,KAAK88B,oBAAsBmS,EAAUM,aAAa,GAClDvvC,KAAK68B,kBAAoBoS,EAAUM,aAAa,GAEhDvvC,KAAKi9B,kBAAoB3sB,EAAOoO,YAEhCuwB,EAAUG,oBAAoB9+B,GAC9BtQ,KAAK+vC,+BAAiCd,EAAUM,aAAa,GAC7DvvC,KAAKgwC,4BAA8Bf,EAAUM,aAAa,GAE1DvvC,KAAKiwC,wBAA0B,IAAI5vC,WAAWL,KAAK8vC,2BAC/C9vC,KAAK8vC,0BAA2B,CAClC,IAAK5sC,EAAI,EAAGA,EAAIlD,KAAK8vC,0BAA4B,EAAG5sC,IAAK,CACvD,IAAIgtC,EAASjB,EAAUM,aAAa,GACpCN,EAAUG,oBAAoB9+B,GAC9B,IAAI6/B,EAASlB,EAAUM,aAAa,GAEpCvvC,KAAKiwC,wBAAwB/sC,GAAOgtC,GAAU,EAAKC,CAC7D,CACQnwC,KAAKiwC,wBAAwBjwC,KAAK8vC,0BAA4B,GAAKb,EAAUM,aAAa,EAClG,MAEQN,EAAUM,aAAa,GAGzB,GAAIvvC,KAAK2vC,cAAgB,EAAG,CAG1B,IAFAV,EAAUG,oBAAoB9+B,GAC9BtQ,KAAKowC,0BAA4B,EAC5BrtB,EAAI/iB,KAAK2vC,cAAgB,EAAG5sB,GAAK,IAAKA,EAAG,CAC5C,IAAIniB,EAAMquC,EAAUM,aAAa,GACjCvvC,KAAKowC,2BAA6BxvC,GAAOmiB,CACnD,CACQ,IAAKA,EAAI/iB,KAAK2vC,cAAe5sB,GAAK,GAAK/iB,KAAK2vC,cAAgB,IAAK5sB,EAC/DksB,EAAUM,aAAa,GAIzB,IADAvvC,KAAKqwC,mBAAqB,GACrBttB,EAAI/iB,KAAK2vC,cAAgB,EAAG5sB,GAAK,IAAKA,EACrC/iB,KAAKowC,0BAA6B,GAAKrtB,IACzC/iB,KAAKqwC,mBAAmBttB,GAAKzS,EAAOoO,YAGhD,CAIM,GAFA1e,KAAKswC,qBAAuBhgC,EAAOoO,YACnC1e,KAAKuwC,wBAA0B,GAC3BvwC,KAAKswC,qBACP,IAAKptC,EAAI,EAAGA,EAAIlD,KAAKswC,qBAAsBptC,IACzClD,KAAKuwC,wBAAwB1nC,KAAKyH,EAAOuO,cAK/C7e,KAAKwwC,kBAAoBlgC,EAAOqO,aAChC3e,KAAKywC,mBAAqBngC,EAAOqO,aACjC3e,KAAK0wC,eAAiBpgC,EAAOqO,YACjC,CAKE3e,KAAK29B,YAAc,GACnB,IAAIgT,EAAgBrgC,EAAOoO,YAC3B,IAAKxb,EAAI,EAAGA,EAAIytC,EAAeztC,IAAK,CAClC,IAAI06B,EAAa,GACjB59B,KAAK29B,YAAY90B,KAAK+0B,GAEtBqR,EAAUG,oBAAoB9+B,GAC9BstB,EAAWC,aAAeoR,EAAUM,aAAa,GACjDN,EAAUM,aAAa,GACvB3R,EAAWE,UAAYmR,EAAUM,aAAa,GAE9C,IAAIvR,EAAW,EAKf,IAlBuB,IAcnBJ,EAAWE,WAfE,IAeiCF,EAAWE,YAC3DE,EAAW1tB,EAAOqO,cAGfoE,EAAI,EAAGA,EAAIib,EAAUjb,IAAK,CAC7B,IAAIrhB,EAAM4O,EAAOqO,aACjBif,EAAW/0B,KAAK,CACdzD,KAAMkL,EAAOoP,eAAehe,GAC5BvB,OAAQuB,GAEhB,CACA,CACA,GAEAwqB,EAAUuB,kBAAkB,OAAQ,mBAAoB,SAAUnd,GAEhE,IAAI2S,EAAMosB,KAAK3wB,YACf1e,KAAKo1B,mBAA4B,EAANnS,CAC7B,GAEAiJ,EAAUmB,YAAY1P,UAAUizB,QAAU,WACzC,OAAO,CACR,EAEA1kB,EAAUmB,YAAY1P,UAAUkzB,QAAU,WACzC,OAAO,CACR,EAEA3kB,EAAUmB,YAAY1P,UAAUmzB,WAAa,WAC5C,OAAO,CACR,EAEA5kB,EAAUmB,YAAY1P,UAAUozB,WAAa,WAC5C,OAAO,CACR,EAEA7kB,EAAUmB,YAAY1P,UAAUqzB,OAAS,WACxC,OAAO,CACR,EAEA9kB,EAAUmB,YAAY1P,UAAUszB,SAAW,WAC1C,OAAOjxC,KAAK+N,KAAKggC,QAAQ,IAAI,GAC9B,EAEA7hB,EAAUmB,YAAY1P,UAAUuzB,SAAW,WAC1C,MAAO,EACR,EAEAhlB,EAAUmB,YAAY1P,UAAUwzB,UAAY,WAC3C,MAAO,EACR,EAEAjlB,EAAUmB,YAAY1P,UAAUyzB,gBAAkB,WACjD,MAAO,EACR,EAEAllB,EAAUmB,YAAY1P,UAAU0zB,cAAgB,WAC/C,MAAO,EACR,EAEAnlB,EAAUmB,YAAY1P,UAAU2zB,cAAgB,WAC/C,MAAO,EACR,EAEAplB,EAAUqlB,kBAAkB5zB,UAAUizB,QAAU,WAC/C,OAAO,CACR,EAEA1kB,EAAUqlB,kBAAkB5zB,UAAUuzB,SAAW,WAChD,OAAOlxC,KAAKgzB,KACb,EAEA9G,EAAUqlB,kBAAkB5zB,UAAUwzB,UAAY,WACjD,OAAOnxC,KAAKizB,MACb,EAEA/G,EAAUslB,iBAAiB7zB,UAAUkzB,QAAU,WAC9C,OAAO,CACR,EAEA3kB,EAAUslB,iBAAiB7zB,UAAUyzB,gBAAkB,WACtD,OAAOpxC,KAAKuzB,aACb,EAEArH,EAAUslB,iBAAiB7zB,UAAU0zB,cAAgB,WACpD,OAAOrxC,KAAKyzB,UACb,EAEAvH,EAAUslB,iBAAiB7zB,UAAU2zB,cAAgB,WACpD,OAAOtxC,KAAKwzB,UACb,EAEAtH,EAAUulB,oBAAoB9zB,UAAUmzB,WAAa,WACpD,OAAO,CACR,EAEA5kB,EAAUwlB,oBAAoB/zB,UAAUozB,WAAa,WACpD,OAAO,CACR,EAGA7kB,EAAUylB,aAAe,SAASC,EAAGC,GACpC,IAAItgB,EAAM/xB,OAAOoyC,GAAG1lC,SAAS,IAE7B,IADA2lC,EAAU,MAAQA,EAA+CA,EAAU,EAAIA,EACxEtgB,EAAIpxB,OAAS0xC,GACnBtgB,EAAM,IAAMA,EAEb,OAAOA,CACR,EAEArF,EAAU4lB,gBAAgBn0B,UAAUszB,SACpC/kB,EAAU6lB,gBAAgBp0B,UAAUszB,SACpC/kB,EAAU8lB,gBAAgBr0B,UAAUszB,SACpC/kB,EAAU+lB,gBAAgBt0B,UAAUszB,SAAW,WAC9C,IAAIiB,EAAYhmB,EAAUmB,YAAY1P,UAAUszB,SAASnmB,KAAK9qB,MAC9D,OAAIA,KAAKmyC,KACDD,EAAU,IAAIhmB,EAAUylB,aAAa3xC,KAAKmyC,KAAKld,sBAC7C/I,EAAUylB,aAAa3xC,KAAKmyC,KAAKjd,uBACjChJ,EAAUylB,aAAa3xC,KAAKmyC,KAAKhd,oBAEnC+c,CAET,EAEAhmB,EAAUkmB,gBAAgBz0B,UAAUszB,SACpC/kB,EAAUmmB,gBAAgB10B,UAAUszB,SAAW,WAC9C,IAAI/tC,EACAgvC,EAAYhmB,EAAUmB,YAAY1P,UAAUszB,SAASnmB,KAAK9qB,MAC9D,GAAIA,KAAKsyC,KAAM,CAEd,OADAJ,GAAa,IACLlyC,KAAKsyC,KAAK1V,uBACjB,KAAK,EACJsV,GAAa,GACb,MACD,KAAK,EACJA,GAAa,IACb,MACD,KAAK,EACJA,GAAa,IACb,MACD,KAAK,EACJA,GAAa,IAGfA,GAAalyC,KAAKsyC,KAAKxV,oBACvBoV,GAAa,IACb,IAAItxC,EAAMZ,KAAKsyC,KAAKvV,8BAChBwV,EAAW,EACf,IAAKrvC,EAAE,EAAGA,EAAE,KACXqvC,GAAkB,EAAN3xC,EACL,IAAHsC,GAFWA,IAGfqvC,IAAa,EACb3xC,IAAO,EAERsxC,GAAahmB,EAAUylB,aAAaY,EAAU,GAC9CL,GAAa,IACuB,IAAhClyC,KAAKsyC,KAAKzV,kBACbqV,GAAa,IAEbA,GAAa,IAEdA,GAAalyC,KAAKsyC,KAAKrV,kBACvB,IAAIuV,GAAU,EACVC,EAAoB,GACxB,IAAKvvC,EAAI,EAAGA,GAAK,EAAGA,KACflD,KAAKsyC,KAAKtV,6BAA6B95B,IAAMsvC,KAChDC,EAAoB,IAAIvmB,EAAUylB,aAAa3xC,KAAKsyC,KAAKtV,6BAA6B95B,GAAI,GAAGuvC,EAC7FD,GAAU,GAGZN,GAAaO,CACf,CACC,OAAOP,CACR,EAEAhmB,EAAUwmB,gBAAgB/0B,UAAUszB,SACpC/kB,EAAUymB,gBAAgBh1B,UAAUszB,SAAW,WAC9C,IAAI/tC,EACAgvC,EAAYhmB,EAAUmB,YAAY1P,UAAUszB,SAASnmB,KAAK9qB,MAC9D,GAAIA,KAAK4yC,KAAM,CACdV,GAAa,IAAMlyC,KAAK4yC,KAAK9V,oBACzB98B,KAAK4yC,KAAK/V,kBACbqV,GAAa,KAEbA,GAAa,KAEdA,GAAalyC,KAAK4yC,KAAK3V,kBAEvB,IAAIwV,EAAoB,GACxB,GAAIzyC,KAAK4yC,KAAK3C,wBAAyB,CACtC,IAII4C,EAJAxvC,EAAQ,GACRisB,EAAO,EAIX,IAHAA,GAAQtvB,KAAK4yC,KAAKE,2BAA6B,EAC/CxjB,GAAQtvB,KAAK4yC,KAAKG,wBAA0B,EAEvC7vC,EAAI,EAAGA,EAAIlD,KAAK4yC,KAAK3C,wBAAwB9vC,SAAU+C,EAC3DosB,GAAStvB,KAAK4yC,KAAK3C,wBAAwB/sC,IAAM,EAAK,GACtDG,EAAMwF,KAAKymB,GACPA,IACHujB,EAAe3vC,GAGhBosB,EAAQtvB,KAAK4yC,KAAK3C,wBAAwB/sC,IAAM,EAAK,EAGtD,QAAqBuB,IAAjBouC,EACHJ,EAAoB,UAEhB,CACJA,EAAoB,KACpB,IAAIO,EAAe,mCACf9D,EAAY,EACZC,EAAgB,EACpB,IAAKjsC,EAAI,EAAGA,GAAK2vC,IAAgB3vC,EAIhC,IAHAgsC,EAAaA,GAAa,EAAK7rC,EAAMH,GACrCisC,GAAiB,EAEVA,GAAiB,GAEvBsD,GAAqBO,EADV9D,GAAcC,EAAgB,EAAM,IAI/CD,IAAc,IADdC,GAAiB,IACmB,EAGlCA,IAEHsD,GAAqBO,EAAyB,IAD9C9D,IAAe,EAAIC,IAGxB,CACA,CACE+C,GAAaO,CACf,CACC,OAAOP,CACR,EAEAhmB,EAAU+mB,gBAAgBt1B,UAAUszB,SAAW,WAC9C,IAAIiB,EAAYhmB,EAAUmB,YAAY1P,UAAUszB,SAASnmB,KAAK9qB,MAC9D,GAAIA,KAAKkzC,MAAQlzC,KAAKkzC,KAAK/W,IAAK,CAC/B,IAAI7Q,EAAMtrB,KAAKkzC,KAAK/W,IAAI/Q,SACpBI,EAAMxrB,KAAKkzC,KAAK/W,IAAI5Q,iBACxB,OAAO2mB,EAAU,IAAIhmB,EAAUylB,aAAarmB,IAAME,EAAM,IAAIA,EAAK,GACnE,CACE,OAAO0mB,CAET,EAEAhmB,EAAUinB,gBAAgBx1B,UAAUszB,SAAW,WAC9C,IAAIiB,EAAYhmB,EAAUmB,YAAY1P,UAAUszB,SAASnmB,KAAK9qB,MAC9D,OAAGA,KAAKojC,YACA8O,EAAY,IAAMlyC,KAAKojC,YAEvB8O,CAET,EAEAhmB,EAAUknB,gBAAgBz1B,UAAUszB,SACpC/kB,EAAUmnB,gBAAgB11B,UAAUszB,SAAW,WAC9C,IAAIiB,EAAYhmB,EAAUmB,YAAY1P,UAAUszB,SAASnmB,KAAK9qB,MAC1Dgc,EAAQhc,KAAKszC,KAAKt3B,MACT,GAATA,IACHA,EAAQ,MAET,IAAIuyB,EAAWvuC,KAAKszC,KAAK/E,SAIzB,OAHgB,GAAZA,IACHA,EAAW,MAEL2D,EAAY,KAAOlyC,KAAKszC,KAAKzG,QAAU,IAAM7wB,EAAQ,IAAMuyB,CACnE,EAEAriB,EAAUqnB,gBAAgB51B,UAAUszB,SAAW,WAC9C,IAKIuC,EALAtB,EAAYhmB,EAAUmB,YAAY1P,UAAUszB,SAASnmB,KAAK9qB,MAC1Dgc,EAAQhc,KAAKyzC,KAAKxf,gBAWtB,OAVIjY,EAAQ,KACXA,EAAQ,IAAMA,GAGe,IAA1Bhc,KAAKyzC,KAAKzf,aAAiD,IAA5Bh0B,KAAKyzC,KAAKtf,cAC5Cqf,EAAqC,IAAzBxzC,KAAKyzC,KAAKrf,WAAoB,KAAO,KACtCp0B,KAAKyzC,KAAKzf,aAAe,IACpCwf,EAAwC,IAA5BxzC,KAAKyzC,KAAKtf,cAAuB,KAAO,MAG9C+d,EAAU,IAAIlyC,KAAKyzC,KAAKzf,YAAY,IAAIhY,GAAOhc,KAAKyzC,KAAKvf,WAAW,IAAI,KAAK,IAAIsf,CACzF,EAMAtnB,EAAUiB,IAAIxP,UAAU+1B,YAAc,SAASpjC,EAAQpD,GACtDlN,KAAKsE,MAAQ,EACTtE,KAAKsE,KAAOgf,IACftjB,KAAKsE,MAAQ,GAEI,SAAdtE,KAAK+N,OACR/N,KAAKsE,MAAQ,IAEduX,EAAII,MAAM,YAAa,eAAejc,KAAK+N,KAAK,aAAa/N,KAAKsE,KAAK,gBAAgBgM,EAAOsN,eAAe1Q,GAAO,KAChHlN,KAAKsE,KAAOgf,EACfhT,EAAO0U,YAAY,IAEnBhlB,KAAK2zC,aAAerjC,EAAOsN,cAC3BtN,EAAO0U,YAAYhlB,KAAKsE,OAEzBgM,EAAO8V,YAAYpmB,KAAK+N,KAAM,KAAM,GAClB,SAAd/N,KAAK+N,MACRuC,EAAO8U,gBAAgBplB,KAAKguB,MAEzBhuB,KAAKsE,KAAOgf,GACfhT,EAAO0W,YAAYhnB,KAAKsE,KAE1B,EAEA4nB,EAAUgB,QAAQvP,UAAU+1B,YAAc,SAASpjC,GAClDtQ,KAAKsE,MAAQ,EACb4nB,EAAUiB,IAAIxP,UAAU+1B,YAAY5oB,KAAK9qB,KAAMsQ,EAAQ,MAAMtQ,KAAKgM,QAAQ,MAAMhM,KAAKgrB,OACrF1a,EAAO+U,WAAWrlB,KAAKgM,SACvBsE,EAAO2W,YAAYjnB,KAAKgrB,MACzB,EAEAkB,EAAUiB,IAAIxP,UAAUxY,MAAQ,SAASmL,GACtB,SAAdtQ,KAAK+N,KAEJ/N,KAAKoF,OACRpF,KAAKsE,KAAOtE,KAAKoF,KAAKjF,OACtBH,KAAK0zC,YAAYpjC,GACjBA,EAAO8U,gBAAgBplB,KAAKoF,QAG7BpF,KAAKsE,KAAQtE,KAAKoF,KAAOpF,KAAKoF,KAAKjF,OAAS,EAC5CH,KAAK0zC,YAAYpjC,GACbtQ,KAAKoF,MACRkL,EAAO8U,gBAAgBplB,KAAKoF,MAG/B,EAEA8mB,EAAUkB,aAAazP,UAAUxY,MAAQ,SAASmL,GACjDtQ,KAAKsE,KAAO,EACZtE,KAAK0zC,YAAYpjC,GACjB,IAAK,IAAIpN,EAAE,EAAGA,EAAElD,KAAK0tB,MAAMvtB,OAAQ+C,IAC9BlD,KAAK0tB,MAAMxqB,KACdlD,KAAK0tB,MAAMxqB,GAAGiC,MAAMmL,GACpBtQ,KAAKsE,MAAQtE,KAAK0tB,MAAMxqB,GAAGoB,MAI7BuX,EAAII,MAAM,YAAa,iBAAiBjc,KAAK+N,KAAK,kBAAkB/N,KAAKsE,MACzEgM,EAAO4W,aAAalnB,KAAK2zC,aAAc3zC,KAAKsE,KAC7C,EAEA4nB,EAAUggB,sBAAsBvuB,UAAUxY,MAAQ,SAASmL,GAC1DtQ,KAAKsE,KAA6B,EAAtBtE,KAAKmsC,UAAUhsC,OAC3BH,KAAK0zC,YAAYpjC,GACjBA,EAAOwU,iBAAiB9kB,KAAKmsC,UAC9B,EAGAjgB,EAAU0nB,QAAQj2B,UAAUxY,MAAQ,SAASmL,GAC5C,IAAIpN,EAEJ,IADAlD,KAAKsE,KAAO,EACPpB,EAAI,EAAGA,EAAIlD,KAAKs1B,IAAIn1B,OAAQ+C,IAChClD,KAAKsE,MAAQ,EAAEtE,KAAKs1B,IAAIpyB,GAAG/C,OAE5B,IAAK+C,EAAI,EAAGA,EAAIlD,KAAKw1B,IAAIr1B,OAAQ+C,IAChClD,KAAKsE,MAAQ,EAAEtE,KAAKw1B,IAAItyB,GAAG/C,OAY5B,IAVIH,KAAKy1B,MACRz1B,KAAKsE,MAAQtE,KAAKy1B,IAAIt1B,QAEvBH,KAAK0zC,YAAYpjC,GACjBA,EAAO+U,WAAWrlB,KAAKg1B,sBACvB1kB,EAAO+U,WAAWrlB,KAAKi1B,sBACvB3kB,EAAO+U,WAAWrlB,KAAKk1B,uBACvB5kB,EAAO+U,WAAWrlB,KAAKm1B,oBACvB7kB,EAAO+U,WAAWrlB,KAAKo1B,mBAAkB,KACzC9kB,EAAO+U,WAAWrlB,KAAKs1B,IAAIn1B,OAAM,KAC5B+C,EAAI,EAAGA,EAAIlD,KAAKs1B,IAAIn1B,OAAQ+C,IAChCoN,EAAO6U,YAAYnlB,KAAKs1B,IAAIpyB,GAAG/C,QAC/BmQ,EAAO8U,gBAAgBplB,KAAKs1B,IAAIpyB,GAAGksB,MAGpC,IADA9e,EAAO+U,WAAWrlB,KAAKw1B,IAAIr1B,QACtB+C,EAAI,EAAGA,EAAIlD,KAAKw1B,IAAIr1B,OAAQ+C,IAChCoN,EAAO6U,YAAYnlB,KAAKw1B,IAAItyB,GAAG/C,QAC/BmQ,EAAO8U,gBAAgBplB,KAAKw1B,IAAItyB,GAAGksB,MAEhCpvB,KAAKy1B,KACRnlB,EAAO8U,gBAAgBplB,KAAKy1B,IAE9B,EAGAvJ,EAAU2nB,QAAQl2B,UAAUxY,MAAQ,SAASmL,GAC5C,IAAIpN,EAMJ,IALAlD,KAAKgM,QAAU,EACfhM,KAAKgrB,MAAQ,EACbhrB,KAAKsE,KAAO,EAAE,EAAEtE,KAAK23B,cAAcx3B,OACnCH,KAAK0zC,YAAYpjC,GACjBA,EAAO0U,YAAYhlB,KAAK23B,cAAcx3B,QAClC+C,EAAE,EAAGA,EAAElD,KAAK23B,cAAcx3B,OAAQ+C,IACrCoN,EAAO0W,YAAYhnB,KAAK23B,cAAcz0B,GAExC,EAGAgpB,EAAU4nB,QAAQn2B,UAAUxY,MAAQ,SAASmL,GAE5CtQ,KAAKgM,QAAU,EACfhM,KAAKgrB,MAAQ,EACbhrB,KAAKsE,KAAO,GACZtE,KAAK0zC,YAAYpjC,GACjBA,EAAOiU,WAAWvkB,KAAKq4B,uBACvB/nB,EAAOiU,WAAWvkB,KAAKs4B,2BACvBhoB,EAAOiU,WAAWvkB,KAAKu4B,8BACvBjoB,EAAOiU,WAAWvkB,KAAKw4B,sBACvBloB,EAAOiU,WAAWvkB,KAAKy4B,mBACxB,EAGAvM,EAAU6nB,QAAQp2B,UAAUxY,MAAQ,SAASmL,GAC5C,IAAIpN,EAMJ,IALAlD,KAAKgM,QAAU,EACfhM,KAAKgrB,MAAQ,EACbhrB,KAAKsE,KAAO,EAAE,EAAEtE,KAAK04B,cAAcv4B,OACnCH,KAAK0zC,YAAYpjC,GACjBA,EAAO0U,YAAYhlB,KAAK04B,cAAcv4B,QAClC+C,EAAE,EAAGA,EAAElD,KAAK04B,cAAcv4B,OAAQ+C,IACrCoN,EAAO0U,YAAYhlB,KAAK04B,cAAcx1B,IACjB,IAAjBlD,KAAKgM,QACRsE,EAAOiU,WAAWvkB,KAAK24B,eAAez1B,IAEtCoN,EAAO0U,YAAYhlB,KAAK24B,eAAez1B,GAG1C,EAGAgpB,EAAU8nB,QAAQr2B,UAAUxY,MAAQ,SAASmL,GAC5CtQ,KAAKgM,QAAU,EACfhM,KAAKgrB,MAAQ,EACbhrB,KAAKsE,KAAO,EACZtE,KAAK0zC,YAAYpjC,GACjBA,EAAO0U,YAAYhlB,KAAK06B,QAAQv6B,QAChC,IAAK,IAAI+C,EAAI,EAAGA,EAAIlD,KAAK06B,QAAQv6B,OAAQ+C,IACxClD,KAAK06B,QAAQx3B,GAAGiC,MAAMmL,GACtBtQ,KAAKsE,MAAQtE,KAAK06B,QAAQx3B,GAAGoB,KAG9BuX,EAAII,MAAM,YAAa,iBAAiBjc,KAAK+N,KAAK,kBAAkB/N,KAAKsE,MACzEgM,EAAO4W,aAAalnB,KAAK2zC,aAAc3zC,KAAKsE,KAC7C,EAGA4nB,EAAU+nB,QAAQt2B,UAAUxY,MAAQ,SAASmL,GAC5CtQ,KAAKgM,QAAU,EACfhM,KAAKgrB,MAAQ,EACbhrB,KAAKsE,KAAOtE,KAAK26B,kBAAkBx6B,OACnCH,KAAK0zC,YAAYpjC,GACjBA,EAAO8V,YAAYpmB,KAAK26B,kBACzB,EAGAzO,EAAUgoB,QAAQv2B,UAAUxY,MAAQ,SAASmL,GAC5CtQ,KAAKgM,QAAU,EACfhM,KAAKgrB,MAAQ,EACbhrB,KAAKsE,KAAO,EAAE,GAAGtE,KAAK06B,QAAQv6B,OAC9BH,KAAK0zC,YAAYpjC,GACjBA,EAAO0U,YAAYhlB,KAAK06B,QAAQv6B,QAChC,IAAK,IAAI+C,EAAI,EAAGA,EAAIlD,KAAK06B,QAAQv6B,OAAQ+C,IAAK,CAC7C,IAAI03B,EAAQ56B,KAAK06B,QAAQx3B,GACzBoN,EAAO0U,YAAY4V,EAAMC,kBACzBvqB,EAAOiU,WAAWqW,EAAME,YACxBxqB,EAAOoU,WAAWkW,EAAMG,oBACxBzqB,EAAOoU,WAAWkW,EAAMI,oBAC1B,CACA,EAGA9O,EAAUioB,QAAQx2B,UAAUxY,MAAQ,SAASmL,GAC5CtQ,KAAKgM,QAAU,EACfhM,KAAKgrB,MAAQ,EACbhrB,KAAKsE,KAAO,GAAItE,KAAKu7B,aAAap7B,QAAQH,KAAKo7B,cAAcj7B,OAAO,IAAIH,KAAKgD,MAAM7C,OAAO,GAC1FH,KAAK0zC,YAAYpjC,GACjBA,EAAOgW,aAAatmB,KAAKo7B,eACzB9qB,EAAOgW,aAAatmB,KAAKgD,OACzBsN,EAAO0U,YAAYhlB,KAAKi7B,WACxB3qB,EAAO0U,YAAYhlB,KAAKq7B,yBACxB/qB,EAAO0U,YAAYhlB,KAAKm7B,gBACxB7qB,EAAO0U,YAAYhlB,KAAKkK,IACxBoG,EAAO8U,gBAAgBplB,KAAKu7B,aAC7B,EAGArP,EAAU8d,QAAQrsB,UAAUxY,MAAQ,SAASmL,GAC5CtQ,KAAKsE,KAAO,EAAE,EAAEtE,KAAKy8B,kBAAkBt8B,OACvCH,KAAK0zC,YAAYpjC,GACjBA,EAAO8V,YAAYpmB,KAAKu8B,YAAa,KAAM,GAC3CjsB,EAAO0U,YAAYhlB,KAAKw8B,eACxB,IAAK,IAAIt5B,EAAI,EAAGA,EAAIlD,KAAKy8B,kBAAkBt8B,OAAQ+C,IAClDoN,EAAO8V,YAAYpmB,KAAKy8B,kBAAkBv5B,GAAI,KAAM,EAEtD,EAGAgpB,EAAUkoB,QAAQz2B,UAAUxY,MAAQ,SAASmL,GAC5CtQ,KAAKsE,KAAO,GAAItE,KAAKoK,KAAKjK,OAAO,EACjCH,KAAKgM,QAAU,EACfhM,KAAKgrB,MAAQ,EACbhrB,KAAK0zC,YAAYpjC,GACjBA,EAAO0U,YAAY,GACnB1U,EAAO8V,YAAYpmB,KAAK08B,QAAS,KAAM,GACvCpsB,EAAO0U,YAAY,GACnB1U,EAAO0U,YAAY,GACnB1U,EAAO0U,YAAY,GACnB1U,EAAOgW,aAAatmB,KAAKoK,KAC1B,EAGA8hB,EAAUmoB,QAAQ12B,UAAUxY,MAAQ,SAASmL,GACzC,IAAIpN,EAAE6f,EAGN,IAFA/iB,KAAKsE,KAAO,GAEPpB,EAAI,EAAGA,EAAIlD,KAAK29B,YAAYx9B,OAAQ+C,IAEvC,IADAlD,KAAKsE,MAAQ,EACRye,EAAI,EAAGA,EAAI/iB,KAAK29B,YAAYz6B,GAAG/C,OAAQ4iB,IAC1C/iB,KAAKsE,MAAQ,EAAItE,KAAK29B,YAAYz6B,GAAG6f,GAAG3d,KAAKjF,OAwBjD,IApBAH,KAAK0zC,YAAYpjC,GAEjBA,EAAO+U,WAAWrlB,KAAKg1B,sBACvB1kB,EAAO+U,YAAYrlB,KAAK48B,uBAAyB,IAC9B58B,KAAK68B,mBAAqB,GAC3B78B,KAAK88B,qBACvBxsB,EAAO0U,YAAYhlB,KAAK+8B,+BACxBzsB,EAAO8U,gBAAgBplB,KAAKg9B,8BAC5B1sB,EAAO+U,WAAWrlB,KAAKi9B,mBACvB3sB,EAAO6U,YAAYnlB,KAAKk9B,8BAAgC,IAAI,KAC5D5sB,EAAO+U,WAAWrlB,KAAKm9B,gBAAe,KACtC7sB,EAAO+U,WAAWrlB,KAAKo9B,kBAAiB,KACxC9sB,EAAO+U,WAAWrlB,KAAKq9B,sBAAqB,KAC5C/sB,EAAO+U,WAAWrlB,KAAKs9B,wBAAuB,KAC9ChtB,EAAO6U,YAAYnlB,KAAKu9B,cACxBjtB,EAAO+U,YAAYrlB,KAAKw9B,mBAAmB,IAC3Bx9B,KAAKy9B,mBAAmB,IACxBz9B,KAAK09B,kBAAkB,GACxB19B,KAAKo1B,oBACpB9kB,EAAO+U,WAAWrlB,KAAK29B,YAAYx9B,QAC9B+C,EAAI,EAAGA,EAAIlD,KAAK29B,YAAYx9B,OAAQ+C,IAKvC,IAHAoN,EAAO+U,YAAYrlB,KAAK29B,YAAYz6B,GAAG26B,cAAc,GAClC79B,KAAK29B,YAAYz6B,GAAG46B,WACvCxtB,EAAO6U,YAAYnlB,KAAK29B,YAAYz6B,GAAG/C,QAClC4iB,EAAI,EAAGA,EAAI/iB,KAAK29B,YAAYz6B,GAAG/C,OAAQ4iB,IAC1CzS,EAAO6U,YAAYnlB,KAAK29B,YAAYz6B,GAAG6f,GAAG3d,KAAKjF,QAC/CmQ,EAAO8U,gBAAgBplB,KAAK29B,YAAYz6B,GAAG6f,GAAG3d,KAGtD,EAEA8mB,EAAUooB,QAAQ32B,UAAUxY,MAAQ,SAASmL,GAC5CtQ,KAAKgM,QAAU,EACfhM,KAAKgrB,MAAQ,EACbhrB,KAAKsE,KAAQtE,KAAKsgC,UAAUngC,OAAO,GAAIH,KAAKgD,MAAM7C,OAAO,GACzDH,KAAK0zC,YAAYpjC,GACjBA,EAAOgW,aAAatmB,KAAKsgC,WACzBhwB,EAAOgW,aAAatmB,KAAKgD,MAC1B,EAGAkpB,EAAUqoB,QAAQ52B,UAAUxY,MAAQ,SAASmL,GAC5CtQ,KAAKsE,KAAO,GACZtE,KAAKgrB,MAAQ,EACbhrB,KAAKgM,QAAU,EACfhM,KAAK0zC,YAAYpjC,GACjBA,EAAO0U,YAAYhlB,KAAKohC,eACxB9wB,EAAO0U,YAAYhlB,KAAKqhC,mBACxB/wB,EAAO0U,YAAYhlB,KAAKi7B,WACxB3qB,EAAO0U,YAAYhlB,KAAKwb,UACxBlL,EAAO6U,YAAYnlB,KAAKkyB,UACxB5hB,EAAO6U,YAAY,EACpB,EAGA+G,EAAUsoB,QAAQ72B,UAAUxY,MAAQ,SAASmL,GAC5CtQ,KAAKgM,QAAU,EACfhM,KAAKgrB,MAAQ,EACbhrB,KAAKsE,KAAO,EACZtE,KAAK0zC,YAAYpjC,GACjBA,EAAO0U,YAAYhlB,KAAKshC,kBACzB,EAGApV,EAAUuoB,QAAQ92B,UAAUxY,MAAQ,SAASmL,GAC5CtQ,KAAKgM,QAAU,EACfhM,KAAKgrB,MAAQ,EACbhrB,KAAKsE,KAAO,EACZtE,KAAK0zC,YAAYpjC,GACjBA,EAAO0U,YAAYhlB,KAAKuhC,gBACzB,EAGArV,EAAUwoB,QAAQ/2B,UAAUxY,MAAQ,SAASmL,GAC5CtQ,KAAKgM,QAAU,EACfhM,KAAKgrB,MAAQ,EACbhrB,KAAKsE,KAAO,GACZtE,KAAK0zC,YAAYpjC,GACjBA,EAAO0U,YAAYhlB,KAAKohC,eACxB9wB,EAAO0U,YAAYhlB,KAAKqhC,mBACxB/wB,EAAO0U,YAAYhlB,KAAKi7B,WACxB3qB,EAAO0U,YAAYhlB,KAAKwb,UACxBlL,EAAO0U,YAAYhlB,KAAKyhC,MACxBnxB,EAAO6U,YAAYnlB,KAAK0hC,QAAQ,GAChCpxB,EAAO6U,YAAY,GACnB7U,EAAO0U,YAAY,GACnB1U,EAAO0U,YAAY,GACnB1U,EAAOwU,iBAAiB9kB,KAAK2hC,QAC7BrxB,EAAO0U,YAAY,GACnB1U,EAAO0U,YAAY,GACnB1U,EAAO0U,YAAY,GACnB1U,EAAO0U,YAAY,GACnB1U,EAAO0U,YAAY,GACnB1U,EAAO0U,YAAY,GACnB1U,EAAO0U,YAAYhlB,KAAK4hC,cACzB,EAGA1V,EAAUmB,YAAY1P,UAAU+1B,YAAc,SAASpjC,GACtDtQ,KAAKsE,KAAO,EACZ4nB,EAAUiB,IAAIxP,UAAU+1B,YAAY5oB,KAAK9qB,KAAMsQ,GAC/CA,EAAO+U,WAAW,GAClB/U,EAAO+U,WAAW,GAClB/U,EAAO+U,WAAW,GAClB/U,EAAO+U,WAAW,GAClB/U,EAAO+U,WAAW,GAClB/U,EAAO+U,WAAW,GAClB/U,EAAO6U,YAAYnlB,KAAK6yB,qBACzB,EAEA3G,EAAUmB,YAAY1P,UAAUg3B,YAAc,SAASrkC,GACtD,IAAK,IAAIpN,EAAE,EAAGA,EAAElD,KAAK0tB,MAAMvtB,OAAQ+C,IAClClD,KAAK0tB,MAAMxqB,GAAGiC,MAAMmL,GACpBtQ,KAAKsE,MAAQtE,KAAK0tB,MAAMxqB,GAAGoB,KAE5BuX,EAAII,MAAM,YAAa,iBAAiBjc,KAAK+N,KAAK,kBAAkB/N,KAAKsE,MACzEgM,EAAO4W,aAAalnB,KAAK2zC,aAAc3zC,KAAKsE,KAC7C,EAEA4nB,EAAUmB,YAAY1P,UAAUxY,MAAQ,SAASmL,GAChDtQ,KAAK0zC,YAAYpjC,GACjBA,EAAO8U,gBAAgBplB,KAAKoF,MAC5BpF,KAAKsE,MAAQtE,KAAKoF,KAAKjF,OACvB0b,EAAII,MAAM,YAAa,iBAAiBjc,KAAK+N,KAAK,kBAAkB/N,KAAKsE,MACzEgM,EAAO4W,aAAalnB,KAAK2zC,aAAc3zC,KAAKsE,KAC7C,EAEA4nB,EAAUqlB,kBAAkB5zB,UAAUxY,MAAQ,SAASmL,GACtDtQ,KAAK0zC,YAAYpjC,GACjBtQ,KAAKsE,MAAQ,GACbgM,EAAO6U,YAAY,GACnB7U,EAAO6U,YAAY,GACnB7U,EAAO0U,YAAY,GACnB1U,EAAO0U,YAAY,GACnB1U,EAAO0U,YAAY,GACnB1U,EAAO6U,YAAYnlB,KAAKgzB,OACxB1iB,EAAO6U,YAAYnlB,KAAKizB,QACxB3iB,EAAO0U,YAAYhlB,KAAKkzB,iBACxB5iB,EAAO0U,YAAYhlB,KAAKmzB,gBACxB7iB,EAAO0U,YAAY,GACnB1U,EAAO6U,YAAYnlB,KAAKozB,aACxB9iB,EAAO+U,WAAWlmB,KAAK+e,IAAI,GAAIle,KAAKqzB,eAAelzB,SACnDmQ,EAAO8V,YAAYpmB,KAAKqzB,eAAgB,KAAM,IAC9C/iB,EAAO6U,YAAYnlB,KAAKszB,OACxBhjB,EAAOoU,eACP1kB,KAAK20C,YAAYrkC,EAClB,EAEA4b,EAAUslB,iBAAiB7zB,UAAUxY,MAAQ,SAASmL,GACrDtQ,KAAK0zC,YAAYpjC,GACjBtQ,KAAKsE,MAAQ,GACbgM,EAAO0U,YAAY,GACnB1U,EAAO0U,YAAY,GACnB1U,EAAO6U,YAAYnlB,KAAKuzB,eACxBjjB,EAAO6U,YAAYnlB,KAAKwzB,YACxBljB,EAAO6U,YAAY,GACnB7U,EAAO6U,YAAY,GACnB7U,EAAO0U,YAAYhlB,KAAKyzB,YAAY,IACpCzzB,KAAK20C,YAAYrkC,EAClB,EAEA4b,EAAU0oB,gBAAgBj3B,UAAUxY,MAAQ,SAASmL,GACpDtQ,KAAK0zC,YAAYpjC,GACjBtQ,KAAKsE,MAAQtE,KAAKmK,UAAUhK,OAAO,EAC/BH,KAAKqjC,gBAAgBljC,OAAO,EAC5BH,KAAKsjC,qBAAqBnjC,OAAO,EACrCmQ,EAAOgW,aAAatmB,KAAKmK,WACzBmG,EAAOgW,aAAatmB,KAAKqjC,iBACzB/yB,EAAOgW,aAAatmB,KAAKsjC,sBACzBtjC,KAAK20C,YAAYrkC,EAClB,EAGA4b,EAAUgC,iBAAiBvQ,UAAUxY,MAAQ,SAASmL,GACrDA,EAAO8U,gBAAgBplB,KAAKoF,KAC7B,EAGA8mB,EAAU2oB,QAAQl3B,UAAUxY,MAAQ,SAASmL,GAC5CtQ,KAAKgM,QAAU,EACfhM,KAAKgrB,MAAQ,EACbhrB,KAAKsE,KAAO,GAAG,EAAEtE,KAAK06B,QAAQv6B,OAC9BH,KAAK0zC,YAAYpjC,GACjBA,EAAO8V,YAAYpmB,KAAKmuB,cAAe,KAAM,GAC7C7d,EAAO0U,YAAYhlB,KAAK4gC,yBACxBtwB,EAAO0U,YAAYhlB,KAAK06B,QAAQv6B,QAChC,IAAK,IAAI+C,EAAI,EAAGA,EAAIlD,KAAK06B,QAAQv6B,OAAQ+C,IAAK,CAC7C,IAAI03B,EAAQ56B,KAAK06B,QAAQx3B,GACzBoN,EAAOiU,WAAWqW,EAAMkH,cACxBxxB,EAAOiU,WAAWqW,EAAMmL,wBAC1B,CACA,EAGA7Z,EAAU4oB,QAAQn3B,UAAUxY,MAAQ,SAASmL,GAC5C,IAAIpN,EACA03B,EAKJ,IAFA56B,KAAKgrB,MAAQ,EACbhrB,KAAKsE,KAAO,GACPpB,EAAI,EAAGA,EAAIlD,KAAK06B,QAAQv6B,OAAQ+C,IACpC03B,EAAQ56B,KAAK06B,QAAQx3B,GACA,IAAjBlD,KAAKgM,UACoB,IAAxBhM,KAAK+mC,iBACR/mC,KAAKsE,MAAQ,GAEdtE,KAAKsE,MAAQs2B,EAAMx1B,KAAKjF,QAY1B,IATAH,KAAK0zC,YAAYpjC,GACjBA,EAAO8V,YAAYpmB,KAAKmuB,cAAe,KAAM,GACxB,IAAjBnuB,KAAKgM,SACRsE,EAAO0U,YAAYhlB,KAAK+mC,gBAErB/mC,KAAKgM,SAAW,GACnBsE,EAAO0U,YAAYhlB,KAAKorC,kCAEzB96B,EAAO0U,YAAYhlB,KAAK06B,QAAQv6B,QAC3B+C,EAAI,EAAGA,EAAIlD,KAAK06B,QAAQv6B,OAAQ+C,IACpC03B,EAAQ56B,KAAK06B,QAAQx3B,GACA,IAAjBlD,KAAKgM,SACoB,IAAxBhM,KAAK+mC,gBACRz2B,EAAO0U,YAAY4V,EAAMoJ,oBAG3BpJ,EAAMz1B,MAAMmL,EAEd,EAIA4b,EAAU6oB,QAAQp3B,UAAUxY,MAAQ,SAASmL,GAC5CtQ,KAAKgM,QAAU,EACfhM,KAAKgrB,MAAQ,EACbhrB,KAAKsE,KAAO,GAAQ,GAAGtE,KAAKggC,WAAW7/B,OACvCH,KAAK0zC,YAAYpjC,GACjBA,EAAO0U,YAAYhlB,KAAKinC,cACxB32B,EAAO0U,YAAYhlB,KAAKi7B,WACxB3qB,EAAO0U,YAAYhlB,KAAKknC,4BACxB52B,EAAO0U,YAAYhlB,KAAKmnC,cACxB72B,EAAO6U,YAAY,GACnB7U,EAAO6U,YAAYnlB,KAAKggC,WAAW7/B,QACnC,IAAK,IAAI+C,EAAI,EAAGA,EAAIlD,KAAKggC,WAAW7/B,OAAQ+C,IAAK,CAChD,IAAIkkC,EAAMpnC,KAAKggC,WAAW98B,GAC1BoN,EAAO0U,YAAYoiB,EAAIE,gBAAkB,GAAKF,EAAIG,iBAClDj3B,EAAO0U,YAAYoiB,EAAII,qBACvBl3B,EAAO0U,YAAYoiB,EAAIK,iBAAmB,GAAKL,EAAIM,UAAY,GAAKN,EAAIO,eAC1E,CACA,EAGAzb,EAAU8oB,QAAQr3B,UAAUxY,MAAQ,SAASmL,GAE3CtQ,KAAKgM,QAAU,EACfhM,KAAKgrB,MAAQ,EACbhrB,KAAKsE,KAAO,EACZtE,KAAK0zC,YAAYpjC,GACjBA,EAAO6U,YAAYnlB,KAAKwoC,SACxBl4B,EAAO6U,YAAY,EACrB,EAEA+G,EAAU+oB,QAAQt3B,UAAUxY,MAAQ,SAASmL,GAC5CtQ,KAAKgM,QAAU,EACfhM,KAAKgrB,MAAQ,EACbhrB,KAAKsE,KAAO,EAAE,EAAEtE,KAAK23B,cAAcx3B,OACnCH,KAAK0zC,YAAYpjC,GACjBA,EAAO0U,YAAYhlB,KAAK23B,cAAcx3B,QACtCmQ,EAAOwU,iBAAiB9kB,KAAK23B,cAC9B,EAGAzL,EAAUgpB,QAAQv3B,UAAUxY,MAAQ,SAASmL,GAC5C,IAAIpN,EAMJ,IALAlD,KAAKgM,QAAU,EACfhM,KAAKgrB,MAAQ,EACbhrB,KAAKsE,KAAO,EAAE,GAAGtE,KAAKipC,YAAY9oC,OAClCH,KAAK0zC,YAAYpjC,GACjBA,EAAO0U,YAAYhlB,KAAKipC,YAAY9oC,QAChC+C,EAAE,EAAGA,EAAElD,KAAKipC,YAAY9oC,OAAQ+C,IACnCoN,EAAO0U,YAAYhlB,KAAKipC,YAAY/lC,IACpCoN,EAAO0U,YAAYhlB,KAAKkpC,kBAAkBhmC,IAC1CoN,EAAO0U,YAAYhlB,KAAKmpC,yBAAyBjmC,GAEnD,EAGAgpB,EAAUipB,QAAQx3B,UAAUxY,MAAQ,SAASmL,GAC5C,IAAIpN,EAOJ,IANAlD,KAAKgM,QAAU,EACfhM,KAAKgrB,MAAQ,EACbhrB,KAAKsE,KAAO,EACZtE,KAAK0zC,YAAYpjC,GACjBA,EAAO0U,YAAYhlB,KAAK06B,QAAQv6B,QAChCH,KAAKsE,MAAQ,EACRpB,EAAI,EAAGA,EAAIlD,KAAK06B,QAAQv6B,OAAQ+C,IACpClD,KAAK06B,QAAQx3B,GAAGiC,MAAMmL,GACtBtQ,KAAKsE,MAAQtE,KAAK06B,QAAQx3B,GAAGoB,KAG9BuX,EAAII,MAAM,YAAa,iBAAiBjc,KAAK+N,KAAK,kBAAkB/N,KAAKsE,MACzEgM,EAAO4W,aAAalnB,KAAK2zC,aAAc3zC,KAAKsE,KAC7C,EAGA4nB,EAAUkpB,QAAQz3B,UAAUxY,MAAQ,SAASmL,GAC5C,IAAIpN,EAMJ,IALAlD,KAAKgM,QAAU,EACfhM,KAAKgrB,MAAQ,EACbhrB,KAAKsE,KAAO,EAAE,EAAEtE,KAAKqpC,wBAAwBlpC,OAC7CH,KAAK0zC,YAAYpjC,GACjBA,EAAO0U,YAAYhlB,KAAKqpC,wBAAwBlpC,QAC5C+C,EAAE,EAAGA,EAAElD,KAAKqpC,wBAAwBlpC,OAAQ+C,IAC/CoN,EAAO0U,YAAYhlB,KAAKqpC,wBAAwBnmC,IAChDoN,EAAO0U,YAAYhlB,KAAKspC,oBAAoBpmC,GAE9C,EAGAgpB,EAAUmpB,QAAQ13B,UAAUxY,MAAQ,SAASmL,GAC5CtQ,KAAKgM,QAAU,EACfhM,KAAKgrB,MAAQ,EACbhrB,KAAKsE,KAAO,EAAE,EAAEtE,KAAKupC,eAAeppC,OACpCH,KAAK0zC,YAAYpjC,GACjBA,EAAO0U,YAAYhlB,KAAKupC,eAAeppC,QACvCmQ,EAAOwU,iBAAiB9kB,KAAKupC,eAC9B,EAGArd,EAAUopB,QAAQ33B,UAAUxY,MAAQ,SAASmL,GAC5C,IAAIpN,EACAqyC,GAAW,EAGf,GAFAv1C,KAAKgM,QAAU,EACfhM,KAAKgrB,MAAQ,EACThrB,KAAKwpC,aAAarpC,OAAS,EAE9B,IADA+C,EAAI,EACGA,EAAE,EAAIlD,KAAKwpC,aAAarpC,QAAQ,CACtC,GAAIH,KAAKwpC,aAAatmC,EAAE,KAAQlD,KAAKwpC,aAAa,GAAI,CACrD+L,GAAW,EACX,KACJ,CACIryC,GAEJ,MAEEqyC,GAAW,EAEZv1C,KAAKsE,KAAO,EACPixC,IACJv1C,KAAKsE,MAAQ,EAAEtE,KAAKwpC,aAAarpC,QAElCH,KAAK0zC,YAAYpjC,GACZilC,EAGJjlC,EAAO0U,YAAYhlB,KAAKwpC,aAAa,IAFrCl5B,EAAO0U,YAAY,GAIpB1U,EAAO0U,YAAYhlB,KAAKwpC,aAAarpC,QAChCo1C,GACJjlC,EAAOwU,iBAAiB9kB,KAAKwpC,aAE/B,EAGAtd,EAAUspB,QAAQ73B,UAAUxY,MAAQ,SAASmL,GAC5C,IAAIpN,EAMJ,IALAlD,KAAKgM,QAAU,EACfhM,KAAKgrB,MAAQ,EACbhrB,KAAKsE,KAAO,EAAE,EAAEtE,KAAK04B,cAAcv4B,OACnCH,KAAK0zC,YAAYpjC,GACjBA,EAAO0U,YAAYhlB,KAAK04B,cAAcv4B,QAClC+C,EAAE,EAAGA,EAAElD,KAAK04B,cAAcv4B,OAAQ+C,IACrCoN,EAAO0U,YAAYhlB,KAAK04B,cAAcx1B,IACtCoN,EAAO0U,YAAYhlB,KAAK2pC,cAAczmC,GAExC,EAGAgpB,EAAUupB,QAAQ93B,UAAUxY,MAAQ,SAASmL,GAC5C,IAAIolC,EAAav2C,KAAKC,IAAI,EAAG,IAAM,EAEnCY,KAAKgM,QAAUhM,KAAKgrC,oBAAsB0K,EAAa,EAAI,EAC3D11C,KAAKgrB,MAAQ,EACbhrB,KAAKsE,KAAO,EACS,IAAjBtE,KAAKgM,UACRhM,KAAKsE,MAAQ,GAEdtE,KAAK0zC,YAAYpjC,GACI,IAAjBtQ,KAAKgM,QACRsE,EAAO0W,YAAYhnB,KAAKgrC,qBAExB16B,EAAO0U,YAAYhlB,KAAKgrC,oBAE1B,EAGA9e,EAAUypB,QAAQh4B,UAAUxY,MAAQ,SAASmL,GAC5CtQ,KAAKgM,QAAU,EACfhM,KAAKsE,KAAO,EACRtE,KAAKgrB,MAAQkB,EAAUgE,6BAC1BlwB,KAAKsE,MAAQ,GAEVtE,KAAKgrB,MAAQkB,EAAUiE,wBAC1BnwB,KAAKsE,MAAQ,GAEVtE,KAAKgrB,MAAQkB,EAAUkE,uBAC1BpwB,KAAKsE,MAAQ,GAEVtE,KAAKgrB,MAAQkB,EAAUmE,wBAC1BrwB,KAAKsE,MAAQ,GAEVtE,KAAKgrB,MAAQkB,EAAUoE,yBAC1BtwB,KAAKsE,MAAQ,GAEdtE,KAAK0zC,YAAYpjC,GACjBA,EAAO0U,YAAYhlB,KAAKkrC,UACpBlrC,KAAKgrB,MAAQkB,EAAUgE,4BAC1B5f,EAAO0W,YAAYhnB,KAAKmrC,kBAErBnrC,KAAKgrB,MAAQkB,EAAUiE,uBAC1B7f,EAAO0U,YAAYhlB,KAAKorC,kCAErBprC,KAAKgrB,MAAQkB,EAAUkE,sBAC1B9f,EAAO0U,YAAYhlB,KAAKqrC,yBAErBrrC,KAAKgrB,MAAQkB,EAAUmE,uBAC1B/f,EAAO0U,YAAYhlB,KAAKsrC,qBAErBtrC,KAAKgrB,MAAQkB,EAAUoE,wBAC1BhgB,EAAO0U,YAAYhlB,KAAKurC,qBAE1B,EAGArf,EAAU0pB,QAAQj4B,UAAUxY,MAAQ,SAASmL,GAC5CtQ,KAAKgM,QAAU,EAEfhM,KAAKsE,KAAO,GACZtE,KAAK0zC,YAAYpjC,GACjBA,EAAO0U,YAAYhlB,KAAKohC,eACxB9wB,EAAO0U,YAAYhlB,KAAKqhC,mBACxB/wB,EAAO0U,YAAYhlB,KAAKkrC,UACxB56B,EAAO0U,YAAY,GACnB1U,EAAO0U,YAAYhlB,KAAKwb,UACxBlL,EAAO0U,YAAY,GACnB1U,EAAO0U,YAAY,GACnB1U,EAAOoU,WAAW1kB,KAAKgsC,OACvB17B,EAAOoU,WAAW1kB,KAAK+oC,iBACvBz4B,EAAOoU,WAAW1kB,KAAK0hC,QAAQ,GAC/BpxB,EAAO6U,YAAY,GACnB7U,EAAO+T,gBAAgBrkB,KAAK2hC,QAC5BrxB,EAAO0U,YAAYhlB,KAAKgzB,OACxB1iB,EAAO0U,YAAYhlB,KAAKizB,OACzB,EAGA/G,EAAU2pB,QAAQl4B,UAAUxY,MAAQ,SAASmL,GAC5CtQ,KAAKgM,QAAU,EACfhM,KAAKgrB,MAAQ,EACbhrB,KAAKsE,KAAO,GACZtE,KAAK0zC,YAAYpjC,GACjBA,EAAO0U,YAAYhlB,KAAKkrC,UACxB56B,EAAO0U,YAAYhlB,KAAKorC,kCACxB96B,EAAO0U,YAAYhlB,KAAKqrC,yBACxB/6B,EAAO0U,YAAYhlB,KAAKsrC,qBACxBh7B,EAAO0U,YAAYhlB,KAAKurC,qBACzB,EAGArf,EAAU4pB,QAAQn4B,UAAUxY,MAAQ,SAASmL,GAC5CtQ,KAAKgM,QAAU,EACfhM,KAAKsE,KAAO,EACRtE,KAAKgrB,MAAQkB,EAAUuE,yBAC1BzwB,KAAKsE,MAAQ,GAEVtE,KAAKgrB,MAAQkB,EAAUwE,wBAC1B1wB,KAAKsE,MAAQ,GAEVtE,KAAKgrB,MAAQkB,EAAUyE,sBAC1B3wB,KAAKsE,MAAQ,EAAEtE,KAAKusC,gBAAgBpsC,QAEjCH,KAAKgrB,MAAQkB,EAAU0E,kBAC1B5wB,KAAKsE,MAAQ,EAAEtE,KAAKypC,YAAYtpC,QAE7BH,KAAKgrB,MAAQkB,EAAU2E,mBAC1B7wB,KAAKsE,MAAQ,EAAEtE,KAAKwsC,aAAarsC,QAE9BH,KAAKgrB,MAAQkB,EAAU4E,wBAC1B9wB,KAAKsE,MAAQ,EAAEtE,KAAKysC,+BAA+BtsC,QAEpDH,KAAK0zC,YAAYpjC,GACjBA,EAAO0U,YAAYhlB,KAAK8hC,cACpB9hC,KAAKgrB,MAAQkB,EAAUuE,yBAC1BzwB,KAAK+1C,qBAAuBzlC,EAAOsN,cACnCtN,EAAOiU,WAAWvkB,KAAKqsC,cAEpBrsC,KAAKgrB,MAAQkB,EAAUwE,uBAC1BpgB,EAAO0U,YAAYhlB,KAAKssC,oBAEzB,IAAK,IAAIppC,EAAI,EAAGA,EAAIlD,KAAK8hC,aAAc5+B,IAClClD,KAAKgrB,MAAQkB,EAAUyE,qBAC1BrgB,EAAO0U,YAAYhlB,KAAKusC,gBAAgBrpC,IAErClD,KAAKgrB,MAAQkB,EAAU0E,iBAC1BtgB,EAAO0U,YAAYhlB,KAAKypC,YAAYvmC,IAEjClD,KAAKgrB,MAAQkB,EAAU2E,kBAC1BvgB,EAAO0U,YAAYhlB,KAAKwsC,aAAatpC,IAElClD,KAAKgrB,MAAQkB,EAAU4E,wBACL,IAAjB9wB,KAAKgM,QACRsE,EAAO0U,YAAYhlB,KAAKysC,+BAA+BvpC,IAEvDoN,EAAOiU,WAAWvkB,KAAKysC,+BAA+BvpC,IAI1D,EAGAgpB,EAAU,WAAWvO,UAAUxY,MAAQ,SAASmL,GAC/CtQ,KAAKgM,QAAU,EACXhM,KAAK+I,UACR/I,KAAKgrB,MAAQ,EACbhrB,KAAKsE,KAAOtE,KAAK+I,SAAS5I,OAAO,IAEjCH,KAAKgrB,MAAQ,EACbhrB,KAAKsE,KAAO,GAEbtE,KAAK0zC,YAAYpjC,GACbtQ,KAAK+I,UACRuH,EAAOgW,aAAatmB,KAAK+I,SAE3B,EAGAmjB,EAAU,WAAWvO,UAAUxY,MAAQ,SAASmL,GAC/CtQ,KAAKgM,QAAU,EACfhM,KAAKgrB,MAAQ,EACbhrB,KAAKsE,KAAOtE,KAAKoK,KAAKjK,OAAO,GAAGH,KAAK+I,SAAW/I,KAAK+I,SAAS5I,OAAO,EAAI,GACzEH,KAAK0zC,YAAYpjC,GACjBA,EAAOgW,aAAatmB,KAAKoK,MACrBpK,KAAK+I,UACRuH,EAAOgW,aAAatmB,KAAK+I,SAE3B,EAGAmjB,EAAU8pB,QAAQr4B,UAAUxY,MAAQ,SAASmL,GAE5CtQ,KAAKgM,QAAU,EACfhM,KAAKgrB,MAAQ,EACbhrB,KAAKsE,KAAO,EACZtE,KAAK0zC,YAAYpjC,GACjBA,EAAO6U,YAAYnlB,KAAKquC,cACxB/9B,EAAO2U,iBAAiBjlB,KAAKsuC,QAC9B,EAOApiB,EAAU6nB,QAAQp2B,UAAUs4B,OAAS,SAASC,GAC7C,IAAIhzC,EAAG6f,EAAGC,EAEV,IADAA,EAAI,EACC9f,EAAI,EAAGA,EAAIlD,KAAK04B,cAAcv4B,OAAQ+C,IAC1C,IAAK6f,EAAI,EAAGA,EAAI/iB,KAAK04B,cAAcx1B,GAAI6f,IACtCmzB,EAAQlzB,GAAGmzB,IAAMD,EAAQlzB,GAAGozB,IAAMp2C,KAAK24B,eAAez1B,GACtD8f,GAGH,EAEAkJ,EAAUspB,QAAQ73B,UAAUs4B,OAAS,SAASC,GAC7C,IAAIhzC,EAAG6f,EAAGC,EAEV,IADAA,EAAI,EACC9f,EAAI,EAAGA,EAAIlD,KAAK04B,cAAcv4B,OAAQ+C,IAC1C,IAAK6f,EAAI,EAAGA,EAAI/iB,KAAK04B,cAAcx1B,GAAI6f,IAErCmzB,EAAQlzB,GAAGozB,IADF,IAANpzB,EACc,EAEAkzB,EAAQlzB,EAAE,GAAGozB,IAAMp2C,KAAK2pC,cAAczmC,GAExD8f,GAGH,EAEAkJ,EAAU+oB,QAAQt3B,UAAUs4B,OAAS,SAASC,GAC7C,IAAIhzC,EACJ,IAAKA,EAAI,EAAGA,EAAIlD,KAAK23B,cAAcx3B,OAAQ+C,IAC1CgzC,EAAQhzC,GAAGrD,OAASG,KAAK23B,cAAcz0B,EAEzC,EAEAgpB,EAAUgpB,QAAQv3B,UAAUs4B,OAAS,SAASC,GAC7C,IAAIhzC,EAAG6f,EAAGC,EAAGkI,EAAGjd,EAGhB,IAFAid,EAAI,EACJjd,EAAI,EACC/K,EAAI,EAAGA,EAAIlD,KAAKipC,YAAY9oC,OAAQ+C,IACxC,IAAK6f,EAAI,EAAGA,GAAK7f,EAAE,EAAIlD,KAAKipC,YAAY9oC,OAASH,KAAKipC,YAAY/lC,EAAE,GAAKmzC,KAAWtzB,IAEnF,IADA9U,IACK+U,EAAI,EAAGA,EAAIhjB,KAAKkpC,kBAAkBhmC,GAAI8f,IAAK,CAC/C,IAAIkzB,EAAQhrB,GAIX,OAHAgrB,EAAQhrB,GAAGorB,kBAAoBt2C,KAAKmpC,yBAAyBjmC,GAC7DgzC,EAAQhrB,GAAGqrB,YAActoC,EAI1Bid,GACJ,CAGA,EAEAgB,EAAUopB,QAAQ33B,UAAUs4B,OAAS,SAASC,GAC7C,IAAIhzC,EACJ,IAAKA,EAAI,EAAGA,EAAIlD,KAAKwpC,aAAarpC,OAAQ+C,IACzCgzC,EAAQhzC,GAAGoB,KAAOtE,KAAKwpC,aAAatmC,EAEtC,EAGAgpB,EAAUsqB,sBAAwB,CAAE,QAAS,UAAW,aAAc,aAC9D,QAAS,aAAc,UAAW,eAClC,cAAe,SAAU,YAAa,aACtC,MAAO,UAEftqB,EAAUuqB,gCAAkC,CAAE,oBAAqB,SAAU,UAAW,gBAAiB,gBACzG,cAAe,oBAAqB,eAAgB,gBAAiB,iBAAkB,2BAA4B,mBAEnHvqB,EAAUwqB,eAAiB,SAASC,EAAOC,GAC1C,GAAID,IAAUC,EAAO,OAAO,EAC5B,IAAI3lB,EACJ,IAAKA,KAAQ0lB,EACZ,KAAIzqB,EAAUsqB,sBAAsBxkB,QAAQf,IAAQ,GAIzC0lB,EAAM1lB,aAAiB/E,EAAUiB,KAAOypB,EAAM3lB,aAAiB/E,EAAUiB,UAElD,IAAhBwpB,EAAM1lB,SAAgD,IAAhB2lB,EAAM3lB,IAE5B,mBAAhB0lB,EAAM1lB,IAA+C,mBAAhB2lB,EAAM3lB,IAG3D0lB,EAAMpoB,aAAeooB,EAAMpoB,YAAYyD,QAAQf,EAAK3wB,MAAM,EAAE,QAC5Ds2C,EAAMroB,aAAeqoB,EAAMroB,YAAYyD,QAAQf,EAAK3wB,MAAM,EAAE,KAAM,GAGtD,SAAT2wB,GAA4B,UAATA,GAA6B,SAATA,GAA4B,kBAATA,GAAqC,sBAATA,GAE/E/E,EAAUuqB,gCAAgCzkB,QAAQf,OAGxD0lB,EAAM1lB,KAAU2lB,EAAM3lB,IACzB,OAAO,EAKX,OAAO,CACR,EAEA/E,EAAU2qB,SAAW,SAASF,EAAOC,GACpC,IAAK1qB,EAAUwqB,eAAeC,EAAOC,GACpC,OAAO,EAER,IAAK,IAAI7zB,EAAI,EAAGA,EAAImJ,EAAUsqB,sBAAsBr2C,OAAQ4iB,IAAK,CAChE,IAAI3Y,EAAO8hB,EAAUsqB,sBAAsBzzB,GAC3C,GAAI4zB,EAAMvsC,IAASwsC,EAAMxsC,KACnB8hB,EAAU2qB,SAASF,EAAMvsC,GAAOwsC,EAAMxsC,IAC1C,OAAO,CAGX,CACC,OAAO,CACR,EAMA,IAAI0sC,EAAe,WACnB,EAEAA,EAAan5B,UAAUo5B,YAAc,SAAS3xC,GAC7C,IAAI4xC,EAAMC,EACN3mC,EAAS,IAAIgN,EAAalY,EAAKxF,QAEnC,IADAo3C,EAAO,IACC1mC,EAAO+N,UACd44B,EAAM/qB,EAAUsF,YAAYlhB,GAAQ,IAC5BtF,OAASkhB,EAAUG,IAAuB,SAAjB4qB,EAAI1pB,IAAIxf,MACxCipC,EAAKnuC,KAAKouC,EAAI1pB,KAGhB,OAAOypB,CACR,EAEAF,EAAan5B,UAAUu5B,QAAU,SAAUC,EAAWC,EAAShyC,GAC9D,SAASoX,EAAI66B,EAAGrkB,EAAOskB,GAGrB,OAFAA,EAAIA,GAAK,KACTD,GAAQ,IACCl3C,QAAU6yB,EAAQqkB,EAAI,IAAIzwB,MAAMoM,EAAQqkB,EAAEl3C,OAAS,GAAG0U,KAAKyiC,GAAKD,CAC5E,CACC,SAASE,EAAeC,GACvB,IAAIvlC,EAAI9S,KAAK2d,MAAM06B,EAAM,MACrBvpC,EAAI9O,KAAK2d,OAAO06B,EAAU,KAAFvlC,GAAQ,IAChC+M,EAAI7f,KAAK2d,MAAM06B,EAAU,KAAFvlC,EAAW,GAAFhE,GAChC7F,EAAKjJ,KAAK2d,MAAkC,KAA3B06B,EAAU,KAAFvlC,EAAW,GAAFhE,EAAO+Q,IAC7C,OAAUxC,EAAIvK,EAAG,GAAG,IAAIuK,EAAIvO,EAAE,GAAG,IAAIuO,EAAIwC,EAAG,GAAG,IAAIxC,EAAIpU,EAAI,EAC7D,CAGC,IAFA,IAAI4uC,EAAOh3C,KAAK+2C,YAAY3xC,GACxBqyC,EAAS,GACJv0C,EAAI,EAAGA,EAAI8zC,EAAK72C,OAAQ+C,IAAK,CACrC,IAAIw0C,EAASV,EAAK9zC,GAClBu0C,GAAUF,EAAeJ,GAAW,WAAQI,EAAeH,GAAS,OACpEK,GAAUC,EAAOC,KAAKr9B,IACxB,CACC,OAAOm9B,CACR,EAEA,IAAIG,EAAuB,WAC3B,EAEAA,EAAqBj6B,UAAUo5B,YAAc,SAASc,GACrD,IACI30C,EADA4K,EAAM,CAEVA,UAAgB,IACZwC,EAAS,IAAIgN,EAAau6B,EAAOzyC,KAAKxF,QAC1C,GAAKi4C,EAAOxN,YAA2C,IAA7BwN,EAAOxN,WAAWlqC,QAI3C,GADA2N,EAAIgqC,eAAiBxnC,EAAOyO,WAAW84B,EAAOxN,WAAW,GAAG/lC,MACxDuzC,EAAOxN,WAAWlqC,OAAS,EAC9B,IAAK+C,EAAI,EAAGA,EAAI20C,EAAOxN,WAAWlqC,OAAQ+C,IACzC4K,EAAIiqC,UAAU70C,GAAKoN,EAAOoP,eAAem4B,EAAOxN,WAAWnnC,GAAGoB,WALhEwJ,EAAIgqC,eAAiBxnC,EAAOyO,WAAW84B,EAAOzyC,KAAKjF,QAYpD,MAH2B,oBAAf63C,YACXlqC,EAAIgW,UAAY,IAAIk0B,WAAaC,gBAAgBnqC,EAAIgqC,eAAgB,oBAE/DhqC,CACR,EAEA,IAAIoqC,EAAgB,WACpB,EAEAA,EAAcv6B,UAAUo5B,YAAc,SAASc,GAI9C,OAFa,IAAIv6B,EAAau6B,EAAOzyC,KAAKxF,QACtBmf,WAAW84B,EAAOzyC,KAAKjF,OAE5C,EAEA+3C,EAAcv6B,UAAUw6B,YAAc,SAAS/yC,GAC9C,IACIkL,EAAS,IAAIgN,EAAalY,EAAKxF,QAGnC,OAFA0Q,EAAOuO,aACMvO,EAAO4O,aAErB,EAGC7B,eAAuBy5B,EACvBz5B,uBAA+Bu6B,EAC/Bv6B,gBAAwB66B,EAOzB,IAAIE,EAAU,SAAU9nC,GAEvBtQ,KAAKsQ,OAASA,GAAU,IAAI6W,EAE5BnnB,KAAK0tB,MAAQ,GAEb1tB,KAAKq4C,MAAQ,GAEbr4C,KAAKs4C,MAAQ,GAEbt4C,KAAKu4C,eAAgB,EAErBv4C,KAAKw4C,gBAAiB,EAEtBx4C,KAAKy4C,YAAc,KAEnBz4C,KAAK04C,eAAgB,EAErB14C,KAAK24C,QAAU,KAEf34C,KAAK44C,WAAY,EAEjB54C,KAAK64C,UAAY,KAEjB74C,KAAK84C,UAAY,KAEjB94C,KAAKwV,QAAU,KAEfxV,KAAK+4C,iBAAkB,EAEvB/4C,KAAKg5C,iBAAmB,GAExBh5C,KAAKi5C,gBAAkB,GAEvBj5C,KAAKk5C,4BAA6B,EAElCl5C,KAAKm5C,yBAA0B,EAE/Bn5C,KAAKo5C,eAAiB,EAEtBp5C,KAAKq5C,eAAgB,EAErBr5C,KAAKs+B,MAAQ,GAEbt+B,KAAKs5C,cAAgB,GAErBt5C,KAAKu5C,OAAS,KAEdv5C,KAAKw5C,UAAW,CACjB,EAEApB,EAAQz6B,UAAU87B,kBAAoB,SAASvvC,EAAIwvC,EAAMpgC,GACxD,IAAIqgC,EAAO35C,KAAK45C,aAAa1vC,GAC7B,GAAIyvC,EAAM,CACT,IAAIE,EAAY,CAAA,EAChB75C,KAAKg5C,iBAAiBnwC,KAAKgxC,GAC3BA,EAAU3vC,GAAKA,EACf2vC,EAAUH,KAAOA,EACjBG,EAAUF,KAAOA,EACjBA,EAAKG,WAAa,EAClBD,EAAUE,cAAgB,KAC1BF,EAAUG,WAAa,IACvBH,EAAUI,eAAgB,EACtB3gC,IACCA,EAAQ4gC,YAAWL,EAAUG,WAAa1gC,EAAQ4gC,WAClD5gC,EAAQ2gC,gBAAeJ,EAAUI,cAAgB3gC,EAAQ2gC,eAEhE,CACA,EAEA7B,EAAQz6B,UAAUw8B,oBAAsB,SAASjwC,GAEhD,IADA,IAAIkf,GAAQ,EACHlmB,EAAI,EAAGA,EAAIlD,KAAKg5C,iBAAiB74C,OAAQ+C,IACjClD,KAAKg5C,iBAAiB91C,GACxBgH,IAAMA,IACnBkf,EAAQlmB,GAGNkmB,GAAQ,GACXppB,KAAKg5C,iBAAiB5wB,OAAOgB,EAAO,EAEtC,EAEAgvB,EAAQz6B,UAAUy8B,qBAAuB,SAASlwC,EAAIwvC,EAAMpgC,GAC3D,IAAIqgC,EAAO35C,KAAK45C,aAAa1vC,GAC7B,GAAIyvC,EAAM,CACT,IAAIU,EAAe,CAAA,EACnBr6C,KAAKi5C,gBAAgBpwC,KAAKwxC,GAC1BA,EAAanwC,GAAKA,EAClBmwC,EAAaX,KAAOA,EACpBW,EAAaV,KAAOA,EACpBA,EAAKG,WAAa,EAClBO,EAAaL,WAAa,IAC1BK,EAAanE,QAAU,GACnB58B,GACCA,EAAQ4gC,YAAWG,EAAaL,WAAa1gC,EAAQ4gC,UAE5D,CACA,EAEA9B,EAAQz6B,UAAU28B,uBAAyB,SAASpwC,GAEnD,IADA,IAAIkf,GAAQ,EACHlmB,EAAI,EAAGA,EAAIlD,KAAKi5C,gBAAgB94C,OAAQ+C,IAC7BlD,KAAKi5C,gBAAgB/1C,GACvBgH,IAAMA,IACtBkf,EAAQlmB,GAGNkmB,GAAQ,GACXppB,KAAKi5C,gBAAgB7wB,OAAOgB,EAAO,EAErC,EAEAgvB,EAAQz6B,UAAU4M,MAAQ,WAEzB,IAAIwH,EACAxE,EAGJ,IAAIvtB,KAAKu6C,sBACHv6C,KAAKu6C,uBAKX,OAAa,CAEZ,GAAIv6C,KAAKw6C,mBAAqBx6C,KAAKw6C,oBAAqB,CACvD,GAAIx6C,KAAKy6C,wBACR,SAEA,MAEJ,CAKG,GAJIz6C,KAAK06C,mBACR16C,KAAK06C,qBAEN3oB,EAAM7F,EAAUsF,YAAYxxB,KAAKsQ,QApBT,IAqBhBtF,OAASkhB,EAAUE,oBAAqB,CAC/C,GAAIpsB,KAAK26C,qBAAsB,CAC9B,GAAI36C,KAAK26C,qBAAqB5oB,GAC7B,SAEA,MAEN,CACK,MAEL,CACI,IAAIH,EAOJ,OAJAA,EAAyB,UADzBrE,EAAMwE,EAAIxE,KACMxf,KAAkBwf,EAAIxf,KAAOwf,EAAIS,KAEjDhuB,KAAK0tB,MAAM7kB,KAAK0kB,GAERqE,GACP,IAAK,OACJ5xB,KAAKq4C,MAAMxvC,KAAK0kB,GAChB,MACD,IAAK,OACJvtB,KAAKs4C,MAAMzvC,KAAK0kB,GAChB,MACD,IAAK,OACJvtB,KAAKw4C,gBAAiB,EACI,IAAtBx4C,KAAKq4C,MAAMl4C,SACdH,KAAKu4C,eAAgB,GAIvB,aACwB9zC,IAAnBzE,KAAK4xB,IACR/V,EAAIpG,KAAK,UAAW,0BAA0Bmc,EAAS,oCAExD5xB,KAAK4xB,GAAYrE,EAGfvtB,KAAK46C,iBACR56C,KAAK46C,gBAAgBrtB,EAAKwE,EAI/B,CACA,EAEAqmB,EAAQz6B,UAAUk9B,YAAc,SAAU3yB,GACzC,GAAIA,QACH,KAAM,uCAEP,QAAqBzjB,IAAjByjB,EAAGT,UACN,KAAM,wCAEP,OAAsB,IAAlBS,EAAGlmB,YACN6Z,EAAIpG,KAAK,UAAW,qCAAqCyS,EAAGT,UAAU,KACtEznB,KAAKsQ,OAAOoX,kBACL,IAER7L,EAAIK,KAAK,UAAW,iCAAiCgM,EAAGT,UAAU,KAGlES,EAAGD,UAAY,EACfjoB,KAAKsQ,OAAOgX,aAAaY,GACzBloB,KAAKsQ,OAAOoX,mBAEP1nB,KAAKsQ,OAAOiX,gBAChB1L,EAAIpG,KAAK,UAAW,+BACb,GAGT,EAIA2iC,EAAQz6B,UAAUm9B,aAAe,SAAS5yB,EAAI6yB,GAC7C,IAAIC,EACJ,GAAKh7C,KAAK66C,YAAY3yB,GA8EtB,OAzEAloB,KAAKuqB,QAGDvqB,KAAKw4C,iBAAmBx4C,KAAK04C,gBAChC14C,KAAK04C,eAAgB,EACjB14C,KAAKy4C,aAAaz4C,KAAKy4C,eAGxBz4C,KAAKi7C,MAIHj7C,KAAK+4C,kBACT/4C,KAAKk7C,mBACLl7C,KAAK+4C,iBAAkB,GAIxB/4C,KAAKm7C,oBAIDn7C,KAAK24C,UAAY34C,KAAK44C,YACzB54C,KAAK44C,WAAY,EACjB54C,KAAK24C,QAAQ34C,KAAKo7C,YAInBp7C,KAAKq7C,eAAeN,GAGhB/6C,KAAKs7C,kBACRN,EAAgBh7C,KAAKs7C,iBACrBt7C,KAAKs7C,sBAAmB72C,GAExBu2C,EAAgBh7C,KAAKu7C,kBAElBv7C,KAAKsQ,OAAOmZ,0BACfuxB,EAAgBh7C,KAAKsQ,OAAOmZ,wBAAwBuxB,KAMpDA,EAHGh7C,KAAKu7C,kBAGQv7C,KAAKu7C,kBAGL,EAGdv7C,KAAKw7C,MACJx7C,KAAKu5C,SAAWv5C,KAAKw5C,WACxBx5C,KAAKu5C,OAAOv5C,KAAKw7C,MACjBx7C,KAAKw5C,UAAW,GAGdx5C,KAAKy7C,OACJz7C,KAAK07C,kBAAoB17C,KAAKq5C,gBACjCr5C,KAAK07C,kBACL17C,KAAKq5C,eAAgB,GAElBr5C,KAAK27C,cACR37C,KAAK27C,aAAa37C,KAAK47C,SAIrB57C,KAAKsQ,OAAOmY,eACf5M,EAAIK,KAAK,UAAW,sCAAsCgM,EAAGT,UAAU,gEAAgEuzB,GACvIh7C,KAAKsQ,OAAOoX,iBACZ1nB,KAAKsQ,OAAOmY,eACZzoB,KAAKsQ,OAAOoX,gBAAe,GAC3B7L,EAAIK,KAAK,UAAW,+BAA+Blc,KAAK67C,+BAElDb,CACR,EAEA5C,EAAQz6B,UAAUy9B,QAAU,WAC3B,IAAIl4C,EAAG6f,EAEH42B,EACAxjC,EACAixB,EACA0U,EAJAC,EAAQ,CAAA,EAKRC,EAAS,IAAIlgC,KAAK,wBAAwBmgC,UAE9C,GAAIj8C,KAAKi7C,KAsBR,IArBAc,EAAMG,SAAU,EAChBH,EAAMvgC,SAAWxb,KAAKi7C,KAAKkB,KAAK3gC,SAChCugC,EAAM9gB,UAAYj7B,KAAKi7C,KAAKkB,KAAKlhB,UACjC8gB,EAAMK,aAAkC,MAAlBp8C,KAAKi7C,KAAKoB,KAC5BN,EAAMK,cAAgBp8C,KAAKi7C,KAAKoB,KAAKC,OACxCP,EAAMza,kBAAoBthC,KAAKi7C,KAAKoB,KAAKC,KAAKhb,mBAE/Cya,EAAMxD,cAAgBv4C,KAAKu4C,cAC3BwD,EAAMQ,OAA4B,MAAlBv8C,KAAKi7C,KAAKuB,KAC1BT,EAAMU,OAAS,GACfV,EAAMU,OAAO5zC,KAAK7I,KAAK08C,KAAKngB,aAC5Bwf,EAAMU,OAASV,EAAMU,OAAO90B,OAAO3nB,KAAK08C,KAAKjgB,mBAC7Csf,EAAMY,QAAU,IAAI7gC,KAAKkgC,EAAmC,IAA7Bh8C,KAAKi7C,KAAKkB,KAAK/a,eAC9C2a,EAAMa,SAAW,IAAI9gC,KAAKkgC,EAAuC,IAAjCh8C,KAAKi7C,KAAKkB,KAAK9a,mBAC/C0a,EAAMc,OAAS,GACfd,EAAMe,YAAc,GACpBf,EAAMgB,YAAc,GACpBhB,EAAMiB,eAAiB,GACvBjB,EAAMkB,eAAiB,GACvBlB,EAAMmB,WAAa,GACnBnB,EAAMoB,YAAc,GACfj6C,EAAI,EAAGA,EAAIlD,KAAKi7C,KAAKmC,MAAMj9C,OAAQ+C,IAAK,CAQ5C,GANA44C,GADAnC,EAAO35C,KAAKi7C,KAAKmC,MAAMl6C,IACJm6C,KAAKC,KAAKC,KAAKC,KAAK9iB,QAAQ,GAC/CvkB,EAAQ,CAAA,EACR4lC,EAAMc,OAAOh0C,KAAKsN,GAClBA,EAAMjM,GAAKyvC,EAAK8D,KAAKvS,SACrB/0B,EAAM/L,KAAOuvC,EAAK0D,KAAKK,KAAKtzC,KAC5B+L,EAAM6pB,WAAa,GACf2Z,EAAKgE,KACR,IAAK56B,EAAI,EAAGA,EAAI42B,EAAKgE,KAAKjwB,MAAMvtB,OAAQ4iB,IACvCqkB,EAAM,CAAA,EACNjxB,EAAM6pB,WAAWn3B,KAAKu+B,GACtBA,EAAIr5B,KAAO4rC,EAAKgE,KAAKjwB,MAAM3K,GAAGhV,KAC9Bq5B,EAAI+E,UAAYwN,EAAKgE,KAAKjwB,MAAM3K,GAAGopB,UAGjCwN,EAAKiE,OACRznC,EAAM0nC,MAAQlE,EAAKiE,KAAKE,KAAKpjB,SAE9BvkB,EAAMwmC,QAAU,IAAI7gC,KAAKkgC,EAA8B,IAAxBrC,EAAK8D,KAAKrc,eACzCjrB,EAAMymC,SAAW,IAAI9gC,KAAKkgC,EAAkC,IAA5BrC,EAAK8D,KAAKpc,mBAC1ClrB,EAAM4nC,eAAiBpE,EAAK8D,KAAKjiC,SACjCrF,EAAM6nC,gBAAkBjC,EAAM9gB,UAC9B9kB,EAAM61B,MAAQ2N,EAAK8D,KAAKzR,MACxB71B,EAAM4yB,gBAAkB4Q,EAAK8D,KAAK1U,gBAClC5yB,EAAMurB,OAASiY,EAAK8D,KAAK/b,OACzBvrB,EAAMwrB,OAASgY,EAAK8D,KAAK9b,OACzBxrB,EAAM8nC,YAActE,EAAK8D,KAAKzqB,MAAK,MACnC7c,EAAM+nC,aAAevE,EAAK8D,KAAKxqB,OAAM,MACrC9c,EAAM8kB,UAAY0e,EAAK0D,KAAKc,KAAKljB,UACjC9kB,EAAMioC,UAAYzE,EAAK0D,KAAKC,KAAKC,KAAKc,KACtCloC,EAAMqF,SAAWm+B,EAAK0D,KAAKc,KAAK3iC,SAChCrF,EAAMmoC,iBAAmB3E,EAAK2E,iBAC9BnoC,EAAMooC,MAAQzC,EAAY7K,WAC1B96B,EAAMqoC,KAAQ7E,EAAK8E,MAAQ9E,EAAK8E,KAAKC,MAAMv+C,OAASw5C,EAAK8E,KAAKC,MAAM,GAAK,CAAEpe,UAAW,GAAIt9B,MAAO,IACjGmT,EAAM+b,SAAYynB,EAAK0D,KAAKsB,KAAOhF,EAAK0D,KAAKsB,KAAKhkB,kBAAoBgf,EAAK0D,KAAKc,KAAK/rB,eACrFjc,EAAM6jC,WAAaL,EAAKzD,QAAQ/1C,OAChCgW,EAAM7R,KAAOq1C,EAAKiF,aAClBzoC,EAAM0oC,QAAsB,EAAX1oC,EAAM7R,KAAO6R,EAAM8kB,UAAW9kB,EAAMmoC,iBACjDxC,EAAYjL,WACf16B,EAAMpI,KAAO,QACbguC,EAAMe,YAAYj0C,KAAKsN,GACvBA,EAAM2oC,MAAQ,CAAA,EACd3oC,EAAM2oC,MAAMC,YAAcjD,EAAYzK,gBACtCl7B,EAAM2oC,MAAMvrB,cAAgBuoB,EAAY1K,kBACxCj7B,EAAM2oC,MAAMrV,YAAcqS,EAAYxK,iBAC5BwK,EAAYlL,WACtBz6B,EAAMpI,KAAO,QACbguC,EAAMgB,YAAYl0C,KAAKsN,GACvBA,EAAM6oC,MAAQ,CAAA,EACd7oC,EAAM6oC,MAAMhsB,MAAQ8oB,EAAY5K,WAChC/6B,EAAM6oC,MAAM/rB,OAAS6oB,EAAY3K,aACvB2K,EAAYhL,cACtB36B,EAAMpI,KAAO,YACbguC,EAAMiB,eAAen0C,KAAKsN,IAChB2lC,EAAY9K,UACtB76B,EAAMpI,KAAO,WACbguC,EAAMmB,WAAWr0C,KAAKsN,IACZ2lC,EAAY/K,cACtB56B,EAAMpI,KAAO,WACbguC,EAAMkB,eAAep0C,KAAKsN,KAE1BA,EAAMpI,KAAO,WACbguC,EAAMoB,YAAYt0C,KAAKsN,GAE3B,MAEE4lC,EAAMG,SAAU,EAGjB,GADAH,EAAMkD,KAAO,GACTlD,EAAMG,SAAWH,EAAMc,OAAQ,CAQlC,IAPId,EAAMgB,aAAehB,EAAMgB,YAAY58C,OAAS,EACnD47C,EAAMkD,MAAQ,sBACJlD,EAAMe,aAAef,EAAMe,YAAY38C,OAAS,EAC1D47C,EAAMkD,MAAQ,sBAEdlD,EAAMkD,MAAQ,4BAEV/7C,EAAI,EAAGA,EAAI64C,EAAMc,OAAO18C,OAAQ+C,IAC1B,IAANA,IAAS64C,EAAMkD,MAAQ,KAC3BlD,EAAMkD,MAAOlD,EAAMc,OAAO35C,GAAGq7C,MAE9BxC,EAAMkD,MAAQ,gBACdlD,EAAMkD,MAAQj/C,KAAK08C,KAAKjgB,kBAAkB5nB,OAC1CknC,EAAMkD,MAAQ,GAChB,CACC,OAAOlD,CACR,EAEA3D,EAAQz6B,UAAUuhC,8BAAgC,SAAUrH,GACtDA,IAGD73C,KAAKs7C,iBACRt7C,KAAKs7C,iBAAmBn8C,KAAK+e,IAAI25B,EAAOh4C,OAAOg4C,EAAOsH,YAAYn/C,KAAKs7C,kBAEvEt7C,KAAKs7C,iBAAmBzD,EAAOh4C,OAAOg4C,EAAOsH,YAE/C,EAEA/G,EAAQz6B,UAAU09B,eAAiB,SAASN,GAC3C,IAAI73C,EACAy2C,EACJ,GAAK35C,KAAKm5C,wBAAV,CAKA,GAAIn5C,KAAKk5C,4BAAiD,OAAnBl5C,KAAK64C,UAC3C,IAAK31C,EAAI,EAAGA,EAAIlD,KAAKg5C,iBAAiB74C,OAAQ+C,IAAK,CAClD,IAAIk8C,EAAWp/C,KAAKg5C,iBAAiB91C,GAErC,IADAy2C,EAAOyF,EAASzF,KACTA,EAAKG,WAAaH,EAAKzD,QAAQ/1C,QAAUH,KAAKm5C,yBAAyB,CAG7Et9B,EAAII,MAAM,UAAW,qCAAqCmjC,EAASl1C,GAAI,eAAeyvC,EAAKG,YAC3F,IAAI51C,EAASlE,KAAKq/C,eAAeD,EAASl1C,GAAIyvC,EAAKG,WAAYsF,EAASrF,eACxE,IAAI71C,EAKH,MAID,GARCk7C,EAASrF,cAAgB71C,EACzBy1C,EAAKG,cAOFH,EAAKG,WAAasF,EAASpF,aAAe,GAAMe,GAAQpB,EAAKG,YAAcH,EAAKzD,QAAQ/1C,UAC3F0b,EAAIK,KAAK,UAAW,qCAAqCkjC,EAASl1C,GAAG,iBAAiB/K,KAAKoc,IAAI,EAAEo+B,EAAKG,WAAWsF,EAASpF,YAAY,KAAKL,EAAKG,WAAW,GAAG,KAC9Jj+B,EAAIK,KAAK,UAAW,+BAA+Blc,KAAK67C,8BACpD77C,KAAK64C,WACR74C,KAAK64C,UAAUuG,EAASl1C,GAAIk1C,EAAS1F,KAAM0F,EAASrF,cAAcn6C,OAAQ+5C,EAAKG,WAAaiB,GAAQpB,EAAKG,YAAcH,EAAKzD,QAAQ/1C,QAGrIi/C,EAASrF,cAAgB,KACrBqF,IAAap/C,KAAKg5C,iBAAiB91C,IAEtC,KAGN,CACA,CAGC,GAAuB,OAAnBlD,KAAK84C,UAGR,IAAK51C,EAAI,EAAGA,EAAIlD,KAAKi5C,gBAAgB94C,OAAQ+C,IAAK,CACjD,IAAIo8C,EAAct/C,KAAKi5C,gBAAgB/1C,GAEvC,IADAy2C,EAAO2F,EAAY3F,KACZA,EAAKG,WAAaH,EAAKzD,QAAQ/1C,QAAUH,KAAKm5C,yBAAyB,CAC7Et9B,EAAII,MAAM,UAAW,uBAAuBqjC,EAAYp1C,GAAI,YAAYyvC,EAAKG,YAC7E,IAAIjC,EAAS73C,KAAKu/C,UAAU5F,EAAMA,EAAKG,YACvC,IAAIjC,EAGG,CACN73C,KAAKk/C,8BAA8BvF,EAAKzD,QAAQyD,EAAKG,aACrD,KACL,CACI,GANCH,EAAKG,aACLwF,EAAYpJ,QAAQrtC,KAAKgvC,IAKtB8B,EAAKG,WAAawF,EAAYtF,aAAe,GAAKL,EAAKG,YAAcH,EAAKzD,QAAQ/1C,UACrF0b,EAAII,MAAM,UAAW,6BAA6BqjC,EAAYp1C,GAAG,eAAeyvC,EAAKG,YACjF95C,KAAK84C,WACR94C,KAAK84C,UAAUwG,EAAYp1C,GAAIo1C,EAAY5F,KAAM4F,EAAYpJ,SAE9DoJ,EAAYpJ,QAAU,GAClBoJ,IAAgBt/C,KAAKi5C,gBAAgB/1C,IAExC,KAGN,CACA,CApEoC,CAsEpC,EAGAk1C,EAAQz6B,UAAU6hC,OAAS,SAASzxC,GAClC,IAAI7J,EAASlE,KAAKy/C,SAAS1xC,GAAM,GACjC,OAAQ7J,EAAO/D,OAAS+D,EAAO,GAAK,IACtC,EAEAk0C,EAAQz6B,UAAU8hC,SAAW,SAAS1xC,EAAM2xC,GAC1C,IAAIx7C,EAAS,GAEb,OADAk0C,EAAQuH,OAAO70B,KAAK9qB,KAAM+N,EAAM7J,EAAQw7C,GACjCx7C,CACT,EAEAk0C,EAAQuH,OAAS,SAAS5xC,EAAM7J,EAAQw7C,GAEtC,IAAK,IAAInyB,KADLvtB,KAAK+N,MAAQ/N,KAAK+N,MAAQA,GAAM7J,EAAO2E,KAAK7I,MAChCA,KAAK0tB,MAAO,CAC1B,GAAIxpB,EAAO/D,QAAUu/C,EAAa,OAClCtH,EAAQuH,OAAO70B,KAAK9qB,KAAK0tB,MAAMH,GAAMxf,EAAM7J,EAAQw7C,EACvD,CACA,EAEAtH,EAAQz6B,UAAUiiC,oBAAsB,SAAS1U,GAChD,IAAI/0B,EAAQnW,KAAK45C,aAAa1O,GAC9B,OAAI/0B,EACIA,EAAM+/B,aAEb,CAEF,EAEAkC,EAAQz6B,UAAUkiC,eAAiB,SAAS3U,EAAUzuB,GACrD,IAAItG,EAAQnW,KAAK45C,aAAa1O,GAE9B,OADalrC,KAAKu/C,UAAUppC,EAAOsG,EAEpC,EAGA27B,EAAQz6B,UAAUmiC,mBAAqB,SAAU51C,EAAI61C,GACpD,IAAIz7C,EAAO,EACPq1C,EAAO35C,KAAK45C,aAAa1vC,GACxByvC,EAAKqG,kBAAiBrG,EAAKqG,gBAAkB,GAClD,IAAK,IAAI98C,EAAIy2C,EAAKqG,gBAAiB98C,EAAI68C,EAAW78C,IACjDoB,GAAMtE,KAAKigD,cAActG,EAAMz2C,GAEhC2Y,EAAIK,KAAK,UAAW,UAAUhS,EAAG,2BAA2B61C,EAAU,oBAAoBz7C,EAAK,gBAAgBtE,KAAKkgD,gBAAgB,KACpIvG,EAAKqG,gBAAkBD,CACxB,EAEA3H,EAAQz6B,UAAUlS,MAAQ,WACzBzL,KAAKm5C,yBAA0B,EAC/Bn5C,KAAKq7C,gBAAe,EACrB,EAEAjD,EAAQz6B,UAAUwiC,KAAO,WACxBngD,KAAKm5C,yBAA0B,CAChC,EAGAf,EAAQz6B,UAAUtY,MAAQ,WACzBwW,EAAIK,KAAK,UAAW,8BACpBlc,KAAKm7C,oBACLn7C,KAAKq7C,gBAAe,GACpBr7C,KAAKsQ,OAAOmY,eACZzoB,KAAKsQ,OAAOoX,gBAAe,EAC5B,EAIA0wB,EAAQz6B,UAAUyiC,UAAY,SAASnmB,EAAMomB,EAAQ1G,GACpD,IAAI52B,EACA80B,EACAyI,EAGArlB,EAFAslB,EAAsB,EACtBC,EAAkB,EAGtB,GAA4B,IAAxB7G,EAAKzD,QAAQ/1C,OAEhB,OADA0b,EAAIK,KAAK,UAAW,+CAA+CL,EAAIQ,kBAAkB,EAAG,GAAxE,kBACb,CAAExc,OAAQ,EAAGo6B,KAAM,GAG3B,IAAKlX,EAAI,EAAGA,EAAI42B,EAAKzD,QAAQ/1C,OAAQ4iB,IAAK,CAEzC,GADA80B,EAAS8B,EAAKzD,QAAQnzB,GACZ,IAANA,EACHy9B,EAAkB,EAClBvlB,EAAY4c,EAAO5c,eACb,GAAI4c,EAAO4I,IAAMxmB,EAAO4d,EAAO5c,UAAW,CAChDulB,EAAkBz9B,EAAE,EACpB,KACH,CACMs9B,GAAUxI,EAAO6I,UACpBH,EAAsBx9B,EAEzB,CAMC,IALIs9B,IACHG,EAAkBD,GAEnBtmB,EAAO0f,EAAKzD,QAAQsK,GAAiBC,IACrC9G,EAAKG,WAAa0G,EACX7G,EAAKzD,QAAQsK,GAAiBrB,cAAgBxF,EAAKzD,QAAQsK,GAAiBl8C,MAE7Eq1C,EAAKzD,QAAQsK,EAAkB,IAGpCA,IAID,OAFAF,EAAc3G,EAAKzD,QAAQsK,GAAiB3gD,OAAO85C,EAAKzD,QAAQsK,GAAiBrB,YACjFtjC,EAAIK,KAAK,UAAW,eAAemkC,EAAS,MAAO,IAAI,YAAY1G,EAAKG,WAAW,aAAaH,EAAK8D,KAAKvS,SAAS,UAAUrvB,EAAIQ,kBAAkB4d,EAAMgB,GAAY,gBAAgBqlB,GAC9K,CAAEzgD,OAAQygD,EAAarmB,KAAMA,EAAKgB,EAC1C,EAEAmd,EAAQz6B,UAAUgjC,iBAAmB,SAAUhH,GAC9C,IAAI9B,EAEJ,OAAK8B,EAAKzD,UAGV2B,EAAS8B,EAAKzD,QAAQyD,EAAKzD,QAAQ/1C,OAAS,IAC7BsgD,IAAM5I,EAAOr8B,UAAYq8B,EAAO5c,UAHvCob,GAIT,EAGA+B,EAAQz6B,UAAUI,KAAO,SAASkc,EAAMomB,GACvC,IACI1G,EACAiH,EACA19C,EAHA+3C,EAAOj7C,KAAKi7C,KAIZ4F,EAAY,CAAEhhD,OAAQw2C,IAAUpc,KAAMoc,KAC1C,GAAKr2C,KAAKi7C,KAEH,CACN,IAAK/3C,EAAI,EAAGA,EAAE+3C,EAAKmC,MAAMj9C,OAAQ+C,IAChCy2C,EAAOsB,EAAKmC,MAAMl6C,GACd+2B,EAAOj6B,KAAK2gD,iBAAiBhH,MAGjCiH,EAAiB5gD,KAAKogD,UAAUnmB,EAAMomB,EAAQ1G,IAC3B95C,OAASghD,EAAUhhD,SACrCghD,EAAUhhD,OAAS+gD,EAAe/gD,QAE/B+gD,EAAe3mB,KAAO4mB,EAAU5mB,OACnC4mB,EAAU5mB,KAAO2mB,EAAe3mB,OAclC,OAXApe,EAAIK,KAAK,UAAW,mBAAmBL,EAAIQ,kBAAkBwkC,EAAU5mB,KAAM,GAAG,gDAAgD4mB,EAAUhhD,QACtIghD,EAAUhhD,SAAWw2C,IAExBwK,EAAY,CAAEhhD,OAAQG,KAAKu7C,kBAAmBthB,KAAM,GAKpD4mB,EAAUhhD,OAASG,KAAKsQ,OAAOmZ,wBAAwBo3B,EAAUhhD,QAElEgc,EAAIK,KAAK,UAAW,mEAAmE2kC,EAAUhhD,QAC1FghD,CACT,CA3BE,KAAM,iCA4BR,EAEAzI,EAAQz6B,UAAUmjC,MAAQ,SAAS1hC,GAElC,IADA,IAAI2hC,EAAY,EACTA,EAAY/gD,KAAK0tB,MAAMvtB,QAAU4gD,EAAY3hC,EAAEsO,MAAMvtB,QAAQ,CACnE,IAAI6gD,EAAQhhD,KAAK0tB,MAAMqzB,GACnBE,EAAQ7hC,EAAEsO,MAAMqzB,GACpB,IAAK70B,EAAU2qB,SAASmK,EAAOC,GAC9B,OAAO,EAERF,GACF,CACC,OAAO,CACR,EAGC1jC,UAAkB+6B,EAInBA,EAAQz6B,UAAUujC,qBAAuB,EAEzC9I,EAAQz6B,UAAUwjC,YAAc,KAMhC/I,EAAQz6B,UAAU49B,kBAAoB,EAEtCnD,EAAQz6B,UAAUyjC,iBAAkB,EAEpChJ,EAAQz6B,UAAUg9B,qBAAuB,SAAS5oB,GACjD,IAAIxE,EAKJ,MAAiB,SAAbwE,EAAIhkB,MAKPwf,EAAM,IAAIrB,EAAU6F,EAAIhkB,KAAK,OAAOgkB,EAAIztB,MACxCtE,KAAKmhD,YAAc5zB,EACnBvtB,KAAK0tB,MAAM7kB,KAAK0kB,GAChBvtB,KAAKq4C,MAAMxvC,KAAK0kB,GAChBA,EAAI9hB,MAAQsmB,EAAItmB,MAChB8hB,EAAIU,SAAW8D,EAAI9D,SACnBjuB,KAAKsQ,OAAOoZ,aAAa6D,EAAIU,UAG7BjuB,KAAKkhD,qBAAuB3zB,EAAI9hB,MAAQ8hB,EAAIjpB,KAEpCtE,KAAKsQ,OAAOyN,KAAKwP,EAAI9hB,MAAQ8hB,EAAIjpB,MAAM,EAAOtE,KAAKohD,kBAG1DphD,KAAKmhD,YAAc,MAEZ,IAIFnhD,KAAKw4C,eAQTx4C,KAAKu7C,kBAAoBv7C,KAAKsQ,OAAO+Y,uBAJrCrpB,KAAKu7C,kBAAoBhuB,EAAI9hB,MAAQ8hB,EAAIjpB,MAOnC,KAIS,SAAbytB,EAAIhkB,OAEP/N,KAAKw4C,gBAAiB,EACI,IAAtBx4C,KAAKq4C,MAAMl4C,SACdH,KAAKu4C,eAAgB,IAObv4C,KAAKsQ,OAAOoY,iBAAkB1oB,KAAKsQ,OAAOoY,mBAKnD1oB,KAAKu7C,kBAAoBv7C,KAAKsQ,OAAOuN,kBAC9B,IAIFkU,EAAIhkB,KAQJ/N,KAAKw4C,eACRx4C,KAAKu7C,kBAAoBv7C,KAAKsQ,OAAOuN,iBAErC7d,KAAKu7C,kBAAoBv7C,KAAKsQ,OAAOsN,cAAgBmU,EAAIztB,KAR1DtE,KAAKu7C,kBAAoBv7C,KAAKsQ,OAAOuN,kBAW/B,GAGV,EAEAu6B,EAAQz6B,UAAU68B,kBAAoB,WACrC,OAA6B,OAArBx6C,KAAKmhD,WACd,EAEA/I,EAAQz6B,UAAU88B,sBAAwB,WACzC,IAAIltB,EAOJ,OAHAA,EAAMvtB,KAAKmhD,YAEHnhD,KAAKsQ,OAAOyN,KAAKwP,EAAI9hB,MAAQ8hB,EAAIjpB,MAAM,EAAOtE,KAAKohD,kBAE1DvlC,EAAII,MAAM,UAAW,qCAErBjc,KAAKmhD,YAAc,MAEZ,IAKPnhD,KAAKu7C,kBAAoBv7C,KAAKsQ,OAAO+Y,wBAC9B,EAET,EAEA+uB,EAAQz6B,UAAU48B,qBAAuB,WAExC,OAAOv6C,KAAKsQ,OAAOyN,KAAK/d,KAAKkhD,sBAAsB,EAAMlhD,KAAKohD,gBAC/D,EAEAhJ,EAAQz6B,UAAU+8B,kBAAoB,WAErC16C,KAAKkhD,qBAAuBlhD,KAAKsQ,OAAOsN,aACzC,EAEAw6B,EAAQz6B,UAAUi9B,gBAAkB,SAASrtB,EAAKwE,GAC7C/xB,KAAKsQ,OAAOoZ,eACE,SAAb6D,EAAIxf,MAEP/N,KAAKsQ,OAAOoZ,aAAa6D,EAAIU,UACzBjuB,KAAKohD,iBACRphD,KAAKsQ,OAAOoZ,aAAa6D,EAAIjpB,KAAKipB,EAAIU,WAIvCjuB,KAAKsQ,OAAOoZ,aAAa6D,EAAIjpB,MAGhC,EAEA8zC,EAAQz6B,UAAUoT,IAAM7E,EAAUiB,IAAIxP,UAAUoT,IAChDqnB,EAAQz6B,UAAUqT,OAAS9E,EAAUiB,IAAIxP,UAAUqT,OAEnDonB,EAAQz6B,UAAUvK,KAAO,SAAUiuC,GAClC,IAAI/nC,EAAU+nC,GAAY,CAAA,EACfrhD,KAAK+wB,IAAI,QAAQ1uB,IAAI,cAAgBiX,EAAQmjC,QAAUnjC,EAAQmjC,OAAO,IAAO,QAC9Ep6C,IAAI,gBAAiB,GACrBA,IAAI,oBAAqBiX,EAAQmjC,QAAU,CAAC,SACtD,IAAIxB,EAAOj7C,KAAK+wB,IAAI,QAUpB,OATAkqB,EAAKlqB,IAAI,QAAQ1uB,IAAI,YAAaiX,EAAQ2hB,WAAa,KAClD54B,IAAI,OAAQiX,EAAQmoB,MAAQ,OAC5Bp/B,IAAI,gBAAiB,GACrBA,IAAI,oBAAqB,GACzBA,IAAI,WAAYiX,EAAQkC,UAAY,GACpCnZ,IAAI,SAAWiX,EAAQ0Z,MAAS,EAAI,KACpC3wB,IAAI,SAAU,CAAE,MAAO,EAAG,EAAG,EAAG,MAAO,EAAG,EAAG,EAAG,aAChDA,IAAI,gBAAiB,GAC1B44C,EAAKlqB,IAAI,QACF/wB,IACR,EAEAo4C,EAAQz6B,UAAU2jC,SAAW,SAAUD,GACjCrhD,KAAKi7C,MACTj7C,KAAKoT,KAAKiuC,GAGX,IAAI/nC,EAAU+nC,GAAY,CAAA,EAC1B/nC,EAAQ0Z,MAAQ1Z,EAAQ0Z,OAAS,IACjC1Z,EAAQ2Z,OAAS3Z,EAAQ2Z,QAAU,IACnC3Z,EAAQpP,GAAKoP,EAAQpP,IAAMlK,KAAKi7C,KAAKkB,KAAKva,cAC1CtoB,EAAQvL,KAAOuL,EAAQvL,MAAQ,OAE/B,IAAI4rC,EAAO35C,KAAKi7C,KAAKlqB,IAAI,QACzB/wB,KAAKi7C,KAAKkB,KAAKva,cAAgBtoB,EAAQpP,GAAG,EAC1CyvC,EAAK5oB,IAAI,QAAQ1uB,IAAI,QAAQ6pB,EAAU6D,kBAC/B7D,EAAU8D,mBACV9D,EAAU+D,sBACb5tB,IAAI,gBAAgB,GACpBA,IAAI,oBAAqB,GACzBA,IAAI,WAAYiX,EAAQpP,IACxB7H,IAAI,WAAYiX,EAAQkC,UAAY,GACpCnZ,IAAI,QAASiX,EAAQ0yB,OAAS,GAC9B3pC,IAAI,kBAAmB,GACvBA,IAAI,SAAU,GACdA,IAAI,SAAU,CAAE,MAAO,EAAG,EAAG,EAAG,MAAO,EAAG,EAAG,EAAG,aAChDA,IAAI,QAASiX,EAAQ0Z,OAAS,IAC9B3wB,IAAI,SAAUiX,EAAQ2Z,QAAU,IAErC,IAAIoqB,EAAO1D,EAAK5oB,IAAI,QACpBssB,EAAKtsB,IAAI,QAAQ1uB,IAAI,gBAAiB,GACjCA,IAAI,oBAAqB,GACzBA,IAAI,YAAaiX,EAAQ2hB,WAAa,GACtC54B,IAAI,WAAYiX,EAAQioC,gBAAkB,GAC1Cl/C,IAAI,WAAYiX,EAAQ4Y,UAAY,OAEzCmrB,EAAKtsB,IAAI,QAAQ1uB,IAAI,UAAWiX,EAAQokC,MAAQ,QAC3Cr7C,IAAI,OAAQiX,EAAQlP,MAAQ,gCAEjCizC,EAAKtsB,IAAI,QAAQ1uB,IAAI,oBAAqBiX,EAAQ4Y,UAAY,SAE9D,IAAIorB,EAAOD,EAAKtsB,IAAI,QACpB,QAA8CtsB,IAA1CynB,EAAU5S,EAAQvL,KAAK,eAA3B,CACA,IAAIyzC,EAA2B,IAAIt1B,EAAU5S,EAAQvL,KAAK,eAC1DyzC,EAAyB3uB,qBAAuB,EAChD,IAAI4uB,EAAa,GACjB,IAAK,IAAI/yB,KAAaxC,EAAUU,iBAE/B,IADA,IAAI80B,EAAQx1B,EAAUU,iBAAiB8B,GAC9BxrB,EAAI,EAAGA,EAAIw+C,EAAMvhD,OAAQ+C,IACjC,GAAIw+C,EAAM1vB,QAAQ1Y,EAAQvL,OAAQ,EAAI,CACrC0zC,EAAa/yB,EACb,KACJ,CAGC,OAAO+yB,GACN,IAAK,SASJ,GARAnE,EAAKvsB,IAAI,QAAQ1uB,IAAI,eAAe,GAAGA,IAAI,UAAW,CAAE,EAAG,EAAG,IAC9Dm/C,EAAyBn/C,IAAI,QAASiX,EAAQ0Z,OAC1C3wB,IAAI,SAAUiX,EAAQ2Z,QACtB5wB,IAAI,kBAAmB,IAAM,IAC7BA,IAAI,iBAAkB,IAAM,IAC5BA,IAAI,cAAe,GACnBA,IAAI,iBAAkBiX,EAAQvL,KAAK,eACnC1L,IAAI,QAAS,IACbiX,EAAQqoC,uBAAwB,CACnC,IAAIxP,EAAO,IAAIjmB,EAAU0nB,QACzBzB,EAAK5nB,MAAM,IAAIjN,EAAahE,EAAQqoC,yBACpCH,EAAyBxwB,OAAOmhB,EACpC,MAAU,GAAI74B,EAAQsoC,wBAAyB,CAC3C,IAAItP,EAAO,IAAIpmB,EAAUmoB,QACzB/B,EAAK/nB,MAAM,IAAIjN,EAAahE,EAAQsoC,0BACpCJ,EAAyBxwB,OAAOshB,EACpC,CACG,MACD,IAAK,QACJgL,EAAKvsB,IAAI,QAAQ1uB,IAAI,UAAWiX,EAAQkvB,SAAW,GACnDgZ,EAAyBn/C,IAAI,gBAAiBiX,EAAQia,eAAiB,GACnElxB,IAAI,aAAciX,EAAQka,YAAc,IACxCnxB,IAAI,aAAciX,EAAQma,YAAc,OAC5C,MACD,IAAK,OACJ6pB,EAAKvsB,IAAI,QACT,MACD,IAAK,WACJusB,EAAKvsB,IAAI,QAEH,SADEzX,EAAQvL,MAEdyzC,EAAyBn/C,IAAI,YAAaiX,EAAQnP,WAAa,eAC3D9H,IAAI,kBAAmBiX,EAAQ+pB,iBAAmB,IAClDhhC,IAAI,uBAAwBiX,EAAQgqB,sBAAwB,IAGlE,MAOD,QACCga,EAAKvsB,IAAI,QAGPzX,EAAQqzB,aACX6U,EAAyBxwB,OAAO1X,EAAQqzB,aAErCrzB,EAAQuoC,mBACXvoC,EAAQuoC,kBAAkBp5C,QAAQ,SAAU2W,GAC3CoiC,EAAyBxwB,OAAO5R,EACnC,GAECk+B,EAAKvsB,IAAI,QAAQA,IAAI,QAAQG,UAAU,IAAIhF,EAAU,YAAc7pB,IAAI,QAAS,IAChF,IAAIk7C,EAAOD,EAAKvsB,IAAI,QAgBpB,OAfAwsB,EAAKxsB,IAAI,QAAQG,SAASswB,GAC1BjE,EAAKxsB,IAAI,QAAQ1uB,IAAI,gBAAiB,IACjCA,IAAI,gBAAiB,IAC1Bk7C,EAAKxsB,IAAI,QAAQ1uB,IAAI,cAAe,IAC/BA,IAAI,oBAAqB,IACzBA,IAAI,2BAA4B,IACrCk7C,EAAKxsB,IAAI,QAAQ1uB,IAAI,gBAAiB,IACtCk7C,EAAKxsB,IAAI,QAAQ1uB,IAAI,eAAgB,IAErCrC,KAAKi7C,KAAKoB,KAAKtrB,IAAI,QAAQ1uB,IAAI,WAAYiX,EAAQpP,IAC1C7H,IAAI,mCAAoCiX,EAAQ8xB,kCAAoC,GACpF/oC,IAAI,0BAA2BiX,EAAQ+xB,yBAA2B,GAClEhpC,IAAI,sBAAuBiX,EAAQgyB,qBAAuB,GAC1DjpC,IAAI,uBAAwBiX,EAAQiyB,sBAAwB,GACrEvrC,KAAK8hD,qBAAqBnI,GACnBrgC,EAAQpP,EAvF0C,CAwF1D,EAEAgiB,EAAUiB,IAAIxP,UAAUokC,YAAc,SAASC,GAC9C,IAAI1xC,EAAS0xC,GAAW,IAAI9hC,EAC5B5P,EAAO6P,WAAaD,EAAWe,WAC/BjhB,KAAKmF,MAAMmL,EACZ,EAEA8nC,EAAQz6B,UAAUskC,UAAY,SAAU/W,EAAU9lC,EAAMi8C,GACvD,IAAI/nC,EAAU+nC,GAAY,CAAA,EACtBxJ,EAAS,CAAA,EACT8B,EAAO35C,KAAK45C,aAAa1O,GAC7B,GAAa,OAATyO,EAAJ,CACG9B,EAAOp7B,OAASk9B,EAAKzD,QAAQ/1C,OAChC03C,EAAO3M,SAAWyO,EAAK8D,KAAKvS,SAC5B2M,EAAO5c,UAAY0e,EAAK0D,KAAKc,KAAKljB,UAClC4c,EAAOvB,kBAAqBh9B,EAAQ6vB,yBAA2B7vB,EAAQ6vB,yBAA2B,EAAG,EACrG0O,EAAOlL,YAAcgN,EAAK0D,KAAKC,KAAKC,KAAKC,KAAK9iB,QAAQmd,EAAOvB,mBAC7DuB,EAAOzyC,KAAOA,EACdyyC,EAAOvzC,KAAOc,EAAKpD,WACnB61C,EAAOsH,YAActH,EAAOvzC,KAC5BuzC,EAAOr8B,SAAWlC,EAAQkC,UAAY,EACtCq8B,EAAO4I,IAAMnnC,EAAQmnC,KAAO,EAC5B5I,EAAOzB,IAAM98B,EAAQ88B,KAAO,EAC5ByB,EAAO6I,QAAUpnC,EAAQonC,UAAW,EACpC7I,EAAOlR,WAAartB,EAAQqtB,YAAc,EAC1CkR,EAAOqK,WAAa5oC,EAAQ4oC,YAAc,EAC1CrK,EAAOsK,eAAiB7oC,EAAQ6oC,gBAAkB,EAClDtK,EAAOuK,eAAiB9oC,EAAQ8oC,gBAAkB,EAClDvK,EAAOwK,qBAAuB/oC,EAAQ+oC,sBAAwB,EAC9DxK,EAAOh4C,OAAS,EAChBg4C,EAAOxN,WAAa/wB,EAAQ+wB,WAC5BsP,EAAKzD,QAAQrtC,KAAKgvC,GAClB8B,EAAKiF,cAAgB/G,EAAOvzC,KAC5Bq1C,EAAK2E,kBAAoBzG,EAAOr8B,cACT/W,IAAnBk1C,EAAK2I,YACR3I,EAAK2I,UAAYhpC,EAAQ88B,KAG1Bp2C,KAAKq7C,iBAEL,IAAIkH,EAAOviD,KAAKwiD,uBAAuB3K,GAMvC,OALA73C,KAAKgxB,OAAOuxB,GACZA,EAAKR,cAELQ,EAAKE,MAAM,GAAGC,MAAM,GAAGrW,YAAckW,EAAKj+C,KAAK,EAC/CtE,KAAK+wB,IAAI,QAAQ3rB,KAAO,IAAI/E,WAAW+E,GAChCyyC,CAnCY,CAoCpB,EAEAO,EAAQz6B,UAAU6kC,uBAAyB,SAAS3K,GACnD,IAAIrL,EAAe,EAElBA,EADGqL,EAAO6I,QACM,GAAK,GAEL,MAEjB,IAAI6B,EAAO,IAAIr2B,EAAUy2B,QACzBJ,EAAKxxB,IAAI,QAAQ1uB,IAAI,kBAAmBrC,KAAKo5C,gBAC7Cp5C,KAAKo5C,iBACL,IAAIwJ,EAAOL,EAAKxxB,IAAI,QAChB4oB,EAAO35C,KAAK45C,aAAa/B,EAAO3M,UAcpC,OAbA0X,EAAK7xB,IAAI,QAAQ1uB,IAAI,WAAYw1C,EAAO3M,UACnC7oC,IAAI,QAAS6pB,EAAUsE,gCAC5BoyB,EAAK7xB,IAAI,QAAQ1uB,IAAI,sBAAwBw1C,EAAOzB,KAAOuD,EAAK2I,WAAa,IAC7EM,EAAK7xB,IAAI,QAAQ1uB,IAAI,QAAS6pB,EAAUuE,uBAAyBvE,EAAUyE,oBACjEzE,EAAU0E,gBAAkB1E,EAAU2E,iBACtC3E,EAAU4E,uBACfzuB,IAAI,cAAc,GAClBA,IAAI,qBAAqB,GACzBA,IAAI,eAAe,GACnBA,IAAI,kBAAkB,CAACw1C,EAAOr8B,WAC9BnZ,IAAI,cAAc,CAACw1C,EAAOvzC,OAC1BjC,IAAI,eAAe,CAACmqC,IACpBnqC,IAAI,iCAAkC,CAACw1C,EAAO4I,IAAM5I,EAAOzB,MACzDmM,CACR,EAIAnK,EAAQz6B,UAAUklC,cAAgB,EAGlCzK,EAAQz6B,UAAUuiC,gBAAkB,EAGpC9H,EAAQz6B,UAAUmlC,YAAc,WAC/B,IAAI5/C,EACAy2C,EAAYoJ,EAAYC,EAAMC,EAAMC,EAGxC,IAFAljD,KAAKmjD,iBAAmBnjD,KAAKi7C,KAAKkB,KAAK3gC,SACvCxb,KAAKi7C,KAAKkB,KAAK3gC,SAAW,EACrBtY,EAAI,EAAGA,EAAIlD,KAAKi7C,KAAKmC,MAAMj9C,OAAQ+C,IAAK,EAC5Cy2C,EAAO35C,KAAKi7C,KAAKmC,MAAMl6C,IAClBu6C,KAAKjiC,SAAW,EACrBm+B,EAAK0D,KAAKc,KAAK3iC,SAAW,GACnBm+B,EAAK0D,KAAKC,KAAKC,KAAK6F,MAAQzJ,EAAK0D,KAAKC,KAAKC,KAAK8F,MAClD1rB,cAAgB,IACrBorB,EAAOpJ,EAAK0D,KAAKC,KAAKC,KAAKwF,MACtB9Z,YAAc,GACnB8Z,EAAK7Z,kBAAoB,GACzB6Z,EAAK5Z,yBAA2B,IACzBwQ,EAAK0D,KAAKC,KAAKC,KAAK+F,MAAQ3J,EAAK0D,KAAKC,KAAKC,KAAKgG,MAClD/Z,aAAe,IACpBwZ,EAAOrJ,EAAK0D,KAAKC,KAAKC,KAAKyF,MACtBtqB,cAAgB,GACrBsqB,EAAKrZ,cAAgB,IACrBsZ,EAAOtJ,EAAK0D,KAAKC,KAAKC,KAAK0F,QAE1BA,EAAKvqB,cAAgB,GACrBuqB,EAAKtqB,eAAiB,IAEvBuqB,EAAOvJ,EAAK0D,KAAKC,KAAKC,KAAK2F,KAC3B,IAAIlgC,EAAI22B,EAAK0D,KAAKC,KAAKC,KAAK7vB,MAAMsE,QAAQkxB,OACtClgC,IAAS22B,EAAK0D,KAAKC,KAAKC,KAAK7vB,MAAM1K,GAAK,KAC9C,CACA,EAEAo1B,EAAQoL,iBAAmB,SAAS7J,EAAMiJ,EAAMa,EAAOC,EAAYC,GAClE,IAAIz4B,EACAlI,EAEA4gC,EACAC,EACJ,SAASC,EAAgBl2B,EAAOm2B,EAAYC,GAC3ChkD,KAAKmuB,cAAgBP,EACrB5tB,KAAK4gC,wBAA0BmjB,EAC/B/jD,KAAKikD,KAAOD,EACZhkD,KAAKkkD,oBAAqB,EAC1BlkD,KAAKmkD,aAAc,CACrB,CAOC,IANIvB,IACHA,EAAKwB,mBAAqB,IAEtBzK,EAAKyK,qBACTzK,EAAKyK,mBAAqB,IAEtBphC,EAAI,EAAGA,EAAIygC,EAAMtjD,OAAQ6iB,IAAK,CASlC,IARA6gC,EAAmBJ,EAAMzgC,GAAGmL,cAAe,IAAKs1B,EAAMzgC,GAAG4d,wBACzDgjB,EAAoB,IAAIE,EAAgBL,EAAMzgC,GAAGmL,cAAes1B,EAAMzgC,GAAG4d,wBAAyB6iB,EAAMzgC,IACpG4/B,IACHA,EAAKwB,mBAAmBP,GAAoBD,GAExCjK,EAAKyK,mBAAmBP,KAC5BlK,EAAKyK,mBAAmBP,GAAoBD,GAExC14B,EAAE,EAAGA,EAAGw4B,EAAWvjD,OAAQ+qB,IAC3Bw4B,EAAWx4B,GAAGiD,gBAAkBs1B,EAAMzgC,GAAGmL,gBAC5Cy1B,EAAkBjX,YAAc+W,EAAWx4B,GAC3C04B,EAAkBjX,YAAYtkB,MAAO,GAGvC,GAAIs7B,EACH,IAAKz4B,EAAE,EAAGA,EAAGy4B,EAAWxjD,OAAQ+qB,IAC3By4B,EAAWz4B,GAAGiD,gBAAkBs1B,EAAMzgC,GAAGmL,gBAC5Cy1B,EAAkBS,qBAAuBV,EAAWz4B,GACpD04B,EAAkBS,qBAAqBh8B,MAAO,EAC9Cu7B,EAAkBU,aAAc,EAIrC,CACC,GAAK1B,GAWJ,GAAIe,EACH,IAAK3gC,EAAI,EAAGA,EAAI2gC,EAAWxjD,OAAQ6iB,KAC7B2gC,EAAW3gC,GAAGqF,MAAQs7B,EAAW3gC,GAAGhX,SAAW,IACnD63C,EAAmBF,EAAW3gC,GAAGmL,cAAe,MAChDy1B,EAAoB,IAAIE,EAAgBH,EAAW3gC,GAAGmL,cAAe,IACnDm2B,aAAc,EAC3B1B,EAAKwB,mBAAmBP,KAC5BjB,EAAKwB,mBAAmBP,GAAoBD,SAjBhD,IAAK5gC,EAAI,EAAGA,EAAI0gC,EAAWvjD,OAAQ6iB,KAC7B0gC,EAAW1gC,GAAGqF,MAAQq7B,EAAW1gC,GAAGhX,SAAW,IACnD63C,EAAmBH,EAAW1gC,GAAGmL,cAAe,KAChDy1B,EAAoB,IAAIE,EAAgBJ,EAAW1gC,GAAGmL,cAAe,GAChEwrB,EAAKyK,mBAAmBP,KAC5BlK,EAAKyK,mBAAmBP,GAAoBD,GAkBjD,EAEAxL,EAAQmM,yBAA2B,SAAS5K,EAAM9B,EAAQ9L,EAAeqY,GACxE,IAAIphC,EACAoG,EAEJ,IAAKpG,KADL60B,EAAO2M,cAAgB,GACbJ,EAAoB,CAmB5B,IAAIzX,EAlBLkL,EAAO2M,cAAcxhC,GAAK,CAAA,EAC1B60B,EAAO2M,cAAcxhC,GAAGmL,cAAgBi2B,EAAmBphC,GAAGmL,cAC9D0pB,EAAO2M,cAAcxhC,GAAG4d,wBAA0BwjB,EAAmBphC,GAAG4d,wBACpEmL,GAAiBqY,EAAmBphC,GAAGkhC,qBACtCE,EAAmBphC,GAAGkhC,mBAAqB,IAC9CE,EAAmBphC,GAAGkhC,mBAAqB,GAE5CE,EAAmBphC,GAAGmhC,cAClBC,EAAmBphC,GAAGmhC,aAAeC,EAAmBphC,GAAGihC,KAAKvpB,QAAQv6B,OAAS,IACpFikD,EAAmBphC,GAAGkhC,oBAAsBE,EAAmBphC,GAAGihC,KAAKvpB,QAAQ0pB,EAAmBphC,GAAGmhC,aAAariB,eAGhHsiB,EAAmBphC,GAAGmhC,aAAeC,EAAmBphC,GAAGihC,KAAKvpB,QAAQv6B,OAAS,EACpF03C,EAAO2M,cAAcxhC,GAAG+iB,wBAA0Bqe,EAAmBphC,GAAGihC,KAAKvpB,QAAQ0pB,EAAmBphC,GAAGmhC,aAAape,wBAExH8R,EAAO2M,cAAcxhC,GAAG+iB,yBAA0B,EAEK,IAApD8R,EAAO2M,cAAcxhC,GAAG+iB,0BAG1B4G,EADGyX,EAAmBphC,GAAGqhC,qBACXD,EAAmBphC,GAAGqhC,qBAEtBD,EAAmBphC,GAAG2pB,YAEjCkL,EAAO2M,cAAcxhC,GAAG+iB,wBAA0B,GAEpD3c,EADGyuB,EAAO2M,cAAcxhC,GAAG+iB,wBAA0B,OAC5C8R,EAAO2M,cAAcxhC,GAAG+iB,yBAA2B,IAAI,EAExD8R,EAAO2M,cAAcxhC,GAAG+iB,wBAAwB,EAErD4G,GAAevjB,GAAS,IAC3ByuB,EAAO2M,cAAcxhC,GAAG2pB,YAAcA,EAAYjS,QAAQtR,KAGvDujB,GAAeA,EAAY3gC,SAAW,GACrC2gC,EAAY3F,gCAAkC,IACjD6Q,EAAO2M,cAAcxhC,GAAG2pB,YAAcA,EAAYjS,QAAQiS,EAAY3F,gCAAgC,IAK5G,CACA,EAEAoR,EAAQqM,aAAe,SAAUC,EAAM7M,EAAQp7B,GACzCo7B,IAGD6M,GACH7M,EAAOlR,WAAa+d,EAAK/d,WAAWlqB,GACpCo7B,EAAOqK,WAAawC,EAAK9d,kBAAkBnqB,GAC3Co7B,EAAOsK,eAAiBuC,EAAK7d,sBAAsBpqB,GACnDo7B,EAAOuK,eAAiBsC,EAAK5d,sBAAsBrqB,KAEnDo7B,EAAOlR,WAAa,EACpBkR,EAAOqK,WAAa,EACpBrK,EAAOsK,eAAiB,EACxBtK,EAAOuK,eAAiB,GAE1B,EAGAhK,EAAQz6B,UAAUu9B,iBAAmB,WACpC,IAAIh4C,EACAy2C,EACJ,IAAKz2C,EAAI,EAAGA,EAAIlD,KAAKi7C,KAAKmC,MAAMj9C,OAAQ+C,IACvCy2C,EAAO35C,KAAKi7C,KAAKmC,MAAMl6C,GACvBlD,KAAK8hD,qBAAqBnI,EAE5B,EAEAvB,EAAQz6B,UAAUmkC,qBAAuB,SAASnI,GACjD,IAAI52B,EACAqgC,EAAML,EAAMO,EAAMN,EAAMC,EAAMC,EAAM1F,EAAMmH,EAAMlB,EAAOmB,EAAOC,EAC9DC,EAAiBvO,EAAawO,EAAmBC,EAAiBC,EAClEC,EAAyBC,EAAgBC,EAAyBC,EAAgBC,EAAkCC,EAAkBC,EA2B1I,GAzBA7L,EAAKzD,QAAU,GACfyD,EAAK2E,iBAAmB,EACxB3E,EAAKiF,aAAe,EACpBwE,EAAOzJ,EAAK0D,KAAKC,KAAKC,KAAK6F,MAAQzJ,EAAK0D,KAAKC,KAAKC,KAAK8F,KACvDN,EAAOpJ,EAAK0D,KAAKC,KAAKC,KAAKwF,KAC3BO,EAAO3J,EAAK0D,KAAKC,KAAKC,KAAK+F,MAAQ3J,EAAK0D,KAAKC,KAAKC,KAAKgG,KACvDP,EAAOrJ,EAAK0D,KAAKC,KAAKC,KAAKyF,KAC3BC,EAAOtJ,EAAK0D,KAAKC,KAAKC,KAAK0F,KAC3BC,EAAOvJ,EAAK0D,KAAKC,KAAKC,KAAK2F,KAC3B1F,EAAO7D,EAAK0D,KAAKC,KAAKC,KAAKC,KAC3BmH,EAAOhL,EAAK0D,KAAKC,KAAKC,KAAKoH,KAC3BE,EAAOlL,EAAK0D,KAAKC,KAAKC,KAAKsH,KAC3BpB,EAAQ9J,EAAK0D,KAAKC,KAAKC,KAAKkG,MAC5BmB,EAAQjL,EAAK0D,KAAKC,KAAKC,KAAKqH,MAE5BM,GAA0B,EAC1BC,GAAiB,EACjBC,GAA0B,EAC1BC,GAAiB,EACjBC,EAAkB,EAClBC,EAAmB,EACnBC,EAAyB,EAEzBpN,EAAQoL,iBAAiB7J,EAAM,KAAM8J,EAAOmB,QAExB,IAATtB,EAAX,CAKA,IAAKvgC,EAAI,EAAGA,EAAIugC,EAAK9Z,aAAarpC,OAAQ4iB,IAAK,CAC9C,IAAI80B,EAAS,CAAA,EACbA,EAAOp7B,OAASsG,EAChB80B,EAAO3M,SAAWyO,EAAK8D,KAAKvS,SAC5B2M,EAAO5c,UAAY0e,EAAK0D,KAAKc,KAAKljB,UAClC4c,EAAOsH,YAAc,EACrBxF,EAAKzD,QAAQnzB,GAAK80B,EAElBA,EAAOvzC,KAAOg/C,EAAK9Z,aAAazmB,GAChC42B,EAAKiF,cAAgB/G,EAAOvzC,KAElB,IAANye,GACHwzB,EAAc,EACduO,EAAkB,EAClBjN,EAAOtB,YAAcA,EACrBsB,EAAOiN,gBAAkBA,EACzBG,EAAuBlC,EAAK7Z,kBAAkB4b,GAC9CE,EAAkB,EAKjBD,EAFGD,EAAkB,EAAI/B,EAAK9Z,YAAY9oC,OAEtB4iD,EAAK9Z,YAAY6b,EAAgB,GAAG,EAGpCzO,KAGjBtzB,EAAIkiC,GAEPpN,EAAOtB,YAAcA,EACrBsB,EAAOiN,gBAAkBA,IAGzBvO,IACAsB,EAAOtB,YAAcA,EAErByO,EAAkB,EACdzO,GAAewO,IAQjBA,EAFqB,KAFtBD,EAE0B/B,EAAK9Z,YAAY9oC,OAEtB4iD,EAAK9Z,YAAY6b,EAAgB,GAAG,EAGpCzO,KAItBwB,EAAOiN,gBAAkBA,EACzBG,GAAwBlC,EAAK7Z,kBAAkB4b,IAIjDjN,EAAOvB,kBAAoByM,EAAK5Z,yBAAyB0O,EAAOiN,iBAAiB,EACjFjN,EAAOlL,YAAc6Q,EAAK9iB,QAAQmd,EAAOvB,mBACzCuB,EAAOh4C,OAASujD,EAAKzrB,cAAckgB,EAAOtB,YAAY,GAAKyO,EAC3DA,GAAmBnN,EAAOvzC,KAGtBye,EAAImiC,IACPC,IACID,EAA0B,IAC7BA,EAA0B,GAE3BA,GAA2BlC,EAAKtqB,cAAcysB,IAE3CpiC,EAAI,GACP42B,EAAKzD,QAAQnzB,EAAE,GAAGvH,SAAWwnC,EAAKrZ,cAAcwb,GAChDxL,EAAK2E,kBAAoB3E,EAAKzD,QAAQnzB,EAAE,GAAGvH,SAC3Cq8B,EAAOzB,IAAMuD,EAAKzD,QAAQnzB,EAAE,GAAGqzB,IAAMuD,EAAKzD,QAAQnzB,EAAE,GAAGvH,UAEvDq8B,EAAOzB,IAAM,EAEV6M,GACClgC,GAAKqiC,IACRC,IACID,EAA0B,IAC7BA,EAA0B,GAE3BA,GAA2BnC,EAAKvqB,cAAc2sB,IAE/CxN,EAAO4I,IAAM9G,EAAKzD,QAAQnzB,GAAGqzB,IAAM6M,EAAKtqB,eAAe0sB,IAEvDxN,EAAO4I,IAAM5I,EAAOzB,IAEjB8M,GACCngC,GAAKmgC,EAAK3Z,eAAe+b,GAAmB,GAC/CzN,EAAO6I,SAAU,EACjB4E,MAEAzN,EAAO6I,SAAU,EACjB7I,EAAOwK,qBAAuB,GAE3BsC,GACCA,EAAKjqB,QAAQ6qB,GAAkBnb,aAAeob,GAA0BziC,EAAE,IAC7E80B,EAAOxN,WAAasa,EAAKjqB,QAAQ6qB,GAAkBlb,WACnDmb,GAA0Bb,EAAKjqB,QAAQ6qB,GAAkBnb,aACzDmb,MAIF1N,EAAO6I,SAAU,EAElBtI,EAAQqM,aAAa9K,EAAK0D,KAAKC,KAAKC,KAAKmH,KAAM7M,EAAQA,EAAOp7B,QAE7Do7B,EAAOwK,qBADJwC,EAC2BA,EAAKruC,SAASuM,GAEd,EAE3B4hC,GACCA,EAAKjqB,QAAQ6qB,GAAkBnb,aAAeob,GAA0BziC,IAC3E80B,EAAOxN,WAAasa,EAAKjqB,QAAQ6qB,GAAkBlb,WACnDmb,GAA0Bb,EAAKjqB,QAAQ6qB,GAAkBnb,eAGvDqZ,EAAMtjD,OAAS,GAAKykD,EAAMzkD,OAAS,IACtCi4C,EAAQmM,yBAAyB5K,EAAM9B,EAAQ90B,EAAG42B,EAAKyK,mBAE1D,CACKrhC,EAAE,IACL42B,EAAKzD,QAAQnzB,EAAE,GAAGvH,SAAWrc,KAAKoc,IAAIo+B,EAAK0D,KAAKc,KAAK3iC,SAAWm+B,EAAKzD,QAAQnzB,EAAE,GAAGqzB,IAAK,GACvFuD,EAAK2E,kBAAoB3E,EAAKzD,QAAQnzB,EAAE,GAAGvH,SAjI7C,CAmIA,EAGA48B,EAAQz6B,UAAUw9B,kBAAoB,WACrC,IAAIj4C,EAAG6f,EAAGC,EACNooB,EAAkCC,EAAyBC,EAAqBC,EAChFka,EACAl4B,EAAKg1B,EAAMK,EAAMjJ,EAAM+L,EACvB7N,EACArL,EAEJ,QAAkB/nC,IAAdzE,KAAKi7C,KAIT,KAAOj7C,KAAK6iD,cAAgB7iD,KAAKs4C,MAAMn4C,QAGtC,GAFAotB,EAAMvtB,KAAKs4C,MAAMt4C,KAAK6iD,eACtB7iD,KAAK6iD,gBACW,QAAZt1B,EAAIxf,KAEP,IADAw0C,EAAOh1B,EACFrqB,EAAI,EAAGA,EAAIq/C,EAAKE,MAAMtiD,OAAQ+C,IAAK,CA6BvC,IA5BA0/C,EAAOL,EAAKE,MAAMv/C,GAClBy2C,EAAO35C,KAAK45C,aAAagJ,EAAK+C,KAAKza,UACnCwa,EAAO1lD,KAAK4lD,YAAYhD,EAAK+C,KAAKza,UAEjCE,EADGwX,EAAK+C,KAAK36B,MAAQkB,EAAUiE,sBACIyyB,EAAK+C,KAAKva,iCAETsa,EAAOA,EAAKta,iCAAkC,EAGlFC,EADGuX,EAAK+C,KAAK36B,MAAQkB,EAAUkE,qBACLwyB,EAAK+C,KAAKta,wBAETqa,EAAOA,EAAKra,wBAA0B,EAGjEC,EADGsX,EAAK+C,KAAK36B,MAAQkB,EAAUmE,sBACTuyB,EAAK+C,KAAKra,oBAEToa,EAAOA,EAAKpa,oBAAsB,EAGzDC,EADGqX,EAAK+C,KAAK36B,MAAQkB,EAAUoE,uBACRsyB,EAAK+C,KAAKpa,qBAETma,EAAOA,EAAKna,qBAAuB,EAE5DqX,EAAK7W,cAAgB,EAEjB6W,EAAKa,MAAMtjD,OAAS,GACvBi4C,EAAQoL,iBAAiB7J,EAAMiJ,EAAMA,EAAKa,MAAO9J,EAAK0D,KAAKC,KAAKC,KAAKqH,MAAOhC,EAAKgC,OAE7E7hC,EAAI,EAAGA,EAAI6/B,EAAKF,MAAMviD,OAAQ4iB,IAAK,CACvC,IAAI8iC,EAAOjD,EAAKF,MAAM3/B,GACtB,IAAKC,EAAI,EAAGA,EAAI6iC,EAAK/jB,aAAc9e,IAAK,EACvC60B,EAAS,CAAA,GACFiO,YAAc9lD,KAAK6iD,cAC1BhL,EAAOkO,eAAiBnD,EAAK7W,cAC7B6W,EAAK7W,gBACI8L,EAAOp7B,OAASk9B,EAAKzD,QAAQ/1C,OACtCyiD,EAAKoD,mBAAqBrM,EAAKzD,QAAQ/1C,OACvCw5C,EAAKzD,QAAQrtC,KAAKgvC,GAClBA,EAAO3M,SAAWyO,EAAK8D,KAAKvS,SAC5B2M,EAAO5c,UAAY0e,EAAK0D,KAAKc,KAAKljB,UAClC4c,EAAOvB,kBAAoBlL,EAAiC,EAC5DyM,EAAOlL,YAAcgN,EAAK0D,KAAKC,KAAKC,KAAKC,KAAK9iB,QAAQmd,EAAOvB,mBAC7DuB,EAAOvzC,KAAOgnC,EACVua,EAAK76B,MAAQkB,EAAU0E,kBAC1BinB,EAAOvzC,KAAOuhD,EAAKpc,YAAYzmB,IAEhC22B,EAAKiF,cAAgB/G,EAAOvzC,KAC5BuzC,EAAOr8B,SAAW6vB,EACdwa,EAAK76B,MAAQkB,EAAUyE,sBAC1BknB,EAAOr8B,SAAWqqC,EAAKtZ,gBAAgBvpB,IAExC22B,EAAK2E,kBAAoBzG,EAAOr8B,SAC5Bm+B,EAAKsM,mBAAqBjjC,EAAI,EACjC60B,EAAOzB,IAAMuD,EAAKzD,QAAQyD,EAAKzD,QAAQ/1C,OAAO,GAAGi2C,IAAIuD,EAAKzD,QAAQyD,EAAKzD,QAAQ/1C,OAAO,GAAGqb,UAErFonC,EAAKsD,KACRrO,EAAOzB,IAAMwM,EAAKsD,KAAKlb,oBAEvB6M,EAAOzB,IAAM,EAEduD,EAAKsM,mBAAoB,GAE1BpO,EAAO4I,IAAM5I,EAAOzB,IAChByP,EAAK76B,MAAQkB,EAAU4E,wBAC1B+mB,EAAO4I,IAAM5I,EAAOzB,IAAMyP,EAAKpZ,+BAA+BzpB,IAE/DwpB,EAAejB,EACXsa,EAAK76B,MAAQkB,EAAU2E,iBAC1B2b,EAAeqZ,EAAKrZ,aAAaxpB,GACjB,IAANA,GAAY6iC,EAAK76B,MAAQkB,EAAUwE,wBAC7C8b,EAAeqZ,EAAKvZ,oBAErBuL,EAAO6I,UAAYlU,GAAgB,GAAK,GACxCqL,EAAOlR,WAAc6F,GAAgB,GAAK,EAC1CqL,EAAOqK,WAAc1V,GAAgB,GAAK,EAC1CqL,EAAOsK,eAAkB3V,GAAgB,GAAK,EAC9CqL,EAAOuK,eAAkB5V,GAAgB,GAAK,EAC9CqL,EAAOwK,qBAAuC,MAAf7V,EAE/B,IAAI2Z,KAAQvD,EAAK+C,KAAK36B,MAAQkB,EAAUgE,4BACpCk2B,KAAQxD,EAAK+C,KAAK36B,MAAQkB,EAAUsE,gCACpC61B,KAAOR,EAAK76B,MAAQkB,EAAUuE,wBAC9B61B,EAAM,EAYTA,EAXIH,EAWEvD,EAAK+C,KAAKxa,iBAVXib,GACM,IAANrjC,EAMEw/B,EAAK92C,MAHJg6C,EAUP5N,EAAOh4C,OAFC,IAANkjB,GAAiB,IAANC,EACVqjC,EACaC,EAAMT,EAAKxZ,YAEXia,EAGDb,EAEjBA,EAAoB5N,EAAOh4C,OAASg4C,EAAOvzC,MACvCs+C,EAAKa,MAAMtjD,OAAS,GAAKyiD,EAAKgC,MAAMzkD,OAAS,GAChDw5C,EAAK0D,KAAKC,KAAKC,KAAKkG,MAAMtjD,OAAS,GAAKw5C,EAAK0D,KAAKC,KAAKC,KAAKqH,MAAMzkD,OAAS,IAC3Ei4C,EAAQmM,yBAAyB5K,EAAM9B,EAAQA,EAAOkO,eAAgBnD,EAAKwB,mBAElF,CACA,CACI,GAAIxB,EAAK+B,KAAM,CACdhL,EAAK4M,yBAA0B,EAC/B,IAAIC,EAAe5D,EAAKoD,mBACxB,IAAKjjC,EAAI,EAAGA,EAAI6/B,EAAK+B,KAAKjqB,QAAQv6B,OAAQ4iB,IACzCyjC,GAAgB5D,EAAK+B,KAAKjqB,QAAQ3X,GAAGqnB,cACrCyN,EAAS8B,EAAKzD,QAAQsQ,EAAa,IAC5Bnc,WAAauY,EAAK+B,KAAKjqB,QAAQ3X,GAAGsnB,UAE/C,CACA,CAGA,EAMA+N,EAAQz6B,UAAU4hC,UAAY,SAAS5F,EAAMoG,GAC5C,IAAIngD,EACAi4C,EAAS8B,EAAKzD,QAAQ6J,GAE1B,IAAK//C,KAAKi7C,KACT,OAAO,KAGR,GAAKpD,EAAOzyC,MAML,GAAIyyC,EAAOsH,aAAetH,EAAOvzC,KAEvC,OAAOuzC,OANPA,EAAOzyC,KAAO,IAAI/E,WAAWw3C,EAAOvzC,MACpCuzC,EAAOsH,YAAc,EACrBn/C,KAAKkgD,iBAAmBrI,EAAOvzC,KAC/BuX,EAAII,MAAM,UAAW,sBAAsB8jC,EAAU,cAAcpG,EAAK8D,KAAKvS,SAAS,YAAY2M,EAAOvzC,KAAK,YAAYtE,KAAKkgD,gBAAgB,KAOhJ,OAAY,CACX,IAAI92B,EAAQppB,KAAKsQ,OAAOyY,cAAa,EAAM8uB,EAAOh4C,OAASg4C,EAAOsH,aAAa,GAC/E,KAAI/1B,GAAQ,GAsCX,OAAO,KApCP,IAAIq9B,GADJ7mD,EAASI,KAAKsQ,OAAO8W,QAAQgC,IACCpnB,YAAc61C,EAAOh4C,OAASg4C,EAAOsH,YAAcv/C,EAAO6nB,WACxF,GAAIowB,EAAOvzC,KAAOuzC,EAAOsH,aAAesH,EAevC,OAZA5qC,EAAII,MAAM,UAAU,mBAAmB8jC,EAAU,uBAAuBlI,EAAOsH,YAAY,aACzFtH,EAAOh4C,OAAOg4C,EAAOsH,YAAcv/C,EAAO6nB,WAAW,gBAAgBowB,EAAOvzC,KAAOuzC,EAAOsH,aAAa,eAAetH,EAAOvzC,KAAK,KAEpI4b,EAAWqB,OAAOs2B,EAAOzyC,KAAKxF,OAAQi4C,EAAOsH,YAC3Bv/C,EAAQi4C,EAAOh4C,OAAOg4C,EAAOsH,YAAcv/C,EAAO6nB,UAAWowB,EAAOvzC,KAAOuzC,EAAOsH,aAGpGv/C,EAAOqoB,WAAa4vB,EAAOvzC,KAAOuzC,EAAOsH,YACzCn/C,KAAKsQ,OAAOoX,iBAEZmwB,EAAOsH,YAActH,EAAOvzC,KAErBuzC,EAIP,GAAyB,IAArB4O,EAAwB,OAAO,KAEnC5qC,EAAII,MAAM,UAAU,mBAAmB8jC,EAAU,+BAA+BlI,EAAOsH,YAAY,aACjGtH,EAAOh4C,OAAOg4C,EAAOsH,YAAcv/C,EAAO6nB,WAAW,eAAeg/B,EAAiB,eAAe5O,EAAOvzC,KAAK,KAElH4b,EAAWqB,OAAOs2B,EAAOzyC,KAAKxF,OAAQi4C,EAAOsH,YAC3Bv/C,EAAQi4C,EAAOh4C,OAAOg4C,EAAOsH,YAAcv/C,EAAO6nB,UAAWg/B,GAC/E5O,EAAOsH,aAAesH,EAGtB7mD,EAAOqoB,WAAaw+B,EACpBzmD,KAAKsQ,OAAOoX,gBAOhB,CACA,EAGA0wB,EAAQz6B,UAAUsiC,cAAgB,SAAStG,EAAMoG,GAChD,IAAIlI,EAAS8B,EAAKzD,QAAQ6J,GAC1B,OAAIlI,EAAOzyC,MACVpF,KAAKkgD,iBAAmBrI,EAAOvzC,KAC/BuzC,EAAOzyC,KAAO,KACdyyC,EAAOsH,YAAc,EACdtH,EAAOvzC,MAEP,CAET,EAEA8zC,EAAQz6B,UAAUk+B,2BAA6B,WAC9C,OAAO77C,KAAKkgD,eACb,EAGA9H,EAAQz6B,UAAU+oC,UAAY,WAC7B,IAAIxjD,EACAyjD,EAAS,GACb,IAAKzjD,EAAI,EAAGA,EAAIlD,KAAKi7C,KAAKmC,MAAMj9C,OAAQ+C,IAEnCA,EAAE,IACLyjD,GAAQ,KAETA,GAJW3mD,KAAKi7C,KAAKmC,MAAMl6C,GAIZm6C,KAAKC,KAAKC,KAAKC,KAAK9iB,QAAQ,GAAGuW,WAE/C,OAAO0V,CACR,EAGAvO,EAAQz6B,UAAUioC,YAAc,SAAS17C,GACxC,IAAIhH,EACJ,IAAKlD,KAAKi7C,OAASj7C,KAAKi7C,KAAKoB,KAAM,OAAO,KAC1C,IAAKn5C,EAAI,EAAGA,EAAIlD,KAAKi7C,KAAKoB,KAAKuK,MAAMzmD,OAAQ+C,IAAK,CACjD,IAAIwiD,EAAO1lD,KAAKi7C,KAAKoB,KAAKuK,MAAM1jD,GAChC,GAAIwiD,EAAKxa,UAAYhhC,EAAI,OAAOw7C,CAClC,CACC,OAAO,IACR,EAGAtN,EAAQz6B,UAAUi8B,aAAe,SAAS1vC,GACzC,QAAkBzF,IAAdzE,KAAKi7C,KACR,OAAO,KAER,IAAK,IAAIl4B,EAAI,EAAGA,EAAI/iB,KAAKi7C,KAAKmC,MAAMj9C,OAAQ4iB,IAAK,CAChD,IAAI42B,EAAO35C,KAAKi7C,KAAKmC,MAAMr6B,GAC3B,GAAI42B,EAAK8D,KAAKvS,UAAYhhC,EAAI,OAAOyvC,CACvC,CACC,OAAO,IACR,EAGAvB,EAAQz6B,UAAUkpC,cAAgB,EAElCzO,EAAQz6B,UAAU+9B,gBAAkB,WACnC,IAEIx4C,EAAG6f,EACHyb,EAHAF,EAAQt+B,KAAKs+B,MACbgb,EAAgBt5C,KAAKs5C,cAGrBmC,EAAOz7C,KAAKy7C,KAChB,GAAIA,cACch3C,IAAdg3C,EAAKiC,WACSj5C,IAAdg3C,EAAKqL,KAAT,CACA,IAAK5jD,EAAI,EAAGA,EAAIu4C,EAAKqL,KAAK7oB,WAAW99B,OAAQ+C,KAC5Cs7B,EAAO,CAAA,GACFt0B,GAAKuxC,EAAKqL,KAAK7oB,WAAW/6B,GAAGu7B,QAClCH,EAAME,EAAKt0B,IAAMs0B,EACjBA,EAAKuoB,OAAS,GACdvoB,EAAKp0B,KAAOqxC,EAAKqL,KAAK7oB,WAAW/6B,GAAGm8B,UAChCoc,EAAKqL,KAAK7oB,WAAW/6B,GAAG8jD,iBAAmB,IAC9CxoB,EAAKyoB,WAAaxL,EAAKyL,KAAKC,YAAY1L,EAAKqL,KAAK7oB,WAAW/6B,GAAG8jD,iBAAiB,IAE9EvL,EAAKqL,KAAK7oB,WAAW/6B,GAAGu8B,UAC3BjB,EAAKzwB,KAAO0tC,EAAKqL,KAAK7oB,WAAW/6B,GAAGu8B,UAEpCjB,EAAKzwB,KAAO,OAEbywB,EAAKc,aAAemc,EAAKqL,KAAK7oB,WAAW/6B,GAAGo8B,aAC5Cd,EAAKe,iBAAmBkc,EAAKqL,KAAK7oB,WAAW/6B,GAAGq8B,iBAChDf,EAAKkB,cAAgB+b,EAAKqL,KAAK7oB,WAAW/6B,GAAGw8B,cAE9C,GAAI+b,EAAK2L,KACR,IAAKlkD,EAAI,EAAGA,EAAIu4C,EAAK2L,KAAK15B,MAAMvtB,OAAQ+C,IACvCmkD,aAAe,CAAA,EACfA,aAAan9C,GAAKuxC,EAAK2L,KAAK15B,MAAMxqB,GAAGwL,SACrC24C,aAAa3rB,WAAa+f,EAAK2L,KAAK15B,MAAMxqB,GAAGw4B,WAC7C2rB,aAAat5C,KAAO0tC,EAAK2L,KAAK15B,MAAMxqB,GAAG6K,KACvCurC,EAAc+N,aAAan9C,IAAMm9C,aAGnC,GAAI5L,EAAK6L,KACR,IAAIpkD,EAAI,EAAGA,EAAIu4C,EAAK6L,KAAKhpB,MAAMn+B,OAAQ+C,IAAK,CAE3C,IAAIqkD,EAAU9L,EAAK6L,KAAKhpB,MAAMp7B,GAM9B,OALAs7B,EAAOF,EAAMipB,EAAQ9oB,SACgB,IAAjC8oB,EAAQ10B,uBACXhX,EAAIpG,KAAK,6DACT+oB,EAAKgpB,OAAS/L,EAAKgM,KAAK/5B,MAAM65B,EAAQ10B,qBAAqB,IAErD00B,EAAQ7oB,qBACd,KAAK,EAEL,KAAK,EACL,MACA,KAAK,EACL7iB,EAAIpG,KAAK,yDAKV,IAFA+oB,EAAKK,QAAU,GACfL,EAAKl6B,KAAO,EACPye,EAAI,EAAGA,EAAIwkC,EAAQ1oB,QAAQ1+B,OAAQ4iB,IACvCyb,EAAKK,QAAQ9b,GAAK,CAAA,EAClByb,EAAKK,QAAQ9b,GAAGljB,OAAS0nD,EAAQ1oB,QAAQ9b,GAAGic,cAAgBuoB,EAAQ5oB,YACjC,GAA/B4oB,EAAQ7oB,sBACXF,EAAKK,QAAQ9b,GAAGljB,QAAU47C,EAAKiM,KAAKj8C,MAAQgwC,EAAKiM,KAAKz5B,UAEvDuQ,EAAKK,QAAQ9b,GAAG5iB,OAASonD,EAAQ1oB,QAAQ9b,GAAGkc,cAC5CT,EAAKK,QAAQ9b,GAAGo8B,YAAc,EAC9B3gB,EAAKl6B,MAAQk6B,EAAKK,QAAQ9b,GAAG5iB,MAEjC,CAKC,GAHIs7C,EAAKkM,OACRrpB,EAAMmd,EAAKkM,KAAKtlB,SAASulB,SAAU,GAEhCnM,EAAKoM,KACR,IAAK3kD,EAAE,EAAGA,EAAGu4C,EAAKoM,KAAK7nB,WAAW7/B,OAAQ+C,IAAK,CAC9C,IAAIkkC,EAAMqU,EAAKoM,KAAK7nB,WAAW98B,GAC/B,IAAK6f,EAAE,EAAGA,EAAEqkB,EAAIpH,WAAW7/B,OAAQ4iB,IAClCub,EAAM8I,EAAIQ,cAAcmf,OAAOl+C,KAAK,CAACkF,KAAMq5B,EAAIr5B,KAAM7D,GAAIk9B,EAAIpH,WAAWjd,IAE5E,CAEC,GAAI04B,EAAKqM,KACR,IAAK,IAAI9kC,EAAI,EAAGA,EAAIy4B,EAAKqM,KAAKC,MAAM5nD,OAAQ6iB,IAAK,CAChD,IAAIglC,EAAOvM,EAAKqM,KAAKC,MAAM/kC,GAC3B,IAAK9f,EAAI,EAAGA,EAAI8kD,EAAKroB,aAAax/B,OAAQ+C,IAAK,CAC9C,IAAI+kD,EAAcD,EAAKroB,aAAaz8B,GAKpC,IAJAs7B,EAAOF,EAAM2pB,EAAY/9C,OAExBs0B,EAAO8a,EAAc2O,EAAY/9C,KAE9Bs0B,EAKH,SAJwB/5B,IAApB+5B,EAAK0pB,aACR1pB,EAAK0pB,WAAa,CAAA,EAClB1pB,EAAK0pB,WAAWx6B,MAAQ,IAEpB3K,EAAI,EAAGA,EAAIklC,EAAY1xC,MAAMpW,OAAQ4iB,IAAK,CAC9C,IAAIolC,EAAYF,EAAY1xC,MAAMwM,GAClC,GAAIolC,EAAUpoB,eAAiB,GAAKooB,EAAUpoB,eAAe,EAAI0b,EAAKqM,KAAKM,KAAK16B,MAAMvtB,OAAQ,CAC7F,IAAIkoD,EAAU5M,EAAKqM,KAAKM,KAAK16B,MAAMy6B,EAAUpoB,eAAe,GAC5DvB,EAAK0pB,WAAWG,EAAQt6C,MAAQs6C,EAChC7pB,EAAK0pB,WAAWx6B,MAAM7kB,KAAKw/C,EAClC,CACA,CAEA,CACA,CA/F8B,CAiG9B,EAEAjQ,EAAQz6B,UAAU2qC,QAAU,SAASjmB,GACpC,IAAIziC,EACA4+B,EAEJ,IAAKx+B,KAAKy7C,KACT,OAAO,KAIR,KADCjd,EAAOx+B,KAAKs+B,MAAM+D,IACTj9B,MAAQo5B,EAAKl6B,KAEtBk6B,EAAKp5B,KAAO,IAAI/E,WAAWm+B,EAAKl6B,MAChCk6B,EAAK2gB,YAAc,EACnBn/C,KAAK6mD,eAAiBroB,EAAKl6B,KAC3BuX,EAAII,MAAM,UAAW,oBAAoBomB,EAAQ,YAAY7D,EAAKl6B,KAAK,YAAYtE,KAAK6mD,cAAc,UAChG,GAAIroB,EAAK2gB,cAAgB3gB,EAAKl6B,KAEpC,OAAOk6B,EAKR,IAAK,IAAIt7B,EAAI,EAAGA,EAAIs7B,EAAKK,QAAQ1+B,OAAQ+C,IAAK,CAC7C,IAAI47B,EAASN,EAAKK,QAAQ37B,GAC1B,GAAI47B,EAAOqgB,cAAgBrgB,EAAO3+B,OAAlC,CAGC,IAAIipB,EAAQppB,KAAKsQ,OAAOyY,cAAa,EAAM+V,EAAOj/B,OAASi/B,EAAOqgB,aAAa,GAC/E,KAAI/1B,GAAQ,GAqCX,OAAO,KAnCP,IAAIq9B,GADJ7mD,EAASI,KAAKsQ,OAAO8W,QAAQgC,IACCpnB,YAAc88B,EAAOj/B,OAASi/B,EAAOqgB,YAAcv/C,EAAO6nB,WACxF,KAAIqX,EAAO3+B,OAAS2+B,EAAOqgB,aAAesH,GA+BzC,OAZA5qC,EAAII,MAAM,UAAU,iBAAiBomB,EAAQ,YAAYn/B,EAAE,+BAA+B47B,EAAOqgB,YAAY,aAC3GrgB,EAAOj/B,OAAOi/B,EAAOqgB,YAAcv/C,EAAO6nB,WAAW,eAAeg/B,EACrE,sBAAsB3nB,EAAO3+B,OAAO,oBAAoBq+B,EAAKl6B,KAAK,KAEnE4b,EAAWqB,OAAOid,EAAKp5B,KAAKxF,OAAQ4+B,EAAK2gB,YACvBv/C,EAAQk/B,EAAOj/B,OAAOi/B,EAAOqgB,YAAcv/C,EAAO6nB,UAAWg/B,GAC/E3nB,EAAOqgB,aAAesH,EACtBjoB,EAAK2gB,aAAesH,EAGpB7mD,EAAOqoB,WAAaw+B,EACpBzmD,KAAKsQ,OAAOoX,iBACL,KA5BP7L,EAAII,MAAM,UAAU,iBAAiBomB,EAAQ,YAAYn/B,EAAE,uBAAuB47B,EAAOqgB,YACxF,aAAargB,EAAOj/B,OAAOi/B,EAAOqgB,YAAcv/C,EAAO6nB,WAAW,gBAAgBqX,EAAO3+B,OAAS2+B,EAAOqgB,aACzG,sBAAsBrgB,EAAO3+B,OAAO,oBAAoBq+B,EAAKl6B,KAAK,KAEnE4b,EAAWqB,OAAOid,EAAKp5B,KAAKxF,OAAQ4+B,EAAK2gB,YACvBv/C,EAAQk/B,EAAOj/B,OAAOi/B,EAAOqgB,YAAcv/C,EAAO6nB,UAAWqX,EAAO3+B,OAAS2+B,EAAOqgB,aAGtGv/C,EAAOqoB,WAAa6W,EAAO3+B,OAAS2+B,EAAOqgB,YAC3Cn/C,KAAKsQ,OAAOoX,iBAEZ8W,EAAK2gB,aAAgBrgB,EAAO3+B,OAAS2+B,EAAOqgB,YAC5CrgB,EAAOqgB,YAAcrgB,EAAO3+B,MAqBjC,CACA,CACC,OAAIq+B,EAAK2gB,cAAgB3gB,EAAKl6B,KAEtBk6B,EAEA,IAET,EAGA4Z,EAAQz6B,UAAU4qC,YAAc,SAASlmB,GACxC,IAAI7D,EAAOx+B,KAAKs+B,MAAM+D,GACtB,GAAI7D,EAAKp5B,KAAM,CACdpF,KAAK6mD,eAAiBroB,EAAKl6B,KAC3Bk6B,EAAKp5B,KAAO,KACZo5B,EAAK2gB,YAAc,EACnB,IAAK,IAAIj8C,EAAI,EAAGA,EAAIs7B,EAAKK,QAAQ1+B,OAAQ+C,IAC3Bs7B,EAAKK,QAAQ37B,GACnBi8C,YAAc,EAEtB,OAAO3gB,EAAKl6B,IACd,CACE,OAAO,CAET,EAGA8zC,EAAQz6B,UAAUg+B,aAAe,SAAS7jC,GACzC,IAAI,IAAI5U,KAAKlD,KAAKs+B,MAAO,CACxB,IAAIE,EAAOx+B,KAAKs+B,MAAMp7B,GACtBlD,KAAKsoD,QAAQ9pB,EAAKt0B,IACd4N,IAAa0mB,EAAKgqB,OACrB1wC,EAAS0mB,GACTA,EAAKgqB,MAAO,EACZhqB,EAAKp5B,KAAO,KAEf,CACA,EAEAgzC,EAAQz6B,UAAU8qC,QAAU,SAASr+C,GACpC,IAAI,IAAIlH,KAAKlD,KAAKs+B,MAAO,CACxB,IAAIE,EAAOx+B,KAAKs+B,MAAMp7B,GACtB,GAAIs7B,EAAKp0B,OAASA,EACjB,OAAOo0B,EAAKt0B,EAEf,CACC,OAAO,CACR,EAEAkuC,EAAQz6B,UAAU+qC,eAAiB,WAClC,OAAK1oD,KAAKy7C,KAGFz7C,KAAKy7C,KAAKiC,KAAKhhB,QAFf,IAIT,EAEA0b,EAAQz6B,UAAUgrC,eAAiB,WAClC,OAAK3oD,KAAKy7C,MAASz7C,KAAKy7C,KAAKkM,KAGrB3nD,KAAKsoD,QAAQtoD,KAAKy7C,KAAKkM,KAAKtlB,SAF5B,IAIT,EAEA+V,EAAQz6B,UAAUirC,0BAA4B,SAASvH,GACtD,IAAI/nC,EAAU+nC,GAAY,CAAA,EACtB7iB,EAAO,KAMX,GAAY,OAJXA,EADGllB,EAAQuvC,OACJ7oD,KAAKsoD,QAAQhvC,EAAQuvC,QAErB7oD,KAAK2oD,kBAEK,OAAO,KAEzB,IAAIG,EAAO,IAAI1Q,EACf0Q,EAAK1H,iBAAkB,EAEvB,IAAI2H,EAAe,CAAEh7C,KAAMywB,EAAKzwB,KAAM8zC,kBAAmBrjB,EAAK0pB,WAAWx6B,OACrE8Q,EAAK0pB,WAAWc,OACnBD,EAAa/1B,MAAQwL,EAAK0pB,WAAWc,KAAK5oB,YAC1C2oB,EAAa91B,OAASuL,EAAK0pB,WAAWc,KAAK3oB,cAE5C,IAAI4oB,EAAUH,EAAKxH,SAASyH,GAC5B,OAAIE,GACHH,EAAK7G,UAAUgH,EAASzqB,EAAKp5B,MACtB0jD,GAEA,IAET,EAIA1Q,EAAQz6B,UAAUxY,MAAQ,SAAS+jD,GAClC,IAAK,IAAIhmD,EAAE,EAAGA,EAAElD,KAAK0tB,MAAMvtB,OAAQ+C,IAClClD,KAAK0tB,MAAMxqB,GAAGiC,MAAM+jD,EAEtB,EAEA9Q,EAAQz6B,UAAU0hC,eAAiB,SAASnU,EAAUie,EAAcnH,GACnE,IAAIrI,EAAO35C,KAAK45C,aAAa1O,GACzB2M,EAAS73C,KAAKu/C,UAAU5F,EAAMwP,GAClC,GAAc,MAAVtR,EAEH,OADA73C,KAAKk/C,8BAA8BvF,EAAKzD,QAAQiT,IACzC,KAGR,IAAI74C,EAAS0xC,GAAW,IAAI9hC,EAC5B5P,EAAO6P,WAAaD,EAAWe,WAE/B,IAAIshC,EAAOviD,KAAKwiD,uBAAuB3K,GACvC0K,EAAKp9C,MAAMmL,GAGXiyC,EAAKE,MAAM,GAAGC,MAAM,GAAGrW,YAAckW,EAAKj+C,KAAK,EAC/CuX,EAAII,MAAM,SAAU,wCAAwCsmC,EAAKE,MAAM,GAAGC,MAAM,GAAGrW,aACnF/7B,EAAO4W,aAAaq7B,EAAKE,MAAM,GAAGC,MAAM,GAAG3M,qBAAsBwM,EAAKE,MAAM,GAAGC,MAAM,GAAGrW,aAExF,IAAI+c,EAAO,IAAIl9B,EAAUm9B,QAGzB,OAFAD,EAAKhkD,KAAOyyC,EAAOzyC,KACnBgkD,EAAKjkD,MAAMmL,GACJA,CACR,EAGA8nC,EAAQkR,2BAA6B,SAAS5M,EAAMzB,EAAMsO,EAAgBhd,GACzE,IAAIrpC,EAKJ2Y,EAAII,MAAM,UAAW,qCAErB,IAAI3L,EAAS,IAAI4P,EACjB5P,EAAO6P,WAAaD,EAAWe,WAC/By7B,EAAKv3C,MAAMmL,GAGX,IAAI+rC,EAAOpB,EAAKlqB,IAAI,QAIpB,IAHIw4B,GACHlN,EAAKtrB,IAAI,QAAQ1uB,IAAI,oBAAqBknD,GAEtCrmD,EAAI,EAAGA,EAAI+3C,EAAKmC,MAAMj9C,OAAQ+C,IAClCm5C,EAAKtrB,IAAI,QAAQ1uB,IAAI,WAAY44C,EAAKmC,MAAMl6C,GAAGu6C,KAAKvS,UAC/C7oC,IAAI,mCAAoC,GACxCA,IAAI,0BAA2BkqC,GAC/BlqC,IAAI,sBAAuB,GAC3BA,IAAI,uBAAwB,OAIlC,OAFA44C,EAAK91C,MAAMmL,GAEJA,EAAO1Q,MAEf,EAEAw4C,EAAQz6B,UAAU4F,KAAO,SAASnZ,GACjC,IAAIkG,EAAS,IAAI4P,EACjB5P,EAAO6P,WAAaD,EAAWe,WAC/BjhB,KAAKmF,MAAMmL,GACXA,EAAOiT,KAAKnZ,EACb,EAEAguC,EAAQz6B,UAAU6rC,UAAY,WAC7B,IAAIl5C,EAAS,IAAI4P,EAGjB,OAFA5P,EAAO6P,WAAaD,EAAWe,WAC/BjhB,KAAKmF,MAAMmL,GACJA,EAAO1Q,MACf,EAEAw4C,EAAQz6B,UAAU8rC,uBAAyB,WAC1C,IAAIvmD,EAGAwmD,EACA/P,EACAgQ,EAUJ,IATuB,OAAnB3pD,KAAK64C,WACRh9B,EAAIpG,KAAK,SAAU,iCAEfzV,KAAKk5C,6BACTl5C,KAAKk5C,4BAA6B,EAClCl5C,KAAKo5C,eAAiB,EACtBp5C,KAAK8iD,eAEN4G,EAAW,GACNxmD,EAAI,EAAGA,EAAIlD,KAAKg5C,iBAAiB74C,OAAQ+C,IAAK,CAClD,IAAI+3C,EAAO,IAAI/uB,EAAU09B,QACzB3O,EAAKkB,KAAOn8C,KAAKi7C,KAAKkB,KACnBlB,EAAKvtB,MAAM7kB,KAAKoyC,EAAKkB,MACxBxC,EAAO35C,KAAK45C,aAAa55C,KAAKg5C,iBAAiB91C,GAAGgH,IAClD+wC,EAAKvtB,MAAM7kB,KAAK8wC,GAChBsB,EAAKmC,MAAMv0C,KAAK8wC,IAChBgQ,EAAM,CAAA,GACFz/C,GAAKyvC,EAAK8D,KAAKvS,SACnBye,EAAIjQ,KAAO15C,KAAKg5C,iBAAiB91C,GAAGw2C,KACpCiQ,EAAI/pD,OAASw4C,EAAQkR,2BAA2BtpD,KAAK08C,KAAMzB,EAAOj7C,KAAKi7C,KAAKoB,MAAQr8C,KAAKi7C,KAAKoB,KAAKC,KAAOt8C,KAAKi7C,KAAKoB,KAAKC,KAAKhb,uBAAmB78B,EAAazE,KAAKi7C,KAAKmC,MAAMl6C,GAAGgzC,QAAQ/1C,OAAO,EAAIH,KAAKi7C,KAAKmC,MAAMl6C,GAAGgzC,QAAQ,GAAG16B,SAAU,GAC5OkuC,EAAS7gD,KAAK8gD,EAChB,CACC,OAAOD,CACR,EAOAx9B,EAAUiB,IAAIxP,UAAUksC,YAAc,SAASC,GAC9C9pD,KAAKsE,MAAQ,EACTtE,KAAKsE,KAAOgf,IACftjB,KAAKsE,MAAQ,GAEI,SAAdtE,KAAK+N,OACR/N,KAAKsE,MAAQ,IAEdwlD,EAAO1tC,IAAI0tC,EAAOC,OAAO,QAAQ/pD,KAAKsE,MACtCwlD,EAAO1tC,IAAI0tC,EAAOC,OAAO,QAAQ/pD,KAAK+N,KACvC,EAEAme,EAAUgB,QAAQvP,UAAUksC,YAAc,SAASC,GAClD9pD,KAAKsE,MAAQ,EACb4nB,EAAUiB,IAAIxP,UAAUksC,YAAY/+B,KAAK9qB,KAAM8pD,GAC/CA,EAAO1tC,IAAI0tC,EAAOC,OAAO,WAAW/pD,KAAKgM,SACzC89C,EAAO1tC,IAAI0tC,EAAOC,OAAO,SAAS/pD,KAAKgrB,MACxC,EAEAkB,EAAUiB,IAAIxP,UAAUqsC,MAAQ,SAASF,GACxC9pD,KAAK6pD,YAAYC,EAClB,EAEA59B,EAAUkB,aAAazP,UAAUqsC,MAAQ,SAASF,GACjD9pD,KAAK6pD,YAAYC,GACjB,IAAK,IAAI5mD,EAAE,EAAGA,EAAElD,KAAK0tB,MAAMvtB,OAAQ+C,IAClC,GAAIlD,KAAK0tB,MAAMxqB,GAAI,CAClB,IAAI+mD,EAAcH,EAAOC,OACzBD,EAAOC,QAAU,IACjB/pD,KAAK0tB,MAAMxqB,GAAG8mD,MAAMF,GACpBA,EAAOC,OAASE,CACnB,CAEA,EAEA7R,EAAQz6B,UAAUqsC,MAAQ,SAASF,GAClCA,EAAOC,OAAS,GAChB,IAAK,IAAI7mD,EAAE,EAAGA,EAAElD,KAAK0tB,MAAMvtB,OAAQ+C,IAC9BlD,KAAK0tB,MAAMxqB,IACdlD,KAAK0tB,MAAMxqB,GAAG8mD,MAAMF,EAGvB,EAEA59B,EAAUwoB,QAAQ/2B,UAAUqsC,MAAQ,SAASF,GAC5C59B,EAAUgB,QAAQvP,UAAUksC,YAAY/+B,KAAK9qB,KAAM8pD,GACnDA,EAAO1tC,IAAI0tC,EAAOC,OAAO,kBAAkB/pD,KAAKohC,eAChD0oB,EAAO1tC,IAAI0tC,EAAOC,OAAO,sBAAsB/pD,KAAKqhC,mBACpDyoB,EAAO1tC,IAAI0tC,EAAOC,OAAO,cAAc/pD,KAAKi7B,WAC5C6uB,EAAO1tC,IAAI0tC,EAAOC,OAAO,aAAa/pD,KAAKwb,UAC3CsuC,EAAO1tC,IAAI0tC,EAAOC,OAAO,SAAS/pD,KAAKyhC,MACvCqoB,EAAO1tC,IAAI0tC,EAAOC,OAAO,YAAY/pD,KAAK0hC,QAAQ,IAClDooB,EAAO1tC,IAAI0tC,EAAOC,OAAO,WAAW/pD,KAAK2hC,OAAO9sB,KAAK,OACrDi1C,EAAO1tC,IAAI0tC,EAAOC,OAAO,kBAAkB/pD,KAAK4hC,cACjD,EAEA1V,EAAU0pB,QAAQj4B,UAAUqsC,MAAQ,SAASF,GAC5C59B,EAAUgB,QAAQvP,UAAUksC,YAAY/+B,KAAK9qB,KAAM8pD,GACnDA,EAAO1tC,IAAI0tC,EAAOC,OAAO,kBAAkB/pD,KAAKohC,eAChD0oB,EAAO1tC,IAAI0tC,EAAOC,OAAO,sBAAsB/pD,KAAKqhC,mBACpDyoB,EAAO1tC,IAAI0tC,EAAOC,OAAO,aAAa/pD,KAAKkrC,UAC3C4e,EAAO1tC,IAAI0tC,EAAOC,OAAO,aAAa/pD,KAAKwb,UAC3CsuC,EAAO1tC,IAAI0tC,EAAOC,OAAO,YAAY/pD,KAAK0hC,QAAQ,IAClDooB,EAAO1tC,IAAI0tC,EAAOC,OAAO,WAAW/pD,KAAK2hC,OAAO9sB,KAAK,OACrDi1C,EAAO1tC,IAAI0tC,EAAOC,OAAO,UAAU/pD,KAAKgsC,OACxC8d,EAAO1tC,IAAI0tC,EAAOC,OAAO,oBAAoB/pD,KAAK+oC,iBAClD+gB,EAAO1tC,IAAI0tC,EAAOC,OAAO,UAAU/pD,KAAKgzB,OACxC82B,EAAO1tC,IAAI0tC,EAAOC,OAAO,WAAW/pD,KAAKizB,OAC1C,EAKA,IAAIi3B,EAAS,CAEbA,WAAoB,SAAUC,EAAeC,GAE5C,IAAIC,OAAkC5lD,IAAlB0lD,GAA8BA,EAC9CrB,EAAO,IAAI1Q,EAAQgS,GAEvB,OADAtB,EAAK1H,iBAAmBiJ,EACjBvB,CACR,GAGCzrC,EAAAitC,WAAqBJ,EAAOI,qBCzhR7BC,GAAAA,UAAcC,QAAQ7sC,UAAUxY,MAAQ,SAAUmL,GAejD,GAdAtQ,KAAKsE,KAAO,GACsB,IAA9BtE,KAAKs6B,uBACRt6B,KAAKsE,MAAQ,EAAItE,KAAKy6B,eAAgBt6B,QAGvCH,KAAK0zC,YAAYpjC,GAEjBA,EAAO+U,WAAWrlB,KAAKgI,SACvBsI,EAAO+U,WAAWrlB,KAAKk6B,oBACvB5pB,EAAO6U,YAAYnlB,KAAKm6B,SACxB7pB,EAAO0U,YAAYhlB,KAAKo6B,iBACxB9pB,EAAOoU,WAAW1kB,KAAKq6B,YACvB/pB,EAAO+U,WAAWrlB,KAAKs6B,sBAEW,IAA9Bt6B,KAAKs6B,qBAA4B,CACpC,IAAKt6B,KAAKu6B,cAAgBv6B,KAAKw6B,aAAc,MAAM,IAAI75B,MAAM,iDAC7D2P,EAAO+U,WAAWrlB,KAAKu6B,aACvBjqB,EAAO+U,WAAWrlB,KAAKw6B,cACvB,IAAK,MAAMiwB,KAAWzqD,KAAKy6B,eAC1BnqB,EAAO+U,WAAWolC,EAEpB,CACD,QCnCaC,GACZC,GACAC,GACAz0C,GACA00C,GAAW,EAEXtnD,OAEA,WAAAxD,GACCC,MAAK2qD,EAAO,IAAIG,WAChB9qD,MAAK2qD,EAAKv3C,OAEVpT,KAAKuD,OAAS,IAAIyQ,gBAAgB,CACjCoH,UAAW,CAACwvC,EAAOtvC,KAClB,IACC,OA4IL,SAAyBsvC,GAExB,YAA0CnmD,IAAlCmmD,EAAwBrM,KACjC,CA/ISwM,CAAgBH,GACZ5qD,MAAKoT,EAAMw3C,EAAOtvC,GAElBtb,MAAKyb,EAASmvC,EAAOtvC,EAE9B,CAAE,MAAO5I,GAER,MADA/E,QAAQC,MAAM,qCAAsC8E,GAC9CA,CACP,IAGH,CAEA,EAAAU,CAAMw3C,EAAsBtvC,GAC3B,GAAItb,MAAKmW,EAAQ,MAAM,IAAIxV,MAAM,4BAEjC,IAAI49C,EAAQqM,EAAMrM,MAAMl4B,UAAU,EAAG,GACxB,QAATk4B,IACHA,EAAQ,QAGT,MAAMjlC,EAA4B,CACjCvL,KAAMwwC,EACNtjB,UAAW,KAWZ,IA+GF,SAAuB2vB,GACtB,YAAoDnmD,IAA5CmmD,EAA6BI,UACtC,CAzHMC,CAAcL,IAIjBtxC,EAAQia,cAAgBq3B,EAAMM,iBAC9B5xC,EAAQma,WAAam3B,EAAMO,aAJ3B7xC,EAAQ0Z,MAAQ43B,EAAMI,WACtB1xC,EAAQ2Z,OAAS23B,EAAMQ,cAMnBR,EAAMje,YAAa,MAAM,IAAIhsC,MAAM,6BACxC,MAAMypB,EAAOwgC,EAAMje,YAEnB,GAAc,SAAV4R,EACHjlC,EAAQqoC,uBAAyBv3B,OAC3B,GAAc,SAAVm0B,EACVjlC,EAAQsoC,wBAA0Bx3B,MAC5B,IAAc,SAAVm0B,EAYV,MAAM,IAAI59C,MAAM,sBAAsB49C,KAZV,CAG5B,MAAM8M,EAAO,IAAId,aAAcC,aAAQ/lD,GAGjCW,EAAO,IAAIkmD,GAAAA,WAAWlhC,EAAM,EAAGkhC,GAAAA,WAAWhrC,eAChD+qC,EAAK9gC,MAAMnlB,GAEXkU,EAAQqzB,YAAc0e,EACtB/xC,EAAQokC,KAAO,MAChB,CAEA,CAGA,GADA19C,MAAKmW,EAASnW,MAAK2qD,EAAKrJ,SAAShoC,IAC5BtZ,MAAKmW,IAAWnW,MAAK2qD,EAAKjO,OAAS18C,MAAK2qD,EAAK1P,KAAM,MAAM,IAAIt6C,MAAM,kCAExE,MAAMf,EAASkrD,GAAAA,QAAYxB,2BAA2BtpD,MAAK2qD,EAAKjO,KAAM18C,MAAK2qD,EAAK1P,KAAM,EAAG,GACnF71C,EAAO,IAAI/E,WAAWT,GAE5B0b,EAAWG,QAAQ,CAClB1N,KAAM,OACNiN,UAAW,EACXQ,SAAU,EACVpW,QAEF,CAEA,EAAAqW,CAASmvC,EAAqBtvC,GAE7B,GAAkB,OAAdsvC,EAAM78C,KACT/N,MAAK6qD,GAAY,OACX,GAAqB,GAAjB7qD,MAAK6qD,EACf,MAAM,IAAIlqD,MAAM,4BAIjB,IAAKX,MAAK4qD,EAET,YADA5qD,MAAK4qD,EAASA,GAIf,MAAMpvC,EAAWovC,EAAM5vC,UAAYhb,MAAK4qD,EAAO5vC,UAIzCpb,EAAS,IAAIS,WAAWL,MAAK4qD,EAAO5oD,YAG1C,GAFAhC,MAAK4qD,EAAOW,OAAO3rD,IAEdI,MAAKmW,EAAQ,MAAM,IAAIxV,MAAM,0BAGlCX,MAAK2qD,EAAK1I,UAAUjiD,MAAKmW,EAAQvW,EAAQ,CACxC4b,WACA46B,IAAKp2C,MAAK4qD,EAAO5vC,UACjBylC,IAAKzgD,MAAK4qD,EAAO5vC,UACjB0lC,QAA6B,OAApB1gD,MAAK4qD,EAAO78C,OAGtB,MAAMuC,EAAS,IAAIg7C,GAAAA,gBAAW7mD,EAAW,EAAG6mD,GAAAA,WAAWrqC,YAIvD,OAAU,CACT,MAAMshC,EAAOviD,MAAK2qD,EAAKrS,MAAMr1C,QACvBmmD,EAAOppD,MAAK2qD,EAAKtS,MAAMp1C,QAE7B,IAAKs/C,IAAS6G,EAAM,MACpB,IAAK7G,EAAM,MAAM,IAAI5hD,MAAM,gBAC3B,IAAKyoD,EAAM,MAAM,IAAIzoD,MAAM,gBAE3B4hD,EAAKp9C,MAAMmL,GACX84C,EAAKjkD,MAAMmL,EACZ,CAGA,MAAMlL,EAAO,IAAI/E,WAAWiQ,EAAO1Q,QAEnC0b,EAAWG,QAAQ,CAClB1N,KAAM/N,MAAK4qD,EAAO78C,KAClBiN,UAAWhb,MAAK4qD,EAAO5vC,UACvBQ,SAAUxb,MAAK4qD,EAAOpvC,UAAY,EAClCpW,SAGDpF,MAAK4qD,EAASA,CACf,ECrJD,MAAMY,GAAY,CAGjB,qBAIA/+C,GACAg/C,GACAC,GAEAC,OAEA,WAAA5rD,CAAYmZ,GACXlZ,MAAKyrD,EAAiBvyC,EAEtBlZ,KAAK2rD,OAAS,IAAI33C,gBAAgB,CACjCvI,MAAOzL,MAAKyL,EAAOmgD,KAAK5rD,MACxBob,UAAWpb,MAAKob,EAAWwwC,KAAK5rD,MAChCqF,MAAOrF,MAAKqF,EAAOumD,KAAK5rD,OAE1B,CAEA,EAAAyL,CAAO6P,GACN,IACCtb,MAAKyM,EAAW,IAAIo/C,aAAa,CAChC/B,OAAQ,CAACc,EAAOkB,KACf9rD,MAAKyb,EAASH,EAAYsvC,EAAOkB,IAElCl+C,MAAQuG,IACP,MAAMA,KAIRnU,MAAKyM,EAASs/C,UAAU/rD,MAAKyrD,EAC9B,CAAE,MAAO/4C,GAER,MADA/E,QAAQC,MAAM,oCAAqC8E,GAC7CA,CACP,CACD,CAEA,EAAA0I,CAAWwvC,GACV,IACC5qD,MAAKyM,EAASlJ,OAAOqnD,EACtB,CAAE,MAAOl4C,GAER,MADA/E,QAAQC,MAAM,gCAAiC8E,GACzCA,CACP,CACAk4C,EAAMjmD,OACP,CAEA,EAAA8W,CACCH,EACAsvC,EACAkB,GAEA,MAAM5yC,EAAS4yC,GAAUJ,cACzB,GAAIxyC,IAAWlZ,MAAK0rD,EAAgB,CACnC,MAAMxyC,EAAS4yC,EAASJ,cACxB,IAAKxyC,EAAQ,MAAM,IAAIvY,MAAM,0BAE7B2a,EAAWG,QAAQvC,GACnBlZ,MAAK0rD,EAAiBxyC,CACvB,CAEAoC,EAAWG,QAAQmvC,EACpB,CAEA,EAAAvlD,GACCrF,MAAKyM,EAAS9H,OACf,CAEA,wBAAaqnD,CAAY9yC,GAExB,MAAM+yC,EAAQ/yC,EAAOqlC,MAAMl4B,UAAU,EAAG,GACxC,IAAKmlC,GAAUU,SAASD,GAAQ,OAAO,EAGvC,eADkBJ,aAAaM,kBAAkBjzC,IACpCkzC,SACd,CAEA,UAAIlzC,GACH,OAAOlZ,MAAKyrD,CACb,GCnFD,MAAMD,GAAY,CACjB,OACA,cAQY1+C,GACZL,GACAg/C,GACAC,GAGAW,IAAkC,EAGlCC,GAAmB,EAGnBX,OAEA,WAAA5rD,CAAYmZ,GACXA,EAAOqzC,cAAgB,WACvBrzC,EAAOszC,cAAgB,WAEvBxsD,MAAKyrD,EAAiBvyC,EAEtBlZ,KAAK2rD,OAAS,IAAI33C,gBAAgB,CACjCvI,MAAOzL,MAAKyL,EAAOmgD,KAAK5rD,MACxBob,UAAWpb,MAAKob,EAAWwwC,KAAK5rD,MAChCqF,MAAOrF,MAAKqF,EAAOumD,KAAK5rD,OAE1B,CAEA,wBAAagsD,CAAY9yC,GAExB,MAAM+yC,EAAQ/yC,EAAOqlC,MAAMl4B,UAAU,EAAG,GACxC,IAAKmlC,GAAUU,SAASD,GAAQ,OAAO,EAGvC/yC,EAAOuzC,uBAAyB,kBAGhCvzC,EAAOqzC,cAAgB,WAGvBrzC,EAAOszC,cAAgB,WAGvB,eADkBE,aAAaP,kBAAkBjzC,IACpCkzC,SACd,CAEA,EAAA3gD,CAAO6P,GACNtb,MAAKyM,EAAW,IAAIigD,aAAa,CAChC5C,OAAQ,CAACc,EAAOkB,KACf9rD,MAAKyb,EAASH,EAAYsvC,EAAOkB,IAElCl+C,MAAQuG,IACP,MAAMA,KAKRnU,MAAKyM,EAASs/C,UAAU/rD,MAAKyrD,EAC9B,CAEA,EAAArwC,CAAWwvC,GACM5qD,MAAKyM,EAGblJ,OAAOqnD,EAAO,CAAE+B,SAAU3sD,MAAKqsD,IACvCrsD,MAAKqsD,OAAgB5nD,EAErBmmD,EAAMjmD,OACP,CAEA,EAAA8W,CACCH,EACAsvC,EACAkB,GAEA,IAAK9rD,MAAK0rD,EAAgB,CACzB,MAAMxyC,EAAS4yC,GAAUJ,cACzB,IAAKxyC,EAAQ,MAAM,IAAIvY,MAAM,0BAE7B2a,EAAWG,QAAQvC,GACnBlZ,MAAK0rD,EAAiBxyC,CACvB,CAEmB,QAAf0xC,EAAM78C,KACT/N,MAAKssD,EAAmB,GAExBtsD,MAAKssD,GAAoB,EACrBtsD,MAAKssD,EAAmBtsD,MAAKyM,EAASmgD,iBAAmB,EAAI5sD,MAAKyrD,EAAeoB,YACpF7sD,MAAKqsD,GAAgB,IAIvB/wC,EAAWG,QAAQmvC,EACpB,CAEA,EAAAvlD,GACCrF,MAAKyM,EAAS9H,OACf,CAEA,UAAIuU,GACH,OAAOlZ,MAAKyrD,CACb,QCrGYqB,GACZ1iD,KAEAgJ,GACA25C,GAAuB,GAEvBltD,IAAU,EACV8T,IAAU,EACV/F,IACAo/C,IAAU,IAAIz5C,GAEd,WAAAxT,CAAYktD,EAAyB/zC,GAIpC,GAHAlZ,KAAKoK,KAAO6iD,EAAMzO,KAsJG,UAnJJyO,EAmJLzO,KAnJa,CACxB,IAAKtlC,EAAO4lC,MAAO,MAAM,IAAIn+C,MAAM,mBACnCX,MAAKktD,GAAUD,EAAO/zC,EAAO4lC,OAAO1lC,MAAOjF,GAAQnU,MAAK2E,GAAOwP,GAChE,KAAO,KAmJT,SAAsBgC,GACrB,MAAsB,UAAfA,EAAMqoC,IACd,CArJa2O,CAAaF,GAIvB,MAAM,IAAItsD,MAAM,uBAAuBssD,EAAMzO,QAH7C,IAAKtlC,EAAO8lC,MAAO,MAAM,IAAIr+C,MAAM,mBACnCX,MAAKotD,GAAUH,EAAO/zC,EAAO8lC,OAAO5lC,MAAOjF,GAAQnU,MAAK2E,GAAOwP,GAGhE,CACD,CAEA,QAAM+4C,CAAU/2C,EAA8B+C,GAC7C,MAAMsuC,EAAS,IAAI6F,0BAA0B,CAAEl3C,UACzC1J,EAAU,IAAI6gD,GAAcp0C,GAC5Bq0C,EAAY,IAAI7C,GAGhBqC,EAAW,IAAIS,eAAe,CACnCroD,MAAQkW,GAAUrb,MAAKmF,GAAOkW,GAC9B1W,MAAO,IAAM3E,MAAK2E,KAClBuP,MAAQxB,GAAM1S,MAAK2E,GAAO+N,KAG3B,OAAO80C,EAAOvzC,SACZw5C,YAAYhhD,EAAQk/C,QACpB8B,YAAYF,EAAUhqD,QACtBmqD,OAAOX,GACP3zC,MAAOjF,IAEP,MADAxG,QAAQC,MAAM,wBAAyBuG,GACjCA,GAET,CAEA,QAAMi5C,CAAUj3C,EAA8B+C,GAC7C,MAAMsuC,EAAS,IAAI6F,0BAA0B,CAAEl3C,UACzC1J,EAAU,IAAIkhD,GAAcz0C,GAC5Bq0C,EAAY,IAAI7C,GAGhBqC,EAAW,IAAIS,eAAe,CACnCroD,MAAQkW,GAAUrb,MAAKmF,GAAOkW,GAC9B1W,MAAO,IAAM3E,MAAK2E,KAClBuP,MAAQxB,GAAM1S,MAAK2E,GAAO+N,KAG3B,OAAO80C,EAAOvzC,SAASw5C,YAAYhhD,EAAQk/C,QAAQ8B,YAAYF,EAAUhqD,QAAQmqD,OAAOX,EACzF,CAEA,QAAM5nD,CAAOkW,GACZ,GAAmB,SAAfA,EAAMtN,KAGT,OAFA/N,MAAKoT,EAAQiI,EAAMjW,UACnBpF,MAAKgtD,GAAQv5C,OAId,IAAIP,EAAUlT,MAAK+sD,EAAUa,IAAG,GAChC,IAAK16C,GAA0B,QAAfmI,EAAMtN,KAAgB,CACjCmF,SACGA,EAAQ4H,MAAMnW,QAGrB,MAAMkmD,EAAU,IAAIhwC,GAAQ7a,MAAKH,GAAUG,MAAK+sD,EAAU5sD,QAQ1D,IAPAH,MAAK+sD,EAAUlkD,KAAKgiD,GAEpB7qD,MAAKgtD,GAAQv5C,OAEbP,EAAU23C,EAGH7qD,MAAK+sD,EAAU5sD,OAAS,GAAG,CACjC,MAAMkB,EAAQrB,MAAK+sD,EAAU,GAG7B,GAAI1xC,EAAML,UAAY3Z,EAAM2Z,UAAY,IAAY,MACpDhb,MAAK+sD,EAAU9pD,QACfjD,MAAKH,IAAW,QAEVwB,EAAMyZ,MAAM5G,MAAM,UACzB,CACD,CAEA,MAAMlP,EAASkO,EAAQ4H,MAAM5V,aAExBF,EAAO6oD,aAAe,GAAK,QACzB7oD,EAAOG,MAAMkW,GAEnB1N,QAAQ8H,KAAK,iBAAkBzQ,EAAO6oD,aAGvC7oD,EAAOJ,aACR,CAEA,QAAMD,CAAO+N,GACZ1S,MAAK4N,GAAS8E,EAEd,MAAMQ,EAAUlT,MAAK+sD,EAAUa,IAAG,GAC9B16C,SACGA,EAAQ4H,MAAMnW,QAGrB3E,MAAK2T,GAAU,EACf3T,MAAKgtD,GAAQv5C,MACd,CAEA,UAAML,GACL,MAAQpT,MAAKoT,GAAO,CACnB,GAAIpT,MAAK2T,EAAS,MAAM,IAAIhT,MAAM,sBAC5BX,MAAKgtD,GAAQx5C,MACpB,CAEA,OAAOxT,MAAKoT,CACb,CAGA,QAAA25C,GACC,IAAI/uC,EAAMhe,MAAKH,GAEf,OAAO,IAAIiuD,eAAe,CACzBC,KAAM7lD,MAAOoT,IACZ,OAAU,CACT,IAAI8N,EAAQpL,EAAMhe,MAAKH,GAGvB,GAFIupB,EAAQ,IAAGA,EAAQ,GAEnBA,EAAQppB,MAAK+sD,EAAU5sD,OAG1B,OAFAmb,EAAWG,QAAQzb,MAAK+sD,EAAU3jC,SAClCpL,GAAO,GAIR,GAAIhe,MAAK4N,GAER,YADA0N,EAAW1N,MAAM5N,MAAK4N,IAEhB,GAAI5N,MAAK2T,EAEf,YADA2H,EAAW3W,cAMN3E,MAAKgtD,GAAQx5C,MACpB,IAGH,EC7IK,SAAUw6C,GAAqBC,GACpC,MAAO,eAAgBA,CACxB,CAEM,SAAUC,GAAqBD,GACpC,MAAO,UAAWA,CACnB,OCTaE,GACZtR,IAAU,IAAIvzC,IAEL4P,OACAk1C,QACAC,WACAlkD,UAETuO,GAEA,WAAA3Y,CAAYmZ,GACXlZ,KAAKquD,WAAan1C,EAAOm1C,WACzBruD,KAAKkZ,OAASA,EACdlZ,KAAKmK,UAAY+O,EAAO/O,UAExB,MAAM0yC,EAA0B,GAE1ByR,EAActuD,KAAKkZ,OAAO+zC,MAAMsB,YACtC,IAAK,MAAMtB,KAASqB,EAAa,CAChC,MAAMn4C,EAAQ,IAAI22C,GAAMG,EAAO/zC,GAC/BlZ,MAAK68C,GAAQx6C,IAAI8T,EAAM/L,KAAM+L,GAE7B,MAAM83C,EAAWhB,EAAMuB,cAEvB,GAAmB,UAAfvB,EAAMzO,KAAkB,CAC3B,MAAMiQ,EAAe,IAAIC,aACzBD,EAAaE,wBAAwB,IAAIC,YAAY,CAAC3B,KACtD,MAAM9B,EAAasD,EAAatD,WAChCjqC,OAAO2tC,OAAOZ,EAAU,CACvB9C,eAEDsD,EAAa9pD,OACd,CAGA,GAAIupD,GAAqBD,GAAW,CACnC,IAAK/0C,EAAO8lC,MACX,MAAM,IAAIr+C,MAAM,mCAGjB,MAAMq+C,EAA4B,CACjC70C,UAAWnK,KAAKmK,UAChBC,KAAM,GAAG+L,EAAM/L,WACf0kD,UAAW,GAAG34C,EAAM/L,WACpB2kD,gBAAiB,CAChBC,SAAU,YACVzQ,MAAOrlC,EAAO8lC,MAAMT,MACpBvrB,MAAOi7B,EAASj7B,MAChBC,OAAQg7B,EAASh7B,OACjB45B,UAAWoB,EAASgB,UACpBpQ,QAAS3lC,EAAO8lC,MAAMH,UAIxBhC,EAAOh0C,KAAKm2C,EACb,KAAO,KAAIgP,GAAqBC,GAqB/B,MAAM,IAAIttD,MAAM,uBAAuBssD,EAAMzO,QArBH,CAC1C,IAAKtlC,EAAO4lC,MACX,MAAM,IAAIn+C,MAAM,mCAGjB,MAAMm+C,EAA4B,CACjC30C,UAAWnK,KAAKmK,UAChBC,KAAM,GAAG+L,EAAM/L,WACf0kD,UAAW,GAAG34C,EAAM/L,WACpB2kD,gBAAiB,CAChBC,SAAU,YACVzQ,MAAOrlC,EAAO4lC,MAAMP,MACpB9qB,WAAYw6B,EAAS9C,WAErB+D,cAAe,GAAGjB,EAASkB,eAC3BtQ,QAAS3lC,EAAO4lC,MAAMD,UAIxBhC,EAAOh0C,KAAKi2C,EACb,CAEA,CACD,CAEA9+C,KAAKouD,QAAU,CACdpiD,QAAS,EACTojD,gBAAiB,EACjBC,uBAAwB,MACxBC,sBAAsB,EACtBC,kBAAmB,CAClBC,UAAW,OACXC,YAAa,GAEd5S,UAGD78C,MAAK0Y,EAAW1Y,MAAK2Y,GACtB,CAEA,OAAMA,GAGL,UAFM3Y,KAAKquD,WAAW15C,kBAAkB3U,KAAKmK,aAEnC,CACT,MAAMsO,QAAmBzY,KAAKquD,WAAWp5C,aACzC,IAAKwD,EAAY,MAGjBzY,MAAK0vD,GAAgBj3C,GAAYW,MAAO1G,IACvC,MAAMyB,EAAMxB,GAAQD,GACpB/E,QAAQ8H,KAAK,4BAA6BtB,IAE5C,CACD,CAEA,QAAMu7C,CAAgBj3C,GACrB,IACC,MAAOk3C,EAAMl6B,GAwHhB,SAAkBzW,GACjB,MAAM9b,EAAI8b,EAAE4wC,YAAY,KACxB,GAAI1sD,EAAI,EAAG,MAAM,IAAIvC,MAAM,sBAC3B,MAAO,CAACqe,EAAEqH,UAAU,EAAGnjB,GAAI8b,EAAEqH,UAAUnjB,EAAI,GAC5C,CA5HuB2sD,CAASp3C,EAAWtC,OACxC,GAAY,YAARsf,QACGz1B,MAAK8vD,GAAcr3C,EAAYk3C,QAC/B,GAAY,QAARl6B,QACJz1B,MAAK+vD,GAAWt3C,EAAYk3C,OAC5B,IAAY,QAARl6B,EAGV,MAAM,IAAI90B,MAAM,yBAAyB8X,EAAWtC,eAF9CnW,MAAKgwD,GAAYv3C,EAAYk3C,EAGpC,CACD,CAAE,MAAOj9C,GACR/E,QAAQC,MAAM,4BAA6B8E,GAC3C,MAAMyB,EAAMxB,GAAQD,SAEd+F,EAAW9T,MAAM,CAAEqG,KAAM,GAAIC,OAAQ,gCAAgCkJ,EAAInH,WAChF,CAID,CAEA,QAAM8iD,CAAcr3C,EAA2BrO,GAE9C,GAAa,KAATA,EAAa,MAAM,IAAIzJ,MAAM,oBAAoByJ,KAErD,MAAM/G,EC5IF,SAAiB+qD,GACtB,MAAM3hD,EAAU,IAAInJ,YACd6Z,EAAM8yC,KAAKC,UAAU9B,GAC3B,OAAO3hD,EAAQlJ,OAAO4Z,EACvB,CDwIgBgzC,CAAenwD,KAAKouD,eAE5B31C,EAAWrC,YACXjO,EAAM,KAEZ,MAAMmI,QAAemI,EAAWhC,SAAS,CAAEzN,MAAO,EAAGyN,SAAU,UACzDnG,EAAOnL,MAAM,CAAE4J,UAAW,EAAGE,eAAgB5L,UAC7CiN,EAAO3L,OACd,CAEA,QAAMorD,CAAWt3C,EAA2BrO,GAC3C,MAAM+L,EAAQnW,MAAK68C,GAAQvnC,IAAIlL,GAC/B,IAAK+L,EAAO,MAAM,IAAIxV,MAAM,sBAAsB8X,EAAWtC,eAEvDsC,EAAWrC,YACXjO,EAAM,KAEZ,MAAMiL,QAAa+C,EAAM/C,OAEnB9C,QAAemI,EAAWhC,SAAS,CAAEzN,MAAO,EAAGyN,SAAU,UACzDnG,EAAOnL,MAAM,CAAE4J,UAAW,EAAGE,eAAgBmE,UAC7C9C,EAAO3L,OACd,CAEA,QAAMqrD,CAAYv3C,EAA2BrO,GAC5C,MAAM+L,EAAQnW,MAAK68C,GAAQvnC,IAAIlL,GAC/B,IAAK+L,EAAO,MAAM,IAAIxV,MAAM,sBAAsB8X,EAAWtC,eAGvDsC,EAAWrC,YAGXjO,EAAM,KAEZ,MAAM4kD,EAAW52C,EAAM42C,WAAWnpD,YAElC,OAAU,CACT,MAAQZ,MAAO6nD,EAAOzmD,KAAEA,SAAe2oD,EAAS5oD,OAChD,GAAIC,EAAM,MAGVpE,MAAKowD,GAAc33C,EAAYoyC,GAASzxC,MAAO1G,IAC9C,MAAMyB,EAAMxB,GAAQD,GACpB/E,QAAQ8H,KAAK,0BAA2BtB,IAE1C,CACD,CAEA,QAAMi8C,CAAc33C,EAA2BoyC,GAE9C,MAAMv6C,QAAemI,EAAWhC,SAAS,CACxCzN,MAAO6hD,EAAQ3gD,GACfuM,SAAU,EACVD,SAAU,MAGX,IAAIvN,EAAS,EAGb,MAAMyS,EAASmvC,EAAQnvC,SAAS9X,YAChC,OAAU,CACT,MAAMZ,MAAEA,EAAKoB,KAAEA,SAAesX,EAAOvX,OACrC,GAAIC,EAAM,YAEJkM,EAAOnL,MAAM,CAClB4J,UAAW9F,EACXgG,eAAgBjM,IAGjBiG,GAAU,CACX,OAEMqH,EAAO3L,OACd,CAGA,MAAA0rD,CAAOrR,GACNA,EAAMsR,UAAYtwD,KAAKkZ,OAAO+zC,KAC/B,CAEA,KAAAtoD,GAEA,CAGA,YAAMgP,GACL,IAEC,aADM3T,MAAK0Y,EACJ,IAAI/X,MAAM,SAClB,CAAE,MAAO+R,GACR,OAAOC,GAAQD,EAChB,CACD,QE/OY69C,GACJC,OACAnC,WACAoC,UACAC,KAER,WAAA3wD,CAAY2wD,GACX1wD,KAAK0wD,KAAOA,EACZ1wD,KAAKwwD,OAAS,IAAIx3C,GAAO,CACxBS,IAAKi3C,EAAKj3C,IACVR,YAAay3C,EAAKC,gBAEpB,CAEA,aAAMC,GACA5wD,KAAKquD,aACTruD,KAAKquD,iBAAmBruD,KAAKwwD,OAAOn3C,WAGrC,MAAMw3C,EAA4B,CACjCxC,WAAYruD,KAAKquD,WACjBlkD,UAAWnK,KAAK0wD,KAAKvmD,UACrB8iD,MAAOjtD,KAAK0wD,KAAKzD,MACjBjO,MAAOh/C,KAAK0wD,KAAK1R,MACjBF,MAAO9+C,KAAK0wD,KAAK5R,OAGlB9+C,KAAKywD,UAAY,IAAItC,GAAU0C,EAChC,CAEA,UAAM1Q,GACDngD,KAAKywD,YACRzwD,KAAKywD,UAAU9rD,cACT3E,KAAKywD,UAAU98C,UAElB3T,KAAKquD,aACRruD,KAAKquD,WAAW1pD,cACV3E,KAAKquD,WAAW16C,SAExB,ECjDK,MAAOm9C,WAAqBC,YACzBC,OACAC,aACAC,iBACAC,aACAC,cACAC,oBACAC,YAAkC,KAElC94C,UACA+4C,cAAe,EACfpnD,UAAY,GAEpB,WAAApK,GACCyxD,QACAxxD,KAAKgxD,OAAShxD,KAAKyxD,aAAa,CAAEC,KAAM,SAGxC,MAAMC,EAAQ7tC,SAASC,cAAc,SACrC4tC,EAAMC,iQACN5xD,KAAKgxD,OAAO/sC,YAAY0tC,GAExB,MAAMpE,EAAYzpC,SAASC,cAAc,OACzCwpC,EAAUsE,UAAU9gC,IAAI,uBAExB/wB,KAAKixD,aAAentC,SAASC,cAAc,UAC3C/jB,KAAKkxD,iBAAmBptC,SAASC,cAAc,UAC/C/jB,KAAKmxD,aAAertC,SAASC,cAAc,SAC3C/jB,KAAKoxD,cAAgBttC,SAASC,cAAc,UAC5C/jB,KAAKqxD,oBAAsBvtC,SAASC,cAAc,YAElD/jB,KAAKmxD,aAAaW,UAAW,EAC7B9xD,KAAKmxD,aAAaY,aAAc,EAChC/xD,KAAKmxD,aAAaa,OAAQ,EAC1BhyD,KAAKoxD,cAAcQ,YAAc,UAEjC5xD,KAAKqxD,oBAAoBY,UAAW,EACpCjyD,KAAKqxD,oBAAoBa,KAAO,EAChClyD,KAAKqxD,oBAAoBM,MAAMQ,QAAU,OACzCnyD,KAAKqxD,oBAAoBM,MAAM3+B,MAAQ,OACvChzB,KAAKqxD,oBAAoBM,MAAMS,UAAY,OAE3C7E,EAAU8E,OACTryD,KAAKixD,aACLjxD,KAAKkxD,iBACLlxD,KAAKmxD,aACLnxD,KAAKoxD,cACLpxD,KAAKqxD,qBAENrxD,KAAKgxD,OAAO/sC,YAAYspC,GAGxBvtD,KAAKsyD,mBAAqBtyD,KAAKsyD,mBAAmB1G,KAAK5rD,MACvDA,KAAKuyD,YAAcvyD,KAAKuyD,YAAY3G,KAAK5rD,MAGzCwyD,UAAUC,aAAaC,iBAAiB,eAAgB1yD,KAAKsyD,oBAC7DtyD,KAAKixD,aAAayB,iBAAiB,SAAU,IAAM1yD,KAAK2yD,gBACxD3yD,KAAKkxD,iBAAiBwB,iBAAiB,SAAU,IAAM1yD,KAAK2yD,gBAC5D3yD,KAAKoxD,cAAcsB,iBAAiB,QAAS1yD,KAAKuyD,YACnD,CAEA,iBAAAK,GACC5yD,KAAK6yD,qBACN,CAEA,oBAAAC,GACCN,UAAUC,aAAaM,oBAAoB,eAAgB/yD,KAAKsyD,mBACjE,CAEQ,wBAAMA,SACPtyD,KAAK6yD,qBACZ,CAEQ,yBAAMA,GACb,MAAMG,QAAgBR,UAAUC,aAAaQ,mBACvCC,EAAOF,EAAQG,OAAQvhB,GAAiB,eAAXA,EAAE4M,MAC/B4U,EAAOJ,EAAQG,OAAQvhB,GAAiB,eAAXA,EAAE4M,MAErCx+C,KAAKixD,aAAaoC,UAAY,GAC9BrzD,KAAKkxD,iBAAiBmC,UAAY,GAElCH,EAAKzqD,QAASmpC,IACb,MAAM0hB,EAAIxvC,SAASC,cAAc,UACjCuvC,EAAEtwD,MAAQ4uC,EAAE2hB,SACZD,EAAE1B,YAAchgB,EAAE4hB,OAAS,UAAUxzD,KAAKixD,aAAa9wD,OAAS,IAChEH,KAAKixD,aAAaoB,OAAOiB,KAE1BF,EAAK3qD,QAASmpC,IACb,MAAM0hB,EAAIxvC,SAASC,cAAc,UACjCuvC,EAAEtwD,MAAQ4uC,EAAE2hB,SACZD,EAAE1B,YAAchgB,EAAE4hB,OAAS,OAAOxzD,KAAKkxD,iBAAiB/wD,OAAS,IACjEH,KAAKkxD,iBAAiBmB,OAAOiB,WAGxBtzD,KAAK2yD,cACZ,CAEQ,kBAAMA,GACb,MAAMc,EAAQzzD,KAAKixD,aAAajuD,MAC1B0wD,EAAQ1zD,KAAKkxD,iBAAiBluD,MAChChD,KAAKsxD,aACRtxD,KAAKsxD,YAAY/C,YAAY9lD,QAAS0D,GAAMA,EAAEg0C,QAG/C,MAAMwT,EAAmBF,EACtB,CAAEF,SAAU,CAAEK,MAAOH,GAASxgC,OAAQ,CAAE4gC,MAAO,KAAO5E,UAAW,CAAE4E,MAAO,KAC1E,CAAE5gC,OAAQ,CAAE4gC,MAAO,KAAO5E,UAAW,CAAE4E,MAAO,KAC3CC,GAAmBJ,GAAQ,CAAEH,SAAU,CAAEK,MAAOF,IACtD1zD,KAAKsxD,kBAAoBkB,UAAUC,aAAasB,aAAa,CAC5D/U,MAAO2U,EACP7U,MAAOgV,IAGR9zD,KAAKmxD,aAAab,UAAYtwD,KAAKsxD,WACpC,CAEQ,iBAAMiB,GACb,GAAKvyD,KAAKuxD,aA0DT,UACOvxD,KAAKwY,UAAW2nC,MACvB,CAAE,MAAOhsC,GACRxG,QAAQC,MAAM,eAAgBuG,EAC/B,SACCnU,KAAKuxD,cAAe,EACpBvxD,KAAKoxD,cAAcQ,YAAc,UACjC5xD,KAAKixD,aAAa+C,UAAW,EAC7Bh0D,KAAKkxD,iBAAiB8C,UAAW,EACjCh0D,KAAKqxD,oBAAoBM,MAAMQ,QAAU,MAC1C,KApEuB,CACvB,IAAKnyD,KAAKsxD,YAET,YADA3jD,QAAQ8H,KAAK,6BAIdzV,KAAKmK,UAAYnK,KAAKi0D,aAAa,cAAgBC,OAAOC,aAE1D,MACMlG,EADajuD,KAAKsxD,YAAY8C,iBAAiB,GACzB5F,cAEtBrD,EAAa8C,EAAS9C,mBAAqB,IAAIuD,cAAgBvD,WAC/DD,EAAmB+C,EAASkB,cAAgB,EAG5CkF,EAAYhd,GAAkC,EAApBl4C,KAAK2d,MAAMu6B,EAAI,GAIzCid,EAAkC,CACvC/V,MAAO,cACPvrB,MALaqhC,EAASr0D,KAAKmxD,aAAaoD,YAMxCthC,OALcohC,EAASr0D,KAAKmxD,aAAaqD,aAMzC3V,QAAS,IACTgO,UAAW,IAEN4H,EAAkC,CAAElW,MAAO,OAAQ4M,aAAYD,mBAAkBrM,QAAS,MAE1F6R,EAAyB,CAC9Bj3C,IAAKzZ,KAAKi0D,aAAa,OACvBtD,eAAgB3wD,KAAKi0D,aAAa,qBAAkBxvD,EACpD0F,UAAW,CAACnK,KAAKmK,WACjB8iD,MAAOjtD,KAAKsxD,YACZtS,MAAOsV,EACPxV,MAAO2V,GAIRz0D,KAAKwY,UAAY,IAAI+3C,GAAaG,GAElC,UACO1wD,KAAKwY,UAAUo4C,UACrB5wD,KAAKuxD,cAAe,EACpBvxD,KAAKoxD,cAAcQ,YAAc,OACjC5xD,KAAKixD,aAAa+C,UAAW,EAC7Bh0D,KAAKkxD,iBAAiB8C,UAAW,EAEjC,MAAMU,EAAkB10D,KAAKi0D,aAAa,mBAEzCj0D,KAAKqxD,oBAAoBruD,MADtB0xD,EAC8B,GAAGA,IAAkB10D,KAAKmK,YAE1BnK,KAAKmK,UAEvCnK,KAAKqxD,oBAAoBM,MAAMQ,QAAU,OAC1C,CAAE,MAAOh+C,GACRxG,QAAQC,MAAM,kBAAmBuG,EAClC,CACD,CAaD,EAGDwgD,eAAeC,OAAO,gBAAiB9D","x_google_ignoreList":[37]}
1
+ {"version":3,"file":"moq-publisher.esm.js","sources":["../../transport/buffer.ts","../../transport/base_data.ts","../../transport/control/subscribe.ts","../../transport/control/subscribe_ok.ts","../../transport/control/subscribe_error.ts","../../transport/control/subscribe_update.ts","../../transport/control/subscribe_namespace.ts","../../transport/control/subscribe_namespace_ok.ts","../../transport/control/subscribe_namespace_error.ts","../../transport/control/unsubscribe.ts","../../transport/control/publish.ts","../../transport/control/publish_ok.ts","../../transport/control/publish_error.ts","../../transport/control/publish_done.ts","../../transport/control/publish_namespace.ts","../../transport/control/publish_namespace_ok.ts","../../transport/control/publish_namespace_error.ts","../../transport/control/publish_namespace_done.ts","../../transport/control/fetch.ts","../../transport/control/fetch_ok.ts","../../transport/control/fetch_error.ts","../../transport/control/fetch_cancel.ts","../../transport/control/go_away.ts","../../transport/control/client_setup.ts","../../transport/control/server_setup.ts","../../transport/control/index.ts","../../transport/utils.ts","../../transport/stream.ts","../../transport/subgroup.ts","../../transport/objects.ts","../../common/error.ts","../../common/async.ts","../../transport/publisher.ts","../../transport/subscriber.ts","../../transport/connection.ts","../../transport/client.ts","../../contribute/segment.ts","../../node_modules/mp4box/dist/mp4box.all.js","../../media/mp4/index.ts","../../contribute/container.ts","../../contribute/audio.ts","../../contribute/video.ts","../../contribute/track.ts","../../common/settings.ts","../../contribute/broadcast.ts","../../media/catalog/index.ts","../../publish/index.ts","../../moq-publisher/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"// file:src/log.js\n/* \n * Copyright (c) 2012-2013. Telecom ParisTech/TSI/MM/GPAC Cyril Concolato\n * License: BSD-3-Clause (see LICENSE file)\n */\nvar Log = (function (){\n\t\tvar start = new Date();\n\t\tvar LOG_LEVEL_ERROR \t= 4;\n\t\tvar LOG_LEVEL_WARNING \t= 3;\n\t\tvar LOG_LEVEL_INFO \t\t= 2;\n\t\tvar LOG_LEVEL_DEBUG\t\t= 1;\n\t\tvar log_level = LOG_LEVEL_ERROR;\n\t\tvar logObject = {\n\t\t\tsetLogLevel : function(level) {\n\t\t\t\tif (level == this.debug) log_level = LOG_LEVEL_DEBUG;\n\t\t\t\telse if (level == this.info) log_level = LOG_LEVEL_INFO;\n\t\t\t\telse if (level == this.warn) log_level = LOG_LEVEL_WARNING;\n\t\t\t\telse if (level == this.error) log_level = LOG_LEVEL_ERROR;\n\t\t\t\telse log_level = LOG_LEVEL_ERROR;\n\t\t\t},\n\t\t\tdebug : function(module, msg) {\n\t\t\t\tif (console.debug === undefined) {\n\t\t\t\t\tconsole.debug = console.log;\n\t\t\t\t}\n\t\t\t\tif (LOG_LEVEL_DEBUG >= log_level) {\n\t\t\t\t\tconsole.debug(\"[\"+Log.getDurationString(new Date()-start,1000)+\"]\",\"[\"+module+\"]\",msg);\n\t\t\t\t}\n\t\t\t},\n\t\t\tlog : function(module, msg) {\n\t\t\t\tthis.debug(module.msg)\n\t\t\t},\n\t\t\tinfo : function(module, msg) {\n\t\t\t\tif (LOG_LEVEL_INFO >= log_level) {\n\t\t\t\t\tconsole.info(\"[\"+Log.getDurationString(new Date()-start,1000)+\"]\",\"[\"+module+\"]\",msg);\n\t\t\t\t}\n\t\t\t},\n\t\t\twarn : function(module, msg) {\n\t\t\t\tif (LOG_LEVEL_WARNING >= log_level) {\n\t\t\t\t\tconsole.warn(\"[\"+Log.getDurationString(new Date()-start,1000)+\"]\",\"[\"+module+\"]\",msg);\n\t\t\t\t}\n\t\t\t},\n\t\t\terror : function(module, msg) {\n\t\t\t\tif (LOG_LEVEL_ERROR >= log_level) {\n\t\t\t\t\tconsole.error(\"[\"+Log.getDurationString(new Date()-start,1000)+\"]\",\"[\"+module+\"]\",msg);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\treturn logObject;\n\t})();\n\t\n/* Helper function to print a duration value in the form H:MM:SS.MS */\nLog.getDurationString = function(duration, _timescale) {\n\tvar neg;\n\t/* Helper function to print a number on a fixed number of digits */\n\tfunction pad(number, length) {\n\t\tvar str = '' + number;\n\t\tvar a = str.split('.');\t\t\n\t\twhile (a[0].length < length) {\n\t\t\ta[0] = '0' + a[0];\n\t\t}\n\t\treturn a.join('.');\n\t}\n\tif (duration < 0) {\n\t\tneg = true;\n\t\tduration = -duration;\n\t} else {\n\t\tneg = false;\t\n\t}\n\tvar timescale = _timescale || 1;\n\tvar duration_sec = duration/timescale;\n\tvar hours = Math.floor(duration_sec/3600);\n\tduration_sec -= hours * 3600;\n\tvar minutes = Math.floor(duration_sec/60);\n\tduration_sec -= minutes * 60;\t\t\n\tvar msec = duration_sec*1000;\n\tduration_sec = Math.floor(duration_sec);\n\tmsec -= duration_sec*1000;\n\tmsec = Math.floor(msec);\n\treturn (neg ? \"-\": \"\")+hours+\":\"+pad(minutes,2)+\":\"+pad(duration_sec,2)+\".\"+pad(msec,3);\n}\n\t\n/* Helper function to stringify HTML5 TimeRanges objects */\t\nLog.printRanges = function(ranges) {\n\tvar length = ranges.length;\n\tif (length > 0) {\n\t\tvar str = \"\";\n\t\tfor (var i = 0; i < length; i++) {\n\t\t if (i > 0) str += \",\";\n\t\t str += \"[\"+Log.getDurationString(ranges.start(i))+ \",\"+Log.getDurationString(ranges.end(i))+\"]\";\n\t\t}\n\t\treturn str;\n\t} else {\n\t\treturn \"(empty)\";\n\t}\n}\n\nif (typeof exports !== 'undefined') {\n\texports.Log = Log;\n}\n// file:src/stream.js\nvar MP4BoxStream = function(arrayBuffer) {\n if (arrayBuffer instanceof ArrayBuffer) {\n this.buffer = arrayBuffer;\n this.dataview = new DataView(arrayBuffer);\n } else {\n throw (\"Needs an array buffer\");\n }\n this.position = 0;\n};\n\n/*************************************************************************\n Common API between MultiBufferStream and SimpleStream\n *************************************************************************/\nMP4BoxStream.prototype.getPosition = function() {\n return this.position;\n}\n\nMP4BoxStream.prototype.getEndPosition = function() {\n return this.buffer.byteLength;\n}\n\nMP4BoxStream.prototype.getLength = function() {\n return this.buffer.byteLength;\n}\n\nMP4BoxStream.prototype.seek = function (pos) {\n var npos = Math.max(0, Math.min(this.buffer.byteLength, pos));\n this.position = (isNaN(npos) || !isFinite(npos)) ? 0 : npos;\n return true;\n}\n\nMP4BoxStream.prototype.isEos = function () {\n return this.getPosition() >= this.getEndPosition();\n}\n\n/*************************************************************************\n Read methods, simimar to DataStream but simpler\n *************************************************************************/\nMP4BoxStream.prototype.readAnyInt = function(size, signed) {\n var res = 0;\n if (this.position + size <= this.buffer.byteLength) {\n switch (size) {\n case 1:\n if (signed) {\n res = this.dataview.getInt8(this.position);\n } else {\n res = this.dataview.getUint8(this.position);\n }\n break;\n case 2:\n if (signed) {\n res = this.dataview.getInt16(this.position);\n } else {\n res = this.dataview.getUint16(this.position);\n }\n break;\n case 3:\n if (signed) {\n throw (\"No method for reading signed 24 bits values\");\n } else {\n res = this.dataview.getUint8(this.position) << 16;\n res |= this.dataview.getUint8(this.position+1) << 8;\n res |= this.dataview.getUint8(this.position+2);\n }\n break;\n case 4:\n if (signed) {\n res = this.dataview.getInt32(this.position);\n } else {\n res = this.dataview.getUint32(this.position);\n }\n break;\n case 8:\n if (signed) {\n throw (\"No method for reading signed 64 bits values\");\n } else {\n res = this.dataview.getUint32(this.position) << 32;\n res |= this.dataview.getUint32(this.position+4);\n }\n break;\n default:\n throw (\"readInt method not implemented for size: \"+size);\n }\n this.position+= size;\n return res;\n } else {\n throw (\"Not enough bytes in buffer\");\n }\n}\n\nMP4BoxStream.prototype.readUint8 = function() {\n return this.readAnyInt(1, false);\n}\n\nMP4BoxStream.prototype.readUint16 = function() {\n return this.readAnyInt(2, false);\n}\n\nMP4BoxStream.prototype.readUint24 = function() {\n return this.readAnyInt(3, false);\n}\n\nMP4BoxStream.prototype.readUint32 = function() {\n return this.readAnyInt(4, false);\n}\n\nMP4BoxStream.prototype.readUint64 = function() {\n return this.readAnyInt(8, false);\n}\n\nMP4BoxStream.prototype.readString = function(length) {\n if (this.position + length <= this.buffer.byteLength) {\n var s = \"\";\n for (var i = 0; i < length; i++) {\n s += String.fromCharCode(this.readUint8());\n }\n return s;\n } else {\n throw (\"Not enough bytes in buffer\");\n }\n}\n\nMP4BoxStream.prototype.readCString = function() {\n var arr = [];\n while(true) {\n var b = this.readUint8();\n if (b !== 0) {\n arr.push(b);\n } else {\n break;\n }\n }\n return String.fromCharCode.apply(null, arr); \n}\n\nMP4BoxStream.prototype.readInt8 = function() {\n return this.readAnyInt(1, true);\n}\n\nMP4BoxStream.prototype.readInt16 = function() {\n return this.readAnyInt(2, true);\n}\n\nMP4BoxStream.prototype.readInt32 = function() {\n return this.readAnyInt(4, true);\n}\n\nMP4BoxStream.prototype.readInt64 = function() {\n return this.readAnyInt(8, false);\n}\n\nMP4BoxStream.prototype.readUint8Array = function(length) {\n var arr = new Uint8Array(length);\n for (var i = 0; i < length; i++) {\n arr[i] = this.readUint8();\n }\n return arr;\n}\n\nMP4BoxStream.prototype.readInt16Array = function(length) {\n var arr = new Int16Array(length);\n for (var i = 0; i < length; i++) {\n arr[i] = this.readInt16();\n }\n return arr;\n}\n\nMP4BoxStream.prototype.readUint16Array = function(length) {\n var arr = new Int16Array(length);\n for (var i = 0; i < length; i++) {\n arr[i] = this.readUint16();\n }\n return arr;\n}\n\nMP4BoxStream.prototype.readUint32Array = function(length) {\n var arr = new Uint32Array(length);\n for (var i = 0; i < length; i++) {\n arr[i] = this.readUint32();\n }\n return arr;\n}\n\nMP4BoxStream.prototype.readInt32Array = function(length) {\n var arr = new Int32Array(length);\n for (var i = 0; i < length; i++) {\n arr[i] = this.readInt32();\n }\n return arr;\n}\n\nif (typeof exports !== 'undefined') {\n exports.MP4BoxStream = MP4BoxStream;\n}// file:src/DataStream.js\n/**\n DataStream reads scalars, arrays and structs of data from an ArrayBuffer.\n It's like a file-like DataView on steroids.\n\n @param {ArrayBuffer} arrayBuffer ArrayBuffer to read from.\n @param {?Number} byteOffset Offset from arrayBuffer beginning for the DataStream.\n @param {?Boolean} endianness DataStream.BIG_ENDIAN or DataStream.LITTLE_ENDIAN (the default).\n */\nvar DataStream = function(arrayBuffer, byteOffset, endianness) {\n this._byteOffset = byteOffset || 0;\n if (arrayBuffer instanceof ArrayBuffer) {\n this.buffer = arrayBuffer;\n } else if (typeof arrayBuffer == \"object\") {\n this.dataView = arrayBuffer;\n if (byteOffset) {\n this._byteOffset += byteOffset;\n }\n } else {\n this.buffer = new ArrayBuffer(arrayBuffer || 0);\n }\n this.position = 0;\n this.endianness = endianness == null ? DataStream.LITTLE_ENDIAN : endianness;\n};\nDataStream.prototype = {};\n\nDataStream.prototype.getPosition = function() {\n return this.position;\n}\n\n/**\n Internal function to resize the DataStream buffer when required.\n @param {number} extra Number of bytes to add to the buffer allocation.\n @return {null}\n */\nDataStream.prototype._realloc = function(extra) {\n if (!this._dynamicSize) {\n return;\n }\n var req = this._byteOffset + this.position + extra;\n var blen = this._buffer.byteLength;\n if (req <= blen) {\n if (req > this._byteLength) {\n this._byteLength = req;\n }\n return;\n }\n if (blen < 1) {\n blen = 1;\n }\n while (req > blen) {\n blen *= 2;\n }\n var buf = new ArrayBuffer(blen);\n var src = new Uint8Array(this._buffer);\n var dst = new Uint8Array(buf, 0, src.length);\n dst.set(src);\n this.buffer = buf;\n this._byteLength = req;\n};\n\n/**\n Internal function to trim the DataStream buffer when required.\n Used for stripping out the extra bytes from the backing buffer when\n the virtual byteLength is smaller than the buffer byteLength (happens after\n growing the buffer with writes and not filling the extra space completely).\n\n @return {null}\n */\nDataStream.prototype._trimAlloc = function() {\n if (this._byteLength == this._buffer.byteLength) {\n return;\n }\n var buf = new ArrayBuffer(this._byteLength);\n var dst = new Uint8Array(buf);\n var src = new Uint8Array(this._buffer, 0, dst.length);\n dst.set(src);\n this.buffer = buf;\n};\n\n\n/**\n Big-endian const to use as default endianness.\n @type {boolean}\n */\nDataStream.BIG_ENDIAN = false;\n\n/**\n Little-endian const to use as default endianness.\n @type {boolean}\n */\nDataStream.LITTLE_ENDIAN = true;\n\n/**\n Virtual byte length of the DataStream backing buffer.\n Updated to be max of original buffer size and last written size.\n If dynamicSize is false is set to buffer size.\n @type {number}\n */\nDataStream.prototype._byteLength = 0;\n\n/**\n Returns the byte length of the DataStream object.\n @type {number}\n */\nObject.defineProperty(DataStream.prototype, 'byteLength',\n { get: function() {\n return this._byteLength - this._byteOffset;\n }});\n\n/**\n Set/get the backing ArrayBuffer of the DataStream object.\n The setter updates the DataView to point to the new buffer.\n @type {Object}\n */\nObject.defineProperty(DataStream.prototype, 'buffer',\n { get: function() {\n this._trimAlloc();\n return this._buffer;\n },\n set: function(v) {\n this._buffer = v;\n this._dataView = new DataView(this._buffer, this._byteOffset);\n this._byteLength = this._buffer.byteLength;\n } });\n\n/**\n Set/get the byteOffset of the DataStream object.\n The setter updates the DataView to point to the new byteOffset.\n @type {number}\n */\nObject.defineProperty(DataStream.prototype, 'byteOffset',\n { get: function() {\n return this._byteOffset;\n },\n set: function(v) {\n this._byteOffset = v;\n this._dataView = new DataView(this._buffer, this._byteOffset);\n this._byteLength = this._buffer.byteLength;\n } });\n\n/**\n Set/get the backing DataView of the DataStream object.\n The setter updates the buffer and byteOffset to point to the DataView values.\n @type {Object}\n */\nObject.defineProperty(DataStream.prototype, 'dataView',\n { get: function() {\n return this._dataView;\n },\n set: function(v) {\n this._byteOffset = v.byteOffset;\n this._buffer = v.buffer;\n this._dataView = new DataView(this._buffer, this._byteOffset);\n this._byteLength = this._byteOffset + v.byteLength;\n } });\n\n/**\n Sets the DataStream read/write position to given position.\n Clamps between 0 and DataStream length.\n\n @param {number} pos Position to seek to.\n @return {null}\n */\nDataStream.prototype.seek = function(pos) {\n var npos = Math.max(0, Math.min(this.byteLength, pos));\n this.position = (isNaN(npos) || !isFinite(npos)) ? 0 : npos;\n};\n\n/**\n Returns true if the DataStream seek pointer is at the end of buffer and\n there's no more data to read.\n\n @return {boolean} True if the seek pointer is at the end of the buffer.\n */\nDataStream.prototype.isEof = function() {\n return (this.position >= this._byteLength);\n};\n\n\n/**\n Maps a Uint8Array into the DataStream buffer.\n\n Nice for quickly reading in data.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} Uint8Array to the DataStream backing buffer.\n */\nDataStream.prototype.mapUint8Array = function(length) {\n this._realloc(length * 1);\n var arr = new Uint8Array(this._buffer, this.byteOffset+this.position, length);\n this.position += length * 1;\n return arr;\n};\n\n\n/**\n Reads an Int32Array of desired length and endianness from the DataStream.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} The read Int32Array.\n */\nDataStream.prototype.readInt32Array = function(length, e) {\n length = length == null ? (this.byteLength-this.position / 4) : length;\n var arr = new Int32Array(length);\n DataStream.memcpy(arr.buffer, 0,\n this.buffer, this.byteOffset+this.position,\n length*arr.BYTES_PER_ELEMENT);\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\n this.position += arr.byteLength;\n return arr;\n};\n\n/**\n Reads an Int16Array of desired length and endianness from the DataStream.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} The read Int16Array.\n */\nDataStream.prototype.readInt16Array = function(length, e) {\n length = length == null ? (this.byteLength-this.position / 2) : length;\n var arr = new Int16Array(length);\n DataStream.memcpy(arr.buffer, 0,\n this.buffer, this.byteOffset+this.position,\n length*arr.BYTES_PER_ELEMENT);\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\n this.position += arr.byteLength;\n return arr;\n};\n\n/**\n Reads an Int8Array of desired length from the DataStream.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} The read Int8Array.\n */\nDataStream.prototype.readInt8Array = function(length) {\n length = length == null ? (this.byteLength-this.position) : length;\n var arr = new Int8Array(length);\n DataStream.memcpy(arr.buffer, 0,\n this.buffer, this.byteOffset+this.position,\n length*arr.BYTES_PER_ELEMENT);\n this.position += arr.byteLength;\n return arr;\n};\n\n/**\n Reads a Uint32Array of desired length and endianness from the DataStream.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} The read Uint32Array.\n */\nDataStream.prototype.readUint32Array = function(length, e) {\n length = length == null ? (this.byteLength-this.position / 4) : length;\n var arr = new Uint32Array(length);\n DataStream.memcpy(arr.buffer, 0,\n this.buffer, this.byteOffset+this.position,\n length*arr.BYTES_PER_ELEMENT);\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\n this.position += arr.byteLength;\n return arr;\n};\n\n/**\n Reads a Uint16Array of desired length and endianness from the DataStream.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} The read Uint16Array.\n */\nDataStream.prototype.readUint16Array = function(length, e) {\n length = length == null ? (this.byteLength-this.position / 2) : length;\n var arr = new Uint16Array(length);\n DataStream.memcpy(arr.buffer, 0,\n this.buffer, this.byteOffset+this.position,\n length*arr.BYTES_PER_ELEMENT);\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\n this.position += arr.byteLength;\n return arr;\n};\n\n/**\n Reads a Uint8Array of desired length from the DataStream.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} The read Uint8Array.\n */\nDataStream.prototype.readUint8Array = function(length) {\n length = length == null ? (this.byteLength-this.position) : length;\n var arr = new Uint8Array(length);\n DataStream.memcpy(arr.buffer, 0,\n this.buffer, this.byteOffset+this.position,\n length*arr.BYTES_PER_ELEMENT);\n this.position += arr.byteLength;\n return arr;\n};\n\n/**\n Reads a Float64Array of desired length and endianness from the DataStream.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} The read Float64Array.\n */\nDataStream.prototype.readFloat64Array = function(length, e) {\n length = length == null ? (this.byteLength-this.position / 8) : length;\n var arr = new Float64Array(length);\n DataStream.memcpy(arr.buffer, 0,\n this.buffer, this.byteOffset+this.position,\n length*arr.BYTES_PER_ELEMENT);\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\n this.position += arr.byteLength;\n return arr;\n};\n\n/**\n Reads a Float32Array of desired length and endianness from the DataStream.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} The read Float32Array.\n */\nDataStream.prototype.readFloat32Array = function(length, e) {\n length = length == null ? (this.byteLength-this.position / 4) : length;\n var arr = new Float32Array(length);\n DataStream.memcpy(arr.buffer, 0,\n this.buffer, this.byteOffset+this.position,\n length*arr.BYTES_PER_ELEMENT);\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\n this.position += arr.byteLength;\n return arr;\n};\n\n\n/**\n Reads a 32-bit int from the DataStream with the desired endianness.\n\n @param {?boolean} e Endianness of the number.\n @return {number} The read number.\n */\nDataStream.prototype.readInt32 = function(e) {\n var v = this._dataView.getInt32(this.position, e == null ? this.endianness : e);\n this.position += 4;\n return v;\n};\n\n/**\n Reads a 16-bit int from the DataStream with the desired endianness.\n\n @param {?boolean} e Endianness of the number.\n @return {number} The read number.\n */\nDataStream.prototype.readInt16 = function(e) {\n var v = this._dataView.getInt16(this.position, e == null ? this.endianness : e);\n this.position += 2;\n return v;\n};\n\n/**\n Reads an 8-bit int from the DataStream.\n\n @return {number} The read number.\n */\nDataStream.prototype.readInt8 = function() {\n var v = this._dataView.getInt8(this.position);\n this.position += 1;\n return v;\n};\n\n/**\n Reads a 32-bit unsigned int from the DataStream with the desired endianness.\n\n @param {?boolean} e Endianness of the number.\n @return {number} The read number.\n */\nDataStream.prototype.readUint32 = function(e) {\n var v = this._dataView.getUint32(this.position, e == null ? this.endianness : e);\n this.position += 4;\n return v;\n};\n\n/**\n Reads a 16-bit unsigned int from the DataStream with the desired endianness.\n\n @param {?boolean} e Endianness of the number.\n @return {number} The read number.\n */\nDataStream.prototype.readUint16 = function(e) {\n var v = this._dataView.getUint16(this.position, e == null ? this.endianness : e);\n this.position += 2;\n return v;\n};\n\n/**\n Reads an 8-bit unsigned int from the DataStream.\n\n @return {number} The read number.\n */\nDataStream.prototype.readUint8 = function() {\n var v = this._dataView.getUint8(this.position);\n this.position += 1;\n return v;\n};\n\n/**\n Reads a 32-bit float from the DataStream with the desired endianness.\n\n @param {?boolean} e Endianness of the number.\n @return {number} The read number.\n */\nDataStream.prototype.readFloat32 = function(e) {\n var v = this._dataView.getFloat32(this.position, e == null ? this.endianness : e);\n this.position += 4;\n return v;\n};\n\n/**\n Reads a 64-bit float from the DataStream with the desired endianness.\n\n @param {?boolean} e Endianness of the number.\n @return {number} The read number.\n */\nDataStream.prototype.readFloat64 = function(e) {\n var v = this._dataView.getFloat64(this.position, e == null ? this.endianness : e);\n this.position += 8;\n return v;\n};\n\n/**\n Native endianness. Either DataStream.BIG_ENDIAN or DataStream.LITTLE_ENDIAN\n depending on the platform endianness.\n\n @type {boolean}\n */\nDataStream.endianness = new Int8Array(new Int16Array([1]).buffer)[0] > 0;\n\n/**\n Copies byteLength bytes from the src buffer at srcOffset to the\n dst buffer at dstOffset.\n\n @param {Object} dst Destination ArrayBuffer to write to.\n @param {number} dstOffset Offset to the destination ArrayBuffer.\n @param {Object} src Source ArrayBuffer to read from.\n @param {number} srcOffset Offset to the source ArrayBuffer.\n @param {number} byteLength Number of bytes to copy.\n */\nDataStream.memcpy = function(dst, dstOffset, src, srcOffset, byteLength) {\n var dstU8 = new Uint8Array(dst, dstOffset, byteLength);\n var srcU8 = new Uint8Array(src, srcOffset, byteLength);\n dstU8.set(srcU8);\n};\n\n/**\n Converts array to native endianness in-place.\n\n @param {Object} array Typed array to convert.\n @param {boolean} arrayIsLittleEndian True if the data in the array is\n little-endian. Set false for big-endian.\n @return {Object} The converted typed array.\n */\nDataStream.arrayToNative = function(array, arrayIsLittleEndian) {\n if (arrayIsLittleEndian == this.endianness) {\n return array;\n } else {\n return this.flipArrayEndianness(array);\n }\n};\n\n/**\n Converts native endianness array to desired endianness in-place.\n\n @param {Object} array Typed array to convert.\n @param {boolean} littleEndian True if the converted array should be\n little-endian. Set false for big-endian.\n @return {Object} The converted typed array.\n */\nDataStream.nativeToEndian = function(array, littleEndian) {\n if (this.endianness == littleEndian) {\n return array;\n } else {\n return this.flipArrayEndianness(array);\n }\n};\n\n/**\n Flips typed array endianness in-place.\n\n @param {Object} array Typed array to flip.\n @return {Object} The converted typed array.\n */\nDataStream.flipArrayEndianness = function(array) {\n var u8 = new Uint8Array(array.buffer, array.byteOffset, array.byteLength);\n for (var i=0; i<array.byteLength; i+=array.BYTES_PER_ELEMENT) {\n for (var j=i+array.BYTES_PER_ELEMENT-1, k=i; j>k; j--, k++) {\n var tmp = u8[k];\n u8[k] = u8[j];\n u8[j] = tmp;\n }\n }\n return array;\n};\n\n/**\n Seek position where DataStream#readStruct ran into a problem.\n Useful for debugging struct parsing.\n\n @type {number}\n */\nDataStream.prototype.failurePosition = 0;\n\nString.fromCharCodeUint8 = function(uint8arr) {\n var arr = [];\n for (var i = 0; i < uint8arr.length; i++) {\n arr[i] = uint8arr[i];\n }\n return String.fromCharCode.apply(null, arr);\n}\n/**\n Read a string of desired length and encoding from the DataStream.\n\n @param {number} length The length of the string to read in bytes.\n @param {?string} encoding The encoding of the string data in the DataStream.\n Defaults to ASCII.\n @return {string} The read string.\n */\nDataStream.prototype.readString = function(length, encoding) {\n if (encoding == null || encoding == \"ASCII\") {\n return String.fromCharCodeUint8.apply(null, [this.mapUint8Array(length == null ? this.byteLength-this.position : length)]);\n } else {\n return (new TextDecoder(encoding)).decode(this.mapUint8Array(length));\n }\n};\n\n/**\n Read null-terminated string of desired length from the DataStream. Truncates\n the returned string so that the null byte is not a part of it.\n\n @param {?number} length The length of the string to read.\n @return {string} The read string.\n */\nDataStream.prototype.readCString = function(length) {\n var blen = this.byteLength-this.position;\n var u8 = new Uint8Array(this._buffer, this._byteOffset + this.position);\n var len = blen;\n if (length != null) {\n len = Math.min(length, blen);\n }\n for (var i = 0; i < len && u8[i] !== 0; i++); // find first zero byte\n var s = String.fromCharCodeUint8.apply(null, [this.mapUint8Array(i)]);\n if (length != null) {\n this.position += len-i;\n } else if (i != blen) {\n this.position += 1; // trailing zero if not at end of buffer\n }\n return s;\n};\n\n/* \n TODO: fix endianness for 24/64-bit fields\n TODO: check range/support for 64-bits numbers in JavaScript\n*/\nvar MAX_SIZE = Math.pow(2, 32);\n\nDataStream.prototype.readInt64 = function () {\n return (this.readInt32()*MAX_SIZE)+this.readUint32();\n}\nDataStream.prototype.readUint64 = function () {\n\treturn (this.readUint32()*MAX_SIZE)+this.readUint32();\n}\n\nDataStream.prototype.readInt64 = function () {\n return (this.readUint32()*MAX_SIZE)+this.readUint32();\n}\n\nDataStream.prototype.readUint24 = function () {\n\treturn (this.readUint8()<<16)+(this.readUint8()<<8)+this.readUint8();\n}\n\nif (typeof exports !== 'undefined') {\n exports.DataStream = DataStream; \n}\n// file:src/DataStream-write.js\n/**\n Saves the DataStream contents to the given filename.\n Uses Chrome's anchor download property to initiate download.\n \n @param {string} filename Filename to save as.\n @return {null}\n */\nDataStream.prototype.save = function(filename) {\n var blob = new Blob([this.buffer]);\n if (window.URL && URL.createObjectURL) {\n var url = window.URL.createObjectURL(blob);\n var a = document.createElement('a');\n // Required in Firefox:\n document.body.appendChild(a);\n a.setAttribute('href', url);\n a.setAttribute('download', filename);\n // Required in Firefox:\n a.setAttribute('target', '_self');\n a.click();\n window.URL.revokeObjectURL(url);\n } else {\n throw(\"DataStream.save: Can't create object URL.\");\n }\n};\n\n/**\n Whether to extend DataStream buffer when trying to write beyond its size.\n If set, the buffer is reallocated to twice its current size until the\n requested write fits the buffer.\n @type {boolean}\n */\nDataStream.prototype._dynamicSize = true;\nObject.defineProperty(DataStream.prototype, 'dynamicSize',\n { get: function() {\n return this._dynamicSize;\n },\n set: function(v) {\n if (!v) {\n this._trimAlloc();\n }\n this._dynamicSize = v;\n } });\n\n/**\n Internal function to trim the DataStream buffer when required.\n Used for stripping out the first bytes when not needed anymore.\n\n @return {null}\n */\nDataStream.prototype.shift = function(offset) {\n var buf = new ArrayBuffer(this._byteLength-offset);\n var dst = new Uint8Array(buf);\n var src = new Uint8Array(this._buffer, offset, dst.length);\n dst.set(src);\n this.buffer = buf;\n this.position -= offset;\n};\n\n/**\n Writes an Int32Array of specified endianness to the DataStream.\n\n @param {Object} arr The array to write.\n @param {?boolean} e Endianness of the data to write.\n */\nDataStream.prototype.writeInt32Array = function(arr, e) {\n this._realloc(arr.length * 4);\n if (arr instanceof Int32Array &&\n this.byteOffset+this.position % arr.BYTES_PER_ELEMENT === 0) {\n DataStream.memcpy(this._buffer, this.byteOffset+this.position,\n arr.buffer, 0,\n arr.byteLength);\n this.mapInt32Array(arr.length, e);\n } else {\n for (var i=0; i<arr.length; i++) {\n this.writeInt32(arr[i], e);\n }\n }\n};\n\n/**\n Writes an Int16Array of specified endianness to the DataStream.\n\n @param {Object} arr The array to write.\n @param {?boolean} e Endianness of the data to write.\n */\nDataStream.prototype.writeInt16Array = function(arr, e) {\n this._realloc(arr.length * 2);\n if (arr instanceof Int16Array &&\n this.byteOffset+this.position % arr.BYTES_PER_ELEMENT === 0) {\n DataStream.memcpy(this._buffer, this.byteOffset+this.position,\n arr.buffer, 0,\n arr.byteLength);\n this.mapInt16Array(arr.length, e);\n } else {\n for (var i=0; i<arr.length; i++) {\n this.writeInt16(arr[i], e);\n }\n }\n};\n\n/**\n Writes an Int8Array to the DataStream.\n\n @param {Object} arr The array to write.\n */\nDataStream.prototype.writeInt8Array = function(arr) {\n this._realloc(arr.length * 1);\n if (arr instanceof Int8Array &&\n this.byteOffset+this.position % arr.BYTES_PER_ELEMENT === 0) {\n DataStream.memcpy(this._buffer, this.byteOffset+this.position,\n arr.buffer, 0,\n arr.byteLength);\n this.mapInt8Array(arr.length);\n } else {\n for (var i=0; i<arr.length; i++) {\n this.writeInt8(arr[i]);\n }\n }\n};\n\n/**\n Writes a Uint32Array of specified endianness to the DataStream.\n\n @param {Object} arr The array to write.\n @param {?boolean} e Endianness of the data to write.\n */\nDataStream.prototype.writeUint32Array = function(arr, e) {\n this._realloc(arr.length * 4);\n if (arr instanceof Uint32Array &&\n this.byteOffset+this.position % arr.BYTES_PER_ELEMENT === 0) {\n DataStream.memcpy(this._buffer, this.byteOffset+this.position,\n arr.buffer, 0,\n arr.byteLength);\n this.mapUint32Array(arr.length, e);\n } else {\n for (var i=0; i<arr.length; i++) {\n this.writeUint32(arr[i], e);\n }\n }\n};\n\n/**\n Writes a Uint16Array of specified endianness to the DataStream.\n\n @param {Object} arr The array to write.\n @param {?boolean} e Endianness of the data to write.\n */\nDataStream.prototype.writeUint16Array = function(arr, e) {\n this._realloc(arr.length * 2);\n if (arr instanceof Uint16Array &&\n this.byteOffset+this.position % arr.BYTES_PER_ELEMENT === 0) {\n DataStream.memcpy(this._buffer, this.byteOffset+this.position,\n arr.buffer, 0,\n arr.byteLength);\n this.mapUint16Array(arr.length, e);\n } else {\n for (var i=0; i<arr.length; i++) {\n this.writeUint16(arr[i], e);\n }\n }\n};\n\n/**\n Writes a Uint8Array to the DataStream.\n\n @param {Object} arr The array to write.\n */\nDataStream.prototype.writeUint8Array = function(arr) {\n this._realloc(arr.length * 1);\n if (arr instanceof Uint8Array &&\n this.byteOffset+this.position % arr.BYTES_PER_ELEMENT === 0) {\n DataStream.memcpy(this._buffer, this.byteOffset+this.position,\n arr.buffer, 0,\n arr.byteLength);\n this.mapUint8Array(arr.length);\n } else {\n for (var i=0; i<arr.length; i++) {\n this.writeUint8(arr[i]);\n }\n }\n};\n\n/**\n Writes a Float64Array of specified endianness to the DataStream.\n\n @param {Object} arr The array to write.\n @param {?boolean} e Endianness of the data to write.\n */\nDataStream.prototype.writeFloat64Array = function(arr, e) {\n this._realloc(arr.length * 8);\n if (arr instanceof Float64Array &&\n this.byteOffset+this.position % arr.BYTES_PER_ELEMENT === 0) {\n DataStream.memcpy(this._buffer, this.byteOffset+this.position,\n arr.buffer, 0,\n arr.byteLength);\n this.mapFloat64Array(arr.length, e);\n } else {\n for (var i=0; i<arr.length; i++) {\n this.writeFloat64(arr[i], e);\n }\n }\n};\n\n/**\n Writes a Float32Array of specified endianness to the DataStream.\n\n @param {Object} arr The array to write.\n @param {?boolean} e Endianness of the data to write.\n */\nDataStream.prototype.writeFloat32Array = function(arr, e) {\n this._realloc(arr.length * 4);\n if (arr instanceof Float32Array &&\n this.byteOffset+this.position % arr.BYTES_PER_ELEMENT === 0) {\n DataStream.memcpy(this._buffer, this.byteOffset+this.position,\n arr.buffer, 0,\n arr.byteLength);\n this.mapFloat32Array(arr.length, e);\n } else {\n for (var i=0; i<arr.length; i++) {\n this.writeFloat32(arr[i], e);\n }\n }\n};\n\n\n/**\n Writes a 32-bit int to the DataStream with the desired endianness.\n\n @param {number} v Number to write.\n @param {?boolean} e Endianness of the number.\n */\nDataStream.prototype.writeInt32 = function(v, e) {\n this._realloc(4);\n this._dataView.setInt32(this.position, v, e == null ? this.endianness : e);\n this.position += 4;\n};\n\n/**\n Writes a 16-bit int to the DataStream with the desired endianness.\n\n @param {number} v Number to write.\n @param {?boolean} e Endianness of the number.\n */\nDataStream.prototype.writeInt16 = function(v, e) {\n this._realloc(2);\n this._dataView.setInt16(this.position, v, e == null ? this.endianness : e);\n this.position += 2;\n};\n\n/**\n Writes an 8-bit int to the DataStream.\n\n @param {number} v Number to write.\n */\nDataStream.prototype.writeInt8 = function(v) {\n this._realloc(1);\n this._dataView.setInt8(this.position, v);\n this.position += 1;\n};\n\n/**\n Writes a 32-bit unsigned int to the DataStream with the desired endianness.\n\n @param {number} v Number to write.\n @param {?boolean} e Endianness of the number.\n */\nDataStream.prototype.writeUint32 = function(v, e) {\n this._realloc(4);\n this._dataView.setUint32(this.position, v, e == null ? this.endianness : e);\n this.position += 4;\n};\n\n/**\n Writes a 16-bit unsigned int to the DataStream with the desired endianness.\n\n @param {number} v Number to write.\n @param {?boolean} e Endianness of the number.\n */\nDataStream.prototype.writeUint16 = function(v, e) {\n this._realloc(2);\n this._dataView.setUint16(this.position, v, e == null ? this.endianness : e);\n this.position += 2;\n};\n\n/**\n Writes an 8-bit unsigned int to the DataStream.\n\n @param {number} v Number to write.\n */\nDataStream.prototype.writeUint8 = function(v) {\n this._realloc(1);\n this._dataView.setUint8(this.position, v);\n this.position += 1;\n};\n\n/**\n Writes a 32-bit float to the DataStream with the desired endianness.\n\n @param {number} v Number to write.\n @param {?boolean} e Endianness of the number.\n */\nDataStream.prototype.writeFloat32 = function(v, e) {\n this._realloc(4);\n this._dataView.setFloat32(this.position, v, e == null ? this.endianness : e);\n this.position += 4;\n};\n\n/**\n Writes a 64-bit float to the DataStream with the desired endianness.\n\n @param {number} v Number to write.\n @param {?boolean} e Endianness of the number.\n */\nDataStream.prototype.writeFloat64 = function(v, e) {\n this._realloc(8);\n this._dataView.setFloat64(this.position, v, e == null ? this.endianness : e);\n this.position += 8;\n};\n\n/**\n Write a UCS-2 string of desired endianness to the DataStream. The\n lengthOverride argument lets you define the number of characters to write.\n If the string is shorter than lengthOverride, the extra space is padded with\n zeroes.\n\n @param {string} str The string to write.\n @param {?boolean} endianness The endianness to use for the written string data.\n @param {?number} lengthOverride The number of characters to write.\n */\nDataStream.prototype.writeUCS2String = function(str, endianness, lengthOverride) {\n if (lengthOverride == null) {\n lengthOverride = str.length;\n }\n for (var i = 0; i < str.length && i < lengthOverride; i++) {\n this.writeUint16(str.charCodeAt(i), endianness);\n }\n for (; i<lengthOverride; i++) {\n this.writeUint16(0);\n }\n};\n\n/**\n Writes a string of desired length and encoding to the DataStream.\n\n @param {string} s The string to write.\n @param {?string} encoding The encoding for the written string data.\n Defaults to ASCII.\n @param {?number} length The number of characters to write.\n */\nDataStream.prototype.writeString = function(s, encoding, length) {\n var i = 0;\n if (encoding == null || encoding == \"ASCII\") {\n if (length != null) {\n var len = Math.min(s.length, length);\n for (i=0; i<len; i++) {\n this.writeUint8(s.charCodeAt(i));\n }\n for (; i<length; i++) {\n this.writeUint8(0);\n }\n } else {\n for (i=0; i<s.length; i++) {\n this.writeUint8(s.charCodeAt(i));\n }\n }\n } else {\n this.writeUint8Array((new TextEncoder(encoding)).encode(s.substring(0, length)));\n }\n};\n\n/**\n Writes a null-terminated string to DataStream and zero-pads it to length\n bytes. If length is not given, writes the string followed by a zero.\n If string is longer than length, the written part of the string does not have\n a trailing zero.\n\n @param {string} s The string to write.\n @param {?number} length The number of characters to write.\n */\nDataStream.prototype.writeCString = function(s, length) {\n var i = 0;\n if (length != null) {\n var len = Math.min(s.length, length);\n for (i=0; i<len; i++) {\n this.writeUint8(s.charCodeAt(i));\n }\n for (; i<length; i++) {\n this.writeUint8(0);\n }\n } else {\n for (i=0; i<s.length; i++) {\n this.writeUint8(s.charCodeAt(i));\n }\n this.writeUint8(0);\n }\n};\n\n/**\n Writes a struct to the DataStream. Takes a structDefinition that gives the\n types and a struct object that gives the values. Refer to readStruct for the\n structure of structDefinition.\n\n @param {Object} structDefinition Type definition of the struct.\n @param {Object} struct The struct data object.\n */\nDataStream.prototype.writeStruct = function(structDefinition, struct) {\n for (var i = 0; i < structDefinition.length; i+=2) {\n var t = structDefinition[i+1];\n this.writeType(t, struct[structDefinition[i]], struct);\n }\n};\n\n/**\n Writes object v of type t to the DataStream.\n\n @param {Object} t Type of data to write.\n @param {Object} v Value of data to write.\n @param {Object} struct Struct to pass to write callback functions.\n */\nDataStream.prototype.writeType = function(t, v, struct) {\n var tp;\n if (typeof t == \"function\") {\n return t(this, v);\n } else if (typeof t == \"object\" && !(t instanceof Array)) {\n return t.set(this, v, struct);\n }\n var lengthOverride = null;\n var charset = \"ASCII\";\n var pos = this.position;\n if (typeof(t) == 'string' && /:/.test(t)) {\n tp = t.split(\":\");\n t = tp[0];\n lengthOverride = parseInt(tp[1]);\n }\n if (typeof t == 'string' && /,/.test(t)) {\n tp = t.split(\",\");\n t = tp[0];\n charset = parseInt(tp[1]);\n }\n\n switch(t) {\n case 'uint8':\n this.writeUint8(v);\n break;\n case 'int8':\n this.writeInt8(v);\n break;\n\n case 'uint16':\n this.writeUint16(v, this.endianness);\n break;\n case 'int16':\n this.writeInt16(v, this.endianness);\n break;\n case 'uint32':\n this.writeUint32(v, this.endianness);\n break;\n case 'int32':\n this.writeInt32(v, this.endianness);\n break;\n case 'float32':\n this.writeFloat32(v, this.endianness);\n break;\n case 'float64':\n this.writeFloat64(v, this.endianness);\n break;\n\n case 'uint16be':\n this.writeUint16(v, DataStream.BIG_ENDIAN);\n break;\n case 'int16be':\n this.writeInt16(v, DataStream.BIG_ENDIAN);\n break;\n case 'uint32be':\n this.writeUint32(v, DataStream.BIG_ENDIAN);\n break;\n case 'int32be':\n this.writeInt32(v, DataStream.BIG_ENDIAN);\n break;\n case 'float32be':\n this.writeFloat32(v, DataStream.BIG_ENDIAN);\n break;\n case 'float64be':\n this.writeFloat64(v, DataStream.BIG_ENDIAN);\n break;\n\n case 'uint16le':\n this.writeUint16(v, DataStream.LITTLE_ENDIAN);\n break;\n case 'int16le':\n this.writeInt16(v, DataStream.LITTLE_ENDIAN);\n break;\n case 'uint32le':\n this.writeUint32(v, DataStream.LITTLE_ENDIAN);\n break;\n case 'int32le':\n this.writeInt32(v, DataStream.LITTLE_ENDIAN);\n break;\n case 'float32le':\n this.writeFloat32(v, DataStream.LITTLE_ENDIAN);\n break;\n case 'float64le':\n this.writeFloat64(v, DataStream.LITTLE_ENDIAN);\n break;\n\n case 'cstring':\n this.writeCString(v, lengthOverride);\n break;\n\n case 'string':\n this.writeString(v, charset, lengthOverride);\n break;\n\n case 'u16string':\n this.writeUCS2String(v, this.endianness, lengthOverride);\n break;\n\n case 'u16stringle':\n this.writeUCS2String(v, DataStream.LITTLE_ENDIAN, lengthOverride);\n break;\n\n case 'u16stringbe':\n this.writeUCS2String(v, DataStream.BIG_ENDIAN, lengthOverride);\n break;\n\n default:\n if (t.length == 3) {\n var ta = t[1];\n for (var i=0; i<v.length; i++) {\n this.writeType(ta, v[i]);\n }\n break;\n } else {\n this.writeStruct(t, v);\n break;\n }\n }\n if (lengthOverride != null) {\n this.position = pos;\n this._realloc(lengthOverride);\n this.position = pos + lengthOverride;\n }\n};\n\n\nDataStream.prototype.writeUint64 = function (v) {\n\tvar h = Math.floor(v / MAX_SIZE);\n\tthis.writeUint32(h);\n\tthis.writeUint32(v & 0xFFFFFFFF);\n}\n\nDataStream.prototype.writeUint24 = function (v) {\n\tthis.writeUint8((v & 0x00FF0000)>>16);\n\tthis.writeUint8((v & 0x0000FF00)>>8);\n\tthis.writeUint8((v & 0x000000FF));\n}\n\nDataStream.prototype.adjustUint32 = function(position, value) {\n\tvar pos = this.position;\n\tthis.seek(position);\n\tthis.writeUint32(value);\n\tthis.seek(pos);\n}\n// file:src/DataStream-map.js\n/**\n Maps an Int32Array into the DataStream buffer, swizzling it to native\n endianness in-place. The current offset from the start of the buffer needs to\n be a multiple of element size, just like with typed array views.\n\n Nice for quickly reading in data. Warning: potentially modifies the buffer\n contents.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} Int32Array to the DataStream backing buffer.\n */\nDataStream.prototype.mapInt32Array = function(length, e) {\n this._realloc(length * 4);\n var arr = new Int32Array(this._buffer, this.byteOffset+this.position, length);\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\n this.position += length * 4;\n return arr;\n};\n\n/**\n Maps an Int16Array into the DataStream buffer, swizzling it to native\n endianness in-place. The current offset from the start of the buffer needs to\n be a multiple of element size, just like with typed array views.\n\n Nice for quickly reading in data. Warning: potentially modifies the buffer\n contents.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} Int16Array to the DataStream backing buffer.\n */\nDataStream.prototype.mapInt16Array = function(length, e) {\n this._realloc(length * 2);\n var arr = new Int16Array(this._buffer, this.byteOffset+this.position, length);\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\n this.position += length * 2;\n return arr;\n};\n\n/**\n Maps an Int8Array into the DataStream buffer.\n\n Nice for quickly reading in data.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} Int8Array to the DataStream backing buffer.\n */\nDataStream.prototype.mapInt8Array = function(length) {\n this._realloc(length * 1);\n var arr = new Int8Array(this._buffer, this.byteOffset+this.position, length);\n this.position += length * 1;\n return arr;\n};\n\n/**\n Maps a Uint32Array into the DataStream buffer, swizzling it to native\n endianness in-place. The current offset from the start of the buffer needs to\n be a multiple of element size, just like with typed array views.\n\n Nice for quickly reading in data. Warning: potentially modifies the buffer\n contents.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} Uint32Array to the DataStream backing buffer.\n */\nDataStream.prototype.mapUint32Array = function(length, e) {\n this._realloc(length * 4);\n var arr = new Uint32Array(this._buffer, this.byteOffset+this.position, length);\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\n this.position += length * 4;\n return arr;\n};\n\n/**\n Maps a Uint16Array into the DataStream buffer, swizzling it to native\n endianness in-place. The current offset from the start of the buffer needs to\n be a multiple of element size, just like with typed array views.\n\n Nice for quickly reading in data. Warning: potentially modifies the buffer\n contents.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} Uint16Array to the DataStream backing buffer.\n */\nDataStream.prototype.mapUint16Array = function(length, e) {\n this._realloc(length * 2);\n var arr = new Uint16Array(this._buffer, this.byteOffset+this.position, length);\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\n this.position += length * 2;\n return arr;\n};\n\n/**\n Maps a Float64Array into the DataStream buffer, swizzling it to native\n endianness in-place. The current offset from the start of the buffer needs to\n be a multiple of element size, just like with typed array views.\n\n Nice for quickly reading in data. Warning: potentially modifies the buffer\n contents.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} Float64Array to the DataStream backing buffer.\n */\nDataStream.prototype.mapFloat64Array = function(length, e) {\n this._realloc(length * 8);\n var arr = new Float64Array(this._buffer, this.byteOffset+this.position, length);\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\n this.position += length * 8;\n return arr;\n};\n\n/**\n Maps a Float32Array into the DataStream buffer, swizzling it to native\n endianness in-place. The current offset from the start of the buffer needs to\n be a multiple of element size, just like with typed array views.\n\n Nice for quickly reading in data. Warning: potentially modifies the buffer\n contents.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} Float32Array to the DataStream backing buffer.\n */\nDataStream.prototype.mapFloat32Array = function(length, e) {\n this._realloc(length * 4);\n var arr = new Float32Array(this._buffer, this.byteOffset+this.position, length);\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\n this.position += length * 4;\n return arr;\n};\n// file:src/buffer.js\n/**\n * MultiBufferStream is a class that acts as a SimpleStream for parsing \n * It holds several, possibly non-contiguous ArrayBuffer objects, each with a fileStart property \n * containing the offset for the buffer data in an original/virtual file \n *\n * It inherits also from DataStream for all read/write/alloc operations\n */\n\n/**\n * Constructor\n */\nvar MultiBufferStream = function(buffer) {\n\t/* List of ArrayBuffers, with a fileStart property, sorted in fileStart order and non overlapping */\n\tthis.buffers = [];\t\n\tthis.bufferIndex = -1;\n\tif (buffer) {\n\t\tthis.insertBuffer(buffer);\n\t\tthis.bufferIndex = 0;\n\t}\n}\nMultiBufferStream.prototype = new DataStream(new ArrayBuffer(), 0, DataStream.BIG_ENDIAN);\n\n/************************************************************************************\n Methods for the managnement of the buffers (insertion, removal, concatenation, ...)\n ***********************************************************************************/\n\nMultiBufferStream.prototype.initialized = function() {\n\tvar firstBuffer;\n\tif (this.bufferIndex > -1) {\n\t\treturn true;\n\t} else if (this.buffers.length > 0) {\n\t\tfirstBuffer = this.buffers[0];\n\t\tif (firstBuffer.fileStart === 0) {\n\t\t\tthis.buffer = firstBuffer;\n\t\t\tthis.bufferIndex = 0;\n\t\t\tLog.debug(\"MultiBufferStream\", \"Stream ready for parsing\");\n\t\t\treturn true;\n\t\t} else {\n\t\t\tLog.warn(\"MultiBufferStream\", \"The first buffer should have a fileStart of 0\");\n\t\t\tthis.logBufferLevel();\n\t\t\treturn false;\n\t\t}\n\t} else {\n\t\tLog.warn(\"MultiBufferStream\", \"No buffer to start parsing from\");\n\t\tthis.logBufferLevel();\n\t\treturn false;\n\t}\t\t\t\n}\n\n/**\n * helper functions to concatenate two ArrayBuffer objects\n * @param {ArrayBuffer} buffer1 \n * @param {ArrayBuffer} buffer2 \n * @return {ArrayBuffer} the concatenation of buffer1 and buffer2 in that order\n */\nArrayBuffer.concat = function(buffer1, buffer2) {\n Log.debug(\"ArrayBuffer\", \"Trying to create a new buffer of size: \"+(buffer1.byteLength + buffer2.byteLength));\n var tmp = new Uint8Array(buffer1.byteLength + buffer2.byteLength);\n tmp.set(new Uint8Array(buffer1), 0);\n tmp.set(new Uint8Array(buffer2), buffer1.byteLength);\n return tmp.buffer;\n};\n\n/**\n * Reduces the size of a given buffer, but taking the part between offset and offset+newlength\n * @param {ArrayBuffer} buffer \n * @param {Number} offset the start of new buffer\n * @param {Number} newLength the length of the new buffer\n * @return {ArrayBuffer} the new buffer\n */\nMultiBufferStream.prototype.reduceBuffer = function(buffer, offset, newLength) {\n\tvar smallB;\n\tsmallB = new Uint8Array(newLength);\n\tsmallB.set(new Uint8Array(buffer, offset, newLength));\n\tsmallB.buffer.fileStart = buffer.fileStart+offset;\n\tsmallB.buffer.usedBytes = 0;\n\treturn smallB.buffer;\t\n}\n\n/**\n * Inserts the new buffer in the sorted list of buffers,\n * making sure, it is not overlapping with existing ones (possibly reducing its size).\n * if the new buffer overrides/replaces the 0-th buffer (for instance because it is bigger), \n * updates the DataStream buffer for parsing \n*/\nMultiBufferStream.prototype.insertBuffer = function(ab) {\t\n\tvar to_add = true;\n\t/* TODO: improve insertion if many buffers */\n\tfor (var i = 0; i < this.buffers.length; i++) {\n\t\tvar b = this.buffers[i];\n\t\tif (ab.fileStart <= b.fileStart) {\n\t\t\t/* the insertion position is found */\n\t\t\tif (ab.fileStart === b.fileStart) {\n\t\t\t\t/* The new buffer overlaps with an existing buffer */\n\t\t\t\tif (ab.byteLength > b.byteLength) {\n\t\t\t\t\t/* the new buffer is bigger than the existing one\n\t\t\t\t\t remove the existing buffer and try again to insert \n\t\t\t\t\t the new buffer to check overlap with the next ones */\n\t\t\t\t\tthis.buffers.splice(i, 1);\n\t\t\t\t\ti--; \n\t\t\t\t\tcontinue;\n\t\t\t\t} else {\n\t\t\t\t\t/* the new buffer is smaller than the existing one, just drop it */\n\t\t\t\t\tLog.warn(\"MultiBufferStream\", \"Buffer (fileStart: \"+ab.fileStart+\" - Length: \"+ab.byteLength+\") already appended, ignoring\");\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t/* The beginning of the new buffer is not overlapping with an existing buffer\n\t\t\t\t let's check the end of it */\n\t\t\t\tif (ab.fileStart + ab.byteLength <= b.fileStart) {\n\t\t\t\t\t/* no overlap, we can add it as is */\n\t\t\t\t} else {\n\t\t\t\t\t/* There is some overlap, cut the new buffer short, and add it*/\n\t\t\t\t\tab = this.reduceBuffer(ab, 0, b.fileStart - ab.fileStart);\n\t\t\t\t}\n\t\t\t\tLog.debug(\"MultiBufferStream\", \"Appending new buffer (fileStart: \"+ab.fileStart+\" - Length: \"+ab.byteLength+\")\");\n\t\t\t\tthis.buffers.splice(i, 0, ab);\n\t\t\t\t/* if this new buffer is inserted in the first place in the list of the buffer, \n\t\t\t\t and the DataStream is initialized, make it the buffer used for parsing */\n\t\t\t\tif (i === 0) {\n\t\t\t\t\tthis.buffer = ab;\n\t\t\t\t}\n\t\t\t}\n\t\t\tto_add = false;\n\t\t\tbreak;\n\t\t} else if (ab.fileStart < b.fileStart + b.byteLength) {\n\t\t\t/* the new buffer overlaps its beginning with the end of the current buffer */\n\t\t\tvar offset = b.fileStart + b.byteLength - ab.fileStart;\n\t\t\tvar newLength = ab.byteLength - offset;\n\t\t\tif (newLength > 0) {\n\t\t\t\t/* the new buffer is bigger than the current overlap, drop the overlapping part and try again inserting the remaining buffer */\n\t\t\t\tab = this.reduceBuffer(ab, offset, newLength);\n\t\t\t} else {\n\t\t\t\t/* the content of the new buffer is entirely contained in the existing buffer, drop it entirely */\n\t\t\t\tto_add = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\t/* if the buffer has not been added, we can add it at the end */\n\tif (to_add) {\n\t\tLog.debug(\"MultiBufferStream\", \"Appending new buffer (fileStart: \"+ab.fileStart+\" - Length: \"+ab.byteLength+\")\");\n\t\tthis.buffers.push(ab);\n\t\t/* if this new buffer is inserted in the first place in the list of the buffer, \n\t\t and the DataStream is initialized, make it the buffer used for parsing */\n\t\tif (i === 0) {\n\t\t\tthis.buffer = ab;\n\t\t}\n\t}\n}\n\n/**\n * Displays the status of the buffers (number and used bytes)\n * @param {Object} info callback method for display\n */\nMultiBufferStream.prototype.logBufferLevel = function(info) {\n\tvar i;\n\tvar buffer;\n\tvar used, total;\n\tvar ranges = [];\n\tvar range;\n\tvar bufferedString = \"\";\n\tused = 0;\n\ttotal = 0;\n\tfor (i = 0; i < this.buffers.length; i++) {\n\t\tbuffer = this.buffers[i];\n\t\tif (i === 0) {\n\t\t\trange = {};\n\t\t\tranges.push(range);\n\t\t\trange.start = buffer.fileStart;\n\t\t\trange.end = buffer.fileStart+buffer.byteLength;\n\t\t\tbufferedString += \"[\"+range.start+\"-\";\n\t\t} else if (range.end === buffer.fileStart) {\n\t\t\trange.end = buffer.fileStart+buffer.byteLength;\n\t\t} else {\n\t\t\trange = {};\n\t\t\trange.start = buffer.fileStart;\n\t\t\tbufferedString += (ranges[ranges.length-1].end-1)+\"], [\"+range.start+\"-\";\n\t\t\trange.end = buffer.fileStart+buffer.byteLength;\n\t\t\tranges.push(range);\n\t\t}\n\t\tused += buffer.usedBytes;\n\t\ttotal += buffer.byteLength;\n\t}\n\tif (ranges.length > 0) {\n\t\tbufferedString += (range.end-1)+\"]\";\n\t}\n\tvar log = (info ? Log.info : Log.debug)\n\tif (this.buffers.length === 0) {\n\t\tlog(\"MultiBufferStream\", \"No more buffer in memory\");\n\t} else {\n\t\tlog(\"MultiBufferStream\", \"\"+this.buffers.length+\" stored buffer(s) (\"+used+\"/\"+total+\" bytes), continuous ranges: \"+bufferedString);\n\t}\n}\n\nMultiBufferStream.prototype.cleanBuffers = function () {\n\tvar i;\n\tvar buffer;\n\tfor (i = 0; i < this.buffers.length; i++) {\n\t\tbuffer = this.buffers[i];\n\t\tif (buffer.usedBytes === buffer.byteLength) {\n\t\t\tLog.debug(\"MultiBufferStream\", \"Removing buffer #\"+i);\n\t\t\tthis.buffers.splice(i, 1);\n\t\t\ti--;\n\t\t}\n\t}\n}\n\nMultiBufferStream.prototype.mergeNextBuffer = function() {\n\tvar next_buffer;\n\tif (this.bufferIndex+1 < this.buffers.length) {\n\t\tnext_buffer = this.buffers[this.bufferIndex+1];\n\t\tif (next_buffer.fileStart === this.buffer.fileStart + this.buffer.byteLength) {\n\t\t\tvar oldLength = this.buffer.byteLength;\n\t\t\tvar oldUsedBytes = this.buffer.usedBytes;\n\t\t\tvar oldFileStart = this.buffer.fileStart;\n\t\t\tthis.buffers[this.bufferIndex] = ArrayBuffer.concat(this.buffer, next_buffer);\n\t\t\tthis.buffer = this.buffers[this.bufferIndex];\n\t\t\tthis.buffers.splice(this.bufferIndex+1, 1);\n\t\t\tthis.buffer.usedBytes = oldUsedBytes; /* TODO: should it be += ? */\n\t\t\tthis.buffer.fileStart = oldFileStart;\n\t\t\tLog.debug(\"ISOFile\", \"Concatenating buffer for box parsing (length: \"+oldLength+\"->\"+this.buffer.byteLength+\")\");\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t} else {\n\t\treturn false;\n\t}\n}\n\n\n/*************************************************************************\n Seek-related functions\n *************************************************************************/\n\n/**\n * Finds the buffer that holds the given file position\n * @param {Boolean} fromStart indicates if the search should start from the current buffer (false) \n * or from the first buffer (true)\n * @param {Number} filePosition position in the file to seek to\n * @param {Boolean} markAsUsed indicates if the bytes in between the current position and the seek position \n * should be marked as used for garbage collection\n * @return {Number} the index of the buffer holding the seeked file position, -1 if not found.\n */\nMultiBufferStream.prototype.findPosition = function(fromStart, filePosition, markAsUsed) {\n\tvar i;\n\tvar abuffer = null;\n\tvar index = -1;\n\n\t/* find the buffer with the largest position smaller than the given position */\n\tif (fromStart === true) {\n\t /* the reposition can be in the past, we need to check from the beginning of the list of buffers */\n\t\ti = 0;\n\t} else {\n\t\ti = this.bufferIndex;\n\t}\n\n\twhile (i < this.buffers.length) {\n\t\tabuffer = this.buffers[i];\n\t\tif (abuffer.fileStart <= filePosition) {\n\t\t\tindex = i;\n\t\t\tif (markAsUsed) {\n\t\t\t\tif (abuffer.fileStart + abuffer.byteLength <= filePosition) {\n\t\t\t\t\tabuffer.usedBytes = abuffer.byteLength;\t\n\t\t\t\t} else {\n\t\t\t\t\tabuffer.usedBytes = filePosition - abuffer.fileStart;\n\t\t\t\t}\t\t\n\t\t\t\tthis.logBufferLevel();\t\n\t\t\t}\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t\ti++;\n\t}\n\n\tif (index !== -1) {\n\t\tabuffer = this.buffers[index];\n\t\tif (abuffer.fileStart + abuffer.byteLength >= filePosition) {\t\t\t\n\t\t\tLog.debug(\"MultiBufferStream\", \"Found position in existing buffer #\"+index);\n\t\t\treturn index;\n\t\t} else {\n\t\t\treturn -1;\n\t\t}\n\t} else {\n\t\treturn -1;\n\t}\n}\n\n/**\n * Finds the largest file position contained in a buffer or in the next buffers if they are contiguous (no gap)\n * starting from the given buffer index or from the current buffer if the index is not given\n *\n * @param {Number} inputindex Index of the buffer to start from\n * @return {Number} The largest file position found in the buffers\n */\nMultiBufferStream.prototype.findEndContiguousBuf = function(inputindex) {\n\tvar i;\n\tvar currentBuf;\n\tvar nextBuf;\n\tvar index = (inputindex !== undefined ? inputindex : this.bufferIndex);\n\tcurrentBuf = this.buffers[index];\n\t/* find the end of the contiguous range of data */\n\tif (this.buffers.length > index+1) {\n\t\tfor (i = index+1; i < this.buffers.length; i++) {\n\t\t\tnextBuf = this.buffers[i];\n\t\t\tif (nextBuf.fileStart === currentBuf.fileStart + currentBuf.byteLength) {\n\t\t\t\tcurrentBuf = nextBuf;\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\t/* return the position of last byte in the file that we have */\n\treturn currentBuf.fileStart + currentBuf.byteLength;\n}\n\n/**\n * Returns the largest file position contained in the buffers, larger than the given position\n * @param {Number} pos the file position to start from\n * @return {Number} the largest position in the current buffer or in the buffer and the next contiguous \n * buffer that holds the given position\n */\nMultiBufferStream.prototype.getEndFilePositionAfter = function(pos) {\n\tvar index = this.findPosition(true, pos, false);\n\tif (index !== -1) {\n\t\treturn this.findEndContiguousBuf(index);\n\t} else {\n\t\treturn pos;\n\t}\n}\n\n/*************************************************************************\n Garbage collection related functions\n *************************************************************************/\n\n/**\n * Marks a given number of bytes as used in the current buffer for garbage collection\n * @param {Number} nbBytes \n */\nMultiBufferStream.prototype.addUsedBytes = function(nbBytes) {\n\tthis.buffer.usedBytes += nbBytes;\n\tthis.logBufferLevel();\n}\n\n/**\n * Marks the entire current buffer as used, ready for garbage collection\n */\nMultiBufferStream.prototype.setAllUsedBytes = function() {\n\tthis.buffer.usedBytes = this.buffer.byteLength;\n\tthis.logBufferLevel();\n}\n\n/*************************************************************************\n Common API between MultiBufferStream and SimpleStream\n *************************************************************************/\n\n/**\n * Tries to seek to a given file position\n * if possible, repositions the parsing from there and returns true \n * if not possible, does not change anything and returns false \n * @param {Number} filePosition position in the file to seek to\n * @param {Boolean} fromStart indicates if the search should start from the current buffer (false) \n * or from the first buffer (true)\n * @param {Boolean} markAsUsed indicates if the bytes in between the current position and the seek position \n * should be marked as used for garbage collection\n * @return {Boolean} true if the seek succeeded, false otherwise\n */\nMultiBufferStream.prototype.seek = function(filePosition, fromStart, markAsUsed) {\n\tvar index;\n\tindex = this.findPosition(fromStart, filePosition, markAsUsed);\n\tif (index !== -1) {\n\t\tthis.buffer = this.buffers[index];\n\t\tthis.bufferIndex = index;\n\t\tthis.position = filePosition - this.buffer.fileStart;\n\t\tLog.debug(\"MultiBufferStream\", \"Repositioning parser at buffer position: \"+this.position);\n\t\treturn true;\n\t} else {\n\t\tLog.debug(\"MultiBufferStream\", \"Position \"+filePosition+\" not found in buffered data\");\n\t\treturn false;\n\t}\n}\n\n/**\n * Returns the current position in the file\n * @return {Number} the position in the file\n */\nMultiBufferStream.prototype.getPosition = function() {\n\tif (this.bufferIndex === -1 || this.buffers[this.bufferIndex] === null) {\n\t\tthrow \"Error accessing position in the MultiBufferStream\";\n\t}\n\treturn this.buffers[this.bufferIndex].fileStart+this.position;\n}\n\n/**\n * Returns the length of the current buffer\n * @return {Number} the length of the current buffer\n */\nMultiBufferStream.prototype.getLength = function() {\n\treturn this.byteLength;\n}\n\nMultiBufferStream.prototype.getEndPosition = function() {\n\tif (this.bufferIndex === -1 || this.buffers[this.bufferIndex] === null) {\n\t\tthrow \"Error accessing position in the MultiBufferStream\";\n\t}\n\treturn this.buffers[this.bufferIndex].fileStart+this.byteLength;\n}\n\nif (typeof exports !== 'undefined') {\n\texports.MultiBufferStream = MultiBufferStream;\n}// file:src/descriptor.js\n/*\n * Copyright (c) 2012-2013. Telecom ParisTech/TSI/MM/GPAC Cyril Concolato\n * License: BSD-3-Clause (see LICENSE file)\n */\nvar MPEG4DescriptorParser = function () {\n\tvar ES_DescrTag \t\t\t= 0x03;\n\tvar DecoderConfigDescrTag \t= 0x04;\n\tvar DecSpecificInfoTag \t\t= 0x05;\n\tvar SLConfigDescrTag \t\t= 0x06;\n\n\tvar descTagToName = [];\n\tdescTagToName[ES_DescrTag] \t\t\t\t= \"ES_Descriptor\";\n\tdescTagToName[DecoderConfigDescrTag] \t= \"DecoderConfigDescriptor\";\n\tdescTagToName[DecSpecificInfoTag] \t\t= \"DecoderSpecificInfo\";\n\tdescTagToName[SLConfigDescrTag] \t\t= \"SLConfigDescriptor\";\n\n\tthis.getDescriptorName = function(tag) {\n\t\treturn descTagToName[tag];\n\t}\n\n\tvar that = this;\n\tvar classes = {};\n\n\tthis.parseOneDescriptor = function (stream) {\n\t\tvar hdrSize = 0;\n\t\tvar size = 0;\n\t\tvar tag;\n\t\tvar desc;\n\t\tvar byteRead;\n\t\ttag = stream.readUint8();\n\t\thdrSize++;\n\t\tbyteRead = stream.readUint8();\n\t\thdrSize++;\n\t\twhile (byteRead & 0x80) {\n\t\t\tsize = (size << 7) + (byteRead & 0x7F);\n\t\t\tbyteRead = stream.readUint8();\n\t\t\thdrSize++;\n\t\t}\n\t\tsize = (size << 7) + (byteRead & 0x7F);\n\t\tLog.debug(\"MPEG4DescriptorParser\", \"Found \"+(descTagToName[tag] || \"Descriptor \"+tag)+\", size \"+size+\" at position \"+stream.getPosition());\n\t\tif (descTagToName[tag]) {\n\t\t\tdesc = new classes[descTagToName[tag]](size);\n\t\t} else {\n\t\t\tdesc = new classes.Descriptor(size);\n\t\t}\n\t\tdesc.parse(stream);\n\t\treturn desc;\n\t}\n\n\tclasses.Descriptor = function(_tag, _size) {\n\t\tthis.tag = _tag;\n\t\tthis.size = _size;\n\t\tthis.descs = [];\n\t}\n\n\tclasses.Descriptor.prototype.parse = function (stream) {\n\t\tthis.data = stream.readUint8Array(this.size);\n\t}\n\n\tclasses.Descriptor.prototype.findDescriptor = function (tag) {\n\t\tfor (var i = 0; i < this.descs.length; i++) {\n\t\t\tif (this.descs[i].tag == tag) {\n\t\t\t\treturn this.descs[i];\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tclasses.Descriptor.prototype.parseRemainingDescriptors = function (stream) {\n\t\tvar start = stream.position;\n\t\twhile (stream.position < start+this.size) {\n\t\t\tvar desc = that.parseOneDescriptor(stream);\n\t\t\tthis.descs.push(desc);\n\t\t}\n\t}\n\n\tclasses.ES_Descriptor = function (size) {\n\t\tclasses.Descriptor.call(this, ES_DescrTag, size);\n\t}\n\n\tclasses.ES_Descriptor.prototype = new classes.Descriptor();\n\n\tclasses.ES_Descriptor.prototype.parse = function(stream) {\n\t\tthis.ES_ID = stream.readUint16();\n\t\tthis.flags = stream.readUint8();\n\t\tthis.size -= 3;\n\t\tif (this.flags & 0x80) {\n\t\t\tthis.dependsOn_ES_ID = stream.readUint16();\n\t\t\tthis.size -= 2;\n\t\t} else {\n\t\t\tthis.dependsOn_ES_ID = 0;\n\t\t}\n\t\tif (this.flags & 0x40) {\n\t\t\tvar l = stream.readUint8();\n\t\t\tthis.URL = stream.readString(l);\n\t\t\tthis.size -= l+1;\n\t\t} else {\n\t\t\tthis.URL = \"\";\n\t\t}\n\t\tif (this.flags & 0x20) {\n\t\t\tthis.OCR_ES_ID = stream.readUint16();\n\t\t\tthis.size -= 2;\n\t\t} else {\n\t\t\tthis.OCR_ES_ID = 0;\n\t\t}\n\t\tthis.parseRemainingDescriptors(stream);\n\t}\n\n\tclasses.ES_Descriptor.prototype.getOTI = function(stream) {\n\t\tvar dcd = this.findDescriptor(DecoderConfigDescrTag);\n\t\tif (dcd) {\n\t\t\treturn dcd.oti;\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\tclasses.ES_Descriptor.prototype.getAudioConfig = function(stream) {\n\t\tvar dcd = this.findDescriptor(DecoderConfigDescrTag);\n\t\tif (!dcd) return null;\n\t\tvar dsi = dcd.findDescriptor(DecSpecificInfoTag);\n\t\tif (dsi && dsi.data) {\n\t\t\tvar audioObjectType = (dsi.data[0]& 0xF8) >> 3;\n\t\t\tif (audioObjectType === 31 && dsi.data.length >= 2) {\n\t\t\t\taudioObjectType = 32 + ((dsi.data[0] & 0x7) << 3) + ((dsi.data[1] & 0xE0) >> 5);\n\t\t\t}\n\t\t\treturn audioObjectType;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tclasses.DecoderConfigDescriptor = function (size) {\n\t\tclasses.Descriptor.call(this, DecoderConfigDescrTag, size);\n\t}\n\tclasses.DecoderConfigDescriptor.prototype = new classes.Descriptor();\n\n\tclasses.DecoderConfigDescriptor.prototype.parse = function(stream) {\n\t\tthis.oti = stream.readUint8();\n\t\tthis.streamType = stream.readUint8();\n\t\tthis.upStream = ((this.streamType >> 1) & 1) !== 0;\n\t\tthis.streamType = this.streamType >>> 2;\n\t\tthis.bufferSize = stream.readUint24();\n\t\tthis.maxBitrate = stream.readUint32();\n\t\tthis.avgBitrate = stream.readUint32();\n\t\tthis.size -= 13;\n\t\tthis.parseRemainingDescriptors(stream);\n\t}\n\n\tclasses.DecoderSpecificInfo = function (size) {\n\t\tclasses.Descriptor.call(this, DecSpecificInfoTag, size);\n\t}\n\tclasses.DecoderSpecificInfo.prototype = new classes.Descriptor();\n\n\tclasses.SLConfigDescriptor = function (size) {\n\t\tclasses.Descriptor.call(this, SLConfigDescrTag, size);\n\t}\n\tclasses.SLConfigDescriptor.prototype = new classes.Descriptor();\n\n\treturn this;\n}\n\nif (typeof exports !== 'undefined') {\n\texports.MPEG4DescriptorParser = MPEG4DescriptorParser;\n}\n// file:src/box.js\n/*\n * Copyright (c) 2012-2013. Telecom ParisTech/TSI/MM/GPAC Cyril Concolato\n * License: BSD-3-Clause (see LICENSE file)\n */\nvar BoxParser = {\n\tERR_INVALID_DATA : -1,\n\tERR_NOT_ENOUGH_DATA : 0,\n\tOK : 1,\n\n\t// Boxes to be created with default parsing\n\tBASIC_BOXES: [\n\t\t{type: \"mdat\", name: \"MediaDataBox\"},\n\t\t{type: \"idat\", name: \"ItemDataBox\"},\n\t\t{type: \"free\", name: \"FreeSpaceBox\"},\n\t\t{type: \"skip\", name: \"FreeSpaceBox\"},\n\t\t{type: \"meco\", name: \"AdditionalMetadataContainerBox\"},\n\t\t{type: \"strk\", name: \"SubTrackBox\"}\n\t],\n\tFULL_BOXES: [\n\t\t{type: \"hmhd\", name: \"HintMediaHeaderBox\"},\n\t\t{type: \"nmhd\", name: \"NullMediaHeaderBox\"},\n\t\t{type: \"iods\", name: \"ObjectDescriptorBox\"},\n\t\t{type: \"xml \", name: \"XMLBox\"},\n\t\t{type: \"bxml\", name: \"BinaryXMLBox\"},\n\t\t{type: \"ipro\", name: \"ItemProtectionBox\"},\n\t\t{type: \"mere\", name: \"MetaboxRelationBox\"}\n\t],\n\tCONTAINER_BOXES: [\n\t\t[{type: \"moov\", name: \"CompressedMovieBox\"}, [\"trak\", \"pssh\"]],\n\t\t[{type: \"trak\", name: \"TrackBox\"}],\n\t\t[{type: \"edts\", name: \"EditBox\"}],\n\t\t[{type: \"mdia\", name: \"MediaBox\"}],\n\t\t[{type: \"minf\", name: \"MediaInformationBox\"}],\n\t\t[{type: \"dinf\", name: \"DataInformationBox\"}],\n\t\t[{type: \"stbl\", name: \"SampleTableBox\"}, [\"sgpd\", \"sbgp\"]],\n\t\t[{type: \"mvex\", name: \"MovieExtendsBox\"}, [\"trex\"]],\n\t\t[{type: \"moof\", name: \"CompressedMovieFragmentBox\"}, [\"traf\"]],\n\t\t[{type: \"traf\", name: \"TrackFragmentBox\"}, [\"trun\", \"sgpd\", \"sbgp\"]],\n\t\t[{type: \"vttc\", name: \"VTTCueBox\"}],\n\t\t[{type: \"tref\", name: \"TrackReferenceBox\"}],\n\t\t[{type: \"iref\", name: \"ItemReferenceBox\"}],\n\t\t[{type: \"mfra\", name: \"MovieFragmentRandomAccessBox\"}, [\"tfra\"]],\n\t\t[{type: \"meco\", name: \"AdditionalMetadataContainerBox\"}],\n\t\t[{type: \"hnti\", name: \"trackhintinformation\"}],\n\t\t[{type: \"hinf\", name: \"hintstatisticsbox\"}],\n\t\t[{type: \"strk\", name: \"SubTrackBox\"}],\n\t\t[{type: \"strd\", name: \"SubTrackDefinitionBox\"}],\n\t\t[{type: \"sinf\", name: \"ProtectionSchemeInfoBox\"}],\n\t\t[{type: \"rinf\", name: \"RestrictedSchemeInfoBox\"}],\n\t\t[{type: \"schi\", name: \"SchemeInformationBox\"}],\n\t\t[{type: \"trgr\", name: \"TrackGroupBox\"}],\n\t\t[{type: \"udta\", name: \"UserDataBox\"}, [\"kind\"]],\n\t\t[{type: \"iprp\", name: \"ItemPropertiesBox\"}, [\"ipma\"]],\n\t\t[{type: \"ipco\", name: \"ItemPropertyContainerBox\"}],\n\t\t[{type: \"grpl\", name: \"GroupsListBox\"}],\n\t\t[{type: \"j2kH\", name: \"J2KHeaderInfoBox\"}],\n\t\t[{type: \"etyp\", name: \"ExtendedTypeBox\"}, [\"tyco\"]]\n\t],\n\t// Boxes effectively created\n\tboxCodes : [],\n\tfullBoxCodes : [],\n\tcontainerBoxCodes : [],\n\tsampleEntryCodes : {},\n\tsampleGroupEntryCodes: [],\n\ttrackGroupTypes: [],\n\tUUIDBoxes: {},\n\tUUIDs: [],\n\tinitialize: function() {\n\t\tBoxParser.FullBox.prototype = new BoxParser.Box();\n\t\tBoxParser.ContainerBox.prototype = new BoxParser.Box();\n\t\tBoxParser.SampleEntry.prototype = new BoxParser.Box();\n\t\tBoxParser.TrackGroupTypeBox.prototype = new BoxParser.FullBox();\n\n\t\t/* creating constructors for simple boxes */\n\t\tBoxParser.BASIC_BOXES.forEach(function(box) {\n\t\t\tBoxParser.createBoxCtor(box.type, box.name)\n\t\t});\n\t\tBoxParser.FULL_BOXES.forEach(function(box) {\n\t\t\tBoxParser.createFullBoxCtor(box.type, box.name);\n\t\t});\n\t\tBoxParser.CONTAINER_BOXES.forEach(function(boxes) {\n\t\t\tBoxParser.createContainerBoxCtor(boxes[0].type, boxes[0].name, null, boxes[1]);\n\t\t});\n\t},\n\tBox: function(_type, _size, _name, _uuid) {\n\t\tthis.type = _type;\n\t\tthis.box_name = _name;\n\t\tthis.size = _size;\n\t\tthis.uuid = _uuid;\n\t},\n\tFullBox: function(type, size, name, uuid) {\n\t\tBoxParser.Box.call(this, type, size, name, uuid);\n\t\tthis.flags = 0;\n\t\tthis.version = 0;\n\t},\n\tContainerBox: function(type, size, name, uuid) {\n\t\tBoxParser.Box.call(this, type, size, name, uuid);\n\t\tthis.boxes = [];\n\t},\n\tSampleEntry: function(type, size, hdr_size, start) {\n\t\tBoxParser.ContainerBox.call(this, type, size);\n\t\tthis.hdr_size = hdr_size;\n\t\tthis.start = start;\n\t},\n\tSampleGroupEntry: function(type) {\n\t\tthis.grouping_type = type;\n\t},\n\tTrackGroupTypeBox: function(type, size) {\n\t\tBoxParser.FullBox.call(this, type, size);\n\t},\n\tcreateBoxCtor: function(type, name, parseMethod){\n\t\tBoxParser.boxCodes.push(type);\n\t\tBoxParser[type+\"Box\"] = function(size) {\n\t\t\tBoxParser.Box.call(this, type, size, name);\n\t\t}\n\t\tBoxParser[type+\"Box\"].prototype = new BoxParser.Box();\n\t\tif (parseMethod) BoxParser[type+\"Box\"].prototype.parse = parseMethod;\n\t},\n\tcreateFullBoxCtor: function(type, name, parseMethod) {\n\t\t//BoxParser.fullBoxCodes.push(type);\n\t\tBoxParser[type+\"Box\"] = function(size) {\n\t\t\tBoxParser.FullBox.call(this, type, size, name);\n\t\t}\n\t\tBoxParser[type+\"Box\"].prototype = new BoxParser.FullBox();\n\t\tBoxParser[type+\"Box\"].prototype.parse = function(stream) {\n\t\t\tthis.parseFullHeader(stream);\n\t\t\tif (parseMethod) {\n\t\t\t\tparseMethod.call(this, stream);\n\t\t\t}\n\t\t};\n\t},\n\taddSubBoxArrays: function(subBoxNames) {\n\t\tif (subBoxNames) {\n\t\t\tthis.subBoxNames = subBoxNames;\n\t\t\tvar nbSubBoxes = subBoxNames.length;\n\t\t\tfor (var k = 0; k<nbSubBoxes; k++) {\n\t\t\t\tthis[subBoxNames[k]+\"s\"] = [];\n\t\t\t}\n\t\t}\n\t},\n\tcreateContainerBoxCtor: function(type, name, parseMethod, subBoxNames) {\n\t\t//BoxParser.containerBoxCodes.push(type);\n\t\tBoxParser[type+\"Box\"] = function(size) {\n\t\t\tBoxParser.ContainerBox.call(this, type, size, name);\n\t\t\tBoxParser.addSubBoxArrays.call(this, subBoxNames);\n\t\t}\n\t\tBoxParser[type+\"Box\"].prototype = new BoxParser.ContainerBox();\n\t\tif (parseMethod) BoxParser[type+\"Box\"].prototype.parse = parseMethod;\n\t},\n\tcreateMediaSampleEntryCtor: function(mediaType, parseMethod, subBoxNames) {\n\t\tBoxParser.sampleEntryCodes[mediaType] = [];\n\t\tBoxParser[mediaType+\"SampleEntry\"] = function(type, size) {\n\t\t\tBoxParser.SampleEntry.call(this, type, size);\n\t\t\tBoxParser.addSubBoxArrays.call(this, subBoxNames);\n\t\t};\n\t\tBoxParser[mediaType+\"SampleEntry\"].prototype = new BoxParser.SampleEntry();\n\t\tif (parseMethod) BoxParser[mediaType+\"SampleEntry\"].prototype .parse = parseMethod;\n\t},\n\tcreateSampleEntryCtor: function(mediaType, type, parseMethod, subBoxNames) {\n\t\tBoxParser.sampleEntryCodes[mediaType].push(type);\n\t\tBoxParser[type+\"SampleEntry\"] = function(size) {\n\t\t\tBoxParser[mediaType+\"SampleEntry\"].call(this, type, size);\n\t\t\tBoxParser.addSubBoxArrays.call(this, subBoxNames);\n\t\t};\n\t\tBoxParser[type+\"SampleEntry\"].prototype = new BoxParser[mediaType+\"SampleEntry\"]();\n\t\tif (parseMethod) BoxParser[type+\"SampleEntry\"].prototype.parse = parseMethod;\n\t},\n\tcreateEncryptedSampleEntryCtor: function(mediaType, type, parseMethod) {\n\t\tBoxParser.createSampleEntryCtor.call(this, mediaType, type, parseMethod, [\"sinf\"]);\n\t},\n\tcreateSampleGroupCtor: function(type, parseMethod) {\n\t\t//BoxParser.sampleGroupEntryCodes.push(type);\n\t\tBoxParser[type+\"SampleGroupEntry\"] = function(size) {\n\t\t\tBoxParser.SampleGroupEntry.call(this, type, size);\n\t\t}\n\t\tBoxParser[type+\"SampleGroupEntry\"].prototype = new BoxParser.SampleGroupEntry();\n\t\tif (parseMethod) BoxParser[type+\"SampleGroupEntry\"].prototype.parse = parseMethod;\n\t},\n\tcreateTrackGroupCtor: function(type, parseMethod) {\n\t\t//BoxParser.trackGroupTypes.push(type);\n\t\tBoxParser[type+\"TrackGroupTypeBox\"] = function(size) {\n\t\t\tBoxParser.TrackGroupTypeBox.call(this, type, size);\n\t\t}\n\t\tBoxParser[type+\"TrackGroupTypeBox\"].prototype = new BoxParser.TrackGroupTypeBox();\n\t\tif (parseMethod) BoxParser[type+\"TrackGroupTypeBox\"].prototype.parse = parseMethod;\n\t},\n\tcreateUUIDBox: function(uuid, name, isFullBox, isContainerBox, parseMethod) {\n\t\tBoxParser.UUIDs.push(uuid);\n\t\tBoxParser.UUIDBoxes[uuid] = function(size) {\n\t\t\tif (isFullBox) {\n\t\t\t\tBoxParser.FullBox.call(this, \"uuid\", size, name, uuid);\n\t\t\t} else {\n\t\t\t\tif (isContainerBox) {\n\t\t\t\t\tBoxParser.ContainerBox.call(this, \"uuid\", size, name, uuid);\n\t\t\t\t} else {\n\t\t\t\t\tBoxParser.Box.call(this, \"uuid\", size, name, uuid);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tBoxParser.UUIDBoxes[uuid].prototype = (isFullBox ? new BoxParser.FullBox() : (isContainerBox ? new BoxParser.ContainerBox() : new BoxParser.Box()));\n\t\tif (parseMethod) {\n\t\t\tif (isFullBox) {\n\t\t\t\tBoxParser.UUIDBoxes[uuid].prototype.parse = function(stream) {\n\t\t\t\t\tthis.parseFullHeader(stream);\n\t\t\t\t\tif (parseMethod) {\n\t\t\t\t\t\tparseMethod.call(this, stream);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tBoxParser.UUIDBoxes[uuid].prototype.parse = parseMethod;\n\t\t\t}\n\t\t}\n\t}\n}\n\nBoxParser.initialize();\n\nBoxParser.TKHD_FLAG_ENABLED = 0x000001;\nBoxParser.TKHD_FLAG_IN_MOVIE = 0x000002;\nBoxParser.TKHD_FLAG_IN_PREVIEW = 0x000004;\n\nBoxParser.TFHD_FLAG_BASE_DATA_OFFSET\t= 0x01;\nBoxParser.TFHD_FLAG_SAMPLE_DESC\t\t\t= 0x02;\nBoxParser.TFHD_FLAG_SAMPLE_DUR\t\t\t= 0x08;\nBoxParser.TFHD_FLAG_SAMPLE_SIZE\t\t\t= 0x10;\nBoxParser.TFHD_FLAG_SAMPLE_FLAGS\t\t= 0x20;\nBoxParser.TFHD_FLAG_DUR_EMPTY\t\t\t= 0x10000;\nBoxParser.TFHD_FLAG_DEFAULT_BASE_IS_MOOF= 0x20000;\n\nBoxParser.TRUN_FLAGS_DATA_OFFSET= 0x01;\nBoxParser.TRUN_FLAGS_FIRST_FLAG\t= 0x04;\nBoxParser.TRUN_FLAGS_DURATION\t= 0x100;\nBoxParser.TRUN_FLAGS_SIZE\t\t= 0x200;\nBoxParser.TRUN_FLAGS_FLAGS\t\t= 0x400;\nBoxParser.TRUN_FLAGS_CTS_OFFSET\t= 0x800;\n\nBoxParser.Box.prototype.add = function(name) {\n\treturn this.addBox(new BoxParser[name+\"Box\"]());\n}\n\nBoxParser.Box.prototype.addBox = function(box) {\n\tthis.boxes.push(box);\n\tif (this[box.type+\"s\"]) {\n\t\tthis[box.type+\"s\"].push(box);\n\t} else {\n\t\tthis[box.type] = box;\n\t}\n\treturn box;\n}\n\nBoxParser.Box.prototype.set = function(prop, value) {\n\tthis[prop] = value;\n\treturn this;\n}\n\nBoxParser.Box.prototype.addEntry = function(value, _prop) {\n\tvar prop = _prop || \"entries\";\n\tif (!this[prop]) {\n\t\tthis[prop] = [];\n\t}\n\tthis[prop].push(value);\n\treturn this;\n}\n\nif (typeof exports !== \"undefined\") {\n\texports.BoxParser = BoxParser;\n}\n// file:src/box-parse.js\n/* \n * Copyright (c) Telecom ParisTech/TSI/MM/GPAC Cyril Concolato\n * License: BSD-3-Clause (see LICENSE file)\n */\nBoxParser.parseUUID = function(stream) {\n\treturn BoxParser.parseHex16(stream);\n}\n\nBoxParser.parseHex16 = function(stream) {\n\tvar hex16 = \"\"\n\tfor (var i = 0; i <16; i++) {\n\t\tvar hex = stream.readUint8().toString(16);\n\t\thex16 += (hex.length === 1 ? \"0\"+hex : hex);\n\t}\n\treturn hex16;\n}\n\nBoxParser.parseOneBox = function(stream, headerOnly, parentSize) {\n\tvar box;\n\tvar start = stream.getPosition();\n\tvar hdr_size = 0;\n\tvar diff;\n\tvar uuid;\n\tif (stream.getEndPosition() - start < 8) {\n\t\tLog.debug(\"BoxParser\", \"Not enough data in stream to parse the type and size of the box\");\n\t\treturn { code: BoxParser.ERR_NOT_ENOUGH_DATA };\n\t}\n\tif (parentSize && parentSize < 8) {\n\t\tLog.debug(\"BoxParser\", \"Not enough bytes left in the parent box to parse a new box\");\n\t\treturn { code: BoxParser.ERR_NOT_ENOUGH_DATA };\n\t}\n\tvar size = stream.readUint32();\n\tvar type = stream.readString(4);\n\tvar box_type = type;\n\tLog.debug(\"BoxParser\", \"Found box of type '\"+type+\"' and size \"+size+\" at position \"+start);\n\thdr_size = 8;\n\tif (type == \"uuid\") {\n\t\tif ((stream.getEndPosition() - stream.getPosition() < 16) || (parentSize -hdr_size < 16)) {\n\t\t\tstream.seek(start);\n\t\t\tLog.debug(\"BoxParser\", \"Not enough bytes left in the parent box to parse a UUID box\");\n\t\t\treturn { code: BoxParser.ERR_NOT_ENOUGH_DATA };\n\t\t}\n\t\tuuid = BoxParser.parseUUID(stream);\n\t\thdr_size += 16;\n\t\tbox_type = uuid;\n\t}\n\tif (size == 1) {\n\t\tif ((stream.getEndPosition() - stream.getPosition() < 8) || (parentSize && (parentSize - hdr_size) < 8)) {\n\t\t\tstream.seek(start);\n\t\t\tLog.warn(\"BoxParser\", \"Not enough data in stream to parse the extended size of the \\\"\"+type+\"\\\" box\");\n\t\t\treturn { code: BoxParser.ERR_NOT_ENOUGH_DATA };\n\t\t}\n\t\tsize = stream.readUint64();\n\t\thdr_size += 8;\n\t} else if (size === 0) {\n\t\t/* box extends till the end of file or invalid file */\n\t\tif (parentSize) {\n\t\t\tsize = parentSize;\n\t\t} else {\n\t\t\t/* box extends till the end of file */\n\t\t\tif (type !== \"mdat\") {\n\t\t\t\tLog.error(\"BoxParser\", \"Unlimited box size not supported for type: '\"+type+\"'\");\n\t\t\t\tbox = new BoxParser.Box(type, size);\n\t\t\t\treturn { code: BoxParser.OK, box: box, size: box.size };\n\t\t\t}\n\t\t}\n\t}\n\tif (size !== 0 && size < hdr_size) {\n\t\tLog.error(\"BoxParser\", \"Box of type \"+type+\" has an invalid size \"+size+\" (too small to be a box)\");\n\t\treturn { code: BoxParser.ERR_NOT_ENOUGH_DATA, type: type, size: size, hdr_size: hdr_size, start: start };\n\t}\n\tif (size !== 0 && parentSize && size > parentSize) {\n\t\tLog.error(\"BoxParser\", \"Box of type '\"+type+\"' has a size \"+size+\" greater than its container size \"+parentSize);\n\t\treturn { code: BoxParser.ERR_NOT_ENOUGH_DATA, type: type, size: size, hdr_size: hdr_size, start: start };\n\t}\n\tif (size !== 0 && start + size > stream.getEndPosition()) {\n\t\tstream.seek(start);\n\t\tLog.info(\"BoxParser\", \"Not enough data in stream to parse the entire '\"+type+\"' box\");\n\t\treturn { code: BoxParser.ERR_NOT_ENOUGH_DATA, type: type, size: size, hdr_size: hdr_size, start: start };\n\t}\n\tif (headerOnly) {\n\t\treturn { code: BoxParser.OK, type: type, size: size, hdr_size: hdr_size, start: start };\n\t} else {\n\t\tif (BoxParser[type+\"Box\"]) {\n\t\t\tbox = new BoxParser[type+\"Box\"](size);\n\t\t} else {\n\t\t\tif (type !== \"uuid\") {\n\t\t\t\tLog.warn(\"BoxParser\", \"Unknown box type: '\"+type+\"'\");\n\t\t\t\tbox = new BoxParser.Box(type, size);\n\t\t\t\tbox.has_unparsed_data = true;\n\t\t\t} else {\n\t\t\t\tif (BoxParser.UUIDBoxes[uuid]) {\n\t\t\t\t\tbox = new BoxParser.UUIDBoxes[uuid](size);\n\t\t\t\t} else {\n\t\t\t\t\tLog.warn(\"BoxParser\", \"Unknown uuid type: '\"+uuid+\"'\");\n\t\t\t\t\tbox = new BoxParser.Box(type, size);\n\t\t\t\t\tbox.uuid = uuid;\n\t\t\t\t\tbox.has_unparsed_data = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tbox.hdr_size = hdr_size;\n\t/* recording the position of the box in the input stream */\n\tbox.start = start;\n\tif (box.write === BoxParser.Box.prototype.write && box.type !== \"mdat\") {\n\t\tLog.info(\"BoxParser\", \"'\"+box_type+\"' box writing not yet implemented, keeping unparsed data in memory for later write\");\n\t\tbox.parseDataAndRewind(stream);\n\t}\n\tbox.parse(stream);\n\tdiff = stream.getPosition() - (box.start+box.size);\n\tif (diff < 0) {\n\t\tLog.warn(\"BoxParser\", \"Parsing of box '\"+box_type+\"' did not read the entire indicated box data size (missing \"+(-diff)+\" bytes), seeking forward\");\n\t\tstream.seek(box.start+box.size);\n\t} else if (diff > 0) {\n\t\tLog.error(\"BoxParser\", \"Parsing of box '\"+box_type+\"' read \"+diff+\" more bytes than the indicated box data size, seeking backwards\");\n\t\tif (box.size !== 0) stream.seek(box.start+box.size);\n\t}\n\treturn { code: BoxParser.OK, box: box, size: box.size };\n}\n\nBoxParser.Box.prototype.parse = function(stream) {\n\tif (this.type != \"mdat\") {\n\t\tthis.data = stream.readUint8Array(this.size-this.hdr_size);\n\t} else {\n\t\tif (this.size === 0) {\n\t\t\tstream.seek(stream.getEndPosition());\n\t\t} else {\n\t\t\tstream.seek(this.start+this.size);\n\t\t}\n\t}\n}\n\n/* Used to parse a box without consuming its data, to allow detailled parsing\n Useful for boxes for which a write method is not yet implemented */\nBoxParser.Box.prototype.parseDataAndRewind = function(stream) {\n\tthis.data = stream.readUint8Array(this.size-this.hdr_size);\n\t// rewinding\n\tstream.position -= this.size-this.hdr_size;\n}\n\nBoxParser.FullBox.prototype.parseDataAndRewind = function(stream) {\n\tthis.parseFullHeader(stream);\n\tthis.data = stream.readUint8Array(this.size-this.hdr_size);\n\t// restore the header size as if the full header had not been parsed\n\tthis.hdr_size -= 4;\n\t// rewinding\n\tstream.position -= this.size-this.hdr_size;\n}\n\nBoxParser.FullBox.prototype.parseFullHeader = function (stream) {\n\tthis.version = stream.readUint8();\n\tthis.flags = stream.readUint24();\n\tthis.hdr_size += 4;\n}\n\nBoxParser.FullBox.prototype.parse = function (stream) {\n\tthis.parseFullHeader(stream);\n\tthis.data = stream.readUint8Array(this.size-this.hdr_size);\n}\n\nBoxParser.ContainerBox.prototype.parse = function(stream) {\n\tvar ret;\n\tvar box;\n\twhile (stream.getPosition() < this.start+this.size) {\n\t\tret = BoxParser.parseOneBox(stream, false, this.size - (stream.getPosition() - this.start));\n\t\tif (ret.code === BoxParser.OK) {\n\t\t\tbox = ret.box;\n\t\t\t/* store the box in the 'boxes' array to preserve box order (for offset) but also store box in a property for more direct access */\n\t\t\tthis.boxes.push(box);\n\t\t\tif (this.subBoxNames && this.subBoxNames.indexOf(box.type) != -1) {\n\t\t\t\tthis[this.subBoxNames[this.subBoxNames.indexOf(box.type)]+\"s\"].push(box);\n\t\t\t} else {\n\t\t\t\tvar box_type = box.type !== \"uuid\" ? box.type : box.uuid;\n\t\t\t\tif (this[box_type]) {\n\t\t\t\t\tLog.warn(\"Box of type \"+box_type+\" already stored in field of this type\");\n\t\t\t\t} else {\n\t\t\t\t\tthis[box_type] = box;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\t}\n}\n\nBoxParser.Box.prototype.parseLanguage = function(stream) {\n\tthis.language = stream.readUint16();\n\tvar chars = [];\n\tchars[0] = (this.language>>10)&0x1F;\n\tchars[1] = (this.language>>5)&0x1F;\n\tchars[2] = (this.language)&0x1F;\n\tthis.languageString = String.fromCharCode(chars[0]+0x60, chars[1]+0x60, chars[2]+0x60);\n}\n\n// file:src/parsing/sampleentries/sampleentry.js\nBoxParser.SAMPLE_ENTRY_TYPE_VISUAL \t\t= \"Visual\";\nBoxParser.SAMPLE_ENTRY_TYPE_AUDIO \t\t= \"Audio\";\nBoxParser.SAMPLE_ENTRY_TYPE_HINT \t\t= \"Hint\";\nBoxParser.SAMPLE_ENTRY_TYPE_METADATA \t= \"Metadata\";\nBoxParser.SAMPLE_ENTRY_TYPE_SUBTITLE \t= \"Subtitle\";\nBoxParser.SAMPLE_ENTRY_TYPE_SYSTEM \t\t= \"System\";\nBoxParser.SAMPLE_ENTRY_TYPE_TEXT \t\t= \"Text\";\n\nBoxParser.SampleEntry.prototype.parseHeader = function(stream) {\n\tstream.readUint8Array(6);\n\tthis.data_reference_index = stream.readUint16();\n\tthis.hdr_size += 8;\n}\n\nBoxParser.SampleEntry.prototype.parse = function(stream) {\n\tthis.parseHeader(stream);\n\tthis.data = stream.readUint8Array(this.size - this.hdr_size);\n}\n\nBoxParser.SampleEntry.prototype.parseDataAndRewind = function(stream) {\n\tthis.parseHeader(stream);\n\tthis.data = stream.readUint8Array(this.size - this.hdr_size);\n\t// restore the header size as if the sample entry header had not been parsed\n\tthis.hdr_size -= 8;\n\t// rewinding\n\tstream.position -= this.size-this.hdr_size;\n}\n\nBoxParser.SampleEntry.prototype.parseFooter = function(stream) {\n\tBoxParser.ContainerBox.prototype.parse.call(this, stream);\n}\n\n// Base SampleEntry types with default parsing\nBoxParser.createMediaSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_HINT);\nBoxParser.createMediaSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_METADATA);\nBoxParser.createMediaSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_SUBTITLE);\nBoxParser.createMediaSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_SYSTEM);\nBoxParser.createMediaSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_TEXT);\n\n//Base SampleEntry types for Audio and Video with specific parsing\nBoxParser.createMediaSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, function(stream) {\n\tvar compressorname_length;\n\tthis.parseHeader(stream);\n\tstream.readUint16();\n\tstream.readUint16();\n\tstream.readUint32Array(3);\n\tthis.width = stream.readUint16();\n\tthis.height = stream.readUint16();\n\tthis.horizresolution = stream.readUint32();\n\tthis.vertresolution = stream.readUint32();\n\tstream.readUint32();\n\tthis.frame_count = stream.readUint16();\n\tcompressorname_length = Math.min(31, stream.readUint8());\n\tthis.compressorname = stream.readString(compressorname_length);\n\tif (compressorname_length < 31) {\n\t\tstream.readString(31 - compressorname_length);\n\t}\n\tthis.depth = stream.readUint16();\n\tstream.readUint16();\n\tthis.parseFooter(stream);\n});\n\nBoxParser.createMediaSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO, function(stream) {\n\tthis.parseHeader(stream);\n\tstream.readUint32Array(2);\n\tthis.channel_count = stream.readUint16();\n\tthis.samplesize = stream.readUint16();\n\tstream.readUint16();\n\tstream.readUint16();\n\tthis.samplerate = (stream.readUint32()/(1<<16));\n\tthis.parseFooter(stream);\n});\n\n// Sample entries inheriting from Audio and Video\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"avc1\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"avc2\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"avc3\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"avc4\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"av01\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"dav1\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"hvc1\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"hev1\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"hvt1\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"lhe1\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"dvh1\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"dvhe\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"vvc1\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"vvi1\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"vvs1\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"vvcN\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"vp08\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"vp09\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"avs3\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"j2ki\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"mjp2\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"mjpg\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL,\t\"uncv\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO, \t\"mp4a\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO, \t\"ac-3\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO, \t\"ac-4\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO, \t\"ec-3\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO, \t\"Opus\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO, \t\"mha1\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO, \t\"mha2\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO, \t\"mhm1\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO, \t\"mhm2\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO, \t\"fLaC\");\n\n// Encrypted sample entries\nBoxParser.createEncryptedSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \t\"encv\");\nBoxParser.createEncryptedSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO, \t\"enca\");\nBoxParser.createEncryptedSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_SUBTITLE, \t\"encu\");\nBoxParser.createEncryptedSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_SYSTEM, \t\"encs\");\nBoxParser.createEncryptedSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_TEXT, \t\t\"enct\");\nBoxParser.createEncryptedSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_METADATA, \t\"encm\");\n// file:src/parsing/a1lx.js\nBoxParser.createBoxCtor(\"a1lx\", \"AV1LayeredImageIndexingProperty\", function(stream) {\n\tvar large_size = stream.readUint8() & 1;\n\tvar FieldLength = ((large_size & 1) + 1) * 16;\n\tthis.layer_size = [];\n\tfor (var i = 0; i < 3; i++) {\n\t\tif (FieldLength == 16) {\n\t\t\tthis.layer_size[i] = stream.readUint16();\n\t\t} else {\n\t\t\tthis.layer_size[i] = stream.readUint32();\n\t\t}\n\t}\n});// file:src/parsing/a1op.js\nBoxParser.createBoxCtor(\"a1op\", \"OperatingPointSelectorProperty\", function(stream) {\n\tthis.op_index = stream.readUint8();\n});// file:src/parsing/auxC.js\nBoxParser.createFullBoxCtor(\"auxC\", \"AuxiliaryTypeProperty\", function(stream) {\n\tthis.aux_type = stream.readCString();\n\tvar aux_subtype_length = this.size - this.hdr_size - (this.aux_type.length + 1);\n\tthis.aux_subtype = stream.readUint8Array(aux_subtype_length);\n});// file:src/parsing/av1C.js\nBoxParser.createBoxCtor(\"av1C\", \"AV1CodecConfigurationBox\", function(stream) {\n\tvar i;\n\tvar toparse;\n\tvar tmp = stream.readUint8();\n\tif ((tmp >> 7 & 0x1) !== 1) {\n\t\tLog.error(\"av1C marker problem\");\n\t\treturn;\n\t}\n\tthis.version = tmp & 0x7F;\n\tif (this.version !== 1) {\n\t\tLog.error(\"av1C version \"+this.version+\" not supported\");\n\t\treturn;\n\t}\n\ttmp = stream.readUint8();\n\tthis.seq_profile = (tmp >> 5) & 0x7;\n\tthis.seq_level_idx_0 = tmp & 0x1F;\n\ttmp = stream.readUint8();\n\tthis.seq_tier_0 = (tmp >> 7) & 0x1;\n\tthis.high_bitdepth = (tmp >> 6) & 0x1;\n\tthis.twelve_bit = (tmp >> 5) & 0x1;\n\tthis.monochrome = (tmp >> 4) & 0x1;\n\tthis.chroma_subsampling_x = (tmp >> 3) & 0x1;\n\tthis.chroma_subsampling_y = (tmp >> 2) & 0x1;\n\tthis.chroma_sample_position = (tmp & 0x3);\n\ttmp = stream.readUint8();\n\tthis.reserved_1 = (tmp >> 5) & 0x7;\n\tif (this.reserved_1 !== 0) {\n\t\tLog.error(\"av1C reserved_1 parsing problem\");\n\t\treturn;\n\t}\n\tthis.initial_presentation_delay_present = (tmp >> 4) & 0x1;\n\tif (this.initial_presentation_delay_present === 1) {\n\t\tthis.initial_presentation_delay_minus_one = (tmp & 0xF);\n\t} else {\n\t\tthis.reserved_2 = (tmp & 0xF);\n\t\tif (this.reserved_2 !== 0) {\n\t\t\tLog.error(\"av1C reserved_2 parsing problem\");\n\t\t\treturn;\n\t\t}\n\t}\n\n\tvar configOBUs_length = this.size - this.hdr_size - 4;\n\tthis.configOBUs = stream.readUint8Array(configOBUs_length);\n});\n\n// file:src/parsing/avcC.js\nfunction printPS(ps) {\n\tvar str = \"<table class='inner-table'>\";\n\tstr += \"<thead><tr><th>length</th><th>nalu_data</th></tr></thead>\";\n\tstr += \"<tbody>\";\n\n\tfor (var i=0; i < ps.length; i++) {\n\t\tvar nalu = ps[i];\n\t\tstr += \"<tr>\";\n\t\tstr += \"<td>\"+nalu.length+\"</td>\";\n\t\tstr += \"<td>\";\n\t\tstr += nalu.nalu.reduce(function(str, byte) {\n\t\t\treturn str + byte.toString(16).padStart(2, \"0\");\n\t\t}, \"0x\");\n\t\tstr += \"</td></tr>\";\n\t}\n\tstr += \"</tbody></table>\";\n\treturn str;\n}\n\nBoxParser.createBoxCtor(\"avcC\", \"AVCConfigurationBox\", function(stream) {\n\tvar i;\n\tvar toparse;\n\tthis.configurationVersion = stream.readUint8();\n\tthis.AVCProfileIndication = stream.readUint8();\n\tthis.profile_compatibility = stream.readUint8();\n\tthis.AVCLevelIndication = stream.readUint8();\n\tthis.lengthSizeMinusOne = (stream.readUint8() & 0x3);\n\tthis.nb_SPS_nalus = (stream.readUint8() & 0x1F);\n\ttoparse = this.size - this.hdr_size - 6;\n\tthis.SPS = [];\n\tthis.SPS.toString = function () {\n\t\treturn printPS(this);\n\t}\n\tfor (i = 0; i < this.nb_SPS_nalus; i++) {\n\t\tthis.SPS[i] = {};\n\t\tthis.SPS[i].length = stream.readUint16();\n\t\tthis.SPS[i].nalu = stream.readUint8Array(this.SPS[i].length);\n\t\ttoparse -= 2+this.SPS[i].length;\n\t}\n\tthis.nb_PPS_nalus = stream.readUint8();\n\ttoparse--;\n\tthis.PPS = [];\n\tthis.PPS.toString = function () {\n\t\treturn printPS(this);\n\t}\n\tfor (i = 0; i < this.nb_PPS_nalus; i++) {\n\t\tthis.PPS[i] = {};\n\t\tthis.PPS[i].length = stream.readUint16();\n\t\tthis.PPS[i].nalu = stream.readUint8Array(this.PPS[i].length);\n\t\ttoparse -= 2+this.PPS[i].length;\n\t}\n\tif (toparse>0) {\n\t\tthis.ext = stream.readUint8Array(toparse);\n\t}\n});\n\n// file:src/parsing/btrt.js\nBoxParser.createBoxCtor(\"btrt\", \"BitRateBox\", function(stream) {\n\tthis.bufferSizeDB = stream.readUint32();\n\tthis.maxBitrate = stream.readUint32();\n\tthis.avgBitrate = stream.readUint32();\n});\n\n// file:src/parsing/ccst.js\nBoxParser.createFullBoxCtor(\"ccst\", \"CodingConstraintsBox\", function(stream) {\n\tvar flags = stream.readUint8();\n\tthis.all_ref_pics_intra = ((flags & 0x80) == 0x80);\n\tthis.intra_pred_used = ((flags & 0x40) == 0x40);\n\tthis.max_ref_per_pic = ((flags & 0x3f) >> 2);\n\tstream.readUint24();\n});\n\n// file:src/parsing/cdef.js\nBoxParser.createBoxCtor(\"cdef\", \"ComponentDefinitionBox\", function(stream) {\n var i;\n this.channel_count = stream.readUint16();\n this.channel_indexes = [];\n this.channel_types = [];\n this.channel_associations = [];\n for (i = 0; i < this.channel_count; i++) {\n this.channel_indexes.push(stream.readUint16());\n this.channel_types.push(stream.readUint16());\n this.channel_associations.push(stream.readUint16());\n }\n});\n\n// file:src/parsing/clap.js\nBoxParser.createBoxCtor(\"clap\", \"CleanApertureBox\", function(stream) {\n\tthis.cleanApertureWidthN = stream.readUint32();\n\tthis.cleanApertureWidthD = stream.readUint32();\n\tthis.cleanApertureHeightN = stream.readUint32();\n\tthis.cleanApertureHeightD = stream.readUint32();\n\tthis.horizOffN = stream.readUint32();\n\tthis.horizOffD = stream.readUint32();\n\tthis.vertOffN = stream.readUint32();\n\tthis.vertOffD = stream.readUint32();\n});// file:src/parsing/clli.js\nBoxParser.createBoxCtor(\"clli\", \"ContentLightLevelBox\", function(stream) {\n\tthis.max_content_light_level = stream.readUint16();\n this.max_pic_average_light_level = stream.readUint16();\n});\n\n// file:src/parsing/cmex.js\nBoxParser.createFullBoxCtor(\"cmex\", \"CameraExtrinsicMatrixProperty\", function(stream) {\n\tif (this.flags & 0x1) {\n\t\tthis.pos_x = stream.readInt32();\n\t}\n\tif (this.flags & 0x2) {\n\t\tthis.pos_y = stream.readInt32();\n\t}\n\tif (this.flags & 0x4) {\n\t\tthis.pos_z = stream.readInt32();\n\t}\n\tif (this.flags & 0x8) {\n\t\tif (this.version == 0) {\n\t\t\tif (this.flags & 0x10) {\n\t\t\t\tthis.quat_x = stream.readInt32();\n\t\t\t\tthis.quat_y = stream.readInt32();\n\t\t\t\tthis.quat_z = stream.readInt32();\n\t\t\t} else {\n\t\t\t\tthis.quat_x = stream.readInt16();\n\t\t\t\tthis.quat_y = stream.readInt16();\n\t\t\t\tthis.quat_z = stream.readInt16();\n\t\t\t}\n\t\t} else if (this.version == 1) {\n\t\t\t//ViewpointGlobalCoordinateSysRotationStruct rot;\n\t\t}\n\t}\n\tif (this.flags & 0x20) {\n\t\tthis.id = stream.readUint32();\n\t}\n});\n// file:src/parsing/cmin.js\nBoxParser.createFullBoxCtor(\"cmin\", \"CameraIntrinsicMatrixProperty\", function(stream) {\n\tthis.focal_length_x = stream.readInt32();\n\tthis.principal_point_x = stream.readInt32();\n\tthis.principal_point_y = stream.readInt32();\n\tif (this.flags & 0x1) {\n\t\tthis.focal_length_y = stream.readInt32();\n\t\tthis.skew_factor = stream.readInt32();\n\t}\n});// file:src/parsing/cmpd.js\nBoxParser.createBoxCtor(\"cmpd\", \"ComponentDefinitionBox\", function(stream) {\n\tthis.component_count = stream.readUint32();\n\tthis.component_types = [];\n\tthis.component_type_urls = [];\n\tfor (i = 0; i < this.component_count; i++) {\n\t\tvar component_type = stream.readUint16();\n\t\tthis.component_types.push(component_type);\n\t\tif (component_type >= 0x8000) {\n\t\t\tthis.component_type_urls.push(stream.readCString());\n\t\t}\n\t}\n});// file:src/parsing/co64.js\nBoxParser.createFullBoxCtor(\"co64\", \"ChunkLargeOffsetBox\", function(stream) {\n\tvar entry_count;\n\tvar i;\n\tentry_count = stream.readUint32();\n\tthis.chunk_offsets = [];\n\tif (this.version === 0) {\n\t\tfor(i=0; i<entry_count; i++) {\n\t\t\tthis.chunk_offsets.push(stream.readUint64());\n\t\t}\n\t}\n});\n\n// file:src/parsing/CoLL.js\nBoxParser.createFullBoxCtor(\"CoLL\", \"ContentLightLevelBox\", function(stream) {\n\tthis.maxCLL = stream.readUint16();\n this.maxFALL = stream.readUint16();\n});\n\n// file:src/parsing/colr.js\nBoxParser.createBoxCtor(\"colr\", \"ColourInformationBox\", function(stream) {\n\tthis.colour_type = stream.readString(4);\n\tif (this.colour_type === 'nclx') {\n\t\tthis.colour_primaries = stream.readUint16();\n\t\tthis.transfer_characteristics = stream.readUint16();\n\t\tthis.matrix_coefficients = stream.readUint16();\n\t\tvar tmp = stream.readUint8();\n\t\tthis.full_range_flag = tmp >> 7;\n\t} else if (this.colour_type === 'rICC') {\n\t\tthis.ICC_profile = stream.readUint8Array(this.size - 4);\n\t} else if (this.colour_type === 'prof') {\n\t\tthis.ICC_profile = stream.readUint8Array(this.size - 4);\n\t}\n});// file:src/parsing/cprt.js\nBoxParser.createFullBoxCtor(\"cprt\", \"CopyrightBox\", function (stream) {\n\tthis.parseLanguage(stream);\n\tthis.notice = stream.readCString();\n});\n\n// file:src/parsing/cslg.js\nBoxParser.createFullBoxCtor(\"cslg\", \"CompositionToDecodeBox\", function(stream) {\n\tvar entry_count;\n\tif (this.version === 0) {\n\t\tthis.compositionToDTSShift = stream.readInt32(); /* signed */\n\t\tthis.leastDecodeToDisplayDelta = stream.readInt32(); /* signed */\n\t\tthis.greatestDecodeToDisplayDelta = stream.readInt32(); /* signed */\n\t\tthis.compositionStartTime = stream.readInt32(); /* signed */\n\t\tthis.compositionEndTime = stream.readInt32(); /* signed */\n\t}\n});\n\n// file:src/parsing/ctts.js\nBoxParser.createFullBoxCtor(\"ctts\", \"CompositionOffsetBox\", function(stream) {\n\tvar entry_count;\n\tvar i;\n\tentry_count = stream.readUint32();\n\tthis.sample_counts = [];\n\tthis.sample_offsets = [];\n\tif (this.version === 0) {\n\t\tfor(i=0; i<entry_count; i++) {\n\t\t\tthis.sample_counts.push(stream.readUint32());\n\t\t\t/* some files are buggy and declare version=0 while using signed offsets.\n\t\t\t The likelyhood of using the most significant bit in a 32-bits time offset is very low,\n\t\t\t so using signed value here as well */\n\t\t\t var value = stream.readInt32();\n\t\t\t if (value < 0) {\n\t\t\t \t\tLog.warn(\"BoxParser\", \"ctts box uses negative values without using version 1\");\n\t\t\t }\n\t\t\tthis.sample_offsets.push(value);\n\t\t}\n\t} else if (this.version == 1) {\n\t\tfor(i=0; i<entry_count; i++) {\n\t\t\tthis.sample_counts.push(stream.readUint32());\n\t\t\tthis.sample_offsets.push(stream.readInt32()); /* signed */\n\t\t}\n\t}\n});\n\n// file:src/parsing/dac3.js\nBoxParser.createBoxCtor(\"dac3\", \"AC3SpecificBox\", function(stream) {\n\tvar tmp_byte1 = stream.readUint8();\n\tvar tmp_byte2 = stream.readUint8();\n\tvar tmp_byte3 = stream.readUint8();\n\tthis.fscod = tmp_byte1 >> 6;\n\tthis.bsid = ((tmp_byte1 >> 1) & 0x1F);\n\tthis.bsmod = ((tmp_byte1 & 0x1) << 2) | ((tmp_byte2 >> 6) & 0x3);\n\tthis.acmod = ((tmp_byte2 >> 3) & 0x7);\n\tthis.lfeon = ((tmp_byte2 >> 2) & 0x1);\n\tthis.bit_rate_code = (tmp_byte2 & 0x3) | ((tmp_byte3 >> 5) & 0x7);\n});\n\n// file:src/parsing/dec3.js\nBoxParser.createBoxCtor(\"dec3\", \"EC3SpecificBox\", function(stream) {\n\tvar tmp_16 = stream.readUint16();\n\tthis.data_rate = tmp_16 >> 3;\n\tthis.num_ind_sub = tmp_16 & 0x7;\n\tthis.ind_subs = [];\n\tfor (var i = 0; i < this.num_ind_sub+1; i++) {\n\t\tvar ind_sub = {};\n\t\tthis.ind_subs.push(ind_sub);\n\t\tvar tmp_byte1 = stream.readUint8();\n\t\tvar tmp_byte2 = stream.readUint8();\n\t\tvar tmp_byte3 = stream.readUint8();\n\t\tind_sub.fscod = tmp_byte1 >> 6;\n\t\tind_sub.bsid = ((tmp_byte1 >> 1) & 0x1F);\n\t\tind_sub.bsmod = ((tmp_byte1 & 0x1) << 4) | ((tmp_byte2 >> 4) & 0xF);\n\t\tind_sub.acmod = ((tmp_byte2 >> 1) & 0x7);\n\t\tind_sub.lfeon = (tmp_byte2 & 0x1);\n\t\tind_sub.num_dep_sub = ((tmp_byte3 >> 1) & 0xF);\n\t\tif (ind_sub.num_dep_sub > 0) {\n\t\t\tind_sub.chan_loc = ((tmp_byte3 & 0x1) << 8) | stream.readUint8();\n\t\t}\n\t}\n});\n\n// file:src/parsing/dfLa.js\nBoxParser.createFullBoxCtor(\"dfLa\", \"FLACSpecificBox\", function(stream) {\n var BLOCKTYPE_MASK = 0x7F;\n var LASTMETADATABLOCKFLAG_MASK = 0x80;\n\n var boxesFound = [];\n var knownBlockTypes = [\n \"STREAMINFO\",\n \"PADDING\",\n \"APPLICATION\",\n \"SEEKTABLE\",\n \"VORBIS_COMMENT\",\n \"CUESHEET\",\n \"PICTURE\",\n \"RESERVED\"\n ];\n\n // for (i=0; ; i++) { // to end of box\n do {\n var flagAndType = stream.readUint8();\n\n var type = Math.min(\n (flagAndType & BLOCKTYPE_MASK),\n (knownBlockTypes.length - 1)\n );\n\n // if this is a STREAMINFO block, read the true samplerate since this\n // can be different to the AudioSampleEntry samplerate.\n if (!(type)) {\n // read past all the other stuff\n stream.readUint8Array(13);\n\n // extract samplerate\n this.samplerate = (stream.readUint32() >> 12);\n\n // read to end of STREAMINFO\n stream.readUint8Array(20);\n } else {\n // not interested in other block types so just discard length bytes\n stream.readUint8Array(stream.readUint24());\n }\n\n boxesFound.push(knownBlockTypes[type]);\n\n if (!!(flagAndType & LASTMETADATABLOCKFLAG_MASK)) {\n break;\n }\n } while (true);\n\n this.numMetadataBlocks =\n boxesFound.length + \" (\" + boxesFound.join(\", \") + \")\";\n});\n// file:src/parsing/dimm.js\nBoxParser.createBoxCtor(\"dimm\", \"hintimmediateBytesSent\", function(stream) {\n\tthis.bytessent = stream.readUint64();\n});\n\n// file:src/parsing/dmax.js\nBoxParser.createBoxCtor(\"dmax\", \"hintlongestpacket\", function(stream) {\n\tthis.time = stream.readUint32();\n});\n\n// file:src/parsing/dmed.js\nBoxParser.createBoxCtor(\"dmed\", \"hintmediaBytesSent\", function(stream) {\n\tthis.bytessent = stream.readUint64();\n});\n\n// file:src/parsing/dOps.js\nBoxParser.createBoxCtor(\"dOps\", \"OpusSpecificBox\", function(stream) {\n\tthis.Version = stream.readUint8();\n\tthis.OutputChannelCount = stream.readUint8();\n\tthis.PreSkip = stream.readUint16();\n\tthis.InputSampleRate = stream.readUint32();\n\tthis.OutputGain = stream.readInt16();\n\tthis.ChannelMappingFamily = stream.readUint8();\n\tif (this.ChannelMappingFamily !== 0) {\n\t\tthis.StreamCount = stream.readUint8();\n\t\tthis.CoupledCount = stream.readUint8();\n\t\tthis.ChannelMapping = [];\n\t\tfor (var i = 0; i < this.OutputChannelCount; i++) {\n\t\t\tthis.ChannelMapping[i] = stream.readUint8();\n\t\t}\n\t}\n});\n\n// file:src/parsing/dref.js\nBoxParser.createFullBoxCtor(\"dref\", \"DataReferenceBox\", function(stream) {\n\tvar ret;\n\tvar box;\n\tthis.entries = [];\n\tvar entry_count = stream.readUint32();\n\tfor (var i = 0; i < entry_count; i++) {\n\t\tret = BoxParser.parseOneBox(stream, false, this.size - (stream.getPosition() - this.start));\n\t\tif (ret.code === BoxParser.OK) {\n\t\t\tbox = ret.box;\n\t\t\tthis.entries.push(box);\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\t}\n});\n\n// file:src/parsing/drep.js\nBoxParser.createBoxCtor(\"drep\", \"hintrepeatedBytesSent\", function(stream) {\n\tthis.bytessent = stream.readUint64();\n});\n\n// file:src/parsing/elng.js\nBoxParser.createFullBoxCtor(\"elng\", \"ExtendedLanguageBox\", function(stream) {\n\tthis.extended_language = stream.readString(this.size-this.hdr_size);\n});\n\n// file:src/parsing/elst.js\nBoxParser.createFullBoxCtor(\"elst\", \"EditListBox\", function(stream) {\n\tthis.entries = [];\n\tvar entry_count = stream.readUint32();\n\tfor (var i = 0; i < entry_count; i++) {\n\t\tvar entry = {};\n\t\tthis.entries.push(entry);\n\t\tif (this.version === 1) {\n\t\t\tentry.segment_duration = stream.readUint64();\n\t\t\tentry.media_time = stream.readInt64();\n\t\t} else {\n\t\t\tentry.segment_duration = stream.readUint32();\n\t\t\tentry.media_time = stream.readInt32();\n\t\t}\n\t\tentry.media_rate_integer = stream.readInt16();\n\t\tentry.media_rate_fraction = stream.readInt16();\n\t}\n});\n\n// file:src/parsing/emsg.js\nBoxParser.createFullBoxCtor(\"emsg\", \"EventMessageBox\", function(stream) {\n\tif (this.version == 1) {\n\t\tthis.timescale \t\t\t\t\t= stream.readUint32();\n\t\tthis.presentation_time \t\t\t= stream.readUint64();\n\t\tthis.event_duration\t\t\t \t= stream.readUint32();\n\t\tthis.id \t\t\t\t\t\t= stream.readUint32();\n\t\tthis.scheme_id_uri \t\t\t\t= stream.readCString();\n\t\tthis.value \t\t\t\t\t\t= stream.readCString();\n\t} else {\n\t\tthis.scheme_id_uri \t\t\t\t= stream.readCString();\n\t\tthis.value \t\t\t\t\t\t= stream.readCString();\n\t\tthis.timescale \t\t\t\t\t= stream.readUint32();\n\t\tthis.presentation_time_delta \t= stream.readUint32();\n\t\tthis.event_duration\t\t\t \t= stream.readUint32();\n\t\tthis.id \t\t\t\t\t\t= stream.readUint32();\n\t}\n\tvar message_size = this.size - this.hdr_size - (4*4 + (this.scheme_id_uri.length+1) + (this.value.length+1));\n\tif (this.version == 1) {\n\t\tmessage_size -= 4;\n\t}\n\tthis.message_data = stream.readUint8Array(message_size);\n});\n\n// file:src/parsing/EntityToGroup.js\n// ISO/IEC 14496-12:2022 Section 8.18.3 Entity to group box\nBoxParser.createEntityToGroupCtor = function(type, parseMethod) {\n BoxParser[type+\"Box\"] = function(size) {\n BoxParser.FullBox.call(this, type, size);\n }\n BoxParser[type+\"Box\"].prototype = new BoxParser.FullBox();\n BoxParser[type+\"Box\"].prototype.parse = function(stream) {\n this.parseFullHeader(stream);\n if (parseMethod) {\n parseMethod.call(this, stream);\n } else {\n this.group_id = stream.readUint32();\n this.num_entities_in_group = stream.readUint32();\n this.entity_ids = [];\n for (i = 0; i < this.num_entities_in_group; i++) {\n var entity_id = stream.readUint32();\n this.entity_ids.push(entity_id);\n }\n }\n };\n};\n\n// Auto exposure bracketing (ISO/IEC 23008-12:2022 Section 6.8.6.2.1)\nBoxParser.createEntityToGroupCtor(\"aebr\");\n\n// Flash exposure bracketing (ISO/IEC 23008-12:2022 Section 6.8.6.5.1)\nBoxParser.createEntityToGroupCtor(\"afbr\");\n\n// Album collection (ISO/IEC 23008-12:2022 Section 6.8.7.1)\nBoxParser.createEntityToGroupCtor(\"albc\");\n\n// Alternative entity (ISO/IEC 14496-12:2022 Section 8.18.3.1)\nBoxParser.createEntityToGroupCtor(\"altr\");\n\n// Burst image entity group (ISO/IEC 23008-12:2022 Section 6.8.2.2)\nBoxParser.createEntityToGroupCtor(\"brst\");\n\n// Depth of field bracketing (ISO/IEC 23008-12:2022 Section 6.8.6.6.1)\nBoxParser.createEntityToGroupCtor(\"dobr\");\n\n// Equivalent entity (ISO/IEC 23008-12:2022 Section 6.8.1.1)\nBoxParser.createEntityToGroupCtor(\"eqiv\");\n\n// Favourites collection (ISO/IEC 23008-12:2022 Section 6.8.7.2)\nBoxParser.createEntityToGroupCtor(\"favc\");\n\n// Focus bracketing (ISO/IEC 23008-12:2022 Section 6.8.6.4.1)\nBoxParser.createEntityToGroupCtor(\"fobr\");\n\n// Audio to image entity group (ISO/IEC 23008-12:2022 Section 6.8.4)\nBoxParser.createEntityToGroupCtor(\"iaug\");\n\n// Panorama (ISO/IEC 23008-12:2022 Section 6.8.8.1)\nBoxParser.createEntityToGroupCtor(\"pano\");\n\n// Slideshow (ISO/IEC 23008-12:2022 Section 6.8.9.1)\nBoxParser.createEntityToGroupCtor(\"slid\");\n\n// Stereo pair (ISO/IEC 23008-12:2022 Section 6.8.5)\nBoxParser.createEntityToGroupCtor(\"ster\");\n\n// Time-synchronised capture entity group (ISO/IEC 23008-12:2022 Section 6.8.3)\nBoxParser.createEntityToGroupCtor(\"tsyn\");\n\n// White balance bracketing (ISO/IEC 23008-12:2022 Section 6.8.6.3.1)\nBoxParser.createEntityToGroupCtor(\"wbbr\");\n\n// Alternative entity (ISO/IEC 23008-12:2022 AMD1 Section 6.8.10)\nBoxParser.createEntityToGroupCtor(\"prgr\");\n\n// Image Pyramid entity group (ISO/IEC 23008-12:20xx Section 6.8.11)\nBoxParser.createEntityToGroupCtor(\"pymd\", function(stream) {\n this.group_id = stream.readUint32();\n this.num_entities_in_group = stream.readUint32();\n this.entity_ids = [];\n for (var i = 0; i < this.num_entities_in_group; i++) {\n var entity_id = stream.readUint32();\n this.entity_ids.push(entity_id);\n }\n \n this.tile_size_x = stream.readUint16();\n this.tile_size_y = stream.readUint16();\n this.layer_binning = [];\n this.tiles_in_layer_column_minus1 = [];\n this.tiles_in_layer_row_minus1 = [];\n for (i = 0; i < this.num_entities_in_group; i++) {\n this.layer_binning[i] = stream.readUint16();\n this.tiles_in_layer_row_minus1[i] = stream.readUint16();\n this.tiles_in_layer_column_minus1[i] = stream.readUint16();\n }\n});\n\n// file:src/parsing/esds.js\nBoxParser.createFullBoxCtor(\"esds\", \"ElementaryStreamDescriptorBox\", function(stream) {\n\tvar esd_data = stream.readUint8Array(this.size-this.hdr_size);\n\tif (typeof MPEG4DescriptorParser !== \"undefined\") {\n\t\tvar esd_parser = new MPEG4DescriptorParser();\n\t\tthis.esd = esd_parser.parseOneDescriptor(new DataStream(esd_data.buffer, 0, DataStream.BIG_ENDIAN));\n\t}\n});\n\n// file:src/parsing/fiel.js\nBoxParser.createBoxCtor(\"fiel\", \"FieldHandlingBox\", function(stream) {\n\tthis.fieldCount = stream.readUint8();\n\tthis.fieldOrdering = stream.readUint8();\n});\n\n// file:src/parsing/frma.js\nBoxParser.createBoxCtor(\"frma\", \"OriginalFormatBox\", function(stream) {\n\tthis.data_format = stream.readString(4);\n});\n\n// file:src/parsing/ftyp.js\nBoxParser.createBoxCtor(\"ftyp\", \"FileTypeBox\", function(stream) {\n\tvar toparse = this.size - this.hdr_size;\n\tthis.major_brand = stream.readString(4);\n\tthis.minor_version = stream.readUint32();\n\ttoparse -= 8;\n\tthis.compatible_brands = [];\n\tvar i = 0;\n\twhile (toparse>=4) {\n\t\tthis.compatible_brands[i] = stream.readString(4);\n\t\ttoparse -= 4;\n\t\ti++;\n\t}\n});\n\n// file:src/parsing/hdlr.js\nBoxParser.createFullBoxCtor(\"hdlr\", \"HandlerBox\", function(stream) {\n\tif (this.version === 0) {\n\t\tstream.readUint32();\n\t\tthis.handler = stream.readString(4);\n\t\tstream.readUint32Array(3);\n\t\tthis.name = stream.readString(this.size-this.hdr_size-20);\n\t\tif (this.name[this.name.length-1]==='\\0') {\n\t\t\tthis.name = this.name.slice(0,-1);\n\t\t}\n\t}\n});\n\n// file:src/parsing/hvcC.js\nBoxParser.createBoxCtor(\"hvcC\", \"HEVCConfigurationBox\", function(stream) {\n\tvar i, j;\n\tvar nb_nalus;\n\tvar length;\n\tvar tmp_byte;\n\tthis.configurationVersion = stream.readUint8();\n\ttmp_byte = stream.readUint8();\n\tthis.general_profile_space = tmp_byte >> 6;\n\tthis.general_tier_flag = (tmp_byte & 0x20) >> 5;\n\tthis.general_profile_idc = (tmp_byte & 0x1F);\n\tthis.general_profile_compatibility = stream.readUint32();\n\tthis.general_constraint_indicator = stream.readUint8Array(6);\n\tthis.general_level_idc = stream.readUint8();\n\tthis.min_spatial_segmentation_idc = stream.readUint16() & 0xFFF;\n\tthis.parallelismType = (stream.readUint8() & 0x3);\n\tthis.chroma_format_idc = (stream.readUint8() & 0x3);\n\tthis.bit_depth_luma_minus8 = (stream.readUint8() & 0x7);\n\tthis.bit_depth_chroma_minus8 = (stream.readUint8() & 0x7);\n\tthis.avgFrameRate = stream.readUint16();\n\ttmp_byte = stream.readUint8();\n\tthis.constantFrameRate = (tmp_byte >> 6);\n\tthis.numTemporalLayers = (tmp_byte & 0XD) >> 3;\n\tthis.temporalIdNested = (tmp_byte & 0X4) >> 2;\n\tthis.lengthSizeMinusOne = (tmp_byte & 0X3);\n\n\tthis.nalu_arrays = [];\n\tthis.nalu_arrays.toString = function () {\n\t\tvar str = \"<table class='inner-table'>\";\n\t\tstr += \"<thead><tr><th>completeness</th><th>nalu_type</th><th>nalu_data</th></tr></thead>\";\n\t\tstr += \"<tbody>\";\n\n\t\tfor (var i=0; i<this.length; i++) {\n\t\t\tvar nalu_array = this[i];\n\t\t\tstr += \"<tr>\";\n\t\t\tstr += \"<td rowspan='\"+nalu_array.length+\"'>\"+nalu_array.completeness+\"</td>\";\n\t\t\tstr += \"<td rowspan='\"+nalu_array.length+\"'>\"+nalu_array.nalu_type+\"</td>\";\n\t\t\tfor (var j=0; j<nalu_array.length; j++) {\n\t\t\t\tvar nalu = nalu_array[j];\n\t\t\t\tif (j !== 0) str += \"<tr>\";\n\t\t\t\tstr += \"<td>\";\n\t\t\t\tstr += nalu.data.reduce(function(str, byte) {\n\t\t\t\t\treturn str + byte.toString(16).padStart(2, \"0\");\n\t\t\t\t}, \"0x\");\n\t\t\t\tstr += \"</td></tr>\";\n\t\t\t}\n\t\t}\n\t\tstr += \"</tbody></table>\";\n\t\treturn str;\n\t}\n\tvar numOfArrays = stream.readUint8();\n\tfor (i = 0; i < numOfArrays; i++) {\n\t\tvar nalu_array = [];\n\t\tthis.nalu_arrays.push(nalu_array);\n\t\ttmp_byte = stream.readUint8()\n\t\tnalu_array.completeness = (tmp_byte & 0x80) >> 7;\n\t\tnalu_array.nalu_type = tmp_byte & 0x3F;\n\t\tvar numNalus = stream.readUint16();\n\t\tfor (j = 0; j < numNalus; j++) {\n\t\t\tvar nalu = {}\n\t\t\tnalu_array.push(nalu);\n\t\t\tlength = stream.readUint16();\n\t\t\tnalu.data = stream.readUint8Array(length);\n\t\t}\n\t}\n});\n\n// file:src/parsing/iinf.js\nBoxParser.createFullBoxCtor(\"iinf\", \"ItemInfoBox\", function(stream) {\n\tvar ret;\n\tif (this.version === 0) {\n\t\tthis.entry_count = stream.readUint16();\n\t} else {\n\t\tthis.entry_count = stream.readUint32();\n\t}\n\tthis.item_infos = [];\n\tfor (var i = 0; i < this.entry_count; i++) {\n\t\tret = BoxParser.parseOneBox(stream, false, this.size - (stream.getPosition() - this.start));\n\t\tif (ret.code === BoxParser.OK) {\n\t\t\tif (ret.box.type !== \"infe\") {\n\t\t\t\tLog.error(\"BoxParser\", \"Expected 'infe' box, got \"+ret.box.type);\n\t\t\t}\n\t\t\tthis.item_infos[i] = ret.box;\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\t}\n});\n\n// file:src/parsing/iloc.js\nBoxParser.createFullBoxCtor(\"iloc\", \"ItemLocationBox\", function(stream) {\n\tvar byte;\n\tbyte = stream.readUint8();\n\tthis.offset_size = (byte >> 4) & 0xF;\n\tthis.length_size = byte & 0xF;\n\tbyte = stream.readUint8();\n\tthis.base_offset_size = (byte >> 4) & 0xF;\n\tif (this.version === 1 || this.version === 2) {\n\t\tthis.index_size = byte & 0xF;\n\t} else {\n\t\tthis.index_size = 0;\n\t\t// reserved = byte & 0xF;\n\t}\n\tthis.items = [];\n\tvar item_count = 0;\n\tif (this.version < 2) {\n\t\titem_count = stream.readUint16();\n\t} else if (this.version === 2) {\n\t\titem_count = stream.readUint32();\n\t} else {\n\t\tthrow \"version of iloc box not supported\";\n\t}\n\tfor (var i = 0; i < item_count; i++) {\n\t\tvar item = {};\n\t\tthis.items.push(item);\n\t\tif (this.version < 2) {\n\t\t\titem.item_ID = stream.readUint16();\n\t\t} else if (this.version === 2) {\n\t\t\titem.item_ID = stream.readUint32();\n\t\t} else {\n\t\t\tthrow \"version of iloc box not supported\";\n\t\t}\n\t\tif (this.version === 1 || this.version === 2) {\n\t\t\titem.construction_method = (stream.readUint16() & 0xF);\n\t\t} else {\n\t\t\titem.construction_method = 0;\n\t\t}\n\t\titem.data_reference_index = stream.readUint16();\n\t\tswitch(this.base_offset_size) {\n\t\t\tcase 0:\n\t\t\t\titem.base_offset = 0;\n\t\t\t\tbreak;\n\t\t\tcase 4:\n\t\t\t\titem.base_offset = stream.readUint32();\n\t\t\t\tbreak;\n\t\t\tcase 8:\n\t\t\t\titem.base_offset = stream.readUint64();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow \"Error reading base offset size\";\n\t\t}\n\t\tvar extent_count = stream.readUint16();\n\t\titem.extents = [];\n\t\tfor (var j=0; j < extent_count; j++) {\n\t\t\tvar extent = {};\n\t\t\titem.extents.push(extent);\n\t\t\tif (this.version === 1 || this.version === 2) {\n\t\t\t\tswitch(this.index_size) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\textent.extent_index = 0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\textent.extent_index = stream.readUint32();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 8:\n\t\t\t\t\t\textent.extent_index = stream.readUint64();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthrow \"Error reading extent index\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tswitch(this.offset_size) {\n\t\t\t\tcase 0:\n\t\t\t\t\textent.extent_offset = 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 4:\n\t\t\t\t\textent.extent_offset = stream.readUint32();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 8:\n\t\t\t\t\textent.extent_offset = stream.readUint64();\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow \"Error reading extent index\";\n\t\t\t}\n\t\t\tswitch(this.length_size) {\n\t\t\t\tcase 0:\n\t\t\t\t\textent.extent_length = 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 4:\n\t\t\t\t\textent.extent_length = stream.readUint32();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 8:\n\t\t\t\t\textent.extent_length = stream.readUint64();\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow \"Error reading extent index\";\n\t\t\t}\n\t\t}\n\t}\n});\n\n// file:src/parsing/imir.js\nBoxParser.createBoxCtor(\"imir\", \"ImageMirror\", function(stream) {\n\tvar tmp = stream.readUint8();\n\tthis.reserved = tmp >> 7;\n\tthis.axis = tmp & 1;\n});// file:src/parsing/infe.js\nBoxParser.createFullBoxCtor(\"infe\", \"ItemInfoEntry\", function(stream) {\n\tif (this.version === 0 || this.version === 1) {\n\t\tthis.item_ID = stream.readUint16();\n\t\tthis.item_protection_index = stream.readUint16();\n\t\tthis.item_name = stream.readCString();\n\t\tthis.content_type = stream.readCString();\n\t\tthis.content_encoding = stream.readCString();\n\t}\n\tif (this.version === 1) {\n\t\tthis.extension_type = stream.readString(4);\n\t\tLog.warn(\"BoxParser\", \"Cannot parse extension type\");\n\t\tstream.seek(this.start+this.size);\n\t\treturn;\n\t}\n\tif (this.version >= 2) {\n\t\tif (this.version === 2) {\n\t\t\tthis.item_ID = stream.readUint16();\n\t\t} else if (this.version === 3) {\n\t\t\tthis.item_ID = stream.readUint32();\n\t\t}\n\t\tthis.item_protection_index = stream.readUint16();\n\t\tthis.item_type = stream.readString(4);\n\t\tthis.item_name = stream.readCString();\n\t\tif (this.item_type === \"mime\") {\n\t\t\tthis.content_type = stream.readCString();\n\t\t\tthis.content_encoding = stream.readCString();\n\t\t} else if (this.item_type === \"uri \") {\n\t\t\tthis.item_uri_type = stream.readCString();\n\t\t}\n\t}\n});\n// file:src/parsing/ipma.js\nBoxParser.createFullBoxCtor(\"ipma\", \"ItemPropertyAssociationBox\", function(stream) {\n\tvar i, j;\n\tentry_count = stream.readUint32();\n\tthis.associations = [];\n\tfor(i=0; i<entry_count; i++) {\n\t\tvar item_assoc = {};\n\t\tthis.associations.push(item_assoc);\n\t\tif (this.version < 1) {\n\t\t\titem_assoc.id = stream.readUint16();\n\t\t} else {\n\t\t\titem_assoc.id = stream.readUint32();\n\t\t}\n\t\tvar association_count = stream.readUint8();\n\t\titem_assoc.props = [];\n\t\tfor (j = 0; j < association_count; j++) {\n\t\t\tvar tmp = stream.readUint8();\n\t\t\tvar p = {};\n\t\t\titem_assoc.props.push(p);\n\t\t\tp.essential = ((tmp & 0x80) >> 7) === 1;\n\t\t\tif (this.flags & 0x1) {\n\t\t\t\tp.property_index = (tmp & 0x7F) << 8 | stream.readUint8();\n\t\t\t} else {\n\t\t\t\tp.property_index = (tmp & 0x7F);\n\t\t\t}\n\t\t}\n\t}\n});\n\n// file:src/parsing/iref.js\nBoxParser.createFullBoxCtor(\"iref\", \"ItemReferenceBox\", function(stream) {\n\tvar ret;\n\tvar entryCount;\n\tvar box;\n\tthis.references = [];\n\n\twhile (stream.getPosition() < this.start+this.size) {\n\t\tret = BoxParser.parseOneBox(stream, true, this.size - (stream.getPosition() - this.start));\n\t\tif (ret.code === BoxParser.OK) {\n\t\t\tif (this.version === 0) {\n\t\t\t\tbox = new BoxParser.SingleItemTypeReferenceBox(ret.type, ret.size, ret.hdr_size, ret.start);\n\t\t\t} else {\n\t\t\t\tbox = new BoxParser.SingleItemTypeReferenceBoxLarge(ret.type, ret.size, ret.hdr_size, ret.start);\n\t\t\t}\n\t\t\tif (box.write === BoxParser.Box.prototype.write && box.type !== \"mdat\") {\n\t\t\t\tLog.warn(\"BoxParser\", box.type+\" box writing not yet implemented, keeping unparsed data in memory for later write\");\n\t\t\t\tbox.parseDataAndRewind(stream);\n\t\t\t}\n\t\t\tbox.parse(stream);\n\t\t\tthis.references.push(box);\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\t}\n});\n// file:src/parsing/irot.js\nBoxParser.createBoxCtor(\"irot\", \"ImageRotation\", function(stream) {\n\tthis.angle = stream.readUint8() & 0x3;\n});\n\n// file:src/parsing/ispe.js\nBoxParser.createFullBoxCtor(\"ispe\", \"ImageSpatialExtentsProperty\", function(stream) {\n\tthis.image_width = stream.readUint32();\n\tthis.image_height = stream.readUint32();\n});// file:src/parsing/kind.js\nBoxParser.createFullBoxCtor(\"kind\", \"KindBox\", function(stream) {\n\tthis.schemeURI = stream.readCString();\n\tthis.value = stream.readCString();\n});\n// file:src/parsing/leva.js\nBoxParser.createFullBoxCtor(\"leva\", \"LevelAssignmentBox\", function(stream) {\n\tvar count = stream.readUint8();\n\tthis.levels = [];\n\tfor (var i = 0; i < count; i++) {\n\t\tvar level = {};\n\t\tthis.levels[i] = level;\n\t\tlevel.track_ID = stream.readUint32();\n\t\tvar tmp_byte = stream.readUint8();\n\t\tlevel.padding_flag = tmp_byte >> 7;\n\t\tlevel.assignment_type = tmp_byte & 0x7F;\n\t\tswitch (level.assignment_type) {\n\t\t\tcase 0:\n\t\t\t\tlevel.grouping_type = stream.readString(4);\n\t\t\t\tbreak;\n\t\t\tcase 1:\n\t\t\t\tlevel.grouping_type = stream.readString(4);\n\t\t\t\tlevel.grouping_type_parameter = stream.readUint32();\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t\tbreak;\n\t\t\tcase 4:\n\t\t\t\tlevel.sub_track_id = stream.readUint32();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tLog.warn(\"BoxParser\", \"Unknown leva assignement type\");\n\t\t}\n\t}\n});\n\n// file:src/parsing/lhvC.js\nBoxParser.createBoxCtor(\"lhvC\", \"LHEVCConfigurationBox\", function(stream) {\n\tvar i, j;\n\tvar tmp_byte;\n\tthis.configurationVersion = stream.readUint8();\n\tthis.min_spatial_segmentation_idc = stream.readUint16() & 0xFFF;\n\tthis.parallelismType = (stream.readUint8() & 0x3);\n\ttmp_byte = stream.readUint8();\n\tthis.numTemporalLayers = (tmp_byte & 0XD) >> 3;\n\tthis.temporalIdNested = (tmp_byte & 0X4) >> 2;\n\tthis.lengthSizeMinusOne = (tmp_byte & 0X3);\n\n\tthis.nalu_arrays = [];\n\tthis.nalu_arrays.toString = function () {\n\t\tvar str = \"<table class='inner-table'>\";\n\t\tstr += \"<thead><tr><th>completeness</th><th>nalu_type</th><th>nalu_data</th></tr></thead>\";\n\t\tstr += \"<tbody>\";\n\n\t\tfor (var i=0; i<this.length; i++) {\n\t\t\tvar nalu_array = this[i];\n\t\t\tstr += \"<tr>\";\n\t\t\tstr += \"<td rowspan='\"+nalu_array.length+\"'>\"+nalu_array.completeness+\"</td>\";\n\t\t\tstr += \"<td rowspan='\"+nalu_array.length+\"'>\"+nalu_array.nalu_type+\"</td>\";\n\t\t\tfor (var j=0; j<nalu_array.length; j++) {\n\t\t\t\tvar nalu = nalu_array[j];\n\t\t\t\tif (j !== 0) str += \"<tr>\";\n\t\t\t\tstr += \"<td>\";\n\t\t\t\tstr += nalu.data.reduce(function(str, byte) {\n\t\t\t\t\treturn str + byte.toString(16).padStart(2, \"0\");\n\t\t\t\t}, \"0x\");\n\t\t\t\tstr += \"</td></tr>\";\n\t\t\t}\n\t\t}\n\t\tstr += \"</tbody></table>\";\n\t\treturn str;\n\t}\n\tvar numOfArrays = stream.readUint8();\n\tfor (i = 0; i < numOfArrays; i++) {\n\t\tvar nalu_array = [];\n\t\tthis.nalu_arrays.push(nalu_array);\n\t\ttmp_byte = stream.readUint8()\n\t\tnalu_array.completeness = (tmp_byte & 0x80) >> 7;\n\t\tnalu_array.nalu_type = tmp_byte & 0x3F;\n\t\tvar numNalus = stream.readUint16();\n\t\tfor (j = 0; j < numNalus; j++) {\n\t\t\tvar nalu = {}\n\t\t\tnalu_array.push(nalu);\n\t\t\tvar length = stream.readUint16();\n\t\t\tnalu.data = stream.readUint8Array(length);\n\t\t}\n\t}\n});\n\n// file:src/parsing/lsel.js\nBoxParser.createBoxCtor(\"lsel\", \"LayerSelectorProperty\", function(stream) {\n\tthis.layer_id = stream.readUint16();\n});// file:src/parsing/maxr.js\nBoxParser.createBoxCtor(\"maxr\", \"hintmaxrate\", function(stream) {\n\tthis.period = stream.readUint32();\n\tthis.bytes = stream.readUint32();\n});\n\n// file:src/parsing/mdcv.js\nfunction ColorPoint(x, y) {\n this.x = x;\n this.y = y;\n}\n\nColorPoint.prototype.toString = function() {\n return \"(\"+this.x+\",\"+this.y+\")\";\n}\n\nBoxParser.createBoxCtor(\"mdcv\", \"MasteringDisplayColourVolumeBox\", function(stream) {\n this.display_primaries = [];\n this.display_primaries[0] = new ColorPoint(stream.readUint16(),stream.readUint16());\n this.display_primaries[1] = new ColorPoint(stream.readUint16(),stream.readUint16());\n this.display_primaries[2] = new ColorPoint(stream.readUint16(),stream.readUint16());\n this.white_point = new ColorPoint(stream.readUint16(),stream.readUint16());\n this.max_display_mastering_luminance = stream.readUint32();\n this.min_display_mastering_luminance = stream.readUint32();\n});\n\n// file:src/parsing/mdhd.js\nBoxParser.createFullBoxCtor(\"mdhd\", \"MediaHeaderBox\", function(stream) {\n\tif (this.version == 1) {\n\t\tthis.creation_time = stream.readUint64();\n\t\tthis.modification_time = stream.readUint64();\n\t\tthis.timescale = stream.readUint32();\n\t\tthis.duration = stream.readUint64();\n\t} else {\n\t\tthis.creation_time = stream.readUint32();\n\t\tthis.modification_time = stream.readUint32();\n\t\tthis.timescale = stream.readUint32();\n\t\tthis.duration = stream.readUint32();\n\t}\n\tthis.parseLanguage(stream);\n\tstream.readUint16();\n});\n\n// file:src/parsing/mehd.js\nBoxParser.createFullBoxCtor(\"mehd\", \"MovieExtendsHeaderBox\", function(stream) {\n\tif (this.flags & 0x1) {\n\t\tLog.warn(\"BoxParser\", \"mehd box incorrectly uses flags set to 1, converting version to 1\");\n\t\tthis.version = 1;\n\t}\n\tif (this.version == 1) {\n\t\tthis.fragment_duration = stream.readUint64();\n\t} else {\n\t\tthis.fragment_duration = stream.readUint32();\n\t}\n});\n\n// file:src/parsing/meta.js\nBoxParser.createFullBoxCtor(\"meta\", \"MetaBox\", function(stream) {\n\tthis.boxes = [];\n\tBoxParser.ContainerBox.prototype.parse.call(this, stream);\n});\n// file:src/parsing/mfhd.js\nBoxParser.createFullBoxCtor(\"mfhd\", \"MovieFragmentHeaderBox\", function(stream) {\n\tthis.sequence_number = stream.readUint32();\n});\n\n// file:src/parsing/mfro.js\nBoxParser.createFullBoxCtor(\"mfro\", \"MovieFragmentRandomAccessOffsetBox\", function(stream) {\n\tthis._size = stream.readUint32();\n});\n\n// file:src/parsing/mskC.js\nBoxParser.createFullBoxCtor(\"mskC\", \"MaskConfigurationProperty\", function(stream) {\n this.bits_per_pixel = stream.readUint8();\n});\n\n// file:src/parsing/mvhd.js\nBoxParser.createFullBoxCtor(\"mvhd\", \"MovieHeaderBox\", function(stream) {\n\tif (this.version == 1) {\n\t\tthis.creation_time = stream.readUint64();\n\t\tthis.modification_time = stream.readUint64();\n\t\tthis.timescale = stream.readUint32();\n\t\tthis.duration = stream.readUint64();\n\t} else {\n\t\tthis.creation_time = stream.readUint32();\n\t\tthis.modification_time = stream.readUint32();\n\t\tthis.timescale = stream.readUint32();\n\t\tthis.duration = stream.readUint32();\n\t}\n\tthis.rate = stream.readUint32();\n\tthis.volume = stream.readUint16()>>8;\n\tstream.readUint16();\n\tstream.readUint32Array(2);\n\tthis.matrix = stream.readUint32Array(9);\n\tstream.readUint32Array(6);\n\tthis.next_track_id = stream.readUint32();\n});\n// file:src/parsing/npck.js\nBoxParser.createBoxCtor(\"npck\", \"hintPacketsSent\", function(stream) {\n\tthis.packetssent = stream.readUint32();\n});\n\n// file:src/parsing/nump.js\nBoxParser.createBoxCtor(\"nump\", \"hintPacketsSent\", function(stream) {\n\tthis.packetssent = stream.readUint64();\n});\n\n// file:src/parsing/padb.js\nBoxParser.createFullBoxCtor(\"padb\", \"PaddingBitsBox\", function(stream) {\n\tvar sample_count = stream.readUint32();\n\tthis.padbits = [];\n\tfor (var i = 0; i < Math.floor((sample_count+1)/2); i++) {\n\t\tthis.padbits = stream.readUint8();\n\t}\n});\n\n// file:src/parsing/pasp.js\nBoxParser.createBoxCtor(\"pasp\", \"PixelAspectRatioBox\", function(stream) {\n\tthis.hSpacing = stream.readUint32();\n\tthis.vSpacing = stream.readUint32();\n});// file:src/parsing/payl.js\nBoxParser.createBoxCtor(\"payl\", \"CuePayloadBox\", function(stream) {\n\tthis.text = stream.readString(this.size - this.hdr_size);\n});\n\n// file:src/parsing/payt.js\nBoxParser.createBoxCtor(\"payt\", \"hintpayloadID\", function(stream) {\n\tthis.payloadID = stream.readUint32();\n\tvar count = stream.readUint8();\n\tthis.rtpmap_string = stream.readString(count);\n});\n\n// file:src/parsing/pdin.js\nBoxParser.createFullBoxCtor(\"pdin\", \"ProgressiveDownloadInfoBox\", function(stream) {\n\tvar count = (this.size - this.hdr_size)/8;\n\tthis.rate = [];\n\tthis.initial_delay = [];\n\tfor (var i = 0; i < count; i++) {\n\t\tthis.rate[i] = stream.readUint32();\n\t\tthis.initial_delay[i] = stream.readUint32();\n\t}\n});\n\n// file:src/parsing/pitm.js\nBoxParser.createFullBoxCtor(\"pitm\", \"PrimaryItemBox\", function(stream) {\n\tif (this.version === 0) {\n\t\tthis.item_id = stream.readUint16();\n\t} else {\n\t\tthis.item_id = stream.readUint32();\n\t}\n});\n\n// file:src/parsing/pixi.js\nBoxParser.createFullBoxCtor(\"pixi\", \"PixelInformationProperty\", function(stream) {\n\tvar i;\n\tthis.num_channels = stream.readUint8();\n\tthis.bits_per_channels = [];\n\tfor (i = 0; i < this.num_channels; i++) {\n\t\tthis.bits_per_channels[i] = stream.readUint8();\n\t}\n});\n\n// file:src/parsing/pmax.js\nBoxParser.createBoxCtor(\"pmax\", \"hintlargestpacket\", function(stream) {\n\tthis.bytes = stream.readUint32();\n});\n\n// file:src/parsing/prdi.js\nBoxParser.createFullBoxCtor(\"prdi\", \"ProgressiveDerivedImageItemInformationProperty\", function(stream) {\n\tthis.step_count = stream.readUint16();\n\tthis.item_count = [];\n\tif (this.flags & 0x2) {\n\t\tfor (var i = 0; i < this.step_count; i++) {\n\t\t\tthis.item_count[i] = stream.readUint16();\n\t\t}\n\t}\n});// file:src/parsing/prft.js\nBoxParser.createFullBoxCtor(\"prft\", \"ProducerReferenceTimeBox\", function(stream) {\n\tthis.ref_track_id = stream.readUint32();\n\tthis.ntp_timestamp = stream.readUint64();\n\tif (this.version === 0) {\n\t\tthis.media_time = stream.readUint32();\n\t} else {\n\t\tthis.media_time = stream.readUint64();\n\t}\n});\n\n// file:src/parsing/pssh.js\nBoxParser.createFullBoxCtor(\"pssh\", \"ProtectionSystemSpecificHeaderBox\", function(stream) {\n\tthis.system_id = BoxParser.parseHex16(stream);\n\tif (this.version > 0) {\n\t\tvar count = stream.readUint32();\n\t\tthis.kid = [];\n\t\tfor (var i = 0; i < count; i++) {\n\t\t\tthis.kid[i] = BoxParser.parseHex16(stream);\n\t\t}\n\t}\n\tvar datasize = stream.readUint32();\n\tif (datasize > 0) {\n\t\tthis.data = stream.readUint8Array(datasize);\n\t}\n});\n\n// file:src/parsing/qt/clef.js\nBoxParser.createFullBoxCtor(\"clef\", \"TrackCleanApertureDimensionsBox\", function(stream) {\n\tthis.width = stream.readUint32();\n\tthis.height = stream.readUint32();\n});// file:src/parsing/qt/enof.js\nBoxParser.createFullBoxCtor(\"enof\", \"TrackEncodedPixelsDimensionsBox\", function(stream) {\n\tthis.width = stream.readUint32();\n\tthis.height = stream.readUint32();\n});// file:src/parsing/qt/prof.js\nBoxParser.createFullBoxCtor(\"prof\", \"TrackProductionApertureDimensionsBox\", function(stream) {\n\tthis.width = stream.readUint32();\n\tthis.height = stream.readUint32();\n});// file:src/parsing/qt/tapt.js\nBoxParser.createContainerBoxCtor(\"tapt\", \"TrackApertureModeDimensionsBox\", null, [ \"clef\", \"prof\", \"enof\"]);// file:src/parsing/rtp.js\nBoxParser.createBoxCtor(\"rtp \", \"rtpmoviehintinformation\", function(stream) {\n\tthis.descriptionformat = stream.readString(4);\n\tthis.sdptext = stream.readString(this.size - this.hdr_size - 4);\n});\n\n// file:src/parsing/saio.js\nBoxParser.createFullBoxCtor(\"saio\", \"SampleAuxiliaryInformationOffsetsBox\", function(stream) {\n\tif (this.flags & 0x1) {\n\t\tthis.aux_info_type = stream.readString(4);\n\t\tthis.aux_info_type_parameter = stream.readUint32();\n\t}\n\tvar count = stream.readUint32();\n\tthis.offset = [];\n\tfor (var i = 0; i < count; i++) {\n\t\tif (this.version === 0) {\n\t\t\tthis.offset[i] = stream.readUint32();\n\t\t} else {\n\t\t\tthis.offset[i] = stream.readUint64();\n\t\t}\n\t}\n});\n// file:src/parsing/saiz.js\nBoxParser.createFullBoxCtor(\"saiz\", \"SampleAuxiliaryInformationSizesBox\", function(stream) {\n\tif (this.flags & 0x1) {\n\t\tthis.aux_info_type = stream.readString(4);\n\t\tthis.aux_info_type_parameter = stream.readUint32();\n\t}\n\tthis.default_sample_info_size = stream.readUint8();\n\tthis.sample_count = stream.readUint32();\n\tthis.sample_info_size = [];\n\tif (this.default_sample_info_size === 0) {\n\t\tfor (var i = 0; i < this.sample_count; i++) {\n\t\t\tthis.sample_info_size[i] = stream.readUint8();\n\t\t}\n\t}\n});\n\n// file:src/parsing/sampleentries/mett.js\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_METADATA, \"mett\", function(stream) {\n\tthis.parseHeader(stream);\n\tthis.content_encoding = stream.readCString();\n\tthis.mime_format = stream.readCString();\n\tthis.parseFooter(stream);\n});\n\n// file:src/parsing/sampleentries/metx.js\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_METADATA, \"metx\", function(stream) {\n\tthis.parseHeader(stream);\n\tthis.content_encoding = stream.readCString();\n\tthis.namespace = stream.readCString();\n\tthis.schema_location = stream.readCString();\n\tthis.parseFooter(stream);\n});\n\n// file:src/parsing/sampleentries/sbtt.js\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_SUBTITLE, \"sbtt\", function(stream) {\n\tthis.parseHeader(stream);\n\tthis.content_encoding = stream.readCString();\n\tthis.mime_format = stream.readCString();\n\tthis.parseFooter(stream);\n});\n\n// file:src/parsing/sampleentries/stpp.js\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_SUBTITLE, \"stpp\", function(stream) {\n\tthis.parseHeader(stream);\n\tthis.namespace = stream.readCString();\n\tthis.schema_location = stream.readCString();\n\tthis.auxiliary_mime_types = stream.readCString();\n\tthis.parseFooter(stream);\n});\n\n// file:src/parsing/sampleentries/stxt.js\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_SUBTITLE, \"stxt\", function(stream) {\n\tthis.parseHeader(stream);\n\tthis.content_encoding = stream.readCString();\n\tthis.mime_format = stream.readCString();\n\tthis.parseFooter(stream);\n});\n\n// file:src/parsing/sampleentries/tx3g.js\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_SUBTITLE, \"tx3g\", function(stream) {\n\tthis.parseHeader(stream);\n\tthis.displayFlags = stream.readUint32();\n\tthis.horizontal_justification = stream.readInt8();\n\tthis.vertical_justification = stream.readInt8();\n\tthis.bg_color_rgba = stream.readUint8Array(4);\n\tthis.box_record = stream.readInt16Array(4);\n\tthis.style_record = stream.readUint8Array(12);\n\tthis.parseFooter(stream);\n});\n// file:src/parsing/sampleentries/wvtt.js\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_METADATA, \"wvtt\", function(stream) {\n\tthis.parseHeader(stream);\n\tthis.parseFooter(stream);\n});\n\n// file:src/parsing/samplegroups/alst.js\nBoxParser.createSampleGroupCtor(\"alst\", function(stream) {\n\tvar i;\n\tvar roll_count = stream.readUint16();\n\tthis.first_output_sample = stream.readUint16();\n\tthis.sample_offset = [];\n\tfor (i = 0; i < roll_count; i++) {\n\t\tthis.sample_offset[i] = stream.readUint32();\n\t}\n\tvar remaining = this.description_length - 4 - 4*roll_count;\n\tthis.num_output_samples = [];\n\tthis.num_total_samples = [];\n\tfor (i = 0; i < remaining/4; i++) {\n\t\tthis.num_output_samples[i] = stream.readUint16();\n\t\tthis.num_total_samples[i] = stream.readUint16();\n\t}\n});\n\n// file:src/parsing/samplegroups/avll.js\nBoxParser.createSampleGroupCtor(\"avll\", function(stream) {\n\tthis.layerNumber = stream.readUint8();\n\tthis.accurateStatisticsFlag = stream.readUint8();\n\tthis.avgBitRate = stream.readUint16();\n\tthis.avgFrameRate = stream.readUint16();\n});\n\n// file:src/parsing/samplegroups/avss.js\nBoxParser.createSampleGroupCtor(\"avss\", function(stream) {\n\tthis.subSequenceIdentifier = stream.readUint16();\n\tthis.layerNumber = stream.readUint8();\n\tvar tmp_byte = stream.readUint8();\n\tthis.durationFlag = tmp_byte >> 7;\n\tthis.avgRateFlag = (tmp_byte >> 6) & 0x1;\n\tif (this.durationFlag) {\n\t\tthis.duration = stream.readUint32();\n\t}\n\tif (this.avgRateFlag) {\n\t\tthis.accurateStatisticsFlag = stream.readUint8();\n\t\tthis.avgBitRate = stream.readUint16();\n\t\tthis.avgFrameRate = stream.readUint16();\n\t}\n\tthis.dependency = [];\n\tvar numReferences = stream.readUint8();\n\tfor (var i = 0; i < numReferences; i++) {\n\t\tvar dependencyInfo = {};\n\t\tthis.dependency.push(dependencyInfo);\n\t\tdependencyInfo.subSeqDirectionFlag = stream.readUint8();\n\t\tdependencyInfo.layerNumber = stream.readUint8();\n\t\tdependencyInfo.subSequenceIdentifier = stream.readUint16();\n\t}\n});\n\n// file:src/parsing/samplegroups/dtrt.js\nBoxParser.createSampleGroupCtor(\"dtrt\", function(stream) {\n\tLog.warn(\"BoxParser\", \"Sample Group type: \"+this.grouping_type+\" not fully parsed\");\n});\n\n// file:src/parsing/samplegroups/mvif.js\nBoxParser.createSampleGroupCtor(\"mvif\", function(stream) {\n\tLog.warn(\"BoxParser\", \"Sample Group type: \"+this.grouping_type+\" not fully parsed\");\n});\n\n// file:src/parsing/samplegroups/prol.js\nBoxParser.createSampleGroupCtor(\"prol\", function(stream) {\n\tthis.roll_distance = stream.readInt16();\n});\n\n// file:src/parsing/samplegroups/rap.js\nBoxParser.createSampleGroupCtor(\"rap \", function(stream) {\n\tvar tmp_byte = stream.readUint8();\n\tthis.num_leading_samples_known = tmp_byte >> 7;\n\tthis.num_leading_samples = tmp_byte & 0x7F;\n});\n\n// file:src/parsing/samplegroups/rash.js\nBoxParser.createSampleGroupCtor(\"rash\", function(stream) {\n\tthis.operation_point_count = stream.readUint16();\n\tif (this.description_length !== 2+(this.operation_point_count === 1?2:this.operation_point_count*6)+9) {\n\t\tLog.warn(\"BoxParser\", \"Mismatch in \"+this.grouping_type+\" sample group length\");\n\t\tthis.data = stream.readUint8Array(this.description_length-2);\n\t} else {\n\t\tif (this.operation_point_count === 1) {\n\t\t\tthis.target_rate_share = stream.readUint16();\n\t\t} else {\n\t\t\tthis.target_rate_share = [];\n\t\t\tthis.available_bitrate = [];\n\t\t\tfor (var i = 0; i < this.operation_point_count; i++) {\n\t\t\t\tthis.available_bitrate[i] = stream.readUint32();\n\t\t\t\tthis.target_rate_share[i] = stream.readUint16();\n\t\t\t}\n\t\t}\n\t\tthis.maximum_bitrate = stream.readUint32();\n\t\tthis.minimum_bitrate = stream.readUint32();\n\t\tthis.discard_priority = stream.readUint8();\n\t}\n});\n\n// file:src/parsing/samplegroups/roll.js\nBoxParser.createSampleGroupCtor(\"roll\", function(stream) {\n\tthis.roll_distance = stream.readInt16();\n});\n\n// file:src/parsing/samplegroups/samplegroup.js\nBoxParser.SampleGroupEntry.prototype.parse = function(stream) {\n\tLog.warn(\"BoxParser\", \"Unknown Sample Group type: \"+this.grouping_type);\n\tthis.data = stream.readUint8Array(this.description_length);\n}\n\n// file:src/parsing/samplegroups/scif.js\nBoxParser.createSampleGroupCtor(\"scif\", function(stream) {\n\tLog.warn(\"BoxParser\", \"Sample Group type: \"+this.grouping_type+\" not fully parsed\");\n});\n\n// file:src/parsing/samplegroups/scnm.js\nBoxParser.createSampleGroupCtor(\"scnm\", function(stream) {\n\tLog.warn(\"BoxParser\", \"Sample Group type: \"+this.grouping_type+\" not fully parsed\");\n});\n\n// file:src/parsing/samplegroups/seig.js\nBoxParser.createSampleGroupCtor(\"seig\", function(stream) {\n\tthis.reserved = stream.readUint8();\n\tvar tmp = stream.readUint8();\n\tthis.crypt_byte_block = tmp >> 4;\n\tthis.skip_byte_block = tmp & 0xF;\n\tthis.isProtected = stream.readUint8();\n\tthis.Per_Sample_IV_Size = stream.readUint8();\n\tthis.KID = BoxParser.parseHex16(stream);\n\tthis.constant_IV_size = 0;\n\tthis.constant_IV = 0;\n\tif (this.isProtected === 1 && this.Per_Sample_IV_Size === 0) {\n\t\tthis.constant_IV_size = stream.readUint8();\n\t\tthis.constant_IV = stream.readUint8Array(this.constant_IV_size);\n\t}\n});\n\n// file:src/parsing/samplegroups/stsa.js\nBoxParser.createSampleGroupCtor(\"stsa\", function(stream) {\n\tLog.warn(\"BoxParser\", \"Sample Group type: \"+this.grouping_type+\" not fully parsed\");\n});\n\n// file:src/parsing/samplegroups/sync.js\nBoxParser.createSampleGroupCtor(\"sync\", function(stream) {\n\tvar tmp_byte = stream.readUint8();\n\tthis.NAL_unit_type = tmp_byte & 0x3F;\n});\n\n// file:src/parsing/samplegroups/tele.js\nBoxParser.createSampleGroupCtor(\"tele\", function(stream) {\n\tvar tmp_byte = stream.readUint8();\n\tthis.level_independently_decodable = tmp_byte >> 7;\n});\n\n// file:src/parsing/samplegroups/tsas.js\nBoxParser.createSampleGroupCtor(\"tsas\", function(stream) {\n\tLog.warn(\"BoxParser\", \"Sample Group type: \"+this.grouping_type+\" not fully parsed\");\n});\n\n// file:src/parsing/samplegroups/tscl.js\nBoxParser.createSampleGroupCtor(\"tscl\", function(stream) {\n\tLog.warn(\"BoxParser\", \"Sample Group type: \"+this.grouping_type+\" not fully parsed\");\n});\n\n// file:src/parsing/samplegroups/vipr.js\nBoxParser.createSampleGroupCtor(\"vipr\", function(stream) {\n\tLog.warn(\"BoxParser\", \"Sample Group type: \"+this.grouping_type+\" not fully parsed\");\n});\n\n// file:src/parsing/sbgp.js\nBoxParser.createFullBoxCtor(\"sbgp\", \"SampleToGroupBox\", function(stream) {\n\tthis.grouping_type = stream.readString(4);\n\tif (this.version === 1) {\n\t\tthis.grouping_type_parameter = stream.readUint32();\n\t} else {\n\t\tthis.grouping_type_parameter = 0;\n\t}\n\tthis.entries = [];\n\tvar entry_count = stream.readUint32();\n\tfor (var i = 0; i < entry_count; i++) {\n\t\tvar entry = {};\n\t\tthis.entries.push(entry);\n\t\tentry.sample_count = stream.readInt32();\n\t\tentry.group_description_index = stream.readInt32();\n\t}\n});\n\n// file:src/parsing/sbpm.js\nfunction Pixel(row, col) {\n\tthis.bad_pixel_row = row;\n\tthis.bad_pixel_column = col;\n}\n\nPixel.prototype.toString = function pixelToString() {\n\treturn \"[row: \" + this.bad_pixel_row + \", column: \" + this.bad_pixel_column + \"]\";\n}\n\nBoxParser.createFullBoxCtor(\"sbpm\", \"SensorBadPixelsMapBox\", function(stream) {\n\tvar i;\n\tthis.component_count = stream.readUint16();\n this.component_index = [];\n for (i = 0; i < this.component_count; i++) {\n this.component_index.push(stream.readUint16());\n }\n\tvar flags = stream.readUint8();\n\tthis.correction_applied = (0x80 == (flags & 0x80));\n\tthis.num_bad_rows = stream.readUint32();\n\tthis.num_bad_cols = stream.readUint32();\n\tthis.num_bad_pixels = stream.readUint32();\n\tthis.bad_rows = [];\n\tthis.bad_columns = [];\n\tthis.bad_pixels = [];\n\tfor (i = 0; i < this.num_bad_rows; i++) {\n\t\tthis.bad_rows.push(stream.readUint32());\n\t}\n\tfor (i = 0; i < this.num_bad_cols; i++) {\n\t\tthis.bad_columns.push(stream.readUint32());\n\t}\n\tfor (i = 0; i < this.num_bad_pixels; i++) {\n\t\tvar row = stream.readUint32();\n\t\tvar col = stream.readUint32();\n\t\tthis.bad_pixels.push(new Pixel(row, col));\n\t}\n});\n\n// file:src/parsing/schm.js\nBoxParser.createFullBoxCtor(\"schm\", \"SchemeTypeBox\", function(stream) {\n\tthis.scheme_type = stream.readString(4);\n\tthis.scheme_version = stream.readUint32();\n\tif (this.flags & 0x000001) {\n\t\tthis.scheme_uri = stream.readString(this.size - this.hdr_size - 8);\n\t}\n});\n\n// file:src/parsing/sdp.js\nBoxParser.createBoxCtor(\"sdp \", \"rtptracksdphintinformation\", function(stream) {\n\tthis.sdptext = stream.readString(this.size - this.hdr_size);\n});\n\n// file:src/parsing/sdtp.js\nBoxParser.createFullBoxCtor(\"sdtp\", \"SampleDependencyTypeBox\", function(stream) {\n\tvar tmp_byte;\n\tvar count = (this.size - this.hdr_size);\n\tthis.is_leading = [];\n\tthis.sample_depends_on = [];\n\tthis.sample_is_depended_on = [];\n\tthis.sample_has_redundancy = [];\n\tfor (var i = 0; i < count; i++) {\n\t\ttmp_byte = stream.readUint8();\n\t\tthis.is_leading[i] = tmp_byte >> 6;\n\t\tthis.sample_depends_on[i] = (tmp_byte >> 4) & 0x3;\n\t\tthis.sample_is_depended_on[i] = (tmp_byte >> 2) & 0x3;\n\t\tthis.sample_has_redundancy[i] = tmp_byte & 0x3;\n\t}\n});\n\n// file:src/parsing/senc.js\n// Cannot be fully parsed because Per_Sample_IV_Size needs to be known\r\nBoxParser.createFullBoxCtor(\"senc\", \"SampleEncryptionBox\" /*, function(stream) {\r\n\tthis.parseFullHeader(stream);\r\n\tvar sample_count = stream.readUint32();\r\n\tthis.samples = [];\r\n\tfor (var i = 0; i < sample_count; i++) {\r\n\t\tvar sample = {};\r\n\t\t// tenc.default_Per_Sample_IV_Size or seig.Per_Sample_IV_Size\r\n\t\tsample.InitializationVector = this.readUint8Array(Per_Sample_IV_Size*8);\r\n\t\tif (this.flags & 0x2) {\r\n\t\t\tsample.subsamples = [];\r\n\t\t\tsubsample_count = stream.readUint16();\r\n\t\t\tfor (var j = 0; j < subsample_count; j++) {\r\n\t\t\t\tvar subsample = {};\r\n\t\t\t\tsubsample.BytesOfClearData = stream.readUint16();\r\n\t\t\t\tsubsample.BytesOfProtectedData = stream.readUint32();\r\n\t\t\t\tsample.subsamples.push(subsample);\r\n\t\t\t}\r\n\t\t}\r\n\t\t// TODO\r\n\t\tthis.samples.push(sample);\r\n\t}\r\n}*/);\r\n// file:src/parsing/sgpd.js\nBoxParser.createFullBoxCtor(\"sgpd\", \"SampleGroupDescriptionBox\", function(stream) {\n\tthis.grouping_type = stream.readString(4);\n\tLog.debug(\"BoxParser\", \"Found Sample Groups of type \"+this.grouping_type);\n\tif (this.version === 1) {\n\t\tthis.default_length = stream.readUint32();\n\t} else {\n\t\tthis.default_length = 0;\n\t}\n\tif (this.version >= 2) {\n\t\tthis.default_group_description_index = stream.readUint32();\n\t}\n\tthis.entries = [];\n\tvar entry_count = stream.readUint32();\n\tfor (var i = 0; i < entry_count; i++) {\n\t\tvar entry;\n\t\tif (BoxParser[this.grouping_type+\"SampleGroupEntry\"]) {\n\t\t\tentry = new BoxParser[this.grouping_type+\"SampleGroupEntry\"](this.grouping_type);\n\t\t} else {\n\t\t\tentry = new BoxParser.SampleGroupEntry(this.grouping_type);\n\t\t}\n\t\tthis.entries.push(entry);\n\t\tif (this.version === 1) {\n\t\t\tif (this.default_length === 0) {\n\t\t\t\tentry.description_length = stream.readUint32();\n\t\t\t} else {\n\t\t\t\tentry.description_length = this.default_length;\n\t\t\t}\n\t\t} else {\n\t\t\tentry.description_length = this.default_length;\n\t\t}\n\t\tif (entry.write === BoxParser.SampleGroupEntry.prototype.write) {\n\t\t\tLog.info(\"BoxParser\", \"SampleGroup for type \"+this.grouping_type+\" writing not yet implemented, keeping unparsed data in memory for later write\");\n\t\t\t// storing data\n\t\t\tentry.data = stream.readUint8Array(entry.description_length);\n\t\t\t// rewinding\n\t\t\tstream.position -= entry.description_length;\n\t\t}\n\t\tentry.parse(stream);\n\t}\n});\n\n// file:src/parsing/sidx.js\nBoxParser.createFullBoxCtor(\"sidx\", \"CompressedSegmentIndexBox\", function(stream) {\n\tthis.reference_ID = stream.readUint32();\n\tthis.timescale = stream.readUint32();\n\tif (this.version === 0) {\n\t\tthis.earliest_presentation_time = stream.readUint32();\n\t\tthis.first_offset = stream.readUint32();\n\t} else {\n\t\tthis.earliest_presentation_time = stream.readUint64();\n\t\tthis.first_offset = stream.readUint64();\n\t}\n\tstream.readUint16();\n\tthis.references = [];\n\tvar count = stream.readUint16();\n\tfor (var i = 0; i < count; i++) {\n\t\tvar ref = {};\n\t\tthis.references.push(ref);\n\t\tvar tmp_32 = stream.readUint32();\n\t\tref.reference_type = (tmp_32 >> 31) & 0x1;\n\t\tref.referenced_size = tmp_32 & 0x7FFFFFFF;\n\t\tref.subsegment_duration = stream.readUint32();\n\t\ttmp_32 = stream.readUint32();\n\t\tref.starts_with_SAP = (tmp_32 >> 31) & 0x1;\n\t\tref.SAP_type = (tmp_32 >> 28) & 0x7;\n\t\tref.SAP_delta_time = tmp_32 & 0xFFFFFFF;\n\t}\n});\n\n// file:src/parsing/singleitemtypereference.js\nBoxParser.SingleItemTypeReferenceBox = function(type, size, hdr_size, start) {\n\tBoxParser.Box.call(this, type, size);\n\tthis.hdr_size = hdr_size;\n\tthis.start = start;\n}\nBoxParser.SingleItemTypeReferenceBox.prototype = new BoxParser.Box();\nBoxParser.SingleItemTypeReferenceBox.prototype.parse = function(stream) {\n\tthis.from_item_ID = stream.readUint16();\n\tvar count = stream.readUint16();\n\tthis.references = [];\n\tfor(var i = 0; i < count; i++) {\n\t\tthis.references[i] = {};\n\t\tthis.references[i].to_item_ID = stream.readUint16();\n\t}\n}\n\n// file:src/parsing/singleitemtypereferencelarge.js\nBoxParser.SingleItemTypeReferenceBoxLarge = function(type, size, hdr_size, start) {\n\tBoxParser.Box.call(this, type, size);\n\tthis.hdr_size = hdr_size;\n\tthis.start = start;\n}\nBoxParser.SingleItemTypeReferenceBoxLarge.prototype = new BoxParser.Box();\nBoxParser.SingleItemTypeReferenceBoxLarge.prototype.parse = function(stream) {\n\tthis.from_item_ID = stream.readUint32();\n\tvar count = stream.readUint16();\n\tthis.references = [];\n\tfor(var i = 0; i < count; i++) {\n\t\tthis.references[i] = {};\n\t\tthis.references[i].to_item_ID = stream.readUint32();\n\t}\n}\n\n// file:src/parsing/SmDm.js\nBoxParser.createFullBoxCtor(\"SmDm\", \"SMPTE2086MasteringDisplayMetadataBox\", function(stream) {\n\tthis.primaryRChromaticity_x = stream.readUint16();\n this.primaryRChromaticity_y = stream.readUint16();\n this.primaryGChromaticity_x = stream.readUint16();\n this.primaryGChromaticity_y = stream.readUint16();\n this.primaryBChromaticity_x = stream.readUint16();\n this.primaryBChromaticity_y = stream.readUint16();\n this.whitePointChromaticity_x = stream.readUint16();\n this.whitePointChromaticity_y = stream.readUint16();\n this.luminanceMax = stream.readUint32();\n this.luminanceMin = stream.readUint32();\n});\n\n// file:src/parsing/smhd.js\nBoxParser.createFullBoxCtor(\"smhd\", \"SoundMediaHeaderBox\", function(stream) {\n\tthis.balance = stream.readUint16();\n\tstream.readUint16();\n});\n\n// file:src/parsing/ssix.js\nBoxParser.createFullBoxCtor(\"ssix\", \"CompressedSubsegmentIndexBox\", function(stream) {\n\tthis.subsegments = [];\n\tvar subsegment_count = stream.readUint32();\n\tfor (var i = 0; i < subsegment_count; i++) {\n\t\tvar subsegment = {};\n\t\tthis.subsegments.push(subsegment);\n\t\tsubsegment.ranges = [];\n\t\tvar range_count = stream.readUint32();\n\t\tfor (var j = 0; j < range_count; j++) {\n\t\t\tvar range = {};\n\t\t\tsubsegment.ranges.push(range);\n\t\t\trange.level = stream.readUint8();\n\t\t\trange.range_size = stream.readUint24();\n\t\t}\n\t}\n});\n\n// file:src/parsing/stco.js\nBoxParser.createFullBoxCtor(\"stco\", \"ChunkOffsetBox\", function(stream) {\n\tvar entry_count;\n\tentry_count = stream.readUint32();\n\tthis.chunk_offsets = [];\n\tif (this.version === 0) {\n\t\tfor (var i = 0; i < entry_count; i++) {\n\t\t\tthis.chunk_offsets.push(stream.readUint32());\n\t\t}\n\t}\n});\n\n// file:src/parsing/stdp.js\nBoxParser.createFullBoxCtor(\"stdp\", \"DegradationPriorityBox\", function(stream) {\n\tvar count = (this.size - this.hdr_size)/2;\n\tthis.priority = [];\n\tfor (var i = 0; i < count; i++) {\n\t\tthis.priority[i] = stream.readUint16();\n\t}\n});\n\n// file:src/parsing/sthd.js\nBoxParser.createFullBoxCtor(\"sthd\", \"SubtitleMediaHeaderBox\");\n\n// file:src/parsing/stri.js\nBoxParser.createFullBoxCtor(\"stri\", \"SubTrackInformationBox\", function(stream) {\n\tthis.switch_group = stream.readUint16();\n\tthis.alternate_group = stream.readUint16();\n\tthis.sub_track_id = stream.readUint32();\n\tvar count = (this.size - this.hdr_size - 8)/4;\n\tthis.attribute_list = [];\n\tfor (var i = 0; i < count; i++) {\n\t\tthis.attribute_list[i] = stream.readUint32();\n\t}\n});\n\n// file:src/parsing/stsc.js\nBoxParser.createFullBoxCtor(\"stsc\", \"SampleToChunkBox\", function(stream) {\n\tvar entry_count;\n\tvar i;\n\tentry_count = stream.readUint32();\n\tthis.first_chunk = [];\n\tthis.samples_per_chunk = [];\n\tthis.sample_description_index = [];\n\tif (this.version === 0) {\n\t\tfor(i=0; i<entry_count; i++) {\n\t\t\tthis.first_chunk.push(stream.readUint32());\n\t\t\tthis.samples_per_chunk.push(stream.readUint32());\n\t\t\tthis.sample_description_index.push(stream.readUint32());\n\t\t}\n\t}\n});\n\n// file:src/parsing/stsd.js\nBoxParser.createFullBoxCtor(\"stsd\", \"SampleDescriptionBox\", function(stream) {\n\tvar i;\n\tvar ret;\n\tvar entryCount;\n\tvar box;\n\tthis.entries = [];\n\tentryCount = stream.readUint32();\n\tfor (i = 1; i <= entryCount; i++) {\n\t\tret = BoxParser.parseOneBox(stream, true, this.size - (stream.getPosition() - this.start));\n\t\tif (ret.code === BoxParser.OK) {\n\t\t\tif (BoxParser[ret.type+\"SampleEntry\"]) {\n\t\t\t\tbox = new BoxParser[ret.type+\"SampleEntry\"](ret.size);\n\t\t\t\tbox.hdr_size = ret.hdr_size;\n\t\t\t\tbox.start = ret.start;\n\t\t\t} else {\n\t\t\t\tLog.warn(\"BoxParser\", \"Unknown sample entry type: \"+ret.type);\n\t\t\t\tbox = new BoxParser.SampleEntry(ret.type, ret.size, ret.hdr_size, ret.start);\n\t\t\t}\n\t\t\tif (box.write === BoxParser.SampleEntry.prototype.write) {\n\t\t\t\tLog.info(\"BoxParser\", \"SampleEntry \"+box.type+\" box writing not yet implemented, keeping unparsed data in memory for later write\");\n\t\t\t\tbox.parseDataAndRewind(stream);\n\t\t\t}\n\t\t\tbox.parse(stream);\n\t\t\tthis.entries.push(box);\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\t}\n});\n\n// file:src/parsing/stsg.js\nBoxParser.createFullBoxCtor(\"stsg\", \"SubTrackSampleGroupBox\", function(stream) {\n\tthis.grouping_type = stream.readUint32();\n\tvar count = stream.readUint16();\n\tthis.group_description_index = [];\n\tfor (var i = 0; i < count; i++) {\n\t\tthis.group_description_index[i] = stream.readUint32();\n\t}\n});\n\n// file:src/parsing/stsh.js\nBoxParser.createFullBoxCtor(\"stsh\", \"ShadowSyncSampleBox\", function(stream) {\n\tvar entry_count;\n\tvar i;\n\tentry_count = stream.readUint32();\n\tthis.shadowed_sample_numbers = [];\n\tthis.sync_sample_numbers = [];\n\tif (this.version === 0) {\n\t\tfor(i=0; i<entry_count; i++) {\n\t\t\tthis.shadowed_sample_numbers.push(stream.readUint32());\n\t\t\tthis.sync_sample_numbers.push(stream.readUint32());\n\t\t}\n\t}\n});\n\n// file:src/parsing/stss.js\nBoxParser.createFullBoxCtor(\"stss\", \"SyncSampleBox\", function(stream) {\n\tvar i;\n\tvar entry_count;\n\tentry_count = stream.readUint32();\n\tif (this.version === 0) {\n\t\tthis.sample_numbers = [];\n\t\tfor(i=0; i<entry_count; i++) {\n\t\t\tthis.sample_numbers.push(stream.readUint32());\n\t\t}\n\t}\n});\n\n// file:src/parsing/stsz.js\nBoxParser.createFullBoxCtor(\"stsz\", \"SampleSizeBox\", function(stream) {\n\tvar i;\n\tthis.sample_sizes = [];\n\tif (this.version === 0) {\n\t\tthis.sample_size = stream.readUint32();\n\t\tthis.sample_count = stream.readUint32();\n\t\tfor (i = 0; i < this.sample_count; i++) {\n\t\t\tif (this.sample_size === 0) {\n\t\t\t\tthis.sample_sizes.push(stream.readUint32());\n\t\t\t} else {\n\t\t\t\tthis.sample_sizes[i] = this.sample_size;\n\t\t\t}\n\t\t}\n\t}\n});\n\n// file:src/parsing/stts.js\nBoxParser.createFullBoxCtor(\"stts\", \"TimeToSampleBox\", function(stream) {\n\tvar entry_count;\n\tvar i;\n\tvar delta;\n\tentry_count = stream.readUint32();\n\tthis.sample_counts = [];\n\tthis.sample_deltas = [];\n\tif (this.version === 0) {\n\t\tfor(i=0; i<entry_count; i++) {\n\t\t\tthis.sample_counts.push(stream.readUint32());\n\t\t\tdelta = stream.readInt32();\n\t\t\tif (delta < 0) {\n\t\t\t\tLog.warn(\"BoxParser\", \"File uses negative stts sample delta, using value 1 instead, sync may be lost!\");\n\t\t\t\tdelta = 1;\n\t\t\t}\n\t\t\tthis.sample_deltas.push(delta);\n\t\t}\n\t}\n});\n\n// file:src/parsing/stvi.js\nBoxParser.createFullBoxCtor(\"stvi\", \"StereoVideoBox\", function(stream) {\n\tvar tmp32 = stream.readUint32();\n\tthis.single_view_allowed = tmp32 & 0x3;\n\tthis.stereo_scheme = stream.readUint32();\n\tvar length = stream.readUint32();\n\tthis.stereo_indication_type = stream.readString(length);\n\tvar ret;\n\tvar box;\n\tthis.boxes = [];\n\twhile (stream.getPosition() < this.start+this.size) {\n\t\tret = BoxParser.parseOneBox(stream, false, this.size - (stream.getPosition() - this.start));\n\t\tif (ret.code === BoxParser.OK) {\n\t\t\tbox = ret.box;\n\t\t\tthis.boxes.push(box);\n\t\t\tthis[box.type] = box;\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\t}\n});\n\n// file:src/parsing/styp.js\nBoxParser.createBoxCtor(\"styp\", \"SegmentTypeBox\", function(stream) {\n\tBoxParser.ftypBox.prototype.parse.call(this, stream);\n});\n\n// file:src/parsing/stz2.js\nBoxParser.createFullBoxCtor(\"stz2\", \"CompactSampleSizeBox\", function(stream) {\n\tvar i;\n\tvar sample_size;\n\tvar sample_count;\n\tthis.sample_sizes = [];\n\tif (this.version === 0) {\n\t\tthis.reserved = stream.readUint24();\n\t\tthis.field_size = stream.readUint8();\n\t\tsample_count = stream.readUint32();\n\t\tif (this.field_size === 4) {\n\t\t\tfor (i = 0; i < sample_count; i+=2) {\n\t\t\t\tvar tmp = stream.readUint8();\n\t\t\t\tthis.sample_sizes[i] = (tmp >> 4) & 0xF;\n\t\t\t\tthis.sample_sizes[i+1] = tmp & 0xF;\n\t\t\t}\n\t\t} else if (this.field_size === 8) {\n\t\t\tfor (i = 0; i < sample_count; i++) {\n\t\t\t\tthis.sample_sizes[i] = stream.readUint8();\n\t\t\t}\n\t\t} else if (this.field_size === 16) {\n\t\t\tfor (i = 0; i < sample_count; i++) {\n\t\t\t\tthis.sample_sizes[i] = stream.readUint16();\n\t\t\t}\n\t\t} else {\n\t\t\tLog.error(\"BoxParser\", \"Error in length field in stz2 box\");\n\t\t}\n\t}\n});\n\n// file:src/parsing/subs.js\nBoxParser.createFullBoxCtor(\"subs\", \"SubSampleInformationBox\", function(stream) {\n\tvar i,j;\n\tvar entry_count;\n\tvar subsample_count;\n\tentry_count = stream.readUint32();\n\tthis.entries = [];\n\tfor (i = 0; i < entry_count; i++) {\n\t\tvar sampleInfo = {};\n\t\tthis.entries[i] = sampleInfo;\n\t\tsampleInfo.sample_delta = stream.readUint32();\n\t\tsampleInfo.subsamples = [];\n\t\tsubsample_count = stream.readUint16();\n\t\tif (subsample_count>0) {\n\t\t\tfor (j = 0; j < subsample_count; j++) {\n\t\t\t\tvar subsample = {};\n\t\t\t\tsampleInfo.subsamples.push(subsample);\n\t\t\t\tif (this.version == 1) {\n\t\t\t\t\tsubsample.size = stream.readUint32();\n\t\t\t\t} else {\n\t\t\t\t\tsubsample.size = stream.readUint16();\n\t\t\t\t}\n\t\t\t\tsubsample.priority = stream.readUint8();\n\t\t\t\tsubsample.discardable = stream.readUint8();\n\t\t\t\tsubsample.codec_specific_parameters = stream.readUint32();\n\t\t\t}\n\t\t}\n\t}\n});\n\n// file:src/parsing/tenc.js\nBoxParser.createFullBoxCtor(\"tenc\", \"TrackEncryptionBox\", function(stream) {\n\tstream.readUint8(); // reserved\n\tif (this.version === 0) {\n\t\tstream.readUint8();\n\t} else {\n\t\tvar tmp = stream.readUint8();\n\t\tthis.default_crypt_byte_block = (tmp >> 4) & 0xF;\n\t\tthis.default_skip_byte_block = tmp & 0xF;\n\t}\n\tthis.default_isProtected = stream.readUint8();\n\tthis.default_Per_Sample_IV_Size = stream.readUint8();\n\tthis.default_KID = BoxParser.parseHex16(stream);\n\tif (this.default_isProtected === 1 && this.default_Per_Sample_IV_Size === 0) {\n\t\tthis.default_constant_IV_size = stream.readUint8();\n\t\tthis.default_constant_IV = stream.readUint8Array(this.default_constant_IV_size);\n\t}\n});// file:src/parsing/tfdt.js\nBoxParser.createFullBoxCtor(\"tfdt\", \"TrackFragmentBaseMediaDecodeTimeBox\", function(stream) {\n\tif (this.version == 1) {\n\t\tthis.baseMediaDecodeTime = stream.readUint64();\n\t} else {\n\t\tthis.baseMediaDecodeTime = stream.readUint32();\n\t}\n});\n\n// file:src/parsing/tfhd.js\nBoxParser.createFullBoxCtor(\"tfhd\", \"TrackFragmentHeaderBox\", function(stream) {\n\tvar readBytes = 0;\n\tthis.track_id = stream.readUint32();\n\tif (this.size - this.hdr_size > readBytes && (this.flags & BoxParser.TFHD_FLAG_BASE_DATA_OFFSET)) {\n\t\tthis.base_data_offset = stream.readUint64();\n\t\treadBytes += 8;\n\t} else {\n\t\tthis.base_data_offset = 0;\n\t}\n\tif (this.size - this.hdr_size > readBytes && (this.flags & BoxParser.TFHD_FLAG_SAMPLE_DESC)) {\n\t\tthis.default_sample_description_index = stream.readUint32();\n\t\treadBytes += 4;\n\t} else {\n\t\tthis.default_sample_description_index = 0;\n\t}\n\tif (this.size - this.hdr_size > readBytes && (this.flags & BoxParser.TFHD_FLAG_SAMPLE_DUR)) {\n\t\tthis.default_sample_duration = stream.readUint32();\n\t\treadBytes += 4;\n\t} else {\n\t\tthis.default_sample_duration = 0;\n\t}\n\tif (this.size - this.hdr_size > readBytes && (this.flags & BoxParser.TFHD_FLAG_SAMPLE_SIZE)) {\n\t\tthis.default_sample_size = stream.readUint32();\n\t\treadBytes += 4;\n\t} else {\n\t\tthis.default_sample_size = 0;\n\t}\n\tif (this.size - this.hdr_size > readBytes && (this.flags & BoxParser.TFHD_FLAG_SAMPLE_FLAGS)) {\n\t\tthis.default_sample_flags = stream.readUint32();\n\t\treadBytes += 4;\n\t} else {\n\t\tthis.default_sample_flags = 0;\n\t}\n});\n\n// file:src/parsing/tfra.js\nBoxParser.createFullBoxCtor(\"tfra\", \"TrackFragmentRandomAccessBox\", function(stream) {\n\tthis.track_ID = stream.readUint32();\n\tstream.readUint24();\n\tvar tmp_byte = stream.readUint8();\n\tthis.length_size_of_traf_num = (tmp_byte >> 4) & 0x3;\n\tthis.length_size_of_trun_num = (tmp_byte >> 2) & 0x3;\n\tthis.length_size_of_sample_num = (tmp_byte) & 0x3;\n\tthis.entries = [];\n\tvar number_of_entries = stream.readUint32();\n\tfor (var i = 0; i < number_of_entries; i++) {\n\t\tif (this.version === 1) {\n\t\t\tthis.time = stream.readUint64();\n\t\t\tthis.moof_offset = stream.readUint64();\n\t\t} else {\n\t\t\tthis.time = stream.readUint32();\n\t\t\tthis.moof_offset = stream.readUint32();\n\t\t}\n\t\tthis.traf_number = stream[\"readUint\"+(8*(this.length_size_of_traf_num+1))]();\n\t\tthis.trun_number = stream[\"readUint\"+(8*(this.length_size_of_trun_num+1))]();\n\t\tthis.sample_number = stream[\"readUint\"+(8*(this.length_size_of_sample_num+1))]();\n\t}\n});\n\n// file:src/parsing/tkhd.js\nBoxParser.createFullBoxCtor(\"tkhd\", \"TrackHeaderBox\", function(stream) {\n\tif (this.version == 1) {\n\t\tthis.creation_time = stream.readUint64();\n\t\tthis.modification_time = stream.readUint64();\n\t\tthis.track_id = stream.readUint32();\n\t\tstream.readUint32();\n\t\tthis.duration = stream.readUint64();\n\t} else {\n\t\tthis.creation_time = stream.readUint32();\n\t\tthis.modification_time = stream.readUint32();\n\t\tthis.track_id = stream.readUint32();\n\t\tstream.readUint32();\n\t\tthis.duration = stream.readUint32();\n\t}\n\tstream.readUint32Array(2);\n\tthis.layer = stream.readInt16();\n\tthis.alternate_group = stream.readInt16();\n\tthis.volume = stream.readInt16()>>8;\n\tstream.readUint16();\n\tthis.matrix = stream.readInt32Array(9);\n\tthis.width = stream.readUint32();\n\tthis.height = stream.readUint32();\n});\n\n// file:src/parsing/tmax.js\nBoxParser.createBoxCtor(\"tmax\", \"hintmaxrelativetime\", function(stream) {\n\tthis.time = stream.readUint32();\n});\n\n// file:src/parsing/tmin.js\nBoxParser.createBoxCtor(\"tmin\", \"hintminrelativetime\", function(stream) {\n\tthis.time = stream.readUint32();\n});\n\n// file:src/parsing/totl.js\nBoxParser.createBoxCtor(\"totl\", \"hintBytesSent\", function(stream) {\n\tthis.bytessent = stream.readUint32();\n});\n\n// file:src/parsing/tpay.js\nBoxParser.createBoxCtor(\"tpay\", \"hintBytesSent\", function(stream) {\n\tthis.bytessent = stream.readUint32();\n});\n\n// file:src/parsing/tpyl.js\nBoxParser.createBoxCtor(\"tpyl\", \"hintBytesSent\", function(stream) {\n\tthis.bytessent = stream.readUint64();\n});\n\n// file:src/parsing/TrackGroup.js\nBoxParser.TrackGroupTypeBox.prototype.parse = function(stream) {\n\tthis.parseFullHeader(stream);\n\tthis.track_group_id = stream.readUint32();\n}\n\n// file:src/parsing/trackgroups/msrc.js\nBoxParser.createTrackGroupCtor(\"msrc\");// file:src/parsing/TrakReference.js\nBoxParser.TrackReferenceTypeBox = function(type, size, hdr_size, start) {\n\tBoxParser.Box.call(this, type, size);\n\tthis.hdr_size = hdr_size;\n\tthis.start = start;\n}\nBoxParser.TrackReferenceTypeBox.prototype = new BoxParser.Box();\nBoxParser.TrackReferenceTypeBox.prototype.parse = function(stream) {\n\tthis.track_ids = stream.readUint32Array((this.size-this.hdr_size)/4);\n}\n\n// file:src/parsing/tref.js\nBoxParser.trefBox.prototype.parse = function(stream) {\n\tvar ret;\n\tvar box;\n\twhile (stream.getPosition() < this.start+this.size) {\n\t\tret = BoxParser.parseOneBox(stream, true, this.size - (stream.getPosition() - this.start));\n\t\tif (ret.code === BoxParser.OK) {\n\t\t\tbox = new BoxParser.TrackReferenceTypeBox(ret.type, ret.size, ret.hdr_size, ret.start);\n\t\t\tif (box.write === BoxParser.Box.prototype.write && box.type !== \"mdat\") {\n\t\t\t\tLog.info(\"BoxParser\", \"TrackReference \"+box.type+\" box writing not yet implemented, keeping unparsed data in memory for later write\");\n\t\t\t\tbox.parseDataAndRewind(stream);\n\t\t\t}\n\t\t\tbox.parse(stream);\n\t\t\tthis.boxes.push(box);\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\t}\n}\n\n// file:src/parsing/trep.js\nBoxParser.createFullBoxCtor(\"trep\", \"TrackExtensionPropertiesBox\", function(stream) {\n\tthis.track_ID = stream.readUint32();\n\tthis.boxes = [];\n\twhile (stream.getPosition() < this.start+this.size) {\n\t\tret = BoxParser.parseOneBox(stream, false, this.size - (stream.getPosition() - this.start));\n\t\tif (ret.code === BoxParser.OK) {\n\t\t\tbox = ret.box;\n\t\t\tthis.boxes.push(box);\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\t}\n});\n\n// file:src/parsing/trex.js\nBoxParser.createFullBoxCtor(\"trex\", \"TrackExtendsBox\", function(stream) {\n\tthis.track_id = stream.readUint32();\n\tthis.default_sample_description_index = stream.readUint32();\n\tthis.default_sample_duration = stream.readUint32();\n\tthis.default_sample_size = stream.readUint32();\n\tthis.default_sample_flags = stream.readUint32();\n});\n\n// file:src/parsing/trpy.js\nBoxParser.createBoxCtor(\"trpy\", \"hintBytesSent\", function(stream) {\n\tthis.bytessent = stream.readUint64();\n});\n\n// file:src/parsing/trun.js\nBoxParser.createFullBoxCtor(\"trun\", \"TrackRunBox\", function(stream) {\n\tvar readBytes = 0;\n\tthis.sample_count = stream.readUint32();\n\treadBytes+= 4;\n\tif (this.size - this.hdr_size > readBytes && (this.flags & BoxParser.TRUN_FLAGS_DATA_OFFSET) ) {\n\t\tthis.data_offset = stream.readInt32(); //signed\n\t\treadBytes += 4;\n\t} else {\n\t\tthis.data_offset = 0;\n\t}\n\tif (this.size - this.hdr_size > readBytes && (this.flags & BoxParser.TRUN_FLAGS_FIRST_FLAG) ) {\n\t\tthis.first_sample_flags = stream.readUint32();\n\t\treadBytes += 4;\n\t} else {\n\t\tthis.first_sample_flags = 0;\n\t}\n\tthis.sample_duration = [];\n\tthis.sample_size = [];\n\tthis.sample_flags = [];\n\tthis.sample_composition_time_offset = [];\n\tif (this.size - this.hdr_size > readBytes) {\n\t\tfor (var i = 0; i < this.sample_count; i++) {\n\t\t\tif (this.flags & BoxParser.TRUN_FLAGS_DURATION) {\n\t\t\t\tthis.sample_duration[i] = stream.readUint32();\n\t\t\t}\n\t\t\tif (this.flags & BoxParser.TRUN_FLAGS_SIZE) {\n\t\t\t\tthis.sample_size[i] = stream.readUint32();\n\t\t\t}\n\t\t\tif (this.flags & BoxParser.TRUN_FLAGS_FLAGS) {\n\t\t\t\tthis.sample_flags[i] = stream.readUint32();\n\t\t\t}\n\t\t\tif (this.flags & BoxParser.TRUN_FLAGS_CTS_OFFSET) {\n\t\t\t\tif (this.version === 0) {\n\t\t\t\t\tthis.sample_composition_time_offset[i] = stream.readUint32();\n\t\t\t\t} else {\n\t\t\t\t\tthis.sample_composition_time_offset[i] = stream.readInt32(); //signed\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n});\n\n// file:src/parsing/tsel.js\nBoxParser.createFullBoxCtor(\"tsel\", \"TrackSelectionBox\", function(stream) {\n\tthis.switch_group = stream.readUint32();\n\tvar count = (this.size - this.hdr_size - 4)/4;\n\tthis.attribute_list = [];\n\tfor (var i = 0; i < count; i++) {\n\t\tthis.attribute_list[i] = stream.readUint32();\n\t}\n});\n\n// file:src/parsing/txtC.js\nBoxParser.createFullBoxCtor(\"txtC\", \"TextConfigBox\", function(stream) {\n\tthis.config = stream.readCString();\n});\n\n// file:src/parsing/tyco.js\nBoxParser.createBoxCtor(\"tyco\", \"TypeCombinationBox\", function(stream) {\n\tvar count = (this.size - this.hdr_size) / 4;\n\tthis.compatible_brands = [];\n\tfor (var i = 0; i < count; i++) {\n\t\tthis.compatible_brands[i] = stream.readString(4);\n\t}\n});\n\n// file:src/parsing/udes.js\nBoxParser.createFullBoxCtor(\"udes\", \"UserDescriptionProperty\", function(stream) {\n\tthis.lang = stream.readCString();\n\tthis.name = stream.readCString();\n\tthis.description = stream.readCString();\n\tthis.tags = stream.readCString();\n});\n\n// file:src/parsing/uncC.js\nBoxParser.createFullBoxCtor(\"uncC\", \"UncompressedFrameConfigBox\", function(stream) {\n var i;\n this.profile = stream.readString(4);\n if (this.version == 1) {\n // Nothing - just the profile\n } else if (this.version == 0) {\n this.component_count = stream.readUint32();\n this.component_index = [];\n this.component_bit_depth_minus_one = [];\n this.component_format = [];\n this.component_align_size = [];\n for (i = 0; i < this.component_count; i++) {\n this.component_index.push(stream.readUint16());\n this.component_bit_depth_minus_one.push(stream.readUint8());\n this.component_format.push(stream.readUint8());\n this.component_align_size.push(stream.readUint8());\n }\n this.sampling_type = stream.readUint8();\n this.interleave_type = stream.readUint8();\n this.block_size = stream.readUint8();\n var flags = stream.readUint8();\n this.component_little_endian = (flags >> 7) & 0x1;\n this.block_pad_lsb = (flags >> 6) & 0x1;\n this.block_little_endian = (flags >> 5) & 0x1;\n this.block_reversed = (flags >> 4) & 0x1;\n this.pad_unknown = (flags >> 3) & 0x1;\n this.pixel_size = stream.readUint32();\n this.row_align_size = stream.readUint32();\n this.tile_align_size = stream.readUint32();\n this.num_tile_cols_minus_one = stream.readUint32();\n this.num_tile_rows_minus_one = stream.readUint32();\n }\n});\n\n// file:src/parsing/url.js\nBoxParser.createFullBoxCtor(\"url \", \"DataEntryUrlBox\", function(stream) {\n\tif (this.flags !== 0x000001) {\n\t\tthis.location = stream.readCString();\n\t}\n});\n\n// file:src/parsing/urn.js\nBoxParser.createFullBoxCtor(\"urn \", \"DataEntryUrnBox\", function(stream) {\n\tthis.name = stream.readCString();\n\tif (this.size - this.hdr_size - this.name.length - 1 > 0) {\n\t\tthis.location = stream.readCString();\n\t}\n});\n\n// file:src/parsing/uuid/piff/piffLsm.js\nBoxParser.createUUIDBox(\"a5d40b30e81411ddba2f0800200c9a66\", \"LiveServerManifestBox\", true, false, function(stream) {\n this.LiveServerManifest = stream.readString(this.size - this.hdr_size)\n .replace(/&/g, \"&amp;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\")\n .replace(/\"/g, \"&quot;\")\n .replace(/'/g, \"&#039;\");\n});// file:src/parsing/uuid/piff/piffPssh.js\nBoxParser.createUUIDBox(\"d08a4f1810f34a82b6c832d8aba183d3\", \"PiffProtectionSystemSpecificHeaderBox\", true, false, function(stream) {\n\tthis.system_id = BoxParser.parseHex16(stream);\n\tvar datasize = stream.readUint32();\n\tif (datasize > 0) {\n\t\tthis.data = stream.readUint8Array(datasize);\n\t}\n});\n\n// file:src/parsing/uuid/piff/piffSenc.js\nBoxParser.createUUIDBox(\"a2394f525a9b4f14a2446c427c648df4\", \"PiffSampleEncryptionBox\", true, false /*, function(stream) {\n\tif (this.flags & 0x1) {\n\t\tthis.AlgorithmID = stream.readUint24();\n\t\tthis.IV_size = stream.readUint8();\n\t\tthis.KID = BoxParser.parseHex16(stream);\n\t}\n\tvar sample_count = stream.readUint32();\n\tthis.samples = [];\n\tfor (var i = 0; i < sample_count; i++) {\n\t\tvar sample = {};\n\t\tsample.InitializationVector = this.readUint8Array(this.IV_size*8);\n\t\tif (this.flags & 0x2) {\n\t\t\tsample.subsamples = [];\n\t\t\tsample.NumberOfEntries = stream.readUint16();\n\t\t\tfor (var j = 0; j < sample.NumberOfEntries; j++) {\n\t\t\t\tvar subsample = {};\n\t\t\t\tsubsample.BytesOfClearData = stream.readUint16();\n\t\t\t\tsubsample.BytesOfProtectedData = stream.readUint32();\n\t\t\t\tsample.subsamples.push(subsample);\n\t\t\t}\n\t\t}\n\t\tthis.samples.push(sample);\n\t}\n}*/);\n// file:src/parsing/uuid/piff/piffTenc.js\nBoxParser.createUUIDBox(\"8974dbce7be74c5184f97148f9882554\", \"PiffTrackEncryptionBox\", true, false, function(stream) {\n\tthis.default_AlgorithmID = stream.readUint24();\n\tthis.default_IV_size = stream.readUint8();\n\tthis.default_KID = BoxParser.parseHex16(stream);\n});// file:src/parsing/uuid/piff/piffTfrf.js\nBoxParser.createUUIDBox(\"d4807ef2ca3946958e5426cb9e46a79f\", \"TfrfBox\", true, false, function(stream) {\n this.fragment_count = stream.readUint8();\n this.entries = [];\n\n for (var i = 0; i < this.fragment_count; i++) {\n var entry = {};\n var absolute_time = 0;\n var absolute_duration = 0;\n\n if (this.version === 1) {\n absolute_time = stream.readUint64();\n absolute_duration = stream.readUint64();\n } else {\n absolute_time = stream.readUint32();\n absolute_duration = stream.readUint32();\n }\n\n entry.absolute_time = absolute_time;\n entry.absolute_duration = absolute_duration;\n\n this.entries.push(entry);\n }\n});// file:src/parsing/uuid/piff/piffTfxd.js\nBoxParser.createUUIDBox(\"6d1d9b0542d544e680e2141daff757b2\", \"TfxdBox\", true, false, function(stream) {\n if (this.version === 1) {\n this.absolute_time = stream.readUint64();\n this.duration = stream.readUint64();\n } else {\n this.absolute_time = stream.readUint32();\n this.duration = stream.readUint32();\n }\n});// file:src/parsing/vmhd.js\nBoxParser.createFullBoxCtor(\"vmhd\", \"VideoMediaHeaderBox\", function(stream) {\n\tthis.graphicsmode = stream.readUint16();\n\tthis.opcolor = stream.readUint16Array(3);\n});\n\n// file:src/parsing/vpcC.js\nBoxParser.createFullBoxCtor(\"vpcC\", \"VPCodecConfigurationRecord\", function (stream) {\n\tvar tmp;\n\tif (this.version === 1) {\n\t\tthis.profile = stream.readUint8();\n\t\tthis.level = stream.readUint8();\n\t\ttmp = stream.readUint8();\n\t\tthis.bitDepth = tmp >> 4;\n\t\tthis.chromaSubsampling = (tmp >> 1) & 0x7;\n\t\tthis.videoFullRangeFlag = tmp & 0x1;\n\t\tthis.colourPrimaries = stream.readUint8();\n\t\tthis.transferCharacteristics = stream.readUint8();\n\t\tthis.matrixCoefficients = stream.readUint8();\n\t\tthis.codecIntializationDataSize = stream.readUint16();\n\t\tthis.codecIntializationData = stream.readUint8Array(this.codecIntializationDataSize);\n\t} else {\n\t\tthis.profile = stream.readUint8();\n\t\tthis.level = stream.readUint8();\n\t\ttmp = stream.readUint8();\n\t\tthis.bitDepth = (tmp >> 4) & 0xF;\n\t\tthis.colorSpace = tmp & 0xF;\n\t\ttmp = stream.readUint8();\n\t\tthis.chromaSubsampling = (tmp >> 4) & 0xF;\n\t\tthis.transferFunction = (tmp >> 1) & 0x7;\n\t\tthis.videoFullRangeFlag = tmp & 0x1;\n\t\tthis.codecIntializationDataSize = stream.readUint16();\n\t\tthis.codecIntializationData = stream.readUint8Array(this.codecIntializationDataSize);\n\t}\n});// file:src/parsing/vttC.js\nBoxParser.createBoxCtor(\"vttC\", \"WebVTTConfigurationBox\", function(stream) {\n\tthis.text = stream.readString(this.size - this.hdr_size);\n});\n\n// file:src/parsing/vvcC.js\nBoxParser.createFullBoxCtor(\"vvcC\", \"VvcConfigurationBox\", function (stream) {\n var i, j;\n\n // helper object to simplify extracting individual bits\n var bitReader = {\n held_bits: undefined,\n num_held_bits: 0,\n\n stream_read_1_bytes: function (strm) {\n this.held_bits = strm.readUint8();\n this.num_held_bits = 1 * 8;\n },\n stream_read_2_bytes: function (strm) {\n this.held_bits = strm.readUint16();\n this.num_held_bits = 2 * 8;\n },\n\n extract_bits: function (num_bits) {\n var ret = (this.held_bits >> (this.num_held_bits - num_bits)) & ((1 << num_bits) - 1);\n this.num_held_bits -= num_bits;\n return ret;\n }\n };\n\n // VvcDecoderConfigurationRecord\n bitReader.stream_read_1_bytes(stream);\n bitReader.extract_bits(5); // reserved\n this.lengthSizeMinusOne = bitReader.extract_bits(2);\n this.ptl_present_flag = bitReader.extract_bits(1);\n\n if (this.ptl_present_flag) {\n bitReader.stream_read_2_bytes(stream);\n this.ols_idx = bitReader.extract_bits(9);\n this.num_sublayers = bitReader.extract_bits(3);\n this.constant_frame_rate = bitReader.extract_bits(2);\n this.chroma_format_idc = bitReader.extract_bits(2);\n\n bitReader.stream_read_1_bytes(stream);\n this.bit_depth_minus8 = bitReader.extract_bits(3);\n bitReader.extract_bits(5); // reserved\n\n // VvcPTLRecord\n {\n bitReader.stream_read_2_bytes(stream);\n bitReader.extract_bits(2); // reserved\n this.num_bytes_constraint_info = bitReader.extract_bits(6);\n this.general_profile_idc = bitReader.extract_bits(7);\n this.general_tier_flag = bitReader.extract_bits(1);\n\n this.general_level_idc = stream.readUint8();\n\n bitReader.stream_read_1_bytes(stream);\n this.ptl_frame_only_constraint_flag = bitReader.extract_bits(1);\n this.ptl_multilayer_enabled_flag = bitReader.extract_bits(1);\n\n this.general_constraint_info = new Uint8Array(this.num_bytes_constraint_info);\n if (this.num_bytes_constraint_info) {\n for (i = 0; i < this.num_bytes_constraint_info - 1; i++) {\n var cnstr1 = bitReader.extract_bits(6);\n bitReader.stream_read_1_bytes(stream);\n var cnstr2 = bitReader.extract_bits(2);\n\n this.general_constraint_info[i] = ((cnstr1 << 2) | cnstr2);\n }\n this.general_constraint_info[this.num_bytes_constraint_info - 1] = bitReader.extract_bits(6);\n } else {\n //forbidden in spec!\n bitReader.extract_bits(6);\n }\n\n if (this.num_sublayers > 1) {\n bitReader.stream_read_1_bytes(stream);\n this.ptl_sublayer_present_mask = 0;\n for (j = this.num_sublayers - 2; j >= 0; --j) {\n var val = bitReader.extract_bits(1);\n this.ptl_sublayer_present_mask |= val << j;\n }\n for (j = this.num_sublayers; j <= 8 && this.num_sublayers > 1; ++j) {\n bitReader.extract_bits(1); // ptl_reserved_zero_bit\n }\n\n this.sublayer_level_idc = [];\n for (j = this.num_sublayers - 2; j >= 0; --j) {\n if (this.ptl_sublayer_present_mask & (1 << j)) {\n this.sublayer_level_idc[j] = stream.readUint8();\n }\n }\n }\n\n this.ptl_num_sub_profiles = stream.readUint8();\n this.general_sub_profile_idc = [];\n if (this.ptl_num_sub_profiles) {\n for (i = 0; i < this.ptl_num_sub_profiles; i++) {\n this.general_sub_profile_idc.push(stream.readUint32());\n }\n }\n } // end VvcPTLRecord\n\n this.max_picture_width = stream.readUint16();\n this.max_picture_height = stream.readUint16();\n this.avg_frame_rate = stream.readUint16();\n }\n\n var VVC_NALU_OPI = 12;\n var VVC_NALU_DEC_PARAM = 13;\n\n this.nalu_arrays = [];\n var num_of_arrays = stream.readUint8();\n for (i = 0; i < num_of_arrays; i++) {\n var nalu_array = [];\n this.nalu_arrays.push(nalu_array);\n\n bitReader.stream_read_1_bytes(stream);\n nalu_array.completeness = bitReader.extract_bits(1);\n bitReader.extract_bits(2); // reserved\n nalu_array.nalu_type = bitReader.extract_bits(5);\n\n var numNalus = 1;\n if (nalu_array.nalu_type != VVC_NALU_DEC_PARAM && nalu_array.nalu_type != VVC_NALU_OPI) {\n numNalus = stream.readUint16();\n }\n\n for (j = 0; j < numNalus; j++) {\n var len = stream.readUint16();\n nalu_array.push({\n data: stream.readUint8Array(len),\n length: len\n });\n }\n }\n});\n// file:src/parsing/vvnC.js\nBoxParser.createFullBoxCtor(\"vvnC\", \"VvcNALUConfigBox\", function (stream) {\n // VvcNALUConfigBox\n var tmp = strm.readUint8();\n this.lengthSizeMinusOne = (tmp & 0x3);\n});\n// file:src/box-codecs.js\nBoxParser.SampleEntry.prototype.isVideo = function() {\n\treturn false;\n}\n\nBoxParser.SampleEntry.prototype.isAudio = function() {\n\treturn false;\n}\n\nBoxParser.SampleEntry.prototype.isSubtitle = function() {\n\treturn false;\n}\n\nBoxParser.SampleEntry.prototype.isMetadata = function() {\n\treturn false;\n}\n\nBoxParser.SampleEntry.prototype.isHint = function() {\n\treturn false;\n}\n\nBoxParser.SampleEntry.prototype.getCodec = function() {\n\treturn this.type.replace('.','');\n}\n\nBoxParser.SampleEntry.prototype.getWidth = function() {\n\treturn \"\";\n}\n\nBoxParser.SampleEntry.prototype.getHeight = function() {\n\treturn \"\";\n}\n\nBoxParser.SampleEntry.prototype.getChannelCount = function() {\n\treturn \"\";\n}\n\nBoxParser.SampleEntry.prototype.getSampleRate = function() {\n\treturn \"\";\n}\n\nBoxParser.SampleEntry.prototype.getSampleSize = function() {\n\treturn \"\";\n}\n\nBoxParser.VisualSampleEntry.prototype.isVideo = function() {\n\treturn true;\n}\n\nBoxParser.VisualSampleEntry.prototype.getWidth = function() {\n\treturn this.width;\n}\n\nBoxParser.VisualSampleEntry.prototype.getHeight = function() {\n\treturn this.height;\n}\n\nBoxParser.AudioSampleEntry.prototype.isAudio = function() {\n\treturn true;\n}\n\nBoxParser.AudioSampleEntry.prototype.getChannelCount = function() {\n\treturn this.channel_count;\n}\n\nBoxParser.AudioSampleEntry.prototype.getSampleRate = function() {\n\treturn this.samplerate;\n}\n\nBoxParser.AudioSampleEntry.prototype.getSampleSize = function() {\n\treturn this.samplesize;\n}\n\nBoxParser.SubtitleSampleEntry.prototype.isSubtitle = function() {\n\treturn true;\n}\n\nBoxParser.MetadataSampleEntry.prototype.isMetadata = function() {\n\treturn true;\n}\n\n\nBoxParser.decimalToHex = function(d, padding) {\n\tvar hex = Number(d).toString(16);\n\tpadding = typeof (padding) === \"undefined\" || padding === null ? padding = 2 : padding;\n\twhile (hex.length < padding) {\n\t\thex = \"0\" + hex;\n\t}\n\treturn hex;\n}\n\nBoxParser.avc1SampleEntry.prototype.getCodec =\nBoxParser.avc2SampleEntry.prototype.getCodec =\nBoxParser.avc3SampleEntry.prototype.getCodec =\nBoxParser.avc4SampleEntry.prototype.getCodec = function() {\n\tvar baseCodec = BoxParser.SampleEntry.prototype.getCodec.call(this);\n\tif (this.avcC) {\n\t\treturn baseCodec+\".\"+BoxParser.decimalToHex(this.avcC.AVCProfileIndication)+\n\t\t\t\t\t\t \"\"+BoxParser.decimalToHex(this.avcC.profile_compatibility)+\n\t\t\t\t\t\t \"\"+BoxParser.decimalToHex(this.avcC.AVCLevelIndication);\n\t} else {\n\t\treturn baseCodec;\n\t}\n}\n\nBoxParser.hev1SampleEntry.prototype.getCodec =\nBoxParser.hvc1SampleEntry.prototype.getCodec = function() {\n\tvar i;\n\tvar baseCodec = BoxParser.SampleEntry.prototype.getCodec.call(this);\n\tif (this.hvcC) {\n\t\tbaseCodec += '.';\n\t\tswitch (this.hvcC.general_profile_space) {\n\t\t\tcase 0:\n\t\t\t\tbaseCodec += '';\n\t\t\t\tbreak;\n\t\t\tcase 1:\n\t\t\t\tbaseCodec += 'A';\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tbaseCodec += 'B';\n\t\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t\tbaseCodec += 'C';\n\t\t\t\tbreak;\n\t\t}\n\t\tbaseCodec += this.hvcC.general_profile_idc;\n\t\tbaseCodec += '.';\n\t\tvar val = this.hvcC.general_profile_compatibility;\n\t\tvar reversed = 0;\n\t\tfor (i=0; i<32; i++) {\n\t\t\treversed |= val & 1;\n\t\t\tif (i==31) break;\n\t\t\treversed <<= 1;\n\t\t\tval >>=1;\n\t\t}\n\t\tbaseCodec += BoxParser.decimalToHex(reversed, 0);\n\t\tbaseCodec += '.';\n\t\tif (this.hvcC.general_tier_flag === 0) {\n\t\t\tbaseCodec += 'L';\n\t\t} else {\n\t\t\tbaseCodec += 'H';\n\t\t}\n\t\tbaseCodec += this.hvcC.general_level_idc;\n\t\tvar hasByte = false;\n\t\tvar constraint_string = \"\";\n\t\tfor (i = 5; i >= 0; i--) {\n\t\t\tif (this.hvcC.general_constraint_indicator[i] || hasByte) {\n\t\t\t\tconstraint_string = \".\"+BoxParser.decimalToHex(this.hvcC.general_constraint_indicator[i], 0)+constraint_string;\n\t\t\t\thasByte = true;\n\t\t\t}\n\t\t}\n\t\tbaseCodec += constraint_string;\n\t}\n\treturn baseCodec;\n}\n\nBoxParser.vvc1SampleEntry.prototype.getCodec =\nBoxParser.vvi1SampleEntry.prototype.getCodec = function () {\n\tvar i;\n\tvar baseCodec = BoxParser.SampleEntry.prototype.getCodec.call(this);\n\tif (this.vvcC) {\n\t\tbaseCodec += '.' + this.vvcC.general_profile_idc;\n\t\tif (this.vvcC.general_tier_flag) {\n\t\t\tbaseCodec += '.H';\n\t\t} else {\n\t\t\tbaseCodec += '.L';\n\t\t}\n\t\tbaseCodec += this.vvcC.general_level_idc;\n\n\t\tvar constraint_string = \"\";\n\t\tif (this.vvcC.general_constraint_info) {\n\t\t\tvar bytes = [];\n\t\t\tvar byte = 0;\n\t\t\tbyte |= this.vvcC.ptl_frame_only_constraint << 7;\n\t\t\tbyte |= this.vvcC.ptl_multilayer_enabled << 6;\n\t\t\tvar last_nonzero;\n\t\t\tfor (i = 0; i < this.vvcC.general_constraint_info.length; ++i) {\n\t\t\t\tbyte |= (this.vvcC.general_constraint_info[i] >> 2) & 0x3f;\n\t\t\t\tbytes.push(byte);\n\t\t\t\tif (byte) {\n\t\t\t\t\tlast_nonzero = i;\n\t\t\t\t}\n\n\t\t\t\tbyte = (this.vvcC.general_constraint_info[i] >> 2) & 0x03;\n\t\t\t}\n\n\t\t\tif (last_nonzero === undefined) {\n\t\t\t\tconstraint_string = \".CA\";\n\t\t\t}\n\t\t\telse {\n\t\t\t\tconstraint_string = \".C\"\n\t\t\t\tvar base32_chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567\";\n\t\t\t\tvar held_bits = 0;\n\t\t\t\tvar num_held_bits = 0;\n\t\t\t\tfor (i = 0; i <= last_nonzero; ++i) {\n\t\t\t\t\theld_bits = (held_bits << 8) | bytes[i];\n\t\t\t\t\tnum_held_bits += 8;\n\n\t\t\t\t\twhile (num_held_bits >= 5) {\n\t\t\t\t\t\tvar val = (held_bits >> (num_held_bits - 5)) & 0x1f;\n\t\t\t\t\t\tconstraint_string += base32_chars[val];\n\n\t\t\t\t\t\tnum_held_bits -= 5;\n\t\t\t\t\t\theld_bits &= (1 << num_held_bits) - 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (num_held_bits) {\n\t\t\t\t\theld_bits <<= (5 - num_held_bits); // right-pad with zeros to 5 bits (is this correct?)\n\t\t\t\t\tconstraint_string += base32_chars[held_bits & 0x1f];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tbaseCodec += constraint_string;\n\t}\n\treturn baseCodec;\n}\n\nBoxParser.mp4aSampleEntry.prototype.getCodec = function() {\n\tvar baseCodec = BoxParser.SampleEntry.prototype.getCodec.call(this);\n\tif (this.esds && this.esds.esd) {\n\t\tvar oti = this.esds.esd.getOTI();\n\t\tvar dsi = this.esds.esd.getAudioConfig();\n\t\treturn baseCodec+\".\"+BoxParser.decimalToHex(oti)+(dsi ? \".\"+dsi: \"\");\n\t} else {\n\t\treturn baseCodec;\n\t}\n}\n\nBoxParser.stxtSampleEntry.prototype.getCodec = function() {\n\tvar baseCodec = BoxParser.SampleEntry.prototype.getCodec.call(this);\n\tif(this.mime_format) {\n\t\treturn baseCodec + \".\" + this.mime_format;\n\t} else {\n\t\treturn baseCodec\n\t}\n}\n\nBoxParser.vp08SampleEntry.prototype.getCodec =\nBoxParser.vp09SampleEntry.prototype.getCodec = function() {\n\tvar baseCodec = BoxParser.SampleEntry.prototype.getCodec.call(this);\n\tvar level = this.vpcC.level;\n\tif (level == 0) {\n\t\tlevel = \"00\";\n\t}\n\tvar bitDepth = this.vpcC.bitDepth;\n\tif (bitDepth == 8) {\n\t\tbitDepth = \"08\";\n\t}\n\treturn baseCodec + \".0\" + this.vpcC.profile + \".\" + level + \".\" + bitDepth;\n}\n\nBoxParser.av01SampleEntry.prototype.getCodec = function() {\n\tvar baseCodec = BoxParser.SampleEntry.prototype.getCodec.call(this);\n\tvar level = this.av1C.seq_level_idx_0;\n\tif (level < 10) {\n\t\tlevel = \"0\" + level;\n\t}\n\tvar bitdepth;\n\tif (this.av1C.seq_profile === 2 && this.av1C.high_bitdepth === 1) {\n\t\tbitdepth = (this.av1C.twelve_bit === 1) ? \"12\" : \"10\";\n\t} else if ( this.av1C.seq_profile <= 2 ) {\n\t\tbitdepth = (this.av1C.high_bitdepth === 1) ? \"10\" : \"08\";\n\t}\n\t// TODO need to parse the SH to find color config\n\treturn baseCodec+\".\"+this.av1C.seq_profile+\".\"+level+(this.av1C.seq_tier_0?\"H\":\"M\")+\".\"+bitdepth;//+\".\"+this.av1C.monochrome+\".\"+this.av1C.chroma_subsampling_x+\"\"+this.av1C.chroma_subsampling_y+\"\"+this.av1C.chroma_sample_position;\n}\n// file:src/box-write.js\n/* \n * Copyright (c) Telecom ParisTech/TSI/MM/GPAC Cyril Concolato\n * License: BSD-3-Clause (see LICENSE file)\n */\nBoxParser.Box.prototype.writeHeader = function(stream, msg) {\n\tthis.size += 8;\n\tif (this.size > MAX_SIZE) {\n\t\tthis.size += 8;\n\t}\n\tif (this.type === \"uuid\") {\n\t\tthis.size += 16;\n\t}\n\tLog.debug(\"BoxWriter\", \"Writing box \"+this.type+\" of size: \"+this.size+\" at position \"+stream.getPosition()+(msg || \"\"));\n\tif (this.size > MAX_SIZE) {\n\t\tstream.writeUint32(1);\n\t} else {\n\t\tthis.sizePosition = stream.getPosition();\n\t\tstream.writeUint32(this.size);\n\t}\n\tstream.writeString(this.type, null, 4);\n\tif (this.type === \"uuid\") {\n\t\tstream.writeUint8Array(this.uuid);\n\t}\n\tif (this.size > MAX_SIZE) {\n\t\tstream.writeUint64(this.size);\n\t} \n}\n\nBoxParser.FullBox.prototype.writeHeader = function(stream) {\n\tthis.size += 4;\n\tBoxParser.Box.prototype.writeHeader.call(this, stream, \" v=\"+this.version+\" f=\"+this.flags);\n\tstream.writeUint8(this.version);\n\tstream.writeUint24(this.flags);\n}\n\nBoxParser.Box.prototype.write = function(stream) {\n\tif (this.type === \"mdat\") {\n\t\t/* TODO: fix this */\n\t\tif (this.data) {\n\t\t\tthis.size = this.data.length;\n\t\t\tthis.writeHeader(stream);\n\t\t\tstream.writeUint8Array(this.data);\n\t\t}\n\t} else {\n\t\tthis.size = (this.data ? this.data.length : 0);\n\t\tthis.writeHeader(stream);\n\t\tif (this.data) {\n\t\t\tstream.writeUint8Array(this.data);\n\t\t}\n\t}\n}\n\nBoxParser.ContainerBox.prototype.write = function(stream) {\n\tthis.size = 0;\n\tthis.writeHeader(stream);\n\tfor (var i=0; i<this.boxes.length; i++) {\n\t\tif (this.boxes[i]) {\n\t\t\tthis.boxes[i].write(stream);\n\t\t\tthis.size += this.boxes[i].size;\n\t\t}\n\t}\n\t/* adjusting the size, now that all sub-boxes are known */\n\tLog.debug(\"BoxWriter\", \"Adjusting box \"+this.type+\" with new size \"+this.size);\n\tstream.adjustUint32(this.sizePosition, this.size);\n}\n\nBoxParser.TrackReferenceTypeBox.prototype.write = function(stream) {\n\tthis.size = this.track_ids.length*4;\n\tthis.writeHeader(stream);\n\tstream.writeUint32Array(this.track_ids);\n}\n\n// file:src/writing/avcC.js\nBoxParser.avcCBox.prototype.write = function(stream) {\n\tvar i;\n\tthis.size = 7;\n\tfor (i = 0; i < this.SPS.length; i++) {\n\t\tthis.size += 2+this.SPS[i].length;\n\t}\n\tfor (i = 0; i < this.PPS.length; i++) {\n\t\tthis.size += 2+this.PPS[i].length;\n\t}\n\tif (this.ext) {\n\t\tthis.size += this.ext.length;\n\t}\n\tthis.writeHeader(stream);\n\tstream.writeUint8(this.configurationVersion);\n\tstream.writeUint8(this.AVCProfileIndication);\n\tstream.writeUint8(this.profile_compatibility);\n\tstream.writeUint8(this.AVCLevelIndication);\n\tstream.writeUint8(this.lengthSizeMinusOne + (63<<2));\n\tstream.writeUint8(this.SPS.length + (7<<5));\n\tfor (i = 0; i < this.SPS.length; i++) {\n\t\tstream.writeUint16(this.SPS[i].length);\n\t\tstream.writeUint8Array(this.SPS[i].nalu);\n\t}\n\tstream.writeUint8(this.PPS.length);\n\tfor (i = 0; i < this.PPS.length; i++) {\n\t\tstream.writeUint16(this.PPS[i].length);\n\t\tstream.writeUint8Array(this.PPS[i].nalu);\n\t}\n\tif (this.ext) {\n\t\tstream.writeUint8Array(this.ext);\n\t}\n}\n\n// file:src/writing/co64.js\nBoxParser.co64Box.prototype.write = function(stream) {\n\tvar i;\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 4+8*this.chunk_offsets.length;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.chunk_offsets.length);\n\tfor(i=0; i<this.chunk_offsets.length; i++) {\n\t\tstream.writeUint64(this.chunk_offsets[i]);\n\t}\n}\n\n// file:src/writing/cslg.js\nBoxParser.cslgBox.prototype.write = function(stream) {\n\tvar i;\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 4*5;\n\tthis.writeHeader(stream);\n\tstream.writeInt32(this.compositionToDTSShift);\n\tstream.writeInt32(this.leastDecodeToDisplayDelta);\n\tstream.writeInt32(this.greatestDecodeToDisplayDelta);\n\tstream.writeInt32(this.compositionStartTime);\n\tstream.writeInt32(this.compositionEndTime);\n}\n\n// file:src/writing/ctts.js\nBoxParser.cttsBox.prototype.write = function(stream) {\n\tvar i;\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 4+8*this.sample_counts.length;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.sample_counts.length);\n\tfor(i=0; i<this.sample_counts.length; i++) {\n\t\tstream.writeUint32(this.sample_counts[i]);\n\t\tif (this.version === 1) {\n\t\t\tstream.writeInt32(this.sample_offsets[i]); /* signed */\n\t\t} else {\t\t\t\n\t\t\tstream.writeUint32(this.sample_offsets[i]); /* unsigned */\n\t\t}\n\t}\n}\n\n// file:src/writing/dref.js\nBoxParser.drefBox.prototype.write = function(stream) {\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 4; //\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.entries.length);\n\tfor (var i = 0; i < this.entries.length; i++) {\n\t\tthis.entries[i].write(stream);\n\t\tthis.size += this.entries[i].size;\n\t}\t\n\t/* adjusting the size, now that all sub-boxes are known */\n\tLog.debug(\"BoxWriter\", \"Adjusting box \"+this.type+\" with new size \"+this.size);\n\tstream.adjustUint32(this.sizePosition, this.size);\n}\n\n// file:src/writing/elng.js\nBoxParser.elngBox.prototype.write = function(stream) {\n\tthis.version = 0;\t\n\tthis.flags = 0;\n\tthis.size = this.extended_language.length;\n\tthis.writeHeader(stream);\n\tstream.writeString(this.extended_language);\n}\n\n// file:src/writing/elst.js\nBoxParser.elstBox.prototype.write = function(stream) {\n\tthis.version = 0;\t\n\tthis.flags = 0;\n\tthis.size = 4+12*this.entries.length;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.entries.length);\n\tfor (var i = 0; i < this.entries.length; i++) {\n\t\tvar entry = this.entries[i];\n\t\tstream.writeUint32(entry.segment_duration);\n\t\tstream.writeInt32(entry.media_time);\n\t\tstream.writeInt16(entry.media_rate_integer);\n\t\tstream.writeInt16(entry.media_rate_fraction);\n\t}\n}\n\n// file:src/writing/emsg.js\nBoxParser.emsgBox.prototype.write = function(stream) {\n\tthis.version = 0;\t\n\tthis.flags = 0;\n\tthis.size = 4*4+this.message_data.length+(this.scheme_id_uri.length+1)+(this.value.length+1);\n\tthis.writeHeader(stream);\n\tstream.writeCString(this.scheme_id_uri);\n\tstream.writeCString(this.value);\n\tstream.writeUint32(this.timescale);\n\tstream.writeUint32(this.presentation_time_delta);\n\tstream.writeUint32(this.event_duration);\n\tstream.writeUint32(this.id);\n\tstream.writeUint8Array(this.message_data);\n}\n\n// file:src/writing/ftyp.js\nBoxParser.ftypBox.prototype.write = function(stream) {\n\tthis.size = 8+4*this.compatible_brands.length;\n\tthis.writeHeader(stream);\n\tstream.writeString(this.major_brand, null, 4);\n\tstream.writeUint32(this.minor_version);\n\tfor (var i = 0; i < this.compatible_brands.length; i++) {\n\t\tstream.writeString(this.compatible_brands[i], null, 4);\n\t}\n}\n\n// file:src/writing/hdlr.js\nBoxParser.hdlrBox.prototype.write = function(stream) {\n\tthis.size = 5*4+this.name.length+1;\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(0);\n\tstream.writeString(this.handler, null, 4);\n\tstream.writeUint32(0);\n\tstream.writeUint32(0);\n\tstream.writeUint32(0);\n\tstream.writeCString(this.name);\n}\n\n// file:src/writing/hvcC.js\nBoxParser.hvcCBox.prototype.write = function(stream) {\n var i,j;\n this.size = 23;\n\n for (i = 0; i < this.nalu_arrays.length; i++) {\n this.size += 3;\n for (j = 0; j < this.nalu_arrays[i].length; j++) {\n this.size += 2 + this.nalu_arrays[i][j].data.length;\n }\n }\n\n this.writeHeader(stream);\n\n stream.writeUint8(this.configurationVersion);\n stream.writeUint8((this.general_profile_space << 6) +\n (this.general_tier_flag << 5) +\n this.general_profile_idc);\n stream.writeUint32(this.general_profile_compatibility);\n stream.writeUint8Array(this.general_constraint_indicator);\n stream.writeUint8(this.general_level_idc);\n stream.writeUint16(this.min_spatial_segmentation_idc + (15<<24));\n stream.writeUint8(this.parallelismType + (63<<2));\n stream.writeUint8(this.chroma_format_idc + (63<<2));\n stream.writeUint8(this.bit_depth_luma_minus8 + (31<<3));\n stream.writeUint8(this.bit_depth_chroma_minus8 + (31<<3));\n stream.writeUint16(this.avgFrameRate);\n stream.writeUint8((this.constantFrameRate<<6) +\n (this.numTemporalLayers<<3) +\n (this.temporalIdNested<<2) +\n this.lengthSizeMinusOne);\n stream.writeUint8(this.nalu_arrays.length);\n for (i = 0; i < this.nalu_arrays.length; i++) {\n // bit(1) array_completeness + bit(1) reserved = 0 + bit(6) nal_unit_type\n stream.writeUint8((this.nalu_arrays[i].completeness<<7) +\n this.nalu_arrays[i].nalu_type);\n stream.writeUint16(this.nalu_arrays[i].length);\n for (j = 0; j < this.nalu_arrays[i].length; j++) {\n stream.writeUint16(this.nalu_arrays[i][j].data.length);\n stream.writeUint8Array(this.nalu_arrays[i][j].data);\n }\n }\n}\n// file:src/writing/kind.js\nBoxParser.kindBox.prototype.write = function(stream) {\n\tthis.version = 0;\t\n\tthis.flags = 0;\n\tthis.size = (this.schemeURI.length+1)+(this.value.length+1);\n\tthis.writeHeader(stream);\n\tstream.writeCString(this.schemeURI);\n\tstream.writeCString(this.value);\n}\n\n// file:src/writing/mdhd.js\nBoxParser.mdhdBox.prototype.write = function(stream) {\n\tthis.size = 4*4+2*2;\n\tthis.flags = 0;\n\tthis.version = 0;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.creation_time);\n\tstream.writeUint32(this.modification_time);\n\tstream.writeUint32(this.timescale);\n\tstream.writeUint32(this.duration);\n\tstream.writeUint16(this.language);\n\tstream.writeUint16(0);\n}\n\n// file:src/writing/mehd.js\nBoxParser.mehdBox.prototype.write = function(stream) {\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 4;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.fragment_duration);\n}\n\n// file:src/writing/mfhd.js\nBoxParser.mfhdBox.prototype.write = function(stream) {\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 4;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.sequence_number);\n}\n\n// file:src/writing/mvhd.js\nBoxParser.mvhdBox.prototype.write = function(stream) {\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 23*4+2*2;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.creation_time);\n\tstream.writeUint32(this.modification_time);\n\tstream.writeUint32(this.timescale);\n\tstream.writeUint32(this.duration);\n\tstream.writeUint32(this.rate);\n\tstream.writeUint16(this.volume<<8);\n\tstream.writeUint16(0);\n\tstream.writeUint32(0);\n\tstream.writeUint32(0);\n\tstream.writeUint32Array(this.matrix);\n\tstream.writeUint32(0);\n\tstream.writeUint32(0);\n\tstream.writeUint32(0);\n\tstream.writeUint32(0);\n\tstream.writeUint32(0);\n\tstream.writeUint32(0);\n\tstream.writeUint32(this.next_track_id);\n}\n\n// file:src/writing/sampleentry.js\nBoxParser.SampleEntry.prototype.writeHeader = function(stream) {\n\tthis.size = 8;\n\tBoxParser.Box.prototype.writeHeader.call(this, stream);\n\tstream.writeUint8(0);\n\tstream.writeUint8(0);\n\tstream.writeUint8(0);\n\tstream.writeUint8(0);\n\tstream.writeUint8(0);\n\tstream.writeUint8(0);\n\tstream.writeUint16(this.data_reference_index);\n}\n\nBoxParser.SampleEntry.prototype.writeFooter = function(stream) {\n\tfor (var i=0; i<this.boxes.length; i++) {\n\t\tthis.boxes[i].write(stream);\n\t\tthis.size += this.boxes[i].size;\n\t}\n\tLog.debug(\"BoxWriter\", \"Adjusting box \"+this.type+\" with new size \"+this.size);\n\tstream.adjustUint32(this.sizePosition, this.size);\t\n}\n\nBoxParser.SampleEntry.prototype.write = function(stream) {\n\tthis.writeHeader(stream);\n\tstream.writeUint8Array(this.data);\n\tthis.size += this.data.length;\n\tLog.debug(\"BoxWriter\", \"Adjusting box \"+this.type+\" with new size \"+this.size);\n\tstream.adjustUint32(this.sizePosition, this.size);\t\n}\n\nBoxParser.VisualSampleEntry.prototype.write = function(stream) {\n\tthis.writeHeader(stream);\n\tthis.size += 2*7+6*4+32;\n\tstream.writeUint16(0); \n\tstream.writeUint16(0);\n\tstream.writeUint32(0);\n\tstream.writeUint32(0);\n\tstream.writeUint32(0);\n\tstream.writeUint16(this.width);\n\tstream.writeUint16(this.height);\n\tstream.writeUint32(this.horizresolution);\n\tstream.writeUint32(this.vertresolution);\n\tstream.writeUint32(0);\n\tstream.writeUint16(this.frame_count);\n\tstream.writeUint8(Math.min(31, this.compressorname.length));\n\tstream.writeString(this.compressorname, null, 31);\n\tstream.writeUint16(this.depth);\n\tstream.writeInt16(-1);\n\tthis.writeFooter(stream);\n}\n\nBoxParser.AudioSampleEntry.prototype.write = function(stream) {\n\tthis.writeHeader(stream);\n\tthis.size += 2*4+3*4;\n\tstream.writeUint32(0);\n\tstream.writeUint32(0);\n\tstream.writeUint16(this.channel_count);\n\tstream.writeUint16(this.samplesize);\n\tstream.writeUint16(0);\n\tstream.writeUint16(0);\n\tstream.writeUint32(this.samplerate<<16);\n\tthis.writeFooter(stream);\n}\n\nBoxParser.stppSampleEntry.prototype.write = function(stream) {\n\tthis.writeHeader(stream);\n\tthis.size += this.namespace.length+1+\n\t\t\t\t this.schema_location.length+1+\n\t\t\t\t this.auxiliary_mime_types.length+1;\n\tstream.writeCString(this.namespace);\n\tstream.writeCString(this.schema_location);\n\tstream.writeCString(this.auxiliary_mime_types);\n\tthis.writeFooter(stream);\n}\n\n// file:src/writing/samplegroups/samplegroup.js\nBoxParser.SampleGroupEntry.prototype.write = function(stream) {\n\tstream.writeUint8Array(this.data);\n}\n\n// file:src/writing/sbgp.js\nBoxParser.sbgpBox.prototype.write = function(stream) {\n\tthis.version = 1;\t\n\tthis.flags = 0;\n\tthis.size = 12+8*this.entries.length;\n\tthis.writeHeader(stream);\n\tstream.writeString(this.grouping_type, null, 4);\n\tstream.writeUint32(this.grouping_type_parameter);\n\tstream.writeUint32(this.entries.length);\n\tfor (var i = 0; i < this.entries.length; i++) {\n\t\tvar entry = this.entries[i];\n\t\tstream.writeInt32(entry.sample_count);\n\t\tstream.writeInt32(entry.group_description_index);\n\t}\n}\n\n// file:src/writing/sgpd.js\nBoxParser.sgpdBox.prototype.write = function(stream) {\n\tvar i;\n\tvar entry;\n\t// leave version as read\n\t// this.version;\n\tthis.flags = 0;\n\tthis.size = 12;\n\tfor (i = 0; i < this.entries.length; i++) {\n\t\tentry = this.entries[i];\n\t\tif (this.version === 1) {\n\t\t\tif (this.default_length === 0) {\n\t\t\t\tthis.size += 4;\n\t\t\t}\n\t\t\tthis.size += entry.data.length;\n\t\t}\n\t}\n\tthis.writeHeader(stream);\n\tstream.writeString(this.grouping_type, null, 4);\n\tif (this.version === 1) {\n\t\tstream.writeUint32(this.default_length);\n\t}\n\tif (this.version >= 2) {\n\t\tstream.writeUint32(this.default_sample_description_index);\n\t}\n\tstream.writeUint32(this.entries.length);\n\tfor (i = 0; i < this.entries.length; i++) {\n\t\tentry = this.entries[i];\n\t\tif (this.version === 1) {\n\t\t\tif (this.default_length === 0) {\n\t\t\t\tstream.writeUint32(entry.description_length);\n\t\t\t}\n\t\t}\n\t\tentry.write(stream);\n\t}\n}\n\n\n// file:src/writing/sidx.js\nBoxParser.sidxBox.prototype.write = function(stream) {\n\tthis.version = 0;\t\n\tthis.flags = 0;\n\tthis.size = 4*4+2+2+12*this.references.length;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.reference_ID);\n\tstream.writeUint32(this.timescale);\n\tstream.writeUint32(this.earliest_presentation_time);\n\tstream.writeUint32(this.first_offset);\n\tstream.writeUint16(0);\n\tstream.writeUint16(this.references.length);\n\tfor (var i = 0; i < this.references.length; i++) {\n\t\tvar ref = this.references[i];\n\t\tstream.writeUint32(ref.reference_type << 31 | ref.referenced_size);\n\t\tstream.writeUint32(ref.subsegment_duration);\n\t\tstream.writeUint32(ref.starts_with_SAP << 31 | ref.SAP_type << 28 | ref.SAP_delta_time);\n\t}\n}\n\n// file:src/writing/smhd.js\nBoxParser.smhdBox.prototype.write = function(stream) {\n var i;\n this.version = 0;\n this.flags = 1;\n this.size = 4;\n this.writeHeader(stream);\n stream.writeUint16(this.balance);\n stream.writeUint16(0);\n}\n// file:src/writing/stco.js\nBoxParser.stcoBox.prototype.write = function(stream) {\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 4+4*this.chunk_offsets.length;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.chunk_offsets.length);\n\tstream.writeUint32Array(this.chunk_offsets);\n}\n\n// file:src/writing/stsc.js\nBoxParser.stscBox.prototype.write = function(stream) {\n\tvar i;\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 4+12*this.first_chunk.length;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.first_chunk.length);\n\tfor(i=0; i<this.first_chunk.length; i++) {\n\t\tstream.writeUint32(this.first_chunk[i]);\n\t\tstream.writeUint32(this.samples_per_chunk[i]);\n\t\tstream.writeUint32(this.sample_description_index[i]);\n\t}\n}\n\n// file:src/writing/stsd.js\nBoxParser.stsdBox.prototype.write = function(stream) {\n\tvar i;\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 0;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.entries.length);\n\tthis.size += 4;\n\tfor (i = 0; i < this.entries.length; i++) {\n\t\tthis.entries[i].write(stream);\n\t\tthis.size += this.entries[i].size;\n\t}\n\t/* adjusting the size, now that all sub-boxes are known */\n\tLog.debug(\"BoxWriter\", \"Adjusting box \"+this.type+\" with new size \"+this.size);\n\tstream.adjustUint32(this.sizePosition, this.size);\n}\n\n// file:src/writing/stsh.js\nBoxParser.stshBox.prototype.write = function(stream) {\n\tvar i;\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 4+8*this.shadowed_sample_numbers.length;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.shadowed_sample_numbers.length);\n\tfor(i=0; i<this.shadowed_sample_numbers.length; i++) {\n\t\tstream.writeUint32(this.shadowed_sample_numbers[i]);\n\t\tstream.writeUint32(this.sync_sample_numbers[i]);\n\t}\n}\n\n// file:src/writing/stss.js\nBoxParser.stssBox.prototype.write = function(stream) {\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 4+4*this.sample_numbers.length;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.sample_numbers.length);\n\tstream.writeUint32Array(this.sample_numbers);\n}\n\n// file:src/writing/stsz.js\nBoxParser.stszBox.prototype.write = function(stream) {\n\tvar i;\n\tvar constant = true;\n\tthis.version = 0;\n\tthis.flags = 0;\n\tif (this.sample_sizes.length > 0) {\n\t\ti = 0;\n\t\twhile (i+1 < this.sample_sizes.length) {\n\t\t\tif (this.sample_sizes[i+1] !== this.sample_sizes[0]) {\n\t\t\t\tconstant = false;\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\ti++;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconstant = false;\n\t}\n\tthis.size = 8;\n\tif (!constant) {\n\t\tthis.size += 4*this.sample_sizes.length;\n\t}\n\tthis.writeHeader(stream);\n\tif (!constant) {\n\t\tstream.writeUint32(0);\n\t} else {\n\t\tstream.writeUint32(this.sample_sizes[0]);\n\t}\n\tstream.writeUint32(this.sample_sizes.length);\n\tif (!constant) {\n\t\tstream.writeUint32Array(this.sample_sizes);\n\t}\t\n}\n\n// file:src/writing/stts.js\nBoxParser.sttsBox.prototype.write = function(stream) {\n\tvar i;\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 4+8*this.sample_counts.length;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.sample_counts.length);\n\tfor(i=0; i<this.sample_counts.length; i++) {\n\t\tstream.writeUint32(this.sample_counts[i]);\n\t\tstream.writeUint32(this.sample_deltas[i]);\n\t}\n}\n\n// file:src/writing/tfdt.js\nBoxParser.tfdtBox.prototype.write = function(stream) {\n\tvar UINT32_MAX = Math.pow(2, 32) - 1;\n\t// use version 1 if baseMediaDecodeTime does not fit 32 bits\n\tthis.version = this.baseMediaDecodeTime > UINT32_MAX ? 1 : 0;\n\tthis.flags = 0;\n\tthis.size = 4;\n\tif (this.version === 1) {\n\t\tthis.size += 4;\n\t}\n\tthis.writeHeader(stream);\n\tif (this.version === 1) {\n\t\tstream.writeUint64(this.baseMediaDecodeTime);\n\t} else {\n\t\tstream.writeUint32(this.baseMediaDecodeTime);\n\t}\n}\n\n// file:src/writing/tfhd.js\nBoxParser.tfhdBox.prototype.write = function(stream) {\n\tthis.version = 0;\n\tthis.size = 4;\n\tif (this.flags & BoxParser.TFHD_FLAG_BASE_DATA_OFFSET) {\n\t\tthis.size += 8;\n\t}\n\tif (this.flags & BoxParser.TFHD_FLAG_SAMPLE_DESC) {\n\t\tthis.size += 4;\n\t}\n\tif (this.flags & BoxParser.TFHD_FLAG_SAMPLE_DUR) {\n\t\tthis.size += 4;\n\t}\n\tif (this.flags & BoxParser.TFHD_FLAG_SAMPLE_SIZE) {\n\t\tthis.size += 4;\n\t}\n\tif (this.flags & BoxParser.TFHD_FLAG_SAMPLE_FLAGS) {\n\t\tthis.size += 4;\n\t}\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.track_id);\n\tif (this.flags & BoxParser.TFHD_FLAG_BASE_DATA_OFFSET) {\n\t\tstream.writeUint64(this.base_data_offset);\n\t}\n\tif (this.flags & BoxParser.TFHD_FLAG_SAMPLE_DESC) {\n\t\tstream.writeUint32(this.default_sample_description_index);\n\t}\n\tif (this.flags & BoxParser.TFHD_FLAG_SAMPLE_DUR) {\n\t\tstream.writeUint32(this.default_sample_duration);\n\t}\n\tif (this.flags & BoxParser.TFHD_FLAG_SAMPLE_SIZE) {\n\t\tstream.writeUint32(this.default_sample_size);\n\t}\n\tif (this.flags & BoxParser.TFHD_FLAG_SAMPLE_FLAGS) {\n\t\tstream.writeUint32(this.default_sample_flags);\n\t}\n}\n\n// file:src/writing/tkhd.js\nBoxParser.tkhdBox.prototype.write = function(stream) {\n\tthis.version = 0;\n\t//this.flags = 0;\n\tthis.size = 4*18+2*4;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.creation_time);\n\tstream.writeUint32(this.modification_time);\n\tstream.writeUint32(this.track_id);\n\tstream.writeUint32(0);\n\tstream.writeUint32(this.duration);\n\tstream.writeUint32(0);\n\tstream.writeUint32(0);\n\tstream.writeInt16(this.layer);\n\tstream.writeInt16(this.alternate_group);\n\tstream.writeInt16(this.volume<<8);\n\tstream.writeUint16(0);\n\tstream.writeInt32Array(this.matrix);\n\tstream.writeUint32(this.width);\n\tstream.writeUint32(this.height);\n}\n\n// file:src/writing/trex.js\nBoxParser.trexBox.prototype.write = function(stream) {\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 4*5;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.track_id);\n\tstream.writeUint32(this.default_sample_description_index);\n\tstream.writeUint32(this.default_sample_duration);\n\tstream.writeUint32(this.default_sample_size);\n\tstream.writeUint32(this.default_sample_flags);\n}\n\n// file:src/writing/trun.js\nBoxParser.trunBox.prototype.write = function(stream) {\n\tthis.version = 0;\n\tthis.size = 4;\n\tif (this.flags & BoxParser.TRUN_FLAGS_DATA_OFFSET) {\n\t\tthis.size += 4;\n\t}\n\tif (this.flags & BoxParser.TRUN_FLAGS_FIRST_FLAG) {\n\t\tthis.size += 4;\n\t}\n\tif (this.flags & BoxParser.TRUN_FLAGS_DURATION) {\n\t\tthis.size += 4*this.sample_duration.length;\n\t}\n\tif (this.flags & BoxParser.TRUN_FLAGS_SIZE) {\n\t\tthis.size += 4*this.sample_size.length;\n\t}\n\tif (this.flags & BoxParser.TRUN_FLAGS_FLAGS) {\n\t\tthis.size += 4*this.sample_flags.length;\n\t}\n\tif (this.flags & BoxParser.TRUN_FLAGS_CTS_OFFSET) {\n\t\tthis.size += 4*this.sample_composition_time_offset.length;\n\t}\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.sample_count);\n\tif (this.flags & BoxParser.TRUN_FLAGS_DATA_OFFSET) {\n\t\tthis.data_offset_position = stream.getPosition();\n\t\tstream.writeInt32(this.data_offset); //signed\n\t}\n\tif (this.flags & BoxParser.TRUN_FLAGS_FIRST_FLAG) {\n\t\tstream.writeUint32(this.first_sample_flags);\n\t}\n\tfor (var i = 0; i < this.sample_count; i++) {\n\t\tif (this.flags & BoxParser.TRUN_FLAGS_DURATION) {\n\t\t\tstream.writeUint32(this.sample_duration[i]);\n\t\t}\n\t\tif (this.flags & BoxParser.TRUN_FLAGS_SIZE) {\n\t\t\tstream.writeUint32(this.sample_size[i]);\n\t\t}\n\t\tif (this.flags & BoxParser.TRUN_FLAGS_FLAGS) {\n\t\t\tstream.writeUint32(this.sample_flags[i]);\n\t\t}\n\t\tif (this.flags & BoxParser.TRUN_FLAGS_CTS_OFFSET) {\n\t\t\tif (this.version === 0) {\n\t\t\t\tstream.writeUint32(this.sample_composition_time_offset[i]);\n\t\t\t} else {\n\t\t\t\tstream.writeInt32(this.sample_composition_time_offset[i]); //signed\n\t\t\t}\n\t\t}\n\t}\t\t\n}\n\n// file:src/writing/url.js\nBoxParser[\"url Box\"].prototype.write = function(stream) {\n\tthis.version = 0;\t\n\tif (this.location) {\n\t\tthis.flags = 0;\n\t\tthis.size = this.location.length+1;\n\t} else {\n\t\tthis.flags = 0x000001;\n\t\tthis.size = 0;\n\t}\n\tthis.writeHeader(stream);\n\tif (this.location) {\n\t\tstream.writeCString(this.location);\n\t}\n}\n\n// file:src/writing/urn.js\nBoxParser[\"urn Box\"].prototype.write = function(stream) {\n\tthis.version = 0;\t\n\tthis.flags = 0;\n\tthis.size = this.name.length+1+(this.location ? this.location.length+1 : 0);\n\tthis.writeHeader(stream);\n\tstream.writeCString(this.name);\n\tif (this.location) {\n\t\tstream.writeCString(this.location);\n\t}\n}\n\n// file:src/writing/vmhd.js\nBoxParser.vmhdBox.prototype.write = function(stream) {\n\tvar i;\n\tthis.version = 0;\n\tthis.flags = 1;\n\tthis.size = 8;\n\tthis.writeHeader(stream);\n\tstream.writeUint16(this.graphicsmode);\n\tstream.writeUint16Array(this.opcolor);\n}\n\n// file:src/box-unpack.js\n/* \n * Copyright (c) Telecom ParisTech/TSI/MM/GPAC Cyril Concolato\n * License: BSD-3-Clause (see LICENSE file)\n */\nBoxParser.cttsBox.prototype.unpack = function(samples) {\n\tvar i, j, k;\n\tk = 0;\n\tfor (i = 0; i < this.sample_counts.length; i++) {\n\t\tfor (j = 0; j < this.sample_counts[i]; j++) {\n\t\t\tsamples[k].pts = samples[k].dts + this.sample_offsets[i];\n\t\t\tk++;\n\t\t}\n\t}\n}\n\nBoxParser.sttsBox.prototype.unpack = function(samples) {\n\tvar i, j, k;\n\tk = 0;\n\tfor (i = 0; i < this.sample_counts.length; i++) {\n\t\tfor (j = 0; j < this.sample_counts[i]; j++) {\n\t\t\tif (k === 0) {\n\t\t\t\tsamples[k].dts = 0;\n\t\t\t} else {\n\t\t\t\tsamples[k].dts = samples[k-1].dts + this.sample_deltas[i];\n\t\t\t}\n\t\t\tk++;\n\t\t}\n\t}\n}\n\nBoxParser.stcoBox.prototype.unpack = function(samples) {\n\tvar i;\n\tfor (i = 0; i < this.chunk_offsets.length; i++) {\n\t\tsamples[i].offset = this.chunk_offsets[i];\n\t}\n}\n\nBoxParser.stscBox.prototype.unpack = function(samples) {\n\tvar i, j, k, l, m;\n\tl = 0;\n\tm = 0;\n\tfor (i = 0; i < this.first_chunk.length; i++) {\n\t\tfor (j = 0; j < (i+1 < this.first_chunk.length ? this.first_chunk[i+1] : Infinity); j++) {\n\t\t\tm++;\n\t\t\tfor (k = 0; k < this.samples_per_chunk[i]; k++) {\n\t\t\t\tif (samples[l]) {\n\t\t\t\t\tsamples[l].description_index = this.sample_description_index[i];\n\t\t\t\t\tsamples[l].chunk_index = m;\n\t\t\t\t} else {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tl++;\n\t\t\t}\t\t\t\n\t\t}\n\t}\n}\n\nBoxParser.stszBox.prototype.unpack = function(samples) {\n\tvar i;\n\tfor (i = 0; i < this.sample_sizes.length; i++) {\n\t\tsamples[i].size = this.sample_sizes[i];\n\t}\n}\n// file:src/box-diff.js\n\nBoxParser.DIFF_BOXES_PROP_NAMES = [ \"boxes\", \"entries\", \"references\", \"subsamples\",\n\t\t\t\t\t \t \"items\", \"item_infos\", \"extents\", \"associations\",\n\t\t\t\t\t \t \"subsegments\", \"ranges\", \"seekLists\", \"seekPoints\",\n\t\t\t\t\t \t \"esd\", \"levels\"];\n\nBoxParser.DIFF_PRIMITIVE_ARRAY_PROP_NAMES = [ \"compatible_brands\", \"matrix\", \"opcolor\", \"sample_counts\", \"sample_deltas\",\n\"first_chunk\", \"samples_per_chunk\", \"sample_sizes\", \"chunk_offsets\", \"sample_offsets\", \"sample_description_index\", \"sample_duration\" ];\n\nBoxParser.boxEqualFields = function(box_a, box_b) {\n\tif (box_a && !box_b) return false;\n\tvar prop;\n\tfor (prop in box_a) {\n\t\tif (BoxParser.DIFF_BOXES_PROP_NAMES.indexOf(prop) > -1) {\n\t\t\tcontinue;\n\t\t// } else if (excluded_fields && excluded_fields.indexOf(prop) > -1) {\n\t\t// \tcontinue;\n\t\t} else if (box_a[prop] instanceof BoxParser.Box || box_b[prop] instanceof BoxParser.Box) {\n\t\t\tcontinue;\n\t\t} else if (typeof box_a[prop] === \"undefined\" || typeof box_b[prop] === \"undefined\") {\n\t\t\tcontinue;\n\t\t} else if (typeof box_a[prop] === \"function\" || typeof box_b[prop] === \"function\") {\n\t\t\tcontinue;\n\t\t} else if (\n\t\t\t(box_a.subBoxNames && box_a.subBoxNames.indexOf(prop.slice(0,4)) > -1) ||\n\t\t\t(box_b.subBoxNames && box_b.subBoxNames.indexOf(prop.slice(0,4)) > -1)) {\n\t\t\tcontinue;\n\t\t} else {\n\t\t\tif (prop === \"data\" || prop === \"start\" || prop === \"size\" || prop === \"creation_time\" || prop === \"modification_time\") {\n\t\t\t\tcontinue;\n\t\t\t} else if (BoxParser.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(prop) > -1) {\n\t\t\t\tcontinue;\n\t\t\t} else {\n\t\t\t\tif (box_a[prop] !== box_b[prop]) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n\nBoxParser.boxEqual = function(box_a, box_b) {\n\tif (!BoxParser.boxEqualFields(box_a, box_b)) {\n\t\treturn false;\n\t}\n\tfor (var j = 0; j < BoxParser.DIFF_BOXES_PROP_NAMES.length; j++) {\n\t\tvar name = BoxParser.DIFF_BOXES_PROP_NAMES[j];\n\t\tif (box_a[name] && box_b[name]) {\n\t\t\tif (!BoxParser.boxEqual(box_a[name], box_b[name])) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n// file:src/text-mp4.js\n/* \n * Copyright (c) 2012-2013. Telecom ParisTech/TSI/MM/GPAC Cyril Concolato\n * License: BSD-3-Clause (see LICENSE file)\n */\nvar VTTin4Parser = function() {\t\n}\n\nVTTin4Parser.prototype.parseSample = function(data) {\n\tvar cues, cue;\n\tvar stream = new MP4BoxStream(data.buffer);\n\tcues = [];\n\twhile (!stream.isEos()) {\n\t\tcue = BoxParser.parseOneBox(stream, false);\n\t\tif (cue.code === BoxParser.OK && cue.box.type === \"vttc\") {\n\t\t\tcues.push(cue.box);\n\t\t}\t\t\n\t}\n\treturn cues;\n}\n\nVTTin4Parser.prototype.getText = function (startTime, endTime, data) {\n\tfunction pad(n, width, z) {\n\t z = z || '0';\n\t n = n + '';\n\t return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;\n\t}\n\tfunction secToTimestamp(insec) {\n\t\tvar h = Math.floor(insec/3600);\n\t\tvar m = Math.floor((insec - h*3600)/60);\n\t\tvar s = Math.floor(insec - h*3600 - m*60);\n\t\tvar ms = Math.floor((insec - h*3600 - m*60 - s)*1000);\n\t\treturn \"\"+pad(h, 2)+\":\"+pad(m,2)+\":\"+pad(s, 2)+\".\"+pad(ms, 3);\n\t}\n\tvar cues = this.parseSample(data);\n\tvar string = \"\";\n\tfor (var i = 0; i < cues.length; i++) {\n\t\tvar cueIn4 = cues[i];\n\t\tstring += secToTimestamp(startTime)+\" --> \"+secToTimestamp(endTime)+\"\\r\\n\";\n\t\tstring += cueIn4.payl.text;\n\t}\n\treturn string;\n}\n\nvar XMLSubtitlein4Parser = function() {\t\n}\n\nXMLSubtitlein4Parser.prototype.parseSample = function(sample) {\n\tvar res = {};\t\n\tvar i;\n\tres.resources = [];\n\tvar stream = new MP4BoxStream(sample.data.buffer);\n\tif (!sample.subsamples || sample.subsamples.length === 0) {\n\t\tres.documentString = stream.readString(sample.data.length);\n\t} else {\n\t\tres.documentString = stream.readString(sample.subsamples[0].size);\n\t\tif (sample.subsamples.length > 1) {\n\t\t\tfor (i = 1; i < sample.subsamples.length; i++) {\n\t\t\t\tres.resources[i] = stream.readUint8Array(sample.subsamples[i].size);\n\t\t\t}\n\t\t}\n\t}\n\tif (typeof (DOMParser) !== \"undefined\") {\n\t\tres.document = (new DOMParser()).parseFromString(res.documentString, \"application/xml\");\n\t}\n\treturn res;\n}\n\nvar Textin4Parser = function() {\t\n}\n\nTextin4Parser.prototype.parseSample = function(sample) {\n\tvar textString;\n\tvar stream = new MP4BoxStream(sample.data.buffer);\n\ttextString = stream.readString(sample.data.length);\n\treturn textString;\n}\n\nTextin4Parser.prototype.parseConfig = function(data) {\n\tvar textString;\n\tvar stream = new MP4BoxStream(data.buffer);\n\tstream.readUint32(); // version & flags\n\ttextString = stream.readCString();\n\treturn textString;\n}\n\nif (typeof exports !== 'undefined') {\n\texports.VTTin4Parser = VTTin4Parser;\n\texports.XMLSubtitlein4Parser = XMLSubtitlein4Parser;\n\texports.Textin4Parser = Textin4Parser;\n}\n// file:src/isofile.js\n/*\n * Copyright (c) 2012-2013. Telecom ParisTech/TSI/MM/GPAC Cyril Concolato\n * License: BSD-3-Clause (see LICENSE file)\n */\nvar ISOFile = function (stream) {\n\t/* MutiBufferStream object used to parse boxes */\n\tthis.stream = stream || new MultiBufferStream();\n\t/* Array of all boxes (in order) found in the file */\n\tthis.boxes = [];\n\t/* Array of all mdats */\n\tthis.mdats = [];\n\t/* Array of all moofs */\n\tthis.moofs = [];\n\t/* Boolean indicating if the file is compatible with progressive parsing (moov first) */\n\tthis.isProgressive = false;\n\t/* Boolean used to fire moov start event only once */\n\tthis.moovStartFound = false;\n\t/* Callback called when the moov parsing starts */\n\tthis.onMoovStart = null;\n\t/* Boolean keeping track of the call to onMoovStart, to avoid double calls */\n\tthis.moovStartSent = false;\n\t/* Callback called when the moov is entirely parsed */\n\tthis.onReady = null;\n\t/* Boolean keeping track of the call to onReady, to avoid double calls */\n\tthis.readySent = false;\n\t/* Callback to call when segments are ready */\n\tthis.onSegment = null;\n\t/* Callback to call when samples are ready */\n\tthis.onSamples = null;\n\t/* Callback to call when there is an error in the parsing or processing of samples */\n\tthis.onError = null;\n\t/* Boolean indicating if the moov box run-length encoded tables of sample information have been processed */\n\tthis.sampleListBuilt = false;\n\t/* Array of Track objects for which fragmentation of samples is requested */\n\tthis.fragmentedTracks = [];\n\t/* Array of Track objects for which extraction of samples is requested */\n\tthis.extractedTracks = [];\n\t/* Boolean indicating that fragmention is ready */\n\tthis.isFragmentationInitialized = false;\n\t/* Boolean indicating that fragmented has started */\n\tthis.sampleProcessingStarted = false;\n\t/* Number of the next 'moof' to generate when fragmenting */\n\tthis.nextMoofNumber = 0;\n\t/* Boolean indicating if the initial list of items has been produced */\n\tthis.itemListBuilt = false;\n\t/* Array of items */\n\tthis.items = [];\n\t/* Array of entity groups */\n\tthis.entity_groups = [];\n\t/* Callback called when the sidx box is entirely parsed */\n\tthis.onSidx = null;\n\t/* Boolean keeping track of the call to onSidx, to avoid double calls */\n\tthis.sidxSent = false;\n}\n\nISOFile.prototype.setSegmentOptions = function(id, user, options) {\n\tvar trak = this.getTrackById(id);\n\tif (trak) {\n\t\tvar fragTrack = {};\n\t\tthis.fragmentedTracks.push(fragTrack);\n\t\tfragTrack.id = id;\n\t\tfragTrack.user = user;\n\t\tfragTrack.trak = trak;\n\t\ttrak.nextSample = 0;\n\t\tfragTrack.segmentStream = null;\n\t\tfragTrack.nb_samples = 1000;\n\t\tfragTrack.rapAlignement = true;\n\t\tif (options) {\n\t\t\tif (options.nbSamples) fragTrack.nb_samples = options.nbSamples;\n\t\t\tif (options.rapAlignement) fragTrack.rapAlignement = options.rapAlignement;\n\t\t}\n\t}\n}\n\nISOFile.prototype.unsetSegmentOptions = function(id) {\n\tvar index = -1;\n\tfor (var i = 0; i < this.fragmentedTracks.length; i++) {\n\t\tvar fragTrack = this.fragmentedTracks[i];\n\t\tif (fragTrack.id == id) {\n\t\t\tindex = i;\n\t\t}\n\t}\n\tif (index > -1) {\n\t\tthis.fragmentedTracks.splice(index, 1);\n\t}\n}\n\nISOFile.prototype.setExtractionOptions = function(id, user, options) {\n\tvar trak = this.getTrackById(id);\n\tif (trak) {\n\t\tvar extractTrack = {};\n\t\tthis.extractedTracks.push(extractTrack);\n\t\textractTrack.id = id;\n\t\textractTrack.user = user;\n\t\textractTrack.trak = trak;\n\t\ttrak.nextSample = 0;\n\t\textractTrack.nb_samples = 1000;\n\t\textractTrack.samples = [];\n\t\tif (options) {\n\t\t\tif (options.nbSamples) extractTrack.nb_samples = options.nbSamples;\n\t\t}\n\t}\n}\n\nISOFile.prototype.unsetExtractionOptions = function(id) {\n\tvar index = -1;\n\tfor (var i = 0; i < this.extractedTracks.length; i++) {\n\t\tvar extractTrack = this.extractedTracks[i];\n\t\tif (extractTrack.id == id) {\n\t\t\tindex = i;\n\t\t}\n\t}\n\tif (index > -1) {\n\t\tthis.extractedTracks.splice(index, 1);\n\t}\n}\n\nISOFile.prototype.parse = function() {\n\tvar found;\n\tvar ret;\n\tvar box;\n\tvar parseBoxHeadersOnly = false;\n\n\tif (this.restoreParsePosition)\t{\n\t\tif (!this.restoreParsePosition()) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\twhile (true) {\n\n\t\tif (this.hasIncompleteMdat && this.hasIncompleteMdat()) {\n\t\t\tif (this.processIncompleteMdat()) {\n\t\t\t\tcontinue;\n\t\t\t} else {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else {\n\t\t\tif (this.saveParsePosition)\t{\n\t\t\t\tthis.saveParsePosition();\n\t\t\t}\n\t\t\tret = BoxParser.parseOneBox(this.stream, parseBoxHeadersOnly);\n\t\t\tif (ret.code === BoxParser.ERR_NOT_ENOUGH_DATA) {\n\t\t\t\tif (this.processIncompleteBox) {\n\t\t\t\t\tif (this.processIncompleteBox(ret)) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar box_type;\n\t\t\t\t/* the box is entirely parsed */\n\t\t\t\tbox = ret.box;\n\t\t\t\tbox_type = (box.type !== \"uuid\" ? box.type : box.uuid);\n\t\t\t\t/* store the box in the 'boxes' array to preserve box order (for file rewrite if needed) */\n\t\t\t\tthis.boxes.push(box);\n\t\t\t\t/* but also store box in a property for more direct access */\n\t\t\t\tswitch (box_type) {\n\t\t\t\t\tcase \"mdat\":\n\t\t\t\t\t\tthis.mdats.push(box);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"moof\":\n\t\t\t\t\t\tthis.moofs.push(box);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"moov\":\n\t\t\t\t\t\tthis.moovStartFound = true;\n\t\t\t\t\t\tif (this.mdats.length === 0) {\n\t\t\t\t\t\t\tthis.isProgressive = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t/* no break */\n\t\t\t\t\t\t/* falls through */\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif (this[box_type] !== undefined) {\n\t\t\t\t\t\t\tLog.warn(\"ISOFile\", \"Duplicate Box of type: \"+box_type+\", overriding previous occurrence\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis[box_type] = box;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (this.updateUsedBytes) {\n\t\t\t\t\tthis.updateUsedBytes(box, ret);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nISOFile.prototype.checkBuffer = function (ab) {\n\tif (ab === null || ab === undefined) {\n\t\tthrow(\"Buffer must be defined and non empty\");\n\t}\n\tif (ab.fileStart === undefined) {\n\t\tthrow(\"Buffer must have a fileStart property\");\n\t}\n\tif (ab.byteLength === 0) {\n\t\tLog.warn(\"ISOFile\", \"Ignoring empty buffer (fileStart: \"+ab.fileStart+\")\");\n\t\tthis.stream.logBufferLevel();\n\t\treturn false;\n\t}\n\tLog.info(\"ISOFile\", \"Processing buffer (fileStart: \"+ab.fileStart+\")\");\n\n\t/* mark the bytes in the buffer as not being used yet */\n\tab.usedBytes = 0;\n\tthis.stream.insertBuffer(ab);\n\tthis.stream.logBufferLevel();\n\n\tif (!this.stream.initialized()) {\n\t\tLog.warn(\"ISOFile\", \"Not ready to start parsing\");\n\t\treturn false;\n\t}\n\treturn true;\n}\n\n/* Processes a new ArrayBuffer (with a fileStart property)\n Returns the next expected file position, or undefined if not ready to parse */\nISOFile.prototype.appendBuffer = function(ab, last) {\n\tvar nextFileStart;\n\tif (!this.checkBuffer(ab)) {\n\t\treturn;\n\t}\n\n\t/* Parse whatever is in the existing buffers */\n\tthis.parse();\n\n\t/* Check if the moovStart callback needs to be called */\n\tif (this.moovStartFound && !this.moovStartSent) {\n\t\tthis.moovStartSent = true;\n\t\tif (this.onMoovStart) this.onMoovStart();\n\t}\n\n\tif (this.moov) {\n\t\t/* A moov box has been entirely parsed */\n\n\t\t/* if this is the first call after the moov is found we initialize the list of samples (may be empty in fragmented files) */\n\t\tif (!this.sampleListBuilt) {\n\t\t\tthis.buildSampleLists();\n\t\t\tthis.sampleListBuilt = true;\n\t\t}\n\n\t\t/* We update the sample information if there are any new moof boxes */\n\t\tthis.updateSampleLists();\n\n\t\t/* If the application needs to be informed that the 'moov' has been found,\n\t\t we create the information object and callback the application */\n\t\tif (this.onReady && !this.readySent) {\n\t\t\tthis.readySent = true;\n\t\t\tthis.onReady(this.getInfo());\n\t\t}\n\n\t\t/* See if any sample extraction or segment creation needs to be done with the available samples */\n\t\tthis.processSamples(last);\n\n\t\t/* Inform about the best range to fetch next */\n\t\tif (this.nextSeekPosition) {\n\t\t\tnextFileStart = this.nextSeekPosition;\n\t\t\tthis.nextSeekPosition = undefined;\n\t\t} else {\n\t\t\tnextFileStart = this.nextParsePosition;\n\t\t}\n\t\tif (this.stream.getEndFilePositionAfter) {\n\t\t\tnextFileStart = this.stream.getEndFilePositionAfter(nextFileStart);\n\t\t}\n\t} else {\n\t\tif (this.nextParsePosition) {\n\t\t\t/* moov has not been parsed but the first buffer was received,\n\t\t\t the next fetch should probably be the next box start */\n\t\t\tnextFileStart = this.nextParsePosition;\n\t\t} else {\n\t\t\t/* No valid buffer has been parsed yet, we cannot know what to parse next */\n\t\t\tnextFileStart = 0;\n\t\t}\n\t}\n\tif (this.sidx) {\n\t\tif (this.onSidx && !this.sidxSent) {\n\t\t\tthis.onSidx(this.sidx);\n\t\t\tthis.sidxSent = true;\n\t\t}\n\t}\n\tif (this.meta) {\n\t\tif (this.flattenItemInfo && !this.itemListBuilt) {\n\t\t\tthis.flattenItemInfo();\n\t\t\tthis.itemListBuilt = true;\n\t\t}\n\t\tif (this.processItems) {\n\t\t\tthis.processItems(this.onItem);\n\t\t}\n\t}\n\n\tif (this.stream.cleanBuffers) {\n\t\tLog.info(\"ISOFile\", \"Done processing buffer (fileStart: \"+ab.fileStart+\") - next buffer to fetch should have a fileStart position of \"+nextFileStart);\n\t\tthis.stream.logBufferLevel();\n\t\tthis.stream.cleanBuffers();\n\t\tthis.stream.logBufferLevel(true);\n\t\tLog.info(\"ISOFile\", \"Sample data size in memory: \"+this.getAllocatedSampleDataSize());\n\t}\n\treturn nextFileStart;\n}\n\nISOFile.prototype.getInfo = function() {\n\tvar i, j;\n\tvar movie = {};\n\tvar trak;\n\tvar track;\n\tvar ref;\n\tvar sample_desc;\n\tvar _1904 = (new Date('1904-01-01T00:00:00Z').getTime());\n\n\tif (this.moov) {\n\t\tmovie.hasMoov = true;\n\t\tmovie.duration = this.moov.mvhd.duration;\n\t\tmovie.timescale = this.moov.mvhd.timescale;\n\t\tmovie.isFragmented = (this.moov.mvex != null);\n\t\tif (movie.isFragmented && this.moov.mvex.mehd) {\n\t\t\tmovie.fragment_duration = this.moov.mvex.mehd.fragment_duration;\n\t\t}\n\t\tmovie.isProgressive = this.isProgressive;\n\t\tmovie.hasIOD = (this.moov.iods != null);\n\t\tmovie.brands = [];\n\t\tmovie.brands.push(this.ftyp.major_brand);\n\t\tmovie.brands = movie.brands.concat(this.ftyp.compatible_brands);\n\t\tmovie.created = new Date(_1904+this.moov.mvhd.creation_time*1000);\n\t\tmovie.modified = new Date(_1904+this.moov.mvhd.modification_time*1000);\n\t\tmovie.tracks = [];\n\t\tmovie.audioTracks = [];\n\t\tmovie.videoTracks = [];\n\t\tmovie.subtitleTracks = [];\n\t\tmovie.metadataTracks = [];\n\t\tmovie.hintTracks = [];\n\t\tmovie.otherTracks = [];\n\t\tfor (i = 0; i < this.moov.traks.length; i++) {\n\t\t\ttrak = this.moov.traks[i];\n\t\t\tsample_desc = trak.mdia.minf.stbl.stsd.entries[0];\n\t\t\ttrack = {};\n\t\t\tmovie.tracks.push(track);\n\t\t\ttrack.id = trak.tkhd.track_id;\n\t\t\ttrack.name = trak.mdia.hdlr.name;\n\t\t\ttrack.references = [];\n\t\t\tif (trak.tref) {\n\t\t\t\tfor (j = 0; j < trak.tref.boxes.length; j++) {\n\t\t\t\t\tref = {};\n\t\t\t\t\ttrack.references.push(ref);\n\t\t\t\t\tref.type = trak.tref.boxes[j].type;\n\t\t\t\t\tref.track_ids = trak.tref.boxes[j].track_ids;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (trak.edts) {\n\t\t\t\ttrack.edits = trak.edts.elst.entries;\n\t\t\t}\n\t\t\ttrack.created = new Date(_1904+trak.tkhd.creation_time*1000);\n\t\t\ttrack.modified = new Date(_1904+trak.tkhd.modification_time*1000);\n\t\t\ttrack.movie_duration = trak.tkhd.duration;\n\t\t\ttrack.movie_timescale = movie.timescale;\n\t\t\ttrack.layer = trak.tkhd.layer;\n\t\t\ttrack.alternate_group = trak.tkhd.alternate_group;\n\t\t\ttrack.volume = trak.tkhd.volume;\n\t\t\ttrack.matrix = trak.tkhd.matrix;\n\t\t\ttrack.track_width = trak.tkhd.width/(1<<16);\n\t\t\ttrack.track_height = trak.tkhd.height/(1<<16);\n\t\t\ttrack.timescale = trak.mdia.mdhd.timescale;\n\t\t\ttrack.cts_shift = trak.mdia.minf.stbl.cslg;\n\t\t\ttrack.duration = trak.mdia.mdhd.duration;\n\t\t\ttrack.samples_duration = trak.samples_duration;\n\t\t\ttrack.codec = sample_desc.getCodec();\n\t\t\ttrack.kind = (trak.udta && trak.udta.kinds.length ? trak.udta.kinds[0] : { schemeURI: \"\", value: \"\"});\n\t\t\ttrack.language = (trak.mdia.elng ? trak.mdia.elng.extended_language : trak.mdia.mdhd.languageString);\n\t\t\ttrack.nb_samples = trak.samples.length;\n\t\t\ttrack.size = trak.samples_size;\n\t\t\ttrack.bitrate = (track.size*8*track.timescale)/track.samples_duration;\n\t\t\tif (sample_desc.isAudio()) {\n\t\t\t\ttrack.type = \"audio\";\n\t\t\t\tmovie.audioTracks.push(track);\n\t\t\t\ttrack.audio = {};\n\t\t\t\ttrack.audio.sample_rate = sample_desc.getSampleRate();\n\t\t\t\ttrack.audio.channel_count = sample_desc.getChannelCount();\n\t\t\t\ttrack.audio.sample_size = sample_desc.getSampleSize();\n\t\t\t} else if (sample_desc.isVideo()) {\n\t\t\t\ttrack.type = \"video\";\n\t\t\t\tmovie.videoTracks.push(track);\n\t\t\t\ttrack.video = {};\n\t\t\t\ttrack.video.width = sample_desc.getWidth();\n\t\t\t\ttrack.video.height = sample_desc.getHeight();\n\t\t\t} else if (sample_desc.isSubtitle()) {\n\t\t\t\ttrack.type = \"subtitles\";\n\t\t\t\tmovie.subtitleTracks.push(track);\n\t\t\t} else if (sample_desc.isHint()) {\n\t\t\t\ttrack.type = \"metadata\";\n\t\t\t\tmovie.hintTracks.push(track);\n\t\t\t} else if (sample_desc.isMetadata()) {\n\t\t\t\ttrack.type = \"metadata\";\n\t\t\t\tmovie.metadataTracks.push(track);\n\t\t\t} else {\n\t\t\t\ttrack.type = \"metadata\";\n\t\t\t\tmovie.otherTracks.push(track);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tmovie.hasMoov = false;\n\t}\n\tmovie.mime = \"\";\n\tif (movie.hasMoov && movie.tracks) {\n\t\tif (movie.videoTracks && movie.videoTracks.length > 0) {\n\t\t\tmovie.mime += 'video/mp4; codecs=\\\"';\n\t\t} else if (movie.audioTracks && movie.audioTracks.length > 0) {\n\t\t\tmovie.mime += 'audio/mp4; codecs=\\\"';\n\t\t} else {\n\t\t\tmovie.mime += 'application/mp4; codecs=\\\"';\n\t\t}\n\t\tfor (i = 0; i < movie.tracks.length; i++) {\n\t\t\tif (i !== 0) movie.mime += ',';\n\t\t\tmovie.mime+= movie.tracks[i].codec;\n\t\t}\n\t\tmovie.mime += '\\\"; profiles=\\\"';\n\t\tmovie.mime += this.ftyp.compatible_brands.join();\n\t\tmovie.mime += '\\\"';\n\t}\n\treturn movie;\n}\n\nISOFile.prototype.setNextSeekPositionFromSample = function (sample) {\n\tif (!sample) {\n\t\treturn;\n\t}\n\tif (this.nextSeekPosition) {\n\t\tthis.nextSeekPosition = Math.min(sample.offset+sample.alreadyRead,this.nextSeekPosition);\n\t} else {\n\t\tthis.nextSeekPosition = sample.offset+sample.alreadyRead;\n\t}\n}\n\nISOFile.prototype.processSamples = function(last) {\n\tvar i;\n\tvar trak;\n\tif (!this.sampleProcessingStarted) return;\n\n\t/* For each track marked for fragmentation,\n\t check if the next sample is there (i.e. if the sample information is known (i.e. moof has arrived) and if it has been downloaded)\n\t and create a fragment with it */\n\tif (this.isFragmentationInitialized && this.onSegment !== null) {\n\t\tfor (i = 0; i < this.fragmentedTracks.length; i++) {\n\t\t\tvar fragTrak = this.fragmentedTracks[i];\n\t\t\ttrak = fragTrak.trak;\n\t\t\twhile (trak.nextSample < trak.samples.length && this.sampleProcessingStarted) {\n\t\t\t\t/* The sample information is there (either because the file is not fragmented and this is not the last sample,\n\t\t\t\tor because the file is fragmented and the moof for that sample has been received */\n\t\t\t\tLog.debug(\"ISOFile\", \"Creating media fragment on track #\"+fragTrak.id +\" for sample \"+trak.nextSample);\n\t\t\t\tvar result = this.createFragment(fragTrak.id, trak.nextSample, fragTrak.segmentStream);\n\t\t\t\tif (result) {\n\t\t\t\t\tfragTrak.segmentStream = result;\n\t\t\t\t\ttrak.nextSample++;\n\t\t\t\t} else {\n\t\t\t\t\t/* The fragment could not be created because the media data is not there (not downloaded), wait for it */\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t/* A fragment is created by sample, but the segment is the accumulation in the buffer of these fragments.\n\t\t\t\t It is flushed only as requested by the application (nb_samples) to avoid too many callbacks */\n\t\t\t\tif (trak.nextSample % fragTrak.nb_samples === 0 || (last || trak.nextSample >= trak.samples.length)) {\n\t\t\t\t\tLog.info(\"ISOFile\", \"Sending fragmented data on track #\"+fragTrak.id+\" for samples [\"+Math.max(0,trak.nextSample-fragTrak.nb_samples)+\",\"+(trak.nextSample-1)+\"]\");\n\t\t\t\t\tLog.info(\"ISOFile\", \"Sample data size in memory: \"+this.getAllocatedSampleDataSize());\n\t\t\t\t\tif (this.onSegment) {\n\t\t\t\t\t\tthis.onSegment(fragTrak.id, fragTrak.user, fragTrak.segmentStream.buffer, trak.nextSample, (last || trak.nextSample >= trak.samples.length));\n\t\t\t\t\t}\n\t\t\t\t\t/* force the creation of a new buffer */\n\t\t\t\t\tfragTrak.segmentStream = null;\n\t\t\t\t\tif (fragTrak !== this.fragmentedTracks[i]) {\n\t\t\t\t\t\t/* make sure we can stop fragmentation if needed */\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif (this.onSamples !== null) {\n\t\t/* For each track marked for data export,\n\t\t check if the next sample is there (i.e. has been downloaded) and send it */\n\t\tfor (i = 0; i < this.extractedTracks.length; i++) {\n\t\t\tvar extractTrak = this.extractedTracks[i];\n\t\t\ttrak = extractTrak.trak;\n\t\t\twhile (trak.nextSample < trak.samples.length && this.sampleProcessingStarted) {\n\t\t\t\tLog.debug(\"ISOFile\", \"Exporting on track #\"+extractTrak.id +\" sample #\"+trak.nextSample);\n\t\t\t\tvar sample = this.getSample(trak, trak.nextSample);\n\t\t\t\tif (sample) {\n\t\t\t\t\ttrak.nextSample++;\n\t\t\t\t\textractTrak.samples.push(sample);\n\t\t\t\t} else {\n\t\t\t\t\tthis.setNextSeekPositionFromSample(trak.samples[trak.nextSample]);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (trak.nextSample % extractTrak.nb_samples === 0 || trak.nextSample >= trak.samples.length) {\n\t\t\t\t\tLog.debug(\"ISOFile\", \"Sending samples on track #\"+extractTrak.id+\" for sample \"+trak.nextSample);\n\t\t\t\t\tif (this.onSamples) {\n\t\t\t\t\t\tthis.onSamples(extractTrak.id, extractTrak.user, extractTrak.samples);\n\t\t\t\t\t}\n\t\t\t\t\textractTrak.samples = [];\n\t\t\t\t\tif (extractTrak !== this.extractedTracks[i]) {\n\t\t\t\t\t\t/* check if the extraction needs to be stopped */\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n/* Find and return specific boxes using recursion and early return */\nISOFile.prototype.getBox = function(type) {\n var result = this.getBoxes(type, true);\n return (result.length ? result[0] : null);\n}\n\nISOFile.prototype.getBoxes = function(type, returnEarly) {\n var result = [];\n ISOFile._sweep.call(this, type, result, returnEarly);\n return result;\n}\n\nISOFile._sweep = function(type, result, returnEarly) {\n if (this.type && this.type == type) result.push(this);\n for (var box in this.boxes) {\n if (result.length && returnEarly) return;\n ISOFile._sweep.call(this.boxes[box], type, result, returnEarly);\n }\n}\n\nISOFile.prototype.getTrackSamplesInfo = function(track_id) {\n\tvar track = this.getTrackById(track_id);\n\tif (track) {\n\t\treturn track.samples;\n\t} else {\n\t\treturn;\n\t}\n}\n\nISOFile.prototype.getTrackSample = function(track_id, number) {\n\tvar track = this.getTrackById(track_id);\n\tvar sample = this.getSample(track, number);\n\treturn sample;\n}\n\n/* Called by the application to release the resources associated to samples already forwarded to the application */\nISOFile.prototype.releaseUsedSamples = function (id, sampleNum) {\n\tvar size = 0;\n\tvar trak = this.getTrackById(id);\n\tif (!trak.lastValidSample) trak.lastValidSample = 0;\n\tfor (var i = trak.lastValidSample; i < sampleNum; i++) {\n\t\tsize+=this.releaseSample(trak, i);\n\t}\n\tLog.info(\"ISOFile\", \"Track #\"+id+\" released samples up to \"+sampleNum+\" (released size: \"+size+\", remaining: \"+this.samplesDataSize+\")\");\n\ttrak.lastValidSample = sampleNum;\n}\n\nISOFile.prototype.start = function() {\n\tthis.sampleProcessingStarted = true;\n\tthis.processSamples(false);\n}\n\nISOFile.prototype.stop = function() {\n\tthis.sampleProcessingStarted = false;\n}\n\n/* Called by the application to flush the remaining samples (e.g. once the download is finished or when no more samples will be added) */\nISOFile.prototype.flush = function() {\n\tLog.info(\"ISOFile\", \"Flushing remaining samples\");\n\tthis.updateSampleLists();\n\tthis.processSamples(true);\n\tthis.stream.cleanBuffers();\n\tthis.stream.logBufferLevel(true);\n}\n\n/* Finds the byte offset for a given time on a given track\n also returns the time of the previous rap */\nISOFile.prototype.seekTrack = function(time, useRap, trak) {\n\tvar j;\n\tvar sample;\n\tvar seek_offset = Infinity;\n\tvar rap_seek_sample_num = 0;\n\tvar seek_sample_num = 0;\n\tvar timescale;\n\n\tif (trak.samples.length === 0) {\n\t\tLog.info(\"ISOFile\", \"No sample in track, cannot seek! Using time \"+Log.getDurationString(0, 1) +\" and offset: \"+0);\n\t\treturn { offset: 0, time: 0 };\n\t}\n\n\tfor (j = 0; j < trak.samples.length; j++) {\n\t\tsample = trak.samples[j];\n\t\tif (j === 0) {\n\t\t\tseek_sample_num = 0;\n\t\t\ttimescale = sample.timescale;\n\t\t} else if (sample.cts > time * sample.timescale) {\n\t\t\tseek_sample_num = j-1;\n\t\t\tbreak;\n\t\t}\n\t\tif (useRap && sample.is_sync) {\n\t\t\trap_seek_sample_num = j;\n\t\t}\n\t}\n\tif (useRap) {\n\t\tseek_sample_num = rap_seek_sample_num;\n\t}\n\ttime = trak.samples[seek_sample_num].cts;\n\ttrak.nextSample = seek_sample_num;\n\twhile (trak.samples[seek_sample_num].alreadyRead === trak.samples[seek_sample_num].size) {\n\t\t// No remaining samples to look for, all are downloaded.\n\t\tif (!trak.samples[seek_sample_num + 1]) {\n\t\t\tbreak;\n\t\t}\n\t\tseek_sample_num++;\n\t}\n\tseek_offset = trak.samples[seek_sample_num].offset+trak.samples[seek_sample_num].alreadyRead;\n\tLog.info(\"ISOFile\", \"Seeking to \"+(useRap ? \"RAP\": \"\")+\" sample #\"+trak.nextSample+\" on track \"+trak.tkhd.track_id+\", time \"+Log.getDurationString(time, timescale) +\" and offset: \"+seek_offset);\n\treturn { offset: seek_offset, time: time/timescale };\n}\n\nISOFile.prototype.getTrackDuration = function (trak) {\n\tvar sample;\n\n\tif (!trak.samples) {\n\t\treturn Infinity;\n\t}\n\tsample = trak.samples[trak.samples.length - 1];\n\treturn (sample.cts + sample.duration) / sample.timescale;\n}\n\n/* Finds the byte offset in the file corresponding to the given time or to the time of the previous RAP */\nISOFile.prototype.seek = function(time, useRap) {\n\tvar moov = this.moov;\n\tvar trak;\n\tvar trak_seek_info;\n\tvar i;\n\tvar seek_info = { offset: Infinity, time: Infinity };\n\tif (!this.moov) {\n\t\tthrow \"Cannot seek: moov not received!\";\n\t} else {\n\t\tfor (i = 0; i<moov.traks.length; i++) {\n\t\t\ttrak = moov.traks[i];\n\t\t\tif (time > this.getTrackDuration(trak)) { // skip tracks that already ended\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\ttrak_seek_info = this.seekTrack(time, useRap, trak);\n\t\t\tif (trak_seek_info.offset < seek_info.offset) {\n\t\t\t\tseek_info.offset = trak_seek_info.offset;\n\t\t\t}\n\t\t\tif (trak_seek_info.time < seek_info.time) {\n\t\t\t\tseek_info.time = trak_seek_info.time;\n\t\t\t}\n\t\t}\n\t\tLog.info(\"ISOFile\", \"Seeking at time \"+Log.getDurationString(seek_info.time, 1)+\" needs a buffer with a fileStart position of \"+seek_info.offset);\n\t\tif (seek_info.offset === Infinity) {\n\t\t\t/* No sample info, in all tracks, cannot seek */\n\t\t\tseek_info = { offset: this.nextParsePosition, time: 0 };\n\t\t} else {\n\t\t\t/* check if the seek position is already in some buffer and\n\t\t\t in that case return the end of that buffer (or of the last contiguous buffer) */\n\t\t\t/* TODO: Should wait until append operations are done */\n\t\t\tseek_info.offset = this.stream.getEndFilePositionAfter(seek_info.offset);\n\t\t}\n\t\tLog.info(\"ISOFile\", \"Adjusted seek position (after checking data already in buffer): \"+seek_info.offset);\n\t\treturn seek_info;\n\t}\n}\n\nISOFile.prototype.equal = function(b) {\n\tvar box_index = 0;\n\twhile (box_index < this.boxes.length && box_index < b.boxes.length) {\n\t\tvar a_box = this.boxes[box_index];\n\t\tvar b_box = b.boxes[box_index];\n\t\tif (!BoxParser.boxEqual(a_box, b_box)) {\n\t\t\treturn false;\n\t\t}\n\t\tbox_index++;\n\t}\n\treturn true;\n}\n\nif (typeof exports !== 'undefined') {\n\texports.ISOFile = ISOFile;\n}\n// file:src/isofile-advanced-parsing.js\n/* position in the current buffer of the beginning of the last box parsed */\nISOFile.prototype.lastBoxStartPosition = 0;\n/* indicator if the parsing is stuck in the middle of an mdat box */\nISOFile.prototype.parsingMdat = null;\n/* next file position that the parser needs:\n - 0 until the first buffer (i.e. fileStart ===0) has been received \n - otherwise, the next box start until the moov box has been parsed\n - otherwise, the position of the next sample to fetch\n */\nISOFile.prototype.nextParsePosition = 0;\n/* keep mdat data */\nISOFile.prototype.discardMdatData = false;\n\nISOFile.prototype.processIncompleteBox = function(ret) {\n\tvar box;\n\tvar merged;\n\tvar found;\n\t\n\t/* we did not have enough bytes in the current buffer to parse the entire box */\n\tif (ret.type === \"mdat\") { \n\t\t/* we had enough bytes to get its type and size and it's an 'mdat' */\n\t\t\n\t\t/* special handling for mdat boxes, since we don't actually need to parse it linearly \n\t\t we create the box */\n\t\tbox = new BoxParser[ret.type+\"Box\"](ret.size);\t\n\t\tthis.parsingMdat = box;\n\t\tthis.boxes.push(box);\n\t\tthis.mdats.push(box);\t\t\t\n\t\tbox.start = ret.start;\n\t\tbox.hdr_size = ret.hdr_size;\n\t\tthis.stream.addUsedBytes(box.hdr_size);\n\n\t\t/* indicate that the parsing should start from the end of the box */\n\t\tthis.lastBoxStartPosition = box.start + box.size;\n \t\t/* let's see if we have the end of the box in the other buffers */\n\t\tfound = this.stream.seek(box.start + box.size, false, this.discardMdatData);\n\t\tif (found) {\n\t\t\t/* found the end of the box */\n\t\t\tthis.parsingMdat = null;\n\t\t\t/* let's see if we can parse more in this buffer */\n\t\t\treturn true;\n\t\t} else {\n\t\t\t/* 'mdat' end not found in the existing buffers */\n\t\t\t/* determine the next position in the file to start parsing from */\n\t\t\tif (!this.moovStartFound) {\n\t\t\t\t/* moov not find yet, \n\t\t\t\t the file probably has 'mdat' at the beginning, and 'moov' at the end, \n\t\t\t\t indicate that the downloader should not try to download those bytes now */\n\t\t\t\tthis.nextParsePosition = box.start + box.size;\n\t\t\t} else {\n\t\t\t\t/* we have the start of the moov box, \n\t\t\t\t the next bytes should try to complete the current 'mdat' */\n\t\t\t\tthis.nextParsePosition = this.stream.findEndContiguousBuf();\n\t\t\t}\n\t\t\t/* not much we can do, wait for more buffers to arrive */\n\t\t\treturn false;\n\t\t}\n\t} else {\n\t\t/* box is incomplete, we may not even know its type */\n\t\tif (ret.type === \"moov\") { \n\t\t\t/* the incomplete box is a 'moov' box */\n\t\t\tthis.moovStartFound = true;\n\t\t\tif (this.mdats.length === 0) {\n\t\t\t\tthis.isProgressive = true;\n\t\t\t}\n\t\t}\n\t\t/* either it's not an mdat box (and we need to parse it, we cannot skip it)\n\t\t (TODO: we could skip 'free' boxes ...)\n\t\t\t or we did not have enough data to parse the type and size of the box, \n\t\t we try to concatenate the current buffer with the next buffer to restart parsing */\n\t\tmerged = (this.stream.mergeNextBuffer ? this.stream.mergeNextBuffer() : false);\n\t\tif (merged) {\n\t\t\t/* The next buffer was contiguous, the merging succeeded,\n\t\t\t we can now continue parsing, \n\t\t\t the next best position to parse is at the end of this new buffer */\n\t\t\tthis.nextParsePosition = this.stream.getEndPosition();\n\t\t\treturn true;\n\t\t} else {\n\t\t\t/* we cannot concatenate existing buffers because they are not contiguous or because there is no additional buffer */\n\t\t\t/* The next best position to parse is still at the end of this old buffer */\n\t\t\tif (!ret.type) {\n\t\t\t\t/* There were not enough bytes in the buffer to parse the box type and length,\n\t\t\t\t the next fetch should retrieve those missing bytes, i.e. the next bytes after this buffer */\n\t\t\t\tthis.nextParsePosition = this.stream.getEndPosition();\n\t\t\t} else {\n\t\t\t\t/* we had enough bytes to parse size and type of the incomplete box\n\t\t\t\t if we haven't found yet the moov box, skip this one and try the next one \n\t\t\t\t if we have found the moov box, let's continue linear parsing */\n\t\t\t\tif (this.moovStartFound) {\n\t\t\t\t\tthis.nextParsePosition = this.stream.getEndPosition();\n\t\t\t\t} else {\n\t\t\t\t\tthis.nextParsePosition = this.stream.getPosition() + ret.size;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}\n}\n\nISOFile.prototype.hasIncompleteMdat = function () {\n\treturn (this.parsingMdat !== null);\n}\n\nISOFile.prototype.processIncompleteMdat = function () {\n\tvar box;\n\tvar found;\n\t\n\t/* we are in the parsing of an incomplete mdat box */\n\tbox = this.parsingMdat;\n\n\tfound = this.stream.seek(box.start + box.size, false, this.discardMdatData);\n\tif (found) {\n\t\tLog.debug(\"ISOFile\", \"Found 'mdat' end in buffered data\");\n\t\t/* the end of the mdat has been found */ \n\t\tthis.parsingMdat = null;\n\t\t/* we can parse more in this buffer */\n\t\treturn true;\n\t} else {\n\t\t/* we don't have the end of this mdat yet, \n\t\t indicate that the next byte to fetch is the end of the buffers we have so far, \n\t\t return and wait for more buffer to come */\n\t\tthis.nextParsePosition = this.stream.findEndContiguousBuf();\n\t\treturn false;\n\t}\n}\n\nISOFile.prototype.restoreParsePosition = function() {\n\t/* Reposition at the start position of the previous box not entirely parsed */\n\treturn this.stream.seek(this.lastBoxStartPosition, true, this.discardMdatData);\n}\n\nISOFile.prototype.saveParsePosition = function() {\n\t/* remember the position of the box start in case we need to roll back (if the box is incomplete) */\n\tthis.lastBoxStartPosition = this.stream.getPosition();\t\n}\n\nISOFile.prototype.updateUsedBytes = function(box, ret) {\n\tif (this.stream.addUsedBytes) {\n\t\tif (box.type === \"mdat\") {\n\t\t\t/* for an mdat box, only its header is considered used, other bytes will be used when sample data is requested */\n\t\t\tthis.stream.addUsedBytes(box.hdr_size);\n\t\t\tif (this.discardMdatData) {\n\t\t\t\tthis.stream.addUsedBytes(box.size-box.hdr_size);\n\t\t\t}\n\t\t} else {\n\t\t\t/* for all other boxes, the entire box data is considered used */\n\t\t\tthis.stream.addUsedBytes(box.size);\n\t\t}\t\n\t}\n}\n// file:src/isofile-advanced-creation.js\nISOFile.prototype.add = BoxParser.Box.prototype.add;\nISOFile.prototype.addBox = BoxParser.Box.prototype.addBox;\n\nISOFile.prototype.init = function (_options) {\n\tvar options = _options || {}; \n\tvar ftyp = this.add(\"ftyp\").set(\"major_brand\", (options.brands && options.brands[0]) || \"iso4\")\n\t\t\t\t\t\t\t .set(\"minor_version\", 0)\n\t\t\t\t\t\t\t .set(\"compatible_brands\", options.brands || [\"iso4\"]);\n\tvar moov = this.add(\"moov\");\n\tmoov.add(\"mvhd\").set(\"timescale\", options.timescale || 600)\n\t\t\t\t\t.set(\"rate\", options.rate || 1<<16)\n\t\t\t\t\t.set(\"creation_time\", 0)\n\t\t\t\t\t.set(\"modification_time\", 0)\n\t\t\t\t\t.set(\"duration\", options.duration || 0)\n\t\t\t\t\t.set(\"volume\", (options.width) ? 0 : 0x0100)\n\t\t\t\t\t.set(\"matrix\", [ 1<<16, 0, 0, 0, 1<<16, 0, 0, 0, 0x40000000])\n\t\t\t\t\t.set(\"next_track_id\", 1);\n\tmoov.add(\"mvex\");\n\treturn this;\n}\n\nISOFile.prototype.addTrack = function (_options) {\n\tif (!this.moov) {\n\t\tthis.init(_options);\n\t}\n\n\tvar options = _options || {}; \n\toptions.width = options.width || 320;\n\toptions.height = options.height || 320;\n\toptions.id = options.id || this.moov.mvhd.next_track_id;\n\toptions.type = options.type || \"avc1\";\n\n\tvar trak = this.moov.add(\"trak\");\n\tthis.moov.mvhd.next_track_id = options.id+1;\n\ttrak.add(\"tkhd\").set(\"flags\",BoxParser.TKHD_FLAG_ENABLED | \n\t\t\t\t\t\t\t\t BoxParser.TKHD_FLAG_IN_MOVIE | \n\t\t\t\t\t\t\t\t BoxParser.TKHD_FLAG_IN_PREVIEW)\n\t\t\t\t\t.set(\"creation_time\",0)\n\t\t\t\t\t.set(\"modification_time\", 0)\n\t\t\t\t\t.set(\"track_id\", options.id)\n\t\t\t\t\t.set(\"duration\", options.duration || 0)\n\t\t\t\t\t.set(\"layer\", options.layer || 0)\n\t\t\t\t\t.set(\"alternate_group\", 0)\n\t\t\t\t\t.set(\"volume\", 1)\n\t\t\t\t\t.set(\"matrix\", [ 1<<16, 0, 0, 0, 1<<16, 0, 0, 0, 0x40000000 ])\n\t\t\t\t\t.set(\"width\", options.width << 16)\n\t\t\t\t\t.set(\"height\", options.height << 16);\n\n\tvar mdia = trak.add(\"mdia\");\n\tmdia.add(\"mdhd\").set(\"creation_time\", 0)\n\t\t\t\t\t.set(\"modification_time\", 0)\n\t\t\t\t\t.set(\"timescale\", options.timescale || 1)\n\t\t\t\t\t.set(\"duration\", options.media_duration || 0)\n\t\t\t\t\t.set(\"language\", options.language || \"und\");\n\n\tmdia.add(\"hdlr\").set(\"handler\", options.hdlr || \"vide\")\n\t\t\t\t\t.set(\"name\", options.name || \"Track created with MP4Box.js\");\n\n\tmdia.add(\"elng\").set(\"extended_language\", options.language || \"fr-FR\");\n\n\tvar minf = mdia.add(\"minf\");\n\tif (BoxParser[options.type+\"SampleEntry\"] === undefined) return;\n\tvar sample_description_entry = new BoxParser[options.type+\"SampleEntry\"]();\n\tsample_description_entry.data_reference_index = 1;\n\tvar media_type = \"\";\n\tfor (var mediaType in BoxParser.sampleEntryCodes) {\n\t\tvar codes = BoxParser.sampleEntryCodes[mediaType];\n\t\tfor (var i = 0; i < codes.length; i++) {\n\t\t\tif (codes.indexOf(options.type) > -1) {\n\t\t\t\tmedia_type = mediaType;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tswitch(media_type) {\n\t\tcase \"Visual\":\n\t\t\tminf.add(\"vmhd\").set(\"graphicsmode\",0).set(\"opcolor\", [ 0, 0, 0 ]);\n\t\t\tsample_description_entry.set(\"width\", options.width)\n\t\t\t\t\t\t.set(\"height\", options.height)\n\t\t\t\t\t\t.set(\"horizresolution\", 0x48<<16)\n\t\t\t\t\t\t.set(\"vertresolution\", 0x48<<16)\n\t\t\t\t\t\t.set(\"frame_count\", 1)\n\t\t\t\t\t\t.set(\"compressorname\", options.type+\" Compressor\")\n\t\t\t\t\t\t.set(\"depth\", 0x18);\n\t\t\tif (options.avcDecoderConfigRecord) {\n\t\t\t\tvar avcC = new BoxParser.avcCBox();\n\t\t\t\tavcC.parse(new MP4BoxStream(options.avcDecoderConfigRecord));\n\t\t\t\tsample_description_entry.addBox(avcC);\n\t\t\t} else if (options.hevcDecoderConfigRecord) {\n\t\t\t\tvar hvcC = new BoxParser.hvcCBox();\n\t\t\t\thvcC.parse(new MP4BoxStream(options.hevcDecoderConfigRecord));\n\t\t\t\tsample_description_entry.addBox(hvcC);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"Audio\":\n\t\t\tminf.add(\"smhd\").set(\"balance\", options.balance || 0);\n\t\t\tsample_description_entry.set(\"channel_count\", options.channel_count || 2)\n\t\t\t\t\t\t.set(\"samplesize\", options.samplesize || 16)\n\t\t\t\t\t\t.set(\"samplerate\", options.samplerate || 1<<16);\n\t\t\tbreak;\n\t\tcase \"Hint\":\n\t\t\tminf.add(\"hmhd\"); // TODO: add properties\n\t\t\tbreak;\n\t\tcase \"Subtitle\":\n\t\t\tminf.add(\"sthd\");\n\t\t\tswitch (options.type) {\n\t\t\t\tcase \"stpp\":\n\t\t\t\t\tsample_description_entry.set(\"namespace\", options.namespace || \"nonamespace\")\n\t\t\t\t\t\t\t\t.set(\"schema_location\", options.schema_location || \"\")\n\t\t\t\t\t\t\t\t.set(\"auxiliary_mime_types\", options.auxiliary_mime_types || \"\");\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"Metadata\":\n\t\t\tminf.add(\"nmhd\");\n\t\t\tbreak;\n\t\tcase \"System\":\n\t\t\tminf.add(\"nmhd\");\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tminf.add(\"nmhd\");\n\t\t\tbreak;\n\t}\n\tif (options.description) {\n\t\tsample_description_entry.addBox(options.description);\n\t}\n\tif (options.description_boxes) {\n\t\toptions.description_boxes.forEach(function (b) {\n\t\t\tsample_description_entry.addBox(b);\n\t\t});\n\t}\n\tminf.add(\"dinf\").add(\"dref\").addEntry((new BoxParser[\"url Box\"]()).set(\"flags\", 0x1));\n\tvar stbl = minf.add(\"stbl\");\n\tstbl.add(\"stsd\").addEntry(sample_description_entry);\n\tstbl.add(\"stts\").set(\"sample_counts\", [])\n\t\t\t\t\t.set(\"sample_deltas\", []);\n\tstbl.add(\"stsc\").set(\"first_chunk\", [])\n\t\t\t\t\t.set(\"samples_per_chunk\", [])\n\t\t\t\t\t.set(\"sample_description_index\", []);\n\tstbl.add(\"stco\").set(\"chunk_offsets\", []);\n\tstbl.add(\"stsz\").set(\"sample_sizes\", []);\n\n\tthis.moov.mvex.add(\"trex\").set(\"track_id\", options.id)\n\t\t\t\t\t\t\t .set(\"default_sample_description_index\", options.default_sample_description_index || 1)\n\t\t\t\t\t\t\t .set(\"default_sample_duration\", options.default_sample_duration || 0)\n\t\t\t\t\t\t\t .set(\"default_sample_size\", options.default_sample_size || 0)\n\t\t\t\t\t\t\t .set(\"default_sample_flags\", options.default_sample_flags || 0);\n\tthis.buildTrakSampleLists(trak);\n\treturn options.id;\n}\n\nBoxParser.Box.prototype.computeSize = function(stream_) {\n\tvar stream = stream_ || new DataStream();\n\tstream.endianness = DataStream.BIG_ENDIAN;\n\tthis.write(stream);\n}\n\nISOFile.prototype.addSample = function (track_id, data, _options) {\n\tvar options = _options || {};\n\tvar sample = {};\n\tvar trak = this.getTrackById(track_id);\n\tif (trak === null) return;\n sample.number = trak.samples.length;\n\tsample.track_id = trak.tkhd.track_id;\n\tsample.timescale = trak.mdia.mdhd.timescale;\n\tsample.description_index = (options.sample_description_index ? options.sample_description_index - 1: 0);\n\tsample.description = trak.mdia.minf.stbl.stsd.entries[sample.description_index];\n\tsample.data = data;\n\tsample.size = data.byteLength;\n\tsample.alreadyRead = sample.size;\n\tsample.duration = options.duration || 1;\n\tsample.cts = options.cts || 0;\n\tsample.dts = options.dts || 0;\n\tsample.is_sync = options.is_sync || false;\n\tsample.is_leading = options.is_leading || 0;\n\tsample.depends_on = options.depends_on || 0;\n\tsample.is_depended_on = options.is_depended_on || 0;\n\tsample.has_redundancy = options.has_redundancy || 0;\n\tsample.degradation_priority = options.degradation_priority || 0;\n\tsample.offset = 0;\n\tsample.subsamples = options.subsamples;\n\ttrak.samples.push(sample);\n\ttrak.samples_size += sample.size;\n\ttrak.samples_duration += sample.duration;\n\tif (trak.first_dts === undefined) {\n\t\ttrak.first_dts = options.dts;\n\t}\n\n\tthis.processSamples();\n\t\n\tvar moof = this.createSingleSampleMoof(sample);\n\tthis.addBox(moof);\n\tmoof.computeSize();\n\t/* adjusting the data_offset now that the moof size is known*/\n\tmoof.trafs[0].truns[0].data_offset = moof.size+8; //8 is mdat header\n\tthis.add(\"mdat\").data = new Uint8Array(data);\n\treturn sample;\n}\n\nISOFile.prototype.createSingleSampleMoof = function(sample) {\n\tvar sample_flags = 0;\n\tif (sample.is_sync)\n\t\tsample_flags = (1 << 25); // sample_depends_on_none (I picture)\n\telse\n\t\tsample_flags = (1 << 16); // non-sync\n\n\tvar moof = new BoxParser.moofBox();\n\tmoof.add(\"mfhd\").set(\"sequence_number\", this.nextMoofNumber);\n\tthis.nextMoofNumber++;\n\tvar traf = moof.add(\"traf\");\n\tvar trak = this.getTrackById(sample.track_id);\n\ttraf.add(\"tfhd\").set(\"track_id\", sample.track_id)\n\t\t\t\t\t.set(\"flags\", BoxParser.TFHD_FLAG_DEFAULT_BASE_IS_MOOF);\n\ttraf.add(\"tfdt\").set(\"baseMediaDecodeTime\", (sample.dts - (trak.first_dts || 0)));\n\ttraf.add(\"trun\").set(\"flags\", BoxParser.TRUN_FLAGS_DATA_OFFSET | BoxParser.TRUN_FLAGS_DURATION | \n\t\t\t\t \t\t\t\t BoxParser.TRUN_FLAGS_SIZE | BoxParser.TRUN_FLAGS_FLAGS | \n\t\t\t\t \t\t\t\t BoxParser.TRUN_FLAGS_CTS_OFFSET)\n\t\t\t\t\t.set(\"data_offset\",0)\n\t\t\t\t\t.set(\"first_sample_flags\",0)\n\t\t\t\t\t.set(\"sample_count\",1)\n\t\t\t\t\t.set(\"sample_duration\",[sample.duration])\n\t\t\t\t\t.set(\"sample_size\",[sample.size])\n\t\t\t\t\t.set(\"sample_flags\",[sample_flags])\n\t\t\t\t\t.set(\"sample_composition_time_offset\", [sample.cts - sample.dts]);\n\treturn moof;\n}\n\n// file:src/isofile-sample-processing.js\n/* Index of the last moof box received */\nISOFile.prototype.lastMoofIndex = 0;\n\n/* size of the buffers allocated for samples */\nISOFile.prototype.samplesDataSize = 0;\n\n/* Resets all sample tables */\nISOFile.prototype.resetTables = function () {\n\tvar i;\n\tvar trak, stco, stsc, stsz, stts, ctts, stss;\n\tthis.initial_duration = this.moov.mvhd.duration;\n\tthis.moov.mvhd.duration = 0;\n\tfor (i = 0; i < this.moov.traks.length; i++) {\n\t\ttrak = this.moov.traks[i];\n\t\ttrak.tkhd.duration = 0;\n\t\ttrak.mdia.mdhd.duration = 0;\n\t\tstco = trak.mdia.minf.stbl.stco || trak.mdia.minf.stbl.co64;\n\t\tstco.chunk_offsets = [];\n\t\tstsc = trak.mdia.minf.stbl.stsc;\n\t\tstsc.first_chunk = [];\n\t\tstsc.samples_per_chunk = [];\n\t\tstsc.sample_description_index = [];\n\t\tstsz = trak.mdia.minf.stbl.stsz || trak.mdia.minf.stbl.stz2;\n\t\tstsz.sample_sizes = [];\n\t\tstts = trak.mdia.minf.stbl.stts;\n\t\tstts.sample_counts = [];\n\t\tstts.sample_deltas = [];\n\t\tctts = trak.mdia.minf.stbl.ctts;\n\t\tif (ctts) {\n\t\t\tctts.sample_counts = [];\n\t\t\tctts.sample_offsets = [];\n\t\t}\n\t\tstss = trak.mdia.minf.stbl.stss;\n\t\tvar k = trak.mdia.minf.stbl.boxes.indexOf(stss);\n\t\tif (k != -1) trak.mdia.minf.stbl.boxes[k] = null;\n\t}\n}\n\nISOFile.initSampleGroups = function(trak, traf, sbgps, trak_sgpds, traf_sgpds) {\n\tvar l;\n\tvar k;\n\tvar sample_groups_info;\n\tvar sample_group_info;\n\tvar sample_group_key;\n\tfunction SampleGroupInfo(_type, _parameter, _sbgp) {\n\t\tthis.grouping_type = _type;\n\t\tthis.grouping_type_parameter = _parameter;\n\t\tthis.sbgp = _sbgp;\n\t\tthis.last_sample_in_run = -1;\n\t\tthis.entry_index = -1;\t\t\n\t}\n\tif (traf) {\n\t\ttraf.sample_groups_info = [];\n\t} \n\tif (!trak.sample_groups_info) {\n\t\ttrak.sample_groups_info = [];\n\t}\n\tfor (k = 0; k < sbgps.length; k++) {\n\t\tsample_group_key = sbgps[k].grouping_type +\"/\"+ sbgps[k].grouping_type_parameter;\n\t\tsample_group_info = new SampleGroupInfo(sbgps[k].grouping_type, sbgps[k].grouping_type_parameter, sbgps[k]);\n\t\tif (traf) {\n\t\t\ttraf.sample_groups_info[sample_group_key] = sample_group_info;\n\t\t}\n\t\tif (!trak.sample_groups_info[sample_group_key]) {\n\t\t\ttrak.sample_groups_info[sample_group_key] = sample_group_info;\n\t\t}\n\t\tfor (l=0; l <trak_sgpds.length; l++) {\n\t\t\tif (trak_sgpds[l].grouping_type === sbgps[k].grouping_type) {\n\t\t\t\tsample_group_info.description = trak_sgpds[l];\n\t\t\t\tsample_group_info.description.used = true;\n\t\t\t}\n\t\t}\n\t\tif (traf_sgpds) {\n\t\t\tfor (l=0; l <traf_sgpds.length; l++) {\n\t\t\t\tif (traf_sgpds[l].grouping_type === sbgps[k].grouping_type) {\n\t\t\t\t\tsample_group_info.fragment_description = traf_sgpds[l];\n\t\t\t\t\tsample_group_info.fragment_description.used = true;\n\t\t\t\t\tsample_group_info.is_fragment = true;\n\t\t\t\t}\n\t\t\t}\t\t\t\n\t\t}\n\t}\n\tif (!traf) {\n\t\tfor (k = 0; k < trak_sgpds.length; k++) {\n\t\t\tif (!trak_sgpds[k].used && trak_sgpds[k].version >= 2) {\n\t\t\t\tsample_group_key = trak_sgpds[k].grouping_type +\"/0\";\n\t\t\t\tsample_group_info = new SampleGroupInfo(trak_sgpds[k].grouping_type, 0);\n\t\t\t\tif (!trak.sample_groups_info[sample_group_key]) {\n\t\t\t\t\ttrak.sample_groups_info[sample_group_key] = sample_group_info;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (traf_sgpds) {\n\t\t\tfor (k = 0; k < traf_sgpds.length; k++) {\n\t\t\t\tif (!traf_sgpds[k].used && traf_sgpds[k].version >= 2) {\n\t\t\t\t\tsample_group_key = traf_sgpds[k].grouping_type +\"/0\";\n\t\t\t\t\tsample_group_info = new SampleGroupInfo(traf_sgpds[k].grouping_type, 0);\n\t\t\t\t\tsample_group_info.is_fragment = true;\n\t\t\t\t\tif (!traf.sample_groups_info[sample_group_key]) {\n\t\t\t\t\t\ttraf.sample_groups_info[sample_group_key] = sample_group_info;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nISOFile.setSampleGroupProperties = function(trak, sample, sample_number, sample_groups_info) {\n\tvar k;\n\tvar index;\n\tsample.sample_groups = [];\n\tfor (k in sample_groups_info) {\n\t\tsample.sample_groups[k] = {};\n\t\tsample.sample_groups[k].grouping_type = sample_groups_info[k].grouping_type;\n\t\tsample.sample_groups[k].grouping_type_parameter = sample_groups_info[k].grouping_type_parameter;\n\t\tif (sample_number >= sample_groups_info[k].last_sample_in_run) {\n\t\t\tif (sample_groups_info[k].last_sample_in_run < 0) {\n\t\t\t\tsample_groups_info[k].last_sample_in_run = 0;\n\t\t\t}\n\t\t\tsample_groups_info[k].entry_index++;\t\n\t\t\tif (sample_groups_info[k].entry_index <= sample_groups_info[k].sbgp.entries.length - 1) {\n\t\t\t\tsample_groups_info[k].last_sample_in_run += sample_groups_info[k].sbgp.entries[sample_groups_info[k].entry_index].sample_count;\n\t\t\t}\n\t\t}\n\t\tif (sample_groups_info[k].entry_index <= sample_groups_info[k].sbgp.entries.length - 1) {\n\t\t\tsample.sample_groups[k].group_description_index = sample_groups_info[k].sbgp.entries[sample_groups_info[k].entry_index].group_description_index;\n\t\t} else {\n\t\t\tsample.sample_groups[k].group_description_index = -1; // special value for not defined\n\t\t}\n\t\tif (sample.sample_groups[k].group_description_index !== 0) {\n\t\t\tvar description;\n\t\t\tif (sample_groups_info[k].fragment_description) {\n\t\t\t\tdescription = sample_groups_info[k].fragment_description;\n\t\t\t} else {\n\t\t\t\tdescription = sample_groups_info[k].description;\n\t\t\t}\n\t\t\tif (sample.sample_groups[k].group_description_index > 0) {\n\t\t\t\tif (sample.sample_groups[k].group_description_index > 65535) {\n\t\t\t\t\tindex = (sample.sample_groups[k].group_description_index >> 16)-1;\n\t\t\t\t} else {\n\t\t\t\t\tindex = sample.sample_groups[k].group_description_index-1;\n\t\t\t\t}\n\t\t\t\tif (description && index >= 0) {\n\t\t\t\t\tsample.sample_groups[k].description = description.entries[index];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (description && description.version >= 2) {\n\t\t\t\t\tif (description.default_group_description_index > 0) {\t\t\t\t\t\t\t\t\n\t\t\t\t\t\tsample.sample_groups[k].description = description.entries[description.default_group_description_index-1];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nISOFile.process_sdtp = function (sdtp, sample, number) {\n\tif (!sample) {\n\t\treturn;\n\t}\n\tif (sdtp) {\n\t\tsample.is_leading = sdtp.is_leading[number];\n\t\tsample.depends_on = sdtp.sample_depends_on[number];\n\t\tsample.is_depended_on = sdtp.sample_is_depended_on[number];\n\t\tsample.has_redundancy = sdtp.sample_has_redundancy[number];\n\t} else {\n\t\tsample.is_leading = 0;\n\t\tsample.depends_on = 0;\n\t\tsample.is_depended_on = 0\n\t\tsample.has_redundancy = 0;\n\t}\t\n}\n\n/* Build initial sample list from sample tables */\nISOFile.prototype.buildSampleLists = function() {\t\n\tvar i;\n\tvar trak;\n\tfor (i = 0; i < this.moov.traks.length; i++) {\n\t\ttrak = this.moov.traks[i];\n\t\tthis.buildTrakSampleLists(trak);\n\t}\n}\n\nISOFile.prototype.buildTrakSampleLists = function(trak) {\t\n\tvar j, k;\n\tvar stco, stsc, stsz, stts, ctts, stss, stsd, subs, sbgps, sgpds, stdp;\n\tvar chunk_run_index, chunk_index, last_chunk_in_run, offset_in_chunk, last_sample_in_chunk;\n\tvar last_sample_in_stts_run, stts_run_index, last_sample_in_ctts_run, ctts_run_index, last_stss_index, last_subs_index, subs_entry_index, last_subs_sample_index;\n\n\ttrak.samples = [];\n\ttrak.samples_duration = 0;\n\ttrak.samples_size = 0;\n\tstco = trak.mdia.minf.stbl.stco || trak.mdia.minf.stbl.co64;\n\tstsc = trak.mdia.minf.stbl.stsc;\n\tstsz = trak.mdia.minf.stbl.stsz || trak.mdia.minf.stbl.stz2;\n\tstts = trak.mdia.minf.stbl.stts;\n\tctts = trak.mdia.minf.stbl.ctts;\n\tstss = trak.mdia.minf.stbl.stss;\n\tstsd = trak.mdia.minf.stbl.stsd;\n\tsubs = trak.mdia.minf.stbl.subs;\n\tstdp = trak.mdia.minf.stbl.stdp;\n\tsbgps = trak.mdia.minf.stbl.sbgps;\n\tsgpds = trak.mdia.minf.stbl.sgpds;\n\t\n\tlast_sample_in_stts_run = -1;\n\tstts_run_index = -1;\n\tlast_sample_in_ctts_run = -1;\n\tctts_run_index = -1;\n\tlast_stss_index = 0;\n\tsubs_entry_index = 0;\n\tlast_subs_sample_index = 0;\t\t\n\n\tISOFile.initSampleGroups(trak, null, sbgps, sgpds);\n\n\tif (typeof stsz === \"undefined\") {\n\t\treturn;\n\t}\n\n\t/* we build the samples one by one and compute their properties */\n\tfor (j = 0; j < stsz.sample_sizes.length; j++) {\n\t\tvar sample = {};\n\t\tsample.number = j;\n\t\tsample.track_id = trak.tkhd.track_id;\n\t\tsample.timescale = trak.mdia.mdhd.timescale;\n\t\tsample.alreadyRead = 0;\n\t\ttrak.samples[j] = sample;\n\t\t/* size can be known directly */\n\t\tsample.size = stsz.sample_sizes[j];\n\t\ttrak.samples_size += sample.size;\n\t\t/* computing chunk-based properties (offset, sample description index)*/\n\t\tif (j === 0) {\t\t\t\t\n\t\t\tchunk_index = 1; /* the first sample is in the first chunk (chunk indexes are 1-based) */\n\t\t\tchunk_run_index = 0; /* the first chunk is the first entry in the first_chunk table */\n\t\t\tsample.chunk_index = chunk_index;\n\t\t\tsample.chunk_run_index = chunk_run_index;\n\t\t\tlast_sample_in_chunk = stsc.samples_per_chunk[chunk_run_index];\n\t\t\toffset_in_chunk = 0;\n\n\t\t\t/* Is there another entry in the first_chunk table ? */\n\t\t\tif (chunk_run_index + 1 < stsc.first_chunk.length) {\n\t\t\t\t/* The last chunk in the run is the chunk before the next first chunk */\n\t\t\t\tlast_chunk_in_run = stsc.first_chunk[chunk_run_index+1]-1; \t\n\t\t\t} else {\n\t\t\t\t/* There is only one entry in the table, it is valid for all future chunks*/\n\t\t\t\tlast_chunk_in_run = Infinity;\n\t\t\t}\n\t\t} else {\n\t\t\tif (j < last_sample_in_chunk) {\n\t\t\t\t/* the sample is still in the current chunk */\n\t\t\t\tsample.chunk_index = chunk_index;\n\t\t\t\tsample.chunk_run_index = chunk_run_index;\n\t\t\t} else {\n\t\t\t\t/* the sample is in the next chunk */\n\t\t\t\tchunk_index++;\n\t\t\t\tsample.chunk_index = chunk_index;\n\t\t\t\t/* reset the accumulated offset in the chunk */\n\t\t\t\toffset_in_chunk = 0;\n\t\t\t\tif (chunk_index <= last_chunk_in_run) {\n\t\t\t\t\t/* stay in the same entry of the first_chunk table */\n\t\t\t\t\t/* chunk_run_index unmodified */\n\t\t\t\t} else {\n\t\t\t\t\tchunk_run_index++;\n\t\t\t\t\t/* Is there another entry in the first_chunk table ? */\n\t\t\t\t\tif (chunk_run_index + 1 < stsc.first_chunk.length) {\n\t\t\t\t\t\t/* The last chunk in the run is the chunk before the next first chunk */\n\t\t\t\t\t\tlast_chunk_in_run = stsc.first_chunk[chunk_run_index+1]-1; \t\n\t\t\t\t\t} else {\n\t\t\t\t\t\t/* There is only one entry in the table, it is valid for all future chunks*/\n\t\t\t\t\t\tlast_chunk_in_run = Infinity;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\tsample.chunk_run_index = chunk_run_index;\n\t\t\t\tlast_sample_in_chunk += stsc.samples_per_chunk[chunk_run_index];\n\t\t\t}\n\t\t}\n\n\t\tsample.description_index = stsc.sample_description_index[sample.chunk_run_index]-1;\n\t\tsample.description = stsd.entries[sample.description_index];\n\t\tsample.offset = stco.chunk_offsets[sample.chunk_index-1] + offset_in_chunk; /* chunk indexes are 1-based */\n\t\toffset_in_chunk += sample.size;\n\n\t\t/* setting dts, cts, duration and rap flags */\n\t\tif (j > last_sample_in_stts_run) {\n\t\t\tstts_run_index++;\n\t\t\tif (last_sample_in_stts_run < 0) {\n\t\t\t\tlast_sample_in_stts_run = 0;\n\t\t\t}\n\t\t\tlast_sample_in_stts_run += stts.sample_counts[stts_run_index];\t\t\t\t\n\t\t}\n\t\tif (j > 0) {\n\t\t\ttrak.samples[j-1].duration = stts.sample_deltas[stts_run_index];\n\t\t\ttrak.samples_duration += trak.samples[j-1].duration;\n\t\t\tsample.dts = trak.samples[j-1].dts + trak.samples[j-1].duration;\n\t\t} else {\n\t\t\tsample.dts = 0;\n\t\t}\n\t\tif (ctts) {\n\t\t\tif (j >= last_sample_in_ctts_run) {\n\t\t\t\tctts_run_index++;\n\t\t\t\tif (last_sample_in_ctts_run < 0) {\n\t\t\t\t\tlast_sample_in_ctts_run = 0;\n\t\t\t\t}\n\t\t\t\tlast_sample_in_ctts_run += ctts.sample_counts[ctts_run_index];\t\t\t\t\n\t\t\t}\n\t\t\tsample.cts = trak.samples[j].dts + ctts.sample_offsets[ctts_run_index];\n\t\t} else {\n\t\t\tsample.cts = sample.dts;\n\t\t}\n\t\tif (stss) {\n\t\t\tif (j == stss.sample_numbers[last_stss_index] - 1) { // sample numbers are 1-based\n\t\t\t\tsample.is_sync = true;\n\t\t\t\tlast_stss_index++;\n\t\t\t} else {\n\t\t\t\tsample.is_sync = false;\t\t\t\t\n\t\t\t\tsample.degradation_priority = 0;\n\t\t\t}\n\t\t\tif (subs) {\n\t\t\t\tif (subs.entries[subs_entry_index].sample_delta + last_subs_sample_index == j+1) {\n\t\t\t\t\tsample.subsamples = subs.entries[subs_entry_index].subsamples;\n\t\t\t\t\tlast_subs_sample_index += subs.entries[subs_entry_index].sample_delta;\n\t\t\t\t\tsubs_entry_index++;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tsample.is_sync = true;\n\t\t}\n\t\tISOFile.process_sdtp(trak.mdia.minf.stbl.sdtp, sample, sample.number);\n\t\tif (stdp) {\n\t\t\tsample.degradation_priority = stdp.priority[j];\n\t\t} else {\n\t\t\tsample.degradation_priority = 0;\n\t\t}\n\t\tif (subs) {\n\t\t\tif (subs.entries[subs_entry_index].sample_delta + last_subs_sample_index == j) {\n\t\t\t\tsample.subsamples = subs.entries[subs_entry_index].subsamples;\n\t\t\t\tlast_subs_sample_index += subs.entries[subs_entry_index].sample_delta;\n\t\t\t}\n\t\t}\n\t\tif (sbgps.length > 0 || sgpds.length > 0) {\n\t\t\tISOFile.setSampleGroupProperties(trak, sample, j, trak.sample_groups_info);\n\t\t}\n\t}\n\tif (j>0) {\n\t\ttrak.samples[j-1].duration = Math.max(trak.mdia.mdhd.duration - trak.samples[j-1].dts, 0);\n\t\ttrak.samples_duration += trak.samples[j-1].duration;\n\t}\n}\n\n/* Update sample list when new 'moof' boxes are received */\nISOFile.prototype.updateSampleLists = function() {\t\n\tvar i, j, k;\n\tvar default_sample_description_index, default_sample_duration, default_sample_size, default_sample_flags;\n\tvar last_run_position;\n\tvar box, moof, traf, trak, trex;\n\tvar sample;\n\tvar sample_flags;\n\t\n\tif (this.moov === undefined) {\n\t\treturn;\n\t}\n\t/* if the input file is fragmented and fetched in multiple downloads, we need to update the list of samples */\n\twhile (this.lastMoofIndex < this.moofs.length) {\n\t\tbox = this.moofs[this.lastMoofIndex];\n\t\tthis.lastMoofIndex++;\n\t\tif (box.type == \"moof\") {\n\t\t\tmoof = box;\n\t\t\tfor (i = 0; i < moof.trafs.length; i++) {\n\t\t\t\ttraf = moof.trafs[i];\n\t\t\t\ttrak = this.getTrackById(traf.tfhd.track_id);\n\t\t\t\ttrex = this.getTrexById(traf.tfhd.track_id);\n\t\t\t\tif (traf.tfhd.flags & BoxParser.TFHD_FLAG_SAMPLE_DESC) {\n\t\t\t\t\tdefault_sample_description_index = traf.tfhd.default_sample_description_index;\n\t\t\t\t} else {\n\t\t\t\t\tdefault_sample_description_index = (trex ? trex.default_sample_description_index: 1);\n\t\t\t\t}\n\t\t\t\tif (traf.tfhd.flags & BoxParser.TFHD_FLAG_SAMPLE_DUR) {\n\t\t\t\t\tdefault_sample_duration = traf.tfhd.default_sample_duration;\n\t\t\t\t} else {\n\t\t\t\t\tdefault_sample_duration = (trex ? trex.default_sample_duration : 0);\n\t\t\t\t}\n\t\t\t\tif (traf.tfhd.flags & BoxParser.TFHD_FLAG_SAMPLE_SIZE) {\n\t\t\t\t\tdefault_sample_size = traf.tfhd.default_sample_size;\n\t\t\t\t} else {\n\t\t\t\t\tdefault_sample_size = (trex ? trex.default_sample_size : 0);\n\t\t\t\t}\n\t\t\t\tif (traf.tfhd.flags & BoxParser.TFHD_FLAG_SAMPLE_FLAGS) {\n\t\t\t\t\tdefault_sample_flags = traf.tfhd.default_sample_flags;\n\t\t\t\t} else {\n\t\t\t\t\tdefault_sample_flags = (trex ? trex.default_sample_flags : 0);\n\t\t\t\t}\n\t\t\t\ttraf.sample_number = 0;\n\t\t\t\t/* process sample groups */\n\t\t\t\tif (traf.sbgps.length > 0) {\n\t\t\t\t\tISOFile.initSampleGroups(trak, traf, traf.sbgps, trak.mdia.minf.stbl.sgpds, traf.sgpds);\n\t\t\t\t}\n\t\t\t\tfor (j = 0; j < traf.truns.length; j++) {\n\t\t\t\t\tvar trun = traf.truns[j];\n\t\t\t\t\tfor (k = 0; k < trun.sample_count; k++) {\n\t\t\t\t\t\tsample = {};\n\t\t\t\t\t\tsample.moof_number = this.lastMoofIndex;\n\t\t\t\t\t\tsample.number_in_traf = traf.sample_number;\n\t\t\t\t\t\ttraf.sample_number++;\n\t\t\t sample.number = trak.samples.length;\n\t\t\t\t\t\ttraf.first_sample_index = trak.samples.length;\n\t\t\t\t\t\ttrak.samples.push(sample);\n\t\t\t\t\t\tsample.track_id = trak.tkhd.track_id;\n\t\t\t\t\t\tsample.timescale = trak.mdia.mdhd.timescale;\n\t\t\t\t\t\tsample.description_index = default_sample_description_index-1;\n\t\t\t\t\t\tsample.description = trak.mdia.minf.stbl.stsd.entries[sample.description_index];\n\t\t\t\t\t\tsample.size = default_sample_size;\n\t\t\t\t\t\tif (trun.flags & BoxParser.TRUN_FLAGS_SIZE) {\n\t\t\t\t\t\t\tsample.size = trun.sample_size[k];\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttrak.samples_size += sample.size;\n\t\t\t\t\t\tsample.duration = default_sample_duration;\n\t\t\t\t\t\tif (trun.flags & BoxParser.TRUN_FLAGS_DURATION) {\n\t\t\t\t\t\t\tsample.duration = trun.sample_duration[k];\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttrak.samples_duration += sample.duration;\n\t\t\t\t\t\tif (trak.first_traf_merged || k > 0) {\n\t\t\t\t\t\t\tsample.dts = trak.samples[trak.samples.length-2].dts+trak.samples[trak.samples.length-2].duration;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (traf.tfdt) {\n\t\t\t\t\t\t\t\tsample.dts = traf.tfdt.baseMediaDecodeTime;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tsample.dts = 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttrak.first_traf_merged = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsample.cts = sample.dts;\n\t\t\t\t\t\tif (trun.flags & BoxParser.TRUN_FLAGS_CTS_OFFSET) {\n\t\t\t\t\t\t\tsample.cts = sample.dts + trun.sample_composition_time_offset[k];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsample_flags = default_sample_flags;\n\t\t\t\t\t\tif (trun.flags & BoxParser.TRUN_FLAGS_FLAGS) {\n\t\t\t\t\t\t\tsample_flags = trun.sample_flags[k];\n\t\t\t\t\t\t} else if (k === 0 && (trun.flags & BoxParser.TRUN_FLAGS_FIRST_FLAG)) {\n\t\t\t\t\t\t\tsample_flags = trun.first_sample_flags;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsample.is_sync = ((sample_flags >> 16 & 0x1) ? false : true);\n\t\t\t\t\t\tsample.is_leading = (sample_flags >> 26 & 0x3);\n\t\t\t\t\t\tsample.depends_on = (sample_flags >> 24 & 0x3);\n\t\t\t\t\t\tsample.is_depended_on = (sample_flags >> 22 & 0x3);\n\t\t\t\t\t\tsample.has_redundancy = (sample_flags >> 20 & 0x3);\n\t\t\t\t\t\tsample.degradation_priority = (sample_flags & 0xFFFF);\n\t\t\t\t\t\t//ISOFile.process_sdtp(traf.sdtp, sample, sample.number_in_traf);\n\t\t\t\t\t\tvar bdop = (traf.tfhd.flags & BoxParser.TFHD_FLAG_BASE_DATA_OFFSET) ? true : false;\n\t\t\t\t\t\tvar dbim = (traf.tfhd.flags & BoxParser.TFHD_FLAG_DEFAULT_BASE_IS_MOOF) ? true : false;\n\t\t\t\t\t\tvar dop = (trun.flags & BoxParser.TRUN_FLAGS_DATA_OFFSET) ? true : false;\n\t\t\t\t\t\tvar bdo = 0;\n\t\t\t\t\t\tif (!bdop) {\n\t\t\t\t\t\t\tif (!dbim) {\n\t\t\t\t\t\t\t\tif (j === 0) { // the first track in the movie fragment\n\t\t\t\t\t\t\t\t\tbdo = moof.start; // the position of the first byte of the enclosing Movie Fragment Box\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tbdo = last_run_position; // end of the data defined by the preceding *track* (irrespective of the track id) fragment in the moof\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tbdo = moof.start;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbdo = traf.tfhd.base_data_offset;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (j === 0 && k === 0) {\n\t\t\t\t\t\t\tif (dop) {\n\t\t\t\t\t\t\t\tsample.offset = bdo + trun.data_offset; // If the data-offset is present, it is relative to the base-data-offset established in the track fragment header\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tsample.offset = bdo; // the data for this run starts the base-data-offset defined by the track fragment header\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsample.offset = last_run_position; // this run starts immediately after the data of the previous run\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlast_run_position = sample.offset + sample.size;\n\t\t\t\t\t\tif (traf.sbgps.length > 0 || traf.sgpds.length > 0 ||\n\t\t\t\t\t\t\ttrak.mdia.minf.stbl.sbgps.length > 0 || trak.mdia.minf.stbl.sgpds.length > 0) {\n\t\t\t\t\t\t\tISOFile.setSampleGroupProperties(trak, sample, sample.number_in_traf, traf.sample_groups_info);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (traf.subs) {\n\t\t\t\t\ttrak.has_fragment_subsamples = true;\n\t\t\t\t\tvar sample_index = traf.first_sample_index;\n\t\t\t\t\tfor (j = 0; j < traf.subs.entries.length; j++) {\n\t\t\t\t\t\tsample_index += traf.subs.entries[j].sample_delta;\n\t\t\t\t\t\tsample = trak.samples[sample_index-1];\n\t\t\t\t\t\tsample.subsamples = traf.subs.entries[j].subsamples;\n\t\t\t\t\t}\t\t\t\t\t\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\t\n}\n\n/* Try to get sample data for a given sample:\n returns null if not found\n returns the same sample if already requested\n */\nISOFile.prototype.getSample = function(trak, sampleNum) {\t\n\tvar buffer;\n\tvar sample = trak.samples[sampleNum];\n\t\n\tif (!this.moov) {\n\t\treturn null;\n\t}\n\n\tif (!sample.data) {\n\t\t/* Not yet fetched */\n\t\tsample.data = new Uint8Array(sample.size);\n\t\tsample.alreadyRead = 0;\n\t\tthis.samplesDataSize += sample.size;\n\t\tLog.debug(\"ISOFile\", \"Allocating sample #\"+sampleNum+\" on track #\"+trak.tkhd.track_id+\" of size \"+sample.size+\" (total: \"+this.samplesDataSize+\")\");\n\t} else if (sample.alreadyRead == sample.size) {\n\t\t/* Already fetched entirely */\n\t\treturn sample;\n\t}\n\n\t/* The sample has only been partially fetched, we need to check in all buffers */\n\twhile(true) {\n\t\tvar index =\tthis.stream.findPosition(true, sample.offset + sample.alreadyRead, false);\n\t\tif (index > -1) {\n\t\t\tbuffer = this.stream.buffers[index];\n\t\t\tvar lengthAfterStart = buffer.byteLength - (sample.offset + sample.alreadyRead - buffer.fileStart);\n\t\t\tif (sample.size - sample.alreadyRead <= lengthAfterStart) {\n\t\t\t\t/* the (rest of the) sample is entirely contained in this buffer */\n\n\t\t\t\tLog.debug(\"ISOFile\",\"Getting sample #\"+sampleNum+\" data (alreadyRead: \"+sample.alreadyRead+\" offset: \"+\n\t\t\t\t\t(sample.offset+sample.alreadyRead - buffer.fileStart)+\" read size: \"+(sample.size - sample.alreadyRead)+\" full size: \"+sample.size+\")\");\n\n\t\t\t\tDataStream.memcpy(sample.data.buffer, sample.alreadyRead,\n\t\t\t\t buffer, sample.offset+sample.alreadyRead - buffer.fileStart, sample.size - sample.alreadyRead);\n\n\t\t\t\t/* update the number of bytes used in this buffer and check if it needs to be removed */\n\t\t\t\tbuffer.usedBytes += sample.size - sample.alreadyRead;\n\t\t\t\tthis.stream.logBufferLevel();\n\n\t\t\t\tsample.alreadyRead = sample.size;\n\n\t\t\t\treturn sample;\n\t\t\t} else {\n\t\t\t\t/* the sample does not end in this buffer */\n\n\t\t\t\tif (lengthAfterStart === 0) return null;\n\n\t\t\t\tLog.debug(\"ISOFile\",\"Getting sample #\"+sampleNum+\" partial data (alreadyRead: \"+sample.alreadyRead+\" offset: \"+\n\t\t\t\t\t(sample.offset+sample.alreadyRead - buffer.fileStart)+\" read size: \"+lengthAfterStart+\" full size: \"+sample.size+\")\");\n\n\t\t\t\tDataStream.memcpy(sample.data.buffer, sample.alreadyRead,\n\t\t\t\t buffer, sample.offset+sample.alreadyRead - buffer.fileStart, lengthAfterStart);\n\t\t\t\tsample.alreadyRead += lengthAfterStart;\n\n\t\t\t\t/* update the number of bytes used in this buffer and check if it needs to be removed */\n\t\t\t\tbuffer.usedBytes += lengthAfterStart;\n\t\t\t\tthis.stream.logBufferLevel();\n\n\t\t\t\t/* keep looking in the next buffer */\n\t\t\t}\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n}\n\n/* Release the memory used to store the data of the sample */\nISOFile.prototype.releaseSample = function(trak, sampleNum) {\t\n\tvar sample = trak.samples[sampleNum];\n\tif (sample.data) {\n\t\tthis.samplesDataSize -= sample.size;\n\t\tsample.data = null;\n\t\tsample.alreadyRead = 0;\n\t\treturn sample.size;\n\t} else {\n\t\treturn 0;\n\t}\n}\n\nISOFile.prototype.getAllocatedSampleDataSize = function() {\n\treturn this.samplesDataSize;\n}\n\n/* Builds the MIME Type 'codecs' sub-parameters for the whole file */\nISOFile.prototype.getCodecs = function() {\t\n\tvar i;\n\tvar codecs = \"\";\n\tfor (i = 0; i < this.moov.traks.length; i++) {\n\t\tvar trak = this.moov.traks[i];\n\t\tif (i>0) {\n\t\t\tcodecs+=\",\"; \n\t\t}\n\t\tcodecs += trak.mdia.minf.stbl.stsd.entries[0].getCodec();\t\t\n\t}\n\treturn codecs;\n}\n\n/* Helper function */\nISOFile.prototype.getTrexById = function(id) {\t\n\tvar i;\n\tif (!this.moov || !this.moov.mvex) return null;\n\tfor (i = 0; i < this.moov.mvex.trexs.length; i++) {\n\t\tvar trex = this.moov.mvex.trexs[i];\n\t\tif (trex.track_id == id) return trex;\n\t}\n\treturn null;\n}\n\n/* Helper function */\nISOFile.prototype.getTrackById = function(id) {\n\tif (this.moov === undefined) {\n\t\treturn null;\n\t}\n\tfor (var j = 0; j < this.moov.traks.length; j++) {\n\t\tvar trak = this.moov.traks[j];\n\t\tif (trak.tkhd.track_id == id) return trak;\n\t}\n\treturn null;\n}\n// file:src/isofile-item-processing.js\n/* size of the buffers allocated for samples */\nISOFile.prototype.itemsDataSize = 0;\n\nISOFile.prototype.flattenItemInfo = function() {\t\n\tvar items = this.items;\n\tvar entity_groups = this.entity_groups;\n\tvar i, j;\n\tvar item;\n\tvar meta = this.meta;\n\tif (meta === null || meta === undefined) return;\n\tif (meta.hdlr === undefined) return;\n\tif (meta.iinf === undefined) return;\n\tfor (i = 0; i < meta.iinf.item_infos.length; i++) {\n\t\titem = {};\n\t\titem.id = meta.iinf.item_infos[i].item_ID;\n\t\titems[item.id] = item;\n\t\titem.ref_to = [];\n\t\titem.name = meta.iinf.item_infos[i].item_name;\n\t\tif (meta.iinf.item_infos[i].protection_index > 0) {\n\t\t\titem.protection = meta.ipro.protections[meta.iinf.item_infos[i].protection_index-1];\n\t\t}\n\t\tif (meta.iinf.item_infos[i].item_type) {\n\t\t\titem.type = meta.iinf.item_infos[i].item_type;\n\t\t} else {\n\t\t\titem.type = \"mime\";\n\t\t}\n\t\titem.content_type = meta.iinf.item_infos[i].content_type;\n\t\titem.content_encoding = meta.iinf.item_infos[i].content_encoding;\n\t\titem.item_uri_type = meta.iinf.item_infos[i].item_uri_type;\n\t}\n\tif (meta.grpl) {\n\t\tfor (i = 0; i < meta.grpl.boxes.length; i++) {\n\t\t\tentity_group = {};\n\t\t\tentity_group.id = meta.grpl.boxes[i].group_id;\n\t\t\tentity_group.entity_ids = meta.grpl.boxes[i].entity_ids;\n\t\t\tentity_group.type = meta.grpl.boxes[i].type;\n\t\t\tentity_groups[entity_group.id] = entity_group;\n\t\t}\n\t}\n\tif (meta.iloc) {\n\t\tfor(i = 0; i < meta.iloc.items.length; i++) {\n\t\t\tvar offset;\n\t\t\tvar itemloc = meta.iloc.items[i];\n\t\t\titem = items[itemloc.item_ID];\n\t\t\tif (itemloc.data_reference_index !== 0) {\n\t\t\t\tLog.warn(\"Item storage with reference to other files: not supported\");\n\t\t\t\titem.source = meta.dinf.boxes[itemloc.data_reference_index-1];\n\t\t\t}\n\t\t\tswitch(itemloc.construction_method) {\n\t\t\t\tcase 0: // offset into the file referenced by the data reference index\n\t\t\t\tbreak;\n\t\t\t\tcase 1: // offset into the idat box of this meta box\n\t\t\t\tbreak;\n\t\t\t\tcase 2: // offset into another item\n\t\t\t\tLog.warn(\"Item storage with construction_method : not supported\");\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\titem.extents = [];\n\t\t\titem.size = 0;\n\t\t\tfor (j = 0; j < itemloc.extents.length; j++) {\n\t\t\t\titem.extents[j] = {};\n\t\t\t\titem.extents[j].offset = itemloc.extents[j].extent_offset + itemloc.base_offset;\n\t\t\t\tif (itemloc.construction_method == 1) {\n\t\t\t\t\titem.extents[j].offset += meta.idat.start + meta.idat.hdr_size;\n\t\t\t\t}\n\t\t\t\titem.extents[j].length = itemloc.extents[j].extent_length;\n\t\t\t\titem.extents[j].alreadyRead = 0;\n\t\t\t\titem.size += item.extents[j].length;\n\t\t\t}\n\t\t}\n\t}\n\tif (meta.pitm) {\n\t\titems[meta.pitm.item_id].primary = true;\n\t}\n\tif (meta.iref) {\n\t\tfor (i=0; i <meta.iref.references.length; i++) {\n\t\t\tvar ref = meta.iref.references[i];\n\t\t\tfor (j=0; j<ref.references.length; j++) {\n\t\t\t\titems[ref.from_item_ID].ref_to.push({type: ref.type, id: ref.references[j]});\n\t\t\t}\n\t\t}\n\t}\n\tif (meta.iprp) {\n\t\tfor (var k = 0; k < meta.iprp.ipmas.length; k++) {\n\t\t\tvar ipma = meta.iprp.ipmas[k];\n\t\t\tfor (i = 0; i < ipma.associations.length; i++) {\n\t\t\t\tvar association = ipma.associations[i];\n\t\t\t\titem = items[association.id];\n\t\t\t\tif (!item) {\n\t\t\t\t\titem = entity_groups[association.id];\n\t\t\t\t}\n\t\t\t\tif (item) {\n\t\t\t\t\tif (item.properties === undefined) {\n\t\t\t\t\t\titem.properties = {};\n\t\t\t\t\t\titem.properties.boxes = [];\n\t\t\t\t\t}\n\t\t\t\t\tfor (j = 0; j < association.props.length; j++) {\n\t\t\t\t\t\tvar propEntry = association.props[j];\n\t\t\t\t\t\tif (propEntry.property_index > 0 && propEntry.property_index-1 < meta.iprp.ipco.boxes.length) {\n\t\t\t\t\t\t\tvar propbox = meta.iprp.ipco.boxes[propEntry.property_index-1];\n\t\t\t\t\t\t\titem.properties[propbox.type] = propbox;\n\t\t\t\t\t\t\titem.properties.boxes.push(propbox);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nISOFile.prototype.getItem = function(item_id) {\t\n\tvar buffer;\n\tvar item;\n\t\n\tif (!this.meta) {\n\t\treturn null;\n\t}\n\n \titem = this.items[item_id];\n\tif (!item.data && item.size) {\n\t\t/* Not yet fetched */\n\t\titem.data = new Uint8Array(item.size);\n\t\titem.alreadyRead = 0;\n\t\tthis.itemsDataSize += item.size;\n\t\tLog.debug(\"ISOFile\", \"Allocating item #\"+item_id+\" of size \"+item.size+\" (total: \"+this.itemsDataSize+\")\");\n\t} else if (item.alreadyRead === item.size) {\n\t\t/* Already fetched entirely */\n\t\treturn item;\n\t}\n\n\t/* The item has only been partially fetched, we need to check in all buffers to find the remaining extents*/\n\n\tfor (var i = 0; i < item.extents.length; i++) {\n\t\tvar extent = item.extents[i];\n\t\tif (extent.alreadyRead === extent.length) {\n\t\t\tcontinue;\n\t\t} else {\n\t\t\tvar index =\tthis.stream.findPosition(true, extent.offset + extent.alreadyRead, false);\n\t\t\tif (index > -1) {\n\t\t\t\tbuffer = this.stream.buffers[index];\n\t\t\t\tvar lengthAfterStart = buffer.byteLength - (extent.offset + extent.alreadyRead - buffer.fileStart);\n\t\t\t\tif (extent.length - extent.alreadyRead <= lengthAfterStart) {\n\t\t\t\t\t/* the (rest of the) extent is entirely contained in this buffer */\n\n\t\t\t\t\tLog.debug(\"ISOFile\",\"Getting item #\"+item_id+\" extent #\"+i+\" data (alreadyRead: \"+extent.alreadyRead+\n\t\t\t\t\t\t\" offset: \"+(extent.offset+extent.alreadyRead - buffer.fileStart)+\" read size: \"+(extent.length - extent.alreadyRead)+\n\t\t\t\t\t\t\" full extent size: \"+extent.length+\" full item size: \"+item.size+\")\");\n\n\t\t\t\t\tDataStream.memcpy(item.data.buffer, item.alreadyRead, \n\t\t\t\t\t buffer, extent.offset+extent.alreadyRead - buffer.fileStart, extent.length - extent.alreadyRead);\n\n\t\t\t\t\t/* update the number of bytes used in this buffer and check if it needs to be removed */\n\t\t\t\t\tbuffer.usedBytes += extent.length - extent.alreadyRead;\n\t\t\t\t\tthis.stream.logBufferLevel();\n\n\t\t\t\t\titem.alreadyRead += (extent.length - extent.alreadyRead);\n\t\t\t\t\textent.alreadyRead = extent.length;\n\t\t\t\t} else {\n\t\t\t\t\t/* the sample does not end in this buffer */\n\n\t\t\t\t\tLog.debug(\"ISOFile\",\"Getting item #\"+item_id+\" extent #\"+i+\" partial data (alreadyRead: \"+extent.alreadyRead+\" offset: \"+\n\t\t\t\t\t\t(extent.offset+extent.alreadyRead - buffer.fileStart)+\" read size: \"+lengthAfterStart+\n\t\t\t\t\t\t\" full extent size: \"+extent.length+\" full item size: \"+item.size+\")\");\n\n\t\t\t\t\tDataStream.memcpy(item.data.buffer, item.alreadyRead, \n\t\t\t\t\t buffer, extent.offset+extent.alreadyRead - buffer.fileStart, lengthAfterStart);\n\t\t\t\t\textent.alreadyRead += lengthAfterStart;\n\t\t\t\t\titem.alreadyRead += lengthAfterStart;\n\n\t\t\t\t\t/* update the number of bytes used in this buffer and check if it needs to be removed */\n\t\t\t\t\tbuffer.usedBytes += lengthAfterStart;\n\t\t\t\t\tthis.stream.logBufferLevel();\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t}\n\tif (item.alreadyRead === item.size) {\n\t\t/* fetched entirely */\n\t\treturn item;\n\t} else {\n\t\treturn null;\n\t}\n}\n\n/* Release the memory used to store the data of the item */\nISOFile.prototype.releaseItem = function(item_id) {\t\n\tvar item = this.items[item_id];\n\tif (item.data) {\n\t\tthis.itemsDataSize -= item.size;\n\t\titem.data = null;\n\t\titem.alreadyRead = 0;\n\t\tfor (var i = 0; i < item.extents.length; i++) {\n\t\t\tvar extent = item.extents[i];\n\t\t\textent.alreadyRead = 0;\n\t\t}\n\t\treturn item.size;\n\t} else {\n\t\treturn 0;\n\t}\n}\n\n\nISOFile.prototype.processItems = function(callback) {\n\tfor(var i in this.items) {\n\t\tvar item = this.items[i];\n\t\tthis.getItem(item.id);\n\t\tif (callback && !item.sent) {\n\t\t\tcallback(item);\n\t\t\titem.sent = true;\n\t\t\titem.data = null;\n\t\t}\n\t}\n}\n\nISOFile.prototype.hasItem = function(name) {\n\tfor(var i in this.items) {\n\t\tvar item = this.items[i];\n\t\tif (item.name === name) {\n\t\t\treturn item.id;\n\t\t}\n\t}\n\treturn -1;\n}\n\nISOFile.prototype.getMetaHandler = function() {\n\tif (!this.meta) {\n\t\treturn null;\n\t} else {\n\t\treturn this.meta.hdlr.handler;\t\t\n\t}\n}\n\nISOFile.prototype.getPrimaryItem = function() {\n\tif (!this.meta || !this.meta.pitm) {\n\t\treturn null;\n\t} else {\n\t\treturn this.getItem(this.meta.pitm.item_id);\n\t}\n}\n\nISOFile.prototype.itemToFragmentedTrackFile = function(_options) {\n\tvar options = _options || {};\n\tvar item = null;\n\tif (options.itemId) {\n\t\titem = this.getItem(options.itemId);\n\t} else {\n\t\titem = this.getPrimaryItem();\n\t}\n\tif (item == null) return null;\n\n\tvar file = new ISOFile();\n\tfile.discardMdatData = false;\n\t// assuming the track type is the same as the item type\n\tvar trackOptions = { type: item.type, description_boxes: item.properties.boxes};\n\tif (item.properties.ispe) {\n\t\ttrackOptions.width = item.properties.ispe.image_width;\n\t\ttrackOptions.height = item.properties.ispe.image_height;\n\t}\n\tvar trackId = file.addTrack(trackOptions);\n\tif (trackId) {\n\t\tfile.addSample(trackId, item.data);\n\t\treturn file;\n\t} else {\n\t\treturn null;\n\t}\n}\n\n// file:src/isofile-write.js\n/* Rewrite the entire file */\nISOFile.prototype.write = function(outstream) {\n\tfor (var i=0; i<this.boxes.length; i++) {\n\t\tthis.boxes[i].write(outstream);\n\t}\n}\n\nISOFile.prototype.createFragment = function(track_id, sampleNumber, stream_) {\n\tvar trak = this.getTrackById(track_id);\n\tvar sample = this.getSample(trak, sampleNumber);\n\tif (sample == null) {\n\t\tthis.setNextSeekPositionFromSample(trak.samples[sampleNumber]);\n\t\treturn null;\n\t}\n\t\n\tvar stream = stream_ || new DataStream();\n\tstream.endianness = DataStream.BIG_ENDIAN;\n\n\tvar moof = this.createSingleSampleMoof(sample);\n\tmoof.write(stream);\n\n\t/* adjusting the data_offset now that the moof size is known*/\n\tmoof.trafs[0].truns[0].data_offset = moof.size+8; //8 is mdat header\n\tLog.debug(\"MP4Box\", \"Adjusting data_offset with new value \"+moof.trafs[0].truns[0].data_offset);\n\tstream.adjustUint32(moof.trafs[0].truns[0].data_offset_position, moof.trafs[0].truns[0].data_offset);\n\t\t\n\tvar mdat = new BoxParser.mdatBox();\n\tmdat.data = sample.data;\n\tmdat.write(stream);\n\treturn stream;\n}\n\n/* Modify the file and create the initialization segment */\nISOFile.writeInitializationSegment = function(ftyp, moov, total_duration, sample_duration) {\n\tvar i;\n\tvar index;\n\tvar mehd;\n\tvar trex;\n\tvar box;\n\tLog.debug(\"ISOFile\", \"Generating initialization segment\");\n\n\tvar stream = new DataStream();\n\tstream.endianness = DataStream.BIG_ENDIAN;\n\tftyp.write(stream);\n\t\n\t/* we can now create the new mvex box */\n\tvar mvex = moov.add(\"mvex\");\n\tif (total_duration) {\n\t\tmvex.add(\"mehd\").set(\"fragment_duration\", total_duration);\n\t}\n\tfor (i = 0; i < moov.traks.length; i++) {\n\t\tmvex.add(\"trex\").set(\"track_id\", moov.traks[i].tkhd.track_id)\n\t\t\t\t\t\t.set(\"default_sample_description_index\", 1)\n\t\t\t\t\t\t.set(\"default_sample_duration\", sample_duration)\n\t\t\t\t\t\t.set(\"default_sample_size\", 0)\n\t\t\t\t\t\t.set(\"default_sample_flags\", 1<<16)\n\t}\n\tmoov.write(stream);\n\n\treturn stream.buffer;\n\n}\n\nISOFile.prototype.save = function(name) {\n\tvar stream = new DataStream();\n\tstream.endianness = DataStream.BIG_ENDIAN;\n\tthis.write(stream);\n\tstream.save(name);\t\n}\n\nISOFile.prototype.getBuffer = function() {\n\tvar stream = new DataStream();\n\tstream.endianness = DataStream.BIG_ENDIAN;\n\tthis.write(stream);\n\treturn stream.buffer;\n}\n\nISOFile.prototype.initializeSegmentation = function() {\n\tvar i;\n\tvar j;\n\tvar box;\n\tvar initSegs;\n\tvar trak;\n\tvar seg;\n\tif (this.onSegment === null) {\n\t\tLog.warn(\"MP4Box\", \"No segmentation callback set!\");\n\t}\n\tif (!this.isFragmentationInitialized) {\n\t\tthis.isFragmentationInitialized = true;\t\t\n\t\tthis.nextMoofNumber = 0;\n\t\tthis.resetTables();\n\t}\t\n\tinitSegs = [];\t\n\tfor (i = 0; i < this.fragmentedTracks.length; i++) {\n\t\tvar moov = new BoxParser.moovBox();\n\t\tmoov.mvhd = this.moov.mvhd;\n\t moov.boxes.push(moov.mvhd);\n\t\ttrak = this.getTrackById(this.fragmentedTracks[i].id);\n\t\tmoov.boxes.push(trak);\n\t\tmoov.traks.push(trak);\n\t\tseg = {};\n\t\tseg.id = trak.tkhd.track_id;\n\t\tseg.user = this.fragmentedTracks[i].user;\n\t\tseg.buffer = ISOFile.writeInitializationSegment(this.ftyp, moov, (this.moov.mvex && this.moov.mvex.mehd ? this.moov.mvex.mehd.fragment_duration: undefined), (this.moov.traks[i].samples.length>0 ? this.moov.traks[i].samples[0].duration: 0));\n\t\tinitSegs.push(seg);\n\t}\n\treturn initSegs;\n}\n\n// file:src/box-print.js\n/* \n * Copyright (c) Telecom ParisTech/TSI/MM/GPAC Cyril Concolato\n * License: BSD-3-Clause (see LICENSE file)\n */\nBoxParser.Box.prototype.printHeader = function(output) {\n\tthis.size += 8;\n\tif (this.size > MAX_SIZE) {\n\t\tthis.size += 8;\n\t}\n\tif (this.type === \"uuid\") {\n\t\tthis.size += 16;\n\t}\n\toutput.log(output.indent+\"size:\"+this.size);\n\toutput.log(output.indent+\"type:\"+this.type);\n}\n\nBoxParser.FullBox.prototype.printHeader = function(output) {\n\tthis.size += 4;\n\tBoxParser.Box.prototype.printHeader.call(this, output);\n\toutput.log(output.indent+\"version:\"+this.version);\n\toutput.log(output.indent+\"flags:\"+this.flags);\n}\n\nBoxParser.Box.prototype.print = function(output) {\n\tthis.printHeader(output);\n}\n\nBoxParser.ContainerBox.prototype.print = function(output) {\n\tthis.printHeader(output);\n\tfor (var i=0; i<this.boxes.length; i++) {\n\t\tif (this.boxes[i]) {\n\t\t\tvar prev_indent = output.indent;\n\t\t\toutput.indent += \" \";\n\t\t\tthis.boxes[i].print(output);\n\t\t\toutput.indent = prev_indent;\n\t\t}\n\t}\n}\n\nISOFile.prototype.print = function(output) {\n\toutput.indent = \"\";\n\tfor (var i=0; i<this.boxes.length; i++) {\n\t\tif (this.boxes[i]) {\n\t\t\tthis.boxes[i].print(output);\n\t\t}\n\t}\t\n}\n\nBoxParser.mvhdBox.prototype.print = function(output) {\n\tBoxParser.FullBox.prototype.printHeader.call(this, output);\n\toutput.log(output.indent+\"creation_time: \"+this.creation_time);\n\toutput.log(output.indent+\"modification_time: \"+this.modification_time);\n\toutput.log(output.indent+\"timescale: \"+this.timescale);\n\toutput.log(output.indent+\"duration: \"+this.duration);\n\toutput.log(output.indent+\"rate: \"+this.rate);\n\toutput.log(output.indent+\"volume: \"+(this.volume>>8));\n\toutput.log(output.indent+\"matrix: \"+this.matrix.join(\", \"));\n\toutput.log(output.indent+\"next_track_id: \"+this.next_track_id);\n}\n\nBoxParser.tkhdBox.prototype.print = function(output) {\n\tBoxParser.FullBox.prototype.printHeader.call(this, output);\n\toutput.log(output.indent+\"creation_time: \"+this.creation_time);\n\toutput.log(output.indent+\"modification_time: \"+this.modification_time);\n\toutput.log(output.indent+\"track_id: \"+this.track_id);\n\toutput.log(output.indent+\"duration: \"+this.duration);\n\toutput.log(output.indent+\"volume: \"+(this.volume>>8));\n\toutput.log(output.indent+\"matrix: \"+this.matrix.join(\", \"));\n\toutput.log(output.indent+\"layer: \"+this.layer);\n\toutput.log(output.indent+\"alternate_group: \"+this.alternate_group);\n\toutput.log(output.indent+\"width: \"+this.width);\n\toutput.log(output.indent+\"height: \"+this.height);\n}// file:src/mp4box.js\n/*\n * Copyright (c) 2012-2013. Telecom ParisTech/TSI/MM/GPAC Cyril Concolato\n * License: BSD-3-Clause (see LICENSE file)\n */\nvar MP4Box = {};\n\nMP4Box.createFile = function (_keepMdatData, _stream) {\n\t/* Boolean indicating if bytes containing media data should be kept in memory */\n\tvar keepMdatData = (_keepMdatData !== undefined ? _keepMdatData : true);\n\tvar file = new ISOFile(_stream);\n\tfile.discardMdatData = (keepMdatData ? false : true);\n\treturn file;\n}\n\nif (typeof exports !== 'undefined') {\n\texports.createFile = MP4Box.createFile;\n}\n",null,null,null,null,null,null,null,null,null,null],"names":["MAX_U6","Math","pow","MAX_U14","MAX_U30","MAX_U53","Number","MAX_SAFE_INTEGER","MAX_U62","ImmutableBytesBuffer","buffer","offset","view","constructor","this","DataView","byteOffset","length","remaining","Uint8Array","slice","firstByteValue","getRemainingBuffer","subarray","getU8","Error","val","getUint8","getU16","getUint16","getU32","getUint32","getU64","getBigUint64","getVarInt","first","prefix","BigInt","getNumberVarInt","getBytes","len","getVarBytes","getUtf8String","TextDecoder","decode","MutableBytesBuffer","byteLength","enoughSpaceAvailable","required","newBuffer","x","set","putU8","v","setUint8","putU16","setUint16","putU32","setUint32","putU64","setBigUint64","putVarInt","value","shift","i","putBytes","putUtf8String","bytes","TextEncoder","encode","putLengthPrefixedByteArray","ReadableStreamBuffer","reader","readableStream","getReader","waitForBytes","Promise","resolve","fillTo","fill","result","read","done","temp","size","readAll","maxLength","undefined","getInt16","close","releaseLock","cancel","release","WritableStreamBuffer","writer","writableStream","getWriter","write","data","flush","clear","ReadableWritableStreamBuffer","readStreamBuffer","writeStreamBuffer","releaseAll","readBuffer","readStream","writeBuffer","writeStream","Tuple","TupleField","Location","KeyValuePairs","Parameters","GroupOrder","FilterType","Subscribe","SubscribeOk","SubscribeError","SubscribeUpdate","SubscribeNamespace","SubscribeNamespaceOk","SubscribeNamespaceError","Unsubscribe","Publish","PublishOk","PublishError","PublishDone","PublishNamespace","PublishNamespaceOk","PublishNamespaceError","PublishNamespaceDone","FetchType","StandaloneFetch","JoiningFetch","Fetch","FetchOk","FetchError","FetchCancel","GoAway","ClientSetup","ServerSetup","Version","ControlMessageType","async","sleep","ms","setTimeout","serialize","tuple","buf","forEach","field","serialized","deserialize","push","encoded","location","group","object","valueIsVarInt","key","deserialize_with_size","pairs","Map","deserialize_with_reader","order","Publisher","Ascending","Descending","NextGroupStart","LargestObject","AbsoluteStart","AbsoluteRange","mainBuf","payloadBuf","id","namespace","name","subscriber_priority","group_order","forward","filter_type","start_location","end_group","params","track_alias","expires","content_exists","largest_location","code","reason","subscription_id","stream_count","Standalone","Relative","Absolute","end_location","r","start","fetch_type","standalone","joining","end_of_track","session_uri","versions","version","supportedVersionLen","toString","t","ReservedSetupV00","MaxRequestId","RequestsBlocked","ControlStream","decoder","encoder","nextRequestId","mutex","c","Decoder","Encoder","recv","message","send","msg","unlock","lock","payload","p","then","incr","messageType","advertisedLength","console","error","rawPayload","res","type","w","m","SubgroupHeader","SubgroupObject","SubgroupType","ObjectForwardingPreference","Status","ObjectDatagramType","ObjectDatagram","header","group_id","hasExplicitSubgroupId","subgroup_id","publisher_priority","obj","object_id","extension_headers","object_payload","status","try_from","Type0x10","Type0x11","Type0x12","Type0x13","Type0x14","Type0x15","Type0x18","Type0x19","Type0x1A","Type0x1B","Type0x1C","Type0x1D","isSubgroupIdPresent","isSubgroupIdZero","isSubgroupFirstObjectId","isExtensionPresent","contains_end_of_group","SubgroupWriter","stream","SubgroupReader","extHeaders","obj_payload_len","NORMAL","OBJECT_NULL","GROUP_END","TRACK_END","Type0x0","Type0x1","Type0x2","Type0x3","Type0x4","Type0x5","Type0x6","Type0x7","Type0x20","Type0x21","isEndOfGroup","hasExtensions","hasObjectId","hasStatus","alias","extHeadersLength","extHeadersData","Objects","quic","h","datagrams","writable","TrackWriter","createUnidirectionalStream","subgroupHeader","streams","incomingUnidirectionalStreams","subgroupType","e","asError","String","Deferred","promise","reject","pending","Watch","current","next","init","update","Function","Notify","wait","wake","Queue","closed","capacity","queue","CountQueuingStrategy","highWaterMark","TransformStream","readable","abort","err","control","objects","publishedNamespaces","waitingPublishNamespaceRequests","subscribe","subscribeQueue","nextTrackAlias","publish_namespace","has","join","publishNamespaceSend","PublishNamespaceSend","Control.ControlMessageType","subscribed","recvSubscribe","recvUnsubscribe","recvPublishNamespaceOk","recvPublishNamespaceError","get","onOk","onError","warn","trackAlias","SubscribeRecv","unsubscribe","delete","state","ok","active","subscriberPriority","groupOrder","track","ack","acked","serve","props","priority","subgroup","Subscriber","publishedNamespacesQueue","trackToIDMap","trackAliasMap","aliasToSubscriptionMap","pendingTrack","recvPublishNamespace","recvPublishNamespaceDone","recvSubscribeOk","recvSubscribeError","recvPublishDone","publishNamespace","PublishNamespaceRecv","_msg","subscribe_namespace","SubscribeSend","subscription_req","Control.GroupOrder","Control.FilterType","trackID","callback","onDone","recvObject","subscriptionId","onData","_code","_reason","_streamCount","Connection","controlStream","publisher","subscriber","running","run","closeCode","all","runControl","runObjects","Client","fingerprint","config","fetchFingerprint","catch","connect","options","serverCertificateHashes","WebTransport","url","ready","createBidirectionalStream","sendOrder","Control.Version","DRAFT_14","Control.ClientSetup","server","readServerSetup","Stream.ControlStream","response","fetch","hexString","text","hexBytes","parseInt","algorithm","bufferLen","bufReader","readClientSetup","Segment","input","cache","timestamp","backpressure","ByteLengthQueuingStrategy","transport","transform","chunk","controller","max","duration","enqueue","chunks","tee","log_level","Log","Date","setLogLevel","level","debug","info","module","log","getDurationString","_timescale","neg","pad","number","a","split","duration_sec","hours","floor","minutes","msec","printRanges","ranges","str","end","exports","MP4BoxStream","arrayBuffer","ArrayBuffer","dataview","position","prototype","getPosition","getEndPosition","getLength","seek","pos","npos","min","isNaN","isFinite","isEos","readAnyInt","signed","getInt8","getInt32","readUint8","readUint16","readUint24","readUint32","readUint64","readString","s","fromCharCode","readCString","arr","b","apply","readInt8","readInt16","readInt32","readInt64","readUint8Array","readInt16Array","Int16Array","readUint16Array","readUint32Array","Uint32Array","readInt32Array","Int32Array","DataStream","endianness","_byteOffset","dataView","LITTLE_ENDIAN","_realloc","extra","_dynamicSize","req","blen","_buffer","_byteLength","src","_trimAlloc","dst","BIG_ENDIAN","Object","defineProperty","_dataView","isEof","mapUint8Array","memcpy","BYTES_PER_ELEMENT","arrayToNative","readInt8Array","Int8Array","Uint16Array","readFloat64Array","Float64Array","readFloat32Array","Float32Array","readFloat32","getFloat32","readFloat64","getFloat64","dstOffset","srcOffset","dstU8","srcU8","array","arrayIsLittleEndian","flipArrayEndianness","nativeToEndian","littleEndian","u8","j","k","tmp","failurePosition","fromCharCodeUint8","uint8arr","encoding","MAX_SIZE","save","filename","blob","Blob","window","URL","createObjectURL","document","createElement","body","appendChild","setAttribute","click","revokeObjectURL","writeInt32Array","mapInt32Array","writeInt32","writeInt16Array","mapInt16Array","writeInt16","writeInt8Array","mapInt8Array","writeInt8","writeUint32Array","mapUint32Array","writeUint32","writeUint16Array","mapUint16Array","writeUint16","writeUint8Array","writeUint8","writeFloat64Array","mapFloat64Array","writeFloat64","writeFloat32Array","mapFloat32Array","writeFloat32","setInt32","setInt16","setInt8","setFloat32","setFloat64","writeUCS2String","lengthOverride","charCodeAt","writeString","substring","writeCString","writeStruct","structDefinition","struct","writeType","tp","Array","charset","test","ta","writeUint64","writeUint24","adjustUint32","MultiBufferStream","buffers","bufferIndex","insertBuffer","initialized","firstBuffer","fileStart","logBufferLevel","concat","buffer1","buffer2","reduceBuffer","newLength","smallB","usedBytes","ab","to_add","splice","used","total","range","bufferedString","cleanBuffers","mergeNextBuffer","next_buffer","oldLength","oldUsedBytes","oldFileStart","findPosition","fromStart","filePosition","markAsUsed","abuffer","index","findEndContiguousBuf","inputindex","currentBuf","nextBuf","getEndFilePositionAfter","addUsedBytes","nbBytes","setAllUsedBytes","MPEG4DescriptorParser","descTagToName","getDescriptorName","tag","that","classes","parseOneDescriptor","desc","byteRead","Descriptor","parse","_tag","_size","descs","findDescriptor","parseRemainingDescriptors","ES_Descriptor","call","ES_ID","flags","dependsOn_ES_ID","l","OCR_ES_ID","getOTI","dcd","oti","getAudioConfig","dsi","audioObjectType","DecoderConfigDescriptor","streamType","upStream","bufferSize","maxBitrate","avgBitrate","DecoderSpecificInfo","SLConfigDescriptor","BoxParser","ERR_INVALID_DATA","ERR_NOT_ENOUGH_DATA","OK","BASIC_BOXES","FULL_BOXES","CONTAINER_BOXES","boxCodes","fullBoxCodes","containerBoxCodes","sampleEntryCodes","sampleGroupEntryCodes","trackGroupTypes","UUIDBoxes","UUIDs","initialize","FullBox","Box","ContainerBox","SampleEntry","TrackGroupTypeBox","box","createBoxCtor","createFullBoxCtor","boxes","createContainerBoxCtor","_type","_name","_uuid","box_name","uuid","hdr_size","SampleGroupEntry","grouping_type","parseMethod","parseFullHeader","addSubBoxArrays","subBoxNames","nbSubBoxes","createMediaSampleEntryCtor","mediaType","createSampleEntryCtor","createEncryptedSampleEntryCtor","createSampleGroupCtor","createTrackGroupCtor","createUUIDBox","isFullBox","isContainerBox","printPS","ps","nalu","reduce","byte","padStart","ColorPoint","y","Pixel","row","col","bad_pixel_row","bad_pixel_column","TKHD_FLAG_ENABLED","TKHD_FLAG_IN_MOVIE","TKHD_FLAG_IN_PREVIEW","TFHD_FLAG_BASE_DATA_OFFSET","TFHD_FLAG_SAMPLE_DESC","TFHD_FLAG_SAMPLE_DUR","TFHD_FLAG_SAMPLE_SIZE","TFHD_FLAG_SAMPLE_FLAGS","TFHD_FLAG_DUR_EMPTY","TFHD_FLAG_DEFAULT_BASE_IS_MOOF","TRUN_FLAGS_DATA_OFFSET","TRUN_FLAGS_FIRST_FLAG","TRUN_FLAGS_DURATION","TRUN_FLAGS_SIZE","TRUN_FLAGS_FLAGS","TRUN_FLAGS_CTS_OFFSET","add","addBox","prop","addEntry","_prop","parseUUID","parseHex16","hex16","hex","parseOneBox","headerOnly","parentSize","diff","box_type","has_unparsed_data","parseDataAndRewind","ret","indexOf","parseLanguage","language","chars","languageString","SAMPLE_ENTRY_TYPE_VISUAL","SAMPLE_ENTRY_TYPE_AUDIO","SAMPLE_ENTRY_TYPE_HINT","SAMPLE_ENTRY_TYPE_METADATA","SAMPLE_ENTRY_TYPE_SUBTITLE","SAMPLE_ENTRY_TYPE_SYSTEM","SAMPLE_ENTRY_TYPE_TEXT","parseHeader","data_reference_index","parseFooter","compressorname_length","width","height","horizresolution","vertresolution","frame_count","compressorname","depth","channel_count","samplesize","samplerate","FieldLength","layer_size","op_index","aux_type","aux_subtype_length","aux_subtype","seq_profile","seq_level_idx_0","seq_tier_0","high_bitdepth","twelve_bit","monochrome","chroma_subsampling_x","chroma_subsampling_y","chroma_sample_position","reserved_1","initial_presentation_delay_present","initial_presentation_delay_minus_one","reserved_2","configOBUs_length","configOBUs","toparse","configurationVersion","AVCProfileIndication","profile_compatibility","AVCLevelIndication","lengthSizeMinusOne","nb_SPS_nalus","SPS","nb_PPS_nalus","PPS","ext","bufferSizeDB","all_ref_pics_intra","intra_pred_used","max_ref_per_pic","channel_indexes","channel_types","channel_associations","cleanApertureWidthN","cleanApertureWidthD","cleanApertureHeightN","cleanApertureHeightD","horizOffN","horizOffD","vertOffN","vertOffD","max_content_light_level","max_pic_average_light_level","pos_x","pos_y","pos_z","quat_x","quat_y","quat_z","focal_length_x","principal_point_x","principal_point_y","focal_length_y","skew_factor","component_count","component_types","component_type_urls","component_type","entry_count","chunk_offsets","maxCLL","maxFALL","colour_type","colour_primaries","transfer_characteristics","matrix_coefficients","full_range_flag","ICC_profile","notice","compositionToDTSShift","leastDecodeToDisplayDelta","greatestDecodeToDisplayDelta","compositionStartTime","compositionEndTime","sample_counts","sample_offsets","tmp_byte1","tmp_byte2","tmp_byte3","fscod","bsid","bsmod","acmod","lfeon","bit_rate_code","tmp_16","data_rate","num_ind_sub","ind_subs","ind_sub","num_dep_sub","chan_loc","boxesFound","knownBlockTypes","flagAndType","numMetadataBlocks","bytessent","time","OutputChannelCount","PreSkip","InputSampleRate","OutputGain","ChannelMappingFamily","StreamCount","CoupledCount","ChannelMapping","entries","extended_language","entry","segment_duration","media_time","media_rate_integer","media_rate_fraction","timescale","presentation_time","event_duration","scheme_id_uri","presentation_time_delta","message_size","message_data","createEntityToGroupCtor","num_entities_in_group","entity_ids","entity_id","tile_size_x","tile_size_y","layer_binning","tiles_in_layer_column_minus1","tiles_in_layer_row_minus1","esd_data","esd_parser","esd","fieldCount","fieldOrdering","data_format","major_brand","minor_version","compatible_brands","handler","tmp_byte","general_profile_space","general_tier_flag","general_profile_idc","general_profile_compatibility","general_constraint_indicator","general_level_idc","min_spatial_segmentation_idc","parallelismType","chroma_format_idc","bit_depth_luma_minus8","bit_depth_chroma_minus8","avgFrameRate","constantFrameRate","numTemporalLayers","temporalIdNested","nalu_arrays","nalu_array","completeness","nalu_type","numOfArrays","numNalus","item_infos","offset_size","length_size","base_offset_size","index_size","items","item_count","item","item_ID","construction_method","base_offset","extent_count","extents","extent","extent_index","extent_offset","extent_length","reserved","axis","item_protection_index","item_name","content_type","content_encoding","extension_type","item_type","item_uri_type","associations","item_assoc","association_count","essential","property_index","references","SingleItemTypeReferenceBox","SingleItemTypeReferenceBoxLarge","angle","image_width","image_height","schemeURI","count","levels","track_ID","padding_flag","assignment_type","grouping_type_parameter","sub_track_id","layer_id","period","display_primaries","white_point","max_display_mastering_luminance","min_display_mastering_luminance","creation_time","modification_time","fragment_duration","sequence_number","bits_per_pixel","rate","volume","matrix","next_track_id","packetssent","sample_count","padbits","hSpacing","vSpacing","payloadID","rtpmap_string","initial_delay","item_id","num_channels","bits_per_channels","step_count","ref_track_id","ntp_timestamp","system_id","kid","datasize","descriptionformat","sdptext","aux_info_type","aux_info_type_parameter","default_sample_info_size","sample_info_size","mime_format","schema_location","auxiliary_mime_types","displayFlags","horizontal_justification","vertical_justification","bg_color_rgba","box_record","style_record","roll_count","first_output_sample","sample_offset","description_length","num_output_samples","num_total_samples","layerNumber","accurateStatisticsFlag","avgBitRate","subSequenceIdentifier","durationFlag","avgRateFlag","dependency","numReferences","dependencyInfo","subSeqDirectionFlag","roll_distance","num_leading_samples_known","num_leading_samples","operation_point_count","target_rate_share","available_bitrate","maximum_bitrate","minimum_bitrate","discard_priority","crypt_byte_block","skip_byte_block","isProtected","Per_Sample_IV_Size","KID","constant_IV_size","constant_IV","NAL_unit_type","level_independently_decodable","group_description_index","component_index","correction_applied","num_bad_rows","num_bad_cols","num_bad_pixels","bad_rows","bad_columns","bad_pixels","scheme_type","scheme_version","scheme_uri","is_leading","sample_depends_on","sample_is_depended_on","sample_has_redundancy","default_length","default_group_description_index","reference_ID","earliest_presentation_time","first_offset","ref","tmp_32","reference_type","referenced_size","subsegment_duration","starts_with_SAP","SAP_type","SAP_delta_time","from_item_ID","to_item_ID","primaryRChromaticity_x","primaryRChromaticity_y","primaryGChromaticity_x","primaryGChromaticity_y","primaryBChromaticity_x","primaryBChromaticity_y","whitePointChromaticity_x","whitePointChromaticity_y","luminanceMax","luminanceMin","balance","subsegments","subsegment_count","subsegment","range_count","range_size","switch_group","alternate_group","attribute_list","first_chunk","samples_per_chunk","sample_description_index","entryCount","shadowed_sample_numbers","sync_sample_numbers","sample_numbers","sample_sizes","sample_size","delta","sample_deltas","tmp32","single_view_allowed","stereo_scheme","stereo_indication_type","ftypBox","field_size","subsample_count","sampleInfo","sample_delta","subsamples","subsample","discardable","codec_specific_parameters","default_crypt_byte_block","default_skip_byte_block","default_isProtected","default_Per_Sample_IV_Size","default_KID","default_constant_IV_size","default_constant_IV","baseMediaDecodeTime","readBytes","track_id","base_data_offset","default_sample_description_index","default_sample_duration","default_sample_size","default_sample_flags","length_size_of_traf_num","length_size_of_trun_num","length_size_of_sample_num","number_of_entries","moof_offset","traf_number","trun_number","sample_number","layer","track_group_id","TrackReferenceTypeBox","track_ids","trefBox","data_offset","first_sample_flags","sample_duration","sample_flags","sample_composition_time_offset","lang","description","tags","profile","component_bit_depth_minus_one","component_format","component_align_size","sampling_type","interleave_type","block_size","component_little_endian","block_pad_lsb","block_little_endian","block_reversed","pad_unknown","pixel_size","row_align_size","tile_align_size","num_tile_cols_minus_one","num_tile_rows_minus_one","LiveServerManifest","replace","default_AlgorithmID","default_IV_size","fragment_count","absolute_time","absolute_duration","graphicsmode","opcolor","bitDepth","chromaSubsampling","videoFullRangeFlag","colourPrimaries","transferCharacteristics","matrixCoefficients","codecIntializationDataSize","codecIntializationData","colorSpace","transferFunction","bitReader","held_bits","num_held_bits","stream_read_1_bytes","strm","stream_read_2_bytes","extract_bits","num_bits","ptl_present_flag","ols_idx","num_sublayers","constant_frame_rate","bit_depth_minus8","num_bytes_constraint_info","ptl_frame_only_constraint_flag","ptl_multilayer_enabled_flag","general_constraint_info","cnstr1","cnstr2","ptl_sublayer_present_mask","sublayer_level_idc","ptl_num_sub_profiles","general_sub_profile_idc","max_picture_width","max_picture_height","avg_frame_rate","num_of_arrays","isVideo","isAudio","isSubtitle","isMetadata","isHint","getCodec","getWidth","getHeight","getChannelCount","getSampleRate","getSampleSize","VisualSampleEntry","AudioSampleEntry","SubtitleSampleEntry","MetadataSampleEntry","decimalToHex","d","padding","avc1SampleEntry","avc2SampleEntry","avc3SampleEntry","avc4SampleEntry","baseCodec","avcC","hev1SampleEntry","hvc1SampleEntry","hvcC","reversed","hasByte","constraint_string","vvc1SampleEntry","vvi1SampleEntry","vvcC","last_nonzero","ptl_frame_only_constraint","ptl_multilayer_enabled","base32_chars","mp4aSampleEntry","esds","stxtSampleEntry","vp08SampleEntry","vp09SampleEntry","vpcC","av01SampleEntry","bitdepth","av1C","writeHeader","sizePosition","avcCBox","co64Box","cslgBox","cttsBox","drefBox","elngBox","elstBox","emsgBox","hdlrBox","hvcCBox","kindBox","mdhdBox","mehdBox","mfhdBox","mvhdBox","writeFooter","stppSampleEntry","sbgpBox","sgpdBox","sidxBox","smhdBox","stcoBox","stscBox","stsdBox","stshBox","stssBox","stszBox","constant","sttsBox","tfdtBox","UINT32_MAX","tfhdBox","tkhdBox","trexBox","trunBox","data_offset_position","vmhdBox","unpack","samples","pts","dts","Infinity","description_index","chunk_index","DIFF_BOXES_PROP_NAMES","DIFF_PRIMITIVE_ARRAY_PROP_NAMES","boxEqualFields","box_a","box_b","boxEqual","VTTin4Parser","parseSample","cues","cue","getText","startTime","endTime","n","z","secToTimestamp","insec","string","cueIn4","payl","XMLSubtitlein4Parser","sample","documentString","resources","DOMParser","parseFromString","Textin4Parser","parseConfig","ISOFile","mdats","moofs","isProgressive","moovStartFound","onMoovStart","moovStartSent","onReady","readySent","onSegment","onSamples","sampleListBuilt","fragmentedTracks","extractedTracks","isFragmentationInitialized","sampleProcessingStarted","nextMoofNumber","itemListBuilt","entity_groups","onSidx","sidxSent","setSegmentOptions","user","trak","getTrackById","fragTrack","nextSample","segmentStream","nb_samples","rapAlignement","nbSamples","unsetSegmentOptions","setExtractionOptions","extractTrack","unsetExtractionOptions","restoreParsePosition","hasIncompleteMdat","processIncompleteMdat","saveParsePosition","processIncompleteBox","updateUsedBytes","checkBuffer","appendBuffer","last","nextFileStart","moov","buildSampleLists","updateSampleLists","getInfo","processSamples","nextSeekPosition","nextParsePosition","sidx","meta","flattenItemInfo","processItems","onItem","getAllocatedSampleDataSize","sample_desc","movie","_1904","getTime","hasMoov","mvhd","isFragmented","mvex","mehd","hasIOD","iods","brands","ftyp","created","modified","tracks","audioTracks","videoTracks","subtitleTracks","metadataTracks","hintTracks","otherTracks","traks","mdia","minf","stbl","stsd","tkhd","hdlr","tref","edts","edits","elst","movie_duration","movie_timescale","track_width","track_height","mdhd","cts_shift","cslg","samples_duration","codec","kind","udta","kinds","elng","samples_size","bitrate","audio","sample_rate","video","mime","setNextSeekPositionFromSample","alreadyRead","fragTrak","createFragment","extractTrak","getSample","getBox","getBoxes","returnEarly","_sweep","getTrackSamplesInfo","getTrackSample","releaseUsedSamples","sampleNum","lastValidSample","releaseSample","samplesDataSize","stop","seekTrack","useRap","seek_offset","rap_seek_sample_num","seek_sample_num","cts","is_sync","getTrackDuration","trak_seek_info","seek_info","equal","box_index","a_box","b_box","lastBoxStartPosition","parsingMdat","discardMdatData","_options","addTrack","media_duration","sample_description_entry","media_type","codes","avcDecoderConfigRecord","hevcDecoderConfigRecord","description_boxes","buildTrakSampleLists","computeSize","stream_","addSample","depends_on","is_depended_on","has_redundancy","degradation_priority","first_dts","moof","createSingleSampleMoof","trafs","truns","moofBox","traf","lastMoofIndex","resetTables","stsc","stts","ctts","stss","initial_duration","stco","co64","stsz","stz2","initSampleGroups","sbgps","trak_sgpds","traf_sgpds","sample_group_info","sample_group_key","SampleGroupInfo","_parameter","_sbgp","sbgp","last_sample_in_run","entry_index","sample_groups_info","fragment_description","is_fragment","setSampleGroupProperties","sample_groups","process_sdtp","sdtp","subs","sgpds","stdp","chunk_run_index","last_chunk_in_run","offset_in_chunk","last_sample_in_chunk","last_sample_in_stts_run","stts_run_index","last_sample_in_ctts_run","ctts_run_index","last_stss_index","subs_entry_index","last_subs_sample_index","last_run_position","trex","tfhd","getTrexById","trun","moof_number","number_in_traf","first_sample_index","first_traf_merged","tfdt","bdop","dbim","dop","bdo","has_fragment_subsamples","sample_index","lengthAfterStart","getCodecs","codecs","trexs","itemsDataSize","iinf","ref_to","protection_index","protection","ipro","protections","grpl","entity_group","iloc","itemloc","source","dinf","idat","pitm","primary","iref","iprp","ipmas","ipma","association","properties","propEntry","ipco","propbox","getItem","releaseItem","sent","hasItem","getMetaHandler","getPrimaryItem","itemToFragmentedTrackFile","itemId","file","trackOptions","ispe","trackId","outstream","sampleNumber","mdat","mdatBox","writeInitializationSegment","total_duration","getBuffer","initializeSegmentation","initSegs","seg","moovBox","printHeader","output","indent","print","prev_indent","MP4Box","_keepMdatData","_stream","keepMdatData","createFile","MP4.BoxParser","dOpsBox","mapping","Container","mp4","frame","segment","MP4.ISOFile","isDecoderConfig","codedWidth","isVideoConfig","numberOfChannels","sampleRate","codedHeight","dops","MP4.Stream","copyTo","SUPPORTED","encoderConfig","decoderConfig","frames","bind","AudioEncoder","metadata","configure","isSupported","short","includes","isConfigSupported","supported","keyframeNext","keyframeCounter","bitrateMode","latencyMode","hardwareAcceleration","VideoEncoder","keyFrame","encodeQueueSize","framerate","Track","segments","notify","media","runAudio","isVideoTrack","runVideo","MediaStreamTrackProcessor","Audio.Encoder","container","WritableStream","pipeThrough","pipeTo","Video.Encoder","at","desiredSize","ReadableStream","pull","isAudioTrackSettings","settings","isVideoTrackSettings","Broadcast","catalog","connection","mediaTracks","getTracks","getSettings","audioContext","AudioContext","createMediaStreamSource","MediaStream","assign","initTrack","selectionParams","mimeType","frameRate","channelConfig","channelCount","streamingFormat","streamingFormatVersion","supportsDeltaUpdates","commonTrackFields","packaging","renderGroup","serveSubscribe","base","lastIndexOf","splitExt","serveCatalog","serveInit","serveTrack","JSON","stringify","Catalog.encode","serveSegment","attach","srcObject","PublisherApi","client","broadcast","opts","fingerprintUrl","publish","bcConfig","PublisherMoq","HTMLElement","shadow","cameraSelect","microphoneSelect","previewVideo","connectButton","playbackUrlTextarea","mediaStream","isPublishing","super","attachShadow","mode","style","textContent","classList","autoplay","playsInline","muted","readOnly","rows","display","marginTop","append","handleDeviceChange","handleClick","navigator","mediaDevices","addEventListener","startPreview","connectedCallback","populateDeviceLists","disconnectedCallback","removeEventListener","devices","enumerateDevices","vids","filter","mics","innerHTML","o","deviceId","label","vidId","micId","videoConstraints","exact","ideal","audioConstraints","getUserMedia","disabled","getAttribute","crypto","randomUUID","getAudioTracks","makeEven","videoConfig","videoWidth","videoHeight","audioConfig","playbackBaseUrl","customElements","define"],"mappings":"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","x_google_ignoreList":[37]}