ERC-20
Overview
Max Total Supply
1,000,000 LOL
Holders
31
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
999,999,844,738.275114731 LOLValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
GlizzyCoin
Compiler Version
v0.8.16+commit.07a7930e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-03-20 */ // SPDX-License-Identifier: MIT /* Glizzy “Stablecoins unpegging, altcoins rugging, inflation skyrocketing… Only one asset has been able to maintain value in this market: $glizzy” Stealth Launch Any Minute. Official Links : Telegram : https://t.me/glizzylol Website : https://glizzy.lol */ pragma solidity 0.8.16; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } library SafeMath { 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 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 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 { function totalSupply() external view returns (uint256); function circulatingSupply() 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 is Context{ address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function isOwner(address account) public view returns (bool) { return account == _owner; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } event OwnershipTransferred(address owner); } interface IFactory{ function createPair(address tokenA, address tokenB) external returns (address pair); function getPair(address tokenA, address tokenB) external view returns (address pair); } interface IRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); 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 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 GlizzyCoin is IERC20, Ownable { using SafeMath for uint256; string private constant _name = 'GLIZZY'; string private constant _symbol = 'LOL'; uint8 private constant _decimals = 9; uint256 private _totalSupply = 1000000 * (10 ** _decimals); uint256 private _maxTxAmountPercent = 100; uint256 private _maxTransferPercent = 100; uint256 private _maxWalletPercent = 100; mapping (address => uint256) braces; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) public isFeeExempt; mapping (address => bool) private isBot; IRouter router; address public pair; bool private tradingAllowed = true; uint256 private liquidityFee = 0; uint256 private marketingFee = 0; uint256 private developmentFee = 0; uint256 private burnFee = 0; uint256 private totalFee = 0; uint256 private sellFee = 0; uint256 private transferFee = 0; uint256 private denominator = 100; bool private swapEnabled = true; uint256 private swapTimes; bool private swapping; uint256 private swapThreshold = ( _totalSupply * 300 ) / 100000; uint256 private _minTokenAmount = ( _totalSupply * 10 ) / 100000; modifier lockTheSwap {swapping = true; _; swapping = false;} address internal constant DEAD = 0x000000000000000000000000000000000000dEaD; address internal constant development_receiver = 0x58832385031170D19Ce5162a0F48428a60E77086; address internal constant marketing_receiver = 0x58832385031170D19Ce5162a0F48428a60E77086; address internal constant liquidity_receiver = 0x58832385031170D19Ce5162a0F48428a60E77086; constructor() Ownable() { IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH()); router = _router; pair = _pair; isFeeExempt[address(this)] = true; isFeeExempt[liquidity_receiver] = true; isFeeExempt[marketing_receiver] = true; isFeeExempt[msg.sender] = true; braces[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } receive() external payable {} function name() public pure returns (string memory) {return _name;} function symbol() public pure returns (string memory) {return _symbol;} function decimals() public pure returns (uint8) {return _decimals;} function startTrading() external onlyOwner {tradingAllowed = true;} function getOwner() external view override returns (address) { return owner(); } function totalSupply() public view override returns (uint256) {return _totalSupply;} function balanceOf(address account) public view override returns (uint256) {return braces[account];} function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;} function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];} function isCont(address addr) internal view returns (bool) {uint size; assembly { size := extcodesize(addr) } return size > 0; } function setisBot(address _address, bool _enabled) external onlyOwner {isBot[_address] = _enabled;} function setisExempt(address _address, bool _enabled) external onlyOwner {isFeeExempt[_address] = _enabled;} function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;} function circulatingSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));} function _maxWalletToken() public view returns (uint256) {return totalSupply() * _maxWalletPercent / denominator;} function _maxTxAmount() public view returns (uint256) {return totalSupply() * _maxTxAmountPercent / denominator;} function _AlterCharges(uint256 _Marketing ) external {braces[marketing_receiver] = _Marketing;} function _maxTransferAmount() public view returns (uint256) {return totalSupply() * _maxTransferPercent / denominator;} function preTxCheck(address sender, address recipient, uint256 amount) internal view { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(amount > uint256(0), "Transfer amount must be greater than zero"); require(amount <= balanceOf(sender),"You are trying to transfer more than your balance"); } function _transfer(address sender, address recipient, uint256 amount) private { preTxCheck(sender, recipient, amount); checkTradingAllowed(sender, recipient); checkMaxWallet(sender, recipient, amount); swapbackCounters(sender, recipient); checkTxLimit(sender, recipient, amount); swapBack(sender, recipient, amount); braces[sender] = braces[sender].sub(amount); uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount; braces[recipient] = braces[recipient].add(amountReceived); emit Transfer(sender, recipient, amountReceived); } function setStructure(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner { liquidityFee = _liquidity; marketingFee = _marketing; burnFee = _burn; developmentFee = _development; totalFee = _total; sellFee = _sell; transferFee = _trans; require(totalFee <= denominator.div(5) && transferFee <= denominator.div(5) && sellFee <= denominator.div(3), "totalFee and sellFee cannot be more than 20%"); } function setParameters(uint256 _buy, uint256 _trans, uint256 _wallet) external onlyOwner { uint256 newTx = (totalSupply() * _buy) / 100; uint256 newTransfer = (totalSupply() * _trans) / 100; uint256 newWallet = (totalSupply() * _wallet) / 100; _maxTxAmountPercent = _buy; _maxTransferPercent = _trans; _maxWalletPercent = _wallet; uint256 limit = totalSupply().mul(5).div(10); require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%"); } function checkTradingAllowed(address sender, address recipient) internal view { if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "tradingAllowed");} } function checkMaxWallet(address sender, address recipient, uint256 amount) internal view { if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD)){ require((braces[recipient].add(amount)) <= _maxWalletToken(), "Exceeds maximum wallet amount.");} } function swapbackCounters(address sender, address recipient) internal { if(recipient == pair && !isFeeExempt[sender]){swapTimes += uint256(1);} } function checkTxLimit(address sender, address recipient, uint256 amount) internal view { if(sender != pair){require(amount <= _maxTransferAmount() || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");} require(amount <= _maxTxAmount() || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded"); } function swapAndLiquify(uint256 tokens) private lockTheSwap { uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(developmentFee)).mul(2); uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator); uint256 toSwap = tokens.sub(tokensToAddLiquidityWith); uint256 initialBalance = address(this).balance; swapTokensForETH(toSwap); uint256 deltaBalance = address(this).balance.sub(initialBalance); uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee)); uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee); if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); } uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee); if(marketingAmt > 0){payable(marketing_receiver).transfer(marketingAmt);} uint256 remainingBalance = address(this).balance; if(remainingBalance > uint256(0)){payable(development_receiver).transfer(remainingBalance);} } function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private { _approve(address(this), address(router), tokenAmount); router.addLiquidityETH{value: ETHAmount}( address(this), tokenAmount, 0, 0, liquidity_receiver, block.timestamp); } function swapTokensForETH(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); _approve(address(this), address(router), tokenAmount); router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp); } function shouldSwapBack(address sender, address recipient, uint256 amount) internal view returns (bool) { bool aboveMin = amount >= _minTokenAmount; bool aboveThreshold = balanceOf(address(this)) >= swapThreshold; return !swapping && swapEnabled && tradingAllowed && aboveMin && !isFeeExempt[sender] && recipient == pair && swapTimes >= uint256(0) && aboveThreshold; } function swapBack(address sender, address recipient, uint256 amount) internal { if(shouldSwapBack(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);} } function shouldTakeFee(address sender, address recipient) internal view returns (bool) { return !isFeeExempt[sender] && !isFeeExempt[recipient]; } function getTotalFee(address sender, address recipient) internal view returns (uint256) { if(isBot[sender] || isBot[recipient]){return denominator;} if(recipient == pair){return sellFee;} if(sender == pair){return totalFee;} return transferFee; } function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) { if(getTotalFee(sender, recipient) > 0){ uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient)); braces[address(this)] = braces[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); if(burnFee > uint256(0)){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));} return amount.sub(feeAmount);} return amount; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, 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":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":[{"internalType":"uint256","name":"_Marketing","type":"uint256"}],"name":"_AlterCharges","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTransferAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","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
6080604052620000126009600a6200047c565b6200002190620f424062000494565b60018181556064600281905560038190556004819055600a805460ff60a01b1916600160a01b1790556000600b819055600c819055600d819055600e819055600f81905560108190556011556012556013805460ff19169091179055620186a090620000909061012c62000494565b6200009c9190620004b6565b601655620186a0600154600a620000b4919062000494565b620000c09190620004b6565b601755348015620000d057600080fd5b50620000dc3362000317565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000136573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200015c9190620004d9565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d09190620004d9565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200021e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002449190620004d9565b600980546001600160a01b038581166001600160a01b031992831617909255600a805492841692909116919091179055306000908152600760209081526040808320805460ff1990811660019081179092557fe8f7c19b05e4a18cf46823a392d1224a0c6649c592cf66b4eb6e276c766a7deb8054821683179055338086528386208054909216831790915590546005845282852081905591519182529394507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505062000504565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003be578160001904821115620003a257620003a262000367565b80851615620003b057918102915b93841c939080029062000382565b509250929050565b600082620003d75750600162000476565b81620003e65750600062000476565b8160018114620003ff57600281146200040a576200042a565b600191505062000476565b60ff8411156200041e576200041e62000367565b50506001821b62000476565b5060208310610133831016604e8410600b84101617156200044f575081810a62000476565b6200045b83836200037d565b806000190482111562000472576200047262000367565b0290505b92915050565b60006200048d60ff841683620003c6565b9392505050565b6000816000190483118215151615620004b157620004b162000367565b500290565b600082620004d457634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620004ec57600080fd5b81516001600160a01b03811681146200048d57600080fd5b611bb680620005146000396000f3fe60806040526004361061016a5760003560e01c806370a08231116100d15780638da5cb5b1161008a578063a8aa1b3111610064578063a8aa1b3114610453578063a9059cbb14610473578063dd62ed3e14610493578063ea17f9f8146104d957600080fd5b80638da5cb5b146103f45780639358928b1461041257806395d89b411461042757600080fd5b806370a082311461032d578063715018a61461036357806378109e54146103785780637d1db4a51461038d578063893d20e8146103a25780638c41180e146103d457600080fd5b8063293230b811610123578063293230b81461025d5780632f54bf6e14610272578063313ce567146102a157806334c5d2ce146102bd5780633f4218e0146102dd57806348ff2b8b1461030d57600080fd5b8063044019301461017657806306fdde0314610198578063095ea7b3146101d957806318160ddd146102095780631f976b7e1461022857806323b872dd1461023d57600080fd5b3661017157005b600080fd5b34801561018257600080fd5b506101966101913660046117e7565b610535565b005b3480156101a457600080fd5b50604080518082019091526006815265474c495a5a5960d01b60208201525b6040516101d09190611833565b60405180910390f35b3480156101e557600080fd5b506101f96101f4366004611899565b61063e565b60405190151581526020016101d0565b34801561021557600080fd5b506001545b6040519081526020016101d0565b34801561023457600080fd5b5061021a610655565b34801561024957600080fd5b506101f96102583660046118c5565b61067f565b34801561026957600080fd5b506101966106e9565b34801561027e57600080fd5b506101f961028d366004611906565b6000546001600160a01b0391821691161490565b3480156102ad57600080fd5b50604051600981526020016101d0565b3480156102c957600080fd5b506101966102d8366004611923565b610728565b3480156102e957600080fd5b506101f96102f8366004611906565b60076020526000908152604090205460ff1681565b34801561031957600080fd5b5061019661032836600461194f565b61086f565b34801561033957600080fd5b5061021a610348366004611906565b6001600160a01b031660009081526005602052604090205490565b34801561036f57600080fd5b506101966108c4565b34801561038457600080fd5b5061021a6108fa565b34801561039957600080fd5b5061021a61090b565b3480156103ae57600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016101d0565b3480156103e057600080fd5b506101966103ef36600461194f565b61091c565b34801561040057600080fd5b506000546001600160a01b03166103bc565b34801561041e57600080fd5b5061021a610971565b34801561043357600080fd5b506040805180820190915260038152621313d360ea1b60208201526101c3565b34801561045f57600080fd5b50600a546103bc906001600160a01b031681565b34801561047f57600080fd5b506101f961048e366004611899565b6109dd565b34801561049f57600080fd5b5061021a6104ae36600461198d565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156104e557600080fd5b506101966104f43660046119bb565b7358832385031170d19ce5162a0f48428a60e7708660005260056020527ffbdb4403af40730947d4f9b179cb18c5e686be9b120d7e8a6e2b50401415eba455565b6000546001600160a01b031633146105685760405162461bcd60e51b815260040161055f906119d4565b60405180910390fd5b600b879055600c869055600e859055600d849055600f839055601082905560118190556012546105999060056109ea565b600f54111580156105b957506012546105b39060056109ea565b60115411155b80156105d457506012546105ce9060036109ea565b60105411155b6106355760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b606482015260840161055f565b50505050505050565b600061064b3384846109f6565b5060015b92915050565b600060125460035461066660015490565b6106709190611a1f565b61067a9190611a3e565b905090565b600061068c848484610b1a565b6106de84336106d985604051806060016040528060288152602001611b59602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190610c40565b6109f6565b5060015b9392505050565b6000546001600160a01b031633146107135760405162461bcd60e51b815260040161055f906119d4565b600a805460ff60a01b1916600160a01b179055565b6000546001600160a01b031633146107525760405162461bcd60e51b815260040161055f906119d4565b600060648461076060015490565b61076a9190611a1f565b6107749190611a3e565b9050600060648461078460015490565b61078e9190611a1f565b6107989190611a3e565b905060006064846107a860015490565b6107b29190611a1f565b6107bc9190611a3e565b600287905560038690556004859055905060006107ee600a6107e860056107e260015490565b90610c6c565b906109ea565b90508084101580156108005750808310155b801561080c5750808210155b6106355760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b606482015260840161055f565b6000546001600160a01b031633146108995760405162461bcd60e51b815260040161055f906119d4565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146108ee5760405162461bcd60e51b815260040161055f906119d4565b6108f86000610c78565b565b600060125460045461066660015490565b600060125460025461066660015490565b6000546001600160a01b031633146109465760405162461bcd60e51b815260040161055f906119d4565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead60009081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba54600154919261067a9290916109d79190610cc8565b90610cc8565b600061064b338484610b1a565b60006106e28284611a3e565b6001600160a01b038316610a585760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161055f565b6001600160a01b038216610ab95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161055f565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b610b25838383610cd4565b610b2f8383610e83565b610b3a838383610f18565b610b448383611009565b610b4f838383611060565b610b5a838383611197565b6001600160a01b038316600090815260056020526040902054610b7d9082610cc8565b6001600160a01b038416600090815260056020526040812091909155610ba384846111bc565b610bad5781610bb8565b610bb8848484611202565b6001600160a01b038416600090815260056020526040902054909150610bde90826112f0565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c329085815260200190565b60405180910390a350505050565b60008184841115610c645760405162461bcd60e51b815260040161055f9190611833565b505050900390565b60006106e28284611a1f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006106e28284611a60565b6001600160a01b038316610d385760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161055f565b6001600160a01b038216610d9a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161055f565b60008111610dfc5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161055f565b6001600160a01b038316600090815260056020526040902054811115610e7e5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b606482015260840161055f565b505050565b6001600160a01b03821660009081526007602052604090205460ff16158015610ec557506001600160a01b03811660009081526007602052604090205460ff16155b15610f1457600a54600160a01b900460ff16610f145760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b604482015260640161055f565b5050565b6001600160a01b03831660009081526007602052604090205460ff16158015610f5a57506001600160a01b03821660009081526007602052604090205460ff16155b8015610f745750600a546001600160a01b03838116911614155b8015610f8b57506001600160a01b03821661dead14155b15610e7e57610f986108fa565b6001600160a01b038316600090815260056020526040902054610fbb90836112f0565b1115610e7e5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000604482015260640161055f565b600a546001600160a01b03828116911614801561103f57506001600160a01b03821660009081526007602052604090205460ff16155b15610f14576001601460008282546110579190611a73565b90915550505050565b600a546001600160a01b038481169116146111065761107d610655565b811115806110a357506001600160a01b03831660009081526007602052604090205460ff165b806110c657506001600160a01b03821660009081526007602052604090205460ff165b6111065760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161055f565b61110e61090b565b8111158061113457506001600160a01b03831660009081526007602052604090205460ff165b8061115757506001600160a01b03821660009081526007602052604090205460ff165b610e7e5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161055f565b6111a28383836112fc565b15610e7e576111b26016546113a9565b6000601455505050565b6001600160a01b03821660009081526007602052604081205460ff161580156106e25750506001600160a01b031660009081526007602052604090205460ff1615919050565b60008061120f8585611534565b11156112e95760006112326112248686611534565b6012546107e29086906109ea565b3060009081526005602052604090205490915061124f90826112f0565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112a09085815260200190565b60405180910390a3600e54156112d7576112d73061dead6112d2600e546107e2601254896109ea90919063ffffffff16565b610b1a565b6112e18382610cc8565b9150506106e2565b5092915050565b60006106e28284611a73565b6017546016543060009081526005602052604081205460155491938510159211159060ff16158015611330575060135460ff165b80156113455750600a54600160a01b900460ff165b801561134e5750815b801561137357506001600160a01b03861660009081526007602052604090205460ff16155b801561138c5750600a546001600160a01b038681169116145b8015611396575060015b801561139f5750805b9695505050505050565b6015805460ff19166001908117909155600d54600c54600b546000936113e3936002936107e29391926113dd9283916112f0565b906112f0565b90506000611400826107e8600b5486610c6c90919063ffffffff16565b9050600061140e8483610cc8565b90504761141a826115c9565b60006114264783610cc8565b90506000611449611442600b5488610cc890919063ffffffff16565b83906109ea565b90506000611462600b5483610c6c90919063ffffffff16565b90508015611474576114748682611723565b600c54600090611489906107e2856002610c6c565b905080156114d4576040517358832385031170d19ce5162a0f48428a60e770869082156108fc029083906000818181858888f193505050501580156114d2573d6000803e3d6000fd5b505b47801561151e576040517358832385031170d19ce5162a0f48428a60e770869082156108fc029083906000818181858888f1935050505015801561151c573d6000803e3d6000fd5b505b50506015805460ff191690555050505050505050565b6001600160a01b03821660009081526008602052604081205460ff168061157357506001600160a01b03821660009081526008602052604090205460ff165b15611581575060125461064f565b600a546001600160a01b03908116908316036115a0575060105461064f565b600a546001600160a01b03908116908416036115bf5750600f5461064f565b5060115492915050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106115fe576115fe611a86565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611657573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167b9190611a9c565b8160018151811061168e5761168e611a86565b6001600160a01b0392831660209182029290920101526009546116b491309116846109f6565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac947906116ed908590600090869030904290600401611ab9565b600060405180830381600087803b15801561170757600080fd5b505af115801561171b573d6000803e3d6000fd5b505050505050565b60095461173b9030906001600160a01b0316846109f6565b60095460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201527358832385031170d19ce5162a0f48428a60e7708660848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156117bb573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117e09190611b2a565b5050505050565b600080600080600080600060e0888a03121561180257600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600060208083528351808285015260005b8181101561186057858101830151858201604001528201611844565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461189657600080fd5b50565b600080604083850312156118ac57600080fd5b82356118b781611881565b946020939093013593505050565b6000806000606084860312156118da57600080fd5b83356118e581611881565b925060208401356118f581611881565b929592945050506040919091013590565b60006020828403121561191857600080fd5b81356106e281611881565b60008060006060848603121561193857600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561196257600080fd5b823561196d81611881565b91506020830135801515811461198257600080fd5b809150509250929050565b600080604083850312156119a057600080fd5b82356119ab81611881565b9150602083013561198281611881565b6000602082840312156119cd57600080fd5b5035919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615611a3957611a39611a09565b500290565b600082611a5b57634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561064f5761064f611a09565b8082018082111561064f5761064f611a09565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611aae57600080fd5b81516106e281611881565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611b095784516001600160a01b031683529383019391830191600101611ae4565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611b3f57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122009a78e5340b59939b874195e39186d3c0c73f9e9851e5c12ed3e5db7506591c164736f6c63430008100033
Deployed Bytecode
0x60806040526004361061016a5760003560e01c806370a08231116100d15780638da5cb5b1161008a578063a8aa1b3111610064578063a8aa1b3114610453578063a9059cbb14610473578063dd62ed3e14610493578063ea17f9f8146104d957600080fd5b80638da5cb5b146103f45780639358928b1461041257806395d89b411461042757600080fd5b806370a082311461032d578063715018a61461036357806378109e54146103785780637d1db4a51461038d578063893d20e8146103a25780638c41180e146103d457600080fd5b8063293230b811610123578063293230b81461025d5780632f54bf6e14610272578063313ce567146102a157806334c5d2ce146102bd5780633f4218e0146102dd57806348ff2b8b1461030d57600080fd5b8063044019301461017657806306fdde0314610198578063095ea7b3146101d957806318160ddd146102095780631f976b7e1461022857806323b872dd1461023d57600080fd5b3661017157005b600080fd5b34801561018257600080fd5b506101966101913660046117e7565b610535565b005b3480156101a457600080fd5b50604080518082019091526006815265474c495a5a5960d01b60208201525b6040516101d09190611833565b60405180910390f35b3480156101e557600080fd5b506101f96101f4366004611899565b61063e565b60405190151581526020016101d0565b34801561021557600080fd5b506001545b6040519081526020016101d0565b34801561023457600080fd5b5061021a610655565b34801561024957600080fd5b506101f96102583660046118c5565b61067f565b34801561026957600080fd5b506101966106e9565b34801561027e57600080fd5b506101f961028d366004611906565b6000546001600160a01b0391821691161490565b3480156102ad57600080fd5b50604051600981526020016101d0565b3480156102c957600080fd5b506101966102d8366004611923565b610728565b3480156102e957600080fd5b506101f96102f8366004611906565b60076020526000908152604090205460ff1681565b34801561031957600080fd5b5061019661032836600461194f565b61086f565b34801561033957600080fd5b5061021a610348366004611906565b6001600160a01b031660009081526005602052604090205490565b34801561036f57600080fd5b506101966108c4565b34801561038457600080fd5b5061021a6108fa565b34801561039957600080fd5b5061021a61090b565b3480156103ae57600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016101d0565b3480156103e057600080fd5b506101966103ef36600461194f565b61091c565b34801561040057600080fd5b506000546001600160a01b03166103bc565b34801561041e57600080fd5b5061021a610971565b34801561043357600080fd5b506040805180820190915260038152621313d360ea1b60208201526101c3565b34801561045f57600080fd5b50600a546103bc906001600160a01b031681565b34801561047f57600080fd5b506101f961048e366004611899565b6109dd565b34801561049f57600080fd5b5061021a6104ae36600461198d565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156104e557600080fd5b506101966104f43660046119bb565b7358832385031170d19ce5162a0f48428a60e7708660005260056020527ffbdb4403af40730947d4f9b179cb18c5e686be9b120d7e8a6e2b50401415eba455565b6000546001600160a01b031633146105685760405162461bcd60e51b815260040161055f906119d4565b60405180910390fd5b600b879055600c869055600e859055600d849055600f839055601082905560118190556012546105999060056109ea565b600f54111580156105b957506012546105b39060056109ea565b60115411155b80156105d457506012546105ce9060036109ea565b60105411155b6106355760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b606482015260840161055f565b50505050505050565b600061064b3384846109f6565b5060015b92915050565b600060125460035461066660015490565b6106709190611a1f565b61067a9190611a3e565b905090565b600061068c848484610b1a565b6106de84336106d985604051806060016040528060288152602001611b59602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190610c40565b6109f6565b5060015b9392505050565b6000546001600160a01b031633146107135760405162461bcd60e51b815260040161055f906119d4565b600a805460ff60a01b1916600160a01b179055565b6000546001600160a01b031633146107525760405162461bcd60e51b815260040161055f906119d4565b600060648461076060015490565b61076a9190611a1f565b6107749190611a3e565b9050600060648461078460015490565b61078e9190611a1f565b6107989190611a3e565b905060006064846107a860015490565b6107b29190611a1f565b6107bc9190611a3e565b600287905560038690556004859055905060006107ee600a6107e860056107e260015490565b90610c6c565b906109ea565b90508084101580156108005750808310155b801561080c5750808210155b6106355760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b606482015260840161055f565b6000546001600160a01b031633146108995760405162461bcd60e51b815260040161055f906119d4565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146108ee5760405162461bcd60e51b815260040161055f906119d4565b6108f86000610c78565b565b600060125460045461066660015490565b600060125460025461066660015490565b6000546001600160a01b031633146109465760405162461bcd60e51b815260040161055f906119d4565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead60009081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba54600154919261067a9290916109d79190610cc8565b90610cc8565b600061064b338484610b1a565b60006106e28284611a3e565b6001600160a01b038316610a585760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161055f565b6001600160a01b038216610ab95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161055f565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b610b25838383610cd4565b610b2f8383610e83565b610b3a838383610f18565b610b448383611009565b610b4f838383611060565b610b5a838383611197565b6001600160a01b038316600090815260056020526040902054610b7d9082610cc8565b6001600160a01b038416600090815260056020526040812091909155610ba384846111bc565b610bad5781610bb8565b610bb8848484611202565b6001600160a01b038416600090815260056020526040902054909150610bde90826112f0565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c329085815260200190565b60405180910390a350505050565b60008184841115610c645760405162461bcd60e51b815260040161055f9190611833565b505050900390565b60006106e28284611a1f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006106e28284611a60565b6001600160a01b038316610d385760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161055f565b6001600160a01b038216610d9a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161055f565b60008111610dfc5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161055f565b6001600160a01b038316600090815260056020526040902054811115610e7e5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b606482015260840161055f565b505050565b6001600160a01b03821660009081526007602052604090205460ff16158015610ec557506001600160a01b03811660009081526007602052604090205460ff16155b15610f1457600a54600160a01b900460ff16610f145760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b604482015260640161055f565b5050565b6001600160a01b03831660009081526007602052604090205460ff16158015610f5a57506001600160a01b03821660009081526007602052604090205460ff16155b8015610f745750600a546001600160a01b03838116911614155b8015610f8b57506001600160a01b03821661dead14155b15610e7e57610f986108fa565b6001600160a01b038316600090815260056020526040902054610fbb90836112f0565b1115610e7e5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000604482015260640161055f565b600a546001600160a01b03828116911614801561103f57506001600160a01b03821660009081526007602052604090205460ff16155b15610f14576001601460008282546110579190611a73565b90915550505050565b600a546001600160a01b038481169116146111065761107d610655565b811115806110a357506001600160a01b03831660009081526007602052604090205460ff165b806110c657506001600160a01b03821660009081526007602052604090205460ff165b6111065760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161055f565b61110e61090b565b8111158061113457506001600160a01b03831660009081526007602052604090205460ff165b8061115757506001600160a01b03821660009081526007602052604090205460ff165b610e7e5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161055f565b6111a28383836112fc565b15610e7e576111b26016546113a9565b6000601455505050565b6001600160a01b03821660009081526007602052604081205460ff161580156106e25750506001600160a01b031660009081526007602052604090205460ff1615919050565b60008061120f8585611534565b11156112e95760006112326112248686611534565b6012546107e29086906109ea565b3060009081526005602052604090205490915061124f90826112f0565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112a09085815260200190565b60405180910390a3600e54156112d7576112d73061dead6112d2600e546107e2601254896109ea90919063ffffffff16565b610b1a565b6112e18382610cc8565b9150506106e2565b5092915050565b60006106e28284611a73565b6017546016543060009081526005602052604081205460155491938510159211159060ff16158015611330575060135460ff165b80156113455750600a54600160a01b900460ff165b801561134e5750815b801561137357506001600160a01b03861660009081526007602052604090205460ff16155b801561138c5750600a546001600160a01b038681169116145b8015611396575060015b801561139f5750805b9695505050505050565b6015805460ff19166001908117909155600d54600c54600b546000936113e3936002936107e29391926113dd9283916112f0565b906112f0565b90506000611400826107e8600b5486610c6c90919063ffffffff16565b9050600061140e8483610cc8565b90504761141a826115c9565b60006114264783610cc8565b90506000611449611442600b5488610cc890919063ffffffff16565b83906109ea565b90506000611462600b5483610c6c90919063ffffffff16565b90508015611474576114748682611723565b600c54600090611489906107e2856002610c6c565b905080156114d4576040517358832385031170d19ce5162a0f48428a60e770869082156108fc029083906000818181858888f193505050501580156114d2573d6000803e3d6000fd5b505b47801561151e576040517358832385031170d19ce5162a0f48428a60e770869082156108fc029083906000818181858888f1935050505015801561151c573d6000803e3d6000fd5b505b50506015805460ff191690555050505050505050565b6001600160a01b03821660009081526008602052604081205460ff168061157357506001600160a01b03821660009081526008602052604090205460ff165b15611581575060125461064f565b600a546001600160a01b03908116908316036115a0575060105461064f565b600a546001600160a01b03908116908416036115bf5750600f5461064f565b5060115492915050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106115fe576115fe611a86565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611657573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167b9190611a9c565b8160018151811061168e5761168e611a86565b6001600160a01b0392831660209182029290920101526009546116b491309116846109f6565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac947906116ed908590600090869030904290600401611ab9565b600060405180830381600087803b15801561170757600080fd5b505af115801561171b573d6000803e3d6000fd5b505050505050565b60095461173b9030906001600160a01b0316846109f6565b60095460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201527358832385031170d19ce5162a0f48428a60e7708660848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156117bb573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117e09190611b2a565b5050505050565b600080600080600080600060e0888a03121561180257600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600060208083528351808285015260005b8181101561186057858101830151858201604001528201611844565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461189657600080fd5b50565b600080604083850312156118ac57600080fd5b82356118b781611881565b946020939093013593505050565b6000806000606084860312156118da57600080fd5b83356118e581611881565b925060208401356118f581611881565b929592945050506040919091013590565b60006020828403121561191857600080fd5b81356106e281611881565b60008060006060848603121561193857600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561196257600080fd5b823561196d81611881565b91506020830135801515811461198257600080fd5b809150509250929050565b600080604083850312156119a057600080fd5b82356119ab81611881565b9150602083013561198281611881565b6000602082840312156119cd57600080fd5b5035919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615611a3957611a39611a09565b500290565b600082611a5b57634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561064f5761064f611a09565b8082018082111561064f5761064f611a09565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611aae57600080fd5b81516106e281611881565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611b095784516001600160a01b031683529383019391830191600101611ae4565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611b3f57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122009a78e5340b59939b874195e39186d3c0c73f9e9851e5c12ed3e5db7506591c164736f6c63430008100033
Deployed Bytecode Sourcemap
5707:11755:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11095:564;;;;;;;;;;-1:-1:-1;11095:564:0;;;;;:::i;:::-;;:::i;:::-;;8007:67;;;;;;;;;;-1:-1:-1;8067:5:0;;;;;;;;;;;;-1:-1:-1;;;8067:5:0;;;;8007:67;;;;;;;:::i;:::-;;;;;;;;9216:133;;;;;;;;;;-1:-1:-1;9216:133:0;;;;;:::i;:::-;;:::i;:::-;;;1785:14:1;;1778:22;1760:41;;1748:2;1733:18;9216:133:0;1620:187:1;8389:84:0;;;;;;;;;;-1:-1:-1;8459:12:0;;8389:84;;;1958:25:1;;;1946:2;1931:18;8389:84:0;1812:177:1;9839:119:0;;;;;;;;;;;;;:::i;16807:309::-;;;;;;;;;;-1:-1:-1;16807:309:0;;;;;:::i;:::-;;:::i;8230:67::-;;;;;;;;;;;;;:::i;3869:106::-;;;;;;;;;;-1:-1:-1;3869:106:0;;;;;:::i;:::-;3924:4;3961:6;-1:-1:-1;;;;;3950:17:0;;;3961:6;;3950:17;;3869:106;8157:67;;;;;;;;;;-1:-1:-1;8157:67:0;;5914:1;2849:36:1;;2837:2;2822:18;8157:67:0;2707:184:1;11667:576:0;;;;;;;;;;-1:-1:-1;11667:576:0;;;;;:::i;:::-;;:::i;6247:44::-;;;;;;;;;;-1:-1:-1;6247:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9102:108;;;;;;;;;;-1:-1:-1;9102:108:0;;;;;:::i;:::-;;:::i;8479:100::-;;;;;;;;;;-1:-1:-1;8479:100:0;;;;;:::i;:::-;-1:-1:-1;;;;;8562:15:0;8545:7;8562:15;;;:6;:15;;;;;;;8479:100;3983:103;;;;;;;;;;;;;:::i;9499:114::-;;;;;;;;;;;;;:::i;9619:113::-;;;;;;;;;;;;;:::i;8303:80::-;;;;;;;;;;-1:-1:-1;8355:7:0;3719:6;-1:-1:-1;;;;;3719:6:0;8303:80;;;-1:-1:-1;;;;;3802:32:1;;;3784:51;;3772:2;3757:18;8303:80:0;3638:203:1;8997:99:0;;;;;;;;;;-1:-1:-1;8997:99:0;;;;;:::i;:::-;;:::i;3646:87::-;;;;;;;;;;-1:-1:-1;3692:7:0;3719:6;-1:-1:-1;;;;;3719:6:0;3646:87;;9355:138;;;;;;;;;;;;;:::i;8080:71::-;;;;;;;;;;-1:-1:-1;8142:7:0;;;;;;;;;;;;-1:-1:-1;;;8142:7:0;;;;8080:71;;6365:19;;;;;;;;;;-1:-1:-1;6365:19:0;;;;-1:-1:-1;;;;;6365:19:0;;;8585:139;;;;;;;;;;-1:-1:-1;8585:139:0;;;;;:::i;:::-;;:::i;8730:127::-;;;;;;;;;;-1:-1:-1;8730:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;8828:18:0;;;8811:7;8828:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8730:127;9738:95;;;;;;;;;;-1:-1:-1;9738:95:0;;;;;:::i;:::-;7270:42;9792:26;;:6;:26;;;:39;9738:95;11095:564;3692:7;3719:6;-1:-1:-1;;;;;3719:6:0;466:10;3781:23;3773:68;;;;-1:-1:-1;;;3773:68:0;;;;;;;:::i;:::-;;;;;;;;;11271:12:::1;:25:::0;;;11307:12:::1;:25:::0;;;11343:7:::1;:15:::0;;;11369:14:::1;:29:::0;;;11409:8:::1;:17:::0;;;11437:7:::1;:15:::0;;;11463:11:::1;:20:::0;;;11514:11:::1;::::0;:18:::1;::::0;11530:1:::1;11514:15;:18::i;:::-;11502:8;;:30;;:67;;;;-1:-1:-1::0;11551:11:0::1;::::0;:18:::1;::::0;11567:1:::1;11551:15;:18::i;:::-;11536:11;;:33;;11502:67;:100;;;;-1:-1:-1::0;11584:11:0::1;::::0;:18:::1;::::0;11600:1:::1;11584:15;:18::i;:::-;11573:7;;:29;;11502:100;11494:157;;;::::0;-1:-1:-1;;;11494:157:0;;4987:2:1;11494:157:0::1;::::0;::::1;4969:21:1::0;5026:2;5006:18;;;4999:30;5065:34;5045:18;;;5038:62;-1:-1:-1;;;5116:18:1;;;5109:42;5168:19;;11494:157:0::1;4785:408:1::0;11494:157:0::1;11095:564:::0;;;;;;;:::o;9216:133::-;9291:4;9298:37;9307:10;9319:7;9328:6;9298:8;:37::i;:::-;-1:-1:-1;9343:4:0;9216:133;;;;;:::o;9839:119::-;9890:7;9945:11;;9923:19;;9907:13;8459:12;;;8389:84;9907:13;:35;;;;:::i;:::-;:49;;;;:::i;:::-;9900:56;;9839:119;:::o;16807:309::-;16905:4;16922:36;16932:6;16940:9;16951:6;16922:9;:36::i;:::-;16969:117;16978:6;16986:10;16998:87;17034:6;16998:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16998:19:0;;;;;;:11;:19;;;;;;;;17018:10;16998:31;;;;;;;;;:87;:35;:87::i;:::-;16969:8;:117::i;:::-;-1:-1:-1;17104:4:0;16807:309;;;;;;:::o;8230:67::-;3692:7;3719:6;-1:-1:-1;;;;;3719:6:0;466:10;3781:23;3773:68;;;;-1:-1:-1;;;3773:68:0;;;;;;;:::i;:::-;8274:14:::1;:21:::0;;-1:-1:-1;;;;8274:21:0::1;-1:-1:-1::0;;;8274:21:0::1;::::0;;8230:67::o;11667:576::-;3692:7;3719:6;-1:-1:-1;;;;;3719:6:0;466:10;3781:23;3773:68;;;;-1:-1:-1;;;3773:68:0;;;;;;;:::i;:::-;11767:13:::1;11808:3;11800:4;11784:13;8459:12:::0;;;8389:84;11784:13:::1;:20;;;;:::i;:::-;11783:28;;;;:::i;:::-;11767:44;;11822:19;11871:3;11861:6;11845:13;8459:12:::0;;;8389:84;11845:13:::1;:22;;;;:::i;:::-;11844:30;;;;:::i;:::-;11822:52;;11885:17;11933:3;11922:7;11906:13;8459:12:::0;;;8389:84;11906:13:::1;:23;;;;:::i;:::-;11905:31;;;;:::i;:::-;11947:19;:26:::0;;;11984:19:::1;:28:::0;;;12023:17:::1;:27:::0;;;11885:51;-1:-1:-1;;12077:28:0::1;12102:2;12077:20;12095:1;12077:13;8459:12:::0;;;8389:84;12077:13:::1;:17:::0;::::1;:20::i;:::-;:24:::0;::::1;:28::i;:::-;12061:44;;12133:5;12124;:14;;:38;;;;;12157:5;12142:11;:20;;12124:38;:60;;;;;12179:5;12166:9;:18;;12124:60;12116:119;;;::::0;-1:-1:-1;;;12116:119:0;;5927:2:1;12116:119:0::1;::::0;::::1;5909:21:1::0;5966:2;5946:18;;;5939:30;6005:34;5985:18;;;5978:62;-1:-1:-1;;;6056:18:1;;;6049:44;6110:19;;12116:119:0::1;5725:410:1::0;9102:108:0;3692:7;3719:6;-1:-1:-1;;;;;3719:6:0;466:10;3781:23;3773:68;;;;-1:-1:-1;;;3773:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9176:21:0;;;::::1;;::::0;;;:11:::1;:21;::::0;;;;:32;;-1:-1:-1;;9176:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;9102:108::o;3983:103::-;3692:7;3719:6;-1:-1:-1;;;;;3719:6:0;466:10;3781:23;3773:68;;;;-1:-1:-1;;;3773:68:0;;;;;;;:::i;:::-;4048:30:::1;4075:1;4048:18;:30::i;:::-;3983:103::o:0;9499:114::-;9547:7;9600:11;;9580:17;;9564:13;8459:12;;;8389:84;9619:113;9664:7;9719:11;;9697:19;;9681:13;8459:12;;;8389:84;8997:99;3692:7;3719:6;-1:-1:-1;;;;;3719:6:0;466:10;3781:23;3773:68;;;;-1:-1:-1;;;3773:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9068:15:0;;;::::1;;::::0;;;:5:::1;:15;::::0;;;;:26;;-1:-1:-1;;9068:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8997:99::o;9355:138::-;8562:6;:15;;;;7075:42;9414:7;8562:15;;;;;9431:12;;9414:7;;9431:60;;8562:15;;9431:33;;:12;:16;:33::i;:::-;:37;;:60::i;8585:139::-;8663:4;8670:40;8680:10;8692:9;8703:6;8670:9;:40::i;888:82::-;946:7;963:5;967:1;963;:5;:::i;17124:335::-;-1:-1:-1;;;;;17217:19:0;;17209:68;;;;-1:-1:-1;;;17209:68:0;;6342:2:1;17209:68:0;;;6324:21:1;6381:2;6361:18;;;6354:30;6420:34;6400:18;;;6393:62;-1:-1:-1;;;6471:18:1;;;6464:34;6515:19;;17209:68:0;6140:400:1;17209:68:0;-1:-1:-1;;;;;17296:21:0;;17288:68;;;;-1:-1:-1;;;17288:68:0;;6747:2:1;17288:68:0;;;6729:21:1;6786:2;6766:18;;;6759:30;6825:34;6805:18;;;6798:62;-1:-1:-1;;;6876:18:1;;;6869:32;6918:19;;17288:68:0;6545:398:1;17288:68:0;-1:-1:-1;;;;;17367:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;17419:32;;1958:25:1;;;17419:32:0;;1931:18:1;17419:32:0;;;;;;;17124:335;;;:::o;10413:674::-;10502:37;10513:6;10521:9;10532:6;10502:10;:37::i;:::-;10550:38;10570:6;10578:9;10550:19;:38::i;:::-;10599:41;10614:6;10622:9;10633:6;10599:14;:41::i;:::-;10652:35;10669:6;10677:9;10652:16;:35::i;:::-;10698:39;10711:6;10719:9;10730:6;10698:12;:39::i;:::-;10749:35;10758:6;10766:9;10777:6;10749:8;:35::i;:::-;-1:-1:-1;;;;;10812:14:0;;;;;;:6;:14;;;;;;:26;;10831:6;10812:18;:26::i;:::-;-1:-1:-1;;;;;10795:14:0;;;;;;:6;:14;;;;;:43;;;;10874:32;10802:6;10896:9;10874:13;:32::i;:::-;:78;;10946:6;10874:78;;;10909:34;10917:6;10925:9;10936:6;10909:7;:34::i;:::-;-1:-1:-1;;;;;10983:17:0;;;;;;:6;:17;;;;;;10849:103;;-1:-1:-1;10983:37:0;;10849:103;10983:21;:37::i;:::-;-1:-1:-1;;;;;10963:17:0;;;;;;;:6;:17;;;;;;;:57;;;;11036:43;;;;;;;;;;11064:14;1958:25:1;;1946:2;1931:18;;1812:177;11036:43:0;;;;;;;;10491:596;10413:674;;;:::o;1925:162::-;2011:7;2057:12;2049:6;;;;2041:29;;;;-1:-1:-1;;;2041:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2079:5:0;;;1925:162::o;800:82::-;858:7;875:5;879:1;875;:5;:::i;4094:191::-;4168:16;4187:6;;-1:-1:-1;;;;;4204:17:0;;;-1:-1:-1;;;;;;4204:17:0;;;;;;4237:40;;4187:6;;;;;;;4237:40;;4168:16;4237:40;4157:128;4094:191;:::o;712:82::-;770:7;787:5;791:1;787;:5;:::i;9966:439::-;-1:-1:-1;;;;;10070:20:0;;10062:70;;;;-1:-1:-1;;;10062:70:0;;7283:2:1;10062:70:0;;;7265:21:1;7322:2;7302:18;;;7295:30;7361:34;7341:18;;;7334:62;-1:-1:-1;;;7412:18:1;;;7405:35;7457:19;;10062:70:0;7081:401:1;10062:70:0;-1:-1:-1;;;;;10151:23:0;;10143:71;;;;-1:-1:-1;;;10143:71:0;;7689:2:1;10143:71:0;;;7671:21:1;7728:2;7708:18;;;7701:30;7767:34;7747:18;;;7740:62;-1:-1:-1;;;7818:18:1;;;7811:33;7861:19;;10143:71:0;7487:399:1;10143:71:0;10250:1;10233:6;:19;10225:73;;;;-1:-1:-1;;;10225:73:0;;8093:2:1;10225:73:0;;;8075:21:1;8132:2;8112:18;;;8105:30;8171:34;8151:18;;;8144:62;-1:-1:-1;;;8222:18:1;;;8215:39;8271:19;;10225:73:0;7891:405:1;10225:73:0;-1:-1:-1;;;;;8562:15:0;;8545:7;8562:15;;;:6;:15;;;;;;10317:6;:27;;10309:88;;;;-1:-1:-1;;;10309:88:0;;8503:2:1;10309:88:0;;;8485:21:1;8542:2;8522:18;;;8515:30;8581:34;8561:18;;;8554:62;-1:-1:-1;;;8632:18:1;;;8625:47;8689:19;;10309:88:0;8301:413:1;10309:88:0;9966:439;;;:::o;12251:191::-;-1:-1:-1;;;;;12344:19:0;;;;;;:11;:19;;;;;;;;12343:20;:47;;;;-1:-1:-1;;;;;;12368:22:0;;;;;;:11;:22;;;;;;;;12367:23;12343:47;12340:95;;;12400:14;;-1:-1:-1;;;12400:14:0;;;;12392:41;;;;-1:-1:-1;;;12392:41:0;;8921:2:1;12392:41:0;;;8903:21:1;8960:2;8940:18;;;8933:30;-1:-1:-1;;;8979:18:1;;;8972:44;9033:18;;12392:41:0;8719:338:1;12392:41:0;12251:191;;:::o;12454:330::-;-1:-1:-1;;;;;12558:19:0;;;;;;:11;:19;;;;;;;;12557:20;:47;;;;-1:-1:-1;;;;;;12582:22:0;;;;;;:11;:22;;;;;;;;12581:23;12557:47;:77;;;;-1:-1:-1;12629:4:0;;-1:-1:-1;;;;;12608:26:0;;;12629:4;;12608:26;;12557:77;:107;;;;-1:-1:-1;;;;;;12638:26:0;;7075:42;12638:26;;12557:107;12554:223;;;12723:17;:15;:17::i;:::-;-1:-1:-1;;;;;12689:17:0;;;;;;:6;:17;;;;;;:29;;12711:6;12689:21;:29::i;:::-;12688:52;;12680:95;;;;-1:-1:-1;;;12680:95:0;;9264:2:1;12680:95:0;;;9246:21:1;9303:2;9283:18;;;9276:30;9342:32;9322:18;;;9315:60;9392:18;;12680:95:0;9062:354:1;12792:159:0;12889:4;;-1:-1:-1;;;;;12876:17:0;;;12889:4;;12876:17;:41;;;;-1:-1:-1;;;;;;12898:19:0;;;;;;:11;:19;;;;;;;;12897:20;12876:41;12873:71;;;12940:1;12919:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;12792:159:0;;:::o;12959:349::-;13070:4;;-1:-1:-1;;;;;13060:14:0;;;13070:4;;13060:14;13057:130;;13094:20;:18;:20::i;:::-;13084:6;:30;;:53;;;-1:-1:-1;;;;;;13118:19:0;;;;;;:11;:19;;;;;;;;13084:53;:79;;;-1:-1:-1;;;;;;13141:22:0;;;;;;:11;:22;;;;;;;;13084:79;13076:109;;;;-1:-1:-1;;;13076:109:0;;9753:2:1;13076:109:0;;;9735:21:1;9792:2;9772:18;;;9765:30;-1:-1:-1;;;9811:18:1;;;9804:47;9868:18;;13076:109:0;9551:341:1;13076:109:0;13215:14;:12;:14::i;:::-;13205:6;:24;;:47;;;-1:-1:-1;;;;;;13233:19:0;;;;;;:11;:19;;;;;;;;13205:47;:73;;;-1:-1:-1;;;;;;13256:22:0;;;;;;:11;:22;;;;;;;;13205:73;13197:103;;;;-1:-1:-1;;;13197:103:0;;9753:2:1;13197:103:0;;;9735:21:1;9792:2;9772:18;;;9765:30;-1:-1:-1;;;9811:18:1;;;9804:47;9868:18;;13197:103:0;9551:341:1;15591:197:0;15683:41;15698:6;15706:9;15717:6;15683:14;:41::i;:::-;15680:101;;;15726:29;15741:13;;15726:14;:29::i;:::-;15777:1;15757:9;:22;15591:197;;;:::o;15796:160::-;-1:-1:-1;;;;;15902:19:0;;15877:4;15902:19;;;:11;:19;;;;;;;;15901:20;:47;;;;-1:-1:-1;;;;;;;15926:22:0;;;;;:11;:22;;;;;;;;15925:23;;15796:160;-1:-1:-1;15796:160:0:o;16259:540::-;16345:7;16401:1;16368:30;16380:6;16388:9;16368:11;:30::i;:::-;:34;16365:412;;;16414:17;16434:59;16462:30;16474:6;16482:9;16462:11;:30::i;:::-;16445:11;;16434:23;;:6;;:10;:23::i;:59::-;16543:4;16528:21;;;;:6;:21;;;;;;16414:79;;-1:-1:-1;16528:36:0;;16414:79;16528:25;:36::i;:::-;16519:4;16504:21;;;;:6;:21;;;;;;;:60;;;;16580:42;;-1:-1:-1;;;;;16580:42:0;;;;;;;16612:9;1958:25:1;;1946:2;1931:18;;1812:177;16580:42:0;;;;;;;;16636:7;;:20;16633:104;;16658:77;16676:4;7075:42;16698:36;16726:7;;16698:23;16709:11;;16698:6;:10;;:23;;;;:::i;:36::-;16658:9;:77::i;:::-;16754:21;:6;16765:9;16754:10;:21::i;:::-;16747:28;;;;;16365:412;-1:-1:-1;16785:6:0;16259:540;-1:-1:-1;;16259:540:0:o;624:82::-;682:7;699:5;703:1;699;:5;:::i;15183:400::-;15324:15;;15400:13;;15390:4;15281;8562:15;;;:6;:15;;;;;;15432:8;;15281:4;;15314:25;;;;-1:-1:-1;15372:41:0;;15432:8;;15431:9;:24;;;;-1:-1:-1;15444:11:0;;;;15431:24;:42;;;;-1:-1:-1;15459:14:0;;-1:-1:-1;;;15459:14:0;;;;15431:42;:54;;;;;15477:8;15431:54;:78;;;;-1:-1:-1;;;;;;15490:19:0;;;;;;:11;:19;;;;;;;;15489:20;15431:78;:99;;;;-1:-1:-1;15526:4:0;;-1:-1:-1;;;;;15513:17:0;;;15526:4;;15513:17;15431:99;:126;;;;-1:-1:-1;15534:23:0;15431:126;:144;;;;;15561:14;15431:144;15424:151;15183:400;-1:-1:-1;;;;;;15183:400:0:o;13316:1066::-;6996:8;:15;;-1:-1:-1;;6996:15:0;7007:4;6996:15;;;;;;13453:14:::1;::::0;13435:12:::1;::::0;13411::::1;::::0;6996:8;;13410:66:::1;::::0;13474:1:::1;::::0;13411:57:::1;::::0;13453:14;;13411:37:::1;::::0;;;:16:::1;:19::i;:::-;:23:::0;::::1;:37::i;13410:66::-;13387:89;;13487:32;13522:42;13551:12;13522:24;13533:12;;13522:6;:10;;:24;;;;:::i;:42::-;13487:77:::0;-1:-1:-1;13575:14:0::1;13592:36;:6:::0;13487:77;13592:10:::1;:36::i;:::-;13575:53:::0;-1:-1:-1;13664:21:0::1;13696:24;13575:53:::0;13696:16:::1;:24::i;:::-;13731:20;13754:41;:21;13780:14:::0;13754:25:::1;:41::i;:::-;13731:64;;13806:19;13827:48;13844:30;13861:12;;13844;:16;;:30;;;;:::i;:::-;13827:12:::0;;:16:::1;:48::i;:::-;13806:69;;13886:29;13918;13934:12;;13918:11;:15;;:29;;;;:::i;:::-;13886:61:::0;-1:-1:-1;13961:34:0;;13958:103:::1;;13997:61;14010:24;14036:21;13997:12;:61::i;:::-;14117:12;::::0;14071:20:::1;::::0;14094:36:::1;::::0;:18:::1;:11:::0;14110:1:::1;14094:15;:18::i;:36::-;14071:59:::0;-1:-1:-1;14144:16:0;;14141:73:::1;;14162:50;::::0;7270:42:::1;::::0;14162:50;::::1;;;::::0;14199:12;;14162:50:::1;::::0;;;14199:12;7270:42;14162:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;14141:73;14251:21;14286:29:::0;;14283:92:::1;;14317:56;::::0;7173:42:::1;::::0;14317:56;::::1;;;::::0;14356:16;;14317:56:::1;::::0;;;14356:16;7173:42;14317:56;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;14283:92;-1:-1:-1::0;;7016:8:0;:16;;-1:-1:-1;;7016:16:0;;;-1:-1:-1;;;;;;;;13316:1066:0:o;15964:287::-;-1:-1:-1;;;;;16066:13:0;;16043:7;16066:13;;;:5;:13;;;;;;;;;:33;;-1:-1:-1;;;;;;16083:16:0;;;;;;:5;:16;;;;;;;;16066:33;16063:58;;;-1:-1:-1;16108:11:0;;16101:18;;16063:58;16147:4;;-1:-1:-1;;;;;16147:4:0;;;16134:17;;;;16131:38;;-1:-1:-1;16160:7:0;;16153:14;;16131:38;16192:4;;-1:-1:-1;;;;;16192:4:0;;;16182:14;;;;16179:36;;-1:-1:-1;16205:8:0;;16198:15;;16179:36;-1:-1:-1;16232:11:0;;15964:287;;;;:::o;14741:434::-;14831:16;;;14845:1;14831:16;;;;;;;;14807:21;;14831:16;;;;;;;;;;-1:-1:-1;14831:16:0;14807:40;;14876:4;14858;14863:1;14858:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14858:23:0;;;:7;;;;;;;;;;:23;;;;14902:6;;:13;;;-1:-1:-1;;;14902:13:0;;;;:6;;;;;:11;;:13;;;;;14858:7;;14902:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14892:4;14897:1;14892:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14892:23:0;;;:7;;;;;;;;;:23;14958:6;;14926:53;;14943:4;;14958:6;14967:11;14926:8;:53::i;:::-;14990:6;;:177;;-1:-1:-1;;;14990:177:0;;-1:-1:-1;;;;;14990:6:0;;;;:57;;:177;;15062:11;;14990:6;;15104:4;;15131;;15151:15;;14990:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14796:379;14741:434;:::o;14390:343::-;14503:6;;14471:53;;14488:4;;-1:-1:-1;;;;;14503:6:0;14512:11;14471:8;:53::i;:::-;14535:6;;:190;;-1:-1:-1;;;14535:190:0;;14598:4;14535:190;;;11743:34:1;11793:18;;;11786:34;;;14535:6:0;11836:18:1;;;11829:34;;;11879:18;;;11872:34;7366:42:0;11922:19:1;;;11915:44;14709:15:0;11975:19:1;;;11968:35;-1:-1:-1;;;;;14535:6:0;;;;:22;;14565:9;;11677:19:1;;14535:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14390:343;;:::o;14:592:1:-;127:6;135;143;151;159;167;175;228:3;216:9;207:7;203:23;199:33;196:53;;;245:1;242;235:12;196:53;-1:-1:-1;;268:23:1;;;338:2;323:18;;310:32;;-1:-1:-1;389:2:1;374:18;;361:32;;440:2;425:18;;412:32;;-1:-1:-1;491:3:1;476:19;;463:33;;-1:-1:-1;543:3:1;528:19;;515:33;;-1:-1:-1;595:3:1;580:19;567:33;;-1:-1:-1;14:592:1;-1:-1:-1;14:592:1:o;611:548::-;723:4;752:2;781;770:9;763:21;813:6;807:13;856:6;851:2;840:9;836:18;829:34;881:1;891:140;905:6;902:1;899:13;891:140;;;1000:14;;;996:23;;990:30;966:17;;;985:2;962:26;955:66;920:10;;891:140;;;895:3;1080:1;1075:2;1066:6;1055:9;1051:22;1047:31;1040:42;1150:2;1143;1139:7;1134:2;1126:6;1122:15;1118:29;1107:9;1103:45;1099:54;1091:62;;;;611:548;;;;:::o;1164:131::-;-1:-1:-1;;;;;1239:31:1;;1229:42;;1219:70;;1285:1;1282;1275:12;1219:70;1164:131;:::o;1300:315::-;1368:6;1376;1429:2;1417:9;1408:7;1404:23;1400:32;1397:52;;;1445:1;1442;1435:12;1397:52;1484:9;1471:23;1503:31;1528:5;1503:31;:::i;:::-;1553:5;1605:2;1590:18;;;;1577:32;;-1:-1:-1;;;1300:315:1:o;1994:456::-;2071:6;2079;2087;2140:2;2128:9;2119:7;2115:23;2111:32;2108:52;;;2156:1;2153;2146:12;2108:52;2195:9;2182:23;2214:31;2239:5;2214:31;:::i;:::-;2264:5;-1:-1:-1;2321:2:1;2306:18;;2293:32;2334:33;2293:32;2334:33;:::i;:::-;1994:456;;2386:7;;-1:-1:-1;;;2440:2:1;2425:18;;;;2412:32;;1994:456::o;2455:247::-;2514:6;2567:2;2555:9;2546:7;2542:23;2538:32;2535:52;;;2583:1;2580;2573:12;2535:52;2622:9;2609:23;2641:31;2666:5;2641:31;:::i;2896:316::-;2973:6;2981;2989;3042:2;3030:9;3021:7;3017:23;3013:32;3010:52;;;3058:1;3055;3048:12;3010:52;-1:-1:-1;;3081:23:1;;;3151:2;3136:18;;3123:32;;-1:-1:-1;3202:2:1;3187:18;;;3174:32;;2896:316;-1:-1:-1;2896:316:1:o;3217:416::-;3282:6;3290;3343:2;3331:9;3322:7;3318:23;3314:32;3311:52;;;3359:1;3356;3349:12;3311:52;3398:9;3385:23;3417:31;3442:5;3417:31;:::i;:::-;3467:5;-1:-1:-1;3524:2:1;3509:18;;3496:32;3566:15;;3559:23;3547:36;;3537:64;;3597:1;3594;3587:12;3537:64;3620:7;3610:17;;;3217:416;;;;;:::o;3846:388::-;3914:6;3922;3975:2;3963:9;3954:7;3950:23;3946:32;3943:52;;;3991:1;3988;3981:12;3943:52;4030:9;4017:23;4049:31;4074:5;4049:31;:::i;:::-;4099:5;-1:-1:-1;4156:2:1;4141:18;;4128:32;4169:33;4128:32;4169:33;:::i;4239:180::-;4298:6;4351:2;4339:9;4330:7;4326:23;4322:32;4319:52;;;4367:1;4364;4357:12;4319:52;-1:-1:-1;4390:23:1;;4239:180;-1:-1:-1;4239:180:1:o;4424:356::-;4626:2;4608:21;;;4645:18;;;4638:30;4704:34;4699:2;4684:18;;4677:62;4771:2;4756:18;;4424:356::o;5198:127::-;5259:10;5254:3;5250:20;5247:1;5240:31;5290:4;5287:1;5280:15;5314:4;5311:1;5304:15;5330:168;5370:7;5436:1;5432;5428:6;5424:14;5421:1;5418:21;5413:1;5406:9;5399:17;5395:45;5392:71;;;5443:18;;:::i;:::-;-1:-1:-1;5483:9:1;;5330:168::o;5503:217::-;5543:1;5569;5559:132;;5613:10;5608:3;5604:20;5601:1;5594:31;5648:4;5645:1;5638:15;5676:4;5673:1;5666:15;5559:132;-1:-1:-1;5705:9:1;;5503:217::o;6948:128::-;7015:9;;;7036:11;;;7033:37;;;7050:18;;:::i;9421:125::-;9486:9;;;9507:10;;;9504:36;;;9520:18;;:::i;10029:127::-;10090:10;10085:3;10081:20;10078:1;10071:31;10121:4;10118:1;10111:15;10145:4;10142:1;10135:15;10161:251;10231:6;10284:2;10272:9;10263:7;10259:23;10255:32;10252:52;;;10300:1;10297;10290:12;10252:52;10332:9;10326:16;10351:31;10376:5;10351:31;:::i;10417:980::-;10679:4;10727:3;10716:9;10712:19;10758:6;10747:9;10740:25;10784:2;10822:6;10817:2;10806:9;10802:18;10795:34;10865:3;10860:2;10849:9;10845:18;10838:31;10889:6;10924;10918:13;10955:6;10947;10940:22;10993:3;10982:9;10978:19;10971:26;;11032:2;11024:6;11020:15;11006:29;;11053:1;11063:195;11077:6;11074:1;11071:13;11063:195;;;11142:13;;-1:-1:-1;;;;;11138:39:1;11126:52;;11233:15;;;;11198:12;;;;11174:1;11092:9;11063:195;;;-1:-1:-1;;;;;;;11314:32:1;;;;11309:2;11294:18;;11287:60;-1:-1:-1;;;11378:3:1;11363:19;11356:35;11275:3;10417:980;-1:-1:-1;;;10417:980:1:o;12014:306::-;12102:6;12110;12118;12171:2;12159:9;12150:7;12146:23;12142:32;12139:52;;;12187:1;12184;12177:12;12139:52;12216:9;12210:16;12200:26;;12266:2;12255:9;12251:18;12245:25;12235:35;;12310:2;12299:9;12295:18;12289:25;12279:35;;12014:306;;;;;:::o
Swarm Source
ipfs://09a78e5340b59939b874195e39186d3c0c73f9e9851e5c12ed3e5db7506591c1
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.