@carbonenginejs/runtime-resource 0.9.0 → 0.9.2

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.
Files changed (171) hide show
  1. package/NOTICE +5 -3
  2. package/README.md +1 -1
  3. package/dist/CjsResMan.js +1 -1
  4. package/dist/CjsResMan.js.map +1 -1
  5. package/dist/CjsResource.js +2 -2
  6. package/dist/CjsResource.js.map +1 -1
  7. package/dist/CjsResourceSource.js +9 -0
  8. package/dist/CjsResourceSource.js.map +1 -1
  9. package/dist/format/CjsBlueReader.js +2 -2
  10. package/dist/format/CjsBlueReader.js.map +1 -1
  11. package/dist/format/CjsFormat.js +10 -5
  12. package/dist/format/CjsFormat.js.map +1 -1
  13. package/dist/format/CjsResourceProbe.js +2 -2
  14. package/dist/format/CjsResourceProbe.js.map +1 -1
  15. package/dist/formats/black/core/CjsBlackBinaryReader.js +4 -0
  16. package/dist/formats/black/core/CjsBlackBinaryReader.js.map +1 -1
  17. package/dist/formats/black/core/CjsBlackPropertyReaders.js +6 -1
  18. package/dist/formats/black/core/CjsBlackPropertyReaders.js.map +1 -1
  19. package/dist/formats/black/core/CjsBlackReader.js +2 -2
  20. package/dist/formats/black/core/CjsBlackReader.js.map +1 -1
  21. package/dist/formats/black/core/CjsBlackSchemaRegistry.js +4 -0
  22. package/dist/formats/black/core/CjsBlackSchemaRegistry.js.map +1 -1
  23. package/dist/formats/black/core/black-schema-v1-2026-07-23.json.js +4 -0
  24. package/dist/formats/black/core/black-schema-v1-2026-07-23.json.js.map +1 -0
  25. package/dist/formats/black/core/blackDefinitions.js +1 -1
  26. package/dist/formats/black/core/blackDefinitions.js.map +1 -1
  27. package/dist/formats/black/core/blackSchema.js +1 -1
  28. package/dist/formats/bnk/core/musicNodes.js +4 -0
  29. package/dist/formats/bnk/core/musicNodes.js.map +1 -1
  30. package/dist/formats/cmf/core/binary.js +5 -0
  31. package/dist/formats/cmf/core/binary.js.map +1 -1
  32. package/dist/formats/dds/CjsDdsFormat.js +7 -0
  33. package/dist/formats/dds/CjsDdsFormat.js.map +1 -1
  34. package/dist/formats/dds/core/bc7.js +7 -2
  35. package/dist/formats/dds/core/bc7.js.map +1 -1
  36. package/dist/formats/fbx/core/helpers.js +11 -1
  37. package/dist/formats/fbx/core/helpers.js.map +1 -1
  38. package/dist/formats/flac/CjsFlacFormat.js +6 -0
  39. package/dist/formats/flac/CjsFlacFormat.js.map +1 -1
  40. package/dist/formats/gif/CjsGifFormat.js +5 -0
  41. package/dist/formats/gif/CjsGifFormat.js.map +1 -1
  42. package/dist/formats/gltf/core/helpers.js +3 -3
  43. package/dist/formats/gltf/core/helpers.js.map +1 -1
  44. package/dist/formats/gr2/core/tangents.js +9 -9
  45. package/dist/formats/gr2/core/tangents.js.map +1 -1
  46. package/dist/formats/index.js +4 -4
  47. package/dist/formats/jpeg/CjsJpegFormat.js +6 -0
  48. package/dist/formats/jpeg/CjsJpegFormat.js.map +1 -1
  49. package/dist/formats/jpeg/core/jpeg.js +10 -0
  50. package/dist/formats/jpeg/core/jpeg.js.map +1 -1
  51. package/dist/formats/mp3/CjsMp3Format.js +5 -0
  52. package/dist/formats/mp3/CjsMp3Format.js.map +1 -1
  53. package/dist/formats/mp4/CjsMp4Format.js +6 -0
  54. package/dist/formats/mp4/CjsMp4Format.js.map +1 -1
  55. package/dist/formats/obj/core/helpers.js +2 -2
  56. package/dist/formats/obj/core/helpers.js.map +1 -1
  57. package/dist/formats/ogg/CjsOggFormat.js +6 -0
  58. package/dist/formats/ogg/CjsOggFormat.js.map +1 -1
  59. package/dist/formats/ogg/core/vorbis.js +5 -0
  60. package/dist/formats/ogg/core/vorbis.js.map +1 -1
  61. package/dist/formats/png/CjsPngFormat.js +6 -0
  62. package/dist/formats/png/CjsPngFormat.js.map +1 -1
  63. package/dist/formats/red/CjsRedFormat.js +1 -1
  64. package/dist/formats/red/CjsRedFormat.js.map +1 -1
  65. package/dist/formats/red/core/blackDefinitions.js +1 -1
  66. package/dist/formats/stl/core/stl.js +7 -2
  67. package/dist/formats/stl/core/stl.js.map +1 -1
  68. package/dist/formats/tga/CjsTgaFormat.js +5 -0
  69. package/dist/formats/tga/CjsTgaFormat.js.map +1 -1
  70. package/dist/formats/wav/CjsWavFormat.js +6 -0
  71. package/dist/formats/wav/CjsWavFormat.js.map +1 -1
  72. package/dist/formats/webm/CjsWebmFormat.js +6 -0
  73. package/dist/formats/webm/CjsWebmFormat.js.map +1 -1
  74. package/dist/formats/webp/CjsWebpFormat.js +5 -0
  75. package/dist/formats/webp/CjsWebpFormat.js.map +1 -1
  76. package/dist/formats/wem/CjsWemFormat.js +3 -2
  77. package/dist/formats/wem/CjsWemFormat.js.map +1 -1
  78. package/dist/formats/yaml/CjsYamlFormat.js +6 -0
  79. package/dist/formats/yaml/CjsYamlFormat.js.map +1 -1
  80. package/dist/formats/yaml/core/CjsYamlReader.js +6 -0
  81. package/dist/formats/yaml/core/CjsYamlReader.js.map +1 -1
  82. package/dist/index.js +1 -1
  83. package/dist/resources/AudioGeometryResData.js +3 -3
  84. package/dist/resources/AudioGeometryResData.js.map +1 -1
  85. package/dist/resources/GStateBindingCallbackData.js +2 -2
  86. package/dist/resources/GStateBindingCallbackData.js.map +1 -1
  87. package/dist/resources/MeshDecalData.js +2 -2
  88. package/dist/resources/MeshDecalData.js.map +1 -1
  89. package/dist/resources/MeshDecalLodData.js +2 -2
  90. package/dist/resources/MeshDecalLodData.js.map +1 -1
  91. package/dist/resources/Tr2EffectRes.js +1 -1
  92. package/dist/resources/Tr2EffectRes.js.map +1 -1
  93. package/dist/resources/Tr2GrannyIntersectionResult.js +4 -4
  94. package/dist/resources/Tr2GrannyIntersectionResult.js.map +1 -1
  95. package/dist/resources/Tr2GrannyStateRes.js +1 -1
  96. package/dist/resources/Tr2GrannyStateRes.js.map +1 -1
  97. package/dist/resources/Tr2ImageRes.js +1 -1
  98. package/dist/resources/Tr2ImageRes.js.map +1 -1
  99. package/dist/resources/Tr2LightProfileRes.js +1 -1
  100. package/dist/resources/Tr2LightProfileRes.js.map +1 -1
  101. package/dist/resources/Tr2MaterialArea.js +2 -2
  102. package/dist/resources/Tr2MaterialArea.js.map +1 -1
  103. package/dist/resources/Tr2MaterialMesh.js +2 -2
  104. package/dist/resources/Tr2MaterialMesh.js.map +1 -1
  105. package/dist/resources/Tr2MaterialRes.js +2 -2
  106. package/dist/resources/Tr2MaterialRes.js.map +1 -1
  107. package/dist/resources/Tr2ShaderPermutation.js +2 -2
  108. package/dist/resources/Tr2ShaderPermutation.js.map +1 -1
  109. package/dist/resources/Tr2TextureLodManager.js +2 -2
  110. package/dist/resources/Tr2TextureLodManager.js.map +1 -1
  111. package/dist/resources/Tr2TextureLodUpdateRequest.js +2 -2
  112. package/dist/resources/Tr2TextureLodUpdateRequest.js.map +1 -1
  113. package/dist/resources/Tr2TexturePackChannel.js +2 -2
  114. package/dist/resources/Tr2TexturePackChannel.js.map +1 -1
  115. package/dist/resources/Tr2TexturePipeline.js +2 -2
  116. package/dist/resources/Tr2TexturePipeline.js.map +1 -1
  117. package/dist/resources/Tr2TexturePipelineParams.js +2 -2
  118. package/dist/resources/Tr2TexturePipelineParams.js.map +1 -1
  119. package/dist/resources/Tr2TexturePipelineStepCompress.js +2 -2
  120. package/dist/resources/Tr2TexturePipelineStepCompress.js.map +1 -1
  121. package/dist/resources/Tr2TexturePipelineStepGenerateMips.js +2 -2
  122. package/dist/resources/Tr2TexturePipelineStepGenerateMips.js.map +1 -1
  123. package/dist/resources/Tr2TexturePipelineStepLimitSize.js +2 -2
  124. package/dist/resources/Tr2TexturePipelineStepLimitSize.js.map +1 -1
  125. package/dist/resources/Tr2TexturePipelineStepLoad.js +2 -2
  126. package/dist/resources/Tr2TexturePipelineStepLoad.js.map +1 -1
  127. package/dist/resources/Tr2TexturePipelineStepPack.js +2 -2
  128. package/dist/resources/Tr2TexturePipelineStepPack.js.map +1 -1
  129. package/dist/resources/TriGeometryRes.js +1 -1
  130. package/dist/resources/TriGeometryRes.js.map +1 -1
  131. package/dist/resources/TriGeometryResAreaData.js +3 -3
  132. package/dist/resources/TriGeometryResAreaData.js.map +1 -1
  133. package/dist/resources/TriGeometryResJointData.js +3 -3
  134. package/dist/resources/TriGeometryResJointData.js.map +1 -1
  135. package/dist/resources/TriGeometryResLodData.js +2 -2
  136. package/dist/resources/TriGeometryResLodData.js.map +1 -1
  137. package/dist/resources/TriGeometryResMeshData.js +4 -4
  138. package/dist/resources/TriGeometryResMeshData.js.map +1 -1
  139. package/dist/resources/TriGeometryResSkeletonData.js +2 -2
  140. package/dist/resources/TriGeometryResSkeletonData.js.map +1 -1
  141. package/dist/resources/TriGrannyRes.js +1 -1
  142. package/dist/resources/TriGrannyRes.js.map +1 -1
  143. package/dist/resources/TriJointBinding.js +3 -3
  144. package/dist/resources/TriJointBinding.js.map +1 -1
  145. package/dist/resources/TriMorphTargetGeometryConstants.js +2 -2
  146. package/dist/resources/TriMorphTargetGeometryConstants.js.map +1 -1
  147. package/dist/resources/TriRtGeometryConstants.js +2 -2
  148. package/dist/resources/TriRtGeometryConstants.js.map +1 -1
  149. package/dist/resources/TriTextureRes.js +1 -1
  150. package/dist/resources/TriTextureRes.js.map +1 -1
  151. package/dist/resources/texturePipelineBehavior.js +2 -2
  152. package/dist/resources/texturePipelineBehavior.js.map +1 -1
  153. package/dist/texture/CjsTextureArrayRes.js +1 -1
  154. package/dist/texture/CjsTextureArrayRes.js.map +1 -1
  155. package/dist/texture/CjsTextureParameterProxy.js +1 -1
  156. package/dist/texture/CjsTextureParameterProxy.js.map +1 -1
  157. package/docs/README.md +6 -2
  158. package/docs/architecture.md +1 -1
  159. package/docs/formats/README.md +7 -6
  160. package/docs/formats/gr2.md +161 -0
  161. package/docs/reference/classes/README.md +33 -0
  162. package/docs/reference/classes/core.md +106 -0
  163. package/docs/reference/classes/dropped.md +46 -0
  164. package/docs/reference/classes/formats.md +522 -0
  165. package/docs/reference/classes/resources.md +346 -0
  166. package/docs/reference/classes/texture.md +26 -0
  167. package/docs/reference/events.md +1 -1
  168. package/format-notices/black/NOTICE +1 -1
  169. package/package.json +2 -4
  170. package/dist/formats/black/core/black-schema-v1-2026-07-11.json.js +0 -4
  171. package/dist/formats/black/core/black-schema-v1-2026-07-11.json.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"vorbis.js","sources":["../../../../../src/formats/ogg/core/vorbis.js"],"sourcesContent":["import { imdct, vorbisWindowSlope } from \"./imdct.js\";\n\n/**\n * Pure-JS Ogg Vorbis PCM decoder.\n *\n * Implements Vorbis I decode: setup-header codebooks (huffman + VQ), floor\n * type 1 with the spec's exact integer line rendering, residue types 0/1/2,\n * square-polar channel de-coupling, IMDCT, and windowed center-aligned\n * overlap-add with final granule trimming. Behavior follows the Vorbis I\n * specification with stb_vorbis (public domain) consulted as a reference;\n * floor type 0 streams are rejected (never produced by modern encoders).\n */\n\nconst NO_CODE = 255;\nconst FAST_BITS = 10;\nconst FAST_SIZE = 1 << FAST_BITS;\n\n/**\n * The floor1 amplitude table from the Vorbis I specification\n * (inverse_db_table); indexed by the integer floor curve value.\n */\nconst INVERSE_DB_TABLE = new Float32Array([\n 1.0649863e-07, 1.1341951e-07, 1.2079015e-07, 1.2863978e-07,\n 1.3699951e-07, 1.4590251e-07, 1.5538408e-07, 1.6548181e-07,\n 1.7623575e-07, 1.8768855e-07, 1.9988561e-07, 2.1287530e-07,\n 2.2670913e-07, 2.4144197e-07, 2.5713223e-07, 2.7384213e-07,\n 2.9163793e-07, 3.1059021e-07, 3.3077411e-07, 3.5226968e-07,\n 3.7516214e-07, 3.9954229e-07, 4.2550680e-07, 4.5315863e-07,\n 4.8260743e-07, 5.1396998e-07, 5.4737065e-07, 5.8294187e-07,\n 6.2082472e-07, 6.6116941e-07, 7.0413592e-07, 7.4989464e-07,\n 7.9862701e-07, 8.5052630e-07, 9.0579828e-07, 9.6466216e-07,\n 1.0273513e-06, 1.0941144e-06, 1.1652161e-06, 1.2409384e-06,\n 1.3215816e-06, 1.4074654e-06, 1.4989305e-06, 1.5963394e-06,\n 1.7000785e-06, 1.8105592e-06, 1.9282195e-06, 2.0535261e-06,\n 2.1869758e-06, 2.3290978e-06, 2.4804557e-06, 2.6416497e-06,\n 2.8133190e-06, 2.9961443e-06, 3.1908506e-06, 3.3982101e-06,\n 3.6190449e-06, 3.8542308e-06, 4.1047004e-06, 4.3714470e-06,\n 4.6555282e-06, 4.9580707e-06, 5.2802740e-06, 5.6234160e-06,\n 5.9888572e-06, 6.3780469e-06, 6.7925283e-06, 7.2339451e-06,\n 7.7040476e-06, 8.2047000e-06, 8.7378876e-06, 9.3057248e-06,\n 9.9104632e-06, 1.0554501e-05, 1.1240392e-05, 1.1970856e-05,\n 1.2748789e-05, 1.3577278e-05, 1.4459606e-05, 1.5399272e-05,\n 1.6400004e-05, 1.7465768e-05, 1.8600792e-05, 1.9809576e-05,\n 2.1096914e-05, 2.2467911e-05, 2.3928002e-05, 2.5482978e-05,\n 2.7139006e-05, 2.8902651e-05, 3.0780908e-05, 3.2781225e-05,\n 3.4911534e-05, 3.7180282e-05, 3.9596466e-05, 4.2169667e-05,\n 4.4910090e-05, 4.7828601e-05, 5.0936773e-05, 5.4246931e-05,\n 5.7772202e-05, 6.1526565e-05, 6.5524908e-05, 6.9783085e-05,\n 7.4317983e-05, 7.9147585e-05, 8.4291040e-05, 8.9768747e-05,\n 9.5602426e-05, 0.00010181521, 0.00010843174, 0.00011547824,\n 0.00012298267, 0.00013097477, 0.00013948625, 0.00014855085,\n 0.00015820453, 0.00016848555, 0.00017943469, 0.00019109536,\n 0.00020351382, 0.00021673929, 0.00023082423, 0.00024582449,\n 0.00026179955, 0.00027881276, 0.00029693158, 0.00031622787,\n 0.00033677814, 0.00035866388, 0.00038197188, 0.00040679456,\n 0.00043323036, 0.00046138411, 0.00049136745, 0.00052329927,\n 0.00055730621, 0.00059352311, 0.00063209358, 0.00067317058,\n 0.00071691700, 0.00076350630, 0.00081312324, 0.00086596457,\n 0.00092223983, 0.00098217216, 0.0010459992, 0.0011139742,\n 0.0011863665, 0.0012634633, 0.0013455702, 0.0014330129,\n 0.0015261382, 0.0016253153, 0.0017309374, 0.0018434235,\n 0.0019632195, 0.0020908006, 0.0022266726, 0.0023713743,\n 0.0025254795, 0.0026895994, 0.0028643847, 0.0030505286,\n 0.0032487691, 0.0034598925, 0.0036847358, 0.0039241906,\n 0.0041792066, 0.0044507950, 0.0047400328, 0.0050480668,\n 0.0053761186, 0.0057254891, 0.0060975636, 0.0064938176,\n 0.0069158225, 0.0073652516, 0.0078438871, 0.0083536271,\n 0.0088964928, 0.0094746370, 0.0100903520, 0.0107460800,\n 0.0114444210, 0.0121881440, 0.0129801980, 0.0138237250,\n 0.0147220680, 0.0156787910, 0.0166976870, 0.0177827970,\n 0.0189384230, 0.0201691490, 0.0214798540, 0.0228757350,\n 0.0243623300, 0.0259455310, 0.0276316180, 0.0294272760,\n 0.0313396260, 0.0333762520, 0.0355452280, 0.0378551570,\n 0.0403151990, 0.0429351080, 0.0457252730, 0.0486967580,\n 0.0518613480, 0.0552315910, 0.0588208500, 0.0626433610,\n 0.0667142790, 0.0710497490, 0.0756669620, 0.0805842270,\n 0.0858210440, 0.0913981790, 0.0973377470, 0.1036633000,\n 0.1103999300, 0.1175743400, 0.1252149800, 0.1333521500,\n 0.1420181300, 0.1512472700, 0.1610761700, 0.1715438000,\n 0.1826916800, 0.1945640200, 0.2072078800, 0.2206734200,\n 0.2350140200, 0.2502865600, 0.2665515900, 0.2838736100,\n 0.3023213200, 0.3219678600, 0.3428911400, 0.3651741400,\n 0.3889052100, 0.4141784700, 0.4410941200, 0.4697589000,\n 0.5002864800, 0.5327979100, 0.5674221200, 0.6042964000,\n 0.6435669900, 0.6853895900, 0.7299300700, 0.7773650400,\n 0.8278826000, 0.8816830700, 0.9389798000, 1.0\n]);\n\nfunction decodeError(message)\n{\n const error = new Error(`ogg: ${message}`);\n error.code = \"CJS_FORMAT_PARSE_ERROR\";\n return error;\n}\n\nfunction ilog(value)\n{\n let result = 0;\n let v = value | 0;\n if (v < 0) return 0;\n while (v)\n {\n result++;\n v >>= 1;\n }\n return result;\n}\n\nfunction float32Unpack(x)\n{\n const mantissa = x & 0x1fffff;\n const sign = x & 0x80000000;\n const exponent = (x & 0x7fe00000) >>> 21;\n const value = sign ? -mantissa : mantissa;\n return value * Math.pow(2, exponent - 788);\n}\n\nfunction lookup1Values(entries, dimensions)\n{\n if (dimensions === 0) return 0;\n const bits = ilog(entries);\n let vals = entries >>> Math.floor(((bits - 1) * (dimensions - 1)) / dimensions);\n for (;;)\n {\n let acc = 1;\n let acc1 = 1;\n for (let i = 0; i < dimensions; i++)\n {\n acc *= vals;\n acc1 *= vals + 1;\n }\n if (acc <= entries && acc1 > entries) return vals;\n if (acc > entries) vals--;\n else vals++;\n }\n}\n\n/**\n * LSB-first bit reader over one Vorbis packet; reading past the end sets\n * `eop` instead of throwing (end-of-packet is a defined decode condition).\n */\nclass PacketReader\n{\n constructor(bytes)\n {\n this.bytes = bytes;\n this.position = 0;\n this.bitBuffer = 0;\n this.bitsLeft = 0;\n this.eop = false;\n }\n\n readBits(count)\n {\n let value = 0;\n for (let i = 0; i < count; i++)\n {\n if (this.bitsLeft === 0)\n {\n if (this.position >= this.bytes.length)\n {\n this.eop = true;\n return -1;\n }\n this.bitBuffer = this.bytes[this.position++];\n this.bitsLeft = 8;\n }\n value |= (this.bitBuffer & 1) << i;\n this.bitBuffer >>= 1;\n this.bitsLeft--;\n }\n return value >>> 0;\n }\n}\n\nclass Codebook\n{\n constructor()\n {\n this.dimensions = 0;\n this.entries = 0;\n this.lookupType = 0;\n this.sequenceP = false;\n this.quantvals = 0;\n this.values = null;\n this.fastTable = null;\n this.treeNodes = null;\n this.maxLength = 0;\n }\n\n buildHuffman(lengths)\n {\n const available = new Uint32Array(33);\n this.fastTable = new Int32Array(FAST_SIZE).fill(-1);\n // flat binary trie: two child slots per node; negative = -(symbol+1)\n const nodes = [ 0, 0 ];\n\n let assigned = false;\n for (let symbol = 0; symbol < lengths.length; symbol++)\n {\n const length = lengths[symbol];\n if (length === NO_CODE) continue;\n if (length > this.maxLength) this.maxLength = length;\n\n let code;\n if (!assigned)\n {\n code = 0;\n assigned = true;\n for (let i = 1; i <= length; i++) available[i] = (1 << (32 - i)) >>> 0;\n }\n else\n {\n let z = length;\n while (z > 0 && !available[z]) z--;\n if (z === 0) throw decodeError(\"over-specified huffman codebook\");\n code = available[z];\n available[z] = 0;\n if (z !== length)\n {\n for (let y = length; y > z; y--)\n {\n available[y] = (code + (1 << (32 - y))) >>> 0;\n }\n }\n }\n\n // reversed code: first stream bit in bit 0\n let reversed = 0;\n for (let i = 0; i < length; i++)\n {\n reversed |= ((code >>> (31 - i)) & 1) << i;\n }\n reversed >>>= 0;\n\n if (length <= FAST_BITS)\n {\n for (let z = reversed; z < FAST_SIZE; z += 1 << length)\n {\n this.fastTable[z] = (symbol << 6) | length;\n }\n }\n else\n {\n let node = 0;\n for (let i = 0; i < length; i++)\n {\n const bit = (reversed >>> i) & 1;\n const slot = node * 2 + bit;\n if (i === length - 1)\n {\n nodes[slot] = -(symbol + 1);\n }\n else\n {\n if (!nodes[slot])\n {\n nodes[slot] = nodes.length / 2;\n nodes.push(0, 0);\n }\n node = nodes[slot];\n }\n }\n }\n }\n\n this.treeNodes = nodes;\n }\n\n decode(reader)\n {\n // fast path: peek up to FAST_BITS without consuming\n let peek = 0;\n let peekBits = 0;\n const savedPosition = reader.position;\n const savedBuffer = reader.bitBuffer;\n const savedLeft = reader.bitsLeft;\n while (peekBits < FAST_BITS)\n {\n const bit = reader.readBits(1);\n if (bit < 0) break;\n peek |= bit << peekBits;\n peekBits++;\n }\n reader.position = savedPosition;\n reader.bitBuffer = savedBuffer;\n reader.bitsLeft = savedLeft;\n reader.eop = false;\n\n if (peekBits === FAST_BITS)\n {\n const hit = this.fastTable[peek];\n if (hit >= 0)\n {\n reader.readBits(hit & 63);\n return hit >> 6;\n }\n }\n else\n {\n // short remainder: try fast table over what's left\n const hit = this.fastTable[peek];\n if (hit >= 0 && (hit & 63) <= peekBits)\n {\n reader.readBits(hit & 63);\n return hit >> 6;\n }\n }\n\n // slow path: walk the trie bit by bit\n let node = 0;\n for (let i = 0; i < this.maxLength; i++)\n {\n const bit = reader.readBits(1);\n if (bit < 0) return -1;\n const value = this.treeNodes[node * 2 + bit];\n if (value < 0) return -value - 1;\n if (value === 0) throw decodeError(\"invalid huffman code in stream\");\n node = value;\n }\n throw decodeError(\"huffman walk exceeded max code length\");\n }\n\n vqValue(symbol, element)\n {\n if (this.lookupType === 1)\n {\n let index = symbol;\n for (let i = 0; i < element; i++) index = Math.floor(index / this.quantvals);\n return this.values[index % this.quantvals];\n }\n return this.values[symbol * this.dimensions + element];\n }\n}\n\nfunction parseCodebook(reader)\n{\n const sync = reader.readBits(24);\n if (sync !== 0x564342) throw decodeError(\"invalid codebook sync pattern\");\n\n const book = new Codebook();\n book.dimensions = reader.readBits(16);\n book.entries = reader.readBits(24);\n\n const lengths = new Uint8Array(book.entries);\n const ordered = reader.readBits(1);\n if (ordered)\n {\n let currentEntry = 0;\n let currentLength = reader.readBits(5) + 1;\n while (currentEntry < book.entries)\n {\n const number = reader.readBits(ilog(book.entries - currentEntry));\n if (reader.eop) throw decodeError(\"codebook lengths truncated\");\n for (let i = 0; i < number; i++) lengths[currentEntry + i] = currentLength;\n currentEntry += number;\n currentLength++;\n if (currentEntry > book.entries) throw decodeError(\"codebook entry overflow\");\n }\n }\n else\n {\n const sparse = reader.readBits(1);\n for (let i = 0; i < book.entries; i++)\n {\n const present = sparse ? reader.readBits(1) : 1;\n lengths[i] = present ? reader.readBits(5) + 1 : NO_CODE;\n }\n }\n if (reader.eop) throw decodeError(\"codebook lengths truncated\");\n\n book.buildHuffman(lengths);\n\n book.lookupType = reader.readBits(4);\n if (book.lookupType > 2) throw decodeError(`invalid codebook lookup type ${book.lookupType}`);\n if (book.lookupType > 0)\n {\n const minimum = float32Unpack(reader.readBits(32));\n const delta = float32Unpack(reader.readBits(32));\n const valueBits = reader.readBits(4) + 1;\n book.sequenceP = reader.readBits(1) === 1;\n const count = book.lookupType === 1\n ? lookup1Values(book.entries, book.dimensions)\n : book.entries * book.dimensions;\n book.quantvals = book.lookupType === 1 ? count : 0;\n book.values = new Float32Array(count);\n for (let i = 0; i < count; i++)\n {\n book.values[i] = minimum + reader.readBits(valueBits) * delta;\n }\n if (reader.eop) throw decodeError(\"codebook lookup values truncated\");\n }\n return book;\n}\n\nfunction parseFloor(reader, codebooks)\n{\n const type = reader.readBits(16);\n if (type !== 1)\n {\n throw decodeError(`floor type ${type} is not supported (only floor 1)`);\n }\n\n const floor = {\n partitions: reader.readBits(5),\n partitionClassList: [],\n classDimensions: [],\n classSubclasses: [],\n classMasterbooks: [],\n subclassBooks: [],\n multiplier: 0,\n rangebits: 0,\n xList: [ 0, 0 ]\n };\n\n let maximumClass = -1;\n for (let i = 0; i < floor.partitions; i++)\n {\n const partitionClass = reader.readBits(4);\n floor.partitionClassList.push(partitionClass);\n if (partitionClass > maximumClass) maximumClass = partitionClass;\n }\n for (let i = 0; i <= maximumClass; i++)\n {\n floor.classDimensions.push(reader.readBits(3) + 1);\n const subclasses = reader.readBits(2);\n floor.classSubclasses.push(subclasses);\n floor.classMasterbooks.push(subclasses ? reader.readBits(8) : -1);\n const books = [];\n for (let j = 0; j < (1 << subclasses); j++)\n {\n books.push(reader.readBits(8) - 1);\n }\n floor.subclassBooks.push(books);\n }\n floor.multiplier = reader.readBits(2) + 1;\n floor.rangebits = reader.readBits(4);\n floor.xList = [ 0, 1 << floor.rangebits ];\n for (let i = 0; i < floor.partitions; i++)\n {\n for (let j = 0; j < floor.classDimensions[floor.partitionClassList[i]]; j++)\n {\n floor.xList.push(reader.readBits(floor.rangebits));\n }\n }\n if (reader.eop) throw decodeError(\"floor configuration truncated\");\n for (const bookIndex of [ ...floor.classMasterbooks, ...floor.subclassBooks.flat() ])\n {\n if (bookIndex >= codebooks.length) throw decodeError(\"floor references invalid codebook\");\n }\n\n // sorted render order over unique X positions, computed once\n floor.sortedIndex = floor.xList\n .map((x, index) => ({ x, index }))\n .sort((a, b) => a.x - b.x || a.index - b.index)\n .map((entry) => entry.index);\n\n // neighbor tables (over original ordering) computed once\n floor.lowNeighbors = [];\n floor.highNeighbors = [];\n for (let i = 2; i < floor.xList.length; i++)\n {\n let low = 0;\n let high = 1;\n for (let j = 0; j < i; j++)\n {\n if (floor.xList[j] < floor.xList[i] && floor.xList[j] >= floor.xList[low]) low = j;\n if (floor.xList[j] > floor.xList[i] && floor.xList[j] <= floor.xList[high]) high = j;\n }\n floor.lowNeighbors.push(low);\n floor.highNeighbors.push(high);\n }\n\n return floor;\n}\n\nfunction parseResidue(reader, codebooks)\n{\n const type = reader.readBits(16);\n if (type > 2) throw decodeError(`invalid residue type ${type}`);\n const residue = {\n type,\n begin: reader.readBits(24),\n end: reader.readBits(24),\n partSize: reader.readBits(24) + 1,\n classifications: reader.readBits(6) + 1,\n classbook: reader.readBits(8),\n books: []\n };\n if (residue.classbook >= codebooks.length) throw decodeError(\"residue classbook out of range\");\n\n const cascades = [];\n for (let i = 0; i < residue.classifications; i++)\n {\n const lowBits = reader.readBits(3);\n const flag = reader.readBits(1);\n const highBits = flag ? reader.readBits(5) : 0;\n cascades.push(highBits * 8 + lowBits);\n }\n for (let i = 0; i < residue.classifications; i++)\n {\n const passBooks = [];\n for (let pass = 0; pass < 8; pass++)\n {\n if (cascades[i] & (1 << pass))\n {\n const bookIndex = reader.readBits(8);\n if (bookIndex >= codebooks.length) throw decodeError(\"residue book out of range\");\n if (codebooks[bookIndex].lookupType === 0) throw decodeError(\"residue book has no lookup values\");\n passBooks.push(bookIndex);\n }\n else\n {\n passBooks.push(-1);\n }\n }\n residue.books.push(passBooks);\n }\n if (reader.eop) throw decodeError(\"residue configuration truncated\");\n return residue;\n}\n\nfunction parseMapping(reader, channels, floorCount, residueCount)\n{\n const type = reader.readBits(16);\n if (type !== 0) throw decodeError(`invalid mapping type ${type}`);\n const mapping = { submaps: 1, couplingSteps: [], mux: new Array(channels).fill(0), submapFloor: [], submapResidue: [] };\n\n if (reader.readBits(1)) mapping.submaps = reader.readBits(4) + 1;\n if (reader.readBits(1))\n {\n const steps = reader.readBits(8) + 1;\n const bits = ilog(channels - 1);\n for (let i = 0; i < steps; i++)\n {\n const magnitude = reader.readBits(bits);\n const angle = reader.readBits(bits);\n if (magnitude === angle || magnitude >= channels || angle >= channels)\n {\n throw decodeError(\"invalid channel coupling\");\n }\n mapping.couplingSteps.push({ magnitude, angle });\n }\n }\n if (reader.readBits(2) !== 0) throw decodeError(\"mapping reserved bits nonzero\");\n if (mapping.submaps > 1)\n {\n for (let i = 0; i < channels; i++)\n {\n mapping.mux[i] = reader.readBits(4);\n if (mapping.mux[i] >= mapping.submaps) throw decodeError(\"mapping mux out of range\");\n }\n }\n for (let i = 0; i < mapping.submaps; i++)\n {\n reader.readBits(8);\n const floorIndex = reader.readBits(8);\n const residueIndex = reader.readBits(8);\n if (floorIndex >= floorCount || residueIndex >= residueCount)\n {\n throw decodeError(\"mapping references invalid floor or residue\");\n }\n mapping.submapFloor.push(floorIndex);\n mapping.submapResidue.push(residueIndex);\n }\n return mapping;\n}\n\nconst FLOOR1_RANGES = [ 256, 128, 86, 64 ];\n\nfunction renderPoint(x0, y0, x1, y1, x)\n{\n const dy = y1 - y0;\n const adx = x1 - x0;\n const err = Math.floor((Math.abs(dy) * (x - x0)) / adx);\n return dy < 0 ? y0 - err : y0 + err;\n}\n\nfunction decodeFloor1Posts(reader, floor, codebooks)\n{\n if (reader.readBits(1) !== 1) return null;\n\n const range = FLOOR1_RANGES[floor.multiplier - 1];\n const posts = new Int32Array(floor.xList.length);\n const yBits = ilog(range - 1);\n posts[0] = reader.readBits(yBits);\n posts[1] = reader.readBits(yBits);\n\n let offset = 2;\n for (let i = 0; i < floor.partitions; i++)\n {\n const partitionClass = floor.partitionClassList[i];\n const cdim = floor.classDimensions[partitionClass];\n const cbits = floor.classSubclasses[partitionClass];\n const csub = (1 << cbits) - 1;\n let cval = 0;\n if (cbits)\n {\n cval = codebooks[floor.classMasterbooks[partitionClass]].decode(reader);\n if (cval < 0) return null;\n }\n for (let j = 0; j < cdim; j++)\n {\n const bookIndex = floor.subclassBooks[partitionClass][cval & csub];\n cval >>= cbits;\n if (bookIndex >= 0)\n {\n const value = codebooks[bookIndex].decode(reader);\n if (value < 0) return null;\n posts[offset + j] = value;\n }\n else\n {\n posts[offset + j] = 0;\n }\n }\n offset += cdim;\n }\n if (reader.eop) return null;\n return posts;\n}\n\nfunction computeFloor1Curve(floor, posts, n2, output)\n{\n const range = FLOOR1_RANGES[floor.multiplier - 1];\n const count = floor.xList.length;\n const finalY = new Int32Array(count);\n const step2 = new Uint8Array(count);\n\n step2[0] = 1;\n step2[1] = 1;\n finalY[0] = posts[0];\n finalY[1] = posts[1];\n\n for (let i = 2; i < count; i++)\n {\n const low = floor.lowNeighbors[i - 2];\n const high = floor.highNeighbors[i - 2];\n const predicted = renderPoint(floor.xList[low], finalY[low], floor.xList[high], finalY[high], floor.xList[i]);\n const value = posts[i];\n const highroom = range - predicted;\n const lowroom = predicted;\n const room = (highroom < lowroom ? highroom : lowroom) * 2;\n if (value)\n {\n step2[low] = 1;\n step2[high] = 1;\n step2[i] = 1;\n if (value >= room)\n {\n finalY[i] = highroom > lowroom ? value - lowroom + predicted : predicted - value + highroom - 1;\n }\n else\n {\n finalY[i] = value & 1 ? predicted - ((value + 1) >> 1) : predicted + (value >> 1);\n }\n }\n else\n {\n step2[i] = 0;\n finalY[i] = predicted;\n }\n }\n\n output.fill(0);\n let lx = 0;\n let ly = finalY[floor.sortedIndex[0]] * floor.multiplier;\n for (const index of floor.sortedIndex)\n {\n if (!step2[index]) continue;\n const hx = floor.xList[index];\n const hy = finalY[index] * floor.multiplier;\n if (hx > lx) renderLine(lx, ly, hx, hy, output, n2);\n if (hx >= n2) return;\n lx = hx;\n ly = hy;\n }\n if (lx < n2)\n {\n for (let i = lx; i < n2; i++) output[i] = INVERSE_DB_TABLE[ly & 255];\n }\n}\n\nfunction renderLine(x0, y0, x1, y1, output, n)\n{\n const dy = y1 - y0;\n const adx = x1 - x0;\n let ady = Math.abs(dy);\n const base = (dy / adx) | 0;\n const sy = dy < 0 ? base - 1 : base + 1;\n let x = x0;\n let y = y0;\n let err = 0;\n ady -= Math.abs(base) * adx;\n const limit = x1 > n ? n : x1;\n\n if (x < limit) output[x] = INVERSE_DB_TABLE[y & 255];\n for (x++; x < limit; x++)\n {\n err += ady;\n if (err >= adx)\n {\n err -= adx;\n y += sy;\n }\n else\n {\n y += base;\n }\n output[x] = INVERSE_DB_TABLE[y & 255];\n }\n}\n\nfunction decodeResidue(residue, reader, codebooks, buffers, doNotDecode, n2)\n{\n const channelCount = buffers.length;\n const classbook = codebooks[residue.classbook];\n const classwords = classbook.dimensions;\n const actualSize = residue.type === 2 ? n2 * channelCount : n2;\n const limitBegin = Math.min(residue.begin, actualSize);\n const limitEnd = Math.min(residue.end, actualSize);\n const nRead = limitEnd - limitBegin;\n const partRead = Math.floor(nRead / residue.partSize);\n if (partRead <= 0) return;\n\n if (residue.type === 2 && channelCount > 1)\n {\n if (doNotDecode.every(Boolean)) return;\n const classifications = new Int32Array(partRead + classwords);\n for (let pass = 0; pass < 8; pass++)\n {\n let pcount = 0;\n while (pcount < partRead)\n {\n if (pass === 0)\n {\n let symbol = classbook.decode(reader);\n if (symbol < 0) return;\n for (let i = classwords - 1; i >= 0; i--)\n {\n classifications[i + pcount] = symbol % residue.classifications;\n symbol = Math.floor(symbol / residue.classifications);\n }\n }\n for (let i = 0; i < classwords && pcount < partRead; i++, pcount++)\n {\n const z = residue.begin + pcount * residue.partSize;\n const bookIndex = residue.books[classifications[pcount]][pass];\n if (bookIndex < 0) continue;\n const book = codebooks[bookIndex];\n let cInter = z % channelCount;\n let pInter = Math.floor(z / channelCount);\n let decoded = 0;\n while (decoded < residue.partSize)\n {\n const symbol = book.decode(reader);\n if (symbol < 0) return;\n let last = 0;\n for (let e = 0; e < book.dimensions; e++)\n {\n const value = book.vqValue(symbol, e) + (book.sequenceP ? last : 0);\n if (book.sequenceP) last = value;\n buffers[cInter][pInter] += value;\n cInter++;\n if (cInter === channelCount)\n {\n cInter = 0;\n pInter++;\n }\n }\n decoded += book.dimensions;\n }\n }\n }\n }\n return;\n }\n\n const classifications = [];\n for (let j = 0; j < channelCount; j++) classifications.push(new Int32Array(partRead + classwords));\n\n for (let pass = 0; pass < 8; pass++)\n {\n let pcount = 0;\n while (pcount < partRead)\n {\n if (pass === 0)\n {\n for (let j = 0; j < channelCount; j++)\n {\n if (doNotDecode[j]) continue;\n let symbol = classbook.decode(reader);\n if (symbol < 0) return;\n for (let i = classwords - 1; i >= 0; i--)\n {\n classifications[j][i + pcount] = symbol % residue.classifications;\n symbol = Math.floor(symbol / residue.classifications);\n }\n }\n }\n for (let i = 0; i < classwords && pcount < partRead; i++, pcount++)\n {\n for (let j = 0; j < channelCount; j++)\n {\n if (doNotDecode[j]) continue;\n const bookIndex = residue.books[classifications[j][pcount]][pass];\n if (bookIndex < 0) continue;\n const book = codebooks[bookIndex];\n const target = buffers[j];\n const offset = residue.begin + pcount * residue.partSize;\n if (residue.type === 0)\n {\n const step = Math.floor(residue.partSize / book.dimensions);\n for (let k = 0; k < step; k++)\n {\n const symbol = book.decode(reader);\n if (symbol < 0) return;\n let last = 0;\n for (let e = 0; e < book.dimensions; e++)\n {\n const value = book.vqValue(symbol, e) + (book.sequenceP ? last : 0);\n if (book.sequenceP) last = value;\n target[offset + k + e * step] += value;\n }\n }\n }\n else\n {\n let k = 0;\n while (k < residue.partSize)\n {\n const symbol = book.decode(reader);\n if (symbol < 0) return;\n let last = 0;\n for (let e = 0; e < book.dimensions; e++)\n {\n const value = book.vqValue(symbol, e) + (book.sequenceP ? last : 0);\n if (book.sequenceP) last = value;\n target[offset + k + e] += value;\n }\n k += book.dimensions;\n }\n }\n }\n }\n }\n }\n}\n\nfunction buildWindow(n, blockflag, prevFlag, nextFlag, blocksize0)\n{\n const window = new Float32Array(n);\n const center = n >> 1;\n let leftStart = 0;\n let leftEnd = center;\n let leftN = center;\n let rightStart = center;\n let rightEnd = n;\n let rightN = center;\n if (blockflag && !prevFlag)\n {\n leftStart = (n >> 2) - (blocksize0 >> 2);\n leftEnd = (n >> 2) + (blocksize0 >> 2);\n leftN = blocksize0 >> 1;\n }\n if (blockflag && !nextFlag)\n {\n rightStart = n - (n >> 2) - (blocksize0 >> 2);\n rightEnd = n - (n >> 2) + (blocksize0 >> 2);\n rightN = blocksize0 >> 1;\n }\n const leftSlope = vorbisWindowSlope(leftN);\n const rightSlope = vorbisWindowSlope(rightN);\n for (let i = leftStart; i < leftEnd; i++) window[i] = leftSlope[i - leftStart];\n for (let i = leftEnd; i < rightStart; i++) window[i] = 1;\n for (let i = rightStart; i < rightEnd; i++) window[i] = rightSlope[rightN - 1 - (i - rightStart)];\n return window;\n}\n\nconst windowVariantCache = new Map();\n\nfunction getWindow(n, blockflag, prevFlag, nextFlag, blocksize0)\n{\n const key = `${n}:${blockflag ? 1 : 0}${prevFlag ? 1 : 0}${nextFlag ? 1 : 0}:${blocksize0}`;\n let window = windowVariantCache.get(key);\n if (!window)\n {\n window = buildWindow(n, blockflag, prevFlag, nextFlag, blocksize0);\n windowVariantCache.set(key, window);\n }\n return window;\n}\n\n/**\n * Split an Ogg stream into the first logical stream's packets.\n *\n * @param {Uint8Array} bytes Ogg bytes (already CRC-validated by inspection).\n * @returns {object} `{ packets, lastGranule }` for the first stream.\n */\nexport function extractOggPackets(bytes)\n{\n const packets = [];\n let pending = [];\n let serial = null;\n let lastGranule = 0;\n let offset = 0;\n\n while (offset + 27 <= bytes.length)\n {\n if (bytes[offset] !== 0x4f || bytes[offset + 1] !== 0x67 || bytes[offset + 2] !== 0x67 || bytes[offset + 3] !== 0x53)\n {\n throw decodeError(`invalid page at byte ${offset}`);\n }\n const headerType = bytes[offset + 5];\n let granule = 0;\n for (let i = 7; i >= 0; i--) granule = granule * 256 + bytes[offset + 6 + i];\n const pageSerial = (bytes[offset + 14] | (bytes[offset + 15] << 8) | (bytes[offset + 16] << 16) | (bytes[offset + 17] * 0x1000000)) >>> 0;\n const segmentCount = bytes[offset + 26];\n const tableOffset = offset + 27;\n let cursor = tableOffset + segmentCount;\n\n const isBos = (headerType & 0x02) !== 0;\n if (serial === null && isBos) serial = pageSerial;\n const ours = pageSerial === serial;\n\n for (let i = 0; i < segmentCount; i++)\n {\n const length = bytes[tableOffset + i];\n if (ours && length > 0) pending.push(bytes.subarray(cursor, cursor + length));\n cursor += length;\n if (length < 255 && ours)\n {\n packets.push(concatChunks(pending));\n pending = [];\n }\n }\n if (ours && granule !== 0xffffffffffffffff && Number.isSafeInteger(granule))\n {\n lastGranule = granule;\n }\n offset = cursor;\n }\n\n if (pending.length) packets.push(concatChunks(pending));\n return { packets, lastGranule };\n}\n\nfunction concatChunks(chunks)\n{\n if (chunks.length === 1) return chunks[0];\n let total = 0;\n for (const chunk of chunks) total += chunk.length;\n const bytes = new Uint8Array(total);\n let cursor = 0;\n for (const chunk of chunks)\n {\n bytes.set(chunk, cursor);\n cursor += chunk.length;\n }\n return bytes;\n}\n\nfunction expectHeader(packet, type)\n{\n if (packet.length < 7 || packet[0] !== type ||\n packet[1] !== 0x76 || packet[2] !== 0x6f || packet[3] !== 0x72 ||\n packet[4] !== 0x62 || packet[5] !== 0x69 || packet[6] !== 0x73)\n {\n throw decodeError(`missing vorbis header packet type ${type}`);\n }\n const reader = new PacketReader(packet);\n reader.readBits(8);\n for (let i = 0; i < 6; i++) reader.readBits(8);\n return reader;\n}\n\nfunction parseComments(packet)\n{\n const reader = new PacketReader(packet);\n reader.readBits(8);\n for (let i = 0; i < 6; i++) reader.readBits(8);\n const readString = () =>\n {\n const length = reader.readBits(32);\n let text = \"\";\n for (let i = 0; i < length; i++) text += String.fromCharCode(reader.readBits(8));\n return text;\n };\n const vendor = readString();\n const count = reader.readBits(32);\n const comments = [];\n for (let i = 0; i < count && !reader.eop; i++) comments.push(readString());\n\n let loop = null;\n let loopStart = null;\n let loopEnd = null;\n for (const comment of comments)\n {\n const match = /^(loopstart|loopend)=(\\d+)$/iu.exec(comment);\n if (!match) continue;\n if (match[1].toLowerCase() === \"loopstart\") loopStart = Number(match[2]);\n else loopEnd = Number(match[2]);\n }\n if (loopStart !== null && loopEnd !== null) loop = { start: loopStart, end: loopEnd };\n return { vendor, comments, loop };\n}\n\n/**\n * Decode an Ogg Vorbis stream to planar float PCM.\n *\n * @param {Uint8Array} bytes Complete Ogg Vorbis stream bytes.\n * @returns {object} `{ channels, sampleRate, sampleCount, channelData, vendor, comments, loop, packetCount }`.\n */\nexport function decodeVorbis(bytes)\n{\n const { packets, lastGranule } = extractOggPackets(bytes);\n if (packets.length < 3) throw decodeError(\"stream has no audio packets\");\n\n // identification header\n const identReader = expectHeader(packets[0], 1);\n if (identReader.readBits(32) !== 0) throw decodeError(\"unsupported vorbis version\");\n const channels = identReader.readBits(8);\n const sampleRate = identReader.readBits(32);\n identReader.readBits(32);\n identReader.readBits(32);\n identReader.readBits(32);\n const blocksize0 = 1 << identReader.readBits(4);\n const blocksize1 = 1 << identReader.readBits(4);\n if (!channels || !sampleRate) throw decodeError(\"invalid identification header\");\n if (blocksize0 > blocksize1 || blocksize0 < 64 || blocksize1 > 8192)\n {\n throw decodeError(\"invalid blocksizes\");\n }\n\n const { vendor, comments, loop } = parseComments(packets[1]);\n\n // setup header\n const setup = expectHeader(packets[2], 5);\n const codebooks = [];\n const codebookCount = setup.readBits(8) + 1;\n for (let i = 0; i < codebookCount; i++) codebooks.push(parseCodebook(setup));\n\n const timeCount = setup.readBits(6) + 1;\n for (let i = 0; i < timeCount; i++)\n {\n if (setup.readBits(16) !== 0) throw decodeError(\"nonzero time-domain transform\");\n }\n\n const floors = [];\n const floorCount = setup.readBits(6) + 1;\n for (let i = 0; i < floorCount; i++) floors.push(parseFloor(setup, codebooks));\n\n const residues = [];\n const residueCount = setup.readBits(6) + 1;\n for (let i = 0; i < residueCount; i++) residues.push(parseResidue(setup, codebooks));\n\n const mappings = [];\n const mappingCount = setup.readBits(6) + 1;\n for (let i = 0; i < mappingCount; i++) mappings.push(parseMapping(setup, channels, floorCount, residueCount));\n\n const modes = [];\n const modeCount = setup.readBits(6) + 1;\n for (let i = 0; i < modeCount; i++)\n {\n const blockflag = setup.readBits(1) === 1;\n if (setup.readBits(16) !== 0 || setup.readBits(16) !== 0)\n {\n throw decodeError(\"nonzero mode window/transform type\");\n }\n const mapping = setup.readBits(8);\n if (mapping >= mappingCount) throw decodeError(\"mode references invalid mapping\");\n modes.push({ blockflag, mapping });\n }\n if (setup.readBits(1) !== 1) throw decodeError(\"missing setup framing bit\");\n const modeBits = ilog(modeCount - 1);\n\n // synthesis state\n const n1 = blocksize1;\n const spectrum = [];\n const floorCurves = [];\n const imdctOut = [];\n for (let j = 0; j < channels; j++)\n {\n spectrum.push(new Float32Array(n1 >> 1));\n floorCurves.push(new Float32Array(n1 >> 1));\n imdctOut.push(new Float32Array(n1));\n }\n const zeroChannel = new Array(channels).fill(false);\n const floorPosts = new Array(channels).fill(null);\n const tails = [];\n for (let j = 0; j < channels; j++) tails.push(new Float32Array(n1 >> 1));\n let prevN = 0;\n\n const outputChunks = [];\n let totalSamples = 0;\n let packetCount = 0;\n\n for (let p = 3; p < packets.length; p++)\n {\n const reader = new PacketReader(packets[p]);\n if (reader.readBits(1) !== 0) continue;\n const modeNumber = reader.readBits(modeBits);\n if (modeNumber < 0 || modeNumber >= modeCount) continue;\n const mode = modes[modeNumber];\n const mapping = mappings[mode.mapping];\n const n = mode.blockflag ? blocksize1 : blocksize0;\n const n2 = n >> 1;\n\n let prevFlag = false;\n let nextFlag = false;\n if (mode.blockflag)\n {\n prevFlag = reader.readBits(1) === 1;\n nextFlag = reader.readBits(1) === 1;\n }\n\n // floors\n for (let j = 0; j < channels; j++)\n {\n const floor = floors[mapping.submapFloor[mapping.mux[j]]];\n floorPosts[j] = decodeFloor1Posts(reader, floor, codebooks);\n zeroChannel[j] = floorPosts[j] === null;\n }\n\n // coupling keeps partners decoding together\n const reallyZero = zeroChannel.slice();\n for (const step of mapping.couplingSteps)\n {\n if (!zeroChannel[step.magnitude] || !zeroChannel[step.angle])\n {\n zeroChannel[step.magnitude] = false;\n zeroChannel[step.angle] = false;\n }\n }\n\n // residues per submap\n for (let j = 0; j < channels; j++) spectrum[j].fill(0);\n for (let s = 0; s < mapping.submaps; s++)\n {\n const submapChannels = [];\n const doNotDecode = [];\n for (let j = 0; j < channels; j++)\n {\n if (mapping.mux[j] !== s) continue;\n submapChannels.push(spectrum[j]);\n doNotDecode.push(zeroChannel[j]);\n }\n if (!submapChannels.length) continue;\n decodeResidue(residues[mapping.submapResidue[s]], reader, codebooks, submapChannels, doNotDecode, n2);\n }\n\n // inverse coupling (reverse order)\n for (let i = mapping.couplingSteps.length - 1; i >= 0; i--)\n {\n const { magnitude, angle } = mapping.couplingSteps[i];\n const magnitudeVector = spectrum[magnitude];\n const angleVector = spectrum[angle];\n for (let k = 0; k < n2; k++)\n {\n const m = magnitudeVector[k];\n const a = angleVector[k];\n let newM;\n let newA;\n if (m > 0)\n {\n if (a > 0) { newM = m; newA = m - a; }\n else { newA = m; newM = m + a; }\n }\n else if (a > 0)\n {\n newM = m;\n newA = m + a;\n }\n else\n {\n newA = m;\n newM = m - a;\n }\n magnitudeVector[k] = newM;\n angleVector[k] = newA;\n }\n }\n\n // floor curve multiply + IMDCT + window\n const window = getWindow(n, mode.blockflag, prevFlag, nextFlag, blocksize0);\n for (let j = 0; j < channels; j++)\n {\n const out = imdctOut[j];\n if (reallyZero[j])\n {\n out.fill(0, 0, n);\n continue;\n }\n const floor = floors[mapping.submapFloor[mapping.mux[j]]];\n computeFloor1Curve(floor, floorPosts[j], n2, floorCurves[j]);\n const curve = floorCurves[j];\n const spec = spectrum[j];\n for (let k = 0; k < n2; k++) spec[k] *= curve[k];\n imdct(spec.subarray(0, n2), out, n);\n for (let k = 0; k < n; k++) out[k] *= window[k];\n }\n\n // center-aligned overlap-add\n if (prevN)\n {\n const outCount = ((prevN + n) >> 2);\n const curStart = (prevN >> 2) - (n >> 2);\n const chunk = [];\n for (let j = 0; j < channels; j++)\n {\n const samples = new Float32Array(outCount);\n const tail = tails[j];\n const cur = imdctOut[j];\n for (let i = 0; i < outCount; i++)\n {\n let value = i < (prevN >> 1) ? tail[i] : 0;\n const curIndex = i - curStart;\n if (curIndex >= 0) value += cur[curIndex];\n samples[i] = value;\n }\n chunk.push(samples);\n }\n outputChunks.push(chunk);\n totalSamples += outCount;\n }\n for (let j = 0; j < channels; j++)\n {\n tails[j].set(imdctOut[j].subarray(n >> 1, n));\n }\n prevN = n;\n packetCount++;\n }\n\n // assemble planar output, trimmed to the stream's final granule\n const finalCount = lastGranule && lastGranule < totalSamples ? lastGranule : totalSamples;\n const channelData = [];\n for (let j = 0; j < channels; j++) channelData.push(new Float32Array(finalCount));\n let cursor = 0;\n for (const chunk of outputChunks)\n {\n const copyCount = Math.min(chunk[0].length, finalCount - cursor);\n if (copyCount <= 0) break;\n for (let j = 0; j < channels; j++)\n {\n channelData[j].set(chunk[j].subarray(0, copyCount), cursor);\n }\n cursor += copyCount;\n }\n\n return {\n channels,\n sampleRate,\n sampleCount: finalCount,\n channelData,\n vendor,\n comments,\n loop,\n packetCount,\n declaredGranule: lastGranule\n };\n}\n"],"names":["NO_CODE","FAST_BITS","FAST_SIZE","INVERSE_DB_TABLE","Float32Array","decodeError","message","error","Error","code","ilog","value","result","v","float32Unpack","x","mantissa","sign","exponent","Math","pow","lookup1Values","entries","dimensions","bits","vals","floor","acc","acc1","i","PacketReader","constructor","bytes","position","bitBuffer","bitsLeft","eop","readBits","count","length","Codebook","lookupType","sequenceP","quantvals","values","fastTable","treeNodes","maxLength","buildHuffman","lengths","available","Uint32Array","Int32Array","fill","nodes","assigned","symbol","z","y","reversed","node","bit","slot","push","decode","reader","peek","peekBits","savedPosition","savedBuffer","savedLeft","hit","vqValue","element","index","parseCodebook","sync","book","Uint8Array","ordered","currentEntry","currentLength","number","sparse","present","minimum","delta","valueBits","parseFloor","codebooks","type","partitions","partitionClassList","classDimensions","classSubclasses","classMasterbooks","subclassBooks","multiplier","rangebits","xList","maximumClass","partitionClass","subclasses","books","j","bookIndex","flat","sortedIndex","map","sort","a","b","entry","lowNeighbors","highNeighbors","low","high","parseResidue","residue","begin","end","partSize","classifications","classbook","cascades","lowBits","flag","highBits","passBooks","pass","parseMapping","channels","floorCount","residueCount","mapping","submaps","couplingSteps","mux","Array","submapFloor","submapResidue","steps","magnitude","angle","floorIndex","residueIndex","FLOOR1_RANGES","renderPoint","x0","y0","x1","y1","dy","adx","err","abs","decodeFloor1Posts","range","posts","yBits","offset","cdim","cbits","csub","cval","computeFloor1Curve","n2","output","finalY","step2","predicted","highroom","lowroom","room","lx","ly","hx","hy","renderLine","n","ady","base","sy","limit","decodeResidue","buffers","doNotDecode","channelCount","classwords","actualSize","limitBegin","min","limitEnd","nRead","partRead","every","Boolean","pcount","cInter","pInter","decoded","last","e","target","step","k","buildWindow","blockflag","prevFlag","nextFlag","blocksize0","window","center","leftStart","leftEnd","leftN","rightStart","rightEnd","rightN","leftSlope","vorbisWindowSlope","rightSlope","windowVariantCache","Map","getWindow","key","get","set","extractOggPackets","packets","pending","serial","lastGranule","headerType","granule","pageSerial","segmentCount","tableOffset","cursor","isBos","ours","subarray","concatChunks","Number","isSafeInteger","chunks","total","chunk","expectHeader","packet","parseComments","readString","text","String","fromCharCode","vendor","comments","loop","loopStart","loopEnd","comment","match","exec","toLowerCase","start","decodeVorbis","identReader","sampleRate","blocksize1","setup","codebookCount","timeCount","floors","residues","mappings","mappingCount","modes","modeCount","modeBits","n1","spectrum","floorCurves","imdctOut","zeroChannel","floorPosts","tails","prevN","outputChunks","totalSamples","packetCount","p","modeNumber","mode","reallyZero","slice","s","submapChannels","magnitudeVector","angleVector","m","newM","newA","out","curve","spec","imdct","outCount","curStart","samples","tail","cur","curIndex","finalCount","channelData","copyCount","sampleCount","declaredGranule"],"mappings":";;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMA,OAAO,GAAG,GAAG;AACnB,MAAMC,SAAS,GAAG,EAAE;AACpB,MAAMC,SAAS,GAAG,CAAC,IAAID,SAAS;;AAEhC;AACA;AACA;AACA;AACA,MAAME,gBAAgB,GAAG,IAAIC,YAAY,CAAC,CACtC,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EACxD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,CAChD,CAAC;AAEF,SAASC,WAAWA,CAACC,OAAO,EAC5B;EACI,MAAMC,KAAK,GAAG,IAAIC,KAAK,CAAC,CAAA,KAAA,EAAQF,OAAO,EAAE,CAAC;EAC1CC,KAAK,CAACE,IAAI,GAAG,wBAAwB;AACrC,EAAA,OAAOF,KAAK;AAChB;AAEA,SAASG,IAAIA,CAACC,KAAK,EACnB;EACI,IAAIC,MAAM,GAAG,CAAC;AACd,EAAA,IAAIC,CAAC,GAAGF,KAAK,GAAG,CAAC;AACjB,EAAA,IAAIE,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;AACnB,EAAA,OAAOA,CAAC,EACR;AACID,IAAAA,MAAM,EAAE;AACRC,IAAAA,CAAC,KAAK,CAAC;AACX,EAAA;AACA,EAAA,OAAOD,MAAM;AACjB;AAEA,SAASE,aAAaA,CAACC,CAAC,EACxB;AACI,EAAA,MAAMC,QAAQ,GAAGD,CAAC,GAAG,QAAQ;AAC7B,EAAA,MAAME,IAAI,GAAGF,CAAC,GAAG,UAAU;AAC3B,EAAA,MAAMG,QAAQ,GAAG,CAACH,CAAC,GAAG,UAAU,MAAM,EAAE;AACxC,EAAA,MAAMJ,KAAK,GAAGM,IAAI,GAAG,CAACD,QAAQ,GAAGA,QAAQ;EACzC,OAAOL,KAAK,GAAGQ,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEF,QAAQ,GAAG,GAAG,CAAC;AAC9C;AAEA,SAASG,aAAaA,CAACC,OAAO,EAAEC,UAAU,EAC1C;AACI,EAAA,IAAIA,UAAU,KAAK,CAAC,EAAE,OAAO,CAAC;AAC9B,EAAA,MAAMC,IAAI,GAAGd,IAAI,CAACY,OAAO,CAAC;AAC1B,EAAA,IAAIG,IAAI,GAAGH,OAAO,KAAKH,IAAI,CAACO,KAAK,CAAE,CAACF,IAAI,GAAG,CAAC,KAAKD,UAAU,GAAG,CAAC,CAAC,GAAIA,UAAU,CAAC;EAC/E,SACA;IACI,IAAII,GAAG,GAAG,CAAC;IACX,IAAIC,IAAI,GAAG,CAAC;IACZ,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGN,UAAU,EAAEM,CAAC,EAAE,EACnC;AACIF,MAAAA,GAAG,IAAIF,IAAI;MACXG,IAAI,IAAIH,IAAI,GAAG,CAAC;AACpB,IAAA;IACA,IAAIE,GAAG,IAAIL,OAAO,IAAIM,IAAI,GAAGN,OAAO,EAAE,OAAOG,IAAI;IACjD,IAAIE,GAAG,GAAGL,OAAO,EAAEG,IAAI,EAAE,CAAC,KACrBA,IAAI,EAAE;AACf,EAAA;AACJ;;AAEA;AACA;AACA;AACA;AACA,MAAMK,YAAY,CAClB;EACIC,WAAWA,CAACC,KAAK,EACjB;IACI,IAAI,CAACA,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,QAAQ,GAAG,CAAC;IACjB,IAAI,CAACC,SAAS,GAAG,CAAC;IAClB,IAAI,CAACC,QAAQ,GAAG,CAAC;IACjB,IAAI,CAACC,GAAG,GAAG,KAAK;AACpB,EAAA;EAEAC,QAAQA,CAACC,KAAK,EACd;IACI,IAAI3B,KAAK,GAAG,CAAC;IACb,KAAK,IAAIkB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGS,KAAK,EAAET,CAAC,EAAE,EAC9B;AACI,MAAA,IAAI,IAAI,CAACM,QAAQ,KAAK,CAAC,EACvB;QACI,IAAI,IAAI,CAACF,QAAQ,IAAI,IAAI,CAACD,KAAK,CAACO,MAAM,EACtC;UACI,IAAI,CAACH,GAAG,GAAG,IAAI;AACf,UAAA,OAAO,EAAE;AACb,QAAA;QACA,IAAI,CAACF,SAAS,GAAG,IAAI,CAACF,KAAK,CAAC,IAAI,CAACC,QAAQ,EAAE,CAAC;QAC5C,IAAI,CAACE,QAAQ,GAAG,CAAC;AACrB,MAAA;MACAxB,KAAK,IAAI,CAAC,IAAI,CAACuB,SAAS,GAAG,CAAC,KAAKL,CAAC;MAClC,IAAI,CAACK,SAAS,KAAK,CAAC;MACpB,IAAI,CAACC,QAAQ,EAAE;AACnB,IAAA;IACA,OAAOxB,KAAK,KAAK,CAAC;AACtB,EAAA;AACJ;AAEA,MAAM6B,QAAQ,CACd;AACIT,EAAAA,WAAWA,GACX;IACI,IAAI,CAACR,UAAU,GAAG,CAAC;IACnB,IAAI,CAACD,OAAO,GAAG,CAAC;IAChB,IAAI,CAACmB,UAAU,GAAG,CAAC;IACnB,IAAI,CAACC,SAAS,GAAG,KAAK;IACtB,IAAI,CAACC,SAAS,GAAG,CAAC;IAClB,IAAI,CAACC,MAAM,GAAG,IAAI;IAClB,IAAI,CAACC,SAAS,GAAG,IAAI;IACrB,IAAI,CAACC,SAAS,GAAG,IAAI;IACrB,IAAI,CAACC,SAAS,GAAG,CAAC;AACtB,EAAA;EAEAC,YAAYA,CAACC,OAAO,EACpB;AACI,IAAA,MAAMC,SAAS,GAAG,IAAIC,WAAW,CAAC,EAAE,CAAC;AACrC,IAAA,IAAI,CAACN,SAAS,GAAG,IAAIO,UAAU,CAAClD,SAAS,CAAC,CAACmD,IAAI,CAAC,EAAE,CAAC;AACnD;AACA,IAAA,MAAMC,KAAK,GAAG,CAAE,CAAC,EAAE,CAAC,CAAE;IAEtB,IAAIC,QAAQ,GAAG,KAAK;AACpB,IAAA,KAAK,IAAIC,MAAM,GAAG,CAAC,EAAEA,MAAM,GAAGP,OAAO,CAACV,MAAM,EAAEiB,MAAM,EAAE,EACtD;AACI,MAAA,MAAMjB,MAAM,GAAGU,OAAO,CAACO,MAAM,CAAC;MAC9B,IAAIjB,MAAM,KAAKvC,OAAO,EAAE;MACxB,IAAIuC,MAAM,GAAG,IAAI,CAACQ,SAAS,EAAE,IAAI,CAACA,SAAS,GAAGR,MAAM;AAEpD,MAAA,IAAI9B,IAAI;MACR,IAAI,CAAC8C,QAAQ,EACb;AACI9C,QAAAA,IAAI,GAAG,CAAC;AACR8C,QAAAA,QAAQ,GAAG,IAAI;QACf,KAAK,IAAI1B,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAIU,MAAM,EAAEV,CAAC,EAAE,EAAEqB,SAAS,CAACrB,CAAC,CAAC,GAAI,CAAC,IAAK,EAAE,GAAGA,CAAE,KAAM,CAAC;AAC1E,MAAA,CAAC,MAED;QACI,IAAI4B,CAAC,GAAGlB,MAAM;QACd,OAAOkB,CAAC,GAAG,CAAC,IAAI,CAACP,SAAS,CAACO,CAAC,CAAC,EAAEA,CAAC,EAAE;QAClC,IAAIA,CAAC,KAAK,CAAC,EAAE,MAAMpD,WAAW,CAAC,iCAAiC,CAAC;AACjEI,QAAAA,IAAI,GAAGyC,SAAS,CAACO,CAAC,CAAC;AACnBP,QAAAA,SAAS,CAACO,CAAC,CAAC,GAAG,CAAC;QAChB,IAAIA,CAAC,KAAKlB,MAAM,EAChB;UACI,KAAK,IAAImB,CAAC,GAAGnB,MAAM,EAAEmB,CAAC,GAAGD,CAAC,EAAEC,CAAC,EAAE,EAC/B;AACIR,YAAAA,SAAS,CAACQ,CAAC,CAAC,GAAIjD,IAAI,IAAI,CAAC,IAAK,EAAE,GAAGiD,CAAE,CAAC,KAAM,CAAC;AACjD,UAAA;AACJ,QAAA;AACJ,MAAA;;AAEA;MACA,IAAIC,QAAQ,GAAG,CAAC;MAChB,KAAK,IAAI9B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGU,MAAM,EAAEV,CAAC,EAAE,EAC/B;QACI8B,QAAQ,IAAI,CAAElD,IAAI,KAAM,EAAE,GAAGoB,CAAE,GAAI,CAAC,KAAKA,CAAC;AAC9C,MAAA;AACA8B,MAAAA,QAAQ,MAAM,CAAC;MAEf,IAAIpB,MAAM,IAAItC,SAAS,EACvB;AACI,QAAA,KAAK,IAAIwD,CAAC,GAAGE,QAAQ,EAAEF,CAAC,GAAGvD,SAAS,EAAEuD,CAAC,IAAI,CAAC,IAAIlB,MAAM,EACtD;UACI,IAAI,CAACM,SAAS,CAACY,CAAC,CAAC,GAAID,MAAM,IAAI,CAAC,GAAIjB,MAAM;AAC9C,QAAA;AACJ,MAAA,CAAC,MAED;QACI,IAAIqB,IAAI,GAAG,CAAC;QACZ,KAAK,IAAI/B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGU,MAAM,EAAEV,CAAC,EAAE,EAC/B;AACI,UAAA,MAAMgC,GAAG,GAAIF,QAAQ,KAAK9B,CAAC,GAAI,CAAC;AAChC,UAAA,MAAMiC,IAAI,GAAGF,IAAI,GAAG,CAAC,GAAGC,GAAG;AAC3B,UAAA,IAAIhC,CAAC,KAAKU,MAAM,GAAG,CAAC,EACpB;YACIe,KAAK,CAACQ,IAAI,CAAC,GAAG,EAAEN,MAAM,GAAG,CAAC,CAAC;AAC/B,UAAA,CAAC,MAED;AACI,YAAA,IAAI,CAACF,KAAK,CAACQ,IAAI,CAAC,EAChB;cACIR,KAAK,CAACQ,IAAI,CAAC,GAAGR,KAAK,CAACf,MAAM,GAAG,CAAC;AAC9Be,cAAAA,KAAK,CAACS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACpB,YAAA;AACAH,YAAAA,IAAI,GAAGN,KAAK,CAACQ,IAAI,CAAC;AACtB,UAAA;AACJ,QAAA;AACJ,MAAA;AACJ,IAAA;IAEA,IAAI,CAAChB,SAAS,GAAGQ,KAAK;AAC1B,EAAA;EAEAU,MAAMA,CAACC,MAAM,EACb;AACI;IACA,IAAIC,IAAI,GAAG,CAAC;IACZ,IAAIC,QAAQ,GAAG,CAAC;AAChB,IAAA,MAAMC,aAAa,GAAGH,MAAM,CAAChC,QAAQ;AACrC,IAAA,MAAMoC,WAAW,GAAGJ,MAAM,CAAC/B,SAAS;AACpC,IAAA,MAAMoC,SAAS,GAAGL,MAAM,CAAC9B,QAAQ;IACjC,OAAOgC,QAAQ,GAAGlE,SAAS,EAC3B;AACI,MAAA,MAAM4D,GAAG,GAAGI,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC;MAC9B,IAAIwB,GAAG,GAAG,CAAC,EAAE;MACbK,IAAI,IAAIL,GAAG,IAAIM,QAAQ;AACvBA,MAAAA,QAAQ,EAAE;AACd,IAAA;IACAF,MAAM,CAAChC,QAAQ,GAAGmC,aAAa;IAC/BH,MAAM,CAAC/B,SAAS,GAAGmC,WAAW;IAC9BJ,MAAM,CAAC9B,QAAQ,GAAGmC,SAAS;IAC3BL,MAAM,CAAC7B,GAAG,GAAG,KAAK;IAElB,IAAI+B,QAAQ,KAAKlE,SAAS,EAC1B;AACI,MAAA,MAAMsE,GAAG,GAAG,IAAI,CAAC1B,SAAS,CAACqB,IAAI,CAAC;MAChC,IAAIK,GAAG,IAAI,CAAC,EACZ;AACIN,QAAAA,MAAM,CAAC5B,QAAQ,CAACkC,GAAG,GAAG,EAAE,CAAC;QACzB,OAAOA,GAAG,IAAI,CAAC;AACnB,MAAA;AACJ,IAAA,CAAC,MAED;AACI;AACA,MAAA,MAAMA,GAAG,GAAG,IAAI,CAAC1B,SAAS,CAACqB,IAAI,CAAC;MAChC,IAAIK,GAAG,IAAI,CAAC,IAAI,CAACA,GAAG,GAAG,EAAE,KAAKJ,QAAQ,EACtC;AACIF,QAAAA,MAAM,CAAC5B,QAAQ,CAACkC,GAAG,GAAG,EAAE,CAAC;QACzB,OAAOA,GAAG,IAAI,CAAC;AACnB,MAAA;AACJ,IAAA;;AAEA;IACA,IAAIX,IAAI,GAAG,CAAC;AACZ,IAAA,KAAK,IAAI/B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAACkB,SAAS,EAAElB,CAAC,EAAE,EACvC;AACI,MAAA,MAAMgC,GAAG,GAAGI,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC;AAC9B,MAAA,IAAIwB,GAAG,GAAG,CAAC,EAAE,OAAO,EAAE;MACtB,MAAMlD,KAAK,GAAG,IAAI,CAACmC,SAAS,CAACc,IAAI,GAAG,CAAC,GAAGC,GAAG,CAAC;MAC5C,IAAIlD,KAAK,GAAG,CAAC,EAAE,OAAO,CAACA,KAAK,GAAG,CAAC;MAChC,IAAIA,KAAK,KAAK,CAAC,EAAE,MAAMN,WAAW,CAAC,gCAAgC,CAAC;AACpEuD,MAAAA,IAAI,GAAGjD,KAAK;AAChB,IAAA;IACA,MAAMN,WAAW,CAAC,uCAAuC,CAAC;AAC9D,EAAA;AAEAmE,EAAAA,OAAOA,CAAChB,MAAM,EAAEiB,OAAO,EACvB;AACI,IAAA,IAAI,IAAI,CAAChC,UAAU,KAAK,CAAC,EACzB;MACI,IAAIiC,KAAK,GAAGlB,MAAM;MAClB,KAAK,IAAI3B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG4C,OAAO,EAAE5C,CAAC,EAAE,EAAE6C,KAAK,GAAGvD,IAAI,CAACO,KAAK,CAACgD,KAAK,GAAG,IAAI,CAAC/B,SAAS,CAAC;MAC5E,OAAO,IAAI,CAACC,MAAM,CAAC8B,KAAK,GAAG,IAAI,CAAC/B,SAAS,CAAC;AAC9C,IAAA;IACA,OAAO,IAAI,CAACC,MAAM,CAACY,MAAM,GAAG,IAAI,CAACjC,UAAU,GAAGkD,OAAO,CAAC;AAC1D,EAAA;AACJ;AAEA,SAASE,aAAaA,CAACV,MAAM,EAC7B;AACI,EAAA,MAAMW,IAAI,GAAGX,MAAM,CAAC5B,QAAQ,CAAC,EAAE,CAAC;EAChC,IAAIuC,IAAI,KAAK,QAAQ,EAAE,MAAMvE,WAAW,CAAC,+BAA+B,CAAC;AAEzE,EAAA,MAAMwE,IAAI,GAAG,IAAIrC,QAAQ,EAAE;EAC3BqC,IAAI,CAACtD,UAAU,GAAG0C,MAAM,CAAC5B,QAAQ,CAAC,EAAE,CAAC;EACrCwC,IAAI,CAACvD,OAAO,GAAG2C,MAAM,CAAC5B,QAAQ,CAAC,EAAE,CAAC;EAElC,MAAMY,OAAO,GAAG,IAAI6B,UAAU,CAACD,IAAI,CAACvD,OAAO,CAAC;AAC5C,EAAA,MAAMyD,OAAO,GAAGd,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC;AAClC,EAAA,IAAI0C,OAAO,EACX;IACI,IAAIC,YAAY,GAAG,CAAC;IACpB,IAAIC,aAAa,GAAGhB,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;AAC1C,IAAA,OAAO2C,YAAY,GAAGH,IAAI,CAACvD,OAAO,EAClC;AACI,MAAA,MAAM4D,MAAM,GAAGjB,MAAM,CAAC5B,QAAQ,CAAC3B,IAAI,CAACmE,IAAI,CAACvD,OAAO,GAAG0D,YAAY,CAAC,CAAC;MACjE,IAAIf,MAAM,CAAC7B,GAAG,EAAE,MAAM/B,WAAW,CAAC,4BAA4B,CAAC;AAC/D,MAAA,KAAK,IAAIwB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGqD,MAAM,EAAErD,CAAC,EAAE,EAAEoB,OAAO,CAAC+B,YAAY,GAAGnD,CAAC,CAAC,GAAGoD,aAAa;AAC1ED,MAAAA,YAAY,IAAIE,MAAM;AACtBD,MAAAA,aAAa,EAAE;MACf,IAAID,YAAY,GAAGH,IAAI,CAACvD,OAAO,EAAE,MAAMjB,WAAW,CAAC,yBAAyB,CAAC;AACjF,IAAA;AACJ,EAAA,CAAC,MAED;AACI,IAAA,MAAM8E,MAAM,GAAGlB,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC;AACjC,IAAA,KAAK,IAAIR,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGgD,IAAI,CAACvD,OAAO,EAAEO,CAAC,EAAE,EACrC;MACI,MAAMuD,OAAO,GAAGD,MAAM,GAAGlB,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;AAC/CY,MAAAA,OAAO,CAACpB,CAAC,CAAC,GAAGuD,OAAO,GAAGnB,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAGrC,OAAO;AAC3D,IAAA;AACJ,EAAA;EACA,IAAIiE,MAAM,CAAC7B,GAAG,EAAE,MAAM/B,WAAW,CAAC,4BAA4B,CAAC;AAE/DwE,EAAAA,IAAI,CAAC7B,YAAY,CAACC,OAAO,CAAC;EAE1B4B,IAAI,CAACpC,UAAU,GAAGwB,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC;AACpC,EAAA,IAAIwC,IAAI,CAACpC,UAAU,GAAG,CAAC,EAAE,MAAMpC,WAAW,CAAC,CAAA,6BAAA,EAAgCwE,IAAI,CAACpC,UAAU,EAAE,CAAC;AAC7F,EAAA,IAAIoC,IAAI,CAACpC,UAAU,GAAG,CAAC,EACvB;IACI,MAAM4C,OAAO,GAAGvE,aAAa,CAACmD,MAAM,CAAC5B,QAAQ,CAAC,EAAE,CAAC,CAAC;IAClD,MAAMiD,KAAK,GAAGxE,aAAa,CAACmD,MAAM,CAAC5B,QAAQ,CAAC,EAAE,CAAC,CAAC;IAChD,MAAMkD,SAAS,GAAGtB,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;IACxCwC,IAAI,CAACnC,SAAS,GAAGuB,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;IACzC,MAAMC,KAAK,GAAGuC,IAAI,CAACpC,UAAU,KAAK,CAAC,GAC7BpB,aAAa,CAACwD,IAAI,CAACvD,OAAO,EAAEuD,IAAI,CAACtD,UAAU,CAAC,GAC5CsD,IAAI,CAACvD,OAAO,GAAGuD,IAAI,CAACtD,UAAU;IACpCsD,IAAI,CAAClC,SAAS,GAAGkC,IAAI,CAACpC,UAAU,KAAK,CAAC,GAAGH,KAAK,GAAG,CAAC;AAClDuC,IAAAA,IAAI,CAACjC,MAAM,GAAG,IAAIxC,YAAY,CAACkC,KAAK,CAAC;IACrC,KAAK,IAAIT,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGS,KAAK,EAAET,CAAC,EAAE,EAC9B;AACIgD,MAAAA,IAAI,CAACjC,MAAM,CAACf,CAAC,CAAC,GAAGwD,OAAO,GAAGpB,MAAM,CAAC5B,QAAQ,CAACkD,SAAS,CAAC,GAAGD,KAAK;AACjE,IAAA;IACA,IAAIrB,MAAM,CAAC7B,GAAG,EAAE,MAAM/B,WAAW,CAAC,kCAAkC,CAAC;AACzE,EAAA;AACA,EAAA,OAAOwE,IAAI;AACf;AAEA,SAASW,UAAUA,CAACvB,MAAM,EAAEwB,SAAS,EACrC;AACI,EAAA,MAAMC,IAAI,GAAGzB,MAAM,CAAC5B,QAAQ,CAAC,EAAE,CAAC;EAChC,IAAIqD,IAAI,KAAK,CAAC,EACd;AACI,IAAA,MAAMrF,WAAW,CAAC,CAAA,WAAA,EAAcqF,IAAI,kCAAkC,CAAC;AAC3E,EAAA;AAEA,EAAA,MAAMhE,KAAK,GAAG;AACViE,IAAAA,UAAU,EAAE1B,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC;AAC9BuD,IAAAA,kBAAkB,EAAE,EAAE;AACtBC,IAAAA,eAAe,EAAE,EAAE;AACnBC,IAAAA,eAAe,EAAE,EAAE;AACnBC,IAAAA,gBAAgB,EAAE,EAAE;AACpBC,IAAAA,aAAa,EAAE,EAAE;AACjBC,IAAAA,UAAU,EAAE,CAAC;AACbC,IAAAA,SAAS,EAAE,CAAC;AACZC,IAAAA,KAAK,EAAE,CAAE,CAAC,EAAE,CAAC;GAChB;EAED,IAAIC,YAAY,GAAG,EAAE;AACrB,EAAA,KAAK,IAAIvE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,KAAK,CAACiE,UAAU,EAAE9D,CAAC,EAAE,EACzC;AACI,IAAA,MAAMwE,cAAc,GAAGpC,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC;AACzCX,IAAAA,KAAK,CAACkE,kBAAkB,CAAC7B,IAAI,CAACsC,cAAc,CAAC;AAC7C,IAAA,IAAIA,cAAc,GAAGD,YAAY,EAAEA,YAAY,GAAGC,cAAc;AACpE,EAAA;EACA,KAAK,IAAIxE,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAIuE,YAAY,EAAEvE,CAAC,EAAE,EACtC;AACIH,IAAAA,KAAK,CAACmE,eAAe,CAAC9B,IAAI,CAACE,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAClD,IAAA,MAAMiE,UAAU,GAAGrC,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC;AACrCX,IAAAA,KAAK,CAACoE,eAAe,CAAC/B,IAAI,CAACuC,UAAU,CAAC;AACtC5E,IAAAA,KAAK,CAACqE,gBAAgB,CAAChC,IAAI,CAACuC,UAAU,GAAGrC,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACjE,MAAMkE,KAAK,GAAG,EAAE;AAChB,IAAA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAI,CAAC,IAAIF,UAAW,EAAEE,CAAC,EAAE,EAC1C;MACID,KAAK,CAACxC,IAAI,CAACE,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtC,IAAA;AACAX,IAAAA,KAAK,CAACsE,aAAa,CAACjC,IAAI,CAACwC,KAAK,CAAC;AACnC,EAAA;EACA7E,KAAK,CAACuE,UAAU,GAAGhC,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;EACzCX,KAAK,CAACwE,SAAS,GAAGjC,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC;EACpCX,KAAK,CAACyE,KAAK,GAAG,CAAE,CAAC,EAAE,CAAC,IAAIzE,KAAK,CAACwE,SAAS,CAAE;AACzC,EAAA,KAAK,IAAIrE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,KAAK,CAACiE,UAAU,EAAE9D,CAAC,EAAE,EACzC;IACI,KAAK,IAAI2E,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG9E,KAAK,CAACmE,eAAe,CAACnE,KAAK,CAACkE,kBAAkB,CAAC/D,CAAC,CAAC,CAAC,EAAE2E,CAAC,EAAE,EAC3E;AACI9E,MAAAA,KAAK,CAACyE,KAAK,CAACpC,IAAI,CAACE,MAAM,CAAC5B,QAAQ,CAACX,KAAK,CAACwE,SAAS,CAAC,CAAC;AACtD,IAAA;AACJ,EAAA;EACA,IAAIjC,MAAM,CAAC7B,GAAG,EAAE,MAAM/B,WAAW,CAAC,+BAA+B,CAAC;AAClE,EAAA,KAAK,MAAMoG,SAAS,IAAI,CAAE,GAAG/E,KAAK,CAACqE,gBAAgB,EAAE,GAAGrE,KAAK,CAACsE,aAAa,CAACU,IAAI,EAAE,CAAE,EACpF;IACI,IAAID,SAAS,IAAIhB,SAAS,CAAClD,MAAM,EAAE,MAAMlC,WAAW,CAAC,mCAAmC,CAAC;AAC7F,EAAA;;AAEA;AACAqB,EAAAA,KAAK,CAACiF,WAAW,GAAGjF,KAAK,CAACyE,KAAK,CAC1BS,GAAG,CAAC,CAAC7F,CAAC,EAAE2D,KAAK,MAAM;IAAE3D,CAAC;AAAE2D,IAAAA;AAAM,GAAC,CAAC,CAAC,CACjCmC,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,CAAC/F,CAAC,GAAGgG,CAAC,CAAChG,CAAC,IAAI+F,CAAC,CAACpC,KAAK,GAAGqC,CAAC,CAACrC,KAAK,CAAC,CAC9CkC,GAAG,CAAEI,KAAK,IAAKA,KAAK,CAACtC,KAAK,CAAC;;AAEhC;EACAhD,KAAK,CAACuF,YAAY,GAAG,EAAE;EACvBvF,KAAK,CAACwF,aAAa,GAAG,EAAE;AACxB,EAAA,KAAK,IAAIrF,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,KAAK,CAACyE,KAAK,CAAC5D,MAAM,EAAEV,CAAC,EAAE,EAC3C;IACI,IAAIsF,GAAG,GAAG,CAAC;IACX,IAAIC,IAAI,GAAG,CAAC;IACZ,KAAK,IAAIZ,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG3E,CAAC,EAAE2E,CAAC,EAAE,EAC1B;AACI,MAAA,IAAI9E,KAAK,CAACyE,KAAK,CAACK,CAAC,CAAC,GAAG9E,KAAK,CAACyE,KAAK,CAACtE,CAAC,CAAC,IAAIH,KAAK,CAACyE,KAAK,CAACK,CAAC,CAAC,IAAI9E,KAAK,CAACyE,KAAK,CAACgB,GAAG,CAAC,EAAEA,GAAG,GAAGX,CAAC;AAClF,MAAA,IAAI9E,KAAK,CAACyE,KAAK,CAACK,CAAC,CAAC,GAAG9E,KAAK,CAACyE,KAAK,CAACtE,CAAC,CAAC,IAAIH,KAAK,CAACyE,KAAK,CAACK,CAAC,CAAC,IAAI9E,KAAK,CAACyE,KAAK,CAACiB,IAAI,CAAC,EAAEA,IAAI,GAAGZ,CAAC;AACxF,IAAA;AACA9E,IAAAA,KAAK,CAACuF,YAAY,CAAClD,IAAI,CAACoD,GAAG,CAAC;AAC5BzF,IAAAA,KAAK,CAACwF,aAAa,CAACnD,IAAI,CAACqD,IAAI,CAAC;AAClC,EAAA;AAEA,EAAA,OAAO1F,KAAK;AAChB;AAEA,SAAS2F,YAAYA,CAACpD,MAAM,EAAEwB,SAAS,EACvC;AACI,EAAA,MAAMC,IAAI,GAAGzB,MAAM,CAAC5B,QAAQ,CAAC,EAAE,CAAC;EAChC,IAAIqD,IAAI,GAAG,CAAC,EAAE,MAAMrF,WAAW,CAAC,CAAA,qBAAA,EAAwBqF,IAAI,CAAA,CAAE,CAAC;AAC/D,EAAA,MAAM4B,OAAO,GAAG;IACZ5B,IAAI;AACJ6B,IAAAA,KAAK,EAAEtD,MAAM,CAAC5B,QAAQ,CAAC,EAAE,CAAC;AAC1BmF,IAAAA,GAAG,EAAEvD,MAAM,CAAC5B,QAAQ,CAAC,EAAE,CAAC;IACxBoF,QAAQ,EAAExD,MAAM,CAAC5B,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC;IACjCqF,eAAe,EAAEzD,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;AACvCsF,IAAAA,SAAS,EAAE1D,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC;AAC7BkE,IAAAA,KAAK,EAAE;GACV;AACD,EAAA,IAAIe,OAAO,CAACK,SAAS,IAAIlC,SAAS,CAAClD,MAAM,EAAE,MAAMlC,WAAW,CAAC,gCAAgC,CAAC;EAE9F,MAAMuH,QAAQ,GAAG,EAAE;AACnB,EAAA,KAAK,IAAI/F,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGyF,OAAO,CAACI,eAAe,EAAE7F,CAAC,EAAE,EAChD;AACI,IAAA,MAAMgG,OAAO,GAAG5D,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC;AAClC,IAAA,MAAMyF,IAAI,GAAG7D,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC;IAC/B,MAAM0F,QAAQ,GAAGD,IAAI,GAAG7D,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;IAC9CuF,QAAQ,CAAC7D,IAAI,CAACgE,QAAQ,GAAG,CAAC,GAAGF,OAAO,CAAC;AACzC,EAAA;AACA,EAAA,KAAK,IAAIhG,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGyF,OAAO,CAACI,eAAe,EAAE7F,CAAC,EAAE,EAChD;IACI,MAAMmG,SAAS,GAAG,EAAE;IACpB,KAAK,IAAIC,IAAI,GAAG,CAAC,EAAEA,IAAI,GAAG,CAAC,EAAEA,IAAI,EAAE,EACnC;MACI,IAAIL,QAAQ,CAAC/F,CAAC,CAAC,GAAI,CAAC,IAAIoG,IAAK,EAC7B;AACI,QAAA,MAAMxB,SAAS,GAAGxC,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC;QACpC,IAAIoE,SAAS,IAAIhB,SAAS,CAAClD,MAAM,EAAE,MAAMlC,WAAW,CAAC,2BAA2B,CAAC;AACjF,QAAA,IAAIoF,SAAS,CAACgB,SAAS,CAAC,CAAChE,UAAU,KAAK,CAAC,EAAE,MAAMpC,WAAW,CAAC,mCAAmC,CAAC;AACjG2H,QAAAA,SAAS,CAACjE,IAAI,CAAC0C,SAAS,CAAC;AAC7B,MAAA,CAAC,MAED;AACIuB,QAAAA,SAAS,CAACjE,IAAI,CAAC,EAAE,CAAC;AACtB,MAAA;AACJ,IAAA;AACAuD,IAAAA,OAAO,CAACf,KAAK,CAACxC,IAAI,CAACiE,SAAS,CAAC;AACjC,EAAA;EACA,IAAI/D,MAAM,CAAC7B,GAAG,EAAE,MAAM/B,WAAW,CAAC,iCAAiC,CAAC;AACpE,EAAA,OAAOiH,OAAO;AAClB;AAEA,SAASY,YAAYA,CAACjE,MAAM,EAAEkE,QAAQ,EAAEC,UAAU,EAAEC,YAAY,EAChE;AACI,EAAA,MAAM3C,IAAI,GAAGzB,MAAM,CAAC5B,QAAQ,CAAC,EAAE,CAAC;EAChC,IAAIqD,IAAI,KAAK,CAAC,EAAE,MAAMrF,WAAW,CAAC,CAAA,qBAAA,EAAwBqF,IAAI,CAAA,CAAE,CAAC;AACjE,EAAA,MAAM4C,OAAO,GAAG;AAAEC,IAAAA,OAAO,EAAE,CAAC;AAAEC,IAAAA,aAAa,EAAE,EAAE;IAAEC,GAAG,EAAE,IAAIC,KAAK,CAACP,QAAQ,CAAC,CAAC9E,IAAI,CAAC,CAAC,CAAC;AAAEsF,IAAAA,WAAW,EAAE,EAAE;AAAEC,IAAAA,aAAa,EAAE;GAAI;AAEvH,EAAA,IAAI3E,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC,EAAEiG,OAAO,CAACC,OAAO,GAAGtE,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;AAChE,EAAA,IAAI4B,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC,EACtB;IACI,MAAMwG,KAAK,GAAG5E,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;AACpC,IAAA,MAAMb,IAAI,GAAGd,IAAI,CAACyH,QAAQ,GAAG,CAAC,CAAC;IAC/B,KAAK,IAAItG,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGgH,KAAK,EAAEhH,CAAC,EAAE,EAC9B;AACI,MAAA,MAAMiH,SAAS,GAAG7E,MAAM,CAAC5B,QAAQ,CAACb,IAAI,CAAC;AACvC,MAAA,MAAMuH,KAAK,GAAG9E,MAAM,CAAC5B,QAAQ,CAACb,IAAI,CAAC;MACnC,IAAIsH,SAAS,KAAKC,KAAK,IAAID,SAAS,IAAIX,QAAQ,IAAIY,KAAK,IAAIZ,QAAQ,EACrE;QACI,MAAM9H,WAAW,CAAC,0BAA0B,CAAC;AACjD,MAAA;AACAiI,MAAAA,OAAO,CAACE,aAAa,CAACzE,IAAI,CAAC;QAAE+E,SAAS;AAAEC,QAAAA;AAAM,OAAC,CAAC;AACpD,IAAA;AACJ,EAAA;AACA,EAAA,IAAI9E,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,MAAMhC,WAAW,CAAC,+BAA+B,CAAC;AAChF,EAAA,IAAIiI,OAAO,CAACC,OAAO,GAAG,CAAC,EACvB;IACI,KAAK,IAAI1G,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGsG,QAAQ,EAAEtG,CAAC,EAAE,EACjC;MACIyG,OAAO,CAACG,GAAG,CAAC5G,CAAC,CAAC,GAAGoC,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC;AACnC,MAAA,IAAIiG,OAAO,CAACG,GAAG,CAAC5G,CAAC,CAAC,IAAIyG,OAAO,CAACC,OAAO,EAAE,MAAMlI,WAAW,CAAC,0BAA0B,CAAC;AACxF,IAAA;AACJ,EAAA;AACA,EAAA,KAAK,IAAIwB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGyG,OAAO,CAACC,OAAO,EAAE1G,CAAC,EAAE,EACxC;AACIoC,IAAAA,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC;AAClB,IAAA,MAAM2G,UAAU,GAAG/E,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC;AACrC,IAAA,MAAM4G,YAAY,GAAGhF,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC;AACvC,IAAA,IAAI2G,UAAU,IAAIZ,UAAU,IAAIa,YAAY,IAAIZ,YAAY,EAC5D;MACI,MAAMhI,WAAW,CAAC,6CAA6C,CAAC;AACpE,IAAA;AACAiI,IAAAA,OAAO,CAACK,WAAW,CAAC5E,IAAI,CAACiF,UAAU,CAAC;AACpCV,IAAAA,OAAO,CAACM,aAAa,CAAC7E,IAAI,CAACkF,YAAY,CAAC;AAC5C,EAAA;AACA,EAAA,OAAOX,OAAO;AAClB;AAEA,MAAMY,aAAa,GAAG,CAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAE;AAE1C,SAASC,WAAWA,CAACC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAExI,CAAC,EACtC;AACI,EAAA,MAAMyI,EAAE,GAAGD,EAAE,GAAGF,EAAE;AAClB,EAAA,MAAMI,GAAG,GAAGH,EAAE,GAAGF,EAAE;AACnB,EAAA,MAAMM,GAAG,GAAGvI,IAAI,CAACO,KAAK,CAAEP,IAAI,CAACwI,GAAG,CAACH,EAAE,CAAC,IAAIzI,CAAC,GAAGqI,EAAE,CAAC,GAAIK,GAAG,CAAC;EACvD,OAAOD,EAAE,GAAG,CAAC,GAAGH,EAAE,GAAGK,GAAG,GAAGL,EAAE,GAAGK,GAAG;AACvC;AAEA,SAASE,iBAAiBA,CAAC3F,MAAM,EAAEvC,KAAK,EAAE+D,SAAS,EACnD;EACI,IAAIxB,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,OAAO,IAAI;EAEzC,MAAMwH,KAAK,GAAGX,aAAa,CAACxH,KAAK,CAACuE,UAAU,GAAG,CAAC,CAAC;EACjD,MAAM6D,KAAK,GAAG,IAAI1G,UAAU,CAAC1B,KAAK,CAACyE,KAAK,CAAC5D,MAAM,CAAC;AAChD,EAAA,MAAMwH,KAAK,GAAGrJ,IAAI,CAACmJ,KAAK,GAAG,CAAC,CAAC;EAC7BC,KAAK,CAAC,CAAC,CAAC,GAAG7F,MAAM,CAAC5B,QAAQ,CAAC0H,KAAK,CAAC;EACjCD,KAAK,CAAC,CAAC,CAAC,GAAG7F,MAAM,CAAC5B,QAAQ,CAAC0H,KAAK,CAAC;EAEjC,IAAIC,MAAM,GAAG,CAAC;AACd,EAAA,KAAK,IAAInI,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,KAAK,CAACiE,UAAU,EAAE9D,CAAC,EAAE,EACzC;AACI,IAAA,MAAMwE,cAAc,GAAG3E,KAAK,CAACkE,kBAAkB,CAAC/D,CAAC,CAAC;AAClD,IAAA,MAAMoI,IAAI,GAAGvI,KAAK,CAACmE,eAAe,CAACQ,cAAc,CAAC;AAClD,IAAA,MAAM6D,KAAK,GAAGxI,KAAK,CAACoE,eAAe,CAACO,cAAc,CAAC;AACnD,IAAA,MAAM8D,IAAI,GAAG,CAAC,CAAC,IAAID,KAAK,IAAI,CAAC;IAC7B,IAAIE,IAAI,GAAG,CAAC;AACZ,IAAA,IAAIF,KAAK,EACT;AACIE,MAAAA,IAAI,GAAG3E,SAAS,CAAC/D,KAAK,CAACqE,gBAAgB,CAACM,cAAc,CAAC,CAAC,CAACrC,MAAM,CAACC,MAAM,CAAC;AACvE,MAAA,IAAImG,IAAI,GAAG,CAAC,EAAE,OAAO,IAAI;AAC7B,IAAA;IACA,KAAK,IAAI5D,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGyD,IAAI,EAAEzD,CAAC,EAAE,EAC7B;AACI,MAAA,MAAMC,SAAS,GAAG/E,KAAK,CAACsE,aAAa,CAACK,cAAc,CAAC,CAAC+D,IAAI,GAAGD,IAAI,CAAC;AAClEC,MAAAA,IAAI,KAAKF,KAAK;MACd,IAAIzD,SAAS,IAAI,CAAC,EAClB;QACI,MAAM9F,KAAK,GAAG8E,SAAS,CAACgB,SAAS,CAAC,CAACzC,MAAM,CAACC,MAAM,CAAC;AACjD,QAAA,IAAItD,KAAK,GAAG,CAAC,EAAE,OAAO,IAAI;AAC1BmJ,QAAAA,KAAK,CAACE,MAAM,GAAGxD,CAAC,CAAC,GAAG7F,KAAK;AAC7B,MAAA,CAAC,MAED;AACImJ,QAAAA,KAAK,CAACE,MAAM,GAAGxD,CAAC,CAAC,GAAG,CAAC;AACzB,MAAA;AACJ,IAAA;AACAwD,IAAAA,MAAM,IAAIC,IAAI;AAClB,EAAA;AACA,EAAA,IAAIhG,MAAM,CAAC7B,GAAG,EAAE,OAAO,IAAI;AAC3B,EAAA,OAAO0H,KAAK;AAChB;AAEA,SAASO,kBAAkBA,CAAC3I,KAAK,EAAEoI,KAAK,EAAEQ,EAAE,EAAEC,MAAM,EACpD;EACI,MAAMV,KAAK,GAAGX,aAAa,CAACxH,KAAK,CAACuE,UAAU,GAAG,CAAC,CAAC;AACjD,EAAA,MAAM3D,KAAK,GAAGZ,KAAK,CAACyE,KAAK,CAAC5D,MAAM;AAChC,EAAA,MAAMiI,MAAM,GAAG,IAAIpH,UAAU,CAACd,KAAK,CAAC;AACpC,EAAA,MAAMmI,KAAK,GAAG,IAAI3F,UAAU,CAACxC,KAAK,CAAC;AAEnCmI,EAAAA,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;AACZA,EAAAA,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;AACZD,EAAAA,MAAM,CAAC,CAAC,CAAC,GAAGV,KAAK,CAAC,CAAC,CAAC;AACpBU,EAAAA,MAAM,CAAC,CAAC,CAAC,GAAGV,KAAK,CAAC,CAAC,CAAC;EAEpB,KAAK,IAAIjI,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGS,KAAK,EAAET,CAAC,EAAE,EAC9B;IACI,MAAMsF,GAAG,GAAGzF,KAAK,CAACuF,YAAY,CAACpF,CAAC,GAAG,CAAC,CAAC;IACrC,MAAMuF,IAAI,GAAG1F,KAAK,CAACwF,aAAa,CAACrF,CAAC,GAAG,CAAC,CAAC;AACvC,IAAA,MAAM6I,SAAS,GAAGvB,WAAW,CAACzH,KAAK,CAACyE,KAAK,CAACgB,GAAG,CAAC,EAAEqD,MAAM,CAACrD,GAAG,CAAC,EAAEzF,KAAK,CAACyE,KAAK,CAACiB,IAAI,CAAC,EAAEoD,MAAM,CAACpD,IAAI,CAAC,EAAE1F,KAAK,CAACyE,KAAK,CAACtE,CAAC,CAAC,CAAC;AAC7G,IAAA,MAAMlB,KAAK,GAAGmJ,KAAK,CAACjI,CAAC,CAAC;AACtB,IAAA,MAAM8I,QAAQ,GAAGd,KAAK,GAAGa,SAAS;IAClC,MAAME,OAAO,GAAGF,SAAS;IACzB,MAAMG,IAAI,GAAG,CAACF,QAAQ,GAAGC,OAAO,GAAGD,QAAQ,GAAGC,OAAO,IAAI,CAAC;AAC1D,IAAA,IAAIjK,KAAK,EACT;AACI8J,MAAAA,KAAK,CAACtD,GAAG,CAAC,GAAG,CAAC;AACdsD,MAAAA,KAAK,CAACrD,IAAI,CAAC,GAAG,CAAC;AACfqD,MAAAA,KAAK,CAAC5I,CAAC,CAAC,GAAG,CAAC;MACZ,IAAIlB,KAAK,IAAIkK,IAAI,EACjB;QACIL,MAAM,CAAC3I,CAAC,CAAC,GAAG8I,QAAQ,GAAGC,OAAO,GAAGjK,KAAK,GAAGiK,OAAO,GAAGF,SAAS,GAAGA,SAAS,GAAG/J,KAAK,GAAGgK,QAAQ,GAAG,CAAC;AACnG,MAAA,CAAC,MAED;QACIH,MAAM,CAAC3I,CAAC,CAAC,GAAGlB,KAAK,GAAG,CAAC,GAAG+J,SAAS,IAAK/J,KAAK,GAAG,CAAC,IAAK,CAAC,CAAC,GAAG+J,SAAS,IAAI/J,KAAK,IAAI,CAAC,CAAC;AACrF,MAAA;AACJ,IAAA,CAAC,MAED;AACI8J,MAAAA,KAAK,CAAC5I,CAAC,CAAC,GAAG,CAAC;AACZ2I,MAAAA,MAAM,CAAC3I,CAAC,CAAC,GAAG6I,SAAS;AACzB,IAAA;AACJ,EAAA;AAEAH,EAAAA,MAAM,CAAClH,IAAI,CAAC,CAAC,CAAC;EACd,IAAIyH,EAAE,GAAG,CAAC;AACV,EAAA,IAAIC,EAAE,GAAGP,MAAM,CAAC9I,KAAK,CAACiF,WAAW,CAAC,CAAC,CAAC,CAAC,GAAGjF,KAAK,CAACuE,UAAU;AACxD,EAAA,KAAK,MAAMvB,KAAK,IAAIhD,KAAK,CAACiF,WAAW,EACrC;AACI,IAAA,IAAI,CAAC8D,KAAK,CAAC/F,KAAK,CAAC,EAAE;AACnB,IAAA,MAAMsG,EAAE,GAAGtJ,KAAK,CAACyE,KAAK,CAACzB,KAAK,CAAC;IAC7B,MAAMuG,EAAE,GAAGT,MAAM,CAAC9F,KAAK,CAAC,GAAGhD,KAAK,CAACuE,UAAU;AAC3C,IAAA,IAAI+E,EAAE,GAAGF,EAAE,EAAEI,UAAU,CAACJ,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEV,MAAM,EAAED,EAAE,CAAC;IACnD,IAAIU,EAAE,IAAIV,EAAE,EAAE;AACdQ,IAAAA,EAAE,GAAGE,EAAE;AACPD,IAAAA,EAAE,GAAGE,EAAE;AACX,EAAA;EACA,IAAIH,EAAE,GAAGR,EAAE,EACX;IACI,KAAK,IAAIzI,CAAC,GAAGiJ,EAAE,EAAEjJ,CAAC,GAAGyI,EAAE,EAAEzI,CAAC,EAAE,EAAE0I,MAAM,CAAC1I,CAAC,CAAC,GAAG1B,gBAAgB,CAAC4K,EAAE,GAAG,GAAG,CAAC;AACxE,EAAA;AACJ;AAEA,SAASG,UAAUA,CAAC9B,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEgB,MAAM,EAAEY,CAAC,EAC7C;AACI,EAAA,MAAM3B,EAAE,GAAGD,EAAE,GAAGF,EAAE;AAClB,EAAA,MAAMI,GAAG,GAAGH,EAAE,GAAGF,EAAE;AACnB,EAAA,IAAIgC,GAAG,GAAGjK,IAAI,CAACwI,GAAG,CAACH,EAAE,CAAC;AACtB,EAAA,MAAM6B,IAAI,GAAI7B,EAAE,GAAGC,GAAG,GAAI,CAAC;AAC3B,EAAA,MAAM6B,EAAE,GAAG9B,EAAE,GAAG,CAAC,GAAG6B,IAAI,GAAG,CAAC,GAAGA,IAAI,GAAG,CAAC;EACvC,IAAItK,CAAC,GAAGqI,EAAE;EACV,IAAI1F,CAAC,GAAG2F,EAAE;EACV,IAAIK,GAAG,GAAG,CAAC;EACX0B,GAAG,IAAIjK,IAAI,CAACwI,GAAG,CAAC0B,IAAI,CAAC,GAAG5B,GAAG;EAC3B,MAAM8B,KAAK,GAAGjC,EAAE,GAAG6B,CAAC,GAAGA,CAAC,GAAG7B,EAAE;AAE7B,EAAA,IAAIvI,CAAC,GAAGwK,KAAK,EAAEhB,MAAM,CAACxJ,CAAC,CAAC,GAAGZ,gBAAgB,CAACuD,CAAC,GAAG,GAAG,CAAC;EACpD,KAAK3C,CAAC,EAAE,EAAEA,CAAC,GAAGwK,KAAK,EAAExK,CAAC,EAAE,EACxB;AACI2I,IAAAA,GAAG,IAAI0B,GAAG;IACV,IAAI1B,GAAG,IAAID,GAAG,EACd;AACIC,MAAAA,GAAG,IAAID,GAAG;AACV/F,MAAAA,CAAC,IAAI4H,EAAE;AACX,IAAA,CAAC,MAED;AACI5H,MAAAA,CAAC,IAAI2H,IAAI;AACb,IAAA;IACAd,MAAM,CAACxJ,CAAC,CAAC,GAAGZ,gBAAgB,CAACuD,CAAC,GAAG,GAAG,CAAC;AACzC,EAAA;AACJ;AAEA,SAAS8H,aAAaA,CAAClE,OAAO,EAAErD,MAAM,EAAEwB,SAAS,EAAEgG,OAAO,EAAEC,WAAW,EAAEpB,EAAE,EAC3E;AACI,EAAA,MAAMqB,YAAY,GAAGF,OAAO,CAAClJ,MAAM;AACnC,EAAA,MAAMoF,SAAS,GAAGlC,SAAS,CAAC6B,OAAO,CAACK,SAAS,CAAC;AAC9C,EAAA,MAAMiE,UAAU,GAAGjE,SAAS,CAACpG,UAAU;AACvC,EAAA,MAAMsK,UAAU,GAAGvE,OAAO,CAAC5B,IAAI,KAAK,CAAC,GAAG4E,EAAE,GAAGqB,YAAY,GAAGrB,EAAE;EAC9D,MAAMwB,UAAU,GAAG3K,IAAI,CAAC4K,GAAG,CAACzE,OAAO,CAACC,KAAK,EAAEsE,UAAU,CAAC;EACtD,MAAMG,QAAQ,GAAG7K,IAAI,CAAC4K,GAAG,CAACzE,OAAO,CAACE,GAAG,EAAEqE,UAAU,CAAC;AAClD,EAAA,MAAMI,KAAK,GAAGD,QAAQ,GAAGF,UAAU;EACnC,MAAMI,QAAQ,GAAG/K,IAAI,CAACO,KAAK,CAACuK,KAAK,GAAG3E,OAAO,CAACG,QAAQ,CAAC;EACrD,IAAIyE,QAAQ,IAAI,CAAC,EAAE;EAEnB,IAAI5E,OAAO,CAAC5B,IAAI,KAAK,CAAC,IAAIiG,YAAY,GAAG,CAAC,EAC1C;AACI,IAAA,IAAID,WAAW,CAACS,KAAK,CAACC,OAAO,CAAC,EAAE;IAChC,MAAM1E,eAAe,GAAG,IAAItE,UAAU,CAAC8I,QAAQ,GAAGN,UAAU,CAAC;IAC7D,KAAK,IAAI3D,IAAI,GAAG,CAAC,EAAEA,IAAI,GAAG,CAAC,EAAEA,IAAI,EAAE,EACnC;MACI,IAAIoE,MAAM,GAAG,CAAC;MACd,OAAOA,MAAM,GAAGH,QAAQ,EACxB;QACI,IAAIjE,IAAI,KAAK,CAAC,EACd;AACI,UAAA,IAAIzE,MAAM,GAAGmE,SAAS,CAAC3D,MAAM,CAACC,MAAM,CAAC;UACrC,IAAIT,MAAM,GAAG,CAAC,EAAE;AAChB,UAAA,KAAK,IAAI3B,CAAC,GAAG+J,UAAU,GAAG,CAAC,EAAE/J,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EACxC;YACI6F,eAAe,CAAC7F,CAAC,GAAGwK,MAAM,CAAC,GAAG7I,MAAM,GAAG8D,OAAO,CAACI,eAAe;YAC9DlE,MAAM,GAAGrC,IAAI,CAACO,KAAK,CAAC8B,MAAM,GAAG8D,OAAO,CAACI,eAAe,CAAC;AACzD,UAAA;AACJ,QAAA;AACA,QAAA,KAAK,IAAI7F,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+J,UAAU,IAAIS,MAAM,GAAGH,QAAQ,EAAErK,CAAC,EAAE,EAAEwK,MAAM,EAAE,EAClE;UACI,MAAM5I,CAAC,GAAG6D,OAAO,CAACC,KAAK,GAAG8E,MAAM,GAAG/E,OAAO,CAACG,QAAQ;AACnD,UAAA,MAAMhB,SAAS,GAAGa,OAAO,CAACf,KAAK,CAACmB,eAAe,CAAC2E,MAAM,CAAC,CAAC,CAACpE,IAAI,CAAC;UAC9D,IAAIxB,SAAS,GAAG,CAAC,EAAE;AACnB,UAAA,MAAM5B,IAAI,GAAGY,SAAS,CAACgB,SAAS,CAAC;AACjC,UAAA,IAAI6F,MAAM,GAAG7I,CAAC,GAAGkI,YAAY;UAC7B,IAAIY,MAAM,GAAGpL,IAAI,CAACO,KAAK,CAAC+B,CAAC,GAAGkI,YAAY,CAAC;UACzC,IAAIa,OAAO,GAAG,CAAC;AACf,UAAA,OAAOA,OAAO,GAAGlF,OAAO,CAACG,QAAQ,EACjC;AACI,YAAA,MAAMjE,MAAM,GAAGqB,IAAI,CAACb,MAAM,CAACC,MAAM,CAAC;YAClC,IAAIT,MAAM,GAAG,CAAC,EAAE;YAChB,IAAIiJ,IAAI,GAAG,CAAC;AACZ,YAAA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG7H,IAAI,CAACtD,UAAU,EAAEmL,CAAC,EAAE,EACxC;AACI,cAAA,MAAM/L,KAAK,GAAGkE,IAAI,CAACL,OAAO,CAAChB,MAAM,EAAEkJ,CAAC,CAAC,IAAI7H,IAAI,CAACnC,SAAS,GAAG+J,IAAI,GAAG,CAAC,CAAC;AACnE,cAAA,IAAI5H,IAAI,CAACnC,SAAS,EAAE+J,IAAI,GAAG9L,KAAK;AAChC8K,cAAAA,OAAO,CAACa,MAAM,CAAC,CAACC,MAAM,CAAC,IAAI5L,KAAK;AAChC2L,cAAAA,MAAM,EAAE;cACR,IAAIA,MAAM,KAAKX,YAAY,EAC3B;AACIW,gBAAAA,MAAM,GAAG,CAAC;AACVC,gBAAAA,MAAM,EAAE;AACZ,cAAA;AACJ,YAAA;YACAC,OAAO,IAAI3H,IAAI,CAACtD,UAAU;AAC9B,UAAA;AACJ,QAAA;AACJ,MAAA;AACJ,IAAA;AACA,IAAA;AACJ,EAAA;EAEA,MAAMmG,eAAe,GAAG,EAAE;EAC1B,KAAK,IAAIlB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGmF,YAAY,EAAEnF,CAAC,EAAE,EAAEkB,eAAe,CAAC3D,IAAI,CAAC,IAAIX,UAAU,CAAC8I,QAAQ,GAAGN,UAAU,CAAC,CAAC;EAElG,KAAK,IAAI3D,IAAI,GAAG,CAAC,EAAEA,IAAI,GAAG,CAAC,EAAEA,IAAI,EAAE,EACnC;IACI,IAAIoE,MAAM,GAAG,CAAC;IACd,OAAOA,MAAM,GAAGH,QAAQ,EACxB;MACI,IAAIjE,IAAI,KAAK,CAAC,EACd;QACI,KAAK,IAAIzB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGmF,YAAY,EAAEnF,CAAC,EAAE,EACrC;AACI,UAAA,IAAIkF,WAAW,CAAClF,CAAC,CAAC,EAAE;AACpB,UAAA,IAAIhD,MAAM,GAAGmE,SAAS,CAAC3D,MAAM,CAACC,MAAM,CAAC;UACrC,IAAIT,MAAM,GAAG,CAAC,EAAE;AAChB,UAAA,KAAK,IAAI3B,CAAC,GAAG+J,UAAU,GAAG,CAAC,EAAE/J,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EACxC;AACI6F,YAAAA,eAAe,CAAClB,CAAC,CAAC,CAAC3E,CAAC,GAAGwK,MAAM,CAAC,GAAG7I,MAAM,GAAG8D,OAAO,CAACI,eAAe;YACjElE,MAAM,GAAGrC,IAAI,CAACO,KAAK,CAAC8B,MAAM,GAAG8D,OAAO,CAACI,eAAe,CAAC;AACzD,UAAA;AACJ,QAAA;AACJ,MAAA;AACA,MAAA,KAAK,IAAI7F,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+J,UAAU,IAAIS,MAAM,GAAGH,QAAQ,EAAErK,CAAC,EAAE,EAAEwK,MAAM,EAAE,EAClE;QACI,KAAK,IAAI7F,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGmF,YAAY,EAAEnF,CAAC,EAAE,EACrC;AACI,UAAA,IAAIkF,WAAW,CAAClF,CAAC,CAAC,EAAE;AACpB,UAAA,MAAMC,SAAS,GAAGa,OAAO,CAACf,KAAK,CAACmB,eAAe,CAAClB,CAAC,CAAC,CAAC6F,MAAM,CAAC,CAAC,CAACpE,IAAI,CAAC;UACjE,IAAIxB,SAAS,GAAG,CAAC,EAAE;AACnB,UAAA,MAAM5B,IAAI,GAAGY,SAAS,CAACgB,SAAS,CAAC;AACjC,UAAA,MAAMkG,MAAM,GAAGlB,OAAO,CAACjF,CAAC,CAAC;UACzB,MAAMwD,MAAM,GAAG1C,OAAO,CAACC,KAAK,GAAG8E,MAAM,GAAG/E,OAAO,CAACG,QAAQ;AACxD,UAAA,IAAIH,OAAO,CAAC5B,IAAI,KAAK,CAAC,EACtB;AACI,YAAA,MAAMkH,IAAI,GAAGzL,IAAI,CAACO,KAAK,CAAC4F,OAAO,CAACG,QAAQ,GAAG5C,IAAI,CAACtD,UAAU,CAAC;YAC3D,KAAK,IAAIsL,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,IAAI,EAAEC,CAAC,EAAE,EAC7B;AACI,cAAA,MAAMrJ,MAAM,GAAGqB,IAAI,CAACb,MAAM,CAACC,MAAM,CAAC;cAClC,IAAIT,MAAM,GAAG,CAAC,EAAE;cAChB,IAAIiJ,IAAI,GAAG,CAAC;AACZ,cAAA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG7H,IAAI,CAACtD,UAAU,EAAEmL,CAAC,EAAE,EACxC;AACI,gBAAA,MAAM/L,KAAK,GAAGkE,IAAI,CAACL,OAAO,CAAChB,MAAM,EAAEkJ,CAAC,CAAC,IAAI7H,IAAI,CAACnC,SAAS,GAAG+J,IAAI,GAAG,CAAC,CAAC;AACnE,gBAAA,IAAI5H,IAAI,CAACnC,SAAS,EAAE+J,IAAI,GAAG9L,KAAK;gBAChCgM,MAAM,CAAC3C,MAAM,GAAG6C,CAAC,GAAGH,CAAC,GAAGE,IAAI,CAAC,IAAIjM,KAAK;AAC1C,cAAA;AACJ,YAAA;AACJ,UAAA,CAAC,MAED;YACI,IAAIkM,CAAC,GAAG,CAAC;AACT,YAAA,OAAOA,CAAC,GAAGvF,OAAO,CAACG,QAAQ,EAC3B;AACI,cAAA,MAAMjE,MAAM,GAAGqB,IAAI,CAACb,MAAM,CAACC,MAAM,CAAC;cAClC,IAAIT,MAAM,GAAG,CAAC,EAAE;cAChB,IAAIiJ,IAAI,GAAG,CAAC;AACZ,cAAA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG7H,IAAI,CAACtD,UAAU,EAAEmL,CAAC,EAAE,EACxC;AACI,gBAAA,MAAM/L,KAAK,GAAGkE,IAAI,CAACL,OAAO,CAAChB,MAAM,EAAEkJ,CAAC,CAAC,IAAI7H,IAAI,CAACnC,SAAS,GAAG+J,IAAI,GAAG,CAAC,CAAC;AACnE,gBAAA,IAAI5H,IAAI,CAACnC,SAAS,EAAE+J,IAAI,GAAG9L,KAAK;gBAChCgM,MAAM,CAAC3C,MAAM,GAAG6C,CAAC,GAAGH,CAAC,CAAC,IAAI/L,KAAK;AACnC,cAAA;cACAkM,CAAC,IAAIhI,IAAI,CAACtD,UAAU;AACxB,YAAA;AACJ,UAAA;AACJ,QAAA;AACJ,MAAA;AACJ,IAAA;AACJ,EAAA;AACJ;AAEA,SAASuL,WAAWA,CAAC3B,CAAC,EAAE4B,SAAS,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,UAAU,EACjE;AACI,EAAA,MAAMC,MAAM,GAAG,IAAI/M,YAAY,CAAC+K,CAAC,CAAC;AAClC,EAAA,MAAMiC,MAAM,GAAGjC,CAAC,IAAI,CAAC;EACrB,IAAIkC,SAAS,GAAG,CAAC;EACjB,IAAIC,OAAO,GAAGF,MAAM;EACpB,IAAIG,KAAK,GAAGH,MAAM;EAClB,IAAII,UAAU,GAAGJ,MAAM;EACvB,IAAIK,QAAQ,GAAGtC,CAAC;EAChB,IAAIuC,MAAM,GAAGN,MAAM;AACnB,EAAA,IAAIL,SAAS,IAAI,CAACC,QAAQ,EAC1B;IACIK,SAAS,GAAG,CAAClC,CAAC,IAAI,CAAC,KAAK+B,UAAU,IAAI,CAAC,CAAC;IACxCI,OAAO,GAAG,CAACnC,CAAC,IAAI,CAAC,KAAK+B,UAAU,IAAI,CAAC,CAAC;IACtCK,KAAK,GAAGL,UAAU,IAAI,CAAC;AAC3B,EAAA;AACA,EAAA,IAAIH,SAAS,IAAI,CAACE,QAAQ,EAC1B;IACIO,UAAU,GAAGrC,CAAC,IAAIA,CAAC,IAAI,CAAC,CAAC,IAAI+B,UAAU,IAAI,CAAC,CAAC;IAC7CO,QAAQ,GAAGtC,CAAC,IAAIA,CAAC,IAAI,CAAC,CAAC,IAAI+B,UAAU,IAAI,CAAC,CAAC;IAC3CQ,MAAM,GAAGR,UAAU,IAAI,CAAC;AAC5B,EAAA;AACA,EAAA,MAAMS,SAAS,GAAGC,iBAAiB,CAACL,KAAK,CAAC;AAC1C,EAAA,MAAMM,UAAU,GAAGD,iBAAiB,CAACF,MAAM,CAAC;EAC5C,KAAK,IAAI7L,CAAC,GAAGwL,SAAS,EAAExL,CAAC,GAAGyL,OAAO,EAAEzL,CAAC,EAAE,EAAEsL,MAAM,CAACtL,CAAC,CAAC,GAAG8L,SAAS,CAAC9L,CAAC,GAAGwL,SAAS,CAAC;AAC9E,EAAA,KAAK,IAAIxL,CAAC,GAAGyL,OAAO,EAAEzL,CAAC,GAAG2L,UAAU,EAAE3L,CAAC,EAAE,EAAEsL,MAAM,CAACtL,CAAC,CAAC,GAAG,CAAC;EACxD,KAAK,IAAIA,CAAC,GAAG2L,UAAU,EAAE3L,CAAC,GAAG4L,QAAQ,EAAE5L,CAAC,EAAE,EAAEsL,MAAM,CAACtL,CAAC,CAAC,GAAGgM,UAAU,CAACH,MAAM,GAAG,CAAC,IAAI7L,CAAC,GAAG2L,UAAU,CAAC,CAAC;AACjG,EAAA,OAAOL,MAAM;AACjB;AAEA,MAAMW,kBAAkB,GAAG,IAAIC,GAAG,EAAE;AAEpC,SAASC,SAASA,CAAC7C,CAAC,EAAE4B,SAAS,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,UAAU,EAC/D;EACI,MAAMe,GAAG,GAAG,CAAA,EAAG9C,CAAC,CAAA,CAAA,EAAI4B,SAAS,GAAG,CAAC,GAAG,CAAC,CAAA,EAAGC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAA,EAAGC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAA,CAAA,EAAIC,UAAU,CAAA,CAAE;AAC3F,EAAA,IAAIC,MAAM,GAAGW,kBAAkB,CAACI,GAAG,CAACD,GAAG,CAAC;EACxC,IAAI,CAACd,MAAM,EACX;AACIA,IAAAA,MAAM,GAAGL,WAAW,CAAC3B,CAAC,EAAE4B,SAAS,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,UAAU,CAAC;AAClEY,IAAAA,kBAAkB,CAACK,GAAG,CAACF,GAAG,EAAEd,MAAM,CAAC;AACvC,EAAA;AACA,EAAA,OAAOA,MAAM;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASiB,iBAAiBA,CAACpM,KAAK,EACvC;EACI,MAAMqM,OAAO,GAAG,EAAE;EAClB,IAAIC,OAAO,GAAG,EAAE;EAChB,IAAIC,MAAM,GAAG,IAAI;EACjB,IAAIC,WAAW,GAAG,CAAC;EACnB,IAAIxE,MAAM,GAAG,CAAC;AAEd,EAAA,OAAOA,MAAM,GAAG,EAAE,IAAIhI,KAAK,CAACO,MAAM,EAClC;AACI,IAAA,IAAIP,KAAK,CAACgI,MAAM,CAAC,KAAK,IAAI,IAAIhI,KAAK,CAACgI,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,IAAIhI,KAAK,CAACgI,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,IAAIhI,KAAK,CAACgI,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,EACpH;AACI,MAAA,MAAM3J,WAAW,CAAC,CAAA,qBAAA,EAAwB2J,MAAM,EAAE,CAAC;AACvD,IAAA;AACA,IAAA,MAAMyE,UAAU,GAAGzM,KAAK,CAACgI,MAAM,GAAG,CAAC,CAAC;IACpC,IAAI0E,OAAO,GAAG,CAAC;IACf,KAAK,IAAI7M,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE6M,OAAO,GAAGA,OAAO,GAAG,GAAG,GAAG1M,KAAK,CAACgI,MAAM,GAAG,CAAC,GAAGnI,CAAC,CAAC;AAC5E,IAAA,MAAM8M,UAAU,GAAG,CAAC3M,KAAK,CAACgI,MAAM,GAAG,EAAE,CAAC,GAAIhI,KAAK,CAACgI,MAAM,GAAG,EAAE,CAAC,IAAI,CAAE,GAAIhI,KAAK,CAACgI,MAAM,GAAG,EAAE,CAAC,IAAI,EAAG,GAAIhI,KAAK,CAACgI,MAAM,GAAG,EAAE,CAAC,GAAG,SAAU,MAAM,CAAC;AACzI,IAAA,MAAM4E,YAAY,GAAG5M,KAAK,CAACgI,MAAM,GAAG,EAAE,CAAC;AACvC,IAAA,MAAM6E,WAAW,GAAG7E,MAAM,GAAG,EAAE;AAC/B,IAAA,IAAI8E,MAAM,GAAGD,WAAW,GAAGD,YAAY;AAEvC,IAAA,MAAMG,KAAK,GAAG,CAACN,UAAU,GAAG,IAAI,MAAM,CAAC;IACvC,IAAIF,MAAM,KAAK,IAAI,IAAIQ,KAAK,EAAER,MAAM,GAAGI,UAAU;AACjD,IAAA,MAAMK,IAAI,GAAGL,UAAU,KAAKJ,MAAM;IAElC,KAAK,IAAI1M,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+M,YAAY,EAAE/M,CAAC,EAAE,EACrC;AACI,MAAA,MAAMU,MAAM,GAAGP,KAAK,CAAC6M,WAAW,GAAGhN,CAAC,CAAC;MACrC,IAAImN,IAAI,IAAIzM,MAAM,GAAG,CAAC,EAAE+L,OAAO,CAACvK,IAAI,CAAC/B,KAAK,CAACiN,QAAQ,CAACH,MAAM,EAAEA,MAAM,GAAGvM,MAAM,CAAC,CAAC;AAC7EuM,MAAAA,MAAM,IAAIvM,MAAM;AAChB,MAAA,IAAIA,MAAM,GAAG,GAAG,IAAIyM,IAAI,EACxB;AACIX,QAAAA,OAAO,CAACtK,IAAI,CAACmL,YAAY,CAACZ,OAAO,CAAC,CAAC;AACnCA,QAAAA,OAAO,GAAG,EAAE;AAChB,MAAA;AACJ,IAAA;AACA,IAAA,IAAIU,IAAI,IAAIN,OAAO,KAAK,kBAAkB,IAAIS,MAAM,CAACC,aAAa,CAACV,OAAO,CAAC,EAC3E;AACIF,MAAAA,WAAW,GAAGE,OAAO;AACzB,IAAA;AACA1E,IAAAA,MAAM,GAAG8E,MAAM;AACnB,EAAA;AAEA,EAAA,IAAIR,OAAO,CAAC/L,MAAM,EAAE8L,OAAO,CAACtK,IAAI,CAACmL,YAAY,CAACZ,OAAO,CAAC,CAAC;EACvD,OAAO;IAAED,OAAO;AAAEG,IAAAA;GAAa;AACnC;AAEA,SAASU,YAAYA,CAACG,MAAM,EAC5B;EACI,IAAIA,MAAM,CAAC9M,MAAM,KAAK,CAAC,EAAE,OAAO8M,MAAM,CAAC,CAAC,CAAC;EACzC,IAAIC,KAAK,GAAG,CAAC;EACb,KAAK,MAAMC,KAAK,IAAIF,MAAM,EAAEC,KAAK,IAAIC,KAAK,CAAChN,MAAM;AACjD,EAAA,MAAMP,KAAK,GAAG,IAAI8C,UAAU,CAACwK,KAAK,CAAC;EACnC,IAAIR,MAAM,GAAG,CAAC;AACd,EAAA,KAAK,MAAMS,KAAK,IAAIF,MAAM,EAC1B;AACIrN,IAAAA,KAAK,CAACmM,GAAG,CAACoB,KAAK,EAAET,MAAM,CAAC;IACxBA,MAAM,IAAIS,KAAK,CAAChN,MAAM;AAC1B,EAAA;AACA,EAAA,OAAOP,KAAK;AAChB;AAEA,SAASwN,YAAYA,CAACC,MAAM,EAAE/J,IAAI,EAClC;EACI,IAAI+J,MAAM,CAAClN,MAAM,GAAG,CAAC,IAAIkN,MAAM,CAAC,CAAC,CAAC,KAAK/J,IAAI,IACvC+J,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAIA,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAIA,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAC9DA,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAIA,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAIA,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAClE;AACI,IAAA,MAAMpP,WAAW,CAAC,CAAA,kCAAA,EAAqCqF,IAAI,EAAE,CAAC;AAClE,EAAA;AACA,EAAA,MAAMzB,MAAM,GAAG,IAAInC,YAAY,CAAC2N,MAAM,CAAC;AACvCxL,EAAAA,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC;AAClB,EAAA,KAAK,IAAIR,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAAEoC,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC;AAC9C,EAAA,OAAO4B,MAAM;AACjB;AAEA,SAASyL,aAAaA,CAACD,MAAM,EAC7B;AACI,EAAA,MAAMxL,MAAM,GAAG,IAAInC,YAAY,CAAC2N,MAAM,CAAC;AACvCxL,EAAAA,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC;AAClB,EAAA,KAAK,IAAIR,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAAEoC,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC;EAC9C,MAAMsN,UAAU,GAAGA,MACnB;AACI,IAAA,MAAMpN,MAAM,GAAG0B,MAAM,CAAC5B,QAAQ,CAAC,EAAE,CAAC;IAClC,IAAIuN,IAAI,GAAG,EAAE;IACb,KAAK,IAAI/N,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGU,MAAM,EAAEV,CAAC,EAAE,EAAE+N,IAAI,IAAIC,MAAM,CAACC,YAAY,CAAC7L,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC,CAAC;AAChF,IAAA,OAAOuN,IAAI;EACf,CAAC;AACD,EAAA,MAAMG,MAAM,GAAGJ,UAAU,EAAE;AAC3B,EAAA,MAAMrN,KAAK,GAAG2B,MAAM,CAAC5B,QAAQ,CAAC,EAAE,CAAC;EACjC,MAAM2N,QAAQ,GAAG,EAAE;EACnB,KAAK,IAAInO,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGS,KAAK,IAAI,CAAC2B,MAAM,CAAC7B,GAAG,EAAEP,CAAC,EAAE,EAAEmO,QAAQ,CAACjM,IAAI,CAAC4L,UAAU,EAAE,CAAC;EAE1E,IAAIM,IAAI,GAAG,IAAI;EACf,IAAIC,SAAS,GAAG,IAAI;EACpB,IAAIC,OAAO,GAAG,IAAI;AAClB,EAAA,KAAK,MAAMC,OAAO,IAAIJ,QAAQ,EAC9B;AACI,IAAA,MAAMK,KAAK,GAAG,+BAA+B,CAACC,IAAI,CAACF,OAAO,CAAC;IAC3D,IAAI,CAACC,KAAK,EAAE;AACZ,IAAA,IAAIA,KAAK,CAAC,CAAC,CAAC,CAACE,WAAW,EAAE,KAAK,WAAW,EAAEL,SAAS,GAAGf,MAAM,CAACkB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KACpEF,OAAO,GAAGhB,MAAM,CAACkB,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,EAAA;EACA,IAAIH,SAAS,KAAK,IAAI,IAAIC,OAAO,KAAK,IAAI,EAAEF,IAAI,GAAG;AAAEO,IAAAA,KAAK,EAAEN,SAAS;AAAE1I,IAAAA,GAAG,EAAE2I;GAAS;EACrF,OAAO;IAAEJ,MAAM;IAAEC,QAAQ;AAAEC,IAAAA;GAAM;AACrC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASQ,YAAYA,CAACzO,KAAK,EAClC;EACI,MAAM;IAAEqM,OAAO;AAAEG,IAAAA;AAAY,GAAC,GAAGJ,iBAAiB,CAACpM,KAAK,CAAC;EACzD,IAAIqM,OAAO,CAAC9L,MAAM,GAAG,CAAC,EAAE,MAAMlC,WAAW,CAAC,6BAA6B,CAAC;;AAExE;EACA,MAAMqQ,WAAW,GAAGlB,YAAY,CAACnB,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC/C,EAAA,IAAIqC,WAAW,CAACrO,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,MAAMhC,WAAW,CAAC,4BAA4B,CAAC;AACnF,EAAA,MAAM8H,QAAQ,GAAGuI,WAAW,CAACrO,QAAQ,CAAC,CAAC,CAAC;AACxC,EAAA,MAAMsO,UAAU,GAAGD,WAAW,CAACrO,QAAQ,CAAC,EAAE,CAAC;AAC3CqO,EAAAA,WAAW,CAACrO,QAAQ,CAAC,EAAE,CAAC;AACxBqO,EAAAA,WAAW,CAACrO,QAAQ,CAAC,EAAE,CAAC;AACxBqO,EAAAA,WAAW,CAACrO,QAAQ,CAAC,EAAE,CAAC;EACxB,MAAM6K,UAAU,GAAG,CAAC,IAAIwD,WAAW,CAACrO,QAAQ,CAAC,CAAC,CAAC;EAC/C,MAAMuO,UAAU,GAAG,CAAC,IAAIF,WAAW,CAACrO,QAAQ,CAAC,CAAC,CAAC;EAC/C,IAAI,CAAC8F,QAAQ,IAAI,CAACwI,UAAU,EAAE,MAAMtQ,WAAW,CAAC,+BAA+B,CAAC;EAChF,IAAI6M,UAAU,GAAG0D,UAAU,IAAI1D,UAAU,GAAG,EAAE,IAAI0D,UAAU,GAAG,IAAI,EACnE;IACI,MAAMvQ,WAAW,CAAC,oBAAoB,CAAC;AAC3C,EAAA;EAEA,MAAM;IAAE0P,MAAM;IAAEC,QAAQ;AAAEC,IAAAA;AAAK,GAAC,GAAGP,aAAa,CAACrB,OAAO,CAAC,CAAC,CAAC,CAAC;;AAE5D;EACA,MAAMwC,KAAK,GAAGrB,YAAY,CAACnB,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;EACzC,MAAM5I,SAAS,GAAG,EAAE;EACpB,MAAMqL,aAAa,GAAGD,KAAK,CAACxO,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;EAC3C,KAAK,IAAIR,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGiP,aAAa,EAAEjP,CAAC,EAAE,EAAE4D,SAAS,CAAC1B,IAAI,CAACY,aAAa,CAACkM,KAAK,CAAC,CAAC;EAE5E,MAAME,SAAS,GAAGF,KAAK,CAACxO,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;EACvC,KAAK,IAAIR,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGkP,SAAS,EAAElP,CAAC,EAAE,EAClC;AACI,IAAA,IAAIgP,KAAK,CAACxO,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,MAAMhC,WAAW,CAAC,+BAA+B,CAAC;AACpF,EAAA;EAEA,MAAM2Q,MAAM,GAAG,EAAE;EACjB,MAAM5I,UAAU,GAAGyI,KAAK,CAACxO,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;EACxC,KAAK,IAAIR,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGuG,UAAU,EAAEvG,CAAC,EAAE,EAAEmP,MAAM,CAACjN,IAAI,CAACyB,UAAU,CAACqL,KAAK,EAAEpL,SAAS,CAAC,CAAC;EAE9E,MAAMwL,QAAQ,GAAG,EAAE;EACnB,MAAM5I,YAAY,GAAGwI,KAAK,CAACxO,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;EAC1C,KAAK,IAAIR,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGwG,YAAY,EAAExG,CAAC,EAAE,EAAEoP,QAAQ,CAAClN,IAAI,CAACsD,YAAY,CAACwJ,KAAK,EAAEpL,SAAS,CAAC,CAAC;EAEpF,MAAMyL,QAAQ,GAAG,EAAE;EACnB,MAAMC,YAAY,GAAGN,KAAK,CAACxO,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;EAC1C,KAAK,IAAIR,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGsP,YAAY,EAAEtP,CAAC,EAAE,EAAEqP,QAAQ,CAACnN,IAAI,CAACmE,YAAY,CAAC2I,KAAK,EAAE1I,QAAQ,EAAEC,UAAU,EAAEC,YAAY,CAAC,CAAC;EAE7G,MAAM+I,KAAK,GAAG,EAAE;EAChB,MAAMC,SAAS,GAAGR,KAAK,CAACxO,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;EACvC,KAAK,IAAIR,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGwP,SAAS,EAAExP,CAAC,EAAE,EAClC;IACI,MAAMkL,SAAS,GAAG8D,KAAK,CAACxO,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;AACzC,IAAA,IAAIwO,KAAK,CAACxO,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,IAAIwO,KAAK,CAACxO,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EACxD;MACI,MAAMhC,WAAW,CAAC,oCAAoC,CAAC;AAC3D,IAAA;AACA,IAAA,MAAMiI,OAAO,GAAGuI,KAAK,CAACxO,QAAQ,CAAC,CAAC,CAAC;IACjC,IAAIiG,OAAO,IAAI6I,YAAY,EAAE,MAAM9Q,WAAW,CAAC,iCAAiC,CAAC;IACjF+Q,KAAK,CAACrN,IAAI,CAAC;MAAEgJ,SAAS;AAAEzE,MAAAA;AAAQ,KAAC,CAAC;AACtC,EAAA;AACA,EAAA,IAAIuI,KAAK,CAACxO,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,MAAMhC,WAAW,CAAC,2BAA2B,CAAC;AAC3E,EAAA,MAAMiR,QAAQ,GAAG5Q,IAAI,CAAC2Q,SAAS,GAAG,CAAC,CAAC;;AAEpC;EACA,MAAME,EAAE,GAAGX,UAAU;EACrB,MAAMY,QAAQ,GAAG,EAAE;EACnB,MAAMC,WAAW,GAAG,EAAE;EACtB,MAAMC,QAAQ,GAAG,EAAE;EACnB,KAAK,IAAIlL,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG2B,QAAQ,EAAE3B,CAAC,EAAE,EACjC;IACIgL,QAAQ,CAACzN,IAAI,CAAC,IAAI3D,YAAY,CAACmR,EAAE,IAAI,CAAC,CAAC,CAAC;IACxCE,WAAW,CAAC1N,IAAI,CAAC,IAAI3D,YAAY,CAACmR,EAAE,IAAI,CAAC,CAAC,CAAC;IAC3CG,QAAQ,CAAC3N,IAAI,CAAC,IAAI3D,YAAY,CAACmR,EAAE,CAAC,CAAC;AACvC,EAAA;EACA,MAAMI,WAAW,GAAG,IAAIjJ,KAAK,CAACP,QAAQ,CAAC,CAAC9E,IAAI,CAAC,KAAK,CAAC;EACnD,MAAMuO,UAAU,GAAG,IAAIlJ,KAAK,CAACP,QAAQ,CAAC,CAAC9E,IAAI,CAAC,IAAI,CAAC;EACjD,MAAMwO,KAAK,GAAG,EAAE;EAChB,KAAK,IAAIrL,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG2B,QAAQ,EAAE3B,CAAC,EAAE,EAAEqL,KAAK,CAAC9N,IAAI,CAAC,IAAI3D,YAAY,CAACmR,EAAE,IAAI,CAAC,CAAC,CAAC;EACxE,IAAIO,KAAK,GAAG,CAAC;EAEb,MAAMC,YAAY,GAAG,EAAE;EACvB,IAAIC,YAAY,GAAG,CAAC;EACpB,IAAIC,WAAW,GAAG,CAAC;AAEnB,EAAA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG7D,OAAO,CAAC9L,MAAM,EAAE2P,CAAC,EAAE,EACvC;IACI,MAAMjO,MAAM,GAAG,IAAInC,YAAY,CAACuM,OAAO,CAAC6D,CAAC,CAAC,CAAC;IAC3C,IAAIjO,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AAC9B,IAAA,MAAM8P,UAAU,GAAGlO,MAAM,CAAC5B,QAAQ,CAACiP,QAAQ,CAAC;AAC5C,IAAA,IAAIa,UAAU,GAAG,CAAC,IAAIA,UAAU,IAAId,SAAS,EAAE;AAC/C,IAAA,MAAMe,IAAI,GAAGhB,KAAK,CAACe,UAAU,CAAC;AAC9B,IAAA,MAAM7J,OAAO,GAAG4I,QAAQ,CAACkB,IAAI,CAAC9J,OAAO,CAAC;IACtC,MAAM6C,CAAC,GAAGiH,IAAI,CAACrF,SAAS,GAAG6D,UAAU,GAAG1D,UAAU;AAClD,IAAA,MAAM5C,EAAE,GAAGa,CAAC,IAAI,CAAC;IAEjB,IAAI6B,QAAQ,GAAG,KAAK;IACpB,IAAIC,QAAQ,GAAG,KAAK;IACpB,IAAImF,IAAI,CAACrF,SAAS,EAClB;MACIC,QAAQ,GAAG/I,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;MACnC4K,QAAQ,GAAGhJ,MAAM,CAAC5B,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;AACvC,IAAA;;AAEA;IACA,KAAK,IAAImE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG2B,QAAQ,EAAE3B,CAAC,EAAE,EACjC;AACI,MAAA,MAAM9E,KAAK,GAAGsP,MAAM,CAAC1I,OAAO,CAACK,WAAW,CAACL,OAAO,CAACG,GAAG,CAACjC,CAAC,CAAC,CAAC,CAAC;MACzDoL,UAAU,CAACpL,CAAC,CAAC,GAAGoD,iBAAiB,CAAC3F,MAAM,EAAEvC,KAAK,EAAE+D,SAAS,CAAC;MAC3DkM,WAAW,CAACnL,CAAC,CAAC,GAAGoL,UAAU,CAACpL,CAAC,CAAC,KAAK,IAAI;AAC3C,IAAA;;AAEA;AACA,IAAA,MAAM6L,UAAU,GAAGV,WAAW,CAACW,KAAK,EAAE;AACtC,IAAA,KAAK,MAAM1F,IAAI,IAAItE,OAAO,CAACE,aAAa,EACxC;AACI,MAAA,IAAI,CAACmJ,WAAW,CAAC/E,IAAI,CAAC9D,SAAS,CAAC,IAAI,CAAC6I,WAAW,CAAC/E,IAAI,CAAC7D,KAAK,CAAC,EAC5D;AACI4I,QAAAA,WAAW,CAAC/E,IAAI,CAAC9D,SAAS,CAAC,GAAG,KAAK;AACnC6I,QAAAA,WAAW,CAAC/E,IAAI,CAAC7D,KAAK,CAAC,GAAG,KAAK;AACnC,MAAA;AACJ,IAAA;;AAEA;IACA,KAAK,IAAIvC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG2B,QAAQ,EAAE3B,CAAC,EAAE,EAAEgL,QAAQ,CAAChL,CAAC,CAAC,CAACnD,IAAI,CAAC,CAAC,CAAC;AACtD,IAAA,KAAK,IAAIkP,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGjK,OAAO,CAACC,OAAO,EAAEgK,CAAC,EAAE,EACxC;MACI,MAAMC,cAAc,GAAG,EAAE;MACzB,MAAM9G,WAAW,GAAG,EAAE;MACtB,KAAK,IAAIlF,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG2B,QAAQ,EAAE3B,CAAC,EAAE,EACjC;QACI,IAAI8B,OAAO,CAACG,GAAG,CAACjC,CAAC,CAAC,KAAK+L,CAAC,EAAE;AAC1BC,QAAAA,cAAc,CAACzO,IAAI,CAACyN,QAAQ,CAAChL,CAAC,CAAC,CAAC;AAChCkF,QAAAA,WAAW,CAAC3H,IAAI,CAAC4N,WAAW,CAACnL,CAAC,CAAC,CAAC;AACpC,MAAA;AACA,MAAA,IAAI,CAACgM,cAAc,CAACjQ,MAAM,EAAE;MAC5BiJ,aAAa,CAACyF,QAAQ,CAAC3I,OAAO,CAACM,aAAa,CAAC2J,CAAC,CAAC,CAAC,EAAEtO,MAAM,EAAEwB,SAAS,EAAE+M,cAAc,EAAE9G,WAAW,EAAEpB,EAAE,CAAC;AACzG,IAAA;;AAEA;AACA,IAAA,KAAK,IAAIzI,CAAC,GAAGyG,OAAO,CAACE,aAAa,CAACjG,MAAM,GAAG,CAAC,EAAEV,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAC1D;MACI,MAAM;QAAEiH,SAAS;AAAEC,QAAAA;AAAM,OAAC,GAAGT,OAAO,CAACE,aAAa,CAAC3G,CAAC,CAAC;AACrD,MAAA,MAAM4Q,eAAe,GAAGjB,QAAQ,CAAC1I,SAAS,CAAC;AAC3C,MAAA,MAAM4J,WAAW,GAAGlB,QAAQ,CAACzI,KAAK,CAAC;MACnC,KAAK,IAAI8D,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGvC,EAAE,EAAEuC,CAAC,EAAE,EAC3B;AACI,QAAA,MAAM8F,CAAC,GAAGF,eAAe,CAAC5F,CAAC,CAAC;AAC5B,QAAA,MAAM/F,CAAC,GAAG4L,WAAW,CAAC7F,CAAC,CAAC;AACxB,QAAA,IAAI+F,IAAI;AACR,QAAA,IAAIC,IAAI;QACR,IAAIF,CAAC,GAAG,CAAC,EACT;UACI,IAAI7L,CAAC,GAAG,CAAC,EAAE;AAAE8L,YAAAA,IAAI,GAAGD,CAAC;YAAEE,IAAI,GAAGF,CAAC,GAAG7L,CAAC;AAAE,UAAA,CAAC,MACjC;AAAE+L,YAAAA,IAAI,GAAGF,CAAC;YAAEC,IAAI,GAAGD,CAAC,GAAG7L,CAAC;AAAE,UAAA;AACnC,QAAA,CAAC,MACI,IAAIA,CAAC,GAAG,CAAC,EACd;AACI8L,UAAAA,IAAI,GAAGD,CAAC;UACRE,IAAI,GAAGF,CAAC,GAAG7L,CAAC;AAChB,QAAA,CAAC,MAED;AACI+L,UAAAA,IAAI,GAAGF,CAAC;UACRC,IAAI,GAAGD,CAAC,GAAG7L,CAAC;AAChB,QAAA;AACA2L,QAAAA,eAAe,CAAC5F,CAAC,CAAC,GAAG+F,IAAI;AACzBF,QAAAA,WAAW,CAAC7F,CAAC,CAAC,GAAGgG,IAAI;AACzB,MAAA;AACJ,IAAA;;AAEA;AACA,IAAA,MAAM1F,MAAM,GAAGa,SAAS,CAAC7C,CAAC,EAAEiH,IAAI,CAACrF,SAAS,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,UAAU,CAAC;IAC3E,KAAK,IAAI1G,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG2B,QAAQ,EAAE3B,CAAC,EAAE,EACjC;AACI,MAAA,MAAMsM,GAAG,GAAGpB,QAAQ,CAAClL,CAAC,CAAC;AACvB,MAAA,IAAI6L,UAAU,CAAC7L,CAAC,CAAC,EACjB;QACIsM,GAAG,CAACzP,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE8H,CAAC,CAAC;AACjB,QAAA;AACJ,MAAA;AACA,MAAA,MAAMzJ,KAAK,GAAGsP,MAAM,CAAC1I,OAAO,CAACK,WAAW,CAACL,OAAO,CAACG,GAAG,CAACjC,CAAC,CAAC,CAAC,CAAC;AACzD6D,MAAAA,kBAAkB,CAAC3I,KAAK,EAAEkQ,UAAU,CAACpL,CAAC,CAAC,EAAE8D,EAAE,EAAEmH,WAAW,CAACjL,CAAC,CAAC,CAAC;AAC5D,MAAA,MAAMuM,KAAK,GAAGtB,WAAW,CAACjL,CAAC,CAAC;AAC5B,MAAA,MAAMwM,IAAI,GAAGxB,QAAQ,CAAChL,CAAC,CAAC;MACxB,KAAK,IAAIqG,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGvC,EAAE,EAAEuC,CAAC,EAAE,EAAEmG,IAAI,CAACnG,CAAC,CAAC,IAAIkG,KAAK,CAAClG,CAAC,CAAC;AAChDoG,MAAAA,KAAK,CAACD,IAAI,CAAC/D,QAAQ,CAAC,CAAC,EAAE3E,EAAE,CAAC,EAAEwI,GAAG,EAAE3H,CAAC,CAAC;MACnC,KAAK,IAAI0B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG1B,CAAC,EAAE0B,CAAC,EAAE,EAAEiG,GAAG,CAACjG,CAAC,CAAC,IAAIM,MAAM,CAACN,CAAC,CAAC;AACnD,IAAA;;AAEA;AACA,IAAA,IAAIiF,KAAK,EACT;AACI,MAAA,MAAMoB,QAAQ,GAAKpB,KAAK,GAAG3G,CAAC,IAAK,CAAE;MACnC,MAAMgI,QAAQ,GAAG,CAACrB,KAAK,IAAI,CAAC,KAAK3G,CAAC,IAAI,CAAC,CAAC;MACxC,MAAMoE,KAAK,GAAG,EAAE;MAChB,KAAK,IAAI/I,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG2B,QAAQ,EAAE3B,CAAC,EAAE,EACjC;AACI,QAAA,MAAM4M,OAAO,GAAG,IAAIhT,YAAY,CAAC8S,QAAQ,CAAC;AAC1C,QAAA,MAAMG,IAAI,GAAGxB,KAAK,CAACrL,CAAC,CAAC;AACrB,QAAA,MAAM8M,GAAG,GAAG5B,QAAQ,CAAClL,CAAC,CAAC;QACvB,KAAK,IAAI3E,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGqR,QAAQ,EAAErR,CAAC,EAAE,EACjC;AACI,UAAA,IAAIlB,KAAK,GAAGkB,CAAC,GAAIiQ,KAAK,IAAI,CAAE,GAAGuB,IAAI,CAACxR,CAAC,CAAC,GAAG,CAAC;AAC1C,UAAA,MAAM0R,QAAQ,GAAG1R,CAAC,GAAGsR,QAAQ;UAC7B,IAAII,QAAQ,IAAI,CAAC,EAAE5S,KAAK,IAAI2S,GAAG,CAACC,QAAQ,CAAC;AACzCH,UAAAA,OAAO,CAACvR,CAAC,CAAC,GAAGlB,KAAK;AACtB,QAAA;AACA4O,QAAAA,KAAK,CAACxL,IAAI,CAACqP,OAAO,CAAC;AACvB,MAAA;AACArB,MAAAA,YAAY,CAAChO,IAAI,CAACwL,KAAK,CAAC;AACxByC,MAAAA,YAAY,IAAIkB,QAAQ;AAC5B,IAAA;IACA,KAAK,IAAI1M,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG2B,QAAQ,EAAE3B,CAAC,EAAE,EACjC;AACIqL,MAAAA,KAAK,CAACrL,CAAC,CAAC,CAAC2H,GAAG,CAACuD,QAAQ,CAAClL,CAAC,CAAC,CAACyI,QAAQ,CAAC9D,CAAC,IAAI,CAAC,EAAEA,CAAC,CAAC,CAAC;AACjD,IAAA;AACA2G,IAAAA,KAAK,GAAG3G,CAAC;AACT8G,IAAAA,WAAW,EAAE;AACjB,EAAA;;AAEA;EACA,MAAMuB,UAAU,GAAGhF,WAAW,IAAIA,WAAW,GAAGwD,YAAY,GAAGxD,WAAW,GAAGwD,YAAY;EACzF,MAAMyB,WAAW,GAAG,EAAE;EACtB,KAAK,IAAIjN,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG2B,QAAQ,EAAE3B,CAAC,EAAE,EAAEiN,WAAW,CAAC1P,IAAI,CAAC,IAAI3D,YAAY,CAACoT,UAAU,CAAC,CAAC;EACjF,IAAI1E,MAAM,GAAG,CAAC;AACd,EAAA,KAAK,MAAMS,KAAK,IAAIwC,YAAY,EAChC;AACI,IAAA,MAAM2B,SAAS,GAAGvS,IAAI,CAAC4K,GAAG,CAACwD,KAAK,CAAC,CAAC,CAAC,CAAChN,MAAM,EAAEiR,UAAU,GAAG1E,MAAM,CAAC;IAChE,IAAI4E,SAAS,IAAI,CAAC,EAAE;IACpB,KAAK,IAAIlN,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG2B,QAAQ,EAAE3B,CAAC,EAAE,EACjC;AACIiN,MAAAA,WAAW,CAACjN,CAAC,CAAC,CAAC2H,GAAG,CAACoB,KAAK,CAAC/I,CAAC,CAAC,CAACyI,QAAQ,CAAC,CAAC,EAAEyE,SAAS,CAAC,EAAE5E,MAAM,CAAC;AAC/D,IAAA;AACAA,IAAAA,MAAM,IAAI4E,SAAS;AACvB,EAAA;EAEA,OAAO;IACHvL,QAAQ;IACRwI,UAAU;AACVgD,IAAAA,WAAW,EAAEH,UAAU;IACvBC,WAAW;IACX1D,MAAM;IACNC,QAAQ;IACRC,IAAI;IACJgC,WAAW;AACX2B,IAAAA,eAAe,EAAEpF;GACpB;AACL;;;;"}
1
+ {"version":3,"file":"vorbis.js","sources":["../../../../../src/formats/ogg/core/vorbis.js"],"sourcesContent":["import { imdct, vorbisWindowSlope } from \"./imdct.js\";\n\n/**\n * Pure-JS Ogg Vorbis PCM decoder.\n *\n * Implements Vorbis I decode: setup-header codebooks (huffman + VQ), floor\n * type 1 with the spec's exact integer line rendering, residue types 0/1/2,\n * square-polar channel de-coupling, IMDCT, and windowed center-aligned\n * overlap-add with final granule trimming. Behavior follows the Vorbis I\n * specification with stb_vorbis (public domain) consulted as a reference;\n * floor type 0 streams are rejected (never produced by modern encoders).\n */\n\nconst NO_CODE = 255;\nconst FAST_BITS = 10;\nconst FAST_SIZE = 1 << FAST_BITS;\n\n/**\n * The floor1 amplitude table from the Vorbis I specification\n * (inverse_db_table); indexed by the integer floor curve value.\n */\nconst INVERSE_DB_TABLE = new Float32Array([\n 1.0649863e-07, 1.1341951e-07, 1.2079015e-07, 1.2863978e-07,\n 1.3699951e-07, 1.4590251e-07, 1.5538408e-07, 1.6548181e-07,\n 1.7623575e-07, 1.8768855e-07, 1.9988561e-07, 2.1287530e-07,\n 2.2670913e-07, 2.4144197e-07, 2.5713223e-07, 2.7384213e-07,\n 2.9163793e-07, 3.1059021e-07, 3.3077411e-07, 3.5226968e-07,\n 3.7516214e-07, 3.9954229e-07, 4.2550680e-07, 4.5315863e-07,\n 4.8260743e-07, 5.1396998e-07, 5.4737065e-07, 5.8294187e-07,\n 6.2082472e-07, 6.6116941e-07, 7.0413592e-07, 7.4989464e-07,\n 7.9862701e-07, 8.5052630e-07, 9.0579828e-07, 9.6466216e-07,\n 1.0273513e-06, 1.0941144e-06, 1.1652161e-06, 1.2409384e-06,\n 1.3215816e-06, 1.4074654e-06, 1.4989305e-06, 1.5963394e-06,\n 1.7000785e-06, 1.8105592e-06, 1.9282195e-06, 2.0535261e-06,\n 2.1869758e-06, 2.3290978e-06, 2.4804557e-06, 2.6416497e-06,\n 2.8133190e-06, 2.9961443e-06, 3.1908506e-06, 3.3982101e-06,\n 3.6190449e-06, 3.8542308e-06, 4.1047004e-06, 4.3714470e-06,\n 4.6555282e-06, 4.9580707e-06, 5.2802740e-06, 5.6234160e-06,\n 5.9888572e-06, 6.3780469e-06, 6.7925283e-06, 7.2339451e-06,\n 7.7040476e-06, 8.2047000e-06, 8.7378876e-06, 9.3057248e-06,\n 9.9104632e-06, 1.0554501e-05, 1.1240392e-05, 1.1970856e-05,\n 1.2748789e-05, 1.3577278e-05, 1.4459606e-05, 1.5399272e-05,\n 1.6400004e-05, 1.7465768e-05, 1.8600792e-05, 1.9809576e-05,\n 2.1096914e-05, 2.2467911e-05, 2.3928002e-05, 2.5482978e-05,\n 2.7139006e-05, 2.8902651e-05, 3.0780908e-05, 3.2781225e-05,\n 3.4911534e-05, 3.7180282e-05, 3.9596466e-05, 4.2169667e-05,\n 4.4910090e-05, 4.7828601e-05, 5.0936773e-05, 5.4246931e-05,\n 5.7772202e-05, 6.1526565e-05, 6.5524908e-05, 6.9783085e-05,\n 7.4317983e-05, 7.9147585e-05, 8.4291040e-05, 8.9768747e-05,\n 9.5602426e-05, 0.00010181521, 0.00010843174, 0.00011547824,\n 0.00012298267, 0.00013097477, 0.00013948625, 0.00014855085,\n 0.00015820453, 0.00016848555, 0.00017943469, 0.00019109536,\n 0.00020351382, 0.00021673929, 0.00023082423, 0.00024582449,\n 0.00026179955, 0.00027881276, 0.00029693158, 0.00031622787,\n 0.00033677814, 0.00035866388, 0.00038197188, 0.00040679456,\n 0.00043323036, 0.00046138411, 0.00049136745, 0.00052329927,\n 0.00055730621, 0.00059352311, 0.00063209358, 0.00067317058,\n 0.00071691700, 0.00076350630, 0.00081312324, 0.00086596457,\n 0.00092223983, 0.00098217216, 0.0010459992, 0.0011139742,\n 0.0011863665, 0.0012634633, 0.0013455702, 0.0014330129,\n 0.0015261382, 0.0016253153, 0.0017309374, 0.0018434235,\n 0.0019632195, 0.0020908006, 0.0022266726, 0.0023713743,\n 0.0025254795, 0.0026895994, 0.0028643847, 0.0030505286,\n 0.0032487691, 0.0034598925, 0.0036847358, 0.0039241906,\n 0.0041792066, 0.0044507950, 0.0047400328, 0.0050480668,\n 0.0053761186, 0.0057254891, 0.0060975636, 0.0064938176,\n 0.0069158225, 0.0073652516, 0.0078438871, 0.0083536271,\n 0.0088964928, 0.0094746370, 0.0100903520, 0.0107460800,\n 0.0114444210, 0.0121881440, 0.0129801980, 0.0138237250,\n 0.0147220680, 0.0156787910, 0.0166976870, 0.0177827970,\n 0.0189384230, 0.0201691490, 0.0214798540, 0.0228757350,\n 0.0243623300, 0.0259455310, 0.0276316180, 0.0294272760,\n 0.0313396260, 0.0333762520, 0.0355452280, 0.0378551570,\n 0.0403151990, 0.0429351080, 0.0457252730, 0.0486967580,\n 0.0518613480, 0.0552315910, 0.0588208500, 0.0626433610,\n 0.0667142790, 0.0710497490, 0.0756669620, 0.0805842270,\n 0.0858210440, 0.0913981790, 0.0973377470, 0.1036633000,\n 0.1103999300, 0.1175743400, 0.1252149800, 0.1333521500,\n 0.1420181300, 0.1512472700, 0.1610761700, 0.1715438000,\n 0.1826916800, 0.1945640200, 0.2072078800, 0.2206734200,\n 0.2350140200, 0.2502865600, 0.2665515900, 0.2838736100,\n 0.3023213200, 0.3219678600, 0.3428911400, 0.3651741400,\n 0.3889052100, 0.4141784700, 0.4410941200, 0.4697589000,\n 0.5002864800, 0.5327979100, 0.5674221200, 0.6042964000,\n 0.6435669900, 0.6853895900, 0.7299300700, 0.7773650400,\n 0.8278826000, 0.8816830700, 0.9389798000, 1.0\n]);\n\nfunction decodeError(message)\n{\n const error = new Error(`ogg: ${message}`);\n error.code = \"CJS_FORMAT_PARSE_ERROR\";\n return error;\n}\n\nfunction ilog(value)\n{\n let result = 0;\n let v = value | 0;\n if (v < 0) return 0;\n while (v)\n {\n result++;\n v >>= 1;\n }\n return result;\n}\n\nfunction float32Unpack(x)\n{\n const mantissa = x & 0x1fffff;\n const sign = x & 0x80000000;\n const exponent = (x & 0x7fe00000) >>> 21;\n const value = sign ? -mantissa : mantissa;\n return value * Math.pow(2, exponent - 788);\n}\n\nfunction lookup1Values(entries, dimensions)\n{\n if (dimensions === 0) return 0;\n const bits = ilog(entries);\n let vals = entries >>> Math.floor(((bits - 1) * (dimensions - 1)) / dimensions);\n for (;;)\n {\n let acc = 1;\n let acc1 = 1;\n for (let i = 0; i < dimensions; i++)\n {\n acc *= vals;\n acc1 *= vals + 1;\n }\n if (acc <= entries && acc1 > entries) return vals;\n if (acc > entries) vals--;\n else vals++;\n }\n}\n\n/**\n * LSB-first bit reader over one Vorbis packet; reading past the end sets\n * `eop` instead of throwing (end-of-packet is a defined decode condition).\n */\nclass PacketReader\n{\n constructor(bytes)\n {\n this.bytes = bytes;\n this.position = 0;\n this.bitBuffer = 0;\n this.bitsLeft = 0;\n this.eop = false;\n }\n\n readBits(count)\n {\n let value = 0;\n for (let i = 0; i < count; i++)\n {\n if (this.bitsLeft === 0)\n {\n if (this.position >= this.bytes.length)\n {\n this.eop = true;\n return -1;\n }\n this.bitBuffer = this.bytes[this.position++];\n this.bitsLeft = 8;\n }\n value |= (this.bitBuffer & 1) << i;\n this.bitBuffer >>= 1;\n this.bitsLeft--;\n }\n return value >>> 0;\n }\n}\n\n/**\n * Vorbis codebook that builds Huffman decode trees and VQ lookup vectors for\n * scalar and vector packet decoding.\n */\nclass Codebook\n{\n constructor()\n {\n this.dimensions = 0;\n this.entries = 0;\n this.lookupType = 0;\n this.sequenceP = false;\n this.quantvals = 0;\n this.values = null;\n this.fastTable = null;\n this.treeNodes = null;\n this.maxLength = 0;\n }\n\n buildHuffman(lengths)\n {\n const available = new Uint32Array(33);\n this.fastTable = new Int32Array(FAST_SIZE).fill(-1);\n // flat binary trie: two child slots per node; negative = -(symbol+1)\n const nodes = [ 0, 0 ];\n\n let assigned = false;\n for (let symbol = 0; symbol < lengths.length; symbol++)\n {\n const length = lengths[symbol];\n if (length === NO_CODE) continue;\n if (length > this.maxLength) this.maxLength = length;\n\n let code;\n if (!assigned)\n {\n code = 0;\n assigned = true;\n for (let i = 1; i <= length; i++) available[i] = (1 << (32 - i)) >>> 0;\n }\n else\n {\n let z = length;\n while (z > 0 && !available[z]) z--;\n if (z === 0) throw decodeError(\"over-specified huffman codebook\");\n code = available[z];\n available[z] = 0;\n if (z !== length)\n {\n for (let y = length; y > z; y--)\n {\n available[y] = (code + (1 << (32 - y))) >>> 0;\n }\n }\n }\n\n // reversed code: first stream bit in bit 0\n let reversed = 0;\n for (let i = 0; i < length; i++)\n {\n reversed |= ((code >>> (31 - i)) & 1) << i;\n }\n reversed >>>= 0;\n\n if (length <= FAST_BITS)\n {\n for (let z = reversed; z < FAST_SIZE; z += 1 << length)\n {\n this.fastTable[z] = (symbol << 6) | length;\n }\n }\n else\n {\n let node = 0;\n for (let i = 0; i < length; i++)\n {\n const bit = (reversed >>> i) & 1;\n const slot = node * 2 + bit;\n if (i === length - 1)\n {\n nodes[slot] = -(symbol + 1);\n }\n else\n {\n if (!nodes[slot])\n {\n nodes[slot] = nodes.length / 2;\n nodes.push(0, 0);\n }\n node = nodes[slot];\n }\n }\n }\n }\n\n this.treeNodes = nodes;\n }\n\n decode(reader)\n {\n // fast path: peek up to FAST_BITS without consuming\n let peek = 0;\n let peekBits = 0;\n const savedPosition = reader.position;\n const savedBuffer = reader.bitBuffer;\n const savedLeft = reader.bitsLeft;\n while (peekBits < FAST_BITS)\n {\n const bit = reader.readBits(1);\n if (bit < 0) break;\n peek |= bit << peekBits;\n peekBits++;\n }\n reader.position = savedPosition;\n reader.bitBuffer = savedBuffer;\n reader.bitsLeft = savedLeft;\n reader.eop = false;\n\n if (peekBits === FAST_BITS)\n {\n const hit = this.fastTable[peek];\n if (hit >= 0)\n {\n reader.readBits(hit & 63);\n return hit >> 6;\n }\n }\n else\n {\n // short remainder: try fast table over what's left\n const hit = this.fastTable[peek];\n if (hit >= 0 && (hit & 63) <= peekBits)\n {\n reader.readBits(hit & 63);\n return hit >> 6;\n }\n }\n\n // slow path: walk the trie bit by bit\n let node = 0;\n for (let i = 0; i < this.maxLength; i++)\n {\n const bit = reader.readBits(1);\n if (bit < 0) return -1;\n const value = this.treeNodes[node * 2 + bit];\n if (value < 0) return -value - 1;\n if (value === 0) throw decodeError(\"invalid huffman code in stream\");\n node = value;\n }\n throw decodeError(\"huffman walk exceeded max code length\");\n }\n\n vqValue(symbol, element)\n {\n if (this.lookupType === 1)\n {\n let index = symbol;\n for (let i = 0; i < element; i++) index = Math.floor(index / this.quantvals);\n return this.values[index % this.quantvals];\n }\n return this.values[symbol * this.dimensions + element];\n }\n}\n\nfunction parseCodebook(reader)\n{\n const sync = reader.readBits(24);\n if (sync !== 0x564342) throw decodeError(\"invalid codebook sync pattern\");\n\n const book = new Codebook();\n book.dimensions = reader.readBits(16);\n book.entries = reader.readBits(24);\n\n const lengths = new Uint8Array(book.entries);\n const ordered = reader.readBits(1);\n if (ordered)\n {\n let currentEntry = 0;\n let currentLength = reader.readBits(5) + 1;\n while (currentEntry < book.entries)\n {\n const number = reader.readBits(ilog(book.entries - currentEntry));\n if (reader.eop) throw decodeError(\"codebook lengths truncated\");\n for (let i = 0; i < number; i++) lengths[currentEntry + i] = currentLength;\n currentEntry += number;\n currentLength++;\n if (currentEntry > book.entries) throw decodeError(\"codebook entry overflow\");\n }\n }\n else\n {\n const sparse = reader.readBits(1);\n for (let i = 0; i < book.entries; i++)\n {\n const present = sparse ? reader.readBits(1) : 1;\n lengths[i] = present ? reader.readBits(5) + 1 : NO_CODE;\n }\n }\n if (reader.eop) throw decodeError(\"codebook lengths truncated\");\n\n book.buildHuffman(lengths);\n\n book.lookupType = reader.readBits(4);\n if (book.lookupType > 2) throw decodeError(`invalid codebook lookup type ${book.lookupType}`);\n if (book.lookupType > 0)\n {\n const minimum = float32Unpack(reader.readBits(32));\n const delta = float32Unpack(reader.readBits(32));\n const valueBits = reader.readBits(4) + 1;\n book.sequenceP = reader.readBits(1) === 1;\n const count = book.lookupType === 1\n ? lookup1Values(book.entries, book.dimensions)\n : book.entries * book.dimensions;\n book.quantvals = book.lookupType === 1 ? count : 0;\n book.values = new Float32Array(count);\n for (let i = 0; i < count; i++)\n {\n book.values[i] = minimum + reader.readBits(valueBits) * delta;\n }\n if (reader.eop) throw decodeError(\"codebook lookup values truncated\");\n }\n return book;\n}\n\nfunction parseFloor(reader, codebooks)\n{\n const type = reader.readBits(16);\n if (type !== 1)\n {\n throw decodeError(`floor type ${type} is not supported (only floor 1)`);\n }\n\n const floor = {\n partitions: reader.readBits(5),\n partitionClassList: [],\n classDimensions: [],\n classSubclasses: [],\n classMasterbooks: [],\n subclassBooks: [],\n multiplier: 0,\n rangebits: 0,\n xList: [ 0, 0 ]\n };\n\n let maximumClass = -1;\n for (let i = 0; i < floor.partitions; i++)\n {\n const partitionClass = reader.readBits(4);\n floor.partitionClassList.push(partitionClass);\n if (partitionClass > maximumClass) maximumClass = partitionClass;\n }\n for (let i = 0; i <= maximumClass; i++)\n {\n floor.classDimensions.push(reader.readBits(3) + 1);\n const subclasses = reader.readBits(2);\n floor.classSubclasses.push(subclasses);\n floor.classMasterbooks.push(subclasses ? reader.readBits(8) : -1);\n const books = [];\n for (let j = 0; j < (1 << subclasses); j++)\n {\n books.push(reader.readBits(8) - 1);\n }\n floor.subclassBooks.push(books);\n }\n floor.multiplier = reader.readBits(2) + 1;\n floor.rangebits = reader.readBits(4);\n floor.xList = [ 0, 1 << floor.rangebits ];\n for (let i = 0; i < floor.partitions; i++)\n {\n for (let j = 0; j < floor.classDimensions[floor.partitionClassList[i]]; j++)\n {\n floor.xList.push(reader.readBits(floor.rangebits));\n }\n }\n if (reader.eop) throw decodeError(\"floor configuration truncated\");\n for (const bookIndex of [ ...floor.classMasterbooks, ...floor.subclassBooks.flat() ])\n {\n if (bookIndex >= codebooks.length) throw decodeError(\"floor references invalid codebook\");\n }\n\n // sorted render order over unique X positions, computed once\n floor.sortedIndex = floor.xList\n .map((x, index) => ({ x, index }))\n .sort((a, b) => a.x - b.x || a.index - b.index)\n .map((entry) => entry.index);\n\n // neighbor tables (over original ordering) computed once\n floor.lowNeighbors = [];\n floor.highNeighbors = [];\n for (let i = 2; i < floor.xList.length; i++)\n {\n let low = 0;\n let high = 1;\n for (let j = 0; j < i; j++)\n {\n if (floor.xList[j] < floor.xList[i] && floor.xList[j] >= floor.xList[low]) low = j;\n if (floor.xList[j] > floor.xList[i] && floor.xList[j] <= floor.xList[high]) high = j;\n }\n floor.lowNeighbors.push(low);\n floor.highNeighbors.push(high);\n }\n\n return floor;\n}\n\nfunction parseResidue(reader, codebooks)\n{\n const type = reader.readBits(16);\n if (type > 2) throw decodeError(`invalid residue type ${type}`);\n const residue = {\n type,\n begin: reader.readBits(24),\n end: reader.readBits(24),\n partSize: reader.readBits(24) + 1,\n classifications: reader.readBits(6) + 1,\n classbook: reader.readBits(8),\n books: []\n };\n if (residue.classbook >= codebooks.length) throw decodeError(\"residue classbook out of range\");\n\n const cascades = [];\n for (let i = 0; i < residue.classifications; i++)\n {\n const lowBits = reader.readBits(3);\n const flag = reader.readBits(1);\n const highBits = flag ? reader.readBits(5) : 0;\n cascades.push(highBits * 8 + lowBits);\n }\n for (let i = 0; i < residue.classifications; i++)\n {\n const passBooks = [];\n for (let pass = 0; pass < 8; pass++)\n {\n if (cascades[i] & (1 << pass))\n {\n const bookIndex = reader.readBits(8);\n if (bookIndex >= codebooks.length) throw decodeError(\"residue book out of range\");\n if (codebooks[bookIndex].lookupType === 0) throw decodeError(\"residue book has no lookup values\");\n passBooks.push(bookIndex);\n }\n else\n {\n passBooks.push(-1);\n }\n }\n residue.books.push(passBooks);\n }\n if (reader.eop) throw decodeError(\"residue configuration truncated\");\n return residue;\n}\n\nfunction parseMapping(reader, channels, floorCount, residueCount)\n{\n const type = reader.readBits(16);\n if (type !== 0) throw decodeError(`invalid mapping type ${type}`);\n const mapping = { submaps: 1, couplingSteps: [], mux: new Array(channels).fill(0), submapFloor: [], submapResidue: [] };\n\n if (reader.readBits(1)) mapping.submaps = reader.readBits(4) + 1;\n if (reader.readBits(1))\n {\n const steps = reader.readBits(8) + 1;\n const bits = ilog(channels - 1);\n for (let i = 0; i < steps; i++)\n {\n const magnitude = reader.readBits(bits);\n const angle = reader.readBits(bits);\n if (magnitude === angle || magnitude >= channels || angle >= channels)\n {\n throw decodeError(\"invalid channel coupling\");\n }\n mapping.couplingSteps.push({ magnitude, angle });\n }\n }\n if (reader.readBits(2) !== 0) throw decodeError(\"mapping reserved bits nonzero\");\n if (mapping.submaps > 1)\n {\n for (let i = 0; i < channels; i++)\n {\n mapping.mux[i] = reader.readBits(4);\n if (mapping.mux[i] >= mapping.submaps) throw decodeError(\"mapping mux out of range\");\n }\n }\n for (let i = 0; i < mapping.submaps; i++)\n {\n reader.readBits(8);\n const floorIndex = reader.readBits(8);\n const residueIndex = reader.readBits(8);\n if (floorIndex >= floorCount || residueIndex >= residueCount)\n {\n throw decodeError(\"mapping references invalid floor or residue\");\n }\n mapping.submapFloor.push(floorIndex);\n mapping.submapResidue.push(residueIndex);\n }\n return mapping;\n}\n\nconst FLOOR1_RANGES = [ 256, 128, 86, 64 ];\n\nfunction renderPoint(x0, y0, x1, y1, x)\n{\n const dy = y1 - y0;\n const adx = x1 - x0;\n const err = Math.floor((Math.abs(dy) * (x - x0)) / adx);\n return dy < 0 ? y0 - err : y0 + err;\n}\n\nfunction decodeFloor1Posts(reader, floor, codebooks)\n{\n if (reader.readBits(1) !== 1) return null;\n\n const range = FLOOR1_RANGES[floor.multiplier - 1];\n const posts = new Int32Array(floor.xList.length);\n const yBits = ilog(range - 1);\n posts[0] = reader.readBits(yBits);\n posts[1] = reader.readBits(yBits);\n\n let offset = 2;\n for (let i = 0; i < floor.partitions; i++)\n {\n const partitionClass = floor.partitionClassList[i];\n const cdim = floor.classDimensions[partitionClass];\n const cbits = floor.classSubclasses[partitionClass];\n const csub = (1 << cbits) - 1;\n let cval = 0;\n if (cbits)\n {\n cval = codebooks[floor.classMasterbooks[partitionClass]].decode(reader);\n if (cval < 0) return null;\n }\n for (let j = 0; j < cdim; j++)\n {\n const bookIndex = floor.subclassBooks[partitionClass][cval & csub];\n cval >>= cbits;\n if (bookIndex >= 0)\n {\n const value = codebooks[bookIndex].decode(reader);\n if (value < 0) return null;\n posts[offset + j] = value;\n }\n else\n {\n posts[offset + j] = 0;\n }\n }\n offset += cdim;\n }\n if (reader.eop) return null;\n return posts;\n}\n\nfunction computeFloor1Curve(floor, posts, n2, output)\n{\n const range = FLOOR1_RANGES[floor.multiplier - 1];\n const count = floor.xList.length;\n const finalY = new Int32Array(count);\n const step2 = new Uint8Array(count);\n\n step2[0] = 1;\n step2[1] = 1;\n finalY[0] = posts[0];\n finalY[1] = posts[1];\n\n for (let i = 2; i < count; i++)\n {\n const low = floor.lowNeighbors[i - 2];\n const high = floor.highNeighbors[i - 2];\n const predicted = renderPoint(floor.xList[low], finalY[low], floor.xList[high], finalY[high], floor.xList[i]);\n const value = posts[i];\n const highroom = range - predicted;\n const lowroom = predicted;\n const room = (highroom < lowroom ? highroom : lowroom) * 2;\n if (value)\n {\n step2[low] = 1;\n step2[high] = 1;\n step2[i] = 1;\n if (value >= room)\n {\n finalY[i] = highroom > lowroom ? value - lowroom + predicted : predicted - value + highroom - 1;\n }\n else\n {\n finalY[i] = value & 1 ? predicted - ((value + 1) >> 1) : predicted + (value >> 1);\n }\n }\n else\n {\n step2[i] = 0;\n finalY[i] = predicted;\n }\n }\n\n output.fill(0);\n let lx = 0;\n let ly = finalY[floor.sortedIndex[0]] * floor.multiplier;\n for (const index of floor.sortedIndex)\n {\n if (!step2[index]) continue;\n const hx = floor.xList[index];\n const hy = finalY[index] * floor.multiplier;\n if (hx > lx) renderLine(lx, ly, hx, hy, output, n2);\n if (hx >= n2) return;\n lx = hx;\n ly = hy;\n }\n if (lx < n2)\n {\n for (let i = lx; i < n2; i++) output[i] = INVERSE_DB_TABLE[ly & 255];\n }\n}\n\nfunction renderLine(x0, y0, x1, y1, output, n)\n{\n const dy = y1 - y0;\n const adx = x1 - x0;\n let ady = Math.abs(dy);\n const base = (dy / adx) | 0;\n const sy = dy < 0 ? base - 1 : base + 1;\n let x = x0;\n let y = y0;\n let err = 0;\n ady -= Math.abs(base) * adx;\n const limit = x1 > n ? n : x1;\n\n if (x < limit) output[x] = INVERSE_DB_TABLE[y & 255];\n for (x++; x < limit; x++)\n {\n err += ady;\n if (err >= adx)\n {\n err -= adx;\n y += sy;\n }\n else\n {\n y += base;\n }\n output[x] = INVERSE_DB_TABLE[y & 255];\n }\n}\n\nfunction decodeResidue(residue, reader, codebooks, buffers, doNotDecode, n2)\n{\n const channelCount = buffers.length;\n const classbook = codebooks[residue.classbook];\n const classwords = classbook.dimensions;\n const actualSize = residue.type === 2 ? n2 * channelCount : n2;\n const limitBegin = Math.min(residue.begin, actualSize);\n const limitEnd = Math.min(residue.end, actualSize);\n const nRead = limitEnd - limitBegin;\n const partRead = Math.floor(nRead / residue.partSize);\n if (partRead <= 0) return;\n\n if (residue.type === 2 && channelCount > 1)\n {\n if (doNotDecode.every(Boolean)) return;\n const classifications = new Int32Array(partRead + classwords);\n for (let pass = 0; pass < 8; pass++)\n {\n let pcount = 0;\n while (pcount < partRead)\n {\n if (pass === 0)\n {\n let symbol = classbook.decode(reader);\n if (symbol < 0) return;\n for (let i = classwords - 1; i >= 0; i--)\n {\n classifications[i + pcount] = symbol % residue.classifications;\n symbol = Math.floor(symbol / residue.classifications);\n }\n }\n for (let i = 0; i < classwords && pcount < partRead; i++, pcount++)\n {\n const z = residue.begin + pcount * residue.partSize;\n const bookIndex = residue.books[classifications[pcount]][pass];\n if (bookIndex < 0) continue;\n const book = codebooks[bookIndex];\n let cInter = z % channelCount;\n let pInter = Math.floor(z / channelCount);\n let decoded = 0;\n while (decoded < residue.partSize)\n {\n const symbol = book.decode(reader);\n if (symbol < 0) return;\n let last = 0;\n for (let e = 0; e < book.dimensions; e++)\n {\n const value = book.vqValue(symbol, e) + (book.sequenceP ? last : 0);\n if (book.sequenceP) last = value;\n buffers[cInter][pInter] += value;\n cInter++;\n if (cInter === channelCount)\n {\n cInter = 0;\n pInter++;\n }\n }\n decoded += book.dimensions;\n }\n }\n }\n }\n return;\n }\n\n const classifications = [];\n for (let j = 0; j < channelCount; j++) classifications.push(new Int32Array(partRead + classwords));\n\n for (let pass = 0; pass < 8; pass++)\n {\n let pcount = 0;\n while (pcount < partRead)\n {\n if (pass === 0)\n {\n for (let j = 0; j < channelCount; j++)\n {\n if (doNotDecode[j]) continue;\n let symbol = classbook.decode(reader);\n if (symbol < 0) return;\n for (let i = classwords - 1; i >= 0; i--)\n {\n classifications[j][i + pcount] = symbol % residue.classifications;\n symbol = Math.floor(symbol / residue.classifications);\n }\n }\n }\n for (let i = 0; i < classwords && pcount < partRead; i++, pcount++)\n {\n for (let j = 0; j < channelCount; j++)\n {\n if (doNotDecode[j]) continue;\n const bookIndex = residue.books[classifications[j][pcount]][pass];\n if (bookIndex < 0) continue;\n const book = codebooks[bookIndex];\n const target = buffers[j];\n const offset = residue.begin + pcount * residue.partSize;\n if (residue.type === 0)\n {\n const step = Math.floor(residue.partSize / book.dimensions);\n for (let k = 0; k < step; k++)\n {\n const symbol = book.decode(reader);\n if (symbol < 0) return;\n let last = 0;\n for (let e = 0; e < book.dimensions; e++)\n {\n const value = book.vqValue(symbol, e) + (book.sequenceP ? last : 0);\n if (book.sequenceP) last = value;\n target[offset + k + e * step] += value;\n }\n }\n }\n else\n {\n let k = 0;\n while (k < residue.partSize)\n {\n const symbol = book.decode(reader);\n if (symbol < 0) return;\n let last = 0;\n for (let e = 0; e < book.dimensions; e++)\n {\n const value = book.vqValue(symbol, e) + (book.sequenceP ? last : 0);\n if (book.sequenceP) last = value;\n target[offset + k + e] += value;\n }\n k += book.dimensions;\n }\n }\n }\n }\n }\n }\n}\n\nfunction buildWindow(n, blockflag, prevFlag, nextFlag, blocksize0)\n{\n const window = new Float32Array(n);\n const center = n >> 1;\n let leftStart = 0;\n let leftEnd = center;\n let leftN = center;\n let rightStart = center;\n let rightEnd = n;\n let rightN = center;\n if (blockflag && !prevFlag)\n {\n leftStart = (n >> 2) - (blocksize0 >> 2);\n leftEnd = (n >> 2) + (blocksize0 >> 2);\n leftN = blocksize0 >> 1;\n }\n if (blockflag && !nextFlag)\n {\n rightStart = n - (n >> 2) - (blocksize0 >> 2);\n rightEnd = n - (n >> 2) + (blocksize0 >> 2);\n rightN = blocksize0 >> 1;\n }\n const leftSlope = vorbisWindowSlope(leftN);\n const rightSlope = vorbisWindowSlope(rightN);\n for (let i = leftStart; i < leftEnd; i++) window[i] = leftSlope[i - leftStart];\n for (let i = leftEnd; i < rightStart; i++) window[i] = 1;\n for (let i = rightStart; i < rightEnd; i++) window[i] = rightSlope[rightN - 1 - (i - rightStart)];\n return window;\n}\n\nconst windowVariantCache = new Map();\n\nfunction getWindow(n, blockflag, prevFlag, nextFlag, blocksize0)\n{\n const key = `${n}:${blockflag ? 1 : 0}${prevFlag ? 1 : 0}${nextFlag ? 1 : 0}:${blocksize0}`;\n let window = windowVariantCache.get(key);\n if (!window)\n {\n window = buildWindow(n, blockflag, prevFlag, nextFlag, blocksize0);\n windowVariantCache.set(key, window);\n }\n return window;\n}\n\n/**\n * Split an Ogg stream into the first logical stream's packets.\n *\n * @param {Uint8Array} bytes Ogg bytes (already CRC-validated by inspection).\n * @returns {object} `{ packets, lastGranule }` for the first stream.\n */\nexport function extractOggPackets(bytes)\n{\n const packets = [];\n let pending = [];\n let serial = null;\n let lastGranule = 0;\n let offset = 0;\n\n while (offset + 27 <= bytes.length)\n {\n if (bytes[offset] !== 0x4f || bytes[offset + 1] !== 0x67 || bytes[offset + 2] !== 0x67 || bytes[offset + 3] !== 0x53)\n {\n throw decodeError(`invalid page at byte ${offset}`);\n }\n const headerType = bytes[offset + 5];\n let granule = 0;\n for (let i = 7; i >= 0; i--) granule = granule * 256 + bytes[offset + 6 + i];\n const pageSerial = (bytes[offset + 14] | (bytes[offset + 15] << 8) | (bytes[offset + 16] << 16) | (bytes[offset + 17] * 0x1000000)) >>> 0;\n const segmentCount = bytes[offset + 26];\n const tableOffset = offset + 27;\n let cursor = tableOffset + segmentCount;\n\n const isBos = (headerType & 0x02) !== 0;\n if (serial === null && isBos) serial = pageSerial;\n const ours = pageSerial === serial;\n\n for (let i = 0; i < segmentCount; i++)\n {\n const length = bytes[tableOffset + i];\n if (ours && length > 0) pending.push(bytes.subarray(cursor, cursor + length));\n cursor += length;\n if (length < 255 && ours)\n {\n packets.push(concatChunks(pending));\n pending = [];\n }\n }\n if (ours && granule !== 0xffffffffffffffff && Number.isSafeInteger(granule))\n {\n lastGranule = granule;\n }\n offset = cursor;\n }\n\n if (pending.length) packets.push(concatChunks(pending));\n return { packets, lastGranule };\n}\n\nfunction concatChunks(chunks)\n{\n if (chunks.length === 1) return chunks[0];\n let total = 0;\n for (const chunk of chunks) total += chunk.length;\n const bytes = new Uint8Array(total);\n let cursor = 0;\n for (const chunk of chunks)\n {\n bytes.set(chunk, cursor);\n cursor += chunk.length;\n }\n return bytes;\n}\n\nfunction expectHeader(packet, type)\n{\n if (packet.length < 7 || packet[0] !== type ||\n packet[1] !== 0x76 || packet[2] !== 0x6f || packet[3] !== 0x72 ||\n packet[4] !== 0x62 || packet[5] !== 0x69 || packet[6] !== 0x73)\n {\n throw decodeError(`missing vorbis header packet type ${type}`);\n }\n const reader = new PacketReader(packet);\n reader.readBits(8);\n for (let i = 0; i < 6; i++) reader.readBits(8);\n return reader;\n}\n\nfunction parseComments(packet)\n{\n const reader = new PacketReader(packet);\n reader.readBits(8);\n for (let i = 0; i < 6; i++) reader.readBits(8);\n const readString = () =>\n {\n const length = reader.readBits(32);\n let text = \"\";\n for (let i = 0; i < length; i++) text += String.fromCharCode(reader.readBits(8));\n return text;\n };\n const vendor = readString();\n const count = reader.readBits(32);\n const comments = [];\n for (let i = 0; i < count && !reader.eop; i++) comments.push(readString());\n\n let loop = null;\n let loopStart = null;\n let loopEnd = null;\n for (const comment of comments)\n {\n const match = /^(loopstart|loopend)=(\\d+)$/iu.exec(comment);\n if (!match) continue;\n if (match[1].toLowerCase() === \"loopstart\") loopStart = Number(match[2]);\n else loopEnd = Number(match[2]);\n }\n if (loopStart !== null && loopEnd !== null) loop = { start: loopStart, end: loopEnd };\n return { vendor, comments, loop };\n}\n\n/**\n * Decode an Ogg Vorbis stream to planar float PCM.\n *\n * @param {Uint8Array} bytes Complete Ogg Vorbis stream bytes.\n * @returns {object} `{ channels, sampleRate, sampleCount, channelData, vendor, comments, loop, packetCount }`.\n */\nexport function decodeVorbis(bytes)\n{\n const { packets, lastGranule } = extractOggPackets(bytes);\n if (packets.length < 3) throw decodeError(\"stream has no audio packets\");\n\n // identification header\n const identReader = expectHeader(packets[0], 1);\n if (identReader.readBits(32) !== 0) throw decodeError(\"unsupported vorbis version\");\n const channels = identReader.readBits(8);\n const sampleRate = identReader.readBits(32);\n identReader.readBits(32);\n identReader.readBits(32);\n identReader.readBits(32);\n const blocksize0 = 1 << identReader.readBits(4);\n const blocksize1 = 1 << identReader.readBits(4);\n if (!channels || !sampleRate) throw decodeError(\"invalid identification header\");\n if (blocksize0 > blocksize1 || blocksize0 < 64 || blocksize1 > 8192)\n {\n throw decodeError(\"invalid blocksizes\");\n }\n\n const { vendor, comments, loop } = parseComments(packets[1]);\n\n // setup header\n const setup = expectHeader(packets[2], 5);\n const codebooks = [];\n const codebookCount = setup.readBits(8) + 1;\n for (let i = 0; i < codebookCount; i++) codebooks.push(parseCodebook(setup));\n\n const timeCount = setup.readBits(6) + 1;\n for (let i = 0; i < timeCount; i++)\n {\n if (setup.readBits(16) !== 0) throw decodeError(\"nonzero time-domain transform\");\n }\n\n const floors = [];\n const floorCount = setup.readBits(6) + 1;\n for (let i = 0; i < floorCount; i++) floors.push(parseFloor(setup, codebooks));\n\n const residues = [];\n const residueCount = setup.readBits(6) + 1;\n for (let i = 0; i < residueCount; i++) residues.push(parseResidue(setup, codebooks));\n\n const mappings = [];\n const mappingCount = setup.readBits(6) + 1;\n for (let i = 0; i < mappingCount; i++) mappings.push(parseMapping(setup, channels, floorCount, residueCount));\n\n const modes = [];\n const modeCount = setup.readBits(6) + 1;\n for (let i = 0; i < modeCount; i++)\n {\n const blockflag = setup.readBits(1) === 1;\n if (setup.readBits(16) !== 0 || setup.readBits(16) !== 0)\n {\n throw decodeError(\"nonzero mode window/transform type\");\n }\n const mapping = setup.readBits(8);\n if (mapping >= mappingCount) throw decodeError(\"mode references invalid mapping\");\n modes.push({ blockflag, mapping });\n }\n if (setup.readBits(1) !== 1) throw decodeError(\"missing setup framing bit\");\n const modeBits = ilog(modeCount - 1);\n\n // synthesis state\n const n1 = blocksize1;\n const spectrum = [];\n const floorCurves = [];\n const imdctOut = [];\n for (let j = 0; j < channels; j++)\n {\n spectrum.push(new Float32Array(n1 >> 1));\n floorCurves.push(new Float32Array(n1 >> 1));\n imdctOut.push(new Float32Array(n1));\n }\n const zeroChannel = new Array(channels).fill(false);\n const floorPosts = new Array(channels).fill(null);\n const tails = [];\n for (let j = 0; j < channels; j++) tails.push(new Float32Array(n1 >> 1));\n let prevN = 0;\n\n const outputChunks = [];\n let totalSamples = 0;\n let packetCount = 0;\n\n for (let p = 3; p < packets.length; p++)\n {\n const reader = new PacketReader(packets[p]);\n if (reader.readBits(1) !== 0) continue;\n const modeNumber = reader.readBits(modeBits);\n if (modeNumber < 0 || modeNumber >= modeCount) continue;\n const mode = modes[modeNumber];\n const mapping = mappings[mode.mapping];\n const n = mode.blockflag ? blocksize1 : blocksize0;\n const n2 = n >> 1;\n\n let prevFlag = false;\n let nextFlag = false;\n if (mode.blockflag)\n {\n prevFlag = reader.readBits(1) === 1;\n nextFlag = reader.readBits(1) === 1;\n }\n\n // floors\n for (let j = 0; j < channels; j++)\n {\n const floor = floors[mapping.submapFloor[mapping.mux[j]]];\n floorPosts[j] = decodeFloor1Posts(reader, floor, codebooks);\n zeroChannel[j] = floorPosts[j] === null;\n }\n\n // coupling keeps partners decoding together\n const reallyZero = zeroChannel.slice();\n for (const step of mapping.couplingSteps)\n {\n if (!zeroChannel[step.magnitude] || !zeroChannel[step.angle])\n {\n zeroChannel[step.magnitude] = false;\n zeroChannel[step.angle] = false;\n }\n }\n\n // residues per submap\n for (let j = 0; j < channels; j++) spectrum[j].fill(0);\n for (let s = 0; s < mapping.submaps; s++)\n {\n const submapChannels = [];\n const doNotDecode = [];\n for (let j = 0; j < channels; j++)\n {\n if (mapping.mux[j] !== s) continue;\n submapChannels.push(spectrum[j]);\n doNotDecode.push(zeroChannel[j]);\n }\n if (!submapChannels.length) continue;\n decodeResidue(residues[mapping.submapResidue[s]], reader, codebooks, submapChannels, doNotDecode, n2);\n }\n\n // inverse coupling (reverse order)\n for (let i = mapping.couplingSteps.length - 1; i >= 0; i--)\n {\n const { magnitude, angle } = mapping.couplingSteps[i];\n const magnitudeVector = spectrum[magnitude];\n const angleVector = spectrum[angle];\n for (let k = 0; k < n2; k++)\n {\n const m = magnitudeVector[k];\n const a = angleVector[k];\n let newM;\n let newA;\n if (m > 0)\n {\n if (a > 0) { newM = m; newA = m - a; }\n else { newA = m; newM = m + a; }\n }\n else if (a > 0)\n {\n newM = m;\n newA = m + a;\n }\n else\n {\n newA = m;\n newM = m - a;\n }\n magnitudeVector[k] = newM;\n angleVector[k] = newA;\n }\n }\n\n // floor curve multiply + IMDCT + window\n const window = getWindow(n, mode.blockflag, prevFlag, nextFlag, blocksize0);\n for (let j = 0; j < channels; j++)\n {\n const out = imdctOut[j];\n if (reallyZero[j])\n {\n out.fill(0, 0, n);\n continue;\n }\n const floor = floors[mapping.submapFloor[mapping.mux[j]]];\n computeFloor1Curve(floor, floorPosts[j], n2, floorCurves[j]);\n const curve = floorCurves[j];\n const spec = spectrum[j];\n for (let k = 0; k < n2; k++) spec[k] *= curve[k];\n imdct(spec.subarray(0, n2), out, n);\n for (let k = 0; k < n; k++) out[k] *= window[k];\n }\n\n // center-aligned overlap-add\n if (prevN)\n {\n const outCount = ((prevN + n) >> 2);\n const curStart = (prevN >> 2) - (n >> 2);\n const chunk = [];\n for (let j = 0; j < channels; j++)\n {\n const samples = new Float32Array(outCount);\n const tail = tails[j];\n const cur = imdctOut[j];\n for (let i = 0; i < outCount; i++)\n {\n let value = i < (prevN >> 1) ? tail[i] : 0;\n const curIndex = i - curStart;\n if (curIndex >= 0) value += cur[curIndex];\n samples[i] = value;\n }\n chunk.push(samples);\n }\n outputChunks.push(chunk);\n totalSamples += outCount;\n }\n for (let j = 0; j < channels; j++)\n {\n tails[j].set(imdctOut[j].subarray(n >> 1, n));\n }\n prevN = n;\n packetCount++;\n }\n\n // assemble planar output, trimmed to the stream's final granule\n const finalCount = lastGranule && lastGranule < totalSamples ? lastGranule : totalSamples;\n const channelData = [];\n for (let j = 0; j < channels; j++) channelData.push(new Float32Array(finalCount));\n let cursor = 0;\n for (const chunk of outputChunks)\n {\n const copyCount = Math.min(chunk[0].length, finalCount - cursor);\n if (copyCount <= 0) break;\n for (let j = 0; j < channels; j++)\n {\n channelData[j].set(chunk[j].subarray(0, copyCount), cursor);\n }\n cursor += copyCount;\n }\n\n return {\n channels,\n sampleRate,\n sampleCount: finalCount,\n channelData,\n vendor,\n comments,\n loop,\n packetCount,\n declaredGranule: lastGranule\n };\n}\n"],"names":["NO_CODE","FAST_BITS","FAST_SIZE","INVERSE_DB_TABLE","Float32Array","decodeError","message","error","Error","code","ilog","value","result","v","float32Unpack","x","mantissa","sign","exponent","Math","pow","lookup1Values","entries","dimensions","bits","vals","floor","acc","acc1","i","PacketReader","constructor","bytes","position","bitBuffer","bitsLeft","eop","readBits","count","length","Codebook","lookupType","sequenceP","quantvals","values","fastTable","treeNodes","maxLength","buildHuffman","lengths","available","Uint32Array","Int32Array","fill","nodes","assigned","symbol","z","y","reversed","node","bit","slot","push","decode","reader","peek","peekBits","savedPosition","savedBuffer","savedLeft","hit","vqValue","element","index","parseCodebook","sync","book","Uint8Array","ordered","currentEntry","currentLength","number","sparse","present","minimum","delta","valueBits","parseFloor","codebooks","type","partitions","partitionClassList","classDimensions","classSubclasses","classMasterbooks","subclassBooks","multiplier","rangebits","xList","maximumClass","partitionClass","subclasses","books","j","bookIndex","flat","sortedIndex","map","sort","a","b","entry","lowNeighbors","highNeighbors","low","high","parseResidue","residue","begin","end","partSize","classifications","classbook","cascades","lowBits","flag","highBits","passBooks","pass","parseMapping","channels","floorCount","residueCount","mapping","submaps","couplingSteps","mux","Array","submapFloor","submapResidue","steps","magnitude","angle","floorIndex","residueIndex","FLOOR1_RANGES","renderPoint","x0","y0","x1","y1","dy","adx","err","abs","decodeFloor1Posts","range","posts","yBits","offset","cdim","cbits","csub","cval","computeFloor1Curve","n2","output","finalY","step2","predicted","highroom","lowroom","room","lx","ly","hx","hy","renderLine","n","ady","base","sy","limit","decodeResidue","buffers","doNotDecode","channelCount","classwords","actualSize","limitBegin","min","limitEnd","nRead","partRead","every","Boolean","pcount","cInter","pInter","decoded","last","e","target","step","k","buildWindow","blockflag","prevFlag","nextFlag","blocksize0","window","center","leftStart","leftEnd","leftN","rightStart","rightEnd","rightN","leftSlope","vorbisWindowSlope","rightSlope","windowVariantCache","Map","getWindow","key","get","set","extractOggPackets","packets","pending","serial","lastGranule","headerType","granule","pageSerial","segmentCount","tableOffset","cursor","isBos","ours","subarray","concatChunks","Number","isSafeInteger","chunks","total","chunk","expectHeader","packet","parseComments","readString","text","String","fromCharCode","vendor","comments","loop","loopStart","loopEnd","comment","match","exec","toLowerCase","start","decodeVorbis","identReader","sampleRate","blocksize1","setup","codebookCount","timeCount","floors","residues","mappings","mappingCount","modes","modeCount","modeBits","n1","spectrum","floorCurves","imdctOut","zeroChannel","floorPosts","tails","prevN","outputChunks","totalSamples","packetCount","p","modeNumber","mode","reallyZero","slice","s","submapChannels","magnitudeVector","angleVector","m","newM","newA","out","curve","spec","imdct","outCount","curStart","samples","tail","cur","curIndex","finalCount","channelData","copyCount","sampleCount","declaredGranule"],"mappings":";;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMA,OAAO,GAAG,GAAG;AACnB,MAAMC,SAAS,GAAG,EAAE;AACpB,MAAMC,SAAS,GAAG,CAAC,IAAID,SAAS;;AAEhC;AACA;AACA;AACA;AACA,MAAME,gBAAgB,GAAG,IAAIC,YAAY,CAAC,CACtC,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAC1D,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EACxD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EACtD,YAAY,EAAE,YAAY,E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"}
@@ -1,6 +1,12 @@
1
1
  import { DEFAULT_VALUES, normalizeValues, readWithValues, readWithValuesAsync, inspectWithValues, isSupportedWithValues, toJsonValue, isPNG, toBytes, OUTPUT_JSON, OUTPUT_RAW, OUTPUT_RGBA, OUTPUT_IMAGE } from './core/helpers.js';
2
2
 
3
3
  const FORMAT_NAME = "CjsPngFormat";
4
+
5
+ /**
6
+ * PNG format profile that synchronously inspects chunk and header metadata
7
+ * and emits raw bytes or debug JSON, with RGBA decoding available on the
8
+ * asynchronous read path.
9
+ */
4
10
  class CjsPngFormat {
5
11
  #values = DEFAULT_VALUES;
6
12
 
@@ -1 +1 @@
1
- {"version":3,"file":"CjsPngFormat.js","sources":["../../../../src/formats/png/CjsPngFormat.js"],"sourcesContent":["import {\n DEFAULT_VALUES,\n OUTPUT_IMAGE,\n OUTPUT_JSON,\n OUTPUT_RAW,\n OUTPUT_RGBA,\n inspectWithValues,\n isPNG,\n isSupportedWithValues,\n normalizeValues,\n readWithValues,\n readWithValuesAsync,\n toBytes,\n toJsonValue\n} from \"./core/helpers.js\";\n\nconst FORMAT_NAME = \"CjsPngFormat\";\n\nexport class CjsPngFormat\n{\n #values = DEFAULT_VALUES;\n\n /**\n * Create a reusable PNG format profile.\n *\n * @param {object} [options] Default read/inspect options.\n */\n constructor(options = {})\n {\n this.SetValues(options);\n }\n\n /**\n * Merge options into this profile.\n *\n * @param {object} [options] Values to merge.\n * @returns {CjsPngFormat} This format profile.\n */\n SetValues(options = {})\n {\n this.#values = normalizeValues(this.#values, { inputType: \"png\", ...options }, FORMAT_NAME);\n return this;\n }\n\n /**\n * Get normalized profile values with optional per-call overrides.\n *\n * @param {object} [options] Per-call values.\n * @returns {object} Normalized read values.\n */\n GetValues(options = {})\n {\n return normalizeValues(this.#values, { inputType: \"png\", ...options }, FORMAT_NAME);\n }\n\n /**\n * Read PNG bytes with this profile.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input PNG bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} GPU-free raw/debug payload for the selected emit target.\n */\n Read(input, options = {})\n {\n return readWithValues(input, this.GetValues(options), \"png\");\n }\n\n /**\n * Read PNG bytes asynchronously with this profile.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input PNG bytes.\n * @param {object} [options] Per-call values.\n * @returns {Promise<object>} GPU-free raw/debug payload for the selected emit target.\n */\n async ReadAsync(input, options = {})\n {\n return readWithValuesAsync(input, this.GetValues(options), \"png\");\n }\n\n /**\n * Inspect PNG bytes without decoding image data.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input PNG bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} PNG header metadata.\n */\n Inspect(input, options = {})\n {\n return inspectWithValues(input, this.GetValues(options), \"png\");\n }\n\n /**\n * Report whether PNG input and requested output variants are supported.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input PNG bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} Support/probe report.\n */\n IsSupported(input, options = {})\n {\n return isSupportedWithValues(input, this.GetValues(options), \"png\");\n }\n\n /**\n * Convert format output into JSON-compatible debug data.\n *\n * @param {any} value Format output.\n * @returns {any} JSON-compatible value.\n */\n ToJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * One-shot PNG read.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input PNG bytes.\n * @param {object} [options] Read options.\n * @returns {object} GPU-free raw/debug payload for the selected emit target.\n */\n static read(input, options = {})\n {\n return readWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"png\", ...options }, FORMAT_NAME), \"png\");\n }\n\n /**\n * One-shot asynchronous PNG read.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input PNG bytes.\n * @param {object} [options] Read options.\n * @returns {Promise<object>} GPU-free raw/debug payload for the selected emit target.\n */\n static async readAsync(input, options = {})\n {\n return readWithValuesAsync(input, normalizeValues(DEFAULT_VALUES, { inputType: \"png\", ...options }, FORMAT_NAME), \"png\");\n }\n\n /**\n * One-shot PNG inspection.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input PNG bytes.\n * @param {object} [options] Inspect options.\n * @returns {object} PNG header metadata.\n */\n static inspect(input, options = {})\n {\n return inspectWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"png\", ...options }, FORMAT_NAME), \"png\");\n }\n\n /**\n * One-shot PNG support probe.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input PNG bytes.\n * @param {object} [options] Probe options.\n * @returns {object} Support/probe report.\n */\n static isSupported(input, options = {})\n {\n return isSupportedWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"png\", ...options }, FORMAT_NAME), \"png\");\n }\n\n /**\n * Convert format output into JSON-compatible debug data.\n *\n * @param {any} value Format output.\n * @returns {any} JSON-compatible value.\n */\n static toJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * Test whether bytes look like a PNG file.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Candidate PNG bytes.\n * @returns {boolean} True when the PNG signature is present.\n */\n static isPNG(input)\n {\n try\n {\n return isPNG(toBytes(input));\n }\n catch\n {\n return false;\n }\n }\n\n /**\n * Emit targets for this format (canonical frozen enum).\n */\n static Output = Object.freeze({\n IMAGE: OUTPUT_IMAGE,\n RGBA: OUTPUT_RGBA,\n RAW: OUTPUT_RAW,\n JSON: OUTPUT_JSON\n });\n static OUTPUT_PNG_JSON = \"pngJson\";\n static type = Object.freeze([ \"image\" ]);\n static mediaTypes = Object.freeze([ \"image\" ]);\n static inputTypes = Object.freeze([ \"png\" ]);\n static outputTypes = Object.freeze([ OUTPUT_IMAGE, OUTPUT_RGBA ]);\n static debugOutputTypes = Object.freeze([ \"pngJson\", OUTPUT_RAW ]);\n}\n\nexport default CjsPngFormat;\n"],"names":["FORMAT_NAME","CjsPngFormat","DEFAULT_VALUES","constructor","options","SetValues","normalizeValues","inputType","GetValues","Read","input","readWithValues","ReadAsync","readWithValuesAsync","Inspect","inspectWithValues","IsSupported","isSupportedWithValues","ToJSON","value","toJsonValue","read","readAsync","inspect","isSupported","toJSON","isPNG","toBytes","Output","Object","freeze","IMAGE","OUTPUT_IMAGE","RGBA","OUTPUT_RGBA","RAW","OUTPUT_RAW","JSON","OUTPUT_JSON","OUTPUT_PNG_JSON","type","mediaTypes","inputTypes","outputTypes","debugOutputTypes"],"mappings":"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"}
1
+ {"version":3,"file":"CjsPngFormat.js","sources":["../../../../src/formats/png/CjsPngFormat.js"],"sourcesContent":["import {\n DEFAULT_VALUES,\n OUTPUT_IMAGE,\n OUTPUT_JSON,\n OUTPUT_RAW,\n OUTPUT_RGBA,\n inspectWithValues,\n isPNG,\n isSupportedWithValues,\n normalizeValues,\n readWithValues,\n readWithValuesAsync,\n toBytes,\n toJsonValue\n} from \"./core/helpers.js\";\n\nconst FORMAT_NAME = \"CjsPngFormat\";\n\n/**\n * PNG format profile that synchronously inspects chunk and header metadata\n * and emits raw bytes or debug JSON, with RGBA decoding available on the\n * asynchronous read path.\n */\nexport class CjsPngFormat\n{\n #values = DEFAULT_VALUES;\n\n /**\n * Create a reusable PNG format profile.\n *\n * @param {object} [options] Default read/inspect options.\n */\n constructor(options = {})\n {\n this.SetValues(options);\n }\n\n /**\n * Merge options into this profile.\n *\n * @param {object} [options] Values to merge.\n * @returns {CjsPngFormat} This format profile.\n */\n SetValues(options = {})\n {\n this.#values = normalizeValues(this.#values, { inputType: \"png\", ...options }, FORMAT_NAME);\n return this;\n }\n\n /**\n * Get normalized profile values with optional per-call overrides.\n *\n * @param {object} [options] Per-call values.\n * @returns {object} Normalized read values.\n */\n GetValues(options = {})\n {\n return normalizeValues(this.#values, { inputType: \"png\", ...options }, FORMAT_NAME);\n }\n\n /**\n * Read PNG bytes with this profile.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input PNG bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} GPU-free raw/debug payload for the selected emit target.\n */\n Read(input, options = {})\n {\n return readWithValues(input, this.GetValues(options), \"png\");\n }\n\n /**\n * Read PNG bytes asynchronously with this profile.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input PNG bytes.\n * @param {object} [options] Per-call values.\n * @returns {Promise<object>} GPU-free raw/debug payload for the selected emit target.\n */\n async ReadAsync(input, options = {})\n {\n return readWithValuesAsync(input, this.GetValues(options), \"png\");\n }\n\n /**\n * Inspect PNG bytes without decoding image data.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input PNG bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} PNG header metadata.\n */\n Inspect(input, options = {})\n {\n return inspectWithValues(input, this.GetValues(options), \"png\");\n }\n\n /**\n * Report whether PNG input and requested output variants are supported.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input PNG bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} Support/probe report.\n */\n IsSupported(input, options = {})\n {\n return isSupportedWithValues(input, this.GetValues(options), \"png\");\n }\n\n /**\n * Convert format output into JSON-compatible debug data.\n *\n * @param {any} value Format output.\n * @returns {any} JSON-compatible value.\n */\n ToJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * One-shot PNG read.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input PNG bytes.\n * @param {object} [options] Read options.\n * @returns {object} GPU-free raw/debug payload for the selected emit target.\n */\n static read(input, options = {})\n {\n return readWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"png\", ...options }, FORMAT_NAME), \"png\");\n }\n\n /**\n * One-shot asynchronous PNG read.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input PNG bytes.\n * @param {object} [options] Read options.\n * @returns {Promise<object>} GPU-free raw/debug payload for the selected emit target.\n */\n static async readAsync(input, options = {})\n {\n return readWithValuesAsync(input, normalizeValues(DEFAULT_VALUES, { inputType: \"png\", ...options }, FORMAT_NAME), \"png\");\n }\n\n /**\n * One-shot PNG inspection.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input PNG bytes.\n * @param {object} [options] Inspect options.\n * @returns {object} PNG header metadata.\n */\n static inspect(input, options = {})\n {\n return inspectWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"png\", ...options }, FORMAT_NAME), \"png\");\n }\n\n /**\n * One-shot PNG support probe.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input PNG bytes.\n * @param {object} [options] Probe options.\n * @returns {object} Support/probe report.\n */\n static isSupported(input, options = {})\n {\n return isSupportedWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"png\", ...options }, FORMAT_NAME), \"png\");\n }\n\n /**\n * Convert format output into JSON-compatible debug data.\n *\n * @param {any} value Format output.\n * @returns {any} JSON-compatible value.\n */\n static toJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * Test whether bytes look like a PNG file.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Candidate PNG bytes.\n * @returns {boolean} True when the PNG signature is present.\n */\n static isPNG(input)\n {\n try\n {\n return isPNG(toBytes(input));\n }\n catch\n {\n return false;\n }\n }\n\n /**\n * Emit targets for this format (canonical frozen enum).\n */\n static Output = Object.freeze({\n IMAGE: OUTPUT_IMAGE,\n RGBA: OUTPUT_RGBA,\n RAW: OUTPUT_RAW,\n JSON: OUTPUT_JSON\n });\n static OUTPUT_PNG_JSON = \"pngJson\";\n static type = Object.freeze([ \"image\" ]);\n static mediaTypes = Object.freeze([ \"image\" ]);\n static inputTypes = Object.freeze([ \"png\" ]);\n static outputTypes = Object.freeze([ OUTPUT_IMAGE, OUTPUT_RGBA ]);\n static debugOutputTypes = Object.freeze([ \"pngJson\", OUTPUT_RAW ]);\n}\n\nexport default CjsPngFormat;\n"],"names":["FORMAT_NAME","CjsPngFormat","DEFAULT_VALUES","constructor","options","SetValues","normalizeValues","inputType","GetValues","Read","input","readWithValues","ReadAsync","readWithValuesAsync","Inspect","inspectWithValues","IsSupported","isSupportedWithValues","ToJSON","value","toJsonValue","read","readAsync","inspect","isSupported","toJSON","isPNG","toBytes","Output","Object","freeze","IMAGE","OUTPUT_IMAGE","RGBA","OUTPUT_RGBA","RAW","OUTPUT_RAW","JSON","OUTPUT_JSON","OUTPUT_PNG_JSON","type","mediaTypes","inputTypes","outputTypes","debugOutputTypes"],"mappings":"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"}
@@ -10,7 +10,7 @@ const FORMAT_NAME = "CjsRedFormat";
10
10
  *
11
11
  * Reads Red data - a type-discriminated, self-referential YAML object graph -
12
12
  * and emits a compact public payload by default, a neutral raw graph, or
13
- * caller-supplied runtime classes through the core-types hydration adapter.
13
+ * caller-supplied runtime classes through the runtime-utils hydration adapter.
14
14
  * With payload IDs enabled, repeated sequences and typed tables use an
15
15
  * ID-bearing object around a configurable `payloadValuesField` (default
16
16
  * `_values`); unique sequences remain arrays. Active payload marker names must