@aephia/atlas-kit 0.6.0-next.35 → 0.6.0-next.37

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 (96) hide show
  1. package/dist/combat/actions/index.d.ts.map +1 -1
  2. package/dist/combat/actions/index.js +16 -3
  3. package/dist/combat/actions/index.js.map +1 -1
  4. package/dist/crafting/actions/index.d.ts.map +1 -1
  5. package/dist/crafting/actions/index.js +36 -13
  6. package/dist/crafting/actions/index.js.map +1 -1
  7. package/dist/fleets/actions/ship-import.d.ts.map +1 -1
  8. package/dist/fleets/actions/ship-import.js +18 -5
  9. package/dist/fleets/actions/ship-import.js.map +1 -1
  10. package/dist/internal/c4/character-registration.d.ts.map +1 -1
  11. package/dist/internal/c4/character-registration.js +2 -0
  12. package/dist/internal/c4/character-registration.js.map +1 -1
  13. package/dist/internal/c4/crafting-process-codec.d.ts +13 -0
  14. package/dist/internal/c4/crafting-process-codec.d.ts.map +1 -0
  15. package/dist/internal/c4/crafting-process-codec.js +34 -0
  16. package/dist/internal/c4/crafting-process-codec.js.map +1 -0
  17. package/dist/internal/c4/crafting.d.ts +10 -0
  18. package/dist/internal/c4/crafting.d.ts.map +1 -1
  19. package/dist/internal/c4/crafting.js +22 -5
  20. package/dist/internal/c4/crafting.js.map +1 -1
  21. package/dist/internal/c4/fleet-creation.js +1 -1
  22. package/dist/internal/c4/fleet-creation.js.map +1 -1
  23. package/dist/internal/c4/game.d.ts +2 -0
  24. package/dist/internal/c4/game.d.ts.map +1 -1
  25. package/dist/internal/c4/game.js +5 -0
  26. package/dist/internal/c4/game.js.map +1 -1
  27. package/dist/internal/c4/market.d.ts +1 -1
  28. package/dist/internal/c4/market.d.ts.map +1 -1
  29. package/dist/internal/c4/market.js +2 -0
  30. package/dist/internal/c4/market.js.map +1 -1
  31. package/dist/internal/c4/profile-permissions.d.ts +1 -1
  32. package/dist/internal/c4/profile-permissions.d.ts.map +1 -1
  33. package/dist/internal/c4/profile-permissions.js +1 -0
  34. package/dist/internal/c4/profile-permissions.js.map +1 -1
  35. package/dist/internal/c4/runtime-bindings.d.ts +2 -0
  36. package/dist/internal/c4/runtime-bindings.d.ts.map +1 -0
  37. package/dist/internal/c4/runtime-bindings.js +3 -0
  38. package/dist/internal/c4/runtime-bindings.js.map +1 -0
  39. package/dist/internal/c4/scanning.d.ts +1 -1
  40. package/dist/internal/c4/scanning.d.ts.map +1 -1
  41. package/dist/internal/c4/scanning.js +2 -0
  42. package/dist/internal/c4/scanning.js.map +1 -1
  43. package/dist/internal/c4/ship-import.d.ts +4 -0
  44. package/dist/internal/c4/ship-import.d.ts.map +1 -0
  45. package/dist/internal/c4/ship-import.js +13 -0
  46. package/dist/internal/c4/ship-import.js.map +1 -0
  47. package/dist/internal/c4/ship-stats.js +2 -2
  48. package/dist/internal/c4/ship-stats.js.map +1 -1
  49. package/dist/internal/planning/action-runtime.d.ts +38 -0
  50. package/dist/internal/planning/action-runtime.d.ts.map +1 -0
  51. package/dist/internal/planning/action-runtime.js +63 -0
  52. package/dist/internal/planning/action-runtime.js.map +1 -0
  53. package/dist/internal/planning/authorization-adapter.d.ts +2 -0
  54. package/dist/internal/planning/authorization-adapter.d.ts.map +1 -1
  55. package/dist/internal/planning/authorization-adapter.js +49 -0
  56. package/dist/internal/planning/authorization-adapter.js.map +1 -1
  57. package/dist/internal/planning/democracy-history.d.ts +51 -0
  58. package/dist/internal/planning/democracy-history.d.ts.map +1 -0
  59. package/dist/internal/planning/democracy-history.js +202 -0
  60. package/dist/internal/planning/democracy-history.js.map +1 -0
  61. package/dist/internal/planning/governance-fees.d.ts +64 -0
  62. package/dist/internal/planning/governance-fees.d.ts.map +1 -0
  63. package/dist/internal/planning/governance-fees.js +239 -0
  64. package/dist/internal/planning/governance-fees.js.map +1 -0
  65. package/dist/internal/planning/runtime-guards.d.ts +43 -0
  66. package/dist/internal/planning/runtime-guards.d.ts.map +1 -0
  67. package/dist/internal/planning/runtime-guards.js +552 -0
  68. package/dist/internal/planning/runtime-guards.js.map +1 -0
  69. package/dist/internal/planning/ship-import-funding.d.ts +22 -0
  70. package/dist/internal/planning/ship-import-funding.d.ts.map +1 -0
  71. package/dist/internal/planning/ship-import-funding.js +52 -0
  72. package/dist/internal/planning/ship-import-funding.js.map +1 -0
  73. package/dist/internal/planning/xp-runtime.d.ts +22 -0
  74. package/dist/internal/planning/xp-runtime.d.ts.map +1 -0
  75. package/dist/internal/planning/xp-runtime.js +102 -0
  76. package/dist/internal/planning/xp-runtime.js.map +1 -0
  77. package/dist/markets/actions/index.d.ts.map +1 -1
  78. package/dist/markets/actions/index.js +41 -16
  79. package/dist/markets/actions/index.js.map +1 -1
  80. package/dist/planning/assembly.d.ts.map +1 -1
  81. package/dist/planning/assembly.js +2 -0
  82. package/dist/planning/assembly.js.map +1 -1
  83. package/dist/planning/execution.d.ts.map +1 -1
  84. package/dist/planning/execution.js +36 -2
  85. package/dist/planning/execution.js.map +1 -1
  86. package/dist/planning/index.d.ts +49 -4
  87. package/dist/planning/index.d.ts.map +1 -1
  88. package/dist/planning/index.js +81 -12
  89. package/dist/planning/index.js.map +1 -1
  90. package/dist/registry/xp-runtime.d.ts +4 -0
  91. package/dist/registry/xp-runtime.d.ts.map +1 -0
  92. package/dist/registry/xp-runtime.js +14 -0
  93. package/dist/registry/xp-runtime.js.map +1 -0
  94. package/dist/scanning/index.d.ts +1 -1
  95. package/dist/scanning/index.d.ts.map +1 -1
  96. package/package.json +2 -2
@@ -0,0 +1,239 @@
1
+ import { getAddressEncoder, getProgramDerivedAddress, getU64Encoder, } from '@solana/kit';
2
+ import { SageSdkError } from '../../client/errors.js';
3
+ import { readContextRawAccounts } from '../../client/reconciliation.js';
4
+ import { CURRENCY_CONFIG_CACHE_DISCRIMINATOR, SAGE_PROGRAM_ADDRESS, STARBASE_GOVERNANCE_DISCRIMINATOR, STARBASE_TREASURY_DISCRIMINATOR, getCurrencyConfigCacheDecoder, getStarbaseGovernanceDecoder, getStarbaseTreasuryDecoder, } from '../c4/runtime-bindings.js';
5
+ import { deriveStarSystemAddress, starSystemAccountDefinition, } from '../c4/world.js';
6
+ import { craftingProcessAccountDefinition, } from '../c4/crafting.js';
7
+ function requireFee(condition, reason) {
8
+ if (!condition)
9
+ throw new SageSdkError('ACTION_PRECONDITION_FAILED', `${reason} Refresh the Starbase fee configuration and recreate this action; ask its operator to initialize missing fee-routing accounts.`);
10
+ }
11
+ async function derive(literal, scope, sequence) {
12
+ return getProgramDerivedAddress({
13
+ programAddress: SAGE_PROGRAM_ADDRESS,
14
+ seeds: [
15
+ new TextEncoder().encode(literal),
16
+ getAddressEncoder().encode(scope),
17
+ ...(sequence === undefined ? [] : [getU64Encoder().encode(sequence)]),
18
+ ],
19
+ });
20
+ }
21
+ function decode(raw, address, discriminator, decoder) {
22
+ requireFee(raw &&
23
+ raw.address === address &&
24
+ raw.owner === SAGE_PROGRAM_ADDRESS &&
25
+ !raw.executable, `Fee-routing account ${address} is missing or has an unexpected owner or address.`);
26
+ requireFee(discriminator.every((byte, index) => raw.data[index] === byte), `Fee-routing account ${address} has the wrong discriminator.`);
27
+ try {
28
+ const [value, consumed] = decoder.read(raw.data, 0);
29
+ requireFee(consumed === raw.data.length, `Fee-routing account ${address} has trailing bytes.`);
30
+ return value;
31
+ }
32
+ catch (cause) {
33
+ if (cause instanceof SageSdkError)
34
+ throw cause;
35
+ throw new SageSdkError('ACTION_PRECONDITION_FAILED', `Fee-routing account ${address} cannot be decoded. Refresh the deployment and recreate this action with supported account data.`);
36
+ }
37
+ }
38
+ function params(value) {
39
+ return {
40
+ craftingFeeBps: value.craftingFeeBps,
41
+ localMarketFeeBps: value.localMarketFeeBps,
42
+ localTreasuryShareBps: value.localTreasuryShareBps,
43
+ treasuryDistributionBps: value.treasuryDistributionBps,
44
+ };
45
+ }
46
+ function description(intent) {
47
+ const quote = intent.quote;
48
+ if (!quote.params)
49
+ return 'Legacy Crafting Process has no captured governance fee snapshot. No governed fee amount or recipient is inferred from synthetic defaults.';
50
+ const value = quote.params;
51
+ return `Fee policy source: ${quote.source}. Recipe fee multiplier: ${value.craftingFeeBps} basis points (10,000 = 1×); Local Market fee: ${value.localMarketFeeBps} basis points of executed ATLAS value; local Treasury share: ${value.localTreasuryShareBps} basis points of governed fees.${intent.process?.feeRecipient ? ` Captured original recipe recipient: ${intent.process.feeRecipient}.` : ''}${intent.treasury?.state === 'initialized' ? ` Treasury: ${intent.treasury.address}.` : ''} These rates do not predict an executed debit and can race a policy change after validation.`;
52
+ }
53
+ /** Resolve current fee accounts and a finite quote without creating or funding anything. */
54
+ export async function resolveGovernanceFees(ctx, request, history) {
55
+ requireFee(history.intent.game === request.game &&
56
+ history.intent.system === request.system, 'Fee and history scopes do not match.');
57
+ requireFee(request.mode === 'crafting-complete'
58
+ ? request.process !== undefined
59
+ : request.process === undefined, 'The fee route has an invalid Crafting Process selection.');
60
+ const [governanceAddress, governanceBump] = await derive('StarbaseGovernance', request.system, request.starbaseSeqId);
61
+ const [cacheAddress, cacheBump] = await derive('CurrencyConfig', request.game);
62
+ const needsCache = request.mode !== 'crafting-start' || request.hasHab === true;
63
+ const firstAddresses = request.mode === 'crafting-complete'
64
+ ? [request.process, cacheAddress]
65
+ : [
66
+ governanceAddress,
67
+ ...(needsCache ? [cacheAddress] : []),
68
+ request.system,
69
+ ];
70
+ const read = async (addresses) => {
71
+ const rows = await readContextRawAccounts(ctx, addresses, {
72
+ commitment: 'confirmed',
73
+ });
74
+ requireFee(rows.length === addresses.length &&
75
+ rows.every((raw, index) => !raw ||
76
+ (raw.address === addresses[index] && raw.slot >= history.slot)), 'Fee-routing reads are incomplete or older than their history context.');
77
+ return rows;
78
+ };
79
+ const rows = await read(firstAddresses);
80
+ if (request.mode !== 'crafting-complete') {
81
+ const raw = rows[rows.length - 1];
82
+ requireFee(raw && !raw.executable, 'The fee route System account is missing or invalid.');
83
+ const system = starSystemAccountDefinition.decode(raw);
84
+ const canonical = await deriveStarSystemAddress(request.game, system.systemId);
85
+ requireFee(raw.address === request.system &&
86
+ canonical === request.system &&
87
+ system.game === request.game &&
88
+ system.sequenceId === request.starbaseSeqId &&
89
+ system.starbase !== undefined, 'The fee route System does not match its canonical address, Game or active Starbase sequence.');
90
+ }
91
+ let currencyCache;
92
+ if (needsCache) {
93
+ const value = decode(rows[1], cacheAddress, CURRENCY_CONFIG_CACHE_DISCRIMINATOR, getCurrencyConfigCacheDecoder());
94
+ requireFee(value.gameId === request.game && value.bump === cacheBump, 'CurrencyCache does not match the configured Game or canonical PDA bump.');
95
+ currencyCache = { address: cacheAddress, version: value.version };
96
+ }
97
+ let governance;
98
+ let process;
99
+ let quote;
100
+ let treasuryGovernance;
101
+ let treasuryRequired = false;
102
+ if (request.mode === 'crafting-complete') {
103
+ const raw = rows[0];
104
+ requireFee(raw && raw.address === request.process && !raw.executable, 'The selected Crafting Process is missing or invalid.');
105
+ const value = craftingProcessAccountDefinition.decode(raw);
106
+ requireFee(value.system === request.system &&
107
+ value.starbaseSequenceId === request.starbaseSeqId, 'The Crafting Process belongs to a different System or Starbase generation.');
108
+ process = {
109
+ address: request.process,
110
+ version: value.version,
111
+ ...(value.feeRecipient === undefined
112
+ ? {}
113
+ : { feeRecipient: value.feeRecipient }),
114
+ ...(value.feeGovernance === undefined
115
+ ? {}
116
+ : { feeGovernance: value.feeGovernance }),
117
+ ...(value.feeSnapshot === undefined
118
+ ? {}
119
+ : { feeSnapshot: value.feeSnapshot }),
120
+ };
121
+ quote = value.feeSnapshot
122
+ ? {
123
+ source: 'process-snapshot',
124
+ params: {
125
+ craftingFeeBps: value.feeSnapshot.craftingFeeBasisPoints,
126
+ localMarketFeeBps: value.feeSnapshot.localMarketFeeBasisPoints,
127
+ localTreasuryShareBps: value.feeSnapshot.localTreasuryShareBasisPoints,
128
+ },
129
+ }
130
+ : { source: 'legacy-process' };
131
+ treasuryGovernance = value.feeGovernance;
132
+ treasuryRequired = treasuryGovernance !== undefined;
133
+ }
134
+ else {
135
+ const raw = rows[0];
136
+ const value = raw
137
+ ? decode(raw, governanceAddress, STARBASE_GOVERNANCE_DISCRIMINATOR, getStarbaseGovernanceDecoder())
138
+ : undefined;
139
+ if (value) {
140
+ requireFee(value.version === 2 || value.version === 3, 'Starbase governance has an unsupported schema version.');
141
+ requireFee(value.gameId === request.game &&
142
+ value.system === request.system &&
143
+ value.starbaseSeqId === request.starbaseSeqId &&
144
+ value.bump === governanceBump &&
145
+ value.enabled <= 1, 'Starbase governance has invalid scope, sequence, bump or enabled state.');
146
+ requireFee(!(value.version === 3 && history.intent.state === 'absent'), 'This Starbase governance requires initialized daily Democracy history.');
147
+ governance = {
148
+ address: governanceAddress,
149
+ state: 'initialized',
150
+ version: value.version,
151
+ enabled: value.enabled,
152
+ controllerFaction: value.controllerFaction,
153
+ starbaseSeqId: value.starbaseSeqId,
154
+ ...(history.intent.state === 'absent' && value.enabled === 1
155
+ ? { activeParams: params(value.activeParams) }
156
+ : {}),
157
+ };
158
+ }
159
+ else
160
+ governance = { address: governanceAddress, state: 'absent' };
161
+ if (history.intent.state === 'initialized')
162
+ quote = {
163
+ source: history.intent.enabled === 0
164
+ ? 'history-disabled'
165
+ : history.intent.generation
166
+ ? 'history-generation'
167
+ : 'history-policy',
168
+ params: params(history.intent.effectiveParams),
169
+ };
170
+ else if (value?.enabled)
171
+ quote = { source: 'governance', params: params(value.activeParams) };
172
+ else
173
+ quote = {
174
+ source: 'default',
175
+ params: {
176
+ craftingFeeBps: 10000,
177
+ localMarketFeeBps: 0,
178
+ localTreasuryShareBps: 0,
179
+ treasuryDistributionBps: 0,
180
+ },
181
+ };
182
+ if (request.mode === 'market') {
183
+ treasuryGovernance = governanceAddress;
184
+ treasuryRequired = quote.params.localTreasuryShareBps > 0;
185
+ }
186
+ }
187
+ let treasury;
188
+ if (treasuryGovernance) {
189
+ const [treasuryAddress, treasuryBump] = await derive('StarbaseTreasury', treasuryGovernance);
190
+ const [raw] = await read([treasuryAddress]);
191
+ if (raw) {
192
+ const value = decode(raw, treasuryAddress, STARBASE_TREASURY_DISCRIMINATOR, getStarbaseTreasuryDecoder());
193
+ requireFee(value.governance === treasuryGovernance &&
194
+ value.bump === treasuryBump &&
195
+ (request.mode !== 'market' || governance?.state === 'initialized'), 'Starbase Treasury does not match its governance or canonical PDA.');
196
+ treasury = {
197
+ address: treasuryAddress,
198
+ state: 'initialized',
199
+ version: value.version,
200
+ governance: value.governance,
201
+ };
202
+ }
203
+ else {
204
+ requireFee(!treasuryRequired, 'This fee route requires a Starbase Treasury that has not been initialized.');
205
+ treasury = { address: treasuryAddress, state: 'absent' };
206
+ }
207
+ }
208
+ const intent = {
209
+ request: { ...request },
210
+ ...(governance ? { governance } : {}),
211
+ ...(currencyCache ? { currencyCache } : {}),
212
+ ...(treasury ? { treasury } : {}),
213
+ ...(process ? { process } : {}),
214
+ quote,
215
+ };
216
+ return {
217
+ intent,
218
+ accounts: {
219
+ ...(request.mode === 'crafting-complete'
220
+ ? {}
221
+ : { starbaseGovernance: governanceAddress }),
222
+ ...(currencyCache ? { currencyCache: cacheAddress } : {}),
223
+ ...(treasury?.state === 'initialized'
224
+ ? { starbaseTreasury: treasury.address }
225
+ : {}),
226
+ },
227
+ description: description(intent),
228
+ };
229
+ }
230
+ /** Compare finite serialized fields; mutable shared balances are deliberately absent. */
231
+ export function matchGovernanceFeesIntent(expected, actual) {
232
+ const canonical = (value) => JSON.stringify(value, (_key, field) => typeof field === 'bigint'
233
+ ? field.toString()
234
+ : field && typeof field === 'object' && !Array.isArray(field)
235
+ ? Object.fromEntries(Object.entries(field).sort(([left], [right]) => left.localeCompare(right)))
236
+ : field);
237
+ return canonical(expected) === canonical(actual);
238
+ }
239
+ //# sourceMappingURL=governance-fees.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"governance-fees.js","sourceRoot":"","sources":["../../../src/internal/planning/governance-fees.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { type Address } from '@solana/kit';
2
+ import type { SageContext } from '../../client/contracts.js';
3
+ import type { PlanPrecondition, PlanStep } from '../../planning/index.js';
4
+ import { type HistoryIntent, type ResolvedDemocracyHistory } from './democracy-history.js';
5
+ import { type XpRuntimeIntent, type XpRuntimeAccounts } from './xp-runtime.js';
6
+ import { resolveGovernanceFees, type FeeIntent } from './governance-fees.js';
7
+ type FeeAccounts = Awaited<ReturnType<typeof resolveGovernanceFees>>['accounts'];
8
+ type BaseGuard = {
9
+ readonly address: Address;
10
+ readonly describes: string;
11
+ readonly dataHash?: never;
12
+ };
13
+ /** Finite runtime eligibility and consumed fee routes, excluding changing balances. */
14
+ export type RuntimeGuard = BaseGuard & ({
15
+ readonly kind: 'democracy-history';
16
+ readonly intent: HistoryIntent;
17
+ readonly accounts: ResolvedDemocracyHistory['accounts'];
18
+ } | {
19
+ readonly kind: 'xp-runtime';
20
+ readonly intent: XpRuntimeIntent;
21
+ readonly accounts: XpRuntimeAccounts;
22
+ } | {
23
+ readonly kind: 'governance-fees';
24
+ readonly intent: FeeIntent;
25
+ readonly accounts: FeeAccounts;
26
+ });
27
+ export type RuntimeWire<T> = T extends bigint ? string : T extends Address ? string : T extends object ? {
28
+ readonly [K in keyof T]: RuntimeWire<T[K]>;
29
+ } : T;
30
+ export type RuntimeGuardJson = RuntimeWire<RuntimeGuard>;
31
+ export declare function isRuntimeGuard(value: {
32
+ readonly kind?: unknown;
33
+ }): value is RuntimeGuard;
34
+ /** Strict nested runtime parsing applies both to factory values and persisted JSON. */
35
+ export declare function normalizeRuntimeGuard(value: unknown, field: string, wire?: boolean): RuntimeGuard;
36
+ /** Bigints use canonical decimal strings; schema validation excludes arbitrary object graphs. */
37
+ export declare function runtimeGuardToJSON(guard: RuntimeGuard): RuntimeGuardJson;
38
+ /** Resolve canonical accounts again; shared balances and XP counters are not compared. */
39
+ export declare function revalidateRuntimeGuards(ctx: SageContext, guards: readonly RuntimeGuard[]): Promise<void>;
40
+ /** Old layouts and unguarded persisted instructions fail before assembly or signing. */
41
+ export declare function validateRuntimeInstructions(steps: readonly PlanStep[], preconditions: readonly PlanPrecondition[]): void;
42
+ export {};
43
+ //# sourceMappingURL=runtime-guards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-guards.d.ts","sourceRoot":"","sources":["../../../src/internal/planning/runtime-guards.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,OAAO,EAGb,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAgB7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAGL,KAAK,aAAa,EAElB,KAAK,wBAAwB,EAC9B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,qBAAqB,EAErB,KAAK,SAAS,EACf,MAAM,sBAAsB,CAAC;AAE9B,KAAK,WAAW,GAAG,OAAO,CACxB,UAAU,CAAC,OAAO,qBAAqB,CAAC,CACzC,CAAC,UAAU,CAAC,CAAC;AACd,KAAK,SAAS,GAAG;IACf,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;CAC3B,CAAC;AACF,uFAAuF;AACvF,MAAM,MAAM,YAAY,GAAG,SAAS,GAClC,CACI;IACE,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,wBAAwB,CAAC,UAAU,CAAC,CAAC;CACzD,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;CACtC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;CAChC,CACJ,CAAC;AACJ,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GACzC,MAAM,GACN,CAAC,SAAS,OAAO,GACf,MAAM,GACN,CAAC,SAAS,MAAM,GACd;IAAE,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GAC9C,CAAC,CAAC;AACV,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;AACzD,wBAAgB,cAAc,CAAC,KAAK,EAAE;IACpC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;CACzB,GAAG,KAAK,IAAI,YAAY,CAMxB;AAkLD,uFAAuF;AACvF,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,MAAM,EACb,IAAI,UAAQ,GACX,YAAY,CAuDd;AACD,iGAAiG;AACjG,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,gBAAgB,CAMxE;AAiBD,0FAA0F;AAC1F,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,SAAS,YAAY,EAAE,GAC9B,OAAO,CAAC,IAAI,CAAC,CAuCf;AAgTD,wFAAwF;AACxF,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,SAAS,QAAQ,EAAE,EAC1B,aAAa,EAAE,SAAS,gBAAgB,EAAE,GACzC,IAAI,CAkIN"}