ETH Price: $3,470.52 (+0.19%)

Token

Xpress (XPRS)
 

Overview

Max Total Supply

100,000,000 XPRS

Holders

70

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
331,433.310101736 XPRS

Value
$0.00
0x02880854FD5AD6998D944A14fE58a11a81ADDf1E
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:
Xpress

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-31
*/

/*
https://t.me/xprsportal
https://twitter.com/Xprs_eth
https://xprs.ai/
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;


library SafeMath {

    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

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

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

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

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

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

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

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

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

abstract contract Ownable {
    address internal owner;
    constructor(address _owner) {owner = _owner;}
    modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;}
    function isOwner(address account) public view returns (bool) {return account == owner;}
    function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}
    event OwnershipTransferred(address owner);
}

interface IFactory{
        function createPair(address tokenA, address tokenB) external returns (address pair);
        function getPair(address tokenA, address tokenB) external view returns (address pair);
}

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
}

contract Xpress is IERC20, Ownable {
    using SafeMath for uint256;
    event manualClaimExecuted(address indexed toWallet, uint256 amount);
    event autoClaimExecuted(address indexed toWallet, uint256 amount);
    string private constant _name = 'Xpress';
    string private constant _symbol = 'XPRS';
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 100000000 * (10 ** _decimals);
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) private isBot;
    mapping (address => uint256) private _refBlockNumber;
    mapping (address => uint256) private _totalClaims;
    mapping (uint256 => uint256) private _totalRewards;
    uint256 private _totalRewardsTemp = 1;
    uint256 private _lastTradeTime;
    uint256 private _contractActualBalance;
    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping;
    uint256 swapAmount = 1;
    uint256 private swapThreshold = ( _totalSupply * 1000 ) / 100000;
    uint256 private minTokenAmount = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 50;
    uint256 private rewardFee = 50;
    uint256 private burnFee = 0;
    uint256 private totalFee = 3000;
    uint256 private sellFee = 3000;
    uint256 private transferFee = 0;
    uint256 private denominator = 10000;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal reward_receiver = 0x8d6d315696924d3E2EB0594346EE4A46557A6d2A;
    address internal marketing_receiver = 0x51dEE5503284E0CA9a51cE69be99b476F43a13aF;
    address internal liquidity_receiver = 0x51dEE5503284E0CA9a51cE69be99b476F43a13aF;
    address internal team_wallet = 0x89F215DA36Ee0BBF2E817eCFC488887cbdcb9d8a;
    address internal cex_wallet = 0x51058f915B5f2F8184b2760Fc5C84d6FE321fAf6;
    address internal infl_wallet = 0xb9817c35B61CE5E59F7Fb147D5c0cd3a49Ce1133;
    uint256 public _maxTxAmount = ( _totalSupply * 200 ) / 10000;
    uint256 public _maxSellAmount = ( _totalSupply * 300 ) / 10000;
    uint256 public _maxWalletToken = ( _totalSupply * 300 ) / 10000;

    constructor() Ownable(msg.sender) {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router; pair = _pair;
        isFeeExempt[address(this)] = true;
        isFeeExempt[liquidity_receiver] = true;
        isFeeExempt[marketing_receiver] = true;
        isFeeExempt[reward_receiver] = true;
        isFeeExempt[team_wallet] = true;
        isFeeExempt[cex_wallet] = true;
        isFeeExempt[infl_wallet] = true;
        isFeeExempt[msg.sender] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}
    function name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    function decimals() public pure returns (uint8) {return _decimals;}
    function startTrading() external onlyOwner {tradingAllowed = true;}
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function setisExempt(address _address, bool _enabled) external onlyOwner {isFeeExempt[_address] = _enabled;}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function totalSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}

    function shouldContractSwap(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= minTokenAmount;
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return !swapping && swapEnabled && tradingAllowed && aboveMin && !isFeeExempt[sender] && recipient == pair && swapTimes >= swapAmount && aboveThreshold;
    }

    function setContractSwapSettings(uint256 _swapAmount, uint256 _swapThreshold, uint256 _minTokenAmount) external onlyOwner {
        swapAmount = _swapAmount; swapThreshold = _totalSupply.mul(_swapThreshold).div(uint256(100000));
        minTokenAmount = _totalSupply.mul(_minTokenAmount).div(uint256(100000));
    }

    function setTransactionRequirements(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _reward, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        liquidityFee = _liquidity; marketingFee = _marketing; burnFee = _burn; rewardFee = _reward; totalFee = _total; sellFee = _sell; transferFee = _trans;
        require(totalFee <= denominator.div(1) && sellFee <= denominator.div(1) && transferFee <= denominator.div(1), "totalFee and sellFee cannot be more than 20%");
    }

    function setTransactionLimits(uint256 _buy, uint256 _sell, uint256 _wallet) external onlyOwner {
        uint256 newTx = _totalSupply.mul(_buy).div(10000); uint256 newTransfer = _totalSupply.mul(_sell).div(10000); uint256 newWallet = _totalSupply.mul(_wallet).div(10000);
        _maxTxAmount = newTx; _maxSellAmount = newTransfer; _maxWalletToken = newWallet;
        uint256 limit = totalSupply().mul(5).div(1000);
        require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%");
    }

    function setInternalAddresses(address _marketing, address _liquidity, address _reward) external onlyOwner {
        marketing_receiver = _marketing; liquidity_receiver = _liquidity; reward_receiver = _reward;
        isFeeExempt[_marketing] = true; isFeeExempt[_liquidity] = true; isFeeExempt[_reward] = true;
    }

    function setisBot(address[] calldata addresses, bool _enabled) external onlyOwner {
        for(uint i=0; i < addresses.length; i++){
        isBot[addresses[i]] = _enabled; }
    }

    function manualSwap() external onlyOwner {
        swapAndLiquify(swapThreshold);
    }

    function rescueERC20(address _address, uint256 percent) external onlyOwner {
        uint256 _amount = IERC20(_address).balanceOf(address(this)).mul(percent).div(100);
        IERC20(_address).transfer(reward_receiver, _amount);
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(rewardFee)).mul(2);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(tokens);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee);
        if(marketingAmt > 0){payable(marketing_receiver).transfer(marketingAmt);}
        uint256 rewardAmt = unitBalance.mul(2).mul(rewardFee);
        _totalRewardsTemp = _totalRewardsTemp.add(rewardAmt);
        uint256 oldContractBalance = _contractActualBalance;
        _contractActualBalance = oldContractBalance.add(rewardAmt);
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        _approve(address(this), address(router), tokenAmount);
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp);
    }

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

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

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(getTotalFee(sender, recipient) > 0){
        uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        if(burnFee > uint256(0) && getTotalFee(sender, recipient) > burnFee){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));}
        return amount.sub(feeAmount);} return amount;
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "tradingAllowed");}
        if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD)){
        require((_balances[recipient].add(amount)) <= _maxWalletToken, "Exceeds maximum wallet amount.");}
        if(sender != pair){require(amount <= _maxSellAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");}
        require(amount <= _maxTxAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");
        if(recipient == pair && !isFeeExempt[sender]){swapTimes += uint256(1);}
        if(shouldContractSwap(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);}
        uint256 oldBalanceSender = _balances[sender];
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        uint256 oldBalanceRecipient = _balances[recipient];
        _balances[recipient] = _balances[recipient].add(amountReceived);
        _totalRewards[block.number] = _totalRewardsTemp;
        if(sender == pair){autoClaim(recipient, oldBalanceRecipient);}
        if(recipient == pair){autoClaim(sender, oldBalanceSender);}
        if(recipient != pair && sender != pair){autoClaim(recipient, oldBalanceRecipient);autoClaim(sender, oldBalanceSender);}
        _refBlockNumber[sender] = block.number;
        _refBlockNumber[recipient] = block.number;
        _lastTradeTime = block.timestamp;
        emit Transfer(sender, recipient, amountReceived);
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function manualClaim () public {
        uint256 refBlock = _refBlockNumber[msg.sender];
        address walletAddress = msg.sender;
        uint256 walletBalance = _balances[msg.sender];
        uint256 balanceToWorkWith = _totalRewardsTemp.sub(_totalRewards[refBlock]);
        uint256 amountToClaim;
        if (balanceToWorkWith > uint256(0)) {
            amountToClaim = balanceToWorkWith.mul(walletBalance).div(_totalSupply);
        } else {
            amountToClaim = 0;
        }
        if (address(this).balance > amountToClaim && amountToClaim > uint256(0)) {
            payable(walletAddress).transfer(amountToClaim);
            _refBlockNumber[walletAddress] = block.number;
            uint256 oldClaim = _totalClaims[walletAddress];
            _totalClaims[walletAddress] = oldClaim.add(amountToClaim);
            uint256 oldContractBalance = _contractActualBalance;
            _contractActualBalance = oldContractBalance.sub(amountToClaim);
            emit manualClaimExecuted(walletAddress, amountToClaim);
        }
        _totalRewards[block.number] = _totalRewardsTemp;
    }

    function autoClaim (address walletAddress, uint256 walletBalance) private {
        uint256 refBlock = _refBlockNumber[walletAddress];
        uint256 balanceToWorkWith = _totalRewardsTemp.sub(_totalRewards[refBlock]);
        uint256 amountToClaim;
        if (balanceToWorkWith > uint256(0) && walletAddress != DEAD) {
            amountToClaim = balanceToWorkWith.mul(walletBalance).div(_totalSupply);
        } else {
            amountToClaim = 0;
        }
        if (address(this).balance > amountToClaim && amountToClaim > uint256(0)) {
            payable(walletAddress).transfer(amountToClaim);
            uint256 oldClaim = _totalClaims[walletAddress];
            _totalClaims[walletAddress] = oldClaim.add(amountToClaim);
            uint256 oldContractBalance = _contractActualBalance;
            _contractActualBalance = oldContractBalance.sub(amountToClaim);
            emit autoClaimExecuted(walletAddress, amountToClaim);
        }
    }

    function setBuyBlockNumber (address _address) external onlyOwner {
        _refBlockNumber[_address] = block.number;
        _totalRewards[block.number] = _totalRewardsTemp;
    }

    function checkRewardBalance(address walletAddress) public view returns(uint256) {
        uint256 refBlock = _refBlockNumber[walletAddress];
        uint256 walletBalance = _balances[walletAddress];
        uint256 balanceToWorkWith = _totalRewardsTemp.sub(_totalRewards[refBlock]);
        uint256 rewardBalance;
        if (walletBalance > uint256(0)) {
          rewardBalance = balanceToWorkWith.mul(walletBalance).div(_totalSupply);
        } else {
          rewardBalance = 0;
        }
        return rewardBalance;
    }

    function emergencyFixTotalRewardsTemp (uint256 amount) external onlyOwner {
        _totalRewardsTemp = amount;
    }

    function withdrawStuckEth() external onlyOwner {
        (bool success,) = address(msg.sender).call{value: address(this).balance}("");
        require(success, "failed to withdraw");
    }

    function withdrawEthAboveRewardBalance() external {
        //withdraw unneeded and unused ETH from contract balance, it does not have effect on rewardBalance
        require(address(msg.sender) == reward_receiver);
        uint256 contractBalance = address(this).balance;
        uint256 amountToSend = contractBalance.sub(_contractActualBalance);
        (bool success,) = address(msg.sender).call{value: amountToSend}("");
        require(success, "failed to withdraw");
    }

    function withdrawEthFromContractIfTokenDies() external {
        //withdraw ETH balance from contract if the token does not have trade for more than one week
        require(address(msg.sender) == reward_receiver);
        uint256 currentTime = block.timestamp;
        _lastTradeTime = block.timestamp;
        uint256 diffTime = currentTime.sub(_lastTradeTime);
        uint256 oneWeek = uint256(604800);
        require(diffTime > oneWeek);
        (bool success,) = address(msg.sender).call{value: address(this).balance}("");
        require(success, "failed to withdraw");
    }

    function getClaimsTotal (address walletAddress) public view returns(uint256) {
        return _totalClaims[walletAddress];
    }

    function getReferenceBlock (address walletAddress) public view returns(uint256) {
        return _refBlockNumber[walletAddress];
    }

    function getCurrentBlock () public view returns(uint256) {
        return block.number;
    }

    function getTotalRewardsCollected () public view returns(uint256) {
        return _totalRewardsTemp;
    }

    function getContractActualBalance () public view returns(uint256) {
        return _contractActualBalance;
    }
}

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":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"toWallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"autoClaimExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"toWallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualClaimExecuted","type":"event"},{"inputs":[],"name":"_maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"walletAddress","type":"address"}],"name":"checkRewardBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"emergencyFixTotalRewardsTemp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"walletAddress","type":"address"}],"name":"getClaimsTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getContractActualBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"walletAddress","type":"address"}],"name":"getReferenceBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalRewardsCollected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setBuyBlockNumber","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_minTokenAmount","type":"uint256"}],"name":"setContractSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_liquidity","type":"address"},{"internalType":"address","name":"_reward","type":"address"}],"name":"setInternalAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setTransactionLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_reward","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setTransactionRequirements","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawEthAboveRewardBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawEthFromContractIfTokenDies","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a6200057b565b62000022906305f5e10062000593565b60018181556009819055600d805461ffff60a01b1916600160a81b179055601055620186a09062000056906103e862000593565b620000629190620005ad565b601155620186a0600154600a6200007a919062000593565b620000869190620005ad565b60125560006013819055603260148190556015556016819055610bb86017819055601855601955612710601a819055601b80546001600160a01b0319908116738d6d315696924d3e2eb0594346ee4a46557a6d2a17909155601c805482167351dee5503284e0ca9a51ce69be99b476f43a13af908117909155601d805483169091179055601e805482167389f215da36ee0bbf2e817ecfc488887cbdcb9d8a179055601f805482167351058f915b5f2f8184b2760fc5c84d6fe321faf61790556020805490911673b9817c35b61ce5e59f7fb147d5c0cd3a49ce1133179055600154620001759060c862000593565b620001819190620005ad565b60215561271060015461012c62000199919062000593565b620001a59190620005ad565b60225561271060015461012c620001bd919062000593565b620001c99190620005ad565b602355348015620001d957600080fd5b50600080546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa15801562000241573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002679190620005d0565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002db9190620005d0565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000329573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034f9190620005d0565b600c80546001600160a01b038581166001600160a01b031992831617909255600d80548484169216919091179055306000908152600460209081526040808320805460ff199081166001908117909255601d54861685528285208054821683179055601c54861685528285208054821683179055601b54861685528285208054821683179055601e54861685528285208054821683179055601f54861685528285208054821683179055835490951684528184208054861682179055338085528285208054909616821790955554600283528184208190559051908152939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050620005fb565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004bd578160001904821115620004a157620004a162000466565b80851615620004af57918102915b93841c939080029062000481565b509250929050565b600082620004d65750600162000575565b81620004e55750600062000575565b8160018114620004fe5760028114620005095762000529565b600191505062000575565b60ff8411156200051d576200051d62000466565b50506001821b62000575565b5060208310610133831016604e8410600b84101617156200054e575081810a62000575565b6200055a83836200047c565b806000190482111562000571576200057162000466565b0290505b92915050565b60006200058c60ff841683620004c5565b9392505050565b808202811582820484141762000575576200057562000466565b600082620005cb57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620005e357600080fd5b81516001600160a01b03811681146200058c57600080fd5b61258e806200060b6000396000f3fe6080604052600436106102295760003560e01c80637b0e79df1161012357806395d89b41116100ab578063c9b5e9711161006f578063c9b5e9711461068b578063cb7f97d7146106ab578063dd62ed3e146106cb578063f2fde38b14610711578063fa72370e1461073157600080fd5b806395d89b41146105de5780639cc353511461060b5780639d8740cb1461062b578063a8aa1b311461064b578063a9059cbb1461066b57600080fd5b806384e9bd42116100f257806384e9bd4214610542578063893d20e8146105575780638cd4426d146105895780639213c358146105a95780639359cae4146105c957600080fd5b80637b0e79df146104e15780637cca52fe146105015780637d1db4a5146105175780637fa787ba1461052d57600080fd5b8063313ce567116101b15780635b517b77116101755780635b517b7714610416578063672d5d3b1461044c57806370a082311461045f57806378109e541461049557806378f3f1f2146104ab57600080fd5b8063313ce567146103755780633f4218e01461039157806348ff2b8b146103c157806351bc3c85146103e1578063542759d3146103f657600080fd5b806318160ddd116101f857806318160ddd146102dc578063229b6a5e146102f157806323b872dd14610311578063293230b8146103315780632f54bf6e1461034657600080fd5b806306fdde0314610235578063095ea7b31461027657806309e6fd13146102a657806317baeaa3146102c557600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5060408051808201909152600681526558707265737360d01b60208201525b60405161026d91906120c3565b60405180910390f35b34801561028257600080fd5b50610296610291366004612126565b610746565b604051901515815260200161026d565b3480156102b257600080fd5b50600b545b60405190815260200161026d565b3480156102d157600080fd5b506102da61075d565b005b3480156102e857600080fd5b506102b7610800565b3480156102fd57600080fd5b506102da61030c366004612160565b610871565b34801561031d57600080fd5b5061029661032c3660046121e6565b610912565b34801561033d57600080fd5b506102da61097c565b34801561035257600080fd5b50610296610361366004612227565b6000546001600160a01b0391821691161490565b34801561038157600080fd5b506040516009815260200161026d565b34801561039d57600080fd5b506102966103ac366004612227565b60046020526000908152604090205460ff1681565b3480156103cd57600080fd5b506102da6103dc366004612244565b6109bb565b3480156103ed57600080fd5b506102da610a10565b34801561040257600080fd5b506102da610411366004612227565b610a47565b34801561042257600080fd5b506102b7610431366004612227565b6001600160a01b031660009081526007602052604090205490565b34801561045857600080fd5b50436102b7565b34801561046b57600080fd5b506102b761047a366004612227565b6001600160a01b031660009081526002602052604090205490565b3480156104a157600080fd5b506102b760235481565b3480156104b757600080fd5b506102b76104c6366004612227565b6001600160a01b031660009081526006602052604090205490565b3480156104ed57600080fd5b506102da6104fc36600461227d565b610aa1565b34801561050d57600080fd5b506102b760225481565b34801561052357600080fd5b506102b760215481565b34801561053957600080fd5b506102da610ad0565b34801561054e57600080fd5b506102da610b65565b34801561056357600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161026d565b34801561059557600080fd5b506102da6105a4366004612126565b610cc7565b3480156105b557600080fd5b506102da6105c4366004612296565b610de8565b3480156105d557600080fd5b506102da610e8e565b3480156105ea57600080fd5b506040805180820190915260048152635850525360e01b6020820152610260565b34801561061757600080fd5b506102da6106263660046122d6565b610f31565b34801561063757600080fd5b506102da6106463660046122d6565b611066565b34801561065757600080fd5b50600d54610571906001600160a01b031681565b34801561067757600080fd5b50610296610686366004612126565b6110cc565b34801561069757600080fd5b506102b76106a6366004612227565b6110d9565b3480156106b757600080fd5b506102da6106c6366004612302565b61114a565b3480156106d757600080fd5b506102b76106e636600461234e565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561071d57600080fd5b506102da61072c366004612227565b611241565b34801561073d57600080fd5b506009546102b7565b60006107533384846112bf565b5060015b92915050565b601b546001600160a01b0316331461077457600080fd5b600b5447906000906107879083906113e3565b604051909150600090339083908381818185875af1925050503d80600081146107cc576040519150601f19603f3d011682016040523d82523d6000602084013e6107d1565b606091505b50509050806107fb5760405162461bcd60e51b81526004016107f29061237c565b60405180910390fd5b505050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead60009081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc54600154919261086c92909161086691906113e3565b906113e3565b905090565b6000546001600160a01b0316331461089b5760405162461bcd60e51b81526004016107f2906123a8565b60005b8281101561090c5781600560008686858181106108bd576108bd6123c8565b90506020020160208101906108d29190612227565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610904816123f4565b91505061089e565b50505050565b600061091f8484846113ef565b610971843361096c85604051806060016040528060288152602001612531602891396001600160a01b038a16600090815260036020908152604080832033845290915290205491906119fa565b6112bf565b5060015b9392505050565b6000546001600160a01b031633146109a65760405162461bcd60e51b81526004016107f2906123a8565b600d805460ff60a01b1916600160a01b179055565b6000546001600160a01b031633146109e55760405162461bcd60e51b81526004016107f2906123a8565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610a3a5760405162461bcd60e51b81526004016107f2906123a8565b610a45601154611a26565b565b6000546001600160a01b03163314610a715760405162461bcd60e51b81526004016107f2906123a8565b6001600160a01b031660009081526006602090815260408083204390819055600954908452600890925290912055565b6000546001600160a01b03163314610acb5760405162461bcd60e51b81526004016107f2906123a8565b600955565b6000546001600160a01b03163314610afa5760405162461bcd60e51b81526004016107f2906123a8565b604051600090339047908381818185875af1925050503d8060008114610b3c576040519150601f19603f3d011682016040523d82523d6000602084013e610b41565b606091505b5050905080610b625760405162461bcd60e51b81526004016107f29061237c565b50565b33600081815260066020908152604080832054600283528184205481855260089093529083205460095491949391610b9c916113e3565b905060008115610bc457600154610bbd90610bb78486611b49565b90611b55565b9050610bc8565b5060005b8047118015610bd75750600081115b15610cad576040516001600160a01b0385169082156108fc029083906000818181858888f19350505050158015610c12573d6000803e3d6000fd5b506001600160a01b03841660009081526006602090815260408083204390556007909152902054610c438183611b61565b6001600160a01b038616600090815260076020526040902055600b54610c6981846113e3565b600b556040518381526001600160a01b038716907f5679e527d8badc61abb774e7ae4de25ed1abe030124c5573ad120e5a9684b6fb9060200160405180910390a250505b505060095443600090815260086020526040902055505050565b6000546001600160a01b03163314610cf15760405162461bcd60e51b81526004016107f2906123a8565b6040516370a0823160e01b8152306004820152600090610d6f90606490610bb79085906001600160a01b038816906370a0823190602401602060405180830381865afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d69919061240d565b90611b49565b601b5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925084169063a9059cbb906044016020604051808303816000875af1158015610dc4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090c9190612426565b6000546001600160a01b03163314610e125760405162461bcd60e51b81526004016107f2906123a8565b601c80546001600160a01b039485166001600160a01b03199182168117909255601d805494861694821685179055601b80549390951692168217909355600092835260046020526040808420805460ff199081166001908117909255938552818520805485168217905591845290922080549091169091179055565b601b546001600160a01b03163314610ea557600080fd5b42600a8190556000610eb782806113e3565b905062093a80808211610ec957600080fd5b604051600090339047908381818185875af1925050503d8060008114610f0b576040519150601f19603f3d011682016040523d82523d6000602084013e610f10565b606091505b505090508061090c5760405162461bcd60e51b81526004016107f29061237c565b6000546001600160a01b03163314610f5b5760405162461bcd60e51b81526004016107f2906123a8565b6000610f78612710610bb786600154611b4990919063ffffffff16565b90506000610f97612710610bb786600154611b4990919063ffffffff16565b90506000610fb6612710610bb786600154611b4990919063ffffffff16565b60218490556022839055602381905590506000610fdc6103e8610bb76005610d69610800565b9050808410158015610fee5750808310155b8015610ffa5750808210155b61105d5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016107f2565b50505050505050565b6000546001600160a01b031633146110905760405162461bcd60e51b81526004016107f2906123a8565b60108390556001546110ab90620186a090610bb79085611b49565b6011556001546110c490620186a090610bb79084611b49565b601255505050565b60006107533384846113ef565b6001600160a01b0381166000908152600660209081526040808320546002835281842054818552600890935290832054600954919291849161111b91906113e3565b90506000821561113d5760015461113690610bb78486611b49565b9050611141565b5060005b95945050505050565b6000546001600160a01b031633146111745760405162461bcd60e51b81526004016107f2906123a8565b6013879055601486905560168590556015849055601783905560188290556019819055601a546111a5906001611b55565b601754111580156111c55750601a546111bf906001611b55565b60185411155b80156111e05750601a546111da906001611b55565b60195411155b61105d5760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b60648201526084016107f2565b6000546001600160a01b0316331461126b5760405162461bcd60e51b81526004016107f2906123a8565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166113215760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107f2565b6001600160a01b0382166113825760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107f2565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006109758284612443565b6001600160a01b0383166114535760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107f2565b6001600160a01b0382166114b55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107f2565b6001600160a01b0383166000908152600260205260409020548111156115375760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016107f2565b6001600160a01b03831660009081526004602052604090205460ff1615801561157957506001600160a01b03821660009081526004602052604090205460ff16155b156115c857600d54600160a01b900460ff166115c85760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016107f2565b6001600160a01b03831660009081526004602052604090205460ff1615801561160a57506001600160a01b03821660009081526004602052604090205460ff16155b80156116245750600d546001600160a01b03838116911614155b801561163b57506001600160a01b03821661dead14155b156116b4576023546001600160a01b0383166000908152600260205260409020546116669083611b61565b11156116b45760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016107f2565b600d546001600160a01b0384811691161461175557602254811115806116f257506001600160a01b03831660009081526004602052604090205460ff165b8061171557506001600160a01b03821660009081526004602052604090205460ff165b6117555760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016107f2565b6021548111158061177e57506001600160a01b03831660009081526004602052604090205460ff165b806117a157506001600160a01b03821660009081526004602052604090205460ff165b6117e15760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016107f2565b600d546001600160a01b03838116911614801561181757506001600160a01b03831660009081526004602052604090205460ff16155b15611835576001600e600082825461182f9190612456565b90915550505b611840838383611b6d565b1561185657611850601154611a26565b6000600e555b6001600160a01b03831660009081526002602052604090205461187981836113e3565b6001600160a01b03851660009081526002602052604081209190915561189f8585611c27565b6118a957826118b4565b6118b4858585611c6d565b6001600160a01b0385166000908152600260205260409020549091506118da8183611b61565b6001600160a01b03808716600090815260026020908152604080832094909455600954438352600890915292902091909155600d54811690871603611923576119238582611d74565b600d546001600160a01b0390811690861603611943576119438684611d74565b600d546001600160a01b0386811691161480159061196f5750600d546001600160a01b03878116911614155b156119885761197e8582611d74565b6119888684611d74565b6001600160a01b038087166000818152600660205260408082204390819055938916808352918190209390935542600a5591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119ea9086815260200190565b60405180910390a3505050505050565b60008184841115611a1e5760405162461bcd60e51b81526004016107f291906120c3565b505050900390565b600f805460ff19166001908117909155601554601454601354600093611a6093600293610d69939192611a5a928391611b61565b90611b61565b905047611a6c83611ec8565b6000611a7847836113e3565b90506000611a9b611a94601354866113e390919063ffffffff16565b8390611b55565b90506000611ab9601454610d69600285611b4990919063ffffffff16565b90508015611afd57601c546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611afb573d6000803e3d6000fd5b505b601554600090611b1290610d69856002611b49565b600954909150611b229082611b61565b600955600b54611b328183611b61565b600b555050600f805460ff19169055505050505050565b60006109758284612469565b60006109758284612480565b60006109758284612456565b60125460115430600090815260026020526040812054600f5491938510159211159060ff16158015611ba85750600d54600160a81b900460ff165b8015611bbd5750600d54600160a01b900460ff165b8015611bc65750815b8015611beb57506001600160a01b03861660009081526004602052604090205460ff16155b8015611c045750600d546001600160a01b038681169116145b8015611c145750601054600e5410155b8015611c1d5750805b9695505050505050565b6001600160a01b03821660009081526004602052604081205460ff161580156109755750506001600160a01b031660009081526004602052604090205460ff1615919050565b600080611c7a8585612022565b1115611d6d576000611c9d611c8f8686612022565b601a54610d69908690611b55565b30600090815260026020526040902054909150611cba9082611b61565b30600081815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d0b9085815260200190565b60405180910390a36000601654118015611d2f5750601654611d2d8686612022565b115b15611d5b57611d5b3061dead611d56601654610d69601a5489611b5590919063ffffffff16565b6113ef565b611d6583826113e3565b915050610975565b5092915050565b6001600160a01b0382166000908152600660209081526040808320548084526008909252822054600954919291611daa916113e3565b905060008082118015611dc857506001600160a01b03851661dead14155b15611de557600154611dde90610bb78487611b49565b9050611de9565b5060005b8047118015611df85750600081115b15611ec1576040516001600160a01b0386169082156108fc029083906000818181858888f19350505050158015611e33573d6000803e3d6000fd5b506001600160a01b038516600090815260076020526040902054611e578183611b61565b6001600160a01b038716600090815260076020526040902055600b54611e7d81846113e3565b600b556040518381526001600160a01b038816907fb6abcb8512e598975a6aac9ca015e70db50aea472c9a1af75606da0e89892ba39060200160405180910390a250505b5050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611efd57611efd6123c8565b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611f56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7a91906124a2565b81600181518110611f8d57611f8d6123c8565b6001600160a01b039283166020918202929092010152600c54611fb391309116846112bf565b600c5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611fec9085906000908690309042906004016124bf565b600060405180830381600087803b15801561200657600080fd5b505af115801561201a573d6000803e3d6000fd5b505050505050565b6001600160a01b03821660009081526005602052604081205460ff168061206157506001600160a01b03821660009081526005602052604090205460ff165b1561207b57601a546120749060646113e3565b9050610757565b600d546001600160a01b039081169083160361209a5750601854610757565b600d546001600160a01b03908116908416036120b95750601754610757565b5060195492915050565b600060208083528351808285015260005b818110156120f0578581018301518582016040015282016120d4565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610b6257600080fd5b6000806040838503121561213957600080fd5b823561214481612111565b946020939093013593505050565b8015158114610b6257600080fd5b60008060006040848603121561217557600080fd5b833567ffffffffffffffff8082111561218d57600080fd5b818601915086601f8301126121a157600080fd5b8135818111156121b057600080fd5b8760208260051b85010111156121c557600080fd5b602092830195509350508401356121db81612152565b809150509250925092565b6000806000606084860312156121fb57600080fd5b833561220681612111565b9250602084013561221681612111565b929592945050506040919091013590565b60006020828403121561223957600080fd5b813561097581612111565b6000806040838503121561225757600080fd5b823561226281612111565b9150602083013561227281612152565b809150509250929050565b60006020828403121561228f57600080fd5b5035919050565b6000806000606084860312156122ab57600080fd5b83356122b681612111565b925060208401356122c681612111565b915060408401356121db81612111565b6000806000606084860312156122eb57600080fd5b505081359360208301359350604090920135919050565b600080600080600080600060e0888a03121561231d57600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000806040838503121561236157600080fd5b823561236c81612111565b9150602083013561227281612111565b6020808252601290820152716661696c656420746f20776974686472617760701b604082015260600190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612406576124066123de565b5060010190565b60006020828403121561241f57600080fd5b5051919050565b60006020828403121561243857600080fd5b815161097581612152565b81810381811115610757576107576123de565b80820180821115610757576107576123de565b8082028115828204841417610757576107576123de565b60008261249d57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156124b457600080fd5b815161097581612111565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561250f5784516001600160a01b0316835293830193918301916001016124ea565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205745879111cc063afc8db834aefaf2b761c5a1c88cdb06059cbf79abe2fbc48364736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102295760003560e01c80637b0e79df1161012357806395d89b41116100ab578063c9b5e9711161006f578063c9b5e9711461068b578063cb7f97d7146106ab578063dd62ed3e146106cb578063f2fde38b14610711578063fa72370e1461073157600080fd5b806395d89b41146105de5780639cc353511461060b5780639d8740cb1461062b578063a8aa1b311461064b578063a9059cbb1461066b57600080fd5b806384e9bd42116100f257806384e9bd4214610542578063893d20e8146105575780638cd4426d146105895780639213c358146105a95780639359cae4146105c957600080fd5b80637b0e79df146104e15780637cca52fe146105015780637d1db4a5146105175780637fa787ba1461052d57600080fd5b8063313ce567116101b15780635b517b77116101755780635b517b7714610416578063672d5d3b1461044c57806370a082311461045f57806378109e541461049557806378f3f1f2146104ab57600080fd5b8063313ce567146103755780633f4218e01461039157806348ff2b8b146103c157806351bc3c85146103e1578063542759d3146103f657600080fd5b806318160ddd116101f857806318160ddd146102dc578063229b6a5e146102f157806323b872dd14610311578063293230b8146103315780632f54bf6e1461034657600080fd5b806306fdde0314610235578063095ea7b31461027657806309e6fd13146102a657806317baeaa3146102c557600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5060408051808201909152600681526558707265737360d01b60208201525b60405161026d91906120c3565b60405180910390f35b34801561028257600080fd5b50610296610291366004612126565b610746565b604051901515815260200161026d565b3480156102b257600080fd5b50600b545b60405190815260200161026d565b3480156102d157600080fd5b506102da61075d565b005b3480156102e857600080fd5b506102b7610800565b3480156102fd57600080fd5b506102da61030c366004612160565b610871565b34801561031d57600080fd5b5061029661032c3660046121e6565b610912565b34801561033d57600080fd5b506102da61097c565b34801561035257600080fd5b50610296610361366004612227565b6000546001600160a01b0391821691161490565b34801561038157600080fd5b506040516009815260200161026d565b34801561039d57600080fd5b506102966103ac366004612227565b60046020526000908152604090205460ff1681565b3480156103cd57600080fd5b506102da6103dc366004612244565b6109bb565b3480156103ed57600080fd5b506102da610a10565b34801561040257600080fd5b506102da610411366004612227565b610a47565b34801561042257600080fd5b506102b7610431366004612227565b6001600160a01b031660009081526007602052604090205490565b34801561045857600080fd5b50436102b7565b34801561046b57600080fd5b506102b761047a366004612227565b6001600160a01b031660009081526002602052604090205490565b3480156104a157600080fd5b506102b760235481565b3480156104b757600080fd5b506102b76104c6366004612227565b6001600160a01b031660009081526006602052604090205490565b3480156104ed57600080fd5b506102da6104fc36600461227d565b610aa1565b34801561050d57600080fd5b506102b760225481565b34801561052357600080fd5b506102b760215481565b34801561053957600080fd5b506102da610ad0565b34801561054e57600080fd5b506102da610b65565b34801561056357600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161026d565b34801561059557600080fd5b506102da6105a4366004612126565b610cc7565b3480156105b557600080fd5b506102da6105c4366004612296565b610de8565b3480156105d557600080fd5b506102da610e8e565b3480156105ea57600080fd5b506040805180820190915260048152635850525360e01b6020820152610260565b34801561061757600080fd5b506102da6106263660046122d6565b610f31565b34801561063757600080fd5b506102da6106463660046122d6565b611066565b34801561065757600080fd5b50600d54610571906001600160a01b031681565b34801561067757600080fd5b50610296610686366004612126565b6110cc565b34801561069757600080fd5b506102b76106a6366004612227565b6110d9565b3480156106b757600080fd5b506102da6106c6366004612302565b61114a565b3480156106d757600080fd5b506102b76106e636600461234e565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561071d57600080fd5b506102da61072c366004612227565b611241565b34801561073d57600080fd5b506009546102b7565b60006107533384846112bf565b5060015b92915050565b601b546001600160a01b0316331461077457600080fd5b600b5447906000906107879083906113e3565b604051909150600090339083908381818185875af1925050503d80600081146107cc576040519150601f19603f3d011682016040523d82523d6000602084013e6107d1565b606091505b50509050806107fb5760405162461bcd60e51b81526004016107f29061237c565b60405180910390fd5b505050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead60009081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc54600154919261086c92909161086691906113e3565b906113e3565b905090565b6000546001600160a01b0316331461089b5760405162461bcd60e51b81526004016107f2906123a8565b60005b8281101561090c5781600560008686858181106108bd576108bd6123c8565b90506020020160208101906108d29190612227565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610904816123f4565b91505061089e565b50505050565b600061091f8484846113ef565b610971843361096c85604051806060016040528060288152602001612531602891396001600160a01b038a16600090815260036020908152604080832033845290915290205491906119fa565b6112bf565b5060015b9392505050565b6000546001600160a01b031633146109a65760405162461bcd60e51b81526004016107f2906123a8565b600d805460ff60a01b1916600160a01b179055565b6000546001600160a01b031633146109e55760405162461bcd60e51b81526004016107f2906123a8565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610a3a5760405162461bcd60e51b81526004016107f2906123a8565b610a45601154611a26565b565b6000546001600160a01b03163314610a715760405162461bcd60e51b81526004016107f2906123a8565b6001600160a01b031660009081526006602090815260408083204390819055600954908452600890925290912055565b6000546001600160a01b03163314610acb5760405162461bcd60e51b81526004016107f2906123a8565b600955565b6000546001600160a01b03163314610afa5760405162461bcd60e51b81526004016107f2906123a8565b604051600090339047908381818185875af1925050503d8060008114610b3c576040519150601f19603f3d011682016040523d82523d6000602084013e610b41565b606091505b5050905080610b625760405162461bcd60e51b81526004016107f29061237c565b50565b33600081815260066020908152604080832054600283528184205481855260089093529083205460095491949391610b9c916113e3565b905060008115610bc457600154610bbd90610bb78486611b49565b90611b55565b9050610bc8565b5060005b8047118015610bd75750600081115b15610cad576040516001600160a01b0385169082156108fc029083906000818181858888f19350505050158015610c12573d6000803e3d6000fd5b506001600160a01b03841660009081526006602090815260408083204390556007909152902054610c438183611b61565b6001600160a01b038616600090815260076020526040902055600b54610c6981846113e3565b600b556040518381526001600160a01b038716907f5679e527d8badc61abb774e7ae4de25ed1abe030124c5573ad120e5a9684b6fb9060200160405180910390a250505b505060095443600090815260086020526040902055505050565b6000546001600160a01b03163314610cf15760405162461bcd60e51b81526004016107f2906123a8565b6040516370a0823160e01b8152306004820152600090610d6f90606490610bb79085906001600160a01b038816906370a0823190602401602060405180830381865afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d69919061240d565b90611b49565b601b5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925084169063a9059cbb906044016020604051808303816000875af1158015610dc4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090c9190612426565b6000546001600160a01b03163314610e125760405162461bcd60e51b81526004016107f2906123a8565b601c80546001600160a01b039485166001600160a01b03199182168117909255601d805494861694821685179055601b80549390951692168217909355600092835260046020526040808420805460ff199081166001908117909255938552818520805485168217905591845290922080549091169091179055565b601b546001600160a01b03163314610ea557600080fd5b42600a8190556000610eb782806113e3565b905062093a80808211610ec957600080fd5b604051600090339047908381818185875af1925050503d8060008114610f0b576040519150601f19603f3d011682016040523d82523d6000602084013e610f10565b606091505b505090508061090c5760405162461bcd60e51b81526004016107f29061237c565b6000546001600160a01b03163314610f5b5760405162461bcd60e51b81526004016107f2906123a8565b6000610f78612710610bb786600154611b4990919063ffffffff16565b90506000610f97612710610bb786600154611b4990919063ffffffff16565b90506000610fb6612710610bb786600154611b4990919063ffffffff16565b60218490556022839055602381905590506000610fdc6103e8610bb76005610d69610800565b9050808410158015610fee5750808310155b8015610ffa5750808210155b61105d5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016107f2565b50505050505050565b6000546001600160a01b031633146110905760405162461bcd60e51b81526004016107f2906123a8565b60108390556001546110ab90620186a090610bb79085611b49565b6011556001546110c490620186a090610bb79084611b49565b601255505050565b60006107533384846113ef565b6001600160a01b0381166000908152600660209081526040808320546002835281842054818552600890935290832054600954919291849161111b91906113e3565b90506000821561113d5760015461113690610bb78486611b49565b9050611141565b5060005b95945050505050565b6000546001600160a01b031633146111745760405162461bcd60e51b81526004016107f2906123a8565b6013879055601486905560168590556015849055601783905560188290556019819055601a546111a5906001611b55565b601754111580156111c55750601a546111bf906001611b55565b60185411155b80156111e05750601a546111da906001611b55565b60195411155b61105d5760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b60648201526084016107f2565b6000546001600160a01b0316331461126b5760405162461bcd60e51b81526004016107f2906123a8565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166113215760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107f2565b6001600160a01b0382166113825760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107f2565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006109758284612443565b6001600160a01b0383166114535760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107f2565b6001600160a01b0382166114b55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107f2565b6001600160a01b0383166000908152600260205260409020548111156115375760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016107f2565b6001600160a01b03831660009081526004602052604090205460ff1615801561157957506001600160a01b03821660009081526004602052604090205460ff16155b156115c857600d54600160a01b900460ff166115c85760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016107f2565b6001600160a01b03831660009081526004602052604090205460ff1615801561160a57506001600160a01b03821660009081526004602052604090205460ff16155b80156116245750600d546001600160a01b03838116911614155b801561163b57506001600160a01b03821661dead14155b156116b4576023546001600160a01b0383166000908152600260205260409020546116669083611b61565b11156116b45760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016107f2565b600d546001600160a01b0384811691161461175557602254811115806116f257506001600160a01b03831660009081526004602052604090205460ff165b8061171557506001600160a01b03821660009081526004602052604090205460ff165b6117555760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016107f2565b6021548111158061177e57506001600160a01b03831660009081526004602052604090205460ff165b806117a157506001600160a01b03821660009081526004602052604090205460ff165b6117e15760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016107f2565b600d546001600160a01b03838116911614801561181757506001600160a01b03831660009081526004602052604090205460ff16155b15611835576001600e600082825461182f9190612456565b90915550505b611840838383611b6d565b1561185657611850601154611a26565b6000600e555b6001600160a01b03831660009081526002602052604090205461187981836113e3565b6001600160a01b03851660009081526002602052604081209190915561189f8585611c27565b6118a957826118b4565b6118b4858585611c6d565b6001600160a01b0385166000908152600260205260409020549091506118da8183611b61565b6001600160a01b03808716600090815260026020908152604080832094909455600954438352600890915292902091909155600d54811690871603611923576119238582611d74565b600d546001600160a01b0390811690861603611943576119438684611d74565b600d546001600160a01b0386811691161480159061196f5750600d546001600160a01b03878116911614155b156119885761197e8582611d74565b6119888684611d74565b6001600160a01b038087166000818152600660205260408082204390819055938916808352918190209390935542600a5591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119ea9086815260200190565b60405180910390a3505050505050565b60008184841115611a1e5760405162461bcd60e51b81526004016107f291906120c3565b505050900390565b600f805460ff19166001908117909155601554601454601354600093611a6093600293610d69939192611a5a928391611b61565b90611b61565b905047611a6c83611ec8565b6000611a7847836113e3565b90506000611a9b611a94601354866113e390919063ffffffff16565b8390611b55565b90506000611ab9601454610d69600285611b4990919063ffffffff16565b90508015611afd57601c546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611afb573d6000803e3d6000fd5b505b601554600090611b1290610d69856002611b49565b600954909150611b229082611b61565b600955600b54611b328183611b61565b600b555050600f805460ff19169055505050505050565b60006109758284612469565b60006109758284612480565b60006109758284612456565b60125460115430600090815260026020526040812054600f5491938510159211159060ff16158015611ba85750600d54600160a81b900460ff165b8015611bbd5750600d54600160a01b900460ff165b8015611bc65750815b8015611beb57506001600160a01b03861660009081526004602052604090205460ff16155b8015611c045750600d546001600160a01b038681169116145b8015611c145750601054600e5410155b8015611c1d5750805b9695505050505050565b6001600160a01b03821660009081526004602052604081205460ff161580156109755750506001600160a01b031660009081526004602052604090205460ff1615919050565b600080611c7a8585612022565b1115611d6d576000611c9d611c8f8686612022565b601a54610d69908690611b55565b30600090815260026020526040902054909150611cba9082611b61565b30600081815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d0b9085815260200190565b60405180910390a36000601654118015611d2f5750601654611d2d8686612022565b115b15611d5b57611d5b3061dead611d56601654610d69601a5489611b5590919063ffffffff16565b6113ef565b611d6583826113e3565b915050610975565b5092915050565b6001600160a01b0382166000908152600660209081526040808320548084526008909252822054600954919291611daa916113e3565b905060008082118015611dc857506001600160a01b03851661dead14155b15611de557600154611dde90610bb78487611b49565b9050611de9565b5060005b8047118015611df85750600081115b15611ec1576040516001600160a01b0386169082156108fc029083906000818181858888f19350505050158015611e33573d6000803e3d6000fd5b506001600160a01b038516600090815260076020526040902054611e578183611b61565b6001600160a01b038716600090815260076020526040902055600b54611e7d81846113e3565b600b556040518381526001600160a01b038816907fb6abcb8512e598975a6aac9ca015e70db50aea472c9a1af75606da0e89892ba39060200160405180910390a250505b5050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611efd57611efd6123c8565b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611f56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7a91906124a2565b81600181518110611f8d57611f8d6123c8565b6001600160a01b039283166020918202929092010152600c54611fb391309116846112bf565b600c5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611fec9085906000908690309042906004016124bf565b600060405180830381600087803b15801561200657600080fd5b505af115801561201a573d6000803e3d6000fd5b505050505050565b6001600160a01b03821660009081526005602052604081205460ff168061206157506001600160a01b03821660009081526005602052604090205460ff165b1561207b57601a546120749060646113e3565b9050610757565b600d546001600160a01b039081169083160361209a5750601854610757565b600d546001600160a01b03908116908416036120b95750601754610757565b5060195492915050565b600060208083528351808285015260005b818110156120f0578581018301518582016040015282016120d4565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610b6257600080fd5b6000806040838503121561213957600080fd5b823561214481612111565b946020939093013593505050565b8015158114610b6257600080fd5b60008060006040848603121561217557600080fd5b833567ffffffffffffffff8082111561218d57600080fd5b818601915086601f8301126121a157600080fd5b8135818111156121b057600080fd5b8760208260051b85010111156121c557600080fd5b602092830195509350508401356121db81612152565b809150509250925092565b6000806000606084860312156121fb57600080fd5b833561220681612111565b9250602084013561221681612111565b929592945050506040919091013590565b60006020828403121561223957600080fd5b813561097581612111565b6000806040838503121561225757600080fd5b823561226281612111565b9150602083013561227281612152565b809150509250929050565b60006020828403121561228f57600080fd5b5035919050565b6000806000606084860312156122ab57600080fd5b83356122b681612111565b925060208401356122c681612111565b915060408401356121db81612111565b6000806000606084860312156122eb57600080fd5b505081359360208301359350604090920135919050565b600080600080600080600060e0888a03121561231d57600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000806040838503121561236157600080fd5b823561236c81612111565b9150602083013561227281612111565b6020808252601290820152716661696c656420746f20776974686472617760701b604082015260600190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612406576124066123de565b5060010190565b60006020828403121561241f57600080fd5b5051919050565b60006020828403121561243857600080fd5b815161097581612152565b81810381811115610757576107576123de565b80820180821115610757576107576123de565b8082028115828204841417610757576107576123de565b60008261249d57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156124b457600080fd5b815161097581612111565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561250f5784516001600160a01b0316835293830193918301916001016124ea565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205745879111cc063afc8db834aefaf2b761c5a1c88cdb06059cbf79abe2fbc48364736f6c63430008130033

Deployed Bytecode Sourcemap

4752:16993:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7973:67;;;;;;;;;;-1:-1:-1;8033:5:0;;;;;;;;;;;;-1:-1:-1;;;8033:5:0;;;;7973:67;;;;;;;:::i;:::-;;;;;;;;8854:133;;;;;;;;;;-1:-1:-1;8854:133:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8854:133:0;1023:187:1;21628:114:0;;;;;;;;;;-1:-1:-1;21712:22:0;;21628:114;;;1361:25:1;;;1349:2;1334:18;21628:114:0;1215:177:1;20031:486:0;;;;;;;;;;;;;:::i;:::-;;8993:132;;;;;;;;;;;;;:::i;11277:184::-;;;;;;;;;;-1:-1:-1;11277:184:0;;;;;:::i;:::-;;:::i;16189:309::-;;;;;;;;;;-1:-1:-1;16189:309:0;;;;;:::i;:::-;;:::i;8196:67::-;;;;;;;;;;;;;:::i;3656:87::-;;;;;;;;;;-1:-1:-1;3656:87:0;;;;;:::i;:::-;3711:4;3736:5;-1:-1:-1;;;;;3725:16:0;;;3736:5;;3725:16;;3656:87;8123:67;;;;;;;;;;-1:-1:-1;8123:67:0;;5102:1;3130:36:1;;3118:2;3103:18;8123:67:0;2988:184:1;5298:44:0;;;;;;;;;;-1:-1:-1;5298:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8740:108;;;;;;;;;;-1:-1:-1;8740:108:0;;;;;:::i;:::-;;:::i;11469:89::-;;;;;;;;;;;;;:::i;18967:182::-;;;;;;;;;;-1:-1:-1;18967:182:0;;;;;:::i;:::-;;:::i;21126:130::-;;;;;;;;;;-1:-1:-1;21126:130:0;;;;;:::i;:::-;-1:-1:-1;;;;;21221:27:0;21194:7;21221:27;;;:12;:27;;;;;;;21126:130;21408:95;;;;;;;;;;-1:-1:-1;21483:12:0;21408:95;;8353:103;;;;;;;;;;-1:-1:-1;8353:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;8436:18:0;8419:7;8436:18;;;:9;:18;;;;;;;8353:103;7136:63;;;;;;;;;;;;;;;;21264:136;;;;;;;;;;-1:-1:-1;21264:136:0;;;;;:::i;:::-;-1:-1:-1;;;;;21362:30:0;21335:7;21362:30;;;:15;:30;;;;;;;21264:136;19705:119;;;;;;;;;;-1:-1:-1;19705:119:0;;;;;:::i;:::-;;:::i;7067:62::-;;;;;;;;;;;;;;;;7000:60;;;;;;;;;;;;;;;;19832:191;;;;;;;;;;;;;:::i;16849:1126::-;;;;;;;;;;;;;:::i;8269:78::-;;;;;;;;;;-1:-1:-1;8321:7:0;8339:5;-1:-1:-1;;;;;8339:5:0;8269:78;;;-1:-1:-1;;;;;3913:32:1;;;3895:51;;3883:2;3868:18;8269:78:0;3749:203:1;11566:237:0;;;;;;;;;;-1:-1:-1;11566:237:0;;;;;:::i;:::-;;:::i;10951:318::-;;;;;;;;;;-1:-1:-1;10951:318:0;;;;;:::i;:::-;;:::i;20525:593::-;;;;;;;;;;;;;:::i;8046:71::-;;;;;;;;;;-1:-1:-1;8108:7:0;;;;;;;;;;;;-1:-1:-1;;;8108:7:0;;;;8046:71;;10387:556;;;;;;;;;;-1:-1:-1;10387:556:0;;;;;:::i;:::-;;:::i;9544:318::-;;;;;;;;;;-1:-1:-1;9544:318:0;;;;;:::i;:::-;;:::i;5714:19::-;;;;;;;;;;-1:-1:-1;5714:19:0;;;;-1:-1:-1;;;;;5714:19:0;;;8462:139;;;;;;;;;;-1:-1:-1;8462:139:0;;;;;:::i;:::-;;:::i;19157:540::-;;;;;;;;;;-1:-1:-1;19157:540:0;;;;;:::i;:::-;;:::i;9870:509::-;;;;;;;;;;-1:-1:-1;9870:509:0;;;;;:::i;:::-;;:::i;8607:127::-;;;;;;;;;;-1:-1:-1;8607:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;8705:18:0;;;8688:7;8705:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8607:127;3749:111;;;;;;;;;;-1:-1:-1;3749:111:0;;;;;:::i;:::-;;:::i;21511:109::-;;;;;;;;;;-1:-1:-1;21595:17:0;;21511:109;;8854:133;8929:4;8936:37;8945:10;8957:7;8966:6;8936:8;:37::i;:::-;-1:-1:-1;8981:4:0;8854:133;;;;;:::o;20031:486::-;20231:15;;-1:-1:-1;;;;;20231:15:0;20216:10;20208:38;20200:47;;;;;;20359:22;;20284:21;;20258:23;;20339:43;;20284:21;;20339:19;:43::i;:::-;20411:49;;20316:66;;-1:-1:-1;20394:12:0;;20419:10;;20316:66;;20394:12;20411:49;20394:12;20411:49;20316:66;20419:10;20411:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20393:67;;;20479:7;20471:38;;;;-1:-1:-1;;;20471:38:0;;;;;;;:::i;:::-;;;;;;;;;20081:436;;;20031:486::o;8993:132::-;8436:9;:18;;;;6454:42;9046:7;8436:18;;;;;9063:12;;9046:7;;9063:60;;8436:18;;9063:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;9056:67;;8993:132;:::o;11277:184::-;3711:4;3736:5;-1:-1:-1;;;;;3736:5:0;3623:10;3725:16;3607:38;;;;-1:-1:-1;;;3607:38:0;;;;;;;:::i;:::-;11374:6:::1;11370:84;11384:20:::0;;::::1;11370:84;;;11443:8;11421:5;:19;11427:9;;11437:1;11427:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11421:19:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;11421:19:0;:30;;-1:-1:-1;;11421:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11406:3;::::1;::::0;::::1;:::i;:::-;;;;11370:84;;;;11277:184:::0;;;:::o;16189:309::-;16287:4;16304:36;16314:6;16322:9;16333:6;16304:9;:36::i;:::-;16351:117;16360:6;16368:10;16380:87;16416:6;16380:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16380:19:0;;;;;;:11;:19;;;;;;;;16400:10;16380:31;;;;;;;;;:87;:35;:87::i;:::-;16351:8;:117::i;:::-;-1:-1:-1;16486:4:0;16189:309;;;;;;:::o;8196:67::-;3711:4;3736:5;-1:-1:-1;;;;;3736:5:0;3623:10;3725:16;3607:38;;;;-1:-1:-1;;;3607:38:0;;;;;;;:::i;:::-;8240:14:::1;:21:::0;;-1:-1:-1;;;;8240:21:0::1;-1:-1:-1::0;;;8240:21:0::1;::::0;;8196:67::o;8740:108::-;3711:4;3736:5;-1:-1:-1;;;;;3736:5:0;3623:10;3725:16;3607:38;;;;-1:-1:-1;;;3607:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8814:21:0;;;::::1;;::::0;;;:11:::1;:21;::::0;;;;:32;;-1:-1:-1;;8814:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8740:108::o;11469:89::-;3711:4;3736:5;-1:-1:-1;;;;;3736:5:0;3623:10;3725:16;3607:38;;;;-1:-1:-1;;;3607:38:0;;;;;;;:::i;:::-;11521:29:::1;11536:13;;11521:14;:29::i;:::-;11469:89::o:0;18967:182::-;3711:4;3736:5;-1:-1:-1;;;;;3736:5:0;3623:10;3725:16;3607:38;;;;-1:-1:-1;;;3607:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19043:25:0::1;;::::0;;;:15:::1;:25;::::0;;;;;;;19071:12:::1;19043:40:::0;;;;19124:17:::1;::::0;19094:27;;;:13:::1;:27:::0;;;;;;:47;18967:182::o;19705:119::-;3711:4;3736:5;-1:-1:-1;;;;;3736:5:0;3623:10;3725:16;3607:38;;;;-1:-1:-1;;;3607:38:0;;;;;;;:::i;:::-;19790:17:::1;:26:::0;19705:119::o;19832:191::-;3711:4;3736:5;-1:-1:-1;;;;;3736:5:0;3623:10;3725:16;3607:38;;;;-1:-1:-1;;;3607:38:0;;;;;;;:::i;:::-;19908:58:::1;::::0;19891:12:::1;::::0;19916:10:::1;::::0;19940:21:::1;::::0;19891:12;19908:58;19891:12;19908:58;19940:21;19916:10;19908:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19890:76;;;19985:7;19977:38;;;;-1:-1:-1::0;;;19977:38:0::1;;;;;;;:::i;:::-;19879:144;19832:191::o:0;16849:1126::-;16926:10;16891:16;16910:27;;;:15;:27;;;;;;;;;17017:9;:21;;;;;;17099:23;;;:13;:23;;;;;;;17077:17;;16910:27;;16926:10;16891:16;17077:46;;:21;:46::i;:::-;17049:74;-1:-1:-1;17134:21:0;17170:30;;17166:183;;17274:12;;17233:54;;:36;:17;17255:13;17233:21;:36::i;:::-;:40;;:54::i;:::-;17217:70;;17166:183;;;-1:-1:-1;17336:1:0;17166:183;17387:13;17363:21;:37;:67;;;;;17428:1;17404:13;:26;17363:67;17359:551;;;17447:46;;-1:-1:-1;;;;;17447:31:0;;;:46;;;;;17479:13;;17447:46;;;;17479:13;17447:31;:46;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17508:30:0;;;;;;:15;:30;;;;;;;;17541:12;17508:45;;17587:12;:27;;;;;;17659;17587;17672:13;17659:12;:27::i;:::-;-1:-1:-1;;;;;17629:27:0;;;;;;:12;:27;;;;;:57;17730:22;;17792:37;17730:22;17815:13;17792:22;:37::i;:::-;17767:22;:62;17849:49;;1361:25:1;;;-1:-1:-1;;;;;17849:49:0;;;;;1349:2:1;1334:18;17849:49:0;;;;;;;17432:478;;17359:551;-1:-1:-1;;17950:17:0;;17934:12;17920:27;;;;:13;:27;;;;;:47;-1:-1:-1;;;16849:1126:0:o;11566:237::-;3711:4;3736:5;-1:-1:-1;;;;;3736:5:0;3623:10;3725:16;3607:38;;;;-1:-1:-1;;;3607:38:0;;;;;;;:::i;:::-;11670:41:::1;::::0;-1:-1:-1;;;11670:41:0;;11705:4:::1;11670:41;::::0;::::1;3895:51:1::0;11652:15:0::1;::::0;11670:63:::1;::::0;11729:3:::1;::::0;11670:54:::1;::::0;11716:7;;-1:-1:-1;;;;;11670:26:0;::::1;::::0;::::1;::::0;3868:18:1;;11670:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45:::0;::::1;:54::i;:63::-;11770:15;::::0;11744:51:::1;::::0;-1:-1:-1;;;11744:51:0;;-1:-1:-1;;;;;11770:15:0;;::::1;11744:51;::::0;::::1;7720::1::0;7787:18;;;7780:34;;;11652:81:0;;-1:-1:-1;11744:25:0;::::1;::::0;::::1;::::0;7693:18:1;;11744:51:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;10951:318::-:0;3711:4;3736:5;-1:-1:-1;;;;;3736:5:0;3623:10;3725:16;3607:38;;;;-1:-1:-1;;;3607:38:0;;;;;;;:::i;:::-;11068:18:::1;:31:::0;;-1:-1:-1;;;;;11068:31:0;;::::1;-1:-1:-1::0;;;;;;11068:31:0;;::::1;::::0;::::1;::::0;;;11101:18:::1;:31:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;11134:15:::1;:25:::0;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;11068:18:::1;11170:23:::0;;;:11:::1;:23;::::0;;;;;:30;;-1:-1:-1;;11170:30:0;;::::1;11068:31:::0;11170:30;;::::1;::::0;;;11202:23;;;;;;:30;;;::::1;::::0;::::1;::::0;;11234:20;;;;;;:27;;;;::::1;::::0;;::::1;::::0;;10951:318::o;20525:593::-;20724:15;;-1:-1:-1;;;;;20724:15:0;20709:10;20701:38;20693:47;;;;;;20773:15;20799:14;:32;;;20751:19;20861:31;20773:15;;20861;:31::i;:::-;20842:50;-1:-1:-1;20929:6:0;20955:18;;;20947:27;;;;;;21003:58;;20986:12;;21011:10;;21035:21;;20986:12;21003:58;20986:12;21003:58;21035:21;21011:10;21003:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20985:76;;;21080:7;21072:38;;;;-1:-1:-1;;;21072:38:0;;;;;;;:::i;10387:556::-;3711:4;3736:5;-1:-1:-1;;;;;3736:5:0;3623:10;3725:16;3607:38;;;;-1:-1:-1;;;3607:38:0;;;;;;;:::i;:::-;10493:13:::1;10509:33;10536:5;10509:22;10526:4;10509:12;;:16;;:22;;;;:::i;:33::-;10493:49;;10544:19;10566:34;10594:5;10566:23;10583:5;10566:12;;:16;;:23;;;;:::i;:34::-;10544:56;;10602:17;10622:36;10652:5;10622:25;10639:7;10622:12;;:16;;:25;;;;:::i;:36::-;10669:12;:20:::0;;;10691:14:::1;:28:::0;;;10721:15:::1;:27:::0;;;10602:56;-1:-1:-1;;10775:30:0::1;10800:4;10775:20;10793:1;10775:13;:11;:13::i;:30::-;10759:46;;10833:5;10824;:14;;:38;;;;;10857:5;10842:11;:20;;10824:38;:60;;;;;10879:5;10866:9;:18;;10824:60;10816:119;;;::::0;-1:-1:-1;;;10816:119:0;;8277:2:1;10816:119:0::1;::::0;::::1;8259:21:1::0;8316:2;8296:18;;;8289:30;8355:34;8335:18;;;8328:62;-1:-1:-1;;;8406:18:1;;;8399:44;8460:19;;10816:119:0::1;8075:410:1::0;10816:119:0::1;10482:461;;;;10387:556:::0;;;:::o;9544:318::-;3711:4;3736:5;-1:-1:-1;;;;;3736:5:0;3623:10;3725:16;3607:38;;;;-1:-1:-1;;;3607:38:0;;;;;;;:::i;:::-;9677:10:::1;:24:::0;;;9719:12:::1;::::0;:53:::1;::::0;9764:6:::1;::::0;9719:32:::1;::::0;9736:14;9719:16:::1;:32::i;:53::-;9703:13;:69:::0;9800:12:::1;::::0;:54:::1;::::0;9846:6:::1;::::0;9800:33:::1;::::0;9817:15;9800:16:::1;:33::i;:54::-;9783:14;:71:::0;-1:-1:-1;;;9544:318:0:o;8462:139::-;8540:4;8547:40;8557:10;8569:9;8580:6;8547:9;:40::i;19157:540::-;-1:-1:-1;;;;;19267:30:0;;19228:7;19267:30;;;:15;:30;;;;;;;;;19332:9;:24;;;;;;19417:23;;;:13;:23;;;;;;;19395:17;;19267:30;;19332:24;19228:7;;19395:46;;:17;:21;:46::i;:::-;19367:74;-1:-1:-1;19452:21:0;19488:26;;19484:175;;19586:12;;19545:54;;:36;:17;19567:13;19545:21;:36::i;:54::-;19529:70;;19484:175;;;-1:-1:-1;19646:1:0;19484:175;19676:13;19157:540;-1:-1:-1;;;;;19157:540:0:o;9870:509::-;3711:4;3736:5;-1:-1:-1;;;;;3736:5:0;3623:10;3725:16;3607:38;;;;-1:-1:-1;;;3607:38:0;;;;;;;:::i;:::-;10055:12:::1;:25:::0;;;10082:12:::1;:25:::0;;;10109:7:::1;:15:::0;;;10126:9:::1;:19:::0;;;10147:8:::1;:17:::0;;;10166:7:::1;:15:::0;;;10183:11:::1;:20:::0;;;10234:11:::1;::::0;:18:::1;::::0;-1:-1:-1;10234:15:0::1;:18::i;:::-;10222:8;;:30;;:63;;;;-1:-1:-1::0;10267:11:0::1;::::0;:18:::1;::::0;10283:1:::1;10267:15;:18::i;:::-;10256:7;;:29;;10222:63;:100;;;;-1:-1:-1::0;10304:11:0::1;::::0;:18:::1;::::0;10320:1:::1;10304:15;:18::i;:::-;10289:11;;:33;;10222:100;10214:157;;;::::0;-1:-1:-1;;;10214:157:0;;8692:2:1;10214:157:0::1;::::0;::::1;8674:21:1::0;8731:2;8711:18;;;8704:30;8770:34;8750:18;;;8743:62;-1:-1:-1;;;8821:18:1;;;8814:42;8873:19;;10214:157:0::1;8490:408:1::0;3749:111:0;3711:4;3736:5;-1:-1:-1;;;;;3736:5:0;3623:10;3725:16;3607:38;;;;-1:-1:-1;;;3607:38:0;;;;;;;:::i;:::-;3815:5:::1;:11:::0;;-1:-1:-1;;;;;;3815:11:0::1;-1:-1:-1::0;;;;;3815:11:0;::::1;::::0;;::::1;::::0;;;3833:25:::1;::::0;3895:51:1;;;3833:25:0::1;::::0;3883:2:1;3868:18;3833:25:0::1;;;;;;;3749:111:::0;:::o;16506:335::-;-1:-1:-1;;;;;16599:19:0;;16591:68;;;;-1:-1:-1;;;16591:68:0;;9321:2:1;16591:68:0;;;9303:21:1;9360:2;9340:18;;;9333:30;9399:34;9379:18;;;9372:62;-1:-1:-1;;;9450:18:1;;;9443:34;9494:19;;16591:68:0;9119:400:1;16591:68:0;-1:-1:-1;;;;;16678:21:0;;16670:68;;;;-1:-1:-1;;;16670:68:0;;9726:2:1;16670:68:0;;;9708:21:1;9765:2;9745:18;;;9738:30;9804:34;9784:18;;;9777:62;-1:-1:-1;;;9855:18:1;;;9848:32;9897:19;;16670:68:0;9524:398:1;16670:68:0;-1:-1:-1;;;;;16749:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16801:32;;1361:25:1;;;16801:32:0;;1334:18:1;16801:32:0;;;;;;;16506:335;;;:::o;1395:98::-;1453:7;1480:5;1484:1;1480;:5;:::i;14161:2020::-;-1:-1:-1;;;;;14258:20:0;;14250:70;;;;-1:-1:-1;;;14250:70:0;;10262:2:1;14250:70:0;;;10244:21:1;10301:2;10281:18;;;10274:30;10340:34;10320:18;;;10313:62;-1:-1:-1;;;10391:18:1;;;10384:35;10436:19;;14250:70:0;10060:401:1;14250:70:0;-1:-1:-1;;;;;14339:23:0;;14331:71;;;;-1:-1:-1;;;14331:71:0;;10668:2:1;14331:71:0;;;10650:21:1;10707:2;10687:18;;;10680:30;10746:34;10726:18;;;10719:62;-1:-1:-1;;;10797:18:1;;;10790:33;10840:19;;14331:71:0;10466:399:1;14331:71:0;-1:-1:-1;;;;;8436:18:0;;8419:7;8436:18;;;:9;:18;;;;;;14421:6;:27;;14413:88;;;;-1:-1:-1;;;14413:88:0;;11072:2:1;14413:88:0;;;11054:21:1;11111:2;11091:18;;;11084:30;11150:34;11130:18;;;11123:62;-1:-1:-1;;;11201:18:1;;;11194:47;11258:19;;14413:88:0;10870:413:1;14413:88:0;-1:-1:-1;;;;;14516:19:0;;;;;;:11;:19;;;;;;;;14515:20;:47;;;;-1:-1:-1;;;;;;14540:22:0;;;;;;:11;:22;;;;;;;;14539:23;14515:47;14512:95;;;14572:14;;-1:-1:-1;;;14572:14:0;;;;14564:41;;;;-1:-1:-1;;;14564:41:0;;11490:2:1;14564:41:0;;;11472:21:1;11529:2;11509:18;;;11502:30;-1:-1:-1;;;11548:18:1;;;11541:44;11602:18;;14564:41:0;11288:338:1;14564:41:0;-1:-1:-1;;;;;14621:19:0;;;;;;:11;:19;;;;;;;;14620:20;:47;;;;-1:-1:-1;;;;;;14645:22:0;;;;;;:11;:22;;;;;;;;14644:23;14620:47;:77;;;;-1:-1:-1;14692:4:0;;-1:-1:-1;;;;;14671:26:0;;;14692:4;;14671:26;;14620:77;:107;;;;-1:-1:-1;;;;;;14701:26:0;;6454:42;14701:26;;14620:107;14617:220;;;14785:15;;-1:-1:-1;;;;;14748:20:0;;;;;;:9;:20;;;;;;:32;;14773:6;14748:24;:32::i;:::-;14747:53;;14739:96;;;;-1:-1:-1;;;14739:96:0;;11833:2:1;14739:96:0;;;11815:21:1;11872:2;11852:18;;;11845:30;11911:32;11891:18;;;11884:60;11961:18;;14739:96:0;11631:354:1;14739:96:0;14860:4;;-1:-1:-1;;;;;14850:14:0;;;14860:4;;14850:14;14847:124;;14884:14;;14874:6;:24;;:47;;;-1:-1:-1;;;;;;14902:19:0;;;;;;:11;:19;;;;;;;;14874:47;:73;;;-1:-1:-1;;;;;;14925:22:0;;;;;;:11;:22;;;;;;;;14874:73;14866:103;;;;-1:-1:-1;;;14866:103:0;;12192:2:1;14866:103:0;;;12174:21:1;12231:2;12211:18;;;12204:30;-1:-1:-1;;;12250:18:1;;;12243:47;12307:18;;14866:103:0;11990:341:1;14866:103:0;14999:12;;14989:6;:22;;:45;;;-1:-1:-1;;;;;;15015:19:0;;;;;;:11;:19;;;;;;;;14989:45;:71;;;-1:-1:-1;;;;;;15038:22:0;;;;;;:11;:22;;;;;;;;14989:71;14981:101;;;;-1:-1:-1;;;14981:101:0;;12192:2:1;14981:101:0;;;12174:21:1;12231:2;12211:18;;;12204:30;-1:-1:-1;;;12250:18:1;;;12243:47;12307:18;;14981:101:0;11990:341:1;14981:101:0;15109:4;;-1:-1:-1;;;;;15096:17:0;;;15109:4;;15096:17;:41;;;;-1:-1:-1;;;;;;15118:19:0;;;;;;:11;:19;;;;;;;;15117:20;15096:41;15093:71;;;15160:1;15139:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;15093:71:0;15177:45;15196:6;15204:9;15215:6;15177:18;:45::i;:::-;15174:105;;;15224:29;15239:13;;15224:14;:29::i;:::-;15275:1;15255:9;:22;15174:105;-1:-1:-1;;;;;15316:17:0;;15289:24;15316:17;;;:9;:17;;;;;;15364:29;15316:17;15386:6;15364:21;:29::i;:::-;-1:-1:-1;;;;;15344:17:0;;;;;;:9;:17;;;;;:49;;;;15429:32;15354:6;15451:9;15429:13;:32::i;:::-;:78;;15501:6;15429:78;;;15464:34;15472:6;15480:9;15491:6;15464:7;:34::i;:::-;-1:-1:-1;;;;;15548:20:0;;15518:27;15548:20;;;:9;:20;;;;;;15404:103;;-1:-1:-1;15602:40:0;15548:20;15404:103;15602:24;:40::i;:::-;-1:-1:-1;;;;;15579:20:0;;;;;;;:9;:20;;;;;;;;:63;;;;15683:17;;15667:12;15653:27;;:13;:27;;;;;;:47;;;;15724:4;;;;15714:14;;;;15711:62;;15730:41;15740:9;15751:19;15730:9;:41::i;:::-;15799:4;;-1:-1:-1;;;;;15799:4:0;;;15786:17;;;;15783:59;;15805:35;15815:6;15823:16;15805:9;:35::i;:::-;15868:4;;-1:-1:-1;;;;;15855:17:0;;;15868:4;;15855:17;;;;:35;;-1:-1:-1;15886:4:0;;-1:-1:-1;;;;;15876:14:0;;;15886:4;;15876:14;;15855:35;15852:119;;;15892:41;15902:9;15913:19;15892:9;:41::i;:::-;15934:35;15944:6;15952:16;15934:9;:35::i;:::-;-1:-1:-1;;;;;15981:23:0;;;;;;;:15;:23;;;;;;16007:12;15981:38;;;;16030:26;;;;;;;;;;:41;;;;16099:15;16082:14;:32;16130:43;;;;;;16158:14;1361:25:1;;1349:2;1334:18;;1215:177;16130:43:0;;;;;;;;14239:1942;;;14161:2020;;;:::o;1819:240::-;1939:7;2000:12;1992:6;;;;1984:29;;;;-1:-1:-1;;;1984:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2035:5:0;;;1819:240::o;11811:821::-;6072:8;:15;;-1:-1:-1;;6072:15:0;6083:4;6072:15;;;;;;11948:9:::1;::::0;11930:12:::1;::::0;11906::::1;::::0;6072:8;;11905:61:::1;::::0;11964:1:::1;::::0;11906:52:::1;::::0;11948:9;;11906:37:::1;::::0;;;:16:::1;:19::i;:::-;:23:::0;::::1;:37::i;11905:61::-;11882:84:::0;-1:-1:-1;12002:21:0::1;12034:24;12051:6:::0;12034:16:::1;:24::i;:::-;12069:20;12092:41;:21;12118:14:::0;12092:25:::1;:41::i;:::-;12069:64;;12144:19;12165:48;12182:30;12199:12;;12182;:16;;:30;;;;:::i;:::-;12165:12:::0;;:16:::1;:48::i;:::-;12144:69;;12224:20;12247:36;12270:12;;12247:18;12263:1;12247:11;:15;;:18;;;;:::i;:36::-;12224:59:::0;-1:-1:-1;12297:16:0;;12294:73:::1;;12323:18;::::0;12315:50:::1;::::0;-1:-1:-1;;;;;12323:18:0;;::::1;::::0;12315:50;::::1;;;::::0;12352:12;;12323:18:::1;12315:50:::0;12323:18;12315:50;12352:12;12323:18;12315:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12294:73;12420:9;::::0;12377:17:::1;::::0;12397:33:::1;::::0;:18:::1;:11:::0;12413:1:::1;12397:15;:18::i;:33::-;12461:17;::::0;12377:53;;-1:-1:-1;12461:32:0::1;::::0;12377:53;12461:21:::1;:32::i;:::-;12441:17;:52:::0;12533:22:::1;::::0;12591:33:::1;12533:22:::0;12614:9;12591:22:::1;:33::i;:::-;12566:22;:58:::0;-1:-1:-1;;6092:8:0;:16;;-1:-1:-1;;6092:16:0;;;-1:-1:-1;;;;;;11811:821:0:o;1501:98::-;1559:7;1586:5;1590:1;1586;:5;:::i;1607:98::-;1665:7;1692:5;1696:1;1692;:5;:::i;1289:98::-;1347:7;1374:5;1378:1;1374;:5;:::i;9133:403::-;9278:14;;9353:13;;9343:4;9235;8436:18;;;:9;:18;;;;;;9385:8;;9235:4;;9268:24;;;;-1:-1:-1;9325:41:0;;9385:8;;9384:9;:24;;;;-1:-1:-1;9397:11:0;;-1:-1:-1;;;9397:11:0;;;;9384:24;:42;;;;-1:-1:-1;9412:14:0;;-1:-1:-1;;;9412:14:0;;;;9384:42;:54;;;;;9430:8;9384:54;:78;;;;-1:-1:-1;;;;;;9443:19:0;;;;;;:11;:19;;;;;;;;9442:20;9384:78;:99;;;;-1:-1:-1;9479:4:0;;-1:-1:-1;;;;;9466:17:0;;;9479:4;;9466:17;9384:99;:126;;;;;9500:10;;9487:9;;:23;;9384:126;:144;;;;;9514:14;9384:144;9377:151;9133:403;-1:-1:-1;;;;;;9133:403:0:o;13082:160::-;-1:-1:-1;;;;;13188:19:0;;13163:4;13188:19;;;:11;:19;;;;;;;;13187:20;:47;;;;-1:-1:-1;;;;;;;13212:22:0;;;;;:11;:22;;;;;;;;13211:23;;13082:160;-1:-1:-1;13082:160:0:o;13563:590::-;13649:7;13705:1;13672:30;13684:6;13692:9;13672:11;:30::i;:::-;:34;13669:462;;;13718:17;13738:59;13766:30;13778:6;13786:9;13766:11;:30::i;:::-;13749:11;;13738:23;;:6;;:10;:23::i;:59::-;13853:4;13835:24;;;;:9;:24;;;;;;13718:79;;-1:-1:-1;13835:39:0;;13718:79;13835:28;:39::i;:::-;13826:4;13808:24;;;;:9;:24;;;;;;;:66;;;;13890:42;;-1:-1:-1;;;;;13890:42:0;;;;;;;13922:9;1361:25:1;;1349:2;1334:18;;1215:177;13890:42:0;;;;;;;;13964:1;13946:7;;:20;:64;;;;;14003:7;;13970:30;13982:6;13990:9;13970:11;:30::i;:::-;:40;13946:64;13943:148;;;14012:77;14030:4;6454:42;14052:36;14080:7;;14052:23;14063:11;;14052:6;:10;;:23;;;;:::i;:36::-;14012:9;:77::i;:::-;14108:21;:6;14119:9;14108:10;:21::i;:::-;14101:28;;;;;13669:462;-1:-1:-1;14139:6:0;13563:590;-1:-1:-1;;13563:590:0:o;17983:976::-;-1:-1:-1;;;;;18087:30:0;;18068:16;18087:30;;;:15;:30;;;;;;;;;18178:23;;;:13;:23;;;;;;18156:17;;18087:30;;18068:16;18156:46;;:21;:46::i;:::-;18128:74;;18213:21;18277:1;18249:17;:30;:55;;;;-1:-1:-1;;;;;;18283:21:0;;6454:42;18283:21;;18249:55;18245:208;;;18378:12;;18337:54;;:36;:17;18359:13;18337:21;:36::i;:54::-;18321:70;;18245:208;;;-1:-1:-1;18440:1:0;18245:208;18491:13;18467:21;:37;:67;;;;;18532:1;18508:13;:26;18467:67;18463:489;;;18551:46;;-1:-1:-1;;;;;18551:31:0;;;:46;;;;;18583:13;;18551:46;;;;18583:13;18551:31;:46;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18631:27:0;;18612:16;18631:27;;;:12;:27;;;;;;18703;18631;18716:13;18703:12;:27::i;:::-;-1:-1:-1;;;;;18673:27:0;;;;;;:12;:27;;;;;:57;18774:22;;18836:37;18774:22;18859:13;18836:22;:37::i;:::-;18811:22;:62;18893:47;;1361:25:1;;;-1:-1:-1;;;;;18893:47:0;;;;;1349:2:1;1334:18;18893:47:0;;;;;;;18536:416;;18463:489;18057:902;;;17983:976;;:::o;12640:434::-;12730:16;;;12744:1;12730:16;;;;;;;;12706:21;;12730:16;;;;;;;;;;-1:-1:-1;12730:16:0;12706:40;;12775:4;12757;12762:1;12757:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12757:23:0;;;:7;;;;;;;;;;:23;;;;12801:6;;:13;;;-1:-1:-1;;;12801:13:0;;;;:6;;;;;:11;;:13;;;;;12757:7;;12801:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12791:4;12796:1;12791:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12791:23:0;;;:7;;;;;;;;;:23;12857:6;;12825:53;;12842:4;;12857:6;12866:11;12825:8;:53::i;:::-;12889:6;;:177;;-1:-1:-1;;;12889:177:0;;-1:-1:-1;;;;;12889:6:0;;;;:57;;:177;;12961:11;;12889:6;;13003:4;;13030;;13050:15;;12889:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12695:379;12640:434;:::o;13250:305::-;-1:-1:-1;;;;;13352:13:0;;13329:7;13352:13;;;:5;:13;;;;;;;;;:33;;-1:-1:-1;;;;;;13369:16:0;;;;;;:5;:16;;;;;;;;13352:33;13349:76;;;13394:11;;:29;;13418:3;13394:15;:29::i;:::-;13387:36;;;;13349:76;13451:4;;-1:-1:-1;;;;;13451:4:0;;;13438:17;;;;13435:38;;-1:-1:-1;13464:7:0;;13457:14;;13435:38;13496:4;;-1:-1:-1;;;;;13496:4:0;;;13486:14;;;;13483:36;;-1:-1:-1;13509:8:0;;13502:15;;13483:36;-1:-1:-1;13536:11:0;;13250:305;;;;:::o;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;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:118::-;1483:5;1476:13;1469:21;1462:5;1459:32;1449:60;;1505:1;1502;1495:12;1520:750;1612:6;1620;1628;1681:2;1669:9;1660:7;1656:23;1652:32;1649:52;;;1697:1;1694;1687:12;1649:52;1737:9;1724:23;1766:18;1807:2;1799:6;1796:14;1793:34;;;1823:1;1820;1813:12;1793:34;1861:6;1850:9;1846:22;1836:32;;1906:7;1899:4;1895:2;1891:13;1887:27;1877:55;;1928:1;1925;1918:12;1877:55;1968:2;1955:16;1994:2;1986:6;1983:14;1980:34;;;2010:1;2007;2000:12;1980:34;2065:7;2058:4;2048:6;2045:1;2041:14;2037:2;2033:23;2029:34;2026:47;2023:67;;;2086:1;2083;2076:12;2023:67;2117:4;2109:13;;;;-1:-1:-1;2141:6:1;-1:-1:-1;;2182:20:1;;2169:34;2212:28;2169:34;2212:28;:::i;:::-;2259:5;2249:15;;;1520:750;;;;;:::o;2275:456::-;2352:6;2360;2368;2421:2;2409:9;2400:7;2396:23;2392:32;2389:52;;;2437:1;2434;2427:12;2389:52;2476:9;2463:23;2495:31;2520:5;2495:31;:::i;:::-;2545:5;-1:-1:-1;2602:2:1;2587:18;;2574:32;2615:33;2574:32;2615:33;:::i;:::-;2275:456;;2667:7;;-1:-1:-1;;;2721:2:1;2706:18;;;;2693:32;;2275:456::o;2736:247::-;2795:6;2848:2;2836:9;2827:7;2823:23;2819:32;2816:52;;;2864:1;2861;2854:12;2816:52;2903:9;2890:23;2922:31;2947:5;2922:31;:::i;3177:382::-;3242:6;3250;3303:2;3291:9;3282:7;3278:23;3274:32;3271:52;;;3319:1;3316;3309:12;3271:52;3358:9;3345:23;3377:31;3402:5;3377:31;:::i;:::-;3427:5;-1:-1:-1;3484:2:1;3469:18;;3456:32;3497:30;3456:32;3497:30;:::i;:::-;3546:7;3536:17;;;3177:382;;;;;:::o;3564:180::-;3623:6;3676:2;3664:9;3655:7;3651:23;3647:32;3644:52;;;3692:1;3689;3682:12;3644:52;-1:-1:-1;3715:23:1;;3564:180;-1:-1:-1;3564:180:1:o;3957:529::-;4034:6;4042;4050;4103:2;4091:9;4082:7;4078:23;4074:32;4071:52;;;4119:1;4116;4109:12;4071:52;4158:9;4145:23;4177:31;4202:5;4177:31;:::i;:::-;4227:5;-1:-1:-1;4284:2:1;4269:18;;4256:32;4297:33;4256:32;4297:33;:::i;:::-;4349:7;-1:-1:-1;4408:2:1;4393:18;;4380:32;4421:33;4380:32;4421:33;:::i;4491:316::-;4568:6;4576;4584;4637:2;4625:9;4616:7;4612:23;4608:32;4605:52;;;4653:1;4650;4643:12;4605:52;-1:-1:-1;;4676:23:1;;;4746:2;4731:18;;4718:32;;-1:-1:-1;4797:2:1;4782:18;;;4769:32;;4491:316;-1:-1:-1;4491:316:1:o;4812:592::-;4925:6;4933;4941;4949;4957;4965;4973;5026:3;5014:9;5005:7;5001:23;4997:33;4994:53;;;5043:1;5040;5033:12;4994:53;-1:-1:-1;;5066:23:1;;;5136:2;5121:18;;5108:32;;-1:-1:-1;5187:2:1;5172:18;;5159:32;;5238:2;5223:18;;5210:32;;-1:-1:-1;5289:3:1;5274:19;;5261:33;;-1:-1:-1;5341:3:1;5326:19;;5313:33;;-1:-1:-1;5393:3:1;5378:19;5365:33;;-1:-1:-1;4812:592:1;-1:-1:-1;4812:592:1:o;5409:388::-;5477:6;5485;5538:2;5526:9;5517:7;5513:23;5509:32;5506:52;;;5554:1;5551;5544:12;5506:52;5593:9;5580:23;5612:31;5637:5;5612:31;:::i;:::-;5662:5;-1:-1:-1;5719:2:1;5704:18;;5691:32;5732:33;5691:32;5732:33;:::i;6272:342::-;6474:2;6456:21;;;6513:2;6493:18;;;6486:30;-1:-1:-1;;;6547:2:1;6532:18;;6525:48;6605:2;6590:18;;6272:342::o;6619:329::-;6821:2;6803:21;;;6860:1;6840:18;;;6833:29;-1:-1:-1;;;6893:2:1;6878:18;;6871:36;6939:2;6924:18;;6619:329::o;6953:127::-;7014:10;7009:3;7005:20;7002:1;6995:31;7045:4;7042:1;7035:15;7069:4;7066:1;7059:15;7085:127;7146:10;7141:3;7137:20;7134:1;7127:31;7177:4;7174:1;7167:15;7201:4;7198:1;7191:15;7217:135;7256:3;7277:17;;;7274:43;;7297:18;;:::i;:::-;-1:-1:-1;7344:1:1;7333:13;;7217:135::o;7357:184::-;7427:6;7480:2;7468:9;7459:7;7455:23;7451:32;7448:52;;;7496:1;7493;7486:12;7448:52;-1:-1:-1;7519:16:1;;7357:184;-1:-1:-1;7357:184:1:o;7825:245::-;7892:6;7945:2;7933:9;7924:7;7920:23;7916:32;7913:52;;;7961:1;7958;7951:12;7913:52;7993:9;7987:16;8012:28;8034:5;8012:28;:::i;9927:128::-;9994:9;;;10015:11;;;10012:37;;;10029:18;;:::i;12336:125::-;12401:9;;;12422:10;;;12419:36;;;12435:18;;:::i;12466:168::-;12539:9;;;12570;;12587:15;;;12581:22;;12567:37;12557:71;;12608:18;;:::i;12639:217::-;12679:1;12705;12695:132;;12749:10;12744:3;12740:20;12737:1;12730:31;12784:4;12781:1;12774:15;12812:4;12809:1;12802:15;12695:132;-1:-1:-1;12841:9:1;;12639:217::o;12993:251::-;13063:6;13116:2;13104:9;13095:7;13091:23;13087:32;13084:52;;;13132:1;13129;13122:12;13084:52;13164:9;13158:16;13183:31;13208:5;13183:31;:::i;13249:980::-;13511:4;13559:3;13548:9;13544:19;13590:6;13579:9;13572:25;13616:2;13654:6;13649:2;13638:9;13634:18;13627:34;13697:3;13692:2;13681:9;13677:18;13670:31;13721:6;13756;13750:13;13787:6;13779;13772:22;13825:3;13814:9;13810:19;13803:26;;13864:2;13856:6;13852:15;13838:29;;13885:1;13895:195;13909:6;13906:1;13903:13;13895:195;;;13974:13;;-1:-1:-1;;;;;13970:39:1;13958:52;;14065:15;;;;14030:12;;;;14006:1;13924:9;13895:195;;;-1:-1:-1;;;;;;;14146:32:1;;;;14141:2;14126:18;;14119:60;-1:-1:-1;;;14210:3:1;14195:19;14188:35;14107:3;13249:980;-1:-1:-1;;;13249:980:1:o

Swarm Source

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