Overview
Max Total Supply
240,000,000 SPS
Holders
617 (0.00%)
Market
Price
$0.01 @ 0.000003 ETH (-2.28%)
Onchain Market Cap
$2,103,751.20
Circulating Supply Market Cap
$4,271,129.00
Other Info
Token Contract (WITH 18 Decimals)
Balance
9,985.345659649293190687 SPSValue
$87.53 ( ~0.025256781422318 Eth) [0.0042%]Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
SPS
Compiler Version
v0.5.16+commit.9c3226ce
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-10-03 */ pragma solidity ^0.5.16; interface IStakeModifier { function getVotingPower(address user, uint256 votes) external view returns(uint256); } contract SPS { /// @notice EIP-20 token name for this token string public constant name = "Splintershards"; /// @notice EIP-20 token symbol for this token string public constant symbol = "SPS"; /// @notice EIP-20 token decimals for this token uint8 public constant decimals = 18; /// @notice Initial number of tokens in circulation uint256 public totalSupply = 0; /// @notice Allowance amounts on behalf of others mapping (address => mapping (address => uint96)) internal allowances; /// @notice Official record of token balances for each account mapping (address => uint96) internal balances; /// @notice A record of each accounts delegate mapping (address => address) public delegates; /// @notice A checkpoint for marking number of votes from a given block struct Checkpoint { uint32 fromBlock; uint96 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 A record of states for signing / validating signatures mapping (address => uint256) public nonces; /// @notice An event thats emitted when an account changes its delegate event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate); /// @notice An event thats emitted when a delegate account's vote balance changes event DelegateVotesChanged(address indexed delegate, uint256 previousBalance, uint256 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 Admin can update admin, minter and stake modifier address public admin; /// @notice Minter can call mint() function address public minter; /// @notice Interface for receiving voting power data IStakeModifier public stakeModifier; /** * @dev Modifier to make a function callable only by the admin. */ modifier adminOnly() { require(msg.sender == admin, "Only admin"); _; } /** * @dev Modifier to make a function callable only by the minter. */ modifier minterOnly() { require(msg.sender == minter, "Only minter"); _; } /// @notice Emitted when changing admin event SetAdmin(address indexed newAdmin, address indexed oldAdmin); /// @notice Emitted when changing minter event SetMinter(address indexed newMinter, address indexed oldAdmin); /// @notice Event used for cross-chain transfers event BridgeTransfer(address indexed sender, address indexed receiver, uint256 amount, string externalAddress); /// @notice Emitted when stake modifier address is updated event SetStakeModifier(address indexed newStakeModifier, address indexed oldStakeModifier); /** * @notice Construct a new Comp token * @param adminAddress The address with admin rights * @param minterAddress The address with minter rights * @param stakeModifierAddress The address of stakeModifier contract */ constructor(address adminAddress, address minterAddress, address stakeModifierAddress) public { admin = adminAddress; minter = minterAddress; stakeModifier = IStakeModifier(stakeModifierAddress); } /** * @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) { uint96 amount; if (rawAmount == uint256(-1)) { amount = uint96(-1); } else { amount = safe96(rawAmount, "SPS::approve: amount exceeds 96 bits"); } allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } /** * @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) public returns (bool) { uint96 amount = safe96(rawAmount, "SPS::transfer: amount exceeds 96 bits"); _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) public returns (bool) { address spender = msg.sender; uint96 spenderAllowance = allowances[src][spender]; uint96 amount = safe96(rawAmount, "SPS::approve: amount exceeds 96 bits"); if (spender != src && spenderAllowance != uint96(-1)) { uint96 newAllowance = sub96(spenderAllowance, amount, "SPS::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) public { 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) public { 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), "SPS::delegateBySig: invalid signature"); require(nonce == nonces[signatory]++, "SPS::delegateBySig: invalid nonce"); require(now <= expiry, "SPS::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 (uint96) { uint32 nCheckpoints = numCheckpoints[account]; uint96 votes = nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0; return getModifiedVotes(account, votes); } /** * @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) public view returns (uint96) { require(blockNumber < block.number, "SPS::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) { uint96 votes = checkpoints[account][nCheckpoints - 1].votes; return getModifiedVotes(account, 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; } } uint96 votes = checkpoints[account][lower].votes; return getModifiedVotes(account, votes); } /** * @notice Determines the number of votes an account has after modifications by the StakeModifier * @param account The address of the account to check * @param votes The initial, unmodified number of votes, read from storage */ function getModifiedVotes(address account, uint96 votes) internal view returns (uint96) { if (address(stakeModifier) == address(0)){ return votes; } return safe96(stakeModifier.getVotingPower(account, votes), "SPS::getModifiedVotes: amount exceeds 96 bits"); } function _delegate(address delegator, address delegatee) internal { address currentDelegate = delegates[delegator]; uint96 delegatorBalance = balances[delegator]; delegates[delegator] = delegatee; emit DelegateChanged(delegator, currentDelegate, delegatee); _moveDelegates(currentDelegate, delegatee, delegatorBalance); } function _transferTokens(address src, address dst, uint96 amount) internal { require(src != address(0), "SPS::_transferTokens: cannot transfer from the zero address"); require(dst != address(0), "SPS::_transferTokens: cannot transfer to the zero address"); balances[src] = sub96(balances[src], amount, "SPS::_transferTokens: transfer amount exceeds balance"); balances[dst] = add96(balances[dst], amount, "SPS::_transferTokens: transfer amount overflows"); emit Transfer(src, dst, amount); _moveDelegates(delegates[src], delegates[dst], amount); } function _moveDelegates(address srcRep, address dstRep, uint96 amount) internal { if (srcRep != dstRep && amount > 0) { if (srcRep != address(0)) { uint32 srcRepNum = numCheckpoints[srcRep]; uint96 srcRepOld = srcRepNum > 0 ? checkpoints[srcRep][srcRepNum - 1].votes : 0; uint96 srcRepNew = sub96(srcRepOld, amount, "SPS::_moveVotes: vote amount underflows"); _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew); } if (dstRep != address(0)) { uint32 dstRepNum = numCheckpoints[dstRep]; uint96 dstRepOld = dstRepNum > 0 ? checkpoints[dstRep][dstRepNum - 1].votes : 0; uint96 dstRepNew = add96(dstRepOld, amount, "SPS::_moveVotes: vote amount overflows"); _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew); } } } function _writeCheckpoint(address delegatee, uint32 nCheckpoints, uint96 oldVotes, uint96 newVotes) internal { uint32 blockNumber = safe32(block.number, "SPS::_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 safe96(uint256 n, string memory errorMessage) internal pure returns (uint96) { require(n < 2**96, errorMessage); return uint96(n); } function add96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) { uint96 c = a + b; require(c >= a, errorMessage); return c; } function sub96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) { require(b <= a, errorMessage); return a - b; } function getChainId() internal pure returns (uint256) { uint256 chainId; assembly { chainId := chainid() } return chainId; } /** * @notice Set new admin address * @param newAdmin New admin address */ function setAdmin(address newAdmin) external adminOnly { emit SetAdmin(newAdmin, admin); admin = newAdmin; } /** * @notice Set new minter address * @param newMinter New minter address */ function setMinter(address newMinter) external adminOnly { emit SetMinter(newMinter, minter); minter = newMinter; } /** * @notice Set new stake modifier address * @param newStakeModifier New stake modifer contract address */ function setStakeModifier(address newStakeModifier) external adminOnly { emit SetStakeModifier(newStakeModifier, address(stakeModifier)); stakeModifier = IStakeModifier(newStakeModifier); } /** * @notice Mint additional tokens * @param toAccount Account receiving new tokens * @param amount Amount of minted tokens */ function mint(address toAccount, uint256 amount) external minterOnly { _mint(toAccount, amount); } /** * @notice Mint additional tokens * @param account The address of the account to check * @param amount The amount of tokens minted */ function _mint(address account, uint256 amount) internal { require(account != address(0), "ERC20: mint to the zero address"); totalSupply += uint96(amount); balances[account] = safe96(uint256(balances[account]) + amount, "SPS::_mint: amount exceeds 96 bits"); emit Transfer(address(0), account, amount); } /** * @notice Transfer tokens to cross-chain bridge * @param bridgeAddress The address of the bridge account * @param rawAmount The amount of tokens transfered * @param externalAddress The address on another chain */ function bridgeTransfer(address bridgeAddress, uint256 rawAmount, string calldata externalAddress) external returns(bool) { emit BridgeTransfer(msg.sender, bridgeAddress, rawAmount, externalAddress); transfer(bridgeAddress, rawAmount); } /** * @notice Transfer tokens from address to cross-chain bridge * @param sourceAddress The address of the source account * @param bridgeAddress The address of the bridge account * @param rawAmount The amount of tokens transfered * @param externalAddress The address on another chain */ function bridgeTransferFrom(address sourceAddress, address bridgeAddress, uint256 rawAmount, string calldata externalAddress) external returns(bool) { emit BridgeTransfer(sourceAddress, bridgeAddress, rawAmount, externalAddress); transferFrom(sourceAddress, bridgeAddress, rawAmount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"adminAddress","type":"address"},{"internalType":"address","name":"minterAddress","type":"address"},{"internalType":"address","name":"stakeModifierAddress","type":"address"}],"payable":false,"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":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"string","name":"externalAddress","type":"string"}],"name":"BridgeTransfer","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":true,"internalType":"address","name":"newAdmin","type":"address"},{"indexed":true,"internalType":"address","name":"oldAdmin","type":"address"}],"name":"SetAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newMinter","type":"address"},{"indexed":true,"internalType":"address","name":"oldAdmin","type":"address"}],"name":"SetMinter","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newStakeModifier","type":"address"},{"indexed":true,"internalType":"address","name":"oldStakeModifier","type":"address"}],"name":"SetStakeModifier","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"},{"constant":true,"inputs":[],"name":"DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"bridgeAddress","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"},{"internalType":"string","name":"externalAddress","type":"string"}],"name":"bridgeTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"sourceAddress","type":"address"},{"internalType":"address","name":"bridgeAddress","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"},{"internalType":"string","name":"externalAddress","type":"string"}],"name":"bridgeTransferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint32","name":"","type":"uint32"}],"name":"checkpoints","outputs":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint96","name":"votes","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"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":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"toAccount","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"minter","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"setAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newMinter","type":"address"}],"name":"setMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newStakeModifier","type":"address"}],"name":"setStakeModifier","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"stakeModifier","outputs":[{"internalType":"contract IStakeModifier","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"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"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526000805534801561001457600080fd5b50604051613b55380380613b558339818101604052606081101561003757600080fd5b8101908080519060200190929190805190602001909291908051906020019092919050505082600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050613a24806101316000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806373761828116100f9578063c3cda52011610097578063e7a324dc11610071578063e7a324dc14610b40578063f1127ed814610b5e578063f851a44014610bf5578063fca3b5aa14610c3f576101c4565b8063c3cda52014610a05578063dd62ed3e14610a7e578063e2a1443914610af6576101c4565b806395d89b41116100d357806395d89b41146107cd5780639ee42e9514610850578063a9059cbb1461092b578063b4b5ea5714610991576101c4565b8063737618281461063c578063782d6fe1146106f75780637ecebe0014610775576101c4565b806336eae89e116101665780635c19a95c116101405780635c19a95c146104f85780636fcfff451461053c578063704b6c02146105a057806370a08231146105e4576101c4565b806336eae89e146103e257806340c10f1914610426578063587cde1e14610474576101c4565b806318160ddd116101a257806318160ddd146102fc57806320606b701461031a57806323b872dd14610338578063313ce567146103be576101c4565b806306fdde03146101c9578063075461721461024c578063095ea7b314610296575b600080fd5b6101d1610c83565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102115780820151818401526020810190506101f6565b50505050905090810190601f16801561023e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610254610cbc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102e2600480360360408110156102ac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ce2565b604051808215151515815260200191505060405180910390f35b610304610e83565b6040518082815260200191505060405180910390f35b610322610e89565b6040518082815260200191505060405180910390f35b6103a46004803603606081101561034e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ea5565b604051808215151515815260200191505060405180910390f35b6103c6611147565b604051808260ff1660ff16815260200191505060405180910390f35b610424600480360360208110156103f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061114c565b005b6104726004803603604081101561043c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112cf565b005b6104b66004803603602081101561048a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113a0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61053a6004803603602081101561050e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113d3565b005b61057e6004803603602081101561055257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113e0565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b6105e2600480360360208110156105b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611403565b005b610626600480360360208110156105fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611586565b6040518082815260200191505060405180910390f35b6106dd6004803603606081101561065257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561069957600080fd5b8201836020820111156106ab57600080fd5b803590602001918460018302840111640100000000831117156106cd57600080fd5b90919293919293905050506115f5565b604051808215151515815260200191505060405180910390f35b6107436004803603604081101561070d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506116a3565b60405180826bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200191505060405180910390f35b6107b76004803603602081101561078b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611aea565b6040518082815260200191505060405180910390f35b6107d5611b02565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108155780820151818401526020810190506107fa565b50505050905090810190601f1680156108425780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6109116004803603608081101561086657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156108cd57600080fd5b8201836020820111156108df57600080fd5b8035906020019184600183028401116401000000008311171561090157600080fd5b9091929391929390505050611b3b565b604051808215151515815260200191505060405180910390f35b6109776004803603604081101561094157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611beb565b604051808215151515815260200191505060405180910390f35b6109d3600480360360208110156109a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c28565b60405180826bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200191505060405180910390f35b610a7c600480360360c0811015610a1b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050611d24565b005b610ae060048036036040811015610a9457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120d5565b6040518082815260200191505060405180910390f35b610afe612182565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610b486121a8565b6040518082815260200191505060405180910390f35b610bb060048036036040811015610b7457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803563ffffffff1690602001909291905050506121c4565b604051808363ffffffff1663ffffffff168152602001826bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019250505060405180910390f35b610bfd61221d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610c8160048036036020811015610c5557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612243565b005b6040518060400160405280600e81526020017f53706c696e74657273686172647300000000000000000000000000000000000081525081565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831415610d35577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610d5a565b610d57836040518060600160405280602481526020016137b7602491396123c6565b90505b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405180826bffffffffffffffffffffffff16815260200191505060405180910390a3600191505092915050565b60005481565b6040518080613800604391396043019050604051809103902081565b6000803390506000600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff1690506000610f68856040518060600160405280602481526020016137b7602491396123c6565b90508673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610fe257507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bffffffffffffffffffffffff16826bffffffffffffffffffffffff1614155b1561112e57600061100c83836040518060600160405280603c81526020016139b4603c9139612489565b905080600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405180826bffffffffffffffffffffffff16815260200191505060405180910390a3505b61113987878361255f565b600193505050509392505050565b601281565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461120f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f4f6e6c792061646d696e0000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f089e0e78d71b05b0e1af3ccca3d47b88f444d509bba562268577164785874d0d60405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611392576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f4f6e6c79206d696e74657200000000000000000000000000000000000000000081525060200191505060405180910390fd5b61139c828261297a565b5050565b60036020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113dd3382612b9a565b50565b60056020528060005260406000206000915054906101000a900463ffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f4f6e6c792061646d696e0000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f848ac24ab84501710d6631faab117b66b79aba7ec6f7778cf3bcff428c1a4efc60405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff169050919050565b60008473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4bfee1a2af329cd95b98d09a65b810085aae37c33e11aec0a461b00f603dfa5986868660405180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a361169a8585611beb565b50949350505050565b60004382106116fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061395f6026913960400191505060405180910390fd5b6000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff16141561176a576000915050611ae4565b82600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff161161187b576000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff1690506118728582612d5a565b92505050611ae4565b82600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008063ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff1611156118fc576000915050611ae4565b600080905060006001830390505b8163ffffffff168163ffffffff161115611a57576000600283830363ffffffff168161193257fe5b048203905061193f613687565b600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681525050905086816000015163ffffffff161415611a2f57806020015195505050505050611ae4565b86816000015163ffffffff161015611a4957819350611a50565b6001820392505b505061190a565b6000600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008463ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff169050611add8782612d5a565b9450505050505b92915050565b60066020528060005260406000206000915090505481565b6040518060400160405280600381526020017f535053000000000000000000000000000000000000000000000000000000000081525081565b60008473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f4bfee1a2af329cd95b98d09a65b810085aae37c33e11aec0a461b00f603dfa5986868660405180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a3611be1868686610ea5565b5095945050505050565b600080611c1083604051806060016040528060258152602001613870602591396123c6565b9050611c1d33858361255f565b600191505092915050565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff1611611c93576000611d0f565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b9050611d1b8482612d5a565b92505050919050565b6000604051808061380060439139604301905060405180910390206040518060400160405280600e81526020017f53706c696e74657273686172647300000000000000000000000000000000000081525080519060200120611d84612ed4565b30604051602001808581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405160208183030381529060405280519060200120905060006040518080613925603a9139603a0190506040518091039020888888604051602001808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019450505050506040516020818303038152906040528051906020012090506000828260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611f2f573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611fc1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806136fd6025913960400191505060405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558914612066576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806136dc6021913960400191505060405180910390fd5b874211156120bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806137db6025913960400191505060405180910390fd5b6120c9818b612b9a565b50505050505050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16905092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040518080613925603a9139603a019050604051809103902081565b6004602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900463ffffffff16908060000160049054906101000a90046bffffffffffffffffffffffff16905082565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612306576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f4f6e6c792061646d696e0000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fe490d3138e32f1f66ef3971a3c73c7f7704ba0c1d1000f1e2c3df6fc0376610b60405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006c010000000000000000000000008310829061247f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612444578082015181840152602081019050612429565b50505050905090810190601f1680156124715780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082905092915050565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff1611158290612552576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156125175780820151818401526020810190506124fc565b50505050905090810190601f1680156125445780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082840390509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180613895603b913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561266b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001806137226039913960400191505060405180910390fd5b6126e5600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff168260405180606001604052806035815260200161378260359139612489565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506127cc600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff16826040518060600160405280602f8152602001613985602f9139612ee1565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405180826bffffffffffffffffffffffff16815260200191505060405180910390a3612975600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612fbc565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b806bffffffffffffffffffffffff166000808282540192505081905550612ac381600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16016040518060600160405280602281526020016138d0602291396123c6565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff16905082600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a4612d54828483612fbc565b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612dba57819050612ece565b612ecb600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ff400f485856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015612e7257600080fd5b505afa158015612e86573d6000803e3d6000fd5b505050506040513d6020811015612e9c57600080fd5b81019080805190602001909291905050506040518060600160405280602d8152602001613843602d91396123c6565b90505b92915050565b6000804690508091505090565b6000808385019050846bffffffffffffffffffffffff16816bffffffffffffffffffffffff1610158390612fb0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612f75578082015181840152602081019050612f5a565b50505050905090810190601f168015612fa25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50809150509392505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561300657506000816bffffffffffffffffffffffff16115b156132b257600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461315e576000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116130a9576000613125565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b9050600061314c828560405180606001604052806027815260200161375b60279139612489565b905061315a868484846132b7565b5050505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146132b1576000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116131fc576000613278565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b9050600061329f82856040518060600160405280602681526020016136b660269139612ee1565b90506132ad858484846132b7565b5050505b5b505050565b60006132db436040518060600160405280603381526020016138f2603391396135cc565b905060008463ffffffff1611801561337057508063ffffffff16600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16145b1561340b5781600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060000160046101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550613553565b60405180604001604052808263ffffffff168152602001836bffffffffffffffffffffffff16815250600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555090505060018401600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724848460405180836bffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff1681526020019250505060405180910390a25050505050565b60006401000000008310829061367d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613642578082015181840152602081019050613627565b50505050905090810190601f16801561366f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082905092915050565b6040518060400160405280600063ffffffff16815260200160006bffffffffffffffffffffffff168152509056fe5350533a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f77735350533a3a64656c656761746542795369673a20696e76616c6964206e6f6e63655350533a3a64656c656761746542795369673a20696e76616c6964207369676e61747572655350533a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e7366657220746f20746865207a65726f20616464726573735350533a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f77735350533a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e63655350533a3a617070726f76653a20616d6f756e74206578636565647320393620626974735350533a3a64656c656761746542795369673a207369676e61747572652065787069726564454950373132446f6d61696e28737472696e67206e616d652c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e7472616374295350533a3a6765744d6f646966696564566f7465733a20616d6f756e74206578636565647320393620626974735350533a3a7472616e736665723a20616d6f756e74206578636565647320393620626974735350533a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e736665722066726f6d20746865207a65726f20616464726573735350533a3a5f6d696e743a20616d6f756e74206578636565647320393620626974735350533a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d6265722065786365656473203332206269747344656c65676174696f6e28616464726573732064656c6567617465652c75696e74323536206e6f6e63652c75696e7432353620657870697279295350533a3a6765745072696f72566f7465733a206e6f74207965742064657465726d696e65645350533a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f77735350533a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365a265627a7a723158205841e3798e4de2b05e9994dc48473a860626d5f23407a3bfb8ef6707b6186c2d64736f6c6343000510003200000000000000000000000094718f1fe0f4f9f3075ac2a0781a839317b64c1b00000000000000000000000094718f1fe0f4f9f3075ac2a0781a839317b64c1b0000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101c45760003560e01c806373761828116100f9578063c3cda52011610097578063e7a324dc11610071578063e7a324dc14610b40578063f1127ed814610b5e578063f851a44014610bf5578063fca3b5aa14610c3f576101c4565b8063c3cda52014610a05578063dd62ed3e14610a7e578063e2a1443914610af6576101c4565b806395d89b41116100d357806395d89b41146107cd5780639ee42e9514610850578063a9059cbb1461092b578063b4b5ea5714610991576101c4565b8063737618281461063c578063782d6fe1146106f75780637ecebe0014610775576101c4565b806336eae89e116101665780635c19a95c116101405780635c19a95c146104f85780636fcfff451461053c578063704b6c02146105a057806370a08231146105e4576101c4565b806336eae89e146103e257806340c10f1914610426578063587cde1e14610474576101c4565b806318160ddd116101a257806318160ddd146102fc57806320606b701461031a57806323b872dd14610338578063313ce567146103be576101c4565b806306fdde03146101c9578063075461721461024c578063095ea7b314610296575b600080fd5b6101d1610c83565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102115780820151818401526020810190506101f6565b50505050905090810190601f16801561023e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610254610cbc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102e2600480360360408110156102ac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ce2565b604051808215151515815260200191505060405180910390f35b610304610e83565b6040518082815260200191505060405180910390f35b610322610e89565b6040518082815260200191505060405180910390f35b6103a46004803603606081101561034e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ea5565b604051808215151515815260200191505060405180910390f35b6103c6611147565b604051808260ff1660ff16815260200191505060405180910390f35b610424600480360360208110156103f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061114c565b005b6104726004803603604081101561043c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112cf565b005b6104b66004803603602081101561048a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113a0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61053a6004803603602081101561050e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113d3565b005b61057e6004803603602081101561055257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113e0565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b6105e2600480360360208110156105b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611403565b005b610626600480360360208110156105fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611586565b6040518082815260200191505060405180910390f35b6106dd6004803603606081101561065257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561069957600080fd5b8201836020820111156106ab57600080fd5b803590602001918460018302840111640100000000831117156106cd57600080fd5b90919293919293905050506115f5565b604051808215151515815260200191505060405180910390f35b6107436004803603604081101561070d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506116a3565b60405180826bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200191505060405180910390f35b6107b76004803603602081101561078b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611aea565b6040518082815260200191505060405180910390f35b6107d5611b02565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108155780820151818401526020810190506107fa565b50505050905090810190601f1680156108425780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6109116004803603608081101561086657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156108cd57600080fd5b8201836020820111156108df57600080fd5b8035906020019184600183028401116401000000008311171561090157600080fd5b9091929391929390505050611b3b565b604051808215151515815260200191505060405180910390f35b6109776004803603604081101561094157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611beb565b604051808215151515815260200191505060405180910390f35b6109d3600480360360208110156109a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c28565b60405180826bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200191505060405180910390f35b610a7c600480360360c0811015610a1b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050611d24565b005b610ae060048036036040811015610a9457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120d5565b6040518082815260200191505060405180910390f35b610afe612182565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610b486121a8565b6040518082815260200191505060405180910390f35b610bb060048036036040811015610b7457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803563ffffffff1690602001909291905050506121c4565b604051808363ffffffff1663ffffffff168152602001826bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019250505060405180910390f35b610bfd61221d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610c8160048036036020811015610c5557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612243565b005b6040518060400160405280600e81526020017f53706c696e74657273686172647300000000000000000000000000000000000081525081565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831415610d35577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610d5a565b610d57836040518060600160405280602481526020016137b7602491396123c6565b90505b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405180826bffffffffffffffffffffffff16815260200191505060405180910390a3600191505092915050565b60005481565b6040518080613800604391396043019050604051809103902081565b6000803390506000600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff1690506000610f68856040518060600160405280602481526020016137b7602491396123c6565b90508673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610fe257507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bffffffffffffffffffffffff16826bffffffffffffffffffffffff1614155b1561112e57600061100c83836040518060600160405280603c81526020016139b4603c9139612489565b905080600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405180826bffffffffffffffffffffffff16815260200191505060405180910390a3505b61113987878361255f565b600193505050509392505050565b601281565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461120f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f4f6e6c792061646d696e0000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f089e0e78d71b05b0e1af3ccca3d47b88f444d509bba562268577164785874d0d60405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611392576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f4f6e6c79206d696e74657200000000000000000000000000000000000000000081525060200191505060405180910390fd5b61139c828261297a565b5050565b60036020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113dd3382612b9a565b50565b60056020528060005260406000206000915054906101000a900463ffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f4f6e6c792061646d696e0000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f848ac24ab84501710d6631faab117b66b79aba7ec6f7778cf3bcff428c1a4efc60405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff169050919050565b60008473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4bfee1a2af329cd95b98d09a65b810085aae37c33e11aec0a461b00f603dfa5986868660405180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a361169a8585611beb565b50949350505050565b60004382106116fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061395f6026913960400191505060405180910390fd5b6000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff16141561176a576000915050611ae4565b82600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff161161187b576000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff1690506118728582612d5a565b92505050611ae4565b82600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008063ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff1611156118fc576000915050611ae4565b600080905060006001830390505b8163ffffffff168163ffffffff161115611a57576000600283830363ffffffff168161193257fe5b048203905061193f613687565b600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681525050905086816000015163ffffffff161415611a2f57806020015195505050505050611ae4565b86816000015163ffffffff161015611a4957819350611a50565b6001820392505b505061190a565b6000600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008463ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff169050611add8782612d5a565b9450505050505b92915050565b60066020528060005260406000206000915090505481565b6040518060400160405280600381526020017f535053000000000000000000000000000000000000000000000000000000000081525081565b60008473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f4bfee1a2af329cd95b98d09a65b810085aae37c33e11aec0a461b00f603dfa5986868660405180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a3611be1868686610ea5565b5095945050505050565b600080611c1083604051806060016040528060258152602001613870602591396123c6565b9050611c1d33858361255f565b600191505092915050565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff1611611c93576000611d0f565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b9050611d1b8482612d5a565b92505050919050565b6000604051808061380060439139604301905060405180910390206040518060400160405280600e81526020017f53706c696e74657273686172647300000000000000000000000000000000000081525080519060200120611d84612ed4565b30604051602001808581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405160208183030381529060405280519060200120905060006040518080613925603a9139603a0190506040518091039020888888604051602001808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019450505050506040516020818303038152906040528051906020012090506000828260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611f2f573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611fc1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806136fd6025913960400191505060405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558914612066576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806136dc6021913960400191505060405180910390fd5b874211156120bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806137db6025913960400191505060405180910390fd5b6120c9818b612b9a565b50505050505050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16905092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040518080613925603a9139603a019050604051809103902081565b6004602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900463ffffffff16908060000160049054906101000a90046bffffffffffffffffffffffff16905082565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612306576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f4f6e6c792061646d696e0000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fe490d3138e32f1f66ef3971a3c73c7f7704ba0c1d1000f1e2c3df6fc0376610b60405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006c010000000000000000000000008310829061247f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612444578082015181840152602081019050612429565b50505050905090810190601f1680156124715780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082905092915050565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff1611158290612552576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156125175780820151818401526020810190506124fc565b50505050905090810190601f1680156125445780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082840390509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180613895603b913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561266b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001806137226039913960400191505060405180910390fd5b6126e5600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff168260405180606001604052806035815260200161378260359139612489565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506127cc600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff16826040518060600160405280602f8152602001613985602f9139612ee1565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405180826bffffffffffffffffffffffff16815260200191505060405180910390a3612975600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612fbc565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b806bffffffffffffffffffffffff166000808282540192505081905550612ac381600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16016040518060600160405280602281526020016138d0602291396123c6565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff16905082600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a4612d54828483612fbc565b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612dba57819050612ece565b612ecb600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ff400f485856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015612e7257600080fd5b505afa158015612e86573d6000803e3d6000fd5b505050506040513d6020811015612e9c57600080fd5b81019080805190602001909291905050506040518060600160405280602d8152602001613843602d91396123c6565b90505b92915050565b6000804690508091505090565b6000808385019050846bffffffffffffffffffffffff16816bffffffffffffffffffffffff1610158390612fb0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612f75578082015181840152602081019050612f5a565b50505050905090810190601f168015612fa25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50809150509392505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561300657506000816bffffffffffffffffffffffff16115b156132b257600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461315e576000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116130a9576000613125565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b9050600061314c828560405180606001604052806027815260200161375b60279139612489565b905061315a868484846132b7565b5050505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146132b1576000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116131fc576000613278565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b9050600061329f82856040518060600160405280602681526020016136b660269139612ee1565b90506132ad858484846132b7565b5050505b5b505050565b60006132db436040518060600160405280603381526020016138f2603391396135cc565b905060008463ffffffff1611801561337057508063ffffffff16600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16145b1561340b5781600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060000160046101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550613553565b60405180604001604052808263ffffffff168152602001836bffffffffffffffffffffffff16815250600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555090505060018401600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724848460405180836bffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff1681526020019250505060405180910390a25050505050565b60006401000000008310829061367d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613642578082015181840152602081019050613627565b50505050905090810190601f16801561366f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082905092915050565b6040518060400160405280600063ffffffff16815260200160006bffffffffffffffffffffffff168152509056fe5350533a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f77735350533a3a64656c656761746542795369673a20696e76616c6964206e6f6e63655350533a3a64656c656761746542795369673a20696e76616c6964207369676e61747572655350533a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e7366657220746f20746865207a65726f20616464726573735350533a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f77735350533a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e63655350533a3a617070726f76653a20616d6f756e74206578636565647320393620626974735350533a3a64656c656761746542795369673a207369676e61747572652065787069726564454950373132446f6d61696e28737472696e67206e616d652c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e7472616374295350533a3a6765744d6f646966696564566f7465733a20616d6f756e74206578636565647320393620626974735350533a3a7472616e736665723a20616d6f756e74206578636565647320393620626974735350533a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e736665722066726f6d20746865207a65726f20616464726573735350533a3a5f6d696e743a20616d6f756e74206578636565647320393620626974735350533a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d6265722065786365656473203332206269747344656c65676174696f6e28616464726573732064656c6567617465652c75696e74323536206e6f6e63652c75696e7432353620657870697279295350533a3a6765745072696f72566f7465733a206e6f74207965742064657465726d696e65645350533a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f77735350533a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365a265627a7a723158205841e3798e4de2b05e9994dc48473a860626d5f23407a3bfb8ef6707b6186c2d64736f6c63430005100032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000094718f1fe0f4f9f3075ac2a0781a839317b64c1b00000000000000000000000094718f1fe0f4f9f3075ac2a0781a839317b64c1b0000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : adminAddress (address): 0x94718f1Fe0F4F9f3075AC2a0781A839317B64c1B
Arg [1] : minterAddress (address): 0x94718f1Fe0F4F9f3075AC2a0781A839317B64c1B
Arg [2] : stakeModifierAddress (address): 0x0000000000000000000000000000000000000000
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 00000000000000000000000094718f1fe0f4f9f3075ac2a0781a839317b64c1b
Arg [1] : 00000000000000000000000094718f1fe0f4f9f3075ac2a0781a839317b64c1b
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
151:17843:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;151:17843:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;221:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;221:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2691:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5195:424;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5195:424:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;529:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1424:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6745:671;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6745:671:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;428:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15800:212;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15800:212:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;16177:112;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16177:112:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;874:45;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;874:45:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7564:102;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7564:102:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;1302:49;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1302:49:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15282:131;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15282:131:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;5822:111;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5822:111:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17072:263;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17072:263:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;17072:263:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;17072:263:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;17072:263:0;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9804:1340;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9804:1340:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1838:42;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1838:42:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;328:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;328:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17679:312;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;17679:312:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;17679:312:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;17679:312:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;17679:312:0;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6197:238;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6197:238:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9093:280;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9093:280:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8100:792;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;8100:792:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4578:139;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4578:139:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2780:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1640:117;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1163:70;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1163:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2613:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15522:138;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15522:138:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;221:46;;;;;;;;;;;;;;;;;;;:::o;2691:21::-;;;;;;;;;;;;;:::o;5195:424::-;5266:4;5283:13;5332:2;5311:9;:24;5307:175;;;5368:2;5352:19;;5307:175;;;5413:57;5420:9;5413:57;;;;;;;;;;;;;;;;;:6;:57::i;:::-;5404:66;;5307:175;5528:6;5494:10;:22;5505:10;5494:22;;;;;;;;;;;;;;;:31;5517:7;5494:31;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;5573:7;5552:37;;5561:10;5552:37;;;5582:6;5552:37;;;;;;;;;;;;;;;;;;;;5607:4;5600:11;;;5195:424;;;;:::o;529:30::-;;;;:::o;1424:122::-;1466:80;;;;;;;;;;;;;;;;;;;1424:122;:::o;6745:671::-;6828:4;6845:15;6863:10;6845:28;;6884:23;6910:10;:15;6921:3;6910:15;;;;;;;;;;;;;;;:24;6926:7;6910:24;;;;;;;;;;;;;;;;;;;;;;;;;6884:50;;6945:13;6961:57;6968:9;6961:57;;;;;;;;;;;;;;;;;:6;:57::i;:::-;6945:73;;7046:3;7035:14;;:7;:14;;;;:48;;;;;7080:2;7053:30;;:16;:30;;;;7035:48;7031:310;;;7100:19;7122:95;7128:16;7146:6;7122:95;;;;;;;;;;;;;;;;;:5;:95::i;:::-;7100:117;;7259:12;7232:10;:15;7243:3;7232:15;;;;;;;;;;;;;;;:24;7248:7;7232:24;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;7307:7;7293:36;;7302:3;7293:36;;;7316:12;7293:36;;;;;;;;;;;;;;;;;;;;7031:310;;7353:33;7369:3;7374;7379:6;7353:15;:33::i;:::-;7404:4;7397:11;;;;;6745:671;;;;;:::o;428:35::-;461:2;428:35;:::o;15800:212::-;2965:5;;;;;;;;;;;2951:19;;:10;:19;;;2943:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15930:13;;;;;;;;;;;15887:58;;15904:16;15887:58;;;;;;;;;;;;15987:16;15956:13;;:48;;;;;;;;;;;;;;;;;;15800:212;:::o;16177:112::-;3156:6;;;;;;;;;;;3142:20;;:10;:20;;;3134:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16257:24;16263:9;16274:6;16257:5;:24::i;:::-;16177:112;;:::o;874:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;7564:102::-;7626:32;7636:10;7648:9;7626;:32::i;:::-;7564:102;:::o;1302:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;15282:131::-;2965:5;;;;;;;;;;;2951:19;;:10;:19;;;2943:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15372:5;;;;;;;;;;;15353:25;;15362:8;15353:25;;;;;;;;;;;;15397:8;15389:5;;:16;;;;;;;;;;;;;;;;;;15282:131;:::o;5822:111::-;5881:7;5908:8;:17;5917:7;5908:17;;;;;;;;;;;;;;;;;;;;;;;;;5901:24;;;;5822:111;;;:::o;17072:263::-;17188:4;17238:13;17211:69;;17226:10;17211:69;;;17253:9;17264:15;;17211:69;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;17211:69:0;;;;;;;;;;;;;;;17292:34;17301:13;17316:9;17292:8;:34::i;:::-;;17072:263;;;;;;:::o;9804:1340::-;9886:6;9927:12;9913:11;:26;9905:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9995:19;10017:14;:23;10032:7;10017:23;;;;;;;;;;;;;;;;;;;;;;;;;9995:45;;10071:1;10055:12;:17;;;10051:58;;;10096:1;10089:8;;;;;10051:58;10221:11;10169;:20;10181:7;10169:20;;;;;;;;;;;;;;;:38;10205:1;10190:12;:16;10169:38;;;;;;;;;;;;;;;:48;;;;;;;;;;;;:63;;;10165:209;;10249:12;10264:11;:20;10276:7;10264:20;;;;;;;;;;;;;;;:38;10300:1;10285:12;:16;10264:38;;;;;;;;;;;;;;;:44;;;;;;;;;;;;10249:59;;10330:32;10347:7;10356:5;10330:16;:32::i;:::-;10323:39;;;;;;10165:209;10471:11;10435;:20;10447:7;10435:20;;;;;;;;;;;;;;;:23;10456:1;10435:23;;;;;;;;;;;;;:33;;;;;;;;;;;;:47;;;10431:88;;;10506:1;10499:8;;;;;10431:88;10531:12;10546:1;10531:16;;10558:12;10588:1;10573:12;:16;10558:31;;10600:428;10615:5;10607:13;;:5;:13;;;10600:428;;;10637:13;10679:1;10670:5;10662;:13;10661:19;;;;;;;;10653:5;:27;10637:43;;10722:20;;:::i;:::-;10745:11;:20;10757:7;10745:20;;;;;;;;;;;;;;;:28;10766:6;10745:28;;;;;;;;;;;;;;;10722:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10808:11;10792:2;:12;;;:27;;;10788:229;;;10847:2;:8;;;10840:15;;;;;;;;;10788:229;10896:11;10881:2;:12;;;:26;;;10877:140;;;10936:6;10928:14;;10877:140;;;11000:1;10991:6;:10;10983:18;;10877:140;10600:428;;;;;11038:12;11053:11;:20;11065:7;11053:20;;;;;;;;;;;;;;;:27;11074:5;11053:27;;;;;;;;;;;;;;;:33;;;;;;;;;;;;11038:48;;11104:32;11121:7;11130:5;11104:16;:32::i;:::-;11097:39;;;;;;9804:1340;;;;;:::o;1838:42::-;;;;;;;;;;;;;;;;;:::o;328:37::-;;;;;;;;;;;;;;;;;;;:::o;17679:312::-;17822:4;17875:13;17845:72;;17860:13;17845:72;;;17890:9;17901:15;;17845:72;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;17845:72:0;;;;;;;;;;;;;;;17929:53;17942:13;17957;17972:9;17929:12;:53::i;:::-;;17679:312;;;;;;;:::o;6197:238::-;6263:4;6280:13;6296:58;6303:9;6296:58;;;;;;;;;;;;;;;;;:6;:58::i;:::-;6280:74;;6365:40;6381:10;6393:3;6398:6;6365:15;:40::i;:::-;6423:4;6416:11;;;6197:238;;;;:::o;9093:280::-;9158:6;9177:19;9199:14;:23;9214:7;9199:23;;;;;;;;;;;;;;;;;;;;;;;;;9177:45;;9233:12;9263:1;9248:12;:16;;;:67;;9314:1;9248:67;;;9267:11;:20;9279:7;9267:20;;;;;;;;;;;;;;;:38;9303:1;9288:12;:16;9267:38;;;;;;;;;;;;;;;:44;;;;;;;;;;;;9248:67;9233:82;;9333:32;9350:7;9359:5;9333:16;:32::i;:::-;9326:39;;;;9093:280;;;:::o;8100:792::-;8222:23;1466:80;;;;;;;;;;;;;;;;;;;8302:4;;;;;;;;;;;;;;;;;8286:22;;;;;;8310:12;:10;:12::i;:::-;8332:4;8258:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;8258:80:0;;;8248:91;;;;;;8222:117;;8350:18;1686:71;;;;;;;;;;;;;;;;;;;8413:9;8424:5;8431:6;8381:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;8381:57:0;;;8371:68;;;;;;8350:89;;8450:14;8506:15;8523:10;8477:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;8477:57:0;;;8467:68;;;;;;8450:85;;8546:17;8566:26;8576:6;8584:1;8587;8590;8566:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8566:26:0;;;;;;;;8546:46;;8632:1;8611:23;;:9;:23;;;;8603:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8704:6;:17;8711:9;8704:17;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;8695:5;:28;8687:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8787:6;8780:3;:13;;8772:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8853:31;8863:9;8874;8853;:31::i;:::-;8846:38;;;;8100:792;;;;;;:::o;4578:139::-;4654:7;4681:10;:19;4692:7;4681:19;;;;;;;;;;;;;;;:28;4701:7;4681:28;;;;;;;;;;;;;;;;;;;;;;;;;4674:35;;;;4578:139;;;;:::o;2780:35::-;;;;;;;;;;;;;:::o;1640:117::-;1686:71;;;;;;;;;;;;;;;;;;;1640:117;:::o;1163:70::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2613:20::-;;;;;;;;;;;;;:::o;15522:138::-;2965:5;;;;;;;;;;;2951:19;;:10;:19;;;2943:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15616:6;;;;;;;;;;;15595:28;;15605:9;15595:28;;;;;;;;;;;;15643:9;15634:6;;:18;;;;;;;;;;;;;;;;;;15522:138;:::o;14479:164::-;14557:6;14588:5;14584:1;:9;14595:12;14576:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;14576:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14633:1;14619:16;;14479:164;;;;:::o;14847:165::-;14933:6;14965:1;14960:6;;:1;:6;;;;14968:12;14952:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;14952:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15003:1;14999;:5;14992:12;;14847:165;;;;;:::o;12108:610::-;12217:1;12202:17;;:3;:17;;;;12194:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12317:1;12302:17;;:3;:17;;;;12294:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12410:85;12416:8;:13;12425:3;12416:13;;;;;;;;;;;;;;;;;;;;;;;;;12431:6;12410:85;;;;;;;;;;;;;;;;;:5;:85::i;:::-;12394:8;:13;12403:3;12394:13;;;;;;;;;;;;;;;;:101;;;;;;;;;;;;;;;;;;12522:79;12528:8;:13;12537:3;12528:13;;;;;;;;;;;;;;;;;;;;;;;;;12543:6;12522:79;;;;;;;;;;;;;;;;;:5;:79::i;:::-;12506:8;:13;12515:3;12506:13;;;;;;;;;;;;;;;;:95;;;;;;;;;;;;;;;;;;12631:3;12617:26;;12626:3;12617:26;;;12636:6;12617:26;;;;;;;;;;;;;;;;;;;;12656:54;12671:9;:14;12681:3;12671:14;;;;;;;;;;;;;;;;;;;;;;;;;12687:9;:14;12697:3;12687:14;;;;;;;;;;;;;;;;;;;;;;;;;12703:6;12656:14;:54::i;:::-;12108:610;;;:::o;16463:348::-;16558:1;16539:21;;:7;:21;;;;16531:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16631:6;16609:29;;:11;;:29;;;;;;;;;;;16669:81;16705:6;16684:8;:17;16693:7;16684:17;;;;;;;;;;;;;;;;;;;;;;;;;16676:26;;:35;16669:81;;;;;;;;;;;;;;;;;:6;:81::i;:::-;16649:8;:17;16658:7;16649:17;;;;;;;;;;;;;;;;:101;;;;;;;;;;;;;;;;;;16787:7;16766:37;;16783:1;16766:37;;;16796:6;16766:37;;;;;;;;;;;;;;;;;;16463:348;;:::o;11725:375::-;11802:23;11828:9;:20;11838:9;11828:20;;;;;;;;;;;;;;;;;;;;;;;;;11802:46;;11859:23;11885:8;:19;11894:9;11885:19;;;;;;;;;;;;;;;;;;;;;;;;;11859:45;;11938:9;11915;:20;11925:9;11915:20;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;12009:9;11965:54;;11992:15;11965:54;;11981:9;11965:54;;;;;;;;;;;;12032:60;12047:15;12064:9;12075:16;12032:14;:60::i;:::-;11725:375;;;;:::o;11412:305::-;11492:6;11549:1;11515:36;;11523:13;;;;;;;;;;;11515:36;;;11511:80;;;11574:5;11567:12;;;;11511:80;11608:101;11615:13;;;;;;;;;;;:28;;;11644:7;11653:5;11615:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11615:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11615:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11615:44:0;;;;;;;;;;;;;;;;11608:101;;;;;;;;;;;;;;;;;:6;:101::i;:::-;11601:108;;11412:305;;;;;:::o;15020:156::-;15065:7;15085:15;15133:9;15122:20;;15161:7;15154:14;;;15020:156;:::o;14651:188::-;14737:6;14756:8;14771:1;14767;:5;14756:16;;14796:1;14791:6;;:1;:6;;;;14799:12;14783:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;14783:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14830:1;14823:8;;;14651:188;;;;;:::o;12726:937::-;12831:6;12821:16;;:6;:16;;;;:30;;;;;12850:1;12841:6;:10;;;12821:30;12817:839;;;12890:1;12872:20;;:6;:20;;;12868:381;;12913:16;12932:14;:22;12947:6;12932:22;;;;;;;;;;;;;;;;;;;;;;;;;12913:41;;12973:16;13004:1;12992:9;:13;;;:60;;13051:1;12992:60;;;13008:11;:19;13020:6;13008:19;;;;;;;;;;;;;;;:34;13040:1;13028:9;:13;13008:34;;;;;;;;;;;;;;;:40;;;;;;;;;;;;12992:60;12973:79;;13071:16;13090:67;13096:9;13107:6;13090:67;;;;;;;;;;;;;;;;;:5;:67::i;:::-;13071:86;;13176:57;13193:6;13201:9;13212;13223;13176:16;:57::i;:::-;12868:381;;;;13287:1;13269:20;;:6;:20;;;13265:380;;13310:16;13329:14;:22;13344:6;13329:22;;;;;;;;;;;;;;;;;;;;;;;;;13310:41;;13370:16;13401:1;13389:9;:13;;;:60;;13448:1;13389:60;;;13405:11;:19;13417:6;13405:19;;;;;;;;;;;;;;;:34;13437:1;13425:9;:13;13405:34;;;;;;;;;;;;;;;:40;;;;;;;;;;;;13389:60;13370:79;;13468:16;13487:66;13493:9;13504:6;13487:66;;;;;;;;;;;;;;;;;:5;:66::i;:::-;13468:85;;13572:57;13589:6;13597:9;13608;13619;13572:16;:57::i;:::-;13265:380;;;;12817:839;12726:937;;;:::o;13671:628::-;13789:18;13810:75;13817:12;13810:75;;;;;;;;;;;;;;;;;:6;:75::i;:::-;13789:96;;13915:1;13900:12;:16;;;:85;;;;;13974:11;13920:65;;:11;:22;13932:9;13920:22;;;;;;;;;;;;;;;:40;13958:1;13943:12;:16;13920:40;;;;;;;;;;;;;;;:50;;;;;;;;;;;;:65;;;13900:85;13896:329;;;14049:8;14000:11;:22;14012:9;14000:22;;;;;;;;;;;;;;;:40;14038:1;14023:12;:16;14000:40;;;;;;;;;;;;;;;:46;;;:57;;;;;;;;;;;;;;;;;;13896:329;;;14125:33;;;;;;;;14136:11;14125:33;;;;;;14149:8;14125:33;;;;;14086:11;:22;14098:9;14086:22;;;;;;;;;;;;;;;:36;14109:12;14086:36;;;;;;;;;;;;;;;:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14214:1;14199:12;:16;14171:14;:25;14186:9;14171:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;13896:329;14261:9;14240:51;;;14272:8;14282;14240:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;13671:628;;;;;:::o;14307:164::-;14385:6;14416:5;14412:1;:9;14423:12;14404:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;14404:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14461:1;14447:16;;14307:164;;;;:::o;151:17843::-;;;;;;;;;;;;;;;;;;;;;;;:::o
Swarm Source
bzzr://5841e3798e4de2b05e9994dc48473a860626d5f23407a3bfb8ef6707b6186c2d
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.