@ensuro/account-abstraction 0.1.0 → 0.2.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.
@@ -1,5 +1,5 @@
1
1
  {
2
- "_format": "hh-sol-artifact-1",
2
+ "_format": "hh3-artifact-1",
3
3
  "contractName": "ERC2771ForwarderAccount",
4
4
  "sourceName": "contracts/ERC2771ForwarderAccount.sol",
5
5
  "abi": [
@@ -9,89 +9,79 @@
9
9
  "internalType": "contract IEntryPoint",
10
10
  "name": "anEntryPoint",
11
11
  "type": "address"
12
- },
12
+ }
13
+ ],
14
+ "stateMutability": "nonpayable",
15
+ "type": "constructor"
16
+ },
17
+ {
18
+ "inputs": [
13
19
  {
14
20
  "internalType": "address",
15
- "name": "admin",
21
+ "name": "target",
16
22
  "type": "address"
17
- },
18
- {
19
- "internalType": "address[]",
20
- "name": "executors",
21
- "type": "address[]"
22
23
  }
23
24
  ],
24
- "stateMutability": "nonpayable",
25
- "type": "constructor"
25
+ "name": "AddressEmptyCode",
26
+ "type": "error"
26
27
  },
27
28
  {
28
29
  "inputs": [],
29
- "name": "AccessControlBadConfirmation",
30
+ "name": "ECDSAInvalidSignature",
30
31
  "type": "error"
31
32
  },
32
33
  {
33
34
  "inputs": [
34
35
  {
35
- "internalType": "address",
36
- "name": "account",
37
- "type": "address"
38
- },
39
- {
40
- "internalType": "bytes32",
41
- "name": "neededRole",
42
- "type": "bytes32"
36
+ "internalType": "uint256",
37
+ "name": "length",
38
+ "type": "uint256"
43
39
  }
44
40
  ],
45
- "name": "AccessControlUnauthorizedAccount",
41
+ "name": "ECDSAInvalidSignatureLength",
46
42
  "type": "error"
47
43
  },
48
44
  {
49
45
  "inputs": [
50
46
  {
51
- "internalType": "address",
52
- "name": "target",
53
- "type": "address"
47
+ "internalType": "bytes32",
48
+ "name": "s",
49
+ "type": "bytes32"
54
50
  }
55
51
  ],
56
- "name": "AddressEmptyCode",
52
+ "name": "ECDSAInvalidSignatureS",
57
53
  "type": "error"
58
54
  },
59
55
  {
60
56
  "inputs": [
61
57
  {
62
58
  "internalType": "address",
63
- "name": "target",
59
+ "name": "implementation",
64
60
  "type": "address"
65
61
  }
66
62
  ],
67
- "name": "CanCallOnlyIfTrustedForwarder",
63
+ "name": "ERC1967InvalidImplementation",
68
64
  "type": "error"
69
65
  },
70
66
  {
71
67
  "inputs": [],
72
- "name": "ECDSAInvalidSignature",
68
+ "name": "ERC1967NonPayable",
73
69
  "type": "error"
74
70
  },
75
71
  {
76
72
  "inputs": [
77
73
  {
78
74
  "internalType": "uint256",
79
- "name": "length",
75
+ "name": "index",
80
76
  "type": "uint256"
81
- }
82
- ],
83
- "name": "ECDSAInvalidSignatureLength",
84
- "type": "error"
85
- },
86
- {
87
- "inputs": [
77
+ },
88
78
  {
89
- "internalType": "bytes32",
90
- "name": "s",
91
- "type": "bytes32"
79
+ "internalType": "bytes",
80
+ "name": "error",
81
+ "type": "bytes"
92
82
  }
93
83
  ],
94
- "name": "ECDSAInvalidSignatureS",
84
+ "name": "ExecuteError",
95
85
  "type": "error"
96
86
  },
97
87
  {
@@ -115,110 +105,112 @@
115
105
  "name": "InsufficientBalance",
116
106
  "type": "error"
117
107
  },
108
+ {
109
+ "inputs": [],
110
+ "name": "InvalidCall",
111
+ "type": "error"
112
+ },
118
113
  {
119
114
  "inputs": [
115
+ {
116
+ "internalType": "contract ERC2771Context",
117
+ "name": "target",
118
+ "type": "address"
119
+ },
120
120
  {
121
121
  "internalType": "address",
122
- "name": "sender",
122
+ "name": "signer",
123
123
  "type": "address"
124
124
  }
125
125
  ],
126
- "name": "RequiredEntryPointOrExecutor",
126
+ "name": "InvalidTarget",
127
127
  "type": "error"
128
128
  },
129
129
  {
130
130
  "inputs": [],
131
- "name": "UserOpSignerNotSet",
131
+ "name": "OnlyExecuteUserOpAllowed",
132
+ "type": "error"
133
+ },
134
+ {
135
+ "inputs": [
136
+ {
137
+ "internalType": "address",
138
+ "name": "sender",
139
+ "type": "address"
140
+ }
141
+ ],
142
+ "name": "RequiredEntryPointOrExecutor",
132
143
  "type": "error"
133
144
  },
134
145
  {
135
146
  "inputs": [],
136
- "name": "WrongArrayLength",
147
+ "name": "UUPSUnauthorizedCallContext",
137
148
  "type": "error"
138
149
  },
139
150
  {
140
- "anonymous": false,
141
151
  "inputs": [
142
152
  {
143
- "indexed": true,
144
- "internalType": "bytes32",
145
- "name": "role",
146
- "type": "bytes32"
147
- },
148
- {
149
- "indexed": true,
150
153
  "internalType": "bytes32",
151
- "name": "previousAdminRole",
152
- "type": "bytes32"
153
- },
154
- {
155
- "indexed": true,
156
- "internalType": "bytes32",
157
- "name": "newAdminRole",
154
+ "name": "slot",
158
155
  "type": "bytes32"
159
156
  }
160
157
  ],
161
- "name": "RoleAdminChanged",
162
- "type": "event"
158
+ "name": "UUPSUnsupportedProxiableUUID",
159
+ "type": "error"
163
160
  },
164
161
  {
165
162
  "anonymous": false,
166
163
  "inputs": [
167
- {
168
- "indexed": true,
169
- "internalType": "bytes32",
170
- "name": "role",
171
- "type": "bytes32"
172
- },
173
164
  {
174
165
  "indexed": true,
175
166
  "internalType": "address",
176
- "name": "account",
167
+ "name": "executor",
177
168
  "type": "address"
178
169
  },
179
170
  {
180
171
  "indexed": true,
181
- "internalType": "address",
182
- "name": "sender",
172
+ "internalType": "contract ERC2771Context",
173
+ "name": "target",
183
174
  "type": "address"
184
175
  }
185
176
  ],
186
- "name": "RoleGranted",
177
+ "name": "ExecutorAdded",
187
178
  "type": "event"
188
179
  },
189
180
  {
190
181
  "anonymous": false,
191
182
  "inputs": [
192
- {
193
- "indexed": true,
194
- "internalType": "bytes32",
195
- "name": "role",
196
- "type": "bytes32"
197
- },
198
183
  {
199
184
  "indexed": true,
200
185
  "internalType": "address",
201
- "name": "account",
186
+ "name": "executor",
202
187
  "type": "address"
203
- },
188
+ }
189
+ ],
190
+ "name": "ExecutorRemoved",
191
+ "type": "event"
192
+ },
193
+ {
194
+ "anonymous": false,
195
+ "inputs": [
204
196
  {
205
197
  "indexed": true,
206
198
  "internalType": "address",
207
- "name": "sender",
199
+ "name": "implementation",
208
200
  "type": "address"
209
201
  }
210
202
  ],
211
- "name": "RoleRevoked",
203
+ "name": "Upgraded",
212
204
  "type": "event"
213
205
  },
214
206
  {
215
207
  "inputs": [],
216
- "name": "DEFAULT_ADMIN_ROLE",
208
+ "name": "UPGRADE_INTERFACE_VERSION",
217
209
  "outputs": [
218
210
  {
219
- "internalType": "bytes32",
211
+ "internalType": "string",
220
212
  "name": "",
221
- "type": "bytes32"
213
+ "type": "string"
222
214
  }
223
215
  ],
224
216
  "stateMutability": "view",
@@ -226,35 +218,27 @@
226
218
  },
227
219
  {
228
220
  "inputs": [],
229
- "name": "EXECUTOR_ROLE",
230
- "outputs": [
231
- {
232
- "internalType": "bytes32",
233
- "name": "",
234
- "type": "bytes32"
235
- }
236
- ],
237
- "stateMutability": "view",
221
+ "name": "addDeposit",
222
+ "outputs": [],
223
+ "stateMutability": "payable",
238
224
  "type": "function"
239
225
  },
240
226
  {
241
- "inputs": [],
242
- "name": "WITHDRAW_ROLE",
243
- "outputs": [
227
+ "inputs": [
244
228
  {
245
- "internalType": "bytes32",
246
- "name": "",
247
- "type": "bytes32"
229
+ "internalType": "address",
230
+ "name": "executor",
231
+ "type": "address"
232
+ },
233
+ {
234
+ "internalType": "contract ERC2771Context",
235
+ "name": "target",
236
+ "type": "address"
248
237
  }
249
238
  ],
250
- "stateMutability": "view",
251
- "type": "function"
252
- },
253
- {
254
- "inputs": [],
255
- "name": "addDeposit",
239
+ "name": "addExecutor",
256
240
  "outputs": [],
257
- "stateMutability": "payable",
241
+ "stateMutability": "nonpayable",
258
242
  "type": "function"
259
243
  },
260
244
  {
@@ -274,17 +258,17 @@
274
258
  "inputs": [
275
259
  {
276
260
  "internalType": "address",
277
- "name": "dest",
261
+ "name": "",
278
262
  "type": "address"
279
263
  },
280
264
  {
281
265
  "internalType": "uint256",
282
- "name": "value",
266
+ "name": "",
283
267
  "type": "uint256"
284
268
  },
285
269
  {
286
270
  "internalType": "bytes",
287
- "name": "func",
271
+ "name": "",
288
272
  "type": "bytes"
289
273
  }
290
274
  ],
@@ -296,22 +280,94 @@
296
280
  {
297
281
  "inputs": [
298
282
  {
299
- "internalType": "address[]",
300
- "name": "dest",
301
- "type": "address[]"
302
- },
283
+ "components": [
284
+ {
285
+ "internalType": "address",
286
+ "name": "target",
287
+ "type": "address"
288
+ },
289
+ {
290
+ "internalType": "uint256",
291
+ "name": "value",
292
+ "type": "uint256"
293
+ },
294
+ {
295
+ "internalType": "bytes",
296
+ "name": "data",
297
+ "type": "bytes"
298
+ }
299
+ ],
300
+ "internalType": "struct BaseAccount.Call[]",
301
+ "name": "",
302
+ "type": "tuple[]"
303
+ }
304
+ ],
305
+ "name": "executeBatch",
306
+ "outputs": [],
307
+ "stateMutability": "nonpayable",
308
+ "type": "function"
309
+ },
310
+ {
311
+ "inputs": [
303
312
  {
304
- "internalType": "uint256[]",
305
- "name": "value",
306
- "type": "uint256[]"
313
+ "components": [
314
+ {
315
+ "internalType": "address",
316
+ "name": "sender",
317
+ "type": "address"
318
+ },
319
+ {
320
+ "internalType": "uint256",
321
+ "name": "nonce",
322
+ "type": "uint256"
323
+ },
324
+ {
325
+ "internalType": "bytes",
326
+ "name": "initCode",
327
+ "type": "bytes"
328
+ },
329
+ {
330
+ "internalType": "bytes",
331
+ "name": "callData",
332
+ "type": "bytes"
333
+ },
334
+ {
335
+ "internalType": "bytes32",
336
+ "name": "accountGasLimits",
337
+ "type": "bytes32"
338
+ },
339
+ {
340
+ "internalType": "uint256",
341
+ "name": "preVerificationGas",
342
+ "type": "uint256"
343
+ },
344
+ {
345
+ "internalType": "bytes32",
346
+ "name": "gasFees",
347
+ "type": "bytes32"
348
+ },
349
+ {
350
+ "internalType": "bytes",
351
+ "name": "paymasterAndData",
352
+ "type": "bytes"
353
+ },
354
+ {
355
+ "internalType": "bytes",
356
+ "name": "signature",
357
+ "type": "bytes"
358
+ }
359
+ ],
360
+ "internalType": "struct PackedUserOperation",
361
+ "name": "userOp",
362
+ "type": "tuple"
307
363
  },
308
364
  {
309
- "internalType": "bytes[]",
310
- "name": "func",
311
- "type": "bytes[]"
365
+ "internalType": "bytes32",
366
+ "name": "userOpHash",
367
+ "type": "bytes32"
312
368
  }
313
369
  ],
314
- "name": "executeBatch",
370
+ "name": "executeUserOp",
315
371
  "outputs": [],
316
372
  "stateMutability": "nonpayable",
317
373
  "type": "function"
@@ -343,61 +399,20 @@
343
399
  "type": "function"
344
400
  },
345
401
  {
346
- "inputs": [
347
- {
348
- "internalType": "bytes32",
349
- "name": "role",
350
- "type": "bytes32"
351
- }
352
- ],
353
- "name": "getRoleAdmin",
354
- "outputs": [
355
- {
356
- "internalType": "bytes32",
357
- "name": "",
358
- "type": "bytes32"
359
- }
360
- ],
361
- "stateMutability": "view",
362
- "type": "function"
363
- },
364
- {
365
- "inputs": [
366
- {
367
- "internalType": "bytes32",
368
- "name": "role",
369
- "type": "bytes32"
370
- },
371
- {
372
- "internalType": "address",
373
- "name": "account",
374
- "type": "address"
375
- }
376
- ],
377
- "name": "grantRole",
402
+ "inputs": [],
403
+ "name": "initialize",
378
404
  "outputs": [],
379
405
  "stateMutability": "nonpayable",
380
406
  "type": "function"
381
407
  },
382
408
  {
383
- "inputs": [
384
- {
385
- "internalType": "bytes32",
386
- "name": "role",
387
- "type": "bytes32"
388
- },
389
- {
390
- "internalType": "address",
391
- "name": "account",
392
- "type": "address"
393
- }
394
- ],
395
- "name": "hasRole",
409
+ "inputs": [],
410
+ "name": "proxiableUUID",
396
411
  "outputs": [
397
412
  {
398
- "internalType": "bool",
413
+ "internalType": "bytes32",
399
414
  "name": "",
400
- "type": "bool"
415
+ "type": "bytes32"
401
416
  }
402
417
  ],
403
418
  "stateMutability": "view",
@@ -405,57 +420,33 @@
405
420
  },
406
421
  {
407
422
  "inputs": [
408
- {
409
- "internalType": "bytes32",
410
- "name": "role",
411
- "type": "bytes32"
412
- },
413
423
  {
414
424
  "internalType": "address",
415
- "name": "callerConfirmation",
425
+ "name": "executor",
416
426
  "type": "address"
417
427
  }
418
428
  ],
419
- "name": "renounceRole",
429
+ "name": "removeExecutor",
420
430
  "outputs": [],
421
431
  "stateMutability": "nonpayable",
422
432
  "type": "function"
423
433
  },
424
434
  {
425
435
  "inputs": [
426
- {
427
- "internalType": "bytes32",
428
- "name": "role",
429
- "type": "bytes32"
430
- },
431
436
  {
432
437
  "internalType": "address",
433
- "name": "account",
438
+ "name": "newImplementation",
434
439
  "type": "address"
435
- }
436
- ],
437
- "name": "revokeRole",
438
- "outputs": [],
439
- "stateMutability": "nonpayable",
440
- "type": "function"
441
- },
442
- {
443
- "inputs": [
444
- {
445
- "internalType": "bytes4",
446
- "name": "interfaceId",
447
- "type": "bytes4"
448
- }
449
- ],
450
- "name": "supportsInterface",
451
- "outputs": [
440
+ },
452
441
  {
453
- "internalType": "bool",
454
- "name": "",
455
- "type": "bool"
442
+ "internalType": "bytes",
443
+ "name": "data",
444
+ "type": "bytes"
456
445
  }
457
446
  ],
458
- "stateMutability": "view",
447
+ "name": "upgradeToAndCall",
448
+ "outputs": [],
449
+ "stateMutability": "payable",
459
450
  "type": "function"
460
451
  },
461
452
  {
@@ -557,8 +548,52 @@
557
548
  "type": "receive"
558
549
  }
559
550
  ],
560
- "bytecode": "0x60a060405234801561000f575f5ffd5b506040516116a13803806116a183398101604081905261002e91610190565b6001600160a01b0383166080526100455f836100ac565b505f5b81518110156100a35761009a7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6383838151811061008757610087610282565b60200260200101516100ac60201b60201c565b50600101610048565b50505050610296565b5f828152602081815260408083206001600160a01b038516845290915281205460ff1661014c575f838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556101043390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161014f565b505f5b92915050565b6001600160a01b0381168114610169575f5ffd5b50565b805161017781610155565b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156101a2575f5ffd5b83516101ad81610155565b60208501519093506101be81610155565b60408501519092506001600160401b038111156101d9575f5ffd5b8401601f810186136101e9575f5ffd5b80516001600160401b038111156102025761020261017c565b604051600582901b90603f8201601f191681016001600160401b03811182821017156102305761023061017c565b60405291825260208184018101929081018984111561024d575f5ffd5b6020850194505b83851015610273576102658561016c565b815260209485019401610254565b50809450505050509250925092565b634e487b7160e01b5f52603260045260245ffd5b6080516113c96102d85f395f818161029b0152818161062e015281816106d401528181610814015281816108a9015281816109070152610ba201526113c95ff3fe6080604052600436106100fd575f3560e01c80634d44560d11610092578063b61d27f611610062578063b61d27f6146102c5578063c399ec88146102e4578063d087d288146102f8578063d547741f1461030c578063e02023a11461032b575f5ffd5b80634d44560d1461023157806391d1485414610250578063a217fddf1461026f578063b0d691fe14610282575f5ffd5b80632f2ff15d116100cd5780632f2ff15d146101ca57806336568abe146101eb57806347e1da2a1461020a5780634a58db1914610229575f5ffd5b806301ffc9a71461010857806307bd02651461013c57806319822f7c1461017d578063248a9ca31461019c575f5ffd5b3661010457005b5f5ffd5b348015610113575f5ffd5b50610127610122366004611036565b61035e565b60405190151581526020015b60405180910390f35b348015610147575f5ffd5b5061016f7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b604051908152602001610133565b348015610188575f5ffd5b5061016f61019736600461105d565b610394565b3480156101a7575f5ffd5b5061016f6101b63660046110ac565b5f9081526020819052604090206001015490565b3480156101d5575f5ffd5b506101e96101e43660046110d7565b6103b9565b005b3480156101f6575f5ffd5b506101e96102053660046110d7565b6103e3565b348015610215575f5ffd5b506101e961022436600461114d565b61041b565b6101e961062c565b34801561023c575f5ffd5b506101e961024b3660046111ec565b6106a8565b34801561025b575f5ffd5b5061012761026a3660046110d7565b610757565b34801561027a575f5ffd5b5061016f5f81565b34801561028d575f5ffd5b506040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610133565b3480156102d0575f5ffd5b506101e96102df366004611216565b61077f565b3480156102ef575f5ffd5b5061016f6107f5565b348015610303575f5ffd5b5061016f610883565b348015610317575f5ffd5b506101e96103263660046110d7565b6108d8565b348015610336575f5ffd5b5061016f7f5d8e12c39142ff96d79d04d15d1ba1269e4fe57bb9d26f43523628b34ba108ec81565b5f6001600160e01b03198216637965db0b60e01b148061038e57506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f61039d6108fc565b6103a78484610976565b90506103b282610a54565b9392505050565b5f828152602081905260409020600101546103d381610a9d565b6103dd8383610aa7565b50505050565b6001600160a01b038116331461040c5760405163334bd91960e11b815260040160405180910390fd5b6104168282610b36565b505050565b5f610424610b9f565b9050858214158061043f5750831580159061043f5750838214155b1561045d5760405163150072e360e11b815260040160405180910390fd5b5f5b868110156106225780156105125787878281811061047f5761047f61129b565b905060200201602081019061049491906112af565b6001600160a01b031688886104aa6001856112ca565b8181106104b9576104b961129b565b90506020020160208101906104ce91906112af565b6001600160a01b0316148061050d575061050d8888838181106104f3576104f361129b565b905060200201602081019061050891906112af565b610c74565b610527565b61052788885f8181106104f3576104f361129b565b8888838181106105395761053961129b565b905060200201602081019061054e91906112af565b9061057d57604051636d4e141560e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b506106198888838181106105935761059361129b565b90506020020160208101906105a891906112af565b8585848181106105ba576105ba61129b565b90506020028101906105cc91906112e9565b856040516020016105df9392919061132c565b60408051601f198184030181529190528715610613578888858181106106075761060761129b565b90506020020135610ced565b5f610ced565b5060010161045f565b5050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000060405163b760faf960e01b81523060048201526001600160a01b03919091169063b760faf99034906024015f604051808303818588803b15801561068f575f5ffd5b505af11580156106a1573d5f5f3e3d5ffd5b5050505050565b7f5d8e12c39142ff96d79d04d15d1ba1269e4fe57bb9d26f43523628b34ba108ec6106d281610a9d565b7f000000000000000000000000000000000000000000000000000000000000000060405163040b850f60e31b81526001600160a01b03858116600483015260248201859052919091169063205c2878906044015f604051808303815f87803b15801561073c575f5ffd5b505af115801561074e573d5f5f3e3d5ffd5b50505050505050565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b5f610788610b9f565b905061079385610c74565b85906107be57604051636d4e141560e01b81526001600160a01b039091166004820152602401610574565b506107ed858484846040516020016107d89392919061132c565b60405160208183030381529060405286610ced565b505050505050565b6040516370a0823160e01b81523060048201525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa15801561085a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061087e9190611352565b905090565b604051631aab3f0d60e11b81523060048201525f60248201819052906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906335567e1a9060440161083f565b5f828152602081905260409020600101546108f281610a9d565b6103dd8383610b36565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109745760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610574565b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c829052603c81205f6109f0826109b76101008801886112e9565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610d8392505050565b9050610a1c7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6382610757565b610a2b5760019250505061038e565b805f805c6001600160a01b0319166001600160a01b03831617905d505f95945050505050565b50565b8015610a51576040515f9033905f1990849084818181858888f193505050503d805f81146106a1576040519150601f19603f3d011682016040523d82523d5f602084013e6106a1565b610a518133610dab565b5f610ab28383610757565b610b2f575f838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055610ae73390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161038e565b505f61038e565b5f610b418383610757565b15610b2f575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161038e565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610c18575f5c6001600160a01b0316610bf857604051636ca7ff7d60e01b815260040160405180910390fd5b506001600160a01b035f805c918216916001600160a01b031916815d5090565b610c427fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6333610757565b3390610c6d57604051633c687f6b60e21b81526001600160a01b039091166004820152602401610574565b5033905090565b6040513060248201525f90819060440160408051601f19818403018152919052602080820180516001600160e01b031663572b6c0560e01b17815282519293505f928392839290918391895afa92503d91505f519050828015610cd8575060208210155b8015610ce357505f81115b9695505050505050565b606081471015610d195760405163cf47918160e01b815247600482015260248101839052604401610574565b5f5f856001600160a01b03168486604051610d349190611369565b5f6040518083038185875af1925050503d805f8114610d6e576040519150601f19603f3d011682016040523d82523d5f602084013e610d73565b606091505b5091509150610ce3868383610de8565b5f5f5f5f610d918686610e44565b925092509250610da18282610e8d565b5090949350505050565b610db58282610757565b610de45760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610574565b5050565b606082610dfd57610df882610f45565b6103b2565b8151158015610e1457506001600160a01b0384163b155b15610e3d57604051639996b31560e01b81526001600160a01b0385166004820152602401610574565b50806103b2565b5f5f5f8351604103610e7b576020840151604085015160608601515f1a610e6d88828585610f6e565b955095509550505050610e86565b505081515f91506002905b9250925092565b5f826003811115610ea057610ea061137f565b03610ea9575050565b6001826003811115610ebd57610ebd61137f565b03610edb5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610eef57610eef61137f565b03610f105760405163fce698f760e01b815260048101829052602401610574565b6003826003811115610f2457610f2461137f565b03610de4576040516335e2f38360e21b815260048101829052602401610574565b805115610f555780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610fa757505f9150600390508261102c565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610ff8573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b03811661102357505f92506001915082905061102c565b92505f91508190505b9450945094915050565b5f60208284031215611046575f5ffd5b81356001600160e01b0319811681146103b2575f5ffd5b5f5f5f6060848603121561106f575f5ffd5b833567ffffffffffffffff811115611085575f5ffd5b84016101208187031215611097575f5ffd5b95602085013595506040909401359392505050565b5f602082840312156110bc575f5ffd5b5035919050565b6001600160a01b0381168114610a51575f5ffd5b5f5f604083850312156110e8575f5ffd5b8235915060208301356110fa816110c3565b809150509250929050565b5f5f83601f840112611115575f5ffd5b50813567ffffffffffffffff81111561112c575f5ffd5b6020830191508360208260051b8501011115611146575f5ffd5b9250929050565b5f5f5f5f5f5f60608789031215611162575f5ffd5b863567ffffffffffffffff811115611178575f5ffd5b61118489828a01611105565b909750955050602087013567ffffffffffffffff8111156111a3575f5ffd5b6111af89828a01611105565b909550935050604087013567ffffffffffffffff8111156111ce575f5ffd5b6111da89828a01611105565b979a9699509497509295939492505050565b5f5f604083850312156111fd575f5ffd5b8235611208816110c3565b946020939093013593505050565b5f5f5f5f60608587031215611229575f5ffd5b8435611234816110c3565b935060208501359250604085013567ffffffffffffffff811115611256575f5ffd5b8501601f81018713611266575f5ffd5b803567ffffffffffffffff81111561127c575f5ffd5b87602082840101111561128d575f5ffd5b949793965060200194505050565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156112bf575f5ffd5b81356103b2816110c3565b8181038181111561038e57634e487b7160e01b5f52601160045260245ffd5b5f5f8335601e198436030181126112fe575f5ffd5b83018035915067ffffffffffffffff821115611318575f5ffd5b602001915036819003821315611146575f5ffd5b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b5f60208284031215611362575f5ffd5b5051919050565b5f82518060208501845e5f920191825250919050565b634e487b7160e01b5f52602160045260245ffdfea2646970667358221220cf6d6774046d911eedd4b122e3b68e3c2d17e5cb16737010985b91448ef8ab5e64736f6c634300081c0033",
561
- "deployedBytecode": "0x6080604052600436106100fd575f3560e01c80634d44560d11610092578063b61d27f611610062578063b61d27f6146102c5578063c399ec88146102e4578063d087d288146102f8578063d547741f1461030c578063e02023a11461032b575f5ffd5b80634d44560d1461023157806391d1485414610250578063a217fddf1461026f578063b0d691fe14610282575f5ffd5b80632f2ff15d116100cd5780632f2ff15d146101ca57806336568abe146101eb57806347e1da2a1461020a5780634a58db1914610229575f5ffd5b806301ffc9a71461010857806307bd02651461013c57806319822f7c1461017d578063248a9ca31461019c575f5ffd5b3661010457005b5f5ffd5b348015610113575f5ffd5b50610127610122366004611036565b61035e565b60405190151581526020015b60405180910390f35b348015610147575f5ffd5b5061016f7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b604051908152602001610133565b348015610188575f5ffd5b5061016f61019736600461105d565b610394565b3480156101a7575f5ffd5b5061016f6101b63660046110ac565b5f9081526020819052604090206001015490565b3480156101d5575f5ffd5b506101e96101e43660046110d7565b6103b9565b005b3480156101f6575f5ffd5b506101e96102053660046110d7565b6103e3565b348015610215575f5ffd5b506101e961022436600461114d565b61041b565b6101e961062c565b34801561023c575f5ffd5b506101e961024b3660046111ec565b6106a8565b34801561025b575f5ffd5b5061012761026a3660046110d7565b610757565b34801561027a575f5ffd5b5061016f5f81565b34801561028d575f5ffd5b506040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152602001610133565b3480156102d0575f5ffd5b506101e96102df366004611216565b61077f565b3480156102ef575f5ffd5b5061016f6107f5565b348015610303575f5ffd5b5061016f610883565b348015610317575f5ffd5b506101e96103263660046110d7565b6108d8565b348015610336575f5ffd5b5061016f7f5d8e12c39142ff96d79d04d15d1ba1269e4fe57bb9d26f43523628b34ba108ec81565b5f6001600160e01b03198216637965db0b60e01b148061038e57506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f61039d6108fc565b6103a78484610976565b90506103b282610a54565b9392505050565b5f828152602081905260409020600101546103d381610a9d565b6103dd8383610aa7565b50505050565b6001600160a01b038116331461040c5760405163334bd91960e11b815260040160405180910390fd5b6104168282610b36565b505050565b5f610424610b9f565b9050858214158061043f5750831580159061043f5750838214155b1561045d5760405163150072e360e11b815260040160405180910390fd5b5f5b868110156106225780156105125787878281811061047f5761047f61129b565b905060200201602081019061049491906112af565b6001600160a01b031688886104aa6001856112ca565b8181106104b9576104b961129b565b90506020020160208101906104ce91906112af565b6001600160a01b0316148061050d575061050d8888838181106104f3576104f361129b565b905060200201602081019061050891906112af565b610c74565b610527565b61052788885f8181106104f3576104f361129b565b8888838181106105395761053961129b565b905060200201602081019061054e91906112af565b9061057d57604051636d4e141560e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b506106198888838181106105935761059361129b565b90506020020160208101906105a891906112af565b8585848181106105ba576105ba61129b565b90506020028101906105cc91906112e9565b856040516020016105df9392919061132c565b60408051601f198184030181529190528715610613578888858181106106075761060761129b565b90506020020135610ced565b5f610ced565b5060010161045f565b5050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000060405163b760faf960e01b81523060048201526001600160a01b03919091169063b760faf99034906024015f604051808303818588803b15801561068f575f5ffd5b505af11580156106a1573d5f5f3e3d5ffd5b5050505050565b7f5d8e12c39142ff96d79d04d15d1ba1269e4fe57bb9d26f43523628b34ba108ec6106d281610a9d565b7f000000000000000000000000000000000000000000000000000000000000000060405163040b850f60e31b81526001600160a01b03858116600483015260248201859052919091169063205c2878906044015f604051808303815f87803b15801561073c575f5ffd5b505af115801561074e573d5f5f3e3d5ffd5b50505050505050565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b5f610788610b9f565b905061079385610c74565b85906107be57604051636d4e141560e01b81526001600160a01b039091166004820152602401610574565b506107ed858484846040516020016107d89392919061132c565b60405160208183030381529060405286610ced565b505050505050565b6040516370a0823160e01b81523060048201525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa15801561085a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061087e9190611352565b905090565b604051631aab3f0d60e11b81523060048201525f60248201819052906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906335567e1a9060440161083f565b5f828152602081905260409020600101546108f281610a9d565b6103dd8383610b36565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109745760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610574565b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c829052603c81205f6109f0826109b76101008801886112e9565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610d8392505050565b9050610a1c7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6382610757565b610a2b5760019250505061038e565b805f805c6001600160a01b0319166001600160a01b03831617905d505f95945050505050565b50565b8015610a51576040515f9033905f1990849084818181858888f193505050503d805f81146106a1576040519150601f19603f3d011682016040523d82523d5f602084013e6106a1565b610a518133610dab565b5f610ab28383610757565b610b2f575f838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055610ae73390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161038e565b505f61038e565b5f610b418383610757565b15610b2f575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161038e565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610c18575f5c6001600160a01b0316610bf857604051636ca7ff7d60e01b815260040160405180910390fd5b506001600160a01b035f805c918216916001600160a01b031916815d5090565b610c427fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6333610757565b3390610c6d57604051633c687f6b60e21b81526001600160a01b039091166004820152602401610574565b5033905090565b6040513060248201525f90819060440160408051601f19818403018152919052602080820180516001600160e01b031663572b6c0560e01b17815282519293505f928392839290918391895afa92503d91505f519050828015610cd8575060208210155b8015610ce357505f81115b9695505050505050565b606081471015610d195760405163cf47918160e01b815247600482015260248101839052604401610574565b5f5f856001600160a01b03168486604051610d349190611369565b5f6040518083038185875af1925050503d805f8114610d6e576040519150601f19603f3d011682016040523d82523d5f602084013e610d73565b606091505b5091509150610ce3868383610de8565b5f5f5f5f610d918686610e44565b925092509250610da18282610e8d565b5090949350505050565b610db58282610757565b610de45760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610574565b5050565b606082610dfd57610df882610f45565b6103b2565b8151158015610e1457506001600160a01b0384163b155b15610e3d57604051639996b31560e01b81526001600160a01b0385166004820152602401610574565b50806103b2565b5f5f5f8351604103610e7b576020840151604085015160608601515f1a610e6d88828585610f6e565b955095509550505050610e86565b505081515f91506002905b9250925092565b5f826003811115610ea057610ea061137f565b03610ea9575050565b6001826003811115610ebd57610ebd61137f565b03610edb5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610eef57610eef61137f565b03610f105760405163fce698f760e01b815260048101829052602401610574565b6003826003811115610f2457610f2461137f565b03610de4576040516335e2f38360e21b815260048101829052602401610574565b805115610f555780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610fa757505f9150600390508261102c565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610ff8573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b03811661102357505f92506001915082905061102c565b92505f91508190505b9450945094915050565b5f60208284031215611046575f5ffd5b81356001600160e01b0319811681146103b2575f5ffd5b5f5f5f6060848603121561106f575f5ffd5b833567ffffffffffffffff811115611085575f5ffd5b84016101208187031215611097575f5ffd5b95602085013595506040909401359392505050565b5f602082840312156110bc575f5ffd5b5035919050565b6001600160a01b0381168114610a51575f5ffd5b5f5f604083850312156110e8575f5ffd5b8235915060208301356110fa816110c3565b809150509250929050565b5f5f83601f840112611115575f5ffd5b50813567ffffffffffffffff81111561112c575f5ffd5b6020830191508360208260051b8501011115611146575f5ffd5b9250929050565b5f5f5f5f5f5f60608789031215611162575f5ffd5b863567ffffffffffffffff811115611178575f5ffd5b61118489828a01611105565b909750955050602087013567ffffffffffffffff8111156111a3575f5ffd5b6111af89828a01611105565b909550935050604087013567ffffffffffffffff8111156111ce575f5ffd5b6111da89828a01611105565b979a9699509497509295939492505050565b5f5f604083850312156111fd575f5ffd5b8235611208816110c3565b946020939093013593505050565b5f5f5f5f60608587031215611229575f5ffd5b8435611234816110c3565b935060208501359250604085013567ffffffffffffffff811115611256575f5ffd5b8501601f81018713611266575f5ffd5b803567ffffffffffffffff81111561127c575f5ffd5b87602082840101111561128d575f5ffd5b949793965060200194505050565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156112bf575f5ffd5b81356103b2816110c3565b8181038181111561038e57634e487b7160e01b5f52601160045260245ffd5b5f5f8335601e198436030181126112fe575f5ffd5b83018035915067ffffffffffffffff821115611318575f5ffd5b602001915036819003821315611146575f5ffd5b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b5f60208284031215611362575f5ffd5b5051919050565b5f82518060208501845e5f920191825250919050565b634e487b7160e01b5f52602160045260245ffdfea2646970667358221220cf6d6774046d911eedd4b122e3b68e3c2d17e5cb16737010985b91448ef8ab5e64736f6c634300081c0033",
551
+ "bytecode": "0x60c060405230608052348015610013575f5ffd5b5060405161152838038061152883398101604081905261003291610043565b6001600160a01b031660a052610070565b5f60208284031215610053575f5ffd5b81516001600160a01b0381168114610069575f5ffd5b9392505050565b60805160a0516114666100c25f395f81816102510152818161036f015281816103eb015281816105d40152818161066901526106a301525f81816107a6015281816107cf015261090b01526114665ff3fe6080604052600436106100e7575f3560e01c80636267e75911610087578063b0d691fe11610057578063b0d691fe14610238578063b61d27f61461027b578063c399ec8814610295578063d087d288146102a9575f5ffd5b80636267e759146101b25780638129fc1c146101d15780638dd7712f146101dc578063ad3cb1cc146101fb575f5ffd5b80634a58db19116100c25780634a58db19146101645780634d44560d1461016c5780634f1ef2861461018b57806352d1902d1461019e575f5ffd5b806319822f7c146100f2578063247884291461012457806334fcd5be14610145575f5ffd5b366100ee57005b5f5ffd5b3480156100fd575f5ffd5b5061011161010c366004610f87565b6102bd565b6040519081526020015b60405180910390f35b34801561012f575f5ffd5b5061014361013e366004610fe5565b6102e2565b005b348015610150575f5ffd5b5061014361015f366004611000565b610354565b61014361036d565b348015610177575f5ffd5b50610143610186366004611071565b6103e9565b61014361019936600461113a565b61046d565b3480156101a9575f5ffd5b50610111610483565b3480156101bd575f5ffd5b506101436101cc366004611187565b61049e565b348015610143575f5ffd5b3480156101e7575f5ffd5b506101436101f63660046111be565b61051b565b348015610206575f5ffd5b5061022b604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161011b9190611200565b348015610243575f5ffd5b506040516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016815260200161011b565b348015610286575f5ffd5b5061014361015f366004611235565b3480156102a0575f5ffd5b506101116105b5565b3480156102b4575f5ffd5b50610111610643565b5f6102c6610698565b6102d08484610710565b90506102db82610756565b9392505050565b6001600160a01b0381165f8181527f32800a8a254400b8b55434a22b827759dcb96a572133b419f26b7155e38430006020819052604080832080546001600160a01b0319169055519092917f4a2cf608bfb427f53279ec7f0eadf48913b9346ccefc3af138dbdec14ea0907d91a25050565b604051630ad8c00b60e31b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000060405163b760faf960e01b81523060048201526001600160a01b03919091169063b760faf99034906024015f604051808303818588803b1580156103d0575f5ffd5b505af11580156103e2573d5f5f3e3d5ffd5b5050505050565b7f000000000000000000000000000000000000000000000000000000000000000060405163040b850f60e31b81526001600160a01b03848116600483015260248201849052919091169063205c2878906044015f604051808303815f87803b158015610453575f5ffd5b505af1158015610465573d5f5f3e3d5ffd5b505050505050565b61047561079b565b61047f828261083f565b5050565b5f61048c610900565b505f5160206114115f395f51905f5290565b6001600160a01b038281165f8181527f32800a8a254400b8b55434a22b827759dcb96a572133b419f26b7155e38430006020819052604080832080546001600160a01b031916958716958617905551909392917f8a39fc6d5142759acd84b3e96ccde9187266ecb0df56c8ff08bf2aedc7c93c4791a3505050565b565b5f6105268383610949565b90505f6105338484610a4d565b905061054281835f0151610ace565b825190829061057c5760405163f252a21160e01b81526001600160a01b039283166004820152911660248201526044015b60405180910390fd5b50506103e2825f015183604001518360405160200161059c9291906112ba565b6040516020818303038152906040528460200151610b0e565b6040516370a0823160e01b81523060048201525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa15801561061a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061063e91906112e9565b905090565b604051631aab3f0d60e11b81523060048201525f60248201819052906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906335567e1a906044016105ff565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105195760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610573565b5f5f61071c8484610949565b90505f6107298585610a4d565b905061073881835f0151610ace565b6107475760019250505061074d565b5f925050505b92915050565b50565b8015610753576040515f90339083908381818185875af1925050503d805f81146103e2576040519150601f19603f3d011682016040523d82523d5f602084013e6103e2565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061082157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166108155f5160206114115f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156105195760405163703e46dd60e11b815260040160405180910390fd5b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610899575060408051601f3d908101601f19168201909252610896918101906112e9565b60015b6108c157604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610573565b5f5160206114115f395f51905f5281146108f157604051632a87526960e21b815260048101829052602401610573565b6108fb8383610bda565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105195760405163703e46dd60e11b815260040160405180910390fd5b60408051606080820183525f80835260208301529181019190915260386109736060850185611300565b9050101580156109b65750638dd7712f60e01b6109936060850185611300565b6109a1916004915f9161134a565b6109aa91611371565b6001600160e01b031916145b6109d35760405163574b16a760e11b815260040160405180910390fd5b6109e06060840184611300565b6109ee91600490829061134a565b8101906109fb91906113a7565b604084015260208301526001600160a01b031680825261074d578051610a218484610a4d565b60405163f252a21160e01b81526001600160a01b03928316600482015291166024820152604401610573565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c829052603c8120610ac681610a8d610100870187611300565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610c2f92505050565b949350505050565b6001600160a01b039182165f9081527f32800a8a254400b8b55434a22b827759dcb96a572133b419f26b7155e38430006020526040902054821691161490565b606081471015610b3a5760405163cf47918160e01b815247600482015260248101839052604401610573565b5f610b46858486610c57565b9050808015610b6757505f3d1180610b6757505f856001600160a01b03163b115b15610b7c57610b74610c6c565b9150506102db565b8015610ba657604051639996b31560e01b81526001600160a01b0386166004820152602401610573565b3d15610bb957610bb4610c85565b610bd2565b60405163d6bda27560e01b815260040160405180910390fd5b509392505050565b610be382610c90565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115610c27576108fb8282610cf3565b61047f610d75565b5f5f5f5f610c3d8686610d94565b925092509250610c4d8282610ddd565b5090949350505050565b5f5f5f83516020850186885af1949350505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b806001600160a01b03163b5f03610cc557604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610573565b5f5160206114115f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f610d008484610e95565b9050808015610d2157505f3d1180610d2157505f846001600160a01b03163b115b15610d3657610d2e610c6c565b91505061074d565b8015610d6057604051639996b31560e01b81526001600160a01b0385166004820152602401610573565b3d15610bb957610d6e610c85565b5092915050565b34156105195760405163b398979f60e01b815260040160405180910390fd5b5f5f5f8351604103610dcb576020840151604085015160608601515f1a610dbd88828585610ea8565b955095509550505050610dd6565b505081515f91506002905b9250925092565b5f826003811115610df057610df06113fc565b03610df9575050565b6001826003811115610e0d57610e0d6113fc565b03610e2b5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610e3f57610e3f6113fc565b03610e605760405163fce698f760e01b815260048101829052602401610573565b6003826003811115610e7457610e746113fc565b0361047f576040516335e2f38360e21b815260048101829052602401610573565b5f5f5f835160208501865af49392505050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610ee157505f91506003905082610f66565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610f32573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116610f5d57505f925060019150829050610f66565b92505f91508190505b9450945094915050565b5f6101208284031215610f81575f5ffd5b50919050565b5f5f5f60608486031215610f99575f5ffd5b833567ffffffffffffffff811115610faf575f5ffd5b610fbb86828701610f70565b9660208601359650604090950135949350505050565b6001600160a01b0381168114610753575f5ffd5b5f60208284031215610ff5575f5ffd5b81356102db81610fd1565b5f5f60208385031215611011575f5ffd5b823567ffffffffffffffff811115611027575f5ffd5b8301601f81018513611037575f5ffd5b803567ffffffffffffffff81111561104d575f5ffd5b8560208260051b8401011115611061575f5ffd5b6020919091019590945092505050565b5f5f60408385031215611082575f5ffd5b823561108d81610fd1565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126110be575f5ffd5b813567ffffffffffffffff8111156110d8576110d861109b565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156111075761110761109b565b60405281815283820160200185101561111e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f6040838503121561114b575f5ffd5b823561115681610fd1565b9150602083013567ffffffffffffffff811115611171575f5ffd5b61117d858286016110af565b9150509250929050565b5f5f60408385031215611198575f5ffd5b82356111a381610fd1565b915060208301356111b381610fd1565b809150509250929050565b5f5f604083850312156111cf575f5ffd5b823567ffffffffffffffff8111156111e5575f5ffd5b6111f185828601610f70565b95602094909401359450505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f5f5f60608587031215611248575f5ffd5b843561125381610fd1565b935060208501359250604085013567ffffffffffffffff811115611275575f5ffd5b8501601f81018713611285575f5ffd5b803567ffffffffffffffff81111561129b575f5ffd5b8760208284010111156112ac575f5ffd5b949793965060200194505050565b5f83518060208601845e60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f602082840312156112f9575f5ffd5b5051919050565b5f5f8335601e19843603018112611315575f5ffd5b83018035915067ffffffffffffffff82111561132f575f5ffd5b602001915036819003821315611343575f5ffd5b9250929050565b5f5f85851115611358575f5ffd5b83861115611364575f5ffd5b5050820193919092039150565b80356001600160e01b03198116906004841015610d6e576001600160e01b031960049490940360031b84901b1690921692915050565b5f5f5f606084860312156113b9575f5ffd5b83356113c481610fd1565b925060208401359150604084013567ffffffffffffffff8111156113e6575f5ffd5b6113f2868287016110af565b9150509250925092565b634e487b7160e01b5f52602160045260245ffdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220872c50a7097bf4bc50c5972cce553b4d6fb501a6658c63b74a98bc002b65524164736f6c634300081e0033",
552
+ "deployedBytecode": "0x6080604052600436106100e7575f3560e01c80636267e75911610087578063b0d691fe11610057578063b0d691fe14610238578063b61d27f61461027b578063c399ec8814610295578063d087d288146102a9575f5ffd5b80636267e759146101b25780638129fc1c146101d15780638dd7712f146101dc578063ad3cb1cc146101fb575f5ffd5b80634a58db19116100c25780634a58db19146101645780634d44560d1461016c5780634f1ef2861461018b57806352d1902d1461019e575f5ffd5b806319822f7c146100f2578063247884291461012457806334fcd5be14610145575f5ffd5b366100ee57005b5f5ffd5b3480156100fd575f5ffd5b5061011161010c366004610f87565b6102bd565b6040519081526020015b60405180910390f35b34801561012f575f5ffd5b5061014361013e366004610fe5565b6102e2565b005b348015610150575f5ffd5b5061014361015f366004611000565b610354565b61014361036d565b348015610177575f5ffd5b50610143610186366004611071565b6103e9565b61014361019936600461113a565b61046d565b3480156101a9575f5ffd5b50610111610483565b3480156101bd575f5ffd5b506101436101cc366004611187565b61049e565b348015610143575f5ffd5b3480156101e7575f5ffd5b506101436101f63660046111be565b61051b565b348015610206575f5ffd5b5061022b604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161011b9190611200565b348015610243575f5ffd5b506040516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016815260200161011b565b348015610286575f5ffd5b5061014361015f366004611235565b3480156102a0575f5ffd5b506101116105b5565b3480156102b4575f5ffd5b50610111610643565b5f6102c6610698565b6102d08484610710565b90506102db82610756565b9392505050565b6001600160a01b0381165f8181527f32800a8a254400b8b55434a22b827759dcb96a572133b419f26b7155e38430006020819052604080832080546001600160a01b0319169055519092917f4a2cf608bfb427f53279ec7f0eadf48913b9346ccefc3af138dbdec14ea0907d91a25050565b604051630ad8c00b60e31b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000060405163b760faf960e01b81523060048201526001600160a01b03919091169063b760faf99034906024015f604051808303818588803b1580156103d0575f5ffd5b505af11580156103e2573d5f5f3e3d5ffd5b5050505050565b7f000000000000000000000000000000000000000000000000000000000000000060405163040b850f60e31b81526001600160a01b03848116600483015260248201849052919091169063205c2878906044015f604051808303815f87803b158015610453575f5ffd5b505af1158015610465573d5f5f3e3d5ffd5b505050505050565b61047561079b565b61047f828261083f565b5050565b5f61048c610900565b505f5160206114115f395f51905f5290565b6001600160a01b038281165f8181527f32800a8a254400b8b55434a22b827759dcb96a572133b419f26b7155e38430006020819052604080832080546001600160a01b031916958716958617905551909392917f8a39fc6d5142759acd84b3e96ccde9187266ecb0df56c8ff08bf2aedc7c93c4791a3505050565b565b5f6105268383610949565b90505f6105338484610a4d565b905061054281835f0151610ace565b825190829061057c5760405163f252a21160e01b81526001600160a01b039283166004820152911660248201526044015b60405180910390fd5b50506103e2825f015183604001518360405160200161059c9291906112ba565b6040516020818303038152906040528460200151610b0e565b6040516370a0823160e01b81523060048201525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa15801561061a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061063e91906112e9565b905090565b604051631aab3f0d60e11b81523060048201525f60248201819052906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906335567e1a906044016105ff565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105195760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610573565b5f5f61071c8484610949565b90505f6107298585610a4d565b905061073881835f0151610ace565b6107475760019250505061074d565b5f925050505b92915050565b50565b8015610753576040515f90339083908381818185875af1925050503d805f81146103e2576040519150601f19603f3d011682016040523d82523d5f602084013e6103e2565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061082157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166108155f5160206114115f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156105195760405163703e46dd60e11b815260040160405180910390fd5b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610899575060408051601f3d908101601f19168201909252610896918101906112e9565b60015b6108c157604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610573565b5f5160206114115f395f51905f5281146108f157604051632a87526960e21b815260048101829052602401610573565b6108fb8383610bda565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105195760405163703e46dd60e11b815260040160405180910390fd5b60408051606080820183525f80835260208301529181019190915260386109736060850185611300565b9050101580156109b65750638dd7712f60e01b6109936060850185611300565b6109a1916004915f9161134a565b6109aa91611371565b6001600160e01b031916145b6109d35760405163574b16a760e11b815260040160405180910390fd5b6109e06060840184611300565b6109ee91600490829061134a565b8101906109fb91906113a7565b604084015260208301526001600160a01b031680825261074d578051610a218484610a4d565b60405163f252a21160e01b81526001600160a01b03928316600482015291166024820152604401610573565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c829052603c8120610ac681610a8d610100870187611300565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610c2f92505050565b949350505050565b6001600160a01b039182165f9081527f32800a8a254400b8b55434a22b827759dcb96a572133b419f26b7155e38430006020526040902054821691161490565b606081471015610b3a5760405163cf47918160e01b815247600482015260248101839052604401610573565b5f610b46858486610c57565b9050808015610b6757505f3d1180610b6757505f856001600160a01b03163b115b15610b7c57610b74610c6c565b9150506102db565b8015610ba657604051639996b31560e01b81526001600160a01b0386166004820152602401610573565b3d15610bb957610bb4610c85565b610bd2565b60405163d6bda27560e01b815260040160405180910390fd5b509392505050565b610be382610c90565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115610c27576108fb8282610cf3565b61047f610d75565b5f5f5f5f610c3d8686610d94565b925092509250610c4d8282610ddd565b5090949350505050565b5f5f5f83516020850186885af1949350505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b806001600160a01b03163b5f03610cc557604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610573565b5f5160206114115f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f610d008484610e95565b9050808015610d2157505f3d1180610d2157505f846001600160a01b03163b115b15610d3657610d2e610c6c565b91505061074d565b8015610d6057604051639996b31560e01b81526001600160a01b0385166004820152602401610573565b3d15610bb957610d6e610c85565b5092915050565b34156105195760405163b398979f60e01b815260040160405180910390fd5b5f5f5f8351604103610dcb576020840151604085015160608601515f1a610dbd88828585610ea8565b955095509550505050610dd6565b505081515f91506002905b9250925092565b5f826003811115610df057610df06113fc565b03610df9575050565b6001826003811115610e0d57610e0d6113fc565b03610e2b5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610e3f57610e3f6113fc565b03610e605760405163fce698f760e01b815260048101829052602401610573565b6003826003811115610e7457610e746113fc565b0361047f576040516335e2f38360e21b815260048101829052602401610573565b5f5f5f835160208501865af49392505050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610ee157505f91506003905082610f66565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610f32573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116610f5d57505f925060019150829050610f66565b92505f91508190505b9450945094915050565b5f6101208284031215610f81575f5ffd5b50919050565b5f5f5f60608486031215610f99575f5ffd5b833567ffffffffffffffff811115610faf575f5ffd5b610fbb86828701610f70565b9660208601359650604090950135949350505050565b6001600160a01b0381168114610753575f5ffd5b5f60208284031215610ff5575f5ffd5b81356102db81610fd1565b5f5f60208385031215611011575f5ffd5b823567ffffffffffffffff811115611027575f5ffd5b8301601f81018513611037575f5ffd5b803567ffffffffffffffff81111561104d575f5ffd5b8560208260051b8401011115611061575f5ffd5b6020919091019590945092505050565b5f5f60408385031215611082575f5ffd5b823561108d81610fd1565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126110be575f5ffd5b813567ffffffffffffffff8111156110d8576110d861109b565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156111075761110761109b565b60405281815283820160200185101561111e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f6040838503121561114b575f5ffd5b823561115681610fd1565b9150602083013567ffffffffffffffff811115611171575f5ffd5b61117d858286016110af565b9150509250929050565b5f5f60408385031215611198575f5ffd5b82356111a381610fd1565b915060208301356111b381610fd1565b809150509250929050565b5f5f604083850312156111cf575f5ffd5b823567ffffffffffffffff8111156111e5575f5ffd5b6111f185828601610f70565b95602094909401359450505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f5f5f60608587031215611248575f5ffd5b843561125381610fd1565b935060208501359250604085013567ffffffffffffffff811115611275575f5ffd5b8501601f81018713611285575f5ffd5b803567ffffffffffffffff81111561129b575f5ffd5b8760208284010111156112ac575f5ffd5b949793965060200194505050565b5f83518060208601845e60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f602082840312156112f9575f5ffd5b5051919050565b5f5f8335601e19843603018112611315575f5ffd5b83018035915067ffffffffffffffff82111561132f575f5ffd5b602001915036819003821315611343575f5ffd5b9250929050565b5f5f85851115611358575f5ffd5b83861115611364575f5ffd5b5050820193919092039150565b80356001600160e01b03198116906004841015610d6e576001600160e01b031960049490940360031b84901b1690921692915050565b5f5f5f606084860312156113b9575f5ffd5b83356113c481610fd1565b925060208401359150604084013567ffffffffffffffff8111156113e6575f5ffd5b6113f2868287016110af565b9150509250925092565b634e487b7160e01b5f52602160045260245ffdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220872c50a7097bf4bc50c5972cce553b4d6fb501a6658c63b74a98bc002b65524164736f6c634300081e0033",
562
553
  "linkReferences": {},
563
- "deployedLinkReferences": {}
564
- }
554
+ "deployedLinkReferences": {},
555
+ "immutableReferences": {
556
+ "2756": [
557
+ {
558
+ "length": 32,
559
+ "start": 1958
560
+ },
561
+ {
562
+ "length": 32,
563
+ "start": 1999
564
+ },
565
+ {
566
+ "length": 32,
567
+ "start": 2315
568
+ }
569
+ ],
570
+ "12314": [
571
+ {
572
+ "length": 32,
573
+ "start": 593
574
+ },
575
+ {
576
+ "length": 32,
577
+ "start": 879
578
+ },
579
+ {
580
+ "length": 32,
581
+ "start": 1003
582
+ },
583
+ {
584
+ "length": 32,
585
+ "start": 1492
586
+ },
587
+ {
588
+ "length": 32,
589
+ "start": 1641
590
+ },
591
+ {
592
+ "length": 32,
593
+ "start": 1699
594
+ }
595
+ ]
596
+ },
597
+ "inputSourceName": "project/contracts/ERC2771ForwarderAccount.sol",
598
+ "buildInfoId": "solc-0_8_30-95f43f1788cfd8898b8023be4a1aea1d69744865"
599
+ }