@lionweb/core 0.5.0 → 0.6.0-beta.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 +5 -0
- package/dist/deserializer.d.ts.map +1 -1
- package/dist/deserializer.js +4 -7
- package/dist/deserializer.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/serialization.d.ts +2 -3
- package/dist/serialization.d.ts.map +1 -1
- package/dist/serialization.js.map +1 -1
- package/dist/symbol-table.d.ts +44 -0
- package/dist/symbol-table.d.ts.map +1 -0
- package/dist/symbol-table.js +61 -0
- package/dist/symbol-table.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -25,6 +25,11 @@ The following is a list of links to potential starting points:
|
|
|
25
25
|
|
|
26
26
|
## Changelog
|
|
27
27
|
|
|
28
|
+
### 0.6.0
|
|
29
|
+
|
|
30
|
+
* Introduce a type `SymbolTable` to encapsulate lookup of languages' entities and their features.
|
|
31
|
+
* Provide a naive and a memoising implementation of the `SymbolTable` abstraction, and use the latter in the deserializer to make that (a bit) more performant.
|
|
32
|
+
|
|
28
33
|
### 0.5.0
|
|
29
34
|
|
|
30
35
|
This is the first version corresponding to a release of LionWeb (version: 2023.1) as a whole.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deserializer.d.ts","sourceRoot":"","sources":["../src/deserializer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAK,IAAI,EAAC,MAAM,YAAY,CAAA;AACnC,OAAO,EAAoC,kBAAkB,EAAiB,MAAM,oBAAoB,CAAA;AACxG,OAAO,EAAC,mBAAmB,EAAC,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"deserializer.d.ts","sourceRoot":"","sources":["../src/deserializer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAK,IAAI,EAAC,MAAM,YAAY,CAAA;AACnC,OAAO,EAAoC,kBAAkB,EAAiB,MAAM,oBAAoB,CAAA;AACxG,OAAO,EAAC,mBAAmB,EAAC,MAAM,aAAa,CAAA;AAE/C,OAAO,EAAuC,QAAQ,EAAqC,MAAM,eAAe,CAAA;AAkBhH;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,wCACL,kBAAkB,2DAE3B,QAAQ,EAAE,kBAEL,IAAI,EAAE,SA2IzB,CAAA"}
|
package/dist/deserializer.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { currentSerializationFormatVersion } from "./serialization.js";
|
|
2
|
+
import { MemoisingSymbolTable } from "./symbol-table.js";
|
|
2
3
|
import { Classifier, Containment, Enumeration, PrimitiveType, Property, Reference } from "./m3/types.js";
|
|
3
4
|
import { allFeaturesOf } from "./m3/functions.js";
|
|
4
5
|
import { deserializeBuiltin } from "./m3/builtins.js";
|
|
@@ -29,7 +30,7 @@ dependentNodes
|
|
|
29
30
|
if (serializationChunk.serializationFormatVersion !== currentSerializationFormatVersion) {
|
|
30
31
|
throw new Error(`can't deserialize from serialization format other than version "${currentSerializationFormatVersion}"`);
|
|
31
32
|
}
|
|
32
|
-
const
|
|
33
|
+
const symbolTable = new MemoisingSymbolTable(languages);
|
|
33
34
|
const { nodes: serializedNodes } = serializationChunk;
|
|
34
35
|
const serializedRootNodes = serializedNodes.filter(({ parent }) => parent === null);
|
|
35
36
|
if (serializedRootNodes.length === 0) {
|
|
@@ -55,12 +56,8 @@ dependentNodes
|
|
|
55
56
|
* Instantiates a {@link Node} from its {@link SerializedNode serialization}.
|
|
56
57
|
*/
|
|
57
58
|
const instantiate = ({ id, classifier: classifierMetaPointer, properties, containments, references, annotations }, parent) => {
|
|
58
|
-
const classifier =
|
|
59
|
-
|
|
60
|
-
&& element.key === classifierMetaPointer.key
|
|
61
|
-
&& element.language.key === classifierMetaPointer.language
|
|
62
|
-
&& element.language.version === classifierMetaPointer.version);
|
|
63
|
-
if (classifier === undefined) {
|
|
59
|
+
const classifier = symbolTable.entityMatching(classifierMetaPointer);
|
|
60
|
+
if (classifier === undefined || !(classifier instanceof Classifier)) {
|
|
64
61
|
throw new Error(`can't deserialize a node having a classifier with key "${classifierMetaPointer.key}"`);
|
|
65
62
|
}
|
|
66
63
|
const allFeatures = allFeaturesOf(classifier);
|
package/dist/deserializer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deserializer.js","sourceRoot":"","sources":["../src/deserializer.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,iCAAiC,EAAqC,MAAM,oBAAoB,CAAA;AAExG,OAAO,
|
|
1
|
+
{"version":3,"file":"deserializer.js","sourceRoot":"","sources":["../src/deserializer.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export * from "./functions.js";
|
|
|
5
5
|
export * from "./references.js";
|
|
6
6
|
export * from "./serializer.js";
|
|
7
7
|
export * from "./serialization.js";
|
|
8
|
+
export * from "./symbol-table.js";
|
|
8
9
|
export * from "./types.js";
|
|
9
10
|
export * from "./utils/index.js";
|
|
10
11
|
export * from "./version.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA;AACnC,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA;AACnC,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -5,6 +5,7 @@ export * from "./functions.js";
|
|
|
5
5
|
export * from "./references.js";
|
|
6
6
|
export * from "./serializer.js";
|
|
7
7
|
export * from "./serialization.js";
|
|
8
|
+
export * from "./symbol-table.js";
|
|
8
9
|
export * from "./types.js";
|
|
9
10
|
export * from "./utils/index.js";
|
|
10
11
|
export * from "./version.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA;AACnC,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA;AACnC,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA"}
|
package/dist/serialization.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Id } from "./types.js";
|
|
2
|
-
export type Ids = Id[];
|
|
3
2
|
export type MetaPointer = {
|
|
4
3
|
language: string;
|
|
5
4
|
version: string;
|
|
@@ -11,7 +10,7 @@ export type SerializedProperty = {
|
|
|
11
10
|
};
|
|
12
11
|
export type SerializedContainment = {
|
|
13
12
|
containment: MetaPointer;
|
|
14
|
-
children:
|
|
13
|
+
children: Id[];
|
|
15
14
|
};
|
|
16
15
|
export type SerializedReferenceTarget = {
|
|
17
16
|
reference: Id;
|
|
@@ -25,7 +24,7 @@ export type SerializedReference = {
|
|
|
25
24
|
* Type definition for an AST node serialized to JSON.
|
|
26
25
|
*/
|
|
27
26
|
export type SerializedNode = {
|
|
28
|
-
id:
|
|
27
|
+
id: Id;
|
|
29
28
|
classifier: MetaPointer;
|
|
30
29
|
properties: SerializedProperty[];
|
|
31
30
|
containments: SerializedContainment[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialization.d.ts","sourceRoot":"","sources":["../src/serialization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,EAAE,EAAC,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"serialization.d.ts","sourceRoot":"","sources":["../src/serialization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,EAAE,EAAC,MAAM,YAAY,CAAA;AAG7B,MAAM,MAAM,WAAW,GAAG;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC7B,QAAQ,EAAE,WAAW,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAChC,WAAW,EAAE,WAAW,CAAA;IACxB,QAAQ,EAAE,EAAE,EAAE,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG;IACpC,SAAS,EAAE,EAAE,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAC9B,SAAS,EAAE,WAAW,CAAA;IACtB,OAAO,EAAE,yBAAyB,EAAE,CAAA;CACvC,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IACzB,EAAE,EAAE,EAAE,CAAA;IACN,UAAU,EAAE,WAAW,CAAA;IACvB,UAAU,EAAE,kBAAkB,EAAE,CAAA;IAChC,YAAY,EAAE,qBAAqB,EAAE,CAAA;IACrC,UAAU,EAAE,mBAAmB,EAAE,CAAA;IACjC,WAAW,EAAE,EAAE,EAAE,CAAA;IACjB,MAAM,EAAE,EAAE,GAAG,IAAI,CAAA;CACpB,CAAA;AAGD,MAAM,MAAM,2BAA2B,GAAG;IACtC,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;CAClB,CAAA;AAGD;;;GAGG;AACH,eAAO,MAAM,iCAAiC,WAAwB,CAAA;AAGtE;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC7B,0BAA0B,EAAE,MAAM,CAAA;IAClC,SAAS,EAAE,2BAA2B,EAAE,CAAA;IACxC,KAAK,EAAE,cAAc,EAAE,CAAA;CAC1B,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialization.js","sourceRoot":"","sources":["../src/serialization.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,qBAAqB,EAAC,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"serialization.js","sourceRoot":"","sources":["../src/serialization.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,qBAAqB,EAAC,MAAM,cAAc,CAAA;AAgDlD;;;GAGG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,qBAAqB,CAAA"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Feature, Language, LanguageEntity } from "./m3/index.js";
|
|
2
|
+
import { MetaPointer } from "./serialization.js";
|
|
3
|
+
/**
|
|
4
|
+
* Interface for objects that can look up within languages, based on given {@link MetaPointer meta pointers}.
|
|
5
|
+
* This is meant to be able to properly encapsulate performance optimizations, also outside of the context
|
|
6
|
+
* of deserialization.
|
|
7
|
+
*/
|
|
8
|
+
interface SymbolTable {
|
|
9
|
+
/**
|
|
10
|
+
*
|
|
11
|
+
* Looks up the {@link LanguageEntity}, as pointed to by the given {@link MetaPointer},
|
|
12
|
+
* or {@code undefined} if it couldn't be found.
|
|
13
|
+
*/
|
|
14
|
+
entityMatching(entityMetaPointer: MetaPointer): LanguageEntity | undefined;
|
|
15
|
+
/**
|
|
16
|
+
* Looks up the {@link Feature}, as pointed to by the {@link MetaPointer} given second,
|
|
17
|
+
* as a feature of the {@link Classifier}, as pointed to by the {@link MetaPointer} given first,
|
|
18
|
+
* or {@code undefined} it it couldn't be found.
|
|
19
|
+
* <em>Note</em> that the {@code language} and {@code version} values of both {@link MetaPointer}-typed arguments should coincide,
|
|
20
|
+
* although this is typically not checked!
|
|
21
|
+
*/
|
|
22
|
+
featureMatching(entityMetaPointer: MetaPointer, featureMetaPointer: MetaPointer): Feature | undefined;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Naive, non-performant implementation of {@link SymbolTable}.
|
|
26
|
+
*/
|
|
27
|
+
declare class NaiveSymbolTable implements SymbolTable {
|
|
28
|
+
private readonly languages;
|
|
29
|
+
constructor(languages: Language[]);
|
|
30
|
+
private languageMatching;
|
|
31
|
+
entityMatching(entityMetaPointer: MetaPointer): LanguageEntity | undefined;
|
|
32
|
+
featureMatching(classifierMetaPointer: MetaPointer, featureMetaPointer: MetaPointer): Feature | undefined;
|
|
33
|
+
}
|
|
34
|
+
declare class MemoisingSymbolTable implements SymbolTable {
|
|
35
|
+
private readonly languages;
|
|
36
|
+
constructor(languages: Language[]);
|
|
37
|
+
private readonly languageKey2version2entityKey2entityInfo;
|
|
38
|
+
private entityInfoMatching;
|
|
39
|
+
entityMatching(entityMetaPointer: MetaPointer): LanguageEntity | undefined;
|
|
40
|
+
featureMatching(classifierMetaPointer: MetaPointer, featureMetaPointer: MetaPointer): Feature | undefined;
|
|
41
|
+
}
|
|
42
|
+
export type { SymbolTable };
|
|
43
|
+
export { MemoisingSymbolTable, NaiveSymbolTable };
|
|
44
|
+
//# sourceMappingURL=symbol-table.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symbol-table.d.ts","sourceRoot":"","sources":["../src/symbol-table.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAC,MAAM,eAAe,CAAA;AAC1F,OAAO,EAAC,WAAW,EAAC,MAAM,oBAAoB,CAAA;AAG9C;;;;GAIG;AACH,UAAU,WAAW;IAEjB;;;;OAIG;IACH,cAAc,CAAC,iBAAiB,EAAE,WAAW,GAAG,cAAc,GAAG,SAAS,CAAA;IAE1E;;;;;;OAMG;IACH,eAAe,CAAC,iBAAiB,EAAE,WAAW,EAAE,kBAAkB,EAAE,WAAW,GAAG,OAAO,GAAG,SAAS,CAAA;CAExG;AAGD;;GAEG;AACH,cAAM,gBAAiB,YAAW,WAAW;IAEzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;gBAE1B,SAAS,EAAE,QAAQ,EAAE;IAIjC,OAAO,CAAC,gBAAgB;IAOxB,cAAc,CAAC,iBAAiB,EAAE,WAAW,GAAG,cAAc,GAAG,SAAS;IAM1E,eAAe,CAAC,qBAAqB,EAAE,WAAW,EAAE,kBAAkB,EAAE,WAAW,GAAG,OAAO,GAAG,SAAS;CAS5G;AAmBD,cAAM,oBAAqB,YAAW,WAAW;IAE7C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;gBAE1B,SAAS,EAAE,QAAQ,EAAE;IAGjC,OAAO,CAAC,QAAQ,CAAC,wCAAwC,CAA0G;IAEnK,OAAO,CAAC,kBAAkB;IAoB1B,cAAc,CAAC,iBAAiB,EAAE,WAAW,GAAG,cAAc,GAAG,SAAS;IAI1E,eAAe,CAAC,qBAAqB,EAAE,WAAW,EAAE,kBAAkB,EAAE,WAAW,GAAG,OAAO,GAAG,SAAS;CAY5G;AAGD,YAAY,EACR,WAAW,EACd,CAAA;AAED,OAAO,EACH,oBAAoB,EACpB,gBAAgB,EACnB,CAAA"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { allFeaturesOf, Classifier } from "./m3/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Naive, non-performant implementation of {@link SymbolTable}.
|
|
4
|
+
*/
|
|
5
|
+
class NaiveSymbolTable {
|
|
6
|
+
constructor(languages) {
|
|
7
|
+
this.languages = languages;
|
|
8
|
+
}
|
|
9
|
+
languageMatching(metaPointer) {
|
|
10
|
+
return this.languages.find((language) => language.key === metaPointer.language
|
|
11
|
+
&& language.version === metaPointer.version);
|
|
12
|
+
}
|
|
13
|
+
entityMatching(entityMetaPointer) {
|
|
14
|
+
return this.languageMatching(entityMetaPointer)
|
|
15
|
+
?.entities
|
|
16
|
+
.find((entity) => entity.key === entityMetaPointer.key);
|
|
17
|
+
}
|
|
18
|
+
featureMatching(classifierMetaPointer, featureMetaPointer) {
|
|
19
|
+
const classifier = this.entityMatching(classifierMetaPointer);
|
|
20
|
+
if (classifier === undefined || !(classifier instanceof Classifier)) {
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
const allFeatures = allFeaturesOf(classifier);
|
|
24
|
+
return allFeatures.find((feature) => feature.key === featureMetaPointer.key);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
const lazyMapGet = (map, key, createThunk) => {
|
|
28
|
+
if (key in map) {
|
|
29
|
+
return map[key];
|
|
30
|
+
}
|
|
31
|
+
const value = createThunk();
|
|
32
|
+
map[key] = value;
|
|
33
|
+
return value;
|
|
34
|
+
};
|
|
35
|
+
class MemoisingSymbolTable {
|
|
36
|
+
constructor(languages) {
|
|
37
|
+
this.languageKey2version2entityKey2entityInfo = {};
|
|
38
|
+
this.languages = languages;
|
|
39
|
+
}
|
|
40
|
+
entityInfoMatching(entityMetaPointer) {
|
|
41
|
+
return lazyMapGet(lazyMapGet(lazyMapGet(this.languageKey2version2entityKey2entityInfo, entityMetaPointer.language, () => ({})), entityMetaPointer.version, () => ({})), entityMetaPointer.key, () => {
|
|
42
|
+
const entity = this.languages.find((language) => language.key === entityMetaPointer.language
|
|
43
|
+
&& language.version === entityMetaPointer.version)
|
|
44
|
+
?.entities
|
|
45
|
+
.find((entity) => entity.key === entityMetaPointer.key);
|
|
46
|
+
return entity && { entity, allFeatures: entity instanceof Classifier ? allFeaturesOf(entity) : [], featureKey2feature: {} };
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
entityMatching(entityMetaPointer) {
|
|
50
|
+
return this.entityInfoMatching(entityMetaPointer)?.entity;
|
|
51
|
+
}
|
|
52
|
+
featureMatching(classifierMetaPointer, featureMetaPointer) {
|
|
53
|
+
const entityInfo = this.entityInfoMatching(classifierMetaPointer);
|
|
54
|
+
if (entityInfo === undefined || !(entityInfo.entity instanceof Classifier)) {
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
return lazyMapGet(entityInfo.featureKey2feature, featureMetaPointer.key, () => entityInfo.allFeatures.find((feature) => feature.key === featureMetaPointer.key));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
export { MemoisingSymbolTable, NaiveSymbolTable };
|
|
61
|
+
//# sourceMappingURL=symbol-table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symbol-table.js","sourceRoot":"","sources":["../src/symbol-table.ts"],"names":[],"mappings":"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"}
|