ETH Price: $3,289.47 (-2.24%)

Token

Bobcat AI (BOBCAT)
 

Overview

Max Total Supply

1,000,000,000 BOBCAT

Holders

168

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.666010168 BOBCAT

Value
$0.00
0x427ed9e9ec977d2a377491ea8f0b546d2269eb5c
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
BobcatAI

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-03-22
*/

/**

https://t.me/BobcatAI

*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.18;


library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {return a + b;}
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {return a - b;}
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {return a * b;}
    function div(uint256 a, uint256 b) internal pure returns (uint256) {return a / b;}
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {return a % b;}
    
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {uint256 c = a + b; if(c < a) return(false, 0); return(true, c);}}

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b > a) return(false, 0); return(true, a - b);}}

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if (a == 0) return(true, 0); uint256 c = a * b;
        if(c / a != b) return(false, 0); return(true, c);}}

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b == 0) return(false, 0); return(true, a / b);}}

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b == 0) return(false, 0); return(true, a % b);}}

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked{require(b <= a, errorMessage); return a - b;}}

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked{require(b > 0, errorMessage); return a / b;}}

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked{require(b > 0, errorMessage); return a % b;}}}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function circulatingSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);}

abstract contract Ownable {
    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;
}

interface tokenStaking {
    function deposit(uint256 amount) external;
    function withdraw(uint256 amount) external;
}

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 BobcatAI is IERC20, tokenStaking, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'Bobcat AI';
    string private constant _symbol = 'BOBCAT';
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 1000000000 * (10 ** _decimals);
    uint256 public _maxTxAmount = ( _totalSupply * 100 ) / 10000;
    uint256 public _maxSellAmount = ( _totalSupply * 100 ) / 10000;
    uint256 public _maxWalletToken = ( _totalSupply * 100 ) / 10000;
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    struct UserStats{bool whitelist; bool isBot; bool feeExempt;}
    mapping(address => UserStats) private isFeeExempt;
    IRouter router;
    address public pair;
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 200;
    uint256 private developmentFee = 100;
    uint256 private stakingFee = 0;
    uint256 private tokenFee = 0;
    uint256 private totalFee = 2000;
    uint256 private sellFee = 2000;
    uint256 private transferFee = 2000;
    uint256 private denominator = 10000;
    bool private swapEnabled = true;
    bool private whitelistAllowed = false;
    bool private tradingAllowed = false;
    mapping(address => uint256) private lastTransferTimestamp;
    bool public transferDelayEnabled = true;
    uint256 private swapTimes;
    bool private swapping;
    bool private liquidityAdd;
    modifier liquidityCreation {liquidityAdd = true; _; liquidityAdd = false;}
    uint256 private swapAmount = 2;
    uint256 private swapThreshold = ( _totalSupply * 200 ) / 100000;
    uint256 private minTokenAmount = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}
    mapping(address => uint256) public amountStaked;
    uint256 public totalStaked;
    stakeIntegration internal stakingContract;
    
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal development_receiver = 0x6b3E4261576d6Dd0c6EDa6714ab9E390F76978D8; 
    address internal marketing_receiver = 0xe810E5C054D2D52E8148759BaA5fF3494Df466Db;
    address internal liquidity_receiver = 0x6b3E4261576d6Dd0c6EDa6714ab9E390F76978D8;
    address internal staking_receiver = 0x6b3E4261576d6Dd0c6EDa6714ab9E390F76978D8;
    address internal token_receiver = 0x000000000000000000000000000000000000dEaD;
    
    event Deposit(address indexed account, uint256 indexed amount, uint256 indexed timestamp);
    event Withdraw(address indexed account, uint256 indexed amount, uint256 indexed timestamp);
    event SetStakingAddress(address indexed stakingAddress, uint256 indexed timestamp);
    event SetisBot(address indexed account, bool indexed isBot, uint256 indexed timestamp);
    event TradingEnabled(address indexed account, uint256 indexed timestamp);
    event isWhitelisted(address indexed account, bool indexed isWhitelisted, uint256 indexed timestamp);
    event ExcludeFromFees(address indexed account, bool indexed isExcluded, uint256 indexed timestamp);
    event SetDividendExempt(address indexed account, bool indexed isExempt, uint256 indexed timestamp);
    event Launch(uint256 indexed whitelistTime, bool indexed whitelistAllowed, uint256 indexed timestamp);
    event SetInternalAddresses(address indexed marketing, address indexed liquidity, address indexed development, uint256 timestamp);
    event SetSwapBackSettings(uint256 indexed swapAmount, uint256 indexed swapThreshold, uint256 indexed swapMinAmount, uint256 timestamp);
    event SetDistributionCriteria(uint256 indexed minPeriod, uint256 indexed minDistribution, uint256 indexed distributorGas, uint256 timestamp);
    event SetParameters(uint256 indexed maxTxAmount, uint256 indexed maxWalletToken, uint256 indexed maxTransfer, uint256 timestamp);
    event SetStructure(uint256 indexed total, uint256 indexed sell, uint256 transfer, uint256 indexed timestamp);
    event CreateLiquidity(uint256 indexed tokenAmount, uint256 indexed ETHAmount, address indexed wallet, uint256 timestamp);

    constructor() Ownable(msg.sender) {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router;
        pair = _pair;
        isFeeExempt[address(this)].whitelist = true;
        isFeeExempt[msg.sender].whitelist = true;
        isFeeExempt[address(this)].feeExempt = true;
        isFeeExempt[liquidity_receiver].feeExempt = true;
        isFeeExempt[marketing_receiver].feeExempt = true;
        isFeeExempt[development_receiver].feeExempt = true;
        isFeeExempt[address(DEAD)].feeExempt = true;
        isFeeExempt[msg.sender].feeExempt = 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),"ERC20: below available balance threshold");
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        preTxCheck(sender, recipient, amount);
        checkTradingAllowed(sender, recipient);
        checkTxLimit(sender, recipient, amount);
        checkMaxWallet(sender, recipient, amount);
        checkTradeDelay(sender, recipient);
        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);
    }

    function deposit(uint256 amount) override external {
        require(amount <= _balances[msg.sender].sub(amountStaked[msg.sender]), "ERC20: Cannot stake more than available balance");
        stakingContract.stakingDeposit(msg.sender, amount);
        amountStaked[msg.sender] = amountStaked[msg.sender].add(amount);
        totalStaked = totalStaked.add(amount);
        emit Deposit(msg.sender, amount, block.timestamp);
    }

    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);
        emit Withdraw(msg.sender, amount, block.timestamp);
    }

    uint256 internal launchTime; uint256 internal whitelistTime;
    function startWhitelistTrading(uint256 _whitelistTime, bool _whitelistAllowed) external onlyOwner {
        require(!whitelistAllowed, "ERC20: whitelist period already enabled");
        tradingAllowed = true; launchTime = block.timestamp; 
        whitelistTime = _whitelistTime; whitelistAllowed = _whitelistAllowed;
        emit Launch(_whitelistTime, _whitelistAllowed, block.timestamp);
    }

    function setisWhitelist(address[] calldata addresses, bool _bool) external onlyOwner {
        for(uint i=0; i < addresses.length; i++){isFeeExempt[addresses[i]].whitelist = _bool;
        emit isWhitelisted(addresses[i], _bool, block.timestamp);}
    }

    function setStakingAddress(address _staking) external onlyOwner {
        stakingContract = stakeIntegration(_staking); isFeeExempt[_staking].feeExempt = true;
        emit SetStakingAddress(_staking, block.timestamp);
    }

    function setStructure(uint256 _liquidity, uint256 _marketing, uint256 _token, uint256 _development, uint256 _staking, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        liquidityFee = _liquidity; marketingFee = _marketing; tokenFee = _token; stakingFee = _staking;
        developmentFee = _development; totalFee = _total; sellFee = _sell; transferFee = _trans;
        require(totalFee <= denominator.div(5) && sellFee <= denominator.div(5) && transferFee <= denominator.div(5), "ERC20: fees cannot be more than 20%");
        emit SetStructure(_total, _sell, _trans, block.timestamp);
    }

    function setisBot(address _address, bool _enabled) external onlyOwner {
        require(_address != address(pair) && _address != address(router) && _address != address(this) && _address != address(DEAD), "ERC20: ineligible address");
        isFeeExempt[_address].isBot = _enabled;
        emit SetisBot(_address, _enabled, block.timestamp);
    }

    function setParameters(uint256 _buy, uint256 _trans, uint256 _wallet) external onlyOwner {
        uint256 newTx = (totalSupply() * _buy) / 10000; uint256 newTransfer = (totalSupply() * _trans) / 10000;
        uint256 newWallet = (totalSupply() * _wallet) / 10000; uint256 limit = totalSupply().mul(5).div(1000);
        require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "ERC20: max TXs and max Wallet cannot be less than .5%");
        _maxTxAmount = newTx; _maxSellAmount = newTransfer; _maxWalletToken = newWallet;
        emit SetParameters(newTx, newWallet, newTransfer, block.timestamp);
    }

    function setTransferDelay(bool enabled) external onlyOwner {
        transferDelayEnabled = enabled;
    }

    function checkTradingAllowed(address sender, address recipient) internal {
        if(launchTime.add(whitelistTime) < block.timestamp){whitelistAllowed = false;}
        if(!isFeeExempt[sender].feeExempt && !isFeeExempt[recipient].feeExempt && !whitelistAllowed){require(tradingAllowed, "ERC20: Trading is not allowed");}
        if(whitelistAllowed && tradingAllowed){require(!whitelistIneligible(sender, recipient), "ERC20: Whitelist Period");}
    }
    
    function whitelistIneligible(address sender, address recipient) internal view returns (bool) {
        return !isFeeExempt[sender].whitelist && !isFeeExempt[recipient].whitelist && !isFeeExempt[sender].feeExempt && !isFeeExempt[recipient].feeExempt;
    }

    function checkMaxWallet(address sender, address recipient, uint256 amount) internal view {
        if(!isFeeExempt[sender].feeExempt && !isFeeExempt[recipient].feeExempt && recipient != address(pair) && recipient != address(DEAD)){
            require((_balances[recipient].add(amount)) <= _maxWalletToken, "ERC20: exceeds maximum wallet amount.");}
    }

    function checkTradeDelay(address sender, address recipient) internal {
        if(transferDelayEnabled && !isFeeExempt[sender].feeExempt && !isFeeExempt[recipient].feeExempt && recipient != address(pair) &&
            recipient != address(DEAD) && recipient != address(router)){
                require(lastTransferTimestamp[tx.origin] < block.number, "ERC20: Transfer Delay enabled. Only one purchase per block allowed.");
                    lastTransferTimestamp[tx.origin] = block.number;}
    }

    function swapbackCounters(address sender, address recipient) internal {
        if(recipient == pair && !isFeeExempt[sender].feeExempt && !liquidityAdd){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.");}
        if(sender != pair){require(amount <= _maxSellAmount || isFeeExempt[sender].feeExempt || isFeeExempt[recipient].feeExempt, "ERC20: tx limit exceeded");}
        require(amount <= _maxTxAmount || isFeeExempt[sender].feeExempt || isFeeExempt[recipient].feeExempt, "ERC20: tx limit exceeded");
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(developmentFee).add(stakingFee)).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 stakingAmount = unitBalance.mul(2).mul(stakingFee);
        if(stakingAmount > 0){payable(staking_receiver).transfer(stakingAmount);}
        if(address(this).balance > uint256(0)){payable(development_receiver).transfer(address(this).balance);}
    }

    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].feeExempt 
            && recipient == pair && swapTimes >= swapAmount && aboveThreshold && !liquidityAdd;
    }

    function swapBack(address sender, address recipient, uint256 amount) internal {
        if(shouldSwapBack(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);}
    }
    
    function startTrading() external onlyOwner {
        tradingAllowed = true;
        emit TradingEnabled(msg.sender, block.timestamp);
    }

    function setInternalAddresses(address _marketing, address _liquidity, address _development, address _staking, address _token) external onlyOwner {
        marketing_receiver = _marketing; liquidity_receiver = _liquidity; development_receiver = _development; staking_receiver = _staking; token_receiver = _token;
        isFeeExempt[_marketing].feeExempt = true; isFeeExempt[_liquidity].feeExempt = true; isFeeExempt[_staking].feeExempt = true; isFeeExempt[_token].feeExempt = true;
        emit SetInternalAddresses(_marketing, _liquidity, _development, block.timestamp);
    }

    function setisExempt(address _address, bool _enabled) external onlyOwner {
        isFeeExempt[_address].feeExempt = _enabled;
        emit ExcludeFromFees(_address, _enabled, block.timestamp);
    }

    function rescueERC20(address _address, uint256 _amount) external {
        IERC20(_address).transfer(development_receiver, _amount);
    }

    function setSwapbackSettings(uint256 _swapAmount, uint256 _swapThreshold, uint256 _minTokenAmount) external onlyOwner {
        swapAmount = _swapAmount; swapThreshold = _swapThreshold; minTokenAmount = _minTokenAmount;
        emit SetSwapBackSettings(_swapAmount, _swapThreshold, _minTokenAmount, block.timestamp);  
    }

    function createLiquidity(uint256 tokenAmount) payable public liquidityCreation {
        _approve(msg.sender, address(this), tokenAmount);
        _approve(msg.sender, address(router), tokenAmount);
        _transfer(msg.sender, address(this), tokenAmount);
        _approve(address(this), address(router), tokenAmount);
        addLiquidity(tokenAmount, msg.value, msg.sender);
        emit CreateLiquidity(tokenAmount, msg.value, msg.sender, block.timestamp);
    }

    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !isFeeExempt[sender].feeExempt && !isFeeExempt[recipient].feeExempt;
    }

    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        if(isFeeExempt[sender].isBot || isFeeExempt[recipient].isBot){return denominator.sub(uint256(100));}
        if(recipient == pair){return sellFee;}
        if(sender == pair){return totalFee;}
        return transferFee;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(getTotalFee(sender, recipient) > 0 && !liquidityAdd){
        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 > 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);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"ETHAmount","type":"uint256"},{"indexed":true,"internalType":"address","name":"wallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"CreateLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"bool","name":"isExcluded","type":"bool"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"whitelistTime","type":"uint256"},{"indexed":true,"internalType":"bool","name":"whitelistAllowed","type":"bool"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"Launch","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"minPeriod","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"minDistribution","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"distributorGas","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SetDistributionCriteria","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"bool","name":"isExempt","type":"bool"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SetDividendExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"marketing","type":"address"},{"indexed":true,"internalType":"address","name":"liquidity","type":"address"},{"indexed":true,"internalType":"address","name":"development","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SetInternalAddresses","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxTxAmount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"maxWalletToken","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"maxTransfer","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SetParameters","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"stakingAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SetStakingAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"total","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"sell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"transfer","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SetStructure","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"swapAmount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"swapThreshold","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"swapMinAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SetSwapBackSettings","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"bool","name":"isBot","type":"bool"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SetisBot","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"TradingEnabled","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"Withdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"bool","name":"isWhitelisted","type":"bool"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"isWhitelisted","type":"event"},{"inputs":[],"name":"_maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","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":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"createLiquidity","outputs":[],"stateMutability":"payable","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":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_amount","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":"_staking","type":"address"},{"internalType":"address","name":"_token","type":"address"}],"name":"setInternalAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"_token","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_staking","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":"bool","name":"enabled","type":"bool"}],"name":"setTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"_bool","type":"bool"}],"name":"setisWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_whitelistTime","type":"uint256"},{"internalType":"bool","name":"_whitelistAllowed","type":"bool"}],"name":"startWhitelistTrading","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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"}]

6080604052620000126009600a62000557565b6200002290633b9aca006200056f565b60015561271060015460646200003991906200056f565b62000045919062000589565b60025561271060015460646200005c91906200056f565b62000068919062000589565b60035561271060015460646200007f91906200056f565b6200008b919062000589565b6004556000600a81905560c8600b8190556064600c55600d829055600e919091556107d0600f81905560108190556011556127106012556013805462ffffff191660019081179091556015805460ff191682179055600260185554620186a091620000f791906200056f565b62000103919062000589565b601955620186a0600154600a6200011b91906200056f565b62000127919062000589565b601a55601e80546001600160a01b0319908116736b3e4261576d6dd0c6eda6714ab9e390f76978d8908117909255601f8054821673e810e5c054d2d52e8148759baa5ff3494df466db179055602080548216831790556021805482169092179091556022805490911661dead179055348015620001a357600080fd5b50600080546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa1580156200020b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002319190620005ac565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200027f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a59190620005ac565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003199190620005ac565b600880546001600160a01b03199081166001600160a01b038681169190911790925560098054909116838316179055306000908152600760209081526040808320805460ff19908116600190811783553380875284872080549093168217835583546201000062ff00001991821681179095558654891688528588208054821686179055601f54891688528588208054821686179055601e54909816875284872080548916851790557fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d80548916851790558087528254909716909217905554600583528184208190559051908152939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050620005d7565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004995781600019048211156200047d576200047d62000442565b808516156200048b57918102915b93841c93908002906200045d565b509250929050565b600082620004b25750600162000551565b81620004c15750600062000551565b8160018114620004da5760028114620004e55762000505565b600191505062000551565b60ff841115620004f957620004f962000442565b50506001821b62000551565b5060208310610133831016604e8410600b84101617156200052a575081810a62000551565b62000536838362000458565b80600019048211156200054d576200054d62000442565b0290505b92915050565b60006200056860ff841683620004a1565b9392505050565b808202811582820484141762000551576200055162000442565b600082620005a757634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620005bf57600080fd5b81516001600160a01b03811681146200056857600080fd5b612c9c80620005e76000396000f3fe6080604052600436106102135760003560e01c806386975cfe11610118578063a9059cbb116100a0578063e2d6f94c1161006f578063e2d6f94c1461064b578063e94dd17c1461066b578063ef40a6701461068b578063f2fde38b146106b8578063f4e0d9ac146106d857600080fd5b8063a9059cbb146105ab578063b6b55f25146105cb578063c876d0b9146105eb578063dd62ed3e1461060557600080fd5b80639358928b116100e75780639358928b1461050757806395d89b411461051c5780639fb05d371461054b578063a0821be31461056b578063a8aa1b311461058b57600080fd5b806386975cfe14610475578063893d20e8146104955780638c41180e146104c75780638cd4426d146104e757600080fd5b806348ff2b8b1161019b57806378026a221161016a57806378026a221461040a57806378109e541461041d5780637cca52fe146104335780637d1db4a514610449578063817b1cd21461045f57600080fd5b806348ff2b8b1461037457806355c2535e1461039457806370a08231146103b457806377c325d6146103ea57600080fd5b8063293230b8116101e2578063293230b8146102d25780632e1a7d4d146102e95780632f54bf6e14610309578063313ce5671461033857806334c5d2ce1461035457600080fd5b806306fdde031461021f578063095ea7b31461026357806318160ddd1461029357806323b872dd146102b257600080fd5b3661021a57005b600080fd5b34801561022b57600080fd5b50604080518082019091526009815268426f6263617420414960b81b60208201525b60405161025a9190612769565b60405180910390f35b34801561026f57600080fd5b5061028361027e3660046127cf565b6106f8565b604051901515815260200161025a565b34801561029f57600080fd5b506001545b60405190815260200161025a565b3480156102be57600080fd5b506102836102cd3660046127fb565b61070f565b3480156102de57600080fd5b506102e7610779565b005b3480156102f557600080fd5b506102e761030436600461283c565b6107ec565b34801561031557600080fd5b50610283610324366004612855565b6000546001600160a01b0391821691161490565b34801561034457600080fd5b506040516009815260200161025a565b34801561036057600080fd5b506102e761036f366004612872565b610932565b34801561038057600080fd5b506102e761038f3660046128ac565b610ac6565b3480156103a057600080fd5b506102e76103af3660046128e5565b610b4f565b3480156103c057600080fd5b506102a46103cf366004612855565b6001600160a01b031660009081526005602052604090205490565b3480156103f657600080fd5b506102e761040536600461296b565b610c50565b6102e761041836600461283c565b610c8d565b34801561042957600080fd5b506102a460045481565b34801561043f57600080fd5b506102a460035481565b34801561045557600080fd5b506102a460025481565b34801561046b57600080fd5b506102a4601c5481565b34801561048157600080fd5b506102e7610490366004612988565b610d40565b3480156104a157600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161025a565b3480156104d357600080fd5b506102e76104e23660046128ac565b610e2c565b3480156104f357600080fd5b506102e76105023660046127cf565b610f57565b34801561051357600080fd5b506102a4610fd3565b34801561052857600080fd5b506040805180820190915260068152651093d090d05560d21b602082015261024d565b34801561055757600080fd5b506102e76105663660046129ad565b611044565b34801561057757600080fd5b506102a4610586366004612855565b611154565b34801561059757600080fd5b506009546104af906001600160a01b031681565b3480156105b757600080fd5b506102836105c63660046127cf565b611181565b3480156105d757600080fd5b506102e76105e636600461283c565b61118e565b3480156105f757600080fd5b506015546102839060ff1681565b34801561061157600080fd5b506102a4610620366004612a1e565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561065757600080fd5b506102e7610666366004612a4c565b6112eb565b34801561067757600080fd5b506102e7610686366004612872565b611424565b34801561069757600080fd5b506102a46106a6366004612855565b601b6020526000908152604090205481565b3480156106c457600080fd5b506102e76106d3366004612855565b61149b565b3480156106e457600080fd5b506102e76106f3366004612855565b611519565b60006107053384846115aa565b5060015b92915050565b600061071c8484846116ce565b61076e843361076985604051806060016040528060288152602001612c3f602891396001600160a01b038a16600090815260066020908152604080832033845290915290205491906117fe565b6115aa565b5060015b9392505050565b6000546001600160a01b031633146107ac5760405162461bcd60e51b81526004016107a390612aa1565b60405180910390fd5b6013805462ff0000191662010000179055604051429033907f340c369ced7c3a65b67543c4f1e839173c42d01b38931b0c01b18c89a1d1ba4b90600090a3565b336000908152601b60205260409020548111156108615760405162461bcd60e51b815260206004820152602d60248201527f45524332303a2043616e6e6f7420756e7374616b65206d6f7265207468616e2060448201526c185b5bdd5b9d081cdd185ad959609a1b60648201526084016107a3565b601d5460405163d8a9bf2960e01b8152336004820152602481018390526001600160a01b039091169063d8a9bf2990604401600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b5050336000908152601b60205260409020546108e0925090508261182a565b336000908152601b6020526040902055601c546108fd908261182a565b601c556040514290829033907ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b56890600090a450565b6000546001600160a01b0316331461095c5760405162461bcd60e51b81526004016107a390612aa1565b60006127108461096b60015490565b6109759190612ad7565b61097f9190612aee565b905060006127108461099060015490565b61099a9190612ad7565b6109a49190612aee565b90506000612710846109b560015490565b6109bf9190612ad7565b6109c99190612aee565b905060006109ed6103e86109e760056109e160015490565b90611836565b90611842565b90508084101580156109ff5750808310155b8015610a0b5750808210155b610a755760405162461bcd60e51b815260206004820152603560248201527f45524332303a206d61782054587320616e64206d61782057616c6c65742063616044820152746e6e6f74206265206c657373207468616e202e352560581b60648201526084016107a3565b6002849055600383905560048290556040514281528390839086907fbd5acdd9cd7346c04cee822893f228a65a948bc41357408255ab8f36c446349f9060200160405180910390a450505050505050565b6000546001600160a01b03163314610af05760405162461bcd60e51b81526004016107a390612aa1565b6001600160a01b038216600081815260076020526040808220805462ff0000191662010000861515908102919091179091559051429391927ff61420caae4661cdd9554a2c8b6c89fc9f30f94abccb1da76abb2ec99783821191a45050565b6000546001600160a01b03163314610b795760405162461bcd60e51b81526004016107a390612aa1565b60005b82811015610c4a578160076000868685818110610b9b57610b9b612b10565b9050602002016020810190610bb09190612855565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905542821515858584818110610bee57610bee612b10565b9050602002016020810190610c039190612855565b6001600160a01b03167f06fc074ca2e419a387dc375c9b7c443ad8795d2ba416fa17bb4691ea4ba86ed560405160405180910390a480610c4281612b26565b915050610b7c565b50505050565b6000546001600160a01b03163314610c7a5760405162461bcd60e51b81526004016107a390612aa1565b6015805460ff1916911515919091179055565b6017805461ff001916610100179055610ca73330836115aa565b600854610cbf9033906001600160a01b0316836115aa565b610cca3330836116ce565b600854610ce29030906001600160a01b0316836115aa565b610ced81343361184e565b336001600160a01b031634827f89d4d2ecc95200a080f69cea2131862ff53c70739a5db9ab0373fcdd09da746d42604051610d2a91815260200190565b60405180910390a4506017805461ff0019169055565b6000546001600160a01b03163314610d6a5760405162461bcd60e51b81526004016107a390612aa1565b601354610100900460ff1615610dd25760405162461bcd60e51b815260206004820152602760248201527f45524332303a2077686974656c69737420706572696f6420616c726561647920604482015266195b98589b195960ca1b60648201526084016107a3565b601380544260238190556024859055831515610100810262ffff001990931692909217620100001790925560405184907f0ce4d0131af8e20b17ec4635aadf58b43531a126375fbecb229e0ef13c761c5790600090a45050565b6000546001600160a01b03163314610e565760405162461bcd60e51b81526004016107a390612aa1565b6009546001600160a01b03838116911614801590610e8257506008546001600160a01b03838116911614155b8015610e9757506001600160a01b0382163014155b8015610eae57506001600160a01b03821661dead14155b610efa5760405162461bcd60e51b815260206004820152601960248201527f45524332303a20696e656c696769626c6520616464726573730000000000000060448201526064016107a3565b6001600160a01b038216600081815260076020526040808220805461ff001916610100861515908102919091179091559051429391927fd1c5980b68c66e201f3a2b571fb898fa61a65a2c74c60690855730f86165d00d91a45050565b601e5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610faa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fce9190612b3f565b505050565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead60009081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba54600154919261103f929091611039919061182a565b9061182a565b905090565b6000546001600160a01b0316331461106e5760405162461bcd60e51b81526004016107a390612aa1565b601f80546001600160a01b03199081166001600160a01b038881169182179093556020805483168885169081178255601e8054851689871690811790915560218054861689881690811790915560228054909616968816968717909555600084815260078452604080822080546201000062ff00001991821681179092558584528284208054821683179055978352818320805489168217905597825290819020805490961690961790945593514281529293927f358f3926f41536f5fa6926b5b6945502e5fdfb85b1876c473d06606ed0fae9ca910160405180910390a45050505050565b6001600160a01b0381166000908152601b602090815260408083205460059092528220546107099161182a565b60006107053384846116ce565b336000908152601b60209081526040808320546005909252909120546111b39161182a565b81111561121a5760405162461bcd60e51b815260206004820152602f60248201527f45524332303a2043616e6e6f74207374616b65206d6f7265207468616e20617660448201526e61696c61626c652062616c616e636560881b60648201526084016107a3565b601d5460405163773a0f0960e01b8152336004820152602481018390526001600160a01b039091169063773a0f0990604401600060405180830381600087803b15801561126657600080fd5b505af115801561127a573d6000803e3d6000fd5b5050336000908152601b60205260409020546112999250905082611901565b336000908152601b6020526040902055601c546112b69082611901565b601c556040514290829033907f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1590600090a450565b6000546001600160a01b031633146113155760405162461bcd60e51b81526004016107a390612aa1565b600a889055600b879055600e869055600d849055600c859055600f8390556010829055601181905560125461134b906005611842565b600f541115801561136b5750601254611365906005611842565b60105411155b80156113865750601254611380906005611842565b60115411155b6113de5760405162461bcd60e51b815260206004820152602360248201527f45524332303a20666565732063616e6e6f74206265206d6f7265207468616e2060448201526232302560e81b60648201526084016107a3565b4282847fdddb43af0ad29e5d9d3cb393fd94e8f11ac2c069da19545bac6ee6baf3ddc9898460405161141291815260200190565b60405180910390a45050505050505050565b6000546001600160a01b0316331461144e5760405162461bcd60e51b81526004016107a390612aa1565b60188390556019829055601a8190556040514281528190839085907f3af591b474e55c209cfbc3da369b6762366e3015997314ac10bd5c3198d26fb39060200160405180910390a4505050565b6000546001600160a01b031633146114c55760405162461bcd60e51b81526004016107a390612aa1565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6000546001600160a01b031633146115435760405162461bcd60e51b81526004016107a390612aa1565b601d80546001600160a01b0383166001600160a01b03199091168117909155600081815260076020526040808220805462ff0000191662010000179055514292917f23481943b6ef3dff645af874fbb24781bf224a02312f9cb308880e03e0a9ddee91a350565b6001600160a01b03831661160c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107a3565b6001600160a01b03821661166d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107a3565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6116d983838361190d565b6116e38383611a4c565b6116ee838383611bb4565b6116f9838383611dc0565b6117038383611ec6565b61170d8383612018565b611718838383612089565b6001600160a01b03831660009081526005602052604090205461173b908261182a565b6001600160a01b03841660009081526005602052604081209190915561176184846120ae565b61176b5781611776565b611776848484612100565b6001600160a01b03841660009081526005602052604090205490915061179c9082611901565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117f09085815260200190565b60405180910390a350505050565b600081848411156118225760405162461bcd60e51b81526004016107a39190612769565b505050900390565b60006107728284612b5c565b60006107728284612ad7565b60006107728284612aee565b6008546118669030906001600160a01b0316856115aa565b60085460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0383811660848301524260a48301529091169063f305d71990849060c40160606040518083038185885af11580156118d4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118f99190612b6f565b505050505050565b60006107728284612b9d565b6001600160a01b0383166119715760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107a3565b6001600160a01b0382166119d35760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107a3565b6001600160a01b038316600090815260056020526040902054811115610fce5760405162461bcd60e51b815260206004820152602860248201527f45524332303a2062656c6f7720617661696c61626c652062616c616e636520746044820152671a1c995cda1bdb1960c21b60648201526084016107a3565b42611a6460245460235461190190919063ffffffff16565b1015611a76576013805461ff00191690555b6001600160a01b03821660009081526007602052604090205462010000900460ff16158015611ac457506001600160a01b03811660009081526007602052604090205462010000900460ff16155b8015611ad85750601354610100900460ff16155b15611b355760135462010000900460ff16611b355760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2054726164696e67206973206e6f7420616c6c6f77656400000060448201526064016107a3565b601354610100900460ff168015611b54575060135462010000900460ff165b15611bb057611b63828261220b565b15611bb05760405162461bcd60e51b815260206004820152601760248201527f45524332303a2057686974656c69737420506572696f6400000000000000000060448201526064016107a3565b5050565b6001600160a01b0383166000908152601b602052604090205415611c6d576001600160a01b038316600090815260056020908152604080832054601b90925290912054611c02908390611901565b1115611c6d5760405162461bcd60e51b815260206004820152603460248201527f45524332303a2065786365656473206d6178696d756d20616c6c6f776564206e60448201527337ba1031bab93932b73a363c9039ba30b5b2b21760611b60648201526084016107a3565b6009546001600160a01b03848116911614611d215760035481111580611cb157506001600160a01b03831660009081526007602052604090205462010000900460ff165b80611cda57506001600160a01b03821660009081526007602052604090205462010000900460ff165b611d215760405162461bcd60e51b8152602060048201526018602482015277115490cc8c0e881d1e081b1a5b5a5d08195e18d95959195960421b60448201526064016107a3565b60025481111580611d5057506001600160a01b03831660009081526007602052604090205462010000900460ff165b80611d7957506001600160a01b03821660009081526007602052604090205462010000900460ff165b610fce5760405162461bcd60e51b8152602060048201526018602482015277115490cc8c0e881d1e081b1a5b5a5d08195e18d95959195960421b60448201526064016107a3565b6001600160a01b03831660009081526007602052604090205462010000900460ff16158015611e0e57506001600160a01b03821660009081526007602052604090205462010000900460ff16155b8015611e2857506009546001600160a01b03838116911614155b8015611e3f57506001600160a01b03821661dead14155b15610fce576004546001600160a01b038316600090815260056020526040902054611e6a9083611901565b1115610fce5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2065786365656473206d6178696d756d2077616c6c657420616d60448201526437bab73a1760d91b60648201526084016107a3565b60155460ff168015611ef757506001600160a01b03821660009081526007602052604090205462010000900460ff16155b8015611f2257506001600160a01b03811660009081526007602052604090205462010000900460ff16155b8015611f3c57506009546001600160a01b03828116911614155b8015611f5357506001600160a01b03811661dead14155b8015611f6d57506008546001600160a01b03828116911614155b15611bb0573260009081526014602052604090205443116120025760405162461bcd60e51b815260206004820152604360248201527f45524332303a205472616e736665722044656c617920656e61626c65642e204f60448201527f6e6c79206f6e652070757263686173652070657220626c6f636b20616c6c6f7760648201526232b21760e91b608482015260a4016107a3565b3260009081526014602052604090204390555050565b6009546001600160a01b03828116911614801561205457506001600160a01b03821660009081526007602052604090205462010000900460ff16155b80156120685750601754610100900460ff16155b15611bb0576001601660008282546120809190612b9d565b90915550505050565b6120948383836122a7565b15610fce576120a4601954612373565b6000601655505050565b6001600160a01b03821660009081526007602052604081205462010000900460ff161580156107725750506001600160a01b031660009081526007602052604090205462010000900460ff1615919050565b60008061210d858561256c565b1180156121225750601754610100900460ff16155b15612204576000612144612136868661256c565b6012546109e1908690611842565b306000908152600560205260409020549091506121619082611901565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906121b29085815260200190565b60405180910390a3600e54156121f257602254600e546012546121f29230926001600160a01b03909116916121ed91906109e1908990611842565b6116ce565b6121fc838261182a565b915050610772565b5092915050565b6001600160a01b03821660009081526007602052604081205460ff1615801561224d57506001600160a01b03821660009081526007602052604090205460ff16155b801561227857506001600160a01b03831660009081526007602052604090205462010000900460ff16155b80156107725750506001600160a01b031660009081526007602052604090205462010000900460ff1615919050565b601a546019543060009081526005602052604081205460175491938510159211159060ff161580156122db575060135460ff165b80156122ef575060135462010000900460ff165b80156122f85750815b801561232357506001600160a01b03861660009081526007602052604090205462010000900460ff16155b801561233c57506009546001600160a01b038681169116145b801561234c575060185460165410155b80156123555750805b80156123695750601754610100900460ff16155b9695505050505050565b6001601760006101000a81548160ff02191690831515021790555060006123c360026109e1600d546123bd600c546123bd600b546123bd6001600a5461190190919063ffffffff16565b90611901565b905060006123e0826109e7600a548661183690919063ffffffff16565b905060006123ee848361182a565b9050476123fa82612617565b6000612406478361182a565b90506000612429612422600a548861182a90919063ffffffff16565b8390611842565b90506000612442600a548361183690919063ffffffff16565b905080156124635760205461246390879083906001600160a01b031661184e565b600b54600090612478906109e1856002611836565b905080156124bc57601f546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156124ba573d6000803e3d6000fd5b505b600d546000906124d1906109e1866002611836565b90508015612515576021546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612513573d6000803e3d6000fd5b505b471561255657601e546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612554573d6000803e3d6000fd5b505b50506017805460ff191690555050505050505050565b6001600160a01b038216600090815260076020526040812054610100900460ff16806125b557506001600160a01b038216600090815260076020526040902054610100900460ff165b156125cf576012546125c890606461182a565b9050610709565b6009546001600160a01b03908116908316036125ee5750601054610709565b6009546001600160a01b039081169084160361260d5750600f54610709565b5060115492915050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061264c5761264c612b10565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156126a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126c99190612bb0565b816001815181106126dc576126dc612b10565b6001600160a01b03928316602091820292909201015260085461270291309116846115aa565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac9479061273b908590600090869030904290600401612bcd565b600060405180830381600087803b15801561275557600080fd5b505af11580156118f9573d6000803e3d6000fd5b600060208083528351808285015260005b818110156127965785810183015185820160400152820161277a565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146127cc57600080fd5b50565b600080604083850312156127e257600080fd5b82356127ed816127b7565b946020939093013593505050565b60008060006060848603121561281057600080fd5b833561281b816127b7565b9250602084013561282b816127b7565b929592945050506040919091013590565b60006020828403121561284e57600080fd5b5035919050565b60006020828403121561286757600080fd5b8135610772816127b7565b60008060006060848603121561288757600080fd5b505081359360208301359350604090920135919050565b80151581146127cc57600080fd5b600080604083850312156128bf57600080fd5b82356128ca816127b7565b915060208301356128da8161289e565b809150509250929050565b6000806000604084860312156128fa57600080fd5b833567ffffffffffffffff8082111561291257600080fd5b818601915086601f83011261292657600080fd5b81358181111561293557600080fd5b8760208260051b850101111561294a57600080fd5b602092830195509350508401356129608161289e565b809150509250925092565b60006020828403121561297d57600080fd5b81356107728161289e565b6000806040838503121561299b57600080fd5b8235915060208301356128da8161289e565b600080600080600060a086880312156129c557600080fd5b85356129d0816127b7565b945060208601356129e0816127b7565b935060408601356129f0816127b7565b92506060860135612a00816127b7565b91506080860135612a10816127b7565b809150509295509295909350565b60008060408385031215612a3157600080fd5b8235612a3c816127b7565b915060208301356128da816127b7565b600080600080600080600080610100898b031215612a6957600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761070957610709612ac1565b600082612b0b57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060018201612b3857612b38612ac1565b5060010190565b600060208284031215612b5157600080fd5b81516107728161289e565b8181038181111561070957610709612ac1565b600080600060608486031215612b8457600080fd5b8351925060208401519150604084015190509250925092565b8082018082111561070957610709612ac1565b600060208284031215612bc257600080fd5b8151610772816127b7565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612c1d5784516001600160a01b031683529383019391830191600101612bf8565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b710d0e623ff49ad6fa2389ded281ac005e726391708d8e8e2bdf5fb6e8b010264736f6c63430008120033

Deployed Bytecode

0x6080604052600436106102135760003560e01c806386975cfe11610118578063a9059cbb116100a0578063e2d6f94c1161006f578063e2d6f94c1461064b578063e94dd17c1461066b578063ef40a6701461068b578063f2fde38b146106b8578063f4e0d9ac146106d857600080fd5b8063a9059cbb146105ab578063b6b55f25146105cb578063c876d0b9146105eb578063dd62ed3e1461060557600080fd5b80639358928b116100e75780639358928b1461050757806395d89b411461051c5780639fb05d371461054b578063a0821be31461056b578063a8aa1b311461058b57600080fd5b806386975cfe14610475578063893d20e8146104955780638c41180e146104c75780638cd4426d146104e757600080fd5b806348ff2b8b1161019b57806378026a221161016a57806378026a221461040a57806378109e541461041d5780637cca52fe146104335780637d1db4a514610449578063817b1cd21461045f57600080fd5b806348ff2b8b1461037457806355c2535e1461039457806370a08231146103b457806377c325d6146103ea57600080fd5b8063293230b8116101e2578063293230b8146102d25780632e1a7d4d146102e95780632f54bf6e14610309578063313ce5671461033857806334c5d2ce1461035457600080fd5b806306fdde031461021f578063095ea7b31461026357806318160ddd1461029357806323b872dd146102b257600080fd5b3661021a57005b600080fd5b34801561022b57600080fd5b50604080518082019091526009815268426f6263617420414960b81b60208201525b60405161025a9190612769565b60405180910390f35b34801561026f57600080fd5b5061028361027e3660046127cf565b6106f8565b604051901515815260200161025a565b34801561029f57600080fd5b506001545b60405190815260200161025a565b3480156102be57600080fd5b506102836102cd3660046127fb565b61070f565b3480156102de57600080fd5b506102e7610779565b005b3480156102f557600080fd5b506102e761030436600461283c565b6107ec565b34801561031557600080fd5b50610283610324366004612855565b6000546001600160a01b0391821691161490565b34801561034457600080fd5b506040516009815260200161025a565b34801561036057600080fd5b506102e761036f366004612872565b610932565b34801561038057600080fd5b506102e761038f3660046128ac565b610ac6565b3480156103a057600080fd5b506102e76103af3660046128e5565b610b4f565b3480156103c057600080fd5b506102a46103cf366004612855565b6001600160a01b031660009081526005602052604090205490565b3480156103f657600080fd5b506102e761040536600461296b565b610c50565b6102e761041836600461283c565b610c8d565b34801561042957600080fd5b506102a460045481565b34801561043f57600080fd5b506102a460035481565b34801561045557600080fd5b506102a460025481565b34801561046b57600080fd5b506102a4601c5481565b34801561048157600080fd5b506102e7610490366004612988565b610d40565b3480156104a157600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161025a565b3480156104d357600080fd5b506102e76104e23660046128ac565b610e2c565b3480156104f357600080fd5b506102e76105023660046127cf565b610f57565b34801561051357600080fd5b506102a4610fd3565b34801561052857600080fd5b506040805180820190915260068152651093d090d05560d21b602082015261024d565b34801561055757600080fd5b506102e76105663660046129ad565b611044565b34801561057757600080fd5b506102a4610586366004612855565b611154565b34801561059757600080fd5b506009546104af906001600160a01b031681565b3480156105b757600080fd5b506102836105c63660046127cf565b611181565b3480156105d757600080fd5b506102e76105e636600461283c565b61118e565b3480156105f757600080fd5b506015546102839060ff1681565b34801561061157600080fd5b506102a4610620366004612a1e565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561065757600080fd5b506102e7610666366004612a4c565b6112eb565b34801561067757600080fd5b506102e7610686366004612872565b611424565b34801561069757600080fd5b506102a46106a6366004612855565b601b6020526000908152604090205481565b3480156106c457600080fd5b506102e76106d3366004612855565b61149b565b3480156106e457600080fd5b506102e76106f3366004612855565b611519565b60006107053384846115aa565b5060015b92915050565b600061071c8484846116ce565b61076e843361076985604051806060016040528060288152602001612c3f602891396001600160a01b038a16600090815260066020908152604080832033845290915290205491906117fe565b6115aa565b5060015b9392505050565b6000546001600160a01b031633146107ac5760405162461bcd60e51b81526004016107a390612aa1565b60405180910390fd5b6013805462ff0000191662010000179055604051429033907f340c369ced7c3a65b67543c4f1e839173c42d01b38931b0c01b18c89a1d1ba4b90600090a3565b336000908152601b60205260409020548111156108615760405162461bcd60e51b815260206004820152602d60248201527f45524332303a2043616e6e6f7420756e7374616b65206d6f7265207468616e2060448201526c185b5bdd5b9d081cdd185ad959609a1b60648201526084016107a3565b601d5460405163d8a9bf2960e01b8152336004820152602481018390526001600160a01b039091169063d8a9bf2990604401600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b5050336000908152601b60205260409020546108e0925090508261182a565b336000908152601b6020526040902055601c546108fd908261182a565b601c556040514290829033907ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b56890600090a450565b6000546001600160a01b0316331461095c5760405162461bcd60e51b81526004016107a390612aa1565b60006127108461096b60015490565b6109759190612ad7565b61097f9190612aee565b905060006127108461099060015490565b61099a9190612ad7565b6109a49190612aee565b90506000612710846109b560015490565b6109bf9190612ad7565b6109c99190612aee565b905060006109ed6103e86109e760056109e160015490565b90611836565b90611842565b90508084101580156109ff5750808310155b8015610a0b5750808210155b610a755760405162461bcd60e51b815260206004820152603560248201527f45524332303a206d61782054587320616e64206d61782057616c6c65742063616044820152746e6e6f74206265206c657373207468616e202e352560581b60648201526084016107a3565b6002849055600383905560048290556040514281528390839086907fbd5acdd9cd7346c04cee822893f228a65a948bc41357408255ab8f36c446349f9060200160405180910390a450505050505050565b6000546001600160a01b03163314610af05760405162461bcd60e51b81526004016107a390612aa1565b6001600160a01b038216600081815260076020526040808220805462ff0000191662010000861515908102919091179091559051429391927ff61420caae4661cdd9554a2c8b6c89fc9f30f94abccb1da76abb2ec99783821191a45050565b6000546001600160a01b03163314610b795760405162461bcd60e51b81526004016107a390612aa1565b60005b82811015610c4a578160076000868685818110610b9b57610b9b612b10565b9050602002016020810190610bb09190612855565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905542821515858584818110610bee57610bee612b10565b9050602002016020810190610c039190612855565b6001600160a01b03167f06fc074ca2e419a387dc375c9b7c443ad8795d2ba416fa17bb4691ea4ba86ed560405160405180910390a480610c4281612b26565b915050610b7c565b50505050565b6000546001600160a01b03163314610c7a5760405162461bcd60e51b81526004016107a390612aa1565b6015805460ff1916911515919091179055565b6017805461ff001916610100179055610ca73330836115aa565b600854610cbf9033906001600160a01b0316836115aa565b610cca3330836116ce565b600854610ce29030906001600160a01b0316836115aa565b610ced81343361184e565b336001600160a01b031634827f89d4d2ecc95200a080f69cea2131862ff53c70739a5db9ab0373fcdd09da746d42604051610d2a91815260200190565b60405180910390a4506017805461ff0019169055565b6000546001600160a01b03163314610d6a5760405162461bcd60e51b81526004016107a390612aa1565b601354610100900460ff1615610dd25760405162461bcd60e51b815260206004820152602760248201527f45524332303a2077686974656c69737420706572696f6420616c726561647920604482015266195b98589b195960ca1b60648201526084016107a3565b601380544260238190556024859055831515610100810262ffff001990931692909217620100001790925560405184907f0ce4d0131af8e20b17ec4635aadf58b43531a126375fbecb229e0ef13c761c5790600090a45050565b6000546001600160a01b03163314610e565760405162461bcd60e51b81526004016107a390612aa1565b6009546001600160a01b03838116911614801590610e8257506008546001600160a01b03838116911614155b8015610e9757506001600160a01b0382163014155b8015610eae57506001600160a01b03821661dead14155b610efa5760405162461bcd60e51b815260206004820152601960248201527f45524332303a20696e656c696769626c6520616464726573730000000000000060448201526064016107a3565b6001600160a01b038216600081815260076020526040808220805461ff001916610100861515908102919091179091559051429391927fd1c5980b68c66e201f3a2b571fb898fa61a65a2c74c60690855730f86165d00d91a45050565b601e5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610faa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fce9190612b3f565b505050565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead60009081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba54600154919261103f929091611039919061182a565b9061182a565b905090565b6000546001600160a01b0316331461106e5760405162461bcd60e51b81526004016107a390612aa1565b601f80546001600160a01b03199081166001600160a01b038881169182179093556020805483168885169081178255601e8054851689871690811790915560218054861689881690811790915560228054909616968816968717909555600084815260078452604080822080546201000062ff00001991821681179092558584528284208054821683179055978352818320805489168217905597825290819020805490961690961790945593514281529293927f358f3926f41536f5fa6926b5b6945502e5fdfb85b1876c473d06606ed0fae9ca910160405180910390a45050505050565b6001600160a01b0381166000908152601b602090815260408083205460059092528220546107099161182a565b60006107053384846116ce565b336000908152601b60209081526040808320546005909252909120546111b39161182a565b81111561121a5760405162461bcd60e51b815260206004820152602f60248201527f45524332303a2043616e6e6f74207374616b65206d6f7265207468616e20617660448201526e61696c61626c652062616c616e636560881b60648201526084016107a3565b601d5460405163773a0f0960e01b8152336004820152602481018390526001600160a01b039091169063773a0f0990604401600060405180830381600087803b15801561126657600080fd5b505af115801561127a573d6000803e3d6000fd5b5050336000908152601b60205260409020546112999250905082611901565b336000908152601b6020526040902055601c546112b69082611901565b601c556040514290829033907f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1590600090a450565b6000546001600160a01b031633146113155760405162461bcd60e51b81526004016107a390612aa1565b600a889055600b879055600e869055600d849055600c859055600f8390556010829055601181905560125461134b906005611842565b600f541115801561136b5750601254611365906005611842565b60105411155b80156113865750601254611380906005611842565b60115411155b6113de5760405162461bcd60e51b815260206004820152602360248201527f45524332303a20666565732063616e6e6f74206265206d6f7265207468616e2060448201526232302560e81b60648201526084016107a3565b4282847fdddb43af0ad29e5d9d3cb393fd94e8f11ac2c069da19545bac6ee6baf3ddc9898460405161141291815260200190565b60405180910390a45050505050505050565b6000546001600160a01b0316331461144e5760405162461bcd60e51b81526004016107a390612aa1565b60188390556019829055601a8190556040514281528190839085907f3af591b474e55c209cfbc3da369b6762366e3015997314ac10bd5c3198d26fb39060200160405180910390a4505050565b6000546001600160a01b031633146114c55760405162461bcd60e51b81526004016107a390612aa1565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6000546001600160a01b031633146115435760405162461bcd60e51b81526004016107a390612aa1565b601d80546001600160a01b0383166001600160a01b03199091168117909155600081815260076020526040808220805462ff0000191662010000179055514292917f23481943b6ef3dff645af874fbb24781bf224a02312f9cb308880e03e0a9ddee91a350565b6001600160a01b03831661160c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107a3565b6001600160a01b03821661166d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107a3565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6116d983838361190d565b6116e38383611a4c565b6116ee838383611bb4565b6116f9838383611dc0565b6117038383611ec6565b61170d8383612018565b611718838383612089565b6001600160a01b03831660009081526005602052604090205461173b908261182a565b6001600160a01b03841660009081526005602052604081209190915561176184846120ae565b61176b5781611776565b611776848484612100565b6001600160a01b03841660009081526005602052604090205490915061179c9082611901565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117f09085815260200190565b60405180910390a350505050565b600081848411156118225760405162461bcd60e51b81526004016107a39190612769565b505050900390565b60006107728284612b5c565b60006107728284612ad7565b60006107728284612aee565b6008546118669030906001600160a01b0316856115aa565b60085460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0383811660848301524260a48301529091169063f305d71990849060c40160606040518083038185885af11580156118d4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118f99190612b6f565b505050505050565b60006107728284612b9d565b6001600160a01b0383166119715760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107a3565b6001600160a01b0382166119d35760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107a3565b6001600160a01b038316600090815260056020526040902054811115610fce5760405162461bcd60e51b815260206004820152602860248201527f45524332303a2062656c6f7720617661696c61626c652062616c616e636520746044820152671a1c995cda1bdb1960c21b60648201526084016107a3565b42611a6460245460235461190190919063ffffffff16565b1015611a76576013805461ff00191690555b6001600160a01b03821660009081526007602052604090205462010000900460ff16158015611ac457506001600160a01b03811660009081526007602052604090205462010000900460ff16155b8015611ad85750601354610100900460ff16155b15611b355760135462010000900460ff16611b355760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2054726164696e67206973206e6f7420616c6c6f77656400000060448201526064016107a3565b601354610100900460ff168015611b54575060135462010000900460ff165b15611bb057611b63828261220b565b15611bb05760405162461bcd60e51b815260206004820152601760248201527f45524332303a2057686974656c69737420506572696f6400000000000000000060448201526064016107a3565b5050565b6001600160a01b0383166000908152601b602052604090205415611c6d576001600160a01b038316600090815260056020908152604080832054601b90925290912054611c02908390611901565b1115611c6d5760405162461bcd60e51b815260206004820152603460248201527f45524332303a2065786365656473206d6178696d756d20616c6c6f776564206e60448201527337ba1031bab93932b73a363c9039ba30b5b2b21760611b60648201526084016107a3565b6009546001600160a01b03848116911614611d215760035481111580611cb157506001600160a01b03831660009081526007602052604090205462010000900460ff165b80611cda57506001600160a01b03821660009081526007602052604090205462010000900460ff165b611d215760405162461bcd60e51b8152602060048201526018602482015277115490cc8c0e881d1e081b1a5b5a5d08195e18d95959195960421b60448201526064016107a3565b60025481111580611d5057506001600160a01b03831660009081526007602052604090205462010000900460ff165b80611d7957506001600160a01b03821660009081526007602052604090205462010000900460ff165b610fce5760405162461bcd60e51b8152602060048201526018602482015277115490cc8c0e881d1e081b1a5b5a5d08195e18d95959195960421b60448201526064016107a3565b6001600160a01b03831660009081526007602052604090205462010000900460ff16158015611e0e57506001600160a01b03821660009081526007602052604090205462010000900460ff16155b8015611e2857506009546001600160a01b03838116911614155b8015611e3f57506001600160a01b03821661dead14155b15610fce576004546001600160a01b038316600090815260056020526040902054611e6a9083611901565b1115610fce5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2065786365656473206d6178696d756d2077616c6c657420616d60448201526437bab73a1760d91b60648201526084016107a3565b60155460ff168015611ef757506001600160a01b03821660009081526007602052604090205462010000900460ff16155b8015611f2257506001600160a01b03811660009081526007602052604090205462010000900460ff16155b8015611f3c57506009546001600160a01b03828116911614155b8015611f5357506001600160a01b03811661dead14155b8015611f6d57506008546001600160a01b03828116911614155b15611bb0573260009081526014602052604090205443116120025760405162461bcd60e51b815260206004820152604360248201527f45524332303a205472616e736665722044656c617920656e61626c65642e204f60448201527f6e6c79206f6e652070757263686173652070657220626c6f636b20616c6c6f7760648201526232b21760e91b608482015260a4016107a3565b3260009081526014602052604090204390555050565b6009546001600160a01b03828116911614801561205457506001600160a01b03821660009081526007602052604090205462010000900460ff16155b80156120685750601754610100900460ff16155b15611bb0576001601660008282546120809190612b9d565b90915550505050565b6120948383836122a7565b15610fce576120a4601954612373565b6000601655505050565b6001600160a01b03821660009081526007602052604081205462010000900460ff161580156107725750506001600160a01b031660009081526007602052604090205462010000900460ff1615919050565b60008061210d858561256c565b1180156121225750601754610100900460ff16155b15612204576000612144612136868661256c565b6012546109e1908690611842565b306000908152600560205260409020549091506121619082611901565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906121b29085815260200190565b60405180910390a3600e54156121f257602254600e546012546121f29230926001600160a01b03909116916121ed91906109e1908990611842565b6116ce565b6121fc838261182a565b915050610772565b5092915050565b6001600160a01b03821660009081526007602052604081205460ff1615801561224d57506001600160a01b03821660009081526007602052604090205460ff16155b801561227857506001600160a01b03831660009081526007602052604090205462010000900460ff16155b80156107725750506001600160a01b031660009081526007602052604090205462010000900460ff1615919050565b601a546019543060009081526005602052604081205460175491938510159211159060ff161580156122db575060135460ff165b80156122ef575060135462010000900460ff165b80156122f85750815b801561232357506001600160a01b03861660009081526007602052604090205462010000900460ff16155b801561233c57506009546001600160a01b038681169116145b801561234c575060185460165410155b80156123555750805b80156123695750601754610100900460ff16155b9695505050505050565b6001601760006101000a81548160ff02191690831515021790555060006123c360026109e1600d546123bd600c546123bd600b546123bd6001600a5461190190919063ffffffff16565b90611901565b905060006123e0826109e7600a548661183690919063ffffffff16565b905060006123ee848361182a565b9050476123fa82612617565b6000612406478361182a565b90506000612429612422600a548861182a90919063ffffffff16565b8390611842565b90506000612442600a548361183690919063ffffffff16565b905080156124635760205461246390879083906001600160a01b031661184e565b600b54600090612478906109e1856002611836565b905080156124bc57601f546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156124ba573d6000803e3d6000fd5b505b600d546000906124d1906109e1866002611836565b90508015612515576021546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612513573d6000803e3d6000fd5b505b471561255657601e546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612554573d6000803e3d6000fd5b505b50506017805460ff191690555050505050505050565b6001600160a01b038216600090815260076020526040812054610100900460ff16806125b557506001600160a01b038216600090815260076020526040902054610100900460ff165b156125cf576012546125c890606461182a565b9050610709565b6009546001600160a01b03908116908316036125ee5750601054610709565b6009546001600160a01b039081169084160361260d5750600f54610709565b5060115492915050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061264c5761264c612b10565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156126a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126c99190612bb0565b816001815181106126dc576126dc612b10565b6001600160a01b03928316602091820292909201015260085461270291309116846115aa565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac9479061273b908590600090869030904290600401612bcd565b600060405180830381600087803b15801561275557600080fd5b505af11580156118f9573d6000803e3d6000fd5b600060208083528351808285015260005b818110156127965785810183015185820160400152820161277a565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146127cc57600080fd5b50565b600080604083850312156127e257600080fd5b82356127ed816127b7565b946020939093013593505050565b60008060006060848603121561281057600080fd5b833561281b816127b7565b9250602084013561282b816127b7565b929592945050506040919091013590565b60006020828403121561284e57600080fd5b5035919050565b60006020828403121561286757600080fd5b8135610772816127b7565b60008060006060848603121561288757600080fd5b505081359360208301359350604090920135919050565b80151581146127cc57600080fd5b600080604083850312156128bf57600080fd5b82356128ca816127b7565b915060208301356128da8161289e565b809150509250929050565b6000806000604084860312156128fa57600080fd5b833567ffffffffffffffff8082111561291257600080fd5b818601915086601f83011261292657600080fd5b81358181111561293557600080fd5b8760208260051b850101111561294a57600080fd5b602092830195509350508401356129608161289e565b809150509250925092565b60006020828403121561297d57600080fd5b81356107728161289e565b6000806040838503121561299b57600080fd5b8235915060208301356128da8161289e565b600080600080600060a086880312156129c557600080fd5b85356129d0816127b7565b945060208601356129e0816127b7565b935060408601356129f0816127b7565b92506060860135612a00816127b7565b91506080860135612a10816127b7565b809150509295509295909350565b60008060408385031215612a3157600080fd5b8235612a3c816127b7565b915060208301356128da816127b7565b600080600080600080600080610100898b031215612a6957600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761070957610709612ac1565b600082612b0b57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060018201612b3857612b38612ac1565b5060010190565b600060208284031215612b5157600080fd5b81516107728161289e565b8181038181111561070957610709612ac1565b600080600060608486031215612b8457600080fd5b8351925060208401519150604084015190509250925092565b8082018082111561070957610709612ac1565b600060208284031215612bc257600080fd5b8151610772816127b7565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612c1d5784516001600160a01b031683529383019391830191600101612bf8565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b710d0e623ff49ad6fa2389ded281ac005e726391708d8e8e2bdf5fb6e8b010264736f6c63430008120033

Deployed Bytecode Sourcemap

4503:19612:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9507:67;;;;;;;;;;-1:-1:-1;9567:5:0;;;;;;;;;;;;-1:-1:-1;;;9567:5:0;;;;9507:67;;;;;;;:::i;:::-;;;;;;;;10291:133;;;;;;;;;;-1:-1:-1;10291:133:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;10291:133:0;1023:187:1;9814:84:0;;;;;;;;;;-1:-1:-1;9884:12:0;;9814:84;;;1361:25:1;;;1349:2;1334:18;9814:84:0;1215:177:1;23460:309:0;;;;;;;;;;-1:-1:-1;23460:309:0;;;;;:::i;:::-;;:::i;20438:142::-;;;;;;;;;;;;;:::i;:::-;;12240:408;;;;;;;;;;-1:-1:-1;12240:408:0;;;;;:::i;:::-;;:::i;3095:87::-;;;;;;;;;;-1:-1:-1;3095:87:0;;;;;:::i;:::-;3150:4;3175:5;-1:-1:-1;;;;;3164:16:0;;;3175:5;;3164:16;;3095:87;9657:67;;;;;;;;;;-1:-1:-1;9657:67:0;;4728:1;2437:36:1;;2425:2;2410:18;9657:67:0;2295:184:1;14620:626:0;;;;;;;;;;-1:-1:-1;14620:626:0;;;;;:::i;:::-;;:::i;21177:202::-;;;;;;;;;;-1:-1:-1;21177:202:0;;;;;:::i;:::-;;:::i;13132:256::-;;;;;;;;;;-1:-1:-1;13132:256:0;;;;;:::i;:::-;;:::i;9904:103::-;;;;;;;;;;-1:-1:-1;9904:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;9987:18:0;9970:7;9987:18;;;:9;:18;;;;;;;9904:103;15254:108;;;;;;;;;;-1:-1:-1;15254:108:0;;;;;:::i;:::-;;:::i;21870:474::-;;;;;;:::i;:::-;;:::i;4940:63::-;;;;;;;;;;;;;;;;4871:62;;;;;;;;;;;;;;;;4804:60;;;;;;;;;;;;;;;;6357:26;;;;;;;;;;;;;;;;12722:402;;;;;;;;;;-1:-1:-1;12722:402:0;;;;;:::i;:::-;;:::i;9730:78::-;;;;;;;;;;-1:-1:-1;9782:7:0;9800:5;-1:-1:-1;;;;;9800:5:0;9730:78;;;-1:-1:-1;;;;;4794:32:1;;;4776:51;;4764:2;4749:18;9730:78:0;4630:203:1;14261:351:0;;;;;;;;;;-1:-1:-1;14261:351:0;;;;;:::i;:::-;;:::i;21387:140::-;;;;;;;;;;-1:-1:-1;21387:140:0;;;;;:::i;:::-;;:::i;10561:138::-;;;;;;;;;;;;;:::i;9580:71::-;;;;;;;;;;-1:-1:-1;9642:7:0;;;;;;;;;;;;-1:-1:-1;;;9642:7:0;;;;9580:71;;20588:581;;;;;;;;;;-1:-1:-1;20588:581:0;;;;;:::i;:::-;;:::i;10430:125::-;;;;;;;;;;-1:-1:-1;10430:125:0;;;;;:::i;:::-;;:::i;5275:19::-;;;;;;;;;;-1:-1:-1;5275:19:0;;;;-1:-1:-1;;;;;5275:19:0;;;10013:139;;;;;;;;;;-1:-1:-1;10013:139:0;;;;;:::i;:::-;;:::i;11798:434::-;;;;;;;;;;-1:-1:-1;11798:434:0;;;;;:::i;:::-;;:::i;5842:39::-;;;;;;;;;;-1:-1:-1;5842:39:0;;;;;;;;10158:127;;;;;;;;;;-1:-1:-1;10158:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;10256:18:0;;;10239:7;10256:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10158:127;13631:622;;;;;;;;;;-1:-1:-1;13631:622:0;;;;;:::i;:::-;;:::i;21535:327::-;;;;;;;;;;-1:-1:-1;21535:327:0;;;;;:::i;:::-;;:::i;6303:47::-;;;;;;;;;;-1:-1:-1;6303:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;3188:111;;;;;;;;;;-1:-1:-1;3188:111:0;;;;;:::i;:::-;;:::i;13396:227::-;;;;;;;;;;-1:-1:-1;13396:227:0;;;;;:::i;:::-;;:::i;10291:133::-;10366:4;10373:37;10382:10;10394:7;10403:6;10373:8;:37::i;:::-;-1:-1:-1;10418:4:0;10291:133;;;;;:::o;23460:309::-;23558:4;23575:36;23585:6;23593:9;23604:6;23575:9;:36::i;:::-;23622:117;23631:6;23639:10;23651:87;23687:6;23651:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23651:19:0;;;;;;:11;:19;;;;;;;;23671:10;23651:31;;;;;;;;;:87;:35;:87::i;:::-;23622:8;:117::i;:::-;-1:-1:-1;23757:4:0;23460:309;;;;;;:::o;20438:142::-;3150:4;3175:5;-1:-1:-1;;;;;3175:5:0;3062:10;3164:16;3046:38;;;;-1:-1:-1;;;3046:38:0;;;;;;;:::i;:::-;;;;;;;;;20492:14:::1;:21:::0;;-1:-1:-1;;20492:21:0::1;::::0;::::1;::::0;;20529:43:::1;::::0;20556:15:::1;::::0;20544:10:::1;::::0;20529:43:::1;::::0;20492:21;;20529:43:::1;20438:142::o:0;12240:408::-;12334:10;12321:24;;;;:12;:24;;;;;;12311:34;;;12303:92;;;;-1:-1:-1;;;12303:92:0;;7511:2:1;12303:92:0;;;7493:21:1;7550:2;7530:18;;;7523:30;7589:34;7569:18;;;7562:62;-1:-1:-1;;;7640:18:1;;;7633:43;7693:19;;12303:92:0;7309:409:1;12303:92:0;12406:15;;:51;;-1:-1:-1;;;12406:51:0;;12438:10;12406:51;;;7897::1;7964:18;;;7957:34;;;-1:-1:-1;;;;;12406:15:0;;;;:31;;7870:18:1;;12406:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12508:10:0;12495:24;;;;:12;:24;;;;;;:36;;-1:-1:-1;12495:24:0;-1:-1:-1;12524:6:0;12495:28;:36::i;:::-;12481:10;12468:24;;;;:12;:24;;;;;:63;12556:11;;:23;;12572:6;12556:15;:23::i;:::-;12542:11;:37;12595:45;;12624:15;;12616:6;;12604:10;;12595:45;;;;;12240:408;:::o;14620:626::-;3150:4;3175:5;-1:-1:-1;;;;;3175:5:0;3062:10;3164:16;3046:38;;;;-1:-1:-1;;;3046:38:0;;;;;;;:::i;:::-;14720:13:::1;14761:5;14753:4;14737:13;9884:12:::0;;;9814:84;14737:13:::1;:20;;;;:::i;:::-;14736:30;;;;:::i;:::-;14720:46;;14768:19;14817:5;14807:6;14791:13;9884:12:::0;;;9814:84;14791:13:::1;:22;;;;:::i;:::-;14790:32;;;;:::i;:::-;14768:54;;14833:17;14881:5;14870:7;14854:13;9884:12:::0;;;9814:84;14854:13:::1;:23;;;;:::i;:::-;14853:33;;;;:::i;:::-;14833:53;;14888:13;14904:30;14929:4;14904:20;14922:1;14904:13;9884:12:::0;;;9814:84;14904:13:::1;:17:::0;::::1;:20::i;:::-;:24:::0;::::1;:30::i;:::-;14888:46;;14962:5;14953;:14;;:38;;;;;14986:5;14971:11;:20;;14953:38;:60;;;;;15008:5;14995:9;:18;;14953:60;14945:126;;;::::0;-1:-1:-1;;;14945:126:0;;8731:2:1;14945:126:0::1;::::0;::::1;8713:21:1::0;8770:2;8750:18;;;8743:30;8809:34;8789:18;;;8782:62;-1:-1:-1;;;8860:18:1;;;8853:51;8921:19;;14945:126:0::1;8529:417:1::0;14945:126:0::1;15082:12;:20:::0;;;15104:14:::1;:28:::0;;;15134:15:::1;:27:::0;;;15177:61:::1;::::0;15222:15:::1;1361:25:1::0;;15104:28:0;;15134:27;;15082:20;;15177:61:::1;::::0;1349:2:1;1334:18;15177:61:0::1;;;;;;;14709:537;;;;14620:626:::0;;;:::o;21177:202::-;3150:4;3175:5;-1:-1:-1;;;;;3175:5:0;3062:10;3164:16;3046:38;;;;-1:-1:-1;;;3046:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21261:21:0;::::1;;::::0;;;:11:::1;:21;::::0;;;;;:42;;-1:-1:-1;;21261:42:0::1;::::0;;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;21319:52;;21355:15:::1;::::0;21261:42;;21319:52:::1;::::0;::::1;21177:202:::0;;:::o;13132:256::-;3150:4;3175:5;-1:-1:-1;;;;;3175:5:0;3062:10;3164:16;3046:38;;;;-1:-1:-1;;;3046:38:0;;;;;;;:::i;:::-;13232:6:::1;13228:153;13242:20:::0;;::::1;13228:153;;;13307:5;13269:11;:25;13281:9;;13291:1;13281:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13269:25:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;13269:25:0;:43;;-1:-1:-1;;13269:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13363:15:::1;13328:51:::0;::::1;;13342:9:::0;;13352:1;13342:12;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13328:51:0::1;;;;;;;;;;;13264:3:::0;::::1;::::0;::::1;:::i;:::-;;;;13228:153;;;;13132:256:::0;;;:::o;15254:108::-;3150:4;3175:5;-1:-1:-1;;;;;3175:5:0;3062:10;3164:16;3046:38;;;;-1:-1:-1;;;3046:38:0;;;;;;;:::i;:::-;15324:20:::1;:30:::0;;-1:-1:-1;;15324:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15254:108::o;21870:474::-;6008:12;:19;;-1:-1:-1;;6008:19:0;;;;;21960:48:::1;21969:10;21989:4;21996:11:::0;21960:8:::1;:48::i;:::-;22048:6;::::0;22019:50:::1;::::0;22028:10:::1;::::0;-1:-1:-1;;;;;22048:6:0::1;22057:11:::0;22019:8:::1;:50::i;:::-;22080:49;22090:10;22110:4;22117:11;22080:9;:49::i;:::-;22172:6;::::0;22140:53:::1;::::0;22157:4:::1;::::0;-1:-1:-1;;;;;22172:6:0::1;22181:11:::0;22140:8:::1;:53::i;:::-;22204:48;22217:11;22230:9;22241:10;22204:12;:48::i;:::-;22308:10;-1:-1:-1::0;;;;;22268:68:0::1;22297:9;22284:11;22268:68;22320:15;22268:68;;;;1361:25:1::0;;1349:2;1334:18;;1215:177;22268:68:0::1;;;;;;;;-1:-1:-1::0;6032:12:0;:20;;-1:-1:-1;;6032:20:0;;;21870:474::o;12722:402::-;3150:4;3175:5;-1:-1:-1;;;;;3175:5:0;3062:10;3164:16;3046:38;;;;-1:-1:-1;;;3046:38:0;;;;;;;:::i;:::-;12840:16:::1;::::0;::::1;::::0;::::1;;;12839:17;12831:69;;;::::0;-1:-1:-1;;;12831:69:0;;9425:2:1;12831:69:0::1;::::0;::::1;9407:21:1::0;9464:2;9444:18;;;9437:30;9503:34;9483:18;;;9476:62;-1:-1:-1;;;9554:18:1;;;9547:37;9601:19;;12831:69:0::1;9223:403:1::0;12831:69:0::1;12911:14;:21:::0;;12947:15:::1;12934:10;:28:::0;;;12974:13:::1;:30:::0;;;13006:36;::::1;;12911:21;13006:36:::0;::::1;-1:-1:-1::0;;13006:36:0;;;;;;;12911:21;13006:36;;;;13058:58:::1;::::0;12990:14;;13058:58:::1;::::0;12911:21;;13058:58:::1;12722:402:::0;;:::o;14261:351::-;3150:4;3175:5;-1:-1:-1;;;;;3175:5:0;3062:10;3164:16;3046:38;;;;-1:-1:-1;;;3046:38:0;;;;;;;:::i;:::-;14370:4:::1;::::0;-1:-1:-1;;;;;14350:25:0;;::::1;14370:4:::0;::::1;14350:25;::::0;::::1;::::0;:56:::1;;-1:-1:-1::0;14399:6:0::1;::::0;-1:-1:-1;;;;;14379:27:0;;::::1;14399:6:::0;::::1;14379:27;;14350:56;:85;;;;-1:-1:-1::0;;;;;;14410:25:0;::::1;14430:4;14410:25;;14350:85;:114;;;;-1:-1:-1::0;;;;;;14439:25:0;::::1;6477:42;14439:25;;14350:114;14342:152;;;::::0;-1:-1:-1;;;14342:152:0;;9833:2:1;14342:152:0::1;::::0;::::1;9815:21:1::0;9872:2;9852:18;;;9845:30;9911:27;9891:18;;;9884:55;9956:18;;14342:152:0::1;9631:349:1::0;14342:152:0::1;-1:-1:-1::0;;;;;14505:21:0;::::1;;::::0;;;:11:::1;:21;::::0;;;;;:38;;-1:-1:-1;;14505:38:0::1;;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;14559:45;;14588:15:::1;::::0;14505:38;;14559:45:::1;::::0;::::1;14261:351:::0;;:::o;21387:140::-;21489:20;;21463:56;;-1:-1:-1;;;21463:56:0;;-1:-1:-1;;;;;21489:20:0;;;21463:56;;;7897:51:1;7964:18;;;7957:34;;;21463:25:0;;;;;;7870:18:1;;21463:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21387:140;;:::o;10561:138::-;9987:9;:18;;;;6477:42;10620:7;9987:18;;;;;10637:12;;10620:7;;10637:60;;9987:18;;10637:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;10630:67;;10561:138;:::o;20588:581::-;3150:4;3175:5;-1:-1:-1;;;;;3175:5:0;3062:10;3164:16;3046:38;;;;-1:-1:-1;;;3046:38:0;;;;;;;:::i;:::-;20744:18:::1;:31:::0;;-1:-1:-1;;;;;;20744:31:0;;::::1;-1:-1:-1::0;;;;;20744:31:0;;::::1;::::0;;::::1;::::0;;;20777:18:::1;:31:::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;20810:20:::1;:35:::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;20847:16:::1;:27:::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;20876:14:::1;:23:::0;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;20910:23:0;;;:11:::1;:23:::0;;;;;;:40;;;-1:-1:-1;;20910:40:0;;::::1;::::0;::::1;::::0;;;20952:23;;;;;;:40;;;::::1;::::0;::::1;::::0;;20994:21;;;;;;:38;;;::::1;::::0;::::1;::::0;;21034:19;;;;;;;:36;;;;::::1;::::0;;::::1;::::0;;;21086:75;;21145:15:::1;1361:25:1::0;;20810:35:0;;20777:31;21086:75:::1;::::0;1334:18:1;21086:75:0::1;;;;;;;20588:581:::0;;;;;:::o;10430:125::-;-1:-1:-1;;;;;10532:20:0;;10493:7;10532:20;;;:12;:20;;;;;;;;;10510:9;:17;;;;;;:43;;:21;:43::i;10013:139::-;10091:4;10098:40;10108:10;10120:9;10131:6;10098:9;:40::i;11798:434::-;11917:10;11904:24;;;;:12;:24;;;;;;;;;11878:9;:21;;;;;;;:51;;:25;:51::i;:::-;11868:6;:61;;11860:121;;;;-1:-1:-1;;;11860:121:0;;10437:2:1;11860:121:0;;;10419:21:1;10476:2;10456:18;;;10449:30;10515:34;10495:18;;;10488:62;-1:-1:-1;;;10566:18:1;;;10559:45;10621:19;;11860:121:0;10235:411:1;11860:121:0;11992:15;;:50;;-1:-1:-1;;;11992:50:0;;12023:10;11992:50;;;7897:51:1;7964:18;;;7957:34;;;-1:-1:-1;;;;;11992:15:0;;;;:30;;7870:18:1;;11992:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12093:10:0;12080:24;;;;:12;:24;;;;;;:36;;-1:-1:-1;12080:24:0;-1:-1:-1;12109:6:0;12080:28;:36::i;:::-;12066:10;12053:24;;;;:12;:24;;;;;:63;12141:11;;:23;;12157:6;12141:15;:23::i;:::-;12127:11;:37;12180:44;;12208:15;;12200:6;;12188:10;;12180:44;;;;;11798:434;:::o;13631:622::-;3150:4;3175:5;-1:-1:-1;;;;;3175:5:0;3062:10;3164:16;3046:38;;;;-1:-1:-1;;;3046:38:0;;;;;;;:::i;:::-;13826:12:::1;:25:::0;;;13853:12:::1;:25:::0;;;13880:8:::1;:17:::0;;;13899:10:::1;:21:::0;;;13931:14:::1;:29:::0;;;13962:8:::1;:17:::0;;;13981:7:::1;:15:::0;;;13998:11:::1;:20:::0;;;14049:11:::1;::::0;:18:::1;::::0;14065:1:::1;14049:15;:18::i;:::-;14037:8;;:30;;:63;;;;-1:-1:-1::0;14082:11:0::1;::::0;:18:::1;::::0;14098:1:::1;14082:15;:18::i;:::-;14071:7;;:29;;14037:63;:100;;;;-1:-1:-1::0;14119:11:0::1;::::0;:18:::1;::::0;14135:1:::1;14119:15;:18::i;:::-;14104:11;;:33;;14037:100;14029:148;;;::::0;-1:-1:-1;;;14029:148:0;;10853:2:1;14029:148:0::1;::::0;::::1;10835:21:1::0;10892:2;10872:18;;;10865:30;10931:34;10911:18;;;10904:62;-1:-1:-1;;;10982:18:1;;;10975:33;11025:19;;14029:148:0::1;10651:399:1::0;14029:148:0::1;14229:15;14214:5;14206:6;14193:52;14221:6;14193:52;;;;1361:25:1::0;;1349:2;1334:18;;1215:177;14193:52:0::1;;;;;;;;13631:622:::0;;;;;;;;:::o;21535:327::-;3150:4;3175:5;-1:-1:-1;;;;;3175:5:0;3062:10;3164:16;3046:38;;;;-1:-1:-1;;;3046:38:0;;;;;;;:::i;:::-;21664:10:::1;:24:::0;;;21690:13:::1;:30:::0;;;21722:14:::1;:32:::0;;;21770:82:::1;::::0;21836:15:::1;1361:25:1::0;;21722:32:0;;21690:30;;21664:24;;21770:82:::1;::::0;1349:2:1;1334:18;21770:82:0::1;;;;;;;21535:327:::0;;;:::o;3188:111::-;3150:4;3175:5;-1:-1:-1;;;;;3175:5:0;3062:10;3164:16;3046:38;;;;-1:-1:-1;;;3046:38:0;;;;;;;:::i;:::-;3254:5:::1;:11:::0;;-1:-1:-1;;;;;;3254:11:0::1;-1:-1:-1::0;;;;;3254:11:0;::::1;::::0;;::::1;::::0;;;3272:25:::1;::::0;4776:51:1;;;3272:25:0::1;::::0;4764:2:1;4749:18;3272:25:0::1;;;;;;;3188:111:::0;:::o;13396:227::-;3150:4;3175:5;-1:-1:-1;;;;;3175:5:0;3062:10;3164:16;3046:38;;;;-1:-1:-1;;;3046:38:0;;;;;;;:::i;:::-;13471:15:::1;:44:::0;;-1:-1:-1;;;;;13471:44:0;::::1;-1:-1:-1::0;;;;;;13471:44:0;;::::1;::::0;::::1;::::0;;;:15:::1;13517:21:::0;;;:11:::1;:21;::::0;;;;;:38;;-1:-1:-1;;13517:38:0::1;::::0;::::1;::::0;;13571:44;13599:15:::1;::::0;13471:44;13571::::1;::::0;::::1;13396:227:::0;:::o;23777:335::-;-1:-1:-1;;;;;23870:19:0;;23862:68;;;;-1:-1:-1;;;23862:68:0;;11473:2:1;23862:68:0;;;11455:21:1;11512:2;11492:18;;;11485:30;11551:34;11531:18;;;11524:62;-1:-1:-1;;;11602:18:1;;;11595:34;11646:19;;23862:68:0;11271:400:1;23862:68:0;-1:-1:-1;;;;;23949:21:0;;23941:68;;;;-1:-1:-1;;;23941:68:0;;11878:2:1;23941:68:0;;;11860:21:1;11917:2;11897:18;;;11890:30;11956:34;11936:18;;;11929:62;-1:-1:-1;;;12007:18:1;;;12000:32;12049:19;;23941:68:0;11676:398:1;23941:68:0;-1:-1:-1;;;;;24020:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;24072:32;;1361:25:1;;;24072:32:0;;1334:18:1;24072:32:0;;;;;;;23777:335;;;:::o;11061:729::-;11150:37;11161:6;11169:9;11180:6;11150:10;:37::i;:::-;11198:38;11218:6;11226:9;11198:19;:38::i;:::-;11247:39;11260:6;11268:9;11279:6;11247:12;:39::i;:::-;11297:41;11312:6;11320:9;11331:6;11297:14;:41::i;:::-;11349:34;11365:6;11373:9;11349:15;:34::i;:::-;11394:35;11411:6;11419:9;11394:16;:35::i;:::-;11440;11449:6;11457:9;11468:6;11440:8;:35::i;:::-;-1:-1:-1;;;;;11506:17:0;;;;;;:9;:17;;;;;;:29;;11528:6;11506:21;:29::i;:::-;-1:-1:-1;;;;;11486:17:0;;;;;;:9;:17;;;;;:49;;;;11571:32;11496:6;11593:9;11571:13;:32::i;:::-;:78;;11643:6;11571:78;;;11606:34;11614:6;11622:9;11633:6;11606:7;:34::i;:::-;-1:-1:-1;;;;;11683:20:0;;;;;;:9;:20;;;;;;11546:103;;-1:-1:-1;11683:40:0;;11546:103;11683:24;:40::i;:::-;-1:-1:-1;;;;;11660:20:0;;;;;;;:9;:20;;;;;;;:63;;;;11739:43;;;;;;;;;;11767:14;1361:25:1;;1349:2;1334:18;;1215:177;11739:43:0;;;;;;;;11139:651;11061:729;;;:::o;1427:162::-;1513:7;1559:12;1551:6;;;;1543:29;;;;-1:-1:-1;;;1543:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1581:5:0;;;1427:162::o;214:82::-;272:7;289:5;293:1;289;:5;:::i;302:82::-;360:7;377:5;381:1;377;:5;:::i;390:82::-;448:7;465:5;469:1;465;:5;:::i;18971:360::-;19102:6;;19070:53;;19087:4;;-1:-1:-1;;;;;19102:6:0;19111:11;19070:8;:53::i;:::-;19134:6;;:189;;-1:-1:-1;;;19134:189:0;;19197:4;19134:189;;;12553:34:1;12603:18;;;12596:34;;;19134:6:0;12646:18:1;;;12639:34;;;12689:18;;;12682:34;-1:-1:-1;;;;;12753:15:1;;;12732:19;;;12725:44;19307:15:0;12785:19:1;;;12778:35;19134:6:0;;;;:22;;19164:9;;12487:19:1;;19134:189:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18971:360;;;:::o;126:82::-;184:7;201:5;205:1;201;:5;:::i;10707:346::-;-1:-1:-1;;;;;10811:20:0;;10803:70;;;;-1:-1:-1;;;10803:70:0;;13467:2:1;10803:70:0;;;13449:21:1;13506:2;13486:18;;;13479:30;13545:34;13525:18;;;13518:62;-1:-1:-1;;;13596:18:1;;;13589:35;13641:19;;10803:70:0;13265:401:1;10803:70:0;-1:-1:-1;;;;;10892:23:0;;10884:71;;;;-1:-1:-1;;;10884:71:0;;13873:2:1;10884:71:0;;;13855:21:1;13912:2;13892:18;;;13885:30;13951:34;13931:18;;;13924:62;-1:-1:-1;;;14002:18:1;;;13995:33;14045:19;;10884:71:0;13671:399:1;10884:71:0;-1:-1:-1;;;;;9987:18:0;;9970:7;9987:18;;;:9;:18;;;;;;10974:6;:27;;10966:79;;;;-1:-1:-1;;;10966:79:0;;14277:2:1;10966:79:0;;;14259:21:1;14316:2;14296:18;;;14289:30;14355:34;14335:18;;;14328:62;-1:-1:-1;;;14406:18:1;;;14399:38;14454:19;;10966:79:0;14075:404:1;15370:456:0;15489:15;15457:29;15472:13;;15457:10;;:14;;:29;;;;:::i;:::-;:47;15454:78;;;15506:16;:24;;-1:-1:-1;;15506:24:0;;;15454:78;-1:-1:-1;;;;;15546:19:0;;;;;;:11;:19;;;;;:29;;;;;;15545:30;:67;;;;-1:-1:-1;;;;;;15580:22:0;;;;;;:11;:22;;;;;:32;;;;;;15579:33;15545:67;:88;;;;-1:-1:-1;15617:16:0;;;;;;;15616:17;15545:88;15542:151;;;15643:14;;;;;;;15635:56;;;;-1:-1:-1;;;15635:56:0;;14686:2:1;15635:56:0;;;14668:21:1;14725:2;14705:18;;;14698:30;14764:31;14744:18;;;14737:59;14813:18;;15635:56:0;14484:353:1;15635:56:0;15706:16;;;;;;;:34;;;;-1:-1:-1;15726:14:0;;;;;;;15706:34;15703:116;;;15751:38;15771:6;15779:9;15751:19;:38::i;:::-;15750:39;15742:75;;;;-1:-1:-1;;;15742:75:0;;15044:2:1;15742:75:0;;;15026:21:1;15083:2;15063:18;;;15056:30;15122:25;15102:18;;;15095:53;15165:18;;15742:75:0;14842:347:1;15742:75:0;15370:456;;:::o;17176:565::-;-1:-1:-1;;;;;17277:20:0;;17308:1;17277:20;;;:12;:20;;;;;;:33;17274:160;;-1:-1:-1;;;;;17358:17:0;;;;;;:9;:17;;;;;;;;;17332:12;:20;;;;;;;17321:32;;:6;;:10;:32::i;:::-;17320:55;;17312:120;;;;-1:-1:-1;;;17312:120:0;;15396:2:1;17312:120:0;;;15378:21:1;15435:2;15415:18;;;15408:30;15474:34;15454:18;;;15447:62;-1:-1:-1;;;15525:18:1;;;15518:50;15585:19;;17312:120:0;15194:416:1;17312:120:0;17457:4;;-1:-1:-1;;;;;17447:14:0;;;17457:4;;17447:14;17444:151;;17481:14;;17471:6;:24;;:57;;;-1:-1:-1;;;;;;17499:19:0;;;;;;:11;:19;;;;;:29;;;;;;17471:57;:93;;;-1:-1:-1;;;;;;17532:22:0;;;;;;:11;:22;;;;;:32;;;;;;17471:93;17463:130;;;;-1:-1:-1;;;17463:130:0;;15817:2:1;17463:130:0;;;15799:21:1;15856:2;15836:18;;;15829:30;-1:-1:-1;;;15875:18:1;;;15868:54;15939:18;;17463:130:0;15615:348:1;17463:130:0;17623:12;;17613:6;:22;;:55;;;-1:-1:-1;;;;;;17639:19:0;;;;;;:11;:19;;;;;:29;;;;;;17613:55;:91;;;-1:-1:-1;;;;;;17672:22:0;;;;;;:11;:22;;;;;:32;;;;;;17613:91;17605:128;;;;-1:-1:-1;;;17605:128:0;;15817:2:1;17605:128:0;;;15799:21:1;15856:2;15836:18;;;15829:30;-1:-1:-1;;;15875:18:1;;;15868:54;15939:18;;17605:128:0;15615:348:1;16103:358:0;-1:-1:-1;;;;;16207:19:0;;;;;;:11;:19;;;;;:29;;;;;;16206:30;:67;;;;-1:-1:-1;;;;;;16241:22:0;;;;;;:11;:22;;;;;:32;;;;;;16240:33;16206:67;:97;;;;-1:-1:-1;16298:4:0;;-1:-1:-1;;;;;16277:26:0;;;16298:4;;16277:26;;16206:97;:127;;;;-1:-1:-1;;;;;;16307:26:0;;6477:42;16307:26;;16206:127;16203:251;;;16395:15;;-1:-1:-1;;;;;16358:20:0;;;;;;:9;:20;;;;;;:32;;16383:6;16358:24;:32::i;:::-;16357:53;;16349:103;;;;-1:-1:-1;;;16349:103:0;;16170:2:1;16349:103:0;;;16152:21:1;16209:2;16189:18;;;16182:30;16248:34;16228:18;;;16221:62;-1:-1:-1;;;16299:18:1;;;16292:35;16344:19;;16349:103:0;15968:401:1;16469:505:0;16552:20;;;;:54;;;;-1:-1:-1;;;;;;16577:19:0;;;;;;:11;:19;;;;;:29;;;;;;16576:30;16552:54;:91;;;;-1:-1:-1;;;;;;16611:22:0;;;;;;:11;:22;;;;;:32;;;;;;16610:33;16552:91;:121;;;;-1:-1:-1;16668:4:0;;-1:-1:-1;;;;;16647:26:0;;;16668:4;;16647:26;;16552:121;:164;;;;-1:-1:-1;;;;;;16690:26:0;;6477:42;16690:26;;16552:164;:196;;;;-1:-1:-1;16741:6:0;;-1:-1:-1;;;;;16720:28:0;;;16741:6;;16720:28;;16552:196;16549:418;;;16798:9;16776:32;;;;:21;:32;;;;;;16811:12;-1:-1:-1;16768:127:0;;;;-1:-1:-1;;;16768:127:0;;16576:2:1;16768:127:0;;;16558:21:1;16615:2;16595:18;;;16588:30;16654:34;16634:18;;;16627:62;16725:34;16705:18;;;16698:62;-1:-1:-1;;;16776:19:1;;;16769:34;16820:19;;16768:127:0;16374:471:1;16768:127:0;16940:9;16918:32;;;;:21;:32;;;;;16953:12;16918:47;;16469:505;;:::o;16982:186::-;17079:4;;-1:-1:-1;;;;;17066:17:0;;;17079:4;;17066:17;:51;;;;-1:-1:-1;;;;;;17088:19:0;;;;;;:11;:19;;;;;:29;;;;;;17087:30;17066:51;:68;;;;-1:-1:-1;17122:12:0;;;;;;;17121:13;17066:68;17063:98;;;17157:1;17136:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;16982:186:0;;:::o;20229:197::-;20321:41;20336:6;20344:9;20355:6;20321:14;:41::i;:::-;20318:101;;;20364:29;20379:13;;20364:14;:29::i;:::-;20415:1;20395:9;:22;20229:197;;;:::o;22352:180::-;-1:-1:-1;;;;;22458:19:0;;22433:4;22458:19;;;:11;:19;;;;;:29;;;;;;22457:30;:67;;;;-1:-1:-1;;;;;;;22492:22:0;;;;;:11;:22;;;;;:32;;;;;;22491:33;;22352:180;-1:-1:-1;22352:180:0:o;22877:575::-;22963:7;23019:1;22986:30;22998:6;23006:9;22986:11;:30::i;:::-;:34;:51;;;;-1:-1:-1;23025:12:0;;;;;;;23024:13;22986:51;22983:447;;;23049:17;23069:59;23097:30;23109:6;23117:9;23097:11;:30::i;:::-;23080:11;;23069:23;;:6;;:10;:23::i;:59::-;23184:4;23166:24;;;;:9;:24;;;;;;23049:79;;-1:-1:-1;23166:39:0;;23049:79;23166:28;:39::i;:::-;23157:4;23139:24;;;;:9;:24;;;;;;;:66;;;;23221:42;;-1:-1:-1;;;;;23221:42:0;;;;;;;23253:9;1361:25:1;;1349:2;1334:18;;1215:177;23221:42:0;;;;;;;;23277:8;;:21;23274:116;;23333:14;;23378:8;;23361:11;;23300:88;;23318:4;;-1:-1:-1;;;;;23333:14:0;;;;23350:37;;23378:8;23350:23;;:6;;:10;:23::i;:37::-;23300:9;:88::i;:::-;23407:21;:6;23418:9;23407:10;:21::i;:::-;23400:28;;;;;22983:447;-1:-1:-1;23438:6:0;22877:575;-1:-1:-1;;22877:575:0:o;15838:257::-;-1:-1:-1;;;;;15950:19:0;;15925:4;15950:19;;;:11;:19;;;;;:29;;;15949:30;:67;;;;-1:-1:-1;;;;;;15984:22:0;;;;;;:11;:22;;;;;:32;;;15983:33;15949:67;:101;;;;-1:-1:-1;;;;;;16021:19:0;;;;;;:11;:19;;;;;:29;;;;;;16020:30;15949:101;:138;;;;-1:-1:-1;;;;;;;16055:22:0;;;;;:11;:22;;;;;:32;;;;;;16054:33;;15838:257;-1:-1:-1;15838:257:0:o;19781:440::-;19922:14;;19997:13;;19987:4;19879;9987:18;;;:9;:18;;;;;;20029:8;;19879:4;;19912:24;;;;-1:-1:-1;19969:41:0;;20029:8;;20028:9;:24;;;;-1:-1:-1;20041:11:0;;;;20028:24;:42;;;;-1:-1:-1;20056:14:0;;;;;;;20028:42;:54;;;;;20074:8;20028:54;:88;;;;-1:-1:-1;;;;;;20087:19:0;;;;;;:11;:19;;;;;:29;;;;;;20086:30;20028:88;:123;;;;-1:-1:-1;20147:4:0;;-1:-1:-1;;;;;20134:17:0;;;20147:4;;20134:17;20028:123;:150;;;;;20168:10;;20155:9;;:23;;20028:150;:168;;;;;20182:14;20028:168;:185;;;;-1:-1:-1;20201:12:0;;;;;;;20200:13;20028:185;20021:192;19781:440;-1:-1:-1;;;;;;19781:440:0:o;17749:1214::-;6270:4;6259:8;;:15;;;;;;;;;;;;;;;;;;17820:20:::1;17843:82;17923:1;17844:73;17906:10;;17844:57;17886:14;;17844:37;17868:12;;17844:19;17861:1;17844:12;;:16;;:19;;;;:::i;:::-;:23:::0;::::1;:37::i;17843:82::-;17820:105;;17936:32;17971:42;18000:12;17971:24;17982:12;;17971:6;:10;;:24;;;;:::i;:42::-;17936:77:::0;-1:-1:-1;18024:14:0::1;18041:36;:6:::0;17936:77;18041:10:::1;:36::i;:::-;18024:53:::0;-1:-1:-1;18113:21:0::1;18145:24;18024:53:::0;18145:16:::1;:24::i;:::-;18180:20;18203:41;:21;18229:14:::0;18203:25:::1;:41::i;:::-;18180:64;;18255:19;18276:48;18293:30;18310:12;;18293;:16;;:30;;;;:::i;:::-;18276:12:::0;;:16:::1;:48::i;:::-;18255:69;;18335:29;18367;18383:12;;18367:11;:15;;:29;;;;:::i;:::-;18335:61:::0;-1:-1:-1;18410:34:0;;18407:123:::1;;18508:18;::::0;18446:81:::1;::::0;18459:24;;18485:21;;-1:-1:-1;;;;;18508:18:0::1;18446:12;:81::i;:::-;18589:12;::::0;18540:23:::1;::::0;18566:36:::1;::::0;:18:::1;:11:::0;18582:1:::1;18566:15;:18::i;:36::-;18540:62:::0;-1:-1:-1;18616:19:0;;18613:79:::1;;18645:18;::::0;18637:53:::1;::::0;-1:-1:-1;;;;;18645:18:0;;::::1;::::0;18637:53;::::1;;;::::0;18674:15;;18645:18:::1;18637:53:::0;18645:18;18637:53;18674:15;18645:18;18637:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;18613:79;18749:10;::::0;18702:21:::1;::::0;18726:34:::1;::::0;:18:::1;:11:::0;18742:1:::1;18726:15;:18::i;:34::-;18702:58:::0;-1:-1:-1;18774:17:0;;18771:73:::1;;18801:16;::::0;18793:49:::1;::::0;-1:-1:-1;;;;;18801:16:0;;::::1;::::0;18793:49;::::1;;;::::0;18828:13;;18801:16:::1;18793:49:::0;18801:16;18793:49;18828:13;18801:16;18793:49;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;18771:73;18857:21;:34:::0;18854:102:::1;;18901:20;::::0;18893:61:::1;::::0;-1:-1:-1;;;;;18901:20:0;;::::1;::::0;18932:21:::1;18893:61:::0;::::1;;;::::0;18901:20:::1;18893:61:::0;18901:20;18893:61;18932:21;18901:20;18893:61;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;18854:102;-1:-1:-1::0;;6279:8:0;:16;;-1:-1:-1;;6279:16:0;;;-1:-1:-1;;;;;;;;17749:1214:0:o;22540:329::-;-1:-1:-1;;;;;22642:19:0;;22619:7;22642:19;;;:11;:19;;;;;:25;;;;;;;:57;;-1:-1:-1;;;;;;22671:22:0;;;;;;:11;:22;;;;;:28;;;;;;22642:57;22639:100;;;22708:11;;:29;;22732:3;22708:15;:29::i;:::-;22701:36;;;;22639:100;22765:4;;-1:-1:-1;;;;;22765:4:0;;;22752:17;;;;22749:38;;-1:-1:-1;22778:7:0;;22771:14;;22749:38;22810:4;;-1:-1:-1;;;;;22810:4:0;;;22800:14;;;;22797:36;;-1:-1:-1;22823:8:0;;22816:15;;22797:36;-1:-1:-1;22850:11:0;;22540:329;;;;:::o;19339:434::-;19429:16;;;19443:1;19429:16;;;;;;;;19405:21;;19429:16;;;;;;;;;;-1:-1:-1;19429:16:0;19405:40;;19474:4;19456;19461:1;19456:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19456:23:0;;;:7;;;;;;;;;;:23;;;;19500:6;;:13;;;-1:-1:-1;;;19500:13:0;;;;:6;;;;;:11;;:13;;;;;19456:7;;19500:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19490:4;19495:1;19490:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19490:23:0;;;:7;;;;;;;;;:23;19556:6;;19524:53;;19541:4;;19556:6;19565:11;19524:8;:53::i;:::-;19588:6;;:177;;-1:-1:-1;;;19588:177:0;;-1:-1:-1;;;;;19588:6:0;;;;:57;;:177;;19660:11;;19588:6;;19702:4;;19729;;19749:15;;19588:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:548:1;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;1858:180::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;-1:-1:-1;2009:23:1;;1858:180;-1:-1:-1;1858:180:1:o;2043:247::-;2102:6;2155:2;2143:9;2134:7;2130:23;2126:32;2123:52;;;2171:1;2168;2161:12;2123:52;2210:9;2197:23;2229:31;2254:5;2229:31;:::i;2484:316::-;2561:6;2569;2577;2630:2;2618:9;2609:7;2605:23;2601:32;2598:52;;;2646:1;2643;2636:12;2598:52;-1:-1:-1;;2669:23:1;;;2739:2;2724:18;;2711:32;;-1:-1:-1;2790:2:1;2775:18;;;2762:32;;2484:316;-1:-1:-1;2484:316:1:o;2805:118::-;2891:5;2884:13;2877:21;2870:5;2867:32;2857:60;;2913:1;2910;2903:12;2928:382;2993:6;3001;3054:2;3042:9;3033:7;3029:23;3025:32;3022:52;;;3070:1;3067;3060:12;3022:52;3109:9;3096:23;3128:31;3153:5;3128:31;:::i;:::-;3178:5;-1:-1:-1;3235:2:1;3220:18;;3207:32;3248:30;3207:32;3248:30;:::i;:::-;3297:7;3287:17;;;2928:382;;;;;:::o;3315:750::-;3407:6;3415;3423;3476:2;3464:9;3455:7;3451:23;3447:32;3444:52;;;3492:1;3489;3482:12;3444:52;3532:9;3519:23;3561:18;3602:2;3594:6;3591:14;3588:34;;;3618:1;3615;3608:12;3588:34;3656:6;3645:9;3641:22;3631:32;;3701:7;3694:4;3690:2;3686:13;3682:27;3672:55;;3723:1;3720;3713:12;3672:55;3763:2;3750:16;3789:2;3781:6;3778:14;3775:34;;;3805:1;3802;3795:12;3775:34;3860:7;3853:4;3843:6;3840:1;3836:14;3832:2;3828:23;3824:34;3821:47;3818:67;;;3881:1;3878;3871:12;3818:67;3912:4;3904:13;;;;-1:-1:-1;3936:6:1;-1:-1:-1;;3977:20:1;;3964:34;4007:28;3964:34;4007:28;:::i;:::-;4054:5;4044:15;;;3315:750;;;;;:::o;4070:241::-;4126:6;4179:2;4167:9;4158:7;4154:23;4150:32;4147:52;;;4195:1;4192;4185:12;4147:52;4234:9;4221:23;4253:28;4275:5;4253:28;:::i;4316:309::-;4381:6;4389;4442:2;4430:9;4421:7;4417:23;4413:32;4410:52;;;4458:1;4455;4448:12;4410:52;4494:9;4481:23;4471:33;;4554:2;4543:9;4539:18;4526:32;4567:28;4589:5;4567:28;:::i;4838:813::-;4933:6;4941;4949;4957;4965;5018:3;5006:9;4997:7;4993:23;4989:33;4986:53;;;5035:1;5032;5025:12;4986:53;5074:9;5061:23;5093:31;5118:5;5093:31;:::i;:::-;5143:5;-1:-1:-1;5200:2:1;5185:18;;5172:32;5213:33;5172:32;5213:33;:::i;:::-;5265:7;-1:-1:-1;5324:2:1;5309:18;;5296:32;5337:33;5296:32;5337:33;:::i;:::-;5389:7;-1:-1:-1;5448:2:1;5433:18;;5420:32;5461:33;5420:32;5461:33;:::i;:::-;5513:7;-1:-1:-1;5572:3:1;5557:19;;5544:33;5586;5544;5586;:::i;:::-;5638:7;5628:17;;;4838:813;;;;;;;;:::o;5656:388::-;5724:6;5732;5785:2;5773:9;5764:7;5760:23;5756:32;5753:52;;;5801:1;5798;5791:12;5753:52;5840:9;5827:23;5859:31;5884:5;5859:31;:::i;:::-;5909:5;-1:-1:-1;5966:2:1;5951:18;;5938:32;5979:33;5938:32;5979:33;:::i;6049:661::-;6171:6;6179;6187;6195;6203;6211;6219;6227;6280:3;6268:9;6259:7;6255:23;6251:33;6248:53;;;6297:1;6294;6287:12;6248:53;-1:-1:-1;;6320:23:1;;;6390:2;6375:18;;6362:32;;-1:-1:-1;6441:2:1;6426:18;;6413:32;;6492:2;6477:18;;6464:32;;-1:-1:-1;6543:3:1;6528:19;;6515:33;;-1:-1:-1;6595:3:1;6580:19;;6567:33;;-1:-1:-1;6647:3:1;6632:19;;6619:33;;-1:-1:-1;6699:3:1;6684:19;6671:33;;-1:-1:-1;6049:661:1;-1:-1:-1;6049:661:1:o;6975:329::-;7177:2;7159:21;;;7216:1;7196:18;;;7189:29;-1:-1:-1;;;7249:2:1;7234:18;;7227:36;7295:2;7280:18;;6975:329::o;8002:127::-;8063:10;8058:3;8054:20;8051:1;8044:31;8094:4;8091:1;8084:15;8118:4;8115:1;8108:15;8134:168;8207:9;;;8238;;8255:15;;;8249:22;;8235:37;8225:71;;8276:18;;:::i;8307:217::-;8347:1;8373;8363:132;;8417:10;8412:3;8408:20;8405:1;8398:31;8452:4;8449:1;8442:15;8480:4;8477:1;8470:15;8363:132;-1:-1:-1;8509:9:1;;8307:217::o;8951:127::-;9012:10;9007:3;9003:20;9000:1;8993:31;9043:4;9040:1;9033:15;9067:4;9064:1;9057:15;9083:135;9122:3;9143:17;;;9140:43;;9163:18;;:::i;:::-;-1:-1:-1;9210:1:1;9199:13;;9083:135::o;9985:245::-;10052:6;10105:2;10093:9;10084:7;10080:23;10076:32;10073:52;;;10121:1;10118;10111:12;10073:52;10153:9;10147:16;10172:28;10194:5;10172:28;:::i;12079:128::-;12146:9;;;12167:11;;;12164:37;;;12181:18;;:::i;12824:306::-;12912:6;12920;12928;12981:2;12969:9;12960:7;12956:23;12952:32;12949:52;;;12997:1;12994;12987:12;12949:52;13026:9;13020:16;13010:26;;13076:2;13065:9;13061:18;13055:25;13045:35;;13120:2;13109:9;13105:18;13099:25;13089:35;;12824:306;;;;;:::o;13135:125::-;13200:9;;;13221:10;;;13218:36;;;13234:18;;:::i;16982:251::-;17052:6;17105:2;17093:9;17084:7;17080:23;17076:32;17073:52;;;17121:1;17118;17111:12;17073:52;17153:9;17147:16;17172:31;17197:5;17172:31;:::i;17238:980::-;17500:4;17548:3;17537:9;17533:19;17579:6;17568:9;17561:25;17605:2;17643:6;17638:2;17627:9;17623:18;17616:34;17686:3;17681:2;17670:9;17666:18;17659:31;17710:6;17745;17739:13;17776:6;17768;17761:22;17814:3;17803:9;17799:19;17792:26;;17853:2;17845:6;17841:15;17827:29;;17874:1;17884:195;17898:6;17895:1;17892:13;17884:195;;;17963:13;;-1:-1:-1;;;;;17959:39:1;17947:52;;18054:15;;;;18019:12;;;;17995:1;17913:9;17884:195;;;-1:-1:-1;;;;;;;18135:32:1;;;;18130:2;18115:18;;18108:60;-1:-1:-1;;;18199:3:1;18184:19;18177:35;18096:3;17238:980;-1:-1:-1;;;17238:980:1:o

Swarm Source

ipfs://b710d0e623ff49ad6fa2389ded281ac005e726391708d8e8e2bdf5fb6e8b0102
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.