ERC-20
Overview
Max Total Supply
1,000,000 KIBO
Holders
162
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
KiboInu
Compiler Version
v0.8.21+commit.d9974bed
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-09-20 */ /** Ethereum's first fully automated GambleFi Lottery Based Token built directly into the tokenomics with a winner every 3 hours! https://kiboinu.com/ https://t.me/KiboInuLottery https://twitter.com/KiboInu */ // SPDX-License-Identifier: MIT pragma solidity 0.8.21; library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) {return a + b;} function sub(uint256 a, uint256 b) internal pure returns (uint256) {return a - b;} function mul(uint256 a, uint256 b) internal pure returns (uint256) {return a * b;} function div(uint256 a, uint256 b) internal pure returns (uint256) {return a / b;} function mod(uint256 a, uint256 b) internal pure returns (uint256) {return a % b;} function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked{require(b <= a, errorMessage); return a - b;}} function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked{require(b > 0, errorMessage); return a / b;}} function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked{require(b > 0, errorMessage); return a % b;}}} interface IERC20 { function totalSupply() external view returns (uint256); function circulatingSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function getOwner() external view returns (address); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address _owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value);} abstract contract Ownable { 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 stakeIntegration { function stakingWithdraw(address depositor, uint256 _amount) external; function stakingDeposit(address depositor, uint256 _amount) external; function stakingClaimToCompound(address sender, address recipient) external; function internalClaimRewards(address sender) external; } interface tokenStaking { function deposit(uint256 amount) external; function withdraw(uint256 amount) external; function compound() external; } interface Lottery { function lotteryTransaction(address user, uint256 amount) external; function viewMinPurchaseAmount() external view returns (uint256); } 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 KiboInu is IERC20, tokenStaking, Ownable { using SafeMath for uint256; string private constant _name = 'Kibo Inu'; string private constant _symbol = 'KIBO'; uint8 private constant _decimals = 9; uint256 private _totalSupply = 1000000 * (10 ** _decimals); uint256 public _maxTxAmount = ( _totalSupply * 100 ) / 10000; uint256 public _maxWalletToken = ( _totalSupply * 100 ) / 10000; mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) public isFeeExempt; IRouter router; address public pair; Lottery public lotteryContract; bool private tradingAllowed; uint256 private liquidityFee = 0; uint256 private marketingFee = 500; uint256 private developmentFee = 500; uint256 private lotteryFee = 500; uint256 private tokenFee = 0; uint256 private totalFee = 1500; uint256 private sellFee = 3000; uint256 private transferFee = 3000; uint256 private denominator = 10000; bool private swapEnabled; uint256 private swapTimes; uint256 private swapAmount = 1; bool private swapping; bool private feeless; uint256 private swapThreshold = ( _totalSupply * 1000 ) / 100000; uint256 private minTokenAmount = ( _totalSupply * 10 ) / 100000; modifier feelessTransaction {feeless = true; _; feeless = false;} modifier lockTheSwap {swapping = true; _; swapping = false;} mapping(address => uint256) public amountStaked; address internal token_receiver; uint256 public totalStaked; stakeIntegration internal stakingContract; address internal constant DEAD = 0x000000000000000000000000000000000000dEaD; address internal development_receiver = 0x1ca25568956CCD2838FcD543D3eA2E52efad8C50; address internal marketing_receiver = 0x6F44a56a89b1CF62Cac3dd6A9928d0BBAA509467; address internal liquidity_receiver = 0x1ca25568956CCD2838FcD543D3eA2E52efad8C50; constructor() Ownable(msg.sender) { IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); lotteryContract = Lottery(0x34Bd681F2F0267d4dcb346fbD2156e8542392952); address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH()); router = _router; pair = _pair; token_receiver = address(lotteryContract); isFeeExempt[address(lotteryContract)] = true; isFeeExempt[address(this)] = true; isFeeExempt[liquidity_receiver] = true; isFeeExempt[marketing_receiver] = true; isFeeExempt[token_receiver] = true; isFeeExempt[development_receiver] = true; isFeeExempt[address(DEAD)] = 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 getOwner() external view override returns (address) { return owner; } function totalSupply() public view override returns (uint256) {return _totalSupply;} function balanceOf(address account) public view override returns (uint256) {return _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 approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;} function availableBalance(address wallet) public view returns (uint256) {return _balances[wallet].sub(amountStaked[wallet]);} function circulatingSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));} function preTxCheck(address sender, address recipient, uint256 amount) internal view { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(amount <= balanceOf(sender),"You are trying to transfer more than your balance"); } function _transfer(address sender, address recipient, uint256 amount) private { preTxCheck(sender, recipient, amount); checkTradingAllowed(sender, recipient); checkMaxWallet(sender, recipient, amount); checkTxLimit(sender, recipient, amount); swapbackCounters(sender, recipient); swapBack(sender, recipient, amount); _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); checkLottery(sender, recipient, amount); } function checkLottery(address sender, address recipient, uint256 amount) internal { if(sender == pair && !isFeeExempt[recipient] && tradingAllowed && !swapping && !feeless){ try lotteryContract.lotteryTransaction(recipient, amount) {} catch {}} } function setLotteryContract(address lotteryCA) external onlyOwner { lotteryContract = Lottery(lotteryCA); isFeeExempt[lotteryCA] = true; token_receiver = lotteryCA; } function internalDeposit(address sender, uint256 amount) internal { require(amount <= _balances[sender].sub(amountStaked[sender]), "ERC20: Cannot stake more than available balance"); stakingContract.stakingDeposit(sender, amount); amountStaked[sender] = amountStaked[sender].add(amount); totalStaked = totalStaked.add(amount); } function deposit(uint256 amount) override external { internalDeposit(msg.sender, amount); } function withdraw(uint256 amount) override external { require(amount <= amountStaked[msg.sender], "ERC20: Cannot unstake more than amount staked"); stakingContract.stakingWithdraw(msg.sender, amount); amountStaked[msg.sender] = amountStaked[msg.sender].sub(amount); totalStaked = totalStaked.sub(amount); } function compound() override external feelessTransaction { uint256 initialToken = balanceOf(msg.sender); stakingContract.stakingClaimToCompound(msg.sender, msg.sender); uint256 afterToken = balanceOf(msg.sender).sub(initialToken); internalDeposit(msg.sender, afterToken); } function setStakingAddress(address _staking) external onlyOwner { stakingContract = stakeIntegration(_staking); isFeeExempt[_staking] = true; } function checkTradingAllowed(address sender, address recipient) internal view { if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "tradingAllowed");} } function checkMaxWallet(address sender, address recipient, uint256 amount) internal view { if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD)){ require((_balances[recipient].add(amount)) <= _maxWalletToken, "Exceeds maximum wallet amount.");} } function swapbackCounters(address sender, address recipient) internal { if(recipient == pair && !isFeeExempt[sender] && !swapping){swapTimes += uint256(1);} } function checkTxLimit(address sender, address recipient, uint256 amount) internal view { if(amountStaked[sender] > uint256(0)){require((amount.add(amountStaked[sender])) <= _balances[sender], "ERC20: Exceeds maximum allowed not currently staked.");} require(amount <= _maxTxAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded"); } function startTrading() external onlyOwner { tradingAllowed = true; swapEnabled = true; } function setStructure(uint256 _liquidity, uint256 _marketing, uint256 _development, uint256 _lottery, uint256 _token, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner { liquidityFee = _liquidity; marketingFee = _marketing; developmentFee = _development; lotteryFee = _lottery; totalFee = _total; sellFee = _sell; transferFee = _trans; tokenFee = _token; require(totalFee <= denominator && sellFee <= denominator && tokenFee <= denominator && transferFee <= denominator, "totalFee and sellFee cannot be more than 20%"); } function setParameters(uint256 _buy, uint256 _wallet) external onlyOwner { uint256 newTx = totalSupply().mul(_buy).div(uint256(10000)); uint256 newWallet = totalSupply().mul(_wallet).div(uint256(10000)); uint256 limit = totalSupply().mul(5).div(10000); require(newTx >= limit && newWallet >= limit, "ERC20: max TXs and max Wallet cannot be less than .5%"); _maxTxAmount = newTx; _maxWalletToken = newWallet; } function setSwapbackSettings(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 setInternalAddresses(address _marketing, address _liquidity, address _development, address _token) external onlyOwner { marketing_receiver = _marketing; liquidity_receiver = _liquidity; development_receiver = _development; token_receiver = _token; isFeeExempt[_marketing] = true; isFeeExempt[_liquidity] = true; isFeeExempt[_development] = true; isFeeExempt[_token] = true; } function setisExempt(address _address, bool _enabled) external onlyOwner { isFeeExempt[_address] = _enabled; } function swapAndLiquify(uint256 tokens) private lockTheSwap { uint256 _denominator = totalFee.add(1).mul(2); if(totalFee == uint256(0)){_denominator = liquidityFee.add( marketingFee).add(lotteryFee).add(developmentFee).add(1).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, liquidity_receiver); } uint256 marketingAmount = unitBalance.mul(2).mul(marketingFee); if(marketingAmount > 0){payable(marketing_receiver).transfer(marketingAmount);} uint256 lotteryAmount = unitBalance.mul(2).mul(lotteryFee); if(lotteryAmount > 0){payable(address(lotteryContract)).transfer(lotteryAmount);} uint256 excessAmount = address(this).balance; if(excessAmount > uint256(0)){payable(development_receiver).transfer(excessAmount);} } function addLiquidity(uint256 tokenAmount, uint256 ETHAmount, address receiver) private { _approve(address(this), address(router), tokenAmount); router.addLiquidityETH{value: ETHAmount}( address(this), tokenAmount, 0, 0, address(receiver), block.timestamp); } function swapTokensForETH(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); _approve(address(this), address(router), tokenAmount); router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp); } function shouldSwapBack(address sender, address recipient, uint256 amount) internal view returns (bool) { bool aboveMin = amount >= minTokenAmount; bool aboveThreshold = balanceOf(address(this)) >= swapThreshold; return !swapping && swapEnabled && tradingAllowed && aboveMin && !isFeeExempt[sender] && recipient == pair && swapTimes >= swapAmount && aboveThreshold; } function swapBack(address sender, address recipient, uint256 amount) internal { if(shouldSwapBack(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);} } function shouldTakeFee(address sender, address recipient) internal view returns (bool) { return !isFeeExempt[sender] && !isFeeExempt[recipient]; } function getTotalFee(address sender, address recipient) internal view returns (uint256) { if(recipient == pair && sellFee > uint256(0)){return sellFee;} if(sender == pair && totalFee > uint256(0)){return totalFee;} return transferFee; } function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) { if(getTotalFee(sender, recipient) > 0 && !swapping){ uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient)); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); if(tokenFee <= getTotalFee(sender, recipient) && tokenFee > uint256(0)){ _transfer(address(this), address(token_receiver), amount.div(denominator).mul(tokenFee));} return amount.sub(feeAmount);} return amount; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function rescueERC20(address _address, uint256 percent) external onlyOwner { uint256 _amount = IERC20(_address).balanceOf(address(this)); uint256 tamount = _amount.mul(percent).div(100); IERC20(_address).transfer(development_receiver, tamount); } function transferBalance(uint256 _amount) external { payable(development_receiver).transfer(_amount); } function setTokenAddress(address _address) external onlyOwner { token_receiver = _address; } function _claimStakingRewards() external { stakingContract.internalClaimRewards(msg.sender); } }
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":"_claimStakingRewards","outputs":[],"stateMutability":"nonpayable","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":"","type":"address"}],"name":"amountStaked","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":"wallet","type":"address"}],"name":"availableBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"compound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","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":"lotteryContract","outputs":[{"internalType":"contract Lottery","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":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_liquidity","type":"address"},{"internalType":"address","name":"_development","type":"address"},{"internalType":"address","name":"_token","type":"address"}],"name":"setInternalAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"lotteryCA","type":"address"}],"name":"setLotteryContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_staking","type":"address"}],"name":"setStakingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_lottery","type":"uint256"},{"internalType":"uint256","name":"_token","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_minTokenAmount","type":"uint256"}],"name":"setSwapbackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setTokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalStaked","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":"uint256","name":"_amount","type":"uint256"}],"name":"transferBalance","outputs":[],"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":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052620000126009600a62000522565b6200002190620f424062000539565b600155612710600154606462000038919062000539565b62000044919062000553565b60025561271060015460646200005b919062000539565b62000067919062000553565b6003555f600a556101f4600b556101f4600c556101f4600d555f600e556105dc600f55610bb8601055610bb86011556127106012556001601555620186a06001546103e8620000b7919062000539565b620000c3919062000553565b601755620186a0600154600a620000db919062000539565b620000e7919062000553565b601855601d80546001600160a01b0319908116731ca25568956ccd2838fcd543d3ea2e52efad8c50908117909255601e80548216736f44a56a89b1cf62cac3dd6a9928d0bbaa509467179055601f805490911690911790553480156200014b575f80fd5b505f80546001600160a01b031990811633178255600980549091167334bd681f2f0267d4dcb346fbd2156e85423929521790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa158015620001d1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001f7919062000573565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000243573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000269919062000573565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002b4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002da919062000573565b600780546001600160a01b038581166001600160a01b03199283161790925560088054848416908316179055600954601a805490921690831690811782555f908152600660209081526040808320805460ff1990811660019081179092553085528285208054821683179055601f54871685528285208054821683179055601e548716855282852080548216831790559454861684528184208054861682179055601d54909516835280832080548516861790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22805485168617905533808452818420805490951686179094559354600482528483208190559351938452939450909290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350506200059b565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200046757815f19048211156200044b576200044b62000413565b808516156200045957918102915b93841c93908002906200042c565b509250929050565b5f826200047f575060016200051c565b816200048d57505f6200051c565b8160018114620004a65760028114620004b157620004d1565b60019150506200051c565b60ff841115620004c557620004c562000413565b50506001821b6200051c565b5060208310610133831016604e8410600b8410161715620004f6575081810a6200051c565b62000502838362000427565b805f190482111562000518576200051862000413565b0290505b92915050565b5f6200053260ff8416836200046f565b9392505050565b80820281158282048414176200051c576200051c62000413565b5f826200056e57634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121562000584575f80fd5b81516001600160a01b038116811462000532575f80fd5b61247180620005a95f395ff3fe60806040526004361061020a575f3560e01c8063884870c711610113578063b29c662a1161009d578063e94dd17c1161006d578063e94dd17c14610627578063ef40a67014610646578063f2fde38b14610671578063f4e0d9ac14610690578063f69e2046146106af575f80fd5b8063b29c662a14610586578063b6b55f25146105a5578063dd62ed3e146105c4578063e2d6f94c14610608575f80fd5b80639358928b116100e35780639358928b146104e957806395d89b41146104fd578063a0821be314610529578063a8aa1b3114610548578063a9059cbb14610567575f80fd5b8063884870c71461045c578063893d20e81461047b5780638a60c4c1146104ab5780638cd4426d146104ca575f80fd5b80632e1a7d4d1161019457806348ff2b8b1161016457806348ff2b8b146103df57806370a08231146103fe57806378109e541461041d5780637d1db4a514610432578063817b1cd214610447575f80fd5b80632e1a7d4d1461034a5780632f54bf6e14610369578063313ce567146103965780633f4218e0146103b1575f80fd5b80631590a04f116101da5780631590a04f146102bb57806318160ddd146102da57806323b872dd146102f857806326a4e8d214610317578063293230b814610336575f80fd5b806305356b5c1461021557806305dc05251461022b57806306fdde031461024a578063095ea7b31461028c575f80fd5b3661021157005b5f80fd5b348015610220575f80fd5b506102296106c3565b005b348015610236575f80fd5b50610229610245366004612041565b61071d565b348015610255575f80fd5b506040805180820190915260088152674b69626f20496e7560c01b60208201525b604051610283919061209a565b60405180910390f35b348015610297575f80fd5b506102ab6102a63660046120e5565b6107e6565b6040519015158152602001610283565b3480156102c6575f80fd5b506102296102d536600461210f565b6107fc565b3480156102e5575f80fd5b506001545b604051908152602001610283565b348015610303575f80fd5b506102ab61031236600461212a565b610869565b348015610322575f80fd5b5061022961033136600461210f565b6108d1565b348015610341575f80fd5b5061022961091c565b348015610355575f80fd5b50610229610364366004612168565b610967565b348015610374575f80fd5b506102ab61038336600461210f565b5f546001600160a01b0391821691161490565b3480156103a1575f80fd5b5060405160098152602001610283565b3480156103bc575f80fd5b506102ab6103cb36600461210f565b60066020525f908152604090205460ff1681565b3480156103ea575f80fd5b506102296103f936600461218c565b610a76565b348015610409575f80fd5b506102ea61041836600461210f565b610ac9565b348015610428575f80fd5b506102ea60035481565b34801561043d575f80fd5b506102ea60025481565b348015610452575f80fd5b506102ea601b5481565b348015610467575f80fd5b506102296104763660046121c3565b610ae3565b348015610486575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610283565b3480156104b6575f80fd5b506102296104c5366004612168565b610be3565b3480156104d5575f80fd5b506102296104e43660046120e5565b610c1e565b3480156104f4575f80fd5b506102ea610d3e565b348015610508575f80fd5b506040805180820190915260048152634b49424f60e01b6020820152610276565b348015610534575f80fd5b506102ea61054336600461210f565b610d6d565b348015610553575f80fd5b50600854610493906001600160a01b031681565b348015610572575f80fd5b506102ab6105813660046120e5565b610d99565b348015610591575f80fd5b50600954610493906001600160a01b031681565b3480156105b0575f80fd5b506102296105bf366004612168565b610da5565b3480156105cf575f80fd5b506102ea6105de3660046121e3565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205490565b348015610613575f80fd5b5061022961062236600461220f565b610db2565b348015610632575f80fd5b5061022961064136600461225f565b610ea4565b348015610651575f80fd5b506102ea61066036600461210f565b60196020525f908152604090205481565b34801561067c575f80fd5b5061022961068b36600461210f565b610f09565b34801561069b575f80fd5b506102296106aa36600461210f565b610f85565b3480156106ba575f80fd5b50610229610fe7565b601c5460405163735a325560e01b81523360048201526001600160a01b039091169063735a3255906024015f604051808303815f87803b158015610705575f80fd5b505af1158015610717573d5f803e3d5ffd5b50505050565b5f546001600160a01b0316331461074f5760405162461bcd60e51b815260040161074690612288565b60405180910390fd5b601e80546001600160a01b039586166001600160a01b03199182168117909255601f805495871695821686179055601d805494871694821685179055601a805493909616921682179094555f93845260066020526040808520805460ff1990811660019081179092559486528186208054861682179055928552808520805485168417905590845290922080549091169091179055565b5f6107f2338484611089565b5060015b92915050565b5f546001600160a01b031633146108255760405162461bcd60e51b815260040161074690612288565b600980546001600160a01b039092166001600160a01b031992831681179091555f818152600660205260409020805460ff19166001179055601a8054909216179055565b5f6108758484846111ac565b6108c684336108c185604051806060016040528060288152602001612414602891396001600160a01b038a165f90815260056020908152604080832033845290915290205491906112d3565b611089565b5060015b9392505050565b5f546001600160a01b031633146108fa5760405162461bcd60e51b815260040161074690612288565b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146109455760405162461bcd60e51b815260040161074690612288565b6009805460ff60a01b1916600160a01b1790556013805460ff19166001179055565b335f908152601960205260409020548111156109db5760405162461bcd60e51b815260206004820152602d60248201527f45524332303a2043616e6e6f7420756e7374616b65206d6f7265207468616e2060448201526c185b5bdd5b9d081cdd185ad959609a1b6064820152608401610746565b601c5460405163d8a9bf2960e01b8152336004820152602481018390526001600160a01b039091169063d8a9bf29906044015f604051808303815f87803b158015610a24575f80fd5b505af1158015610a36573d5f803e3d5ffd5b5050335f90815260196020526040902054610a5492509050826112fe565b335f90815260196020526040902055601b54610a7090826112fe565b601b5550565b5f546001600160a01b03163314610a9f5760405162461bcd60e51b815260040161074690612288565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b6001600160a01b03165f9081526004602052604090205490565b5f546001600160a01b03163314610b0c5760405162461bcd60e51b815260040161074690612288565b5f610b2c612710610b2685610b2060015490565b90611309565b90611314565b90505f610b42612710610b2685610b2060015490565b90505f610b59612710610b266005610b2060015490565b9050808310158015610b6b5750808210155b610bd55760405162461bcd60e51b815260206004820152603560248201527f45524332303a206d61782054587320616e64206d61782057616c6c65742063616044820152746e6e6f74206265206c657373207468616e202e352560581b6064820152608401610746565b506002919091556003555050565b601d546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610c1a573d5f803e3d5ffd5b5050565b5f546001600160a01b03163314610c475760405162461bcd60e51b815260040161074690612288565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610c8b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610caf91906122a8565b90505f610cc16064610b268486611309565b601d5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925085169063a9059cbb906044016020604051808303815f875af1158015610d13573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d3791906122bf565b5050505050565b5f610d68610d4b5f610ac9565b610d62610d5961dead610ac9565b600154906112fe565b906112fe565b905090565b6001600160a01b0381165f9081526019602090815260408083205460049092528220546107f6916112fe565b5f6107f23384846111ac565b610daf338261131f565b50565b5f546001600160a01b03163314610ddb5760405162461bcd60e51b815260040161074690612288565b600a889055600b879055600c869055600d859055600f83905560108290556011819055600e8490556012548311801590610e19575060125460105411155b8015610e295750601254600e5411155b8015610e39575060125460115411155b610e9a5760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b6064820152608401610746565b5050505050505050565b5f546001600160a01b03163314610ecd5760405162461bcd60e51b815260040161074690612288565b6015839055600154610ee890620186a090610b269085611309565b601755600154610f0190620186a090610b269084611309565b601855505050565b5f546001600160a01b03163314610f325760405162461bcd60e51b815260040161074690612288565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b5f546001600160a01b03163314610fae5760405162461bcd60e51b815260040161074690612288565b601c80546001600160a01b039092166001600160a01b0319909216821790555f908152600660205260409020805460ff19166001179055565b6016805461ff0019166101001790555f61100033610ac9565b601c546040516334c5cbab60e11b8152336004820181905260248201529192506001600160a01b03169063698b9756906044015f604051808303815f87803b15801561104a575f80fd5b505af115801561105c573d5f803e3d5ffd5b505050505f61106e82610d6233610ac9565b905061107a338261131f565b50506016805461ff0019169055565b6001600160a01b0383166110eb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610746565b6001600160a01b03821661114c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610746565b6001600160a01b038381165f8181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6111b7838383611462565b6111c1838361159f565b6111cc83838361162e565b6111d7838383611717565b6111e18383611858565b6111ec8383836118bc565b6001600160a01b0383165f9081526004602052604090205461120e90826112fe565b6001600160a01b0384165f9081526004602052604081209190915561123384846118e0565b61123d5781611248565b611248848484611924565b6001600160a01b0384165f9081526004602052604090205490915061126d9082611a3f565b6001600160a01b038085165f8181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112c09085815260200190565b60405180910390a3610717848484611a4a565b5f81848411156112f65760405162461bcd60e51b8152600401610746919061209a565b505050900390565b5f6108ca82846122ee565b5f6108ca8284612301565b5f6108ca8284612318565b6001600160a01b0382165f9081526019602090815260408083205460049092529091205461134c916112fe565b8111156113b35760405162461bcd60e51b815260206004820152602f60248201527f45524332303a2043616e6e6f74207374616b65206d6f7265207468616e20617660448201526e61696c61626c652062616c616e636560881b6064820152608401610746565b601c5460405163773a0f0960e01b81526001600160a01b038481166004830152602482018490529091169063773a0f09906044015f604051808303815f87803b1580156113fe575f80fd5b505af1158015611410573d5f803e3d5ffd5b5050506001600160a01b0383165f90815260196020526040902054611436915082611a3f565b6001600160a01b0383165f90815260196020526040902055601b5461145b9082611a3f565b601b555050565b6001600160a01b0383166114c65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610746565b6001600160a01b0382166115285760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610746565b61153183610ac9565b81111561159a5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610746565b505050565b6001600160a01b0382165f9081526006602052604090205460ff161580156115df57506001600160a01b0381165f9081526006602052604090205460ff16155b15610c1a57600954600160a01b900460ff16610c1a5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b6044820152606401610746565b6001600160a01b0383165f9081526006602052604090205460ff1615801561166e57506001600160a01b0382165f9081526006602052604090205460ff16155b801561168857506008546001600160a01b03838116911614155b801561169f57506001600160a01b03821661dead14155b1561159a576003546001600160a01b0383165f908152600460205260409020546116c99083611a3f565b111561159a5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610746565b6001600160a01b0383165f90815260196020526040902054156117ce576001600160a01b0383165f90815260046020908152604080832054601990925290912054611763908390611a3f565b11156117ce5760405162461bcd60e51b815260206004820152603460248201527f45524332303a2045786365656473206d6178696d756d20616c6c6f776564206e60448201527337ba1031bab93932b73a363c9039ba30b5b2b21760611b6064820152608401610746565b600254811115806117f657506001600160a01b0383165f9081526006602052604090205460ff165b8061181857506001600160a01b0382165f9081526006602052604090205460ff165b61159a5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610746565b6008546001600160a01b03828116911614801561188d57506001600160a01b0382165f9081526006602052604090205460ff16155b801561189c575060165460ff16155b15610c1a57600160145f8282546118b39190612337565b90915550505050565b6118c7838383611b22565b1561159a576118d7601754611bd1565b5f601455505050565b6001600160a01b0382165f9081526006602052604081205460ff161580156108ca5750506001600160a01b03165f9081526006602052604090205460ff1615919050565b5f806119308585611dd1565b118015611940575060165460ff16155b15611a38575f6119616119538686611dd1565b601254610b20908690611314565b305f9081526004602052604090205490915061197d9082611a3f565b305f81815260046020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119cd9085815260200190565b60405180910390a36119df8585611dd1565b600e54111580156119f157505f600e54115b15611a2657601a54600e54601254611a269230926001600160a01b0390911691611a219190610b20908990611314565b6111ac565b611a3083826112fe565b9150506108ca565b5092915050565b5f6108ca8284612337565b6008546001600160a01b038481169116148015611a7f57506001600160a01b0382165f9081526006602052604090205460ff16155b8015611a945750600954600160a01b900460ff165b8015611aa3575060165460ff16155b8015611ab75750601654610100900460ff16155b1561159a57600954604051637033876d60e11b81526001600160a01b038481166004830152602482018490529091169063e0670eda906044015f604051808303815f87803b158015611b07575f80fd5b505af1925050508015611b18575060015b1561159a57505050565b5f8060185483101590505f601754611b3930610ac9565b601654911115915060ff16158015611b53575060135460ff165b8015611b685750600954600160a01b900460ff165b8015611b715750815b8015611b9557506001600160a01b0386165f9081526006602052604090205460ff16155b8015611bae57506008546001600160a01b038681169116145b8015611bbe575060155460145410155b8015611bc75750805b9695505050505050565b6016805460ff19166001908117909155600f545f91611bf791600291610b209190611a3f565b600f54909150611c3757611c346002610b206001611c2e600c54611c2e600d54611c2e600b54600a54611a3f90919063ffffffff16565b90611a3f565b90505b5f611c5182610b26600a548661130990919063ffffffff16565b90505f611c5e84836112fe565b905047611c6a82611e35565b5f611c7547836112fe565b90505f611c97611c90600a54886112fe90919063ffffffff16565b8390611314565b90505f611caf600a548361130990919063ffffffff16565b90508015611cd057601f54611cd090879083906001600160a01b0316611f85565b600b545f90611ce490610b20856002611309565b90508015611d2557601e546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611d23573d5f803e3d5ffd5b505b600d545f90611d3990610b20866002611309565b90508015611d7a576009546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611d78573d5f803e3d5ffd5b505b478015611dba57601d546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611db8573d5f803e3d5ffd5b505b50506016805460ff19169055505050505050505050565b6008545f906001600160a01b038381169116148015611df157505f601054115b15611dff57506010546107f6565b6008546001600160a01b038481169116148015611e1d57505f600f54115b15611e2b5750600f546107f6565b5060115492915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611e6857611e6861234a565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611ebf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ee3919061235e565b81600181518110611ef657611ef661234a565b6001600160a01b039283166020918202929092010152600754611f1c9130911684611089565b60075460405163791ac94760e01b81526001600160a01b039091169063791ac94790611f549085905f90869030904290600401612379565b5f604051808303815f87803b158015611f6b575f80fd5b505af1158015611f7d573d5f803e3d5ffd5b505050505050565b600754611f9d9030906001600160a01b031685611089565b60075460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0383811660848301524260a48301529091169063f305d71990849060c40160606040518083038185885af1158015612008573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611f7d91906123e8565b6001600160a01b0381168114610daf575f80fd5b5f805f8060808587031215612054575f80fd5b843561205f8161202d565b9350602085013561206f8161202d565b9250604085013561207f8161202d565b9150606085013561208f8161202d565b939692955090935050565b5f6020808352835180828501525f5b818110156120c5578581018301518582016040015282016120a9565b505f604082860101526040601f19601f8301168501019250505092915050565b5f80604083850312156120f6575f80fd5b82356121018161202d565b946020939093013593505050565b5f6020828403121561211f575f80fd5b81356108ca8161202d565b5f805f6060848603121561213c575f80fd5b83356121478161202d565b925060208401356121578161202d565b929592945050506040919091013590565b5f60208284031215612178575f80fd5b5035919050565b8015158114610daf575f80fd5b5f806040838503121561219d575f80fd5b82356121a88161202d565b915060208301356121b88161217f565b809150509250929050565b5f80604083850312156121d4575f80fd5b50508035926020909101359150565b5f80604083850312156121f4575f80fd5b82356121ff8161202d565b915060208301356121b88161202d565b5f805f805f805f80610100898b031215612227575f80fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b5f805f60608486031215612271575f80fd5b505081359360208301359350604090920135919050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b5f602082840312156122b8575f80fd5b5051919050565b5f602082840312156122cf575f80fd5b81516108ca8161217f565b634e487b7160e01b5f52601160045260245ffd5b818103818111156107f6576107f66122da565b80820281158282048414176107f6576107f66122da565b5f8261233257634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156107f6576107f66122da565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561236e575f80fd5b81516108ca8161202d565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156123c75784516001600160a01b0316835293830193918301916001016123a2565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156123fa575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b27596e93236fb7ea535a3cccb39854c3581311f0e071bfd70d3a674fee46f9864736f6c63430008150033
Deployed Bytecode
0x60806040526004361061020a575f3560e01c8063884870c711610113578063b29c662a1161009d578063e94dd17c1161006d578063e94dd17c14610627578063ef40a67014610646578063f2fde38b14610671578063f4e0d9ac14610690578063f69e2046146106af575f80fd5b8063b29c662a14610586578063b6b55f25146105a5578063dd62ed3e146105c4578063e2d6f94c14610608575f80fd5b80639358928b116100e35780639358928b146104e957806395d89b41146104fd578063a0821be314610529578063a8aa1b3114610548578063a9059cbb14610567575f80fd5b8063884870c71461045c578063893d20e81461047b5780638a60c4c1146104ab5780638cd4426d146104ca575f80fd5b80632e1a7d4d1161019457806348ff2b8b1161016457806348ff2b8b146103df57806370a08231146103fe57806378109e541461041d5780637d1db4a514610432578063817b1cd214610447575f80fd5b80632e1a7d4d1461034a5780632f54bf6e14610369578063313ce567146103965780633f4218e0146103b1575f80fd5b80631590a04f116101da5780631590a04f146102bb57806318160ddd146102da57806323b872dd146102f857806326a4e8d214610317578063293230b814610336575f80fd5b806305356b5c1461021557806305dc05251461022b57806306fdde031461024a578063095ea7b31461028c575f80fd5b3661021157005b5f80fd5b348015610220575f80fd5b506102296106c3565b005b348015610236575f80fd5b50610229610245366004612041565b61071d565b348015610255575f80fd5b506040805180820190915260088152674b69626f20496e7560c01b60208201525b604051610283919061209a565b60405180910390f35b348015610297575f80fd5b506102ab6102a63660046120e5565b6107e6565b6040519015158152602001610283565b3480156102c6575f80fd5b506102296102d536600461210f565b6107fc565b3480156102e5575f80fd5b506001545b604051908152602001610283565b348015610303575f80fd5b506102ab61031236600461212a565b610869565b348015610322575f80fd5b5061022961033136600461210f565b6108d1565b348015610341575f80fd5b5061022961091c565b348015610355575f80fd5b50610229610364366004612168565b610967565b348015610374575f80fd5b506102ab61038336600461210f565b5f546001600160a01b0391821691161490565b3480156103a1575f80fd5b5060405160098152602001610283565b3480156103bc575f80fd5b506102ab6103cb36600461210f565b60066020525f908152604090205460ff1681565b3480156103ea575f80fd5b506102296103f936600461218c565b610a76565b348015610409575f80fd5b506102ea61041836600461210f565b610ac9565b348015610428575f80fd5b506102ea60035481565b34801561043d575f80fd5b506102ea60025481565b348015610452575f80fd5b506102ea601b5481565b348015610467575f80fd5b506102296104763660046121c3565b610ae3565b348015610486575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610283565b3480156104b6575f80fd5b506102296104c5366004612168565b610be3565b3480156104d5575f80fd5b506102296104e43660046120e5565b610c1e565b3480156104f4575f80fd5b506102ea610d3e565b348015610508575f80fd5b506040805180820190915260048152634b49424f60e01b6020820152610276565b348015610534575f80fd5b506102ea61054336600461210f565b610d6d565b348015610553575f80fd5b50600854610493906001600160a01b031681565b348015610572575f80fd5b506102ab6105813660046120e5565b610d99565b348015610591575f80fd5b50600954610493906001600160a01b031681565b3480156105b0575f80fd5b506102296105bf366004612168565b610da5565b3480156105cf575f80fd5b506102ea6105de3660046121e3565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205490565b348015610613575f80fd5b5061022961062236600461220f565b610db2565b348015610632575f80fd5b5061022961064136600461225f565b610ea4565b348015610651575f80fd5b506102ea61066036600461210f565b60196020525f908152604090205481565b34801561067c575f80fd5b5061022961068b36600461210f565b610f09565b34801561069b575f80fd5b506102296106aa36600461210f565b610f85565b3480156106ba575f80fd5b50610229610fe7565b601c5460405163735a325560e01b81523360048201526001600160a01b039091169063735a3255906024015f604051808303815f87803b158015610705575f80fd5b505af1158015610717573d5f803e3d5ffd5b50505050565b5f546001600160a01b0316331461074f5760405162461bcd60e51b815260040161074690612288565b60405180910390fd5b601e80546001600160a01b039586166001600160a01b03199182168117909255601f805495871695821686179055601d805494871694821685179055601a805493909616921682179094555f93845260066020526040808520805460ff1990811660019081179092559486528186208054861682179055928552808520805485168417905590845290922080549091169091179055565b5f6107f2338484611089565b5060015b92915050565b5f546001600160a01b031633146108255760405162461bcd60e51b815260040161074690612288565b600980546001600160a01b039092166001600160a01b031992831681179091555f818152600660205260409020805460ff19166001179055601a8054909216179055565b5f6108758484846111ac565b6108c684336108c185604051806060016040528060288152602001612414602891396001600160a01b038a165f90815260056020908152604080832033845290915290205491906112d3565b611089565b5060015b9392505050565b5f546001600160a01b031633146108fa5760405162461bcd60e51b815260040161074690612288565b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146109455760405162461bcd60e51b815260040161074690612288565b6009805460ff60a01b1916600160a01b1790556013805460ff19166001179055565b335f908152601960205260409020548111156109db5760405162461bcd60e51b815260206004820152602d60248201527f45524332303a2043616e6e6f7420756e7374616b65206d6f7265207468616e2060448201526c185b5bdd5b9d081cdd185ad959609a1b6064820152608401610746565b601c5460405163d8a9bf2960e01b8152336004820152602481018390526001600160a01b039091169063d8a9bf29906044015f604051808303815f87803b158015610a24575f80fd5b505af1158015610a36573d5f803e3d5ffd5b5050335f90815260196020526040902054610a5492509050826112fe565b335f90815260196020526040902055601b54610a7090826112fe565b601b5550565b5f546001600160a01b03163314610a9f5760405162461bcd60e51b815260040161074690612288565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b6001600160a01b03165f9081526004602052604090205490565b5f546001600160a01b03163314610b0c5760405162461bcd60e51b815260040161074690612288565b5f610b2c612710610b2685610b2060015490565b90611309565b90611314565b90505f610b42612710610b2685610b2060015490565b90505f610b59612710610b266005610b2060015490565b9050808310158015610b6b5750808210155b610bd55760405162461bcd60e51b815260206004820152603560248201527f45524332303a206d61782054587320616e64206d61782057616c6c65742063616044820152746e6e6f74206265206c657373207468616e202e352560581b6064820152608401610746565b506002919091556003555050565b601d546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610c1a573d5f803e3d5ffd5b5050565b5f546001600160a01b03163314610c475760405162461bcd60e51b815260040161074690612288565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610c8b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610caf91906122a8565b90505f610cc16064610b268486611309565b601d5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925085169063a9059cbb906044016020604051808303815f875af1158015610d13573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d3791906122bf565b5050505050565b5f610d68610d4b5f610ac9565b610d62610d5961dead610ac9565b600154906112fe565b906112fe565b905090565b6001600160a01b0381165f9081526019602090815260408083205460049092528220546107f6916112fe565b5f6107f23384846111ac565b610daf338261131f565b50565b5f546001600160a01b03163314610ddb5760405162461bcd60e51b815260040161074690612288565b600a889055600b879055600c869055600d859055600f83905560108290556011819055600e8490556012548311801590610e19575060125460105411155b8015610e295750601254600e5411155b8015610e39575060125460115411155b610e9a5760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b6064820152608401610746565b5050505050505050565b5f546001600160a01b03163314610ecd5760405162461bcd60e51b815260040161074690612288565b6015839055600154610ee890620186a090610b269085611309565b601755600154610f0190620186a090610b269084611309565b601855505050565b5f546001600160a01b03163314610f325760405162461bcd60e51b815260040161074690612288565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b5f546001600160a01b03163314610fae5760405162461bcd60e51b815260040161074690612288565b601c80546001600160a01b039092166001600160a01b0319909216821790555f908152600660205260409020805460ff19166001179055565b6016805461ff0019166101001790555f61100033610ac9565b601c546040516334c5cbab60e11b8152336004820181905260248201529192506001600160a01b03169063698b9756906044015f604051808303815f87803b15801561104a575f80fd5b505af115801561105c573d5f803e3d5ffd5b505050505f61106e82610d6233610ac9565b905061107a338261131f565b50506016805461ff0019169055565b6001600160a01b0383166110eb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610746565b6001600160a01b03821661114c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610746565b6001600160a01b038381165f8181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6111b7838383611462565b6111c1838361159f565b6111cc83838361162e565b6111d7838383611717565b6111e18383611858565b6111ec8383836118bc565b6001600160a01b0383165f9081526004602052604090205461120e90826112fe565b6001600160a01b0384165f9081526004602052604081209190915561123384846118e0565b61123d5781611248565b611248848484611924565b6001600160a01b0384165f9081526004602052604090205490915061126d9082611a3f565b6001600160a01b038085165f8181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112c09085815260200190565b60405180910390a3610717848484611a4a565b5f81848411156112f65760405162461bcd60e51b8152600401610746919061209a565b505050900390565b5f6108ca82846122ee565b5f6108ca8284612301565b5f6108ca8284612318565b6001600160a01b0382165f9081526019602090815260408083205460049092529091205461134c916112fe565b8111156113b35760405162461bcd60e51b815260206004820152602f60248201527f45524332303a2043616e6e6f74207374616b65206d6f7265207468616e20617660448201526e61696c61626c652062616c616e636560881b6064820152608401610746565b601c5460405163773a0f0960e01b81526001600160a01b038481166004830152602482018490529091169063773a0f09906044015f604051808303815f87803b1580156113fe575f80fd5b505af1158015611410573d5f803e3d5ffd5b5050506001600160a01b0383165f90815260196020526040902054611436915082611a3f565b6001600160a01b0383165f90815260196020526040902055601b5461145b9082611a3f565b601b555050565b6001600160a01b0383166114c65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610746565b6001600160a01b0382166115285760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610746565b61153183610ac9565b81111561159a5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610746565b505050565b6001600160a01b0382165f9081526006602052604090205460ff161580156115df57506001600160a01b0381165f9081526006602052604090205460ff16155b15610c1a57600954600160a01b900460ff16610c1a5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b6044820152606401610746565b6001600160a01b0383165f9081526006602052604090205460ff1615801561166e57506001600160a01b0382165f9081526006602052604090205460ff16155b801561168857506008546001600160a01b03838116911614155b801561169f57506001600160a01b03821661dead14155b1561159a576003546001600160a01b0383165f908152600460205260409020546116c99083611a3f565b111561159a5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610746565b6001600160a01b0383165f90815260196020526040902054156117ce576001600160a01b0383165f90815260046020908152604080832054601990925290912054611763908390611a3f565b11156117ce5760405162461bcd60e51b815260206004820152603460248201527f45524332303a2045786365656473206d6178696d756d20616c6c6f776564206e60448201527337ba1031bab93932b73a363c9039ba30b5b2b21760611b6064820152608401610746565b600254811115806117f657506001600160a01b0383165f9081526006602052604090205460ff165b8061181857506001600160a01b0382165f9081526006602052604090205460ff165b61159a5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610746565b6008546001600160a01b03828116911614801561188d57506001600160a01b0382165f9081526006602052604090205460ff16155b801561189c575060165460ff16155b15610c1a57600160145f8282546118b39190612337565b90915550505050565b6118c7838383611b22565b1561159a576118d7601754611bd1565b5f601455505050565b6001600160a01b0382165f9081526006602052604081205460ff161580156108ca5750506001600160a01b03165f9081526006602052604090205460ff1615919050565b5f806119308585611dd1565b118015611940575060165460ff16155b15611a38575f6119616119538686611dd1565b601254610b20908690611314565b305f9081526004602052604090205490915061197d9082611a3f565b305f81815260046020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119cd9085815260200190565b60405180910390a36119df8585611dd1565b600e54111580156119f157505f600e54115b15611a2657601a54600e54601254611a269230926001600160a01b0390911691611a219190610b20908990611314565b6111ac565b611a3083826112fe565b9150506108ca565b5092915050565b5f6108ca8284612337565b6008546001600160a01b038481169116148015611a7f57506001600160a01b0382165f9081526006602052604090205460ff16155b8015611a945750600954600160a01b900460ff165b8015611aa3575060165460ff16155b8015611ab75750601654610100900460ff16155b1561159a57600954604051637033876d60e11b81526001600160a01b038481166004830152602482018490529091169063e0670eda906044015f604051808303815f87803b158015611b07575f80fd5b505af1925050508015611b18575060015b1561159a57505050565b5f8060185483101590505f601754611b3930610ac9565b601654911115915060ff16158015611b53575060135460ff165b8015611b685750600954600160a01b900460ff165b8015611b715750815b8015611b9557506001600160a01b0386165f9081526006602052604090205460ff16155b8015611bae57506008546001600160a01b038681169116145b8015611bbe575060155460145410155b8015611bc75750805b9695505050505050565b6016805460ff19166001908117909155600f545f91611bf791600291610b209190611a3f565b600f54909150611c3757611c346002610b206001611c2e600c54611c2e600d54611c2e600b54600a54611a3f90919063ffffffff16565b90611a3f565b90505b5f611c5182610b26600a548661130990919063ffffffff16565b90505f611c5e84836112fe565b905047611c6a82611e35565b5f611c7547836112fe565b90505f611c97611c90600a54886112fe90919063ffffffff16565b8390611314565b90505f611caf600a548361130990919063ffffffff16565b90508015611cd057601f54611cd090879083906001600160a01b0316611f85565b600b545f90611ce490610b20856002611309565b90508015611d2557601e546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611d23573d5f803e3d5ffd5b505b600d545f90611d3990610b20866002611309565b90508015611d7a576009546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611d78573d5f803e3d5ffd5b505b478015611dba57601d546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611db8573d5f803e3d5ffd5b505b50506016805460ff19169055505050505050505050565b6008545f906001600160a01b038381169116148015611df157505f601054115b15611dff57506010546107f6565b6008546001600160a01b038481169116148015611e1d57505f600f54115b15611e2b5750600f546107f6565b5060115492915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611e6857611e6861234a565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611ebf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ee3919061235e565b81600181518110611ef657611ef661234a565b6001600160a01b039283166020918202929092010152600754611f1c9130911684611089565b60075460405163791ac94760e01b81526001600160a01b039091169063791ac94790611f549085905f90869030904290600401612379565b5f604051808303815f87803b158015611f6b575f80fd5b505af1158015611f7d573d5f803e3d5ffd5b505050505050565b600754611f9d9030906001600160a01b031685611089565b60075460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0383811660848301524260a48301529091169063f305d71990849060c40160606040518083038185885af1158015612008573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611f7d91906123e8565b6001600160a01b0381168114610daf575f80fd5b5f805f8060808587031215612054575f80fd5b843561205f8161202d565b9350602085013561206f8161202d565b9250604085013561207f8161202d565b9150606085013561208f8161202d565b939692955090935050565b5f6020808352835180828501525f5b818110156120c5578581018301518582016040015282016120a9565b505f604082860101526040601f19601f8301168501019250505092915050565b5f80604083850312156120f6575f80fd5b82356121018161202d565b946020939093013593505050565b5f6020828403121561211f575f80fd5b81356108ca8161202d565b5f805f6060848603121561213c575f80fd5b83356121478161202d565b925060208401356121578161202d565b929592945050506040919091013590565b5f60208284031215612178575f80fd5b5035919050565b8015158114610daf575f80fd5b5f806040838503121561219d575f80fd5b82356121a88161202d565b915060208301356121b88161217f565b809150509250929050565b5f80604083850312156121d4575f80fd5b50508035926020909101359150565b5f80604083850312156121f4575f80fd5b82356121ff8161202d565b915060208301356121b88161202d565b5f805f805f805f80610100898b031215612227575f80fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b5f805f60608486031215612271575f80fd5b505081359360208301359350604090920135919050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b5f602082840312156122b8575f80fd5b5051919050565b5f602082840312156122cf575f80fd5b81516108ca8161217f565b634e487b7160e01b5f52601160045260245ffd5b818103818111156107f6576107f66122da565b80820281158282048414176107f6576107f66122da565b5f8261233257634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156107f6576107f66122da565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561236e575f80fd5b81516108ca8161202d565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156123c75784516001600160a01b0316835293830193918301916001016123a2565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156123fa575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b27596e93236fb7ea535a3cccb39854c3581311f0e071bfd70d3a674fee46f9864736f6c63430008150033
Deployed Bytecode Sourcemap
4172:15345:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19406:108;;;;;;;;;;;;;:::i;:::-;;13796:407;;;;;;;;;;-1:-1:-1;13796:407:0;;;;;:::i;:::-;;:::i;7132:67::-;;;;;;;;;;-1:-1:-1;7192:5:0;;;;;;;;;;;;-1:-1:-1;;;7192:5:0;;;;7132:67;;;;;;;:::i;:::-;;;;;;;;7916:133;;;;;;;;;;-1:-1:-1;7916:133:0;;;;;:::i;:::-;;:::i;:::-;;;1864:14:1;;1857:22;1839:41;;1827:2;1812:18;7916:133:0;1699:187:1;9719:180:0;;;;;;;;;;-1:-1:-1;9719:180:0;;;;;:::i;:::-;;:::i;7439:84::-;;;;;;;;;;-1:-1:-1;7509:12:0;;7439:84;;;2289:25:1;;;2277:2;2262:18;7439:84:0;2143:177:1;18221:309:0;;;;;;;;;;-1:-1:-1;18221:309:0;;;;;:::i;:::-;;:::i;19292:106::-;;;;;;;;;;-1:-1:-1;19292:106:0;;;;;:::i;:::-;;:::i;12346:103::-;;;;;;;;;;;;;:::i;10397:347::-;;;;;;;;;;-1:-1:-1;10397:347:0;;;;;:::i;:::-;;:::i;2422:87::-;;;;;;;;;;-1:-1:-1;2422:87:0;;;;;:::i;:::-;2477:4;2502:5;-1:-1:-1;;;;;2491:16:0;;;2502:5;;2491:16;;2422:87;7282:67;;;;;;;;;;-1:-1:-1;7282:67:0;;4393:1;3113:36:1;;3101:2;3086:18;7282:67:0;2971:184:1;4724:44:0;;;;;;;;;;-1:-1:-1;4724:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14211:124;;;;;;;;;;-1:-1:-1;14211:124:0;;;;;:::i;:::-;;:::i;7529:103::-;;;;;;;;;;-1:-1:-1;7529:103:0;;;;;:::i;:::-;;:::i;4533:63::-;;;;;;;;;;;;;;;;4466:60;;;;;;;;;;;;;;;;5773:26;;;;;;;;;;;;;;;;13025:450;;;;;;;;;;-1:-1:-1;13025:450:0;;;;;:::i;:::-;;:::i;7355:78::-;;;;;;;;;;-1:-1:-1;7407:7:0;7425:5;-1:-1:-1;;;;;7425:5:0;7355:78;;;-1:-1:-1;;;;;4087:32:1;;;4069:51;;4057:2;4042:18;7355:78:0;3923:203:1;19167:117:0;;;;;;;;;;-1:-1:-1;19167:117:0;;;;;:::i;:::-;;:::i;18881:278::-;;;;;;;;;;-1:-1:-1;18881:278:0;;;;;:::i;:::-;;:::i;8186:138::-;;;;;;;;;;;;;:::i;7205:71::-;;;;;;;;;;-1:-1:-1;7267:7:0;;;;;;;;;;;;-1:-1:-1;;;7267:7:0;;;;7205:71;;8055:125;;;;;;;;;;-1:-1:-1;8055:125:0;;;;;:::i;:::-;;:::i;4796:19::-;;;;;;;;;;-1:-1:-1;4796:19:0;;;;-1:-1:-1;;;;;4796:19:0;;;7638:139;;;;;;;;;;-1:-1:-1;7638:139:0;;;;;:::i;:::-;;:::i;4822:30::-;;;;;;;;;;-1:-1:-1;4822:30:0;;;;-1:-1:-1;;;;;4822:30:0;;;10284:105;;;;;;;;;;-1:-1:-1;10284:105:0;;;;;:::i;:::-;;:::i;7783:127::-;;;;;;;;;;-1:-1:-1;7783:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;7881:18:0;;;7864:7;7881:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7783:127;12457:560;;;;;;;;;;-1:-1:-1;12457:560:0;;;;;:::i;:::-;;:::i;13483:305::-;;;;;;;;;;-1:-1:-1;13483:305:0;;;;;:::i;:::-;;:::i;5681:47::-;;;;;;;;;;-1:-1:-1;5681:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;2515:111;;;;;;;;;;-1:-1:-1;2515:111:0;;;;;:::i;:::-;;:::i;11074:157::-;;;;;;;;;;-1:-1:-1;11074:157:0;;;;;:::i;:::-;;:::i;10752:314::-;;;;;;;;;;;;;:::i;19406:108::-;19458:15;;:48;;-1:-1:-1;;;19458:48:0;;19495:10;19458:48;;;4069:51:1;-1:-1:-1;;;;;19458:15:0;;;;:36;;4042:18:1;;19458:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19406:108::o;13796:407::-;2477:4;2502:5;-1:-1:-1;;;;;2502:5:0;2389:10;2491:16;2373:38;;;;-1:-1:-1;;;2373:38:0;;;;;;;:::i;:::-;;;;;;;;;13934:18:::1;:31:::0;;-1:-1:-1;;;;;13934:31:0;;::::1;-1:-1:-1::0;;;;;;13934:31:0;;::::1;::::0;::::1;::::0;;;13967:18:::1;:31:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;14000:20:::1;:35:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;14037:14:::1;:23:::0;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;13934:18:::1;14071:23:::0;;;:11:::1;:23;::::0;;;;;:30;;-1:-1:-1;;14071:30:0;;::::1;13934:31:::0;14071:30;;::::1;::::0;;;14103:23;;;;;;:30;;;::::1;::::0;::::1;::::0;;14135:25;;;;;;:32;;;::::1;::::0;::::1;::::0;;14169:19;;;;;;:26;;;;::::1;::::0;;::::1;::::0;;13796:407::o;7916:133::-;7991:4;7998:37;8007:10;8019:7;8028:6;7998:8;:37::i;:::-;-1:-1:-1;8043:4:0;7916:133;;;;;:::o;9719:180::-;2477:4;2502:5;-1:-1:-1;;;;;2502:5:0;2389:10;2491:16;2373:38;;;;-1:-1:-1;;;2373:38:0;;;;;;;:::i;:::-;9796:15:::1;:36:::0;;-1:-1:-1;;;;;9796:36:0;;::::1;-1:-1:-1::0;;;;;;9796:36:0;;::::1;::::0;::::1;::::0;;;:15:::1;9834:22:::0;;;:11:::1;:22;::::0;;;;:29;;-1:-1:-1;;9834:29:0::1;9796:36:::0;9834:29:::1;::::0;;9865:14:::1;:26:::0;;;;::::1;;::::0;;9719:180::o;18221:309::-;18319:4;18336:36;18346:6;18354:9;18365:6;18336:9;:36::i;:::-;18383:117;18392:6;18400:10;18412:87;18448:6;18412:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18412:19:0;;;;;;:11;:19;;;;;;;;18432:10;18412:31;;;;;;;;;:87;:35;:87::i;:::-;18383:8;:117::i;:::-;-1:-1:-1;18518:4:0;18221:309;;;;;;:::o;19292:106::-;2477:4;2502:5;-1:-1:-1;;;;;2502:5:0;2389:10;2491:16;2373:38;;;;-1:-1:-1;;;2373:38:0;;;;;;;:::i;:::-;19365:14:::1;:25:::0;;-1:-1:-1;;;;;;19365:25:0::1;-1:-1:-1::0;;;;;19365:25:0;;;::::1;::::0;;;::::1;::::0;;19292:106::o;12346:103::-;2477:4;2502:5;-1:-1:-1;;;;;2502:5:0;2389:10;2491:16;2373:38;;;;-1:-1:-1;;;2373:38:0;;;;;;;:::i;:::-;12400:14:::1;:21:::0;;-1:-1:-1;;;;12400:21:0::1;-1:-1:-1::0;;;12400:21:0::1;::::0;;12423:11:::1;:18:::0;;-1:-1:-1;;12423:18:0::1;12417:4;12423:18;::::0;;12346:103::o;10397:347::-;10491:10;10478:24;;;;:12;:24;;;;;;10468:34;;;10460:92;;;;-1:-1:-1;;;10460:92:0;;6530:2:1;10460:92:0;;;6512:21:1;6569:2;6549:18;;;6542:30;6608:34;6588:18;;;6581:62;-1:-1:-1;;;6659:18:1;;;6652:43;6712:19;;10460:92:0;6328:409:1;10460:92:0;10563:15;;:51;;-1:-1:-1;;;10563:51:0;;10595:10;10563:51;;;6916::1;6983:18;;;6976:34;;;-1:-1:-1;;;;;10563:15:0;;;;:31;;6889:18:1;;10563:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10665:10:0;10652:24;;;;:12;:24;;;;;;:36;;-1:-1:-1;10652:24:0;-1:-1:-1;10681:6:0;10652:28;:36::i;:::-;10638:10;10625:24;;;;:12;:24;;;;;:63;10713:11;;:23;;10729:6;10713:15;:23::i;:::-;10699:11;:37;-1:-1:-1;10397:347:0:o;14211:124::-;2477:4;2502:5;-1:-1:-1;;;;;2502:5:0;2389:10;2491:16;2373:38;;;;-1:-1:-1;;;2373:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14295:21:0;;;::::1;;::::0;;;:11:::1;:21;::::0;;;;:32;;-1:-1:-1;;14295:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14211:124::o;7529:103::-;-1:-1:-1;;;;;7612:18:0;7595:7;7612:18;;;:9;:18;;;;;;;7529:103::o;13025:450::-;2477:4;2502:5;-1:-1:-1;;;;;2502:5:0;2389:10;2491:16;2373:38;;;;-1:-1:-1;;;2373:38:0;;;;;;;:::i;:::-;13109:13:::1;13125:43;13161:5;13125:23;13143:4;13125:13;7509:12:::0;;;7439:84;13125:13:::1;:17:::0;::::1;:23::i;:::-;:27:::0;::::1;:43::i;:::-;13109:59;;13179:17;13199:46;13238:5;13199:26;13217:7;13199:13;7509:12:::0;;;7439:84;13199:46:::1;13179:66;;13247:13;13263:31;13288:5;13263:20;13281:1;13263:13;7509:12:::0;;;7439:84;13263:31:::1;13247:47;;13322:5;13313;:14;;:36;;;;;13344:5;13331:9;:18;;13313:36;13305:102;;;::::0;-1:-1:-1;;;13305:102:0;;7223:2:1;13305:102:0::1;::::0;::::1;7205:21:1::0;7262:2;7242:18;;;7235:30;7301:34;7281:18;;;7274:62;-1:-1:-1;;;7352:18:1;;;7345:51;7413:19;;13305:102:0::1;7021:417:1::0;13305:102:0::1;-1:-1:-1::0;13418:12:0::1;:20:::0;;;;13440:15:::1;:27:::0;-1:-1:-1;;13025:450:0:o;19167:117::-;19237:20;;19229:47;;-1:-1:-1;;;;;19237:20:0;;;;19229:47;;;;;19268:7;;19237:20;19229:47;19237:20;19229:47;19268:7;19237:20;19229:47;;;;;;;;;;;;;;;;;;;;;19167:117;:::o;18881:278::-;2477:4;2502:5;-1:-1:-1;;;;;2502:5:0;2389:10;2491:16;2373:38;;;;-1:-1:-1;;;2373:38:0;;;;;;;:::i;:::-;18985:41:::1;::::0;-1:-1:-1;;;18985:41:0;;19020:4:::1;18985:41;::::0;::::1;4069:51:1::0;18967:15:0::1;::::0;-1:-1:-1;;;;;18985:26:0;::::1;::::0;::::1;::::0;4042:18:1;;18985:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18967:59:::0;-1:-1:-1;19037:15:0::1;19055:29;19080:3;19055:20;18967:59:::0;19067:7;19055:11:::1;:20::i;:29::-;19121:20;::::0;19095:56:::1;::::0;-1:-1:-1;;;19095:56:0;;-1:-1:-1;;;;;19121:20:0;;::::1;19095:56;::::0;::::1;6916:51:1::0;6983:18;;;6976:34;;;19037:47:0;;-1:-1:-1;19095:25:0;::::1;::::0;::::1;::::0;6889:18:1;;19095:56:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18956:203;;18881:278:::0;;:::o;8186:138::-;8245:7;8262:60;8300:21;8318:1;8300:9;:21::i;:::-;8262:33;8279:15;5887:42;8279:9;:15::i;:::-;8262:12;;;:16;:33::i;:::-;:37;;:60::i;:::-;8255:67;;8186:138;:::o;8055:125::-;-1:-1:-1;;;;;8157:20:0;;8118:7;8157:20;;;:12;:20;;;;;;;;;8135:9;:17;;;;;;:43;;:21;:43::i;7638:139::-;7716:4;7723:40;7733:10;7745:9;7756:6;7723:9;:40::i;10284:105::-;10346:35;10362:10;10374:6;10346:15;:35::i;:::-;10284:105;:::o;12457:560::-;2477:4;2502:5;-1:-1:-1;;;;;2502:5:0;2389:10;2491:16;2373:38;;;;-1:-1:-1;;;2373:38:0;;;;;;;:::i;:::-;12652:12:::1;:25:::0;;;12679:12:::1;:25:::0;;;12706:14:::1;:29:::0;;;12737:10:::1;:21:::0;;;12760:8:::1;:17:::0;;;12779:7:::1;:15:::0;;;12796:11:::1;:20:::0;;;12818:8:::1;:17:::0;;;12866:11:::1;::::0;12854:23;::::1;::::0;::::1;::::0;:49:::1;;;12892:11;;12881:7;;:22;;12854:49;:76;;;;;12919:11;;12907:8;;:23;;12854:76;:106;;;;;12949:11;;12934;;:26;;12854:106;12846:163;;;::::0;-1:-1:-1;;;12846:163:0;;8084:2:1;12846:163:0::1;::::0;::::1;8066:21:1::0;8123:2;8103:18;;;8096:30;8162:34;8142:18;;;8135:62;-1:-1:-1;;;8213:18:1;;;8206:42;8265:19;;12846:163:0::1;7882:408:1::0;12846:163:0::1;12457:560:::0;;;;;;;;:::o;13483:305::-;2477:4;2502:5;-1:-1:-1;;;;;2502:5:0;2389:10;2491:16;2373:38;;;;-1:-1:-1;;;2373:38:0;;;;;;;:::i;:::-;13612:10:::1;:24:::0;;;13654:12:::1;::::0;:53:::1;::::0;13699:6:::1;::::0;13654:32:::1;::::0;13671:14;13654:16:::1;:32::i;:53::-;13638:13;:69:::0;13726:12:::1;::::0;:54:::1;::::0;13772:6:::1;::::0;13726:33:::1;::::0;13743:15;13726:16:::1;:33::i;:54::-;13709:14;:71:::0;-1:-1:-1;;;13483:305:0:o;2515:111::-;2477:4;2502:5;-1:-1:-1;;;;;2502:5:0;2389:10;2491:16;2373:38;;;;-1:-1:-1;;;2373:38:0;;;;;;;:::i;:::-;2581:5:::1;:11:::0;;-1:-1:-1;;;;;;2581:11:0::1;-1:-1:-1::0;;;;;2581:11:0;::::1;::::0;;::::1;::::0;;;2599:25:::1;::::0;4069:51:1;;;2599:25:0::1;::::0;4057:2:1;4042:18;2599:25:0::1;;;;;;;2515:111:::0;:::o;11074:157::-;2477:4;2502:5;-1:-1:-1;;;;;2502:5:0;2389:10;2491:16;2373:38;;;;-1:-1:-1;;;2373:38:0;;;;;;;:::i;:::-;11149:15:::1;:44:::0;;-1:-1:-1;;;;;11149:44:0;;::::1;-1:-1:-1::0;;;;;;11149:44:0;;::::1;::::0;::::1;::::0;;:15:::1;11195:21:::0;;;:11:::1;:21;::::0;;;;:28;;-1:-1:-1;;11195:28:0::1;11149:44:::0;11195:28:::1;::::0;;11074:157::o;10752:314::-;5573:7;:14;;-1:-1:-1;;5573:14:0;;;;;;10843:21:::1;10853:10;10843:9;:21::i;:::-;10875:15;::::0;:62:::1;::::0;-1:-1:-1;;;10875:62:0;;10914:10:::1;10875:62;::::0;::::1;8723:34:1::0;;;8773:18;;;8766:43;10820:44:0;;-1:-1:-1;;;;;;10875:15:0::1;::::0;:38:::1;::::0;8658:18:1;;10875:62:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10948:18;10969:39;10995:12;10969:21;10979:10;10969:9;:21::i;:39::-;10948:60;;11019:39;11035:10;11047;11019:15;:39::i;:::-;-1:-1:-1::0;;5592:7:0;:15;;-1:-1:-1;;5592:15:0;;;10752:314::o;18538:335::-;-1:-1:-1;;;;;18631:19:0;;18623:68;;;;-1:-1:-1;;;18623:68:0;;9022:2:1;18623:68:0;;;9004:21:1;9061:2;9041:18;;;9034:30;9100:34;9080:18;;;9073:62;-1:-1:-1;;;9151:18:1;;;9144:34;9195:19;;18623:68:0;8820:400:1;18623:68:0;-1:-1:-1;;;;;18710:21:0;;18702:68;;;;-1:-1:-1;;;18702:68:0;;9427:2:1;18702:68:0;;;9409:21:1;9466:2;9446:18;;;9439:30;9505:34;9485:18;;;9478:62;-1:-1:-1;;;9556:18:1;;;9549:32;9598:19;;18702:68:0;9225:398:1;18702:68:0;-1:-1:-1;;;;;18781:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;18833:32;;2289:25:1;;;18833:32:0;;2262:18:1;18833:32:0;;;;;;;18538:335;;;:::o;8695:735::-;8784:37;8795:6;8803:9;8814:6;8784:10;:37::i;:::-;8832:38;8852:6;8860:9;8832:19;:38::i;:::-;8881:41;8896:6;8904:9;8915:6;8881:14;:41::i;:::-;8934:39;8947:6;8955:9;8966:6;8934:12;:39::i;:::-;8984:35;9001:6;9009:9;8984:16;:35::i;:::-;9030;9039:6;9047:9;9058:6;9030:8;:35::i;:::-;-1:-1:-1;;;;;9096:17:0;;;;;;:9;:17;;;;;;:29;;9118:6;9096:21;:29::i;:::-;-1:-1:-1;;;;;9076:17:0;;;;;;:9;:17;;;;;:49;;;;9161:32;9086:6;9183:9;9161:13;:32::i;:::-;:78;;9233:6;9161:78;;;9196:34;9204:6;9212:9;9223:6;9196:7;:34::i;:::-;-1:-1:-1;;;;;9273:20:0;;;;;;:9;:20;;;;;;9136:103;;-1:-1:-1;9273:40:0;;9136:103;9273:24;:40::i;:::-;-1:-1:-1;;;;;9250:20:0;;;;;;;:9;:20;;;;;;;:63;;;;9329:43;;;;;;;;;;9357:14;2289:25:1;;2277:2;2262:18;;2143:177;9329:43:0;;;;;;;;9383:39;9396:6;9404:9;9415:6;9383:12;:39::i;754:162::-;840:7;886:12;878:6;;;;870:29;;;;-1:-1:-1;;;870:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;908:5:0;;;754:162::o;400:82::-;458:7;475:5;479:1;475;:5;:::i;488:82::-;546:7;563:5;567:1;563;:5;:::i;576:82::-;634:7;651:5;655:1;651;:5;:::i;9907:369::-;-1:-1:-1;;;;;10024:20:0;;;;;;:12;:20;;;;;;;;;10002:9;:17;;;;;;;:43;;:21;:43::i;:::-;9992:6;:53;;9984:113;;;;-1:-1:-1;;;9984:113:0;;10490:2:1;9984:113:0;;;10472:21:1;10529:2;10509:18;;;10502:30;10568:34;10548:18;;;10541:62;-1:-1:-1;;;10619:18:1;;;10612:45;10674:19;;9984:113:0;10288:411:1;9984:113:0;10108:15;;:46;;-1:-1:-1;;;10108:46:0;;-1:-1:-1;;;;;6934:32:1;;;10108:46:0;;;6916:51:1;6983:18;;;6976:34;;;10108:15:0;;;;:30;;6889:18:1;;10108:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;10188:20:0;;;;;;:12;:20;;;;;;:32;;-1:-1:-1;10213:6:0;10188:24;:32::i;:::-;-1:-1:-1;;;;;10165:20:0;;;;;;:12;:20;;;;;:55;10245:11;;:23;;10261:6;10245:15;:23::i;:::-;10231:11;:37;-1:-1:-1;;9907:369:0:o;8332:355::-;-1:-1:-1;;;;;8436:20:0;;8428:70;;;;-1:-1:-1;;;8428:70:0;;10906:2:1;8428:70:0;;;10888:21:1;10945:2;10925:18;;;10918:30;10984:34;10964:18;;;10957:62;-1:-1:-1;;;11035:18:1;;;11028:35;11080:19;;8428:70:0;10704:401:1;8428:70:0;-1:-1:-1;;;;;8517:23:0;;8509:71;;;;-1:-1:-1;;;8509:71:0;;11312:2:1;8509:71:0;;;11294:21:1;11351:2;11331:18;;;11324:30;11390:34;11370:18;;;11363:62;-1:-1:-1;;;11441:18:1;;;11434:33;11484:19;;8509:71:0;11110:399:1;8509:71:0;8609:17;8619:6;8609:9;:17::i;:::-;8599:6;:27;;8591:88;;;;-1:-1:-1;;;8591:88:0;;11716:2:1;8591:88:0;;;11698:21:1;11755:2;11735:18;;;11728:30;11794:34;11774:18;;;11767:62;-1:-1:-1;;;11845:18:1;;;11838:47;11902:19;;8591:88:0;11514:413:1;8591:88:0;8332:355;;;:::o;11239:191::-;-1:-1:-1;;;;;11332:19:0;;;;;;:11;:19;;;;;;;;11331:20;:47;;;;-1:-1:-1;;;;;;11356:22:0;;;;;;:11;:22;;;;;;;;11355:23;11331:47;11328:95;;;11388:14;;-1:-1:-1;;;11388:14:0;;;;11380:41;;;;-1:-1:-1;;;11380:41:0;;12134:2:1;11380:41:0;;;12116:21:1;12173:2;12153:18;;;12146:30;-1:-1:-1;;;12192:18:1;;;12185:44;12246:18;;11380:41:0;11932:338:1;11442:331:0;-1:-1:-1;;;;;11546:19:0;;;;;;:11;:19;;;;;;;;11545:20;:47;;;;-1:-1:-1;;;;;;11570:22:0;;;;;;:11;:22;;;;;;;;11569:23;11545:47;:77;;;;-1:-1:-1;11617:4:0;;-1:-1:-1;;;;;11596:26:0;;;11617:4;;11596:26;;11545:77;:107;;;;-1:-1:-1;;;;;;11626:26:0;;5887:42;11626:26;;11545:107;11542:224;;;11714:15;;-1:-1:-1;;;;;11677:20:0;;;;;;:9;:20;;;;;;:32;;11702:6;11677:24;:32::i;:::-;11676:53;;11668:96;;;;-1:-1:-1;;;11668:96:0;;12477:2:1;11668:96:0;;;12459:21:1;12516:2;12496:18;;;12489:30;12555:32;12535:18;;;12528:60;12605:18;;11668:96:0;12275:354:1;11961:377:0;-1:-1:-1;;;;;12062:20:0;;12093:1;12062:20;;;:12;:20;;;;;;:33;12059:160;;-1:-1:-1;;;;;12143:17:0;;;;;;:9;:17;;;;;;;;;12117:12;:20;;;;;;;12106:32;;:6;;:10;:32::i;:::-;12105:55;;12097:120;;;;-1:-1:-1;;;12097:120:0;;12836:2:1;12097:120:0;;;12818:21:1;12875:2;12855:18;;;12848:30;12914:34;12894:18;;;12887:62;-1:-1:-1;;;12965:18:1;;;12958:50;13025:19;;12097:120:0;12634:416:1;12097:120:0;12247:12;;12237:6;:22;;:45;;;-1:-1:-1;;;;;;12263:19:0;;;;;;:11;:19;;;;;;;;12237:45;:71;;;-1:-1:-1;;;;;;12286:22:0;;;;;;:11;:22;;;;;;;;12237:71;12229:101;;;;-1:-1:-1;;;12229:101:0;;13257:2:1;12229:101:0;;;13239:21:1;13296:2;13276:18;;;13269:30;-1:-1:-1;;;13315:18:1;;;13308:47;13372:18;;12229:101:0;13055:341:1;11781:172:0;11878:4;;-1:-1:-1;;;;;11865:17:0;;;11878:4;;11865:17;:41;;;;-1:-1:-1;;;;;;11887:19:0;;;;;;:11;:19;;;;;;;;11886:20;11865:41;:54;;;;-1:-1:-1;11911:8:0;;;;11910:9;11865:54;11862:84;;;11942:1;11921:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;11781:172:0;;:::o;16933:197::-;17025:41;17040:6;17048:9;17059:6;17025:14;:41::i;:::-;17022:101;;;17068:29;17083:13;;17068:14;:29::i;:::-;17119:1;17099:9;:22;16933:197;;;:::o;17138:160::-;-1:-1:-1;;;;;17244:19:0;;17219:4;17244:19;;;:11;:19;;;;;;;;17243:20;:47;;;;-1:-1:-1;;;;;;;17268:22:0;;;;;:11;:22;;;;;;;;17267:23;;17138:160;-1:-1:-1;17138:160:0:o;17582:631::-;17668:7;17724:1;17691:30;17703:6;17711:9;17691:11;:30::i;:::-;:34;:47;;;;-1:-1:-1;17730:8:0;;;;17729:9;17691:47;17688:503;;;17750:17;17770:59;17798:30;17810:6;17818:9;17798:11;:30::i;:::-;17781:11;;17770:23;;:6;;:10;:23::i;:59::-;17885:4;17867:24;;;;:9;:24;;;;;;17750:79;;-1:-1:-1;17867:39:0;;17750:79;17867:28;:39::i;:::-;17858:4;17840:24;;;;:9;:24;;;;;;;:66;;;;17922:42;;-1:-1:-1;;;;;17922:42:0;;;;;;;17954:9;2289:25:1;;2277:2;2262:18;;2143:177;17922:42:0;;;;;;;;17990:30;18002:6;18010:9;17990:11;:30::i;:::-;17978:8;;:42;;:67;;;;;18043:1;18024:8;;:21;17978:67;17975:176;;;18094:14;;18139:8;;18122:11;;18061:88;;18079:4;;-1:-1:-1;;;;;18094:14:0;;;;18111:37;;18139:8;18111:23;;:6;;:10;:23::i;:37::-;18061:9;:88::i;:::-;18168:21;:6;18179:9;18168:10;:21::i;:::-;18161:28;;;;;17688:503;-1:-1:-1;18199:6:0;17582:631;-1:-1:-1;;17582:631:0:o;312:82::-;370:7;387:5;391:1;387;:5;:::i;9438:273::-;9544:4;;-1:-1:-1;;;;;9534:14:0;;;9544:4;;9534:14;:41;;;;-1:-1:-1;;;;;;9553:22:0;;;;;;:11;:22;;;;;;;;9552:23;9534:41;:59;;;;-1:-1:-1;9579:14:0;;-1:-1:-1;;;9579:14:0;;;;9534:59;:72;;;;-1:-1:-1;9598:8:0;;;;9597:9;9534:72;:84;;;;-1:-1:-1;9611:7:0;;;;;;;9610:8;9534:84;9531:173;;;9638:15;;:53;;-1:-1:-1;;;9638:53:0;;-1:-1:-1;;;;;6934:32:1;;;9638:53:0;;;6916:51:1;6983:18;;;6976:34;;;9638:15:0;;;;:34;;6889:18:1;;9638:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9634:69;;;9438:273;;;:::o;16512:413::-;16610:4;16627:13;16653:14;;16643:6;:24;;16627:40;;16678:19;16728:13;;16700:24;16718:4;16700:9;:24::i;:::-;16760:8;;16700:41;-1:-1:-1;16700:41:0;;-1:-1:-1;16760:8:0;;16759:9;:24;;;;-1:-1:-1;16772:11:0;;;;16759:24;:42;;;;-1:-1:-1;16787:14:0;;-1:-1:-1;;;16787:14:0;;;;16759:42;:54;;;;;16805:8;16759:54;:78;;;;-1:-1:-1;;;;;;16818:19:0;;;;;;:11;:19;;;;;;;;16817:20;16759:78;:113;;;;-1:-1:-1;16868:4:0;;-1:-1:-1;;;;;16855:17:0;;;16868:4;;16855:17;16759:113;:140;;;;;16889:10;;16876:9;;:23;;16759:140;:158;;;;;16903:14;16759:158;16752:165;16512:413;-1:-1:-1;;;;;;16512:413:0:o;14343:1347::-;5637:8;:15;;-1:-1:-1;;5637:15:0;5648:4;5637:15;;;;;;14437:8:::1;::::0;5637;;14437:22:::1;::::0;14457:1:::1;::::0;14437:15:::1;::::0;:8;:12:::1;:15::i;:22::-;14473:8;::::0;14414:45;;-1:-1:-1;14470:138:0::1;;14512:94;14604:1;14512:87;14597:1;14512:80;14577:14;;14512:60;14561:10;;14512:44;14543:12;;14512;;:16;;:44;;;;:::i;:::-;:48:::0;::::1;:60::i;:94::-;14497:109;;14470:138;14618:32;14653:42;14682:12;14653:24;14664:12;;14653:6;:10;;:24;;;;:::i;:42::-;14618:77:::0;-1:-1:-1;14706:14:0::1;14723:36;:6:::0;14618:77;14723:10:::1;:36::i;:::-;14706:53:::0;-1:-1:-1;14795:21:0::1;14827:24;14706:53:::0;14827:16:::1;:24::i;:::-;14862:20;14885:41;:21;14911:14:::0;14885:25:::1;:41::i;:::-;14862:64;;14937:19;14958:48;14975:30;14992:12;;14975;:16;;:30;;;;:::i;:::-;14958:12:::0;;:16:::1;:48::i;:::-;14937:69;;15017:29;15049;15065:12;;15049:11;:15;;:29;;;;:::i;:::-;15017:61:::0;-1:-1:-1;15092:34:0;;15089:123:::1;;15190:18;::::0;15128:81:::1;::::0;15141:24;;15167:21;;-1:-1:-1;;;;;15190:18:0::1;15128:12;:81::i;:::-;15271:12;::::0;15222:23:::1;::::0;15248:36:::1;::::0;:18:::1;:11:::0;15264:1:::1;15248:15;:18::i;:36::-;15222:62:::0;-1:-1:-1;15298:19:0;;15295:79:::1;;15327:18;::::0;15319:53:::1;::::0;-1:-1:-1;;;;;15327:18:0;;::::1;::::0;15319:53;::::1;;;::::0;15356:15;;15327:18:::1;15319:53:::0;15327:18;15319:53;15356:15;15327:18;15319:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;15295:79;15431:10;::::0;15384:21:::1;::::0;15408:34:::1;::::0;:18:::1;:11:::0;15424:1:::1;15408:15;:18::i;:34::-;15384:58:::0;-1:-1:-1;15456:17:0;;15453:81:::1;;15491:15;::::0;15475:57:::1;::::0;-1:-1:-1;;;;;15491:15:0;;::::1;::::0;15475:57;::::1;;;::::0;15518:13;;15491:15:::1;15475:57:::0;15491:15;15475:57;15518:13;15491:15;15475:57;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;15453:81;15567:21;15602:25:::0;;15599:84:::1;;15637:20;::::0;15629:52:::1;::::0;-1:-1:-1;;;;;15637:20:0;;::::1;::::0;15629:52;::::1;;;::::0;15668:12;;15637:20:::1;15629:52:::0;15637:20;15629:52;15668:12;15637:20;15629:52;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;15599:84;-1:-1:-1::0;;5657:8:0;:16;;-1:-1:-1;;5657:16:0;;;-1:-1:-1;;;;;;;;;14343:1347:0:o;17306:268::-;17421:4;;17385:7;;-1:-1:-1;;;;;17408:17:0;;;17421:4;;17408:17;:41;;;;;17447:1;17429:7;;:20;17408:41;17405:62;;;-1:-1:-1;17458:7:0;;17451:14;;17405:62;17490:4;;-1:-1:-1;;;;;17480:14:0;;;17490:4;;17480:14;:39;;;;;17517:1;17498:8;;:21;17480:39;17477:61;;;-1:-1:-1;17528:8:0;;17521:15;;17477:61;-1:-1:-1;17555:11:0;;17306:268;;;;:::o;16066:434::-;16156:16;;;16170:1;16156:16;;;;;;;;16132:21;;16156:16;;;;;;;;;;-1:-1:-1;16156:16:0;16132:40;;16201:4;16183;16188:1;16183:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16183:23:0;;;:7;;;;;;;;;;:23;;;;16227:6;;:13;;;-1:-1:-1;;;16227:13:0;;;;:6;;;;;:11;;:13;;;;;16183:7;;16227:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16217:4;16222:1;16217:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16217:23:0;;;:7;;;;;;;;;:23;16283:6;;16251:53;;16268:4;;16283:6;16292:11;16251:8;:53::i;:::-;16315:6;;:177;;-1:-1:-1;;;16315:177:0;;-1:-1:-1;;;;;16315:6:0;;;;:57;;:177;;16387:11;;16315:6;;16429:4;;16456;;16476:15;;16315:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16121:379;16066:434;:::o;15698:360::-;15829:6;;15797:53;;15814:4;;-1:-1:-1;;;;;15829:6:0;15838:11;15797:8;:53::i;:::-;15861:6;;:189;;-1:-1:-1;;;15861:189:0;;15924:4;15861:189;;;15377:34:1;15427:18;;;15420:34;;;15861:6:0;15470:18:1;;;15463:34;;;15513:18;;;15506:34;-1:-1:-1;;;;;15577:15:1;;;15556:19;;;15549:44;16034:15:0;15609:19:1;;;15602:35;15861:6:0;;;;:22;;15891:9;;15311:19:1;;15861:189:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;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;1891:247::-;1950:6;2003:2;1991:9;1982:7;1978:23;1974:32;1971:52;;;2019:1;2016;2009:12;1971:52;2058:9;2045:23;2077:31;2102:5;2077:31;:::i;2325:456::-;2402:6;2410;2418;2471:2;2459:9;2450:7;2446:23;2442:32;2439:52;;;2487:1;2484;2477:12;2439:52;2526:9;2513:23;2545:31;2570:5;2545:31;:::i;:::-;2595:5;-1:-1:-1;2652:2:1;2637:18;;2624:32;2665:33;2624:32;2665:33;:::i;:::-;2325:456;;2717:7;;-1:-1:-1;;;2771:2:1;2756:18;;;;2743:32;;2325:456::o;2786:180::-;2845:6;2898:2;2886:9;2877:7;2873:23;2869:32;2866:52;;;2914:1;2911;2904:12;2866:52;-1:-1:-1;2937:23:1;;2786:180;-1:-1:-1;2786:180:1:o;3160:118::-;3246:5;3239:13;3232:21;3225:5;3222:32;3212:60;;3268:1;3265;3258:12;3283:382;3348:6;3356;3409:2;3397:9;3388:7;3384:23;3380:32;3377:52;;;3425:1;3422;3415:12;3377:52;3464:9;3451:23;3483:31;3508:5;3483:31;:::i;:::-;3533:5;-1:-1:-1;3590:2:1;3575:18;;3562:32;3603:30;3562:32;3603:30;:::i;:::-;3652:7;3642:17;;;3283:382;;;;;:::o;3670:248::-;3738:6;3746;3799:2;3787:9;3778:7;3774:23;3770:32;3767:52;;;3815:1;3812;3805:12;3767:52;-1:-1:-1;;3838:23:1;;;3908:2;3893:18;;;3880:32;;-1:-1:-1;3670:248:1:o;4354:388::-;4422:6;4430;4483:2;4471:9;4462:7;4458:23;4454:32;4451:52;;;4499:1;4496;4489:12;4451:52;4538:9;4525:23;4557:31;4582:5;4557:31;:::i;:::-;4607:5;-1:-1:-1;4664:2:1;4649:18;;4636:32;4677:33;4636:32;4677:33;:::i;4747:661::-;4869:6;4877;4885;4893;4901;4909;4917;4925;4978:3;4966:9;4957:7;4953:23;4949:33;4946:53;;;4995:1;4992;4985:12;4946:53;-1:-1:-1;;5018:23:1;;;5088:2;5073:18;;5060:32;;-1:-1:-1;5139:2:1;5124:18;;5111:32;;5190:2;5175:18;;5162:32;;-1:-1:-1;5241:3:1;5226:19;;5213:33;;-1:-1:-1;5293:3:1;5278:19;;5265:33;;-1:-1:-1;5345:3:1;5330:19;;5317:33;;-1:-1:-1;5397:3:1;5382:19;5369:33;;-1:-1:-1;4747:661:1;-1:-1:-1;4747:661:1:o;5413:316::-;5490:6;5498;5506;5559:2;5547:9;5538:7;5534:23;5530:32;5527:52;;;5575:1;5572;5565:12;5527:52;-1:-1:-1;;5598:23:1;;;5668:2;5653:18;;5640:32;;-1:-1:-1;5719:2:1;5704:18;;;5691:32;;5413:316;-1:-1:-1;5413:316:1:o;5994:329::-;6196:2;6178:21;;;6235:1;6215:18;;;6208:29;-1:-1:-1;;;6268:2:1;6253:18;;6246:36;6314:2;6299:18;;5994:329::o;7443:184::-;7513:6;7566:2;7554:9;7545:7;7541:23;7537:32;7534:52;;;7582:1;7579;7572:12;7534:52;-1:-1:-1;7605:16:1;;7443:184;-1:-1:-1;7443:184:1:o;7632:245::-;7699:6;7752:2;7740:9;7731:7;7727:23;7723:32;7720:52;;;7768:1;7765;7758:12;7720:52;7800:9;7794:16;7819:28;7841:5;7819:28;:::i;9628:127::-;9689:10;9684:3;9680:20;9677:1;9670:31;9720:4;9717:1;9710:15;9744:4;9741:1;9734:15;9760:128;9827:9;;;9848:11;;;9845:37;;;9862:18;;:::i;9893:168::-;9966:9;;;9997;;10014:15;;;10008:22;;9994:37;9984:71;;10035:18;;:::i;10066:217::-;10106:1;10132;10122:132;;10176:10;10171:3;10167:20;10164:1;10157:31;10211:4;10208:1;10201:15;10239:4;10236:1;10229:15;10122:132;-1:-1:-1;10268:9:1;;10066:217::o;13401:125::-;13466:9;;;13487:10;;;13484:36;;;13500:18;;:::i;13663:127::-;13724:10;13719:3;13715:20;13712:1;13705:31;13755:4;13752:1;13745:15;13779:4;13776:1;13769:15;13795:251;13865:6;13918:2;13906:9;13897:7;13893:23;13889:32;13886:52;;;13934:1;13931;13924:12;13886:52;13966:9;13960:16;13985:31;14010:5;13985:31;:::i;14051:980::-;14313:4;14361:3;14350:9;14346:19;14392:6;14381:9;14374:25;14418:2;14456:6;14451:2;14440:9;14436:18;14429:34;14499:3;14494:2;14483:9;14479:18;14472:31;14523:6;14558;14552:13;14589:6;14581;14574:22;14627:3;14616:9;14612:19;14605:26;;14666:2;14658:6;14654:15;14640:29;;14687:1;14697:195;14711:6;14708:1;14705:13;14697:195;;;14776:13;;-1:-1:-1;;;;;14772:39:1;14760:52;;14867:15;;;;14832:12;;;;14808:1;14726:9;14697:195;;;-1:-1:-1;;;;;;;14948:32:1;;;;14943:2;14928:18;;14921:60;-1:-1:-1;;;15012:3:1;14997:19;14990:35;14909:3;14051:980;-1:-1:-1;;;14051:980:1:o;15648:306::-;15736:6;15744;15752;15805:2;15793:9;15784:7;15780:23;15776:32;15773:52;;;15821:1;15818;15811:12;15773:52;15850:9;15844:16;15834:26;;15900:2;15889:9;15885:18;15879:25;15869:35;;15944:2;15933:9;15929:18;15923:25;15913:35;;15648:306;;;;;:::o
Swarm Source
ipfs://b27596e93236fb7ea535a3cccb39854c3581311f0e071bfd70d3a674fee46f98
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.