@forgeax/engine-audio-webaudio 0.1.4 → 0.1.7
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.
- package/README.md +4 -3
- package/dist/.tsbuildinfo +1 -1
- package/dist/clip-loader.d.ts +1 -2
- package/dist/clip-loader.d.ts.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +2 -53
- package/dist/index.mjs.map +1 -1
- package/package.json +7 -7
- package/src/clip-loader.ts +2 -60
- package/src/index.ts +0 -1
package/README.md
CHANGED
|
@@ -42,16 +42,17 @@ The renderer injects this package's Web Audio decoder into `AssetRegistry`, so d
|
|
|
42
42
|
|
|
43
43
|
```ts
|
|
44
44
|
import { AssetGuid } from '@forgeax/engine-pack/guid';
|
|
45
|
-
import {
|
|
45
|
+
import type { AudioClipAsset } from '@forgeax/engine-types';
|
|
46
46
|
|
|
47
|
+
assets.configurePackIndex('/pack-index.json');
|
|
47
48
|
const guid = AssetGuid.parse(clipGuid);
|
|
48
49
|
if (!guid.ok) return;
|
|
49
|
-
const loaded = await assets.
|
|
50
|
+
const loaded = await assets.loadByGuid<AudioClipAsset>(guid.value);
|
|
50
51
|
if (!loaded.ok) return;
|
|
51
52
|
const clip = world.allocSharedRef('AudioClipAsset', loaded.value);
|
|
52
53
|
```
|
|
53
54
|
|
|
54
|
-
Do not fetch a pack-index row or call
|
|
55
|
+
Do not fetch a pack-index row or call `loadAudioClipByGuid` at app level. That function remains the decoder implementation used by the injected loader; its decode failure is surfaced by `loadByGuid` as `AssetError('asset-parse-failed')` with the original recovery hint.
|
|
55
56
|
|
|
56
57
|
## Host consumer
|
|
57
58
|
|
package/dist/.tsbuildinfo
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"fileNames":["../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../types/dist/animation-target.d.ts","../../types/dist/asset-errors.d.ts","../../types/dist/result.d.ts","../../types/dist/asset-evidence.d.ts","../../types/dist/asset.d.ts","../../types/dist/asset-runtime.d.ts","../../types/dist/material/color-space.d.ts","../../types/dist/material/asset.d.ts","../../types/dist/vfx.d.ts","../../types/dist/handle.d.ts","../../types/dist/material/errors.d.ts","../../types/dist/material/resolve.d.ts","../../types/dist/material/index.d.ts","../../types/dist/asset-producer.d.ts","../../types/dist/catalog.d.ts","../../types/dist/runtime-scope.d.ts","../../types/dist/derive-paramschema.d.ts","../../types/dist/import.d.ts","../../types/dist/index.d.ts","../src/audio-importer.ts","../../math/dist/types.d.ts","../../math/dist/circle2.d.ts","../../math/dist/box2.d.ts","../../math/dist/box3.d.ts","../../math/dist/color.d.ts","../../math/dist/easing.d.ts","../../math/dist/euler.d.ts","../../math/dist/f32-to-f16-bytes.d.ts","../../math/dist/frustum.d.ts","../../math/dist/mat3.d.ts","../../math/dist/mat4.d.ts","../../math/dist/noise.d.ts","../../math/dist/quat.d.ts","../../math/dist/ray.d.ts","../../math/dist/ray2.d.ts","../../math/dist/sphere.d.ts","../../math/dist/vec2.d.ts","../../math/dist/vec3.d.ts","../../math/dist/vec4.d.ts","../../math/dist/index.d.ts","../src/audio-listener-sync-system.ts","../../audio/dist/assets/audio-decoder.d.ts","../../audio/dist/audio-backend.d.ts","../../audio/dist/audio-intent.d.ts","../../ecs/dist/entity-handle.d.ts","../../ecs/dist/storage/column.d.ts","../../ecs/dist/component-schema.d.ts","../../ecs/dist/component.d.ts","../../ecs/dist/entity.d.ts","../../ecs/dist/errors/query-and-component-errors.d.ts","../../ecs/dist/errors/relationship-errors.d.ts","../../ecs/dist/errors/sprite-and-shared-errors.d.ts","../../ecs/dist/errors/validation-errors.d.ts","../../ecs/dist/world-internal.d.ts","../../ecs/dist/query/query.d.ts","../../ecs/dist/relationship-index.d.ts","../../ecs/dist/shared-ref-store.d.ts","../../ecs/dist/world-change-journal.d.ts","../../ecs/dist/storage/table.d.ts","../../ecs/dist/storage/archetype.d.ts","../../ecs/dist/storage/archetype-graph.d.ts","../../ecs/dist/storage/change-detection.d.ts","../../ecs/dist/time.d.ts","../../ecs/dist/schedule-token.d.ts","../../ecs/dist/world.d.ts","../../ecs/dist/commands.d.ts","../../ecs/dist/schedule.d.ts","../../ecs/dist/execution/shared-kernel.d.ts","../../ecs/dist/errors.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cosmokit@1.8.2/node_modules/@deepseek-ai/cosmokit/lib/types/array.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cosmokit@1.8.2/node_modules/@deepseek-ai/cosmokit/lib/types/types.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cosmokit@1.8.2/node_modules/@deepseek-ai/cosmokit/lib/types/misc.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cosmokit@1.8.2/node_modules/@deepseek-ai/cosmokit/lib/types/string.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cosmokit@1.8.2/node_modules/@deepseek-ai/cosmokit/lib/types/time.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cosmokit@1.8.2/node_modules/@deepseek-ai/cosmokit/lib/types/index.d.ts","../../../node_modules/.pnpm/@standard-schema+spec@1.1.0/node_modules/@standard-schema/spec/dist/index.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.1_@deepseek-ai+cordis-plugin-loader@1.0.2/node_modules/@deepseek-ai/cordis/lib/types/utils.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.1_@deepseek-ai+cordis-plugin-loader@1.0.2/node_modules/@deepseek-ai/cordis/lib/types/registry.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.1_@deepseek-ai+cordis-plugin-loader@1.0.2/node_modules/@deepseek-ai/cordis/lib/types/reflect.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.1_@deepseek-ai+cordis-plugin-loader@1.0.2/node_modules/@deepseek-ai/cordis/lib/types/fiber.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.1_@deepseek-ai+cordis-plugin-loader@1.0.2/node_modules/@deepseek-ai/cordis/lib/types/events.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.1_@deepseek-ai+cordis-plugin-loader@1.0.2/node_modules/@deepseek-ai/cordis/lib/types/logger.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.1_@deepseek-ai+cordis-plugin-loader@1.0.2/node_modules/@deepseek-ai/cordis/lib/types/context.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.1_@deepseek-ai+cordis-plugin-loader@1.0.2/node_modules/@deepseek-ai/cordis/lib/types/service.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.1_@deepseek-ai+cordis-plugin-loader@1.0.2/node_modules/@deepseek-ai/cordis/lib/types/index.d.ts","../../tool-runtime/dist/types.d.ts","../../tool-runtime/dist/errors.d.ts","../../tool-runtime/dist/artifacts.d.ts","../../tool-runtime/dist/capability.d.ts","../../tool-runtime/dist/carrier.d.ts","../../tool-runtime/dist/lease.d.ts","../../tool-runtime/dist/migration.d.ts","../../tool-runtime/dist/runtime.d.ts","../../tool-runtime/dist/snapshot.d.ts","../../tool-runtime/dist/timing.d.ts","../../tool-runtime/dist/transport.d.ts","../../tool-runtime/dist/index.d.ts","../../plugin/dist/capability.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis-plugin-loader@1.0.2_patch_hash=6e77a3b82171afbdac249c0e31290cc06386_1a14a168fdebad14b739afc92f305e1c/node_modules/@deepseek-ai/cordis-plugin-loader/lib/types/internal.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis-plugin-loader@1.0.2_patch_hash=6e77a3b82171afbdac249c0e31290cc06386_1a14a168fdebad14b739afc92f305e1c/node_modules/@deepseek-ai/cordis-plugin-loader/lib/types/config/tree.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis-plugin-loader@1.0.2_patch_hash=6e77a3b82171afbdac249c0e31290cc06386_1a14a168fdebad14b739afc92f305e1c/node_modules/@deepseek-ai/cordis-plugin-loader/lib/types/config/group.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis-plugin-loader@1.0.2_patch_hash=6e77a3b82171afbdac249c0e31290cc06386_1a14a168fdebad14b739afc92f305e1c/node_modules/@deepseek-ai/cordis-plugin-loader/lib/types/config/entry.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis-plugin-loader@1.0.2_patch_hash=6e77a3b82171afbdac249c0e31290cc06386_1a14a168fdebad14b739afc92f305e1c/node_modules/@deepseek-ai/cordis-plugin-loader/lib/types/config/isolate.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis-plugin-loader@1.0.2_patch_hash=6e77a3b82171afbdac249c0e31290cc06386_1a14a168fdebad14b739afc92f305e1c/node_modules/@deepseek-ai/cordis-plugin-loader/lib/types/config/utils.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis-plugin-loader@1.0.2_patch_hash=6e77a3b82171afbdac249c0e31290cc06386_1a14a168fdebad14b739afc92f305e1c/node_modules/@deepseek-ai/cordis-plugin-loader/lib/types/index.d.ts","../../plugin/dist/tool-plugin.d.ts","../../plugin/dist/loader.d.ts","../../plugin/dist/index.d.ts","../../ecs/dist/plugin-service.d.ts","../../ecs/dist/index.d.ts","../../audio/dist/audio-tick-system.d.ts","../../audio/dist/components.d.ts","../../audio/dist/plugin-factory.d.ts","../../audio/dist/plugin-service.d.ts","../../audio/dist/index.d.ts","../src/clip-loader.ts","../src/audio-loader.ts","../src/web-audio-engine.ts","../src/host-audio-consumer.ts","../src/plugin.ts","../src/index.ts","../../../node_modules/.pnpm/@vitest+pretty-format@4.1.5/node_modules/@vitest/pretty-format/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.5/node_modules/@vitest/utils/dist/display.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.5/node_modules/@vitest/utils/dist/types.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.5/node_modules/@vitest/utils/dist/helpers.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.5/node_modules/@vitest/utils/dist/timers.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.5/node_modules/@vitest/utils/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.5/node_modules/@vitest/utils/dist/types.d-BCElaP-c.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.5/node_modules/@vitest/utils/dist/diff.d.ts","../../../node_modules/.pnpm/@vitest+runner@4.1.5/node_modules/@vitest/runner/dist/tasks.d-Bh0IjN67.d.ts","../../../node_modules/.pnpm/@vitest+runner@4.1.5/node_modules/@vitest/runner/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.5_@types+node@20.19.40_@vitest+browser-playwright@4.1.5_@vitest+coverage-v8@_93fb3f30d132ee2e785bbc9f718b2231/node_modules/vitest/dist/chunks/traces.d.D2T_R8rx.d.ts","../../../node_modules/.pnpm/vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7/node_modules/vite/types/hmrPayload.d.ts","../../../node_modules/.pnpm/vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7/node_modules/vite/dist/node/chunks/moduleRunnerTransport.d.ts","../../../node_modules/.pnpm/vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7/node_modules/vite/types/customEvent.d.ts","../../../node_modules/.pnpm/vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7/node_modules/vite/types/hot.d.ts","../../../node_modules/.pnpm/vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7/node_modules/vite/dist/node/module-runner.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@4.1.5/node_modules/@vitest/snapshot/dist/environment.d-DOJxxZV9.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@4.1.5/node_modules/@vitest/snapshot/dist/rawSnapshot.d-D_X3-62x.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@4.1.5/node_modules/@vitest/snapshot/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.5_@types+node@20.19.40_@vitest+browser-playwright@4.1.5_@vitest+coverage-v8@_93fb3f30d132ee2e785bbc9f718b2231/node_modules/vitest/dist/chunks/config.d.A1h_Y6Jt.d.ts","../../../node_modules/.pnpm/vitest@4.1.5_@types+node@20.19.40_@vitest+browser-playwright@4.1.5_@vitest+coverage-v8@_93fb3f30d132ee2e785bbc9f718b2231/node_modules/vitest/dist/chunks/environment.d.CrsxCzP1.d.ts","../../../node_modules/.pnpm/vitest@4.1.5_@types+node@20.19.40_@vitest+browser-playwright@4.1.5_@vitest+coverage-v8@_93fb3f30d132ee2e785bbc9f718b2231/node_modules/vitest/dist/chunks/rpc.d.B_8sPU0w.d.ts","../../../node_modules/.pnpm/vitest@4.1.5_@types+node@20.19.40_@vitest+browser-playwright@4.1.5_@vitest+coverage-v8@_93fb3f30d132ee2e785bbc9f718b2231/node_modules/vitest/dist/chunks/worker.d.ZpHpO4yb.d.ts","../../../node_modules/.pnpm/vitest@4.1.5_@types+node@20.19.40_@vitest+browser-playwright@4.1.5_@vitest+coverage-v8@_93fb3f30d132ee2e785bbc9f718b2231/node_modules/vitest/dist/chunks/browser.d.BcoexmFG.d.ts","../../../node_modules/.pnpm/@vitest+spy@4.1.5/node_modules/@vitest/spy/optional-types.d.ts","../../../node_modules/.pnpm/@vitest+spy@4.1.5/node_modules/@vitest/spy/dist/index.d.ts","../../../node_modules/.pnpm/tinyrainbow@3.1.0/node_modules/tinyrainbow/dist/index.d.ts","../../../node_modules/.pnpm/@types+deep-eql@4.0.2/node_modules/@types/deep-eql/index.d.ts","../../../node_modules/.pnpm/assertion-error@2.0.1/node_modules/assertion-error/index.d.ts","../../../node_modules/.pnpm/@types+chai@5.2.3/node_modules/@types/chai/index.d.ts","../../../node_modules/.pnpm/@vitest+expect@4.1.5/node_modules/@vitest/expect/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+runner@4.1.5/node_modules/@vitest/runner/dist/utils.d.ts","../../../node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.5_@types+node@20.19.40_@vitest+browser-playwright@4.1.5_@vitest+coverage-v8@_93fb3f30d132ee2e785bbc9f718b2231/node_modules/vitest/dist/chunks/benchmark.d.DAaHLpsq.d.ts","../../../node_modules/.pnpm/vitest@4.1.5_@types+node@20.19.40_@vitest+browser-playwright@4.1.5_@vitest+coverage-v8@_93fb3f30d132ee2e785bbc9f718b2231/node_modules/vitest/dist/chunks/global.d.DVsSRdQ5.d.ts","../../../node_modules/.pnpm/vitest@4.1.5_@types+node@20.19.40_@vitest+browser-playwright@4.1.5_@vitest+coverage-v8@_93fb3f30d132ee2e785bbc9f718b2231/node_modules/vitest/optional-runtime-types.d.ts","../../../node_modules/.pnpm/@vitest+mocker@4.1.5_vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7_/node_modules/@vitest/mocker/dist/types.d-BjI5eAwu.d.ts","../../../node_modules/.pnpm/@vitest+mocker@4.1.5_vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7_/node_modules/@vitest/mocker/dist/index.d-B41z0AuW.d.ts","../../../node_modules/.pnpm/@vitest+mocker@4.1.5_vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7_/node_modules/@vitest/mocker/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.5_@types+node@20.19.40_@vitest+browser-playwright@4.1.5_@vitest+coverage-v8@_93fb3f30d132ee2e785bbc9f718b2231/node_modules/vitest/dist/chunks/suite.d.udJtyAgw.d.ts","../../../node_modules/.pnpm/vitest@4.1.5_@types+node@20.19.40_@vitest+browser-playwright@4.1.5_@vitest+coverage-v8@_93fb3f30d132ee2e785bbc9f718b2231/node_modules/vitest/dist/chunks/evaluatedModules.d.BxJ5omdx.d.ts","../../../node_modules/.pnpm/vitest@4.1.5_@types+node@20.19.40_@vitest+browser-playwright@4.1.5_@vitest+coverage-v8@_93fb3f30d132ee2e785bbc9f718b2231/node_modules/vitest/dist/runners.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/utils.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/overloads.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/branding.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/messages.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.5_@types+node@20.19.40_@vitest+browser-playwright@4.1.5_@vitest+coverage-v8@_93fb3f30d132ee2e785bbc9f718b2231/node_modules/vitest/dist/index.d.ts","../src/__tests__/audio-bus-name-owner.test-d.ts","../src/__tests__/audio-loader-contract.test.ts","../src/__tests__/audio-local-artifacts.test.ts","../src/__tests__/audio-webaudio.browser.test.ts","../../pack/dist/artifact-path.d.ts","../../pack/dist/errors.d.ts","../../pack/dist/scriptable-pack.d.ts","../../pack/dist/evidence/source-inventory.d.ts","../../pack/dist/scriptable-pack-node.d.ts","../../pack/dist/scanner.d.ts","../../pack/dist/catalog-builder.d.ts","../../pack/dist/catalog-delta.d.ts","../../pack/dist/catalog-projection.d.ts","../../pack/dist/evidence/material-cook.d.ts","../../pack/dist/evidence/offline-evidence.d.ts","../../pack/dist/mesh-bin-contract.d.ts","../../pack/dist/package-finalizer.d.ts","../../pack/dist/producer-contract.d.ts","../../../node_modules/.pnpm/fast-uri@3.1.2/node_modules/fast-uri/types/index.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/codegen/code.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/codegen/scope.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/codegen/index.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/rules.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/util.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/subschema.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/errors.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/index.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/dataType.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/additionalItems.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/items2020.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/contains.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/dependencies.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/propertyNames.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/not.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/anyOf.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/oneOf.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/if.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/index.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/limitNumber.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/multipleOf.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/pattern.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/required.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/uniqueItems.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/const.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/enum.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/index.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/format/format.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/dependentRequired.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/discriminator/types.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/discriminator/index.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/errors.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/types/json-schema.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/types/jtd-schema.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/runtime/validation_error.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/ref_error.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/core.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/resolve.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/index.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/types/index.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/ajv.d.ts","../../pack/dist/schema-compiled.d.ts","../../pack/dist/runtime.d.ts","../../pack/dist/runtime-publication.d.ts","../../pack/dist/topology.d.ts","../../pack/dist/build.d.ts","../../pack/dist/native-cooker-registry.d.ts","../../pack/dist/native-cooker.d.ts","../../import/dist/import-product.d.ts","../../import/dist/importer-registry.d.ts","../../import/dist/import-runner.d.ts","../../import/dist/build-production.d.ts","../../import/dist/catalog-importer-policy.d.ts","../../import/dist/catalog-inventory.d.ts","../../import/dist/mesh-bin.d.ts","../../import/dist/pack-projection.d.ts","../../pack/dist/material/artifact-writer.d.ts","../../pack/dist/runtime-projection.d.ts","../../pack/dist/index.d.ts","../../import/dist/scriptable-pack.d.ts","../../import/dist/scriptable-source-package.d.ts","../../import/dist/scriptable-pack-host.d.ts","../../import/dist/scriptable-pack-output-producers.d.ts","../../import/dist/scriptable-pack-staged-snapshot.d.ts","../../import/dist/source-package.d.ts","../../import/dist/source-package-errors.d.ts","../../ddc/dist/build-cache.d.ts","../../ddc/dist/errors.d.ts","../../ddc/dist/entry-store.d.ts","../../ddc/dist/gc.d.ts","../../ddc/dist/key.d.ts","../../ddc/dist/layout.d.ts","../../ddc/dist/lifecycle.d.ts","../../ddc/dist/publication.d.ts","../../ddc/dist/runtime-scope.d.ts","../../ddc/dist/session.d.ts","../../ddc/dist/status.d.ts","../../ddc/dist/index.d.ts","../../import/dist/source-package-publication.d.ts","../../import/dist/index.d.ts","../src/__tests__/audio-webaudio.unit.test.ts","../src/__tests__/gain-automation.unit.test.ts","../src/__tests__/host-audio-consumer.unit.test.ts","../src/__tests__/root-surface.unit.test.ts","../src/__tests__/spatial-cleanup.test.ts","../src/__tests__/web-audio-engine-decode-recovery.browser.test.ts","../src/__tests__/web-audio-engine-decode-recovery.unit.test.ts"],"fileIdsList":[[144,159,160,164,167],[144,159,161,162,164,167],[134,144,161,162,164,167],[134,144,160,161,162,164,167],[134,144,158,159,160,161,162,163,164,167],[134],[134,136,137,138,139,140,141],[134,137,138,139,140,141,142],[134,135,136,137,138,139,140,141,142],[136,137,138,139,140,141,142,143],[136,137,138,139,140,141,142],[144,164,167],[129,130,131,132,133],[208,209],[135,182,188,206,207,210],[217],[217,218],[186,188,189],[186,188],[186],[181,186,197,198],[181,186,197],[205],[181,187],[181],[183],[181,182,183,184,185],[250,251,255,282,283,285,286,287,289,290],[248,249],[248],[250,290],[250,251,287,288,290],[290],[247,290,291],[250,251,289,290],[250,251,253,254,289,290],[250,251,252,289,290],[250,251,255,282,283,284,285,286,289,290],[247,250,251,255,287,289],[255,290],[257,258,259,260,261,262,263,264,265,266,290],[280,290],[256,267,275,276,277,278,279,281],[260,290],[268,269,270,271,272,273,274,290],[223,224],[223,224,225,226],[223,225],[223],[192],[192,193,194,195],[194],[190,212,213,215],[190,191,203,215],[181,188,190,191,199,215],[196],[181,190,191,199,211,214,215],[190,191,196,199,215],[190,212,213,214,215],[190,196,200,201,202,215],[181,186,188,190,191,196,199,200,201,202,203,204,206,211,212,213,214,215,216,219,220,221,222,227],[181,188,190,191,199,200,212,213,214,215,220],[174,228],[176,228],[78,79,228],[176,177,228],[78,79,99,100,174,175,177,228,330],[177,228],[177,178,228],[180,228],[78,174,180,228],[78],[99],[78,175],[78,174],[78,174,177],[100,174,175,176,177,178,179],[167,168,173,178],[78,102],[78,102,169],[169],[78,101,102,103,170,171,172,173],[167,168,173],[102,167,168,173],[318],[317,318,319,320,321,322,323,324,325,326,327],[319,323],[78,104,107,113,124,128],[107],[78,104,105,106],[109,110,111,112,127],[114,123,126],[104,106,107,108,114,115,116,122,123,124,125,126,128,168],[124,167,168,173],[78,104,107,113,128],[104,107],[78,107,114,123,124,125,128],[78,128],[107,118,119,121],[107,118],[104,107,117,118,120],[104,105,107,121],[104],[78,104,107,113,114,115,116,121,122,123,126,127,128],[78,296,298,300,301],[296],[238,296],[78,299,300],[78,299,300,301,302,303,304,305,306,310,311,312,313,314,315,316,329],[78,244],[78,301],[78,235,238,296,298,301,310,311],[235,310],[78,235,310],[78,235,299,309],[78,316,328],[78,300,301],[80,81],[80],[80,82],[80,83],[80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98],[80,81,82],[78,233,235,238,239,240,241,242,243,244,245,246,293,294,295],[78,238],[78,233,235,242,243,244,246,292,295,307,308],[297],[78,292],[78,234,235,237],[78,291],[78,235,236],[144,156,164,167],[144,157,164,165,166,167],[144,156,157,164,165,167],[145,146],[145],[145,146,147,148,149,150,151,152,153,154,155],[145,149],[61,62,64],[61,62,64,78],[63],[62,64,73],[61,73,74,75,78],[60,61,62,64,65,67,68,69,72,73,74,75,76,77],[65,66,78],[67],[66,67,70,71],[62,67,70],[73,74]],"fileInfos":[{"version":"bcd24271a113971ba9eb71ff8cb01bc6b0f872a85c23fdbe5d93065b375933cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f88bedbeb09c6f5a6645cb24c7c55f1aa22d19ae96c8e6959cbd8b85a707bc6","impliedFormat":1},{"version":"7fe93b39b810eadd916be8db880dd7f0f7012a5cc6ffb62de8f62a2117fa6f1f","impliedFormat":1},{"version":"bb0074cc08b84a2374af33d8bf044b80851ccc9e719a5e202eacf40db2c31600","impliedFormat":1},{"version":"1a7daebe4f45fb03d9ec53d60008fbf9ac45a697fdc89e4ce218bc94b94f94d6","impliedFormat":1},{"version":"f94b133a3cb14a288803be545ac2683e0d0ff6661bcd37e31aaaec54fc382aed","impliedFormat":1},{"version":"f59d0650799f8782fd74cf73c19223730c6d1b9198671b1c5b3a38e1188b5953","impliedFormat":1},{"version":"8a15b4607d9a499e2dbeed9ec0d3c0d7372c850b2d5f1fb259e8f6d41d468a84","impliedFormat":1},{"version":"26e0fe14baee4e127f4365d1ae0b276f400562e45e19e35fd2d4c296684715e6","impliedFormat":1},{"version":"d6b1eba8496bdd0eed6fc8a685768fe01b2da4a0388b5fe7df558290bffcf32f","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f57fc4404ff020bc45b9c620aff2b40f700b95fe31164024c453a5e3c163c54","impliedFormat":1},{"version":"eadcffda2aa84802c73938e589b9e58248d74c59cb7fcbca6474e3435ac15504","affectsGlobalScope":true,"impliedFormat":1},{"version":"105ba8ff7ba746404fe1a2e189d1d3d2e0eb29a08c18dded791af02f29fb4711","affectsGlobalScope":true,"impliedFormat":1},{"version":"00343ca5b2e3d48fa5df1db6e32ea2a59afab09590274a6cccb1dbae82e60c7c","affectsGlobalScope":true,"impliedFormat":1},{"version":"ebd9f816d4002697cb2864bea1f0b70a103124e18a8cd9645eeccc09bdf80ab4","affectsGlobalScope":true,"impliedFormat":1},{"version":"2c1afac30a01772cd2a9a298a7ce7706b5892e447bb46bdbeef720f7b5da77ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"7b0225f483e4fa685625ebe43dd584bb7973bbd84e66a6ba7bbe175ee1048b4f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0a4b8ac6ce74679c1da2b3795296f5896e31c38e888469a8e0f99dc3305de60","affectsGlobalScope":true,"impliedFormat":1},{"version":"3084a7b5f569088e0146533a00830e206565de65cae2239509168b11434cd84f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5079c53f0f141a0698faa903e76cb41cd664e3efb01cc17a5c46ec2eb0bef42","affectsGlobalScope":true,"impliedFormat":1},{"version":"32cafbc484dea6b0ab62cf8473182bbcb23020d70845b406f80b7526f38ae862","affectsGlobalScope":true,"impliedFormat":1},{"version":"fca4cdcb6d6c5ef18a869003d02c9f0fd95df8cfaf6eb431cd3376bc034cad36","affectsGlobalScope":true,"impliedFormat":1},{"version":"b93ec88115de9a9dc1b602291b85baf825c85666bf25985cc5f698073892b467","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5c06dcc3fe849fcb297c247865a161f995cc29de7aa823afdd75aaaddc1419b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b77e16112127a4b169ef0b8c3a4d730edf459c5f25fe52d5e436a6919206c4d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"fbffd9337146eff822c7c00acbb78b01ea7ea23987f6c961eba689349e744f8c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a995c0e49b721312f74fdfb89e4ba29bd9824c770bbb4021d74d2bf560e4c6bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"c7b3542146734342e440a84b213384bfa188835537ddbda50d30766f0593aff9","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce6180fa19b1cccd07ee7f7dbb9a367ac19c0ed160573e4686425060b6df7f57","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f02e2476bccb9dbe21280d6090f0df17d2f66b74711489415a8aa4df73c9675","affectsGlobalScope":true,"impliedFormat":1},{"version":"45e3ab34c1c013c8ab2dc1ba4c80c780744b13b5676800ae2e3be27ae862c40c","affectsGlobalScope":true,"impliedFormat":1},{"version":"805c86f6cca8d7702a62a844856dbaa2a3fd2abef0536e65d48732441dde5b5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e42e397f1a5a77994f0185fd1466520691456c772d06bf843e5084ceb879a0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"f4c2b41f90c95b1c532ecc874bd3c111865793b23aebcc1c3cbbabcd5d76ffb0","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab26191cfad5b66afa11b8bf935ef1cd88fabfcb28d30b2dfa6fad877d050332","affectsGlobalScope":true,"impliedFormat":1},{"version":"2088bc26531e38fb05eedac2951480db5309f6be3fa4a08d2221abb0f5b4200d","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb9d366c425fea79716a8fb3af0d78e6b22ebbab3bd64d25063b42dc9f531c1e","affectsGlobalScope":true,"impliedFormat":1},{"version":"500934a8089c26d57ebdb688fc9757389bb6207a3c8f0674d68efa900d2abb34","affectsGlobalScope":true,"impliedFormat":1},{"version":"689da16f46e647cef0d64b0def88910e818a5877ca5379ede156ca3afb780ac3","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc21cc8b6fee4f4c2440d08035b7ea3c06b3511314c8bab6bef7a92de58a2593","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ca53d13d2957003abb47922a71866ba7cb2068f8d154877c596d63c359fed25","affectsGlobalScope":true,"impliedFormat":1},{"version":"54725f8c4df3d900cb4dac84b64689ce29548da0b4e9b7c2de61d41c79293611","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5594bc3076ac29e6c1ebda77939bc4c8833de72f654b6e376862c0473199323","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f3eb332c2d73e729f3364fcc0c2b375e72a121e8157d25a82d67a138c83a95c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f4427f9642ce8d500970e4e69d1397f64072ab73b97e476b4002a646ac743b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"48915f327cd1dea4d7bd358d9dc7732f58f9e1626a29cc0c05c8c692419d9bb7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7bf9377723203b5a6a4b920164df22d56a43f593269ba6ae1fdc97774b68855","affectsGlobalScope":true,"impliedFormat":1},{"version":"db9709688f82c9e5f65a119c64d835f906efe5f559d08b11642d56eb85b79357","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b25b8c874acd1a4cf8444c3617e037d444d19080ac9f634b405583fd10ce1f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"37be57d7c90cf1f8112ee2636a068d8fd181289f82b744160ec56a7dc158a9f5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a917a49ac94cd26b754ab84e113369a75d1a47a710661d7cd25e961cc797065f","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d3261badeb7843d157ef3e6f5d1427d0eeb0af0cf9df84a62cfd29fd47ac86e","affectsGlobalScope":true,"impliedFormat":1},{"version":"195daca651dde22f2167ac0d0a05e215308119a3100f5e6268e8317d05a92526","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b11e4285cd2bb164a4dc09248bdec69e9842517db4ca47c1ba913011e44ff2f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0508571a52475e245b02bc50fa1394065a0a3d05277fbf5120c3784b85651799","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f9af488f510c3015af3cc8c267a9e9d96c4dd38a1fdff0e11dc5a544711415b","affectsGlobalScope":true,"impliedFormat":1},{"version":"fc611fea8d30ea72c6bbfb599c9b4d393ce22e2f5bfef2172534781e7d138104","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ce14b81c5cc821994aa8ec1d42b220dd41b27fcc06373bce3958af7421b77d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3a048b3e9302ef9a34ef4ebb9aecfb28b66abb3bce577206a79fee559c230da","affectsGlobalScope":true,"impliedFormat":1},"89fe170d9a59f81cd9a9d95de3278f108ff91491810b2529cc0ffb502a57b6c0","0b4928041c807c01b33b1fa028236df635c52f7acff5a40f2c2d0d677b53428b","5ad2e5b8b17893d0eb1f11a1b6e8c03b17344be03a6a72a624cd38ab05fe4d5c","6a1e553079e654a1771463e9eeb98ea4f7bb4b6417a5237d4fdf9b546d49647f","7f11be86b9ac5c2cd5127cd9d40ccc7694c58868a3157692a153d452fc171525","8b52dd8be86f44f871db89a6c1f77f7585688d53141ff55b6c5fac3eb67b1241","6e3488ee1183ea915eb43f08aebc5f75e30be25aef1f678d1965324bdd7506e1","59ca967d9cb92088499ce15a1c389e55a39bb2cb905844439565d9f7d8b1ed5d","a318d8734523d9e750681e7b8e685ef817d4049c5612451f4e849da8b2b572a9","99440a4820b8621d65822e29b01afd8a5938ea94ebea634fdd31d32d3e735629","080e7748d9754ccaea8debbc933552c7976c1ef588f9642a6f07e5a4d139d43b","51342c51a9090c0bc8bae60c5ec1a0f46d6d44db84392f12a8cd46e6d8a9f617","ae777307a0baeb9b5d7ba18e6a029a54eb0b612b1491591dcedb020cc8d36f97","d7ba738e316b7baed10ca49cc156b57b8c973b747bec6612e62a925e9f7f33a4","1d5292578fcf0329a43ef19fe2481d7d1cde75e75610019a7897c70dcfff0b31","459b3765e622008ed590474ae6b61ab55107a7b9529a28d05087a6fef51d7248","ce15f7fa66eb0ff73351db6a626a397eb441aa3572707c2a156897c646b2911d","c68fbed241cfa01237d9d15cff9bab1ebdd06f2fe337f536e218c1c39aa5a841","a6fcec9d447e7ea2763d1e5f9cf32a20e7f7cff2fe0da4c48639db063b9cc531",{"version":"793b30459b975a29dedd0faab4b0b0a5be1291761cf9ca08cc7c07eb684887fc","signature":"56de4fd28d02c2aafe103f9297828f1364b3b2c27e92d205d0d72b269115b9e2"},"728cc7c21f319d38b1dafdbdf1258350b675055a3fb61ae1a7c34562c58b8557","d474818de812636654d86a3f0f6f3b8f6ae725b5487f344a5d3a32decd68311f","87cb945db71dbb2cceac65375b84cc0c55bfe70a749b11e55b59a40df53503f6","dcadfb7e3411bb19e717855d891658f3d71c065248d25f09e027e4a6cdfa0e9f","1c3f1fae8db7ce0bb537e509ceb0243892e68a3b6e66ab1245c15932be41d037","b3b63929f7475d02520bde84913450bf633e86f6a5d51fcc13e95376ec3483a6","11fbb66f203aa1855d34dbb3d835879a75924cae9f08eb16997318fed41f9078","56d65795b8f53c0f68d66369fc42fb8f79f669f868fc8eda2f634297c47b156f","a35dc82e5a7955568d2883e308e7a3e138961dd3b40956b22fccd415dd307e4a","a10051e664b2713d31f07db5fdd71d0854732e57429cbfa00ebb329e89a27981","3cb9e3f85ef9f989394133fe2e4ef4f39da5578fe583124fc0cbb00474b471e8","8bbc25b37d24570dffba7209cb9e427a63c7eeed18412af5e57c450a37d6c059","27d3d1f171d4b7b86bdf1c352f22319c0915b17cfd919deb070bef13510a33a2","40a12a4c54a6564f2c1547a10bcafc9210fce809dc57d2a7815c918972f48895","a8f81f646b1bd12b6b0758d1f97cc6d26646d5ac72d92362cb3b340271589e8f","05d6d9fbf9c8fbb9fa36b4e0ad91292e57f6a9233dc407875d0fb06cdfd59bda","d08b909fffadfa1dece31aa587aca1c34782cafd9294c5c8b66cbab2aa897719","a49e93ed1861aa2493d363f26ee826ab71c7105b20c85cf8bd26bbb4e0b32cd6","9aca2738b7400d1d8c2d009ec6cbbaf3204e6413219edc962cea5bb6ef50db10","f23fc64dfc9c3e5b718eca7f1fdb0640d5c1f5c8993a599e66ce73ab33502036",{"version":"d5adf4f4514ce7f51abd7538bda26282ca1b98c3d66eeab86af86d449da39316","signature":"395fc5a92eeaf128582b6375d1727223c0a6cd0e60416840ec0a6eaf8062d587"},"29570e0238416ace9a95fd58fd848b3cc1e61a469efd6656ecccda985de43b34","718e98bc1f4cbc8553ddf6b0936203570349e13872ff56497a43fc24bd66ab11","997072a1ea95687cb14baa1217eec1ecb25fe6b62bf7c7ff7aab1fda172da6b3","b866405af1564f0690ea323f070c87509bfeb2ba8afa7c49c255dbe13c176bf8","ce648e4449eb59292b997226148647ce9ca22bc9ff9062959f5f1fe6bfe06cd8","ce3d7045ddbf0f8c968829a4e32d5064af66cba795f8c8490afec9eb677a4f45","6192bdb56ca09fde8176590331c36f3eec2fd5fb3ad7dd7401727efb2398d7fb","0810b73622b33b91f89f5d0f8b1fc0b92841e6b751a84d2c005508c563748d16","9a1b69540b9533e337c81d470724ebb054a15b994a11b759a969367b28e81368","854cbb22c44beb0fe44a46f5428521a27e8b9fb645e6ce803a5622ff44ec74ce","dd6776bc5480997847e4d3c495951de5f0401667e1880b6176f57584c49aa401","5173f8a542f4174c378adfa9a98f92a38b07755e40a14ba139cb46f6986d64d6","2278fcff8ca72dc791b3907ac363bd7370ec04e38653827c14c5dbd3fc99e335","ee7cd212dd2cfef9efd135a36a577fa35cb4af99f7e6fd3023cc9d2f7c6f438b","0bc016e4da8853d924fbfde9820db77121de75539641d02012232396b09e7dd6","6647e4b21b341f971ef92cbdbeaee6a42d77b291a43cdc73b970b2ad505bb912","2f9485d1b731e3d1d373c2a2a20e3ad41b55616b9fa13bf261d2a058cd23149b","d9df407e562a322f63c0cc3f1bcea9c1cbec38d0c92b3f49169291f22374cb6c","ba9d80c5b60b7708524491768da7d44a796042529ed945678f45356beb2504f9","7689fbecdcdb8f32296c94fe5cf5edef16a9db673d696a2aaa40ad54470e5965","2c2b0520a51bf2f420ec605fa5e327ea7d96732cc97a373c167e12ad71dda21f","5f15c8ce469d7e9da71f9ca502370c454eb29629d6c2e548fa722d00700dfb46","ce5251c882968a3ce8fc6c2e3b2c3b739a740f614eebf066b73e8ee7c5dc4f63","2146d63418ecb6b19792c162b39fb1246f4bb28a7eefcdc3e589e880140834f2","8f373e06438a141f82616c5e0b171e0bf613cc95aa1e6b8b41a8ae520dd2948e","5c9cf44d7fea3b0c9876102abc143967f2e7015dd0a89edcbe28a49906621206","6db8a395b3c5f988123adb6cc84b6410a82a060c4acde2491012b9b44b32b300","4c44739d6f89fe451021d088397f7c9fe93c24fcf2de14019c5d011fb442082d",{"version":"fb6f2007d60e8b519a2ef0c5a27026ddfe06418ae6261c4eb0cb670cca5e1bc2","impliedFormat":99},{"version":"a48f1b69ec0b94b16c7ece2cf6d6003cc8d0c329538117c1c364d8525a100850","impliedFormat":99},{"version":"cd5713ac354e4869fdf837e12d24d3ae14fd9d94a5bb2d340df63b899b74e6ca","impliedFormat":99},{"version":"56210599298d6eca6285eab99c7e9333d7e275c3a73a7f401b3055e8d55c67e8","impliedFormat":99},{"version":"2845576622e416da9871e1f3c788ba41dc4f24eb764362b10eceeb0dbaa67208","impliedFormat":99},{"version":"f0421e04e2a5238754cf444bf2a56fe7e7a94a08c14c1f9d063ff51c85825823","impliedFormat":99},{"version":"bdd14f07b4eca0b4b5203b85b8dbc4d084c749fa590bee5ea613e1641dcd3b29","impliedFormat":99},{"version":"967b227fad024ba8a7c32127534089bce5adc800840b0288f44d41c4c849278e","impliedFormat":99},{"version":"ffd229492af3cb444c01e8e51a78dfdbed670940bac40dde083675d57d6984fc","impliedFormat":99},{"version":"57cdef8252cb041b4b646cc9e80dcb27d2180bb78fcf95761136d99be4079cb3","impliedFormat":99},{"version":"eb5fd8d19b0330da4dccb6cab3eae0304f056ac8fbd5bd9589ce48f0920bff78","impliedFormat":99},{"version":"db565a086622cbe616a950186dc90e82a74060864b9cd1d0f25285860daea9b4","impliedFormat":99},{"version":"71087395cc862f52662ab2629a0f3838f8f2aaf84eb40c97f4f4004f2fcbbed6","impliedFormat":99},{"version":"1e2e6cfcab26ae01d7f2dd1f78a1d25ddb7f3b2e27f50c9eb3b54ee206a87884","impliedFormat":99},{"version":"489ec23ef8dc0e869cf3d8d77a39ba83ab24e5e71362320f5662491b3dc5bd04","impliedFormat":99},{"version":"c93dd79fae382105510c69cc8eef95a96c8c43e50b47e16efa98a3f9e76f304b","impliedFormat":99},"4a5b020726455dd70acdf34ccc435273e6333cbb1a3ff08b6c451148c61b21fd","eb4d76417ff2ac49726b2efaf83e5b9924f7040151293d092e1ba38905479a02","3bae912eb95706a507e668cdfe378bb612c81b46323aae337689fabc00c3ae29","129aaa58f8b8ed74d8ef3ab03d3219f1b5a7b2902c4e111e080abdaf043686ef","c0a9cb9a3fe662b66cf598c1e2e6bc799b423699b81249bb62586acbc817b1e7","7d3bbcb2ef65e80202188d77d2e06f30c5d5d2603ca49cde35a6b298565247e9","f90ae41777b29281dcd4aa3fafb9d84c6b328860d639114a8c3fcf36beb23817","eadfe727983087acea4f17095671faba65ba5233acaed7213f140269d4528c9a","6bbe3b367d76debfa83ec26a13d0013f8dad891cddd8909a1fbdcdb719b064d9","9fec96292881b3ee00f9b34d757887223221db25d0fb534b521743e9be298d9f","fbd59a37ab9b1a3a21f2e968b539f91453e560507d9e92748f0623f7118306be","92523b7353d096bd2464e1611035b284803894aa952541021922567dfe9f15aa","49ca23a8e2de57d49da1b5b5aa2f0e0d341b4230a899efe1a6078d3779e2ea53",{"version":"be53d0833468d1d4de05770f4af2d3ec465b7ef5d5181b748997a02bf362ebd0","impliedFormat":99},{"version":"4920f950330f6a8a00a084beb7998de838a15cd54f5c774962b75614c15f8bed","impliedFormat":99},{"version":"e892ea4cf5fc5e5ab078f265c617efa3ab44a1cbd477f91fd29a27698c45eb77","impliedFormat":99},{"version":"6a33bd0416049803becacbdccd852c02f342eedce7dea12956d1176966269eeb","impliedFormat":99},{"version":"f74c6749e3944913d8002c1dd30523c520de426e9113d47b6730565318349154","impliedFormat":99},{"version":"ac5d5fd3358d3f7491400869278ea288df297b4fbc1ba035c7fd09c8df822358","impliedFormat":99},{"version":"0ce13f49afeb385ad05698a5420580c7381d758779b730c1992be7386578e1e7","impliedFormat":99},"8fa74a106f75c2eed4b65fa571e4e9b78e9a3a68f65b6c70261e87f7f47b931d","d82719b8e8a552f66dea370df85e00f9473537bb9c35dcb711d7f48cb5e707cd","a3c435d1e1eb110bb7382103c522bf44e9abb8b6883a493360fc5859db0aee10","1487f3b04d5e9ed9c5d823ff91bedbd7a8ce7a4c44b7ef16fa64a2d930a731e9","18dfdac2f4092e68e453e7a9da3d0e800e597e82fa567c49c2c7bb4c4dfb26ff","979f0ab3cbcbb24cab91a5fe5627c33da4407e0dc121918486ff9a1558fb4fbc","0a06cd881a2ec11333b1ce287ee0122dfd7bacf0a00be97856927838854ff53e","35fed00b2851f90aa0d18bac42c9c9a9bc793b622fbd714c2d4d177233177e7e","a697430f6e21400b80e57be942e0606d4f1b82623a81cc20a66e4888ead6962d","081df24260effcb73558b6d76f061d455af03e1cccb266be48a4fb5dbdc490c1",{"version":"29759823895930b864e76cbed2127f516770dada156ae03d6a125dceafd85bef","signature":"fbbc1d12bee1635cb9aedc7b1f47bcefbdd0e08c51ecf25340cfeb08eaccbb2d"},{"version":"43f586cc8b57ada584438a597acc9971e02be5acc8607bdd3202d96ff80ad406","signature":"aee062bd335fddd51e33939e25cde9e84e5b4555f301b23f9e55bb4663260dac"},{"version":"05737b1d4fcfcacb814a6cd67989d43aee9ba7142bdf3cc92d30938bd4be22a4","signature":"a837d3258c03c393f9bc76a166952ab455639de1e705e4b9ea8f4cd6accb9979"},{"version":"4c14fc5e56f88c0fd084aa14832156fe9c51851e0741c1b51635db747d7ad09a","signature":"2557f03e5f3bc7ce4a510d3cbc87adf5ba0040cee483c32f44a06dd6fe616771"},{"version":"467713c0f319eaee99063d93761e9d29ab1f0892e37af8784d608f19bf2f85fa","signature":"57efedc452265ca0c3ae6811bb8591edf826a6607eafe8fe9feff987a8799001"},{"version":"aed1264a501be4fb24ca40fa9c7703ca27277fa8b38638d70d33f8810dc16b3f","signature":"2ae2c0379ac80a925b33ed70e2a1169802af04d08b0a8a533b68443ec7e631aa"},{"version":"3a582c6e8906f5b094ccf0de6cc6f4f8a54b05a34f52517aba5c9c7f704f6b28","impliedFormat":99},{"version":"0528f6d21f7a02d4092895090d2dd86104bd5a3e79eced96d5a1a7dd90943d17","impliedFormat":99},{"version":"b5ce343886d23392be9c8280e9f24a87f1d7d3667f6672c2fe4aa61fa4ece7d4","impliedFormat":99},{"version":"72ce5b734c05da85c85a6f6dc05823b051d6aa41acaedeeb1d17c72f3b4efa72","impliedFormat":99},{"version":"b0857bb28fd5236ace84280f79a25093f919fd0eff13e47cc26ea03de60a7294","impliedFormat":99},{"version":"5e43e0824f10cd8c48e7a8c5c673638488925a12c31f0f9e0957965c290eb14c","impliedFormat":99},{"version":"ef13c73d6157a32933c612d476c1524dd674cf5b9a88571d7d6a0d147544d529","impliedFormat":99},{"version":"3b0a56d056d81a011e484b9c05d5e430711aaecd561a788bad1d0498aad782c7","impliedFormat":99},{"version":"9443967db823b66d1682be7fc66392be7c7924e10c3e54900f456341e94591a6","impliedFormat":99},{"version":"424f71d1fae96ac2e878af92345bb87bea1d29f757228fbc190133b305643f2c","impliedFormat":99},{"version":"61bb64660ee150f3ab618340e15cca0a81664801bede7c966ca0eca3a952fe63","impliedFormat":99},{"version":"3b89216a7e38a454985ad17bb2ff85792837dc812f2a89fa5f60ad0a2e216fa7","impliedFormat":99},{"version":"16fe60bb544cfedfd2b5bb2f7d0b3957be7978706d57d9f06edc9c0c8dbdba23","impliedFormat":99},{"version":"82179358c2d9d7347f1602dc9300039a2250e483137b38ebf31d4d2e5519c181","impliedFormat":99},{"version":"4e003c868b0d8f8ad200b96cbc653e18e513fa23e1c19c4fe3cc25d4394efc47","impliedFormat":99},{"version":"605450898939e8abce51e8085a41b60640278337a969c33cd6b169e7c4f9c3f2","impliedFormat":99},{"version":"42a12f2faa483c9b48195ed794d22698162274e755f6e07219c2351c4f08d732","impliedFormat":99},{"version":"ec0c42bb0f465e4993f2bc68a6ce9df9a2dcbc7b83e21748f82f1b69561938e3","impliedFormat":99},{"version":"f50ff37a9cbbe74475f426474d9827083c7c2c138a954d28f1690df338f69291","impliedFormat":99},{"version":"61fd6c17235d530c40f543dd7c40afab091d91c1ef890baeed30db6d82b04b28","impliedFormat":99},{"version":"bcbd3becd08b4515225880abea0dbfbbf0d1181ce3af8f18f72f61edbe4febfb","impliedFormat":99},{"version":"091767bc841f937654ed597d49e023ed59850355e746ae1a6f20ab31076ee1fb","impliedFormat":99},{"version":"19c6d6135af59693698d384050b45a8a049493500add442f58e4bd7c8a255ab6","impliedFormat":99},{"version":"6a0dba12d55314638a8c51108b20fe2f68f1364a619d098918bda91c22dec154","impliedFormat":99},{"version":"c76c02846ba7d40b9b3488f0e8d75d02cbdee2f0bc5fcd55dd3bd2e1457646ea","impliedFormat":99},{"version":"4ead13a482c539b77394b2a97e3b877b809eac596390371cea490286f53b996a","impliedFormat":99},{"version":"06db2f8ba1d1dfacf04529cb731081ab23f133f29c7608ebdfbcab356996827c","impliedFormat":99},{"version":"427fe2004642504828c1476d0af4270e6ad4db6de78c0b5da3e4c5ca95052a99","impliedFormat":1},{"version":"2eeffcee5c1661ddca53353929558037b8cf305ffb86a803512982f99bcab50d","impliedFormat":99},{"version":"9afb4cb864d297e4092a79ee2871b5d3143ea14153f62ef0bb04ede25f432030","affectsGlobalScope":true,"impliedFormat":99},{"version":"5c935b7fc4ddc1410ea1cd7cd4e35ed106a6e4920dd27a9480a40fd224359dc3","affectsGlobalScope":true,"impliedFormat":99},{"version":"ed9bb55ddcbebd5cb3eee991f57ff21438546ee40ee1c310281bd12a6c7cf65b","impliedFormat":99},{"version":"69bf2422313487956e4dacf049f30cb91b34968912058d244cb19e4baa24da97","impliedFormat":99},{"version":"6987dfb4b0c4e02112cc4e548e7a77b3d9ddfeffa8c8a2db13ceac361a4567d9","impliedFormat":99},{"version":"4ffba3c5848b4fe62ee59b754fd5f256ad9656a0db6d37b9a2a8cb40dfc7ac21","impliedFormat":99},{"version":"c76c02846ba7d40b9b3488f0e8d75d02cbdee2f0bc5fcd55dd3bd2e1457646ea","impliedFormat":99},{"version":"5e2ba3d18d78aebbde1f34bde356e41e9c76eeaeaeee56a37036596a9eff4211","impliedFormat":99},{"version":"8280ae8ccc0493b32d1742d585357ab9f0a508ea050af25a5a20d64010d0a5cf","impliedFormat":99},{"version":"7adfd9f9056ecd4ae6c65fde2a98654960c662714c73f048478959d04c09e144","impliedFormat":99},{"version":"32b35cf0dc3a1b1a7118b61c34ce2ad1a29695851679f9ec34e0776f2ece2a69","impliedFormat":99},{"version":"b413fbc6658fe2774f8bf9a15cf4c53e586fc38a2d5256b3b9647da242c14389","impliedFormat":99},{"version":"59e5e964b84fdb2378e9455e4e59405030e4ed2b4c6f891ce395f17796af3cbb","impliedFormat":99},{"version":"c30a41267fc04c6518b17e55dcb2b810f267af4314b0b6d7df1c33a76ce1b330","impliedFormat":1},{"version":"72422d0bac4076912385d0c10911b82e4694fc106e2d70added091f88f0824ba","impliedFormat":1},{"version":"da251b82c25bee1d93f9fd80c5a61d945da4f708ca21285541d7aff83ecb8200","impliedFormat":1},{"version":"64db14db2bf37ac089766fdb3c7e1160fabc10e9929bc2deeede7237e4419fc8","impliedFormat":1},{"version":"98b94085c9f78eba36d3d2314affe973e8994f99864b8708122750788825c771","impliedFormat":1},{"version":"90ba95a763101bb61b8a799731a2ed60b5016b8135c1a2d5186862d4b534d4a1","impliedFormat":99},{"version":"32baa5c00d606c1b0dad9dacbed6795a4bf0b6ae7acaed8e1dc5701f861371eb","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"28b43c1487a6fcaf55869e7c5a81723081d053f8139fafbc87dc919777db0742","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"3aac927492698d7b9bf70ca2979f84716a43646ee261d24552c6663049e6f26e","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"69ce6e6c4cd59212e7133fbe6ca0176d26e6f3750ee01a8123685a7887a97b95","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"07aa99bc820ee254f53596d1db8f283ff2d4c48be213bc6157bfbb2649e4b1a0","0d0155d8b8d79857135f0656994ba844af7a37f9bb3c66e25ae277aeb3ae3f67","970dc049529fb07b6657ab7ff17a603d4590b4b6f34ac53587c75ffeaacba114","b2a49f121155699a81727364697219bee65dff69129cd269f8e4e65a6f90bf0e","5dfccd6e5e676e0ee22ba702dcf9db213ef4f013c6593166a5101c6c64da24c6","e332a1689fdd5f6fbfbdd37d20b60e9ef5b87dc3afc1e789a89043985b032dea","23d55968f9d8e8159716fd023fdf5c7a15989e12e96d40c7938ec530d7fac65e","2fa0b7f452a9efef199d759ce1f9ae0361215d5daf66b8dbea836ed238e8b5ae","f1782a17b8b8f8d7ea83e965a722851b54907d2945014bfffbad07819d806d03","5756fb5f730efc148304d6069d2a0d0f0694d0ad0e997d0ef53ce2787ffc15d4","db2dfbd2cba08da193f6a40c5e0acb1a1b88100bc6a9d25d7b032a0a4d397743","35480596a68b90153dc90439923b7e6aa980ed0c3c1ddd203fd2067e0a66e6ec","3fe0d716eb5217ccae5a435c9981bc64f9d053b976b0b170a97ff45682d7b94e","988d90349233a6e755ff7ef07995d0fdc791ecd9932b5aae67b5d6628d5e0785",{"version":"84bcc7c6b06f4d643a55dc63b56be0c81d990f8d549b66ea615c553268774dc3","impliedFormat":1},{"version":"2d225e7bda2871c066a7079c88174340950fb604f624f2586d3ea27bb9e5f4ff","impliedFormat":1},{"version":"6a785f84e63234035e511817dd48ada756d984dd8f9344e56eb8b2bdcd8fd001","impliedFormat":1},{"version":"c1422d016f7df2ccd3594c06f2923199acd09898f2c42f50ea8159f1f856f618","impliedFormat":1},{"version":"2973b1b7857ca144251375b97f98474e9847a890331e27132d5a8b3aea9350a8","impliedFormat":1},{"version":"0eb6152d37c84d6119295493dfcc20c331c6fda1304a513d159cdaa599dcb78b","impliedFormat":1},{"version":"237df26f8c326ca00cd9d2deb40214a079749062156386b6d75bdcecc6988a6b","impliedFormat":1},{"version":"cd44995ee13d5d23df17a10213fed7b483fabfd5ea08f267ab52c07ce0b6b4da","impliedFormat":1},{"version":"58ce1486f851942bd2d3056b399079bc9cb978ec933fe9833ea417e33eab676e","impliedFormat":1},{"version":"7557d4d7f19f94341f4413575a3453ba7f6039c9591015bcf4282a8e75414043","impliedFormat":1},{"version":"a3b2cc16f3ce2d882eca44e1066f57a24751545f2a5e4a153d4de31b4cac9bb5","impliedFormat":1},{"version":"ac2b3b377d3068bfb6e1cb8889c99098f2c875955e2325315991882a74d92cc8","impliedFormat":1},{"version":"8deb39d89095469957f73bd194d11f01d9894b8c1f1e27fbf3f6e8122576b336","impliedFormat":1},{"version":"a38a9c41f433b608a0d37e645a31eecf7233ef3d3fffeb626988d3219f80e32f","impliedFormat":1},{"version":"8e1428dcba6a984489863935049893631170a37f9584c0479f06e1a5b1f04332","impliedFormat":1},{"version":"1fce9ecb87a2d3898941c60df617e52e50fb0c03c9b7b2ba8381972448327285","impliedFormat":1},{"version":"5ef0597b8238443908b2c4bf69149ed3894ac0ddd0515ac583d38c7595b151f1","impliedFormat":1},{"version":"ac52b775a80badff5f4ac329c5725a26bd5aaadd57afa7ad9e98b4844767312a","impliedFormat":1},{"version":"6ae5b4a63010c82bf2522b4ecfc29ffe6a8b0c5eea6b2b35120077e9ac54d7a1","impliedFormat":1},{"version":"dd7109c49f416f218915921d44f0f28975df78e04e437c62e1e1eb3be5e18a35","impliedFormat":1},{"version":"eee181112e420b345fc78422a6cc32385ede3d27e2eaf8b8c4ad8b2c29e3e52e","impliedFormat":1},{"version":"25fbe57c8ee3079e2201fe580578fab4f3a78881c98865b7c96233af00bf9624","impliedFormat":1},{"version":"62cc8477858487b4c4de7d7ae5e745a8ce0015c1592f398b63ee05d6e64ca295","impliedFormat":1},{"version":"cc2a9ec3cb10e4c0b8738b02c31798fad312d21ef20b6a2f5be1d077e9f5409d","impliedFormat":1},{"version":"4b4fadcda7d34034737598c07e2dca5d7e1e633cb3ba8dd4d2e6a7782b30b296","impliedFormat":1},{"version":"360fdc8829a51c5428636f1f83e7db36fef6c5a15ed4411b582d00a1c2bd6e97","impliedFormat":1},{"version":"1cf0d15e6ab1ecabbf329b906ae8543e6b8955133b7f6655f04d433e3a0597ab","impliedFormat":1},{"version":"7c9f98fe812643141502b30fb2b5ec56d16aaf94f98580276ae37b7924dd44a4","impliedFormat":1},{"version":"b3547893f24f59d0a644c52f55901b15a3fa1a115bc5ea9a582911469b9348b7","impliedFormat":1},{"version":"596e5b88b6ca8399076afcc22af6e6e0c4700c7cd1f420a78d637c3fb44a885e","impliedFormat":1},{"version":"adddf736e08132c7059ee572b128fdacb1c2650ace80d0f582e93d097ed4fbaf","impliedFormat":1},{"version":"d4cad9dc13e9c5348637170ddd5d95f7ed5fdfc856ddca40234fa55518bc99a6","impliedFormat":1},{"version":"d70675ba7ba7d02e52b7070a369957a70827e4b2bca2c1680c38a832e87b61fd","impliedFormat":1},{"version":"3be71f4ce8988a01e2f5368bdd58e1d60236baf511e4510ee9291c7b3729a27e","impliedFormat":1},{"version":"423d2ccc38e369a7527988d682fafc40267bcd6688a7473e59c5eea20a29b64f","impliedFormat":1},{"version":"2f9fde0868ed030277c678b435f63fcf03d27c04301299580a4017963cc04ce6","impliedFormat":1},{"version":"feeb73d48cc41c6dd23d17473521b0af877751504c30c18dc84267c8eeea429a","impliedFormat":1},{"version":"25f1159094dc0bf3a71313a74e0885426af21c5d6564a254004f2cadf9c5b052","impliedFormat":1},{"version":"cde493e09daad4bb29922fe633f760be9f0e8e2f39cdca999cce3b8690b5e13a","impliedFormat":1},{"version":"3d7f9eb12aface876f7b535cc89dcd416daf77f0b3573333f16ec0a70bcf902a","impliedFormat":1},{"version":"4304f640f7cb4724ea82441accb7c7607fa7207541182470d625adda99b2900b","impliedFormat":1},{"version":"e0205f04611bea8b5b82168065b8ef1476a8e96236201494eb8c785331c43118","impliedFormat":1},{"version":"62d26d8ba4fa15ab425c1b57a050ed76c5b0ecbffaa53f182110aa3a02405a07","impliedFormat":1},{"version":"9941cbf7ca695e95d588f5f1692ab040b078d44a95d231fa9a8f828186b7b77d","impliedFormat":1},{"version":"41b8775befd7ded7245a627e9f4de6110236688ce4c124d2d40c37bc1a3bfe05","impliedFormat":1},"05fd6dfdbff1e9350d6b28695d216375cbc1fbc9d071b8452793e97145efdbd2","52ec1aa6ed487b5ea5e7e20b6793ab1da2095e0d208d104705095c303ecc460e","48ad54425b0ee70655824ccc3e4b22d5aaad1d5bb2e227dc08bc94beb7df313b","805f87719ebf1d3f48eaad23c7cea5c3ecbcdd08d34d3825b1eafe3398d43bda","4b016addf25412b96bf16ab6fe0a8a7fc4f4e670d9cbaae5cf837535cd8a5a54","99afe943599bec620d28be7483daf9d7ad633f5843e5a5967e176e478965d332","88a639f45874bcd7110bdc692787328e4a5ac1083c80d350764d052270c25195","3abdcbb5ee503b89fbb9d2047a58b33c3e736b6eec5a28a9990ec5ebedb868e6","0e1caa1fae3b9cc0b9ce1c543583acb072b326e849cea553e68488cb5aba8b7e","090a347d7ccf886535d2b5b915fd1c2185a9b0bfaab73b346e8bf70af512c0d5","e314ebdd22846befec7b2be461b52c550e83fedbd76acb5d8a80c7aa40f1d342","5cf2ae99d6f151b6def775e36ec34017cc1277489a4391d6269b7e86d0debf3e","b7293d08e26c1520769c059bf84ef94104992f5dac5caa6e3d45e88ff5072add","e13fe0999c95a070072dec5a227e45e143b53945a220224948dc951a2e0cf9d5","d97c61db5f37d822049b893ee8e9966c2f7e75e93805e3776caa7a8347f87322","2dce0ec1be6c4852fa7ea58ef0888ce0c0f10f3f536c54b947bd0d32fb10d098","4ae924bd3c7ca5cd73ad1660372b03cb00126ae2fe77c463b204e2797f28d3c6","a192a90b774c8792df313f71af4ea361525344aff8328ddc67906cb4c2ee9d22","b42140a56b815be68f2aaee097fdcb7721dac965a08599354d694163f02b6a5b","efc37b34dd389289dd0c2766cd76ea8455288344b8f2c0462586e3231f2ee312","190a30f6f9c863490e5960a587a3d72713c729b628e399f623f989d1635592b7","5a7b00f11e9a87edb4e9533bd11f3b5bf8c401d9d69d2f36ecef3df26a312110","341c591278ac937655b0416b2c0a5d314ebc2004f33a1328c9f227d8f850d28b","8e13f99b3a9144196a544c5dccea2fee345c6abd264895ffbdf89d03b6154f72","dfe7eef0555136ec56ecd5a834542243790458542455e77e37405b08f883920f","d24a344ad57ad53ccecd2fa188c4a4ab2243f5f7a9afb73a592040b512f067af","55b3b3d14e0017c5c534cbe93dbf665bb3c8a352b5f2f7c4b6fad0c7675fe1c8","74b6ebcac6e248128ac9b2972c9e50eb0ad48f76e4449dde5d012deedb9d0988","87089bbda669ffac032e83664b35a8c2e53dd87f127ee7a984920c3dd6823721","0d81076132183a97ec510145a0d60492031d7c617f2ff7fe8f35edea827ee0b3","564ca8274db5e72a7cdaafcee44ef593ab06be9237d00c463bd9c209b2d79100","a1d3016d88cd96907bb43d25981f3442cdcee22ba9f78f2a3e77a086298969a8","6c70d81036246c9137139acbf472b8d05f32abcc21fd203ea4ec837bd02c1723","5666abc02391a07d501c8c72b4110337702941ccdb567bd53cf49ec68a760879","9e0eae079db6f55fc43e718b1659d6bc26efcef4af23945c4e450c210d1972b4","dd261dd8d827f7e7f9e467e1281d5aee4b55727c1e6cca190f5f663eb28aa2e3","bccb47ea6d762ae672338ccddc94476486f3c81eb2a5391de363a9e17e25b6b8","1c472b3555b9551b2d59d461ead635e4f05c2bc10943570c189ca767542bb242","30164aca6b610537b5f3c740809c3e8d520d32afa32ce7b20be1e7c441e0212c",{"version":"7dda85653f22156858c7e29712c6b0a7ec727cd85de2e6c2e3302cf8ce93d70b","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"1fb9241b0aa37b8875d48e5b913ef8c4ae84a0df3c77c02b1ac5b9ff20c0980f","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"0b6fe5c153960792c8cd492905cca0b08eaf4f2eff73e67d5e3f84c1a7f0519e","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"a68edd63e547c03f17c538030f63105c3c1d97d5bd30df4b357abbac5852286f","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"e45861f688cd18040c8003cf027043c3887e3b2b9ed03077606dbc47103d9e33","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"778cc897891d50493448d3db33584710b8a259f351e07980d8763a1bcd7a189c","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"0f65351c3fb288d0fff8dcd62e259ea98eaab18999b4a3a7ea4c63d06b1231f0","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"}],"root":[79,100,[175,180],[229,232],[331,337]],"options":{"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":true,"exactOptionalPropertyTypes":true,"module":99,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noImplicitReturns":true,"noUncheckedIndexedAccess":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","rootDir":"../src","skipLibCheck":true,"strict":true,"target":9,"tsBuildInfoFile":"./.tsbuildinfo","useDefineForClassFields":true,"verbatimModuleSyntax":true},"referencedMap":[[161,1],[160,2],[162,3],[159,4],[164,5],[158,6],[142,7],[140,8],[139,9],[144,10],[141,11],[138,8],[137,9],[143,11],[136,12],[134,13],[210,14],[211,15],[218,16],[219,17],[190,18],[189,19],[212,18],[197,20],[199,21],[198,22],[206,23],[188,24],[182,25],[184,26],[186,27],[187,25],[291,28],[250,29],[249,30],[254,31],[289,32],[286,33],[288,34],[251,33],[252,35],[256,35],[255,36],[253,37],[287,38],[285,33],[290,39],[257,40],[262,33],[264,33],[259,33],[260,40],[266,33],[267,41],[258,33],[263,33],[265,33],[261,33],[281,42],[280,33],[282,43],[276,33],[278,33],[277,33],[273,33],[279,44],[274,33],[275,45],[268,33],[269,33],[270,33],[271,33],[272,33],[225,46],[227,47],[226,48],[224,49],[193,50],[196,51],[194,50],[195,52],[214,53],[204,54],[200,55],[201,20],[221,56],[215,57],[202,58],[220,59],[203,60],[228,61],[222,62],[229,63],[230,64],[231,65],[232,66],[331,67],[332,68],[333,69],[334,70],[335,68],[336,71],[337,71],[79,72],[100,73],[176,74],[175,75],[178,76],[180,77],[179,78],[177,75],[101,72],[102,72],[103,79],[170,80],[171,81],[174,82],[172,83],[173,84],[319,85],[328,86],[324,72],[326,87],[327,85],[125,88],[106,89],[107,90],[108,89],[128,91],[112,89],[127,92],[169,93],[168,94],[114,95],[115,96],[126,97],[116,98],[120,99],[119,100],[121,101],[105,89],[118,102],[117,103],[124,104],[302,105],[303,106],[304,107],[299,72],[301,108],[300,72],[330,109],[305,110],[306,111],[312,112],[313,113],[314,114],[310,115],[311,114],[329,116],[315,117],[82,118],[83,119],[81,120],[84,119],[86,119],[88,121],[99,122],[89,119],[90,119],[92,119],[93,121],[94,123],[95,121],[96,119],[97,119],[98,119],[233,72],[296,124],[239,125],[240,72],[241,72],[234,72],[242,72],[243,72],[236,72],[309,126],[297,72],[298,127],[245,72],[246,72],[308,72],[294,72],[293,128],[238,129],[292,130],[237,131],[235,72],[295,72],[157,132],[167,133],[166,134],[165,132],[147,135],[148,136],[146,136],[156,137],[151,136],[152,136],[153,136],[154,136],[155,138],[63,139],[65,140],[64,141],[74,142],[76,72],[69,72],[77,143],[78,144],[67,145],[66,146],[72,147],[71,148],[75,149]],"latestChangedDtsFile":"./__tests__/web-audio-engine-decode-recovery.unit.test.d.ts","version":"6.0.3"}
|
|
1
|
+
{"fileNames":["../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../types/dist/animation-target.d.ts","../../types/dist/asset-errors.d.ts","../../types/dist/result.d.ts","../../types/dist/asset-evidence.d.ts","../../types/dist/asset.d.ts","../../types/dist/material/color-space.d.ts","../../types/dist/material/asset.d.ts","../../types/dist/vfx.d.ts","../../types/dist/asset-runtime.d.ts","../../types/dist/handle.d.ts","../../types/dist/material/errors.d.ts","../../types/dist/material/resolve.d.ts","../../types/dist/material/index.d.ts","../../types/dist/asset-producer.d.ts","../../types/dist/catalog.d.ts","../../types/dist/runtime-scope.d.ts","../../types/dist/derive-paramschema.d.ts","../../types/dist/import.d.ts","../../types/dist/index.d.ts","../src/audio-importer.ts","../../math/dist/types.d.ts","../../math/dist/circle2.d.ts","../../math/dist/box2.d.ts","../../math/dist/box3.d.ts","../../math/dist/color.d.ts","../../math/dist/easing.d.ts","../../math/dist/euler.d.ts","../../math/dist/f32-to-f16-bytes.d.ts","../../math/dist/frustum.d.ts","../../math/dist/mat3.d.ts","../../math/dist/mat4.d.ts","../../math/dist/noise.d.ts","../../math/dist/quat.d.ts","../../math/dist/ray.d.ts","../../math/dist/ray2.d.ts","../../math/dist/sphere.d.ts","../../math/dist/vec2.d.ts","../../math/dist/vec3.d.ts","../../math/dist/vec4.d.ts","../../math/dist/index.d.ts","../src/audio-listener-sync-system.ts","../../audio/dist/assets/audio-decoder.d.ts","../../audio/dist/audio-backend.d.ts","../../audio/dist/audio-intent.d.ts","../../ecs/dist/entity-handle.d.ts","../../ecs/dist/storage/column.d.ts","../../ecs/dist/component-schema.d.ts","../../ecs/dist/component.d.ts","../../ecs/dist/entity.d.ts","../../ecs/dist/errors/query-and-component-errors.d.ts","../../ecs/dist/errors/relationship-errors.d.ts","../../ecs/dist/errors/sprite-and-shared-errors.d.ts","../../ecs/dist/errors/validation-errors.d.ts","../../ecs/dist/world-internal.d.ts","../../ecs/dist/query/query.d.ts","../../ecs/dist/relationship-index.d.ts","../../ecs/dist/shared-ref-store.d.ts","../../ecs/dist/world-change-journal.d.ts","../../ecs/dist/storage/table.d.ts","../../ecs/dist/storage/archetype.d.ts","../../ecs/dist/storage/archetype-graph.d.ts","../../ecs/dist/storage/change-detection.d.ts","../../ecs/dist/time.d.ts","../../ecs/dist/schedule-token.d.ts","../../ecs/dist/world.d.ts","../../ecs/dist/commands.d.ts","../../ecs/dist/schedule.d.ts","../../ecs/dist/execution/shared-kernel.d.ts","../../ecs/dist/errors.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cosmokit@1.8.2/node_modules/@deepseek-ai/cosmokit/lib/types/array.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cosmokit@1.8.2/node_modules/@deepseek-ai/cosmokit/lib/types/types.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cosmokit@1.8.2/node_modules/@deepseek-ai/cosmokit/lib/types/misc.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cosmokit@1.8.2/node_modules/@deepseek-ai/cosmokit/lib/types/string.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cosmokit@1.8.2/node_modules/@deepseek-ai/cosmokit/lib/types/time.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cosmokit@1.8.2/node_modules/@deepseek-ai/cosmokit/lib/types/index.d.ts","../../../node_modules/.pnpm/@standard-schema+spec@1.1.0/node_modules/@standard-schema/spec/dist/index.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.1_@deepseek-ai+cordis-plugin-loader@1.0.2/node_modules/@deepseek-ai/cordis/lib/types/utils.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.1_@deepseek-ai+cordis-plugin-loader@1.0.2/node_modules/@deepseek-ai/cordis/lib/types/registry.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.1_@deepseek-ai+cordis-plugin-loader@1.0.2/node_modules/@deepseek-ai/cordis/lib/types/reflect.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.1_@deepseek-ai+cordis-plugin-loader@1.0.2/node_modules/@deepseek-ai/cordis/lib/types/fiber.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.1_@deepseek-ai+cordis-plugin-loader@1.0.2/node_modules/@deepseek-ai/cordis/lib/types/events.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.1_@deepseek-ai+cordis-plugin-loader@1.0.2/node_modules/@deepseek-ai/cordis/lib/types/logger.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.1_@deepseek-ai+cordis-plugin-loader@1.0.2/node_modules/@deepseek-ai/cordis/lib/types/context.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.1_@deepseek-ai+cordis-plugin-loader@1.0.2/node_modules/@deepseek-ai/cordis/lib/types/service.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.1_@deepseek-ai+cordis-plugin-loader@1.0.2/node_modules/@deepseek-ai/cordis/lib/types/index.d.ts","../../tool-runtime/dist/types.d.ts","../../tool-runtime/dist/errors.d.ts","../../tool-runtime/dist/artifacts.d.ts","../../tool-runtime/dist/capability.d.ts","../../tool-runtime/dist/carrier.d.ts","../../tool-runtime/dist/lease.d.ts","../../tool-runtime/dist/migration.d.ts","../../tool-runtime/dist/runtime.d.ts","../../tool-runtime/dist/snapshot.d.ts","../../tool-runtime/dist/timing.d.ts","../../tool-runtime/dist/transport.d.ts","../../tool-runtime/dist/index.d.ts","../../plugin/dist/capability.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis-plugin-loader@1.0.2_patch_hash=6e77a3b82171afbdac249c0e31290cc06386_1a14a168fdebad14b739afc92f305e1c/node_modules/@deepseek-ai/cordis-plugin-loader/lib/types/internal.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis-plugin-loader@1.0.2_patch_hash=6e77a3b82171afbdac249c0e31290cc06386_1a14a168fdebad14b739afc92f305e1c/node_modules/@deepseek-ai/cordis-plugin-loader/lib/types/config/tree.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis-plugin-loader@1.0.2_patch_hash=6e77a3b82171afbdac249c0e31290cc06386_1a14a168fdebad14b739afc92f305e1c/node_modules/@deepseek-ai/cordis-plugin-loader/lib/types/config/group.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis-plugin-loader@1.0.2_patch_hash=6e77a3b82171afbdac249c0e31290cc06386_1a14a168fdebad14b739afc92f305e1c/node_modules/@deepseek-ai/cordis-plugin-loader/lib/types/config/entry.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis-plugin-loader@1.0.2_patch_hash=6e77a3b82171afbdac249c0e31290cc06386_1a14a168fdebad14b739afc92f305e1c/node_modules/@deepseek-ai/cordis-plugin-loader/lib/types/config/isolate.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis-plugin-loader@1.0.2_patch_hash=6e77a3b82171afbdac249c0e31290cc06386_1a14a168fdebad14b739afc92f305e1c/node_modules/@deepseek-ai/cordis-plugin-loader/lib/types/config/utils.d.ts","../../../node_modules/.pnpm/@deepseek-ai+cordis-plugin-loader@1.0.2_patch_hash=6e77a3b82171afbdac249c0e31290cc06386_1a14a168fdebad14b739afc92f305e1c/node_modules/@deepseek-ai/cordis-plugin-loader/lib/types/index.d.ts","../../plugin/dist/tool-plugin.d.ts","../../plugin/dist/loader.d.ts","../../plugin/dist/index.d.ts","../../ecs/dist/plugin-service.d.ts","../../ecs/dist/index.d.ts","../../audio/dist/audio-tick-system.d.ts","../../audio/dist/components.d.ts","../../audio/dist/plugin-factory.d.ts","../../audio/dist/plugin-service.d.ts","../../audio/dist/index.d.ts","../src/clip-loader.ts","../src/audio-loader.ts","../src/web-audio-engine.ts","../src/host-audio-consumer.ts","../src/plugin.ts","../src/index.ts","../../../node_modules/.pnpm/@vitest+pretty-format@4.0.18/node_modules/@vitest/pretty-format/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.0.18/node_modules/@vitest/utils/dist/display.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.0.18/node_modules/@vitest/utils/dist/types.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.0.18/node_modules/@vitest/utils/dist/helpers.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.0.18/node_modules/@vitest/utils/dist/timers.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.0.18/node_modules/@vitest/utils/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+runner@4.0.18/node_modules/@vitest/runner/dist/tasks.d-C7UxawJ9.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.0.18/node_modules/@vitest/utils/dist/types.d-BCElaP-c.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.0.18/node_modules/@vitest/utils/dist/diff.d.ts","../../../node_modules/.pnpm/@vitest+runner@4.0.18/node_modules/@vitest/runner/dist/types.d.ts","../../../node_modules/.pnpm/@vitest+runner@4.0.18/node_modules/@vitest/runner/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.0.18_@types+node@20.19.40_@vitest+browser-playwright@4.0.18_jiti@1.21.7_jsdom@26.1.0_lightningcss@1.32.0/node_modules/vitest/dist/chunks/traces.d.402V_yFI.d.ts","../../../node_modules/.pnpm/vite@7.3.6_@types+node@20.19.40_jiti@1.21.7_lightningcss@1.32.0/node_modules/vite/types/hmrPayload.d.ts","../../../node_modules/.pnpm/vite@7.3.6_@types+node@20.19.40_jiti@1.21.7_lightningcss@1.32.0/node_modules/vite/dist/node/chunks/moduleRunnerTransport.d.ts","../../../node_modules/.pnpm/vite@7.3.6_@types+node@20.19.40_jiti@1.21.7_lightningcss@1.32.0/node_modules/vite/types/customEvent.d.ts","../../../node_modules/.pnpm/vite@7.3.6_@types+node@20.19.40_jiti@1.21.7_lightningcss@1.32.0/node_modules/vite/types/hot.d.ts","../../../node_modules/.pnpm/vite@7.3.6_@types+node@20.19.40_jiti@1.21.7_lightningcss@1.32.0/node_modules/vite/dist/node/module-runner.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@4.0.18/node_modules/@vitest/snapshot/dist/environment.d-DHdQ1Csl.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@4.0.18/node_modules/@vitest/snapshot/dist/rawSnapshot.d-lFsMJFUd.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@4.0.18/node_modules/@vitest/snapshot/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.0.18_@types+node@20.19.40_@vitest+browser-playwright@4.0.18_jiti@1.21.7_jsdom@26.1.0_lightningcss@1.32.0/node_modules/vitest/dist/chunks/config.d.Cy95HiCx.d.ts","../../../node_modules/.pnpm/vitest@4.0.18_@types+node@20.19.40_@vitest+browser-playwright@4.0.18_jiti@1.21.7_jsdom@26.1.0_lightningcss@1.32.0/node_modules/vitest/dist/chunks/environment.d.CrsxCzP1.d.ts","../../../node_modules/.pnpm/vitest@4.0.18_@types+node@20.19.40_@vitest+browser-playwright@4.0.18_jiti@1.21.7_jsdom@26.1.0_lightningcss@1.32.0/node_modules/vitest/dist/chunks/rpc.d.RH3apGEf.d.ts","../../../node_modules/.pnpm/vitest@4.0.18_@types+node@20.19.40_@vitest+browser-playwright@4.0.18_jiti@1.21.7_jsdom@26.1.0_lightningcss@1.32.0/node_modules/vitest/dist/chunks/worker.d.Dyxm8DEL.d.ts","../../../node_modules/.pnpm/vitest@4.0.18_@types+node@20.19.40_@vitest+browser-playwright@4.0.18_jiti@1.21.7_jsdom@26.1.0_lightningcss@1.32.0/node_modules/vitest/dist/chunks/browser.d.ChKACdzH.d.ts","../../../node_modules/.pnpm/@vitest+spy@4.0.18/node_modules/@vitest/spy/dist/index.d.ts","../../../node_modules/.pnpm/tinyrainbow@3.1.0/node_modules/tinyrainbow/dist/index.d.ts","../../../node_modules/.pnpm/@types+deep-eql@4.0.2/node_modules/@types/deep-eql/index.d.ts","../../../node_modules/.pnpm/assertion-error@2.0.1/node_modules/assertion-error/index.d.ts","../../../node_modules/.pnpm/@types+chai@5.2.3/node_modules/@types/chai/index.d.ts","../../../node_modules/.pnpm/@vitest+expect@4.0.18/node_modules/@vitest/expect/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+runner@4.0.18/node_modules/@vitest/runner/dist/utils.d.ts","../../../node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.0.18_@types+node@20.19.40_@vitest+browser-playwright@4.0.18_jiti@1.21.7_jsdom@26.1.0_lightningcss@1.32.0/node_modules/vitest/dist/chunks/benchmark.d.DAaHLpsq.d.ts","../../../node_modules/.pnpm/vitest@4.0.18_@types+node@20.19.40_@vitest+browser-playwright@4.0.18_jiti@1.21.7_jsdom@26.1.0_lightningcss@1.32.0/node_modules/vitest/dist/chunks/global.d.B15mdLcR.d.ts","../../../node_modules/.pnpm/vitest@4.0.18_@types+node@20.19.40_@vitest+browser-playwright@4.0.18_jiti@1.21.7_jsdom@26.1.0_lightningcss@1.32.0/node_modules/vitest/dist/chunks/suite.d.BJWk38HB.d.ts","../../../node_modules/.pnpm/vitest@4.0.18_@types+node@20.19.40_@vitest+browser-playwright@4.0.18_jiti@1.21.7_jsdom@26.1.0_lightningcss@1.32.0/node_modules/vitest/dist/chunks/evaluatedModules.d.BxJ5omdx.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/utils.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/overloads.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/branding.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/messages.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.0.18_@types+node@20.19.40_@vitest+browser-playwright@4.0.18_jiti@1.21.7_jsdom@26.1.0_lightningcss@1.32.0/node_modules/vitest/dist/index.d.ts","../src/__tests__/audio-bus-name-owner.test-d.ts","../src/__tests__/audio-loader-contract.test.ts","../src/__tests__/audio-local-artifacts.test.ts","../src/__tests__/audio-webaudio.browser.test.ts","../../pack/dist/artifact-path.d.ts","../../pack/dist/errors.d.ts","../../pack/dist/scriptable-pack.d.ts","../../pack/dist/evidence/source-inventory.d.ts","../../pack/dist/scriptable-pack-node.d.ts","../../pack/dist/scanner.d.ts","../../pack/dist/catalog-builder.d.ts","../../pack/dist/catalog-delta.d.ts","../../pack/dist/catalog-projection.d.ts","../../pack/dist/config.d.ts","../../pack/dist/evidence/material-cook.d.ts","../../pack/dist/evidence/offline-evidence.d.ts","../../pack/dist/mesh-bin-contract.d.ts","../../pack/dist/package-finalizer.d.ts","../../pack/dist/producer-contract.d.ts","../../pack/dist/resolve-asset-source.d.ts","../../../node_modules/.pnpm/fast-uri@3.1.2/node_modules/fast-uri/types/index.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/codegen/code.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/codegen/scope.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/codegen/index.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/rules.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/util.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/subschema.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/errors.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/index.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/dataType.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/additionalItems.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/items2020.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/contains.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/dependencies.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/propertyNames.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/not.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/anyOf.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/oneOf.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/if.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/index.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/limitNumber.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/multipleOf.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/pattern.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/required.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/uniqueItems.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/const.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/enum.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/index.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/format/format.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/dependentRequired.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/discriminator/types.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/discriminator/index.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/errors.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/types/json-schema.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/types/jtd-schema.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/runtime/validation_error.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/ref_error.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/core.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/resolve.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/index.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/types/index.d.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/ajv.d.ts","../../pack/dist/schema-compiled.d.ts","../../pack/dist/runtime.d.ts","../../pack/dist/runtime-publication.d.ts","../../pack/dist/topology.d.ts","../../pack/dist/build.d.ts","../../pack/dist/native-cooker-registry.d.ts","../../pack/dist/native-cooker.d.ts","../../import/dist/import-product.d.ts","../../import/dist/importer-registry.d.ts","../../import/dist/import-runner.d.ts","../../import/dist/build-production.d.ts","../../import/dist/catalog-importer-policy.d.ts","../../import/dist/catalog-inventory.d.ts","../../import/dist/mesh-bin.d.ts","../../import/dist/pack-projection.d.ts","../../pack/dist/material/artifact-writer.d.ts","../../pack/dist/runtime-projection.d.ts","../../pack/dist/index.d.ts","../../import/dist/scriptable-pack.d.ts","../../import/dist/scriptable-source-package.d.ts","../../import/dist/scriptable-pack-host.d.ts","../../import/dist/scriptable-pack-output-producers.d.ts","../../import/dist/scriptable-pack-staged-snapshot.d.ts","../../import/dist/source-package.d.ts","../../import/dist/source-package-errors.d.ts","../../ddc/dist/build-cache.d.ts","../../ddc/dist/errors.d.ts","../../ddc/dist/entry-store.d.ts","../../ddc/dist/gc.d.ts","../../ddc/dist/key.d.ts","../../ddc/dist/layout.d.ts","../../ddc/dist/lifecycle.d.ts","../../ddc/dist/publication.d.ts","../../ddc/dist/runtime-scope.d.ts","../../ddc/dist/session.d.ts","../../ddc/dist/status.d.ts","../../ddc/dist/index.d.ts","../../import/dist/source-package-publication.d.ts","../../import/dist/index.d.ts","../src/__tests__/audio-webaudio.unit.test.ts","../src/__tests__/gain-automation.unit.test.ts","../src/__tests__/host-audio-consumer.unit.test.ts","../src/__tests__/root-surface.unit.test.ts","../src/__tests__/spatial-cleanup.test.ts","../src/__tests__/web-audio-engine-decode-recovery.browser.test.ts","../src/__tests__/web-audio-engine-decode-recovery.unit.test.ts"],"fileIdsList":[[144,159,160,164,167],[144,159,161,162,164,167],[134,144,161,162,164,167],[134,144,160,161,162,164,167],[134,144,158,159,160,161,162,163,164,167],[134],[134,136,137,138,139,140,141],[134,137,138,139,140,141,142],[134,135,136,137,138,139,140,141,142],[136,137,138,139,140,141,142,143],[136,137,138,139,140,141,142],[144,164,167],[129,130,131,132,133],[208,209],[135,182,186,189,191,206,207,210,215],[186,187,189,190],[186],[186,187,189],[186,187],[181,198,199],[181,198],[181,188],[181],[183],[181,182,183,184,185],[247,248,252,279,280,282,283,284,286,287],[245,246],[245],[247,287],[247,248,284,285,287],[287],[244,287,288],[247,248,286,287],[247,248,250,251,286,287],[247,248,249,286,287],[247,248,252,279,280,281,282,283,286,287],[244,247,248,252,284,286],[252,287],[254,255,256,257,258,259,260,261,262,263,287],[277,287],[253,264,272,273,274,275,276,278],[257,287],[265,266,267,268,269,270,271,287],[218,219],[218,219,220,221],[218,220],[218],[193],[193,194,195,196],[195],[191,212,213,215],[191,192,204,215],[181,189,191,200,215],[197],[181,191,200,203,211,214,215],[191,192,197,200,215],[191,212,213,214,215],[191,197,201,202,203,215],[181,186,189,191,192,197,200,201,202,203,204,205,206,211,212,213,214,215,216,217,222],[174,223],[176,223],[78,79,223],[176,177,223],[78,79,99,100,174,175,177,223,327],[177,223],[177,178,223],[180,223],[78,174,180,223],[78],[99],[78,175],[78,174],[78,174,177],[100,174,176,177,178,179],[167,168,173,178],[78,102],[78,102,169],[169],[78,101,102,103,170,171,172,173],[167,168,173],[102,167,168,173],[315],[314,315,316,317,318,319,320,321,322,323,324],[316,320],[78,104,107,113,124,128],[107],[78,104,105,106],[109,110,111,112,127],[114,123,126],[104,106,107,108,114,115,116,122,123,124,125,126,128,168],[124,167,168,173],[78,104,107,113,128],[104,107],[78,107,114,123,124,125,128],[78,128],[107,118,119,121],[107,118],[104,107,117,118,120],[104,105,107,121],[104],[78,104,107,113,114,115,116,121,122,123,126,127,128],[78,293,295,297,298],[293],[233,293],[78,296,297],[78,296,297,298,299,300,301,302,303,307,308,309,310,311,312,313,326],[78,240],[78,298],[78,230,233,293,295,297,298,307,308],[230,307],[78,230,307],[78,230,296,306],[78,313,325],[78,297,298],[80,81],[80],[80,82],[80,83],[80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98],[80,81,82],[78,228,230,233,234,235,236,237,238,239,240,241,242,243,290,291,292],[78,233],[78,228,230,238,239,240,242,289,292,304,305],[294],[78,229],[78,289],[78,229,230,232],[78,288],[78,230,231],[144,156,164,167],[144,157,164,165,166,167],[144,156,157,164,165,167],[145,146],[145],[145,146,147,148,149,150,151,152,153,154,155],[145,149],[61,62,64],[61,62,64,78],[63],[62,64,73],[61,73,74,75,78],[60,61,62,64,66,67,68,69,72,73,74,75,76,77],[65,78],[66],[65,66,70,71],[62,66,70],[73,74]],"fileInfos":[{"version":"bcd24271a113971ba9eb71ff8cb01bc6b0f872a85c23fdbe5d93065b375933cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f88bedbeb09c6f5a6645cb24c7c55f1aa22d19ae96c8e6959cbd8b85a707bc6","impliedFormat":1},{"version":"7fe93b39b810eadd916be8db880dd7f0f7012a5cc6ffb62de8f62a2117fa6f1f","impliedFormat":1},{"version":"bb0074cc08b84a2374af33d8bf044b80851ccc9e719a5e202eacf40db2c31600","impliedFormat":1},{"version":"1a7daebe4f45fb03d9ec53d60008fbf9ac45a697fdc89e4ce218bc94b94f94d6","impliedFormat":1},{"version":"f94b133a3cb14a288803be545ac2683e0d0ff6661bcd37e31aaaec54fc382aed","impliedFormat":1},{"version":"f59d0650799f8782fd74cf73c19223730c6d1b9198671b1c5b3a38e1188b5953","impliedFormat":1},{"version":"8a15b4607d9a499e2dbeed9ec0d3c0d7372c850b2d5f1fb259e8f6d41d468a84","impliedFormat":1},{"version":"26e0fe14baee4e127f4365d1ae0b276f400562e45e19e35fd2d4c296684715e6","impliedFormat":1},{"version":"d6b1eba8496bdd0eed6fc8a685768fe01b2da4a0388b5fe7df558290bffcf32f","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f57fc4404ff020bc45b9c620aff2b40f700b95fe31164024c453a5e3c163c54","impliedFormat":1},{"version":"eadcffda2aa84802c73938e589b9e58248d74c59cb7fcbca6474e3435ac15504","affectsGlobalScope":true,"impliedFormat":1},{"version":"105ba8ff7ba746404fe1a2e189d1d3d2e0eb29a08c18dded791af02f29fb4711","affectsGlobalScope":true,"impliedFormat":1},{"version":"00343ca5b2e3d48fa5df1db6e32ea2a59afab09590274a6cccb1dbae82e60c7c","affectsGlobalScope":true,"impliedFormat":1},{"version":"ebd9f816d4002697cb2864bea1f0b70a103124e18a8cd9645eeccc09bdf80ab4","affectsGlobalScope":true,"impliedFormat":1},{"version":"2c1afac30a01772cd2a9a298a7ce7706b5892e447bb46bdbeef720f7b5da77ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"7b0225f483e4fa685625ebe43dd584bb7973bbd84e66a6ba7bbe175ee1048b4f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0a4b8ac6ce74679c1da2b3795296f5896e31c38e888469a8e0f99dc3305de60","affectsGlobalScope":true,"impliedFormat":1},{"version":"3084a7b5f569088e0146533a00830e206565de65cae2239509168b11434cd84f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5079c53f0f141a0698faa903e76cb41cd664e3efb01cc17a5c46ec2eb0bef42","affectsGlobalScope":true,"impliedFormat":1},{"version":"32cafbc484dea6b0ab62cf8473182bbcb23020d70845b406f80b7526f38ae862","affectsGlobalScope":true,"impliedFormat":1},{"version":"fca4cdcb6d6c5ef18a869003d02c9f0fd95df8cfaf6eb431cd3376bc034cad36","affectsGlobalScope":true,"impliedFormat":1},{"version":"b93ec88115de9a9dc1b602291b85baf825c85666bf25985cc5f698073892b467","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5c06dcc3fe849fcb297c247865a161f995cc29de7aa823afdd75aaaddc1419b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b77e16112127a4b169ef0b8c3a4d730edf459c5f25fe52d5e436a6919206c4d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"fbffd9337146eff822c7c00acbb78b01ea7ea23987f6c961eba689349e744f8c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a995c0e49b721312f74fdfb89e4ba29bd9824c770bbb4021d74d2bf560e4c6bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"c7b3542146734342e440a84b213384bfa188835537ddbda50d30766f0593aff9","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce6180fa19b1cccd07ee7f7dbb9a367ac19c0ed160573e4686425060b6df7f57","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f02e2476bccb9dbe21280d6090f0df17d2f66b74711489415a8aa4df73c9675","affectsGlobalScope":true,"impliedFormat":1},{"version":"45e3ab34c1c013c8ab2dc1ba4c80c780744b13b5676800ae2e3be27ae862c40c","affectsGlobalScope":true,"impliedFormat":1},{"version":"805c86f6cca8d7702a62a844856dbaa2a3fd2abef0536e65d48732441dde5b5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e42e397f1a5a77994f0185fd1466520691456c772d06bf843e5084ceb879a0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"f4c2b41f90c95b1c532ecc874bd3c111865793b23aebcc1c3cbbabcd5d76ffb0","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab26191cfad5b66afa11b8bf935ef1cd88fabfcb28d30b2dfa6fad877d050332","affectsGlobalScope":true,"impliedFormat":1},{"version":"2088bc26531e38fb05eedac2951480db5309f6be3fa4a08d2221abb0f5b4200d","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb9d366c425fea79716a8fb3af0d78e6b22ebbab3bd64d25063b42dc9f531c1e","affectsGlobalScope":true,"impliedFormat":1},{"version":"500934a8089c26d57ebdb688fc9757389bb6207a3c8f0674d68efa900d2abb34","affectsGlobalScope":true,"impliedFormat":1},{"version":"689da16f46e647cef0d64b0def88910e818a5877ca5379ede156ca3afb780ac3","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc21cc8b6fee4f4c2440d08035b7ea3c06b3511314c8bab6bef7a92de58a2593","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ca53d13d2957003abb47922a71866ba7cb2068f8d154877c596d63c359fed25","affectsGlobalScope":true,"impliedFormat":1},{"version":"54725f8c4df3d900cb4dac84b64689ce29548da0b4e9b7c2de61d41c79293611","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5594bc3076ac29e6c1ebda77939bc4c8833de72f654b6e376862c0473199323","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f3eb332c2d73e729f3364fcc0c2b375e72a121e8157d25a82d67a138c83a95c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f4427f9642ce8d500970e4e69d1397f64072ab73b97e476b4002a646ac743b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"48915f327cd1dea4d7bd358d9dc7732f58f9e1626a29cc0c05c8c692419d9bb7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7bf9377723203b5a6a4b920164df22d56a43f593269ba6ae1fdc97774b68855","affectsGlobalScope":true,"impliedFormat":1},{"version":"db9709688f82c9e5f65a119c64d835f906efe5f559d08b11642d56eb85b79357","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b25b8c874acd1a4cf8444c3617e037d444d19080ac9f634b405583fd10ce1f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"37be57d7c90cf1f8112ee2636a068d8fd181289f82b744160ec56a7dc158a9f5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a917a49ac94cd26b754ab84e113369a75d1a47a710661d7cd25e961cc797065f","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d3261badeb7843d157ef3e6f5d1427d0eeb0af0cf9df84a62cfd29fd47ac86e","affectsGlobalScope":true,"impliedFormat":1},{"version":"195daca651dde22f2167ac0d0a05e215308119a3100f5e6268e8317d05a92526","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b11e4285cd2bb164a4dc09248bdec69e9842517db4ca47c1ba913011e44ff2f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0508571a52475e245b02bc50fa1394065a0a3d05277fbf5120c3784b85651799","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f9af488f510c3015af3cc8c267a9e9d96c4dd38a1fdff0e11dc5a544711415b","affectsGlobalScope":true,"impliedFormat":1},{"version":"fc611fea8d30ea72c6bbfb599c9b4d393ce22e2f5bfef2172534781e7d138104","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ce14b81c5cc821994aa8ec1d42b220dd41b27fcc06373bce3958af7421b77d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3a048b3e9302ef9a34ef4ebb9aecfb28b66abb3bce577206a79fee559c230da","affectsGlobalScope":true,"impliedFormat":1},"89fe170d9a59f81cd9a9d95de3278f108ff91491810b2529cc0ffb502a57b6c0","0b4928041c807c01b33b1fa028236df635c52f7acff5a40f2c2d0d677b53428b","5ad2e5b8b17893d0eb1f11a1b6e8c03b17344be03a6a72a624cd38ab05fe4d5c","6a1e553079e654a1771463e9eeb98ea4f7bb4b6417a5237d4fdf9b546d49647f","7f11be86b9ac5c2cd5127cd9d40ccc7694c58868a3157692a153d452fc171525","6e3488ee1183ea915eb43f08aebc5f75e30be25aef1f678d1965324bdd7506e1","bc2f20caa6ccca429df0bf6a6f21506c4b00f9b171fdc3a4b6ada1775252db31","a318d8734523d9e750681e7b8e685ef817d4049c5612451f4e849da8b2b572a9","8b52dd8be86f44f871db89a6c1f77f7585688d53141ff55b6c5fac3eb67b1241","beae2d03867dde9fdf8da461c7e7e84da71612842422d4b482ab1c2a15fe6b12","080e7748d9754ccaea8debbc933552c7976c1ef588f9642a6f07e5a4d139d43b","51342c51a9090c0bc8bae60c5ec1a0f46d6d44db84392f12a8cd46e6d8a9f617","ae777307a0baeb9b5d7ba18e6a029a54eb0b612b1491591dcedb020cc8d36f97","d7ba738e316b7baed10ca49cc156b57b8c973b747bec6612e62a925e9f7f33a4","1d5292578fcf0329a43ef19fe2481d7d1cde75e75610019a7897c70dcfff0b31","459b3765e622008ed590474ae6b61ab55107a7b9529a28d05087a6fef51d7248","e1f11ad703121f97a74001059d054aba25c9c4662af44da05ead0a247fe18742","d9c64d02dfe3a9c74da35fdbcc645cf4e8d4ca0f4162ec312de51474103ac3a7","f4fbd89956010d9d27d3bbc562f0e5e00d374ba03a3f3bb11bcc94f5505bc3d2",{"version":"793b30459b975a29dedd0faab4b0b0a5be1291761cf9ca08cc7c07eb684887fc","signature":"56de4fd28d02c2aafe103f9297828f1364b3b2c27e92d205d0d72b269115b9e2"},"728cc7c21f319d38b1dafdbdf1258350b675055a3fb61ae1a7c34562c58b8557","d474818de812636654d86a3f0f6f3b8f6ae725b5487f344a5d3a32decd68311f","87cb945db71dbb2cceac65375b84cc0c55bfe70a749b11e55b59a40df53503f6","dcadfb7e3411bb19e717855d891658f3d71c065248d25f09e027e4a6cdfa0e9f","1c3f1fae8db7ce0bb537e509ceb0243892e68a3b6e66ab1245c15932be41d037","b3b63929f7475d02520bde84913450bf633e86f6a5d51fcc13e95376ec3483a6","11fbb66f203aa1855d34dbb3d835879a75924cae9f08eb16997318fed41f9078","56d65795b8f53c0f68d66369fc42fb8f79f669f868fc8eda2f634297c47b156f","a35dc82e5a7955568d2883e308e7a3e138961dd3b40956b22fccd415dd307e4a","a10051e664b2713d31f07db5fdd71d0854732e57429cbfa00ebb329e89a27981","3cb9e3f85ef9f989394133fe2e4ef4f39da5578fe583124fc0cbb00474b471e8","8bbc25b37d24570dffba7209cb9e427a63c7eeed18412af5e57c450a37d6c059","27d3d1f171d4b7b86bdf1c352f22319c0915b17cfd919deb070bef13510a33a2","40a12a4c54a6564f2c1547a10bcafc9210fce809dc57d2a7815c918972f48895","a8f81f646b1bd12b6b0758d1f97cc6d26646d5ac72d92362cb3b340271589e8f","05d6d9fbf9c8fbb9fa36b4e0ad91292e57f6a9233dc407875d0fb06cdfd59bda","d08b909fffadfa1dece31aa587aca1c34782cafd9294c5c8b66cbab2aa897719","a49e93ed1861aa2493d363f26ee826ab71c7105b20c85cf8bd26bbb4e0b32cd6","9aca2738b7400d1d8c2d009ec6cbbaf3204e6413219edc962cea5bb6ef50db10","f23fc64dfc9c3e5b718eca7f1fdb0640d5c1f5c8993a599e66ce73ab33502036",{"version":"d5adf4f4514ce7f51abd7538bda26282ca1b98c3d66eeab86af86d449da39316","signature":"395fc5a92eeaf128582b6375d1727223c0a6cd0e60416840ec0a6eaf8062d587"},"29570e0238416ace9a95fd58fd848b3cc1e61a469efd6656ecccda985de43b34","718e98bc1f4cbc8553ddf6b0936203570349e13872ff56497a43fc24bd66ab11","997072a1ea95687cb14baa1217eec1ecb25fe6b62bf7c7ff7aab1fda172da6b3","b866405af1564f0690ea323f070c87509bfeb2ba8afa7c49c255dbe13c176bf8","ce648e4449eb59292b997226148647ce9ca22bc9ff9062959f5f1fe6bfe06cd8","ce3d7045ddbf0f8c968829a4e32d5064af66cba795f8c8490afec9eb677a4f45","6192bdb56ca09fde8176590331c36f3eec2fd5fb3ad7dd7401727efb2398d7fb","0810b73622b33b91f89f5d0f8b1fc0b92841e6b751a84d2c005508c563748d16","9a1b69540b9533e337c81d470724ebb054a15b994a11b759a969367b28e81368","854cbb22c44beb0fe44a46f5428521a27e8b9fb645e6ce803a5622ff44ec74ce","dd6776bc5480997847e4d3c495951de5f0401667e1880b6176f57584c49aa401","21f4110077118497558bb4ca8462c9cd1dfd391e6c1608bcac4b437a4ed77d7d","2278fcff8ca72dc791b3907ac363bd7370ec04e38653827c14c5dbd3fc99e335","ee7cd212dd2cfef9efd135a36a577fa35cb4af99f7e6fd3023cc9d2f7c6f438b","0bc016e4da8853d924fbfde9820db77121de75539641d02012232396b09e7dd6","6647e4b21b341f971ef92cbdbeaee6a42d77b291a43cdc73b970b2ad505bb912","2f9485d1b731e3d1d373c2a2a20e3ad41b55616b9fa13bf261d2a058cd23149b","d9df407e562a322f63c0cc3f1bcea9c1cbec38d0c92b3f49169291f22374cb6c","ba9d80c5b60b7708524491768da7d44a796042529ed945678f45356beb2504f9","7689fbecdcdb8f32296c94fe5cf5edef16a9db673d696a2aaa40ad54470e5965","2c2b0520a51bf2f420ec605fa5e327ea7d96732cc97a373c167e12ad71dda21f","5f15c8ce469d7e9da71f9ca502370c454eb29629d6c2e548fa722d00700dfb46","ce5251c882968a3ce8fc6c2e3b2c3b739a740f614eebf066b73e8ee7c5dc4f63","33652e868da0fef68b0f8622283a014fe66a21e409f4000e77778d9dc3edc8af","8f373e06438a141f82616c5e0b171e0bf613cc95aa1e6b8b41a8ae520dd2948e","5c9cf44d7fea3b0c9876102abc143967f2e7015dd0a89edcbe28a49906621206","6db8a395b3c5f988123adb6cc84b6410a82a060c4acde2491012b9b44b32b300","28d3e288a396ce5654f673fc8bc2330edb14e52dd33d75a3e999ecf68197de1a",{"version":"fb6f2007d60e8b519a2ef0c5a27026ddfe06418ae6261c4eb0cb670cca5e1bc2","impliedFormat":99},{"version":"a48f1b69ec0b94b16c7ece2cf6d6003cc8d0c329538117c1c364d8525a100850","impliedFormat":99},{"version":"cd5713ac354e4869fdf837e12d24d3ae14fd9d94a5bb2d340df63b899b74e6ca","impliedFormat":99},{"version":"56210599298d6eca6285eab99c7e9333d7e275c3a73a7f401b3055e8d55c67e8","impliedFormat":99},{"version":"2845576622e416da9871e1f3c788ba41dc4f24eb764362b10eceeb0dbaa67208","impliedFormat":99},{"version":"f0421e04e2a5238754cf444bf2a56fe7e7a94a08c14c1f9d063ff51c85825823","impliedFormat":99},{"version":"bdd14f07b4eca0b4b5203b85b8dbc4d084c749fa590bee5ea613e1641dcd3b29","impliedFormat":99},{"version":"967b227fad024ba8a7c32127534089bce5adc800840b0288f44d41c4c849278e","impliedFormat":99},{"version":"ffd229492af3cb444c01e8e51a78dfdbed670940bac40dde083675d57d6984fc","impliedFormat":99},{"version":"57cdef8252cb041b4b646cc9e80dcb27d2180bb78fcf95761136d99be4079cb3","impliedFormat":99},{"version":"eb5fd8d19b0330da4dccb6cab3eae0304f056ac8fbd5bd9589ce48f0920bff78","impliedFormat":99},{"version":"db565a086622cbe616a950186dc90e82a74060864b9cd1d0f25285860daea9b4","impliedFormat":99},{"version":"71087395cc862f52662ab2629a0f3838f8f2aaf84eb40c97f4f4004f2fcbbed6","impliedFormat":99},{"version":"1e2e6cfcab26ae01d7f2dd1f78a1d25ddb7f3b2e27f50c9eb3b54ee206a87884","impliedFormat":99},{"version":"489ec23ef8dc0e869cf3d8d77a39ba83ab24e5e71362320f5662491b3dc5bd04","impliedFormat":99},{"version":"c93dd79fae382105510c69cc8eef95a96c8c43e50b47e16efa98a3f9e76f304b","impliedFormat":99},"4a5b020726455dd70acdf34ccc435273e6333cbb1a3ff08b6c451148c61b21fd","eb4d76417ff2ac49726b2efaf83e5b9924f7040151293d092e1ba38905479a02","3bae912eb95706a507e668cdfe378bb612c81b46323aae337689fabc00c3ae29","129aaa58f8b8ed74d8ef3ab03d3219f1b5a7b2902c4e111e080abdaf043686ef","c0a9cb9a3fe662b66cf598c1e2e6bc799b423699b81249bb62586acbc817b1e7","7d3bbcb2ef65e80202188d77d2e06f30c5d5d2603ca49cde35a6b298565247e9","f90ae41777b29281dcd4aa3fafb9d84c6b328860d639114a8c3fcf36beb23817","eadfe727983087acea4f17095671faba65ba5233acaed7213f140269d4528c9a","6bbe3b367d76debfa83ec26a13d0013f8dad891cddd8909a1fbdcdb719b064d9","9fec96292881b3ee00f9b34d757887223221db25d0fb534b521743e9be298d9f","fbd59a37ab9b1a3a21f2e968b539f91453e560507d9e92748f0623f7118306be","92523b7353d096bd2464e1611035b284803894aa952541021922567dfe9f15aa","49ca23a8e2de57d49da1b5b5aa2f0e0d341b4230a899efe1a6078d3779e2ea53",{"version":"be53d0833468d1d4de05770f4af2d3ec465b7ef5d5181b748997a02bf362ebd0","impliedFormat":99},{"version":"4920f950330f6a8a00a084beb7998de838a15cd54f5c774962b75614c15f8bed","impliedFormat":99},{"version":"e892ea4cf5fc5e5ab078f265c617efa3ab44a1cbd477f91fd29a27698c45eb77","impliedFormat":99},{"version":"6a33bd0416049803becacbdccd852c02f342eedce7dea12956d1176966269eeb","impliedFormat":99},{"version":"f74c6749e3944913d8002c1dd30523c520de426e9113d47b6730565318349154","impliedFormat":99},{"version":"ac5d5fd3358d3f7491400869278ea288df297b4fbc1ba035c7fd09c8df822358","impliedFormat":99},{"version":"0ce13f49afeb385ad05698a5420580c7381d758779b730c1992be7386578e1e7","impliedFormat":99},"8fa74a106f75c2eed4b65fa571e4e9b78e9a3a68f65b6c70261e87f7f47b931d","d82719b8e8a552f66dea370df85e00f9473537bb9c35dcb711d7f48cb5e707cd","a3c435d1e1eb110bb7382103c522bf44e9abb8b6883a493360fc5859db0aee10","1487f3b04d5e9ed9c5d823ff91bedbd7a8ce7a4c44b7ef16fa64a2d930a731e9","18dfdac2f4092e68e453e7a9da3d0e800e597e82fa567c49c2c7bb4c4dfb26ff","455b84b15e5c72cbde647df2d4e276f7677f7a69352c2d8375e93c3b3adf1715","0a06cd881a2ec11333b1ce287ee0122dfd7bacf0a00be97856927838854ff53e","35fed00b2851f90aa0d18bac42c9c9a9bc793b622fbd714c2d4d177233177e7e","a697430f6e21400b80e57be942e0606d4f1b82623a81cc20a66e4888ead6962d","081df24260effcb73558b6d76f061d455af03e1cccb266be48a4fb5dbdc490c1",{"version":"a11f8abf96583410224263a8c4629115272d6f1e25ad2a3b5977f834fccaaefe","signature":"a6bd5e21fe59cbd369c60f60527e96b432696a481ffecbbcfcfac7d3dd21dc1f"},{"version":"43f586cc8b57ada584438a597acc9971e02be5acc8607bdd3202d96ff80ad406","signature":"aee062bd335fddd51e33939e25cde9e84e5b4555f301b23f9e55bb4663260dac"},{"version":"05737b1d4fcfcacb814a6cd67989d43aee9ba7142bdf3cc92d30938bd4be22a4","signature":"a837d3258c03c393f9bc76a166952ab455639de1e705e4b9ea8f4cd6accb9979"},{"version":"4c14fc5e56f88c0fd084aa14832156fe9c51851e0741c1b51635db747d7ad09a","signature":"2557f03e5f3bc7ce4a510d3cbc87adf5ba0040cee483c32f44a06dd6fe616771"},{"version":"467713c0f319eaee99063d93761e9d29ab1f0892e37af8784d608f19bf2f85fa","signature":"57efedc452265ca0c3ae6811bb8591edf826a6607eafe8fe9feff987a8799001"},{"version":"90e28686cf025204d56aaabdfc6310703ac812c9ea5df88aeb4eae9d2505e4a7","signature":"70830e418989555358c04d7f7d04d70a323b715a458047529e288aaeb0bc004a"},{"version":"acfb723d81eda39156251aed414c553294870bf53062429ebfcfba8a68cb4753","impliedFormat":99},{"version":"fa69a90381c2f85889722a911a732a5ee3596dc3acecda8a9aa2fa89b9615d8d","impliedFormat":99},{"version":"b5ce343886d23392be9c8280e9f24a87f1d7d3667f6672c2fe4aa61fa4ece7d4","impliedFormat":99},{"version":"57e9e1b0911874c62d743af24b5d56032759846533641d550b12a45ff404bf07","impliedFormat":99},{"version":"b0857bb28fd5236ace84280f79a25093f919fd0eff13e47cc26ea03de60a7294","impliedFormat":99},{"version":"5e43e0824f10cd8c48e7a8c5c673638488925a12c31f0f9e0957965c290eb14c","impliedFormat":99},{"version":"854cd3a3375ffc4e7a92b2168dd065d7ff2614b43341038a65cca865a44c00c5","impliedFormat":99},{"version":"ef13c73d6157a32933c612d476c1524dd674cf5b9a88571d7d6a0d147544d529","impliedFormat":99},{"version":"3b0a56d056d81a011e484b9c05d5e430711aaecd561a788bad1d0498aad782c7","impliedFormat":99},{"version":"2f863ee9b873a65d9c3338ea7aaddbdb41a9673f062f06983d712bd01c25dc6b","impliedFormat":99},{"version":"67aa128c2bc170b93794f191feffc65a4b33e878db211cfcb7658c4b72f7a1f5","impliedFormat":99},{"version":"ac3d263474022e9a14c43f588f485d549641d839b159ecc971978b90f34bdf6b","impliedFormat":99},{"version":"a7ca8df4f2931bef2aa4118078584d84a0b16539598eaadf7dce9104dfaa381c","impliedFormat":1},{"version":"10073cdcf56982064c5337787cc59b79586131e1b28c106ede5bff362f912b70","impliedFormat":99},{"version":"72950913f4900b680f44d8cab6dd1ea0311698fc1eefb014eb9cdfc37ac4a734","impliedFormat":1},{"version":"36977c14a7f7bfc8c0426ae4343875689949fb699f3f84ecbe5b300ebf9a2c55","impliedFormat":1},{"version":"ff0a83c9a0489a627e264ffcb63f2264b935b20a502afa3a018848139e3d8575","impliedFormat":99},{"version":"324ac98294dab54fbd580c7d0e707d94506d7b2c3d5efe981a8495f02cf9ad96","impliedFormat":99},{"version":"9ec72eb493ff209b470467e24264116b6a8616484bca438091433a545dfba17e","impliedFormat":99},{"version":"c35b8117804c639c53c87f2c23e0c786df61d552e513bd5179f5b88e29964838","impliedFormat":99},{"version":"c609331c6ed4ad4af54e101088c6a4dcb48f8db7b0b97e44a6efeb130f4331bd","impliedFormat":99},{"version":"bcbd3becd08b4515225880abea0dbfbbf0d1181ce3af8f18f72f61edbe4febfb","impliedFormat":99},{"version":"67acaedb46832d66c15f1b09fb7b6a0b7f41bdbf8eaa586ec70459b3e8896eb9","impliedFormat":99},{"version":"4535ab977ee871e956eb7bebe2db5de79f5d5ec7dfbbf1d35e08f4a2d6630dac","impliedFormat":99},{"version":"b79b5ed99f26ffb2f8ae4bdcc4b34a9542197dc3fa96cfb425c2a81e618cff28","impliedFormat":99},{"version":"31fd7c12f6e27154efb52a916b872509a771880f3b20f2dfd045785c13aa813f","impliedFormat":99},{"version":"06db2f8ba1d1dfacf04529cb731081ab23f133f29c7608ebdfbcab356996827c","impliedFormat":99},{"version":"427fe2004642504828c1476d0af4270e6ad4db6de78c0b5da3e4c5ca95052a99","impliedFormat":1},{"version":"2eeffcee5c1661ddca53353929558037b8cf305ffb86a803512982f99bcab50d","impliedFormat":99},{"version":"9afb4cb864d297e4092a79ee2871b5d3143ea14153f62ef0bb04ede25f432030","affectsGlobalScope":true,"impliedFormat":99},{"version":"4e258d11c899cb9ff36b4b5c53df59cf4a5ccae9a9931529686e77431e0a3518","affectsGlobalScope":true,"impliedFormat":99},{"version":"a5ae67a67f786ffe92d34b55467a40fb50fb0093e92388cadce6168fa42690fd","impliedFormat":99},{"version":"69bf2422313487956e4dacf049f30cb91b34968912058d244cb19e4baa24da97","impliedFormat":99},{"version":"6987dfb4b0c4e02112cc4e548e7a77b3d9ddfeffa8c8a2db13ceac361a4567d9","impliedFormat":99},{"version":"a534e61c2f06a147d97aebad720db97dffd8066b7142212e46bcbcdcb640b81a","impliedFormat":99},{"version":"ddf569d04470a4d629090d43a16735185001f3fcf0ae036ead99f2ceab62be48","impliedFormat":99},{"version":"b413fbc6658fe2774f8bf9a15cf4c53e586fc38a2d5256b3b9647da242c14389","impliedFormat":99},{"version":"c30a41267fc04c6518b17e55dcb2b810f267af4314b0b6d7df1c33a76ce1b330","impliedFormat":1},{"version":"72422d0bac4076912385d0c10911b82e4694fc106e2d70added091f88f0824ba","impliedFormat":1},{"version":"da251b82c25bee1d93f9fd80c5a61d945da4f708ca21285541d7aff83ecb8200","impliedFormat":1},{"version":"64db14db2bf37ac089766fdb3c7e1160fabc10e9929bc2deeede7237e4419fc8","impliedFormat":1},{"version":"98b94085c9f78eba36d3d2314affe973e8994f99864b8708122750788825c771","impliedFormat":1},{"version":"53c448183c7177c83d3eb0b40824cf8952721a6584cf22052adc24f778986732","impliedFormat":99},{"version":"32baa5c00d606c1b0dad9dacbed6795a4bf0b6ae7acaed8e1dc5701f861371eb","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"28b43c1487a6fcaf55869e7c5a81723081d053f8139fafbc87dc919777db0742","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"3aac927492698d7b9bf70ca2979f84716a43646ee261d24552c6663049e6f26e","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"69ce6e6c4cd59212e7133fbe6ca0176d26e6f3750ee01a8123685a7887a97b95","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"07aa99bc820ee254f53596d1db8f283ff2d4c48be213bc6157bfbb2649e4b1a0","0d0155d8b8d79857135f0656994ba844af7a37f9bb3c66e25ae277aeb3ae3f67","970dc049529fb07b6657ab7ff17a603d4590b4b6f34ac53587c75ffeaacba114","b2a49f121155699a81727364697219bee65dff69129cd269f8e4e65a6f90bf0e","5dfccd6e5e676e0ee22ba702dcf9db213ef4f013c6593166a5101c6c64da24c6","e332a1689fdd5f6fbfbdd37d20b60e9ef5b87dc3afc1e789a89043985b032dea","23d55968f9d8e8159716fd023fdf5c7a15989e12e96d40c7938ec530d7fac65e","2fa0b7f452a9efef199d759ce1f9ae0361215d5daf66b8dbea836ed238e8b5ae","f1782a17b8b8f8d7ea83e965a722851b54907d2945014bfffbad07819d806d03","d1bb335437a4d1b7d6a8d3be4ace7fac840b841ef9b0b09acbdd895f41804c56","0babc96339f3a6acbbae25798f086344fe559784780d3c7fc37a41c7d7ada503","db2dfbd2cba08da193f6a40c5e0acb1a1b88100bc6a9d25d7b032a0a4d397743","35480596a68b90153dc90439923b7e6aa980ed0c3c1ddd203fd2067e0a66e6ec","3fe0d716eb5217ccae5a435c9981bc64f9d053b976b0b170a97ff45682d7b94e","988d90349233a6e755ff7ef07995d0fdc791ecd9932b5aae67b5d6628d5e0785","e4184efbf576ede9db54b75a968faa8ba8aec0f282735f0212a1c2b4bd484e88",{"version":"84bcc7c6b06f4d643a55dc63b56be0c81d990f8d549b66ea615c553268774dc3","impliedFormat":1},{"version":"2d225e7bda2871c066a7079c88174340950fb604f624f2586d3ea27bb9e5f4ff","impliedFormat":1},{"version":"6a785f84e63234035e511817dd48ada756d984dd8f9344e56eb8b2bdcd8fd001","impliedFormat":1},{"version":"c1422d016f7df2ccd3594c06f2923199acd09898f2c42f50ea8159f1f856f618","impliedFormat":1},{"version":"2973b1b7857ca144251375b97f98474e9847a890331e27132d5a8b3aea9350a8","impliedFormat":1},{"version":"0eb6152d37c84d6119295493dfcc20c331c6fda1304a513d159cdaa599dcb78b","impliedFormat":1},{"version":"237df26f8c326ca00cd9d2deb40214a079749062156386b6d75bdcecc6988a6b","impliedFormat":1},{"version":"cd44995ee13d5d23df17a10213fed7b483fabfd5ea08f267ab52c07ce0b6b4da","impliedFormat":1},{"version":"58ce1486f851942bd2d3056b399079bc9cb978ec933fe9833ea417e33eab676e","impliedFormat":1},{"version":"7557d4d7f19f94341f4413575a3453ba7f6039c9591015bcf4282a8e75414043","impliedFormat":1},{"version":"a3b2cc16f3ce2d882eca44e1066f57a24751545f2a5e4a153d4de31b4cac9bb5","impliedFormat":1},{"version":"ac2b3b377d3068bfb6e1cb8889c99098f2c875955e2325315991882a74d92cc8","impliedFormat":1},{"version":"8deb39d89095469957f73bd194d11f01d9894b8c1f1e27fbf3f6e8122576b336","impliedFormat":1},{"version":"a38a9c41f433b608a0d37e645a31eecf7233ef3d3fffeb626988d3219f80e32f","impliedFormat":1},{"version":"8e1428dcba6a984489863935049893631170a37f9584c0479f06e1a5b1f04332","impliedFormat":1},{"version":"1fce9ecb87a2d3898941c60df617e52e50fb0c03c9b7b2ba8381972448327285","impliedFormat":1},{"version":"5ef0597b8238443908b2c4bf69149ed3894ac0ddd0515ac583d38c7595b151f1","impliedFormat":1},{"version":"ac52b775a80badff5f4ac329c5725a26bd5aaadd57afa7ad9e98b4844767312a","impliedFormat":1},{"version":"6ae5b4a63010c82bf2522b4ecfc29ffe6a8b0c5eea6b2b35120077e9ac54d7a1","impliedFormat":1},{"version":"dd7109c49f416f218915921d44f0f28975df78e04e437c62e1e1eb3be5e18a35","impliedFormat":1},{"version":"eee181112e420b345fc78422a6cc32385ede3d27e2eaf8b8c4ad8b2c29e3e52e","impliedFormat":1},{"version":"25fbe57c8ee3079e2201fe580578fab4f3a78881c98865b7c96233af00bf9624","impliedFormat":1},{"version":"62cc8477858487b4c4de7d7ae5e745a8ce0015c1592f398b63ee05d6e64ca295","impliedFormat":1},{"version":"cc2a9ec3cb10e4c0b8738b02c31798fad312d21ef20b6a2f5be1d077e9f5409d","impliedFormat":1},{"version":"4b4fadcda7d34034737598c07e2dca5d7e1e633cb3ba8dd4d2e6a7782b30b296","impliedFormat":1},{"version":"360fdc8829a51c5428636f1f83e7db36fef6c5a15ed4411b582d00a1c2bd6e97","impliedFormat":1},{"version":"1cf0d15e6ab1ecabbf329b906ae8543e6b8955133b7f6655f04d433e3a0597ab","impliedFormat":1},{"version":"7c9f98fe812643141502b30fb2b5ec56d16aaf94f98580276ae37b7924dd44a4","impliedFormat":1},{"version":"b3547893f24f59d0a644c52f55901b15a3fa1a115bc5ea9a582911469b9348b7","impliedFormat":1},{"version":"596e5b88b6ca8399076afcc22af6e6e0c4700c7cd1f420a78d637c3fb44a885e","impliedFormat":1},{"version":"adddf736e08132c7059ee572b128fdacb1c2650ace80d0f582e93d097ed4fbaf","impliedFormat":1},{"version":"d4cad9dc13e9c5348637170ddd5d95f7ed5fdfc856ddca40234fa55518bc99a6","impliedFormat":1},{"version":"d70675ba7ba7d02e52b7070a369957a70827e4b2bca2c1680c38a832e87b61fd","impliedFormat":1},{"version":"3be71f4ce8988a01e2f5368bdd58e1d60236baf511e4510ee9291c7b3729a27e","impliedFormat":1},{"version":"423d2ccc38e369a7527988d682fafc40267bcd6688a7473e59c5eea20a29b64f","impliedFormat":1},{"version":"2f9fde0868ed030277c678b435f63fcf03d27c04301299580a4017963cc04ce6","impliedFormat":1},{"version":"feeb73d48cc41c6dd23d17473521b0af877751504c30c18dc84267c8eeea429a","impliedFormat":1},{"version":"25f1159094dc0bf3a71313a74e0885426af21c5d6564a254004f2cadf9c5b052","impliedFormat":1},{"version":"cde493e09daad4bb29922fe633f760be9f0e8e2f39cdca999cce3b8690b5e13a","impliedFormat":1},{"version":"3d7f9eb12aface876f7b535cc89dcd416daf77f0b3573333f16ec0a70bcf902a","impliedFormat":1},{"version":"4304f640f7cb4724ea82441accb7c7607fa7207541182470d625adda99b2900b","impliedFormat":1},{"version":"e0205f04611bea8b5b82168065b8ef1476a8e96236201494eb8c785331c43118","impliedFormat":1},{"version":"62d26d8ba4fa15ab425c1b57a050ed76c5b0ecbffaa53f182110aa3a02405a07","impliedFormat":1},{"version":"9941cbf7ca695e95d588f5f1692ab040b078d44a95d231fa9a8f828186b7b77d","impliedFormat":1},{"version":"41b8775befd7ded7245a627e9f4de6110236688ce4c124d2d40c37bc1a3bfe05","impliedFormat":1},"05fd6dfdbff1e9350d6b28695d216375cbc1fbc9d071b8452793e97145efdbd2","52ec1aa6ed487b5ea5e7e20b6793ab1da2095e0d208d104705095c303ecc460e","48ad54425b0ee70655824ccc3e4b22d5aaad1d5bb2e227dc08bc94beb7df313b","805f87719ebf1d3f48eaad23c7cea5c3ecbcdd08d34d3825b1eafe3398d43bda","22ea76d8019cbecec574a8107bbd89c819875bea6e4f952c042039d4a25a8193","99afe943599bec620d28be7483daf9d7ad633f5843e5a5967e176e478965d332","88a639f45874bcd7110bdc692787328e4a5ac1083c80d350764d052270c25195","3abdcbb5ee503b89fbb9d2047a58b33c3e736b6eec5a28a9990ec5ebedb868e6","0e1caa1fae3b9cc0b9ce1c543583acb072b326e849cea553e68488cb5aba8b7e","090a347d7ccf886535d2b5b915fd1c2185a9b0bfaab73b346e8bf70af512c0d5","e314ebdd22846befec7b2be461b52c550e83fedbd76acb5d8a80c7aa40f1d342","5cf2ae99d6f151b6def775e36ec34017cc1277489a4391d6269b7e86d0debf3e","b7293d08e26c1520769c059bf84ef94104992f5dac5caa6e3d45e88ff5072add","e13fe0999c95a070072dec5a227e45e143b53945a220224948dc951a2e0cf9d5","d97c61db5f37d822049b893ee8e9966c2f7e75e93805e3776caa7a8347f87322","2dce0ec1be6c4852fa7ea58ef0888ce0c0f10f3f536c54b947bd0d32fb10d098","4ae924bd3c7ca5cd73ad1660372b03cb00126ae2fe77c463b204e2797f28d3c6","00889280212796c55bcba0b6d611947d7aa257ce6759fb85d435eb9cc5a34130","b42140a56b815be68f2aaee097fdcb7721dac965a08599354d694163f02b6a5b","efc37b34dd389289dd0c2766cd76ea8455288344b8f2c0462586e3231f2ee312","72400e5307bc61f989dea15ec351dde75eae699b158fadf775d4a59e41a09a0f","5a7b00f11e9a87edb4e9533bd11f3b5bf8c401d9d69d2f36ecef3df26a312110","341c591278ac937655b0416b2c0a5d314ebc2004f33a1328c9f227d8f850d28b","8e13f99b3a9144196a544c5dccea2fee345c6abd264895ffbdf89d03b6154f72","dfe7eef0555136ec56ecd5a834542243790458542455e77e37405b08f883920f","d24a344ad57ad53ccecd2fa188c4a4ab2243f5f7a9afb73a592040b512f067af","55b3b3d14e0017c5c534cbe93dbf665bb3c8a352b5f2f7c4b6fad0c7675fe1c8","74b6ebcac6e248128ac9b2972c9e50eb0ad48f76e4449dde5d012deedb9d0988","87089bbda669ffac032e83664b35a8c2e53dd87f127ee7a984920c3dd6823721","0d81076132183a97ec510145a0d60492031d7c617f2ff7fe8f35edea827ee0b3","564ca8274db5e72a7cdaafcee44ef593ab06be9237d00c463bd9c209b2d79100","bbd3b7572d17142589b7b86b093c2a7e3645bd3ffd2b08abe93ce32529ec0e1f","6c70d81036246c9137139acbf472b8d05f32abcc21fd203ea4ec837bd02c1723","5666abc02391a07d501c8c72b4110337702941ccdb567bd53cf49ec68a760879","640a7eef1b5d3d9c5b1ffce130344213cedb26f553155d0bb3a4e3743e1d49a3","dd261dd8d827f7e7f9e467e1281d5aee4b55727c1e6cca190f5f663eb28aa2e3","38496f4e66cde8ff0ad1245584947b21b8f2fb086c4d88158d4526ce15c03600","1c472b3555b9551b2d59d461ead635e4f05c2bc10943570c189ca767542bb242","a6f203d8e8e91ca8383c9c367cbbf2cc4e7b724135a62e8e25b6eb34a48bed92",{"version":"7dda85653f22156858c7e29712c6b0a7ec727cd85de2e6c2e3302cf8ce93d70b","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"1fb9241b0aa37b8875d48e5b913ef8c4ae84a0df3c77c02b1ac5b9ff20c0980f","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"0b6fe5c153960792c8cd492905cca0b08eaf4f2eff73e67d5e3f84c1a7f0519e","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"a68edd63e547c03f17c538030f63105c3c1d97d5bd30df4b357abbac5852286f","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"e45861f688cd18040c8003cf027043c3887e3b2b9ed03077606dbc47103d9e33","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"778cc897891d50493448d3db33584710b8a259f351e07980d8763a1bcd7a189c","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"0f65351c3fb288d0fff8dcd62e259ea98eaab18999b4a3a7ea4c63d06b1231f0","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"}],"root":[79,100,[175,180],[224,227],[328,334]],"options":{"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":true,"exactOptionalPropertyTypes":true,"module":99,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noImplicitReturns":true,"noUncheckedIndexedAccess":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","rootDir":"../src","skipLibCheck":true,"strict":true,"target":9,"tsBuildInfoFile":"./.tsbuildinfo","useDefineForClassFields":true,"verbatimModuleSyntax":true},"referencedMap":[[161,1],[160,2],[162,3],[159,4],[164,5],[158,6],[142,7],[140,8],[139,9],[144,10],[141,11],[138,8],[137,9],[143,11],[136,12],[134,13],[210,14],[211,15],[191,16],[187,17],[190,18],[212,19],[200,20],[199,21],[189,22],[182,23],[184,24],[186,25],[188,23],[288,26],[247,27],[246,28],[251,29],[286,30],[283,31],[285,32],[248,31],[249,33],[253,33],[252,34],[250,35],[284,36],[282,31],[287,37],[254,38],[259,31],[261,31],[256,31],[257,38],[263,31],[264,39],[255,31],[260,31],[262,31],[258,31],[278,40],[277,31],[279,41],[273,31],[275,31],[274,31],[270,31],[276,42],[271,31],[272,43],[265,31],[266,31],[267,31],[268,31],[269,31],[220,44],[222,45],[221,46],[219,47],[194,48],[197,49],[195,48],[196,50],[214,51],[205,52],[201,53],[202,17],[217,54],[215,55],[203,56],[216,57],[204,58],[223,59],[224,60],[225,61],[226,62],[227,63],[328,64],[329,65],[330,66],[331,67],[332,65],[333,68],[334,68],[79,69],[100,70],[176,71],[175,72],[178,73],[180,74],[179,75],[177,72],[101,69],[102,69],[103,76],[170,77],[171,78],[174,79],[172,80],[173,81],[316,82],[325,83],[321,69],[323,84],[324,82],[125,85],[106,86],[107,87],[108,86],[128,88],[112,86],[127,89],[169,90],[168,91],[114,92],[115,93],[126,94],[116,95],[120,96],[119,97],[121,98],[105,86],[118,99],[117,100],[124,101],[299,102],[300,103],[301,104],[296,69],[298,105],[297,69],[327,106],[302,107],[303,108],[309,109],[310,110],[311,111],[307,112],[308,111],[326,113],[312,114],[82,115],[83,116],[81,117],[84,116],[86,116],[88,118],[99,119],[89,116],[90,116],[92,116],[93,118],[94,120],[95,118],[96,116],[97,116],[98,116],[228,69],[293,121],[234,122],[235,69],[236,69],[229,69],[238,69],[239,69],[231,69],[306,123],[294,69],[295,124],[241,69],[242,69],[243,125],[305,69],[291,69],[290,126],[233,127],[289,128],[232,129],[230,69],[292,69],[157,130],[167,131],[166,132],[165,130],[147,133],[148,134],[146,134],[156,135],[151,134],[152,134],[153,134],[154,134],[155,136],[63,137],[68,138],[64,139],[74,140],[76,69],[69,69],[77,141],[78,142],[66,143],[65,144],[72,145],[71,146],[75,147]],"latestChangedDtsFile":"./__tests__/web-audio-engine-decode-recovery.unit.test.d.ts","version":"6.0.3"}
|
package/dist/clip-loader.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { AudioError } from '@forgeax/engine-audio';
|
|
2
|
-
import
|
|
2
|
+
import { type AudioClipAsset, type Result } from '@forgeax/engine-types';
|
|
3
3
|
export declare function decodeAudioClipBytes(guid: string, bytes: Uint8Array, mediaType: `audio/${string}`): Promise<Result<AudioClipAsset, AudioError>>;
|
|
4
|
-
export declare const audioClipContribution: AssetDecoderContribution<AudioClipAsset, 'audio'>;
|
|
5
4
|
//# sourceMappingURL=clip-loader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clip-loader.d.ts","sourceRoot":"","sources":["../src/clip-loader.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"clip-loader.d.ts","sourceRoot":"","sources":["../src/clip-loader.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,KAAK,cAAc,EAAW,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAElF,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,UAAU,EACjB,SAAS,EAAE,SAAS,MAAM,EAAE,GAC3B,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,CA6B7C"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
export { AUDIO_ENGINE_RESOURCE_KEY, type AudioBackend } from '@forgeax/engine-audio';
|
|
2
2
|
export { audioListenerSyncSystem, syncListenerFromWorldMatrix, } from './audio-listener-sync-system';
|
|
3
3
|
export { audioLoader } from './audio-loader';
|
|
4
|
-
export { audioClipContribution } from './clip-loader';
|
|
5
4
|
export { createHostAudioConsumer, createWebAudioBackend, type HostAudioConsumer, } from './host-audio-consumer';
|
|
6
5
|
export { webAudioPlugin } from './plugin';
|
|
7
6
|
export { WebAudioEngine } from './web-audio-engine';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,yBAAyB,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErF,OAAO,EACL,uBAAuB,EACvB,2BAA2B,GAC5B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,yBAAyB,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErF,OAAO,EACL,uBAAuB,EACvB,2BAA2B,GAC5B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,KAAK,iBAAiB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AudioError, AUDIO_ERROR_HINTS, createAudioIntentBackend } from '@forgeax/engine-audio';
|
|
2
2
|
export { AUDIO_ENGINE_RESOURCE_KEY } from '@forgeax/engine-audio';
|
|
3
3
|
import { mat4, vec3 } from '@forgeax/engine-math';
|
|
4
|
-
import { err, ok,
|
|
4
|
+
import { AssetError, err, ok, AudioError as AudioError$1 } from '@forgeax/engine-types';
|
|
5
5
|
|
|
6
6
|
// src/index.ts
|
|
7
7
|
function syncListenerFromWorldMatrix(listener, worldMatrix) {
|
|
@@ -52,57 +52,6 @@ async function decodeAudioClipBytes(guid, bytes, mediaType) {
|
|
|
52
52
|
);
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
|
-
var audioClipContribution = {
|
|
56
|
-
kind: { kind: "audio" },
|
|
57
|
-
consumer: "WebAudioEngine",
|
|
58
|
-
decoder: {
|
|
59
|
-
async decode({ envelope, artifacts }) {
|
|
60
|
-
const source = Object.values(envelope.artifacts).find(
|
|
61
|
-
(descriptor) => descriptor.path.endsWith(".audio")
|
|
62
|
-
);
|
|
63
|
-
if (source === void 0) {
|
|
64
|
-
return err({
|
|
65
|
-
code: "asset-package-invalid",
|
|
66
|
-
expected: "an asset-local audio source artifact",
|
|
67
|
-
hint: "recook the audio asset with its source artifact",
|
|
68
|
-
detail: { guid: envelope.guid, reason: "source artifact is missing" }
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
const bytes = await artifacts.read(source);
|
|
72
|
-
if (!bytes.ok) {
|
|
73
|
-
return err({
|
|
74
|
-
code: "asset-package-invalid",
|
|
75
|
-
expected: "a readable audio source artifact",
|
|
76
|
-
hint: "repair the Pack artifact and retry the audio decoder",
|
|
77
|
-
detail: { guid: envelope.guid, reason: bytes.error.code }
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
const mediaType = source.mediaType;
|
|
81
|
-
if (!mediaType.startsWith("audio/")) {
|
|
82
|
-
return err({
|
|
83
|
-
code: "asset-package-invalid",
|
|
84
|
-
expected: "an audio/* source artifact",
|
|
85
|
-
hint: "publish the audio artifact with its actual media type",
|
|
86
|
-
detail: { guid: envelope.guid, reason: `unsupported media type ${mediaType}` }
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
if (bytes.value.byteLength === 0) {
|
|
90
|
-
return err({
|
|
91
|
-
code: "asset-package-invalid",
|
|
92
|
-
expected: "non-empty audio source bytes",
|
|
93
|
-
hint: "recook the audio source and retry the decoder",
|
|
94
|
-
detail: { guid: envelope.guid, reason: "empty audio artifact" }
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
return ok({
|
|
98
|
-
kind: "audio",
|
|
99
|
-
sourceKey: envelope.guid,
|
|
100
|
-
mediaType,
|
|
101
|
-
bytes: bytes.value.slice()
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
};
|
|
106
55
|
|
|
107
56
|
// src/audio-loader.ts
|
|
108
57
|
var audioLoader = {
|
|
@@ -590,6 +539,6 @@ function webAudioPlugin() {
|
|
|
590
539
|
};
|
|
591
540
|
}
|
|
592
541
|
|
|
593
|
-
export { WebAudioEngine,
|
|
542
|
+
export { WebAudioEngine, audioListenerSyncSystem, audioLoader, createHostAudioConsumer, createWebAudioBackend, syncListenerFromWorldMatrix, webAudioPlugin };
|
|
594
543
|
//# sourceMappingURL=index.mjs.map
|
|
595
544
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/audio-listener-sync-system.ts","../src/clip-loader.ts","../src/audio-loader.ts","../src/web-audio-engine.ts","../src/host-audio-consumer.ts","../src/plugin.ts"],"names":["AudioError"],"mappings":"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","file":"index.mjs","sourcesContent":["// audio-listener-sync-system.ts -- AudioListener world-matrix sync.\n//\n// Syncs the first AudioListener entity's resolved world transform to the Web\n// Audio listener (position + forward/up orientation).\n//\n// feat-20260601 D-6: the sync consumes the single `Transform.world` mat4 (16\n// column-major floats, written by propagateTransforms) instead of a decomposed\n// GlobalTransform TRS. forward / up / position are extracted via the\n// `@forgeax/engine-math` mat4 helpers (getForward = -col2 normalized; getUp =\n// col1 normalized; getTranslation = col3, NOT normalized) -- direction\n// normalization eliminates non-uniform-scale pollution that a bare-column read\n// would leak. The old quaternion-rotate-vector formula is gone.\n//\n// Decision anchors:\n// - plan-strategy D-6 (rename + world-mat4 reshape + mat4 helper reuse)\n// - requirements AC-08 (AudioListener world-matrix sync; quadrant 3 falsify)\n// - requirements E-3 (multiple AudioListeners -> first only)\n//\n// Architecture note: the audio-webaudio package has no dependency on\n// engine-runtime (where Transform lives). The sync function is a pure helper\n// exported for host assembly. The host (engine-runtime or app layer) queries\n// the first AudioListener entity, reads its `Transform.world` mat4 (a 16-float\n// Float32Array), obtains the AudioContext listener from the AudioBackend, and\n// calls `syncListenerFromWorldMatrix(listener, worldMatrix)`.\n//\n// charter awareness:\n// - P3 explicit failure: no-op contracts, no throw for missing listener\n// - P4 consistent abstraction: reuse the math mat4 extract helpers (no\n// hand-rolled quaternion rotation); pure function exports for unit testing\n// - P5 producer/consumer: sync function is the producer; host is the consumer\n\nimport { mat4, vec3 } from '@forgeax/engine-math';\n\n/**\n * Resolved world transform shape (feat-20260601 D-6): a single column-major\n * mat4 carried as 16 contiguous floats -- the `Transform.world` column array\n * view written by propagateTransforms.\n */\nexport interface WorldMatrixData {\n readonly worldMatrix: Float32Array;\n}\n\n/**\n * Pure function: write a world mat4's position/orientation to the Web Audio\n * listener's AudioParams.\n *\n * Exported for unit testing (listener-sync.test.ts) and for host assembly (the\n * host reads `Transform.world` + AudioListener from the World and calls this\n * each frame).\n *\n * - position = `mat4.getTranslation(world)` (col3, copied directly, not normalized)\n * - forward = `mat4.getForward(world)` (-col2, normalized -- removes scale)\n * - up = `mat4.getUp(world)` (col1, normalized -- removes scale)\n *\n * @param listener The Web Audio API AudioListener (from AudioContext.listener)\n * @param worldMatrix The resolved world mat4 (16 column-major floats) of the\n * entity carrying AudioListener.\n */\nexport function syncListenerFromWorldMatrix(\n listener: AudioListener,\n worldMatrix: Float32Array,\n): void {\n const m = worldMatrix as unknown as mat4.Mat4Like;\n\n const position = mat4.getTranslation(vec3.create(), m);\n listener.positionX.value = position[0] as number;\n listener.positionY.value = position[1] as number;\n listener.positionZ.value = position[2] as number;\n\n const forward = mat4.getForward(vec3.create(), m);\n listener.forwardX.value = forward[0] as number;\n listener.forwardY.value = forward[1] as number;\n listener.forwardZ.value = forward[2] as number;\n\n const up = mat4.getUp(vec3.create(), m);\n listener.upX.value = up[0] as number;\n listener.upY.value = up[1] as number;\n listener.upZ.value = up[2] as number;\n}\n\n/**\n * Run the audio listener sync system for a host-owned audio context.\n *\n * The host is responsible for:\n * 1. Querying the World for entities with AudioListener\n * 2. Taking the first AudioListener entity (E-3)\n * 3. Reading its `Transform.world` mat4 (16-float Float32Array)\n * 4. Calling this function with the AudioContext's listener\n *\n * This function is a convenience wrapper that calls\n * `syncListenerFromWorldMatrix(ctx.listener, worldMatrix)`.\n *\n * @param ctx The Web Audio AudioContext (whose .listener receives position/orientation)\n * @param worldMatrix The `Transform.world` mat4 from the AudioListener entity\n */\nexport function audioListenerSyncSystem(ctx: AudioContext, worldMatrix: Float32Array): void {\n syncListenerFromWorldMatrix(ctx.listener, worldMatrix);\n}\n","// clip-loader.ts -- M3 (w27) AudioClipAsset register/load path\n//\n// Load AudioClipAsset from pack-index catalog via fetch + decodeAudioData.\n//\n// Decision anchors:\n// - plan-strategy D-6 (load path: fetch ArrayBuffer -> decodeAudioData -> register)\n// - requirements AC-03 (AudioClipAsset via typed AssetRegistry.load)\n// - requirements constraint 5 (format decided by browser decodeAudioData)\n// - requirements E-2 (decodeAudioData failure returns Err with code: 'decode-failed')\n// - requirements E-9 (nonexistent GUID returns Err with code 'asset-not-found')\n// - research Finding 'decodeAudioData error semantics'\n//\n// charter awareness:\n// - P3 explicit failure: returns Result<AudioClipAsset, AudioError> with structured errors\n// - P4 consistent abstraction: parallel to image/gltf loader patterns\n\nimport { AudioError } from '@forgeax/engine-audio';\nimport type {\n AssetDecoderContribution,\n AssetKind,\n AudioClipAsset,\n Result,\n} from '@forgeax/engine-types';\nimport { err, ok } from '@forgeax/engine-types';\n\nexport async function decodeAudioClipBytes(\n guid: string,\n bytes: Uint8Array,\n mediaType: `audio/${string}`,\n): Promise<Result<AudioClipAsset, AudioError>> {\n if (mediaType.length <= 'audio/'.length || bytes.byteLength === 0) {\n return err(\n new AudioError({\n code: 'decode-failed',\n expected: `non-empty audio mediaType and source bytes for GUID ${guid}`,\n hint: 'verify the audio artifact mediaType and recook the source bytes',\n detail: {\n code: 'decode-failed' as const,\n reason: 'audio mediaType or source bytes are empty',\n },\n }),\n );\n }\n try {\n return ok({ kind: 'audio', sourceKey: guid, mediaType, bytes: bytes.slice() });\n } catch (e) {\n return err(\n new AudioError({\n code: 'decode-failed',\n expected: `decodable audio artifact bytes for GUID ${guid}`,\n hint: 'verify the audio artifact mediaType and browser-supported codec',\n detail: {\n code: 'decode-failed' as const,\n reason: e instanceof Error ? e.message : 'audio artifact decode failed',\n },\n }),\n );\n }\n}\n\nexport const audioClipContribution: AssetDecoderContribution<AudioClipAsset, 'audio'> = {\n kind: { kind: 'audio' } as AssetKind<AudioClipAsset, 'audio'>,\n consumer: 'WebAudioEngine',\n decoder: {\n async decode({ envelope, artifacts }) {\n const source = Object.values(envelope.artifacts).find((descriptor) =>\n descriptor.path.endsWith('.audio'),\n );\n if (source === undefined) {\n return err({\n code: 'asset-package-invalid',\n expected: 'an asset-local audio source artifact',\n hint: 'recook the audio asset with its source artifact',\n detail: { guid: envelope.guid, reason: 'source artifact is missing' },\n });\n }\n const bytes = await artifacts.read(source);\n if (!bytes.ok) {\n return err({\n code: 'asset-package-invalid',\n expected: 'a readable audio source artifact',\n hint: 'repair the Pack artifact and retry the audio decoder',\n detail: { guid: envelope.guid, reason: bytes.error.code },\n });\n }\n const mediaType = source.mediaType;\n if (!mediaType.startsWith('audio/')) {\n return err({\n code: 'asset-package-invalid',\n expected: 'an audio/* source artifact',\n hint: 'publish the audio artifact with its actual media type',\n detail: { guid: envelope.guid, reason: `unsupported media type ${mediaType}` },\n });\n }\n if (bytes.value.byteLength === 0) {\n return err({\n code: 'asset-package-invalid',\n expected: 'non-empty audio source bytes',\n hint: 'recook the audio source and retry the decoder',\n detail: { guid: envelope.guid, reason: 'empty audio artifact' },\n });\n }\n return ok({\n kind: 'audio',\n sourceKey: envelope.guid,\n mediaType: mediaType as `audio/${string}`,\n bytes: bytes.value.slice(),\n });\n },\n },\n};\n","import { AssetError, type Loader, type LoaderAsyncResult } from '@forgeax/engine-types';\nimport { decodeAudioClipBytes } from './clip-loader';\n\n/** Loads an audio catalog row through the browser's native decoder. */\nexport const audioLoader: Loader = {\n kind: 'audio',\n loadPack(input): Promise<LoaderAsyncResult> {\n if (input.kind !== 'audio') {\n return Promise.resolve({\n ok: false,\n error: new AssetError({\n code: 'asset-parse-failed',\n expected: \"Pack v2 loader input with kind 'audio'\",\n hint: 'pass the asset-local audio envelope to the audio loader',\n detail: { sourcePath: input.guid },\n }),\n });\n }\n const source = input.artifacts.source;\n const payloadMediaType =\n typeof input.payload.mediaType === 'string' ? input.payload.mediaType : undefined;\n if (\n source === undefined ||\n !source.descriptor.mediaType.startsWith('audio/') ||\n payloadMediaType !== source.descriptor.mediaType\n ) {\n return Promise.resolve({\n ok: false,\n error: {\n code: 'asset-artifact-media-unsupported',\n expected: 'an asset-local source artifact with an audio/* mediaType',\n hint: 'declare the audio source artifact with a supported mediaType and re-cook',\n detail: {\n guid: input.guid,\n artifactKey: 'source',\n observed: payloadMediaType ?? source?.descriptor.mediaType ?? 'missing',\n expected: 'payload.mediaType matching the audio/* source artifact',\n },\n },\n });\n }\n return decodeAudioClipBytes(input.guid, source.bytes, payloadMediaType as `audio/${string}`);\n },\n async load(): Promise<LoaderAsyncResult> {\n return {\n ok: false,\n error: new AssetError({\n code: 'asset-parse-failed',\n expected: 'Pack v2 audio input with an asset-local source artifact',\n hint: 're-cook the audio source into the Pack v2 asset envelope',\n detail: { sourcePath: 'audio-loader-input' },\n }),\n };\n },\n};\n","// web-audio-engine.ts -- M2 (w16) WebAudioEngine AudioBackend implementation\n//\n// Implements AudioBackend for Web Audio API:\n// 1. Lazy AudioContext creation (D-3) -- ensureContext() on first play()\n// 2. Gesture listener resume (D-3) -- register bounded 'click'/'keydown'/'touchstart'\n// listeners that call ctx.resume(), re-arming them after a refusal\n// 3. Fixed two-bus topology (D-5): masterGain <= sfxGain + musicGain\n// 4. Per-source GainNode for individual volume control\n// 5. Active source Map<entityId, { node, sourceGain, bus }>\n// 6. Health check: getState() / getActiveSourceCount()\n// 7. destroy(): stop all, disconnect, close ctx\n//\n// Decision anchors:\n// - plan-strategy D-3 (lazy-create + one-shot gesture listener resume)\n// - plan-strategy D-5 (fixed two-bus topology: SFX + Music -> Master)\n// - plan-strategy section 3.1 (WebAudioEngine owner of AudioContext + bus GainNodes)\n// - requirements S-1 (AudioContext lifecycle), S-5 (dual bus), S-9 (World Resource)\n// - requirements AC-01 (lazy creation), AC-02 (auto resume), AC-10 (bus volume/mute)\n//\n// charter awareness:\n// - P3 explicit failure: getState() returns real AudioContext.state, never a stale cache\n// - P4 consistent abstraction: implements AudioBackend interface, parallel to InputBackend\n\nimport {\n AUDIO_ERROR_HINTS,\n AudioError,\n type AudioListenerPose,\n type AudioPlayOptions,\n type AudioState,\n type BusName,\n} from '@forgeax/engine-audio';\nimport type { AudioClipAsset } from '@forgeax/engine-types';\n\ninterface ActiveSource {\n node: AudioBufferSourceNode;\n sourceGain: GainNode;\n panner: PannerNode | undefined;\n bus: BusName;\n}\n\nconst GESTURE_EVENTS = ['click', 'keydown', 'touchstart'] as const;\nconst GAIN_TRANSITION_SECONDS = 0.01;\n\nexport class WebAudioEngine {\n private ctx: AudioContext | undefined;\n private closed = false;\n private masterGain: GainNode | undefined;\n private sfxGain: GainNode | undefined;\n private musicGain: GainNode | undefined;\n\n private readonly sources = new Map<number, ActiveSource>();\n\n private gestureListening = false;\n private resumeInFlight: Promise<void> | undefined;\n private readonly gestureResumeHandler: () => void;\n private lastError: AudioError | null = null;\n\n // Per-bus previous-volume cache for mute/unmute restore (D-5).\n private readonly busVolumes = new Map<BusName, number>([\n ['sfx', 1],\n ['music', 1],\n ]);\n private readonly busMuted = new Map<BusName, boolean>([\n ['sfx', false],\n ['music', false],\n ]);\n\n constructor() {\n // Lazy: AudioContext is NOT created here (D-3 / AC-01).\n // The gesture resume handler is a bound arrow so we can pass it\n // to addEventListener/removeEventListener with the same identity.\n this.gestureResumeHandler = () => {\n void this.tryResume();\n };\n }\n\n /**\n * Returns the Web Audio AudioListener for spatialization (D-2).\n * Triggers lazy ensureContext() on first access.\n * Returns undefined if the context could not be created or is closed.\n */\n get listener(): AudioListener | undefined {\n return this.ensureContext().listener;\n }\n\n setListenerPose(pose: AudioListenerPose): void {\n const listener = this.ensureContext().listener;\n listener.positionX.value = pose.positionX;\n listener.positionY.value = pose.positionY;\n listener.positionZ.value = pose.positionZ;\n listener.forwardX.value = pose.forwardX;\n listener.forwardY.value = pose.forwardY;\n listener.forwardZ.value = pose.forwardZ;\n listener.upX.value = pose.upX;\n listener.upY.value = pose.upY;\n listener.upZ.value = pose.upZ;\n }\n\n // -----------------------------------------------------------------------\n // ensureContext -- lazy AudioContext + bus topology creation\n // -----------------------------------------------------------------------\n\n private ensureContext(): AudioContext {\n if (this.ctx) {\n this.registerGestureListener(this.ctx);\n return this.ctx;\n }\n\n const ctx = new AudioContext();\n\n // Build bus topology: masterGain <= sfxGain + musicGain\n const master = ctx.createGain();\n master.gain.value = 1;\n master.connect(ctx.destination);\n\n const sfx = ctx.createGain();\n sfx.gain.value = 1;\n sfx.connect(master);\n\n const music = ctx.createGain();\n music.gain.value = 1;\n music.connect(master);\n\n this.ctx = ctx;\n this.masterGain = master;\n this.sfxGain = sfx;\n this.musicGain = music;\n\n // Register the bounded gesture listener set if ctx is suspended (autoplay gate).\n this.registerGestureListener(ctx);\n\n return ctx;\n }\n\n // -----------------------------------------------------------------------\n // Gesture listener -- D-3 bounded resume retry on user gesture\n // -----------------------------------------------------------------------\n\n private registerGestureListener(ctx: AudioContext): void {\n if (ctx.state !== 'suspended') {\n return;\n }\n if (this.gestureListening) {\n return;\n }\n\n this.gestureListening = true;\n for (const event of GESTURE_EVENTS) {\n document.addEventListener(event, this.gestureResumeHandler, { once: true });\n }\n }\n\n private removeGestureListener(): void {\n if (!this.gestureListening) {\n return;\n }\n this.gestureListening = false;\n for (const event of GESTURE_EVENTS) {\n document.removeEventListener(event, this.gestureResumeHandler);\n }\n }\n\n private async tryResume(): Promise<void> {\n const ctx = this.ctx;\n if (!ctx || this.closed || ctx.state !== 'suspended') return;\n if (this.resumeInFlight !== undefined) return this.resumeInFlight;\n\n const attempt = (async () => {\n try {\n await ctx.resume();\n } catch {\n // Inspect the real context state below so refusal remains recoverable.\n } finally {\n if (!this.closed && this.ctx === ctx) {\n if (ctx.state === 'running') {\n this.lastError = null;\n this.removeGestureListener();\n } else if (ctx.state === 'suspended') {\n this.recordResumeFailure();\n this.rearmGestureListener(ctx);\n } else {\n this.removeGestureListener();\n }\n }\n this.resumeInFlight = undefined;\n }\n })();\n this.resumeInFlight = attempt;\n return attempt;\n }\n\n private recordResumeFailure(): void {\n this.lastError = new AudioError({\n code: 'context-suspended',\n expected: 'AudioContext.resume() to make the existing context running',\n hint: AUDIO_ERROR_HINTS['context-suspended'],\n detail: { code: 'context-suspended' },\n });\n }\n\n private recordDecodeFailure(sourceKey: string, cause: unknown): void {\n this.lastError = new AudioError({\n code: 'decode-failed',\n expected: `browser-decodable audio bytes for sourceKey ${sourceKey}`,\n hint: AUDIO_ERROR_HINTS['decode-failed'],\n detail: {\n code: 'decode-failed',\n reason: cause instanceof Error ? cause.message : String(cause),\n },\n });\n }\n\n private rearmGestureListener(ctx: AudioContext): void {\n this.removeGestureListener();\n this.registerGestureListener(ctx);\n }\n\n // -----------------------------------------------------------------------\n // AudioBackend implementation\n // -----------------------------------------------------------------------\n\n decode(bytes: Uint8Array): Promise<AudioBuffer> {\n return this.ensureContext().decodeAudioData(bytes.slice().buffer as ArrayBuffer);\n }\n\n play(entityId: number, clip: AudioBuffer | AudioClipAsset, opts: AudioPlayOptions): void {\n if ('kind' in clip) {\n void this.decode(clip.bytes).then(\n (buffer) => {\n if (this.lastError?.code === 'decode-failed') {\n this.lastError = null;\n }\n this.play(entityId, buffer, opts);\n },\n (cause) => this.recordDecodeFailure(clip.sourceKey, cause),\n );\n return;\n }\n const clipBuffer = clip;\n // If this entity is already playing, stop it first (replace).\n if (this.sources.has(entityId)) {\n this.stop(entityId);\n }\n\n const ctx = this.ensureContext();\n\n // Per-source GainNode for volume control\n const sourceGain = ctx.createGain();\n sourceGain.gain.value = opts.volume;\n\n // PannerNode for 3D spatialization (D-2 equalpower default)\n let panner: PannerNode | undefined;\n if (opts.spatialBlend > 0) {\n panner = ctx.createPanner();\n panner.panningModel = 'equalpower';\n }\n\n // Route to the appropriate bus (gain nodes guaranteed by ensureContext above)\n const busGain = this.busGainFor(opts.bus);\n if (!busGain) return;\n\n if (panner) {\n sourceGain.connect(panner);\n panner.connect(busGain);\n } else {\n sourceGain.connect(busGain);\n }\n\n // Create AudioBufferSourceNode for one-shot playback\n const node = ctx.createBufferSource();\n node.buffer = clipBuffer;\n node.loop = opts.loop;\n node.connect(sourceGain);\n node.start();\n\n // Bookkeeping\n this.sources.set(entityId, { node, sourceGain, panner, bus: opts.bus });\n\n // F24: attach onended for non-loop sources with identity guard (D-5).\n // Loop sources never naturally end — no onended needed.\n if (!opts.loop) {\n node.onended = () => {\n const current = this.sources.get(entityId);\n if (current?.node === node) {\n this.stop(entityId);\n }\n };\n }\n }\n\n stop(entityId: number): void {\n const source = this.sources.get(entityId);\n if (!source) return;\n\n try {\n source.node.stop();\n } catch {\n // Already stopped -- ignore InvalidStateError from doubly-stopped nodes.\n }\n source.node.disconnect();\n source.sourceGain.disconnect();\n source.panner?.disconnect();\n this.sources.delete(entityId);\n }\n\n setVolume(entityId: number, volume: number): void {\n const source = this.sources.get(entityId);\n if (!source) return;\n this.scheduleGainTransition(source.sourceGain, volume);\n }\n\n setBusVolume(busName: BusName, volume: number): void {\n const gain = this.busGainFor(busName);\n if (!gain) return;\n\n if (!this.scheduleGainTransition(gain, volume)) return;\n this.busVolumes.set(busName, volume);\n\n // If we were muted, un-mute (setting volume is an explicit un-mute signal).\n if (this.busMuted.get(busName)) {\n this.busMuted.set(busName, false);\n }\n }\n\n setBusMute(busName: BusName, muted: boolean): void {\n const gain = this.busGainFor(busName);\n if (!gain) return;\n\n const target = muted ? 0 : (this.busVolumes.get(busName) ?? 1);\n if (!this.scheduleGainTransition(gain, target)) return;\n this.busMuted.set(busName, muted);\n }\n\n getState(): AudioState {\n if (this.closed) {\n return { contextState: 'closed', activeSourceCount: 0, lastError: null };\n }\n const contextState: 'running' | 'suspended' | 'closed' =\n this.ctx?.state === 'closed'\n ? 'closed'\n : this.ctx?.state === 'running'\n ? 'running'\n : 'suspended';\n return {\n contextState,\n activeSourceCount: this.sources.size,\n lastError: this.lastError,\n };\n }\n\n getActiveSourceCount(): number {\n return this.sources.size;\n }\n\n destroy(): void {\n if (this.closed) return;\n this.closed = true;\n\n // Stop all active sources\n for (const entityId of this.sources.keys()) {\n this.stop(entityId);\n }\n\n // Disconnect bus topology\n if (this.sfxGain) {\n this.sfxGain.disconnect();\n this.sfxGain = undefined;\n }\n if (this.musicGain) {\n this.musicGain.disconnect();\n this.musicGain = undefined;\n }\n if (this.masterGain) {\n this.masterGain.disconnect();\n this.masterGain = undefined;\n }\n\n // Remove gesture listener\n this.removeGestureListener();\n\n // Close AudioContext (irreversible per R-4)\n if (this.ctx) {\n void this.ctx.close();\n this.ctx = undefined;\n }\n }\n\n // -----------------------------------------------------------------------\n // Private helpers\n // -----------------------------------------------------------------------\n\n private scheduleGainTransition(gain: GainNode, target: number): boolean {\n if (!this.ctx || !Number.isFinite(target) || target < 0) return false;\n\n const now = this.ctx.currentTime;\n const param = gain.gain;\n param.cancelScheduledValues(now);\n param.setValueAtTime(param.value, now);\n param.linearRampToValueAtTime(target, now + GAIN_TRANSITION_SECONDS);\n return true;\n }\n\n private busGainFor(busName: BusName): GainNode | undefined {\n switch (busName) {\n case 'sfx':\n return this.sfxGain;\n case 'music':\n return this.musicGain;\n }\n }\n}\n","import {\n type AudioBackend,\n type AudioIntent,\n type AudioPlayOptions,\n type AudioState,\n createAudioIntentBackend,\n} from '@forgeax/engine-audio';\nimport { AudioError } from '@forgeax/engine-types';\nimport { WebAudioEngine } from './web-audio-engine';\n\ninterface ActiveSource {\n readonly entityId: number;\n readonly sourceKey: string;\n readonly bytes?: Uint8Array;\n readonly options: AudioPlayOptions;\n}\n\nexport interface HostAudioConsumer {\n consume(intent: AudioIntent): void;\n state(): AudioState;\n dispose(): void;\n readonly engine: WebAudioEngine;\n}\n\nfunction decodeError(sourceKey: string, cause: unknown): AudioError {\n return new AudioError({\n code: 'decode-failed',\n expected: `browser-decodable audio bytes for sourceKey ${sourceKey}`,\n hint: 'verify the audio media type and source bytes',\n detail: {\n code: 'decode-failed',\n reason: cause instanceof Error ? cause.message : String(cause),\n },\n });\n}\n\nfunction sameBytes(left: Uint8Array, right: Uint8Array): boolean {\n if (left.byteLength !== right.byteLength) return false;\n for (let index = 0; index < left.byteLength; index += 1) {\n if (left[index] !== right[index]) return false;\n }\n return true;\n}\n\ninterface DecodeEntry {\n readonly promise: Promise<AudioBuffer>;\n}\n\nexport function createHostAudioConsumer(engine = new WebAudioEngine()): HostAudioConsumer {\n const sources = new Map<string, DecodeEntry>();\n const sourceBytes = new Map<string, Uint8Array>();\n const activeSources = new Map<number, ActiveSource>();\n const entityEpoch = new Map<number, number>();\n const bus = {\n sfx: { volume: 1, muted: false },\n music: { volume: 1, muted: false },\n };\n const cleanup: number[] = [];\n let lastError: AudioError | null = null;\n let disposed = false;\n const nextEpoch = (entityId: number): number => {\n const epoch = (entityEpoch.get(entityId) ?? 0) + 1;\n entityEpoch.set(entityId, epoch);\n return epoch;\n };\n const consumer: HostAudioConsumer = {\n engine,\n consume(intent): void {\n if (disposed && intent.kind !== 'destroy') return;\n if (intent.kind === 'play') {\n const epoch = nextEpoch(intent.entityId);\n if (intent.bytes !== undefined) {\n const incomingBytes = intent.bytes.slice();\n const publishedBytes = sourceBytes.get(intent.sourceKey);\n if (publishedBytes === undefined || !sameBytes(publishedBytes, incomingBytes)) {\n sourceBytes.set(intent.sourceKey, incomingBytes);\n sources.delete(intent.sourceKey);\n }\n }\n const bytes = sourceBytes.get(intent.sourceKey);\n activeSources.set(intent.entityId, {\n entityId: intent.entityId,\n sourceKey: intent.sourceKey,\n ...(bytes === undefined ? {} : { bytes: bytes.slice() }),\n options: intent.options,\n });\n let decoded = sources.get(intent.sourceKey);\n if (decoded === undefined && bytes !== undefined) {\n const entry: DecodeEntry = {\n promise: engine.decode(bytes),\n };\n decoded = entry;\n sources.set(intent.sourceKey, entry);\n void entry.promise.then(\n () => {\n if (sources.get(intent.sourceKey) === entry && lastError?.code === 'decode-failed') {\n lastError = null;\n }\n },\n (cause) => {\n if (sources.get(intent.sourceKey) !== entry) return;\n sources.delete(intent.sourceKey);\n lastError = decodeError(intent.sourceKey, cause);\n },\n );\n }\n if (decoded === undefined) {\n lastError = decodeError(intent.sourceKey, new Error('sourceKey was not published'));\n return;\n }\n const currentDecode = decoded;\n void currentDecode.promise\n .then((buffer) => {\n if (\n !disposed &&\n sources.get(intent.sourceKey) === currentDecode &&\n entityEpoch.get(intent.entityId) === epoch\n ) {\n engine.play(intent.entityId, buffer, intent.options);\n }\n })\n .catch(() => {});\n } else if (intent.kind === 'stop') {\n nextEpoch(intent.entityId);\n if (activeSources.delete(intent.entityId)) {\n cleanup.push(intent.entityId);\n engine.stop(intent.entityId);\n }\n } else if (intent.kind === 'set-volume') {\n engine.setVolume(intent.entityId, intent.volume);\n } else if (intent.kind === 'set-bus-volume') {\n bus[intent.bus].volume = intent.volume;\n bus[intent.bus].muted = false;\n engine.setBusVolume(intent.bus, intent.volume);\n } else if (intent.kind === 'set-bus-mute') {\n bus[intent.bus].muted = intent.muted;\n engine.setBusMute(intent.bus, intent.muted);\n } else if (intent.kind === 'set-listener-pose') {\n engine.setListenerPose(intent.pose);\n } else {\n consumer.dispose();\n }\n },\n state(): AudioState {\n return { ...engine.getState(), lastError };\n },\n dispose(): void {\n if (disposed) return;\n disposed = true;\n activeSources.clear();\n entityEpoch.clear();\n sources.clear();\n sourceBytes.clear();\n cleanup.length = 0;\n engine.destroy();\n },\n };\n return consumer;\n}\n\nexport function createWebAudioBackend(): AudioBackend {\n const consumer = createHostAudioConsumer();\n const backend = createAudioIntentBackend({\n emit: (intent) => consumer.consume(intent),\n state: () => consumer.state(),\n });\n return backend;\n}\n","import type { Plugin } from '@forgeax/engine-plugin';\n\nimport { createWebAudioBackend } from './host-audio-consumer';\n\nexport function webAudioPlugin(): Plugin {\n return {\n name: 'web-audio',\n provide: 'audio',\n apply(ctx) {\n const backend = createWebAudioBackend();\n ctx.effect(() => () => backend.destroy(), 'audio/destroy-webaudio');\n ctx.provide('audio', backend);\n },\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/audio-listener-sync-system.ts","../src/clip-loader.ts","../src/audio-loader.ts","../src/web-audio-engine.ts","../src/host-audio-consumer.ts","../src/plugin.ts"],"names":["AudioError"],"mappings":"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","file":"index.mjs","sourcesContent":["// audio-listener-sync-system.ts -- AudioListener world-matrix sync.\n//\n// Syncs the first AudioListener entity's resolved world transform to the Web\n// Audio listener (position + forward/up orientation).\n//\n// feat-20260601 D-6: the sync consumes the single `Transform.world` mat4 (16\n// column-major floats, written by propagateTransforms) instead of a decomposed\n// GlobalTransform TRS. forward / up / position are extracted via the\n// `@forgeax/engine-math` mat4 helpers (getForward = -col2 normalized; getUp =\n// col1 normalized; getTranslation = col3, NOT normalized) -- direction\n// normalization eliminates non-uniform-scale pollution that a bare-column read\n// would leak. The old quaternion-rotate-vector formula is gone.\n//\n// Decision anchors:\n// - plan-strategy D-6 (rename + world-mat4 reshape + mat4 helper reuse)\n// - requirements AC-08 (AudioListener world-matrix sync; quadrant 3 falsify)\n// - requirements E-3 (multiple AudioListeners -> first only)\n//\n// Architecture note: the audio-webaudio package has no dependency on\n// engine-runtime (where Transform lives). The sync function is a pure helper\n// exported for host assembly. The host (engine-runtime or app layer) queries\n// the first AudioListener entity, reads its `Transform.world` mat4 (a 16-float\n// Float32Array), obtains the AudioContext listener from the AudioBackend, and\n// calls `syncListenerFromWorldMatrix(listener, worldMatrix)`.\n//\n// charter awareness:\n// - P3 explicit failure: no-op contracts, no throw for missing listener\n// - P4 consistent abstraction: reuse the math mat4 extract helpers (no\n// hand-rolled quaternion rotation); pure function exports for unit testing\n// - P5 producer/consumer: sync function is the producer; host is the consumer\n\nimport { mat4, vec3 } from '@forgeax/engine-math';\n\n/**\n * Resolved world transform shape (feat-20260601 D-6): a single column-major\n * mat4 carried as 16 contiguous floats -- the `Transform.world` column array\n * view written by propagateTransforms.\n */\nexport interface WorldMatrixData {\n readonly worldMatrix: Float32Array;\n}\n\n/**\n * Pure function: write a world mat4's position/orientation to the Web Audio\n * listener's AudioParams.\n *\n * Exported for unit testing (listener-sync.test.ts) and for host assembly (the\n * host reads `Transform.world` + AudioListener from the World and calls this\n * each frame).\n *\n * - position = `mat4.getTranslation(world)` (col3, copied directly, not normalized)\n * - forward = `mat4.getForward(world)` (-col2, normalized -- removes scale)\n * - up = `mat4.getUp(world)` (col1, normalized -- removes scale)\n *\n * @param listener The Web Audio API AudioListener (from AudioContext.listener)\n * @param worldMatrix The resolved world mat4 (16 column-major floats) of the\n * entity carrying AudioListener.\n */\nexport function syncListenerFromWorldMatrix(\n listener: AudioListener,\n worldMatrix: Float32Array,\n): void {\n const m = worldMatrix as unknown as mat4.Mat4Like;\n\n const position = mat4.getTranslation(vec3.create(), m);\n listener.positionX.value = position[0] as number;\n listener.positionY.value = position[1] as number;\n listener.positionZ.value = position[2] as number;\n\n const forward = mat4.getForward(vec3.create(), m);\n listener.forwardX.value = forward[0] as number;\n listener.forwardY.value = forward[1] as number;\n listener.forwardZ.value = forward[2] as number;\n\n const up = mat4.getUp(vec3.create(), m);\n listener.upX.value = up[0] as number;\n listener.upY.value = up[1] as number;\n listener.upZ.value = up[2] as number;\n}\n\n/**\n * Run the audio listener sync system for a host-owned audio context.\n *\n * The host is responsible for:\n * 1. Querying the World for entities with AudioListener\n * 2. Taking the first AudioListener entity (E-3)\n * 3. Reading its `Transform.world` mat4 (16-float Float32Array)\n * 4. Calling this function with the AudioContext's listener\n *\n * This function is a convenience wrapper that calls\n * `syncListenerFromWorldMatrix(ctx.listener, worldMatrix)`.\n *\n * @param ctx The Web Audio AudioContext (whose .listener receives position/orientation)\n * @param worldMatrix The `Transform.world` mat4 from the AudioListener entity\n */\nexport function audioListenerSyncSystem(ctx: AudioContext, worldMatrix: Float32Array): void {\n syncListenerFromWorldMatrix(ctx.listener, worldMatrix);\n}\n","// clip-loader.ts -- M3 (w27) AudioClipAsset register/load path\n//\n// Load AudioClipAsset from pack-index catalog via fetch + decodeAudioData.\n//\n// Decision anchors:\n// - plan-strategy D-6 (load path: fetch ArrayBuffer -> decodeAudioData -> register)\n// - requirements AC-03 (AudioClipAsset via asset system loadByGuid)\n// - requirements constraint 5 (format decided by browser decodeAudioData)\n// - requirements E-2 (decodeAudioData failure returns Err with code: 'decode-failed')\n// - requirements E-9 (nonexistent GUID returns Err with code 'asset-not-found')\n// - research Finding 'decodeAudioData error semantics'\n//\n// charter awareness:\n// - P3 explicit failure: returns Result<AudioClipAsset, AudioError> with structured errors\n// - P4 consistent abstraction: parallel to image/gltf loader patterns\n\nimport { AudioError } from '@forgeax/engine-audio';\nimport { type AudioClipAsset, err, ok, type Result } from '@forgeax/engine-types';\n\nexport async function decodeAudioClipBytes(\n guid: string,\n bytes: Uint8Array,\n mediaType: `audio/${string}`,\n): Promise<Result<AudioClipAsset, AudioError>> {\n if (mediaType.length <= 'audio/'.length || bytes.byteLength === 0) {\n return err(\n new AudioError({\n code: 'decode-failed',\n expected: `non-empty audio mediaType and source bytes for GUID ${guid}`,\n hint: 'verify the audio artifact mediaType and recook the source bytes',\n detail: {\n code: 'decode-failed' as const,\n reason: 'audio mediaType or source bytes are empty',\n },\n }),\n );\n }\n try {\n return ok({ kind: 'audio', sourceKey: guid, mediaType, bytes: bytes.slice() });\n } catch (e) {\n return err(\n new AudioError({\n code: 'decode-failed',\n expected: `decodable audio artifact bytes for GUID ${guid}`,\n hint: 'verify the audio artifact mediaType and browser-supported codec',\n detail: {\n code: 'decode-failed' as const,\n reason: e instanceof Error ? e.message : 'audio artifact decode failed',\n },\n }),\n );\n }\n}\n","import { AssetError, type Loader, type LoaderAsyncResult } from '@forgeax/engine-types';\nimport { decodeAudioClipBytes } from './clip-loader';\n\n/** Loads an audio catalog row through the browser's native decoder. */\nexport const audioLoader: Loader = {\n kind: 'audio',\n loadPack(input): Promise<LoaderAsyncResult> {\n if (input.kind !== 'audio') {\n return Promise.resolve({\n ok: false,\n error: new AssetError({\n code: 'asset-parse-failed',\n expected: \"Pack v2 loader input with kind 'audio'\",\n hint: 'pass the asset-local audio envelope to the audio loader',\n detail: { sourcePath: input.guid },\n }),\n });\n }\n const source = input.artifacts.source;\n const payloadMediaType =\n typeof input.payload.mediaType === 'string' ? input.payload.mediaType : undefined;\n if (\n source === undefined ||\n !source.descriptor.mediaType.startsWith('audio/') ||\n payloadMediaType !== source.descriptor.mediaType\n ) {\n return Promise.resolve({\n ok: false,\n error: {\n code: 'asset-artifact-media-unsupported',\n expected: 'an asset-local source artifact with an audio/* mediaType',\n hint: 'declare the audio source artifact with a supported mediaType and re-cook',\n detail: {\n guid: input.guid,\n artifactKey: 'source',\n observed: payloadMediaType ?? source?.descriptor.mediaType ?? 'missing',\n expected: 'payload.mediaType matching the audio/* source artifact',\n },\n },\n });\n }\n return decodeAudioClipBytes(input.guid, source.bytes, payloadMediaType as `audio/${string}`);\n },\n async load(): Promise<LoaderAsyncResult> {\n return {\n ok: false,\n error: new AssetError({\n code: 'asset-parse-failed',\n expected: 'Pack v2 audio input with an asset-local source artifact',\n hint: 're-cook the audio source into the Pack v2 asset envelope',\n detail: { sourcePath: 'audio-loader-input' },\n }),\n };\n },\n};\n","// web-audio-engine.ts -- M2 (w16) WebAudioEngine AudioBackend implementation\n//\n// Implements AudioBackend for Web Audio API:\n// 1. Lazy AudioContext creation (D-3) -- ensureContext() on first play()\n// 2. Gesture listener resume (D-3) -- register bounded 'click'/'keydown'/'touchstart'\n// listeners that call ctx.resume(), re-arming them after a refusal\n// 3. Fixed two-bus topology (D-5): masterGain <= sfxGain + musicGain\n// 4. Per-source GainNode for individual volume control\n// 5. Active source Map<entityId, { node, sourceGain, bus }>\n// 6. Health check: getState() / getActiveSourceCount()\n// 7. destroy(): stop all, disconnect, close ctx\n//\n// Decision anchors:\n// - plan-strategy D-3 (lazy-create + one-shot gesture listener resume)\n// - plan-strategy D-5 (fixed two-bus topology: SFX + Music -> Master)\n// - plan-strategy section 3.1 (WebAudioEngine owner of AudioContext + bus GainNodes)\n// - requirements S-1 (AudioContext lifecycle), S-5 (dual bus), S-9 (World Resource)\n// - requirements AC-01 (lazy creation), AC-02 (auto resume), AC-10 (bus volume/mute)\n//\n// charter awareness:\n// - P3 explicit failure: getState() returns real AudioContext.state, never a stale cache\n// - P4 consistent abstraction: implements AudioBackend interface, parallel to InputBackend\n\nimport {\n AUDIO_ERROR_HINTS,\n AudioError,\n type AudioListenerPose,\n type AudioPlayOptions,\n type AudioState,\n type BusName,\n} from '@forgeax/engine-audio';\nimport type { AudioClipAsset } from '@forgeax/engine-types';\n\ninterface ActiveSource {\n node: AudioBufferSourceNode;\n sourceGain: GainNode;\n panner: PannerNode | undefined;\n bus: BusName;\n}\n\nconst GESTURE_EVENTS = ['click', 'keydown', 'touchstart'] as const;\nconst GAIN_TRANSITION_SECONDS = 0.01;\n\nexport class WebAudioEngine {\n private ctx: AudioContext | undefined;\n private closed = false;\n private masterGain: GainNode | undefined;\n private sfxGain: GainNode | undefined;\n private musicGain: GainNode | undefined;\n\n private readonly sources = new Map<number, ActiveSource>();\n\n private gestureListening = false;\n private resumeInFlight: Promise<void> | undefined;\n private readonly gestureResumeHandler: () => void;\n private lastError: AudioError | null = null;\n\n // Per-bus previous-volume cache for mute/unmute restore (D-5).\n private readonly busVolumes = new Map<BusName, number>([\n ['sfx', 1],\n ['music', 1],\n ]);\n private readonly busMuted = new Map<BusName, boolean>([\n ['sfx', false],\n ['music', false],\n ]);\n\n constructor() {\n // Lazy: AudioContext is NOT created here (D-3 / AC-01).\n // The gesture resume handler is a bound arrow so we can pass it\n // to addEventListener/removeEventListener with the same identity.\n this.gestureResumeHandler = () => {\n void this.tryResume();\n };\n }\n\n /**\n * Returns the Web Audio AudioListener for spatialization (D-2).\n * Triggers lazy ensureContext() on first access.\n * Returns undefined if the context could not be created or is closed.\n */\n get listener(): AudioListener | undefined {\n return this.ensureContext().listener;\n }\n\n setListenerPose(pose: AudioListenerPose): void {\n const listener = this.ensureContext().listener;\n listener.positionX.value = pose.positionX;\n listener.positionY.value = pose.positionY;\n listener.positionZ.value = pose.positionZ;\n listener.forwardX.value = pose.forwardX;\n listener.forwardY.value = pose.forwardY;\n listener.forwardZ.value = pose.forwardZ;\n listener.upX.value = pose.upX;\n listener.upY.value = pose.upY;\n listener.upZ.value = pose.upZ;\n }\n\n // -----------------------------------------------------------------------\n // ensureContext -- lazy AudioContext + bus topology creation\n // -----------------------------------------------------------------------\n\n private ensureContext(): AudioContext {\n if (this.ctx) {\n this.registerGestureListener(this.ctx);\n return this.ctx;\n }\n\n const ctx = new AudioContext();\n\n // Build bus topology: masterGain <= sfxGain + musicGain\n const master = ctx.createGain();\n master.gain.value = 1;\n master.connect(ctx.destination);\n\n const sfx = ctx.createGain();\n sfx.gain.value = 1;\n sfx.connect(master);\n\n const music = ctx.createGain();\n music.gain.value = 1;\n music.connect(master);\n\n this.ctx = ctx;\n this.masterGain = master;\n this.sfxGain = sfx;\n this.musicGain = music;\n\n // Register the bounded gesture listener set if ctx is suspended (autoplay gate).\n this.registerGestureListener(ctx);\n\n return ctx;\n }\n\n // -----------------------------------------------------------------------\n // Gesture listener -- D-3 bounded resume retry on user gesture\n // -----------------------------------------------------------------------\n\n private registerGestureListener(ctx: AudioContext): void {\n if (ctx.state !== 'suspended') {\n return;\n }\n if (this.gestureListening) {\n return;\n }\n\n this.gestureListening = true;\n for (const event of GESTURE_EVENTS) {\n document.addEventListener(event, this.gestureResumeHandler, { once: true });\n }\n }\n\n private removeGestureListener(): void {\n if (!this.gestureListening) {\n return;\n }\n this.gestureListening = false;\n for (const event of GESTURE_EVENTS) {\n document.removeEventListener(event, this.gestureResumeHandler);\n }\n }\n\n private async tryResume(): Promise<void> {\n const ctx = this.ctx;\n if (!ctx || this.closed || ctx.state !== 'suspended') return;\n if (this.resumeInFlight !== undefined) return this.resumeInFlight;\n\n const attempt = (async () => {\n try {\n await ctx.resume();\n } catch {\n // Inspect the real context state below so refusal remains recoverable.\n } finally {\n if (!this.closed && this.ctx === ctx) {\n if (ctx.state === 'running') {\n this.lastError = null;\n this.removeGestureListener();\n } else if (ctx.state === 'suspended') {\n this.recordResumeFailure();\n this.rearmGestureListener(ctx);\n } else {\n this.removeGestureListener();\n }\n }\n this.resumeInFlight = undefined;\n }\n })();\n this.resumeInFlight = attempt;\n return attempt;\n }\n\n private recordResumeFailure(): void {\n this.lastError = new AudioError({\n code: 'context-suspended',\n expected: 'AudioContext.resume() to make the existing context running',\n hint: AUDIO_ERROR_HINTS['context-suspended'],\n detail: { code: 'context-suspended' },\n });\n }\n\n private recordDecodeFailure(sourceKey: string, cause: unknown): void {\n this.lastError = new AudioError({\n code: 'decode-failed',\n expected: `browser-decodable audio bytes for sourceKey ${sourceKey}`,\n hint: AUDIO_ERROR_HINTS['decode-failed'],\n detail: {\n code: 'decode-failed',\n reason: cause instanceof Error ? cause.message : String(cause),\n },\n });\n }\n\n private rearmGestureListener(ctx: AudioContext): void {\n this.removeGestureListener();\n this.registerGestureListener(ctx);\n }\n\n // -----------------------------------------------------------------------\n // AudioBackend implementation\n // -----------------------------------------------------------------------\n\n decode(bytes: Uint8Array): Promise<AudioBuffer> {\n return this.ensureContext().decodeAudioData(bytes.slice().buffer as ArrayBuffer);\n }\n\n play(entityId: number, clip: AudioBuffer | AudioClipAsset, opts: AudioPlayOptions): void {\n if ('kind' in clip) {\n void this.decode(clip.bytes).then(\n (buffer) => {\n if (this.lastError?.code === 'decode-failed') {\n this.lastError = null;\n }\n this.play(entityId, buffer, opts);\n },\n (cause) => this.recordDecodeFailure(clip.sourceKey, cause),\n );\n return;\n }\n const clipBuffer = clip;\n // If this entity is already playing, stop it first (replace).\n if (this.sources.has(entityId)) {\n this.stop(entityId);\n }\n\n const ctx = this.ensureContext();\n\n // Per-source GainNode for volume control\n const sourceGain = ctx.createGain();\n sourceGain.gain.value = opts.volume;\n\n // PannerNode for 3D spatialization (D-2 equalpower default)\n let panner: PannerNode | undefined;\n if (opts.spatialBlend > 0) {\n panner = ctx.createPanner();\n panner.panningModel = 'equalpower';\n }\n\n // Route to the appropriate bus (gain nodes guaranteed by ensureContext above)\n const busGain = this.busGainFor(opts.bus);\n if (!busGain) return;\n\n if (panner) {\n sourceGain.connect(panner);\n panner.connect(busGain);\n } else {\n sourceGain.connect(busGain);\n }\n\n // Create AudioBufferSourceNode for one-shot playback\n const node = ctx.createBufferSource();\n node.buffer = clipBuffer;\n node.loop = opts.loop;\n node.connect(sourceGain);\n node.start();\n\n // Bookkeeping\n this.sources.set(entityId, { node, sourceGain, panner, bus: opts.bus });\n\n // F24: attach onended for non-loop sources with identity guard (D-5).\n // Loop sources never naturally end — no onended needed.\n if (!opts.loop) {\n node.onended = () => {\n const current = this.sources.get(entityId);\n if (current?.node === node) {\n this.stop(entityId);\n }\n };\n }\n }\n\n stop(entityId: number): void {\n const source = this.sources.get(entityId);\n if (!source) return;\n\n try {\n source.node.stop();\n } catch {\n // Already stopped -- ignore InvalidStateError from doubly-stopped nodes.\n }\n source.node.disconnect();\n source.sourceGain.disconnect();\n source.panner?.disconnect();\n this.sources.delete(entityId);\n }\n\n setVolume(entityId: number, volume: number): void {\n const source = this.sources.get(entityId);\n if (!source) return;\n this.scheduleGainTransition(source.sourceGain, volume);\n }\n\n setBusVolume(busName: BusName, volume: number): void {\n const gain = this.busGainFor(busName);\n if (!gain) return;\n\n if (!this.scheduleGainTransition(gain, volume)) return;\n this.busVolumes.set(busName, volume);\n\n // If we were muted, un-mute (setting volume is an explicit un-mute signal).\n if (this.busMuted.get(busName)) {\n this.busMuted.set(busName, false);\n }\n }\n\n setBusMute(busName: BusName, muted: boolean): void {\n const gain = this.busGainFor(busName);\n if (!gain) return;\n\n const target = muted ? 0 : (this.busVolumes.get(busName) ?? 1);\n if (!this.scheduleGainTransition(gain, target)) return;\n this.busMuted.set(busName, muted);\n }\n\n getState(): AudioState {\n if (this.closed) {\n return { contextState: 'closed', activeSourceCount: 0, lastError: null };\n }\n const contextState: 'running' | 'suspended' | 'closed' =\n this.ctx?.state === 'closed'\n ? 'closed'\n : this.ctx?.state === 'running'\n ? 'running'\n : 'suspended';\n return {\n contextState,\n activeSourceCount: this.sources.size,\n lastError: this.lastError,\n };\n }\n\n getActiveSourceCount(): number {\n return this.sources.size;\n }\n\n destroy(): void {\n if (this.closed) return;\n this.closed = true;\n\n // Stop all active sources\n for (const entityId of this.sources.keys()) {\n this.stop(entityId);\n }\n\n // Disconnect bus topology\n if (this.sfxGain) {\n this.sfxGain.disconnect();\n this.sfxGain = undefined;\n }\n if (this.musicGain) {\n this.musicGain.disconnect();\n this.musicGain = undefined;\n }\n if (this.masterGain) {\n this.masterGain.disconnect();\n this.masterGain = undefined;\n }\n\n // Remove gesture listener\n this.removeGestureListener();\n\n // Close AudioContext (irreversible per R-4)\n if (this.ctx) {\n void this.ctx.close();\n this.ctx = undefined;\n }\n }\n\n // -----------------------------------------------------------------------\n // Private helpers\n // -----------------------------------------------------------------------\n\n private scheduleGainTransition(gain: GainNode, target: number): boolean {\n if (!this.ctx || !Number.isFinite(target) || target < 0) return false;\n\n const now = this.ctx.currentTime;\n const param = gain.gain;\n param.cancelScheduledValues(now);\n param.setValueAtTime(param.value, now);\n param.linearRampToValueAtTime(target, now + GAIN_TRANSITION_SECONDS);\n return true;\n }\n\n private busGainFor(busName: BusName): GainNode | undefined {\n switch (busName) {\n case 'sfx':\n return this.sfxGain;\n case 'music':\n return this.musicGain;\n }\n }\n}\n","import {\n type AudioBackend,\n type AudioIntent,\n type AudioPlayOptions,\n type AudioState,\n createAudioIntentBackend,\n} from '@forgeax/engine-audio';\nimport { AudioError } from '@forgeax/engine-types';\nimport { WebAudioEngine } from './web-audio-engine';\n\ninterface ActiveSource {\n readonly entityId: number;\n readonly sourceKey: string;\n readonly bytes?: Uint8Array;\n readonly options: AudioPlayOptions;\n}\n\nexport interface HostAudioConsumer {\n consume(intent: AudioIntent): void;\n state(): AudioState;\n dispose(): void;\n readonly engine: WebAudioEngine;\n}\n\nfunction decodeError(sourceKey: string, cause: unknown): AudioError {\n return new AudioError({\n code: 'decode-failed',\n expected: `browser-decodable audio bytes for sourceKey ${sourceKey}`,\n hint: 'verify the audio media type and source bytes',\n detail: {\n code: 'decode-failed',\n reason: cause instanceof Error ? cause.message : String(cause),\n },\n });\n}\n\nfunction sameBytes(left: Uint8Array, right: Uint8Array): boolean {\n if (left.byteLength !== right.byteLength) return false;\n for (let index = 0; index < left.byteLength; index += 1) {\n if (left[index] !== right[index]) return false;\n }\n return true;\n}\n\ninterface DecodeEntry {\n readonly promise: Promise<AudioBuffer>;\n}\n\nexport function createHostAudioConsumer(engine = new WebAudioEngine()): HostAudioConsumer {\n const sources = new Map<string, DecodeEntry>();\n const sourceBytes = new Map<string, Uint8Array>();\n const activeSources = new Map<number, ActiveSource>();\n const entityEpoch = new Map<number, number>();\n const bus = {\n sfx: { volume: 1, muted: false },\n music: { volume: 1, muted: false },\n };\n const cleanup: number[] = [];\n let lastError: AudioError | null = null;\n let disposed = false;\n const nextEpoch = (entityId: number): number => {\n const epoch = (entityEpoch.get(entityId) ?? 0) + 1;\n entityEpoch.set(entityId, epoch);\n return epoch;\n };\n const consumer: HostAudioConsumer = {\n engine,\n consume(intent): void {\n if (disposed && intent.kind !== 'destroy') return;\n if (intent.kind === 'play') {\n const epoch = nextEpoch(intent.entityId);\n if (intent.bytes !== undefined) {\n const incomingBytes = intent.bytes.slice();\n const publishedBytes = sourceBytes.get(intent.sourceKey);\n if (publishedBytes === undefined || !sameBytes(publishedBytes, incomingBytes)) {\n sourceBytes.set(intent.sourceKey, incomingBytes);\n sources.delete(intent.sourceKey);\n }\n }\n const bytes = sourceBytes.get(intent.sourceKey);\n activeSources.set(intent.entityId, {\n entityId: intent.entityId,\n sourceKey: intent.sourceKey,\n ...(bytes === undefined ? {} : { bytes: bytes.slice() }),\n options: intent.options,\n });\n let decoded = sources.get(intent.sourceKey);\n if (decoded === undefined && bytes !== undefined) {\n const entry: DecodeEntry = {\n promise: engine.decode(bytes),\n };\n decoded = entry;\n sources.set(intent.sourceKey, entry);\n void entry.promise.then(\n () => {\n if (sources.get(intent.sourceKey) === entry && lastError?.code === 'decode-failed') {\n lastError = null;\n }\n },\n (cause) => {\n if (sources.get(intent.sourceKey) !== entry) return;\n sources.delete(intent.sourceKey);\n lastError = decodeError(intent.sourceKey, cause);\n },\n );\n }\n if (decoded === undefined) {\n lastError = decodeError(intent.sourceKey, new Error('sourceKey was not published'));\n return;\n }\n const currentDecode = decoded;\n void currentDecode.promise\n .then((buffer) => {\n if (\n !disposed &&\n sources.get(intent.sourceKey) === currentDecode &&\n entityEpoch.get(intent.entityId) === epoch\n ) {\n engine.play(intent.entityId, buffer, intent.options);\n }\n })\n .catch(() => {});\n } else if (intent.kind === 'stop') {\n nextEpoch(intent.entityId);\n if (activeSources.delete(intent.entityId)) {\n cleanup.push(intent.entityId);\n engine.stop(intent.entityId);\n }\n } else if (intent.kind === 'set-volume') {\n engine.setVolume(intent.entityId, intent.volume);\n } else if (intent.kind === 'set-bus-volume') {\n bus[intent.bus].volume = intent.volume;\n bus[intent.bus].muted = false;\n engine.setBusVolume(intent.bus, intent.volume);\n } else if (intent.kind === 'set-bus-mute') {\n bus[intent.bus].muted = intent.muted;\n engine.setBusMute(intent.bus, intent.muted);\n } else if (intent.kind === 'set-listener-pose') {\n engine.setListenerPose(intent.pose);\n } else {\n consumer.dispose();\n }\n },\n state(): AudioState {\n return { ...engine.getState(), lastError };\n },\n dispose(): void {\n if (disposed) return;\n disposed = true;\n activeSources.clear();\n entityEpoch.clear();\n sources.clear();\n sourceBytes.clear();\n cleanup.length = 0;\n engine.destroy();\n },\n };\n return consumer;\n}\n\nexport function createWebAudioBackend(): AudioBackend {\n const consumer = createHostAudioConsumer();\n const backend = createAudioIntentBackend({\n emit: (intent) => consumer.consume(intent),\n state: () => consumer.state(),\n });\n return backend;\n}\n","import type { Plugin } from '@forgeax/engine-plugin';\n\nimport { createWebAudioBackend } from './host-audio-consumer';\n\nexport function webAudioPlugin(): Plugin {\n return {\n name: 'web-audio',\n provide: 'audio',\n apply(ctx) {\n const backend = createWebAudioBackend();\n ctx.effect(() => () => backend.destroy(), 'audio/destroy-webaudio');\n ctx.provide('audio', backend);\n },\n };\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forgeax/engine-audio-webaudio",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.7",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -26,14 +26,14 @@
|
|
|
26
26
|
"LICENSE"
|
|
27
27
|
],
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@forgeax/engine-audio": "0.1.
|
|
30
|
-
"@forgeax/engine-ecs": "0.1.
|
|
31
|
-
"@forgeax/engine-math": "0.1.
|
|
32
|
-
"@forgeax/engine-plugin": "0.1.
|
|
33
|
-
"@forgeax/engine-types": "0.1.
|
|
29
|
+
"@forgeax/engine-audio": "0.1.7",
|
|
30
|
+
"@forgeax/engine-ecs": "0.1.7",
|
|
31
|
+
"@forgeax/engine-math": "0.1.7",
|
|
32
|
+
"@forgeax/engine-plugin": "0.1.7",
|
|
33
|
+
"@forgeax/engine-types": "0.1.7"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
|
-
"@forgeax/engine-import": "0.1.
|
|
36
|
+
"@forgeax/engine-import": "0.1.7"
|
|
37
37
|
},
|
|
38
38
|
"forgeax": {
|
|
39
39
|
"metrics": {
|
package/src/clip-loader.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
//
|
|
5
5
|
// Decision anchors:
|
|
6
6
|
// - plan-strategy D-6 (load path: fetch ArrayBuffer -> decodeAudioData -> register)
|
|
7
|
-
// - requirements AC-03 (AudioClipAsset via
|
|
7
|
+
// - requirements AC-03 (AudioClipAsset via asset system loadByGuid)
|
|
8
8
|
// - requirements constraint 5 (format decided by browser decodeAudioData)
|
|
9
9
|
// - requirements E-2 (decodeAudioData failure returns Err with code: 'decode-failed')
|
|
10
10
|
// - requirements E-9 (nonexistent GUID returns Err with code 'asset-not-found')
|
|
@@ -15,13 +15,7 @@
|
|
|
15
15
|
// - P4 consistent abstraction: parallel to image/gltf loader patterns
|
|
16
16
|
|
|
17
17
|
import { AudioError } from '@forgeax/engine-audio';
|
|
18
|
-
import type
|
|
19
|
-
AssetDecoderContribution,
|
|
20
|
-
AssetKind,
|
|
21
|
-
AudioClipAsset,
|
|
22
|
-
Result,
|
|
23
|
-
} from '@forgeax/engine-types';
|
|
24
|
-
import { err, ok } from '@forgeax/engine-types';
|
|
18
|
+
import { type AudioClipAsset, err, ok, type Result } from '@forgeax/engine-types';
|
|
25
19
|
|
|
26
20
|
export async function decodeAudioClipBytes(
|
|
27
21
|
guid: string,
|
|
@@ -57,55 +51,3 @@ export async function decodeAudioClipBytes(
|
|
|
57
51
|
);
|
|
58
52
|
}
|
|
59
53
|
}
|
|
60
|
-
|
|
61
|
-
export const audioClipContribution: AssetDecoderContribution<AudioClipAsset, 'audio'> = {
|
|
62
|
-
kind: { kind: 'audio' } as AssetKind<AudioClipAsset, 'audio'>,
|
|
63
|
-
consumer: 'WebAudioEngine',
|
|
64
|
-
decoder: {
|
|
65
|
-
async decode({ envelope, artifacts }) {
|
|
66
|
-
const source = Object.values(envelope.artifacts).find((descriptor) =>
|
|
67
|
-
descriptor.path.endsWith('.audio'),
|
|
68
|
-
);
|
|
69
|
-
if (source === undefined) {
|
|
70
|
-
return err({
|
|
71
|
-
code: 'asset-package-invalid',
|
|
72
|
-
expected: 'an asset-local audio source artifact',
|
|
73
|
-
hint: 'recook the audio asset with its source artifact',
|
|
74
|
-
detail: { guid: envelope.guid, reason: 'source artifact is missing' },
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
const bytes = await artifacts.read(source);
|
|
78
|
-
if (!bytes.ok) {
|
|
79
|
-
return err({
|
|
80
|
-
code: 'asset-package-invalid',
|
|
81
|
-
expected: 'a readable audio source artifact',
|
|
82
|
-
hint: 'repair the Pack artifact and retry the audio decoder',
|
|
83
|
-
detail: { guid: envelope.guid, reason: bytes.error.code },
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
const mediaType = source.mediaType;
|
|
87
|
-
if (!mediaType.startsWith('audio/')) {
|
|
88
|
-
return err({
|
|
89
|
-
code: 'asset-package-invalid',
|
|
90
|
-
expected: 'an audio/* source artifact',
|
|
91
|
-
hint: 'publish the audio artifact with its actual media type',
|
|
92
|
-
detail: { guid: envelope.guid, reason: `unsupported media type ${mediaType}` },
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
if (bytes.value.byteLength === 0) {
|
|
96
|
-
return err({
|
|
97
|
-
code: 'asset-package-invalid',
|
|
98
|
-
expected: 'non-empty audio source bytes',
|
|
99
|
-
hint: 'recook the audio source and retry the decoder',
|
|
100
|
-
detail: { guid: envelope.guid, reason: 'empty audio artifact' },
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
return ok({
|
|
104
|
-
kind: 'audio',
|
|
105
|
-
sourceKey: envelope.guid,
|
|
106
|
-
mediaType: mediaType as `audio/${string}`,
|
|
107
|
-
bytes: bytes.value.slice(),
|
|
108
|
-
});
|
|
109
|
-
},
|
|
110
|
-
},
|
|
111
|
-
};
|
package/src/index.ts
CHANGED