playlist-data-engine 1.7.1 → 1.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -54,7 +54,8 @@ The engine is modular — use what you want, ignore the rest. Everything here se
54
54
  ### Playlist Parsing & Data Extraction (Core Feature)
55
55
 
56
56
  - **Serverless Playlist Parser** — Parse Arweave-hosted playlists into clean, structured data with automatic gateway failover via the Ario Wayfinder network
57
- - **Quick Data Extraction** — One-liners to grab audio URLs, image URLs, track titles, artists, genres, tags, durations, VRM models, and more
57
+ - **Quick Data Extraction** — One-liners to grab audio URLs, image URLs, track titles, artists, genres, tags, durations, VRM models, mixes (`getMixes`, `getMixTracks`), and more
58
+ - **Stems & Alternate Mixes** — Tracks ship stems and alternate mixes (Instrumental, Radio Edit) in metadata: find a mix by name (`findMixByName`), resolve it to a playable URL (`resolveMixUrl`), or swap a parsed track's playback (`selectMix`)
58
59
  - **Color Extraction** — K-means color palette extraction from track artwork
59
60
  - **Arweave Gateway Manager** — Built-in resilience: automatically races multiple Arweave gateways plus the Ario Wayfinder, caches working gateways, and falls back seamlessly when one fails
60
61
 
@@ -357,6 +358,8 @@ The engine runs in both environments. Audio analysis uses the Web Audio API (bro
357
358
  |----------|---------------|
358
359
  | **[DATA_ENGINE_REFERENCE.md](docs/DATA_ENGINE_REFERENCE.md)** | Complete API reference — every type, class, method, and reference table |
359
360
  | **[USAGE_IN_OTHER_PROJECTS.md](docs/USAGE_IN_OTHER_PROJECTS.md)** | Integration guide with working code examples for every major feature |
361
+ | **[PLAYLIST_PARSING.md](docs/features/PLAYLIST_PARSING.md)** | Playlist parsing options, track data fields, track extras, alternate mixes, and mix selection |
362
+ | **[GATEWAY_RESOLUTION.md](docs/features/GATEWAY_RESOLUTION.md)** | Arweave gateway resolution, AR.IO Wayfinder failover, IPFS URL utilities |
360
363
  | **[AUDIO_ANALYSIS.md](docs/features/AUDIO_ANALYSIS.md)** | Sonic fingerprinting, full timeline, TensorFlow genre/mood classification, pitch detection |
361
364
  | **[BEAT_DETECTION.md](docs/features/BEAT_DETECTION.md)** | Beat detection, manual charts, auto chart generation, pitch-based button mapping |
362
365
  | **[COMBAT_SYSTEM.md](docs/features/COMBAT_SYSTEM.md)** | Turn-based combat engine, simulations, AI combat, parameter sweeps |
@@ -364,7 +367,7 @@ The engine runs in both environments. Audio analysis uses the Web Audio API (bro
364
367
  | **[EQUIPMENT_SYSTEM.md](docs/features/EQUIPMENT_SYSTEM.md)** | Equipment generation, enchanting, set bonuses, stat effects |
365
368
  | **[CONTENT_PACKS.md](docs/features/CONTENT_PACKS.md)** | Content pack system, creating custom content packs |
366
369
  | **[CUSTOM_CONTENT.md](docs/features/CUSTOM_CONTENT.md)** | Custom races, classes, enemies, equipment, spells |
367
- | **[ROLS_AND_SEEDS.md](docs/features/ROLS_AND_SEEDS.md)** | Seeded RNG, dice rolling, deterministic combat simulations |
370
+ | **[ROLLS_AND_SEEDS.md](docs/features/ROLLS_AND_SEEDS.md)** | Seeded RNG, dice rolling, deterministic combat simulations |
368
371
  | **[XP_AND_STATS.md](docs/features/XP_AND_STATS.md)** | XP sources, leveling, stat strategies, prestige system |
369
372
  | **[IRL_SENSORS.md](docs/features/IRL_SENSORS.md)** | Real-world sensor integration, activity bonuses |
370
373
  | **[PREREQUISITES.md](docs/features/PREREQUISITES.md)** | Dependencies, environment setup, system requirements |
@@ -374,7 +377,7 @@ The engine runs in both environments. Audio analysis uses the Web Audio API (bro
374
377
 
375
378
  ## Project Status
376
379
 
377
- - **Version**: 1.1.1
380
+ - **Version**: 1.7.2
378
381
  - **TypeScript**: Strict mode
379
382
  - **Tests**: 7,205 tests across 183 test files
380
383
  - **Module**: Dual ESM/CJS with full type declarations
@@ -1 +1 @@
1
- {"version":3,"file":"PlaylistParser.d.ts","sourceRoot":"","sources":["../../../src/core/parser/PlaylistParser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAiB,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAMlG,MAAM,WAAW,qBAAqB;IAClC,2CAA2C;IAC3C,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B,kDAAkD;IAClD,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,yEAAyE;IACzE,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAEnC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,qBAAa,cAAc;IACvB,OAAO,CAAC,OAAO,CAAwB;gBAE3B,OAAO,GAAE,qBAA0B;IAU/C;;;OAGG;IACG,KAAK,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAmDlE;;;OAGG;YACW,gBAAgB;IAoB9B;;;OAGG;YACW,UAAU;IAmJxB;;;;OAIG;YACW,gBAAgB;CAqBjC"}
1
+ {"version":3,"file":"PlaylistParser.d.ts","sourceRoot":"","sources":["../../../src/core/parser/PlaylistParser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAiB,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAMlG,MAAM,WAAW,qBAAqB;IAClC,2CAA2C;IAC3C,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B,kDAAkD;IAClD,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,yEAAyE;IACzE,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAEnC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,qBAAa,cAAc;IACvB,OAAO,CAAC,OAAO,CAAwB;gBAE3B,OAAO,GAAE,qBAA0B;IAU/C;;;OAGG;IACG,KAAK,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAmDlE;;;OAGG;YACW,gBAAgB;IAoB9B;;;OAGG;YACW,UAAU;IAyJxB;;;;OAIG;YACW,gBAAgB;CAqBjC"}
@@ -6,11 +6,15 @@
6
6
  *
7
7
  * - getTrackMetadata: Full raw parsed metadata passthrough
8
8
  * - getTrackExtras: Summary of available stems, mixes, and their conditions
9
+ * - resolveSelectedMix: Which of a track's mixes a playlist entry pinned
10
+ * - findMixByName / getPreferredMixByQuality / getUniqueMixes: Mix lookup & grouping
11
+ * - resolveMixUrl / selectMix: Turn a chosen mix into a playable track
9
12
  * - evaluateMixConditions: Evaluate mix conditions against sensor context
10
13
  *
11
14
  * @module core/parser/TrackExtras
12
15
  */
13
16
  import type { EnvironmentalContext } from '../types/Environmental.js';
17
+ import type { PlaylistTrack } from '../types/Playlist.js';
14
18
  /** A single stem from the metadata */
15
19
  export interface StemInfo {
16
20
  name: string;
@@ -170,6 +174,150 @@ export declare function getTrackExtras(metadata: Record<string, unknown> | null)
170
174
  * placeholder was, or the name matches no mix on the track
171
175
  */
172
176
  export declare function resolveSelectedMix(wrapperMix: unknown, attributes: Record<string, string | number> | null | undefined, mixes: MixInfo[] | undefined): SelectedMixInfo | null;
177
+ /** Options for findMixByName */
178
+ export interface FindMixByNameOptions {
179
+ /** Match names ignoring case and surrounding whitespace (default: true) */
180
+ caseInsensitive?: boolean;
181
+ /** Which master to prefer when several mixes share the name (default: 'lossy', matching the pin flow) */
182
+ prefer?: 'lossy' | 'lossless';
183
+ /**
184
+ * Also match alias spellings and concept names — 'inst' finds 'Instrumental',
185
+ * 'aca' finds 'Acapella', 'vox' finds 'Vocals Only'. Exact names always win.
186
+ * Only applies in case-insensitive mode (default: true)
187
+ */
188
+ aliases?: boolean;
189
+ }
190
+ /**
191
+ * Find a track's mix by name.
192
+ *
193
+ * Unlike the playlist entry's pin (resolveSelectedMix), which matches names
194
+ * exactly and case-sensitively, this is the tolerant lookup for user-facing
195
+ * choice. Three passes, strictest first: the name as written (modulo case and
196
+ * whitespace), then alias spellings — 'inst' and 'no vocals' find
197
+ * 'Instrumental'; 'aca', 'acap' and 'vox' find 'Acapella'; 'tvmix' and
198
+ * 'tv mix' find 'Karaoke', which is its own concept, never an instrumental —
199
+ * matched as whole words so 'Industrial' never matches 'instrumental'.
200
+ * When several mixes match (a lossy and a lossless master), the quality
201
+ * preference decides.
202
+ *
203
+ * @param mixes - The track's mixes, from getTrackExtras
204
+ * @param name - The mix name to find
205
+ * @param options - Matching and quality-preference options
206
+ * @returns The mix, or null when no mix matches
207
+ *
208
+ * @example
209
+ * ```ts
210
+ * const extras = getTrackExtras(metadata);
211
+ * const instrumental = findMixByName(extras.mixes, 'instrumental');
212
+ * const strict = findMixByName(extras.mixes, 'Instrumental', { aliases: false });
213
+ * ```
214
+ */
215
+ export declare function findMixByName(mixes: MixInfo[] | null | undefined, name: string, options?: FindMixByNameOptions): MixInfo | null;
216
+ /**
217
+ * Pick the preferred master among mixes that share one name.
218
+ *
219
+ * A mix name can ship twice — once lossy (mp3) and once lossless (wav/flac).
220
+ * `prefer: 'lossy'` picks the compressed master (the parser's own behavior
221
+ * when resolving a pin), `'lossless'` the high-fidelity one. Mixes without a
222
+ * recognized mime type only win as the last-resort fallback.
223
+ *
224
+ * @param namedMixes - Mixes sharing one name
225
+ * @param prefer - Which quality to prefer (default: 'lossy')
226
+ * @returns The preferred mix, or null when the list is empty
227
+ */
228
+ export declare function getPreferredMixByQuality(namedMixes: MixInfo[] | null | undefined, prefer?: 'lossy' | 'lossless'): MixInfo | null;
229
+ /** Mixes grouped under one name (e.g. a lossy + lossless pair) */
230
+ export interface MixGroup {
231
+ /** The shared name, in the casing the metadata declares it */
232
+ name: string;
233
+ /** Every mix under this name; the first entry is the display pick */
234
+ mixes: MixInfo[];
235
+ }
236
+ /**
237
+ * Group a track's mixes by name, collapsing lossy/lossless pairs.
238
+ *
239
+ * The grouping key ignores case and surrounding whitespace, so 'Instrumental'
240
+ * and 'instrumental ' land in one group; the group's name keeps the casing of
241
+ * its first member.
242
+ *
243
+ * @param mixes - The track's mixes, from getTrackExtras
244
+ * @returns One group per distinct mix name, in first-appearance order
245
+ *
246
+ * @example
247
+ * ```ts
248
+ * for (const group of getUniqueMixes(extras.mixes)) {
249
+ * console.log(`${group.name} (${group.mixes.length} masters)`);
250
+ * }
251
+ * ```
252
+ */
253
+ export declare function getUniqueMixes(mixes: MixInfo[] | null | undefined): MixGroup[];
254
+ /** Options for resolveMixUrl */
255
+ export interface ResolveMixUrlOptions {
256
+ /** Gateway-resolve the final URL through arweaveGatewayManager (default: true) */
257
+ resolveUrl?: boolean;
258
+ /** Follow a mix whose uri points at a metadata JSON file rather than audio (default: true) */
259
+ followMetadata?: boolean;
260
+ /** Timeout for the metadata fetch, in milliseconds (default: 10000) */
261
+ fetchTimeoutMs?: number;
262
+ }
263
+ /**
264
+ * Resolve a mix to a playable audio URL.
265
+ *
266
+ * The parser returns mix uris as written in the metadata — it never resolves
267
+ * them — so this is the last mile before playback. Mix uris come in three
268
+ * shapes, all handled: direct Arweave/IPFS identifiers and URLs (gateway-
269
+ * resolved), and the standard's metadata-JSON indirection, where a mix's uri
270
+ * points at a metadata file whose audio fields name the actual song (followed
271
+ * one level, per the 721J "Alt Outro" example).
272
+ *
273
+ * @param mix - A mix from getTrackExtras, or a selection from resolveSelectedMix
274
+ * @param options - Resolution options
275
+ * @returns The playable URL, or null when the mix has no uri or resolution failed
276
+ *
277
+ * @example
278
+ * ```ts
279
+ * const url = await resolveMixUrl(findMixByName(extras.mixes, 'Instrumental'));
280
+ * ```
281
+ */
282
+ export declare function resolveMixUrl(mix: MixInfo | SelectedMixInfo | null | undefined, options?: ResolveMixUrlOptions): Promise<string | null>;
283
+ /** Options for selectMix */
284
+ export interface SelectMixOptions {
285
+ /** Which master to prefer when several mixes share the name (default: 'lossy', matching the pin flow) */
286
+ prefer?: 'lossy' | 'lossless';
287
+ /** Also match alias spellings — 'inst' finds 'Instrumental' (default: true) */
288
+ aliases?: boolean;
289
+ /** Gateway-resolve the resulting audio URLs (default: true) */
290
+ resolveUrl?: boolean;
291
+ /** Follow metadata-JSON mix uris to the song file (default: true) */
292
+ followMetadata?: boolean;
293
+ /** When provided, the chosen mix must currently satisfy its conditions */
294
+ conditionsContext?: EvaluationContext;
295
+ }
296
+ /**
297
+ * Choose which of a track's mixes plays, returning a play-ready track.
298
+ *
299
+ * The consumer-side twin of the playlist entry's pin: the parser repoints a
300
+ * pinned track's audio URLs at the pinned mix at parse time, and this does
301
+ * the same for a user's choice. The input track is never mutated. Name
302
+ * matching is tolerant (case-insensitive, trimmed, aliased — 'inst' finds
303
+ * 'Instrumental'); conditions, when a
304
+ * context is given, must currently pass.
305
+ *
306
+ * @param track - A parsed playlist track (with extras from the parser)
307
+ * @param mixName - The mix to play (e.g. 'Instrumental')
308
+ * @param options - Quality preference, resolution, and condition gating
309
+ * @returns A copy of the track with audio URLs swapped to the mix, or null
310
+ * when the track has no such mix or it is unavailable
311
+ *
312
+ * @example
313
+ * ```ts
314
+ * const playlist = await new PlaylistParser().parse(raw);
315
+ * const track = playlist.tracks[0];
316
+ * const instrumental = await selectMix(track, 'Instrumental', { prefer: 'lossless' });
317
+ * if (instrumental) audio.src = instrumental.audio_url;
318
+ * ```
319
+ */
320
+ export declare function selectMix(track: PlaylistTrack, mixName: string, options?: SelectMixOptions): Promise<PlaylistTrack | null>;
173
321
  /**
174
322
  * Evaluate all mixes' conditions against the current context.
175
323
  *
@@ -184,8 +332,9 @@ export declare function resolveSelectedMix(wrapperMix: unknown, attributes: Reco
184
332
  * @example
185
333
  * ```ts
186
334
  * const extras = getTrackExtras(metadata);
335
+ * const sensors = new EnvironmentalSensors();
187
336
  * const context: EvaluationContext = {
188
- * environment: environmentalSensors.getContext(),
337
+ * environment: await sensors.updateSnapshot(),
189
338
  * appState: { playCount: 5, isFavorite: true },
190
339
  * };
191
340
  * const results = evaluateMixConditions(extras, context);
@@ -1 +1 @@
1
- {"version":3,"file":"TrackExtras.d.ts","sourceRoot":"","sources":["../../../src/core/parser/TrackExtras.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TrackExtras.d.ts","sourceRoot":"","sources":["../../../src/core/parser/TrackExtras.ts"],"names":[],"mappings":"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"}
@@ -59,6 +59,10 @@ export interface PlaylistTrack {
59
59
  attributes?: Record<string, string | number>;
60
60
  audio_ipfs_hash?: string;
61
61
  artwork_ipfs_hash?: string;
62
+ mint_function?: string;
63
+ mint_price?: string;
64
+ mint_snapshot_time?: number;
65
+ mint_token?: string;
62
66
  extras?: TrackExtrasInfo;
63
67
  }
64
68
  /**
@@ -91,6 +95,10 @@ export interface RawArweavePlaylist {
91
95
  image_url?: string;
92
96
  audio_ipfs_hash?: string;
93
97
  artwork_ipfs_hash?: string;
98
+ mint_function?: string;
99
+ mint_price?: string;
100
+ mint_snapshot_time?: number;
101
+ mint_token?: string;
94
102
  metadata: string | Record<string, unknown>;
95
103
  }>;
96
104
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Playlist.d.ts","sourceRoot":"","sources":["../../../src/core/types/Playlist.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Playlist.d.ts","sourceRoot":"","sources":["../../../src/core/types/Playlist.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEhE;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IAE/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,aAAa,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,QAAQ,CAAC;IACzD,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,MAAM,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAE1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IAEvB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IAGjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,SAAS,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,uFAAuF;IACvF,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mGAAmG;IACnG,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IAGjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IAGb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IAG7C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAG3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,MAAM,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,QAAQ,CAAC;IACzD,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,KAAK,CAAC;QAEV,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QAGd,YAAY,CAAC,EAAE,MAAM,CAAC;QAKtB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;QAGnB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAG3B,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;QAIpB,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC9C,CAAC,CAAC;CACN"}