ERC-20
Overview
Max Total Supply
10,000,000,000 oNeko
Holders
6
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
224,568,320.57703040081425927 oNekoValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
OrdinalNeko
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-03-10 */ /** Announcmenet Channel: t.me/OrdinalNeko Community TG to follow and will use the announcement channel as a portal ####### ######## ######## #### ## ## ### ## ## ## ######## ## ## ####### ## ## ## ## ## ## ## ### ## ## ## ## ### ## ## ## ## ## ## ## ## ## ## ## ## ## #### ## ## ## ## #### ## ## ## ## ## ## ## ## ######## ## ## ## ## ## ## ## ## ## ## ## ## ###### ##### ## ## ## ## ## ## ## ## ## ## #### ######### ## ## #### ## ## ## ## ## ## ## ## ## ## ## ## ## ### ## ## ## ## ### ## ## ## ## ## ####### ## ## ######## #### ## ## ## ## ######## ## ## ######## ## ## ####### */ //SPDX-License-Identifier: MIT pragma solidity 0.8.18; // Just the basic IERC20 interface interface IERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function 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); } // We use the Auth contract mainly to have two devs able to interacet with the contract abstract contract Auth { address internal owner; mapping (address => bool) internal authorizations; constructor(address _owner) { owner = _owner; authorizations[_owner] = true; } modifier onlyOwner() { require(isOwner(msg.sender), "!OWNER"); _; } modifier authorized() { require(isAuthorized(msg.sender), "!AUTHORIZED"); _; } function authorize(address adr) public onlyOwner { authorizations[adr] = true; } function unauthorize(address adr) public onlyOwner { authorizations[adr] = false; } function isOwner(address account) public view returns (bool) { return account == owner; } function isAuthorized(address adr) public view returns (bool) { return authorizations[adr]; } function transferOwnership(address payable adr) public onlyOwner { owner = adr; authorizations[adr] = true; emit OwnershipTransferred(adr); } event OwnershipTransferred(address owner); } interface IDEXFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IDEXRouter { 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 OrdinalNeko is IERC20, Auth { // Constant addresses address constant DEAD = 0x000000000000000000000000000000000000dEaD; address constant ZERO = 0x0000000000000000000000000000000000000000; IDEXRouter public constant router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Immutable vars address public immutable pair; // After we set the pair we don't have to change it again // Token info is constant string constant _name = "Ordinal Neko"; string constant _symbol = "oNeko"; uint8 constant _decimals = 18; // Total supply is 10 billion uint256 _totalSupply = 10 * (10**9) * (10 ** _decimals); // The tax divisor is also constant (and hence immutable) // 1000 so we can also use halves, like 2.5% uint256 constant taxDivisor = 1_000; // 10 / 1000 = 0.01 = 1% uint256 public _maxTxAmount = _totalSupply * 25 / taxDivisor; uint256 public _maxWalletToken = _totalSupply * 25 / taxDivisor; // Keep track of wallet balances and approvals (allowance) mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) _allowances; // Mapping to keep track of what wallets/contracts are exempt // from fees mapping (address => bool) isFeeExempt; mapping (address => bool) isTxLimitExempt; // Both wallet + max TX // Also, to keep it organized, a seperate mapping to exclude the presale // and locker from limits mapping (address => bool) presaleOrlock; //fees are mulitplied by 10 to allow decimals, and therefore dividied by 1000 (see takefee) uint256 marketingBuyFee = 25; uint256 liquidityBuyFee = 25; uint256 developmentBuyFee = 25; uint256 public totalBuyFee = marketingBuyFee + liquidityBuyFee + developmentBuyFee; uint256 marketingSellFee = 25; uint256 liquiditySellFee = 25; uint256 developmentSellFee = 25; uint256 public totalSellFee = marketingSellFee + liquiditySellFee + developmentSellFee; // For the sniper friends uint256 private sniperTaxTill; // In case anything would go wrong with fees we can just disable them bool feesEnabled = true; // Whether tx limits should apply or not bool limits = true; // To keep track of the tokens collected to swap uint256 private tokensForMarketing; uint256 private tokensForLiquidity; uint256 private tokensForDev; // Wallets used to send the fees to address public liquidityWallet; address public marketingWallet; address public developmentWallet; // One time trade lock bool tradeBlock = true; bool lockUsed = false; // Contract cant be tricked into spam selling exploit uint256 lastSellTime; // When to swap contract tokens, and how many to swap bool public swapEnabled = true; uint256 public swapThreshold = _totalSupply * 10 / 100_000; // 0.01% event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity); // This will just check if the transferf is called from within // the token -> ETH swap when processing the fees (and adding LP) bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor () Auth(msg.sender) { // Create the lp pair pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this)); // Exclude the contract isFeeExempt[address(this)] = true; isTxLimitExempt[address(this)] = true; // Exclude the owner isFeeExempt[msg.sender] = true; isTxLimitExempt[msg.sender] = true; // Exclude the pair isTxLimitExempt[address(pair)] = true; // Exclude the router isTxLimitExempt[address(router)] = true; // Set fee receivers liquidityWallet = 0x21c3dBCAc42A42C153B7454FE7ee17ce66ab6D90; marketingWallet = 0x21c3dBCAc42A42C153B7454FE7ee17ce66ab6D90; developmentWallet = 0x21c3dBCAc42A42C153B7454FE7ee17ce66ab6D90; // Approve this contract & owner to interact with the // router and pair contract (for swapping) _approve(address(this), address(router), _totalSupply); _approve(msg.sender, address(pair), _totalSupply); // Mint the tokens _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } receive() external payable { } function totalSupply() external view override returns (uint256) { return _totalSupply; } function decimals() external pure override returns (uint8) { return _decimals; } function symbol() external pure override returns (string memory) { return _symbol; } function name() external pure override returns (string memory) { return _name; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function getPair() external view returns (address){return pair;} // Internal approve function _approve(address owner, address spender, uint256 amount) internal virtual { _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } // Regular approve the contract function approve(address spender, uint256 amount) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function approveMax(address spender) external returns (bool) { return approve(spender, _totalSupply); } // We actually only need to exempt any locks or presale addresses // we could use a feeexempt or authorize it, but this is a bit cleaner function excludeLockorPresale(address add) external authorized { // Exclude from fees isFeeExempt[add] = true; isTxLimitExempt[add] = true; // We want to allow transfers to locks and from the presale // address when trading is not yet enabled. presaleOrlock[add] = true; } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { uint256 senderBalance = _balances[sender]; // Check if the sender has sufficient balance require(senderBalance >= amount, "Insufficient Balance"); // Update balances _balances[sender] = _balances[sender] - amount; _balances[recipient] = _balances[recipient] + amount; emit Transfer(sender, recipient, amount); return true; } // Set the buy fees, this can not exceed 15%, 150 / 1000 = 0.15 = 15% function setBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _developFee) external authorized{ require(_marketingFee + _liquidityFee + _developFee <= 100); // max 10% marketingBuyFee = _marketingFee; liquidityBuyFee = _liquidityFee; developmentBuyFee = _developFee; totalBuyFee = _marketingFee + _liquidityFee + _developFee; } // Set the sell fees, this can not exceed 15%, 150 / 1000 = 0.15 = 15% function setSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _developFee) external authorized{ require(_marketingFee + _liquidityFee + _developFee <= 250); // max 25% marketingSellFee = _marketingFee; liquiditySellFee = _liquidityFee; developmentSellFee = _developFee; totalSellFee = _marketingFee + _liquidityFee + _developFee; } // To change the tax receiving wallets function setWallets(address _marketingWallet, address _liquidityWallet, address _developWallet) external authorized { marketingWallet = _marketingWallet; liquidityWallet = _liquidityWallet; developmentWallet = _developWallet; } // To limit the number of tokens a wallet can buy, especially relevant at launch function setMaxWallet(uint256 percent) external authorized { require(percent >= 10); //should be at least 1% of the total supply (note divisor is 1000) _maxWalletToken = ( _totalSupply * percent ) / taxDivisor; } // To limit the number of tokens per transactions function setTxLimit(uint256 percent) external authorized { require(percent >= 10); //should be at least 1% of the total supply (note divisor is 1000) _maxTxAmount = ( _totalSupply * percent ) / taxDivisor; } function checkLimits(address sender,address recipient, uint256 amount) internal view { // If both sender and recipient are excluded we don't have to limit if (isTxLimitExempt[sender] && isTxLimitExempt[recipient]){return;} // In any other case we will check whether this is a buy or sell // to determine the tx limit // buy if (sender == pair && !isTxLimitExempt[recipient]) { require(amount <= _maxTxAmount, "Max tx limit"); // sell } else if(recipient == pair && !isTxLimitExempt[sender] ) { require(amount <= _maxTxAmount, "Max tx limit"); } // Also check max wallet if (!isTxLimitExempt[recipient]) { require(amount + balanceOf(recipient) <= _maxWalletToken, "Max wallet"); } } // We will lift the transaction limits just after launch function liftLimits() external authorized { limits = false; } // This would make the token fee-less in case taking fees // would at any point block transfers. This is reversible function setFeeTaking(bool takeFees) external authorized { feesEnabled = takeFees; } // Enable trading - this can only be called once (by just the owner) function startTrading() external onlyOwner { require(lockUsed == false); tradeBlock = false; sniperTaxTill = block.number + 2; // (<sniperTaxTill, so first block) lockUsed = true; } // When and if to swap the tokens in the contract function setTokenSwapSettings(bool _enabled, uint256 _threshold) external authorized { swapEnabled = _enabled; swapThreshold = _threshold * (10 ** _decimals); } // Check if the contract should swap tokens function shouldTokenSwap(address recipient) internal view returns (bool) { return recipient == pair // i.e. is sell && lastSellTime + 1 < block.timestamp // block contract spam sells && !inSwap && swapEnabled && _balances[address(this)] >= swapThreshold; } function takeFee(address from, address to, uint256 amount) internal returns (uint256) { // If the sender or receiver is exempt from fees, skip fees if (isFeeExempt[from] || isFeeExempt[to]) { return amount; } // This does not charge for wallet-wallet transfers uint256 fees; // Sniper tax if (block.number < sniperTaxTill) { fees = amount * 98 / 100; // 98% tax tokensForLiquidity += (fees * 50) / 98; tokensForMarketing += (fees * 48) / 98; } // On sell else if (to == pair && totalSellFee > 0) { fees = amount * totalSellFee / taxDivisor; tokensForLiquidity += (fees * liquiditySellFee) / totalSellFee; tokensForDev += (fees * developmentSellFee) / totalSellFee; tokensForMarketing += (fees * marketingSellFee) / totalSellFee; } // On buy else if (from == pair && totalBuyFee > 0) { fees = amount * totalBuyFee / taxDivisor; tokensForLiquidity += (fees * liquidityBuyFee) / totalBuyFee ; tokensForDev += (fees * developmentBuyFee) / totalBuyFee; tokensForMarketing += (fees * marketingBuyFee) / totalBuyFee; } // If we collected fees, send them to the contract if (fees > 0) { _basicTransfer(from, address(this), fees); emit Transfer(from, address(this), fees); } // Return the taxed amount return amount -= fees; } function swapTokensForEth(uint256 tokenAmount) private { // Swap path token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); // Make the swap router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // Add liquidity from the contract. Now the LP tokens get send to the lP // wallet, but we could also change the LP receiver to the burn address leter router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, 0, liquidityWallet, block.timestamp ); } function swapBack() internal swapping { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev; bool success; if (contractBalance == 0 || totalTokensToSwap == 0) {return;} // Halve the amount of liquidity tokens uint256 liquidityTokens = (contractBalance * tokensForLiquidity) / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance - liquidityTokens; uint256 initialETHBalance = address(this).balance; // Swap the tokens for ETH swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance - initialETHBalance; uint256 ethForMarketing = (ethBalance * tokensForMarketing) / totalTokensToSwap; uint256 ethForDev = (ethBalance * tokensForDev) / totalTokensToSwap; uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev; // Reset token fee counts tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDev = 0; // Send Dev fees (success, ) = address(developmentWallet).call{value: ethForDev}(""); // Add liquidty if (liquidityTokens > 0 && ethForLiquidity > 0) { addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity); } // Whatever remains (this should be ~ethForMarketing) send to the marketing wallet (success, ) = address(marketingWallet).call{value: address(this).balance}(""); lastSellTime = block.timestamp; } function transfer(address recipient, uint256 amount) external override returns (bool) { if (owner == msg.sender){ return _basicTransfer(msg.sender, recipient, amount); } else { return _transferFrom(msg.sender, recipient, amount); } } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); if(_allowances[sender][msg.sender] != _totalSupply){ // Get the current allowance uint256 curAllowance = _allowances[sender][msg.sender]; require(curAllowance >= amount, "Insufficient Allowance"); _allowances[sender][msg.sender] -= amount; } return _transferFrom(sender, recipient, amount); } function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); // These transfers are always feeless and limitless if ( authorizations[sender] || authorizations[recipient] || presaleOrlock[sender] || inSwap) { return _basicTransfer(sender, recipient, amount); } // In any other case, check if trading is open already require(tradeBlock == false,"Trading not open yet"); // If limits are enabled we check the max wallet and max tx. if (limits){checkLimits(sender, recipient, amount);} // Check how much fees are accumulated in the contract, if > threshold, swap if(shouldTokenSwap(recipient)){ swapBack();} // Charge transaction fees (only swaps) when enabled if(feesEnabled){ amount = (recipient == pair || sender == pair) ? takeFee(sender, recipient, amount) : amount; } // Send the remaining tokens, after fee _basicTransfer(sender, recipient, amount); emit Transfer(sender, recipient, amount); return true; } // In case anyone would send ETH to the contract directly // or when, for some reason, autoswap would fail. We // send the contact ETH to the marketing wallet function clearStuckWETH(uint256 perc) external authorized { uint256 amountWETH = address(this).balance; payable(marketingWallet).transfer(amountWETH * perc / 100); } }
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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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":"_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":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"perc","type":"uint256"}],"name":"clearStuckWETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"add","type":"address"}],"name":"excludeLockorPresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","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":"liftLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_developFee","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"takeFees","type":"bool"}],"name":"setFeeTaking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_developFee","type":"uint256"}],"name":"setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_threshold","type":"uint256"}],"name":"setTokenSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_liquidityWallet","type":"address"},{"internalType":"address","name":"_developWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a0604052620000126012600a620005a2565b62000023906402540be400620005ba565b6002556103e860025460196200003a9190620005ba565b620000469190620005d4565b6003556103e860025460196200005d9190620005ba565b620000699190620005d4565b6004556019600a819055600b819055600c819055620000898180620005f7565b620000959190620005f7565b600d556019600e819055600f8190556010819055620000b58180620005f7565b620000c19190620005f7565b6011556013805461010161ffff199091161790556019805461ffff60a01b1916600160a01b179055601b805460ff19166001179055600254620186a0906200010b90600a620005ba565b620001179190620005d4565b601c553480156200012757600080fd5b50600080546001600160a01b031916339081178255815260016020818152604092839020805460ff1916909217909155815163c45a015560e01b81529151737a250d5630b4cf539739df2c5dacb4c659f2488d9263c45a01559260048083019391928290030181865afa158015620001a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c991906200060d565b6001600160a01b031663c9c65396737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200022a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025091906200060d565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af11580156200029d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c391906200060d565b6001600160a01b031660808190523060008181526007602081815260408084208054600160ff1991821681179092556008808552838720805483168417905533875294845282862080548216831790559390925280842080548416831790559483529382208054821685179055737a250d5630b4cf539739df2c5dacb4c659f2488d918290527f226e7c4e32ba0cd918c39b21526eb23f3f5958fcfd83d5cf69b9510bf01e2e178054909116909317909255601780547321c3dbcac42a42c153b7454fe7ee17ce66ab6d906001600160a01b0319918216811790925560188054821683179055601980549091169091179055600254620003c492906200042c565b620003db336080516002546200042c60201b60201c565b60025433600081815260056020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000638565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004e4578160001904821115620004c857620004c86200048d565b80851615620004d657918102915b93841c9390800290620004a8565b509250929050565b600082620004fd575060016200059c565b816200050c575060006200059c565b8160018114620005255760028114620005305762000550565b60019150506200059c565b60ff8411156200054457620005446200048d565b50506001821b6200059c565b5060208310610133831016604e8410600b841016171562000575575081810a6200059c565b620005818383620004a3565b80600019048211156200059857620005986200048d565b0290505b92915050565b6000620005b360ff841683620004ec565b9392505050565b80820281158282048414176200059c576200059c6200048d565b600082620005f257634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156200059c576200059c6200048d565b6000602082840312156200062057600080fd5b81516001600160a01b0381168114620005b357600080fd5b6080516121556200068c6000396000818161058301528181610614015281816110200152818161105b015281816112710152818161131601528181611439015281816117ca01526118a001526121556000f3fe6080604052600436106102295760003560e01c806375f0a87411610123578063c1f1b1b5116100ab578063f2fde38b1161006f578063f2fde38b146106de578063f60b3d6d146106fe578063f887ea4014610713578063fe6236741461073b578063fe9fbb801461075b57600080fd5b8063c1f1b1b514610605578063d469801614610638578063dd62ed3e14610658578063eb3410401461069e578063f0b37c04146106be57600080fd5b80639d9241ec116100f25780639d9241ec1461055b578063a8aa1b3114610571578063a9059cbb146105a5578063b6a5d7de146105c5578063c04a5414146105e557600080fd5b806375f0a874146104c957806378109e54146105015780637d1db4a51461051757806395d89b411461052d57600080fd5b80632f54bf6e116101b15780635d0044ca116101755780635d0044ca146104195780636ddd17131461043957806370a082311461045357806372f2943a1461048957806375cb1bd1146104a957600080fd5b80632f54bf6e14610378578063313ce567146103a7578063571ac8b0146103c357806359b107b9146103e35780635c85974f146103f957600080fd5b80630d075d9c116101f85780630d075d9c146102ee5780630f683e901461030e57806318160ddd1461032e57806323b872dd14610343578063293230b81461036357600080fd5b80630445b6671461023557806304fda8ff1461025e57806306fdde0314610280578063095ea7b3146102be57600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5061024b601c5481565b6040519081526020015b60405180910390f35b34801561026a57600080fd5b5061027e610279366004611c13565b61077b565b005b34801561028c57600080fd5b5060408051808201909152600c81526b4f7264696e616c204e656b6f60a01b60208201525b6040516102559190611c2c565b3480156102ca57600080fd5b506102de6102d9366004611c92565b6107fd565b6040519015158152602001610255565b3480156102fa57600080fd5b5061027e610309366004611cbe565b61086a565b34801561031a57600080fd5b5061027e610329366004611cbe565b6108dd565b34801561033a57600080fd5b5060025461024b565b34801561034f57600080fd5b506102de61035e366004611cea565b610950565b34801561036f57600080fd5b5061027e610a86565b34801561038457600080fd5b506102de610393366004611d2b565b6000546001600160a01b0391821691161490565b3480156103b357600080fd5b5060405160128152602001610255565b3480156103cf57600080fd5b506102de6103de366004611d2b565b610af7565b3480156103ef57600080fd5b5061024b600d5481565b34801561040557600080fd5b5061027e610414366004611c13565b610b05565b34801561042557600080fd5b5061027e610434366004611c13565b610b59565b34801561044557600080fd5b50601b546102de9060ff1681565b34801561045f57600080fd5b5061024b61046e366004611d2b565b6001600160a01b031660009081526005602052604090205490565b34801561049557600080fd5b5061027e6104a4366004611d2b565b610bad565b3480156104b557600080fd5b5061027e6104c4366004611d48565b610c1d565b3480156104d557600080fd5b506018546104e9906001600160a01b031681565b6040516001600160a01b039091168152602001610255565b34801561050d57600080fd5b5061024b60045481565b34801561052357600080fd5b5061024b60035481565b34801561053957600080fd5b506040805180820190915260058152646f4e656b6f60d81b60208201526102b1565b34801561056757600080fd5b5061024b60115481565b34801561057d57600080fd5b506104e97f000000000000000000000000000000000000000000000000000000000000000081565b3480156105b157600080fd5b506102de6105c0366004611c92565b610c81565b3480156105d157600080fd5b5061027e6105e0366004611d2b565b610cb3565b3480156105f157600080fd5b506019546104e9906001600160a01b031681565b34801561061157600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006104e9565b34801561064457600080fd5b506017546104e9906001600160a01b031681565b34801561066457600080fd5b5061024b610673366004611d93565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156106aa57600080fd5b5061027e6106b9366004611de1565b610d04565b3480156106ca57600080fd5b5061027e6106d9366004611d2b565b610d54565b3480156106ea57600080fd5b5061027e6106f9366004611d2b565b610d9f565b34801561070a57600080fd5b5061027e610e35565b34801561071f57600080fd5b506104e9737a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561074757600080fd5b5061027e610756366004611dfd565b610e67565b34801561076757600080fd5b506102de610776366004611d2b565b610e9f565b61078433610e9f565b6107a95760405162461bcd60e51b81526004016107a090611e18565b60405180910390fd5b60185447906001600160a01b03166108fc60646107c68585611e53565b6107d09190611e6a565b6040518115909202916000818181858888f193505050501580156107f8573d6000803e3d6000fd5b505050565b3360008181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108589086815260200190565b60405180910390a35060015b92915050565b61087333610e9f565b61088f5760405162461bcd60e51b81526004016107a090611e18565b60648161089c8486611e8c565b6108a69190611e8c565b11156108b157600080fd5b600a839055600b829055600c819055806108cb8385611e8c565b6108d59190611e8c565b600d55505050565b6108e633610e9f565b6109025760405162461bcd60e51b81526004016107a090611e18565b60fa8161090f8486611e8c565b6109199190611e8c565b111561092457600080fd5b600e839055600f82905560108190558061093e8385611e8c565b6109489190611e8c565b601155505050565b60006001600160a01b0384166109785760405162461bcd60e51b81526004016107a090611e9f565b6001600160a01b03831661099e5760405162461bcd60e51b81526004016107a090611ee4565b6002546001600160a01b038516600090815260066020908152604080832033845290915290205414610a71576001600160a01b038416600090815260066020908152604080832033845290915290205482811015610a375760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420416c6c6f77616e636560501b60448201526064016107a0565b6001600160a01b038516600090815260066020908152604080832033845290915281208054859290610a6a908490611f27565b9091555050505b610a7c848484610ebd565b90505b9392505050565b6000546001600160a01b03163314610ab05760405162461bcd60e51b81526004016107a090611f3a565b601954600160a81b900460ff1615610ac757600080fd5b6019805460ff60a01b19169055610adf436002611e8c565b6012556019805460ff60a81b1916600160a81b179055565b6000610864826002546107fd565b610b0e33610e9f565b610b2a5760405162461bcd60e51b81526004016107a090611e18565b600a811015610b3857600080fd5b6103e881600254610b499190611e53565b610b539190611e6a565b60035550565b610b6233610e9f565b610b7e5760405162461bcd60e51b81526004016107a090611e18565b600a811015610b8c57600080fd5b6103e881600254610b9d9190611e53565b610ba79190611e6a565b60045550565b610bb633610e9f565b610bd25760405162461bcd60e51b81526004016107a090611e18565b6001600160a01b031660009081526007602090815260408083208054600160ff1991821681179092556008845282852080548216831790556009909352922080549091169091179055565b610c2633610e9f565b610c425760405162461bcd60e51b81526004016107a090611e18565b601880546001600160a01b039485166001600160a01b031991821617909155601780549385169382169390931790925560198054919093169116179055565b60008054336001600160a01b0390911603610ca857610ca133848461110a565b9050610864565b610ca1338484610ebd565b6000546001600160a01b03163314610cdd5760405162461bcd60e51b81526004016107a090611f3a565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b610d0d33610e9f565b610d295760405162461bcd60e51b81526004016107a090611e18565b601b805460ff1916831515179055610d436012600a61203e565b610d4d9082611e53565b601c555050565b6000546001600160a01b03163314610d7e5760405162461bcd60e51b81526004016107a090611f3a565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b03163314610dc95760405162461bcd60e51b81526004016107a090611f3a565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b610e3e33610e9f565b610e5a5760405162461bcd60e51b81526004016107a090611e18565b6013805461ff0019169055565b610e7033610e9f565b610e8c5760405162461bcd60e51b81526004016107a090611e18565b6013805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205460ff1690565b60006001600160a01b038416610ee55760405162461bcd60e51b81526004016107a090611e9f565b6001600160a01b038316610f0b5760405162461bcd60e51b81526004016107a090611ee4565b6001600160a01b03841660009081526001602052604090205460ff1680610f4a57506001600160a01b03831660009081526001602052604090205460ff165b80610f6d57506001600160a01b03841660009081526009602052604090205460ff165b80610f7a5750601d5460ff165b15610f9157610f8a84848461110a565b9050610a7f565b601954600160a01b900460ff1615610fe25760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016107a0565b601354610100900460ff1615610ffd57610ffd848484611225565b61100683611435565b15611013576110136114c4565b60135460ff16156110a7577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316148061108f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316145b61109957816110a4565b6110a48484846116f7565b91505b6110b284848461110a565b50826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110f891815260200190565b60405180910390a35060019392505050565b6001600160a01b0383166000908152600560205260408120548281101561116a5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b60448201526064016107a0565b6001600160a01b03851660009081526005602052604090205461118e908490611f27565b6001600160a01b0380871660009081526005602052604080822093909355908616815220546111be908490611e8c565b6001600160a01b0380861660008181526005602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112129087815260200190565b60405180910390a3506001949350505050565b6001600160a01b03831660009081526008602052604090205460ff16801561126557506001600160a01b03821660009081526008602052604090205460ff165b1561126f57505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161480156112c957506001600160a01b03821660009081526008602052604090205460ff16155b156113145760035481111561130f5760405162461bcd60e51b815260206004820152600c60248201526b13585e081d1e081b1a5b5a5d60a21b60448201526064016107a0565b6113b4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614801561136e57506001600160a01b03831660009081526008602052604090205460ff16155b156113b4576003548111156113b45760405162461bcd60e51b815260206004820152600c60248201526b13585e081d1e081b1a5b5a5d60a21b60448201526064016107a0565b6001600160a01b03821660009081526008602052604090205460ff166107f8576004546001600160a01b0383166000908152600560205260409020546113fa9083611e8c565b11156107f85760405162461bcd60e51b815260206004820152600a60248201526913585e081dd85b1b195d60b21b60448201526064016107a0565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316148015611485575042601a5460016114839190611e8c565b105b80156114945750601d5460ff16155b80156114a25750601b5460ff165b80156108645750601c5430600090815260056020526040902054101592915050565b601d805460ff1916600117905530600090815260056020526040812054905060006016546014546015546114f89190611e8c565b6115029190611e8c565b90506000821580611511575081155b1561151e575050506116eb565b6000600283601554866115319190611e53565b61153b9190611e6a565b6115459190611e6a565b905060006115538286611f27565b90504761155f826119fb565b600061156b8247611f27565b90506000866014548361157e9190611e53565b6115889190611e6a565b90506000876016548461159b9190611e53565b6115a59190611e6a565b90506000816115b48486611f27565b6115be9190611f27565b60006015819055601481905560168190556019546040519293506001600160a01b031691849181818185875af1925050503d806000811461161b576040519150601f19603f3d011682016040523d82523d6000602084013e611620565b606091505b509098505086158015906116345750600081115b15611687576116438782611b67565b601554604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6018546040516001600160a01b03909116904790600081818185875af1925050503d80600081146116d4576040519150601f19603f3d011682016040523d82523d6000602084013e6116d9565b606091505b505042601a5550505050505050505050505b601d805460ff19169055565b6001600160a01b03831660009081526007602052604081205460ff168061173657506001600160a01b03831660009081526007602052604090205460ff165b15611742575080610a7f565b60006012544310156117c857606461175b846062611e53565b6117659190611e6a565b90506062611774826032611e53565b61177e9190611e6a565b6015600082825461178f9190611e8c565b90915550606290506117a2826030611e53565b6117ac9190611e6a565b601460008282546117bd9190611e8c565b909155506119959050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614801561180b57506000601154115b1561189e576103e8601154846118219190611e53565b61182b9190611e6a565b9050601154600f548261183e9190611e53565b6118489190611e6a565b601560008282546118599190611e8c565b909155505060115460105461186e9083611e53565b6118789190611e6a565b601660008282546118899190611e8c565b9091555050601154600e546117a29083611e53565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b03161480156118e157506000600d54115b15611995576103e8600d54846118f79190611e53565b6119019190611e6a565b9050600d54600b54826119149190611e53565b61191e9190611e6a565b6015600082825461192f9190611e8c565b9091555050600d54600c546119449083611e53565b61194e9190611e6a565b6016600082825461195f9190611e8c565b9091555050600d54600a546119749083611e53565b61197e9190611e6a565b6014600082825461198f9190611e8c565b90915550505b80156119e8576119a685308361110a565b5060405181815230906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6119f28184611f27565b95945050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611a3057611a3061204d565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611aa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac69190612063565b81600181518110611ad957611ad961204d565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790611b31908590600090869030904290600401612080565b600060405180830381600087803b158015611b4b57600080fd5b505af1158015611b5f573d6000803e3d6000fd5b505050505050565b60175460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b0390911660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990839060c40160606040518083038185885af1158015611be7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c0c91906120f1565b5050505050565b600060208284031215611c2557600080fd5b5035919050565b600060208083528351808285015260005b81811015611c5957858101830151858201604001528201611c3d565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611c8f57600080fd5b50565b60008060408385031215611ca557600080fd5b8235611cb081611c7a565b946020939093013593505050565b600080600060608486031215611cd357600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215611cff57600080fd5b8335611d0a81611c7a565b92506020840135611d1a81611c7a565b929592945050506040919091013590565b600060208284031215611d3d57600080fd5b8135610a7f81611c7a565b600080600060608486031215611d5d57600080fd5b8335611d6881611c7a565b92506020840135611d7881611c7a565b91506040840135611d8881611c7a565b809150509250925092565b60008060408385031215611da657600080fd5b8235611db181611c7a565b91506020830135611dc181611c7a565b809150509250929050565b80358015158114611ddc57600080fd5b919050565b60008060408385031215611df457600080fd5b611cb083611dcc565b600060208284031215611e0f57600080fd5b610a7f82611dcc565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761086457610864611e3d565b600082611e8757634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561086457610864611e3d565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561086457610864611e3d565b60208082526006908201526510a7aba722a960d11b604082015260600190565b600181815b80851115611f95578160001904821115611f7b57611f7b611e3d565b80851615611f8857918102915b93841c9390800290611f5f565b509250929050565b600082611fac57506001610864565b81611fb957506000610864565b8160018114611fcf5760028114611fd957611ff5565b6001915050610864565b60ff841115611fea57611fea611e3d565b50506001821b610864565b5060208310610133831016604e8410600b8410161715612018575081810a610864565b6120228383611f5a565b806000190482111561203657612036611e3d565b029392505050565b6000610a7f60ff841683611f9d565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561207557600080fd5b8151610a7f81611c7a565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156120d05784516001600160a01b0316835293830193918301916001016120ab565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561210657600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220a3e1a2917ac74802f59abcc1f8dae498c8dd6aa30f132a2a6086bb4bc9a0f90664736f6c63430008120033
Deployed Bytecode
0x6080604052600436106102295760003560e01c806375f0a87411610123578063c1f1b1b5116100ab578063f2fde38b1161006f578063f2fde38b146106de578063f60b3d6d146106fe578063f887ea4014610713578063fe6236741461073b578063fe9fbb801461075b57600080fd5b8063c1f1b1b514610605578063d469801614610638578063dd62ed3e14610658578063eb3410401461069e578063f0b37c04146106be57600080fd5b80639d9241ec116100f25780639d9241ec1461055b578063a8aa1b3114610571578063a9059cbb146105a5578063b6a5d7de146105c5578063c04a5414146105e557600080fd5b806375f0a874146104c957806378109e54146105015780637d1db4a51461051757806395d89b411461052d57600080fd5b80632f54bf6e116101b15780635d0044ca116101755780635d0044ca146104195780636ddd17131461043957806370a082311461045357806372f2943a1461048957806375cb1bd1146104a957600080fd5b80632f54bf6e14610378578063313ce567146103a7578063571ac8b0146103c357806359b107b9146103e35780635c85974f146103f957600080fd5b80630d075d9c116101f85780630d075d9c146102ee5780630f683e901461030e57806318160ddd1461032e57806323b872dd14610343578063293230b81461036357600080fd5b80630445b6671461023557806304fda8ff1461025e57806306fdde0314610280578063095ea7b3146102be57600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5061024b601c5481565b6040519081526020015b60405180910390f35b34801561026a57600080fd5b5061027e610279366004611c13565b61077b565b005b34801561028c57600080fd5b5060408051808201909152600c81526b4f7264696e616c204e656b6f60a01b60208201525b6040516102559190611c2c565b3480156102ca57600080fd5b506102de6102d9366004611c92565b6107fd565b6040519015158152602001610255565b3480156102fa57600080fd5b5061027e610309366004611cbe565b61086a565b34801561031a57600080fd5b5061027e610329366004611cbe565b6108dd565b34801561033a57600080fd5b5060025461024b565b34801561034f57600080fd5b506102de61035e366004611cea565b610950565b34801561036f57600080fd5b5061027e610a86565b34801561038457600080fd5b506102de610393366004611d2b565b6000546001600160a01b0391821691161490565b3480156103b357600080fd5b5060405160128152602001610255565b3480156103cf57600080fd5b506102de6103de366004611d2b565b610af7565b3480156103ef57600080fd5b5061024b600d5481565b34801561040557600080fd5b5061027e610414366004611c13565b610b05565b34801561042557600080fd5b5061027e610434366004611c13565b610b59565b34801561044557600080fd5b50601b546102de9060ff1681565b34801561045f57600080fd5b5061024b61046e366004611d2b565b6001600160a01b031660009081526005602052604090205490565b34801561049557600080fd5b5061027e6104a4366004611d2b565b610bad565b3480156104b557600080fd5b5061027e6104c4366004611d48565b610c1d565b3480156104d557600080fd5b506018546104e9906001600160a01b031681565b6040516001600160a01b039091168152602001610255565b34801561050d57600080fd5b5061024b60045481565b34801561052357600080fd5b5061024b60035481565b34801561053957600080fd5b506040805180820190915260058152646f4e656b6f60d81b60208201526102b1565b34801561056757600080fd5b5061024b60115481565b34801561057d57600080fd5b506104e97f0000000000000000000000003aeb88859fd2c513938daceeecc119af07f2f4ac81565b3480156105b157600080fd5b506102de6105c0366004611c92565b610c81565b3480156105d157600080fd5b5061027e6105e0366004611d2b565b610cb3565b3480156105f157600080fd5b506019546104e9906001600160a01b031681565b34801561061157600080fd5b507f0000000000000000000000003aeb88859fd2c513938daceeecc119af07f2f4ac6104e9565b34801561064457600080fd5b506017546104e9906001600160a01b031681565b34801561066457600080fd5b5061024b610673366004611d93565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156106aa57600080fd5b5061027e6106b9366004611de1565b610d04565b3480156106ca57600080fd5b5061027e6106d9366004611d2b565b610d54565b3480156106ea57600080fd5b5061027e6106f9366004611d2b565b610d9f565b34801561070a57600080fd5b5061027e610e35565b34801561071f57600080fd5b506104e9737a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561074757600080fd5b5061027e610756366004611dfd565b610e67565b34801561076757600080fd5b506102de610776366004611d2b565b610e9f565b61078433610e9f565b6107a95760405162461bcd60e51b81526004016107a090611e18565b60405180910390fd5b60185447906001600160a01b03166108fc60646107c68585611e53565b6107d09190611e6a565b6040518115909202916000818181858888f193505050501580156107f8573d6000803e3d6000fd5b505050565b3360008181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108589086815260200190565b60405180910390a35060015b92915050565b61087333610e9f565b61088f5760405162461bcd60e51b81526004016107a090611e18565b60648161089c8486611e8c565b6108a69190611e8c565b11156108b157600080fd5b600a839055600b829055600c819055806108cb8385611e8c565b6108d59190611e8c565b600d55505050565b6108e633610e9f565b6109025760405162461bcd60e51b81526004016107a090611e18565b60fa8161090f8486611e8c565b6109199190611e8c565b111561092457600080fd5b600e839055600f82905560108190558061093e8385611e8c565b6109489190611e8c565b601155505050565b60006001600160a01b0384166109785760405162461bcd60e51b81526004016107a090611e9f565b6001600160a01b03831661099e5760405162461bcd60e51b81526004016107a090611ee4565b6002546001600160a01b038516600090815260066020908152604080832033845290915290205414610a71576001600160a01b038416600090815260066020908152604080832033845290915290205482811015610a375760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420416c6c6f77616e636560501b60448201526064016107a0565b6001600160a01b038516600090815260066020908152604080832033845290915281208054859290610a6a908490611f27565b9091555050505b610a7c848484610ebd565b90505b9392505050565b6000546001600160a01b03163314610ab05760405162461bcd60e51b81526004016107a090611f3a565b601954600160a81b900460ff1615610ac757600080fd5b6019805460ff60a01b19169055610adf436002611e8c565b6012556019805460ff60a81b1916600160a81b179055565b6000610864826002546107fd565b610b0e33610e9f565b610b2a5760405162461bcd60e51b81526004016107a090611e18565b600a811015610b3857600080fd5b6103e881600254610b499190611e53565b610b539190611e6a565b60035550565b610b6233610e9f565b610b7e5760405162461bcd60e51b81526004016107a090611e18565b600a811015610b8c57600080fd5b6103e881600254610b9d9190611e53565b610ba79190611e6a565b60045550565b610bb633610e9f565b610bd25760405162461bcd60e51b81526004016107a090611e18565b6001600160a01b031660009081526007602090815260408083208054600160ff1991821681179092556008845282852080548216831790556009909352922080549091169091179055565b610c2633610e9f565b610c425760405162461bcd60e51b81526004016107a090611e18565b601880546001600160a01b039485166001600160a01b031991821617909155601780549385169382169390931790925560198054919093169116179055565b60008054336001600160a01b0390911603610ca857610ca133848461110a565b9050610864565b610ca1338484610ebd565b6000546001600160a01b03163314610cdd5760405162461bcd60e51b81526004016107a090611f3a565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b610d0d33610e9f565b610d295760405162461bcd60e51b81526004016107a090611e18565b601b805460ff1916831515179055610d436012600a61203e565b610d4d9082611e53565b601c555050565b6000546001600160a01b03163314610d7e5760405162461bcd60e51b81526004016107a090611f3a565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b03163314610dc95760405162461bcd60e51b81526004016107a090611f3a565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b610e3e33610e9f565b610e5a5760405162461bcd60e51b81526004016107a090611e18565b6013805461ff0019169055565b610e7033610e9f565b610e8c5760405162461bcd60e51b81526004016107a090611e18565b6013805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205460ff1690565b60006001600160a01b038416610ee55760405162461bcd60e51b81526004016107a090611e9f565b6001600160a01b038316610f0b5760405162461bcd60e51b81526004016107a090611ee4565b6001600160a01b03841660009081526001602052604090205460ff1680610f4a57506001600160a01b03831660009081526001602052604090205460ff165b80610f6d57506001600160a01b03841660009081526009602052604090205460ff165b80610f7a5750601d5460ff165b15610f9157610f8a84848461110a565b9050610a7f565b601954600160a01b900460ff1615610fe25760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016107a0565b601354610100900460ff1615610ffd57610ffd848484611225565b61100683611435565b15611013576110136114c4565b60135460ff16156110a7577f0000000000000000000000003aeb88859fd2c513938daceeecc119af07f2f4ac6001600160a01b0316836001600160a01b0316148061108f57507f0000000000000000000000003aeb88859fd2c513938daceeecc119af07f2f4ac6001600160a01b0316846001600160a01b0316145b61109957816110a4565b6110a48484846116f7565b91505b6110b284848461110a565b50826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110f891815260200190565b60405180910390a35060019392505050565b6001600160a01b0383166000908152600560205260408120548281101561116a5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b60448201526064016107a0565b6001600160a01b03851660009081526005602052604090205461118e908490611f27565b6001600160a01b0380871660009081526005602052604080822093909355908616815220546111be908490611e8c565b6001600160a01b0380861660008181526005602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112129087815260200190565b60405180910390a3506001949350505050565b6001600160a01b03831660009081526008602052604090205460ff16801561126557506001600160a01b03821660009081526008602052604090205460ff165b1561126f57505050565b7f0000000000000000000000003aeb88859fd2c513938daceeecc119af07f2f4ac6001600160a01b0316836001600160a01b03161480156112c957506001600160a01b03821660009081526008602052604090205460ff16155b156113145760035481111561130f5760405162461bcd60e51b815260206004820152600c60248201526b13585e081d1e081b1a5b5a5d60a21b60448201526064016107a0565b6113b4565b7f0000000000000000000000003aeb88859fd2c513938daceeecc119af07f2f4ac6001600160a01b0316826001600160a01b031614801561136e57506001600160a01b03831660009081526008602052604090205460ff16155b156113b4576003548111156113b45760405162461bcd60e51b815260206004820152600c60248201526b13585e081d1e081b1a5b5a5d60a21b60448201526064016107a0565b6001600160a01b03821660009081526008602052604090205460ff166107f8576004546001600160a01b0383166000908152600560205260409020546113fa9083611e8c565b11156107f85760405162461bcd60e51b815260206004820152600a60248201526913585e081dd85b1b195d60b21b60448201526064016107a0565b60007f0000000000000000000000003aeb88859fd2c513938daceeecc119af07f2f4ac6001600160a01b0316826001600160a01b0316148015611485575042601a5460016114839190611e8c565b105b80156114945750601d5460ff16155b80156114a25750601b5460ff165b80156108645750601c5430600090815260056020526040902054101592915050565b601d805460ff1916600117905530600090815260056020526040812054905060006016546014546015546114f89190611e8c565b6115029190611e8c565b90506000821580611511575081155b1561151e575050506116eb565b6000600283601554866115319190611e53565b61153b9190611e6a565b6115459190611e6a565b905060006115538286611f27565b90504761155f826119fb565b600061156b8247611f27565b90506000866014548361157e9190611e53565b6115889190611e6a565b90506000876016548461159b9190611e53565b6115a59190611e6a565b90506000816115b48486611f27565b6115be9190611f27565b60006015819055601481905560168190556019546040519293506001600160a01b031691849181818185875af1925050503d806000811461161b576040519150601f19603f3d011682016040523d82523d6000602084013e611620565b606091505b509098505086158015906116345750600081115b15611687576116438782611b67565b601554604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6018546040516001600160a01b03909116904790600081818185875af1925050503d80600081146116d4576040519150601f19603f3d011682016040523d82523d6000602084013e6116d9565b606091505b505042601a5550505050505050505050505b601d805460ff19169055565b6001600160a01b03831660009081526007602052604081205460ff168061173657506001600160a01b03831660009081526007602052604090205460ff165b15611742575080610a7f565b60006012544310156117c857606461175b846062611e53565b6117659190611e6a565b90506062611774826032611e53565b61177e9190611e6a565b6015600082825461178f9190611e8c565b90915550606290506117a2826030611e53565b6117ac9190611e6a565b601460008282546117bd9190611e8c565b909155506119959050565b7f0000000000000000000000003aeb88859fd2c513938daceeecc119af07f2f4ac6001600160a01b0316846001600160a01b031614801561180b57506000601154115b1561189e576103e8601154846118219190611e53565b61182b9190611e6a565b9050601154600f548261183e9190611e53565b6118489190611e6a565b601560008282546118599190611e8c565b909155505060115460105461186e9083611e53565b6118789190611e6a565b601660008282546118899190611e8c565b9091555050601154600e546117a29083611e53565b7f0000000000000000000000003aeb88859fd2c513938daceeecc119af07f2f4ac6001600160a01b0316856001600160a01b03161480156118e157506000600d54115b15611995576103e8600d54846118f79190611e53565b6119019190611e6a565b9050600d54600b54826119149190611e53565b61191e9190611e6a565b6015600082825461192f9190611e8c565b9091555050600d54600c546119449083611e53565b61194e9190611e6a565b6016600082825461195f9190611e8c565b9091555050600d54600a546119749083611e53565b61197e9190611e6a565b6014600082825461198f9190611e8c565b90915550505b80156119e8576119a685308361110a565b5060405181815230906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6119f28184611f27565b95945050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611a3057611a3061204d565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611aa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac69190612063565b81600181518110611ad957611ad961204d565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790611b31908590600090869030904290600401612080565b600060405180830381600087803b158015611b4b57600080fd5b505af1158015611b5f573d6000803e3d6000fd5b505050505050565b60175460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b0390911660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990839060c40160606040518083038185885af1158015611be7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c0c91906120f1565b5050505050565b600060208284031215611c2557600080fd5b5035919050565b600060208083528351808285015260005b81811015611c5957858101830151858201604001528201611c3d565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611c8f57600080fd5b50565b60008060408385031215611ca557600080fd5b8235611cb081611c7a565b946020939093013593505050565b600080600060608486031215611cd357600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215611cff57600080fd5b8335611d0a81611c7a565b92506020840135611d1a81611c7a565b929592945050506040919091013590565b600060208284031215611d3d57600080fd5b8135610a7f81611c7a565b600080600060608486031215611d5d57600080fd5b8335611d6881611c7a565b92506020840135611d7881611c7a565b91506040840135611d8881611c7a565b809150509250925092565b60008060408385031215611da657600080fd5b8235611db181611c7a565b91506020830135611dc181611c7a565b809150509250929050565b80358015158114611ddc57600080fd5b919050565b60008060408385031215611df457600080fd5b611cb083611dcc565b600060208284031215611e0f57600080fd5b610a7f82611dcc565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761086457610864611e3d565b600082611e8757634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561086457610864611e3d565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561086457610864611e3d565b60208082526006908201526510a7aba722a960d11b604082015260600190565b600181815b80851115611f95578160001904821115611f7b57611f7b611e3d565b80851615611f8857918102915b93841c9390800290611f5f565b509250929050565b600082611fac57506001610864565b81611fb957506000610864565b8160018114611fcf5760028114611fd957611ff5565b6001915050610864565b60ff841115611fea57611fea611e3d565b50506001821b610864565b5060208310610133831016604e8410600b8410161715612018575081810a610864565b6120228383611f5a565b806000190482111561203657612036611e3d565b029392505050565b6000610a7f60ff841683611f9d565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561207557600080fd5b8151610a7f81611c7a565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156120d05784516001600160a01b0316835293830193918301916001016120ab565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561210657600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220a3e1a2917ac74802f59abcc1f8dae498c8dd6aa30f132a2a6086bb4bc9a0f90664736f6c63430008120033
Deployed Bytecode Sourcemap
3732:17830:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6653:58;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;6653:58:0;;;;;;;;21369:188;;;;;;;;;;-1:-1:-1;21369:188:0;;;;;:::i;:::-;;:::i;:::-;;8575:80;;;;;;;;;;-1:-1:-1;8647:5:0;;;;;;;;;;;;-1:-1:-1;;;8647:5:0;;;;8575:80;;;;;;;:::i;9240:216::-;;;;;;;;;;-1:-1:-1;9240:216:0;;;;;:::i;:::-;;:::i;:::-;;;1555:14:1;;1548:22;1530:41;;1518:2;1503:18;9240:216:0;1390:187:1;10666:389:0;;;;;;;;;;-1:-1:-1;10666:389:0;;;;;:::i;:::-;;:::i;11143:394::-;;;;;;;;;;-1:-1:-1;11143:394:0;;;;;:::i;:::-;;:::i;8305:88::-;;;;;;;;;;-1:-1:-1;8378:12:0;;8305:88;;19212:648;;;;;;;;;;-1:-1:-1;19212:648:0;;;;;:::i;:::-;;:::i;13797:222::-;;;;;;;;;;;;;:::i;2524:103::-;;;;;;;;;;-1:-1:-1;2524:103:0;;;;;:::i;:::-;2579:4;2614:5;-1:-1:-1;;;;;2603:16:0;;;2614:5;;2603:16;;2524:103;8399:80;;;;;;;;;;-1:-1:-1;8399:80:0;;4316:2;2758:36:1;;2746:2;2731:18;8399:80:0;2616:184:1;9464:117:0;;;;;;;;;;-1:-1:-1;9464:117:0;;;;;:::i;:::-;;:::i;5502:82::-;;;;;;;;;;;;;;;;12240:230;;;;;;;;;;-1:-1:-1;12240:230:0;;;;;:::i;:::-;;:::i;11942:235::-;;;;;;;;;;-1:-1:-1;11942:235:0;;;;;:::i;:::-;;:::i;6616:30::-;;;;;;;;;;-1:-1:-1;6616:30:0;;;;;;;;8661:105;;;;;;;;;;-1:-1:-1;8661:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;8745:18:0;8727:7;8745:18;;;:9;:18;;;;;;;8661:105;9736:332;;;;;;;;;;-1:-1:-1;9736:332:0;;;;;:::i;:::-;;:::i;11589:259::-;;;;;;;;;;-1:-1:-1;11589:259:0;;;;;:::i;:::-;;:::i;6300:30::-;;;;;;;;;;-1:-1:-1;6300:30:0;;;;-1:-1:-1;;;;;6300:30:0;;;;;;-1:-1:-1;;;;;3503:32:1;;;3485:51;;3473:2;3458:18;6300:30:0;3339:203:1;4685:64:0;;;;;;;;;;;;;;;;4617:60;;;;;;;;;;;;;;;;8485:84;;;;;;;;;;-1:-1:-1;8559:7:0;;;;;;;;;;;;-1:-1:-1;;;8559:7:0;;;;8485:84;;5703:86;;;;;;;;;;;;;;;;4077:29;;;;;;;;;;;;;;;18904:300;;;;;;;;;;-1:-1:-1;18904:300:0;;;;;:::i;:::-;;:::i;2317:94::-;;;;;;;;;;-1:-1:-1;2317:94:0;;;;;:::i;:::-;;:::i;6337:32::-;;;;;;;;;;-1:-1:-1;6337:32:0;;;;-1:-1:-1;;;;;6337:32:0;;;8911:64;;;;;;;;;;-1:-1:-1;8969:4:0;8911:64;;6263:30;;;;;;;;;;-1:-1:-1;6263:30:0;;;;-1:-1:-1;;;;;6263:30:0;;;8772:133;;;;;;;;;;-1:-1:-1;8772:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;8874:19:0;;;8856:7;8874:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;8772:133;14086:184;;;;;;;;;;-1:-1:-1;14086:184:0;;;;;:::i;:::-;;:::i;2419:97::-;;;;;;;;;;-1:-1:-1;2419:97:0;;;;;:::i;:::-;;:::i;2750:173::-;;;;;;;;;;-1:-1:-1;2750:173:0;;;;;:::i;:::-;;:::i;13408:75::-;;;;;;;;;;;;;:::i;3955:90::-;;;;;;;;;;;;4002:42;3955:90;;13617:98;;;;;;;;;;-1:-1:-1;13617:98:0;;;;;:::i;:::-;;:::i;2635:107::-;;;;;;;;;;-1:-1:-1;2635:107:0;;;;;:::i;:::-;;:::i;21369:188::-;2258:24;2271:10;2258:12;:24::i;:::-;2250:48;;;;-1:-1:-1;;;2250:48:0;;;;;;;:::i;:::-;;;;;;;;;21499:15:::1;::::0;21459:21:::1;::::0;-1:-1:-1;;;;;21499:15:0::1;21491:58;21545:3;21525:17;21538:4:::0;21459:21;21525:17:::1;:::i;:::-;:23;;;;:::i;:::-;21491:58;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;21427:130;21369:188:::0;:::o;9240:216::-;9344:10;9315:4;9332:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;9332:32:0;;;;;;;;;;:41;;;9389:37;9315:4;;9332:32;;9389:37;;;;9367:6;160:25:1;;148:2;133:18;;14:177;9389:37:0;;;;;;;;-1:-1:-1;9444:4:0;9240:216;;;;;:::o;10666:389::-;2258:24;2271:10;2258:12;:24::i;:::-;2250:48;;;;-1:-1:-1;;;2250:48:0;;;;;;;:::i;:::-;10838:3:::1;10823:11:::0;10791:29:::1;10807:13:::0;10791;:29:::1;:::i;:::-;:43;;;;:::i;:::-;:50;;10783:59;;;::::0;::::1;;10864:15;:31:::0;;;10906:15:::1;:31:::0;;;10948:17:::1;:31:::0;;;10968:11;11004:29:::1;10924:13:::0;10882;11004:29:::1;:::i;:::-;:43;;;;:::i;:::-;10990:11;:57:::0;-1:-1:-1;;;10666:389:0:o;11143:394::-;2258:24;2271:10;2258:12;:24::i;:::-;2250:48;;;;-1:-1:-1;;;2250:48:0;;;;;;;:::i;:::-;11316:3:::1;11301:11:::0;11269:29:::1;11285:13:::0;11269;:29:::1;:::i;:::-;:43;;;;:::i;:::-;:50;;11261:59;;;::::0;::::1;;11342:16;:32:::0;;;11385:16:::1;:32:::0;;;11428:18:::1;:32:::0;;;11449:11;11486:29:::1;11404:13:::0;11361;11486:29:::1;:::i;:::-;:43;;;;:::i;:::-;11471:12;:58:::0;-1:-1:-1;;;11143:394:0:o;19212:648::-;19312:4;-1:-1:-1;;;;;19337:20:0;;19329:70;;;;-1:-1:-1;;;19329:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19418:23:0;;19410:71;;;;-1:-1:-1;;;19410:71:0;;;;;;;:::i;:::-;19530:12;;-1:-1:-1;;;;;19495:19:0;;;;;;:11;:19;;;;;;;;19515:10;19495:31;;;;;;;;:47;19492:303;;-1:-1:-1;;;;;19624:19:0;;19600:20;19624:19;;;:11;:19;;;;;;;;19644:10;19624:31;;;;;;;;19678:22;;;;19670:57;;;;-1:-1:-1;;;19670:57:0;;7038:2:1;19670:57:0;;;7020:21:1;7077:2;7057:18;;;7050:30;-1:-1:-1;;;7096:18:1;;;7089:52;7158:18;;19670:57:0;6836:346:1;19670:57:0;-1:-1:-1;;;;;19742:19:0;;;;;;:11;:19;;;;;;;;19762:10;19742:31;;;;;;;:41;;19777:6;;19742:19;:41;;19777:6;;19742:41;:::i;:::-;;;;-1:-1:-1;;;19492:303:0;19812:40;19826:6;19834:9;19845:6;19812:13;:40::i;:::-;19805:47;;19212:648;;;;;;:::o;13797:222::-;2579:4;2614:5;-1:-1:-1;;;;;2614:5:0;2176:10;2603:16;2160:38;;;;-1:-1:-1;;;2160:38:0;;;;;;;:::i;:::-;13859:8:::1;::::0;-1:-1:-1;;;13859:8:0;::::1;;;:17;13851:26;;;::::0;::::1;;13888:10;:18:::0;;-1:-1:-1;;;;13888:18:0::1;::::0;;13933:16:::1;:12;13948:1;13933:16;:::i;:::-;13917:13;:32:::0;13996:8:::1;:15:::0;;-1:-1:-1;;;;13996:15:0::1;-1:-1:-1::0;;;13996:15:0::1;::::0;;13797:222::o;9464:117::-;9519:4;9543:30;9551:7;9560:12;;9543:7;:30::i;12240:230::-;2258:24;2271:10;2258:12;:24::i;:::-;2250:48;;;;-1:-1:-1;;;2250:48:0;;;;;;;:::i;:::-;12327:2:::1;12316:7;:13;;12308:22;;;::::0;::::1;;4569:5;12440:7;12425:12;;:22;;;;:::i;:::-;12423:39;;;;:::i;:::-;12408:12;:54:::0;-1:-1:-1;12240:230:0:o;11942:235::-;2258:24;2271:10;2258:12;:24::i;:::-;2250:48;;;;-1:-1:-1;;;2250:48:0;;;;;;;:::i;:::-;12031:2:::1;12020:7;:13;;12012:22;;;::::0;::::1;;4569:5;12147:7;12132:12;;:22;;;;:::i;:::-;12130:39;;;;:::i;:::-;12112:15;:57:::0;-1:-1:-1;11942:235:0:o;9736:332::-;2258:24;2271:10;2258:12;:24::i;:::-;2250:48;;;;-1:-1:-1;;;2250:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9840:16:0::1;;::::0;;;:11:::1;:16;::::0;;;;;;;:23;;9859:4:::1;-1:-1:-1::0;;9840:23:0;;::::1;::::0;::::1;::::0;;;9874:15:::1;:20:::0;;;;;:27;;;::::1;::::0;::::1;::::0;;10035:13:::1;:18:::0;;;;;:25;;;;::::1;::::0;;::::1;::::0;;9736:332::o;11589:259::-;2258:24;2271:10;2258:12;:24::i;:::-;2250:48;;;;-1:-1:-1;;;2250:48:0;;;;;;;:::i;:::-;11716:15:::1;:34:::0;;-1:-1:-1;;;;;11716:34:0;;::::1;-1:-1:-1::0;;;;;;11716:34:0;;::::1;;::::0;;;11761:15:::1;:34:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;11806:17:::1;:34:::0;;;;;::::1;::::0;::::1;;::::0;;11589:259::o;18904:300::-;18984:4;19005:5;;19014:10;-1:-1:-1;;;;;19005:5:0;;;:19;19001:196;;19047:45;19062:10;19074:9;19085:6;19047:14;:45::i;:::-;19040:52;;;;19001:196;19141:44;19155:10;19167:9;19178:6;19141:13;:44::i;2317:94::-;2579:4;2614:5;-1:-1:-1;;;;;2614:5:0;2176:10;2603:16;2160:38;;;;-1:-1:-1;;;2160:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2377:19:0::1;;::::0;;;2399:4:::1;2377:19;::::0;;;;;;;:26;;-1:-1:-1;;2377:26:0::1;::::0;;::::1;::::0;;2317:94::o;14086:184::-;2258:24;2271:10;2258:12;:24::i;:::-;2250:48;;;;-1:-1:-1;;;2250:48:0;;;;;;;:::i;:::-;14182:11:::1;:22:::0;;-1:-1:-1;;14182:22:0::1;::::0;::::1;;;::::0;;14245:15:::1;4316:2;14245;:15;:::i;:::-;14231:30;::::0;:10;:30:::1;:::i;:::-;14215:13;:46:::0;-1:-1:-1;;14086:184:0:o;2419:97::-;2579:4;2614:5;-1:-1:-1;;;;;2614:5:0;2176:10;2603:16;2160:38;;;;-1:-1:-1;;;2160:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2481:19:0::1;2503:5;2481:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;2481:27:0::1;::::0;;2419:97::o;2750:173::-;2579:4;2614:5;-1:-1:-1;;;;;2614:5:0;2176:10;2603:16;2160:38;;;;-1:-1:-1;;;2160:38:0;;;;;;;:::i;:::-;2826:5:::1;:11:::0;;-1:-1:-1;;;;;;2826:11:0::1;-1:-1:-1::0;;;;;2826:11:0;::::1;::::0;;::::1;::::0;;2848:19;;;-1:-1:-1;2848:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;2848:26:0::1;::::0;;::::1;::::0;;;2890:25;;3485:51:1;;;2890:25:0::1;::::0;3458:18:1;2890:25:0::1;;;;;;;2750:173:::0;:::o;13408:75::-;2258:24;2271:10;2258:12;:24::i;:::-;2250:48;;;;-1:-1:-1;;;2250:48:0;;;;;;;:::i;:::-;13461:6:::1;:14:::0;;-1:-1:-1;;13461:14:0::1;::::0;;13408:75::o;13617:98::-;2258:24;2271:10;2258:12;:24::i;:::-;2250:48;;;;-1:-1:-1;;;2250:48:0;;;;;;;:::i;:::-;13685:11:::1;:22:::0;;-1:-1:-1;;13685:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13617:98::o;2635:107::-;-1:-1:-1;;;;;2715:19:0;2691:4;2715:19;;;:14;:19;;;;;;;;;2635:107::o;19870:1316::-;19962:4;-1:-1:-1;;;;;19989:20:0;;19981:70;;;;-1:-1:-1;;;19981:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20070:23:0;;20062:71;;;;-1:-1:-1;;;20062:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20212:22:0;;;;;;:14;:22;;;;;;;;;:51;;-1:-1:-1;;;;;;20238:25:0;;;;;;:14;:25;;;;;;;;20212:51;:76;;;-1:-1:-1;;;;;;20267:21:0;;;;;;:13;:21;;;;;;;;20212:76;:86;;;-1:-1:-1;20292:6:0;;;;20212:86;20207:168;;;20322:41;20337:6;20345:9;20356:6;20322:14;:41::i;:::-;20315:48;;;;20207:168;20459:10;;-1:-1:-1;;;20459:10:0;;;;:19;20451:51;;;;-1:-1:-1;;;20451:51:0;;9455:2:1;20451:51:0;;;9437:21:1;9494:2;9474:18;;;9467:30;-1:-1:-1;;;9513:18:1;;;9506:50;9573:18;;20451:51:0;9253:344:1;20451:51:0;20601:6;;;;;;;20597:52;;;20609:38;20621:6;20629:9;20640:6;20609:11;:38::i;:::-;20750:26;20766:9;20750:15;:26::i;:::-;20747:44;;;20779:10;:8;:10::i;:::-;20868:11;;;;20865:135;;;20919:4;-1:-1:-1;;;;;20906:17:0;:9;-1:-1:-1;;;;;20906:17:0;;:35;;;;20937:4;-1:-1:-1;;;;;20927:14:0;:6;-1:-1:-1;;;;;20927:14:0;;20906:35;20905:83;;20982:6;20905:83;;;20945:34;20953:6;20961:9;20972:6;20945:7;:34::i;:::-;20896:92;;20865:135;21062:41;21077:6;21085:9;21096:6;21062:14;:41::i;:::-;;21138:9;-1:-1:-1;;;;;21121:35:0;21130:6;-1:-1:-1;;;;;21121:35:0;;21149:6;21121:35;;;;160:25:1;;148:2;133:18;;14:177;21121:35:0;;;;;;;;-1:-1:-1;21174:4:0;19870:1316;;;;;:::o;10080:503::-;-1:-1:-1;;;;;10214:17:0;;10173:4;10214:17;;;:9;:17;;;;;;10305:23;;;;10297:56;;;;-1:-1:-1;;;10297:56:0;;9804:2:1;10297:56:0;;;9786:21:1;9843:2;9823:18;;;9816:30;-1:-1:-1;;;9862:18:1;;;9855:50;9922:18;;10297:56:0;9602:344:1;10297:56:0;-1:-1:-1;;;;;10412:17:0;;;;;;:9;:17;;;;;;:26;;10432:6;;10412:26;:::i;:::-;-1:-1:-1;;;;;10392:17:0;;;;;;;:9;:17;;;;;;:46;;;;10473:20;;;;;;;:29;;10496:6;;10473:29;:::i;:::-;-1:-1:-1;;;;;10450:20:0;;;;;;;:9;:20;;;;;;;:52;;;;10518:35;;;;;;;;;;10546:6;160:25:1;;148:2;133:18;;14:177;10518:35:0;;;;;;;;-1:-1:-1;10571:4:0;;10080:503;-1:-1:-1;;;;10080:503:0:o;12482:856::-;-1:-1:-1;;;;;12660:23:0;;;;;;:15;:23;;;;;;;;:53;;;;-1:-1:-1;;;;;;12687:26:0;;;;;;:15;:26;;;;;;;;12660:53;12656:67;;;12482:856;;;:::o;12656:67::-;12887:4;-1:-1:-1;;;;;12877:14:0;:6;-1:-1:-1;;;;;12877:14:0;;:45;;;;-1:-1:-1;;;;;;12896:26:0;;;;;;:15;:26;;;;;;;;12895:27;12877:45;12873:278;;;12959:12;;12949:6;:22;;12941:47;;;;-1:-1:-1;;;12941:47:0;;10153:2:1;12941:47:0;;;10135:21:1;10192:2;10172:18;;;10165:30;-1:-1:-1;;;10211:18:1;;;10204:42;10263:18;;12941:47:0;9951:336:1;12941:47:0;12873:278;;;13041:4;-1:-1:-1;;;;;13028:17:0;:9;-1:-1:-1;;;;;13028:17:0;;:45;;;;-1:-1:-1;;;;;;13050:23:0;;;;;;:15;:23;;;;;;;;13049:24;13028:45;13025:126;;;13110:12;;13100:6;:22;;13092:47;;;;-1:-1:-1;;;13092:47:0;;10153:2:1;13092:47:0;;;10135:21:1;10192:2;10172:18;;;10165:30;-1:-1:-1;;;10211:18:1;;;10204:42;10263:18;;13092:47:0;9951:336:1;13092:47:0;-1:-1:-1;;;;;13203:26:0;;;;;;:15;:26;;;;;;;;13198:131;;13287:15;;-1:-1:-1;;;;;8745:18:0;;8727:7;8745:18;;;:9;:18;;;;;;13254:29;;:6;:29;:::i;:::-;:48;;13246:71;;;;-1:-1:-1;;;13246:71:0;;10494:2:1;13246:71:0;;;10476:21:1;10533:2;10513:18;;;10506:30;-1:-1:-1;;;10552:18:1;;;10545:40;10602:18;;13246:71:0;10292:334:1;14331:306:0;14398:4;14435;-1:-1:-1;;;;;14422:17:0;:9;-1:-1:-1;;;;;14422:17:0;;:80;;;;;14487:15;14468:12;;14483:1;14468:16;;;;:::i;:::-;:34;14422:80;:129;;;;-1:-1:-1;14545:6:0;;;;14544:7;14422:129;:153;;;;-1:-1:-1;14564:11:0;;;;14422:153;:207;;;;-1:-1:-1;14616:13:0;;14606:4;14588:24;;;;:9;:24;;;;;;:41;;14415:214;14331:306;-1:-1:-1;;14331:306:0:o;17186:1710::-;7009:6;:13;;-1:-1:-1;;7009:13:0;7018:4;7009:13;;;17279:4:::1;-1:-1:-1::0;8745:18:0;;;:9;:18;;;;;;17235:50:::1;;17296:25;17366:12;;17345:18;;17324;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;17296:82:::0;-1:-1:-1;17389:12:0::1;17418:20:::0;;;:46:::1;;-1:-1:-1::0;17442:22:0;;17418:46:::1;17414:61;;;17467:7;;;;;17414:61;17538:23;17625:1;17605:17;17583:18;;17565:15;:36;;;;:::i;:::-;17564:58;;;;:::i;:::-;:62;;;;:::i;:::-;17538:88:::0;-1:-1:-1;17637:26:0::1;17666:33;17538:88:::0;17666:15;:33:::1;:::i;:::-;17637:62:::0;-1:-1:-1;17740:21:0::1;17810:36;17637:62:::0;17810:16:::1;:36::i;:::-;17859:18;17880:41;17904:17:::0;17880:21:::1;:41;:::i;:::-;17859:62;;17932:23;17994:17;17972:18;;17959:10;:31;;;;:::i;:::-;17958:53;;;;:::i;:::-;17932:79;;18022:17;18084;18062:12;;18049:10;:25;;;;:::i;:::-;18048:53;;;;:::i;:::-;18022:79:::0;-1:-1:-1;18112:23:0::1;18022:79:::0;18138:28:::1;18151:15:::0;18138:10;:28:::1;:::i;:::-;:40;;;;:::i;:::-;18247:1;18226:18;:22:::0;;;18259:18:::1;:22:::0;;;18292:12:::1;:16:::0;;;18369:17:::1;::::0;18361:53:::1;::::0;18112:66;;-1:-1:-1;;;;;;18369:17:0::1;::::0;18400:9;;18361:53;18247:1;18361:53;18400:9;18369:17;18361:53:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;18347:67:0;;-1:-1:-1;;18456:19:0;;;;;:42:::1;;;18497:1;18479:15;:19;18456:42;18452:212;;;18515:46;18528:15;18545;18515:12;:46::i;:::-;18633:18;::::0;18581:71:::1;::::0;;11043:25:1;;;11099:2;11084:18;;11077:34;;;11127:18;;;11120:34;;;;18581:71:0;::::1;::::0;;;;11031:2:1;18581:71:0;;::::1;18452:212;18790:15;::::0;18782:63:::1;::::0;-1:-1:-1;;;;;18790:15:0;;::::1;::::0;18819:21:::1;::::0;18782:63:::1;::::0;;;18819:21;18790:15;18782:63:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;18873:15:0::1;18858:12;:30:::0;-1:-1:-1;;;;;;;;;;;7024:1:0::1;7027:6:::0;:14;;-1:-1:-1;;7027:14:0;;;17186:1710::o;14645:1609::-;-1:-1:-1;;;;;14817:17:0;;14722:7;14817:17;;;:11;:17;;;;;;;;;:36;;-1:-1:-1;;;;;;14838:15:0;;;;;;:11;:15;;;;;;;;14817:36;14813:82;;;-1:-1:-1;14877:6:0;14870:13;;14813:82;14968:12;15035:13;;15020:12;:28;15016:952;;;15086:3;15072:11;:6;15081:2;15072:11;:::i;:::-;:17;;;;:::i;:::-;15065:24;-1:-1:-1;15151:2:0;15138:9;15065:24;15145:2;15138:9;:::i;:::-;15137:16;;;;:::i;:::-;15115:18;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;15204:2:0;;-1:-1:-1;15191:9:0;:4;15198:2;15191:9;:::i;:::-;15190:16;;;;:::i;:::-;15168:18;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;15016:952:0;;-1:-1:-1;15016:952:0;;15265:4;-1:-1:-1;;;;;15259:10:0;:2;-1:-1:-1;;;;;15259:10:0;;:30;;;;;15288:1;15273:12;;:16;15259:30;15255:713;;;4569:5;15322:12;;15313:6;:21;;;;:::i;:::-;:34;;;;:::i;:::-;15306:41;;15414:12;;15392:16;;15385:4;:23;;;;:::i;:::-;15384:42;;;;:::i;:::-;15362:18;;:64;;;;;;;:::i;:::-;;;;-1:-1:-1;;15493:12:0;;15471:18;;15464:25;;:4;:25;:::i;:::-;15463:42;;;;:::i;:::-;15441:12;;:64;;;;;;;:::i;:::-;;;;-1:-1:-1;;15572:12:0;;15550:16;;15543:23;;:4;:23;:::i;15255:713::-;15644:4;-1:-1:-1;;;;;15636:12:0;:4;-1:-1:-1;;;;;15636:12:0;;:31;;;;;15666:1;15652:11;;:15;15636:31;15632:336;;;4569:5;15700:11;;15691:6;:20;;;;:::i;:::-;:33;;;;:::i;:::-;15684:40;;15790:11;;15769:15;;15762:4;:22;;;;:::i;:::-;15761:40;;;;:::i;:::-;15739:18;;:62;;;;;;;:::i;:::-;;;;-1:-1:-1;;15868:11:0;;15847:17;;15840:24;;:4;:24;:::i;:::-;15839:40;;;;:::i;:::-;15817:12;;:62;;;;;;;:::i;:::-;;;;-1:-1:-1;;15945:11:0;;15924:15;;15917:22;;:4;:22;:::i;:::-;15916:40;;;;:::i;:::-;15894:18;;:62;;;;;;;:::i;:::-;;;;-1:-1:-1;;15632:336:0;16044:8;;16040:137;;16069:41;16084:4;16098;16105;16069:14;:41::i;:::-;-1:-1:-1;16130:35:0;;160:25:1;;;16153:4:0;;-1:-1:-1;;;;;16130:35:0;;;;;148:2:1;133:18;16130:35:0;;;;;;;16040:137;16232:14;16242:4;16232:14;;:::i;:::-;;14645:1609;-1:-1:-1;;;;;14645:1609:0:o;16268:445::-;16394:16;;;16408:1;16394:16;;;;;;;;16370:21;;16394:16;;;;;;;;;;-1:-1:-1;16394:16:0;16370:40;;16439:4;16421;16426:1;16421:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;16421:23:0;;;-1:-1:-1;;;;;16421:23:0;;;;;4002:42;-1:-1:-1;;;;;16465:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16455:4;16460:1;16455:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16455:23:0;;;:7;;;;;;;;;;;:23;16517:188;;-1:-1:-1;;;16517:188:0;;4002:42;;16517:57;;:188;;16589:11;;16615:1;;16632:4;;16659;;16679:15;;16517:188;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16323:390;16268:445;:::o;16721:457::-;17114:15;;16971:199;;-1:-1:-1;;;16971:199:0;;17034:4;16971:199;;;13011:34:1;13061:18;;;13054:34;;;17080:1:0;13104:18:1;;;13097:34;;;13147:18;;;13140:34;-1:-1:-1;;;;;17114:15:0;;;13190:19:1;;;13183:44;17144:15:0;13243:19:1;;;13236:35;4002:42:0;;16971:22;;17001:9;;12945:19:1;;16971:199:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16721:457;;:::o;196:180:1:-;255:6;308:2;296:9;287:7;283:23;279:32;276:52;;;324:1;321;314:12;276:52;-1:-1:-1;347:23:1;;196:180;-1:-1:-1;196:180:1:o;381:548::-;493:4;522:2;551;540:9;533:21;583:6;577:13;626:6;621:2;610:9;606:18;599:34;651:1;661:140;675:6;672:1;669:13;661:140;;;770:14;;;766:23;;760:30;736:17;;;755:2;732:26;725:66;690:10;;661:140;;;665:3;850:1;845:2;836:6;825:9;821:22;817:31;810:42;920:2;913;909:7;904:2;896:6;892:15;888:29;877:9;873:45;869:54;861:62;;;;381:548;;;;:::o;934:131::-;-1:-1:-1;;;;;1009:31:1;;999:42;;989:70;;1055:1;1052;1045:12;989:70;934:131;:::o;1070:315::-;1138:6;1146;1199:2;1187:9;1178:7;1174:23;1170:32;1167:52;;;1215:1;1212;1205:12;1167:52;1254:9;1241:23;1273:31;1298:5;1273:31;:::i;:::-;1323:5;1375:2;1360:18;;;;1347:32;;-1:-1:-1;;;1070:315:1:o;1582:316::-;1659:6;1667;1675;1728:2;1716:9;1707:7;1703:23;1699:32;1696:52;;;1744:1;1741;1734:12;1696:52;-1:-1:-1;;1767:23:1;;;1837:2;1822:18;;1809:32;;-1:-1:-1;1888:2:1;1873:18;;;1860:32;;1582:316;-1:-1:-1;1582:316:1:o;1903:456::-;1980:6;1988;1996;2049:2;2037:9;2028:7;2024:23;2020:32;2017:52;;;2065:1;2062;2055:12;2017:52;2104:9;2091:23;2123:31;2148:5;2123:31;:::i;:::-;2173:5;-1:-1:-1;2230:2:1;2215:18;;2202:32;2243:33;2202:32;2243:33;:::i;:::-;1903:456;;2295:7;;-1:-1:-1;;;2349:2:1;2334:18;;;;2321:32;;1903:456::o;2364:247::-;2423:6;2476:2;2464:9;2455:7;2451:23;2447:32;2444:52;;;2492:1;2489;2482:12;2444:52;2531:9;2518:23;2550:31;2575:5;2550:31;:::i;2805:529::-;2882:6;2890;2898;2951:2;2939:9;2930:7;2926:23;2922:32;2919:52;;;2967:1;2964;2957:12;2919:52;3006:9;2993:23;3025:31;3050:5;3025:31;:::i;:::-;3075:5;-1:-1:-1;3132:2:1;3117:18;;3104:32;3145:33;3104:32;3145:33;:::i;:::-;3197:7;-1:-1:-1;3256:2:1;3241:18;;3228:32;3269:33;3228:32;3269:33;:::i;:::-;3321:7;3311:17;;;2805:529;;;;;:::o;3547:388::-;3615:6;3623;3676:2;3664:9;3655:7;3651:23;3647:32;3644:52;;;3692:1;3689;3682:12;3644:52;3731:9;3718:23;3750:31;3775:5;3750:31;:::i;:::-;3800:5;-1:-1:-1;3857:2:1;3842:18;;3829:32;3870:33;3829:32;3870:33;:::i;:::-;3922:7;3912:17;;;3547:388;;;;;:::o;3940:160::-;4005:20;;4061:13;;4054:21;4044:32;;4034:60;;4090:1;4087;4080:12;4034:60;3940:160;;;:::o;4105:248::-;4170:6;4178;4231:2;4219:9;4210:7;4206:23;4202:32;4199:52;;;4247:1;4244;4237:12;4199:52;4270:26;4286:9;4270:26;:::i;4844:180::-;4900:6;4953:2;4941:9;4932:7;4928:23;4924:32;4921:52;;;4969:1;4966;4959:12;4921:52;4992:26;5008:9;4992:26;:::i;5029:335::-;5231:2;5213:21;;;5270:2;5250:18;;;5243:30;-1:-1:-1;;;5304:2:1;5289:18;;5282:41;5355:2;5340:18;;5029:335::o;5369:127::-;5430:10;5425:3;5421:20;5418:1;5411:31;5461:4;5458:1;5451:15;5485:4;5482:1;5475:15;5501:168;5574:9;;;5605;;5622:15;;;5616:22;;5602:37;5592:71;;5643:18;;:::i;5674:217::-;5714:1;5740;5730:132;;5784:10;5779:3;5775:20;5772:1;5765:31;5819:4;5816:1;5809:15;5847:4;5844:1;5837:15;5730:132;-1:-1:-1;5876:9:1;;5674:217::o;5896:125::-;5961:9;;;5982:10;;;5979:36;;;5995:18;;:::i;6026:401::-;6228:2;6210:21;;;6267:2;6247:18;;;6240:30;6306:34;6301:2;6286:18;;6279:62;-1:-1:-1;;;6372:2:1;6357:18;;6350:35;6417:3;6402:19;;6026:401::o;6432:399::-;6634:2;6616:21;;;6673:2;6653:18;;;6646:30;6712:34;6707:2;6692:18;;6685:62;-1:-1:-1;;;6778:2:1;6763:18;;6756:33;6821:3;6806:19;;6432:399::o;7187:128::-;7254:9;;;7275:11;;;7272:37;;;7289:18;;:::i;7320:329::-;7522:2;7504:21;;;7561:1;7541:18;;;7534:29;-1:-1:-1;;;7594:2:1;7579:18;;7572:36;7640:2;7625:18;;7320:329::o;7654:422::-;7743:1;7786:5;7743:1;7800:270;7821:7;7811:8;7808:21;7800:270;;;7880:4;7876:1;7872:6;7868:17;7862:4;7859:27;7856:53;;;7889:18;;:::i;:::-;7939:7;7929:8;7925:22;7922:55;;;7959:16;;;;7922:55;8038:22;;;;7998:15;;;;7800:270;;;7804:3;7654:422;;;;;:::o;8081:806::-;8130:5;8160:8;8150:80;;-1:-1:-1;8201:1:1;8215:5;;8150:80;8249:4;8239:76;;-1:-1:-1;8286:1:1;8300:5;;8239:76;8331:4;8349:1;8344:59;;;;8417:1;8412:130;;;;8324:218;;8344:59;8374:1;8365:10;;8388:5;;;8412:130;8449:3;8439:8;8436:17;8433:43;;;8456:18;;:::i;:::-;-1:-1:-1;;8512:1:1;8498:16;;8527:5;;8324:218;;8626:2;8616:8;8613:16;8607:3;8601:4;8598:13;8594:36;8588:2;8578:8;8575:16;8570:2;8564:4;8561:12;8557:35;8554:77;8551:159;;;-1:-1:-1;8663:19:1;;;8695:5;;8551:159;8742:34;8767:8;8761:4;8742:34;:::i;:::-;8812:6;8808:1;8804:6;8800:19;8791:7;8788:32;8785:58;;;8823:18;;:::i;:::-;8861:20;;8081:806;-1:-1:-1;;;8081:806:1:o;8892:140::-;8950:5;8979:47;9020:4;9010:8;9006:19;9000:4;8979:47;:::i;11297:127::-;11358:10;11353:3;11349:20;11346:1;11339:31;11389:4;11386:1;11379:15;11413:4;11410:1;11403:15;11429:251;11499:6;11552:2;11540:9;11531:7;11527:23;11523:32;11520:52;;;11568:1;11565;11558:12;11520:52;11600:9;11594:16;11619:31;11644:5;11619:31;:::i;11685:980::-;11947:4;11995:3;11984:9;11980:19;12026:6;12015:9;12008:25;12052:2;12090:6;12085:2;12074:9;12070:18;12063:34;12133:3;12128:2;12117:9;12113:18;12106:31;12157:6;12192;12186:13;12223:6;12215;12208:22;12261:3;12250:9;12246:19;12239:26;;12300:2;12292:6;12288:15;12274:29;;12321:1;12331:195;12345:6;12342:1;12339:13;12331:195;;;12410:13;;-1:-1:-1;;;;;12406:39:1;12394:52;;12501:15;;;;12466:12;;;;12442:1;12360:9;12331:195;;;-1:-1:-1;;;;;;;12582:32:1;;;;12577:2;12562:18;;12555:60;-1:-1:-1;;;12646:3:1;12631:19;12624:35;12543:3;11685:980;-1:-1:-1;;;11685:980:1:o;13282:306::-;13370:6;13378;13386;13439:2;13427:9;13418:7;13414:23;13410:32;13407:52;;;13455:1;13452;13445:12;13407:52;13484:9;13478:16;13468:26;;13534:2;13523:9;13519:18;13513:25;13503:35;;13578:2;13567:9;13563:18;13557:25;13547:35;;13282:306;;;;;:::o
Swarm Source
ipfs://a3e1a2917ac74802f59abcc1f8dae498c8dd6aa30f132a2a6086bb4bc9a0f906
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.