septima-lang 0.0.10 → 0.0.12
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/dist/src/ast-node.d.ts +18 -0
- package/dist/src/ast-node.js +4 -2
- package/dist/src/parser.d.ts +1 -0
- package/dist/src/parser.js +57 -51
- package/dist/src/result.d.ts +4 -11
- package/dist/src/result.js +49 -22
- package/dist/src/runtime.d.ts +1 -2
- package/dist/src/runtime.js +36 -25
- package/dist/src/septima.d.ts +29 -12
- package/dist/src/septima.js +138 -52
- package/dist/src/source-code.d.ts +7 -6
- package/dist/src/source-code.js +8 -7
- package/dist/src/symbol-table.d.ts +1 -0
- package/dist/src/value.d.ts +8 -4
- package/dist/src/value.js +10 -6
- package/package.json +1 -1
package/dist/src/runtime.js
CHANGED
|
@@ -32,10 +32,11 @@ const Stack = __importStar(require("./stack"));
|
|
|
32
32
|
const switch_on_1 = require("./switch-on");
|
|
33
33
|
const value_1 = require("./value");
|
|
34
34
|
class SymbolFrame {
|
|
35
|
-
constructor(symbol, placeholder, earlier) {
|
|
35
|
+
constructor(symbol, placeholder, earlier, visibility) {
|
|
36
36
|
this.symbol = symbol;
|
|
37
37
|
this.placeholder = placeholder;
|
|
38
38
|
this.earlier = earlier;
|
|
39
|
+
this.visibility = visibility;
|
|
39
40
|
}
|
|
40
41
|
lookup(sym) {
|
|
41
42
|
if (this.symbol === sym) {
|
|
@@ -54,8 +55,14 @@ class SymbolFrame {
|
|
|
54
55
|
}
|
|
55
56
|
exportValue() {
|
|
56
57
|
const ret = this.earlier.exportValue();
|
|
57
|
-
|
|
58
|
-
|
|
58
|
+
if (this.visibility === 'INTERNAL') {
|
|
59
|
+
return ret;
|
|
60
|
+
}
|
|
61
|
+
if (this.visibility === 'EXPORTED') {
|
|
62
|
+
ret[this.symbol] = this.placeholder.destination ?? (0, fail_me_1.failMe)(`Unbounded symbol: ${this.symbol}`);
|
|
63
|
+
return ret;
|
|
64
|
+
}
|
|
65
|
+
(0, should_never_happen_1.shouldNeverHappen)(this.visibility);
|
|
59
66
|
}
|
|
60
67
|
}
|
|
61
68
|
class EmptySymbolTable {
|
|
@@ -70,10 +77,9 @@ class EmptySymbolTable {
|
|
|
70
77
|
}
|
|
71
78
|
}
|
|
72
79
|
class Runtime {
|
|
73
|
-
constructor(root, verbosity = 'quiet',
|
|
80
|
+
constructor(root, verbosity = 'quiet', getAstOf, args) {
|
|
74
81
|
this.root = root;
|
|
75
82
|
this.verbosity = verbosity;
|
|
76
|
-
this.preimports = preimports;
|
|
77
83
|
this.getAstOf = getAstOf;
|
|
78
84
|
this.args = args;
|
|
79
85
|
this.stack = undefined;
|
|
@@ -83,12 +89,9 @@ class Runtime {
|
|
|
83
89
|
const keys = value_1.Value.foreign(o => o.keys());
|
|
84
90
|
const entries = value_1.Value.foreign(o => o.entries());
|
|
85
91
|
const fromEntries = value_1.Value.foreign(o => o.fromEntries());
|
|
86
|
-
let lib = new SymbolFrame('Object', { destination: value_1.Value.obj({ keys, entries, fromEntries }) }, empty);
|
|
92
|
+
let lib = new SymbolFrame('Object', { destination: value_1.Value.obj({ keys, entries, fromEntries }) }, empty, 'INTERNAL');
|
|
87
93
|
if (generateTheArgsObject) {
|
|
88
|
-
lib = new SymbolFrame('args', { destination: value_1.Value.from(this.args) }, lib);
|
|
89
|
-
}
|
|
90
|
-
for (const [importName, importValue] of Object.entries(this.preimports)) {
|
|
91
|
-
lib = new SymbolFrame(importName, { destination: importValue }, lib);
|
|
94
|
+
lib = new SymbolFrame('args', { destination: value_1.Value.from(this.args) }, lib, 'INTERNAL');
|
|
92
95
|
}
|
|
93
96
|
return lib;
|
|
94
97
|
}
|
|
@@ -113,8 +116,8 @@ class Runtime {
|
|
|
113
116
|
evalNode(ast, table) {
|
|
114
117
|
this.stack = Stack.push(ast, this.stack);
|
|
115
118
|
let ret = this.evalNodeImpl(ast, table);
|
|
116
|
-
if (ret.isSink() && !ret.
|
|
117
|
-
ret = ret.bindToSpan((0, ast_node_1.span)(ast));
|
|
119
|
+
if (ret.isSink() && !ret.where()) {
|
|
120
|
+
ret = ret.bindToSpan((0, ast_node_1.span)(ast), ast.unitId);
|
|
118
121
|
}
|
|
119
122
|
(0, switch_on_1.switchOn)(this.verbosity, {
|
|
120
123
|
quiet: () => { },
|
|
@@ -126,10 +129,9 @@ class Runtime {
|
|
|
126
129
|
this.stack = Stack.pop(this.stack);
|
|
127
130
|
return ret;
|
|
128
131
|
}
|
|
129
|
-
importDefinitions(
|
|
130
|
-
const
|
|
131
|
-
const exp =
|
|
132
|
-
const imports = ast.imports;
|
|
132
|
+
importDefinitions(importerAsPathFromSourceRoot, relativePathFromImporter) {
|
|
133
|
+
const importee = this.getAstOf(importerAsPathFromSourceRoot, relativePathFromImporter);
|
|
134
|
+
const exp = importee.expression;
|
|
133
135
|
if (exp.tag === 'arrayLiteral' ||
|
|
134
136
|
exp.tag === 'binaryOperator' ||
|
|
135
137
|
exp.tag === 'dot' ||
|
|
@@ -148,12 +150,21 @@ class Runtime {
|
|
|
148
150
|
return value_1.Value.obj({});
|
|
149
151
|
}
|
|
150
152
|
if (exp.tag === 'topLevelExpression') {
|
|
151
|
-
|
|
153
|
+
// Construct a syntehtic unit which is similar to importedUnit but override its expression with an expression that
|
|
154
|
+
// just returns the importee's definitions bundled in a single object (an export* expression), and evaluate it.
|
|
155
|
+
// This is the trick that allows the importer to gain access to the importee's own stuff.
|
|
156
|
+
const exporStarUnit = {
|
|
152
157
|
tag: 'unit',
|
|
153
|
-
imports,
|
|
154
|
-
|
|
158
|
+
imports: importee.imports,
|
|
159
|
+
unitId: importee.unitId,
|
|
160
|
+
expression: {
|
|
161
|
+
tag: 'topLevelExpression',
|
|
162
|
+
definitions: exp.definitions,
|
|
163
|
+
unitId: importee.unitId,
|
|
164
|
+
computation: { tag: 'export*', unitId: importee.unitId },
|
|
165
|
+
},
|
|
155
166
|
};
|
|
156
|
-
return this.evalNode(
|
|
167
|
+
return this.evalNode(exporStarUnit, this.buildInitialSymbolTable(false));
|
|
157
168
|
}
|
|
158
169
|
(0, should_never_happen_1.shouldNeverHappen)(exp);
|
|
159
170
|
}
|
|
@@ -161,8 +172,8 @@ class Runtime {
|
|
|
161
172
|
if (ast.tag === 'unit') {
|
|
162
173
|
let newTable = table;
|
|
163
174
|
for (const imp of ast.imports) {
|
|
164
|
-
const o = this.importDefinitions(imp.pathToImportFrom.text);
|
|
165
|
-
newTable = new SymbolFrame(imp.ident.t.text, { destination: o }, newTable);
|
|
175
|
+
const o = this.importDefinitions(ast.unitId, imp.pathToImportFrom.text);
|
|
176
|
+
newTable = new SymbolFrame(imp.ident.t.text, { destination: o }, newTable, 'INTERNAL');
|
|
166
177
|
}
|
|
167
178
|
return this.evalNode(ast.expression, newTable);
|
|
168
179
|
}
|
|
@@ -171,7 +182,7 @@ class Runtime {
|
|
|
171
182
|
for (const def of ast.definitions) {
|
|
172
183
|
const name = def.ident.t.text;
|
|
173
184
|
const placeholder = { destination: undefined };
|
|
174
|
-
newTable = new SymbolFrame(name, placeholder, newTable);
|
|
185
|
+
newTable = new SymbolFrame(name, placeholder, newTable, def.isExported ? 'EXPORTED' : 'INTERNAL');
|
|
175
186
|
const v = this.evalNode(def.value, newTable);
|
|
176
187
|
placeholder.destination = v;
|
|
177
188
|
}
|
|
@@ -342,10 +353,10 @@ class Runtime {
|
|
|
342
353
|
if (names.length > argValues.length) {
|
|
343
354
|
throw new Error(`Arg list length mismatch: expected ${names.length} but got ${argValues.length}`);
|
|
344
355
|
}
|
|
345
|
-
const newTable = names.reduce((t, n, i) => new SymbolFrame(n, { destination: argValues[i] }, t), lambdaTable);
|
|
356
|
+
const newTable = names.reduce((t, n, i) => new SymbolFrame(n, { destination: argValues[i] }, t, 'INTERNAL'), lambdaTable);
|
|
346
357
|
return this.evalNode(body, newTable);
|
|
347
358
|
});
|
|
348
359
|
}
|
|
349
360
|
}
|
|
350
361
|
exports.Runtime = Runtime;
|
|
351
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydW50aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUNBQXNEO0FBQ3RELHVEQUFrRDtBQUNsRCx1Q0FBa0M7QUFDbEMsK0RBQXlEO0FBQ3pELCtDQUFnQztBQUNoQywyQ0FBc0M7QUFFdEMsbUNBQStCO0FBTS9CLE1BQU0sV0FBVztJQUNmLFlBQXFCLE1BQWMsRUFBVyxXQUF3QixFQUFtQixPQUFvQjtRQUF4RixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVcsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBbUIsWUFBTyxHQUFQLE9BQU8sQ0FBYTtJQUFHLENBQUM7SUFFakgsTUFBTSxDQUFDLEdBQVc7UUFDaEIsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRTtZQUN2QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQTtZQUN4QyxJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUU7Z0JBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO2FBQ3pEO1lBQ0QsT0FBTyxHQUFHLENBQUE7U0FDWDtRQUVELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDakMsQ0FBQztJQUVELE1BQU07UUFDSixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFBO1FBQ2pDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksSUFBQSxnQkFBTSxFQUFDLHFCQUFxQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQTtRQUN2RyxPQUFPLEdBQUcsQ0FBQTtJQUNa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QUFLLENBQUMsQ0FBQyxDQUFBO2FBQ3ZEO1lBRUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFBO1lBQ3pDLElBQUksR0FBRyxDQUFDLFFBQVEsS0FBSyxJQUFJLEVBQUU7Z0JBQ3pCLE9BQU8sR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQTthQUMvQjtZQUNELElBQUksR0FBRyxDQUFDLFFBQVEsS0FBSyxJQUFJLEVBQUU7Z0JBQ3pCLE9BQU8sR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQTthQUN6QjtZQUVELElBQUksR0FBRyxDQUFDLFFBQVEsS0FBSyxJQUFJLEVBQUU7Z0JBQ3pCLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7Z0JBQzNCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQTthQUMzQjtZQUNELElBQUksR0FBRyxDQUFDLFFBQVEsS0FBSyxHQUFHLEVBQUU7Z0JBQ3hCLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7Z0JBQzNCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQTthQUMxQjtZQUNELElBQUksR0FBRyxDQUFDLFFBQVEsS0FBSyxJQUFJLEVBQUU7Z0JBQ3pCLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7Z0JBQzNCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQTthQUMzQjtZQUNELElBQUksR0FBRyxDQUFDLFFBQVEsS0FBSyxHQUFHLEVBQUU7Z0JBQ3hCLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7Z0JBQzNCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQTthQUMx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
|
|
362
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydW50aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUNBQThEO0FBQzlELHVEQUFrRDtBQUNsRCx1Q0FBa0M7QUFDbEMsK0RBQXlEO0FBQ3pELCtDQUFnQztBQUNoQywyQ0FBc0M7QUFFdEMsbUNBQStCO0FBTS9CLE1BQU0sV0FBVztJQUNmLFlBQ1csTUFBYyxFQUNkLFdBQXdCLEVBQ2hCLE9BQW9CLEVBQ3BCLFVBQXNCO1FBSDlCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUNoQixZQUFPLEdBQVAsT0FBTyxDQUFhO1FBQ3BCLGVBQVUsR0FBVixVQUFVLENBQVk7SUFDdEMsQ0FBQztJQUVKLE1BQU0sQ0FBQyxHQUFXO1FBQ2hCLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUU7WUFDdkIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUE7WUFDeEMsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO2dCQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQTthQUN6RDtZQUNELE9BQU8sR0FBRyxDQUFBO1NBQ1g7UUFFRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ2pDLENBQUM7SUFFRCxNQUFNO1FBQ0osTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQTtRQUNqQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLElBQUEsZ0JBQU0sRUFBQyxxQkFBcUIsSUFBSSxDQUFDLE1BQU0sRUFB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QU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7Z0JBQzNCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQTthQUMzQjtZQUNELElBQUksR0FBRyxDQUFDLFFBQVEsS0FBSyxHQUFHLEVBQUU7Z0JBQ3hCLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7Z0JBQzNCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQTthQUMxQjtZQUNELElBQUksR0FBRyxDQUFDLFFBQVEsS0FBSyxHQUFHLEVBQUU7Z0JBQ3hCLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTthQUN2QjtZQUNELElBQUksR0FBRyxDQUFDLFFBQVEsS0FBSyxHQUFHLEVBQUU7Z0JBQ3hCLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTthQUN0QjtZQUNELElBQUksR0FBRyxDQUFDLFFBQVEsS0FBSyxJQUFJLEVBQUU7Z0JBQ3pCLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTthQUN0QjtZQUNELElBQUksR0FBRyxDQUFDLFFBQVEsS0FBSyxHQUFHLEVBQUU7Z0JBQ3hCLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTthQUNyQjtZQUNELElBQUksR0FBRyxDQUFDLFFBQVEsS0FBSyxHQUFHLEVBQUU7Z0JBQ3hCLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTthQUN0QjtZQUNELElBQUksR0FBRyxDQUFDLFFBQVEsS0FBSyxHQUFHLEVBQUU7Z0JBQ3hCLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTthQUNyQjtZQUVELElBQUEsdUNBQWlCLEVBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1NBQ2hDO1FBRUQsSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLGVBQWUsRUFB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
|
package/dist/src/septima.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Unit } from './ast-node';
|
|
2
|
-
import { Parser } from './parser';
|
|
3
2
|
import { Result, ResultSink } from './result';
|
|
4
|
-
import {
|
|
3
|
+
import { SourceCode } from './source-code';
|
|
5
4
|
interface Options {
|
|
6
5
|
/**
|
|
7
6
|
* A callback function to be invoked when the Septima program evaluated to `sink`. Allows the caller to determine
|
|
@@ -10,7 +9,17 @@ interface Options {
|
|
|
10
9
|
*/
|
|
11
10
|
onSink?: (res: ResultSink) => unknown;
|
|
12
11
|
}
|
|
12
|
+
export interface Executable {
|
|
13
|
+
execute(args: Record<string, unknown>): Result;
|
|
14
|
+
}
|
|
15
|
+
declare type SyncCodeReader = (resolvePath: string) => string | undefined;
|
|
16
|
+
declare type CodeReader = (resolvePath: string) => Promise<string | undefined>;
|
|
17
|
+
export interface SourceUnit {
|
|
18
|
+
sourceCode: SourceCode;
|
|
19
|
+
unit: Unit;
|
|
20
|
+
}
|
|
13
21
|
export declare class Septima {
|
|
22
|
+
private readonly sourceRoot;
|
|
14
23
|
/**
|
|
15
24
|
* Runs a Septima program and returns the value it evaluates to. If it evaluates to `sink`, returns the value computed
|
|
16
25
|
* by `options.onSink()` - if present, or throws an error - otherwise.
|
|
@@ -23,15 +32,23 @@ export declare class Septima {
|
|
|
23
32
|
* @returns the value that `input` evaluates to
|
|
24
33
|
*/
|
|
25
34
|
static run(input: string, options?: Options, args?: Record<string, unknown>): unknown;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
35
|
+
private readonly unitByUnitId;
|
|
36
|
+
constructor(sourceRoot?: string);
|
|
37
|
+
compileSync(fileName: string, readFile: SyncCodeReader): Executable;
|
|
38
|
+
compile(fileName: string, readFile: CodeReader): Promise<Executable>;
|
|
39
|
+
private getExecutableFor;
|
|
40
|
+
private execute;
|
|
41
|
+
/**
|
|
42
|
+
* Translates the filename into a resolved path (to be read) if it has not been read yet. If it has been read,
|
|
43
|
+
* returns undefined
|
|
44
|
+
*/
|
|
45
|
+
private computeResolvedPathToRead;
|
|
46
|
+
private loadFileContent;
|
|
47
|
+
private unitOf;
|
|
48
|
+
private getPathFromSourceRoot;
|
|
49
|
+
private loadSync;
|
|
50
|
+
private load;
|
|
51
|
+
private pumpSync;
|
|
52
|
+
private pump;
|
|
30
53
|
}
|
|
31
|
-
/**
|
|
32
|
-
* Parses the given input and returns an AST.
|
|
33
|
-
* @param arg the source code to parse (string) or a Parser object (configured with the source code to parse).
|
|
34
|
-
* @returns
|
|
35
|
-
*/
|
|
36
|
-
export declare function parse(arg: string | Parser): Unit;
|
|
37
54
|
export {};
|
package/dist/src/septima.js
CHANGED
|
@@ -1,6 +1,31 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
26
|
+
exports.Septima = void 0;
|
|
27
|
+
const path = __importStar(require("path"));
|
|
28
|
+
const fail_me_1 = require("./fail-me");
|
|
4
29
|
const parser_1 = require("./parser");
|
|
5
30
|
const result_1 = require("./result");
|
|
6
31
|
const runtime_1 = require("./runtime");
|
|
@@ -8,6 +33,10 @@ const scanner_1 = require("./scanner");
|
|
|
8
33
|
const should_never_happen_1 = require("./should-never-happen");
|
|
9
34
|
const source_code_1 = require("./source-code");
|
|
10
35
|
class Septima {
|
|
36
|
+
constructor(sourceRoot = '') {
|
|
37
|
+
this.sourceRoot = sourceRoot;
|
|
38
|
+
this.unitByUnitId = new Map();
|
|
39
|
+
}
|
|
11
40
|
/**
|
|
12
41
|
* Runs a Septima program and returns the value it evaluates to. If it evaluates to `sink`, returns the value computed
|
|
13
42
|
* by `options.onSink()` - if present, or throws an error - otherwise.
|
|
@@ -24,7 +53,10 @@ class Septima {
|
|
|
24
53
|
((r) => {
|
|
25
54
|
throw new Error(r.message);
|
|
26
55
|
});
|
|
27
|
-
const
|
|
56
|
+
const fileName = '<inline>';
|
|
57
|
+
const contentRec = { [fileName]: input };
|
|
58
|
+
const readFile = (m) => contentRec[m];
|
|
59
|
+
const res = new Septima().compileSync(fileName, readFile).execute(args);
|
|
28
60
|
if (res.tag === 'ok') {
|
|
29
61
|
return res.value;
|
|
30
62
|
}
|
|
@@ -33,64 +65,118 @@ class Septima {
|
|
|
33
65
|
}
|
|
34
66
|
(0, should_never_happen_1.shouldNeverHappen)(res);
|
|
35
67
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
const value = this.computeImpl(sourceCode, 'quiet', {}, moduleReader, args);
|
|
41
|
-
if (!value.isSink()) {
|
|
42
|
-
return { value: value.export(), tag: 'ok' };
|
|
43
|
-
}
|
|
44
|
-
return new result_1.ResultSinkImpl(value, sourceCode);
|
|
68
|
+
compileSync(fileName, readFile) {
|
|
69
|
+
const acc = [fileName];
|
|
70
|
+
this.pumpSync(acc, readFile);
|
|
71
|
+
return this.getExecutableFor(fileName);
|
|
45
72
|
}
|
|
46
|
-
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
73
|
+
async compile(fileName, readFile) {
|
|
74
|
+
const acc = [fileName];
|
|
75
|
+
await this.pump(acc, readFile);
|
|
76
|
+
return this.getExecutableFor(fileName);
|
|
77
|
+
}
|
|
78
|
+
getExecutableFor(fileName) {
|
|
79
|
+
// Verify that a unit for the main file exists
|
|
80
|
+
this.unitOf(undefined, fileName);
|
|
81
|
+
return {
|
|
82
|
+
execute: (args) => {
|
|
83
|
+
const value = this.execute(fileName, 'quiet', args);
|
|
84
|
+
let ret;
|
|
85
|
+
if (!value.isSink()) {
|
|
86
|
+
ret = { value: value.export(), tag: 'ok' };
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
ret = (0, result_1.createResultSink)(value, this.unitByUnitId);
|
|
90
|
+
}
|
|
91
|
+
return ret;
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
execute(fileName, verbosity, args) {
|
|
96
|
+
const runtime = new runtime_1.Runtime(this.unitOf(undefined, fileName), verbosity, (a, b) => this.unitOf(a, b), args);
|
|
97
|
+
const c = runtime.compute();
|
|
98
|
+
if (c.value) {
|
|
99
|
+
return c.value;
|
|
57
100
|
}
|
|
58
|
-
const
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
101
|
+
const formatted = (0, result_1.formatTrace)(c.expressionTrace, this.unitByUnitId);
|
|
102
|
+
throw new Error(`${c.errorMessage} when evaluating:\n${formatted}`);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Translates the filename into a resolved path (to be read) if it has not been read yet. If it has been read,
|
|
106
|
+
* returns undefined
|
|
107
|
+
*/
|
|
108
|
+
computeResolvedPathToRead(fileName) {
|
|
109
|
+
const pathFromSourceRoot = this.getPathFromSourceRoot(undefined, fileName);
|
|
110
|
+
if (this.unitByUnitId.has(pathFromSourceRoot)) {
|
|
111
|
+
return undefined;
|
|
62
112
|
}
|
|
63
|
-
return
|
|
113
|
+
return path.join(this.sourceRoot, pathFromSourceRoot);
|
|
64
114
|
}
|
|
65
|
-
|
|
115
|
+
loadFileContent(resolvedPath, content, acc) {
|
|
116
|
+
if (resolvedPath === undefined) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
const pathFromSourceRoot = path.relative(this.sourceRoot, resolvedPath);
|
|
120
|
+
if (content === undefined) {
|
|
121
|
+
throw new Error(`Cannot find file '${path.join(this.sourceRoot, pathFromSourceRoot)}'`);
|
|
122
|
+
}
|
|
123
|
+
const sourceCode = new source_code_1.SourceCode(content, pathFromSourceRoot);
|
|
66
124
|
const scanner = new scanner_1.Scanner(sourceCode);
|
|
67
125
|
const parser = new parser_1.Parser(scanner);
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
126
|
+
const unit = parser.parse();
|
|
127
|
+
this.unitByUnitId.set(pathFromSourceRoot, { unit, sourceCode });
|
|
128
|
+
acc.push(...unit.imports.map(at => this.getPathFromSourceRoot(pathFromSourceRoot, at.pathToImportFrom.text)));
|
|
129
|
+
}
|
|
130
|
+
unitOf(importerPathFromSourceRoot, relativePath) {
|
|
131
|
+
const p = this.getPathFromSourceRoot(importerPathFromSourceRoot, relativePath);
|
|
132
|
+
const { unit } = this.unitByUnitId.get(p) ?? (0, fail_me_1.failMe)(`Encluntered a file which has not been loaded (file name: ${p})`);
|
|
133
|
+
return unit;
|
|
134
|
+
}
|
|
135
|
+
getPathFromSourceRoot(startingPoint, relativePath) {
|
|
136
|
+
if (path.isAbsolute(relativePath)) {
|
|
137
|
+
throw new Error(`An absolute path is not allowed for referencing a septima source file (got: ${relativePath})`);
|
|
138
|
+
}
|
|
139
|
+
const joined = startingPoint === undefined ? relativePath : path.join(path.dirname(startingPoint), relativePath);
|
|
140
|
+
const ret = path.normalize(joined);
|
|
141
|
+
if (ret.startsWith('.')) {
|
|
142
|
+
throw new Error(`resolved path (${path.join(this.sourceRoot, ret)}) is pointing outside of source root (${this.sourceRoot})`);
|
|
143
|
+
}
|
|
144
|
+
return ret;
|
|
145
|
+
}
|
|
146
|
+
// loadSync() need to be kept in sync with load(), ditto pumpSync() w/ pump(). There is deep testing coverage for the
|
|
147
|
+
// sync variant but only partial coverage for the async variant.
|
|
148
|
+
// An extra effort was taken in order to reduce the duplication between the two variants. This attempt achieved its
|
|
149
|
+
// goal (to some extent) but resulted in a somewhat unnatural code (like using an "acc" parameter to collect items,
|
|
150
|
+
// instead of returning an array, having an external "pump" logic instead of a plain recursion). Perhaps a better
|
|
151
|
+
// approach is to have a contract test and run it twice thus equally testing the two variants.
|
|
152
|
+
loadSync(fileName, readFile, acc) {
|
|
153
|
+
const p = this.computeResolvedPathToRead(fileName);
|
|
154
|
+
const content = p && readFile(p);
|
|
155
|
+
this.loadFileContent(p, content, acc);
|
|
156
|
+
}
|
|
157
|
+
async load(fileName, readFile, acc) {
|
|
158
|
+
const p = this.computeResolvedPathToRead(fileName);
|
|
159
|
+
const content = p && (await readFile(p));
|
|
160
|
+
this.loadFileContent(p, content, acc);
|
|
161
|
+
}
|
|
162
|
+
pumpSync(acc, readFile) {
|
|
163
|
+
while (true) {
|
|
164
|
+
const curr = acc.pop();
|
|
165
|
+
if (!curr) {
|
|
166
|
+
return;
|
|
72
167
|
}
|
|
73
|
-
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
168
|
+
this.loadSync(curr, readFile, acc);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
async pump(acc, readFile) {
|
|
172
|
+
while (true) {
|
|
173
|
+
const curr = acc.pop();
|
|
174
|
+
if (!curr) {
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
await this.load(curr, readFile, acc);
|
|
79
178
|
}
|
|
80
|
-
const runtimeErrorMessage = `${c.errorMessage} when evaluating:\n${sourceCode.formatTrace(c.expressionTrace)}`;
|
|
81
|
-
throw new Error(runtimeErrorMessage);
|
|
82
179
|
}
|
|
83
180
|
}
|
|
84
181
|
exports.Septima = Septima;
|
|
85
|
-
|
|
86
|
-
* Parses the given input and returns an AST.
|
|
87
|
-
* @param arg the source code to parse (string) or a Parser object (configured with the source code to parse).
|
|
88
|
-
* @returns
|
|
89
|
-
*/
|
|
90
|
-
function parse(arg) {
|
|
91
|
-
const parser = typeof arg === 'string' ? new parser_1.Parser(new scanner_1.Scanner(new source_code_1.SourceCode(arg))) : arg;
|
|
92
|
-
const ast = parser.parse();
|
|
93
|
-
return ast;
|
|
94
|
-
}
|
|
95
|
-
exports.parse = parse;
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VwdGltYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXB0aW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFDQUFpQztBQUNqQyxxQ0FBNkQ7QUFDN0QsdUNBQThDO0FBQzlDLHVDQUFtQztBQUNuQywrREFBeUQ7QUFDekQsK0NBQTBDO0FBWTFDLE1BQWEsT0FBTztJQUNsQjs7Ozs7Ozs7OztPQVVHO0lBQ0gsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFhLEVBQUUsT0FBaUIsRUFBRSxPQUFnQyxFQUFFO1FBQzdFLE1BQU0sTUFBTSxHQUNWLE9BQU8sRUFBRSxNQUFNO1lBQ2YsQ0FBQyxDQUFDLENBQWEsRUFBRSxFQUFFO2dCQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtZQUM1QixDQUFDLENBQUMsQ0FBQTtRQUNKLE1BQU0sR0FBRyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQzNELElBQUksR0FBRyxDQUFDLEdBQUcsS0FBSyxJQUFJLEVBQUU7WUFDcEIsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFBO1NBQ2pCO1FBRUQsSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLE1BQU0sRUFBRTtZQUN0QixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtTQUNuQjtRQUVELElBQUEsdUNBQWlCLEVBQUMsR0FBRyxDQUFDLENBQUE7SUFDeEIsQ0FBQztJQUVELGdCQUFlLENBQUM7SUFFaEIsYUFBYSxDQUFDLFVBQWtCLEVBQUUsWUFBbUMsRUFBRSxJQUE2QjtRQUNsRyxNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDdEMsTUFBTSxVQUFVLEdBQUcsSUFBSSx3QkFBVSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3hDLE1BQU0sS0FBSyxHQUFH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
|
|
182
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VwdGltYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXB0aW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQTRCO0FBRzVCLHVDQUFrQztBQUNsQyxxQ0FBaUM7QUFDakMscUNBQTRFO0FBQzVFLHVDQUE4QztBQUM5Qyx1Q0FBbUM7QUFDbkMsK0RBQXlEO0FBQ3pELCtDQUEwQztBQXVCMUMsTUFBYSxPQUFPO0lBb0NsQixZQUE2QixhQUFhLEVBQUU7UUFBZixlQUFVLEdBQVYsVUFBVSxDQUFLO1FBRjNCLGlCQUFZLEdBQUcsSUFBSSxHQUFHLEVBQXNCLENBQUE7SUFFZCxDQUFDO0lBbkNoRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFhLEVBQUUsT0FBaUIsRUFBRSxPQUFnQyxFQUFFO1FBQzdFLE1BQU0sTUFBTSxHQUNWLE9BQU8sRUFBRSxNQUFNO1lBQ2YsQ0FBQyxDQUFDLENBQWEsRUFBRSxFQUFFO2dCQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtZQUM1QixDQUFDLENBQUMsQ0FBQTtRQUVKLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQTtRQUMzQixNQUFNLFVBQVUsR0FBMkIsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFBO1FBQ2hFLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDN0MsTUFBTSxHQUFHLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN2RSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssSUFBSSxFQUFFO1lBQ3BCLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FB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
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
import { AstNode } from './ast-node';
|
|
2
|
-
import { Location,
|
|
2
|
+
import { Location, Span } from './location';
|
|
3
3
|
export declare class SourceCode {
|
|
4
4
|
readonly input: string;
|
|
5
|
-
|
|
5
|
+
readonly pathFromSourceRoot: string;
|
|
6
|
+
constructor(input: string, pathFromSourceRoot: string);
|
|
6
7
|
formatTrace(trace: AstNode[]): string;
|
|
7
|
-
|
|
8
|
+
formatAst(ast: AstNode): string;
|
|
8
9
|
sourceRef(span: Span | undefined): string;
|
|
9
|
-
formatSpan
|
|
10
|
+
private formatSpan;
|
|
10
11
|
private interestingPart;
|
|
11
|
-
resolveLocation
|
|
12
|
+
private resolveLocation;
|
|
12
13
|
/**
|
|
13
14
|
* Returns a span starting a the given input location that runs all the way to the end of the line. Specifically, the
|
|
14
15
|
* returned span's `.to` location will point at the character (in the same line as `loc`) that is immediately before
|
|
15
16
|
* the terminating newline character.
|
|
16
17
|
*/
|
|
17
18
|
expandToEndOfLine(loc: Location): Span;
|
|
18
|
-
lineAt
|
|
19
|
+
private lineAt;
|
|
19
20
|
}
|
package/dist/src/source-code.js
CHANGED
|
@@ -3,8 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.SourceCode = void 0;
|
|
4
4
|
const ast_node_1 = require("./ast-node");
|
|
5
5
|
class SourceCode {
|
|
6
|
-
constructor(input) {
|
|
6
|
+
constructor(input, pathFromSourceRoot) {
|
|
7
7
|
this.input = input;
|
|
8
|
+
this.pathFromSourceRoot = pathFromSourceRoot;
|
|
8
9
|
}
|
|
9
10
|
formatTrace(trace) {
|
|
10
11
|
const spacer = ' ';
|
|
@@ -14,22 +15,22 @@ class SourceCode {
|
|
|
14
15
|
.join(`\n${spacer}`);
|
|
15
16
|
return `${spacer}${formatted}`;
|
|
16
17
|
}
|
|
17
|
-
|
|
18
|
-
return this.sourceRef(
|
|
18
|
+
formatAst(ast) {
|
|
19
|
+
return this.sourceRef((0, ast_node_1.span)(ast));
|
|
19
20
|
}
|
|
20
21
|
sourceRef(span) {
|
|
21
22
|
if (!span) {
|
|
22
23
|
return `at <unknown location>`;
|
|
23
24
|
}
|
|
24
|
-
return `at ${this.formatSpan(span)} ${this.interestingPart(span)}`;
|
|
25
|
+
return `at (${this.pathFromSourceRoot}:${this.formatSpan(span)}) ${this.interestingPart(span)}`;
|
|
25
26
|
}
|
|
26
27
|
formatSpan(span) {
|
|
27
28
|
const f = this.resolveLocation(span.from);
|
|
28
29
|
const t = this.resolveLocation(span.to);
|
|
29
30
|
if (f.line === t.line) {
|
|
30
|
-
return
|
|
31
|
+
return `${f.line + 1}:${f.col + 1}..${t.col + 1}`;
|
|
31
32
|
}
|
|
32
|
-
return
|
|
33
|
+
return `${f.line + 1}:${f.col + 1}..${t.line + 1}:${t.col + 1}`;
|
|
33
34
|
}
|
|
34
35
|
interestingPart(span) {
|
|
35
36
|
const f = this.resolveLocation(span.from);
|
|
@@ -87,4 +88,4 @@ class SourceCode {
|
|
|
87
88
|
}
|
|
88
89
|
}
|
|
89
90
|
exports.SourceCode = SourceCode;
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlLWNvZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc291cmNlLWNvZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQTBDO0FBRzFDLE1BQWEsVUFBVTtJQUNyQixZQUFxQixLQUFhLEVBQVcsa0JBQTBCO1FBQWxELFVBQUssR0FBTCxLQUFLLENBQVE7UUFBVyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQVE7SUFBRyxDQUFDO0lBRTNFLFdBQVcsQ0FBQyxLQUFnQjtRQUMxQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUE7UUFFbkIsTUFBTSxTQUFTLEdBQUcsS0FBSzthQUNwQixHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUEsZUFBSSxFQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDckMsT0FBTyxFQUFFO2FBQ1QsSUFBSSxDQUFDLEtBQUssTUFBTSxFQUFFLENBQUMsQ0FBQTtRQUN0QixPQUFPLEdBQUcsTUFBTSxHQUFHLFNBQVMsRUFBRSxDQUFBO0lBQ2hDLENBQUM7SUFFRCxTQUFTLENBQUMsR0FBWTtRQUNwQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBQSxlQUFJLEVBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQsU0FBUyxDQUFDLElBQXNCO1FBQzlCLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxPQUFPLHVCQUF1QixDQUFBO1NBQy9CO1FBQ0QsT0FBTyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQTtJQUNqRyxDQUFDO0lBRU8sVUFBVSxDQUFDLElBQVU7UUFDM0IsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7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
|