ERC-20
DeFi
Overview
Max Total Supply
10,000,000,000 BTVZ
Holders
1 (0.00%)
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
Token
Compiler Version
v0.8.25+commit.b61c2a91
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-08-04 */ /// SPDX-License-Identifier: MIT pragma solidity 0.8.25; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the subtraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } contract Token { using SafeMath for uint256; /// @notice EIP-20 token name for this token string public constant name = "Bitvizy Token"; /// @notice EIP-20 token symbol for this token string public constant symbol = "BTVZ"; /// @notice EIP-20 token decimals for this token uint8 public constant decimals = 18; /// @notice Total number of tokens in circulation uint256 public totalSupply = 10_000_000_000e18; // 10 billion Token /// @notice Allowance amounts on behalf of others mapping (address => mapping (address => uint256)) internal allowances; /// @notice Official record of token balances for each account mapping (address => uint256) internal balances; /// @notice A record of each account's delegate mapping (address => address) public delegates; /// @notice A checkpoint for marking number of votes from a given block struct Checkpoint { uint32 fromBlock; uint256 votes; } /// @notice A record of votes checkpoints for each account, by index mapping (address => mapping (uint32 => Checkpoint)) public checkpoints; /// @notice The number of checkpoints for each account mapping (address => uint32) public numCheckpoints; /// @notice The EIP-712 typehash for the contract's domain bytes32 public constant DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)"); /// @notice The EIP-712 typehash for the delegation struct used by the contract bytes32 public constant DELEGATION_TYPEHASH = keccak256("Delegation(address delegatee,uint256 nonce,uint256 expiry)"); /// @notice The EIP-712 typehash for the permit struct used by the contract bytes32 public constant PERMIT_TYPEHASH = keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"); /// @notice A record of states for signing / validating signatures mapping (address => uint256) public nonces; /// @notice An event that's emitted when the minter address is changed event MinterChanged(address minter, address newMinter); /// @notice An event that's emitted when an account changes its delegate event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate); /// @notice An event that's emitted when a delegate account's vote balance changes event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance); /// @notice The standard EIP-20 transfer event event Transfer(address indexed from, address indexed to, uint256 amount); /// @notice The standard EIP-20 approval event event Approval(address indexed owner, address indexed spender, uint256 amount); /** * @notice Construct a new Token token * @param account The initial account to grant all the token */ constructor(address account) { balances[account] = totalSupply; emit Transfer(address(0), account, totalSupply); } /** * @notice Get the number of tokens `spender` is approved to spend on behalf of `account` * @param account The address of the account holding the funds * @param spender The address of the account spending the funds * @return The number of tokens approved */ function allowance(address account, address spender) external view returns (uint256) { return allowances[account][spender]; } /** * @notice Approve `spender` to transfer up to `amount` from `src` * @dev This will overwrite the approval amount for `spender` * and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve) * @param spender The address of the account which may transfer tokens * @param rawAmount The number of tokens that are approved (2^256-1 means infinite) * @return Whether or not the approval succeeded */ function approve(address spender, uint256 rawAmount) external returns (bool) { uint256 amount = rawAmount; allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } /** * @notice Triggers an approval from owner to spender * @param owner The address to approve from * @param spender The address to be approved * @param rawAmount The number of tokens that are approved (2^256-1 means infinite) * @param deadline The time at which to expire the signature * @param v The recovery byte of the signature * @param r Half of the ECDSA signature pair * @param s Half of the ECDSA signature pair */ function permit(address owner, address spender, uint256 rawAmount, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external { uint256 amount = rawAmount; bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this))); bytes32 structHash = keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, rawAmount, nonces[owner]++, deadline)); bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash)); address signatory = ecrecover(digest, v, r, s); require(signatory != address(0), "Token::permit: invalid signature"); require(signatory == owner, "Token::permit: unauthorized"); require(block.timestamp <= deadline, "Token::permit: signature expired"); allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @notice Get the number of tokens held by the `account` * @param account The address of the account to get the balance of * @return The number of tokens held */ function balanceOf(address account) external view returns (uint256) { return balances[account]; } /** * @notice Transfer `amount` tokens from `msg.sender` to `dst` * @param dst The address of the destination account * @param rawAmount The number of tokens to transfer * @return Whether or not the transfer succeeded */ function transfer(address dst, uint256 rawAmount) external returns (bool) { uint256 amount = rawAmount; _transferTokens(msg.sender, dst, amount); return true; } /** * @notice Transfer `amount` tokens from `src` to `dst` * @param src The address of the source account * @param dst The address of the destination account * @param rawAmount The number of tokens to transfer * @return Whether or not the transfer succeeded */ function transferFrom(address src, address dst, uint256 rawAmount) external returns (bool) { address spender = msg.sender; uint256 spenderAllowance = allowances[src][spender]; uint256 amount = rawAmount; if (spender != src && spenderAllowance != type(uint256).max) { uint256 newAllowance = spenderAllowance.sub(amount, "Token::transferFrom: transfer amount exceeds spender allowance"); allowances[src][spender] = newAllowance; emit Approval(src, spender, newAllowance); } _transferTokens(src, dst, amount); return true; } /** * @notice Delegate votes from `msg.sender` to `delegatee` * @param delegatee The address to delegate votes to */ function delegate(address delegatee) external { return _delegate(msg.sender, delegatee); } /** * @notice Delegates votes from signatory to `delegatee` * @param delegatee The address to delegate votes to * @param nonce The contract state required to match the signature * @param expiry The time at which to expire the signature * @param v The recovery byte of the signature * @param r Half of the ECDSA signature pair * @param s Half of the ECDSA signature pair */ function delegateBySig(address delegatee, uint256 nonce, uint256 expiry, uint8 v, bytes32 r, bytes32 s) external { bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this))); bytes32 structHash = keccak256(abi.encode(DELEGATION_TYPEHASH, delegatee, nonce, expiry)); bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash)); address signatory = ecrecover(digest, v, r, s); require(signatory != address(0), "Token::delegateBySig: invalid signature"); require(nonce == nonces[signatory]++, "Token::delegateBySig: invalid nonce"); require(block.timestamp <= expiry, "Token::delegateBySig: signature expired"); return _delegate(signatory, delegatee); } /** * @notice Gets the current votes balance for `account` * @param account The address to get votes balance * @return The number of current votes for `account` */ function getCurrentVotes(address account) external view returns (uint256) { uint32 nCheckpoints = numCheckpoints[account]; return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0; } /** * @notice Determine the prior number of votes for an account as of a block number * @dev Block number must be a finalized block or else this function will revert to prevent misinformation. * @param account The address of the account to check * @param blockNumber The block number to get the vote balance at * @return The number of votes the account had as of the given block */ function getPriorVotes(address account, uint256 blockNumber) external view returns (uint256) { require(blockNumber < block.number, "Token::getPriorVotes: not yet determined"); uint32 nCheckpoints = numCheckpoints[account]; if (nCheckpoints == 0) { return 0; } // First check most recent balance if (checkpoints[account][nCheckpoints - 1].fromBlock <= blockNumber) { return checkpoints[account][nCheckpoints - 1].votes; } // Next check implicit zero balance if (checkpoints[account][0].fromBlock > blockNumber) { return 0; } uint32 lower = 0; uint32 upper = nCheckpoints - 1; while (upper > lower) { uint32 center = upper - (upper - lower) / 2; // ceil, avoiding overflow Checkpoint memory cp = checkpoints[account][center]; if (cp.fromBlock == blockNumber) { return cp.votes; } else if (cp.fromBlock < blockNumber) { lower = center; } else { upper = center - 1; } } return checkpoints[account][lower].votes; } function _delegate(address delegator, address delegatee) internal { address currentDelegate = delegates[delegator]; uint256 delegatorBalance = balances[delegator]; // balance of underlying Token tokens (not scaled); delegates[delegator] = delegatee; emit DelegateChanged(delegator, currentDelegate, delegatee); _moveDelegates(currentDelegate, delegatee, delegatorBalance); } function _transferTokens(address src, address dst, uint256 amount) internal { require(src != address(0), "Token::_transferTokens: cannot transfer from the zero address"); require(dst != address(0), "Token::_transferTokens: cannot transfer to the zero address"); balances[src] = balances[src].sub(amount, "Token::_transferTokens: transfer amount exceeds balance"); balances[dst] = balances[dst].add(amount); emit Transfer(src, dst, amount); _moveDelegates(delegates[src], delegates[dst], amount); } function _moveDelegates(address srcRep, address dstRep, uint256 amount) internal { if (srcRep != dstRep && amount > 0) { if (srcRep != address(0)) { // decrease old representative uint32 srcRepNum = numCheckpoints[srcRep]; uint256 srcRepOld = srcRepNum > 0 ? checkpoints[srcRep][srcRepNum - 1].votes : 0; uint256 srcRepNew = srcRepOld.sub(amount); _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew); } if (dstRep != address(0)) { // increase new representative uint32 dstRepNum = numCheckpoints[dstRep]; uint256 dstRepOld = dstRepNum > 0 ? checkpoints[dstRep][dstRepNum - 1].votes : 0; uint256 dstRepNew = dstRepOld.add(amount); _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew); } } } function _writeCheckpoint(address delegatee, uint32 nCheckpoints, uint256 oldVotes, uint256 newVotes) internal { uint32 blockNumber = safe32(block.number, "Token::_writeCheckpoint: block number exceeds 32 bits"); if (nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber) { checkpoints[delegatee][nCheckpoints - 1].votes = newVotes; } else { checkpoints[delegatee][nCheckpoints] = Checkpoint(blockNumber, newVotes); numCheckpoints[delegatee] = nCheckpoints + 1; } emit DelegateVotesChanged(delegatee, oldVotes, newVotes); } function safe32(uint256 n, string memory errorMessage) internal pure returns (uint32) { require(n < 2**32, errorMessage); return uint32(n); } function getChainId() internal view returns (uint256) { return block.chainid; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"address","name":"newMinter","type":"address"}],"name":"MinterChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint32","name":"","type":"uint32"}],"name":"checkpoints","outputs":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint256","name":"votes","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526b204fce5e3e250261100000005f5534801561001e575f80fd5b50604051612fd1380380612fd18339818101604052810190610040919061014d565b5f5460025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f546040516100e19190610190565b60405180910390a3506101a9565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61011c826100f3565b9050919050565b61012c81610112565b8114610136575f80fd5b50565b5f8151905061014781610123565b92915050565b5f60208284031215610162576101616100ef565b5b5f61016f84828501610139565b91505092915050565b5f819050919050565b61018a81610178565b82525050565b5f6020820190506101a35f830184610181565b92915050565b612e1b806101b65f395ff3fe608060405234801561000f575f80fd5b5060043610610135575f3560e01c806370a08231116100b6578063b4b5ea571161007a578063b4b5ea5714610389578063c3cda520146103b9578063d505accf146103d5578063dd62ed3e146103f1578063e7a324dc14610421578063f1127ed81461043f57610135565b806370a08231146102ab578063782d6fe1146102db5780637ecebe001461030b57806395d89b411461033b578063a9059cbb1461035957610135565b806330adf81f116100fd57806330adf81f146101f3578063313ce56714610211578063587cde1e1461022f5780635c19a95c1461025f5780636fcfff451461027b57610135565b806306fdde0314610139578063095ea7b31461015757806318160ddd1461018757806320606b70146101a557806323b872dd146101c3575b5f80fd5b610141610470565b60405161014e9190612041565b60405180910390f35b610171600480360381019061016c91906120f2565b6104a9565b60405161017e919061214a565b60405180910390f35b61018f61059b565b60405161019c9190612172565b60405180910390f35b6101ad6105a0565b6040516101ba91906121a3565b60405180910390f35b6101dd60048036038101906101d891906121bc565b6105c4565b6040516101ea919061214a565b60405180910390f35b6101fb6107d7565b60405161020891906121a3565b60405180910390f35b6102196107fb565b6040516102269190612227565b60405180910390f35b61024960048036038101906102449190612240565b610800565b604051610256919061227a565b60405180910390f35b61027960048036038101906102749190612240565b610830565b005b61029560048036038101906102909190612240565b61083d565b6040516102a291906122b1565b60405180910390f35b6102c560048036038101906102c09190612240565b61085d565b6040516102d29190612172565b60405180910390f35b6102f560048036038101906102f091906120f2565b6108a3565b6040516103029190612172565b60405180910390f35b61032560048036038101906103209190612240565b610c51565b6040516103329190612172565b60405180910390f35b610343610c66565b6040516103509190612041565b60405180910390f35b610373600480360381019061036e91906120f2565b610c9f565b604051610380919061214a565b60405180910390f35b6103a3600480360381019061039e9190612240565b610cba565b6040516103b09190612172565b60405180910390f35b6103d360048036038101906103ce919061231e565b610d8f565b005b6103ef60048036038101906103ea91906123a7565b611046565b005b61040b60048036038101906104069190612444565b61140b565b6040516104189190612172565b60405180910390f35b61042961148d565b60405161043691906121a3565b60405180910390f35b610459600480360381019061045491906124ac565b6114b1565b6040516104679291906124ea565b60405180910390f35b6040518060400160405280600d81526020017f42697476697a7920546f6b656e0000000000000000000000000000000000000081525081565b5f808290508060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516105889190612172565b60405180910390a3600191505092915050565b5f5481565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b5f803390505f60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8490508673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156106a557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214155b156107be575f6106d8826040518060600160405280603e8152602001612d73603e9139856114eb9092919063ffffffff16565b90508060015f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516107b49190612172565b60405180910390a3505b6107c987878361153f565b600193505050509392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b6003602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61083a3382611884565b50565b6005602052805f5260405f205f915054906101000a900463ffffffff1681565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f4382106108e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108dd90612581565b60405180910390fd5b5f60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900463ffffffff1690505f8163ffffffff160361094c575f915050610c4b565b8260045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f60018461099891906125cc565b63ffffffff1663ffffffff1681526020019081526020015f205f015f9054906101000a900463ffffffff1663ffffffff1611610a3e5760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f600183610a1991906125cc565b63ffffffff1663ffffffff1681526020019081526020015f2060010154915050610c4b565b8260045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8063ffffffff1681526020019081526020015f205f015f9054906101000a900463ffffffff1663ffffffff161115610ab8575f915050610c4b565b5f80600183610ac791906125cc565b90505b8163ffffffff168163ffffffff161115610be9575f60028383610aed91906125cc565b610af79190612630565b82610b0291906125cc565b90505f60045f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8363ffffffff1663ffffffff1681526020019081526020015f206040518060400160405290815f82015f9054906101000a900463ffffffff1663ffffffff1663ffffffff168152602001600182015481525050905086815f015163ffffffff1603610bb957806020015195505050505050610c4b565b86815f015163ffffffff161015610bd257819350610be2565b600182610bdf91906125cc565b92505b5050610aca565b60045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8363ffffffff1663ffffffff1681526020019081526020015f206001015493505050505b92915050565b6006602052805f5260405f205f915090505481565b6040518060400160405280600481526020017f4254565a0000000000000000000000000000000000000000000000000000000081525081565b5f80829050610caf33858361153f565b600191505092915050565b5f8060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900463ffffffff1690505f8163ffffffff1611610d1e575f610d87565b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f600183610d6991906125cc565b63ffffffff1663ffffffff1681526020019081526020015f20600101545b915050919050565b5f7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8666040518060400160405280600d81526020017f42697476697a7920546f6b656e0000000000000000000000000000000000000081525080519060200120610df6611a22565b30604051602001610e0a9493929190612660565b6040516020818303038152906040528051906020012090505f7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf888888604051602001610e5a94939291906126a3565b6040516020818303038152906040528051906020012090505f8282604051602001610e8692919061275a565b6040516020818303038152906040528051906020012090505f6001828888886040515f8152602001604052604051610ec19493929190612790565b6020604051602081039080840390855afa158015610ee1573d5f803e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5290612843565b60405180910390fd5b60065f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190610fa890612861565b919050558914610fed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe490612918565b60405180910390fd5b87421115611030576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611027906129a6565b60405180910390fd5b61103a818b611884565b50505050505050505050565b5f8590505f7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8666040518060400160405280600d81526020017f42697476697a7920546f6b656e00000000000000000000000000000000000000815250805190602001206110b1611a22565b306040516020016110c59493929190612660565b6040516020818303038152906040528051906020012090505f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a60065f8f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f81548092919061114f90612861565b919050558b604051602001611169969594939291906129c4565b6040516020818303038152906040528051906020012090505f828260405160200161119592919061275a565b6040516020818303038152906040528051906020012090505f6001828989896040515f81526020016040526040516111d09493929190612790565b6020604051602081039080840390855afa1580156111f0573d5f803e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361126a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126190612a6d565b60405180910390fd5b8b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146112d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cf90612ad5565b60405180910390fd5b8842111561131b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131290612b3d565b60405180910390fd5b8460015f8e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925876040516113f59190612172565b60405180910390a3505050505050505050505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b6004602052815f5260405f20602052805f5260405f205f9150915050805f015f9054906101000a900463ffffffff16908060010154905082565b5f838311158290611532576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115299190612041565b60405180910390fd5b5082840390509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a490612bcb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361161b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161290612c59565b60405180910390fd5b61168581604051806060016040528060378152602001612d3c6037913960025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546114eb9092919063ffffffff16565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506117168160025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611a2990919063ffffffff16565b60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516117b49190612172565b60405180910390a361187f60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611a3e565b505050565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508260035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a4611a1c828483611a3e565b50505050565b5f46905090565b5f8183611a369190612c77565b905092915050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a7957505f81115b15611ccf575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611ba6575f60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900463ffffffff1690505f808263ffffffff1611611b15575f611b7e565b60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f600184611b6091906125cc565b63ffffffff1663ffffffff1681526020019081526020015f20600101545b90505f611b948483611cd490919063ffffffff16565b9050611ba286848484611ce9565b5050505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611cce575f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900463ffffffff1690505f808263ffffffff1611611c3d575f611ca6565b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f600184611c8891906125cc565b63ffffffff1663ffffffff1681526020019081526020015f20600101545b90505f611cbc8483611a2990919063ffffffff16565b9050611cca85848484611ce9565b5050505b5b505050565b5f8183611ce19190612caa565b905092915050565b5f611d0c43604051806060016040528060358152602001612db160359139611f7c565b90505f8463ffffffff16118015611da357508063ffffffff1660045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f600187611d7091906125cc565b63ffffffff1663ffffffff1681526020019081526020015f205f015f9054906101000a900463ffffffff1663ffffffff16145b15611e19578160045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f600187611df491906125cc565b63ffffffff1663ffffffff1681526020019081526020015f2060010181905550611f25565b60405180604001604052808263ffffffff1681526020018381525060045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8663ffffffff1663ffffffff1681526020019081526020015f205f820151815f015f6101000a81548163ffffffff021916908363ffffffff16021790555060208201518160010155905050600184611eca9190612cdd565b60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548163ffffffff021916908363ffffffff1602179055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248484604051611f6d929190612d14565b60405180910390a25050505050565b5f64010000000083108290611fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbe9190612041565b60405180910390fd5b5082905092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61201382611fd1565b61201d8185611fdb565b935061202d818560208601611feb565b61203681611ff9565b840191505092915050565b5f6020820190508181035f8301526120598184612009565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61208e82612065565b9050919050565b61209e81612084565b81146120a8575f80fd5b50565b5f813590506120b981612095565b92915050565b5f819050919050565b6120d1816120bf565b81146120db575f80fd5b50565b5f813590506120ec816120c8565b92915050565b5f806040838503121561210857612107612061565b5b5f612115858286016120ab565b9250506020612126858286016120de565b9150509250929050565b5f8115159050919050565b61214481612130565b82525050565b5f60208201905061215d5f83018461213b565b92915050565b61216c816120bf565b82525050565b5f6020820190506121855f830184612163565b92915050565b5f819050919050565b61219d8161218b565b82525050565b5f6020820190506121b65f830184612194565b92915050565b5f805f606084860312156121d3576121d2612061565b5b5f6121e0868287016120ab565b93505060206121f1868287016120ab565b9250506040612202868287016120de565b9150509250925092565b5f60ff82169050919050565b6122218161220c565b82525050565b5f60208201905061223a5f830184612218565b92915050565b5f6020828403121561225557612254612061565b5b5f612262848285016120ab565b91505092915050565b61227481612084565b82525050565b5f60208201905061228d5f83018461226b565b92915050565b5f63ffffffff82169050919050565b6122ab81612293565b82525050565b5f6020820190506122c45f8301846122a2565b92915050565b6122d38161220c565b81146122dd575f80fd5b50565b5f813590506122ee816122ca565b92915050565b6122fd8161218b565b8114612307575f80fd5b50565b5f81359050612318816122f4565b92915050565b5f805f805f8060c0878903121561233857612337612061565b5b5f61234589828a016120ab565b965050602061235689828a016120de565b955050604061236789828a016120de565b945050606061237889828a016122e0565b935050608061238989828a0161230a565b92505060a061239a89828a0161230a565b9150509295509295509295565b5f805f805f805f60e0888a0312156123c2576123c1612061565b5b5f6123cf8a828b016120ab565b97505060206123e08a828b016120ab565b96505060406123f18a828b016120de565b95505060606124028a828b016120de565b94505060806124138a828b016122e0565b93505060a06124248a828b0161230a565b92505060c06124358a828b0161230a565b91505092959891949750929550565b5f806040838503121561245a57612459612061565b5b5f612467858286016120ab565b9250506020612478858286016120ab565b9150509250929050565b61248b81612293565b8114612495575f80fd5b50565b5f813590506124a681612482565b92915050565b5f80604083850312156124c2576124c1612061565b5b5f6124cf858286016120ab565b92505060206124e085828601612498565b9150509250929050565b5f6040820190506124fd5f8301856122a2565b61250a6020830184612163565b9392505050565b7f546f6b656e3a3a6765745072696f72566f7465733a206e6f74207965742064655f8201527f7465726d696e6564000000000000000000000000000000000000000000000000602082015250565b5f61256b602883611fdb565b915061257682612511565b604082019050919050565b5f6020820190508181035f8301526125988161255f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6125d682612293565b91506125e183612293565b9250828203905063ffffffff8111156125fd576125fc61259f565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61263a82612293565b915061264583612293565b92508261265557612654612603565b5b828204905092915050565b5f6080820190506126735f830187612194565b6126806020830186612194565b61268d6040830185612163565b61269a606083018461226b565b95945050505050565b5f6080820190506126b65f830187612194565b6126c3602083018661226b565b6126d06040830185612163565b6126dd6060830184612163565b95945050505050565b5f81905092915050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f6127246002836126e6565b915061272f826126f0565b600282019050919050565b5f819050919050565b61275461274f8261218b565b61273a565b82525050565b5f61276482612718565b91506127708285612743565b6020820191506127808284612743565b6020820191508190509392505050565b5f6080820190506127a35f830187612194565b6127b06020830186612218565b6127bd6040830185612194565b6127ca6060830184612194565b95945050505050565b7f546f6b656e3a3a64656c656761746542795369673a20696e76616c69642073695f8201527f676e617475726500000000000000000000000000000000000000000000000000602082015250565b5f61282d602783611fdb565b9150612838826127d3565b604082019050919050565b5f6020820190508181035f83015261285a81612821565b9050919050565b5f61286b826120bf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361289d5761289c61259f565b5b600182019050919050565b7f546f6b656e3a3a64656c656761746542795369673a20696e76616c6964206e6f5f8201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b5f612902602383611fdb565b915061290d826128a8565b604082019050919050565b5f6020820190508181035f83015261292f816128f6565b9050919050565b7f546f6b656e3a3a64656c656761746542795369673a207369676e6174757265205f8201527f6578706972656400000000000000000000000000000000000000000000000000602082015250565b5f612990602783611fdb565b915061299b82612936565b604082019050919050565b5f6020820190508181035f8301526129bd81612984565b9050919050565b5f60c0820190506129d75f830189612194565b6129e4602083018861226b565b6129f1604083018761226b565b6129fe6060830186612163565b612a0b6080830185612163565b612a1860a0830184612163565b979650505050505050565b7f546f6b656e3a3a7065726d69743a20696e76616c6964207369676e61747572655f82015250565b5f612a57602083611fdb565b9150612a6282612a23565b602082019050919050565b5f6020820190508181035f830152612a8481612a4b565b9050919050565b7f546f6b656e3a3a7065726d69743a20756e617574686f72697a656400000000005f82015250565b5f612abf601b83611fdb565b9150612aca82612a8b565b602082019050919050565b5f6020820190508181035f830152612aec81612ab3565b9050919050565b7f546f6b656e3a3a7065726d69743a207369676e617475726520657870697265645f82015250565b5f612b27602083611fdb565b9150612b3282612af3565b602082019050919050565b5f6020820190508181035f830152612b5481612b1b565b9050919050565b7f546f6b656e3a3a5f7472616e73666572546f6b656e733a2063616e6e6f7420745f8201527f72616e736665722066726f6d20746865207a65726f2061646472657373000000602082015250565b5f612bb5603d83611fdb565b9150612bc082612b5b565b604082019050919050565b5f6020820190508181035f830152612be281612ba9565b9050919050565b7f546f6b656e3a3a5f7472616e73666572546f6b656e733a2063616e6e6f7420745f8201527f72616e7366657220746f20746865207a65726f20616464726573730000000000602082015250565b5f612c43603b83611fdb565b9150612c4e82612be9565b604082019050919050565b5f6020820190508181035f830152612c7081612c37565b9050919050565b5f612c81826120bf565b9150612c8c836120bf565b9250828201905080821115612ca457612ca361259f565b5b92915050565b5f612cb4826120bf565b9150612cbf836120bf565b9250828203905081811115612cd757612cd661259f565b5b92915050565b5f612ce782612293565b9150612cf283612293565b9250828201905063ffffffff811115612d0e57612d0d61259f565b5b92915050565b5f604082019050612d275f830185612163565b612d346020830184612163565b939250505056fe546f6b656e3a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e6365546f6b656e3a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365546f6b656e3a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473a264697066735822122000de0521ef7a8efa9c1859ec607521ccf37af86a1560af917a92e3dd5bd5899b64736f6c63430008190033000000000000000000000000c7f96f97e557b89f3511434da58a895d857a6c19
Deployed Bytecode
0x608060405234801561000f575f80fd5b5060043610610135575f3560e01c806370a08231116100b6578063b4b5ea571161007a578063b4b5ea5714610389578063c3cda520146103b9578063d505accf146103d5578063dd62ed3e146103f1578063e7a324dc14610421578063f1127ed81461043f57610135565b806370a08231146102ab578063782d6fe1146102db5780637ecebe001461030b57806395d89b411461033b578063a9059cbb1461035957610135565b806330adf81f116100fd57806330adf81f146101f3578063313ce56714610211578063587cde1e1461022f5780635c19a95c1461025f5780636fcfff451461027b57610135565b806306fdde0314610139578063095ea7b31461015757806318160ddd1461018757806320606b70146101a557806323b872dd146101c3575b5f80fd5b610141610470565b60405161014e9190612041565b60405180910390f35b610171600480360381019061016c91906120f2565b6104a9565b60405161017e919061214a565b60405180910390f35b61018f61059b565b60405161019c9190612172565b60405180910390f35b6101ad6105a0565b6040516101ba91906121a3565b60405180910390f35b6101dd60048036038101906101d891906121bc565b6105c4565b6040516101ea919061214a565b60405180910390f35b6101fb6107d7565b60405161020891906121a3565b60405180910390f35b6102196107fb565b6040516102269190612227565b60405180910390f35b61024960048036038101906102449190612240565b610800565b604051610256919061227a565b60405180910390f35b61027960048036038101906102749190612240565b610830565b005b61029560048036038101906102909190612240565b61083d565b6040516102a291906122b1565b60405180910390f35b6102c560048036038101906102c09190612240565b61085d565b6040516102d29190612172565b60405180910390f35b6102f560048036038101906102f091906120f2565b6108a3565b6040516103029190612172565b60405180910390f35b61032560048036038101906103209190612240565b610c51565b6040516103329190612172565b60405180910390f35b610343610c66565b6040516103509190612041565b60405180910390f35b610373600480360381019061036e91906120f2565b610c9f565b604051610380919061214a565b60405180910390f35b6103a3600480360381019061039e9190612240565b610cba565b6040516103b09190612172565b60405180910390f35b6103d360048036038101906103ce919061231e565b610d8f565b005b6103ef60048036038101906103ea91906123a7565b611046565b005b61040b60048036038101906104069190612444565b61140b565b6040516104189190612172565b60405180910390f35b61042961148d565b60405161043691906121a3565b60405180910390f35b610459600480360381019061045491906124ac565b6114b1565b6040516104679291906124ea565b60405180910390f35b6040518060400160405280600d81526020017f42697476697a7920546f6b656e0000000000000000000000000000000000000081525081565b5f808290508060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516105889190612172565b60405180910390a3600191505092915050565b5f5481565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b5f803390505f60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8490508673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156106a557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214155b156107be575f6106d8826040518060600160405280603e8152602001612d73603e9139856114eb9092919063ffffffff16565b90508060015f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516107b49190612172565b60405180910390a3505b6107c987878361153f565b600193505050509392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b6003602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61083a3382611884565b50565b6005602052805f5260405f205f915054906101000a900463ffffffff1681565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f4382106108e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108dd90612581565b60405180910390fd5b5f60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900463ffffffff1690505f8163ffffffff160361094c575f915050610c4b565b8260045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f60018461099891906125cc565b63ffffffff1663ffffffff1681526020019081526020015f205f015f9054906101000a900463ffffffff1663ffffffff1611610a3e5760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f600183610a1991906125cc565b63ffffffff1663ffffffff1681526020019081526020015f2060010154915050610c4b565b8260045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8063ffffffff1681526020019081526020015f205f015f9054906101000a900463ffffffff1663ffffffff161115610ab8575f915050610c4b565b5f80600183610ac791906125cc565b90505b8163ffffffff168163ffffffff161115610be9575f60028383610aed91906125cc565b610af79190612630565b82610b0291906125cc565b90505f60045f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8363ffffffff1663ffffffff1681526020019081526020015f206040518060400160405290815f82015f9054906101000a900463ffffffff1663ffffffff1663ffffffff168152602001600182015481525050905086815f015163ffffffff1603610bb957806020015195505050505050610c4b565b86815f015163ffffffff161015610bd257819350610be2565b600182610bdf91906125cc565b92505b5050610aca565b60045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8363ffffffff1663ffffffff1681526020019081526020015f206001015493505050505b92915050565b6006602052805f5260405f205f915090505481565b6040518060400160405280600481526020017f4254565a0000000000000000000000000000000000000000000000000000000081525081565b5f80829050610caf33858361153f565b600191505092915050565b5f8060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900463ffffffff1690505f8163ffffffff1611610d1e575f610d87565b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f600183610d6991906125cc565b63ffffffff1663ffffffff1681526020019081526020015f20600101545b915050919050565b5f7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8666040518060400160405280600d81526020017f42697476697a7920546f6b656e0000000000000000000000000000000000000081525080519060200120610df6611a22565b30604051602001610e0a9493929190612660565b6040516020818303038152906040528051906020012090505f7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf888888604051602001610e5a94939291906126a3565b6040516020818303038152906040528051906020012090505f8282604051602001610e8692919061275a565b6040516020818303038152906040528051906020012090505f6001828888886040515f8152602001604052604051610ec19493929190612790565b6020604051602081039080840390855afa158015610ee1573d5f803e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5290612843565b60405180910390fd5b60065f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190610fa890612861565b919050558914610fed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe490612918565b60405180910390fd5b87421115611030576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611027906129a6565b60405180910390fd5b61103a818b611884565b50505050505050505050565b5f8590505f7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8666040518060400160405280600d81526020017f42697476697a7920546f6b656e00000000000000000000000000000000000000815250805190602001206110b1611a22565b306040516020016110c59493929190612660565b6040516020818303038152906040528051906020012090505f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a60065f8f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f81548092919061114f90612861565b919050558b604051602001611169969594939291906129c4565b6040516020818303038152906040528051906020012090505f828260405160200161119592919061275a565b6040516020818303038152906040528051906020012090505f6001828989896040515f81526020016040526040516111d09493929190612790565b6020604051602081039080840390855afa1580156111f0573d5f803e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361126a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126190612a6d565b60405180910390fd5b8b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146112d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cf90612ad5565b60405180910390fd5b8842111561131b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131290612b3d565b60405180910390fd5b8460015f8e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925876040516113f59190612172565b60405180910390a3505050505050505050505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b6004602052815f5260405f20602052805f5260405f205f9150915050805f015f9054906101000a900463ffffffff16908060010154905082565b5f838311158290611532576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115299190612041565b60405180910390fd5b5082840390509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a490612bcb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361161b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161290612c59565b60405180910390fd5b61168581604051806060016040528060378152602001612d3c6037913960025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546114eb9092919063ffffffff16565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506117168160025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611a2990919063ffffffff16565b60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516117b49190612172565b60405180910390a361187f60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611a3e565b505050565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508260035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a4611a1c828483611a3e565b50505050565b5f46905090565b5f8183611a369190612c77565b905092915050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a7957505f81115b15611ccf575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611ba6575f60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900463ffffffff1690505f808263ffffffff1611611b15575f611b7e565b60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f600184611b6091906125cc565b63ffffffff1663ffffffff1681526020019081526020015f20600101545b90505f611b948483611cd490919063ffffffff16565b9050611ba286848484611ce9565b5050505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611cce575f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900463ffffffff1690505f808263ffffffff1611611c3d575f611ca6565b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f600184611c8891906125cc565b63ffffffff1663ffffffff1681526020019081526020015f20600101545b90505f611cbc8483611a2990919063ffffffff16565b9050611cca85848484611ce9565b5050505b5b505050565b5f8183611ce19190612caa565b905092915050565b5f611d0c43604051806060016040528060358152602001612db160359139611f7c565b90505f8463ffffffff16118015611da357508063ffffffff1660045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f600187611d7091906125cc565b63ffffffff1663ffffffff1681526020019081526020015f205f015f9054906101000a900463ffffffff1663ffffffff16145b15611e19578160045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f600187611df491906125cc565b63ffffffff1663ffffffff1681526020019081526020015f2060010181905550611f25565b60405180604001604052808263ffffffff1681526020018381525060045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8663ffffffff1663ffffffff1681526020019081526020015f205f820151815f015f6101000a81548163ffffffff021916908363ffffffff16021790555060208201518160010155905050600184611eca9190612cdd565b60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548163ffffffff021916908363ffffffff1602179055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248484604051611f6d929190612d14565b60405180910390a25050505050565b5f64010000000083108290611fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbe9190612041565b60405180910390fd5b5082905092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61201382611fd1565b61201d8185611fdb565b935061202d818560208601611feb565b61203681611ff9565b840191505092915050565b5f6020820190508181035f8301526120598184612009565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61208e82612065565b9050919050565b61209e81612084565b81146120a8575f80fd5b50565b5f813590506120b981612095565b92915050565b5f819050919050565b6120d1816120bf565b81146120db575f80fd5b50565b5f813590506120ec816120c8565b92915050565b5f806040838503121561210857612107612061565b5b5f612115858286016120ab565b9250506020612126858286016120de565b9150509250929050565b5f8115159050919050565b61214481612130565b82525050565b5f60208201905061215d5f83018461213b565b92915050565b61216c816120bf565b82525050565b5f6020820190506121855f830184612163565b92915050565b5f819050919050565b61219d8161218b565b82525050565b5f6020820190506121b65f830184612194565b92915050565b5f805f606084860312156121d3576121d2612061565b5b5f6121e0868287016120ab565b93505060206121f1868287016120ab565b9250506040612202868287016120de565b9150509250925092565b5f60ff82169050919050565b6122218161220c565b82525050565b5f60208201905061223a5f830184612218565b92915050565b5f6020828403121561225557612254612061565b5b5f612262848285016120ab565b91505092915050565b61227481612084565b82525050565b5f60208201905061228d5f83018461226b565b92915050565b5f63ffffffff82169050919050565b6122ab81612293565b82525050565b5f6020820190506122c45f8301846122a2565b92915050565b6122d38161220c565b81146122dd575f80fd5b50565b5f813590506122ee816122ca565b92915050565b6122fd8161218b565b8114612307575f80fd5b50565b5f81359050612318816122f4565b92915050565b5f805f805f8060c0878903121561233857612337612061565b5b5f61234589828a016120ab565b965050602061235689828a016120de565b955050604061236789828a016120de565b945050606061237889828a016122e0565b935050608061238989828a0161230a565b92505060a061239a89828a0161230a565b9150509295509295509295565b5f805f805f805f60e0888a0312156123c2576123c1612061565b5b5f6123cf8a828b016120ab565b97505060206123e08a828b016120ab565b96505060406123f18a828b016120de565b95505060606124028a828b016120de565b94505060806124138a828b016122e0565b93505060a06124248a828b0161230a565b92505060c06124358a828b0161230a565b91505092959891949750929550565b5f806040838503121561245a57612459612061565b5b5f612467858286016120ab565b9250506020612478858286016120ab565b9150509250929050565b61248b81612293565b8114612495575f80fd5b50565b5f813590506124a681612482565b92915050565b5f80604083850312156124c2576124c1612061565b5b5f6124cf858286016120ab565b92505060206124e085828601612498565b9150509250929050565b5f6040820190506124fd5f8301856122a2565b61250a6020830184612163565b9392505050565b7f546f6b656e3a3a6765745072696f72566f7465733a206e6f74207965742064655f8201527f7465726d696e6564000000000000000000000000000000000000000000000000602082015250565b5f61256b602883611fdb565b915061257682612511565b604082019050919050565b5f6020820190508181035f8301526125988161255f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6125d682612293565b91506125e183612293565b9250828203905063ffffffff8111156125fd576125fc61259f565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61263a82612293565b915061264583612293565b92508261265557612654612603565b5b828204905092915050565b5f6080820190506126735f830187612194565b6126806020830186612194565b61268d6040830185612163565b61269a606083018461226b565b95945050505050565b5f6080820190506126b65f830187612194565b6126c3602083018661226b565b6126d06040830185612163565b6126dd6060830184612163565b95945050505050565b5f81905092915050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f6127246002836126e6565b915061272f826126f0565b600282019050919050565b5f819050919050565b61275461274f8261218b565b61273a565b82525050565b5f61276482612718565b91506127708285612743565b6020820191506127808284612743565b6020820191508190509392505050565b5f6080820190506127a35f830187612194565b6127b06020830186612218565b6127bd6040830185612194565b6127ca6060830184612194565b95945050505050565b7f546f6b656e3a3a64656c656761746542795369673a20696e76616c69642073695f8201527f676e617475726500000000000000000000000000000000000000000000000000602082015250565b5f61282d602783611fdb565b9150612838826127d3565b604082019050919050565b5f6020820190508181035f83015261285a81612821565b9050919050565b5f61286b826120bf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361289d5761289c61259f565b5b600182019050919050565b7f546f6b656e3a3a64656c656761746542795369673a20696e76616c6964206e6f5f8201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b5f612902602383611fdb565b915061290d826128a8565b604082019050919050565b5f6020820190508181035f83015261292f816128f6565b9050919050565b7f546f6b656e3a3a64656c656761746542795369673a207369676e6174757265205f8201527f6578706972656400000000000000000000000000000000000000000000000000602082015250565b5f612990602783611fdb565b915061299b82612936565b604082019050919050565b5f6020820190508181035f8301526129bd81612984565b9050919050565b5f60c0820190506129d75f830189612194565b6129e4602083018861226b565b6129f1604083018761226b565b6129fe6060830186612163565b612a0b6080830185612163565b612a1860a0830184612163565b979650505050505050565b7f546f6b656e3a3a7065726d69743a20696e76616c6964207369676e61747572655f82015250565b5f612a57602083611fdb565b9150612a6282612a23565b602082019050919050565b5f6020820190508181035f830152612a8481612a4b565b9050919050565b7f546f6b656e3a3a7065726d69743a20756e617574686f72697a656400000000005f82015250565b5f612abf601b83611fdb565b9150612aca82612a8b565b602082019050919050565b5f6020820190508181035f830152612aec81612ab3565b9050919050565b7f546f6b656e3a3a7065726d69743a207369676e617475726520657870697265645f82015250565b5f612b27602083611fdb565b9150612b3282612af3565b602082019050919050565b5f6020820190508181035f830152612b5481612b1b565b9050919050565b7f546f6b656e3a3a5f7472616e73666572546f6b656e733a2063616e6e6f7420745f8201527f72616e736665722066726f6d20746865207a65726f2061646472657373000000602082015250565b5f612bb5603d83611fdb565b9150612bc082612b5b565b604082019050919050565b5f6020820190508181035f830152612be281612ba9565b9050919050565b7f546f6b656e3a3a5f7472616e73666572546f6b656e733a2063616e6e6f7420745f8201527f72616e7366657220746f20746865207a65726f20616464726573730000000000602082015250565b5f612c43603b83611fdb565b9150612c4e82612be9565b604082019050919050565b5f6020820190508181035f830152612c7081612c37565b9050919050565b5f612c81826120bf565b9150612c8c836120bf565b9250828201905080821115612ca457612ca361259f565b5b92915050565b5f612cb4826120bf565b9150612cbf836120bf565b9250828203905081811115612cd757612cd661259f565b5b92915050565b5f612ce782612293565b9150612cf283612293565b9250828201905063ffffffff811115612d0e57612d0d61259f565b5b92915050565b5f604082019050612d275f830185612163565b612d346020830184612163565b939250505056fe546f6b656e3a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e6365546f6b656e3a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365546f6b656e3a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473a264697066735822122000de0521ef7a8efa9c1859ec607521ccf37af86a1560af917a92e3dd5bd5899b64736f6c63430008190033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000c7f96f97e557b89f3511434da58a895d857a6c19
-----Decoded View---------------
Arg [0] : account (address): 0xC7F96f97E557B89F3511434Da58a895D857a6C19
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000c7f96f97e557b89f3511434da58a895d857a6c19
Deployed Bytecode Sourcemap
6838:13860:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6945:45;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10866:252;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7251:46;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8186:122;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13595:634;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8609:137;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7152:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7635:45;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14377:104;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8064:49;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12718:111;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16582:1225;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8827:42;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7051:38;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13093:192;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15928:223;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14915:812;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11609:906;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10249:139;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8402:117;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7925:70;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;6945:45;;;;;;;;;;;;;;;;;;;:::o;10866:252::-;10937:4;10954:14;10971:9;10954:26;;11027:6;10993:10;:22;11004:10;10993:22;;;;;;;;;;;;;;;:31;11016:7;10993:31;;;;;;;;;;;;;;;:40;;;;11072:7;11051:37;;11060:10;11051:37;;;11081:6;11051:37;;;;;;:::i;:::-;;;;;;;;11106:4;11099:11;;;10866:252;;;;:::o;7251:46::-;;;;:::o;8186:122::-;8228:80;8186:122;:::o;13595:634::-;13680:4;13697:15;13715:10;13697:28;;13736:24;13763:10;:15;13774:3;13763:15;;;;;;;;;;;;;;;:24;13779:7;13763:24;;;;;;;;;;;;;;;;13736:51;;13798:14;13815:9;13798:26;;13852:3;13841:14;;:7;:14;;;;:55;;;;;13879:17;13859:16;:37;;13841:55;13837:317;;;13913:20;13936:94;13957:6;13936:94;;;;;;;;;;;;;;;;;:16;:20;;:94;;;;;:::i;:::-;13913:117;;14072:12;14045:10;:15;14056:3;14045:15;;;;;;;;;;;;;;;:24;14061:7;14045:24;;;;;;;;;;;;;;;:39;;;;14120:7;14106:36;;14115:3;14106:36;;;14129:12;14106:36;;;;;;:::i;:::-;;;;;;;;13898:256;13837:317;14166:33;14182:3;14187;14192:6;14166:15;:33::i;:::-;14217:4;14210:11;;;;;13595:634;;;;;:::o;8609:137::-;8651:95;8609:137;:::o;7152:35::-;7185:2;7152:35;:::o;7635:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;14377:104::-;14441:32;14451:10;14463:9;14441;:32::i;:::-;14377:104;:::o;8064:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;12718:111::-;12777:7;12804:8;:17;12813:7;12804:17;;;;;;;;;;;;;;;;12797:24;;12718:111;;;:::o;16582:1225::-;16666:7;16708:12;16694:11;:26;16686:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;16778:19;16800:14;:23;16815:7;16800:23;;;;;;;;;;;;;;;;;;;;;;;;;16778:45;;16854:1;16838:12;:17;;;16834:58;;16879:1;16872:8;;;;;16834:58;17004:11;16952;:20;16964:7;16952:20;;;;;;;;;;;;;;;:38;16988:1;16973:12;:16;;;;:::i;:::-;16952:38;;;;;;;;;;;;;;;:48;;;;;;;;;;;;:63;;;16948:147;;17039:11;:20;17051:7;17039:20;;;;;;;;;;;;;;;:38;17075:1;17060:12;:16;;;;:::i;:::-;17039:38;;;;;;;;;;;;;;;:44;;;17032:51;;;;;16948:147;17192:11;17156;:20;17168:7;17156:20;;;;;;;;;;;;;;;:23;17177:1;17156:23;;;;;;;;;;;;;:33;;;;;;;;;;;;:47;;;17152:88;;;17227:1;17220:8;;;;;17152:88;17252:12;17279;17309:1;17294:12;:16;;;;:::i;:::-;17279:31;;17321:428;17336:5;17328:13;;:5;:13;;;17321:428;;;17358:13;17400:1;17391:5;17383;:13;;;;:::i;:::-;17382:19;;;;:::i;:::-;17374:5;:27;;;;:::i;:::-;17358:43;;17443:20;17466:11;:20;17478:7;17466:20;;;;;;;;;;;;;;;:28;17487:6;17466:28;;;;;;;;;;;;;;;17443:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17529:11;17513:2;:12;;;:27;;;17509:229;;17568:2;:8;;;17561:15;;;;;;;;;17509:229;17617:11;17602:2;:12;;;:26;;;17598:140;;;17657:6;17649:14;;17598:140;;;17721:1;17712:6;:10;;;;:::i;:::-;17704:18;;17598:140;17343:406;;17321:428;;;17766:11;:20;17778:7;17766:20;;;;;;;;;;;;;;;:27;17787:5;17766:27;;;;;;;;;;;;;;;:33;;;17759:40;;;;;16582:1225;;;;;:::o;8827:42::-;;;;;;;;;;;;;;;;;:::o;7051:38::-;;;;;;;;;;;;;;;;;;;:::o;13093:192::-;13161:4;13178:14;13195:9;13178:26;;13215:40;13231:10;13243:3;13248:6;13215:15;:40::i;:::-;13273:4;13266:11;;;13093:192;;;;:::o;15928:223::-;15993:7;16013:19;16035:14;:23;16050:7;16035:23;;;;;;;;;;;;;;;;;;;;;;;;;16013:45;;16091:1;16076:12;:16;;;:67;;16142:1;16076:67;;;16095:11;:20;16107:7;16095:20;;;;;;;;;;;;;;;:38;16131:1;16116:12;:16;;;;:::i;:::-;16095:38;;;;;;;;;;;;;;;:44;;;16076:67;16069:74;;;15928:223;;;:::o;14915:812::-;15039:23;8228:80;15119:4;;;;;;;;;;;;;;;;;15103:22;;;;;;15127:12;:10;:12::i;:::-;15149:4;15075:80;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;15065:91;;;;;;15039:117;;15167:18;8448:71;15230:9;15241:5;15248:6;15198:57;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;15188:68;;;;;;15167:89;;15267:14;15323:15;15340:10;15294:57;;;;;;;;;:::i;:::-;;;;;;;;;;;;;15284:68;;;;;;15267:85;;15363:17;15383:26;15393:6;15401:1;15404;15407;15383:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15363:46;;15449:1;15428:23;;:9;:23;;;15420:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;15523:6;:17;15530:9;15523:17;;;;;;;;;;;;;;;;:19;;;;;;;;;:::i;:::-;;;;;15514:5;:28;15506:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;15620:6;15601:15;:25;;15593:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;15688:31;15698:9;15709;15688;:31::i;:::-;15681:38;;;;14915:812;;;;;;:::o;11609:906::-;11745:14;11762:9;11745:26;;11784:23;8228:80;11864:4;;;;;;;;;;;;;;;;;11848:22;;;;;;11872:12;:10;:12::i;:::-;11894:4;11820:80;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;11810:91;;;;;;11784:117;;11912:18;8651:95;11971:5;11978:7;11987:9;11998:6;:13;12005:5;11998:13;;;;;;;;;;;;;;;;:15;;;;;;;;;:::i;:::-;;;;;12015:8;11943:81;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;11933:92;;;;;;11912:113;;12036:14;12092:15;12109:10;12063:57;;;;;;;;;:::i;:::-;;;;;;;;;;;;;12053:68;;;;;;12036:85;;12132:17;12152:26;12162:6;12170:1;12173;12176;12152:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12132:46;;12218:1;12197:23;;:9;:23;;;12189:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12289:5;12276:18;;:9;:18;;;12268:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;12364:8;12345:15;:27;;12337:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;12451:6;12422:10;:17;12433:5;12422:17;;;;;;;;;;;;;;;:26;12440:7;12422:26;;;;;;;;;;;;;;;:35;;;;12491:7;12475:32;;12484:5;12475:32;;;12500:6;12475:32;;;;;;:::i;:::-;;;;;;;;11734:781;;;;;11609:906;;;;;;;:::o;10249:139::-;10325:7;10352:10;:19;10363:7;10352:19;;;;;;;;;;;;;;;:28;10372:7;10352:28;;;;;;;;;;;;;;;;10345:35;;10249:139;;;;:::o;8402:117::-;8448:71;8402:117;:::o;7925:70::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5052:206::-;5138:7;5196:1;5191;:6;;5199:12;5183:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5238:1;5234;:5;5227:12;;5052:206;;;;;:::o;18251:560::-;18361:1;18346:17;;:3;:17;;;18338:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;18463:1;18448:17;;:3;:17;;;18440:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;18558:84;18576:6;18558:84;;;;;;;;;;;;;;;;;:8;:13;18567:3;18558:13;;;;;;;;;;;;;;;;:17;;:84;;;;;:::i;:::-;18542:8;:13;18551:3;18542:13;;;;;;;;;;;;;;;:100;;;;18669:25;18687:6;18669:8;:13;18678:3;18669:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;18653:8;:13;18662:3;18653:13;;;;;;;;;;;;;;;:41;;;;18724:3;18710:26;;18719:3;18710:26;;;18729:6;18710:26;;;;;;:::i;:::-;;;;;;;;18749:54;18764:9;:14;18774:3;18764:14;;;;;;;;;;;;;;;;;;;;;;;;;18780:9;:14;18790:3;18780:14;;;;;;;;;;;;;;;;;;;;;;;;;18796:6;18749:14;:54::i;:::-;18251:560;;;:::o;17815:428::-;17892:23;17918:9;:20;17928:9;17918:20;;;;;;;;;;;;;;;;;;;;;;;;;17892:46;;17949:24;17976:8;:19;17985:9;17976:19;;;;;;;;;;;;;;;;17949:46;;18081:9;18058;:20;18068:9;18058:20;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;18152:9;18108:54;;18135:15;18108:54;;18124:9;18108:54;;;;;;;;;;;;18175:60;18190:15;18207:9;18218:16;18175:14;:60::i;:::-;17881:362;;17815:428;;:::o;20602:93::-;20647:7;20674:13;20667:20;;20602:93;:::o;2773:98::-;2831:7;2862:1;2858;:5;;;;:::i;:::-;2851:12;;2773:98;;;;:::o;18819:947::-;18925:6;18915:16;;:6;:16;;;;:30;;;;;18944:1;18935:6;:10;18915:30;18911:848;;;18984:1;18966:20;;:6;:20;;;18962:385;;19055:16;19074:14;:22;19089:6;19074:22;;;;;;;;;;;;;;;;;;;;;;;;;19055:41;;19115:17;19147:1;19135:9;:13;;;:60;;19194:1;19135:60;;;19151:11;:19;19163:6;19151:19;;;;;;;;;;;;;;;:34;19183:1;19171:9;:13;;;;:::i;:::-;19151:34;;;;;;;;;;;;;;;:40;;;19135:60;19115:80;;19214:17;19234:21;19248:6;19234:9;:13;;:21;;;;:::i;:::-;19214:41;;19274:57;19291:6;19299:9;19310;19321;19274:16;:57::i;:::-;18988:359;;;18962:385;19385:1;19367:20;;:6;:20;;;19363:385;;19456:16;19475:14;:22;19490:6;19475:22;;;;;;;;;;;;;;;;;;;;;;;;;19456:41;;19516:17;19548:1;19536:9;:13;;;:60;;19595:1;19536:60;;;19552:11;:19;19564:6;19552:19;;;;;;;;;;;;;;;:34;19584:1;19572:9;:13;;;;:::i;:::-;19552:34;;;;;;;;;;;;;;;:40;;;19536:60;19516:80;;19615:17;19635:21;19649:6;19635:9;:13;;:21;;;;:::i;:::-;19615:41;;19675:57;19692:6;19700:9;19711;19722;19675:16;:57::i;:::-;19389:359;;;19363:385;18911:848;18819:947;;;:::o;3154:98::-;3212:7;3243:1;3239;:5;;;;:::i;:::-;3232:12;;3154:98;;;;:::o;19774:648::-;19896:18;19917:77;19924:12;19917:77;;;;;;;;;;;;;;;;;:6;:77::i;:::-;19896:98;;20026:1;20011:12;:16;;;:85;;;;;20085:11;20031:65;;:11;:22;20043:9;20031:22;;;;;;;;;;;;;;;:40;20069:1;20054:12;:16;;;;:::i;:::-;20031:40;;;;;;;;;;;;;;;:50;;;;;;;;;;;;:65;;;20011:85;20007:339;;;20162:8;20113:11;:22;20125:9;20113:22;;;;;;;;;;;;;;;:40;20151:1;20136:12;:16;;;;:::i;:::-;20113:40;;;;;;;;;;;;;;;:46;;:57;;;;20007:339;;;20242:33;;;;;;;;20253:11;20242:33;;;;;;20266:8;20242:33;;;20203:11;:22;20215:9;20203:22;;;;;;;;;;;;;;;:36;20226:12;20203:36;;;;;;;;;;;;;;;:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20333:1;20318:12;:16;;;;:::i;:::-;20290:14;:25;20305:9;20290:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;20007:339;20384:9;20363:51;;;20395:8;20405;20363:51;;;;;;;:::i;:::-;;;;;;;;19885:537;19774:648;;;;:::o;20430:164::-;20508:6;20539:5;20535:1;:9;20546:12;20527:32;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;20584:1;20570:16;;20430:164;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:77::-;3728:7;3757:5;3746:16;;3691:77;;;:::o;3774:118::-;3861:24;3879:5;3861:24;:::i;:::-;3856:3;3849:37;3774:118;;:::o;3898:222::-;3991:4;4029:2;4018:9;4014:18;4006:26;;4042:71;4110:1;4099:9;4095:17;4086:6;4042:71;:::i;:::-;3898:222;;;;:::o;4126:619::-;4203:6;4211;4219;4268:2;4256:9;4247:7;4243:23;4239:32;4236:119;;;4274:79;;:::i;:::-;4236:119;4394:1;4419:53;4464:7;4455:6;4444:9;4440:22;4419:53;:::i;:::-;4409:63;;4365:117;4521:2;4547:53;4592:7;4583:6;4572:9;4568:22;4547:53;:::i;:::-;4537:63;;4492:118;4649:2;4675:53;4720:7;4711:6;4700:9;4696:22;4675:53;:::i;:::-;4665:63;;4620:118;4126:619;;;;;:::o;4751:86::-;4786:7;4826:4;4819:5;4815:16;4804:27;;4751:86;;;:::o;4843:112::-;4926:22;4942:5;4926:22;:::i;:::-;4921:3;4914:35;4843:112;;:::o;4961:214::-;5050:4;5088:2;5077:9;5073:18;5065:26;;5101:67;5165:1;5154:9;5150:17;5141:6;5101:67;:::i;:::-;4961:214;;;;:::o;5181:329::-;5240:6;5289:2;5277:9;5268:7;5264:23;5260:32;5257:119;;;5295:79;;:::i;:::-;5257:119;5415:1;5440:53;5485:7;5476:6;5465:9;5461:22;5440:53;:::i;:::-;5430:63;;5386:117;5181:329;;;;:::o;5516:118::-;5603:24;5621:5;5603:24;:::i;:::-;5598:3;5591:37;5516:118;;:::o;5640:222::-;5733:4;5771:2;5760:9;5756:18;5748:26;;5784:71;5852:1;5841:9;5837:17;5828:6;5784:71;:::i;:::-;5640:222;;;;:::o;5868:93::-;5904:7;5944:10;5937:5;5933:22;5922:33;;5868:93;;;:::o;5967:115::-;6052:23;6069:5;6052:23;:::i;:::-;6047:3;6040:36;5967:115;;:::o;6088:218::-;6179:4;6217:2;6206:9;6202:18;6194:26;;6230:69;6296:1;6285:9;6281:17;6272:6;6230:69;:::i;:::-;6088:218;;;;:::o;6312:118::-;6383:22;6399:5;6383:22;:::i;:::-;6376:5;6373:33;6363:61;;6420:1;6417;6410:12;6363:61;6312:118;:::o;6436:135::-;6480:5;6518:6;6505:20;6496:29;;6534:31;6559:5;6534:31;:::i;:::-;6436:135;;;;:::o;6577:122::-;6650:24;6668:5;6650:24;:::i;:::-;6643:5;6640:35;6630:63;;6689:1;6686;6679:12;6630:63;6577:122;:::o;6705:139::-;6751:5;6789:6;6776:20;6767:29;;6805:33;6832:5;6805:33;:::i;:::-;6705:139;;;;:::o;6850:1053::-;6952:6;6960;6968;6976;6984;6992;7041:3;7029:9;7020:7;7016:23;7012:33;7009:120;;;7048:79;;:::i;:::-;7009:120;7168:1;7193:53;7238:7;7229:6;7218:9;7214:22;7193:53;:::i;:::-;7183:63;;7139:117;7295:2;7321:53;7366:7;7357:6;7346:9;7342:22;7321:53;:::i;:::-;7311:63;;7266:118;7423:2;7449:53;7494:7;7485:6;7474:9;7470:22;7449:53;:::i;:::-;7439:63;;7394:118;7551:2;7577:51;7620:7;7611:6;7600:9;7596:22;7577:51;:::i;:::-;7567:61;;7522:116;7677:3;7704:53;7749:7;7740:6;7729:9;7725:22;7704:53;:::i;:::-;7694:63;;7648:119;7806:3;7833:53;7878:7;7869:6;7858:9;7854:22;7833:53;:::i;:::-;7823:63;;7777:119;6850:1053;;;;;;;;:::o;7909:1199::-;8020:6;8028;8036;8044;8052;8060;8068;8117:3;8105:9;8096:7;8092:23;8088:33;8085:120;;;8124:79;;:::i;:::-;8085:120;8244:1;8269:53;8314:7;8305:6;8294:9;8290:22;8269:53;:::i;:::-;8259:63;;8215:117;8371:2;8397:53;8442:7;8433:6;8422:9;8418:22;8397:53;:::i;:::-;8387:63;;8342:118;8499:2;8525:53;8570:7;8561:6;8550:9;8546:22;8525:53;:::i;:::-;8515:63;;8470:118;8627:2;8653:53;8698:7;8689:6;8678:9;8674:22;8653:53;:::i;:::-;8643:63;;8598:118;8755:3;8782:51;8825:7;8816:6;8805:9;8801:22;8782:51;:::i;:::-;8772:61;;8726:117;8882:3;8909:53;8954:7;8945:6;8934:9;8930:22;8909:53;:::i;:::-;8899:63;;8853:119;9011:3;9038:53;9083:7;9074:6;9063:9;9059:22;9038:53;:::i;:::-;9028:63;;8982:119;7909:1199;;;;;;;;;;:::o;9114:474::-;9182:6;9190;9239:2;9227:9;9218:7;9214:23;9210:32;9207:119;;;9245:79;;:::i;:::-;9207:119;9365:1;9390:53;9435:7;9426:6;9415:9;9411:22;9390:53;:::i;:::-;9380:63;;9336:117;9492:2;9518:53;9563:7;9554:6;9543:9;9539:22;9518:53;:::i;:::-;9508:63;;9463:118;9114:474;;;;;:::o;9594:120::-;9666:23;9683:5;9666:23;:::i;:::-;9659:5;9656:34;9646:62;;9704:1;9701;9694:12;9646:62;9594:120;:::o;9720:137::-;9765:5;9803:6;9790:20;9781:29;;9819:32;9845:5;9819:32;:::i;:::-;9720:137;;;;:::o;9863:472::-;9930:6;9938;9987:2;9975:9;9966:7;9962:23;9958:32;9955:119;;;9993:79;;:::i;:::-;9955:119;10113:1;10138:53;10183:7;10174:6;10163:9;10159:22;10138:53;:::i;:::-;10128:63;;10084:117;10240:2;10266:52;10310:7;10301:6;10290:9;10286:22;10266:52;:::i;:::-;10256:62;;10211:117;9863:472;;;;;:::o;10341:328::-;10460:4;10498:2;10487:9;10483:18;10475:26;;10511:69;10577:1;10566:9;10562:17;10553:6;10511:69;:::i;:::-;10590:72;10658:2;10647:9;10643:18;10634:6;10590:72;:::i;:::-;10341:328;;;;;:::o;10675:227::-;10815:34;10811:1;10803:6;10799:14;10792:58;10884:10;10879:2;10871:6;10867:15;10860:35;10675:227;:::o;10908:366::-;11050:3;11071:67;11135:2;11130:3;11071:67;:::i;:::-;11064:74;;11147:93;11236:3;11147:93;:::i;:::-;11265:2;11260:3;11256:12;11249:19;;10908:366;;;:::o;11280:419::-;11446:4;11484:2;11473:9;11469:18;11461:26;;11533:9;11527:4;11523:20;11519:1;11508:9;11504:17;11497:47;11561:131;11687:4;11561:131;:::i;:::-;11553:139;;11280:419;;;:::o;11705:180::-;11753:77;11750:1;11743:88;11850:4;11847:1;11840:15;11874:4;11871:1;11864:15;11891:200;11930:4;11950:19;11967:1;11950:19;:::i;:::-;11945:24;;11983:19;12000:1;11983:19;:::i;:::-;11978:24;;12026:1;12023;12019:9;12011:17;;12050:10;12044:4;12041:20;12038:46;;;12064:18;;:::i;:::-;12038:46;11891:200;;;;:::o;12097:180::-;12145:77;12142:1;12135:88;12242:4;12239:1;12232:15;12266:4;12263:1;12256:15;12283:182;12322:1;12339:19;12356:1;12339:19;:::i;:::-;12334:24;;12372:19;12389:1;12372:19;:::i;:::-;12367:24;;12410:1;12400:35;;12415:18;;:::i;:::-;12400:35;12457:1;12454;12450:9;12445:14;;12283:182;;;;:::o;12471:553::-;12648:4;12686:3;12675:9;12671:19;12663:27;;12700:71;12768:1;12757:9;12753:17;12744:6;12700:71;:::i;:::-;12781:72;12849:2;12838:9;12834:18;12825:6;12781:72;:::i;:::-;12863;12931:2;12920:9;12916:18;12907:6;12863:72;:::i;:::-;12945;13013:2;13002:9;12998:18;12989:6;12945:72;:::i;:::-;12471:553;;;;;;;:::o;13030:::-;13207:4;13245:3;13234:9;13230:19;13222:27;;13259:71;13327:1;13316:9;13312:17;13303:6;13259:71;:::i;:::-;13340:72;13408:2;13397:9;13393:18;13384:6;13340:72;:::i;:::-;13422;13490:2;13479:9;13475:18;13466:6;13422:72;:::i;:::-;13504;13572:2;13561:9;13557:18;13548:6;13504:72;:::i;:::-;13030:553;;;;;;;:::o;13589:148::-;13691:11;13728:3;13713:18;;13589:148;;;;:::o;13743:214::-;13883:66;13879:1;13871:6;13867:14;13860:90;13743:214;:::o;13963:400::-;14123:3;14144:84;14226:1;14221:3;14144:84;:::i;:::-;14137:91;;14237:93;14326:3;14237:93;:::i;:::-;14355:1;14350:3;14346:11;14339:18;;13963:400;;;:::o;14369:79::-;14408:7;14437:5;14426:16;;14369:79;;;:::o;14454:157::-;14559:45;14579:24;14597:5;14579:24;:::i;:::-;14559:45;:::i;:::-;14554:3;14547:58;14454:157;;:::o;14617:663::-;14858:3;14880:148;15024:3;14880:148;:::i;:::-;14873:155;;15038:75;15109:3;15100:6;15038:75;:::i;:::-;15138:2;15133:3;15129:12;15122:19;;15151:75;15222:3;15213:6;15151:75;:::i;:::-;15251:2;15246:3;15242:12;15235:19;;15271:3;15264:10;;14617:663;;;;;:::o;15286:545::-;15459:4;15497:3;15486:9;15482:19;15474:27;;15511:71;15579:1;15568:9;15564:17;15555:6;15511:71;:::i;:::-;15592:68;15656:2;15645:9;15641:18;15632:6;15592:68;:::i;:::-;15670:72;15738:2;15727:9;15723:18;15714:6;15670:72;:::i;:::-;15752;15820:2;15809:9;15805:18;15796:6;15752:72;:::i;:::-;15286:545;;;;;;;:::o;15837:226::-;15977:34;15973:1;15965:6;15961:14;15954:58;16046:9;16041:2;16033:6;16029:15;16022:34;15837:226;:::o;16069:366::-;16211:3;16232:67;16296:2;16291:3;16232:67;:::i;:::-;16225:74;;16308:93;16397:3;16308:93;:::i;:::-;16426:2;16421:3;16417:12;16410:19;;16069:366;;;:::o;16441:419::-;16607:4;16645:2;16634:9;16630:18;16622:26;;16694:9;16688:4;16684:20;16680:1;16669:9;16665:17;16658:47;16722:131;16848:4;16722:131;:::i;:::-;16714:139;;16441:419;;;:::o;16866:233::-;16905:3;16928:24;16946:5;16928:24;:::i;:::-;16919:33;;16974:66;16967:5;16964:77;16961:103;;17044:18;;:::i;:::-;16961:103;17091:1;17084:5;17080:13;17073:20;;16866:233;;;:::o;17105:222::-;17245:34;17241:1;17233:6;17229:14;17222:58;17314:5;17309:2;17301:6;17297:15;17290:30;17105:222;:::o;17333:366::-;17475:3;17496:67;17560:2;17555:3;17496:67;:::i;:::-;17489:74;;17572:93;17661:3;17572:93;:::i;:::-;17690:2;17685:3;17681:12;17674:19;;17333:366;;;:::o;17705:419::-;17871:4;17909:2;17898:9;17894:18;17886:26;;17958:9;17952:4;17948:20;17944:1;17933:9;17929:17;17922:47;17986:131;18112:4;17986:131;:::i;:::-;17978:139;;17705:419;;;:::o;18130:226::-;18270:34;18266:1;18258:6;18254:14;18247:58;18339:9;18334:2;18326:6;18322:15;18315:34;18130:226;:::o;18362:366::-;18504:3;18525:67;18589:2;18584:3;18525:67;:::i;:::-;18518:74;;18601:93;18690:3;18601:93;:::i;:::-;18719:2;18714:3;18710:12;18703:19;;18362:366;;;:::o;18734:419::-;18900:4;18938:2;18927:9;18923:18;18915:26;;18987:9;18981:4;18977:20;18973:1;18962:9;18958:17;18951:47;19015:131;19141:4;19015:131;:::i;:::-;19007:139;;18734:419;;;:::o;19159:775::-;19392:4;19430:3;19419:9;19415:19;19407:27;;19444:71;19512:1;19501:9;19497:17;19488:6;19444:71;:::i;:::-;19525:72;19593:2;19582:9;19578:18;19569:6;19525:72;:::i;:::-;19607;19675:2;19664:9;19660:18;19651:6;19607:72;:::i;:::-;19689;19757:2;19746:9;19742:18;19733:6;19689:72;:::i;:::-;19771:73;19839:3;19828:9;19824:19;19815:6;19771:73;:::i;:::-;19854;19922:3;19911:9;19907:19;19898:6;19854:73;:::i;:::-;19159:775;;;;;;;;;:::o;19940:182::-;20080:34;20076:1;20068:6;20064:14;20057:58;19940:182;:::o;20128:366::-;20270:3;20291:67;20355:2;20350:3;20291:67;:::i;:::-;20284:74;;20367:93;20456:3;20367:93;:::i;:::-;20485:2;20480:3;20476:12;20469:19;;20128:366;;;:::o;20500:419::-;20666:4;20704:2;20693:9;20689:18;20681:26;;20753:9;20747:4;20743:20;20739:1;20728:9;20724:17;20717:47;20781:131;20907:4;20781:131;:::i;:::-;20773:139;;20500:419;;;:::o;20925:177::-;21065:29;21061:1;21053:6;21049:14;21042:53;20925:177;:::o;21108:366::-;21250:3;21271:67;21335:2;21330:3;21271:67;:::i;:::-;21264:74;;21347:93;21436:3;21347:93;:::i;:::-;21465:2;21460:3;21456:12;21449:19;;21108:366;;;:::o;21480:419::-;21646:4;21684:2;21673:9;21669:18;21661:26;;21733:9;21727:4;21723:20;21719:1;21708:9;21704:17;21697:47;21761:131;21887:4;21761:131;:::i;:::-;21753:139;;21480:419;;;:::o;21905:182::-;22045:34;22041:1;22033:6;22029:14;22022:58;21905:182;:::o;22093:366::-;22235:3;22256:67;22320:2;22315:3;22256:67;:::i;:::-;22249:74;;22332:93;22421:3;22332:93;:::i;:::-;22450:2;22445:3;22441:12;22434:19;;22093:366;;;:::o;22465:419::-;22631:4;22669:2;22658:9;22654:18;22646:26;;22718:9;22712:4;22708:20;22704:1;22693:9;22689:17;22682:47;22746:131;22872:4;22746:131;:::i;:::-;22738:139;;22465:419;;;:::o;22890:248::-;23030:34;23026:1;23018:6;23014:14;23007:58;23099:31;23094:2;23086:6;23082:15;23075:56;22890:248;:::o;23144:366::-;23286:3;23307:67;23371:2;23366:3;23307:67;:::i;:::-;23300:74;;23383:93;23472:3;23383:93;:::i;:::-;23501:2;23496:3;23492:12;23485:19;;23144:366;;;:::o;23516:419::-;23682:4;23720:2;23709:9;23705:18;23697:26;;23769:9;23763:4;23759:20;23755:1;23744:9;23740:17;23733:47;23797:131;23923:4;23797:131;:::i;:::-;23789:139;;23516:419;;;:::o;23941:246::-;24081:34;24077:1;24069:6;24065:14;24058:58;24150:29;24145:2;24137:6;24133:15;24126:54;23941:246;:::o;24193:366::-;24335:3;24356:67;24420:2;24415:3;24356:67;:::i;:::-;24349:74;;24432:93;24521:3;24432:93;:::i;:::-;24550:2;24545:3;24541:12;24534:19;;24193:366;;;:::o;24565:419::-;24731:4;24769:2;24758:9;24754:18;24746:26;;24818:9;24812:4;24808:20;24804:1;24793:9;24789:17;24782:47;24846:131;24972:4;24846:131;:::i;:::-;24838:139;;24565:419;;;:::o;24990:191::-;25030:3;25049:20;25067:1;25049:20;:::i;:::-;25044:25;;25083:20;25101:1;25083:20;:::i;:::-;25078:25;;25126:1;25123;25119:9;25112:16;;25147:3;25144:1;25141:10;25138:36;;;25154:18;;:::i;:::-;25138:36;24990:191;;;;:::o;25187:194::-;25227:4;25247:20;25265:1;25247:20;:::i;:::-;25242:25;;25281:20;25299:1;25281:20;:::i;:::-;25276:25;;25325:1;25322;25318:9;25310:17;;25349:1;25343:4;25340:11;25337:37;;;25354:18;;:::i;:::-;25337:37;25187:194;;;;:::o;25387:197::-;25426:3;25445:19;25462:1;25445:19;:::i;:::-;25440:24;;25478:19;25495:1;25478:19;:::i;:::-;25473:24;;25520:1;25517;25513:9;25506:16;;25543:10;25538:3;25535:19;25532:45;;;25557:18;;:::i;:::-;25532:45;25387:197;;;;:::o;25590:332::-;25711:4;25749:2;25738:9;25734:18;25726:26;;25762:71;25830:1;25819:9;25815:17;25806:6;25762:71;:::i;:::-;25843:72;25911:2;25900:9;25896:18;25887:6;25843:72;:::i;:::-;25590:332;;;;;:::o
Swarm Source
ipfs://00de0521ef7a8efa9c1859ec607521ccf37af86a1560af917a92e3dd5bd5899b
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.