@rhinestone/shared-configs 1.4.57-alpha.5 → 1.4.57-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/scripts/generate-abis.d.ts +2 -0
- package/dist/scripts/generate-abis.d.ts.map +1 -0
- package/dist/scripts/generate-abis.js +150 -0
- package/dist/src/abis/index.d.ts +3 -4
- package/dist/src/abis/index.d.ts.map +1 -1
- package/dist/src/abis/index.js +23 -24
- package/dist/src/abis/{rhinestone.d.ts → orchestrator.d.ts} +1 -1
- package/dist/src/abis/{rhinestone.d.ts.map → orchestrator.d.ts.map} +1 -1
- package/dist/src/abis/{rhinestone.js → orchestrator.js} +2888 -1160
- package/dist/src/abis/relayer.d.ts.map +1 -1
- package/dist/src/abis/relayer.js +904 -904
- package/package.json +6 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-abis.d.ts","sourceRoot":"","sources":["../../scripts/generate-abis.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const node_fs_1 = require("node:fs");
|
|
7
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
8
|
+
const ABIS_SOURCE_DIR = node_path_1.default.join(process.cwd(), "abis-source");
|
|
9
|
+
const ABIS_OUTPUT_DIR = node_path_1.default.join(process.cwd(), "src", "abis");
|
|
10
|
+
const ABI_CONFIGS = [
|
|
11
|
+
{
|
|
12
|
+
outputFile: "orchestrator.ts",
|
|
13
|
+
comment: "Auto-generated from orchestrator ABIs. Do not edit manually.",
|
|
14
|
+
abis: [
|
|
15
|
+
{ name: "routerAbi", sourceFile: "router.json" },
|
|
16
|
+
{ name: "routerHelperAbi", sourceFile: "routerHelper.json" },
|
|
17
|
+
{ name: "emissaryAbi", sourceFile: "emissary.json" },
|
|
18
|
+
{ name: "intentExecutorAbi", sourceFile: "intentExecutor.json" },
|
|
19
|
+
{ name: "acrossAdapterAbi", sourceFile: "acrossAdapter.json" },
|
|
20
|
+
{ name: "ecoAdapterAbi", sourceFile: "ecoAdapter.json" },
|
|
21
|
+
{ name: "relayAdapterAbi", sourceFile: "relayAdapter.json" },
|
|
22
|
+
{ name: "sameChainAdapterAbi", sourceFile: "sameChainAdapter.json" },
|
|
23
|
+
{ name: "intentExecutorAdapterAbi", sourceFile: "intentExecutorAdapter.json" },
|
|
24
|
+
{ name: "multicallAbi", sourceFile: "multicall.json" },
|
|
25
|
+
{ name: "multicallHandlerAbi", sourceFile: "multicallHandler.json" },
|
|
26
|
+
{ name: "acrossAdapterOptimizedAbi", sourceFile: "acrossAdapterOptimized.json", satisfiesAbi: false },
|
|
27
|
+
{ name: "routeTupleAbi", sourceFile: "routeTuple.json", satisfiesAbi: false },
|
|
28
|
+
{ name: "rewardTupleAbi", sourceFile: "rewardTuple.json", satisfiesAbi: false },
|
|
29
|
+
{ name: "ecoAdapterOptimizedAbi", sourceFile: "ecoAdapterOptimized.json", satisfiesAbi: false },
|
|
30
|
+
{ name: "relayAdapterOptimizedAbi", sourceFile: "relayAdapterOptimized.json", satisfiesAbi: false },
|
|
31
|
+
],
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
outputFile: "relayer.ts",
|
|
35
|
+
comment: "Auto-generated from relayer ABIs. Do not edit manually.",
|
|
36
|
+
abis: [
|
|
37
|
+
{ name: "relayerPotV1Abi", sourceFile: "relayerPotV1.json" },
|
|
38
|
+
{ name: "wethAbi", sourceFile: "weth.json" },
|
|
39
|
+
{ name: "singleCallAbi", sourceFile: "singleCall.json" },
|
|
40
|
+
{ name: "multiCallAbi", sourceFile: "relayerMultiCall.json" },
|
|
41
|
+
{ name: "directRouteAbi", sourceFile: "directRoute.json" },
|
|
42
|
+
],
|
|
43
|
+
},
|
|
44
|
+
];
|
|
45
|
+
function formatAbiAsTypeScript(abi) {
|
|
46
|
+
const json = JSON.stringify(abi, null, 2);
|
|
47
|
+
return json.replace(/"([^"]+)":/g, "$1:").replace(/"/g, "'");
|
|
48
|
+
}
|
|
49
|
+
function generateAbiFile(config) {
|
|
50
|
+
const lines = [
|
|
51
|
+
`// ${config.comment}`,
|
|
52
|
+
'import type { Abi } from "viem";',
|
|
53
|
+
"",
|
|
54
|
+
];
|
|
55
|
+
for (const abiDef of config.abis) {
|
|
56
|
+
const sourceFile = node_path_1.default.join(ABIS_SOURCE_DIR, abiDef.sourceFile);
|
|
57
|
+
if (!(0, node_fs_1.existsSync)(sourceFile)) {
|
|
58
|
+
console.warn(`Warning: Source file not found: ${sourceFile}`);
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
const abiJson = JSON.parse((0, node_fs_1.readFileSync)(sourceFile, "utf8"));
|
|
62
|
+
const abi = Array.isArray(abiJson) ? abiJson : abiJson.abi;
|
|
63
|
+
if (!abi) {
|
|
64
|
+
console.warn(`Warning: No ABI found in ${sourceFile}`);
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
const formattedAbi = formatAbiAsTypeScript(abi);
|
|
68
|
+
const typeAnnotation = abiDef.satisfiesAbi === false ? "as const" : "as const satisfies Abi";
|
|
69
|
+
lines.push(`export const ${abiDef.name} = ${formattedAbi} ${typeAnnotation};`);
|
|
70
|
+
lines.push("");
|
|
71
|
+
}
|
|
72
|
+
const outputFile = node_path_1.default.join(ABIS_OUTPUT_DIR, config.outputFile);
|
|
73
|
+
(0, node_fs_1.writeFileSync)(outputFile, lines.join("\n"));
|
|
74
|
+
console.log(`Generated: ${outputFile}`);
|
|
75
|
+
}
|
|
76
|
+
function extractExistingAbis() {
|
|
77
|
+
console.log("Extracting existing ABIs to JSON source files...");
|
|
78
|
+
if (!(0, node_fs_1.existsSync)(ABIS_SOURCE_DIR)) {
|
|
79
|
+
(0, node_fs_1.mkdirSync)(ABIS_SOURCE_DIR, { recursive: true });
|
|
80
|
+
}
|
|
81
|
+
for (const config of ABI_CONFIGS) {
|
|
82
|
+
const sourceFile = node_path_1.default.join(ABIS_OUTPUT_DIR, config.outputFile);
|
|
83
|
+
if (!(0, node_fs_1.existsSync)(sourceFile)) {
|
|
84
|
+
console.warn(`Source TypeScript file not found: ${sourceFile}`);
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
const content = (0, node_fs_1.readFileSync)(sourceFile, "utf8");
|
|
88
|
+
for (const abiDef of config.abis) {
|
|
89
|
+
let startPattern = `export const ${abiDef.name}= [`;
|
|
90
|
+
let startIndex = content.indexOf(startPattern);
|
|
91
|
+
let prefixLen = `export const ${abiDef.name}= `.length;
|
|
92
|
+
if (startIndex === -1) {
|
|
93
|
+
startPattern = `export const ${abiDef.name} = [`;
|
|
94
|
+
startIndex = content.indexOf(startPattern);
|
|
95
|
+
prefixLen = `export const ${abiDef.name} = `.length;
|
|
96
|
+
}
|
|
97
|
+
if (startIndex === -1) {
|
|
98
|
+
console.warn(`Could not find ${abiDef.name} in ${config.outputFile}`);
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
const arrayStart = startIndex + prefixLen;
|
|
102
|
+
let depth = 0;
|
|
103
|
+
let endIndex = arrayStart;
|
|
104
|
+
for (let i = arrayStart; i < content.length; i++) {
|
|
105
|
+
const char = content[i];
|
|
106
|
+
if (char === "[" || char === "{")
|
|
107
|
+
depth++;
|
|
108
|
+
else if (char === "]" || char === "}") {
|
|
109
|
+
depth--;
|
|
110
|
+
if (depth === 0) {
|
|
111
|
+
endIndex = i + 1;
|
|
112
|
+
break;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
const abiStr = content.slice(arrayStart, endIndex);
|
|
117
|
+
try {
|
|
118
|
+
const jsonStr = abiStr
|
|
119
|
+
.replace(/'/g, '"')
|
|
120
|
+
.replace(/(\w+):/g, '"$1":')
|
|
121
|
+
.replace(/,(\s*[}\]])/g, "$1");
|
|
122
|
+
const abi = JSON.parse(jsonStr);
|
|
123
|
+
const outputPath = node_path_1.default.join(ABIS_SOURCE_DIR, abiDef.sourceFile);
|
|
124
|
+
(0, node_fs_1.writeFileSync)(outputPath, JSON.stringify(abi, null, 2));
|
|
125
|
+
console.log(`Extracted: ${abiDef.name} -> ${abiDef.sourceFile}`);
|
|
126
|
+
}
|
|
127
|
+
catch (e) {
|
|
128
|
+
console.error(`Failed to extract ${abiDef.name}:`, e);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
function main() {
|
|
134
|
+
const args = process.argv.slice(2);
|
|
135
|
+
if (args.includes("--extract")) {
|
|
136
|
+
extractExistingAbis();
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
if (!(0, node_fs_1.existsSync)(ABIS_SOURCE_DIR)) {
|
|
140
|
+
console.error(`Error: ABI source directory not found: ${ABIS_SOURCE_DIR}`);
|
|
141
|
+
console.log("Run with --extract first to create source files from existing ABIs.");
|
|
142
|
+
process.exit(1);
|
|
143
|
+
}
|
|
144
|
+
console.log("Generating ABI TypeScript files...");
|
|
145
|
+
for (const config of ABI_CONFIGS) {
|
|
146
|
+
generateAbiFile(config);
|
|
147
|
+
}
|
|
148
|
+
console.log("Done!");
|
|
149
|
+
}
|
|
150
|
+
main();
|
package/dist/src/abis/index.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
export { routerAbi, routerHelperAbi, emissaryAbi, intentExecutorAbi, intentExecutorAdapterAbi, acrossAdapterAbi, ecoAdapterAbi, relayAdapterAbi, sameChainAdapterAbi, multicallAbi, multicallHandlerAbi, acrossAdapterOptimizedAbi, ecoAdapterOptimizedAbi, relayAdapterOptimizedAbi, routeTupleAbi, rewardTupleAbi, } from "./
|
|
2
|
-
export { multicallAbi as multiCallAbi } from "./
|
|
3
|
-
export {
|
|
4
|
-
export { directRouteAbi, wethAbi, relayerPotV1Abi } from "./relayer";
|
|
1
|
+
export { routerAbi, routerHelperAbi, emissaryAbi, intentExecutorAbi, intentExecutorAdapterAbi, acrossAdapterAbi, ecoAdapterAbi, relayAdapterAbi, sameChainAdapterAbi, multicallAbi, multicallHandlerAbi, acrossAdapterOptimizedAbi, ecoAdapterOptimizedAbi, relayAdapterOptimizedAbi, routeTupleAbi, rewardTupleAbi, } from "./orchestrator";
|
|
2
|
+
export { multicallAbi as multiCallAbi } from "./orchestrator";
|
|
3
|
+
export { directRouteAbi, wethAbi, relayerPotV1Abi, singleCallAbi, } from "./relayer";
|
|
5
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/abis/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,SAAS,EACT,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,wBAAwB,EACxB,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,mBAAmB,EACnB,yBAAyB,EACzB,sBAAsB,EACtB,wBAAwB,EACxB,aAAa,EACb,cAAc,GACf,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/abis/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,SAAS,EACT,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,wBAAwB,EACxB,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,mBAAmB,EACnB,yBAAyB,EACzB,sBAAsB,EACtB,wBAAwB,EACxB,aAAa,EACb,cAAc,GACf,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,YAAY,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9D,OAAO,EACL,cAAc,EACd,OAAO,EACP,eAAe,EACf,aAAa,GACd,MAAM,WAAW,CAAC"}
|
package/dist/src/abis/index.js
CHANGED
|
@@ -1,31 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
// Re-export
|
|
5
|
-
var
|
|
6
|
-
Object.defineProperty(exports, "routerAbi", { enumerable: true, get: function () { return
|
|
7
|
-
Object.defineProperty(exports, "routerHelperAbi", { enumerable: true, get: function () { return
|
|
8
|
-
Object.defineProperty(exports, "emissaryAbi", { enumerable: true, get: function () { return
|
|
9
|
-
Object.defineProperty(exports, "intentExecutorAbi", { enumerable: true, get: function () { return
|
|
10
|
-
Object.defineProperty(exports, "intentExecutorAdapterAbi", { enumerable: true, get: function () { return
|
|
11
|
-
Object.defineProperty(exports, "acrossAdapterAbi", { enumerable: true, get: function () { return
|
|
12
|
-
Object.defineProperty(exports, "ecoAdapterAbi", { enumerable: true, get: function () { return
|
|
13
|
-
Object.defineProperty(exports, "relayAdapterAbi", { enumerable: true, get: function () { return
|
|
14
|
-
Object.defineProperty(exports, "sameChainAdapterAbi", { enumerable: true, get: function () { return
|
|
15
|
-
Object.defineProperty(exports, "multicallAbi", { enumerable: true, get: function () { return
|
|
16
|
-
Object.defineProperty(exports, "multicallHandlerAbi", { enumerable: true, get: function () { return
|
|
17
|
-
Object.defineProperty(exports, "acrossAdapterOptimizedAbi", { enumerable: true, get: function () { return
|
|
18
|
-
Object.defineProperty(exports, "ecoAdapterOptimizedAbi", { enumerable: true, get: function () { return
|
|
19
|
-
Object.defineProperty(exports, "relayAdapterOptimizedAbi", { enumerable: true, get: function () { return
|
|
20
|
-
Object.defineProperty(exports, "routeTupleAbi", { enumerable: true, get: function () { return
|
|
21
|
-
Object.defineProperty(exports, "rewardTupleAbi", { enumerable: true, get: function () { return
|
|
3
|
+
exports.singleCallAbi = exports.relayerPotV1Abi = exports.wethAbi = exports.directRouteAbi = exports.multiCallAbi = exports.rewardTupleAbi = exports.routeTupleAbi = exports.relayAdapterOptimizedAbi = exports.ecoAdapterOptimizedAbi = exports.acrossAdapterOptimizedAbi = exports.multicallHandlerAbi = exports.multicallAbi = exports.sameChainAdapterAbi = exports.relayAdapterAbi = exports.ecoAdapterAbi = exports.acrossAdapterAbi = exports.intentExecutorAdapterAbi = exports.intentExecutorAbi = exports.emissaryAbi = exports.routerHelperAbi = exports.routerAbi = void 0;
|
|
4
|
+
// Re-export ABIs from orchestrator.ts
|
|
5
|
+
var orchestrator_1 = require("./orchestrator");
|
|
6
|
+
Object.defineProperty(exports, "routerAbi", { enumerable: true, get: function () { return orchestrator_1.routerAbi; } });
|
|
7
|
+
Object.defineProperty(exports, "routerHelperAbi", { enumerable: true, get: function () { return orchestrator_1.routerHelperAbi; } });
|
|
8
|
+
Object.defineProperty(exports, "emissaryAbi", { enumerable: true, get: function () { return orchestrator_1.emissaryAbi; } });
|
|
9
|
+
Object.defineProperty(exports, "intentExecutorAbi", { enumerable: true, get: function () { return orchestrator_1.intentExecutorAbi; } });
|
|
10
|
+
Object.defineProperty(exports, "intentExecutorAdapterAbi", { enumerable: true, get: function () { return orchestrator_1.intentExecutorAdapterAbi; } });
|
|
11
|
+
Object.defineProperty(exports, "acrossAdapterAbi", { enumerable: true, get: function () { return orchestrator_1.acrossAdapterAbi; } });
|
|
12
|
+
Object.defineProperty(exports, "ecoAdapterAbi", { enumerable: true, get: function () { return orchestrator_1.ecoAdapterAbi; } });
|
|
13
|
+
Object.defineProperty(exports, "relayAdapterAbi", { enumerable: true, get: function () { return orchestrator_1.relayAdapterAbi; } });
|
|
14
|
+
Object.defineProperty(exports, "sameChainAdapterAbi", { enumerable: true, get: function () { return orchestrator_1.sameChainAdapterAbi; } });
|
|
15
|
+
Object.defineProperty(exports, "multicallAbi", { enumerable: true, get: function () { return orchestrator_1.multicallAbi; } });
|
|
16
|
+
Object.defineProperty(exports, "multicallHandlerAbi", { enumerable: true, get: function () { return orchestrator_1.multicallHandlerAbi; } });
|
|
17
|
+
Object.defineProperty(exports, "acrossAdapterOptimizedAbi", { enumerable: true, get: function () { return orchestrator_1.acrossAdapterOptimizedAbi; } });
|
|
18
|
+
Object.defineProperty(exports, "ecoAdapterOptimizedAbi", { enumerable: true, get: function () { return orchestrator_1.ecoAdapterOptimizedAbi; } });
|
|
19
|
+
Object.defineProperty(exports, "relayAdapterOptimizedAbi", { enumerable: true, get: function () { return orchestrator_1.relayAdapterOptimizedAbi; } });
|
|
20
|
+
Object.defineProperty(exports, "routeTupleAbi", { enumerable: true, get: function () { return orchestrator_1.routeTupleAbi; } });
|
|
21
|
+
Object.defineProperty(exports, "rewardTupleAbi", { enumerable: true, get: function () { return orchestrator_1.rewardTupleAbi; } });
|
|
22
22
|
// Aliases for backward compatibility
|
|
23
|
-
var
|
|
24
|
-
Object.defineProperty(exports, "multiCallAbi", { enumerable: true, get: function () { return
|
|
25
|
-
|
|
26
|
-
Object.defineProperty(exports, "singleCallAbi", { enumerable: true, get: function () { return rhinestone_3.routerHelperAbi; } });
|
|
27
|
-
// Legacy relayer ABIs
|
|
23
|
+
var orchestrator_2 = require("./orchestrator");
|
|
24
|
+
Object.defineProperty(exports, "multiCallAbi", { enumerable: true, get: function () { return orchestrator_2.multicallAbi; } });
|
|
25
|
+
// Relayer ABIs
|
|
28
26
|
var relayer_1 = require("./relayer");
|
|
29
27
|
Object.defineProperty(exports, "directRouteAbi", { enumerable: true, get: function () { return relayer_1.directRouteAbi; } });
|
|
30
28
|
Object.defineProperty(exports, "wethAbi", { enumerable: true, get: function () { return relayer_1.wethAbi; } });
|
|
31
29
|
Object.defineProperty(exports, "relayerPotV1Abi", { enumerable: true, get: function () { return relayer_1.relayerPotV1Abi; } });
|
|
30
|
+
Object.defineProperty(exports, "singleCallAbi", { enumerable: true, get: function () { return relayer_1.singleCallAbi; } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../src/abis/orchestrator.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAixBE,CAAC;AAEzB,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuCJ,CAAC;AAEzB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkJA,CAAC;AAEzB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkzBN,CAAC;AAEzB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8uBL,CAAC;AAEzB,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAumCF,CAAC;AAEzB,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8gCJ,CAAC;AAEzB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAycR,CAAC;AAEzB,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6Eb,CAAC;AAEzB,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsID,CAAC;AAEzB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8JR,CAAC;AAEzB,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwG5B,CAAC;AAEX,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkEhB,CAAC;AAEX,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;EAqCjB,CAAC;AAEX,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6GzB,CAAC;AAEX,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkH3B,CAAC"}
|