skygame-data 1.1.21 → 1.1.22

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.
@@ -0,0 +1,21 @@
1
+ export interface IOutfitRequestBackground {
2
+ guid: string;
3
+ url: string;
4
+ filter?: string;
5
+ default?: boolean;
6
+ section?: IOutfitRequestBackgrounds;
7
+ }
8
+ export interface IOutfitRequestBackgrounds {
9
+ guid: string;
10
+ label: string;
11
+ info?: string;
12
+ attribution?: string;
13
+ default?: boolean;
14
+ backgrounds: Array<IOutfitRequestBackground>;
15
+ }
16
+ export interface IOutfitRequestConfig {
17
+ backgrounds: {
18
+ [key: string]: IOutfitRequestBackgrounds;
19
+ };
20
+ }
21
+ //# sourceMappingURL=outfit-request.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outfit-request.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/outfit-request.interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAGlB,OAAO,CAAC,EAAE,yBAAyB,CAAC;CACrC;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAGlB,WAAW,EAAE,KAAK,CAAC,wBAAwB,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,yBAAyB,CAAA;KAAE,CAAC;CAC3D"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=outfit-request.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outfit-request.interface.js","sourceRoot":"","sources":["../../src/interfaces/outfit-request.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import type { IConfig, IGuid } from './base.interface.js';
2
+ export interface IQuestConfig extends IConfig<IQuest> {
3
+ }
4
+ export interface IQuest extends IGuid {
5
+ }
6
+ //# sourceMappingURL=quest.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quest.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/quest.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,WAAW,YAAa,SAAQ,OAAO,CAAC,MAAM,CAAC;CAAG;AAExD,MAAM,WAAW,MAAO,SAAQ,KAAK;CAEpC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=quest.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quest.interface.js","sourceRoot":"","sources":["../../src/interfaces/quest.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,25 @@
1
+ import type { IConfig, IGuid, IPeriod } from './base.interface.js';
2
+ import type { ISpiritTree } from './spirit-tree.interface.js';
3
+ import type { ISpirit } from './spirit.interface.js';
4
+ import type { IArea } from './area.interface.js';
5
+ import type { ICalendarFm, IWiki } from './wiki.interface.js';
6
+ export interface IReturningSpiritsConfig extends IConfig<IReturningSpirits> {
7
+ }
8
+ export interface IReturningSpirits extends IGuid, IPeriod {
9
+ /** Name of the occassion. */
10
+ name?: string;
11
+ /** Area the spirits visited. */
12
+ area?: IArea;
13
+ /** Visiting spirits. */
14
+ spirits: Array<IReturningSpirit>;
15
+ imageUrl?: string;
16
+ draft?: boolean;
17
+ _wiki?: IWiki;
18
+ _calendar?: ICalendarFm;
19
+ }
20
+ export interface IReturningSpirit extends IGuid {
21
+ return: IReturningSpirits;
22
+ spirit: ISpirit;
23
+ tree: ISpiritTree;
24
+ }
25
+ //# sourceMappingURL=returning-spirits.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"returning-spirits.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/returning-spirits.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE9D,MAAM,WAAW,uBAAwB,SAAQ,OAAO,CAAC,iBAAiB,CAAC;CAAG;AAE9E,MAAM,WAAW,iBAAkB,SAAQ,KAAK,EAAE,OAAO;IACvD,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,iCAAiC;IACjC,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,wBAAwB;IACxB,OAAO,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAEjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAGhB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,SAAS,CAAC,EAAE,WAAW,CAAC;CACzB;AAED,MAAM,WAAW,gBAAiB,SAAQ,KAAK;IAE7C,MAAM,EAAE,iBAAiB,CAAC;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,WAAW,CAAC;CACnB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=returning-spirits.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"returning-spirits.interface.js","sourceRoot":"","sources":["../../src/interfaces/returning-spirits.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export declare const loader = "This is the loader module";
2
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM,8BAA8B,CAAC"}
package/dist/loader.js ADDED
@@ -0,0 +1,2 @@
1
+ export const loader = 'This is the loader module';
2
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,MAAM,GAAG,2BAA2B,CAAC"}
@@ -0,0 +1,39 @@
1
+ import type { IGuid } from './interfaces/base.interface.js';
2
+ import type { ISkyData } from './interfaces/sky-data.interface.js';
3
+ import { type IItem } from './index.js';
4
+ export declare class SkyDataResolver {
5
+ data: ISkyData;
6
+ guids: Map<string, IGuid>;
7
+ itemIds: Map<number, IItem>;
8
+ constructor(data: any);
9
+ /**
10
+ * Parses Sky data from a JSONC string.
11
+ * To resolve references, use `resolveSkyData` after parsing.
12
+ * @param json - The contents of `/assets/everything.json`.
13
+ */
14
+ static parse(json: string): any;
15
+ /**
16
+ * Resolves all references in the Sky data object.
17
+ * The object is modified in-place.
18
+ * @param data - The Sky data object to resolve.
19
+ */
20
+ static resolve(data: any): ISkyData;
21
+ resolve(): void;
22
+ private registerGuids;
23
+ private registerGuid;
24
+ private resolveRealms;
25
+ private resolveAreas;
26
+ private resolveSeasons;
27
+ private resolveSpirits;
28
+ private resolveTravelingSpirits;
29
+ private resolveSpecialVisits;
30
+ private resolveSpiritTrees;
31
+ private resolveSpiritTreeTiers;
32
+ private resolveEvents;
33
+ private resolveShops;
34
+ private resolveItems;
35
+ private resolveItemLists;
36
+ private resolveSeasonItems;
37
+ private resolveNode;
38
+ }
39
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAGnE,OAAO,EAAuE,KAAK,KAAK,EAA+I,MAAM,YAAY,CAAC;AAM1P,qBAAa,eAAe;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,qBAA4B;IACjC,OAAO,qBAA4B;gBAEvB,IAAI,EAAE,GAAG;IAIrB;;;;MAIE;IACF,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG;IAQ/B;;;;OAIG;IACH,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,GAAG,QAAQ;IAMnC,OAAO,IAAI,IAAI;IAqBf,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,aAAa;IAsBrB,OAAO,CAAC,YAAY;IA8BpB,OAAO,CAAC,cAAc;IAgCtB,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,uBAAuB;IA6B/B,OAAO,CAAC,oBAAoB;IAsC5B,OAAO,CAAC,kBAAkB;IAsB1B,OAAO,CAAC,sBAAsB;IA6B9B,OAAO,CAAC,aAAa;IA4CrB,OAAO,CAAC,YAAY;IAoCpB,OAAO,CAAC,YAAY;IA2CpB,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,kBAAkB;IAqB1B,OAAO,CAAC,WAAW;CA4CpB"}
package/dist/parser.js ADDED
@@ -0,0 +1,483 @@
1
+ import { parse } from 'jsonc-parser';
2
+ import { ItemType } from './index.js';
3
+ import { SkyDateHelper } from './helpers/date-helper.js';
4
+ import { SpiritTreeHelper } from './helpers/spirit-tree-helper.js';
5
+ export class SkyDataResolver {
6
+ data;
7
+ guids = new Map();
8
+ itemIds = new Map();
9
+ constructor(data) {
10
+ this.data = data;
11
+ }
12
+ /**
13
+ * Parses Sky data from a JSONC string.
14
+ * To resolve references, use `resolveSkyData` after parsing.
15
+ * @param json - The contents of `/assets/everything.json`.
16
+ */
17
+ static parse(json) {
18
+ return parse(json, undefined, {
19
+ disallowComments: false,
20
+ allowEmptyContent: false,
21
+ allowTrailingComma: true
22
+ });
23
+ }
24
+ /**
25
+ * Resolves all references in the Sky data object.
26
+ * The object is modified in-place.
27
+ * @param data - The Sky data object to resolve.
28
+ */
29
+ static resolve(data) {
30
+ const resolver = new SkyDataResolver(data);
31
+ resolver.resolve();
32
+ return resolver.data;
33
+ }
34
+ resolve() {
35
+ Object.values(this.data).forEach(c => this.registerGuids(c));
36
+ this.resolveRealms();
37
+ this.resolveAreas();
38
+ this.resolveSeasons();
39
+ this.resolveSpirits();
40
+ this.resolveTravelingSpirits();
41
+ this.resolveSpecialVisits();
42
+ this.resolveSpiritTreeTiers();
43
+ this.resolveSpiritTrees();
44
+ this.resolveEvents();
45
+ this.resolveShops();
46
+ this.resolveItems();
47
+ this.resolveItemLists();
48
+ this.resolveSeasonItems();
49
+ this.data.guids = this.guids;
50
+ this.data.itemIds = this.itemIds;
51
+ }
52
+ registerGuids(config) {
53
+ if (!Array.isArray(config.items)) {
54
+ return;
55
+ }
56
+ for (const item of config.items) {
57
+ this.registerGuid(item);
58
+ }
59
+ }
60
+ registerGuid(obj) {
61
+ if (!obj.guid) {
62
+ throw new Error('Missing GUID');
63
+ }
64
+ if (obj.guid?.length !== 10) {
65
+ throw new Error(`Invalid GUID: ${obj.guid}`);
66
+ }
67
+ if (this.guids.has(obj.guid)) {
68
+ throw new Error(`Duplicate GUID: ${obj.guid}`);
69
+ }
70
+ this.guids.set(obj.guid, obj);
71
+ }
72
+ resolveRealms() {
73
+ this.data.realms.items.forEach(realm => {
74
+ // Map areas to realms.
75
+ realm.areas?.forEach((area, i) => {
76
+ area = this.guids.get(area);
77
+ realm.areas[i] = area;
78
+ area.realm = realm;
79
+ });
80
+ // Map constellation spirits.
81
+ realm.constellation?.icons?.forEach((icon, i) => {
82
+ const spirit = this.guids.get(icon.spirit);
83
+ realm.constellation.icons[i].spirit = spirit;
84
+ });
85
+ // Map elders
86
+ if (realm.elder) {
87
+ realm.elder = this.guids.get(realm.elder);
88
+ }
89
+ });
90
+ }
91
+ resolveAreas() {
92
+ this.data.areas.items.forEach(area => {
93
+ // Map Spirit to Areas.
94
+ area.spirits?.forEach((spirit, i) => {
95
+ spirit = this.guids.get(spirit);
96
+ area.spirits[i] = spirit;
97
+ spirit.area = area;
98
+ });
99
+ // Map Winged Light to Area.
100
+ area.wingedLights?.forEach((wl, i) => {
101
+ wl = this.guids.get(wl);
102
+ area.wingedLights[i] = wl;
103
+ wl.area = area;
104
+ });
105
+ // Map connected areas.
106
+ area.connections?.forEach((c, i) => {
107
+ c.area = this.guids.get(c.area);
108
+ });
109
+ // Map.. Map Shrine to Area.
110
+ area.mapShrines?.forEach((ms, i) => {
111
+ const mapShrine = this.guids.get(ms);
112
+ area.mapShrines[i] = mapShrine;
113
+ mapShrine.area = area;
114
+ });
115
+ });
116
+ }
117
+ resolveSeasons() {
118
+ this.data.seasons.items.forEach((season, i) => {
119
+ season.number = i + 1;
120
+ if (typeof season.date === 'string') {
121
+ season.date = SkyDateHelper.fromStringSky(season.date);
122
+ }
123
+ if (typeof season.endDate === 'string') {
124
+ season.endDate = SkyDateHelper.fromStringSky(season.endDate).endOf('day');
125
+ }
126
+ // Map Spirits to Season.
127
+ season.spirits?.forEach((spirit, si) => {
128
+ spirit = this.guids.get(spirit);
129
+ season.spirits[si] = spirit;
130
+ spirit.season = season;
131
+ });
132
+ // Map Shops to Season
133
+ season.shops?.forEach((shop, si) => {
134
+ shop = this.guids.get(shop);
135
+ season.shops[si] = shop;
136
+ shop.season = season;
137
+ });
138
+ // Map included trees (one-way).
139
+ season.includedTrees?.forEach((tree, ti) => {
140
+ tree = this.guids.get(tree);
141
+ season.includedTrees[ti] = tree;
142
+ });
143
+ });
144
+ }
145
+ resolveSpirits() {
146
+ this.data.spirits.items.forEach((spirit, i) => {
147
+ spirit._index = i;
148
+ // Map spirits to spirit tree.
149
+ if (spirit.tree) {
150
+ const tree = this.guids.get(spirit.tree);
151
+ tree.spirit = spirit;
152
+ spirit.tree = tree;
153
+ }
154
+ // Map past versions of spirit tree.
155
+ if (spirit.treeRevisions) {
156
+ spirit.treeRevisions.forEach((pt, i) => {
157
+ const tree = this.guids.get(pt);
158
+ tree.spirit = spirit;
159
+ spirit.treeRevisions[i] = tree;
160
+ });
161
+ }
162
+ });
163
+ }
164
+ resolveTravelingSpirits() {
165
+ const tsCounts = {};
166
+ this.data.travelingSpirits.items.forEach((ts, i) => {
167
+ // Initialize dates
168
+ if (typeof ts.date === 'string') {
169
+ ts.date = SkyDateHelper.fromStringSky(ts.date);
170
+ }
171
+ ts.endDate = typeof ts.endDate === 'string'
172
+ ? SkyDateHelper.fromStringSky(ts.endDate)?.endOf('day')
173
+ : ts.date.plus({ days: 3 }).endOf('day');
174
+ // Map TS to Spirit.
175
+ const spirit = this.guids.get(ts.spirit);
176
+ ts.spirit = spirit;
177
+ spirit.ts ??= [];
178
+ spirit.ts.push(ts);
179
+ tsCounts[spirit.name] ??= 0;
180
+ tsCounts[spirit.name]++;
181
+ ts.number = i + 1;
182
+ ts.visit = tsCounts[spirit.name];
183
+ // Map TS to Spirit Tree.
184
+ const tree = this.guids.get(ts.tree);
185
+ ts.tree = tree;
186
+ tree.ts = ts;
187
+ });
188
+ }
189
+ resolveSpecialVisits() {
190
+ this.data.specialVisits.items.forEach((sv, i) => {
191
+ // Initialize dates
192
+ if (typeof sv.date === 'string') {
193
+ sv.date = SkyDateHelper.fromStringSky(sv.date);
194
+ }
195
+ if (typeof sv.endDate === 'string') {
196
+ sv.endDate = SkyDateHelper.fromStringSky(sv.endDate).endOf('day');
197
+ }
198
+ // Map SV to Area.
199
+ if (sv.area) {
200
+ const area = this.guids.get(sv.area);
201
+ sv.area = area;
202
+ area.rs ??= [];
203
+ area.rs.push(sv);
204
+ }
205
+ // Map Visits.
206
+ sv.spirits?.forEach((visit, si) => {
207
+ visit = this.guids.get(visit);
208
+ sv.spirits[si] = visit;
209
+ visit.visit = sv;
210
+ // Map Visit to Spirit.
211
+ const spirit = this.guids.get(visit.spirit);
212
+ sv.spirits[si].spirit = spirit;
213
+ spirit.visits ??= [];
214
+ spirit.visits.push(visit);
215
+ // Map Visit to Spirit Tree.
216
+ const tree = this.guids.get(visit.tree);
217
+ sv.spirits[si].tree = tree;
218
+ tree.visit = visit;
219
+ });
220
+ });
221
+ }
222
+ resolveSpiritTrees() {
223
+ this.data.spiritTrees.items.forEach(spiritTree => {
224
+ // Map Spirit Tree to Node.
225
+ if (spiritTree.node) {
226
+ const node = this.guids.get(spiritTree.node);
227
+ if (!node) {
228
+ console.error('Node not found', spiritTree.node);
229
+ }
230
+ spiritTree.node = node;
231
+ node.spiritTree = spiritTree;
232
+ this.resolveNode(node);
233
+ }
234
+ // Map Spirit tree tier.
235
+ if (typeof spiritTree.tier === 'string') {
236
+ const tier = this.guids.get(spiritTree.tier);
237
+ if (!tier) {
238
+ console.error('Spirit tree tier not found', spiritTree.tier);
239
+ }
240
+ spiritTree.tier = tier;
241
+ tier.spiritTree = spiritTree;
242
+ SpiritTreeHelper.getNodes(spiritTree).forEach(n => n.spiritTree = spiritTree);
243
+ }
244
+ });
245
+ }
246
+ resolveSpiritTreeTiers() {
247
+ this.data.spiritTreeTiers.items.forEach(tier => {
248
+ // Map tier nodes.
249
+ tier.rows?.forEach(row => {
250
+ row.forEach((node, ni) => {
251
+ if (!node) {
252
+ return;
253
+ }
254
+ const n = this.guids.get(node);
255
+ if (!n) {
256
+ console.error('Node not found', node);
257
+ }
258
+ row[ni] = n;
259
+ n.root = n;
260
+ this.resolveNode(n);
261
+ });
262
+ });
263
+ if (!tier.prev) {
264
+ tier.root = tier;
265
+ }
266
+ // Map next tier.
267
+ if (typeof tier.next === 'string') {
268
+ const nextTier = this.guids.get(tier.next);
269
+ if (!nextTier) {
270
+ console.error('Next spirit tree tier not found', tier.next);
271
+ }
272
+ tier.next = nextTier;
273
+ nextTier.prev = tier;
274
+ nextTier.root = tier.root;
275
+ }
276
+ });
277
+ }
278
+ resolveEvents() {
279
+ this.data.events.items.forEach(event => {
280
+ event.instances?.forEach((eventInstance, iInstance) => {
281
+ eventInstance = this.guids.get(eventInstance);
282
+ event.instances[iInstance] = eventInstance;
283
+ eventInstance.event = event;
284
+ eventInstance.number = iInstance + 1;
285
+ // Initialize dates
286
+ if (typeof eventInstance.date === 'string') {
287
+ eventInstance.date = SkyDateHelper.fromStringSky(eventInstance.date);
288
+ }
289
+ if (typeof eventInstance.endDate === 'string') {
290
+ eventInstance.endDate = SkyDateHelper.fromStringSky(eventInstance.endDate).endOf('day');
291
+ }
292
+ // Map shops to instance.
293
+ eventInstance.shops?.forEach((shop, iShop) => {
294
+ shop = this.guids.get(shop);
295
+ eventInstance.shops[iShop] = shop;
296
+ shop.event = eventInstance;
297
+ });
298
+ // Initialize event spirits.
299
+ eventInstance.spirits?.forEach((eventSpirit, ies) => {
300
+ eventSpirit = this.guids.get(eventSpirit);
301
+ eventInstance.spirits[ies] = eventSpirit;
302
+ eventSpirit.eventInstance = eventInstance;
303
+ const spirit = this.guids.get(eventSpirit.spirit);
304
+ if (!spirit) {
305
+ console.error('Spirit not found', eventSpirit.spirit);
306
+ }
307
+ eventSpirit.spirit = spirit;
308
+ eventSpirit.spirit.events = [];
309
+ eventSpirit.spirit.events.push(eventSpirit);
310
+ const tree = this.guids.get(eventSpirit.tree);
311
+ if (!tree) {
312
+ console.error('Tree not found', eventSpirit.tree);
313
+ }
314
+ eventSpirit.tree = tree;
315
+ tree.eventInstanceSpirit = eventSpirit;
316
+ });
317
+ });
318
+ });
319
+ }
320
+ resolveShops() {
321
+ this.data.shops.items.forEach(shop => {
322
+ // Map Shop to Spirit.
323
+ if (shop.spirit) {
324
+ const spirit = this.guids.get(shop.spirit);
325
+ shop.spirit = spirit;
326
+ spirit.shops ??= [];
327
+ spirit.shops.push(shop);
328
+ }
329
+ shop.iaps?.forEach((iap, iIap) => {
330
+ iap = this.guids.get(iap);
331
+ shop.iaps[iIap] = iap;
332
+ iap.shop = shop;
333
+ iap.items?.forEach((itemGuid, iItem) => {
334
+ const item = this.guids.get(itemGuid);
335
+ if (!item) {
336
+ console.error('Item not found', itemGuid);
337
+ }
338
+ iap.items[iItem] = item;
339
+ item.iaps ??= [];
340
+ item.iaps.push(iap);
341
+ if (iap.bought) {
342
+ item.unlocked = true;
343
+ }
344
+ });
345
+ });
346
+ if (shop.itemList) {
347
+ const itemList = this.guids.get(shop.itemList);
348
+ shop.itemList = itemList;
349
+ itemList.shop = shop;
350
+ }
351
+ });
352
+ }
353
+ resolveItems() {
354
+ const ids = new Set();
355
+ const types = new Set();
356
+ for (const type in ItemType) {
357
+ types.add(type);
358
+ }
359
+ let shouldAbort = false;
360
+ const emoteOrders = {};
361
+ const emotes = [];
362
+ this.data.items.items.forEach(item => {
363
+ if (typeof (item.id) === 'number') {
364
+ if (ids.has(item.id)) {
365
+ console.error('Duplicate item ID.', item.id, item);
366
+ shouldAbort = true;
367
+ }
368
+ else {
369
+ ids.add(item.id);
370
+ this.itemIds.set(item.id, item);
371
+ }
372
+ }
373
+ else {
374
+ console.error('Item ID not defined', item);
375
+ shouldAbort = true;
376
+ }
377
+ if (!item.type || !types.has(item.type)) {
378
+ console.error('Item type not defined.', item);
379
+ shouldAbort = true;
380
+ }
381
+ if (item.type === 'Emote') {
382
+ if (item.level === 1) {
383
+ emoteOrders[item.name] = item.order ?? 999999;
384
+ }
385
+ else {
386
+ emotes.push(item);
387
+ }
388
+ }
389
+ if (!item.unlocked && item.autoUnlocked) {
390
+ item.unlocked = true;
391
+ }
392
+ item.order ??= 999999;
393
+ });
394
+ emotes.forEach(emote => emote.order = emoteOrders[emote.name] ?? emote.order);
395
+ if (shouldAbort) {
396
+ throw new Error('Errors found while resolving items. See console for details.');
397
+ }
398
+ }
399
+ resolveItemLists() {
400
+ this.data.itemLists.items.forEach(itemList => {
401
+ itemList.items.forEach(itemNode => {
402
+ itemNode.itemList = itemList;
403
+ if (typeof itemNode.item === 'string') {
404
+ const item = this.guids.get(itemNode.item);
405
+ itemNode.item = item;
406
+ item.listNodes ??= [];
407
+ item.listNodes.push(itemNode);
408
+ }
409
+ });
410
+ });
411
+ }
412
+ resolveSeasonItems() {
413
+ for (const season of this.data.seasons.items) {
414
+ // Spirit items
415
+ for (const spirit of season.spirits ?? []) {
416
+ const items = SpiritTreeHelper.getItems(spirit.tree, true);
417
+ for (const item of items) {
418
+ item.season = season;
419
+ }
420
+ }
421
+ // IAP items
422
+ for (const shop of season.shops ?? []) {
423
+ for (const iap of shop.iaps ?? []) {
424
+ for (const item of iap.items ?? []) {
425
+ item.season = season;
426
+ }
427
+ }
428
+ }
429
+ }
430
+ }
431
+ resolveNode(node, prev, root) {
432
+ root ??= node;
433
+ const getNode = (guid) => {
434
+ const v = this.guids.get(guid);
435
+ return this.resolveNode(v, node, root ?? node);
436
+ };
437
+ node.root = root;
438
+ if (prev) {
439
+ node.prev = prev;
440
+ }
441
+ if (typeof node.n === 'string') {
442
+ node.n = getNode(node.n);
443
+ }
444
+ if (typeof node.nw === 'string') {
445
+ node.nw = getNode(node.nw);
446
+ }
447
+ if (typeof node.ne === 'string') {
448
+ node.ne = getNode(node.ne);
449
+ }
450
+ if (typeof node.item === 'string') {
451
+ const item = this.guids.get(node.item);
452
+ if (!item) {
453
+ console.error('Node item not found', node, node.item);
454
+ }
455
+ node.item = item;
456
+ item.nodes ??= [];
457
+ item.nodes.push(node);
458
+ }
459
+ else if (node.item) {
460
+ node.item.nodes ??= [];
461
+ node.item.nodes.push(node);
462
+ }
463
+ if (node.hiddenItems?.length) {
464
+ node.hiddenItems.forEach((itemGuid, i) => {
465
+ if (typeof itemGuid !== 'string')
466
+ return;
467
+ const item = this.guids.get(itemGuid);
468
+ if (!item) {
469
+ console.error('Node hidden item not found', node, itemGuid);
470
+ }
471
+ node.hiddenItems[i] = item;
472
+ item.hiddenNodes ??= [];
473
+ item.hiddenNodes.push(node);
474
+ // Mark hidden item as unlocked.
475
+ if (node.unlocked) {
476
+ item.unlocked = true;
477
+ }
478
+ });
479
+ }
480
+ return node;
481
+ }
482
+ }
483
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAKrC,OAAO,EAAE,QAAQ,EAAsN,MAAM,YAAY,CAAC;AAC1P,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAInE,MAAM,OAAO,eAAe;IAC1B,IAAI,CAAW;IACf,KAAK,GAAG,IAAI,GAAG,EAAiB,CAAC;IACjC,OAAO,GAAG,IAAI,GAAG,EAAiB,CAAC;IAEnC,YAAY,IAAS;QACnB,IAAI,CAAC,IAAI,GAAG,IAAgB,CAAC;IAC/B,CAAC;IAED;;;;MAIE;IACF,MAAM,CAAC,KAAK,CAAC,IAAY;QACvB,OAAO,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE;YAC5B,gBAAgB,EAAE,KAAK;YACvB,iBAAiB,EAAE,KAAK;YACxB,kBAAkB,EAAE,IAAI;SACzB,CAAQ,CAAC;IACZ,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,OAAO,CAAC,IAAS;QACtB,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;QAC3C,QAAQ,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,QAAQ,CAAC,IAAgB,CAAC;IACnC,CAAC;IAED,OAAO;QACL,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAE7D,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IACnC,CAAC;IAEO,aAAa,CAAC,MAAW;QAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAAC,OAAO;QAAC,CAAC;QAC7C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAChC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,GAAU;QAC7B,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YAAC,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;QAAC,CAAC;QACnD,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,EAAE,EAAE,CAAC;YAAC,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAAC,CAAC;QAC9E,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAAC,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAAC,CAAC;QACjF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAChC,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACrC,uBAAuB;YACvB,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;gBAC/B,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAW,CAAU,CAAC;gBAC5C,KAAK,CAAC,KAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;gBACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACrB,CAAC,CAAC,CAAC;YAEH,6BAA6B;YAC7B,KAAK,CAAC,aAAa,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;gBAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAa,CAAY,CAAC;gBAC7D,KAAK,CAAC,aAAc,CAAC,KAAM,CAAC,CAAC,CAAE,CAAC,MAAM,GAAG,MAAM,CAAC;YAClD,CAAC,CAAC,CAAC;YAEH,aAAa;YACb,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAChB,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAY,CAAY,CAAC;YAC9D,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACnC,uBAAuB;YACvB,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAClC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAa,CAAY,CAAC;gBAClD,IAAI,CAAC,OAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;gBAC1B,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;YACrB,CAAC,CAAC,CAAC;YAEH,4BAA4B;YAC5B,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;gBACnC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAS,CAAiB,CAAC;gBAC/C,IAAI,CAAC,YAAa,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;gBAC3B,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,CAAC,CAAC,CAAC;YAEH,uBAAuB;YACvB,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACjC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAW,CAAU,CAAC;YAClD,CAAC,CAAC,CAAC;YAEH,4BAA4B;YAC5B,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;gBACjC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAS,CAAe,CAAC;gBAC1D,IAAI,CAAC,UAAW,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;gBAChC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC;YACxB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,cAAc;QACpB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC5C,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;YACtB,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACpC,MAAM,CAAC,IAAI,GAAG,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAE,CAAC;YAC1D,CAAC;YACD,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACvC,MAAM,CAAC,OAAO,GAAG,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC7E,CAAC;YAED,yBAAyB;YACzB,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;gBACrC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAa,CAAY,CAAC;gBAClD,MAAM,CAAC,OAAQ,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;gBAC7B,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;YACzB,CAAC,CAAC,CAAC;YAEH,sBAAsB;YACtB,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE;gBACjC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAW,CAAU,CAAC;gBAC5C,MAAM,CAAC,KAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;gBACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACvB,CAAC,CAAC,CAAC;YAEH,gCAAgC;YAChC,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE;gBACzC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAW,CAAgB,CAAC;gBAClD,MAAM,CAAC,aAAc,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;YACnC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,cAAc;QACpB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC5C,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YAElB,8BAA8B;YAC9B,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAW,CAAgB,CAAC;gBAC/D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;gBACrB,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;YACrB,CAAC;YAED,oCAAoC;YACpC,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;gBACzB,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;oBACrC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAS,CAAuB,CAAC;oBAC7D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;oBACrB,MAAM,CAAC,aAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;gBAClC,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,uBAAuB;QAC7B,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;YACjD,mBAAmB;YACnB,IAAI,OAAO,EAAE,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAChC,EAAE,CAAC,IAAI,GAAG,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YACjD,CAAC;YACD,EAAE,CAAC,OAAO,GAAG,OAAO,EAAE,CAAC,OAAO,KAAK,QAAQ;gBACzC,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC;gBACvD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAE3C,oBAAoB;YACpB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,MAAa,CAAY,CAAC;YAC3D,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC;YACnB,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;YACjB,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEnB,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5B,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAE,EAAE,CAAC;YACzB,EAAE,CAAC,MAAM,GAAG,CAAC,GAAC,CAAC,CAAC;YAChB,EAAE,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAE,CAAC;YAElC,yBAAyB;YACzB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAW,CAAgB,CAAC;YAC3D,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC;YACf,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACf,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,oBAAoB;QAC1B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;YAC9C,mBAAmB;YACnB,IAAI,OAAO,EAAE,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAChC,EAAE,CAAC,IAAI,GAAG,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,CAAE,CAAC;YAClD,CAAC;YACD,IAAI,OAAO,EAAE,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACnC,EAAE,CAAC,OAAO,GAAG,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,CAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrE,CAAC;YAED,kBAAkB;YAClB,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;gBACZ,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAW,CAAU,CAAC;gBACrD,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC;gBACf,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnB,CAAC;YAED,cAAc;YACd,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;gBAChC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAY,CAAwB,CAAC;gBAC5D,EAAE,CAAC,OAAQ,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;gBACxB,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;gBAEjB,uBAAuB;gBACvB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,MAAa,CAAY,CAAC;gBAC9D,EAAE,CAAC,OAAQ,CAAC,EAAE,CAAE,CAAC,MAAM,GAAG,MAAM,CAAC;gBACjC,MAAM,CAAC,MAAM,KAAK,EAAE,CAAC;gBACrB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAE1B,4BAA4B;gBAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAW,CAAgB,CAAC;gBAC9D,EAAE,CAAC,OAAQ,CAAC,EAAE,CAAE,CAAC,IAAI,GAAG,IAAI,CAAC;gBAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACrB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,kBAAkB;QACxB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YAC7C,2BAA2B;YAC3B,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;gBACpB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAW,CAAU,CAAC;gBAC7D,IAAI,CAAC,IAAI,EAAE,CAAC;oBAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;gBAAC,CAAC;gBAChE,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;gBACvB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;gBAC7B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;YAED,wBAAwB;YACxB,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACxC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAoB,CAAC;gBAChE,IAAI,CAAC,IAAI,EAAE,CAAC;oBAAC,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;gBAAC,CAAC;gBAC5E,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;gBACvB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;gBAC7B,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC,CAAC;YAChF,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,sBAAsB;QAC5B,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC7C,kBAAkB;YAClB,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE;gBACvB,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE;oBACvB,IAAI,CAAC,IAAI,EAAE,CAAC;wBAAC,OAAO;oBAAC,CAAC;oBACtB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAW,CAAU,CAAC;oBAC/C,IAAI,CAAC,CAAC,EAAE,CAAC;wBAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;oBAAC,CAAC;oBAClD,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;oBACZ,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;oBACX,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBACtB,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACnB,CAAC;YAED,iBAAiB;YACjB,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAW,CAAoB,CAAC;gBACrE,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAAC,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAAC,CAAC;gBAC/E,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;gBACrB,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;gBACrB,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YAC5B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACrC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,aAAa,EAAE,SAAS,EAAE,EAAE;gBACpD,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAoB,CAAmB,CAAC;gBACvE,KAAK,CAAC,SAAU,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC;gBAC5C,aAAa,CAAC,KAAK,GAAG,KAAK,CAAC;gBAC5B,aAAa,CAAC,MAAM,GAAG,SAAS,GAAG,CAAC,CAAC;gBAErC,mBAAmB;gBACnB,IAAI,OAAO,aAAa,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC3C,aAAa,CAAC,IAAI,GAAG,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAE,CAAA;gBACvE,CAAC;gBACD,IAAI,OAAO,aAAa,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;oBAC9C,aAAa,CAAC,OAAO,GAAG,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC3F,CAAC;gBAED,yBAAyB;gBACzB,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;oBAC3C,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAW,CAAU,CAAC;oBAC5C,aAAa,CAAC,KAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;oBACnC,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC;gBAC7B,CAAC,CAAC,CAAC;gBAEH,4BAA4B;gBAC5B,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,GAAG,EAAE,EAAE;oBAClD,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAkB,CAAyB,CAAC;oBACzE,aAAa,CAAC,OAAQ,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC;oBAC1C,WAAW,CAAC,aAAa,GAAG,aAAa,CAAC;oBAE1C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,MAAa,CAAY,CAAC;oBACpE,IAAI,CAAC,MAAM,EAAE,CAAC;wBAAC,OAAO,CAAC,KAAK,CAAE,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;oBAAC,CAAC;oBACxE,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC;oBAC5B,WAAW,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC;oBAC/B,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBAE5C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,IAAW,CAAgB,CAAC;oBACpE,IAAI,CAAC,IAAI,EAAE,CAAC;wBAAC,OAAO,CAAC,KAAK,CAAE,gBAAgB,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;oBAAC,CAAC;oBAClE,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC;oBACxB,IAAI,CAAC,mBAAmB,GAAG,WAAW,CAAC;gBACzC,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACnC,sBAAsB;YACtB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAa,CAAY,CAAC;gBAC7D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;gBACrB,MAAM,CAAC,KAAK,KAAK,EAAE,CAAC;gBACpB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;YAED,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;gBAC/B,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAU,CAAS,CAAC;gBACzC,IAAI,CAAC,IAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;gBACvB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;gBAEhB,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;oBACrC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAe,CAAU,CAAC;oBACtD,IAAI,CAAC,IAAI,EAAE,CAAC;wBAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;oBAAC,CAAC;oBACzD,GAAG,CAAC,KAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;oBACzB,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;oBACjB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAEpB,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;wBACf,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;oBACvB,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAe,CAAc,CAAC;gBACnE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBACzB,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;YACvB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,YAAY;QAClB,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;QAC9B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;QAChC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAAC,CAAC;QAEjD,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,MAAM,WAAW,GAA8B,EAAE,CAAC;QAClD,MAAM,MAAM,GAAiB,EAAE,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACnC,IAAI,OAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACjC,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;oBACrB,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;oBACnD,WAAW,GAAG,IAAI,CAAC;gBACrB,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACjB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;gBAC3C,WAAW,GAAG,IAAI,CAAC;YACrB,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxC,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;gBAC9C,WAAW,GAAG,IAAI,CAAC;YACrB,CAAC;YAED,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC1B,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;oBAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC;gBAAC,CAAC;qBACnE,CAAC;oBAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAAC,CAAC;YAC7B,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YAAC,CAAC;YAClE,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;QAE9E,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAC3C,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAChC,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBAE7B,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACtC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAW,CAAU,CAAC;oBAC3D,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;oBAErB,IAAI,CAAC,SAAS,KAAK,EAAE,CAAC;oBACtB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,kBAAkB;QACxB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC7C,eAAe;YACf,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;gBAC1C,MAAM,KAAK,GAAG,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC3D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;gBACvB,CAAC;YACH,CAAC;YAED,YAAY;YACZ,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;gBACtC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;oBAClC,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;wBACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;oBACvB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAEO,WAAW,CAAC,IAAW,EAAE,IAAY,EAAE,IAAY;QACzD,IAAI,KAAK,IAAI,CAAC;QACd,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,EAAE;YAC/B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAU,CAAC;YACxC,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC;QACjD,CAAC,CAAA;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,IAAI,EAAE,CAAC;YAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAAC,CAAC;QAC/B,IAAI,OAAO,IAAI,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;YAAC,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QAC7D,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;YAAC,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAAC,CAAC;QAChE,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;YAAC,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAAC,CAAC;QAEhE,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAW,CAAU,CAAC;YACvD,IAAI,CAAC,IAAI,EAAE,CAAC;gBAAC,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAAC,CAAC;YACrE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;YAClB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;YAC7B,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE;gBACvC,IAAI,OAAO,QAAQ,KAAK,QAAQ;oBAAE,OAAO;gBACzC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAe,CAAU,CAAC;gBACtD,IAAI,CAAC,IAAI,EAAE,CAAC;oBAAC,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAAC,CAAC;gBAE3E,IAAI,CAAC,WAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;gBAC5B,IAAI,CAAC,WAAW,KAAK,EAAE,CAAC;gBACxB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAE5B,gCAAgC;gBAChC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACvB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CAEF"}