From 4f7bb9155faf1caf53fbc0a0293cf0602e46083a Mon Sep 17 00:00:00 2001 From: Joe Pegler Date: Fri, 23 Aug 2024 15:44:14 +0100 Subject: [PATCH] chore: delete --- tests/contracts/README.md | 1 - tests/contracts/abi/BiconomyMetaFactoryAbi.ts | 319 ------- tests/contracts/abi/BootstrapAbi.ts | 781 ------------------ tests/contracts/abi/BootstrapLibAbi.ts | 110 --- tests/contracts/abi/CounterAbi.ts | 36 - tests/contracts/abi/K1ValidatorAbi.ts | 244 ------ tests/contracts/abi/MockExecutorAbi.ts | 309 ------- tests/contracts/abi/MockHandlerAbi.ts | 227 ----- tests/contracts/abi/MockHookAbi.ts | 133 --- tests/contracts/abi/MockRegistryAbi.ts | 162 ---- tests/contracts/abi/MockTokenAbi.ts | 344 -------- tests/contracts/abi/MockValidatorAbi.ts | 228 ----- tests/contracts/abi/NexusAccountFactoryAbi.ts | 323 -------- tests/contracts/abi/StakeableAbi.ts | 211 ----- tests/contracts/abi/index.ts | 11 - tests/contracts/deployment.json | 62 -- tests/create.config.ts | 6 - tests/globalSetup.ts | 17 - tests/instances/playground.test.ts | 2 +- tests/test.utils.ts | 564 ------------- tests/testSetup.ts | 31 - tests/vitest.config.ts | 1 - 22 files changed, 1 insertion(+), 4121 deletions(-) delete mode 100644 tests/contracts/README.md delete mode 100644 tests/contracts/abi/BiconomyMetaFactoryAbi.ts delete mode 100644 tests/contracts/abi/BootstrapAbi.ts delete mode 100644 tests/contracts/abi/BootstrapLibAbi.ts delete mode 100644 tests/contracts/abi/CounterAbi.ts delete mode 100644 tests/contracts/abi/K1ValidatorAbi.ts delete mode 100644 tests/contracts/abi/MockExecutorAbi.ts delete mode 100644 tests/contracts/abi/MockHandlerAbi.ts delete mode 100644 tests/contracts/abi/MockHookAbi.ts delete mode 100644 tests/contracts/abi/MockRegistryAbi.ts delete mode 100644 tests/contracts/abi/MockTokenAbi.ts delete mode 100644 tests/contracts/abi/MockValidatorAbi.ts delete mode 100644 tests/contracts/abi/NexusAccountFactoryAbi.ts delete mode 100644 tests/contracts/abi/StakeableAbi.ts delete mode 100644 tests/contracts/abi/index.ts delete mode 100644 tests/contracts/deployment.json delete mode 100644 tests/create.config.ts delete mode 100644 tests/globalSetup.ts delete mode 100644 tests/test.utils.ts delete mode 100644 tests/testSetup.ts diff --git a/tests/contracts/README.md b/tests/contracts/README.md deleted file mode 100644 index bc22b669..00000000 --- a/tests/contracts/README.md +++ /dev/null @@ -1 +0,0 @@ -## The contents of this folder is auto-generated. Please do not edit as they are likely to become overwritten \ No newline at end of file diff --git a/tests/contracts/abi/BiconomyMetaFactoryAbi.ts b/tests/contracts/abi/BiconomyMetaFactoryAbi.ts deleted file mode 100644 index 78202292..00000000 --- a/tests/contracts/abi/BiconomyMetaFactoryAbi.ts +++ /dev/null @@ -1,319 +0,0 @@ -export const BiconomyMetaFactoryAbi = [ - { - inputs: [ - { - internalType: "address", - name: "owner_", - type: "address" - } - ], - stateMutability: "nonpayable", - type: "constructor" - }, - { - inputs: [], - name: "AlreadyInitialized", - type: "error" - }, - { - inputs: [], - name: "CallToDeployWithFactoryFailed", - type: "error" - }, - { - inputs: [], - name: "FactoryNotWhitelisted", - type: "error" - }, - { - inputs: [], - name: "InvalidEntryPointAddress", - type: "error" - }, - { - inputs: [], - name: "InvalidFactoryAddress", - type: "error" - }, - { - inputs: [], - name: "NewOwnerIsZeroAddress", - type: "error" - }, - { - inputs: [], - name: "NoHandoverRequest", - type: "error" - }, - { - inputs: [], - name: "Unauthorized", - type: "error" - }, - { - inputs: [], - name: "ZeroAddressNotAllowed", - type: "error" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "pendingOwner", - type: "address" - } - ], - name: "OwnershipHandoverCanceled", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "pendingOwner", - type: "address" - } - ], - name: "OwnershipHandoverRequested", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "oldOwner", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "newOwner", - type: "address" - } - ], - name: "OwnershipTransferred", - type: "event" - }, - { - inputs: [ - { - internalType: "address", - name: "factory", - type: "address" - } - ], - name: "addFactoryToWhitelist", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "epAddress", - type: "address" - }, - { - internalType: "uint32", - name: "unstakeDelaySec", - type: "uint32" - } - ], - name: "addStake", - outputs: [], - stateMutability: "payable", - type: "function" - }, - { - inputs: [], - name: "cancelOwnershipHandover", - outputs: [], - stateMutability: "payable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "pendingOwner", - type: "address" - } - ], - name: "completeOwnershipHandover", - outputs: [], - stateMutability: "payable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "factory", - type: "address" - }, - { - internalType: "bytes", - name: "factoryData", - type: "bytes" - } - ], - name: "deployWithFactory", - outputs: [ - { - internalType: "address payable", - name: "createdAccount", - type: "address" - } - ], - stateMutability: "payable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address" - } - ], - name: "factoryWhitelist", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - } - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "factory", - type: "address" - } - ], - name: "isFactoryWhitelisted", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - } - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "result", - type: "address" - } - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "pendingOwner", - type: "address" - } - ], - name: "ownershipHandoverExpiresAt", - outputs: [ - { - internalType: "uint256", - name: "result", - type: "uint256" - } - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "factory", - type: "address" - } - ], - name: "removeFactoryFromWhitelist", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [], - name: "renounceOwnership", - outputs: [], - stateMutability: "payable", - type: "function" - }, - { - inputs: [], - name: "requestOwnershipHandover", - outputs: [], - stateMutability: "payable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "newOwner", - type: "address" - } - ], - name: "transferOwnership", - outputs: [], - stateMutability: "payable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "epAddress", - type: "address" - } - ], - name: "unlockStake", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "epAddress", - type: "address" - }, - { - internalType: "address payable", - name: "withdrawAddress", - type: "address" - } - ], - name: "withdrawStake", - outputs: [], - stateMutability: "nonpayable", - type: "function" - } -] as const diff --git a/tests/contracts/abi/BootstrapAbi.ts b/tests/contracts/abi/BootstrapAbi.ts deleted file mode 100644 index 86d355ae..00000000 --- a/tests/contracts/abi/BootstrapAbi.ts +++ /dev/null @@ -1,781 +0,0 @@ -export const BootstrapAbi = [ - { - inputs: [], - name: "CannotRemoveLastValidator", - type: "error" - }, - { - inputs: [], - name: "EnableModeSigError", - type: "error" - }, - { - inputs: [ - { - internalType: "bytes4", - name: "selector", - type: "bytes4" - } - ], - name: "FallbackAlreadyInstalledForSelector", - type: "error" - }, - { - inputs: [], - name: "FallbackHandlerUninstallFailed", - type: "error" - }, - { - inputs: [ - { - internalType: "bytes4", - name: "selector", - type: "bytes4" - } - ], - name: "FallbackNotInstalledForSelector", - type: "error" - }, - { - inputs: [], - name: "FallbackSelectorForbidden", - type: "error" - }, - { - inputs: [ - { - internalType: "address", - name: "currentHook", - type: "address" - } - ], - name: "HookAlreadyInstalled", - type: "error" - }, - { - inputs: [], - name: "HookPostCheckFailed", - type: "error" - }, - { - inputs: [], - name: "InvalidInput", - type: "error" - }, - { - inputs: [ - { - internalType: "address", - name: "module", - type: "address" - } - ], - name: "InvalidModule", - type: "error" - }, - { - inputs: [ - { - internalType: "uint256", - name: "moduleTypeId", - type: "uint256" - } - ], - name: "InvalidModuleTypeId", - type: "error" - }, - { - inputs: [ - { - internalType: "address", - name: "entry", - type: "address" - } - ], - name: "LinkedList_EntryAlreadyInList", - type: "error" - }, - { - inputs: [ - { - internalType: "address", - name: "entry", - type: "address" - } - ], - name: "LinkedList_InvalidEntry", - type: "error" - }, - { - inputs: [], - name: "LinkedList_InvalidPage", - type: "error" - }, - { - inputs: [ - { - internalType: "uint256", - name: "moduleTypeId", - type: "uint256" - } - ], - name: "MismatchModuleTypeId", - type: "error" - }, - { - inputs: [ - { - internalType: "bytes4", - name: "selector", - type: "bytes4" - } - ], - name: "MissingFallbackHandler", - type: "error" - }, - { - inputs: [], - name: "ModuleAddressCanNotBeZero", - type: "error" - }, - { - inputs: [ - { - internalType: "uint256", - name: "moduleTypeId", - type: "uint256" - }, - { - internalType: "address", - name: "module", - type: "address" - } - ], - name: "ModuleAlreadyInstalled", - type: "error" - }, - { - inputs: [ - { - internalType: "uint256", - name: "moduleTypeId", - type: "uint256" - }, - { - internalType: "address", - name: "module", - type: "address" - } - ], - name: "ModuleNotInstalled", - type: "error" - }, - { - inputs: [ - { - internalType: "address", - name: "operator", - type: "address" - } - ], - name: "UnauthorizedOperation", - type: "error" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "contract IERC7484", - name: "registry", - type: "address" - } - ], - name: "ERC7484RegistryConfigured", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint256", - name: "moduleTypeId", - type: "uint256" - }, - { - indexed: false, - internalType: "address", - name: "module", - type: "address" - } - ], - name: "ModuleInstalled", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint256", - name: "moduleTypeId", - type: "uint256" - }, - { - indexed: false, - internalType: "address", - name: "module", - type: "address" - } - ], - name: "ModuleUninstalled", - type: "event" - }, - { - stateMutability: "payable", - type: "fallback" - }, - { - inputs: [], - name: "eip712Domain", - outputs: [ - { - internalType: "bytes1", - name: "fields", - type: "bytes1" - }, - { - internalType: "string", - name: "name", - type: "string" - }, - { - internalType: "string", - name: "version", - type: "string" - }, - { - internalType: "uint256", - name: "chainId", - type: "uint256" - }, - { - internalType: "address", - name: "verifyingContract", - type: "address" - }, - { - internalType: "bytes32", - name: "salt", - type: "bytes32" - }, - { - internalType: "uint256[]", - name: "extensions", - type: "uint256[]" - } - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "getActiveHook", - outputs: [ - { - internalType: "address", - name: "hook", - type: "address" - } - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "cursor", - type: "address" - }, - { - internalType: "uint256", - name: "size", - type: "uint256" - } - ], - name: "getExecutorsPaginated", - outputs: [ - { - internalType: "address[]", - name: "array", - type: "address[]" - }, - { - internalType: "address", - name: "next", - type: "address" - } - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes4", - name: "selector", - type: "bytes4" - } - ], - name: "getFallbackHandlerBySelector", - outputs: [ - { - internalType: "CallType", - name: "", - type: "bytes1" - }, - { - internalType: "address", - name: "", - type: "address" - } - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - components: [ - { - internalType: "address", - name: "module", - type: "address" - }, - { - internalType: "bytes", - name: "data", - type: "bytes" - } - ], - internalType: "struct BootstrapConfig[]", - name: "validators", - type: "tuple[]" - }, - { - components: [ - { - internalType: "address", - name: "module", - type: "address" - }, - { - internalType: "bytes", - name: "data", - type: "bytes" - } - ], - internalType: "struct BootstrapConfig[]", - name: "executors", - type: "tuple[]" - }, - { - components: [ - { - internalType: "address", - name: "module", - type: "address" - }, - { - internalType: "bytes", - name: "data", - type: "bytes" - } - ], - internalType: "struct BootstrapConfig", - name: "hook", - type: "tuple" - }, - { - components: [ - { - internalType: "address", - name: "module", - type: "address" - }, - { - internalType: "bytes", - name: "data", - type: "bytes" - } - ], - internalType: "struct BootstrapConfig[]", - name: "fallbacks", - type: "tuple[]" - }, - { - internalType: "contract IERC7484", - name: "registry", - type: "address" - }, - { - internalType: "address[]", - name: "attesters", - type: "address[]" - }, - { - internalType: "uint8", - name: "threshold", - type: "uint8" - } - ], - name: "getInitNexusCalldata", - outputs: [ - { - internalType: "bytes", - name: "init", - type: "bytes" - } - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - components: [ - { - internalType: "address", - name: "module", - type: "address" - }, - { - internalType: "bytes", - name: "data", - type: "bytes" - } - ], - internalType: "struct BootstrapConfig[]", - name: "validators", - type: "tuple[]" - }, - { - components: [ - { - internalType: "address", - name: "module", - type: "address" - }, - { - internalType: "bytes", - name: "data", - type: "bytes" - } - ], - internalType: "struct BootstrapConfig", - name: "hook", - type: "tuple" - }, - { - internalType: "contract IERC7484", - name: "registry", - type: "address" - }, - { - internalType: "address[]", - name: "attesters", - type: "address[]" - }, - { - internalType: "uint8", - name: "threshold", - type: "uint8" - } - ], - name: "getInitNexusScopedCalldata", - outputs: [ - { - internalType: "bytes", - name: "init", - type: "bytes" - } - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - components: [ - { - internalType: "address", - name: "module", - type: "address" - }, - { - internalType: "bytes", - name: "data", - type: "bytes" - } - ], - internalType: "struct BootstrapConfig", - name: "validator", - type: "tuple" - }, - { - internalType: "contract IERC7484", - name: "registry", - type: "address" - }, - { - internalType: "address[]", - name: "attesters", - type: "address[]" - }, - { - internalType: "uint8", - name: "threshold", - type: "uint8" - } - ], - name: "getInitNexusWithSingleValidatorCalldata", - outputs: [ - { - internalType: "bytes", - name: "init", - type: "bytes" - } - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "cursor", - type: "address" - }, - { - internalType: "uint256", - name: "size", - type: "uint256" - } - ], - name: "getValidatorsPaginated", - outputs: [ - { - internalType: "address[]", - name: "array", - type: "address[]" - }, - { - internalType: "address", - name: "next", - type: "address" - } - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - components: [ - { - internalType: "address", - name: "module", - type: "address" - }, - { - internalType: "bytes", - name: "data", - type: "bytes" - } - ], - internalType: "struct BootstrapConfig[]", - name: "validators", - type: "tuple[]" - }, - { - components: [ - { - internalType: "address", - name: "module", - type: "address" - }, - { - internalType: "bytes", - name: "data", - type: "bytes" - } - ], - internalType: "struct BootstrapConfig[]", - name: "executors", - type: "tuple[]" - }, - { - components: [ - { - internalType: "address", - name: "module", - type: "address" - }, - { - internalType: "bytes", - name: "data", - type: "bytes" - } - ], - internalType: "struct BootstrapConfig", - name: "hook", - type: "tuple" - }, - { - components: [ - { - internalType: "address", - name: "module", - type: "address" - }, - { - internalType: "bytes", - name: "data", - type: "bytes" - } - ], - internalType: "struct BootstrapConfig[]", - name: "fallbacks", - type: "tuple[]" - }, - { - internalType: "contract IERC7484", - name: "registry", - type: "address" - }, - { - internalType: "address[]", - name: "attesters", - type: "address[]" - }, - { - internalType: "uint8", - name: "threshold", - type: "uint8" - } - ], - name: "initNexus", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - components: [ - { - internalType: "address", - name: "module", - type: "address" - }, - { - internalType: "bytes", - name: "data", - type: "bytes" - } - ], - internalType: "struct BootstrapConfig[]", - name: "validators", - type: "tuple[]" - }, - { - components: [ - { - internalType: "address", - name: "module", - type: "address" - }, - { - internalType: "bytes", - name: "data", - type: "bytes" - } - ], - internalType: "struct BootstrapConfig", - name: "hook", - type: "tuple" - }, - { - internalType: "contract IERC7484", - name: "registry", - type: "address" - }, - { - internalType: "address[]", - name: "attesters", - type: "address[]" - }, - { - internalType: "uint8", - name: "threshold", - type: "uint8" - } - ], - name: "initNexusScoped", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "contract IModule", - name: "validator", - type: "address" - }, - { - internalType: "bytes", - name: "data", - type: "bytes" - }, - { - internalType: "contract IERC7484", - name: "registry", - type: "address" - }, - { - internalType: "address[]", - name: "attesters", - type: "address[]" - }, - { - internalType: "uint8", - name: "threshold", - type: "uint8" - } - ], - name: "initNexusWithSingleValidator", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [], - name: "registry", - outputs: [ - { - internalType: "contract IERC7484", - name: "", - type: "address" - } - ], - stateMutability: "view", - type: "function" - }, - { - stateMutability: "payable", - type: "receive" - } -] as const diff --git a/tests/contracts/abi/BootstrapLibAbi.ts b/tests/contracts/abi/BootstrapLibAbi.ts deleted file mode 100644 index 6bd8aafd..00000000 --- a/tests/contracts/abi/BootstrapLibAbi.ts +++ /dev/null @@ -1,110 +0,0 @@ -export const BootstrapLibAbi = [ - { - inputs: [ - { - internalType: "address", - name: "module", - type: "address" - }, - { - internalType: "bytes", - name: "data", - type: "bytes" - } - ], - name: "createArrayConfig", - outputs: [ - { - components: [ - { - internalType: "address", - name: "module", - type: "address" - }, - { - internalType: "bytes", - name: "data", - type: "bytes" - } - ], - internalType: "struct BootstrapConfig[]", - name: "config", - type: "tuple[]" - } - ], - stateMutability: "pure", - type: "function" - }, - { - inputs: [ - { - internalType: "address[]", - name: "modules", - type: "address[]" - }, - { - internalType: "bytes[]", - name: "datas", - type: "bytes[]" - } - ], - name: "createMultipleConfigs", - outputs: [ - { - components: [ - { - internalType: "address", - name: "module", - type: "address" - }, - { - internalType: "bytes", - name: "data", - type: "bytes" - } - ], - internalType: "struct BootstrapConfig[]", - name: "configs", - type: "tuple[]" - } - ], - stateMutability: "pure", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "module", - type: "address" - }, - { - internalType: "bytes", - name: "data", - type: "bytes" - } - ], - name: "createSingleConfig", - outputs: [ - { - components: [ - { - internalType: "address", - name: "module", - type: "address" - }, - { - internalType: "bytes", - name: "data", - type: "bytes" - } - ], - internalType: "struct BootstrapConfig", - name: "config", - type: "tuple" - } - ], - stateMutability: "pure", - type: "function" - } -] as const diff --git a/tests/contracts/abi/CounterAbi.ts b/tests/contracts/abi/CounterAbi.ts deleted file mode 100644 index 93c3650e..00000000 --- a/tests/contracts/abi/CounterAbi.ts +++ /dev/null @@ -1,36 +0,0 @@ -export const CounterAbi = [ - { - inputs: [], - name: "decrementNumber", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [], - name: "getNumber", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - } - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "incrementNumber", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [], - name: "revertOperation", - outputs: [], - stateMutability: "pure", - type: "function" - } -] as const diff --git a/tests/contracts/abi/K1ValidatorAbi.ts b/tests/contracts/abi/K1ValidatorAbi.ts deleted file mode 100644 index bcbbcfb9..00000000 --- a/tests/contracts/abi/K1ValidatorAbi.ts +++ /dev/null @@ -1,244 +0,0 @@ -export const K1ValidatorAbi = [ - { - inputs: [], - name: "ModuleAlreadyInitialized", - type: "error" - }, - { - inputs: [], - name: "NewOwnerIsContract", - type: "error" - }, - { - inputs: [], - name: "NoOwnerProvided", - type: "error" - }, - { - inputs: [], - name: "ZeroAddressNotAllowed", - type: "error" - }, - { - inputs: [ - { - internalType: "address", - name: "smartAccount", - type: "address" - } - ], - name: "isInitialized", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - } - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "typeID", - type: "uint256" - } - ], - name: "isModuleType", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - } - ], - stateMutability: "pure", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - { - internalType: "bytes32", - name: "hash", - type: "bytes32" - }, - { - internalType: "bytes", - name: "data", - type: "bytes" - } - ], - name: "isValidSignatureWithSender", - outputs: [ - { - internalType: "bytes4", - name: "", - type: "bytes4" - } - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "name", - outputs: [ - { - internalType: "string", - name: "", - type: "string" - } - ], - stateMutability: "pure", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes", - name: "data", - type: "bytes" - } - ], - name: "onInstall", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes", - name: "", - type: "bytes" - } - ], - name: "onUninstall", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address" - } - ], - name: "smartAccountOwners", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - } - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "newOwner", - type: "address" - } - ], - name: "transferOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - components: [ - { - internalType: "address", - name: "sender", - type: "address" - }, - { - internalType: "uint256", - name: "nonce", - type: "uint256" - }, - { - internalType: "bytes", - name: "initCode", - type: "bytes" - }, - { - internalType: "bytes", - name: "callData", - type: "bytes" - }, - { - internalType: "bytes32", - name: "accountGasLimits", - type: "bytes32" - }, - { - internalType: "uint256", - name: "preVerificationGas", - type: "uint256" - }, - { - internalType: "bytes32", - name: "gasFees", - type: "bytes32" - }, - { - internalType: "bytes", - name: "paymasterAndData", - type: "bytes" - }, - { - internalType: "bytes", - name: "signature", - type: "bytes" - } - ], - internalType: "struct PackedUserOperation", - name: "userOp", - type: "tuple" - }, - { - internalType: "bytes32", - name: "userOpHash", - type: "bytes32" - } - ], - name: "validateUserOp", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - } - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "version", - outputs: [ - { - internalType: "string", - name: "", - type: "string" - } - ], - stateMutability: "pure", - type: "function" - } -] as const diff --git a/tests/contracts/abi/MockExecutorAbi.ts b/tests/contracts/abi/MockExecutorAbi.ts deleted file mode 100644 index ec9f7ba1..00000000 --- a/tests/contracts/abi/MockExecutorAbi.ts +++ /dev/null @@ -1,309 +0,0 @@ -export const MockExecutorAbi = [ - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "bytes32", - name: "dataFirstWord", - type: "bytes32" - } - ], - name: "ExecutorOnInstallCalled", - type: "event" - }, - { - inputs: [ - { - internalType: "ExecutionMode", - name: "mode", - type: "bytes32" - }, - { - internalType: "contract INexus", - name: "account", - type: "address" - }, - { - internalType: "address", - name: "target", - type: "address" - }, - { - internalType: "uint256", - name: "value", - type: "uint256" - }, - { - internalType: "bytes", - name: "callData", - type: "bytes" - } - ], - name: "customExecuteViaAccount", - outputs: [ - { - internalType: "bytes[]", - name: "returnData", - type: "bytes[]" - } - ], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "contract INexus", - name: "account", - type: "address" - }, - { - internalType: "bytes", - name: "callData", - type: "bytes" - } - ], - name: "execDelegatecall", - outputs: [ - { - internalType: "bytes[]", - name: "returnData", - type: "bytes[]" - } - ], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "contract INexus", - name: "account", - type: "address" - }, - { - components: [ - { - internalType: "address", - name: "target", - type: "address" - }, - { - internalType: "uint256", - name: "value", - type: "uint256" - }, - { - internalType: "bytes", - name: "callData", - type: "bytes" - } - ], - internalType: "struct Execution[]", - name: "execs", - type: "tuple[]" - } - ], - name: "executeBatchViaAccount", - outputs: [ - { - internalType: "bytes[]", - name: "returnData", - type: "bytes[]" - } - ], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "contract INexus", - name: "account", - type: "address" - }, - { - internalType: "address", - name: "target", - type: "address" - }, - { - internalType: "uint256", - name: "value", - type: "uint256" - }, - { - internalType: "bytes", - name: "callData", - type: "bytes" - } - ], - name: "executeViaAccount", - outputs: [ - { - internalType: "bytes[]", - name: "returnData", - type: "bytes[]" - } - ], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [], - name: "getModuleTypes", - outputs: [ - { - internalType: "EncodedModuleTypes", - name: "", - type: "uint256" - } - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address" - } - ], - name: "isInitialized", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - } - ], - stateMutability: "pure", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "moduleTypeId", - type: "uint256" - } - ], - name: "isModuleType", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - } - ], - stateMutability: "pure", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes", - name: "data", - type: "bytes" - } - ], - name: "onInstall", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes", - name: "data", - type: "bytes" - } - ], - name: "onUninstall", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "contract INexus", - name: "account", - type: "address" - }, - { - components: [ - { - internalType: "address", - name: "target", - type: "address" - }, - { - internalType: "uint256", - name: "value", - type: "uint256" - }, - { - internalType: "bytes", - name: "callData", - type: "bytes" - } - ], - internalType: "struct Execution[]", - name: "execs", - type: "tuple[]" - } - ], - name: "tryExecuteBatchViaAccount", - outputs: [ - { - internalType: "bytes[]", - name: "returnData", - type: "bytes[]" - } - ], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "contract INexus", - name: "account", - type: "address" - }, - { - internalType: "address", - name: "target", - type: "address" - }, - { - internalType: "uint256", - name: "value", - type: "uint256" - }, - { - internalType: "bytes", - name: "callData", - type: "bytes" - } - ], - name: "tryExecuteViaAccount", - outputs: [ - { - internalType: "bytes[]", - name: "returnData", - type: "bytes[]" - } - ], - stateMutability: "nonpayable", - type: "function" - }, - { - stateMutability: "payable", - type: "receive" - } -] as const diff --git a/tests/contracts/abi/MockHandlerAbi.ts b/tests/contracts/abi/MockHandlerAbi.ts deleted file mode 100644 index 0daeaab6..00000000 --- a/tests/contracts/abi/MockHandlerAbi.ts +++ /dev/null @@ -1,227 +0,0 @@ -export const MockHandlerAbi = [ - { - inputs: [ - { - internalType: "bytes4", - name: "selector", - type: "bytes4" - } - ], - name: "NonExistingMethodCalled", - type: "error" - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address" - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256" - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes" - } - ], - name: "GenericFallbackCalled", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "bytes32", - name: "dataFirstWord", - type: "bytes32" - } - ], - name: "HandlerOnInstallCalled", - type: "event" - }, - { - stateMutability: "nonpayable", - type: "fallback" - }, - { - inputs: [], - name: "NAME", - outputs: [ - { - internalType: "string", - name: "", - type: "string" - } - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "VERSION", - outputs: [ - { - internalType: "string", - name: "", - type: "string" - } - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "count", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - } - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "getState", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - } - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address" - } - ], - name: "isInitialized", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - } - ], - stateMutability: "pure", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "moduleTypeId", - type: "uint256" - } - ], - name: "isModuleType", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - } - ], - stateMutability: "pure", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "sender", - type: "address" - }, - { - internalType: "uint256", - name: "value", - type: "uint256" - }, - { - internalType: "bytes", - name: "data", - type: "bytes" - } - ], - name: "onGenericFallback", - outputs: [ - { - internalType: "bytes4", - name: "", - type: "bytes4" - } - ], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes", - name: "data", - type: "bytes" - } - ], - name: "onInstall", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes", - name: "data", - type: "bytes" - } - ], - name: "onUninstall", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [], - name: "revertingFunction", - outputs: [], - stateMutability: "pure", - type: "function" - }, - { - inputs: [], - name: "stateChangingFunction", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [], - name: "successFunction", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32" - } - ], - stateMutability: "pure", - type: "function" - } -] as const diff --git a/tests/contracts/abi/MockHookAbi.ts b/tests/contracts/abi/MockHookAbi.ts deleted file mode 100644 index 11b57fab..00000000 --- a/tests/contracts/abi/MockHookAbi.ts +++ /dev/null @@ -1,133 +0,0 @@ -export const MockHookAbi = [ - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "bytes32", - name: "dataFirstWord", - type: "bytes32" - } - ], - name: "HookOnInstallCalled", - type: "event" - }, - { - anonymous: false, - inputs: [], - name: "PostCheckCalled", - type: "event" - }, - { - anonymous: false, - inputs: [], - name: "PreCheckCalled", - type: "event" - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address" - } - ], - name: "isInitialized", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - } - ], - stateMutability: "pure", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "moduleTypeId", - type: "uint256" - } - ], - name: "isModuleType", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - } - ], - stateMutability: "pure", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes", - name: "data", - type: "bytes" - } - ], - name: "onInstall", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes", - name: "", - type: "bytes" - } - ], - name: "onUninstall", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes", - name: "hookData", - type: "bytes" - } - ], - name: "postCheck", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - { - internalType: "uint256", - name: "", - type: "uint256" - }, - { - internalType: "bytes", - name: "", - type: "bytes" - } - ], - name: "preCheck", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes" - } - ], - stateMutability: "nonpayable", - type: "function" - } -] as const diff --git a/tests/contracts/abi/MockRegistryAbi.ts b/tests/contracts/abi/MockRegistryAbi.ts deleted file mode 100644 index 0b058e90..00000000 --- a/tests/contracts/abi/MockRegistryAbi.ts +++ /dev/null @@ -1,162 +0,0 @@ -export const MockRegistryAbi = [ - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address" - } - ], - name: "Log", - type: "event" - }, - { - anonymous: false, - inputs: [], - name: "NewTrustedAttesters", - type: "event" - }, - { - inputs: [ - { - internalType: "address", - name: "module", - type: "address" - }, - { - internalType: "address[]", - name: "attesters", - type: "address[]" - }, - { - internalType: "uint256", - name: "threshold", - type: "uint256" - } - ], - name: "check", - outputs: [], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "module", - type: "address" - }, - { - internalType: "uint256", - name: "moduleType", - type: "uint256" - }, - { - internalType: "address[]", - name: "attesters", - type: "address[]" - }, - { - internalType: "uint256", - name: "threshold", - type: "uint256" - } - ], - name: "check", - outputs: [], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "module", - type: "address" - }, - { - internalType: "uint256", - name: "moduleType", - type: "uint256" - } - ], - name: "check", - outputs: [], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "module", - type: "address" - } - ], - name: "check", - outputs: [], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "smartAccount", - type: "address" - }, - { - internalType: "address", - name: "module", - type: "address" - } - ], - name: "checkForAccount", - outputs: [], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "smartAccount", - type: "address" - }, - { - internalType: "address", - name: "module", - type: "address" - }, - { - internalType: "uint256", - name: "moduleType", - type: "uint256" - } - ], - name: "checkForAccount", - outputs: [], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "uint8", - name: "", - type: "uint8" - }, - { - internalType: "address[]", - name: "attesters", - type: "address[]" - } - ], - name: "trustAttesters", - outputs: [], - stateMutability: "nonpayable", - type: "function" - } -] as const diff --git a/tests/contracts/abi/MockTokenAbi.ts b/tests/contracts/abi/MockTokenAbi.ts deleted file mode 100644 index 213ee0cf..00000000 --- a/tests/contracts/abi/MockTokenAbi.ts +++ /dev/null @@ -1,344 +0,0 @@ -export const MockTokenAbi = [ - { - inputs: [ - { - internalType: "string", - name: "name", - type: "string" - }, - { - internalType: "string", - name: "symbol", - type: "string" - } - ], - stateMutability: "nonpayable", - type: "constructor" - }, - { - inputs: [ - { - internalType: "address", - name: "spender", - type: "address" - }, - { - internalType: "uint256", - name: "allowance", - type: "uint256" - }, - { - internalType: "uint256", - name: "needed", - type: "uint256" - } - ], - name: "ERC20InsufficientAllowance", - type: "error" - }, - { - inputs: [ - { - internalType: "address", - name: "sender", - type: "address" - }, - { - internalType: "uint256", - name: "balance", - type: "uint256" - }, - { - internalType: "uint256", - name: "needed", - type: "uint256" - } - ], - name: "ERC20InsufficientBalance", - type: "error" - }, - { - inputs: [ - { - internalType: "address", - name: "approver", - type: "address" - } - ], - name: "ERC20InvalidApprover", - type: "error" - }, - { - inputs: [ - { - internalType: "address", - name: "receiver", - type: "address" - } - ], - name: "ERC20InvalidReceiver", - type: "error" - }, - { - inputs: [ - { - internalType: "address", - name: "sender", - type: "address" - } - ], - name: "ERC20InvalidSender", - type: "error" - }, - { - inputs: [ - { - internalType: "address", - name: "spender", - type: "address" - } - ], - name: "ERC20InvalidSpender", - type: "error" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "spender", - type: "address" - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256" - } - ], - name: "Approval", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address" - }, - { - indexed: false, - internalType: "uint256", - name: "value", - type: "uint256" - } - ], - name: "Transfer", - type: "event" - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address" - }, - { - internalType: "address", - name: "spender", - type: "address" - } - ], - name: "allowance", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - } - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "spender", - type: "address" - }, - { - internalType: "uint256", - name: "value", - type: "uint256" - } - ], - name: "approve", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - } - ], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "account", - type: "address" - } - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - } - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "decimals", - outputs: [ - { - internalType: "uint8", - name: "", - type: "uint8" - } - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "sender", - type: "address" - }, - { - internalType: "uint256", - name: "amount", - type: "uint256" - } - ], - name: "mint", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [], - name: "name", - outputs: [ - { - internalType: "string", - name: "", - type: "string" - } - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "symbol", - outputs: [ - { - internalType: "string", - name: "", - type: "string" - } - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "totalSupply", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256" - } - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "value", - type: "uint256" - } - ], - name: "transfer", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - } - ], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address" - }, - { - internalType: "address", - name: "to", - type: "address" - }, - { - internalType: "uint256", - name: "value", - type: "uint256" - } - ], - name: "transferFrom", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - } - ], - stateMutability: "nonpayable", - type: "function" - } -] as const diff --git a/tests/contracts/abi/MockValidatorAbi.ts b/tests/contracts/abi/MockValidatorAbi.ts deleted file mode 100644 index d3ae3504..00000000 --- a/tests/contracts/abi/MockValidatorAbi.ts +++ /dev/null @@ -1,228 +0,0 @@ -export const MockValidatorAbi = [ - { - inputs: [ - { - internalType: "address", - name: "account", - type: "address" - } - ], - name: "getOwner", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - } - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address" - } - ], - name: "isInitialized", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - } - ], - stateMutability: "pure", - type: "function" - }, - { - inputs: [ - { - internalType: "uint256", - name: "moduleTypeId", - type: "uint256" - } - ], - name: "isModuleType", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - } - ], - stateMutability: "pure", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "account", - type: "address" - }, - { - internalType: "address", - name: "owner", - type: "address" - } - ], - name: "isOwner", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool" - } - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address" - }, - { - internalType: "bytes32", - name: "hash", - type: "bytes32" - }, - { - internalType: "bytes", - name: "signature", - type: "bytes" - } - ], - name: "isValidSignatureWithSender", - outputs: [ - { - internalType: "bytes4", - name: "", - type: "bytes4" - } - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes", - name: "data", - type: "bytes" - } - ], - name: "onInstall", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes", - name: "data", - type: "bytes" - } - ], - name: "onUninstall", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address" - } - ], - name: "smartAccountOwners", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - } - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - components: [ - { - internalType: "address", - name: "sender", - type: "address" - }, - { - internalType: "uint256", - name: "nonce", - type: "uint256" - }, - { - internalType: "bytes", - name: "initCode", - type: "bytes" - }, - { - internalType: "bytes", - name: "callData", - type: "bytes" - }, - { - internalType: "bytes32", - name: "accountGasLimits", - type: "bytes32" - }, - { - internalType: "uint256", - name: "preVerificationGas", - type: "uint256" - }, - { - internalType: "bytes32", - name: "gasFees", - type: "bytes32" - }, - { - internalType: "bytes", - name: "paymasterAndData", - type: "bytes" - }, - { - internalType: "bytes", - name: "signature", - type: "bytes" - } - ], - internalType: "struct PackedUserOperation", - name: "userOp", - type: "tuple" - }, - { - internalType: "bytes32", - name: "userOpHash", - type: "bytes32" - } - ], - name: "validateUserOp", - outputs: [ - { - internalType: "uint256", - name: "validation", - type: "uint256" - } - ], - stateMutability: "view", - type: "function" - } -] as const diff --git a/tests/contracts/abi/NexusAccountFactoryAbi.ts b/tests/contracts/abi/NexusAccountFactoryAbi.ts deleted file mode 100644 index f5f1fc7d..00000000 --- a/tests/contracts/abi/NexusAccountFactoryAbi.ts +++ /dev/null @@ -1,323 +0,0 @@ -export const NexusAccountFactoryAbi = [ - { - inputs: [ - { - internalType: "address", - name: "implementation_", - type: "address" - }, - { - internalType: "address", - name: "owner_", - type: "address" - } - ], - stateMutability: "nonpayable", - type: "constructor" - }, - { - inputs: [ - { - internalType: "address", - name: "account", - type: "address" - } - ], - name: "AccountAlreadyDeployed", - type: "error" - }, - { - inputs: [], - name: "AlreadyInitialized", - type: "error" - }, - { - inputs: [], - name: "ImplementationAddressCanNotBeZero", - type: "error" - }, - { - inputs: [], - name: "InvalidEntryPointAddress", - type: "error" - }, - { - inputs: [], - name: "NewOwnerIsZeroAddress", - type: "error" - }, - { - inputs: [], - name: "NoHandoverRequest", - type: "error" - }, - { - inputs: [], - name: "Unauthorized", - type: "error" - }, - { - inputs: [], - name: "ZeroAddressNotAllowed", - type: "error" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "account", - type: "address" - }, - { - indexed: true, - internalType: "bytes", - name: "initData", - type: "bytes" - }, - { - indexed: true, - internalType: "bytes32", - name: "salt", - type: "bytes32" - } - ], - name: "AccountCreated", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "pendingOwner", - type: "address" - } - ], - name: "OwnershipHandoverCanceled", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "pendingOwner", - type: "address" - } - ], - name: "OwnershipHandoverRequested", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "oldOwner", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "newOwner", - type: "address" - } - ], - name: "OwnershipTransferred", - type: "event" - }, - { - inputs: [], - name: "ACCOUNT_IMPLEMENTATION", - outputs: [ - { - internalType: "address", - name: "", - type: "address" - } - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "epAddress", - type: "address" - }, - { - internalType: "uint32", - name: "unstakeDelaySec", - type: "uint32" - } - ], - name: "addStake", - outputs: [], - stateMutability: "payable", - type: "function" - }, - { - inputs: [], - name: "cancelOwnershipHandover", - outputs: [], - stateMutability: "payable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "pendingOwner", - type: "address" - } - ], - name: "completeOwnershipHandover", - outputs: [], - stateMutability: "payable", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes", - name: "", - type: "bytes" - }, - { - internalType: "bytes32", - name: "", - type: "bytes32" - } - ], - name: "computeAccountAddress", - outputs: [ - { - internalType: "address payable", - name: "expectedAddress", - type: "address" - } - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes", - name: "initData", - type: "bytes" - }, - { - internalType: "bytes32", - name: "salt", - type: "bytes32" - } - ], - name: "createAccount", - outputs: [ - { - internalType: "address payable", - name: "", - type: "address" - } - ], - stateMutability: "payable", - type: "function" - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "result", - type: "address" - } - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "pendingOwner", - type: "address" - } - ], - name: "ownershipHandoverExpiresAt", - outputs: [ - { - internalType: "uint256", - name: "result", - type: "uint256" - } - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "renounceOwnership", - outputs: [], - stateMutability: "payable", - type: "function" - }, - { - inputs: [], - name: "requestOwnershipHandover", - outputs: [], - stateMutability: "payable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "newOwner", - type: "address" - } - ], - name: "transferOwnership", - outputs: [], - stateMutability: "payable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "epAddress", - type: "address" - } - ], - name: "unlockStake", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "epAddress", - type: "address" - }, - { - internalType: "address payable", - name: "withdrawAddress", - type: "address" - } - ], - name: "withdrawStake", - outputs: [], - stateMutability: "nonpayable", - type: "function" - } -] as const diff --git a/tests/contracts/abi/StakeableAbi.ts b/tests/contracts/abi/StakeableAbi.ts deleted file mode 100644 index 9dc5da90..00000000 --- a/tests/contracts/abi/StakeableAbi.ts +++ /dev/null @@ -1,211 +0,0 @@ -export const StakeableAbi = [ - { - inputs: [ - { - internalType: "address", - name: "newOwner", - type: "address" - } - ], - stateMutability: "nonpayable", - type: "constructor" - }, - { - inputs: [], - name: "AlreadyInitialized", - type: "error" - }, - { - inputs: [], - name: "InvalidEntryPointAddress", - type: "error" - }, - { - inputs: [], - name: "NewOwnerIsZeroAddress", - type: "error" - }, - { - inputs: [], - name: "NoHandoverRequest", - type: "error" - }, - { - inputs: [], - name: "Unauthorized", - type: "error" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "pendingOwner", - type: "address" - } - ], - name: "OwnershipHandoverCanceled", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "pendingOwner", - type: "address" - } - ], - name: "OwnershipHandoverRequested", - type: "event" - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "oldOwner", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "newOwner", - type: "address" - } - ], - name: "OwnershipTransferred", - type: "event" - }, - { - inputs: [ - { - internalType: "address", - name: "epAddress", - type: "address" - }, - { - internalType: "uint32", - name: "unstakeDelaySec", - type: "uint32" - } - ], - name: "addStake", - outputs: [], - stateMutability: "payable", - type: "function" - }, - { - inputs: [], - name: "cancelOwnershipHandover", - outputs: [], - stateMutability: "payable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "pendingOwner", - type: "address" - } - ], - name: "completeOwnershipHandover", - outputs: [], - stateMutability: "payable", - type: "function" - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "result", - type: "address" - } - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "pendingOwner", - type: "address" - } - ], - name: "ownershipHandoverExpiresAt", - outputs: [ - { - internalType: "uint256", - name: "result", - type: "uint256" - } - ], - stateMutability: "view", - type: "function" - }, - { - inputs: [], - name: "renounceOwnership", - outputs: [], - stateMutability: "payable", - type: "function" - }, - { - inputs: [], - name: "requestOwnershipHandover", - outputs: [], - stateMutability: "payable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "newOwner", - type: "address" - } - ], - name: "transferOwnership", - outputs: [], - stateMutability: "payable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "epAddress", - type: "address" - } - ], - name: "unlockStake", - outputs: [], - stateMutability: "nonpayable", - type: "function" - }, - { - inputs: [ - { - internalType: "address", - name: "epAddress", - type: "address" - }, - { - internalType: "address payable", - name: "withdrawAddress", - type: "address" - } - ], - name: "withdrawStake", - outputs: [], - stateMutability: "nonpayable", - type: "function" - } -] as const diff --git a/tests/contracts/abi/index.ts b/tests/contracts/abi/index.ts deleted file mode 100644 index 17426200..00000000 --- a/tests/contracts/abi/index.ts +++ /dev/null @@ -1,11 +0,0 @@ -export * from "./MockHookAbi" -export * from "./StakeableAbi" -export * from "./NexusAccountFactoryAbi" -export * from "./BiconomyMetaFactoryAbi" -export * from "./CounterAbi" -export * from "./MockValidatorAbi" -export * from "./MockTokenAbi" -export * from "./BootstrapLibAbi" -export * from "./MockRegistryAbi" -export * from "./MockHandlerAbi" -export * from "./BootstrapAbi" diff --git a/tests/contracts/deployment.json b/tests/contracts/deployment.json deleted file mode 100644 index ab70f550..00000000 --- a/tests/contracts/deployment.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "MockHook": { - "address": "0xfef96a7D100FC9b4B389C1ECdFB2cA46a56aE0a1", - "bytecode": "0x608080604052346015576103ad908161001b8239f35b600080fdfe608080604052600436101561001357600080fd5b60003560e01c908163173bf7da146102225781636d61fe701461029a575080638a91b0e314610222578063d60b347f146101df578063d68f6025146100a35763ecd059611461006157600080fd5b3461009e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009e57602060405160048035148152f35b600080fd5b3461009e5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009e576100da610354565b5060443567ffffffffffffffff811161009e576100fb903690600401610326565b50506040517f9cfcecc93749ff1f68fdcbc9d06f1e4b649fe26c0f3b7eb28f812853952df89e600080a16020810181811067ffffffffffffffff8211176101b0576040526000815260405190602082528181519182602083015260005b8381106101985750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f836000604080968601015201168101030190f35b60208282018101516040878401015285935001610158565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b3461009e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009e57610216610354565b50602060405160008152f35b3461009e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009e5760043567ffffffffffffffff811161009e57610271903690600401610326565b50507f4fe6b98bcb5f3f4e11f2cb49cfe134ffdd4a18546f6a3bdc15d6503645e144ac600080a1005b3461009e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009e5760043567ffffffffffffffff811161009e576102e9903690600401610326565b60208110156102f457005b60201161009e577f14e90641f423866d7177454e587228d86b9edce2f3a3323e7b2c70598df176b191602091358152a1005b9181601f8401121561009e5782359167ffffffffffffffff831161009e576020838186019501011161009e57565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361009e5756fea2646970667358221220a7632c3d3ba5674614ce11a9ed6c206d5b0f888f2915437c2f2afcedfb5a91d864736f6c634300081a0033" - }, - "Stakeable": { - "address": "0xc60F4C65a698C0FE5eddACfB71661B580D15BDaa", - "bytecode": "0x608034609057601f61087738819003918201601f19168301916001600160401b03831184841017609557808492602094604052833981010312609057516001600160a01b0381169081900360905780638b78c6d819547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3638b78c6d819556040516107cb90816100ac8239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604052600436101561001257600080fd5b6000803560e01c806325692962146105da57806345171159146104db5780634a1ce5991461043557806354d1f13d146103d1578063715018a6146103325780638da5cb5b146102c1578063b36f9705146101a7578063f04e283e1461013b578063f2fde38b146100de5763fee81cf41461008b57600080fd5b346100db5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100db576100c2610643565b9063389a75e1600c5252602080600c2054604051908152f35b80fd5b5060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100db57610111610643565b6101196106db565b8060601b1561012e5761012b90610713565b80f35b637448fbae82526004601cfd5b5060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100db5761016e610643565b6101766106db565b63389a75e1600c528082526020600c208054421161019a57908261012b9255610713565b636f5e881883526004601cfd5b50346100db5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100db576101df610643565b906024359173ffffffffffffffffffffffffffffffffffffffff83168093036102bd5773ffffffffffffffffffffffffffffffffffffffff906102206106db565b168015610295578192813b156102915782916024839260405194859384927fc23a5cea00000000000000000000000000000000000000000000000000000000845260048401525af18015610286576102755750f35b8161027f9161066b565b6100db5780f35b6040513d84823e3d90fd5b5050fd5b6004827f91fdf191000000000000000000000000000000000000000000000000000000008152fd5b5080fd5b50346100db57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100db5760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275473ffffffffffffffffffffffffffffffffffffffff60405191168152f35b50807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100db576103646106db565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275580f35b50807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100db5763389a75e1600c52338152806020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c928280a280f35b50346100db5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100db5773ffffffffffffffffffffffffffffffffffffffff610482610643565b61048a6106db565b168015610295578082913b156104d8578180916004604051809481937fbb9fe6bf0000000000000000000000000000000000000000000000000000000083525af18015610286576102755750f35b50fd5b5060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100db5761050e610643565b6024359063ffffffff82168092036105d65773ffffffffffffffffffffffffffffffffffffffff9061053e6106db565b169081156105ae578290823b156102bd5781906024604051809581937f0396cb60000000000000000000000000000000000000000000000000000000008352600483015234905af180156105a1576105935780f35b61059c9161066b565b388180f35b50604051903d90823e3d90fd5b6004837f91fdf191000000000000000000000000000000000000000000000000000000008152fd5b8280fd5b50807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100db5763389a75e1600c523381526202a30042016020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d8280a280f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361066657565b600080fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176106ac57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754330361070557565b6382b429006000526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a37fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275556fea264697066735822122065db8b72f59184aea7b3fbbe6352c6cddbaf1f95250d3f7b695582df25592ec564736f6c634300081a0033" - }, - "Nexus": { - "address": "0x84Dbc7E4D1d1743150550af447ADe0e31A52eb5f", - "bytecode": "0x610180604052346102e157600061635c6020813803918261001f816102e6565b9384928339810103126102dd5751906001600160a01b038216908183036102da5760a0903060805246825261005460406102e6565b6005815260208101644e6578757360d81b815261007160406102e6565b90600a8252602082019269312e302e302d6265746160b01b845251902092505190208160c0528060e052604051917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835260208301526040820152466060820152306080820152206101005230610140523061016052156102c9576101205260016000527f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f0160205260008051602061633c833981519152546001600160a01b03166102b8576001600081905260008051602061633c83398151915280546001600160a01b03191690911790557f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f0060205260008051602061631c833981519152546001600160a01b03166102b857600160008190527f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f0060205260008051602061631c83398151915280546001600160a01b0319169091179055604051615ffa908161032282396080518181816106580152613aa3015260a0518181816106350152613a80015260c0518181816106ba0152613b17015260e0518181816106e00152613b3d0152610100518181816106130152613a5e01526101205181818161058e0152818161088101528181610a7001528181610b6c015281816112c40152818161140b015281816116ba015281816119120152818161197b01528181611e7501528181611f09015261325d015261014051818181610bd50152610d11015261016051815050f35b6329e42f3360e11b60005260046000fd5b6307e355bf60e31b60005260046000fd5b80fd5b5080fd5b600080fd5b6040519190601f01601f191682016001600160401b0381118382101761030b57604052565b634e487b7160e01b600052604160045260246000fdfe6080604052600436101561001e575b361561001c5761001c6133a8565b005b60003560e01c80630a664dba146101fe578063112d3a7d146101f95780631626ba7e146101f457806319822f7c146101ef5780633644e515146101ea578063481ddd23146101e55780634a58db19146101e05780634b6a1419146101db5780634d44560d146101d65780634f1ef286146101d157806352d1902d146101cc5780635faac46b146101c75780636575f6aa146101c25780637b103999146101bd57806384b0196e146101b85780638dd7712f146101b35780639517e29f146101ae5780639cfd7cff146101a9578063a71763a8146101a4578063aaf10f421461019f578063b0d691fe1461019a578063c399ec8814610195578063d03c791414610190578063d620c85a1461018b578063d691c96414610186578063d86f2b3c14610181578063e9ae5c531461017c578063ea5f61d014610177578063eab77e17146101725763f2dc691d0361000e5761229b565b612204565b612089565b611ee8565b611dd2565b611c50565b611b2b565b6119ac565b611936565b6118c7565b611830565b611698565b61161b565b6113e8565b611260565b61116a565b6110b2565b61106e565b610dd1565b610cdf565b610afd565b610a33565b6108a9565b61084f565b610745565b6105e2565b610515565b610377565b610351565b610213565b600091031261020e57565b600080fd5b3461020e5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261020e57602073ffffffffffffffffffffffffffffffffffffffff7f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f03541673ffffffffffffffffffffffffffffffffffffffff60405191168152f35b73ffffffffffffffffffffffffffffffffffffffff81160361020e57565b35906102c38261029a565b565b9181601f8401121561020e5782359167ffffffffffffffff831161020e576020838186019501011161020e57565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261020e576004359160243561032d8161029a565b916044359067ffffffffffffffff821161020e5761034d916004016102c5565b9091565b3461020e57602061036d610364366102f3565b92919091613611565b6040519015158152f35b3461020e5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261020e5760043560243567ffffffffffffffff811161020e576103c99036906004016102c5565b90918160141161020e578261044973ffffffffffffffffffffffffffffffffffffffff926104438560209661042b6104256104839a7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000090351690565b60601c90565b9561043e87610439816143c8565b6123e7565b6122d7565b916136c5565b939091604051968795869485937ff551e2ee00000000000000000000000000000000000000000000000000000000855233600486016124fa565b0392165afa8015610501576104ce916000916104d2575b506040517fffffffff0000000000000000000000000000000000000000000000000000000090911681529081906020820190565b0390f35b6104f4915060203d6020116104fa575b6104ec8183612462565b8101906124a3565b3861049a565b503d6104e2565b61252c565b908161012091031261020e5790565b3461020e5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261020e5760043567ffffffffffffffff811161020e576105676104ce913690600401610506565b602435906105ba6044359283926105b573ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163314612538565b6129a6565b916105d1575b506040519081529081906020820190565b60009081803892335af150386105c0565b3461020e5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261020e577f0000000000000000000000000000000000000000000000000000000000000000467f000000000000000000000000000000000000000000000000000000000000000014307f000000000000000000000000000000000000000000000000000000000000000014161561068a575b602090604051908152f35b50602061071460a06040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f000000000000000000000000000000000000000000000000000000000000000060408201524660608201523060808201522090565b905061067f565b7fffffffff0000000000000000000000000000000000000000000000000000000081160361020e57565b3461020e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261020e576107d46004356107838161071b565b7fffffffff00000000000000000000000000000000000000000000000000000000166000527f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f02602052604060002090565b6040516040810181811067ffffffffffffffff82111761084a576040908152915473ffffffffffffffffffffffffffffffffffffffff811680835260589190911b7fff00000000000000000000000000000000000000000000000000000000000000166020928301819052835190815291820152f35b612433565b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261020e576000388180347f00000000000000000000000000000000000000000000000000000000000000005af11561020e57005b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261020e5760043567ffffffffffffffff811161020e576108f39036906004016102c5565b9060016000527f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f0160205273ffffffffffffffffffffffffffffffffffffffff60406000205416610a095760006109af819284600184527f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f0160205261099f6040852060017fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b6109a7614de7565b810190612b3e565b9073ffffffffffffffffffffffffffffffffffffffff60208351930191165af46109d7612b75565b50156109df57005b7f315927c50000000000000000000000000000000000000000000000000000000060005260046000fd5b7f53c85e660000000000000000000000000000000000000000000000000000000060005260046000fd5b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261020e576000600435610a6b8161029a565b6024357f00000000000000000000000000000000000000000000000000000000000000009173ffffffffffffffffffffffffffffffffffffffff831633148015610af4575b610ab990612538565b6014526034526f205c28780000000000000000000000008252604460108338935af115610ae7576000603452005b3d60006040513e3d604051fd5b50333014610ab0565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261020e57600435610b338161029a565b60243567ffffffffffffffff811161020e57610b539036906004016102c5565b909173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633148081159182610cd6575b610ba190612538565b73ffffffffffffffffffffffffffffffffffffffff831692610bc4841515612ba5565b610bd0813b1515612ba5565b3055307f000000000000000000000000000000000000000000000000000000000000000014610cc85790610cbf575b610c0890612538565b6352d1902d6001527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc602060016004601d855afa5103610cb157807fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a281817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55610c9257005b816000926040519485378338925af415610ca857005b3d6000823e3d90fd5b6355299b496001526004601dfd5b50333014610bff565b639f03a0266000526004601cfd5b50333014610b98565b3461020e5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261020e57307f000000000000000000000000000000000000000000000000000000000000000003610cc85760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b909291926040820160408352815180915260206060840192019060005b818110610da55750505073ffffffffffffffffffffffffffffffffffffffff6020919416910152565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101610d7c565b3461020e5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261020e57600435610e0c8161029a565b602435906000600173ffffffffffffffffffffffffffffffffffffffff8316141580611058575b611016578215610fee57610eaf610e95610e4e859495614ea8565b929473ffffffffffffffffffffffffffffffffffffffff166000527f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f00602052604060002090565b5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff81168015159081610fe2575b5080610fd9575b15610f6057610f54610e9582610f0f610f5a94610ef489886147f7565b9073ffffffffffffffffffffffffffffffffffffffff169052565b73ffffffffffffffffffffffffffffffffffffffff166000527f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f00602052604060002090565b93614f26565b92610eaf565b9083600173ffffffffffffffffffffffffffffffffffffffff8416141580610fd0575b610f99575b81526104ce60405192839283610d5f565b9150610fca610fb0610faa84614f58565b836147f7565b5173ffffffffffffffffffffffffffffffffffffffff1690565b91610f88565b50801515610f83565b50828410610ed7565b60019150141538610ed0565b807ff72508170000000000000000000000000000000000000000000000000000000060049252fd5b7f7c84ecfb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600452602490fd5b50611069611065836143c8565b1590565b610e33565b3461020e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261020e5760206110aa600435613a5c565b604051908152f35b3461020e5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261020e57602073ffffffffffffffffffffffffffffffffffffffff60005416604051908152f35b60005b8381106111175750506000910152565b8181015183820152602001611107565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f60209361116381518092818752878088019101611104565b0116010190565b3461020e5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261020e577fff0000000000000000000000000000000000000000000000000000000000000061121073ffffffffffffffffffffffffffffffffffffffff6112026111dd612bd6565b97946040999397919699949294519a8b9a168a5260e060208b015260e08a0190611127565b9088820360408a0152611127565b93606087015216608085015260a084015282810360c08401526020808351928381520192019060005b818110611247575050500390f35b8251845285945060209384019390920191600101611239565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261020e5760043567ffffffffffffffff811161020e576112aa903690600401610506565b6112eb73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163314612538565b6112f860608201826126f4565b908160041161020e5760405161130f602082612462565b60008152917ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8101611372575b6040517fd3fddfd1276d1cc278f10907710a44474a32f917b2fcfa198f46ca7689215e2f908061136d868883612c75565b0390a1005b60009250816004611387928594019101612b3e565b906020825192019073ffffffffffffffffffffffffffffffffffffffff3491165af16113b1612b75565b90156113be57388061133c565b7fb7c2b7060000000000000000000000000000000000000000000000000000000060005260046000fd5b6113f1366102f3565b73ffffffffffffffffffffffffffffffffffffffff9391937f00000000000000000000000000000000000000000000000000000000000000001633148015611612575b61143d90612538565b73ffffffffffffffffffffffffffffffffffffffff61149073ffffffffffffffffffffffffffffffffffffffff7f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f03541690565b16806114f257506114c4907fd21d0b289f126c4b473ea641963e766833c2f13866e4ff480abd787c100ef123948484613cc1565b6040805191825273ffffffffffffffffffffffffffffffffffffffff9092166020820152908190810161136d565b90604051947fd68f60250000000000000000000000000000000000000000000000000000000086526000868061152d36343360048501612d97565b038183875af1958615610501576000966115e7575b509061154f918585613cc1565b803b1561020e576115946000949185926040519687809481937f173bf7da00000000000000000000000000000000000000000000000000000000835260048301612dcb565b03925af1928315610501577fd21d0b289f126c4b473ea641963e766833c2f13866e4ff480abd787c100ef123936115cc575b506114c4565b806115db60006115e193612462565b80610203565b386115c6565b61154f9291965061160a903d806000833e6116028183612462565b810190612d38565b959091611542565b50333014611434565b3461020e5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261020e576104ce604080519061165c8183612462565b601982527f6269636f6e6f6d792e6e657875732e312e302e302d6265746100000000000000602083015251918291602083526020830190611127565b6116a1366102f3565b919273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633148015611827575b6116ec90612538565b6040517fecd059610000000000000000000000000000000000000000000000000000000081526004810182905260208160248173ffffffffffffffffffffffffffffffffffffffff89165afa908115610501576117539183916000916117f8575b50612cb2565b611769848261176486868484613611565b612ce7565b6040805182815273ffffffffffffffffffffffffffffffffffffffff861660208201527f341347516a9de374859dfda710fa4828b2d48cb57d4fbe4c1149612b8e02276e9190a1600181036117c2575061001c92614294565b600281036117d4575061001c92613fa0565b600381036117e6575061001c92613e75565b6004146117ef57005b61001c92613da7565b61181a915060203d602011611820575b6118128183612462565b810190612c9a565b3861174d565b503d611808565b503330146116e3565b3461020e5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261020e577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff8116156118bf575b60209073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b50305461189e565b3461020e5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261020e57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461020e5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261020e57306020526370a08231600052602080806024601c7f00000000000000000000000000000000000000000000000000000000000000005afa601f3d1116815102604051908152f35b3461020e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261020e576104ce6004358060081b7fff00000000000000000000000000000000000000000000000000000000000000821615918215611adf575b8215611ab2575b5081611a32575b5060405190151581529081906020820190565b7fff0000000000000000000000000000000000000000000000000000000000000081161591508115611a66575b5038611a1f565b7fff00000000000000000000000000000000000000000000000000000000000000167f010000000000000000000000000000000000000000000000000000000000000014905038611a5f565b7fff0000000000000000000000000000000000000000000000000000000000000090811614915038611a18565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0100000000000000000000000000000000000000000000000000000000000000149250611a11565b3461020e5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261020e5760206040517fd620c85a000000000000000000000000000000000000000000000000000000008152f35b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261020e57600435916024359067ffffffffffffffff821161020e5761034d916004016102c5565b602081016020825282518091526040820191602060408360051b8301019401926000915b838310611c0557505050505090565b9091929394602080611c41837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187528951611127565b97019301930191939290611bf6565b611c5936611b84565b91611c673361043933614437565b600073ffffffffffffffffffffffffffffffffffffffff611cbc73ffffffffffffffffffffffffffffffffffffffff7f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f03541690565b1680611cde57505091611cd2916104ce93612ddc565b60405191829182611bd2565b919390926040517fd68f6025000000000000000000000000000000000000000000000000000000008152848180611d1a36343360048501612d97565b038183885af1948515610501578095611db0575b5050611d3b929394612ddc565b90803b1561020e57611d816000939184926040519586809481937f173bf7da00000000000000000000000000000000000000000000000000000000835260048301612dcb565b03925af1918215610501576104ce92611d9b575b50611cd2565b806115db6000611daa93612462565b38611d95565b611d3b94955090611dca913d8091833e6116028183612462565b939238611d2e565b3461020e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261020e5760043577ffffffffffffffffffffffffffffffffffffffffffffffff811680910361020e57604051907f35567e1a000000000000000000000000000000000000000000000000000000008252306004830152602482015260208160448173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa8015610501576104ce91600091611eb957506040519081529081906020820190565b611edb915060203d602011611ee1575b611ed38183612462565b810190612745565b386105c0565b503d611ec9565b611ef136611b84565b9073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633148015612080575b611f3b90612538565b73ffffffffffffffffffffffffffffffffffffffff611f8e73ffffffffffffffffffffffffffffffffffffffff7f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f03541690565b1680611f9e575061001c92613045565b9091604051927fd68f602500000000000000000000000000000000000000000000000000000000845260008480611fda36343360048501612d97565b038183875af19384156105015760009461205f575b50611ffb929394613045565b803b1561020e576120406000929183926040519485809481937f173bf7da00000000000000000000000000000000000000000000000000000000835260048301612dcb565b03925af180156105015761205057005b806115db600061001c93612462565b611ffb939450612079903d806000833e6116028183612462565b9392611fef565b50333014611f32565b3461020e5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261020e576004356120c48161029a565b602435906000600173ffffffffffffffffffffffffffffffffffffffff83161415806121f2575b611016578215610fee5761214d610e95612106859495614ea8565b929473ffffffffffffffffffffffffffffffffffffffff166000527f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f01602052604060002090565b73ffffffffffffffffffffffffffffffffffffffff811680151590816121e6575b50806121dd575b15610f6057610f54610e95826121926121d794610ef489886147f7565b73ffffffffffffffffffffffffffffffffffffffff166000527f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f01602052604060002090565b9261214d565b50828410612175565b6001915014153861216e565b506121ff61106583614437565b6120eb565b3461020e5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261020e5760043561223f8161029a565b6024359067ffffffffffffffff821161020e573660238301121561020e57816004013567ffffffffffffffff811161020e573660248260051b8501011161020e576044359160ff8316830361020e57602461001c940190613241565b3461020e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261020e57602061036d600435613362565b909291928360141161020e57831161020e57601401917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec0190565b9060041161020e5790600490565b9060141161020e5790601490565b909291928360051161020e57831161020e57600501917ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb0190565b9093929384831161020e57841161020e578101920390565b919091357fffffffffffffffffffffffffffffffffffffffff000000000000000000000000811692601481106123b5575050565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000929350829060140360031b1b161690565b156123ef5750565b73ffffffffffffffffffffffffffffffffffffffff907fb927fe5e000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761084a57604052565b9081602091031261020e57516124b88161071b565b90565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b6124b8949273ffffffffffffffffffffffffffffffffffffffff606093168252602082015281604082015201916124bb565b6040513d6000823e3d90fd5b1561253f57565b7fac52ccbe0000000000000000000000000000000000000000000000000000000060005260046000fd5b604051906102c361012083612462565b604051906102c3604083612462565b67ffffffffffffffff811161084a57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926125ce82612588565b916125dc6040519384612462565b82948184528183011161020e578281602093846000960137010152565b9080601f8301121561020e578160206124b8933591016125c2565b9190916101208184031261020e5761262a612569565b92612634826102b8565b845260208201356020850152604082013567ffffffffffffffff811161020e57816126609184016125f9565b6040850152606082013567ffffffffffffffff811161020e57816126859184016125f9565b60608501526080820135608085015260a082013560a085015260c082013560c085015260e082013567ffffffffffffffff811161020e57816126c89184016125f9565b60e085015261010082013567ffffffffffffffff811161020e576126ec92016125f9565b610100830152565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561020e570180359067ffffffffffffffff821161020e5760200191813603831361020e57565b9081602091031261020e575190565b92919061286a6020916040865261278460408701825173ffffffffffffffffffffffffffffffffffffffff169052565b8281015160608701526101006128376127e56127b1604085015161012060808c01526101608b0190611127565b60608501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08b83030160a08c0152611127565b608084015160c08a015260a084015160e08a015260c0840151838a015260e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08a8303016101208b0152611127565b9101517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087830301610140880152611127565b930152565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18236030181121561020e57016020813591019167ffffffffffffffff821161020e57813603831361020e57565b6124b8916128ea816128d0846102b8565b73ffffffffffffffffffffffffffffffffffffffff169052565b6020820135602082015261298061297461293b61292061290d604087018761286f565b61012060408801526101208701916124bb565b61292d606087018761286f565b9086830360608801526124bb565b6080850135608085015260a085013560a085015260c085013560c085015261296660e086018661286f565b9085830360e08701526124bb565b9261010081019061286f565b916101008185039101526124bb565b92919061286a6020916040865260408601906128bf565b602081013591612a18611065604085901c73ffffffffffffffffffffffffffffffffffffffff169460181b7fff00000000000000000000000000000000000000000000000000000000000000167f01000000000000000000000000000000000000000000000000000000000000001490565b15612ab857612a29611065846143c8565b612ab057612a8092602092600073ffffffffffffffffffffffffffffffffffffffff6040518097819682957f970032030000000000000000000000000000000000000000000000000000000084526004840161298f565b0393165af190811561050157600091612a97575090565b6124b8915060203d602011611ee157611ed38183612462565b505050600190565b612a8092602092612aec612ae5612ade612ad23685612614565b936101008101906126f4565b9085613995565b36916125c2565b610100820152600073ffffffffffffffffffffffffffffffffffffffff6040518097819682957f9700320300000000000000000000000000000000000000000000000000000000845260048401612754565b91909160408184031261020e578035612b568161029a565b92602082013567ffffffffffffffff811161020e576124b892016125f9565b3d15612ba0573d90612b8682612588565b91612b946040519384612462565b82523d6000602084013e565b606090565b15612bac57565b7fc970156c0000000000000000000000000000000000000000000000000000000060005260046000fd5b7f0f00000000000000000000000000000000000000000000000000000000000000906040805190612c078183612462565b600582527f4e657875730000000000000000000000000000000000000000000000000000006020830152612c3d81519182612462565b600a81527f312e302e302d62657461000000000000000000000000000000000000000000006020820152909146903090600090606090565b9091612c8c6124b8936040845260408401906128bf565b916020818403910152611127565b9081602091031261020e5751801515810361020e5790565b15612cba5750565b7fd393448a0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b15612cf0575050565b73ffffffffffffffffffffffffffffffffffffffff92507fbe601672000000000000000000000000000000000000000000000000000000006000526004521660245260446000fd5b60208183031261020e5780519067ffffffffffffffff821161020e570181601f8201121561020e578051612d6b81612588565b92612d796040519485612462565b8184526020828401011161020e576124b89160208085019101611104565b6124b8939273ffffffffffffffffffffffffffffffffffffffff6060931682526020820152816040820152019060006124bb565b9060206124b8928181520190611127565b9291612de7336144a6565b600884901b9160007fff000000000000000000000000000000000000000000000000000000000000008616612e2257506124b89394506148c3565b7fff0000000000000000000000000000000000000000000000000000000000000086167f010000000000000000000000000000000000000000000000000000000000000003612e7757506124b8939450614823565b939291907fff0000000000000000000000000000000000000000000000000000000000000080871603612ff757612eb19293949550615976565b91612eba6146f6565b937fff000000000000000000000000000000000000000000000000000000000000008116612f065750612eef939495506159d5565b612ef8826147e5565b52612f02816147e5565b5090565b7fff0000000000000000000000000000000000000000000000000000000000000081167f010000000000000000000000000000000000000000000000000000000000000003612faa5750612f5c939495506159ae565b612f65836147e5565b526124b8577f11578eed8e46b1423d3f7c61bdf7a0481d929e5f3c6e2e1e97d7f3ab138c6019612fa4612f97836147e5565b516040519182918261480b565b0390a190565b7f1187dc060000000000000000000000000000000000000000000000000000000087527fff0000000000000000000000000000000000000000000000000000000000000016600452602486fd5b6024857fff00000000000000000000000000000000000000000000000000000000000000887fb96fcfe400000000000000000000000000000000000000000000000000000000835216600452fd5b9291908360081b93613077817fff00000000000000000000000000000000000000000000000000000000000000161590565b156130895750906102c3929391614a7d565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0100000000000000000000000000000000000000000000000000000000000000036130df5750906102c3929391614a0b565b7fff00000000000000000000000000000000000000000000000000000000000000808216036131f157509061311391615976565b917fff000000000000000000000000000000000000000000000000000000000000008516613149576131469394506159d5565b50565b7fff0000000000000000000000000000000000000000000000000000000000000085167f0100000000000000000000000000000000000000000000000000000000000000036131a15761319d9394506159ae565b5050565b7fff00000000000000000000000000000000000000000000000000000000000000857f1187dc06000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b7fff00000000000000000000000000000000000000000000000000000000000000907fb96fcfe4000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff90939193817f00000000000000000000000000000000000000000000000000000000000000001633148015613359575b61328f90612538565b1692837fffffffffffffffffffffffff00000000000000000000000000000000000000006000541617600055836132eb575b5050507ff98c8404c5b1bfef2e6ba9233c6e88845aedfd36eea8b192725d8c199571cf32600080a2565b833b1561020e5760009161332c60405194859384937ff05c04e100000000000000000000000000000000000000000000000000000000855260048501614b25565b038183865af1801561050157613344575b80806132c1565b806115db600061335393612462565b3861333d565b50333014613286565b600181036133705750600190565b6002810361337e5750600190565b6003810361338c5750600190565b6004810361339a5750600190565b6133a357600190565b600090565b6000358060e01c63bc197c81811463f23a6e6182141763150b7a0282141761354a57507fffffffff000000000000000000000000000000000000000000000000000000001660008181527f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f0260205260409020549061348161346273ffffffffffffffffffffffffffffffffffffffff84169360581b7fff000000000000000000000000000000000000000000000000000000000000001690565b9173ffffffffffffffffffffffffffffffffffffffff84161515613553565b7fff0000000000000000000000000000000000000000000000000000000000000081167ffe0000000000000000000000000000000000000000000000000000000000000014613525577fff0000000000000000000000000000000000000000000000000000000000000016156134f45750565b60008091368280373360601b365281601436019134905af11561351b573d6000803e3d6000f35b3d6000803e3d6000fd5b60008083368280373360601b36528160143601915afa1561351b573d6000803e3d6000f35b6020526020603cf35b1561355b5750565b7fffffffff00000000000000000000000000000000000000000000000000000000907f08c63e27000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b919091357fffffffff00000000000000000000000000000000000000000000000000000000811692600481106135df575050565b7fffffffff00000000000000000000000000000000000000000000000000000000929350829060040360031b1b161690565b929091600184036136285750506124b891506143c8565b6002840361363c5750506124b89150614437565b60038403613672576124b8935060048210613669576136649161365e91612312565b906135ab565b614b85565b50506000614b85565b5050906004146000146136bf577f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f035473ffffffffffffffffffffffffffffffffffffffff91821691161490565b50600090565b919261ffff6060511904616492027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0858401013514613980575b60009161370a614bf8565b91604051907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0878401013561ffff16958660420194871597600e850199600e8287010198828203948589019b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbe8d019a60408c602037611901600052841017816042601e2018176139415750505097967f5479706564446174615369676e28000000000000000000000000000000000000855260287ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8b99019a8a8c82375160001a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9f8183149101601a111791525b875160001a8060281461383b5790651201000000016001921c17970196613819565b509498978498976040607f9498836101209895979b7f20636f6e74656e74732c627974657331206669656c64732c737472696e67206e85527f616d652c737472696e672076657273696f6e2c75696e7432353620636861696e60208601527f49642c6164647265737320766572696679696e67436f6e74726163742c627974848601527f657333322073616c742c75696e743235365b5d20657874656e73696f6e73290060608601528785013786370103018620815220604052600116604201601e20907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbe60019101935b6040521561393357929190565b61393c90613a5c565b929190565b969850969a50985050505093507f983e65e5148e570cd828ead231ee759a8d7958721a768f93bc4483ba005c32de600052602052604060002091613926565b925060408101350191602083359301906136ff565b6102c39093919293602084013560e01c90602485019082860195613a566139d0602489013560e01c9960046024858d8d010301018185612369565b99909998613a516139e23689896125c2565b6020815191012060286040519360208501927f9f34cc46003dee27a148c367555bac140aa3fbfc713cf44b3842f343fc2a4e7b845273ffffffffffffffffffffffffffffffffffffffff8a166040870152606086015260608552613a47608086612462565b0192519020613a5c565b614c6f565b35613b76565b7f0000000000000000000000000000000000000000000000000000000000000000467f000000000000000000000000000000000000000000000000000000000000000014307f0000000000000000000000000000000000000000000000000000000000000000141615613ae9575b671901000000000000600052601a52603a526042601820906000603a52565b50613b7160a06040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f000000000000000000000000000000000000000000000000000000000000000060408201524660608201523060808201522090565b613aca565b92919073ffffffffffffffffffffffffffffffffffffffff613bcc73ffffffffffffffffffffffffffffffffffffffff7f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f03541690565b1680613bdc57506102c393613cc1565b91604093919351937fd68f602500000000000000000000000000000000000000000000000000000000855260008580613c1a36343360048501612d97565b038183885af194851561050157600095613ca0575b50613c3b939495613cc1565b803b1561020e57613c806000929183926040519485809481937f173bf7da00000000000000000000000000000000000000000000000000000000835260048301612dcb565b03925af1801561050157613c915750565b806115db60006102c393612462565b613c3b949550613cba903d806000833e6116028183612462565b9493613c2f565b9392919073ffffffffffffffffffffffffffffffffffffffff811615613d6c5760018503613cf4576102c393945061561b565b60028503613d07576102c3939450615556565b60038503613d1a576102c3939450615254565b60048503613d2d576102c39394506150a3565b84613d3d576102c3939450614fac565b7f098312d200000000000000000000000000000000000000000000000000000000600052600485905260246000fd5b7f5316c18d0000000000000000000000000000000000000000000000000000000060005260046000fd5b9160206124b89381815201916124bb565b7f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f0380547fffffffffffffffffffffffff000000000000000000000000000000000000000016905560009273ffffffffffffffffffffffffffffffffffffffff90911690813b15613e7157918391613e5593836040518096819582947f8a91b0e300000000000000000000000000000000000000000000000000000000845260206004850181815201916124bb565b03925af1801561050157613e67575050565b8161314691612462565b8380fd5b73ffffffffffffffffffffffffffffffffffffffff90929192613f26604051613e9f604082612462565b6000815260006020820152613eba61078361365e8789612312565b8151815460209093015174ff000000000000000000000000000000000000000060589190911c167fffffffffffffffffffffff00000000000000000000000000000000000000000090931673ffffffffffffffffffffffffffffffffffffffff90911617919091179055565b1691600082600411613f9d5750600401907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01823b1561020e57613c8092600092836040518096819582947f8a91b0e300000000000000000000000000000000000000000000000000000000845260048401613d96565b80fd5b9173ffffffffffffffffffffffffffffffffffffffff91613fc391810190612b3e565b91169060009273ffffffffffffffffffffffffffffffffffffffff81169283158015614259575b61422e578373ffffffffffffffffffffffffffffffffffffffff61404e837f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f019073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b5416036141ec578161413761417d926140f76140b0610e956141a5977f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f019073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b917f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f019073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b9073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b7f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f019073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b7fffffffffffffffffffffffff00000000000000000000000000000000000000008154169055565b813b156141e857613e55839283926040519485809481937f8a91b0e300000000000000000000000000000000000000000000000000000000835260048301612dcb565b8280fd5b7f7c84ecfb00000000000000000000000000000000000000000000000000000000855273ffffffffffffffffffffffffffffffffffffffff8216600452602485fd5b7f7c84ecfb000000000000000000000000000000000000000000000000000000008552600452602484fd5b5060018414613fea565b1561426a57565b7fb118263c0000000000000000000000000000000000000000000000000000000060005260046000fd5b906142b79073ffffffffffffffffffffffffffffffffffffffff93810190612b3e565b92166001811480614333575b8273ffffffffffffffffffffffffffffffffffffffff93926142e86142ed9315614263565b615779565b16803b1561020e57613c806000929183926040519485809481937f8a91b0e300000000000000000000000000000000000000000000000000000000835260048301612dcb565b50600073ffffffffffffffffffffffffffffffffffffffff8316801561439c5781527f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f00602052604090205473ffffffffffffffffffffffffffffffffffffffff166001146142c3565b602492507f7c84ecfb000000000000000000000000000000000000000000000000000000008252600452fd5b73ffffffffffffffffffffffffffffffffffffffff16806001141590816143ed575090565b90506000527f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f0060205273ffffffffffffffffffffffffffffffffffffffff60406000205416151590565b73ffffffffffffffffffffffffffffffffffffffff168060011415908161445c575090565b90506000527f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f0160205273ffffffffffffffffffffffffffffffffffffffff60406000205416151590565b60009073ffffffffffffffffffffffffffffffffffffffff82541690816144cc57505050565b813b156141e85773ffffffffffffffffffffffffffffffffffffffff6044849260405194859384927f96fb7217000000000000000000000000000000000000000000000000000000008452166004830152600260248301525afa801561050157613e67575050565b60009073ffffffffffffffffffffffffffffffffffffffff825416908161455a57505050565b813b156141e85773ffffffffffffffffffffffffffffffffffffffff6044849260405194859384927f96fb7217000000000000000000000000000000000000000000000000000000008452166004830152600460248301525afa801561050157613e67575050565b60009073ffffffffffffffffffffffffffffffffffffffff82541690816145e857505050565b813b156141e85773ffffffffffffffffffffffffffffffffffffffff6044849260405194859384927f96fb7217000000000000000000000000000000000000000000000000000000008452166004830152600360248301525afa801561050157613e67575050565b60009073ffffffffffffffffffffffffffffffffffffffff825416908161467657505050565b813b156141e85773ffffffffffffffffffffffffffffffffffffffff6044849260405194859384927f96fb7217000000000000000000000000000000000000000000000000000000008452166004830152600160248301525afa801561050157613e67575050565b67ffffffffffffffff811161084a5760051b60200190565b604080519091906147078382612462565b60018152917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018260005b82811061473e57505050565b806060602080938501015201614732565b90614759826146de565b6147666040519182612462565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061479482946146de565b019060005b8281106147a557505050565b806060602080938501015201614799565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8051156147f25760200190565b6147b6565b80518210156147f25760209160051b010190565b9060406124b892600081528160208201520190611127565b7fff0000000000000000000000000000000000000000000000000000000000000090921692918035018035915060200183614863576124b8929350615b06565b7f01000000000000000000000000000000000000000000000000000000000000008403614895576124b8929350615a4b565b837f1187dc060000000000000000000000000000000000000000000000000000000060005260045260246000fd5b906148d091939293615b75565b916148dc9493946146f6565b947fff0000000000000000000000000000000000000000000000000000000000000087166149235761491094959650615be4565b614919836147e5565b52613146826147e5565b7fff0000000000000000000000000000000000000000000000000000000000000087167f0100000000000000000000000000000000000000000000000000000000000000036149bb5761497894959650615bbb565b614981846147e5565b521561498957565b7fe723f28f104e46b47fd3531f3608374ac226bcf3ddda334a23a266453e0efdb76149b6612f97846147e5565b0390a1565b7fff00000000000000000000000000000000000000000000000000000000000000877f1187dc06000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b7fff0000000000000000000000000000000000000000000000000000000000000090921692918035018035915060200183614a4b57613146929350615b06565b7f0100000000000000000000000000000000000000000000000000000000000000840361489557613146929350615a4b565b7fff0000000000000000000000000000000000000000000000000000000000000091614aab91949394615b75565b9390929516948515600014614ac557613146949550615be4565b7f01000000000000000000000000000000000000000000000000000000000000008603614af75761319d949550615bbb565b857f1187dc060000000000000000000000000000000000000000000000000000000060005260045260246000fd5b60ff909116815260406020820181905281018390526060019160005b818110614b4e5750505090565b90919260208060019273ffffffffffffffffffffffffffffffffffffffff8735614b778161029a565b168152019401929101614b41565b73ffffffffffffffffffffffffffffffffffffffff614bf081927fffffffff00000000000000000000000000000000000000000000000000000000166000527f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f02602052604060002090565b541691161490565b73ffffffffffffffffffffffffffffffffffffffff90614c16612bd6565b9597939094604093929351986101208a0160405260001a60f81b60408a015260208151910120606089015260208151910120608088015260a08701521660c085015260e08401526020815160051b910120610100830152565b9091614c87610425614c818386612320565b90612381565b92614c94611065856143c8565b614da35792602092614cbf8373ffffffffffffffffffffffffffffffffffffffff94614cf9976122d7565b939091604051968795869485937ff551e2ee00000000000000000000000000000000000000000000000000000000855230600486016124fa565b0392165afa908115610501577f1626ba7e00000000000000000000000000000000000000000000000000000000917fffffffff0000000000000000000000000000000000000000000000000000000091600091614d84575b501603614d5a57565b7f46fdc3330000000000000000000000000000000000000000000000000000000060005260046000fd5b614d9d915060203d6020116104fa576104ec8183612462565b38614d51565b7fb927fe5e0000000000000000000000000000000000000000000000000000000060005273ffffffffffffffffffffffffffffffffffffffff841660045260246000fd5b60016000527f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f006020527ffe44ceacbf4f03c6ac19f86826dd265fa9ec25125e8b1766c207f24cd3bc73c75473ffffffffffffffffffffffffffffffffffffffff16610a095760016000527f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f006020526102c3604060002060017fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b90614eb2826146de565b614ebf6040519182612462565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0614eed82946146de565b0190602036910137565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114614f535760010190565b614ef7565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8201918211614f5357565b91908110156147f25760051b0190565b908210156147f25761034d9160051b8101906126f4565b9150614fce908035810191602083019235916020810135019060208201913590565b9293918084036150795760005b818110614fea57505050505050565b80614ff86001928489614f85565b3582810361501c575061501661500f828887614f95565b908761561b565b01614fdb565b6002810361503f575061503a615033828887614f95565b9087615556565b615016565b6003810361505d575061503a615056828887614f95565b9087615254565b60040361503a5761503a615072828887614f95565b90876150a3565b7fb4fa3fb30000000000000000000000000000000000000000000000000000000060005260046000fd5b916150ad83614534565b6040517fecd0596100000000000000000000000000000000000000000000000000000000815260048082015273ffffffffffffffffffffffffffffffffffffffff84169390602081602481885afa908115610501576000916151e9575b50156151bb576151779061517261515573ffffffffffffffffffffffffffffffffffffffff7f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f03541690565b73ffffffffffffffffffffffffffffffffffffffff811615615208565b6156e0565b823b1561020e57613c8092600092836040518096819582947f6d61fe7000000000000000000000000000000000000000000000000000000000845260048401613d96565b7fd393448a000000000000000000000000000000000000000000000000000000006000526004805260246000fd5b615202915060203d602011611820576118128183612462565b3861510a565b156152105750565b73ffffffffffffffffffffffffffffffffffffffff907f741cbe03000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b909161525f826145c2565b6040517fecd059610000000000000000000000000000000000000000000000000000000081526003600482015273ffffffffffffffffffffffffffffffffffffffff83169290602081602481875afa9081156105015760009161549f575b501561547057613eba84610783615343612ae5868061533d6153186152f2836152ec61365e6154019e8c612312565b996154be565b357fff000000000000000000000000000000000000000000000000000000000000001690565b7fff000000000000000000000000000000000000000000000000000000000000001690565b9a61232e565b9661539c7fffffffff0000000000000000000000000000000000000000000000000000000084167f6d61fe70000000000000000000000000000000000000000000000000000000008114908115615446575b50156154cd565b6153b1836153ac61106582615c13565b6154fe565b6153d86153bc612579565b73ffffffffffffffffffffffffffffffffffffffff9096168652565b7fff00000000000000000000000000000000000000000000000000000000000000166020850152565b803b1561020e57613c806000929183926040519485809481937f6d61fe7000000000000000000000000000000000000000000000000000000000835260048301612dcb565b7f8a91b0e30000000000000000000000000000000000000000000000000000000091501438615395565b7fd393448a00000000000000000000000000000000000000000000000000000000600052600360045260246000fd5b6154b8915060203d602011611820576118128183612462565b386152bd565b90600410156147f25760040190565b156154d457565b7fc001660b0000000000000000000000000000000000000000000000000000000060005260046000fd5b156155065750565b7fffffffff00000000000000000000000000000000000000000000000000000000907fa56a04dd000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b91615560836144a6565b6040517fecd059610000000000000000000000000000000000000000000000000000000081526002600482015273ffffffffffffffffffffffffffffffffffffffff84169390602081602481885afa908115610501576000916155fc575b50156155cd5761517790615c84565b7fd393448a00000000000000000000000000000000000000000000000000000000600052600260045260246000fd5b615615915060203d602011611820576118128183612462565b386155be565b9161562583614650565b6040517fecd059610000000000000000000000000000000000000000000000000000000081526001600482015273ffffffffffffffffffffffffffffffffffffffff84169390602081602481885afa908115610501576000916156c1575b50156156925761517790615e5c565b7fd393448a00000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6156da915060203d602011611820576118128183612462565b38615683565b73ffffffffffffffffffffffffffffffffffffffff6102c3911673ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000007f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f035416177f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f0355565b73ffffffffffffffffffffffffffffffffffffffff82168015801561596c575b6159285773ffffffffffffffffffffffffffffffffffffffff82166000527f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f0060205273ffffffffffffffffffffffffffffffffffffffff60406000205416036158e4578161589e61417d926140f7615857610e956102c3977f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f009073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b917f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f009073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b7f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f009073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b7f7c84ecfb0000000000000000000000000000000000000000000000000000000060005273ffffffffffffffffffffffffffffffffffffffff821660045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff827f7c84ecfb000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b5060018114615799565b918160141161020e57823560601c92601401917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec0190565b60009192806040519485378338925af4913d82523d6000602084013e60203d830101604052565b6000919392806040519586378438925af415615a01573d82523d6000602084013e60203d830101604052565b503d6000823e3d90fd5b91908110156147f25760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18136030182121561020e570190565b919091615a578361474f565b9260005b818110615a6757505050565b80615a9e615a786001938587615a0b565b8035615a838161029a565b615a9660208301359260408101906126f4565b929091615bbb565b615aa883896147f7565b5215615ab5575b01615a5b565b7fe723f28f104e46b47fd3531f3608374ac226bcf3ddda334a23a266453e0efdb7615afe615ae383896147f7565b51604051918291858352604060208401526040830190611127565b0390a1615aaf565b919091615b128361474f565b9260005b818110615b2257505050565b80615b59615b336001938587615a0b565b8035615b3e8161029a565b615b5160208301359260408101906126f4565b929091615be4565b615b6382886147f7565b52615b6e81876147f7565b5001615b16565b908060141161020e57813560601c926034821061020e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc603460148501359401920190565b906000928491604051958692833738935af1913d82523d6000602084013e60203d830101604052565b9092600092819594604051968792833738935af115615a01573d82523d6000602084013e60203d830101604052565b615c7d73ffffffffffffffffffffffffffffffffffffffff917fffffffff00000000000000000000000000000000000000000000000000000000166000527f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f02602052604060002090565b5416151590565b73ffffffffffffffffffffffffffffffffffffffff811680158015615e52575b615e255760009081527f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f01602052604090205473ffffffffffffffffffffffffffffffffffffffff16615de25760016000527f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f016020526102c390615d93615d497fbdfeb076d903611fa58576955630d640569633049bcf40ad9c22db9251b54a13610e95565b6140f7837f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f019073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b60016000527f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f016020527fbdfeb076d903611fa58576955630d640569633049bcf40ad9c22db9251b54a136140f7565b7f40d3d1a40000000000000000000000000000000000000000000000000000000060005273ffffffffffffffffffffffffffffffffffffffff1660045260246000fd5b7f7c84ecfb0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b5060018114615ca4565b73ffffffffffffffffffffffffffffffffffffffff811680158015615fba575b615e255760009081527f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f00602052604090205473ffffffffffffffffffffffffffffffffffffffff16615de25760016000527f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f006020526102c390615f6b615f217ffe44ceacbf4f03c6ac19f86826dd265fa9ec25125e8b1766c207f24cd3bc73c7610e95565b6140f7837f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f009073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b60016000527f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f006020527ffe44ceacbf4f03c6ac19f86826dd265fa9ec25125e8b1766c207f24cd3bc73c76140f7565b5060018114615e7c56fea26469706673582212206ff2d160d31283793bd1b9d31f450117a5da25feffcad8dd944b4634201d6cd264736f6c634300081a0033fe44ceacbf4f03c6ac19f86826dd265fa9ec25125e8b1766c207f24cd3bc73c7bdfeb076d903611fa58576955630d640569633049bcf40ad9c22db9251b54a13" - }, - "NexusAccountFactory": { - "address": "0x7cebAEd7eA3A205AD3353C2FB945f1AFeC22CCe5", - "bytecode": "0x60a0346100f257601f610ea538819003918201601f19168301916001600160401b038311848410176100f75780849260409485528339810103126100f2576100468161010d565b906001600160a01b039061005c9060200161010d565b1680638b78c6d819547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3638b78c6d8198190556001600160a01b038216156100e157156100d057608052604051610d83908161012282396080518181816101b1015281816106a501526109b40152f35b6342bcdf7f60e11b60005260046000fd5b630abd577760e01b60005260046000fd5b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036100f25756fe6080604052600436101561001257600080fd5b60003560e01c806325692962146100e7578063290ab984146100e257806345171159146100dd5780634a1ce599146100d857806354d1f13d146100d3578063715018a6146100ce5780638da5cb5b146100c9578063b36f9705146100c4578063ea6d13ac146100bf578063f04e283e146100ba578063f2fde38b146100b5578063fafa2b42146100b05763fee81cf4146100ab57600080fd5b610a53565b6108fb565b61089d565b610829565b61063f565b6104f5565b610484565b6103e4565b61037e565b6102ce565b6101f3565b610166565b6100fc565b60009103126100f757565b600080fd5b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f75763389a75e1600c52336000526202a30042016020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a2005b346100f75760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b73ffffffffffffffffffffffffffffffffffffffff8116036100f757565b600060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102cb5760043561022b816101d5565b816024359163ffffffff83168093036102c75773ffffffffffffffffffffffffffffffffffffffff9061025c610bb0565b1691610269831515610aa8565b823b156102c7576024604051809481937f0396cb60000000000000000000000000000000000000000000000000000000008352600483015234905af180156102c25782906102b45780f35b6102bd91610ad9565b388180f35b610b49565b5080fd5b80fd5b346100f757600060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102cb578073ffffffffffffffffffffffffffffffffffffffff600435610321816101d5565b610329610bb0565b16610335811515610aa8565b803b1561037b5781906004604051809481937fbb9fe6bf0000000000000000000000000000000000000000000000000000000083525af180156102c25782906102b45780f35b50fd5b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f75763389a75e1600c523360005260006020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2005b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f757610416610bb0565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a360007fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755005b346100f75760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f75760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275473ffffffffffffffffffffffffffffffffffffffff60405191168152f35b346100f757600060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102cb57600435610532816101d5565b8173ffffffffffffffffffffffffffffffffffffffff60243592610555846101d5565b61055d610bb0565b169161056a831515610aa8565b823b156102c757602473ffffffffffffffffffffffffffffffffffffffff918360405195869485937fc23a5cea0000000000000000000000000000000000000000000000000000000085521660048401525af180156102c25782906102b45780f35b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126100f75760043567ffffffffffffffff81116100f757826023820112156100f75780600401359267ffffffffffffffff84116100f757602484830101116100f757602401919060243590565b610648366105cc565b6106ca6040939293517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc368201016040528160048237207f000000000000000000000000000000000000000000000000000000000000000034610c6a565b92906107c25773ffffffffffffffffffffffffffffffffffffffff831690813b156100f757604051947f4b6a141900000000000000000000000000000000000000000000000000000000865260008680610728848660048401610b55565b038183875af19182156102c25773ffffffffffffffffffffffffffffffffffffffff9661075a936107a7575b50610b9b565b907f47e5b5fc3bda028416e26dcf66ca5186488c0717e8ab55bb01806113f1839d58600080a45b604051911673ffffffffffffffffffffffffffffffffffffffff168152602090f35b0390f35b806107b660006107bc93610ad9565b806100ec565b38610754565b50509050346107e65773ffffffffffffffffffffffffffffffffffffffff90610781565b7fda85dd9c0000000000000000000000000000000000000000000000000000000060005273ffffffffffffffffffffffffffffffffffffffff1660045260246000fd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f75760043561085f816101d5565b610867610bb0565b63389a75e1600c52806000526020600c20908154421161088f57600061088d9255610be8565b005b636f5e88186000526004601cfd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f7576004356108d3816101d5565b6108db610bb0565b8060601b156108ed5761088d90610be8565b637448fbae6000526004601cfd5b346100f757610909366105cc565b5050506040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc368201016040528160048237206040517fcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f36060527f5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e20766040526160096020527f0000000000000000000000000000000000000000000000000000000000000000601e5268603d3d8160223d3973600a52605f60212090604052600060605260ff6000536035523060601b6001526015526107a3610a2c6055600020600060355273ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff90911681529081906020820190565b346100f75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f757600435610a8e816101d5565b63389a75e1600c52600052602080600c2054604051908152f35b15610aaf57565b7f91fdf1910000000000000000000000000000000000000000000000000000000060005260046000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610b1a57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040513d6000823e3d90fd5b90601f836040947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093602086528160208701528686013760008582860101520116010190565b81604051928392833781016000815203902090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543303610bda57565b6382b429006000526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a37fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755565b92906000604051917fcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f36060527f5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076604052616009602052601e5268603d3d8160223d3973600a52605f60212060358301523060581b825260ff82538360158301526055822093843b15610d2f5750506001938015610d295760009081803892875af115610d1b575b6040526000606052565b63b12d13eb6000526004601cfd5b50610d11565b919350936021605f91f59182610d115763301164256000526004601cfdfea26469706673582212208def3a710ab8c8e4042da133ad5733ad6ee8659c4dc50c6dd9e19cafb314d3da64736f6c634300081a0033" - }, - "BiconomyMetaFactory": { - "address": "0x98C8792cf50A93900d575842eDAFf3Ccc2C2902b", - "bytecode": "0x60803460a657601f610c7e38819003918201601f19168301916001600160401b0383118484101760ab5780849260209460405283398101031260a657516001600160a01b0381169081900360a65780638b78c6d819547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a380638b78c6d8195515609557604051610bbc90816100c28239f35b6342bcdf7f60e11b60005260046000fd5b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604052600436101561001257600080fd5b60003560e01c8063160777991461010257806325692962146100fd57806343a0fcc4146100cb57806345171159146100f85780634a1ce599146100f357806354d1f13d146100ee578063715018a6146100e9578063759cf602146100e45780638da5cb5b146100df578063b36f9705146100da578063c513b4a4146100d5578063f04e283e146100d0578063f2b9c6e3146100cb578063f2fde38b146100c65763fee81cf4146100c157600080fd5b6108b1565b610853565b610243565b6107df565b61071b565b610644565b6105d3565b610542565b6104a2565b61043c565b61038c565b6102b1565b6101d9565b61012a565b73ffffffffffffffffffffffffffffffffffffffff81160361012557565b600080fd5b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101255760043561016081610107565b60243567ffffffffffffffff8111610125573660238201121561012557806004013567ffffffffffffffff8111610125573660248284010111610125576101d59260246101ae9301906109ac565b60405173ffffffffffffffffffffffffffffffffffffffff90911681529081906020820190565b0390f35b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101255763389a75e1600c52336000526202a30042016020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a2005b346101255760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101255773ffffffffffffffffffffffffffffffffffffffff60043561029381610107565b166000526000602052602060ff604060002054166040519015158152f35b600060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610389576004356102e981610107565b816024359163ffffffff83168093036103855773ffffffffffffffffffffffffffffffffffffffff9061031a610acc565b1691610327831515610a8f565b823b15610385576024604051809481937f0396cb60000000000000000000000000000000000000000000000000000000008352600483015234905af180156103805782906103725780f35b61037b91610935565b388180f35b610ac0565b5080fd5b80fd5b3461012557600060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610389578073ffffffffffffffffffffffffffffffffffffffff6004356103df81610107565b6103e7610acc565b166103f3811515610a8f565b803b156104395781906004604051809481937fbb9fe6bf0000000000000000000000000000000000000000000000000000000083525af180156103805782906103725780f35b50fd5b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101255763389a75e1600c523360005260006020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2005b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610125576104d4610acc565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a360007fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755005b346101255760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101255773ffffffffffffffffffffffffffffffffffffffff60043561059281610107565b61059a610acc565b16600052600060205260406000207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008154169055600080f35b346101255760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101255760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275473ffffffffffffffffffffffffffffffffffffffff60405191168152f35b3461012557600060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103895760043561068181610107565b8173ffffffffffffffffffffffffffffffffffffffff602435926106a484610107565b6106ac610acc565b16916106b9831515610a8f565b823b1561038557602473ffffffffffffffffffffffffffffffffffffffff918360405195869485937fc23a5cea0000000000000000000000000000000000000000000000000000000085521660048401525af180156103805782906103725780f35b346101255760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101255773ffffffffffffffffffffffffffffffffffffffff60043561076b81610107565b610773610acc565b1680156107b5576000526000602052604060002060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055600080f35b7f5c7bfbe90000000000000000000000000000000000000000000000000000000060005260046000fd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101255760043561081581610107565b61081d610acc565b63389a75e1600c52806000526020600c2090815442116108455760006108439255610b04565b005b636f5e88186000526004601cfd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101255760043561088981610107565b610891610acc565b8060601b156108a35761084390610b04565b637448fbae6000526004601cfd5b346101255760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610125576004356108ec81610107565b63389a75e1600c52600052602080600c2054604051908152f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761097657604052565b610906565b1561098257565b7fb4c974080000000000000000000000000000000000000000000000000000000060005260046000fd5b73ffffffffffffffffffffffffffffffffffffffff8116600052600060205260ff6040600020541615610a65578260009392849360405192839283378101848152039134905af13d15610a57573d67ffffffffffffffff811161097657610a5260209260405192610a44857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160185610935565b83523d60008585013e61097b565b015190565b602090610a5260609161097b565b7f8de0e0da0000000000000000000000000000000000000000000000000000000060005260046000fd5b15610a9657565b7f91fdf1910000000000000000000000000000000000000000000000000000000060005260046000fd5b6040513d6000823e3d90fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543303610af657565b6382b429006000526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a37fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275556fea2646970667358221220b5b4239f95581993f6923be5c2c6198dde7f4d8d718b6373429a2cbfaa553e3764736f6c634300081a0033" - }, - "K1Validator": { - "address": "0x2A5a15Ab95576c3a2aFfA1bE0f7447a079f184B9", - "bytecode": "0x60808060405234601557610d55908161001b8239f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c806306fdde03146106935780632e5b63a61461061857806354fd4d50146105a25780636d61fe70146103f25780638a91b0e31461036857806397003203146102e0578063d60b347f1461025b578063ecd059611461021d578063f2fde38b1461011f5763f551e2ee1461008a57600080fd5b3461011a5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011a576100c1610769565b5060443567ffffffffffffffff811161011a576100f06100e7602092369060040161078c565b906024356109ac565b7fffffffff0000000000000000000000000000000000000000000000000000000060405191168152f35b600080fd5b3461011a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011a57610156610769565b73ffffffffffffffffffffffffffffffffffffffff8116156101f357803b6101c95733600052600060205273ffffffffffffffffffffffffffffffffffffffff604060002091167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055600080f35b7f83e6a1cb0000000000000000000000000000000000000000000000000000000060005260046000fd5b7f8579befe0000000000000000000000000000000000000000000000000000000060005260046000fd5b3461011a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011a5760206040516001600435148152f35b3461011a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011a5760206102d6610297610769565b73ffffffffffffffffffffffffffffffffffffffff16600052600060205273ffffffffffffffffffffffffffffffffffffffff60406000205416151590565b6040519015158152f35b3461011a5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011a5760043567ffffffffffffffff811161011a576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc823603011261011a57610360602091602435906004016108de565b604051908152f35b3461011a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011a5760043567ffffffffffffffff811161011a576103b790369060040161078c565b505033600052600060205260406000207fffffffffffffffffffffffff00000000000000000000000000000000000000008154169055600080f35b3461011a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011a5760043567ffffffffffffffff811161011a5761044190369060040161078c565b9081156105785761048b3373ffffffffffffffffffffffffffffffffffffffff16600052600060205273ffffffffffffffffffffffffffffffffffffffff60406000205416151590565b61054e57357fffffffffffffffffffffffffffffffffffffffff00000000000000000000000081169160148110610519575b505060601c803b6101c95733600052600060205273ffffffffffffffffffffffffffffffffffffffff604060002091167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055600080f35b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000009250829060140360031b1b161681806104bd565b7fe72ce85e0000000000000000000000000000000000000000000000000000000060005260046000fd5b7f1f2a381c0000000000000000000000000000000000000000000000000000000060005260046000fd5b3461011a5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011a576106146105de60406107ba565b600a81527f312e302e302d6265746100000000000000000000000000000000000000000000602082015260405191829182610701565b0390f35b3461011a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011a5773ffffffffffffffffffffffffffffffffffffffff610664610769565b166000526000602052602073ffffffffffffffffffffffffffffffffffffffff60406000205416604051908152f35b3461011a5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011a576106146106cf60406107ba565b600b81527f4b3156616c696461746f720000000000000000000000000000000000000000006020820152604051918291825b9190916020815282519283602083015260005b8481106107535750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006040809697860101520116010190565b8060208092840101516040828601015201610714565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361011a57565b9181601f8401121561011a5782359167ffffffffffffffff831161011a576020838186019501011161011a57565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051930116820182811067ffffffffffffffff8211176107fe57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561011a570180359067ffffffffffffffff821161011a5760200191813603831361011a57565b92919267ffffffffffffffff82116107fe576108c160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116016107ba565b938285528282011161011a57816000926020928387013784010152565b90813573ffffffffffffffffffffffffffffffffffffffff811680910361011a57600052600060205273ffffffffffffffffffffffffffffffffffffffff6040600020541690806020527b19457468657265756d205369676e6564204d6573736167653a0a3332600052603c60042061097161010085019161096a610963848861082d565b369161087e565b9085610a8d565b93841561098b575b5050505061098657600190565b600090565b6109a3945061099d916109639161082d565b91610a8d565b38808080610979565b919033600052600060205273ffffffffffffffffffffffffffffffffffffffff604060002054166109df83838684610bcc565b610a6557610a19937f19457468657265756d205369676e6564204d6573736167653a0a333200000000600052601c52603c60002090610bcc565b610a41577fffffffff0000000000000000000000000000000000000000000000000000000090565b7f1626ba7e0000000000000000000000000000000000000000000000000000000090565b505050507f1626ba7e0000000000000000000000000000000000000000000000000000000090565b929173ffffffffffffffffffffffffffffffffffffffff6000941680610ab257505050565b9091929350604051928060005260208301516040526040835114610b73575b6041835114610b3b575b916020917f1626ba7e000000000000000000000000000000000000000000000000000000009360006060528560405284865260048601526024850194859260408452805185019081604484019160045afa5060443d01915afa9151141690565b606083015160001a60205260408301516060526020600160806000825afa5182183d1517610adb575050600060605250604052600190565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040840151601b8160ff1c01602052166060526020600160806000825afa5182183d1517610ad1575050600060605250604052600190565b9392919073ffffffffffffffffffffffffffffffffffffffff600095169081610bf6575b50505050565b909192939450604051908060005260408514610cb7575b60418514610c78575b917f1626ba7e000000000000000000000000000000000000000000000000000000009391602093600060605281604052858252600482015260648660248301978895604087528160448601528385013701915afa915114169038808080610bf0565b604084013560001a60205260408481376020600160806000825afa5183183d1517610c1657509392505050600191600060605260405238808080610bf0565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6020850135601b8160ff1c016020528535604052166060526020600160806000825afa5183183d1517610c0d57509392505050600191600060605260405238808080610bf056fea2646970667358221220753a9cb79cb966afdc626f57c4d75e1a96edf2baba29048e2860a08d558bb05664736f6c634300081a0033" - }, - "Counter": { - "address": "0x36023f0abe27eC68fD2c6a489A3e21772A08E120", - "bytecode": "0x6080806040523460155761023c908161001b8239f35b600080fdfe608080604052600436101561001357600080fd5b60003560e01c908163124674341461017b57508063273ea3e31461011a578063871cc9d41461008c5763f2c9ecd81461004b57600080fd5b346100875760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610087576020600054604051908152f35b600080fd5b346100875760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100875760005480156100eb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600055005b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b346100875760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610087576000547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146100eb57600101600055005b346100875760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261008757807f08c379a0000000000000000000000000000000000000000000000000000000006064925260206004820152601960248201527f436f756e7465723a20526576657274206f7065726174696f6e000000000000006044820152fdfea264697066735822122028ccc17c16892193fa61b6b40560661ecad119585145a90af7b0bfedd6ac039864736f6c634300081a0033" - }, - "K1ValidatorFactory": { - "address": "0x85ffeEbDac4C8f6CC4D49f0CA1Cf63800F981b35", - "bytecode": "0x6101003461018e57601f61146d38819003918201601f19168301916001600160401b038311848410176101935780849260a09460405283398101031261018e57610048816101a9565b90610055602082016101a9565b91610062604083016101a9565b6060830151929091906001600160a01b0384169081850361018e5760800151946001600160a01b0386169081870361018e5760018060a01b031680638b78c6d819547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3638b78c6d819556001600160a01b0383161591821561017c575b8215610173575b50811561016a575b506101595760805260a05260c05260e0526040516112af90816101be82396080518181816102c1015281816106760152610755015260a0518181816103800152610c82015260c0518181816104460152610a2b015260e05181818161017701526104040152f35b6342bcdf7f60e11b60005260046000fd5b905015386100f2565b159150386100ea565b6001600160a01b0385161592506100e3565b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b038216820361018e5756fe6080604052600436101561001257600080fd5b60003560e01c806306433b1b146101175780630d51f0b714610112578063256929621461010d578063290ab98414610108578063322cc8ca1461010357806345171159146100fe5780634a1ce599146100f957806354d1f13d146100f457806367d2d1c9146100ef578063715018a6146100ea5780638da5cb5b146100e5578063b36f9705146100e0578063d0733b3b146100db578063f04e283e146100d6578063f2fde38b146100d15763fee81cf4146100cc57600080fd5b610d78565b610d1a565b610ca6565b610c37565b610b60565b610aef565b610a4f565b6109e0565b61097a565b6108ca565b6107f4565b61069a565b61062b565b6105c1565b610255565b61012c565b600091031261012757565b600080fd5b346101275760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b73ffffffffffffffffffffffffffffffffffffffff81160361012757565b359060ff8216820361012757565b9060807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc830112610127576004356101fe8161019b565b916024359160443567ffffffffffffffff811161012757826023820112156101275780600401359267ffffffffffffffff84116101275760248460051b8301011161012757602401919061025260646101b9565b90565b61025e366101c7565b6103a86102e66040969396959495517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc368201016040528160048237207f0000000000000000000000000000000000000000000000000000000000000000346110dc565b95909260006040516103548161032889602083017fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060149260601b1681520190565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610dfc565b604051809581927f8491599f0000000000000000000000000000000000000000000000000000000083527f000000000000000000000000000000000000000000000000000000000000000060048401610f90565b0381738F7560b30A1E2825005a0C69bccd2a70065d98Dd5af490811561056f576000938492610599575b5061042d90604051998a9485947f837b892e0000000000000000000000000000000000000000000000000000000086527f00000000000000000000000000000000000000000000000000000000000000009060048701610fef565b038173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa94851561056f57600095610574575b50156104a3575b60405173ffffffffffffffffffffffffffffffffffffffff84168152602090f35b0390f35b73ffffffffffffffffffffffffffffffffffffffff831690813b156101275760006104fb95604051809781927f4b6a14190000000000000000000000000000000000000000000000000000000083526004830161109a565b038183865af190811561056f5773ffffffffffffffffffffffffffffffffffffffff958692610554575b5016907f33310a89c32d8cc00057ad6ef6274d2f8fe22389a992cf89983e09fc84f6cfff600080a4388061047e565b80610563600061056993610dfc565b8061011c565b38610525565b610fbd565b6105929195503d806000833e61058a8183610dfc565b810190610fc9565b9338610477565b61042d9192506105ba903d8087833e6105b28183610dfc565b810190610ed5565b91906103d2565b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101275763389a75e1600c52336000526202a30042016020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a2005b346101275760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610127576106a8366101c7565b50505050506040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc368201016040528160048237206040517fcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f36060527f5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e20766040526160096020527f0000000000000000000000000000000000000000000000000000000000000000601e5268603d3d8160223d3973600a52605f60212090604052600060605260ff6000536035523060601b60015260155261049f6107cd6055600020600060355273ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff90911681529081906020820190565b600060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126108c75760043561082c8161019b565b816024359163ffffffff83168093036108c35773ffffffffffffffffffffffffffffffffffffffff9061085d6111bf565b169161086a8315156110ab565b823b156108c3576024604051809481937f0396cb60000000000000000000000000000000000000000000000000000000008352600483015234905af1801561056f5782906108b55780f35b6108be91610dfc565b388180f35b5080fd5b80fd5b3461012757600060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126108c7578073ffffffffffffffffffffffffffffffffffffffff60043561091d8161019b565b6109256111bf565b166109318115156110ab565b803b156109775781906004604051809481937fbb9fe6bf0000000000000000000000000000000000000000000000000000000083525af1801561056f5782906108b55780f35b50fd5b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101275763389a75e1600c523360005260006020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2005b346101275760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012757610a816111bf565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a360007fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755005b346101275760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101275760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275473ffffffffffffffffffffffffffffffffffffffff60405191168152f35b3461012757600060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126108c757600435610b9d8161019b565b8173ffffffffffffffffffffffffffffffffffffffff60243592610bc08461019b565b610bc86111bf565b1691610bd58315156110ab565b823b156108c357602473ffffffffffffffffffffffffffffffffffffffff918360405195869485937fc23a5cea0000000000000000000000000000000000000000000000000000000085521660048401525af1801561056f5782906108b55780f35b346101275760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012757600435610cdc8161019b565b610ce46111bf565b63389a75e1600c52806000526020600c209081544211610d0c576000610d0a92556111f7565b005b636f5e88186000526004601cfd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012757600435610d508161019b565b610d586111bf565b8060601b15610d6a57610d0a906111f7565b637448fbae6000526004601cfd5b346101275760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012757600435610db38161019b565b63389a75e1600c52600052602080600c2054604051908152f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610e3d57604052565b610dcd565b60005b838110610e555750506000910152565b8181015183820152602001610e45565b81601f8201121561012757805167ffffffffffffffff8111610e3d5760405192610eb760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160185610dfc565b81845260208284010111610127576102529160208085019101610e42565b6020818303126101275780519067ffffffffffffffff8211610127570160408183031261012757604051916040830183811067ffffffffffffffff821117610e3d576040528151610f258161019b565b8352602082015167ffffffffffffffff811161012757610f459201610e65565b602082015290565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602093610f8981518092818752878088019101610e42565b0116010190565b60409073ffffffffffffffffffffffffffffffffffffffff61025294931681528160208201520190610f4d565b6040513d6000823e3d90fd5b9060208282031261012757815167ffffffffffffffff8111610127576102529201610e65565b9594939173ffffffffffffffffffffffffffffffffffffffff61102f6020809460808b528381511660808c01520151604060a08b015260c08a0190610f4d565b911682880152868103604088015282815201919060005b818110611063575050509060606110619294019060ff169052565b565b90919260208060019273ffffffffffffffffffffffffffffffffffffffff873561108c8161019b565b168152019401929101611046565b906020610252928181520190610f4d565b156110b257565b7f91fdf1910000000000000000000000000000000000000000000000000000000060005260046000fd5b92906000604051917fcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f36060527f5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e2076604052616009602052601e5268603d3d8160223d3973600a52605f60212060358301523060581b825260ff82538360158301526055822093843b156111a1575050600193801561119b5760009081803892875af11561118d575b6040526000606052565b63b12d13eb6000526004601cfd5b50611183565b919350936021605f91f591826111835763301164256000526004601cfd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433036111e957565b6382b429006000526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a37fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275556fea2646970667358221220701fe73ec6d3e8dbf9db9afe5582decbd4eab6c2c1c47b780eabd16b47465ccc64736f6c634300081a0033" - }, - "MockValidator": { - "address": "0xD30576213Ab84900E937481683D63FE8F3021799", - "bytecode": "0x60808060405234601557610ba2908161001b8239f35b600080fdfe608080604052600436101561001357600080fd5b60003560e01c9081632e5b63a614610783575080636d61fe701461060e5780637ddc02d4146105715780638a91b0e3146104495780639700320314610213578063d60b347f146101d0578063ecd0596114610192578063f551e2ee146101025763fa5441611461008257600080fd5b346100fd5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100fd5773ffffffffffffffffffffffffffffffffffffffff6100ce6107fa565b166000526000602052602073ffffffffffffffffffffffffffffffffffffffff60406000205416604051908152f35b600080fd5b346100fd5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100fd576101396107fa565b5060443567ffffffffffffffff81116100fd5761016861015f602092369060040161081d565b90602435610938565b7fffffffff0000000000000000000000000000000000000000000000000000000060405191168152f35b346100fd5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100fd5760206040516001600435148152f35b346100fd5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100fd576102076107fa565b50602060405160008152f35b346100fd5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100fd5760043567ffffffffffffffff81116100fd578036036101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126100fd577f19457468657265756d205369676e6564204d6573736167653a0a333200000000600052602435601c52603c600020917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd61010482013592018212156100fd570190600482013567ffffffffffffffff81116100fd57602483019281360384136100fd5760009384926040519161034160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116018461084b565b81835260208301936020600484369301010111610445578185926020928637830101526001916040519484525160405260408151146104055760418151146103e757505060016080826020935b5afa513d156103da5791602092816060528260405233825281845273ffffffffffffffffffffffffffffffffffffffff806040842054169116146000146103d3578152f35b5060018152f35b638baa579f83526004601cfd5b60209260019260408360606080950151841a8752015160605261038e565b6020926001927f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60406080940151601b8160ff1c0187521660605261038e565b8480fd5b346100fd5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100fd5760043567ffffffffffffffff81116100fd5761049890369060040161081d565b50506040517f112d3a7d000000000000000000000000000000000000000000000000000000008152600160048201523060248201526060604482015260006064820152602081608481335afa8015610565576104fd91600091610536575b50156108d3565b33600052600060205260406000207fffffffffffffffffffffffff00000000000000000000000000000000000000008154169055600080f35b610558915060203d60201161055e575b610550818361084b565b8101906108bb565b826104f6565b503d610546565b6040513d6000823e3d90fd5b346100fd5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100fd576105a86107fa565b60243573ffffffffffffffffffffffffffffffffffffffff81168091036100fd5773ffffffffffffffffffffffffffffffffffffffff602092166000526000825273ffffffffffffffffffffffffffffffffffffffff6040600020541614604051908152f35b346100fd5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100fd5760043567ffffffffffffffff81116100fd5761065d90369060040161081d565b6040517f112d3a7d000000000000000000000000000000000000000000000000000000008152600160048201523060248201526060604482015260006064820152909190602081608481335afa8015610565576106c291600091610764575b506108d3565b357fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008116916014811061072f575b8233600052600060205260406000209060601c7fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055600080f35b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000009250829060140360031b1b161681806106f0565b61077d915060203d60201161055e57610550818361084b565b846106bc565b346100fd5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100fd5760209073ffffffffffffffffffffffffffffffffffffffff6107d26107fa565b166000526000825273ffffffffffffffffffffffffffffffffffffffff604060002054168152f35b6004359073ffffffffffffffffffffffffffffffffffffffff821682036100fd57565b9181601f840112156100fd5782359167ffffffffffffffff83116100fd57602083818601950101116100fd57565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761088c57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b908160209103126100fd575180151581036100fd5790565b156108da57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f56616c696461746f72206973207374696c6c20696e7374616c6c6564000000006044820152fd5b919033600052600060205273ffffffffffffffffffffffffffffffffffffffff6040600020541661096b83838684610a19565b6109f1576109a5937f19457468657265756d205369676e6564204d6573736167653a0a333200000000600052601c52603c60002090610a19565b6109cd577fffffffff0000000000000000000000000000000000000000000000000000000090565b7f1626ba7e0000000000000000000000000000000000000000000000000000000090565b505050507f1626ba7e0000000000000000000000000000000000000000000000000000000090565b9392919073ffffffffffffffffffffffffffffffffffffffff600095169081610a43575b50505050565b909192939450604051908060005260408514610b04575b60418514610ac5575b917f1626ba7e000000000000000000000000000000000000000000000000000000009391602093600060605281604052858252600482015260648660248301978895604087528160448601528385013701915afa915114169038808080610a3d565b604084013560001a60205260408481376020600160806000825afa5183183d1517610a6357509392505050600191600060605260405238808080610a3d565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6020850135601b8160ff1c016020528535604052166060526020600160806000825afa5183183d1517610a5a57509392505050600191600060605260405238808080610a3d56fea26469706673582212200afb88b3e8240c2964e92585ac5dcc211660c088f462328e1bc883d03c6d583c64736f6c634300081a0033" - }, - "MockToken": { - "address": "0x56623d18E54cBbCae340EC449E3c5D1DC0bF60cd", - "bytecode": "0x6080604052346103c757610f1880380380610019816103cc565b9283398101906040818303126103c75780516001600160401b0381116103c757826100459183016103f1565b60208201519092906001600160401b0381116103c75761006592016103f1565b81516001600160401b0381116102d257600354600181811c911680156103bd575b60208210146102b257601f8111610358575b50602092601f82116001146102f357928192936000926102e8575b50508160011b916000199060031b1c1916176003555b80516001600160401b0381116102d257600454600181811c911680156102c8575b60208210146102b257601f811161024d575b50602091601f82116001146101e9579181926000926101de575b50508160011b916000199060031b1c1916176004555b33156101c8576002546a084595161401484a00000081018091116101b257600255600033815280602052604081206a084595161401484a0000008154019055604051906a084595161401484a00000082527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203393a3604051610abb908161045d8239f35b634e487b7160e01b600052601160045260246000fd5b63ec442f0560e01b600052600060045260246000fd5b015190503880610116565b601f198216926004600052806000209160005b8581106102355750836001951061021c575b505050811b0160045561012c565b015160001960f88460031b161c1916905538808061020e565b919260206001819286850151815501940192016101fc565b60046000527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f830160051c810191602084106102a8575b601f0160051c01905b81811061029c57506100fc565b6000815560010161028f565b9091508190610286565b634e487b7160e01b600052602260045260246000fd5b90607f16906100ea565b634e487b7160e01b600052604160045260246000fd5b0151905038806100b3565b601f198216936003600052806000209160005b8681106103405750836001959610610327575b505050811b016003556100c9565b015160001960f88460031b161c19169055388080610319565b91926020600181928685015181550194019201610306565b60036000527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f830160051c810191602084106103b3575b601f0160051c01905b8181106103a75750610098565b6000815560010161039a565b9091508190610391565b90607f1690610086565b600080fd5b6040519190601f01601f191682016001600160401b038111838210176102d257604052565b81601f820112156103c7578051906001600160401b0382116102d257610420601f8301601f19166020016103cc565b92828452602083830101116103c75760005b82811061044757505060206000918301015290565b8060208092840101518282870101520161043256fe608080604052600436101561001357600080fd5b60003560e01c90816306fdde03146107a557508063095ea7b3146106f457806318160ddd146106b857806323b872dd14610514578063313ce567146104da57806340c10f19146103d157806370a082311461036c57806395d89b4114610171578063a9059cbb146101225763dd62ed3e1461008d57600080fd5b3461011d5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011d576100c4610944565b73ffffffffffffffffffffffffffffffffffffffff6100e1610967565b9116600052600160205273ffffffffffffffffffffffffffffffffffffffff604060002091166000526020526020604060002054604051908152f35b600080fd5b3461011d5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011d5761016661015c610944565b602435903361098a565b602060405160018152f35b3461011d5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011d57604051600090600454918260011c60018416938415610362575b60208210851461033557839482855290816000146102d5575060011461025a575b5003601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681019067ffffffffffffffff82118183101761022b57610227829182604052826108dc565b0390f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6004600090815291507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b8183106102b957505081016020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06101db565b6020919350806001915483858801015201910190918392610285565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208581019190915291151560051b840190910191507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090506101db565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b90607f16906101ba565b3461011d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011d5773ffffffffffffffffffffffffffffffffffffffff6103b8610944565b1660005260006020526020604060002054604051908152f35b3461011d5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011d57610408610944565b73ffffffffffffffffffffffffffffffffffffffff602435911680156104ab576002549180830180931161047c576020926002557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600093849284845283825260408420818154019055604051908152a380f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7fec442f0500000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b3461011d5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011d57602060405160128152f35b3461011d5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011d5761054b610944565b610553610967565b6044359073ffffffffffffffffffffffffffffffffffffffff831692836000526001602052604060002073ffffffffffffffffffffffffffffffffffffffff33166000526020526040600020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81036105d3575b50610166935061098a565b83811061068257841561065357331561062457610166946000526001602052604060002073ffffffffffffffffffffffffffffffffffffffff331660005260205283604060002091039055846105c8565b7f94280d6200000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7fe602df0500000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b83907ffb8f41b2000000000000000000000000000000000000000000000000000000006000523360045260245260445260646000fd5b3461011d5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011d576020600254604051908152f35b3461011d5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011d5761072b610944565b6024359033156106535773ffffffffffffffffffffffffffffffffffffffff1690811561062457336000526001602052604060002082600052602052806040600020556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b3461011d5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011d57600090600354918260011c600184169384156108d2575b60208210851461033557839482855290816000146102d55750600114610857575003601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681019067ffffffffffffffff82118183101761022b57610227829182604052826108dc565b6003600090815291507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b8183106108b657505081016020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06101db565b6020919350806001915483858801015201910190918392610882565b90607f16906107eb565b9190916020815282519283602083015260005b84811061092e5750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006040809697860101520116010190565b80602080928401015160408286010152016108ef565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361011d57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361011d57565b73ffffffffffffffffffffffffffffffffffffffff16908115610a565773ffffffffffffffffffffffffffffffffffffffff169182156104ab576000828152806020526040812054828110610a235791604082827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef958760209652828652038282205586815280845220818154019055604051908152a3565b6064937fe450d38c0000000000000000000000000000000000000000000000000000000083949352600452602452604452fd5b7f96c6fd1e00000000000000000000000000000000000000000000000000000000600052600060045260246000fdfea2646970667358221220776ef503971e5a3b02cfda0d5a59bff3bff2e12eb1861d6c9d7f21399165e04764736f6c634300081a0033" - }, - "BootstrapLib": { - "address": "0x8F7560b30A1E2825005a0C69bccd2a70065d98Dd", - "bytecode": "0x608080604052346019576106e2908161001f823930815050f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c80631d184bb31461016157806375dc30101461008757638491599f1461003d57600080fd5b610083610049366105ee565b73ffffffffffffffffffffffffffffffffffffffff6100666103f8565b9216825260208201526040519182916020835260208301906104e5565b0390f35b610090366105ee565b60409061009c82610418565b60018152917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0019260005b8481106101115750610083935073ffffffffffffffffffffffffffffffffffffffff6100f28461065c565b519116905260206101028361065c565b51015260405191829182610570565b60209061011c6103f8565b60008152606083820152828287010152016100c7565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103c65760043567ffffffffffffffff81116103c657366023820112156103c65780600401356101be6101b98261045c565b610418565b916024602084848152019260051b820101903682116103c657602401915b8183106103cb576024358467ffffffffffffffff82116103c657366023830112156103c65781600401356102126101b98261045c565b926024602085848152019260051b820101903682116103c65760248101925b8284106103965785858051825103610338578051917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061027f6102766101b98661045c565b9480865261045c565b0160005b81811061031757505060005b8251811015610309578073ffffffffffffffffffffffffffffffffffffffff6102ba60019386610698565b51166102c68285610698565b5173ffffffffffffffffffffffffffffffffffffffff6102e46103f8565b9216825260208201526102f78287610698565b526103028186610698565b500161028f565b604051806100838682610570565b6020906103226103f8565b6000815260608382015282828801015201610283565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f426f6f7473747261704c69623a206c656e677468206d69736d617463680000006044820152fd5b833567ffffffffffffffff81116103c6576020916103bb839260243691870101610474565b815201930192610231565b600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681036103c6578152602092830192016101dc565b604051906040820182811067ffffffffffffffff82111761013257604052565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051930116820182811067ffffffffffffffff82111761013257604052565b67ffffffffffffffff81116101325760051b60200190565b81601f820112156103c65780359067ffffffffffffffff8211610132576104c260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011601610418565b92828452602083830101116103c657816000926020809301838601378301015290565b60209092919273ffffffffffffffffffffffffffffffffffffffff81511684520151916040602082015282519283604083015260005b84811061055a5750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006060809697860101520116010190565b806020809284010151606082860101520161051b565b602081016020825282518091526040820191602060408360051b8301019401926000915b8383106105a357505050505090565b90919293946020806105df837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0866001960301875289516104e5565b97019301930191939290610594565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126103c65760043573ffffffffffffffffffffffffffffffffffffffff811681036103c657916024359067ffffffffffffffff82116103c65761065991600401610474565b90565b8051156106695760200190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80518210156106695760209160051b01019056fea264697066735822122060d6e041e28ea380368628e9c24ac42967e7231da2b9c251384e786abba1e47764736f6c634300081a0033" - }, - "MockRegistry": { - "address": "0x25D55884BFA6380B0fCDc9E924c495C44Aa46415", - "bytecode": "0x6080806040523460155761035f908161001b8239f35b600080fdfe608080604052600436101561001357600080fd5b60003560e01c80630bb30abc1461025a5780632ed94467146102025780634c13560c146101cb578063529562a11461018b57806396fb721714610154578063c23697a81461011b5763f05c04e11461006a57600080fd5b346101165760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101165760043560ff8116036101165760243567ffffffffffffffff8111610116577fb8a00d6d8ca1be30bfec34d8f97e55f0f0fd9eeb7fb46e030516363d4cfe1ad6916100e960209236906004016102f8565b5050338152a17fb6d9a72244037f5f1de04d8ff74cd328f1574efc59a02163d0fec05548719746600080a1005b600080fd5b346101165760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610116576101526102b2565b005b346101165760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610116576101526102b2565b346101165760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610116576101c26102b2565b506101526102d5565b346101165760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610116576101c26102b2565b346101165760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610116576102396102b2565b5060443567ffffffffffffffff8111610116576101529036906004016102f8565b346101165760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610116576102916102b2565b5060243567ffffffffffffffff8111610116576101529036906004016102f8565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361011657565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361011657565b9181601f840112156101165782359167ffffffffffffffff8311610116576020808501948460051b0101116101165756fea2646970667358221220570a018609c9de38f179f6ed43501da562ce3f9bd8c43c0418b649cbae71073064736f6c634300081a0033" - }, - "MockHandler": { - "address": "0xD981Bfa82Da48CC620892A4D927B47EB5384F2ef", - "bytecode": "0x6080806040523460155761078b908161001b8239f35b600080fdfe608080604052600436101561006c575b5034610067577f62390046000000000000000000000000000000000000000000000000000000006000527fffffffff000000000000000000000000000000000000000000000000000000006000351660045260246000fd5b600080fd5b60003560e01c90816306661abd14610663575080631865c57d14610627578063671bd39d146105ce5780636d61fe701461053f5780638a91b0e3146104ee578063a3f4df7e14610467578063c214267a146103d7578063c84f59b41461034a578063cb5baf0f14610238578063d60b347f146101f5578063ecd05961146101b75763ffa1ad74146100fd573861000f565b346100675760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261006757604051604081019080821067ffffffffffffffff8311176101885761018491604052600581527f312e302e300000000000000000000000000000000000000000000000000000006020820152604051918291826106ca565b0390f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b346100675760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100675760206040516003600435148152f35b346100675760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100675761022c610732565b50602060405160008152f35b346100675760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100675761026f610732565b6044359067ffffffffffffffff821161006757608073ffffffffffffffffffffffffffffffffffffffff917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f6102ec7f55ab15748247cb8144eef0ae68299026fbac7516b53ac596f1c767b9e61c0d3596369060040161069c565b809160405197889616865260243560208701526060604087015281606087015286860137600085828601015201168101030190a160206040517fcb5baf0f000000000000000000000000000000000000000000000000000000008152f35b346100675760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100675760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f52455645525400000000000000000000000000000000000000000000000000006044820152fd5b346100675760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610067576000547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461043857600101600055005b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b346100675760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261006757604051604081019080821067ffffffffffffffff8311176101885761018491604052600f81527f44656661756c742048616e646c657200000000000000000000000000000000006020820152604051918291826106ca565b346100675760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100675760043567ffffffffffffffff81116100675761053d90369060040161069c565b005b346100675760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100675760043567ffffffffffffffff81116100675761058e90369060040161069c565b602081101561059957005b6020116100675760207fc238a57f4049d38354151e09931543bd1e6b91ac24f1155d597ebeb207232d5c9160405190358152a1005b346100675760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100675760206040517f39bf027dd97f3bae0cf8cfb909695ec63313a9bd61ad52fc7f52cf565b141da88152f35b346100675760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610067576020600054604051908152f35b346100675760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610067576020906000548152f35b9181601f840112156100675782359167ffffffffffffffff8311610067576020838186019501011161006757565b9190916020815282519283602083015260005b84811061071c5750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006040809697860101520116010190565b80602080928401015160408286010152016106dd565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036100675756fea2646970667358221220e432cdd52ed8203b9bce18a566b0f446141e54a5991a62cdac0d819e966265be64736f6c634300081a0033" - }, - "Bootstrap": { - "address": "0xad8b572bFB1b4d5F258c65910D1C266a1284E448", - "bytecode": "0x6101206040523461012957306080524660a052604080519060009082016001600160401b0381118382101761011557604052600982526020820191680426f6f7473747261760bc1b8352604051604081019381851060018060401b038611176101015760a094604052600a8252602082019269312e302e302d6265746160b01b845251902092505190208160c0528060e052604051917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8352602083015260408201524660608201523060808201522061010052604051612b67908161012f823960805181505060a05181505060c05181505060e05181505061010051815050f35b634e487b7160e01b84526041600452602484fd5b634e487b7160e01b82526041600452602482fd5b600080fdfe6080604052600436101561001e575b361561001c5761001c6117bd565b005b60003560e01c806301fe9ff2146100de5780630a664dba146100d9578063481ddd23146100d457806355470cf1146100cf5780635faac46b146100ca5780637b103999146100c5578063837b892e146100c057806384b0196e146100bb57806385a924cc146100b65780639e2533ed146100b1578063d6fe71f1146100ac5763ea5f61d00361000e57611238565b6110ea565b610f1b565b610d80565b610c43565b610a83565b6109be565b610751565b6104b5565b6102cb565b610244565b61017f565b73ffffffffffffffffffffffffffffffffffffffff81160361010157565b600080fd5b60443590610113826100e3565b565b3590610113826100e3565b9181601f840112156101015782359167ffffffffffffffff8311610101576020808501948460051b01011161010157565b6084359060ff8216820361010157565b6064359060ff8216820361010157565b359060ff8216820361010157565b346101015760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610101576004356101ba816100e3565b60243567ffffffffffffffff8111610101573660238201121561010157806004013567ffffffffffffffff8111610101573660248284010111610101576101ff610106565b926064359367ffffffffffffffff85116101015761022461001c953690600401610120565b9390926024610231610151565b960190611383565b600091031261010157565b346101015760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010157602073ffffffffffffffffffffffffffffffffffffffff7f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f03541673ffffffffffffffffffffffffffffffffffffffff60405191168152f35b346101015760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610101576004357fffffffff00000000000000000000000000000000000000000000000000000000811681036101015761037b907fffffffff00000000000000000000000000000000000000000000000000000000166000527f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f02602052604060002090565b60405190604082019082821067ffffffffffffffff8311176103f75760409182525473ffffffffffffffffffffffffffffffffffffffff811680845260589190911b7fff0000000000000000000000000000000000000000000000000000000000000016602093840181905282519081529283015290f35b0390f35b611489565b908160409103126101015790565b60a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126101015760043567ffffffffffffffff8111610101578161045391600401610120565b9290929160243567ffffffffffffffff81116101015781610476916004016103fc565b91604435610483816100e3565b916064359067ffffffffffffffff8211610101576104a391600401610120565b909160843560ff811681036101015790565b34610101576104d26104c63661040a565b929693969190916119cc565b60005b818110610523578373ffffffffffffffffffffffffffffffffffffffff6104fb8261157c565b1661050257005b8061051d61051261001c9361157c565b916020810190611586565b91611b84565b61052e818385611537565b3590610539826100e3565b610551610547828587611537565b6020810190611586565b61055a84612310565b6040517fecd059610000000000000000000000000000000000000000000000000000000081526001600482015273ffffffffffffffffffffffffffffffffffffffff85169490602081602481895afa90811561064057600091610674575b5015610645576105c790612559565b833b156101015761060b93600092836040518097819582947f6d61fe7000000000000000000000000000000000000000000000000000000000845260048401611b73565b03925af191821561064057600192610625575b50016104d5565b80610634600061063a936114b8565b80610239565b3861061e565b6119c0565b7fd393448a00000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b610695915060203d811161069b575b61068d81836114b8565b810190611b5b565b386105b8565b503d610683565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6040910112610101576004356106d8816100e3565b9060243590565b909291926040820160408352815180915260206060840192019060005b8181106107255750505073ffffffffffffffffffffffffffffffffffffffff6020919416910152565b825173ffffffffffffffffffffffffffffffffffffffff168452602093840193909201916001016106fc565b346101015761075f366106a2565b906000600173ffffffffffffffffffffffffffffffffffffffff83161415806109a8575b61096657821561093e576107ff6107e561079e8594956128f1565b929473ffffffffffffffffffffffffffffffffffffffff166000527f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f00602052604060002090565b5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff81168015159081610932575b5080610929575b156108b0576108a46107e58261085f6108aa946108448988612940565b9073ffffffffffffffffffffffffffffffffffffffff169052565b73ffffffffffffffffffffffffffffffffffffffff166000527f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f00602052604060002090565b93612983565b926107ff565b9083600173ffffffffffffffffffffffffffffffffffffffff8416141580610920575b6108e9575b81526103f3604051928392836106df565b915061091a6109006108fa846129b5565b83612940565b5173ffffffffffffffffffffffffffffffffffffffff1690565b916108d8565b508015156108d3565b50828410610827565b60019150141538610820565b807ff72508170000000000000000000000000000000000000000000000000000000060049252fd5b7f7c84ecfb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600452602490fd5b506109b96109b583612a53565b1590565b610783565b346101015760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010157602073ffffffffffffffffffffffffffffffffffffffff60005416604051908152f35b919082519283825260005b848110610a5a5750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b80602080928401015182828601015201610a1b565b906020610a80928181520190610a10565b90565b346101015760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101015760043567ffffffffffffffff811161010157610ad29036906004016103fc565b602435610ade816100e3565b60443567ffffffffffffffff8111610101577f01fe9ff200000000000000000000000000000000000000000000000000000000610bfb60206103f39560ff610bc8610c0b97610b34610c37983690600401610120565b9073ffffffffffffffffffffffffffffffffffffffff610b92610b55610161565b9782610b6f823592610b66846100e3565b8c810190611586565b9190926040519e8f9d8e01521660248c015260a060448c015260c48b01916115d7565b931660648801527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc878403016084880152611616565b911660a4830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826114b8565b6040519283913060208401611667565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826114b8565b60405191829182610a6f565b346101015760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010157610d206040610d2d815191610c8781846114b8565b600983527f426f6f747374726170000000000000000000000000000000000000000000000060208401528051610cbd82826114b8565b600a81527f312e302e302d6265746100000000000000000000000000000000000000000000602082015281519485947f0f00000000000000000000000000000000000000000000000000000000000000865260e0602087015260e0860190610a10565b9184830390850152610a10565b466060830152306080830152600060a083015281810360c0830152602060605191828152019060809060005b818110610d67575050500390f35b8251845285945060209384019390920191600101610d59565b34610101576103f3610c0b610c3760a0610bfb602473ffffffffffffffffffffffffffffffffffffffff60ff610bc8610b92610e02610dbe3661040a565b9a946040989493989792969197519e8f9d8e7f55470cf1000000000000000000000000000000000000000000000000000000006020820152015260c48d019161171b565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc8b83030160448c0152611694565b60e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126101015760043567ffffffffffffffff81116101015781610e7b91600401610120565b9290929160243567ffffffffffffffff81116101015781610e9e91600401610120565b9290929160443567ffffffffffffffff81116101015781610ec1916004016103fc565b9160643567ffffffffffffffff81116101015782610ee191600401610120565b92909291610eef6084610115565b9160a4359067ffffffffffffffff821161010157610f0f91600401610120565b9091610a8060c4610171565b3461010157610f2936610e32565b97909493929591966040519a8b9a60208c017fd6fe71f100000000000000000000000000000000000000000000000000000000905260248c0160e090526101048c0190610f759261171b565b908a82037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc0160448c0152610fa99261171b565b8881037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc0160648a0152610fdc91611694565b908782037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc0160848901526110109261171b565b9173ffffffffffffffffffffffffffffffffffffffff1660a48601528482037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc0160c486015261105f92611616565b9060ff1660e4830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101825261109890826114b8565b6040519081906110ac903060208401611667565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810182526110dc90826114b8565b6040516103f3819282610a6f565b346101015761110c6110fb36610e32565b929a9399949a9895989190916119cc565b60005b82811061120a5750505060005b8181106111c15750505061114b6111328261157c565b73ffffffffffffffffffffffffffffffffffffffff1690565b6111ab575b5060005b81811061115d57005b806111766111326111716001948688611537565b61157c565b156111a6576111a061118c611171838688611537565b61119a610547848789611537565b91611e30565b01611154565b6111a0565b8061051d6105126111bb9361157c565b38611150565b806111d56111326111716001948688611537565b15611205576111ff6111eb611171838688611537565b6111f9610547848789611537565b91611d6b565b0161111c565b6111ff565b8061123261121e6111716001948787611537565b61122c610547848888611537565b91611ac5565b0161110f565b3461010157611246366106a2565b906000600173ffffffffffffffffffffffffffffffffffffffff8316141580611371575b61096657821561093e576112cc6107e56112858594956128f1565b929473ffffffffffffffffffffffffffffffffffffffff166000527f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f01602052604060002090565b73ffffffffffffffffffffffffffffffffffffffff81168015159081611365575b508061135c575b156108b0576108a46107e582611311611356946108448988612940565b73ffffffffffffffffffffffffffffffffffffffff166000527f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f01602052604060002090565b926112cc565b508284106112f4565b600191501415386112ed565b5061137e6109b583612ac2565b61126a565b929473ffffffffffffffffffffffffffffffffffffffff946113a7939792966119cc565b16916113b283612310565b6040517fecd0596100000000000000000000000000000000000000000000000000000000815260016004820152602081602481875afa9081156106405760009161146a575b50156106455761140683612559565b823b156101015761144a92600092836040518096819582947f6d61fe7000000000000000000000000000000000000000000000000000000000845260048401611b73565b03925af180156106405761145b5750565b806106346000610113936114b8565b611483915060203d60201161069b5761068d81836114b8565b386113f7565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176103f757604052565b604051906101136040836114b8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b91908110156115775760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc181360301821215610101570190565b611508565b35610a80816100e3565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610101570180359067ffffffffffffffff82116101015760200191813603831361010157565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b9160209082815201919060005b8181106116305750505090565b90919260208060019273ffffffffffffffffffffffffffffffffffffffff8735611659816100e3565b168152019401929101611623565b60409073ffffffffffffffffffffffffffffffffffffffff610a8094931681528160208201520190610a10565b73ffffffffffffffffffffffffffffffffffffffff81356116b4816100e3565b16825260208101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18236030181121561010157016020813591019067ffffffffffffffff811161010157803603821361010157604083816020610a8096015201916115d7565b90602083828152019060208160051b85010193836000915b8383106117435750505050505090565b9091929394957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820301865286357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1843603018112156101015760206117af60019386839401611694565b980196019493019190611733565b6000358060e01c63bc197c81811463f23a6e6182141763150b7a0282141761195f57507fffffffff000000000000000000000000000000000000000000000000000000001660008181527f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f0260205260409020549061189661187773ffffffffffffffffffffffffffffffffffffffff84169360581b7fff000000000000000000000000000000000000000000000000000000000000001690565b9173ffffffffffffffffffffffffffffffffffffffff84161515611968565b7fff0000000000000000000000000000000000000000000000000000000000000081167ffe000000000000000000000000000000000000000000000000000000000000001461193a577fff0000000000000000000000000000000000000000000000000000000000000016156119095750565b60008091368280373360601b365281601436019134905af115611930573d6000803e3d6000f35b3d6000803e3d6000fd5b60008083368280373360601b36528160143601915afa15611930573d6000803e3d6000f35b6020526020603cf35b156119705750565b7fffffffff00000000000000000000000000000000000000000000000000000000907f08c63e27000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b6040513d6000823e3d90fd5b73ffffffffffffffffffffffffffffffffffffffff909391931692837fffffffffffffffffffffffff0000000000000000000000000000000000000000600054161760005583611a41575b5050507ff98c8404c5b1bfef2e6ba9233c6e88845aedfd36eea8b192725d8c199571cf32600080a2565b833b1561010157600091611a9360ff9260405195869485947ff05c04e1000000000000000000000000000000000000000000000000000000008652166004850152604060248501526044840191611616565b038183865af1801561064057611aab575b8080611a17565b80611ab8600080936114b8565b8003126101015738611aa4565b91611acf83612310565b6040517fecd059610000000000000000000000000000000000000000000000000000000081526001600482015273ffffffffffffffffffffffffffffffffffffffff84169390602081602481885afa90811561064057600091611b3c575b50156106455761140690612559565b611b55915060203d60201161069b5761068d81836114b8565b38611b2d565b90816020910312610101575180151581036101015790565b916020610a809381815201916115d7565b91611b8e836123af565b6040517fecd0596100000000000000000000000000000000000000000000000000000000815260048082015273ffffffffffffffffffffffffffffffffffffffff84169390602081602481885afa90811561064057600091611d00575b5015611cd25761140690611c53611c3673ffffffffffffffffffffffffffffffffffffffff7f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f03541690565b73ffffffffffffffffffffffffffffffffffffffff811615611d1f565b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000007f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f035416177f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f0355565b7fd393448a000000000000000000000000000000000000000000000000000000006000526004805260246000fd5b611d19915060203d60201161069b5761068d81836114b8565b38611beb565b15611d275750565b73ffffffffffffffffffffffffffffffffffffffff907f741cbe03000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b91611d758361243d565b6040517fecd059610000000000000000000000000000000000000000000000000000000081526002600482015273ffffffffffffffffffffffffffffffffffffffff84169390602081602481885afa90811561064057600091611e11575b5015611de25761140690612771565b7fd393448a00000000000000000000000000000000000000000000000000000000600052600260045260246000fd5b611e2a915060203d60201161069b5761068d81836114b8565b38611dd3565b9091611e3b826124cb565b6040517fecd059610000000000000000000000000000000000000000000000000000000081526003600482015273ffffffffffffffffffffffffffffffffffffffff83169290602081602481875afa90811561064057600091612145575b50156121165761203b84611fea611f2c611f258680611f1f611efa611ed483611ece611ec86120a79e8c612164565b906121ad565b99612213565b357fff000000000000000000000000000000000000000000000000000000000000001690565b7fff000000000000000000000000000000000000000000000000000000000000001690565b9a612172565b3691612222565b96611f857fffffffff0000000000000000000000000000000000000000000000000000000084167f6d61fe700000000000000000000000000000000000000000000000000000000081149081156120ec575b5015612287565b611f9a83611f956109b5826129e2565b6122b8565b611fc1611fa56114f9565b73ffffffffffffffffffffffffffffffffffffffff9096168652565b7fff00000000000000000000000000000000000000000000000000000000000000166020850152565b7fffffffff00000000000000000000000000000000000000000000000000000000166000527f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f02602052604060002090565b8151815460209093015174ff000000000000000000000000000000000000000060589190911c167fffffffffffffffffffffff00000000000000000000000000000000000000000090931673ffffffffffffffffffffffffffffffffffffffff90911617919091179055565b803b156101015761144a6000929183926040519485809481937f6d61fe7000000000000000000000000000000000000000000000000000000000835260048301610a6f565b7f8a91b0e30000000000000000000000000000000000000000000000000000000091501438611f7e565b7fd393448a00000000000000000000000000000000000000000000000000000000600052600360045260246000fd5b61215e915060203d60201161069b5761068d81836114b8565b38611e99565b906004116101015790600490565b909291928360051161010157831161010157600501917ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb0190565b919091357fffffffff00000000000000000000000000000000000000000000000000000000811692600481106121e1575050565b7fffffffff00000000000000000000000000000000000000000000000000000000929350829060040360031b1b161690565b90600410156115775760040190565b92919267ffffffffffffffff82116103f7576040519161226a601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016602001846114b8565b829481845281830111610101578281602093846000960137010152565b1561228e57565b7fc001660b0000000000000000000000000000000000000000000000000000000060005260046000fd5b156122c05750565b7fffffffff00000000000000000000000000000000000000000000000000000000907fa56a04dd000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b60009073ffffffffffffffffffffffffffffffffffffffff825416908161233657505050565b813b156123ab5773ffffffffffffffffffffffffffffffffffffffff6044849260405194859384927f96fb7217000000000000000000000000000000000000000000000000000000008452166004830152600160248301525afa80156106405761239e575050565b816123a8916114b8565b50565b8280fd5b60009073ffffffffffffffffffffffffffffffffffffffff82541690816123d557505050565b813b156123ab5773ffffffffffffffffffffffffffffffffffffffff6044849260405194859384927f96fb7217000000000000000000000000000000000000000000000000000000008452166004830152600460248301525afa80156106405761239e575050565b60009073ffffffffffffffffffffffffffffffffffffffff825416908161246357505050565b813b156123ab5773ffffffffffffffffffffffffffffffffffffffff6044849260405194859384927f96fb7217000000000000000000000000000000000000000000000000000000008452166004830152600260248301525afa80156106405761239e575050565b60009073ffffffffffffffffffffffffffffffffffffffff82541690816124f157505050565b813b156123ab5773ffffffffffffffffffffffffffffffffffffffff6044849260405194859384927f96fb7217000000000000000000000000000000000000000000000000000000008452166004830152600360248301525afa80156106405761239e575050565b73ffffffffffffffffffffffffffffffffffffffff811680158015612767575b61273a5760009081527f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f00602052604090205473ffffffffffffffffffffffffffffffffffffffff166126f75760016000527f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f00602052610113906126a861261e7ffe44ceacbf4f03c6ac19f86826dd265fa9ec25125e8b1766c207f24cd3bc73c76107e5565b612668837f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f009073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b9073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b60016000527f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f006020527ffe44ceacbf4f03c6ac19f86826dd265fa9ec25125e8b1766c207f24cd3bc73c7612668565b7f40d3d1a40000000000000000000000000000000000000000000000000000000060005273ffffffffffffffffffffffffffffffffffffffff1660045260246000fd5b7f7c84ecfb0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b5060018114612579565b73ffffffffffffffffffffffffffffffffffffffff8116801580156128cf575b61273a5760009081527f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f01602052604090205473ffffffffffffffffffffffffffffffffffffffff166126f75760016000527f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f01602052610113906128806128367fbdfeb076d903611fa58576955630d640569633049bcf40ad9c22db9251b54a136107e5565b612668837f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f019073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b60016000527f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f016020527fbdfeb076d903611fa58576955630d640569633049bcf40ad9c22db9251b54a13612668565b5060018114612791565b67ffffffffffffffff81116103f75760051b60200190565b906128fb826128d9565b61290860405191826114b8565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061293682946128d9565b0190602036910137565b80518210156115775760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146129b05760010190565b612954565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82019182116129b057565b612a4c73ffffffffffffffffffffffffffffffffffffffff917fffffffff00000000000000000000000000000000000000000000000000000000166000527f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f02602052604060002090565b5416151590565b73ffffffffffffffffffffffffffffffffffffffff1680600114159081612a78575090565b90506000527f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f0060205273ffffffffffffffffffffffffffffffffffffffff60406000205416151590565b73ffffffffffffffffffffffffffffffffffffffff1680600114159081612ae7575090565b90506000527f0bb70095b32b9671358306b0339b4c06e7cbd8cb82505941fba30d1eb5b82f0160205273ffffffffffffffffffffffffffffffffffffffff6040600020541615159056fea2646970667358221220ed70c95fb16d016ca6b5227e6b3b5835f749aa1a8bdc4088985a8026734adc7c64736f6c634300081a0033" - }, - "MockExecutor": { - "address": "0x07be4ED2b8659807fd130bC7C761C50F81183e5c", - "bytecode": "0x6080806040523460155761105b908161001b8239f35b600080fdfe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c80631262b0ee146108a75780633006a1071461085d5780634bcfa24b1461079a5780635873f200146105ff578063628cd4a9146104cd5780636d61fe701461043e5780637b378abf146101a85780638a91b0e314610159578063d60b347f14610116578063d6cc1aa4146100dc5763ecd059610361000e57346100d75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d75760206040516002600435148152f35b600080fd5b346100d75760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d757602060405160008152f35b346100d75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d75761014d61094b565b50602060405160008152f35b346100d75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d75760043567ffffffffffffffff81116100d757610019903690600401610ae4565b346100d75760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d7576004356024359073ffffffffffffffffffffffffffffffffffffffff82168092036100d7576044359173ffffffffffffffffffffffffffffffffffffffff8316928381036100d75760643560843567ffffffffffffffff81116100d757610242903690600401610ae4565b60007fff000000000000000000000000000000000000000000000000000000000000008716806103325750506102dc96509161029f6000969594926102a59461029661028f368385610c84565b8587610fa6565b505b3691610c84565b91610fa6565b91836040518096819582947fd691c96400000000000000000000000000000000000000000000000000000000845260048401610e6e565b03925af18015610326576102ff91600091610303575b5060405191829182610a66565b0390f35b61032091503d806000833e6103188183610bf1565b810190610d96565b826102f2565b6040513d6000823e3d90fd5b7f010000000000000000000000000000000000000000000000000000000000000014610372575b506102dc96509161029f6000969594926102a594610298565b6040978851916103828a84610bf1565b600183527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08a01815b8181106104155750509261040761029f9360009a999896938c6102a599976102dc9e51926103d884610ba6565b835260208301526103ea368688610c84565b908201526103f782610e88565b5261040181610e88565b50610ec4565b509294509294959650610359565b6020908c606081519161042783610ba6565b8683528685840152820152828288010152016103ab565b346100d75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d75760043567ffffffffffffffff81116100d75761048d903690600401610ae4565b602081101561049857005b6020116100d75760207f7d5cb0984bb7d1f4bd4b5173bf72bc11bee784a856f3fe474cba8d93aa9e3baa9160405190358152a1005b346100d7576105a560006104e036610b12565b939185939160405160208101958087527f0100000000000000000000000000000000000000000000000000000000000000602183015280602283015280602683015280602a83015260208252610537604083610bf1565b5051945194602081106105c8575b5061029f9085966105599596503691610c84565b918373ffffffffffffffffffffffffffffffffffffffff6040518097819682957fd691c96400000000000000000000000000000000000000000000000000000000845260048401610e6e565b0393165af18015610326576102ff91600091610303575060405191829182610a66565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910360031b1b9094169361029f610545565b346100d75760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d75761063661094b565b60243567ffffffffffffffff81116100d7576106586000913690600401610ae4565b9283918373ffffffffffffffffffffffffffffffffffffffff60648260405160208101917fff00000000000000000000000000000000000000000000000000000000000000835280602183015280602283015280602683015280602a830152602082526106c6604083610bf1565b50519051906020811061076a575b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f6040519a8b998a9889957fd691c964000000000000000000000000000000000000000000000000000000008752600487015260406024870152816044870152868601378685828601015201168101030193165af18015610326576102ff91600091610303575060405191829182610a66565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9060200360031b1b16896106d4565b346100d7576105a560006107ad3661096e565b9190839260405160208101947f0100000000000000000000000000000000000000000000000000000000000000865280602183015280602283015280602683015280602a83015260208252610803604083610bf1565b505193519360208110610826575b5061055991610821913691610cbb565b610ec4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910360031b1b90931692610559610811565b346100d7576105a5600061087036610b12565b9391859391604051602081019580875280602183015280602283015280602683015280602a83015260208252610537604083610bf1565b346100d7576105a560006108ba3661096e565b91906040519260208401937f010000000000000000000000000000000000000000000000000000000000000085527f0100000000000000000000000000000000000000000000000000000000000000602182015285602282015285602682015285602a8201526020815261092f604082610bf1565b5193519360208110610826575061055991610821913691610cbb565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036100d757565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126100d75760043573ffffffffffffffffffffffffffffffffffffffff811681036100d7579160243567ffffffffffffffff81116100d757826023820112156100d75780600401359267ffffffffffffffff84116100d75760248460051b830101116100d7576024019190565b60005b838110610a135750506000910152565b8181015183820152602001610a03565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602093610a5f81518092818752878088019101610a00565b0116010190565b602081016020825282518091526040820191602060408360051b8301019401926000915b838310610a9957505050505090565b9091929394602080610ad5837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187528951610a23565b97019301930191939290610a8a565b9181601f840112156100d75782359167ffffffffffffffff83116100d757602083818601950101116100d757565b9060807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126100d75760043573ffffffffffffffffffffffffffffffffffffffff811681036100d7579160243573ffffffffffffffffffffffffffffffffffffffff811681036100d75791604435916064359067ffffffffffffffff82116100d757610ba291600401610ae4565b9091565b6060810190811067ffffffffffffffff821117610bc257604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610bc257604052565b67ffffffffffffffff8111610bc25760051b60200190565b67ffffffffffffffff8111610bc257601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b929192610c9082610c4a565b91610c9e6040519384610bf1565b8294818452818301116100d7578281602093846000960137010152565b929192610cc782610c32565b93610cd56040519586610bf1565b602085848152019260051b8201918183116100d75780935b838510610cfb575050505050565b843567ffffffffffffffff81116100d7578201906060828503126100d75760405191610d2683610ba6565b803573ffffffffffffffffffffffffffffffffffffffff811681036100d75783526020810135602084015260408101359067ffffffffffffffff82116100d757019084601f830112156100d757602092610d868684868096359101610c84565b6040820152815201940193610ced565b6020818303126100d75780519067ffffffffffffffff82116100d7570181601f820112156100d757805190610dca82610c32565b92610dd86040519485610bf1565b82845260208085019360051b830101918183116100d75760208101935b838510610e0457505050505090565b845167ffffffffffffffff81116100d75782019083603f830112156100d757602082015190610e3282610c4a565b610e3f6040519182610bf1565b82815260408484010186106100d757610e6360209493859460408685019101610a00565b815201940193610df5565b604090610e85939281528160208201520190610a23565b90565b805115610e955760200190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6040519081604081019160208083015280518093526060820192602060608260051b8501019201936000905b828210610f2b57505050610e859250037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610bf1565b91936020610f96857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa083946001969803018652606060408a5173ffffffffffffffffffffffffffffffffffffffff815116845285810151868501520151918160408201520190610a23565b9601920192018593919492610ef0565b6054907fffffffffffffffffffffffffffffffffffffffff00000000000000000000000093610e859360405195869360601b1660208401526034830152610ff68151809260208686019101610a00565b810103017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610bf156fea2646970667358221220654856a16b975974e83b84f624ebaa4854128669c7d3111882a257eec28843a264736f6c634300081a0033" - } -} diff --git a/tests/create.config.ts b/tests/create.config.ts deleted file mode 100644 index 52d7c0bd..00000000 --- a/tests/create.config.ts +++ /dev/null @@ -1,6 +0,0 @@ -import type { Hex } from "viem" -export const ENTRY_POINT_SIMULATIONS_CREATECALL: Hex = - "0x313233340000000000000000000000000000000000000000000000000000000060806040526040516100109061005f565b604051809103906000f08015801561002c573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b039290921691909117905534801561005957600080fd5b5061006c565b613d318061050783390190565b61048c8061007b6000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063c18f522614610030575b600080fd5b61004361003e366004610230565b610059565b60405161005091906103b0565b60405180910390f35b60606000825167ffffffffffffffff811115610077576100776101e9565b6040519080825280602002602001820160405280156100aa57816020015b60608152602001906001900390816100955790505b50905060005b835181101561019d57606060007f850aaf621a3721219c57b79d6077e318862cf95113b5637afaddb124884a5eb060008054906101000a90046001600160a01b031687858151811061010457610104610414565b602002602001015160405160240161011d92919061042a565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529050600061015f8882845a6101a5565b905080610174576101716000196101bd565b92505b8285858151811061018757610187610414565b60209081029190910101525050506001016100b0565b509392505050565b6000806000845160208601878987f195945050505050565b60603d828111156101cb5750815b604051602082018101604052818152816000602083013e9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610228576102286101e9565b604052919050565b600080604080848603121561024457600080fd5b83356001600160a01b038116811461025b57600080fd5b925060208481013567ffffffffffffffff8082111561027957600080fd5b8187019150601f88601f84011261028f57600080fd5b8235828111156102a1576102a16101e9565b8060051b6102b08682016101ff565b918252848101860191868101908c8411156102ca57600080fd5b87870192505b83831015610357578235868111156102e85760008081fd5b8701603f81018e136102fa5760008081fd5b888101358781111561030e5761030e6101e9565b61031f818801601f19168b016101ff565b8181528f8c8385010111156103345760008081fd5b818c84018c83013760009181018b019190915283525091870191908701906102d0565b8099505050505050505050509250929050565b6000815180845260005b8181101561039057602081850181015186830182015201610374565b506000602082860101526020601f19601f83011685010191505092915050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b8281101561040757603f198886030184526103f585835161036a565b945092850192908501906001016103d9565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038316815260406020820181905260009061044e9083018461036a565b94935050505056fea26469706673582212207ddd3776bce2d23a4710581621f90634e5e2f38c35b4ba3416ba605ac54ef07b64736f6c6343000817003360a060405260405162000012906200009d565b604051809103906000f0801580156200002f573d6000803e3d6000fd5b506001600160a01b0390811660805260408051808201825260008082528251808401909352808352602080840191825282018390529051600380546001600160a01b031916919094161790925551600455516005553480156200009157600080fd5b506001600255620000ab565b6102138062003b1e83390190565b608051613a5a620000c460003960005050613a5a6000f3fe6080604052600436106101395760003560e01c80635287ce12116100ab578063bb9fe6bf1161006f578063bb9fe6bf14610505578063c23a5cea1461051a578063c3bce0091461053a578063c5f996e614610567578063fc7e286d14610587578063fe2171cb1461062f57600080fd5b80635287ce12146103575780635895273b1461046f57806370a082311461048f578063b760faf9146104c5578063baa22044146104d857600080fd5b80631b2e01b8116100fd5780631b2e01b814610219578063205c28781461025f57806322cdde4c1461027f578063263934db1461029f57806330ec25d1146102cc57806335567e1a146102f957600080fd5b80630396cb601461014e5780630513fbf4146101615780630bd28e3b146101975780630da82661146101b75780630dbfc6bd146101ec57600080fd5b36610149576101473361064f565b005b600080fd5b61014761015c366004612c8c565b610670565b34801561016d57600080fd5b5061018161017c366004612cfd565b610904565b60405161018e9190612e11565b60405180910390f35b3480156101a357600080fd5b506101476101b2366004612e8c565b610a24565b3480156101c357600080fd5b506101d76101d2366004612fd8565b610a5b565b6040805192835260208301919091520161018e565b3480156101f857600080fd5b5061020c610207366004613127565b610b90565b60405161018e91906131c6565b34801561022557600080fd5b5061025161023436600461321d565b600160209081526000928352604080842090915290825290205481565b60405190815260200161018e565b34801561026b57600080fd5b5061014761027a366004613252565b610c4f565b34801561028b57600080fd5b5061025161029a366004613297565b610da0565b3480156102ab57600080fd5b506102bf6102ba366004613127565b610de2565b60405161018e91906132cb565b3480156102d857600080fd5b506102ec6102e7366004613127565b610e79565b60405161018e91906133a7565b34801561030557600080fd5b5061025161031436600461321d565b6001600160a01b039190911660009081526001602090815260408083206001600160c01b0385168452909152908190205491901b67ffffffffffffffff19161790565b34801561036357600080fd5b506104146103723660046133fe565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152506001600160a01b031660009081526020818152604091829020825160a0810184528154815260019091015460ff811615159282019290925261010082046001600160701b031692810192909252600160781b810463ffffffff166060830152600160981b900465ffffffffffff16608082015290565b60405161018e9190600060a082019050825182526020830151151560208301526001600160701b03604084015116604083015263ffffffff606084015116606083015265ffffffffffff608084015116608083015292915050565b34801561047b57600080fd5b506102bf61048a366004613297565b610f2e565b34801561049b57600080fd5b506102516104aa3660046133fe565b6001600160a01b031660009081526020819052604090205490565b6101476104d33660046133fe565b61064f565b3480156104e457600080fd5b506104f86104f3366004612cfd565b610fe9565b60405161018e919061341b565b34801561051157600080fd5b50610147611046565b34801561052657600080fd5b506101476105353660046133fe565b61117a565b34801561054657600080fd5b5061055a610555366004613297565b61139e565b60405161018e919061342e565b34801561057357600080fd5b506104f8610582366004613441565b611563565b34801561059357600080fd5b506105ec6105a23660046133fe565b6000602081905290815260409020805460019091015460ff81169061010081046001600160701b031690600160781b810463ffffffff1690600160981b900465ffffffffffff1685565b6040805195865293151560208601526001600160701b039092169284019290925263ffffffff909116606083015265ffffffffffff16608082015260a00161018e565b34801561063b57600080fd5b5061055a61064a366004613127565b61164e565b60015b600581101561066357600101610652565b61066c82611662565b5050565b33600090815260208190526040902063ffffffff82166106d75760405162461bcd60e51b815260206004820152601a60248201527f6d757374207370656369667920756e7374616b652064656c617900000000000060448201526064015b60405180910390fd5b600181015463ffffffff600160781b9091048116908316101561073c5760405162461bcd60e51b815260206004820152601c60248201527f63616e6e6f7420646563726561736520756e7374616b652074696d650000000060448201526064016106ce565b600181015460009061075d90349061010090046001600160701b03166134fc565b9050600081116107a45760405162461bcd60e51b81526020600482015260126024820152711b9bc81cdd185ad9481cdc1958da599a595960721b60448201526064016106ce565b6001600160701b038111156107ec5760405162461bcd60e51b815260206004820152600e60248201526d7374616b65206f766572666c6f7760901b60448201526064016106ce565b6040805160a08101825283548152600160208083018281526001600160701b0386811685870190815263ffffffff8a811660608801818152600060808a0181815233808352828a52918c90209a518b55965199909801805494519151965165ffffffffffff16600160981b0265ffffffffffff60981b1997909416600160781b029690961669ffffffffffffffffffff60781b1991909516610100026effffffffffffffffffffffffffff0019991515999099166effffffffffffffffffffffffffffff1990941693909317979097179190911691909117179055835185815290810192909252917fa5ae833d0bb1dcd632d98a8b70973e8516812898e19bf27b70071ebc8dc52c01910160405180910390a2505050565b60606000866001600160401b0381111561092057610920612ea7565b60405190808252806020026020018201604052801561096d57816020015b6040805160608082018352600080835260208301529181019190915281526020019060019003908161093e5790505b50905060005b87811015610a185760006109ef8a8a848181106109925761099261350f565b90506020028101906109a49190613525565b8989858181106109b6576109b661350f565b90506020020160208101906109cb91906133fe565b8888868181106109dd576109dd61350f565b90506020028101906105829190613546565b905080838381518110610a0457610a0461350f565b602090810291909101015250600101610973565b50979650505050505050565b3360009081526001602090815260408083206001600160c01b03851684529091528120805491610a538361358c565b919050555050565b8251606081015160a08201516000928392909181016127100160405a603f0281610a8757610a876135a5565b041015610ad25760408051631101335b60e11b8152600060048201526024810191909152600f60448201526e41413935206f7574206f662067617360881b60648201526084016106ce565b875160009015610b66576000610aef846000015160008c866116ab565b905080610b64576000610b036108006116c3565b805190915015610b5e5784600001516001600160a01b03168a602001517f1c4fada7374c0a9ee8841fc38afe82932dc0f8e69012e927f061a8bae611a201876020015184604051610b559291906135bb565b60405180910390a35b60019250505b505b600088608001515a8803019050610b7f828a8a846116ef565b955095505050505094509492505050565b60606000826001600160401b03811115610bac57610bac612ea7565b604051908082528060200260200182016040528015610be557816020015b610bd2612ac0565b815260200190600190039081610bca5790505b50905060005b83811015610c45576000610c1c868684818110610c0a57610c0a61350f565b905060200281019061048a9190613525565b905080838381518110610c3157610c3161350f565b602090810291909101015250600101610beb565b5090505b92915050565b3360009081526020819052604090208054821115610caf5760405162461bcd60e51b815260206004820152601960248201527f576974686472617720616d6f756e7420746f6f206c617267650000000000000060448201526064016106ce565b8054610cbc9083906135d4565b8155604080516001600160a01b03851681526020810184905233917fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb910160405180910390a26000836001600160a01b03168360405160006040518083038185875af1925050503d8060008114610d4f576040519150601f19603f3d011682016040523d82523d6000602084013e610d54565b606091505b5050905080610d9a5760405162461bcd60e51b81526020600482015260126024820152716661696c656420746f20776974686472617760701b60448201526064016106ce565b50505050565b6000610dab8261191b565b6040805160208101929092523090820152466060820152608001604051602081830303815290604052805190602001209050919050565b610dea612ac0565b6000826001600160401b03811115610e0457610e04612ea7565b604051908082528060200260200182016040528015610e3d57816020015b610e2a612ac0565b815260200190600190039081610e225790505b509050610e4a8484610b90565b905080610e586001856135d4565b81518110610e6857610e6861350f565b602002602001015191505092915050565b60606000826001600160401b03811115610e9557610e95612ea7565b604051908082528060200260200182016040528015610ece57816020015b610ebb612b07565b815260200190600190039081610eb35790505b50905060005b83811015610c45576000610f05868684818110610ef357610ef361350f565b90506020028101906105559190613525565b905080838381518110610f1a57610f1a61350f565b602090810291909101015250600101610ed4565b610f36612ac0565b610f3e611934565b610f46612bbc565b610f4f8361195c565b6000806000610f6060008786611a29565b925092509250600080610f738887611c57565b915091506040518061010001604052808760800151815260200183815260200186815260200185815260200184815260200182815260200160001515815260200160405180604001604052806002815260200161060f60f31b8152508152509650505050505050610fe46001600255565b919050565b60408051606080820183526000808352602083018190529282015290611013888888888888610904565b9050806110216001896135d4565b815181106110315761103161350f565b60200260200101519150509695505050505050565b33600090815260208190526040812060018101549091600160781b90910463ffffffff1690036110a55760405162461bcd60e51b815260206004820152600a6024820152691b9bdd081cdd185ad95960b21b60448201526064016106ce565b600181015460ff166110ed5760405162461bcd60e51b8152602060048201526011602482015270616c726561647920756e7374616b696e6760781b60448201526064016106ce565b600181015460009061110c90600160781b900463ffffffff16426135e7565b60018301805460ff65ffffffffffff60981b011916600160981b65ffffffffffff841690810260ff19169190911790915560405190815290915033907ffa9b3c14cc825c412c9ed81b3ba365a5b459439403f18829e572ed53a4180f0a906020015b60405180910390a25050565b336000908152602081905260409020600181015461010090046001600160701b0316806111e05760405162461bcd60e51b81526020600482015260146024820152734e6f207374616b6520746f20776974686472617760601b60448201526064016106ce565b6001820154600160981b900465ffffffffffff166112405760405162461bcd60e51b815260206004820152601d60248201527f6d7573742063616c6c20756e6c6f636b5374616b65282920666972737400000060448201526064016106ce565b600182015442600160981b90910465ffffffffffff1611156112a45760405162461bcd60e51b815260206004820152601b60248201527f5374616b65207769746864726177616c206973206e6f7420647565000000000060448201526064016106ce565b600182018054610100600160c81b0319169055604080516001600160a01b03851681526020810183905233917fb7c918e0e249f999e965cafeb6c664271b3f4317d296461500e71da39f0cbda3910160405180910390a26000836001600160a01b03168260405160006040518083038185875af1925050503d8060008114611348576040519150601f19603f3d011682016040523d82523d6000602084013e61134d565b606091505b5050905080610d9a5760405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f207769746864726177207374616b65000000000000000060448201526064016106ce565b6113a6612b07565b6113ae612bbc565b6113b78361195c565b6000806113c660008685611a29565b50915091506113d9600083836000611d64565b60006113ec846000015160e00151611f00565b8451519091506000906113fe90611f00565b905061141d604051806040016040528060008152602001600081525090565b36600061142d60408b018b613546565b90925090506000601482101561144457600061145f565b61145260146000848661360d565b61145b91613637565b60601c5b905061146a81611f00565b9350505050600085905060006040518060a0016040528089608001518152602001896040015181526020018881526020018781526020016114ac8a6060015190565b90526040805180820182526003546001600160a01b0390811682528251808401909352600454835260055460208481019190915282019290925291925083161580159061150357506001836001600160a01b031614155b15611530576040518060400160405280846001600160a01b0316815260200161152b85611f00565b905290505b6040805160a081018252928352602083019590955293810192909252506060810192909252608082015295945050505050565b60408051606080820183526000808352602083015291810191909152611587612bbc565b6115908661195c565b61159c60008783611a29565b506000915060609050816001600160a01b0388161561162b5760005a9050886001600160a01b031688886040516115d492919061366c565b6000604051808303816000865af19150503d8060008114611611576040519150601f19603f3d011682016040523d82523d6000602084013e611616565b606091505b5090945092505a61162790826135d4565b9150505b604080516060810182529182529215156020820152918201529695505050505050565b611656612b07565b6000610e4a8484610e79565b600061166e8234611f52565b9050816001600160a01b03167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c48260405161116e91815260200190565b6000806000845160208601878987f195945050505050565b60603d828111156116d15750815b604051602082018101604052818152816000602083013e9392505050565b60008060005a86519091506000908161170782611f85565b60e08301519091506001600160a01b038116611726578251935061183e565b80935060008951111561183e57878202965060028b600281111561174c5761174c61367c565b1461183e5760005a9050816001600160a01b0316637c627b218560a001518e8d8c886040518663ffffffff1660e01b815260040161178d9493929190613692565b600060405180830381600088803b1580156117a757600080fd5b5087f1935050505080156117b9575060015b611838578a5180516020808e01519201516001600160a01b0390911691907ff62676f440ff169a3a9afdbf812e89e7f95975ee8e5c31214ffdef631c5f4792906118046108006116c3565b6040516118129291906135bb565b60405180910390a38a608001515a870301985061183260028c8c8c6116ef565b90985096505b5a900395505b5a60a0840151606085015160808d01519288039a909a01990190890380821115611871576064600a828403020499909901985b505060408a01518883029750878110156118d75760028c60028111156118995761189961367c565b036118bc578097506118aa8b611fb7565b6118b78b60008a8c612006565b61190c565b8a608001515a87030198508a6040015197506118aa8b611fb7565b8781036118e48682611f52565b506000808e60028111156118fa576118fa61367c565b1490506119098d828c8e612006565b50505b50505050505094509492505050565b600061192682612081565b805190602001209050919050565b600280540361195657604051633ee5aeb560e01b815260040160405180910390fd5b60028055565b6119cf6040516135a560f21b60208201526bffffffffffffffffffffffff193060601b166022820152600160f81b603682015260009060370160408051808303601f190181529190528051602090910120600680546001600160a01b0319166001600160a01b0390921691909117905550565b6000611a006119e16040840184613546565b6119ee60208601866133fe565b6119fb60e0870187613546565b612139565b9050805160001461066c57600081604051631101335b60e11b81526004016106ce9291906135bb565b6000806000805a8551909150611a3f8782612215565b611a4887610da0565b6020870152604081015161012082015161010083015160a08401516080850151606086015160c0870151861717171717176effffffffffffffffffffffffffffff811115611ad85760405162461bcd60e51b815260206004820152601860248201527f41413934206761732076616c756573206f766572666c6f77000000000000000060448201526064016106ce565b6000611b078460c081015160a08201516080830151606084015160408501516101009095015194010101010290565b9050611b168b8b8b8487612323565b9750611b2a846000015185602001516124ba565b611b80578a604051631101335b60e11b81526004016106ce918152604060208201819052601a908201527f4141323520696e76616c6964206163636f756e74206e6f6e6365000000000000606082015260800190565b825a86031115611bdc578a604051631101335b60e11b81526004016106ce918152604060208201819052601e908201527f41413236206f76657220766572696669636174696f6e4761734c696d69740000606082015260800190565b606060005a60e08701519091506001600160a01b031615611c0857611c038d8d8d86612507565b995091505b60408b018390528160608c015260a08c01355a88030160808c015260645a611c3090836135d4565b611c3b9060736136dc565b611c4591906136f3565b97505050505050505093509350939050565b60008060005a90506000611c6c856060015190565b604051909150366000611c8260608a018a613546565b915091506000816003811115611c9757833591505b506372288ed160e01b6001600160e01b0319821601611d0d5760008a8a60200151604051602401611cc9929190613862565b60408051601f198184030181529190526020810180516001600160e01b0316638dd7712f60e01b1790529050611d01818b888a610a5b565b9099509750611d579050565b611d5183838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d92508991508a9050610a5b565b90985096505b5050505050509250929050565b600080611d70856126b6565b91509150816001600160a01b0316836001600160a01b031614611dd65785604051631101335b60e11b81526004016106ce9181526040602082018190526014908201527320a0991a1039b4b3b730ba3ab9329032b93937b960611b606082015260800190565b8015611e2e5785604051631101335b60e11b81526004016106ce9181526040602082018190526017908201527f414132322065787069726564206f72206e6f7420647565000000000000000000606082015260800190565b6000611e39856126b6565b925090506001600160a01b03811615611e955786604051631101335b60e11b81526004016106ce9181526040602082018190526014908201527320a0999a1039b4b3b730ba3ab9329032b93937b960611b606082015260800190565b8115611ef75786604051631101335b60e11b81526004016106ce9181526040602082018190526021908201527f41413332207061796d61737465722065787069726564206f72206e6f742064756060820152606560f81b608082015260a00190565b50505050505050565b604080518082018252600080825260208083018281526001600160a01b03959095168252819052919091206001015461010081046001600160701b03168252600160781b900463ffffffff1690915290565b6001600160a01b038216600090815260208190526040812080548290611f799085906134fc565b91829055509392505050565b61010081015161012082015160009190808203611fa3575092915050565b611faf82488301612709565b949350505050565b80518051602080840151928101516040519081526001600160a01b0390921692917f67b4fa9642f42120bf031f3051d1824b0fe25627945b27b8a6a65d5761d5482e910160405180910390a350565b835160e081015181516020808801519301516040516001600160a01b039384169492909316927f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f916120739189908990899093845291151560208401526040830152606082015260800190565b60405180910390a450505050565b60608135602083013560006120a161209c6040870187613546565b612721565b905060006120b561209c6060880188613546565b9050608086013560a087013560c088013560006120d861209c60e08c018c613546565b604080516001600160a01b039a909a1660208b015289810198909852606089019690965250608087019390935260a086019190915260c085015260e08401526101008084019190915281518084039091018152610120909201905292915050565b60608415801561215157506001600160a01b0384163b155b15612190575060408051808201909152601981527f41413230206163636f756e74206e6f74206465706c6f79656400000000000000602082015261220c565b601482106121fb5760006121a7601482858761360d565b6121b091613637565b60601c9050803b6000036121f957505060408051808201909152601b81527f41413330207061796d6173746572206e6f74206465706c6f7965640000000000602082015261220c565b505b506040805160208101909152600081525b95945050505050565b61222260208301836133fe565b6001600160a01b03168152602082810135908201526001600160801b036080808401358281166060850152811c604084015260a084013560c0808501919091528401359182166101008401521c61012082015236600061228560e0850185613546565b909250905080156123085760348110156122e15760405162461bcd60e51b815260206004820152601d60248201527f4141393320696e76616c6964207061796d6173746572416e644461746100000060448201526064016106ce565b6122eb8282612734565b60a086015260808501526001600160a01b031660e0840152610d9a565b600060e084018190526080840181905260a084015250505050565b8251805160009190612342888761233d60408b018b613546565b61279c565b60e082015160006001600160a01b038216612386576001600160a01b03831660009081526020819052604090205487811161237f57808803612382565b60005b9150505b60208801516040516306608bdf60e21b81526001600160a01b038516916319822f7c9189916123bc918e91908790600401613884565b60206040518083038160008887f1935050505080156123f8575060408051601f3d908101601f191682019092526123f5918101906138a9565b60015b61242357896124086108006116c3565b6040516365c8fd4d60e01b81526004016106ce9291906138c2565b94506001600160a01b0382166124ad576001600160a01b03831660009081526020819052604090208054808911156124a7578b604051631101335b60e11b81526004016106ce9181526040602082018190526017908201527f41413231206469646e2774207061792070726566756e64000000000000000000606082015260800190565b88900390555b5050505095945050505050565b6001600160a01b038216600090815260016020908152604080832084821c80855292528220805484916001600160401b0383169190856124f98361358c565b909155501495945050505050565b60606000805a855160e08101516001600160a01b03811660009081526020819052604090208054939450919290919087811015612590578a604051631101335b60e11b81526004016106ce918152604060208201819052601e908201527f41413331207061796d6173746572206465706f73697420746f6f206c6f770000606082015260800190565b8781038260000181905550600084608001519050836001600160a01b03166352b7512c828d8d602001518d6040518563ffffffff1660e01b81526004016125d993929190613884565b60006040518083038160008887f19350505050801561261a57506040513d6000823e601f3d908101601f1916820160405261261791908101906138ff565b60015b612645578b61262a6108006116c3565b6040516365c8fd4d60e01b81526004016106ce92919061397f565b9098509650805a8703111561190c578b604051631101335b60e11b81526004016106ce9181526040602082018190526027908201527f41413336206f766572207061796d6173746572566572696669636174696f6e47606082015266185cd31a5b5a5d60ca1b608082015260a00190565b600080826000036126cc57506000928392509050565b60006126d784612a4f565b9050806040015165ffffffffffff164211806126fe5750806020015165ffffffffffff1642105b905194909350915050565b6000818310612718578161271a565b825b9392505050565b6000604051828085833790209392505050565b60008080612745601482868861360d565b61274e91613637565b60601c61275f60246014878961360d565b612768916139bc565b60801c61277960346024888a61360d565b612782916139bc565b9194506001600160801b0316925060801c90509250925092565b8015610d9a578251516001600160a01b0381163b156128075784604051631101335b60e11b81526004016106ce918152604060208201819052601f908201527f414131302073656e64657220616c726561647920636f6e737472756374656400606082015260800190565b600061281b6006546001600160a01b031690565b6001600160a01b031663570e1a3686600001516040015186866040518463ffffffff1660e01b81526004016128519291906139f3565b60206040518083038160008887f1158015612870573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906128959190613a07565b90506001600160a01b0381166128f75785604051631101335b60e11b81526004016106ce918152604060208201819052601b908201527f4141313320696e6974436f6465206661696c6564206f72204f4f470000000000606082015260800190565b816001600160a01b0316816001600160a01b0316146129615785604051631101335b60e11b81526004016106ce91815260406020808301829052908201527f4141313420696e6974436f6465206d7573742072657475726e2073656e646572606082015260800190565b806001600160a01b03163b6000036129c45785604051631101335b60e11b81526004016106ce91815260406020808301829052908201527f4141313520696e6974436f6465206d757374206372656174652073656e646572606082015260800190565b60006129d3601482868861360d565b6129dc91613637565b60601c9050826001600160a01b031686602001517fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d83896000015160e00151604051612a3e9291906001600160a01b0392831681529116602082015260400190565b60405180910390a350505050505050565b60408051606081018252600080825260208201819052918101919091528160a081901c65ffffffffffff8116600003612a8b575065ffffffffffff5b604080516060810182526001600160a01b03909316835260d09490941c602083015265ffffffffffff16928101929092525090565b604051806101000160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600015158152602001606081525090565b6040518060a00160405280612b446040518060a0016040528060008152602001600081526020016000815260200160008152602001606081525090565b8152602001612b66604051806040016040528060008152602001600081525090565b8152602001612b88604051806040016040528060008152602001600081525090565b8152602001612baa604051806040016040528060008152602001600081525090565b8152602001612bb7612c54565b905290565b6040518060a00160405280612c2f60405180610140016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160008152602001600081525090565b8152602001600080191681526020016000815260200160008152602001600081525090565b604051806040016040528060006001600160a01b03168152602001612bb7604051806040016040528060008152602001600081525090565b600060208284031215612c9e57600080fd5b813563ffffffff8116811461271a57600080fd5b60008083601f840112612cc457600080fd5b5081356001600160401b03811115612cdb57600080fd5b6020830191508360208260051b8501011115612cf657600080fd5b9250929050565b60008060008060008060608789031215612d1657600080fd5b86356001600160401b0380821115612d2d57600080fd5b612d398a838b01612cb2565b90985096506020890135915080821115612d5257600080fd5b612d5e8a838b01612cb2565b90965094506040890135915080821115612d7757600080fd5b50612d8489828a01612cb2565b979a9699509497509295939492505050565b60005b83811015612db1578181015183820152602001612d99565b50506000910152565b60008151808452612dd2816020860160208601612d96565b601f01601f19169290920160200192915050565b805182526020810151151560208301526000604082015160606040850152611faf6060850182612dba565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015612e6857603f19888603018452612e56858351612de6565b94509285019290850190600101612e3a565b5092979650505050505050565b80356001600160c01b0381168114610fe457600080fd5b600060208284031215612e9e57600080fd5b61271a82612e75565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b0381118282101715612edf57612edf612ea7565b60405290565b60405161014081016001600160401b0381118282101715612edf57612edf612ea7565b604051601f8201601f191681016001600160401b0381118282101715612f3057612f30612ea7565b604052919050565b60006001600160401b03821115612f5157612f51612ea7565b50601f01601f191660200190565b600082601f830112612f7057600080fd5b8135612f83612f7e82612f38565b612f08565b818152846020838601011115612f9857600080fd5b816020850160208301376000918101602001919091529392505050565b6001600160a01b0381168114612fca57600080fd5b50565b8035610fe481612fb5565b600080600080848603610220811215612ff057600080fd5b85356001600160401b038082111561300757600080fd5b61301389838a01612f5f565b9650601f19830192506101c091508183121561302e57600080fd5b613036612ebd565b6101408085121561304657600080fd5b61304e612ee5565b945061305c60208b01612fcd565b855260408a0135602086015260608a0135604086015260808a0135606086015260a08a0135608086015260c08a013560a086015260e08a013560c08601526101006130a8818c01612fcd565b60e08701526101208b81013591870191909152908a013590850152928352610160880135602084015261018088013560408401526101a088013560608401528188013560808401529194506101e0870135918083111561310757600080fd5b505061311587828801612f5f565b94979396509394610200013593505050565b6000806020838503121561313a57600080fd5b82356001600160401b0381111561315057600080fd5b61315c85828601612cb2565b90969095509350505050565b6000610100825184526020830151602085015260408301516040850152606083015160608501526080830151608085015260a083015160a085015260c0830151151560c085015260e08301518160e086015261220c82860182612dba565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015612e6857603f1988860301845261320b858351613168565b945092850192908501906001016131ef565b6000806040838503121561323057600080fd5b823561323b81612fb5565b915061324960208401612e75565b90509250929050565b6000806040838503121561326557600080fd5b823561327081612fb5565b946020939093013593505050565b6000610120828403121561329157600080fd5b50919050565b6000602082840312156132a957600080fd5b81356001600160401b038111156132bf57600080fd5b611faf8482850161327e565b60208152600061271a6020830184613168565b80516101408084528151908401526020810151610160840152604081015161018084015260608101516101a08401526080015160a06101c084015260009061332a6101e0850182612dba565b90506020830151613348602086018280518252602090810151910152565b5060408301518051606086015260208101516080860152506060830151805160a0860152602081015160c0860152506080830151610c4560e086018280516001600160a01b031682526020908101518051828401520151604090910152565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015612e6857603f198886030184526133ec8583516132de565b945092850192908501906001016133d0565b60006020828403121561341057600080fd5b813561271a81612fb5565b60208152600061271a6020830184612de6565b60208152600061271a60208301846132de565b6000806000806060858703121561345757600080fd5b84356001600160401b038082111561346e57600080fd5b61347a8883890161327e565b95506020870135915061348c82612fb5565b909350604086013590808211156134a257600080fd5b818701915087601f8301126134b657600080fd5b8135818111156134c557600080fd5b8860208285010111156134d757600080fd5b95989497505060200194505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610c4957610c496134e6565b634e487b7160e01b600052603260045260246000fd5b6000823561011e1983360301811261353c57600080fd5b9190910192915050565b6000808335601e1984360301811261355d57600080fd5b8301803591506001600160401b0382111561357757600080fd5b602001915036819003821315612cf657600080fd5b60006001820161359e5761359e6134e6565b5060010190565b634e487b7160e01b600052601260045260246000fd5b828152604060208201526000611faf6040830184612dba565b81810381811115610c4957610c496134e6565b65ffffffffffff818116838216019080821115613606576136066134e6565b5092915050565b6000808585111561361d57600080fd5b8386111561362a57600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff1981358181169160148510156136645780818660140360031b1b83161692505b505092915050565b8183823760009101908152919050565b634e487b7160e01b600052602160045260246000fd5b6000600386106136b257634e487b7160e01b600052602160045260246000fd5b858252608060208301526136c96080830186612dba565b6040830194909452506060015292915050565b8082028115828204841417610c4957610c496134e6565b60008261371057634e487b7160e01b600052601260045260246000fd5b500490565b6000808335601e1984360301811261372c57600080fd5b83016020810192503590506001600160401b0381111561374b57600080fd5b803603821315612cf657600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006101206137a28461379585612fcd565b6001600160a01b03169052565b602083013560208501526137b96040840184613715565b8260408701526137cc838701828461375a565b925050506137dd6060840184613715565b85830360608701526137f083828461375a565b925050506080830135608085015260a083013560a085015260c083013560c085015261381f60e0840184613715565b85830360e087015261383283828461375a565b9250505061010061384581850185613715565b8684038388015261385784828461375a565b979650505050505050565b6040815260006138756040830185613783565b90508260208301529392505050565b6060815260006138976060830186613783565b60208301949094525060400152919050565b6000602082840312156138bb57600080fd5b5051919050565b82815260606020820152600d60608201526c10504c8cc81c995d995c9d1959609a1b608082015260a060408201526000611faf60a0830184612dba565b6000806040838503121561391257600080fd5b82516001600160401b0381111561392857600080fd5b8301601f8101851361393957600080fd5b8051613947612f7e82612f38565b81815286602083850101111561395c57600080fd5b61396d826020830160208601612d96565b60209590950151949694955050505050565b82815260606020820152600d60608201526c10504cccc81c995d995c9d1959609a1b608082015260a060408201526000611faf60a0830184612dba565b6fffffffffffffffffffffffffffffffff1981358181169160108510156136645760109490940360031b84901b1690921692915050565b602081526000611faf60208301848661375a565b600060208284031215613a1957600080fd5b815161271a81612fb556fea2646970667358221220c6ad4b2b56624cba321cec929c4bdd6329f5811c936f40e8ff5cfb92ef9b433f64736f6c63430008170033608060405234801561001057600080fd5b506101f3806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063570e1a3614610030575b600080fd5b61004361003e3660046100ec565b61005f565b6040516001600160a01b03909116815260200160405180910390f35b60008061006f601482858761015e565b61007891610188565b60601c9050600061008c846014818861015e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525084519495509360209350849250905082850182875af190506000519350806100e357600093505b50505092915050565b600080602083850312156100ff57600080fd5b823567ffffffffffffffff8082111561011757600080fd5b818501915085601f83011261012b57600080fd5b81358181111561013a57600080fd5b86602082850101111561014c57600080fd5b60209290920196919550909350505050565b6000808585111561016e57600080fd5b8386111561017b57600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff1981358181169160148510156101b55780818660140360031b1b83161692505b50509291505056fea2646970667358221220f5d91be997c659d0ef966f0c016a41e736500c794f93ad11197e128a54287a9964736f6c63430008170033" - -export const ENTRY_POINT_V07_CREATECALL: Hex = - "0x90d8084deab30c2a37c45e8d47f49f2f7965183cb6990a98943ef94940681de360a08060405234620000825760016002556101df8181016001600160401b038111838210176200006c57829162003f2b833903906000f080156200006057608052604051613ea39081620000888239608051818181610d22015261324b0152f35b6040513d6000823e3d90fd5b634e487b7160e01b600052604160045260246000fd5b600080fdfe60806040526004361015610024575b361561001957600080fd5b61002233612748565b005b60003560e01c806242dc5314611b0057806301ffc9a7146119ae5780630396cb60146116765780630bd28e3b146115fa5780631b2e01b814611566578063205c2878146113d157806322cdde4c1461136b57806335567e1a146112b35780635287ce12146111a557806370a0823114611140578063765e827f14610e82578063850aaf6214610dc35780639b249f6914610c74578063b760faf914610c3a578063bb9fe6bf14610a68578063c23a5cea146107c4578063dbed18e0146101a15763fc7e286d0361000e573461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5773ffffffffffffffffffffffffffffffffffffffff61013a61229f565b16600052600060205260a0604060002065ffffffffffff6001825492015460405192835260ff8116151560208401526dffffffffffffffffffffffffffff8160081c16604084015263ffffffff8160781c16606084015260981c166080820152f35b600080fd5b3461019c576101af36612317565b906101b86129bd565b60009160005b82811061056f57506101d08493612588565b6000805b8481106102fc5750507fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972600080a16000809360005b81811061024757610240868660007f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d8180a2613ba7565b6001600255005b6102a261025582848a612796565b73ffffffffffffffffffffffffffffffffffffffff6102766020830161282a565b167f575ff3acadd5ab348fe1855e217e0f3678f8d767d7494c9f9fefbee2e17cca4d600080a2806127d6565b906000915b8083106102b957505050600101610209565b909194976102f36102ed6001926102e78c8b6102e0826102da8e8b8d61269d565b9261265a565b5191613597565b90612409565b99612416565b950191906102a7565b6020610309828789612796565b61031f61031682806127d6565b9390920161282a565b9160009273ffffffffffffffffffffffffffffffffffffffff8091165b8285106103505750505050506001016101d4565b909192939561037f83610378610366848c61265a565b516103728b898b61269d565b856129f6565b9290613dd7565b9116840361050a576104a5576103958491613dd7565b9116610440576103b5576103aa600191612416565b96019392919061033c565b60a487604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602160448201527f41413332207061796d61737465722065787069726564206f72206e6f7420647560648201527f65000000000000000000000000000000000000000000000000000000000000006084820152fd5b608488604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601460448201527f41413334207369676e6174757265206572726f720000000000000000000000006064820152fd5b608488604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601760448201527f414132322065787069726564206f72206e6f74206475650000000000000000006064820152fd5b608489604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601460448201527f41413234207369676e6174757265206572726f720000000000000000000000006064820152fd5b61057a818487612796565b9361058585806127d6565b919095602073ffffffffffffffffffffffffffffffffffffffff6105aa82840161282a565b1697600192838a1461076657896105da575b5050505060019293949550906105d191612409565b939291016101be565b8060406105e892019061284b565b918a3b1561019c57929391906040519485937f2dd8113300000000000000000000000000000000000000000000000000000000855288604486016040600488015252606490818601918a60051b8701019680936000915b8c83106106e657505050505050838392610684927ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8560009803016024860152612709565b03818a5afa90816106d7575b506106c657602486604051907f86a9f7500000000000000000000000000000000000000000000000000000000082526004820152fd5b93945084936105d1600189806105bc565b6106e0906121bd565b88610690565b91939596977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c908a9294969a0301865288357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee18336030181121561019c57836107538793858394016128ec565b9a0196019301909189979695949261063f565b606483604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601760248201527f4141393620696e76616c69642061676772656761746f720000000000000000006044820152fd5b3461019c576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c576107fc61229f565b33600052600082526001604060002001908154916dffffffffffffffffffffffffffff8360081c16928315610a0a5765ffffffffffff8160981c1680156109ac57421061094e5760009373ffffffffffffffffffffffffffffffffffffffff859485947fffffffffffffff000000000000000000000000000000000000000000000000ff86951690556040517fb7c918e0e249f999e965cafeb6c664271b3f4317d296461500e71da39f0cbda33391806108da8786836020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b0390a2165af16108e8612450565b50156108f057005b606490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601860248201527f6661696c656420746f207769746864726177207374616b6500000000000000006044820152fd5b606485604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601b60248201527f5374616b65207769746864726177616c206973206e6f742064756500000000006044820152fd5b606486604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601d60248201527f6d7573742063616c6c20756e6c6f636b5374616b6528292066697273740000006044820152fd5b606485604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601460248201527f4e6f207374616b6520746f2077697468647261770000000000000000000000006044820152fd5b3461019c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c573360005260006020526001604060002001805463ffffffff8160781c16908115610bdc5760ff1615610b7e5765ffffffffffff908142160191818311610b4f5780547fffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff001678ffffffffffff00000000000000000000000000000000000000609885901b161790556040519116815233907ffa9b3c14cc825c412c9ed81b3ba365a5b459439403f18829e572ed53a4180f0a90602090a2005b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f616c726561647920756e7374616b696e670000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6e6f74207374616b6564000000000000000000000000000000000000000000006044820152fd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c57610022610c6f61229f565b612748565b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5760043567ffffffffffffffff811161019c576020610cc8610d1b9236906004016122c2565b919073ffffffffffffffffffffffffffffffffffffffff9260405194859283927f570e1a360000000000000000000000000000000000000000000000000000000084528560048501526024840191612709565b03816000857f0000000000000000000000000000000000000000000000000000000000000000165af1908115610db757602492600092610d86575b50604051917f6ca7b806000000000000000000000000000000000000000000000000000000008352166004820152fd5b610da991925060203d602011610db0575b610da181836121ed565b8101906126dd565b9083610d56565b503d610d97565b6040513d6000823e3d90fd5b3461019c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c57610dfa61229f565b60243567ffffffffffffffff811161019c57600091610e1e839236906004016122c2565b90816040519283928337810184815203915af4610e39612450565b90610e7e6040519283927f99410554000000000000000000000000000000000000000000000000000000008452151560048401526040602484015260448301906123c6565b0390fd5b3461019c57610e9036612317565b610e9b9291926129bd565b610ea483612588565b60005b848110610f1c57506000927fbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972600080a16000915b858310610eec576102408585613ba7565b909193600190610f12610f0087898761269d565b610f0a888661265a565b519088613597565b0194019190610edb565b610f47610f40610f2e8385979561265a565b51610f3a84898761269d565b846129f6565b9190613dd7565b73ffffffffffffffffffffffffffffffffffffffff929183166110db5761107657610f7190613dd7565b911661101157610f8657600101929092610ea7565b60a490604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602160448201527f41413332207061796d61737465722065787069726564206f72206e6f7420647560648201527f65000000000000000000000000000000000000000000000000000000000000006084820152fd5b608482604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601460448201527f41413334207369676e6174757265206572726f720000000000000000000000006064820152fd5b608483604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601760448201527f414132322065787069726564206f72206e6f74206475650000000000000000006064820152fd5b608484604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601460448201527f41413234207369676e6174757265206572726f720000000000000000000000006064820152fd5b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5773ffffffffffffffffffffffffffffffffffffffff61118c61229f565b1660005260006020526020604060002054604051908152f35b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5773ffffffffffffffffffffffffffffffffffffffff6111f161229f565b6000608060405161120181612155565b828152826020820152826040820152826060820152015216600052600060205260a06040600020608060405161123681612155565b6001835493848352015490602081019060ff8316151582526dffffffffffffffffffffffffffff60408201818560081c16815263ffffffff936060840193858760781c16855265ffffffffffff978891019660981c1686526040519788525115156020880152511660408601525116606084015251166080820152f35b3461019c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5760206112ec61229f565b73ffffffffffffffffffffffffffffffffffffffff6113096122f0565b911660005260018252604060002077ffffffffffffffffffffffffffffffffffffffffffffffff821660005282526040600020547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000006040519260401b16178152f35b3461019c577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60208136011261019c576004359067ffffffffffffffff821161019c5761012090823603011261019c576113c9602091600401612480565b604051908152f35b3461019c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5761140861229f565b60243590336000526000602052604060002090815491828411611508576000808573ffffffffffffffffffffffffffffffffffffffff8295839561144c848a612443565b90556040805173ffffffffffffffffffffffffffffffffffffffff831681526020810185905233917fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb91a2165af16114a2612450565b50156114aa57005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6661696c656420746f20776974686472617700000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f576974686472617720616d6f756e7420746f6f206c61726765000000000000006044820152fd5b3461019c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5761159d61229f565b73ffffffffffffffffffffffffffffffffffffffff6115ba6122f0565b9116600052600160205277ffffffffffffffffffffffffffffffffffffffffffffffff604060002091166000526020526020604060002054604051908152f35b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5760043577ffffffffffffffffffffffffffffffffffffffffffffffff811680910361019c5733600052600160205260406000209060005260205260406000206116728154612416565b9055005b6020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5760043563ffffffff9182821680920361019c5733600052600081526040600020928215611950576001840154908160781c1683106118f2576116f86dffffffffffffffffffffffffffff9182349160081c16612409565b93841561189457818511611836579065ffffffffffff61180592546040519061172082612155565b8152848101926001845260408201908816815260608201878152600160808401936000855233600052600089526040600020905181550194511515917fffffffffffffffffffffffffff0000000000000000000000000000000000000060ff72ffffffff0000000000000000000000000000006effffffffffffffffffffffffffff008954945160081b16945160781b1694169116171717835551167fffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffff78ffffffffffff0000000000000000000000000000000000000083549260981b169116179055565b6040519283528201527fa5ae833d0bb1dcd632d98a8b70973e8516812898e19bf27b70071ebc8dc52c0160403392a2005b606483604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152600e60248201527f7374616b65206f766572666c6f770000000000000000000000000000000000006044820152fd5b606483604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601260248201527f6e6f207374616b652073706563696669656400000000000000000000000000006044820152fd5b606482604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601c60248201527f63616e6e6f7420646563726561736520756e7374616b652074696d65000000006044820152fd5b606482604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601a60248201527f6d757374207370656369667920756e7374616b652064656c61790000000000006044820152fd5b3461019c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c576004357fffffffff00000000000000000000000000000000000000000000000000000000811680910361019c57807f60fc6b6e0000000000000000000000000000000000000000000000000000000060209214908115611ad6575b8115611aac575b8115611a82575b8115611a58575b506040519015158152f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501482611a4d565b7f3e84f0210000000000000000000000000000000000000000000000000000000081149150611a46565b7fcf28ef970000000000000000000000000000000000000000000000000000000081149150611a3f565b7f915074d80000000000000000000000000000000000000000000000000000000081149150611a38565b3461019c576102007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019c5767ffffffffffffffff60043581811161019c573660238201121561019c57611b62903690602481600401359101612268565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36016101c0811261019c5761014060405191611b9e83612155565b1261019c5760405192611bb0846121a0565b60243573ffffffffffffffffffffffffffffffffffffffff8116810361019c578452602093604435858201526064356040820152608435606082015260a435608082015260c43560a082015260e43560c08201526101043573ffffffffffffffffffffffffffffffffffffffff8116810361019c5760e08201526101243561010082015261014435610120820152825261016435848301526101843560408301526101a43560608301526101c43560808301526101e43590811161019c57611c7c9036906004016122c2565b905a3033036120f7578351606081015195603f5a0260061c61271060a0840151890101116120ce5760009681519182611ff0575b5050505090611cca915a9003608085015101923691612268565b925a90600094845193611cdc85613ccc565b9173ffffffffffffffffffffffffffffffffffffffff60e0870151168015600014611ea957505073ffffffffffffffffffffffffffffffffffffffff855116935b5a9003019360a06060820151910151016080860151850390818111611e95575b50508302604085015192818410600014611dce5750506003811015611da157600203611d79576113c99293508093611d7481613d65565b613cf6565b5050507fdeadaa51000000000000000000000000000000000000000000000000000000008152fd5b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526021600452fd5b81611dde92979396940390613c98565b506003841015611e6857507f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f60808683015192519473ffffffffffffffffffffffffffffffffffffffff865116948873ffffffffffffffffffffffffffffffffffffffff60e0890151169701519160405192835215898301528760408301526060820152a46113c9565b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526021600452fd5b6064919003600a0204909301928780611d3d565b8095918051611eba575b5050611d1d565b6003861015611fc1576002860315611eb35760a088015190823b1561019c57600091611f2491836040519586809581947f7c627b210000000000000000000000000000000000000000000000000000000083528d60048401526080602484015260848301906123c6565b8b8b0260448301528b60648301520393f19081611fad575b50611fa65787893d610800808211611f9e575b506040519282828501016040528184528284013e610e7e6040519283927fad7954bc000000000000000000000000000000000000000000000000000000008452600484015260248301906123c6565b905083611f4f565b8980611eb3565b611fb89199506121bd565b6000978a611f3c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91600092918380938c73ffffffffffffffffffffffffffffffffffffffff885116910192f115612023575b808080611cb0565b611cca929195503d6108008082116120c6575b5060405190888183010160405280825260008983013e805161205f575b5050600194909161201b565b7f1c4fada7374c0a9ee8841fc38afe82932dc0f8e69012e927f061a8bae611a20188870151918973ffffffffffffffffffffffffffffffffffffffff8551169401516120bc604051928392835260408d84015260408301906123c6565b0390a38680612053565b905088612036565b877fdeaddead000000000000000000000000000000000000000000000000000000006000526000fd5b606486604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152601760248201527f4141393220696e7465726e616c2063616c6c206f6e6c790000000000000000006044820152fd5b60a0810190811067ffffffffffffffff82111761217157604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610140810190811067ffffffffffffffff82111761217157604052565b67ffffffffffffffff811161217157604052565b6060810190811067ffffffffffffffff82111761217157604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761217157604052565b67ffffffffffffffff811161217157601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926122748261222e565b9161228260405193846121ed565b82948184528183011161019c578281602093846000960137010152565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361019c57565b9181601f8401121561019c5782359167ffffffffffffffff831161019c576020838186019501011161019c57565b6024359077ffffffffffffffffffffffffffffffffffffffffffffffff8216820361019c57565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261019c5760043567ffffffffffffffff9283821161019c578060238301121561019c57816004013593841161019c5760248460051b8301011161019c57602401919060243573ffffffffffffffffffffffffffffffffffffffff8116810361019c5790565b60005b8381106123b65750506000910152565b81810151838201526020016123a6565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602093612402815180928187528780880191016123a3565b0116010190565b91908201809211610b4f57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610b4f5760010190565b91908203918211610b4f57565b3d1561247b573d906124618261222e565b9161246f60405193846121ed565b82523d6000602084013e565b606090565b604061248e8183018361284b565b90818351918237206124a3606084018461284b565b90818451918237209260c06124bb60e083018361284b565b908186519182372091845195602087019473ffffffffffffffffffffffffffffffffffffffff833516865260208301358789015260608801526080870152608081013560a087015260a081013582870152013560e08501526101009081850152835261012083019167ffffffffffffffff918484108385111761217157838252845190206101408501908152306101608601524661018086015260608452936101a00191821183831017612171575251902090565b67ffffffffffffffff81116121715760051b60200190565b9061259282612570565b6040906125a260405191826121ed565b8381527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06125d08295612570565b019160005b8381106125e25750505050565b60209082516125f081612155565b83516125fb816121a0565b600081526000849181838201528187820152816060818184015260809282848201528260a08201528260c08201528260e082015282610100820152826101208201528652818587015281898701528501528301528286010152016125d5565b805182101561266e5760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b919081101561266e5760051b810135907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee18136030182121561019c570190565b9081602091031261019c575173ffffffffffffffffffffffffffffffffffffffff8116810361019c5790565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b7f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4602073ffffffffffffffffffffffffffffffffffffffff61278a3485613c98565b936040519485521692a2565b919081101561266e5760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18136030182121561019c570190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561019c570180359067ffffffffffffffff821161019c57602001918160051b3603831361019c57565b3573ffffffffffffffffffffffffffffffffffffffff8116810361019c5790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561019c570180359067ffffffffffffffff821161019c5760200191813603831361019c57565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18236030181121561019c57016020813591019167ffffffffffffffff821161019c57813603831361019c57565b61012091813573ffffffffffffffffffffffffffffffffffffffff811680910361019c576129626129476129ba9561299b93855260208601356020860152612937604087018761289c565b9091806040880152860191612709565b612954606086018661289c565b908583036060870152612709565b6080840135608084015260a084013560a084015260c084013560c084015261298d60e085018561289c565b9084830360e0860152612709565b916129ac610100918281019061289c565b929091818503910152612709565b90565b60028054146129cc5760028055565b60046040517f3ee5aeb5000000000000000000000000000000000000000000000000000000008152fd5b926000905a93805194843573ffffffffffffffffffffffffffffffffffffffff811680910361019c5786526020850135602087015260808501356fffffffffffffffffffffffffffffffff90818116606089015260801c604088015260a086013560c088015260c086013590811661010088015260801c610120870152612a8060e086018661284b565b801561357b576034811061351d578060141161019c578060241161019c5760341161019c57602481013560801c60a0880152601481013560801c60808801523560601c60e08701525b612ad285612480565b60208301526040860151946effffffffffffffffffffffffffffff8660c08901511760608901511760808901511760a0890151176101008901511761012089015117116134bf57604087015160608801510160808801510160a08801510160c0880151016101008801510296835173ffffffffffffffffffffffffffffffffffffffff81511690612b66604085018561284b565b806131e4575b505060e0015173ffffffffffffffffffffffffffffffffffffffff1690600082156131ac575b6020612bd7918b828a01516000868a604051978896879586937f19822f7c00000000000000000000000000000000000000000000000000000000855260048501613db5565b0393f160009181613178575b50612c8b573d8c610800808311612c83575b50604051916020818401016040528083526000602084013e610e7e6040519283927f65c8fd4d000000000000000000000000000000000000000000000000000000008452600484015260606024840152600d60648401527f4141323320726576657274656400000000000000000000000000000000000000608484015260a0604484015260a48301906123c6565b915082612bf5565b9a92939495969798999a91156130f2575b509773ffffffffffffffffffffffffffffffffffffffff835116602084015190600052600160205260406000208160401c60005260205267ffffffffffffffff604060002091825492612cee84612416565b9055160361308d575a8503116130285773ffffffffffffffffffffffffffffffffffffffff60e0606093015116612d42575b509060a09184959697986040608096015260608601520135905a900301910152565b969550505a9683519773ffffffffffffffffffffffffffffffffffffffff60e08a01511680600052600060205260406000208054848110612fc3576080612dcd9a9b9c600093878094039055015192602089015183604051809d819582947f52b7512c0000000000000000000000000000000000000000000000000000000084528c60048501613db5565b039286f1978860009160009a612f36575b50612e86573d8b610800808311612e7e575b50604051916020818401016040528083526000602084013e610e7e6040519283927f65c8fd4d000000000000000000000000000000000000000000000000000000008452600484015260606024840152600d60648401527f4141333320726576657274656400000000000000000000000000000000000000608484015260a0604484015260a48301906123c6565b915082612df0565b9991929394959697989998925a900311612eab57509096959094939291906080612d20565b60a490604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602760448201527f41413336206f766572207061796d6173746572566572696669636174696f6e4760648201527f61734c696d6974000000000000000000000000000000000000000000000000006084820152fd5b915098503d90816000823e612f4b82826121ed565b604081838101031261019c5780519067ffffffffffffffff821161019c57828101601f83830101121561019c578181015191612f868361222e565b93612f9460405195866121ed565b838552820160208483850101011161019c57602092612fba9184808701918501016123a3565b01519838612dde565b60848b604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601e60448201527f41413331207061796d6173746572206465706f73697420746f6f206c6f7700006064820152fd5b608490604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601e60448201527f41413236206f76657220766572696669636174696f6e4761734c696d697400006064820152fd5b608482604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601a60448201527f4141323520696e76616c6964206163636f756e74206e6f6e63650000000000006064820152fd5b600052600060205260406000208054808c11613113578b9003905538612c9c565b608484604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601760448201527f41413231206469646e2774207061792070726566756e640000000000000000006064820152fd5b9091506020813d6020116131a4575b81613194602093836121ed565b8101031261019c57519038612be3565b3d9150613187565b508060005260006020526040600020548a81116000146131d75750612bd7602060005b915050612b92565b6020612bd7918c036131cf565b833b61345a57604088510151602060405180927f570e1a360000000000000000000000000000000000000000000000000000000082528260048301528160008161323260248201898b612709565b039273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690f1908115610db75760009161343b575b5073ffffffffffffffffffffffffffffffffffffffff811680156133d6578503613371573b1561330c5760141161019c5773ffffffffffffffffffffffffffffffffffffffff9183887fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d604060e0958787602086015195510151168251913560601c82526020820152a391612b6c565b60848d604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602060448201527f4141313520696e6974436f6465206d757374206372656174652073656e6465726064820152fd5b60848e604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152602060448201527f4141313420696e6974436f6465206d7573742072657475726e2073656e6465726064820152fd5b60848f604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601b60448201527f4141313320696e6974436f6465206661696c6564206f72204f4f4700000000006064820152fd5b613454915060203d602011610db057610da181836121ed565b3861327c565b60848d604051907f220266b6000000000000000000000000000000000000000000000000000000008252600482015260406024820152601f60448201527f414131302073656e64657220616c726561647920636f6e7374727563746564006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f41413934206761732076616c756573206f766572666c6f7700000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4141393320696e76616c6964207061796d6173746572416e64446174610000006044820152fd5b5050600060e087015260006080870152600060a0870152612ac9565b9092915a906060810151916040928351967fffffffff00000000000000000000000000000000000000000000000000000000886135d7606084018461284b565b600060038211613b9f575b7f8dd7712f0000000000000000000000000000000000000000000000000000000094168403613a445750505061379d6000926136b292602088015161363a8a5193849360208501528b602485015260648401906128ec565b90604483015203906136727fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0928381018352826121ed565b61379189519485927e42dc5300000000000000000000000000000000000000000000000000000000602085015261020060248501526102248401906123c6565b613760604484018b60806101a091805173ffffffffffffffffffffffffffffffffffffffff808251168652602082015160208701526040820151604087015260608201516060870152838201518487015260a082015160a087015260c082015160c087015260e08201511660e0860152610100808201519086015261012080910151908501526020810151610140850152604081015161016085015260608101516101808501520151910152565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83820301610204840152876123c6565b039081018352826121ed565b6020918183809351910182305af1600051988652156137bf575b505050505050565b909192939495965060003d8214613a3a575b7fdeaddead00000000000000000000000000000000000000000000000000000000810361385b57608487878051917f220266b600000000000000000000000000000000000000000000000000000000835260048301526024820152600f60448201527f41413935206f7574206f662067617300000000000000000000000000000000006064820152fd5b7fdeadaa510000000000000000000000000000000000000000000000000000000091929395949650146000146138c55750506138a961389e6138b8935a90612443565b608085015190612409565b9083015183611d748295613d65565b905b3880808080806137b7565b909261395290828601518651907ff62676f440ff169a3a9afdbf812e89e7f95975ee8e5c31214ffdef631c5f479273ffffffffffffffffffffffffffffffffffffffff9580878551169401516139483d610800808211613a32575b508a519084818301018c5280825260008583013e8a805194859485528401528a8301906123c6565b0390a35a90612443565b916139636080860193845190612409565b926000905a94829488519761397789613ccc565b948260e08b0151168015600014613a1857505050875116955b5a9003019560a06060820151910151019051860390818111613a04575b5050840290850151928184106000146139de57505080611e68575090816139d89293611d7481613d65565b906138ba565b6139ee9082849397950390613c98565b50611e68575090826139ff92613cf6565b6139d8565b6064919003600a02049094019338806139ad565b90919892509751613a2a575b50613990565b955038613a24565b905038613920565b8181803e516137d1565b613b97945082935090613a8c917e42dc53000000000000000000000000000000000000000000000000000000006020613b6b9501526102006024860152610224850191612709565b613b3a604484018860806101a091805173ffffffffffffffffffffffffffffffffffffffff808251168652602082015160208701526040820151604087015260608201516060870152838201518487015260a082015160a087015260c082015160c087015260e08201511660e0860152610100808201519086015261012080910151908501526020810151610140850152604081015161016085015260608101516101808501520151910152565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83820301610204840152846123c6565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018952886121ed565b60008761379d565b5081356135e2565b73ffffffffffffffffffffffffffffffffffffffff168015613c3a57600080809381935af1613bd4612450565b5015613bdc57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41413931206661696c65642073656e6420746f2062656e6566696369617279006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4141393020696e76616c69642062656e656669636961727900000000000000006044820152fd5b73ffffffffffffffffffffffffffffffffffffffff166000526000602052613cc66040600020918254612409565b80915590565b610120610100820151910151808214613cf257480180821015613ced575090565b905090565b5090565b9190917f49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f6080602083015192519473ffffffffffffffffffffffffffffffffffffffff946020868851169660e089015116970151916040519283526000602084015260408301526060820152a4565b60208101519051907f67b4fa9642f42120bf031f3051d1824b0fe25627945b27b8a6a65d5761d5482e60208073ffffffffffffffffffffffffffffffffffffffff855116940151604051908152a3565b613dcd604092959493956060835260608301906128ec565b9460208201520152565b8015613e6457600060408051613dec816121d1565b828152826020820152015273ffffffffffffffffffffffffffffffffffffffff811690604065ffffffffffff91828160a01c16908115613e5c575b60d01c92825191613e37836121d1565b8583528460208401521691829101524211908115613e5457509091565b905042109091565b839150613e27565b5060009060009056fea2646970667358221220b094fd69f04977ae9458e5ba422d01cd2d20dbcfca0992ff37f19aa07deec25464736f6c6343000817003360808060405234610016576101c3908161001c8239f35b600080fdfe6080600436101561000f57600080fd5b6000803560e01c63570e1a361461002557600080fd5b3461018a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018a576004359167ffffffffffffffff9081841161018657366023850112156101865783600401358281116101825736602482870101116101825780601411610182577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec810192808411610155577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f81600b8501160116830190838210908211176101555792846024819482600c60209a968b9960405286845289840196603889018837830101525193013560601c5af1908051911561014d575b5073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b90503861012e565b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8380fd5b8280fd5b80fdfea26469706673582212207adef8895ad3393b02fab10a111d85ea80ff35366aa43995f4ea20e67f29200664736f6c63430008170033" diff --git a/tests/globalSetup.ts b/tests/globalSetup.ts deleted file mode 100644 index e9840f64..00000000 --- a/tests/globalSetup.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { type NetworkConfig, initNetwork, killAllNetworks } from "./test.utils" - -export async function setup({ provide }) { - const network = await initNetwork() - const { bundlerInstance, instance, ...serializeableConfig } = network - provide("globalNetwork", serializeableConfig) -} - -export async function teardown() { - await killAllNetworks() -} - -declare module "vitest" { - export interface ProvidedContext { - globalNetwork: NetworkConfig - } -} diff --git a/tests/instances/playground.test.ts b/tests/instances/playground.test.ts index 386f3381..7e5c4128 100644 --- a/tests/instances/playground.test.ts +++ b/tests/instances/playground.test.ts @@ -1,4 +1,4 @@ -import { expect, describe, it } from "vitest" +import { describe, expect, it } from "vitest" describe("dummy test", () => { it("should pass", () => { diff --git a/tests/test.utils.ts b/tests/test.utils.ts deleted file mode 100644 index 77b7fa39..00000000 --- a/tests/test.utils.ts +++ /dev/null @@ -1,564 +0,0 @@ -import getPort from "get-port" -import { alto, anvil } from "prool/instances" -import { - http, - type Abi, - type Account, - type Address, - type Chain, - type Hex, - type SetCodeParameters, - createTestClient, - createWalletClient, - encodeAbiParameters, - parseAbi, - parseAbiParameters, - publicActions, - walletActions -} from "viem" -import { mnemonicToAccount } from "viem/accounts" -import { anvil as anvilChain } from "viem/chains" -import { - type EIP712DomainReturn, - type NexusSmartAccount, - type NexusSmartAccountConfig, - createSmartAccountClient -} from "../src" -import { getCustomChain } from "../src/account/utils" -import { Logger } from "../src/account/utils/Logger" -import { ENTRYPOINT_ADDRESS, ENTRYPOINT_SIMULATIONS } from "../src/contracts" -import { K1ValidatorAbi, NexusAbi } from "../src/contracts/abi" -import { K1ValidatorFactoryAbi } from "../src/contracts/abi/K1ValidatorFactoryAbi" -import deployedContracts from "./contracts/deployment.json" -import { - ENTRY_POINT_SIMULATIONS_CREATECALL, - ENTRY_POINT_V07_CREATECALL -} from "./create.config" - -import { - BiconomyMetaFactoryAbi, - BootstrapAbi, - BootstrapLibAbi, - MockRegistryAbi, - NexusAccountFactoryAbi -} from "./contracts/abi" - -type AnvilPayload = { - instance: AnvilInstance - deployment: Deployment -} -type AnvilInstance = ReturnType -type BundlerInstance = ReturnType -type BundlerDto = { - bundlerInstance: BundlerInstance - bundlerUrl: string - bundlerPort: number -} -export type AnvilDto = { - rpcUrl: string - rpcPort: number - chain: Chain - instance: AnvilInstance - deployment: Deployment -} -export type NetworkConfigWithBundler = AnvilDto & BundlerDto -export type NetworkConfig = Omit< - NetworkConfigWithBundler, - "instance" | "bundlerInstance" -> -export const pKey = - "0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80" // This is a publicly available private key meant only for testing only - -export const getTestAccount = ( - addressIndex = 0 -): ReturnType => { - return mnemonicToAccount( - "test test test test test test test test test test test junk", - { - addressIndex - } - ) -} - -const allInstances = new Map() - -export const killAllNetworks = () => - killNetwork(Array.from(allInstances.keys())) - -export const killNetwork = (ids: number[]) => - Promise.all( - ids.map(async (id) => { - const instance = allInstances.get(id) - - if (instance) { - await instance.stop() - allInstances.delete(id) - } - }) - ) - -export const initNetwork = async (): Promise => { - const configuredChain = await initAnvilPayload() - const bundlerConfig = await initBundlerInstance({ - rpcUrl: configuredChain.rpcUrl - }) - allInstances.set(configuredChain.instance.port, configuredChain.instance) - allInstances.set( - bundlerConfig.bundlerInstance.port, - bundlerConfig.bundlerInstance - ) - return { ...configuredChain, ...bundlerConfig } -} - -export type MasterClient = ReturnType -export const toTestClient = (chain: Chain, account: Account) => - createTestClient({ - mode: "anvil", - chain, - account, - transport: http() - }) - .extend(publicActions) - .extend(walletActions) - -export const toBundlerInstance = async ({ - rpcUrl, - bundlerPort -}: { - rpcUrl: string - bundlerPort: number -}): Promise => { - const instance = alto({ - entrypoints: [ENTRYPOINT_ADDRESS], - rpcUrl: rpcUrl, - executorPrivateKeys: [pKey], - entrypointSimulationContract: ENTRYPOINT_SIMULATIONS, - safeMode: false, - port: bundlerPort - }) - await instance.start() - return instance -} - -export const toConfiguredAnvil = async ({ - rpcPort -}: { rpcPort: number }): Promise => { - const instance = anvil({ - hardfork: "Paris", - chainId: anvilChain.id, - port: rpcPort - // forkUrl: "https://base-sepolia.gateway.tenderly.co/2oxlNZ7oiNCUpXzrWFuIHx" - }) - await instance.start() - const deployment = await deploy(rpcPort) - return { instance, deployment } -} - -export const initAnvilPayload = async (): Promise => { - const rpcPort = await getPort() - const rpcUrl = `http://localhost:${rpcPort}` - const chain = getTestChainFromPort(rpcPort) - const { instance, deployment } = await toConfiguredAnvil({ rpcPort }) - return { rpcUrl, chain, instance, deployment, rpcPort } -} - -export const initBundlerInstance = async ({ - rpcUrl -}: { rpcUrl: string }): Promise => { - const bundlerPort = await getPort() - const bundlerUrl = `http://localhost:${bundlerPort}` - const bundlerInstance = await toBundlerInstance({ rpcUrl, bundlerPort }) - return { bundlerInstance, bundlerUrl, bundlerPort } -} - -export const checkBalance = ( - testClient: MasterClient, - owner: Hex, - tokenAddress?: Hex -) => { - if (!tokenAddress) { - return testClient.getBalance({ address: owner }) - } - return testClient.readContract({ - address: tokenAddress, - abi: parseAbi([ - "function balanceOf(address owner) public view returns (uint256 balance)" - ]), - functionName: "balanceOf", - args: [owner] - }) -} - -export const nonZeroBalance = async ( - testClient: MasterClient, - address: Hex, - tokenAddress?: Hex -) => { - const balance = await checkBalance(testClient, address, tokenAddress) - if (balance > BigInt(0)) return - throw new Error( - `Insufficient balance ${ - tokenAddress ? `of token ${tokenAddress}` : "of native token" - } during test setup of owner: ${address}` - ) -} - -export type FundedTestClients = Awaited> -export const toFundedTestClients = async ( - network: NetworkConfigWithBundler -) => { - const testConfig: Partial = { - factoryAddress: network.deployment.k1FactoryAddress, - k1ValidatorAddress: network.deployment.k1ValidatorAddress - } - - const chain = network.chain - const bundlerUrl = network.bundlerUrl - - const account = getTestAccount(2) - const recipientAccount = getTestAccount(3) - - const walletClient = createWalletClient({ - account, - chain, - transport: http() - }) - - const recipientWalletClient = createWalletClient({ - account: recipientAccount, - chain, - transport: http() - }) - - const testClient = toTestClient(chain, getTestAccount()) - - const smartAccount = await createSmartAccountClient({ - signer: walletClient, - bundlerUrl, - chain, - ...testConfig - }) - - const recipientSmartAccount = await createSmartAccountClient({ - signer: recipientWalletClient, - bundlerUrl, - chain, - ...testConfig - }) - - const smartAccountAddress = await smartAccount.getAddress() - const recipientSmartAccountAddress = await recipientSmartAccount.getAddress() - await fundAndDeploy(testClient, [smartAccount, recipientSmartAccount]) - - return { - account, - recipientAccount, - walletClient, - recipientWalletClient, - testClient, - smartAccount, - recipientSmartAccount, - smartAccountAddress, - recipientSmartAccountAddress - } -} - -export const fundAndDeploy = async ( - testClient: MasterClient, - smartAccounts: NexusSmartAccount[] -) => - Promise.all( - smartAccounts.map((smartAccount) => - fundAndDeploySingleAccount(testClient, smartAccount) - ) - ) - -export const fundAndDeploySingleAccount = async ( - testClient: MasterClient, - smartAccount: NexusSmartAccount -) => { - try { - const accountAddress = await smartAccount.getAddress() - await topUp(testClient, accountAddress) - const { wait } = await smartAccount.deploy() - const { success } = await wait() - if (!success) { - throw new Error("Failed to deploy smart account") - } - } catch (e) { - Logger.error(`Error initializing smart account: ${e}`) - } -} - -export const safeTopUp = async ( - testClient: MasterClient, - recipient: Hex, - amount = 100000000000000000000n, - token?: Hex -) => { - try { - return await topUp(testClient, recipient, amount, token) - } catch (error) { - Logger.error(`Error topping up account: ${error}`) - } -} - -export const topUp = async ( - testClient: MasterClient, - recipient: Hex, - amount = 100000000000000000000n, - token?: Hex -) => { - const balanceOfRecipient = await checkBalance(testClient, recipient, token) - - if (balanceOfRecipient > amount) { - Logger.log( - `balanceOfRecipient (${recipient}) already has enough ${ - token ?? "native token" - } (${balanceOfRecipient}) during safeTopUp` - ) - return await Promise.resolve() - } - - Logger.log(`topping up (${recipient}): (${balanceOfRecipient}).`) - - if (token) { - const hash = await testClient.writeContract({ - address: token, - abi: parseAbi([ - "function transfer(address recipient, uint256 amount) external" - ]), - functionName: "transfer", - args: [recipient, amount] - }) - await testClient.waitForTransactionReceipt({ hash }) - } - const hash = await testClient.sendTransaction({ - to: recipient, - value: amount - }) - return testClient.waitForTransactionReceipt({ hash }) -} - -// Returns the encoded EIP-712 domain struct fields. -export const getAccountDomainStructFields = async ( - testClient: MasterClient, - accountAddress: Address -) => { - const accountDomainStructFields = (await testClient.readContract({ - address: accountAddress, - abi: parseAbi([ - "function eip712Domain() public view returns (bytes1 fields, string memory name, string memory version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] memory extensions)" - ]), - functionName: "eip712Domain" - })) as EIP712DomainReturn - - const [fields, name, version, chainId, verifyingContract, salt, extensions] = - accountDomainStructFields - - const params = parseAbiParameters( - "bytes1, string, string, uint256, address, bytes32, uint256[]" - ) - - return encodeAbiParameters(params, [ - fields, - name, - version, - chainId, - verifyingContract, - salt, - extensions - ]) -} - -export const getBundlerUrl = (chainId: number) => - `https://bundler.biconomy.io/api/v2/${chainId}/nJPK7B3ru.dd7f7861-190d-41bd-af80-6877f74b8f14` - -const getTestChainFromPort = (port: number): Chain => - getCustomChain(`Anvil-${port}`, anvilChain.id, `http://localhost:${port}`, "") - -type Deployment = { - bootrapAddress: Address - nexusAddress: Address - bootstrapLibAddress: Address - k1ValidatorAddress: Address - mockRegistryAddress: Address - k1FactoryAddress: Address - biconomyMetaFactoryAddress: Address - // Mock Contracts for testing - counterAddress: Address - stakeableAddress: Address - mockExecutorAddress: Address - mockHandlerAddress: Address - mockTokenAddress: Address - mockValidatorAddress: Address - mockHookAddress: Address -} - -const deploy = async (rpcPort: number): Promise => { - const DETERMINISTIC_DEPLOYER = "0x4e59b44847b379578588920ca78fbf26c0b4956c" - const chain = getTestChainFromPort(rpcPort) - const account = getTestAccount() - const testClient = toTestClient(chain, account) - - let nonce = await testClient.getTransactionCount({ - address: account.address - }) - - await Promise.all([ - testClient.sendTransaction({ - to: DETERMINISTIC_DEPLOYER, - data: ENTRY_POINT_SIMULATIONS_CREATECALL, - gas: 15_000_000n, - nonce: nonce++ - }), - testClient.sendTransaction({ - to: DETERMINISTIC_DEPLOYER, - data: ENTRY_POINT_V07_CREATECALL, - gas: 15_000_000n, - nonce: nonce++ - }) - ]) - - const bootstrapHash = await testClient.deployContract({ - bytecode: deployedContracts.Bootstrap.bytecode as Hex, - abi: BootstrapAbi - }) - - const nexusHash = await testClient.deployContract({ - bytecode: deployedContracts.Nexus.bytecode as Hex, - abi: NexusAbi, - args: [ENTRYPOINT_ADDRESS] - }) - - const bootstrapLibHash = await testClient.deployContract({ - bytecode: deployedContracts.BootstrapLib.bytecode as Hex, - abi: BootstrapLibAbi - }) - - const k1ValidatorHash = await testClient.deployContract({ - bytecode: deployedContracts.K1Validator.bytecode as Hex, - abi: K1ValidatorAbi - }) - - const mockRegistryHash = await testClient.deployContract({ - bytecode: deployedContracts.MockRegistry.bytecode as Hex, - abi: MockRegistryAbi - }) - - const biconomyMetaFactoryHash = await testClient.deployContract({ - bytecode: deployedContracts.BiconomyMetaFactory.bytecode as Hex, - abi: BiconomyMetaFactoryAbi as Abi, - args: [account.address] - }) - - const receipts = await Promise.all([ - testClient.waitForTransactionReceipt({ hash: bootstrapHash }), - testClient.waitForTransactionReceipt({ hash: nexusHash }), - testClient.waitForTransactionReceipt({ hash: bootstrapLibHash }), - testClient.waitForTransactionReceipt({ hash: k1ValidatorHash }), - testClient.waitForTransactionReceipt({ hash: mockRegistryHash }), - testClient.waitForTransactionReceipt({ hash: biconomyMetaFactoryHash }) - ]) - - // Setup the Mock Contracts - await Promise.all([ - testClient.setCode(deployedContracts.Counter as SetCodeParameters), - testClient.setCode(deployedContracts.Stakeable as SetCodeParameters), - testClient.setCode(deployedContracts.MockExecutor as SetCodeParameters), - testClient.setCode(deployedContracts.MockHandler as SetCodeParameters), - testClient.setCode(deployedContracts.MockToken as SetCodeParameters), - testClient.setCode(deployedContracts.MockValidator as SetCodeParameters), - testClient.setCode(deployedContracts.MockHook as SetCodeParameters) - ]) - - const counterAddress = deployedContracts.Counter.address as Hex - const stakeableAddress = deployedContracts.Stakeable.address as Hex - const mockExecutorAddress = deployedContracts.MockExecutor.address as Hex - const mockHandlerAddress = deployedContracts.MockHandler.address as Hex - const mockTokenAddress = deployedContracts.MockToken.address as Hex - const mockValidatorAddress = deployedContracts.MockValidator.address as Hex - const mockHookAddress = deployedContracts.MockHook.address as Hex - - const [ - bootrapAddress, - nexusAddress, - bootstrapLibAddress, - k1ValidatorAddress, - mockRegistryAddress, - biconomyMetaFactoryAddress - ] = receipts.map((receipt) => receipt.contractAddress) - - const k1ValidatorAddressHash = await testClient.deployContract({ - bytecode: deployedContracts.K1ValidatorFactory.bytecode as Hex, - abi: K1ValidatorFactoryAbi as Abi, - args: [ - nexusAddress, - account.address, - k1ValidatorAddress, - bootrapAddress, - mockRegistryAddress - ] - }) - - const nexusAccountFactoryHash = await testClient.deployContract({ - bytecode: deployedContracts.NexusAccountFactory.bytecode as Hex, - abi: NexusAccountFactoryAbi as Abi, - args: [nexusAddress, account.address] - }) - - const [k1FactoryReceipt, nexusAccountFactoryReceipt] = await Promise.all([ - testClient.waitForTransactionReceipt({ - hash: k1ValidatorAddressHash - }), - testClient.waitForTransactionReceipt({ - hash: nexusAccountFactoryHash - }) - ]) - - const k1FactoryAddress = k1FactoryReceipt.contractAddress - const nexusAccountFactoryAddress = nexusAccountFactoryReceipt.contractAddress - - if ( - !biconomyMetaFactoryAddress || - !nexusAccountFactoryAddress || - !k1FactoryAddress || - !k1FactoryAddress || - !bootrapAddress || - !nexusAddress || - !bootstrapLibAddress || - !k1ValidatorAddress || - !mockRegistryAddress || - !counterAddress || - !stakeableAddress || - !mockExecutorAddress || - !mockHandlerAddress || - !mockTokenAddress || - !mockValidatorAddress || - !mockHookAddress - ) { - throw new Error("Failed to deploy contracts") - } - - const deployment: Deployment = { - biconomyMetaFactoryAddress, - bootrapAddress, - nexusAddress, - bootstrapLibAddress, - k1ValidatorAddress, - mockRegistryAddress, - k1FactoryAddress, - counterAddress, - stakeableAddress, - mockExecutorAddress, - mockHandlerAddress, - mockTokenAddress, - mockValidatorAddress, - mockHookAddress - } - - return deployment -} - -export const sleep = (ms: number) => - new Promise((resolve) => setTimeout(resolve, ms)) diff --git a/tests/testSetup.ts b/tests/testSetup.ts deleted file mode 100644 index ce9507be..00000000 --- a/tests/testSetup.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { inject, test } from "vitest" -import { - type FundedTestClients, - type NetworkConfigWithBundler, - initNetwork, - toFundedTestClients -} from "./test.utils" - -export type NetworkConfigWithTestClients = NetworkConfigWithBundler & { - fundedTestClients: FundedTestClients -} - -export const scopedTest = test.extend<{ - config: NetworkConfigWithTestClients -}>({ - // biome-ignore lint/correctness/noEmptyPattern: Needed in vitest :/ - config: async ({}, use) => { - const testNetwork = await initNetwork() - const fundedTestClients = await toFundedTestClients(testNetwork) - await use({ ...testNetwork, fundedTestClients }) - await Promise.all([ - testNetwork.instance.stop(), - testNetwork.bundlerInstance.stop() - ]) - } -}) - -export type TestFileNetworkType = "LOCAL" | "GLOBAL" -export const toNetwork = async (networkType: TestFileNetworkType) => - // @ts-ignore - await (networkType === "GLOBAL" ? inject("globalNetwork") : initNetwork()) diff --git a/tests/vitest.config.ts b/tests/vitest.config.ts index e3fc9a13..a5f334bf 100644 --- a/tests/vitest.config.ts +++ b/tests/vitest.config.ts @@ -27,7 +27,6 @@ export default defineConfig({ }, environment: "node", include: ["tests/instances/*.test.ts"], - globalSetup: [join(__dirname, "./globalSetup.ts")], testTimeout: 20_000 } })