solc-typed-ast 10.1.3 → 10.1.6
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 +1 -1
- package/dist/ast/index.d.ts +0 -1
- package/dist/ast/index.d.ts.map +1 -1
- package/dist/ast/index.js +0 -1
- package/dist/ast/index.js.map +1 -1
- package/dist/ast/legacy/function_definition_processor.d.ts +0 -1
- package/dist/ast/legacy/function_definition_processor.d.ts.map +1 -1
- package/dist/ast/legacy/function_definition_processor.js +2 -10
- package/dist/ast/legacy/function_definition_processor.js.map +1 -1
- package/dist/ast/modern/function_definition_processor.d.ts.map +1 -1
- package/dist/ast/modern/function_definition_processor.js +2 -1
- package/dist/ast/modern/function_definition_processor.js.map +1 -1
- package/dist/ast/modern/literal_processor.js +1 -1
- package/dist/ast/modern/literal_processor.js.map +1 -1
- package/dist/ast/utils.d.ts +2 -0
- package/dist/ast/utils.d.ts.map +1 -1
- package/dist/ast/utils.js +12 -1
- package/dist/ast/utils.js.map +1 -1
- package/dist/misc/struct_equality.d.ts.map +1 -1
- package/dist/misc/struct_equality.js +3 -0
- package/dist/misc/struct_equality.js.map +1 -1
- package/package.json +12 -13
- package/dist/ast/sanity.d.ts +0 -35
- package/dist/ast/sanity.d.ts.map +0 -1
- package/dist/ast/sanity.js +0 -498
- package/dist/ast/sanity.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
[](https://github.com/ConsenSys/solc-typed-ast/actions/workflows/node.js.yaml)
|
|
2
2
|
[](https://codecov.io/gh/ConsenSys/solc-typed-ast)
|
|
3
3
|
[](https://consensys.github.io/solc-typed-ast/)
|
|
4
4
|
[](https://www.npmjs.com/package/solc-typed-ast)
|
package/dist/ast/index.d.ts
CHANGED
package/dist/ast/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ast/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ast/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
|
package/dist/ast/index.js
CHANGED
|
@@ -31,5 +31,4 @@ __exportStar(require("./dispatch"), exports);
|
|
|
31
31
|
__exportStar(require("./definitions"), exports);
|
|
32
32
|
__exportStar(require("./utils"), exports);
|
|
33
33
|
__exportStar(require("./xpath"), exports);
|
|
34
|
-
__exportStar(require("./sanity"), exports);
|
|
35
34
|
//# sourceMappingURL=index.js.map
|
package/dist/ast/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ast/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+DAA6C;AAC7C,8DAA4C;AAC5C,wDAAsC;AACtC,6DAA2C;AAC3C,wDAAsC;AACtC,qDAAmC;AACnC,uDAAqC;AACrC,6CAA2B;AAC3B,+CAA6B;AAC7B,8CAA4B;AAC5B,kDAAgC;AAChC,mDAAiC;AACjC,4CAA0B;AAC1B,6CAA2B;AAC3B,gDAA8B;AAC9B,0CAAwB;AACxB,0CAAwB
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ast/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+DAA6C;AAC7C,8DAA4C;AAC5C,wDAAsC;AACtC,6DAA2C;AAC3C,wDAAsC;AACtC,qDAAmC;AACnC,uDAAqC;AACrC,6CAA2B;AAC3B,+CAA6B;AAC7B,8CAA4B;AAC5B,kDAAgC;AAChC,mDAAiC;AACjC,4CAA0B;AAC1B,6CAA2B;AAC3B,gDAA8B;AAC9B,0CAAwB;AACxB,0CAAwB"}
|
|
@@ -3,7 +3,6 @@ import { FunctionDefinition } from "../implementation/declaration/function_defin
|
|
|
3
3
|
import { LegacyNodeProcessor } from "./node_processor";
|
|
4
4
|
export declare class LegacyFunctionDefinitionProcessor extends LegacyNodeProcessor<FunctionDefinition> {
|
|
5
5
|
process(reader: ASTReader, config: ASTReaderConfiguration, raw: any): ConstructorParameters<typeof FunctionDefinition>;
|
|
6
|
-
private detectFunctionKind;
|
|
7
6
|
private detectStateMutability;
|
|
8
7
|
private extract;
|
|
9
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"function_definition_processor.d.ts","sourceRoot":"","sources":["../../../src/ast/legacy/function_definition_processor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAElE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mDAAmD,CAAC;
|
|
1
|
+
{"version":3,"file":"function_definition_processor.d.ts","sourceRoot":"","sources":["../../../src/ast/legacy/function_definition_processor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAElE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mDAAmD,CAAC;AAOvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,qBAAa,iCAAkC,SAAQ,mBAAmB,CAAC,kBAAkB,CAAC;IAC1F,OAAO,CACH,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,sBAAsB,EAC9B,GAAG,EAAE,GAAG,GACT,qBAAqB,CAAC,OAAO,kBAAkB,CAAC;IAmDnD,OAAO,CAAC,qBAAqB;IAc7B,OAAO,CAAC,OAAO;CAoDlB"}
|
|
@@ -5,6 +5,7 @@ const constants_1 = require("../constants");
|
|
|
5
5
|
const modifier_invocation_1 = require("../implementation/meta/modifier_invocation");
|
|
6
6
|
const override_specifier_1 = require("../implementation/meta/override_specifier");
|
|
7
7
|
const structured_documentation_1 = require("../implementation/meta/structured_documentation");
|
|
8
|
+
const utils_1 = require("../utils");
|
|
8
9
|
const node_processor_1 = require("./node_processor");
|
|
9
10
|
class LegacyFunctionDefinitionProcessor extends node_processor_1.LegacyNodeProcessor {
|
|
10
11
|
process(reader, config, raw) {
|
|
@@ -16,7 +17,7 @@ class LegacyFunctionDefinitionProcessor extends node_processor_1.LegacyNodeProce
|
|
|
16
17
|
const visibility = attributes.visibility;
|
|
17
18
|
const virtual = "virtual" in attributes ? attributes.virtual : false;
|
|
18
19
|
const name = attributes.name;
|
|
19
|
-
const kind =
|
|
20
|
+
const kind = (0, utils_1.detectFunctionKind)(attributes);
|
|
20
21
|
const stateMutability = this.detectStateMutability(attributes);
|
|
21
22
|
const [structuredDocumentation, overrideSpecifier, parameters, returnParameters, modifiers, body] = this.extract(children);
|
|
22
23
|
let documentation;
|
|
@@ -46,15 +47,6 @@ class LegacyFunctionDefinitionProcessor extends node_processor_1.LegacyNodeProce
|
|
|
46
47
|
raw
|
|
47
48
|
];
|
|
48
49
|
}
|
|
49
|
-
detectFunctionKind(attributes) {
|
|
50
|
-
if (attributes.kind) {
|
|
51
|
-
return attributes.kind;
|
|
52
|
-
}
|
|
53
|
-
if (attributes.isConstructor) {
|
|
54
|
-
return constants_1.FunctionKind.Constructor;
|
|
55
|
-
}
|
|
56
|
-
return attributes.name === "" ? constants_1.FunctionKind.Fallback : constants_1.FunctionKind.Function;
|
|
57
|
-
}
|
|
58
50
|
detectStateMutability(attributes) {
|
|
59
51
|
if (attributes.stateMutability) {
|
|
60
52
|
return attributes.stateMutability;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"function_definition_processor.js","sourceRoot":"","sources":["../../../src/ast/legacy/function_definition_processor.ts"],"names":[],"mappings":";;;AAEA,
|
|
1
|
+
{"version":3,"file":"function_definition_processor.js","sourceRoot":"","sources":["../../../src/ast/legacy/function_definition_processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"function_definition_processor.d.ts","sourceRoot":"","sources":["../../../src/ast/modern/function_definition_processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAElE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mDAAmD,CAAC;
|
|
1
|
+
{"version":3,"file":"function_definition_processor.d.ts","sourceRoot":"","sources":["../../../src/ast/modern/function_definition_processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAElE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mDAAmD,CAAC;AAOvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,qBAAa,iCAAkC,SAAQ,mBAAmB,CAAC,kBAAkB,CAAC;IAC1F,OAAO,CACH,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,sBAAsB,EAC9B,GAAG,EAAE,GAAG,GACT,qBAAqB,CAAC,OAAO,kBAAkB,CAAC;CAkDtD"}
|
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ModernFunctionDefinitionProcessor = void 0;
|
|
4
4
|
const constants_1 = require("../constants");
|
|
5
|
+
const utils_1 = require("../utils");
|
|
5
6
|
const node_processor_1 = require("./node_processor");
|
|
6
7
|
class ModernFunctionDefinitionProcessor extends node_processor_1.ModernNodeProcessor {
|
|
7
8
|
process(reader, config, raw) {
|
|
8
9
|
const [id, src] = super.process(reader, config, raw);
|
|
9
10
|
const scope = raw.scope;
|
|
10
|
-
const kind = raw
|
|
11
|
+
const kind = (0, utils_1.detectFunctionKind)(raw);
|
|
11
12
|
const isConstructor = raw.isConstructor || raw.kind === constants_1.FunctionKind.Constructor;
|
|
12
13
|
const visibility = raw.visibility;
|
|
13
14
|
const virtual = "virtual" in raw ? raw.virtual : false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"function_definition_processor.js","sourceRoot":"","sources":["../../../src/ast/modern/function_definition_processor.ts"],"names":[],"mappings":";;;AACA,4CAAyF;AAOzF,qDAAuD;AAEvD,MAAa,iCAAkC,SAAQ,oCAAuC;IAC1F,OAAO,CACH,MAAiB,EACjB,MAA8B,EAC9B,GAAQ;QAER,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QAErD,MAAM,KAAK,GAAW,GAAG,CAAC,KAAK,CAAC;QAChC,MAAM,IAAI,GAAiB,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"function_definition_processor.js","sourceRoot":"","sources":["../../../src/ast/modern/function_definition_processor.ts"],"names":[],"mappings":";;;AACA,4CAAyF;AAOzF,oCAA8C;AAC9C,qDAAuD;AAEvD,MAAa,iCAAkC,SAAQ,oCAAuC;IAC1F,OAAO,CACH,MAAiB,EACjB,MAA8B,EAC9B,GAAQ;QAER,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QAErD,MAAM,KAAK,GAAW,GAAG,CAAC,KAAK,CAAC;QAChC,MAAM,IAAI,GAAiB,IAAA,0BAAkB,EAAC,GAAG,CAAC,CAAC;QACnD,MAAM,aAAa,GAAY,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,IAAI,KAAK,wBAAY,CAAC,WAAW,CAAC;QAC1F,MAAM,UAAU,GAAuB,GAAG,CAAC,UAAU,CAAC;QACtD,MAAM,OAAO,GAAY,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;QAChE,MAAM,IAAI,GAAW,GAAG,CAAC,IAAI,CAAC;QAC9B,MAAM,eAAe,GAA4B,GAAG,CAAC,eAAe,CAAC;QACrE,MAAM,YAAY,GAAuB,GAAG,CAAC,YAAY,CAAC;QAE1D,IAAI,aAA2D,CAAC;QAEhE,IAAI,GAAG,CAAC,aAAa,EAAE;YACnB,aAAa;gBACT,OAAO,GAAG,CAAC,aAAa,KAAK,QAAQ;oBACjC,CAAC,CAAC,GAAG,CAAC,aAAa;oBACnB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;SACvD;QAED,MAAM,iBAAiB,GAAG,GAAG,CAAC,SAAS;YACnC,CAAC,CAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAuB;YAC9D,CAAC,CAAC,SAAS,CAAC;QAEhB,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAkB,CAAC;QAC3E,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAkB,CAAC;QACvF,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAyB,CAAC;QACrF,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAW,CAAC,CAAC,CAAC,SAAS,CAAC;QAEhF,OAAO;YACH,EAAE;YACF,GAAG;YACH,KAAK;YACL,IAAI;YACJ,IAAI;YACJ,OAAO;YACP,UAAU;YACV,eAAe;YACf,aAAa;YACb,UAAU;YACV,gBAAgB;YAChB,SAAS;YACT,iBAAiB;YACjB,IAAI;YACJ,aAAa;YACb,YAAY;YACZ,GAAG;SACN,CAAC;IACN,CAAC;CACJ;AAvDD,8EAuDC"}
|
|
@@ -7,7 +7,7 @@ class ModernLiteralProcessor extends expression_processor_1.ModernExpressionProc
|
|
|
7
7
|
const [id, src, typeString] = super.process(reader, config, raw);
|
|
8
8
|
const kind = raw.kind;
|
|
9
9
|
const hexValue = raw.hexValue;
|
|
10
|
-
const value = raw.value;
|
|
10
|
+
const value = raw.value === undefined ? null : raw.value;
|
|
11
11
|
const subdenomination = raw.subdenomination
|
|
12
12
|
? raw.subdenomination
|
|
13
13
|
: undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"literal_processor.js","sourceRoot":"","sources":["../../../src/ast/modern/literal_processor.ts"],"names":[],"mappings":";;;AAGA,iEAAmE;AAEnE,MAAa,sBAAuB,SAAQ,gDAAkC;IAC1E,OAAO,CACH,MAAiB,EACjB,MAA8B,EAC9B,GAAQ;QAER,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QAEjE,MAAM,IAAI,GAAgB,GAAG,CAAC,IAAI,CAAC;QACnC,MAAM,QAAQ,GAAW,GAAG,CAAC,QAAQ,CAAC;QACtC,MAAM,KAAK,GAAW,GAAG,CAAC,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"literal_processor.js","sourceRoot":"","sources":["../../../src/ast/modern/literal_processor.ts"],"names":[],"mappings":";;;AAGA,iEAAmE;AAEnE,MAAa,sBAAuB,SAAQ,gDAAkC;IAC1E,OAAO,CACH,MAAiB,EACjB,MAA8B,EAC9B,GAAQ;QAER,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QAEjE,MAAM,IAAI,GAAgB,GAAG,CAAC,IAAI,CAAC;QACnC,MAAM,QAAQ,GAAW,GAAG,CAAC,QAAQ,CAAC;QACtC,MAAM,KAAK,GAAW,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;QACjE,MAAM,eAAe,GAAqC,GAAG,CAAC,eAAe;YACzE,CAAC,CAAC,GAAG,CAAC,eAAe;YACrB,CAAC,CAAC,SAAS,CAAC;QAEhB,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC;IAC9E,CAAC;CACJ;AAjBD,wDAiBC"}
|
package/dist/ast/utils.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { FunctionKind } from "./constants";
|
|
1
2
|
export declare type SourceLocation = {
|
|
2
3
|
offset: number;
|
|
3
4
|
length: number;
|
|
@@ -22,4 +23,5 @@ export declare function encodeFuncSignature(signature: string, hexPrefix?: boole
|
|
|
22
23
|
export declare function encodeEventSignature(signature: string, hexPrefix?: boolean): string;
|
|
23
24
|
export declare function sequence(start?: number, step?: number): Generator<number, number, number>;
|
|
24
25
|
export declare function parseSourceLocation(range: string): SourceLocation;
|
|
26
|
+
export declare function detectFunctionKind(attributes: any): FunctionKind;
|
|
25
27
|
//# sourceMappingURL=utils.d.ts.map
|
package/dist/ast/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/ast/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/ast/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,oBAAY,cAAc,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC;AAErF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,KAAK,CACjB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACnB,MAAM,EAAE,CA6CV;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,UAAQ,GAAG,MAAM,CAIhF;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,UAAQ,GAAG,MAAM,CAIjF;AAED,wBAAiB,QAAQ,CAAC,KAAK,SAAI,EAAE,IAAI,SAAI,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAIhF;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,CAQjE;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,GAAG,GAAG,YAAY,CAUhE"}
|
package/dist/ast/utils.js
CHANGED
|
@@ -3,8 +3,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.parseSourceLocation = exports.sequence = exports.encodeEventSignature = exports.encodeFuncSignature = exports.split = void 0;
|
|
6
|
+
exports.detectFunctionKind = exports.parseSourceLocation = exports.sequence = exports.encodeEventSignature = exports.encodeFuncSignature = exports.split = void 0;
|
|
7
7
|
const web3_eth_abi_1 = __importDefault(require("web3-eth-abi"));
|
|
8
|
+
const constants_1 = require("./constants");
|
|
8
9
|
/**
|
|
9
10
|
* Splits the string using the separator.
|
|
10
11
|
* If the string contains well formed parenthesized expressions
|
|
@@ -81,4 +82,14 @@ function parseSourceLocation(range) {
|
|
|
81
82
|
return { offset, length, sourceIndex };
|
|
82
83
|
}
|
|
83
84
|
exports.parseSourceLocation = parseSourceLocation;
|
|
85
|
+
function detectFunctionKind(attributes) {
|
|
86
|
+
if (attributes.kind) {
|
|
87
|
+
return attributes.kind;
|
|
88
|
+
}
|
|
89
|
+
if (attributes.isConstructor) {
|
|
90
|
+
return constants_1.FunctionKind.Constructor;
|
|
91
|
+
}
|
|
92
|
+
return attributes.name === "" ? constants_1.FunctionKind.Fallback : constants_1.FunctionKind.Function;
|
|
93
|
+
}
|
|
94
|
+
exports.detectFunctionKind = detectFunctionKind;
|
|
84
95
|
//# sourceMappingURL=utils.js.map
|
package/dist/ast/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/ast/utils.ts"],"names":[],"mappings":";;;;;;AAAA,gEAAiC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/ast/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"struct_equality.d.ts","sourceRoot":"","sources":["../../src/misc/struct_equality.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,GAAG,OAAO,CAS3C;AAGD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,GAAG,OAAO,CAExC;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAUjF;AAED,MAAM,WAAW,wBAAwB;IACrC,SAAS,IAAI,GAAG,EAAE,CAAC;CACtB;AAED,wBAAgB,0BAA0B,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,wBAAwB,CAEhF;AAED;;;;;;;;GAQG;AACH,wBAAgB,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"struct_equality.d.ts","sourceRoot":"","sources":["../../src/misc/struct_equality.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,GAAG,OAAO,CAS3C;AAGD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,GAAG,OAAO,CAExC;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAUjF;AAED,MAAM,WAAW,wBAAwB;IACrC,SAAS,IAAI,GAAG,EAAE,CAAC;CACtB;AAED,wBAAgB,0BAA0B,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,wBAAwB,CAEhF;AAED;;;;;;;;GAQG;AACH,wBAAgB,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,OAAO,CAkGnE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"struct_equality.js","sourceRoot":"","sources":["../../src/misc/struct_equality.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"struct_equality.js","sourceRoot":"","sources":["../../src/misc/struct_equality.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "solc-typed-ast",
|
|
3
|
-
"version": "10.1.
|
|
3
|
+
"version": "10.1.6",
|
|
4
4
|
"description": "A TypeScript library providing a normalized typed Solidity AST along with the utilities necessary to generate the AST (from Solc) and traverse/manipulate it.",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"files": [
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"lint": "eslint src/ test/ --ext=ts",
|
|
22
22
|
"lint:fix": "eslint src/ test/ --ext=ts --fix",
|
|
23
23
|
"test": "NODE_OPTIONS='--max-old-space-size=2048' nyc mocha",
|
|
24
|
-
"coverage
|
|
24
|
+
"coverage": "nyc report",
|
|
25
25
|
"docs:render": "typedoc",
|
|
26
26
|
"docs:clear": "rm -rf docs/",
|
|
27
27
|
"docs:refresh": "npm run docs:clear && npm run docs:render",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"axios": "^0.27.2",
|
|
32
|
-
"commander": "^9.
|
|
32
|
+
"commander": "^9.4.0",
|
|
33
33
|
"findup-sync": "^5.0.0",
|
|
34
34
|
"fs-extra": "^10.1.0",
|
|
35
35
|
"jsel": "^1.1.6",
|
|
@@ -41,22 +41,21 @@
|
|
|
41
41
|
"devDependencies": {
|
|
42
42
|
"@types/fs-extra": "^9.0.13",
|
|
43
43
|
"@types/mocha": "^9.1.1",
|
|
44
|
-
"@types/node": "^16.11.
|
|
44
|
+
"@types/node": "^16.11.46",
|
|
45
45
|
"@types/semver": "^7.3.10",
|
|
46
|
-
"@typescript-eslint/eslint-plugin": "^5.
|
|
47
|
-
"@typescript-eslint/parser": "^5.
|
|
48
|
-
"
|
|
49
|
-
"eslint": "^8.19.0",
|
|
46
|
+
"@typescript-eslint/eslint-plugin": "^5.31.0",
|
|
47
|
+
"@typescript-eslint/parser": "^5.31.0",
|
|
48
|
+
"eslint": "^8.20.0",
|
|
50
49
|
"eslint-config-prettier": "^8.5.0",
|
|
51
50
|
"eslint-plugin-prettier": "^4.2.1",
|
|
52
|
-
"expect": "^28.1.
|
|
51
|
+
"expect": "^28.1.3",
|
|
53
52
|
"mocha": "^10.0.0",
|
|
54
53
|
"nyc": "^15.1.0",
|
|
55
|
-
"peggy": "^
|
|
54
|
+
"peggy": "^2.0.1",
|
|
56
55
|
"prettier": "2.7.1",
|
|
57
|
-
"ts-node": "^10.
|
|
58
|
-
"ts-pegjs": "^1.
|
|
59
|
-
"typedoc": "^0.23.
|
|
56
|
+
"ts-node": "^10.9.1",
|
|
57
|
+
"ts-pegjs": "^2.1.0",
|
|
58
|
+
"typedoc": "^0.23.9",
|
|
60
59
|
"typescript": "^4.7.4"
|
|
61
60
|
},
|
|
62
61
|
"homepage": "https://consensys.github.io/solc-typed-ast",
|
package/dist/ast/sanity.d.ts
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { ASTContext, SourceUnit } from ".";
|
|
2
|
-
/**
|
|
3
|
-
* Error thrown by `checkSanity` that describes a problem with the AST
|
|
4
|
-
*/
|
|
5
|
-
export declare class InsaneASTError extends Error {
|
|
6
|
-
}
|
|
7
|
-
/**
|
|
8
|
-
* Check that a single SourceUnit has a sane structure. This checks that:
|
|
9
|
-
*
|
|
10
|
-
* - all reachable nodes belong to the same context, have their parent/sibling set correctly,
|
|
11
|
-
* - all number id properties of nodes point to a node in the same context
|
|
12
|
-
* - when a number property (e.g. `scope`) has a corresponding `v` prefixed property (e.g. `vScope`)
|
|
13
|
-
* check that the number proerty corresponds to the id of the `v` prefixed property.
|
|
14
|
-
* - most 'v' properties point to direct children of a node
|
|
15
|
-
*
|
|
16
|
-
* NOTE: While this code can be slightly slow, its meant to be used mostly in testing so its
|
|
17
|
-
* not performance critical.
|
|
18
|
-
*
|
|
19
|
-
* @param unit - source unit to check
|
|
20
|
-
* @param ctxts - `ASTContext`s for each of the groups of units
|
|
21
|
-
*/
|
|
22
|
-
export declare function checkSane(unit: SourceUnit, ctx: ASTContext): void;
|
|
23
|
-
/**
|
|
24
|
-
* Check that a single SourceUnit has a sane structure. This checks that:
|
|
25
|
-
* - All reachable nodes belong to the same context, have their parent/sibling set correctly.
|
|
26
|
-
* - All number id properties of nodes point to a node in the same context.
|
|
27
|
-
* - When a number property (e.g. `scope`) has a corresponding `v` prefixed property (e.g. `vScope`)
|
|
28
|
-
* check that the number proerty corresponds to the id of the `v` prefixed property.
|
|
29
|
-
* - Most 'v' properties point to direct children of a node.
|
|
30
|
-
*
|
|
31
|
-
* NOTE: While this code can be slightly slow, its meant to be used mostly in testing so its
|
|
32
|
-
* not performance critical.
|
|
33
|
-
*/
|
|
34
|
-
export declare function isSane(unit: SourceUnit, ctx: ASTContext): boolean;
|
|
35
|
-
//# sourceMappingURL=sanity.d.ts.map
|
package/dist/ast/sanity.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sanity.d.ts","sourceRoot":"","sources":["../../src/ast/sanity.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,UAAU,EA0CV,UAAU,EAeb,MAAM,GAAG,CAAC;AAoBX;;GAEG;AACH,qBAAa,cAAe,SAAQ,KAAK;CAAG;AAqP5C;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CAqVjE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAcjE"}
|
package/dist/ast/sanity.js
DELETED
|
@@ -1,498 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isSane = exports.checkSane = exports.InsaneASTError = void 0;
|
|
4
|
-
const _1 = require(".");
|
|
5
|
-
const pretty_printing_1 = require("../misc/pretty_printing");
|
|
6
|
-
/**
|
|
7
|
-
* Helper function to check if the node/nodes `arg` is in the `ASTContext` `ctx`.
|
|
8
|
-
*/
|
|
9
|
-
function inCtx(arg, ctx) {
|
|
10
|
-
if (arg instanceof _1.ASTNode) {
|
|
11
|
-
return ctx.contains(arg);
|
|
12
|
-
}
|
|
13
|
-
for (const node of arg) {
|
|
14
|
-
if (!inCtx(node, ctx)) {
|
|
15
|
-
return false;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
return true;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Error thrown by `checkSanity` that describes a problem with the AST
|
|
22
|
-
*/
|
|
23
|
-
class InsaneASTError extends Error {
|
|
24
|
-
}
|
|
25
|
-
exports.InsaneASTError = InsaneASTError;
|
|
26
|
-
/**
|
|
27
|
-
* Check that the property `prop` of an `ASTNode` `node` is either an `ASTNode`
|
|
28
|
-
* in the expected `ASTContext` `ctx` or an array `ASTNode[]` all of which are in
|
|
29
|
-
* the expected `ASTContext`
|
|
30
|
-
*/
|
|
31
|
-
function checkVFieldCtx(node, prop, ctx) {
|
|
32
|
-
const val = node[prop];
|
|
33
|
-
if (val instanceof _1.ASTNode) {
|
|
34
|
-
if (!inCtx(val, ctx)) {
|
|
35
|
-
throw new Error(`Node ${(0, pretty_printing_1.pp)(node)} property ${String(prop)} ${(0, pretty_printing_1.pp)(val)} not in expected context ${(0, pretty_printing_1.pp)(ctx)}. Instead in ${(0, pretty_printing_1.pp)(val.context)}`);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
else if (val instanceof Array) {
|
|
39
|
-
for (let idx = 0; idx < val.length; idx++) {
|
|
40
|
-
const el = val[idx];
|
|
41
|
-
if (!(el instanceof _1.ASTNode)) {
|
|
42
|
-
throw new Error(`Expected property ${String(prop)}[${idx}] of ${(0, pretty_printing_1.pp)(node)} to be an ASTNode not ${el}`);
|
|
43
|
-
}
|
|
44
|
-
if (!inCtx(val, ctx)) {
|
|
45
|
-
throw new Error(`Node ${(0, pretty_printing_1.pp)(node)} property ${String(prop)}[${idx}] ${(0, pretty_printing_1.pp)(el)} not in expected context ${(0, pretty_printing_1.pp)(ctx)}. Instead in ${(0, pretty_printing_1.pp)(el.context)}`);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
throw new Error(`Expected property ${String(prop)} of ${(0, pretty_printing_1.pp)(node)} to be an ASTNode, not ${val}`);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Helper to check that:
|
|
55
|
-
*
|
|
56
|
-
* 1) the field `field` of `node` is either a number or array of numbers
|
|
57
|
-
* 2) the field `vField` of `node` is either an `ASTNode` or an array of ASTNodes
|
|
58
|
-
* 3) if field is a number then `vField` is an `ASTNode` and `field == vField.id`
|
|
59
|
-
* 4) if field is an array of numbers then `vField` is an `ASTNode[]` and
|
|
60
|
-
* `node.field.length === node.vField.length` and `node.field[i] ===
|
|
61
|
-
* node.vField[i].id` forall i in `[0, ... node.field.lenth)`
|
|
62
|
-
*
|
|
63
|
-
*/
|
|
64
|
-
function checkFieldAndVFieldMatch(node, field, vField) {
|
|
65
|
-
const val1 = node[field];
|
|
66
|
-
const val2 = node[vField];
|
|
67
|
-
if (typeof val1 === "number") {
|
|
68
|
-
if (!(val2 instanceof _1.ASTNode)) {
|
|
69
|
-
throw new Error(`Expected property ${String(vField)} of ${(0, pretty_printing_1.pp)(node)} to be an ASTNode when ${String(field)} is a number, not ${val2}`);
|
|
70
|
-
}
|
|
71
|
-
if (val1 != val2.id) {
|
|
72
|
-
throw new InsaneASTError(`Node ${(0, pretty_printing_1.pp)(node)} property ${String(field)} ${val1} differs from ${String(vField)}.id ${(0, pretty_printing_1.pp)(val2)}`);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
else if (val1 instanceof Array) {
|
|
76
|
-
if (!(val2 instanceof Array)) {
|
|
77
|
-
throw new Error(`Expected property ${String(vField)} of ${(0, pretty_printing_1.pp)(node)} to be an array when ${String(vField)} is an array, not ${val2}`);
|
|
78
|
-
}
|
|
79
|
-
if (val1.length !== val2.length) {
|
|
80
|
-
throw new InsaneASTError(`Node ${(0, pretty_printing_1.pp)(node)} array properties ${String(field)} and ${String(vField)} have different lengths ${val1.length} != ${val2.length}`);
|
|
81
|
-
}
|
|
82
|
-
for (let idx = 0; idx < val1.length; idx++) {
|
|
83
|
-
const el1 = val1[idx];
|
|
84
|
-
const el2 = val2[idx];
|
|
85
|
-
if (typeof el1 !== "number") {
|
|
86
|
-
throw new Error(`Expected property ${String(field)}[${idx}] of ${(0, pretty_printing_1.pp)(node)} to be a number not ${el1}`);
|
|
87
|
-
}
|
|
88
|
-
if (!(el2 instanceof _1.ASTNode)) {
|
|
89
|
-
throw new Error(`Expected property ${String(vField)}[${idx}] of ${(0, pretty_printing_1.pp)(node)} to be a number not ${el2}`);
|
|
90
|
-
}
|
|
91
|
-
if (el1 != el2.id) {
|
|
92
|
-
throw new InsaneASTError(`Node ${(0, pretty_printing_1.pp)(node)} property ${String(field)}[${idx}] ${el1} differs from ${String(vField)}[${idx}].id ${(0, pretty_printing_1.pp)(el2)}`);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
else {
|
|
97
|
-
throw new Error(`Expected property ${String(field)} of ${(0, pretty_printing_1.pp)(node)} to be a number or array of numbers not ${val1}`);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Helper to check that:
|
|
102
|
-
*
|
|
103
|
-
* 1. All ASTNodes that appear in each of the `fields` of `node` is a direct child of `node`
|
|
104
|
-
* 2. All the direct children of `node` are mentioned in some of the `fields`.
|
|
105
|
-
*/
|
|
106
|
-
function checkDirectChildren(node, ...fields) {
|
|
107
|
-
const directChildren = new Set(node.children);
|
|
108
|
-
const computedChildren = new Set();
|
|
109
|
-
for (const field of fields) {
|
|
110
|
-
const val = node[field];
|
|
111
|
-
if (val === undefined) {
|
|
112
|
-
continue;
|
|
113
|
-
}
|
|
114
|
-
if (val instanceof _1.ASTNode) {
|
|
115
|
-
if (!directChildren.has(val)) {
|
|
116
|
-
throw new InsaneASTError(`Field ${String(field)} of node ${(0, pretty_printing_1.pp)(node)} is not a direct child: ${(0, pretty_printing_1.pp)(val)} child of ${(0, pretty_printing_1.pp)(val.parent)}`);
|
|
117
|
-
}
|
|
118
|
-
computedChildren.add(val);
|
|
119
|
-
}
|
|
120
|
-
else if (val instanceof Array) {
|
|
121
|
-
for (let i = 0; i < val.length; i++) {
|
|
122
|
-
const el = val[i];
|
|
123
|
-
if (el === null) {
|
|
124
|
-
continue;
|
|
125
|
-
}
|
|
126
|
-
if (!(el instanceof _1.ASTNode)) {
|
|
127
|
-
throw new Error(`Field ${String(field)} of ${(0, pretty_printing_1.pp)(node)} is expected to be ASTNode, array or map with ASTNodes - instead array containing ${el}`);
|
|
128
|
-
}
|
|
129
|
-
if (!directChildren.has(el)) {
|
|
130
|
-
throw new InsaneASTError(`Field ${String(field)}[${i}] of node ${(0, pretty_printing_1.pp)(node)} is not a direct child: ${(0, pretty_printing_1.pp)(el)} child of ${(0, pretty_printing_1.pp)(el.parent)}`);
|
|
131
|
-
}
|
|
132
|
-
computedChildren.add(el);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
else if (val instanceof Map) {
|
|
136
|
-
for (const [k, v] of val.entries()) {
|
|
137
|
-
if (v === null) {
|
|
138
|
-
continue;
|
|
139
|
-
}
|
|
140
|
-
if (!(v instanceof _1.ASTNode)) {
|
|
141
|
-
throw new Error(`Field ${String(field)} of ${(0, pretty_printing_1.pp)(node)} is expected to be ASTNode, array or map with ASTNodes - instead map containing ${v}`);
|
|
142
|
-
}
|
|
143
|
-
if (!directChildren.has(v)) {
|
|
144
|
-
throw new InsaneASTError(`Field ${String(field)}[${k}] of node ${(0, pretty_printing_1.pp)(node)} is not a direct child: ${(0, pretty_printing_1.pp)(v)} child of ${(0, pretty_printing_1.pp)(v.parent)}`);
|
|
145
|
-
}
|
|
146
|
-
computedChildren.add(v);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
else {
|
|
150
|
-
throw new Error(`Field ${String(field)} of ${(0, pretty_printing_1.pp)(node)} is neither an ASTNode nor an array of ASTNode or nulls: ${val}`);
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
if (computedChildren.size < directChildren.size) {
|
|
154
|
-
let missingChild;
|
|
155
|
-
for (const child of directChildren) {
|
|
156
|
-
if (computedChildren.has(child)) {
|
|
157
|
-
continue;
|
|
158
|
-
}
|
|
159
|
-
missingChild = child;
|
|
160
|
-
break;
|
|
161
|
-
}
|
|
162
|
-
throw new InsaneASTError(`Fields ${fields.join(", ")} don't completely cover the direct children: ${(0, pretty_printing_1.pp)(missingChild)} is missing`);
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Check that a single SourceUnit has a sane structure. This checks that:
|
|
167
|
-
*
|
|
168
|
-
* - all reachable nodes belong to the same context, have their parent/sibling set correctly,
|
|
169
|
-
* - all number id properties of nodes point to a node in the same context
|
|
170
|
-
* - when a number property (e.g. `scope`) has a corresponding `v` prefixed property (e.g. `vScope`)
|
|
171
|
-
* check that the number proerty corresponds to the id of the `v` prefixed property.
|
|
172
|
-
* - most 'v' properties point to direct children of a node
|
|
173
|
-
*
|
|
174
|
-
* NOTE: While this code can be slightly slow, its meant to be used mostly in testing so its
|
|
175
|
-
* not performance critical.
|
|
176
|
-
*
|
|
177
|
-
* @param unit - source unit to check
|
|
178
|
-
* @param ctxts - `ASTContext`s for each of the groups of units
|
|
179
|
-
*/
|
|
180
|
-
function checkSane(unit, ctx) {
|
|
181
|
-
for (const node of unit.getChildren(true)) {
|
|
182
|
-
if (!inCtx(node, ctx)) {
|
|
183
|
-
throw new InsaneASTError(`Child ${(0, pretty_printing_1.pp)(node)} in different context: ${ctx.id} from expected ${ctx.id}`);
|
|
184
|
-
}
|
|
185
|
-
const immediateChildren = node.children;
|
|
186
|
-
for (const child of immediateChildren) {
|
|
187
|
-
if (child.parent !== node) {
|
|
188
|
-
throw new InsaneASTError(`Child ${(0, pretty_printing_1.pp)(child)} has wrong parent: expected ${(0, pretty_printing_1.pp)(node)} got ${(0, pretty_printing_1.pp)(child.parent)}`);
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
if (node instanceof _1.PragmaDirective ||
|
|
192
|
-
node instanceof _1.StructuredDocumentation ||
|
|
193
|
-
node instanceof _1.EnumValue ||
|
|
194
|
-
node instanceof _1.Break ||
|
|
195
|
-
node instanceof _1.Continue ||
|
|
196
|
-
node instanceof _1.InlineAssembly ||
|
|
197
|
-
node instanceof _1.PlaceholderStatement ||
|
|
198
|
-
node instanceof _1.Throw ||
|
|
199
|
-
node instanceof _1.ElementaryTypeName ||
|
|
200
|
-
node instanceof _1.Literal) {
|
|
201
|
-
/**
|
|
202
|
-
* These nodes do not have any children or references.
|
|
203
|
-
* There is nothing to check, so just skip them.
|
|
204
|
-
*/
|
|
205
|
-
continue;
|
|
206
|
-
}
|
|
207
|
-
if (node instanceof _1.SourceUnit) {
|
|
208
|
-
for (const [name, symId] of node.exportedSymbols) {
|
|
209
|
-
const symNode = ctx.locate(symId);
|
|
210
|
-
if (symNode === undefined) {
|
|
211
|
-
throw new InsaneASTError(`Exported symbol ${name} ${symId} missing from context ${ctx.id}`);
|
|
212
|
-
}
|
|
213
|
-
if (symNode !== node.vExportedSymbols.get(name)) {
|
|
214
|
-
throw new InsaneASTError(`Exported symbol ${name} for id ${symId} (${(0, pretty_printing_1.pp)(symNode)}) doesn't match vExportedSymbols entry: ${(0, pretty_printing_1.pp)(node.vExportedSymbols.get(name))}`);
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
checkDirectChildren(node, "vPragmaDirectives", "vImportDirectives", "vContracts", "vEnums", "vStructs", "vFunctions", "vVariables", "vErrors", "vUserDefinedValueTypes", "vUsingForDirectives");
|
|
218
|
-
}
|
|
219
|
-
else if (node instanceof _1.ImportDirective) {
|
|
220
|
-
/**
|
|
221
|
-
* Unfortunately due to compiler bugs in older compilers, when child.symbolAliases[i].foreign is a number
|
|
222
|
-
* its invalid. When its an Identifier, only its name is valid.
|
|
223
|
-
*/
|
|
224
|
-
if (node.vSymbolAliases.length !== 0 &&
|
|
225
|
-
node.vSymbolAliases.length !== node.symbolAliases.length) {
|
|
226
|
-
throw new InsaneASTError(`symbolAliases.length (${node.symbolAliases.length}) and vSymboliAliases.length ${node.vSymbolAliases.length} misamtch for import ${(0, pretty_printing_1.pp)(node)}`);
|
|
227
|
-
}
|
|
228
|
-
for (let i = 0; i < node.vSymbolAliases.length; i++) {
|
|
229
|
-
const def = node.vSymbolAliases[i][0];
|
|
230
|
-
if (!inCtx(def, ctx)) {
|
|
231
|
-
throw new InsaneASTError(`Imported symbol ${(0, pretty_printing_1.pp)(def)} from import ${(0, pretty_printing_1.pp)(node)} not in expected context ${(0, pretty_printing_1.pp)(ctx)}`);
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
checkFieldAndVFieldMatch(node, "scope", "vScope");
|
|
235
|
-
checkVFieldCtx(node, "vScope", ctx);
|
|
236
|
-
checkFieldAndVFieldMatch(node, "sourceUnit", "vSourceUnit");
|
|
237
|
-
checkVFieldCtx(node, "vSourceUnit", ctx);
|
|
238
|
-
}
|
|
239
|
-
else if (node instanceof _1.InheritanceSpecifier) {
|
|
240
|
-
checkDirectChildren(node, "vBaseType", "vArguments");
|
|
241
|
-
}
|
|
242
|
-
else if (node instanceof _1.ModifierInvocation) {
|
|
243
|
-
checkVFieldCtx(node, "vModifier", ctx);
|
|
244
|
-
checkDirectChildren(node, "vModifierName", "vArguments");
|
|
245
|
-
}
|
|
246
|
-
else if (node instanceof _1.OverrideSpecifier) {
|
|
247
|
-
checkDirectChildren(node, "vOverrides");
|
|
248
|
-
}
|
|
249
|
-
else if (node instanceof _1.ParameterList) {
|
|
250
|
-
checkVFieldCtx(node, "vParameters", ctx);
|
|
251
|
-
checkDirectChildren(node, "vParameters");
|
|
252
|
-
}
|
|
253
|
-
else if (node instanceof _1.UsingForDirective) {
|
|
254
|
-
checkDirectChildren(node, "vLibraryName", "vFunctionList", "vTypeName");
|
|
255
|
-
}
|
|
256
|
-
else if (node instanceof _1.ContractDefinition) {
|
|
257
|
-
checkFieldAndVFieldMatch(node, "scope", "vScope");
|
|
258
|
-
checkVFieldCtx(node, "vScope", ctx);
|
|
259
|
-
if (node.vScope !== node.parent) {
|
|
260
|
-
throw new InsaneASTError(`Contract ${(0, pretty_printing_1.pp)(node)} vScope ${(0, pretty_printing_1.pp)(node.vScope)} and parent ${(0, pretty_printing_1.pp)(node.parent)} differ`);
|
|
261
|
-
}
|
|
262
|
-
checkFieldAndVFieldMatch(node, "linearizedBaseContracts", "vLinearizedBaseContracts");
|
|
263
|
-
checkVFieldCtx(node, "vLinearizedBaseContracts", ctx);
|
|
264
|
-
checkFieldAndVFieldMatch(node, "usedErrors", "vUsedErrors");
|
|
265
|
-
checkVFieldCtx(node, "vUsedErrors", ctx);
|
|
266
|
-
const fields = [
|
|
267
|
-
"documentation",
|
|
268
|
-
"vInheritanceSpecifiers",
|
|
269
|
-
"vStateVariables",
|
|
270
|
-
"vModifiers",
|
|
271
|
-
"vErrors",
|
|
272
|
-
"vEvents",
|
|
273
|
-
"vFunctions",
|
|
274
|
-
"vUsingForDirectives",
|
|
275
|
-
"vStructs",
|
|
276
|
-
"vEnums",
|
|
277
|
-
"vUserDefinedValueTypes",
|
|
278
|
-
"vConstructor"
|
|
279
|
-
];
|
|
280
|
-
if (node.documentation instanceof _1.StructuredDocumentation) {
|
|
281
|
-
checkVFieldCtx(node, "documentation", ctx);
|
|
282
|
-
fields.push("documentation");
|
|
283
|
-
}
|
|
284
|
-
checkDirectChildren(node, ...fields);
|
|
285
|
-
}
|
|
286
|
-
else if (node instanceof _1.EnumDefinition) {
|
|
287
|
-
checkVFieldCtx(node, "vScope", ctx);
|
|
288
|
-
checkDirectChildren(node, "vMembers");
|
|
289
|
-
}
|
|
290
|
-
else if (node instanceof _1.ErrorDefinition) {
|
|
291
|
-
checkVFieldCtx(node, "vScope", ctx);
|
|
292
|
-
const fields = ["vParameters"];
|
|
293
|
-
if (node.documentation instanceof _1.StructuredDocumentation) {
|
|
294
|
-
checkVFieldCtx(node, "documentation", ctx);
|
|
295
|
-
fields.push("documentation");
|
|
296
|
-
}
|
|
297
|
-
checkDirectChildren(node, ...fields);
|
|
298
|
-
}
|
|
299
|
-
else if (node instanceof _1.EventDefinition) {
|
|
300
|
-
checkVFieldCtx(node, "vScope", ctx);
|
|
301
|
-
const fields = ["vParameters"];
|
|
302
|
-
if (node.documentation instanceof _1.StructuredDocumentation) {
|
|
303
|
-
checkVFieldCtx(node, "documentation", ctx);
|
|
304
|
-
fields.push("documentation");
|
|
305
|
-
}
|
|
306
|
-
checkDirectChildren(node, ...fields);
|
|
307
|
-
}
|
|
308
|
-
else if (node instanceof _1.FunctionDefinition) {
|
|
309
|
-
checkFieldAndVFieldMatch(node, "scope", "vScope");
|
|
310
|
-
checkVFieldCtx(node, "vScope", ctx);
|
|
311
|
-
const fields = [
|
|
312
|
-
"vParameters",
|
|
313
|
-
"vOverrideSpecifier",
|
|
314
|
-
"vModifiers",
|
|
315
|
-
"vReturnParameters",
|
|
316
|
-
"vBody"
|
|
317
|
-
];
|
|
318
|
-
if (node.documentation instanceof _1.StructuredDocumentation) {
|
|
319
|
-
checkVFieldCtx(node, "documentation", ctx);
|
|
320
|
-
fields.push("documentation");
|
|
321
|
-
}
|
|
322
|
-
checkDirectChildren(node, ...fields);
|
|
323
|
-
}
|
|
324
|
-
else if (node instanceof _1.ModifierDefinition) {
|
|
325
|
-
checkVFieldCtx(node, "vScope", ctx);
|
|
326
|
-
const fields = [
|
|
327
|
-
"vParameters",
|
|
328
|
-
"vOverrideSpecifier",
|
|
329
|
-
"vBody"
|
|
330
|
-
];
|
|
331
|
-
if (node.documentation instanceof _1.StructuredDocumentation) {
|
|
332
|
-
checkVFieldCtx(node, "documentation", ctx);
|
|
333
|
-
fields.push("documentation");
|
|
334
|
-
}
|
|
335
|
-
checkDirectChildren(node, ...fields);
|
|
336
|
-
}
|
|
337
|
-
else if (node instanceof _1.StructDefinition) {
|
|
338
|
-
checkFieldAndVFieldMatch(node, "scope", "vScope");
|
|
339
|
-
checkVFieldCtx(node, "vScope", ctx);
|
|
340
|
-
checkDirectChildren(node, "vMembers");
|
|
341
|
-
}
|
|
342
|
-
else if (node instanceof _1.UserDefinedValueTypeDefinition) {
|
|
343
|
-
checkVFieldCtx(node, "vScope", ctx);
|
|
344
|
-
checkVFieldCtx(node, "underlyingType", ctx);
|
|
345
|
-
checkDirectChildren(node, "underlyingType");
|
|
346
|
-
}
|
|
347
|
-
else if (node instanceof _1.VariableDeclaration) {
|
|
348
|
-
checkFieldAndVFieldMatch(node, "scope", "vScope");
|
|
349
|
-
checkVFieldCtx(node, "vScope", ctx);
|
|
350
|
-
const fields = [
|
|
351
|
-
"vType",
|
|
352
|
-
"vOverrideSpecifier",
|
|
353
|
-
"vValue"
|
|
354
|
-
];
|
|
355
|
-
if (node.documentation instanceof _1.StructuredDocumentation) {
|
|
356
|
-
checkVFieldCtx(node, "documentation", ctx);
|
|
357
|
-
fields.push("documentation");
|
|
358
|
-
}
|
|
359
|
-
checkDirectChildren(node, ...fields);
|
|
360
|
-
}
|
|
361
|
-
else if (node instanceof _1.Block || node instanceof _1.UncheckedBlock) {
|
|
362
|
-
checkDirectChildren(node, "vStatements");
|
|
363
|
-
}
|
|
364
|
-
else if (node instanceof _1.DoWhileStatement) {
|
|
365
|
-
checkDirectChildren(node, "vCondition", "vBody");
|
|
366
|
-
}
|
|
367
|
-
else if (node instanceof _1.EmitStatement) {
|
|
368
|
-
checkDirectChildren(node, "vEventCall");
|
|
369
|
-
}
|
|
370
|
-
else if (node instanceof _1.RevertStatement) {
|
|
371
|
-
checkDirectChildren(node, "errorCall");
|
|
372
|
-
}
|
|
373
|
-
else if (node instanceof _1.ExpressionStatement) {
|
|
374
|
-
checkDirectChildren(node, "vExpression");
|
|
375
|
-
}
|
|
376
|
-
else if (node instanceof _1.ForStatement) {
|
|
377
|
-
checkDirectChildren(node, "vInitializationExpression", "vLoopExpression", "vCondition", "vBody");
|
|
378
|
-
}
|
|
379
|
-
else if (node instanceof _1.IfStatement) {
|
|
380
|
-
checkVFieldCtx(node, "vCondition", ctx);
|
|
381
|
-
checkVFieldCtx(node, "vTrueBody", ctx);
|
|
382
|
-
if (node.vFalseBody !== undefined) {
|
|
383
|
-
checkVFieldCtx(node, "vFalseBody", ctx);
|
|
384
|
-
}
|
|
385
|
-
checkDirectChildren(node, "vCondition", "vTrueBody", "vFalseBody");
|
|
386
|
-
}
|
|
387
|
-
else if (node instanceof _1.Return) {
|
|
388
|
-
checkFieldAndVFieldMatch(node, "functionReturnParameters", "vFunctionReturnParameters");
|
|
389
|
-
checkVFieldCtx(node, "vFunctionReturnParameters", ctx);
|
|
390
|
-
checkDirectChildren(node, "vExpression");
|
|
391
|
-
}
|
|
392
|
-
else if (node instanceof _1.TryCatchClause) {
|
|
393
|
-
checkDirectChildren(node, "vParameters", "vBlock");
|
|
394
|
-
}
|
|
395
|
-
else if (node instanceof _1.TryStatement) {
|
|
396
|
-
checkDirectChildren(node, "vExternalCall", "vClauses");
|
|
397
|
-
}
|
|
398
|
-
else if (node instanceof _1.VariableDeclarationStatement) {
|
|
399
|
-
checkDirectChildren(node, "vDeclarations", "vInitialValue");
|
|
400
|
-
}
|
|
401
|
-
else if (node instanceof _1.WhileStatement) {
|
|
402
|
-
checkDirectChildren(node, "vCondition", "vBody");
|
|
403
|
-
}
|
|
404
|
-
else if (node instanceof _1.ArrayTypeName) {
|
|
405
|
-
checkDirectChildren(node, "vBaseType", "vLength");
|
|
406
|
-
}
|
|
407
|
-
else if (node instanceof _1.FunctionTypeName) {
|
|
408
|
-
checkDirectChildren(node, "vParameterTypes", "vReturnParameterTypes");
|
|
409
|
-
}
|
|
410
|
-
else if (node instanceof _1.Mapping) {
|
|
411
|
-
checkDirectChildren(node, "vKeyType", "vValueType");
|
|
412
|
-
}
|
|
413
|
-
else if (node instanceof _1.UserDefinedTypeName) {
|
|
414
|
-
checkFieldAndVFieldMatch(node, "referencedDeclaration", "vReferencedDeclaration");
|
|
415
|
-
checkVFieldCtx(node, "vReferencedDeclaration", ctx);
|
|
416
|
-
checkDirectChildren(node, "path");
|
|
417
|
-
}
|
|
418
|
-
else if (node instanceof _1.Assignment) {
|
|
419
|
-
checkDirectChildren(node, "vLeftHandSide", "vRightHandSide");
|
|
420
|
-
}
|
|
421
|
-
else if (node instanceof _1.BinaryOperation) {
|
|
422
|
-
checkDirectChildren(node, "vLeftExpression", "vRightExpression");
|
|
423
|
-
}
|
|
424
|
-
else if (node instanceof _1.Conditional) {
|
|
425
|
-
checkDirectChildren(node, "vCondition", "vTrueExpression", "vFalseExpression");
|
|
426
|
-
}
|
|
427
|
-
else if (node instanceof _1.ElementaryTypeNameExpression) {
|
|
428
|
-
if (!(typeof node.typeName === "string")) {
|
|
429
|
-
checkDirectChildren(node, "typeName");
|
|
430
|
-
}
|
|
431
|
-
}
|
|
432
|
-
else if (node instanceof _1.FunctionCall) {
|
|
433
|
-
checkDirectChildren(node, "vExpression", "vArguments");
|
|
434
|
-
}
|
|
435
|
-
else if (node instanceof _1.FunctionCallOptions) {
|
|
436
|
-
checkDirectChildren(node, "vExpression", "vOptionsMap");
|
|
437
|
-
}
|
|
438
|
-
else if (node instanceof _1.Identifier || node instanceof _1.IdentifierPath) {
|
|
439
|
-
if (node.referencedDeclaration !== null && node.vReferencedDeclaration !== undefined) {
|
|
440
|
-
checkFieldAndVFieldMatch(node, "referencedDeclaration", "vReferencedDeclaration");
|
|
441
|
-
checkVFieldCtx(node, "vReferencedDeclaration", ctx);
|
|
442
|
-
}
|
|
443
|
-
}
|
|
444
|
-
else if (node instanceof _1.IndexAccess) {
|
|
445
|
-
checkDirectChildren(node, "vBaseExpression", "vIndexExpression");
|
|
446
|
-
}
|
|
447
|
-
else if (node instanceof _1.IndexRangeAccess) {
|
|
448
|
-
checkDirectChildren(node, "vBaseExpression", "vStartExpression", "vEndExpression");
|
|
449
|
-
}
|
|
450
|
-
else if (node instanceof _1.MemberAccess) {
|
|
451
|
-
if (node.referencedDeclaration !== null && node.vReferencedDeclaration !== undefined) {
|
|
452
|
-
checkFieldAndVFieldMatch(node, "referencedDeclaration", "vReferencedDeclaration");
|
|
453
|
-
checkVFieldCtx(node, "vReferencedDeclaration", ctx);
|
|
454
|
-
}
|
|
455
|
-
checkDirectChildren(node, "vExpression");
|
|
456
|
-
}
|
|
457
|
-
else if (node instanceof _1.NewExpression) {
|
|
458
|
-
checkDirectChildren(node, "vTypeName");
|
|
459
|
-
}
|
|
460
|
-
else if (node instanceof _1.TupleExpression) {
|
|
461
|
-
checkDirectChildren(node, "vOriginalComponents", "vComponents");
|
|
462
|
-
}
|
|
463
|
-
else if (node instanceof _1.UnaryOperation) {
|
|
464
|
-
checkVFieldCtx(node, "vSubExpression", ctx);
|
|
465
|
-
checkDirectChildren(node, "vSubExpression");
|
|
466
|
-
}
|
|
467
|
-
else {
|
|
468
|
-
throw new Error(`Unknown ASTNode type ${node.constructor.name}`);
|
|
469
|
-
}
|
|
470
|
-
}
|
|
471
|
-
}
|
|
472
|
-
exports.checkSane = checkSane;
|
|
473
|
-
/**
|
|
474
|
-
* Check that a single SourceUnit has a sane structure. This checks that:
|
|
475
|
-
* - All reachable nodes belong to the same context, have their parent/sibling set correctly.
|
|
476
|
-
* - All number id properties of nodes point to a node in the same context.
|
|
477
|
-
* - When a number property (e.g. `scope`) has a corresponding `v` prefixed property (e.g. `vScope`)
|
|
478
|
-
* check that the number proerty corresponds to the id of the `v` prefixed property.
|
|
479
|
-
* - Most 'v' properties point to direct children of a node.
|
|
480
|
-
*
|
|
481
|
-
* NOTE: While this code can be slightly slow, its meant to be used mostly in testing so its
|
|
482
|
-
* not performance critical.
|
|
483
|
-
*/
|
|
484
|
-
function isSane(unit, ctx) {
|
|
485
|
-
try {
|
|
486
|
-
checkSane(unit, ctx);
|
|
487
|
-
}
|
|
488
|
-
catch (e) {
|
|
489
|
-
if (e instanceof InsaneASTError) {
|
|
490
|
-
console.error(e);
|
|
491
|
-
return false;
|
|
492
|
-
}
|
|
493
|
-
throw e;
|
|
494
|
-
}
|
|
495
|
-
return true;
|
|
496
|
-
}
|
|
497
|
-
exports.isSane = isSane;
|
|
498
|
-
//# sourceMappingURL=sanity.js.map
|
package/dist/ast/sanity.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sanity.js","sourceRoot":"","sources":["../../src/ast/sanity.ts"],"names":[],"mappings":";;;AAAA,wBA4DW;AACX,6DAA6C;AAE7C;;GAEG;AACH,SAAS,KAAK,CAAC,GAAwB,EAAE,GAAe;IACpD,IAAI,GAAG,YAAY,UAAO,EAAE;QACxB,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;KAC5B;IAED,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE;QACpB,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE;YACnB,OAAO,KAAK,CAAC;SAChB;KACJ;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAa,cAAe,SAAQ,KAAK;CAAG;AAA5C,wCAA4C;AAE5C;;;;GAIG;AACH,SAAS,cAAc,CACnB,IAAO,EACP,IAAO,EACP,GAAe;IAEf,MAAM,GAAG,GAAS,IAAI,CAAC,IAAI,CAAC,CAAC;IAE7B,IAAI,GAAG,YAAY,UAAO,EAAE;QACxB,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;YAClB,MAAM,IAAI,KAAK,CACX,QAAQ,IAAA,oBAAE,EAAC,IAAI,CAAC,aAAa,MAAM,CAAC,IAAI,CAAC,IAAI,IAAA,oBAAE,EAAC,GAAG,CAAC,4BAA4B,IAAA,oBAAE,EAC9E,GAAG,CACN,gBAAgB,IAAA,oBAAE,EAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CACrC,CAAC;SACL;KACJ;SAAM,IAAI,GAAG,YAAY,KAAK,EAAE;QAC7B,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;YACvC,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YAEpB,IAAI,CAAC,CAAC,EAAE,YAAY,UAAO,CAAC,EAAE;gBAC1B,MAAM,IAAI,KAAK,CACX,qBAAqB,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,QAAQ,IAAA,oBAAE,EAC9C,IAAI,CACP,yBAAyB,EAAE,EAAE,CACjC,CAAC;aACL;YAED,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;gBAClB,MAAM,IAAI,KAAK,CACX,QAAQ,IAAA,oBAAE,EAAC,IAAI,CAAC,aAAa,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,IAAA,oBAAE,EACnD,EAAE,CACL,4BAA4B,IAAA,oBAAE,EAAC,GAAG,CAAC,gBAAgB,IAAA,oBAAE,EAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CACvE,CAAC;aACL;SACJ;KACJ;SAAM;QACH,MAAM,IAAI,KAAK,CACX,qBAAqB,MAAM,CAAC,IAAI,CAAC,OAAO,IAAA,oBAAE,EAAC,IAAI,CAAC,0BAA0B,GAAG,EAAE,CAClF,CAAC;KACL;AACL,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,wBAAwB,CAC7B,IAAO,EACP,KAAS,EACT,MAAU;IAEV,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAE1B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAC1B,IAAI,CAAC,CAAC,IAAI,YAAY,UAAO,CAAC,EAAE;YAC5B,MAAM,IAAI,KAAK,CACX,qBAAqB,MAAM,CAAC,MAAM,CAAC,OAAO,IAAA,oBAAE,EAAC,IAAI,CAAC,0BAA0B,MAAM,CAC9E,KAAK,CACR,qBAAqB,IAAI,EAAE,CAC/B,CAAC;SACL;QAED,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE;YACjB,MAAM,IAAI,cAAc,CACpB,QAAQ,IAAA,oBAAE,EAAC,IAAI,CAAC,aAAa,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,iBAAiB,MAAM,CACrE,MAAM,CACT,OAAO,IAAA,oBAAE,EAAC,IAAI,CAAC,EAAE,CACrB,CAAC;SACL;KACJ;SAAM,IAAI,IAAI,YAAY,KAAK,EAAE;QAC9B,IAAI,CAAC,CAAC,IAAI,YAAY,KAAK,CAAC,EAAE;YAC1B,MAAM,IAAI,KAAK,CACX,qBAAqB,MAAM,CAAC,MAAM,CAAC,OAAO,IAAA,oBAAE,EAAC,IAAI,CAAC,wBAAwB,MAAM,CAC5E,MAAM,CACT,qBAAqB,IAAI,EAAE,CAC/B,CAAC;SACL;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;YAC7B,MAAM,IAAI,cAAc,CACpB,QAAQ,IAAA,oBAAE,EAAC,IAAI,CAAC,qBAAqB,MAAM,CAAC,KAAK,CAAC,QAAQ,MAAM,CAC5D,MAAM,CACT,2BAA2B,IAAI,CAAC,MAAM,OAAO,IAAI,CAAC,MAAM,EAAE,CAC9D,CAAC;SACL;QAED,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;YACxC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;YACtB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;YAEtB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;gBACzB,MAAM,IAAI,KAAK,CACX,qBAAqB,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,QAAQ,IAAA,oBAAE,EAC/C,IAAI,CACP,uBAAuB,GAAG,EAAE,CAChC,CAAC;aACL;YAED,IAAI,CAAC,CAAC,GAAG,YAAY,UAAO,CAAC,EAAE;gBAC3B,MAAM,IAAI,KAAK,CACX,qBAAqB,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,QAAQ,IAAA,oBAAE,EAChD,IAAI,CACP,uBAAuB,GAAG,EAAE,CAChC,CAAC;aACL;YAED,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,EAAE;gBACf,MAAM,IAAI,cAAc,CACpB,QAAQ,IAAA,oBAAE,EAAC,IAAI,CAAC,aAAa,MAAM,CAC/B,KAAK,CACR,IAAI,GAAG,KAAK,GAAG,iBAAiB,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,QAAQ,IAAA,oBAAE,EAAC,GAAG,CAAC,EAAE,CAC1E,CAAC;aACL;SACJ;KACJ;SAAM;QACH,MAAM,IAAI,KAAK,CACX,qBAAqB,MAAM,CAAC,KAAK,CAAC,OAAO,IAAA,oBAAE,EACvC,IAAI,CACP,4CAA4C,IAAI,EAAE,CACtD,CAAC;KACL;AACL,CAAC;AAED;;;;;GAKG;AACH,SAAS,mBAAmB,CAAoB,IAAO,EAAE,GAAG,MAAsB;IAC9E,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAW,CAAC;IAE5C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAExB,IAAI,GAAG,KAAK,SAAS,EAAE;YACnB,SAAS;SACZ;QAED,IAAI,GAAG,YAAY,UAAO,EAAE;YACxB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBAC1B,MAAM,IAAI,cAAc,CACpB,SAAS,MAAM,CAAC,KAAK,CAAC,YAAY,IAAA,oBAAE,EAAC,IAAI,CAAC,2BAA2B,IAAA,oBAAE,EACnE,GAAG,CACN,aAAa,IAAA,oBAAE,EAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CACjC,CAAC;aACL;YAED,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SAC7B;aAAM,IAAI,GAAG,YAAY,KAAK,EAAE;YAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACjC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;gBAElB,IAAI,EAAE,KAAK,IAAI,EAAE;oBACb,SAAS;iBACZ;gBAED,IAAI,CAAC,CAAC,EAAE,YAAY,UAAO,CAAC,EAAE;oBAC1B,MAAM,IAAI,KAAK,CACX,SAAS,MAAM,CAAC,KAAK,CAAC,OAAO,IAAA,oBAAE,EAC3B,IAAI,CACP,qFAAqF,EAAE,EAAE,CAC7F,CAAC;iBACL;gBAED,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;oBACzB,MAAM,IAAI,cAAc,CACpB,SAAS,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,IAAA,oBAAE,EACtC,IAAI,CACP,2BAA2B,IAAA,oBAAE,EAAC,EAAE,CAAC,aAAa,IAAA,oBAAE,EAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CACjE,CAAC;iBACL;gBAED,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;aAC5B;SACJ;aAAM,IAAI,GAAG,YAAY,GAAG,EAAE;YAC3B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE;gBAChC,IAAI,CAAC,KAAK,IAAI,EAAE;oBACZ,SAAS;iBACZ;gBAED,IAAI,CAAC,CAAC,CAAC,YAAY,UAAO,CAAC,EAAE;oBACzB,MAAM,IAAI,KAAK,CACX,SAAS,MAAM,CAAC,KAAK,CAAC,OAAO,IAAA,oBAAE,EAC3B,IAAI,CACP,mFAAmF,CAAC,EAAE,CAC1F,CAAC;iBACL;gBAED,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;oBACxB,MAAM,IAAI,cAAc,CACpB,SAAS,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,IAAA,oBAAE,EACtC,IAAI,CACP,2BAA2B,IAAA,oBAAE,EAAC,CAAC,CAAC,aAAa,IAAA,oBAAE,EAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAC/D,CAAC;iBACL;gBAED,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aAC3B;SACJ;aAAM;YACH,MAAM,IAAI,KAAK,CACX,SAAS,MAAM,CAAC,KAAK,CAAC,OAAO,IAAA,oBAAE,EAC3B,IAAI,CACP,4DAA4D,GAAG,EAAE,CACrE,CAAC;SACL;KACJ;IAED,IAAI,gBAAgB,CAAC,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE;QAC7C,IAAI,YAAiC,CAAC;QAEtC,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE;YAChC,IAAI,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBAC7B,SAAS;aACZ;YAED,YAAY,GAAG,KAAK,CAAC;YAErB,MAAM;SACT;QAED,MAAM,IAAI,cAAc,CACpB,UAAU,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gDAAgD,IAAA,oBAAE,EACzE,YAAY,CACf,aAAa,CACjB,CAAC;KACL;AACL,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAgB,SAAS,CAAC,IAAgB,EAAE,GAAe;IACvD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;QACvC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE;YACnB,MAAM,IAAI,cAAc,CACpB,SAAS,IAAA,oBAAE,EAAC,IAAI,CAAC,0BAA0B,GAAG,CAAC,EAAE,kBAAkB,GAAG,CAAC,EAAE,EAAE,CAC9E,CAAC;SACL;QAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC;QAExC,KAAK,MAAM,KAAK,IAAI,iBAAiB,EAAE;YACnC,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE;gBACvB,MAAM,IAAI,cAAc,CACpB,SAAS,IAAA,oBAAE,EAAC,KAAK,CAAC,+BAA+B,IAAA,oBAAE,EAAC,IAAI,CAAC,QAAQ,IAAA,oBAAE,EAC/D,KAAK,CAAC,MAAM,CACf,EAAE,CACN,CAAC;aACL;SACJ;QAED,IACI,IAAI,YAAY,kBAAe;YAC/B,IAAI,YAAY,0BAAuB;YACvC,IAAI,YAAY,YAAS;YACzB,IAAI,YAAY,QAAK;YACrB,IAAI,YAAY,WAAQ;YACxB,IAAI,YAAY,iBAAc;YAC9B,IAAI,YAAY,uBAAoB;YACpC,IAAI,YAAY,QAAK;YACrB,IAAI,YAAY,qBAAkB;YAClC,IAAI,YAAY,UAAO,EACzB;YACE;;;eAGG;YACH,SAAS;SACZ;QAED,IAAI,IAAI,YAAY,aAAU,EAAE;YAC5B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE;gBAC9C,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAElC,IAAI,OAAO,KAAK,SAAS,EAAE;oBACvB,MAAM,IAAI,cAAc,CACpB,mBAAmB,IAAI,IAAI,KAAK,yBAAyB,GAAG,CAAC,EAAE,EAAE,CACpE,CAAC;iBACL;gBAED,IAAI,OAAO,KAAK,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;oBAC7C,MAAM,IAAI,cAAc,CACpB,mBAAmB,IAAI,WAAW,KAAK,KAAK,IAAA,oBAAE,EAC1C,OAAO,CACV,2CAA2C,IAAA,oBAAE,EAC1C,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAClC,EAAE,CACN,CAAC;iBACL;aACJ;YAED,mBAAmB,CACf,IAAI,EACJ,mBAAmB,EACnB,mBAAmB,EACnB,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,wBAAwB,EACxB,qBAAqB,CACxB,CAAC;SACL;aAAM,IAAI,IAAI,YAAY,kBAAe,EAAE;YACxC;;;eAGG;YACH,IACI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC;gBAChC,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,IAAI,CAAC,aAAa,CAAC,MAAM,EAC1D;gBACE,MAAM,IAAI,cAAc,CACpB,yBACI,IAAI,CAAC,aAAa,CAAC,MACvB,gCACI,IAAI,CAAC,cAAc,CAAC,MACxB,wBAAwB,IAAA,oBAAE,EAAC,IAAI,CAAC,EAAE,CACrC,CAAC;aACL;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACjD,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEtC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;oBAClB,MAAM,IAAI,cAAc,CACpB,mBAAmB,IAAA,oBAAE,EAAC,GAAG,CAAC,gBAAgB,IAAA,oBAAE,EACxC,IAAI,CACP,4BAA4B,IAAA,oBAAE,EAAC,GAAG,CAAC,EAAE,CACzC,CAAC;iBACL;aACJ;YAED,wBAAwB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YAClD,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;YAEpC,wBAAwB,CAAC,IAAI,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;YAC5D,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;SAC5C;aAAM,IAAI,IAAI,YAAY,uBAAoB,EAAE;YAC7C,mBAAmB,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;SACxD;aAAM,IAAI,IAAI,YAAY,qBAAkB,EAAE;YAC3C,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;YACvC,mBAAmB,CAAC,IAAI,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC;SAC5D;aAAM,IAAI,IAAI,YAAY,oBAAiB,EAAE;YAC1C,mBAAmB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;SAC3C;aAAM,IAAI,IAAI,YAAY,gBAAa,EAAE;YACtC,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;YACzC,mBAAmB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;SAC5C;aAAM,IAAI,IAAI,YAAY,oBAAiB,EAAE;YAC1C,mBAAmB,CAAC,IAAI,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC;SAC3E;aAAM,IAAI,IAAI,YAAY,qBAAkB,EAAE;YAC3C,wBAAwB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YAClD,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;YAEpC,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;gBAC7B,MAAM,IAAI,cAAc,CACpB,YAAY,IAAA,oBAAE,EAAC,IAAI,CAAC,WAAW,IAAA,oBAAE,EAAC,IAAI,CAAC,MAAM,CAAC,eAAe,IAAA,oBAAE,EAC3D,IAAI,CAAC,MAAM,CACd,SAAS,CACb,CAAC;aACL;YAED,wBAAwB,CAAC,IAAI,EAAE,yBAAyB,EAAE,0BAA0B,CAAC,CAAC;YACtF,cAAc,CAAC,IAAI,EAAE,0BAA0B,EAAE,GAAG,CAAC,CAAC;YAEtD,wBAAwB,CAAC,IAAI,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;YAC5D,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;YAEzC,MAAM,MAAM,GAAoC;gBAC5C,eAAe;gBACf,wBAAwB;gBACxB,iBAAiB;gBACjB,YAAY;gBACZ,SAAS;gBACT,SAAS;gBACT,YAAY;gBACZ,qBAAqB;gBACrB,UAAU;gBACV,QAAQ;gBACR,wBAAwB;gBACxB,cAAc;aACjB,CAAC;YAEF,IAAI,IAAI,CAAC,aAAa,YAAY,0BAAuB,EAAE;gBACvD,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC;gBAE3C,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;aAChC;YAED,mBAAmB,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC;SACxC;aAAM,IAAI,IAAI,YAAY,iBAAc,EAAE;YACvC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;YAEpC,mBAAmB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;SACzC;aAAM,IAAI,IAAI,YAAY,kBAAe,EAAE;YACxC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;YAEpC,MAAM,MAAM,GAAiC,CAAC,aAAa,CAAC,CAAC;YAE7D,IAAI,IAAI,CAAC,aAAa,YAAY,0BAAuB,EAAE;gBACvD,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC;gBAE3C,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;aAChC;YAED,mBAAmB,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC;SACxC;aAAM,IAAI,IAAI,YAAY,kBAAe,EAAE;YACxC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;YAEpC,MAAM,MAAM,GAAiC,CAAC,aAAa,CAAC,CAAC;YAE7D,IAAI,IAAI,CAAC,aAAa,YAAY,0BAAuB,EAAE;gBACvD,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC;gBAE3C,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;aAChC;YAED,mBAAmB,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC;SACxC;aAAM,IAAI,IAAI,YAAY,qBAAkB,EAAE;YAC3C,wBAAwB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YAClD,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;YAEpC,MAAM,MAAM,GAAoC;gBAC5C,aAAa;gBACb,oBAAoB;gBACpB,YAAY;gBACZ,mBAAmB;gBACnB,OAAO;aACV,CAAC;YAEF,IAAI,IAAI,CAAC,aAAa,YAAY,0BAAuB,EAAE;gBACvD,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC;gBAE3C,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;aAChC;YAED,mBAAmB,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC;SACxC;aAAM,IAAI,IAAI,YAAY,qBAAkB,EAAE;YAC3C,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;YAEpC,MAAM,MAAM,GAAoC;gBAC5C,aAAa;gBACb,oBAAoB;gBACpB,OAAO;aACV,CAAC;YAEF,IAAI,IAAI,CAAC,aAAa,YAAY,0BAAuB,EAAE;gBACvD,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC;gBAE3C,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;aAChC;YAED,mBAAmB,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC;SACxC;aAAM,IAAI,IAAI,YAAY,mBAAgB,EAAE;YACzC,wBAAwB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YAClD,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;YAEpC,mBAAmB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;SACzC;aAAM,IAAI,IAAI,YAAY,iCAA8B,EAAE;YACvD,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;YACpC,cAAc,CAAC,IAAI,EAAE,gBAAgB,EAAE,GAAG,CAAC,CAAC;YAE5C,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;SAC/C;aAAM,IAAI,IAAI,YAAY,sBAAmB,EAAE;YAC5C,wBAAwB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YAClD,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;YAEpC,MAAM,MAAM,GAAqC;gBAC7C,OAAO;gBACP,oBAAoB;gBACpB,QAAQ;aACX,CAAC;YAEF,IAAI,IAAI,CAAC,aAAa,YAAY,0BAAuB,EAAE;gBACvD,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC;gBAE3C,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;aAChC;YAED,mBAAmB,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC;SACxC;aAAM,IAAI,IAAI,YAAY,QAAK,IAAI,IAAI,YAAY,iBAAc,EAAE;YAChE,mBAAmB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;SAC5C;aAAM,IAAI,IAAI,YAAY,mBAAgB,EAAE;YACzC,mBAAmB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;SACpD;aAAM,IAAI,IAAI,YAAY,gBAAa,EAAE;YACtC,mBAAmB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;SAC3C;aAAM,IAAI,IAAI,YAAY,kBAAe,EAAE;YACxC,mBAAmB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;SAC1C;aAAM,IAAI,IAAI,YAAY,sBAAmB,EAAE;YAC5C,mBAAmB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;SAC5C;aAAM,IAAI,IAAI,YAAY,eAAY,EAAE;YACrC,mBAAmB,CACf,IAAI,EACJ,2BAA2B,EAC3B,iBAAiB,EACjB,YAAY,EACZ,OAAO,CACV,CAAC;SACL;aAAM,IAAI,IAAI,YAAY,cAAW,EAAE;YACpC,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;YACxC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;YAEvC,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;gBAC/B,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;aAC3C;YAED,mBAAmB,CAAC,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;SACtE;aAAM,IAAI,IAAI,YAAY,SAAM,EAAE;YAC/B,wBAAwB,CAAC,IAAI,EAAE,0BAA0B,EAAE,2BAA2B,CAAC,CAAC;YAExF,cAAc,CAAC,IAAI,EAAE,2BAA2B,EAAE,GAAG,CAAC,CAAC;YACvD,mBAAmB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;SAC5C;aAAM,IAAI,IAAI,YAAY,iBAAc,EAAE;YACvC,mBAAmB,CAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;SACtD;aAAM,IAAI,IAAI,YAAY,eAAY,EAAE;YACrC,mBAAmB,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC;SAC1D;aAAM,IAAI,IAAI,YAAY,+BAA4B,EAAE;YACrD,mBAAmB,CAAC,IAAI,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;SAC/D;aAAM,IAAI,IAAI,YAAY,iBAAc,EAAE;YACvC,mBAAmB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;SACpD;aAAM,IAAI,IAAI,YAAY,gBAAa,EAAE;YACtC,mBAAmB,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;SACrD;aAAM,IAAI,IAAI,YAAY,mBAAgB,EAAE;YACzC,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,EAAE,uBAAuB,CAAC,CAAC;SACzE;aAAM,IAAI,IAAI,YAAY,UAAO,EAAE;YAChC,mBAAmB,CAAC,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;SACvD;aAAM,IAAI,IAAI,YAAY,sBAAmB,EAAE;YAC5C,wBAAwB,CAAC,IAAI,EAAE,uBAAuB,EAAE,wBAAwB,CAAC,CAAC;YAClF,cAAc,CAAC,IAAI,EAAE,wBAAwB,EAAE,GAAG,CAAC,CAAC;YACpD,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;SACrC;aAAM,IAAI,IAAI,YAAY,aAAU,EAAE;YACnC,mBAAmB,CAAC,IAAI,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAC;SAChE;aAAM,IAAI,IAAI,YAAY,kBAAe,EAAE;YACxC,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;SACpE;aAAM,IAAI,IAAI,YAAY,cAAW,EAAE;YACpC,mBAAmB,CAAC,IAAI,EAAE,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;SAClF;aAAM,IAAI,IAAI,YAAY,+BAA4B,EAAE;YACrD,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAAE;gBACtC,mBAAmB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;aACzC;SACJ;aAAM,IAAI,IAAI,YAAY,eAAY,EAAE;YACrC,mBAAmB,CAAC,IAAI,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;SAC1D;aAAM,IAAI,IAAI,YAAY,sBAAmB,EAAE;YAC5C,mBAAmB,CAAC,IAAI,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;SAC3D;aAAM,IAAI,IAAI,YAAY,aAAU,IAAI,IAAI,YAAY,iBAAc,EAAE;YACrE,IAAI,IAAI,CAAC,qBAAqB,KAAK,IAAI,IAAI,IAAI,CAAC,sBAAsB,KAAK,SAAS,EAAE;gBAClF,wBAAwB,CAAC,IAAI,EAAE,uBAAuB,EAAE,wBAAwB,CAAC,CAAC;gBAClF,cAAc,CAAC,IAAI,EAAE,wBAAwB,EAAE,GAAG,CAAC,CAAC;aACvD;SACJ;aAAM,IAAI,IAAI,YAAY,cAAW,EAAE;YACpC,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;SACpE;aAAM,IAAI,IAAI,YAAY,mBAAgB,EAAE;YACzC,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;SACtF;aAAM,IAAI,IAAI,YAAY,eAAY,EAAE;YACrC,IAAI,IAAI,CAAC,qBAAqB,KAAK,IAAI,IAAI,IAAI,CAAC,sBAAsB,KAAK,SAAS,EAAE;gBAClF,wBAAwB,CAAC,IAAI,EAAE,uBAAuB,EAAE,wBAAwB,CAAC,CAAC;gBAClF,cAAc,CAAC,IAAI,EAAE,wBAAwB,EAAE,GAAG,CAAC,CAAC;aACvD;YAED,mBAAmB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;SAC5C;aAAM,IAAI,IAAI,YAAY,gBAAa,EAAE;YACtC,mBAAmB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;SAC1C;aAAM,IAAI,IAAI,YAAY,kBAAe,EAAE;YACxC,mBAAmB,CAAC,IAAI,EAAE,qBAAqB,EAAE,aAAa,CAAC,CAAC;SACnE;aAAM,IAAI,IAAI,YAAY,iBAAc,EAAE;YACvC,cAAc,CAAC,IAAI,EAAE,gBAAgB,EAAE,GAAG,CAAC,CAAC;YAC5C,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;SAC/C;aAAM;YACH,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;SACpE;KACJ;AACL,CAAC;AArVD,8BAqVC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,MAAM,CAAC,IAAgB,EAAE,GAAe;IACpD,IAAI;QACA,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KACxB;IAAC,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,YAAY,cAAc,EAAE;YAC7B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAEjB,OAAO,KAAK,CAAC;SAChB;QAED,MAAM,CAAC,CAAC;KACX;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAdD,wBAcC"}
|