ERC-20
Overview
Max Total Supply
10,000,000 OCAI
Holders
354
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
3,961.757495278 OCAIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
OCAI
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2025-01-27 */ // SPDX-License-Identifier: MIT /* Website : https://www.ocnest.ai Twitter : https://x.com/ocnestai Telegram : https://t.me/OcNestAI */ pragma solidity 0.8.19; 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 { 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 totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address _owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value);} abstract contract Ownable { address internal owner; constructor(address _owner) {owner = _owner;} modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;} function isOwner(address account) public view returns (bool) {return account == owner;} function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);} 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 swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external; } contract OCAI is IERC20, Ownable { using SafeMath for uint256; string private constant _name = unicode"OcNest AI"; string private constant _symbol = unicode"OCAI"; uint8 private constant _decimals = 9; uint256 private _totalSupply = 10000000 * (10 ** _decimals); mapping (address => uint256) _balances; 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 = false; bool private swapEnabled = true; uint256 private swapTimes; bool private swapping; uint256 swapAmount = 1; uint256 private swapThreshold = ( _totalSupply * 1000 ) / 100000; uint256 private minTokenAmount = ( _totalSupply * 10 ) / 100000; modifier lockTheSwap {swapping = true; _; swapping = false;} uint256 private liquidityFee = 0; uint256 private burnFee = 0; uint256 private marketingFee = 2100; uint256 private operationsFee = 750; uint256 private treasuryFee = 750; uint256 private totalFee = 3500; uint256 private sellFee = 3500; uint256 private transferFee = 0; uint256 private denominator = 10000; address internal constant DEAD = 0x000000000000000000000000000000000000dEaD; address internal marketing_receiver = 0x048b37712F964dc70F52610287A184ac42d6FaD5; address internal operation_receiver = 0x8BcF396e182A5a5700bA851CC3aB49c2e84058A0; address internal treasury_receiver = 0xB5FEcd162f1A7151d38C78BBF432656F398505E0; address internal liquidity_receiver = 0x048b37712F964dc70F52610287A184ac42d6FaD5; uint256 public _maxTxAmount = ( _totalSupply * 100 ) / 10000; uint256 public _maxSellAmount = ( _totalSupply * 10000 ) / 10000; uint256 public _maxWalletToken = ( _totalSupply * 100 ) / 10000; constructor() Ownable(msg.sender) { 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[operation_receiver] = true; isFeeExempt[treasury_receiver] = true; isFeeExempt[msg.sender] = true; _balances[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 openTrading() external onlyOwner {tradingAllowed = true;} function getOwner() external view override returns (address) { return owner; } function balanceOf(address account) public view override returns (uint256) {return _balances[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 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 totalSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));} function shouldContractSwap(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 >= swapAmount && aboveThreshold; } function setContractSwapSettings(uint256 _swapAmount, uint256 _swapThreshold, uint256 _minTokenAmount) external onlyOwner { swapAmount = _swapAmount; swapThreshold = _totalSupply.mul(_swapThreshold).div(uint256(100000)); minTokenAmount = _totalSupply.mul(_minTokenAmount).div(uint256(100000)); } function setTransactionRequirements(uint256 _liquidity, uint256 _burn, uint256 _marketing, uint256 _operation, uint256 _treasury, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner { liquidityFee = _liquidity; marketingFee = _marketing; burnFee = _burn; operationsFee = _operation; treasuryFee = _treasury; totalFee = _total; sellFee = _sell; transferFee = _trans; require(totalFee <= denominator.div(1) && sellFee <= denominator.div(1) && transferFee <= denominator.div(1), "totalFee and sellFee cannot be more than 20%"); } function setTransactionLimits(uint256 _buy, uint256 _sell, uint256 _wallet) external onlyOwner { uint256 newTx = _totalSupply.mul(_buy).div(10000); uint256 newTransfer = _totalSupply.mul(_sell).div(10000); uint256 newWallet = _totalSupply.mul(_wallet).div(10000); _maxTxAmount = newTx; _maxSellAmount = newTransfer; _maxWalletToken = newWallet; uint256 limit = totalSupply().mul(5).div(1000); require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%"); } function setInternalAddresses(address _marketing, address _liquidity, address _operation, address _treasury) external onlyOwner { liquidity_receiver = _liquidity; marketing_receiver = _marketing; operation_receiver = _operation; treasury_receiver = _treasury; isFeeExempt[_marketing] = true; isFeeExempt[_liquidity] = true; isFeeExempt[_operation] = true; isFeeExempt[_treasury]; } function setisBot(address[] calldata addresses, bool _enabled) external onlyOwner { for(uint i=0; i < addresses.length; i++){ isBot[addresses[i]] = _enabled; } } function manualSwapOcNest() external onlyOwner { uint256 amount = balanceOf(address(this)); if(amount > swapThreshold){amount = swapThreshold;} swapAndLiquify(amount); } function rescueERC20(address _address, uint256 percent) external onlyOwner { uint256 _amount = IERC20(_address).balanceOf(address(this)).mul(percent).div(100); IERC20(_address).transfer(operation_receiver, _amount); } function swapAndLiquify(uint256 tokens) private lockTheSwap { uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(operationsFee).add(treasuryFee)).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 treasuryAmt = unitBalance.mul(2).mul(treasuryFee); if(treasuryAmt > 0){payable(treasury_receiver).transfer(treasuryAmt);} uint256 contractBalance = address(this).balance; if(contractBalance > uint256(0)){payable(operation_receiver).transfer(contractBalance);} } 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 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.sub(uint256(100));} 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)); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); if(burnFee > uint256(0) && getTotalFee(sender, recipient) > burnFee){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));} return amount.sub(feeAmount);} return amount; } function _transfer(address sender, address recipient, uint256 amount) private { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(amount <= balanceOf(sender),"You are trying to transfer more than your balance"); if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "tradingAllowed");} if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD)){ require((_balances[recipient].add(amount)) <= _maxWalletToken, "Exceeds maximum wallet amount.");} if(sender != pair){require(amount <= _maxSellAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");} require(amount <= _maxTxAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded"); if(recipient == pair && !isFeeExempt[sender]){swapTimes += uint256(1);} if(shouldContractSwap(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);} _balances[sender] = _balances[sender].sub(amount); uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount; _balances[recipient] = _balances[recipient].add(amountReceived); emit Transfer(sender, recipient, amountReceived); } 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":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxSellAmount","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":"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":"manualSwapOcNest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_minTokenAmount","type":"uint256"}],"name":"setContractSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_liquidity","type":"address"},{"internalType":"address","name":"_operation","type":"address"},{"internalType":"address","name":"_treasury","type":"address"}],"name":"setInternalAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setTransactionLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_operation","type":"uint256"},{"internalType":"uint256","name":"_treasury","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setTransactionRequirements","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","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":"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"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052620000126009600a6200051b565b62000021906298968062000533565b60018181556007805461ffff60a01b1916600160a81b179055600a55620186a09062000050906103e862000533565b6200005c91906200054d565b600b55620186a0600154600a62000074919062000533565b6200008091906200054d565b600c556000600d819055600e819055610834600f556102ee6010819055601155610dac60128190556013556014556127106015819055601680546001600160a01b031990811673048b37712f964dc70f52610287a184ac42d6fad5908117909255601780548216738bcf396e182a5a5700ba851cc3ab49c2e84058a017905560188054821673b5fecd162f1a7151d38c78bbf432656f398505e01790556019805490911690911790556001546200013990606462000533565b6200014591906200054d565b601a556127106001546127106200015d919062000533565b6200016991906200054d565b601b55612710600154606462000180919062000533565b6200018c91906200054d565b601c553480156200019c57600080fd5b50600080546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa15801562000204573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022a919062000570565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000278573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029e919062000570565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000312919062000570565b600680546001600160a01b038581166001600160a01b031992831617909255600780548484169216919091179055306000908152600460209081526040808320805460ff19908116600190811790925560195486168552828520805482168317905560165486168552828520805482168317905560175486168552828520805482168317905560185490951684528184208054861682179055338085528285208054909616821790955554600283528184208190559051908152939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350506200059b565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200045d57816000190482111562000441576200044162000406565b808516156200044f57918102915b93841c939080029062000421565b509250929050565b600082620004765750600162000515565b81620004855750600062000515565b81600181146200049e5760028114620004a957620004c9565b600191505062000515565b60ff841115620004bd57620004bd62000406565b50506001821b62000515565b5060208310610133831016604e8410600b8410161715620004ee575081810a62000515565b620004fa83836200041c565b806000190482111562000511576200051162000406565b0290505b92915050565b60006200052c60ff84168362000465565b9392505050565b808202811582820484141762000515576200051562000406565b6000826200056b57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200058357600080fd5b81516001600160a01b03811681146200052c57600080fd5b611f2380620005ab6000396000f3fe6080604052600436106101855760003560e01c80637cca52fe116100d15780639d7f15511161008a578063a9059cbb11610064578063a9059cbb146104b1578063c9567bf9146104d1578063dd62ed3e146104e6578063f2fde38b1461052c57600080fd5b80639d7f1551146104515780639d8740cb14610471578063a8aa1b311461049157600080fd5b80637cca52fe146103865780637d1db4a51461039c578063893d20e8146103b25780638cd4426d146103e457806395d89b41146104045780639cc353511461043157600080fd5b80632f54bf6e1161013e57806348ff2b8b1161011857806348ff2b8b146103055780635fd701c41461032557806370a082311461033a57806378109e541461037057600080fd5b80632f54bf6e1461028a578063313ce567146102b95780633f4218e0146102d557600080fd5b806305dc05251461019157806306fdde03146101b3578063095ea7b3146101f757806318160ddd14610227578063229b6a5e1461024a57806323b872dd1461026a57600080fd5b3661018c57005b600080fd5b34801561019d57600080fd5b506101b16101ac366004611a5f565b61054c565b005b3480156101bf57600080fd5b506040805180820190915260098152684f634e65737420414960b81b60208201525b6040516101ee9190611abb565b60405180910390f35b34801561020357600080fd5b50610217610212366004611b09565b61060b565b60405190151581526020016101ee565b34801561023357600080fd5b5061023c610622565b6040519081526020016101ee565b34801561025657600080fd5b506101b1610265366004611b43565b610693565b34801561027657600080fd5b50610217610285366004611bc9565b610734565b34801561029657600080fd5b506102176102a5366004611c0a565b6000546001600160a01b0391821691161490565b3480156102c557600080fd5b50604051600981526020016101ee565b3480156102e157600080fd5b506102176102f0366004611c0a565b60046020526000908152604090205460ff1681565b34801561031157600080fd5b506101b1610320366004611c27565b61079e565b34801561033157600080fd5b506101b16107f3565b34801561034657600080fd5b5061023c610355366004611c0a565b6001600160a01b031660009081526002602052604090205490565b34801561037c57600080fd5b5061023c601c5481565b34801561039257600080fd5b5061023c601b5481565b3480156103a857600080fd5b5061023c601a5481565b3480156103be57600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016101ee565b3480156103f057600080fd5b506101b16103ff366004611b09565b610848565b34801561041057600080fd5b506040805180820190915260048152634f43414960e01b60208201526101e1565b34801561043d57600080fd5b506101b161044c366004611c60565b61096f565b34801561045d57600080fd5b506101b161046c366004611c8c565b610aa4565b34801561047d57600080fd5b506101b161048c366004611c60565b610baa565b34801561049d57600080fd5b506007546103cc906001600160a01b031681565b3480156104bd57600080fd5b506102176104cc366004611b09565b610c10565b3480156104dd57600080fd5b506101b1610c1d565b3480156104f257600080fd5b5061023c610501366004611ce1565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561053857600080fd5b506101b1610547366004611c0a565b610c5c565b6000546001600160a01b0316331461057f5760405162461bcd60e51b815260040161057690611d0f565b60405180910390fd5b601980546001600160a01b039485166001600160a01b0319918216811790925560168054968616968216871790556017805494861694821685179055601880549390951692168217909355600093845260046020526040808520805460ff1990811660019081179092559486528186208054861682179055928552842080549093169091179091559052565b6000610618338484610cda565b5060015b92915050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead60009081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc54600154919261068e9290916106889190610dfe565b90610dfe565b905090565b6000546001600160a01b031633146106bd5760405162461bcd60e51b815260040161057690611d0f565b60005b8281101561072e5781600560008686858181106106df576106df611d2f565b90506020020160208101906106f49190611c0a565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061072681611d5b565b9150506106c0565b50505050565b6000610741848484610e0a565b610793843361078e85604051806060016040528060288152602001611ec6602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611357565b610cda565b5060015b9392505050565b6000546001600160a01b031633146107c85760405162461bcd60e51b815260040161057690611d0f565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461081d5760405162461bcd60e51b815260040161057690611d0f565b30600090815260026020526040902054600b5481111561083c5750600b545b61084581611383565b50565b6000546001600160a01b031633146108725760405162461bcd60e51b815260040161057690611d0f565b6040516370a0823160e01b81523060048201526000906108f6906064906108f09085906001600160a01b038816906370a0823190602401602060405180830381865afa1580156108c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ea9190611d74565b90611570565b9061157c565b60175460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925084169063a9059cbb906044016020604051808303816000875af115801561094b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072e9190611d8d565b6000546001600160a01b031633146109995760405162461bcd60e51b815260040161057690611d0f565b60006109b66127106108f08660015461157090919063ffffffff16565b905060006109d56127106108f08660015461157090919063ffffffff16565b905060006109f46127106108f08660015461157090919063ffffffff16565b601a849055601b839055601c81905590506000610a1a6103e86108f060056108ea610622565b9050808410158015610a2c5750808310155b8015610a385750808210155b610a9b5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b6064820152608401610576565b50505050505050565b6000546001600160a01b03163314610ace5760405162461bcd60e51b815260040161057690611d0f565b600d889055600f869055600e87905560108590556011849055601283905560138290556014819055601554610b0490600161157c565b60125411158015610b245750601554610b1e90600161157c565b60135411155b8015610b3f5750601554610b3990600161157c565b60145411155b610ba05760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b6064820152608401610576565b5050505050505050565b6000546001600160a01b03163314610bd45760405162461bcd60e51b815260040161057690611d0f565b600a839055600154610bef90620186a0906108f09085611570565b600b55600154610c0890620186a0906108f09084611570565b600c55505050565b6000610618338484610e0a565b6000546001600160a01b03163314610c475760405162461bcd60e51b815260040161057690611d0f565b6007805460ff60a01b1916600160a01b179055565b6000546001600160a01b03163314610c865760405162461bcd60e51b815260040161057690611d0f565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b038316610d3c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610576565b6001600160a01b038216610d9d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610576565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006107978284611daa565b6001600160a01b038316610e6e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610576565b6001600160a01b038216610ed05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610576565b6001600160a01b038316600090815260026020526040902054811115610f525760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610576565b6001600160a01b03831660009081526004602052604090205460ff16158015610f9457506001600160a01b03821660009081526004602052604090205460ff16155b15610fe357600754600160a01b900460ff16610fe35760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b6044820152606401610576565b6001600160a01b03831660009081526004602052604090205460ff1615801561102557506001600160a01b03821660009081526004602052604090205460ff16155b801561103f57506007546001600160a01b03838116911614155b801561105657506001600160a01b03821661dead14155b156110cf57601c546001600160a01b0383166000908152600260205260409020546110819083611588565b11156110cf5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610576565b6007546001600160a01b0384811691161461117057601b548111158061110d57506001600160a01b03831660009081526004602052604090205460ff165b8061113057506001600160a01b03821660009081526004602052604090205460ff165b6111705760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610576565b601a548111158061119957506001600160a01b03831660009081526004602052604090205460ff165b806111bc57506001600160a01b03821660009081526004602052604090205460ff165b6111fc5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610576565b6007546001600160a01b03838116911614801561123257506001600160a01b03831660009081526004602052604090205460ff16155b156112505760016008600082825461124a9190611dbd565b90915550505b61125b838383611594565b156112715761126b600b54611383565b60006008555b6001600160a01b0383166000908152600260205260409020546112949082610dfe565b6001600160a01b0384166000908152600260205260408120919091556112ba848461164e565b6112c457816112cf565b6112cf848484611694565b6001600160a01b0384166000908152600260205260409020549091506112f59082611588565b6001600160a01b0380851660008181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113499085815260200190565b60405180910390a350505050565b6000818484111561137b5760405162461bcd60e51b81526004016105769190611abb565b505050900390565b6001600960006101000a81548160ff02191690831515021790555060006113d360026108ea6011546113cd6010546113cd600f546113cd6001600d5461158890919063ffffffff16565b90611588565b905060006113f0826108f0600d548661157090919063ffffffff16565b905060006113fe8483610dfe565b90504761140a8261179b565b60006114164783610dfe565b90506000611439611432600d5488610dfe90919063ffffffff16565b839061157c565b90506000611452600d548361157090919063ffffffff16565b905080156114645761146486826118f5565b600f54600090611479906108ea856002611570565b905080156114bd576016546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156114bb573d6000803e3d6000fd5b505b6011546000906114d2906108ea866002611570565b90508015611516576018546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611514573d6000803e3d6000fd5b505b478015611559576017546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611557573d6000803e3d6000fd5b505b50506009805460ff19169055505050505050505050565b60006107978284611dd0565b60006107978284611de7565b60006107978284611dbd565b600c54600b543060009081526002602052604081205460095491938510159211159060ff161580156115cf5750600754600160a81b900460ff165b80156115e45750600754600160a01b900460ff165b80156115ed5750815b801561161257506001600160a01b03861660009081526004602052604090205460ff16155b801561162b57506007546001600160a01b038681169116145b801561163b5750600a5460085410155b80156116445750805b9695505050505050565b6001600160a01b03821660009081526004602052604081205460ff161580156107975750506001600160a01b031660009081526004602052604090205460ff1615919050565b6000806116a185856119a9565b11156117945760006116c46116b686866119a9565b6015546108ea90869061157c565b306000908152600260205260409020549091506116e19082611588565b30600081815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117329085815260200190565b60405180910390a36000600e541180156117565750600e5461175486866119a9565b115b15611782576117823061dead61177d600e546108ea6015548961157c90919063ffffffff16565b610e0a565b61178c8382610dfe565b915050610797565b5092915050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106117d0576117d0611d2f565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611829573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184d9190611e09565b8160018151811061186057611860611d2f565b6001600160a01b0392831660209182029290920101526006546118869130911684610cda565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906118bf908590600090869030904290600401611e26565b600060405180830381600087803b1580156118d957600080fd5b505af11580156118ed573d6000803e3d6000fd5b505050505050565b60065461190d9030906001600160a01b031684610cda565b60065460195460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af115801561197d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119a29190611e97565b5050505050565b6001600160a01b03821660009081526005602052604081205460ff16806119e857506001600160a01b03821660009081526005602052604090205460ff165b15611a02576015546119fb906064610dfe565b905061061c565b6007546001600160a01b0390811690831603611a21575060135461061c565b6007546001600160a01b0390811690841603611a40575060125461061c565b5060145492915050565b6001600160a01b038116811461084557600080fd5b60008060008060808587031215611a7557600080fd5b8435611a8081611a4a565b93506020850135611a9081611a4a565b92506040850135611aa081611a4a565b91506060850135611ab081611a4a565b939692955090935050565b600060208083528351808285015260005b81811015611ae857858101830151858201604001528201611acc565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215611b1c57600080fd5b8235611b2781611a4a565b946020939093013593505050565b801515811461084557600080fd5b600080600060408486031215611b5857600080fd5b833567ffffffffffffffff80821115611b7057600080fd5b818601915086601f830112611b8457600080fd5b813581811115611b9357600080fd5b8760208260051b8501011115611ba857600080fd5b60209283019550935050840135611bbe81611b35565b809150509250925092565b600080600060608486031215611bde57600080fd5b8335611be981611a4a565b92506020840135611bf981611a4a565b929592945050506040919091013590565b600060208284031215611c1c57600080fd5b813561079781611a4a565b60008060408385031215611c3a57600080fd5b8235611c4581611a4a565b91506020830135611c5581611b35565b809150509250929050565b600080600060608486031215611c7557600080fd5b505081359360208301359350604090920135919050565b600080600080600080600080610100898b031215611ca957600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b60008060408385031215611cf457600080fd5b8235611cff81611a4a565b91506020830135611c5581611a4a565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611d6d57611d6d611d45565b5060010190565b600060208284031215611d8657600080fd5b5051919050565b600060208284031215611d9f57600080fd5b815161079781611b35565b8181038181111561061c5761061c611d45565b8082018082111561061c5761061c611d45565b808202811582820484141761061c5761061c611d45565b600082611e0457634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611e1b57600080fd5b815161079781611a4a565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611e765784516001600160a01b031683529383019391830191600101611e51565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611eac57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200cfba0646963634982328987929a31636e231e1d6abef314c2baa5f58e2eee3e64736f6c63430008130033
Deployed Bytecode
0x6080604052600436106101855760003560e01c80637cca52fe116100d15780639d7f15511161008a578063a9059cbb11610064578063a9059cbb146104b1578063c9567bf9146104d1578063dd62ed3e146104e6578063f2fde38b1461052c57600080fd5b80639d7f1551146104515780639d8740cb14610471578063a8aa1b311461049157600080fd5b80637cca52fe146103865780637d1db4a51461039c578063893d20e8146103b25780638cd4426d146103e457806395d89b41146104045780639cc353511461043157600080fd5b80632f54bf6e1161013e57806348ff2b8b1161011857806348ff2b8b146103055780635fd701c41461032557806370a082311461033a57806378109e541461037057600080fd5b80632f54bf6e1461028a578063313ce567146102b95780633f4218e0146102d557600080fd5b806305dc05251461019157806306fdde03146101b3578063095ea7b3146101f757806318160ddd14610227578063229b6a5e1461024a57806323b872dd1461026a57600080fd5b3661018c57005b600080fd5b34801561019d57600080fd5b506101b16101ac366004611a5f565b61054c565b005b3480156101bf57600080fd5b506040805180820190915260098152684f634e65737420414960b81b60208201525b6040516101ee9190611abb565b60405180910390f35b34801561020357600080fd5b50610217610212366004611b09565b61060b565b60405190151581526020016101ee565b34801561023357600080fd5b5061023c610622565b6040519081526020016101ee565b34801561025657600080fd5b506101b1610265366004611b43565b610693565b34801561027657600080fd5b50610217610285366004611bc9565b610734565b34801561029657600080fd5b506102176102a5366004611c0a565b6000546001600160a01b0391821691161490565b3480156102c557600080fd5b50604051600981526020016101ee565b3480156102e157600080fd5b506102176102f0366004611c0a565b60046020526000908152604090205460ff1681565b34801561031157600080fd5b506101b1610320366004611c27565b61079e565b34801561033157600080fd5b506101b16107f3565b34801561034657600080fd5b5061023c610355366004611c0a565b6001600160a01b031660009081526002602052604090205490565b34801561037c57600080fd5b5061023c601c5481565b34801561039257600080fd5b5061023c601b5481565b3480156103a857600080fd5b5061023c601a5481565b3480156103be57600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016101ee565b3480156103f057600080fd5b506101b16103ff366004611b09565b610848565b34801561041057600080fd5b506040805180820190915260048152634f43414960e01b60208201526101e1565b34801561043d57600080fd5b506101b161044c366004611c60565b61096f565b34801561045d57600080fd5b506101b161046c366004611c8c565b610aa4565b34801561047d57600080fd5b506101b161048c366004611c60565b610baa565b34801561049d57600080fd5b506007546103cc906001600160a01b031681565b3480156104bd57600080fd5b506102176104cc366004611b09565b610c10565b3480156104dd57600080fd5b506101b1610c1d565b3480156104f257600080fd5b5061023c610501366004611ce1565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561053857600080fd5b506101b1610547366004611c0a565b610c5c565b6000546001600160a01b0316331461057f5760405162461bcd60e51b815260040161057690611d0f565b60405180910390fd5b601980546001600160a01b039485166001600160a01b0319918216811790925560168054968616968216871790556017805494861694821685179055601880549390951692168217909355600093845260046020526040808520805460ff1990811660019081179092559486528186208054861682179055928552842080549093169091179091559052565b6000610618338484610cda565b5060015b92915050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead60009081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc54600154919261068e9290916106889190610dfe565b90610dfe565b905090565b6000546001600160a01b031633146106bd5760405162461bcd60e51b815260040161057690611d0f565b60005b8281101561072e5781600560008686858181106106df576106df611d2f565b90506020020160208101906106f49190611c0a565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061072681611d5b565b9150506106c0565b50505050565b6000610741848484610e0a565b610793843361078e85604051806060016040528060288152602001611ec6602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611357565b610cda565b5060015b9392505050565b6000546001600160a01b031633146107c85760405162461bcd60e51b815260040161057690611d0f565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461081d5760405162461bcd60e51b815260040161057690611d0f565b30600090815260026020526040902054600b5481111561083c5750600b545b61084581611383565b50565b6000546001600160a01b031633146108725760405162461bcd60e51b815260040161057690611d0f565b6040516370a0823160e01b81523060048201526000906108f6906064906108f09085906001600160a01b038816906370a0823190602401602060405180830381865afa1580156108c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ea9190611d74565b90611570565b9061157c565b60175460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925084169063a9059cbb906044016020604051808303816000875af115801561094b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072e9190611d8d565b6000546001600160a01b031633146109995760405162461bcd60e51b815260040161057690611d0f565b60006109b66127106108f08660015461157090919063ffffffff16565b905060006109d56127106108f08660015461157090919063ffffffff16565b905060006109f46127106108f08660015461157090919063ffffffff16565b601a849055601b839055601c81905590506000610a1a6103e86108f060056108ea610622565b9050808410158015610a2c5750808310155b8015610a385750808210155b610a9b5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b6064820152608401610576565b50505050505050565b6000546001600160a01b03163314610ace5760405162461bcd60e51b815260040161057690611d0f565b600d889055600f869055600e87905560108590556011849055601283905560138290556014819055601554610b0490600161157c565b60125411158015610b245750601554610b1e90600161157c565b60135411155b8015610b3f5750601554610b3990600161157c565b60145411155b610ba05760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b6064820152608401610576565b5050505050505050565b6000546001600160a01b03163314610bd45760405162461bcd60e51b815260040161057690611d0f565b600a839055600154610bef90620186a0906108f09085611570565b600b55600154610c0890620186a0906108f09084611570565b600c55505050565b6000610618338484610e0a565b6000546001600160a01b03163314610c475760405162461bcd60e51b815260040161057690611d0f565b6007805460ff60a01b1916600160a01b179055565b6000546001600160a01b03163314610c865760405162461bcd60e51b815260040161057690611d0f565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b038316610d3c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610576565b6001600160a01b038216610d9d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610576565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006107978284611daa565b6001600160a01b038316610e6e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610576565b6001600160a01b038216610ed05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610576565b6001600160a01b038316600090815260026020526040902054811115610f525760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610576565b6001600160a01b03831660009081526004602052604090205460ff16158015610f9457506001600160a01b03821660009081526004602052604090205460ff16155b15610fe357600754600160a01b900460ff16610fe35760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b6044820152606401610576565b6001600160a01b03831660009081526004602052604090205460ff1615801561102557506001600160a01b03821660009081526004602052604090205460ff16155b801561103f57506007546001600160a01b03838116911614155b801561105657506001600160a01b03821661dead14155b156110cf57601c546001600160a01b0383166000908152600260205260409020546110819083611588565b11156110cf5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610576565b6007546001600160a01b0384811691161461117057601b548111158061110d57506001600160a01b03831660009081526004602052604090205460ff165b8061113057506001600160a01b03821660009081526004602052604090205460ff165b6111705760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610576565b601a548111158061119957506001600160a01b03831660009081526004602052604090205460ff165b806111bc57506001600160a01b03821660009081526004602052604090205460ff165b6111fc5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610576565b6007546001600160a01b03838116911614801561123257506001600160a01b03831660009081526004602052604090205460ff16155b156112505760016008600082825461124a9190611dbd565b90915550505b61125b838383611594565b156112715761126b600b54611383565b60006008555b6001600160a01b0383166000908152600260205260409020546112949082610dfe565b6001600160a01b0384166000908152600260205260408120919091556112ba848461164e565b6112c457816112cf565b6112cf848484611694565b6001600160a01b0384166000908152600260205260409020549091506112f59082611588565b6001600160a01b0380851660008181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113499085815260200190565b60405180910390a350505050565b6000818484111561137b5760405162461bcd60e51b81526004016105769190611abb565b505050900390565b6001600960006101000a81548160ff02191690831515021790555060006113d360026108ea6011546113cd6010546113cd600f546113cd6001600d5461158890919063ffffffff16565b90611588565b905060006113f0826108f0600d548661157090919063ffffffff16565b905060006113fe8483610dfe565b90504761140a8261179b565b60006114164783610dfe565b90506000611439611432600d5488610dfe90919063ffffffff16565b839061157c565b90506000611452600d548361157090919063ffffffff16565b905080156114645761146486826118f5565b600f54600090611479906108ea856002611570565b905080156114bd576016546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156114bb573d6000803e3d6000fd5b505b6011546000906114d2906108ea866002611570565b90508015611516576018546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611514573d6000803e3d6000fd5b505b478015611559576017546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611557573d6000803e3d6000fd5b505b50506009805460ff19169055505050505050505050565b60006107978284611dd0565b60006107978284611de7565b60006107978284611dbd565b600c54600b543060009081526002602052604081205460095491938510159211159060ff161580156115cf5750600754600160a81b900460ff165b80156115e45750600754600160a01b900460ff165b80156115ed5750815b801561161257506001600160a01b03861660009081526004602052604090205460ff16155b801561162b57506007546001600160a01b038681169116145b801561163b5750600a5460085410155b80156116445750805b9695505050505050565b6001600160a01b03821660009081526004602052604081205460ff161580156107975750506001600160a01b031660009081526004602052604090205460ff1615919050565b6000806116a185856119a9565b11156117945760006116c46116b686866119a9565b6015546108ea90869061157c565b306000908152600260205260409020549091506116e19082611588565b30600081815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117329085815260200190565b60405180910390a36000600e541180156117565750600e5461175486866119a9565b115b15611782576117823061dead61177d600e546108ea6015548961157c90919063ffffffff16565b610e0a565b61178c8382610dfe565b915050610797565b5092915050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106117d0576117d0611d2f565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611829573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184d9190611e09565b8160018151811061186057611860611d2f565b6001600160a01b0392831660209182029290920101526006546118869130911684610cda565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906118bf908590600090869030904290600401611e26565b600060405180830381600087803b1580156118d957600080fd5b505af11580156118ed573d6000803e3d6000fd5b505050505050565b60065461190d9030906001600160a01b031684610cda565b60065460195460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af115801561197d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119a29190611e97565b5050505050565b6001600160a01b03821660009081526005602052604081205460ff16806119e857506001600160a01b03821660009081526005602052604090205460ff165b15611a02576015546119fb906064610dfe565b905061061c565b6007546001600160a01b0390811690831603611a21575060135461061c565b6007546001600160a01b0390811690841603611a40575060125461061c565b5060145492915050565b6001600160a01b038116811461084557600080fd5b60008060008060808587031215611a7557600080fd5b8435611a8081611a4a565b93506020850135611a9081611a4a565b92506040850135611aa081611a4a565b91506060850135611ab081611a4a565b939692955090935050565b600060208083528351808285015260005b81811015611ae857858101830151858201604001528201611acc565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215611b1c57600080fd5b8235611b2781611a4a565b946020939093013593505050565b801515811461084557600080fd5b600080600060408486031215611b5857600080fd5b833567ffffffffffffffff80821115611b7057600080fd5b818601915086601f830112611b8457600080fd5b813581811115611b9357600080fd5b8760208260051b8501011115611ba857600080fd5b60209283019550935050840135611bbe81611b35565b809150509250925092565b600080600060608486031215611bde57600080fd5b8335611be981611a4a565b92506020840135611bf981611a4a565b929592945050506040919091013590565b600060208284031215611c1c57600080fd5b813561079781611a4a565b60008060408385031215611c3a57600080fd5b8235611c4581611a4a565b91506020830135611c5581611b35565b809150509250929050565b600080600060608486031215611c7557600080fd5b505081359360208301359350604090920135919050565b600080600080600080600080610100898b031215611ca957600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b60008060408385031215611cf457600080fd5b8235611cff81611a4a565b91506020830135611c5581611a4a565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611d6d57611d6d611d45565b5060010190565b600060208284031215611d8657600080fd5b5051919050565b600060208284031215611d9f57600080fd5b815161079781611b35565b8181038181111561061c5761061c611d45565b8082018082111561061c5761061c611d45565b808202811582820484141761061c5761061c611d45565b600082611e0457634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611e1b57600080fd5b815161079781611a4a565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611e765784516001600160a01b031683529383019391830191600101611e51565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611eac57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200cfba0646963634982328987929a31636e231e1d6abef314c2baa5f58e2eee3e64736f6c63430008130033
Deployed Bytecode Sourcemap
4782:11926:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10442:404;;;;;;;;;;-1:-1:-1;10442:404:0;;;;;:::i;:::-;;:::i;:::-;;7410:67;;;;;;;;;;-1:-1:-1;7470:5:0;;;;;;;;;;;;-1:-1:-1;;;7470:5:0;;;;7410:67;;;;;;;:::i;:::-;;;;;;;;8290:133;;;;;;;;;;-1:-1:-1;8290:133:0;;;;;:::i;:::-;;:::i;:::-;;;1864:14:1;;1857:22;1839:41;;1827:2;1812:18;8290:133:0;1699:187:1;8429:132:0;;;;;;;;;;;;;:::i;:::-;;;2037:25:1;;;2025:2;2010:18;8429:132:0;1891:177:1;10854:184:0;;;;;;;;;;-1:-1:-1;10854:184:0;;;;;:::i;:::-;;:::i;16053:309::-;;;;;;;;;;-1:-1:-1;16053:309:0;;;;;:::i;:::-;;:::i;3686:87::-;;;;;;;;;;-1:-1:-1;3686:87:0;;;;;:::i;:::-;3741:4;3766:5;-1:-1:-1;;;;;3755:16:0;;;3766:5;;3755:16;;3686:87;7560:67;;;;;;;;;;-1:-1:-1;7560:67:0;;5001:1;3806:36:1;;3794:2;3779:18;7560:67:0;3664:184:1;5196:44:0;;;;;;;;;;-1:-1:-1;5196:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8176:108;;;;;;;;;;-1:-1:-1;8176:108:0;;;;;:::i;:::-;;:::i;11046:201::-;;;;;;;;;;;;;:::i;7789:103::-;;;;;;;;;;-1:-1:-1;7789:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;7872:18:0;7855:7;7872:18;;;:9;:18;;;;;;;7789:103;6647:63;;;;;;;;;;;;;;;;6576:64;;;;;;;;;;;;;;;;6509:60;;;;;;;;;;;;;;;;7705:78;;;;;;;;;;-1:-1:-1;7757:7:0;7775:5;-1:-1:-1;;;;;7775:5:0;7705:78;;;-1:-1:-1;;;;;4404:32:1;;;4386:51;;4374:2;4359:18;7705:78:0;4240:203:1;11255:240:0;;;;;;;;;;-1:-1:-1;11255:240:0;;;;;:::i;:::-;;:::i;7483:71::-;;;;;;;;;;-1:-1:-1;7545:7:0;;;;;;;;;;;;-1:-1:-1;;;7545:7:0;;;;7483:71;;9878:556;;;;;;;;;;-1:-1:-1;9878:556:0;;;;;:::i;:::-;;:::i;9307:563::-;;;;;;;;;;-1:-1:-1;9307:563:0;;;;;:::i;:::-;;:::i;8980:319::-;;;;;;;;;;-1:-1:-1;8980:319:0;;;;;:::i;:::-;;:::i;5314:19::-;;;;;;;;;;-1:-1:-1;5314:19:0;;;;-1:-1:-1;;;;;5314:19:0;;;7898:139;;;;;;;;;;-1:-1:-1;7898:139:0;;;;;:::i;:::-;;:::i;7633:66::-;;;;;;;;;;;;;:::i;8043:127::-;;;;;;;;;;-1:-1:-1;8043:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;8141:18:0;;;8124:7;8141:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8043:127;3779:111;;;;;;;;;;-1:-1:-1;3779:111:0;;;;;:::i;:::-;;:::i;10442:404::-;3741:4;3766:5;-1:-1:-1;;;;;3766:5:0;3653:10;3755:16;3637:38;;;;-1:-1:-1;;;3637:38:0;;;;;;;:::i;:::-;;;;;;;;;10581:18:::1;:31:::0;;-1:-1:-1;;;;;10581:31:0;;::::1;-1:-1:-1::0;;;;;;10581:31:0;;::::1;::::0;::::1;::::0;;;10614:18:::1;:31:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;10647:18:::1;:31:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;10680:17:::1;:29:::0;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;10581:18:::1;10720:23:::0;;;:11:::1;:23;::::0;;;;;:30;;-1:-1:-1;;10720:30:0;;::::1;10581:31:::0;10720:30;;::::1;::::0;;;10752:23;;;;;;:30;;;::::1;::::0;::::1;::::0;;10784:23;;;;;:30;;;;::::1;::::0;;::::1;::::0;;;10816:22;;10442:404::o;8290:133::-;8365:4;8372:37;8381:10;8393:7;8402:6;8372:8;:37::i;:::-;-1:-1:-1;8417:4:0;8290:133;;;;;:::o;8429:132::-;7872:9;:18;;;;6107:42;8482:7;7872:18;;;;;8499:12;;8482:7;;8499:60;;7872:18;;8499:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;8492:67;;8429:132;:::o;10854:184::-;3741:4;3766:5;-1:-1:-1;;;;;3766:5:0;3653:10;3755:16;3637:38;;;;-1:-1:-1;;;3637:38:0;;;;;;;:::i;:::-;10951:6:::1;10947:84;10961:20:::0;;::::1;10947:84;;;11020:8;10998:5;:19;11004:9;;11014:1;11004:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10998:19:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;10998:19:0;:30;;-1:-1:-1;;10998:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10983:3;::::1;::::0;::::1;:::i;:::-;;;;10947:84;;;;10854:184:::0;;;:::o;16053:309::-;16151:4;16168:36;16178:6;16186:9;16197:6;16168:9;:36::i;:::-;16215:117;16224:6;16232:10;16244:87;16280:6;16244:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16244:19:0;;;;;;:11;:19;;;;;;;;16264:10;16244:31;;;;;;;;;:87;:35;:87::i;:::-;16215:8;:117::i;:::-;-1:-1:-1;16350:4:0;16053:309;;;;;;:::o;8176:108::-;3741:4;3766:5;-1:-1:-1;;;;;3766:5:0;3653:10;3755:16;3637:38;;;;-1:-1:-1;;;3637:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8250:21:0;;;::::1;;::::0;;;:11:::1;:21;::::0;;;;:32;;-1:-1:-1;;8250:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8176:108::o;11046:201::-;3741:4;3766:5;-1:-1:-1;;;;;3766:5:0;3653:10;3755:16;3637:38;;;;-1:-1:-1;;;3637:38:0;;;;;;;:::i;:::-;11139:4:::1;11104:14;7872:18:::0;;;:9;:18;;;;;;11168:13:::1;::::0;11159:22;::::1;11156:51;;;-1:-1:-1::0;11192:13:0::1;::::0;11156:51:::1;11217:22;11232:6;11217:14;:22::i;:::-;11093:154;11046:201::o:0;11255:240::-;3741:4;3766:5;-1:-1:-1;;;;;3766:5:0;3653:10;3755:16;3637:38;;;;-1:-1:-1;;;3637:38:0;;;;;;;:::i;:::-;11359:41:::1;::::0;-1:-1:-1;;;11359:41:0;;11394:4:::1;11359:41;::::0;::::1;4386:51:1::0;11341:15:0::1;::::0;11359:63:::1;::::0;11418:3:::1;::::0;11359:54:::1;::::0;11405:7;;-1:-1:-1;;;;;11359:26:0;::::1;::::0;::::1;::::0;4359:18:1;;11359:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45:::0;::::1;:54::i;:::-;:58:::0;::::1;:63::i;:::-;11459:18;::::0;11433:54:::1;::::0;-1:-1:-1;;;11433:54:0;;-1:-1:-1;;;;;11459:18:0;;::::1;11433:54;::::0;::::1;7189:51:1::0;7256:18;;;7249:34;;;11341:81:0;;-1:-1:-1;11433:25:0;::::1;::::0;::::1;::::0;7162:18:1;;11433:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;9878:556::-:0;3741:4;3766:5;-1:-1:-1;;;;;3766:5:0;3653:10;3755:16;3637:38;;;;-1:-1:-1;;;3637:38:0;;;;;;;:::i;:::-;9984:13:::1;10000:33;10027:5;10000:22;10017:4;10000:12;;:16;;:22;;;;:::i;:33::-;9984:49;;10035:19;10057:34;10085:5;10057:23;10074:5;10057:12;;:16;;:23;;;;:::i;:34::-;10035:56;;10093:17;10113:36;10143:5;10113:25;10130:7;10113:12;;:16;;:25;;;;:::i;:36::-;10160:12;:20:::0;;;10182:14:::1;:28:::0;;;10212:15:::1;:27:::0;;;10093:56;-1:-1:-1;;10266:30:0::1;10291:4;10266:20;10284:1;10266:13;:11;:13::i;:30::-;10250:46;;10324:5;10315;:14;;:38;;;;;10348:5;10333:11;:20;;10315:38;:60;;;;;10370:5;10357:9;:18;;10315:60;10307:119;;;::::0;-1:-1:-1;;;10307:119:0;;7746:2:1;10307:119:0::1;::::0;::::1;7728:21:1::0;7785:2;7765:18;;;7758:30;7824:34;7804:18;;;7797:62;-1:-1:-1;;;7875:18:1;;;7868:44;7929:19;;10307:119:0::1;7544:410:1::0;10307:119:0::1;9973:461;;;;9878:556:::0;;;:::o;9307:563::-;3741:4;3766:5;-1:-1:-1;;;;;3766:5:0;3653:10;3755:16;3637:38;;;;-1:-1:-1;;;3637:38:0;;;;;;;:::i;:::-;9514:12:::1;:25:::0;;;9541:12:::1;:25:::0;;;9568:7:::1;:15:::0;;;9585:13:::1;:26:::0;;;9613:11:::1;:23:::0;;;9638:8:::1;:17:::0;;;9657:7:::1;:15:::0;;;9674:11:::1;:20:::0;;;9725:11:::1;::::0;:18:::1;::::0;-1:-1:-1;9725:15:0::1;:18::i;:::-;9713:8;;:30;;:63;;;;-1:-1:-1::0;9758:11:0::1;::::0;:18:::1;::::0;9774:1:::1;9758:15;:18::i;:::-;9747:7;;:29;;9713:63;:100;;;;-1:-1:-1::0;9795:11:0::1;::::0;:18:::1;::::0;9811:1:::1;9795:15;:18::i;:::-;9780:11;;:33;;9713:100;9705:157;;;::::0;-1:-1:-1;;;9705:157:0;;8161:2:1;9705:157:0::1;::::0;::::1;8143:21:1::0;8200:2;8180:18;;;8173:30;8239:34;8219:18;;;8212:62;-1:-1:-1;;;8290:18:1;;;8283:42;8342:19;;9705:157:0::1;7959:408:1::0;9705:157:0::1;9307:563:::0;;;;;;;;:::o;8980:319::-;3741:4;3766:5;-1:-1:-1;;;;;3766:5:0;3653:10;3755:16;3637:38;;;;-1:-1:-1;;;3637:38:0;;;;;;;:::i;:::-;9113:10:::1;:24:::0;;;9155:12:::1;::::0;:53:::1;::::0;9200:6:::1;::::0;9155:32:::1;::::0;9172:14;9155:16:::1;:32::i;:53::-;9139:13;:69:::0;9237:12:::1;::::0;:54:::1;::::0;9283:6:::1;::::0;9237:33:::1;::::0;9254:15;9237:16:::1;:33::i;:54::-;9220:14;:71:::0;-1:-1:-1;;;8980:319:0:o;7898:139::-;7976:4;7983:40;7993:10;8005:9;8016:6;7983:9;:40::i;7633:66::-;3741:4;3766:5;-1:-1:-1;;;;;3766:5:0;3653:10;3755:16;3637:38;;;;-1:-1:-1;;;3637:38:0;;;;;;;:::i;:::-;7676:14:::1;:21:::0;;-1:-1:-1;;;;7676:21:0::1;-1:-1:-1::0;;;7676:21:0::1;::::0;;7633:66::o;3779:111::-;3741:4;3766:5;-1:-1:-1;;;;;3766:5:0;3653:10;3755:16;3637:38;;;;-1:-1:-1;;;3637:38:0;;;;;;;:::i;:::-;3845:5:::1;:11:::0;;-1:-1:-1;;;;;;3845:11:0::1;-1:-1:-1::0;;;;;3845:11:0;::::1;::::0;;::::1;::::0;;;3863:25:::1;::::0;4386:51:1;;;3863:25:0::1;::::0;4374:2:1;4359:18;3863:25:0::1;;;;;;;3779:111:::0;:::o;16370:335::-;-1:-1:-1;;;;;16463:19:0;;16455:68;;;;-1:-1:-1;;;16455:68:0;;8790:2:1;16455:68:0;;;8772:21:1;8829:2;8809:18;;;8802:30;8868:34;8848:18;;;8841:62;-1:-1:-1;;;8919:18:1;;;8912:34;8963:19;;16455:68:0;8588:400:1;16455:68:0;-1:-1:-1;;;;;16542:21:0;;16534:68;;;;-1:-1:-1;;;16534:68:0;;9195:2:1;16534:68:0;;;9177:21:1;9234:2;9214:18;;;9207:30;9273:34;9253:18;;;9246:62;-1:-1:-1;;;9324:18:1;;;9317:32;9366:19;;16534:68:0;8993:398:1;16534:68:0;-1:-1:-1;;;;;16613:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16665:32;;2037:25:1;;;16665:32:0;;2010:18:1;16665:32:0;;;;;;;16370:335;;;:::o;1425:98::-;1483:7;1510:5;1514:1;1510;:5;:::i;14612:1433::-;-1:-1:-1;;;;;14709:20:0;;14701:70;;;;-1:-1:-1;;;14701:70:0;;9731:2:1;14701:70:0;;;9713:21:1;9770:2;9750:18;;;9743:30;9809:34;9789:18;;;9782:62;-1:-1:-1;;;9860:18:1;;;9853:35;9905:19;;14701:70:0;9529:401:1;14701:70:0;-1:-1:-1;;;;;14790:23:0;;14782:71;;;;-1:-1:-1;;;14782:71:0;;10137:2:1;14782:71:0;;;10119:21:1;10176:2;10156:18;;;10149:30;10215:34;10195:18;;;10188:62;-1:-1:-1;;;10266:18:1;;;10259:33;10309:19;;14782:71:0;9935:399:1;14782:71:0;-1:-1:-1;;;;;7872:18:0;;7855:7;7872:18;;;:9;:18;;;;;;14872:6;:27;;14864:88;;;;-1:-1:-1;;;14864:88:0;;10541:2:1;14864:88:0;;;10523:21:1;10580:2;10560:18;;;10553:30;10619:34;10599:18;;;10592:62;-1:-1:-1;;;10670:18:1;;;10663:47;10727:19;;14864:88:0;10339:413:1;14864:88:0;-1:-1:-1;;;;;14967:19:0;;;;;;:11;:19;;;;;;;;14966:20;:47;;;;-1:-1:-1;;;;;;14991:22:0;;;;;;:11;:22;;;;;;;;14990:23;14966:47;14963:95;;;15023:14;;-1:-1:-1;;;15023:14:0;;;;15015:41;;;;-1:-1:-1;;;15015:41:0;;10959:2:1;15015:41:0;;;10941:21:1;10998:2;10978:18;;;10971:30;-1:-1:-1;;;11017:18:1;;;11010:44;11071:18;;15015:41:0;10757:338:1;15015:41:0;-1:-1:-1;;;;;15072:19:0;;;;;;:11;:19;;;;;;;;15071:20;:47;;;;-1:-1:-1;;;;;;15096:22:0;;;;;;:11;:22;;;;;;;;15095:23;15071:47;:77;;;;-1:-1:-1;15143:4:0;;-1:-1:-1;;;;;15122:26:0;;;15143:4;;15122:26;;15071:77;:107;;;;-1:-1:-1;;;;;;15152:26:0;;6107:42;15152:26;;15071:107;15068:220;;;15236:15;;-1:-1:-1;;;;;15199:20:0;;;;;;:9;:20;;;;;;:32;;15224:6;15199:24;:32::i;:::-;15198:53;;15190:96;;;;-1:-1:-1;;;15190:96:0;;11302:2:1;15190:96:0;;;11284:21:1;11341:2;11321:18;;;11314:30;11380:32;11360:18;;;11353:60;11430:18;;15190:96:0;11100:354:1;15190:96:0;15311:4;;-1:-1:-1;;;;;15301:14:0;;;15311:4;;15301:14;15298:124;;15335:14;;15325:6;:24;;:47;;;-1:-1:-1;;;;;;15353:19:0;;;;;;:11;:19;;;;;;;;15325:47;:73;;;-1:-1:-1;;;;;;15376:22:0;;;;;;:11;:22;;;;;;;;15325:73;15317:103;;;;-1:-1:-1;;;15317:103:0;;11661:2:1;15317:103:0;;;11643:21:1;11700:2;11680:18;;;11673:30;-1:-1:-1;;;11719:18:1;;;11712:47;11776:18;;15317:103:0;11459:341:1;15317:103:0;15450:12;;15440:6;:22;;:45;;;-1:-1:-1;;;;;;15466:19:0;;;;;;:11;:19;;;;;;;;15440:45;:71;;;-1:-1:-1;;;;;;15489:22:0;;;;;;:11;:22;;;;;;;;15440:71;15432:101;;;;-1:-1:-1;;;15432:101:0;;11661:2:1;15432:101:0;;;11643:21:1;11700:2;11680:18;;;11673:30;-1:-1:-1;;;11719:18:1;;;11712:47;11776:18;;15432:101:0;11459:341:1;15432:101:0;15561:4;;-1:-1:-1;;;;;15548:17:0;;;15561:4;;15548:17;:41;;;;-1:-1:-1;;;;;;15570:19:0;;;;;;:11;:19;;;;;;;;15569:20;15548:41;15545:71;;;15612:1;15591:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;15545:71:0;15629:45;15648:6;15656:9;15667:6;15629:18;:45::i;:::-;15626:105;;;15676:29;15691:13;;15676:14;:29::i;:::-;15727:1;15707:9;:22;15626:105;-1:-1:-1;;;;;15761:17:0;;;;;;:9;:17;;;;;;:29;;15783:6;15761:21;:29::i;:::-;-1:-1:-1;;;;;15741:17:0;;;;;;:9;:17;;;;;:49;;;;15826:32;15751:6;15848:9;15826:13;:32::i;:::-;:78;;15898:6;15826:78;;;15861:34;15869:6;15877:9;15888:6;15861:7;:34::i;:::-;-1:-1:-1;;;;;15938:20:0;;;;;;:9;:20;;;;;;15801:103;;-1:-1:-1;15938:40:0;;15801:103;15938:24;:40::i;:::-;-1:-1:-1;;;;;15915:20:0;;;;;;;:9;:20;;;;;;;:63;;;;15994:43;;;;;;;;;;16022:14;2037:25:1;;2025:2;2010:18;;1891:177;15994:43:0;;;;;;;;14690:1355;14612:1433;;;:::o;1849:240::-;1969:7;2030:12;2022:6;;;;2014:29;;;;-1:-1:-1;;;2014:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2065:5:0;;;1849:240::o;11503:1229::-;5683:4;5672:8;;:15;;;;;;;;;;;;;;;;;;11574:20:::1;11597:82;11677:1;11598:73;11659:11;;11598:56;11640:13;;11598:37;11622:12;;11598:19;11615:1;11598:12;;:16;;:19;;;;:::i;:::-;:23:::0;::::1;:37::i;11597:82::-;11574:105;;11690:32;11725:42;11754:12;11725:24;11736:12;;11725:6;:10;;:24;;;;:::i;:42::-;11690:77:::0;-1:-1:-1;11778:14:0::1;11795:36;:6:::0;11690:77;11795:10:::1;:36::i;:::-;11778:53:::0;-1:-1:-1;11867:21:0::1;11899:24;11778:53:::0;11899:16:::1;:24::i;:::-;11934:20;11957:41;:21;11983:14:::0;11957:25:::1;:41::i;:::-;11934:64;;12009:19;12030:48;12047:30;12064:12;;12047;:16;;:30;;;;:::i;:::-;12030:12:::0;;:16:::1;:48::i;:::-;12009:69;;12089:29;12121;12137:12;;12121:11;:15;;:29;;;;:::i;:::-;12089:61:::0;-1:-1:-1;12164:34:0;;12161:103:::1;;12200:61;12213:24;12239:21;12200:12;:61::i;:::-;12320:12;::::0;12274:20:::1;::::0;12297:36:::1;::::0;:18:::1;:11:::0;12313:1:::1;12297:15;:18::i;:36::-;12274:59:::0;-1:-1:-1;12347:16:0;;12344:73:::1;;12373:18;::::0;12365:50:::1;::::0;-1:-1:-1;;;;;12373:18:0;;::::1;::::0;12365:50;::::1;;;::::0;12402:12;;12373:18:::1;12365:50:::0;12373:18;12365:50;12402:12;12373:18;12365:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12344:73;12474:11;::::0;12429:19:::1;::::0;12451:35:::1;::::0;:18:::1;:11:::0;12467:1:::1;12451:15;:18::i;:35::-;12429:57:::0;-1:-1:-1;12500:15:0;;12497:70:::1;;12525:17;::::0;12517:48:::1;::::0;-1:-1:-1;;;;;12525:17:0;;::::1;::::0;12517:48;::::1;;;::::0;12553:11;;12525:17:::1;12517:48:::0;12525:17;12517:48;12553:11;12525:17;12517:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12497:70;12605:21;12640:28:::0;;12637:88:::1;;12678:18;::::0;12670:53:::1;::::0;-1:-1:-1;;;;;12678:18:0;;::::1;::::0;12670:53;::::1;;;::::0;12707:15;;12678:18:::1;12670:53:::0;12678:18;12670:53;12707:15;12678:18;12670:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12637:88;-1:-1:-1::0;;5692:8:0;:16;;-1:-1:-1;;5692:16:0;;;-1:-1:-1;;;;;;;;;11503:1229:0:o;1531:98::-;1589:7;1616:5;1620:1;1616;:5;:::i;1637:98::-;1695:7;1722:5;1726:1;1722;:5;:::i;1319:98::-;1377:7;1404:5;1408:1;1404;:5;:::i;8569:403::-;8714:14;;8789:13;;8779:4;8671;7872:18;;;:9;:18;;;;;;8821:8;;8671:4;;8704:24;;;;-1:-1:-1;8761:41:0;;8821:8;;8820:9;:24;;;;-1:-1:-1;8833:11:0;;-1:-1:-1;;;8833:11:0;;;;8820:24;:42;;;;-1:-1:-1;8848:14:0;;-1:-1:-1;;;8848:14:0;;;;8820:42;:54;;;;;8866:8;8820:54;:78;;;;-1:-1:-1;;;;;;8879:19:0;;;;;;:11;:19;;;;;;;;8878:20;8820:78;:99;;;;-1:-1:-1;8915:4:0;;-1:-1:-1;;;;;8902:17:0;;;8915:4;;8902:17;8820:99;:126;;;;;8936:10;;8923:9;;:23;;8820:126;:144;;;;;8950:14;8820:144;8813:151;8569:403;-1:-1:-1;;;;;;8569:403:0:o;13533:160::-;-1:-1:-1;;;;;13639:19:0;;13614:4;13639:19;;;:11;:19;;;;;;;;13638:20;:47;;;;-1:-1:-1;;;;;;;13663:22:0;;;;;:11;:22;;;;;;;;13662:23;;13533:160;-1:-1:-1;13533:160:0:o;14014:590::-;14100:7;14156:1;14123:30;14135:6;14143:9;14123:11;:30::i;:::-;:34;14120:462;;;14169:17;14189:59;14217:30;14229:6;14237:9;14217:11;:30::i;:::-;14200:11;;14189:23;;:6;;:10;:23::i;:59::-;14304:4;14286:24;;;;:9;:24;;;;;;14169:79;;-1:-1:-1;14286:39:0;;14169:79;14286:28;:39::i;:::-;14277:4;14259:24;;;;:9;:24;;;;;;;:66;;;;14341:42;;-1:-1:-1;;;;;14341:42:0;;;;;;;14373:9;2037:25:1;;2025:2;2010:18;;1891:177;14341:42:0;;;;;;;;14415:1;14397:7;;:20;:64;;;;;14454:7;;14421:30;14433:6;14441:9;14421:11;:30::i;:::-;:40;14397:64;14394:148;;;14463:77;14481:4;6107:42;14503:36;14531:7;;14503:23;14514:11;;14503:6;:10;;:23;;;;:::i;:36::-;14463:9;:77::i;:::-;14559:21;:6;14570:9;14559:10;:21::i;:::-;14552:28;;;;;14120:462;-1:-1:-1;14590:6:0;14014:590;-1:-1:-1;;14014:590:0:o;13091:434::-;13181:16;;;13195:1;13181:16;;;;;;;;13157:21;;13181:16;;;;;;;;;;-1:-1:-1;13181:16:0;13157:40;;13226:4;13208;13213:1;13208:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13208:23:0;;;:7;;;;;;;;;;:23;;;;13252:6;;:13;;;-1:-1:-1;;;13252:13:0;;;;:6;;;;;:11;;:13;;;;;13208:7;;13252:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13242:4;13247:1;13242:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13242:23:0;;;:7;;;;;;;;;:23;13308:6;;13276:53;;13293:4;;13308:6;13317:11;13276:8;:53::i;:::-;13340:6;;:177;;-1:-1:-1;;;13340:177:0;;-1:-1:-1;;;;;13340:6:0;;;;:57;;:177;;13412:11;;13340:6;;13454:4;;13481;;13501:15;;13340:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13146:379;13091:434;:::o;12740:343::-;12853:6;;12821:53;;12838:4;;-1:-1:-1;;;;;12853:6:0;12862:11;12821:8;:53::i;:::-;12885:6;;13026:18;;12885:190;;-1:-1:-1;;;12885:190:0;;12948:4;12885:190;;;14044:34:1;14094:18;;;14087:34;;;12885:6:0;14137:18:1;;;14130:34;;;14180:18;;;14173:34;-1:-1:-1;;;;;13026:18:0;;;14223:19:1;;;14216:44;13059:15:0;14276:19:1;;;14269:35;12885:6:0;;;:22;;12915:9;;13978:19:1;;12885:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12740:343;;:::o;13701:305::-;-1:-1:-1;;;;;13803:13:0;;13780:7;13803:13;;;:5;:13;;;;;;;;;:33;;-1:-1:-1;;;;;;13820:16:0;;;;;;:5;:16;;;;;;;;13803:33;13800:76;;;13845:11;;:29;;13869:3;13845:15;:29::i;:::-;13838:36;;;;13800:76;13902:4;;-1:-1:-1;;;;;13902:4:0;;;13889:17;;;;13886:38;;-1:-1:-1;13915:7:0;;13908:14;;13886:38;13947:4;;-1:-1:-1;;;;;13947:4:0;;;13937:14;;;;13934:36;;-1:-1:-1;13960:8:0;;13953:15;;13934:36;-1:-1:-1;13987:11:0;;13701:305;;;;:::o;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;150:671;236:6;244;252;260;313:3;301:9;292:7;288:23;284:33;281:53;;;330:1;327;320:12;281:53;369:9;356:23;388:31;413:5;388:31;:::i;:::-;438:5;-1:-1:-1;495:2:1;480:18;;467:32;508:33;467:32;508:33;:::i;:::-;560:7;-1:-1:-1;619:2:1;604:18;;591:32;632:33;591:32;632:33;:::i;:::-;684:7;-1:-1:-1;743:2:1;728:18;;715:32;756:33;715:32;756:33;:::i;:::-;150:671;;;;-1:-1:-1;150:671:1;;-1:-1:-1;;150:671:1:o;826:548::-;938:4;967:2;996;985:9;978:21;1028:6;1022:13;1071:6;1066:2;1055:9;1051:18;1044:34;1096:1;1106:140;1120:6;1117:1;1114:13;1106:140;;;1215:14;;;1211:23;;1205:30;1181:17;;;1200:2;1177:26;1170:66;1135:10;;1106:140;;;1110:3;1295:1;1290:2;1281:6;1270:9;1266:22;1262:31;1255:42;1365:2;1358;1354:7;1349:2;1341:6;1337:15;1333:29;1322:9;1318:45;1314:54;1306:62;;;;826:548;;;;:::o;1379:315::-;1447:6;1455;1508:2;1496:9;1487:7;1483:23;1479:32;1476:52;;;1524:1;1521;1514:12;1476:52;1563:9;1550:23;1582:31;1607:5;1582:31;:::i;:::-;1632:5;1684:2;1669:18;;;;1656:32;;-1:-1:-1;;;1379:315:1:o;2073:118::-;2159:5;2152:13;2145:21;2138:5;2135:32;2125:60;;2181:1;2178;2171:12;2196:750;2288:6;2296;2304;2357:2;2345:9;2336:7;2332:23;2328:32;2325:52;;;2373:1;2370;2363:12;2325:52;2413:9;2400:23;2442:18;2483:2;2475:6;2472:14;2469:34;;;2499:1;2496;2489:12;2469:34;2537:6;2526:9;2522:22;2512:32;;2582:7;2575:4;2571:2;2567:13;2563:27;2553:55;;2604:1;2601;2594:12;2553:55;2644:2;2631:16;2670:2;2662:6;2659:14;2656:34;;;2686:1;2683;2676:12;2656:34;2741:7;2734:4;2724:6;2721:1;2717:14;2713:2;2709:23;2705:34;2702:47;2699:67;;;2762:1;2759;2752:12;2699:67;2793:4;2785:13;;;;-1:-1:-1;2817:6:1;-1:-1:-1;;2858:20:1;;2845:34;2888:28;2845:34;2888:28;:::i;:::-;2935:5;2925:15;;;2196:750;;;;;:::o;2951:456::-;3028:6;3036;3044;3097:2;3085:9;3076:7;3072:23;3068:32;3065:52;;;3113:1;3110;3103:12;3065:52;3152:9;3139:23;3171:31;3196:5;3171:31;:::i;:::-;3221:5;-1:-1:-1;3278:2:1;3263:18;;3250:32;3291:33;3250:32;3291:33;:::i;:::-;2951:456;;3343:7;;-1:-1:-1;;;3397:2:1;3382:18;;;;3369:32;;2951:456::o;3412:247::-;3471:6;3524:2;3512:9;3503:7;3499:23;3495:32;3492:52;;;3540:1;3537;3530:12;3492:52;3579:9;3566:23;3598:31;3623:5;3598:31;:::i;3853:382::-;3918:6;3926;3979:2;3967:9;3958:7;3954:23;3950:32;3947:52;;;3995:1;3992;3985:12;3947:52;4034:9;4021:23;4053:31;4078:5;4053:31;:::i;:::-;4103:5;-1:-1:-1;4160:2:1;4145:18;;4132:32;4173:30;4132:32;4173:30;:::i;:::-;4222:7;4212:17;;;3853:382;;;;;:::o;4448:316::-;4525:6;4533;4541;4594:2;4582:9;4573:7;4569:23;4565:32;4562:52;;;4610:1;4607;4600:12;4562:52;-1:-1:-1;;4633:23:1;;;4703:2;4688:18;;4675:32;;-1:-1:-1;4754:2:1;4739:18;;;4726:32;;4448:316;-1:-1:-1;4448:316:1:o;4769:661::-;4891:6;4899;4907;4915;4923;4931;4939;4947;5000:3;4988:9;4979:7;4975:23;4971:33;4968:53;;;5017:1;5014;5007:12;4968:53;-1:-1:-1;;5040:23:1;;;5110:2;5095:18;;5082:32;;-1:-1:-1;5161:2:1;5146:18;;5133:32;;5212:2;5197:18;;5184:32;;-1:-1:-1;5263:3:1;5248:19;;5235:33;;-1:-1:-1;5315:3:1;5300:19;;5287:33;;-1:-1:-1;5367:3:1;5352:19;;5339:33;;-1:-1:-1;5419:3:1;5404:19;5391:33;;-1:-1:-1;4769:661:1;-1:-1:-1;4769:661:1:o;5435:388::-;5503:6;5511;5564:2;5552:9;5543:7;5539:23;5535:32;5532:52;;;5580:1;5577;5570:12;5532:52;5619:9;5606:23;5638:31;5663:5;5638:31;:::i;:::-;5688:5;-1:-1:-1;5745:2:1;5730:18;;5717:32;5758:33;5717:32;5758:33;:::i;6088:329::-;6290:2;6272:21;;;6329:1;6309:18;;;6302:29;-1:-1:-1;;;6362:2:1;6347:18;;6340:36;6408:2;6393:18;;6088:329::o;6422:127::-;6483:10;6478:3;6474:20;6471:1;6464:31;6514:4;6511:1;6504:15;6538:4;6535:1;6528:15;6554:127;6615:10;6610:3;6606:20;6603:1;6596:31;6646:4;6643:1;6636:15;6670:4;6667:1;6660:15;6686:135;6725:3;6746:17;;;6743:43;;6766:18;;:::i;:::-;-1:-1:-1;6813:1:1;6802:13;;6686:135::o;6826:184::-;6896:6;6949:2;6937:9;6928:7;6924:23;6920:32;6917:52;;;6965:1;6962;6955:12;6917:52;-1:-1:-1;6988:16:1;;6826:184;-1:-1:-1;6826:184:1:o;7294:245::-;7361:6;7414:2;7402:9;7393:7;7389:23;7385:32;7382:52;;;7430:1;7427;7420:12;7382:52;7462:9;7456:16;7481:28;7503:5;7481:28;:::i;9396:128::-;9463:9;;;9484:11;;;9481:37;;;9498:18;;:::i;11805:125::-;11870:9;;;11891:10;;;11888:36;;;11904:18;;:::i;11935:168::-;12008:9;;;12039;;12056:15;;;12050:22;;12036:37;12026:71;;12077:18;;:::i;12108:217::-;12148:1;12174;12164:132;;12218:10;12213:3;12209:20;12206:1;12199:31;12253:4;12250:1;12243:15;12281:4;12278:1;12271:15;12164:132;-1:-1:-1;12310:9:1;;12108:217::o;12462:251::-;12532:6;12585:2;12573:9;12564:7;12560:23;12556:32;12553:52;;;12601:1;12598;12591:12;12553:52;12633:9;12627:16;12652:31;12677:5;12652:31;:::i;12718:980::-;12980:4;13028:3;13017:9;13013:19;13059:6;13048:9;13041:25;13085:2;13123:6;13118:2;13107:9;13103:18;13096:34;13166:3;13161:2;13150:9;13146:18;13139:31;13190:6;13225;13219:13;13256:6;13248;13241:22;13294:3;13283:9;13279:19;13272:26;;13333:2;13325:6;13321:15;13307:29;;13354:1;13364:195;13378:6;13375:1;13372:13;13364:195;;;13443:13;;-1:-1:-1;;;;;13439:39:1;13427:52;;13534:15;;;;13499:12;;;;13475:1;13393:9;13364:195;;;-1:-1:-1;;;;;;;13615:32:1;;;;13610:2;13595:18;;13588:60;-1:-1:-1;;;13679:3:1;13664:19;13657:35;13576:3;12718:980;-1:-1:-1;;;12718:980:1:o;14315:306::-;14403:6;14411;14419;14472:2;14460:9;14451:7;14447:23;14443:32;14440:52;;;14488:1;14485;14478:12;14440:52;14517:9;14511:16;14501:26;;14567:2;14556:9;14552:18;14546:25;14536:35;;14611:2;14600:9;14596:18;14590:25;14580:35;;14315:306;;;;;:::o
Swarm Source
ipfs://0cfba0646963634982328987929a31636e231e1d6abef314c2baa5f58e2eee3e
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.