More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 81 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 19217284 | 362 days ago | IN | 0 ETH | 0.0074092 | ||||
Withdraw | 14840379 | 991 days ago | IN | 0 ETH | 0.00848908 | ||||
Withdraw | 14840379 | 991 days ago | IN | 0 ETH | 0.00602442 | ||||
Withdraw | 14810152 | 996 days ago | IN | 0 ETH | 0.00696807 | ||||
Withdraw | 14690975 | 1015 days ago | IN | 0 ETH | 0.01790567 | ||||
Withdraw | 14153384 | 1098 days ago | IN | 0 ETH | 0.02165272 | ||||
Withdraw | 13196865 | 1248 days ago | IN | 0 ETH | 0.03139352 | ||||
Withdraw | 13165204 | 1252 days ago | IN | 0 ETH | 0.03219075 | ||||
Withdraw | 13024738 | 1274 days ago | IN | 0 ETH | 0.01979912 | ||||
Withdraw | 12983008 | 1281 days ago | IN | 0 ETH | 0.01452314 | ||||
Withdraw | 12982582 | 1281 days ago | IN | 0 ETH | 0.01505624 | ||||
Withdraw | 12945059 | 1287 days ago | IN | 0 ETH | 0.00989187 | ||||
Withdraw | 12945040 | 1287 days ago | IN | 0 ETH | 0.01031937 | ||||
Withdraw | 12944134 | 1287 days ago | IN | 0 ETH | 0.00974069 | ||||
Withdraw | 12792345 | 1311 days ago | IN | 0 ETH | 0.00474795 | ||||
Withdraw | 12792265 | 1311 days ago | IN | 0 ETH | 0.00870458 | ||||
Withdraw | 12745622 | 1318 days ago | IN | 0 ETH | 0.00395663 | ||||
Withdraw | 12745563 | 1318 days ago | IN | 0 ETH | 0.00514346 | ||||
Withdraw | 12745350 | 1318 days ago | IN | 0 ETH | 0.00412751 | ||||
Withdraw | 12694593 | 1326 days ago | IN | 0 ETH | 0.00771889 | ||||
Set Reward Per B... | 12688365 | 1327 days ago | IN | 0 ETH | 0.0005812 | ||||
Withdraw | 12611467 | 1339 days ago | IN | 0 ETH | 0.00454039 | ||||
Withdraw | 12610808 | 1339 days ago | IN | 0 ETH | 0.00742973 | ||||
Withdraw | 12610629 | 1339 days ago | IN | 0 ETH | 0.00412775 | ||||
Withdraw | 12579469 | 1344 days ago | IN | 0 ETH | 0.00416878 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
19217284 | 362 days ago | 0.1 ETH | ||||
19217284 | 362 days ago | 0.1 ETH | ||||
14840379 | 991 days ago | 0.1 ETH | ||||
14840379 | 991 days ago | 0.1 ETH | ||||
14840379 | 991 days ago | 0.1 ETH | ||||
14840379 | 991 days ago | 0.1 ETH | ||||
14810152 | 996 days ago | 0.1 ETH | ||||
14810152 | 996 days ago | 0.1 ETH | ||||
14690975 | 1015 days ago | 0.1 ETH | ||||
14690975 | 1015 days ago | 0.1 ETH | ||||
14153384 | 1098 days ago | 0.1 ETH | ||||
14153384 | 1098 days ago | 0.1 ETH | ||||
13196865 | 1248 days ago | 0.1 ETH | ||||
13196865 | 1248 days ago | 0.1 ETH | ||||
13165204 | 1252 days ago | 0.1 ETH | ||||
13165204 | 1252 days ago | 0.1 ETH | ||||
13024738 | 1274 days ago | 0.1 ETH | ||||
13024738 | 1274 days ago | 0.1 ETH | ||||
12983008 | 1281 days ago | 0.1 ETH | ||||
12983008 | 1281 days ago | 0.1 ETH | ||||
12982582 | 1281 days ago | 0.1 ETH | ||||
12982582 | 1281 days ago | 0.1 ETH | ||||
12945059 | 1287 days ago | 0.1 ETH | ||||
12945059 | 1287 days ago | 0.1 ETH | ||||
12945040 | 1287 days ago | 0.1 ETH |
Loading...
Loading
This contract contains unverified libraries: Hasher
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Source Code Verified (Exact Match)
Contract Name:
CycloneV2dot3
Compiler Version
v0.5.17+commit.d19bba13
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-04-16 */ // File: contracts/math/SafeMath.sol pragma solidity <0.6 >=0.4.21; /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { /** * @dev Multiplies two numbers, throws on overflow. */ /*@CTK SafeMath_mul @tag spec @post __reverted == __has_assertion_failure @post __has_assertion_failure == __has_overflow @post __reverted == false -> c == a * b @post msg == msg__post */ /* CertiK Smart Labelling, for more details visit: https://certik.org */ function mul(uint256 a, uint256 b) internal pure returns (uint256 c) { if (a == 0) { return 0; } c = a * b; assert(c / a == b); return c; } /** * @dev Integer division of two numbers, truncating the quotient. */ /*@CTK SafeMath_div @tag spec @pre b != 0 @post __reverted == __has_assertion_failure @post __has_overflow == true -> __has_assertion_failure == true @post __reverted == false -> __return == a / b @post msg == msg__post */ /* CertiK Smart Labelling, for more details visit: https://certik.org */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 // uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return a / b; } /** * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend). */ /*@CTK SafeMath_sub @tag spec @post __reverted == __has_assertion_failure @post __has_overflow == true -> __has_assertion_failure == true @post __reverted == false -> __return == a - b @post msg == msg__post */ /* CertiK Smart Labelling, for more details visit: https://certik.org */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } /** * @dev Adds two numbers, throws on overflow. */ /*@CTK SafeMath_add @tag spec @post __reverted == __has_assertion_failure @post __has_assertion_failure == __has_overflow @post __reverted == false -> c == a + b @post msg == msg__post */ /* CertiK Smart Labelling, for more details visit: https://certik.org */ function add(uint256 a, uint256 b) internal pure returns (uint256 c) { c = a + b; assert(c >= a); return c; } } // File: contracts/token/IERC20Basic.sol pragma solidity <0.6 >=0.4.21; /** * @title ERC20Basic * @dev Simpler version of ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/179 */ contract IERC20Basic { function totalSupply() public view returns (uint256); function balanceOf(address who) public view returns (uint256); function transfer(address to, uint256 value) public returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); } // File: contracts/token/IERC20.sol pragma solidity <0.6 >=0.4.21; /** * @title ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/20 */ contract IERC20 is IERC20Basic { function name() external view returns (string memory); function symbol() external view returns (string memory); function allowance(address owner, address spender) public view returns (uint256); function transferFrom(address from, address to, uint256 value) public returns (bool); function approve(address spender, uint256 value) public returns (bool); event Approval(address indexed owner, address indexed spender, uint256 value); } // File: contracts/token/IMintableToken.sol pragma solidity <0.6 >=0.4.24; contract IMintableToken is IERC20 { function mint(address, uint) external returns (bool); function burn(uint) external returns (bool); event Minted(address indexed to, uint256 amount); event Burned(address indexed from, uint256 amount); event MinterAdded(address indexed minter); event MinterRemoved(address indexed minter); } // File: contracts/utils/Address.sol pragma solidity ^0.5.0; /** * @dev Collection of functions related to the address type, */ library Address { /** * @dev Returns true if `account` is a contract. * * This test is non-exhaustive, and there may be false-negatives: during the * execution of a contract's constructor, its address will be reported as * not containing a contract. * * > It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. */ function isContract(address account) internal view returns (bool) { // This method relies in extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } } // File: contracts/token/SafeERC20.sol pragma solidity ^0.5.0; /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using SafeMath for uint256; using Address for address; function safeTransfer(IERC20 token, address to, uint256 value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } function safeApprove(IERC20 token, address spender, uint256 value) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' // solhint-disable-next-line max-line-length require((value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).add(value); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).sub(value); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. // A Solidity high level call has three parts: // 1. The target address is checked to verify it contains contract code // 2. The call itself is made, and success asserted // 3. The return value is decoded, which in turn checks the size of the returned data. // solhint-disable-next-line max-line-length require(address(token).isContract(), "SafeERC20: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = address(token).call(data); require(success, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } // File: contracts/zksnarklib/MerkleTreeWithHistory.sol pragma solidity <0.6 >=0.4.24; library Hasher { function MiMCSponge(uint256 in_xL, uint256 in_xR) public pure returns (uint256 xL, uint256 xR); } contract MerkleTreeWithHistory { uint256 public constant FIELD_SIZE = 21888242871839275222246405745257275088548364400416034343698204186575808495617; uint256 public constant ZERO_VALUE = 21663839004416932945382355908790599225266501822907911457504978515578255421292; // = keccak256("tornado") % FIELD_SIZE uint32 public levels; // the following variables are made public for easier testing and debugging and // are not supposed to be accessed in regular code bytes32[] public filledSubtrees; bytes32[] public zeros; uint32 public currentRootIndex = 0; uint32 public nextIndex = 0; uint32 public constant ROOT_HISTORY_SIZE = 100; bytes32[ROOT_HISTORY_SIZE] public roots; constructor(uint32 _treeLevels) public { require(_treeLevels > 0, "_treeLevels should be greater than zero"); require(_treeLevels < 32, "_treeLevels should be less than 32"); levels = _treeLevels; bytes32 currentZero = bytes32(ZERO_VALUE); zeros.push(currentZero); filledSubtrees.push(currentZero); for (uint32 i = 1; i < levels; i++) { currentZero = hashLeftRight(currentZero, currentZero); zeros.push(currentZero); filledSubtrees.push(currentZero); } roots[0] = hashLeftRight(currentZero, currentZero); } /** @dev Hash 2 tree leaves, returns MiMC(_left, _right) */ function hashLeftRight(bytes32 _left, bytes32 _right) public pure returns (bytes32) { require(uint256(_left) < FIELD_SIZE, "_left should be inside the field"); require(uint256(_right) < FIELD_SIZE, "_right should be inside the field"); uint256 R = uint256(_left); uint256 C = 0; (R, C) = Hasher.MiMCSponge(R, C); R = addmod(R, uint256(_right), FIELD_SIZE); (R, C) = Hasher.MiMCSponge(R, C); return bytes32(R); } function _insert(bytes32 _leaf) internal returns(uint32 index) { uint32 currentIndex = nextIndex; require(currentIndex != uint32(2)**levels, "Merkle tree is full. No more leafs can be added"); nextIndex += 1; bytes32 currentLevelHash = _leaf; bytes32 left; bytes32 right; for (uint32 i = 0; i < levels; i++) { if (currentIndex % 2 == 0) { left = currentLevelHash; right = zeros[i]; filledSubtrees[i] = currentLevelHash; } else { left = filledSubtrees[i]; right = currentLevelHash; } currentLevelHash = hashLeftRight(left, right); currentIndex /= 2; } currentRootIndex = (currentRootIndex + 1) % ROOT_HISTORY_SIZE; roots[currentRootIndex] = currentLevelHash; return nextIndex - 1; } /** @dev Whether the root is present in the root history */ function isKnownRoot(bytes32 _root) public view returns(bool) { if (_root == 0) { return false; } uint32 i = currentRootIndex; do { if (_root == roots[i]) { return true; } if (i == 0) { i = ROOT_HISTORY_SIZE; } i--; } while (i != currentRootIndex); return false; } /** @dev Returns the last root */ function getLastRoot() public view returns(bytes32) { return roots[currentRootIndex]; } } // File: contracts/zksnarklib/IVerifier.sol pragma solidity <0.6 >=0.4.24; contract IVerifier { function verifyProof(bytes memory _proof, uint256[6] memory _input) public returns(bool); } // File: @openzeppelin/contracts/utils/ReentrancyGuard.sol pragma solidity ^0.5.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. */ contract ReentrancyGuard { // counter to allow mutex lock with only one SSTORE operation uint256 private _guardCounter; constructor () internal { // The counter starts at one to prevent changing it from zero to a non-zero // value, which is a more expensive operation. _guardCounter = 1; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and make it call a * `private` function that does the actual work. */ modifier nonReentrant() { _guardCounter += 1; uint256 localCounter = _guardCounter; _; require(localCounter == _guardCounter, "ReentrancyGuard: reentrant call"); } } // File: contracts/CycloneV2dot3.sol pragma solidity <0.6 >=0.4.24; contract CycloneV2dot3 is MerkleTreeWithHistory, ReentrancyGuard { using SafeMath for uint256; using SafeERC20 for IERC20; uint256 public tokenDenomination; // (10K or 100k or 1M) * 10^18 uint256 public coinDenomination; uint256 public initCYCDenomination; mapping(bytes32 => bool) public nullifierHashes; mapping(bytes32 => bool) public commitments; // we store all commitments just to prevent accidental deposits with the same commitment IVerifier public verifier; IERC20 public token; IMintableToken public cycToken; address public treasury; address public govDAO; uint256 public numOfShares; uint256 public lastRewardBlock; uint256 public rewardPerBlock; uint256 public accumulateCYC; uint256 public anonymityFee; modifier onlyGovDAO { // Start with an governance DAO address and will transfer to a governance DAO, e.g., Timelock + GovernorAlpha, after launch require(msg.sender == govDAO, "Only Governance DAO can call this function."); _; } event Deposit(bytes32 indexed commitment, uint32 leafIndex, uint256 timestamp, uint256 cycDenomination, uint256 anonymityFee); event Withdrawal(address to, bytes32 nullifierHash, address indexed relayer, uint256 reward, uint256 relayerFee); event RewardPerBlockUpdated(uint256 oldValue, uint256 newValue); event AnonymityFeeUpdated(uint256 oldValue, uint256 newValue); /** @dev The constructor @param _verifier the address of SNARK verifier for this contract @param _merkleTreeHeight the height of deposits' Merkle Tree @param _govDAO governance DAO address */ constructor( address _govDAO, IERC20 _token, IMintableToken _cycToken, address _treasury, uint256 _initCYCDenomination, uint256 _coinDenomination, uint256 _tokenDenomination, uint256 _startBlock, IVerifier _verifier, uint32 _merkleTreeHeight ) MerkleTreeWithHistory(_merkleTreeHeight) public { require(address(_token) != address(_cycToken), "token cannot be identical to CYC token"); verifier = _verifier; treasury = _treasury; cycToken = _cycToken; token = _token; govDAO = _govDAO; if (_startBlock < block.number) { lastRewardBlock = block.number; } else { lastRewardBlock = _startBlock; } initCYCDenomination = _initCYCDenomination; coinDenomination = _coinDenomination; tokenDenomination = _tokenDenomination; numOfShares = 0; } function calcAccumulateCYC() internal view returns (uint256) { uint256 reward = block.number.sub(lastRewardBlock).mul(rewardPerBlock); uint256 remaining = cycToken.balanceOf(address(this)).sub(accumulateCYC); if (remaining < reward) { reward = remaining; } return accumulateCYC.add(reward); } function updateBlockReward() public { uint256 blockNumber = block.number; if (blockNumber <= lastRewardBlock) { return; } if (rewardPerBlock != 0) { accumulateCYC = calcAccumulateCYC(); } // always update lastRewardBlock no matter there is sufficient reward or not lastRewardBlock = blockNumber; } function cycDenomination() public view returns (uint256) { if (numOfShares == 0) { return initCYCDenomination; } uint256 blockNumber = block.number; uint256 accCYC = accumulateCYC; if (blockNumber > lastRewardBlock && rewardPerBlock > 0) { accCYC = calcAccumulateCYC(); } return accCYC.add(numOfShares - 1).div(numOfShares); } /** @dev Deposit funds into the contract. The caller must send (for Coin) or approve (for ERC20) value equal to or `denomination` of this instance. @param _commitment the note commitment, which is PedersenHash(nullifier + secret) */ function deposit(bytes32 _commitment) external payable nonReentrant { require(!commitments[_commitment], "The commitment has been submitted"); require(msg.value >= coinDenomination, "insufficient coin amount"); uint256 refund = msg.value - coinDenomination; uint32 insertedIndex = _insert(_commitment); commitments[_commitment] = true; updateBlockReward(); uint256 cycDeno = cycDenomination(); uint256 fee = anonymityFee; if (cycDeno.add(fee) > 0) { require(cycToken.transferFrom(msg.sender, address(this), cycDeno.add(fee)), "insufficient CYC allowance"); } if (fee > 0) { address t = treasury; if (t == address(0)) { require(cycToken.burn(fee), "failed to burn anonymity fee"); } else { safeTransfer(cycToken, t, fee); } } uint256 td = tokenDenomination; if (td > 0) { token.safeTransferFrom(msg.sender, address(this), td); } accumulateCYC += cycDeno; numOfShares += 1; if (refund > 0) { (bool success, ) = msg.sender.call.value(refund)(""); require(success, "failed to refund"); } emit Deposit(_commitment, insertedIndex, block.timestamp, cycDeno, fee); } /** @dev Withdraw a deposit from the contract. `proof` is a zkSNARK proof data, and input is an array of circuit public inputs `input` array consists of: - merkle root of all deposits in the contract - hash of unique deposit nullifier to prevent double spends - the recipient of funds - optional fee that goes to the transaction sender (usually a relay) */ function withdraw(bytes calldata _proof, bytes32 _root, bytes32 _nullifierHash, address payable _recipient, address payable _relayer, uint256 _relayerFee, uint256 _refund) external payable nonReentrant { require(_refund == 0, "refund is not zero"); require(!Address.isContract(_recipient), "recipient of cannot be contract"); require(!nullifierHashes[_nullifierHash], "The note has been already spent"); require(isKnownRoot(_root), "Cannot find your merkle root"); // Make sure to use a recent one require(verifier.verifyProof(_proof, [uint256(_root), uint256(_nullifierHash), uint256(_recipient), uint256(_relayer), _relayerFee, _refund]), "Invalid withdraw proof"); nullifierHashes[_nullifierHash] = true; uint256 td = tokenDenomination; if (td > 0) { safeTransfer(token, _recipient, td); } updateBlockReward(); uint256 relayerFee = 0; // numOfShares should be larger than 0 uint256 cycDeno = accumulateCYC.div(numOfShares); if (cycDeno > 0) { accumulateCYC -= cycDeno; safeTransfer(cycToken, _recipient, cycDeno); } uint256 cd = coinDenomination; if (_relayerFee > cd) { _relayerFee = cd; } if (_relayerFee > 0) { (bool success,) = _relayer.call.value(_relayerFee)(""); require(success, "failed to send relayer fee"); cd -= _relayerFee; } if (cd > 0) { (bool success,) = _recipient.call.value(cd)(""); require(success, "failed to withdraw coin"); } numOfShares -= 1; emit Withdrawal(_recipient, _nullifierHash, _relayer, cycDeno, relayerFee); } /** @dev whether a note is already spent */ function isSpent(bytes32 _nullifierHash) public view returns(bool) { return nullifierHashes[_nullifierHash]; } /** @dev whether an array of notes is already spent */ function isSpentArray(bytes32[] calldata _nullifierHashes) external view returns(bool[] memory spent) { spent = new bool[](_nullifierHashes.length); for(uint i = 0; i < _nullifierHashes.length; i++) { if (isSpent(_nullifierHashes[i])) { spent[i] = true; } } } /** @dev allow governance DAO to update SNARK verification keys. This is needed to update keys if tornado.cash update their keys in production. */ function updateVerifier(address _newVerifier) external onlyGovDAO { verifier = IVerifier(_newVerifier); } /** @dev governance DAO can change his address */ function changeGovDAO(address _newGovDAO) external onlyGovDAO { govDAO = _newGovDAO; } function setRewardPerBlock(uint256 _rewardPerBlock) public onlyGovDAO { updateBlockReward(); emit RewardPerBlockUpdated(rewardPerBlock, _rewardPerBlock); rewardPerBlock = _rewardPerBlock; } function setAnonymityFee(uint256 _fee) public onlyGovDAO { emit AnonymityFeeUpdated(anonymityFee, _fee); anonymityFee = _fee; } // Safe transfer function, just in case if rounding error causes pool to not have enough CYCs. function safeTransfer(IERC20 _token, address _to, uint256 _amount) internal { uint256 balance = _token.balanceOf(address(this)); if (_amount > balance) { _token.safeTransfer(_to, balance); } else { _token.safeTransfer(_to, _amount); } } function version() public pure returns(string memory) { return "2.3"; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_govDAO","type":"address"},{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"contract IMintableToken","name":"_cycToken","type":"address"},{"internalType":"address","name":"_treasury","type":"address"},{"internalType":"uint256","name":"_initCYCDenomination","type":"uint256"},{"internalType":"uint256","name":"_coinDenomination","type":"uint256"},{"internalType":"uint256","name":"_tokenDenomination","type":"uint256"},{"internalType":"uint256","name":"_startBlock","type":"uint256"},{"internalType":"contract IVerifier","name":"_verifier","type":"address"},{"internalType":"uint32","name":"_merkleTreeHeight","type":"uint32"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"AnonymityFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"commitment","type":"bytes32"},{"indexed":false,"internalType":"uint32","name":"leafIndex","type":"uint32"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"cycDenomination","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"anonymityFee","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"RewardPerBlockUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"bytes32","name":"nullifierHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"relayer","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"relayerFee","type":"uint256"}],"name":"Withdrawal","type":"event"},{"constant":true,"inputs":[],"name":"FIELD_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ROOT_HISTORY_SIZE","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ZERO_VALUE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"accumulateCYC","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"anonymityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newGovDAO","type":"address"}],"name":"changeGovDAO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"coinDenomination","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"commitments","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"currentRootIndex","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cycDenomination","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cycToken","outputs":[{"internalType":"contract IMintableToken","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"_commitment","type":"bytes32"}],"name":"deposit","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"filledSubtrees","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getLastRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"govDAO","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"_left","type":"bytes32"},{"internalType":"bytes32","name":"_right","type":"bytes32"}],"name":"hashLeftRight","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"initCYCDenomination","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"_root","type":"bytes32"}],"name":"isKnownRoot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"_nullifierHash","type":"bytes32"}],"name":"isSpent","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32[]","name":"_nullifierHashes","type":"bytes32[]"}],"name":"isSpentArray","outputs":[{"internalType":"bool[]","name":"spent","type":"bool[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastRewardBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"levels","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"nextIndex","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"nullifierHashes","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"numOfShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"roots","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setAnonymityFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_rewardPerBlock","type":"uint256"}],"name":"setRewardPerBlock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenDenomination","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"updateBlockReward","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newVerifier","type":"address"}],"name":"updateVerifier","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"verifier","outputs":[{"internalType":"contract IVerifier","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes","name":"_proof","type":"bytes"},{"internalType":"bytes32","name":"_root","type":"bytes32"},{"internalType":"bytes32","name":"_nullifierHash","type":"bytes32"},{"internalType":"address payable","name":"_recipient","type":"address"},{"internalType":"address payable","name":"_relayer","type":"address"},{"internalType":"uint256","name":"_relayerFee","type":"uint256"},{"internalType":"uint256","name":"_refund","type":"uint256"}],"name":"withdraw","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"zeros","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"}]
Contract Creation Code
6080604052600380546001600160401b03191690553480156200002157600080fd5b50604051620026733803806200267383398181016040526101408110156200004857600080fd5b508051602082015160408301516060840151608085015160a086015160c087015160e088015161010089015161012090990151979896979596949593949293919290918063ffffffff8116620000d05760405162461bcd60e51b8152600401808060200182810382526027815260200180620025ea6027913960400191505060405180910390fd5b60208163ffffffff1610620001175760405162461bcd60e51b8152600401808060200182810382526022815260200180620026316022913960400191505060405180910390fd5b6000805463ffffffff191663ffffffff83161781556002805460018181019092557f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c600080516020620025a98339815191529091018190558154808301835592829052600080516020620026538339815191529092018290555b60005463ffffffff90811690821610156200020557620001bb82806001600160e01b036200030016565b600280546001818101909255600080516020620025a98339815191520182905580548082018255600082905260008051602062002653833981519152018290559092500162000191565b506200021b81806001600160e01b036200030016565b600455505060016068556001600160a01b03888116908a161415620002725760405162461bcd60e51b8152600401808060200182810382526026815260200180620025836026913960400191505060405180910390fd5b606e80546001600160a01b03199081166001600160a01b03858116919091179092556071805482168a84161790556070805482168b8416179055606f805482168c841617905560728054909116918c1691909117905543831015620002db5743607455620002e1565b60748390555b505050606b92909255606a556069555050600060735550620004ed9050565b600060008051602062002611833981519152831062000366576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b600080516020620026118339815191528210620003b55760405162461bcd60e51b8152600401808060200182810382526021815260200180620025c96021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273949452e32db13a5771445cf20b304474b866202b9263f47d33b592604480840193829003018186803b1580156200041057600080fd5b505af415801562000425573d6000803e3d6000fd5b505050506040513d60408110156200043c57600080fd5b508051602090910151909250905060008051602062002611833981519152848308915073949452e32db13a5771445cf20b304474b866202b63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b158015620004b657600080fd5b505af4158015620004cb573d6000803e3d6000fd5b505050506040513d6040811015620004e257600080fd5b505195945050505050565b61208680620004fd6000396000f3fe6080604052600436106102255760003560e01c80638daac0df11610123578063bb872b4a116100ab578063e82955881161006f578063e8295588146107dd578063ec73295914610807578063f178e47c1461081c578063fc0c546a14610846578063fc7e9c6f1461085b57610225565b8063bb872b4a14610735578063c2b40ae41461075f578063cd87a3b414610789578063e28cecda1461079e578063e5285dcc146107b357610225565b80639fa12d0b116100f25780639fa12d0b1461060e578063a9f8d181146106d9578063ab5bbfd8146106ee578063b214faa514610703578063ba70f7571461072057610225565b80638daac0df1461058757806390eeb02b146105b157806397fc007c146105c6578063997318ec146105f957610225565b8063414a37ba116101b157806361d027b31161017557806361d027b3146104f45780636d9833e314610509578063839df945146105335780638ae39cac1461055d5780638d949d4b1461057257610225565b8063414a37ba146103fd5780634ecf518b146104125780635129b3e11461044057806354fd4d50146104555780635759e5f5146104df57610225565b806321a0adb6116101f857806321a0adb6146102f55780632b7ac3f31461038e5780633409038c146103a357806338bf282e146103b85780633b406fb7146103e857610225565b806317cc915c1461022a57806318006104146102685780631a4be74c146102995780631e85e711146102ce575b600080fd5b34801561023657600080fd5b506102546004803603602081101561024d57600080fd5b5035610870565b604080519115158252519081900360200190f35b34801561027457600080fd5b5061027d610885565b604080516001600160a01b039092168252519081900360200190f35b3480156102a557600080fd5b506102cc600480360360208110156102bc57600080fd5b50356001600160a01b0316610894565b005b3480156102da57600080fd5b506102e36108ff565b60408051918252519081900360200190f35b6102cc600480360360e081101561030b57600080fd5b810190602081018135600160201b81111561032557600080fd5b82018360208201111561033757600080fd5b803590602001918460018302840111600160201b8311171561035857600080fd5b91935091508035906020810135906001600160a01b03604082013581169160608101359091169060808101359060a00135610905565b34801561039a57600080fd5b5061027d610e73565b3480156103af57600080fd5b506102e3610e82565b3480156103c457600080fd5b506102e3600480360360408110156103db57600080fd5b5080359060200135610e88565b3480156103f457600080fd5b506102e361106b565b34801561040957600080fd5b506102e3611071565b34801561041e57600080fd5b50610427611083565b6040805163ffffffff9092168252519081900360200190f35b34801561044c57600080fd5b506102e361108f565b34801561046157600080fd5b5061046a611095565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104a457818101518382015260200161048c565b50505050905090810190601f1680156104d15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104eb57600080fd5b506102e36110b3565b34801561050057600080fd5b5061027d611120565b34801561051557600080fd5b506102546004803603602081101561052c57600080fd5b503561112f565b34801561053f57600080fd5b506102546004803603602081101561055657600080fd5b50356111a2565b34801561056957600080fd5b506102e36111b7565b34801561057e57600080fd5b506102cc6111bd565b34801561059357600080fd5b506102cc600480360360208110156105aa57600080fd5b50356111e8565b3480156105bd57600080fd5b50610427611273565b3480156105d257600080fd5b506102cc600480360360208110156105e957600080fd5b50356001600160a01b031661127f565b34801561060557600080fd5b506102e36112ea565b34801561061a57600080fd5b506106896004803603602081101561063157600080fd5b810190602081018135600160201b81111561064b57600080fd5b82018360208201111561065d57600080fd5b803590602001918460208302840111600160201b8311171561067e57600080fd5b5090925090506112f0565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156106c55781810151838201526020016106ad565b505050509050019250505060405180910390f35b3480156106e557600080fd5b506102e3611378565b3480156106fa57600080fd5b5061027d61137e565b6102cc6004803603602081101561071957600080fd5b503561138d565b34801561072c57600080fd5b506102e361181e565b34801561074157600080fd5b506102cc6004803603602081101561075857600080fd5b503561183e565b34801561076b57600080fd5b506102e36004803603602081101561078257600080fd5b50356118d1565b34801561079557600080fd5b506104276118e5565b3480156107aa57600080fd5b506102e36118ea565b3480156107bf57600080fd5b50610254600480360360208110156107d657600080fd5b50356118f0565b3480156107e957600080fd5b506102e36004803603602081101561080057600080fd5b5035611905565b34801561081357600080fd5b506102e3611923565b34801561082857600080fd5b506102e36004803603602081101561083f57600080fd5b5035611947565b34801561085257600080fd5b5061027d611954565b34801561086757600080fd5b50610427611963565b606c6020526000908152604090205460ff1681565b6070546001600160a01b031681565b6072546001600160a01b031633146108dd5760405162461bcd60e51b815260040180806020018281038252602b815260200180612027602b913960400191505060405180910390fd5b607280546001600160a01b0319166001600160a01b0392909216919091179055565b60765481565b60688054600101908190558115610958576040805162461bcd60e51b8152602060048201526012602482015271726566756e64206973206e6f74207a65726f60701b604482015290519081900360640190fd5b61096185611976565b156109b3576040805162461bcd60e51b815260206004820152601f60248201527f726563697069656e74206f662063616e6e6f7420626520636f6e747261637400604482015290519081900360640190fd5b6000868152606c602052604090205460ff1615610a17576040805162461bcd60e51b815260206004820152601f60248201527f546865206e6f746520686173206265656e20616c7265616479207370656e7400604482015290519081900360640190fd5b610a208761112f565b610a71576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742066696e6420796f7572206d65726b6c6520726f6f7400000000604482015290519081900360640190fd5b606e546040805160c080820183528a8252602082018a90526001600160a01b038981168385015288811660608401526080830188905260a08301879052925163695ef6f960e01b8152929093169263695ef6f9928d928d9290916004810191829160240190849080838360005b83811015610af6578181015183820152602001610ade565b505050509050018281038252858582818152602001925080828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b158015610b4857600080fd5b505af1158015610b5c573d6000803e3d6000fd5b505050506040513d6020811015610b7257600080fd5b5051610bbe576040805162461bcd60e51b815260206004820152601660248201527524b73b30b634b2103bb4ba34323930bb90383937b7b360511b604482015290519081900360640190fd5b6000868152606c60205260409020805460ff191660011790556069548015610bf757606f54610bf7906001600160a01b0316878361197c565b610bff6111bd565b6073546076546000918291610c199163ffffffff611a3b16565b90508015610c4157607680548290039055607054610c41906001600160a01b0316898361197c565b606a5480871115610c50578096505b8615610d01576040516000906001600160a01b038a169089908381818185875af1925050503d8060008114610ca1576040519150601f19603f3d011682016040523d82523d6000602084013e610ca6565b606091505b5050905080610cfc576040805162461bcd60e51b815260206004820152601a60248201527f6661696c656420746f2073656e642072656c6179657220666565000000000000604482015290519081900360640190fd5b508690035b8015610daf576040516000906001600160a01b038b169083908381818185875af1925050503d8060008114610d52576040519150601f19603f3d011682016040523d82523d6000602084013e610d57565b606091505b5050905080610dad576040805162461bcd60e51b815260206004820152601760248201527f6661696c656420746f20776974686472617720636f696e000000000000000000604482015290519081900360640190fd5b505b60738054600019019055604080516001600160a01b038b81168252602082018d9052818301859052606082018690529151918a16917f6d7aac54bd3d1c91db3b1fd7b8d6cb45324ad6b5e373c0f0ea4d7b2606c4c2c89181900360800190a2505050506068548114610e68576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b505050505050505050565b606e546001600160a01b031681565b60735481565b6000600080516020611fbc8339815191528310610eec576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b600080516020611fbc8339815191528210610f385760405162461bcd60e51b8152600401808060200182810382526021815260200180611f9b6021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273949452e32db13a5771445cf20b304474b866202b9263f47d33b592604480840193829003018186803b158015610f9257600080fd5b505af4158015610fa6573d6000803e3d6000fd5b505050506040513d6040811015610fbc57600080fd5b5080516020909101519092509050600080516020611fbc833981519152848308915073949452e32db13a5771445cf20b304474b866202b63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b15801561103457600080fd5b505af4158015611048573d6000803e3d6000fd5b505050506040513d604081101561105e57600080fd5b5051925050505b92915050565b60775481565b600080516020611fbc83398151915281565b60005463ffffffff1681565b60695481565b604080518082019091526003815262322e3360e81b60208201525b90565b6000607354600014156110c95750606b546110b0565b607654607454439190821180156110e257506000607554115b156110f2576110ef611a4e565b90505b6073546111199061110d83600019830163ffffffff611b2716565b9063ffffffff611a3b16565b9250505090565b6071546001600160a01b031681565b60008161113e5750600061119d565b60035463ffffffff165b60048163ffffffff166064811061115b57fe5b015483141561116e57600191505061119d565b63ffffffff811661117d575060645b6003546000199091019063ffffffff808316911614156111485760009150505b919050565b606d6020526000908152604090205460ff1681565b60755481565b607454439081116111ce57506111e6565b607554156111e2576111de611a4e565b6076555b6074555b565b6072546001600160a01b031633146112315760405162461bcd60e51b815260040180806020018281038252602b815260200180612027602b913960400191505060405180910390fd5b607754604080519182526020820183905280517ff077eec825bf8719ab7021daf299e3feb4cb33472ac3f1e661657fd9701a3e7e9281900390910190a1607755565b60035463ffffffff1681565b6072546001600160a01b031633146112c85760405162461bcd60e51b815260040180806020018281038252602b815260200180612027602b913960400191505060405180910390fd5b606e80546001600160a01b0319166001600160a01b0392909216919091179055565b606a5481565b60408051828152602080840282010190915260609082801561131c578160200160208202803883390190505b50905060005b828110156113715761134584848381811061133957fe5b905060200201356118f0565b1561136957600182828151811061135857fe5b911515602092830291909101909101525b600101611322565b5092915050565b60745481565b6072546001600160a01b031681565b60688054600101908190556000828152606d602052604090205460ff16156113e65760405162461bcd60e51b8152600401808060200182810382526021815260200180611fdc6021913960400191505060405180910390fd5b606a5434101561143d576040805162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e7420636f696e20616d6f756e740000000000000000604482015290519081900360640190fd5b606a543403600061144d84611b34565b6000858152606d60205260409020805460ff1916600117905590506114706111bd565b600061147a6110b3565b6077549091506000611492838363ffffffff611b2716565b11156115a0576070546001600160a01b03166323b872dd33306114bb868663ffffffff611b2716565b6040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b031681526020018281526020019350505050602060405180830381600087803b15801561152357600080fd5b505af1158015611537573d6000803e3d6000fd5b505050506040513d602081101561154d57600080fd5b50516115a0576040805162461bcd60e51b815260206004820152601a60248201527f696e73756666696369656e742043594320616c6c6f77616e6365000000000000604482015290519081900360640190fd5b80156116a0576071546001600160a01b0316806116875760705460408051630852cd8d60e31b81526004810185905290516001600160a01b03909216916342966c68916024808201926020929091908290030181600087803b15801561160557600080fd5b505af1158015611619573d6000803e3d6000fd5b505050506040513d602081101561162f57600080fd5b5051611682576040805162461bcd60e51b815260206004820152601c60248201527f6661696c656420746f206275726e20616e6f6e796d6974792066656500000000604482015290519081900360640190fd5b61169e565b60705461169e906001600160a01b0316828461197c565b505b60695480156116c757606f546116c7906001600160a01b031633308463ffffffff611ccb16565b6076805484019055607380546001019055841561177057604051600090339087908381818185875af1925050503d8060008114611720576040519150601f19603f3d011682016040523d82523d6000602084013e611725565b606091505b505090508061176e576040805162461bcd60e51b815260206004820152601060248201526f19985a5b1959081d1bc81c99599d5b9960821b604482015290519081900360640190fd5b505b6040805163ffffffff8616815242602082015280820185905260608101849052905188917fcb186cc0add5be357ae2d3845e42be2ffbed8cb23b60f1b058ea371adff0a363919081900360800190a25050505050606854811461181a576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b5050565b60035460009060049063ffffffff166064811061183757fe5b0154905090565b6072546001600160a01b031633146118875760405162461bcd60e51b815260040180806020018281038252602b815260200180612027602b913960400191505060405180910390fd5b61188f6111bd565b607554604080519182526020820183905280517f842e6f2b482c6f39924c8be7b71d40631362ef78f833f0371ceb2649edc5fb109281900390910190a1607555565b600481606481106118de57fe5b0154905081565b606481565b606b5481565b6000908152606c602052604090205460ff1690565b6002818154811061191257fe5b600091825260209091200154905081565b7f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c81565b6001818154811061191257fe5b606f546001600160a01b031681565b600354600160201b900463ffffffff1681565b3b151590565b604080516370a0823160e01b815230600482015290516000916001600160a01b038616916370a0823191602480820192602092909190829003018186803b1580156119c657600080fd5b505afa1580156119da573d6000803e3d6000fd5b505050506040513d60208110156119f057600080fd5b5051905080821115611a1b57611a166001600160a01b038516848363ffffffff611d2516565b611a35565b611a356001600160a01b038516848463ffffffff611d2516565b50505050565b6000818381611a4657fe5b049392505050565b600080611a78607554611a6c60745443611d7c90919063ffffffff16565b9063ffffffff611d8e16565b607654607054604080516370a0823160e01b81523060048201529051939450600093611b0693926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015611ace57600080fd5b505afa158015611ae2573d6000803e3d6000fd5b505050506040513d6020811015611af857600080fd5b50519063ffffffff611d7c16565b905081811015611b14578091505b607654611119908363ffffffff611b2716565b8181018281101561106557fe5b60035460008054909163ffffffff600160201b909104811691811660020a16811415611b915760405162461bcd60e51b815260040180806020018281038252602f815260200180611f6c602f913960400191505060405180910390fd5b6003805463ffffffff600160201b80830482166001019091160267ffffffff000000001990911617905582600080805b60005463ffffffff9081169082161015611c695760018516611c255783925060028163ffffffff1681548110611bf357fe5b906000526020600020015491508360018263ffffffff1681548110611c1457fe5b600091825260209091200155611c49565b60018163ffffffff1681548110611c3857fe5b906000526020600020015492508391505b611c538383610e88565b9350600263ffffffff8616049450600101611bc1565b5060035460649063ffffffff908116600101166003805463ffffffff19169290910663ffffffff908116929092179081905584916004911660648110611cab57fe5b01555050600354600160201b900463ffffffff1660001901949350505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611a35908590611db3565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611d77908490611db3565b505050565b600082821115611d8857fe5b50900390565b600082611d9d57506000611065565b5081810281838281611dab57fe5b041461106557fe5b611dc5826001600160a01b0316611976565b611e16576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611e545780518252601f199092019160209182019101611e35565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611eb6576040519150601f19603f3d011682016040523d82523d6000602084013e611ebb565b606091505b509150915081611f12576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115611a3557808060200190516020811015611f2e57600080fd5b5051611a355760405162461bcd60e51b815260040180806020018281038252602a815260200180611ffd602a913960400191505060405180910390fdfe4d65726b6c6520747265652069732066756c6c2e204e6f206d6f7265206c656166732063616e2062652061646465645f72696768742073686f756c6420626520696e7369646520746865206669656c6430644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000154686520636f6d6d69746d656e7420686173206265656e207375626d69747465645361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565644f6e6c7920476f7665726e616e63652044414f2063616e2063616c6c20746869732066756e6374696f6e2ea265627a7a72315820dcf10631566e96068ab533cab04f44033b67176a40423c8a7146ec72f39bcc7c64736f6c63430005110032746f6b656e2063616e6e6f74206265206964656e746963616c20746f2043594320746f6b656e405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace5f72696768742073686f756c6420626520696e7369646520746865206669656c645f747265654c6576656c732073686f756c642062652067726561746572207468616e207a65726f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000015f747265654c6576656c732073686f756c64206265206c657373207468616e203332b10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf600000000000000000000000095541045f8ee77ca825f50f21bfb1a9fd1e6bb9200000000000000000000000077777feddddffc19ff86db637967013e6c6a116c0000000000000000000000008861cff2366c1128fd699b68304ad99a0764ef9a00000000000000000000000092d221682384a3ad3549b8b8ea992c9048cf2228000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002c68af0bb1400000000000000000000000000000000000000000000000000056bc75e2d631000000000000000000000000000000000000000000000000000000000000000bae8660000000000000000000000007c994fb3a8c208c1750df937d473040c604292d60000000000000000000000000000000000000000000000000000000000000014
Deployed Bytecode
0x6080604052600436106102255760003560e01c80638daac0df11610123578063bb872b4a116100ab578063e82955881161006f578063e8295588146107dd578063ec73295914610807578063f178e47c1461081c578063fc0c546a14610846578063fc7e9c6f1461085b57610225565b8063bb872b4a14610735578063c2b40ae41461075f578063cd87a3b414610789578063e28cecda1461079e578063e5285dcc146107b357610225565b80639fa12d0b116100f25780639fa12d0b1461060e578063a9f8d181146106d9578063ab5bbfd8146106ee578063b214faa514610703578063ba70f7571461072057610225565b80638daac0df1461058757806390eeb02b146105b157806397fc007c146105c6578063997318ec146105f957610225565b8063414a37ba116101b157806361d027b31161017557806361d027b3146104f45780636d9833e314610509578063839df945146105335780638ae39cac1461055d5780638d949d4b1461057257610225565b8063414a37ba146103fd5780634ecf518b146104125780635129b3e11461044057806354fd4d50146104555780635759e5f5146104df57610225565b806321a0adb6116101f857806321a0adb6146102f55780632b7ac3f31461038e5780633409038c146103a357806338bf282e146103b85780633b406fb7146103e857610225565b806317cc915c1461022a57806318006104146102685780631a4be74c146102995780631e85e711146102ce575b600080fd5b34801561023657600080fd5b506102546004803603602081101561024d57600080fd5b5035610870565b604080519115158252519081900360200190f35b34801561027457600080fd5b5061027d610885565b604080516001600160a01b039092168252519081900360200190f35b3480156102a557600080fd5b506102cc600480360360208110156102bc57600080fd5b50356001600160a01b0316610894565b005b3480156102da57600080fd5b506102e36108ff565b60408051918252519081900360200190f35b6102cc600480360360e081101561030b57600080fd5b810190602081018135600160201b81111561032557600080fd5b82018360208201111561033757600080fd5b803590602001918460018302840111600160201b8311171561035857600080fd5b91935091508035906020810135906001600160a01b03604082013581169160608101359091169060808101359060a00135610905565b34801561039a57600080fd5b5061027d610e73565b3480156103af57600080fd5b506102e3610e82565b3480156103c457600080fd5b506102e3600480360360408110156103db57600080fd5b5080359060200135610e88565b3480156103f457600080fd5b506102e361106b565b34801561040957600080fd5b506102e3611071565b34801561041e57600080fd5b50610427611083565b6040805163ffffffff9092168252519081900360200190f35b34801561044c57600080fd5b506102e361108f565b34801561046157600080fd5b5061046a611095565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104a457818101518382015260200161048c565b50505050905090810190601f1680156104d15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104eb57600080fd5b506102e36110b3565b34801561050057600080fd5b5061027d611120565b34801561051557600080fd5b506102546004803603602081101561052c57600080fd5b503561112f565b34801561053f57600080fd5b506102546004803603602081101561055657600080fd5b50356111a2565b34801561056957600080fd5b506102e36111b7565b34801561057e57600080fd5b506102cc6111bd565b34801561059357600080fd5b506102cc600480360360208110156105aa57600080fd5b50356111e8565b3480156105bd57600080fd5b50610427611273565b3480156105d257600080fd5b506102cc600480360360208110156105e957600080fd5b50356001600160a01b031661127f565b34801561060557600080fd5b506102e36112ea565b34801561061a57600080fd5b506106896004803603602081101561063157600080fd5b810190602081018135600160201b81111561064b57600080fd5b82018360208201111561065d57600080fd5b803590602001918460208302840111600160201b8311171561067e57600080fd5b5090925090506112f0565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156106c55781810151838201526020016106ad565b505050509050019250505060405180910390f35b3480156106e557600080fd5b506102e3611378565b3480156106fa57600080fd5b5061027d61137e565b6102cc6004803603602081101561071957600080fd5b503561138d565b34801561072c57600080fd5b506102e361181e565b34801561074157600080fd5b506102cc6004803603602081101561075857600080fd5b503561183e565b34801561076b57600080fd5b506102e36004803603602081101561078257600080fd5b50356118d1565b34801561079557600080fd5b506104276118e5565b3480156107aa57600080fd5b506102e36118ea565b3480156107bf57600080fd5b50610254600480360360208110156107d657600080fd5b50356118f0565b3480156107e957600080fd5b506102e36004803603602081101561080057600080fd5b5035611905565b34801561081357600080fd5b506102e3611923565b34801561082857600080fd5b506102e36004803603602081101561083f57600080fd5b5035611947565b34801561085257600080fd5b5061027d611954565b34801561086757600080fd5b50610427611963565b606c6020526000908152604090205460ff1681565b6070546001600160a01b031681565b6072546001600160a01b031633146108dd5760405162461bcd60e51b815260040180806020018281038252602b815260200180612027602b913960400191505060405180910390fd5b607280546001600160a01b0319166001600160a01b0392909216919091179055565b60765481565b60688054600101908190558115610958576040805162461bcd60e51b8152602060048201526012602482015271726566756e64206973206e6f74207a65726f60701b604482015290519081900360640190fd5b61096185611976565b156109b3576040805162461bcd60e51b815260206004820152601f60248201527f726563697069656e74206f662063616e6e6f7420626520636f6e747261637400604482015290519081900360640190fd5b6000868152606c602052604090205460ff1615610a17576040805162461bcd60e51b815260206004820152601f60248201527f546865206e6f746520686173206265656e20616c7265616479207370656e7400604482015290519081900360640190fd5b610a208761112f565b610a71576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742066696e6420796f7572206d65726b6c6520726f6f7400000000604482015290519081900360640190fd5b606e546040805160c080820183528a8252602082018a90526001600160a01b038981168385015288811660608401526080830188905260a08301879052925163695ef6f960e01b8152929093169263695ef6f9928d928d9290916004810191829160240190849080838360005b83811015610af6578181015183820152602001610ade565b505050509050018281038252858582818152602001925080828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b158015610b4857600080fd5b505af1158015610b5c573d6000803e3d6000fd5b505050506040513d6020811015610b7257600080fd5b5051610bbe576040805162461bcd60e51b815260206004820152601660248201527524b73b30b634b2103bb4ba34323930bb90383937b7b360511b604482015290519081900360640190fd5b6000868152606c60205260409020805460ff191660011790556069548015610bf757606f54610bf7906001600160a01b0316878361197c565b610bff6111bd565b6073546076546000918291610c199163ffffffff611a3b16565b90508015610c4157607680548290039055607054610c41906001600160a01b0316898361197c565b606a5480871115610c50578096505b8615610d01576040516000906001600160a01b038a169089908381818185875af1925050503d8060008114610ca1576040519150601f19603f3d011682016040523d82523d6000602084013e610ca6565b606091505b5050905080610cfc576040805162461bcd60e51b815260206004820152601a60248201527f6661696c656420746f2073656e642072656c6179657220666565000000000000604482015290519081900360640190fd5b508690035b8015610daf576040516000906001600160a01b038b169083908381818185875af1925050503d8060008114610d52576040519150601f19603f3d011682016040523d82523d6000602084013e610d57565b606091505b5050905080610dad576040805162461bcd60e51b815260206004820152601760248201527f6661696c656420746f20776974686472617720636f696e000000000000000000604482015290519081900360640190fd5b505b60738054600019019055604080516001600160a01b038b81168252602082018d9052818301859052606082018690529151918a16917f6d7aac54bd3d1c91db3b1fd7b8d6cb45324ad6b5e373c0f0ea4d7b2606c4c2c89181900360800190a2505050506068548114610e68576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b505050505050505050565b606e546001600160a01b031681565b60735481565b6000600080516020611fbc8339815191528310610eec576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b600080516020611fbc8339815191528210610f385760405162461bcd60e51b8152600401808060200182810382526021815260200180611f9b6021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273949452e32db13a5771445cf20b304474b866202b9263f47d33b592604480840193829003018186803b158015610f9257600080fd5b505af4158015610fa6573d6000803e3d6000fd5b505050506040513d6040811015610fbc57600080fd5b5080516020909101519092509050600080516020611fbc833981519152848308915073949452e32db13a5771445cf20b304474b866202b63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b15801561103457600080fd5b505af4158015611048573d6000803e3d6000fd5b505050506040513d604081101561105e57600080fd5b5051925050505b92915050565b60775481565b600080516020611fbc83398151915281565b60005463ffffffff1681565b60695481565b604080518082019091526003815262322e3360e81b60208201525b90565b6000607354600014156110c95750606b546110b0565b607654607454439190821180156110e257506000607554115b156110f2576110ef611a4e565b90505b6073546111199061110d83600019830163ffffffff611b2716565b9063ffffffff611a3b16565b9250505090565b6071546001600160a01b031681565b60008161113e5750600061119d565b60035463ffffffff165b60048163ffffffff166064811061115b57fe5b015483141561116e57600191505061119d565b63ffffffff811661117d575060645b6003546000199091019063ffffffff808316911614156111485760009150505b919050565b606d6020526000908152604090205460ff1681565b60755481565b607454439081116111ce57506111e6565b607554156111e2576111de611a4e565b6076555b6074555b565b6072546001600160a01b031633146112315760405162461bcd60e51b815260040180806020018281038252602b815260200180612027602b913960400191505060405180910390fd5b607754604080519182526020820183905280517ff077eec825bf8719ab7021daf299e3feb4cb33472ac3f1e661657fd9701a3e7e9281900390910190a1607755565b60035463ffffffff1681565b6072546001600160a01b031633146112c85760405162461bcd60e51b815260040180806020018281038252602b815260200180612027602b913960400191505060405180910390fd5b606e80546001600160a01b0319166001600160a01b0392909216919091179055565b606a5481565b60408051828152602080840282010190915260609082801561131c578160200160208202803883390190505b50905060005b828110156113715761134584848381811061133957fe5b905060200201356118f0565b1561136957600182828151811061135857fe5b911515602092830291909101909101525b600101611322565b5092915050565b60745481565b6072546001600160a01b031681565b60688054600101908190556000828152606d602052604090205460ff16156113e65760405162461bcd60e51b8152600401808060200182810382526021815260200180611fdc6021913960400191505060405180910390fd5b606a5434101561143d576040805162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e7420636f696e20616d6f756e740000000000000000604482015290519081900360640190fd5b606a543403600061144d84611b34565b6000858152606d60205260409020805460ff1916600117905590506114706111bd565b600061147a6110b3565b6077549091506000611492838363ffffffff611b2716565b11156115a0576070546001600160a01b03166323b872dd33306114bb868663ffffffff611b2716565b6040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b031681526020018281526020019350505050602060405180830381600087803b15801561152357600080fd5b505af1158015611537573d6000803e3d6000fd5b505050506040513d602081101561154d57600080fd5b50516115a0576040805162461bcd60e51b815260206004820152601a60248201527f696e73756666696369656e742043594320616c6c6f77616e6365000000000000604482015290519081900360640190fd5b80156116a0576071546001600160a01b0316806116875760705460408051630852cd8d60e31b81526004810185905290516001600160a01b03909216916342966c68916024808201926020929091908290030181600087803b15801561160557600080fd5b505af1158015611619573d6000803e3d6000fd5b505050506040513d602081101561162f57600080fd5b5051611682576040805162461bcd60e51b815260206004820152601c60248201527f6661696c656420746f206275726e20616e6f6e796d6974792066656500000000604482015290519081900360640190fd5b61169e565b60705461169e906001600160a01b0316828461197c565b505b60695480156116c757606f546116c7906001600160a01b031633308463ffffffff611ccb16565b6076805484019055607380546001019055841561177057604051600090339087908381818185875af1925050503d8060008114611720576040519150601f19603f3d011682016040523d82523d6000602084013e611725565b606091505b505090508061176e576040805162461bcd60e51b815260206004820152601060248201526f19985a5b1959081d1bc81c99599d5b9960821b604482015290519081900360640190fd5b505b6040805163ffffffff8616815242602082015280820185905260608101849052905188917fcb186cc0add5be357ae2d3845e42be2ffbed8cb23b60f1b058ea371adff0a363919081900360800190a25050505050606854811461181a576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b5050565b60035460009060049063ffffffff166064811061183757fe5b0154905090565b6072546001600160a01b031633146118875760405162461bcd60e51b815260040180806020018281038252602b815260200180612027602b913960400191505060405180910390fd5b61188f6111bd565b607554604080519182526020820183905280517f842e6f2b482c6f39924c8be7b71d40631362ef78f833f0371ceb2649edc5fb109281900390910190a1607555565b600481606481106118de57fe5b0154905081565b606481565b606b5481565b6000908152606c602052604090205460ff1690565b6002818154811061191257fe5b600091825260209091200154905081565b7f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c81565b6001818154811061191257fe5b606f546001600160a01b031681565b600354600160201b900463ffffffff1681565b3b151590565b604080516370a0823160e01b815230600482015290516000916001600160a01b038616916370a0823191602480820192602092909190829003018186803b1580156119c657600080fd5b505afa1580156119da573d6000803e3d6000fd5b505050506040513d60208110156119f057600080fd5b5051905080821115611a1b57611a166001600160a01b038516848363ffffffff611d2516565b611a35565b611a356001600160a01b038516848463ffffffff611d2516565b50505050565b6000818381611a4657fe5b049392505050565b600080611a78607554611a6c60745443611d7c90919063ffffffff16565b9063ffffffff611d8e16565b607654607054604080516370a0823160e01b81523060048201529051939450600093611b0693926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015611ace57600080fd5b505afa158015611ae2573d6000803e3d6000fd5b505050506040513d6020811015611af857600080fd5b50519063ffffffff611d7c16565b905081811015611b14578091505b607654611119908363ffffffff611b2716565b8181018281101561106557fe5b60035460008054909163ffffffff600160201b909104811691811660020a16811415611b915760405162461bcd60e51b815260040180806020018281038252602f815260200180611f6c602f913960400191505060405180910390fd5b6003805463ffffffff600160201b80830482166001019091160267ffffffff000000001990911617905582600080805b60005463ffffffff9081169082161015611c695760018516611c255783925060028163ffffffff1681548110611bf357fe5b906000526020600020015491508360018263ffffffff1681548110611c1457fe5b600091825260209091200155611c49565b60018163ffffffff1681548110611c3857fe5b906000526020600020015492508391505b611c538383610e88565b9350600263ffffffff8616049450600101611bc1565b5060035460649063ffffffff908116600101166003805463ffffffff19169290910663ffffffff908116929092179081905584916004911660648110611cab57fe5b01555050600354600160201b900463ffffffff1660001901949350505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611a35908590611db3565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611d77908490611db3565b505050565b600082821115611d8857fe5b50900390565b600082611d9d57506000611065565b5081810281838281611dab57fe5b041461106557fe5b611dc5826001600160a01b0316611976565b611e16576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611e545780518252601f199092019160209182019101611e35565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611eb6576040519150601f19603f3d011682016040523d82523d6000602084013e611ebb565b606091505b509150915081611f12576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115611a3557808060200190516020811015611f2e57600080fd5b5051611a355760405162461bcd60e51b815260040180806020018281038252602a815260200180611ffd602a913960400191505060405180910390fdfe4d65726b6c6520747265652069732066756c6c2e204e6f206d6f7265206c656166732063616e2062652061646465645f72696768742073686f756c6420626520696e7369646520746865206669656c6430644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000154686520636f6d6d69746d656e7420686173206265656e207375626d69747465645361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565644f6e6c7920476f7665726e616e63652044414f2063616e2063616c6c20746869732066756e6374696f6e2ea265627a7a72315820dcf10631566e96068ab533cab04f44033b67176a40423c8a7146ec72f39bcc7c64736f6c63430005110032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000095541045f8ee77ca825f50f21bfb1a9fd1e6bb9200000000000000000000000077777feddddffc19ff86db637967013e6c6a116c0000000000000000000000008861cff2366c1128fd699b68304ad99a0764ef9a00000000000000000000000092d221682384a3ad3549b8b8ea992c9048cf2228000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002c68af0bb1400000000000000000000000000000000000000000000000000056bc75e2d631000000000000000000000000000000000000000000000000000000000000000bae8660000000000000000000000007c994fb3a8c208c1750df937d473040c604292d60000000000000000000000000000000000000000000000000000000000000014
-----Decoded View---------------
Arg [0] : _govDAO (address): 0x95541045F8EE77Ca825f50f21BFB1A9Fd1e6Bb92
Arg [1] : _token (address): 0x77777FeDdddFfC19Ff86DB637967013e6C6A116C
Arg [2] : _cycToken (address): 0x8861cfF2366C1128fd699B68304aD99a0764Ef9a
Arg [3] : _treasury (address): 0x92D221682384A3Ad3549B8B8eA992C9048cF2228
Arg [4] : _initCYCDenomination (uint256): 0
Arg [5] : _coinDenomination (uint256): 200000000000000000
Arg [6] : _tokenDenomination (uint256): 100000000000000000000
Arg [7] : _startBlock (uint256): 12249190
Arg [8] : _verifier (address): 0x7C994FB3a8C208C1750Df937d473040c604292D6
Arg [9] : _merkleTreeHeight (uint32): 20
-----Encoded View---------------
10 Constructor Arguments found :
Arg [0] : 00000000000000000000000095541045f8ee77ca825f50f21bfb1a9fd1e6bb92
Arg [1] : 00000000000000000000000077777feddddffc19ff86db637967013e6c6a116c
Arg [2] : 0000000000000000000000008861cff2366c1128fd699b68304ad99a0764ef9a
Arg [3] : 00000000000000000000000092d221682384a3ad3549b8b8ea992c9048cf2228
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [5] : 00000000000000000000000000000000000000000000000002c68af0bb140000
Arg [6] : 0000000000000000000000000000000000000000000000056bc75e2d63100000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000bae866
Arg [8] : 0000000000000000000000007c994fb3a8c208c1750df937d473040c604292d6
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000014
Deployed Bytecode Sourcemap
14184:8898:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14463:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14463:47:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14463:47:0;;:::i;:::-;;;;;;;;;;;;;;;;;;14706:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14706:30:0;;;:::i;:::-;;;;-1:-1:-1;;;;;14706:30:0;;;;;;;;;;;;;;22162:94;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22162:94:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22162:94:0;-1:-1:-1;;;;;22162:94:0;;:::i;:::-;;14895:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14895:28:0;;;:::i;:::-;;;;;;;;;;;;;;;;19651:1635;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;19651:1635:0;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;19651:1635:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;19651:1635:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;19651:1635:0;;-1:-1:-1;19651:1635:0;-1:-1:-1;19651:1635:0;;;;;;;;-1:-1:-1;;;;;19651:1635:0;;;;;;;;;;;;;;;;;;;;;;;;:::i;14652:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14652:25:0;;;:::i;14795:26::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14795:26:0;;;:::i;10453:454::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10453:454:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10453:454:0;;;;;;;:::i;14928:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14928:27:0;;;:::i;9121:114::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9121:114:0;;;:::i;9400:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9400:20:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14320:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14320:32:0;;;:::i;22998:79::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22998:79:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;22998:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17376:378;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17376:378:0;;;:::i;14741:23::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14741:23:0;;;:::i;11819:357::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11819:357:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11819:357:0;;:::i;14515:43::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14515:43:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14515:43:0;;:::i;14861:29::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14861:29:0;;;:::i;17021:349::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17021:349:0;;;:::i;22475:140::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22475:140:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22475:140:0;;:::i;9627:34::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9627:34:0;;;:::i;21990:113::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21990:113:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21990:113:0;-1:-1:-1;;;;;21990:113:0;;:::i;14388:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14388:31:0;;;:::i;21521:300::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21521:300:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21521:300:0;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;21521:300:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;21521:300:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;21521:300:0;;-1:-1:-1;21521:300:0;-1:-1:-1;21521:300:0;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;21521:300:0;;;;;;;;;;;;;;;;;14826:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14826:30:0;;;:::i;14769:21::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14769:21:0;;;:::i;18009:1235::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18009:1235:0;;:::i;12227:95::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12227:95:0;;;:::i;22262:207::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22262:207:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22262:207:0;;:::i;9749:39::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9749:39:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9749:39:0;;:::i;9698:46::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9698:46:0;;;:::i;14424:34::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14424:34:0;;;:::i;21339:118::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21339:118:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21339:118:0;;:::i;9600:22::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9600:22:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9600:22:0;;:::i;9240:114::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9240:114:0;;;:::i;9564:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9564:31:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9564:31:0;;:::i;14682:19::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14682:19:0;;;:::i;9666:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9666:27:0;;;:::i;14463:47::-;;;;;;;;;;;;;;;:::o;14706:30::-;;;-1:-1:-1;;;;;14706:30:0;;:::o;22162:94::-;15140:6;;-1:-1:-1;;;;;15140:6:0;15126:10;:20;15118:76;;;;-1:-1:-1;;;15118:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22231:6;:19;;-1:-1:-1;;;;;;22231:19:0;-1:-1:-1;;;;;22231:19:0;;;;;;;;;;22162:94::o;14895:28::-;;;;:::o;19651:1635::-;13920:13;:18;;13937:1;13920:18;;;;;19868:12;;19860:43;;;;;-1:-1:-1;;;19860:43:0;;;;;;;;;;;;-1:-1:-1;;;19860:43:0;;;;;;;;;;;;;;;19919:30;19938:10;19919:18;:30::i;:::-;19918:31;19910:75;;;;;-1:-1:-1;;;19910:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;20001:31;;;;:15;:31;;;;;;;;20000:32;19992:76;;;;;-1:-1:-1;;;19992:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;20083:18;20095:5;20083:11;:18::i;:::-;20075:59;;;;;-1:-1:-1;;;20075:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;20182:8;;:133;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20253:19:0;;;20182:133;;;;20274:17;;;20182:133;;;;;;;;;;;;;;;;;;-1:-1:-1;;;20182:133:0;;:8;;;;;:20;;20203:6;;;;20182:133;;;;;;;;;;;;;;;;:8;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;20182:133:0;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;20182:133:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20182:133:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20182:133:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20182:133:0;20174:168;;;;;-1:-1:-1;;;20174:168:0;;;;;;;;;;;;-1:-1:-1;;;20174:168:0;;;;;;;;;;;;;;;20351:31;;;;:15;:31;;;;;:38;;-1:-1:-1;;20351:38:0;20385:4;20351:38;;;20409:17;;20437:6;;20433:64;;20467:5;;20454:35;;-1:-1:-1;;;;;20467:5:0;20474:10;20486:2;20454:12;:35::i;:::-;20503:19;:17;:19::i;:::-;20638:11;;20620:13;;20529:18;;;;20620:30;;;:17;:30;:::i;:::-;20602:48;-1:-1:-1;20661:11:0;;20657:110;;20683:13;:24;;;;;;;20729:8;;20716:43;;-1:-1:-1;;;;;20729:8:0;20739:10;20700:7;20716:12;:43::i;:::-;20786:16;;20813;;;20809:55;;;20854:2;20840:16;;20809:55;20874:15;;20870:173;;20918:36;;20901:12;;-1:-1:-1;;;;;20918:13:0;;;20938:11;;20901:12;20918:36;20901:12;20918:36;20938:11;20918:13;:36;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;20900:54:0;;;20971:7;20963:46;;;;;-1:-1:-1;;;20963:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21018:17:0;;;20870:173;21053:6;;21049:128;;21088:29;;21071:12;;-1:-1:-1;;;;;21088:15:0;;;21110:2;;21071:12;21088:29;21071:12;21088:29;21110:2;21088:15;:29;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;21070:47:0;;;21134:7;21126:43;;;;;-1:-1:-1;;;21126:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;21049:128;;21183:11;:16;;-1:-1:-1;;21183:16:0;;;21211:69;;;-1:-1:-1;;;;;21211:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13996:1;;;;14032:13;;14016:12;:29;14008:73;;;;;-1:-1:-1;;;14008:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;19651:1635;;;;;;;;;:::o;14652:25::-;;;-1:-1:-1;;;;;14652:25:0;;:::o;14795:26::-;;;;:::o;10453:454::-;10528:7;-1:-1:-1;;;;;;;;;;;10552:27:0;;10544:72;;;;;-1:-1:-1;;;10544:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;10631:28:0;;10623:74;;;;-1:-1:-1;;;10623:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10766:23;;;-1:-1:-1;;;10766:23:0;;;;;;;;10704:9;10766:23;;;;;;;;10724:5;;10704:9;;10766:6;;:17;;:23;;;;;;;;;;:6;:23;;;5:2:-1;;;;30:1;27;20:12;5:2;10766:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10766:23:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10766:23:0;;;;;;;;;-1:-1:-1;10766:23:0;-1:-1:-1;;;;;;;;;;;;10818:6:0;10807:1;10800:38;10796:42;;10854:6;:17;10872:1;10875;10854:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10854:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10854:23:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10854:23:0;;-1:-1:-1;;;10453:454:0;;;;;:::o;14928:27::-;;;;:::o;9121:114::-;-1:-1:-1;;;;;;;;;;;9121:114:0;:::o;9400:20::-;;;;;;:::o;14320:32::-;;;;:::o;22998:79::-;23059:12;;;;;;;;;;;;-1:-1:-1;;;23059:12:0;;;;22998:79;;:::o;17376:378::-;17424:7;17444:11;;17459:1;17444:16;17440:65;;;-1:-1:-1;17478:19:0;;17471:26;;17440:65;17569:13;;17607:15;;17533:12;;17569:13;17593:29;;:51;;;;;17643:1;17626:14;;:18;17593:51;17589:102;;;17664:19;:17;:19::i;:::-;17655:28;;17589:102;17736:11;;17704:44;;:27;:6;-1:-1:-1;;17715:15:0;;17704:27;:10;:27;:::i;:::-;:31;:44;:31;:44;:::i;:::-;17697:51;;;;17376:378;:::o;14741:23::-;;;-1:-1:-1;;;;;14741:23:0;;:::o;11819:357::-;11875:4;11892:10;11888:45;;-1:-1:-1;11920:5:0;11913:12;;11888:45;11950:16;;;;11973:179;11998:5;12004:1;11998:8;;;;;;;;;;;11989:5;:17;11985:55;;;12026:4;12019:11;;;;;11985:55;12052:6;;;12048:54;;-1:-1:-1;9741:3:0;12048:54;12134:16;;-1:-1:-1;;12110:3:0;;;;12134:16;12129:21;;;12134:16;;12129:21;;11973:179;;12165:5;12158:12;;;11819:357;;;;:::o;14515:43::-;;;;;;;;;;;;;;;:::o;14861:29::-;;;;:::o;17021:349::-;17124:15;;17086:12;;17109:30;;17105:59;;17150:7;;;17105:59;17174:14;;:19;17170:77;;17220:19;:17;:19::i;:::-;17204:13;:35;17170:77;17335:15;:29;17021:349;:::o;22475:140::-;15140:6;;-1:-1:-1;;;;;15140:6:0;15126:10;:20;15118:76;;;;-1:-1:-1;;;15118:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22564:12;;22544:39;;;;;;;;;;;;;;;;;;;;;;;;22590:12;:19;22475:140::o;9627:34::-;;;;;;:::o;21990:113::-;15140:6;;-1:-1:-1;;;;;15140:6:0;15126:10;:20;15118:76;;;;-1:-1:-1;;;15118:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22063:8;:34;;-1:-1:-1;;;;;;22063:34:0;-1:-1:-1;;;;;22063:34:0;;;;;;;;;;21990:113::o;14388:31::-;;;;:::o;21521:300::-;21638:35;;;;;;;;;;;;;;;;21602:19;;21649:16;21638:35;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;21638:35:0;-1:-1:-1;21630:43:0;-1:-1:-1;21684:6:0;21680:136;21696:27;;;21680:136;;;21743:28;21751:16;;21768:1;21751:19;;;;;;;;;;;;;21743:7;:28::i;:::-;21739:70;;;21795:4;21784:5;21790:1;21784:8;;;;;;;;:15;;;:8;;;;;;;;;;;:15;21739:70;21725:3;;21680:136;;;;21521:300;;;;:::o;14826:30::-;;;;:::o;14769:21::-;;;-1:-1:-1;;;;;14769:21:0;;:::o;18009:1235::-;13920:13;:18;;13937:1;13920:18;;;;;:13;18093:24;;;:11;:24;;;;;;;;18092:25;18084:71;;;;-1:-1:-1;;;18084:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18183:16;;18170:9;:29;;18162:66;;;;;-1:-1:-1;;;18162:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;18264:16;;18252:9;:28;18235:14;18310:20;18318:11;18310:7;:20::i;:::-;18337:24;;;;:11;:24;;;;;:31;;-1:-1:-1;;18337:31:0;18364:4;18337:31;;;18287:43;-1:-1:-1;18375:19:0;:17;:19::i;:::-;18401:15;18419:17;:15;:17::i;:::-;18457:12;;18401:35;;-1:-1:-1;18443:11:0;18480:16;18401:35;18457:12;18480:16;:11;:16;:::i;:::-;:20;18476:148;;;18519:8;;-1:-1:-1;;;;;18519:8:0;:21;18541:10;18561:4;18568:16;:7;18580:3;18568:16;:11;:16;:::i;:::-;18519:66;;;;;;;;;;;;;-1:-1:-1;;;;;18519:66:0;-1:-1:-1;;;;;18519:66:0;;;;;;-1:-1:-1;;;;;18519:66:0;-1:-1:-1;;;;;18519:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18519:66:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18519:66:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18519:66:0;18511:105;;;;;-1:-1:-1;;;18511:105:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;18634:7;;18630:216;;18664:8;;-1:-1:-1;;;;;18664:8:0;18685:15;18681:158;;18721:8;;:18;;;-1:-1:-1;;;18721:18:0;;;;;;;;;;-1:-1:-1;;;;;18721:8:0;;;;:13;;:18;;;;;;;;;;;;;;;:8;;:18;;;5:2:-1;;;;30:1;27;20:12;5:2;18721:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18721:18:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18721:18:0;18713:59;;;;;-1:-1:-1;;;18713:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;18681:158;;;18812:8;;18799:30;;-1:-1:-1;;;;;18812:8:0;18822:1;18825:3;18799:12;:30::i;:::-;18630:216;;18865:17;;18893:6;;18889:82;;18910:5;;:53;;-1:-1:-1;;;;;18910:5:0;18933:10;18953:4;18960:2;18910:53;:22;:53;:::i;:::-;18977:13;:24;;;;;;19008:11;:16;;-1:-1:-1;19008:16:0;;;19035:10;;19031:130;;19075:33;;19057:12;;19075:10;;19097:6;;19057:12;19075:33;19057:12;19075:33;19097:6;19075:10;:33;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;19056:52:0;;;19125:7;19117:36;;;;;-1:-1:-1;;;19117:36:0;;;;;;;;;;;;-1:-1:-1;;;19117:36:0;;;;;;;;;;;;;;;19031:130;;19172:66;;;;;;;;19208:15;19172:66;;;;;;;;;;;;;;;;;;19180:11;;19172:66;;;;;;;;;;13996:1;;;;;14032:13;;14016:12;:29;14008:73;;;;;-1:-1:-1;;;14008:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;18009:1235;;:::o;12227:95::-;12299:16;;12270:7;;12293:5;;12299:16;;12293:23;;;;;;;;;12286:30;;12227:95;:::o;22262:207::-;15140:6;;-1:-1:-1;;;;;15140:6:0;15126:10;:20;15118:76;;;;-1:-1:-1;;;15118:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22339:19;:17;:19::i;:::-;22392:14;;22370:54;;;;;;;;;;;;;;;;;;;;;;;;22431:14;:32;22262:207::o;9749:39::-;;;;;;;;;;;;;-1:-1:-1;9749:39:0;:::o;9698:46::-;9741:3;9698:46;:::o;14424:34::-;;;;:::o;21339:118::-;21400:4;21420:31;;;:15;:31;;;;;;;;;21339:118::o;9600:22::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9600:22:0;:::o;9240:114::-;9277:77;9240:114;:::o;9564:31::-;;;;;;;;;;14682:19;;;-1:-1:-1;;;;;14682:19:0;;:::o;9666:27::-;;;-1:-1:-1;;;9666:27:0;;;;;:::o;4693:422::-;5060:20;5099:8;;;4693:422::o;22719:273::-;22820:31;;;-1:-1:-1;;;22820:31:0;;22845:4;22820:31;;;;;;22802:15;;-1:-1:-1;;;;;22820:16:0;;;;;:31;;;;;;;;;;;;;;;:16;:31;;;5:2:-1;;;;30:1;27;20:12;5:2;22820:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22820:31:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22820:31:0;;-1:-1:-1;22862:17:0;;;22858:129;;;22890:33;-1:-1:-1;;;;;22890:19:0;;22910:3;22915:7;22890:33;:19;:33;:::i;:::-;22858:129;;;22946:33;-1:-1:-1;;;;;22946:19:0;;22966:3;22971:7;22946:33;:19;:33;:::i;:::-;22719:273;;;;:::o;1156:277::-;1214:7;1426:1;1422;:5;;;;;;;1156:277;-1:-1:-1;;;1156:277:0:o;16688:327::-;16740:7;16756:14;16773:53;16811:14;;16773:33;16790:15;;16773:12;:16;;:33;;;;:::i;:::-;:37;:53;:37;:53;:::i;:::-;16891:13;;16853:8;;:33;;;-1:-1:-1;;;16853:33:0;;16880:4;16853:33;;;;;;16756:70;;-1:-1:-1;16833:17:0;;16853:52;;16891:13;-1:-1:-1;;;;;16853:8:0;;:18;;:33;;;;;;;;;;;;;;:8;:33;;;5:2:-1;;;;30:1;27;20:12;5:2;16853:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16853:33:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16853:33:0;;:52;:37;:52;:::i;:::-;16833:72;;16928:6;16916:9;:18;16912:59;;;16954:9;16945:18;;16912:59;16984:13;;:25;;17002:6;16984:25;:17;:25;:::i;2345:127::-;2425:5;;;2444:6;;;;2437:14;;;10913:829;11005:9;;10962:12;11056:6;;10962:12;;11005:9;-1:-1:-1;;;11005:9:0;;;;;;11056:6;;11052:1;11045:17;11029:33;;;;11021:93;;;;-1:-1:-1;;;11021:93:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11121:9;:14;;;-1:-1:-1;;;11121:14:0;;;;;11134:1;11121:14;;;;;-1:-1:-1;;11121:14:0;;;;;;11169:5;-1:-1:-1;;;11222:369:0;11245:6;;;;;;11241:10;;;;11222:369;;;11271:16;;;11267:233;;11312:16;11305:23;;11347:5;11353:1;11347:8;;;;;;;;;;;;;;;;;;11339:16;;11388;11368:14;11383:1;11368:17;;;;;;;;;;;;;;;;;;;:36;11267:233;;;11438:14;11453:1;11438:17;;;;;;;;;;;;;;;;;;11431:24;;11474:16;11466:24;;11267:233;11529:26;11543:4;11549:5;11529:13;:26::i;:::-;11510:45;-1:-1:-1;11582:1:0;11566:17;;;;;-1:-1:-1;11253:3:0;;11222:369;;;-1:-1:-1;11619:16:0;;9741:3;;11618:42;11619:16;;;;:20;11618:42;11599:16;:61;;-1:-1:-1;;11599:61:0;11618:42;;;;11599:61;;;;;;;;;;;;11693:16;;11667:5;;11673:16;11667:23;;;;;;;;:42;-1:-1:-1;;11723:9:0;;-1:-1:-1;;;11723:9:0;;;;-1:-1:-1;;11723:13:0;;10913:829;-1:-1:-1;;;;10913:829:0:o;5939:204::-;6066:68;;;-1:-1:-1;;;;;6066:68:0;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;6066:68:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;6040:95:0;;6059:5;;6040:18;:95::i;5755:176::-;5864:58;;;-1:-1:-1;;;;;5864:58:0;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;5864:58:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;5838:85:0;;5857:5;;5838:18;:85::i;:::-;5755:176;;;:::o;1869:113::-;1927:7;1955:1;1950;:6;;1943:14;;;;-1:-1:-1;1971:5:0;;;1869:113::o;559:174::-;617:9;639:6;635:37;;-1:-1:-1;663:1:0;656:8;;635:37;-1:-1:-1;682:5:0;;;686:1;682;:5;:1;701:5;;;;;:10;694:18;;;7749:1114;8353:27;8361:5;-1:-1:-1;;;;;8353:25:0;;:27::i;:::-;8345:71;;;;;-1:-1:-1;;;8345:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8490:12;8504:23;8539:5;-1:-1:-1;;;;;8531:19:0;8551:4;8531:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;8531:25:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;8489:67:0;;;;8575:7;8567:52;;;;;-1:-1:-1;;;8567:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8636:17;;:21;8632:224;;8778:10;8767:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8767:30:0;8759:85;;;;-1:-1:-1;;;8759:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Swarm Source
bzzr://dcf10631566e96068ab533cab04f44033b67176a40423c8a7146ec72f39bcc7c
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.