ERC-20
Overview
Max Total Supply
100,000,000 蛤蟆精
Holders
38
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
2,360,364.133622903345689274 蛤蟆精Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
HAMAJING
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-11-29 */ // SPDX-License-Identifier: MIT /** Website: https://hamajing.vip Telegram: https://t.me/hamajing_portal Twitter: https://twitter.com/hamajing_coin */ pragma solidity ^0.8.15; interface IDEXFactory { event PairCreated( address indexed token0, address indexed token1, address pair, uint ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair( address tokenA, address tokenB ) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair( address tokenA, address tokenB ) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the subtraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface ERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function getOwner() external view returns (address); function balanceOf(address account) external view returns (uint256); function transfer( address recipient, uint256 amount ) external returns (bool); function allowance( address _owner, address spender ) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } abstract contract Ownable { address internal owner; constructor(address _owner) { owner = _owner; } modifier onlyOwner() { require(isOwner(msg.sender), "!OWNER"); _; } function isOwner(address account) public view returns (bool) { return account == owner; } function renounceOwnership() public onlyOwner { owner = address(0); emit OwnershipTransferred(address(0)); } event OwnershipTransferred(address owner); } // pragma solidity >=0.5.0; interface IUniswapV2ERC20 { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance( address owner, address spender ) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom( address from, address to, uint value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit( address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s ) external; function sync() external; } // pragma solidity >=0.6.2; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable returns (uint[] memory amounts); function swapTokensForExactETH( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactTokensForETH( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapETHForExactTokens( uint amountOut, address[] calldata path, address to, uint deadline ) external payable returns (uint[] memory amounts); function quote( uint amountA, uint reserveA, uint reserveB ) external pure returns (uint amountB); function getAmountOut( uint amountIn, uint reserveIn, uint reserveOut ) external pure returns (uint amountOut); function getAmountIn( uint amountOut, uint reserveIn, uint reserveOut ) external pure returns (uint amountIn); function getAmountsOut( uint amountIn, address[] calldata path ) external view returns (uint[] memory amounts); function getAmountsIn( uint amountOut, address[] calldata path ) external view returns (uint[] memory amounts); } // pragma solidity >=0.6.2; interface IDEXRouter is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract HAMAJING is ERC20, Ownable { using SafeMath for uint256; address routerAdress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; address DEAD = 0x000000000000000000000000000000000000dEaD; string constant _name = unicode"HAMAJING"; string constant _symbol = unicode"蛤蟆精"; uint8 constant _decimals = 18; uint256 public _totalSupply = 100_000_000 * (10 ** _decimals); uint256 public _maxWalletAmount = (_totalSupply * 2) / 100; uint256 public _minSwapAmount = (_totalSupply * 1) / 100000; uint256 public _maxTaxSwap = (_totalSupply * 2) / 1000; mapping(address => uint256) _balances; mapping(address => mapping(address => uint256)) _allowances; mapping(address => bool) isFeeExempts; mapping(address => bool) isTxLimitExempts; address public _treeWallet; address public pair; IDEXRouter public router; bool public swapEnabled = false; bool public feeEnabled = false; bool public TradingOpen = false; uint256 private _finalBuyTax = 0; uint256 private _finalSellTax = 2; bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor() Ownable(msg.sender) { address _owner = owner; _treeWallet = address(0x95efB5ae0D00c7F9108afBE067cfDa2e4cb185fa); isFeeExempts[_owner] = true; isFeeExempts[_treeWallet] = true; isFeeExempts[address(this)] = true; isTxLimitExempts[_owner] = true; isTxLimitExempts[_treeWallet] = true; isTxLimitExempts[address(this)] = true; _balances[_owner] = _totalSupply; emit Transfer(address(0), _owner, _totalSupply); } function name() external pure override returns (string memory) { return _name; } function totalSupply() external view override returns (uint256) { return _totalSupply; } function decimals() external pure override returns (uint8) { return _decimals; } function symbol() external pure override returns (string memory) { return _symbol; } function getOwner() external view override returns (address) { return owner; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function min(uint256 a, uint256 b) private pure returns (uint256) { return (a > b) ? b : a; } function shouldSwapBack( uint256 a, uint256 c, uint256 s ) internal view returns (bool) { return !inSwap && swapEnabled && a > s && c > s; } function isTakeTaxFees(address sender) internal view returns (bool) { return !isFeeExempts[sender]; } function allowance( address holder, address spender ) external view override returns (uint256) { return _allowances[holder][spender]; } function approve( address spender, uint256 amount ) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function transfer( address recipient, uint256 amount ) external override returns (bool) { return _transferFrom(msg.sender, recipient, amount); } function transferFrom( address sender, address recipient, uint256 amount ) external override returns (bool) { if (_allowances[sender][msg.sender] != type(uint256).max) { _allowances[sender][msg.sender] = _allowances[sender][msg.sender] .sub(amount, "Insufficient Allowance"); } return _transferFrom(sender, recipient, amount); } /** Internal functions **/ function takeFeeAmount( address sender, address recipient, uint256 amount ) internal returns (uint256) { uint256 percent; uint256 fee; uint256 feeDenominator = 100; if (recipient == pair) { percent = _finalSellTax; } else if (sender == pair) { percent = _finalBuyTax; } uint256 feeAmount = amount.mul(percent).div(feeDenominator); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); feeAmount = isTakeTaxFees(sender) ? feeAmount : amount - fee; return amount.sub(feeAmount); } function swapBack(uint256 amount) internal swapping { uint256 contractTokenBalance = balanceOf(address(this)); uint256 amountToSwap = min( amount, min(contractTokenBalance, _maxTaxSwap) ); address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountETHMarketing = address(this).balance; payable(_treeWallet).transfer(amountETHMarketing); } function _basicTransfer( address sender, address recipient, uint256 amount ) internal returns (bool) { _balances[sender] = _balances[sender].sub( amount, "Insufficient Balance" ); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function createPair() external onlyOwner { router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); pair = IDEXFactory(router.factory()).createPair( address(this), router.WETH() ); isTxLimitExempts[pair] = true; _allowances[address(this)][address(router)] = type(uint256).max; } function enableTrading() public onlyOwner { require(!TradingOpen, "trading is already open"); TradingOpen = true; feeEnabled = true; swapEnabled = true; } function removeLimit() external onlyOwner returns (bool) { _maxWalletAmount = type(uint).max; return true; } function _transferFrom( address sender, address recipient, uint256 amount ) internal returns (bool) { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (inSwap) { return _basicTransfer(sender, recipient, amount); } if (!isFeeExempts[sender] && !isFeeExempts[recipient]) { require(TradingOpen, "Trading not open yet"); } if (!swapEnabled) { return _basicTransfer(sender, recipient, amount); } if ( recipient != pair && recipient != DEAD && !isFeeExempts[sender] && !isFeeExempts[recipient] ) { require( isTxLimitExempts[recipient] || _balances[recipient] + amount <= _maxWalletAmount, "Transfer amount exceeds the bag size." ); } uint256 contractBalance = balanceOf(address(this)); if ( shouldSwapBack(amount, contractBalance, _minSwapAmount) && recipient == pair && !isFeeExempts[sender] ) { swapBack(amount); } uint256 amountSender = isTakeTaxFees(sender) ? amount : feeEnabled ? takeFeeAmount(sender, recipient, amount) : amount; uint256 amountRecipient = feeEnabled && isTakeTaxFees(sender) ? takeFeeAmount(sender, recipient, amount) : amount; _balances[sender] = _balances[sender].sub( amountSender, "Insufficient Balance" ); _balances[recipient] = _balances[recipient].add(amountRecipient); emit Transfer(sender, recipient, amountRecipient); return true; } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"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":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"TradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_minSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_treeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600180546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d179091556002805490911661dead179055620000486012600a620002fb565b62000058906305f5e10062000313565b600355606460035460026200006e919062000313565b6200007a91906200032d565b600455620186a0600354600162000092919062000313565b6200009e91906200032d565b6005556103e86003546002620000b5919062000313565b620000c191906200032d565b600655600d805462ffffff60a01b191690556000600e556002600f55348015620000ea57600080fd5b50600080546001600160a01b0319908116339081178355600b80549092167395efb5ae0d00c7f9108afbe067cfda2e4cb185fa178255808352600960209081526040808520805460ff19908116600190811790925585546001600160a01b0390811688528388208054831684179055308089528489208054841685179055868952600a86528489208054841685179055965416875282872080548216831790559486528186208054909516179093556003548285526007825283852081905592519283529092839290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35062000350565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200023d578160001904821115620002215762000221620001e6565b808516156200022f57918102915b93841c939080029062000201565b509250929050565b6000826200025657506001620002f5565b816200026557506000620002f5565b81600181146200027e57600281146200028957620002a9565b6001915050620002f5565b60ff8411156200029d576200029d620001e6565b50506001821b620002f5565b5060208310610133831016604e8410600b8410161715620002ce575081810a620002f5565b620002da8383620001fc565b8060001904821115620002f157620002f1620001e6565b0290505b92915050565b60006200030c60ff84168362000245565b9392505050565b8082028115828204841417620002f557620002f5620001e6565b6000826200034b57634e487b7160e01b600052601260045260246000fd5b500490565b61159b80620003606000396000f3fe60806040526004361061016a5760003560e01c80636ddd1713116100d157806395d89b411161008a578063a8aa1b3111610064578063a8aa1b3114610446578063a9059cbb14610466578063dd62ed3e14610486578063f887ea40146104cc57600080fd5b806395d89b41146103de5780639e78fb4f14610410578063a771ebc71461042557600080fd5b80636ddd17131461032757806370a0823114610348578063715018a61461037e57806372215e3f14610395578063893d20e8146103ab5780638a8c523c146103c957600080fd5b80632c817c0b116101235780632c817c0b146102635780632f54bf6e1461029b578063313ce567146102ca5780633eaaf86b146102e657806362256589146102fc5780636c0a24eb1461031157600080fd5b806306fdde031461017657806308fd3d05146101b9578063095ea7b3146101ea5780630faee56f1461020a57806318160ddd1461022e57806323b872dd1461024357600080fd5b3661017157005b600080fd5b34801561018257600080fd5b5060408051808201909152600881526748414d414a494e4760c01b60208201525b6040516101b09190611303565b60405180910390f35b3480156101c557600080fd5b50600d546101da90600160b01b900460ff1681565b60405190151581526020016101b0565b3480156101f657600080fd5b506101da610205366004611369565b6104ec565b34801561021657600080fd5b5061022060065481565b6040519081526020016101b0565b34801561023a57600080fd5b50600354610220565b34801561024f57600080fd5b506101da61025e366004611395565b610559565b34801561026f57600080fd5b50600b54610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b0565b3480156102a757600080fd5b506101da6102b63660046113d6565b6000546001600160a01b0391821691161490565b3480156102d657600080fd5b50604051601281526020016101b0565b3480156102f257600080fd5b5061022060035481565b34801561030857600080fd5b506101da61061b565b34801561031d57600080fd5b5061022060045481565b34801561033357600080fd5b50600d546101da90600160a01b900460ff1681565b34801561035457600080fd5b506102206103633660046113d6565b6001600160a01b031660009081526007602052604090205490565b34801561038a57600080fd5b5061039361065b565b005b3480156103a157600080fd5b5061022060055481565b3480156103b757600080fd5b506000546001600160a01b0316610283565b3480156103d557600080fd5b506103936106ca565b3480156103ea57600080fd5b50604080518082019091526009815268744dd2744fc373d95f60b91b60208201526101a3565b34801561041c57600080fd5b50610393610767565b34801561043157600080fd5b50600d546101da90600160a81b900460ff1681565b34801561045257600080fd5b50600c54610283906001600160a01b031681565b34801561047257600080fd5b506101da610481366004611369565b610968565b34801561049257600080fd5b506102206104a13660046113f3565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b3480156104d857600080fd5b50600d54610283906001600160a01b031681565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105479086815260200190565b60405180910390a35060015b92915050565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610606576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526008825283812033825290915291909120546105e1918490610975565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b6106118484846109a1565b90505b9392505050565b600080546001600160a01b0316331461064f5760405162461bcd60e51b81526004016106469061142c565b60405180910390fd5b50600019600455600190565b6000546001600160a01b031633146106855760405162461bcd60e51b81526004016106469061142c565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b031633146106f45760405162461bcd60e51b81526004016106469061142c565b600d54600160b01b900460ff161561074e5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610646565b600d805462ffffff60a01b19166201010160a01b179055565b6000546001600160a01b031633146107915760405162461bcd60e51b81526004016106469061142c565b600d80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156107f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610819919061144c565b6001600160a01b031663c9c6539630600d60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561087b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089f919061144c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156108ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610910919061144c565b600c80546001600160a01b0319166001600160a01b039283169081179091556000908152600a60209081526040808320805460ff1916600117905530835260088252808320600d549094168352929052206000199055565b60006106143384846109a1565b600081848411156109995760405162461bcd60e51b81526004016106469190611303565b505050900390565b60006001600160a01b038416610a075760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610646565b6001600160a01b038316610a695760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610646565b60008211610acb5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610646565b60105460ff1615610ae857610ae1848484610ebe565b9050610614565b6001600160a01b03841660009081526009602052604090205460ff16158015610b2a57506001600160a01b03831660009081526009602052604090205460ff16155b15610b7f57600d54600160b01b900460ff16610b7f5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610646565b600d54600160a01b900460ff16610b9b57610ae1848484610ebe565b600c546001600160a01b03848116911614801590610bc757506002546001600160a01b03848116911614155b8015610bec57506001600160a01b03841660009081526009602052604090205460ff16155b8015610c1157506001600160a01b03831660009081526009602052604090205460ff16155b15610cbc576001600160a01b0383166000908152600a602052604090205460ff1680610c6257506004546001600160a01b038416600090815260076020526040902054610c5f90849061147f565b11155b610cbc5760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b6064820152608401610646565b306000908152600760205260408120549050610cdb8382600554610fa4565b8015610cf45750600c546001600160a01b038581169116145b8015610d1957506001600160a01b03851660009081526009602052604090205460ff16155b15610d2757610d2783610fdc565b6001600160a01b03851660009081526009602052604081205460ff1615610d6f57600d54600160a81b900460ff16610d5f5783610d71565b610d6a8686866111a2565b610d71565b835b600d54909150600090600160a81b900460ff168015610da957506001600160a01b03871660009081526009602052604090205460ff16155b610db35784610dbe565b610dbe8787876111a2565b9050610e268260405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b815250600760008b6001600160a01b03166001600160a01b03168152602001908152602001600020546109759092919063ffffffff16565b6001600160a01b038089166000908152600760205260408082209390935590881681522054610e5590826112be565b6001600160a01b0380881660008181526007602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ea99085815260200190565b60405180910390a35060019695505050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600790915291822054610f0f918490610975565b6001600160a01b038086166000908152600760205260408082209390935590851681522054610f3e90836112be565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f929086815260200190565b60405180910390a35060019392505050565b60105460009060ff16158015610fc35750600d54600160a01b900460ff165b8015610fce57508184115b801561061157505010919050565b6010805460ff1916600117905530600090815260076020526040812054905060006110128361100d846006546112ca565b6112ca565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061104c5761104c611492565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156110a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c9919061144c565b816001815181106110dc576110dc611492565b6001600160a01b039283166020918202929092010152600d5460405163791ac94760e01b815291169063791ac947906111229085906000908690309042906004016114a8565b600060405180830381600087803b15801561113c57600080fd5b505af1158015611150573d6000803e3d6000fd5b5050600b546040514793506001600160a01b03909116915082156108fc029083906000818181858888f19350505050158015611190573d6000803e3d6000fd5b50506010805460ff1916905550505050565b600c54600090819081906064906001600160a01b03908116908716036111cc57600f5492506111e8565b600c546001600160a01b03908116908816036111e857600e5492505b60006111fe826111f888876112df565b906112eb565b3060009081526007602052604090205490915061121b90826112be565b30600081815260076020526040908190209290925590516001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061126c9085815260200190565b60405180910390a36001600160a01b03881660009081526009602052604090205460ff16156112a45761129f8387611519565b6112a6565b805b90506112b286826112f7565b98975050505050505050565b6000610614828461147f565b60008183116112d95782610614565b50919050565b6000610614828461152c565b60006106148284611543565b60006106148284611519565b600060208083528351808285015260005b8181101561133057858101830151858201604001528201611314565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461136657600080fd5b50565b6000806040838503121561137c57600080fd5b823561138781611351565b946020939093013593505050565b6000806000606084860312156113aa57600080fd5b83356113b581611351565b925060208401356113c581611351565b929592945050506040919091013590565b6000602082840312156113e857600080fd5b813561061481611351565b6000806040838503121561140657600080fd5b823561141181611351565b9150602083013561142181611351565b809150509250929050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b60006020828403121561145e57600080fd5b815161061481611351565b634e487b7160e01b600052601160045260246000fd5b8082018082111561055357610553611469565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156114f85784516001600160a01b0316835293830193918301916001016114d3565b50506001600160a01b03969096166060850152505050608001529392505050565b8181038181111561055357610553611469565b808202811582820484141761055357610553611469565b60008261156057634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212207e90c562c95efa31a44afd3a06956b03969ff8b0e9bca82d74fb2d6a1b63234b64736f6c63430008130033
Deployed Bytecode
0x60806040526004361061016a5760003560e01c80636ddd1713116100d157806395d89b411161008a578063a8aa1b3111610064578063a8aa1b3114610446578063a9059cbb14610466578063dd62ed3e14610486578063f887ea40146104cc57600080fd5b806395d89b41146103de5780639e78fb4f14610410578063a771ebc71461042557600080fd5b80636ddd17131461032757806370a0823114610348578063715018a61461037e57806372215e3f14610395578063893d20e8146103ab5780638a8c523c146103c957600080fd5b80632c817c0b116101235780632c817c0b146102635780632f54bf6e1461029b578063313ce567146102ca5780633eaaf86b146102e657806362256589146102fc5780636c0a24eb1461031157600080fd5b806306fdde031461017657806308fd3d05146101b9578063095ea7b3146101ea5780630faee56f1461020a57806318160ddd1461022e57806323b872dd1461024357600080fd5b3661017157005b600080fd5b34801561018257600080fd5b5060408051808201909152600881526748414d414a494e4760c01b60208201525b6040516101b09190611303565b60405180910390f35b3480156101c557600080fd5b50600d546101da90600160b01b900460ff1681565b60405190151581526020016101b0565b3480156101f657600080fd5b506101da610205366004611369565b6104ec565b34801561021657600080fd5b5061022060065481565b6040519081526020016101b0565b34801561023a57600080fd5b50600354610220565b34801561024f57600080fd5b506101da61025e366004611395565b610559565b34801561026f57600080fd5b50600b54610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b0565b3480156102a757600080fd5b506101da6102b63660046113d6565b6000546001600160a01b0391821691161490565b3480156102d657600080fd5b50604051601281526020016101b0565b3480156102f257600080fd5b5061022060035481565b34801561030857600080fd5b506101da61061b565b34801561031d57600080fd5b5061022060045481565b34801561033357600080fd5b50600d546101da90600160a01b900460ff1681565b34801561035457600080fd5b506102206103633660046113d6565b6001600160a01b031660009081526007602052604090205490565b34801561038a57600080fd5b5061039361065b565b005b3480156103a157600080fd5b5061022060055481565b3480156103b757600080fd5b506000546001600160a01b0316610283565b3480156103d557600080fd5b506103936106ca565b3480156103ea57600080fd5b50604080518082019091526009815268744dd2744fc373d95f60b91b60208201526101a3565b34801561041c57600080fd5b50610393610767565b34801561043157600080fd5b50600d546101da90600160a81b900460ff1681565b34801561045257600080fd5b50600c54610283906001600160a01b031681565b34801561047257600080fd5b506101da610481366004611369565b610968565b34801561049257600080fd5b506102206104a13660046113f3565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b3480156104d857600080fd5b50600d54610283906001600160a01b031681565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105479086815260200190565b60405180910390a35060015b92915050565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610606576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526008825283812033825290915291909120546105e1918490610975565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b6106118484846109a1565b90505b9392505050565b600080546001600160a01b0316331461064f5760405162461bcd60e51b81526004016106469061142c565b60405180910390fd5b50600019600455600190565b6000546001600160a01b031633146106855760405162461bcd60e51b81526004016106469061142c565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b031633146106f45760405162461bcd60e51b81526004016106469061142c565b600d54600160b01b900460ff161561074e5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610646565b600d805462ffffff60a01b19166201010160a01b179055565b6000546001600160a01b031633146107915760405162461bcd60e51b81526004016106469061142c565b600d80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156107f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610819919061144c565b6001600160a01b031663c9c6539630600d60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561087b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089f919061144c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156108ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610910919061144c565b600c80546001600160a01b0319166001600160a01b039283169081179091556000908152600a60209081526040808320805460ff1916600117905530835260088252808320600d549094168352929052206000199055565b60006106143384846109a1565b600081848411156109995760405162461bcd60e51b81526004016106469190611303565b505050900390565b60006001600160a01b038416610a075760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610646565b6001600160a01b038316610a695760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610646565b60008211610acb5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610646565b60105460ff1615610ae857610ae1848484610ebe565b9050610614565b6001600160a01b03841660009081526009602052604090205460ff16158015610b2a57506001600160a01b03831660009081526009602052604090205460ff16155b15610b7f57600d54600160b01b900460ff16610b7f5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610646565b600d54600160a01b900460ff16610b9b57610ae1848484610ebe565b600c546001600160a01b03848116911614801590610bc757506002546001600160a01b03848116911614155b8015610bec57506001600160a01b03841660009081526009602052604090205460ff16155b8015610c1157506001600160a01b03831660009081526009602052604090205460ff16155b15610cbc576001600160a01b0383166000908152600a602052604090205460ff1680610c6257506004546001600160a01b038416600090815260076020526040902054610c5f90849061147f565b11155b610cbc5760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b6064820152608401610646565b306000908152600760205260408120549050610cdb8382600554610fa4565b8015610cf45750600c546001600160a01b038581169116145b8015610d1957506001600160a01b03851660009081526009602052604090205460ff16155b15610d2757610d2783610fdc565b6001600160a01b03851660009081526009602052604081205460ff1615610d6f57600d54600160a81b900460ff16610d5f5783610d71565b610d6a8686866111a2565b610d71565b835b600d54909150600090600160a81b900460ff168015610da957506001600160a01b03871660009081526009602052604090205460ff16155b610db35784610dbe565b610dbe8787876111a2565b9050610e268260405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b815250600760008b6001600160a01b03166001600160a01b03168152602001908152602001600020546109759092919063ffffffff16565b6001600160a01b038089166000908152600760205260408082209390935590881681522054610e5590826112be565b6001600160a01b0380881660008181526007602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ea99085815260200190565b60405180910390a35060019695505050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600790915291822054610f0f918490610975565b6001600160a01b038086166000908152600760205260408082209390935590851681522054610f3e90836112be565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f929086815260200190565b60405180910390a35060019392505050565b60105460009060ff16158015610fc35750600d54600160a01b900460ff165b8015610fce57508184115b801561061157505010919050565b6010805460ff1916600117905530600090815260076020526040812054905060006110128361100d846006546112ca565b6112ca565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061104c5761104c611492565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156110a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c9919061144c565b816001815181106110dc576110dc611492565b6001600160a01b039283166020918202929092010152600d5460405163791ac94760e01b815291169063791ac947906111229085906000908690309042906004016114a8565b600060405180830381600087803b15801561113c57600080fd5b505af1158015611150573d6000803e3d6000fd5b5050600b546040514793506001600160a01b03909116915082156108fc029083906000818181858888f19350505050158015611190573d6000803e3d6000fd5b50506010805460ff1916905550505050565b600c54600090819081906064906001600160a01b03908116908716036111cc57600f5492506111e8565b600c546001600160a01b03908116908816036111e857600e5492505b60006111fe826111f888876112df565b906112eb565b3060009081526007602052604090205490915061121b90826112be565b30600081815260076020526040908190209290925590516001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061126c9085815260200190565b60405180910390a36001600160a01b03881660009081526009602052604090205460ff16156112a45761129f8387611519565b6112a6565b805b90506112b286826112f7565b98975050505050505050565b6000610614828461147f565b60008183116112d95782610614565b50919050565b6000610614828461152c565b60006106148284611543565b60006106148284611519565b600060208083528351808285015260005b8181101561133057858101830151858201604001528201611314565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461136657600080fd5b50565b6000806040838503121561137c57600080fd5b823561138781611351565b946020939093013593505050565b6000806000606084860312156113aa57600080fd5b83356113b581611351565b925060208401356113c581611351565b929592945050506040919091013590565b6000602082840312156113e857600080fd5b813561061481611351565b6000806040838503121561140657600080fd5b823561141181611351565b9150602083013561142181611351565b809150509250929050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b60006020828403121561145e57600080fd5b815161061481611351565b634e487b7160e01b600052601160045260246000fd5b8082018082111561055357610553611469565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156114f85784516001600160a01b0316835293830193918301916001016114d3565b50506001600160a01b03969096166060850152505050608001529392505050565b8181038181111561055357610553611469565b808202811582820484141761055357610553611469565b60008261156057634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212207e90c562c95efa31a44afd3a06956b03969ff8b0e9bca82d74fb2d6a1b63234b64736f6c63430008130033
Deployed Bytecode Sourcemap
16042:8519:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17808:94;;;;;;;;;;-1:-1:-1;17889:5:0;;;;;;;;;;;;-1:-1:-1;;;17889:5:0;;;;17808:94;;;;;;;:::i;:::-;;;;;;;;17032:31;;;;;;;;;;-1:-1:-1;17032:31:0;;;;-1:-1:-1;;;17032:31:0;;;;;;;;;732:14:1;;725:22;707:41;;695:2;680:18;17032:31:0;567:187:1;19067:241:0;;;;;;;;;;-1:-1:-1;19067:241:0;;;;;:::i;:::-;;:::i;16596:54::-;;;;;;;;;;;;;;;;;;;1361:25:1;;;1349:2;1334:18;16596:54:0;1215:177:1;17910:102:0;;;;;;;;;;-1:-1:-1;17992:12:0;;17910:102;;19505:424;;;;;;;;;;-1:-1:-1;19505:424:0;;;;;:::i;:::-;;:::i;16863:26::-;;;;;;;;;;-1:-1:-1;16863:26:0;;;;-1:-1:-1;;;;;16863:26:0;;;;;;-1:-1:-1;;;;;2022:32:1;;;2004:51;;1992:2;1977:18;16863:26:0;1858:203:1;9074:103:0;;;;;;;;;;-1:-1:-1;9074:103:0;;;;;:::i;:::-;9129:4;9164:5;-1:-1:-1;;;;;9153:16:0;;;9164:5;;9153:16;;9074:103;18020:94;;;;;;;;;;-1:-1:-1;18020:94:0;;16386:2;2460:36:1;;2448:2;2433:18;18020:94:0;2318:184:1;16397:61:0;;;;;;;;;;;;;;;;22391:131;;;;;;;;;;;;;:::i;16465:58::-;;;;;;;;;;;;;;;;16957:31;;;;;;;;;;-1:-1:-1;16957:31:0;;;;-1:-1:-1;;;16957:31:0;;;;;;18328:119;;;;;;;;;;-1:-1:-1;18328:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;18421:18:0;18394:7;18421:18;;;:9;:18;;;;;;;18328:119;9185:131;;;;;;;;;;;;;:::i;:::-;;16530:59;;;;;;;;;;;;;;;;18228:92;;;;;;;;;;-1:-1:-1;18280:7:0;18307:5;-1:-1:-1;;;;;18307:5:0;18228:92;;22186:197;;;;;;;;;;;;;:::i;18122:98::-;;;;;;;;;;-1:-1:-1;18205:7:0;;;;;;;;;;;;-1:-1:-1;;;18205:7:0;;;;18122:98;;21812:366;;;;;;;;;;;;;:::i;16995:30::-;;;;;;;;;;-1:-1:-1;16995:30:0;;;;-1:-1:-1;;;16995:30:0;;;;;;16896:19;;;;;;;;;;-1:-1:-1;16896:19:0;;;;-1:-1:-1;;;;;16896:19:0;;;19316:181;;;;;;;;;;-1:-1:-1;19316:181:0;;;;;:::i;:::-;;:::i;18887:172::-;;;;;;;;;;-1:-1:-1;18887:172:0;;;;;:::i;:::-;-1:-1:-1;;;;;19023:19:0;;;18996:7;19023:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;18887:172;16924:24;;;;;;;;;;-1:-1:-1;16924:24:0;;;;-1:-1:-1;;;;;16924:24:0;;;19067:241;19196:10;19167:4;19184:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;19184:32:0;;;;;;;;;;:41;;;19241:37;19167:4;;19184:32;;19241:37;;;;19219:6;1361:25:1;;1349:2;1334:18;;1215:177;19241:37:0;;;;;;;;-1:-1:-1;19296:4:0;19067:241;;;;;:::o;19505:424::-;-1:-1:-1;;;;;19660:19:0;;19639:4;19660:19;;;:11;:19;;;;;;;;19680:10;19660:31;;;;;;;;-1:-1:-1;;19660:52:0;19656:206;;19763:87;;;;;;;;;;;-1:-1:-1;;;19763:87:0;;;;;;;;-1:-1:-1;;;;;19763:19:0;;-1:-1:-1;19763:19:0;;;:11;:19;;;;;19783:10;19763:31;;;;;;;;;;:87;;19817:6;;19763:53;:87::i;:::-;-1:-1:-1;;;;;19729:19:0;;;;;;:11;:19;;;;;;;;19749:10;19729:31;;;;;;;:121;19656:206;19881:40;19895:6;19903:9;19914:6;19881:13;:40::i;:::-;19874:47;;19505:424;;;;;;:::o;22391:131::-;22442:4;9164:5;;-1:-1:-1;;;;;9164:5:0;9024:10;9153:16;9008:38;;;;-1:-1:-1;;;9008:38:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;22459:16:0::1;:33:::0;22510:4:::1;22391:131:::0;:::o;9185:::-;9129:4;9164:5;-1:-1:-1;;;;;9164:5:0;9024:10;9153:16;9008:38;;;;-1:-1:-1;;;9008:38:0;;;;;;;:::i;:::-;9258:1:::1;9242:18:::0;;-1:-1:-1;;;;;;9242:18:0::1;::::0;;9276:32:::1;::::0;2004:51:1;;;9276:32:0::1;::::0;1992:2:1;1977:18;9276:32:0::1;;;;;;;9185:131::o:0;22186:197::-;9129:4;9164:5;-1:-1:-1;;;;;9164:5:0;9024:10;9153:16;9008:38;;;;-1:-1:-1;;;9008:38:0;;;;;;;:::i;:::-;22248:11:::1;::::0;-1:-1:-1;;;22248:11:0;::::1;;;22247:12;22239:48;;;::::0;-1:-1:-1;;;22239:48:0;;3663:2:1;22239:48:0::1;::::0;::::1;3645:21:1::0;3702:2;3682:18;;;3675:30;3741:25;3721:18;;;3714:53;3784:18;;22239:48:0::1;3461:347:1::0;22239:48:0::1;22300:11;:18:::0;;-1:-1:-1;;;;22357:18:0;-1:-1:-1;;;22357:18:0;;;22186:197::o;21812:366::-;9129:4;9164:5;-1:-1:-1;;;;;9164:5:0;9024:10;9153:16;9008:38;;;;-1:-1:-1;;;9008:38:0;;;;;;;:::i;:::-;21864:6:::1;:63:::0;;-1:-1:-1;;;;;;21864:63:0::1;21884:42;21864:63:::0;;::::1;::::0;;;21957:16:::1;::::0;;-1:-1:-1;;;21957:16:0;;;;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;21884:42;21957:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21945:40:0::1;;22008:4;22028:6;;;;;;;;;-1:-1:-1::0;;;;;22028:6:0::1;-1:-1:-1::0;;;;;22028:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21945:107;::::0;-1:-1:-1;;;;;;21945:107:0::1;::::0;;;;;;-1:-1:-1;;;;;4299:15:1;;;21945:107:0::1;::::0;::::1;4281:34:1::0;4351:15;;4331:18;;;4324:43;4216:18;;21945:107:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21938:4;:114:::0;;-1:-1:-1;;;;;;21938:114:0::1;-1:-1:-1::0;;;;;21938:114:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;22065:22:0;;;:16:::1;:22;::::0;;;;;;;:29;;-1:-1:-1;;22065:29:0::1;-1:-1:-1::0;22065:29:0::1;::::0;;22127:4:::1;22107:26:::0;;:11:::1;:26:::0;;;;;22142:6:::1;::::0;;;::::1;22107:43:::0;;;;;;-1:-1:-1;;22107:63:0;;21812:366::o;19316:181::-;19421:4;19445:44;19459:10;19471:9;19482:6;19445:13;:44::i;5906:240::-;6026:7;6087:12;6079:6;;;;6071:29;;;;-1:-1:-1;;;6071:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;6122:5:0;;;5906:240::o;22530:1991::-;22656:4;-1:-1:-1;;;;;22681:20:0;;22673:70;;;;-1:-1:-1;;;22673:70:0;;4580:2:1;22673:70:0;;;4562:21:1;4619:2;4599:18;;;4592:30;4658:34;4638:18;;;4631:62;-1:-1:-1;;;4709:18:1;;;4702:35;4754:19;;22673:70:0;4378:401:1;22673:70:0;-1:-1:-1;;;;;22762:23:0;;22754:71;;;;-1:-1:-1;;;22754:71:0;;4986:2:1;22754:71:0;;;4968:21:1;5025:2;5005:18;;;4998:30;5064:34;5044:18;;;5037:62;-1:-1:-1;;;5115:18:1;;;5108:33;5158:19;;22754:71:0;4784:399:1;22754:71:0;22853:1;22844:6;:10;22836:64;;;;-1:-1:-1;;;22836:64:0;;5390:2:1;22836:64:0;;;5372:21:1;5429:2;5409:18;;;5402:30;5468:34;5448:18;;;5441:62;-1:-1:-1;;;5519:18:1;;;5512:39;5568:19;;22836:64:0;5188:405:1;22836:64:0;22917:6;;;;22913:87;;;22947:41;22962:6;22970:9;22981:6;22947:14;:41::i;:::-;22940:48;;;;22913:87;-1:-1:-1;;;;;23017:20:0;;;;;;:12;:20;;;;;;;;23016:21;:49;;;;-1:-1:-1;;;;;;23042:23:0;;;;;;:12;:23;;;;;;;;23041:24;23016:49;23012:126;;;23090:11;;-1:-1:-1;;;23090:11:0;;;;23082:44;;;;-1:-1:-1;;;23082:44:0;;5800:2:1;23082:44:0;;;5782:21:1;5839:2;5819:18;;;5812:30;-1:-1:-1;;;5858:18:1;;;5851:50;5918:18;;23082:44:0;5598:344:1;23082:44:0;23155:11;;-1:-1:-1;;;23155:11:0;;;;23150:93;;23190:41;23205:6;23213:9;23224:6;23190:14;:41::i;23150:93::-;23286:4;;-1:-1:-1;;;;;23273:17:0;;;23286:4;;23273:17;;;;:51;;-1:-1:-1;23320:4:0;;-1:-1:-1;;;;;23307:17:0;;;23320:4;;23307:17;;23273:51;:89;;;;-1:-1:-1;;;;;;23342:20:0;;;;;;:12;:20;;;;;;;;23341:21;23273:89;:130;;;;-1:-1:-1;;;;;;23380:23:0;;;;;;:12;:23;;;;;;;;23379:24;23273:130;23255:387;;;-1:-1:-1;;;;;23456:27:0;;;;;;:16;:27;;;;;;;;;:101;;-1:-1:-1;23541:16:0;;-1:-1:-1;;;;;23508:20:0;;;;;;:9;:20;;;;;;:29;;23531:6;;23508:29;:::i;:::-;:49;;23456:101;23430:200;;;;-1:-1:-1;;;23430:200:0;;6411:2:1;23430:200:0;;;6393:21:1;6450:2;6430:18;;;6423:30;6489:34;6469:18;;;6462:62;-1:-1:-1;;;6540:18:1;;;6533:35;6585:19;;23430:200:0;6209:401:1;23430:200:0;23698:4;23654:23;18421:18;;;:9;:18;;;;;;23654:50;;23733:55;23748:6;23756:15;23773:14;;23733;:55::i;:::-;:89;;;;-1:-1:-1;23818:4:0;;-1:-1:-1;;;;;23805:17:0;;;23818:4;;23805:17;23733:89;:127;;;;-1:-1:-1;;;;;;23840:20:0;;;;;;:12;:20;;;;;;;;23839:21;23733:127;23715:200;;;23887:16;23896:6;23887:8;:16::i;:::-;-1:-1:-1;;;;;18851:20:0;;23927;18851;;;:12;:20;;;;;;;;18850:21;23950:121;;23983:10;;-1:-1:-1;;;23983:10:0;;;;:88;;24065:6;23950:121;;23983:88;24009:40;24023:6;24031:9;24042:6;24009:13;:40::i;:::-;23950:121;;;23974:6;23950:121;24110:10;;23927:144;;-1:-1:-1;24084:23:0;;-1:-1:-1;;;24110:10:0;;;;:35;;;;-1:-1:-1;;;;;;18851:20:0;;18826:4;18851:20;;;:12;:20;;;;;;;;18850:21;24124;24110:113;;24217:6;24110:113;;;24161:40;24175:6;24183:9;24194:6;24161:13;:40::i;:::-;24084:139;;24256:96;24292:12;24256:96;;;;;;;;;;;;;-1:-1:-1;;;24256:96:0;;;:9;:17;24266:6;-1:-1:-1;;;;;24256:17:0;-1:-1:-1;;;;;24256:17:0;;;;;;;;;;;;;:21;;:96;;;;;:::i;:::-;-1:-1:-1;;;;;24236:17:0;;;;;;;:9;:17;;;;;;:116;;;;24388:20;;;;;;;:41;;24413:15;24388:24;:41::i;:::-;-1:-1:-1;;;;;24365:20:0;;;;;;;:9;:20;;;;;;;:64;;;;24447:44;;;;;;;;;;24475:15;1361:25:1;;1349:2;1334:18;;1215:177;24447:44:0;;;;;;;;-1:-1:-1;24509:4:0;;22530:1991;-1:-1:-1;;;;;;22530:1991:0:o;21403:401::-;21567:90;;;;;;;;;;;-1:-1:-1;;;21567:90:0;;;;;;;;-1:-1:-1;;;;;21567:17:0;;21530:4;21567:17;;;:9;:17;;;;;;;:90;;21603:6;;21567:21;:90::i;:::-;-1:-1:-1;;;;;21547:17:0;;;;;;;:9;:17;;;;;;:110;;;;21691:20;;;;;;;:32;;21716:6;21691:24;:32::i;:::-;-1:-1:-1;;;;;21668:20:0;;;;;;;:9;:20;;;;;;;:55;;;;21739:35;;;;;;;;;;21767:6;1361:25:1;;1349:2;1334:18;;1215:177;21739:35:0;;;;;;;;-1:-1:-1;21792:4:0;21403:401;;;;;:::o;18570:186::-;18709:6;;18684:4;;18709:6;;18708:7;:22;;;;-1:-1:-1;18719:11:0;;-1:-1:-1;;;18719:11:0;;;;18708:22;:31;;;;;18738:1;18734;:5;18708:31;:40;;;;-1:-1:-1;;;18743:5:0;18570:186;-1:-1:-1;18570:186:0:o;20702:693::-;17202:6;:13;;-1:-1:-1;;17202:13:0;17211:4;17202:13;;;20814:4:::1;-1:-1:-1::0;18421:18:0;;;:9;:18;;;;;;20765:55:::1;;20831:20;20854:88;20872:6;20893:38;20897:20;20919:11;;20893:3;:38::i;:::-;20854:3;:88::i;:::-;20979:16;::::0;;20993:1:::1;20979:16:::0;;;;;::::1;::::0;;20831:111;;-1:-1:-1;20955:21:0::1;::::0;20979:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;20979:16:0::1;20955:40;;21024:4;21006;21011:1;21006:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21006:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;21050:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;21050:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;21006:7;;21050:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21040:4;21045:1;21040:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21040:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;21076:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;21076:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;21148:12;;21076:6:::1;::::0;21191:4;;21218::::1;::::0;21238:15:::1;::::0;21076:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;21346:11:0::1;::::0;21338:49:::1;::::0;21306:21:::1;::::0;-1:-1:-1;;;;;;21346:11:0;;::::1;::::0;-1:-1:-1;21338:49:0;::::1;;;::::0;21306:21;;21277:26:::1;21338:49:::0;21277:26;21338:49;21306:21;21346:11;21338:49;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;17238:6:0;:14;;-1:-1:-1;;17238:14:0;;;-1:-1:-1;;;;20702:693:0:o;19985:709::-;20237:4;;20111:7;;;;;;20204:3;;-1:-1:-1;;;;;20237:4:0;;;20224:17;;;;20220:148;;20268:13;;20258:23;;20220:148;;;20313:4;;-1:-1:-1;;;;;20313:4:0;;;20303:14;;;;20299:69;;20344:12;;20334:22;;20299:69;20380:17;20400:39;20424:14;20400:19;:6;20411:7;20400:10;:19::i;:::-;:23;;:39::i;:::-;20495:4;20477:24;;;;:9;:24;;;;;;20380:59;;-1:-1:-1;20477:39:0;;20380:59;20477:28;:39::i;:::-;20468:4;20450:24;;;;:9;:24;;;;;;;:66;;;;20532:42;;-1:-1:-1;;;;;20532:42:0;;;;;;;20564:9;1361:25:1;;1349:2;1334:18;;1215:177;20532:42:0;;;;;;;;-1:-1:-1;;;;;18851:20:0;;18826:4;18851:20;;;:12;:20;;;;;;;;18850:21;20597:48;;20633:12;20642:3;20633:6;:12;:::i;:::-;20597:48;;;20621:9;20597:48;20585:60;-1:-1:-1;20665:21:0;:6;20585:60;20665:10;:21::i;:::-;20658:28;19985:709;-1:-1:-1;;;;;;;;19985:709:0:o;3627:98::-;3685:7;3712:5;3716:1;3712;:5;:::i;18455:107::-;18512:7;18544:1;18540;:5;18539:15;;18553:1;18539:15;;;-1:-1:-1;18549:1:0;18455:107;-1:-1:-1;18455:107:0:o;4365:98::-;4423:7;4450:5;4454:1;4450;:5;:::i;4764:98::-;4822:7;4849:5;4853:1;4849;:5;:::i;4008:98::-;4066:7;4093:5;4097:1;4093;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;759:131::-;-1:-1:-1;;;;;834:31:1;;824:42;;814:70;;880:1;877;870:12;814:70;759:131;:::o;895:315::-;963:6;971;1024:2;1012:9;1003:7;999:23;995:32;992:52;;;1040:1;1037;1030:12;992:52;1079:9;1066:23;1098:31;1123:5;1098:31;:::i;:::-;1148:5;1200:2;1185:18;;;;1172:32;;-1:-1:-1;;;895:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2066:247::-;2125:6;2178:2;2166:9;2157:7;2153:23;2149:32;2146:52;;;2194:1;2191;2184:12;2146:52;2233:9;2220:23;2252:31;2277:5;2252:31;:::i;2507:388::-;2575:6;2583;2636:2;2624:9;2615:7;2611:23;2607:32;2604:52;;;2652:1;2649;2642:12;2604:52;2691:9;2678:23;2710:31;2735:5;2710:31;:::i;:::-;2760:5;-1:-1:-1;2817:2:1;2802:18;;2789:32;2830:33;2789:32;2830:33;:::i;:::-;2882:7;2872:17;;;2507:388;;;;;:::o;3127:329::-;3329:2;3311:21;;;3368:1;3348:18;;;3341:29;-1:-1:-1;;;3401:2:1;3386:18;;3379:36;3447:2;3432:18;;3127:329::o;3813:251::-;3883:6;3936:2;3924:9;3915:7;3911:23;3907:32;3904:52;;;3952:1;3949;3942:12;3904:52;3984:9;3978:16;4003:31;4028:5;4003:31;:::i;5947:127::-;6008:10;6003:3;5999:20;5996:1;5989:31;6039:4;6036:1;6029:15;6063:4;6060:1;6053:15;6079:125;6144:9;;;6165:10;;;6162:36;;;6178:18;;:::i;6747:127::-;6808:10;6803:3;6799:20;6796:1;6789:31;6839:4;6836:1;6829:15;6863:4;6860:1;6853:15;6879:980;7141:4;7189:3;7178:9;7174:19;7220:6;7209:9;7202:25;7246:2;7284:6;7279:2;7268:9;7264:18;7257:34;7327:3;7322:2;7311:9;7307:18;7300:31;7351:6;7386;7380:13;7417:6;7409;7402:22;7455:3;7444:9;7440:19;7433:26;;7494:2;7486:6;7482:15;7468:29;;7515:1;7525:195;7539:6;7536:1;7533:13;7525:195;;;7604:13;;-1:-1:-1;;;;;7600:39:1;7588:52;;7695:15;;;;7660:12;;;;7636:1;7554:9;7525:195;;;-1:-1:-1;;;;;;;7776:32:1;;;;7771:2;7756:18;;7749:60;-1:-1:-1;;;7840:3:1;7825:19;7818:35;7737:3;6879:980;-1:-1:-1;;;6879:980:1:o;7864:128::-;7931:9;;;7952:11;;;7949:37;;;7966:18;;:::i;7997:168::-;8070:9;;;8101;;8118:15;;;8112:22;;8098:37;8088:71;;8139:18;;:::i;8170:217::-;8210:1;8236;8226:132;;8280:10;8275:3;8271:20;8268:1;8261:31;8315:4;8312:1;8305:15;8343:4;8340:1;8333:15;8226:132;-1:-1:-1;8372:9:1;;8170:217::o
Swarm Source
ipfs://7e90c562c95efa31a44afd3a06956b03969ff8b0e9bca82d74fb2d6a1b63234b
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.