@carbonenginejs/runtime-resource 0.9.2 → 0.11.0

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 (544) hide show
  1. package/NOTICE +3 -2
  2. package/README.md +47 -6
  3. package/dist/CjsMotherLode.js +88 -88
  4. package/dist/CjsMotherLode.js.map +1 -1
  5. package/dist/CjsResMan.js +717 -228
  6. package/dist/CjsResMan.js.map +1 -1
  7. package/dist/CjsResManFetchProvider.js +94 -0
  8. package/dist/CjsResManFetchProvider.js.map +1 -0
  9. package/dist/{CjsResManQueue.js → CjsResManWorkQueue.js} +112 -25
  10. package/dist/CjsResManWorkQueue.js.map +1 -0
  11. package/dist/format/CjsBlueReader.js +89 -0
  12. package/dist/format/CjsBlueReader.js.map +1 -1
  13. package/dist/format/CjsFormat.js +42 -16
  14. package/dist/format/CjsFormat.js.map +1 -1
  15. package/dist/format/CjsReader.js +4 -0
  16. package/dist/format/CjsReader.js.map +1 -1
  17. package/dist/format/CjsResourceProbe.js +2 -0
  18. package/dist/format/CjsResourceProbe.js.map +1 -1
  19. package/dist/format/effect/effectPermutationGraph.js +257 -0
  20. package/dist/format/effect/effectPermutationGraph.js.map +1 -0
  21. package/dist/format/effect/effectReflectionPackage.js +636 -0
  22. package/dist/format/effect/effectReflectionPackage.js.map +1 -0
  23. package/dist/format/effect/sha256.js +114 -0
  24. package/dist/format/effect/sha256.js.map +1 -0
  25. package/dist/format/payloadContract.js +20 -0
  26. package/dist/format/payloadContract.js.map +1 -1
  27. package/dist/formats/black/CjsBlackFormat.js +15 -1
  28. package/dist/formats/black/CjsBlackFormat.js.map +1 -1
  29. package/dist/formats/black/core/CjsBlackBinaryReader.js +103 -0
  30. package/dist/formats/black/core/CjsBlackBinaryReader.js.map +1 -1
  31. package/dist/formats/black/core/CjsBlackPropertyReaders.js +61 -0
  32. package/dist/formats/black/core/CjsBlackPropertyReaders.js.map +1 -1
  33. package/dist/formats/black/core/CjsBlackReader.js +125 -0
  34. package/dist/formats/black/core/CjsBlackReader.js.map +1 -1
  35. package/dist/formats/black/core/CjsBlackSchemaRegistry.js +103 -0
  36. package/dist/formats/black/core/CjsBlackSchemaRegistry.js.map +1 -1
  37. package/dist/formats/black/core/helpers.js +17 -0
  38. package/dist/formats/black/core/helpers.js.map +1 -1
  39. package/dist/formats/bnk/CjsBnkFormat.js +8 -0
  40. package/dist/formats/bnk/CjsBnkFormat.js.map +1 -1
  41. package/dist/formats/bnk/core/helpers.js +20 -0
  42. package/dist/formats/bnk/core/helpers.js.map +1 -1
  43. package/dist/formats/bnk/core/musicNodes.js +40 -3
  44. package/dist/formats/bnk/core/musicNodes.js.map +1 -1
  45. package/dist/formats/bnk/core/soundbanksInfo.js +2 -0
  46. package/dist/formats/bnk/core/soundbanksInfo.js.map +1 -1
  47. package/dist/formats/cmf/core/binary.js +71 -0
  48. package/dist/formats/cmf/core/binary.js.map +1 -1
  49. package/dist/formats/cmf/core/buffers.js +4 -0
  50. package/dist/formats/cmf/core/buffers.js.map +1 -1
  51. package/dist/formats/cmf/core/helpers.js +31 -0
  52. package/dist/formats/cmf/core/helpers.js.map +1 -1
  53. package/dist/formats/cmf/core/schema.js +10 -0
  54. package/dist/formats/cmf/core/schema.js.map +1 -1
  55. package/dist/formats/cmf/core/shared.js +9 -0
  56. package/dist/formats/cmf/core/shared.js.map +1 -1
  57. package/dist/formats/cmf/core/writer.js +54 -0
  58. package/dist/formats/cmf/core/writer.js.map +1 -1
  59. package/dist/formats/dds/core/bc6h.js +10 -0
  60. package/dist/formats/dds/core/bc6h.js.map +1 -1
  61. package/dist/formats/dds/core/bc7.js +16 -0
  62. package/dist/formats/dds/core/bc7.js.map +1 -1
  63. package/dist/formats/dds/core/helpers.js +47 -0
  64. package/dist/formats/dds/core/helpers.js.map +1 -1
  65. package/dist/formats/dxbc/CjsDxbcFormat.js +142 -0
  66. package/dist/formats/dxbc/CjsDxbcFormat.js.map +1 -0
  67. package/dist/formats/dxbc/core/DxbcReader.js +266 -0
  68. package/dist/formats/dxbc/core/DxbcReader.js.map +1 -0
  69. package/dist/formats/dxbc/core/container.js +169 -0
  70. package/dist/formats/dxbc/core/container.js.map +1 -0
  71. package/dist/formats/dxbc/core/decoder.js +789 -0
  72. package/dist/formats/dxbc/core/decoder.js.map +1 -0
  73. package/dist/formats/dxbc/core/errors.js +19 -0
  74. package/dist/formats/dxbc/core/errors.js.map +1 -0
  75. package/dist/formats/dxbc/core/helpers.js +220 -0
  76. package/dist/formats/dxbc/core/helpers.js.map +1 -0
  77. package/dist/formats/dxbc/core/opcodes.js +45 -0
  78. package/dist/formats/dxbc/core/opcodes.js.map +1 -0
  79. package/dist/formats/dxbc/core/program.js +91 -0
  80. package/dist/formats/dxbc/core/program.js.map +1 -0
  81. package/dist/formats/dxbc/core/signature.js +172 -0
  82. package/dist/formats/dxbc/core/signature.js.map +1 -0
  83. package/dist/formats/dxbc/index.js +2 -0
  84. package/dist/formats/dxbc/index.js.map +1 -0
  85. package/dist/formats/fbx/core/helpers.js +21 -0
  86. package/dist/formats/fbx/core/helpers.js.map +1 -1
  87. package/dist/formats/flac/CjsFlacFormat.js +49 -0
  88. package/dist/formats/flac/CjsFlacFormat.js.map +1 -1
  89. package/dist/formats/flac/core/helpers.js +20 -0
  90. package/dist/formats/flac/core/helpers.js.map +1 -1
  91. package/dist/formats/gif/CjsGifFormat.js +49 -0
  92. package/dist/formats/gif/CjsGifFormat.js.map +1 -1
  93. package/dist/formats/gif/core/helpers.js +20 -0
  94. package/dist/formats/gif/core/helpers.js.map +1 -1
  95. package/dist/formats/gltf/core/helpers.js +15 -0
  96. package/dist/formats/gltf/core/helpers.js.map +1 -1
  97. package/dist/formats/gltf/core/parser.js +13 -0
  98. package/dist/formats/gltf/core/parser.js.map +1 -1
  99. package/dist/formats/gltf/core/targets.js +10 -0
  100. package/dist/formats/gltf/core/targets.js.map +1 -1
  101. package/dist/formats/gr2/core/bitknit2.js +2 -0
  102. package/dist/formats/gr2/core/bitknit2.js.map +1 -1
  103. package/dist/formats/gr2/core/helpers.js +20 -0
  104. package/dist/formats/gr2/core/helpers.js.map +1 -1
  105. package/dist/formats/gr2/core/targets.js +10 -0
  106. package/dist/formats/gr2/core/targets.js.map +1 -1
  107. package/dist/formats/hlsl/CjsHlslFormat.js +254 -0
  108. package/dist/formats/hlsl/CjsHlslFormat.js.map +1 -0
  109. package/dist/formats/hlsl/core/HlslBinaryUtils.js +15 -0
  110. package/dist/formats/hlsl/core/HlslBinaryUtils.js.map +1 -0
  111. package/dist/formats/hlsl/core/HlslEffectReadError.js +19 -0
  112. package/dist/formats/hlsl/core/HlslEffectReadError.js.map +1 -0
  113. package/dist/formats/hlsl/core/HlslEffectStateManager.js +130 -0
  114. package/dist/formats/hlsl/core/HlslEffectStateManager.js.map +1 -0
  115. package/dist/formats/hlsl/core/HlslReader.js +266 -0
  116. package/dist/formats/hlsl/core/HlslReader.js.map +1 -0
  117. package/dist/formats/hlsl/core/HlslRenderStateSetup.js +37 -0
  118. package/dist/formats/hlsl/core/HlslRenderStateSetup.js.map +1 -0
  119. package/dist/formats/hlsl/core/HlslResourceSetDescription.js +94 -0
  120. package/dist/formats/hlsl/core/HlslResourceSetDescription.js.map +1 -0
  121. package/dist/formats/hlsl/core/HlslShaderBytecode.js +44 -0
  122. package/dist/formats/hlsl/core/HlslShaderBytecode.js.map +1 -0
  123. package/dist/formats/hlsl/core/analysis.js +51 -0
  124. package/dist/formats/hlsl/core/analysis.js.map +1 -0
  125. package/dist/formats/hlsl/core/helpers.js +270 -0
  126. package/dist/formats/hlsl/core/helpers.js.map +1 -0
  127. package/dist/formats/hlsl/core/json.js +284 -0
  128. package/dist/formats/hlsl/core/json.js.map +1 -0
  129. package/dist/formats/hlsl/core/metadata.js +327 -0
  130. package/dist/formats/hlsl/core/metadata.js.map +1 -0
  131. package/dist/formats/hlsl/core/portableReflection.js +848 -0
  132. package/dist/formats/hlsl/core/portableReflection.js.map +1 -0
  133. package/dist/formats/hlsl/core/render-states.js +280 -0
  134. package/dist/formats/hlsl/core/render-states.js.map +1 -0
  135. package/dist/formats/hlsl/core/tr2/HlslRenderContextEnum.js +43 -0
  136. package/dist/formats/hlsl/core/tr2/HlslRenderContextEnum.js.map +1 -0
  137. package/dist/formats/hlsl/core/tr2/resources/HlslEffectRes.js +294 -0
  138. package/dist/formats/hlsl/core/tr2/resources/HlslEffectRes.js.map +1 -0
  139. package/dist/formats/hlsl/core/tr2/resources/HlslShaderPermutation.js +33 -0
  140. package/dist/formats/hlsl/core/tr2/resources/HlslShaderPermutation.js.map +1 -0
  141. package/dist/formats/hlsl/core/tr2/shader/HlslEffectBindingManifest.js +416 -0
  142. package/dist/formats/hlsl/core/tr2/shader/HlslEffectBindingManifest.js.map +1 -0
  143. package/dist/formats/hlsl/core/tr2/shader/HlslEffectConstant.js +40 -0
  144. package/dist/formats/hlsl/core/tr2/shader/HlslEffectConstant.js.map +1 -0
  145. package/dist/formats/hlsl/core/tr2/shader/HlslEffectDescription.js +742 -0
  146. package/dist/formats/hlsl/core/tr2/shader/HlslEffectDescription.js.map +1 -0
  147. package/dist/formats/hlsl/core/tr2/shader/HlslEffectLibrary.js +52 -0
  148. package/dist/formats/hlsl/core/tr2/shader/HlslEffectLibrary.js.map +1 -0
  149. package/dist/formats/hlsl/core/tr2/shader/HlslEffectParameterAnnotation.js +38 -0
  150. package/dist/formats/hlsl/core/tr2/shader/HlslEffectParameterAnnotation.js.map +1 -0
  151. package/dist/formats/hlsl/core/tr2/shader/HlslEffectResource.js +50 -0
  152. package/dist/formats/hlsl/core/tr2/shader/HlslEffectResource.js.map +1 -0
  153. package/dist/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js +86 -0
  154. package/dist/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js.map +1 -0
  155. package/dist/formats/hlsl/core/tr2/shader/HlslEffectTechnique.js +31 -0
  156. package/dist/formats/hlsl/core/tr2/shader/HlslEffectTechnique.js.map +1 -0
  157. package/dist/formats/hlsl/core/tr2/shader/HlslPass.js +42 -0
  158. package/dist/formats/hlsl/core/tr2/shader/HlslPass.js.map +1 -0
  159. package/dist/formats/hlsl/core/tr2/shader/HlslSamplerDescription.js +55 -0
  160. package/dist/formats/hlsl/core/tr2/shader/HlslSamplerDescription.js.map +1 -0
  161. package/dist/formats/hlsl/core/tr2/shader/HlslSamplerSetup.js +29 -0
  162. package/dist/formats/hlsl/core/tr2/shader/HlslSamplerSetup.js.map +1 -0
  163. package/dist/formats/hlsl/core/tr2/shader/HlslShader.js +220 -0
  164. package/dist/formats/hlsl/core/tr2/shader/HlslShader.js.map +1 -0
  165. package/dist/formats/hlsl/core/tr2/shader/HlslShaderOption.js +30 -0
  166. package/dist/formats/hlsl/core/tr2/shader/HlslShaderOption.js.map +1 -0
  167. package/dist/formats/hlsl/index.js +2 -0
  168. package/dist/formats/hlsl/index.js.map +1 -0
  169. package/dist/formats/hlsl/portable.js +2 -0
  170. package/dist/formats/hlsl/portable.js.map +1 -0
  171. package/dist/formats/index.js +4 -0
  172. package/dist/formats/index.js.map +1 -1
  173. package/dist/formats/jpeg/core/helpers.js +52 -0
  174. package/dist/formats/jpeg/core/helpers.js.map +1 -1
  175. package/dist/formats/jpeg/core/jpeg.js +93 -0
  176. package/dist/formats/jpeg/core/jpeg.js.map +1 -1
  177. package/dist/formats/mp3/core/helpers.js +37 -0
  178. package/dist/formats/mp3/core/helpers.js.map +1 -1
  179. package/dist/formats/mp4/core/helpers.js +35 -0
  180. package/dist/formats/mp4/core/helpers.js.map +1 -1
  181. package/dist/formats/ogg/CjsOggFormat.js +49 -0
  182. package/dist/formats/ogg/CjsOggFormat.js.map +1 -1
  183. package/dist/formats/ogg/core/helpers.js +23 -0
  184. package/dist/formats/ogg/core/helpers.js.map +1 -1
  185. package/dist/formats/ogg/core/vorbis.js +13 -0
  186. package/dist/formats/ogg/core/vorbis.js.map +1 -1
  187. package/dist/formats/png/core/helpers.js +52 -0
  188. package/dist/formats/png/core/helpers.js.map +1 -1
  189. package/dist/formats/red/CjsRedFormat.js +2 -0
  190. package/dist/formats/red/CjsRedFormat.js.map +1 -1
  191. package/dist/formats/red/core/CjsRedReader.js +52 -0
  192. package/dist/formats/red/core/CjsRedReader.js.map +1 -1
  193. package/dist/formats/red/core/helpers.js +19 -0
  194. package/dist/formats/red/core/helpers.js.map +1 -1
  195. package/dist/formats/stl/core/stl.js +8 -0
  196. package/dist/formats/stl/core/stl.js.map +1 -1
  197. package/dist/formats/stl/core/targets.js +10 -0
  198. package/dist/formats/stl/core/targets.js.map +1 -1
  199. package/dist/formats/tga/core/helpers.js +47 -0
  200. package/dist/formats/tga/core/helpers.js.map +1 -1
  201. package/dist/formats/wav/core/helpers.js +37 -0
  202. package/dist/formats/wav/core/helpers.js.map +1 -1
  203. package/dist/formats/webgl/CjsWebglFormat.js +221 -0
  204. package/dist/formats/webgl/CjsWebglFormat.js.map +1 -0
  205. package/dist/formats/webgl/core/cewg/CewgPackage.js +339 -0
  206. package/dist/formats/webgl/core/cewg/CewgPackage.js.map +1 -0
  207. package/dist/formats/webgl/core/cewg/CewgPackageBuilder.js +104 -0
  208. package/dist/formats/webgl/core/cewg/CewgPackageBuilder.js.map +1 -0
  209. package/dist/formats/webgl/core/cewg/binary.js +101 -0
  210. package/dist/formats/webgl/core/cewg/binary.js.map +1 -0
  211. package/dist/formats/webgl/core/cewgCompleteness.js +81 -0
  212. package/dist/formats/webgl/core/cewgCompleteness.js.map +1 -0
  213. package/dist/formats/webgl/core/effectPackage.js +789 -0
  214. package/dist/formats/webgl/core/effectPackage.js.map +1 -0
  215. package/dist/formats/webgl/core/effectPackageValidation.js +331 -0
  216. package/dist/formats/webgl/core/effectPackageValidation.js.map +1 -0
  217. package/dist/formats/webgl/core/errors.js +27 -0
  218. package/dist/formats/webgl/core/errors.js.map +1 -0
  219. package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js +2678 -0
  220. package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -0
  221. package/dist/formats/webgl/core/glsl/DxbcGlslHelpers.js +89 -0
  222. package/dist/formats/webgl/core/glsl/DxbcGlslHelpers.js.map +1 -0
  223. package/dist/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js +428 -0
  224. package/dist/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js.map +1 -0
  225. package/dist/formats/webgl/core/helpers.js +306 -0
  226. package/dist/formats/webgl/core/helpers.js.map +1 -0
  227. package/dist/formats/webgl/index.js +2 -0
  228. package/dist/formats/webgl/index.js.map +1 -0
  229. package/dist/formats/webgpu/CjsWebgpuFormat.js +376 -0
  230. package/dist/formats/webgpu/CjsWebgpuFormat.js.map +1 -0
  231. package/dist/formats/webgpu/core/cewgpu/CewgpuPackage.js +415 -0
  232. package/dist/formats/webgpu/core/cewgpu/CewgpuPackage.js.map +1 -0
  233. package/dist/formats/webgpu/core/cewgpu/CewgpuPackageBuilder.js +100 -0
  234. package/dist/formats/webgpu/core/cewgpu/CewgpuPackageBuilder.js.map +1 -0
  235. package/dist/formats/webgpu/core/cewgpu/binary.js +93 -0
  236. package/dist/formats/webgpu/core/cewgpu/binary.js.map +1 -0
  237. package/dist/formats/webgpu/core/cewgpu/tags.js +17 -0
  238. package/dist/formats/webgpu/core/cewgpu/tags.js.map +1 -0
  239. package/dist/formats/webgpu/core/effectAnalysis.js +82 -0
  240. package/dist/formats/webgpu/core/effectAnalysis.js.map +1 -0
  241. package/dist/formats/webgpu/core/effectBackendBodySet.js +305 -0
  242. package/dist/formats/webgpu/core/effectBackendBodySet.js.map +1 -0
  243. package/dist/formats/webgpu/core/effectPackageValidation.js +1078 -0
  244. package/dist/formats/webgpu/core/effectPackageValidation.js.map +1 -0
  245. package/dist/formats/webgpu/core/errors.js +20 -0
  246. package/dist/formats/webgpu/core/errors.js.map +1 -0
  247. package/dist/formats/webgpu/core/helpers.js +448 -0
  248. package/dist/formats/webgpu/core/helpers.js.map +1 -0
  249. package/dist/formats/webgpu/core/ir/analyzeRegisterValues.js +223 -0
  250. package/dist/formats/webgpu/core/ir/analyzeRegisterValues.js.map +1 -0
  251. package/dist/formats/webgpu/core/ir/buildControlFlow.js +220 -0
  252. package/dist/formats/webgpu/core/ir/buildControlFlow.js.map +1 -0
  253. package/dist/formats/webgpu/core/ir/indexableTemps.js +137 -0
  254. package/dist/formats/webgpu/core/ir/indexableTemps.js.map +1 -0
  255. package/dist/formats/webgpu/core/ir/inferValueTypes.js +454 -0
  256. package/dist/formats/webgpu/core/ir/inferValueTypes.js.map +1 -0
  257. package/dist/formats/webgpu/core/ir/lowerDxbcToIr.js +494 -0
  258. package/dist/formats/webgpu/core/ir/lowerDxbcToIr.js.map +1 -0
  259. package/dist/formats/webgpu/core/ir/resolveRegisterFlow.js +177 -0
  260. package/dist/formats/webgpu/core/ir/resolveRegisterFlow.js.map +1 -0
  261. package/dist/formats/webgpu/core/ir/sourceLanes.js +61 -0
  262. package/dist/formats/webgpu/core/ir/sourceLanes.js.map +1 -0
  263. package/dist/formats/webgpu/core/packageEffect.js +300 -0
  264. package/dist/formats/webgpu/core/packageEffect.js.map +1 -0
  265. package/dist/formats/webgpu/core/packageEffectSelection.js +164 -0
  266. package/dist/formats/webgpu/core/packageEffectSelection.js.map +1 -0
  267. package/dist/formats/webgpu/core/packageMetadata.js +8 -0
  268. package/dist/formats/webgpu/core/packageMetadata.js.map +1 -0
  269. package/dist/formats/webgpu/core/schema.js +4 -0
  270. package/dist/formats/webgpu/core/schema.js.map +1 -0
  271. package/dist/formats/webgpu/core/wgsl/buildResourceTransformPlan.js +275 -0
  272. package/dist/formats/webgpu/core/wgsl/buildResourceTransformPlan.js.map +1 -0
  273. package/dist/formats/webgpu/core/wgsl/buildWgslBindingPlan.js +182 -0
  274. package/dist/formats/webgpu/core/wgsl/buildWgslBindingPlan.js.map +1 -0
  275. package/dist/formats/webgpu/core/wgsl/buildWgslSet.js +324 -0
  276. package/dist/formats/webgpu/core/wgsl/buildWgslSet.js.map +1 -0
  277. package/dist/formats/webgpu/core/wgsl/emitWgsl.js +356 -0
  278. package/dist/formats/webgpu/core/wgsl/emitWgsl.js.map +1 -0
  279. package/dist/formats/webgpu/core/wgsl/hoistEscapingValues.js +77 -0
  280. package/dist/formats/webgpu/core/wgsl/hoistEscapingValues.js.map +1 -0
  281. package/dist/formats/webgpu/core/wgsl/lowerBindingLayout.js +451 -0
  282. package/dist/formats/webgpu/core/wgsl/lowerBindingLayout.js.map +1 -0
  283. package/dist/formats/webgpu/core/wgsl/lowerComputeProgram.js +754 -0
  284. package/dist/formats/webgpu/core/wgsl/lowerComputeProgram.js.map +1 -0
  285. package/dist/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js +457 -0
  286. package/dist/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js.map +1 -0
  287. package/dist/formats/webgpu/core/wgsl/lowerFragmentProgram.js +1572 -0
  288. package/dist/formats/webgpu/core/wgsl/lowerFragmentProgram.js.map +1 -0
  289. package/dist/formats/webgpu/core/wgsl/lowerMergeHistogramsComputeProgram.js +659 -0
  290. package/dist/formats/webgpu/core/wgsl/lowerMergeHistogramsComputeProgram.js.map +1 -0
  291. package/dist/formats/webgpu/core/wgsl/lowerParticleClearComputePrograms.js +734 -0
  292. package/dist/formats/webgpu/core/wgsl/lowerParticleClearComputePrograms.js.map +1 -0
  293. package/dist/formats/webgpu/core/wgsl/lowerParticleEmitComputeProgram.js +583 -0
  294. package/dist/formats/webgpu/core/wgsl/lowerParticleEmitComputeProgram.js.map +1 -0
  295. package/dist/formats/webgpu/core/wgsl/lowerSkinVerticesComputeProgram.js +621 -0
  296. package/dist/formats/webgpu/core/wgsl/lowerSkinVerticesComputeProgram.js.map +1 -0
  297. package/dist/formats/webgpu/core/wgsl/lowerSortComputeProgram.js +824 -0
  298. package/dist/formats/webgpu/core/wgsl/lowerSortComputeProgram.js.map +1 -0
  299. package/dist/formats/webgpu/core/wgsl/lowerSortInnerComputeProgram.js +697 -0
  300. package/dist/formats/webgpu/core/wgsl/lowerSortInnerComputeProgram.js.map +1 -0
  301. package/dist/formats/webgpu/core/wgsl/lowerSortStepComputeProgram.js +559 -0
  302. package/dist/formats/webgpu/core/wgsl/lowerSortStepComputeProgram.js.map +1 -0
  303. package/dist/formats/webgpu/core/wgsl/lowerVertexProgram.js +1328 -0
  304. package/dist/formats/webgpu/core/wgsl/lowerVertexProgram.js.map +1 -0
  305. package/dist/formats/webgpu/core/wgsl/particleEmitSemanticDigest.js +110 -0
  306. package/dist/formats/webgpu/core/wgsl/particleEmitSemanticDigest.js.map +1 -0
  307. package/dist/formats/webgpu/core/wgsl/precisionControls.js +55 -0
  308. package/dist/formats/webgpu/core/wgsl/precisionControls.js.map +1 -0
  309. package/dist/formats/webgpu/core/wgsl/selectionPlans.js +758 -0
  310. package/dist/formats/webgpu/core/wgsl/selectionPlans.js.map +1 -0
  311. package/dist/formats/webgpu/core/wgsl/uniformity.js +78 -0
  312. package/dist/formats/webgpu/core/wgsl/uniformity.js.map +1 -0
  313. package/dist/formats/webgpu/core/wgsl/validateExactComputeIr.js +196 -0
  314. package/dist/formats/webgpu/core/wgsl/validateExactComputeIr.js.map +1 -0
  315. package/dist/formats/webgpu/core/wgsl/validateHandleOperand.js +37 -0
  316. package/dist/formats/webgpu/core/wgsl/validateHandleOperand.js.map +1 -0
  317. package/dist/formats/webgpu/index.js +2 -0
  318. package/dist/formats/webgpu/index.js.map +1 -0
  319. package/dist/formats/webm/core/helpers.js +35 -0
  320. package/dist/formats/webm/core/helpers.js.map +1 -1
  321. package/dist/formats/webp/CjsWebpFormat.js +49 -0
  322. package/dist/formats/webp/CjsWebpFormat.js.map +1 -1
  323. package/dist/formats/webp/core/helpers.js +23 -0
  324. package/dist/formats/webp/core/helpers.js.map +1 -1
  325. package/dist/formats/wem/CjsWemFormat.js +8 -0
  326. package/dist/formats/wem/CjsWemFormat.js.map +1 -1
  327. package/dist/formats/wem/core/bitStream.js +2 -0
  328. package/dist/formats/wem/core/bitStream.js.map +1 -1
  329. package/dist/formats/wem/core/helpers.js +20 -0
  330. package/dist/formats/wem/core/helpers.js.map +1 -1
  331. package/dist/formats/yaml/CjsYamlFormat.js +45 -0
  332. package/dist/formats/yaml/CjsYamlFormat.js.map +1 -1
  333. package/dist/formats/yaml/core/CjsYamlReader.js +91 -0
  334. package/dist/formats/yaml/core/CjsYamlReader.js.map +1 -1
  335. package/dist/formats/yaml/core/helpers.js +10 -0
  336. package/dist/formats/yaml/core/helpers.js.map +1 -1
  337. package/dist/index.js +56 -43
  338. package/dist/index.js.map +1 -1
  339. package/dist/{CjsResource.js → resource/CjsResource.js} +232 -17
  340. package/dist/resource/CjsResource.js.map +1 -0
  341. package/dist/{resources → resource}/Tr2LightProfileRes.js +4 -3
  342. package/dist/resource/Tr2LightProfileRes.js.map +1 -0
  343. package/dist/{resources → resource/audio}/AudioGeometryResData.js +1 -1
  344. package/dist/resource/audio/AudioGeometryResData.js.map +1 -0
  345. package/dist/resource/audio/CjsAudioBufferRes.js +86 -0
  346. package/dist/resource/audio/CjsAudioBufferRes.js.map +1 -0
  347. package/dist/resource/audio/CjsAudioRes.js +213 -0
  348. package/dist/resource/audio/CjsAudioRes.js.map +1 -0
  349. package/dist/resource/audio/index.js +4 -0
  350. package/dist/resource/audio/index.js.map +1 -0
  351. package/dist/{resources → resource/geometry}/MeshDecalData.js +1 -1
  352. package/dist/resource/geometry/MeshDecalData.js.map +1 -0
  353. package/dist/{resources → resource/geometry}/MeshDecalLodData.js +1 -1
  354. package/dist/resource/geometry/MeshDecalLodData.js.map +1 -0
  355. package/dist/resource/geometry/TriGeometryRes.js +656 -0
  356. package/dist/resource/geometry/TriGeometryRes.js.map +1 -0
  357. package/dist/{resources → resource/geometry}/TriGeometryResAreaData.js +1 -1
  358. package/dist/resource/geometry/TriGeometryResAreaData.js.map +1 -0
  359. package/dist/{resources → resource/geometry}/TriGeometryResJointData.js +1 -1
  360. package/dist/resource/geometry/TriGeometryResJointData.js.map +1 -0
  361. package/dist/{resources → resource/geometry}/TriGeometryResLodData.js +1 -1
  362. package/dist/resource/geometry/TriGeometryResLodData.js.map +1 -0
  363. package/dist/{resources → resource/geometry}/TriGeometryResMeshData.js +1 -1
  364. package/dist/resource/geometry/TriGeometryResMeshData.js.map +1 -0
  365. package/dist/{resources → resource/geometry}/TriGeometryResSkeletonData.js +1 -1
  366. package/dist/resource/geometry/TriGeometryResSkeletonData.js.map +1 -0
  367. package/dist/{resources → resource/geometry}/TriJointBinding.js +1 -1
  368. package/dist/resource/geometry/TriJointBinding.js.map +1 -0
  369. package/dist/{resources → resource/geometry}/TriMorphTargetGeometryConstants.js +1 -1
  370. package/dist/resource/geometry/TriMorphTargetGeometryConstants.js.map +1 -0
  371. package/dist/{resources → resource/geometry}/TriRtGeometryConstants.js +1 -1
  372. package/dist/resource/geometry/TriRtGeometryConstants.js.map +1 -0
  373. package/dist/{resources → resource/geometry/granny}/GStateBindingCallbackData.js +1 -1
  374. package/dist/resource/geometry/granny/GStateBindingCallbackData.js.map +1 -0
  375. package/dist/{resources → resource/geometry/granny}/Tr2GrannyIntersectionResult.js +1 -1
  376. package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js.map +1 -0
  377. package/dist/{resources → resource/geometry/granny}/Tr2GrannyStateRes.js +6 -5
  378. package/dist/resource/geometry/granny/Tr2GrannyStateRes.js.map +1 -0
  379. package/dist/{resources → resource/geometry/granny}/TriGrannyRes.js +6 -5
  380. package/dist/resource/geometry/granny/TriGrannyRes.js.map +1 -0
  381. package/dist/{resources → resource/geometry/granny}/enums.js +1 -9
  382. package/dist/resource/geometry/granny/enums.js.map +1 -0
  383. package/dist/resource/geometry/granny/index.js +6 -0
  384. package/dist/resource/geometry/granny/index.js.map +1 -0
  385. package/dist/resource/geometry/index.js +17 -0
  386. package/dist/resource/geometry/index.js.map +1 -0
  387. package/dist/resource/index.js +52 -0
  388. package/dist/resource/index.js.map +1 -0
  389. package/dist/resource/resourceBoundary.js +64 -0
  390. package/dist/resource/resourceBoundary.js.map +1 -0
  391. package/dist/resource/shader/Tr2EffectRes.js +429 -0
  392. package/dist/resource/shader/Tr2EffectRes.js.map +1 -0
  393. package/dist/resource/shader/Tr2MaterialArea.js +34 -0
  394. package/dist/resource/shader/Tr2MaterialArea.js.map +1 -0
  395. package/dist/resource/shader/Tr2MaterialMesh.js +30 -0
  396. package/dist/resource/shader/Tr2MaterialMesh.js.map +1 -0
  397. package/dist/resource/shader/Tr2MaterialRes.js +35 -0
  398. package/dist/resource/shader/Tr2MaterialRes.js.map +1 -0
  399. package/dist/resource/shader/Tr2Shader.js +256 -0
  400. package/dist/resource/shader/Tr2Shader.js.map +1 -0
  401. package/dist/resource/shader/Tr2ShaderPermutation.js +47 -0
  402. package/dist/resource/shader/Tr2ShaderPermutation.js.map +1 -0
  403. package/dist/resource/shader/index.js +17 -0
  404. package/dist/resource/shader/index.js.map +1 -0
  405. package/dist/resource/shader/portable.js +33 -0
  406. package/dist/resource/shader/portable.js.map +1 -0
  407. package/dist/resource/shader/reflection/Tr2EffectConstant.js +135 -0
  408. package/dist/resource/shader/reflection/Tr2EffectConstant.js.map +1 -0
  409. package/dist/resource/shader/reflection/Tr2EffectDefine.js +28 -0
  410. package/dist/resource/shader/reflection/Tr2EffectDefine.js.map +1 -0
  411. package/dist/resource/shader/reflection/Tr2EffectDescription.js +107 -0
  412. package/dist/resource/shader/reflection/Tr2EffectDescription.js.map +1 -0
  413. package/dist/resource/shader/reflection/Tr2EffectLibrary.js +145 -0
  414. package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -0
  415. package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +103 -0
  416. package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -0
  417. package/dist/resource/shader/reflection/Tr2EffectResource.js +84 -0
  418. package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -0
  419. package/dist/resource/shader/reflection/Tr2EffectStageInput.js +239 -0
  420. package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -0
  421. package/dist/resource/shader/reflection/Tr2EffectTechnique.js +66 -0
  422. package/dist/resource/shader/reflection/Tr2EffectTechnique.js.map +1 -0
  423. package/dist/resource/shader/reflection/Tr2Pass.js +109 -0
  424. package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -0
  425. package/dist/resource/shader/sampler/Tr2SamplerSetup.js +75 -0
  426. package/dist/resource/shader/sampler/Tr2SamplerSetup.js.map +1 -0
  427. package/dist/{texture → resource/texture}/CjsTextureArrayRes.js +83 -6
  428. package/dist/resource/texture/CjsTextureArrayRes.js.map +1 -0
  429. package/dist/{texture/CjsTextureParameterProxy.js → resource/texture/CjsTextureArrayResParameterProxy.js} +56 -10
  430. package/dist/resource/texture/CjsTextureArrayResParameterProxy.js.map +1 -0
  431. package/dist/{resources → resource/texture}/Tr2ImageRes.js +6 -4
  432. package/dist/resource/texture/Tr2ImageRes.js.map +1 -0
  433. package/dist/{resources → resource/texture}/Tr2TextureLodManager.js +3 -1
  434. package/dist/resource/texture/Tr2TextureLodManager.js.map +1 -0
  435. package/dist/{resources → resource/texture}/Tr2TextureLodUpdateRequest.js +1 -1
  436. package/dist/resource/texture/Tr2TextureLodUpdateRequest.js.map +1 -0
  437. package/dist/{resources → resource/texture}/Tr2TexturePackChannel.js +1 -1
  438. package/dist/resource/texture/Tr2TexturePackChannel.js.map +1 -0
  439. package/dist/{resources → resource/texture}/Tr2TexturePipeline.js +6 -4
  440. package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -0
  441. package/dist/{resources → resource/texture}/Tr2TexturePipelineParams.js +1 -1
  442. package/dist/resource/texture/Tr2TexturePipelineParams.js.map +1 -0
  443. package/dist/{resources → resource/texture}/Tr2TexturePipelineStepCompress.js +1 -1
  444. package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -0
  445. package/dist/{resources → resource/texture}/Tr2TexturePipelineStepGenerateMips.js +1 -1
  446. package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js.map +1 -0
  447. package/dist/{resources → resource/texture}/Tr2TexturePipelineStepLimitSize.js +1 -1
  448. package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -0
  449. package/dist/{resources → resource/texture}/Tr2TexturePipelineStepLoad.js +1 -1
  450. package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -0
  451. package/dist/{resources → resource/texture}/Tr2TexturePipelineStepPack.js +1 -1
  452. package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -0
  453. package/dist/{resources → resource/texture}/TriTextureRes.js +42 -26
  454. package/dist/resource/texture/TriTextureRes.js.map +1 -0
  455. package/dist/resource/texture/index.js +15 -0
  456. package/dist/resource/texture/index.js.map +1 -0
  457. package/dist/{resources → resource/texture}/texturePipelineBehavior.js +59 -59
  458. package/dist/resource/texture/texturePipelineBehavior.js.map +1 -0
  459. package/dist/worker/CjsResManMainThreadLoader.js +87 -0
  460. package/dist/worker/CjsResManMainThreadLoader.js.map +1 -0
  461. package/dist/worker/CjsResManWorker.js +217 -0
  462. package/dist/worker/CjsResManWorker.js.map +1 -0
  463. package/dist/worker/CjsResManWorkerLoader.js +434 -0
  464. package/dist/worker/CjsResManWorkerLoader.js.map +1 -0
  465. package/dist/worker/protocol.js +12 -0
  466. package/dist/worker/protocol.js.map +1 -0
  467. package/docs/README.md +16 -3
  468. package/docs/architecture.md +39 -16
  469. package/docs/concepts/resource-lifecycle.md +2 -1
  470. package/docs/formats/README.md +8 -0
  471. package/docs/formats/provenance.md +11 -3
  472. package/docs/reference/classes/README.md +6 -4
  473. package/docs/reference/classes/audio.md +30 -0
  474. package/docs/reference/classes/core.md +31 -11
  475. package/docs/reference/classes/formats.md +440 -0
  476. package/docs/reference/classes/resources.md +151 -41
  477. package/docs/reference/classes/texture.md +7 -7
  478. package/docs/reference/motherlode-cache.md +17 -0
  479. package/docs/reference/queues.md +9 -1
  480. package/docs/reference/workers.md +135 -0
  481. package/docs/roadmap.md +27 -1
  482. package/format-notices/dxbc/LICENSE +21 -0
  483. package/format-notices/dxbc/NOTICE +20 -0
  484. package/format-notices/hlsl/LICENSE +21 -0
  485. package/format-notices/hlsl/NOTICE +25 -0
  486. package/format-notices/webgl/LICENSE +21 -0
  487. package/format-notices/webgl/NOTICE +35 -0
  488. package/format-notices/webgpu/LICENSE +21 -0
  489. package/format-notices/webgpu/NOTICE +31 -0
  490. package/package.json +13 -1
  491. package/dist/CjsResManQueue.js.map +0 -1
  492. package/dist/CjsResource.js.map +0 -1
  493. package/dist/CjsResourceSource.js +0 -68
  494. package/dist/CjsResourceSource.js.map +0 -1
  495. package/dist/resourcePath.js +0 -18
  496. package/dist/resourcePath.js.map +0 -1
  497. package/dist/resourceStates.js +0 -9
  498. package/dist/resourceStates.js.map +0 -1
  499. package/dist/resources/AudioGeometryResData.js.map +0 -1
  500. package/dist/resources/GStateBindingCallbackData.js.map +0 -1
  501. package/dist/resources/MeshDecalData.js.map +0 -1
  502. package/dist/resources/MeshDecalLodData.js.map +0 -1
  503. package/dist/resources/Tr2EffectRes.js +0 -71
  504. package/dist/resources/Tr2EffectRes.js.map +0 -1
  505. package/dist/resources/Tr2GrannyIntersectionResult.js.map +0 -1
  506. package/dist/resources/Tr2GrannyStateRes.js.map +0 -1
  507. package/dist/resources/Tr2ImageRes.js.map +0 -1
  508. package/dist/resources/Tr2LightProfileRes.js.map +0 -1
  509. package/dist/resources/Tr2MaterialArea.js +0 -34
  510. package/dist/resources/Tr2MaterialArea.js.map +0 -1
  511. package/dist/resources/Tr2MaterialMesh.js +0 -31
  512. package/dist/resources/Tr2MaterialMesh.js.map +0 -1
  513. package/dist/resources/Tr2MaterialRes.js +0 -34
  514. package/dist/resources/Tr2MaterialRes.js.map +0 -1
  515. package/dist/resources/Tr2ShaderPermutation.js +0 -43
  516. package/dist/resources/Tr2ShaderPermutation.js.map +0 -1
  517. package/dist/resources/Tr2TextureLodManager.js.map +0 -1
  518. package/dist/resources/Tr2TextureLodUpdateRequest.js.map +0 -1
  519. package/dist/resources/Tr2TexturePackChannel.js.map +0 -1
  520. package/dist/resources/Tr2TexturePipeline.js.map +0 -1
  521. package/dist/resources/Tr2TexturePipelineParams.js.map +0 -1
  522. package/dist/resources/Tr2TexturePipelineStepCompress.js.map +0 -1
  523. package/dist/resources/Tr2TexturePipelineStepGenerateMips.js.map +0 -1
  524. package/dist/resources/Tr2TexturePipelineStepLimitSize.js.map +0 -1
  525. package/dist/resources/Tr2TexturePipelineStepLoad.js.map +0 -1
  526. package/dist/resources/Tr2TexturePipelineStepPack.js.map +0 -1
  527. package/dist/resources/TriGeometryRes.js +0 -239
  528. package/dist/resources/TriGeometryRes.js.map +0 -1
  529. package/dist/resources/TriGeometryResAreaData.js.map +0 -1
  530. package/dist/resources/TriGeometryResJointData.js.map +0 -1
  531. package/dist/resources/TriGeometryResLodData.js.map +0 -1
  532. package/dist/resources/TriGeometryResMeshData.js.map +0 -1
  533. package/dist/resources/TriGeometryResSkeletonData.js.map +0 -1
  534. package/dist/resources/TriGrannyRes.js.map +0 -1
  535. package/dist/resources/TriJointBinding.js.map +0 -1
  536. package/dist/resources/TriMorphTargetGeometryConstants.js.map +0 -1
  537. package/dist/resources/TriRtGeometryConstants.js.map +0 -1
  538. package/dist/resources/TriTextureRes.js.map +0 -1
  539. package/dist/resources/enums.js.map +0 -1
  540. package/dist/resources/resourceBoundary.js +0 -47
  541. package/dist/resources/resourceBoundary.js.map +0 -1
  542. package/dist/resources/texturePipelineBehavior.js.map +0 -1
  543. package/dist/texture/CjsTextureArrayRes.js.map +0 -1
  544. package/dist/texture/CjsTextureParameterProxy.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\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
+ {"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 /** Creates a PacketReader over caller-provided Ogg bytes and reader options. */\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 /** Reads bits from the current Ogg binary reader. */\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 /** Creates a Codebook with caller-provided initial state. */\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 /**\n * Builds the canonical Vorbis Huffman decode tree for this codebook for the\n * Ogg decoder.\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 /** Decodes the Ogg input into a normalized Ogg decoder result. */\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 /** Reconstructs one vector-quantized codebook component for the Ogg decoder. */\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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"}
@@ -21,6 +21,11 @@ const IMAGE_MIME_TYPES = Object.freeze({
21
21
  tga: "image/x-tga",
22
22
  dds: "image/vnd-ms.dds"
23
23
  });
24
+
25
+ /**
26
+ * Normalizes reader options against their supported defaults for the PNG format
27
+ * reader.
28
+ */
24
29
  function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = "CjsImageFormat") {
25
30
  const values = {
26
31
  ...DEFAULT_VALUES,
@@ -31,11 +36,15 @@ function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = "CjsI
31
36
  values.emit = normalizeEmit(values.emit, values.inputType, readerName);
32
37
  return values;
33
38
  }
39
+
40
+ /** Normalizes the requested input representation for the PNG format reader. */
34
41
  function normalizeInputType(inputType) {
35
42
  if (!inputType) return "";
36
43
  const value = String(inputType).replace(/^\./u, "").toLowerCase();
37
44
  return value === "jpg" ? "jpeg" : value;
38
45
  }
46
+
47
+ /** Normalizes the requested output representation for the PNG format reader. */
39
48
  function normalizeEmit(emit, inputType, readerName) {
40
49
  if (emit === undefined || emit === null) return OUTPUT_RAW;
41
50
  if (emit === OUTPUT_JSON && inputType) return DEBUG_OUTPUTS[inputType] || OUTPUT_JSON;
@@ -43,12 +52,16 @@ function normalizeEmit(emit, inputType, readerName) {
43
52
  if (Object.values(DEBUG_OUTPUTS).includes(emit)) return emit;
44
53
  throw new TypeError(`${readerName}: unknown emit value ${JSON.stringify(emit)}`);
45
54
  }
55
+
56
+ /** Returns a byte view over the supplied binary input for the PNG format reader. */
46
57
  function toBytes(input) {
47
58
  if (input instanceof Uint8Array) return input;
48
59
  if (input instanceof ArrayBuffer) return new Uint8Array(input);
49
60
  if (ArrayBuffer.isView(input)) return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);
50
61
  throw new TypeError("Image input must be Uint8Array, ArrayBuffer, or DataView");
51
62
  }
63
+
64
+ /** Inspects input using normalized format options for the PNG format reader. */
52
65
  function inspectWithValues(input, values = DEFAULT_VALUES, expectedType = "") {
53
66
  const bytes = toBytes(input);
54
67
  const detected = inspectBytes(bytes);
@@ -64,6 +77,11 @@ function inspectWithValues(input, values = DEFAULT_VALUES, expectedType = "") {
64
77
  ...detected
65
78
  };
66
79
  }
80
+
81
+ /**
82
+ * Reports whether input is supported under normalized format options for the PNG
83
+ * format reader.
84
+ */
67
85
  function isSupportedWithValues(input, values = DEFAULT_VALUES, expectedType = "") {
68
86
  try {
69
87
  const metadata = inspectWithValues(input, values, expectedType);
@@ -105,6 +123,8 @@ function isSupportedWithValues(input, values = DEFAULT_VALUES, expectedType = ""
105
123
  };
106
124
  }
107
125
  }
126
+
127
+ /** Reads input using normalized format options for the PNG format reader. */
108
128
  function readWithValues(input, values = DEFAULT_VALUES, expectedType = "") {
109
129
  const bytes = toBytes(input);
110
130
  const metadata = inspectWithValues(bytes, values, expectedType);
@@ -129,6 +149,11 @@ function readWithValues(input, values = DEFAULT_VALUES, expectedType = "") {
129
149
  error.emit = values.emit;
130
150
  throw error;
131
151
  }
152
+
153
+ /**
154
+ * Reads input asynchronously using normalized format options for the PNG format
155
+ * reader.
156
+ */
132
157
  async function readWithValuesAsync(input, values = DEFAULT_VALUES, expectedType = "") {
133
158
  const bytes = toBytes(input);
134
159
  const metadata = inspectWithValues(bytes, values, expectedType);
@@ -140,6 +165,8 @@ async function readWithValuesAsync(input, values = DEFAULT_VALUES, expectedType
140
165
  }
141
166
  return readWithValues(bytes, values, expectedType);
142
167
  }
168
+
169
+ /** Converts a parsed payload into a JSON-safe value for the PNG format reader. */
143
170
  function toJsonValue(value) {
144
171
  if (value instanceof Uint8Array) {
145
172
  return {
@@ -154,6 +181,11 @@ function toJsonValue(value) {
154
181
  }
155
182
  return value;
156
183
  }
184
+
185
+ /**
186
+ * Inspects the supplied bytes without decoding their payload for the PNG format
187
+ * reader.
188
+ */
157
189
  function inspectBytes(bytes) {
158
190
  if (isPNG(bytes)) return inspectPNG(bytes);
159
191
  if (isJPEG(bytes)) return inspectJPEG(bytes);
@@ -165,15 +197,35 @@ function inspectBytes(bytes) {
165
197
  height: 0
166
198
  };
167
199
  }
200
+
201
+ /**
202
+ * Reports whether the supplied bytes begin with a PNG signature for the PNG
203
+ * format reader.
204
+ */
168
205
  function isPNG(bytes) {
169
206
  return bytes.byteLength >= 24 && bytes[0] === 0x89 && bytes[1] === 0x50 && bytes[2] === 0x4e && bytes[3] === 0x47 && bytes[4] === 0x0d && bytes[5] === 0x0a && bytes[6] === 0x1a && bytes[7] === 0x0a;
170
207
  }
208
+
209
+ /**
210
+ * Reports whether the supplied bytes begin with a JPEG signature for the PNG
211
+ * format reader.
212
+ */
171
213
  function isJPEG(bytes) {
172
214
  return bytes.byteLength >= 4 && bytes[0] === 0xff && bytes[1] === 0xd8;
173
215
  }
216
+
217
+ /**
218
+ * Reports whether the supplied bytes begin with a DDS signature for the PNG
219
+ * format reader.
220
+ */
174
221
  function isDDS(bytes) {
175
222
  return bytes.byteLength >= 128 && bytes[0] === 0x44 && bytes[1] === 0x44 && bytes[2] === 0x53 && bytes[3] === 0x20;
176
223
  }
224
+
225
+ /**
226
+ * Reports whether the supplied bytes have a supported TGA header for the PNG
227
+ * format reader.
228
+ */
177
229
  function isTGA(bytes) {
178
230
  if (bytes.byteLength < 18) return false;
179
231
  const imageType = bytes[2],