@zephyr3d/scene 0.9.4 → 0.9.5
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/animation/animationmask.js +224 -0
- package/dist/animation/animationmask.js.map +1 -0
- package/dist/animation/animationset.js +268 -67
- package/dist/animation/animationset.js.map +1 -1
- package/dist/animation/animationtrack.js.map +1 -1
- package/dist/animation/eulerrotationtrack.js +3 -0
- package/dist/animation/eulerrotationtrack.js.map +1 -1
- package/dist/animation/fixed_geometry_cache_track.js +7 -0
- package/dist/animation/fixed_geometry_cache_track.js.map +1 -1
- package/dist/animation/ik_modifier.js.map +1 -1
- package/dist/animation/joint_dynamics/collision.js +6 -4
- package/dist/animation/joint_dynamics/collision.js.map +1 -1
- package/dist/animation/joint_dynamics/controller.js +390 -43
- package/dist/animation/joint_dynamics/controller.js.map +1 -1
- package/dist/animation/joint_dynamics/joint_dynamics_system.js +62 -3
- package/dist/animation/joint_dynamics/joint_dynamics_system.js.map +1 -1
- package/dist/animation/joint_dynamics/solver.js +4 -3
- package/dist/animation/joint_dynamics/solver.js.map +1 -1
- package/dist/animation/joint_dynamics/types.js.map +1 -1
- package/dist/animation/joint_dynamics_modifier.js +2 -0
- package/dist/animation/joint_dynamics_modifier.js.map +1 -1
- package/dist/animation/morphtarget.js +3 -72
- package/dist/animation/morphtarget.js.map +1 -1
- package/dist/animation/morphtrack.js +3 -0
- package/dist/animation/morphtrack.js.map +1 -1
- package/dist/animation/pca_geometry_cache_track.js +3 -0
- package/dist/animation/pca_geometry_cache_track.js.map +1 -1
- package/dist/animation/proptrack.js +3 -0
- package/dist/animation/proptrack.js.map +1 -1
- package/dist/animation/rotationtrack.js +3 -0
- package/dist/animation/rotationtrack.js.map +1 -1
- package/dist/animation/scaletrack.js +3 -0
- package/dist/animation/scaletrack.js.map +1 -1
- package/dist/animation/skeleton.js +254 -79
- package/dist/animation/skeleton.js.map +1 -1
- package/dist/animation/skeleton_modifier.js.map +1 -1
- package/dist/animation/spring_modifier.js.map +1 -1
- package/dist/animation/translationtrack.js +3 -0
- package/dist/animation/translationtrack.js.map +1 -1
- package/dist/app/engine.js +171 -107
- package/dist/app/engine.js.map +1 -1
- package/dist/app/scriptregistry.js +251 -80
- package/dist/app/scriptregistry.js.map +1 -1
- package/dist/asset/assetmanager.js +344 -365
- package/dist/asset/assetmanager.js.map +1 -1
- package/dist/asset/loaders/gltf/gltf_loader.js +17 -14
- package/dist/asset/loaders/gltf/gltf_loader.js.map +1 -1
- package/dist/asset/loaders/loader.js +1 -6
- package/dist/asset/loaders/loader.js.map +1 -1
- package/dist/asset/loaders/zabc/zabc_loader.js.map +1 -1
- package/dist/asset/model.js +1000 -131
- package/dist/asset/model.js.map +1 -1
- package/dist/avatar/wardrobe.js +474 -0
- package/dist/avatar/wardrobe.js.map +1 -0
- package/dist/index.d.ts +1125 -199
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js +6 -3
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
- package/dist/material/mixins/pbr/common.js +72 -15
- package/dist/material/mixins/pbr/common.js.map +1 -1
- package/dist/material/msdf_text_sprite.js +4 -4
- package/dist/material/msdf_text_sprite.js.map +1 -1
- package/dist/material/pbrblueprint.js +102 -102
- package/dist/material/pbrblueprint.js.map +1 -1
- package/dist/render/envlight.js +54 -1
- package/dist/render/envlight.js.map +1 -1
- package/dist/render/sky.js +9 -0
- package/dist/render/sky.js.map +1 -1
- package/dist/scene/batchgroup.js +11 -13
- package/dist/scene/batchgroup.js.map +1 -1
- package/dist/scene/environment.js +15 -2
- package/dist/scene/environment.js.map +1 -1
- package/dist/scene/mesh.js +79 -16
- package/dist/scene/mesh.js.map +1 -1
- package/dist/scene/scene.js +1 -0
- package/dist/scene/scene.js.map +1 -1
- package/dist/scene/scene_node.js +203 -2
- package/dist/scene/scene_node.js.map +1 -1
- package/dist/text/font/font_asset.js.map +1 -1
- package/dist/text/msdf/generator.js.map +1 -1
- package/dist/text/msdf/shape.js +4 -1
- package/dist/text/msdf/shape.js.map +1 -1
- package/dist/text/runtime/msdf_text_atlas_manager.js +4 -1
- package/dist/text/runtime/msdf_text_atlas_manager.js.map +1 -1
- package/dist/utility/blueprint/material/inputs.js +1157 -1154
- package/dist/utility/blueprint/material/inputs.js.map +1 -1
- package/dist/utility/bounding_volume.js.map +1 -1
- package/dist/utility/pmrem.js +34 -8
- package/dist/utility/pmrem.js.map +1 -1
- package/dist/utility/serialization/manager.js +22 -9
- package/dist/utility/serialization/manager.js.map +1 -1
- package/dist/utility/serialization/scene/animation.js +700 -7
- package/dist/utility/serialization/scene/animation.js.map +1 -1
- package/dist/utility/serialization/scene/mesh.js +64 -4
- package/dist/utility/serialization/scene/mesh.js.map +1 -1
- package/dist/utility/serialization/scene/node.js +187 -8
- package/dist/utility/serialization/scene/node.js.map +1 -1
- package/dist/utility/serialization/types.js.map +1 -1
- package/dist/utility/textures/sheenlut.js +138 -0
- package/dist/utility/textures/sheenlut.js.map +1 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shape.js","sources":["../../../src/text/msdf/shape.ts"],"sourcesContent":["import type { GlyphContour, GlyphPoint } from '../font';\r\nimport type { ColoredEdge, EdgeColor, MSDFShape } from './types';\r\n\r\nexport function buildMSDFShape(contours: GlyphContour[]): MSDFShape {\r\n return {\r\n sourceContours: contours.map((contour) => contour.map(clonePoint)),\r\n contours: contours.map((contour) => colorizeContour(buildContourEdges(contour)))\r\n };\r\n}\r\n\r\nfunction clonePoint(point: GlyphPoint) {\r\n return { x: point.x, y: point.y, onCurve: point.onCurve };\r\n}\r\n\r\nfunction buildContourEdges(contour: GlyphContour): ColoredEdge[] {\r\n contour = normalizeContourStart(contour);\r\n if (contour.length < 2) {\r\n return [];\r\n }\r\n const edges: ColoredEdge[] = [];\r\n let i = 0;\r\n while (i < contour.length) {\r\n const p0 = contour[i];\r\n const p1 = contour[(i + 1) % contour.length];\r\n if (p0.onCurve && p1.onCurve) {\r\n edges.push({\r\n kind: 'line',\r\n color: 7,\r\n p0: { x: p0.x, y: p0.y },\r\n p1: { x: p1.x, y: p1.y }\r\n });\r\n i += 1;\r\n continue;\r\n }\r\n if (p0.onCurve && !p1.onCurve) {\r\n const p2 = contour[(i + 2) % contour.length];\r\n if (!p2.onCurve) {\r\n throw new Error('Implicit midpoint contours must be expanded before MSDF conversion');\r\n }\r\n edges.push({\r\n kind: 'quadratic',\r\n color: 7,\r\n p0: { x: p0.x, y: p0.y },\r\n p1: { x: p1.x, y: p1.y },\r\n p2: { x: p2.x, y: p2.y }\r\n });\r\n i += 2;\r\n continue;\r\n }\r\n throw new Error('MSDF contour must start edge on an on-curve point');\r\n }\r\n return edges;\r\n}\r\n\r\nfunction normalizeContourStart(contour: GlyphContour) {\r\n if (contour.length === 0) {\r\n return contour;\r\n }\r\n const firstOnCurve = contour.findIndex((point) => point.onCurve);\r\n if (firstOnCurve < 0 || firstOnCurve === 0) {\r\n return contour;\r\n }\r\n return contour.slice(firstOnCurve).concat(contour.slice(0, firstOnCurve));\r\n}\r\n\r\nfunction colorizeContour(edges: ColoredEdge[]) {\r\n if (edges.length === 0) {\r\n return edges;\r\n }\r\n const corners = detectCorners(edges);\r\n if (corners.length === 0) {\r\n for (let i = 0; i < edges.length; i++) {\r\n edges[i].color = 7;\r\n }\r\n return edges;\r\n }\r\n let color: EdgeColor = 5;\r\n const cornerSet = new Set(corners);\r\n for (let i = 0; i < edges.length; i++) {\r\n edges[i].color = color;\r\n if (cornerSet.has((i + 1) % edges.length)) {\r\n color = color === 3 ? 6 : 3;\r\n }\r\n }\r\n return edges;\r\n}\r\n\r\nfunction detectCorners(edges: ColoredEdge[]) {\r\n const result: number[] = [];\r\n for (let i = 0; i < edges.length; i++) {\r\n const prev = edges[(i + edges.length - 1) % edges.length];\r\n const curr = edges[i];\r\n const prevDir = normalize(getEdgeEndDirection(prev));\r\n const currDir = normalize(getEdgeStartDirection(curr));\r\n const dot = prevDir.x * currDir.x + prevDir.y * currDir.y;\r\n if (dot < 0.35) {\r\n result.push(i);\r\n }\r\n }\r\n return result;\r\n}\r\n\r\nfunction getEdgeStartDirection(edge: ColoredEdge) {\r\n return edge.kind === 'quadratic'\r\n ? { x: edge.p1.x - edge.p0.x, y: edge.p1.y - edge.p0.y }\r\n : { x: edge.p1.x - edge.p0.x, y: edge.p1.y - edge.p0.y };\r\n}\r\n\r\nfunction getEdgeEndDirection(edge: ColoredEdge) {\r\n return edge.kind === 'quadratic'\r\n ? { x: edge.p2!.x - edge.p1.x, y: edge.p2!.y - edge.p1.y }\r\n : { x: edge.p1.x - edge.p0.x, y: edge.p1.y - edge.p0.y };\r\n}\r\n\r\nfunction normalize(v: { x: number; y: number }) {\r\n const len = Math.hypot(v.x, v.y);\r\n return len > 1e-8 ? { x: v.x / len, y: v.y / len } : { x: 1, y: 0 };\r\n}\r\n"],"names":["buildMSDFShape","contours","sourceContours","map","contour","clonePoint","colorizeContour","buildContourEdges","point","x","y","onCurve","normalizeContourStart","length","edges","i","p0","p1","push","kind","color","p2","Error","firstOnCurve","findIndex","slice","concat","corners","detectCorners","cornerSet","Set","has","result","prev","curr","prevDir","normalize","getEdgeEndDirection","currDir","getEdgeStartDirection","dot","edge","v","len","Math","hypot"],"mappings":"
|
|
1
|
+
{"version":3,"file":"shape.js","sources":["../../../src/text/msdf/shape.ts"],"sourcesContent":["import type { GlyphContour, GlyphPoint } from '../font';\r\nimport type { ColoredEdge, EdgeColor, MSDFShape } from './types';\r\n\r\n/**\r\n * Builds an MSDF shape from glyph contours.\r\n * @public\r\n */\r\nexport function buildMSDFShape(contours: GlyphContour[]): MSDFShape {\r\n return {\r\n sourceContours: contours.map((contour) => contour.map(clonePoint)),\r\n contours: contours.map((contour) => colorizeContour(buildContourEdges(contour)))\r\n };\r\n}\r\n\r\nfunction clonePoint(point: GlyphPoint) {\r\n return { x: point.x, y: point.y, onCurve: point.onCurve };\r\n}\r\n\r\nfunction buildContourEdges(contour: GlyphContour): ColoredEdge[] {\r\n contour = normalizeContourStart(contour);\r\n if (contour.length < 2) {\r\n return [];\r\n }\r\n const edges: ColoredEdge[] = [];\r\n let i = 0;\r\n while (i < contour.length) {\r\n const p0 = contour[i];\r\n const p1 = contour[(i + 1) % contour.length];\r\n if (p0.onCurve && p1.onCurve) {\r\n edges.push({\r\n kind: 'line',\r\n color: 7,\r\n p0: { x: p0.x, y: p0.y },\r\n p1: { x: p1.x, y: p1.y }\r\n });\r\n i += 1;\r\n continue;\r\n }\r\n if (p0.onCurve && !p1.onCurve) {\r\n const p2 = contour[(i + 2) % contour.length];\r\n if (!p2.onCurve) {\r\n throw new Error('Implicit midpoint contours must be expanded before MSDF conversion');\r\n }\r\n edges.push({\r\n kind: 'quadratic',\r\n color: 7,\r\n p0: { x: p0.x, y: p0.y },\r\n p1: { x: p1.x, y: p1.y },\r\n p2: { x: p2.x, y: p2.y }\r\n });\r\n i += 2;\r\n continue;\r\n }\r\n throw new Error('MSDF contour must start edge on an on-curve point');\r\n }\r\n return edges;\r\n}\r\n\r\nfunction normalizeContourStart(contour: GlyphContour) {\r\n if (contour.length === 0) {\r\n return contour;\r\n }\r\n const firstOnCurve = contour.findIndex((point) => point.onCurve);\r\n if (firstOnCurve < 0 || firstOnCurve === 0) {\r\n return contour;\r\n }\r\n return contour.slice(firstOnCurve).concat(contour.slice(0, firstOnCurve));\r\n}\r\n\r\nfunction colorizeContour(edges: ColoredEdge[]) {\r\n if (edges.length === 0) {\r\n return edges;\r\n }\r\n const corners = detectCorners(edges);\r\n if (corners.length === 0) {\r\n for (let i = 0; i < edges.length; i++) {\r\n edges[i].color = 7;\r\n }\r\n return edges;\r\n }\r\n let color: EdgeColor = 5;\r\n const cornerSet = new Set(corners);\r\n for (let i = 0; i < edges.length; i++) {\r\n edges[i].color = color;\r\n if (cornerSet.has((i + 1) % edges.length)) {\r\n color = color === 3 ? 6 : 3;\r\n }\r\n }\r\n return edges;\r\n}\r\n\r\nfunction detectCorners(edges: ColoredEdge[]) {\r\n const result: number[] = [];\r\n for (let i = 0; i < edges.length; i++) {\r\n const prev = edges[(i + edges.length - 1) % edges.length];\r\n const curr = edges[i];\r\n const prevDir = normalize(getEdgeEndDirection(prev));\r\n const currDir = normalize(getEdgeStartDirection(curr));\r\n const dot = prevDir.x * currDir.x + prevDir.y * currDir.y;\r\n if (dot < 0.35) {\r\n result.push(i);\r\n }\r\n }\r\n return result;\r\n}\r\n\r\nfunction getEdgeStartDirection(edge: ColoredEdge) {\r\n return edge.kind === 'quadratic'\r\n ? { x: edge.p1.x - edge.p0.x, y: edge.p1.y - edge.p0.y }\r\n : { x: edge.p1.x - edge.p0.x, y: edge.p1.y - edge.p0.y };\r\n}\r\n\r\nfunction getEdgeEndDirection(edge: ColoredEdge) {\r\n return edge.kind === 'quadratic'\r\n ? { x: edge.p2!.x - edge.p1.x, y: edge.p2!.y - edge.p1.y }\r\n : { x: edge.p1.x - edge.p0.x, y: edge.p1.y - edge.p0.y };\r\n}\r\n\r\nfunction normalize(v: { x: number; y: number }) {\r\n const len = Math.hypot(v.x, v.y);\r\n return len > 1e-8 ? { x: v.x / len, y: v.y / len } : { x: 1, y: 0 };\r\n}\r\n"],"names":["buildMSDFShape","contours","sourceContours","map","contour","clonePoint","colorizeContour","buildContourEdges","point","x","y","onCurve","normalizeContourStart","length","edges","i","p0","p1","push","kind","color","p2","Error","firstOnCurve","findIndex","slice","concat","corners","detectCorners","cornerSet","Set","has","result","prev","curr","prevDir","normalize","getEdgeEndDirection","currDir","getEdgeStartDirection","dot","edge","v","len","Math","hypot"],"mappings":"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"}
|
|
@@ -3,7 +3,10 @@ import { MSDFGlyphAtlas } from './msdf_glyph_atlas.js';
|
|
|
3
3
|
|
|
4
4
|
const DEFAULT_DISTANCE_RANGE = 8;
|
|
5
5
|
const DEFAULT_PADDING = 6;
|
|
6
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Manages MSDF glyph atlases for font assets.
|
|
8
|
+
* @public
|
|
9
|
+
*/ class MSDFTextAtlasManager {
|
|
7
10
|
_atlases;
|
|
8
11
|
constructor(){
|
|
9
12
|
this._atlases = new Map();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"msdf_text_atlas_manager.js","sources":["../../../src/text/runtime/msdf_text_atlas_manager.ts"],"sourcesContent":["import { getDevice } from '../../app/api';\r\nimport type { FontAsset } from '../font';\r\nimport { MSDFGlyphAtlas } from './msdf_glyph_atlas';\r\n\r\nconst DEFAULT_DISTANCE_RANGE = 8;\r\nconst DEFAULT_PADDING = 6;\r\n\r\nexport class MSDFTextAtlasManager {\r\n private readonly _atlases: Map<FontAsset, MSDFGlyphAtlas>;\r\n constructor() {\r\n this._atlases = new Map();\r\n }\r\n getAtlas(font: FontAsset) {\r\n let atlas = this._atlases.get(font);\r\n if (!atlas) {\r\n atlas = new MSDFGlyphAtlas(\r\n getDevice(),\r\n font,\r\n font.msdfGlyphSize,\r\n font.msdfAtlasPageSize,\r\n DEFAULT_DISTANCE_RANGE,\r\n DEFAULT_PADDING\r\n );\r\n this._atlases.set(font, atlas);\r\n }\r\n return atlas;\r\n }\r\n configureAtlas(\r\n font: FontAsset,\r\n glyphSize: number,\r\n atlasSize: number,\r\n distanceRange = DEFAULT_DISTANCE_RANGE,\r\n padding = DEFAULT_PADDING\r\n ) {\r\n let atlas = this._atlases.get(font);\r\n if (atlas) {\r\n atlas.clear();\r\n this._atlases.delete(font);\r\n }\r\n atlas = new MSDFGlyphAtlas(getDevice(), font, glyphSize, atlasSize, distanceRange, padding);\r\n this._atlases.set(font, atlas);\r\n return atlas;\r\n }\r\n releaseAtlas(font: FontAsset) {\r\n const atlas = this._atlases.get(font);\r\n if (atlas) {\r\n atlas.clear();\r\n this._atlases.delete(font);\r\n return true;\r\n }\r\n return false;\r\n }\r\n clear() {\r\n for (const atlas of this._atlases.values()) {\r\n atlas.clear();\r\n }\r\n this._atlases.clear();\r\n }\r\n}\r\n"],"names":["DEFAULT_DISTANCE_RANGE","DEFAULT_PADDING","MSDFTextAtlasManager","_atlases","Map","getAtlas","font","atlas","get","MSDFGlyphAtlas","getDevice","msdfGlyphSize","msdfAtlasPageSize","set","configureAtlas","glyphSize","atlasSize","distanceRange","padding","clear","delete","releaseAtlas","values"],"mappings":";;;AAIA,MAAMA,sBAAyB,GAAA,CAAA;AAC/B,MAAMC,eAAkB,GAAA,CAAA;
|
|
1
|
+
{"version":3,"file":"msdf_text_atlas_manager.js","sources":["../../../src/text/runtime/msdf_text_atlas_manager.ts"],"sourcesContent":["import { getDevice } from '../../app/api';\r\nimport type { FontAsset } from '../font';\r\nimport { MSDFGlyphAtlas } from './msdf_glyph_atlas';\r\n\r\nconst DEFAULT_DISTANCE_RANGE = 8;\r\nconst DEFAULT_PADDING = 6;\r\n\r\n/**\r\n * Manages MSDF glyph atlases for font assets.\r\n * @public\r\n */\r\nexport class MSDFTextAtlasManager {\r\n private readonly _atlases: Map<FontAsset, MSDFGlyphAtlas>;\r\n constructor() {\r\n this._atlases = new Map();\r\n }\r\n getAtlas(font: FontAsset) {\r\n let atlas = this._atlases.get(font);\r\n if (!atlas) {\r\n atlas = new MSDFGlyphAtlas(\r\n getDevice(),\r\n font,\r\n font.msdfGlyphSize,\r\n font.msdfAtlasPageSize,\r\n DEFAULT_DISTANCE_RANGE,\r\n DEFAULT_PADDING\r\n );\r\n this._atlases.set(font, atlas);\r\n }\r\n return atlas;\r\n }\r\n configureAtlas(\r\n font: FontAsset,\r\n glyphSize: number,\r\n atlasSize: number,\r\n distanceRange = DEFAULT_DISTANCE_RANGE,\r\n padding = DEFAULT_PADDING\r\n ) {\r\n let atlas = this._atlases.get(font);\r\n if (atlas) {\r\n atlas.clear();\r\n this._atlases.delete(font);\r\n }\r\n atlas = new MSDFGlyphAtlas(getDevice(), font, glyphSize, atlasSize, distanceRange, padding);\r\n this._atlases.set(font, atlas);\r\n return atlas;\r\n }\r\n releaseAtlas(font: FontAsset) {\r\n const atlas = this._atlases.get(font);\r\n if (atlas) {\r\n atlas.clear();\r\n this._atlases.delete(font);\r\n return true;\r\n }\r\n return false;\r\n }\r\n clear() {\r\n for (const atlas of this._atlases.values()) {\r\n atlas.clear();\r\n }\r\n this._atlases.clear();\r\n }\r\n}\r\n"],"names":["DEFAULT_DISTANCE_RANGE","DEFAULT_PADDING","MSDFTextAtlasManager","_atlases","Map","getAtlas","font","atlas","get","MSDFGlyphAtlas","getDevice","msdfGlyphSize","msdfAtlasPageSize","set","configureAtlas","glyphSize","atlasSize","distanceRange","padding","clear","delete","releaseAtlas","values"],"mappings":";;;AAIA,MAAMA,sBAAyB,GAAA,CAAA;AAC/B,MAAMC,eAAkB,GAAA,CAAA;AAExB;;;AAGC,IACM,MAAMC,oBAAAA,CAAAA;IACMC,QAAyC;IAC1D,WAAc,EAAA;QACZ,IAAI,CAACA,QAAQ,GAAG,IAAIC,GAAAA,EAAAA;AACtB;AACAC,IAAAA,QAAAA,CAASC,IAAe,EAAE;AACxB,QAAA,IAAIC,QAAQ,IAAI,CAACJ,QAAQ,CAACK,GAAG,CAACF,IAAAA,CAAAA;AAC9B,QAAA,IAAI,CAACC,KAAO,EAAA;YACVA,KAAQ,GAAA,IAAIE,cACVC,CAAAA,SAAAA,EAAAA,EACAJ,IACAA,EAAAA,IAAAA,CAAKK,aAAa,EAClBL,IAAAA,CAAKM,iBAAiB,EACtBZ,sBACAC,EAAAA,eAAAA,CAAAA;AAEF,YAAA,IAAI,CAACE,QAAQ,CAACU,GAAG,CAACP,IAAMC,EAAAA,KAAAA,CAAAA;AAC1B;QACA,OAAOA,KAAAA;AACT;IACAO,cACER,CAAAA,IAAe,EACfS,SAAiB,EACjBC,SAAiB,EACjBC,aAAAA,GAAgBjB,sBAAsB,EACtCkB,OAAUjB,GAAAA,eAAe,EACzB;AACA,QAAA,IAAIM,QAAQ,IAAI,CAACJ,QAAQ,CAACK,GAAG,CAACF,IAAAA,CAAAA;AAC9B,QAAA,IAAIC,KAAO,EAAA;AACTA,YAAAA,KAAAA,CAAMY,KAAK,EAAA;AACX,YAAA,IAAI,CAAChB,QAAQ,CAACiB,MAAM,CAACd,IAAAA,CAAAA;AACvB;AACAC,QAAAA,KAAAA,GAAQ,IAAIE,cAAeC,CAAAA,SAAAA,EAAAA,EAAaJ,IAAMS,EAAAA,SAAAA,EAAWC,WAAWC,aAAeC,EAAAA,OAAAA,CAAAA;AACnF,QAAA,IAAI,CAACf,QAAQ,CAACU,GAAG,CAACP,IAAMC,EAAAA,KAAAA,CAAAA;QACxB,OAAOA,KAAAA;AACT;AACAc,IAAAA,YAAAA,CAAaf,IAAe,EAAE;AAC5B,QAAA,MAAMC,QAAQ,IAAI,CAACJ,QAAQ,CAACK,GAAG,CAACF,IAAAA,CAAAA;AAChC,QAAA,IAAIC,KAAO,EAAA;AACTA,YAAAA,KAAAA,CAAMY,KAAK,EAAA;AACX,YAAA,IAAI,CAAChB,QAAQ,CAACiB,MAAM,CAACd,IAAAA,CAAAA;YACrB,OAAO,IAAA;AACT;QACA,OAAO,KAAA;AACT;IACAa,KAAQ,GAAA;AACN,QAAA,KAAK,MAAMZ,KAAS,IAAA,IAAI,CAACJ,QAAQ,CAACmB,MAAM,EAAI,CAAA;AAC1Cf,YAAAA,KAAAA,CAAMY,KAAK,EAAA;AACb;QACA,IAAI,CAAChB,QAAQ,CAACgB,KAAK,EAAA;AACrB;AACF;;;;"}
|