@starktma/minecraft-utils 1.3.25 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/database/database.d.ts +6 -4
  2. package/dist/database/database.d.ts.map +1 -1
  3. package/dist/database/database.js +24 -11
  4. package/dist/database/database.js.map +1 -1
  5. package/dist/game-state-machine/database.d.ts +1 -1
  6. package/dist/game-state-machine/database.d.ts.map +1 -1
  7. package/dist/game-state-machine/database.js +1 -1
  8. package/dist/game-state-machine/database.js.map +1 -1
  9. package/dist/math/index.d.ts +63 -59
  10. package/dist/math/index.d.ts.map +1 -1
  11. package/dist/math/index.js +150 -76
  12. package/dist/math/index.js.map +1 -1
  13. package/dist/minecraft/effectsAPI.d.ts +44 -57
  14. package/dist/minecraft/effectsAPI.d.ts.map +1 -1
  15. package/dist/minecraft/effectsAPI.js +354 -351
  16. package/dist/minecraft/effectsAPI.js.map +1 -1
  17. package/dist/minecraft/index.d.ts +7 -7
  18. package/dist/minecraft/index.d.ts.map +1 -1
  19. package/dist/minecraft/index.js +45 -31
  20. package/dist/minecraft/index.js.map +1 -1
  21. package/dist/minecraft/projectileAPI.d.ts +21 -59
  22. package/dist/minecraft/projectileAPI.d.ts.map +1 -1
  23. package/dist/minecraft/projectileAPI.js +139 -137
  24. package/dist/minecraft/projectileAPI.js.map +1 -1
  25. package/dist/minecraft/structuresAPI.d.ts +10 -0
  26. package/dist/minecraft/structuresAPI.d.ts.map +1 -0
  27. package/dist/minecraft/structuresAPI.js +61 -0
  28. package/dist/minecraft/structuresAPI.js.map +1 -0
  29. package/package.json +5 -1
  30. package/dist/minecraft/potionAPI.d.ts +0 -74
  31. package/dist/minecraft/potionAPI.d.ts.map +0 -1
  32. package/dist/minecraft/potionAPI.js +0 -228
  33. package/dist/minecraft/potionAPI.js.map +0 -1
@@ -1,146 +1,148 @@
1
- import { GameMode, EntityEquippableComponent, EquipmentSlot, } from "@minecraft/server";
2
- import { toRadians, VectorOperations } from "@starktma/minecraft-utils/math";
1
+ import { GameMode, EntityEquippableComponent, EquipmentSlot, EntityProjectileComponent, system, } from "@minecraft/server";
2
+ import { Trigonometry, Vector } from "../math";
3
3
  import { getNamespace } from "../constants";
4
- // ========================== Core Utility Functions ======================
5
- /**
6
- * Calculate the launch direction for a projectile based on player rotation
7
- */
8
- export function calculateLaunchDirection(rotation, angleOffset = 0) {
9
- const yaw = toRadians(rotation.y);
10
- const pitch = toRadians(rotation.x);
11
- const adjustedPitch = pitch + toRadians(angleOffset);
12
- return {
13
- x: -Math.sin(yaw) * Math.cos(adjustedPitch),
14
- y: -Math.sin(adjustedPitch),
15
- z: Math.cos(yaw) * Math.cos(adjustedPitch),
16
- };
17
- }
18
- /**
19
- * Calculate spawn position for projectile with rotation-based offset
20
- */
21
- export function calculateProjectileSpawnPosition(playerLocation, rotation, offset = [0, 0, 0]) {
22
- const yaw = toRadians(rotation.y);
23
- const pitch = toRadians(rotation.x);
24
- const pitchAdjustment = -Math.sin(pitch) * 0.5;
25
- const rawOffset = {
26
- x: offset[0],
27
- y: offset[1] + 1.7 + pitchAdjustment,
28
- z: offset[2],
29
- };
30
- const rotatedOffset = {
31
- x: rawOffset.x * Math.cos(yaw) - rawOffset.z * Math.sin(yaw),
32
- y: rawOffset.y,
33
- z: rawOffset.x * Math.sin(yaw) + rawOffset.z * Math.cos(yaw),
34
- };
35
- return VectorOperations.add(playerLocation, rotatedOffset);
36
- }
37
- /**
38
- * Apply velocity scaling to a direction vector
39
- */
40
- export function scaleVelocity(direction, power) {
41
- return {
42
- x: direction.x * power * 2,
43
- y: direction.y * power,
44
- z: direction.z * power * 2,
45
- };
46
- }
47
- /**
48
- * Spawn a projectile entity with velocity
49
- */
50
- export function spawnProjectile(dimension, projectileId, spawnLocation, velocity, spawnEvent = "minecraft:entity_spawned") {
51
- if (!dimension.isChunkLoaded(spawnLocation))
52
- return undefined;
53
- const entity = dimension.spawnEntity(projectileId, spawnLocation, { spawnEvent });
54
- if (entity?.isValid) {
55
- entity.applyImpulse(velocity);
56
- return entity;
4
+ // ============================= ProjectileManager =============================
5
+ class ProjectileManager {
6
+ static instance;
7
+ static shotProjectiles = new Map();
8
+ static getInstance() {
9
+ if (!ProjectileManager.instance) {
10
+ ProjectileManager.instance = new ProjectileManager();
11
+ }
12
+ return ProjectileManager.instance;
57
13
  }
58
- return undefined;
59
- }
60
- /**
61
- * Consume item from player's hand (creative mode safe)
62
- */
63
- export function consumeItemStack(player, itemStack) {
64
- if (player.getGameMode() === GameMode.Creative)
65
- return;
66
- const equippable = player.getComponent(EntityEquippableComponent.componentId);
67
- if (!equippable)
68
- return;
69
- if (itemStack.amount > 1) {
70
- itemStack.amount--;
71
- equippable.setEquipment(EquipmentSlot.Mainhand, itemStack);
14
+ constructor() { }
15
+ calculateLaunchDirection(rotation, angleOffset = 0) {
16
+ const yaw = Trigonometry.radians(rotation.y);
17
+ const pitch = Trigonometry.radians(rotation.x);
18
+ const adjustedPitch = pitch + Trigonometry.radians(angleOffset);
19
+ return {
20
+ x: -Math.sin(yaw) * Math.cos(adjustedPitch),
21
+ y: -Math.sin(adjustedPitch),
22
+ z: Math.cos(yaw) * Math.cos(adjustedPitch),
23
+ };
72
24
  }
73
- else {
74
- equippable.setEquipment(EquipmentSlot.Mainhand, undefined);
25
+ calculateSpawnPosition(playerLocation, rotation, offset = { x: 0, y: 0, z: 0 }) {
26
+ const yaw = Trigonometry.radians(rotation.y);
27
+ const pitch = Trigonometry.radians(rotation.x);
28
+ const pitchAdjustment = -Math.sin(pitch) * 0.5;
29
+ const rawOffset = {
30
+ x: offset.x,
31
+ y: offset.y + 1.7 + pitchAdjustment,
32
+ z: offset.z,
33
+ };
34
+ const rotatedOffset = {
35
+ x: rawOffset.x * Math.cos(yaw) - rawOffset.z * Math.sin(yaw),
36
+ y: rawOffset.y,
37
+ z: rawOffset.x * Math.sin(yaw) + rawOffset.z * Math.cos(yaw),
38
+ };
39
+ return Vector.add(playerLocation, rotatedOffset);
75
40
  }
76
- }
77
- // ========================== Advanced Projectile Functions ===============
78
- /**
79
- * Launch a projectile from a player with specified options
80
- */
81
- export function launchProjectileFromPlayer(player, options) {
82
- const spawnLocation = calculateProjectileSpawnPosition(player.location, player.getRotation(), options.offset || [0, 0, 0]);
83
- const direction = calculateLaunchDirection(player.getRotation(), options.angle_offset || 0);
84
- const velocity = scaleVelocity(direction, (options.power || 1) * 0.2);
85
- return spawnProjectile(player.dimension, options.identifier, spawnLocation, velocity, options.spawn_event);
86
- }
87
- /**
88
- * Launch a projectile from any entity with manual direction
89
- */
90
- export function launchProjectileFromEntity(entity, projectileId, direction, power = 1, offset = [0, 0, 0], spawnEvent) {
91
- const spawnLocation = VectorOperations.add(entity.location, {
92
- x: offset[0],
93
- y: offset[1],
94
- z: offset[2],
95
- });
96
- const velocity = scaleVelocity(direction, power * 0.2);
97
- return spawnProjectile(entity.dimension, projectileId, spawnLocation, velocity, spawnEvent);
98
- }
99
- /**
100
- * Launch a projectile from a specific location with direction
101
- */
102
- export function launchProjectileFromLocation(dimension, location, projectileId, direction, power = 1, spawnEvent) {
103
- const velocity = scaleVelocity(direction, power * 0.2);
104
- return spawnProjectile(dimension, projectileId, location, velocity, spawnEvent);
105
- }
106
- // ========================== Custom Component Handlers ====================
107
- // Simple map for item callbacks
108
- const itemCallbacks = new Map();
109
- /**
110
- * Register a callback for a specific item identifier
111
- */
112
- export function registerProjectileItemCallback(itemId, callback) {
113
- itemCallbacks.set(itemId, callback);
114
- }
115
- /**
116
- * Handle custom projectile component use event
117
- */
118
- export function handleCustomProjectileUse(event, params) {
119
- const player = event.source;
120
- const itemStack = event.itemStack;
121
- const projectileParams = params.params;
122
- // Launch projectile using default behavior
123
- const projectile = launchProjectileFromPlayer(player, projectileParams);
124
- // Handle item consumption
125
- if (projectile && itemStack) {
126
- consumeItemStack(player, itemStack);
41
+ scaleVelocity(direction, power) {
42
+ return {
43
+ x: direction.x * power * 2,
44
+ y: direction.y * power,
45
+ z: direction.z * power * 2,
46
+ };
127
47
  }
128
- // Check for registered callback for this item
129
- if (itemStack) {
130
- const callback = itemCallbacks.get(itemStack.typeId);
131
- if (callback) {
132
- callback(event, params);
48
+ consumeItem(player, itemStack) {
49
+ if (player.getGameMode() === GameMode.Creative)
50
+ return;
51
+ const equippable = player.getComponent(EntityEquippableComponent.componentId);
52
+ if (!equippable)
53
+ return;
54
+ if (itemStack.amount > 1) {
55
+ itemStack.amount--;
56
+ equippable.setEquipment(EquipmentSlot.Mainhand, itemStack);
57
+ }
58
+ else {
59
+ equippable.setEquipment(EquipmentSlot.Mainhand, undefined);
133
60
  }
134
61
  }
135
- return projectile;
136
- }
137
- /**
138
- * Register the custom projectile component
139
- * Call this in your startup event to register the custom projectile throwing component
140
- */
141
- export function registerCustomProjectileComponent(startup) {
142
- startup.itemComponentRegistry.registerCustomComponent(`${getNamespace()}:custom_projectile`, {
143
- onUse: handleCustomProjectileUse,
144
- });
62
+ // ============================= Public API ================================
63
+ launchProjectile(player, projectileId, options = {}) {
64
+ const spawnLocation = this.calculateSpawnPosition(player.location, player.getRotation(), options.offset || { x: 0, y: 0, z: 0 });
65
+ if (!player.dimension.isChunkLoaded(spawnLocation))
66
+ return undefined;
67
+ const direction = this.calculateLaunchDirection(player.getRotation(), options.angleOffset || 0);
68
+ const velocity = this.scaleVelocity(direction, (options.power || 1) * 0.2);
69
+ const projectile = player.dimension.spawnEntity(projectileId, spawnLocation, {
70
+ spawnEvent: options.spawnEvent || "minecraft:entity_spawned",
71
+ });
72
+ if (projectile?.isValid) {
73
+ projectile.applyImpulse(velocity);
74
+ return projectile;
75
+ }
76
+ return undefined;
77
+ }
78
+ launchProjectileFromEntity(entity, projectileId, direction, power = 1, offset = { x: 0, y: 0, z: 0 }, spawnEvent) {
79
+ const spawnLocation = Vector.add(entity.location, offset);
80
+ if (!entity.dimension.isChunkLoaded(spawnLocation))
81
+ return undefined;
82
+ const velocity = this.scaleVelocity(direction, power * 0.2);
83
+ const projectile = entity.dimension.spawnEntity(projectileId, spawnLocation, {
84
+ spawnEvent: spawnEvent || "minecraft:entity_spawned",
85
+ });
86
+ if (projectile?.isValid) {
87
+ const projectileComponent = projectile.getComponent(EntityProjectileComponent.componentId);
88
+ projectileComponent?.shoot(velocity);
89
+ return projectile;
90
+ }
91
+ return undefined;
92
+ }
93
+ launchProjectileFromLocation(dimension, location, projectileId, direction, power = 1, spawnEvent) {
94
+ if (!dimension.isChunkLoaded(location))
95
+ return undefined;
96
+ const velocity = this.scaleVelocity(direction, power * 0.2);
97
+ const projectile = dimension.spawnEntity(projectileId, location, {
98
+ spawnEvent: spawnEvent || "minecraft:entity_spawned",
99
+ });
100
+ if (projectile?.isValid) {
101
+ const projectileComponent = projectile.getComponent(EntityProjectileComponent.componentId);
102
+ ProjectileManager.shotProjectiles.set(projectile.id, {
103
+ entity: projectile,
104
+ component: projectileComponent,
105
+ velocity,
106
+ });
107
+ projectile.applyImpulse(velocity);
108
+ return projectile;
109
+ }
110
+ return undefined;
111
+ }
112
+ // ============================= System ====================================
113
+ start(startup) {
114
+ startup.itemComponentRegistry.registerCustomComponent(`${getNamespace()}:custom_projectile`, {
115
+ onUse: (event, params) => {
116
+ const player = event.source;
117
+ const itemStack = event.itemStack;
118
+ const projectileParams = params.params;
119
+ const offset = projectileParams.offset
120
+ ? { x: projectileParams.offset[0], y: projectileParams.offset[1], z: projectileParams.offset[2] }
121
+ : { x: 0, y: 0, z: 0 };
122
+ const projectile = this.launchProjectile(player, projectileParams.identifier, {
123
+ spawnEvent: projectileParams.spawn_event,
124
+ offset,
125
+ power: projectileParams.power,
126
+ angleOffset: projectileParams.angle_offset,
127
+ });
128
+ if (projectile && itemStack) {
129
+ this.consumeItem(player, itemStack);
130
+ }
131
+ return projectile;
132
+ },
133
+ });
134
+ system.runInterval(() => {
135
+ for (const [, { entity, component, velocity }] of ProjectileManager.shotProjectiles) {
136
+ if (!entity.isValid) {
137
+ ProjectileManager.shotProjectiles.delete(entity.id);
138
+ continue;
139
+ }
140
+ entity.applyImpulse(Vector.scalarDivide(velocity, 2));
141
+ velocity.y -= 0.01;
142
+ }
143
+ });
144
+ }
145
145
  }
146
+ const projectileManager = ProjectileManager.getInstance();
147
+ export { ProjectileManager, projectileManager };
146
148
  //# sourceMappingURL=projectileAPI.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"projectileAPI.js","sourceRoot":"","sources":["../../src/minecraft/projectileAPI.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projectileAPI.js","sourceRoot":"","sources":["../../src/minecraft/projectileAPI.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { Vector3, StructureRotation } from "@minecraft/server";
2
+ declare class StructuresManager {
3
+ static getRotationEnum(angle: number, offset?: number): StructureRotation;
4
+ static rotateStructure(structureSize: Vector3, rotationDegrees: number, targetPosition: Vector3): {
5
+ location: Vector3;
6
+ rotation: StructureRotation;
7
+ };
8
+ }
9
+ export { StructuresManager };
10
+ //# sourceMappingURL=structuresAPI.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structuresAPI.d.ts","sourceRoot":"","sources":["../../src/minecraft/structuresAPI.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAI/D,cAAM,iBAAiB;IACtB,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,iBAAiB;IAUzE,MAAM,CAAC,eAAe,CACrB,aAAa,EAAE,OAAO,EACtB,eAAe,EAAE,MAAM,EACvB,cAAc,EAAE,OAAO,GACrB;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,iBAAiB,CAAA;KAAE;CAiDrD;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
@@ -0,0 +1,61 @@
1
+ import { StructureRotation } from "@minecraft/server";
2
+ import { snapYawToGrid } from ".";
3
+ import { Trigonometry } from "../math";
4
+ class StructuresManager {
5
+ static getRotationEnum(angle, offset) {
6
+ const diff = snapYawToGrid(Trigonometry.unsignedAngle(angle - (offset ?? 0)));
7
+ console.log(diff);
8
+ if (Math.abs(diff - 90) < Number.EPSILON)
9
+ return StructureRotation.Rotate90;
10
+ if (Math.abs(diff - 180) < Number.EPSILON)
11
+ return StructureRotation.Rotate180;
12
+ if (Math.abs(diff - 270) < Number.EPSILON)
13
+ return StructureRotation.Rotate270;
14
+ return StructureRotation.None;
15
+ }
16
+ static rotateStructure(structureSize, rotationDegrees, targetPosition) {
17
+ const rotation = this.getRotationEnum(rotationDegrees);
18
+ const normalizedRot = ((Math.round(rotationDegrees) % 360) + 360) % 360;
19
+ let rotatedCenterOffset = { x: 0, y: 0, z: 0 };
20
+ const cx = Math.floor(structureSize.x / 2);
21
+ const cz = Math.floor(structureSize.z / 2);
22
+ switch (normalizedRot) {
23
+ case 0:
24
+ rotatedCenterOffset = {
25
+ x: cx,
26
+ y: 0,
27
+ z: cz,
28
+ };
29
+ break;
30
+ case 90:
31
+ rotatedCenterOffset = {
32
+ x: cz,
33
+ y: 0,
34
+ z: structureSize.x - 1 - cx,
35
+ };
36
+ break;
37
+ case 180:
38
+ rotatedCenterOffset = {
39
+ x: structureSize.x - 1 - cx,
40
+ y: 0,
41
+ z: structureSize.z - 1 - cz,
42
+ };
43
+ break;
44
+ case 270:
45
+ rotatedCenterOffset = {
46
+ x: structureSize.z - 1 - cz,
47
+ y: 0,
48
+ z: cx,
49
+ };
50
+ break;
51
+ }
52
+ const location = {
53
+ x: targetPosition.x - rotatedCenterOffset.x,
54
+ y: targetPosition.y - rotatedCenterOffset.y,
55
+ z: targetPosition.z - rotatedCenterOffset.z,
56
+ };
57
+ return { location, rotation };
58
+ }
59
+ }
60
+ export { StructuresManager };
61
+ //# sourceMappingURL=structuresAPI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structuresAPI.js","sourceRoot":"","sources":["../../src/minecraft/structuresAPI.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@starktma/minecraft-utils",
3
- "version": "1.3.25",
3
+ "version": "1.4.0",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -8,6 +8,10 @@
8
8
  "author": "",
9
9
  "license": "ISC",
10
10
  "type": "module",
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "https://github.com/StarkTMA/ScriptAPI.git"
14
+ },
11
15
  "scripts": {
12
16
  "build": "npx tsc -b --pretty --verbose",
13
17
  "prepare": "npm run build"
@@ -1,74 +0,0 @@
1
- import { Entity, RGBA, StartupEvent, Vector3, Dimension } from "@minecraft/server";
2
- export interface PotionConfig {
3
- effectKey: string;
4
- namespace: string;
5
- handler: PotionEffectHandler;
6
- splashRange?: number;
7
- lingeringMaxRadius?: number;
8
- lingeringLifetime?: number;
9
- lingeringDurationMultiplier?: number;
10
- }
11
- export type PotionEffectHandler = (entity: Entity, amplifier: number, duration: number, color: RGBA) => void;
12
- /**
13
- * Parse effect key from projectile entity type ID
14
- */
15
- export declare function parseProjectileTypeId(typeId: string): {
16
- namespace: string;
17
- effectKey: string;
18
- } | null;
19
- /**
20
- * Extract RGBA color from entity properties
21
- */
22
- export declare function getColorFromEntity(entity: Entity, namespace: string): RGBA;
23
- /**
24
- * Spawn splash particle effect
25
- */
26
- export declare function spawnSplashParticle(dimension: Dimension, location: Vector3, color: RGBA, range: number): void;
27
- /**
28
- * Spawn lingering cloud particle effect
29
- */
30
- export declare function spawnLingeringParticle(dimension: Dimension, location: Vector3, color: RGBA, radius: number, maxRadius: number, lifetime: number): void;
31
- declare class PotionManager {
32
- private configs;
33
- private activeAOEClouds;
34
- private cloudIdCounter;
35
- private isRunning;
36
- /**
37
- * Register a potion effect with its configuration and handler
38
- */
39
- registerPotion(config: PotionConfig): {
40
- handler: PotionEffectHandler;
41
- };
42
- /**
43
- * Start the potion system - must be called in beforeEvents.worldInitialize
44
- */
45
- start(startup: StartupEvent): void;
46
- /**
47
- * Get a registered potion configuration (public method)
48
- */
49
- getConfig(effectKey: string, namespace: string): PotionConfig | undefined;
50
- private registerCustomComponents;
51
- private registerProjectileEvents;
52
- private startCloudUpdater;
53
- private handleConsume;
54
- /**
55
- * Handle projectile hit (splash or lingering)
56
- */
57
- private handleProjectileHit;
58
- /**
59
- * Handle splash potion effect
60
- */
61
- private handleSplashPotion;
62
- /**
63
- * Handle lingering potion effect (creates area cloud)
64
- */
65
- private handleLingeringPotion;
66
- /**
67
- * Update lingering area effect cloud
68
- */
69
- private updateAreaEffectCloud;
70
- private applyCloudEffects;
71
- }
72
- declare const potionManager: PotionManager;
73
- export { PotionManager, potionManager };
74
- //# sourceMappingURL=potionAPI.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"potionAPI.d.ts","sourceRoot":"","sources":["../../src/minecraft/potionAPI.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,MAAM,EAGN,IAAI,EACJ,YAAY,EAEZ,OAAO,EAEP,SAAS,EACT,MAAM,mBAAmB,CAAC;AAyB3B,MAAM,WAAW,YAAY;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,2BAA2B,CAAC,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC;AAI7G;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CASrG;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAO1E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAM7G;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACrC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,OAAO,EACjB,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACd,IAAI,CAON;AAID,cAAM,aAAa;IAClB,OAAO,CAAC,OAAO,CAAmC;IAClD,OAAO,CAAC,eAAe,CAAsC;IAC7D,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,SAAS,CAAS;IAE1B;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,YAAY;;;IAgBnC;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IASlC;;OAEG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAIzE,OAAO,CAAC,wBAAwB;IAUhC,OAAO,CAAC,wBAAwB;IAUhC,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,aAAa;IAgBrB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAqB3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAuB1B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAyB7B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA0B7B,OAAO,CAAC,iBAAiB;CAuBzB;AAED,QAAA,MAAM,aAAa,eAAsB,CAAC;AAE1C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC"}