ETH Price: $2,523.57 (-4.34%)

Token

Headbangers Club (Headbangers)
 

Overview

Max Total Supply

6,666,666,666 Headbangers

Holders

665

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
675.592643998433551353 Headbangers

Value
$0.00
0x42a82c58cd2276cac5aa88ddfefbe048d4f5f1a4
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:
HEADBANGERS

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-03-21
*/

/*
1% RFI
6% Marketing
2% Auto LP

*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

interface IBEP20 {
    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);
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

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

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }
    
    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IPancakePair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

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

interface IPancakeRouter02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

abstract contract IBEP20Extented is IBEP20 {
    function decimals() external view virtual returns (uint8);
    function name() external view virtual returns (string memory);
    function symbol() external view virtual returns (string memory);
}

contract HEADBANGERS is Context, IBEP20, IBEP20Extented, Ownable {
    using SafeMath for uint256;
    
    string private constant _name = "Headbangers Club";
    string private constant _symbol = "Headbangers";
    uint8 private constant _decimals = 18;
    
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;

    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    
    mapping (address => bool) private _isExcluded;
    address[] private _excluded;
    
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 6_666_666_666 * 10 ** 18; // 6.66 bn tokens
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    // fees wrt to tax percentage 
    uint256 public _rfiFee = 1; // divided by 100
    uint256 private _previousRfiFee = _rfiFee;
    uint256 public _marketingFee = 6; // divided by 100
    uint256 private _previousMarketingFee = _marketingFee;
    uint256 public _liquidityFee = 2; // divided by 100
    uint256 private _previousLiquidityFee = _liquidityFee;
    uint256 public totalFee = _liquidityFee + _marketingFee + _rfiFee;
    
    uint256 public _minTokenBeforeSwap = 10**4 * 10**18;

    address public marketingFeeReceiver = (0x98dA2c88A9b9da871038ab4a90237F83E1b2a760);
    IPancakeRouter02 private pancakeRouter;
    address public pancakePair;
    uint256 public _maxTxAmount = _tTotal; // 100%
    bool private inSwap = false;
    bool public swapAndLiquifyEnabled = false;

    event FeesUpdated(uint256 _rfiFee, uint256 _marketingFee, uint256 _liquidityFee);

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor() {
        IPancakeRouter02 _pancakeRouter = IPancakeRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //bsc test 0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3);//bsc main net 0x10ED43C718714eb63d5aA57B78B54704E256024E);
        pancakeRouter = _pancakeRouter;
        _approve(address(this), address(pancakeRouter), _tTotal);
        pancakePair = IPancakeFactory(_pancakeRouter.factory()).createPair(address(this), _pancakeRouter.WETH());
        IBEP20(pancakePair).approve(address(pancakeRouter),type(uint256).max);

        _rOwned[_msgSender()] = _rTotal;
        
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function name() override external pure returns (string memory) {
        return _name;
    }

    function symbol() override external pure returns (string memory) {
        return _symbol;
    }

    function decimals() override external pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() external 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 transfer(address recipient, uint256 amount) external override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) external view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,"BEP20: transfer amount exceeds allowance"));
        return true;
    }
    
    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function isExcludeFromFee(address account) external view returns(bool) {
        return _isExcludedFromFee[account];
    }

    function setExcludeFromFee(address account, bool excluded) external onlyOwner() {
        _isExcludedFromFee[account] = excluded;
    }

    function setSwapAndLiquifyEnabled(bool enable) external onlyOwner() {
        swapAndLiquifyEnabled = enable;
    }

    function updateMinTokenBeforeSwap(uint256 minTokenBeforeSwap) external onlyOwner {
        _minTokenBeforeSwap = minTokenBeforeSwap;
    }

    function updateMaxTxAmount(uint256 newMaxTxAmount) external onlyOwner {
        require(newMaxTxAmount >= _tTotal.div(1000),"Max tx amount could not be less than 0.1% total supply");
        _maxTxAmount = newMaxTxAmount;
    }
    
    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || _isExcludedFromFee[sender], "TX Limit Exceeded");
    }

    function deliver(uint256 tAmount) public {
        address sender = _msgSender();
        require(!_isExcluded[sender], "Excluded addresses cannot call this function");
        (uint256 rAmount,,,,,) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }
    
    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount,,,,,) = _getValues(tAmount);
            return rAmount;
        } else {
            (,uint256 rTransferAmount,,,,) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }
    
    function excludeAccount(address account) external onlyOwner() {
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeAccount(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is not excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _rOwned[account] = _tOwned[account].mul(_getRate());
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function removeAllFee() private {
        if (_marketingFee == 0 && _liquidityFee == 0 && _rfiFee == 0) return;
        _previousMarketingFee = _marketingFee;
        _previousLiquidityFee = _liquidityFee;
        _previousRfiFee = _rfiFee;
        
        _marketingFee = 0;
        _liquidityFee = 0;
        _rfiFee = 0;
    }

    function restoreAllFee() private {
        _marketingFee = _previousMarketingFee;
        _liquidityFee = _previousLiquidityFee;
        _rfiFee = _previousRfiFee;
    }

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

   
    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "BEP20: transfer from the zero address");
        require(to != address(0), "BEP20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        bool takeFee = true;

            
        if (!inSwap && swapAndLiquifyEnabled && from != pancakePair) { //sells, transfers
            uint256 contractTokenBalance = balanceOf(address(this));
            if (contractTokenBalance > _minTokenBeforeSwap) {
                swapAndLiquify(contractTokenBalance);
            }
        }
        
        checkTxLimit(from, amount);

        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }
        
        _tokenTransfer(from, to, amount, takeFee);
    }

    function swapAndLiquify(uint256 tokenAmount) private lockTheSwap {
        uint256 amountToLiquify = tokenAmount.mul(_liquidityFee).div(_liquidityFee.add(_marketingFee)).div(2);
        uint256 amountToSwap = tokenAmount.sub(amountToLiquify);
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = pancakeRouter.WETH();

        uint256 balanceBefore = address(this).balance;

        pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountBNB = address(this).balance.sub(balanceBefore);
        uint256 totalBNBFee = _liquidityFee.add(_marketingFee).sub(_liquidityFee.div(2));

        uint256 amountBNBLiquidity = amountBNB.mul(_liquidityFee).div(totalBNBFee).div(2);
        uint256 amountBNBMarketing = amountBNB.mul(_marketingFee).div(totalBNBFee);

        (bool success,) = payable(marketingFeeReceiver).call{value: amountBNBMarketing, gas: 30000}("");
        require(success, "BNB transfer to marketingFeeReceiver failed");

        pancakeRouter.addLiquidityETH{value: amountBNBLiquidity}(
            address(this),
            amountToLiquify,
            0,
            0,
            address(this),
            block.timestamp
        );
    }

    function clearStuckBalance(uint256 amountPercentage) external {
        require(msg.sender == marketingFeeReceiver, "Not authorized!");
        uint256 amountBNB = address(this).balance;
        payable(marketingFeeReceiver).transfer(amountBNB * amountPercentage / 100);
    }


    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
        if (!takeFee) { 
                removeAllFee();
        }
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }

        if(!takeFee)
            restoreAllFee();
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTax) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTax);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTax) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTax);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTax) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTax);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTax) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTax);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    
    function _takeTeam(uint256 tTax) private {
        uint256 currentRate =  _getRate();
        uint256 rTax = tTax.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTax);
        if(_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tTax);
    }
    
    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }
    


    receive() external payable {}

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        uint256 taxFee = _marketingFee.add(_liquidityFee);
        (uint256 tTransferAmount, uint256 tRfi, uint256 tTax) = _getTValues(tAmount, _rfiFee, taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rRfi) = _getRValues(tAmount, tRfi, tTax, currentRate);
        return (rAmount, rTransferAmount, rRfi, tTransferAmount, tRfi, tTax);
    }

    function _getTValues(uint256 tAmount, uint256 rfiFee, uint256 taxFee) private pure returns (uint256, uint256, uint256) {
        uint256 tRfi = tAmount.mul(rfiFee).div(100);
        uint256 tTax = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tRfi).sub(tTax);
        return (tTransferAmount, tRfi, tTax);
    }


    function _getRValues(uint256 tAmount, uint256 tRfi, uint256 tTax, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rRfi = tRfi.mul(currentRate);
        uint256 rTax = tTax.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rRfi).sub(rTax);
        return (rAmount, rTransferAmount, rRfi);
    }

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

    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.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function setTaxes(uint256 marketingFee, uint256 liquidityFee, uint256 rfiFee) external onlyOwner() {
        uint256 newTotalFee = marketingFee.add(liquidityFee).add(rfiFee);
        require(newTotalFee < 15, "Sum of fees must be less than 15");

        _marketingFee = marketingFee;
        _liquidityFee = liquidityFee;
        _rfiFee = rfiFee;
        
        _previousMarketingFee = _marketingFee;
        _previousLiquidityFee = _liquidityFee;
        _previousRfiFee = _rfiFee;
        
        totalFee = _marketingFee.add(_liquidityFee).add(_rfiFee);
        
        emit FeesUpdated(_rfiFee, _marketingFee, _liquidityFee);
    }
    
    function updateMarketingFeeReceiver(address newMarketingFeeReceiver) external onlyOwner() {
        marketingFeeReceiver = newMarketingFeeReceiver;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_rfiFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"FeesUpdated","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":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_minTokenBeforeSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_rfiFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludeFromFee","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":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pancakePair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"rfiFee","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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"},{"inputs":[{"internalType":"address","name":"newMarketingFeeReceiver","type":"address"}],"name":"updateMarketingFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxTxAmount","type":"uint256"}],"name":"updateMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"minTokenBeforeSwap","type":"uint256"}],"name":"updateMinTokenBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526200001e6b158a8994202d87c8f0680000600019620005fa565b6200002c90600019620005e0565b6007556001600955600954600a556006600b55600b54600c556002600d55600d54600e55600954600b54600d54620000659190620005c5565b620000719190620005c5565b600f5569021e19e0c9bab2400000601055601180546001600160a01b0319167398da2c88a9b9da871038ab4a90237f83e1b2a7601790556b158a8994202d87c8f06800006014556015805461ffff19169055348015620000d057600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556200015430826b158a8994202d87c8f068000062000447565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200018e57600080fd5b505afa158015620001a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c9919062000573565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200021257600080fd5b505afa15801562000227573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024d919062000573565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200029657600080fd5b505af1158015620002ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d1919062000573565b601380546001600160a01b0319166001600160a01b0392831690811790915560125460405163095ea7b360e01b81529216600483015260001960248301529063095ea7b390604401602060405180830381600087803b1580156200033457600080fd5b505af115801562000349573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036f9190620005a3565b506007543360009081526001602081905260408220929092556004906200039e6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526004909252902080549091166001179055620003e63390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b158a8994202d87c8f06800006040516200043891815260200190565b60405180910390a35062000631565b6001600160a01b038316620004af5760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620005125760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620004a6565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006020828403121562000585578081fd5b81516001600160a01b03811681146200059c578182fd5b9392505050565b600060208284031215620005b5578081fd5b815180151581146200059c578182fd5b60008219821115620005db57620005db6200061b565b500190565b600082821015620005f557620005f56200061b565b500390565b6000826200061657634e487b7160e01b81526012600452602481fd5b500690565b634e487b7160e01b600052601160045260246000fd5b61270b80620006416000396000f3fe6080604052600436106102135760003560e01c806370a0823111610118578063b8c9d25c116100a0578063e9dae5ed1161006f578063e9dae5ed1461067a578063eb171b671461069a578063f2cc0c18146106b0578063f2fde38b146106d0578063f84354f1146106f057600080fd5b8063b8c9d25c146105d4578063c49b9a80146105f4578063dd62ed3e14610614578063e96fada21461065a57600080fd5b80638da5cb5b116100e75780638da5cb5b146104f55780638e5916b21461052757806395d89b4114610560578063a9059cbb14610594578063af9549e0146105b457600080fd5b806370a0823114610471578063715018a6146104915780637d1db4a5146104a657806388f82020146104bc57600080fd5b806323b872dd1161019b5780634549b0391161016a5780634549b039146103dc5780634a74bb02146103fc5780635b5a7f331461041b5780636256d1811461043b5780636bc87c3a1461045b57600080fd5b806323b872dd146103605780632d83811914610380578063313ce567146103a05780633bd5d173146103bc57600080fd5b806318160ddd116101e257806318160ddd146102d3578063190b762c146102f25780631da1db5e146103145780631df4ccfc1461033457806322976e0d1461034a57600080fd5b806306fdde031461021f578063095ea7b31461026a578063115b8aac1461029a57806313114a9d146102be57600080fd5b3661021a57005b600080fd5b34801561022b57600080fd5b5060408051808201909152601081526f2432b0b23130b733b2b9399021b63ab160811b60208201525b6040516102619190612501565b60405180910390f35b34801561027657600080fd5b5061028a61028536600461242a565b610710565b6040519015158152602001610261565b3480156102a657600080fd5b506102b060105481565b604051908152602001610261565b3480156102ca57600080fd5b506008546102b0565b3480156102df57600080fd5b506b158a8994202d87c8f06800006102b0565b3480156102fe57600080fd5b5061031261030d366004612346565b610727565b005b34801561032057600080fd5b5061031261032f36600461246f565b61077c565b34801561034057600080fd5b506102b0600f5481565b34801561035657600080fd5b506102b0600b5481565b34801561036c57600080fd5b5061028a61037b3660046123b6565b61081c565b34801561038c57600080fd5b506102b061039b36600461246f565b610885565b3480156103ac57600080fd5b5060405160128152602001610261565b3480156103c857600080fd5b506103126103d736600461246f565b610909565b3480156103e857600080fd5b506102b06103f7366004612487565b6109f3565b34801561040857600080fd5b5060155461028a90610100900460ff1681565b34801561042757600080fd5b5061031261043636600461246f565b610a8a565b34801561044757600080fd5b5061031261045636600461246f565b610ab9565b34801561046757600080fd5b506102b0600d5481565b34801561047d57600080fd5b506102b061048c366004612346565b610b6e565b34801561049d57600080fd5b50610312610bcd565b3480156104b257600080fd5b506102b060145481565b3480156104c857600080fd5b5061028a6104d7366004612346565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561050157600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610261565b34801561053357600080fd5b5061028a610542366004612346565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561056c57600080fd5b5060408051808201909152600b81526a4865616462616e6765727360a81b6020820152610254565b3480156105a057600080fd5b5061028a6105af36600461242a565b610c03565b3480156105c057600080fd5b506103126105cf3660046123f6565b610c10565b3480156105e057600080fd5b5060135461050f906001600160a01b031681565b34801561060057600080fd5b5061031261060f366004612455565b610c65565b34801561062057600080fd5b506102b061062f36600461237e565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561066657600080fd5b5060115461050f906001600160a01b031681565b34801561068657600080fd5b506103126106953660046124a9565b610ca9565b3480156106a657600080fd5b506102b060095481565b3480156106bc57600080fd5b506103126106cb366004612346565b610db7565b3480156106dc57600080fd5b506103126106eb366004612346565b610f0a565b3480156106fc57600080fd5b5061031261070b366004612346565b610fa5565b600061071d3384846111db565b5060015b92915050565b6000546001600160a01b0316331461075a5760405162461bcd60e51b815260040161075190612554565b60405180910390fd5b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6011546001600160a01b031633146107c85760405162461bcd60e51b815260206004820152600f60248201526e4e6f7420617574686f72697a65642160881b6044820152606401610751565b60115447906001600160a01b03166108fc60646107e58585612631565b6107ef9190612611565b6040518115909202916000818181858888f19350505050158015610817573d6000803e3d6000fd5b505050565b60006108298484846112ff565b61087b8433610876856040518060600160405280602881526020016126ae602891396001600160a01b038a16600090815260036020908152604080832033845290915290205491906114e9565b6111db565b5060019392505050565b60006007548211156108ec5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610751565b60006108f6611523565b90506109028382611546565b9392505050565b3360008181526005602052604090205460ff161561097e5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610751565b600061098983611588565b505050506001600160a01b0384166000908152600160205260409020549192506109b5919050826115ff565b6001600160a01b0383166000908152600160205260409020556007546109db90826115ff565b6007556008546109eb9084611641565b600855505050565b60006b158a8994202d87c8f0680000831115610a515760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610751565b81610a70576000610a6184611588565b50939550610721945050505050565b6000610a7b84611588565b50929550610721945050505050565b6000546001600160a01b03163314610ab45760405162461bcd60e51b815260040161075190612554565b601055565b6000546001600160a01b03163314610ae35760405162461bcd60e51b815260040161075190612554565b610afb6b158a8994202d87c8f06800006103e8611546565b811015610b695760405162461bcd60e51b815260206004820152603660248201527f4d617820747820616d6f756e7420636f756c64206e6f74206265206c657373206044820152757468616e20302e312520746f74616c20737570706c7960501b6064820152608401610751565b601455565b6001600160a01b03811660009081526005602052604081205460ff1615610bab57506001600160a01b031660009081526002602052604090205490565b6001600160a01b03821660009081526001602052604090205461072190610885565b6000546001600160a01b03163314610bf75760405162461bcd60e51b815260040161075190612554565b610c0160006116a0565b565b600061071d3384846112ff565b6000546001600160a01b03163314610c3a5760405162461bcd60e51b815260040161075190612554565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610c8f5760405162461bcd60e51b815260040161075190612554565b601580549115156101000261ff0019909216919091179055565b6000546001600160a01b03163314610cd35760405162461bcd60e51b815260040161075190612554565b6000610ce982610ce38686611641565b90611641565b9050600f8110610d3b5760405162461bcd60e51b815260206004820181905260248201527f53756d206f662066656573206d757374206265206c657373207468616e2031356044820152606401610751565b600b849055600d8390556009829055600c849055600e839055600a829055610d6782610ce38686611641565b600f55600954600b54600d5460408051938452602084019290925282820152517fcf8a1e1d5f09cf3c97dbb653cd9a4d7aace9292fbc1bb8211febf2d400febbdd9181900360600190a150505050565b6000546001600160a01b03163314610de15760405162461bcd60e51b815260040161075190612554565b6001600160a01b03811660009081526005602052604090205460ff1615610e4a5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610751565b6001600160a01b03811660009081526001602052604090205415610ea4576001600160a01b038116600090815260016020526040902054610e8a90610885565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6000546001600160a01b03163314610f345760405162461bcd60e51b815260040161075190612554565b6001600160a01b038116610f995760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610751565b610fa2816116a0565b50565b6000546001600160a01b03163314610fcf5760405162461bcd60e51b815260040161075190612554565b6001600160a01b03811660009081526005602052604090205460ff166110375760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610751565b60005b6006548110156111d757816001600160a01b03166006828154811061106f57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031614156111c5576006805461109a90600190612650565b815481106110b857634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600680546001600160a01b0390921691839081106110f257634e487b7160e01b600052603260045260246000fd5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061114a61112b611523565b6001600160a01b038416600090815260026020526040902054906116f0565b6001600160a01b038316600090815260016020908152604080832093909355600281528282208290556005905220805460ff19169055600680548061119f57634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806111cf81612667565b91505061103a565b5050565b6001600160a01b03831661123d5760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610751565b6001600160a01b03821661129e5760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610751565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166113635760405162461bcd60e51b815260206004820152602560248201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610751565b6001600160a01b0382166113c55760405162461bcd60e51b815260206004820152602360248201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610751565b600081116114275760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610751565b60155460019060ff161580156114445750601554610100900460ff165b801561145e57506013546001600160a01b03858116911614155b1561148557600061146e30610b6e565b9050601054811115611483576114838161176f565b505b61148f8483611b2d565b6001600160a01b03841660009081526004602052604090205460ff16806114ce57506001600160a01b03831660009081526004602052604090205460ff165b156114d7575060005b6114e384848484611b96565b50505050565b6000818484111561150d5760405162461bcd60e51b81526004016107519190612501565b50600061151a8486612650565b95945050505050565b6000806000611530611d13565b909250905061153f8282611546565b9250505090565b600061090283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ef3565b60008060008060008060006115aa600d54600b5461164190919063ffffffff16565b905060008060006115be8b60095486611f21565b92509250925060006115ce611523565b905060008060006115e18f878787611f6a565b919f509d509b50959950939750919550505050505091939550919395565b600061090283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506114e9565b60008061164e83856125f9565b9050838110156109025760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610751565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000826116ff57506000610721565b600061170b8385612631565b9050826117188583612611565b146109025760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610751565b6015805460ff19166001179055600b54600d546000916117ad916002916117a79161179991611641565b600d546117a79087906116f0565b90611546565b905060006117bb83836115ff565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061180357634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561185757600080fd5b505afa15801561186b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188f9190612362565b816001815181106118b057634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260125460405163791ac94760e01b81524792919091169063791ac947906118fa908690600090879030904290600401612589565b600060405180830381600087803b15801561191457600080fd5b505af1158015611928573d6000803e3d6000fd5b50505050600061194182476115ff90919063ffffffff16565b9050600061197361195e6002600d5461154690919063ffffffff16565b600b54600d5461196d91611641565b906115ff565b9050600061199560026117a7846117a7600d54886116f090919063ffffffff16565b905060006119b2836117a7600b54876116f090919063ffffffff16565b6011546040519192506000916001600160a01b039091169061753090849084818181858888f193505050503d8060008114611a09576040519150601f19603f3d011682016040523d82523d6000602084013e611a0e565b606091505b5050905080611a735760405162461bcd60e51b815260206004820152602b60248201527f424e42207472616e7366657220746f206d61726b6574696e674665655265636560448201526a1a5d995c8819985a5b195960aa1b6064820152608401610751565b60125460405163f305d71960e01b81523060048201819052602482018c9052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990859060c4016060604051808303818588803b158015611adb57600080fd5b505af1158015611aef573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b1491906124d4565b50506015805460ff191690555050505050505050505050565b60145481111580611b5657506001600160a01b03821660009081526004602052604090205460ff165b6111d75760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610751565b80611ba357611ba3611fba565b6001600160a01b03841660009081526005602052604090205460ff168015611be457506001600160a01b03831660009081526005602052604090205460ff16155b15611bf957611bf4848484611fff565b611cf7565b6001600160a01b03841660009081526005602052604090205460ff16158015611c3a57506001600160a01b03831660009081526005602052604090205460ff165b15611c4a57611bf4848484612125565b6001600160a01b03841660009081526005602052604090205460ff16158015611c8c57506001600160a01b03831660009081526005602052604090205460ff16155b15611c9c57611bf48484846121ce565b6001600160a01b03841660009081526005602052604090205460ff168015611cdc57506001600160a01b03831660009081526005602052604090205460ff165b15611cec57611bf4848484612212565b611cf78484846121ce565b806114e3576114e3600c54600b55600e54600d55600a54600955565b60075460009081906b158a8994202d87c8f0680000825b600654811015611eb057826001600060068481548110611d5a57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611dd35750816002600060068481548110611dac57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611df2575050600754936b158a8994202d87c8f06800009350915050565b611e466001600060068481548110611e1a57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906115ff565b9250611e9c6002600060068481548110611e7057634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906115ff565b915080611ea881612667565b915050611d2a565b50600754611eca906b158a8994202d87c8f0680000611546565b821015611eea575050600754926b158a8994202d87c8f068000092509050565b90939092509050565b60008183611f145760405162461bcd60e51b81526004016107519190612501565b50600061151a8486612611565b6000808080611f3560646117a789896116f0565b90506000611f4860646117a78a896116f0565b90506000611f5a8261196d8b866115ff565b9992985090965090945050505050565b6000808080611f7988866116f0565b90506000611f8788876116f0565b90506000611f9588886116f0565b90506000611fa78261196d86866115ff565b939b939a50919850919650505050505050565b600b54158015611fca5750600d54155b8015611fd65750600954155b15611fdd57565b600b8054600c55600d8054600e5560098054600a556000928390559082905555565b60008060008060008061201187611588565b6001600160a01b038f16600090815260026020526040902054959b5093995091975095509350915061204390886115ff565b6001600160a01b038a1660009081526002602090815260408083209390935560019052205461207290876115ff565b6001600160a01b03808b1660009081526001602052604080822093909355908a16815220546120a19086611641565b6001600160a01b0389166000908152600160205260409020556120c381612285565b6120cd848361230d565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161211291815260200190565b60405180910390a3505050505050505050565b60008060008060008061213787611588565b6001600160a01b038f16600090815260016020526040902054959b5093995091975095509350915061216990876115ff565b6001600160a01b03808b16600090815260016020908152604080832094909455918b1681526002909152205461219f9084611641565b6001600160a01b0389166000908152600260209081526040808320939093556001905220546120a19086611641565b6000806000806000806121e087611588565b6001600160a01b038f16600090815260016020526040902054959b5093995091975095509350915061207290876115ff565b60008060008060008061222487611588565b6001600160a01b038f16600090815260026020526040902054959b5093995091975095509350915061225690886115ff565b6001600160a01b038a1660009081526002602090815260408083209390935560019052205461216990876115ff565b600061228f611523565b9050600061229d83836116f0565b306000908152600160205260409020549091506122ba9082611641565b3060009081526001602090815260408083209390935560059052205460ff161561081757306000908152600260205260409020546122f89084611641565b30600090815260026020526040902055505050565b60075461231a90836115ff565b60075560085461232a9082611641565b6008555050565b8035801515811461234157600080fd5b919050565b600060208284031215612357578081fd5b813561090281612698565b600060208284031215612373578081fd5b815161090281612698565b60008060408385031215612390578081fd5b823561239b81612698565b915060208301356123ab81612698565b809150509250929050565b6000806000606084860312156123ca578081fd5b83356123d581612698565b925060208401356123e581612698565b929592945050506040919091013590565b60008060408385031215612408578182fd5b823561241381612698565b915061242160208401612331565b90509250929050565b6000806040838503121561243c578182fd5b823561244781612698565b946020939093013593505050565b600060208284031215612466578081fd5b61090282612331565b600060208284031215612480578081fd5b5035919050565b60008060408385031215612499578182fd5b8235915061242160208401612331565b6000806000606084860312156124bd578283fd5b505081359360208301359350604090920135919050565b6000806000606084860312156124e8578283fd5b8351925060208401519150604084015190509250925092565b6000602080835283518082850152825b8181101561252d57858101830151858201604001528201612511565b8181111561253e5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156125d85784516001600160a01b0316835293830193918301916001016125b3565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561260c5761260c612682565b500190565b60008261262c57634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561264b5761264b612682565b500290565b60008282101561266257612662612682565b500390565b600060001982141561267b5761267b612682565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610fa257600080fdfe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203366f700ed5c6288abbea8b64b924a6efd3620e15504d05df6fdac3d36b10a1f64736f6c63430008040033

Deployed Bytecode

0x6080604052600436106102135760003560e01c806370a0823111610118578063b8c9d25c116100a0578063e9dae5ed1161006f578063e9dae5ed1461067a578063eb171b671461069a578063f2cc0c18146106b0578063f2fde38b146106d0578063f84354f1146106f057600080fd5b8063b8c9d25c146105d4578063c49b9a80146105f4578063dd62ed3e14610614578063e96fada21461065a57600080fd5b80638da5cb5b116100e75780638da5cb5b146104f55780638e5916b21461052757806395d89b4114610560578063a9059cbb14610594578063af9549e0146105b457600080fd5b806370a0823114610471578063715018a6146104915780637d1db4a5146104a657806388f82020146104bc57600080fd5b806323b872dd1161019b5780634549b0391161016a5780634549b039146103dc5780634a74bb02146103fc5780635b5a7f331461041b5780636256d1811461043b5780636bc87c3a1461045b57600080fd5b806323b872dd146103605780632d83811914610380578063313ce567146103a05780633bd5d173146103bc57600080fd5b806318160ddd116101e257806318160ddd146102d3578063190b762c146102f25780631da1db5e146103145780631df4ccfc1461033457806322976e0d1461034a57600080fd5b806306fdde031461021f578063095ea7b31461026a578063115b8aac1461029a57806313114a9d146102be57600080fd5b3661021a57005b600080fd5b34801561022b57600080fd5b5060408051808201909152601081526f2432b0b23130b733b2b9399021b63ab160811b60208201525b6040516102619190612501565b60405180910390f35b34801561027657600080fd5b5061028a61028536600461242a565b610710565b6040519015158152602001610261565b3480156102a657600080fd5b506102b060105481565b604051908152602001610261565b3480156102ca57600080fd5b506008546102b0565b3480156102df57600080fd5b506b158a8994202d87c8f06800006102b0565b3480156102fe57600080fd5b5061031261030d366004612346565b610727565b005b34801561032057600080fd5b5061031261032f36600461246f565b61077c565b34801561034057600080fd5b506102b0600f5481565b34801561035657600080fd5b506102b0600b5481565b34801561036c57600080fd5b5061028a61037b3660046123b6565b61081c565b34801561038c57600080fd5b506102b061039b36600461246f565b610885565b3480156103ac57600080fd5b5060405160128152602001610261565b3480156103c857600080fd5b506103126103d736600461246f565b610909565b3480156103e857600080fd5b506102b06103f7366004612487565b6109f3565b34801561040857600080fd5b5060155461028a90610100900460ff1681565b34801561042757600080fd5b5061031261043636600461246f565b610a8a565b34801561044757600080fd5b5061031261045636600461246f565b610ab9565b34801561046757600080fd5b506102b0600d5481565b34801561047d57600080fd5b506102b061048c366004612346565b610b6e565b34801561049d57600080fd5b50610312610bcd565b3480156104b257600080fd5b506102b060145481565b3480156104c857600080fd5b5061028a6104d7366004612346565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561050157600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610261565b34801561053357600080fd5b5061028a610542366004612346565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561056c57600080fd5b5060408051808201909152600b81526a4865616462616e6765727360a81b6020820152610254565b3480156105a057600080fd5b5061028a6105af36600461242a565b610c03565b3480156105c057600080fd5b506103126105cf3660046123f6565b610c10565b3480156105e057600080fd5b5060135461050f906001600160a01b031681565b34801561060057600080fd5b5061031261060f366004612455565b610c65565b34801561062057600080fd5b506102b061062f36600461237e565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561066657600080fd5b5060115461050f906001600160a01b031681565b34801561068657600080fd5b506103126106953660046124a9565b610ca9565b3480156106a657600080fd5b506102b060095481565b3480156106bc57600080fd5b506103126106cb366004612346565b610db7565b3480156106dc57600080fd5b506103126106eb366004612346565b610f0a565b3480156106fc57600080fd5b5061031261070b366004612346565b610fa5565b600061071d3384846111db565b5060015b92915050565b6000546001600160a01b0316331461075a5760405162461bcd60e51b815260040161075190612554565b60405180910390fd5b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6011546001600160a01b031633146107c85760405162461bcd60e51b815260206004820152600f60248201526e4e6f7420617574686f72697a65642160881b6044820152606401610751565b60115447906001600160a01b03166108fc60646107e58585612631565b6107ef9190612611565b6040518115909202916000818181858888f19350505050158015610817573d6000803e3d6000fd5b505050565b60006108298484846112ff565b61087b8433610876856040518060600160405280602881526020016126ae602891396001600160a01b038a16600090815260036020908152604080832033845290915290205491906114e9565b6111db565b5060019392505050565b60006007548211156108ec5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610751565b60006108f6611523565b90506109028382611546565b9392505050565b3360008181526005602052604090205460ff161561097e5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610751565b600061098983611588565b505050506001600160a01b0384166000908152600160205260409020549192506109b5919050826115ff565b6001600160a01b0383166000908152600160205260409020556007546109db90826115ff565b6007556008546109eb9084611641565b600855505050565b60006b158a8994202d87c8f0680000831115610a515760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610751565b81610a70576000610a6184611588565b50939550610721945050505050565b6000610a7b84611588565b50929550610721945050505050565b6000546001600160a01b03163314610ab45760405162461bcd60e51b815260040161075190612554565b601055565b6000546001600160a01b03163314610ae35760405162461bcd60e51b815260040161075190612554565b610afb6b158a8994202d87c8f06800006103e8611546565b811015610b695760405162461bcd60e51b815260206004820152603660248201527f4d617820747820616d6f756e7420636f756c64206e6f74206265206c657373206044820152757468616e20302e312520746f74616c20737570706c7960501b6064820152608401610751565b601455565b6001600160a01b03811660009081526005602052604081205460ff1615610bab57506001600160a01b031660009081526002602052604090205490565b6001600160a01b03821660009081526001602052604090205461072190610885565b6000546001600160a01b03163314610bf75760405162461bcd60e51b815260040161075190612554565b610c0160006116a0565b565b600061071d3384846112ff565b6000546001600160a01b03163314610c3a5760405162461bcd60e51b815260040161075190612554565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610c8f5760405162461bcd60e51b815260040161075190612554565b601580549115156101000261ff0019909216919091179055565b6000546001600160a01b03163314610cd35760405162461bcd60e51b815260040161075190612554565b6000610ce982610ce38686611641565b90611641565b9050600f8110610d3b5760405162461bcd60e51b815260206004820181905260248201527f53756d206f662066656573206d757374206265206c657373207468616e2031356044820152606401610751565b600b849055600d8390556009829055600c849055600e839055600a829055610d6782610ce38686611641565b600f55600954600b54600d5460408051938452602084019290925282820152517fcf8a1e1d5f09cf3c97dbb653cd9a4d7aace9292fbc1bb8211febf2d400febbdd9181900360600190a150505050565b6000546001600160a01b03163314610de15760405162461bcd60e51b815260040161075190612554565b6001600160a01b03811660009081526005602052604090205460ff1615610e4a5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610751565b6001600160a01b03811660009081526001602052604090205415610ea4576001600160a01b038116600090815260016020526040902054610e8a90610885565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6000546001600160a01b03163314610f345760405162461bcd60e51b815260040161075190612554565b6001600160a01b038116610f995760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610751565b610fa2816116a0565b50565b6000546001600160a01b03163314610fcf5760405162461bcd60e51b815260040161075190612554565b6001600160a01b03811660009081526005602052604090205460ff166110375760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610751565b60005b6006548110156111d757816001600160a01b03166006828154811061106f57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031614156111c5576006805461109a90600190612650565b815481106110b857634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600680546001600160a01b0390921691839081106110f257634e487b7160e01b600052603260045260246000fd5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061114a61112b611523565b6001600160a01b038416600090815260026020526040902054906116f0565b6001600160a01b038316600090815260016020908152604080832093909355600281528282208290556005905220805460ff19169055600680548061119f57634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806111cf81612667565b91505061103a565b5050565b6001600160a01b03831661123d5760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610751565b6001600160a01b03821661129e5760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610751565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166113635760405162461bcd60e51b815260206004820152602560248201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610751565b6001600160a01b0382166113c55760405162461bcd60e51b815260206004820152602360248201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610751565b600081116114275760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610751565b60155460019060ff161580156114445750601554610100900460ff165b801561145e57506013546001600160a01b03858116911614155b1561148557600061146e30610b6e565b9050601054811115611483576114838161176f565b505b61148f8483611b2d565b6001600160a01b03841660009081526004602052604090205460ff16806114ce57506001600160a01b03831660009081526004602052604090205460ff165b156114d7575060005b6114e384848484611b96565b50505050565b6000818484111561150d5760405162461bcd60e51b81526004016107519190612501565b50600061151a8486612650565b95945050505050565b6000806000611530611d13565b909250905061153f8282611546565b9250505090565b600061090283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ef3565b60008060008060008060006115aa600d54600b5461164190919063ffffffff16565b905060008060006115be8b60095486611f21565b92509250925060006115ce611523565b905060008060006115e18f878787611f6a565b919f509d509b50959950939750919550505050505091939550919395565b600061090283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506114e9565b60008061164e83856125f9565b9050838110156109025760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610751565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000826116ff57506000610721565b600061170b8385612631565b9050826117188583612611565b146109025760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610751565b6015805460ff19166001179055600b54600d546000916117ad916002916117a79161179991611641565b600d546117a79087906116f0565b90611546565b905060006117bb83836115ff565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061180357634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561185757600080fd5b505afa15801561186b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188f9190612362565b816001815181106118b057634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260125460405163791ac94760e01b81524792919091169063791ac947906118fa908690600090879030904290600401612589565b600060405180830381600087803b15801561191457600080fd5b505af1158015611928573d6000803e3d6000fd5b50505050600061194182476115ff90919063ffffffff16565b9050600061197361195e6002600d5461154690919063ffffffff16565b600b54600d5461196d91611641565b906115ff565b9050600061199560026117a7846117a7600d54886116f090919063ffffffff16565b905060006119b2836117a7600b54876116f090919063ffffffff16565b6011546040519192506000916001600160a01b039091169061753090849084818181858888f193505050503d8060008114611a09576040519150601f19603f3d011682016040523d82523d6000602084013e611a0e565b606091505b5050905080611a735760405162461bcd60e51b815260206004820152602b60248201527f424e42207472616e7366657220746f206d61726b6574696e674665655265636560448201526a1a5d995c8819985a5b195960aa1b6064820152608401610751565b60125460405163f305d71960e01b81523060048201819052602482018c9052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990859060c4016060604051808303818588803b158015611adb57600080fd5b505af1158015611aef573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b1491906124d4565b50506015805460ff191690555050505050505050505050565b60145481111580611b5657506001600160a01b03821660009081526004602052604090205460ff165b6111d75760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610751565b80611ba357611ba3611fba565b6001600160a01b03841660009081526005602052604090205460ff168015611be457506001600160a01b03831660009081526005602052604090205460ff16155b15611bf957611bf4848484611fff565b611cf7565b6001600160a01b03841660009081526005602052604090205460ff16158015611c3a57506001600160a01b03831660009081526005602052604090205460ff165b15611c4a57611bf4848484612125565b6001600160a01b03841660009081526005602052604090205460ff16158015611c8c57506001600160a01b03831660009081526005602052604090205460ff16155b15611c9c57611bf48484846121ce565b6001600160a01b03841660009081526005602052604090205460ff168015611cdc57506001600160a01b03831660009081526005602052604090205460ff165b15611cec57611bf4848484612212565b611cf78484846121ce565b806114e3576114e3600c54600b55600e54600d55600a54600955565b60075460009081906b158a8994202d87c8f0680000825b600654811015611eb057826001600060068481548110611d5a57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611dd35750816002600060068481548110611dac57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611df2575050600754936b158a8994202d87c8f06800009350915050565b611e466001600060068481548110611e1a57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906115ff565b9250611e9c6002600060068481548110611e7057634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906115ff565b915080611ea881612667565b915050611d2a565b50600754611eca906b158a8994202d87c8f0680000611546565b821015611eea575050600754926b158a8994202d87c8f068000092509050565b90939092509050565b60008183611f145760405162461bcd60e51b81526004016107519190612501565b50600061151a8486612611565b6000808080611f3560646117a789896116f0565b90506000611f4860646117a78a896116f0565b90506000611f5a8261196d8b866115ff565b9992985090965090945050505050565b6000808080611f7988866116f0565b90506000611f8788876116f0565b90506000611f9588886116f0565b90506000611fa78261196d86866115ff565b939b939a50919850919650505050505050565b600b54158015611fca5750600d54155b8015611fd65750600954155b15611fdd57565b600b8054600c55600d8054600e5560098054600a556000928390559082905555565b60008060008060008061201187611588565b6001600160a01b038f16600090815260026020526040902054959b5093995091975095509350915061204390886115ff565b6001600160a01b038a1660009081526002602090815260408083209390935560019052205461207290876115ff565b6001600160a01b03808b1660009081526001602052604080822093909355908a16815220546120a19086611641565b6001600160a01b0389166000908152600160205260409020556120c381612285565b6120cd848361230d565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161211291815260200190565b60405180910390a3505050505050505050565b60008060008060008061213787611588565b6001600160a01b038f16600090815260016020526040902054959b5093995091975095509350915061216990876115ff565b6001600160a01b03808b16600090815260016020908152604080832094909455918b1681526002909152205461219f9084611641565b6001600160a01b0389166000908152600260209081526040808320939093556001905220546120a19086611641565b6000806000806000806121e087611588565b6001600160a01b038f16600090815260016020526040902054959b5093995091975095509350915061207290876115ff565b60008060008060008061222487611588565b6001600160a01b038f16600090815260026020526040902054959b5093995091975095509350915061225690886115ff565b6001600160a01b038a1660009081526002602090815260408083209390935560019052205461216990876115ff565b600061228f611523565b9050600061229d83836116f0565b306000908152600160205260409020549091506122ba9082611641565b3060009081526001602090815260408083209390935560059052205460ff161561081757306000908152600260205260409020546122f89084611641565b30600090815260026020526040902055505050565b60075461231a90836115ff565b60075560085461232a9082611641565b6008555050565b8035801515811461234157600080fd5b919050565b600060208284031215612357578081fd5b813561090281612698565b600060208284031215612373578081fd5b815161090281612698565b60008060408385031215612390578081fd5b823561239b81612698565b915060208301356123ab81612698565b809150509250929050565b6000806000606084860312156123ca578081fd5b83356123d581612698565b925060208401356123e581612698565b929592945050506040919091013590565b60008060408385031215612408578182fd5b823561241381612698565b915061242160208401612331565b90509250929050565b6000806040838503121561243c578182fd5b823561244781612698565b946020939093013593505050565b600060208284031215612466578081fd5b61090282612331565b600060208284031215612480578081fd5b5035919050565b60008060408385031215612499578182fd5b8235915061242160208401612331565b6000806000606084860312156124bd578283fd5b505081359360208301359350604090920135919050565b6000806000606084860312156124e8578283fd5b8351925060208401519150604084015190509250925092565b6000602080835283518082850152825b8181101561252d57858101830151858201604001528201612511565b8181111561253e5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156125d85784516001600160a01b0316835293830193918301916001016125b3565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561260c5761260c612682565b500190565b60008261262c57634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561264b5761264b612682565b500290565b60008282101561266257612662612682565b500390565b600060001982141561267b5761267b612682565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610fa257600080fdfe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203366f700ed5c6288abbea8b64b924a6efd3620e15504d05df6fdac3d36b10a1f64736f6c63430008040033

Deployed Bytecode Sourcemap

7682:17168:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10269:94;;;;;;;;;;-1:-1:-1;10350:5:0;;;;;;;;;;;;-1:-1:-1;;;10350:5:0;;;;10269:94;;;;;;;:::i;:::-;;;;;;;;11228:163;;;;;;;;;;-1:-1:-1;11228:163:0;;;;;:::i;:::-;;:::i;:::-;;;4741:14:1;;4734:22;4716:41;;4704:2;4689:18;11228:163:0;4671:92:1;8959:51:0;;;;;;;;;;;;;;;;;;;12854:25:1;;;12842:2;12827:18;8959:51:0;12809:76:1;12643:87:0;;;;;;;;;;-1:-1:-1;12712:10:0;;12643:87;;10579:97;;;;;;;;;;-1:-1:-1;8372:24:0;10579:97;;24690:155;;;;;;;;;;-1:-1:-1;24690:155:0;;;;;:::i;:::-;;:::i;:::-;;18081:280;;;;;;;;;;-1:-1:-1;18081:280:0;;;;;:::i;:::-;;:::i;8881:65::-;;;;;;;;;;;;;;;;8647:32;;;;;;;;;;;;;;;;11399:312;;;;;;;;;;-1:-1:-1;11399:312:0;;;;;:::i;:::-;;:::i;13748:253::-;;;;;;;;;;-1:-1:-1;13748:253:0;;;;;:::i;:::-;;:::i;10477:94::-;;;;;;;;;;-1:-1:-1;10477:94:0;;7939:2;14344:36:1;;14332:2;14317:18;10477:94:0;14299:87:1;12915:377:0;;;;;;;;;;-1:-1:-1;12915:377:0;;;;;:::i;:::-;;:::i;13304:436::-;;;;;;;;;;-1:-1:-1;13304:436:0;;;;;:::i;:::-;;:::i;9272:41::-;;;;;;;;;;-1:-1:-1;9272:41:0;;;;;;;;;;;12253:140;;;;;;;;;;-1:-1:-1;12253:140:0;;;;;:::i;:::-;;:::i;12401:230::-;;;;;;;;;;-1:-1:-1;12401:230:0;;;;;:::i;:::-;;:::i;8764:32::-;;;;;;;;;;;;;;;;10684:202;;;;;;;;;;-1:-1:-1;10684:202:0;;;;;:::i;:::-;;:::i;2595:103::-;;;;;;;;;;;;;:::i;9186:37::-;;;;;;;;;;;;;;;;11723:120;;;;;;;;;;-1:-1:-1;11723:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;11815:20:0;11791:4;11815:20;;;:11;:20;;;;;;;;;11723:120;2381:79;;;;;;;;;;-1:-1:-1;2419:7:0;2446:6;-1:-1:-1;;;;;2446:6:0;2381:79;;;-1:-1:-1;;;;;3920:32:1;;;3902:51;;3890:2;3875:18;2381:79:0;3857:102:1;11851:124:0;;;;;;;;;;-1:-1:-1;11851:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;11940:27:0;11916:4;11940:27;;;:18;:27;;;;;;;;;11851:124;10371:98;;;;;;;;;;-1:-1:-1;10454:7:0;;;;;;;;;;;;-1:-1:-1;;;10454:7:0;;;;10371:98;;10898:169;;;;;;;;;;-1:-1:-1;10898:169:0;;;;;:::i;:::-;;:::i;11983:137::-;;;;;;;;;;-1:-1:-1;11983:137:0;;;;;:::i;:::-;;:::i;9153:26::-;;;;;;;;;;-1:-1:-1;9153:26:0;;;;-1:-1:-1;;;;;9153:26:0;;;12128:117;;;;;;;;;;-1:-1:-1;12128:117:0;;;;;:::i;:::-;;:::i;11075:145::-;;;;;;;;;;-1:-1:-1;11075:145:0;;;;;:::i;:::-;-1:-1:-1;;;;;11185:18:0;;;11158:7;11185:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;11075:145;9019:82;;;;;;;;;;-1:-1:-1;9019:82:0;;;;-1:-1:-1;;;;;9019:82:0;;;24022:656;;;;;;;;;;-1:-1:-1;24022:656:0;;;;;:::i;:::-;;:::i;8548:26::-;;;;;;;;;;;;;;;;14013:332;;;;;;;;;;-1:-1:-1;14013:332:0;;;;;:::i;:::-;;:::i;2857:201::-;;;;;;;;;;-1:-1:-1;2857:201:0;;;;;:::i;:::-;;:::i;14353:544::-;;;;;;;;;;-1:-1:-1;14353:544:0;;;;;:::i;:::-;;:::i;11228:163::-;11305:4;11322:39;219:10;11345:7;11354:6;11322:8;:39::i;:::-;-1:-1:-1;11379:4:0;11228:163;;;;;:::o;24690:155::-;2508:6;;-1:-1:-1;;;;;2508:6:0;219:10;2508:22;2500:67;;;;-1:-1:-1;;;2500:67:0;;;;;;;:::i;:::-;;;;;;;;;24791:20:::1;:46:::0;;-1:-1:-1;;;;;;24791:46:0::1;-1:-1:-1::0;;;;;24791:46:0;;;::::1;::::0;;;::::1;::::0;;24690:155::o;18081:280::-;18176:20;;-1:-1:-1;;;;;18176:20:0;18162:10;:34;18154:62;;;;-1:-1:-1;;;18154:62:0;;11750:2:1;18154:62:0;;;11732:21:1;11789:2;11769:18;;;11762:30;-1:-1:-1;;;11808:18:1;;;11801:45;11863:18;;18154:62:0;11722:165:1;18154:62:0;18287:20;;18247:21;;-1:-1:-1;;;;;18287:20:0;18279:74;18349:3;18318:28;18330:16;18247:21;18318:28;:::i;:::-;:34;;;;:::i;:::-;18279:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18081:280;;:::o;11399:312::-;11499:4;11516:36;11526:6;11534:9;11545:6;11516:9;:36::i;:::-;11563:118;11572:6;219:10;11592:88;11630:6;11592:88;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11592:19:0;;;;;;:11;:19;;;;;;;;219:10;11592:33;;;;;;;;;;:37;:88::i;:::-;11563:8;:118::i;:::-;-1:-1:-1;11699:4:0;11399:312;;;;;:::o;13748:253::-;13814:7;13853;;13842;:18;;13834:73;;;;-1:-1:-1;;;13834:73:0;;6735:2:1;13834:73:0;;;6717:21:1;6774:2;6754:18;;;6747:30;6813:34;6793:18;;;6786:62;-1:-1:-1;;;6864:18:1;;;6857:40;6914:19;;13834:73:0;6707:232:1;13834:73:0;13918:19;13941:10;:8;:10::i;:::-;13918:33;-1:-1:-1;13969:24:0;:7;13918:33;13969:11;:24::i;:::-;13962:31;13748:253;-1:-1:-1;;;13748:253:0:o;12915:377::-;219:10;12967:14;13016:19;;;:11;:19;;;;;;;;13015:20;13007:77;;;;-1:-1:-1;;;13007:77:0;;12094:2:1;13007:77:0;;;12076:21:1;12133:2;12113:18;;;12106:30;12172:34;12152:18;;;12145:62;-1:-1:-1;;;12223:18:1;;;12216:42;12275:19;;13007:77:0;12066:234:1;13007:77:0;13096:15;13120:19;13131:7;13120:10;:19::i;:::-;-1:-1:-1;;;;;;;;;13168:15:0;;;;;;:7;:15;;;;;;13095:44;;-1:-1:-1;13168:28:0;;:15;-1:-1:-1;13095:44:0;13168:19;:28::i;:::-;-1:-1:-1;;;;;13150:15:0;;;;;;:7;:15;;;;;:46;13217:7;;:20;;13229:7;13217:11;:20::i;:::-;13207:7;:30;13261:10;;:23;;13276:7;13261:14;:23::i;:::-;13248:10;:36;-1:-1:-1;;;12915:377:0:o;13304:436::-;13394:7;8372:24;13422:7;:18;;13414:62;;;;-1:-1:-1;;;13414:62:0;;8978:2:1;13414:62:0;;;8960:21:1;9017:2;8997:18;;;8990:30;9056:33;9036:18;;;9029:61;9107:18;;13414:62:0;8950:181:1;13414:62:0;13492:17;13487:246;;13527:15;13551:19;13562:7;13551:10;:19::i;:::-;-1:-1:-1;13526:44:0;;-1:-1:-1;13585:14:0;;-1:-1:-1;;;;;13585:14:0;13487:246;13634:23;13665:19;13676:7;13665:10;:19::i;:::-;-1:-1:-1;13632:52:0;;-1:-1:-1;13699:22:0;;-1:-1:-1;;;;;13699:22:0;12253:140;2508:6;;-1:-1:-1;;;;;2508:6:0;219:10;2508:22;2500:67;;;;-1:-1:-1;;;2500:67:0;;;;;;;:::i;:::-;12345:19:::1;:40:::0;12253:140::o;12401:230::-;2508:6;;-1:-1:-1;;;;;2508:6:0;219:10;2508:22;2500:67;;;;-1:-1:-1;;;2500:67:0;;;;;;;:::i;:::-;12508:17:::1;8372:24;12520:4;12508:11;:17::i;:::-;12490:14;:35;;12482:101;;;::::0;-1:-1:-1;;;12482:101:0;;9338:2:1;12482:101:0::1;::::0;::::1;9320:21:1::0;9377:2;9357:18;;;9350:30;9416:34;9396:18;;;9389:62;-1:-1:-1;;;9467:18:1;;;9460:52;9529:19;;12482:101:0::1;9310:244:1::0;12482:101:0::1;12594:12;:29:::0;12401:230::o;10684:202::-;-1:-1:-1;;;;;10774:20:0;;10750:7;10774:20;;;:11;:20;;;;;;;;10770:49;;;-1:-1:-1;;;;;;10803:16:0;;;;;:7;:16;;;;;;;10684:202::o;10770:49::-;-1:-1:-1;;;;;10861:16:0;;;;;;:7;:16;;;;;;10841:37;;:19;:37::i;2595:103::-;2508:6;;-1:-1:-1;;;;;2508:6:0;219:10;2508:22;2500:67;;;;-1:-1:-1;;;2500:67:0;;;;;;;:::i;:::-;2660:30:::1;2687:1;2660:18;:30::i;:::-;2595:103::o:0;10898:169::-;10978:4;10995:42;219:10;11019:9;11030:6;10995:9;:42::i;11983:137::-;2508:6;;-1:-1:-1;;;;;2508:6:0;219:10;2508:22;2500:67;;;;-1:-1:-1;;;2500:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12074:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:38;;-1:-1:-1;;12074:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11983:137::o;12128:117::-;2508:6;;-1:-1:-1;;;;;2508:6:0;219:10;2508:22;2500:67;;;;-1:-1:-1;;;2500:67:0;;;;;;;:::i;:::-;12207:21:::1;:30:::0;;;::::1;;;;-1:-1:-1::0;;12207:30:0;;::::1;::::0;;;::::1;::::0;;12128:117::o;24022:656::-;2508:6;;-1:-1:-1;;;;;2508:6:0;219:10;2508:22;2500:67;;;;-1:-1:-1;;;2500:67:0;;;;;;;:::i;:::-;24132:19:::1;24154:42;24189:6:::0;24154:30:::1;:12:::0;24171;24154:16:::1;:30::i;:::-;:34:::0;::::1;:42::i;:::-;24132:64;;24229:2;24215:11;:16;24207:61;;;::::0;-1:-1:-1;;;24207:61:0;;8265:2:1;24207:61:0::1;::::0;::::1;8247:21:1::0;;;8284:18;;;8277:30;8343:34;8323:18;;;8316:62;8395:18;;24207:61:0::1;8237:182:1::0;24207:61:0::1;24281:13;:28:::0;;;24320:13:::1;:28:::0;;;24359:7:::1;:16:::0;;;24396:21:::1;:37:::0;;;24444:21:::1;:37:::0;;;24492:15:::1;:25:::0;;;24549:45:::1;24369:6:::0;24549:32:::1;24297:12:::0;24336;24549:17:::1;:32::i;:45::-;24538:8;:56:::0;24632:7:::1;::::0;24641:13:::1;::::0;24656::::1;::::0;24620:50:::1;::::0;;14080:25:1;;;14136:2;14121:18;;14114:34;;;;14164:18;;;14157:34;24620:50:0;::::1;::::0;;;;14068:2:1;24620:50:0;;::::1;2578:1;24022:656:::0;;;:::o;14013:332::-;2508:6;;-1:-1:-1;;;;;2508:6:0;219:10;2508:22;2500:67;;;;-1:-1:-1;;;2500:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14095:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;14094:21;14086:61;;;::::0;-1:-1:-1;;;14086:61:0;;7909:2:1;14086:61:0::1;::::0;::::1;7891:21:1::0;7948:2;7928:18;;;7921:30;7987:29;7967:18;;;7960:57;8034:18;;14086:61:0::1;7881:177:1::0;14086:61:0::1;-1:-1:-1::0;;;;;14161:16:0;::::1;14180:1;14161:16:::0;;;:7:::1;:16;::::0;;;;;:20;14158:108:::1;;-1:-1:-1::0;;;;;14237:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;14217:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;14198:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;14158:108:::1;-1:-1:-1::0;;;;;14276:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;14276:27:0::1;14299:4;14276:27:::0;;::::1;::::0;;;14314:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;14314:23:0::1;::::0;;::::1;::::0;;14013:332::o;2857:201::-;2508:6;;-1:-1:-1;;;;;2508:6:0;219:10;2508:22;2500:67;;;;-1:-1:-1;;;2500:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2946:22:0;::::1;2938:73;;;::::0;-1:-1:-1;;;2938:73:0;;7146:2:1;2938:73:0::1;::::0;::::1;7128:21:1::0;7185:2;7165:18;;;7158:30;7224:34;7204:18;;;7197:62;-1:-1:-1;;;7275:18:1;;;7268:36;7321:19;;2938:73:0::1;7118:228:1::0;2938:73:0::1;3022:28;3041:8;3022:18;:28::i;:::-;2857:201:::0;:::o;14353:544::-;2508:6;;-1:-1:-1;;;;;2508:6:0;219:10;2508:22;2500:67;;;;-1:-1:-1;;;2500:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14434:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;14426:56;;;::::0;-1:-1:-1;;;14426:56:0;;8626:2:1;14426:56:0::1;::::0;::::1;8608:21:1::0;8665:2;8645:18;;;8638:30;8704:25;8684:18;;;8677:53;8747:18;;14426:56:0::1;8598:173:1::0;14426:56:0::1;14498:9;14493:397;14517:9;:16:::0;14513:20;::::1;14493:397;;;14575:7;-1:-1:-1::0;;;;;14559:23:0::1;:9;14569:1;14559:12;;;;;;-1:-1:-1::0;;;14559:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;14559:12:0::1;:23;14555:324;;;14618:9;14628:16:::0;;:20:::1;::::0;14647:1:::1;::::0;14628:20:::1;:::i;:::-;14618:31;;;;;;-1:-1:-1::0;;;14618:31:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;14603:9:::1;:12:::0;;-1:-1:-1;;;;;14618:31:0;;::::1;::::0;14613:1;;14603:12;::::1;;;-1:-1:-1::0;;;14603:12:0::1;;;;;;;;;;;;;;;;;:46;;;;;-1:-1:-1::0;;;;;14603:46:0::1;;;;;-1:-1:-1::0;;;;;14603:46:0::1;;;;;;14687:32;14708:10;:8;:10::i;:::-;-1:-1:-1::0;;;;;14687:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;:20:::1;:32::i;:::-;-1:-1:-1::0;;;;;14668:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;;:51;;;;14738:7:::1;:16:::0;;;;;:20;;;14777:11:::1;:20:::0;;;:28;;-1:-1:-1;;14777:28:0::1;::::0;;14824:9:::1;:15:::0;;;::::1;;-1:-1:-1::0;;;14824:15:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;14824:15:0;;;;;-1:-1:-1;;;;;;14824:15:0::1;::::0;;;;;14493:397:::1;14353:544:::0;:::o;14555:324::-:1;14535:3:::0;::::1;::::0;::::1;:::i;:::-;;;;14493:397;;;;14353:544:::0;:::o;15433:335::-;-1:-1:-1;;;;;15526:19:0;;15518:68;;;;-1:-1:-1;;;15518:68:0;;6330:2:1;15518:68:0;;;6312:21:1;6369:2;6349:18;;;6342:30;6408:34;6388:18;;;6381:62;-1:-1:-1;;;6459:18:1;;;6452:34;6503:19;;15518:68:0;6302:226:1;15518:68:0;-1:-1:-1;;;;;15605:21:0;;15597:68;;;;-1:-1:-1;;;15597:68:0;;12507:2:1;15597:68:0;;;12489:21:1;12546:2;12526:18;;;12519:30;12585:34;12565:18;;;12558:62;-1:-1:-1;;;12636:18:1;;;12629:32;12678:19;;15597:68:0;12479:224:1;15597:68:0;-1:-1:-1;;;;;15676:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15728:32;;12854:25:1;;;15728:32:0;;12827:18:1;15728:32:0;;;;;;;15433:335;;;:::o;15781:878::-;-1:-1:-1;;;;;15869:18:0;;15861:68;;;;-1:-1:-1;;;15861:68:0;;5578:2:1;15861:68:0;;;5560:21:1;5617:2;5597:18;;;5590:30;5656:34;5636:18;;;5629:62;-1:-1:-1;;;5707:18:1;;;5700:35;5752:19;;15861:68:0;5550:227:1;15861:68:0;-1:-1:-1;;;;;15948:16:0;;15940:64;;;;-1:-1:-1;;;15940:64:0;;11346:2:1;15940:64:0;;;11328:21:1;11385:2;11365:18;;;11358:30;11424:34;11404:18;;;11397:62;-1:-1:-1;;;11475:18:1;;;11468:33;11518:19;;15940:64:0;11318:225:1;15940:64:0;16032:1;16023:6;:10;16015:64;;;;-1:-1:-1;;;16015:64:0;;10936:2:1;16015:64:0;;;10918:21:1;10975:2;10955:18;;;10948:30;11014:34;10994:18;;;10987:62;-1:-1:-1;;;11065:18:1;;;11058:39;11114:19;;16015:64:0;10908:231:1;16015:64:0;16143:6;;16107:4;;16143:6;;16142:7;:32;;;;-1:-1:-1;16153:21:0;;;;;;;16142:32;:55;;;;-1:-1:-1;16186:11:0;;-1:-1:-1;;;;;16178:19:0;;;16186:11;;16178:19;;16142:55;16138:295;;;16233:28;16264:24;16282:4;16264:9;:24::i;:::-;16233:55;;16330:19;;16307:20;:42;16303:119;;;16370:36;16385:20;16370:14;:36::i;:::-;16138:295;;16453:26;16466:4;16472:6;16453:12;:26::i;:::-;-1:-1:-1;;;;;16496:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;16524:22:0;;;;;;:18;:22;;;;;;;;16496:50;16492:98;;;-1:-1:-1;16573:5:0;16492:98;16610:41;16625:4;16631:2;16635:6;16643:7;16610:14;:41::i;:::-;15781:878;;;;:::o;1276:190::-;1362:7;1398:12;1390:6;;;;1382:29;;;;-1:-1:-1;;;1382:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1422:9:0;1434:5;1438:1;1434;:5;:::i;:::-;1422:17;1276:190;-1:-1:-1;;;;;1276:190:0:o;23288:163::-;23329:7;23350:15;23367;23386:19;:17;:19::i;:::-;23349:56;;-1:-1:-1;23349:56:0;-1:-1:-1;23423:20:0;23349:56;;23423:11;:20::i;:::-;23416:27;;;;23288:163;:::o;1728:132::-;1786:7;1813:39;1817:1;1820;1813:39;;;;;;;;;;;;;;;;;:3;:39::i;21989:522::-;22048:7;22057;22066;22075;22084;22093;22113:14;22130:32;22148:13;;22130;;:17;;:32;;;;:::i;:::-;22113:49;;22174:23;22199:12;22213;22229:37;22241:7;22250;;22259:6;22229:11;:37::i;:::-;22173:93;;;;;;22277:19;22299:10;:8;:10::i;:::-;22277:32;;22321:15;22338:23;22363:12;22379:45;22391:7;22400:4;22406;22412:11;22379;:45::i;:::-;22320:104;;-1:-1:-1;22320:104:0;-1:-1:-1;22320:104:0;-1:-1:-1;22475:15:0;;-1:-1:-1;22492:4:0;;-1:-1:-1;22498:4:0;;-1:-1:-1;;;;;;21989:522:0;;;;;;;:::o;1132:136::-;1190:7;1217:43;1221:1;1224;1217:43;;;;;;;;;;;;;;;;;:3;:43::i;945:179::-;1003:7;;1035:5;1039:1;1035;:5;:::i;:::-;1023:17;;1064:1;1059;:6;;1051:46;;;;-1:-1:-1;;;1051:46:0;;7553:2:1;1051:46:0;;;7535:21:1;7592:2;7572:18;;;7565:30;7631:29;7611:18;;;7604:57;7678:18;;1051:46:0;7525:177:1;3218:191:0;3292:16;3311:6;;-1:-1:-1;;;;;3328:17:0;;;-1:-1:-1;;;;;;3328:17:0;;;;;;3361:40;;3311:6;;;;;;;3361:40;;3292:16;3361:40;3218:191;;:::o;1474:246::-;1532:7;1556:6;1552:47;;-1:-1:-1;1586:1:0;1579:8;;1552:47;1609:9;1621:5;1625:1;1621;:5;:::i;:::-;1609:17;-1:-1:-1;1654:1:0;1645:5;1649:1;1609:17;1645:5;:::i;:::-;:10;1637:56;;;;-1:-1:-1;;;1637:56:0;;9761:2:1;1637:56:0;;;9743:21:1;9800:2;9780:18;;;9773:30;9839:34;9819:18;;;9812:62;-1:-1:-1;;;9890:18:1;;;9883:31;9931:19;;1637:56:0;9733:223:1;16667:1406:0;9443:6;:13;;-1:-1:-1;;9443:13:0;9452:4;9443:13;;;16822::::1;::::0;16804::::1;::::0;9443:6;;16769:75:::1;::::0;16842:1:::1;::::0;16769:68:::1;::::0;16804:32:::1;::::0;:17:::1;:32::i;:::-;16785:13;::::0;16769:30:::1;::::0;:11;;:15:::1;:30::i;:::-;:34:::0;::::1;:68::i;:75::-;16743:101:::0;-1:-1:-1;16855:20:0::1;16878:32;:11:::0;16743:101;16878:15:::1;:32::i;:::-;16955:16;::::0;;16969:1:::1;16955:16:::0;;;;;::::1;::::0;;16855:55;;-1:-1:-1;16931:21:0::1;::::0;16955:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;16955:16:0::1;16931:40;;17000:4;16982;16987:1;16982:7;;;;;;-1:-1:-1::0;;;16982:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;16982:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;17026:13:::1;::::0;:20:::1;::::0;;-1:-1:-1;;;17026:20:0;;;;:13;;;::::1;::::0;:18:::1;::::0;:20:::1;::::0;;::::1;::::0;16982:7;;17026:20;;;;;:13;:20;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17016:4;17021:1;17016:7;;;;;;-1:-1:-1::0;;;17016:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;17016:30:0;;::::1;:7;::::0;;::::1;::::0;;;;;:30;17117:13:::1;::::0;:195:::1;::::0;-1:-1:-1;;;17117:195:0;;17083:21:::1;::::0;17117:13;;;::::1;::::0;:64:::1;::::0;:195:::1;::::0;17196:12;;17059:21:::1;::::0;17239:4;;17266::::1;::::0;17286:15:::1;::::0;17117:195:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17325:17;17345:40;17371:13;17345:21;:25;;:40;;;;:::i;:::-;17325:60;;17396:19;17418:58;17455:20;17473:1;17455:13;;:17;;:20;;;;:::i;:::-;17436:13;::::0;17418::::1;::::0;:32:::1;::::0;:17:::1;:32::i;:::-;:36:::0;::::1;:58::i;:::-;17396:80;;17489:26;17518:52;17568:1;17518:45;17551:11;17518:28;17532:13;;17518:9;:13;;:28;;;;:::i;:52::-;17489:81;;17581:26;17610:45;17643:11;17610:28;17624:13;;17610:9;:13;;:28;;;;:::i;:45::-;17694:20;::::0;17686:77:::1;::::0;17581:74;;-1:-1:-1;17669:12:0::1;::::0;-1:-1:-1;;;;;17694:20:0;;::::1;::::0;17753:5:::1;::::0;17581:74;;17669:12;17686:77;17669:12;17686:77;17581:74;17694:20;17753:5;17686:77:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17668:95;;;17782:7;17774:63;;;::::0;-1:-1:-1;;;17774:63:0;;10524:2:1;17774:63:0::1;::::0;::::1;10506:21:1::0;10563:2;10543:18;;;10536:30;10602:34;10582:18;;;10575:62;-1:-1:-1;;;10653:18:1;;;10646:41;10704:19;;17774:63:0::1;10496:233:1::0;17774:63:0::1;17850:13;::::0;:215:::1;::::0;-1:-1:-1;;;17850:215:0;;17929:4:::1;17850:215;::::0;::::1;4305:34:1::0;;;4355:18;;;4348:34;;;17850:13:0::1;4398:18:1::0;;;4391:34;;;4441:18;;;4434:34;4484:19;;;4477:44;18039:15:0::1;4537:19:1::0;;;4530:35;-1:-1:-1;;;;;17850:13:0;;::::1;::::0;:29:::1;::::0;17887:18;;4239:19:1;;17850:215:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;9479:6:0;:14;;-1:-1:-1;;9479:14:0;;;-1:-1:-1;;;;;;;;;;;16667:1406:0:o;12738:169::-;12835:12;;12825:6;:22;;:52;;;-1:-1:-1;;;;;;12851:26:0;;;;;;:18;:26;;;;;;;;12825:52;12817:82;;;;-1:-1:-1;;;12817:82:0;;5984:2:1;12817:82:0;;;5966:21:1;6023:2;6003:18;;;5996:30;-1:-1:-1;;;6042:18:1;;;6035:47;6099:18;;12817:82:0;5956:167:1;18371:836:0;18484:7;18479:60;;18513:14;:12;:14::i;:::-;-1:-1:-1;;;;;18553:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;18577:22:0;;;;;;:11;:22;;;;;;;;18576:23;18553:46;18549:597;;;18616:48;18638:6;18646:9;18657:6;18616:21;:48::i;:::-;18549:597;;;-1:-1:-1;;;;;18687:19:0;;;;;;:11;:19;;;;;;;;18686:20;:46;;;;-1:-1:-1;;;;;;18710:22:0;;;;;;:11;:22;;;;;;;;18686:46;18682:464;;;18749:46;18769:6;18777:9;18788:6;18749:19;:46::i;18682:464::-;-1:-1:-1;;;;;18818:19:0;;;;;;:11;:19;;;;;;;;18817:20;:47;;;;-1:-1:-1;;;;;;18842:22:0;;;;;;:11;:22;;;;;;;;18841:23;18817:47;18813:333;;;18881:44;18899:6;18907:9;18918:6;18881:17;:44::i;18813:333::-;-1:-1:-1;;;;;18947:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;18970:22:0;;;;;;:11;:22;;;;;;;;18947:45;18943:203;;;19009:48;19031:6;19039:9;19050:6;19009:21;:48::i;18943:203::-;19090:44;19108:6;19116:9;19127:6;19090:17;:44::i;:::-;19162:7;19158:41;;19184:15;15312:21;;15296:13;:37;15360:21;;15344:13;:37;15402:15;;15392:7;:25;15252:173;23459:555;23556:7;;23509;;;;8372:24;23509:7;23610:289;23634:9;:16;23630:20;;23610:289;;;23700:7;23676;:21;23684:9;23694:1;23684:12;;;;;;-1:-1:-1;;;23684:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23684:12:0;23676:21;;;;;;;;;;;;;:31;;:66;;;23735:7;23711;:21;23719:9;23729:1;23719:12;;;;;;-1:-1:-1;;;23719:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23719:12:0;23711:21;;;;;;;;;;;;;:31;23676:66;23672:97;;;-1:-1:-1;;23752:7:0;;;8372:24;;-1:-1:-1;23459:555:0;-1:-1:-1;;23459:555:0:o;23672:97::-;23794:34;23806:7;:21;23814:9;23824:1;23814:12;;;;;;-1:-1:-1;;;23814:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23814:12:0;23806:21;;;;;;;;;;;;;23794:7;;:11;:34::i;:::-;23784:44;;23853:34;23865:7;:21;23873:9;23883:1;23873:12;;;;;;-1:-1:-1;;;23873:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23873:12:0;23865:21;;;;;;;;;;;;;23853:7;;:11;:34::i;:::-;23843:44;-1:-1:-1;23652:3:0;;;;:::i;:::-;;;;23610:289;;;-1:-1:-1;23923:7:0;;:20;;8372:24;23923:11;:20::i;:::-;23913:7;:30;23909:61;;;-1:-1:-1;;23953:7:0;;;8372:24;;-1:-1:-1;23459:555:0;-1:-1:-1;23459:555:0:o;23909:61::-;23989:7;;23998;;-1:-1:-1;23459:555:0;-1:-1:-1;23459:555:0:o;1868:189::-;1954:7;1989:12;1982:5;1974:28;;;;-1:-1:-1;;;1974:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2013:9:0;2025:5;2029:1;2025;:5;:::i;22519:346::-;22611:7;;;;22664:28;22688:3;22664:19;:7;22676:6;22664:11;:19::i;:28::-;22649:43;-1:-1:-1;22703:12:0;22718:28;22742:3;22718:19;:7;22730:6;22718:11;:19::i;:28::-;22703:43;-1:-1:-1;22757:23:0;22783:27;22703:43;22783:17;:7;22795:4;22783:11;:17::i;:27::-;22757:53;22846:4;;-1:-1:-1;22852:4:0;;-1:-1:-1;22519:346:0;;-1:-1:-1;;;;;22519:346:0:o;22875:405::-;22984:7;;;;23040:24;:7;23052:11;23040;:24::i;:::-;23022:42;-1:-1:-1;23075:12:0;23090:21;:4;23099:11;23090:8;:21::i;:::-;23075:36;-1:-1:-1;23122:12:0;23137:21;:4;23146:11;23137:8;:21::i;:::-;23122:36;-1:-1:-1;23169:23:0;23195:27;23122:36;23195:17;:7;23207:4;23195:11;:17::i;:27::-;23241:7;;;;-1:-1:-1;23267:4:0;;-1:-1:-1;22875:405:0;;-1:-1:-1;;;;;;;22875:405:0:o;14905:339::-;14952:13;;:18;:40;;;;-1:-1:-1;14974:13:0;;:18;14952:40;:56;;;;-1:-1:-1;14996:7:0;;:12;14952:56;14948:69;;;14905:339::o;14948:69::-;15051:13;;;15027:21;:37;15099:13;;;15075:21;:37;15141:7;;;15123:15;:25;-1:-1:-1;15169:17:0;;;;15197;;;;15225:11;14905:339::o;20274:546::-;20377:15;20394:23;20419:12;20433:23;20458:12;20472;20488:19;20499:7;20488:10;:19::i;:::-;-1:-1:-1;;;;;20536:15:0;;;;;;:7;:15;;;;;;20376:131;;-1:-1:-1;20376:131:0;;-1:-1:-1;20376:131:0;;-1:-1:-1;20376:131:0;-1:-1:-1;20376:131:0;-1:-1:-1;20376:131:0;-1:-1:-1;20536:28:0;;20556:7;20536:19;:28::i;:::-;-1:-1:-1;;;;;20518:15:0;;;;;;:7;:15;;;;;;;;:46;;;;20593:7;:15;;;;:28;;20613:7;20593:19;:28::i;:::-;-1:-1:-1;;;;;20575:15:0;;;;;;;:7;:15;;;;;;:46;;;;20653:18;;;;;;;:39;;20676:15;20653:22;:39::i;:::-;-1:-1:-1;;;;;20632:18:0;;;;;;:7;:18;;;;;:60;20703:15;20713:4;20703:9;:15::i;:::-;20729:23;20741:4;20747;20729:11;:23::i;:::-;20785:9;-1:-1:-1;;;;;20768:44:0;20777:6;-1:-1:-1;;;;;20768:44:0;;20796:15;20768:44;;;;12854:25:1;;12842:2;12827:18;;12809:76;20768:44:0;;;;;;;;20274:546;;;;;;;;;:::o;19708:558::-;19809:15;19826:23;19851:12;19865:23;19890:12;19904;19920:19;19931:7;19920:10;:19::i;:::-;-1:-1:-1;;;;;19968:15:0;;;;;;:7;:15;;;;;;19808:131;;-1:-1:-1;19808:131:0;;-1:-1:-1;19808:131:0;;-1:-1:-1;19808:131:0;-1:-1:-1;19808:131:0;-1:-1:-1;19808:131:0;-1:-1:-1;19968:28:0;;19808:131;19968:19;:28::i;:::-;-1:-1:-1;;;;;19950:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;20028:18;;;;;:7;:18;;;;;:39;;20051:15;20028:22;:39::i;:::-;-1:-1:-1;;;;;20007:18:0;;;;;;:7;:18;;;;;;;;:60;;;;20099:7;:18;;;;:39;;20122:15;20099:22;:39::i;19215:485::-;19314:15;19331:23;19356:12;19370:23;19395:12;19409;19425:19;19436:7;19425:10;:19::i;:::-;-1:-1:-1;;;;;19473:15:0;;;;;;:7;:15;;;;;;19313:131;;-1:-1:-1;19313:131:0;;-1:-1:-1;19313:131:0;;-1:-1:-1;19313:131:0;-1:-1:-1;19313:131:0;-1:-1:-1;19313:131:0;-1:-1:-1;19473:28:0;;19313:131;19473:19;:28::i;20828:617::-;20931:15;20948:23;20973:12;20987:23;21012:12;21026;21042:19;21053:7;21042:10;:19::i;:::-;-1:-1:-1;;;;;21090:15:0;;;;;;:7;:15;;;;;;20930:131;;-1:-1:-1;20930:131:0;;-1:-1:-1;20930:131:0;;-1:-1:-1;20930:131:0;-1:-1:-1;20930:131:0;-1:-1:-1;20930:131:0;-1:-1:-1;21090:28:0;;21110:7;21090:19;:28::i;:::-;-1:-1:-1;;;;;21072:15:0;;;;;;:7;:15;;;;;;;;:46;;;;21147:7;:15;;;;:28;;21167:7;21147:19;:28::i;21457:320::-;21509:19;21532:10;:8;:10::i;:::-;21509:33;-1:-1:-1;21553:12:0;21568:21;:4;21509:33;21568:8;:21::i;:::-;21641:4;21625:22;;;;:7;:22;;;;;;21553:36;;-1:-1:-1;21625:32:0;;21553:36;21625:26;:32::i;:::-;21616:4;21600:22;;;;:7;:22;;;;;;;;:57;;;;21671:11;:26;;;;;;21668:101;;;21753:4;21737:22;;;;:7;:22;;;;;;:32;;21764:4;21737:26;:32::i;:::-;21728:4;21712:22;;;;:7;:22;;;;;:57;21457:320;;;:::o;21789:147::-;21867:7;;:17;;21879:4;21867:11;:17::i;:::-;21857:7;:27;21908:10;;:20;;21923:4;21908:14;:20::i;:::-;21895:10;:33;-1:-1:-1;;21789:147:0:o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:2;;164:1;161;154:12;108:2;60:114;;;:::o;179:257::-;238:6;291:2;279:9;270:7;266:23;262:32;259:2;;;312:6;304;297:22;259:2;356:9;343:23;375:31;400:5;375:31;:::i;441:261::-;511:6;564:2;552:9;543:7;539:23;535:32;532:2;;;585:6;577;570:22;532:2;622:9;616:16;641:31;666:5;641:31;:::i;707:398::-;775:6;783;836:2;824:9;815:7;811:23;807:32;804:2;;;857:6;849;842:22;804:2;901:9;888:23;920:31;945:5;920:31;:::i;:::-;970:5;-1:-1:-1;1027:2:1;1012:18;;999:32;1040:33;999:32;1040:33;:::i;:::-;1092:7;1082:17;;;794:311;;;;;:::o;1110:466::-;1187:6;1195;1203;1256:2;1244:9;1235:7;1231:23;1227:32;1224:2;;;1277:6;1269;1262:22;1224:2;1321:9;1308:23;1340:31;1365:5;1340:31;:::i;:::-;1390:5;-1:-1:-1;1447:2:1;1432:18;;1419:32;1460:33;1419:32;1460:33;:::i;:::-;1214:362;;1512:7;;-1:-1:-1;;;1566:2:1;1551:18;;;;1538:32;;1214:362::o;1581:325::-;1646:6;1654;1707:2;1695:9;1686:7;1682:23;1678:32;1675:2;;;1728:6;1720;1713:22;1675:2;1772:9;1759:23;1791:31;1816:5;1791:31;:::i;:::-;1841:5;-1:-1:-1;1865:35:1;1896:2;1881:18;;1865:35;:::i;:::-;1855:45;;1665:241;;;;;:::o;1911:325::-;1979:6;1987;2040:2;2028:9;2019:7;2015:23;2011:32;2008:2;;;2061:6;2053;2046:22;2008:2;2105:9;2092:23;2124:31;2149:5;2124:31;:::i;:::-;2174:5;2226:2;2211:18;;;;2198:32;;-1:-1:-1;;;1998:238:1:o;2241:190::-;2297:6;2350:2;2338:9;2329:7;2325:23;2321:32;2318:2;;;2371:6;2363;2356:22;2318:2;2399:26;2415:9;2399:26;:::i;2436:190::-;2495:6;2548:2;2536:9;2527:7;2523:23;2519:32;2516:2;;;2569:6;2561;2554:22;2516:2;-1:-1:-1;2597:23:1;;2506:120;-1:-1:-1;2506:120:1:o;2631:258::-;2696:6;2704;2757:2;2745:9;2736:7;2732:23;2728:32;2725:2;;;2778:6;2770;2763:22;2725:2;2819:9;2806:23;2796:33;;2848:35;2879:2;2868:9;2864:18;2848:35;:::i;2894:326::-;2971:6;2979;2987;3040:2;3028:9;3019:7;3015:23;3011:32;3008:2;;;3061:6;3053;3046:22;3008:2;-1:-1:-1;;3089:23:1;;;3159:2;3144:18;;3131:32;;-1:-1:-1;3210:2:1;3195:18;;;3182:32;;2998:222;-1:-1:-1;2998:222:1:o;3225:316::-;3313:6;3321;3329;3382:2;3370:9;3361:7;3357:23;3353:32;3350:2;;;3403:6;3395;3388:22;3350:2;3437:9;3431:16;3421:26;;3487:2;3476:9;3472:18;3466:25;3456:35;;3531:2;3520:9;3516:18;3510:25;3500:35;;3340:201;;;;;:::o;4768:603::-;4880:4;4909:2;4938;4927:9;4920:21;4970:6;4964:13;5013:6;5008:2;4997:9;4993:18;4986:34;5038:4;5051:140;5065:6;5062:1;5059:13;5051:140;;;5160:14;;;5156:23;;5150:30;5126:17;;;5145:2;5122:26;5115:66;5080:10;;5051:140;;;5209:6;5206:1;5203:13;5200:2;;;5279:4;5274:2;5265:6;5254:9;5250:22;5246:31;5239:45;5200:2;-1:-1:-1;5355:2:1;5334:15;-1:-1:-1;;5330:29:1;5315:45;;;;5362:2;5311:54;;4889:482;-1:-1:-1;;;4889:482:1:o;9961:356::-;10163:2;10145:21;;;10182:18;;;10175:30;10241:34;10236:2;10221:18;;10214:62;10308:2;10293:18;;10135:182::o;12890:983::-;13152:4;13200:3;13189:9;13185:19;13231:6;13220:9;13213:25;13257:2;13295:6;13290:2;13279:9;13275:18;13268:34;13338:3;13333:2;13322:9;13318:18;13311:31;13362:6;13397;13391:13;13428:6;13420;13413:22;13466:3;13455:9;13451:19;13444:26;;13505:2;13497:6;13493:15;13479:29;;13526:4;13539:195;13553:6;13550:1;13547:13;13539:195;;;13618:13;;-1:-1:-1;;;;;13614:39:1;13602:52;;13709:15;;;;13674:12;;;;13650:1;13568:9;13539:195;;;-1:-1:-1;;;;;;;13790:32:1;;;;13785:2;13770:18;;13763:60;-1:-1:-1;;;13854:3:1;13839:19;13832:35;13751:3;13161:712;-1:-1:-1;;;13161:712:1:o;14391:128::-;14431:3;14462:1;14458:6;14455:1;14452:13;14449:2;;;14468:18;;:::i;:::-;-1:-1:-1;14504:9:1;;14439:80::o;14524:217::-;14564:1;14590;14580:2;;-1:-1:-1;;;14615:31:1;;14669:4;14666:1;14659:15;14697:4;14622:1;14687:15;14580:2;-1:-1:-1;14726:9:1;;14570:171::o;14746:168::-;14786:7;14852:1;14848;14844:6;14840:14;14837:1;14834:21;14829:1;14822:9;14815:17;14811:45;14808:2;;;14859:18;;:::i;:::-;-1:-1:-1;14899:9:1;;14798:116::o;14919:125::-;14959:4;14987:1;14984;14981:8;14978:2;;;14992:18;;:::i;:::-;-1:-1:-1;15029:9:1;;14968:76::o;15049:135::-;15088:3;-1:-1:-1;;15109:17:1;;15106:2;;;15129:18;;:::i;:::-;-1:-1:-1;15176:1:1;15165:13;;15096:88::o;15189:127::-;15250:10;15245:3;15241:20;15238:1;15231:31;15281:4;15278:1;15271:15;15305:4;15302:1;15295:15;15321:131;-1:-1:-1;;;;;15396:31:1;;15386:42;;15376:2;;15442:1;15439;15432:12

Swarm Source

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