arkanalyzer 1.0.94 → 1.0.95
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/lib/core/base/Expr.d.ts +9 -0
- package/lib/core/base/Expr.d.ts.map +1 -1
- package/lib/core/base/Expr.js +10 -0
- package/lib/core/base/Stmt.d.ts +8 -0
- package/lib/core/base/Stmt.d.ts.map +1 -1
- package/lib/core/base/Stmt.js +25 -2
- package/lib/core/common/ArkIRTransformer.d.ts.map +1 -1
- package/lib/core/common/ArkIRTransformer.js +10 -9
- package/lib/core/common/ArkValueTransformer.d.ts +2 -0
- package/lib/core/common/ArkValueTransformer.d.ts.map +1 -1
- package/lib/core/common/ArkValueTransformer.js +37 -6
- package/lib/core/common/StmtUseReplacer.d.ts +1 -0
- package/lib/core/common/StmtUseReplacer.d.ts.map +1 -1
- package/lib/core/common/StmtUseReplacer.js +9 -0
- package/lib/core/common/StringUtils.d.ts +10 -1
- package/lib/core/common/StringUtils.d.ts.map +1 -1
- package/lib/core/common/StringUtils.js +29 -16
- package/lib/core/graph/builder/CfgBuilder.d.ts +1 -0
- package/lib/core/graph/builder/CfgBuilder.d.ts.map +1 -1
- package/lib/core/graph/builder/CfgBuilder.js +16 -7
- package/lib/core/graph/builder/TrapBuilder.d.ts +27 -0
- package/lib/core/graph/builder/TrapBuilder.d.ts.map +1 -1
- package/lib/core/graph/builder/TrapBuilder.js +417 -62
- package/lib/core/model/ArkClass.d.ts.map +1 -1
- package/lib/core/model/ArkClass.js +1 -2
- package/lib/core/model/ArkExport.d.ts.map +1 -1
- package/lib/core/model/ArkExport.js +1 -2
- package/lib/core/model/ArkField.d.ts.map +1 -1
- package/lib/core/model/ArkField.js +1 -2
- package/lib/core/model/ArkFile.d.ts +12 -0
- package/lib/core/model/ArkFile.d.ts.map +1 -1
- package/lib/core/model/ArkFile.js +20 -0
- package/lib/core/model/ArkImport.d.ts.map +1 -1
- package/lib/core/model/ArkImport.js +1 -2
- package/lib/core/model/ArkMethod.d.ts.map +1 -1
- package/lib/core/model/ArkMethod.js +2 -3
- package/lib/core/model/ArkNamespace.d.ts.map +1 -1
- package/lib/core/model/ArkNamespace.js +2 -3
- package/package.json +1 -1
package/lib/core/base/Expr.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ import { ArkMethod } from '../model/ArkMethod';
|
|
|
8
8
|
import { ImportInfo } from '../model/ArkImport';
|
|
9
9
|
import { ArkClass } from '../model/ArkClass';
|
|
10
10
|
import { ArkField } from '../model/ArkField';
|
|
11
|
+
import { FullPosition } from './Position';
|
|
11
12
|
/**
|
|
12
13
|
* @category core/base/expr
|
|
13
14
|
*/
|
|
@@ -22,7 +23,15 @@ export declare abstract class AbstractInvokeExpr extends AbstractExpr {
|
|
|
22
23
|
private args;
|
|
23
24
|
private realGenericTypes?;
|
|
24
25
|
private spreadFlags?;
|
|
26
|
+
/** Absolute `name(...)` span captured from the CallExpression AST at IR construction. */
|
|
27
|
+
private invokeFullPosition?;
|
|
25
28
|
constructor(methodSignature: MethodSignature, args: Value[], realGenericTypes?: Type[], spreadFlags?: boolean[]);
|
|
29
|
+
/**
|
|
30
|
+
* Returns the absolute full position of `methodName(...)` captured from the AST,
|
|
31
|
+
* or undefined when this invoke was synthesized during IR construction.
|
|
32
|
+
*/
|
|
33
|
+
getInvokeFullPosition(): FullPosition | undefined;
|
|
34
|
+
setInvokeFullPosition(invokeFullPosition: FullPosition): void;
|
|
26
35
|
/**
|
|
27
36
|
* Get method Signature. The method signature is consist of ClassSignature and MethodSubSignature.
|
|
28
37
|
* It is the unique flag of a method. It is usually used to compose a expression string in ArkIRTransformer.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Expr.d.ts","sourceRoot":"","sources":["../../../src/core/base/Expr.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAGH,SAAS,EAGT,SAAS,EAOT,IAAI,EAKP,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAuD,MAAM,OAAO,CAAC;AAE9F,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAiB,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"Expr.d.ts","sourceRoot":"","sources":["../../../src/core/base/Expr.ts"],"names":[],"mappings":"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"}
|
package/lib/core/base/Expr.js
CHANGED
|
@@ -57,6 +57,16 @@ class AbstractInvokeExpr extends AbstractExpr {
|
|
|
57
57
|
this.realGenericTypes = realGenericTypes;
|
|
58
58
|
this.spreadFlags = spreadFlags;
|
|
59
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Returns the absolute full position of `methodName(...)` captured from the AST,
|
|
62
|
+
* or undefined when this invoke was synthesized during IR construction.
|
|
63
|
+
*/
|
|
64
|
+
getInvokeFullPosition() {
|
|
65
|
+
return this.invokeFullPosition;
|
|
66
|
+
}
|
|
67
|
+
setInvokeFullPosition(invokeFullPosition) {
|
|
68
|
+
this.invokeFullPosition = invokeFullPosition;
|
|
69
|
+
}
|
|
60
70
|
/**
|
|
61
71
|
* Get method Signature. The method signature is consist of ClassSignature and MethodSubSignature.
|
|
62
72
|
* It is the unique flag of a method. It is usually used to compose a expression string in ArkIRTransformer.
|
package/lib/core/base/Stmt.d.ts
CHANGED
|
@@ -153,6 +153,14 @@ export declare abstract class Stmt {
|
|
|
153
153
|
* during IR construction or if the extraction fails.
|
|
154
154
|
*/
|
|
155
155
|
getOriginalText(): string | undefined;
|
|
156
|
+
/**
|
|
157
|
+
* Returns the absolute full position of this statement's invoke.
|
|
158
|
+
* Start is the callee identifier; end is the CallExpression span end (right of `)`),
|
|
159
|
+
* same half-open convention as {@link getOriginFullPosition}.
|
|
160
|
+
* The span is captured from the AST at IR construction.
|
|
161
|
+
* @returns Absolute `FullPosition` of `methodName(...)`, or `FullPosition.DEFAULT` if not found.
|
|
162
|
+
*/
|
|
163
|
+
getInvokeFullPosition(): FullPosition;
|
|
156
164
|
/**
|
|
157
165
|
* Clears the cached source text, forcing re-extraction on next getOriginalText call.
|
|
158
166
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Stmt.d.ts","sourceRoot":"","sources":["../../../src/core/base/Stmt.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"Stmt.d.ts","sourceRoot":"","sources":["../../../src/core/base/Stmt.ts"],"names":[],"mappings":"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"}
|
package/lib/core/base/Stmt.js
CHANGED
|
@@ -19,7 +19,6 @@ const StmtUseReplacer_1 = require("../common/StmtUseReplacer");
|
|
|
19
19
|
const Expr_1 = require("./Expr");
|
|
20
20
|
const Ref_1 = require("./Ref");
|
|
21
21
|
const Position_1 = require("./Position");
|
|
22
|
-
const StringUtils_1 = require("../common/StringUtils");
|
|
23
22
|
const ArkMetadata_1 = require("../model/ArkMetadata");
|
|
24
23
|
const StmtDefReplacer_1 = require("../common/StmtDefReplacer");
|
|
25
24
|
const IRUtils_1 = require("../common/IRUtils");
|
|
@@ -291,12 +290,36 @@ class Stmt {
|
|
|
291
290
|
return undefined;
|
|
292
291
|
}
|
|
293
292
|
const arkFile = (_b = (_a = this.cfg) === null || _a === void 0 ? void 0 : _a.getDeclaringMethod()) === null || _b === void 0 ? void 0 : _b.getDeclaringArkFile();
|
|
294
|
-
const code =
|
|
293
|
+
const code = arkFile === null || arkFile === void 0 ? void 0 : arkFile.getSourceTextByFullPosition(this.originFullPosition);
|
|
295
294
|
if (code !== undefined) {
|
|
296
295
|
this.sourceCode = code;
|
|
297
296
|
}
|
|
298
297
|
return code;
|
|
299
298
|
}
|
|
299
|
+
/**
|
|
300
|
+
* Returns the absolute full position of this statement's invoke.
|
|
301
|
+
* Start is the callee identifier; end is the CallExpression span end (right of `)`),
|
|
302
|
+
* same half-open convention as {@link getOriginFullPosition}.
|
|
303
|
+
* The span is captured from the AST at IR construction.
|
|
304
|
+
* @returns Absolute `FullPosition` of `methodName(...)`, or `FullPosition.DEFAULT` if not found.
|
|
305
|
+
*/
|
|
306
|
+
getInvokeFullPosition() {
|
|
307
|
+
var _a;
|
|
308
|
+
let invoke;
|
|
309
|
+
if (this instanceof ArkInvokeStmt) {
|
|
310
|
+
invoke = this.getInvokeExpr();
|
|
311
|
+
}
|
|
312
|
+
else if (this instanceof ArkAssignStmt && this.getRightOp() instanceof Expr_1.AbstractInvokeExpr) {
|
|
313
|
+
invoke = this.getRightOp();
|
|
314
|
+
}
|
|
315
|
+
else {
|
|
316
|
+
return Position_1.FullPosition.DEFAULT;
|
|
317
|
+
}
|
|
318
|
+
if (!invoke) {
|
|
319
|
+
return Position_1.FullPosition.DEFAULT;
|
|
320
|
+
}
|
|
321
|
+
return (_a = invoke.getInvokeFullPosition()) !== null && _a !== void 0 ? _a : Position_1.FullPosition.DEFAULT;
|
|
322
|
+
}
|
|
300
323
|
/**
|
|
301
324
|
* Clears the cached source text, forcing re-extraction on next getOriginalText call.
|
|
302
325
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArkIRTransformer.d.ts","sourceRoot":"","sources":["../../../src/core/common/ArkIRTransformer.ts"],"names":[],"mappings":"AAeA,OAAO,EAEH,aAAa,EAKb,cAAc,EAGd,aAAa,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAA2E,SAAS,EAAE,MAAM,aAAa,CAAC;AACjH,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,sBAAsB,EAA2F,IAAI,EAAE,MAAM,cAAc,CAAC;AACrJ,OAAO,EAAE,SAAS,EAA6E,MAAM,cAAc,CAAC;AAKpH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAI/C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAMhD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAO5D,MAAM,MAAM,aAAa,GAAG;IACxB,KAAK,EAAE,KAAK,CAAC;IACb,sBAAsB,EAAE,YAAY,EAAE,CAAC;IACvC,KAAK,EAAE,IAAI,EAAE,CAAC;CACjB,CAAC;AAEF,qBAAa,SAAU,SAAQ,IAAI;gBACnB,IAAI,EAAE,MAAM;IAKjB,QAAQ,IAAI,MAAM;CAG5B;AAED,qBAAa,gBAAgB;IACzB,gBAAuB,2BAA2B,qBAAqB;IACvE,gBAAuB,0BAA0B,yBAAyB;IAC1E,gBAAuB,uCAAuC,SAA0D;IACxH,gBAAuB,wCAAwC,SAA2D;IAC1H,gBAAuB,mCAAmC,SAAuD;IACjH,gBAAuB,4BAA4B,YAAY;IAC/D,gBAAuB,2BAA2B,YAAY;IAC9D,gBAAuB,qBAAqB,WAAW;IAEvD,SAAS,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;IACpC,SAAS,CAAC,eAAe,EAAE,SAAS,CAAC;IACrC,SAAS,CAAC,eAAe,UAAS;IAClC,SAAS,CAAC,wBAAwB,UAAS;IAC3C,SAAS,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;gBAEvC,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,eAAe,EAAE,SAAS;IAO1D,SAAS,IAAI,GAAG,CAAC,KAAK,CAAC;IAIvB,UAAU,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI;IAI3C,YAAY,IAAI,KAAK;IAIrB,eAAe,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;IAInE,aAAa,IAAI,IAAI,EAAE;IAiBvB,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,EAAE;IA+CpC,qBAAqB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,aAAa;IAI1D,SAAS,CAAC,0BAA0B,CAAC,uBAAuB,EAAE,EAAE,CAAC,mBAAmB,GAAG,IAAI,EAAE;IAU7F,SAAS,CAAC,uBAAuB,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,GAAG,IAAI,EAAE;IAYpE,OAAO,CAAC,wBAAwB;IAiDhC,OAAO,CAAC,gBAAgB;IA+CjB,wCAAwC,CAC3C,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,YAAY,EAAE,EACzB,KAAK,EAAE,IAAI,EAAE,GACd;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,SAAS,EAAE,YAAY,EAAE,CAAA;KAAE;IAU9C,OAAO,CAAC,sBAAsB;
|
|
1
|
+
{"version":3,"file":"ArkIRTransformer.d.ts","sourceRoot":"","sources":["../../../src/core/common/ArkIRTransformer.ts"],"names":[],"mappings":"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"}
|
|
@@ -291,6 +291,7 @@ class ArkIRTransformer {
|
|
|
291
291
|
}
|
|
292
292
|
returnStatementToStmts(returnStatement) {
|
|
293
293
|
const stmts = [];
|
|
294
|
+
let returnType;
|
|
294
295
|
if (returnStatement.expression) {
|
|
295
296
|
let { value: exprValue, valueOriginalPositions: exprPositions, stmts: exprStmts } = this.tsNodeToValueAndStmts(returnStatement.expression);
|
|
296
297
|
exprStmts.forEach(stmt => stmts.push(stmt));
|
|
@@ -298,24 +299,24 @@ class ArkIRTransformer {
|
|
|
298
299
|
const returnStmt = new Stmt_1.ArkReturnStmt(processedValue);
|
|
299
300
|
returnStmt.setOperandOriginalPositions(processedPositions);
|
|
300
301
|
stmts.push(returnStmt);
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
302
|
+
returnType = processedValue.getType();
|
|
303
|
+
}
|
|
304
|
+
else {
|
|
305
|
+
stmts.push(new Stmt_1.ArkReturnVoidStmt());
|
|
306
|
+
returnType = Type_1.VoidType.getInstance();
|
|
305
307
|
}
|
|
306
|
-
|
|
307
|
-
if (this.declaringMethod.getSubSignature().getReturnType() instanceof Type_1.UnknownType) {
|
|
308
|
+
if (!(returnType instanceof Type_1.UnknownType) && this.declaringMethod.getSubSignature().getReturnType() instanceof Type_1.UnknownType) {
|
|
308
309
|
if (this.declaringMethod.containsModifier(ArkBaseModel_1.ModifierType.ASYNC)) {
|
|
309
310
|
const promise = this.declaringMethod.getDeclaringArkFile().getScene().getSdkGlobal(TSConst_1.PROMISE);
|
|
310
311
|
if (promise instanceof ArkClass_1.ArkClass) {
|
|
311
|
-
this.declaringMethod.getSubSignature().setReturnType(new Type_1.ClassType(promise.getSignature()));
|
|
312
|
+
this.declaringMethod.getSubSignature().setReturnType(new Type_1.ClassType(promise.getSignature(), [returnType]));
|
|
312
313
|
}
|
|
313
314
|
else {
|
|
314
|
-
this.declaringMethod.getSubSignature().setReturnType(new Type_1.UnclearReferenceType(TSConst_1.PROMISE, [
|
|
315
|
+
this.declaringMethod.getSubSignature().setReturnType(new Type_1.UnclearReferenceType(TSConst_1.PROMISE, [returnType]));
|
|
315
316
|
}
|
|
316
317
|
}
|
|
317
318
|
else {
|
|
318
|
-
this.declaringMethod.getSubSignature().setReturnType(
|
|
319
|
+
this.declaringMethod.getSubSignature().setReturnType(returnType);
|
|
319
320
|
}
|
|
320
321
|
}
|
|
321
322
|
return stmts;
|
|
@@ -53,6 +53,8 @@ export declare class ArkValueTransformer {
|
|
|
53
53
|
private elementAccessExpressionToValueAndStmts;
|
|
54
54
|
private callExpressionToValueAndStmts;
|
|
55
55
|
private generateInvokeValueAndStmts;
|
|
56
|
+
private buildInvokeFullPosition;
|
|
57
|
+
private getCallNameNode;
|
|
56
58
|
private handleFieldRefInvoke;
|
|
57
59
|
private handleLocalInvoke;
|
|
58
60
|
private isCustomViewCall;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArkValueTransformer.d.ts","sourceRoot":"","sources":["../../../src/core/common/ArkValueTransformer.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAA2C,IAAI,EAAE,MAAM,cAAc,CAAC;AACrG,OAAO,
|
|
1
|
+
{"version":3,"file":"ArkValueTransformer.d.ts","sourceRoot":"","sources":["../../../src/core/common/ArkValueTransformer.ts"],"names":[],"mappings":"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"}
|
|
@@ -708,16 +708,47 @@ class ArkValueTransformer {
|
|
|
708
708
|
const { value: calleeValue, valueOriginalPositions: calleePositions, stmts: calleeStmts } = this.tsNodeToValueAndStmts(functionNameNode);
|
|
709
709
|
stmts.push(...calleeStmts);
|
|
710
710
|
const invokeExprPosition = Position_1.FullPosition.buildFromNode(callExpression, this.sourceFile);
|
|
711
|
+
let result;
|
|
711
712
|
if (calleeValue instanceof Ref_1.AbstractFieldRef) {
|
|
712
|
-
|
|
713
|
+
result = this.handleFieldRefInvoke(calleeValue, args, invokeExprPosition, calleePositions, stmts);
|
|
713
714
|
}
|
|
714
|
-
if (calleeValue instanceof Local_1.Local) {
|
|
715
|
-
|
|
715
|
+
else if (calleeValue instanceof Local_1.Local) {
|
|
716
|
+
result = this.handleLocalInvoke(calleeValue, callExpression, args, invokeExprPosition, calleePositions, stmts);
|
|
716
717
|
}
|
|
717
|
-
if (calleeValue instanceof Ref_1.ArkArrayRef && ts.isElementAccessExpression(functionNameNode)) {
|
|
718
|
-
|
|
718
|
+
else if (calleeValue instanceof Ref_1.ArkArrayRef && ts.isElementAccessExpression(functionNameNode)) {
|
|
719
|
+
result = this.handleArrayRefInvoke(calleeValue, functionNameNode, args, invokeExprPosition, calleePositions, stmts);
|
|
719
720
|
}
|
|
720
|
-
|
|
721
|
+
else {
|
|
722
|
+
result = this.handleDefaultInvoke(calleeValue, args, invokeExprPosition, calleePositions, stmts);
|
|
723
|
+
}
|
|
724
|
+
if (result.value instanceof Expr_1.AbstractInvokeExpr) {
|
|
725
|
+
result.value.setInvokeFullPosition(this.buildInvokeFullPosition(functionNameNode, callExpression));
|
|
726
|
+
}
|
|
727
|
+
return result;
|
|
728
|
+
}
|
|
729
|
+
buildInvokeFullPosition(calleeNode, callExpression) {
|
|
730
|
+
const nameNode = this.getCallNameNode(calleeNode);
|
|
731
|
+
const namePos = Position_1.FullPosition.buildFromNode(nameNode, this.sourceFile);
|
|
732
|
+
const callPos = Position_1.FullPosition.buildFromNode(callExpression, this.sourceFile);
|
|
733
|
+
return new Position_1.FullPosition(namePos.getFirstLine(), namePos.getFirstCol(), callPos.getLastLine(), callPos.getLastCol());
|
|
734
|
+
}
|
|
735
|
+
getCallNameNode(callee) {
|
|
736
|
+
let expr = callee;
|
|
737
|
+
while (true) {
|
|
738
|
+
if (ts.isParenthesizedExpression(expr) || ts.isNonNullExpression(expr) ||
|
|
739
|
+
ts.isAsExpression(expr) || ts.isTypeAssertionExpression(expr)) {
|
|
740
|
+
expr = expr.expression;
|
|
741
|
+
continue;
|
|
742
|
+
}
|
|
743
|
+
break;
|
|
744
|
+
}
|
|
745
|
+
if (ts.isPropertyAccessExpression(expr)) {
|
|
746
|
+
return expr.name;
|
|
747
|
+
}
|
|
748
|
+
if (ts.isElementAccessExpression(expr)) {
|
|
749
|
+
return expr.argumentExpression;
|
|
750
|
+
}
|
|
751
|
+
return expr;
|
|
721
752
|
}
|
|
722
753
|
handleFieldRefInvoke(calleeValue, args, invokeExprPosition, calleePositions, currStmts) {
|
|
723
754
|
let methodSignature;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StmtUseReplacer.d.ts","sourceRoot":"","sources":["../../../src/core/common/StmtUseReplacer.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAwE,IAAI,EAAE,MAAM,cAAc,CAAC;AAC1G,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"StmtUseReplacer.d.ts","sourceRoot":"","sources":["../../../src/core/common/StmtUseReplacer.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAwE,IAAI,EAAE,MAAM,cAAc,CAAC;AAC1G,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAMtC;;GAEG;AACH,qBAAa,eAAe;IACxB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,MAAM,CAAQ;gBAEV,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK;IAKjC,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAejC,OAAO,CAAC,0BAA0B;IASlC,OAAO,CAAC,cAAc;IAoBtB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,aAAa;CAMxB"}
|
|
@@ -30,6 +30,7 @@ class StmtUseReplacer {
|
|
|
30
30
|
this.newUse = newUse;
|
|
31
31
|
}
|
|
32
32
|
caseStmt(stmt) {
|
|
33
|
+
this.transferInvokeFullPosition();
|
|
33
34
|
if (stmt instanceof Stmt_1.ArkAssignStmt) {
|
|
34
35
|
this.caseAssignStmt(stmt);
|
|
35
36
|
}
|
|
@@ -46,6 +47,14 @@ class StmtUseReplacer {
|
|
|
46
47
|
this.caseThrowStmt(stmt);
|
|
47
48
|
}
|
|
48
49
|
}
|
|
50
|
+
transferInvokeFullPosition() {
|
|
51
|
+
if (this.oldUse instanceof Expr_1.AbstractInvokeExpr && this.newUse instanceof Expr_1.AbstractInvokeExpr) {
|
|
52
|
+
const pos = this.oldUse.getInvokeFullPosition();
|
|
53
|
+
if (pos) {
|
|
54
|
+
this.newUse.setInvokeFullPosition(pos);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
49
58
|
caseAssignStmt(stmt) {
|
|
50
59
|
const lValue = stmt.getLeftOp();
|
|
51
60
|
if (lValue instanceof Ref_1.AbstractRef) {
|
|
@@ -4,15 +4,24 @@ import { FullPosition } from '../base/Position';
|
|
|
4
4
|
* This ensures that model objects do not implicitly depend on AST node lifecycles.
|
|
5
5
|
*/
|
|
6
6
|
export declare function cloneText(text: string): string;
|
|
7
|
+
/**
|
|
8
|
+
* Builds an array of absolute offsets of each line start in `sourceText`.
|
|
9
|
+
* Index 0 is always 0. Handles `\n` and `\r\n` the same way as position extraction.
|
|
10
|
+
* @param maxLineCount - When set, stop once this many line starts are collected
|
|
11
|
+
* (used by one-shot extract to avoid scanning the whole file).
|
|
12
|
+
*/
|
|
13
|
+
export declare function buildLineStarts(sourceText: string, maxLineCount?: number): number[];
|
|
7
14
|
/**
|
|
8
15
|
* Extracts source text from the given source code using the specified full position.
|
|
9
16
|
* @param sourceText - The source code text, or undefined if not available.
|
|
10
17
|
* @param position - The full position (start/end line/col) specifying the range to extract.
|
|
18
|
+
* @param lineStarts - Optional precomputed line-start offsets (e.g. from {@link buildLineStarts}
|
|
19
|
+
* or `ArkFile.getLineStarts()`). When omitted, builds offsets only up to `endLine`.
|
|
11
20
|
* @returns The extracted source text, or undefined if:
|
|
12
21
|
* - sourceText is undefined or empty
|
|
13
22
|
* - position is undefined or FullPosition.DEFAULT
|
|
14
23
|
* - position has invalid line/col values (<=0)
|
|
15
24
|
* - position exceeds the source text boundaries
|
|
16
25
|
*/
|
|
17
|
-
export declare function extractSourceTextByFullPosition(sourceText: string | undefined, position: FullPosition | undefined): string | undefined;
|
|
26
|
+
export declare function extractSourceTextByFullPosition(sourceText: string | undefined, position: FullPosition | undefined, lineStarts?: readonly number[]): string | undefined;
|
|
18
27
|
//# sourceMappingURL=StringUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StringUtils.d.ts","sourceRoot":"","sources":["../../../src/core/common/StringUtils.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED
|
|
1
|
+
{"version":3,"file":"StringUtils.d.ts","sourceRoot":"","sources":["../../../src/core/common/StringUtils.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAYnF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,+BAA+B,CAC3C,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,QAAQ,EAAE,YAAY,GAAG,SAAS,EAClC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,GAC/B,MAAM,GAAG,SAAS,CA6BpB"}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.extractSourceTextByFullPosition = exports.cloneText = void 0;
|
|
17
|
+
exports.extractSourceTextByFullPosition = exports.buildLineStarts = exports.cloneText = void 0;
|
|
18
18
|
const Position_1 = require("../base/Position");
|
|
19
19
|
/**
|
|
20
20
|
* Deep copy a string to avoid sharing the original text reference from TypeScript AST nodes.
|
|
@@ -24,17 +24,40 @@ function cloneText(text) {
|
|
|
24
24
|
return text.length > 0 ? Buffer.from(text, 'utf8').toString('utf8') : '';
|
|
25
25
|
}
|
|
26
26
|
exports.cloneText = cloneText;
|
|
27
|
+
/**
|
|
28
|
+
* Builds an array of absolute offsets of each line start in `sourceText`.
|
|
29
|
+
* Index 0 is always 0. Handles `\n` and `\r\n` the same way as position extraction.
|
|
30
|
+
* @param maxLineCount - When set, stop once this many line starts are collected
|
|
31
|
+
* (used by one-shot extract to avoid scanning the whole file).
|
|
32
|
+
*/
|
|
33
|
+
function buildLineStarts(sourceText, maxLineCount) {
|
|
34
|
+
const lineStarts = [0];
|
|
35
|
+
const len = sourceText.length;
|
|
36
|
+
for (let i = 0; i < len && (maxLineCount === undefined || lineStarts.length < maxLineCount); i++) {
|
|
37
|
+
if (sourceText[i] === '\n') {
|
|
38
|
+
lineStarts.push(i + 1);
|
|
39
|
+
}
|
|
40
|
+
else if (sourceText[i] === '\r' && i + 1 < len && sourceText[i + 1] === '\n') {
|
|
41
|
+
lineStarts.push(i + 2);
|
|
42
|
+
i++;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return lineStarts;
|
|
46
|
+
}
|
|
47
|
+
exports.buildLineStarts = buildLineStarts;
|
|
27
48
|
/**
|
|
28
49
|
* Extracts source text from the given source code using the specified full position.
|
|
29
50
|
* @param sourceText - The source code text, or undefined if not available.
|
|
30
51
|
* @param position - The full position (start/end line/col) specifying the range to extract.
|
|
52
|
+
* @param lineStarts - Optional precomputed line-start offsets (e.g. from {@link buildLineStarts}
|
|
53
|
+
* or `ArkFile.getLineStarts()`). When omitted, builds offsets only up to `endLine`.
|
|
31
54
|
* @returns The extracted source text, or undefined if:
|
|
32
55
|
* - sourceText is undefined or empty
|
|
33
56
|
* - position is undefined or FullPosition.DEFAULT
|
|
34
57
|
* - position has invalid line/col values (<=0)
|
|
35
58
|
* - position exceeds the source text boundaries
|
|
36
59
|
*/
|
|
37
|
-
function extractSourceTextByFullPosition(sourceText, position) {
|
|
60
|
+
function extractSourceTextByFullPosition(sourceText, position, lineStarts) {
|
|
38
61
|
if (!sourceText || !position || position === Position_1.FullPosition.DEFAULT) {
|
|
39
62
|
return undefined;
|
|
40
63
|
}
|
|
@@ -46,23 +69,13 @@ function extractSourceTextByFullPosition(sourceText, position) {
|
|
|
46
69
|
return undefined;
|
|
47
70
|
}
|
|
48
71
|
const len = sourceText.length;
|
|
49
|
-
const
|
|
50
|
-
// Only iterate up to endLine to avoid traversing the entire file
|
|
51
|
-
for (let i = 0; i < len && lineStarts.length < endLine; i++) {
|
|
52
|
-
if (sourceText[i] === '\n') {
|
|
53
|
-
lineStarts.push(i + 1);
|
|
54
|
-
}
|
|
55
|
-
else if (sourceText[i] === '\r' && i + 1 < len && sourceText[i + 1] === '\n') {
|
|
56
|
-
lineStarts.push(i + 2);
|
|
57
|
-
i++;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
72
|
+
const starts = lineStarts !== null && lineStarts !== void 0 ? lineStarts : buildLineStarts(sourceText, endLine);
|
|
60
73
|
// Check if there are enough lines
|
|
61
|
-
if (startLine >
|
|
74
|
+
if (startLine > starts.length || endLine > starts.length) {
|
|
62
75
|
return undefined;
|
|
63
76
|
}
|
|
64
|
-
const startIdx =
|
|
65
|
-
const endIdx =
|
|
77
|
+
const startIdx = starts[startLine - 1] + startCol - 1;
|
|
78
|
+
const endIdx = starts[endLine - 1] + endCol - 1;
|
|
66
79
|
if (startIdx >= len || endIdx > len || startIdx >= endIdx) {
|
|
67
80
|
return undefined;
|
|
68
81
|
}
|
|
@@ -124,6 +124,7 @@ export declare class CfgBuilder {
|
|
|
124
124
|
getDeclaringMethod(): ArkMethod;
|
|
125
125
|
judgeLastType(s: StatementBuilder, lastStatement: StatementBuilder): void;
|
|
126
126
|
ASTNodeBreakStatement(c: ts.Node, lastStatement: StatementBuilder): void;
|
|
127
|
+
private linkAbruptCompletion;
|
|
127
128
|
ASTNodeIfStatement(c: ts.IfStatement, lastStatement: StatementBuilder, scopeID: number): StatementBuilder;
|
|
128
129
|
ASTNodeWhileStatement(c: ts.WhileStatement, lastStatement: StatementBuilder, scopeID: number): StatementBuilder;
|
|
129
130
|
ASTNodeForStatement(c: ts.ForInOrOfStatement | ts.ForStatement, lastStatement: StatementBuilder, scopeID: number): StatementBuilder;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CfgBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/builder/CfgBuilder.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"CfgBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/builder/CfgBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -249,19 +249,28 @@ class CfgBuilder {
|
|
|
249
249
|
while (p && p !== this.astRoot) {
|
|
250
250
|
if (ts.isWhileStatement(p) || ts.isDoStatement(p) || ts.isForStatement(p) || ts.isForInStatement(p) || ts.isForOfStatement(p)) {
|
|
251
251
|
const lastLoopNextF = this.loopStack[this.loopStack.length - 1].nextF;
|
|
252
|
-
this.
|
|
253
|
-
lastLoopNextF.lasts.add(lastStatement);
|
|
252
|
+
this.linkAbruptCompletion(lastStatement, lastLoopNextF, 'breakStatement', c);
|
|
254
253
|
return;
|
|
255
254
|
}
|
|
256
255
|
if (ts.isCaseClause(p) || ts.isDefaultClause(p)) {
|
|
257
256
|
const lastSwitchExit = this.switchExitStack[this.switchExitStack.length - 1];
|
|
258
|
-
this.
|
|
259
|
-
lastSwitchExit.lasts.add(lastStatement);
|
|
257
|
+
this.linkAbruptCompletion(lastStatement, lastSwitchExit, 'breakStatement', c);
|
|
260
258
|
return;
|
|
261
259
|
}
|
|
262
260
|
p = p.parent;
|
|
263
261
|
}
|
|
264
262
|
}
|
|
263
|
+
linkAbruptCompletion(lastStatement, target, kind, node) {
|
|
264
|
+
if (!(lastStatement instanceof TryStatementBuilder) && lastStatement.type !== 'catchOrNot') {
|
|
265
|
+
this.judgeLastType(target, lastStatement);
|
|
266
|
+
target.lasts.add(lastStatement);
|
|
267
|
+
return;
|
|
268
|
+
}
|
|
269
|
+
const abrupt = new StatementBuilder(kind, kind === 'breakStatement' ? 'break' : 'continue', node, lastStatement.scopeID);
|
|
270
|
+
this.judgeLastType(abrupt, lastStatement);
|
|
271
|
+
abrupt.next = target;
|
|
272
|
+
target.lasts.add(abrupt);
|
|
273
|
+
}
|
|
265
274
|
ASTNodeIfStatement(c, lastStatement, scopeID) {
|
|
266
275
|
let ifstm = new ConditionStatementBuilder('ifStatement', '', c, scopeID);
|
|
267
276
|
this.judgeLastType(ifstm, lastStatement);
|
|
@@ -535,8 +544,7 @@ class CfgBuilder {
|
|
|
535
544
|
}
|
|
536
545
|
else if (ts.isContinueStatement(c)) {
|
|
537
546
|
const lastLoop = this.loopStack[this.loopStack.length - 1];
|
|
538
|
-
this.
|
|
539
|
-
lastLoop.lasts.add(lastStatement);
|
|
547
|
+
this.linkAbruptCompletion(lastStatement, lastLoop, 'continueStatement', c);
|
|
540
548
|
return;
|
|
541
549
|
}
|
|
542
550
|
else if (ts.isIfStatement(c)) {
|
|
@@ -1108,9 +1116,10 @@ class CfgBuilder {
|
|
|
1108
1116
|
this.linkBasicBlocks(blockBuilderToCfgBlock);
|
|
1109
1117
|
this.adjustBlocks(blockBuilderToCfgBlock, blocksContainLoopCondition, basicBlockSet, blockBuildersContainSwitch, valueAndStmtsOfSwitchAndCasesAll, arkIRTransformer);
|
|
1110
1118
|
const trapBuilder = new TrapBuilder_1.TrapBuilder(blockBuildersBeforeTry, blockBuilderToCfgBlock, arkIRTransformer, basicBlockSet);
|
|
1111
|
-
const
|
|
1119
|
+
const builtTraps = trapBuilder.buildTraps();
|
|
1112
1120
|
this.mergeLoopInitialBlocks(basicBlockSet);
|
|
1113
1121
|
this.removeEmptyBlocks(basicBlockSet);
|
|
1122
|
+
const traps = trapBuilder.retainLiveTraps(builtTraps);
|
|
1114
1123
|
const cfg = this.createCfg(blockBuilderToCfgBlock, basicBlockSet);
|
|
1115
1124
|
return {
|
|
1116
1125
|
cfg,
|
|
@@ -11,8 +11,10 @@ export declare class TrapBuilder {
|
|
|
11
11
|
private basicBlockSet;
|
|
12
12
|
private blockBuilderToCfgBlock;
|
|
13
13
|
private blockBuildersBeforeTry;
|
|
14
|
+
private pendingFinallyPrunes;
|
|
14
15
|
constructor(blockBuildersBeforeTry: Set<BlockBuilder>, blockBuilderToCfgBlock: Map<BlockBuilder, BasicBlock>, arkIRTransformer: ArkIRTransformer, basicBlockSet: Set<BasicBlock>);
|
|
15
16
|
buildTraps(): Trap[];
|
|
17
|
+
retainLiveTraps(traps: Trap[]): Trap[];
|
|
16
18
|
private buildTrapGroup;
|
|
17
19
|
private shouldSkipProcessing;
|
|
18
20
|
private handleEmptyTryBody;
|
|
@@ -27,8 +29,33 @@ export declare class TrapBuilder {
|
|
|
27
29
|
private removeEmptyBlockBeforeTry;
|
|
28
30
|
private shouldRemoveEmptyBlockBeforeTry;
|
|
29
31
|
private buildTrapsIfNoFinally;
|
|
32
|
+
private findUniqueCatchTailTarget;
|
|
30
33
|
private buildTrapsIfFinallyExist;
|
|
34
|
+
private connectExits;
|
|
31
35
|
private getAllBlocksBFS;
|
|
36
|
+
private linkUnprotectedTails;
|
|
37
|
+
private collectRegionBasicBlocks;
|
|
38
|
+
private successorLeavesTryRegion;
|
|
39
|
+
private liveBlocks;
|
|
40
|
+
private hasPredecessorOutside;
|
|
41
|
+
private unlinkTryThrowFallThrough;
|
|
42
|
+
private spliceFinallyAfterAbort;
|
|
43
|
+
private isAbortTail;
|
|
44
|
+
private isReturnTerminator;
|
|
45
|
+
private endsWithThrow;
|
|
46
|
+
private linkFinallyCopyAfter;
|
|
47
|
+
private attachFinallyCopy;
|
|
48
|
+
private retargetBlock;
|
|
49
|
+
private takeReturnStmt;
|
|
50
|
+
private returnValueSlot;
|
|
51
|
+
private assignReturnSlot;
|
|
52
|
+
private duplicateFinally;
|
|
53
|
+
private fallThroughCopies;
|
|
54
|
+
private linkFallThrough;
|
|
55
|
+
private placeReturnAfterFinally;
|
|
56
|
+
private returnPositions;
|
|
57
|
+
private getCopiedTails;
|
|
58
|
+
private pruneOriginalFinallyIfUnreachable;
|
|
32
59
|
private copyFinallyBlocks;
|
|
33
60
|
private copyBlocks;
|
|
34
61
|
private copyStmt;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TrapBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/builder/TrapBuilder.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"TrapBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/builder/TrapBuilder.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAkBvC,OAAO,EAAE,YAAY,EAAmC,MAAM,cAAc,CAAC;AAK7E;;GAEG;AACH,qBAAa,WAAW;IACpB,OAAO,CAAC,+BAA+B,CAAoB;IAC3D,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,sBAAsB,CAAgC;IAC9D,OAAO,CAAC,sBAAsB,CAAoB;IAClD,OAAO,CAAC,oBAAoB,CAAsB;gBAEtC,sBAAsB,EAAE,GAAG,CAAC,YAAY,CAAC,EAAE,sBAAsB,EAAE,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,EACxG,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,EAAE,GAAG,CAAC,UAAU,CAAC;IAQ3B,UAAU,IAAI,IAAI,EAAE;IAapB,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE;IAgC7C,OAAO,CAAC,cAAc;IA8CtB,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,sBAAsB;IAM9B,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,gBAAgB;IA6BxB,OAAO,CAAC,qBAAqB;IAkC7B,OAAO,CAAC,yBAAyB;IAYjC,OAAO,CAAC,+BAA+B;IAMvC,OAAO,CAAC,qBAAqB;IA8C7B,OAAO,CAAC,yBAAyB;IAgBjC,OAAO,CAAC,wBAAwB;IA8ChC,OAAO,CAAC,YAAY;IA8CpB,OAAO,CAAC,eAAe;IAoDvB,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,wBAAwB;IA6BhC,OAAO,CAAC,wBAAwB;IAehC,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,yBAAyB;IASjC,OAAO,CAAC,uBAAuB;IAoB/B,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,uBAAuB;IAiB/B,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,iCAAiC;IA2BzC,OAAO,CAAC,iBAAiB;IAqBzB,OAAO,CAAC,UAAU;IAqClB,OAAO,CAAC,QAAQ;IAmChB,OAAO,CAAC,kBAAkB;CAM7B"}
|