@lionweb/core 0.6.13-beta.7 → 0.7.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +5 -4
- package/dist/deserializer.d.ts +5 -5
- package/dist/deserializer.d.ts.map +1 -1
- package/dist/deserializer.js +29 -32
- package/dist/deserializer.js.map +1 -1
- package/dist/dynamic-facade.d.ts +1 -1
- package/dist/dynamic-facade.d.ts.map +1 -1
- package/dist/dynamic-facade.js +1 -1
- package/dist/dynamic-facade.js.map +1 -1
- package/dist/facade.d.ts +6 -5
- package/dist/facade.d.ts.map +1 -1
- package/dist/facade.js +2 -2
- package/dist/facade.js.map +1 -1
- package/dist/functions.d.ts +4 -3
- package/dist/functions.d.ts.map +1 -1
- package/dist/functions.js +1 -1
- package/dist/functions.js.map +1 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -2
- package/dist/index.js.map +1 -1
- package/dist/m1/reference-utils.d.ts +1 -1
- package/dist/m1/reference-utils.d.ts.map +1 -1
- package/dist/m1/reference-utils.js.map +1 -1
- package/dist/m3/builtins.d.ts +1 -1
- package/dist/m3/builtins.d.ts.map +1 -1
- package/dist/m3/builtins.js +16 -19
- package/dist/m3/builtins.js.map +1 -1
- package/dist/m3/constraints.d.ts.map +1 -1
- package/dist/m3/constraints.js +9 -4
- package/dist/m3/constraints.js.map +1 -1
- package/dist/m3/deserializer.d.ts +3 -3
- package/dist/m3/deserializer.d.ts.map +1 -1
- package/dist/m3/deserializer.js.map +1 -1
- package/dist/m3/facade.d.ts.map +1 -1
- package/dist/m3/facade.js +7 -7
- package/dist/m3/facade.js.map +1 -1
- package/dist/m3/factory.d.ts +2 -2
- package/dist/m3/factory.d.ts.map +1 -1
- package/dist/m3/factory.js.map +1 -1
- package/dist/m3/functions.d.ts +7 -10
- package/dist/m3/functions.d.ts.map +1 -1
- package/dist/m3/functions.js +4 -10
- package/dist/m3/functions.js.map +1 -1
- package/dist/m3/lioncore.d.ts.map +1 -1
- package/dist/m3/lioncore.js +22 -59
- package/dist/m3/lioncore.js.map +1 -1
- package/dist/m3/reference-checker.d.ts.map +1 -1
- package/dist/m3/reference-checker.js +2 -2
- package/dist/m3/reference-checker.js.map +1 -1
- package/dist/m3/serializer.d.ts +2 -2
- package/dist/m3/serializer.d.ts.map +1 -1
- package/dist/m3/serializer.js.map +1 -1
- package/dist/m3/types.d.ts +14 -14
- package/dist/m3/types.d.ts.map +1 -1
- package/dist/m3/types.js.map +1 -1
- package/dist/references.d.ts +3 -3
- package/dist/references.d.ts.map +1 -1
- package/dist/serializer.d.ts +6 -6
- package/dist/serializer.d.ts.map +1 -1
- package/dist/serializer.js +18 -24
- package/dist/serializer.js.map +1 -1
- package/dist/symbol-table.d.ts +15 -15
- package/dist/symbol-table.d.ts.map +1 -1
- package/dist/symbol-table.js +1 -1
- package/dist/symbol-table.js.map +1 -1
- package/dist/types.d.ts +2 -10
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -6
- package/dist/types.js.map +1 -1
- package/package.json +6 -2
- package/dist/serialization.d.ts +0 -52
- package/dist/serialization.d.ts.map +0 -1
- package/dist/serialization.js +0 -7
- package/dist/serialization.js.map +0 -1
- package/dist/utils/array-helpers.d.ts +0 -14
- package/dist/utils/array-helpers.d.ts.map +0 -1
- package/dist/utils/array-helpers.js +0 -15
- package/dist/utils/array-helpers.js.map +0 -1
- package/dist/utils/cycles.d.ts +0 -8
- package/dist/utils/cycles.d.ts.map +0 -1
- package/dist/utils/cycles.js +0 -26
- package/dist/utils/cycles.js.map +0 -1
- package/dist/utils/index.d.ts +0 -7
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -7
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/map-helpers.d.ts +0 -26
- package/dist/utils/map-helpers.d.ts.map +0 -1
- package/dist/utils/map-helpers.js +0 -41
- package/dist/utils/map-helpers.js.map +0 -1
- package/dist/utils/recursion.d.ts +0 -13
- package/dist/utils/recursion.d.ts.map +0 -1
- package/dist/utils/recursion.js +0 -21
- package/dist/utils/recursion.js.map +0 -1
- package/dist/utils/sorting.d.ts +0 -7
- package/dist/utils/sorting.d.ts.map +0 -1
- package/dist/utils/sorting.js +0 -7
- package/dist/utils/sorting.js.map +0 -1
- package/dist/utils/string-mapping.d.ts +0 -6
- package/dist/utils/string-mapping.d.ts.map +0 -1
- package/dist/utils/string-mapping.js +0 -10
- package/dist/utils/string-mapping.js.map +0 -1
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { Id } from "../types.js";
|
|
2
|
-
/**
|
|
3
|
-
* Computes a map id -> thing with id.
|
|
4
|
-
*/
|
|
5
|
-
export declare const byIdMap: <T extends {
|
|
6
|
-
id: Id;
|
|
7
|
-
}>(ts: T[]) => {
|
|
8
|
-
[id: string]: T;
|
|
9
|
-
};
|
|
10
|
-
/**
|
|
11
|
-
* Groups a list of items according to a computed key.
|
|
12
|
-
*/
|
|
13
|
-
export declare const groupBy: <T>(ts: T[], keyFunc: (t: T) => string) => Record<string, T[]>;
|
|
14
|
-
/**
|
|
15
|
-
* Filters the values of a map/record according the given predicate.
|
|
16
|
-
*/
|
|
17
|
-
export declare const filterValues: <V>(map: Record<string, V>, predicate: (v: V) => boolean) => Record<string, V>;
|
|
18
|
-
/**
|
|
19
|
-
* Computes the given items whose computed keys are duplicates, as a map key → items.
|
|
20
|
-
*/
|
|
21
|
-
export declare const duplicatesAmong: <T>(ts: T[], keyFunc: (t: T) => string) => Record<string, T[]>;
|
|
22
|
-
/**
|
|
23
|
-
* Maps the values of a map/record according to the given mapping function.
|
|
24
|
-
*/
|
|
25
|
-
export declare const mapValues: <V, W>(map: Record<string, V>, valFunc: (v: V) => W) => Record<string, W>;
|
|
26
|
-
//# sourceMappingURL=map-helpers.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"map-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/map-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,EAAE,EAAC,MAAM,aAAa,CAAA;AAG9B;;GAEG;AACH,eAAO,MAAM,OAAO;QAAoB,EAAE;;;CAMzC,CAAA;AAGD;;GAEG;AACH,eAAO,MAAM,OAAO,kCAAmC,MAAM,wBAY5D,CAAA;AAGD;;GAEG;AACH,eAAO,MAAM,YAAY,mDAAoD,OAAO,sBAI/E,CAAA;AAGL;;GAEG;AACH,eAAO,MAAM,eAAe,kCAAmC,MAAM,wBACR,CAAA;AAG7D;;GAEG;AACH,eAAO,MAAM,SAAS,2EAIjB,CAAA"}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Computes a map id -> thing with id.
|
|
3
|
-
*/
|
|
4
|
-
export const byIdMap = (ts) => {
|
|
5
|
-
const map = {};
|
|
6
|
-
ts.forEach((t) => {
|
|
7
|
-
map[t.id] = t;
|
|
8
|
-
});
|
|
9
|
-
return map;
|
|
10
|
-
};
|
|
11
|
-
/**
|
|
12
|
-
* Groups a list of items according to a computed key.
|
|
13
|
-
*/
|
|
14
|
-
export const groupBy = (ts, keyFunc) => {
|
|
15
|
-
const map = {};
|
|
16
|
-
ts.forEach((t) => {
|
|
17
|
-
const key = keyFunc(t);
|
|
18
|
-
let list = map[key];
|
|
19
|
-
if (list === undefined) {
|
|
20
|
-
list = [];
|
|
21
|
-
map[key] = list;
|
|
22
|
-
}
|
|
23
|
-
list.push(t);
|
|
24
|
-
});
|
|
25
|
-
return map;
|
|
26
|
-
};
|
|
27
|
-
/**
|
|
28
|
-
* Filters the values of a map/record according the given predicate.
|
|
29
|
-
*/
|
|
30
|
-
export const filterValues = (map, predicate) => Object.fromEntries(Object.entries(map)
|
|
31
|
-
.filter(([_, value]) => predicate(value)));
|
|
32
|
-
/**
|
|
33
|
-
* Computes the given items whose computed keys are duplicates, as a map key → items.
|
|
34
|
-
*/
|
|
35
|
-
export const duplicatesAmong = (ts, keyFunc) => filterValues(groupBy(ts, keyFunc), (ts) => ts.length > 1);
|
|
36
|
-
/**
|
|
37
|
-
* Maps the values of a map/record according to the given mapping function.
|
|
38
|
-
*/
|
|
39
|
-
export const mapValues = (map, valFunc) => Object.fromEntries(Object.entries(map)
|
|
40
|
-
.map(([key, value]) => [key, valFunc(value)]));
|
|
41
|
-
//# sourceMappingURL=map-helpers.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"map-helpers.js","sourceRoot":"","sources":["../../src/utils/map-helpers.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAuB,EAAO,EAAmB,EAAE;IACtE,MAAM,GAAG,GAAoB,EAAE,CAAA;IAC/B,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACb,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;IACjB,CAAC,CAAC,CAAA;IACF,OAAO,GAAG,CAAA;AACd,CAAC,CAAA;AAGD;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAI,EAAO,EAAE,OAAyB,EAAuB,EAAE;IAClF,MAAM,GAAG,GAAwB,EAAE,CAAA;IACnC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACb,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;QACtB,IAAI,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;QACnB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACrB,IAAI,GAAG,EAAE,CAAA;YACT,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;QACnB,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAChB,CAAC,CAAC,CAAA;IACF,OAAO,GAAG,CAAA;AACd,CAAC,CAAA;AAGD;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAI,GAAsB,EAAE,SAA4B,EAAqB,EAAE,CACvG,MAAM,CAAC,WAAW,CACd,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;KACd,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAChD,CAAA;AAGL;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAI,EAAO,EAAE,OAAyB,EAAuB,EAAE,CAC1F,YAAY,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AAG7D;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAO,GAAsB,EAAE,OAAoB,EAAqB,EAAE,CAC/F,MAAM,CAAC,WAAW,CACd,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;KACd,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CACpD,CAAA"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Type def. of a generic "flatMap" function.
|
|
3
|
-
*/
|
|
4
|
-
type FlatMapper<T, R> = (t: T) => R[];
|
|
5
|
-
/**
|
|
6
|
-
* Performs a "flatMap" on a graph that's specified as a start vertex and a function that computes (outgoing) edges.
|
|
7
|
-
* The "flatMap" is performed depth-first, and doesn't loop on cycles.
|
|
8
|
-
*/
|
|
9
|
-
declare const flatMapNonCyclingFollowing: <T, R>(mapper: FlatMapper<T, R>, edges: (t: T) => T[]) => FlatMapper<T, R>;
|
|
10
|
-
declare const trivialFlatMapper: <T>(t: T) => T[];
|
|
11
|
-
export type { FlatMapper };
|
|
12
|
-
export { flatMapNonCyclingFollowing, trivialFlatMapper };
|
|
13
|
-
//# sourceMappingURL=recursion.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"recursion.d.ts","sourceRoot":"","sources":["../../src/utils/recursion.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,KAAK,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAA;AAErC;;;GAGG;AACH,QAAA,MAAM,0BAA0B,4EAiB3B,CAAA;AAGL,QAAA,MAAM,iBAAiB,kBAAmB,CAAA;AAG1C,YAAY,EACR,UAAU,EACb,CAAA;AAED,OAAO,EACH,0BAA0B,EAC1B,iBAAiB,EACpB,CAAA"}
|
package/dist/utils/recursion.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Performs a "flatMap" on a graph that's specified as a start vertex and a function that computes (outgoing) edges.
|
|
3
|
-
* The "flatMap" is performed depth-first, and doesn't loop on cycles.
|
|
4
|
-
*/
|
|
5
|
-
const flatMapNonCyclingFollowing = (mapper, edges) => (startVertex) => {
|
|
6
|
-
const visited = [];
|
|
7
|
-
const rs = [];
|
|
8
|
-
const recurse = (t) => {
|
|
9
|
-
if (visited.indexOf(t) > -1) {
|
|
10
|
-
return;
|
|
11
|
-
}
|
|
12
|
-
visited.push(t);
|
|
13
|
-
rs.push(...mapper(t));
|
|
14
|
-
edges(t).forEach(recurse);
|
|
15
|
-
};
|
|
16
|
-
recurse(startVertex);
|
|
17
|
-
return rs;
|
|
18
|
-
};
|
|
19
|
-
const trivialFlatMapper = (t) => [t];
|
|
20
|
-
export { flatMapNonCyclingFollowing, trivialFlatMapper };
|
|
21
|
-
//# sourceMappingURL=recursion.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"recursion.js","sourceRoot":"","sources":["../../src/utils/recursion.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,MAAM,0BAA0B,GAAG,CAC/B,MAAwB,EACxB,KAAoB,EACJ,EAAE,CAClB,CAAC,WAAc,EAAO,EAAE;IACpB,MAAM,OAAO,GAAQ,EAAE,CAAA;IACvB,MAAM,EAAE,GAAQ,EAAE,CAAA;IAClB,MAAM,OAAO,GAAG,CAAC,CAAI,EAAE,EAAE;QACrB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC1B,OAAM;QACV,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACf,EAAE,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QACrB,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAC7B,CAAC,CAAA;IACD,OAAO,CAAC,WAAW,CAAC,CAAA;IACpB,OAAO,EAAE,CAAA;AACb,CAAC,CAAA;AAGL,MAAM,iBAAiB,GAAG,CAAI,CAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;AAO1C,OAAO,EACH,0BAA0B,EAC1B,iBAAiB,EACpB,CAAA"}
|
package/dist/utils/sorting.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Various functional utilities for sorting things.
|
|
3
|
-
*/
|
|
4
|
-
export type Comparer<T> = (l: T, r: T) => number;
|
|
5
|
-
export declare const stringyCompare: <T>(keyFunc: (t: T) => string) => Comparer<T>;
|
|
6
|
-
export declare const sortByStringKey: <T>(ts: T[], keyFunc: (t: T) => string) => T[];
|
|
7
|
-
//# sourceMappingURL=sorting.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sorting.d.ts","sourceRoot":"","sources":["../../src/utils/sorting.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM,CAAA;AAKhD,eAAO,MAAM,cAAc,yBAA0B,MAAM,gBACF,CAAA;AAEzD,eAAO,MAAM,eAAe,kCAAmC,MAAM,QAC5B,CAAA"}
|
package/dist/utils/sorting.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Various functional utilities for sorting things.
|
|
3
|
-
*/
|
|
4
|
-
const stringCompare = (l, r) => l === r ? 0 : (l > r ? 1 : -1);
|
|
5
|
-
export const stringyCompare = (keyFunc) => (l, r) => stringCompare(keyFunc(l), keyFunc(r));
|
|
6
|
-
export const sortByStringKey = (ts, keyFunc) => [...ts].sort(stringyCompare(keyFunc));
|
|
7
|
-
//# sourceMappingURL=sorting.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sorting.js","sourceRoot":"","sources":["../../src/utils/sorting.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,MAAM,aAAa,GAAqB,CAAC,CAAC,EAAE,CAAC,EAAU,EAAE,CACrD,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAElC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAI,OAAyB,EAAe,EAAE,CACxE,CAAC,CAAI,EAAE,CAAI,EAAE,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;AAEzD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAI,EAAO,EAAE,OAAyB,EAAE,EAAE,CACrE,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAA"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export type StringsMapper = (...strings: string[]) => string;
|
|
2
|
-
export type StringMapper = (str: string) => string;
|
|
3
|
-
export declare const concatenator: (separator: string) => StringsMapper;
|
|
4
|
-
export declare const lastOf: StringsMapper;
|
|
5
|
-
export declare const chain: (stringsMapper: StringsMapper, ...stringMappers: StringMapper[]) => StringsMapper;
|
|
6
|
-
//# sourceMappingURL=string-mapping.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"string-mapping.d.ts","sourceRoot":"","sources":["../../src/utils/string-mapping.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK,MAAM,CAAA;AAE5D,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;AAGlD,eAAO,MAAM,YAAY,cAAe,MAAM,KAAG,aACN,CAAA;AAE3C,eAAO,MAAM,MAAM,EAAE,aAC0B,CAAA;AAE/C,eAAO,MAAM,KAAK,kBAAmB,aAAa,oBAAoB,YAAY,EAAE,KAAG,aAOlF,CAAA"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export const concatenator = (separator) => (...strings) => strings.join(separator);
|
|
2
|
-
export const lastOf = (...strings) => strings[strings.length - 1];
|
|
3
|
-
export const chain = (stringsMapper, ...stringMappers) => (...strings) => {
|
|
4
|
-
let result = stringsMapper(...strings);
|
|
5
|
-
stringMappers.forEach((mapper) => {
|
|
6
|
-
result = mapper(result);
|
|
7
|
-
});
|
|
8
|
-
return result;
|
|
9
|
-
};
|
|
10
|
-
//# sourceMappingURL=string-mapping.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"string-mapping.js","sourceRoot":"","sources":["../../src/utils/string-mapping.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,SAAiB,EAAiB,EAAE,CAC7D,CAAC,GAAG,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AAE3C,MAAM,CAAC,MAAM,MAAM,GACf,CAAC,GAAG,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AAE/C,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,aAA4B,EAAE,GAAG,aAA6B,EAAiB,EAAE,CACnG,CAAC,GAAG,OAAiB,EAAE,EAAE;IACrB,IAAI,MAAM,GAAG,aAAa,CAAC,GAAG,OAAO,CAAC,CAAA;IACtC,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QAC7B,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;IAC3B,CAAC,CAAC,CAAA;IACF,OAAO,MAAM,CAAA;AACjB,CAAC,CAAA"}
|