@rocketh/verifier 0.10.10 → 0.10.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/blockscout.d.ts +11 -0
- package/dist/esm/blockscout.d.ts.map +1 -0
- package/dist/esm/blockscout.js +121 -0
- package/dist/esm/blockscout.js.map +1 -0
- package/dist/esm/cli.d.ts +3 -0
- package/dist/esm/cli.d.ts.map +1 -0
- package/dist/esm/cli.js +65 -0
- package/dist/esm/cli.js.map +1 -0
- package/dist/esm/etherscan.d.ts +11 -0
- package/dist/esm/etherscan.d.ts.map +1 -0
- package/dist/esm/etherscan.js +360 -0
- package/dist/esm/etherscan.js.map +1 -0
- package/dist/{index.d.ts → esm/index.d.ts} +6 -8
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +46 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/metadata.d.ts +5 -0
- package/dist/esm/metadata.d.ts.map +1 -0
- package/dist/esm/metadata.js +24 -0
- package/dist/esm/metadata.js.map +1 -0
- package/dist/esm/sourcify.d.ts +11 -0
- package/dist/esm/sourcify.d.ts.map +1 -0
- package/dist/esm/sourcify.js +84 -0
- package/dist/esm/sourcify.js.map +1 -0
- package/dist/esm/utils/match-all.d.ts +42 -0
- package/dist/esm/utils/match-all.d.ts.map +1 -0
- package/dist/esm/utils/match-all.js +66 -0
- package/dist/esm/utils/match-all.js.map +1 -0
- package/package.json +13 -15
- package/.prettierignore +0 -3
- package/.prettierrc +0 -7
- package/CHANGELOG.md +0 -70
- package/dist/cli.cjs +0 -129
- package/dist/cli.cjs.map +0 -1
- package/dist/cli.mjs +0 -126
- package/dist/cli.mjs.map +0 -1
- package/dist/index.cjs +0 -671
- package/dist/index.cjs.map +0 -1
- package/dist/index.mjs +0 -669
- package/dist/index.mjs.map +0 -1
- package/src/blockscout.ts +0 -157
- package/src/cli.ts +0 -73
- package/src/etherscan.ts +0 -431
- package/src/index.ts +0 -82
- package/src/metadata.ts +0 -30
- package/src/sourcify.ts +0 -109
- package/src/utils/match-all.ts +0 -72
- package/tsconfig.json +0 -15
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAkB,MAAM,SAAS,CAAC;AAKxD,MAAM,MAAM,gBAAgB,GAAG;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC/B,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CAElB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IACjC,QAAQ,EAAE,gBAAgB,GAAG,eAAe,GAAG,iBAAiB,CAAC;IACjE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,wBAAsB,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,mBAAmB,iBAkD7E"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { loadDeployments } from 'rocketh';
|
|
2
|
+
import { submitSourcesToEtherscan } from './etherscan.js';
|
|
3
|
+
import { submitSourcesToSourcify } from './sourcify.js';
|
|
4
|
+
import { submitSourcesToBlockscout } from './blockscout.js';
|
|
5
|
+
export async function run(config, options) {
|
|
6
|
+
const { deployments, chainId } = loadDeployments(config.deployments, config.network.name, false);
|
|
7
|
+
if (Object.keys(deployments).length === 0) {
|
|
8
|
+
console.log(`the network ${config.network.name} has zero deployments`);
|
|
9
|
+
process.exit();
|
|
10
|
+
}
|
|
11
|
+
if (!chainId) {
|
|
12
|
+
console.error(`the network ${config.network.name} has no chainId recorded`);
|
|
13
|
+
process.exit(1);
|
|
14
|
+
}
|
|
15
|
+
if (options.verifier.type === 'etherscan') {
|
|
16
|
+
await submitSourcesToEtherscan({
|
|
17
|
+
chainId,
|
|
18
|
+
deployments,
|
|
19
|
+
networkName: config.network.name,
|
|
20
|
+
deploymentNames: options.deploymentNames,
|
|
21
|
+
minInterval: options.minInterval,
|
|
22
|
+
logErrorOnFailure: options.logErrorOnFailure,
|
|
23
|
+
}, options.verifier);
|
|
24
|
+
}
|
|
25
|
+
else if (options.verifier.type === 'sourcify') {
|
|
26
|
+
await submitSourcesToSourcify({
|
|
27
|
+
chainId,
|
|
28
|
+
deployments,
|
|
29
|
+
networkName: config.network.name,
|
|
30
|
+
deploymentNames: options.deploymentNames,
|
|
31
|
+
minInterval: options.minInterval,
|
|
32
|
+
logErrorOnFailure: options.logErrorOnFailure,
|
|
33
|
+
}, options.verifier);
|
|
34
|
+
}
|
|
35
|
+
else if (options.verifier.type === 'blockscout') {
|
|
36
|
+
await submitSourcesToBlockscout({
|
|
37
|
+
chainId,
|
|
38
|
+
deployments,
|
|
39
|
+
networkName: config.network.name,
|
|
40
|
+
deploymentNames: options.deploymentNames,
|
|
41
|
+
minInterval: options.minInterval,
|
|
42
|
+
logErrorOnFailure: options.logErrorOnFailure,
|
|
43
|
+
}, options.verifier);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,eAAe,EAAC,MAAM,SAAS,CAAC;AACxD,OAAO,EAAC,wBAAwB,EAAC,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAC,uBAAuB,EAAC,MAAM,eAAe,CAAC;AACtD,OAAO,EAAC,yBAAyB,EAAC,MAAM,iBAAiB,CAAC;AA4B1D,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,MAAsB,EAAE,OAA4B;IAC7E,MAAM,EAAC,WAAW,EAAE,OAAO,EAAC,GAAG,eAAe,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAE/F,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,OAAO,CAAC,IAAI,uBAAuB,CAAC,CAAC;QACvE,OAAO,CAAC,IAAI,EAAE,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,eAAe,MAAM,CAAC,OAAO,CAAC,IAAI,0BAA0B,CAAC,CAAC;QAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC3C,MAAM,wBAAwB,CAC7B;YACC,OAAO;YACP,WAAW;YACX,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI;YAChC,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;SAC5C,EACD,OAAO,CAAC,QAAQ,CAChB,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACjD,MAAM,uBAAuB,CAC5B;YACC,OAAO;YACP,WAAW;YACX,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI;YAChC,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;SAC5C,EACD,OAAO,CAAC,QAAQ,CAChB,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QACnD,MAAM,yBAAyB,CAC9B;YACC,OAAO;YACP,WAAW;YACX,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI;YAChC,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;SAC5C,EACD,OAAO,CAAC,QAAQ,CAChB,CAAC;IACH,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAkB,MAAM,SAAS,CAAC;AAIxD,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,EAAE,EAAC,GAAG,EAAC,EAAE;IAAC,GAAG,EAAE,MAAM,CAAA;CAAC,QAyB1E"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { loadDeployments } from 'rocketh';
|
|
2
|
+
import fs from 'fs-extra';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
export function exportMetadata(config, { out }) {
|
|
5
|
+
const { deployments, chainId } = loadDeployments(config.deployments, config.network.name, false);
|
|
6
|
+
if (Object.keys(deployments).length === 0) {
|
|
7
|
+
console.log(`the network ${config.network.name} has zero deployments`);
|
|
8
|
+
process.exit();
|
|
9
|
+
}
|
|
10
|
+
if (!chainId) {
|
|
11
|
+
console.error(`the network ${config.network.name} has no chainId recorded`);
|
|
12
|
+
process.exit(1);
|
|
13
|
+
}
|
|
14
|
+
const folder = path.join(out, config.network.name);
|
|
15
|
+
fs.emptyDirSync(folder);
|
|
16
|
+
const deploymentNames = Object.keys(deployments);
|
|
17
|
+
for (const deploymentName of deploymentNames) {
|
|
18
|
+
const deployment = deployments[deploymentName];
|
|
19
|
+
if (deployment.metadata) {
|
|
20
|
+
fs.writeFileSync(path.join(folder, `${deploymentName}_at_${deployment.address}.metadata.json`), deployment.metadata);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,eAAe,EAAC,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,UAAU,cAAc,CAAC,MAAsB,EAAE,EAAC,GAAG,EAAgB;IAC1E,MAAM,EAAC,WAAW,EAAE,OAAO,EAAC,GAAG,eAAe,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAE/F,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,OAAO,CAAC,IAAI,uBAAuB,CAAC,CAAC;QACvE,OAAO,CAAC,IAAI,EAAE,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,eAAe,MAAM,CAAC,OAAO,CAAC,IAAI,0BAA0B,CAAC,CAAC;QAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACxB,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACjD,KAAK,MAAM,cAAc,IAAI,eAAe,EAAE,CAAC;QAC9C,MAAM,UAAU,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC;QAC/C,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;YACzB,EAAE,CAAC,aAAa,CACf,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,cAAc,OAAO,UAAU,CAAC,OAAO,gBAAgB,CAAC,EAC7E,UAAU,CAAC,QAAQ,CACnB,CAAC;QACH,CAAC;IACF,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { UnknownDeployments } from 'rocketh';
|
|
2
|
+
import { SourcifyOptions } from './index.js';
|
|
3
|
+
export declare function submitSourcesToSourcify(env: {
|
|
4
|
+
deployments: UnknownDeployments;
|
|
5
|
+
networkName: string;
|
|
6
|
+
chainId: string;
|
|
7
|
+
deploymentNames?: string[];
|
|
8
|
+
minInterval?: number;
|
|
9
|
+
logErrorOnFailure?: boolean;
|
|
10
|
+
}, config?: SourcifyOptions): Promise<void>;
|
|
11
|
+
//# sourceMappingURL=sourcify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sourcify.d.ts","sourceRoot":"","sources":["../../src/sourcify.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,kBAAkB,EAAC,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAiC3C,wBAAsB,uBAAuB,CAC5C,GAAG,EAAE;IACJ,WAAW,EAAE,kBAAkB,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC5B,EACD,MAAM,CAAC,EAAE,eAAe,GACtB,OAAO,CAAC,IAAI,CAAC,CA6Df"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import fs from 'fs-extra';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
function sleep(ms) {
|
|
5
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
6
|
+
}
|
|
7
|
+
function log(...args) {
|
|
8
|
+
console.log(...args);
|
|
9
|
+
}
|
|
10
|
+
function logError(...args) {
|
|
11
|
+
console.log(chalk.red(...args));
|
|
12
|
+
}
|
|
13
|
+
function logInfo(...args) {
|
|
14
|
+
console.log(chalk.yellow(...args));
|
|
15
|
+
}
|
|
16
|
+
function logSuccess(...args) {
|
|
17
|
+
console.log(chalk.green(...args));
|
|
18
|
+
}
|
|
19
|
+
function ensureTrailingSlash(s) {
|
|
20
|
+
const lastChar = s.substr(-1);
|
|
21
|
+
if (lastChar != '/') {
|
|
22
|
+
s = s + '/';
|
|
23
|
+
}
|
|
24
|
+
return s;
|
|
25
|
+
}
|
|
26
|
+
// const defaultEndpoint = 'https://server.verificationstaging.shardlabs.io/';
|
|
27
|
+
const defaultEndpoint = 'https://sourcify.dev/server/';
|
|
28
|
+
export async function submitSourcesToSourcify(env, config) {
|
|
29
|
+
config = config || { type: 'sourcify' };
|
|
30
|
+
const all = env.deployments;
|
|
31
|
+
const url = config.endpoint ? ensureTrailingSlash(config.endpoint) : defaultEndpoint;
|
|
32
|
+
async function submit(name) {
|
|
33
|
+
const deployment = all[name];
|
|
34
|
+
const { address, metadata: metadataString } = deployment;
|
|
35
|
+
try {
|
|
36
|
+
const checkResponse = await fetch(`${url}checkByAddresses?addresses=${address.toLowerCase()}&chainIds=${env.chainId}`);
|
|
37
|
+
const json = await checkResponse.json();
|
|
38
|
+
if (json[0].status === 'perfect') {
|
|
39
|
+
log(`already verified: ${name} (${address}), skipping.`);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
catch (e) {
|
|
44
|
+
logError((e.response && JSON.stringify(e.response.data)) || e);
|
|
45
|
+
}
|
|
46
|
+
if (!metadataString) {
|
|
47
|
+
logError(`Contract ${name} was deployed without saving metadata. Cannot submit to sourcify, skipping.`);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
logInfo(`verifying ${name} (${address} on chain ${env.chainId}) ...`);
|
|
51
|
+
const formData = new FormData();
|
|
52
|
+
formData.append('address', address);
|
|
53
|
+
formData.append('chain', env.chainId);
|
|
54
|
+
const metadataBlob = new Blob([metadataString], {
|
|
55
|
+
type: 'application/json',
|
|
56
|
+
});
|
|
57
|
+
formData.append('files', metadataBlob, 'metadata.json');
|
|
58
|
+
try {
|
|
59
|
+
const submissionResponse = await fetch(url, { body: formData, method: 'POST' });
|
|
60
|
+
const json = await submissionResponse.json();
|
|
61
|
+
if (json.result[0].status === 'perfect') {
|
|
62
|
+
logSuccess(` => contract ${name} is now verified`);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
logError(` => contract ${name} is not verified`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
catch (e) {
|
|
69
|
+
if (env?.logErrorOnFailure) {
|
|
70
|
+
const failingMetadataFolder = path.join('failing_metadata', env.chainId);
|
|
71
|
+
fs.ensureDirSync(failingMetadataFolder);
|
|
72
|
+
fs.writeFileSync(path.join(failingMetadataFolder, `${name}_at_${address}.json`), metadataString);
|
|
73
|
+
}
|
|
74
|
+
logError((e.response && JSON.stringify(e.response.data)) || e);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
for (const name of env.deploymentNames ? env.deploymentNames : Object.keys(all)) {
|
|
78
|
+
await submit(name);
|
|
79
|
+
if (env.minInterval) {
|
|
80
|
+
await sleep(env.minInterval);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=sourcify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sourcify.js","sourceRoot":"","sources":["../../src/sourcify.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export declare function matchAll(s: string, r: RegExp): {
|
|
2
|
+
input: string;
|
|
3
|
+
regex: RegExp;
|
|
4
|
+
/**
|
|
5
|
+
* next
|
|
6
|
+
* Get the next match in single group match.
|
|
7
|
+
*
|
|
8
|
+
* @name next
|
|
9
|
+
* @function
|
|
10
|
+
* @return {String|null} The matched snippet.
|
|
11
|
+
*/
|
|
12
|
+
next(): string | null;
|
|
13
|
+
/**
|
|
14
|
+
* nextRaw
|
|
15
|
+
* Get the next match in raw regex output. Usefull to get another group match.
|
|
16
|
+
*
|
|
17
|
+
* @name nextRaw
|
|
18
|
+
* @function
|
|
19
|
+
* @returns {Array|null} The matched snippet
|
|
20
|
+
*/
|
|
21
|
+
nextRaw(): RegExpExecArray | null;
|
|
22
|
+
/**
|
|
23
|
+
* toArray
|
|
24
|
+
* Get all the matches.
|
|
25
|
+
*
|
|
26
|
+
* @name toArray
|
|
27
|
+
* @function
|
|
28
|
+
* @return {Array} The matched snippets.
|
|
29
|
+
*/
|
|
30
|
+
toArray(): string[];
|
|
31
|
+
/**
|
|
32
|
+
* reset
|
|
33
|
+
* Reset the index.
|
|
34
|
+
*
|
|
35
|
+
* @name reset
|
|
36
|
+
* @function
|
|
37
|
+
* @param {Number} i The new index (default: `0`).
|
|
38
|
+
* @return {Number} The new index.
|
|
39
|
+
*/
|
|
40
|
+
reset(i?: number): number;
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=match-all.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"match-all.d.ts","sourceRoot":"","sources":["../../../src/utils/match-all.ts"],"names":[],"mappings":"AACA,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;;;IAK3C;;;;;;;OAOG;;IAaH;;;;;;;OAOG;;IAMH;;;;;;;OAOG;;IAYH;;;;;;;;OAQG;cACM,MAAM;EAIhB"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
// taken from package match-all
|
|
2
|
+
export function matchAll(s, r) {
|
|
3
|
+
return {
|
|
4
|
+
input: s,
|
|
5
|
+
regex: r,
|
|
6
|
+
/**
|
|
7
|
+
* next
|
|
8
|
+
* Get the next match in single group match.
|
|
9
|
+
*
|
|
10
|
+
* @name next
|
|
11
|
+
* @function
|
|
12
|
+
* @return {String|null} The matched snippet.
|
|
13
|
+
*/
|
|
14
|
+
next() {
|
|
15
|
+
let c = this.nextRaw();
|
|
16
|
+
if (c) {
|
|
17
|
+
for (let i = 1; i < c.length; i++) {
|
|
18
|
+
if (c[i]) {
|
|
19
|
+
return c[i];
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return null;
|
|
24
|
+
},
|
|
25
|
+
/**
|
|
26
|
+
* nextRaw
|
|
27
|
+
* Get the next match in raw regex output. Usefull to get another group match.
|
|
28
|
+
*
|
|
29
|
+
* @name nextRaw
|
|
30
|
+
* @function
|
|
31
|
+
* @returns {Array|null} The matched snippet
|
|
32
|
+
*/
|
|
33
|
+
nextRaw() {
|
|
34
|
+
let c = this.regex.exec(this.input);
|
|
35
|
+
return c;
|
|
36
|
+
},
|
|
37
|
+
/**
|
|
38
|
+
* toArray
|
|
39
|
+
* Get all the matches.
|
|
40
|
+
*
|
|
41
|
+
* @name toArray
|
|
42
|
+
* @function
|
|
43
|
+
* @return {Array} The matched snippets.
|
|
44
|
+
*/
|
|
45
|
+
toArray() {
|
|
46
|
+
let res = [], c = null;
|
|
47
|
+
while ((c = this.next())) {
|
|
48
|
+
res.push(c);
|
|
49
|
+
}
|
|
50
|
+
return res;
|
|
51
|
+
},
|
|
52
|
+
/**
|
|
53
|
+
* reset
|
|
54
|
+
* Reset the index.
|
|
55
|
+
*
|
|
56
|
+
* @name reset
|
|
57
|
+
* @function
|
|
58
|
+
* @param {Number} i The new index (default: `0`).
|
|
59
|
+
* @return {Number} The new index.
|
|
60
|
+
*/
|
|
61
|
+
reset(i = 0) {
|
|
62
|
+
return (this.regex.lastIndex = i);
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=match-all.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"match-all.js","sourceRoot":"","sources":["../../../src/utils/match-all.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,MAAM,UAAU,QAAQ,CAAC,CAAS,EAAE,CAAS;IAC5C,OAAO;QACN,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,CAAC;QAER;;;;;;;WAOG;QACH,IAAI;YACH,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YACvB,IAAI,CAAC,EAAE,CAAC;gBACP,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACnC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;wBACV,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;oBACb,CAAC;gBACF,CAAC;YACF,CAAC;YACD,OAAO,IAAI,CAAC;QACb,CAAC;QAED;;;;;;;WAOG;QACH,OAAO;YACN,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpC,OAAO,CAAC,CAAC;QACV,CAAC;QAED;;;;;;;WAOG;QACH,OAAO;YACN,IAAI,GAAG,GAAG,EAAE,EACX,CAAC,GAAG,IAAI,CAAC;YAEV,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC1B,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACb,CAAC;YAED,OAAO,GAAG,CAAC;QACZ,CAAC;QAED;;;;;;;;WAQG;QACH,KAAK,CAAC,IAAY,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;QACnC,CAAC;KACD,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,30 +1,28 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rocketh/verifier",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.12",
|
|
4
4
|
"description": "submit verification proof to verifier services (blockchain explorer, sourcify...",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
8
8
|
"type": "module",
|
|
9
|
-
"
|
|
10
|
-
"
|
|
11
|
-
"types": "dist/index.d.ts",
|
|
9
|
+
"module": "dist/esm/index.js",
|
|
10
|
+
"types": "dist/esm/index.d.ts",
|
|
12
11
|
".": {
|
|
13
|
-
"require": {
|
|
14
|
-
"types": "./dist/index.d.ts",
|
|
15
|
-
"default": "./dist/index.cjs"
|
|
16
|
-
},
|
|
17
12
|
"import": {
|
|
18
|
-
"types": "./dist/index.d.ts",
|
|
19
|
-
"default": "./dist/index.
|
|
13
|
+
"types": "./dist/esm/index.d.ts",
|
|
14
|
+
"default": "./dist/esm/index.js"
|
|
20
15
|
}
|
|
21
16
|
},
|
|
22
17
|
"bin": {
|
|
23
|
-
"rocketh-verify": "dist/cli.
|
|
18
|
+
"rocketh-verify": "dist/cli.js"
|
|
24
19
|
},
|
|
20
|
+
"files": [
|
|
21
|
+
"dist"
|
|
22
|
+
],
|
|
25
23
|
"devDependencies": {
|
|
26
24
|
"@types/node": "^20.14.8",
|
|
27
|
-
"
|
|
25
|
+
"as-soon": "^0.0.11",
|
|
28
26
|
"rimraf": "^5.0.7",
|
|
29
27
|
"typescript": "^5.5.2"
|
|
30
28
|
},
|
|
@@ -36,10 +34,10 @@
|
|
|
36
34
|
"fs-extra": "^11.2.0",
|
|
37
35
|
"ldenv": "^0.3.10",
|
|
38
36
|
"qs": "^6.12.1",
|
|
39
|
-
"rocketh": "0.10.
|
|
37
|
+
"rocketh": "0.10.16"
|
|
40
38
|
},
|
|
41
39
|
"scripts": {
|
|
42
|
-
"build": "
|
|
43
|
-
"dev": "
|
|
40
|
+
"build": "tsc --project tsconfig.json",
|
|
41
|
+
"dev": "as-soon -w src pnpm build"
|
|
44
42
|
}
|
|
45
43
|
}
|
package/.prettierignore
DELETED
package/.prettierrc
DELETED
package/CHANGELOG.md
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
# @rocketh/verifier
|
|
2
|
-
|
|
3
|
-
## 0.10.10
|
|
4
|
-
|
|
5
|
-
### Patch Changes
|
|
6
|
-
|
|
7
|
-
- Updated dependencies
|
|
8
|
-
- rocketh@0.10.15
|
|
9
|
-
|
|
10
|
-
## 0.10.9
|
|
11
|
-
|
|
12
|
-
### Patch Changes
|
|
13
|
-
|
|
14
|
-
- latest dependencies
|
|
15
|
-
- Updated dependencies
|
|
16
|
-
- rocketh@0.10.14
|
|
17
|
-
|
|
18
|
-
## 0.10.8
|
|
19
|
-
|
|
20
|
-
### Patch Changes
|
|
21
|
-
|
|
22
|
-
- fix type + allow license specification for etherscan
|
|
23
|
-
|
|
24
|
-
## 0.10.7
|
|
25
|
-
|
|
26
|
-
### Patch Changes
|
|
27
|
-
|
|
28
|
-
- Updated dependencies
|
|
29
|
-
- rocketh@0.10.13
|
|
30
|
-
|
|
31
|
-
## 0.10.6
|
|
32
|
-
|
|
33
|
-
### Patch Changes
|
|
34
|
-
|
|
35
|
-
- Updated dependencies
|
|
36
|
-
- rocketh@0.10.12
|
|
37
|
-
|
|
38
|
-
## 0.10.5
|
|
39
|
-
|
|
40
|
-
### Patch Changes
|
|
41
|
-
|
|
42
|
-
- forgot to build
|
|
43
|
-
|
|
44
|
-
## 0.10.4
|
|
45
|
-
|
|
46
|
-
### Patch Changes
|
|
47
|
-
|
|
48
|
-
- chalk do not support cjs
|
|
49
|
-
|
|
50
|
-
## 0.10.3
|
|
51
|
-
|
|
52
|
-
### Patch Changes
|
|
53
|
-
|
|
54
|
-
- Updated dependencies
|
|
55
|
-
- rocketh@0.10.11
|
|
56
|
-
|
|
57
|
-
## 0.10.2
|
|
58
|
-
|
|
59
|
-
### Patch Changes
|
|
60
|
-
|
|
61
|
-
- Updated dependencies
|
|
62
|
-
- rocketh@0.10.10
|
|
63
|
-
|
|
64
|
-
## 0.10.1
|
|
65
|
-
|
|
66
|
-
### Patch Changes
|
|
67
|
-
|
|
68
|
-
- use pkgroll and @rocketh namespace
|
|
69
|
-
- Updated dependencies
|
|
70
|
-
- rocketh@0.10.9
|
package/dist/cli.cjs
DELETED
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
'use strict';
|
|
3
|
-
|
|
4
|
-
var ldenv = require('ldenv');
|
|
5
|
-
var rocketh = require('rocketh');
|
|
6
|
-
var index = require('./index.cjs');
|
|
7
|
-
var commander = require('commander');
|
|
8
|
-
var fs = require('fs-extra');
|
|
9
|
-
var path = require('path');
|
|
10
|
-
require('fs');
|
|
11
|
-
require('qs');
|
|
12
|
-
require('chalk');
|
|
13
|
-
|
|
14
|
-
var name = "@rocketh/verifier";
|
|
15
|
-
var version = "0.10.10";
|
|
16
|
-
var description = "submit verification proof to verifier services (blockchain explorer, sourcify...";
|
|
17
|
-
var publishConfig = {
|
|
18
|
-
access: "public"
|
|
19
|
-
};
|
|
20
|
-
var type = "module";
|
|
21
|
-
var main = "dist/index.cjs";
|
|
22
|
-
var module$1 = "dist/index.mjs";
|
|
23
|
-
var types = "dist/index.d.ts";
|
|
24
|
-
var bin = {
|
|
25
|
-
"rocketh-verify": "dist/cli.cjs"
|
|
26
|
-
};
|
|
27
|
-
var devDependencies = {
|
|
28
|
-
"@types/node": "^20.14.8",
|
|
29
|
-
pkgroll: "^2.1.1",
|
|
30
|
-
rimraf: "^5.0.7",
|
|
31
|
-
typescript: "^5.5.2"
|
|
32
|
-
};
|
|
33
|
-
var dependencies = {
|
|
34
|
-
"@types/fs-extra": "^11.0.4",
|
|
35
|
-
"@types/qs": "^6.9.15",
|
|
36
|
-
chalk: "5.3.0",
|
|
37
|
-
commander: "^12.1.0",
|
|
38
|
-
"fs-extra": "^11.2.0",
|
|
39
|
-
ldenv: "^0.3.10",
|
|
40
|
-
qs: "^6.12.1",
|
|
41
|
-
rocketh: "workspace:*"
|
|
42
|
-
};
|
|
43
|
-
var scripts = {
|
|
44
|
-
build: "rimraf dist && pkgroll --sourcemap",
|
|
45
|
-
dev: "pkgroll --watch"
|
|
46
|
-
};
|
|
47
|
-
var pkg = {
|
|
48
|
-
name: name,
|
|
49
|
-
version: version,
|
|
50
|
-
description: description,
|
|
51
|
-
publishConfig: publishConfig,
|
|
52
|
-
type: type,
|
|
53
|
-
main: main,
|
|
54
|
-
module: module$1,
|
|
55
|
-
types: types,
|
|
56
|
-
".": {
|
|
57
|
-
require: {
|
|
58
|
-
types: "./dist/index.d.ts",
|
|
59
|
-
"default": "./dist/index.cjs"
|
|
60
|
-
},
|
|
61
|
-
"import": {
|
|
62
|
-
types: "./dist/index.d.ts",
|
|
63
|
-
"default": "./dist/index.mjs"
|
|
64
|
-
}
|
|
65
|
-
},
|
|
66
|
-
bin: bin,
|
|
67
|
-
devDependencies: devDependencies,
|
|
68
|
-
dependencies: dependencies,
|
|
69
|
-
scripts: scripts
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
function exportMetadata(config, { out }) {
|
|
73
|
-
const { deployments, chainId } = rocketh.loadDeployments(config.deployments, config.network.name, false);
|
|
74
|
-
if (Object.keys(deployments).length === 0) {
|
|
75
|
-
console.log(`the network ${config.network.name} has zero deployments`);
|
|
76
|
-
process.exit();
|
|
77
|
-
}
|
|
78
|
-
if (!chainId) {
|
|
79
|
-
console.error(`the network ${config.network.name} has no chainId recorded`);
|
|
80
|
-
process.exit(1);
|
|
81
|
-
}
|
|
82
|
-
const folder = path.join(out, config.network.name);
|
|
83
|
-
fs.emptyDirSync(folder);
|
|
84
|
-
const deploymentNames = Object.keys(deployments);
|
|
85
|
-
for (const deploymentName of deploymentNames) {
|
|
86
|
-
const deployment = deployments[deploymentName];
|
|
87
|
-
if (deployment.metadata) {
|
|
88
|
-
fs.writeFileSync(
|
|
89
|
-
path.join(folder, `${deploymentName}_at_${deployment.address}.metadata.json`),
|
|
90
|
-
deployment.metadata
|
|
91
|
-
);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
ldenv.loadEnv();
|
|
97
|
-
const commandName = `rocketh-verify`;
|
|
98
|
-
const program = new commander.Command();
|
|
99
|
-
program.name(commandName).description("submit contract for verification").version(pkg.version).option("-d, --deployments <value>", "folder where deployments are saved").requiredOption("-n, --network <value>", "network context to use");
|
|
100
|
-
program.command("etherscan").description("submit contract for verification to etherscan").option("--endpoint <value>", "endpoint to connect to").option("--license <value>", "source code license").option("--force-license", "force the use of the license provided").action((options) => {
|
|
101
|
-
const programOptions = program.opts();
|
|
102
|
-
const resolvedConfig = rocketh.readAndResolveConfig({ ...programOptions, ignoreMissingRPC: true });
|
|
103
|
-
index.run(resolvedConfig, {
|
|
104
|
-
verifier: {
|
|
105
|
-
type: "etherscan",
|
|
106
|
-
apiKey: process.env["ETHERSCAN_API_KEY"],
|
|
107
|
-
endpoint: options.endpoint,
|
|
108
|
-
forceLicense: options.forceLicense,
|
|
109
|
-
license: options.license
|
|
110
|
-
}
|
|
111
|
-
});
|
|
112
|
-
});
|
|
113
|
-
program.command("sourcify").description("submit contract for verification to sourcify").option("--endpoint <value>", "endpoint to connect to").action((options) => {
|
|
114
|
-
const programOptions = program.opts();
|
|
115
|
-
const resolvedConfig = rocketh.readAndResolveConfig({ ...programOptions, ignoreMissingRPC: true });
|
|
116
|
-
index.run(resolvedConfig, { verifier: { type: "sourcify", endpoint: options.endpoint } });
|
|
117
|
-
});
|
|
118
|
-
program.command("blockscout").description("submit contract for verification to blockscout").option("--endpoint <value>", "endpoint to connect to").action((options) => {
|
|
119
|
-
const programOptions = program.opts();
|
|
120
|
-
const resolvedConfig = rocketh.readAndResolveConfig({ ...programOptions, ignoreMissingRPC: true });
|
|
121
|
-
index.run(resolvedConfig, { verifier: { type: "blockscout", endpoint: options.endpoint } });
|
|
122
|
-
});
|
|
123
|
-
program.command("metadata").description("export metadata").option("--out <value>", "folder to write metadata into").action((options) => {
|
|
124
|
-
const programOptions = program.opts();
|
|
125
|
-
const resolvedConfig = rocketh.readAndResolveConfig({ ...programOptions, ignoreMissingRPC: true });
|
|
126
|
-
exportMetadata(resolvedConfig, { out: options.out || "_metadata" });
|
|
127
|
-
});
|
|
128
|
-
program.parse(process.argv);
|
|
129
|
-
//# sourceMappingURL=cli.cjs.map
|
package/dist/cli.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.cjs","sources":["../src/metadata.ts","../src/cli.ts"],"sourcesContent":["import {ResolvedConfig, loadDeployments} from 'rocketh';\nimport fs from 'fs-extra';\nimport path from 'path';\n\nexport function exportMetadata(config: ResolvedConfig, {out}: {out: string}) {\n\tconst {deployments, chainId} = loadDeployments(config.deployments, config.network.name, false);\n\n\tif (Object.keys(deployments).length === 0) {\n\t\tconsole.log(`the network ${config.network.name} has zero deployments`);\n\t\tprocess.exit();\n\t}\n\n\tif (!chainId) {\n\t\tconsole.error(`the network ${config.network.name} has no chainId recorded`);\n\t\tprocess.exit(1);\n\t}\n\n\tconst folder = path.join(out, config.network.name);\n\tfs.emptyDirSync(folder);\n\tconst deploymentNames = Object.keys(deployments);\n\tfor (const deploymentName of deploymentNames) {\n\t\tconst deployment = deployments[deploymentName];\n\t\tif (deployment.metadata) {\n\t\t\tfs.writeFileSync(\n\t\t\t\tpath.join(folder, `${deploymentName}_at_${deployment.address}.metadata.json`),\n\t\t\t\tdeployment.metadata\n\t\t\t);\n\t\t}\n\t}\n}\n","#! /usr/bin/env node\nimport {loadEnv} from 'ldenv';\nimport {readAndResolveConfig} from 'rocketh';\nimport {run} from '.';\nimport {Command, Option} from 'commander';\nimport pkg from '../package.json';\nimport {ConfigOptions} from 'rocketh';\nimport {exportMetadata} from './metadata';\nloadEnv();\n\nconst commandName = `rocketh-verify`;\n\nconst program = new Command();\nprogram\n\t.name(commandName)\n\t.description('submit contract for verification')\n\t.version(pkg.version)\n\n\t.option('-d, --deployments <value>', 'folder where deployments are saved')\n\t.requiredOption('-n, --network <value>', 'network context to use');\n\nprogram\n\t.command('etherscan')\n\t.description('submit contract for verification to etherscan')\n\t.option('--endpoint <value>', 'endpoint to connect to')\n\t.option('--license <value>', 'source code license')\n\t.option('--force-license', 'force the use of the license provided')\n\t.action((options: {endpoint?: string; forceLicense: boolean; license: string}) => {\n\t\tconst programOptions = program.opts() as ConfigOptions;\n\t\tconst resolvedConfig = readAndResolveConfig({...programOptions, ignoreMissingRPC: true});\n\t\trun(resolvedConfig, {\n\t\t\tverifier: {\n\t\t\t\ttype: 'etherscan',\n\t\t\t\tapiKey: process.env['ETHERSCAN_API_KEY'],\n\t\t\t\tendpoint: options.endpoint,\n\t\t\t\tforceLicense: options.forceLicense,\n\t\t\t\tlicense: options.license,\n\t\t\t},\n\t\t});\n\t});\n\nprogram\n\t.command('sourcify')\n\t.description('submit contract for verification to sourcify')\n\t.option('--endpoint <value>', 'endpoint to connect to')\n\t.action((options: {endpoint?: string}) => {\n\t\tconst programOptions = program.opts() as ConfigOptions;\n\t\tconst resolvedConfig = readAndResolveConfig({...programOptions, ignoreMissingRPC: true});\n\t\trun(resolvedConfig, {verifier: {type: 'sourcify', endpoint: options.endpoint}});\n\t});\n\nprogram\n\t.command('blockscout')\n\t.description('submit contract for verification to blockscout')\n\t.option('--endpoint <value>', 'endpoint to connect to')\n\t// .option('--api <value>', 'api version (default to v2)')\n\t.action((options: {endpoint?: string}) => {\n\t\tconst programOptions = program.opts() as ConfigOptions;\n\t\tconst resolvedConfig = readAndResolveConfig({...programOptions, ignoreMissingRPC: true});\n\t\trun(resolvedConfig, {verifier: {type: 'blockscout', endpoint: options.endpoint}});\n\t});\n\nprogram\n\t.command('metadata')\n\t.description('export metadata')\n\t.option('--out <value>', 'folder to write metadata into')\n\t.action((options: {out?: string}) => {\n\t\tconst programOptions = program.opts() as ConfigOptions;\n\t\tconst resolvedConfig = readAndResolveConfig({...programOptions, ignoreMissingRPC: true});\n\t\texportMetadata(resolvedConfig, {out: options.out || '_metadata'});\n\t});\n\nprogram.parse(process.argv);\n"],"names":["loadDeployments","loadEnv","Command","readAndResolveConfig","run"],"mappings":"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A,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACrC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,wBAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,mBAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,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"}
|