@clawnch/clawncher-sdk 2.0.0

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.
@@ -0,0 +1,244 @@
1
+ /**
2
+ * Clawncher SDK Types
3
+ */
4
+ export interface Token {
5
+ symbol: string;
6
+ name: string;
7
+ address: string;
8
+ agent: string;
9
+ launchedAt: string;
10
+ source: 'moltbook' | 'moltx' | '4claw';
11
+ description?: string;
12
+ deployerWallet?: string;
13
+ websiteUrl?: string;
14
+ twitterUrl?: string;
15
+ }
16
+ export interface TokensResponse {
17
+ tokens: Token[];
18
+ }
19
+ export interface Launch {
20
+ id: string;
21
+ symbol: string;
22
+ name: string;
23
+ description: string;
24
+ image: string;
25
+ agentName: string;
26
+ agentWallet: string;
27
+ source: 'moltbook' | 'moltx' | '4claw';
28
+ postId: string;
29
+ postUrl: string;
30
+ contractAddress: string;
31
+ txHash: string;
32
+ chainId: number;
33
+ clawnchUrl: string;
34
+ launchedAt: string;
35
+ agentRewardBps: number;
36
+ platformRewardBps: number;
37
+ }
38
+ export interface LaunchFilters {
39
+ limit?: number;
40
+ offset?: number;
41
+ agent?: string;
42
+ source?: 'moltbook' | 'moltx' | '4claw';
43
+ address?: string;
44
+ }
45
+ export interface LaunchesResponse {
46
+ success: boolean;
47
+ launches: Launch[];
48
+ pagination: {
49
+ limit: number;
50
+ offset: number;
51
+ total: number;
52
+ hasMore: boolean;
53
+ };
54
+ }
55
+ export interface Stats {
56
+ totalTokens: number;
57
+ totalVolume: string;
58
+ clawnchPrice: string;
59
+ clawnchMarketCap: string;
60
+ }
61
+ export interface PreviewRequest {
62
+ content: string;
63
+ }
64
+ export interface PreviewResponse {
65
+ valid: boolean;
66
+ parsed?: {
67
+ name: string;
68
+ symbol: string;
69
+ wallet: string;
70
+ description: string;
71
+ image: string;
72
+ website?: string;
73
+ twitter?: string;
74
+ moltenIntents?: string[];
75
+ feeSplit?: {
76
+ collaborators: Array<{
77
+ wallet: string;
78
+ share: number;
79
+ name?: string;
80
+ role?: string;
81
+ }>;
82
+ moltenMatchId?: string;
83
+ };
84
+ };
85
+ errors?: string[];
86
+ warnings?: string[];
87
+ checks: {
88
+ syntax: boolean;
89
+ fields: boolean;
90
+ tickerAvailable: boolean;
91
+ imageValid: boolean | null;
92
+ };
93
+ }
94
+ export interface FeesAvailable {
95
+ wallet: string;
96
+ weth: {
97
+ available: string;
98
+ formatted: string;
99
+ };
100
+ tokens: Array<{
101
+ address: string;
102
+ symbol: string;
103
+ available: string;
104
+ formatted: string;
105
+ }>;
106
+ tokensChecked: number;
107
+ }
108
+ export interface ClaimRequest {
109
+ token_address: string;
110
+ moltbook_key?: string;
111
+ }
112
+ export interface ClaimResult {
113
+ success: boolean;
114
+ wallet: string;
115
+ token_address: string;
116
+ results: {
117
+ collectRewards?: {
118
+ success: boolean;
119
+ txHash?: string;
120
+ error?: string;
121
+ };
122
+ weth?: {
123
+ success: boolean;
124
+ txHash?: string;
125
+ amount?: string;
126
+ error?: string;
127
+ };
128
+ token?: {
129
+ success: boolean;
130
+ txHash?: string;
131
+ amount?: string;
132
+ error?: string;
133
+ };
134
+ };
135
+ }
136
+ export interface TokenAnalytics {
137
+ address: string;
138
+ symbol: string;
139
+ name: string;
140
+ agent: string;
141
+ source: string;
142
+ launchedAt: string;
143
+ daysSinceLaunch: number;
144
+ deployerWallet: string | null;
145
+ description: string | null;
146
+ links: {
147
+ website: string | null;
148
+ twitter: string | null;
149
+ clawnch: string;
150
+ dexscreener: string;
151
+ basescan: string;
152
+ };
153
+ price: {
154
+ usd: string | null;
155
+ change24h: number | null;
156
+ } | null;
157
+ marketCap: string | null;
158
+ volume24h: string | null;
159
+ liquidity: string | null;
160
+ fees: {
161
+ wethAvailable: string;
162
+ tokenAvailable: string;
163
+ claimUrl: string;
164
+ } | null;
165
+ }
166
+ export interface AgentAnalytics {
167
+ name: string;
168
+ totalLaunches: number;
169
+ totalMarketCap: string;
170
+ totalMarketCapRaw: string;
171
+ totalVolume24h: string;
172
+ totalVolume24hRaw: string;
173
+ firstLaunch: string;
174
+ lastLaunch: string;
175
+ bestToken: {
176
+ symbol: string;
177
+ address: string;
178
+ marketCap: string;
179
+ } | null;
180
+ tokens: Array<{
181
+ symbol: string;
182
+ name: string;
183
+ address: string;
184
+ source: string;
185
+ launchedAt: string;
186
+ priceUSD: string | null;
187
+ marketCap: string | null;
188
+ marketCapFormatted: string;
189
+ volume24h: string | null;
190
+ volume24hFormatted: string;
191
+ change24h: number | null;
192
+ links: {
193
+ clawnch: string;
194
+ dexscreener: string;
195
+ };
196
+ }>;
197
+ }
198
+ export interface LeaderboardEntry {
199
+ rank: number;
200
+ name: string;
201
+ launches: number;
202
+ totalMarketCap: string;
203
+ totalMarketCapRaw: string;
204
+ totalVolume24h: string;
205
+ totalVolume24hRaw: string;
206
+ profileUrl: string;
207
+ }
208
+ export interface Leaderboard {
209
+ sortBy: string;
210
+ limit: number;
211
+ totalAgents: number;
212
+ agents: LeaderboardEntry[];
213
+ }
214
+ export interface UploadRequest {
215
+ image: string;
216
+ name?: string;
217
+ }
218
+ export interface UploadResponse {
219
+ success: boolean;
220
+ url: string;
221
+ }
222
+ export interface ApiError {
223
+ error: string;
224
+ errors?: string[];
225
+ }
226
+ export interface TokenFee {
227
+ address: string;
228
+ symbol: string;
229
+ weth_available: string;
230
+ token_available: string;
231
+ }
232
+ export interface AgentToken {
233
+ symbol: string;
234
+ market_cap_usd: number;
235
+ volume_usd: number;
236
+ fees_weth: string;
237
+ }
238
+ export interface AgentEntry {
239
+ name: string;
240
+ total_launches: number;
241
+ total_market_cap_usd: number;
242
+ total_volume_usd: number;
243
+ }
244
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Clawncher SDK Types
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Vanity Address Mining for Clawncher Tokens
3
+ *
4
+ * Mines CREATE2 salts to produce token addresses with desired prefixes (e.g., 0xccc).
5
+ *
6
+ * CREATE2 address formula:
7
+ * address = keccak256(0xff ++ factory ++ salt ++ initCodeHash)[12:]
8
+ *
9
+ * Where salt = keccak256(abi.encode(tokenAdmin, userSalt))
10
+ */
11
+ import { type Address, type Hex } from 'viem';
12
+ /**
13
+ * Configuration for vanity mining
14
+ */
15
+ export interface VanityMineConfig {
16
+ /** Factory address that deploys tokens */
17
+ factory: Address;
18
+ /** Token admin address (part of salt computation) */
19
+ tokenAdmin: Address;
20
+ /** Init code hash of ClawnchToken contract */
21
+ initCodeHash: Hex;
22
+ /** Desired prefix (e.g., '0xccc' or 'ccc') */
23
+ prefix: string;
24
+ /** Maximum attempts before giving up (default: 10_000_000) */
25
+ maxAttempts?: number;
26
+ /** Callback for progress updates */
27
+ onProgress?: (attempts: number, rate: number) => void;
28
+ /** Progress update interval in attempts (default: 100_000) */
29
+ progressInterval?: number;
30
+ }
31
+ /**
32
+ * Result of vanity mining
33
+ */
34
+ export interface VanityMineResult {
35
+ /** The mined salt to use in TokenConfig */
36
+ salt: Hex;
37
+ /** The resulting token address */
38
+ address: Address;
39
+ /** Number of attempts taken */
40
+ attempts: number;
41
+ /** Time taken in milliseconds */
42
+ timeMs: number;
43
+ }
44
+ /**
45
+ * Compute the CREATE2 address for a Clawncher token
46
+ *
47
+ * @param factory - Factory address
48
+ * @param tokenAdmin - Token admin address
49
+ * @param userSalt - User-provided salt (bytes32)
50
+ * @param initCodeHash - Hash of the token init code
51
+ * @returns The computed token address
52
+ */
53
+ export declare function computeTokenAddress(factory: Address, tokenAdmin: Address, userSalt: Hex, initCodeHash: Hex): Address;
54
+ /**
55
+ * Mine a CREATE2 salt that produces a token address with the desired prefix
56
+ *
57
+ * @example
58
+ * ```typescript
59
+ * const result = await mineVanityAddress({
60
+ * factory: '0xe31CD9ED1fF67ba51B337C17C2f7da57f7be0166',
61
+ * tokenAdmin: '0x1234...',
62
+ * initCodeHash: '0xabcd...',
63
+ * prefix: '0xccc',
64
+ * onProgress: (attempts, rate) => console.log(`${attempts} attempts, ${rate}/sec`),
65
+ * });
66
+ *
67
+ * console.log(`Found salt: ${result.salt}`);
68
+ * console.log(`Token address: ${result.address}`);
69
+ * ```
70
+ */
71
+ export declare function mineVanityAddress(config: VanityMineConfig): Promise<VanityMineResult>;
72
+ /**
73
+ * Estimate the number of attempts needed for a given prefix length
74
+ *
75
+ * @param prefixLength - Number of hex characters in the prefix (after 0x)
76
+ * @returns Expected number of attempts (average case)
77
+ */
78
+ export declare function estimateAttempts(prefixLength: number): number;
79
+ /**
80
+ * Estimate the time to mine a vanity address
81
+ *
82
+ * @param prefixLength - Number of hex characters in the prefix
83
+ * @param hashesPerSecond - Estimated hash rate (default: 50,000)
84
+ * @returns Estimated time in seconds
85
+ */
86
+ export declare function estimateTime(prefixLength: number, hashesPerSecond?: number): number;
87
+ /**
88
+ * ClawnchToken creation bytecode (without constructor args)
89
+ *
90
+ * This is the compiled bytecode from the Solidity contract.
91
+ * Constructor args are appended to this to form the full init code.
92
+ */
93
+ export declare const CLAWNCH_TOKEN_BYTECODE: Hex;
94
+ /**
95
+ * Compute the init code hash for a ClawnchToken deployment
96
+ */
97
+ export declare function computeInitCodeHash(constructorArgs: {
98
+ name: string;
99
+ symbol: string;
100
+ maxSupply: bigint;
101
+ admin: Address;
102
+ image: string;
103
+ metadata: string;
104
+ context: string;
105
+ initialSupplyChainId: bigint;
106
+ }): Hex;
107
+ /**
108
+ * Default vanity prefix for Clawncher tokens
109
+ */
110
+ export declare const DEFAULT_VANITY_PREFIX = "ccc";
111
+ /**
112
+ * Quick helper to mine a 0xccc address
113
+ */
114
+ export declare function mineCccAddress(factory: Address, tokenAdmin: Address, initCodeHash: Hex, onProgress?: (attempts: number, rate: number) => void): Promise<VanityMineResult>;
115
+ //# sourceMappingURL=vanity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vanity.d.ts","sourceRoot":"","sources":["../src/vanity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,GAAG,EAOT,MAAM,MAAM,CAAC;AAEd;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0CAA0C;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,qDAAqD;IACrD,UAAU,EAAE,OAAO,CAAC;IACpB,8CAA8C;IAC9C,YAAY,EAAE,GAAG,CAAC;IAClB,8CAA8C;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtD,8DAA8D;IAC9D,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2CAA2C;IAC3C,IAAI,EAAE,GAAG,CAAC;IACV,kCAAkC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,OAAO,EACnB,QAAQ,EAAE,GAAG,EACb,YAAY,EAAE,GAAG,GAChB,OAAO,CAoBT;AAmBD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAsD3F;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAG7D;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,eAAe,SAAS,GAAG,MAAM,CAEnF;AAED;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,EAAE,GAAin3B,CAAC;AAEvp3B;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,eAAe,EAAE;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB,EAAE,MAAM,CAAC;CAC9B,GACA,GAAG,CAiBL;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAE3C;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,OAAO,EACnB,YAAY,EAAE,GAAG,EACjB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,GACpD,OAAO,CAAC,gBAAgB,CAAC,CAQ3B"}
package/dist/vanity.js ADDED
@@ -0,0 +1,166 @@
1
+ /**
2
+ * Vanity Address Mining for Clawncher Tokens
3
+ *
4
+ * Mines CREATE2 salts to produce token addresses with desired prefixes (e.g., 0xccc).
5
+ *
6
+ * CREATE2 address formula:
7
+ * address = keccak256(0xff ++ factory ++ salt ++ initCodeHash)[12:]
8
+ *
9
+ * Where salt = keccak256(abi.encode(tokenAdmin, userSalt))
10
+ */
11
+ import { keccak256, encodeAbiParameters, parseAbiParameters, concat, toHex, pad, } from 'viem';
12
+ /**
13
+ * Compute the CREATE2 address for a Clawncher token
14
+ *
15
+ * @param factory - Factory address
16
+ * @param tokenAdmin - Token admin address
17
+ * @param userSalt - User-provided salt (bytes32)
18
+ * @param initCodeHash - Hash of the token init code
19
+ * @returns The computed token address
20
+ */
21
+ export function computeTokenAddress(factory, tokenAdmin, userSalt, initCodeHash) {
22
+ // Compute the actual salt: keccak256(abi.encode(tokenAdmin, userSalt))
23
+ const actualSalt = keccak256(encodeAbiParameters(parseAbiParameters('address, bytes32'), [tokenAdmin, userSalt]));
24
+ // CREATE2: keccak256(0xff ++ factory ++ salt ++ initCodeHash)[12:]
25
+ const data = concat([
26
+ '0xff',
27
+ factory,
28
+ actualSalt,
29
+ initCodeHash,
30
+ ]);
31
+ const hash = keccak256(data);
32
+ // Take last 20 bytes (40 hex chars) as address
33
+ return `0x${hash.slice(-40)}`;
34
+ }
35
+ /**
36
+ * Check if an address matches the desired prefix
37
+ */
38
+ function matchesPrefix(address, prefix) {
39
+ // Normalize prefix (remove 0x if present, lowercase)
40
+ const normalizedPrefix = prefix.toLowerCase().replace(/^0x/, '');
41
+ const normalizedAddress = address.toLowerCase().slice(2); // Remove 0x
42
+ return normalizedAddress.startsWith(normalizedPrefix);
43
+ }
44
+ /**
45
+ * Convert a number to a bytes32 hex string
46
+ */
47
+ function numberToBytes32(n) {
48
+ return pad(toHex(n), { size: 32 });
49
+ }
50
+ /**
51
+ * Mine a CREATE2 salt that produces a token address with the desired prefix
52
+ *
53
+ * @example
54
+ * ```typescript
55
+ * const result = await mineVanityAddress({
56
+ * factory: '0xe31CD9ED1fF67ba51B337C17C2f7da57f7be0166',
57
+ * tokenAdmin: '0x1234...',
58
+ * initCodeHash: '0xabcd...',
59
+ * prefix: '0xccc',
60
+ * onProgress: (attempts, rate) => console.log(`${attempts} attempts, ${rate}/sec`),
61
+ * });
62
+ *
63
+ * console.log(`Found salt: ${result.salt}`);
64
+ * console.log(`Token address: ${result.address}`);
65
+ * ```
66
+ */
67
+ export async function mineVanityAddress(config) {
68
+ const { factory, tokenAdmin, initCodeHash, prefix, maxAttempts = 10_000_000, onProgress, progressInterval = 100_000, } = config;
69
+ const startTime = Date.now();
70
+ let attempts = 0;
71
+ let lastProgressTime = startTime;
72
+ let lastProgressAttempts = 0;
73
+ // Start with a random offset to avoid collisions if mining in parallel
74
+ let nonce = BigInt(Math.floor(Math.random() * Number.MAX_SAFE_INTEGER));
75
+ while (attempts < maxAttempts) {
76
+ const userSalt = numberToBytes32(nonce);
77
+ const address = computeTokenAddress(factory, tokenAdmin, userSalt, initCodeHash);
78
+ if (matchesPrefix(address, prefix)) {
79
+ const timeMs = Date.now() - startTime;
80
+ return {
81
+ salt: userSalt,
82
+ address,
83
+ attempts: attempts + 1,
84
+ timeMs,
85
+ };
86
+ }
87
+ attempts++;
88
+ nonce++;
89
+ // Progress callback
90
+ if (onProgress && attempts % progressInterval === 0) {
91
+ const now = Date.now();
92
+ const elapsed = now - lastProgressTime;
93
+ const attemptsDelta = attempts - lastProgressAttempts;
94
+ const rate = Math.round(attemptsDelta / (elapsed / 1000));
95
+ onProgress(attempts, rate);
96
+ lastProgressTime = now;
97
+ lastProgressAttempts = attempts;
98
+ }
99
+ // Yield to event loop periodically to prevent blocking
100
+ if (attempts % 10_000 === 0) {
101
+ await new Promise(resolve => setTimeout(resolve, 0));
102
+ }
103
+ }
104
+ throw new Error(`Could not find vanity address with prefix "${prefix}" after ${maxAttempts} attempts`);
105
+ }
106
+ /**
107
+ * Estimate the number of attempts needed for a given prefix length
108
+ *
109
+ * @param prefixLength - Number of hex characters in the prefix (after 0x)
110
+ * @returns Expected number of attempts (average case)
111
+ */
112
+ export function estimateAttempts(prefixLength) {
113
+ // Each hex char = 4 bits, so probability of match = 1/16^prefixLength
114
+ return Math.pow(16, prefixLength);
115
+ }
116
+ /**
117
+ * Estimate the time to mine a vanity address
118
+ *
119
+ * @param prefixLength - Number of hex characters in the prefix
120
+ * @param hashesPerSecond - Estimated hash rate (default: 50,000)
121
+ * @returns Estimated time in seconds
122
+ */
123
+ export function estimateTime(prefixLength, hashesPerSecond = 50_000) {
124
+ return estimateAttempts(prefixLength) / hashesPerSecond;
125
+ }
126
+ /**
127
+ * ClawnchToken creation bytecode (without constructor args)
128
+ *
129
+ * This is the compiled bytecode from the Solidity contract.
130
+ * Constructor args are appended to this to form the full init code.
131
+ */
132
+ export const CLAWNCH_TOKEN_BYTECODE = '0x6101806040523461008d57610024610015610147565b96959095949194939293610658565b6040516126b0908161103b823960805181611b60015260a05181611c1d015260c05181611b2a015260e05181611baf01526101005181611bd501526101205181610a2101526101405181610a4a0152610160518181816105b301528181610fa701526114f90152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b601f909101601f19168101906001600160401b038211908210176100c857604052565b610091565b604051906100dc6040836100a5565b565b81601f8201121561008d578051906001600160401b0382116100c85760405192610112601f8401601f1916602001856100a5565b8284526020838301011161008d57815f9260208093018386015e8301015290565b51906001600160a01b038216820361008d57565b61372b803803806040519261015c82856100a5565b83398101916101008284031261008d5781516001600160401b03811161008d57836101889184016100de565b60208301519091906001600160401b03811161008d57846101aa9185016100de565b936040840151936101bd60608201610133565b60808201519094906001600160401b03811161008d57836101df9184016100de565b60a08301519094906001600160401b03811161008d57846102019185016100de565b60c08401519094906001600160401b03811161008d5760e0916102259186016100de565b930151919796959493929190565b90600182811c92168015610261575b602083101461024d57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610242565b601f8111610277575050565b60035f5260205f20906020601f840160051c830193106102b1575b601f0160051c01905b8181106102a6575050565b5f815560010161029b565b9091508190610292565b601f82116102c857505050565b5f5260205f20906020601f840160051c83019310610300575b601f0160051c01905b8181106102f5575050565b5f81556001016102ea565b90915081906102e1565b8160011b915f199060031b1c19161790565b80519091906001600160401b0381116100c8576103458161033e600454610233565b60046102bb565b602092601f821160011461037857610368929382915f9261036d575b505061030a565b600455565b015190505f80610361565b60045f52601f198216937f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f5b8681106103dc57508360019596106103c4575b505050811b01600455565b01515f1960f88460031b161c191690555f80806103b9565b919260206001819286850151815501940192016103a6565b80519091906001600160401b0381116100c85761041d81610416600e54610233565b600e6102bb565b602092601f82116001146104445761043f929382915f9261036d57505061030a565b600e55565b600e5f52601f198216937fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd915f5b8681106104a85750836001959610610490575b505050811b01600e55565b01515f1960f88460031b161c191690555f8080610485565b91926020600181928685015181550194019201610472565b80519091906001600160401b0381116100c8576104e9816104e2600c54610233565b600c6102bb565b602092601f82116001146105105761050b929382915f9261036d57505061030a565b600c55565b600c5f52601f198216937fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7915f5b868110610574575083600195961061055c575b505050811b01600c55565b01515f1960f88460031b161c191690555f8080610551565b9192602060018192868501518155019401920161053e565b80519091906001600160401b0381116100c8576105b5816105ae600d54610233565b600d6102bb565b602092601f82116001146105dc576105d7929382915f9261036d57505061030a565b600d55565b600d5f52601f198216937fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5915f5b8681106106405750836001959610610628575b505050811b01600d55565b01515f1960f88460031b161c191690555f808061061d565b9192602060018192868501518155019401920161060a565b969594939291966040519061066e6040836100a5565b60018252603160f81b6020830190815281519093906001600160401b0381116100c8576106a5816106a0600354610233565b61026b565b6020601f82116001146107765793610749936106e46107589b9a98946106dc8561074e9a966107539d9a5f9161076b575b5061030a565b60035561031c565b6106ed816108b9565b610120526106fa826109a1565b610140526020815191012060e052519020610100524660a05261071b610a86565b6080523060c052610160819052600b80546001600160a01b0319166001600160a01b03909216919091179055565b6103f4565b6104c0565b61058c565b46146107615750565b6100dc903361080d565b90508501515f6106d6565b60035f52601f198216907fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f5b8181106107f557506107589b9a98946001856107539c9995610749999561074e9c986106e496106107dd575b5050811b0160035561031c565b8601515f1960f88460031b161c191690555f806107d0565b9192602060018192868a0151815501940192016107a4565b91906001600160a01b03831680156108a6576002548281018091116108a1576002555f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9190a3600254926001600160d01b0380851161088a57506100dc929350610b7c565b630e58ae9360e11b5f52600485905260245260445ffd5b610b68565b63ec442f0560e01b5f525f60045260245ffd5b908151602081105f146108d45750906108d190610ae4565b90565b6001600160401b0381116100c8576108f8816108f1600554610233565b60056102bb565b602092601f82116001146109225761091a929382915f9261036d57505061030a565b60055560ff90565b60055f52601f198216937f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0915f5b8681106109895750836001959610610971575b505050811b0160055560ff90565b01515f1960f88460031b161c191690555f8080610963565b91926020600181928685015181550194019201610950565b908151602081105f146109b95750906108d190610ae4565b6001600160401b0381116100c8576109dd816109d6600654610233565b60066102bb565b602092601f8211600114610a07576109ff929382915f9261036d57505061030a565b60065560ff90565b60065f52601f198216937ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f915f5b868110610a6e5750836001959610610a56575b505050811b0160065560ff90565b01515f1960f88460031b161c191690555f8080610a48565b91926020600181928685015181550194019201610a35565b60e051610100516040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a08152610ade60c0826100a5565b51902090565b601f815111610b0f576020815191015160208210610b00571790565b5f198260200360031b1b161790565b604460209160405192839163305a27a960e01b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fd5b6001600160a01b03165f90815260096020526040902090565b634e487b7160e01b5f52601160045260245ffd5b90610b8681610c7b565b9165ffffffffffff4311610c6357600a5480610c2d5750610bc0610bb06100dc945f5b6001610fde565b65ffffffffffff4316600a610f1c565b50506001600160a01b03168015610c15575b60086020527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c7545f9182526040909120546001600160a01b039081169116610daa565b610c26610c2183610c7b565b610cac565b5050610bd2565b92835f198101116108a157600a5f525f5160206136eb5f395f51905f52909301546100dc93610bc091610bb0919060301c610ba9565b6306dfcc6560e41b5f5260306004524360245260445ffd5b6001600160d01b038111610c95576001600160d01b031690565b6306dfcc6560e41b5f5260d060045260245260445ffd5b65ffffffffffff4311610c6357600a5480610cd65750610bb0610cd2915f5b6002610fde565b9091565b805f198101116108a157600a5f525f5160206136eb5f395f51905f520154610cd291610bb09160301c610ccb565b65ffffffffffff4311610c6357805480610d385750610d28610cd2925f6002610fde565b9065ffffffffffff431690610f1c565b805f198101116108a1575f82815260209020015f190154610cd292610d289160301c610ccb565b65ffffffffffff4311610c6357805480610d835750610d28610cd2925f6001610fde565b805f198101116108a1575f82815260209020015f190154610cd292610d289160301c610ba9565b6001600160a01b03808316939291908116908185141580610e7f575b610dd2575b5050505050565b81610e34575b505082610de7575b8080610dcb565b5f51602061370b5f395f51905f5291610e0b610e05610e1193610b4f565b91610c7b565b90610d5f565b604080516001600160d01b039384168152919092166020820152a25f8080610de0565b610e5d610e4e5f51602061370b5f395f51905f5292610b4f565b610e5786610c7b565b90610d04565b604080516001600160d01b039384168152919092166020820152a25f80610dd8565b50831515610dc6565b5f198101919082116108a157565b9065ffffffffffff82549181199060301b169116179055565b908154680100000000000000008110156100c85760018101808455811015610f08576100dc925f5260205f20019065ffffffffffff81511665ffffffffffff19835416178255602060018060d01b039101511690610e96565b634e487b7160e01b5f52603260045260245ffd5b80549293928015610fb457610f33610f3e91610e88565b825f5260205f200190565b8054603081901c9365ffffffffffff91821692918116808411610fa557879303610f715750610f6d9250610e96565b9190565b915050610f6d91610f91610f836100cd565b65ffffffffffff9093168352565b6001600160d01b0386166020830152610eaf565b632520601d60e01b5f5260045ffd5b5090610fd991610fc5610f836100cd565b6001600160d01b0385166020830152610eaf565b5f9190565b919091806001146110205760021461100457634e487b7160e01b5f52605160045260245ffd5b6001600160d01b03908116918116919091039081116108a15790565b506001600160d01b03918216908216019081116108a1579056fe60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a71461028457806306fdde031461027f578063095ea7b31461027a57806318160ddd1461027557806318bf5077146102705780631c7b2ff41461026b57806323b872dd146102665780632b8c49e314610261578063313ce5671461025c5780633644e51514610257578063392f37e9146102525780633a46b1a81461024d57806342966c68146102485780634bf5d7e914610243578063587cde1e1461023e5780635c19a95c146102395780636fcfff451461023457806370a082311461022f57806379cc67901461022a5780637ecebe001461022557806380007e831461022057806384b0196e1461021b5780638e539e8c14610216578063918b5be11461021157806391ddadf41461020c57806395d89b41146102075780639ab24eb014610202578063a9059cbb146101fd578063aba83150146101f8578063b974b0a3146101f3578063c3cda520146101ee578063d0496d6a146101e9578063d505accf146101e4578063dd62ed3e146101df578063e2f273bd146101da578063eb3d68e7146101d5578063f1127ed8146101d0578063f851a440146101cb5763fc735e99146101c6575f80fd5b6114e7565b6114bf565b61140d565b6112fd565b61128c565b611241565b611136565b611113565b61101b565b610f33565b610f10565b610eea565b610ea3565b610dfe565b610dd3565b610ca3565b610b06565b610a09565b6109e7565b6109af565b61097f565b61095c565b6108fa565b6108d8565b610898565b610808565b6107e9565b610704565b6106c6565b6106a4565b610689565b61061a565b6105e2565b61059e565b610492565b610475565b610444565b61033e565b346103025760203660031901126103025760043563ffffffff60e01b811680910361030257630cccc66560e21b81149081156102f1575b81156102e0575b81156102d7575b506040519015158152602090f35b9050155f6102c9565b6301ffc9a760e01b811491506102c2565b6336372b0760e01b811491506102bb565b5f80fd5b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b90602061033b928181520190610306565b90565b34610302575f366003190112610302576040515f60035461035e81611596565b80845290600181169081156103f45750600114610396575b6103928361038681850382610bf9565b6040519182918261032a565b0390f35b60035f9081527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b939250905b8082106103da57509091508101602001610386610376565b9192600181602092548385880101520191019092916103c2565b60ff191660208086019190915291151560051b840190910191506103869050610376565b600435906001600160a01b038216820361030257565b602435906001600160a01b038216820361030257565b346103025760403660031901126103025761046a610460610418565b6024359033611d92565b602060405160018152f35b34610302575f366003190112610302576020600254604051908152f35b34610302576040366003190112610302576104ab610418565b602435906027602160991b01193301610590576001600160a01b03811690811561057d576104e36104de84600254611c98565b600255565b6104ec816117ce565b838154019055815f5f5160206126505f395f51905f526040518061051588829190602083019252565b0390a36002546001600160d01b039081811161056757505082610537916123b5565b60405191825233917fde22baff038e3a3e08407cbdf617deed74e869a7ba517df611e33131c6e6ea0490602090a3005b630e58ae9360e11b5f5260045260245260445b5ffd5b63ec442f0560e01b5f525f60045260245ffd5b6282b42960e81b5f5260045ffd5b34610302575f366003190112610302576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346103025760603660031901126103025761046a6105fe610418565b61060661042e565b604435916106158333836118fe565b6119b6565b3461030257604036600319011261030257610633610418565b6024356027602160991b011933016105905761064f8183611a52565b60405190815233916001600160a01b0316907fb90795a66650155983e242cac3e1ac1a4dc26f8ed2987f3ce416a34e00111fd490602090a3005b34610302575f36600319011261030257602060405160128152f35b34610302575f3660031901126103025760206106be611b27565b604051908152f35b34610302575f366003190112610302576103926040516106f0816106e9816115ce565b0382610bf9565b604051918291602083526020830190610306565b346103025760403660031901126103025761071d610418565b6001600160a01b03165f90815260096020526040902061073e602435611c43565b8154905f829160058411610791575b610758935084611fa1565b908161077657505060205f5b6040516001600160d01b039091168152f35b610781602092611c7c565b905f52815f20015460301c610764565b919261079c81611e44565b81039081116107e45761075893855f5265ffffffffffff8260205f2001541665ffffffffffff8516105f146107d257509161074d565b9291506107de90611c8a565b9061074d565b611582565b346103025760203660031901126103025761080660043533611a52565b005b34610302575f3660031901126103025761082143611df7565b65ffffffffffff8061083243611df7565b169116036108895761039260405161084b604082610bf9565b601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c740000006020820152604051918291602083526020830190610306565b6301bfc1c560e61b5f5260045ffd5b34610302576020366003190112610302576001600160a01b036108b9610418565b165f526008602052602060018060a01b0360405f205416604051908152f35b34610302576020366003190112610302576108066108f4610418565b33611ca5565b34610302576020366003190112610302576001600160a01b0361091b610418565b165f52600960205260405f205463ffffffff81116109455760405163ffffffff9091168152602090f35b6306dfcc6560e41b5f52602060045260245260445ffd5b346103025760203660031901126103025760206106be61097a610418565b611815565b34610302576040366003190112610302576108066109906418565b602435906109aa8233836118fe565b611a52565b34610302576020366003190112610302576001600160a01b036109d0610418565b165f526007602052602060405f2054604051908152f35b34610302575f36600319011261030257602060ff600f54166040519015158152f35b34610302575f36600319011261030257610aad610a457f00000000000000000000000000000000000000000000000000000000000000006120d8565b610a6e7f0000000000000000000000000000000000000000000000000000000000000000612131565b6020604051610a7d8282610bf9565b5f815281610abb81830194601f198301368737604051978897600f60f81b895260e0858a015260e0890190610306565b908782036040890152610306565b914660608701523060808701525f60a087015285830360c087015251918281520192915f5b828110610aef57505050500390f35b835185528695509381019392810192600101610ae0565b3461030257602036600319011261030257610b22600435611c43565b600a54905f829160058411610b71575b610b3e9350600a611fa1565b80610b4f57506040515f8152602090f35b610b6c610b5d602092611c7c565b600a5f52825f20015460301c90565b610764565b9192610b7c81611e44565b81039081116107e457610b3e93600a5f5265ffffffffffff8260205f2001541665ffffffffffff8516105f14610bb3575091610b32565b929150610bbf90611c8a565b90610b32565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b03821117610bf457604052565b610bc5565b601f909101601f19168101906001600160401b03821190821017610bf457604052565b60405190610c2b604083610bf9565b60018252603160f81b6020830152565b6020600319820112610302576004356001600160401b0381116103025781602382011215610302576004810135906001600160401b038211610bf45760405192610c81601f8401601f191660200185610bf9565b8284526024838301011161030257815f92602460209301838601378301015290565b3461030257610cb136610c2d565b600b546001600160a01b03163303610dc45780516001600160401b038111610bf457610ce781610ce2600c54611596565b61182f565b6020601f8211600114610d455791610d2682610d35935f5160206126705f395f51905f52955f91610d3a575b508160011b915f199060031b1c19161790565b600c556040519182918261032a565b0390a1005b90508301515f610d13565b600c5f52601f198216905f5160206125d05f395f51905f52915f5b818110610dac5750925f5160206126705f395f51905f52949260019282610d3596106108949575b5050811b01600c55610386565b8401515f1960f88460031b161c191690555f80610d87565b91926020600181928689015181550194019201610d60565b637bfa4b9f60e01b5f5260045ffd5b34610302575f366003190112610302576020610dee43611df7565b65ffffffffffff60405191168152f35b34610302575f366003190112610302576040515f600454610e1e81611596565b80845290600181169081156103f45750600114610e45576103928361038681850382610bf9565b60045f9081527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b939250905b808210610e8957509091508101602001610386610376565b919260018160209254838588010152019101909291610e71565b34610302576020366003190112610302576001600160a01b03610ec4610418565b165f526009602052602060018060d01b03610ee160405f20611d11565b16604051908152f35b346103025760403660031901126103025761046a610f06610418565b60243590336119b6565b34610302575f366003190112610302576103926040516106f0816106e98161165a565b34610302575f36600319011261030257600b54604051906001600160a01b0316610f6782610f608161165a565b0383610bf9565b610392604051610f7a816106e9816115ce565b610fed60405191610f9583610f8e816116ca565b0384610bf9565b610fdf60405196879660018060a01b037f0000000000000000000000000000000000000000000000000000000000000000168852602088015260a0604088015260a0870190610306565b908582036060870152610306565b908382036080850152610306565b6064359060ff8216820361030257565b6084359060ff8216820361030257565b346103025760c036600319011261030257611034610418565b60243590604435611043610ffb565b6084359060a4359280421161110157916110c893916110ba6110bf9460405160208101917fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf835260018060a01b038a1660408301528a60608301526080820152608081526110b260a082610bf9565b519020611d3b565b90929192612209565b6110d181611d70565b8093036110e2576108069250611ca5565b90506301d4b62360e61b5f5260018060a01b031660045260245260445ffd5b632341d78760e11b5f5260045260245ffd5b34610302575f366003190112610302576103926040516106f0816106e9816116ca565b346103025760e03660031901126103025761114f610418565b61115761042e565b604435906064359261116761100b565b60a43560c4359086421161122e576111f3926111ee61118586611d70565b9860405160208101917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9835260018060a01b0389169b8c604084015260018060a01b038b1660608401528b608084015260a083015260c082015260c081526110b260e082610bf9565b611d61565b936001600160a01b0385160361120d576108069350611d92565b6325c0072360e11b5f526001600160a01b038085166004521660245260445ffd5b8663313c898160e11b5f5260045260245ffd5b3461030257604036600319011261030257602061128361125f610418565b61126761042e565b6001600160a01b039091165f9081526001845260409020611800565b54604051908152f35b34610302576020366003190112610302576112a5610418565b600b54906001600160a01b0382169033829003610dc4576001600160a01b03166001600160a01b0319929092168217600b557fcd6ba6b7da89e039d53b5d981527a893755342bb9d8e5c2f61f6638f1fb5192b5f80a3005b346103025761130b36610c2d565b600b546001600160a01b03163303610dc45780516001600160401b038111610bf4576113418161133c600e54611596565b61187f565b6020601f821160011461138e579161137f82610d35935f5160206126305f395f51905f52955f91610d3a57508160011b915f199060031b1c19161790565b600e556040519182918261032a565b600e5f52601f198216905f5160206125f05f395f51905f52915f5b8181106113f55750925f5160206126305f395f51905f52949260019282610d3596106113dd575b5050811b01600e55610386565b8401515f1960f88460031b161c191690555f806113d0565b919260206001819286890151815501940192016113a9565b3461030257604036600319011261030257611426610418565b6024359063ffffffff821682036103025761039291611475916114476118cf565b506114506118cf565b506001600160a01b03165f90815260096020526040902061146f6118cf565b50612285565b506040519061148382610bd9565b5465ffffffffffff811680835260309190911c60209283019081526040805192835290516001600160d01b031692820192909252918291820190565b34610302575f36600319011261030257600b546040516001600160a01b039091168152602090f35b34610302575f366003190112610302577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361157357600f5460ff81166115645760ff1916600117600f5530337f78a953f3f0d92abc078a34e5d4fedf8708e788e1b29300b3d6170e97f88a13fc5f80a3005b630231faf760e31b5f5260045ffd5b63ce7123f560e01b5f5260045ffd5b634e487b7160e01b5f52601160045260245ffd5b90600182811c921680156115c4575b60208310146115b057565b634e487b7160e01b5f52602260045260245ffd5b91607f16916115a5565b600c545f92916115dd82611596565b808252916001811690811561163e57506001146115f8575050565b600c5f9081529293509091905f5160206125d05f395f51905f525b838310611624575060209250010190565b600181602092949394548385870101520191019190611613565b9050602093945060ff929192191683830152151560051b010190565b600e545f929161166982611596565b808252916001811690811561163e5750600114611684575050565b600e5f9081529293509091905f5160206125f05f395f51905f525b8383106116b0575060209250010190565b60018160209294939454838587010152019101919061169f565b600d545f92916116d982611596565b808252916001811690811561163e57506001146116f4575050565b600d5f9081529293509091907fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb55b838310611733575060209250010190565b600181602092949394548385870101520191019190611722565b5f929181549161175c83611596565b80835292600181169081156117b1575060011461177857505050565b5f9081526020812093945091925b838310611797575060209250010190565b600181602092949394548385870101520191019190611786565b915050602093945060ff929192191683830152151560051b010190565b6001600160a01b03165f90815260208190526040902090565b6001600160a01b03165f90815260096020526040902090565b9060018060a01b03165f5260205260405f2090565b6001600160a01b03165f9081526020819052604090205490565b601f811161183b575050565b600c5f5260205f20906020601f840160051c83019310611875575b601f0160051c01905b81811061186a575050565b5f815560010161185f565b9091508190611856565b601f811161188b575050565b600e5f5260205f20906020601f840160051c830193106118c5575b601f0160051c01905b8181106118ba575050565b5f81556001016118af565b90915081906118a6565b604051906118dc82610bd9565b5f6020838281520152565b6001600160a01b0316600452602452604452606490565b6001600160a01b03165f81815260016020526040902091929091611923908490611800565b545f198110611933575b50505050565b818110611995578215611982576001600160a01b0384161561196f57611965925f526001602052039160405f20611800565b555f80808061192d565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b83637dc7a0d960e11b5f5260018060a01b031660045260245260445260645ffd5b6001600160a01b038116939291908415611a3f576001600160a01b038216801561057d576119e3826117ce565b5495848710611a2a5784610c2b9697036119fc846117ce565b55611a06846117ce565b8054860190556040518581525f5160206126505f395f51905f5290602090a361241b565b63391434e360e21b5f5261057a8588856118e7565b634b637e8f60e11b5f525f60045260245ffd5b6001600160a01b038116908115611a3f57611a6c816117ce565b54838110611b115790611a8684610c2b95949303916117ce565b5581600254036002555f815f5160206126505f395f51905f5260405180602081018782520390a38015611af9575b611ac5611ac0836122ae565b612380565b50505f908152600860205260408120549080525f5160206126105f395f51905f52546001600160a01b039081169116611ffa565b611b0a611b05836122ae565b61234b565b5050611ab4565b63391434e360e21b5f5261057a918491906118e7565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480611c1a575b15611b82577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a08152611c1460c082610bf9565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614611b59565b65ffffffffffff611c5343611df7565b1680821015611c66575061033b90611df7565b90637669fc0f60e11b5f5260045260245260445ffd5b5f198101919082116107e457565b90600182018092116107e457565b919082018092116107e457565b6001600160a01b038181165f81815260086020526040812080548685166001600160a01b031982168117909255610c2b96941694611d0b9390928691907f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9080a4611815565b91611ffa565b80549081611d1f5750505f90565b815f198101116107e4575f525f199060205f2001015460301c90565b604290611d46611b27565b906040519161190160f01b8352600283015260228201522090565b9161033b93916110bf93612168565b6001600160a01b03165f90815260076020526040902080546001810190915590565b6001600160a01b0316908115611982576001600160a01b03811692831561196f5780611dea7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92593855f52600160205260405f20611800565b55604051908152602090a3565b65ffffffffffff8111611e0f5765ffffffffffff1690565b6306dfcc6560e41b5f52603060045260245260445ffd5b8115611e30570490565b634e487b7160e01b5f52601260045260245ffd5b600181111561033b57806001600160801b821015611f64575b611f0a611f00611ef6611eec611ee2611ed8611ec7611f11976004611f169a600160401b811015611f57575b600160201b811015611f4a575b62010000811015611f3d575b610100811015611f30575b6010811015611f23575b1015611f1b575b60030260011c90565b611ed1818b611e26565b0160011c90565b611ed1818a611e26565b611ed18189611e26565b611ed18188611e26565b611ed18187611e26565b611ed18186611e26565b8093611e26565b821190565b900390565b60011b611ebe565b60041c9160021b91611eb7565b60081c9160041b91611ead565b60101c9160081b91611ea2565b60201c9160101b91611e96565b60401c9160201b91611e89565b5050611f16611f11611f0a611f00611ef6611eec611ee2611ed8611ec7611f8b8a60801c90565b9850600160401b9750611e5d9650505050505050565b905b838310611fb05750505090565b90919280841860011c8185160190835f5265ffffffffffff8260205f2001541665ffffffffffff8416105f14611fea5750925b9190611fa3565b9350611ff590611c8a565b611fe3565b6001600160a01b038083169392919081169081851415806120cf575b612022575b5050505050565b81612084575b505082612037575b808061201b565b5f5160206126905f395f51905f529161205b612055612061936117e7565b916122ae565b90612317565b604080516001600160d01b039384168152919092166020820152a25f8080612030565b6120ad61209e5f5160206126905f395f51905f52926117e7565b6120a7866122ae565b906122df565b604080516001600160d01b039384168152919092166020820152a25f80612028565b50831515612016565b60ff811461211e5760ff811690601f821161210f57604051916120fc604084610bf9565b6020808452838101919036833783525290565b632cd44ac360e21b5f5260045ffd5b5060405161033b816106e981600561174d565b60ff81146121555760ff811690601f821161210f57604051916120fc604084610bf9565b5060405161033b816106e981600661174d565b91906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0384116121e0579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156121d5575f516001600160a01b038116156121cb57905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b600411156121f557565b634e487b7160e01b5f52602160045260245ffd5b612212816121eb565b8061221b575050565b612224816121eb565b6001810361223b5763f645eedf60e01b5f5260045ffd5b612244816121eb565b6002810361225f575063fce698f760e01b5f5260045260245ffd5b8061226b6003926121eb565b146122735750565b6335e2f38360e21b5f5260045260245ffd5b805482101561229a575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b6001600160d01b0381116122c8576001600160d01b031690565b6306dfcc6560e41b5f5260d060045260245260445ffd5b906122e943611df7565b906122f383611d11565b6001600160d01b0391821690821603919082116107e4576123139261250d565b9091565b9061232143611df7565b9061232b83611d11565b6001600160d01b0391821690821601919082116107e4576123139261250d565b61235443611df7565b9061235f600a611d11565b6001600160d01b03918216908216019081116107e45761231391600a61250d565b61238943611df7565b90612394600a611d11565b6001600160d01b03918216908216039081116107e45761231391600a61250d565b90610c2b916123c6611b05836122ae565b50506001600160a01b03168015612408575b60086020525f5160206126105f395f51905f52545f9182526040909120546001600160a01b039081169116611ffa565b612414611ac0836122ae565b50506123d8565b610c2b92916001600160a01b0390911690811561247e575b6001600160a01b031690811561246b575b5f90815260086020526040808220549282529020546001600160a01b039081169116611ffa565b612477611ac0846122ae565b5050612444565b61248a611b05846122ae565b5050612433565b9065ffffffffffff82549181199060301b169116179055565b8054600160401b811015610bf4576124c791600182018155612285565b6124fa578165ffffffffffff610c2b93511665ffffffffffff19835416178255602060018060d01b039101511690612491565b634e487b7160e01b5f525f60045260245ffd5b805492939280156125a55761252461252f91611c7c565b825f5260205f200190565b8054603081901c9365ffffffffffff9182169291811680841161259657879303612562575061255e9250612491565b9190565b91505061255e91612582612574610c1c565b65ffffffffffff9093168352565b6001600160d01b03861660208301526124aa565b632520601d60e01b5f5260045ffd5b50906125ca916125b6612574610c1c565b6001600160d01b03851660208301526124aa565b5f919056fedf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7bb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c7a27234ca678ebcb3cd33e8325c5563cd8d9ff626cc44a58b6ea2bf4b55524216ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3eff26c33166d6eefdac067b052550e7713b98ff0ffc4abb3caf719a1de36b651f4dec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724c65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a7dec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724';
133
+ /**
134
+ * Compute the init code hash for a ClawnchToken deployment
135
+ */
136
+ export function computeInitCodeHash(constructorArgs) {
137
+ const encodedArgs = encodeAbiParameters(parseAbiParameters('string, string, uint256, address, string, string, string, uint256'), [
138
+ constructorArgs.name,
139
+ constructorArgs.symbol,
140
+ constructorArgs.maxSupply,
141
+ constructorArgs.admin,
142
+ constructorArgs.image,
143
+ constructorArgs.metadata,
144
+ constructorArgs.context,
145
+ constructorArgs.initialSupplyChainId,
146
+ ]);
147
+ const initCode = concat([CLAWNCH_TOKEN_BYTECODE, encodedArgs]);
148
+ return keccak256(initCode);
149
+ }
150
+ /**
151
+ * Default vanity prefix for Clawncher tokens
152
+ */
153
+ export const DEFAULT_VANITY_PREFIX = 'ccc';
154
+ /**
155
+ * Quick helper to mine a 0xccc address
156
+ */
157
+ export async function mineCccAddress(factory, tokenAdmin, initCodeHash, onProgress) {
158
+ return mineVanityAddress({
159
+ factory,
160
+ tokenAdmin,
161
+ initCodeHash,
162
+ prefix: DEFAULT_VANITY_PREFIX,
163
+ onProgress,
164
+ });
165
+ }
166
+ //# sourceMappingURL=vanity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vanity.js","sourceRoot":"","sources":["../src/vanity.ts"],"names":[],"mappings":"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"}