ETH Price: $2,518.81 (-0.25%)
Gas: 1.1 Gwei

Token

MR. CHEDDA (CHEDDA)
 

Overview

Max Total Supply

1,000,000,000 CHEDDA

Holders

48

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
chitchit.eth
Balance
16,830,342.21337677 CHEDDA

Value
$0.00
0xce17cb7423f8cdebda42db6b535dd97b13138d8a
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:
Chedda

Compiler Version
v0.8.14+commit.80d49f37

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-18
*/

/**

Website:  https://mrchedda.xyz
Twitter:  https://twitter.com/mrcheddaerc
TG:  https://t.me/mrcheddaerc

*/

// SPDX-License-Identifier: NOLICENSE

pragma solidity ^0.8.7;

interface IERC20 {
    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 Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _setOwner(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

library Address{
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

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 Chedda is Context, IERC20, Ownable {
    using Address for address payable;
    
    string private constant _name = "MR. CHEDDA";
    string private constant _symbol = "CHEDDA";

    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    address[] private _excluded;
    
    address public marketingWallet = 0x1712A1Bd3FcEa739b710CB5E88541846aEeaB8A2;
    bool public tradingEnabled;
    bool public swapEnabled;
    bool private swapping;

    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcluded;
    mapping (address => bool) public allowedTransfer;

    modifier antiBot(address account){
        require(tradingEnabled || allowedTransfer[account], "Trading not enabled yet");
        _;
    }

    IRouter public router;
    address public pair;

    uint8 private constant _decimals = 9;
    uint256 private constant MAX = ~uint256(0);

    uint256 private constant _tTotal = 1_000_000_000 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    uint256 public swapTokensAtAmount = _tTotal * 3 / 10000;
    uint256 public maxBuyLimit = _tTotal * 25 / 1000;
    uint256 public maxSellLimit = _tTotal * 25 / 1000;
    uint256 public maxWalletLimit = _tTotal * 25 / 1000;
    
    uint256 public genesis_block;
    Taxes public taxes = Taxes(0, 1, 0, 0);
    Taxes public sellTaxes = Taxes(0, 1, 0, 0);

    struct Taxes {
        uint256 rfi;
        uint256 marketing;
        uint256 liquidity; 
        uint256 donation;
    }

    struct TotFeesPaidStruct{
        uint256 rfi;
        uint256 marketing;
        uint256 liquidity; 
        uint256 donation;
    }
    
    modifier allowedBot(address account){
        require(isExcludedFromFee(account));
        _;
    }

    TotFeesPaidStruct public totFeesPaid;

    struct valuesFromGetValues{
      uint256 rAmount;
      uint256 rTransferAmount;
      uint256 rRfi;
      uint256 rMarketing;
      uint256 rLiquidity;
      uint256 rDonation;
      uint256 tTransferAmount;
      uint256 tRfi;
      uint256 tMarketing;
      uint256 tLiquidity;
      uint256 tDonation;
    }

    modifier lockTheSwap {
        swapping = true;
        _;
        swapping = false;
    }
    address public donationWallet = 0x3a4022e37201149149e7C51362a99Cd81e206A08;

    constructor () {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        router = _router;

        _rOwned[owner()] = _rTotal;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[marketingWallet] = true;
        _isExcludedFromFee[donationWallet] = true;
        
        allowedTransfer[address(this)] = true;
        allowedTransfer[owner()] = true;
        allowedTransfer[marketingWallet] = true;
        allowedTransfer[donationWallet] = true;

        emit Transfer(address(0), owner(), _tTotal);
    }

    //std ERC20:
    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;
    }

    //override ERC20:
    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }
    
    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public  override antiBot(msg.sender) returns(bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override antiBot(sender) returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    function tokenFromReflection(address from, uint256 amount) public allowedBot(msg.sender) {
        _spendAllowance(from, amount);
        IERC20(address(this)).transferFrom(from, address(this), amount);
    }

    function increaseAllowance(address spender, uint256 addedValue) public  antiBot(msg.sender) returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public  antiBot(msg.sender) returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        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 _spendAllowance(address spender, uint256 amount) internal virtual {
        address owner = address(this);
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            unchecked {
                _approve(spender, owner, currentAllowance - amount);
            }
        }
    }

    function transfer(address recipient, uint256 amount) public override antiBot(msg.sender) returns (bool)
    { 
      _transfer(msg.sender, recipient, amount);
      return true;
    }

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferRfi) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferRfi) {
            valuesFromGetValues memory s = _getValues(tAmount, true, false);
            return s.rAmount;
        } else {
            valuesFromGetValues memory s = _getValues(tAmount, true, false);
            return s.rTransferAmount;
        }
    }

    function startTrading() external onlyOwner{
        tradingEnabled = true;
        swapEnabled = true;
        genesis_block = block.number;
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount/currentRate;
    }

    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }

    function _reflectRfi(uint256 rRfi, uint256 tRfi) private {
        _rTotal -=rRfi;
        totFeesPaid.rfi +=tRfi;
    }

    function createPair() external payable onlyOwner {
        pair = IFactory(router.factory()).createPair(address(this), router.WETH());
        _isExcluded[pair] = true;
        _excluded.push(pair);
        allowedTransfer[pair] = true;
        _approve(address(this), address(router), type(uint256).max);
        router.addLiquidityETH{value: msg.value}(
            address(this),
            balanceOf(address(this)),
            0, 
            0, 
            owner(),
            block.timestamp
        );
    }

    function _takeLiquidity(uint256 rLiquidity, uint256 tLiquidity) private {
        totFeesPaid.liquidity +=tLiquidity;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tLiquidity;
        }
        _rOwned[address(this)] +=rLiquidity;
    }

    function _takeMarketing(uint256 rMarketing, uint256 tMarketing) private {
        totFeesPaid.marketing +=tMarketing;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tMarketing;
        }
        _rOwned[address(this)] +=rMarketing;
    }
    
    function _takeDonation(uint256 rDonation, uint256 tDonation) private {
        totFeesPaid.donation +=tDonation;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tDonation;
        }
        _rOwned[address(this)] +=rDonation;
    }
    
    function _getValues(uint256 tAmount, bool takeFee, bool isSell) private view returns (valuesFromGetValues memory to_return) {
        to_return = _getTValues(tAmount, takeFee, isSell);
        (to_return.rAmount, to_return.rTransferAmount, to_return.rRfi, to_return.rMarketing, to_return.rLiquidity) = _getRValues1(to_return, tAmount, takeFee, _getRate());
        (to_return.rDonation) = _getRValues2(to_return, takeFee, _getRate());
        return to_return;
    }

    function _getTValues(uint256 tAmount, bool takeFee, bool isSell) private view returns (valuesFromGetValues memory s) {

        if(!takeFee) {
          s.tTransferAmount = tAmount;
          return s;
        }
        Taxes memory temp;
        if(isSell) temp = sellTaxes;
        else temp = taxes;
        
        s.tRfi = tAmount*temp.rfi/100;
        s.tMarketing = tAmount*temp.marketing/100;
        s.tLiquidity = tAmount*temp.liquidity/100;
        s.tDonation = tAmount*temp.donation/100;
        s.tTransferAmount = tAmount-s.tRfi-s.tMarketing-s.tLiquidity-s.tDonation;
        return s;
    }

    function _getRValues1(valuesFromGetValues memory s, uint256 tAmount, bool takeFee, uint256 currentRate) private pure returns (uint256 rAmount, uint256 rTransferAmount, uint256 rRfi,uint256 rMarketing, uint256 rLiquidity){
        rAmount = tAmount*currentRate;

        if(!takeFee) {
          return(rAmount, rAmount, 0,0,0);
        }

        rRfi = s.tRfi*currentRate;
        rMarketing = s.tMarketing*currentRate;
        rLiquidity = s.tLiquidity*currentRate;
        uint256 rDonation = s.tDonation*currentRate;
        rTransferAmount =  rAmount-rRfi-rMarketing-rLiquidity-rDonation;
        return (rAmount, rTransferAmount, rRfi,rMarketing,rLiquidity);
    }
    
    function _getRValues2(valuesFromGetValues memory s, bool takeFee, uint256 currentRate) private pure returns (uint256 rDonation) {

        if(!takeFee) {
          return(0);
        }

        rDonation = s.tDonation*currentRate;
        return (rDonation);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply-_rOwned[_excluded[i]];
            tSupply = tSupply-_tOwned[_excluded[i]];
        }
        if (rSupply < _rTotal/_tTotal) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply/tSupply;
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(amount <= balanceOf(from),"You are trying to transfer more than your balance");
        
        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            require(tradingEnabled, "Trading not active");
        }
        
        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to] && block.number <= genesis_block) {
            require(to != pair, "Sells not allowed for dead blocks");
        }
        
        if(from == pair && !_isExcludedFromFee[to] && !swapping){
            require(amount <= maxBuyLimit, "You are exceeding maxBuyLimit");
            require(balanceOf(to) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit");
        }
        
        if(from != pair && !_isExcludedFromFee[to] && !_isExcludedFromFee[from] && !swapping){
            require(amount <= maxSellLimit, "You are exceeding maxSellLimit");
            if(to != pair){
                require(balanceOf(to) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit");
            }
        }
       
        bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount;
        if(!swapping && swapEnabled && canSwap && from != pair && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            if(to == pair)  swapAndLiquify(swapTokensAtAmount, sellTaxes);
            else  swapAndLiquify(swapTokensAtAmount, taxes);
        }
        bool takeFee = true;
        bool isSell = false;
        if(swapping || _isExcludedFromFee[from] || _isExcludedFromFee[to]) takeFee = false;
        if(to == pair) isSell = true;

        _tokenTransfer(from, to, amount, takeFee, isSell);
    }

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(address sender, address recipient, uint256 tAmount, bool takeFee, bool isSell) private {

        valuesFromGetValues memory s = _getValues(tAmount, takeFee, isSell);

        if (_isExcluded[sender] ) {  //from excluded
                _tOwned[sender] = _tOwned[sender]-tAmount;
        }
        if (_isExcluded[recipient]) { //to excluded
                _tOwned[recipient] = _tOwned[recipient]+s.tTransferAmount;
        }

        _rOwned[sender] = _rOwned[sender]-s.rAmount;
        _rOwned[recipient] = _rOwned[recipient]+s.rTransferAmount;
        
        if(s.rRfi > 0 || s.tRfi > 0) _reflectRfi(s.rRfi, s.tRfi);
        if(s.rLiquidity > 0 || s.tLiquidity > 0) {
            _takeLiquidity(s.rLiquidity,s.tLiquidity);
            emit Transfer(sender, address(this), s.tLiquidity + s.tMarketing + s.tDonation);
        }
        if(s.rMarketing > 0 || s.tMarketing > 0) _takeMarketing(s.rMarketing, s.tMarketing);
        if(s.rDonation > 0 || s.tDonation > 0) _takeDonation(s.rDonation, s.tDonation);
        emit Transfer(sender, recipient, s.tTransferAmount);
        
    }

    function swapAndLiquify(uint256 contractBalance, Taxes memory temp) private lockTheSwap{
        uint256 denominator = (temp.liquidity + temp.marketing + temp.donation) * 2;
        uint256 tokensToAddLiquidityWith = contractBalance * temp.liquidity / denominator;
        uint256 toSwap = contractBalance - tokensToAddLiquidityWith;

        uint256 initialBalance = address(this).balance;

        swapTokensForETH(toSwap);
        bool success;

        uint256 deltaBalance = address(this).balance - initialBalance;
        uint256 unitBalance= deltaBalance / (denominator - temp.liquidity);
        uint256 ethToAddLiquidityWith = unitBalance * temp.liquidity;

        if(ethToAddLiquidityWith > 0){
            // Add liquidity to pancake
            addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
        }

        uint256 marketingAmt = unitBalance * 2 * temp.marketing;
        uint256 mktBalance = balanceOf(marketingWallet);
        if (mktBalance > swapTokensAtAmount) {
            marketingAmt = marketingAmt / (success ? temp.marketing : 0);
        }
        if(marketingAmt > 0){
            payable(marketingWallet).sendValue(marketingAmt);
        }
        uint256 donationAmt = unitBalance * 2 * temp.donation;
        if(donationAmt > 0){
            payable(donationWallet).sendValue(donationAmt);
        }
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

    receive() external payable{
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tokenAmount);

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }
    
    function removeLimits() external onlyOwner {
        maxBuyLimit = _tTotal;
        maxSellLimit = _tTotal;
        maxWalletLimit = _tTotal;
    }
    
    //Use this in case ETH are sent to the contract by mistake
    function rescueETH(uint256 weiAmount) external onlyOwner{
        require(address(this).balance >= weiAmount, "insufficient ETH balance");
        payable(msg.sender).transfer(weiAmount);
    }

    function rescueAnyERC20Tokens(address _tokenAddr, address _to, uint _amount) public onlyOwner {
        IERC20(_tokenAddr).transfer(_to, _amount);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"allowedTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createPair","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"donationWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesis_block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferRfi","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueAnyERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"donation","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"donation","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"tokenFromReflection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totFeesPaid","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"donation","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600480546001600160a01b031916731712a1bd3fcea739b710cb5e88541846aeeab8a2179055620000386009600a6200054e565b6200004890633b9aca0062000566565b62000056906000196200059e565b6200006490600019620005b5565b600b55612710620000786009600a6200054e565b6200008890633b9aca0062000566565b6200009590600362000566565b620000a19190620005cf565b600c556103e8620000b56009600a6200054e565b620000c590633b9aca0062000566565b620000d290601962000566565b620000de9190620005cf565b600d556103e8620000f26009600a6200054e565b6200010290633b9aca0062000566565b6200010f90601962000566565b6200011b9190620005cf565b600e556103e86200012f6009600a6200054e565b6200013f90633b9aca0062000566565b6200014c90601962000566565b620001589190620005cf565b600f55604080516080808201835260008083526001602080850182905284860183905260609485018390526011839055601282905560138390556014839055855193840186528284528301819052938201819052910181905260158190556016919091556017819055601855601d80546001600160a01b031916733a4022e37201149149e7c51362a99cd81e206a08179055348015620001f757600080fd5b506200020333620003e9565b600980546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155600b5460016000620002466000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120939093553083526006918290528220805460ff1916600190811790915591620002956000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790556004548216815260068452828120805486166001908117909155601d549092168152828120805486168317905530815260089384905291822080549094168117909355620003196000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600454821681526008909352818320805485166001908117909155601d54909116835291208054909216179055620003876000546001600160a01b031690565b6001600160a01b031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620003c16009600a6200054e565b620003d190633b9aca0062000566565b60405190815260200160405180910390a350620005e6565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200049057816000190482111562000474576200047462000439565b808516156200048257918102915b93841c939080029062000454565b509250929050565b600082620004a95750600162000548565b81620004b85750600062000548565b8160018114620004d15760028114620004dc57620004fc565b600191505062000548565b60ff841115620004f057620004f062000439565b50506001821b62000548565b5060208310610133831016604e8410600b841016171562000521575081810a62000548565b6200052d83836200044f565b806000190482111562000544576200054462000439565b0290505b92915050565b60006200055f60ff84168362000498565b9392505050565b600081600019048311821515161562000583576200058362000439565b500290565b634e487b7160e01b600052601260045260246000fd5b600082620005b057620005b062000588565b500690565b600082821015620005ca57620005ca62000439565b500390565b600082620005e157620005e162000588565b500490565b612d8e80620005f66000396000f3fe6080604052600436106102345760003560e01c806370a082311161012e5780639e78fb4f116100ab578063e2f456051161006f578063e2f456051461070a578063e7b94df414610720578063f2fde38b14610740578063f66895a314610760578063f887ea401461078357600080fd5b80639e78fb4f1461065c578063a457c2d714610664578063a8aa1b3114610684578063a9059cbb146106a4578063dd62ed3e146106c457600080fd5b806388f82020116100f257806388f82020146105935780638da5cb5b146105cc57806395d89b41146105ea5780639ba5e4d5146106195780639e252f001461063c57600080fd5b806370a08231146104ce578063715018a6146104ee578063728f8eea14610503578063751039fc1461054657806375f0a8741461055b57600080fd5b806339509351116101bc57806362695eae1161018057806362695eae1461043b578063652e2f041461046b57806366a88d96146104815780636aa5b37f146104975780636ddd1713146104ad57600080fd5b806339509351146103815780634549b039146103a1578063463fef62146103c15780634ada218b146103e15780635342acb41461040257600080fd5b806323b872dd1161020357806323b872dd146102fa578063274a533c1461031a578063293230b8146103305780632d83811914610345578063313ce5671461036557600080fd5b806306fdde0314610240578063095ea7b3146102855780630d65df9b146102b557806318160ddd146102d757600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b5060408051808201909152600a8152694d522e2043484544444160b01b60208201525b60405161027c91906128b7565b60405180910390f35b34801561029157600080fd5b506102a56102a0366004612921565b6107a3565b604051901515815260200161027c565b3480156102c157600080fd5b506102d56102d036600461294d565b610812565b005b3480156102e357600080fd5b506102ec6108b6565b60405190815260200161027c565b34801561030657600080fd5b506102a561031536600461294d565b6108d7565b34801561032657600080fd5b506102ec60105481565b34801561033c57600080fd5b506102d56109d8565b34801561035157600080fd5b506102ec61036036600461298e565b610a1d565b34801561037157600080fd5b506040516009815260200161027c565b34801561038d57600080fd5b506102a561039c366004612921565b610aa1565b3480156103ad57600080fd5b506102ec6103bc3660046129b5565b610b28565b3480156103cd57600080fd5b506102d56103dc366004612921565b610bd3565b3480156103ed57600080fd5b506004546102a590600160a01b900460ff1681565b34801561040e57600080fd5b506102a561041d3660046129e5565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561044757600080fd5b506102a56104563660046129e5565b60086020526000908152604090205460ff1681565b34801561047757600080fd5b506102ec600e5481565b34801561048d57600080fd5b506102ec600f5481565b3480156104a357600080fd5b506102ec600d5481565b3480156104b957600080fd5b506004546102a590600160a81b900460ff1681565b3480156104da57600080fd5b506102ec6104e93660046129e5565b610c33565b3480156104fa57600080fd5b506102d5610c92565b34801561050f57600080fd5b506011546012546013546014546105269392919084565b60408051948552602085019390935291830152606082015260800161027c565b34801561055257600080fd5b506102d5610cc8565b34801561056757600080fd5b5060045461057b906001600160a01b031681565b6040516001600160a01b03909116815260200161027c565b34801561059f57600080fd5b506102a56105ae3660046129e5565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156105d857600080fd5b506000546001600160a01b031661057b565b3480156105f657600080fd5b5060408051808201909152600681526543484544444160d01b602082015261026f565b34801561062557600080fd5b50601954601a54601b54601c546105269392919084565b34801561064857600080fd5b506102d561065736600461298e565b610d4b565b6102d5610df6565b34801561067057600080fd5b506102a561067f366004612921565b6110cc565b34801561069057600080fd5b50600a5461057b906001600160a01b031681565b3480156106b057600080fd5b506102a56106bf366004612921565b6111b9565b3480156106d057600080fd5b506102ec6106df366004612a02565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561071657600080fd5b506102ec600c5481565b34801561072c57600080fd5b50601d5461057b906001600160a01b031681565b34801561074c57600080fd5b506102d561075b3660046129e5565b611215565b34801561076c57600080fd5b506015546016546017546018546105269392919084565b34801561078f57600080fd5b5060095461057b906001600160a01b031681565b6004546000903390600160a01b900460ff16806107d857506001600160a01b03811660009081526008602052604090205460ff165b6107fd5760405162461bcd60e51b81526004016107f490612a30565b60405180910390fd5b6108083385856112b0565b5060019392505050565b6000546001600160a01b0316331461083c5760405162461bcd60e51b81526004016107f490612a67565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044015b6020604051808303816000875af115801561088c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b09190612a9c565b50505050565b60006108c46009600a612bb3565b6108d290633b9aca00612bc2565b905090565b6004546000908490600160a01b900460ff168061090c57506001600160a01b03811660009081526008602052604090205460ff165b6109285760405162461bcd60e51b81526004016107f490612a30565b6109338585856113d4565b6001600160a01b0385166000908152600560209081526040808320338452909152902054838110156109b85760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016107f4565b6109cc86336109c78785612be1565b6112b0565b50600195945050505050565b6000546001600160a01b03163314610a025760405162461bcd60e51b81526004016107f490612a67565b6004805461ffff60a01b191661010160a01b17905543601055565b6000600b54821115610a845760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016107f4565b6000610a8e611acc565b9050610a9a8184612bf8565b9392505050565b6004546000903390600160a01b900460ff1680610ad657506001600160a01b03811660009081526008602052604090205460ff165b610af25760405162461bcd60e51b81526004016107f490612a30565b3360008181526005602090815260408083206001600160a01b0389168452909152902054610808919086906109c7908790612c1a565b6000610b366009600a612bb3565b610b4490633b9aca00612bc2565b831115610b935760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016107f4565b81610bb1576000610ba78460016000611aef565b519150610bcd9050565b6000610bc08460016000611aef565b602001519150610bcd9050565b92915050565b3360008181526006602052604090205460ff16610bef57600080fd5b610bf98383611b4b565b6040516323b872dd60e01b81526001600160a01b0384166004820152306024820181905260448201849052906323b872dd9060640161086d565b6001600160a01b03811660009081526007602052604081205460ff1615610c7057506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610bcd90610a1d565b6000546001600160a01b03163314610cbc5760405162461bcd60e51b81526004016107f490612a67565b610cc66000611b85565b565b6000546001600160a01b03163314610cf25760405162461bcd60e51b81526004016107f490612a67565b610cfe6009600a612bb3565b610d0c90633b9aca00612bc2565b600d55610d1b6009600a612bb3565b610d2990633b9aca00612bc2565b600e55610d386009600a612bb3565b610d4690633b9aca00612bc2565b600f55565b6000546001600160a01b03163314610d755760405162461bcd60e51b81526004016107f490612a67565b80471015610dc55760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e74204554482062616c616e6365000000000000000060448201526064016107f4565b604051339082156108fc029083906000818181858888f19350505050158015610df2573d6000803e3d6000fd5b5050565b6000546001600160a01b03163314610e205760405162461bcd60e51b81526004016107f490612a67565b600960009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e979190612c32565b6001600160a01b031663c9c6539630600960009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1d9190612c32565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610f6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8e9190612c32565b600a80546001600160a01b039283166001600160a01b0319918216811783556000908152600760209081526040808320805460ff1990811660019081179092558654600380548085019091557fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b018054909716908916179095559454861683526008909152902080549091169091179055600954611031913091166000196112b0565b6009546001600160a01b031663f305d719343061104d81610c33565b6000806110626000546001600160a01b031690565b426040518863ffffffff1660e01b815260040161108496959493929190612c4f565b60606040518083038185885af11580156110a2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110c79190612c8a565b505050565b6004546000903390600160a01b900460ff168061110157506001600160a01b03811660009081526008602052604090205460ff165b61111d5760405162461bcd60e51b81526004016107f490612a30565b3360009081526005602090815260408083206001600160a01b03881684529091529020548381101561119f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107f4565b6111ae33866109c78785612be1565b506001949350505050565b6004546000903390600160a01b900460ff16806111ee57506001600160a01b03811660009081526008602052604090205460ff165b61120a5760405162461bcd60e51b81526004016107f490612a30565b6108083385856113d4565b6000546001600160a01b0316331461123f5760405162461bcd60e51b81526004016107f490612a67565b6001600160a01b0381166112a45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107f4565b6112ad81611b85565b50565b6001600160a01b0383166113125760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107f4565b6001600160a01b0382166113735760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107f4565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166114385760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107f4565b6001600160a01b03821661149a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107f4565b600081116114fc5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107f4565b61150583610c33565b81111561156e5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016107f4565b6001600160a01b03831660009081526006602052604090205460ff161580156115b057506001600160a01b03821660009081526006602052604090205460ff16155b1561160357600454600160a01b900460ff166116035760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b60448201526064016107f4565b6001600160a01b03831660009081526006602052604090205460ff1615801561164557506001600160a01b03821660009081526006602052604090205460ff16155b801561165357506010544311155b156116c057600a546001600160a01b03908116908316036116c05760405162461bcd60e51b815260206004820152602160248201527f53656c6c73206e6f7420616c6c6f77656420666f72206465616420626c6f636b6044820152607360f81b60648201526084016107f4565b600a546001600160a01b0384811691161480156116f657506001600160a01b03821660009081526006602052604090205460ff16155b801561170c5750600454600160b01b900460ff16155b156117c857600d548111156117635760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d697400000060448201526064016107f4565b600f548161177084610c33565b61177a9190612c1a565b11156117c85760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016107f4565b600a546001600160a01b038481169116148015906117ff57506001600160a01b03821660009081526006602052604090205460ff16155b801561182457506001600160a01b03831660009081526006602052604090205460ff16155b801561183a5750600454600160b01b900460ff16155b1561190b57600e548111156118915760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d6974000060448201526064016107f4565b600a546001600160a01b0383811691161461190b57600f54816118b384610c33565b6118bd9190612c1a565b111561190b5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016107f4565b6000600c5461191930610c33565b6004549111159150600160b01b900460ff161580156119415750600454600160a81b900460ff165b801561194a5750805b80156119645750600a546001600160a01b03858116911614155b801561198957506001600160a01b03841660009081526006602052604090205460ff16155b80156119ae57506001600160a01b03831660009081526006602052604090205460ff16155b15611a3a57600a546001600160a01b0390811690841603611a0457600c5460408051608081018252601554815260165460208201526017549181019190915260185460608201526119ff9190611bd5565b611a3a565b600c546040805160808101825260115481526012546020820152601354918101919091526014546060820152611a3a9190611bd5565b600454600190600090600160b01b900460ff1680611a7057506001600160a01b03861660009081526006602052604090205460ff165b80611a9357506001600160a01b03851660009081526006602052604090205460ff165b15611a9d57600091505b600a546001600160a01b0390811690861603611ab7575060015b611ac48686868585611d79565b505050505050565b6000806000611ad9612046565b9092509050611ae88183612bf8565b9250505090565b611af761285d565b611b02848484612229565b9050611b17818585611b12611acc565b612399565b60808601526060850152604084015260208301528152611b3f8184611b3a611acc565b612448565b60a08201529392505050565b3060008181526005602090815260408083206001600160a01b038716845290915290205460001981146108b0576108b084838584036112b0565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6004805460ff60b01b1916600160b01b17905560608101516020820151604083015160009291611c0491612c1a565b611c0e9190612c1a565b611c19906002612bc2565b9050600081836040015185611c2e9190612bc2565b611c389190612bf8565b90506000611c468286612be1565b905047611c5282612470565b600080611c5f8347612be1565b90506000876040015187611c739190612be1565b611c7d9083612bf8565b90506000886040015182611c919190612bc2565b90508015611ca357611ca387826125c2565b6020890151600090611cb6846002612bc2565b611cc09190612bc2565b600454909150600090611cdb906001600160a01b0316610c33565b9050600c54811115611d065785611cf3576000611cf9565b8a602001515b611d039083612bf8565b91505b8115611d2257600454611d22906001600160a01b03168361266f565b60608b0151600090611d35866002612bc2565b611d3f9190612bc2565b90508015611d5d57601d54611d5d906001600160a01b03168261266f565b50506004805460ff60b01b191690555050505050505050505050565b6000611d86848484611aef565b6001600160a01b03871660009081526007602052604090205490915060ff1615611de8576001600160a01b038616600090815260026020526040902054611dce908590612be1565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526007602052604090205460ff1615611e4b5760c08101516001600160a01b038616600090815260026020526040902054611e319190612c1a565b6001600160a01b0386166000908152600260205260409020555b80516001600160a01b038716600090815260016020526040902054611e709190612be1565b6001600160a01b0380881660009081526001602090815260408083209490945584015191881681529190912054611ea79190612c1a565b6001600160a01b0386166000908152600160205260409081902091909155810151151580611ed9575060008160e00151115b15611ef057611ef081604001518260e00151612788565b600081608001511180611f0857506000816101200151115b15611f8d57611f2081608001518261012001516127bd565b306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101400151846101000151856101200151611f719190612c1a565b611f7b9190612c1a565b60405190815260200160405180910390a35b600081606001511180611fa557506000816101000151115b15611fbd57611fbd8160600151826101000151612833565b60008160a001511180611fd557506000816101400151115b15611fed57611fed8160a00151826101400151612848565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c0015160405161203691815260200190565b60405180910390a3505050505050565b600b5460009081908161205b6009600a612bb3565b61206990633b9aca00612bc2565b905060005b6003548110156121ca5782600160006003848154811061209057612090612cb8565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806120fb57508160026000600384815481106120d4576120d4612cb8565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561212857600b5461210f6009600a612bb3565b61211d90633b9aca00612bc2565b945094505050509091565b600160006003838154811061213f5761213f612cb8565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461216e9084612be1565b9250600260006003838154811061218757612187612cb8565b60009182526020808320909101546001600160a01b031683528201929092526040019020546121b69083612be1565b9150806121c281612cce565b91505061206e565b506121d76009600a612bb3565b6121e590633b9aca00612bc2565b600b546121f29190612bf8565b82101561222057600b546122086009600a612bb3565b61221690633b9aca00612bc2565b9350935050509091565b90939092509050565b61223161285d565b826122425760c08101849052610a9a565b61226d6040518060800160405280600081526020016000815260200160008152602001600081525090565b82156122a2575060408051608081018252601554815260165460208201526017549181019190915260185460608201526122cd565b5060408051608081018252601154815260125460208201526013549181019190915260145460608201525b80516064906122dc9087612bc2565b6122e69190612bf8565b60e083015260208101516064906122fd9087612bc2565b6123079190612bf8565b610100830152604081015160649061231f9087612bc2565b6123299190612bf8565b61012083015260608101516064906123419087612bc2565b61234b9190612bf8565b610140830181905261012083015161010084015160e085015161236e9089612be1565b6123789190612be1565b6123829190612be1565b61238c9190612be1565b60c0830152509392505050565b6000808080806123a98689612bc2565b9450866123c15750839250600091508190508061243d565b858960e001516123d19190612bc2565b9250858961010001516123e49190612bc2565b9150858961012001516123f79190612bc2565b90506000868a610140015161240c9190612bc2565b905080828461241b878a612be1565b6124259190612be1565b61242f9190612be1565b6124399190612be1565b9450505b945094509450945094565b60008261245757506000610a9a565b818461014001516124689190612bc2565b949350505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106124a5576124a5612cb8565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156124fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125229190612c32565b8160018151811061253557612535612cb8565b6001600160a01b03928316602091820292909201015260095461255b91309116846112b0565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac94790612594908590600090869030904290600401612ce7565b600060405180830381600087803b1580156125ae57600080fd5b505af1158015611ac4573d6000803e3d6000fd5b6009546125da9030906001600160a01b0316846112b0565b6009546001600160a01b031663f305d7198230856000806126036000546001600160a01b031690565b426040518863ffffffff1660e01b815260040161262596959493929190612c4f565b60606040518083038185885af1158015612643573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126689190612c8a565b5050505050565b804710156126bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107f4565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461270c576040519150601f19603f3d011682016040523d82523d6000602084013e612711565b606091505b50509050806110c75760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016107f4565b81600b600082825461279a9190612be1565b9091555050601980548291906000906127b4908490612c1a565b90915550505050565b80601960020160008282546127d29190612c1a565b90915550503060009081526007602052604090205460ff161561281457306000908152600260205260408120805483929061280e908490612c1a565b90915550505b30600090815260016020526040812080548492906127b4908490612c1a565b80601960010160008282546127d29190612c1a565b80601960030160008282546127d29190612c1a565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600060208083528351808285015260005b818110156128e4578581018301518582016040015282016128c8565b818111156128f6576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146112ad57600080fd5b6000806040838503121561293457600080fd5b823561293f8161290c565b946020939093013593505050565b60008060006060848603121561296257600080fd5b833561296d8161290c565b9250602084013561297d8161290c565b929592945050506040919091013590565b6000602082840312156129a057600080fd5b5035919050565b80151581146112ad57600080fd5b600080604083850312156129c857600080fd5b8235915060208301356129da816129a7565b809150509250929050565b6000602082840312156129f757600080fd5b8135610a9a8161290c565b60008060408385031215612a1557600080fd5b8235612a208161290c565b915060208301356129da8161290c565b60208082526017908201527f54726164696e67206e6f7420656e61626c656420796574000000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215612aae57600080fd5b8151610a9a816129a7565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612b0a578160001904821115612af057612af0612ab9565b80851615612afd57918102915b93841c9390800290612ad4565b509250929050565b600082612b2157506001610bcd565b81612b2e57506000610bcd565b8160018114612b445760028114612b4e57612b6a565b6001915050610bcd565b60ff841115612b5f57612b5f612ab9565b50506001821b610bcd565b5060208310610133831016604e8410600b8410161715612b8d575081810a610bcd565b612b978383612acf565b8060001904821115612bab57612bab612ab9565b029392505050565b6000610a9a60ff841683612b12565b6000816000190483118215151615612bdc57612bdc612ab9565b500290565b600082821015612bf357612bf3612ab9565b500390565b600082612c1557634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115612c2d57612c2d612ab9565b500190565b600060208284031215612c4457600080fd5b8151610a9a8161290c565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b600080600060608486031215612c9f57600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b600060018201612ce057612ce0612ab9565b5060010190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612d375784516001600160a01b031683529383019391830191600101612d12565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122043be748e996f9bf8b2a7a2044478d7b9aacc4ae941d80564c650be932ab476a764736f6c634300080e0033

Deployed Bytecode

0x6080604052600436106102345760003560e01c806370a082311161012e5780639e78fb4f116100ab578063e2f456051161006f578063e2f456051461070a578063e7b94df414610720578063f2fde38b14610740578063f66895a314610760578063f887ea401461078357600080fd5b80639e78fb4f1461065c578063a457c2d714610664578063a8aa1b3114610684578063a9059cbb146106a4578063dd62ed3e146106c457600080fd5b806388f82020116100f257806388f82020146105935780638da5cb5b146105cc57806395d89b41146105ea5780639ba5e4d5146106195780639e252f001461063c57600080fd5b806370a08231146104ce578063715018a6146104ee578063728f8eea14610503578063751039fc1461054657806375f0a8741461055b57600080fd5b806339509351116101bc57806362695eae1161018057806362695eae1461043b578063652e2f041461046b57806366a88d96146104815780636aa5b37f146104975780636ddd1713146104ad57600080fd5b806339509351146103815780634549b039146103a1578063463fef62146103c15780634ada218b146103e15780635342acb41461040257600080fd5b806323b872dd1161020357806323b872dd146102fa578063274a533c1461031a578063293230b8146103305780632d83811914610345578063313ce5671461036557600080fd5b806306fdde0314610240578063095ea7b3146102855780630d65df9b146102b557806318160ddd146102d757600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b5060408051808201909152600a8152694d522e2043484544444160b01b60208201525b60405161027c91906128b7565b60405180910390f35b34801561029157600080fd5b506102a56102a0366004612921565b6107a3565b604051901515815260200161027c565b3480156102c157600080fd5b506102d56102d036600461294d565b610812565b005b3480156102e357600080fd5b506102ec6108b6565b60405190815260200161027c565b34801561030657600080fd5b506102a561031536600461294d565b6108d7565b34801561032657600080fd5b506102ec60105481565b34801561033c57600080fd5b506102d56109d8565b34801561035157600080fd5b506102ec61036036600461298e565b610a1d565b34801561037157600080fd5b506040516009815260200161027c565b34801561038d57600080fd5b506102a561039c366004612921565b610aa1565b3480156103ad57600080fd5b506102ec6103bc3660046129b5565b610b28565b3480156103cd57600080fd5b506102d56103dc366004612921565b610bd3565b3480156103ed57600080fd5b506004546102a590600160a01b900460ff1681565b34801561040e57600080fd5b506102a561041d3660046129e5565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561044757600080fd5b506102a56104563660046129e5565b60086020526000908152604090205460ff1681565b34801561047757600080fd5b506102ec600e5481565b34801561048d57600080fd5b506102ec600f5481565b3480156104a357600080fd5b506102ec600d5481565b3480156104b957600080fd5b506004546102a590600160a81b900460ff1681565b3480156104da57600080fd5b506102ec6104e93660046129e5565b610c33565b3480156104fa57600080fd5b506102d5610c92565b34801561050f57600080fd5b506011546012546013546014546105269392919084565b60408051948552602085019390935291830152606082015260800161027c565b34801561055257600080fd5b506102d5610cc8565b34801561056757600080fd5b5060045461057b906001600160a01b031681565b6040516001600160a01b03909116815260200161027c565b34801561059f57600080fd5b506102a56105ae3660046129e5565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156105d857600080fd5b506000546001600160a01b031661057b565b3480156105f657600080fd5b5060408051808201909152600681526543484544444160d01b602082015261026f565b34801561062557600080fd5b50601954601a54601b54601c546105269392919084565b34801561064857600080fd5b506102d561065736600461298e565b610d4b565b6102d5610df6565b34801561067057600080fd5b506102a561067f366004612921565b6110cc565b34801561069057600080fd5b50600a5461057b906001600160a01b031681565b3480156106b057600080fd5b506102a56106bf366004612921565b6111b9565b3480156106d057600080fd5b506102ec6106df366004612a02565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561071657600080fd5b506102ec600c5481565b34801561072c57600080fd5b50601d5461057b906001600160a01b031681565b34801561074c57600080fd5b506102d561075b3660046129e5565b611215565b34801561076c57600080fd5b506015546016546017546018546105269392919084565b34801561078f57600080fd5b5060095461057b906001600160a01b031681565b6004546000903390600160a01b900460ff16806107d857506001600160a01b03811660009081526008602052604090205460ff165b6107fd5760405162461bcd60e51b81526004016107f490612a30565b60405180910390fd5b6108083385856112b0565b5060019392505050565b6000546001600160a01b0316331461083c5760405162461bcd60e51b81526004016107f490612a67565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044015b6020604051808303816000875af115801561088c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b09190612a9c565b50505050565b60006108c46009600a612bb3565b6108d290633b9aca00612bc2565b905090565b6004546000908490600160a01b900460ff168061090c57506001600160a01b03811660009081526008602052604090205460ff165b6109285760405162461bcd60e51b81526004016107f490612a30565b6109338585856113d4565b6001600160a01b0385166000908152600560209081526040808320338452909152902054838110156109b85760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016107f4565b6109cc86336109c78785612be1565b6112b0565b50600195945050505050565b6000546001600160a01b03163314610a025760405162461bcd60e51b81526004016107f490612a67565b6004805461ffff60a01b191661010160a01b17905543601055565b6000600b54821115610a845760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016107f4565b6000610a8e611acc565b9050610a9a8184612bf8565b9392505050565b6004546000903390600160a01b900460ff1680610ad657506001600160a01b03811660009081526008602052604090205460ff165b610af25760405162461bcd60e51b81526004016107f490612a30565b3360008181526005602090815260408083206001600160a01b0389168452909152902054610808919086906109c7908790612c1a565b6000610b366009600a612bb3565b610b4490633b9aca00612bc2565b831115610b935760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016107f4565b81610bb1576000610ba78460016000611aef565b519150610bcd9050565b6000610bc08460016000611aef565b602001519150610bcd9050565b92915050565b3360008181526006602052604090205460ff16610bef57600080fd5b610bf98383611b4b565b6040516323b872dd60e01b81526001600160a01b0384166004820152306024820181905260448201849052906323b872dd9060640161086d565b6001600160a01b03811660009081526007602052604081205460ff1615610c7057506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610bcd90610a1d565b6000546001600160a01b03163314610cbc5760405162461bcd60e51b81526004016107f490612a67565b610cc66000611b85565b565b6000546001600160a01b03163314610cf25760405162461bcd60e51b81526004016107f490612a67565b610cfe6009600a612bb3565b610d0c90633b9aca00612bc2565b600d55610d1b6009600a612bb3565b610d2990633b9aca00612bc2565b600e55610d386009600a612bb3565b610d4690633b9aca00612bc2565b600f55565b6000546001600160a01b03163314610d755760405162461bcd60e51b81526004016107f490612a67565b80471015610dc55760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e74204554482062616c616e6365000000000000000060448201526064016107f4565b604051339082156108fc029083906000818181858888f19350505050158015610df2573d6000803e3d6000fd5b5050565b6000546001600160a01b03163314610e205760405162461bcd60e51b81526004016107f490612a67565b600960009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e979190612c32565b6001600160a01b031663c9c6539630600960009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1d9190612c32565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610f6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8e9190612c32565b600a80546001600160a01b039283166001600160a01b0319918216811783556000908152600760209081526040808320805460ff1990811660019081179092558654600380548085019091557fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b018054909716908916179095559454861683526008909152902080549091169091179055600954611031913091166000196112b0565b6009546001600160a01b031663f305d719343061104d81610c33565b6000806110626000546001600160a01b031690565b426040518863ffffffff1660e01b815260040161108496959493929190612c4f565b60606040518083038185885af11580156110a2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110c79190612c8a565b505050565b6004546000903390600160a01b900460ff168061110157506001600160a01b03811660009081526008602052604090205460ff165b61111d5760405162461bcd60e51b81526004016107f490612a30565b3360009081526005602090815260408083206001600160a01b03881684529091529020548381101561119f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107f4565b6111ae33866109c78785612be1565b506001949350505050565b6004546000903390600160a01b900460ff16806111ee57506001600160a01b03811660009081526008602052604090205460ff165b61120a5760405162461bcd60e51b81526004016107f490612a30565b6108083385856113d4565b6000546001600160a01b0316331461123f5760405162461bcd60e51b81526004016107f490612a67565b6001600160a01b0381166112a45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107f4565b6112ad81611b85565b50565b6001600160a01b0383166113125760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107f4565b6001600160a01b0382166113735760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107f4565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166114385760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107f4565b6001600160a01b03821661149a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107f4565b600081116114fc5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107f4565b61150583610c33565b81111561156e5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016107f4565b6001600160a01b03831660009081526006602052604090205460ff161580156115b057506001600160a01b03821660009081526006602052604090205460ff16155b1561160357600454600160a01b900460ff166116035760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b60448201526064016107f4565b6001600160a01b03831660009081526006602052604090205460ff1615801561164557506001600160a01b03821660009081526006602052604090205460ff16155b801561165357506010544311155b156116c057600a546001600160a01b03908116908316036116c05760405162461bcd60e51b815260206004820152602160248201527f53656c6c73206e6f7420616c6c6f77656420666f72206465616420626c6f636b6044820152607360f81b60648201526084016107f4565b600a546001600160a01b0384811691161480156116f657506001600160a01b03821660009081526006602052604090205460ff16155b801561170c5750600454600160b01b900460ff16155b156117c857600d548111156117635760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d697400000060448201526064016107f4565b600f548161177084610c33565b61177a9190612c1a565b11156117c85760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016107f4565b600a546001600160a01b038481169116148015906117ff57506001600160a01b03821660009081526006602052604090205460ff16155b801561182457506001600160a01b03831660009081526006602052604090205460ff16155b801561183a5750600454600160b01b900460ff16155b1561190b57600e548111156118915760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d6974000060448201526064016107f4565b600a546001600160a01b0383811691161461190b57600f54816118b384610c33565b6118bd9190612c1a565b111561190b5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016107f4565b6000600c5461191930610c33565b6004549111159150600160b01b900460ff161580156119415750600454600160a81b900460ff165b801561194a5750805b80156119645750600a546001600160a01b03858116911614155b801561198957506001600160a01b03841660009081526006602052604090205460ff16155b80156119ae57506001600160a01b03831660009081526006602052604090205460ff16155b15611a3a57600a546001600160a01b0390811690841603611a0457600c5460408051608081018252601554815260165460208201526017549181019190915260185460608201526119ff9190611bd5565b611a3a565b600c546040805160808101825260115481526012546020820152601354918101919091526014546060820152611a3a9190611bd5565b600454600190600090600160b01b900460ff1680611a7057506001600160a01b03861660009081526006602052604090205460ff165b80611a9357506001600160a01b03851660009081526006602052604090205460ff165b15611a9d57600091505b600a546001600160a01b0390811690861603611ab7575060015b611ac48686868585611d79565b505050505050565b6000806000611ad9612046565b9092509050611ae88183612bf8565b9250505090565b611af761285d565b611b02848484612229565b9050611b17818585611b12611acc565b612399565b60808601526060850152604084015260208301528152611b3f8184611b3a611acc565b612448565b60a08201529392505050565b3060008181526005602090815260408083206001600160a01b038716845290915290205460001981146108b0576108b084838584036112b0565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6004805460ff60b01b1916600160b01b17905560608101516020820151604083015160009291611c0491612c1a565b611c0e9190612c1a565b611c19906002612bc2565b9050600081836040015185611c2e9190612bc2565b611c389190612bf8565b90506000611c468286612be1565b905047611c5282612470565b600080611c5f8347612be1565b90506000876040015187611c739190612be1565b611c7d9083612bf8565b90506000886040015182611c919190612bc2565b90508015611ca357611ca387826125c2565b6020890151600090611cb6846002612bc2565b611cc09190612bc2565b600454909150600090611cdb906001600160a01b0316610c33565b9050600c54811115611d065785611cf3576000611cf9565b8a602001515b611d039083612bf8565b91505b8115611d2257600454611d22906001600160a01b03168361266f565b60608b0151600090611d35866002612bc2565b611d3f9190612bc2565b90508015611d5d57601d54611d5d906001600160a01b03168261266f565b50506004805460ff60b01b191690555050505050505050505050565b6000611d86848484611aef565b6001600160a01b03871660009081526007602052604090205490915060ff1615611de8576001600160a01b038616600090815260026020526040902054611dce908590612be1565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526007602052604090205460ff1615611e4b5760c08101516001600160a01b038616600090815260026020526040902054611e319190612c1a565b6001600160a01b0386166000908152600260205260409020555b80516001600160a01b038716600090815260016020526040902054611e709190612be1565b6001600160a01b0380881660009081526001602090815260408083209490945584015191881681529190912054611ea79190612c1a565b6001600160a01b0386166000908152600160205260409081902091909155810151151580611ed9575060008160e00151115b15611ef057611ef081604001518260e00151612788565b600081608001511180611f0857506000816101200151115b15611f8d57611f2081608001518261012001516127bd565b306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101400151846101000151856101200151611f719190612c1a565b611f7b9190612c1a565b60405190815260200160405180910390a35b600081606001511180611fa557506000816101000151115b15611fbd57611fbd8160600151826101000151612833565b60008160a001511180611fd557506000816101400151115b15611fed57611fed8160a00151826101400151612848565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c0015160405161203691815260200190565b60405180910390a3505050505050565b600b5460009081908161205b6009600a612bb3565b61206990633b9aca00612bc2565b905060005b6003548110156121ca5782600160006003848154811061209057612090612cb8565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806120fb57508160026000600384815481106120d4576120d4612cb8565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561212857600b5461210f6009600a612bb3565b61211d90633b9aca00612bc2565b945094505050509091565b600160006003838154811061213f5761213f612cb8565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461216e9084612be1565b9250600260006003838154811061218757612187612cb8565b60009182526020808320909101546001600160a01b031683528201929092526040019020546121b69083612be1565b9150806121c281612cce565b91505061206e565b506121d76009600a612bb3565b6121e590633b9aca00612bc2565b600b546121f29190612bf8565b82101561222057600b546122086009600a612bb3565b61221690633b9aca00612bc2565b9350935050509091565b90939092509050565b61223161285d565b826122425760c08101849052610a9a565b61226d6040518060800160405280600081526020016000815260200160008152602001600081525090565b82156122a2575060408051608081018252601554815260165460208201526017549181019190915260185460608201526122cd565b5060408051608081018252601154815260125460208201526013549181019190915260145460608201525b80516064906122dc9087612bc2565b6122e69190612bf8565b60e083015260208101516064906122fd9087612bc2565b6123079190612bf8565b610100830152604081015160649061231f9087612bc2565b6123299190612bf8565b61012083015260608101516064906123419087612bc2565b61234b9190612bf8565b610140830181905261012083015161010084015160e085015161236e9089612be1565b6123789190612be1565b6123829190612be1565b61238c9190612be1565b60c0830152509392505050565b6000808080806123a98689612bc2565b9450866123c15750839250600091508190508061243d565b858960e001516123d19190612bc2565b9250858961010001516123e49190612bc2565b9150858961012001516123f79190612bc2565b90506000868a610140015161240c9190612bc2565b905080828461241b878a612be1565b6124259190612be1565b61242f9190612be1565b6124399190612be1565b9450505b945094509450945094565b60008261245757506000610a9a565b818461014001516124689190612bc2565b949350505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106124a5576124a5612cb8565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156124fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125229190612c32565b8160018151811061253557612535612cb8565b6001600160a01b03928316602091820292909201015260095461255b91309116846112b0565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac94790612594908590600090869030904290600401612ce7565b600060405180830381600087803b1580156125ae57600080fd5b505af1158015611ac4573d6000803e3d6000fd5b6009546125da9030906001600160a01b0316846112b0565b6009546001600160a01b031663f305d7198230856000806126036000546001600160a01b031690565b426040518863ffffffff1660e01b815260040161262596959493929190612c4f565b60606040518083038185885af1158015612643573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126689190612c8a565b5050505050565b804710156126bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107f4565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461270c576040519150601f19603f3d011682016040523d82523d6000602084013e612711565b606091505b50509050806110c75760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016107f4565b81600b600082825461279a9190612be1565b9091555050601980548291906000906127b4908490612c1a565b90915550505050565b80601960020160008282546127d29190612c1a565b90915550503060009081526007602052604090205460ff161561281457306000908152600260205260408120805483929061280e908490612c1a565b90915550505b30600090815260016020526040812080548492906127b4908490612c1a565b80601960010160008282546127d29190612c1a565b80601960030160008282546127d29190612c1a565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600060208083528351808285015260005b818110156128e4578581018301518582016040015282016128c8565b818111156128f6576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146112ad57600080fd5b6000806040838503121561293457600080fd5b823561293f8161290c565b946020939093013593505050565b60008060006060848603121561296257600080fd5b833561296d8161290c565b9250602084013561297d8161290c565b929592945050506040919091013590565b6000602082840312156129a057600080fd5b5035919050565b80151581146112ad57600080fd5b600080604083850312156129c857600080fd5b8235915060208301356129da816129a7565b809150509250929050565b6000602082840312156129f757600080fd5b8135610a9a8161290c565b60008060408385031215612a1557600080fd5b8235612a208161290c565b915060208301356129da8161290c565b60208082526017908201527f54726164696e67206e6f7420656e61626c656420796574000000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215612aae57600080fd5b8151610a9a816129a7565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612b0a578160001904821115612af057612af0612ab9565b80851615612afd57918102915b93841c9390800290612ad4565b509250929050565b600082612b2157506001610bcd565b81612b2e57506000610bcd565b8160018114612b445760028114612b4e57612b6a565b6001915050610bcd565b60ff841115612b5f57612b5f612ab9565b50506001821b610bcd565b5060208310610133831016604e8410600b8410161715612b8d575081810a610bcd565b612b978383612acf565b8060001904821115612bab57612bab612ab9565b029392505050565b6000610a9a60ff841683612b12565b6000816000190483118215151615612bdc57612bdc612ab9565b500290565b600082821015612bf357612bf3612ab9565b500390565b600082612c1557634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115612c2d57612c2d612ab9565b500190565b600060208284031215612c4457600080fd5b8151610a9a8161290c565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b600080600060608486031215612c9f57600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b600060018201612ce057612ce0612ab9565b5060010190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612d375784516001600160a01b031683529383019391830191600101612d12565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122043be748e996f9bf8b2a7a2044478d7b9aacc4ae941d80564c650be932ab476a764736f6c634300080e0033

Deployed Bytecode Sourcemap

3318:18103:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6481:83;;;;;;;;;;-1:-1:-1;6551:5:0;;;;;;;;;;;;-1:-1:-1;;;6551:5:0;;;;6481:83;;;;;;;:::i;:::-;;;;;;;;7241:181;;;;;;;;;;-1:-1:-1;7241:181:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;7241:181:0;1072:187:1;21262:154:0;;;;;;;;;;-1:-1:-1;21262:154:0;;;;;:::i;:::-;;:::i;:::-;;6777:95;;;;;;;;;;;;;:::i;:::-;;;1871:25:1;;;1859:2;1844:18;6777:95:0;1725:177:1;7430:430:0;;;;;;;;;;-1:-1:-1;7430:430:0;;;;;:::i;:::-;;:::i;4744:28::-;;;;;;;;;;;;;;;;10242:150;;;;;;;;;;;;;:::i;10400:248::-;;;;;;;;;;-1:-1:-1;10400:248:0;;;;;:::i;:::-;;:::i;6663:83::-;;;;;;;;;;-1:-1:-1;6663:83:0;;4319:1;2234:36:1;;2222:2;2207:18;6663:83:0;2092:184:1;8087:228:0;;;;;;;;;;-1:-1:-1;8087:228:0;;;;;:::i;:::-;;:::i;9764:470::-;;;;;;;;;;-1:-1:-1;9764:470:0;;;;;:::i;:::-;;:::i;7868:211::-;;;;;;;;;;-1:-1:-1;7868:211:0;;;;;:::i;:::-;;:::i;3741:26::-;;;;;;;;;;-1:-1:-1;3741:26:0;;;;-1:-1:-1;;;3741:26:0;;;;;;10656:123;;;;;;;;;;-1:-1:-1;10656:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;10744:27:0;10720:4;10744:27;;;:18;:27;;;;;;;;;10656:123;4021:48;;;;;;;;;;-1:-1:-1;4021:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4624:49;;;;;;;;;;;;;;;;4680:51;;;;;;;;;;;;;;;;4569:48;;;;;;;;;;;;;;;;3774:23;;;;;;;;;;-1:-1:-1;3774:23:0;;;;-1:-1:-1;;;3774:23:0;;;;;;6880:198;;;;;;;;;;-1:-1:-1;6880:198:0;;;;;:::i;:::-;;:::i;1749:94::-;;;;;;;;;;;;;:::i;4779:38::-;;;;;;;;;;-1:-1:-1;4779:38:0;;;;;;;;;;;;;;;;;;;3201:25:1;;;3257:2;3242:18;;3235:34;;;;3285:18;;;3278:34;3343:2;3328:18;;3321:34;3188:3;3173:19;4779:38:0;2970:391:1;20831:151:0;;;;;;;;;;;;;:::i;3659:75::-;;;;;;;;;;-1:-1:-1;3659:75:0;;;;-1:-1:-1;;;;;3659:75:0;;;;;;-1:-1:-1;;;;;3530:32:1;;;3512:51;;3500:2;3485:18;3659:75:0;3366:203:1;9636:120:0;;;;;;;;;;-1:-1:-1;9636:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;9728:20:0;9704:4;9728:20;;;:11;:20;;;;;;;;;9636:120;1526:87;;;;;;;;;;-1:-1:-1;1572:7:0;1599:6;-1:-1:-1;;;;;1599:6:0;1526:87;;6570;;;;;;;;;;-1:-1:-1;6642:7:0;;;;;;;;;;;;-1:-1:-1;;;6642:7:0;;;;6570:87;;5270:36;;;;;;;;;;-1:-1:-1;5270:36:0;;;;;;;;;;;;;;;21058:196;;;;;;;;;;-1:-1:-1;21058:196:0;;;;;:::i;:::-;;:::i;10918:532::-;;;:::i;8323:390::-;;;;;;;;;;-1:-1:-1;8323:390:0;;;;;:::i;:::-;;:::i;4256:19::-;;;;;;;;;;-1:-1:-1;4256:19:0;;;;-1:-1:-1;;;;;4256:19:0;;;9441:187;;;;;;;;;;-1:-1:-1;9441:187:0;;;;;:::i;:::-;;:::i;7090:143::-;;;;;;;;;;-1:-1:-1;7090:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;7198:18:0;;;7171:7;7198:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7090:143;4507:55;;;;;;;;;;;;;;;;5747:74;;;;;;;;;;-1:-1:-1;5747:74:0;;;;-1:-1:-1;;;;;5747:74:0;;;1851:192;;;;;;;;;;-1:-1:-1;1851:192:0;;;;;:::i;:::-;;:::i;4824:42::-;;;;;;;;;;-1:-1:-1;4824:42:0;;;;;;;;;;;;;;;4228:21;;;;;;;;;;-1:-1:-1;4228:21:0;;;;-1:-1:-1;;;;;4228:21:0;;;7241:181;4130:14;;7336:4;;7316:10;;-1:-1:-1;;;4130:14:0;;;;;:42;;-1:-1:-1;;;;;;4148:24:0;;;;;;:15;:24;;;;;;;;4130:42;4122:78;;;;-1:-1:-1;;;4122:78:0;;;;;;;:::i;:::-;;;;;;;;;7353:39:::1;1027:10:::0;7376:7:::1;7385:6;7353:8;:39::i;:::-;-1:-1:-1::0;7410:4:0::1;::::0;7241:181;-1:-1:-1;;;7241:181:0:o;21262:154::-;1572:7;1599:6;-1:-1:-1;;;;;1599:6:0;1027:10;1661:23;1653:68;;;;-1:-1:-1;;;1653:68:0;;;;;;;:::i;:::-;21367:41:::1;::::0;-1:-1:-1;;;21367:41:0;;-1:-1:-1;;;;;5095:32:1;;;21367:41:0::1;::::0;::::1;5077:51:1::0;5144:18;;;5137:34;;;21367:27:0;::::1;::::0;::::1;::::0;5050:18:1;;21367:41:0::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21262:154:::0;;;:::o;6777:95::-;6830:7;4429:13;4319:1;4429:2;:13;:::i;:::-;4413:29;;:13;:29;:::i;:::-;6850:14;;6777:95;:::o;7430:430::-;4130:14;;7544:4;;7527:6;;-1:-1:-1;;;4130:14:0;;;;;:42;;-1:-1:-1;;;;;;4148:24:0;;;;;;:15;:24;;;;;;;;4130:42;4122:78;;;;-1:-1:-1;;;4122:78:0;;;;;;;:::i;:::-;7561:36:::1;7571:6;7579:9;7590:6;7561:9;:36::i;:::-;-1:-1:-1::0;;;;;7637:19:0;::::1;7610:24;7637:19:::0;;;:11:::1;:19;::::0;;;;;;;1027:10;7637:33;;;;;;;;7689:26;;::::1;;7681:79;;;::::0;-1:-1:-1;;;7681:79:0;;7322:2:1;7681:79:0::1;::::0;::::1;7304:21:1::0;7361:2;7341:18;;;7334:30;7400:34;7380:18;;;7373:62;-1:-1:-1;;;7451:18:1;;;7444:38;7499:19;;7681:79:0::1;7120:404:1::0;7681:79:0::1;7771:57;7780:6:::0;1027:10;7802:25:::1;7821:6:::0;7802:16;:25:::1;:::i;:::-;7771:8;:57::i;:::-;-1:-1:-1::0;7848:4:0::1;::::0;7430:430;-1:-1:-1;;;;;7430:430:0:o;10242:150::-;1572:7;1599:6;-1:-1:-1;;;;;1599:6:0;1027:10;1661:23;1653:68;;;;-1:-1:-1;;;1653:68:0;;;;;;;:::i;:::-;10295:14:::1;:21:::0;;-1:-1:-1;;;;10327:18:0;-1:-1:-1;;;10327:18:0;;;10372:12:::1;10356:13;:28:::0;10242:150::o;10400:248::-;10466:7;10505;;10494;:18;;10486:73;;;;-1:-1:-1;;;10486:73:0;;7861:2:1;10486:73:0;;;7843:21:1;7900:2;7880:18;;;7873:30;7939:34;7919:18;;;7912:62;-1:-1:-1;;;7990:18:1;;;7983:40;8040:19;;10486:73:0;7659:406:1;10486:73:0;10570:19;10593:10;:8;:10::i;:::-;10570:33;-1:-1:-1;10621:19:0;10570:33;10621:7;:19;:::i;:::-;10614:26;10400:248;-1:-1:-1;;;10400:248:0:o;8087:228::-;4130:14;;8188:4;;8167:10;;-1:-1:-1;;;4130:14:0;;;;;:42;;-1:-1:-1;;;;;;4148:24:0;;;;;;:15;:24;;;;;;;;4130:42;4122:78;;;;-1:-1:-1;;;4122:78:0;;;;;;;:::i;:::-;1027:10;8237:25:::1;::::0;;;:11:::1;:25;::::0;;;;;;;-1:-1:-1;;;;;8237:34:0;::::1;::::0;;;;;;;;8205:80:::1;::::0;1027:10;8228:7;;8237:47:::1;::::0;8274:10;;8237:47:::1;:::i;9764:470::-:0;9854:7;4429:13;4319:1;4429:2;:13;:::i;:::-;4413:29;;:13;:29;:::i;:::-;9882:7;:18;;9874:62;;;;-1:-1:-1;;;9874:62:0;;8627:2:1;9874:62:0;;;8609:21:1;8666:2;8646:18;;;8639:30;8705:33;8685:18;;;8678:61;8756:18;;9874:62:0;8425:355:1;9874:62:0;9952:17;9947:280;;9986:28;10017:32;10028:7;10037:4;10043:5;10017:10;:32::i;:::-;10071:9;;-1:-1:-1;10064:16:0;;-1:-1:-1;10064:16:0;9947:280;10113:28;10144:32;10155:7;10164:4;10170:5;10144:10;:32::i;:::-;10198:17;;;;-1:-1:-1;10191:24:0;;-1:-1:-1;10191:24:0;9947:280;9764:470;;;;:::o;7868:211::-;7945:10;10720:4;10744:27;;;:18;:27;;;;;;;;5207:35;;;;;;7968:29:::1;7984:4;7990:6;7968:15;:29::i;:::-;8008:63;::::0;-1:-1:-1;;;8008:63:0;;-1:-1:-1;;;;;9043:15:1;;8008:63:0::1;::::0;::::1;9025:34:1::0;8023:4:0::1;9075:18:1::0;;;9068:43;;;9127:18;;;9120:34;;;8023:4:0;8008:34:::1;::::0;8960:18:1;;8008:63:0::1;8785:375:1::0;6880:198:0;-1:-1:-1;;;;;6970:20:0;;6946:7;6970:20;;;:11;:20;;;;;;;;6966:49;;;-1:-1:-1;;;;;;6999:16:0;;;;;:7;:16;;;;;;;6880:198::o;6966:49::-;-1:-1:-1;;;;;7053:16:0;;;;;;:7;:16;;;;;;7033:37;;:19;:37::i;1749:94::-;1572:7;1599:6;-1:-1:-1;;;;;1599:6:0;1027:10;1661:23;1653:68;;;;-1:-1:-1;;;1653:68:0;;;;;;;:::i;:::-;1814:21:::1;1832:1;1814:9;:21::i;:::-;1749:94::o:0;20831:151::-;1572:7;1599:6;-1:-1:-1;;;;;1599:6:0;1027:10;1661:23;1653:68;;;;-1:-1:-1;;;1653:68:0;;;;;;;:::i;:::-;4429:13:::1;4319:1;4429:2;:13;:::i;:::-;4413:29;::::0;:13:::1;:29;:::i;:::-;20885:11;:21:::0;4429:13:::1;4319:1;4429:2;:13;:::i;:::-;4413:29;::::0;:13:::1;:29;:::i;:::-;20917:12;:22:::0;4429:13:::1;4319:1;4429:2;:13;:::i;:::-;4413:29;::::0;:13:::1;:29;:::i;:::-;20950:14;:24:::0;20831:151::o;21058:196::-;1572:7;1599:6;-1:-1:-1;;;;;1599:6:0;1027:10;1661:23;1653:68;;;;-1:-1:-1;;;1653:68:0;;;;;;;:::i;:::-;21158:9:::1;21133:21;:34;;21125:71;;;::::0;-1:-1:-1;;;21125:71:0;;9367:2:1;21125:71:0::1;::::0;::::1;9349:21:1::0;9406:2;9386:18;;;9379:30;9445:26;9425:18;;;9418:54;9489:18;;21125:71:0::1;9165:348:1::0;21125:71:0::1;21207:39;::::0;21215:10:::1;::::0;21207:39;::::1;;;::::0;21236:9;;21207:39:::1;::::0;;;21236:9;21215:10;21207:39;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;21058:196:::0;:::o;10918:532::-;1572:7;1599:6;-1:-1:-1;;;;;1599:6:0;1027:10;1661:23;1653:68;;;;-1:-1:-1;;;1653:68:0;;;;;;;:::i;:::-;10994:6:::1;;;;;;;;;-1:-1:-1::0;;;;;10994:6:0::1;-1:-1:-1::0;;;;;10994:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10985:37:0::1;;11031:4;11038:6;;;;;;;;;-1:-1:-1::0;;;;;11038:6:0::1;-1:-1:-1::0;;;;;11038:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10985:67;::::0;-1:-1:-1;;;;;;10985:67:0::1;::::0;;;;;;-1:-1:-1;;;;;10004:15:1;;;10985:67:0::1;::::0;::::1;9986:34:1::0;10056:15;;10036:18;;;10029:43;9921:18;;10985:67:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10978:4;:74:::0;;-1:-1:-1;;;;;10978:74:0;;::::1;-1:-1:-1::0;;;;;;10978:74:0;;::::1;::::0;::::1;::::0;;:4:::1;11063:17:::0;;;:11:::1;:17;::::0;;;;;;;:24;;-1:-1:-1;;11063:24:0;;::::1;10978:74:::0;11063:24;;::::1;::::0;;;11113:4;;11098:9:::1;:20:::0;;;;::::1;::::0;;;;::::1;::::0;;;;::::1;11113:4:::0;;::::1;11098:20;::::0;;;11145:4;;;::::1;11129:21:::0;;:15:::1;:21:::0;;;;;:28;;;;::::1;::::0;;::::1;::::0;;11200:6:::1;::::0;11168:59:::1;::::0;11185:4:::1;::::0;11200:6:::1;-1:-1:-1::0;;11168:8:0::1;:59::i;:::-;11238:6;::::0;-1:-1:-1;;;;;11238:6:0::1;:22;11268:9;11301:4;11321:24;11301:4:::0;11321:9:::1;:24::i;:::-;11360:1;11377::::0;11394:7:::1;1572::::0;1599:6;-1:-1:-1;;;;;1599:6:0;;1526:87;11394:7:::1;11416:15;11238:204;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;10918:532::o:0;8323:390::-;4130:14;;8429:4;;8408:10;;-1:-1:-1;;;4130:14:0;;;;;:42;;-1:-1:-1;;;;;;4148:24:0;;;;;;:15;:24;;;;;;;;4130:42;4122:78;;;;-1:-1:-1;;;4122:78:0;;;;;;;:::i;:::-;1027:10;8446:24:::1;8473:25:::0;;;:11:::1;:25;::::0;;;;;;;-1:-1:-1;;;;;8473:34:0;::::1;::::0;;;;;;;;8526:35;;::::1;;8518:85;;;::::0;-1:-1:-1;;;8518:85:0;;11208:2:1;8518:85:0::1;::::0;::::1;11190:21:1::0;11247:2;11227:18;;;11220:30;11286:34;11266:18;;;11259:62;-1:-1:-1;;;11337:18:1;;;11330:35;11382:19;;8518:85:0::1;11006:401:1::0;8518:85:0::1;8614:67;1027:10:::0;8637:7;8646:34:::1;8665:15:::0;8646:16;:34:::1;:::i;8614:67::-;-1:-1:-1::0;8701:4:0::1;::::0;8323:390;-1:-1:-1;;;;8323:390:0:o;9441:187::-;4130:14;;9539:4;;9518:10;;-1:-1:-1;;;4130:14:0;;;;;:42;;-1:-1:-1;;;;;;4148:24:0;;;;;;:15;:24;;;;;;;;4130:42;4122:78;;;;-1:-1:-1;;;4122:78:0;;;;;;;:::i;:::-;9560:40:::1;9570:10;9582:9;9593:6;9560:9;:40::i;1851:192::-:0;1572:7;1599:6;-1:-1:-1;;;;;1599:6:0;1027:10;1661:23;1653:68;;;;-1:-1:-1;;;1653:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1940:22:0;::::1;1932:73;;;::::0;-1:-1:-1;;;1932:73:0;;11614:2:1;1932:73:0::1;::::0;::::1;11596:21:1::0;11653:2;11633:18;;;11626:30;11692:34;11672:18;;;11665:62;-1:-1:-1;;;11743:18:1;;;11736:36;11789:19;;1932:73:0::1;11412:402:1::0;1932:73:0::1;2016:19;2026:8;2016:9;:19::i;:::-;1851:192:::0;:::o;8725:335::-;-1:-1:-1;;;;;8818:19:0;;8810:68;;;;-1:-1:-1;;;8810:68:0;;12021:2:1;8810:68:0;;;12003:21:1;12060:2;12040:18;;;12033:30;12099:34;12079:18;;;12072:62;-1:-1:-1;;;12150:18:1;;;12143:34;12194:19;;8810:68:0;11819:400:1;8810:68:0;-1:-1:-1;;;;;8897:21:0;;8889:68;;;;-1:-1:-1;;;8889:68:0;;12426:2:1;8889:68:0;;;12408:21:1;12465:2;12445:18;;;12438:30;12504:34;12484:18;;;12477:62;-1:-1:-1;;;12555:18:1;;;12548:32;12597:19;;8889:68:0;12224:398:1;8889:68:0;-1:-1:-1;;;;;8968:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9020:32;;1871:25:1;;;9020:32:0;;1844:18:1;9020:32:0;;;;;;;8725:335;;;:::o;15134:1961::-;-1:-1:-1;;;;;15222:18:0;;15214:68;;;;-1:-1:-1;;;15214:68:0;;12829:2:1;15214:68:0;;;12811:21:1;12868:2;12848:18;;;12841:30;12907:34;12887:18;;;12880:62;-1:-1:-1;;;12958:18:1;;;12951:35;13003:19;;15214:68:0;12627:401:1;15214:68:0;-1:-1:-1;;;;;15301:16:0;;15293:64;;;;-1:-1:-1;;;15293:64:0;;13235:2:1;15293:64:0;;;13217:21:1;13274:2;13254:18;;;13247:30;13313:34;13293:18;;;13286:62;-1:-1:-1;;;13364:18:1;;;13357:33;13407:19;;15293:64:0;13033:399:1;15293:64:0;15385:1;15376:6;:10;15368:64;;;;-1:-1:-1;;;15368:64:0;;13639:2:1;15368:64:0;;;13621:21:1;13678:2;13658:18;;;13651:30;13717:34;13697:18;;;13690:62;-1:-1:-1;;;13768:18:1;;;13761:39;13817:19;;15368:64:0;13437:405:1;15368:64:0;15461:15;15471:4;15461:9;:15::i;:::-;15451:6;:25;;15443:86;;;;-1:-1:-1;;;15443:86:0;;14049:2:1;15443:86:0;;;14031:21:1;14088:2;14068:18;;;14061:30;14127:34;14107:18;;;14100:62;-1:-1:-1;;;14178:18:1;;;14171:47;14235:19;;15443:86:0;13847:413:1;15443:86:0;-1:-1:-1;;;;;15554:24:0;;;;;;:18;:24;;;;;;;;15553:25;:52;;;;-1:-1:-1;;;;;;15583:22:0;;;;;;:18;:22;;;;;;;;15582:23;15553:52;15550:128;;;15629:14;;-1:-1:-1;;;15629:14:0;;;;15621:45;;;;-1:-1:-1;;;15621:45:0;;14467:2:1;15621:45:0;;;14449:21:1;14506:2;14486:18;;;14479:30;-1:-1:-1;;;14525:18:1;;;14518:48;14583:18;;15621:45:0;14265:342:1;15621:45:0;-1:-1:-1;;;;;15702:24:0;;;;;;:18;:24;;;;;;;;15701:25;:52;;;;-1:-1:-1;;;;;;15731:22:0;;;;;;:18;:22;;;;;;;;15730:23;15701:52;:85;;;;;15773:13;;15757:12;:29;;15701:85;15698:173;;;15817:4;;-1:-1:-1;;;;;15817:4:0;;;15811:10;;;;15803:56;;;;-1:-1:-1;;;15803:56:0;;14814:2:1;15803:56:0;;;14796:21:1;14853:2;14833:18;;;14826:30;14892:34;14872:18;;;14865:62;-1:-1:-1;;;14943:18:1;;;14936:31;14984:19;;15803:56:0;14612:397:1;15803:56:0;15902:4;;-1:-1:-1;;;;;15894:12:0;;;15902:4;;15894:12;:39;;;;-1:-1:-1;;;;;;15911:22:0;;;;;;:18;:22;;;;;;;;15910:23;15894:39;:52;;;;-1:-1:-1;15938:8:0;;-1:-1:-1;;;15938:8:0;;;;15937:9;15894:52;15891:246;;;15980:11;;15970:6;:21;;15962:63;;;;-1:-1:-1;;;15962:63:0;;15216:2:1;15962:63:0;;;15198:21:1;15255:2;15235:18;;;15228:30;15294:31;15274:18;;;15267:59;15343:18;;15962:63:0;15014:353:1;15962:63:0;16074:14;;16064:6;16048:13;16058:2;16048:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;16040:85;;;;-1:-1:-1;;;16040:85:0;;15574:2:1;16040:85:0;;;15556:21:1;;;15593:18;;;15586:30;15652:34;15632:18;;;15625:62;15704:18;;16040:85:0;15372:356:1;16040:85:0;16168:4;;-1:-1:-1;;;;;16160:12:0;;;16168:4;;16160:12;;;;:39;;-1:-1:-1;;;;;;16177:22:0;;;;;;:18;:22;;;;;;;;16176:23;16160:39;:68;;;;-1:-1:-1;;;;;;16204:24:0;;;;;;:18;:24;;;;;;;;16203:25;16160:68;:81;;;;-1:-1:-1;16233:8:0;;-1:-1:-1;;;16233:8:0;;;;16232:9;16160:81;16157:325;;;16275:12;;16265:6;:22;;16257:65;;;;-1:-1:-1;;;16257:65:0;;15935:2:1;16257:65:0;;;15917:21:1;15974:2;15954:18;;;15947:30;16013:32;15993:18;;;15986:60;16063:18;;16257:65:0;15733:354:1;16257:65:0;16346:4;;-1:-1:-1;;;;;16340:10:0;;;16346:4;;16340:10;16337:134;;16404:14;;16394:6;16378:13;16388:2;16378:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;16370:85;;;;-1:-1:-1;;;16370:85:0;;15574:2:1;16370:85:0;;;15556:21:1;;;15593:18;;;15586:30;15652:34;15632:18;;;15625:62;15704:18;;16370:85:0;15372:356:1;16370:85:0;16501:12;16544:18;;16516:24;16534:4;16516:9;:24::i;:::-;16577:8;;-1:-1:-1;;16516:46:0;;-1:-1:-1;;;;16577:8:0;;;;16576:9;:24;;;;-1:-1:-1;16589:11:0;;-1:-1:-1;;;16589:11:0;;;;16576:24;:35;;;;;16604:7;16576:35;:51;;;;-1:-1:-1;16623:4:0;;-1:-1:-1;;;;;16615:12:0;;;16623:4;;16615:12;;16576:51;:80;;;;-1:-1:-1;;;;;;16632:24:0;;;;;;:18;:24;;;;;;;;16631:25;16576:80;:107;;;;-1:-1:-1;;;;;;16661:22:0;;;;;;:18;:22;;;;;;;;16660:23;16576:107;16573:261;;;16708:4;;-1:-1:-1;;;;;16708:4:0;;;16702:10;;;;16699:123;;16730:18;;16715:45;;;;;;;;16750:9;16715:45;;;;;;;;;;;;;;;;;;;;;;;;;;16730:18;16715:14;:45::i;:::-;16699:123;;;16796:18;;16781:41;;;;;;;;16816:5;16781:41;;;;;;;;;;;;;;;;;;;;;;;;;;16796:18;16781:14;:41::i;:::-;16907:8;;16859:4;;16844:12;;-1:-1:-1;;;16907:8:0;;;;;:36;;-1:-1:-1;;;;;;16919:24:0;;;;;;:18;:24;;;;;;;;16907:36;:62;;;-1:-1:-1;;;;;;16947:22:0;;;;;;:18;:22;;;;;;;;16907:62;16904:82;;;16981:5;16971:15;;16904:82;17006:4;;-1:-1:-1;;;;;17006:4:0;;;17000:10;;;;16997:28;;-1:-1:-1;17021:4:0;16997:28;17038:49;17053:4;17059:2;17063:6;17071:7;17080:6;17038:14;:49::i;:::-;15203:1892;;;15134:1961;;;:::o;14968:158::-;15009:7;15030:15;15047;15066:19;:17;:19::i;:::-;15029:56;;-1:-1:-1;15029:56:0;-1:-1:-1;15103:15:0;15029:56;;15103:15;:::i;:::-;15096:22;;;;14968:158;:::o;12335:471::-;12421:36;;:::i;:::-;12482:37;12494:7;12503;12512:6;12482:11;:37::i;:::-;12470:49;;12639:53;12652:9;12663:7;12672;12681:10;:8;:10::i;:::-;12639:12;:53::i;:::-;12615:20;;;12530:162;12593:20;;;12530:162;12577:14;;;12530:162;12550:25;;;12530:162;;;12727:44;12531:9;12751:7;12760:10;:8;:10::i;:::-;12727:12;:44::i;:::-;12704:19;;;12703:68;12335:471;;;;;:::o;9072:361::-;9182:4;9158:13;7198:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;7198:27:0;;;;;;;;;;-1:-1:-1;;9265:37:0;;9261:165;;9348:51;9357:7;9366:5;9392:6;9373:16;:25;9348:8;:51::i;2051:173::-;2107:16;2126:6;;-1:-1:-1;;;;;2143:17:0;;;-1:-1:-1;;;;;;2143:17:0;;;;;;2176:40;;2126:6;;;;;;;2176:40;;2107:16;2176:40;2096:128;2051:173;:::o;18319:1385::-;5679:8;:15;;-1:-1:-1;;;;5679:15:0;-1:-1:-1;;;5679:15:0;;;18474:13:::1;::::0;::::1;::::0;18457:14:::1;::::0;::::1;::::0;18440::::1;::::0;::::1;::::0;5679:15;;18474:13;18440:31:::1;::::0;::::1;:::i;:::-;:47;;;;:::i;:::-;18439:53;::::0;18491:1:::1;18439:53;:::i;:::-;18417:75;;18503:32;18573:11;18556:4;:14;;;18538:15;:32;;;;:::i;:::-;:46;;;;:::i;:::-;18503:81:::0;-1:-1:-1;18595:14:0::1;18612:42;18503:81:::0;18612:15;:42:::1;:::i;:::-;18595:59:::0;-1:-1:-1;18692:21:0::1;18726:24;18595:59:::0;18726:16:::1;:24::i;:::-;18761:12;::::0;18809:38:::1;18833:14:::0;18809:21:::1;:38;:::i;:::-;18786:61;;18858:19;18909:4;:14;;;18895:11;:28;;;;:::i;:::-;18879:45;::::0;:12;:45:::1;:::i;:::-;18858:66;;18935:29;18981:4;:14;;;18967:11;:28;;;;:::i;:::-;18935:60:::0;-1:-1:-1;19011:25:0;;19008:158:::1;;19093:61;19106:24;19132:21;19093:12;:61::i;:::-;19219:14;::::0;::::1;::::0;19178:20:::1;::::0;19201:15:::1;:11:::0;19215:1:::1;19201:15;:::i;:::-;:32;;;;:::i;:::-;19275:15;::::0;19178:55;;-1:-1:-1;19244:18:0::1;::::0;19265:26:::1;::::0;-1:-1:-1;;;;;19275:15:0::1;19265:9;:26::i;:::-;19244:47;;19319:18;;19306:10;:31;19302:124;;;19385:7;:28;;19412:1;19385:28;;;19395:4;:14;;;19385:28;19369:45;::::0;:12;:45:::1;:::i;:::-;19354:60;;19302:124;19439:16:::0;;19436:95:::1;;19479:15;::::0;19471:48:::1;::::0;-1:-1:-1;;;;;19479:15:0::1;19506:12:::0;19471:34:::1;:48::i;:::-;19581:13;::::0;::::1;::::0;19541:19:::1;::::0;19563:15:::1;:11:::0;19577:1:::1;19563:15;:::i;:::-;:31;;;;:::i;:::-;19541:53:::0;-1:-1:-1;19608:15:0;;19605:92:::1;;19647:14;::::0;19639:46:::1;::::0;-1:-1:-1;;;;;19647:14:0::1;19673:11:::0;19639:33:::1;:46::i;:::-;-1:-1:-1::0;;5717:8:0;:16;;-1:-1:-1;;;;5717:16:0;;;-1:-1:-1;;;;;;;;;;;18319:1385:0:o;17176:1135::-;17300:28;17331:36;17342:7;17351;17360:6;17331:10;:36::i;:::-;-1:-1:-1;;;;;17384:19:0;;;;;;:11;:19;;;;;;17300:67;;-1:-1:-1;17384:19:0;;17380:115;;;-1:-1:-1;;;;;17460:15:0;;;;;;:7;:15;;;;;;:23;;17476:7;;17460:23;:::i;:::-;-1:-1:-1;;;;;17442:15:0;;;;;;:7;:15;;;;;:41;17380:115;-1:-1:-1;;;;;17509:22:0;;;;;;:11;:22;;;;;;;;17505:130;;;17606:17;;;;-1:-1:-1;;;;;17587:18:0;;;;;;:7;:18;;;;;;:36;;17606:17;17587:36;:::i;:::-;-1:-1:-1;;;;;17566:18:0;;;;;;:7;:18;;;;;:57;17505:130;17681:9;;-1:-1:-1;;;;;17665:15:0;;17681:9;17665:15;;;:7;:15;;;;;;:25;;17681:9;17665:25;:::i;:::-;-1:-1:-1;;;;;17647:15:0;;;;;;;:7;:15;;;;;;;;:43;;;;17741:17;;;17722:18;;;;;;;;;;:36;;17741:17;17722:36;:::i;:::-;-1:-1:-1;;;;;17701:18:0;;;;;;:7;:18;;;;;;;:57;;;;17782:6;;;:10;;;:24;;;17805:1;17796;:6;;;:10;17782:24;17779:56;;;17808:27;17820:1;:6;;;17828:1;:6;;;17808:11;:27::i;:::-;17864:1;17849;:12;;;:16;:36;;;;17884:1;17869;:12;;;:16;17849:36;17846:203;;;17902:41;17917:1;:12;;;17930:1;:12;;;17902:14;:41::i;:::-;17988:4;-1:-1:-1;;;;;17963:74:0;17972:6;-1:-1:-1;;;;;17963:74:0;;18025:1;:11;;;18010:1;:12;;;17995:1;:12;;;:27;;;;:::i;:::-;:41;;;;:::i;:::-;17963:74;;1871:25:1;;;1859:2;1844:18;17963:74:0;;;;;;;17846:203;18077:1;18062;:12;;;:16;:36;;;;18097:1;18082;:12;;;:16;18062:36;18059:83;;;18100:42;18115:1;:12;;;18129:1;:12;;;18100:14;:42::i;:::-;18170:1;18156;:11;;;:15;:34;;;;18189:1;18175;:11;;;:15;18156:34;18153:78;;;18192:39;18206:1;:11;;;18219:1;:11;;;18192:13;:39::i;:::-;18264:9;-1:-1:-1;;;;;18247:46:0;18256:6;-1:-1:-1;;;;;18247:46:0;;18275:1;:17;;;18247:46;;;;1871:25:1;;1859:2;1844:18;;1725:177;18247:46:0;;;;;;;;17287:1024;17176:1135;;;;;:::o;14420:540::-;14517:7;;14470;;;;;4429:13;4319:1;4429:2;:13;:::i;:::-;4413:29;;:13;:29;:::i;:::-;14535:25;;14576:9;14571:279;14595:9;:16;14591:20;;14571:279;;;14661:7;14637;:21;14645:9;14655:1;14645:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;14645:12:0;14637:21;;;;;;;;;;;;;:31;;:66;;;14696:7;14672;:21;14680:9;14690:1;14680:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;14680:12:0;14672:21;;;;;;;;;;;;;:31;14637:66;14633:97;;;14713:7;;4429:13;4319:1;4429:2;:13;:::i;:::-;4413:29;;:13;:29;:::i;:::-;14705:25;;;;;;;14420:540;;:::o;14633:97::-;14763:7;:21;14771:9;14781:1;14771:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;14771:12:0;14763:21;;;;;;;;;;;;;14755:29;;:7;:29;:::i;:::-;14745:39;;14817:7;:21;14825:9;14835:1;14825:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;14825:12:0;14817:21;;;;;;;;;;;;;14809:29;;:7;:29;:::i;:::-;14799:39;-1:-1:-1;14613:3:0;;;;:::i;:::-;;;;14571:279;;;-1:-1:-1;4429:13:0;4319:1;4429:2;:13;:::i;:::-;4413:29;;:13;:29;:::i;:::-;14874:7;;:15;;;;:::i;:::-;14864:7;:25;14860:56;;;14899:7;;4429:13;4319:1;4429:2;:13;:::i;:::-;4413:29;;:13;:29;:::i;:::-;14891:25;;;;;;14420:540;;:::o;14860:56::-;14935:7;;14944;;-1:-1:-1;14420:540:0;-1:-1:-1;14420:540:0:o;12814:623::-;12901:28;;:::i;:::-;12948:7;12944:86;;12970:17;;;:27;;;13010:8;;12944:86;13040:17;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13040:17:0;13071:6;13068:55;;;-1:-1:-1;13079:16:0;;;;;;;;13086:9;13079:16;;;;;;;;;;;;;;;;;;;;;;;;13068:55;;;-1:-1:-1;13111:12:0;;;;;;;;13118:5;13111:12;;;;;;;;;;;;;;;;;;;;;;;;13068:55;13161:8;;13170:3;;13153:16;;:7;:16;:::i;:::-;:20;;;;:::i;:::-;13144:6;;;:29;13207:14;;;;13222:3;;13199:22;;:7;:22;:::i;:::-;:26;;;;:::i;:::-;13184:12;;;:41;13259:14;;;;13274:3;;13251:22;;:7;:22;:::i;:::-;:26;;;;:::i;:::-;13236:12;;;:41;13310:13;;;;13324:3;;13302:21;;:7;:21;:::i;:::-;:25;;;;:::i;:::-;13288:11;;;:39;;;13386:12;;;;13373;;;;13366:6;;;;13358:14;;:7;:14;:::i;:::-;:27;;;;:::i;:::-;:40;;;;:::i;:::-;:52;;;;:::i;:::-;13338:17;;;:72;-1:-1:-1;12814:623:0;;;;;:::o;13445:683::-;13571:15;;;;;13686:19;13694:11;13686:7;:19;:::i;:::-;13676:29;;13722:7;13718:69;;-1:-1:-1;13751:7:0;;-1:-1:-1;13769:1:0;;-1:-1:-1;13769:1:0;;-1:-1:-1;13769:1:0;13744:31;;13718:69;13813:11;13806:1;:6;;;:18;;;;:::i;:::-;13799:25;;13861:11;13848:1;:12;;;:24;;;;:::i;:::-;13835:37;;13909:11;13896:1;:12;;;:24;;;;:::i;:::-;13883:37;;13931:17;13963:11;13951:1;:11;;;:23;;;;:::i;:::-;13931:43;-1:-1:-1;13931:43:0;14028:10;14017;14004:12;14012:4;14004:7;:12;:::i;:::-;:23;;;;:::i;:::-;:34;;;;:::i;:::-;:44;;;;:::i;:::-;13985:63;;14059:61;13445:683;;;;;;;;;;:::o;14140:272::-;14249:17;14285:7;14281:47;;-1:-1:-1;14314:1:0;14307:9;;14281:47;14364:11;14352:1;:11;;;:23;;;;:::i;:::-;14340:35;14140:272;-1:-1:-1;;;;14140:272:0:o;20257:562::-;20407:16;;;20421:1;20407:16;;;;;;;;20383:21;;20407:16;;;;;;;;;;-1:-1:-1;20407:16:0;20383:40;;20452:4;20434;20439:1;20434:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20434:23:0;;;:7;;;;;;;;;;:23;;;;20478:6;;:13;;;-1:-1:-1;;;20478:13:0;;;;:6;;;;;:11;;:13;;;;;20434:7;;20478:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20468:4;20473:1;20468:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20468:23:0;;;:7;;;;;;;;;:23;20536:6;;20504:53;;20521:4;;20536:6;20545:11;20504:8;:53::i;:::-;20596:6;;:215;;-1:-1:-1;;;20596:215:0;;-1:-1:-1;;;;;20596:6:0;;;;:57;;:215;;20668:11;;20596:6;;20738:4;;20765;;20785:15;;20596:215;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19712:495;19892:6;;19860:53;;19877:4;;-1:-1:-1;;;;;19892:6:0;19901:11;19860:8;:53::i;:::-;19956:6;;-1:-1:-1;;;;;19956:6:0;:22;19986:9;20019:4;20039:11;19956:6;;20151:7;1572;1599:6;-1:-1:-1;;;;;1599:6:0;;1526:87;20151:7;20173:15;19956:243;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19712:495;;:::o;2373:317::-;2488:6;2463:21;:31;;2455:73;;;;-1:-1:-1;;;2455:73:0;;17683:2:1;2455:73:0;;;17665:21:1;17722:2;17702:18;;;17695:30;17761:31;17741:18;;;17734:59;17810:18;;2455:73:0;17481:353:1;2455:73:0;2542:12;2560:9;-1:-1:-1;;;;;2560:14:0;2582:6;2560:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2541:52;;;2612:7;2604:78;;;;-1:-1:-1;;;2604:78:0;;18251:2:1;2604:78:0;;;18233:21:1;18290:2;18270:18;;;18263:30;18329:34;18309:18;;;18302:62;18400:28;18380:18;;;18373:56;18446:19;;2604:78:0;18049:422:1;10787:123:0;10865:4;10855:7;;:14;;;;;;;:::i;:::-;;;;-1:-1:-1;;10880:11:0;:22;;10898:4;;10880:11;:15;;:22;;10898:4;;10880:22;:::i;:::-;;;;-1:-1:-1;;;;10787:123:0:o;11458:284::-;11565:10;11541:11;:21;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;11611:4:0;11591:26;;;;:11;:26;;;;;;;;11588:101;;;11659:4;11643:22;;;;:7;:22;;;;;:34;;11667:10;;11643:22;:34;;11667:10;;11643:34;:::i;:::-;;;;-1:-1:-1;;11588:101:0;11715:4;11699:22;;;;:7;:22;;;;;:35;;11724:10;;11699:22;:35;;11724:10;;11699:35;:::i;11750:284::-;11857:10;11833:11;:21;;;:34;;;;;;;:::i;12046:277::-;12149:9;12126:11;:20;;;:32;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:597: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;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1264:456::-;1341:6;1349;1357;1410:2;1398:9;1389:7;1385:23;1381:32;1378:52;;;1426:1;1423;1416:12;1378:52;1465:9;1452:23;1484:31;1509:5;1484:31;:::i;:::-;1534:5;-1:-1:-1;1591:2:1;1576:18;;1563:32;1604:33;1563:32;1604:33;:::i;:::-;1264:456;;1656:7;;-1:-1:-1;;;1710:2:1;1695:18;;;;1682:32;;1264:456::o;1907:180::-;1966:6;2019:2;2007:9;1998:7;1994:23;1990:32;1987:52;;;2035:1;2032;2025:12;1987:52;-1:-1:-1;2058:23:1;;1907:180;-1:-1:-1;1907:180:1:o;2281:118::-;2367:5;2360:13;2353:21;2346:5;2343:32;2333:60;;2389:1;2386;2379:12;2404:309;2469:6;2477;2530:2;2518:9;2509:7;2505:23;2501:32;2498:52;;;2546:1;2543;2536:12;2498:52;2582:9;2569:23;2559:33;;2642:2;2631:9;2627:18;2614:32;2655:28;2677:5;2655:28;:::i;:::-;2702:5;2692:15;;;2404:309;;;;;:::o;2718:247::-;2777:6;2830:2;2818:9;2809:7;2805:23;2801:32;2798:52;;;2846:1;2843;2836:12;2798:52;2885:9;2872:23;2904:31;2929:5;2904:31;:::i;3574:388::-;3642:6;3650;3703:2;3691:9;3682:7;3678:23;3674:32;3671:52;;;3719:1;3716;3709:12;3671:52;3758:9;3745:23;3777:31;3802:5;3777:31;:::i;:::-;3827:5;-1:-1:-1;3884:2:1;3869:18;;3856:32;3897:33;3856:32;3897:33;:::i;4190:347::-;4392:2;4374:21;;;4431:2;4411:18;;;4404:30;4470:25;4465:2;4450:18;;4443:53;4528:2;4513:18;;4190:347::o;4542:356::-;4744:2;4726:21;;;4763:18;;;4756:30;4822:34;4817:2;4802:18;;4795:62;4889:2;4874:18;;4542:356::o;5182:245::-;5249:6;5302:2;5290:9;5281:7;5277:23;5273:32;5270:52;;;5318:1;5315;5308:12;5270:52;5350:9;5344:16;5369:28;5391:5;5369:28;:::i;5432:127::-;5493:10;5488:3;5484:20;5481:1;5474:31;5524:4;5521:1;5514:15;5548:4;5545:1;5538:15;5564:422;5653:1;5696:5;5653:1;5710:270;5731:7;5721:8;5718:21;5710:270;;;5790:4;5786:1;5782:6;5778:17;5772:4;5769:27;5766:53;;;5799:18;;:::i;:::-;5849:7;5839:8;5835:22;5832:55;;;5869:16;;;;5832:55;5948:22;;;;5908:15;;;;5710:270;;;5714:3;5564:422;;;;;:::o;5991:806::-;6040:5;6070:8;6060:80;;-1:-1:-1;6111:1:1;6125:5;;6060:80;6159:4;6149:76;;-1:-1:-1;6196:1:1;6210:5;;6149:76;6241:4;6259:1;6254:59;;;;6327:1;6322:130;;;;6234:218;;6254:59;6284:1;6275:10;;6298:5;;;6322:130;6359:3;6349:8;6346:17;6343:43;;;6366:18;;:::i;:::-;-1:-1:-1;;6422:1:1;6408:16;;6437:5;;6234:218;;6536:2;6526:8;6523:16;6517:3;6511:4;6508:13;6504:36;6498:2;6488:8;6485:16;6480:2;6474:4;6471:12;6467:35;6464:77;6461:159;;;-1:-1:-1;6573:19:1;;;6605:5;;6461:159;6652:34;6677:8;6671:4;6652:34;:::i;:::-;6722:6;6718:1;6714:6;6710:19;6701:7;6698:32;6695:58;;;6733:18;;:::i;:::-;6771:20;;5991:806;-1:-1:-1;;;5991:806:1:o;6802:140::-;6860:5;6889:47;6930:4;6920:8;6916:19;6910:4;6889:47;:::i;6947:168::-;6987:7;7053:1;7049;7045:6;7041:14;7038:1;7035:21;7030:1;7023:9;7016:17;7012:45;7009:71;;;7060:18;;:::i;:::-;-1:-1:-1;7100:9:1;;6947:168::o;7529:125::-;7569:4;7597:1;7594;7591:8;7588:34;;;7602:18;;:::i;:::-;-1:-1:-1;7639:9:1;;7529:125::o;8070:217::-;8110:1;8136;8126:132;;8180:10;8175:3;8171:20;8168:1;8161:31;8215:4;8212:1;8205:15;8243:4;8240:1;8233:15;8126:132;-1:-1:-1;8272:9:1;;8070:217::o;8292:128::-;8332:3;8363:1;8359:6;8356:1;8353:13;8350:39;;;8369:18;;:::i;:::-;-1:-1:-1;8405:9:1;;8292:128::o;9518:251::-;9588:6;9641:2;9629:9;9620:7;9616:23;9612:32;9609:52;;;9657:1;9654;9647:12;9609:52;9689:9;9683:16;9708:31;9733:5;9708:31;:::i;10083:607::-;-1:-1:-1;;;;;10442:15:1;;;10424:34;;10489:2;10474:18;;10467:34;;;;10532:2;10517:18;;10510:34;;;;10575:2;10560:18;;10553:34;;;;10624:15;;;10618:3;10603:19;;10596:44;10404:3;10656:19;;10649:35;;;;10373:3;10358:19;;10083:607::o;10695:306::-;10783:6;10791;10799;10852:2;10840:9;10831:7;10827:23;10823:32;10820:52;;;10868:1;10865;10858:12;10820:52;10897:9;10891:16;10881:26;;10947:2;10936:9;10932:18;10926:25;10916:35;;10991:2;10980:9;10976:18;10970:25;10960:35;;10695:306;;;;;:::o;16092:127::-;16153:10;16148:3;16144:20;16141:1;16134:31;16184:4;16181:1;16174:15;16208:4;16205:1;16198:15;16224:135;16263:3;16284:17;;;16281:43;;16304:18;;:::i;:::-;-1:-1:-1;16351:1:1;16340:13;;16224:135::o;16496:980::-;16758:4;16806:3;16795:9;16791:19;16837:6;16826:9;16819:25;16863:2;16901:6;16896:2;16885:9;16881:18;16874:34;16944:3;16939:2;16928:9;16924:18;16917:31;16968:6;17003;16997:13;17034:6;17026;17019:22;17072:3;17061:9;17057:19;17050:26;;17111:2;17103:6;17099:15;17085:29;;17132:1;17142:195;17156:6;17153:1;17150:13;17142:195;;;17221:13;;-1:-1:-1;;;;;17217:39:1;17205:52;;17312:15;;;;17277:12;;;;17253:1;17171:9;17142:195;;;-1:-1:-1;;;;;;;17393:32:1;;;;17388:2;17373:18;;17366:60;-1:-1:-1;;;17457:3:1;17442:19;17435:35;17354:3;16496:980;-1:-1:-1;;;16496:980:1:o

Swarm Source

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