@carbonenginejs/runtime-resource 0.11.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/formats/bnk/CjsBnkFormat.js +12 -2
- package/dist/formats/bnk/CjsBnkFormat.js.map +1 -1
- package/dist/formats/bnk/core/graph.js +3 -6
- package/dist/formats/bnk/core/graph.js.map +1 -1
- package/dist/formats/bnk/core/helpers.js +53 -11
- package/dist/formats/bnk/core/helpers.js.map +1 -1
- package/dist/formats/bnk/core/sfxNodes.js +532 -0
- package/dist/formats/bnk/core/sfxNodes.js.map +1 -0
- package/dist/formats/bnk/core/soundbanksInfo.js +59 -51
- package/dist/formats/bnk/core/soundbanksInfo.js.map +1 -1
- package/dist/formats/gr2/CjsGr2Format.js +256 -13
- package/dist/formats/gr2/CjsGr2Format.js.map +1 -1
- package/dist/formats/gr2/core/helpers.js +15 -15
- package/dist/formats/gr2/core/helpers.js.map +1 -1
- package/dist/formats/gr2/core/json.js +1 -1
- package/dist/formats/gr2/core/json.js.map +1 -1
- package/dist/formats/gr2/core/targets.js +1 -1
- package/dist/formats/gr2/core/targets.js.map +1 -1
- package/dist/formats/gr2/index.js +0 -1
- package/dist/formats/gr2/index.js.map +1 -1
- package/dist/formats/hlsl/core/analysis.js +1 -1
- package/dist/formats/hlsl/index.js +1 -0
- package/dist/formats/hlsl/index.js.map +1 -1
- package/dist/formats/index.js +3 -6
- package/dist/formats/index.js.map +1 -1
- package/dist/formats/webgl/core/cewg/binary.js +3 -3
- package/dist/formats/webgl/core/cewg/binary.js.map +1 -1
- package/dist/formats/webgl/core/effectPackage.js +6 -3
- package/dist/formats/webgl/core/effectPackage.js.map +1 -1
- package/dist/formats/webgl/core/effectPackageValidation.js +1 -1
- package/dist/formats/webgl/core/effectPackageValidation.js.map +1 -1
- package/dist/formats/webgl/core/errors.js +3 -3
- package/dist/formats/webgl/core/errors.js.map +1 -1
- package/dist/formats/webgpu/core/packageMetadata.js +2 -2
- package/dist/formats/webgpu/core/packageMetadata.js.map +1 -1
- package/docs/formats/dxbc/README.md +68 -0
- package/docs/formats/dxbc/architecture.md +80 -0
- package/docs/formats/dxbc/reference/api.md +77 -0
- package/docs/formats/dxbc/reference/classes/README.md +76 -0
- package/docs/formats/dxbc/reference/decoded-output.md +122 -0
- package/docs/formats/gr2.md +3 -4
- package/docs/formats/hlsl/README.md +54 -0
- package/docs/formats/hlsl/architecture.md +67 -0
- package/docs/formats/hlsl/guides/hydrating-json-output.md +62 -0
- package/docs/formats/hlsl/guides/reading-effects.md +64 -0
- package/docs/formats/hlsl/reference/advanced-analysis.md +66 -0
- package/docs/formats/hlsl/reference/api.md +97 -0
- package/docs/formats/hlsl/reference/classes/README.md +16 -0
- package/docs/formats/hlsl/reference/classes/carbon-compatibility.md +66 -0
- package/docs/formats/hlsl/reference/classes/public-api.md +26 -0
- package/docs/formats/hlsl/reference/classes/tr2-effect-model.md +150 -0
- package/docs/formats/hlsl/reference/json-graph.md +100 -0
- package/docs/formats/hlsl/reference/portable-reflection.md +141 -0
- package/docs/formats/provenance.md +9 -4
- package/docs/formats/webgl/README.md +57 -0
- package/docs/formats/webgl/architecture.md +70 -0
- package/docs/formats/webgl/carbon-constant-layouts.md +326 -0
- package/docs/formats/webgl/decl-io.md +1234 -0
- package/docs/formats/webgl/effect-reflection.md +127 -0
- package/docs/formats/webgl/memory-structured.md +871 -0
- package/docs/formats/webgl/reference/classes/README.md +96 -0
- package/docs/formats/webgl/texture-sample.md +964 -0
- package/docs/formats/webgpu/README.md +81 -0
- package/docs/formats/webgpu/architecture.md +93 -0
- package/docs/formats/webgpu/formats/cewgpu.md +479 -0
- package/docs/formats/webgpu/guides/effect-packaging.md +199 -0
- package/docs/formats/webgpu/reference/api.md +197 -0
- package/docs/formats/webgpu/reference/classes/README.md +66 -0
- package/docs/formats/webgpu/reference/wgsl-compatibility.md +1442 -0
- package/docs/formats/wwise.md +16 -1
- package/docs/reference/classes/formats.md +10 -10
- package/format-notices/bnk/NOTICE +5 -4
- package/format-notices/webgl/NOTICE +1 -1
- package/package.json +1 -1
- package/dist/formats/gr2/core/CjsFormatGr2.js +0 -273
- package/dist/formats/gr2/core/CjsFormatGr2.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"effectPackage.js","sources":["../../../../../src/formats/webgl/core/effectPackage.js"],"sourcesContent":["import { EFFECT_INFO_VERSION } from \"./effectPackageValidation.js\";\nimport { CjsHlslFormat } from \"../../hlsl/index.js\";\nimport { HlslEffectBindingManifest } from \"../../hlsl/core/tr2/shader/HlslEffectBindingManifest.js\";\nimport { HlslRenderContextEnum, hlslShaderStageName } from \"../../hlsl/core/tr2/HlslRenderContextEnum.js\";\n\nimport {\n buildEffectPermutationGraph,\n EFFECT_PERMUTATION_GRAPH_CHUNK,\n EFFECT_PERMUTATION_GRAPH_FORMAT,\n EFFECT_PERMUTATION_GRAPH_VERSION\n} from \"../../../format/effect/effectPermutationGraph.js\";\nimport {\n buildCompleteEffectReflection,\n EFFECT_REFLECTION_BLOB_CHUNK,\n EFFECT_REFLECTION_CHUNK\n} from \"../../../format/effect/effectReflectionPackage.js\";\nimport { buildPackage, emitGlslWithOptions, inspectWithValues } from \"./helpers.js\";\nimport { sha256Bytes, sha256Utf8 } from \"../../../format/effect/sha256.js\";\n\nconst PACKAGE_VERSION = \"0.2.0\";\n\n/**\n * Builds a complete CEWG package from compiled Tr2 effect bytes.\n *\n * This browser-safe path owns whole-effect selection, stage translation,\n * package assembly, and structural qualification. Filesystem and native-tool\n * concerns remain in Node callers.\n *\n * @param {Uint8Array|ArrayBuffer|ArrayBufferView} input Compiled effect bytes.\n * @param {object} [options] Selection, provenance, and emitter policy.\n * @returns {object} Package bytes plus inspection and qualification records.\n */\nexport function buildEffectPackage(input, options = {})\n{\n const values = normalizeOptions(input, options);\n const effectRes = CjsHlslFormat.read(values.sourceBytes, {\n emit: CjsHlslFormat.OUTPUT_RAW,\n source: values.source\n });\n\n if (!effectRes.IsGood())\n {\n throw effectRes.loadError || new Error(\"Tr2EffectRes failed to load input\");\n }\n\n const sourceIdentity = normalizeSourceIdentity(values);\n // One INFO version means one contract, and that contract requires complete\n // source reflection, which only version-15 input can supply.\n if (effectRes.m_version !== 15)\n {\n throw new Error(\n \"Effect package requires a version-15 compiled effect, got version \"\n + (effectRes.m_version ?? \"unknown\")\n );\n }\n\n const permutationGraph = buildEffectPermutationGraph(effectRes);\n const reflectionPackage = effectRes.m_version === 15\n ? buildCompleteEffectReflection(\n effectRes,\n permutationGraph,\n {\n sourceIdentity,\n sourcePath: values.source\n }\n )\n : null;\n const variants = buildExportVariants(effectRes, values.allPermutations);\n const bodyMap = new Map();\n const stageMap = new Map();\n const shaderMap = new Map();\n\n for (const variant of variants)\n {\n if (bodyMap.has(variant.bodyKey))\n {\n continue;\n }\n\n const shader = effectRes.GetShader(toShaderOptions(variant.options));\n\n if (!shader)\n {\n bodyMap.set(variant.bodyKey, {\n key: variant.bodyKey,\n bodyOffset: variant.bodyOffset,\n bodySize: variant.bodySize,\n firstVariantKey: variant.key,\n error: \"Tr2EffectRes.GetShader returned null\",\n manifest: null,\n stages: []\n });\n continue;\n }\n\n const effectDescription = shader.GetEffectDescription();\n const manifest = HlslEffectBindingManifest.fromEffectDescription(effectDescription);\n const collection = collectStages(effectDescription, values.selection);\n const body = {\n key: variant.bodyKey,\n bodyOffset: variant.bodyOffset,\n bodySize: variant.bodySize,\n firstVariantKey: variant.key,\n error: collection.errors.length ? collection.errors.join(\"; \") : null,\n manifest: manifest.toJSON(),\n stages: []\n };\n\n for (const stage of collection.stages)\n {\n const stageKey = `${variant.bodyKey}.${stage.key}`;\n const shaderKey = `shader_${stageKey}`;\n const contract = buildStageContract(stage);\n const stageRecord = {\n key: stageKey,\n bodyKey: variant.bodyKey,\n localKey: stage.key,\n techniqueName: stage.techniqueName,\n passIndex: stage.passIndex,\n stageType: stage.stageType,\n stageName: stage.stageName,\n shaderHandle: stage.shaderHandle,\n shaderSize: stage.bytecode.shaderSize,\n stringTableOffset: stage.bytecode.stringTableOffset,\n shaderKey,\n contract\n };\n\n stageMap.set(stageKey, stageRecord);\n body.stages.push(stageKey);\n shaderMap.set(shaderKey, {\n key: shaderKey,\n firstStageKey: stageKey,\n firstBodyKey: variant.bodyKey,\n stageName: stage.stageName,\n shaderSize: stage.bytecode.shaderSize,\n stringTableOffset: stage.bytecode.stringTableOffset,\n bytes: stage.bytecode.bytes,\n contracts: [ {\n stageKey,\n techniqueName: stage.techniqueName,\n passIndex: stage.passIndex,\n stageName: stage.stageName,\n contract\n } ]\n });\n }\n\n bodyMap.set(variant.bodyKey, body);\n }\n\n translateStages(shaderMap, stageMap, values);\n\n const bodies = Array.from(bodyMap.values());\n const stages = Array.from(stageMap.values());\n const translatedShaders = Array.from(shaderMap.values()).map((record) =>\n {\n const { bytes, emit, ...output } = record;\n\n output.primaryContract = mergeShaderContracts(output.contracts);\n return output;\n });\n const failedShaders = translatedShaders.filter((record) =>\n !record.hlsl2webgl?.ok && !record.excluded);\n const excludedShaders = translatedShaders.filter((record) => record.excluded);\n const failedBodies = bodies.filter((body) => body.error);\n const rasterCompleteness = inspectRasterCompleteness(stages, translatedShaders);\n const availableShaderCount = translatedShaders.filter((record) =>\n record.hlsl2webgl?.ok && record.source).length;\n const info = {\n format: \"CEWG\",\n formatVersion: EFFECT_INFO_VERSION,\n packageKind: values.allPermutations\n ? \"tr2-effect-webgl-permutations\"\n : \"tr2-effect-webgl\",\n targetBackend: \"webgl\",\n backendPackage: \"@carbonenginejs/format-webgl\",\n backendPackageVersion: PACKAGE_VERSION,\n generatedAt: values.generatedAt,\n sourcePath: values.source,\n outputPath: values.outputPath,\n sourceByteLength: sourceIdentity.byteLength,\n sourceMd5: sourceIdentity.md5,\n sourceSha256: sourceIdentity.sha256,\n sourceIdentity,\n translator: \"dxbc-js-emitter\",\n translatorVersion: PACKAGE_VERSION,\n language: \"es300\",\n flags: null,\n selection: values.selection,\n permutationMode: values.allPermutations ? \"all\" : \"selected\",\n defaultPermutationIndex: defaultPermutationIndex(effectRes.m_permutations),\n sourceEffectVersion: effectRes.m_version,\n ...(reflectionPackage ? {\n sourceBodyCoverage: \"all-unique\",\n backendBodyCoverage: values.allPermutations ? \"all\" : \"selected\",\n backendProgramCoverage: selectionCoversWholeEffect(values.selection)\n ? \"all-stages\"\n : \"filtered\"\n } : {}),\n permutationCount: variants.length,\n uniqueBodyCount: bodies.length,\n sourcePermutationCount: permutationGraph.variants.length,\n sourceUniqueBodyCount: permutationGraph.bodies.length,\n permutationGraph: {\n chunk: EFFECT_PERMUTATION_GRAPH_CHUNK,\n format: EFFECT_PERMUTATION_GRAPH_FORMAT,\n formatVersion: EFFECT_PERMUTATION_GRAPH_VERSION,\n sha256: sha256Utf8(`${JSON.stringify(permutationGraph)}\\n`),\n permutationCount: permutationGraph.variants.length,\n uniqueBodyCount: permutationGraph.bodies.length\n },\n ...(reflectionPackage\n ? { effectReflection: reflectionPackage.pointer }\n : {}),\n bodyStageCount: stages.length,\n uniqueShaderCount: translatedShaders.length,\n translatedShaderCount: translatedShaders.length - failedShaders.length - excludedShaders.length,\n excludedShaderCount: excludedShaders.length,\n failedShaderCount: failedShaders.length,\n failedBodyCount: failedBodies.length,\n expectedRasterPassCount: rasterCompleteness.expectedPassCount,\n completeRasterPassCount: rasterCompleteness.completePassCount,\n incompleteRasterPassCount: rasterCompleteness.incompletePasses.length,\n availableShaderCount,\n allowFailures: values.allowFailures,\n completeness: {\n packageValid: true,\n sourceComplete: reflectionPackage !== null,\n backendComplete: false,\n runtimeComplete: false\n }\n };\n const metadata = {\n generatedAt: values.generatedAt,\n sourcePath: values.source,\n effectResource: effectRes.toJSON(),\n permutations: effectRes.GetPermutationDescription(),\n variants,\n bodies: bodies.map((body) => ({\n key: body.key,\n bodyOffset: body.bodyOffset,\n bodySize: body.bodySize,\n firstVariantKey: body.firstVariantKey,\n error: body.error,\n manifest: body.manifest\n }))\n };\n const glsl = {\n format: \"CEWG_GLSL_SET\",\n formatVersion: 1,\n language: \"es300\",\n permutationMode: info.permutationMode,\n selection: values.selection,\n variants: variants.map((variant) => ({\n key: variant.key,\n permutationIndex: variant.permutationIndex,\n bodyKey: variant.bodyKey\n })),\n bodies: bodies.map((body) => ({\n key: body.key,\n error: body.error,\n stages: body.stages\n })),\n stages,\n shaders: translatedShaders\n };\n const qualification = qualifyEffectPackage({\n info,\n metadata,\n glsl,\n failedShaders,\n excludedShaders,\n failedBodies,\n rasterCompleteness,\n availableShaderCount\n });\n if (!qualification.ok && !values.allowFailures)\n {\n throw new Error(\n `CEWG target is incomplete; output was not built. ${qualification.errors.join(\"; \")}`\n );\n }\n\n const chunks = [\n [ \"INFO\", info ],\n [ \"META\", metadata ],\n [ EFFECT_PERMUTATION_GRAPH_CHUNK, permutationGraph ],\n ...(reflectionPackage\n ? [\n [ EFFECT_REFLECTION_CHUNK, reflectionPackage.reflection ],\n [ EFFECT_REFLECTION_BLOB_CHUNK, reflectionPackage.blobBytes ]\n ]\n : []),\n [ \"GLSL\", glsl ]\n ];\n\n if (values.includeSourceEffect)\n {\n chunks.push([ \"TR2E\", values.sourceBytes ]);\n }\n\n const bytes = buildPackage(chunks);\n const inspection = inspectWithValues(bytes, {\n emit: \"json\",\n source: values.source\n });\n\n return Object.freeze({\n bytes,\n info: Object.freeze(info),\n metadata: Object.freeze(metadata),\n permutationGraph,\n reflection: reflectionPackage?.reflection ?? null,\n reflectionBlobs: reflectionPackage?.blobBytes ?? null,\n glsl: Object.freeze(glsl),\n inspection: Object.freeze(inspection),\n qualification: Object.freeze(qualification)\n });\n}\n\nfunction normalizeOptions(input, options)\n{\n if (!options || typeof options !== \"object\" || Array.isArray(options))\n {\n throw new TypeError(\"CEWG effect options must be an object\");\n }\n\n const sourceBytes = toBytes(input);\n const source = String(options.source ?? \"memory\").trim() || \"memory\";\n const selection = Object.freeze({\n technique: options.technique === undefined || options.technique === null\n ? null\n : String(options.technique),\n pass: options.pass === undefined || options.pass === null ? null : Number(options.pass),\n stage: options.stage === undefined || options.stage === null\n ? null\n : String(options.stage).toLowerCase()\n });\n\n if (selection.pass !== null\n && (!Number.isSafeInteger(selection.pass) || selection.pass < 0))\n {\n throw new TypeError(\"CEWG effect pass must be a non-negative integer or null\");\n }\n\n if (selection.stage !== null\n && ![ \"vertex\", \"pixel\", \"compute\" ].includes(selection.stage))\n {\n throw new TypeError(`Unsupported CEWG effect stage: ${selection.stage}`);\n }\n\n if (options.emitterOptions !== undefined\n && (!options.emitterOptions || typeof options.emitterOptions !== \"object\"\n || Array.isArray(options.emitterOptions)))\n {\n throw new TypeError(\"CEWG emitterOptions must be an object\");\n }\n\n return {\n sourceBytes,\n source,\n outputPath: normalizeOptionalString(options.outputPath, \"CEWG outputPath\"),\n sourceIdentity: options.sourceIdentity ?? null,\n generatedAt: options.generatedAt === undefined || options.generatedAt === null\n ? null\n : new Date(options.generatedAt).toISOString(),\n allPermutations: options.allPermutations !== false,\n allowFailures: options.allowFailures === true,\n includeSourceEffect: options.includeSourceEffect === true,\n selection,\n emitterOptions: { ...(options.emitterOptions ?? {}) }\n };\n}\n\nfunction normalizeOptionalString(value, name)\n{\n if (value === undefined || value === null)\n {\n return null;\n }\n\n const result = String(value).trim();\n\n if (!result)\n {\n throw new TypeError(`${name} must be a non-empty string or null`);\n }\n\n return result;\n}\n\nfunction selectionCoversWholeEffect(selection)\n{\n return selection.technique === null\n && selection.pass === null\n && selection.stage === null;\n}\n\nfunction toBytes(input)\n{\n if (input instanceof Uint8Array)\n {\n return input;\n }\n\n if (input instanceof ArrayBuffer)\n {\n return new Uint8Array(input);\n }\n\n if (ArrayBuffer.isView(input))\n {\n return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\n }\n\n throw new TypeError(\"CEWG effect input must be Uint8Array, ArrayBuffer, or ArrayBufferView bytes\");\n}\n\nfunction defaultPermutationIndex(permutations)\n{\n let multiplier = 1;\n let index = 0;\n\n for (const permutation of permutations)\n {\n index += (permutation.defaultOption || 0) * multiplier;\n multiplier *= permutation.options.length || 1;\n }\n\n return index;\n}\n\nfunction bodyKey(record)\n{\n return `body_${record.offset}_${record.size}`;\n}\n\nfunction decodePermutationOptions(permutations, permutationIndex)\n{\n let remaining = permutationIndex;\n\n return permutations.map((permutation) =>\n {\n const optionCount = permutation.options.length || 1;\n const optionIndex = optionCount ? remaining % optionCount : 0;\n\n remaining = Math.floor(remaining / optionCount);\n return {\n name: permutation.name,\n value: permutation.options[optionIndex] || \"\",\n optionIndex,\n defaultOption: permutation.defaultOption\n };\n });\n}\n\nfunction toShaderOptions(options)\n{\n return options.map((option) => ({ name: option.name, value: option.value }));\n}\n\nfunction buildExportVariants(effectRes, allPermutations)\n{\n if (allPermutations)\n {\n return effectRes.m_offsets.map((record, variantIndex) =>\n {\n const permutationIndex = Number.isInteger(record.index)\n ? record.index\n : variantIndex;\n\n return {\n key: `variant_${permutationIndex}`,\n variantIndex,\n permutationIndex,\n tableIndex: variantIndex,\n bodyKey: bodyKey(record),\n bodyOffset: record.offset,\n bodySize: record.size,\n options: decodePermutationOptions(\n effectRes.m_permutations,\n permutationIndex\n ),\n tableIndexMatchesPermutationIndex:\n variantIndex === permutationIndex\n };\n });\n }\n\n const permutationIndex = defaultPermutationIndex(effectRes.m_permutations);\n const record = effectRes.m_offsets[permutationIndex];\n\n if (!record)\n {\n throw new Error(`Default permutation index ${permutationIndex} is not present`);\n }\n\n return [ {\n key: `variant_${permutationIndex}`,\n variantIndex: permutationIndex,\n permutationIndex,\n tableIndex: permutationIndex,\n bodyKey: bodyKey(record),\n bodyOffset: record.offset,\n bodySize: record.size,\n options: decodePermutationOptions(effectRes.m_permutations, permutationIndex),\n tableIndexMatchesPermutationIndex: Number.isInteger(record.index)\n ? record.index === permutationIndex\n : true\n } ];\n}\n\nfunction collectStages(effectDescription, selection)\n{\n const stages = [];\n const errors = [];\n\n for (const technique of effectDescription.techniques ?? [])\n {\n if (selection.technique && technique.name !== selection.technique)\n {\n continue;\n }\n\n if (!selection.stage && !Number.isInteger(selection.pass)\n && technique.passes.length === 0)\n {\n errors.push(`${technique.name} declares no passes`);\n }\n\n for (let passIndex = 0; passIndex < technique.passes.length; passIndex++)\n {\n if (Number.isInteger(selection.pass) && passIndex !== selection.pass)\n {\n continue;\n }\n\n const pass = technique.passes[passIndex];\n let declaredStageCount = 0;\n\n for (let stageType = 0;\n stageType < HlslRenderContextEnum.SHADER_TYPE_COUNT;\n stageType++)\n {\n const stageInput = pass.stageInputs[stageType];\n\n if (!stageInput?.m_exists)\n {\n continue;\n }\n\n declaredStageCount++;\n const stageName = hlslShaderStageName(stageType);\n\n if (selection.stage && stageName !== selection.stage)\n {\n continue;\n }\n\n if (!stageInput.cjsShaderBytecode)\n {\n errors.push(\n `${technique.name}.pass${passIndex}.${stageName} declares shader handle `\n + `${stageInput.m_shader ?? \"unknown\"} but has no shader bytecode`\n );\n continue;\n }\n\n stages.push({\n key: `${technique.name}.pass${passIndex}.${stageName}`,\n techniqueName: technique.name,\n passIndex,\n stageType,\n stageName,\n shaderHandle: stageInput.m_shader,\n bytecode: stageInput.cjsShaderBytecode,\n pipelineInputs: cloneJson(stageInput.signature?.pipelineInputs ?? []),\n registers: cloneJson(stageInput.signature?.registers ?? []),\n resources: mapToJson(stageInput.resources),\n samplers: mapToJson(stageInput.samplers),\n uavs: mapToJson(stageInput.uavs),\n constants: cloneJson(stageInput.constants ?? [])\n });\n }\n\n if (!selection.stage && declaredStageCount === 0)\n {\n errors.push(`${technique.name}.pass${passIndex} declares no shader stages`);\n }\n }\n }\n\n return { stages, errors };\n}\n\nfunction translateStages(shaderMap, stageMap, values)\n{\n const emitInto = (record, pairVaryings) =>\n {\n try\n {\n const result = emitGlslWithOptions(record.bytes, {\n ...values.emitterOptions,\n source: `${values.source}#${record.firstStageKey}`,\n ...(pairVaryings?.length ? { pairVaryings } : {})\n });\n const stageInterface = normalizeBitangentStageInterface(\n result,\n record\n );\n\n record.emit = {\n ...result,\n source: stageInterface.source,\n inputs: stageInterface.inputs\n };\n record.source = stageInterface.source;\n record.bindings = result.bindings;\n record.stageInputs = stageInterface.inputs;\n record.stageOutputs = result.outputs;\n record.emitWarnings = result.warnings;\n record.translator = \"dxbc-js-emitter\";\n record.hlsl2webgl = { ok: true, mode: \"js-emitter\" };\n\n if (result.stageName === \"compute\")\n {\n record.computeFragment = result.computeFragment;\n }\n\n const issue = validateStageSourceShape(record);\n\n if (issue)\n {\n record.hlsl2webgl = { ok: false, validationError: issue };\n record.source = null;\n }\n }\n catch (error)\n {\n const message = error?.message || String(error);\n\n record.hlsl2webgl = {\n ok: false,\n error: message,\n details: error?.details ?? null\n };\n\n if (/not supported|No GLSL lowering|unimplementable/iu.test(message))\n {\n record.excluded = {\n reason: message,\n ...(error?.details?.opcodeName\n ? { opcodeName: error.details.opcodeName }\n : {}),\n ...(error?.details?.dimensionName\n ? { dimensionName: error.details.dimensionName }\n : {})\n };\n }\n }\n };\n\n for (const record of shaderMap.values())\n {\n if (record.stageName !== \"vertex\")\n {\n emitInto(record, null);\n }\n }\n\n const pixelVaryingsByPass = new Map();\n\n for (const stage of stageMap.values())\n {\n if (stage.stageName !== \"pixel\")\n {\n continue;\n }\n\n const record = shaderMap.get(stage.shaderKey);\n\n if (!record?.emit)\n {\n continue;\n }\n\n pixelVaryingsByPass.set(\n `${stage.bodyKey}|${stage.techniqueName}|${stage.passIndex}`,\n record.emit.inputs\n .filter((input) => typeof input.name === \"string\"\n && input.name.startsWith(\"vs_r\"))\n .map((input) => input.register)\n .sort((left, right) => left - right)\n );\n }\n\n for (const stage of stageMap.values())\n {\n if (stage.stageName !== \"vertex\")\n {\n continue;\n }\n\n const record = shaderMap.get(stage.shaderKey);\n const varyings = pixelVaryingsByPass.get(\n `${stage.bodyKey}|${stage.techniqueName}|${stage.passIndex}`\n ) ?? [];\n\n if (record)\n {\n record.pairVaryings = varyings;\n emitInto(record, varyings);\n }\n }\n}\n\nfunction cloneJson(value)\n{\n if (value === undefined || value === null)\n {\n return value;\n }\n\n return JSON.parse(JSON.stringify(value));\n}\n\nfunction mapToJson(map)\n{\n if (!(map instanceof Map))\n {\n return [];\n }\n\n return Array.from(map.entries()).map(([ registerIndex, value ]) => ({\n registerIndex,\n ...cloneJson(value)\n }));\n}\n\nfunction buildStageContract(stage)\n{\n const pipelineInputs = cloneJson(stage.pipelineInputs ?? []);\n const inputSemantics = pipelineInputs.map((input) => ({\n semantic: `${input.usageName || `USAGE_${input.usage}`}${input.usageIndex || \"\"}`,\n usage: input.usage,\n usageName: input.usageName,\n usageIndex: input.usageIndex,\n registerIndex: input.registerIndex,\n usedMask: input.usedMask,\n type: input.type,\n dimension: input.dimension\n }));\n const inputNames = new Set(inputSemantics.map((input) => input.usageName));\n const hasNormal = inputNames.has(\"NORMAL\");\n const hasTangent = inputNames.has(\"TANGENT\");\n const hasBinormal = inputNames.has(\"BINORMAL\") || inputNames.has(\"BITANGENT\");\n const hasBlendIndices = inputNames.has(\"BLENDINDICES\")\n || inputNames.has(\"BLENDINDICE\");\n let tangentContract = \"none\";\n\n if (hasNormal && hasTangent && hasBinormal)\n {\n tangentContract = \"split_tbn\";\n }\n else if (!hasNormal && hasTangent)\n {\n tangentContract = \"packed_tangent_or_tangent_only\";\n }\n else if (hasNormal || hasTangent || hasBinormal)\n {\n tangentContract = \"partial_tbn\";\n }\n\n const resources = cloneJson(stage.resources ?? []);\n const samplers = cloneJson(stage.samplers ?? []);\n const uavs = cloneJson(stage.uavs ?? []);\n const constants = cloneJson(stage.constants ?? []);\n const resourceNames = resources.map((entry) => entry.name).filter(Boolean);\n\n return {\n stageName: stage.stageName,\n stageType: stage.stageType,\n vertex: stage.stageName === \"vertex\" ? {\n inputs: inputSemantics,\n tangentContract,\n requiresSplitTbn: tangentContract === \"split_tbn\",\n requiresPackedTangent: tangentContract === \"packed_tangent_or_tangent_only\",\n requiresSkinning: hasBlendIndices || resourceNames.includes(\"BoneTransforms\"),\n hasBlendIndices\n } : null,\n texturePacking: classifyTexturePacking(resourceNames),\n constantBuffers: (stage.registers ?? [])\n .filter((entry) => entry.registerType === 0)\n .map((entry) => ({\n registerIndex: entry.registerIndex,\n registerSpace: entry.registerSpace,\n registerCount: entry.registerCount,\n arrayCount: entry.arrayCount,\n dynamic: Boolean(entry.dynamic)\n })),\n resources,\n samplers,\n uavs,\n constants\n };\n}\n\nfunction classifyTexturePacking(names)\n{\n const values = new Set(names);\n\n if ([ \"NoMap\", \"PmdgMap\", \"ArMap\" ].some((name) => values.has(name)))\n {\n return \"packed_textures\";\n }\n\n if ([ \"NormalMap\", \"RoughnessMap\", \"MaterialMap\", \"AlbedoMap\",\n \"AoMap\", \"PaintMaskMap\" ].some((name) => values.has(name)))\n {\n return \"unpacked_textures\";\n }\n\n return \"unknown\";\n}\n\nfunction mergeShaderContracts(contracts)\n{\n const first = contracts?.[0]?.contract ?? null;\n\n if (!first)\n {\n return null;\n }\n\n return {\n stageName: first.stageName,\n stageType: first.stageType,\n vertex: first.vertex ? cloneJson(first.vertex) : null,\n texturePacking: first.texturePacking,\n constantBuffers: cloneJson(first.constantBuffers ?? []),\n resourceNames: (first.resources ?? []).map((entry) => entry.name).filter(Boolean),\n samplerNames: (first.samplers ?? []).map((entry) => entry.name).filter(Boolean),\n sharedByStageCount: contracts.length\n };\n}\n\nfunction normalizeBitangentStageInterface(result, shaderRecord)\n{\n if (shaderRecord?.stageName !== \"vertex\")\n {\n return {\n source: result.source,\n inputs: result.inputs\n };\n }\n\n const bitangentRegisters = new Set((shaderRecord.contracts ?? [])\n .flatMap((entry) => entry.contract?.vertex?.inputs ?? [])\n .filter((input) => input.usageName === \"BITANGENT\")\n .map((input) => input.registerIndex));\n let source = result.source;\n const inputs = result.inputs.map((input) =>\n {\n if (!bitangentRegisters.has(input.register)\n || input.semanticName !== \"BINORMAL\")\n {\n return input;\n }\n const name = `in_BITANGENT${input.semanticIndex}`;\n source = source.replaceAll(input.name, name);\n return {\n ...input,\n name,\n semanticName: \"BITANGENT\"\n };\n });\n return { source, inputs };\n}\n\nfunction validateStageSourceShape(record)\n{\n const source = record?.source ?? \"\";\n\n if (!source)\n {\n return null;\n }\n\n const hasVertexOutput = /\\bgl_Position\\b/u.test(source);\n const hasVertexInterface = /\\bin\\s+(?:lowp|mediump|highp)?\\s*\\w+\\s+attr\\d+\\b/u.test(source)\n || /\\bout\\s+(?:lowp|mediump|highp)?\\s*\\w+\\s+vs_TEXCOORD\\d+\\b/u.test(source)\n || /\\bin_[A-Z]+[0-9]+\\b/u.test(source);\n const hasFragmentOutput = /\\bout\\s+(?:lowp|mediump|highp)?\\s*vec4\\s+SV_Target\\d+\\b/u.test(source)\n || /\\bgl_FragColor\\b/u.test(source);\n\n if (record.stageName === \"vertex\" && !hasVertexOutput)\n {\n return \"vertex stage source does not write gl_Position\";\n }\n\n if (record.stageName === \"pixel\"\n && (hasVertexOutput || hasVertexInterface) && !hasFragmentOutput)\n {\n return \"pixel stage source looks like vertex GLSL\";\n }\n\n if (record.stageName === \"compute\" && !/\\bcewgUav\\d+(_s\\d+)?\\b/u.test(source))\n {\n return \"compute stage source does not write any cewgUav output\";\n }\n\n return null;\n}\n\nfunction inspectRasterCompleteness(stages, shaders)\n{\n const shaderMap = new Map(shaders.map((shader) => [ shader.key, shader ]));\n const groups = new Map();\n\n for (const stage of stages)\n {\n if (![ \"vertex\", \"pixel\" ].includes(stage.stageName))\n {\n continue;\n }\n\n const key = `${stage.bodyKey}:${stage.techniqueName}:${stage.passIndex}`;\n const group = groups.get(key) ?? {\n key,\n bodyKey: stage.bodyKey,\n techniqueName: stage.techniqueName,\n passIndex: stage.passIndex,\n vertex: null,\n pixel: null,\n duplicateStages: []\n };\n\n if (group[stage.stageName])\n {\n group.duplicateStages.push(stage.stageName);\n }\n\n group[stage.stageName] = stage;\n groups.set(key, group);\n }\n\n const incompletePasses = [];\n let completePassCount = 0;\n\n for (const group of groups.values())\n {\n const missingStages = [];\n const unavailableStages = [];\n\n for (const stageName of [ \"vertex\", \"pixel\" ])\n {\n const stage = group[stageName];\n\n if (!stage)\n {\n missingStages.push(stageName);\n continue;\n }\n\n const shader = shaderMap.get(stage.shaderKey);\n\n if (!shader?.hlsl2webgl?.ok || !shader.source)\n {\n unavailableStages.push({\n stageName,\n stageKey: stage.key,\n shaderKey: stage.shaderKey,\n reason: shader?.hlsl2webgl?.validationError\n || shader?.hlsl2webgl?.error\n || shader?.excluded?.reason\n || \"translated source is unavailable\"\n });\n }\n }\n\n if (!missingStages.length && !unavailableStages.length\n && !group.duplicateStages.length)\n {\n completePassCount++;\n }\n else\n {\n incompletePasses.push({\n ...group,\n missingStages,\n unavailableStages,\n duplicateStages: [ ...new Set(group.duplicateStages) ].sort()\n });\n }\n }\n\n return {\n expectedPassCount: groups.size,\n completePassCount,\n incompletePasses\n };\n}\n\nfunction normalizeSourceIdentity(values)\n{\n const identity = values.sourceIdentity;\n\n if (identity !== null\n && (!identity || typeof identity !== \"object\" || Array.isArray(identity)))\n {\n throw new TypeError(\"CEWG sourceIdentity must be an object\");\n }\n\n const sha256 = sha256Bytes(values.sourceBytes);\n if (identity?.sha256 !== undefined && identity?.sha256 !== null\n && identity.sha256 !== sha256)\n {\n throw new Error(\n \"CEWG sourceIdentity.sha256 does not match the exact effect input bytes\"\n );\n }\n\n return Object.freeze({\n filePath: identity?.filePath ?? values.source,\n logicalPath: identity?.logicalPath ?? values.source,\n game: identity?.game ?? null,\n client: identity?.client ?? null,\n build: identity?.build === undefined || identity?.build === null\n ? null\n : String(identity.build),\n byteLength: values.sourceBytes.byteLength,\n md5: identity?.md5 ?? null,\n sha256\n });\n}\n\nfunction qualifyEffectPackage({\n info,\n metadata,\n glsl,\n failedShaders,\n excludedShaders,\n failedBodies,\n rasterCompleteness,\n availableShaderCount\n})\n{\n const errors = [];\n\n if (info.format !== \"CEWG\" || glsl.format !== \"CEWG_GLSL_SET\")\n {\n errors.push(\"invalid CEWG package envelope\");\n }\n\n if (!Array.isArray(metadata.variants) || !Array.isArray(glsl.shaders))\n {\n errors.push(\"missing CEWG graph arrays\");\n }\n\n if (failedShaders.length)\n {\n errors.push(`${failedShaders.length} shader translation(s) failed`);\n }\n\n if (excludedShaders.length)\n {\n errors.push(`${excludedShaders.length} shader translation(s) are unsupported`);\n }\n\n if (failedBodies.length)\n {\n errors.push(`${failedBodies.length} effect body/bodies failed`);\n }\n\n if (rasterCompleteness.incompletePasses.length)\n {\n errors.push(`${rasterCompleteness.incompletePasses.length} raster pass(es) are incomplete`);\n }\n\n if (!availableShaderCount)\n {\n errors.push(\"no translated shaders are available\");\n }\n\n return {\n ok: errors.length === 0,\n level: errors.length ? \"diagnostic\" : \"structural\",\n errors: Object.freeze(errors),\n incompletePasses: Object.freeze(rasterCompleteness.incompletePasses)\n };\n}\n"],"names":["PACKAGE_VERSION","buildEffectPackage","input","options","values","normalizeOptions","effectRes","CjsHlslFormat","read","sourceBytes","emit","OUTPUT_RAW","source","IsGood","loadError","Error","sourceIdentity","normalizeSourceIdentity","m_version","permutationGraph","buildEffectPermutationGraph","reflectionPackage","buildCompleteEffectReflection","sourcePath","variants","buildExportVariants","allPermutations","bodyMap","Map","stageMap","shaderMap","variant","has","bodyKey","shader","GetShader","toShaderOptions","set","key","bodyOffset","bodySize","firstVariantKey","error","manifest","stages","effectDescription","GetEffectDescription","HlslEffectBindingManifest","fromEffectDescription","collection","collectStages","selection","body","errors","length","join","toJSON","stage","stageKey","shaderKey","contract","buildStageContract","stageRecord","localKey","techniqueName","passIndex","stageType","stageName","shaderHandle","shaderSize","bytecode","stringTableOffset","push","firstStageKey","firstBodyKey","bytes","contracts","translateStages","bodies","Array","from","translatedShaders","map","record","output","primaryContract","mergeShaderContracts","failedShaders","filter","hlsl2webgl","ok","excluded","excludedShaders","failedBodies","rasterCompleteness","inspectRasterCompleteness","availableShaderCount","info","format","formatVersion","EFFECT_INFO_VERSION","packageKind","targetBackend","backendPackage","backendPackageVersion","generatedAt","outputPath","sourceByteLength","byteLength","sourceMd5","md5","sourceSha256","sha256","translator","translatorVersion","language","flags","permutationMode","defaultPermutationIndex","m_permutations","sourceEffectVersion","sourceBodyCoverage","backendBodyCoverage","backendProgramCoverage","selectionCoversWholeEffect","permutationCount","uniqueBodyCount","sourcePermutationCount","sourceUniqueBodyCount","chunk","EFFECT_PERMUTATION_GRAPH_CHUNK","EFFECT_PERMUTATION_GRAPH_FORMAT","EFFECT_PERMUTATION_GRAPH_VERSION","sha256Utf8","JSON","stringify","effectReflection","pointer","bodyStageCount","uniqueShaderCount","translatedShaderCount","excludedShaderCount","failedShaderCount","failedBodyCount","expectedRasterPassCount","expectedPassCount","completeRasterPassCount","completePassCount","incompleteRasterPassCount","incompletePasses","allowFailures","completeness","packageValid","sourceComplete","backendComplete","runtimeComplete","metadata","effectResource","permutations","GetPermutationDescription","glsl","permutationIndex","shaders","qualification","qualifyEffectPackage","chunks","EFFECT_REFLECTION_CHUNK","reflection","EFFECT_REFLECTION_BLOB_CHUNK","blobBytes","includeSourceEffect","buildPackage","inspection","inspectWithValues","Object","freeze","reflectionBlobs","isArray","TypeError","toBytes","String","trim","technique","undefined","pass","Number","toLowerCase","isSafeInteger","includes","emitterOptions","normalizeOptionalString","Date","toISOString","value","name","result","Uint8Array","ArrayBuffer","isView","buffer","byteOffset","multiplier","index","permutation","defaultOption","offset","size","decodePermutationOptions","remaining","optionCount","optionIndex","Math","floor","option","m_offsets","variantIndex","isInteger","tableIndex","tableIndexMatchesPermutationIndex","techniques","passes","declaredStageCount","HlslRenderContextEnum","SHADER_TYPE_COUNT","stageInput","stageInputs","m_exists","hlslShaderStageName","cjsShaderBytecode","m_shader","pipelineInputs","cloneJson","signature","registers","resources","mapToJson","samplers","uavs","constants","emitInto","pairVaryings","emitGlslWithOptions","stageInterface","normalizeBitangentStageInterface","inputs","bindings","stageOutputs","outputs","emitWarnings","warnings","mode","computeFragment","issue","validateStageSourceShape","validationError","message","details","test","reason","opcodeName","dimensionName","pixelVaryingsByPass","get","startsWith","register","sort","left","right","varyings","parse","entries","registerIndex","inputSemantics","semantic","usageName","usage","usageIndex","usedMask","type","dimension","inputNames","Set","hasNormal","hasTangent","hasBinormal","hasBlendIndices","tangentContract","resourceNames","entry","Boolean","vertex","requiresSplitTbn","requiresPackedTangent","requiresSkinning","texturePacking","classifyTexturePacking","constantBuffers","registerType","registerSpace","registerCount","arrayCount","dynamic","names","some","first","samplerNames","sharedByStageCount","shaderRecord","bitangentRegisters","flatMap","semanticName","semanticIndex","replaceAll","hasVertexOutput","hasVertexInterface","hasFragmentOutput","groups","group","pixel","duplicateStages","missingStages","unavailableStages","identity","sha256Bytes","filePath","logicalPath","game","client","build","level"],"mappings":";;;;;;;;;AAmBA,MAAMA,eAAe,GAAG,OAAO;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,kBAAkBA,CAACC,KAAK,EAAEC,OAAO,GAAG,EAAE,EACtD;AACI,EAAA,MAAMC,MAAM,GAAGC,gBAAgB,CAACH,KAAK,EAAEC,OAAO,CAAC;EAC/C,MAAMG,SAAS,GAAGC,aAAa,CAACC,IAAI,CAACJ,MAAM,CAACK,WAAW,EAAE;IACrDC,IAAI,EAAEH,aAAa,CAACI,UAAU;IAC9BC,MAAM,EAAER,MAAM,CAACQ;AACnB,GAAC,CAAC;AAEF,EAAA,IAAI,CAACN,SAAS,CAACO,MAAM,EAAE,EACvB;IACI,MAAMP,SAAS,CAACQ,SAAS,IAAI,IAAIC,KAAK,CAAC,mCAAmC,CAAC;AAC/E,EAAA;AAEA,EAAA,MAAMC,cAAc,GAAGC,uBAAuB,CAACb,MAAM,CAAC;AACtD;AACA;AACA,EAAA,IAAIE,SAAS,CAACY,SAAS,KAAK,EAAE,EAC9B;IACI,MAAM,IAAIH,KAAK,CACX,oEAAoE,IACjET,SAAS,CAACY,SAAS,IAAI,SAAS,CACvC,CAAC;AACL,EAAA;AAEA,EAAA,MAAMC,gBAAgB,GAAGC,2BAA2B,CAACd,SAAS,CAAC;AAC/D,EAAA,MAAMe,iBAAiB,GAAGf,SAAS,CAACY,SAAS,KAAK,EAAE,GAC9CI,6BAA6B,CAC3BhB,SAAS,EACTa,gBAAgB,EAChB;IACIH,cAAc;IACdO,UAAU,EAAEnB,MAAM,CAACQ;GAE3B,CAAC,GACC,IAAI;EACV,MAAMY,QAAQ,GAAGC,mBAAmB,CAACnB,SAAS,EAAEF,MAAM,CAACsB,eAAe,CAAC;AACvE,EAAA,MAAMC,OAAO,GAAG,IAAIC,GAAG,EAAE;AACzB,EAAA,MAAMC,QAAQ,GAAG,IAAID,GAAG,EAAE;AAC1B,EAAA,MAAME,SAAS,GAAG,IAAIF,GAAG,EAAE;AAE3B,EAAA,KAAK,MAAMG,OAAO,IAAIP,QAAQ,EAC9B;IACI,IAAIG,OAAO,CAACK,GAAG,CAACD,OAAO,CAACE,OAAO,CAAC,EAChC;AACI,MAAA;AACJ,IAAA;AAEA,IAAA,MAAMC,MAAM,GAAG5B,SAAS,CAAC6B,SAAS,CAACC,eAAe,CAACL,OAAO,CAAC5B,OAAO,CAAC,CAAC;IAEpE,IAAI,CAAC+B,MAAM,EACX;AACIP,MAAAA,OAAO,CAACU,GAAG,CAACN,OAAO,CAACE,OAAO,EAAE;QACzBK,GAAG,EAAEP,OAAO,CAACE,OAAO;QACpBM,UAAU,EAAER,OAAO,CAACQ,UAAU;QAC9BC,QAAQ,EAAET,OAAO,CAACS,QAAQ;QAC1BC,eAAe,EAAEV,OAAO,CAACO,GAAG;AAC5BI,QAAAA,KAAK,EAAE,sCAAsC;AAC7CC,QAAAA,QAAQ,EAAE,IAAI;AACdC,QAAAA,MAAM,EAAE;AACZ,OAAC,CAAC;AACF,MAAA;AACJ,IAAA;AAEA,IAAA,MAAMC,iBAAiB,GAAGX,MAAM,CAACY,oBAAoB,EAAE;AACvD,IAAA,MAAMH,QAAQ,GAAGI,yBAAyB,CAACC,qBAAqB,CAACH,iBAAiB,CAAC;IACnF,MAAMI,UAAU,GAAGC,aAAa,CAACL,iBAAiB,EAAEzC,MAAM,CAAC+C,SAAS,CAAC;AACrE,IAAA,MAAMC,IAAI,GAAG;MACTd,GAAG,EAAEP,OAAO,CAACE,OAAO;MACpBM,UAAU,EAAER,OAAO,CAACQ,UAAU;MAC9BC,QAAQ,EAAET,OAAO,CAACS,QAAQ;MAC1BC,eAAe,EAAEV,OAAO,CAACO,GAAG;AAC5BI,MAAAA,KAAK,EAAEO,UAAU,CAACI,MAAM,CAACC,MAAM,GAAGL,UAAU,CAACI,MAAM,CAACE,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI;AACrEZ,MAAAA,QAAQ,EAAEA,QAAQ,CAACa,MAAM,EAAE;AAC3BZ,MAAAA,MAAM,EAAE;KACX;AAED,IAAA,KAAK,MAAMa,KAAK,IAAIR,UAAU,CAACL,MAAM,EACrC;MACI,MAAMc,QAAQ,GAAG,CAAA,EAAG3B,OAAO,CAACE,OAAO,CAAA,CAAA,EAAIwB,KAAK,CAACnB,GAAG,CAAA,CAAE;AAClD,MAAA,MAAMqB,SAAS,GAAG,CAAA,OAAA,EAAUD,QAAQ,CAAA,CAAE;AACtC,MAAA,MAAME,QAAQ,GAAGC,kBAAkB,CAACJ,KAAK,CAAC;AAC1C,MAAA,MAAMK,WAAW,GAAG;AAChBxB,QAAAA,GAAG,EAAEoB,QAAQ;QACbzB,OAAO,EAAEF,OAAO,CAACE,OAAO;QACxB8B,QAAQ,EAAEN,KAAK,CAACnB,GAAG;QACnB0B,aAAa,EAAEP,KAAK,CAACO,aAAa;QAClCC,SAAS,EAAER,KAAK,CAACQ,SAAS;QAC1BC,SAAS,EAAET,KAAK,CAACS,SAAS;QAC1BC,SAAS,EAAEV,KAAK,CAACU,SAAS;QAC1BC,YAAY,EAAEX,KAAK,CAACW,YAAY;AAChCC,QAAAA,UAAU,EAAEZ,KAAK,CAACa,QAAQ,CAACD,UAAU;AACrCE,QAAAA,iBAAiB,EAAEd,KAAK,CAACa,QAAQ,CAACC,iBAAiB;QACnDZ,SAAS;AACTC,QAAAA;OACH;AAED/B,MAAAA,QAAQ,CAACQ,GAAG,CAACqB,QAAQ,EAAEI,WAAW,CAAC;AACnCV,MAAAA,IAAI,CAACR,MAAM,CAAC4B,IAAI,CAACd,QAAQ,CAAC;AAC1B5B,MAAAA,SAAS,CAACO,GAAG,CAACsB,SAAS,EAAE;AACrBrB,QAAAA,GAAG,EAAEqB,SAAS;AACdc,QAAAA,aAAa,EAAEf,QAAQ;QACvBgB,YAAY,EAAE3C,OAAO,CAACE,OAAO;QAC7BkC,SAAS,EAAEV,KAAK,CAACU,SAAS;AAC1BE,QAAAA,UAAU,EAAEZ,KAAK,CAACa,QAAQ,CAACD,UAAU;AACrCE,QAAAA,iBAAiB,EAAEd,KAAK,CAACa,QAAQ,CAACC,iBAAiB;AACnDI,QAAAA,KAAK,EAAElB,KAAK,CAACa,QAAQ,CAACK,KAAK;AAC3BC,QAAAA,SAAS,EAAE,CAAE;UACTlB,QAAQ;UACRM,aAAa,EAAEP,KAAK,CAACO,aAAa;UAClCC,SAAS,EAAER,KAAK,CAACQ,SAAS;UAC1BE,SAAS,EAAEV,KAAK,CAACU,SAAS;AAC1BP,UAAAA;SACH;AACL,OAAC,CAAC;AACN,IAAA;IAEAjC,OAAO,CAACU,GAAG,CAACN,OAAO,CAACE,OAAO,EAAEmB,IAAI,CAAC;AACtC,EAAA;AAEAyB,EAAAA,eAAe,CAAC/C,SAAS,EAAED,QAAQ,EAAEzB,MAAM,CAAC;EAE5C,MAAM0E,MAAM,GAAGC,KAAK,CAACC,IAAI,CAACrD,OAAO,CAACvB,MAAM,EAAE,CAAC;EAC3C,MAAMwC,MAAM,GAAGmC,KAAK,CAACC,IAAI,CAACnD,QAAQ,CAACzB,MAAM,EAAE,CAAC;AAC5C,EAAA,MAAM6E,iBAAiB,GAAGF,KAAK,CAACC,IAAI,CAAClD,SAAS,CAAC1B,MAAM,EAAE,CAAC,CAAC8E,GAAG,CAAEC,MAAM,IACpE;IACI,MAAM;MAAER,KAAK;MAAEjE,IAAI;MAAE,GAAG0E;AAAO,KAAC,GAAGD,MAAM;IAEzCC,MAAM,CAACC,eAAe,GAAGC,oBAAoB,CAACF,MAAM,CAACR,SAAS,CAAC;AAC/D,IAAA,OAAOQ,MAAM;AACjB,EAAA,CAAC,CAAC;AACF,EAAA,MAAMG,aAAa,GAAGN,iBAAiB,CAACO,MAAM,CAAEL,MAAM,IAClD,CAACA,MAAM,CAACM,UAAU,EAAEC,EAAE,IAAI,CAACP,MAAM,CAACQ,QAAQ,CAAC;EAC/C,MAAMC,eAAe,GAAGX,iBAAiB,CAACO,MAAM,CAAEL,MAAM,IAAKA,MAAM,CAACQ,QAAQ,CAAC;EAC7E,MAAME,YAAY,GAAGf,MAAM,CAACU,MAAM,CAAEpC,IAAI,IAAKA,IAAI,CAACV,KAAK,CAAC;AACxD,EAAA,MAAMoD,kBAAkB,GAAGC,yBAAyB,CAACnD,MAAM,EAAEqC,iBAAiB,CAAC;AAC/E,EAAA,MAAMe,oBAAoB,GAAGf,iBAAiB,CAACO,MAAM,CAAEL,MAAM,IACzDA,MAAM,CAACM,UAAU,EAAEC,EAAE,IAAIP,MAAM,CAACvE,MAAM,CAAC,CAAC0C,MAAM;AAClD,EAAA,MAAM2C,IAAI,GAAG;AACTC,IAAAA,MAAM,EAAE,MAAM;AACdC,IAAAA,aAAa,EAAEC,mBAAmB;AAClCC,IAAAA,WAAW,EAAEjG,MAAM,CAACsB,eAAe,GAC7B,+BAA+B,GAC/B,kBAAkB;AACxB4E,IAAAA,aAAa,EAAE,OAAO;AACtBC,IAAAA,cAAc,EAAE,8BAA8B;AAC9CC,IAAAA,qBAAqB,EAAExG,eAAe;IACtCyG,WAAW,EAAErG,MAAM,CAACqG,WAAW;IAC/BlF,UAAU,EAAEnB,MAAM,CAACQ,MAAM;IACzB8F,UAAU,EAAEtG,MAAM,CAACsG,UAAU;IAC7BC,gBAAgB,EAAE3F,cAAc,CAAC4F,UAAU;IAC3CC,SAAS,EAAE7F,cAAc,CAAC8F,GAAG;IAC7BC,YAAY,EAAE/F,cAAc,CAACgG,MAAM;IACnChG,cAAc;AACdiG,IAAAA,UAAU,EAAE,iBAAiB;AAC7BC,IAAAA,iBAAiB,EAAElH,eAAe;AAClCmH,IAAAA,QAAQ,EAAE,OAAO;AACjBC,IAAAA,KAAK,EAAE,IAAI;IACXjE,SAAS,EAAE/C,MAAM,CAAC+C,SAAS;AAC3BkE,IAAAA,eAAe,EAAEjH,MAAM,CAACsB,eAAe,GAAG,KAAK,GAAG,UAAU;AAC5D4F,IAAAA,uBAAuB,EAAEA,uBAAuB,CAAChH,SAAS,CAACiH,cAAc,CAAC;IAC1EC,mBAAmB,EAAElH,SAAS,CAACY,SAAS;AACxC,IAAA,IAAIG,iBAAiB,GAAG;AACpBoG,MAAAA,kBAAkB,EAAE,YAAY;AAChCC,MAAAA,mBAAmB,EAAEtH,MAAM,CAACsB,eAAe,GAAG,KAAK,GAAG,UAAU;MAChEiG,sBAAsB,EAAEC,0BAA0B,CAACxH,MAAM,CAAC+C,SAAS,CAAC,GAC9D,YAAY,GACZ;KACT,GAAG,EAAE,CAAC;IACP0E,gBAAgB,EAAErG,QAAQ,CAAC8B,MAAM;IACjCwE,eAAe,EAAEhD,MAAM,CAACxB,MAAM;AAC9ByE,IAAAA,sBAAsB,EAAE5G,gBAAgB,CAACK,QAAQ,CAAC8B,MAAM;AACxD0E,IAAAA,qBAAqB,EAAE7G,gBAAgB,CAAC2D,MAAM,CAACxB,MAAM;AACrDnC,IAAAA,gBAAgB,EAAE;AACd8G,MAAAA,KAAK,EAAEC,8BAA8B;AACrChC,MAAAA,MAAM,EAAEiC,+BAA+B;AACvChC,MAAAA,aAAa,EAAEiC,gCAAgC;MAC/CpB,MAAM,EAAEqB,UAAU,CAAC,CAAA,EAAGC,IAAI,CAACC,SAAS,CAACpH,gBAAgB,CAAC,CAAA,EAAA,CAAI,CAAC;AAC3D0G,MAAAA,gBAAgB,EAAE1G,gBAAgB,CAACK,QAAQ,CAAC8B,MAAM;AAClDwE,MAAAA,eAAe,EAAE3G,gBAAgB,CAAC2D,MAAM,CAACxB;KAC5C;AACD,IAAA,IAAIjC,iBAAiB,GACf;MAAEmH,gBAAgB,EAAEnH,iBAAiB,CAACoH;KAAS,GAC/C,EAAE,CAAC;IACTC,cAAc,EAAE9F,MAAM,CAACU,MAAM;IAC7BqF,iBAAiB,EAAE1D,iBAAiB,CAAC3B,MAAM;IAC3CsF,qBAAqB,EAAE3D,iBAAiB,CAAC3B,MAAM,GAAGiC,aAAa,CAACjC,MAAM,GAAGsC,eAAe,CAACtC,MAAM;IAC/FuF,mBAAmB,EAAEjD,eAAe,CAACtC,MAAM;IAC3CwF,iBAAiB,EAAEvD,aAAa,CAACjC,MAAM;IACvCyF,eAAe,EAAElD,YAAY,CAACvC,MAAM;IACpC0F,uBAAuB,EAAElD,kBAAkB,CAACmD,iBAAiB;IAC7DC,uBAAuB,EAAEpD,kBAAkB,CAACqD,iBAAiB;AAC7DC,IAAAA,yBAAyB,EAAEtD,kBAAkB,CAACuD,gBAAgB,CAAC/F,MAAM;IACrE0C,oBAAoB;IACpBsD,aAAa,EAAElJ,MAAM,CAACkJ,aAAa;AACnCC,IAAAA,YAAY,EAAE;AACVC,MAAAA,YAAY,EAAE,IAAI;MAClBC,cAAc,EAAEpI,iBAAiB,KAAK,IAAI;AAC1CqI,MAAAA,eAAe,EAAE,KAAK;AACtBC,MAAAA,eAAe,EAAE;AACrB;GACH;AACD,EAAA,MAAMC,QAAQ,GAAG;IACbnD,WAAW,EAAErG,MAAM,CAACqG,WAAW;IAC/BlF,UAAU,EAAEnB,MAAM,CAACQ,MAAM;AACzBiJ,IAAAA,cAAc,EAAEvJ,SAAS,CAACkD,MAAM,EAAE;AAClCsG,IAAAA,YAAY,EAAExJ,SAAS,CAACyJ,yBAAyB,EAAE;IACnDvI,QAAQ;AACRsD,IAAAA,MAAM,EAAEA,MAAM,CAACI,GAAG,CAAE9B,IAAI,KAAM;MAC1Bd,GAAG,EAAEc,IAAI,CAACd,GAAG;MACbC,UAAU,EAAEa,IAAI,CAACb,UAAU;MAC3BC,QAAQ,EAAEY,IAAI,CAACZ,QAAQ;MACvBC,eAAe,EAAEW,IAAI,CAACX,eAAe;MACrCC,KAAK,EAAEU,IAAI,CAACV,KAAK;MACjBC,QAAQ,EAAES,IAAI,CAACT;AACnB,KAAC,CAAC;GACL;AACD,EAAA,MAAMqH,IAAI,GAAG;AACT9D,IAAAA,MAAM,EAAE,eAAe;AACvBC,IAAAA,aAAa,EAAE,CAAC;AAChBgB,IAAAA,QAAQ,EAAE,OAAO;IACjBE,eAAe,EAAEpB,IAAI,CAACoB,eAAe;IACrClE,SAAS,EAAE/C,MAAM,CAAC+C,SAAS;AAC3B3B,IAAAA,QAAQ,EAAEA,QAAQ,CAAC0D,GAAG,CAAEnD,OAAO,KAAM;MACjCO,GAAG,EAAEP,OAAO,CAACO,GAAG;MAChB2H,gBAAgB,EAAElI,OAAO,CAACkI,gBAAgB;MAC1ChI,OAAO,EAAEF,OAAO,CAACE;AACrB,KAAC,CAAC,CAAC;AACH6C,IAAAA,MAAM,EAAEA,MAAM,CAACI,GAAG,CAAE9B,IAAI,KAAM;MAC1Bd,GAAG,EAAEc,IAAI,CAACd,GAAG;MACbI,KAAK,EAAEU,IAAI,CAACV,KAAK;MACjBE,MAAM,EAAEQ,IAAI,CAACR;AACjB,KAAC,CAAC,CAAC;IACHA,MAAM;AACNsH,IAAAA,OAAO,EAAEjF;GACZ;EACD,MAAMkF,aAAa,GAAGC,oBAAoB,CAAC;IACvCnE,IAAI;IACJ2D,QAAQ;IACRI,IAAI;IACJzE,aAAa;IACbK,eAAe;IACfC,YAAY;IACZC,kBAAkB;AAClBE,IAAAA;AACJ,GAAC,CAAC;EACF,IAAI,CAACmE,aAAa,CAACzE,EAAE,IAAI,CAACtF,MAAM,CAACkJ,aAAa,EAC9C;AACI,IAAA,MAAM,IAAIvI,KAAK,CACX,CAAA,iDAAA,EAAoDoJ,aAAa,CAAC9G,MAAM,CAACE,IAAI,CAAC,IAAI,CAAC,EACvF,CAAC;AACL,EAAA;EAEA,MAAM8G,MAAM,GAAG,CACX,CAAE,MAAM,EAAEpE,IAAI,CAAE,EAChB,CAAE,MAAM,EAAE2D,QAAQ,CAAE,EACpB,CAAE1B,8BAA8B,EAAE/G,gBAAgB,CAAE,EACpD,IAAIE,iBAAiB,GACf,CACE,CAAEiJ,uBAAuB,EAAEjJ,iBAAiB,CAACkJ,UAAU,CAAE,EACzD,CAAEC,4BAA4B,EAAEnJ,iBAAiB,CAACoJ,SAAS,CAAE,CAChE,GACC,EAAE,CAAC,EACT,CAAE,MAAM,EAAET,IAAI,CAAE,CACnB;EAED,IAAI5J,MAAM,CAACsK,mBAAmB,EAC9B;IACIL,MAAM,CAAC7F,IAAI,CAAC,CAAE,MAAM,EAAEpE,MAAM,CAACK,WAAW,CAAE,CAAC;AAC/C,EAAA;AAEA,EAAA,MAAMkE,KAAK,GAAGgG,YAAY,CAACN,MAAM,CAAC;AAClC,EAAA,MAAMO,UAAU,GAAGC,iBAAiB,CAAClG,KAAK,EAAE;AACxCjE,IACAE,MAAM,EAAER,MAAM,CAACQ;AACnB,GAAC,CAAC;EAEF,OAAOkK,MAAM,CAACC,MAAM,CAAC;IACjBpG,KAAK;AACLsB,IAAAA,IAAI,EAAE6E,MAAM,CAACC,MAAM,CAAC9E,IAAI,CAAC;AACzB2D,IAAAA,QAAQ,EAAEkB,MAAM,CAACC,MAAM,CAACnB,QAAQ,CAAC;IACjCzI,gBAAgB;AAChBoJ,IAAAA,UAAU,EAAElJ,iBAAiB,EAAEkJ,UAAU,IAAI,IAAI;AACjDS,IAAAA,eAAe,EAAE3J,iBAAiB,EAAEoJ,SAAS,IAAI,IAAI;AACrDT,IAAAA,IAAI,EAAEc,MAAM,CAACC,MAAM,CAACf,IAAI,CAAC;AACzBY,IAAAA,UAAU,EAAEE,MAAM,CAACC,MAAM,CAACH,UAAU,CAAC;AACrCT,IAAAA,aAAa,EAAEW,MAAM,CAACC,MAAM,CAACZ,aAAa;AAC9C,GAAC,CAAC;AACN;AAEA,SAAS9J,gBAAgBA,CAACH,KAAK,EAAEC,OAAO,EACxC;AACI,EAAA,IAAI,CAACA,OAAO,IAAI,OAAOA,OAAO,KAAK,QAAQ,IAAI4E,KAAK,CAACkG,OAAO,CAAC9K,OAAO,CAAC,EACrE;AACI,IAAA,MAAM,IAAI+K,SAAS,CAAC,uCAAuC,CAAC;AAChE,EAAA;AAEA,EAAA,MAAMzK,WAAW,GAAG0K,OAAO,CAACjL,KAAK,CAAC;AAClC,EAAA,MAAMU,MAAM,GAAGwK,MAAM,CAACjL,OAAO,CAACS,MAAM,IAAI,QAAQ,CAAC,CAACyK,IAAI,EAAE,IAAI,QAAQ;AACpE,EAAA,MAAMlI,SAAS,GAAG2H,MAAM,CAACC,MAAM,CAAC;IAC5BO,SAAS,EAAEnL,OAAO,CAACmL,SAAS,KAAKC,SAAS,IAAIpL,OAAO,CAACmL,SAAS,KAAK,IAAI,GAClE,IAAI,GACJF,MAAM,CAACjL,OAAO,CAACmL,SAAS,CAAC;IAC/BE,IAAI,EAAErL,OAAO,CAACqL,IAAI,KAAKD,SAAS,IAAIpL,OAAO,CAACqL,IAAI,KAAK,IAAI,GAAG,IAAI,GAAGC,MAAM,CAACtL,OAAO,CAACqL,IAAI,CAAC;IACvF/H,KAAK,EAAEtD,OAAO,CAACsD,KAAK,KAAK8H,SAAS,IAAIpL,OAAO,CAACsD,KAAK,KAAK,IAAI,GACtD,IAAI,GACJ2H,MAAM,CAACjL,OAAO,CAACsD,KAAK,CAAC,CAACiI,WAAW;AAC3C,GAAC,CAAC;EAEF,IAAIvI,SAAS,CAACqI,IAAI,KAAK,IAAI,KACnB,CAACC,MAAM,CAACE,aAAa,CAACxI,SAAS,CAACqI,IAAI,CAAC,IAAIrI,SAAS,CAACqI,IAAI,GAAG,CAAC,CAAC,EACpE;AACI,IAAA,MAAM,IAAIN,SAAS,CAAC,yDAAyD,CAAC;AAClF,EAAA;EAEA,IAAI/H,SAAS,CAACM,KAAK,KAAK,IAAI,IACrB,CAAC,CAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAE,CAACmI,QAAQ,CAACzI,SAAS,CAACM,KAAK,CAAC,EAClE;IACI,MAAM,IAAIyH,SAAS,CAAC,CAAA,+BAAA,EAAkC/H,SAAS,CAACM,KAAK,EAAE,CAAC;AAC5E,EAAA;EAEA,IAAItD,OAAO,CAAC0L,cAAc,KAAKN,SAAS,KAChC,CAACpL,OAAO,CAAC0L,cAAc,IAAI,OAAO1L,OAAO,CAAC0L,cAAc,KAAK,QAAQ,IAClE9G,KAAK,CAACkG,OAAO,CAAC9K,OAAO,CAAC0L,cAAc,CAAC,CAAC,EACjD;AACI,IAAA,MAAM,IAAIX,SAAS,CAAC,uCAAuC,CAAC;AAChE,EAAA;EAEA,OAAO;IACHzK,WAAW;IACXG,MAAM;IACN8F,UAAU,EAAEoF,uBAAuB,CAAC3L,OAAO,CAACuG,UAAU,EAAE,iBAAiB,CAAC;AAC1E1F,IAAAA,cAAc,EAAEb,OAAO,CAACa,cAAc,IAAI,IAAI;IAC9CyF,WAAW,EAAEtG,OAAO,CAACsG,WAAW,KAAK8E,SAAS,IAAIpL,OAAO,CAACsG,WAAW,KAAK,IAAI,GACxE,IAAI,GACJ,IAAIsF,IAAI,CAAC5L,OAAO,CAACsG,WAAW,CAAC,CAACuF,WAAW,EAAE;AACjDtK,IAAAA,eAAe,EAAEvB,OAAO,CAACuB,eAAe,KAAK,KAAK;AAClD4H,IAAAA,aAAa,EAAEnJ,OAAO,CAACmJ,aAAa,KAAK,IAAI;AAC7CoB,IAAAA,mBAAmB,EAAEvK,OAAO,CAACuK,mBAAmB,KAAK,IAAI;IACzDvH,SAAS;AACT0I,IAAAA,cAAc,EAAE;AAAE,MAAA,IAAI1L,OAAO,CAAC0L,cAAc,IAAI,EAAE;AAAE;GACvD;AACL;AAEA,SAASC,uBAAuBA,CAACG,KAAK,EAAEC,IAAI,EAC5C;AACI,EAAA,IAAID,KAAK,KAAKV,SAAS,IAAIU,KAAK,KAAK,IAAI,EACzC;AACI,IAAA,OAAO,IAAI;AACf,EAAA;EAEA,MAAME,MAAM,GAAGf,MAAM,CAACa,KAAK,CAAC,CAACZ,IAAI,EAAE;EAEnC,IAAI,CAACc,MAAM,EACX;AACI,IAAA,MAAM,IAAIjB,SAAS,CAAC,CAAA,EAAGgB,IAAI,qCAAqC,CAAC;AACrE,EAAA;AAEA,EAAA,OAAOC,MAAM;AACjB;AAEA,SAASvE,0BAA0BA,CAACzE,SAAS,EAC7C;AACI,EAAA,OAAOA,SAAS,CAACmI,SAAS,KAAK,IAAI,IAC5BnI,SAAS,CAACqI,IAAI,KAAK,IAAI,IACvBrI,SAAS,CAACM,KAAK,KAAK,IAAI;AACnC;AAEA,SAAS0H,OAAOA,CAACjL,KAAK,EACtB;EACI,IAAIA,KAAK,YAAYkM,UAAU,EAC/B;AACI,IAAA,OAAOlM,KAAK;AAChB,EAAA;EAEA,IAAIA,KAAK,YAAYmM,WAAW,EAChC;AACI,IAAA,OAAO,IAAID,UAAU,CAAClM,KAAK,CAAC;AAChC,EAAA;AAEA,EAAA,IAAImM,WAAW,CAACC,MAAM,CAACpM,KAAK,CAAC,EAC7B;AACI,IAAA,OAAO,IAAIkM,UAAU,CAAClM,KAAK,CAACqM,MAAM,EAAErM,KAAK,CAACsM,UAAU,EAAEtM,KAAK,CAAC0G,UAAU,CAAC;AAC3E,EAAA;AAEA,EAAA,MAAM,IAAIsE,SAAS,CAAC,6EAA6E,CAAC;AACtG;AAEA,SAAS5D,uBAAuBA,CAACwC,YAAY,EAC7C;EACI,IAAI2C,UAAU,GAAG,CAAC;EAClB,IAAIC,KAAK,GAAG,CAAC;AAEb,EAAA,KAAK,MAAMC,WAAW,IAAI7C,YAAY,EACtC;IACI4C,KAAK,IAAI,CAACC,WAAW,CAACC,aAAa,IAAI,CAAC,IAAIH,UAAU;AACtDA,IAAAA,UAAU,IAAIE,WAAW,CAACxM,OAAO,CAACmD,MAAM,IAAI,CAAC;AACjD,EAAA;AAEA,EAAA,OAAOoJ,KAAK;AAChB;AAEA,SAASzK,OAAOA,CAACkD,MAAM,EACvB;EACI,OAAO,CAAA,KAAA,EAAQA,MAAM,CAAC0H,MAAM,IAAI1H,MAAM,CAAC2H,IAAI,CAAA,CAAE;AACjD;AAEA,SAASC,wBAAwBA,CAACjD,YAAY,EAAEG,gBAAgB,EAChE;EACI,IAAI+C,SAAS,GAAG/C,gBAAgB;AAEhC,EAAA,OAAOH,YAAY,CAAC5E,GAAG,CAAEyH,WAAW,IACpC;IACI,MAAMM,WAAW,GAAGN,WAAW,CAACxM,OAAO,CAACmD,MAAM,IAAI,CAAC;IACnD,MAAM4J,WAAW,GAAGD,WAAW,GAAGD,SAAS,GAAGC,WAAW,GAAG,CAAC;IAE7DD,SAAS,GAAGG,IAAI,CAACC,KAAK,CAACJ,SAAS,GAAGC,WAAW,CAAC;IAC/C,OAAO;MACHf,IAAI,EAAES,WAAW,CAACT,IAAI;MACtBD,KAAK,EAAEU,WAAW,CAACxM,OAAO,CAAC+M,WAAW,CAAC,IAAI,EAAE;MAC7CA,WAAW;MACXN,aAAa,EAAED,WAAW,CAACC;KAC9B;AACL,EAAA,CAAC,CAAC;AACN;AAEA,SAASxK,eAAeA,CAACjC,OAAO,EAChC;AACI,EAAA,OAAOA,OAAO,CAAC+E,GAAG,CAAEmI,MAAM,KAAM;IAAEnB,IAAI,EAAEmB,MAAM,CAACnB,IAAI;IAAED,KAAK,EAAEoB,MAAM,CAACpB;AAAM,GAAC,CAAC,CAAC;AAChF;AAEA,SAASxK,mBAAmBA,CAACnB,SAAS,EAAEoB,eAAe,EACvD;AACI,EAAA,IAAIA,eAAe,EACnB;IACI,OAAOpB,SAAS,CAACgN,SAAS,CAACpI,GAAG,CAAC,CAACC,MAAM,EAAEoI,YAAY,KACpD;AACI,MAAA,MAAMtD,gBAAgB,GAAGwB,MAAM,CAAC+B,SAAS,CAACrI,MAAM,CAACuH,KAAK,CAAC,GACjDvH,MAAM,CAACuH,KAAK,GACZa,YAAY;MAElB,OAAO;QACHjL,GAAG,EAAE,CAAA,QAAA,EAAW2H,gBAAgB,CAAA,CAAE;QAClCsD,YAAY;QACZtD,gBAAgB;AAChBwD,QAAAA,UAAU,EAAEF,YAAY;AACxBtL,QAAAA,OAAO,EAAEA,OAAO,CAACkD,MAAM,CAAC;QACxB5C,UAAU,EAAE4C,MAAM,CAAC0H,MAAM;QACzBrK,QAAQ,EAAE2C,MAAM,CAAC2H,IAAI;QACrB3M,OAAO,EAAE4M,wBAAwB,CAC7BzM,SAAS,CAACiH,cAAc,EACxB0C,gBACJ,CAAC;QACDyD,iCAAiC,EAC7BH,YAAY,KAAKtD;OACxB;AACL,IAAA,CAAC,CAAC;AACN,EAAA;AAEA,EAAA,MAAMA,gBAAgB,GAAG3C,uBAAuB,CAAChH,SAAS,CAACiH,cAAc,CAAC;AAC1E,EAAA,MAAMpC,MAAM,GAAG7E,SAAS,CAACgN,SAAS,CAACrD,gBAAgB,CAAC;EAEpD,IAAI,CAAC9E,MAAM,EACX;AACI,IAAA,MAAM,IAAIpE,KAAK,CAAC,CAAA,0BAAA,EAA6BkJ,gBAAgB,iBAAiB,CAAC;AACnF,EAAA;AAEA,EAAA,OAAO,CAAE;IACL3H,GAAG,EAAE,CAAA,QAAA,EAAW2H,gBAAgB,CAAA,CAAE;AAClCsD,IAAAA,YAAY,EAAEtD,gBAAgB;IAC9BA,gBAAgB;AAChBwD,IAAAA,UAAU,EAAExD,gBAAgB;AAC5BhI,IAAAA,OAAO,EAAEA,OAAO,CAACkD,MAAM,CAAC;IACxB5C,UAAU,EAAE4C,MAAM,CAAC0H,MAAM;IACzBrK,QAAQ,EAAE2C,MAAM,CAAC2H,IAAI;IACrB3M,OAAO,EAAE4M,wBAAwB,CAACzM,SAAS,CAACiH,cAAc,EAAE0C,gBAAgB,CAAC;AAC7EyD,IAAAA,iCAAiC,EAAEjC,MAAM,CAAC+B,SAAS,CAACrI,MAAM,CAACuH,KAAK,CAAC,GAC3DvH,MAAM,CAACuH,KAAK,KAAKzC,gBAAgB,GACjC;AACV,GAAC,CAAE;AACP;AAEA,SAAS/G,aAAaA,CAACL,iBAAiB,EAAEM,SAAS,EACnD;EACI,MAAMP,MAAM,GAAG,EAAE;EACjB,MAAMS,MAAM,GAAG,EAAE;EAEjB,KAAK,MAAMiI,SAAS,IAAIzI,iBAAiB,CAAC8K,UAAU,IAAI,EAAE,EAC1D;IACI,IAAIxK,SAAS,CAACmI,SAAS,IAAIA,SAAS,CAACY,IAAI,KAAK/I,SAAS,CAACmI,SAAS,EACjE;AACI,MAAA;AACJ,IAAA;IAEA,IAAI,CAACnI,SAAS,CAACM,KAAK,IAAI,CAACgI,MAAM,CAAC+B,SAAS,CAACrK,SAAS,CAACqI,IAAI,CAAC,IAClDF,SAAS,CAACsC,MAAM,CAACtK,MAAM,KAAK,CAAC,EACpC;MACID,MAAM,CAACmB,IAAI,CAAC,CAAA,EAAG8G,SAAS,CAACY,IAAI,qBAAqB,CAAC;AACvD,IAAA;AAEA,IAAA,KAAK,IAAIjI,SAAS,GAAG,CAAC,EAAEA,SAAS,GAAGqH,SAAS,CAACsC,MAAM,CAACtK,MAAM,EAAEW,SAAS,EAAE,EACxE;AACI,MAAA,IAAIwH,MAAM,CAAC+B,SAAS,CAACrK,SAAS,CAACqI,IAAI,CAAC,IAAIvH,SAAS,KAAKd,SAAS,CAACqI,IAAI,EACpE;AACI,QAAA;AACJ,MAAA;AAEA,MAAA,MAAMA,IAAI,GAAGF,SAAS,CAACsC,MAAM,CAAC3J,SAAS,CAAC;MACxC,IAAI4J,kBAAkB,GAAG,CAAC;AAE1B,MAAA,KAAK,IAAI3J,SAAS,GAAG,CAAC,EAClBA,SAAS,GAAG4J,qBAAqB,CAACC,iBAAiB,EACnD7J,SAAS,EAAE,EACf;AACI,QAAA,MAAM8J,UAAU,GAAGxC,IAAI,CAACyC,WAAW,CAAC/J,SAAS,CAAC;AAE9C,QAAA,IAAI,CAAC8J,UAAU,EAAEE,QAAQ,EACzB;AACI,UAAA;AACJ,QAAA;AAEAL,QAAAA,kBAAkB,EAAE;AACpB,QAAA,MAAM1J,SAAS,GAAGgK,mBAAmB,CAACjK,SAAS,CAAC;QAEhD,IAAIf,SAAS,CAACM,KAAK,IAAIU,SAAS,KAAKhB,SAAS,CAACM,KAAK,EACpD;AACI,UAAA;AACJ,QAAA;AAEA,QAAA,IAAI,CAACuK,UAAU,CAACI,iBAAiB,EACjC;UACI/K,MAAM,CAACmB,IAAI,CACP,CAAA,EAAG8G,SAAS,CAACY,IAAI,QAAQjI,SAAS,CAAA,CAAA,EAAIE,SAAS,CAAA,wBAAA,CAA0B,GACvE,GAAG6J,UAAU,CAACK,QAAQ,IAAI,SAAS,6BACzC,CAAC;AACD,UAAA;AACJ,QAAA;QAEAzL,MAAM,CAAC4B,IAAI,CAAC;UACRlC,GAAG,EAAE,GAAGgJ,SAAS,CAACY,IAAI,CAAA,KAAA,EAAQjI,SAAS,CAAA,CAAA,EAAIE,SAAS,CAAA,CAAE;UACtDH,aAAa,EAAEsH,SAAS,CAACY,IAAI;UAC7BjI,SAAS;UACTC,SAAS;UACTC,SAAS;UACTC,YAAY,EAAE4J,UAAU,CAACK,QAAQ;UACjC/J,QAAQ,EAAE0J,UAAU,CAACI,iBAAiB;UACtCE,cAAc,EAAEC,SAAS,CAACP,UAAU,CAACQ,SAAS,EAAEF,cAAc,IAAI,EAAE,CAAC;UACrEG,SAAS,EAAEF,SAAS,CAACP,UAAU,CAACQ,SAAS,EAAEC,SAAS,IAAI,EAAE,CAAC;AAC3DC,UAAAA,SAAS,EAAEC,SAAS,CAACX,UAAU,CAACU,SAAS,CAAC;AAC1CE,UAAAA,QAAQ,EAAED,SAAS,CAACX,UAAU,CAACY,QAAQ,CAAC;AACxCC,UAAAA,IAAI,EAAEF,SAAS,CAACX,UAAU,CAACa,IAAI,CAAC;AAChCC,UAAAA,SAAS,EAAEP,SAAS,CAACP,UAAU,CAACc,SAAS,IAAI,EAAE;AACnD,SAAC,CAAC;AACN,MAAA;MAEA,IAAI,CAAC3L,SAAS,CAACM,KAAK,IAAIoK,kBAAkB,KAAK,CAAC,EAChD;QACIxK,MAAM,CAACmB,IAAI,CAAC,CAAA,EAAG8G,SAAS,CAACY,IAAI,CAAA,KAAA,EAAQjI,SAAS,CAAA,0BAAA,CAA4B,CAAC;AAC/E,MAAA;AACJ,IAAA;AACJ,EAAA;EAEA,OAAO;IAAErB,MAAM;AAAES,IAAAA;GAAQ;AAC7B;AAEA,SAASwB,eAAeA,CAAC/C,SAAS,EAAED,QAAQ,EAAEzB,MAAM,EACpD;AACI,EAAA,MAAM2O,QAAQ,GAAGA,CAAC5J,MAAM,EAAE6J,YAAY,KACtC;IACI,IACA;AACI,MAAA,MAAM7C,MAAM,GAAG8C,mBAAmB,CAAC9J,MAAM,CAACR,KAAK,EAAE;QAC7C,GAAGvE,MAAM,CAACyL,cAAc;QACxBjL,MAAM,EAAE,GAAGR,MAAM,CAACQ,MAAM,CAAA,CAAA,EAAIuE,MAAM,CAACV,aAAa,CAAA,CAAE;QAClD,IAAIuK,YAAY,EAAE1L,MAAM,GAAG;AAAE0L,UAAAA;SAAc,GAAG,EAAE;AACpD,OAAC,CAAC;AACF,MAAA,MAAME,cAAc,GAAGC,gCAAgC,CACnDhD,MAAM,EACNhH,MACJ,CAAC;MAEDA,MAAM,CAACzE,IAAI,GAAG;AACV,QAAA,GAAGyL,MAAM;QACTvL,MAAM,EAAEsO,cAAc,CAACtO,MAAM;QAC7BwO,MAAM,EAAEF,cAAc,CAACE;OAC1B;AACDjK,MAAAA,MAAM,CAACvE,MAAM,GAAGsO,cAAc,CAACtO,MAAM;AACrCuE,MAAAA,MAAM,CAACkK,QAAQ,GAAGlD,MAAM,CAACkD,QAAQ;AACjClK,MAAAA,MAAM,CAAC8I,WAAW,GAAGiB,cAAc,CAACE,MAAM;AAC1CjK,MAAAA,MAAM,CAACmK,YAAY,GAAGnD,MAAM,CAACoD,OAAO;AACpCpK,MAAAA,MAAM,CAACqK,YAAY,GAAGrD,MAAM,CAACsD,QAAQ;MACrCtK,MAAM,CAAC8B,UAAU,GAAG,iBAAiB;MACrC9B,MAAM,CAACM,UAAU,GAAG;AAAEC,QAAAA,EAAE,EAAE,IAAI;AAAEgK,QAAAA,IAAI,EAAE;OAAc;AAEpD,MAAA,IAAIvD,MAAM,CAAChI,SAAS,KAAK,SAAS,EAClC;AACIgB,QAAAA,MAAM,CAACwK,eAAe,GAAGxD,MAAM,CAACwD,eAAe;AACnD,MAAA;AAEA,MAAA,MAAMC,KAAK,GAAGC,wBAAwB,CAAC1K,MAAM,CAAC;AAE9C,MAAA,IAAIyK,KAAK,EACT;QACIzK,MAAM,CAACM,UAAU,GAAG;AAAEC,UAAAA,EAAE,EAAE,KAAK;AAAEoK,UAAAA,eAAe,EAAEF;SAAO;QACzDzK,MAAM,CAACvE,MAAM,GAAG,IAAI;AACxB,MAAA;IACJ,CAAC,CACD,OAAO8B,KAAK,EACZ;MACI,MAAMqN,OAAO,GAAGrN,KAAK,EAAEqN,OAAO,IAAI3E,MAAM,CAAC1I,KAAK,CAAC;MAE/CyC,MAAM,CAACM,UAAU,GAAG;AAChBC,QAAAA,EAAE,EAAE,KAAK;AACThD,QAAAA,KAAK,EAAEqN,OAAO;AACdC,QAAAA,OAAO,EAAEtN,KAAK,EAAEsN,OAAO,IAAI;OAC9B;AAED,MAAA,IAAI,kDAAkD,CAACC,IAAI,CAACF,OAAO,CAAC,EACpE;QACI5K,MAAM,CAACQ,QAAQ,GAAG;AACduK,UAAAA,MAAM,EAAEH,OAAO;AACf,UAAA,IAAIrN,KAAK,EAAEsN,OAAO,EAAEG,UAAU,GACxB;AAAEA,YAAAA,UAAU,EAAEzN,KAAK,CAACsN,OAAO,CAACG;WAAY,GACxC,EAAE,CAAC;AACT,UAAA,IAAIzN,KAAK,EAAEsN,OAAO,EAAEI,aAAa,GAC3B;AAAEA,YAAAA,aAAa,EAAE1N,KAAK,CAACsN,OAAO,CAACI;WAAe,GAC9C,EAAE;SACX;AACL,MAAA;AACJ,IAAA;EACJ,CAAC;EAED,KAAK,MAAMjL,MAAM,IAAIrD,SAAS,CAAC1B,MAAM,EAAE,EACvC;AACI,IAAA,IAAI+E,MAAM,CAAChB,SAAS,KAAK,QAAQ,EACjC;AACI4K,MAAAA,QAAQ,CAAC5J,MAAM,EAAE,IAAI,CAAC;AAC1B,IAAA;AACJ,EAAA;AAEA,EAAA,MAAMkL,mBAAmB,GAAG,IAAIzO,GAAG,EAAE;EAErC,KAAK,MAAM6B,KAAK,IAAI5B,QAAQ,CAACzB,MAAM,EAAE,EACrC;AACI,IAAA,IAAIqD,KAAK,CAACU,SAAS,KAAK,OAAO,EAC/B;AACI,MAAA;AACJ,IAAA;IAEA,MAAMgB,MAAM,GAAGrD,SAAS,CAACwO,GAAG,CAAC7M,KAAK,CAACE,SAAS,CAAC;AAE7C,IAAA,IAAI,CAACwB,MAAM,EAAEzE,IAAI,EACjB;AACI,MAAA;AACJ,IAAA;AAEA2P,IAAAA,mBAAmB,CAAChO,GAAG,CACnB,CAAA,EAAGoB,KAAK,CAACxB,OAAO,CAAA,CAAA,EAAIwB,KAAK,CAACO,aAAa,CAAA,CAAA,EAAIP,KAAK,CAACQ,SAAS,CAAA,CAAE,EAC5DkB,MAAM,CAACzE,IAAI,CAAC0O,MAAM,CACb5J,MAAM,CAAEtF,KAAK,IAAK,OAAOA,KAAK,CAACgM,IAAI,KAAK,QAAQ,IAC1ChM,KAAK,CAACgM,IAAI,CAACqE,UAAU,CAAC,MAAM,CAAC,CAAC,CACpCrL,GAAG,CAAEhF,KAAK,IAAKA,KAAK,CAACsQ,QAAQ,CAAC,CAC9BC,IAAI,CAAC,CAACC,IAAI,EAAEC,KAAK,KAAKD,IAAI,GAAGC,KAAK,CAC3C,CAAC;AACL,EAAA;EAEA,KAAK,MAAMlN,KAAK,IAAI5B,QAAQ,CAACzB,MAAM,EAAE,EACrC;AACI,IAAA,IAAIqD,KAAK,CAACU,SAAS,KAAK,QAAQ,EAChC;AACI,MAAA;AACJ,IAAA;IAEA,MAAMgB,MAAM,GAAGrD,SAAS,CAACwO,GAAG,CAAC7M,KAAK,CAACE,SAAS,CAAC;IAC7C,MAAMiN,QAAQ,GAAGP,mBAAmB,CAACC,GAAG,CACpC,CAAA,EAAG7M,KAAK,CAACxB,OAAO,IAAIwB,KAAK,CAACO,aAAa,CAAA,CAAA,EAAIP,KAAK,CAACQ,SAAS,CAAA,CAC9D,CAAC,IAAI,EAAE;AAEP,IAAA,IAAIkB,MAAM,EACV;MACIA,MAAM,CAAC6J,YAAY,GAAG4B,QAAQ;AAC9B7B,MAAAA,QAAQ,CAAC5J,MAAM,EAAEyL,QAAQ,CAAC;AAC9B,IAAA;AACJ,EAAA;AACJ;AAEA,SAASrC,SAASA,CAACtC,KAAK,EACxB;AACI,EAAA,IAAIA,KAAK,KAAKV,SAAS,IAAIU,KAAK,KAAK,IAAI,EACzC;AACI,IAAA,OAAOA,KAAK;AAChB,EAAA;EAEA,OAAO3D,IAAI,CAACuI,KAAK,CAACvI,IAAI,CAACC,SAAS,CAAC0D,KAAK,CAAC,CAAC;AAC5C;AAEA,SAAS0C,SAASA,CAACzJ,GAAG,EACtB;AACI,EAAA,IAAI,EAAEA,GAAG,YAAYtD,GAAG,CAAC,EACzB;AACI,IAAA,OAAO,EAAE;AACb,EAAA;AAEA,EAAA,OAAOmD,KAAK,CAACC,IAAI,CAACE,GAAG,CAAC4L,OAAO,EAAE,CAAC,CAAC5L,GAAG,CAAC,CAAC,CAAE6L,aAAa,EAAE9E,KAAK,CAAE,MAAM;IAChE8E,aAAa;IACb,GAAGxC,SAAS,CAACtC,KAAK;AACtB,GAAC,CAAC,CAAC;AACP;AAEA,SAASpI,kBAAkBA,CAACJ,KAAK,EACjC;EACI,MAAM6K,cAAc,GAAGC,SAAS,CAAC9K,KAAK,CAAC6K,cAAc,IAAI,EAAE,CAAC;AAC5D,EAAA,MAAM0C,cAAc,GAAG1C,cAAc,CAACpJ,GAAG,CAAEhF,KAAK,KAAM;AAClD+Q,IAAAA,QAAQ,EAAE,CAAA,EAAG/Q,KAAK,CAACgR,SAAS,IAAI,CAAA,MAAA,EAAShR,KAAK,CAACiR,KAAK,EAAE,CAAA,EAAGjR,KAAK,CAACkR,UAAU,IAAI,EAAE,CAAA,CAAE;IACjFD,KAAK,EAAEjR,KAAK,CAACiR,KAAK;IAClBD,SAAS,EAAEhR,KAAK,CAACgR,SAAS;IAC1BE,UAAU,EAAElR,KAAK,CAACkR,UAAU;IAC5BL,aAAa,EAAE7Q,KAAK,CAAC6Q,aAAa;IAClCM,QAAQ,EAAEnR,KAAK,CAACmR,QAAQ;IACxBC,IAAI,EAAEpR,KAAK,CAACoR,IAAI;IAChBC,SAAS,EAAErR,KAAK,CAACqR;AACrB,GAAC,CAAC,CAAC;AACH,EAAA,MAAMC,UAAU,GAAG,IAAIC,GAAG,CAACT,cAAc,CAAC9L,GAAG,CAAEhF,KAAK,IAAKA,KAAK,CAACgR,SAAS,CAAC,CAAC;AAC1E,EAAA,MAAMQ,SAAS,GAAGF,UAAU,CAACxP,GAAG,CAAC,QAAQ,CAAC;AAC1C,EAAA,MAAM2P,UAAU,GAAGH,UAAU,CAACxP,GAAG,CAAC,SAAS,CAAC;AAC5C,EAAA,MAAM4P,WAAW,GAAGJ,UAAU,CAACxP,GAAG,CAAC,UAAU,CAAC,IAAIwP,UAAU,CAACxP,GAAG,CAAC,WAAW,CAAC;AAC7E,EAAA,MAAM6P,eAAe,GAAGL,UAAU,CAACxP,GAAG,CAAC,cAAc,CAAC,IAC/CwP,UAAU,CAACxP,GAAG,CAAC,aAAa,CAAC;EACpC,IAAI8P,eAAe,GAAG,MAAM;AAE5B,EAAA,IAAIJ,SAAS,IAAIC,UAAU,IAAIC,WAAW,EAC1C;AACIE,IAAAA,eAAe,GAAG,WAAW;AACjC,EAAA,CAAC,MACI,IAAI,CAACJ,SAAS,IAAIC,UAAU,EACjC;AACIG,IAAAA,eAAe,GAAG,gCAAgC;AACtD,EAAA,CAAC,MACI,IAAIJ,SAAS,IAAIC,UAAU,IAAIC,WAAW,EAC/C;AACIE,IAAAA,eAAe,GAAG,aAAa;AACnC,EAAA;EAEA,MAAMpD,SAAS,GAAGH,SAAS,CAAC9K,KAAK,CAACiL,SAAS,IAAI,EAAE,CAAC;EAClD,MAAME,QAAQ,GAAGL,SAAS,CAAC9K,KAAK,CAACmL,QAAQ,IAAI,EAAE,CAAC;EAChD,MAAMC,IAAI,GAAGN,SAAS,CAAC9K,KAAK,CAACoL,IAAI,IAAI,EAAE,CAAC;EACxC,MAAMC,SAAS,GAAGP,SAAS,CAAC9K,KAAK,CAACqL,SAAS,IAAI,EAAE,CAAC;AAClD,EAAA,MAAMiD,aAAa,GAAGrD,SAAS,CAACxJ,GAAG,CAAE8M,KAAK,IAAKA,KAAK,CAAC9F,IAAI,CAAC,CAAC1G,MAAM,CAACyM,OAAO,CAAC;EAE1E,OAAO;IACH9N,SAAS,EAAEV,KAAK,CAACU,SAAS;IAC1BD,SAAS,EAAET,KAAK,CAACS,SAAS;AAC1BgO,IAAAA,MAAM,EAAEzO,KAAK,CAACU,SAAS,KAAK,QAAQ,GAAG;AACnCiL,MAAAA,MAAM,EAAE4B,cAAc;MACtBc,eAAe;MACfK,gBAAgB,EAAEL,eAAe,KAAK,WAAW;MACjDM,qBAAqB,EAAEN,eAAe,KAAK,gCAAgC;MAC3EO,gBAAgB,EAAER,eAAe,IAAIE,aAAa,CAACnG,QAAQ,CAAC,gBAAgB,CAAC;AAC7EiG,MAAAA;AACJ,KAAC,GAAG,IAAI;AACRS,IAAAA,cAAc,EAAEC,sBAAsB,CAACR,aAAa,CAAC;IACrDS,eAAe,EAAE,CAAC/O,KAAK,CAACgL,SAAS,IAAI,EAAE,EAClCjJ,MAAM,CAAEwM,KAAK,IAAKA,KAAK,CAACS,YAAY,KAAK,CAAC,CAAC,CAC3CvN,GAAG,CAAE8M,KAAK,KAAM;MACbjB,aAAa,EAAEiB,KAAK,CAACjB,aAAa;MAClC2B,aAAa,EAAEV,KAAK,CAACU,aAAa;MAClCC,aAAa,EAAEX,KAAK,CAACW,aAAa;MAClCC,UAAU,EAAEZ,KAAK,CAACY,UAAU;AAC5BC,MAAAA,OAAO,EAAEZ,OAAO,CAACD,KAAK,CAACa,OAAO;AAClC,KAAC,CAAC,CAAC;IACPnE,SAAS;IACTE,QAAQ;IACRC,IAAI;AACJC,IAAAA;GACH;AACL;AAEA,SAASyD,sBAAsBA,CAACO,KAAK,EACrC;AACI,EAAA,MAAM1S,MAAM,GAAG,IAAIqR,GAAG,CAACqB,KAAK,CAAC;AAE7B,EAAA,IAAI,CAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAE,CAACC,IAAI,CAAE7G,IAAI,IAAK9L,MAAM,CAAC4B,GAAG,CAACkK,IAAI,CAAC,CAAC,EACpE;AACI,IAAA,OAAO,iBAAiB;AAC5B,EAAA;EAEA,IAAI,CAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EACzD,OAAO,EAAE,cAAc,CAAE,CAAC6G,IAAI,CAAE7G,IAAI,IAAK9L,MAAM,CAAC4B,GAAG,CAACkK,IAAI,CAAC,CAAC,EAC9D;AACI,IAAA,OAAO,mBAAmB;AAC9B,EAAA;AAEA,EAAA,OAAO,SAAS;AACpB;AAEA,SAAS5G,oBAAoBA,CAACV,SAAS,EACvC;EACI,MAAMoO,KAAK,GAAGpO,SAAS,GAAG,CAAC,CAAC,EAAEhB,QAAQ,IAAI,IAAI;EAE9C,IAAI,CAACoP,KAAK,EACV;AACI,IAAA,OAAO,IAAI;AACf,EAAA;EAEA,OAAO;IACH7O,SAAS,EAAE6O,KAAK,CAAC7O,SAAS;IAC1BD,SAAS,EAAE8O,KAAK,CAAC9O,SAAS;AAC1BgO,IAAAA,MAAM,EAAEc,KAAK,CAACd,MAAM,GAAG3D,SAAS,CAACyE,KAAK,CAACd,MAAM,CAAC,GAAG,IAAI;IACrDI,cAAc,EAAEU,KAAK,CAACV,cAAc;IACpCE,eAAe,EAAEjE,SAAS,CAACyE,KAAK,CAACR,eAAe,IAAI,EAAE,CAAC;IACvDT,aAAa,EAAE,CAACiB,KAAK,CAACtE,SAAS,IAAI,EAAE,EAAExJ,GAAG,CAAE8M,KAAK,IAAKA,KAAK,CAAC9F,IAAI,CAAC,CAAC1G,MAAM,CAACyM,OAAO,CAAC;IACjFgB,YAAY,EAAE,CAACD,KAAK,CAACpE,QAAQ,IAAI,EAAE,EAAE1J,GAAG,CAAE8M,KAAK,IAAKA,KAAK,CAAC9F,IAAI,CAAC,CAAC1G,MAAM,CAACyM,OAAO,CAAC;IAC/EiB,kBAAkB,EAAEtO,SAAS,CAACtB;GACjC;AACL;AAEA,SAAS6L,gCAAgCA,CAAChD,MAAM,EAAEgH,YAAY,EAC9D;AACI,EAAA,IAAIA,YAAY,EAAEhP,SAAS,KAAK,QAAQ,EACxC;IACI,OAAO;MACHvD,MAAM,EAAEuL,MAAM,CAACvL,MAAM;MACrBwO,MAAM,EAAEjD,MAAM,CAACiD;KAClB;AACL,EAAA;EAEA,MAAMgE,kBAAkB,GAAG,IAAI3B,GAAG,CAAC,CAAC0B,YAAY,CAACvO,SAAS,IAAI,EAAE,EAC3DyO,OAAO,CAAErB,KAAK,IAAKA,KAAK,CAACpO,QAAQ,EAAEsO,MAAM,EAAE9C,MAAM,IAAI,EAAE,CAAC,CACxD5J,MAAM,CAAEtF,KAAK,IAAKA,KAAK,CAACgR,SAAS,KAAK,WAAW,CAAC,CAClDhM,GAAG,CAAEhF,KAAK,IAAKA,KAAK,CAAC6Q,aAAa,CAAC,CAAC;AACzC,EAAA,IAAInQ,MAAM,GAAGuL,MAAM,CAACvL,MAAM;EAC1B,MAAMwO,MAAM,GAAGjD,MAAM,CAACiD,MAAM,CAAClK,GAAG,CAAEhF,KAAK,IACvC;AACI,IAAA,IAAI,CAACkT,kBAAkB,CAACpR,GAAG,CAAC9B,KAAK,CAACsQ,QAAQ,CAAC,IACpCtQ,KAAK,CAACoT,YAAY,KAAK,UAAU,EACxC;AACI,MAAA,OAAOpT,KAAK;AAChB,IAAA;AACA,IAAA,MAAMgM,IAAI,GAAG,CAAA,YAAA,EAAehM,KAAK,CAACqT,aAAa,CAAA,CAAE;IACjD3S,MAAM,GAAGA,MAAM,CAAC4S,UAAU,CAACtT,KAAK,CAACgM,IAAI,EAAEA,IAAI,CAAC;IAC5C,OAAO;AACH,MAAA,GAAGhM,KAAK;MACRgM,IAAI;AACJoH,MAAAA,YAAY,EAAE;KACjB;AACL,EAAA,CAAC,CAAC;EACF,OAAO;IAAE1S,MAAM;AAAEwO,IAAAA;GAAQ;AAC7B;AAEA,SAASS,wBAAwBA,CAAC1K,MAAM,EACxC;AACI,EAAA,MAAMvE,MAAM,GAAGuE,MAAM,EAAEvE,MAAM,IAAI,EAAE;EAEnC,IAAI,CAACA,MAAM,EACX;AACI,IAAA,OAAO,IAAI;AACf,EAAA;AAEA,EAAA,MAAM6S,eAAe,GAAG,kBAAkB,CAACxD,IAAI,CAACrP,MAAM,CAAC;EACvD,MAAM8S,kBAAkB,GAAG,mDAAmD,CAACzD,IAAI,CAACrP,MAAM,CAAC,IACpF,2DAA2D,CAACqP,IAAI,CAACrP,MAAM,CAAC,IACxE,sBAAsB,CAACqP,IAAI,CAACrP,MAAM,CAAC;AAC1C,EAAA,MAAM+S,iBAAiB,GAAG,0DAA0D,CAAC1D,IAAI,CAACrP,MAAM,CAAC,IAC1F,mBAAmB,CAACqP,IAAI,CAACrP,MAAM,CAAC;EAEvC,IAAIuE,MAAM,CAAChB,SAAS,KAAK,QAAQ,IAAI,CAACsP,eAAe,EACrD;AACI,IAAA,OAAO,gDAAgD;AAC3D,EAAA;AAEA,EAAA,IAAItO,MAAM,CAAChB,SAAS,KAAK,OAAO,KACxBsP,eAAe,IAAIC,kBAAkB,CAAC,IAAI,CAACC,iBAAiB,EACpE;AACI,IAAA,OAAO,2CAA2C;AACtD,EAAA;AAEA,EAAA,IAAIxO,MAAM,CAAChB,SAAS,KAAK,SAAS,IAAI,CAAC,yBAAyB,CAAC8L,IAAI,CAACrP,MAAM,CAAC,EAC7E;AACI,IAAA,OAAO,wDAAwD;AACnE,EAAA;AAEA,EAAA,OAAO,IAAI;AACf;AAEA,SAASmF,yBAAyBA,CAACnD,MAAM,EAAEsH,OAAO,EAClD;AACI,EAAA,MAAMpI,SAAS,GAAG,IAAIF,GAAG,CAACsI,OAAO,CAAChF,GAAG,CAAEhD,MAAM,IAAK,CAAEA,MAAM,CAACI,GAAG,EAAEJ,MAAM,CAAE,CAAC,CAAC;AAC1E,EAAA,MAAM0R,MAAM,GAAG,IAAIhS,GAAG,EAAE;AAExB,EAAA,KAAK,MAAM6B,KAAK,IAAIb,MAAM,EAC1B;AACI,IAAA,IAAI,CAAC,CAAE,QAAQ,EAAE,OAAO,CAAE,CAACgJ,QAAQ,CAACnI,KAAK,CAACU,SAAS,CAAC,EACpD;AACI,MAAA;AACJ,IAAA;AAEA,IAAA,MAAM7B,GAAG,GAAG,CAAA,EAAGmB,KAAK,CAACxB,OAAO,CAAA,CAAA,EAAIwB,KAAK,CAACO,aAAa,CAAA,CAAA,EAAIP,KAAK,CAACQ,SAAS,CAAA,CAAE;IACxE,MAAM4P,KAAK,GAAGD,MAAM,CAACtD,GAAG,CAAChO,GAAG,CAAC,IAAI;MAC7BA,GAAG;MACHL,OAAO,EAAEwB,KAAK,CAACxB,OAAO;MACtB+B,aAAa,EAAEP,KAAK,CAACO,aAAa;MAClCC,SAAS,EAAER,KAAK,CAACQ,SAAS;AAC1BiO,MAAAA,MAAM,EAAE,IAAI;AACZ4B,MAAAA,KAAK,EAAE,IAAI;AACXC,MAAAA,eAAe,EAAE;KACpB;AAED,IAAA,IAAIF,KAAK,CAACpQ,KAAK,CAACU,SAAS,CAAC,EAC1B;MACI0P,KAAK,CAACE,eAAe,CAACvP,IAAI,CAACf,KAAK,CAACU,SAAS,CAAC;AAC/C,IAAA;AAEA0P,IAAAA,KAAK,CAACpQ,KAAK,CAACU,SAAS,CAAC,GAAGV,KAAK;AAC9BmQ,IAAAA,MAAM,CAACvR,GAAG,CAACC,GAAG,EAAEuR,KAAK,CAAC;AAC1B,EAAA;EAEA,MAAMxK,gBAAgB,GAAG,EAAE;EAC3B,IAAIF,iBAAiB,GAAG,CAAC;EAEzB,KAAK,MAAM0K,KAAK,IAAID,MAAM,CAACxT,MAAM,EAAE,EACnC;IACI,MAAM4T,aAAa,GAAG,EAAE;IACxB,MAAMC,iBAAiB,GAAG,EAAE;IAE5B,KAAK,MAAM9P,SAAS,IAAI,CAAE,QAAQ,EAAE,OAAO,CAAE,EAC7C;AACI,MAAA,MAAMV,KAAK,GAAGoQ,KAAK,CAAC1P,SAAS,CAAC;MAE9B,IAAI,CAACV,KAAK,EACV;AACIuQ,QAAAA,aAAa,CAACxP,IAAI,CAACL,SAAS,CAAC;AAC7B,QAAA;AACJ,MAAA;MAEA,MAAMjC,MAAM,GAAGJ,SAAS,CAACwO,GAAG,CAAC7M,KAAK,CAACE,SAAS,CAAC;MAE7C,IAAI,CAACzB,MAAM,EAAEuD,UAAU,EAAEC,EAAE,IAAI,CAACxD,MAAM,CAACtB,MAAM,EAC7C;QACIqT,iBAAiB,CAACzP,IAAI,CAAC;UACnBL,SAAS;UACTT,QAAQ,EAAED,KAAK,CAACnB,GAAG;UACnBqB,SAAS,EAAEF,KAAK,CAACE,SAAS;AAC1BuM,UAAAA,MAAM,EAAEhO,MAAM,EAAEuD,UAAU,EAAEqK,eAAe,IACpC5N,MAAM,EAAEuD,UAAU,EAAE/C,KAAK,IACzBR,MAAM,EAAEyD,QAAQ,EAAEuK,MAAM,IACxB;AACX,SAAC,CAAC;AACN,MAAA;AACJ,IAAA;AAEA,IAAA,IAAI,CAAC8D,aAAa,CAAC1Q,MAAM,IAAI,CAAC2Q,iBAAiB,CAAC3Q,MAAM,IAC/C,CAACuQ,KAAK,CAACE,eAAe,CAACzQ,MAAM,EACpC;AACI6F,MAAAA,iBAAiB,EAAE;AACvB,IAAA,CAAC,MAED;MACIE,gBAAgB,CAAC7E,IAAI,CAAC;AAClB,QAAA,GAAGqP,KAAK;QACRG,aAAa;QACbC,iBAAiB;AACjBF,QAAAA,eAAe,EAAE,CAAE,GAAG,IAAItC,GAAG,CAACoC,KAAK,CAACE,eAAe,CAAC,CAAE,CAACtD,IAAI;AAC/D,OAAC,CAAC;AACN,IAAA;AACJ,EAAA;EAEA,OAAO;IACHxH,iBAAiB,EAAE2K,MAAM,CAAC9G,IAAI;IAC9B3D,iBAAiB;AACjBE,IAAAA;GACH;AACL;AAEA,SAASpI,uBAAuBA,CAACb,MAAM,EACvC;AACI,EAAA,MAAM8T,QAAQ,GAAG9T,MAAM,CAACY,cAAc;AAEtC,EAAA,IAAIkT,QAAQ,KAAK,IAAI,KACb,CAACA,QAAQ,IAAI,OAAOA,QAAQ,KAAK,QAAQ,IAAInP,KAAK,CAACkG,OAAO,CAACiJ,QAAQ,CAAC,CAAC,EAC7E;AACI,IAAA,MAAM,IAAIhJ,SAAS,CAAC,uCAAuC,CAAC;AAChE,EAAA;AAEA,EAAA,MAAMlE,MAAM,GAAGmN,WAAW,CAAC/T,MAAM,CAACK,WAAW,CAAC;AAC9C,EAAA,IAAIyT,QAAQ,EAAElN,MAAM,KAAKuE,SAAS,IAAI2I,QAAQ,EAAElN,MAAM,KAAK,IAAI,IACxDkN,QAAQ,CAAClN,MAAM,KAAKA,MAAM,EACjC;AACI,IAAA,MAAM,IAAIjG,KAAK,CACX,wEACJ,CAAC;AACL,EAAA;EAEA,OAAO+J,MAAM,CAACC,MAAM,CAAC;AACjBqJ,IAAAA,QAAQ,EAAEF,QAAQ,EAAEE,QAAQ,IAAIhU,MAAM,CAACQ,MAAM;AAC7CyT,IAAAA,WAAW,EAAEH,QAAQ,EAAEG,WAAW,IAAIjU,MAAM,CAACQ,MAAM;AACnD0T,IAAAA,IAAI,EAAEJ,QAAQ,EAAEI,IAAI,IAAI,IAAI;AAC5BC,IAAAA,MAAM,EAAEL,QAAQ,EAAEK,MAAM,IAAI,IAAI;IAChCC,KAAK,EAAEN,QAAQ,EAAEM,KAAK,KAAKjJ,SAAS,IAAI2I,QAAQ,EAAEM,KAAK,KAAK,IAAI,GAC1D,IAAI,GACJpJ,MAAM,CAAC8I,QAAQ,CAACM,KAAK,CAAC;AAC5B5N,IAAAA,UAAU,EAAExG,MAAM,CAACK,WAAW,CAACmG,UAAU;AACzCE,IAAAA,GAAG,EAAEoN,QAAQ,EAAEpN,GAAG,IAAI,IAAI;AAC1BE,IAAAA;AACJ,GAAC,CAAC;AACN;AAEA,SAASoD,oBAAoBA,CAAC;EAC1BnE,IAAI;EACJ2D,QAAQ;EACRI,IAAI;EACJzE,aAAa;EACbK,eAAe;EACfC,YAAY;EACZC,kBAAkB;AAClBE,EAAAA;AACJ,CAAC,EACD;EACI,MAAM3C,MAAM,GAAG,EAAE;EAEjB,IAAI4C,IAAI,CAACC,MAAM,KAAK,MAAM,IAAI8D,IAAI,CAAC9D,MAAM,KAAK,eAAe,EAC7D;AACI7C,IAAAA,MAAM,CAACmB,IAAI,CAAC,+BAA+B,CAAC;AAChD,EAAA;AAEA,EAAA,IAAI,CAACO,KAAK,CAACkG,OAAO,CAACrB,QAAQ,CAACpI,QAAQ,CAAC,IAAI,CAACuD,KAAK,CAACkG,OAAO,CAACjB,IAAI,CAACE,OAAO,CAAC,EACrE;AACI7G,IAAAA,MAAM,CAACmB,IAAI,CAAC,2BAA2B,CAAC;AAC5C,EAAA;EAEA,IAAIe,aAAa,CAACjC,MAAM,EACxB;IACID,MAAM,CAACmB,IAAI,CAAC,CAAA,EAAGe,aAAa,CAACjC,MAAM,+BAA+B,CAAC;AACvE,EAAA;EAEA,IAAIsC,eAAe,CAACtC,MAAM,EAC1B;IACID,MAAM,CAACmB,IAAI,CAAC,CAAA,EAAGoB,eAAe,CAACtC,MAAM,wCAAwC,CAAC;AAClF,EAAA;EAEA,IAAIuC,YAAY,CAACvC,MAAM,EACvB;IACID,MAAM,CAACmB,IAAI,CAAC,CAAA,EAAGqB,YAAY,CAACvC,MAAM,4BAA4B,CAAC;AACnE,EAAA;AAEA,EAAA,IAAIwC,kBAAkB,CAACuD,gBAAgB,CAAC/F,MAAM,EAC9C;IACID,MAAM,CAACmB,IAAI,CAAC,CAAA,EAAGsB,kBAAkB,CAACuD,gBAAgB,CAAC/F,MAAM,CAAA,+BAAA,CAAiC,CAAC;AAC/F,EAAA;EAEA,IAAI,CAAC0C,oBAAoB,EACzB;AACI3C,IAAAA,MAAM,CAACmB,IAAI,CAAC,qCAAqC,CAAC;AACtD,EAAA;EAEA,OAAO;AACHkB,IAAAA,EAAE,EAAErC,MAAM,CAACC,MAAM,KAAK,CAAC;AACvBmR,IAAAA,KAAK,EAAEpR,MAAM,CAACC,MAAM,GAAG,YAAY,GAAG,YAAY;AAClDD,IAAAA,MAAM,EAAEyH,MAAM,CAACC,MAAM,CAAC1H,MAAM,CAAC;AAC7BgG,IAAAA,gBAAgB,EAAEyB,MAAM,CAACC,MAAM,CAACjF,kBAAkB,CAACuD,gBAAgB;GACtE;AACL;;;;"}
|
|
1
|
+
{"version":3,"file":"effectPackage.js","sources":["../../../../../src/formats/webgl/core/effectPackage.js"],"sourcesContent":["import { EFFECT_INFO_VERSION } from \"./effectPackageValidation.js\";\nimport { CjsHlslFormat } from \"../../hlsl/index.js\";\nimport { HlslEffectBindingManifest } from \"../../hlsl/core/tr2/shader/HlslEffectBindingManifest.js\";\nimport { HlslRenderContextEnum, hlslShaderStageName } from \"../../hlsl/core/tr2/HlslRenderContextEnum.js\";\n\nimport {\n buildEffectPermutationGraph,\n EFFECT_PERMUTATION_GRAPH_CHUNK,\n EFFECT_PERMUTATION_GRAPH_FORMAT,\n EFFECT_PERMUTATION_GRAPH_VERSION\n} from \"../../../format/effect/effectPermutationGraph.js\";\nimport {\n buildCompleteEffectReflection,\n EFFECT_REFLECTION_BLOB_CHUNK,\n EFFECT_REFLECTION_CHUNK\n} from \"../../../format/effect/effectReflectionPackage.js\";\nimport { buildPackage, emitGlslWithOptions, inspectWithValues } from \"./helpers.js\";\nimport { sha256Bytes, sha256Utf8 } from \"../../../format/effect/sha256.js\";\n\nconst PACKAGE_VERSION = \"0.11.1\";\n\n/**\n * Builds a complete CEWG package from compiled Tr2 effect bytes.\n *\n * This browser-safe path owns whole-effect selection, stage translation,\n * package assembly, and structural qualification. Filesystem and native-tool\n * concerns remain in Node callers.\n *\n * @param {Uint8Array|ArrayBuffer|ArrayBufferView} input Compiled effect bytes.\n * @param {object} [options] Selection, provenance, and emitter policy.\n * @returns {object} Package bytes plus inspection and qualification records.\n */\nexport function buildEffectPackage(input, options = {})\n{\n const values = normalizeOptions(input, options);\n const effectRes = CjsHlslFormat.read(values.sourceBytes, {\n emit: CjsHlslFormat.OUTPUT_RAW,\n source: values.source\n });\n\n if (!effectRes.IsGood())\n {\n throw effectRes.loadError || new Error(\"Tr2EffectRes failed to load input\");\n }\n\n const sourceIdentity = normalizeSourceIdentity(values);\n // One INFO version means one contract, and that contract requires complete\n // source reflection, which only version-15 input can supply.\n if (effectRes.m_version !== 15)\n {\n throw new Error(\n \"Effect package requires a version-15 compiled effect, got version \"\n + (effectRes.m_version ?? \"unknown\")\n );\n }\n\n const permutationGraph = buildEffectPermutationGraph(effectRes);\n const reflectionPackage = effectRes.m_version === 15\n ? buildCompleteEffectReflection(\n effectRes,\n permutationGraph,\n {\n sourceIdentity,\n sourcePath: values.source\n }\n )\n : null;\n const variants = buildExportVariants(effectRes, values.allPermutations);\n const bodyMap = new Map();\n const stageMap = new Map();\n const shaderMap = new Map();\n\n for (const variant of variants)\n {\n if (bodyMap.has(variant.bodyKey))\n {\n continue;\n }\n\n const shader = effectRes.GetShader(toShaderOptions(variant.options));\n\n if (!shader)\n {\n bodyMap.set(variant.bodyKey, {\n key: variant.bodyKey,\n bodyOffset: variant.bodyOffset,\n bodySize: variant.bodySize,\n firstVariantKey: variant.key,\n error: \"Tr2EffectRes.GetShader returned null\",\n manifest: null,\n stages: []\n });\n continue;\n }\n\n const effectDescription = shader.GetEffectDescription();\n const manifest = HlslEffectBindingManifest.fromEffectDescription(effectDescription);\n const collection = collectStages(effectDescription, values.selection);\n const body = {\n key: variant.bodyKey,\n bodyOffset: variant.bodyOffset,\n bodySize: variant.bodySize,\n firstVariantKey: variant.key,\n error: collection.errors.length ? collection.errors.join(\"; \") : null,\n manifest: manifest.toJSON(),\n stages: []\n };\n\n for (const stage of collection.stages)\n {\n const stageKey = `${variant.bodyKey}.${stage.key}`;\n const shaderKey = `shader_${stageKey}`;\n const contract = buildStageContract(stage);\n const stageRecord = {\n key: stageKey,\n bodyKey: variant.bodyKey,\n localKey: stage.key,\n techniqueName: stage.techniqueName,\n passIndex: stage.passIndex,\n stageType: stage.stageType,\n stageName: stage.stageName,\n shaderHandle: stage.shaderHandle,\n shaderSize: stage.bytecode.shaderSize,\n stringTableOffset: stage.bytecode.stringTableOffset,\n shaderKey,\n contract\n };\n\n stageMap.set(stageKey, stageRecord);\n body.stages.push(stageKey);\n shaderMap.set(shaderKey, {\n key: shaderKey,\n firstStageKey: stageKey,\n firstBodyKey: variant.bodyKey,\n stageName: stage.stageName,\n shaderSize: stage.bytecode.shaderSize,\n stringTableOffset: stage.bytecode.stringTableOffset,\n bytes: stage.bytecode.bytes,\n contracts: [ {\n stageKey,\n techniqueName: stage.techniqueName,\n passIndex: stage.passIndex,\n stageName: stage.stageName,\n contract\n } ]\n });\n }\n\n bodyMap.set(variant.bodyKey, body);\n }\n\n translateStages(shaderMap, stageMap, values);\n\n const bodies = Array.from(bodyMap.values());\n const stages = Array.from(stageMap.values());\n const translatedShaders = Array.from(shaderMap.values()).map((record) =>\n {\n const { bytes, emit, ...output } = record;\n\n output.primaryContract = mergeShaderContracts(output.contracts);\n return output;\n });\n const failedShaders = translatedShaders.filter((record) =>\n !record.hlsl2webgl?.ok && !record.excluded);\n const excludedShaders = translatedShaders.filter((record) => record.excluded);\n const failedBodies = bodies.filter((body) => body.error);\n const rasterCompleteness = inspectRasterCompleteness(stages, translatedShaders);\n const availableShaderCount = translatedShaders.filter((record) =>\n record.hlsl2webgl?.ok && record.source).length;\n const info = {\n format: \"CEWG\",\n formatVersion: EFFECT_INFO_VERSION,\n packageKind: values.allPermutations\n ? \"tr2-effect-webgl-permutations\"\n : \"tr2-effect-webgl\",\n targetBackend: \"webgl\",\n backendPackage: \"@carbonenginejs/runtime-resource/formats/webgl\",\n backendPackageVersion: PACKAGE_VERSION,\n generatedAt: values.generatedAt,\n sourcePath: values.source,\n outputPath: values.outputPath,\n sourceByteLength: sourceIdentity.byteLength,\n sourceMd5: sourceIdentity.md5,\n sourceSha256: sourceIdentity.sha256,\n sourceIdentity,\n translator: \"dxbc-js-emitter\",\n translatorVersion: PACKAGE_VERSION,\n language: \"es300\",\n flags: null,\n selection: values.selection,\n permutationMode: values.allPermutations ? \"all\" : \"selected\",\n defaultPermutationIndex: defaultPermutationIndex(effectRes.m_permutations),\n sourceEffectVersion: effectRes.m_version,\n ...(reflectionPackage ? {\n sourceBodyCoverage: \"all-unique\",\n backendBodyCoverage: values.allPermutations ? \"all\" : \"selected\",\n backendProgramCoverage: selectionCoversWholeEffect(values.selection)\n ? \"all-stages\"\n : \"filtered\"\n } : {}),\n permutationCount: variants.length,\n uniqueBodyCount: bodies.length,\n sourcePermutationCount: permutationGraph.variants.length,\n sourceUniqueBodyCount: permutationGraph.bodies.length,\n permutationGraph: {\n chunk: EFFECT_PERMUTATION_GRAPH_CHUNK,\n format: EFFECT_PERMUTATION_GRAPH_FORMAT,\n formatVersion: EFFECT_PERMUTATION_GRAPH_VERSION,\n sha256: sha256Utf8(`${JSON.stringify(permutationGraph)}\\n`),\n permutationCount: permutationGraph.variants.length,\n uniqueBodyCount: permutationGraph.bodies.length\n },\n ...(reflectionPackage\n ? { effectReflection: reflectionPackage.pointer }\n : {}),\n bodyStageCount: stages.length,\n uniqueShaderCount: translatedShaders.length,\n translatedShaderCount: translatedShaders.length - failedShaders.length - excludedShaders.length,\n excludedShaderCount: excludedShaders.length,\n failedShaderCount: failedShaders.length,\n failedBodyCount: failedBodies.length,\n expectedRasterPassCount: rasterCompleteness.expectedPassCount,\n completeRasterPassCount: rasterCompleteness.completePassCount,\n incompleteRasterPassCount: rasterCompleteness.incompletePasses.length,\n availableShaderCount,\n allowFailures: values.allowFailures,\n completeness: {\n packageValid: true,\n sourceComplete: reflectionPackage !== null,\n backendComplete: false,\n runtimeComplete: false\n }\n };\n const metadata = {\n generatedAt: values.generatedAt,\n sourcePath: values.source,\n effectResource: effectRes.toJSON(),\n permutations: effectRes.GetPermutationDescription(),\n variants,\n bodies: bodies.map((body) => ({\n key: body.key,\n bodyOffset: body.bodyOffset,\n bodySize: body.bodySize,\n firstVariantKey: body.firstVariantKey,\n error: body.error,\n manifest: body.manifest\n }))\n };\n const glsl = {\n format: \"CEWG_GLSL_SET\",\n formatVersion: 1,\n language: \"es300\",\n permutationMode: info.permutationMode,\n selection: values.selection,\n variants: variants.map((variant) => ({\n key: variant.key,\n permutationIndex: variant.permutationIndex,\n bodyKey: variant.bodyKey\n })),\n bodies: bodies.map((body) => ({\n key: body.key,\n error: body.error,\n stages: body.stages\n })),\n stages,\n shaders: translatedShaders\n };\n const qualification = qualifyEffectPackage({\n info,\n metadata,\n glsl,\n failedShaders,\n excludedShaders,\n failedBodies,\n rasterCompleteness,\n availableShaderCount\n });\n if (!qualification.ok && !values.allowFailures)\n {\n throw new Error(\n `CEWG target is incomplete; output was not built. ${qualification.errors.join(\"; \")}`\n );\n }\n\n const chunks = [\n [ \"INFO\", info ],\n [ \"META\", metadata ],\n [ EFFECT_PERMUTATION_GRAPH_CHUNK, permutationGraph ],\n ...(reflectionPackage\n ? [\n [ EFFECT_REFLECTION_CHUNK, reflectionPackage.reflection ],\n [ EFFECT_REFLECTION_BLOB_CHUNK, reflectionPackage.blobBytes ]\n ]\n : []),\n [ \"GLSL\", glsl ]\n ];\n\n if (values.includeSourceEffect)\n {\n chunks.push([ \"TR2E\", values.sourceBytes ]);\n }\n\n const bytes = buildPackage(chunks);\n const inspection = inspectWithValues(bytes, {\n emit: \"json\",\n source: values.source\n });\n\n return Object.freeze({\n bytes,\n info: Object.freeze(info),\n metadata: Object.freeze(metadata),\n permutationGraph,\n reflection: reflectionPackage?.reflection ?? null,\n reflectionBlobs: reflectionPackage?.blobBytes ?? null,\n glsl: Object.freeze(glsl),\n inspection: Object.freeze(inspection),\n qualification: Object.freeze(qualification)\n });\n}\n\nfunction normalizeOptions(input, options)\n{\n if (!options || typeof options !== \"object\" || Array.isArray(options))\n {\n throw new TypeError(\"CEWG effect options must be an object\");\n }\n\n const sourceBytes = toBytes(input);\n const source = String(options.source ?? \"memory\").trim() || \"memory\";\n const selection = Object.freeze({\n technique: options.technique === undefined || options.technique === null\n ? null\n : String(options.technique),\n pass: options.pass === undefined || options.pass === null ? null : Number(options.pass),\n stage: options.stage === undefined || options.stage === null\n ? null\n : String(options.stage).toLowerCase()\n });\n\n if (selection.pass !== null\n && (!Number.isSafeInteger(selection.pass) || selection.pass < 0))\n {\n throw new TypeError(\"CEWG effect pass must be a non-negative integer or null\");\n }\n\n if (selection.stage !== null\n && ![ \"vertex\", \"pixel\", \"compute\" ].includes(selection.stage))\n {\n throw new TypeError(`Unsupported CEWG effect stage: ${selection.stage}`);\n }\n\n if (options.emitterOptions !== undefined\n && (!options.emitterOptions || typeof options.emitterOptions !== \"object\"\n || Array.isArray(options.emitterOptions)))\n {\n throw new TypeError(\"CEWG emitterOptions must be an object\");\n }\n\n return {\n sourceBytes,\n source,\n outputPath: normalizeOptionalString(options.outputPath, \"CEWG outputPath\"),\n sourceIdentity: options.sourceIdentity ?? null,\n generatedAt: options.generatedAt === undefined || options.generatedAt === null\n ? null\n : new Date(options.generatedAt).toISOString(),\n allPermutations: options.allPermutations !== false,\n allowFailures: options.allowFailures === true,\n includeSourceEffect: options.includeSourceEffect === true,\n selection,\n emitterOptions: { ...(options.emitterOptions ?? {}) }\n };\n}\n\nfunction normalizeOptionalString(value, name)\n{\n if (value === undefined || value === null)\n {\n return null;\n }\n\n const result = String(value).trim();\n\n if (!result)\n {\n throw new TypeError(`${name} must be a non-empty string or null`);\n }\n\n return result;\n}\n\nfunction selectionCoversWholeEffect(selection)\n{\n return selection.technique === null\n && selection.pass === null\n && selection.stage === null;\n}\n\nfunction toBytes(input)\n{\n if (input instanceof Uint8Array)\n {\n return input;\n }\n\n if (input instanceof ArrayBuffer)\n {\n return new Uint8Array(input);\n }\n\n if (ArrayBuffer.isView(input))\n {\n return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\n }\n\n throw new TypeError(\"CEWG effect input must be Uint8Array, ArrayBuffer, or ArrayBufferView bytes\");\n}\n\nfunction defaultPermutationIndex(permutations)\n{\n let multiplier = 1;\n let index = 0;\n\n for (const permutation of permutations)\n {\n index += (permutation.defaultOption || 0) * multiplier;\n multiplier *= permutation.options.length || 1;\n }\n\n return index;\n}\n\nfunction bodyKey(record)\n{\n return `body_${record.offset}_${record.size}`;\n}\n\nfunction decodePermutationOptions(permutations, permutationIndex)\n{\n let remaining = permutationIndex;\n\n return permutations.map((permutation) =>\n {\n const optionCount = permutation.options.length || 1;\n const optionIndex = optionCount ? remaining % optionCount : 0;\n\n remaining = Math.floor(remaining / optionCount);\n return {\n name: permutation.name,\n value: permutation.options[optionIndex] || \"\",\n optionIndex,\n defaultOption: permutation.defaultOption\n };\n });\n}\n\nfunction toShaderOptions(options)\n{\n return options.map((option) => ({ name: option.name, value: option.value }));\n}\n\nfunction buildExportVariants(effectRes, allPermutations)\n{\n if (allPermutations)\n {\n return effectRes.m_offsets.map((record, variantIndex) =>\n {\n const permutationIndex = Number.isInteger(record.index)\n ? record.index\n : variantIndex;\n\n return {\n key: `variant_${permutationIndex}`,\n variantIndex,\n permutationIndex,\n tableIndex: variantIndex,\n bodyKey: bodyKey(record),\n bodyOffset: record.offset,\n bodySize: record.size,\n options: decodePermutationOptions(\n effectRes.m_permutations,\n permutationIndex\n ),\n tableIndexMatchesPermutationIndex:\n variantIndex === permutationIndex\n };\n });\n }\n\n const permutationIndex = defaultPermutationIndex(effectRes.m_permutations);\n const record = effectRes.m_offsets[permutationIndex];\n\n if (!record)\n {\n throw new Error(`Default permutation index ${permutationIndex} is not present`);\n }\n\n return [ {\n key: `variant_${permutationIndex}`,\n variantIndex: permutationIndex,\n permutationIndex,\n tableIndex: permutationIndex,\n bodyKey: bodyKey(record),\n bodyOffset: record.offset,\n bodySize: record.size,\n options: decodePermutationOptions(effectRes.m_permutations, permutationIndex),\n tableIndexMatchesPermutationIndex: Number.isInteger(record.index)\n ? record.index === permutationIndex\n : true\n } ];\n}\n\nfunction collectStages(effectDescription, selection)\n{\n const stages = [];\n const errors = [];\n\n for (const technique of effectDescription.techniques ?? [])\n {\n if (selection.technique && technique.name !== selection.technique)\n {\n continue;\n }\n\n if (!selection.stage && !Number.isInteger(selection.pass)\n && technique.passes.length === 0)\n {\n errors.push(`${technique.name} declares no passes`);\n }\n\n for (let passIndex = 0; passIndex < technique.passes.length; passIndex++)\n {\n if (Number.isInteger(selection.pass) && passIndex !== selection.pass)\n {\n continue;\n }\n\n const pass = technique.passes[passIndex];\n let declaredStageCount = 0;\n\n for (let stageType = 0;\n stageType < HlslRenderContextEnum.SHADER_TYPE_COUNT;\n stageType++)\n {\n const stageInput = pass.stageInputs[stageType];\n\n if (!stageInput?.m_exists)\n {\n continue;\n }\n\n declaredStageCount++;\n const stageName = hlslShaderStageName(stageType);\n\n if (selection.stage && stageName !== selection.stage)\n {\n continue;\n }\n\n if (!stageInput.cjsShaderBytecode)\n {\n errors.push(\n `${technique.name}.pass${passIndex}.${stageName} declares shader handle `\n + `${stageInput.m_shader ?? \"unknown\"} but has no shader bytecode`\n );\n continue;\n }\n\n stages.push({\n key: `${technique.name}.pass${passIndex}.${stageName}`,\n techniqueName: technique.name,\n passIndex,\n stageType,\n stageName,\n shaderHandle: stageInput.m_shader,\n bytecode: stageInput.cjsShaderBytecode,\n pipelineInputs: cloneJson(stageInput.signature?.pipelineInputs ?? []),\n registers: cloneJson(stageInput.signature?.registers ?? []),\n resources: mapToJson(stageInput.resources),\n samplers: mapToJson(stageInput.samplers),\n uavs: mapToJson(stageInput.uavs),\n constants: cloneJson(stageInput.constants ?? [])\n });\n }\n\n if (!selection.stage && declaredStageCount === 0)\n {\n errors.push(`${technique.name}.pass${passIndex} declares no shader stages`);\n }\n }\n }\n\n return { stages, errors };\n}\n\nfunction translateStages(shaderMap, stageMap, values)\n{\n const emitInto = (record, pairVaryings) =>\n {\n try\n {\n const result = emitGlslWithOptions(record.bytes, {\n ...values.emitterOptions,\n source: `${values.source}#${record.firstStageKey}`,\n ...(pairVaryings?.length ? { pairVaryings } : {})\n });\n const stageInterface = normalizeBitangentStageInterface(\n result,\n record\n );\n\n record.emit = {\n ...result,\n source: stageInterface.source,\n inputs: stageInterface.inputs\n };\n record.source = stageInterface.source;\n record.bindings = result.bindings;\n record.stageInputs = stageInterface.inputs;\n record.stageOutputs = result.outputs;\n record.emitWarnings = result.warnings;\n record.translator = \"dxbc-js-emitter\";\n record.hlsl2webgl = { ok: true, mode: \"js-emitter\" };\n\n if (result.stageName === \"compute\")\n {\n record.computeFragment = result.computeFragment;\n }\n\n const issue = validateStageSourceShape(record);\n\n if (issue)\n {\n record.hlsl2webgl = { ok: false, validationError: issue };\n record.source = null;\n }\n }\n catch (error)\n {\n const message = error?.message || String(error);\n\n record.hlsl2webgl = {\n ok: false,\n error: message,\n details: error?.details ?? null\n };\n\n if (/not supported|No GLSL lowering|unimplementable/iu.test(message))\n {\n record.excluded = {\n reason: message,\n ...(error?.details?.opcodeName\n ? { opcodeName: error.details.opcodeName }\n : {}),\n ...(error?.details?.dimensionName\n ? { dimensionName: error.details.dimensionName }\n : {})\n };\n }\n }\n };\n\n for (const record of shaderMap.values())\n {\n if (record.stageName !== \"vertex\")\n {\n emitInto(record, null);\n }\n }\n\n const pixelVaryingsByPass = new Map();\n\n for (const stage of stageMap.values())\n {\n if (stage.stageName !== \"pixel\")\n {\n continue;\n }\n\n const record = shaderMap.get(stage.shaderKey);\n\n if (!record?.emit)\n {\n continue;\n }\n\n pixelVaryingsByPass.set(\n `${stage.bodyKey}|${stage.techniqueName}|${stage.passIndex}`,\n record.emit.inputs\n .filter((input) => typeof input.name === \"string\"\n && input.name.startsWith(\"vs_r\"))\n .map((input) => input.register)\n .sort((left, right) => left - right)\n );\n }\n\n for (const stage of stageMap.values())\n {\n if (stage.stageName !== \"vertex\")\n {\n continue;\n }\n\n const record = shaderMap.get(stage.shaderKey);\n const varyings = pixelVaryingsByPass.get(\n `${stage.bodyKey}|${stage.techniqueName}|${stage.passIndex}`\n ) ?? [];\n\n if (record)\n {\n record.pairVaryings = varyings;\n emitInto(record, varyings);\n }\n }\n}\n\nfunction cloneJson(value)\n{\n if (value === undefined || value === null)\n {\n return value;\n }\n\n return JSON.parse(JSON.stringify(value));\n}\n\nfunction mapToJson(map)\n{\n if (!(map instanceof Map))\n {\n return [];\n }\n\n return Array.from(map.entries()).map(([ registerIndex, value ]) => ({\n registerIndex,\n ...cloneJson(value)\n }));\n}\n\nfunction buildStageContract(stage)\n{\n const pipelineInputs = cloneJson(stage.pipelineInputs ?? []);\n const inputSemantics = pipelineInputs.map((input) => ({\n semantic: `${input.usageName || `USAGE_${input.usage}`}${input.usageIndex || \"\"}`,\n usage: input.usage,\n usageName: input.usageName,\n usageIndex: input.usageIndex,\n registerIndex: input.registerIndex,\n usedMask: input.usedMask,\n type: input.type,\n dimension: input.dimension\n }));\n const inputNames = new Set(inputSemantics.map((input) => input.usageName));\n const hasNormal = inputNames.has(\"NORMAL\");\n const hasTangent = inputNames.has(\"TANGENT\");\n const hasBinormal = inputNames.has(\"BINORMAL\") || inputNames.has(\"BITANGENT\");\n const hasBlendIndices = inputNames.has(\"BLENDINDICES\")\n || inputNames.has(\"BLENDINDICE\");\n let tangentContract = \"none\";\n\n if (hasNormal && hasTangent && hasBinormal)\n {\n tangentContract = \"split_tbn\";\n }\n else if (!hasNormal && hasTangent)\n {\n tangentContract = \"packed_tangent_or_tangent_only\";\n }\n else if (hasNormal || hasTangent || hasBinormal)\n {\n tangentContract = \"partial_tbn\";\n }\n\n const resources = cloneJson(stage.resources ?? []);\n const samplers = cloneJson(stage.samplers ?? []);\n const uavs = cloneJson(stage.uavs ?? []);\n const constants = cloneJson(stage.constants ?? []);\n const resourceNames = resources.map((entry) => entry.name).filter(Boolean);\n\n return {\n stageName: stage.stageName,\n stageType: stage.stageType,\n vertex: stage.stageName === \"vertex\" ? {\n inputs: inputSemantics,\n tangentContract,\n requiresSplitTbn: tangentContract === \"split_tbn\",\n requiresPackedTangent: tangentContract === \"packed_tangent_or_tangent_only\",\n requiresSkinning: hasBlendIndices || resourceNames.includes(\"BoneTransforms\"),\n hasBlendIndices\n } : null,\n texturePacking: classifyTexturePacking(resourceNames),\n constantBuffers: (stage.registers ?? [])\n .filter((entry) => entry.registerType === 0)\n .map((entry) => ({\n registerIndex: entry.registerIndex,\n registerSpace: entry.registerSpace,\n registerCount: entry.registerCount,\n arrayCount: entry.arrayCount,\n dynamic: Boolean(entry.dynamic)\n })),\n resources,\n samplers,\n uavs,\n constants\n };\n}\n\nfunction classifyTexturePacking(names)\n{\n const values = new Set(names);\n\n if ([ \"NoMap\", \"PmdgMap\", \"ArMap\" ].some((name) => values.has(name)))\n {\n return \"packed_textures\";\n }\n\n if ([ \"NormalMap\", \"RoughnessMap\", \"MaterialMap\", \"AlbedoMap\",\n \"AoMap\", \"PaintMaskMap\" ].some((name) => values.has(name)))\n {\n return \"unpacked_textures\";\n }\n\n return \"unknown\";\n}\n\nfunction mergeShaderContracts(contracts)\n{\n const first = contracts?.[0]?.contract ?? null;\n\n if (!first)\n {\n return null;\n }\n\n return {\n stageName: first.stageName,\n stageType: first.stageType,\n vertex: first.vertex ? cloneJson(first.vertex) : null,\n texturePacking: first.texturePacking,\n constantBuffers: cloneJson(first.constantBuffers ?? []),\n resourceNames: (first.resources ?? []).map((entry) => entry.name).filter(Boolean),\n samplerNames: (first.samplers ?? []).map((entry) => entry.name).filter(Boolean),\n sharedByStageCount: contracts.length\n };\n}\n\nfunction normalizeBitangentStageInterface(result, shaderRecord)\n{\n if (shaderRecord?.stageName !== \"vertex\")\n {\n return {\n source: result.source,\n inputs: result.inputs\n };\n }\n\n const bitangentRegisters = new Set((shaderRecord.contracts ?? [])\n .flatMap((entry) => entry.contract?.vertex?.inputs ?? [])\n .filter((input) => input.usageName === \"BITANGENT\")\n .map((input) => input.registerIndex));\n let source = result.source;\n const inputs = result.inputs.map((input) =>\n {\n if (!bitangentRegisters.has(input.register)\n || input.semanticName !== \"BINORMAL\")\n {\n return input;\n }\n const name = `in_BITANGENT${input.semanticIndex}`;\n source = source.replaceAll(input.name, name);\n return {\n ...input,\n name,\n semanticName: \"BITANGENT\"\n };\n });\n return { source, inputs };\n}\n\nfunction validateStageSourceShape(record)\n{\n const source = record?.source ?? \"\";\n\n if (!source)\n {\n return null;\n }\n\n const hasVertexOutput = /\\bgl_Position\\b/u.test(source);\n const hasVertexInterface = /\\bin\\s+(?:lowp|mediump|highp)?\\s*\\w+\\s+attr\\d+\\b/u.test(source)\n || /\\bout\\s+(?:lowp|mediump|highp)?\\s*\\w+\\s+vs_TEXCOORD\\d+\\b/u.test(source)\n || /\\bin_[A-Z]+[0-9]+\\b/u.test(source);\n const hasFragmentOutput = /\\bout\\s+(?:lowp|mediump|highp)?\\s*vec4\\s+SV_Target\\d+\\b/u.test(source)\n || /\\bgl_FragColor\\b/u.test(source);\n\n if (record.stageName === \"vertex\" && !hasVertexOutput)\n {\n return \"vertex stage source does not write gl_Position\";\n }\n\n if (record.stageName === \"pixel\"\n && (hasVertexOutput || hasVertexInterface) && !hasFragmentOutput)\n {\n return \"pixel stage source looks like vertex GLSL\";\n }\n\n if (record.stageName === \"compute\" && !/\\bcewgUav\\d+(_s\\d+)?\\b/u.test(source))\n {\n return \"compute stage source does not write any cewgUav output\";\n }\n\n return null;\n}\n\nfunction inspectRasterCompleteness(stages, shaders)\n{\n const shaderMap = new Map(shaders.map((shader) => [ shader.key, shader ]));\n const groups = new Map();\n\n for (const stage of stages)\n {\n if (![ \"vertex\", \"pixel\" ].includes(stage.stageName))\n {\n continue;\n }\n\n const key = `${stage.bodyKey}:${stage.techniqueName}:${stage.passIndex}`;\n const group = groups.get(key) ?? {\n key,\n bodyKey: stage.bodyKey,\n techniqueName: stage.techniqueName,\n passIndex: stage.passIndex,\n vertex: null,\n pixel: null,\n duplicateStages: []\n };\n\n if (group[stage.stageName])\n {\n group.duplicateStages.push(stage.stageName);\n }\n\n group[stage.stageName] = stage;\n groups.set(key, group);\n }\n\n const incompletePasses = [];\n let completePassCount = 0;\n\n for (const group of groups.values())\n {\n const missingStages = [];\n const unavailableStages = [];\n\n for (const stageName of [ \"vertex\", \"pixel\" ])\n {\n const stage = group[stageName];\n\n if (!stage)\n {\n missingStages.push(stageName);\n continue;\n }\n\n const shader = shaderMap.get(stage.shaderKey);\n\n if (!shader?.hlsl2webgl?.ok || !shader.source)\n {\n unavailableStages.push({\n stageName,\n stageKey: stage.key,\n shaderKey: stage.shaderKey,\n reason: shader?.hlsl2webgl?.validationError\n || shader?.hlsl2webgl?.error\n || shader?.excluded?.reason\n || \"translated source is unavailable\"\n });\n }\n }\n\n if (!missingStages.length && !unavailableStages.length\n && !group.duplicateStages.length)\n {\n completePassCount++;\n }\n else\n {\n incompletePasses.push({\n ...group,\n missingStages,\n unavailableStages,\n duplicateStages: [ ...new Set(group.duplicateStages) ].sort()\n });\n }\n }\n\n return {\n expectedPassCount: groups.size,\n completePassCount,\n incompletePasses\n };\n}\n\nfunction normalizeSourceIdentity(values)\n{\n const identity = values.sourceIdentity;\n\n if (identity !== null\n && (!identity || typeof identity !== \"object\" || Array.isArray(identity)))\n {\n throw new TypeError(\"CEWG sourceIdentity must be an object\");\n }\n\n const sha256 = sha256Bytes(values.sourceBytes);\n if (identity?.sha256 !== undefined && identity?.sha256 !== null\n && identity.sha256 !== sha256)\n {\n throw new Error(\n \"CEWG sourceIdentity.sha256 does not match the exact effect input bytes\"\n );\n }\n\n return Object.freeze({\n filePath: identity?.filePath ?? values.source,\n logicalPath: identity?.logicalPath ?? values.source,\n game: identity?.game ?? null,\n client: identity?.client ?? null,\n build: identity?.build === undefined || identity?.build === null\n ? null\n : String(identity.build),\n byteLength: values.sourceBytes.byteLength,\n md5: identity?.md5 ?? null,\n sha256\n });\n}\n\nfunction qualifyEffectPackage({\n info,\n metadata,\n glsl,\n failedShaders,\n excludedShaders,\n failedBodies,\n rasterCompleteness,\n availableShaderCount\n})\n{\n const errors = [];\n\n if (info.format !== \"CEWG\" || glsl.format !== \"CEWG_GLSL_SET\")\n {\n errors.push(\"invalid CEWG package envelope\");\n }\n\n if (!Array.isArray(metadata.variants) || !Array.isArray(glsl.shaders))\n {\n errors.push(\"missing CEWG graph arrays\");\n }\n\n if (failedShaders.length)\n {\n errors.push(`${failedShaders.length} shader translation(s) failed`);\n }\n\n if (excludedShaders.length)\n {\n errors.push(`${excludedShaders.length} shader translation(s) are unsupported`);\n }\n\n if (failedBodies.length)\n {\n errors.push(`${failedBodies.length} effect body/bodies failed`);\n }\n\n if (rasterCompleteness.incompletePasses.length)\n {\n errors.push(`${rasterCompleteness.incompletePasses.length} raster pass(es) are incomplete`);\n }\n\n if (!availableShaderCount)\n {\n errors.push(\"no translated shaders are available\");\n }\n\n return {\n ok: errors.length === 0,\n level: errors.length ? \"diagnostic\" : \"structural\",\n errors: Object.freeze(errors),\n incompletePasses: Object.freeze(rasterCompleteness.incompletePasses)\n };\n}\n"],"names":["PACKAGE_VERSION","buildEffectPackage","input","options","values","normalizeOptions","effectRes","CjsHlslFormat","read","sourceBytes","emit","OUTPUT_RAW","source","IsGood","loadError","Error","sourceIdentity","normalizeSourceIdentity","m_version","permutationGraph","buildEffectPermutationGraph","reflectionPackage","buildCompleteEffectReflection","sourcePath","variants","buildExportVariants","allPermutations","bodyMap","Map","stageMap","shaderMap","variant","has","bodyKey","shader","GetShader","toShaderOptions","set","key","bodyOffset","bodySize","firstVariantKey","error","manifest","stages","effectDescription","GetEffectDescription","HlslEffectBindingManifest","fromEffectDescription","collection","collectStages","selection","body","errors","length","join","toJSON","stage","stageKey","shaderKey","contract","buildStageContract","stageRecord","localKey","techniqueName","passIndex","stageType","stageName","shaderHandle","shaderSize","bytecode","stringTableOffset","push","firstStageKey","firstBodyKey","bytes","contracts","translateStages","bodies","Array","from","translatedShaders","map","record","output","primaryContract","mergeShaderContracts","failedShaders","filter","hlsl2webgl","ok","excluded","excludedShaders","failedBodies","rasterCompleteness","inspectRasterCompleteness","availableShaderCount","info","format","formatVersion","EFFECT_INFO_VERSION","packageKind","targetBackend","backendPackage","backendPackageVersion","generatedAt","outputPath","sourceByteLength","byteLength","sourceMd5","md5","sourceSha256","sha256","translator","translatorVersion","language","flags","permutationMode","defaultPermutationIndex","m_permutations","sourceEffectVersion","sourceBodyCoverage","backendBodyCoverage","backendProgramCoverage","selectionCoversWholeEffect","permutationCount","uniqueBodyCount","sourcePermutationCount","sourceUniqueBodyCount","chunk","EFFECT_PERMUTATION_GRAPH_CHUNK","EFFECT_PERMUTATION_GRAPH_FORMAT","EFFECT_PERMUTATION_GRAPH_VERSION","sha256Utf8","JSON","stringify","effectReflection","pointer","bodyStageCount","uniqueShaderCount","translatedShaderCount","excludedShaderCount","failedShaderCount","failedBodyCount","expectedRasterPassCount","expectedPassCount","completeRasterPassCount","completePassCount","incompleteRasterPassCount","incompletePasses","allowFailures","completeness","packageValid","sourceComplete","backendComplete","runtimeComplete","metadata","effectResource","permutations","GetPermutationDescription","glsl","permutationIndex","shaders","qualification","qualifyEffectPackage","chunks","EFFECT_REFLECTION_CHUNK","reflection","EFFECT_REFLECTION_BLOB_CHUNK","blobBytes","includeSourceEffect","buildPackage","inspection","inspectWithValues","Object","freeze","reflectionBlobs","isArray","TypeError","toBytes","String","trim","technique","undefined","pass","Number","toLowerCase","isSafeInteger","includes","emitterOptions","normalizeOptionalString","Date","toISOString","value","name","result","Uint8Array","ArrayBuffer","isView","buffer","byteOffset","multiplier","index","permutation","defaultOption","offset","size","decodePermutationOptions","remaining","optionCount","optionIndex","Math","floor","option","m_offsets","variantIndex","isInteger","tableIndex","tableIndexMatchesPermutationIndex","techniques","passes","declaredStageCount","HlslRenderContextEnum","SHADER_TYPE_COUNT","stageInput","stageInputs","m_exists","hlslShaderStageName","cjsShaderBytecode","m_shader","pipelineInputs","cloneJson","signature","registers","resources","mapToJson","samplers","uavs","constants","emitInto","pairVaryings","emitGlslWithOptions","stageInterface","normalizeBitangentStageInterface","inputs","bindings","stageOutputs","outputs","emitWarnings","warnings","mode","computeFragment","issue","validateStageSourceShape","validationError","message","details","test","reason","opcodeName","dimensionName","pixelVaryingsByPass","get","startsWith","register","sort","left","right","varyings","parse","entries","registerIndex","inputSemantics","semantic","usageName","usage","usageIndex","usedMask","type","dimension","inputNames","Set","hasNormal","hasTangent","hasBinormal","hasBlendIndices","tangentContract","resourceNames","entry","Boolean","vertex","requiresSplitTbn","requiresPackedTangent","requiresSkinning","texturePacking","classifyTexturePacking","constantBuffers","registerType","registerSpace","registerCount","arrayCount","dynamic","names","some","first","samplerNames","sharedByStageCount","shaderRecord","bitangentRegisters","flatMap","semanticName","semanticIndex","replaceAll","hasVertexOutput","hasVertexInterface","hasFragmentOutput","groups","group","pixel","duplicateStages","missingStages","unavailableStages","identity","sha256Bytes","filePath","logicalPath","game","client","build","level"],"mappings":"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"}
|
|
@@ -36,7 +36,7 @@ function validateEffectPackageEnvelope(pkg) {
|
|
|
36
36
|
if (info.formatVersion !== EFFECT_INFO_VERSION) {
|
|
37
37
|
throw new Error(`CEWG INFO schema must be version ${EFFECT_INFO_VERSION}`);
|
|
38
38
|
}
|
|
39
|
-
if (info.targetBackend !== "webgl" || info.backendPackage !== "@carbonenginejs/
|
|
39
|
+
if (info.targetBackend !== "webgl" || info.backendPackage !== "@carbonenginejs/runtime-resource/formats/webgl" || !SEMANTIC_VERSION.test(info.backendPackageVersion) || info.translator !== "dxbc-js-emitter" || !SEMANTIC_VERSION.test(info.translatorVersion)) {
|
|
40
40
|
throw new Error("CEWG INFO producer provenance is malformed");
|
|
41
41
|
}
|
|
42
42
|
const sourceIdentity = validateSourceIdentity(info.sourceIdentity);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"effectPackageValidation.js","sources":["../../../../../src/formats/webgl/core/effectPackageValidation.js"],"sourcesContent":["import {\n EFFECT_PERMUTATION_GRAPH_CHUNK,\n EFFECT_PERMUTATION_GRAPH_FORMAT,\n EFFECT_PERMUTATION_GRAPH_VERSION,\n validateEffectPermutationGraph\n} from \"../../../format/effect/effectPermutationGraph.js\";\nimport {\n EFFECT_REFLECTION_BLOB_CHUNK,\n EFFECT_REFLECTION_CHUNK,\n effectReflectionForPermutation,\n validateEffectReflectionPointer\n} from \"../../../format/effect/effectReflectionPackage.js\";\nimport { inspectCewgRasterCompleteness } from \"./cewgCompleteness.js\";\nimport { markEffectReflectionValidated } from \"./cewg/CewgPackage.js\";\nimport { sha256Bytes } from \"../../../format/effect/sha256.js\";\n\nexport const EFFECT_INFO_VERSION = 3;\n\nconst EFFECT_PACKAGE_KINDS = new Set([\n \"tr2-effect-webgl\",\n \"tr2-effect-webgl-permutations\"\n]);\nconst REQUIRED_EFFECT_CHUNKS = Object.freeze([ \"INFO\", \"META\", \"GLSL\" ]);\nconst SEMANTIC_VERSION = /^[0-9]+\\.[0-9]+\\.[0-9]+(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?$/u;\nconst SHA256 = /^[0-9a-f]{64}$/u;\n\n/**\n * Validates the canonical CEWG effect envelope after the binary container has\n * been decoded. Generic CEWG containers without a recognized package kind\n * remain readable.\n *\n * @param {object} pkg Loaded CEWG package.\n * @returns {boolean} True when the package is generic, legacy, or valid.\n */\nexport function validateEffectPackageEnvelope(pkg)\n{\n if (!pkg.GetChunk(\"INFO\")) return true;\n\n const info = requireRecord(pkg.GetJson(\"INFO\"), \"CEWG INFO\");\n if (!EFFECT_PACKAGE_KINDS.has(info.packageKind)) return true;\n\n for (const tag of REQUIRED_EFFECT_CHUNKS)\n {\n if (!pkg.GetChunk(tag))\n {\n throw new Error(`CEWG effect package requires ${tag}`);\n }\n }\n if (info.format !== \"CEWG\")\n {\n throw new Error(\"CEWG INFO format is malformed\");\n }\n if (info.formatVersion === 1)\n {\n return true;\n }\n if (info.formatVersion !== EFFECT_INFO_VERSION)\n {\n throw new Error(`CEWG INFO schema must be version ${EFFECT_INFO_VERSION}`);\n }\n if (info.targetBackend !== \"webgl\"\n || info.backendPackage !== \"@carbonenginejs/format-webgl\"\n || !SEMANTIC_VERSION.test(info.backendPackageVersion)\n || info.translator !== \"dxbc-js-emitter\"\n || !SEMANTIC_VERSION.test(info.translatorVersion))\n {\n throw new Error(\"CEWG INFO producer provenance is malformed\");\n }\n\n const sourceIdentity = validateSourceIdentity(info.sourceIdentity);\n if (info.sourceByteLength !== sourceIdentity.byteLength\n || info.sourceSha256 !== sourceIdentity.sha256)\n {\n throw new Error(\"CEWG INFO source identity fields disagree\");\n }\n requireString(info.sourcePath, \"CEWG INFO.sourcePath\");\n requireUint(info.defaultPermutationIndex, \"CEWG INFO.defaultPermutationIndex\");\n requireUint(info.sourceEffectVersion, \"CEWG INFO.sourceEffectVersion\");\n const expectedMode = info.packageKind === \"tr2-effect-webgl-permutations\"\n ? \"all\"\n : \"selected\";\n if (info.permutationMode !== expectedMode)\n {\n throw new Error(\"CEWG INFO package kind and permutation mode disagree\");\n }\n\n const graphPointer = requireRecord(\n info.permutationGraph,\n \"CEWG INFO.permutationGraph\"\n );\n if (graphPointer.chunk !== EFFECT_PERMUTATION_GRAPH_CHUNK\n || graphPointer.format !== EFFECT_PERMUTATION_GRAPH_FORMAT\n || graphPointer.formatVersion !== EFFECT_PERMUTATION_GRAPH_VERSION\n || !SHA256.test(graphPointer.sha256))\n {\n throw new Error(\"CEWG INFO.permutationGraph is malformed\");\n }\n const graphChunk = pkg.GetChunk(EFFECT_PERMUTATION_GRAPH_CHUNK);\n if (!graphChunk)\n {\n throw new Error(`CEWG INFO.permutationGraph requires ${EFFECT_PERMUTATION_GRAPH_CHUNK}`);\n }\n if (sha256Bytes(graphChunk.bytes) !== graphPointer.sha256)\n {\n throw new Error(\"CEWG INFO permutation-graph digest disagrees with PGRF\");\n }\n const graph = requireRecord(pkg.GetJson(EFFECT_PERMUTATION_GRAPH_CHUNK), \"CEWG PGRF\");\n const graphCounts = validateEffectPermutationGraph(graph, {\n sourceByteLength: sourceIdentity.byteLength\n });\n if (requireUint(\n graphPointer.permutationCount,\n \"CEWG INFO.permutationGraph.permutationCount\"\n ) !== graphCounts.permutationCount\n || requireUint(\n graphPointer.uniqueBodyCount,\n \"CEWG INFO.permutationGraph.uniqueBodyCount\"\n ) !== graphCounts.uniqueBodyCount\n || info.sourcePermutationCount !== graphCounts.permutationCount\n || info.sourceUniqueBodyCount !== graphCounts.uniqueBodyCount)\n {\n throw new Error(\"CEWG INFO permutation-graph counts disagree with PGRF\");\n }\n if (info.defaultPermutationIndex >= graphCounts.permutationCount)\n {\n throw new Error(\"CEWG default permutation index is absent from PGRF\");\n }\n\n const metadata = requireRecord(pkg.GetJson(\"META\"), \"CEWG META\");\n const glsl = requireRecord(pkg.GetJson(\"GLSL\"), \"CEWG GLSL\");\n validateBackendGraph(\n info,\n metadata,\n glsl,\n graph\n );\n if (metadata.sourcePath !== info.sourcePath)\n {\n throw new Error(\"CEWG META source path disagrees with INFO\");\n }\n validateCompleteness(info);\n\n if (info.formatVersion === 2)\n {\n if (info.sourceEffectVersion < 8 || info.sourceEffectVersion > 14)\n {\n throw new Error(\"CEWG INFO v2 source effect version must be 8-14\");\n }\n if (Object.prototype.hasOwnProperty.call(info, \"effectReflection\")\n || pkg.GetChunk(EFFECT_REFLECTION_CHUNK)\n || pkg.GetChunk(EFFECT_REFLECTION_BLOB_CHUNK))\n {\n throw new Error(\"CEWG INFO v2 cannot contain complete effect reflection\");\n }\n return true;\n }\n\n const reflectionChunk = pkg.GetChunk(EFFECT_REFLECTION_CHUNK);\n const blobChunk = pkg.GetChunk(EFFECT_REFLECTION_BLOB_CHUNK);\n if (!reflectionChunk || !blobChunk)\n {\n throw new Error(\"CEWG INFO v3 requires RFLX and RBLB\");\n }\n const reflection = requireRecord(\n pkg.GetJson(EFFECT_REFLECTION_CHUNK),\n \"CEWG RFLX\"\n );\n if (info.sourceEffectVersion !== 15\n || reflection.source?.effectVersion !== info.sourceEffectVersion)\n {\n throw new Error(\"CEWG INFO v3 source effect version disagrees with RFLX\");\n }\n validateEffectReflectionPointer(\n requireRecord(info.effectReflection, \"CEWG INFO.effectReflection\"),\n reflection,\n blobChunk.bytes,\n {\n permutationGraph: graph,\n sourceIdentity,\n sourcePath: info.sourcePath,\n reflectionBytes: reflectionChunk.bytes\n }\n );\n validateReflectionBackendGraph(\n reflection,\n graph,\n metadata,\n glsl\n );\n markEffectReflectionValidated(pkg);\n return true;\n}\n\nfunction validateReflectionBackendGraph(reflection, graph, metadata, glsl)\n{\n const metadataBodies = new Map(metadata.bodies.map((body) => [\n body.key,\n body\n ]));\n const checkedBodies = new Set();\n for (const variant of metadata.variants)\n {\n if (checkedBodies.has(variant.bodyKey)) continue;\n checkedBodies.add(variant.bodyKey);\n const metadataBody = metadataBodies.get(variant.bodyKey);\n const reflected = effectReflectionForPermutation(\n reflection,\n graph,\n variant.permutationIndex\n );\n const manifest = requireRecord(\n metadataBody?.manifest,\n `CEWG META body ${variant.bodyKey} manifest`\n );\n const reflectedPasses = [];\n const reflectedStages = [];\n for (const technique of requireArray(\n reflected.techniques,\n `CEWG RFLX body ${variant.bodyKey} techniques`\n ))\n {\n for (const [ passIndex, pass ] of requireArray(\n technique.passes,\n `CEWG RFLX technique ${technique.name} passes`\n ).entries())\n {\n reflectedPasses.push({\n techniqueName: technique.name,\n passIndex,\n states: pass.renderStates\n });\n for (const stage of requireArray(\n pass.stages,\n `CEWG RFLX ${technique.name}.pass${passIndex} stages`\n ))\n {\n reflectedStages.push({\n techniqueName: technique.name,\n passIndex,\n stage\n });\n }\n }\n }\n const manifestPasses = requireArray(\n manifest.passes,\n `CEWG META body ${variant.bodyKey} passes`\n );\n const manifestStages = requireArray(\n manifest.stages,\n `CEWG META body ${variant.bodyKey} stages`\n );\n if (manifestPasses.length !== reflectedPasses.length\n || manifestStages.length !== reflectedStages.length)\n {\n throw new Error(\n `CEWG META body ${variant.bodyKey} disagrees with RFLX pass/stage counts`\n );\n }\n for (const reflectedPass of reflectedPasses)\n {\n const manifestPass = manifestPasses.find((entry) =>\n entry.techniqueName === reflectedPass.techniqueName\n && entry.passIndex === reflectedPass.passIndex);\n if (!manifestPass\n || !jsonEqual(manifestPass.states, reflectedPass.states))\n {\n throw new Error(\n `CEWG META pass ${reflectedPass.techniqueName}.pass${reflectedPass.passIndex} disagrees with RFLX`\n );\n }\n }\n for (const reflectedStage of reflectedStages)\n {\n const stage = reflectedStage.stage;\n const sourceProgram = stage.sourceProgram;\n const signature = stage.input?.signature;\n const manifestStage = manifestStages.find((entry) =>\n entry.techniqueName === reflectedStage.techniqueName\n && entry.passIndex === reflectedStage.passIndex\n && entry.stageType === stage.stageType\n && entry.stageName === stage.stageName);\n if (!manifestStage\n || sourceProgram?.kind !== \"stage\"\n || sourceProgram.stageType !== manifestStage.stageType\n || sourceProgram.stageName !== manifestStage.stageName\n || sourceProgram.shaderSize\n !== manifestStage.shaderBytecode?.shaderSize\n || sourceProgram.stringTableOffset\n !== manifestStage.shaderBytecode?.stringTableOffset\n || !samePipelineInputs(\n signature?.pipelineInputs,\n manifestStage.pipelineInputs\n )\n || !jsonEqual(\n signature?.threadGroupSize,\n manifestStage.threadGroupSize\n ))\n {\n throw new Error(\n `CEWG META stage ${reflectedStage.techniqueName}.pass${reflectedStage.passIndex}.${stage.stageName} disagrees with RFLX`\n );\n }\n }\n }\n if (checkedBodies.size !== metadataBodies.size\n || requireArray(glsl.bodies, \"CEWG GLSL.bodies\").some((body) =>\n !checkedBodies.has(body.key)))\n {\n throw new Error(\"CEWG backend body inventory disagrees with RFLX\");\n }\n}\n\nfunction validateSourceIdentity(value)\n{\n const identity = requireRecord(value, \"CEWG INFO.sourceIdentity\");\n requireString(identity.logicalPath, \"CEWG INFO.sourceIdentity.logicalPath\");\n requireUint(identity.byteLength, \"CEWG INFO.sourceIdentity.byteLength\");\n if (!SHA256.test(identity.sha256))\n {\n throw new Error(\"CEWG INFO.sourceIdentity.sha256 is malformed\");\n }\n return identity;\n}\n\nfunction validateCompleteness(info)\n{\n const completeness = requireRecord(\n info.completeness,\n \"CEWG INFO.completeness\"\n );\n for (const key of [\n \"packageValid\",\n \"sourceComplete\",\n \"backendComplete\",\n \"runtimeComplete\"\n ])\n {\n if (typeof completeness[key] !== \"boolean\")\n {\n throw new Error(`CEWG INFO.completeness.${key} must be boolean`);\n }\n }\n if (!completeness.packageValid || completeness.runtimeComplete)\n {\n throw new Error(\"CEWG INFO completeness overstates runtime coverage\");\n }\n if (info.formatVersion === 3)\n {\n if (info.sourceBodyCoverage !== \"all-unique\"\n || !completeness.sourceComplete\n || info.backendProgramCoverage !== (\n selectionCoversWholeEffect(info.selection)\n ? \"all-stages\"\n : \"filtered\"\n ))\n {\n throw new Error(\"CEWG INFO v3 source coverage is inconsistent\");\n }\n }\n else if (Object.prototype.hasOwnProperty.call(info, \"sourceBodyCoverage\")\n || Object.prototype.hasOwnProperty.call(info, \"backendBodyCoverage\")\n || Object.prototype.hasOwnProperty.call(info, \"backendProgramCoverage\")\n || completeness.sourceComplete)\n {\n throw new Error(\"CEWG INFO v2 source coverage is inconsistent\");\n }\n const expectedBackendCoverage = info.permutationMode === \"all\"\n ? \"all\"\n : \"selected\";\n if ((info.formatVersion === 3\n && info.backendBodyCoverage !== expectedBackendCoverage)\n || completeness.backendComplete)\n {\n throw new Error(\"CEWG INFO backend coverage is inconsistent\");\n }\n}\n\nfunction selectionCoversWholeEffect(value)\n{\n const selection = requireRecord(value, \"CEWG INFO.selection\");\n return selection.technique === null\n && selection.pass === null\n && selection.stage === null;\n}\n\nfunction validateBackendGraph(info, metadata, glsl, graph)\n{\n if (glsl.format !== \"CEWG_GLSL_SET\" || glsl.formatVersion !== 1\n || glsl.permutationMode !== info.permutationMode\n || !jsonEqual(glsl.selection, info.selection))\n {\n throw new Error(\"CEWG GLSL envelope disagrees with INFO\");\n }\n const metadataVariants = requireArray(metadata.variants, \"CEWG META.variants\");\n const glslVariants = requireArray(glsl.variants, \"CEWG GLSL.variants\");\n const metadataBodies = requireArray(metadata.bodies, \"CEWG META.bodies\");\n const glslBodies = requireArray(glsl.bodies, \"CEWG GLSL.bodies\");\n const stages = requireArray(glsl.stages, \"CEWG GLSL.stages\");\n const shaders = requireArray(glsl.shaders, \"CEWG GLSL.shaders\");\n if (metadataVariants.length !== info.permutationCount\n || glslVariants.length !== info.permutationCount)\n {\n throw new Error(\"CEWG backend variant counts disagree with INFO\");\n }\n const expectedIndices = info.permutationMode === \"all\"\n ? graph.variants.map((variant) => variant.permutationIndex)\n : [ info.defaultPermutationIndex ];\n if (expectedIndices.length !== metadataVariants.length)\n {\n throw new Error(\"CEWG backend permutation coverage disagrees with INFO\");\n }\n for (let index = 0; index < expectedIndices.length; index++)\n {\n const expected = expectedIndices[index];\n const metadataVariant = requireRecord(\n metadataVariants[index],\n `CEWG META variant ${index}`\n );\n const glslVariant = requireRecord(\n glslVariants[index],\n `CEWG GLSL variant ${index}`\n );\n if (metadataVariant.permutationIndex !== expected\n || glslVariant.permutationIndex !== expected\n || metadataVariant.key !== glslVariant.key\n || metadataVariant.bodyKey !== glslVariant.bodyKey)\n {\n throw new Error(`CEWG backend variant ${index} is inconsistent`);\n }\n const sourceVariant = graph.variants[expected];\n if (metadataVariant.bodyOffset !== sourceVariant.sourceRecord.offset\n || metadataVariant.bodySize !== sourceVariant.sourceRecord.byteLength)\n {\n throw new Error(`CEWG backend variant ${index} disagrees with PGRF`);\n }\n }\n if (metadataBodies.length !== info.uniqueBodyCount\n || glslBodies.length !== info.uniqueBodyCount\n || stages.length !== info.bodyStageCount\n || shaders.length !== info.uniqueShaderCount)\n {\n throw new Error(\"CEWG backend graph counts disagree with INFO\");\n }\n\n const metadataBodyMap = keyedRecordMap(metadataBodies, \"CEWG META body\");\n const glslBodyMap = keyedRecordMap(glslBodies, \"CEWG GLSL body\");\n const stageMap = keyedRecordMap(stages, \"CEWG GLSL stage\");\n const shaderMap = keyedRecordMap(shaders, \"CEWG GLSL shader\");\n const variantKeys = new Set();\n const referencedBodies = new Set();\n for (const [ index, variant ] of glslVariants.entries())\n {\n if (typeof variant.key !== \"string\" || !variant.key\n || variantKeys.has(variant.key)\n || !glslBodyMap.has(variant.bodyKey)\n || !metadataBodyMap.has(metadataVariants[index].bodyKey))\n {\n throw new Error(`CEWG backend variant ${index} references an invalid body`);\n }\n variantKeys.add(variant.key);\n referencedBodies.add(variant.bodyKey);\n }\n\n const referencedStages = new Set();\n for (const body of glslBodies)\n {\n const metadataBody = metadataBodyMap.get(body.key);\n const bodyStages = requireArray(\n body.stages,\n `CEWG GLSL body ${body.key}.stages`\n );\n if (!metadataBody\n || referencedBodies.has(body.key) === false\n || bodyStages.length !== new Set(bodyStages).size)\n {\n throw new Error(`CEWG backend body ${body.key} is inconsistent`);\n }\n for (const stageKey of bodyStages)\n {\n const stage = stageMap.get(stageKey);\n if (!stage || stage.bodyKey !== body.key)\n {\n throw new Error(\n `CEWG backend body ${body.key} references an invalid stage`\n );\n }\n referencedStages.add(stageKey);\n }\n }\n\n const referencedShaders = new Set();\n for (const stage of stages)\n {\n if (!referencedStages.has(stage.key)\n || !glslBodyMap.has(stage.bodyKey)\n || !shaderMap.has(stage.shaderKey))\n {\n throw new Error(`CEWG backend stage ${stage.key} is inconsistent`);\n }\n referencedShaders.add(stage.shaderKey);\n }\n if (referencedStages.size !== stageMap.size\n || referencedShaders.size !== shaderMap.size)\n {\n throw new Error(\"CEWG backend graph contains orphan stages or shaders\");\n }\n\n const excludedShaderCount = shaders.filter((shader) =>\n shader.excluded).length;\n const failedShaderCount = shaders.filter((shader) =>\n !shader.hlsl2webgl?.ok && !shader.excluded).length;\n const failedBodyCount = glslBodies.filter((body) => body.error).length;\n const availableShaderCount = shaders.filter((shader) =>\n shader.hlsl2webgl?.ok && shader.source).length;\n const raster = inspectCewgRasterCompleteness(stages, shaders);\n const counts = {\n translatedShaderCount:\n shaders.length - failedShaderCount - excludedShaderCount,\n excludedShaderCount,\n failedShaderCount,\n failedBodyCount,\n availableShaderCount,\n expectedRasterPassCount: raster.expectedPassCount,\n completeRasterPassCount: raster.completePassCount,\n incompleteRasterPassCount: raster.incompletePasses.length\n };\n for (const [ field, actual ] of Object.entries(counts))\n {\n if (info[field] !== actual)\n {\n throw new Error(`CEWG INFO.${field} disagrees with the backend graph`);\n }\n }\n}\n\nfunction keyedRecordMap(records, context)\n{\n const map = new Map();\n for (const [ index, value ] of records.entries())\n {\n const record = requireRecord(value, `${context} ${index}`);\n if (typeof record.key !== \"string\" || !record.key\n || map.has(record.key))\n {\n throw new Error(`${context} ${index} has a missing or duplicate key`);\n }\n map.set(record.key, record);\n }\n return map;\n}\n\nfunction samePipelineInputs(reflected, manifest)\n{\n const fields = [\n \"usage\",\n \"registerIndex\",\n \"usageIndex\",\n \"usedMask\",\n \"type\",\n \"dimension\"\n ];\n return Array.isArray(reflected)\n && Array.isArray(manifest)\n && reflected.length === manifest.length\n && reflected.every((entry, index) =>\n fields.every((field) => entry[field] === manifest[index]?.[field]));\n}\n\nfunction requireRecord(value, context)\n{\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n {\n throw new Error(`${context} must be an object`);\n }\n return value;\n}\n\nfunction requireArray(value, context)\n{\n if (!Array.isArray(value))\n {\n throw new Error(`${context} must be an array`);\n }\n return value;\n}\n\nfunction requireString(value, context)\n{\n if (typeof value !== \"string\" || !value)\n {\n throw new Error(`${context} must be a non-empty string`);\n }\n return value;\n}\n\nfunction requireUint(value, context)\n{\n if (!Number.isSafeInteger(value) || value < 0)\n {\n throw new Error(`${context} must be a non-negative safe integer`);\n }\n return value;\n}\n\nfunction jsonEqual(left, right)\n{\n return JSON.stringify(left) === JSON.stringify(right);\n}\n"],"names":["EFFECT_INFO_VERSION","EFFECT_PACKAGE_KINDS","Set","REQUIRED_EFFECT_CHUNKS","Object","freeze","SEMANTIC_VERSION","SHA256","validateEffectPackageEnvelope","pkg","GetChunk","info","requireRecord","GetJson","has","packageKind","tag","Error","format","formatVersion","targetBackend","backendPackage","test","backendPackageVersion","translator","translatorVersion","sourceIdentity","validateSourceIdentity","sourceByteLength","byteLength","sourceSha256","sha256","requireString","sourcePath","requireUint","defaultPermutationIndex","sourceEffectVersion","expectedMode","permutationMode","graphPointer","permutationGraph","chunk","EFFECT_PERMUTATION_GRAPH_CHUNK","EFFECT_PERMUTATION_GRAPH_FORMAT","EFFECT_PERMUTATION_GRAPH_VERSION","graphChunk","sha256Bytes","bytes","graph","graphCounts","validateEffectPermutationGraph","permutationCount","uniqueBodyCount","sourcePermutationCount","sourceUniqueBodyCount","metadata","glsl","validateBackendGraph","validateCompleteness","prototype","hasOwnProperty","call","EFFECT_REFLECTION_CHUNK","EFFECT_REFLECTION_BLOB_CHUNK","reflectionChunk","blobChunk","reflection","source","effectVersion","validateEffectReflectionPointer","effectReflection","reflectionBytes","validateReflectionBackendGraph","markEffectReflectionValidated","metadataBodies","Map","bodies","map","body","key","checkedBodies","variant","variants","bodyKey","add","metadataBody","get","reflected","effectReflectionForPermutation","permutationIndex","manifest","reflectedPasses","reflectedStages","technique","requireArray","techniques","passIndex","pass","passes","name","entries","push","techniqueName","states","renderStates","stage","stages","manifestPasses","manifestStages","length","reflectedPass","manifestPass","find","entry","jsonEqual","reflectedStage","sourceProgram","signature","input","manifestStage","stageType","stageName","kind","shaderSize","shaderBytecode","stringTableOffset","samePipelineInputs","pipelineInputs","threadGroupSize","size","some","value","identity","logicalPath","completeness","packageValid","runtimeComplete","sourceBodyCoverage","sourceComplete","backendProgramCoverage","selectionCoversWholeEffect","selection","expectedBackendCoverage","backendBodyCoverage","backendComplete","metadataVariants","glslVariants","glslBodies","shaders","expectedIndices","index","expected","metadataVariant","glslVariant","sourceVariant","bodyOffset","sourceRecord","offset","bodySize","bodyStageCount","uniqueShaderCount","metadataBodyMap","keyedRecordMap","glslBodyMap","stageMap","shaderMap","variantKeys","referencedBodies","referencedStages","bodyStages","stageKey","referencedShaders","shaderKey","excludedShaderCount","filter","shader","excluded","failedShaderCount","hlsl2webgl","ok","failedBodyCount","error","availableShaderCount","raster","inspectCewgRasterCompleteness","counts","translatedShaderCount","expectedRasterPassCount","expectedPassCount","completeRasterPassCount","completePassCount","incompleteRasterPassCount","incompletePasses","field","actual","records","context","record","set","fields","Array","isArray","every","Number","isSafeInteger","left","right","JSON","stringify"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"effectPackageValidation.js","sources":["../../../../../src/formats/webgl/core/effectPackageValidation.js"],"sourcesContent":["import {\n EFFECT_PERMUTATION_GRAPH_CHUNK,\n EFFECT_PERMUTATION_GRAPH_FORMAT,\n EFFECT_PERMUTATION_GRAPH_VERSION,\n validateEffectPermutationGraph\n} from \"../../../format/effect/effectPermutationGraph.js\";\nimport {\n EFFECT_REFLECTION_BLOB_CHUNK,\n EFFECT_REFLECTION_CHUNK,\n effectReflectionForPermutation,\n validateEffectReflectionPointer\n} from \"../../../format/effect/effectReflectionPackage.js\";\nimport { inspectCewgRasterCompleteness } from \"./cewgCompleteness.js\";\nimport { markEffectReflectionValidated } from \"./cewg/CewgPackage.js\";\nimport { sha256Bytes } from \"../../../format/effect/sha256.js\";\n\nexport const EFFECT_INFO_VERSION = 3;\n\nconst EFFECT_PACKAGE_KINDS = new Set([\n \"tr2-effect-webgl\",\n \"tr2-effect-webgl-permutations\"\n]);\nconst REQUIRED_EFFECT_CHUNKS = Object.freeze([ \"INFO\", \"META\", \"GLSL\" ]);\nconst SEMANTIC_VERSION = /^[0-9]+\\.[0-9]+\\.[0-9]+(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?$/u;\nconst SHA256 = /^[0-9a-f]{64}$/u;\n\n/**\n * Validates the canonical CEWG effect envelope after the binary container has\n * been decoded. Generic CEWG containers without a recognized package kind\n * remain readable.\n *\n * @param {object} pkg Loaded CEWG package.\n * @returns {boolean} True when the package is generic, legacy, or valid.\n */\nexport function validateEffectPackageEnvelope(pkg)\n{\n if (!pkg.GetChunk(\"INFO\")) return true;\n\n const info = requireRecord(pkg.GetJson(\"INFO\"), \"CEWG INFO\");\n if (!EFFECT_PACKAGE_KINDS.has(info.packageKind)) return true;\n\n for (const tag of REQUIRED_EFFECT_CHUNKS)\n {\n if (!pkg.GetChunk(tag))\n {\n throw new Error(`CEWG effect package requires ${tag}`);\n }\n }\n if (info.format !== \"CEWG\")\n {\n throw new Error(\"CEWG INFO format is malformed\");\n }\n if (info.formatVersion === 1)\n {\n return true;\n }\n if (info.formatVersion !== EFFECT_INFO_VERSION)\n {\n throw new Error(`CEWG INFO schema must be version ${EFFECT_INFO_VERSION}`);\n }\n if (info.targetBackend !== \"webgl\"\n || info.backendPackage !== \"@carbonenginejs/runtime-resource/formats/webgl\"\n || !SEMANTIC_VERSION.test(info.backendPackageVersion)\n || info.translator !== \"dxbc-js-emitter\"\n || !SEMANTIC_VERSION.test(info.translatorVersion))\n {\n throw new Error(\"CEWG INFO producer provenance is malformed\");\n }\n\n const sourceIdentity = validateSourceIdentity(info.sourceIdentity);\n if (info.sourceByteLength !== sourceIdentity.byteLength\n || info.sourceSha256 !== sourceIdentity.sha256)\n {\n throw new Error(\"CEWG INFO source identity fields disagree\");\n }\n requireString(info.sourcePath, \"CEWG INFO.sourcePath\");\n requireUint(info.defaultPermutationIndex, \"CEWG INFO.defaultPermutationIndex\");\n requireUint(info.sourceEffectVersion, \"CEWG INFO.sourceEffectVersion\");\n const expectedMode = info.packageKind === \"tr2-effect-webgl-permutations\"\n ? \"all\"\n : \"selected\";\n if (info.permutationMode !== expectedMode)\n {\n throw new Error(\"CEWG INFO package kind and permutation mode disagree\");\n }\n\n const graphPointer = requireRecord(\n info.permutationGraph,\n \"CEWG INFO.permutationGraph\"\n );\n if (graphPointer.chunk !== EFFECT_PERMUTATION_GRAPH_CHUNK\n || graphPointer.format !== EFFECT_PERMUTATION_GRAPH_FORMAT\n || graphPointer.formatVersion !== EFFECT_PERMUTATION_GRAPH_VERSION\n || !SHA256.test(graphPointer.sha256))\n {\n throw new Error(\"CEWG INFO.permutationGraph is malformed\");\n }\n const graphChunk = pkg.GetChunk(EFFECT_PERMUTATION_GRAPH_CHUNK);\n if (!graphChunk)\n {\n throw new Error(`CEWG INFO.permutationGraph requires ${EFFECT_PERMUTATION_GRAPH_CHUNK}`);\n }\n if (sha256Bytes(graphChunk.bytes) !== graphPointer.sha256)\n {\n throw new Error(\"CEWG INFO permutation-graph digest disagrees with PGRF\");\n }\n const graph = requireRecord(pkg.GetJson(EFFECT_PERMUTATION_GRAPH_CHUNK), \"CEWG PGRF\");\n const graphCounts = validateEffectPermutationGraph(graph, {\n sourceByteLength: sourceIdentity.byteLength\n });\n if (requireUint(\n graphPointer.permutationCount,\n \"CEWG INFO.permutationGraph.permutationCount\"\n ) !== graphCounts.permutationCount\n || requireUint(\n graphPointer.uniqueBodyCount,\n \"CEWG INFO.permutationGraph.uniqueBodyCount\"\n ) !== graphCounts.uniqueBodyCount\n || info.sourcePermutationCount !== graphCounts.permutationCount\n || info.sourceUniqueBodyCount !== graphCounts.uniqueBodyCount)\n {\n throw new Error(\"CEWG INFO permutation-graph counts disagree with PGRF\");\n }\n if (info.defaultPermutationIndex >= graphCounts.permutationCount)\n {\n throw new Error(\"CEWG default permutation index is absent from PGRF\");\n }\n\n const metadata = requireRecord(pkg.GetJson(\"META\"), \"CEWG META\");\n const glsl = requireRecord(pkg.GetJson(\"GLSL\"), \"CEWG GLSL\");\n validateBackendGraph(\n info,\n metadata,\n glsl,\n graph\n );\n if (metadata.sourcePath !== info.sourcePath)\n {\n throw new Error(\"CEWG META source path disagrees with INFO\");\n }\n validateCompleteness(info);\n\n if (info.formatVersion === 2)\n {\n if (info.sourceEffectVersion < 8 || info.sourceEffectVersion > 14)\n {\n throw new Error(\"CEWG INFO v2 source effect version must be 8-14\");\n }\n if (Object.prototype.hasOwnProperty.call(info, \"effectReflection\")\n || pkg.GetChunk(EFFECT_REFLECTION_CHUNK)\n || pkg.GetChunk(EFFECT_REFLECTION_BLOB_CHUNK))\n {\n throw new Error(\"CEWG INFO v2 cannot contain complete effect reflection\");\n }\n return true;\n }\n\n const reflectionChunk = pkg.GetChunk(EFFECT_REFLECTION_CHUNK);\n const blobChunk = pkg.GetChunk(EFFECT_REFLECTION_BLOB_CHUNK);\n if (!reflectionChunk || !blobChunk)\n {\n throw new Error(\"CEWG INFO v3 requires RFLX and RBLB\");\n }\n const reflection = requireRecord(\n pkg.GetJson(EFFECT_REFLECTION_CHUNK),\n \"CEWG RFLX\"\n );\n if (info.sourceEffectVersion !== 15\n || reflection.source?.effectVersion !== info.sourceEffectVersion)\n {\n throw new Error(\"CEWG INFO v3 source effect version disagrees with RFLX\");\n }\n validateEffectReflectionPointer(\n requireRecord(info.effectReflection, \"CEWG INFO.effectReflection\"),\n reflection,\n blobChunk.bytes,\n {\n permutationGraph: graph,\n sourceIdentity,\n sourcePath: info.sourcePath,\n reflectionBytes: reflectionChunk.bytes\n }\n );\n validateReflectionBackendGraph(\n reflection,\n graph,\n metadata,\n glsl\n );\n markEffectReflectionValidated(pkg);\n return true;\n}\n\nfunction validateReflectionBackendGraph(reflection, graph, metadata, glsl)\n{\n const metadataBodies = new Map(metadata.bodies.map((body) => [\n body.key,\n body\n ]));\n const checkedBodies = new Set();\n for (const variant of metadata.variants)\n {\n if (checkedBodies.has(variant.bodyKey)) continue;\n checkedBodies.add(variant.bodyKey);\n const metadataBody = metadataBodies.get(variant.bodyKey);\n const reflected = effectReflectionForPermutation(\n reflection,\n graph,\n variant.permutationIndex\n );\n const manifest = requireRecord(\n metadataBody?.manifest,\n `CEWG META body ${variant.bodyKey} manifest`\n );\n const reflectedPasses = [];\n const reflectedStages = [];\n for (const technique of requireArray(\n reflected.techniques,\n `CEWG RFLX body ${variant.bodyKey} techniques`\n ))\n {\n for (const [ passIndex, pass ] of requireArray(\n technique.passes,\n `CEWG RFLX technique ${technique.name} passes`\n ).entries())\n {\n reflectedPasses.push({\n techniqueName: technique.name,\n passIndex,\n states: pass.renderStates\n });\n for (const stage of requireArray(\n pass.stages,\n `CEWG RFLX ${technique.name}.pass${passIndex} stages`\n ))\n {\n reflectedStages.push({\n techniqueName: technique.name,\n passIndex,\n stage\n });\n }\n }\n }\n const manifestPasses = requireArray(\n manifest.passes,\n `CEWG META body ${variant.bodyKey} passes`\n );\n const manifestStages = requireArray(\n manifest.stages,\n `CEWG META body ${variant.bodyKey} stages`\n );\n if (manifestPasses.length !== reflectedPasses.length\n || manifestStages.length !== reflectedStages.length)\n {\n throw new Error(\n `CEWG META body ${variant.bodyKey} disagrees with RFLX pass/stage counts`\n );\n }\n for (const reflectedPass of reflectedPasses)\n {\n const manifestPass = manifestPasses.find((entry) =>\n entry.techniqueName === reflectedPass.techniqueName\n && entry.passIndex === reflectedPass.passIndex);\n if (!manifestPass\n || !jsonEqual(manifestPass.states, reflectedPass.states))\n {\n throw new Error(\n `CEWG META pass ${reflectedPass.techniqueName}.pass${reflectedPass.passIndex} disagrees with RFLX`\n );\n }\n }\n for (const reflectedStage of reflectedStages)\n {\n const stage = reflectedStage.stage;\n const sourceProgram = stage.sourceProgram;\n const signature = stage.input?.signature;\n const manifestStage = manifestStages.find((entry) =>\n entry.techniqueName === reflectedStage.techniqueName\n && entry.passIndex === reflectedStage.passIndex\n && entry.stageType === stage.stageType\n && entry.stageName === stage.stageName);\n if (!manifestStage\n || sourceProgram?.kind !== \"stage\"\n || sourceProgram.stageType !== manifestStage.stageType\n || sourceProgram.stageName !== manifestStage.stageName\n || sourceProgram.shaderSize\n !== manifestStage.shaderBytecode?.shaderSize\n || sourceProgram.stringTableOffset\n !== manifestStage.shaderBytecode?.stringTableOffset\n || !samePipelineInputs(\n signature?.pipelineInputs,\n manifestStage.pipelineInputs\n )\n || !jsonEqual(\n signature?.threadGroupSize,\n manifestStage.threadGroupSize\n ))\n {\n throw new Error(\n `CEWG META stage ${reflectedStage.techniqueName}.pass${reflectedStage.passIndex}.${stage.stageName} disagrees with RFLX`\n );\n }\n }\n }\n if (checkedBodies.size !== metadataBodies.size\n || requireArray(glsl.bodies, \"CEWG GLSL.bodies\").some((body) =>\n !checkedBodies.has(body.key)))\n {\n throw new Error(\"CEWG backend body inventory disagrees with RFLX\");\n }\n}\n\nfunction validateSourceIdentity(value)\n{\n const identity = requireRecord(value, \"CEWG INFO.sourceIdentity\");\n requireString(identity.logicalPath, \"CEWG INFO.sourceIdentity.logicalPath\");\n requireUint(identity.byteLength, \"CEWG INFO.sourceIdentity.byteLength\");\n if (!SHA256.test(identity.sha256))\n {\n throw new Error(\"CEWG INFO.sourceIdentity.sha256 is malformed\");\n }\n return identity;\n}\n\nfunction validateCompleteness(info)\n{\n const completeness = requireRecord(\n info.completeness,\n \"CEWG INFO.completeness\"\n );\n for (const key of [\n \"packageValid\",\n \"sourceComplete\",\n \"backendComplete\",\n \"runtimeComplete\"\n ])\n {\n if (typeof completeness[key] !== \"boolean\")\n {\n throw new Error(`CEWG INFO.completeness.${key} must be boolean`);\n }\n }\n if (!completeness.packageValid || completeness.runtimeComplete)\n {\n throw new Error(\"CEWG INFO completeness overstates runtime coverage\");\n }\n if (info.formatVersion === 3)\n {\n if (info.sourceBodyCoverage !== \"all-unique\"\n || !completeness.sourceComplete\n || info.backendProgramCoverage !== (\n selectionCoversWholeEffect(info.selection)\n ? \"all-stages\"\n : \"filtered\"\n ))\n {\n throw new Error(\"CEWG INFO v3 source coverage is inconsistent\");\n }\n }\n else if (Object.prototype.hasOwnProperty.call(info, \"sourceBodyCoverage\")\n || Object.prototype.hasOwnProperty.call(info, \"backendBodyCoverage\")\n || Object.prototype.hasOwnProperty.call(info, \"backendProgramCoverage\")\n || completeness.sourceComplete)\n {\n throw new Error(\"CEWG INFO v2 source coverage is inconsistent\");\n }\n const expectedBackendCoverage = info.permutationMode === \"all\"\n ? \"all\"\n : \"selected\";\n if ((info.formatVersion === 3\n && info.backendBodyCoverage !== expectedBackendCoverage)\n || completeness.backendComplete)\n {\n throw new Error(\"CEWG INFO backend coverage is inconsistent\");\n }\n}\n\nfunction selectionCoversWholeEffect(value)\n{\n const selection = requireRecord(value, \"CEWG INFO.selection\");\n return selection.technique === null\n && selection.pass === null\n && selection.stage === null;\n}\n\nfunction validateBackendGraph(info, metadata, glsl, graph)\n{\n if (glsl.format !== \"CEWG_GLSL_SET\" || glsl.formatVersion !== 1\n || glsl.permutationMode !== info.permutationMode\n || !jsonEqual(glsl.selection, info.selection))\n {\n throw new Error(\"CEWG GLSL envelope disagrees with INFO\");\n }\n const metadataVariants = requireArray(metadata.variants, \"CEWG META.variants\");\n const glslVariants = requireArray(glsl.variants, \"CEWG GLSL.variants\");\n const metadataBodies = requireArray(metadata.bodies, \"CEWG META.bodies\");\n const glslBodies = requireArray(glsl.bodies, \"CEWG GLSL.bodies\");\n const stages = requireArray(glsl.stages, \"CEWG GLSL.stages\");\n const shaders = requireArray(glsl.shaders, \"CEWG GLSL.shaders\");\n if (metadataVariants.length !== info.permutationCount\n || glslVariants.length !== info.permutationCount)\n {\n throw new Error(\"CEWG backend variant counts disagree with INFO\");\n }\n const expectedIndices = info.permutationMode === \"all\"\n ? graph.variants.map((variant) => variant.permutationIndex)\n : [ info.defaultPermutationIndex ];\n if (expectedIndices.length !== metadataVariants.length)\n {\n throw new Error(\"CEWG backend permutation coverage disagrees with INFO\");\n }\n for (let index = 0; index < expectedIndices.length; index++)\n {\n const expected = expectedIndices[index];\n const metadataVariant = requireRecord(\n metadataVariants[index],\n `CEWG META variant ${index}`\n );\n const glslVariant = requireRecord(\n glslVariants[index],\n `CEWG GLSL variant ${index}`\n );\n if (metadataVariant.permutationIndex !== expected\n || glslVariant.permutationIndex !== expected\n || metadataVariant.key !== glslVariant.key\n || metadataVariant.bodyKey !== glslVariant.bodyKey)\n {\n throw new Error(`CEWG backend variant ${index} is inconsistent`);\n }\n const sourceVariant = graph.variants[expected];\n if (metadataVariant.bodyOffset !== sourceVariant.sourceRecord.offset\n || metadataVariant.bodySize !== sourceVariant.sourceRecord.byteLength)\n {\n throw new Error(`CEWG backend variant ${index} disagrees with PGRF`);\n }\n }\n if (metadataBodies.length !== info.uniqueBodyCount\n || glslBodies.length !== info.uniqueBodyCount\n || stages.length !== info.bodyStageCount\n || shaders.length !== info.uniqueShaderCount)\n {\n throw new Error(\"CEWG backend graph counts disagree with INFO\");\n }\n\n const metadataBodyMap = keyedRecordMap(metadataBodies, \"CEWG META body\");\n const glslBodyMap = keyedRecordMap(glslBodies, \"CEWG GLSL body\");\n const stageMap = keyedRecordMap(stages, \"CEWG GLSL stage\");\n const shaderMap = keyedRecordMap(shaders, \"CEWG GLSL shader\");\n const variantKeys = new Set();\n const referencedBodies = new Set();\n for (const [ index, variant ] of glslVariants.entries())\n {\n if (typeof variant.key !== \"string\" || !variant.key\n || variantKeys.has(variant.key)\n || !glslBodyMap.has(variant.bodyKey)\n || !metadataBodyMap.has(metadataVariants[index].bodyKey))\n {\n throw new Error(`CEWG backend variant ${index} references an invalid body`);\n }\n variantKeys.add(variant.key);\n referencedBodies.add(variant.bodyKey);\n }\n\n const referencedStages = new Set();\n for (const body of glslBodies)\n {\n const metadataBody = metadataBodyMap.get(body.key);\n const bodyStages = requireArray(\n body.stages,\n `CEWG GLSL body ${body.key}.stages`\n );\n if (!metadataBody\n || referencedBodies.has(body.key) === false\n || bodyStages.length !== new Set(bodyStages).size)\n {\n throw new Error(`CEWG backend body ${body.key} is inconsistent`);\n }\n for (const stageKey of bodyStages)\n {\n const stage = stageMap.get(stageKey);\n if (!stage || stage.bodyKey !== body.key)\n {\n throw new Error(\n `CEWG backend body ${body.key} references an invalid stage`\n );\n }\n referencedStages.add(stageKey);\n }\n }\n\n const referencedShaders = new Set();\n for (const stage of stages)\n {\n if (!referencedStages.has(stage.key)\n || !glslBodyMap.has(stage.bodyKey)\n || !shaderMap.has(stage.shaderKey))\n {\n throw new Error(`CEWG backend stage ${stage.key} is inconsistent`);\n }\n referencedShaders.add(stage.shaderKey);\n }\n if (referencedStages.size !== stageMap.size\n || referencedShaders.size !== shaderMap.size)\n {\n throw new Error(\"CEWG backend graph contains orphan stages or shaders\");\n }\n\n const excludedShaderCount = shaders.filter((shader) =>\n shader.excluded).length;\n const failedShaderCount = shaders.filter((shader) =>\n !shader.hlsl2webgl?.ok && !shader.excluded).length;\n const failedBodyCount = glslBodies.filter((body) => body.error).length;\n const availableShaderCount = shaders.filter((shader) =>\n shader.hlsl2webgl?.ok && shader.source).length;\n const raster = inspectCewgRasterCompleteness(stages, shaders);\n const counts = {\n translatedShaderCount:\n shaders.length - failedShaderCount - excludedShaderCount,\n excludedShaderCount,\n failedShaderCount,\n failedBodyCount,\n availableShaderCount,\n expectedRasterPassCount: raster.expectedPassCount,\n completeRasterPassCount: raster.completePassCount,\n incompleteRasterPassCount: raster.incompletePasses.length\n };\n for (const [ field, actual ] of Object.entries(counts))\n {\n if (info[field] !== actual)\n {\n throw new Error(`CEWG INFO.${field} disagrees with the backend graph`);\n }\n }\n}\n\nfunction keyedRecordMap(records, context)\n{\n const map = new Map();\n for (const [ index, value ] of records.entries())\n {\n const record = requireRecord(value, `${context} ${index}`);\n if (typeof record.key !== \"string\" || !record.key\n || map.has(record.key))\n {\n throw new Error(`${context} ${index} has a missing or duplicate key`);\n }\n map.set(record.key, record);\n }\n return map;\n}\n\nfunction samePipelineInputs(reflected, manifest)\n{\n const fields = [\n \"usage\",\n \"registerIndex\",\n \"usageIndex\",\n \"usedMask\",\n \"type\",\n \"dimension\"\n ];\n return Array.isArray(reflected)\n && Array.isArray(manifest)\n && reflected.length === manifest.length\n && reflected.every((entry, index) =>\n fields.every((field) => entry[field] === manifest[index]?.[field]));\n}\n\nfunction requireRecord(value, context)\n{\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n {\n throw new Error(`${context} must be an object`);\n }\n return value;\n}\n\nfunction requireArray(value, context)\n{\n if (!Array.isArray(value))\n {\n throw new Error(`${context} must be an array`);\n }\n return value;\n}\n\nfunction requireString(value, context)\n{\n if (typeof value !== \"string\" || !value)\n {\n throw new Error(`${context} must be a non-empty string`);\n }\n return value;\n}\n\nfunction requireUint(value, context)\n{\n if (!Number.isSafeInteger(value) || value < 0)\n {\n throw new Error(`${context} must be a non-negative safe integer`);\n }\n return value;\n}\n\nfunction jsonEqual(left, right)\n{\n return JSON.stringify(left) === JSON.stringify(right);\n}\n"],"names":["EFFECT_INFO_VERSION","EFFECT_PACKAGE_KINDS","Set","REQUIRED_EFFECT_CHUNKS","Object","freeze","SEMANTIC_VERSION","SHA256","validateEffectPackageEnvelope","pkg","GetChunk","info","requireRecord","GetJson","has","packageKind","tag","Error","format","formatVersion","targetBackend","backendPackage","test","backendPackageVersion","translator","translatorVersion","sourceIdentity","validateSourceIdentity","sourceByteLength","byteLength","sourceSha256","sha256","requireString","sourcePath","requireUint","defaultPermutationIndex","sourceEffectVersion","expectedMode","permutationMode","graphPointer","permutationGraph","chunk","EFFECT_PERMUTATION_GRAPH_CHUNK","EFFECT_PERMUTATION_GRAPH_FORMAT","EFFECT_PERMUTATION_GRAPH_VERSION","graphChunk","sha256Bytes","bytes","graph","graphCounts","validateEffectPermutationGraph","permutationCount","uniqueBodyCount","sourcePermutationCount","sourceUniqueBodyCount","metadata","glsl","validateBackendGraph","validateCompleteness","prototype","hasOwnProperty","call","EFFECT_REFLECTION_CHUNK","EFFECT_REFLECTION_BLOB_CHUNK","reflectionChunk","blobChunk","reflection","source","effectVersion","validateEffectReflectionPointer","effectReflection","reflectionBytes","validateReflectionBackendGraph","markEffectReflectionValidated","metadataBodies","Map","bodies","map","body","key","checkedBodies","variant","variants","bodyKey","add","metadataBody","get","reflected","effectReflectionForPermutation","permutationIndex","manifest","reflectedPasses","reflectedStages","technique","requireArray","techniques","passIndex","pass","passes","name","entries","push","techniqueName","states","renderStates","stage","stages","manifestPasses","manifestStages","length","reflectedPass","manifestPass","find","entry","jsonEqual","reflectedStage","sourceProgram","signature","input","manifestStage","stageType","stageName","kind","shaderSize","shaderBytecode","stringTableOffset","samePipelineInputs","pipelineInputs","threadGroupSize","size","some","value","identity","logicalPath","completeness","packageValid","runtimeComplete","sourceBodyCoverage","sourceComplete","backendProgramCoverage","selectionCoversWholeEffect","selection","expectedBackendCoverage","backendBodyCoverage","backendComplete","metadataVariants","glslVariants","glslBodies","shaders","expectedIndices","index","expected","metadataVariant","glslVariant","sourceVariant","bodyOffset","sourceRecord","offset","bodySize","bodyStageCount","uniqueShaderCount","metadataBodyMap","keyedRecordMap","glslBodyMap","stageMap","shaderMap","variantKeys","referencedBodies","referencedStages","bodyStages","stageKey","referencedShaders","shaderKey","excludedShaderCount","filter","shader","excluded","failedShaderCount","hlsl2webgl","ok","failedBodyCount","error","availableShaderCount","raster","inspectCewgRasterCompleteness","counts","translatedShaderCount","expectedRasterPassCount","expectedPassCount","completeRasterPassCount","completePassCount","incompleteRasterPassCount","incompletePasses","field","actual","records","context","record","set","fields","Array","isArray","every","Number","isSafeInteger","left","right","JSON","stringify"],"mappings":"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"}
|