@bikky/compiler 0.1.18 → 0.2.1

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 (49) hide show
  1. package/.idea/Compiler.iml +1 -0
  2. package/.idea/scopes/All_Typescript_Files.xml +3 -0
  3. package/Execution/generate.mjs +24 -21
  4. package/Execution/generate.mjs.map +1 -1
  5. package/Execution/generate.mts +34 -26
  6. package/Libraries/BiscuitLibraries.d.mts +2 -0
  7. package/Libraries/BiscuitLibraries.d.mts.map +1 -1
  8. package/Libraries/BiscuitLibraries.mjs +4 -0
  9. package/Libraries/BiscuitLibraries.mjs.map +1 -1
  10. package/Libraries/BiscuitLibraries.mts +5 -1
  11. package/Libraries/ClassMigration.d.mts +88 -0
  12. package/Libraries/ClassMigration.d.mts.map +1 -0
  13. package/Libraries/ClassMigration.mjs +368 -0
  14. package/Libraries/ClassMigration.mjs.map +1 -0
  15. package/Libraries/ClassMigration.mts +431 -0
  16. package/Libraries/RBF.d.mts +4 -0
  17. package/Libraries/RBF.d.mts.map +1 -0
  18. package/Libraries/RBF.mjs +36 -0
  19. package/Libraries/RBF.mjs.map +1 -0
  20. package/Libraries/RBF.mts +46 -0
  21. package/Libraries/RBFTypes.d.ts +43 -0
  22. package/Source/ASTInterface/Crawler.d.ts +2 -1
  23. package/Source/ASTInterface/Crawler.d.ts.map +1 -1
  24. package/Source/ASTInterface/Crawler.js +14 -2
  25. package/Transformers/Main.d.ts +1 -1
  26. package/Transformers/Main.d.ts.map +1 -1
  27. package/Transformers/Main.js +3 -2
  28. package/Transformers/RBFHelpers/Constants.d.ts +3 -0
  29. package/Transformers/RBFHelpers/Constants.d.ts.map +1 -0
  30. package/Transformers/RBFHelpers/Constants.js +7 -0
  31. package/Transformers/RBFHelpers/Imports.d.ts +12 -0
  32. package/Transformers/RBFHelpers/Imports.d.ts.map +1 -0
  33. package/Transformers/RBFHelpers/Imports.js +212 -0
  34. package/Transformers/RBFHelpers/Print.d.ts +1 -0
  35. package/Transformers/RBFHelpers/Print.d.ts.map +1 -0
  36. package/Transformers/RBFHelpers/Print.js +2 -0
  37. package/Transformers/RBFHelpers/PropertyConfig.d.ts +65 -0
  38. package/Transformers/RBFHelpers/PropertyConfig.d.ts.map +1 -0
  39. package/Transformers/RBFHelpers/PropertyConfig.js +420 -0
  40. package/Transformers/RBFTransformer.d.ts +2 -0
  41. package/Transformers/RBFTransformer.d.ts.map +1 -0
  42. package/Transformers/RBFTransformer.js +317 -0
  43. package/package.json +1 -1
  44. package/tsconfig.build.libs.tsbuildinfo +1 -1
  45. package/tsconfig.build.src.tsbuildinfo +1 -1
  46. package/tsconfig.tsbuildinfo +1 -1
  47. package/Transformers/ReplicableTransformer.d.ts +0 -2
  48. package/Transformers/ReplicableTransformer.d.ts.map +0 -1
  49. package/Transformers/ReplicableTransformer.js +0 -797
@@ -0,0 +1,368 @@
1
+ /// <reference path="./GlobalTypes.d.ts">
2
+ const versionMigration = [];
3
+ const latestVersion = {
4
+ core: "",
5
+ mods: {}
6
+ };
7
+ class ClassMigrator {
8
+ fromClassName;
9
+ toClassName;
10
+ constructor(fromClassName, toClassName) {
11
+ this.fromClassName = fromClassName;
12
+ this.toClassName = toClassName;
13
+ }
14
+ /**
15
+ * Migrate instances of this class to become instances of another class.
16
+ */
17
+ toClass(klass) {
18
+ return new ClassMigrator(this.toClassName ?? this.fromClassName, klass.name);
19
+ }
20
+ /**
21
+ * Migrate data from an instance or a class that no longer exists into the current class.
22
+ */
23
+ fromInterface(name) {
24
+ return new ClassMigrator(name, this.fromClassName);
25
+ }
26
+ /**
27
+ * Load data of an old class/data name into the current class, expects that both classes have largely the same structure.
28
+ */
29
+ renamedFrom(name) {
30
+ return new ClassMigrator(name, this.fromClassName);
31
+ }
32
+ /**
33
+ * Migrate from one version to another.
34
+ */
35
+ step(fromVersion, toVersion) {
36
+ for (let i = 0; i < versionMigration.length; i++) {
37
+ let vers = versionMigration[i];
38
+ if (fromVersion !== versionMigration[i - 1].name) {
39
+ throw new Error(`Trying to migrate from ${fromVersion} to ${toVersion}, but the previous version is ${versionMigration[i - 1].name} and cannot be skipped.`);
40
+ }
41
+ if (vers.name === toVersion) {
42
+ let result = vers.migration.get(this.fromClassName);
43
+ if (!result) {
44
+ vers.migration.set(this.fromClassName, result = new ClassVersionMigrator());
45
+ }
46
+ if (this.toClassName) {
47
+ result.newClassName = this.toClassName;
48
+ }
49
+ return result.publicAPI;
50
+ }
51
+ }
52
+ throw new Error(`Version ${toVersion} does not exist.`);
53
+ }
54
+ }
55
+ class ClassVersionMigrator {
56
+ propOperations = new Map();
57
+ dataOperations = new Map();
58
+ newClassName;
59
+ publicAPI = new PublicMigratorAPI(this);
60
+ addOperation(prop, operation) {
61
+ let existingOperations = this.propOperations.get(prop);
62
+ if (!existingOperations) {
63
+ existingOperations = { prop: (val) => val };
64
+ this.propOperations.set(prop, existingOperations);
65
+ let dataName = prop[0].toUpperCase() + prop.slice(1);
66
+ this.dataOperations.set(dataName, existingOperations);
67
+ }
68
+ else {
69
+ for (let key of Object.getOwnPropertyNames(operation)) {
70
+ existingOperations[key] = operation[key];
71
+ }
72
+ }
73
+ }
74
+ addDataOperation(dataName, operation) {
75
+ let propName = dataName[0].toLowerCase() + dataName.slice(1);
76
+ let existingOperations = this.propOperations.get(propName);
77
+ if (!existingOperations) {
78
+ existingOperations = { dataProp: (val) => val };
79
+ this.propOperations.set(propName, existingOperations);
80
+ this.dataOperations.set(dataName, existingOperations);
81
+ }
82
+ else {
83
+ for (let key of Object.getOwnPropertyNames(operation)) {
84
+ existingOperations[key] = operation[key];
85
+ }
86
+ }
87
+ }
88
+ }
89
+ class PublicMigratorAPI {
90
+ #private;
91
+ constructor(cvm) {
92
+ this.#private = cvm;
93
+ }
94
+ /**
95
+ *
96
+ */
97
+ renameProperty(oldName, newName) {
98
+ this.#private.addOperation(oldName, { prop: (val) => newName });
99
+ }
100
+ renameDataProperty(propName, dataName) {
101
+ this.#private.addOperation(propName, { dataProp: (val) => dataName });
102
+ }
103
+ arrayToDict(propName, keyProp) {
104
+ this.#private.addOperation(propName, {
105
+ dataValue: (val) => {
106
+ return val.reduce((acc, cur) => { acc[cur[keyProp]] = cur; return acc; }, {});
107
+ },
108
+ serValue: (val) => {
109
+ return val.reduce((acc, cur) => { acc[cur[keyProp]] = cur; return acc; }, {});
110
+ },
111
+ });
112
+ }
113
+ dictToArray(propName, keyProp) {
114
+ this.#private.addDataOperation(propName, {
115
+ serValue: (val) => {
116
+ return Object.keys(val).map(key => [key, val[key]]);
117
+ }
118
+ });
119
+ }
120
+ }
121
+ function getUpgradesInOrder(desiredVersions, className) {
122
+ let currentVersionIndex = versionMigration.findIndex((v) => v.name == desiredVersions.core);
123
+ let modsStartFound = {};
124
+ let upgrades = [];
125
+ while (currentVersionIndex < versionMigration.length - 1) {
126
+ let currentVersion = versionMigration[currentVersionIndex];
127
+ for (let something of currentVersion.preMigration) {
128
+ if (something.modName in desiredVersions.mods) {
129
+ if (modsStartFound[something.modName]) {
130
+ let classUpgrader = currentVersion.migration.get(className);
131
+ if (classUpgrader) {
132
+ if (classUpgrader.newClassName) {
133
+ className = classUpgrader.newClassName;
134
+ }
135
+ upgrades.push(classUpgrader);
136
+ }
137
+ }
138
+ if (something.version === desiredVersions.mods[something.modName]) {
139
+ modsStartFound[something.modName] = true;
140
+ }
141
+ }
142
+ }
143
+ let classUpgrader = currentVersion.migration.get(className);
144
+ if (classUpgrader) {
145
+ if (classUpgrader.newClassName) {
146
+ className = classUpgrader.newClassName;
147
+ }
148
+ upgrades.push(classUpgrader);
149
+ }
150
+ for (let something of currentVersion.postMigration) {
151
+ if (something.modName in desiredVersions.mods) {
152
+ if (modsStartFound[something.modName]) {
153
+ let classUpgrader = currentVersion.migration.get(className);
154
+ if (classUpgrader) {
155
+ if (classUpgrader.newClassName) {
156
+ className = classUpgrader.newClassName;
157
+ }
158
+ upgrades.push(classUpgrader);
159
+ }
160
+ }
161
+ if (something.version === desiredVersions.mods[something.modName]) {
162
+ modsStartFound[something.modName] = true;
163
+ }
164
+ }
165
+ }
166
+ currentVersionIndex++;
167
+ }
168
+ return upgrades;
169
+ }
170
+ export function Migrate(obj) {
171
+ if (Array.isArray(obj)) {
172
+ //serialised object.
173
+ let className = obj[0];
174
+ let actualObject = obj[1];
175
+ let desiredVersions = actualObject.version;
176
+ let upgrades = getUpgradesInOrder(desiredVersions, className);
177
+ let upgradedObject = {
178
+ version: latestVersion
179
+ };
180
+ for (let upgrader of upgrades) {
181
+ if (upgrader.newClassName)
182
+ className = upgrader.newClassName;
183
+ for (let name in actualObject) {
184
+ if (name === "version") {
185
+ continue;
186
+ }
187
+ let propUpgrader = upgrader.propOperations.get(name);
188
+ name = propUpgrader?.prop?.(name) ?? name;
189
+ if (Array.isArray(actualObject[name]) && actualObject[name].length == 2 && actualObject[name] instanceof Object && actualObject[name][1].version) {
190
+ let value = Migrate(actualObject[name]);
191
+ if (propUpgrader?.serValue) {
192
+ value = propUpgrader.serValue(value);
193
+ }
194
+ upgradedObject[name] = [name, value];
195
+ }
196
+ else {
197
+ let value = actualObject[name];
198
+ if (propUpgrader?.dataValue) {
199
+ value = propUpgrader.dataValue(value);
200
+ }
201
+ upgradedObject[name] = value;
202
+ }
203
+ }
204
+ }
205
+ return [className, upgradedObject];
206
+ }
207
+ else {
208
+ //data object.
209
+ let desiredVersions = obj.version;
210
+ let upgrades = getUpgradesInOrder(desiredVersions, obj.Class);
211
+ let upgradedObject = {
212
+ Class: obj.Class,
213
+ version: latestVersion
214
+ };
215
+ for (let upgrader of upgrades) {
216
+ if (upgrader.newClassName)
217
+ upgradedObject.Class = upgrader.newClassName;
218
+ for (let name in obj) {
219
+ if (name === "version" || name === "Class") {
220
+ continue;
221
+ }
222
+ let propUpgrader = upgrader.propOperations.get(name);
223
+ name = propUpgrader?.prop?.(name) ?? name;
224
+ if (obj[name] instanceof Object && obj[name].version && obj[name].Class) {
225
+ let value = Migrate(obj[name]);
226
+ if (propUpgrader?.serValue) {
227
+ value = propUpgrader.serValue(value);
228
+ }
229
+ upgradedObject[name] = [name, value];
230
+ }
231
+ else {
232
+ let value = obj[name];
233
+ if (propUpgrader?.dataValue) {
234
+ value = propUpgrader.dataValue(value);
235
+ }
236
+ upgradedObject[name] = value;
237
+ }
238
+ }
239
+ }
240
+ return upgradedObject;
241
+ }
242
+ }
243
+ export var Migration;
244
+ (function (Migration) {
245
+ /**
246
+ * Registers a migration pattern for the provided class.
247
+ * @param klass the class to migrate data for.
248
+ */
249
+ function Register(klass) {
250
+ return new ClassMigrator(klass.constructor.name);
251
+ }
252
+ Migration.Register = Register;
253
+ function SetBaseVersion(version) {
254
+ if (versionMigration.length > 0)
255
+ throw new Error("Base version was already set, cannot set base version again.");
256
+ versionMigration.push({
257
+ name: version,
258
+ migration: new Map(),
259
+ api: new Map(),
260
+ postMigration: [],
261
+ preMigration: [],
262
+ });
263
+ latestVersion.core = version;
264
+ return version;
265
+ }
266
+ Migration.SetBaseVersion = SetBaseVersion;
267
+ /**
268
+ *
269
+ * @param priorVersion the version that this version is based from.
270
+ * @param version
271
+ * @param coreVersionChange
272
+ * @constructor
273
+ */
274
+ function AddCoreVersion(priorVersion, version) {
275
+ let index = versionMigration.findIndex((v) => v.name == priorVersion) + 1;
276
+ versionMigration.splice(index, 0, {
277
+ name: version,
278
+ migration: new Map(),
279
+ api: new Map(),
280
+ postMigration: [],
281
+ preMigration: [],
282
+ });
283
+ latestVersion.core = version;
284
+ return version;
285
+ }
286
+ Migration.AddCoreVersion = AddCoreVersion;
287
+ function AddModVersion(coreVersion, modName, version, opts) {
288
+ let currentVersion = versionMigration.find((v) => v.name == coreVersion);
289
+ if (!currentVersion)
290
+ throw new Error(`Cannot add mod version ${version} to core version ${coreVersion} as it does not exist.`);
291
+ let finalVersionName = (modName + "_" + version);
292
+ let migrationTime = opts?.beforeBaseVersionUpgrade ? currentVersion.preMigration : currentVersion.postMigration;
293
+ let beforeLoc = opts?.beforeMods ?? [];
294
+ let afterLoc = opts?.afterMods ?? [];
295
+ latestVersion.mods[modName] = finalVersionName;
296
+ migrationTime.forEach((e) => {
297
+ //TODO: Check to see if any of the befores are already in the afters and vice versa
298
+ // - that's an error condition.
299
+ if (beforeLoc.includes(e.modName) || beforeLoc.includes(e.version)) {
300
+ e.after = e.after.concat(afterLoc);
301
+ afterLoc = afterLoc.concat(e.after);
302
+ }
303
+ if (afterLoc.includes(e.modName) || afterLoc.includes(e.version)) {
304
+ e.before = e.before.concat(beforeLoc);
305
+ beforeLoc = beforeLoc.concat(e.before);
306
+ }
307
+ });
308
+ migrationTime.push({
309
+ modName: modName,
310
+ version: finalVersionName,
311
+ migration: new Map(),
312
+ api: new Map(),
313
+ before: beforeLoc,
314
+ after: afterLoc,
315
+ });
316
+ migrationTime.sort((a, b) => {
317
+ if (a.before.includes(b.modName) || a.before.includes(b.version)) {
318
+ return -1;
319
+ }
320
+ if (b.before.includes(a.modName) || b.before.includes(a.version)) {
321
+ return 1;
322
+ }
323
+ if (a.after.includes(b.modName) || a.after.includes(b.version)) {
324
+ return 1;
325
+ }
326
+ if (b.after.includes(a.modName) || b.after.includes(a.version)) {
327
+ return -1;
328
+ }
329
+ return 0;
330
+ });
331
+ // let earlyIndex = migrationTime.reduce<number>((previousIndex, currentMod, index) => {
332
+ // if (beforeLoc.includes(currentMod.modName)) {
333
+ // return index;
334
+ // }
335
+ // if (currentMod.after.includes(modName)) {
336
+ // return index;
337
+ // }
338
+ // return previousIndex;
339
+ // }, 0 ) ?? 0;
340
+ // let lateIndex = migrationTime.reduceRight<number>((previousIndex, currentMod, index) => {
341
+ // if (afterLoc.includes(currentMod.modName)) {
342
+ // return index + 1;
343
+ // }
344
+ // if (currentMod.before.includes(modName)) {
345
+ // return index + 1;
346
+ // }
347
+ // return previousIndex;
348
+ // }, migrationTime.length - 1 ) ?? migrationTime.length - 1;
349
+ // if (earlyIndex > lateIndex) {
350
+ // throw new Error(`Cannot add mod version ${version} to core version ${coreVersion} as it conflicts with other mods.`);
351
+ // }
352
+ // migrationTime.splice(earlyIndex, 0, {
353
+ // modName: modName,
354
+ // version: finalVersionName,
355
+ // migration: new Map(),
356
+ // api: new Map(),
357
+ // before: opts?.beforeMods ?? [],
358
+ // after: opts?.afterMods ?? [],
359
+ // });
360
+ return finalVersionName;
361
+ }
362
+ Migration.AddModVersion = AddModVersion;
363
+ function getLatestVersion() {
364
+ return latestVersion;
365
+ }
366
+ Migration.getLatestVersion = getLatestVersion;
367
+ })(Migration || (Migration = {}));
368
+ //# sourceMappingURL=ClassMigration.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClassMigration.mjs","sourceRoot":"","sources":["ClassMigration.mts"],"names":[],"mappings":"AAAA,yCAAyC;AAqCzC,MAAM,gBAAgB,GAA0B,EAAE,CAAC;AACnD,MAAM,aAAa,GAAuB;IACzC,IAAI,EAAE,EAAS;IACf,IAAI,EAAE,EAAE;CACR,CAAC;AAEF,MAAM,aAAa;IAClB,aAAa,CAAS;IACtB,WAAW,CAAU;IAErB,YAAY,aAAqB,EAAE,WAAoB;QACtD,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,OAAO,CAAI,KAAe;QACzB,OAAO,IAAI,aAAa,CAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACpF,CAAC;IAED;;OAEG;IACH,aAAa,CAAY,IAAY;QACpC,OAAO,IAAI,aAAa,CAAO,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,IAAY;QACvB,OAAO,IAAI,aAAa,CAAO,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,WAA8B,EAAE,SAA4B;QAChE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAClD,IAAI,IAAI,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,WAAW,KAAK,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAClD,MAAM,IAAI,KAAK,CAAC,0BAA0B,WAAW,OAAO,SAAS,iCAAiC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,yBAAyB,CAAC,CAAC;YAC9J,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC7B,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACpD,IAAI,CAAC,MAAM,EAAE,CAAC;oBACb,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,oBAAoB,EAAE,CAAC,CAAC;gBAC7E,CAAC;gBACD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;oBACtB,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC;gBACxC,CAAC;gBACD,OAAO,MAAM,CAAC,SAAS,CAAC;YACzB,CAAC;QACF,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,WAAW,SAAS,kBAAkB,CAAC,CAAC;IACzD,CAAC;CACD;AASD,MAAM,oBAAoB;IACzB,cAAc,GAAG,IAAI,GAAG,EAAyB,CAAC;IAClD,cAAc,GAAG,IAAI,GAAG,EAAyB,CAAC;IAClD,YAAY,CAAU;IACtB,SAAS,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACxC,YAAY,CAAC,IAAY,EAAE,SAAwB;QAClD,IAAI,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACzB,kBAAkB,GAAG,EAAC,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,EAAC,CAAC;YAClD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;YAClD,IAAI,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACrD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;QACvD,CAAC;aACI,CAAC;YACL,KAAK,IAAI,GAAG,IAAI,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAA4B,EAAE,CAAC;gBAClF,kBAAkB,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;YAC1C,CAAC;QACF,CAAC;IACF,CAAC;IACD,gBAAgB,CAAC,QAAgB,EAAE,SAAwB;QAC1D,IAAI,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7D,IAAI,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC3D,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACzB,kBAAkB,GAAG,EAAC,QAAQ,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,EAAC,CAAC;YACtD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;YACtD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;QACvD,CAAC;aACI,CAAC;YACL,KAAK,IAAI,GAAG,IAAI,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAA4B,EAAE,CAAC;gBAClF,kBAAkB,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;YAC1C,CAAC;QACF,CAAC;IACF,CAAC;CACD;AAED,MAAM,iBAAiB;IACtB,QAAQ,CAAuB;IAC/B,YAAY,GAAyB;QACpC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,OAAe,EAAE,OAAe;QAC9C,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,EAAC,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,EAAC,CAAC,CAAC;IACvE,CAAC;IAED,kBAAkB,CAAC,QAAgB,EAAE,QAAgB;QACpD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAC,QAAQ,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,QAAQ,EAAC,CAAC,CAAC;IAC7E,CAAC;IAED,WAAW,CAAC,QAAgB,EAAE,OAAe;QAC5C,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE;YACpC,SAAS,EAAE,CAAC,GAAU,EAAE,EAAE;gBACzB,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAE,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,GAAG,CAAA,CAAA,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5E,CAAC;YACD,QAAQ,EAAE,CAAC,GAAU,EAAE,EAAE;gBACxB,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAE,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,GAAG,CAAA,CAAA,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5E,CAAC;SACD,CAAC,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,QAAgB,EAAE,OAAe;QAC5C,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE;YACxC,QAAQ,EAAE,CAAC,GAAyB,EAAE,EAAE;gBACvC,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACrD,CAAC;SACD,CAAC,CAAC;IACJ,CAAC;CACD;AAED,SAAS,kBAAkB,CAAC,eAAmC,EAAE,SAAiB;IACjF,IAAI,mBAAmB,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;IAC5F,IAAI,cAAc,GAA8B,EAAE,CAAC;IACnD,IAAI,QAAQ,GAA2B,EAAE,CAAC;IAC1C,OAAO,mBAAmB,GAAG,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1D,IAAI,cAAc,GAAG,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;QAC3D,KAAK,IAAI,SAAS,IAAI,cAAc,CAAC,YAAY,EAAE,CAAC;YACnD,IAAI,SAAS,CAAC,OAAO,IAAI,eAAe,CAAC,IAAI,EAAE,CAAC;gBAC/C,IAAI,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;oBACvC,IAAI,aAAa,GAAG,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBAC5D,IAAI,aAAa,EAAE,CAAC;wBACnB,IAAI,aAAa,CAAC,YAAY,EAAE,CAAC;4BAChC,SAAS,GAAG,aAAa,CAAC,YAAY,CAAC;wBACxC,CAAC;wBACD,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAC9B,CAAC;gBACF,CAAC;gBACD,IAAI,SAAS,CAAC,OAAO,KAAK,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;oBACnE,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;gBAC1C,CAAC;YACF,CAAC;QACF,CAAC;QAED,IAAI,aAAa,GAAG,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC5D,IAAI,aAAa,EAAE,CAAC;YACnB,IAAI,aAAa,CAAC,YAAY,EAAE,CAAC;gBAChC,SAAS,GAAG,aAAa,CAAC,YAAY,CAAC;YACxC,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC9B,CAAC;QAED,KAAK,IAAI,SAAS,IAAI,cAAc,CAAC,aAAa,EAAE,CAAC;YACpD,IAAI,SAAS,CAAC,OAAO,IAAI,eAAe,CAAC,IAAI,EAAE,CAAC;gBAC/C,IAAI,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;oBACvC,IAAI,aAAa,GAAG,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBAC5D,IAAI,aAAa,EAAE,CAAC;wBACnB,IAAI,aAAa,CAAC,YAAY,EAAE,CAAC;4BAChC,SAAS,GAAG,aAAa,CAAC,YAAY,CAAC;wBACxC,CAAC;wBACD,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAC9B,CAAC;gBACF,CAAC;gBACD,IAAI,SAAS,CAAC,OAAO,KAAK,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;oBACnE,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;gBAC1C,CAAC;YACF,CAAC;QACF,CAAC;QACD,mBAAmB,EAAE,CAAC;IACvB,CAAC;IACD,OAAO,QAAQ,CAAC;AACjB,CAAC;AAMD,MAAM,UAAU,OAAO,CAAC,GAAQ;IAC/B,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,oBAAoB;QACpB,IAAI,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,YAAY,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,eAAe,GAAG,YAAY,CAAC,OAA6B,CAAC;QACjE,IAAI,QAAQ,GAAG,kBAAkB,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;QAC9D,IAAI,cAAc,GAAQ;YACzB,OAAO,EAAE,aAAa;SACtB,CAAC;QACF,KAAK,IAAI,QAAQ,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,QAAQ,CAAC,YAAY;gBAAE,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC;YAC7D,KAAK,IAAI,IAAI,IAAI,YAAY,EAAE,CAAC;gBAC/B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACxB,SAAS;gBACV,CAAC;gBACD,IAAI,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACrD,IAAI,GAAG,YAAY,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;gBAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,YAAY,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;oBAClJ,IAAI,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;oBACxC,IAAI,YAAY,EAAE,QAAQ,EAAE,CAAC;wBAC5B,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;oBACtC,CAAC;oBACD,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACtC,CAAC;qBACI,CAAC;oBACL,IAAI,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;oBAC/B,IAAI,YAAY,EAAE,SAAS,EAAE,CAAC;wBAC7B,KAAK,GAAG,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;oBACvC,CAAC;oBACD,cAAc,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;gBAC9B,CAAC;YACF,CAAC;QACF,CAAC;QACD,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IACpC,CAAC;SACI,CAAC;QACL,cAAc;QACd,IAAI,eAAe,GAAG,GAAG,CAAC,OAA6B,CAAC;QACxD,IAAI,QAAQ,GAAG,kBAAkB,CAAC,eAAe,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QAC9D,IAAI,cAAc,GAAQ;YACzB,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,OAAO,EAAE,aAAa;SACtB,CAAC;QACF,KAAK,IAAI,QAAQ,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,QAAQ,CAAC,YAAY;gBAAE,cAAc,CAAC,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC;YACxE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;gBACtB,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;oBAC5C,SAAS;gBACV,CAAC;gBACD,IAAI,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACrD,IAAI,GAAG,YAAY,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;gBAC1C,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;oBACzE,IAAI,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;oBAC/B,IAAI,YAAY,EAAE,QAAQ,EAAE,CAAC;wBAC5B,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;oBACtC,CAAC;oBACD,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACtC,CAAC;qBACI,CAAC;oBACL,IAAI,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;oBACtB,IAAI,YAAY,EAAE,SAAS,EAAE,CAAC;wBAC7B,KAAK,GAAG,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;oBACvC,CAAC;oBACD,cAAc,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;gBAC9B,CAAC;YACF,CAAC;QACF,CAAC;QACD,OAAO,cAAc,CAAC;IACvB,CAAC;AACF,CAAC;AAED,MAAM,KAAQ,SAAS,CA8HtB;AA9HD,WAAc,SAAS;IAKtB;;;OAGG;IACH,SAAgB,QAAQ,CAAI,KAAe;QAC1C,OAAO,IAAI,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IAFe,kBAAQ,WAEvB,CAAA;IAGD,SAAgB,cAAc,CAAC,OAAe;QAC7C,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QACjH,gBAAgB,CAAC,IAAI,CAAC;YACrB,IAAI,EAAE,OAAc;YACpB,SAAS,EAAE,IAAI,GAAG,EAAE;YACpB,GAAG,EAAE,IAAI,GAAG,EAAE;YACd,aAAa,EAAE,EAAE;YACjB,YAAY,EAAE,EAAE;SAChB,CAAC,CAAC;QACH,aAAa,CAAC,IAAI,GAAG,OAAc,CAAC;QACpC,OAAO,OAAc,CAAC;IACvB,CAAC;IAXe,wBAAc,iBAW7B,CAAA;IAED;;;;;;OAMG;IACH,SAAgB,cAAc,CAAC,YAAqB,EAAE,OAAe;QACpE,IAAI,KAAK,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;QAC1E,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE;YACjC,IAAI,EAAE,OAAc;YACpB,SAAS,EAAE,IAAI,GAAG,EAAE;YACpB,GAAG,EAAE,IAAI,GAAG,EAAE;YACd,aAAa,EAAE,EAAE;YACjB,YAAY,EAAE,EAAE;SAChB,CAAC,CAAC;QACH,aAAa,CAAC,IAAI,GAAG,OAAc,CAAC;QACpC,OAAO,OAAc,CAAC;IACvB,CAAC;IAXe,wBAAc,iBAW7B,CAAA;IAED,SAAgB,aAAa,CAAC,WAAmB,EAAE,OAAe,EAAE,OAAe,EAAE,IAA8G;QAClM,IAAI,cAAc,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,WAAkB,CAAC,CAAC;QAChF,IAAI,CAAC,cAAc;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,OAAO,oBAAoB,WAAW,wBAAwB,CAAC,CAAC;QAC/H,IAAI,gBAAgB,GAAG,CAAC,OAAO,GAAG,GAAG,GAAG,OAAO,CAAmB,CAAC;QACnE,IAAI,aAAa,GAAG,IAAI,EAAE,wBAAwB,CAAC,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC;QAChH,IAAI,SAAS,GAAG,IAAI,EAAE,UAAU,IAAI,EAAE,CAAC;QACvC,IAAI,QAAQ,GAAG,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC;QACrC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,gBAAgB,CAAC;QAE/C,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAC3B,mFAAmF;YACnF,+BAA+B;YAC/B,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACnC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACrC,CAAC;YACD,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;gBAClE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBACtC,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACxC,CAAC;QACF,CAAC,CAAC,CAAC;QACH,aAAa,CAAC,IAAI,CAAC;YAClB,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,gBAAgB;YACzB,SAAS,EAAE,IAAI,GAAG,EAAE;YACpB,GAAG,EAAE,IAAI,GAAG,EAAE;YACd,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,QAAQ;SACf,CAAC,CAAC;QACH,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC3B,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;gBAClE,OAAO,CAAC,CAAC,CAAC;YACX,CAAC;YACD,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;gBAClE,OAAO,CAAC,CAAC;YACV,CAAC;YACD,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;gBAChE,OAAO,CAAC,CAAC;YACV,CAAC;YACD,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;gBAChE,OAAO,CAAC,CAAC,CAAC;YACX,CAAC;YACD,OAAO,CAAC,CAAC;QACV,CAAC,CAAC,CAAC;QACH,wFAAwF;QACxF,iDAAiD;QACjD,kBAAkB;QAClB,KAAK;QACL,6CAA6C;QAC7C,kBAAkB;QAClB,KAAK;QACL,yBAAyB;QACzB,eAAe;QACf,4FAA4F;QAC5F,gDAAgD;QAChD,sBAAsB;QACtB,KAAK;QACL,8CAA8C;QAC9C,sBAAsB;QACtB,KAAK;QACL,yBAAyB;QACzB,6DAA6D;QAC7D,gCAAgC;QAChC,yHAAyH;QACzH,IAAI;QACJ,wCAAwC;QACxC,qBAAqB;QACrB,8BAA8B;QAC9B,yBAAyB;QACzB,mBAAmB;QACnB,mCAAmC;QACnC,iCAAiC;QACjC,MAAM;QACN,OAAO,gBAAgB,CAAC;IACzB,CAAC;IA1Ee,uBAAa,gBA0E5B,CAAA;IAED,SAAgB,gBAAgB;QAC/B,OAAO,aAAa,CAAC;IACtB,CAAC;IAFe,0BAAgB,mBAE/B,CAAA;AACF,CAAC,EA9Ha,SAAS,KAAT,SAAS,QA8HtB"}