diff --git a/.DS_Store b/.DS_Store index 7fc4aac..0a8ea3e 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/.gitmodules b/.gitmodules index 12ffac3..690924b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,12 +4,3 @@ [submodule "lib/openzeppelin-contracts"] path = lib/openzeppelin-contracts url = https://github.com/OpenZeppelin/openzeppelin-contracts -[submodule "lib/semaphore-mock"] - path = lib/semaphore-mock - url = https://github.com/worldcoin/semaphore-mock -[submodule "lib/openzeppelin-foundry-upgrades"] - path = lib/openzeppelin-foundry-upgrades - url = https://github.com/OpenZeppelin/openzeppelin-foundry-upgrades -[submodule "lib/openzeppelin-contracts-upgradeable"] - path = lib/openzeppelin-contracts-upgradeable - url = https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable diff --git a/README.md b/README.md index 1ae6fe1..9265b45 100644 --- a/README.md +++ b/README.md @@ -1,154 +1,66 @@ -# Governaut Contracts Repository +## Foundry -## Overview +**Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.** -Governaut is a decentralized identity and governance dashboard that integrates decentralized identity verification, governance tools, and attestation systems. This repository contains the smart contracts that form the backbone of the Governaut platform, facilitating governance interactions, identity verification, and community project funding through integration with Celo's onchain mechanisms. +Foundry consists of: -## Table of Contents +- **Forge**: Ethereum testing framework (like Truffle, Hardhat and DappTools). +- **Cast**: Swiss army knife for interacting with EVM smart contracts, sending transactions and getting chain data. +- **Anvil**: Local Ethereum node, akin to Ganache, Hardhat Network. +- **Chisel**: Fast, utilitarian, and verbose solidity REPL. -- [Governaut Contracts Repository](#governaut-contracts-repository) - - [Overview](#overview) - - [Table of Contents](#table-of-contents) - - [Getting Started](#getting-started) - - [Prerequisites](#prerequisites) - - [Installation](#installation) - - [Contracts Overview](#contracts-overview) - - [Contract 1: GovernanceContract](#contract-1-governancecontract) - - [Description](#description) - - [Key Features](#key-features) - - [Functions Overview](#functions-overview) - - [Constructor](#constructor) - - [Propose](#propose) - - [Execute](#execute) - - [CastVote](#castvote) - - [IsApprovedProposer](#isapprovedproposer) - - [Security Considerations](#security-considerations) - - [Recap](#recap) - - [License](#license) +## Documentation -## Getting Started +https://book.getfoundry.sh/ -To get a copy of the project up and running on your local machine for development and testing purposes, follow these steps. +## Usage -### Prerequisites - -Ensure you have the following prerequisites installed: - -- Solidity compiler (solc 0.8.24) -- Foundry for development and testing -- Anvil or another local blockchain for testing - -### Installation - -Clone the repository to your local machine: - -`git clone https://github.com/GovernautDao/contracts.git` - -Install dependencies: - -`forge install` - -Compile the contracts: - -`forge build` - - -## Contracts Overview - -### Contract 1: GovernanceContract - -#### Description - -The `GovernautGovernance` contract is a sophisticated governance system designed for managing grant-related proposals within the Governaut ecosystem. Leveraging OpenZeppelin's governance contracts, it extends various functionalities to integrate seamlessly with an Identity Manager, ensuring that only verified identities can participate in governance actions. This contract plays a pivotal role in democratizing decision-making processes by allowing token holders to propose, vote on, and execute proposals. - -### Key Features - -- Identity Verification: Utilizes an external Identity Manager to verify the identity of participants, ensuring that only verified users can create proposals and cast votes. -- Proposal Creation and Voting: Allows verified users to submit proposals for community consideration and enables voting on these proposals using a simple majority counting mechanism. -- Quorum Requirements: Implements quorum requirements to ensure a minimum level of voter participation for proposal execution. -- Approved Proposers Tracking: Maintains a record of approved proposers, marking them once their proposal has been successfully executed. - -### Functions Overview - -#### Constructor +### Build +```shell +$ forge build ``` -constructor( - IVotes _token, - address _identityManagerAddress -) -``` - -Initializes the contract with the ERC20 token used for voting and the address of the Identity Manager contract. -#### Propose +### Test +```shell +$ forge test ``` -function propose( - address[] memory targets, - uint256[] memory values, - bytes[] memory calldatas, - string memory description -) - public - override(Governor) - onlyVerifiedIdentity - returns (uint256) -``` - -Allows a verified user to create a new governance proposal specifying target contracts, call values, call data, and a description. -#### Execute +### Format +```shell +$ forge fmt ``` -function execute( - address[] memory targets, - uint256[] memory values, - bytes[] memory calldatas, - bytes32 descriptionHash -) - public - payable - virtual - override(Governor) - returns (uint256) -``` - -Executes a successful proposal after the voting period ends, provided it meets the quorum and passes the vote. -#### CastVote +### Gas Snapshots +```shell +$ forge snapshot ``` -function castVote( - uint256 proposalId, - uint8 support -) - public - virtual - override(Governor) - onlyVerifiedIdentity - returns (uint256) -``` - -Enables a verified user to cast a vote on a proposal, supporting, opposing, or abstaining. -#### IsApprovedProposer +### Anvil +```shell +$ anvil ``` -function isApprovedProposer(address proposer) public view returns (bool) -``` - -Checks if an address has been marked as an approved proposer after successfully executing a proposal. -### Security Considerations +### Deploy -- Identity Verification: Ensures that only verified users can participate in governance actions, mitigating risks associated with anonymous participation. -- Access Control: Utilizes modifiers to restrict certain functions to verified identities, enhancing security and integrity of the governance process. +```shell +$ forge script script/Counter.s.sol:CounterScript --rpc-url --private-key +``` -### Recap +### Cast -The GovernautGovernance contract represents a robust framework for decentralized decision-making within the Governaut ecosystem. By integrating identity verification and leveraging OpenZeppelin's battle-tested governance modules, it facilitates secure, transparent, and community-driven governance processes. +```shell +$ cast +``` -## License +### Help -Distributed under the MIT License. +```shell +$ forge --help +$ anvil --help +$ cast --help +``` diff --git a/World Id Bridge b/World Id Bridge new file mode 160000 index 0000000..729d234 --- /dev/null +++ b/World Id Bridge @@ -0,0 +1 @@ +Subproject commit 729d2346a3bb6bac003284bdcefc0cf12ece3f7d diff --git a/broadcast/Deploy_MetalL2Testnet.s.sol/919/run-1723362711.json b/broadcast/Deploy_MetalL2Testnet.s.sol/919/run-1723362711.json new file mode 100644 index 0000000..6060d10 --- /dev/null +++ b/broadcast/Deploy_MetalL2Testnet.s.sol/919/run-1723362711.json @@ -0,0 +1,369 @@ +{ + "transactions": [ + { + "hash": "0x8c9da969866fe94bb02a77d8ec941025567df5afced2828c964c1388abc85c40", + "transactionType": "CREATE", + "contractName": null, + "contractAddress": "0xe95f2fcf682712caf5fb44c9608d33dbac6b536b", + "function": null, + "arguments": null, + "transaction": { + "from": "0x12b2434a1022d5787bf06056f2885fe35de62bf8", + "gas": "0x73c5f", + "value": "0x0", + "input": "0x60e0604052600160c05234801561001557600080fd5b5060405161080938038061080983398101604081905261003491610229565b836001600160a01b03811661006357604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61006c816100c7565b506001600160a01b0383166080526040516100ba906100a8906100939085906020016102ae565b60408051601f19818403018152919052610117565b826040516020016100939291906102ca565b60a052506102f092505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060088260405160200161012c91906102ae565b60408051601f198184030181529190528051602090910120901c92915050565b80516001600160a01b038116811461016357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015610199578181015183820152602001610181565b50506000910152565b600082601f8301126101b357600080fd5b81516001600160401b03808211156101cd576101cd610168565b604051601f8301601f19908116603f011681019082821181831017156101f5576101f5610168565b8160405283815286602085880101111561020e57600080fd5b61021f84602083016020890161017e565b9695505050505050565b6000806000806080858703121561023f57600080fd5b6102488561014c565b93506102566020860161014c565b60408601519093506001600160401b038082111561027357600080fd5b61027f888389016101a2565b9350606087015191508082111561029557600080fd5b506102a2878288016101a2565b91505092959194509250565b600082516102c081846020870161017e565b9190910192915050565b828152600082516102e281602085016020870161017e565b919091016020019392505050565b60805160a05160c0516104ea61031f6000396000610190015260006101f20152600061016001526104ea6000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80634b95309714610067578063715018a6146100a85780638da5cb5b146100b25780639271bcf7146100cd578063e9b70553146100ec578063f2fde38b146100ff575b600080fd5b6100936100753660046103dd565b6001600160a01b031660009081526002602052604090205460ff1690565b60405190151581526020015b60405180910390f35b6100b0610112565b005b6000546040516001600160a01b03909116815260200161009f565b6100b0336000908152600260205260409020805460ff19166001179055565b6100b06100fa3660046103ff565b610126565b6100b061010d3660046103dd565b6102d1565b61011a61030f565b610124600061033c565b565b60008281526001602052604090205460ff161561015e57604051633c7fd51360e11b8152600481018390526024015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633bc778e3847f00000000000000000000000000000000000000000000000000000000000000006101ef886040516020016101db919060609190911b6bffffffffffffffffffffffff1916815260140190565b60405160208183030381529060405261038c565b867f0000000000000000000000000000000000000000000000000000000000000000876040518763ffffffff1660e01b81526004016102339695949392919061044d565b60006040518083038186803b15801561024b57600080fd5b505afa15801561025f573d6000803e3d6000fd5b505050600083815260016020818152604092839020805460ff191690921790915590518481527ff786e7f77ede00a02a5464f8f0555798f42ba99a4a920ef2778db8d75e4656f792500160405180910390a15050336000908152600260205260409020805460ff191660011790555050565b6102d961030f565b6001600160a01b03811661030357604051631e4fbdf760e01b815260006004820152602401610155565b61030c8161033c565b50565b6000546001600160a01b031633146101245760405163118cdaa760e01b8152336004820152602401610155565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006008826040516020016103a19190610485565b60408051601f198184030181529190528051602090910120901c92915050565b80356001600160a01b03811681146103d857600080fd5b919050565b6000602082840312156103ef57600080fd5b6103f8826103c1565b9392505050565b60008060008061016080868803121561041757600080fd5b610420866103c1565b9450602086013593506040860135925086818701111561043f57600080fd5b509295919450926060019150565b60006101a0820190508782528660208301528560408301528460608301528360808301526101008360a0840137979650505050505050565b6000825160005b818110156104a6576020818601810151858301520161048c565b50600092019182525091905056fea26469706673582212204eb703707d3007d257febb76440ddda512ce417bb7494037d284c3b190e3a3a164736f6c6343000818003300000000000000000000000012b2434a1022d5787bf06056f2885fe35de62bf800000000000000000000000011ca3127182f7583efc416a8771bd4d11fae4334000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000002c6170705f73746167696e675f65646663393432653639653331623132333365353239363138313661636631660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000966756e6374696f6e670000000000000000000000000000000000000000000000", + "nonce": "0x0", + "chainId": "0x397" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xcb0682a06d565528c06e379918322c25f3dc43a55fa319de46b8a90f826e58fa", + "transactionType": "CREATE", + "contractName": null, + "contractAddress": "0x592bede03180b23dc0d8763666b37103f30191ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0x12b2434a1022d5787bf06056f2885fe35de62bf8", + "gas": "0x5a50dc", + "value": "0x0", + "input": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000d6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000735760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d35780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6150ee80620000e66000396000f3fe6080604052600436106103545760003560e01c80637b3c71d3116101c6578063c28bc2fa116100f7578063e540d01d11610095578063f23a6e611161006f578063f23a6e6114610b74578063f8ce560a14610ba0578063fc0c546a14610bc0578063fe0d94c114610bd557600080fd5b8063e540d01d14610b14578063eb9019d414610b34578063ece40cc114610b5457600080fd5b8063da35c664116100d1578063da35c66414610a65578063dd4e2ba514610a7a578063ddf0b00914610ac0578063deaaa7cc14610ae057600080fd5b8063c28bc2fa14610a02578063c59057e414610a15578063d465127614610a3557600080fd5b80639a802a6d11610164578063ab58fb8e1161013e578063ab58fb8e1461095c578063b58131b0146109a1578063bc197c81146109b6578063c01f9e37146109e257600080fd5b80639a802a6d14610906578063a7713a7014610926578063a9a952941461093b57600080fd5b806384b0196e116101a057806384b0196e1461087e5780638ff262e3146108a657806391ddadf4146108c657806397c3d334146108f257600080fd5b80637b3c71d3146107e95780637d5e81e2146108095780637ecebe001461082957600080fd5b80633e4f49e6116102a057806354fd4d501161023e5780635b8d0e0d116102185780635b8d0e0d146107695780635f398a141461078957806360c4247f146107a957806379051887146107c957600080fd5b806354fd4d50146106e657806356781388146107105780635700b7031461073057600080fd5b8063452115d61161027a578063452115d61461062f578063485cc9551461064f5780634bf5d7e91461066f578063544ffc9c1461068457600080fd5b80633e4f49e61461058b57806340e58ee5146105b857806343859632146105d857600080fd5b8063160cbed71161030d5780632d63f693116102e75780632d63f693146104f15780632e82db94146105115780632fe3e261146105425780633932abb11461057657600080fd5b8063160cbed71461048e57806316e9eaec146104ae5780632656227d146104de57600080fd5b806301ffc9a71461036257806302a251a31461039757806306f3f9e6146103d057806306fdde03146103f0578063143489d014610412578063150b7a021461044a57600080fd5b3661035d57005b005b600080fd5b34801561036e57600080fd5b5061038261037d366004613e80565b610be8565b60405190151581526020015b60405180910390f35b3480156103a357600080fd5b50600080516020614ff983398151915254600160301b900463ffffffff165b60405190815260200161038e565b3480156103dc57600080fd5b5061035b6103eb366004613eaa565b610c3f565b3480156103fc57600080fd5b50610405610c53565b60405161038e9190613f13565b34801561041e57600080fd5b5061043261042d366004613eaa565b610cf7565b6040516001600160a01b03909116815260200161038e565b34801561045657600080fd5b50610475610465366004614006565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161038e565b34801561049a57600080fd5b506103c26104a93660046141da565b610d1f565b3480156104ba57600080fd5b506104ce6104c9366004613eaa565b610d79565b60405161038e9493929190614339565b6103c26104ec3660046141da565b610f94565b3480156104fd57600080fd5b506103c261050c366004613eaa565b610ff0565b34801561051d57600080fd5b5061053161052c366004613eaa565b61101e565b60405161038e959493929190614384565b34801561054e57600080fd5b506103c27f3e83946653575f9a39005e1545185629e92736b7528ab20ca3816f315424a81181565b34801561058257600080fd5b506103c2611082565b34801561059757600080fd5b506105ab6105a6366004613eaa565b6110a2565b60405161038e919061440e565b3480156105c457600080fd5b5061035b6105d3366004613eaa565b61121b565b3480156105e457600080fd5b506103826105f336600461441c565b6000918252600080516020615079833981519152602090815260408084206001600160a01b039390931684526003909201905290205460ff1690565b34801561063b57600080fd5b506103c261064a3660046141da565b6113eb565b34801561065b57600080fd5b5061035b61066a36600461444c565b61145d565b34801561067b57600080fd5b506104056115fc565b34801561069057600080fd5b506106cb61069f366004613eaa565b600090815260008051602061507983398151915260205260409020805460018201546002909201549092565b6040805193845260208401929092529082015260600161038e565b3480156106f257600080fd5b506040805180820190915260018152603160f81b6020820152610405565b34801561071c57600080fd5b506103c261072b36600461448b565b6116a5565b34801561073c57600080fd5b5061038261074b3660046144b7565b6001600160a01b031660009081526001602052604090205460ff1690565b34801561077557600080fd5b506103c261078436600461451c565b611740565b34801561079557600080fd5b506103c26107a43660046145d6565b611881565b3480156107b557600080fd5b506103c26107c4366004613eaa565b6118d6565b3480156107d557600080fd5b5061035b6107e436600461466d565b611985565b3480156107f557600080fd5b506103c261080436600461468a565b611996565b34801561081557600080fd5b506103c26108243660046146e3565b6119de565b34801561083557600080fd5b506103c26108443660046144b7565b6001600160a01b031660009081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00602052604090205490565b34801561088a57600080fd5b50610893611a7d565b60405161038e9796959493929190614797565b3480156108b257600080fd5b506103c26108c1366004614807565b611b29565b3480156108d257600080fd5b506108db611bdd565b60405165ffffffffffff909116815260200161038e565b3480156108fe57600080fd5b5060646103c2565b34801561091257600080fd5b506103c2610921366004614858565b611c4c565b34801561093257600080fd5b506103c2611c61565b34801561094757600080fd5b50610382610956366004613eaa565b50600090565b34801561096857600080fd5b506103c2610977366004613eaa565b6000908152600080516020614fd9833981519152602052604090206001015465ffffffffffff1690565b3480156109ad57600080fd5b506103c2611c9c565b3480156109c257600080fd5b506104756109d13660046148b0565b63bc197c8160e01b95945050505050565b3480156109ee57600080fd5b506103c26109fd366004613eaa565b611ca6565b61035b610a10366004614943565b611d07565b348015610a2157600080fd5b506103c2610a303660046141da565b611d7e565b348015610a4157600080fd5b50610382610a503660046144b7565b60016020526000908152604090205460ff1681565b348015610a7157600080fd5b506103c2611db8565b348015610a8657600080fd5b506040805180820190915260208082527f737570706f72743d627261766f2671756f72756d3d666f722c6162737461696e90820152610405565b348015610acc57600080fd5b5061035b610adb366004613eaa565b611dd2565b348015610aec57600080fd5b506103c27ff2aad550cf55f045cb27e9c559f9889fdfb6e6cdaa032301d6ea397784ae51d781565b348015610b2057600080fd5b5061035b610b2f366004614986565b611f9c565b348015610b4057600080fd5b506103c2610b4f3660046149ac565b611fad565b348015610b6057600080fd5b5061035b610b6f366004613eaa565b611fce565b348015610b8057600080fd5b50610475610b8f3660046149d8565b63f23a6e6160e01b95945050505050565b348015610bac57600080fd5b506103c2610bbb366004613eaa565b611fdf565b348015610bcc57600080fd5b50610432611fea565b61035b610be3366004613eaa565b612018565b60006001600160e01b031982166332a2ad4360e11b1480610c1957506001600160e01b03198216630271189760e51b145b80610c3457506301ffc9a760e01b6001600160e01b03198316145b92915050565b905090565b610c476121e2565b610c5081612229565b50565b6000805160206150998339815191528054606091908190610c7390614a40565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9f90614a40565b8015610cec5780601f10610cc157610100808354040283529160200191610cec565b820191906000526020600020905b815481529060010190602001808311610ccf57829003601f168201915b505050505091505090565b6000908152600080516020614fd983398151915260205260409020546001600160a01b031690565b600060008051602061509983398151915281610d3d87878787611d7e565b9050610d5281610d4d60046122e0565b612303565b506000604051634844252360e11b815260040160405180910390fd5b509695505050505050565b60608080600080600080516020615019833981519152600087815260018201602090815260408083208151815460a094810282018501909352608081018381529596509394909284928491840182828015610dfd57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ddf575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610e5557602002820191906000526020600020905b815481526020019060010190808311610e41575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015610f2f578382906000526020600020018054610ea290614a40565b80601f0160208091040260200160405190810160405280929190818152602001828054610ece90614a40565b8015610f1b5780601f10610ef057610100808354040283529160200191610f1b565b820191906000526020600020905b815481529060010190602001808311610efe57829003601f168201915b505050505081526020019060010190610e83565b505050508152602001600382015481525050905080606001516000801b03610f7257604051636ad0607560e01b8152600481018890526024015b60405180910390fd5b8051602082015160408301516060909301519199909850919650945092505050565b600080610fa386868686611d7e565b90506000610fb387878787612342565b90506000610fc083610cf7565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055509695505050505050565b6000908152600080516020614fd98339815191526020526040902054600160a01b900465ffffffffffff1690565b60006060808083806000805160206150198339815191529050600081600001888154811061104e5761104e614a7a565b9060005260206000200154905060008060008061106a85610d79565b979f929e50909c509a50949850939650505050505050565b6000610c3a600080516020614ff98339815191525465ffffffffffff1690565b6000818152600080516020614fd9833981519152602052604081208054600080516020615099833981519152919060ff600160f01b8204811691600160f81b90041681156110f65750600795945050505050565b80156111085750600295945050505050565b600061111387610ff0565b90508060000361113957604051636ad0607560e01b815260048101889052602401610f69565b6000611143611bdd565b65ffffffffffff16905080821061116257506000979650505050505050565b600061116d89611ca6565b90508181106111855750600198975050505050505050565b61118e89612481565b15806111bb5750600089815260008051602061507983398151915260205260409020805460019091015411155b156111cf5750600398975050505050505050565b6000898152600080516020614fd9833981519152602052604090206001015465ffffffffffff1660000361120c5750600498975050505050505050565b50600598975050505050505050565b60008181527f7fd223d3380145bd26132714391e777c488a0df7ac2dd4b66419d8549fb3a601602090815260409182902080548351818402810184019094528084526000805160206150198339815191529391926113e5929184918301828280156112af57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611291575b50505050508260010180548060200260200160405190810160405280929190818152602001828054801561130257602002820191906000526020600020905b8154815260200190600101908083116112ee575b505050505083600201805480602002602001604051908101604052809291908181526020016000905b828210156113d757838290600052602060002001805461134a90614a40565b80601f016020809104026020016040519081016040528092919081815260200182805461137690614a40565b80156113c35780601f10611398576101008083540402835291602001916113c3565b820191906000526020600020905b8154815290600101906020018083116113a657829003601f168201915b50505050508152602001906001019061132b565b5050505084600301546113eb565b50505050565b6000806113fa86868686611d7e565b905061140a81610d4d60006122e0565b5061141481610cf7565b6001600160a01b0316336001600160a01b0316146114475760405163233d98e360e01b8152336004820152602401610f69565b611453868686866124c8565b9695505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156114a25750825b90506000826001600160401b031660011480156114be5750303b155b9050811580156114cc575080155b156114ea5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561151457845460ff60401b1916600160401b1785555b61153e6040518060400160405280600981526020016811dbdd995c9b985d5d60ba1b81525061258a565b61155062015180621baf8060006125c2565b6115586125da565b611561876125e4565b61156b60046125f5565b6001600160a01b0386166115925760405163822d9aff60e01b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b03881617905583156115f357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6060611606611fea565b6001600160a01b0316634bf5d7e96040518163ffffffff1660e01b8152600401600060405180830381865afa92505050801561166457506040513d6000823e601f3d908101601f191682016040526116619190810190614a90565b60015b6116a0575060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b919050565b60008054604051634b95309760e01b81523360048201526001600160a01b0390911690634b95309790602401602060405180830381865afa1580156116ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117129190614afd565b61172f5760405163421e68c960e11b815260040160405180910390fd5b6117398383612606565b9392505050565b600080611805876117ff7f3e83946653575f9a39005e1545185629e92736b7528ab20ca3816f315424a8118c8c8c6117778e612627565b8d8d604051611787929190614b1f565b60405180910390208c805190602001206040516020016117e49796959493929190968752602087019590955260ff9390931660408601526001600160a01b03919091166060850152608084015260a083015260c082015260e00190565b60405160208183030381529060405280519060200120612669565b85612696565b905080611830576040516394ab6c0760e01b81526001600160a01b0388166004820152602401610f69565b61187489888a89898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b92506126ee915050565b9998505050505050505050565b6000803390506118cb87828888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92506126ee915050565b979650505050505050565b7fe770710421fd2cad75ad828c61aa98f2d77d423a440b67872d0f65554148e000805460009190828261190a600184614b45565b8154811061191a5761191a614a7a565b6000918252602090912001805490915065ffffffffffff811690600160301b90046001600160d01b031686821161195e576001600160d01b03169695505050505050565b61197161196a886127cb565b8690612802565b6001600160d01b0316979650505050505050565b61198d6121e2565b610c50816128b7565b60008033905061145386828787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061293b92505050565b60008054604051634b95309760e01b81523360048201526001600160a01b0390911690634b95309790602401602060405180830381865afa158015611a27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4b9190614afd565b611a685760405163421e68c960e11b815260040160405180910390fd5b611a748585858561295e565b95945050505050565b600060608082808083816000805160206150398339815191528054909150158015611aaa57506001810154155b611aee5760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606401610f69565b611af6612a1b565b611afe612a5a565b60408051600080825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b600080611b97846117ff7ff2aad550cf55f045cb27e9c559f9889fdfb6e6cdaa032301d6ea397784ae51d7898989611b608b612627565b60408051602081019690965285019390935260ff90911660608401526001600160a01b0316608083015260a082015260c0016117e4565b905080611bc2576040516394ab6c0760e01b81526001600160a01b0385166004820152602401610f69565b6114538685876040518060200160405280600081525061293b565b6000611be7611fea565b6001600160a01b03166391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611c40575060408051601f3d908101601f19168201909252611c3d91810190614b58565b60015b6116a057610c3a612a99565b6000611c59848484612aa4565b949350505050565b60007fe770710421fd2cad75ad828c61aa98f2d77d423a440b67872d0f65554148e000611c8d81612b21565b6001600160d01b031691505090565b6000610c3a612b5a565b6000818152600080516020614fd9833981519152602052604081205460008051602061509983398151915290611cf890600160d01b810463ffffffff1690600160a01b900465ffffffffffff16614b75565b65ffffffffffff169392505050565b611d0f6121e2565b600080856001600160a01b0316858585604051611d2d929190614b1f565b60006040518083038185875af1925050503d8060008114611d6a576040519150601f19603f3d011682016040523d82523d6000602084013e611d6f565b606091505b50915091506115f38282612b71565b600084848484604051602001611d979493929190614339565b60408051601f19818403018152919052805160209091012095945050505050565b6000806000805160206150198339815191525b5492915050565b60008181527f7fd223d3380145bd26132714391e777c488a0df7ac2dd4b66419d8549fb3a601602090815260409182902080548351818402810184019094528084526000805160206150198339815191529391926113e592918491830182828015611e6657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611e48575b505050505082600101805480602002602001604051908101604052809291908181526020018280548015611eb957602002820191906000526020600020905b815481526020019060010190808311611ea5575b505050505083600201805480602002602001604051908101604052809291908181526020016000905b82821015611f8e578382906000526020600020018054611f0190614a40565b80601f0160208091040260200160405190810160405280929190818152602001828054611f2d90614a40565b8015611f7a5780601f10611f4f57610100808354040283529160200191611f7a565b820191906000526020600020905b815481529060010190602001808311611f5d57829003601f168201915b505050505081526020019060010190611ee2565b505050508460030154610d1f565b611fa46121e2565b610c5081612b8d565b60006117398383611fc960408051602081019091526000815290565b612aa4565b611fd66121e2565b610c5081612c3d565b6000610c3482612c8b565b7f3ba4977254e415696610a40ebf2258dbfa0ec6a2ff64e84bfe715ff16977cc00546001600160a01b031690565b60008181527f7fd223d3380145bd26132714391e777c488a0df7ac2dd4b66419d8549fb3a601602090815260409182902080548351818402810184019094528084526000805160206150198339815191529391926113e5929184918301828280156120ac57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161208e575b5050505050826001018054806020026020016040519081016040528092919081815260200182805480156120ff57602002820191906000526020600020905b8154815260200190600101908083116120eb575b505050505083600201805480602002602001604051908101604052809291908181526020016000905b828210156121d457838290600052602060002001805461214790614a40565b80601f016020809104026020016040519081016040528092919081815260200182805461217390614a40565b80156121c05780601f10612195576101008083540402835291602001916121c0565b820191906000526020600020905b8154815290600101906020018083116121a357829003601f168201915b505050505081526020019060010190612128565b505050508460030154610f94565b600080516020615099833981519152303314610c50576040516347096e4760e01b8152336004820152602401610f69565b8061222083600201612d22565b03612213575050565b7fe770710421fd2cad75ad828c61aa98f2d77d423a440b67872d0f65554148e0006064808311156122775760405163243e544560e01b81526004810184905260248101829052604401610f69565b6000612281611c61565b905061229f61228e611bdd565b61229786612da0565b859190612dd4565b505060408051828152602081018690527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a150505050565b60008160078111156122f4576122f46143d6565b600160ff919091161b92915050565b60008061230f846110a2565b905060008361231d836122e0565b1603611739578381846040516331b75e4d60e01b8152600401610f6993929190614b9b565b60006000805160206150998339815191528161236087878787611d7e565b90506123808161237060056122e0565b61237a60046122e0565b17612303565b5060008181526001830160205260409020805460ff60f01b1916600160f01b179055306123aa3090565b6001600160a01b0316146124365760005b875181101561243457306001600160a01b03168882815181106123e0576123e0614a7a565b60200260200101516001600160a01b03160361242c5761242c86828151811061240b5761240b614a7a565b60200260200101518051906020012084600201612def90919063ffffffff16565b6001016123bb565b505b6124438188888888612e60565b6040518181527f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f906020015b60405180910390a19695505050505050565b6000818152600080516020615079833981519152602081905260408220600281015460018201546124b29190614bbd565b6124be610bbb86610ff0565b1115949350505050565b6000600080516020615099833981519152816124e687878787611d7e565b9050612534816124f660076122e0565b61250060066122e0565b61250a60026122e0565b6001612517600782614bd0565b612522906002614ccd565b61252c9190614b45565b181818612303565b5060008181526001830160205260409081902080546001600160f81b0316600160f81b179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c9061246f9083815260200190565b612592612f3a565b6125b9816125b46040805180820190915260018152603160f81b602082015290565b612f83565b610c5081612fe4565b6125ca612f3a565b6125d5838383613006565b505050565b6125e2612f3a565b565b6125ec612f3a565b610c5081613029565b6125fd612f3a565b610c5081613072565b600080339050611c598482856040518060200160405280600081525061293b565b6001600160a01b031660009081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006020526040902080546001810190915590565b6000610c3461267661307a565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060006126a58585613084565b50909250905060008160038111156126bf576126bf6143d6565b1480156126dd5750856001600160a01b0316826001600160a01b0316145b8061145357506114538686866130d1565b60006126fe86610d4d60016122e0565b5060006127148661270e89610ff0565b85612aa4565b905061272387878784876131ac565b825160000361277857856001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda48887848860405161276b9493929190614cdc565b60405180910390a2611453565b856001600160a01b03167fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb871288878488886040516127b9959493929190614d04565b60405180910390a29695505050505050565b600065ffffffffffff8211156127fe576040516306dfcc6560e41b81526030600482015260248101839052604401610f69565b5090565b81546000908181600581111561286157600061281d846132b5565b6128279085614b45565b60008881526020902090915081015465ffffffffffff90811690871610156128515780915061285f565b61285c816001614bbd565b92505b505b600061286f8787858561339d565b905080156128aa5761289487612886600184614b45565b600091825260209091200190565b54600160301b90046001600160d01b03166118cb565b6000979650505050505050565b600080516020614ff9833981519152546040805165ffffffffffff928316815291831660208301528051600080516020615059833981519152927fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a9392908290030190a1600101805465ffffffffffff191665ffffffffffff92909216919091179055565b6000611a748585858561295960408051602081019091526000815290565b6126ee565b60003361296b81846133ff565b6129935760405163d9b3955760e01b81526001600160a01b0382166004820152602401610f69565b60006129ba8260016129a3611bdd565b6129ad9190614d3e565b65ffffffffffff16611fad565b905060006129c6611c9c565b905080821015612a0257604051636121770b60e11b81526001600160a01b03841660048201526024810183905260448101829052606401610f69565b612a0f88888888876134ea565b98975050505050505050565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d102805460609160008051602061503983398151915291610c7390614a40565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d103805460609160008051602061503983398151915291610c7390614a40565b6000610c3a436127cb565b6000612aae611fea565b604051630748d63560e31b81526001600160a01b038681166004830152602482018690529190911690633a46b1a890604401602060405180830381865afa158015612afd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c599190614d5d565b80546000908015612b5157612b3b83612886600184614b45565b54600160301b90046001600160d01b0316611739565b60009392505050565b600080600080516020615059833981519152611dcb565b606082612b8657612b81826134f9565b610c34565b5080610c34565b60008051602061505983398151915263ffffffff8216600003612bc65760405163f1cfbf0560e01b815260006004820152602401610f69565b60018101546040805163ffffffff600160301b9093048316815291841660208301527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a1600101805463ffffffff909216600160301b0269ffffffff00000000000019909216919091179055565b6000805160206150598339815191528054604080519182526020820184905280517fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc054619281900390910190a155565b60006064612c98836118d6565b612ca0611fea565b6001600160a01b0316638e539e8c856040518263ffffffff1660e01b8152600401612ccd91815260200190565b602060405180830381865afa158015612cea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d0e9190614d5d565b612d189190614d76565b610c349190614da3565b80546000906001600160801b0380821691600160801b9004168103612d5a576040516375e52f4f60e01b815260040160405180910390fd5b6001600160801b038181166000908152600185810160205260408220805492905585546fffffffffffffffffffffffffffffffff19169301909116919091179092555090565b60006001600160d01b038211156127fe576040516306dfcc6560e41b815260d0600482015260248101839052604401610f69565b600080612de2858585613522565b915091505b935093915050565b81546001600160801b03600160801b820481169181166001830190911603612e2a57604051638acb5f2760e01b815260040160405180910390fd5b6001600160801b03808216600090815260018086016020526040909120939093558354919092018216600160801b029116179055565b60005b8451811015612f3257600080868381518110612e8157612e81614a7a565b60200260200101516001600160a01b0316868481518110612ea457612ea4614a7a565b6020026020010151868581518110612ebe57612ebe614a7a565b6020026020010151604051612ed39190614dc5565b60006040518083038185875af1925050503d8060008114612f10576040519150601f19603f3d011682016040523d82523d6000602084013e612f15565b606091505b5091509150612f248282612b71565b505050806001019050612e63565b505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166125e257604051631afcd79f60e31b815260040160405180910390fd5b612f8b612f3a565b6000805160206150398339815191527fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d102612fc58482614e29565b5060038101612fd48382614e29565b5060008082556001909101555050565b612fec612f3a565b600080516020615099833981519152806125d58382614e29565b61300e612f3a565b613017836128b7565b61302082612b8d565b6125d581612c3d565b613031612f3a565b7f3ba4977254e415696610a40ebf2258dbfa0ec6a2ff64e84bfe715ff16977cc0080546001600160a01b0319166001600160a01b0392909216919091179055565b610c47612f3a565b6000610c3a61369c565b600080600083516041036130be5760208401516040850151606086015160001a6130b088828585613710565b9550955095505050506130ca565b50508151600091506002905b9250925092565b6000806000856001600160a01b031685856040516024016130f3929190614ee8565b60408051601f198184030181529181526020820180516001600160e01b0316630b135d3f60e11b179052516131289190614dc5565b600060405180830381855afa9150503d8060008114613163576040519150601f19603f3d011682016040523d82523d6000602084013e613168565b606091505b509150915081801561317c57506020815110155b801561145357508051630b135d3f60e11b906131a19083016020908101908401614d5d565b149695505050505050565b6000858152600080516020615079833981519152602081815260408084206001600160a01b0389168552600381019092529092205490919060ff1615613210576040516371c6af4960e01b81526001600160a01b0387166004820152602401610f69565b6001600160a01b03861660009081526003820160205260409020805460ff1916600117905560ff851661325c57838160000160008282546132519190614bbd565b909155506115f39050565b60001960ff86160161327c57838160010160008282546132519190614bbd565b60011960ff86160161329c57838160020160008282546132519190614bbd565b6040516303599be160e11b815260040160405180910390fd5b6000816000036132c757506000919050565b600060016132d4846137df565b901c6001901b905060018184816132ed576132ed614d8d565b048201901c9050600181848161330557613305614d8d565b048201901c9050600181848161331d5761331d614d8d565b048201901c9050600181848161333557613335614d8d565b048201901c9050600181848161334d5761334d614d8d565b048201901c9050600181848161336557613365614d8d565b048201901c9050600181848161337d5761337d614d8d565b048201901c90506117398182858161339757613397614d8d565b04613873565b60005b818310156133f75760006133b48484613889565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff1611156133e3578092506133f1565b6133ee816001614bbd565b93505b506133a0565b509392505050565b80516000906034811015613417576001915050610c34565b82810160131901516001600160a01b031981166b046e0e4dee0dee6cae47a60f60a31b1461344a57600192505050610c34565b600080613458602885614b45565b90505b838110156134c95760008061348f88848151811061347b5761347b614a7a565b01602001516001600160f81b0319166138a4565b91509150816134a75760019650505050505050610c34565b8060ff166004856001600160a01b0316901b179350505080600101905061345b565b50856001600160a01b0316816001600160a01b031614935050505092915050565b60006114538686868686613936565b8051156135095780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b82546000908190801561364157600061354087612886600185614b45565b60408051808201909152905465ffffffffffff808216808452600160301b9092046001600160d01b03166020840152919250908716101561359457604051632520601d60e01b815260040160405180910390fd5b805165ffffffffffff8088169116036135e057846135b788612886600186614b45565b80546001600160d01b0392909216600160301b0265ffffffffffff909216919091179055613631565b6040805180820190915265ffffffffffff80881682526001600160d01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160301b029216919091179101555b602001519250839150612de79050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b029190931617920191909155905081612de7565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6136c7613a03565b6136cf613a6d565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561374b57506000915060039050826137d5565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561379f573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166137cb575060009250600191508290506137d5565b9250600091508190505b9450945094915050565b600080608083901c156137f457608092831c92015b604083901c1561380657604092831c92015b602083901c1561381857602092831c92015b601083901c1561382a57601092831c92015b600883901c1561383c57600892831c92015b600483901c1561384e57600492831c92015b600283901c1561386057600292831c92015b600183901c15610c345760010192915050565b60008183106138825781611739565b5090919050565b60006138986002848418614da3565b61173990848416614bbd565b60008060f883901c602f811180156138bf5750603a8160ff16105b156138d457600194602f199091019350915050565b8060ff1660401080156138ea575060478160ff16105b156138ff576001946036199091019350915050565b8060ff166060108015613915575060678160ff16105b1561392a576001946056199091019350915050565b50600093849350915050565b6000600080516020615019833981519152816139558888888888613ab1565b82546001818101855560008581526020808220909301849055604080516080810182528d81528085018d90528082018c90528a518b86012060608201528583529287018452902081518051949550919390926139b5928492910190613d26565b5060208281015180516139ce9260018501920190613d87565b50604082015180516139ea916002840191602090910190613dc2565b5060609190910151600390910155979650505050505050565b600060008051602061503983398151915281613a1d612a1b565b805190915015613a3557805160209091012092915050565b81548015613a44579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b600060008051602061503983398151915281613a87612a5a565b805190915015613a9f57805160209091012092915050565b60018201548015613a44579392505050565b6000806000805160206150998339815191529050613ad88787878780519060200120611d7e565b915085518751141580613aed57508451875114155b80613af757508651155b15613b2c57865185518751604051630447b05d60e41b8152600481019390935260248301919091526044820152606401610f69565b6000828152600182016020526040902054600160a01b900465ffffffffffff1615613b795781613b5b836110a2565b6040516331b75e4d60e01b8152610f69929190600090600401614b9b565b6000613b83611082565b613b8b611bdd565b65ffffffffffff16613b9d9190614bbd565b90506000613bc5600080516020614ff98339815191525463ffffffff600160301b9091041690565b6000858152600185016020526040902080546001600160a01b0319166001600160a01b038816178155909150613bfa836127cb565b815465ffffffffffff91909116600160a01b0265ffffffffffff60a01b19909116178155613c2782613cf5565b815463ffffffff91909116600160d01b0263ffffffff60d01b1990911617815589517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e090869088908d908d906001600160401b03811115613c8a57613c8a613f3b565b604051908082528060200260200182016040528015613cbd57816020015b6060815260200190600190039081613ca85790505b508d89613cca8a82614bbd565b8f604051613ce099989796959493929190614f01565b60405180910390a15050505095945050505050565b600063ffffffff8211156127fe576040516306dfcc6560e41b81526020600482015260248101839052604401610f69565b828054828255906000526020600020908101928215613d7b579160200282015b82811115613d7b57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190613d46565b506127fe929150613e14565b828054828255906000526020600020908101928215613d7b579160200282015b82811115613d7b578251825591602001919060010190613da7565b828054828255906000526020600020908101928215613e08579160200282015b82811115613e085782518290613df89082614e29565b5091602001919060010190613de2565b506127fe929150613e29565b5b808211156127fe5760008155600101613e15565b808211156127fe576000613e3d8282613e46565b50600101613e29565b508054613e5290614a40565b6000825580601f10613e62575050565b601f016020900490600052602060002090810190610c509190613e14565b600060208284031215613e9257600080fd5b81356001600160e01b03198116811461173957600080fd5b600060208284031215613ebc57600080fd5b5035919050565b60005b83811015613ede578181015183820152602001613ec6565b50506000910152565b60008151808452613eff816020860160208601613ec3565b601f01601f19169290920160200192915050565b6020815260006117396020830184613ee7565b6001600160a01b0381168114610c5057600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613f7957613f79613f3b565b604052919050565b60006001600160401b03821115613f9a57613f9a613f3b565b50601f01601f191660200190565b6000613fbb613fb684613f81565b613f51565b9050828152838383011115613fcf57600080fd5b828260208301376000602084830101529392505050565b600082601f830112613ff757600080fd5b61173983833560208501613fa8565b6000806000806080858703121561401c57600080fd5b843561402781613f26565b9350602085013561403781613f26565b92506040850135915060608501356001600160401b0381111561405957600080fd5b61406587828801613fe6565b91505092959194509250565b60006001600160401b0382111561408a5761408a613f3b565b5060051b60200190565b600082601f8301126140a557600080fd5b813560206140b5613fb683614071565b8083825260208201915060208460051b8701019350868411156140d757600080fd5b602086015b84811015610d6e5780356140ef81613f26565b83529183019183016140dc565b600082601f83011261410d57600080fd5b8135602061411d613fb683614071565b8083825260208201915060208460051b87010193508684111561413f57600080fd5b602086015b84811015610d6e5780358352918301918301614144565b600082601f83011261416c57600080fd5b8135602061417c613fb683614071565b82815260059290921b8401810191818101908684111561419b57600080fd5b8286015b84811015610d6e5780356001600160401b038111156141be5760008081fd5b6141cc8986838b0101613fe6565b84525091830191830161419f565b600080600080608085870312156141f057600080fd5b84356001600160401b038082111561420757600080fd5b61421388838901614094565b9550602087013591508082111561422957600080fd5b614235888389016140fc565b9450604087013591508082111561424b57600080fd5b506142588782880161415b565b949793965093946060013593505050565b60008151808452602080850194506020840160005b838110156142a35781516001600160a01b03168752958201959082019060010161427e565b509495945050505050565b60008151808452602080850194506020840160005b838110156142a3578151875295820195908201906001016142c3565b60008282518085526020808601955060208260051b8401016020860160005b8481101561432c57601f1986840301895261431a838351613ee7565b988401989250908301906001016142fe565b5090979650505050505050565b60808152600061434c6080830187614269565b828103602084015261435e81876142ae565b9050828103604084015261437281866142df565b91505082606083015295945050505050565b85815260a06020820152600061439d60a0830187614269565b82810360408401526143af81876142ae565b905082810360608401526143c381866142df565b9150508260808301529695505050505050565b634e487b7160e01b600052602160045260246000fd5b6008811061440a57634e487b7160e01b600052602160045260246000fd5b9052565b60208101610c3482846143ec565b6000806040838503121561442f57600080fd5b82359150602083013561444181613f26565b809150509250929050565b6000806040838503121561445f57600080fd5b823561446a81613f26565b9150602083013561444181613f26565b803560ff811681146116a057600080fd5b6000806040838503121561449e57600080fd5b823591506144ae6020840161447a565b90509250929050565b6000602082840312156144c957600080fd5b813561173981613f26565b60008083601f8401126144e657600080fd5b5081356001600160401b038111156144fd57600080fd5b60208301915083602082850101111561451557600080fd5b9250929050565b600080600080600080600060c0888a03121561453757600080fd5b873596506145476020890161447a565b9550604088013561455781613f26565b945060608801356001600160401b038082111561457357600080fd5b61457f8b838c016144d4565b909650945060808a013591508082111561459857600080fd5b6145a48b838c01613fe6565b935060a08a01359150808211156145ba57600080fd5b506145c78a828b01613fe6565b91505092959891949750929550565b6000806000806000608086880312156145ee57600080fd5b853594506145fe6020870161447a565b935060408601356001600160401b038082111561461a57600080fd5b61462689838a016144d4565b9095509350606088013591508082111561463f57600080fd5b5061464c88828901613fe6565b9150509295509295909350565b65ffffffffffff81168114610c5057600080fd5b60006020828403121561467f57600080fd5b813561173981614659565b600080600080606085870312156146a057600080fd5b843593506146b06020860161447a565b925060408501356001600160401b038111156146cb57600080fd5b6146d7878288016144d4565b95989497509550505050565b600080600080608085870312156146f957600080fd5b84356001600160401b038082111561471057600080fd5b61471c88838901614094565b9550602087013591508082111561473257600080fd5b61473e888389016140fc565b9450604087013591508082111561475457600080fd5b6147608883890161415b565b9350606087013591508082111561477657600080fd5b508501601f8101871361478857600080fd5b61406587823560208401613fa8565b60ff60f81b8816815260e0602082015260006147b660e0830189613ee7565b82810360408401526147c88189613ee7565b606084018890526001600160a01b038716608085015260a0840186905283810360c085015290506147f981856142ae565b9a9950505050505050505050565b6000806000806080858703121561481d57600080fd5b8435935061482d6020860161447a565b9250604085013561483d81613f26565b915060608501356001600160401b0381111561405957600080fd5b60008060006060848603121561486d57600080fd5b833561487881613f26565b92506020840135915060408401356001600160401b0381111561489a57600080fd5b6148a686828701613fe6565b9150509250925092565b600080600080600060a086880312156148c857600080fd5b85356148d381613f26565b945060208601356148e381613f26565b935060408601356001600160401b03808211156148ff57600080fd5b61490b89838a016140fc565b9450606088013591508082111561492157600080fd5b61492d89838a016140fc565b9350608088013591508082111561463f57600080fd5b6000806000806060858703121561495957600080fd5b843561496481613f26565b93506020850135925060408501356001600160401b038111156146cb57600080fd5b60006020828403121561499857600080fd5b813563ffffffff8116811461173957600080fd5b600080604083850312156149bf57600080fd5b82356149ca81613f26565b946020939093013593505050565b600080600080600060a086880312156149f057600080fd5b85356149fb81613f26565b94506020860135614a0b81613f26565b9350604086013592506060860135915060808601356001600160401b03811115614a3457600080fd5b61464c88828901613fe6565b600181811c90821680614a5457607f821691505b602082108103614a7457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215614aa257600080fd5b81516001600160401b03811115614ab857600080fd5b8201601f81018413614ac957600080fd5b8051614ad7613fb682613f81565b818152856020838501011115614aec57600080fd5b611a74826020830160208601613ec3565b600060208284031215614b0f57600080fd5b8151801515811461173957600080fd5b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610c3457610c34614b2f565b600060208284031215614b6a57600080fd5b815161173981614659565b65ffffffffffff818116838216019080821115614b9457614b94614b2f565b5092915050565b83815260608101614baf60208301856143ec565b826040830152949350505050565b80820180821115610c3457610c34614b2f565b60ff8181168382160190811115610c3457610c34614b2f565b600181815b80851115614c24578160001904821115614c0a57614c0a614b2f565b80851615614c1757918102915b93841c9390800290614bee565b509250929050565b600082614c3b57506001610c34565b81614c4857506000610c34565b8160018114614c5e5760028114614c6857614c84565b6001915050610c34565b60ff841115614c7957614c79614b2f565b50506001821b610c34565b5060208310610133831016604e8410600b8410161715614ca7575081810a610c34565b614cb18383614be9565b8060001904821115614cc557614cc5614b2f565b029392505050565b600061173960ff841683614c2c565b84815260ff841660208201528260408201526080606082015260006114536080830184613ee7565b85815260ff8516602082015283604082015260a060608201526000614d2c60a0830185613ee7565b8281036080840152612a0f8185613ee7565b65ffffffffffff828116828216039080821115614b9457614b94614b2f565b600060208284031215614d6f57600080fd5b5051919050565b8082028115828204841417610c3457610c34614b2f565b634e487b7160e01b600052601260045260246000fd5b600082614dc057634e487b7160e01b600052601260045260246000fd5b500490565b60008251614dd7818460208701613ec3565b9190910192915050565b601f8211156125d5576000816000526020600020601f850160051c81016020861015614e0a5750805b601f850160051c820191505b81811015612f3257828155600101614e16565b81516001600160401b03811115614e4257614e42613f3b565b614e5681614e508454614a40565b84614de1565b602080601f831160018114614e8b5760008415614e735750858301515b600019600386901b1c1916600185901b178555612f32565b600085815260208120601f198616915b82811015614eba57888601518255948401946001909101908401614e9b565b5085821015614ed85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b828152604060208201526000611c596040830184613ee7565b60006101208b8352602060018060a01b038c1681850152816040850152614f2a8285018c614269565b91508382036060850152614f3e828b6142ae565b915083820360808501528189518084528284019150828160051b850101838c0160005b83811015614f8f57601f19878403018552614f7d838351613ee7565b94860194925090850190600101614f61565b505086810360a0880152614fa3818c6142df565b9450505050508560c08401528460e0840152828103610100840152614fc88185613ee7565b9c9b50505050505050505050505056fe7c712897014dbe49c045ef1299aa2d5f9e67e48eea4403efa21f1e0f3ac0cb0100d7616c8fe29c6c2fbe1d0c5bc8f2faa4c35b43746e70b24b4d532752affd017fd223d3380145bd26132714391e777c488a0df7ac2dd4b66419d8549fb3a600a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10000d7616c8fe29c6c2fbe1d0c5bc8f2faa4c35b43746e70b24b4d532752affd00a1cefa0f43667ef127a258e673c94202a79b656e62899531c4376d87a7f398007c712897014dbe49c045ef1299aa2d5f9e67e48eea4403efa21f1e0f3ac0cb00a2646970667358221220630ab1438d20753a9c0cc6ca1e176c9ca9fdcaa61f8e588a27c4ea961ca13f6a64736f6c63430008180033", + "nonce": "0x1", + "chainId": "0x397" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x122466d4fa35b1ea9067869169e49ad1f57597b520d7cdea5a1c84b0bbb5edcc", + "transactionType": "CREATE", + "contractName": "ProxyAdmin", + "contractAddress": "0x847a6c5a32f5ed69c43a82f46a84df75f9b9bd2a", + "function": null, + "arguments": [ + "0xfe63Ba8189215E5C975e73643b96066B6aD41A45" + ], + "transaction": { + "from": "0x12b2434a1022d5787bf06056f2885fe35de62bf8", + "gas": "0x62827", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b5060405161052438038061052483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610427806100fd6000396000f3fe60806040526004361061004a5760003560e01c8063715018a61461004f5780638da5cb5b146100665780639623609d14610093578063ad3cb1cc146100a6578063f2fde38b146100e4575b600080fd5b34801561005b57600080fd5b50610064610104565b005b34801561007257600080fd5b506000546040516001600160a01b0390911681526020015b60405180910390f35b6100646100a1366004610272565b610118565b3480156100b257600080fd5b506100d7604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161008a919061038e565b3480156100f057600080fd5b506100646100ff3660046103a8565b610187565b61010c6101ca565b61011660006101f7565b565b6101206101ca565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061015090869086906004016103c5565b6000604051808303818588803b15801561016957600080fd5b505af115801561017d573d6000803e3d6000fd5b5050505050505050565b61018f6101ca565b6001600160a01b0381166101be57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101c7816101f7565b50565b6000546001600160a01b031633146101165760405163118cdaa760e01b81523360048201526024016101b5565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101c757600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561028757600080fd5b833561029281610247565b925060208401356102a281610247565b9150604084013567ffffffffffffffff808211156102bf57600080fd5b818601915086601f8301126102d357600080fd5b8135818111156102e5576102e561025c565b604051601f8201601f19908116603f0116810190838211818310171561030d5761030d61025c565b8160405282815289602084870101111561032657600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000815180845260005b8181101561036e57602081850181015186830182015201610352565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006103a16020830184610348565b9392505050565b6000602082840312156103ba57600080fd5b81356103a181610247565b6001600160a01b03831681526040602082018190526000906103e990830184610348565b94935050505056fea26469706673582212205a55efe2b5849000042b393b41318a12381beacd370f9a0a6c351ab0c878330864736f6c63430008180033000000000000000000000000fe63ba8189215e5c975e73643b96066b6ad41a45", + "nonce": "0x2", + "chainId": "0x397" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xe854fc7079a7604ec5f14f9738cd10d8f3336f5bcef9a5eb2a958dacf528ac16", + "transactionType": "CREATE", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0xda3420ca7b915c607313d332d038ceddcd810973", + "function": null, + "arguments": [ + "0x592BedE03180b23DC0d8763666B37103F30191ac", + "0x847a6c5a32F5Ed69c43a82f46a84Df75f9B9Bd2A", + "0x485cc9550000000000000000000000004200000000000000000000000000000000000042000000000000000000000000e95f2fcf682712caf5fb44c9608d33dbac6b536b" + ], + "transaction": { + "from": "0x12b2434a1022d5787bf06056f2885fe35de62bf8", + "gas": "0x119535", + "value": "0x0", + "input": "0x60a060405260405162000eb138038062000eb18339810160408190526200002691620003cd565b82816200003482826200009c565b505081604051620000459062000366565b6001600160a01b039091168152602001604051809103906000f08015801562000072573d6000803e3d6000fd5b506001600160a01b0316608052620000936200008d60805190565b62000102565b505050620004cb565b620000a78262000174565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115620000f457620000ef8282620001f4565b505050565b620000fe62000271565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200014460008051602062000e91833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a1620001718162000293565b50565b806001600160a01b03163b600003620001b057604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080846001600160a01b031684604051620002139190620004ad565b600060405180830381855af49150503d806000811462000250576040519150601f19603f3d011682016040523d82523d6000602084013e62000255565b606091505b50909250905062000268858383620002d6565b95945050505050565b3415620002915760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b038116620002bf57604051633173bdd160e11b815260006004820152602401620001a7565b8060008051602062000e91833981519152620001d3565b606082620002ef57620002e9826200033c565b62000335565b81511580156200030757506001600160a01b0384163b155b156200033257604051639996b31560e01b81526001600160a01b0385166004820152602401620001a7565b50805b9392505050565b8051156200034d5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b610524806200096d83390190565b80516001600160a01b03811681146200038c57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620003c4578181015183820152602001620003aa565b50506000910152565b600080600060608486031215620003e357600080fd5b620003ee8462000374565b9250620003fe6020850162000374565b60408501519092506001600160401b03808211156200041c57600080fd5b818601915086601f8301126200043157600080fd5b81518181111562000446576200044662000391565b604051601f8201601f19908116603f0116810190838211818310171562000471576200047162000391565b816040528281528960208487010111156200048b57600080fd5b6200049e836020830160208801620003a7565b80955050505050509250925092565b60008251620004c1818460208701620003a7565b9190910192915050565b608051610487620004e66000396000601001526104876000f3fe608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361007b576000356001600160e01b03191663278f794360e11b14610071576040516334ad5dbb60e21b815260040160405180910390fd5b610079610083565b565b6100796100b2565b6000806100933660048184610312565b8101906100a09190610352565b915091506100ae82826100c2565b5050565b6100796100bd61011d565b610155565b6100cb82610179565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101155761011082826101f5565b505050565b6100ae61026b565b60006101507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015610174573d6000f35b3d6000fd5b806001600160a01b03163b6000036101b457604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516102129190610422565b600060405180830381855af49150503d806000811461024d576040519150601f19603f3d011682016040523d82523d6000602084013e610252565b606091505b509150915061026285838361028a565b95945050505050565b34156100795760405163b398979f60e01b815260040160405180910390fd5b60608261029f5761029a826102e9565b6102e2565b81511580156102b657506001600160a01b0384163b155b156102df57604051639996b31560e01b81526001600160a01b03851660048201526024016101ab565b50805b9392505050565b8051156102f95780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6000808585111561032257600080fd5b8386111561032f57600080fd5b5050820193919092039150565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561036557600080fd5b82356001600160a01b038116811461037c57600080fd5b9150602083013567ffffffffffffffff8082111561039957600080fd5b818501915085601f8301126103ad57600080fd5b8135818111156103bf576103bf61033c565b604051601f8201601f19908116603f011681019083821181831017156103e7576103e761033c565b8160405282815288602084870101111561040057600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000825160005b818110156104435760208186018101518583015201610429565b50600092019182525091905056fea2646970667358221220a3a43e5c8ef142ab3aafd351b1d1ef47a145e224121c2768f0a6c1e57a46cf7364736f6c63430008180033608060405234801561001057600080fd5b5060405161052438038061052483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610427806100fd6000396000f3fe60806040526004361061004a5760003560e01c8063715018a61461004f5780638da5cb5b146100665780639623609d14610093578063ad3cb1cc146100a6578063f2fde38b146100e4575b600080fd5b34801561005b57600080fd5b50610064610104565b005b34801561007257600080fd5b506000546040516001600160a01b0390911681526020015b60405180910390f35b6100646100a1366004610272565b610118565b3480156100b257600080fd5b506100d7604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161008a919061038e565b3480156100f057600080fd5b506100646100ff3660046103a8565b610187565b61010c6101ca565b61011660006101f7565b565b6101206101ca565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061015090869086906004016103c5565b6000604051808303818588803b15801561016957600080fd5b505af115801561017d573d6000803e3d6000fd5b5050505050505050565b61018f6101ca565b6001600160a01b0381166101be57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101c7816101f7565b50565b6000546001600160a01b031633146101165760405163118cdaa760e01b81523360048201526024016101b5565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101c757600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561028757600080fd5b833561029281610247565b925060208401356102a281610247565b9150604084013567ffffffffffffffff808211156102bf57600080fd5b818601915086601f8301126102d357600080fd5b8135818111156102e5576102e561025c565b604051601f8201601f19908116603f0116810190838211818310171561030d5761030d61025c565b8160405282815289602084870101111561032657600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000815180845260005b8181101561036e57602081850181015186830182015201610352565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006103a16020830184610348565b9392505050565b6000602082840312156103ba57600080fd5b81356103a181610247565b6001600160a01b03831681526040602082018190526000906103e990830184610348565b94935050505056fea26469706673582212205a55efe2b5849000042b393b41318a12381beacd370f9a0a6c351ab0c878330864736f6c63430008180033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103000000000000000000000000592bede03180b23dc0d8763666b37103f30191ac000000000000000000000000847a6c5a32f5ed69c43a82f46a84df75f9b9bd2a00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044485cc9550000000000000000000000004200000000000000000000000000000000000042000000000000000000000000e95f2fcf682712caf5fb44c9608d33dbac6b536b00000000000000000000000000000000000000000000000000000000", + "nonce": "0x3", + "chainId": "0x397" + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "address": "0x8826d7bda7ea33d5bc0e3f05d2a239fa9863c773", + "initCode": "0x608060405234801561001057600080fd5b5060405161052438038061052483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610427806100fd6000396000f3fe60806040526004361061004a5760003560e01c8063715018a61461004f5780638da5cb5b146100665780639623609d14610093578063ad3cb1cc146100a6578063f2fde38b146100e4575b600080fd5b34801561005b57600080fd5b50610064610104565b005b34801561007257600080fd5b506000546040516001600160a01b0390911681526020015b60405180910390f35b6100646100a1366004610272565b610118565b3480156100b257600080fd5b506100d7604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161008a919061038e565b3480156100f057600080fd5b506100646100ff3660046103a8565b610187565b61010c6101ca565b61011660006101f7565b565b6101206101ca565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061015090869086906004016103c5565b6000604051808303818588803b15801561016957600080fd5b505af115801561017d573d6000803e3d6000fd5b5050505050505050565b61018f6101ca565b6001600160a01b0381166101be57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101c7816101f7565b50565b6000546001600160a01b031633146101165760405163118cdaa760e01b81523360048201526024016101b5565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101c757600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561028757600080fd5b833561029281610247565b925060208401356102a281610247565b9150604084013567ffffffffffffffff808211156102bf57600080fd5b818601915086601f8301126102d357600080fd5b8135818111156102e5576102e561025c565b604051601f8201601f19908116603f0116810190838211818310171561030d5761030d61025c565b8160405282815289602084870101111561032657600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000815180845260005b8181101561036e57602081850181015186830182015201610352565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006103a16020830184610348565b9392505050565b6000602082840312156103ba57600080fd5b81356103a181610247565b6001600160a01b03831681526040602082018190526000906103e990830184610348565b94935050505056fea26469706673582212205a55efe2b5849000042b393b41318a12381beacd370f9a0a6c351ab0c878330864736f6c63430008180033000000000000000000000000847a6c5a32f5ed69c43a82f46a84df75f9b9bd2a" + } + ], + "isFixedGasLimit": false + }, + { + "hash": "0xa5651424b9a93d58ee41f3eda0110b3230cc2696a6dd41773b4d5b8e1e1f7dbf", + "transactionType": "CREATE", + "contractName": null, + "contractAddress": "0xb3510615d958438b2a4accad2d0bdf782e333281", + "function": null, + "arguments": null, + "transaction": { + "from": "0x12b2434a1022d5787bf06056f2885fe35de62bf8", + "gas": "0x100419", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610e5c380380610e5c83398101604081905261002f91610295565b826001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61006781610229565b50600180556001600160a01b0382166100965760405160016269813d60e11b0319815260040160405180910390fd5b600280546001600160a01b03199081166001600160a01b039485161790915560038054821692841692909217909155600060048190556040805160e0810182528281526020808201848152928201848152606083018581526080840186815260a0850187815260c08601888152978052600590945293517f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc805490981698169790971790955591517f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bd5592517f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746be5592517f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bf5590517f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746c05590517f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746c155517f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746c2805460ff191660ff909216919091179055506102d8565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b038116811461029057600080fd5b919050565b6000806000606084860312156102aa57600080fd5b6102b384610279565b92506102c160208501610279565b91506102cf60408501610279565b90509250925092565b610b75806102e76000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063715018a611610066578063715018a61461017f5780638c590917146101895780638da5cb5b1461019c578063d12f3b87146101b7578063f2fde38b146101e257600080fd5b8063142a78c6146100985780631b55e338146101385780633dce2b461461015957806361a6381f1461016c575b600080fd5b6100f46100a63660046109ef565b600090815260056020819052604090912080546001820154600283015460038401546004850154600686015495909601546001600160a01b0390941696929591949093919260ff9091169190565b604080516001600160a01b0390981688526020880196909652948601939093526060850191909152608084015260a083015260c082015260e0015b60405180910390f35b61014b6101463660046109ef565b6101f5565b60405190815260200161012f565b61014b610167366004610a1f565b610446565b61014b61017a3660046109ef565b6105e7565b610187610791565b005b610187610197366004610a49565b6107a5565b6000546040516001600160a01b03909116815260200161012f565b61014b6101c53660046109ef565b600090815260066020908152604080832033845290915290205490565b6101876101f0366004610a6b565b61090a565b60006101ff610948565b600082815260056020819052604082209081015490919061022457816002015461022a565b81600501545b6102349042610aa3565b82549091506001600160a01b031633146102615760405163018d3ef960e31b815260040160405180910390fd5b816002015442101561028657604051637e3795db60e11b815260040160405180910390fd5b8160030154826004015410156102af576040516351992ba760e01b815260040160405180910390fd5b6006820154600460ff909116106102d957604051630ea99c6560e11b815260040160405180910390fd5b62278d008110156102fd57604051635ada9a9960e01b815260040160405180910390fd5b6000600483600401546103109190610ab6565b42600585015560068401805491925060019160009061033390849060ff16610ad8565b825460ff9182166101009390930a92830291909202199091161790555060035460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af11580156103a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103c59190610af1565b6104055760405162461bcd60e51b815260206004820152600c60248201526b10db185a5b4819985a5b195960a21b60448201526064015b60405180910390fd5b6040518190339087907fa4eb50103b0591feb0bc913f479d92af5eb7ea33e8c397b49bab52ce6af26cb590600090a49250505061044160018055565b919050565b600254604051635700b70360e01b81523360048201526000916001600160a01b031690635700b70390602401602060405180830381865afa15801561048f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b39190610af1565b6104d057604051630a1ea19360e11b815260040160405180910390fd5b600480549060006104e083610b13565b9091555042905060006104f682621baf80610b2c565b6040805160e0810182526001600160a01b038881168083526020808401888152848601878152606086018c815260006080880181815260a0890182815260c08a018381526004805485526005808a52948d90209b518c546001600160a01b0319169b169a909a178b55955160018b0155935160028a015591516003890155905187870155905190860155516006909401805460ff191660ff90951694909417909355905483518781529283018590529394508793909290917fee52793fa84ff32059ae4a1f92ce1c91296f469f952f33dcd4f02fe83322c4ce910160405180910390a4600454925050505b92915050565b60006105f1610948565b6000828152600560205260409020600281015442101561062457604051637e3795db60e11b815260040160405180910390fd5b806003015481600401541061064c57604051637432356d60e01b815260040160405180910390fd5b600083815260066020908152604080832033845290915281205490819003610686576040516233638960e31b815260040160405180910390fd5b600084815260066020908152604080832033808552925280832092909255600354915163a9059cbb60e01b81526004810191909152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af11580156106f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071a9190610af1565b6107565760405162461bcd60e51b815260206004820152600d60248201526c1499599d5b990819985a5b1959609a1b60448201526064016103fc565b6040518190859033907f2dc8e290002f06fc0085bbca9dfb8b415cf4d1178950c72ff9ee8f4d8878ee6690600090a491505061044160018055565b610799610972565b6107a3600061099f565b565b6000828152600560205260409020600281015442106107d657604051629f920f60e81b815260040160405180910390fd5b6003546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561082d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108519190610af1565b61088f5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016103fc565b818160040160008282546108a39190610b2c565b90915550506000838152600660209081526040808320338452909152812080548492906108d1908490610b2c565b90915550506040518290849033907f5dc1fe5ab986a852c4eda8e8bb94247d13307065c593fb83f1a09be27367938290600090a4505050565b610912610972565b6001600160a01b03811661093c57604051631e4fbdf760e01b8152600060048201526024016103fc565b6109458161099f565b50565b60026001540361096b57604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b6000546001600160a01b031633146107a35760405163118cdaa760e01b81523360048201526024016103fc565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215610a0157600080fd5b5035919050565b80356001600160a01b038116811461044157600080fd5b60008060408385031215610a3257600080fd5b610a3b83610a08565b946020939093013593505050565b60008060408385031215610a5c57600080fd5b50508035926020909101359150565b600060208284031215610a7d57600080fd5b610a8682610a08565b9392505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156105e1576105e1610a8d565b600082610ad357634e487b7160e01b600052601260045260246000fd5b500490565b60ff81811683821601908111156105e1576105e1610a8d565b600060208284031215610b0357600080fd5b81518015158114610a8657600080fd5b600060018201610b2557610b25610a8d565b5060010190565b808201808211156105e1576105e1610a8d56fea2646970667358221220737a46b05196089b3490c8f4b56d9341a44648598d3916cb00ff5d4e99467d4564736f6c6343000818003300000000000000000000000012b2434a1022d5787bf06056f2885fe35de62bf8000000000000000000000000da3420ca7b915c607313d332d038ceddcd8109730000000000000000000000004200000000000000000000000000000000000042", + "nonce": "0x4", + "chainId": "0x397" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x5917b", + "logs": [ + { + "address": "0xe95f2fcf682712caf5fb44c9608d33dbac6b536b", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x00000000000000000000000012b2434a1022d5787bf06056f2885fe35de62bf8" + ], + "data": "0x", + "blockHash": "0xe14cf89c975c8bec79d04879b1d9f876eb571dc44c17590c3b4359a490332af9", + "blockNumber": "0x10eccad", + "transactionHash": "0x8c9da969866fe94bb02a77d8ec941025567df5afced2828c964c1388abc85c40", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000080000000000000000000000000000020000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000001000000004000000000000000000000000000020000000000000000000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x8c9da969866fe94bb02a77d8ec941025567df5afced2828c964c1388abc85c40", + "transactionIndex": "0x0", + "blockHash": "0xe14cf89c975c8bec79d04879b1d9f876eb571dc44c17590c3b4359a490332af9", + "blockNumber": "0x10eccad", + "gasUsed": "0x5917b", + "effectiveGasPrice": "0x1", + "blobGasUsed": "0x0", + "from": "0x12b2434a1022d5787bf06056f2885fe35de62bf8", + "to": null, + "contractAddress": "0xe95f2fcf682712caf5fb44c9608d33dbac6b536b" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x457e65", + "logs": [ + { + "address": "0x592bede03180b23dc0d8763666b37103f30191ac", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x684462354d853c741ebafbea693aaf37ba5acfd67dfede928cc1c528364efbc4", + "blockNumber": "0x10eccae", + "transactionHash": "0xcb0682a06d565528c06e379918322c25f3dc43a55fa319de46b8a90f826e58fa", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xcb0682a06d565528c06e379918322c25f3dc43a55fa319de46b8a90f826e58fa", + "transactionIndex": "0x0", + "blockHash": "0x684462354d853c741ebafbea693aaf37ba5acfd67dfede928cc1c528364efbc4", + "blockNumber": "0x10eccae", + "gasUsed": "0x457e65", + "effectiveGasPrice": "0x1", + "blobGasUsed": "0x0", + "from": "0x12b2434a1022d5787bf06056f2885fe35de62bf8", + "to": null, + "contractAddress": "0x592bede03180b23dc0d8763666b37103f30191ac" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xc52d8", + "logs": [ + { + "address": "0x847a6c5a32f5ed69c43a82f46a84df75f9b9bd2a", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x00000000000000000000000012b2434a1022d5787bf06056f2885fe35de62bf8" + ], + "data": "0x", + "blockHash": "0xa07c96feafadd522796ebe9a9edf7a0ed22a56563c2bf96f73af0fca9fffb430", + "blockNumber": "0x10eccaf", + "transactionHash": "0xa5651424b9a93d58ee41f3eda0110b3230cc2696a6dd41773b4d5b8e1e1f7dbf", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000200000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000001000000000000000000000000000000000000020000000000000000000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000020000008000000010000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xa5651424b9a93d58ee41f3eda0110b3230cc2696a6dd41773b4d5b8e1e1f7dbf", + "transactionIndex": "0x0", + "blockHash": "0xa07c96feafadd522796ebe9a9edf7a0ed22a56563c2bf96f73af0fca9fffb430", + "blockNumber": "0x10eccaf", + "gasUsed": "0xc52d8", + "effectiveGasPrice": "0x1", + "blobGasUsed": "0x0", + "from": "0x12b2434a1022d5787bf06056f2885fe35de62bf8", + "to": null, + "contractAddress": "0x847a6c5a32f5ed69c43a82f46a84df75f9b9bd2a" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x4bcc3", + "logs": [ + { + "address": "0xda3420ca7b915c607313d332d038ceddcd810973", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000fe63ba8189215e5c975e73643b96066b6ad41a45" + ], + "data": "0x", + "blockHash": "0x639bec5118ebb6e965fc81fa8f84495c2c369cbc9a81b61c962d5dee22cf2d59", + "blockNumber": "0x10eccb0", + "transactionHash": "0x122466d4fa35b1ea9067869169e49ad1f57597b520d7cdea5a1c84b0bbb5edcc", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000001000020000000000000000000800000000000000000000040000000000402000000000000000000000000000000000000000000000000000001000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000200000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x122466d4fa35b1ea9067869169e49ad1f57597b520d7cdea5a1c84b0bbb5edcc", + "transactionIndex": "0x0", + "blockHash": "0x639bec5118ebb6e965fc81fa8f84495c2c369cbc9a81b61c962d5dee22cf2d59", + "blockNumber": "0x10eccb0", + "gasUsed": "0x4bcc3", + "effectiveGasPrice": "0x1", + "blobGasUsed": "0x0", + "from": "0x12b2434a1022d5787bf06056f2885fe35de62bf8", + "to": null, + "contractAddress": "0xda3420ca7b915c607313d332d038ceddcd810973" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xd87c8", + "logs": [ + { + "address": "0xb3510615d958438b2a4accad2d0bdf782e333281", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000592bede03180b23dc0d8763666b37103f30191ac" + ], + "data": "0x", + "blockHash": "0x6057a4ce45751c3bfb94ab15a8b8ac06b23a1f6dba1e7dac7fd28647ff227959", + "blockNumber": "0x10eccb1", + "transactionHash": "0xe854fc7079a7604ec5f14f9738cd10d8f3336f5bcef9a5eb2a958dacf528ac16", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xb3510615d958438b2a4accad2d0bdf782e333281", + "topics": [ + "0xc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000015180", + "blockHash": "0x6057a4ce45751c3bfb94ab15a8b8ac06b23a1f6dba1e7dac7fd28647ff227959", + "blockNumber": "0x10eccb1", + "transactionHash": "0xe854fc7079a7604ec5f14f9738cd10d8f3336f5bcef9a5eb2a958dacf528ac16", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0xb3510615d958438b2a4accad2d0bdf782e333281", + "topics": [ + "0x7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001baf80", + "blockHash": "0x6057a4ce45751c3bfb94ab15a8b8ac06b23a1f6dba1e7dac7fd28647ff227959", + "blockNumber": "0x10eccb1", + "transactionHash": "0xe854fc7079a7604ec5f14f9738cd10d8f3336f5bcef9a5eb2a958dacf528ac16", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + }, + { + "address": "0xb3510615d958438b2a4accad2d0bdf782e333281", + "topics": [ + "0xccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x6057a4ce45751c3bfb94ab15a8b8ac06b23a1f6dba1e7dac7fd28647ff227959", + "blockNumber": "0x10eccb1", + "transactionHash": "0xe854fc7079a7604ec5f14f9738cd10d8f3336f5bcef9a5eb2a958dacf528ac16", + "transactionIndex": "0x0", + "logIndex": "0x3", + "removed": false + }, + { + "address": "0xb3510615d958438b2a4accad2d0bdf782e333281", + "topics": [ + "0x0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004", + "blockHash": "0x6057a4ce45751c3bfb94ab15a8b8ac06b23a1f6dba1e7dac7fd28647ff227959", + "blockNumber": "0x10eccb1", + "transactionHash": "0xe854fc7079a7604ec5f14f9738cd10d8f3336f5bcef9a5eb2a958dacf528ac16", + "transactionIndex": "0x0", + "logIndex": "0x4", + "removed": false + }, + { + "address": "0xb3510615d958438b2a4accad2d0bdf782e333281", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x6057a4ce45751c3bfb94ab15a8b8ac06b23a1f6dba1e7dac7fd28647ff227959", + "blockNumber": "0x10eccb1", + "transactionHash": "0xe854fc7079a7604ec5f14f9738cd10d8f3336f5bcef9a5eb2a958dacf528ac16", + "transactionIndex": "0x0", + "logIndex": "0x5", + "removed": false + }, + { + "address": "0xbe44dec2e26131b442d82d675d19e7d278323419", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000847a6c5a32f5ed69c43a82f46a84df75f9b9bd2a" + ], + "data": "0x", + "blockHash": "0x6057a4ce45751c3bfb94ab15a8b8ac06b23a1f6dba1e7dac7fd28647ff227959", + "blockNumber": "0x10eccb1", + "transactionHash": "0xe854fc7079a7604ec5f14f9738cd10d8f3336f5bcef9a5eb2a958dacf528ac16", + "transactionIndex": "0x0", + "logIndex": "0x6", + "removed": false + }, + { + "address": "0xb3510615d958438b2a4accad2d0bdf782e333281", + "topics": [ + "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000be44dec2e26131b442d82d675d19e7d278323419", + "blockHash": "0x6057a4ce45751c3bfb94ab15a8b8ac06b23a1f6dba1e7dac7fd28647ff227959", + "blockNumber": "0x10eccb1", + "transactionHash": "0xe854fc7079a7604ec5f14f9738cd10d8f3336f5bcef9a5eb2a958dacf528ac16", + "transactionIndex": "0x0", + "logIndex": "0x7", + "removed": false + } + ], + "logsBloom": "0x00000000000000000100000000001000400000200000000000800000000008000000000000000010000000000010000000000000000000000000000000000000000020000000000000000000000022000001000000000000002010000000000000000000020000080002000000000800400000800000000000001000000000401000000000000000000800000000000000000000008080000000000000800002000000000000000000000000000000000000000000000000000000002000000000000020000000000000000000000000000000000404000000080000800020000000100000000000000000000000000000008000000000000000000204000000", + "type": "0x2", + "transactionHash": "0xe854fc7079a7604ec5f14f9738cd10d8f3336f5bcef9a5eb2a958dacf528ac16", + "transactionIndex": "0x0", + "blockHash": "0x6057a4ce45751c3bfb94ab15a8b8ac06b23a1f6dba1e7dac7fd28647ff227959", + "blockNumber": "0x10eccb1", + "gasUsed": "0xd87c8", + "effectiveGasPrice": "0x1", + "blobGasUsed": "0x0", + "from": "0x12b2434a1022d5787bf06056f2885fe35de62bf8", + "to": null, + "contractAddress": "0xb3510615d958438b2a4accad2d0bdf782e333281" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1723362711, + "chain": 919, + "commit": "f72028e" +} \ No newline at end of file diff --git a/broadcast/Deploy_MetalL2Testnet.s.sol/919/run-latest.json b/broadcast/Deploy_MetalL2Testnet.s.sol/919/run-latest.json new file mode 100644 index 0000000..6060d10 --- /dev/null +++ b/broadcast/Deploy_MetalL2Testnet.s.sol/919/run-latest.json @@ -0,0 +1,369 @@ +{ + "transactions": [ + { + "hash": "0x8c9da969866fe94bb02a77d8ec941025567df5afced2828c964c1388abc85c40", + "transactionType": "CREATE", + "contractName": null, + "contractAddress": "0xe95f2fcf682712caf5fb44c9608d33dbac6b536b", + "function": null, + "arguments": null, + "transaction": { + "from": "0x12b2434a1022d5787bf06056f2885fe35de62bf8", + "gas": "0x73c5f", + "value": "0x0", + "input": "0x60e0604052600160c05234801561001557600080fd5b5060405161080938038061080983398101604081905261003491610229565b836001600160a01b03811661006357604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61006c816100c7565b506001600160a01b0383166080526040516100ba906100a8906100939085906020016102ae565b60408051601f19818403018152919052610117565b826040516020016100939291906102ca565b60a052506102f092505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060088260405160200161012c91906102ae565b60408051601f198184030181529190528051602090910120901c92915050565b80516001600160a01b038116811461016357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015610199578181015183820152602001610181565b50506000910152565b600082601f8301126101b357600080fd5b81516001600160401b03808211156101cd576101cd610168565b604051601f8301601f19908116603f011681019082821181831017156101f5576101f5610168565b8160405283815286602085880101111561020e57600080fd5b61021f84602083016020890161017e565b9695505050505050565b6000806000806080858703121561023f57600080fd5b6102488561014c565b93506102566020860161014c565b60408601519093506001600160401b038082111561027357600080fd5b61027f888389016101a2565b9350606087015191508082111561029557600080fd5b506102a2878288016101a2565b91505092959194509250565b600082516102c081846020870161017e565b9190910192915050565b828152600082516102e281602085016020870161017e565b919091016020019392505050565b60805160a05160c0516104ea61031f6000396000610190015260006101f20152600061016001526104ea6000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80634b95309714610067578063715018a6146100a85780638da5cb5b146100b25780639271bcf7146100cd578063e9b70553146100ec578063f2fde38b146100ff575b600080fd5b6100936100753660046103dd565b6001600160a01b031660009081526002602052604090205460ff1690565b60405190151581526020015b60405180910390f35b6100b0610112565b005b6000546040516001600160a01b03909116815260200161009f565b6100b0336000908152600260205260409020805460ff19166001179055565b6100b06100fa3660046103ff565b610126565b6100b061010d3660046103dd565b6102d1565b61011a61030f565b610124600061033c565b565b60008281526001602052604090205460ff161561015e57604051633c7fd51360e11b8152600481018390526024015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633bc778e3847f00000000000000000000000000000000000000000000000000000000000000006101ef886040516020016101db919060609190911b6bffffffffffffffffffffffff1916815260140190565b60405160208183030381529060405261038c565b867f0000000000000000000000000000000000000000000000000000000000000000876040518763ffffffff1660e01b81526004016102339695949392919061044d565b60006040518083038186803b15801561024b57600080fd5b505afa15801561025f573d6000803e3d6000fd5b505050600083815260016020818152604092839020805460ff191690921790915590518481527ff786e7f77ede00a02a5464f8f0555798f42ba99a4a920ef2778db8d75e4656f792500160405180910390a15050336000908152600260205260409020805460ff191660011790555050565b6102d961030f565b6001600160a01b03811661030357604051631e4fbdf760e01b815260006004820152602401610155565b61030c8161033c565b50565b6000546001600160a01b031633146101245760405163118cdaa760e01b8152336004820152602401610155565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006008826040516020016103a19190610485565b60408051601f198184030181529190528051602090910120901c92915050565b80356001600160a01b03811681146103d857600080fd5b919050565b6000602082840312156103ef57600080fd5b6103f8826103c1565b9392505050565b60008060008061016080868803121561041757600080fd5b610420866103c1565b9450602086013593506040860135925086818701111561043f57600080fd5b509295919450926060019150565b60006101a0820190508782528660208301528560408301528460608301528360808301526101008360a0840137979650505050505050565b6000825160005b818110156104a6576020818601810151858301520161048c565b50600092019182525091905056fea26469706673582212204eb703707d3007d257febb76440ddda512ce417bb7494037d284c3b190e3a3a164736f6c6343000818003300000000000000000000000012b2434a1022d5787bf06056f2885fe35de62bf800000000000000000000000011ca3127182f7583efc416a8771bd4d11fae4334000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000002c6170705f73746167696e675f65646663393432653639653331623132333365353239363138313661636631660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000966756e6374696f6e670000000000000000000000000000000000000000000000", + "nonce": "0x0", + "chainId": "0x397" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xcb0682a06d565528c06e379918322c25f3dc43a55fa319de46b8a90f826e58fa", + "transactionType": "CREATE", + "contractName": null, + "contractAddress": "0x592bede03180b23dc0d8763666b37103f30191ac", + "function": null, + "arguments": null, + "transaction": { + "from": "0x12b2434a1022d5787bf06056f2885fe35de62bf8", + "gas": "0x5a50dc", + "value": "0x0", + "input": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000d6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000735760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d35780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6150ee80620000e66000396000f3fe6080604052600436106103545760003560e01c80637b3c71d3116101c6578063c28bc2fa116100f7578063e540d01d11610095578063f23a6e611161006f578063f23a6e6114610b74578063f8ce560a14610ba0578063fc0c546a14610bc0578063fe0d94c114610bd557600080fd5b8063e540d01d14610b14578063eb9019d414610b34578063ece40cc114610b5457600080fd5b8063da35c664116100d1578063da35c66414610a65578063dd4e2ba514610a7a578063ddf0b00914610ac0578063deaaa7cc14610ae057600080fd5b8063c28bc2fa14610a02578063c59057e414610a15578063d465127614610a3557600080fd5b80639a802a6d11610164578063ab58fb8e1161013e578063ab58fb8e1461095c578063b58131b0146109a1578063bc197c81146109b6578063c01f9e37146109e257600080fd5b80639a802a6d14610906578063a7713a7014610926578063a9a952941461093b57600080fd5b806384b0196e116101a057806384b0196e1461087e5780638ff262e3146108a657806391ddadf4146108c657806397c3d334146108f257600080fd5b80637b3c71d3146107e95780637d5e81e2146108095780637ecebe001461082957600080fd5b80633e4f49e6116102a057806354fd4d501161023e5780635b8d0e0d116102185780635b8d0e0d146107695780635f398a141461078957806360c4247f146107a957806379051887146107c957600080fd5b806354fd4d50146106e657806356781388146107105780635700b7031461073057600080fd5b8063452115d61161027a578063452115d61461062f578063485cc9551461064f5780634bf5d7e91461066f578063544ffc9c1461068457600080fd5b80633e4f49e61461058b57806340e58ee5146105b857806343859632146105d857600080fd5b8063160cbed71161030d5780632d63f693116102e75780632d63f693146104f15780632e82db94146105115780632fe3e261146105425780633932abb11461057657600080fd5b8063160cbed71461048e57806316e9eaec146104ae5780632656227d146104de57600080fd5b806301ffc9a71461036257806302a251a31461039757806306f3f9e6146103d057806306fdde03146103f0578063143489d014610412578063150b7a021461044a57600080fd5b3661035d57005b005b600080fd5b34801561036e57600080fd5b5061038261037d366004613e80565b610be8565b60405190151581526020015b60405180910390f35b3480156103a357600080fd5b50600080516020614ff983398151915254600160301b900463ffffffff165b60405190815260200161038e565b3480156103dc57600080fd5b5061035b6103eb366004613eaa565b610c3f565b3480156103fc57600080fd5b50610405610c53565b60405161038e9190613f13565b34801561041e57600080fd5b5061043261042d366004613eaa565b610cf7565b6040516001600160a01b03909116815260200161038e565b34801561045657600080fd5b50610475610465366004614006565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161038e565b34801561049a57600080fd5b506103c26104a93660046141da565b610d1f565b3480156104ba57600080fd5b506104ce6104c9366004613eaa565b610d79565b60405161038e9493929190614339565b6103c26104ec3660046141da565b610f94565b3480156104fd57600080fd5b506103c261050c366004613eaa565b610ff0565b34801561051d57600080fd5b5061053161052c366004613eaa565b61101e565b60405161038e959493929190614384565b34801561054e57600080fd5b506103c27f3e83946653575f9a39005e1545185629e92736b7528ab20ca3816f315424a81181565b34801561058257600080fd5b506103c2611082565b34801561059757600080fd5b506105ab6105a6366004613eaa565b6110a2565b60405161038e919061440e565b3480156105c457600080fd5b5061035b6105d3366004613eaa565b61121b565b3480156105e457600080fd5b506103826105f336600461441c565b6000918252600080516020615079833981519152602090815260408084206001600160a01b039390931684526003909201905290205460ff1690565b34801561063b57600080fd5b506103c261064a3660046141da565b6113eb565b34801561065b57600080fd5b5061035b61066a36600461444c565b61145d565b34801561067b57600080fd5b506104056115fc565b34801561069057600080fd5b506106cb61069f366004613eaa565b600090815260008051602061507983398151915260205260409020805460018201546002909201549092565b6040805193845260208401929092529082015260600161038e565b3480156106f257600080fd5b506040805180820190915260018152603160f81b6020820152610405565b34801561071c57600080fd5b506103c261072b36600461448b565b6116a5565b34801561073c57600080fd5b5061038261074b3660046144b7565b6001600160a01b031660009081526001602052604090205460ff1690565b34801561077557600080fd5b506103c261078436600461451c565b611740565b34801561079557600080fd5b506103c26107a43660046145d6565b611881565b3480156107b557600080fd5b506103c26107c4366004613eaa565b6118d6565b3480156107d557600080fd5b5061035b6107e436600461466d565b611985565b3480156107f557600080fd5b506103c261080436600461468a565b611996565b34801561081557600080fd5b506103c26108243660046146e3565b6119de565b34801561083557600080fd5b506103c26108443660046144b7565b6001600160a01b031660009081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00602052604090205490565b34801561088a57600080fd5b50610893611a7d565b60405161038e9796959493929190614797565b3480156108b257600080fd5b506103c26108c1366004614807565b611b29565b3480156108d257600080fd5b506108db611bdd565b60405165ffffffffffff909116815260200161038e565b3480156108fe57600080fd5b5060646103c2565b34801561091257600080fd5b506103c2610921366004614858565b611c4c565b34801561093257600080fd5b506103c2611c61565b34801561094757600080fd5b50610382610956366004613eaa565b50600090565b34801561096857600080fd5b506103c2610977366004613eaa565b6000908152600080516020614fd9833981519152602052604090206001015465ffffffffffff1690565b3480156109ad57600080fd5b506103c2611c9c565b3480156109c257600080fd5b506104756109d13660046148b0565b63bc197c8160e01b95945050505050565b3480156109ee57600080fd5b506103c26109fd366004613eaa565b611ca6565b61035b610a10366004614943565b611d07565b348015610a2157600080fd5b506103c2610a303660046141da565b611d7e565b348015610a4157600080fd5b50610382610a503660046144b7565b60016020526000908152604090205460ff1681565b348015610a7157600080fd5b506103c2611db8565b348015610a8657600080fd5b506040805180820190915260208082527f737570706f72743d627261766f2671756f72756d3d666f722c6162737461696e90820152610405565b348015610acc57600080fd5b5061035b610adb366004613eaa565b611dd2565b348015610aec57600080fd5b506103c27ff2aad550cf55f045cb27e9c559f9889fdfb6e6cdaa032301d6ea397784ae51d781565b348015610b2057600080fd5b5061035b610b2f366004614986565b611f9c565b348015610b4057600080fd5b506103c2610b4f3660046149ac565b611fad565b348015610b6057600080fd5b5061035b610b6f366004613eaa565b611fce565b348015610b8057600080fd5b50610475610b8f3660046149d8565b63f23a6e6160e01b95945050505050565b348015610bac57600080fd5b506103c2610bbb366004613eaa565b611fdf565b348015610bcc57600080fd5b50610432611fea565b61035b610be3366004613eaa565b612018565b60006001600160e01b031982166332a2ad4360e11b1480610c1957506001600160e01b03198216630271189760e51b145b80610c3457506301ffc9a760e01b6001600160e01b03198316145b92915050565b905090565b610c476121e2565b610c5081612229565b50565b6000805160206150998339815191528054606091908190610c7390614a40565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9f90614a40565b8015610cec5780601f10610cc157610100808354040283529160200191610cec565b820191906000526020600020905b815481529060010190602001808311610ccf57829003601f168201915b505050505091505090565b6000908152600080516020614fd983398151915260205260409020546001600160a01b031690565b600060008051602061509983398151915281610d3d87878787611d7e565b9050610d5281610d4d60046122e0565b612303565b506000604051634844252360e11b815260040160405180910390fd5b509695505050505050565b60608080600080600080516020615019833981519152600087815260018201602090815260408083208151815460a094810282018501909352608081018381529596509394909284928491840182828015610dfd57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ddf575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610e5557602002820191906000526020600020905b815481526020019060010190808311610e41575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015610f2f578382906000526020600020018054610ea290614a40565b80601f0160208091040260200160405190810160405280929190818152602001828054610ece90614a40565b8015610f1b5780601f10610ef057610100808354040283529160200191610f1b565b820191906000526020600020905b815481529060010190602001808311610efe57829003601f168201915b505050505081526020019060010190610e83565b505050508152602001600382015481525050905080606001516000801b03610f7257604051636ad0607560e01b8152600481018890526024015b60405180910390fd5b8051602082015160408301516060909301519199909850919650945092505050565b600080610fa386868686611d7e565b90506000610fb387878787612342565b90506000610fc083610cf7565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055509695505050505050565b6000908152600080516020614fd98339815191526020526040902054600160a01b900465ffffffffffff1690565b60006060808083806000805160206150198339815191529050600081600001888154811061104e5761104e614a7a565b9060005260206000200154905060008060008061106a85610d79565b979f929e50909c509a50949850939650505050505050565b6000610c3a600080516020614ff98339815191525465ffffffffffff1690565b6000818152600080516020614fd9833981519152602052604081208054600080516020615099833981519152919060ff600160f01b8204811691600160f81b90041681156110f65750600795945050505050565b80156111085750600295945050505050565b600061111387610ff0565b90508060000361113957604051636ad0607560e01b815260048101889052602401610f69565b6000611143611bdd565b65ffffffffffff16905080821061116257506000979650505050505050565b600061116d89611ca6565b90508181106111855750600198975050505050505050565b61118e89612481565b15806111bb5750600089815260008051602061507983398151915260205260409020805460019091015411155b156111cf5750600398975050505050505050565b6000898152600080516020614fd9833981519152602052604090206001015465ffffffffffff1660000361120c5750600498975050505050505050565b50600598975050505050505050565b60008181527f7fd223d3380145bd26132714391e777c488a0df7ac2dd4b66419d8549fb3a601602090815260409182902080548351818402810184019094528084526000805160206150198339815191529391926113e5929184918301828280156112af57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611291575b50505050508260010180548060200260200160405190810160405280929190818152602001828054801561130257602002820191906000526020600020905b8154815260200190600101908083116112ee575b505050505083600201805480602002602001604051908101604052809291908181526020016000905b828210156113d757838290600052602060002001805461134a90614a40565b80601f016020809104026020016040519081016040528092919081815260200182805461137690614a40565b80156113c35780601f10611398576101008083540402835291602001916113c3565b820191906000526020600020905b8154815290600101906020018083116113a657829003601f168201915b50505050508152602001906001019061132b565b5050505084600301546113eb565b50505050565b6000806113fa86868686611d7e565b905061140a81610d4d60006122e0565b5061141481610cf7565b6001600160a01b0316336001600160a01b0316146114475760405163233d98e360e01b8152336004820152602401610f69565b611453868686866124c8565b9695505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156114a25750825b90506000826001600160401b031660011480156114be5750303b155b9050811580156114cc575080155b156114ea5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561151457845460ff60401b1916600160401b1785555b61153e6040518060400160405280600981526020016811dbdd995c9b985d5d60ba1b81525061258a565b61155062015180621baf8060006125c2565b6115586125da565b611561876125e4565b61156b60046125f5565b6001600160a01b0386166115925760405163822d9aff60e01b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b03881617905583156115f357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6060611606611fea565b6001600160a01b0316634bf5d7e96040518163ffffffff1660e01b8152600401600060405180830381865afa92505050801561166457506040513d6000823e601f3d908101601f191682016040526116619190810190614a90565b60015b6116a0575060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b919050565b60008054604051634b95309760e01b81523360048201526001600160a01b0390911690634b95309790602401602060405180830381865afa1580156116ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117129190614afd565b61172f5760405163421e68c960e11b815260040160405180910390fd5b6117398383612606565b9392505050565b600080611805876117ff7f3e83946653575f9a39005e1545185629e92736b7528ab20ca3816f315424a8118c8c8c6117778e612627565b8d8d604051611787929190614b1f565b60405180910390208c805190602001206040516020016117e49796959493929190968752602087019590955260ff9390931660408601526001600160a01b03919091166060850152608084015260a083015260c082015260e00190565b60405160208183030381529060405280519060200120612669565b85612696565b905080611830576040516394ab6c0760e01b81526001600160a01b0388166004820152602401610f69565b61187489888a89898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b92506126ee915050565b9998505050505050505050565b6000803390506118cb87828888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92506126ee915050565b979650505050505050565b7fe770710421fd2cad75ad828c61aa98f2d77d423a440b67872d0f65554148e000805460009190828261190a600184614b45565b8154811061191a5761191a614a7a565b6000918252602090912001805490915065ffffffffffff811690600160301b90046001600160d01b031686821161195e576001600160d01b03169695505050505050565b61197161196a886127cb565b8690612802565b6001600160d01b0316979650505050505050565b61198d6121e2565b610c50816128b7565b60008033905061145386828787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061293b92505050565b60008054604051634b95309760e01b81523360048201526001600160a01b0390911690634b95309790602401602060405180830381865afa158015611a27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4b9190614afd565b611a685760405163421e68c960e11b815260040160405180910390fd5b611a748585858561295e565b95945050505050565b600060608082808083816000805160206150398339815191528054909150158015611aaa57506001810154155b611aee5760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606401610f69565b611af6612a1b565b611afe612a5a565b60408051600080825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b600080611b97846117ff7ff2aad550cf55f045cb27e9c559f9889fdfb6e6cdaa032301d6ea397784ae51d7898989611b608b612627565b60408051602081019690965285019390935260ff90911660608401526001600160a01b0316608083015260a082015260c0016117e4565b905080611bc2576040516394ab6c0760e01b81526001600160a01b0385166004820152602401610f69565b6114538685876040518060200160405280600081525061293b565b6000611be7611fea565b6001600160a01b03166391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611c40575060408051601f3d908101601f19168201909252611c3d91810190614b58565b60015b6116a057610c3a612a99565b6000611c59848484612aa4565b949350505050565b60007fe770710421fd2cad75ad828c61aa98f2d77d423a440b67872d0f65554148e000611c8d81612b21565b6001600160d01b031691505090565b6000610c3a612b5a565b6000818152600080516020614fd9833981519152602052604081205460008051602061509983398151915290611cf890600160d01b810463ffffffff1690600160a01b900465ffffffffffff16614b75565b65ffffffffffff169392505050565b611d0f6121e2565b600080856001600160a01b0316858585604051611d2d929190614b1f565b60006040518083038185875af1925050503d8060008114611d6a576040519150601f19603f3d011682016040523d82523d6000602084013e611d6f565b606091505b50915091506115f38282612b71565b600084848484604051602001611d979493929190614339565b60408051601f19818403018152919052805160209091012095945050505050565b6000806000805160206150198339815191525b5492915050565b60008181527f7fd223d3380145bd26132714391e777c488a0df7ac2dd4b66419d8549fb3a601602090815260409182902080548351818402810184019094528084526000805160206150198339815191529391926113e592918491830182828015611e6657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611e48575b505050505082600101805480602002602001604051908101604052809291908181526020018280548015611eb957602002820191906000526020600020905b815481526020019060010190808311611ea5575b505050505083600201805480602002602001604051908101604052809291908181526020016000905b82821015611f8e578382906000526020600020018054611f0190614a40565b80601f0160208091040260200160405190810160405280929190818152602001828054611f2d90614a40565b8015611f7a5780601f10611f4f57610100808354040283529160200191611f7a565b820191906000526020600020905b815481529060010190602001808311611f5d57829003601f168201915b505050505081526020019060010190611ee2565b505050508460030154610d1f565b611fa46121e2565b610c5081612b8d565b60006117398383611fc960408051602081019091526000815290565b612aa4565b611fd66121e2565b610c5081612c3d565b6000610c3482612c8b565b7f3ba4977254e415696610a40ebf2258dbfa0ec6a2ff64e84bfe715ff16977cc00546001600160a01b031690565b60008181527f7fd223d3380145bd26132714391e777c488a0df7ac2dd4b66419d8549fb3a601602090815260409182902080548351818402810184019094528084526000805160206150198339815191529391926113e5929184918301828280156120ac57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161208e575b5050505050826001018054806020026020016040519081016040528092919081815260200182805480156120ff57602002820191906000526020600020905b8154815260200190600101908083116120eb575b505050505083600201805480602002602001604051908101604052809291908181526020016000905b828210156121d457838290600052602060002001805461214790614a40565b80601f016020809104026020016040519081016040528092919081815260200182805461217390614a40565b80156121c05780601f10612195576101008083540402835291602001916121c0565b820191906000526020600020905b8154815290600101906020018083116121a357829003601f168201915b505050505081526020019060010190612128565b505050508460030154610f94565b600080516020615099833981519152303314610c50576040516347096e4760e01b8152336004820152602401610f69565b8061222083600201612d22565b03612213575050565b7fe770710421fd2cad75ad828c61aa98f2d77d423a440b67872d0f65554148e0006064808311156122775760405163243e544560e01b81526004810184905260248101829052604401610f69565b6000612281611c61565b905061229f61228e611bdd565b61229786612da0565b859190612dd4565b505060408051828152602081018690527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a150505050565b60008160078111156122f4576122f46143d6565b600160ff919091161b92915050565b60008061230f846110a2565b905060008361231d836122e0565b1603611739578381846040516331b75e4d60e01b8152600401610f6993929190614b9b565b60006000805160206150998339815191528161236087878787611d7e565b90506123808161237060056122e0565b61237a60046122e0565b17612303565b5060008181526001830160205260409020805460ff60f01b1916600160f01b179055306123aa3090565b6001600160a01b0316146124365760005b875181101561243457306001600160a01b03168882815181106123e0576123e0614a7a565b60200260200101516001600160a01b03160361242c5761242c86828151811061240b5761240b614a7a565b60200260200101518051906020012084600201612def90919063ffffffff16565b6001016123bb565b505b6124438188888888612e60565b6040518181527f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f906020015b60405180910390a19695505050505050565b6000818152600080516020615079833981519152602081905260408220600281015460018201546124b29190614bbd565b6124be610bbb86610ff0565b1115949350505050565b6000600080516020615099833981519152816124e687878787611d7e565b9050612534816124f660076122e0565b61250060066122e0565b61250a60026122e0565b6001612517600782614bd0565b612522906002614ccd565b61252c9190614b45565b181818612303565b5060008181526001830160205260409081902080546001600160f81b0316600160f81b179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c9061246f9083815260200190565b612592612f3a565b6125b9816125b46040805180820190915260018152603160f81b602082015290565b612f83565b610c5081612fe4565b6125ca612f3a565b6125d5838383613006565b505050565b6125e2612f3a565b565b6125ec612f3a565b610c5081613029565b6125fd612f3a565b610c5081613072565b600080339050611c598482856040518060200160405280600081525061293b565b6001600160a01b031660009081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006020526040902080546001810190915590565b6000610c3461267661307a565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060006126a58585613084565b50909250905060008160038111156126bf576126bf6143d6565b1480156126dd5750856001600160a01b0316826001600160a01b0316145b8061145357506114538686866130d1565b60006126fe86610d4d60016122e0565b5060006127148661270e89610ff0565b85612aa4565b905061272387878784876131ac565b825160000361277857856001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda48887848860405161276b9493929190614cdc565b60405180910390a2611453565b856001600160a01b03167fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb871288878488886040516127b9959493929190614d04565b60405180910390a29695505050505050565b600065ffffffffffff8211156127fe576040516306dfcc6560e41b81526030600482015260248101839052604401610f69565b5090565b81546000908181600581111561286157600061281d846132b5565b6128279085614b45565b60008881526020902090915081015465ffffffffffff90811690871610156128515780915061285f565b61285c816001614bbd565b92505b505b600061286f8787858561339d565b905080156128aa5761289487612886600184614b45565b600091825260209091200190565b54600160301b90046001600160d01b03166118cb565b6000979650505050505050565b600080516020614ff9833981519152546040805165ffffffffffff928316815291831660208301528051600080516020615059833981519152927fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a9392908290030190a1600101805465ffffffffffff191665ffffffffffff92909216919091179055565b6000611a748585858561295960408051602081019091526000815290565b6126ee565b60003361296b81846133ff565b6129935760405163d9b3955760e01b81526001600160a01b0382166004820152602401610f69565b60006129ba8260016129a3611bdd565b6129ad9190614d3e565b65ffffffffffff16611fad565b905060006129c6611c9c565b905080821015612a0257604051636121770b60e11b81526001600160a01b03841660048201526024810183905260448101829052606401610f69565b612a0f88888888876134ea565b98975050505050505050565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d102805460609160008051602061503983398151915291610c7390614a40565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d103805460609160008051602061503983398151915291610c7390614a40565b6000610c3a436127cb565b6000612aae611fea565b604051630748d63560e31b81526001600160a01b038681166004830152602482018690529190911690633a46b1a890604401602060405180830381865afa158015612afd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c599190614d5d565b80546000908015612b5157612b3b83612886600184614b45565b54600160301b90046001600160d01b0316611739565b60009392505050565b600080600080516020615059833981519152611dcb565b606082612b8657612b81826134f9565b610c34565b5080610c34565b60008051602061505983398151915263ffffffff8216600003612bc65760405163f1cfbf0560e01b815260006004820152602401610f69565b60018101546040805163ffffffff600160301b9093048316815291841660208301527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a1600101805463ffffffff909216600160301b0269ffffffff00000000000019909216919091179055565b6000805160206150598339815191528054604080519182526020820184905280517fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc054619281900390910190a155565b60006064612c98836118d6565b612ca0611fea565b6001600160a01b0316638e539e8c856040518263ffffffff1660e01b8152600401612ccd91815260200190565b602060405180830381865afa158015612cea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d0e9190614d5d565b612d189190614d76565b610c349190614da3565b80546000906001600160801b0380821691600160801b9004168103612d5a576040516375e52f4f60e01b815260040160405180910390fd5b6001600160801b038181166000908152600185810160205260408220805492905585546fffffffffffffffffffffffffffffffff19169301909116919091179092555090565b60006001600160d01b038211156127fe576040516306dfcc6560e41b815260d0600482015260248101839052604401610f69565b600080612de2858585613522565b915091505b935093915050565b81546001600160801b03600160801b820481169181166001830190911603612e2a57604051638acb5f2760e01b815260040160405180910390fd5b6001600160801b03808216600090815260018086016020526040909120939093558354919092018216600160801b029116179055565b60005b8451811015612f3257600080868381518110612e8157612e81614a7a565b60200260200101516001600160a01b0316868481518110612ea457612ea4614a7a565b6020026020010151868581518110612ebe57612ebe614a7a565b6020026020010151604051612ed39190614dc5565b60006040518083038185875af1925050503d8060008114612f10576040519150601f19603f3d011682016040523d82523d6000602084013e612f15565b606091505b5091509150612f248282612b71565b505050806001019050612e63565b505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166125e257604051631afcd79f60e31b815260040160405180910390fd5b612f8b612f3a565b6000805160206150398339815191527fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d102612fc58482614e29565b5060038101612fd48382614e29565b5060008082556001909101555050565b612fec612f3a565b600080516020615099833981519152806125d58382614e29565b61300e612f3a565b613017836128b7565b61302082612b8d565b6125d581612c3d565b613031612f3a565b7f3ba4977254e415696610a40ebf2258dbfa0ec6a2ff64e84bfe715ff16977cc0080546001600160a01b0319166001600160a01b0392909216919091179055565b610c47612f3a565b6000610c3a61369c565b600080600083516041036130be5760208401516040850151606086015160001a6130b088828585613710565b9550955095505050506130ca565b50508151600091506002905b9250925092565b6000806000856001600160a01b031685856040516024016130f3929190614ee8565b60408051601f198184030181529181526020820180516001600160e01b0316630b135d3f60e11b179052516131289190614dc5565b600060405180830381855afa9150503d8060008114613163576040519150601f19603f3d011682016040523d82523d6000602084013e613168565b606091505b509150915081801561317c57506020815110155b801561145357508051630b135d3f60e11b906131a19083016020908101908401614d5d565b149695505050505050565b6000858152600080516020615079833981519152602081815260408084206001600160a01b0389168552600381019092529092205490919060ff1615613210576040516371c6af4960e01b81526001600160a01b0387166004820152602401610f69565b6001600160a01b03861660009081526003820160205260409020805460ff1916600117905560ff851661325c57838160000160008282546132519190614bbd565b909155506115f39050565b60001960ff86160161327c57838160010160008282546132519190614bbd565b60011960ff86160161329c57838160020160008282546132519190614bbd565b6040516303599be160e11b815260040160405180910390fd5b6000816000036132c757506000919050565b600060016132d4846137df565b901c6001901b905060018184816132ed576132ed614d8d565b048201901c9050600181848161330557613305614d8d565b048201901c9050600181848161331d5761331d614d8d565b048201901c9050600181848161333557613335614d8d565b048201901c9050600181848161334d5761334d614d8d565b048201901c9050600181848161336557613365614d8d565b048201901c9050600181848161337d5761337d614d8d565b048201901c90506117398182858161339757613397614d8d565b04613873565b60005b818310156133f75760006133b48484613889565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff1611156133e3578092506133f1565b6133ee816001614bbd565b93505b506133a0565b509392505050565b80516000906034811015613417576001915050610c34565b82810160131901516001600160a01b031981166b046e0e4dee0dee6cae47a60f60a31b1461344a57600192505050610c34565b600080613458602885614b45565b90505b838110156134c95760008061348f88848151811061347b5761347b614a7a565b01602001516001600160f81b0319166138a4565b91509150816134a75760019650505050505050610c34565b8060ff166004856001600160a01b0316901b179350505080600101905061345b565b50856001600160a01b0316816001600160a01b031614935050505092915050565b60006114538686868686613936565b8051156135095780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b82546000908190801561364157600061354087612886600185614b45565b60408051808201909152905465ffffffffffff808216808452600160301b9092046001600160d01b03166020840152919250908716101561359457604051632520601d60e01b815260040160405180910390fd5b805165ffffffffffff8088169116036135e057846135b788612886600186614b45565b80546001600160d01b0392909216600160301b0265ffffffffffff909216919091179055613631565b6040805180820190915265ffffffffffff80881682526001600160d01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160301b029216919091179101555b602001519250839150612de79050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b029190931617920191909155905081612de7565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6136c7613a03565b6136cf613a6d565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561374b57506000915060039050826137d5565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561379f573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166137cb575060009250600191508290506137d5565b9250600091508190505b9450945094915050565b600080608083901c156137f457608092831c92015b604083901c1561380657604092831c92015b602083901c1561381857602092831c92015b601083901c1561382a57601092831c92015b600883901c1561383c57600892831c92015b600483901c1561384e57600492831c92015b600283901c1561386057600292831c92015b600183901c15610c345760010192915050565b60008183106138825781611739565b5090919050565b60006138986002848418614da3565b61173990848416614bbd565b60008060f883901c602f811180156138bf5750603a8160ff16105b156138d457600194602f199091019350915050565b8060ff1660401080156138ea575060478160ff16105b156138ff576001946036199091019350915050565b8060ff166060108015613915575060678160ff16105b1561392a576001946056199091019350915050565b50600093849350915050565b6000600080516020615019833981519152816139558888888888613ab1565b82546001818101855560008581526020808220909301849055604080516080810182528d81528085018d90528082018c90528a518b86012060608201528583529287018452902081518051949550919390926139b5928492910190613d26565b5060208281015180516139ce9260018501920190613d87565b50604082015180516139ea916002840191602090910190613dc2565b5060609190910151600390910155979650505050505050565b600060008051602061503983398151915281613a1d612a1b565b805190915015613a3557805160209091012092915050565b81548015613a44579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b600060008051602061503983398151915281613a87612a5a565b805190915015613a9f57805160209091012092915050565b60018201548015613a44579392505050565b6000806000805160206150998339815191529050613ad88787878780519060200120611d7e565b915085518751141580613aed57508451875114155b80613af757508651155b15613b2c57865185518751604051630447b05d60e41b8152600481019390935260248301919091526044820152606401610f69565b6000828152600182016020526040902054600160a01b900465ffffffffffff1615613b795781613b5b836110a2565b6040516331b75e4d60e01b8152610f69929190600090600401614b9b565b6000613b83611082565b613b8b611bdd565b65ffffffffffff16613b9d9190614bbd565b90506000613bc5600080516020614ff98339815191525463ffffffff600160301b9091041690565b6000858152600185016020526040902080546001600160a01b0319166001600160a01b038816178155909150613bfa836127cb565b815465ffffffffffff91909116600160a01b0265ffffffffffff60a01b19909116178155613c2782613cf5565b815463ffffffff91909116600160d01b0263ffffffff60d01b1990911617815589517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e090869088908d908d906001600160401b03811115613c8a57613c8a613f3b565b604051908082528060200260200182016040528015613cbd57816020015b6060815260200190600190039081613ca85790505b508d89613cca8a82614bbd565b8f604051613ce099989796959493929190614f01565b60405180910390a15050505095945050505050565b600063ffffffff8211156127fe576040516306dfcc6560e41b81526020600482015260248101839052604401610f69565b828054828255906000526020600020908101928215613d7b579160200282015b82811115613d7b57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190613d46565b506127fe929150613e14565b828054828255906000526020600020908101928215613d7b579160200282015b82811115613d7b578251825591602001919060010190613da7565b828054828255906000526020600020908101928215613e08579160200282015b82811115613e085782518290613df89082614e29565b5091602001919060010190613de2565b506127fe929150613e29565b5b808211156127fe5760008155600101613e15565b808211156127fe576000613e3d8282613e46565b50600101613e29565b508054613e5290614a40565b6000825580601f10613e62575050565b601f016020900490600052602060002090810190610c509190613e14565b600060208284031215613e9257600080fd5b81356001600160e01b03198116811461173957600080fd5b600060208284031215613ebc57600080fd5b5035919050565b60005b83811015613ede578181015183820152602001613ec6565b50506000910152565b60008151808452613eff816020860160208601613ec3565b601f01601f19169290920160200192915050565b6020815260006117396020830184613ee7565b6001600160a01b0381168114610c5057600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613f7957613f79613f3b565b604052919050565b60006001600160401b03821115613f9a57613f9a613f3b565b50601f01601f191660200190565b6000613fbb613fb684613f81565b613f51565b9050828152838383011115613fcf57600080fd5b828260208301376000602084830101529392505050565b600082601f830112613ff757600080fd5b61173983833560208501613fa8565b6000806000806080858703121561401c57600080fd5b843561402781613f26565b9350602085013561403781613f26565b92506040850135915060608501356001600160401b0381111561405957600080fd5b61406587828801613fe6565b91505092959194509250565b60006001600160401b0382111561408a5761408a613f3b565b5060051b60200190565b600082601f8301126140a557600080fd5b813560206140b5613fb683614071565b8083825260208201915060208460051b8701019350868411156140d757600080fd5b602086015b84811015610d6e5780356140ef81613f26565b83529183019183016140dc565b600082601f83011261410d57600080fd5b8135602061411d613fb683614071565b8083825260208201915060208460051b87010193508684111561413f57600080fd5b602086015b84811015610d6e5780358352918301918301614144565b600082601f83011261416c57600080fd5b8135602061417c613fb683614071565b82815260059290921b8401810191818101908684111561419b57600080fd5b8286015b84811015610d6e5780356001600160401b038111156141be5760008081fd5b6141cc8986838b0101613fe6565b84525091830191830161419f565b600080600080608085870312156141f057600080fd5b84356001600160401b038082111561420757600080fd5b61421388838901614094565b9550602087013591508082111561422957600080fd5b614235888389016140fc565b9450604087013591508082111561424b57600080fd5b506142588782880161415b565b949793965093946060013593505050565b60008151808452602080850194506020840160005b838110156142a35781516001600160a01b03168752958201959082019060010161427e565b509495945050505050565b60008151808452602080850194506020840160005b838110156142a3578151875295820195908201906001016142c3565b60008282518085526020808601955060208260051b8401016020860160005b8481101561432c57601f1986840301895261431a838351613ee7565b988401989250908301906001016142fe565b5090979650505050505050565b60808152600061434c6080830187614269565b828103602084015261435e81876142ae565b9050828103604084015261437281866142df565b91505082606083015295945050505050565b85815260a06020820152600061439d60a0830187614269565b82810360408401526143af81876142ae565b905082810360608401526143c381866142df565b9150508260808301529695505050505050565b634e487b7160e01b600052602160045260246000fd5b6008811061440a57634e487b7160e01b600052602160045260246000fd5b9052565b60208101610c3482846143ec565b6000806040838503121561442f57600080fd5b82359150602083013561444181613f26565b809150509250929050565b6000806040838503121561445f57600080fd5b823561446a81613f26565b9150602083013561444181613f26565b803560ff811681146116a057600080fd5b6000806040838503121561449e57600080fd5b823591506144ae6020840161447a565b90509250929050565b6000602082840312156144c957600080fd5b813561173981613f26565b60008083601f8401126144e657600080fd5b5081356001600160401b038111156144fd57600080fd5b60208301915083602082850101111561451557600080fd5b9250929050565b600080600080600080600060c0888a03121561453757600080fd5b873596506145476020890161447a565b9550604088013561455781613f26565b945060608801356001600160401b038082111561457357600080fd5b61457f8b838c016144d4565b909650945060808a013591508082111561459857600080fd5b6145a48b838c01613fe6565b935060a08a01359150808211156145ba57600080fd5b506145c78a828b01613fe6565b91505092959891949750929550565b6000806000806000608086880312156145ee57600080fd5b853594506145fe6020870161447a565b935060408601356001600160401b038082111561461a57600080fd5b61462689838a016144d4565b9095509350606088013591508082111561463f57600080fd5b5061464c88828901613fe6565b9150509295509295909350565b65ffffffffffff81168114610c5057600080fd5b60006020828403121561467f57600080fd5b813561173981614659565b600080600080606085870312156146a057600080fd5b843593506146b06020860161447a565b925060408501356001600160401b038111156146cb57600080fd5b6146d7878288016144d4565b95989497509550505050565b600080600080608085870312156146f957600080fd5b84356001600160401b038082111561471057600080fd5b61471c88838901614094565b9550602087013591508082111561473257600080fd5b61473e888389016140fc565b9450604087013591508082111561475457600080fd5b6147608883890161415b565b9350606087013591508082111561477657600080fd5b508501601f8101871361478857600080fd5b61406587823560208401613fa8565b60ff60f81b8816815260e0602082015260006147b660e0830189613ee7565b82810360408401526147c88189613ee7565b606084018890526001600160a01b038716608085015260a0840186905283810360c085015290506147f981856142ae565b9a9950505050505050505050565b6000806000806080858703121561481d57600080fd5b8435935061482d6020860161447a565b9250604085013561483d81613f26565b915060608501356001600160401b0381111561405957600080fd5b60008060006060848603121561486d57600080fd5b833561487881613f26565b92506020840135915060408401356001600160401b0381111561489a57600080fd5b6148a686828701613fe6565b9150509250925092565b600080600080600060a086880312156148c857600080fd5b85356148d381613f26565b945060208601356148e381613f26565b935060408601356001600160401b03808211156148ff57600080fd5b61490b89838a016140fc565b9450606088013591508082111561492157600080fd5b61492d89838a016140fc565b9350608088013591508082111561463f57600080fd5b6000806000806060858703121561495957600080fd5b843561496481613f26565b93506020850135925060408501356001600160401b038111156146cb57600080fd5b60006020828403121561499857600080fd5b813563ffffffff8116811461173957600080fd5b600080604083850312156149bf57600080fd5b82356149ca81613f26565b946020939093013593505050565b600080600080600060a086880312156149f057600080fd5b85356149fb81613f26565b94506020860135614a0b81613f26565b9350604086013592506060860135915060808601356001600160401b03811115614a3457600080fd5b61464c88828901613fe6565b600181811c90821680614a5457607f821691505b602082108103614a7457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215614aa257600080fd5b81516001600160401b03811115614ab857600080fd5b8201601f81018413614ac957600080fd5b8051614ad7613fb682613f81565b818152856020838501011115614aec57600080fd5b611a74826020830160208601613ec3565b600060208284031215614b0f57600080fd5b8151801515811461173957600080fd5b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610c3457610c34614b2f565b600060208284031215614b6a57600080fd5b815161173981614659565b65ffffffffffff818116838216019080821115614b9457614b94614b2f565b5092915050565b83815260608101614baf60208301856143ec565b826040830152949350505050565b80820180821115610c3457610c34614b2f565b60ff8181168382160190811115610c3457610c34614b2f565b600181815b80851115614c24578160001904821115614c0a57614c0a614b2f565b80851615614c1757918102915b93841c9390800290614bee565b509250929050565b600082614c3b57506001610c34565b81614c4857506000610c34565b8160018114614c5e5760028114614c6857614c84565b6001915050610c34565b60ff841115614c7957614c79614b2f565b50506001821b610c34565b5060208310610133831016604e8410600b8410161715614ca7575081810a610c34565b614cb18383614be9565b8060001904821115614cc557614cc5614b2f565b029392505050565b600061173960ff841683614c2c565b84815260ff841660208201528260408201526080606082015260006114536080830184613ee7565b85815260ff8516602082015283604082015260a060608201526000614d2c60a0830185613ee7565b8281036080840152612a0f8185613ee7565b65ffffffffffff828116828216039080821115614b9457614b94614b2f565b600060208284031215614d6f57600080fd5b5051919050565b8082028115828204841417610c3457610c34614b2f565b634e487b7160e01b600052601260045260246000fd5b600082614dc057634e487b7160e01b600052601260045260246000fd5b500490565b60008251614dd7818460208701613ec3565b9190910192915050565b601f8211156125d5576000816000526020600020601f850160051c81016020861015614e0a5750805b601f850160051c820191505b81811015612f3257828155600101614e16565b81516001600160401b03811115614e4257614e42613f3b565b614e5681614e508454614a40565b84614de1565b602080601f831160018114614e8b5760008415614e735750858301515b600019600386901b1c1916600185901b178555612f32565b600085815260208120601f198616915b82811015614eba57888601518255948401946001909101908401614e9b565b5085821015614ed85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b828152604060208201526000611c596040830184613ee7565b60006101208b8352602060018060a01b038c1681850152816040850152614f2a8285018c614269565b91508382036060850152614f3e828b6142ae565b915083820360808501528189518084528284019150828160051b850101838c0160005b83811015614f8f57601f19878403018552614f7d838351613ee7565b94860194925090850190600101614f61565b505086810360a0880152614fa3818c6142df565b9450505050508560c08401528460e0840152828103610100840152614fc88185613ee7565b9c9b50505050505050505050505056fe7c712897014dbe49c045ef1299aa2d5f9e67e48eea4403efa21f1e0f3ac0cb0100d7616c8fe29c6c2fbe1d0c5bc8f2faa4c35b43746e70b24b4d532752affd017fd223d3380145bd26132714391e777c488a0df7ac2dd4b66419d8549fb3a600a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10000d7616c8fe29c6c2fbe1d0c5bc8f2faa4c35b43746e70b24b4d532752affd00a1cefa0f43667ef127a258e673c94202a79b656e62899531c4376d87a7f398007c712897014dbe49c045ef1299aa2d5f9e67e48eea4403efa21f1e0f3ac0cb00a2646970667358221220630ab1438d20753a9c0cc6ca1e176c9ca9fdcaa61f8e588a27c4ea961ca13f6a64736f6c63430008180033", + "nonce": "0x1", + "chainId": "0x397" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x122466d4fa35b1ea9067869169e49ad1f57597b520d7cdea5a1c84b0bbb5edcc", + "transactionType": "CREATE", + "contractName": "ProxyAdmin", + "contractAddress": "0x847a6c5a32f5ed69c43a82f46a84df75f9b9bd2a", + "function": null, + "arguments": [ + "0xfe63Ba8189215E5C975e73643b96066B6aD41A45" + ], + "transaction": { + "from": "0x12b2434a1022d5787bf06056f2885fe35de62bf8", + "gas": "0x62827", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b5060405161052438038061052483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610427806100fd6000396000f3fe60806040526004361061004a5760003560e01c8063715018a61461004f5780638da5cb5b146100665780639623609d14610093578063ad3cb1cc146100a6578063f2fde38b146100e4575b600080fd5b34801561005b57600080fd5b50610064610104565b005b34801561007257600080fd5b506000546040516001600160a01b0390911681526020015b60405180910390f35b6100646100a1366004610272565b610118565b3480156100b257600080fd5b506100d7604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161008a919061038e565b3480156100f057600080fd5b506100646100ff3660046103a8565b610187565b61010c6101ca565b61011660006101f7565b565b6101206101ca565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061015090869086906004016103c5565b6000604051808303818588803b15801561016957600080fd5b505af115801561017d573d6000803e3d6000fd5b5050505050505050565b61018f6101ca565b6001600160a01b0381166101be57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101c7816101f7565b50565b6000546001600160a01b031633146101165760405163118cdaa760e01b81523360048201526024016101b5565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101c757600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561028757600080fd5b833561029281610247565b925060208401356102a281610247565b9150604084013567ffffffffffffffff808211156102bf57600080fd5b818601915086601f8301126102d357600080fd5b8135818111156102e5576102e561025c565b604051601f8201601f19908116603f0116810190838211818310171561030d5761030d61025c565b8160405282815289602084870101111561032657600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000815180845260005b8181101561036e57602081850181015186830182015201610352565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006103a16020830184610348565b9392505050565b6000602082840312156103ba57600080fd5b81356103a181610247565b6001600160a01b03831681526040602082018190526000906103e990830184610348565b94935050505056fea26469706673582212205a55efe2b5849000042b393b41318a12381beacd370f9a0a6c351ab0c878330864736f6c63430008180033000000000000000000000000fe63ba8189215e5c975e73643b96066b6ad41a45", + "nonce": "0x2", + "chainId": "0x397" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xe854fc7079a7604ec5f14f9738cd10d8f3336f5bcef9a5eb2a958dacf528ac16", + "transactionType": "CREATE", + "contractName": "TransparentUpgradeableProxy", + "contractAddress": "0xda3420ca7b915c607313d332d038ceddcd810973", + "function": null, + "arguments": [ + "0x592BedE03180b23DC0d8763666B37103F30191ac", + "0x847a6c5a32F5Ed69c43a82f46a84Df75f9B9Bd2A", + "0x485cc9550000000000000000000000004200000000000000000000000000000000000042000000000000000000000000e95f2fcf682712caf5fb44c9608d33dbac6b536b" + ], + "transaction": { + "from": "0x12b2434a1022d5787bf06056f2885fe35de62bf8", + "gas": "0x119535", + "value": "0x0", + "input": "0x60a060405260405162000eb138038062000eb18339810160408190526200002691620003cd565b82816200003482826200009c565b505081604051620000459062000366565b6001600160a01b039091168152602001604051809103906000f08015801562000072573d6000803e3d6000fd5b506001600160a01b0316608052620000936200008d60805190565b62000102565b505050620004cb565b620000a78262000174565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115620000f457620000ef8282620001f4565b505050565b620000fe62000271565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200014460008051602062000e91833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a1620001718162000293565b50565b806001600160a01b03163b600003620001b057604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080846001600160a01b031684604051620002139190620004ad565b600060405180830381855af49150503d806000811462000250576040519150601f19603f3d011682016040523d82523d6000602084013e62000255565b606091505b50909250905062000268858383620002d6565b95945050505050565b3415620002915760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b038116620002bf57604051633173bdd160e11b815260006004820152602401620001a7565b8060008051602062000e91833981519152620001d3565b606082620002ef57620002e9826200033c565b62000335565b81511580156200030757506001600160a01b0384163b155b156200033257604051639996b31560e01b81526001600160a01b0385166004820152602401620001a7565b50805b9392505050565b8051156200034d5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b610524806200096d83390190565b80516001600160a01b03811681146200038c57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620003c4578181015183820152602001620003aa565b50506000910152565b600080600060608486031215620003e357600080fd5b620003ee8462000374565b9250620003fe6020850162000374565b60408501519092506001600160401b03808211156200041c57600080fd5b818601915086601f8301126200043157600080fd5b81518181111562000446576200044662000391565b604051601f8201601f19908116603f0116810190838211818310171562000471576200047162000391565b816040528281528960208487010111156200048b57600080fd5b6200049e836020830160208801620003a7565b80955050505050509250925092565b60008251620004c1818460208701620003a7565b9190910192915050565b608051610487620004e66000396000601001526104876000f3fe608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361007b576000356001600160e01b03191663278f794360e11b14610071576040516334ad5dbb60e21b815260040160405180910390fd5b610079610083565b565b6100796100b2565b6000806100933660048184610312565b8101906100a09190610352565b915091506100ae82826100c2565b5050565b6100796100bd61011d565b610155565b6100cb82610179565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101155761011082826101f5565b505050565b6100ae61026b565b60006101507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015610174573d6000f35b3d6000fd5b806001600160a01b03163b6000036101b457604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516102129190610422565b600060405180830381855af49150503d806000811461024d576040519150601f19603f3d011682016040523d82523d6000602084013e610252565b606091505b509150915061026285838361028a565b95945050505050565b34156100795760405163b398979f60e01b815260040160405180910390fd5b60608261029f5761029a826102e9565b6102e2565b81511580156102b657506001600160a01b0384163b155b156102df57604051639996b31560e01b81526001600160a01b03851660048201526024016101ab565b50805b9392505050565b8051156102f95780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6000808585111561032257600080fd5b8386111561032f57600080fd5b5050820193919092039150565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561036557600080fd5b82356001600160a01b038116811461037c57600080fd5b9150602083013567ffffffffffffffff8082111561039957600080fd5b818501915085601f8301126103ad57600080fd5b8135818111156103bf576103bf61033c565b604051601f8201601f19908116603f011681019083821181831017156103e7576103e761033c565b8160405282815288602084870101111561040057600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000825160005b818110156104435760208186018101518583015201610429565b50600092019182525091905056fea2646970667358221220a3a43e5c8ef142ab3aafd351b1d1ef47a145e224121c2768f0a6c1e57a46cf7364736f6c63430008180033608060405234801561001057600080fd5b5060405161052438038061052483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610427806100fd6000396000f3fe60806040526004361061004a5760003560e01c8063715018a61461004f5780638da5cb5b146100665780639623609d14610093578063ad3cb1cc146100a6578063f2fde38b146100e4575b600080fd5b34801561005b57600080fd5b50610064610104565b005b34801561007257600080fd5b506000546040516001600160a01b0390911681526020015b60405180910390f35b6100646100a1366004610272565b610118565b3480156100b257600080fd5b506100d7604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161008a919061038e565b3480156100f057600080fd5b506100646100ff3660046103a8565b610187565b61010c6101ca565b61011660006101f7565b565b6101206101ca565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061015090869086906004016103c5565b6000604051808303818588803b15801561016957600080fd5b505af115801561017d573d6000803e3d6000fd5b5050505050505050565b61018f6101ca565b6001600160a01b0381166101be57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101c7816101f7565b50565b6000546001600160a01b031633146101165760405163118cdaa760e01b81523360048201526024016101b5565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101c757600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561028757600080fd5b833561029281610247565b925060208401356102a281610247565b9150604084013567ffffffffffffffff808211156102bf57600080fd5b818601915086601f8301126102d357600080fd5b8135818111156102e5576102e561025c565b604051601f8201601f19908116603f0116810190838211818310171561030d5761030d61025c565b8160405282815289602084870101111561032657600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000815180845260005b8181101561036e57602081850181015186830182015201610352565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006103a16020830184610348565b9392505050565b6000602082840312156103ba57600080fd5b81356103a181610247565b6001600160a01b03831681526040602082018190526000906103e990830184610348565b94935050505056fea26469706673582212205a55efe2b5849000042b393b41318a12381beacd370f9a0a6c351ab0c878330864736f6c63430008180033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103000000000000000000000000592bede03180b23dc0d8763666b37103f30191ac000000000000000000000000847a6c5a32f5ed69c43a82f46a84df75f9b9bd2a00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044485cc9550000000000000000000000004200000000000000000000000000000000000042000000000000000000000000e95f2fcf682712caf5fb44c9608d33dbac6b536b00000000000000000000000000000000000000000000000000000000", + "nonce": "0x3", + "chainId": "0x397" + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "address": "0x8826d7bda7ea33d5bc0e3f05d2a239fa9863c773", + "initCode": "0x608060405234801561001057600080fd5b5060405161052438038061052483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610427806100fd6000396000f3fe60806040526004361061004a5760003560e01c8063715018a61461004f5780638da5cb5b146100665780639623609d14610093578063ad3cb1cc146100a6578063f2fde38b146100e4575b600080fd5b34801561005b57600080fd5b50610064610104565b005b34801561007257600080fd5b506000546040516001600160a01b0390911681526020015b60405180910390f35b6100646100a1366004610272565b610118565b3480156100b257600080fd5b506100d7604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161008a919061038e565b3480156100f057600080fd5b506100646100ff3660046103a8565b610187565b61010c6101ca565b61011660006101f7565b565b6101206101ca565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061015090869086906004016103c5565b6000604051808303818588803b15801561016957600080fd5b505af115801561017d573d6000803e3d6000fd5b5050505050505050565b61018f6101ca565b6001600160a01b0381166101be57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101c7816101f7565b50565b6000546001600160a01b031633146101165760405163118cdaa760e01b81523360048201526024016101b5565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101c757600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561028757600080fd5b833561029281610247565b925060208401356102a281610247565b9150604084013567ffffffffffffffff808211156102bf57600080fd5b818601915086601f8301126102d357600080fd5b8135818111156102e5576102e561025c565b604051601f8201601f19908116603f0116810190838211818310171561030d5761030d61025c565b8160405282815289602084870101111561032657600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000815180845260005b8181101561036e57602081850181015186830182015201610352565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006103a16020830184610348565b9392505050565b6000602082840312156103ba57600080fd5b81356103a181610247565b6001600160a01b03831681526040602082018190526000906103e990830184610348565b94935050505056fea26469706673582212205a55efe2b5849000042b393b41318a12381beacd370f9a0a6c351ab0c878330864736f6c63430008180033000000000000000000000000847a6c5a32f5ed69c43a82f46a84df75f9b9bd2a" + } + ], + "isFixedGasLimit": false + }, + { + "hash": "0xa5651424b9a93d58ee41f3eda0110b3230cc2696a6dd41773b4d5b8e1e1f7dbf", + "transactionType": "CREATE", + "contractName": null, + "contractAddress": "0xb3510615d958438b2a4accad2d0bdf782e333281", + "function": null, + "arguments": null, + "transaction": { + "from": "0x12b2434a1022d5787bf06056f2885fe35de62bf8", + "gas": "0x100419", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610e5c380380610e5c83398101604081905261002f91610295565b826001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61006781610229565b50600180556001600160a01b0382166100965760405160016269813d60e11b0319815260040160405180910390fd5b600280546001600160a01b03199081166001600160a01b039485161790915560038054821692841692909217909155600060048190556040805160e0810182528281526020808201848152928201848152606083018581526080840186815260a0850187815260c08601888152978052600590945293517f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc805490981698169790971790955591517f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bd5592517f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746be5592517f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bf5590517f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746c05590517f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746c155517f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746c2805460ff191660ff909216919091179055506102d8565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b038116811461029057600080fd5b919050565b6000806000606084860312156102aa57600080fd5b6102b384610279565b92506102c160208501610279565b91506102cf60408501610279565b90509250925092565b610b75806102e76000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063715018a611610066578063715018a61461017f5780638c590917146101895780638da5cb5b1461019c578063d12f3b87146101b7578063f2fde38b146101e257600080fd5b8063142a78c6146100985780631b55e338146101385780633dce2b461461015957806361a6381f1461016c575b600080fd5b6100f46100a63660046109ef565b600090815260056020819052604090912080546001820154600283015460038401546004850154600686015495909601546001600160a01b0390941696929591949093919260ff9091169190565b604080516001600160a01b0390981688526020880196909652948601939093526060850191909152608084015260a083015260c082015260e0015b60405180910390f35b61014b6101463660046109ef565b6101f5565b60405190815260200161012f565b61014b610167366004610a1f565b610446565b61014b61017a3660046109ef565b6105e7565b610187610791565b005b610187610197366004610a49565b6107a5565b6000546040516001600160a01b03909116815260200161012f565b61014b6101c53660046109ef565b600090815260066020908152604080832033845290915290205490565b6101876101f0366004610a6b565b61090a565b60006101ff610948565b600082815260056020819052604082209081015490919061022457816002015461022a565b81600501545b6102349042610aa3565b82549091506001600160a01b031633146102615760405163018d3ef960e31b815260040160405180910390fd5b816002015442101561028657604051637e3795db60e11b815260040160405180910390fd5b8160030154826004015410156102af576040516351992ba760e01b815260040160405180910390fd5b6006820154600460ff909116106102d957604051630ea99c6560e11b815260040160405180910390fd5b62278d008110156102fd57604051635ada9a9960e01b815260040160405180910390fd5b6000600483600401546103109190610ab6565b42600585015560068401805491925060019160009061033390849060ff16610ad8565b825460ff9182166101009390930a92830291909202199091161790555060035460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af11580156103a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103c59190610af1565b6104055760405162461bcd60e51b815260206004820152600c60248201526b10db185a5b4819985a5b195960a21b60448201526064015b60405180910390fd5b6040518190339087907fa4eb50103b0591feb0bc913f479d92af5eb7ea33e8c397b49bab52ce6af26cb590600090a49250505061044160018055565b919050565b600254604051635700b70360e01b81523360048201526000916001600160a01b031690635700b70390602401602060405180830381865afa15801561048f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b39190610af1565b6104d057604051630a1ea19360e11b815260040160405180910390fd5b600480549060006104e083610b13565b9091555042905060006104f682621baf80610b2c565b6040805160e0810182526001600160a01b038881168083526020808401888152848601878152606086018c815260006080880181815260a0890182815260c08a018381526004805485526005808a52948d90209b518c546001600160a01b0319169b169a909a178b55955160018b0155935160028a015591516003890155905187870155905190860155516006909401805460ff191660ff90951694909417909355905483518781529283018590529394508793909290917fee52793fa84ff32059ae4a1f92ce1c91296f469f952f33dcd4f02fe83322c4ce910160405180910390a4600454925050505b92915050565b60006105f1610948565b6000828152600560205260409020600281015442101561062457604051637e3795db60e11b815260040160405180910390fd5b806003015481600401541061064c57604051637432356d60e01b815260040160405180910390fd5b600083815260066020908152604080832033845290915281205490819003610686576040516233638960e31b815260040160405180910390fd5b600084815260066020908152604080832033808552925280832092909255600354915163a9059cbb60e01b81526004810191909152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af11580156106f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071a9190610af1565b6107565760405162461bcd60e51b815260206004820152600d60248201526c1499599d5b990819985a5b1959609a1b60448201526064016103fc565b6040518190859033907f2dc8e290002f06fc0085bbca9dfb8b415cf4d1178950c72ff9ee8f4d8878ee6690600090a491505061044160018055565b610799610972565b6107a3600061099f565b565b6000828152600560205260409020600281015442106107d657604051629f920f60e81b815260040160405180910390fd5b6003546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561082d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108519190610af1565b61088f5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016103fc565b818160040160008282546108a39190610b2c565b90915550506000838152600660209081526040808320338452909152812080548492906108d1908490610b2c565b90915550506040518290849033907f5dc1fe5ab986a852c4eda8e8bb94247d13307065c593fb83f1a09be27367938290600090a4505050565b610912610972565b6001600160a01b03811661093c57604051631e4fbdf760e01b8152600060048201526024016103fc565b6109458161099f565b50565b60026001540361096b57604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b6000546001600160a01b031633146107a35760405163118cdaa760e01b81523360048201526024016103fc565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215610a0157600080fd5b5035919050565b80356001600160a01b038116811461044157600080fd5b60008060408385031215610a3257600080fd5b610a3b83610a08565b946020939093013593505050565b60008060408385031215610a5c57600080fd5b50508035926020909101359150565b600060208284031215610a7d57600080fd5b610a8682610a08565b9392505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156105e1576105e1610a8d565b600082610ad357634e487b7160e01b600052601260045260246000fd5b500490565b60ff81811683821601908111156105e1576105e1610a8d565b600060208284031215610b0357600080fd5b81518015158114610a8657600080fd5b600060018201610b2557610b25610a8d565b5060010190565b808201808211156105e1576105e1610a8d56fea2646970667358221220737a46b05196089b3490c8f4b56d9341a44648598d3916cb00ff5d4e99467d4564736f6c6343000818003300000000000000000000000012b2434a1022d5787bf06056f2885fe35de62bf8000000000000000000000000da3420ca7b915c607313d332d038ceddcd8109730000000000000000000000004200000000000000000000000000000000000042", + "nonce": "0x4", + "chainId": "0x397" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x5917b", + "logs": [ + { + "address": "0xe95f2fcf682712caf5fb44c9608d33dbac6b536b", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x00000000000000000000000012b2434a1022d5787bf06056f2885fe35de62bf8" + ], + "data": "0x", + "blockHash": "0xe14cf89c975c8bec79d04879b1d9f876eb571dc44c17590c3b4359a490332af9", + "blockNumber": "0x10eccad", + "transactionHash": "0x8c9da969866fe94bb02a77d8ec941025567df5afced2828c964c1388abc85c40", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000080000000000000000000000000000020000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000001000000004000000000000000000000000000020000000000000000000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x8c9da969866fe94bb02a77d8ec941025567df5afced2828c964c1388abc85c40", + "transactionIndex": "0x0", + "blockHash": "0xe14cf89c975c8bec79d04879b1d9f876eb571dc44c17590c3b4359a490332af9", + "blockNumber": "0x10eccad", + "gasUsed": "0x5917b", + "effectiveGasPrice": "0x1", + "blobGasUsed": "0x0", + "from": "0x12b2434a1022d5787bf06056f2885fe35de62bf8", + "to": null, + "contractAddress": "0xe95f2fcf682712caf5fb44c9608d33dbac6b536b" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x457e65", + "logs": [ + { + "address": "0x592bede03180b23dc0d8763666b37103f30191ac", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x684462354d853c741ebafbea693aaf37ba5acfd67dfede928cc1c528364efbc4", + "blockNumber": "0x10eccae", + "transactionHash": "0xcb0682a06d565528c06e379918322c25f3dc43a55fa319de46b8a90f826e58fa", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xcb0682a06d565528c06e379918322c25f3dc43a55fa319de46b8a90f826e58fa", + "transactionIndex": "0x0", + "blockHash": "0x684462354d853c741ebafbea693aaf37ba5acfd67dfede928cc1c528364efbc4", + "blockNumber": "0x10eccae", + "gasUsed": "0x457e65", + "effectiveGasPrice": "0x1", + "blobGasUsed": "0x0", + "from": "0x12b2434a1022d5787bf06056f2885fe35de62bf8", + "to": null, + "contractAddress": "0x592bede03180b23dc0d8763666b37103f30191ac" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xc52d8", + "logs": [ + { + "address": "0x847a6c5a32f5ed69c43a82f46a84df75f9b9bd2a", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x00000000000000000000000012b2434a1022d5787bf06056f2885fe35de62bf8" + ], + "data": "0x", + "blockHash": "0xa07c96feafadd522796ebe9a9edf7a0ed22a56563c2bf96f73af0fca9fffb430", + "blockNumber": "0x10eccaf", + "transactionHash": "0xa5651424b9a93d58ee41f3eda0110b3230cc2696a6dd41773b4d5b8e1e1f7dbf", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000200000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000001000000000000000000000000000000000000020000000000000000000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000020000008000000010000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xa5651424b9a93d58ee41f3eda0110b3230cc2696a6dd41773b4d5b8e1e1f7dbf", + "transactionIndex": "0x0", + "blockHash": "0xa07c96feafadd522796ebe9a9edf7a0ed22a56563c2bf96f73af0fca9fffb430", + "blockNumber": "0x10eccaf", + "gasUsed": "0xc52d8", + "effectiveGasPrice": "0x1", + "blobGasUsed": "0x0", + "from": "0x12b2434a1022d5787bf06056f2885fe35de62bf8", + "to": null, + "contractAddress": "0x847a6c5a32f5ed69c43a82f46a84df75f9b9bd2a" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x4bcc3", + "logs": [ + { + "address": "0xda3420ca7b915c607313d332d038ceddcd810973", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000fe63ba8189215e5c975e73643b96066b6ad41a45" + ], + "data": "0x", + "blockHash": "0x639bec5118ebb6e965fc81fa8f84495c2c369cbc9a81b61c962d5dee22cf2d59", + "blockNumber": "0x10eccb0", + "transactionHash": "0x122466d4fa35b1ea9067869169e49ad1f57597b520d7cdea5a1c84b0bbb5edcc", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000001000020000000000000000000800000000000000000000040000000000402000000000000000000000000000000000000000000000000000001000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000200000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x122466d4fa35b1ea9067869169e49ad1f57597b520d7cdea5a1c84b0bbb5edcc", + "transactionIndex": "0x0", + "blockHash": "0x639bec5118ebb6e965fc81fa8f84495c2c369cbc9a81b61c962d5dee22cf2d59", + "blockNumber": "0x10eccb0", + "gasUsed": "0x4bcc3", + "effectiveGasPrice": "0x1", + "blobGasUsed": "0x0", + "from": "0x12b2434a1022d5787bf06056f2885fe35de62bf8", + "to": null, + "contractAddress": "0xda3420ca7b915c607313d332d038ceddcd810973" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xd87c8", + "logs": [ + { + "address": "0xb3510615d958438b2a4accad2d0bdf782e333281", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000592bede03180b23dc0d8763666b37103f30191ac" + ], + "data": "0x", + "blockHash": "0x6057a4ce45751c3bfb94ab15a8b8ac06b23a1f6dba1e7dac7fd28647ff227959", + "blockNumber": "0x10eccb1", + "transactionHash": "0xe854fc7079a7604ec5f14f9738cd10d8f3336f5bcef9a5eb2a958dacf528ac16", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xb3510615d958438b2a4accad2d0bdf782e333281", + "topics": [ + "0xc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000015180", + "blockHash": "0x6057a4ce45751c3bfb94ab15a8b8ac06b23a1f6dba1e7dac7fd28647ff227959", + "blockNumber": "0x10eccb1", + "transactionHash": "0xe854fc7079a7604ec5f14f9738cd10d8f3336f5bcef9a5eb2a958dacf528ac16", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0xb3510615d958438b2a4accad2d0bdf782e333281", + "topics": [ + "0x7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001baf80", + "blockHash": "0x6057a4ce45751c3bfb94ab15a8b8ac06b23a1f6dba1e7dac7fd28647ff227959", + "blockNumber": "0x10eccb1", + "transactionHash": "0xe854fc7079a7604ec5f14f9738cd10d8f3336f5bcef9a5eb2a958dacf528ac16", + "transactionIndex": "0x0", + "logIndex": "0x2", + "removed": false + }, + { + "address": "0xb3510615d958438b2a4accad2d0bdf782e333281", + "topics": [ + "0xccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x6057a4ce45751c3bfb94ab15a8b8ac06b23a1f6dba1e7dac7fd28647ff227959", + "blockNumber": "0x10eccb1", + "transactionHash": "0xe854fc7079a7604ec5f14f9738cd10d8f3336f5bcef9a5eb2a958dacf528ac16", + "transactionIndex": "0x0", + "logIndex": "0x3", + "removed": false + }, + { + "address": "0xb3510615d958438b2a4accad2d0bdf782e333281", + "topics": [ + "0x0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004", + "blockHash": "0x6057a4ce45751c3bfb94ab15a8b8ac06b23a1f6dba1e7dac7fd28647ff227959", + "blockNumber": "0x10eccb1", + "transactionHash": "0xe854fc7079a7604ec5f14f9738cd10d8f3336f5bcef9a5eb2a958dacf528ac16", + "transactionIndex": "0x0", + "logIndex": "0x4", + "removed": false + }, + { + "address": "0xb3510615d958438b2a4accad2d0bdf782e333281", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x6057a4ce45751c3bfb94ab15a8b8ac06b23a1f6dba1e7dac7fd28647ff227959", + "blockNumber": "0x10eccb1", + "transactionHash": "0xe854fc7079a7604ec5f14f9738cd10d8f3336f5bcef9a5eb2a958dacf528ac16", + "transactionIndex": "0x0", + "logIndex": "0x5", + "removed": false + }, + { + "address": "0xbe44dec2e26131b442d82d675d19e7d278323419", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000847a6c5a32f5ed69c43a82f46a84df75f9b9bd2a" + ], + "data": "0x", + "blockHash": "0x6057a4ce45751c3bfb94ab15a8b8ac06b23a1f6dba1e7dac7fd28647ff227959", + "blockNumber": "0x10eccb1", + "transactionHash": "0xe854fc7079a7604ec5f14f9738cd10d8f3336f5bcef9a5eb2a958dacf528ac16", + "transactionIndex": "0x0", + "logIndex": "0x6", + "removed": false + }, + { + "address": "0xb3510615d958438b2a4accad2d0bdf782e333281", + "topics": [ + "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000be44dec2e26131b442d82d675d19e7d278323419", + "blockHash": "0x6057a4ce45751c3bfb94ab15a8b8ac06b23a1f6dba1e7dac7fd28647ff227959", + "blockNumber": "0x10eccb1", + "transactionHash": "0xe854fc7079a7604ec5f14f9738cd10d8f3336f5bcef9a5eb2a958dacf528ac16", + "transactionIndex": "0x0", + "logIndex": "0x7", + "removed": false + } + ], + "logsBloom": "0x00000000000000000100000000001000400000200000000000800000000008000000000000000010000000000010000000000000000000000000000000000000000020000000000000000000000022000001000000000000002010000000000000000000020000080002000000000800400000800000000000001000000000401000000000000000000800000000000000000000008080000000000000800002000000000000000000000000000000000000000000000000000000002000000000000020000000000000000000000000000000000404000000080000800020000000100000000000000000000000000000008000000000000000000204000000", + "type": "0x2", + "transactionHash": "0xe854fc7079a7604ec5f14f9738cd10d8f3336f5bcef9a5eb2a958dacf528ac16", + "transactionIndex": "0x0", + "blockHash": "0x6057a4ce45751c3bfb94ab15a8b8ac06b23a1f6dba1e7dac7fd28647ff227959", + "blockNumber": "0x10eccb1", + "gasUsed": "0xd87c8", + "effectiveGasPrice": "0x1", + "blobGasUsed": "0x0", + "from": "0x12b2434a1022d5787bf06056f2885fe35de62bf8", + "to": null, + "contractAddress": "0xb3510615d958438b2a4accad2d0bdf782e333281" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1723362711, + "chain": 919, + "commit": "f72028e" +} \ No newline at end of file diff --git a/broadcast/Deploy_ModeTestnet.s.sol/919/run-1723382852.json b/broadcast/Deploy_ModeTestnet.s.sol/919/run-1723382852.json new file mode 100644 index 0000000..dff7c2e --- /dev/null +++ b/broadcast/Deploy_ModeTestnet.s.sol/919/run-1723382852.json @@ -0,0 +1,286 @@ +{ + "transactions": [ + { + "hash": "0x1294b224368735051765d12f74463c5fcf1d87c8419a46d94493709dd5bf3a78", + "transactionType": "CREATE", + "contractName": "GovernanceToken", + "contractAddress": "0x847a6c5a32f5ed69c43a82f46a84df75f9b9bd2a", + "function": null, + "arguments": [ + "0x12B2434a1022d5787bf06056F2885Fe35De62Bf8", + "1000000000000000000000000" + ], + "transaction": { + "from": "0x12b2434a1022d5787bf06056f2885fe35de62bf8", + "gas": "0x29cdb2", + "value": "0x0", + "input": "0x6101606040523480156200001257600080fd5b5060405162002deb38038062002deb833981016040819052620000359162000972565b6040518060400160405280600f81526020016e23b7bb32b93730b731b2aa37b5b2b760891b81525080604051806040016040528060018152602001603160f81b815250846040518060400160405280600f81526020016e23b7bb32b93730b731b2aa37b5b2b760891b8152506040518060400160405280600481526020016311d3d59560e21b8152508160039081620000cf919062000a54565b506004620000de828262000a54565b50506005805460ff19169055506001600160a01b0381166200011b57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6200012681620001f1565b50620001348260066200024b565b61012052620001458160076200024b565b61014052815160208084019190912060e052815190820120610100524660a052620001d360e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c05250620001e9828262000284565b505062000c25565b600580546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006020835110156200026b576200026383620002c2565b90506200027e565b8162000278848262000a54565b5060ff90505b92915050565b6001600160a01b038216620002b05760405163ec442f0560e01b81526000600482015260240162000112565b620002be6000838362000305565b5050565b600080829050601f81511115620002f0578260405163305a27a960e01b815260040162000112919062000b20565b8051620002fd8262000b71565b179392505050565b6200031283838362000317565b505050565b6200032483838362000386565b6001600160a01b038316620003795760006200033f60025490565b90506001600160d01b03808211156200037657604051630e58ae9360e11b8152600481018390526024810182905260440162000112565b50505b620003128383836200039d565b6200039062000435565b620003128383836200045c565b6001600160a01b038316620003d257620003cf600b62000a336200058f60201b17620003c984620005a4565b620005de565b50505b6001600160a01b0382166200040157620003fe600b62000a3f6200061260201b17620003c984620005a4565b50505b6001600160a01b03838116600090815260096020526040808220548584168352912054620003129291821691168362000620565b60055460ff16156200045a5760405163d93c066560e01b815260040160405180910390fd5b565b6001600160a01b0383166200048b5780600260008282546200047f919062000bac565b90915550620004ff9050565b6001600160a01b03831660009081526020819052604090205481811015620004e05760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640162000112565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166200051d576002805482900390556200053c565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200058291815260200190565b60405180910390a3505050565b60006200059d828462000bc2565b9392505050565b60006001600160d01b03821115620005da576040516306dfcc6560e41b815260d060048201526024810183905260440162000112565b5090565b6000806200060542620005fc620005f58862000787565b868860201c565b879190620007d6565b915091505b935093915050565b60006200059d828462000bec565b816001600160a01b0316836001600160a01b031614158015620006435750600081115b1562000312576001600160a01b03831615620006e6576001600160a01b0383166000908152600a602090815260408220829162000691919062000612901b62000a3f17620003c986620005a4565b6001600160d01b031691506001600160d01b03169150846001600160a01b031660008051602062002dcb8339815191528383604051620006db929190918252602082015260400190565b60405180910390a250505b6001600160a01b0382161562000312576001600160a01b0382166000908152600a60209081526040822082916200072e91906200058f901b62000a3317620003c986620005a4565b6001600160d01b031691506001600160d01b03169150836001600160a01b031660008051602062002dcb833981519152838360405162000778929190918252602082015260400190565b60405180910390a25050505050565b80546000908015620007cd57620007b383620007a560018462000c0f565b600091825260209091200190565b54660100000000000090046001600160d01b03166200059d565b60009392505050565b60008062000605858585825460009081908015620009135760006200080287620007a560018562000c0f565b60408051808201909152905465ffffffffffff80821680845266010000000000009092046001600160d01b0316602084015291925090871610156200085a57604051632520601d60e01b815260040160405180910390fd5b805165ffffffffffff808816911603620008ae57846200088188620007a560018662000c0f565b80546001600160d01b039290921666010000000000000265ffffffffffff90921691909117905562000902565b6040805180820190915265ffffffffffff80881682526001600160d01b0380881660208085019182528b54600181018d5560008d815291909120945191519092166601000000000000029216919091179101555b6020015192508391506200060a9050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a81529182209551925190931666010000000000000291909316179201919091559050816200060a565b600080604083850312156200098657600080fd5b82516001600160a01b03811681146200099e57600080fd5b6020939093015192949293505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620009d957607f821691505b602082108103620009fa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000312576000816000526020600020601f850160051c8101602086101562000a2b5750805b601f850160051c820191505b8181101562000a4c5782815560010162000a37565b505050505050565b81516001600160401b0381111562000a705762000a70620009ae565b62000a888162000a818454620009c4565b8462000a00565b602080601f83116001811462000ac0576000841562000aa75750858301515b600019600386901b1c1916600185901b17855562000a4c565b600085815260208120601f198616915b8281101562000af15788860151825594840194600190910190840162000ad0565b508582101562000b105787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020808352835180602085015260005b8181101562000b505785810183015185820160400152820162000b32565b506000604082860101526040601f19601f8301168501019250505092915050565b80516020808301519190811015620009fa5760001960209190910360031b1b16919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156200027e576200027e62000b96565b6001600160d01b0381811683821601908082111562000be55762000be562000b96565b5092915050565b6001600160d01b0382811682821603908082111562000be55762000be562000b96565b818103818111156200027e576200027e62000b96565b60805160a05160c05160e05161010051610120516101405161214b62000c806000396000610fc001526000610f9301526000610c1401526000610bec01526000610b4701526000610b7101526000610b9b015261214b6000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c8063715018a61161010f57806395d89b41116100a2578063d505accf11610071578063d505accf14610463578063dd62ed3e14610476578063f1127ed8146104af578063f2fde38b146104ee57600080fd5b806395d89b41146104225780639ab24eb01461042a578063a9059cbb1461043d578063c3cda5201461045057600080fd5b806384b0196e116100de57806384b0196e146103c85780638da5cb5b146103e35780638e539e8c146103f957806391ddadf41461040c57600080fd5b8063715018a61461039257806379cc67901461039a5780637ecebe00146103ad5780638456cb59146103c057600080fd5b806340c10f19116101875780635c19a95c116101565780635c19a95c146103235780635c975abb146103365780636fcfff451461034157806370a082311461036957600080fd5b806340c10f191461028f57806342966c68146102a25780634bf5d7e9146102b5578063587cde1e146102df57600080fd5b8063313ce567116101c3578063313ce5671461025b5780633644e5151461026a5780633a46b1a8146102725780633f4ba83a1461028557600080fd5b806306fdde03146101f5578063095ea7b31461021357806318160ddd1461023657806323b872dd14610248575b600080fd5b6101fd610501565b60405161020a9190611d4c565b60405180910390f35b610226610221366004611d7b565b610593565b604051901515815260200161020a565b6002545b60405190815260200161020a565b610226610256366004611da5565b6105ad565b6040516012815260200161020a565b61023a6105d1565b61023a610280366004611d7b565b6105e0565b61028d61065c565b005b61028d61029d366004611d7b565b61066e565b61028d6102b0366004611de1565b610684565b60408051808201909152600e81526d06d6f64653d74696d657374616d760941b60208201526101fd565b61030b6102ed366004611dfa565b6001600160a01b039081166000908152600960205260409020541690565b6040516001600160a01b03909116815260200161020a565b61028d610331366004611dfa565b610691565b60055460ff16610226565b61035461034f366004611dfa565b61069c565b60405163ffffffff909116815260200161020a565b61023a610377366004611dfa565b6001600160a01b031660009081526020819052604090205490565b61028d6106a7565b61028d6103a8366004611d7b565b6106b9565b61023a6103bb366004611dfa565b6106ce565b61028d6106d9565b6103d06106e9565b60405161020a9796959493929190611e15565b60055461010090046001600160a01b031661030b565b61023a610407366004611de1565b61072f565b60405165ffffffffffff4216815260200161020a565b6101fd61078f565b61023a610438366004611dfa565b61079e565b61022661044b366004611d7b565b6107ce565b61028d61045e366004611ebf565b6107dc565b61028d610471366004611f17565b610899565b61023a610484366004611f81565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6104c26104bd366004611fb4565b6109d3565b60408051825165ffffffffffff1681526020928301516001600160d01b0316928101929092520161020a565b61028d6104fc366004611dfa565b6109f8565b60606003805461051090611ff4565b80601f016020809104026020016040519081016040528092919081815260200182805461053c90611ff4565b80156105895780601f1061055e57610100808354040283529160200191610589565b820191906000526020600020905b81548152906001019060200180831161056c57829003601f168201915b5050505050905090565b6000336105a1818585610a4b565b60019150505b92915050565b6000336105bb858285610a5d565b6105c6858585610adb565b506001949350505050565b60006105db610b3a565b905090565b60004265ffffffffffff8116831061062157604051637669fc0f60e11b81526004810184905265ffffffffffff821660248201526044015b60405180910390fd5b61064b61062d84610c65565b6001600160a01b0386166000908152600a6020526040902090610c9c565b6001600160d01b0316949350505050565b610664610d52565b61066c610d85565b565b610676610d52565b6106808282610dd7565b5050565b61068e3382610e0d565b50565b336106808183610e43565b60006105a782610eb5565b6106af610d52565b61066c6000610ed7565b6106c4823383610a5d565b6106808282610e0d565b60006105a782610f31565b6106e1610d52565b61066c610f4f565b6000606080600080600060606106fd610f8c565b610705610fb9565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b60004265ffffffffffff8116831061076b57604051637669fc0f60e11b81526004810184905265ffffffffffff82166024820152604401610618565b61077f61077784610c65565b600b90610c9c565b6001600160d01b03169392505050565b60606004805461051090611ff4565b6001600160a01b0381166000908152600a602052604081206107bf90610fe6565b6001600160d01b031692915050565b6000336105a1818585610adb565b8342111561080057604051632341d78760e11b815260048101859052602401610618565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b03881691810191909152606081018690526080810185905260009061087a906108729060a0016040516020818303038152906040528051906020012061101f565b85858561104c565b9050610886818761107a565b6108908188610e43565b50505050505050565b834211156108bd5760405163313c898160e11b815260048101859052602401610618565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861090a8c6001600160a01b0316600090815260086020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006109658261101f565b905060006109758287878761104c565b9050896001600160a01b0316816001600160a01b0316146109bc576040516325c0072360e11b81526001600160a01b0380831660048301528b166024820152604401610618565b6109c78a8a8a610a4b565b50505050505050505050565b60408051808201909152600080825260208201526109f183836110cd565b9392505050565b610a00610d52565b6001600160a01b038116610a2a57604051631e4fbdf760e01b815260006004820152602401610618565b61068e81610ed7565b60006109f18284612044565b60006109f1828461206b565b610a588383836001611103565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610ad55781811015610ac657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610618565b610ad584848484036000611103565b50505050565b6001600160a01b038316610b0557604051634b637e8f60e11b815260006004820152602401610618565b6001600160a01b038216610b2f5760405163ec442f0560e01b815260006004820152602401610618565b610a588383836111d8565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015610b9357507f000000000000000000000000000000000000000000000000000000000000000046145b15610bbd57507f000000000000000000000000000000000000000000000000000000000000000090565b6105db604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600065ffffffffffff821115610c98576040516306dfcc6560e41b81526030600482015260248101839052604401610618565b5090565b815460009081816005811115610cfb576000610cb7846111e3565b610cc1908561208b565b60008881526020902090915081015465ffffffffffff9081169087161015610ceb57809150610cf9565b610cf681600161209e565b92505b505b6000610d09878785856112cb565b90508015610d4457610d2e87610d2060018461208b565b600091825260209091200190565b54600160301b90046001600160d01b0316610d47565b60005b979650505050505050565b6005546001600160a01b0361010090910416331461066c5760405163118cdaa760e01b8152336004820152602401610618565b610d8d61132d565b6005805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610e015760405163ec442f0560e01b815260006004820152602401610618565b610680600083836111d8565b6001600160a01b038216610e3757604051634b637e8f60e11b815260006004820152602401610618565b610680826000836111d8565b6001600160a01b0382811660008181526009602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4610a588183610eb086611350565b61136e565b6001600160a01b0381166000908152600a60205260408120546105a7906114da565b600580546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0381166000908152600860205260408120546105a7565b610f5761150b565b6005805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610dba3390565b60606105db7f0000000000000000000000000000000000000000000000000000000000000000600661152f565b60606105db7f0000000000000000000000000000000000000000000000000000000000000000600761152f565b805460009080156110165761100083610d2060018461208b565b54600160301b90046001600160d01b03166109f1565b60009392505050565b60006105a761102c610b3a565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060008061105e888888886115da565b92509250925061106e82826116a9565b50909695505050505050565b6001600160a01b0382166000908152600860205260409020805460018101909155818114610a58576040516301d4b62360e61b81526001600160a01b038416600482015260248101829052604401610618565b60408051808201909152600080825260208201526001600160a01b0383166000908152600a602052604090206109f19083611762565b6001600160a01b03841661112d5760405163e602df0560e01b815260006004820152602401610618565b6001600160a01b03831661115757604051634a1406b160e11b815260006004820152602401610618565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015610ad557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516111ca91815260200190565b60405180910390a350505050565b610a588383836117d2565b6000816000036111f557506000919050565b6000600161120284611839565b901c6001901b9050600181848161121b5761121b6120b1565b048201901c90506001818481611233576112336120b1565b048201901c9050600181848161124b5761124b6120b1565b048201901c90506001818481611263576112636120b1565b048201901c9050600181848161127b5761127b6120b1565b048201901c90506001818481611293576112936120b1565b048201901c905060018184816112ab576112ab6120b1565b048201901c90506109f1818285816112c5576112c56120b1565b046118cd565b60005b818310156113255760006112e284846118e3565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff1611156113115780925061131f565b61131c81600161209e565b93505b506112ce565b509392505050565b60055460ff1661066c57604051638dfc202b60e01b815260040160405180910390fd5b6001600160a01b0381166000908152602081905260408120546105a7565b816001600160a01b0316836001600160a01b0316141580156113905750600081115b15610a58576001600160a01b03831615611438576001600160a01b0383166000908152600a6020526040812081906113d390610a3f6113ce866118fe565b611932565b6001600160d01b031691506001600160d01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161142d929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615610a58576001600160a01b0382166000908152600a60205260408120819061147190610a336113ce866118fe565b6001600160d01b031691506001600160d01b03169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516114cb929190918252602082015260400190565b60405180910390a25050505050565b600063ffffffff821115610c98576040516306dfcc6560e41b81526020600482015260248101839052604401610618565b60055460ff161561066c5760405163d93c066560e01b815260040160405180910390fd5b606060ff83146115495761154283611964565b90506105a7565b81805461155590611ff4565b80601f016020809104026020016040519081016040528092919081815260200182805461158190611ff4565b80156115ce5780601f106115a3576101008083540402835291602001916115ce565b820191906000526020600020905b8154815290600101906020018083116115b157829003601f168201915b505050505090506105a7565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115611615575060009150600390508261169f565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611669573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166116955750600092506001915082905061169f565b9250600091508190505b9450945094915050565b60008260038111156116bd576116bd6120c7565b036116c6575050565b60018260038111156116da576116da6120c7565b036116f85760405163f645eedf60e01b815260040160405180910390fd5b600282600381111561170c5761170c6120c7565b0361172d5760405163fce698f760e01b815260048101829052602401610618565b6003826003811115611741576117416120c7565b03610680576040516335e2f38360e21b815260048101829052602401610618565b6040805180820190915260008082526020820152826000018263ffffffff1681548110611791576117916120dd565b60009182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b6117dd8383836119a3565b6001600160a01b03831661182e5760006117f660025490565b90506001600160d01b038082111561182b57604051630e58ae9360e11b81526004810183905260248101829052604401610618565b50505b610a588383836119b6565b600080608083901c1561184e57608092831c92015b604083901c1561186057604092831c92015b602083901c1561187257602092831c92015b601083901c1561188457601092831c92015b600883901c1561189657600892831c92015b600483901c156118a857600492831c92015b600283901c156118ba57600292831c92015b600183901c156105a75760010192915050565b60008183106118dc57816109f1565b5090919050565b60006118f260028484186120f3565b6109f19084841661209e565b60006001600160d01b03821115610c98576040516306dfcc6560e41b815260d0600482015260248101839052604401610618565b6000806119574261194f61194588610fe6565b868863ffffffff16565b879190611a2c565b915091505b935093915050565b6060600061197183611a3a565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6119ab61150b565b610a58838383611a62565b6001600160a01b0383166119d8576119d5600b610a336113ce846118fe565b50505b6001600160a01b0382166119fa576119f7600b610a3f6113ce846118fe565b50505b6001600160a01b03838116600090815260096020526040808220548584168352912054610a589291821691168361136e565b600080611957858585611b8c565b600060ff8216601f8111156105a757604051632cd44ac360e21b815260040160405180910390fd5b6001600160a01b038316611a8d578060026000828254611a82919061209e565b90915550611aff9050565b6001600160a01b03831660009081526020819052604090205481811015611ae05760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610618565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216611b1b57600280548290039055611b3a565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b7f91815260200190565b60405180910390a3505050565b825460009081908015611cab576000611baa87610d2060018561208b565b60408051808201909152905465ffffffffffff808216808452600160301b9092046001600160d01b031660208401529192509087161015611bfe57604051632520601d60e01b815260040160405180910390fd5b805165ffffffffffff808816911603611c4a5784611c2188610d2060018661208b565b80546001600160d01b0392909216600160301b0265ffffffffffff909216919091179055611c9b565b6040805180820190915265ffffffffffff80881682526001600160d01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160301b029216919091179101555b60200151925083915061195c9050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b02919093161792019190915590508161195c565b6000815180845260005b81811015611d2c57602081850181015186830182015201611d10565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006109f16020830184611d06565b80356001600160a01b0381168114611d7657600080fd5b919050565b60008060408385031215611d8e57600080fd5b611d9783611d5f565b946020939093013593505050565b600080600060608486031215611dba57600080fd5b611dc384611d5f565b9250611dd160208501611d5f565b9150604084013590509250925092565b600060208284031215611df357600080fd5b5035919050565b600060208284031215611e0c57600080fd5b6109f182611d5f565b60ff60f81b881681526000602060e06020840152611e3660e084018a611d06565b8381036040850152611e48818a611d06565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015611e9c57835183529284019291840191600101611e80565b50909c9b505050505050505050505050565b803560ff81168114611d7657600080fd5b60008060008060008060c08789031215611ed857600080fd5b611ee187611d5f565b95506020870135945060408701359350611efd60608801611eae565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215611f3257600080fd5b611f3b88611d5f565b9650611f4960208901611d5f565b95506040880135945060608801359350611f6560808901611eae565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611f9457600080fd5b611f9d83611d5f565b9150611fab60208401611d5f565b90509250929050565b60008060408385031215611fc757600080fd5b611fd083611d5f565b9150602083013563ffffffff81168114611fe957600080fd5b809150509250929050565b600181811c9082168061200857607f821691505b60208210810361202857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160d01b038181168382160190808211156120645761206461202e565b5092915050565b6001600160d01b038281168282160390808211156120645761206461202e565b818103818111156105a7576105a761202e565b808201808211156105a7576105a761202e565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008261211057634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220295bd91bd2217a5abfe1a668b57020e29c497161258cc70fee5f2a818c6a06cf64736f6c63430008180033dec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72400000000000000000000000012b2434a1022d5787bf06056f2885fe35de62bf800000000000000000000000000000000000000000000d3c21bcecceda1000000", + "nonce": "0x2", + "chainId": "0x397" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xbf3c9402be4be89c0aa1e24ea88755ad9578e9f5e6c725f065caef6c2794e83d", + "transactionType": "CREATE", + "contractName": "IdentityManager", + "contractAddress": "0xda3420ca7b915c607313d332d038ceddcd810973", + "function": null, + "arguments": [ + "0xe95f2fCF682712CAf5fB44C9608d33dbac6B536B", + "\"app_staging_6c8d4488699bc14d8d580282ac02b9d5\"", + "\"testing-verfication-action\"" + ], + "transaction": { + "from": "0x12b2434a1022d5787bf06056f2885fe35de62bf8", + "gas": "0x5762f", + "value": "0x0", + "input": "0x60e0604052600160c05234801561001557600080fd5b5060405161063d38038061063d83398101604081905261003491610183565b6001600160a01b0383166080526040516100819061006f9061005a908590602001610205565b60408051601f1981840301815291905261008d565b8260405160200161005a929190610221565b60a05250610247915050565b60006008826040516020016100a29190610205565b60408051601f198184030181529190528051602090910120901c92915050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156100f35781810151838201526020016100db565b50506000910152565b600082601f83011261010d57600080fd5b81516001600160401b0380821115610127576101276100c2565b604051601f8301601f19908116603f0116810190828211818310171561014f5761014f6100c2565b8160405283815286602085880101111561016857600080fd5b6101798460208301602089016100d8565b9695505050505050565b60008060006060848603121561019857600080fd5b83516001600160a01b03811681146101af57600080fd5b60208501519093506001600160401b03808211156101cc57600080fd5b6101d8878388016100fc565b935060408601519150808211156101ee57600080fd5b506101fb868287016100fc565b9150509250925092565b600082516102178184602087016100d8565b9190910192915050565b828152600082516102398160208501602087016100d8565b919091016020019392505050565b60805160a05160c0516103c86102756000396000610121015260006101830152600060f101526103c86000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80634b953097146100465780639271bcf714610086578063e9b70553146100aa575b600080fd5b6100726100543660046102bb565b6001600160a01b031660009081526001602052604090205460ff1690565b604051901515815260200160405180910390f35b6100a8336000908152600160208190526040909120805460ff19169091179055565b005b6100a86100b83660046102dd565b60008281526020819052604090205460ff16156100ef57604051633c7fd51360e11b81526004810183905260240160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633bc778e3847f00000000000000000000000000000000000000000000000000000000000000006101808860405160200161016c919060609190911b6bffffffffffffffffffffffff1916815260140190565b60405160208183030381529060405261026a565b867f0000000000000000000000000000000000000000000000000000000000000000876040518763ffffffff1660e01b81526004016101c49695949392919061032b565b60006040518083038186803b1580156101dc57600080fd5b505afa1580156101f0573d6000803e3d6000fd5b50505060008381526020819052604090819020805460ff19166001179055517ff786e7f77ede00a02a5464f8f0555798f42ba99a4a920ef2778db8d75e4656f7915061023f9084815260200190565b60405180910390a15050336000908152600160208190526040909120805460ff191690911790555050565b600060088260405160200161027f9190610363565b60408051601f198184030181529190528051602090910120901c92915050565b80356001600160a01b03811681146102b657600080fd5b919050565b6000602082840312156102cd57600080fd5b6102d68261029f565b9392505050565b6000806000806101608086880312156102f557600080fd5b6102fe8661029f565b9450602086013593506040860135925086818701111561031d57600080fd5b509295919450926060019150565b60006101a0820190508782528660208301528560408301528460608301528360808301526101008360a0840137979650505050505050565b6000825160005b81811015610384576020818601810151858301520161036a565b50600092019182525091905056fea26469706673582212208c08f9652bca144be895a02423f850311e5f7cff273db05ff229d02c7df6a6cc64736f6c63430008180033000000000000000000000000e95f2fcf682712caf5fb44c9608d33dbac6b536b000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002c6170705f73746167696e675f36633864343438383639396263313464386435383032383261633032623964350000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a74657374696e672d7665726669636174696f6e2d616374696f6e000000000000", + "nonce": "0x3", + "chainId": "0x397" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x58dfe8f2a8eb8e1ab0048f3fa2683bdb6b995025c8dbe7c1f77665e43db67075", + "transactionType": "CREATE", + "contractName": "GovernautGovernance", + "contractAddress": "0xb3510615d958438b2a4accad2d0bdf782e333281", + "function": null, + "arguments": [ + "0x847a6c5a32F5Ed69c43a82f46a84Df75f9B9Bd2A", + "0xDa3420Ca7b915C607313D332D038CEdDCd810973" + ], + "transaction": { + "from": "0x12b2434a1022d5787bf06056f2885fe35de62bf8", + "gas": "0x55408a", + "value": "0x0", + "input": "0x6101a06040523480156200001257600080fd5b50604051620054bc380380620054bc833981016040819052620000359162000769565b60048261012c61038460006040518060400160405280600981526020016811dbdd995c9b985d5d60ba1b8152508062000073620001b260201b60201c565b62000080826000620001cd565b6101205262000091816001620001cd565b61014052815160208084019190912060e052815190820120610100524660a0526200011f60e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c05260036200013682826200084f565b506200014490508362000206565b6200014f826200026c565b6200015a8162000313565b5050506001600160a01b031661016052620001758162000354565b506001600160a01b0381166200019e5760405163822d9aff60e01b815260040160405180910390fd5b6001600160a01b03166101805250620009dd565b6040805180820190915260018152603160f81b602082015290565b6000602083511015620001ed57620001e583620003f4565b905062000200565b81620001fa84826200084f565b5060ff90505b92915050565b6008546040805165ffffffffffff928316815291831660208301527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93910160405180910390a16008805465ffffffffffff191665ffffffffffff92909216919091179055565b8063ffffffff166000036200029c5760405163f1cfbf0560e01b8152600060048201526024015b60405180910390fd5b6008546040805163ffffffff66010000000000009093048316815291831660208301527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a16008805463ffffffff90921666010000000000000263ffffffff60301b19909216919091179055565b60075460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461910160405180910390a1600755565b606480821115620003835760405163243e544560e01b8152600481018390526024810182905260440162000293565b60006200038f62000437565b9050620003b46200039f62000453565b620003aa85620004d5565b600c91906200050f565b505060408051828152602081018590527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a1505050565b600080829050601f8151111562000422578260405163305a27a960e01b81526004016200029391906200091b565b80516200042f826200096c565b179392505050565b600062000445600c6200052c565b6001600160d01b0316905090565b6000620004606101605190565b6001600160a01b03166391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015620004bc575060408051601f3d908101601f19168201909252620004b99181019062000991565b60015b620004d057620004cb6200057c565b905090565b919050565b60006001600160d01b038211156200050b576040516306dfcc6560e41b815260d060048201526024810183905260440162000293565b5090565b6000806200051f85858562000589565b915091505b935093915050565b80546000908015620005725762000558836200054a600184620009bb565b600091825260209091200190565b54660100000000000090046001600160d01b031662000575565b60005b9392505050565b6000620004cb436200071b565b825460009081908015620006bc576000620005ab876200054a600185620009bb565b60408051808201909152905465ffffffffffff80821680845266010000000000009092046001600160d01b0316602084015291925090871610156200060357604051632520601d60e01b815260040160405180910390fd5b805165ffffffffffff8088169116036200065757846200062a886200054a600186620009bb565b80546001600160d01b039290921666010000000000000265ffffffffffff909216919091179055620006ab565b6040805180820190915265ffffffffffff80881682526001600160d01b0380881660208085019182528b54600181018d5560008d815291909120945191519092166601000000000000029216919091179101555b602001519250839150620005249050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316660100000000000002919093161792019190915590508162000524565b600065ffffffffffff8211156200050b576040516306dfcc6560e41b8152603060048201526024810183905260440162000293565b6001600160a01b03811681146200076657600080fd5b50565b600080604083850312156200077d57600080fd5b82516200078a8162000750565b60208401519092506200079d8162000750565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620007d357607f821691505b602082108103620007f457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200084a576000816000526020600020601f850160051c81016020861015620008255750805b601f850160051c820191505b81811015620008465782815560010162000831565b5050505b505050565b81516001600160401b038111156200086b576200086b620007a8565b62000883816200087c8454620007be565b84620007fa565b602080601f831160018114620008bb5760008415620008a25750858301515b600019600386901b1c1916600185901b17855562000846565b600085815260208120601f198616915b82811015620008ec57888601518255948401946001909101908401620008cb565b50858210156200090b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020808352835180602085015260005b818110156200094b578581018301518582016040015282016200092d565b506000604082860101526040601f19601f8301168501019250505092915050565b80516020808301519190811015620007f45760001960209190910360031b1b16919050565b600060208284031215620009a457600080fd5b815165ffffffffffff811681146200057557600080fd5b818103818111156200020057634e487b7160e01b600052601160045260246000fd5b60805160a05160c05160e0516101005161012051610140516101605161018051614a4b62000a71600039600081816113d6015261172a015260008181610b5701528181611300015281816118eb0152818161258c015261277d015260006125570152600061252a01526000612aee01526000612ac601526000612a2101526000612a4b01526000612a750152614a4b6000f3fe6080604052600436106103395760003560e01c80637d5e81e2116101ab578063c28bc2fa116100f7578063e540d01d11610095578063f23a6e611161006f578063f23a6e6114610afc578063f8ce560a14610b28578063fc0c546a14610b48578063fe0d94c114610b7b57600080fd5b8063e540d01d14610a9c578063eb9019d414610abc578063ece40cc114610adc57600080fd5b8063da35c664116100d1578063da35c664146109ed578063dd4e2ba514610a02578063ddf0b00914610a48578063deaaa7cc14610a6857600080fd5b8063c28bc2fa1461098a578063c59057e41461099d578063d4651276146109bd57600080fd5b80639a802a6d11610164578063ab58fb8e1161013e578063ab58fb8e146108f1578063b58131b014610929578063bc197c811461093e578063c01f9e371461096a57600080fd5b80639a802a6d1461089b578063a7713a70146108bb578063a9a95294146108d057600080fd5b80637d5e81e2146107bd5780637ecebe00146107dd57806384b0196e146108135780638ff262e31461083b57806391ddadf41461085b57806397c3d3341461088757600080fd5b80633e4f49e61161028557806356781388116102235780635f398a14116101fd5780635f398a141461073d57806360c4247f1461075d578063790518871461077d5780637b3c71d31461079d57600080fd5b806356781388146106c45780635700b703146106e45780635b8d0e0d1461071d57600080fd5b8063452115d61161025f578063452115d6146106105780634bf5d7e914610630578063544ffc9c1461064557806354fd4d501461069a57600080fd5b80633e4f49e61461057957806340e58ee5146105a657806343859632146105c657600080fd5b8063160cbed7116102f25780632d63f693116102cc5780632d63f693146104df5780632e82db94146104ff5780632fe3e261146105305780633932abb11461056457600080fd5b8063160cbed71461047c57806316e9eaec1461049c5780632656227d146104cc57600080fd5b806301ffc9a71461034757806302a251a31461037c57806306f3f9e6146103a857806306fdde03146103c8578063143489d0146103ea578063150b7a021461043857600080fd5b3661034257005b005b600080fd5b34801561035357600080fd5b50610367610362366004613905565b610b8e565b60405190151581526020015b60405180910390f35b34801561038857600080fd5b50600854600160301b900463ffffffff165b604051908152602001610373565b3480156103b457600080fd5b506103406103c336600461392f565b610be5565b3480156103d457600080fd5b506103dd610bf9565b6040516103739190613998565b3480156103f657600080fd5b5061042061040536600461392f565b6000908152600460205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610373565b34801561044457600080fd5b50610463610453366004613a8d565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610373565b34801561048857600080fd5b5061039a610497366004613c66565b610c8b565b3480156104a857600080fd5b506104bc6104b736600461392f565b610ccb565b6040516103739493929190613dc5565b61039a6104da366004613c66565b610ed5565b3480156104eb57600080fd5b5061039a6104fa36600461392f565b610f2e565b34801561050b57600080fd5b5061051f61051a36600461392f565b610f4f565b604051610373959493929190613e10565b34801561053c57600080fd5b5061039a7f3e83946653575f9a39005e1545185629e92736b7528ab20ca3816f315424a81181565b34801561057057600080fd5b5061039a610f9f565b34801561058557600080fd5b5061059961059436600461392f565b610fb2565b6040516103739190613e9a565b3480156105b257600080fd5b506103406105c136600461392f565b6110ec565b3480156105d257600080fd5b506103676105e1366004613ea8565b60008281526009602090815260408083206001600160a01b038516845260030190915290205460ff1692915050565b34801561061c57600080fd5b5061039a61062b366004613c66565b61128d565b34801561063c57600080fd5b506103dd6112fc565b34801561065157600080fd5b5061067f61066036600461392f565b6000908152600960205260409020805460018201546002909201549092565b60408051938452602084019290925290820152606001610373565b3480156106a657600080fd5b506040805180820190915260018152603160f81b60208201526103dd565b3480156106d057600080fd5b5061039a6106df366004613ee5565b6113be565b3480156106f057600080fd5b506103676106ff366004613f08565b6001600160a01b03166000908152600d602052604090205460ff1690565b34801561072957600080fd5b5061039a610738366004613f6b565b611477565b34801561074957600080fd5b5061039a610758366004614023565b6115d6565b34801561076957600080fd5b5061039a61077836600461392f565b61162b565b34801561078957600080fd5b506103406107983660046140ba565b6116b9565b3480156107a957600080fd5b5061039a6107b83660046140d7565b6116ca565b3480156107c957600080fd5b5061039a6107d8366004614130565b611712565b3480156107e957600080fd5b5061039a6107f8366004613f08565b6001600160a01b031660009081526002602052604090205490565b34801561081f57600080fd5b506108286117cf565b60405161037397969594939291906141e4565b34801561084757600080fd5b5061039a610856366004614254565b611815565b34801561086757600080fd5b506108706118e7565b60405165ffffffffffff9091168152602001610373565b34801561089357600080fd5b50606461039a565b3480156108a757600080fd5b5061039a6108b63660046142a3565b61196f565b3480156108c757600080fd5b5061039a611984565b3480156108dc57600080fd5b506103676108eb36600461392f565b50600090565b3480156108fd57600080fd5b5061039a61090c36600461392f565b60009081526004602052604090206001015465ffffffffffff1690565b34801561093557600080fd5b5061039a61199e565b34801561094a57600080fd5b506104636109593660046142f9565b63bc197c8160e01b95945050505050565b34801561097657600080fd5b5061039a61098536600461392f565b6119a9565b610340610998366004614388565b6119ec565b3480156109a957600080fd5b5061039a6109b8366004613c66565b611a6c565b3480156109c957600080fd5b506103676109d8366004613f08565b600d6020526000908152604090205460ff1681565b3480156109f957600080fd5b50600a5461039a565b348015610a0e57600080fd5b506040805180820190915260208082527f737570706f72743d627261766f2671756f72756d3d666f722c6162737461696e908201526103dd565b348015610a5457600080fd5b50610340610a6336600461392f565b611aa6565b348015610a7457600080fd5b5061039a7ff2aad550cf55f045cb27e9c559f9889fdfb6e6cdaa032301d6ea397784ae51d781565b348015610aa857600080fd5b50610340610ab73660046143c9565b611c42565b348015610ac857600080fd5b5061039a610ad73660046143ef565b611c53565b348015610ae857600080fd5b50610340610af736600461392f565b611c74565b348015610b0857600080fd5b50610463610b17366004614419565b63f23a6e6160e01b95945050505050565b348015610b3457600080fd5b5061039a610b4336600461392f565b611c85565b348015610b5457600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610420565b610340610b8936600461392f565b611c90565b60006001600160e01b031982166332a2ad4360e11b1480610bbf57506001600160e01b03198216630271189760e51b145b80610bda57506301ffc9a760e01b6001600160e01b03198316145b92915050565b905090565b610bed611e2c565b610bf681611e63565b50565b606060038054610c089061447d565b80601f0160208091040260200160405190810160405280929190818152602001828054610c349061447d565b8015610c815780601f10610c5657610100808354040283529160200191610c81565b820191906000526020600020905b815481529060010190602001808311610c6457829003601f168201915b5050505050905090565b600080610c9a86868686611a6c565b9050610caf81610caa6004611ef9565b611f1c565b506000604051634844252360e11b815260040160405180910390fd5b6000818152600b602090815260408083208151815460a0948102820185019093526080810183815260609586958695919485949390928492849190840182828015610d3f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d21575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610d9757602002820191906000526020600020905b815481526020019060010190808311610d83575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015610e71578382906000526020600020018054610de49061447d565b80601f0160208091040260200160405190810160405280929190818152602001828054610e109061447d565b8015610e5d5780601f10610e3257610100808354040283529160200191610e5d565b820191906000526020600020905b815481529060010190602001808311610e4057829003601f168201915b505050505081526020019060010190610dc5565b505050508152602001600382015481525050905080606001516000801b03610eb457604051636ad0607560e01b8152600481018790526024015b60405180910390fd5b80516020820151604083015160609093015191989097509195509350915050565b600080610ee486868686611a6c565b90506000610ef487878787611f5b565b6000928352600460209081526040808520546001600160a01b03168552600d909152909220805460ff191660011790555095945050505050565b600090815260046020526040902054600160a01b900465ffffffffffff1690565b60006060806060600080600a8781548110610f6c57610f6c6144b7565b90600052602060002001549050600080600080610f8885610ccb565b979e929d50909b5099509497509395505050505050565b6000610be060085465ffffffffffff1690565b6000818152600460205260408120805460ff600160f01b8204811691600160f81b9004168115610fe757506007949350505050565b8015610ff857506002949350505050565b600061100386610f2e565b90508060000361102957604051636ad0607560e01b815260048101879052602401610eab565b60006110336118e7565b65ffffffffffff169050808210611051575060009695505050505050565b600061105c886119a9565b905081811061107357506001979650505050505050565b61107c88612086565b158061109c57506000888152600960205260409020805460019091015411155b156110af57506003979650505050505050565b60008881526004602052604090206001015465ffffffffffff166000036110de57506004979650505050505050565b506005979650505050505050565b6000818152600b602090815260409182902080548351818402810184019094528084529092611288929091849183018282801561115257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611134575b5050505050826001018054806020026020016040519081016040528092919081815260200182805480156111a557602002820191906000526020600020905b815481526020019060010190808311611191575b505050505083600201805480602002602001604051908101604052809291908181526020016000905b8282101561127a5783829060005260206000200180546111ed9061447d565b80601f01602080910402602001604051908101604052809291908181526020018280546112199061447d565b80156112665780601f1061123b57610100808354040283529160200191611266565b820191906000526020600020905b81548152906001019060200180831161124957829003601f168201915b5050505050815260200190600101906111ce565b50505050846003015461128d565b505050565b60008061129c86868686611a6c565b90506112ac81610caa6000611ef9565b506000818152600460205260409020546001600160a01b031633146112e65760405163233d98e360e01b8152336004820152602401610eab565b6112f2868686866120bd565b9695505050505050565b60607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634bf5d7e96040518163ffffffff1660e01b8152600401600060405180830381865afa92505050801561137d57506040513d6000823e601f3d908101601f1916820160405261137a91908101906144cd565b60015b6113b9575060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b919050565b604051634b95309760e01b81523360048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634b95309790602401602060405180830381865afa158015611425573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611449919061453a565b6114665760405163421e68c960e11b815260040160405180910390fd5b611470838361216e565b9392505050565b60008061155a876115547f3e83946653575f9a39005e1545185629e92736b7528ab20ca3816f315424a8118c8c8c6114cc8e6001600160a01b0316600090815260026020526040902080546001810190915590565b8d8d6040516114dc92919061455c565b60405180910390208c805190602001206040516020016115399796959493929190968752602087019590955260ff9390931660408601526001600160a01b03919091166060850152608084015260a083015260c082015260e00190565b6040516020818303038152906040528051906020012061218f565b856121bc565b905080611585576040516394ab6c0760e01b81526001600160a01b0388166004820152602401610eab565b6115c989888a89898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b9250612214915050565b9998505050505050505050565b60008033905061162087828888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250612214915050565b979650505050505050565b600c8054600091829061163f600184614582565b8154811061164f5761164f6144b7565b6000918252602090912001805490915065ffffffffffff811690600160301b90046001600160d01b0316858211611692576001600160d01b031695945050505050565b6116a661169e876122f1565b600c90612328565b6001600160d01b03169695505050505050565b6116c1611e2c565b610bf6816123dd565b6000803390506112f286828787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061244392505050565b604051634b95309760e01b81523360048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634b95309790602401602060405180830381865afa158015611779573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061179d919061453a565b6117ba5760405163421e68c960e11b815260040160405180910390fd5b6117c685858585612466565b95945050505050565b6000606080600080600060606117e3612523565b6117eb612550565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000806118a1846115547ff2aad550cf55f045cb27e9c559f9889fdfb6e6cdaa032301d6ea397784ae51d789898961186a8b6001600160a01b0316600090815260026020526040902080546001810190915590565b60408051602081019690965285019390935260ff90911660608401526001600160a01b0316608083015260a082015260c001611539565b9050806118cc576040516394ab6c0760e01b81526001600160a01b0385166004820152602401610eab565b6112f286858760405180602001604052806000815250612443565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611963575060408051601f3d908101601f1916820190925261196091810190614595565b60015b6113b957610be061257d565b600061197c848484612588565b949350505050565b6000611990600c61261e565b6001600160d01b0316905090565b6000610be060075490565b6000818152600460205260408120546119de90600160d01b810463ffffffff1690600160a01b900465ffffffffffff166145b2565b65ffffffffffff1692915050565b6119f4611e2c565b600080856001600160a01b0316858585604051611a1292919061455c565b60006040518083038185875af1925050503d8060008114611a4f576040519150601f19603f3d011682016040523d82523d6000602084013e611a54565b606091505b5091509150611a638282612657565b50505050505050565b600084848484604051602001611a859493929190613dc5565b60408051601f19818403018152919052805160209091012095945050505050565b6000818152600b6020908152604091829020805483518184028101840190945280845290926112889290918491830182828015611b0c57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611aee575b505050505082600101805480602002602001604051908101604052809291908181526020018280548015611b5f57602002820191906000526020600020905b815481526020019060010190808311611b4b575b505050505083600201805480602002602001604051908101604052809291908181526020016000905b82821015611c34578382906000526020600020018054611ba79061447d565b80601f0160208091040260200160405190810160405280929190818152602001828054611bd39061447d565b8015611c205780601f10611bf557610100808354040283529160200191611c20565b820191906000526020600020905b815481529060010190602001808311611c0357829003601f168201915b505050505081526020019060010190611b88565b505050508460030154610c8b565b611c4a611e2c565b610bf681612673565b60006114708383611c6f60408051602081019091526000815290565b612588565b611c7c611e2c565b610bf681612711565b6000610bda82612752565b6000818152600b6020908152604091829020805483518184028101840190945280845290926112889290918491830182828015611cf657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611cd8575b505050505082600101805480602002602001604051908101604052809291908181526020018280548015611d4957602002820191906000526020600020905b815481526020019060010190808311611d35575b505050505083600201805480602002602001604051908101604052809291908181526020016000905b82821015611e1e578382906000526020600020018054611d919061447d565b80601f0160208091040260200160405190810160405280929190818152602001828054611dbd9061447d565b8015611e0a5780601f10611ddf57610100808354040283529160200191611e0a565b820191906000526020600020905b815481529060010190602001808311611ded57829003601f168201915b505050505081526020019060010190611d72565b505050508460030154610ed5565b303314611e4e576040516347096e4760e01b8152336004820152602401610eab565b565b80611e5b60056127fc565b03611e505750565b606480821115611e905760405163243e544560e01b81526004810183905260248101829052604401610eab565b6000611e9a611984565b9050611eb9611ea76118e7565b611eb08561287a565b600c91906128ae565b505060408051828152602081018590527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a1505050565b6000816007811115611f0d57611f0d613e62565b600160ff919091161b92915050565b600080611f2884610fb2565b9050600083611f3683611ef9565b1603611470578381846040516331b75e4d60e01b8152600401610eab939291906145d8565b600080611f6a86868686611a6c565b9050611f8a81611f7a6005611ef9565b611f846004611ef9565b17611f1c565b506000818152600460205260409020805460ff60f01b1916600160f01b17905530611fb23090565b6001600160a01b03161461203c5760005b865181101561203a57306001600160a01b0316878281518110611fe857611fe86144b7565b60200260200101516001600160a01b03160361203257612032858281518110612013576120136144b7565b60200260200101518051906020012060056128c990919063ffffffff16565b600101611fc3565b505b612049818787878761293a565b6040518181527f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f906020015b60405180910390a195945050505050565b6000818152600960205260408120600281015460018201546120a891906145fa565b6120b4610b4385610f2e565b11159392505050565b6000806120cc86868686611a6c565b905061211a816120dc6007611ef9565b6120e66006611ef9565b6120f06002611ef9565b60016120fd60078261460d565b61210890600261470a565b6121129190614582565b181818611f1c565b506000818152600460205260409081902080546001600160f81b0316600160f81b179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c906120759083815260200190565b60008033905061197c84828560405180602001604052806000815250612443565b6000610bda61219c612a14565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060006121cb8585612b3f565b50909250905060008160038111156121e5576121e5613e62565b1480156122035750856001600160a01b0316826001600160a01b0316145b806112f257506112f2868686612b8c565b600061222486610caa6001611ef9565b50600061223a8661223489610f2e565b85612588565b90506122498787878487612c67565b825160000361229e57856001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda4888784886040516122919493929190614719565b60405180910390a26112f2565b856001600160a01b03167fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb871288878488886040516122df959493929190614741565b60405180910390a29695505050505050565b600065ffffffffffff821115612324576040516306dfcc6560e41b81526030600482015260248101839052604401610eab565b5090565b81546000908181600581111561238757600061234384612d60565b61234d9085614582565b60008881526020902090915081015465ffffffffffff908116908716101561237757809150612385565b6123828160016145fa565b92505b505b600061239587878585612e48565b905080156123d0576123ba876123ac600184614582565b600091825260209091200190565b54600160301b90046001600160d01b0316611620565b6000979650505050505050565b6008546040805165ffffffffffff928316815291831660208301527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93910160405180910390a16008805465ffffffffffff191665ffffffffffff92909216919091179055565b60006117c68585858561246160408051602081019091526000815290565b612214565b6000336124738184612eaa565b61249b5760405163d9b3955760e01b81526001600160a01b0382166004820152602401610eab565b60006124c28260016124ab6118e7565b6124b5919061477b565b65ffffffffffff16611c53565b905060006124ce61199e565b90508082101561250a57604051636121770b60e11b81526001600160a01b03841660048201526024810183905260448101829052606401610eab565b6125178888888887612f95565b98975050505050505050565b6060610be07f00000000000000000000000000000000000000000000000000000000000000006000612fa4565b6060610be07f00000000000000000000000000000000000000000000000000000000000000006001612fa4565b6000610be0436122f1565b60007f0000000000000000000000000000000000000000000000000000000000000000604051630748d63560e31b81526001600160a01b038681166004830152602482018690529190911690633a46b1a890604401602060405180830381865afa1580156125fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197c919061479a565b8054600090801561264e57612638836123ac600184614582565b54600160301b90046001600160d01b0316611470565b60009392505050565b60608261266c576126678261304f565b610bda565b5080610bda565b8063ffffffff1660000361269d5760405163f1cfbf0560e01b815260006004820152602401610eab565b6008546040805163ffffffff600160301b9093048316815291831660208301527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a16008805463ffffffff909216600160301b0269ffffffff00000000000019909216919091179055565b60075460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461910160405180910390a1600755565b6000606461275f8361162b565b604051632394e7a360e21b8152600481018590526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638e539e8c90602401602060405180830381865afa1580156127c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127e8919061479a565b6127f291906147b3565b610bda91906147e0565b80546000906001600160801b0380821691600160801b9004168103612834576040516375e52f4f60e01b815260040160405180910390fd5b6001600160801b038181166000908152600185810160205260408220805492905585546fffffffffffffffffffffffffffffffff19169301909116919091179092555090565b60006001600160d01b03821115612324576040516306dfcc6560e41b815260d0600482015260248101839052604401610eab565b6000806128bc858585613078565b915091505b935093915050565b81546001600160801b03600160801b82048116918116600183019091160361290457604051638acb5f2760e01b815260040160405180910390fd5b6001600160801b03808216600090815260018086016020526040909120939093558354919092018216600160801b029116179055565b60005b8451811015612a0c5760008086838151811061295b5761295b6144b7565b60200260200101516001600160a01b031686848151811061297e5761297e6144b7565b6020026020010151868581518110612998576129986144b7565b60200260200101516040516129ad9190614802565b60006040518083038185875af1925050503d80600081146129ea576040519150601f19603f3d011682016040523d82523d6000602084013e6129ef565b606091505b50915091506129fe8282612657565b50505080600101905061293d565b505050505050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015612a6d57507f000000000000000000000000000000000000000000000000000000000000000046145b15612a9757507f000000000000000000000000000000000000000000000000000000000000000090565b610be0604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60008060008351604103612b795760208401516040850151606086015160001a612b6b888285856131f2565b955095509550505050612b85565b50508151600091506002905b9250925092565b6000806000856001600160a01b03168585604051602401612bae92919061481e565b60408051601f198184030181529181526020820180516001600160e01b0316630b135d3f60e11b17905251612be39190614802565b600060405180830381855afa9150503d8060008114612c1e576040519150601f19603f3d011682016040523d82523d6000602084013e612c23565b606091505b5091509150818015612c3757506020815110155b80156112f257508051630b135d3f60e11b90612c5c908301602090810190840161479a565b149695505050505050565b60008581526009602090815260408083206001600160a01b0388168452600381019092529091205460ff1615612cbb576040516371c6af4960e01b81526001600160a01b0386166004820152602401610eab565b6001600160a01b03851660009081526003820160205260409020805460ff1916600117905560ff8416612d075782816000016000828254612cfc91906145fa565b90915550612a0c9050565b60001960ff851601612d275782816001016000828254612cfc91906145fa565b60011960ff851601612d475782816002016000828254612cfc91906145fa565b6040516303599be160e11b815260040160405180910390fd5b600081600003612d7257506000919050565b60006001612d7f846132c1565b901c6001901b90506001818481612d9857612d986147ca565b048201901c90506001818481612db057612db06147ca565b048201901c90506001818481612dc857612dc86147ca565b048201901c90506001818481612de057612de06147ca565b048201901c90506001818481612df857612df86147ca565b048201901c90506001818481612e1057612e106147ca565b048201901c90506001818481612e2857612e286147ca565b048201901c905061147081828581612e4257612e426147ca565b04613355565b60005b81831015612ea2576000612e5f848461336b565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff161115612e8e57809250612e9c565b612e998160016145fa565b93505b50612e4b565b509392505050565b80516000906034811015612ec2576001915050610bda565b82810160131901516001600160a01b031981166b046e0e4dee0dee6cae47a60f60a31b14612ef557600192505050610bda565b600080612f03602885614582565b90505b83811015612f7457600080612f3a888481518110612f2657612f266144b7565b01602001516001600160f81b031916613386565b9150915081612f525760019650505050505050610bda565b8060ff166004856001600160a01b0316901b1793505050806001019050612f06565b50856001600160a01b0316816001600160a01b031614935050505092915050565b60006112f28686868686613418565b606060ff8314612fbe57612fb7836134f3565b9050610bda565b818054612fca9061447d565b80601f0160208091040260200160405190810160405280929190818152602001828054612ff69061447d565b80156130435780601f1061301857610100808354040283529160200191613043565b820191906000526020600020905b81548152906001019060200180831161302657829003601f168201915b50505050509050610bda565b80511561305f5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b825460009081908015613197576000613096876123ac600185614582565b60408051808201909152905465ffffffffffff808216808452600160301b9092046001600160d01b0316602084015291925090871610156130ea57604051632520601d60e01b815260040160405180910390fd5b805165ffffffffffff808816911603613136578461310d886123ac600186614582565b80546001600160d01b0392909216600160301b0265ffffffffffff909216919091179055613187565b6040805180820190915265ffffffffffff80881682526001600160d01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160301b029216919091179101555b6020015192508391506128c19050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b0291909316179201919091559050816128c1565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561322d57506000915060039050826132b7565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015613281573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166132ad575060009250600191508290506132b7565b9250600091508190505b9450945094915050565b600080608083901c156132d657608092831c92015b604083901c156132e857604092831c92015b602083901c156132fa57602092831c92015b601083901c1561330c57601092831c92015b600883901c1561331e57600892831c92015b600483901c1561333057600492831c92015b600283901c1561334257600292831c92015b600183901c15610bda5760010192915050565b60008183106133645781611470565b5090919050565b600061337a60028484186147e0565b611470908484166145fa565b60008060f883901c602f811180156133a15750603a8160ff16105b156133b657600194602f199091019350915050565b8060ff1660401080156133cc575060478160ff16105b156133e1576001946036199091019350915050565b8060ff1660601080156133f7575060678160ff16105b1561340c576001946056199091019350915050565b50600093849350915050565b6000806134288787878787613532565b600a805460018101825560009182527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a801829055604080516080810182528a815260208181018b90528183018a90528851898201206060830152848452600b81529190922082518051949550929390926134a69284929101906137ab565b5060208281015180516134bf926001850192019061380c565b50604082015180516134db916002840191602090910190613847565b50606091909101516003909101559695505050505050565b6060600061350083613752565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b60006135478686868680519060200120611a6c565b90508451865114158061355c57508351865114155b8061356657508551155b1561359b57855184518651604051630447b05d60e41b8152600481019390935260248301919091526044820152606401610eab565b600081815260046020526040902054600160a01b900465ffffffffffff16156135e657806135c882610fb2565b6040516331b75e4d60e01b8152610eab9291906000906004016145d8565b60006135f0610f9f565b6135f86118e7565b65ffffffffffff1661360a91906145fa565b9050600061362560085463ffffffff600160301b9091041690565b600084815260046020526040902080546001600160a01b0319166001600160a01b038716178155909150613658836122f1565b815465ffffffffffff91909116600160a01b0265ffffffffffff60a01b199091161781556136858261377a565b815463ffffffff91909116600160d01b0263ffffffff60d01b1990911617815588517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e090859087908c908c906001600160401b038111156136e8576136e86139c2565b60405190808252806020026020018201604052801561371b57816020015b60608152602001906001900390816137065790505b508c896137288a826145fa565b8e60405161373e99989796959493929190614837565b60405180910390a150505095945050505050565b600060ff8216601f811115610bda57604051632cd44ac360e21b815260040160405180910390fd5b600063ffffffff821115612324576040516306dfcc6560e41b81526020600482015260248101839052604401610eab565b828054828255906000526020600020908101928215613800579160200282015b8281111561380057825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906137cb565b50612324929150613899565b828054828255906000526020600020908101928215613800579160200282015b8281111561380057825182559160200191906001019061382c565b82805482825590600052602060002090810192821561388d579160200282015b8281111561388d578251829061387d9082614956565b5091602001919060010190613867565b506123249291506138ae565b5b80821115612324576000815560010161389a565b808211156123245760006138c282826138cb565b506001016138ae565b5080546138d79061447d565b6000825580601f106138e7575050565b601f016020900490600052602060002090810190610bf69190613899565b60006020828403121561391757600080fd5b81356001600160e01b03198116811461147057600080fd5b60006020828403121561394157600080fd5b5035919050565b60005b8381101561396357818101518382015260200161394b565b50506000910152565b60008151808452613984816020860160208601613948565b601f01601f19169290920160200192915050565b602081526000611470602083018461396c565b80356001600160a01b03811681146113b957600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613a0057613a006139c2565b604052919050565b60006001600160401b03821115613a2157613a216139c2565b50601f01601f191660200190565b6000613a42613a3d84613a08565b6139d8565b9050828152838383011115613a5657600080fd5b828260208301376000602084830101529392505050565b600082601f830112613a7e57600080fd5b61147083833560208501613a2f565b60008060008060808587031215613aa357600080fd5b613aac856139ab565b9350613aba602086016139ab565b92506040850135915060608501356001600160401b03811115613adc57600080fd5b613ae887828801613a6d565b91505092959194509250565b60006001600160401b03821115613b0d57613b0d6139c2565b5060051b60200190565b600082601f830112613b2857600080fd5b81356020613b38613a3d83613af4565b8083825260208201915060208460051b870101935086841115613b5a57600080fd5b602086015b84811015613b7d57613b70816139ab565b8352918301918301613b5f565b509695505050505050565b600082601f830112613b9957600080fd5b81356020613ba9613a3d83613af4565b8083825260208201915060208460051b870101935086841115613bcb57600080fd5b602086015b84811015613b7d5780358352918301918301613bd0565b600082601f830112613bf857600080fd5b81356020613c08613a3d83613af4565b82815260059290921b84018101918181019086841115613c2757600080fd5b8286015b84811015613b7d5780356001600160401b03811115613c4a5760008081fd5b613c588986838b0101613a6d565b845250918301918301613c2b565b60008060008060808587031215613c7c57600080fd5b84356001600160401b0380821115613c9357600080fd5b613c9f88838901613b17565b95506020870135915080821115613cb557600080fd5b613cc188838901613b88565b94506040870135915080821115613cd757600080fd5b50613ce487828801613be7565b949793965093946060013593505050565b60008151808452602080850194506020840160005b83811015613d2f5781516001600160a01b031687529582019590820190600101613d0a565b509495945050505050565b60008151808452602080850194506020840160005b83811015613d2f57815187529582019590820190600101613d4f565b60008282518085526020808601955060208260051b8401016020860160005b84811015613db857601f19868403018952613da683835161396c565b98840198925090830190600101613d8a565b5090979650505050505050565b608081526000613dd86080830187613cf5565b8281036020840152613dea8187613d3a565b90508281036040840152613dfe8186613d6b565b91505082606083015295945050505050565b85815260a060208201526000613e2960a0830187613cf5565b8281036040840152613e3b8187613d3a565b90508281036060840152613e4f8186613d6b565b9150508260808301529695505050505050565b634e487b7160e01b600052602160045260246000fd5b60088110613e9657634e487b7160e01b600052602160045260246000fd5b9052565b60208101610bda8284613e78565b60008060408385031215613ebb57600080fd5b82359150613ecb602084016139ab565b90509250929050565b803560ff811681146113b957600080fd5b60008060408385031215613ef857600080fd5b82359150613ecb60208401613ed4565b600060208284031215613f1a57600080fd5b611470826139ab565b60008083601f840112613f3557600080fd5b5081356001600160401b03811115613f4c57600080fd5b602083019150836020828501011115613f6457600080fd5b9250929050565b600080600080600080600060c0888a031215613f8657600080fd5b87359650613f9660208901613ed4565b9550613fa4604089016139ab565b945060608801356001600160401b0380821115613fc057600080fd5b613fcc8b838c01613f23565b909650945060808a0135915080821115613fe557600080fd5b613ff18b838c01613a6d565b935060a08a013591508082111561400757600080fd5b506140148a828b01613a6d565b91505092959891949750929550565b60008060008060006080868803121561403b57600080fd5b8535945061404b60208701613ed4565b935060408601356001600160401b038082111561406757600080fd5b61407389838a01613f23565b9095509350606088013591508082111561408c57600080fd5b5061409988828901613a6d565b9150509295509295909350565b65ffffffffffff81168114610bf657600080fd5b6000602082840312156140cc57600080fd5b8135611470816140a6565b600080600080606085870312156140ed57600080fd5b843593506140fd60208601613ed4565b925060408501356001600160401b0381111561411857600080fd5b61412487828801613f23565b95989497509550505050565b6000806000806080858703121561414657600080fd5b84356001600160401b038082111561415d57600080fd5b61416988838901613b17565b9550602087013591508082111561417f57600080fd5b61418b88838901613b88565b945060408701359150808211156141a157600080fd5b6141ad88838901613be7565b935060608701359150808211156141c357600080fd5b508501601f810187136141d557600080fd5b613ae887823560208401613a2f565b60ff60f81b8816815260e06020820152600061420360e083018961396c565b8281036040840152614215818961396c565b606084018890526001600160a01b038716608085015260a0840186905283810360c085015290506142468185613d3a565b9a9950505050505050505050565b6000806000806080858703121561426a57600080fd5b8435935061427a60208601613ed4565b9250614288604086016139ab565b915060608501356001600160401b03811115613adc57600080fd5b6000806000606084860312156142b857600080fd5b6142c1846139ab565b92506020840135915060408401356001600160401b038111156142e357600080fd5b6142ef86828701613a6d565b9150509250925092565b600080600080600060a0868803121561431157600080fd5b61431a866139ab565b9450614328602087016139ab565b935060408601356001600160401b038082111561434457600080fd5b61435089838a01613b88565b9450606088013591508082111561436657600080fd5b61437289838a01613b88565b9350608088013591508082111561408c57600080fd5b6000806000806060858703121561439e57600080fd5b6143a7856139ab565b93506020850135925060408501356001600160401b0381111561411857600080fd5b6000602082840312156143db57600080fd5b813563ffffffff8116811461147057600080fd5b6000806040838503121561440257600080fd5b61440b836139ab565b946020939093013593505050565b600080600080600060a0868803121561443157600080fd5b61443a866139ab565b9450614448602087016139ab565b9350604086013592506060860135915060808601356001600160401b0381111561447157600080fd5b61409988828901613a6d565b600181811c9082168061449157607f821691505b6020821081036144b157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156144df57600080fd5b81516001600160401b038111156144f557600080fd5b8201601f8101841361450657600080fd5b8051614514613a3d82613a08565b81815285602083850101111561452957600080fd5b6117c6826020830160208601613948565b60006020828403121561454c57600080fd5b8151801515811461147057600080fd5b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610bda57610bda61456c565b6000602082840312156145a757600080fd5b8151611470816140a6565b65ffffffffffff8181168382160190808211156145d1576145d161456c565b5092915050565b838152606081016145ec6020830185613e78565b826040830152949350505050565b80820180821115610bda57610bda61456c565b60ff8181168382160190811115610bda57610bda61456c565b600181815b808511156146615781600019048211156146475761464761456c565b8085161561465457918102915b93841c939080029061462b565b509250929050565b60008261467857506001610bda565b8161468557506000610bda565b816001811461469b57600281146146a5576146c1565b6001915050610bda565b60ff8411156146b6576146b661456c565b50506001821b610bda565b5060208310610133831016604e8410600b84101617156146e4575081810a610bda565b6146ee8383614626565b80600019048211156147025761470261456c565b029392505050565b600061147060ff841683614669565b84815260ff841660208201528260408201526080606082015260006112f2608083018461396c565b85815260ff8516602082015283604082015260a06060820152600061476960a083018561396c565b8281036080840152612517818561396c565b65ffffffffffff8281168282160390808211156145d1576145d161456c565b6000602082840312156147ac57600080fd5b5051919050565b8082028115828204841417610bda57610bda61456c565b634e487b7160e01b600052601260045260246000fd5b6000826147fd57634e487b7160e01b600052601260045260246000fd5b500490565b60008251614814818460208701613948565b9190910192915050565b82815260406020820152600061197c604083018461396c565b60006101208b8352602060018060a01b038c16818501528160408501526148608285018c613cf5565b91508382036060850152614874828b613d3a565b915083820360808501528189518084528284019150828160051b850101838c0160005b838110156148c557601f198784030185526148b383835161396c565b94860194925090850190600101614897565b505086810360a08801526148d9818c613d6b565b9450505050508560c08401528460e08401528281036101008401526148fe818561396c565b9c9b505050505050505050505050565b601f821115611288576000816000526020600020601f850160051c810160208610156149375750805b601f850160051c820191505b81811015612a0c57828155600101614943565b81516001600160401b0381111561496f5761496f6139c2565b6149838161497d845461447d565b8461490e565b602080601f8311600181146149b857600084156149a05750858301515b600019600386901b1c1916600185901b178555612a0c565b600085815260208120601f198616915b828110156149e7578886015182559484019460019091019084016149c8565b5085821015614a055787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fea264697066735822122049585afd8bc08ccb30ffb6cc5cd5d567e925f2c6d5436b4025314fb3f82939f264736f6c63430008180033000000000000000000000000847a6c5a32f5ed69c43a82f46a84df75f9b9bd2a000000000000000000000000da3420ca7b915c607313d332d038ceddcd810973", + "nonce": "0x4", + "chainId": "0x397" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x04cdd726471fc1c3834d3860836f2cf160208fe525cf7542294fc42836584502", + "transactionType": "CREATE", + "contractName": "Funding", + "contractAddress": "0x0a2e3f28ba816c6b39135a5138a4a7ec294fb924", + "function": null, + "arguments": [ + "0x12B2434a1022d5787bf06056F2885Fe35De62Bf8", + "0xb3510615D958438b2A4AcCad2D0bDF782E333281", + "0x847a6c5a32F5Ed69c43a82f46a84Df75f9B9Bd2A" + ], + "transaction": { + "from": "0x12b2434a1022d5787bf06056f2885fe35de62bf8", + "gas": "0x100541", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610e5c380380610e5c83398101604081905261002f91610295565b826001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61006781610229565b50600180556001600160a01b0382166100965760405160016269813d60e11b0319815260040160405180910390fd5b600280546001600160a01b03199081166001600160a01b039485161790915560038054821692841692909217909155600060048190556040805160e0810182528281526020808201848152928201848152606083018581526080840186815260a0850187815260c08601888152978052600590945293517f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc805490981698169790971790955591517f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bd5592517f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746be5592517f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bf5590517f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746c05590517f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746c155517f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746c2805460ff191660ff909216919091179055506102d8565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b038116811461029057600080fd5b919050565b6000806000606084860312156102aa57600080fd5b6102b384610279565b92506102c160208501610279565b91506102cf60408501610279565b90509250925092565b610b75806102e76000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063715018a611610066578063715018a61461017f5780638c590917146101895780638da5cb5b1461019c578063d12f3b87146101b7578063f2fde38b146101e257600080fd5b8063142a78c6146100985780631b55e338146101385780633dce2b461461015957806361a6381f1461016c575b600080fd5b6100f46100a63660046109ef565b600090815260056020819052604090912080546001820154600283015460038401546004850154600686015495909601546001600160a01b0390941696929591949093919260ff9091169190565b604080516001600160a01b0390981688526020880196909652948601939093526060850191909152608084015260a083015260c082015260e0015b60405180910390f35b61014b6101463660046109ef565b6101f5565b60405190815260200161012f565b61014b610167366004610a1f565b610446565b61014b61017a3660046109ef565b6105e7565b610187610791565b005b610187610197366004610a49565b6107a5565b6000546040516001600160a01b03909116815260200161012f565b61014b6101c53660046109ef565b600090815260066020908152604080832033845290915290205490565b6101876101f0366004610a6b565b61090a565b60006101ff610948565b600082815260056020819052604082209081015490919061022457816002015461022a565b81600501545b6102349042610aa3565b82549091506001600160a01b031633146102615760405163018d3ef960e31b815260040160405180910390fd5b816002015442101561028657604051637e3795db60e11b815260040160405180910390fd5b8160030154826004015410156102af576040516351992ba760e01b815260040160405180910390fd5b6006820154600460ff909116106102d957604051630ea99c6560e11b815260040160405180910390fd5b62278d008110156102fd57604051635ada9a9960e01b815260040160405180910390fd5b6000600483600401546103109190610ab6565b42600585015560068401805491925060019160009061033390849060ff16610ad8565b825460ff9182166101009390930a92830291909202199091161790555060035460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af11580156103a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103c59190610af1565b6104055760405162461bcd60e51b815260206004820152600c60248201526b10db185a5b4819985a5b195960a21b60448201526064015b60405180910390fd5b6040518190339087907fa4eb50103b0591feb0bc913f479d92af5eb7ea33e8c397b49bab52ce6af26cb590600090a49250505061044160018055565b919050565b600254604051635700b70360e01b81523360048201526000916001600160a01b031690635700b70390602401602060405180830381865afa15801561048f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b39190610af1565b6104d057604051630a1ea19360e11b815260040160405180910390fd5b600480549060006104e083610b13565b9091555042905060006104f682621baf80610b2c565b6040805160e0810182526001600160a01b038881168083526020808401888152848601878152606086018c815260006080880181815260a0890182815260c08a018381526004805485526005808a52948d90209b518c546001600160a01b0319169b169a909a178b55955160018b0155935160028a015591516003890155905187870155905190860155516006909401805460ff191660ff90951694909417909355905483518781529283018590529394508793909290917fee52793fa84ff32059ae4a1f92ce1c91296f469f952f33dcd4f02fe83322c4ce910160405180910390a4600454925050505b92915050565b60006105f1610948565b6000828152600560205260409020600281015442101561062457604051637e3795db60e11b815260040160405180910390fd5b806003015481600401541061064c57604051637432356d60e01b815260040160405180910390fd5b600083815260066020908152604080832033845290915281205490819003610686576040516233638960e31b815260040160405180910390fd5b600084815260066020908152604080832033808552925280832092909255600354915163a9059cbb60e01b81526004810191909152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af11580156106f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071a9190610af1565b6107565760405162461bcd60e51b815260206004820152600d60248201526c1499599d5b990819985a5b1959609a1b60448201526064016103fc565b6040518190859033907f2dc8e290002f06fc0085bbca9dfb8b415cf4d1178950c72ff9ee8f4d8878ee6690600090a491505061044160018055565b610799610972565b6107a3600061099f565b565b6000828152600560205260409020600281015442106107d657604051629f920f60e81b815260040160405180910390fd5b6003546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561082d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108519190610af1565b61088f5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016103fc565b818160040160008282546108a39190610b2c565b90915550506000838152600660209081526040808320338452909152812080548492906108d1908490610b2c565b90915550506040518290849033907f5dc1fe5ab986a852c4eda8e8bb94247d13307065c593fb83f1a09be27367938290600090a4505050565b610912610972565b6001600160a01b03811661093c57604051631e4fbdf760e01b8152600060048201526024016103fc565b6109458161099f565b50565b60026001540361096b57604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b6000546001600160a01b031633146107a35760405163118cdaa760e01b81523360048201526024016103fc565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215610a0157600080fd5b5035919050565b80356001600160a01b038116811461044157600080fd5b60008060408385031215610a3257600080fd5b610a3b83610a08565b946020939093013593505050565b60008060408385031215610a5c57600080fd5b50508035926020909101359150565b600060208284031215610a7d57600080fd5b610a8682610a08565b9392505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156105e1576105e1610a8d565b600082610ad357634e487b7160e01b600052601260045260246000fd5b500490565b60ff81811683821601908111156105e1576105e1610a8d565b600060208284031215610b0357600080fd5b81518015158114610a8657600080fd5b600060018201610b2557610b25610a8d565b5060010190565b808201808211156105e1576105e1610a8d56fea2646970667358221220f4fea386e9a8e33f4d2694fce0b76f7c98b0a280b74df0ca78a18bb4646c7d7564736f6c6343000818003300000000000000000000000012b2434a1022d5787bf06056f2885fe35de62bf8000000000000000000000000b3510615d958438b2a4accad2d0bdf782e333281000000000000000000000000847a6c5a32f5ed69c43a82f46a84df75f9b9bd2a", + "nonce": "0x5", + "chainId": "0x397" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x210226", + "logs": [ + { + "address": "0x847a6c5a32f5ed69c43a82f46a84df75f9b9bd2a", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x00000000000000000000000012b2434a1022d5787bf06056f2885fe35de62bf8" + ], + "data": "0x", + "blockHash": "0x759ad7c8387f9b54bc09bb2fc4699cf55ca703fb1c70cdd79d0d4eac113daacb", + "blockNumber": "0x10ef512", + "transactionHash": "0x1294b224368735051765d12f74463c5fcf1d87c8419a46d94493709dd5bf3a78", + "transactionIndex": "0x1", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x847a6c5a32f5ed69c43a82f46a84df75f9b9bd2a", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x00000000000000000000000012b2434a1022d5787bf06056f2885fe35de62bf8" + ], + "data": "0x00000000000000000000000000000000000000000000d3c21bcecceda1000000", + "blockHash": "0x759ad7c8387f9b54bc09bb2fc4699cf55ca703fb1c70cdd79d0d4eac113daacb", + "blockNumber": "0x10ef512", + "transactionHash": "0x1294b224368735051765d12f74463c5fcf1d87c8419a46d94493709dd5bf3a78", + "transactionIndex": "0x1", + "logIndex": "0x1", + "removed": false + } + ], + "logsBloom": "0x00000000200000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008200000000001000000000000000000000000000000000000020000000000000000000800000000000000000000000010000000400000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000400000000000000000000000000000002000000000000000000000000000000000000000000000000000020000008000000010000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x1294b224368735051765d12f74463c5fcf1d87c8419a46d94493709dd5bf3a78", + "transactionIndex": "0x1", + "blockHash": "0x759ad7c8387f9b54bc09bb2fc4699cf55ca703fb1c70cdd79d0d4eac113daacb", + "blockNumber": "0x10ef512", + "gasUsed": "0x202af7", + "effectiveGasPrice": "0xfd", + "from": "0x12b2434a1022d5787bf06056f2885fe35de62bf8", + "to": null, + "contractAddress": "0x847a6c5a32f5ed69c43a82f46a84df75f9b9bd2a", + "l1BaseFeeScalar": "0x3d1", + "l1BlobBaseFee": "0x11dd11520ad", + "l1BlobBaseFeeScalar": "0x8ee87", + "l1Fee": "0x108cb185a24509", + "l1GasPrice": "0x285ce4459", + "l1GasUsed": "0x19514" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x253621", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xbf3c9402be4be89c0aa1e24ea88755ad9578e9f5e6c725f065caef6c2794e83d", + "transactionIndex": "0x2", + "blockHash": "0x759ad7c8387f9b54bc09bb2fc4699cf55ca703fb1c70cdd79d0d4eac113daacb", + "blockNumber": "0x10ef512", + "gasUsed": "0x433fb", + "effectiveGasPrice": "0xfd", + "from": "0x12b2434a1022d5787bf06056f2885fe35de62bf8", + "to": null, + "contractAddress": "0xda3420ca7b915c607313d332d038ceddcd810973", + "l1BaseFeeScalar": "0x3d1", + "l1BlobBaseFee": "0x11dd11520ad", + "l1BlobBaseFeeScalar": "0x8ee87", + "l1Fee": "0x2f55fd27b30bd", + "l1GasPrice": "0x285ce4459", + "l1GasUsed": "0x486a" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x66cf8d", + "logs": [ + { + "address": "0xb3510615d958438b2a4accad2d0bdf782e333281", + "topics": [ + "0xc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012c", + "blockHash": "0x759ad7c8387f9b54bc09bb2fc4699cf55ca703fb1c70cdd79d0d4eac113daacb", + "blockNumber": "0x10ef512", + "transactionHash": "0x58dfe8f2a8eb8e1ab0048f3fa2683bdb6b995025c8dbe7c1f77665e43db67075", + "transactionIndex": "0x3", + "logIndex": "0x2", + "removed": false + }, + { + "address": "0xb3510615d958438b2a4accad2d0bdf782e333281", + "topics": [ + "0x7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000384", + "blockHash": "0x759ad7c8387f9b54bc09bb2fc4699cf55ca703fb1c70cdd79d0d4eac113daacb", + "blockNumber": "0x10ef512", + "transactionHash": "0x58dfe8f2a8eb8e1ab0048f3fa2683bdb6b995025c8dbe7c1f77665e43db67075", + "transactionIndex": "0x3", + "logIndex": "0x3", + "removed": false + }, + { + "address": "0xb3510615d958438b2a4accad2d0bdf782e333281", + "topics": [ + "0xccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x759ad7c8387f9b54bc09bb2fc4699cf55ca703fb1c70cdd79d0d4eac113daacb", + "blockNumber": "0x10ef512", + "transactionHash": "0x58dfe8f2a8eb8e1ab0048f3fa2683bdb6b995025c8dbe7c1f77665e43db67075", + "transactionIndex": "0x3", + "logIndex": "0x4", + "removed": false + }, + { + "address": "0xb3510615d958438b2a4accad2d0bdf782e333281", + "topics": [ + "0x0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004", + "blockHash": "0x759ad7c8387f9b54bc09bb2fc4699cf55ca703fb1c70cdd79d0d4eac113daacb", + "blockNumber": "0x10ef512", + "transactionHash": "0x58dfe8f2a8eb8e1ab0048f3fa2683bdb6b995025c8dbe7c1f77665e43db67075", + "transactionIndex": "0x3", + "logIndex": "0x5", + "removed": false + } + ], + "logsBloom": "0x00000000000000000100000000001000000000000000000000000000000008000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000020000000000000000000000010000000000000000000000000080002000000000000000000000000000000001000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000080000800000000000000000000000000000000000000000000000000000000000000004000000", + "type": "0x2", + "transactionHash": "0x58dfe8f2a8eb8e1ab0048f3fa2683bdb6b995025c8dbe7c1f77665e43db67075", + "transactionIndex": "0x3", + "blockHash": "0x759ad7c8387f9b54bc09bb2fc4699cf55ca703fb1c70cdd79d0d4eac113daacb", + "blockNumber": "0x10ef512", + "gasUsed": "0x41996c", + "effectiveGasPrice": "0xfd", + "from": "0x12b2434a1022d5787bf06056f2885fe35de62bf8", + "to": null, + "contractAddress": "0xb3510615d958438b2a4accad2d0bdf782e333281", + "l1BaseFeeScalar": "0x3d1", + "l1BlobBaseFee": "0x11dd11520ad", + "l1BlobBaseFeeScalar": "0x8ee87", + "l1Fee": "0x1ddbd597cd010b", + "l1GasPrice": "0x285ce4459", + "l1GasUsed": "0x2dad8" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x732349", + "logs": [ + { + "address": "0x0a2e3f28ba816c6b39135a5138a4a7ec294fb924", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x00000000000000000000000012b2434a1022d5787bf06056f2885fe35de62bf8" + ], + "data": "0x", + "blockHash": "0x759ad7c8387f9b54bc09bb2fc4699cf55ca703fb1c70cdd79d0d4eac113daacb", + "blockNumber": "0x10ef512", + "transactionHash": "0x04cdd726471fc1c3834d3860836f2cf160208fe525cf7542294fc42836584502", + "transactionIndex": "0x4", + "logIndex": "0x6", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000800000000000000000000000000080000000000000000000000000000000000000000000000001000000000000000000000000200000000001000000000000000000000000000000000000020000000000000000000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000010000000000000000010000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x04cdd726471fc1c3834d3860836f2cf160208fe525cf7542294fc42836584502", + "transactionIndex": "0x4", + "blockHash": "0x759ad7c8387f9b54bc09bb2fc4699cf55ca703fb1c70cdd79d0d4eac113daacb", + "blockNumber": "0x10ef512", + "gasUsed": "0xc53bc", + "effectiveGasPrice": "0xfd", + "from": "0x12b2434a1022d5787bf06056f2885fe35de62bf8", + "to": null, + "contractAddress": "0x0a2e3f28ba816c6b39135a5138a4a7ec294fb924", + "l1BaseFeeScalar": "0x3d1", + "l1BlobBaseFee": "0x11dd11520ad", + "l1BlobBaseFeeScalar": "0x8ee87", + "l1Fee": "0x58ed5f5fe56fa", + "l1GasPrice": "0x285ce4459", + "l1GasUsed": "0x880a" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1723382852, + "chain": 919, + "commit": "67ec1e3" +} \ No newline at end of file diff --git a/broadcast/Deploy_ModeTestnet.s.sol/919/run-latest.json b/broadcast/Deploy_ModeTestnet.s.sol/919/run-latest.json new file mode 100644 index 0000000..dff7c2e --- /dev/null +++ b/broadcast/Deploy_ModeTestnet.s.sol/919/run-latest.json @@ -0,0 +1,286 @@ +{ + "transactions": [ + { + "hash": "0x1294b224368735051765d12f74463c5fcf1d87c8419a46d94493709dd5bf3a78", + "transactionType": "CREATE", + "contractName": "GovernanceToken", + "contractAddress": "0x847a6c5a32f5ed69c43a82f46a84df75f9b9bd2a", + "function": null, + "arguments": [ + "0x12B2434a1022d5787bf06056F2885Fe35De62Bf8", + "1000000000000000000000000" + ], + "transaction": { + "from": "0x12b2434a1022d5787bf06056f2885fe35de62bf8", + "gas": "0x29cdb2", + "value": "0x0", + "input": "0x6101606040523480156200001257600080fd5b5060405162002deb38038062002deb833981016040819052620000359162000972565b6040518060400160405280600f81526020016e23b7bb32b93730b731b2aa37b5b2b760891b81525080604051806040016040528060018152602001603160f81b815250846040518060400160405280600f81526020016e23b7bb32b93730b731b2aa37b5b2b760891b8152506040518060400160405280600481526020016311d3d59560e21b8152508160039081620000cf919062000a54565b506004620000de828262000a54565b50506005805460ff19169055506001600160a01b0381166200011b57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6200012681620001f1565b50620001348260066200024b565b61012052620001458160076200024b565b61014052815160208084019190912060e052815190820120610100524660a052620001d360e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c05250620001e9828262000284565b505062000c25565b600580546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006020835110156200026b576200026383620002c2565b90506200027e565b8162000278848262000a54565b5060ff90505b92915050565b6001600160a01b038216620002b05760405163ec442f0560e01b81526000600482015260240162000112565b620002be6000838362000305565b5050565b600080829050601f81511115620002f0578260405163305a27a960e01b815260040162000112919062000b20565b8051620002fd8262000b71565b179392505050565b6200031283838362000317565b505050565b6200032483838362000386565b6001600160a01b038316620003795760006200033f60025490565b90506001600160d01b03808211156200037657604051630e58ae9360e11b8152600481018390526024810182905260440162000112565b50505b620003128383836200039d565b6200039062000435565b620003128383836200045c565b6001600160a01b038316620003d257620003cf600b62000a336200058f60201b17620003c984620005a4565b620005de565b50505b6001600160a01b0382166200040157620003fe600b62000a3f6200061260201b17620003c984620005a4565b50505b6001600160a01b03838116600090815260096020526040808220548584168352912054620003129291821691168362000620565b60055460ff16156200045a5760405163d93c066560e01b815260040160405180910390fd5b565b6001600160a01b0383166200048b5780600260008282546200047f919062000bac565b90915550620004ff9050565b6001600160a01b03831660009081526020819052604090205481811015620004e05760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640162000112565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166200051d576002805482900390556200053c565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200058291815260200190565b60405180910390a3505050565b60006200059d828462000bc2565b9392505050565b60006001600160d01b03821115620005da576040516306dfcc6560e41b815260d060048201526024810183905260440162000112565b5090565b6000806200060542620005fc620005f58862000787565b868860201c565b879190620007d6565b915091505b935093915050565b60006200059d828462000bec565b816001600160a01b0316836001600160a01b031614158015620006435750600081115b1562000312576001600160a01b03831615620006e6576001600160a01b0383166000908152600a602090815260408220829162000691919062000612901b62000a3f17620003c986620005a4565b6001600160d01b031691506001600160d01b03169150846001600160a01b031660008051602062002dcb8339815191528383604051620006db929190918252602082015260400190565b60405180910390a250505b6001600160a01b0382161562000312576001600160a01b0382166000908152600a60209081526040822082916200072e91906200058f901b62000a3317620003c986620005a4565b6001600160d01b031691506001600160d01b03169150836001600160a01b031660008051602062002dcb833981519152838360405162000778929190918252602082015260400190565b60405180910390a25050505050565b80546000908015620007cd57620007b383620007a560018462000c0f565b600091825260209091200190565b54660100000000000090046001600160d01b03166200059d565b60009392505050565b60008062000605858585825460009081908015620009135760006200080287620007a560018562000c0f565b60408051808201909152905465ffffffffffff80821680845266010000000000009092046001600160d01b0316602084015291925090871610156200085a57604051632520601d60e01b815260040160405180910390fd5b805165ffffffffffff808816911603620008ae57846200088188620007a560018662000c0f565b80546001600160d01b039290921666010000000000000265ffffffffffff90921691909117905562000902565b6040805180820190915265ffffffffffff80881682526001600160d01b0380881660208085019182528b54600181018d5560008d815291909120945191519092166601000000000000029216919091179101555b6020015192508391506200060a9050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a81529182209551925190931666010000000000000291909316179201919091559050816200060a565b600080604083850312156200098657600080fd5b82516001600160a01b03811681146200099e57600080fd5b6020939093015192949293505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620009d957607f821691505b602082108103620009fa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000312576000816000526020600020601f850160051c8101602086101562000a2b5750805b601f850160051c820191505b8181101562000a4c5782815560010162000a37565b505050505050565b81516001600160401b0381111562000a705762000a70620009ae565b62000a888162000a818454620009c4565b8462000a00565b602080601f83116001811462000ac0576000841562000aa75750858301515b600019600386901b1c1916600185901b17855562000a4c565b600085815260208120601f198616915b8281101562000af15788860151825594840194600190910190840162000ad0565b508582101562000b105787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020808352835180602085015260005b8181101562000b505785810183015185820160400152820162000b32565b506000604082860101526040601f19601f8301168501019250505092915050565b80516020808301519190811015620009fa5760001960209190910360031b1b16919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156200027e576200027e62000b96565b6001600160d01b0381811683821601908082111562000be55762000be562000b96565b5092915050565b6001600160d01b0382811682821603908082111562000be55762000be562000b96565b818103818111156200027e576200027e62000b96565b60805160a05160c05160e05161010051610120516101405161214b62000c806000396000610fc001526000610f9301526000610c1401526000610bec01526000610b4701526000610b7101526000610b9b015261214b6000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c8063715018a61161010f57806395d89b41116100a2578063d505accf11610071578063d505accf14610463578063dd62ed3e14610476578063f1127ed8146104af578063f2fde38b146104ee57600080fd5b806395d89b41146104225780639ab24eb01461042a578063a9059cbb1461043d578063c3cda5201461045057600080fd5b806384b0196e116100de57806384b0196e146103c85780638da5cb5b146103e35780638e539e8c146103f957806391ddadf41461040c57600080fd5b8063715018a61461039257806379cc67901461039a5780637ecebe00146103ad5780638456cb59146103c057600080fd5b806340c10f19116101875780635c19a95c116101565780635c19a95c146103235780635c975abb146103365780636fcfff451461034157806370a082311461036957600080fd5b806340c10f191461028f57806342966c68146102a25780634bf5d7e9146102b5578063587cde1e146102df57600080fd5b8063313ce567116101c3578063313ce5671461025b5780633644e5151461026a5780633a46b1a8146102725780633f4ba83a1461028557600080fd5b806306fdde03146101f5578063095ea7b31461021357806318160ddd1461023657806323b872dd14610248575b600080fd5b6101fd610501565b60405161020a9190611d4c565b60405180910390f35b610226610221366004611d7b565b610593565b604051901515815260200161020a565b6002545b60405190815260200161020a565b610226610256366004611da5565b6105ad565b6040516012815260200161020a565b61023a6105d1565b61023a610280366004611d7b565b6105e0565b61028d61065c565b005b61028d61029d366004611d7b565b61066e565b61028d6102b0366004611de1565b610684565b60408051808201909152600e81526d06d6f64653d74696d657374616d760941b60208201526101fd565b61030b6102ed366004611dfa565b6001600160a01b039081166000908152600960205260409020541690565b6040516001600160a01b03909116815260200161020a565b61028d610331366004611dfa565b610691565b60055460ff16610226565b61035461034f366004611dfa565b61069c565b60405163ffffffff909116815260200161020a565b61023a610377366004611dfa565b6001600160a01b031660009081526020819052604090205490565b61028d6106a7565b61028d6103a8366004611d7b565b6106b9565b61023a6103bb366004611dfa565b6106ce565b61028d6106d9565b6103d06106e9565b60405161020a9796959493929190611e15565b60055461010090046001600160a01b031661030b565b61023a610407366004611de1565b61072f565b60405165ffffffffffff4216815260200161020a565b6101fd61078f565b61023a610438366004611dfa565b61079e565b61022661044b366004611d7b565b6107ce565b61028d61045e366004611ebf565b6107dc565b61028d610471366004611f17565b610899565b61023a610484366004611f81565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6104c26104bd366004611fb4565b6109d3565b60408051825165ffffffffffff1681526020928301516001600160d01b0316928101929092520161020a565b61028d6104fc366004611dfa565b6109f8565b60606003805461051090611ff4565b80601f016020809104026020016040519081016040528092919081815260200182805461053c90611ff4565b80156105895780601f1061055e57610100808354040283529160200191610589565b820191906000526020600020905b81548152906001019060200180831161056c57829003601f168201915b5050505050905090565b6000336105a1818585610a4b565b60019150505b92915050565b6000336105bb858285610a5d565b6105c6858585610adb565b506001949350505050565b60006105db610b3a565b905090565b60004265ffffffffffff8116831061062157604051637669fc0f60e11b81526004810184905265ffffffffffff821660248201526044015b60405180910390fd5b61064b61062d84610c65565b6001600160a01b0386166000908152600a6020526040902090610c9c565b6001600160d01b0316949350505050565b610664610d52565b61066c610d85565b565b610676610d52565b6106808282610dd7565b5050565b61068e3382610e0d565b50565b336106808183610e43565b60006105a782610eb5565b6106af610d52565b61066c6000610ed7565b6106c4823383610a5d565b6106808282610e0d565b60006105a782610f31565b6106e1610d52565b61066c610f4f565b6000606080600080600060606106fd610f8c565b610705610fb9565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b60004265ffffffffffff8116831061076b57604051637669fc0f60e11b81526004810184905265ffffffffffff82166024820152604401610618565b61077f61077784610c65565b600b90610c9c565b6001600160d01b03169392505050565b60606004805461051090611ff4565b6001600160a01b0381166000908152600a602052604081206107bf90610fe6565b6001600160d01b031692915050565b6000336105a1818585610adb565b8342111561080057604051632341d78760e11b815260048101859052602401610618565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b03881691810191909152606081018690526080810185905260009061087a906108729060a0016040516020818303038152906040528051906020012061101f565b85858561104c565b9050610886818761107a565b6108908188610e43565b50505050505050565b834211156108bd5760405163313c898160e11b815260048101859052602401610618565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861090a8c6001600160a01b0316600090815260086020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006109658261101f565b905060006109758287878761104c565b9050896001600160a01b0316816001600160a01b0316146109bc576040516325c0072360e11b81526001600160a01b0380831660048301528b166024820152604401610618565b6109c78a8a8a610a4b565b50505050505050505050565b60408051808201909152600080825260208201526109f183836110cd565b9392505050565b610a00610d52565b6001600160a01b038116610a2a57604051631e4fbdf760e01b815260006004820152602401610618565b61068e81610ed7565b60006109f18284612044565b60006109f1828461206b565b610a588383836001611103565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610ad55781811015610ac657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610618565b610ad584848484036000611103565b50505050565b6001600160a01b038316610b0557604051634b637e8f60e11b815260006004820152602401610618565b6001600160a01b038216610b2f5760405163ec442f0560e01b815260006004820152602401610618565b610a588383836111d8565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015610b9357507f000000000000000000000000000000000000000000000000000000000000000046145b15610bbd57507f000000000000000000000000000000000000000000000000000000000000000090565b6105db604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600065ffffffffffff821115610c98576040516306dfcc6560e41b81526030600482015260248101839052604401610618565b5090565b815460009081816005811115610cfb576000610cb7846111e3565b610cc1908561208b565b60008881526020902090915081015465ffffffffffff9081169087161015610ceb57809150610cf9565b610cf681600161209e565b92505b505b6000610d09878785856112cb565b90508015610d4457610d2e87610d2060018461208b565b600091825260209091200190565b54600160301b90046001600160d01b0316610d47565b60005b979650505050505050565b6005546001600160a01b0361010090910416331461066c5760405163118cdaa760e01b8152336004820152602401610618565b610d8d61132d565b6005805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610e015760405163ec442f0560e01b815260006004820152602401610618565b610680600083836111d8565b6001600160a01b038216610e3757604051634b637e8f60e11b815260006004820152602401610618565b610680826000836111d8565b6001600160a01b0382811660008181526009602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4610a588183610eb086611350565b61136e565b6001600160a01b0381166000908152600a60205260408120546105a7906114da565b600580546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0381166000908152600860205260408120546105a7565b610f5761150b565b6005805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610dba3390565b60606105db7f0000000000000000000000000000000000000000000000000000000000000000600661152f565b60606105db7f0000000000000000000000000000000000000000000000000000000000000000600761152f565b805460009080156110165761100083610d2060018461208b565b54600160301b90046001600160d01b03166109f1565b60009392505050565b60006105a761102c610b3a565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060008061105e888888886115da565b92509250925061106e82826116a9565b50909695505050505050565b6001600160a01b0382166000908152600860205260409020805460018101909155818114610a58576040516301d4b62360e61b81526001600160a01b038416600482015260248101829052604401610618565b60408051808201909152600080825260208201526001600160a01b0383166000908152600a602052604090206109f19083611762565b6001600160a01b03841661112d5760405163e602df0560e01b815260006004820152602401610618565b6001600160a01b03831661115757604051634a1406b160e11b815260006004820152602401610618565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015610ad557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516111ca91815260200190565b60405180910390a350505050565b610a588383836117d2565b6000816000036111f557506000919050565b6000600161120284611839565b901c6001901b9050600181848161121b5761121b6120b1565b048201901c90506001818481611233576112336120b1565b048201901c9050600181848161124b5761124b6120b1565b048201901c90506001818481611263576112636120b1565b048201901c9050600181848161127b5761127b6120b1565b048201901c90506001818481611293576112936120b1565b048201901c905060018184816112ab576112ab6120b1565b048201901c90506109f1818285816112c5576112c56120b1565b046118cd565b60005b818310156113255760006112e284846118e3565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff1611156113115780925061131f565b61131c81600161209e565b93505b506112ce565b509392505050565b60055460ff1661066c57604051638dfc202b60e01b815260040160405180910390fd5b6001600160a01b0381166000908152602081905260408120546105a7565b816001600160a01b0316836001600160a01b0316141580156113905750600081115b15610a58576001600160a01b03831615611438576001600160a01b0383166000908152600a6020526040812081906113d390610a3f6113ce866118fe565b611932565b6001600160d01b031691506001600160d01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161142d929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615610a58576001600160a01b0382166000908152600a60205260408120819061147190610a336113ce866118fe565b6001600160d01b031691506001600160d01b03169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516114cb929190918252602082015260400190565b60405180910390a25050505050565b600063ffffffff821115610c98576040516306dfcc6560e41b81526020600482015260248101839052604401610618565b60055460ff161561066c5760405163d93c066560e01b815260040160405180910390fd5b606060ff83146115495761154283611964565b90506105a7565b81805461155590611ff4565b80601f016020809104026020016040519081016040528092919081815260200182805461158190611ff4565b80156115ce5780601f106115a3576101008083540402835291602001916115ce565b820191906000526020600020905b8154815290600101906020018083116115b157829003601f168201915b505050505090506105a7565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115611615575060009150600390508261169f565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611669573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166116955750600092506001915082905061169f565b9250600091508190505b9450945094915050565b60008260038111156116bd576116bd6120c7565b036116c6575050565b60018260038111156116da576116da6120c7565b036116f85760405163f645eedf60e01b815260040160405180910390fd5b600282600381111561170c5761170c6120c7565b0361172d5760405163fce698f760e01b815260048101829052602401610618565b6003826003811115611741576117416120c7565b03610680576040516335e2f38360e21b815260048101829052602401610618565b6040805180820190915260008082526020820152826000018263ffffffff1681548110611791576117916120dd565b60009182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b6117dd8383836119a3565b6001600160a01b03831661182e5760006117f660025490565b90506001600160d01b038082111561182b57604051630e58ae9360e11b81526004810183905260248101829052604401610618565b50505b610a588383836119b6565b600080608083901c1561184e57608092831c92015b604083901c1561186057604092831c92015b602083901c1561187257602092831c92015b601083901c1561188457601092831c92015b600883901c1561189657600892831c92015b600483901c156118a857600492831c92015b600283901c156118ba57600292831c92015b600183901c156105a75760010192915050565b60008183106118dc57816109f1565b5090919050565b60006118f260028484186120f3565b6109f19084841661209e565b60006001600160d01b03821115610c98576040516306dfcc6560e41b815260d0600482015260248101839052604401610618565b6000806119574261194f61194588610fe6565b868863ffffffff16565b879190611a2c565b915091505b935093915050565b6060600061197183611a3a565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6119ab61150b565b610a58838383611a62565b6001600160a01b0383166119d8576119d5600b610a336113ce846118fe565b50505b6001600160a01b0382166119fa576119f7600b610a3f6113ce846118fe565b50505b6001600160a01b03838116600090815260096020526040808220548584168352912054610a589291821691168361136e565b600080611957858585611b8c565b600060ff8216601f8111156105a757604051632cd44ac360e21b815260040160405180910390fd5b6001600160a01b038316611a8d578060026000828254611a82919061209e565b90915550611aff9050565b6001600160a01b03831660009081526020819052604090205481811015611ae05760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610618565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216611b1b57600280548290039055611b3a565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b7f91815260200190565b60405180910390a3505050565b825460009081908015611cab576000611baa87610d2060018561208b565b60408051808201909152905465ffffffffffff808216808452600160301b9092046001600160d01b031660208401529192509087161015611bfe57604051632520601d60e01b815260040160405180910390fd5b805165ffffffffffff808816911603611c4a5784611c2188610d2060018661208b565b80546001600160d01b0392909216600160301b0265ffffffffffff909216919091179055611c9b565b6040805180820190915265ffffffffffff80881682526001600160d01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160301b029216919091179101555b60200151925083915061195c9050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b02919093161792019190915590508161195c565b6000815180845260005b81811015611d2c57602081850181015186830182015201611d10565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006109f16020830184611d06565b80356001600160a01b0381168114611d7657600080fd5b919050565b60008060408385031215611d8e57600080fd5b611d9783611d5f565b946020939093013593505050565b600080600060608486031215611dba57600080fd5b611dc384611d5f565b9250611dd160208501611d5f565b9150604084013590509250925092565b600060208284031215611df357600080fd5b5035919050565b600060208284031215611e0c57600080fd5b6109f182611d5f565b60ff60f81b881681526000602060e06020840152611e3660e084018a611d06565b8381036040850152611e48818a611d06565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015611e9c57835183529284019291840191600101611e80565b50909c9b505050505050505050505050565b803560ff81168114611d7657600080fd5b60008060008060008060c08789031215611ed857600080fd5b611ee187611d5f565b95506020870135945060408701359350611efd60608801611eae565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215611f3257600080fd5b611f3b88611d5f565b9650611f4960208901611d5f565b95506040880135945060608801359350611f6560808901611eae565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611f9457600080fd5b611f9d83611d5f565b9150611fab60208401611d5f565b90509250929050565b60008060408385031215611fc757600080fd5b611fd083611d5f565b9150602083013563ffffffff81168114611fe957600080fd5b809150509250929050565b600181811c9082168061200857607f821691505b60208210810361202857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160d01b038181168382160190808211156120645761206461202e565b5092915050565b6001600160d01b038281168282160390808211156120645761206461202e565b818103818111156105a7576105a761202e565b808201808211156105a7576105a761202e565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008261211057634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220295bd91bd2217a5abfe1a668b57020e29c497161258cc70fee5f2a818c6a06cf64736f6c63430008180033dec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72400000000000000000000000012b2434a1022d5787bf06056f2885fe35de62bf800000000000000000000000000000000000000000000d3c21bcecceda1000000", + "nonce": "0x2", + "chainId": "0x397" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xbf3c9402be4be89c0aa1e24ea88755ad9578e9f5e6c725f065caef6c2794e83d", + "transactionType": "CREATE", + "contractName": "IdentityManager", + "contractAddress": "0xda3420ca7b915c607313d332d038ceddcd810973", + "function": null, + "arguments": [ + "0xe95f2fCF682712CAf5fB44C9608d33dbac6B536B", + "\"app_staging_6c8d4488699bc14d8d580282ac02b9d5\"", + "\"testing-verfication-action\"" + ], + "transaction": { + "from": "0x12b2434a1022d5787bf06056f2885fe35de62bf8", + "gas": "0x5762f", + "value": "0x0", + "input": "0x60e0604052600160c05234801561001557600080fd5b5060405161063d38038061063d83398101604081905261003491610183565b6001600160a01b0383166080526040516100819061006f9061005a908590602001610205565b60408051601f1981840301815291905261008d565b8260405160200161005a929190610221565b60a05250610247915050565b60006008826040516020016100a29190610205565b60408051601f198184030181529190528051602090910120901c92915050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156100f35781810151838201526020016100db565b50506000910152565b600082601f83011261010d57600080fd5b81516001600160401b0380821115610127576101276100c2565b604051601f8301601f19908116603f0116810190828211818310171561014f5761014f6100c2565b8160405283815286602085880101111561016857600080fd5b6101798460208301602089016100d8565b9695505050505050565b60008060006060848603121561019857600080fd5b83516001600160a01b03811681146101af57600080fd5b60208501519093506001600160401b03808211156101cc57600080fd5b6101d8878388016100fc565b935060408601519150808211156101ee57600080fd5b506101fb868287016100fc565b9150509250925092565b600082516102178184602087016100d8565b9190910192915050565b828152600082516102398160208501602087016100d8565b919091016020019392505050565b60805160a05160c0516103c86102756000396000610121015260006101830152600060f101526103c86000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80634b953097146100465780639271bcf714610086578063e9b70553146100aa575b600080fd5b6100726100543660046102bb565b6001600160a01b031660009081526001602052604090205460ff1690565b604051901515815260200160405180910390f35b6100a8336000908152600160208190526040909120805460ff19169091179055565b005b6100a86100b83660046102dd565b60008281526020819052604090205460ff16156100ef57604051633c7fd51360e11b81526004810183905260240160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633bc778e3847f00000000000000000000000000000000000000000000000000000000000000006101808860405160200161016c919060609190911b6bffffffffffffffffffffffff1916815260140190565b60405160208183030381529060405261026a565b867f0000000000000000000000000000000000000000000000000000000000000000876040518763ffffffff1660e01b81526004016101c49695949392919061032b565b60006040518083038186803b1580156101dc57600080fd5b505afa1580156101f0573d6000803e3d6000fd5b50505060008381526020819052604090819020805460ff19166001179055517ff786e7f77ede00a02a5464f8f0555798f42ba99a4a920ef2778db8d75e4656f7915061023f9084815260200190565b60405180910390a15050336000908152600160208190526040909120805460ff191690911790555050565b600060088260405160200161027f9190610363565b60408051601f198184030181529190528051602090910120901c92915050565b80356001600160a01b03811681146102b657600080fd5b919050565b6000602082840312156102cd57600080fd5b6102d68261029f565b9392505050565b6000806000806101608086880312156102f557600080fd5b6102fe8661029f565b9450602086013593506040860135925086818701111561031d57600080fd5b509295919450926060019150565b60006101a0820190508782528660208301528560408301528460608301528360808301526101008360a0840137979650505050505050565b6000825160005b81811015610384576020818601810151858301520161036a565b50600092019182525091905056fea26469706673582212208c08f9652bca144be895a02423f850311e5f7cff273db05ff229d02c7df6a6cc64736f6c63430008180033000000000000000000000000e95f2fcf682712caf5fb44c9608d33dbac6b536b000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002c6170705f73746167696e675f36633864343438383639396263313464386435383032383261633032623964350000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a74657374696e672d7665726669636174696f6e2d616374696f6e000000000000", + "nonce": "0x3", + "chainId": "0x397" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x58dfe8f2a8eb8e1ab0048f3fa2683bdb6b995025c8dbe7c1f77665e43db67075", + "transactionType": "CREATE", + "contractName": "GovernautGovernance", + "contractAddress": "0xb3510615d958438b2a4accad2d0bdf782e333281", + "function": null, + "arguments": [ + "0x847a6c5a32F5Ed69c43a82f46a84Df75f9B9Bd2A", + "0xDa3420Ca7b915C607313D332D038CEdDCd810973" + ], + "transaction": { + "from": "0x12b2434a1022d5787bf06056f2885fe35de62bf8", + "gas": "0x55408a", + "value": "0x0", + "input": "0x6101a06040523480156200001257600080fd5b50604051620054bc380380620054bc833981016040819052620000359162000769565b60048261012c61038460006040518060400160405280600981526020016811dbdd995c9b985d5d60ba1b8152508062000073620001b260201b60201c565b62000080826000620001cd565b6101205262000091816001620001cd565b61014052815160208084019190912060e052815190820120610100524660a0526200011f60e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c05260036200013682826200084f565b506200014490508362000206565b6200014f826200026c565b6200015a8162000313565b5050506001600160a01b031661016052620001758162000354565b506001600160a01b0381166200019e5760405163822d9aff60e01b815260040160405180910390fd5b6001600160a01b03166101805250620009dd565b6040805180820190915260018152603160f81b602082015290565b6000602083511015620001ed57620001e583620003f4565b905062000200565b81620001fa84826200084f565b5060ff90505b92915050565b6008546040805165ffffffffffff928316815291831660208301527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93910160405180910390a16008805465ffffffffffff191665ffffffffffff92909216919091179055565b8063ffffffff166000036200029c5760405163f1cfbf0560e01b8152600060048201526024015b60405180910390fd5b6008546040805163ffffffff66010000000000009093048316815291831660208301527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a16008805463ffffffff90921666010000000000000263ffffffff60301b19909216919091179055565b60075460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461910160405180910390a1600755565b606480821115620003835760405163243e544560e01b8152600481018390526024810182905260440162000293565b60006200038f62000437565b9050620003b46200039f62000453565b620003aa85620004d5565b600c91906200050f565b505060408051828152602081018590527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a1505050565b600080829050601f8151111562000422578260405163305a27a960e01b81526004016200029391906200091b565b80516200042f826200096c565b179392505050565b600062000445600c6200052c565b6001600160d01b0316905090565b6000620004606101605190565b6001600160a01b03166391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015620004bc575060408051601f3d908101601f19168201909252620004b99181019062000991565b60015b620004d057620004cb6200057c565b905090565b919050565b60006001600160d01b038211156200050b576040516306dfcc6560e41b815260d060048201526024810183905260440162000293565b5090565b6000806200051f85858562000589565b915091505b935093915050565b80546000908015620005725762000558836200054a600184620009bb565b600091825260209091200190565b54660100000000000090046001600160d01b031662000575565b60005b9392505050565b6000620004cb436200071b565b825460009081908015620006bc576000620005ab876200054a600185620009bb565b60408051808201909152905465ffffffffffff80821680845266010000000000009092046001600160d01b0316602084015291925090871610156200060357604051632520601d60e01b815260040160405180910390fd5b805165ffffffffffff8088169116036200065757846200062a886200054a600186620009bb565b80546001600160d01b039290921666010000000000000265ffffffffffff909216919091179055620006ab565b6040805180820190915265ffffffffffff80881682526001600160d01b0380881660208085019182528b54600181018d5560008d815291909120945191519092166601000000000000029216919091179101555b602001519250839150620005249050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316660100000000000002919093161792019190915590508162000524565b600065ffffffffffff8211156200050b576040516306dfcc6560e41b8152603060048201526024810183905260440162000293565b6001600160a01b03811681146200076657600080fd5b50565b600080604083850312156200077d57600080fd5b82516200078a8162000750565b60208401519092506200079d8162000750565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620007d357607f821691505b602082108103620007f457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200084a576000816000526020600020601f850160051c81016020861015620008255750805b601f850160051c820191505b81811015620008465782815560010162000831565b5050505b505050565b81516001600160401b038111156200086b576200086b620007a8565b62000883816200087c8454620007be565b84620007fa565b602080601f831160018114620008bb5760008415620008a25750858301515b600019600386901b1c1916600185901b17855562000846565b600085815260208120601f198616915b82811015620008ec57888601518255948401946001909101908401620008cb565b50858210156200090b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020808352835180602085015260005b818110156200094b578581018301518582016040015282016200092d565b506000604082860101526040601f19601f8301168501019250505092915050565b80516020808301519190811015620007f45760001960209190910360031b1b16919050565b600060208284031215620009a457600080fd5b815165ffffffffffff811681146200057557600080fd5b818103818111156200020057634e487b7160e01b600052601160045260246000fd5b60805160a05160c05160e0516101005161012051610140516101605161018051614a4b62000a71600039600081816113d6015261172a015260008181610b5701528181611300015281816118eb0152818161258c015261277d015260006125570152600061252a01526000612aee01526000612ac601526000612a2101526000612a4b01526000612a750152614a4b6000f3fe6080604052600436106103395760003560e01c80637d5e81e2116101ab578063c28bc2fa116100f7578063e540d01d11610095578063f23a6e611161006f578063f23a6e6114610afc578063f8ce560a14610b28578063fc0c546a14610b48578063fe0d94c114610b7b57600080fd5b8063e540d01d14610a9c578063eb9019d414610abc578063ece40cc114610adc57600080fd5b8063da35c664116100d1578063da35c664146109ed578063dd4e2ba514610a02578063ddf0b00914610a48578063deaaa7cc14610a6857600080fd5b8063c28bc2fa1461098a578063c59057e41461099d578063d4651276146109bd57600080fd5b80639a802a6d11610164578063ab58fb8e1161013e578063ab58fb8e146108f1578063b58131b014610929578063bc197c811461093e578063c01f9e371461096a57600080fd5b80639a802a6d1461089b578063a7713a70146108bb578063a9a95294146108d057600080fd5b80637d5e81e2146107bd5780637ecebe00146107dd57806384b0196e146108135780638ff262e31461083b57806391ddadf41461085b57806397c3d3341461088757600080fd5b80633e4f49e61161028557806356781388116102235780635f398a14116101fd5780635f398a141461073d57806360c4247f1461075d578063790518871461077d5780637b3c71d31461079d57600080fd5b806356781388146106c45780635700b703146106e45780635b8d0e0d1461071d57600080fd5b8063452115d61161025f578063452115d6146106105780634bf5d7e914610630578063544ffc9c1461064557806354fd4d501461069a57600080fd5b80633e4f49e61461057957806340e58ee5146105a657806343859632146105c657600080fd5b8063160cbed7116102f25780632d63f693116102cc5780632d63f693146104df5780632e82db94146104ff5780632fe3e261146105305780633932abb11461056457600080fd5b8063160cbed71461047c57806316e9eaec1461049c5780632656227d146104cc57600080fd5b806301ffc9a71461034757806302a251a31461037c57806306f3f9e6146103a857806306fdde03146103c8578063143489d0146103ea578063150b7a021461043857600080fd5b3661034257005b005b600080fd5b34801561035357600080fd5b50610367610362366004613905565b610b8e565b60405190151581526020015b60405180910390f35b34801561038857600080fd5b50600854600160301b900463ffffffff165b604051908152602001610373565b3480156103b457600080fd5b506103406103c336600461392f565b610be5565b3480156103d457600080fd5b506103dd610bf9565b6040516103739190613998565b3480156103f657600080fd5b5061042061040536600461392f565b6000908152600460205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610373565b34801561044457600080fd5b50610463610453366004613a8d565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610373565b34801561048857600080fd5b5061039a610497366004613c66565b610c8b565b3480156104a857600080fd5b506104bc6104b736600461392f565b610ccb565b6040516103739493929190613dc5565b61039a6104da366004613c66565b610ed5565b3480156104eb57600080fd5b5061039a6104fa36600461392f565b610f2e565b34801561050b57600080fd5b5061051f61051a36600461392f565b610f4f565b604051610373959493929190613e10565b34801561053c57600080fd5b5061039a7f3e83946653575f9a39005e1545185629e92736b7528ab20ca3816f315424a81181565b34801561057057600080fd5b5061039a610f9f565b34801561058557600080fd5b5061059961059436600461392f565b610fb2565b6040516103739190613e9a565b3480156105b257600080fd5b506103406105c136600461392f565b6110ec565b3480156105d257600080fd5b506103676105e1366004613ea8565b60008281526009602090815260408083206001600160a01b038516845260030190915290205460ff1692915050565b34801561061c57600080fd5b5061039a61062b366004613c66565b61128d565b34801561063c57600080fd5b506103dd6112fc565b34801561065157600080fd5b5061067f61066036600461392f565b6000908152600960205260409020805460018201546002909201549092565b60408051938452602084019290925290820152606001610373565b3480156106a657600080fd5b506040805180820190915260018152603160f81b60208201526103dd565b3480156106d057600080fd5b5061039a6106df366004613ee5565b6113be565b3480156106f057600080fd5b506103676106ff366004613f08565b6001600160a01b03166000908152600d602052604090205460ff1690565b34801561072957600080fd5b5061039a610738366004613f6b565b611477565b34801561074957600080fd5b5061039a610758366004614023565b6115d6565b34801561076957600080fd5b5061039a61077836600461392f565b61162b565b34801561078957600080fd5b506103406107983660046140ba565b6116b9565b3480156107a957600080fd5b5061039a6107b83660046140d7565b6116ca565b3480156107c957600080fd5b5061039a6107d8366004614130565b611712565b3480156107e957600080fd5b5061039a6107f8366004613f08565b6001600160a01b031660009081526002602052604090205490565b34801561081f57600080fd5b506108286117cf565b60405161037397969594939291906141e4565b34801561084757600080fd5b5061039a610856366004614254565b611815565b34801561086757600080fd5b506108706118e7565b60405165ffffffffffff9091168152602001610373565b34801561089357600080fd5b50606461039a565b3480156108a757600080fd5b5061039a6108b63660046142a3565b61196f565b3480156108c757600080fd5b5061039a611984565b3480156108dc57600080fd5b506103676108eb36600461392f565b50600090565b3480156108fd57600080fd5b5061039a61090c36600461392f565b60009081526004602052604090206001015465ffffffffffff1690565b34801561093557600080fd5b5061039a61199e565b34801561094a57600080fd5b506104636109593660046142f9565b63bc197c8160e01b95945050505050565b34801561097657600080fd5b5061039a61098536600461392f565b6119a9565b610340610998366004614388565b6119ec565b3480156109a957600080fd5b5061039a6109b8366004613c66565b611a6c565b3480156109c957600080fd5b506103676109d8366004613f08565b600d6020526000908152604090205460ff1681565b3480156109f957600080fd5b50600a5461039a565b348015610a0e57600080fd5b506040805180820190915260208082527f737570706f72743d627261766f2671756f72756d3d666f722c6162737461696e908201526103dd565b348015610a5457600080fd5b50610340610a6336600461392f565b611aa6565b348015610a7457600080fd5b5061039a7ff2aad550cf55f045cb27e9c559f9889fdfb6e6cdaa032301d6ea397784ae51d781565b348015610aa857600080fd5b50610340610ab73660046143c9565b611c42565b348015610ac857600080fd5b5061039a610ad73660046143ef565b611c53565b348015610ae857600080fd5b50610340610af736600461392f565b611c74565b348015610b0857600080fd5b50610463610b17366004614419565b63f23a6e6160e01b95945050505050565b348015610b3457600080fd5b5061039a610b4336600461392f565b611c85565b348015610b5457600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610420565b610340610b8936600461392f565b611c90565b60006001600160e01b031982166332a2ad4360e11b1480610bbf57506001600160e01b03198216630271189760e51b145b80610bda57506301ffc9a760e01b6001600160e01b03198316145b92915050565b905090565b610bed611e2c565b610bf681611e63565b50565b606060038054610c089061447d565b80601f0160208091040260200160405190810160405280929190818152602001828054610c349061447d565b8015610c815780601f10610c5657610100808354040283529160200191610c81565b820191906000526020600020905b815481529060010190602001808311610c6457829003601f168201915b5050505050905090565b600080610c9a86868686611a6c565b9050610caf81610caa6004611ef9565b611f1c565b506000604051634844252360e11b815260040160405180910390fd5b6000818152600b602090815260408083208151815460a0948102820185019093526080810183815260609586958695919485949390928492849190840182828015610d3f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d21575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610d9757602002820191906000526020600020905b815481526020019060010190808311610d83575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015610e71578382906000526020600020018054610de49061447d565b80601f0160208091040260200160405190810160405280929190818152602001828054610e109061447d565b8015610e5d5780601f10610e3257610100808354040283529160200191610e5d565b820191906000526020600020905b815481529060010190602001808311610e4057829003601f168201915b505050505081526020019060010190610dc5565b505050508152602001600382015481525050905080606001516000801b03610eb457604051636ad0607560e01b8152600481018790526024015b60405180910390fd5b80516020820151604083015160609093015191989097509195509350915050565b600080610ee486868686611a6c565b90506000610ef487878787611f5b565b6000928352600460209081526040808520546001600160a01b03168552600d909152909220805460ff191660011790555095945050505050565b600090815260046020526040902054600160a01b900465ffffffffffff1690565b60006060806060600080600a8781548110610f6c57610f6c6144b7565b90600052602060002001549050600080600080610f8885610ccb565b979e929d50909b5099509497509395505050505050565b6000610be060085465ffffffffffff1690565b6000818152600460205260408120805460ff600160f01b8204811691600160f81b9004168115610fe757506007949350505050565b8015610ff857506002949350505050565b600061100386610f2e565b90508060000361102957604051636ad0607560e01b815260048101879052602401610eab565b60006110336118e7565b65ffffffffffff169050808210611051575060009695505050505050565b600061105c886119a9565b905081811061107357506001979650505050505050565b61107c88612086565b158061109c57506000888152600960205260409020805460019091015411155b156110af57506003979650505050505050565b60008881526004602052604090206001015465ffffffffffff166000036110de57506004979650505050505050565b506005979650505050505050565b6000818152600b602090815260409182902080548351818402810184019094528084529092611288929091849183018282801561115257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611134575b5050505050826001018054806020026020016040519081016040528092919081815260200182805480156111a557602002820191906000526020600020905b815481526020019060010190808311611191575b505050505083600201805480602002602001604051908101604052809291908181526020016000905b8282101561127a5783829060005260206000200180546111ed9061447d565b80601f01602080910402602001604051908101604052809291908181526020018280546112199061447d565b80156112665780601f1061123b57610100808354040283529160200191611266565b820191906000526020600020905b81548152906001019060200180831161124957829003601f168201915b5050505050815260200190600101906111ce565b50505050846003015461128d565b505050565b60008061129c86868686611a6c565b90506112ac81610caa6000611ef9565b506000818152600460205260409020546001600160a01b031633146112e65760405163233d98e360e01b8152336004820152602401610eab565b6112f2868686866120bd565b9695505050505050565b60607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634bf5d7e96040518163ffffffff1660e01b8152600401600060405180830381865afa92505050801561137d57506040513d6000823e601f3d908101601f1916820160405261137a91908101906144cd565b60015b6113b9575060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b919050565b604051634b95309760e01b81523360048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634b95309790602401602060405180830381865afa158015611425573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611449919061453a565b6114665760405163421e68c960e11b815260040160405180910390fd5b611470838361216e565b9392505050565b60008061155a876115547f3e83946653575f9a39005e1545185629e92736b7528ab20ca3816f315424a8118c8c8c6114cc8e6001600160a01b0316600090815260026020526040902080546001810190915590565b8d8d6040516114dc92919061455c565b60405180910390208c805190602001206040516020016115399796959493929190968752602087019590955260ff9390931660408601526001600160a01b03919091166060850152608084015260a083015260c082015260e00190565b6040516020818303038152906040528051906020012061218f565b856121bc565b905080611585576040516394ab6c0760e01b81526001600160a01b0388166004820152602401610eab565b6115c989888a89898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b9250612214915050565b9998505050505050505050565b60008033905061162087828888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250612214915050565b979650505050505050565b600c8054600091829061163f600184614582565b8154811061164f5761164f6144b7565b6000918252602090912001805490915065ffffffffffff811690600160301b90046001600160d01b0316858211611692576001600160d01b031695945050505050565b6116a661169e876122f1565b600c90612328565b6001600160d01b03169695505050505050565b6116c1611e2c565b610bf6816123dd565b6000803390506112f286828787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061244392505050565b604051634b95309760e01b81523360048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634b95309790602401602060405180830381865afa158015611779573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061179d919061453a565b6117ba5760405163421e68c960e11b815260040160405180910390fd5b6117c685858585612466565b95945050505050565b6000606080600080600060606117e3612523565b6117eb612550565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000806118a1846115547ff2aad550cf55f045cb27e9c559f9889fdfb6e6cdaa032301d6ea397784ae51d789898961186a8b6001600160a01b0316600090815260026020526040902080546001810190915590565b60408051602081019690965285019390935260ff90911660608401526001600160a01b0316608083015260a082015260c001611539565b9050806118cc576040516394ab6c0760e01b81526001600160a01b0385166004820152602401610eab565b6112f286858760405180602001604052806000815250612443565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611963575060408051601f3d908101601f1916820190925261196091810190614595565b60015b6113b957610be061257d565b600061197c848484612588565b949350505050565b6000611990600c61261e565b6001600160d01b0316905090565b6000610be060075490565b6000818152600460205260408120546119de90600160d01b810463ffffffff1690600160a01b900465ffffffffffff166145b2565b65ffffffffffff1692915050565b6119f4611e2c565b600080856001600160a01b0316858585604051611a1292919061455c565b60006040518083038185875af1925050503d8060008114611a4f576040519150601f19603f3d011682016040523d82523d6000602084013e611a54565b606091505b5091509150611a638282612657565b50505050505050565b600084848484604051602001611a859493929190613dc5565b60408051601f19818403018152919052805160209091012095945050505050565b6000818152600b6020908152604091829020805483518184028101840190945280845290926112889290918491830182828015611b0c57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611aee575b505050505082600101805480602002602001604051908101604052809291908181526020018280548015611b5f57602002820191906000526020600020905b815481526020019060010190808311611b4b575b505050505083600201805480602002602001604051908101604052809291908181526020016000905b82821015611c34578382906000526020600020018054611ba79061447d565b80601f0160208091040260200160405190810160405280929190818152602001828054611bd39061447d565b8015611c205780601f10611bf557610100808354040283529160200191611c20565b820191906000526020600020905b815481529060010190602001808311611c0357829003601f168201915b505050505081526020019060010190611b88565b505050508460030154610c8b565b611c4a611e2c565b610bf681612673565b60006114708383611c6f60408051602081019091526000815290565b612588565b611c7c611e2c565b610bf681612711565b6000610bda82612752565b6000818152600b6020908152604091829020805483518184028101840190945280845290926112889290918491830182828015611cf657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611cd8575b505050505082600101805480602002602001604051908101604052809291908181526020018280548015611d4957602002820191906000526020600020905b815481526020019060010190808311611d35575b505050505083600201805480602002602001604051908101604052809291908181526020016000905b82821015611e1e578382906000526020600020018054611d919061447d565b80601f0160208091040260200160405190810160405280929190818152602001828054611dbd9061447d565b8015611e0a5780601f10611ddf57610100808354040283529160200191611e0a565b820191906000526020600020905b815481529060010190602001808311611ded57829003601f168201915b505050505081526020019060010190611d72565b505050508460030154610ed5565b303314611e4e576040516347096e4760e01b8152336004820152602401610eab565b565b80611e5b60056127fc565b03611e505750565b606480821115611e905760405163243e544560e01b81526004810183905260248101829052604401610eab565b6000611e9a611984565b9050611eb9611ea76118e7565b611eb08561287a565b600c91906128ae565b505060408051828152602081018590527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a1505050565b6000816007811115611f0d57611f0d613e62565b600160ff919091161b92915050565b600080611f2884610fb2565b9050600083611f3683611ef9565b1603611470578381846040516331b75e4d60e01b8152600401610eab939291906145d8565b600080611f6a86868686611a6c565b9050611f8a81611f7a6005611ef9565b611f846004611ef9565b17611f1c565b506000818152600460205260409020805460ff60f01b1916600160f01b17905530611fb23090565b6001600160a01b03161461203c5760005b865181101561203a57306001600160a01b0316878281518110611fe857611fe86144b7565b60200260200101516001600160a01b03160361203257612032858281518110612013576120136144b7565b60200260200101518051906020012060056128c990919063ffffffff16565b600101611fc3565b505b612049818787878761293a565b6040518181527f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f906020015b60405180910390a195945050505050565b6000818152600960205260408120600281015460018201546120a891906145fa565b6120b4610b4385610f2e565b11159392505050565b6000806120cc86868686611a6c565b905061211a816120dc6007611ef9565b6120e66006611ef9565b6120f06002611ef9565b60016120fd60078261460d565b61210890600261470a565b6121129190614582565b181818611f1c565b506000818152600460205260409081902080546001600160f81b0316600160f81b179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c906120759083815260200190565b60008033905061197c84828560405180602001604052806000815250612443565b6000610bda61219c612a14565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060006121cb8585612b3f565b50909250905060008160038111156121e5576121e5613e62565b1480156122035750856001600160a01b0316826001600160a01b0316145b806112f257506112f2868686612b8c565b600061222486610caa6001611ef9565b50600061223a8661223489610f2e565b85612588565b90506122498787878487612c67565b825160000361229e57856001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda4888784886040516122919493929190614719565b60405180910390a26112f2565b856001600160a01b03167fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb871288878488886040516122df959493929190614741565b60405180910390a29695505050505050565b600065ffffffffffff821115612324576040516306dfcc6560e41b81526030600482015260248101839052604401610eab565b5090565b81546000908181600581111561238757600061234384612d60565b61234d9085614582565b60008881526020902090915081015465ffffffffffff908116908716101561237757809150612385565b6123828160016145fa565b92505b505b600061239587878585612e48565b905080156123d0576123ba876123ac600184614582565b600091825260209091200190565b54600160301b90046001600160d01b0316611620565b6000979650505050505050565b6008546040805165ffffffffffff928316815291831660208301527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93910160405180910390a16008805465ffffffffffff191665ffffffffffff92909216919091179055565b60006117c68585858561246160408051602081019091526000815290565b612214565b6000336124738184612eaa565b61249b5760405163d9b3955760e01b81526001600160a01b0382166004820152602401610eab565b60006124c28260016124ab6118e7565b6124b5919061477b565b65ffffffffffff16611c53565b905060006124ce61199e565b90508082101561250a57604051636121770b60e11b81526001600160a01b03841660048201526024810183905260448101829052606401610eab565b6125178888888887612f95565b98975050505050505050565b6060610be07f00000000000000000000000000000000000000000000000000000000000000006000612fa4565b6060610be07f00000000000000000000000000000000000000000000000000000000000000006001612fa4565b6000610be0436122f1565b60007f0000000000000000000000000000000000000000000000000000000000000000604051630748d63560e31b81526001600160a01b038681166004830152602482018690529190911690633a46b1a890604401602060405180830381865afa1580156125fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197c919061479a565b8054600090801561264e57612638836123ac600184614582565b54600160301b90046001600160d01b0316611470565b60009392505050565b60608261266c576126678261304f565b610bda565b5080610bda565b8063ffffffff1660000361269d5760405163f1cfbf0560e01b815260006004820152602401610eab565b6008546040805163ffffffff600160301b9093048316815291831660208301527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a16008805463ffffffff909216600160301b0269ffffffff00000000000019909216919091179055565b60075460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461910160405180910390a1600755565b6000606461275f8361162b565b604051632394e7a360e21b8152600481018590526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638e539e8c90602401602060405180830381865afa1580156127c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127e8919061479a565b6127f291906147b3565b610bda91906147e0565b80546000906001600160801b0380821691600160801b9004168103612834576040516375e52f4f60e01b815260040160405180910390fd5b6001600160801b038181166000908152600185810160205260408220805492905585546fffffffffffffffffffffffffffffffff19169301909116919091179092555090565b60006001600160d01b03821115612324576040516306dfcc6560e41b815260d0600482015260248101839052604401610eab565b6000806128bc858585613078565b915091505b935093915050565b81546001600160801b03600160801b82048116918116600183019091160361290457604051638acb5f2760e01b815260040160405180910390fd5b6001600160801b03808216600090815260018086016020526040909120939093558354919092018216600160801b029116179055565b60005b8451811015612a0c5760008086838151811061295b5761295b6144b7565b60200260200101516001600160a01b031686848151811061297e5761297e6144b7565b6020026020010151868581518110612998576129986144b7565b60200260200101516040516129ad9190614802565b60006040518083038185875af1925050503d80600081146129ea576040519150601f19603f3d011682016040523d82523d6000602084013e6129ef565b606091505b50915091506129fe8282612657565b50505080600101905061293d565b505050505050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015612a6d57507f000000000000000000000000000000000000000000000000000000000000000046145b15612a9757507f000000000000000000000000000000000000000000000000000000000000000090565b610be0604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60008060008351604103612b795760208401516040850151606086015160001a612b6b888285856131f2565b955095509550505050612b85565b50508151600091506002905b9250925092565b6000806000856001600160a01b03168585604051602401612bae92919061481e565b60408051601f198184030181529181526020820180516001600160e01b0316630b135d3f60e11b17905251612be39190614802565b600060405180830381855afa9150503d8060008114612c1e576040519150601f19603f3d011682016040523d82523d6000602084013e612c23565b606091505b5091509150818015612c3757506020815110155b80156112f257508051630b135d3f60e11b90612c5c908301602090810190840161479a565b149695505050505050565b60008581526009602090815260408083206001600160a01b0388168452600381019092529091205460ff1615612cbb576040516371c6af4960e01b81526001600160a01b0386166004820152602401610eab565b6001600160a01b03851660009081526003820160205260409020805460ff1916600117905560ff8416612d075782816000016000828254612cfc91906145fa565b90915550612a0c9050565b60001960ff851601612d275782816001016000828254612cfc91906145fa565b60011960ff851601612d475782816002016000828254612cfc91906145fa565b6040516303599be160e11b815260040160405180910390fd5b600081600003612d7257506000919050565b60006001612d7f846132c1565b901c6001901b90506001818481612d9857612d986147ca565b048201901c90506001818481612db057612db06147ca565b048201901c90506001818481612dc857612dc86147ca565b048201901c90506001818481612de057612de06147ca565b048201901c90506001818481612df857612df86147ca565b048201901c90506001818481612e1057612e106147ca565b048201901c90506001818481612e2857612e286147ca565b048201901c905061147081828581612e4257612e426147ca565b04613355565b60005b81831015612ea2576000612e5f848461336b565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff161115612e8e57809250612e9c565b612e998160016145fa565b93505b50612e4b565b509392505050565b80516000906034811015612ec2576001915050610bda565b82810160131901516001600160a01b031981166b046e0e4dee0dee6cae47a60f60a31b14612ef557600192505050610bda565b600080612f03602885614582565b90505b83811015612f7457600080612f3a888481518110612f2657612f266144b7565b01602001516001600160f81b031916613386565b9150915081612f525760019650505050505050610bda565b8060ff166004856001600160a01b0316901b1793505050806001019050612f06565b50856001600160a01b0316816001600160a01b031614935050505092915050565b60006112f28686868686613418565b606060ff8314612fbe57612fb7836134f3565b9050610bda565b818054612fca9061447d565b80601f0160208091040260200160405190810160405280929190818152602001828054612ff69061447d565b80156130435780601f1061301857610100808354040283529160200191613043565b820191906000526020600020905b81548152906001019060200180831161302657829003601f168201915b50505050509050610bda565b80511561305f5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b825460009081908015613197576000613096876123ac600185614582565b60408051808201909152905465ffffffffffff808216808452600160301b9092046001600160d01b0316602084015291925090871610156130ea57604051632520601d60e01b815260040160405180910390fd5b805165ffffffffffff808816911603613136578461310d886123ac600186614582565b80546001600160d01b0392909216600160301b0265ffffffffffff909216919091179055613187565b6040805180820190915265ffffffffffff80881682526001600160d01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160301b029216919091179101555b6020015192508391506128c19050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b0291909316179201919091559050816128c1565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561322d57506000915060039050826132b7565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015613281573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166132ad575060009250600191508290506132b7565b9250600091508190505b9450945094915050565b600080608083901c156132d657608092831c92015b604083901c156132e857604092831c92015b602083901c156132fa57602092831c92015b601083901c1561330c57601092831c92015b600883901c1561331e57600892831c92015b600483901c1561333057600492831c92015b600283901c1561334257600292831c92015b600183901c15610bda5760010192915050565b60008183106133645781611470565b5090919050565b600061337a60028484186147e0565b611470908484166145fa565b60008060f883901c602f811180156133a15750603a8160ff16105b156133b657600194602f199091019350915050565b8060ff1660401080156133cc575060478160ff16105b156133e1576001946036199091019350915050565b8060ff1660601080156133f7575060678160ff16105b1561340c576001946056199091019350915050565b50600093849350915050565b6000806134288787878787613532565b600a805460018101825560009182527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a801829055604080516080810182528a815260208181018b90528183018a90528851898201206060830152848452600b81529190922082518051949550929390926134a69284929101906137ab565b5060208281015180516134bf926001850192019061380c565b50604082015180516134db916002840191602090910190613847565b50606091909101516003909101559695505050505050565b6060600061350083613752565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b60006135478686868680519060200120611a6c565b90508451865114158061355c57508351865114155b8061356657508551155b1561359b57855184518651604051630447b05d60e41b8152600481019390935260248301919091526044820152606401610eab565b600081815260046020526040902054600160a01b900465ffffffffffff16156135e657806135c882610fb2565b6040516331b75e4d60e01b8152610eab9291906000906004016145d8565b60006135f0610f9f565b6135f86118e7565b65ffffffffffff1661360a91906145fa565b9050600061362560085463ffffffff600160301b9091041690565b600084815260046020526040902080546001600160a01b0319166001600160a01b038716178155909150613658836122f1565b815465ffffffffffff91909116600160a01b0265ffffffffffff60a01b199091161781556136858261377a565b815463ffffffff91909116600160d01b0263ffffffff60d01b1990911617815588517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e090859087908c908c906001600160401b038111156136e8576136e86139c2565b60405190808252806020026020018201604052801561371b57816020015b60608152602001906001900390816137065790505b508c896137288a826145fa565b8e60405161373e99989796959493929190614837565b60405180910390a150505095945050505050565b600060ff8216601f811115610bda57604051632cd44ac360e21b815260040160405180910390fd5b600063ffffffff821115612324576040516306dfcc6560e41b81526020600482015260248101839052604401610eab565b828054828255906000526020600020908101928215613800579160200282015b8281111561380057825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906137cb565b50612324929150613899565b828054828255906000526020600020908101928215613800579160200282015b8281111561380057825182559160200191906001019061382c565b82805482825590600052602060002090810192821561388d579160200282015b8281111561388d578251829061387d9082614956565b5091602001919060010190613867565b506123249291506138ae565b5b80821115612324576000815560010161389a565b808211156123245760006138c282826138cb565b506001016138ae565b5080546138d79061447d565b6000825580601f106138e7575050565b601f016020900490600052602060002090810190610bf69190613899565b60006020828403121561391757600080fd5b81356001600160e01b03198116811461147057600080fd5b60006020828403121561394157600080fd5b5035919050565b60005b8381101561396357818101518382015260200161394b565b50506000910152565b60008151808452613984816020860160208601613948565b601f01601f19169290920160200192915050565b602081526000611470602083018461396c565b80356001600160a01b03811681146113b957600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613a0057613a006139c2565b604052919050565b60006001600160401b03821115613a2157613a216139c2565b50601f01601f191660200190565b6000613a42613a3d84613a08565b6139d8565b9050828152838383011115613a5657600080fd5b828260208301376000602084830101529392505050565b600082601f830112613a7e57600080fd5b61147083833560208501613a2f565b60008060008060808587031215613aa357600080fd5b613aac856139ab565b9350613aba602086016139ab565b92506040850135915060608501356001600160401b03811115613adc57600080fd5b613ae887828801613a6d565b91505092959194509250565b60006001600160401b03821115613b0d57613b0d6139c2565b5060051b60200190565b600082601f830112613b2857600080fd5b81356020613b38613a3d83613af4565b8083825260208201915060208460051b870101935086841115613b5a57600080fd5b602086015b84811015613b7d57613b70816139ab565b8352918301918301613b5f565b509695505050505050565b600082601f830112613b9957600080fd5b81356020613ba9613a3d83613af4565b8083825260208201915060208460051b870101935086841115613bcb57600080fd5b602086015b84811015613b7d5780358352918301918301613bd0565b600082601f830112613bf857600080fd5b81356020613c08613a3d83613af4565b82815260059290921b84018101918181019086841115613c2757600080fd5b8286015b84811015613b7d5780356001600160401b03811115613c4a5760008081fd5b613c588986838b0101613a6d565b845250918301918301613c2b565b60008060008060808587031215613c7c57600080fd5b84356001600160401b0380821115613c9357600080fd5b613c9f88838901613b17565b95506020870135915080821115613cb557600080fd5b613cc188838901613b88565b94506040870135915080821115613cd757600080fd5b50613ce487828801613be7565b949793965093946060013593505050565b60008151808452602080850194506020840160005b83811015613d2f5781516001600160a01b031687529582019590820190600101613d0a565b509495945050505050565b60008151808452602080850194506020840160005b83811015613d2f57815187529582019590820190600101613d4f565b60008282518085526020808601955060208260051b8401016020860160005b84811015613db857601f19868403018952613da683835161396c565b98840198925090830190600101613d8a565b5090979650505050505050565b608081526000613dd86080830187613cf5565b8281036020840152613dea8187613d3a565b90508281036040840152613dfe8186613d6b565b91505082606083015295945050505050565b85815260a060208201526000613e2960a0830187613cf5565b8281036040840152613e3b8187613d3a565b90508281036060840152613e4f8186613d6b565b9150508260808301529695505050505050565b634e487b7160e01b600052602160045260246000fd5b60088110613e9657634e487b7160e01b600052602160045260246000fd5b9052565b60208101610bda8284613e78565b60008060408385031215613ebb57600080fd5b82359150613ecb602084016139ab565b90509250929050565b803560ff811681146113b957600080fd5b60008060408385031215613ef857600080fd5b82359150613ecb60208401613ed4565b600060208284031215613f1a57600080fd5b611470826139ab565b60008083601f840112613f3557600080fd5b5081356001600160401b03811115613f4c57600080fd5b602083019150836020828501011115613f6457600080fd5b9250929050565b600080600080600080600060c0888a031215613f8657600080fd5b87359650613f9660208901613ed4565b9550613fa4604089016139ab565b945060608801356001600160401b0380821115613fc057600080fd5b613fcc8b838c01613f23565b909650945060808a0135915080821115613fe557600080fd5b613ff18b838c01613a6d565b935060a08a013591508082111561400757600080fd5b506140148a828b01613a6d565b91505092959891949750929550565b60008060008060006080868803121561403b57600080fd5b8535945061404b60208701613ed4565b935060408601356001600160401b038082111561406757600080fd5b61407389838a01613f23565b9095509350606088013591508082111561408c57600080fd5b5061409988828901613a6d565b9150509295509295909350565b65ffffffffffff81168114610bf657600080fd5b6000602082840312156140cc57600080fd5b8135611470816140a6565b600080600080606085870312156140ed57600080fd5b843593506140fd60208601613ed4565b925060408501356001600160401b0381111561411857600080fd5b61412487828801613f23565b95989497509550505050565b6000806000806080858703121561414657600080fd5b84356001600160401b038082111561415d57600080fd5b61416988838901613b17565b9550602087013591508082111561417f57600080fd5b61418b88838901613b88565b945060408701359150808211156141a157600080fd5b6141ad88838901613be7565b935060608701359150808211156141c357600080fd5b508501601f810187136141d557600080fd5b613ae887823560208401613a2f565b60ff60f81b8816815260e06020820152600061420360e083018961396c565b8281036040840152614215818961396c565b606084018890526001600160a01b038716608085015260a0840186905283810360c085015290506142468185613d3a565b9a9950505050505050505050565b6000806000806080858703121561426a57600080fd5b8435935061427a60208601613ed4565b9250614288604086016139ab565b915060608501356001600160401b03811115613adc57600080fd5b6000806000606084860312156142b857600080fd5b6142c1846139ab565b92506020840135915060408401356001600160401b038111156142e357600080fd5b6142ef86828701613a6d565b9150509250925092565b600080600080600060a0868803121561431157600080fd5b61431a866139ab565b9450614328602087016139ab565b935060408601356001600160401b038082111561434457600080fd5b61435089838a01613b88565b9450606088013591508082111561436657600080fd5b61437289838a01613b88565b9350608088013591508082111561408c57600080fd5b6000806000806060858703121561439e57600080fd5b6143a7856139ab565b93506020850135925060408501356001600160401b0381111561411857600080fd5b6000602082840312156143db57600080fd5b813563ffffffff8116811461147057600080fd5b6000806040838503121561440257600080fd5b61440b836139ab565b946020939093013593505050565b600080600080600060a0868803121561443157600080fd5b61443a866139ab565b9450614448602087016139ab565b9350604086013592506060860135915060808601356001600160401b0381111561447157600080fd5b61409988828901613a6d565b600181811c9082168061449157607f821691505b6020821081036144b157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156144df57600080fd5b81516001600160401b038111156144f557600080fd5b8201601f8101841361450657600080fd5b8051614514613a3d82613a08565b81815285602083850101111561452957600080fd5b6117c6826020830160208601613948565b60006020828403121561454c57600080fd5b8151801515811461147057600080fd5b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610bda57610bda61456c565b6000602082840312156145a757600080fd5b8151611470816140a6565b65ffffffffffff8181168382160190808211156145d1576145d161456c565b5092915050565b838152606081016145ec6020830185613e78565b826040830152949350505050565b80820180821115610bda57610bda61456c565b60ff8181168382160190811115610bda57610bda61456c565b600181815b808511156146615781600019048211156146475761464761456c565b8085161561465457918102915b93841c939080029061462b565b509250929050565b60008261467857506001610bda565b8161468557506000610bda565b816001811461469b57600281146146a5576146c1565b6001915050610bda565b60ff8411156146b6576146b661456c565b50506001821b610bda565b5060208310610133831016604e8410600b84101617156146e4575081810a610bda565b6146ee8383614626565b80600019048211156147025761470261456c565b029392505050565b600061147060ff841683614669565b84815260ff841660208201528260408201526080606082015260006112f2608083018461396c565b85815260ff8516602082015283604082015260a06060820152600061476960a083018561396c565b8281036080840152612517818561396c565b65ffffffffffff8281168282160390808211156145d1576145d161456c565b6000602082840312156147ac57600080fd5b5051919050565b8082028115828204841417610bda57610bda61456c565b634e487b7160e01b600052601260045260246000fd5b6000826147fd57634e487b7160e01b600052601260045260246000fd5b500490565b60008251614814818460208701613948565b9190910192915050565b82815260406020820152600061197c604083018461396c565b60006101208b8352602060018060a01b038c16818501528160408501526148608285018c613cf5565b91508382036060850152614874828b613d3a565b915083820360808501528189518084528284019150828160051b850101838c0160005b838110156148c557601f198784030185526148b383835161396c565b94860194925090850190600101614897565b505086810360a08801526148d9818c613d6b565b9450505050508560c08401528460e08401528281036101008401526148fe818561396c565b9c9b505050505050505050505050565b601f821115611288576000816000526020600020601f850160051c810160208610156149375750805b601f850160051c820191505b81811015612a0c57828155600101614943565b81516001600160401b0381111561496f5761496f6139c2565b6149838161497d845461447d565b8461490e565b602080601f8311600181146149b857600084156149a05750858301515b600019600386901b1c1916600185901b178555612a0c565b600085815260208120601f198616915b828110156149e7578886015182559484019460019091019084016149c8565b5085821015614a055787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fea264697066735822122049585afd8bc08ccb30ffb6cc5cd5d567e925f2c6d5436b4025314fb3f82939f264736f6c63430008180033000000000000000000000000847a6c5a32f5ed69c43a82f46a84df75f9b9bd2a000000000000000000000000da3420ca7b915c607313d332d038ceddcd810973", + "nonce": "0x4", + "chainId": "0x397" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x04cdd726471fc1c3834d3860836f2cf160208fe525cf7542294fc42836584502", + "transactionType": "CREATE", + "contractName": "Funding", + "contractAddress": "0x0a2e3f28ba816c6b39135a5138a4a7ec294fb924", + "function": null, + "arguments": [ + "0x12B2434a1022d5787bf06056F2885Fe35De62Bf8", + "0xb3510615D958438b2A4AcCad2D0bDF782E333281", + "0x847a6c5a32F5Ed69c43a82f46a84Df75f9B9Bd2A" + ], + "transaction": { + "from": "0x12b2434a1022d5787bf06056f2885fe35de62bf8", + "gas": "0x100541", + "value": "0x0", + "input": "0x608060405234801561001057600080fd5b50604051610e5c380380610e5c83398101604081905261002f91610295565b826001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61006781610229565b50600180556001600160a01b0382166100965760405160016269813d60e11b0319815260040160405180910390fd5b600280546001600160a01b03199081166001600160a01b039485161790915560038054821692841692909217909155600060048190556040805160e0810182528281526020808201848152928201848152606083018581526080840186815260a0850187815260c08601888152978052600590945293517f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc805490981698169790971790955591517f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bd5592517f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746be5592517f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bf5590517f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746c05590517f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746c155517f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746c2805460ff191660ff909216919091179055506102d8565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b038116811461029057600080fd5b919050565b6000806000606084860312156102aa57600080fd5b6102b384610279565b92506102c160208501610279565b91506102cf60408501610279565b90509250925092565b610b75806102e76000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063715018a611610066578063715018a61461017f5780638c590917146101895780638da5cb5b1461019c578063d12f3b87146101b7578063f2fde38b146101e257600080fd5b8063142a78c6146100985780631b55e338146101385780633dce2b461461015957806361a6381f1461016c575b600080fd5b6100f46100a63660046109ef565b600090815260056020819052604090912080546001820154600283015460038401546004850154600686015495909601546001600160a01b0390941696929591949093919260ff9091169190565b604080516001600160a01b0390981688526020880196909652948601939093526060850191909152608084015260a083015260c082015260e0015b60405180910390f35b61014b6101463660046109ef565b6101f5565b60405190815260200161012f565b61014b610167366004610a1f565b610446565b61014b61017a3660046109ef565b6105e7565b610187610791565b005b610187610197366004610a49565b6107a5565b6000546040516001600160a01b03909116815260200161012f565b61014b6101c53660046109ef565b600090815260066020908152604080832033845290915290205490565b6101876101f0366004610a6b565b61090a565b60006101ff610948565b600082815260056020819052604082209081015490919061022457816002015461022a565b81600501545b6102349042610aa3565b82549091506001600160a01b031633146102615760405163018d3ef960e31b815260040160405180910390fd5b816002015442101561028657604051637e3795db60e11b815260040160405180910390fd5b8160030154826004015410156102af576040516351992ba760e01b815260040160405180910390fd5b6006820154600460ff909116106102d957604051630ea99c6560e11b815260040160405180910390fd5b62278d008110156102fd57604051635ada9a9960e01b815260040160405180910390fd5b6000600483600401546103109190610ab6565b42600585015560068401805491925060019160009061033390849060ff16610ad8565b825460ff9182166101009390930a92830291909202199091161790555060035460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af11580156103a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103c59190610af1565b6104055760405162461bcd60e51b815260206004820152600c60248201526b10db185a5b4819985a5b195960a21b60448201526064015b60405180910390fd5b6040518190339087907fa4eb50103b0591feb0bc913f479d92af5eb7ea33e8c397b49bab52ce6af26cb590600090a49250505061044160018055565b919050565b600254604051635700b70360e01b81523360048201526000916001600160a01b031690635700b70390602401602060405180830381865afa15801561048f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b39190610af1565b6104d057604051630a1ea19360e11b815260040160405180910390fd5b600480549060006104e083610b13565b9091555042905060006104f682621baf80610b2c565b6040805160e0810182526001600160a01b038881168083526020808401888152848601878152606086018c815260006080880181815260a0890182815260c08a018381526004805485526005808a52948d90209b518c546001600160a01b0319169b169a909a178b55955160018b0155935160028a015591516003890155905187870155905190860155516006909401805460ff191660ff90951694909417909355905483518781529283018590529394508793909290917fee52793fa84ff32059ae4a1f92ce1c91296f469f952f33dcd4f02fe83322c4ce910160405180910390a4600454925050505b92915050565b60006105f1610948565b6000828152600560205260409020600281015442101561062457604051637e3795db60e11b815260040160405180910390fd5b806003015481600401541061064c57604051637432356d60e01b815260040160405180910390fd5b600083815260066020908152604080832033845290915281205490819003610686576040516233638960e31b815260040160405180910390fd5b600084815260066020908152604080832033808552925280832092909255600354915163a9059cbb60e01b81526004810191909152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af11580156106f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071a9190610af1565b6107565760405162461bcd60e51b815260206004820152600d60248201526c1499599d5b990819985a5b1959609a1b60448201526064016103fc565b6040518190859033907f2dc8e290002f06fc0085bbca9dfb8b415cf4d1178950c72ff9ee8f4d8878ee6690600090a491505061044160018055565b610799610972565b6107a3600061099f565b565b6000828152600560205260409020600281015442106107d657604051629f920f60e81b815260040160405180910390fd5b6003546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561082d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108519190610af1565b61088f5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016103fc565b818160040160008282546108a39190610b2c565b90915550506000838152600660209081526040808320338452909152812080548492906108d1908490610b2c565b90915550506040518290849033907f5dc1fe5ab986a852c4eda8e8bb94247d13307065c593fb83f1a09be27367938290600090a4505050565b610912610972565b6001600160a01b03811661093c57604051631e4fbdf760e01b8152600060048201526024016103fc565b6109458161099f565b50565b60026001540361096b57604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b6000546001600160a01b031633146107a35760405163118cdaa760e01b81523360048201526024016103fc565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215610a0157600080fd5b5035919050565b80356001600160a01b038116811461044157600080fd5b60008060408385031215610a3257600080fd5b610a3b83610a08565b946020939093013593505050565b60008060408385031215610a5c57600080fd5b50508035926020909101359150565b600060208284031215610a7d57600080fd5b610a8682610a08565b9392505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156105e1576105e1610a8d565b600082610ad357634e487b7160e01b600052601260045260246000fd5b500490565b60ff81811683821601908111156105e1576105e1610a8d565b600060208284031215610b0357600080fd5b81518015158114610a8657600080fd5b600060018201610b2557610b25610a8d565b5060010190565b808201808211156105e1576105e1610a8d56fea2646970667358221220f4fea386e9a8e33f4d2694fce0b76f7c98b0a280b74df0ca78a18bb4646c7d7564736f6c6343000818003300000000000000000000000012b2434a1022d5787bf06056f2885fe35de62bf8000000000000000000000000b3510615d958438b2a4accad2d0bdf782e333281000000000000000000000000847a6c5a32f5ed69c43a82f46a84df75f9b9bd2a", + "nonce": "0x5", + "chainId": "0x397" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x210226", + "logs": [ + { + "address": "0x847a6c5a32f5ed69c43a82f46a84df75f9b9bd2a", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x00000000000000000000000012b2434a1022d5787bf06056f2885fe35de62bf8" + ], + "data": "0x", + "blockHash": "0x759ad7c8387f9b54bc09bb2fc4699cf55ca703fb1c70cdd79d0d4eac113daacb", + "blockNumber": "0x10ef512", + "transactionHash": "0x1294b224368735051765d12f74463c5fcf1d87c8419a46d94493709dd5bf3a78", + "transactionIndex": "0x1", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x847a6c5a32f5ed69c43a82f46a84df75f9b9bd2a", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x00000000000000000000000012b2434a1022d5787bf06056f2885fe35de62bf8" + ], + "data": "0x00000000000000000000000000000000000000000000d3c21bcecceda1000000", + "blockHash": "0x759ad7c8387f9b54bc09bb2fc4699cf55ca703fb1c70cdd79d0d4eac113daacb", + "blockNumber": "0x10ef512", + "transactionHash": "0x1294b224368735051765d12f74463c5fcf1d87c8419a46d94493709dd5bf3a78", + "transactionIndex": "0x1", + "logIndex": "0x1", + "removed": false + } + ], + "logsBloom": "0x00000000200000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008200000000001000000000000000000000000000000000000020000000000000000000800000000000000000000000010000000400000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000400000000000000000000000000000002000000000000000000000000000000000000000000000000000020000008000000010000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x1294b224368735051765d12f74463c5fcf1d87c8419a46d94493709dd5bf3a78", + "transactionIndex": "0x1", + "blockHash": "0x759ad7c8387f9b54bc09bb2fc4699cf55ca703fb1c70cdd79d0d4eac113daacb", + "blockNumber": "0x10ef512", + "gasUsed": "0x202af7", + "effectiveGasPrice": "0xfd", + "from": "0x12b2434a1022d5787bf06056f2885fe35de62bf8", + "to": null, + "contractAddress": "0x847a6c5a32f5ed69c43a82f46a84df75f9b9bd2a", + "l1BaseFeeScalar": "0x3d1", + "l1BlobBaseFee": "0x11dd11520ad", + "l1BlobBaseFeeScalar": "0x8ee87", + "l1Fee": "0x108cb185a24509", + "l1GasPrice": "0x285ce4459", + "l1GasUsed": "0x19514" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x253621", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xbf3c9402be4be89c0aa1e24ea88755ad9578e9f5e6c725f065caef6c2794e83d", + "transactionIndex": "0x2", + "blockHash": "0x759ad7c8387f9b54bc09bb2fc4699cf55ca703fb1c70cdd79d0d4eac113daacb", + "blockNumber": "0x10ef512", + "gasUsed": "0x433fb", + "effectiveGasPrice": "0xfd", + "from": "0x12b2434a1022d5787bf06056f2885fe35de62bf8", + "to": null, + "contractAddress": "0xda3420ca7b915c607313d332d038ceddcd810973", + "l1BaseFeeScalar": "0x3d1", + "l1BlobBaseFee": "0x11dd11520ad", + "l1BlobBaseFeeScalar": "0x8ee87", + "l1Fee": "0x2f55fd27b30bd", + "l1GasPrice": "0x285ce4459", + "l1GasUsed": "0x486a" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x66cf8d", + "logs": [ + { + "address": "0xb3510615d958438b2a4accad2d0bdf782e333281", + "topics": [ + "0xc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012c", + "blockHash": "0x759ad7c8387f9b54bc09bb2fc4699cf55ca703fb1c70cdd79d0d4eac113daacb", + "blockNumber": "0x10ef512", + "transactionHash": "0x58dfe8f2a8eb8e1ab0048f3fa2683bdb6b995025c8dbe7c1f77665e43db67075", + "transactionIndex": "0x3", + "logIndex": "0x2", + "removed": false + }, + { + "address": "0xb3510615d958438b2a4accad2d0bdf782e333281", + "topics": [ + "0x7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000384", + "blockHash": "0x759ad7c8387f9b54bc09bb2fc4699cf55ca703fb1c70cdd79d0d4eac113daacb", + "blockNumber": "0x10ef512", + "transactionHash": "0x58dfe8f2a8eb8e1ab0048f3fa2683bdb6b995025c8dbe7c1f77665e43db67075", + "transactionIndex": "0x3", + "logIndex": "0x3", + "removed": false + }, + { + "address": "0xb3510615d958438b2a4accad2d0bdf782e333281", + "topics": [ + "0xccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x759ad7c8387f9b54bc09bb2fc4699cf55ca703fb1c70cdd79d0d4eac113daacb", + "blockNumber": "0x10ef512", + "transactionHash": "0x58dfe8f2a8eb8e1ab0048f3fa2683bdb6b995025c8dbe7c1f77665e43db67075", + "transactionIndex": "0x3", + "logIndex": "0x4", + "removed": false + }, + { + "address": "0xb3510615d958438b2a4accad2d0bdf782e333281", + "topics": [ + "0x0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004", + "blockHash": "0x759ad7c8387f9b54bc09bb2fc4699cf55ca703fb1c70cdd79d0d4eac113daacb", + "blockNumber": "0x10ef512", + "transactionHash": "0x58dfe8f2a8eb8e1ab0048f3fa2683bdb6b995025c8dbe7c1f77665e43db67075", + "transactionIndex": "0x3", + "logIndex": "0x5", + "removed": false + } + ], + "logsBloom": "0x00000000000000000100000000001000000000000000000000000000000008000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000020000000000000000000000010000000000000000000000000080002000000000000000000000000000000001000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000080000800000000000000000000000000000000000000000000000000000000000000004000000", + "type": "0x2", + "transactionHash": "0x58dfe8f2a8eb8e1ab0048f3fa2683bdb6b995025c8dbe7c1f77665e43db67075", + "transactionIndex": "0x3", + "blockHash": "0x759ad7c8387f9b54bc09bb2fc4699cf55ca703fb1c70cdd79d0d4eac113daacb", + "blockNumber": "0x10ef512", + "gasUsed": "0x41996c", + "effectiveGasPrice": "0xfd", + "from": "0x12b2434a1022d5787bf06056f2885fe35de62bf8", + "to": null, + "contractAddress": "0xb3510615d958438b2a4accad2d0bdf782e333281", + "l1BaseFeeScalar": "0x3d1", + "l1BlobBaseFee": "0x11dd11520ad", + "l1BlobBaseFeeScalar": "0x8ee87", + "l1Fee": "0x1ddbd597cd010b", + "l1GasPrice": "0x285ce4459", + "l1GasUsed": "0x2dad8" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x732349", + "logs": [ + { + "address": "0x0a2e3f28ba816c6b39135a5138a4a7ec294fb924", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x00000000000000000000000012b2434a1022d5787bf06056f2885fe35de62bf8" + ], + "data": "0x", + "blockHash": "0x759ad7c8387f9b54bc09bb2fc4699cf55ca703fb1c70cdd79d0d4eac113daacb", + "blockNumber": "0x10ef512", + "transactionHash": "0x04cdd726471fc1c3834d3860836f2cf160208fe525cf7542294fc42836584502", + "transactionIndex": "0x4", + "logIndex": "0x6", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000800000000000000000000000000080000000000000000000000000000000000000000000000001000000000000000000000000200000000001000000000000000000000000000000000000020000000000000000000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000010000000000000000010000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x04cdd726471fc1c3834d3860836f2cf160208fe525cf7542294fc42836584502", + "transactionIndex": "0x4", + "blockHash": "0x759ad7c8387f9b54bc09bb2fc4699cf55ca703fb1c70cdd79d0d4eac113daacb", + "blockNumber": "0x10ef512", + "gasUsed": "0xc53bc", + "effectiveGasPrice": "0xfd", + "from": "0x12b2434a1022d5787bf06056f2885fe35de62bf8", + "to": null, + "contractAddress": "0x0a2e3f28ba816c6b39135a5138a4a7ec294fb924", + "l1BaseFeeScalar": "0x3d1", + "l1BlobBaseFee": "0x11dd11520ad", + "l1BlobBaseFeeScalar": "0x8ee87", + "l1Fee": "0x58ed5f5fe56fa", + "l1GasPrice": "0x285ce4459", + "l1GasUsed": "0x880a" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1723382852, + "chain": 919, + "commit": "67ec1e3" +} \ No newline at end of file diff --git a/lib/forge-std b/lib/forge-std index 1714bee..07263d1 160000 --- a/lib/forge-std +++ b/lib/forge-std @@ -1 +1 @@ -Subproject commit 1714bee72e286e73f76e320d110e0eaf5c4e649d +Subproject commit 07263d193d621c4b2b0ce8b4d54af58f6957d97d diff --git a/lib/openzeppelin-contracts-upgradeable b/lib/openzeppelin-contracts-upgradeable deleted file mode 160000 index 723f8ca..0000000 --- a/lib/openzeppelin-contracts-upgradeable +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 723f8cab09cdae1aca9ec9cc1cfa040c2d4b06c1 diff --git a/lib/openzeppelin-foundry-upgrades b/lib/openzeppelin-foundry-upgrades deleted file mode 160000 index 4cd15fc..0000000 --- a/lib/openzeppelin-foundry-upgrades +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 4cd15fc50b141c77d8cc9ff8efb44d00e841a299 diff --git a/lib/semaphore-mock b/lib/semaphore-mock deleted file mode 160000 index 761e3b0..0000000 --- a/lib/semaphore-mock +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 761e3b0bbf06a30377ade4a8ff1b961fd98d142b diff --git a/script/Counter.s.sol b/script/Counter.s.sol new file mode 100644 index 0000000..df9ee8b --- /dev/null +++ b/script/Counter.s.sol @@ -0,0 +1,12 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; + +import {Script, console} from "forge-std/Script.sol"; + +contract CounterScript is Script { + function setUp() public {} + + function run() public { + vm.broadcast(); + } +} diff --git a/script/DeployBaseSepolia.s.sol b/script/Deploy_BaseSepolia.s.sol similarity index 100% rename from script/DeployBaseSepolia.s.sol rename to script/Deploy_BaseSepolia.s.sol diff --git a/script/Deploy_MetalL2Testnet.s.sol b/script/Deploy_MetalL2Testnet.s.sol new file mode 100644 index 0000000..99184fa --- /dev/null +++ b/script/Deploy_MetalL2Testnet.s.sol @@ -0,0 +1,54 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; + +import {console} from "forge-std/console.sol"; +import "forge-std/Script.sol"; +import "../src/Governance Tools/GovernautGovernance.sol"; +import "../src/Identity Management/IdentityManager.sol"; +import "../src/Onchain Funding/Funding.sol"; +import {IVotes} from "@openzeppelin/contracts/governance/utils/IVotes.sol"; +import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; +import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol"; +import {HelperConfig} from "../script/HelperConfig.s.sol"; + +contract MyScript is Script { + HelperConfig helperConfig; + IdentityManager identitymanager; + Funding funding; + GovernautGovernance governance; + + function run() external { + uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); + helperConfig = new HelperConfig(); + address governancetoken = helperConfig + .getOpSepoliaConfig() + ._governanceToken; + console.log(governancetoken); + vm.startBroadcast(deployerPrivateKey); + + identitymanager = new IdentityManager( + helperConfig.getOpSepoliaConfig()._WorldcoinRouterAddress, + helperConfig.getOpSepoliaConfig()._appid, + helperConfig.getOpSepoliaConfig()._actionId + ); + + console.log("Identity Manager Address :", address(identitymanager)); + + governance = new GovernautGovernance( + IVotes(governancetoken), + address(identitymanager) + ); + + console.log("Governaut Governance Address :", address(governance)); + + funding = new Funding( + vm.addr(deployerPrivateKey), + address(governance), + governancetoken + ); + + console.log("Funding Address :", address(funding)); + + vm.stopBroadcast(); + } +} diff --git a/script/Deploy_ModeTestnet.s.sol b/script/Deploy_ModeTestnet.s.sol new file mode 100644 index 0000000..4bd888a --- /dev/null +++ b/script/Deploy_ModeTestnet.s.sol @@ -0,0 +1,62 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity 0.8.24; + +import {console} from "forge-std/console.sol"; +import "forge-std/Script.sol"; +import "../src/Governance Tools/GovernautGovernance.sol"; +import "../src/Identity Management/IdentityManager.sol"; +import "../src/Governance Tools/GovernanceToken.sol"; +import {IVotes} from "@openzeppelin/contracts/governance/utils/IVotes.sol"; +import {HelperConfig} from "./HelperConfig.s.sol"; +import {Funding} from "../src/Onchain Funding//Funding.sol"; + +contract DeployContracts is Script { + HelperConfig helperConfig; + IdentityManager identityManager; + GovernautGovernance governance; + GovernanceToken governanceToken; + Funding funding; + + function run() external { + uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); + address deployer = vm.addr(deployerPrivateKey); + helperConfig = new HelperConfig(); + + console.log("Deploying contracts..."); + + vm.startBroadcast(deployerPrivateKey); + + // Deploy GovernanceToken + governanceToken = new GovernanceToken(deployer, 1_000_000 * 10 ** 18); // 1 million tokens with 18 decimals + console.log("GovernanceToken deployed at:", address(governanceToken)); + + // Deploy IdentityManager + HelperConfig.Config memory config = helperConfig.getBaseSepoliaConfig(); // Or use the appropriate network + // config + identityManager = new IdentityManager( + 0xe95f2fCF682712CAf5fB44C9608d33dbac6B536B, + config._appid, + config._actionId + ); + console.log("IdentityManager deployed at:", address(identityManager)); + + // Deploy GovernautGovernance + governance = new GovernautGovernance( + IVotes(address(governanceToken)), + address(identityManager) + ); + console.log("GovernautGovernance deployed at:", address(governance)); + + // Deploy Funding + funding = new Funding( + vm.addr(deployerPrivateKey), + address(governance), + address(governanceToken) + ); + console.log("Funding deployed at:", address(funding)); + + vm.stopBroadcast(); + + console.log("All contracts deployed successfully."); + } +} diff --git a/script/DeployOPSepolia.s.sol b/script/Deploy_OpSepolia.s.sol similarity index 100% rename from script/DeployOPSepolia.s.sol rename to script/Deploy_OpSepolia.s.sol diff --git a/script/Deploy_TenderlyVirtualModeSepolia.s.sol b/script/Deploy_TenderlyVirtualModeSepolia.s.sol new file mode 100644 index 0000000..aab2e2e --- /dev/null +++ b/script/Deploy_TenderlyVirtualModeSepolia.s.sol @@ -0,0 +1,62 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity 0.8.24; + +import {console} from "forge-std/console.sol"; +import "forge-std/Script.sol"; +import "../src/Governance Tools/GovernautGovernance.sol"; +import "../src/Identity Management/IdentityManager.sol"; +import "../src/Governance Tools/GovernanceToken.sol"; +import {IVotes} from "@openzeppelin/contracts/governance/utils/IVotes.sol"; +import {HelperConfig} from "./HelperConfig.s.sol"; +import {Funding} from "../src/Onchain Funding//Funding.sol"; + +contract DeployContracts is Script { + HelperConfig helperConfig; + IdentityManager identityManager; + GovernautGovernance governance; + GovernanceToken governanceToken; + Funding funding; + + function run() external { + uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); + address deployer = vm.addr(deployerPrivateKey); + helperConfig = new HelperConfig(); + + console.log("Deploying contracts..."); + + vm.startBroadcast(deployerPrivateKey); + + // Deploy GovernanceToken + governanceToken = new GovernanceToken(deployer, 1_000_000 * 10 ** 18); // 1 million tokens with 18 decimals + console.log("GovernanceToken deployed at:", address(governanceToken)); + + // Deploy IdentityManager + HelperConfig.Config memory config = helperConfig.getBaseSepoliaConfig(); // Or use the appropriate network + // config + identityManager = new IdentityManager( + config._WorldcoinRouterAddress, + config._appid, + config._actionId + ); + console.log("IdentityManager deployed at:", address(identityManager)); + + // Deploy GovernautGovernance + governance = new GovernautGovernance( + IVotes(address(governanceToken)), + address(identityManager) + ); + console.log("GovernautGovernance deployed at:", address(governance)); + + // Deploy Funding + funding = new Funding( + vm.addr(deployerPrivateKey), + address(governance), + address(governanceToken) + ); + console.log("Funding deployed at:", address(funding)); + + vm.stopBroadcast(); + + console.log("All contracts deployed successfully."); + } +} diff --git a/script/HelperConfig.s.sol b/script/HelperConfig.s.sol index 0857f29..bc9df53 100644 --- a/script/HelperConfig.s.sol +++ b/script/HelperConfig.s.sol @@ -1,79 +1,98 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.24; -import { Script } from "forge-std/Script.sol"; -import { console } from "forge-std/Test.sol"; -import { WorldIDIdentityManagerRouterMock } from "../test/Anvil/Unit/mocks/WorldIDIdentityManagerRouterMock.sol"; +import {Script} from "forge-std/Script.sol"; +import {console} from "forge-std/Test.sol"; +import {WorldIDIdentityManagerRouterMock} from "../test/Anvil/Unit/mocks/WorldIDIdentityManagerRouterMock.sol"; contract HelperConfig is Script { - string appId = "app_staging_6c8d4488699bc14d8d580282ac02b9d5"; - string actionId = "testing-verfication-action"; + string appId = "app_staging_6c8d4488699bc14d8d580282ac02b9d5"; + string actionId = "testing-verfication-action"; + address GOVERNANCE_TOKEN = address(0); - struct Config { - string _appid; - string _actionId; - address _WorldcoinRouterAddress; - } + struct Config { + string _appid; + string _actionId; + address _WorldcoinRouterAddress; + address _governanceToken; + } - // function getOpMainnetConfig() public view returns (Config memory) { - // Config memory OpMainnetConfig = Config({ - // _appid: appId, - // _actionId: actionId, - // _WorldcoinRouterAddress: vm.envAddress("WORLDCOIN_ROUTERADDRESS_OP_MAINNET") - // }); - // return OpMainnetConfig; - // } + // function getOpMainnetConfig() public view returns (Config memory) { + // Config memory OpMainnetConfig = Config({ + // _appid: appId, + // _actionId: actionId, + // _WorldcoinRouterAddress: vm.envAddress("WORLDCOIN_ROUTERADDRESS_OP_MAINNET") + // }); + // return OpMainnetConfig; + // } - // function getMetalL2TestnetConfig() public view returns (Config memory) { - // Config memory MetalL2Config = Config({ - // _appid: appId, - // _actionId: actionId, - // _WorldcoinRouterAddress: vm.envAddress("WORLDCOIN_ROUTERADDRESS_OP_SEPOLIA") - // }); - // return MetalL2Config; - // } + // function getMetalL2TestnetConfig() public view returns (Config memory) { + // Config memory MetalL2Config = Config({ + // _appid: appId, + // _actionId: actionId, + // _WorldcoinRouterAddress: vm.envAddress("WORLDCOIN_ROUTERADDRESS_OP_SEPOLIA") + // }); + // return MetalL2Config; + // } + function getOpMainnetConfig() public view returns (Config memory) { + Config memory OpMainnetConfig = Config({ + _appid: appId, + _actionId: actionId, + _WorldcoinRouterAddress: vm.envAddress( + "WORLDCOIN_ROUTERADDRESS_OP_MAINNET" + ), + _governanceToken: GOVERNANCE_TOKEN + }); + return OpMainnetConfig; + } - function getOpSepoliaConfig() public view returns (Config memory) { - Config memory OpSepoliaConfig = Config({ - _appid: appId, - _actionId: actionId, - _WorldcoinRouterAddress: 0x11cA3127182f7583EfC416a8771BD4d11Fae4334 - }); - return OpSepoliaConfig; - } + function getOpSepoliaConfig() public view returns (Config memory) { + Config memory OpSepoliaConfig = Config({ + _appid: appId, + _actionId: actionId, + _WorldcoinRouterAddress: 0x11cA3127182f7583EfC416a8771BD4d11Fae4334, + _governanceToken: GOVERNANCE_TOKEN + }); + return OpSepoliaConfig; + } - // function getEthMainnetConfig() public view returns (Config memory) { - // Config memory EthMainnetConfig = Config({ - // _appid: appId, - // _actionId: actionId, - // _WorldcoinRouterAddress: vm.envAddress("WORLDCOIN_ROUTERADDRESS_ETH_MAINNET") - // }); - // return EthMainnetConfig; - // } + // function getEthMainnetConfig() public view returns (Config memory) { + // Config memory EthMainnetConfig = Config({ + // _appid: appId, + // _actionId: actionId, + // _WorldcoinRouterAddress: vm.envAddress("WORLDCOIN_ROUTERADDRESS_ETH_MAINNET") + // }); + // return EthMainnetConfig; + // } - // function getEthSepoliaConfig() public view returns (Config memory) { - // Config memory EthSepoliaConfig = Config({ - // _appid: appId, - // _actionId: actionId, - // _WorldcoinRouterAddress: vm.envAddress("WORLDCOIN_ROUTERADDRESS_ETH_SEPOLIA") - // }); - // return EthSepoliaConfig; - // } + // function getEthSepoliaConfig() public view returns (Config memory) { + // Config memory EthSepoliaConfig = Config({ + // _appid: appId, + // _actionId: actionId, + // _WorldcoinRouterAddress: vm.envAddress("WORLDCOIN_ROUTERADDRESS_ETH_SEPOLIA") + // }); + // return EthSepoliaConfig; + // } - function getBaseSepoliaConfig() public view returns (Config memory) { - Config memory BaseSepoliaConfig = Config({ - _appid: appId, - _actionId: actionId, - _WorldcoinRouterAddress: 0x42FF98C4E85212a5D31358ACbFe76a621b50fC02 - }); - return BaseSepoliaConfig; - } + function getBaseSepoliaConfig() public view returns (Config memory) { + Config memory BaseSepoliaConfig = Config({ + _appid: appId, + _actionId: actionId, + _WorldcoinRouterAddress: 0x42FF98C4E85212a5D31358ACbFe76a621b50fC02, + _governanceToken: GOVERNANCE_TOKEN + }); + return BaseSepoliaConfig; + } - function getAnvilConfig() public returns (Config memory) { - console.log("testing on anvil"); - WorldIDIdentityManagerRouterMock routerMock = new WorldIDIdentityManagerRouterMock(); - Config memory AnvilConfig = - Config({ _appid: appId, _actionId: actionId, _WorldcoinRouterAddress: address(routerMock) }); - return AnvilConfig; - } + function getAnvilConfig() public returns (Config memory) { + console.log("testing on anvil"); + WorldIDIdentityManagerRouterMock routerMock = new WorldIDIdentityManagerRouterMock(); + Config memory AnvilConfig = Config({ + _appid: appId, + _actionId: actionId, + _WorldcoinRouterAddress: address(routerMock), + _governanceToken: GOVERNANCE_TOKEN + }); + return AnvilConfig; + } } diff --git a/src/Counter.sol b/src/Counter.sol new file mode 100644 index 0000000..aded799 --- /dev/null +++ b/src/Counter.sol @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; + +contract Counter { + uint256 public number; + + function setNumber(uint256 newNumber) public { + number = newNumber; + } + + function increment() public { + number++; + } +} diff --git a/test/Anvil/Unit/TestGovernautGovernance.t.sol b/test/Anvil/Unit/TestGovernautGovernance.t.sol index 3de272c..c8c3b58 100644 --- a/test/Anvil/Unit/TestGovernautGovernance.t.sol +++ b/test/Anvil/Unit/TestGovernautGovernance.t.sol @@ -1,278 +1,320 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.24; -import { Test, console2 } from "forge-std/Test.sol"; -import { GovernautGovernance } from "../../../src/Governance Tools/GovernautGovernance.sol"; -import { WorldIDIdentityManagerRouterMock } from "./mocks/WorldIDIdentityManagerRouterMock.sol"; -import { IdentityManager } from "../../../src/Identity Management/IdentityManager.sol"; -import { HelperConfig } from "../../../script/HelperConfig.s.sol"; -import { MockERC20 } from "./mocks/MockERC20.sol"; +import {Test, console2} from "forge-std/Test.sol"; +import {GovernautGovernance} from "../../../src/Governance Tools/GovernautGovernance.sol"; +import {WorldIDIdentityManagerRouterMock} from "./mocks/WorldIDIdentityManagerRouterMock.sol"; +import {IdentityManager} from "../../../src/Identity Management/IdentityManager.sol"; +import {HelperConfig} from "../../../script/HelperConfig.s.sol"; +import {MockERC20} from "./mocks/MockERC20.sol"; contract TestGovernautGovernance is Test { - GovernautGovernance governautGovernance; - IdentityManager identityManager; - HelperConfig helperConfig; - MockERC20 token; - - address OWNER = makeAddr("Owner"); - address USER_1 = makeAddr("User1"); - address USER_2 = makeAddr("User2"); - address USER_3 = makeAddr("User3"); - address USER_4 = makeAddr("User4"); - address USER_5 = makeAddr("User5"); - address USER_6 = makeAddr("User6"); - address USER_7 = makeAddr("User7"); - address USER_8 = makeAddr("User8"); - address USER_9 = makeAddr("User9"); - address USER_10 = makeAddr("User10"); - - function setUp() public { - helperConfig = new HelperConfig(); - vm.startPrank(OWNER); - - token = new MockERC20(); - // Mint and distribute tokens to users - token.mint(USER_1, 1000 * 10 ** 18); // Adjust the amount as needed - token.mint(USER_2, 10_000 * 10 ** 18); - token.mint(USER_3, 10_000 * 10 ** 18); - token.mint(USER_4, 10_000 * 10 ** 18); - token.mint(USER_5, 10_000 * 10 ** 18); - token.mint(USER_6, 10_000 * 10 ** 18); - token.mint(USER_7, 10_000 * 10 ** 18); - token.mint(USER_8, 10_000 * 10 ** 18); - token.mint(USER_9, 10_000 * 10 ** 18); - token.mint(USER_10, 10_000 * 10 ** 18); - - identityManager = new IdentityManager( - helperConfig.getAnvilConfig()._WorldcoinRouterAddress, - helperConfig.getAnvilConfig()._appid, - helperConfig.getAnvilConfig()._actionId - ); - governautGovernance = new GovernautGovernance(token, address(identityManager)); - vm.stopPrank(); + GovernautGovernance governautGovernance; + IdentityManager identityManager; + HelperConfig helperConfig; + MockERC20 token; + + address OWNER = makeAddr("Owner"); + address USER_1 = makeAddr("User1"); + address USER_2 = makeAddr("User2"); + address USER_3 = makeAddr("User3"); + address USER_4 = makeAddr("User4"); + address USER_5 = makeAddr("User5"); + address USER_6 = makeAddr("User6"); + address USER_7 = makeAddr("User7"); + address USER_8 = makeAddr("User8"); + address USER_9 = makeAddr("User9"); + address USER_10 = makeAddr("User10"); + + function setUp() public { + helperConfig = new HelperConfig(); + vm.startPrank(OWNER); + + token = new MockERC20(); + // Mint and distribute tokens to users + token.mint(USER_1, 1000 * 10 ** 18); // Adjust the amount as needed + token.mint(USER_2, 10_000 * 10 ** 18); + token.mint(USER_3, 10_000 * 10 ** 18); + token.mint(USER_4, 10_000 * 10 ** 18); + token.mint(USER_5, 10_000 * 10 ** 18); + token.mint(USER_6, 10_000 * 10 ** 18); + token.mint(USER_7, 10_000 * 10 ** 18); + token.mint(USER_8, 10_000 * 10 ** 18); + token.mint(USER_9, 10_000 * 10 ** 18); + token.mint(USER_10, 10_000 * 10 ** 18); + + identityManager = new IdentityManager( + helperConfig.getAnvilConfig()._WorldcoinRouterAddress, + helperConfig.getAnvilConfig()._appid, + helperConfig.getAnvilConfig()._actionId + ); + governautGovernance = new GovernautGovernance( + token, + address(identityManager) + ); + vm.stopPrank(); + } + + modifier DelegateVotingPower() { + vm.startPrank(USER_1); + token.delegate(USER_1); + vm.stopPrank(); + vm.startPrank(USER_2); + token.delegate(USER_2); + vm.stopPrank(); + vm.startPrank(USER_3); + token.delegate(USER_3); + vm.stopPrank(); + vm.startPrank(USER_4); + token.delegate(USER_4); + vm.stopPrank(); + vm.startPrank(USER_5); + token.delegate(USER_5); + vm.stopPrank(); + vm.startPrank(USER_6); + token.delegate(USER_6); + vm.stopPrank(); + vm.startPrank(USER_7); + token.delegate(USER_7); + vm.stopPrank(); + vm.startPrank(USER_8); + token.delegate(USER_8); + vm.stopPrank(); + vm.startPrank(USER_9); + token.delegate(USER_9); + vm.stopPrank(); + vm.startPrank(USER_10); + token.delegate(USER_10); + vm.stopPrank(); + + // Advance block timestamp to ensure delegations are active + vm.warp(block.timestamp + 1); + _; + } + + function testUnverifiedProposeFunction() public { + // Attempt to propose with an unverified identity + vm.startPrank(USER_1); + vm.expectRevert(GovernautGovernance.UserIsntVerified.selector); + governautGovernance.propose( + new address[](0), + new uint256[](0), + new bytes[](0), + "Project Proposal" + ); + vm.stopPrank(); + } + + function testVerifiedProposeFunctionCreatesProposal() public { + vm.startPrank(USER_1); + // Verify USER_1 for testing purposes + identityManager.dumbVerify(); + bool verified = identityManager.getIsVerified(USER_1); + assertEq(verified, true, "USER_1 should be verified"); + + // Prepare proposal details + address[] memory targets = new address[](1); + targets[0] = address(this); // Example target, can be any valid address + uint256[] memory values = new uint256[](1); + values[0] = 0; // Example value + bytes[] memory calldatas = new bytes[](1); + calldatas[0] = abi.encodeWithSignature(""); // Example call data + string memory description = "Test Proposal"; + + // Propose and retrieve proposal ID + uint256 proposalId = governautGovernance.propose( + targets, + values, + calldatas, + description + ); + vm.stopPrank(); + + // Assert proposal creation + assertTrue(proposalId > 0); + + // Retrieve and assert proposal details + ( + address[] memory retTargets, + uint256[] memory retValues, + bytes[] memory retCalldatas, + bytes32 retDescriptionHash + ) = governautGovernance.proposalDetails(proposalId); + + assertEq(retTargets.length, targets.length); + assertEq(retTargets[0], targets[0]); + assertEq(retValues[0], values[0]); + assertEq(retCalldatas[0], calldatas[0]); + assertEq(retDescriptionHash, keccak256(bytes(description))); + } + + function testProposalExecution() public DelegateVotingPower { + // Setup: Create and vote on a proposal as verified users + vm.startPrank(USER_1); + identityManager.dumbVerify(); // Verify USER_1 + uint256 proposalId = governautGovernance.propose( + new address[](1), + new uint256[](1), + new bytes[](1), + "Execute Proposal" + ); + vm.stopPrank(); + + // Ensure we're past the votingDelay but within the votingPeriod + vm.warp(block.timestamp + governautGovernance.votingDelay() + 1); // Warp to just after the start of the voting + // period + + // Simulation of other users voting to meet quorum + address[] memory users = new address[](10); + users[0] = USER_1; + users[1] = USER_2; + users[2] = USER_3; + users[3] = USER_4; + users[4] = USER_5; + users[5] = USER_6; + users[6] = USER_7; + users[7] = USER_8; + users[8] = USER_9; + users[9] = USER_10; + + for (uint256 i = 0; i < users.length; i++) { + vm.startPrank(users[i]); + identityManager.dumbVerify(); // Verify each user + governautGovernance.castVote(proposalId, 1); // Each user votes in favor + vm.stopPrank(); } - modifier DelegateVotingPower() { - vm.startPrank(USER_1); - token.delegate(USER_1); - vm.stopPrank(); - vm.startPrank(USER_2); - token.delegate(USER_2); - vm.stopPrank(); - vm.startPrank(USER_3); - token.delegate(USER_3); - vm.stopPrank(); - vm.startPrank(USER_4); - token.delegate(USER_4); - vm.stopPrank(); - vm.startPrank(USER_5); - token.delegate(USER_5); - vm.stopPrank(); - vm.startPrank(USER_6); - token.delegate(USER_6); - vm.stopPrank(); - vm.startPrank(USER_7); - token.delegate(USER_7); - vm.stopPrank(); - vm.startPrank(USER_8); - token.delegate(USER_8); - vm.stopPrank(); - vm.startPrank(USER_9); - token.delegate(USER_9); - vm.stopPrank(); - vm.startPrank(USER_10); - token.delegate(USER_10); - vm.stopPrank(); - - // Advance block timestamp to ensure delegations are active - vm.warp(block.timestamp + 1); - _; + // Advance time to simulate the end of the voting period + vm.warp(block.timestamp + governautGovernance.votingPeriod() + 1); // Warp to just after the end of the voting + // period + + // Test: Execute the proposal + governautGovernance.execute(proposalId); + + // Verify: Check if the approvedProposers mapping is updated correctly + bool isApproved = governautGovernance.isApprovedProposer(USER_1); + assertTrue( + isApproved, + "Proposer should be approved after successful proposal execution." + ); + } + + function testQuorumRequirements() public DelegateVotingPower { + // Setup: Create a proposal + vm.startPrank(USER_1); + identityManager.dumbVerify(); + uint256 proposalId = governautGovernance.propose( + new address[](1), + new uint256[](1), + new bytes[](1), + "Quorum Test" + ); + vm.stopPrank(); + + // Advance to voting period + vm.warp(block.timestamp + governautGovernance.votingDelay() + 1); + + // Have only 2 users vote (assuming this is below quorum) + address[] memory voters = new address[](1); + voters[0] = USER_1; + + for (uint256 i = 0; i < voters.length; i++) { + vm.startPrank(voters[i]); + identityManager.dumbVerify(); + governautGovernance.castVote(proposalId, 1); + vm.stopPrank(); } - function testUnverifiedProposeFunction() public { - // Attempt to propose with an unverified identity - vm.startPrank(USER_1); - vm.expectRevert(GovernautGovernance.UserIsntVerified.selector); - governautGovernance.propose(new address[](0), new uint256[](0), new bytes[](0), "Project Proposal"); - vm.stopPrank(); - } - - function testVerifiedProposeFunctionCreatesProposal() public { - vm.startPrank(USER_1); - // Verify USER_1 for testing purposes - identityManager.dumbVerify(); - bool verified = identityManager.getIsVerified(USER_1); - assertEq(verified, true, "USER_1 should be verified"); - - // Prepare proposal details - address[] memory targets = new address[](1); - targets[0] = address(this); // Example target, can be any valid address - uint256[] memory values = new uint256[](1); - values[0] = 0; // Example value - bytes[] memory calldatas = new bytes[](1); - calldatas[0] = abi.encodeWithSignature(""); // Example call data - string memory description = "Test Proposal"; - - // Propose and retrieve proposal ID - uint256 proposalId = governautGovernance.propose(targets, values, calldatas, description); - vm.stopPrank(); - - // Assert proposal creation - assertTrue(proposalId > 0); - - // Retrieve and assert proposal details - ( - address[] memory retTargets, - uint256[] memory retValues, - bytes[] memory retCalldatas, - bytes32 retDescriptionHash - ) = governautGovernance.proposalDetails(proposalId); - - assertEq(retTargets.length, targets.length); - assertEq(retTargets[0], targets[0]); - assertEq(retValues[0], values[0]); - assertEq(retCalldatas[0], calldatas[0]); - assertEq(retDescriptionHash, keccak256(bytes(description))); - } - - function testProposalExecution() public DelegateVotingPower { - // Setup: Create and vote on a proposal as verified users - vm.startPrank(USER_1); - identityManager.dumbVerify(); // Verify USER_1 - uint256 proposalId = - governautGovernance.propose(new address[](1), new uint256[](1), new bytes[](1), "Execute Proposal"); - vm.stopPrank(); - - // Ensure we're past the votingDelay but within the votingPeriod - vm.warp(block.timestamp + governautGovernance.votingDelay() + 1); // Warp to just after the start of the voting - // period - - // Simulation of other users voting to meet quorum - address[] memory users = new address[](10); - users[0] = USER_1; - users[1] = USER_2; - users[2] = USER_3; - users[3] = USER_4; - users[4] = USER_5; - users[5] = USER_6; - users[6] = USER_7; - users[7] = USER_8; - users[8] = USER_9; - users[9] = USER_10; - - for (uint256 i = 0; i < users.length; i++) { - vm.startPrank(users[i]); - identityManager.dumbVerify(); // Verify each user - governautGovernance.castVote(proposalId, 1); // Each user votes in favor - vm.stopPrank(); - } - - // Advance time to simulate the end of the voting period - vm.warp(block.timestamp + governautGovernance.votingPeriod() + 1); // Warp to just after the end of the voting - // period - - // Test: Execute the proposal - governautGovernance.execute(proposalId); - - // Verify: Check if the approvedProposers mapping is updated correctly - bool isApproved = governautGovernance.isApprovedProposer(USER_1); - assertTrue(isApproved, "Proposer should be approved after successful proposal execution."); - } - - function testQuorumRequirements() public DelegateVotingPower { - // Setup: Create a proposal - vm.startPrank(USER_1); - identityManager.dumbVerify(); - uint256 proposalId = - governautGovernance.propose(new address[](1), new uint256[](1), new bytes[](1), "Quorum Test"); - vm.stopPrank(); - - // Advance to voting period - vm.warp(block.timestamp + governautGovernance.votingDelay() + 1); - - // Have only 2 users vote (assuming this is below quorum) - address[] memory voters = new address[](1); - voters[0] = USER_1; - - for (uint256 i = 0; i < voters.length; i++) { - vm.startPrank(voters[i]); - identityManager.dumbVerify(); - governautGovernance.castVote(proposalId, 1); - vm.stopPrank(); - } - - // Advance to end of voting period - vm.warp(block.timestamp + governautGovernance.votingPeriod() + 1); - - // Attempt to execute the proposal - vm.expectRevert(); // Expect this to fail due to not meeting quorum - governautGovernance.execute(proposalId); - } - - function testProposalThreshold() public { - // Assuming there's a non-zero proposal threshold - uint256 threshold = governautGovernance.proposalThreshold(); - - if (threshold > 0) { - // Setup: Mint just below the threshold amount to USER_1 - vm.startPrank(OWNER); - token.mint(USER_1, threshold - 1); - vm.stopPrank(); - - // Attempt to propose with insufficient tokens - vm.startPrank(USER_1); - identityManager.dumbVerify(); - vm.expectRevert(); // Expect this to fail due to insufficient tokens - governautGovernance.propose(new address[](1), new uint256[](1), new bytes[](1), "Threshold Test"); - vm.stopPrank(); - } - } - - function testVotingPeriodConstraints() public DelegateVotingPower { - // Setup: Create a proposal - vm.startPrank(USER_1); - identityManager.dumbVerify(); - uint256 proposalId = - governautGovernance.propose(new address[](1), new uint256[](1), new bytes[](1), "Voting Period Test"); - vm.stopPrank(); - - // Attempt to vote before voting delay has passed - vm.startPrank(USER_2); - identityManager.dumbVerify(); - vm.expectRevert(); // Expect this to fail as voting hasn't started - governautGovernance.castVote(proposalId, 1); - vm.stopPrank(); - - // Advance past voting period - vm.warp(block.timestamp + governautGovernance.votingDelay() + governautGovernance.votingPeriod() + 1); - - // Attempt to vote after voting period has ended - vm.startPrank(USER_3); - identityManager.dumbVerify(); - vm.expectRevert(); // Expect this to fail as voting has ended - governautGovernance.castVote(proposalId, 1); - vm.stopPrank(); - } - - function testDoubleVoting() public DelegateVotingPower { - // Setup: Create a proposal - vm.startPrank(USER_1); - identityManager.dumbVerify(); - uint256 proposalId = - governautGovernance.propose(new address[](1), new uint256[](1), new bytes[](1), "Double Voting Test"); - vm.stopPrank(); - - // Advance to voting period - vm.warp(block.timestamp + governautGovernance.votingDelay() + 1); - - // Vote once - vm.startPrank(USER_2); - identityManager.dumbVerify(); - governautGovernance.castVote(proposalId, 1); - - // Attempt to vote again - vm.expectRevert(); // Expect this to fail as USER_2 has already voted - governautGovernance.castVote(proposalId, 1); - vm.stopPrank(); + // Advance to end of voting period + vm.warp(block.timestamp + governautGovernance.votingPeriod() + 1); + + // Attempt to execute the proposal + vm.expectRevert(); // Expect this to fail due to not meeting quorum + governautGovernance.execute(proposalId); + } + + function testProposalThreshold() public { + // Assuming there's a non-zero proposal threshold + uint256 threshold = governautGovernance.proposalThreshold(); + + if (threshold > 0) { + // Setup: Mint just below the threshold amount to USER_1 + vm.startPrank(OWNER); + token.mint(USER_1, threshold - 1); + vm.stopPrank(); + + // Attempt to propose with insufficient tokens + vm.startPrank(USER_1); + identityManager.dumbVerify(); + vm.expectRevert(); // Expect this to fail due to insufficient tokens + governautGovernance.propose( + new address[](1), + new uint256[](1), + new bytes[](1), + "Threshold Test" + ); + vm.stopPrank(); } + } + + function testVotingPeriodConstraints() public DelegateVotingPower { + // Setup: Create a proposal + vm.startPrank(USER_1); + identityManager.dumbVerify(); + uint256 proposalId = governautGovernance.propose( + new address[](1), + new uint256[](1), + new bytes[](1), + "Voting Period Test" + ); + vm.stopPrank(); + + // Attempt to vote before voting delay has passed + vm.startPrank(USER_2); + identityManager.dumbVerify(); + vm.expectRevert(); // Expect this to fail as voting hasn't started + governautGovernance.castVote(proposalId, 1); + vm.stopPrank(); + + // Advance past voting period + vm.warp( + block.timestamp + + governautGovernance.votingDelay() + + governautGovernance.votingPeriod() + + 1 + ); + + // Attempt to vote after voting period has ended + vm.startPrank(USER_3); + identityManager.dumbVerify(); + vm.expectRevert(); // Expect this to fail as voting has ended + governautGovernance.castVote(proposalId, 1); + vm.stopPrank(); + } + + function testDoubleVoting() public DelegateVotingPower { + // Setup: Create a proposal + vm.startPrank(USER_1); + identityManager.dumbVerify(); + uint256 proposalId = governautGovernance.propose( + new address[](1), + new uint256[](1), + new bytes[](1), + "Double Voting Test" + ); + vm.stopPrank(); + + // Advance to voting period + vm.warp(block.timestamp + governautGovernance.votingDelay() + 1); + + // Vote once + vm.startPrank(USER_2); + identityManager.dumbVerify(); + governautGovernance.castVote(proposalId, 1); + + // Attempt to vote again + vm.expectRevert(); // Expect this to fail as USER_2 has already voted + governautGovernance.castVote(proposalId, 1); + vm.stopPrank(); + } } diff --git a/test/Counter.t.sol b/test/Counter.t.sol new file mode 100644 index 0000000..54b724f --- /dev/null +++ b/test/Counter.t.sol @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; + +import {Test, console} from "forge-std/Test.sol"; +import {Counter} from "../src/Counter.sol"; + +contract CounterTest is Test { + Counter public counter; + + function setUp() public { + counter = new Counter(); + counter.setNumber(0); + } + + function test_Increment() public { + counter.increment(); + assertEq(counter.number(), 1); + } + + function testFuzz_SetNumber(uint256 x) public { + counter.setNumber(x); + assertEq(counter.number(), x); + } +}