ETH Price: $3,516.48 (+0.84%)
Gas: 2 Gwei

Token

SHIBA PEPE (SHEPE)
 

Overview

Max Total Supply

21,000,000,000,000 SHEPE

Holders

216

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 4 Decimals)

Balance
1,312,283,480.4843 SHEPE

Value
$0.00
0x99635e6a32a4569fe8081c9cdd76c1de07d1bf62
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:
Test

Compiler Version
v0.7.4+commit.3f05b770

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT Licence
 
pragma solidity ^0.7.4;
 
 
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;
    }
}
 
interface IBEP20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
 
abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;
 
    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }
 
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }
 
    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }
 
    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }
 
    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }
 
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }
 
    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }
 
    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }
 
    event OwnershipTransferred(address owner);
}
 
interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}
 
interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
 
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
 
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
 
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
 
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
 
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}
 
interface IDividendDistributor {
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function process(uint256 gas) external;
}
 
contract DividendDistributor is IDividendDistributor {
    using SafeMath for uint256;
 
    address _token;
 
    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }
 
    IBEP20 RWRD = IBEP20(0xdAC17F958D2ee523a2206206994597C13D831ec7);
    address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    IDEXRouter router;
 
    address[] shareholders;
    mapping (address => uint256) shareholderIndexes;
    mapping (address => uint256) shareholderClaims;
 
    mapping (address => Share) public shares;
 
    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;
 
    uint256 public minPeriod = 45 * 60;
    uint256 public minDistribution = 1 * (10 ** 18);
 
    uint256 currentIndex;
 
    bool initialized;
    modifier initialization() {
        require(!initialized);
        _;
        initialized = true;
    }
 
    modifier onlyToken() {
        require(msg.sender == _token); _;
    }
 
    constructor (address _router) {
        router = _router != address(0)
        ? IDEXRouter(_router)
        : IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _token = msg.sender;
    }
 
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken {
        minPeriod = _minPeriod;
        minDistribution = _minDistribution;
    }
 
    function setShare(address shareholder, uint256 amount) external override onlyToken {
        if(shares[shareholder].amount > 0){
            distributeDividend(shareholder);
        }
 
        if(amount > 0 && shares[shareholder].amount == 0){
            addShareholder(shareholder);
        }else if(amount == 0 && shares[shareholder].amount > 0){
            removeShareholder(shareholder);
        }
 
        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }
 
    function deposit() external payable override onlyToken {
        uint256 balanceBefore = RWRD.balanceOf(address(this));
 
        address[] memory path = new address[](2);
        path[0] = WETH;
        path[1] = address(RWRD);
 
        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(
            0,
            path,
            address(this),
            block.timestamp
        );
 
        uint256 amount = RWRD.balanceOf(address(this)).sub(balanceBefore);
 
        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }
 
    function process(uint256 gas) external override onlyToken {
        uint256 shareholderCount = shareholders.length;
 
        if(shareholderCount == 0) { return; }
 
        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();
 
        uint256 iterations = 0;
 
        while(gasUsed < gas && iterations < shareholderCount) {
            if(currentIndex >= shareholderCount){
                currentIndex = 0;
            }
 
            if(shouldDistribute(shareholders[currentIndex])){
                distributeDividend(shareholders[currentIndex]);
            }
 
            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }
 
    function shouldDistribute(address shareholder) internal view returns (bool) {
        return shareholderClaims[shareholder] + minPeriod < block.timestamp
        && getUnpaidEarnings(shareholder) > minDistribution;
    }
 
    function distributeDividend(address shareholder) internal {
        if(shares[shareholder].amount == 0){ return; }
 
        uint256 amount = getUnpaidEarnings(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            RWRD.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }
 
    function claimDividend() external {
        distributeDividend(msg.sender);
    }
 
    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        if(shares[shareholder].amount == 0){ return 0; }
 
        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;
 
        if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }
 
        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }
 
    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }
 
    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }
 
    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
        shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
}
 
contract Test is IBEP20, Auth {
    using SafeMath for uint256;
 
    address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
 
    string constant _name = "SHIBA PEPE";
    string constant _symbol = "SHEPE";
    uint8 constant _decimals = 4;
 
    uint256 _totalSupply = 21000000 * 10**6 * 10**_decimals;
 
    uint256 public _maxTxAmount = _totalSupply.mul(2).div(100);
    uint256 public _maxWalletToken = _totalSupply.mul(4).div(100);
 
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;
 
    bool public blacklistMode = true;
    mapping (address => bool) public isBlacklisted;
 
    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) isTimelockExempt;
    mapping (address => bool) isDividendExempt;
 
    uint256 public liquidityFee    = 0;
    uint256 public reflectionFee   = 0;
    uint256 public marketingFee    = 0;
    uint256 public ecosystemfee    = 0;
    uint256 public burnFee         = 0;
    uint256 private totalFee        = marketingFee + reflectionFee + liquidityFee + ecosystemfee + burnFee;
    uint256 public feeDenominator  = 100;
 
    uint256 public sellMultiplier  = 100;
 
    address private autoLiquidityReceiver;
    address private marketingFeeReceiver;
    address private ecosystemfeeReceiver;
    address public burnFeeReceiver;
 
    uint256 targetLiquidity = 85;
    uint256 targetLiquidityDenominator = 100;
 
    IDEXRouter public router;
    address public pair;
 
    bool public tradingOpen = false;
 
    DividendDistributor public distributor;
    uint256 distributorGas = 500000;
 
    bool public buyCooldownEnabled = false;
    uint8 public cooldownTimerInterval = 60;
    mapping (address => uint) private cooldownTimer;
 
    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 5 / 10000;
    bool inSwap;

    modifier swapping() { inSwap = true; _; inSwap = false; }
 
    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = uint256(-1);
 
        distributor = new DividendDistributor(address(router));
 
        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;
 
        isTimelockExempt[msg.sender] = true;
        isTimelockExempt[DEAD] = true;
        isTimelockExempt[address(this)] = true;
 
        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;
 
        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = 0x080FE3528Ed88Fc9752bC790AA5b272540796bC0;
        ecosystemfeeReceiver = 0xBe1656240C98f76D0579da82049787d9476D7434;
        burnFeeReceiver = DEAD;
 
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }
 
    receive() external payable { }
 
    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
 
    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }
 
    function approveMax(address spender) external returns (bool) {
        return approve(spender, uint256(-1));
    }
 
    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }
 
    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != uint256(-1)){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }
 
        return _transferFrom(sender, recipient, amount);
    }
 
    function setMaxWalletPercent_base5000(uint256 maxWallPercent_base5000) external onlyOwner() {
        _maxWalletToken = (_totalSupply * maxWallPercent_base5000 ) / 5000;
    }
    function setMaxTxPercent_base5000(uint256 maxTXPercentage_base5000) external onlyOwner() {
        _maxTxAmount = (_totalSupply * maxTXPercentage_base5000 ) / 5000;
    }
 
    function setTxLimit(uint256 amount) external authorized {
        _maxTxAmount = amount;
    }
 
 
    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }
 
        if(!authorizations[sender] && !authorizations[recipient]){
            require(tradingOpen,"Trading not open yet");
        }
 
        // Blacklist
        if(blacklistMode){
            require(!isBlacklisted[sender] && !isBlacklisted[recipient],"Blacklisted");
        }
 
 
        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != marketingFeeReceiver && recipient != ecosystemfeeReceiver  && recipient != autoLiquidityReceiver && recipient != burnFeeReceiver){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}
 
        if (sender == pair &&
        buyCooldownEnabled &&
            !isTimelockExempt[recipient]) {
            require(cooldownTimer[recipient] < block.timestamp,"Please wait for 1min between two buys");
            cooldownTimer[recipient] = block.timestamp + cooldownTimerInterval;
        }
 
        // Checks max transaction limit
        checkTxLimit(sender, amount);
 
        if(shouldSwapBack()){ swapBack(); }
 
        //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived;
        
        if(sender == pair && !isFeeExempt[sender] && !isFeeExempt[recipient]){
            amountReceived = takeFee(sender, amount, (false));
        }

        else if(recipient == pair && !isFeeExempt[sender] && !isFeeExempt[recipient]) {
            amountReceived = takeFee(sender, amount, (true));
        } else{
            amountReceived = amount;
        }
 
        // uint256 amountReceived = (!shouldTakeFee(sender) || !shouldTakeFee(recipient)) ? amount : takeFee(sender, amount,(recipient == pair));
        _balances[recipient] = _balances[recipient].add(amountReceived);
 
        // Dividend tracker
        if(!isDividendExempt[sender]) {
            try distributor.setShare(sender, _balances[sender]) {} catch {}
        }
 
        if(!isDividendExempt[recipient]) {
            try distributor.setShare(recipient, _balances[recipient]) {} catch {}
        }
 
        try distributor.process(distributorGas) {} catch {}
 
        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
 
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }
 
    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }
 
    function shouldTakeFee(address sender) external view returns (bool) {
        return !isFeeExempt[sender];
    }
 
    function takeFee(address sender, uint256 amount, bool isSell) internal returns (uint256) {
 
        uint256 multiplier = isSell ? sellMultiplier : 100;
        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);


 
        uint256 burnTokens = feeAmount.mul(burnFee).div(totalFee);
        uint256 contractTokens = feeAmount.sub(burnTokens);
 
        _balances[address(this)] = _balances[address(this)].add(contractTokens);
        _balances[burnFeeReceiver] = _balances[burnFeeReceiver].add(burnTokens);
        emit Transfer(sender, address(this), contractTokens);
 
        if(burnTokens > 0){
            emit Transfer(sender, burnFeeReceiver, burnTokens);
        }
 
        return amount.sub(feeAmount);
    }
 
    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }
 
    function clearStuckBalance(uint256 amountPercentage) external authorized {
        uint256 amountBNB = address(this).balance;
        payable(msg.sender).transfer(amountBNB * amountPercentage / 100);
    }
 
    function clearStuckBalance_sender(uint256 amountPercentage) external authorized {
        uint256 amountBNB = address(this).balance;
        payable(msg.sender).transfer(amountBNB * amountPercentage / 100);
    }
 
    function set_sell_multiplier(uint256 Multiplier) external onlyOwner{
        sellMultiplier = Multiplier;
    }
 
    // switch Trading
    function tradingStatus(bool _status) public onlyOwner {
        tradingOpen = _status;
    }

    function whiteList(address _address, bool _status) public onlyOwner {
        isFeeExempt[_address] = _status;
        isTxLimitExempt[_address] = _status;
        isTimelockExempt[_address] = _status;
    }
 
    // enable cooldown between trades
    function cooldownEnabled(bool _status, uint8 _interval) public onlyOwner {
        buyCooldownEnabled = _status;
        cooldownTimerInterval = _interval;
    }
 
    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);
 
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;
 
        uint256 balanceBefore = address(this).balance;
 
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );
 
        uint256 amountBNB = address(this).balance.sub(balanceBefore);
 
        uint256 totalBNBFee = totalFee.sub(dynamicLiquidityFee.div(2));
 
        uint256 amountBNBLiquidity = amountBNB.mul(dynamicLiquidityFee).div(totalBNBFee).div(2);
        uint256 amountBNBReflection = amountBNB.mul(reflectionFee).div(totalBNBFee);
        uint256 amountBNBMarketing = amountBNB.mul(marketingFee).div(totalBNBFee);
        uint256 amountBNBDev = amountBNB.mul(ecosystemfee).div(totalBNBFee);
 
        try distributor.deposit{value: amountBNBReflection}() {} catch {}
        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountBNBMarketing, gas: 30000}("");
        (tmpSuccess,) = payable(ecosystemfeeReceiver).call{value: amountBNBDev, gas: 30000}("");
 
        // only to supress warning msg
        tmpSuccess = false;
 
        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountBNBLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountBNBLiquidity, amountToLiquify);
        }
    }
 
 
    function setIsDividendExempt(address holder, bool exempt) external authorized {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        if(exempt){
            distributor.setShare(holder, 0);
        }else{
            distributor.setShare(holder, _balances[holder]);
        }
    }
 
    function enable_blacklist(bool _status) public onlyOwner {
        blacklistMode = _status;
    }
 
    function manage_blacklist(address[] calldata addresses, bool status) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            isBlacklisted[addresses[i]] = status;
        }
    }
 
 
    function setIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }
 
    function setIsTxLimitExempt(address holder, bool exempt) external authorized {
        isTxLimitExempt[holder] = exempt;
    }
 
    function setIsTimelockExempt(address holder, bool exempt) external authorized {
        isTimelockExempt[holder] = exempt;
    }
 
    function setFees(uint256 _liquidityFee, uint256 _reflectionFee, uint256 _marketingFee, uint256 _ecosystemfee, uint256 _burnFee, uint256 _feeDenominator) external authorized {
        liquidityFee = _liquidityFee;
        reflectionFee = _reflectionFee;
        marketingFee = _marketingFee;
        ecosystemfee = _ecosystemfee;
        burnFee = _burnFee;
        totalFee = _liquidityFee.add(_reflectionFee).add(_marketingFee).add(_ecosystemfee).add(_burnFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator/4, "Fees cannot be more than 25%");
    }
 
    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _ecosystemfeeReceiver, address _burnFeeReceiver ) external authorized {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        ecosystemfeeReceiver = _ecosystemfeeReceiver;
        burnFeeReceiver = _burnFeeReceiver;
    }
 
    function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }
 
    function setTargetLiquidity(uint256 _target, uint256 _denominator) external authorized {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }
 
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external authorized {
        distributor.setDistributionCriteria(_minPeriod, _minDistribution);
    }
 
    function setDistributorSettings(uint256 gas) external authorized {
        require(gas < 750000);
        distributorGas = gas;
    }
 
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }
 
    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }
 
    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }
 
 
 
    /* Airdrop Begins */
    function multiTransfer(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {
        require(from==msg.sender);
        require(addresses.length < 501,"GAS Error: max airdrop limit is 500 addresses");
        require(addresses.length == tokens.length,"Mismatch between Address and token count");
 
        uint256 SCCC = 0;
 
        for(uint i=0; i < addresses.length; i++){
            SCCC = SCCC + tokens[i];
        }
 
        require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");
 
        for(uint i=0; i < addresses.length; i++){
            _basicTransfer(from,addresses[i],tokens[i]);
            if(!isDividendExempt[addresses[i]]) {
                try distributor.setShare(addresses[i], _balances[addresses[i]]) {} catch {}
            }
        }
 
        // Dividend tracker
        if(!isDividendExempt[from]) {
            try distributor.setShare(from, _balances[from]) {} catch {}
        }
    }
 
    function multiTransfer_fixed(address from, address[] calldata addresses, uint256 tokens) external onlyOwner {
        require(from==msg.sender);
        require(addresses.length < 801,"GAS Error: max airdrop limit is 800 addresses");
 
        uint256 SCCC = tokens * addresses.length;
 
        require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");
 
        for(uint i=0; i < addresses.length; i++){
            _basicTransfer(from,addresses[i],tokens);
            if(!isDividendExempt[addresses[i]]) {
                try distributor.setShare(addresses[i], _balances[addresses[i]]) {} catch {}
            }
        }
 
        // Dividend tracker
        if(!isDividendExempt[from]) {
            try distributor.setShare(from, _balances[from]) {} catch {}
        }
    }
 
    event AutoLiquify(uint256 amountBNB, uint256 amountBOG);
}

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":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blacklistMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance_sender","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint8","name":"_interval","type":"uint8"}],"name":"cooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownTimerInterval","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ecosystemfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enable_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"multiTransfer_fixed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_ecosystemfeeReceiver","type":"address"},{"internalType":"address","name":"_burnFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_ecosystemfee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTimelockExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base5000","type":"uint256"}],"name":"setMaxTxPercent_base5000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base5000","type":"uint256"}],"name":"setMaxWalletPercent_base5000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Multiplier","type":"uint256"}],"name":"set_sell_multiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"shouldTakeFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"whiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526002805473c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03199182161782556003805461dead9083161790556004805490911690556702ea11e32ad50000600581905562000083916064916200006f916200044e602090811b620024b717901c565b620004b560201b620025101790919060201c565b600655620000a960646200006f60046005546200044e60201b620024b71790919060201c565b600755600a8054600160ff1991821681179092556000601081905560118190556012819055601381905560148190556015556064601681905560178190556055601c55601d55601f805460ff60a01b191690556207a1206021556022805461ffff1916613c00179055602480549091169091179055600580546127109102046025553480156200013857600080fd5b50600080546001600160a01b0319908116339081178355825260016020818152604093849020805460ff1916909217909155601e8054909216737a250d5630b4cf539739df2c5dacb4c659f2488d1791829055825163c45a015560e01b815292516001600160a01b03929092169263c45a01559260048083019392829003018186803b158015620001c857600080fd5b505afa158015620001dd573d6000803e3d6000fd5b505050506040513d6020811015620001f457600080fd5b5051600254604080516364e329cb60e11b81526001600160a01b0392831660048201523060248201529051919092169163c9c653969160448083019260209291908290030181600087803b1580156200024c57600080fd5b505af115801562000261573d6000803e3d6000fd5b505050506040513d60208110156200027857600080fd5b5051601f80546001600160a01b0319166001600160a01b03928316179055306000908152600960209081526040808320601e8054861685529252918290206000199055549051911690620002cc90620005a6565b6001600160a01b03909116815260405190819003602001906000f080158015620002fa573d6000803e3d6000fd5b50602080546001600160a01b039283166001600160a01b0319918216178255336000818152600c84526040808220805460ff199081166001908117909255600d87528284208054821683179055600e8752828420805482168317905560038054891685528385208054831684179055308086528486208054841685179055601f548a168652600f8952848620805484168517905585528385208054831684179055805489168552838520805490921690921790556018805486168517905560198054861673080fe3528ed88fc9752bc790aa5b272540796bc0179055601a8054861673be1656240c98f76d0579da82049787d9476d743417905554601b80549095169616959095179092556005548183526008845284832081905584519081529351909391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef928290030190a3620005b4565b6000826200045f57506000620004af565b828202828482816200046d57fe5b0414620004ac5760405162461bcd60e51b815260040180806020018281038252602181526020018062004a986021913960400191505060405180910390fd5b90505b92915050565b6000620004ac83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620004ff60201b60201c565b600081836200058f5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200055357818101518382015260200162000539565b50505050905090810190601f168015620005815780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816200059c57fe5b0495945050505050565b610ec08062003bd883390190565b61361480620005c46000396000f3fe6080604052600436106103bc5760003560e01c806383ad7994116101f2578063dd62ed3e1161010d578063f708a64f116100a0578063fe575a871161006f578063fe575a8714610ee1578063fe9fbb8014610f14578063fed0d2a114610f47578063ffb54a9914610f5c576103c3565b8063f708a64f14610e41578063f84ba65d14610e7c578063f887ea4014610eb7578063fce589d814610ecc576103c3565b8063ec72d65f116100dc578063ec72d65f14610d87578063f0b37c0414610db1578063f2fde38b14610de4578063f346bce114610e17576103c3565b8063dd62ed3e14610cd2578063df20fd4914610d0d578063e3763ded14610d3f578063e7c44c6914610d54576103c3565b8063a8aa1b3111610185578063bfe1092811610154578063bfe1092814610c2e578063c6b98c1b14610c43578063d16baeb914610c6d578063d51ed1c814610ca8576103c3565b8063a8aa1b3114610b98578063a9059cbb14610bad578063b6a5d7de14610be6578063bcc1f3e814610c19576103c3565b80638e2eee84116101c15780638e2eee8414610ac757806395d89b4114610b4457806398118cb414610b595780639d1944f514610b6e576103c3565b806383ad799414610a2457806386f6c3c114610a39578063893d20e814610a81578063896648c114610ab2576103c3565b8063313ce567116102e2578063617fe0ed1161027557806370a082311161024457806370a08231146109b2578063722b62ad146109e557806378109e54146109fa5780637d1db4a514610a0f576103c3565b8063617fe0ed14610938578063658d4b7f1461094d5780636b67c4df146109885780636ddd17131461099d576103c3565b806350db71fb116102b157806350db71fb14610874578063571ac8b0146108af5780635c85974f146108e25780635e562f3b1461090c576103c3565b8063313ce56714610773578063335f6a431461079e5780633c8e556d1461082957806344a33fd214610629576103c3565b80631ca0a28d1161035a5780632b112e49116103295780632b112e49146106c65780632d48e896146106db5780632d5945671461070b5780632f54bf6e14610740576103c3565b80631ca0a28d1461054e5780631da1db5e14610629578063201e79911461065357806323b872dd14610683576103c3565b80630d295980116103965780630d295980146104c65780631161ae39146104f4578063180b0d7e1461052457806318160ddd14610539576103c3565b80630445b667146103c857806306fdde03146103ef578063095ea7b314610479576103c3565b366103c357005b600080fd5b3480156103d457600080fd5b506103dd610f71565b60408051918252519081900360200190f35b3480156103fb57600080fd5b50610404610f77565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561043e578181015183820152602001610426565b50505050905090810190601f16801561046b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561048557600080fd5b506104b26004803603604081101561049c57600080fd5b506001600160a01b038135169060200135610f9b565b604080519115158252519081900360200190f35b3480156104d257600080fd5b506104f2600480360360208110156104e957600080fd5b50351515611002565b005b34801561050057600080fd5b506104b26004803603604081101561051757600080fd5b5080359060200135611063565b34801561053057600080fd5b506103dd611077565b34801561054557600080fd5b506103dd61107d565b34801561055a57600080fd5b506104f26004803603606081101561057157600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561059b57600080fd5b8201836020820111156105ad57600080fd5b803590602001918460208302840111600160201b831117156105ce57600080fd5b919390929091602081019035600160201b8111156105eb57600080fd5b8201836020820111156105fd57600080fd5b803590602001918460208302840111600160201b8311171561061e57600080fd5b509092509050611083565b34801561063557600080fd5b506104f26004803603602081101561064c57600080fd5b50356113ce565b34801561065f57600080fd5b506104f26004803603604081101561067657600080fd5b508035906020013561144e565b34801561068f57600080fd5b506104b2600480360360608110156106a657600080fd5b506001600160a01b038135811691602081013590911690604001356114a1565b3480156106d257600080fd5b506103dd611563565b3480156106e757600080fd5b506104f2600480360360408110156106fe57600080fd5b50803590602001356115ac565b34801561071757600080fd5b506104f26004803603604081101561072e57600080fd5b5080351515906020013560ff1661165c565b34801561074c57600080fd5b506104b26004803603602081101561076357600080fd5b50356001600160a01b03166116c5565b34801561077f57600080fd5b506107886116d9565b6040805160ff9092168252519081900360200190f35b3480156107aa57600080fd5b506104f2600480360360608110156107c157600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156107eb57600080fd5b8201836020820111156107fd57600080fd5b803590602001918460208302840111600160201b8311171561081e57600080fd5b9193509150356116de565b34801561083557600080fd5b506104f26004803603608081101561084c57600080fd5b506001600160a01b0381358116916020810135821691604082013581169160600135166119a8565b34801561088057600080fd5b506104f26004803603604081101561089757600080fd5b506001600160a01b0381351690602001351515611a40565b3480156108bb57600080fd5b506104b2600480360360208110156108d257600080fd5b50356001600160a01b0316611ab3565b3480156108ee57600080fd5b506104f26004803603602081101561090557600080fd5b5035611ac1565b34801561091857600080fd5b506104f26004803603602081101561092f57600080fd5b50351515611b0e565b34801561094457600080fd5b506104b2611b64565b34801561095957600080fd5b506104f26004803603604081101561097057600080fd5b506001600160a01b0381351690602001351515611b6d565b34801561099457600080fd5b506103dd611be0565b3480156109a957600080fd5b506104b2611be6565b3480156109be57600080fd5b506103dd600480360360208110156109d557600080fd5b50356001600160a01b0316611bef565b3480156109f157600080fd5b50610788611c0a565b348015610a0657600080fd5b506103dd611c18565b348015610a1b57600080fd5b506103dd611c1e565b348015610a3057600080fd5b506103dd611c24565b348015610a4557600080fd5b506104f2600480360360c0811015610a5c57600080fd5b5080359060208101359060408101359060608101359060808101359060a00135611c2a565b348015610a8d57600080fd5b50610a96611d04565b604080516001600160a01b039092168252519081900360200190f35b348015610abe57600080fd5b506104b2611d13565b348015610ad357600080fd5b506104f260048036036040811015610aea57600080fd5b810190602081018135600160201b811115610b0457600080fd5b820183602082011115610b1657600080fd5b803590602001918460208302840111600160201b83111715610b3757600080fd5b9193509150351515611d1c565b348015610b5057600080fd5b50610404611dba565b348015610b6557600080fd5b506103dd611dd9565b348015610b7a57600080fd5b506104f260048036036020811015610b9157600080fd5b5035611ddf565b348015610ba457600080fd5b50610a96611e3b565b348015610bb957600080fd5b506104b260048036036040811015610bd057600080fd5b506001600160a01b038135169060200135611e4a565b348015610bf257600080fd5b506104f260048036036020811015610c0957600080fd5b50356001600160a01b0316611e57565b348015610c2557600080fd5b506103dd611ec1565b348015610c3a57600080fd5b50610a96611ec7565b348015610c4f57600080fd5b506104f260048036036020811015610c6657600080fd5b5035611ed6565b348015610c7957600080fd5b506104f260048036036040811015610c9057600080fd5b506001600160a01b0381351690602001351515611f2f565b348015610cb457600080fd5b506103dd60048036036020811015610ccb57600080fd5b5035611fbf565b348015610cde57600080fd5b506103dd60048036036040811015610cf557600080fd5b506001600160a01b0381358116916020013516611fff565b348015610d1957600080fd5b506104f260048036036040811015610d3057600080fd5b5080351515906020013561202a565b348015610d4b57600080fd5b50610a96612089565b348015610d6057600080fd5b506104b260048036036020811015610d7757600080fd5b50356001600160a01b0316612098565b348015610d9357600080fd5b506104f260048036036020811015610daa57600080fd5b50356120b7565b348015610dbd57600080fd5b506104f260048036036020811015610dd457600080fd5b50356001600160a01b03166120ff565b348015610df057600080fd5b506104f260048036036020811015610e0757600080fd5b50356001600160a01b0316612163565b348015610e2357600080fd5b506104f260048036036020811015610e3a57600080fd5b5035612214565b348015610e4d57600080fd5b506104f260048036036040811015610e6457600080fd5b506001600160a01b038135169060200135151561226d565b348015610e8857600080fd5b506104f260048036036040811015610e9f57600080fd5b506001600160a01b03813516906020013515156123e6565b348015610ec357600080fd5b50610a96612459565b348015610ed857600080fd5b506103dd612468565b348015610eed57600080fd5b506104b260048036036020811015610f0457600080fd5b50356001600160a01b031661246e565b348015610f2057600080fd5b506104b260048036036020811015610f3757600080fd5b50356001600160a01b0316612483565b348015610f5357600080fd5b506103dd6124a1565b348015610f6857600080fd5b506104b26124a7565b60255481565b60408051808201909152600a8152695348494241205045504560b01b602082015290565b3360008181526009602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b61100b336116c5565b611045576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601f8054911515600160a01b0260ff60a01b19909216919091179055565b60008261106f83611fbf565b119392505050565b60165481565b60055490565b61108c336116c5565b6110c6576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03851633146110db57600080fd5b6101f5831061111b5760405162461bcd60e51b815260040180806020018281038252602d815260200180613585602d913960400191505060405180910390fd5b8281146111595760405162461bcd60e51b81526004018080602001828103825260288152602001806134b96028913960400191505060405180910390fd5b6000805b848110156111875783838281811061117157fe5b602002919091013592909201915060010161115d565b508061119287611bef565b10156111e5576040805162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000604482015290519081900360640190fd5b60005b84811015611332576112288787878481811061120057fe5b905060200201356001600160a01b031686868581811061121c57fe5b90506020020135612552565b50600f600087878481811061123957fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff1661132a576020546001600160a01b03166314b6ca9687878481811061128057fe5b905060200201356001600160a01b0316600860008a8a878181106112a057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020546040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561131757600080fd5b505af1925050508015611328575060015b505b6001016111e8565b506001600160a01b0386166000908152600f602052604090205460ff166113c657602080546001600160a01b03888116600081815260089094526040808520548151630a5b654b60e11b8152600481019390935260248301525191909216926314b6ca96926044808201939182900301818387803b1580156113b357600080fd5b505af19250505080156113c4575060015b505b505050505050565b6113d733612483565b611416576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6040514790339060648484020480156108fc02916000818181858888f19350505050158015611449573d6000803e3d6000fd5b505050565b61145733612483565b611496576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601c91909155601d55565b6001600160a01b03831660009081526009602090815260408083203384529091528120546000191461154e576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600982528381203382529091529190912054611529918490612621565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b6115598484846126b8565b90505b9392505050565b6004546000906115a79061157f906001600160a01b0316611bef565b6003546115a190611598906001600160a01b0316611bef565b60055490612d58565b90612d58565b905090565b6115b533612483565b6115f4576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b602054604080516316a4744b60e11b8152600481018590526024810184905290516001600160a01b0390921691632d48e8969160448082019260009290919082900301818387803b15801561164857600080fd5b505af11580156113c6573d6000803e3d6000fd5b611665336116c5565b61169f576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6022805460ff19169215159290921761ff00191661010060ff9290921691909102179055565b6000546001600160a01b0390811691161490565b600490565b6116e7336116c5565b611721576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b038416331461173657600080fd5b61032182106117765760405162461bcd60e51b815260040180806020018281038252602d8152602001806135b2602d913960400191505060405180910390fd5b8082028061178386611bef565b10156117d6576040805162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000604482015290519081900360640190fd5b60005b8381101561191157611807868686848181106117f157fe5b905060200201356001600160a01b031685612552565b50600f600086868481811061181857fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16611909576020546001600160a01b03166314b6ca9686868481811061185f57fe5b905060200201356001600160a01b03166008600089898781811061187f57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020546040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156118f657600080fd5b505af1925050508015611907575060015b505b6001016117d9565b506001600160a01b0385166000908152600f602052604090205460ff166119a157602080546001600160a01b03878116600081815260089094526040808520548151630a5b654b60e11b8152600481019390935260248301525191909216926314b6ca96926044808201939182900301818387803b15801561199257600080fd5b505af19250505080156113c657505b5050505050565b6119b133612483565b6119f0576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601880546001600160a01b039586166001600160a01b0319918216179091556019805494861694821694909417909355601a805492851692841692909217909155601b8054919093169116179055565b611a4933612483565b611a88576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000610ffc82600019610f9b565b611aca33612483565b611b09576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b600655565b611b17336116c5565b611b51576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600a805460ff1916911515919091179055565b60225460ff1681565b611b7633612483565b611bb5576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b60125481565b60245460ff1681565b6001600160a01b031660009081526008602052604090205490565b602254610100900460ff1681565b60075481565b60065481565b60115481565b611c3333612483565b611c72576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b60108690556011859055601284905560138390556014829055611ca382611c9d858188818c8c612d9a565b90612d9a565b601555601681905560048104601554106113c6576040805162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e2032352500000000604482015290519081900360640190fd5b6000546001600160a01b031690565b600a5460ff1681565b611d25336116c5565b611d5f576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60005b82811015611db45781600b6000868685818110611d7b57fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff1916911515919091179055600101611d62565b50505050565b604080518082019091526005815264534845504560d81b602082015290565b60105481565b611de833612483565b611e27576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b620b71b08110611e3657600080fd5b602155565b601f546001600160a01b031681565b600061155c3384846126b8565b611e60336116c5565b611e9a576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b60135481565b6020546001600160a01b031681565b611edf336116c5565b611f19576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b611388816005540281611f2857fe5b0460075550565b611f38336116c5565b611f72576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b039091166000908152600c60209081526040808320805494151560ff199586168117909155600d83528184208054861682179055600e9092529091208054909216179055565b6000610ffc611fcc611563565b601f54611ff990611ff290600290611fec906001600160a01b0316611bef565b906124b7565b85906124b7565b90612510565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b61203333612483565b612072576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6024805460ff191692151592909217909155602555565b601b546001600160a01b031681565b6001600160a01b03166000908152600c602052604090205460ff161590565b6120c0336116c5565b6120fa576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601755565b612108336116c5565b612142576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b61216c336116c5565b6121a6576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff1916909217909155825191825291517f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163929181900390910190a150565b61221d336116c5565b612257576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b61138881600554028161226657fe5b0460065550565b61227633612483565b6122b5576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03821630148015906122dc5750601f546001600160a01b03838116911614155b6122e557600080fd5b6001600160a01b0382166000908152600f60205260409020805460ff191682158015919091179091556123825760205460408051630a5b654b60e11b81526001600160a01b03858116600483015260006024830181905292519316926314b6ca969260448084019391929182900301818387803b15801561236557600080fd5b505af1158015612379573d6000803e3d6000fd5b505050506123e2565b602080546001600160a01b03848116600081815260089094526040808520548151630a5b654b60e11b8152600481019390935260248301525191909216926314b6ca96926044808201939182900301818387803b15801561164857600080fd5b5050565b6123ef33612483565b61242e576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b601e546001600160a01b031681565b60145481565b600b6020526000908152604090205460ff1681565b6001600160a01b031660009081526001602052604090205460ff1690565b60175481565b601f54600160a01b900460ff1681565b6000826124c657506000610ffc565b828202828482816124d357fe5b041461155c5760405162461bcd60e51b81526004018080602001828103825260218152602001806135066021913960400191505060405180910390fd5b600061155c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612df4565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526008909152918220546125a3918490612621565b6001600160a01b0380861660009081526008602052604080822093909355908516815220546125d29083612d9a565b6001600160a01b03808516600081815260086020908152604091829020949094558051868152905191939288169260008051602061356583398151915292918290030190a35060019392505050565b600081848411156126b05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561267557818101518382015260200161265d565b50505050905090810190601f1680156126a25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60265460009060ff16156126d8576126d1848484612552565b905061155c565b6001600160a01b03841660009081526001602052604090205460ff1615801561271a57506001600160a01b03831660009081526001602052604090205460ff16155b1561277457601f54600160a01b900460ff16612774576040805162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015290519081900360640190fd5b600a5460ff1615612800576001600160a01b0384166000908152600b602052604090205460ff161580156127c157506001600160a01b0383166000908152600b602052604090205460ff16155b612800576040805162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b604482015290519081900360640190fd5b6001600160a01b03841660009081526001602052604090205460ff1615801561283257506001600160a01b0383163014155b801561284c57506003546001600160a01b03848116911614155b80156128665750601f546001600160a01b03848116911614155b801561288057506019546001600160a01b03848116911614155b801561289a5750601a546001600160a01b03848116911614155b80156128b457506018546001600160a01b03848116911614155b80156128ce5750601b546001600160a01b03848116911614155b156129255760006128de84611bef565b905060075483820111156129235760405162461bcd60e51b815260040180806020018281038252603e815260200180613527603e913960400191505060405180910390fd5b505b601f546001600160a01b038581169116148015612944575060225460ff165b801561296957506001600160a01b0383166000908152600e602052604090205460ff16155b156129ed576001600160a01b03831660009081526023602052604090205442116129c45760405162461bcd60e51b81526004018080602001828103825260258152602001806134e16025913960400191505060405180910390fd5b6022546001600160a01b038416600090815260236020526040902061010090910460ff16420190555b6129f78483612e59565b6129ff612ec7565b15612a0c57612a0c612f16565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260089091529190912054612a5e918490612621565b6001600160a01b03808616600081815260086020526040812093909355601f54909116148015612aa757506001600160a01b0385166000908152600c602052604090205460ff16155b8015612acc57506001600160a01b0384166000908152600c602052604090205460ff16155b15612ae457612add8584600061336f565b9050612b53565b601f546001600160a01b038581169116148015612b1a57506001600160a01b0385166000908152600c602052604090205460ff16155b8015612b3f57506001600160a01b0384166000908152600c602052604090205460ff16155b15612b5057612add8584600161336f565b50815b6001600160a01b038416600090815260086020526040902054612b769082612d9a565b6001600160a01b038086166000908152600860209081526040808320949094559188168152600f909152205460ff16612c1c57602080546001600160a01b03878116600081815260089094526040808520548151630a5b654b60e11b8152600481019390935260248301525191909216926314b6ca96926044808201939182900301818387803b158015612c0957600080fd5b505af1925050508015612c1a575060015b505b6001600160a01b0384166000908152600f602052604090205460ff16612caf57602080546001600160a01b03868116600081815260089094526040808520548151630a5b654b60e11b8152600481019390935260248301525191909216926314b6ca96926044808201939182900301818387803b158015612c9c57600080fd5b505af1925050508015612cad575060015b505b602054602154604080516001624d3b8760e01b031981526004810192909252516001600160a01b039092169163ffb2c4799160248082019260009290919082900301818387803b158015612d0257600080fd5b505af1925050508015612d13575060015b50836001600160a01b0316856001600160a01b0316600080516020613565833981519152836040518082815260200191505060405180910390a3506001949350505050565b600061155c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612621565b60008282018381101561155c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008183612e435760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561267557818101518382015260200161265d565b506000838581612e4f57fe5b0495945050505050565b60065481111580612e8257506001600160a01b0382166000908152600d602052604090205460ff165b6123e2576040805162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015290519081900360640190fd5b601f546000906001600160a01b03163314801590612ee8575060265460ff16155b8015612ef6575060245460ff165b80156115a757505060255430600090815260086020526040902054101590565b6026805460ff19166001179055601c54601d54600091612f3591611063565b612f4157601054612f44565b60005b90506000612f686002611ff9601554611ff9866025546124b790919063ffffffff16565b90506000612f8182602554612d5890919063ffffffff16565b6040805160028082526060808301845293945090916020830190803683370190505090503081600081518110612fb357fe5b6001600160a01b039283166020918202929092010152600254825191169082906001908110612fde57fe5b6001600160a01b03928316602091820292909201810191909152601e5460405163791ac94760e01b8152600481018681526000602483018190523060648401819052426084850181905260a060448601908152895160a487015289514799979097169763791ac947978c9795968c9690939260c49091019187820191028083838b5b83811015613078578181015183820152602001613060565b505050509050019650505050505050600060405180830381600087803b1580156130a157600080fd5b505af11580156130b5573d6000803e3d6000fd5b5050505060006130ce8247612d5890919063ffffffff16565b905060006130e96130e0886002612510565b60155490612d58565b905060006130fe6002611ff98481878d6124b7565b9050600061311b83611ff9601154876124b790919063ffffffff16565b9050600061313884611ff9601254886124b790919063ffffffff16565b9050600061315585611ff9601354896124b790919063ffffffff16565b9050602060009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b1580156131a757600080fd5b505af1935050505080156131b9575060015b506019546040516000916001600160a01b03169061753090859084818181858888f193505050503d806000811461320c576040519150601f19603f3d011682016040523d82523d6000602084013e613211565b606091505b5050601a546040519192506001600160a01b0316906175309084906000818181858888f193505050503d8060008114613266576040519150601f19603f3d011682016040523d82523d6000602084013e61326b565b606091505b5060009250508b15905061335757601e546018546040805163f305d71960e01b8152306004820152602481018f905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991889160c48082019260609290919082900301818588803b1580156132ee57600080fd5b505af1158015613302573d6000803e3d6000fd5b50505050506040513d606081101561331957600080fd5b505060408051868152602081018d905281517f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506929181900390910190a15b50506026805460ff1916905550505050505050505050565b6000808261337e576064613382565b6017545b905060006133a8601654606402611ff984611fec6015548a6124b790919063ffffffff16565b905060006133c7601554611ff9601454856124b790919063ffffffff16565b905060006133d58383612d58565b306000908152600860205260409020549091506133f29082612d9a565b3060009081526008602052604080822092909255601b546001600160a01b0316815220546134209083612d9a565b601b546001600160a01b0390811660009081526008602090815260409182902093909355805184815290513093928c1692600080516020613565833981519152928290030190a381156134a257601b546040805184815290516001600160a01b03928316928b1691600080516020613565833981519152919081900360200190a35b6134ac8784612d58565b9897505050505050505056fe4d69736d61746368206265747765656e204164647265737320616e6420746f6b656e20636f756e74506c65617365207761697420666f7220316d696e206265747765656e2074776f2062757973536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f74616c20486f6c64696e672069732063757272656e746c79206c696d697465642c20796f752063616e206e6f74206275792074686174206d7563682eddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef474153204572726f723a206d61782061697264726f70206c696d69742069732035303020616464726573736573474153204572726f723a206d61782061697264726f70206c696d69742069732038303020616464726573736573a2646970667358221220576fcc54d9b226a0797e257201d3b29cc7f68d1a248236bb9f016e879deec73664736f6c634300070400336080604052600180546001600160a01b031990811673dac17f958d2ee523a2206206994597c13d831ec7179091556002805490911673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790556ec097ce7bc90715b34b9f1000000000600c55610a8c600d55670de0b6b3a7640000600e5534801561007d57600080fd5b50604051610ec0380380610ec0833981810160405260208110156100a057600080fd5b50516001600160a01b0381166100ca57737a250d5630b4cf539739df2c5dacb4c659f2488d6100cc565b805b600380546001600160a01b03929092166001600160a01b0319928316179055600080549091163317905550610dba806101066000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed14610254578063f0fc6bca14610269578063ffb2c4791461027e578063ffd49c84146102a8576100dd565b8063ce7c2ac2146101e6578063d0e30db014610237578063e2d2e2191461023f576100dd565b80632d48e896116100bb5780632d48e896146101775780633a98ef39146101a75780634fab0ae8146101bc578063997664d7146101d1576100dd565b806311ce023d146100e257806314b6ca961461010957806328fd319814610144575b600080fd5b3480156100ee57600080fd5b506100f76102bd565b60408051918252519081900360200190f35b34801561011557600080fd5b506101426004803603604081101561012c57600080fd5b506001600160a01b0381351690602001356102c3565b005b34801561015057600080fd5b506100f76004803603602081101561016757600080fd5b50356001600160a01b03166103e8565b34801561018357600080fd5b506101426004803603604081101561019a57600080fd5b5080359060200135610474565b3480156101b357600080fd5b506100f7610496565b3480156101c857600080fd5b506100f761049c565b3480156101dd57600080fd5b506100f76104a2565b3480156101f257600080fd5b506102196004803603602081101561020957600080fd5b50356001600160a01b03166104a8565b60408051938452602084019290925282820152519081900360600190f35b6101426104c9565b34801561024b57600080fd5b506100f7610759565b34801561026057600080fd5b506100f761075f565b34801561027557600080fd5b50610142610765565b34801561028a57600080fd5b50610142600480360360208110156102a157600080fd5b5035610770565b3480156102b457600080fd5b506100f7610852565b600c5481565b6000546001600160a01b031633146102da57600080fd5b6001600160a01b038216600090815260076020526040902054156103015761030182610858565b60008111801561032757506001600160a01b038216600090815260076020526040902054155b1561033a5761033582610980565b61036d565b8015801561035f57506001600160a01b03821660009081526007602052604090205415155b1561036d5761036d826109e1565b6001600160a01b03821660009081526007602052604090205460085461039e91839161039891610ace565b90610b19565b6008556001600160a01b03821660009081526007602052604090208190556103c581610b73565b6001600160a01b0390921660009081526007602052604090206001019190915550565b6001600160a01b03811660009081526007602052604081205461040d5750600061046f565b6001600160a01b03821660009081526007602052604081205461042f90610b73565b6001600160a01b0384166000908152600760205260409020600101549091508082116104605760009250505061046f565b61046a8282610ace565b925050505b919050565b6000546001600160a01b0316331461048b57600080fd5b600d91909155600e55565b60085481565b600e5481565b60095481565b60076020526000908152604090208054600182015460029092015490919083565b6000546001600160a01b031633146104e057600080fd5b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561052b57600080fd5b505afa15801561053f573d6000803e3d6000fd5b505050506040513d602081101561055557600080fd5b5051604080516002808252606080830184529394509091602083019080368337505060025482519293506001600160a01b03169183915060009061059557fe5b6001600160a01b03928316602091820292909201015260018054835192169183919081106105bf57fe5b6001600160a01b0392831660209182029290920181019190915260035460405163b6f9de9560e01b815260006004820181815230604484018190524260648501819052608060248601908152895160848701528951969098169763b6f9de9597349795968b969495939460a49091019187810191028083838b5b83811015610651578181015183820152602001610639565b50505050905001955050505050506000604051808303818588803b15801561067857600080fd5b505af115801561068c573d6000803e3d6000fd5b5050600154604080516370a0823160e01b815230600482015290516000955061071794508793506001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156106e557600080fd5b505afa1580156106f9573d6000803e3d6000fd5b505050506040513d602081101561070f57600080fd5b505190610ace565b6009549091506107279082610b19565b600955600854600c5461075191610748916107429085610b90565b90610be9565b600b5490610b19565b600b55505050565b600b5481565b600a5481565b61076e33610858565b565b6000546001600160a01b0316331461078757600080fd5b60045480610795575061084f565b6000805a905060005b84831080156107ac57508381105b1561084a5783600f54106107c0576000600f555b6107ec6004600f54815481106107d257fe5b6000918252602090912001546001600160a01b0316610c2b565b1561081d5761081d6004600f548154811061080357fe5b6000918252602090912001546001600160a01b0316610858565b61083261082b5a8490610ace565b8490610b19565b92505a600f805460019081019091559092500161079e565b505050505b50565b600d5481565b6001600160a01b03811660009081526007602052604090205461087a5761084f565b6000610885826103e8565b9050801561097c57600a5461089a9082610b19565b600a556001546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b1580156108f357600080fd5b505af1158015610907573d6000803e3d6000fd5b505050506040513d602081101561091d57600080fd5b50506001600160a01b038216600090815260066020908152604080832042905560079091529020600201546109529082610b19565b6001600160a01b03831660009081526007602052604090206002810191909155546103c590610b73565b5050565b600480546001600160a01b039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90910180546001600160a01b0319169091179055565b6004805460001981019081106109f357fe5b60009182526020808320909101546001600160a01b0384811684526005909252604090922054600480549290931692918110610a2b57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600591829052604081205460048054919392916000198101908110610a7957fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610aa957fe5b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610b1083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610c67565b90505b92915050565b600082820183811015610b10576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000610b13600c54610742600b5485610b9090919063ffffffff16565b600082610b9f57506000610b13565b82820282848281610bac57fe5b0414610b105760405162461bcd60e51b8152600401808060200182810382526021815260200180610d646021913960400191505060405180910390fd5b6000610b1083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610cfe565b600d546001600160a01b0382166000908152600660205260408120549091429101108015610b135750600e54610c60836103e8565b1192915050565b60008184841115610cf65760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610cbb578181015183820152602001610ca3565b50505050905090810190601f168015610ce85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183610d4d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610cbb578181015183820152602001610ca3565b506000838581610d5957fe5b049594505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220680814cbf58b84a8153ae56c7c283e9f936326b9cbed83921110d117c6113a5c64736f6c63430007040033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77

Deployed Bytecode

0x6080604052600436106103bc5760003560e01c806383ad7994116101f2578063dd62ed3e1161010d578063f708a64f116100a0578063fe575a871161006f578063fe575a8714610ee1578063fe9fbb8014610f14578063fed0d2a114610f47578063ffb54a9914610f5c576103c3565b8063f708a64f14610e41578063f84ba65d14610e7c578063f887ea4014610eb7578063fce589d814610ecc576103c3565b8063ec72d65f116100dc578063ec72d65f14610d87578063f0b37c0414610db1578063f2fde38b14610de4578063f346bce114610e17576103c3565b8063dd62ed3e14610cd2578063df20fd4914610d0d578063e3763ded14610d3f578063e7c44c6914610d54576103c3565b8063a8aa1b3111610185578063bfe1092811610154578063bfe1092814610c2e578063c6b98c1b14610c43578063d16baeb914610c6d578063d51ed1c814610ca8576103c3565b8063a8aa1b3114610b98578063a9059cbb14610bad578063b6a5d7de14610be6578063bcc1f3e814610c19576103c3565b80638e2eee84116101c15780638e2eee8414610ac757806395d89b4114610b4457806398118cb414610b595780639d1944f514610b6e576103c3565b806383ad799414610a2457806386f6c3c114610a39578063893d20e814610a81578063896648c114610ab2576103c3565b8063313ce567116102e2578063617fe0ed1161027557806370a082311161024457806370a08231146109b2578063722b62ad146109e557806378109e54146109fa5780637d1db4a514610a0f576103c3565b8063617fe0ed14610938578063658d4b7f1461094d5780636b67c4df146109885780636ddd17131461099d576103c3565b806350db71fb116102b157806350db71fb14610874578063571ac8b0146108af5780635c85974f146108e25780635e562f3b1461090c576103c3565b8063313ce56714610773578063335f6a431461079e5780633c8e556d1461082957806344a33fd214610629576103c3565b80631ca0a28d1161035a5780632b112e49116103295780632b112e49146106c65780632d48e896146106db5780632d5945671461070b5780632f54bf6e14610740576103c3565b80631ca0a28d1461054e5780631da1db5e14610629578063201e79911461065357806323b872dd14610683576103c3565b80630d295980116103965780630d295980146104c65780631161ae39146104f4578063180b0d7e1461052457806318160ddd14610539576103c3565b80630445b667146103c857806306fdde03146103ef578063095ea7b314610479576103c3565b366103c357005b600080fd5b3480156103d457600080fd5b506103dd610f71565b60408051918252519081900360200190f35b3480156103fb57600080fd5b50610404610f77565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561043e578181015183820152602001610426565b50505050905090810190601f16801561046b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561048557600080fd5b506104b26004803603604081101561049c57600080fd5b506001600160a01b038135169060200135610f9b565b604080519115158252519081900360200190f35b3480156104d257600080fd5b506104f2600480360360208110156104e957600080fd5b50351515611002565b005b34801561050057600080fd5b506104b26004803603604081101561051757600080fd5b5080359060200135611063565b34801561053057600080fd5b506103dd611077565b34801561054557600080fd5b506103dd61107d565b34801561055a57600080fd5b506104f26004803603606081101561057157600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561059b57600080fd5b8201836020820111156105ad57600080fd5b803590602001918460208302840111600160201b831117156105ce57600080fd5b919390929091602081019035600160201b8111156105eb57600080fd5b8201836020820111156105fd57600080fd5b803590602001918460208302840111600160201b8311171561061e57600080fd5b509092509050611083565b34801561063557600080fd5b506104f26004803603602081101561064c57600080fd5b50356113ce565b34801561065f57600080fd5b506104f26004803603604081101561067657600080fd5b508035906020013561144e565b34801561068f57600080fd5b506104b2600480360360608110156106a657600080fd5b506001600160a01b038135811691602081013590911690604001356114a1565b3480156106d257600080fd5b506103dd611563565b3480156106e757600080fd5b506104f2600480360360408110156106fe57600080fd5b50803590602001356115ac565b34801561071757600080fd5b506104f26004803603604081101561072e57600080fd5b5080351515906020013560ff1661165c565b34801561074c57600080fd5b506104b26004803603602081101561076357600080fd5b50356001600160a01b03166116c5565b34801561077f57600080fd5b506107886116d9565b6040805160ff9092168252519081900360200190f35b3480156107aa57600080fd5b506104f2600480360360608110156107c157600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156107eb57600080fd5b8201836020820111156107fd57600080fd5b803590602001918460208302840111600160201b8311171561081e57600080fd5b9193509150356116de565b34801561083557600080fd5b506104f26004803603608081101561084c57600080fd5b506001600160a01b0381358116916020810135821691604082013581169160600135166119a8565b34801561088057600080fd5b506104f26004803603604081101561089757600080fd5b506001600160a01b0381351690602001351515611a40565b3480156108bb57600080fd5b506104b2600480360360208110156108d257600080fd5b50356001600160a01b0316611ab3565b3480156108ee57600080fd5b506104f26004803603602081101561090557600080fd5b5035611ac1565b34801561091857600080fd5b506104f26004803603602081101561092f57600080fd5b50351515611b0e565b34801561094457600080fd5b506104b2611b64565b34801561095957600080fd5b506104f26004803603604081101561097057600080fd5b506001600160a01b0381351690602001351515611b6d565b34801561099457600080fd5b506103dd611be0565b3480156109a957600080fd5b506104b2611be6565b3480156109be57600080fd5b506103dd600480360360208110156109d557600080fd5b50356001600160a01b0316611bef565b3480156109f157600080fd5b50610788611c0a565b348015610a0657600080fd5b506103dd611c18565b348015610a1b57600080fd5b506103dd611c1e565b348015610a3057600080fd5b506103dd611c24565b348015610a4557600080fd5b506104f2600480360360c0811015610a5c57600080fd5b5080359060208101359060408101359060608101359060808101359060a00135611c2a565b348015610a8d57600080fd5b50610a96611d04565b604080516001600160a01b039092168252519081900360200190f35b348015610abe57600080fd5b506104b2611d13565b348015610ad357600080fd5b506104f260048036036040811015610aea57600080fd5b810190602081018135600160201b811115610b0457600080fd5b820183602082011115610b1657600080fd5b803590602001918460208302840111600160201b83111715610b3757600080fd5b9193509150351515611d1c565b348015610b5057600080fd5b50610404611dba565b348015610b6557600080fd5b506103dd611dd9565b348015610b7a57600080fd5b506104f260048036036020811015610b9157600080fd5b5035611ddf565b348015610ba457600080fd5b50610a96611e3b565b348015610bb957600080fd5b506104b260048036036040811015610bd057600080fd5b506001600160a01b038135169060200135611e4a565b348015610bf257600080fd5b506104f260048036036020811015610c0957600080fd5b50356001600160a01b0316611e57565b348015610c2557600080fd5b506103dd611ec1565b348015610c3a57600080fd5b50610a96611ec7565b348015610c4f57600080fd5b506104f260048036036020811015610c6657600080fd5b5035611ed6565b348015610c7957600080fd5b506104f260048036036040811015610c9057600080fd5b506001600160a01b0381351690602001351515611f2f565b348015610cb457600080fd5b506103dd60048036036020811015610ccb57600080fd5b5035611fbf565b348015610cde57600080fd5b506103dd60048036036040811015610cf557600080fd5b506001600160a01b0381358116916020013516611fff565b348015610d1957600080fd5b506104f260048036036040811015610d3057600080fd5b5080351515906020013561202a565b348015610d4b57600080fd5b50610a96612089565b348015610d6057600080fd5b506104b260048036036020811015610d7757600080fd5b50356001600160a01b0316612098565b348015610d9357600080fd5b506104f260048036036020811015610daa57600080fd5b50356120b7565b348015610dbd57600080fd5b506104f260048036036020811015610dd457600080fd5b50356001600160a01b03166120ff565b348015610df057600080fd5b506104f260048036036020811015610e0757600080fd5b50356001600160a01b0316612163565b348015610e2357600080fd5b506104f260048036036020811015610e3a57600080fd5b5035612214565b348015610e4d57600080fd5b506104f260048036036040811015610e6457600080fd5b506001600160a01b038135169060200135151561226d565b348015610e8857600080fd5b506104f260048036036040811015610e9f57600080fd5b506001600160a01b03813516906020013515156123e6565b348015610ec357600080fd5b50610a96612459565b348015610ed857600080fd5b506103dd612468565b348015610eed57600080fd5b506104b260048036036020811015610f0457600080fd5b50356001600160a01b031661246e565b348015610f2057600080fd5b506104b260048036036020811015610f3757600080fd5b50356001600160a01b0316612483565b348015610f5357600080fd5b506103dd6124a1565b348015610f6857600080fd5b506104b26124a7565b60255481565b60408051808201909152600a8152695348494241205045504560b01b602082015290565b3360008181526009602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b61100b336116c5565b611045576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601f8054911515600160a01b0260ff60a01b19909216919091179055565b60008261106f83611fbf565b119392505050565b60165481565b60055490565b61108c336116c5565b6110c6576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03851633146110db57600080fd5b6101f5831061111b5760405162461bcd60e51b815260040180806020018281038252602d815260200180613585602d913960400191505060405180910390fd5b8281146111595760405162461bcd60e51b81526004018080602001828103825260288152602001806134b96028913960400191505060405180910390fd5b6000805b848110156111875783838281811061117157fe5b602002919091013592909201915060010161115d565b508061119287611bef565b10156111e5576040805162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000604482015290519081900360640190fd5b60005b84811015611332576112288787878481811061120057fe5b905060200201356001600160a01b031686868581811061121c57fe5b90506020020135612552565b50600f600087878481811061123957fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff1661132a576020546001600160a01b03166314b6ca9687878481811061128057fe5b905060200201356001600160a01b0316600860008a8a878181106112a057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020546040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561131757600080fd5b505af1925050508015611328575060015b505b6001016111e8565b506001600160a01b0386166000908152600f602052604090205460ff166113c657602080546001600160a01b03888116600081815260089094526040808520548151630a5b654b60e11b8152600481019390935260248301525191909216926314b6ca96926044808201939182900301818387803b1580156113b357600080fd5b505af19250505080156113c4575060015b505b505050505050565b6113d733612483565b611416576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6040514790339060648484020480156108fc02916000818181858888f19350505050158015611449573d6000803e3d6000fd5b505050565b61145733612483565b611496576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601c91909155601d55565b6001600160a01b03831660009081526009602090815260408083203384529091528120546000191461154e576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600982528381203382529091529190912054611529918490612621565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b6115598484846126b8565b90505b9392505050565b6004546000906115a79061157f906001600160a01b0316611bef565b6003546115a190611598906001600160a01b0316611bef565b60055490612d58565b90612d58565b905090565b6115b533612483565b6115f4576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b602054604080516316a4744b60e11b8152600481018590526024810184905290516001600160a01b0390921691632d48e8969160448082019260009290919082900301818387803b15801561164857600080fd5b505af11580156113c6573d6000803e3d6000fd5b611665336116c5565b61169f576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6022805460ff19169215159290921761ff00191661010060ff9290921691909102179055565b6000546001600160a01b0390811691161490565b600490565b6116e7336116c5565b611721576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b038416331461173657600080fd5b61032182106117765760405162461bcd60e51b815260040180806020018281038252602d8152602001806135b2602d913960400191505060405180910390fd5b8082028061178386611bef565b10156117d6576040805162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000604482015290519081900360640190fd5b60005b8381101561191157611807868686848181106117f157fe5b905060200201356001600160a01b031685612552565b50600f600086868481811061181857fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16611909576020546001600160a01b03166314b6ca9686868481811061185f57fe5b905060200201356001600160a01b03166008600089898781811061187f57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020546040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156118f657600080fd5b505af1925050508015611907575060015b505b6001016117d9565b506001600160a01b0385166000908152600f602052604090205460ff166119a157602080546001600160a01b03878116600081815260089094526040808520548151630a5b654b60e11b8152600481019390935260248301525191909216926314b6ca96926044808201939182900301818387803b15801561199257600080fd5b505af19250505080156113c657505b5050505050565b6119b133612483565b6119f0576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601880546001600160a01b039586166001600160a01b0319918216179091556019805494861694821694909417909355601a805492851692841692909217909155601b8054919093169116179055565b611a4933612483565b611a88576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000610ffc82600019610f9b565b611aca33612483565b611b09576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b600655565b611b17336116c5565b611b51576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600a805460ff1916911515919091179055565b60225460ff1681565b611b7633612483565b611bb5576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b60125481565b60245460ff1681565b6001600160a01b031660009081526008602052604090205490565b602254610100900460ff1681565b60075481565b60065481565b60115481565b611c3333612483565b611c72576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b60108690556011859055601284905560138390556014829055611ca382611c9d858188818c8c612d9a565b90612d9a565b601555601681905560048104601554106113c6576040805162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e2032352500000000604482015290519081900360640190fd5b6000546001600160a01b031690565b600a5460ff1681565b611d25336116c5565b611d5f576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60005b82811015611db45781600b6000868685818110611d7b57fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff1916911515919091179055600101611d62565b50505050565b604080518082019091526005815264534845504560d81b602082015290565b60105481565b611de833612483565b611e27576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b620b71b08110611e3657600080fd5b602155565b601f546001600160a01b031681565b600061155c3384846126b8565b611e60336116c5565b611e9a576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b60135481565b6020546001600160a01b031681565b611edf336116c5565b611f19576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b611388816005540281611f2857fe5b0460075550565b611f38336116c5565b611f72576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b039091166000908152600c60209081526040808320805494151560ff199586168117909155600d83528184208054861682179055600e9092529091208054909216179055565b6000610ffc611fcc611563565b601f54611ff990611ff290600290611fec906001600160a01b0316611bef565b906124b7565b85906124b7565b90612510565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b61203333612483565b612072576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6024805460ff191692151592909217909155602555565b601b546001600160a01b031681565b6001600160a01b03166000908152600c602052604090205460ff161590565b6120c0336116c5565b6120fa576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601755565b612108336116c5565b612142576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b61216c336116c5565b6121a6576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff1916909217909155825191825291517f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163929181900390910190a150565b61221d336116c5565b612257576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b61138881600554028161226657fe5b0460065550565b61227633612483565b6122b5576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03821630148015906122dc5750601f546001600160a01b03838116911614155b6122e557600080fd5b6001600160a01b0382166000908152600f60205260409020805460ff191682158015919091179091556123825760205460408051630a5b654b60e11b81526001600160a01b03858116600483015260006024830181905292519316926314b6ca969260448084019391929182900301818387803b15801561236557600080fd5b505af1158015612379573d6000803e3d6000fd5b505050506123e2565b602080546001600160a01b03848116600081815260089094526040808520548151630a5b654b60e11b8152600481019390935260248301525191909216926314b6ca96926044808201939182900301818387803b15801561164857600080fd5b5050565b6123ef33612483565b61242e576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b601e546001600160a01b031681565b60145481565b600b6020526000908152604090205460ff1681565b6001600160a01b031660009081526001602052604090205460ff1690565b60175481565b601f54600160a01b900460ff1681565b6000826124c657506000610ffc565b828202828482816124d357fe5b041461155c5760405162461bcd60e51b81526004018080602001828103825260218152602001806135066021913960400191505060405180910390fd5b600061155c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612df4565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526008909152918220546125a3918490612621565b6001600160a01b0380861660009081526008602052604080822093909355908516815220546125d29083612d9a565b6001600160a01b03808516600081815260086020908152604091829020949094558051868152905191939288169260008051602061356583398151915292918290030190a35060019392505050565b600081848411156126b05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561267557818101518382015260200161265d565b50505050905090810190601f1680156126a25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60265460009060ff16156126d8576126d1848484612552565b905061155c565b6001600160a01b03841660009081526001602052604090205460ff1615801561271a57506001600160a01b03831660009081526001602052604090205460ff16155b1561277457601f54600160a01b900460ff16612774576040805162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015290519081900360640190fd5b600a5460ff1615612800576001600160a01b0384166000908152600b602052604090205460ff161580156127c157506001600160a01b0383166000908152600b602052604090205460ff16155b612800576040805162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b604482015290519081900360640190fd5b6001600160a01b03841660009081526001602052604090205460ff1615801561283257506001600160a01b0383163014155b801561284c57506003546001600160a01b03848116911614155b80156128665750601f546001600160a01b03848116911614155b801561288057506019546001600160a01b03848116911614155b801561289a5750601a546001600160a01b03848116911614155b80156128b457506018546001600160a01b03848116911614155b80156128ce5750601b546001600160a01b03848116911614155b156129255760006128de84611bef565b905060075483820111156129235760405162461bcd60e51b815260040180806020018281038252603e815260200180613527603e913960400191505060405180910390fd5b505b601f546001600160a01b038581169116148015612944575060225460ff165b801561296957506001600160a01b0383166000908152600e602052604090205460ff16155b156129ed576001600160a01b03831660009081526023602052604090205442116129c45760405162461bcd60e51b81526004018080602001828103825260258152602001806134e16025913960400191505060405180910390fd5b6022546001600160a01b038416600090815260236020526040902061010090910460ff16420190555b6129f78483612e59565b6129ff612ec7565b15612a0c57612a0c612f16565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260089091529190912054612a5e918490612621565b6001600160a01b03808616600081815260086020526040812093909355601f54909116148015612aa757506001600160a01b0385166000908152600c602052604090205460ff16155b8015612acc57506001600160a01b0384166000908152600c602052604090205460ff16155b15612ae457612add8584600061336f565b9050612b53565b601f546001600160a01b038581169116148015612b1a57506001600160a01b0385166000908152600c602052604090205460ff16155b8015612b3f57506001600160a01b0384166000908152600c602052604090205460ff16155b15612b5057612add8584600161336f565b50815b6001600160a01b038416600090815260086020526040902054612b769082612d9a565b6001600160a01b038086166000908152600860209081526040808320949094559188168152600f909152205460ff16612c1c57602080546001600160a01b03878116600081815260089094526040808520548151630a5b654b60e11b8152600481019390935260248301525191909216926314b6ca96926044808201939182900301818387803b158015612c0957600080fd5b505af1925050508015612c1a575060015b505b6001600160a01b0384166000908152600f602052604090205460ff16612caf57602080546001600160a01b03868116600081815260089094526040808520548151630a5b654b60e11b8152600481019390935260248301525191909216926314b6ca96926044808201939182900301818387803b158015612c9c57600080fd5b505af1925050508015612cad575060015b505b602054602154604080516001624d3b8760e01b031981526004810192909252516001600160a01b039092169163ffb2c4799160248082019260009290919082900301818387803b158015612d0257600080fd5b505af1925050508015612d13575060015b50836001600160a01b0316856001600160a01b0316600080516020613565833981519152836040518082815260200191505060405180910390a3506001949350505050565b600061155c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612621565b60008282018381101561155c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008183612e435760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561267557818101518382015260200161265d565b506000838581612e4f57fe5b0495945050505050565b60065481111580612e8257506001600160a01b0382166000908152600d602052604090205460ff165b6123e2576040805162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015290519081900360640190fd5b601f546000906001600160a01b03163314801590612ee8575060265460ff16155b8015612ef6575060245460ff165b80156115a757505060255430600090815260086020526040902054101590565b6026805460ff19166001179055601c54601d54600091612f3591611063565b612f4157601054612f44565b60005b90506000612f686002611ff9601554611ff9866025546124b790919063ffffffff16565b90506000612f8182602554612d5890919063ffffffff16565b6040805160028082526060808301845293945090916020830190803683370190505090503081600081518110612fb357fe5b6001600160a01b039283166020918202929092010152600254825191169082906001908110612fde57fe5b6001600160a01b03928316602091820292909201810191909152601e5460405163791ac94760e01b8152600481018681526000602483018190523060648401819052426084850181905260a060448601908152895160a487015289514799979097169763791ac947978c9795968c9690939260c49091019187820191028083838b5b83811015613078578181015183820152602001613060565b505050509050019650505050505050600060405180830381600087803b1580156130a157600080fd5b505af11580156130b5573d6000803e3d6000fd5b5050505060006130ce8247612d5890919063ffffffff16565b905060006130e96130e0886002612510565b60155490612d58565b905060006130fe6002611ff98481878d6124b7565b9050600061311b83611ff9601154876124b790919063ffffffff16565b9050600061313884611ff9601254886124b790919063ffffffff16565b9050600061315585611ff9601354896124b790919063ffffffff16565b9050602060009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b1580156131a757600080fd5b505af1935050505080156131b9575060015b506019546040516000916001600160a01b03169061753090859084818181858888f193505050503d806000811461320c576040519150601f19603f3d011682016040523d82523d6000602084013e613211565b606091505b5050601a546040519192506001600160a01b0316906175309084906000818181858888f193505050503d8060008114613266576040519150601f19603f3d011682016040523d82523d6000602084013e61326b565b606091505b5060009250508b15905061335757601e546018546040805163f305d71960e01b8152306004820152602481018f905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991889160c48082019260609290919082900301818588803b1580156132ee57600080fd5b505af1158015613302573d6000803e3d6000fd5b50505050506040513d606081101561331957600080fd5b505060408051868152602081018d905281517f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506929181900390910190a15b50506026805460ff1916905550505050505050505050565b6000808261337e576064613382565b6017545b905060006133a8601654606402611ff984611fec6015548a6124b790919063ffffffff16565b905060006133c7601554611ff9601454856124b790919063ffffffff16565b905060006133d58383612d58565b306000908152600860205260409020549091506133f29082612d9a565b3060009081526008602052604080822092909255601b546001600160a01b0316815220546134209083612d9a565b601b546001600160a01b0390811660009081526008602090815260409182902093909355805184815290513093928c1692600080516020613565833981519152928290030190a381156134a257601b546040805184815290516001600160a01b03928316928b1691600080516020613565833981519152919081900360200190a35b6134ac8784612d58565b9897505050505050505056fe4d69736d61746368206265747765656e204164647265737320616e6420746f6b656e20636f756e74506c65617365207761697420666f7220316d696e206265747765656e2074776f2062757973536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f74616c20486f6c64696e672069732063757272656e746c79206c696d697465642c20796f752063616e206e6f74206275792074686174206d7563682eddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef474153204572726f723a206d61782061697264726f70206c696d69742069732035303020616464726573736573474153204572726f723a206d61782061697264726f70206c696d69742069732038303020616464726573736573a2646970667358221220576fcc54d9b226a0797e257201d3b29cc7f68d1a248236bb9f016e879deec73664736f6c63430007040033

Deployed Bytecode Sourcemap

10745:17763:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12772:55;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;14271:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14694:216;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14694:216:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;20849:94;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20849:94:0;;;;:::i;:::-;;26443:150;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26443:150:0;;;;;;;:::i;12053:36::-;;;;;;;;;;;;;:::i;14001:88::-;;;;;;;;;;;;;:::i;26634:990::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26634:990:0;;;;;;;;;;;;;;;-1:-1:-1;;;26634:990:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;26634:990:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;26634:990:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;26634:990:0;;;;;;;;;;-1:-1:-1;26634:990:0;;-1:-1:-1;26634:990:0;-1:-1:-1;26634:990:0;:::i;20263:208::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20263:208:0;;:::i;25587:183::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25587:183:0;;;;;;;:::i;15209:365::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15209:365:0;;;;;;;;;;;;;;;;;:::i;26116:142::-;;;;;;;;;;;;;:::i;25779:183::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25779:183:0;;;;;;;:::i;21210:164::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21210:164:0;;;;;;;;;;;:::i;2764:103::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2764:103:0;-1:-1:-1;;;;;2764:103:0;;:::i;14095:80::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27633:807;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27633:807:0;;;;;;;;;;;;;;;-1:-1:-1;;;27633:807:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;27633:807:0;;;;;;;;;;;;-1:-1:-1;27633:807:0;-1:-1:-1;27633:807:0;;:::i;25027:386::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;25027:386:0;;;;;;;;;;;;;;;;;;;;;;;;:::i;24282:130::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24282:130:0;;;;;;;;;;:::i;14919:116::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14919:116:0;-1:-1:-1;;;;;14919:116:0;;:::i;15947:96::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15947:96:0;;:::i;23686:99::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23686:99:0;;;;:::i;12587:38::-;;;;;;;;;;;;;:::i;24016:120::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24016:120:0;;;;;;;;;;:::i;11821:34::-;;;;;;;;;;;;;:::i;12735:30::-;;;;;;;;;;;;;:::i;14441:105::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14441:105:0;-1:-1:-1;;;;;14441:105:0;;:::i;12632:39::-;;;;;;;;;;;;;:::i;11264:61::-;;;;;;;;;;;;;:::i;11199:58::-;;;;;;;;;;;;;:::i;11780:34::-;;;;;;;;;;;;;:::i;24421:597::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24421:597:0;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14357:78::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;14357:78:0;;;;;;;;;;;;;;11451:32;;;;;;;;;;;;;:::i;23794:210::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;23794:210:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;23794:210:0;;;;;;;;;;;;-1:-1:-1;23794:210:0;-1:-1:-1;23794:210:0;;;;:::i;14181:84::-;;;;;;;;;;;;;:::i;11739:34::-;;;;;;;;;;;;;:::i;25971:136::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25971:136:0;;:::i;12431:19::-;;;;;;;;;;;;;:::i;15044:156::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15044:156:0;;;;;;;;:::i;2555:94::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2555:94:0;-1:-1:-1;;;;;2555:94:0;;:::i;11862:34::-;;;;;;;;;;;;;:::i;12501:38::-;;;;;;;;;;;;;:::i;15583:177::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15583:177:0;;:::i;20951:211::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20951:211:0;;;;;;;;;;:::i;26267:167::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26267:167:0;;:::i;14552:133::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14552:133:0;;;;;;;;;;:::i;25422:156::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25422:156:0;;;;;;;;;:::i;12275:30::-;;;;;;;;;;;;;:::i;19155:114::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19155:114:0;-1:-1:-1;;;;;19155:114:0;;:::i;20704:113::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20704:113:0;;:::i;2658:97::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2658:97:0;-1:-1:-1;;;;;2658:97:0;;:::i;2992:173::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2992:173:0;-1:-1:-1;;;;;2992:173:0;;:::i;15766:172::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15766:172:0;;:::i;23330:347::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;23330:347:0;;;;;;;;;;:::i;24145:128::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24145:128:0;;;;;;;;;;:::i;12400:24::-;;;;;;;;;;;;;:::i;11903:34::-;;;;;;;;;;;;;:::i;11490:46::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11490:46:0;-1:-1:-1;;;;;11490:46:0;;:::i;2876:107::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2876:107:0;-1:-1:-1;;;;;2876:107:0;;:::i;12099:36::-;;;;;;;;;;;;;:::i;12460:31::-;;;;;;;;;;;;;:::i;12772:55::-;;;;:::o;14271:80::-;14343:5;;;;;;;;;;;;-1:-1:-1;;;14343:5:0;;;;14271:80;:::o;14694:216::-;14798:10;14769:4;14786:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;14786:32:0;;;;;;;;;;;:41;;;14843:37;;;;;;;14769:4;;14786:32;;14798:10;;14843:37;;;;;;;;-1:-1:-1;14898:4:0;14694:216;;;;;:::o;20849:94::-;2404:19;2412:10;2404:7;:19::i;:::-;2396:38;;;;;-1:-1:-1;;;2396:38:0;;;;;;;;;;;;-1:-1:-1;;;2396:38:0;;;;;;;;;;;;;;;20914:11:::1;:21:::0;;;::::1;;-1:-1:-1::0;;;20914:21:0::1;-1:-1:-1::0;;;;20914:21:0;;::::1;::::0;;;::::1;::::0;;20849:94::o;26443:150::-;26523:4;26579:6;26547:29;26567:8;26547:19;:29::i;:::-;:38;;26443:150;-1:-1:-1;;;26443:150:0:o;12053:36::-;;;;:::o;14001:88::-;14074:12;;14001:88;:::o;26634:990::-;2404:19;2412:10;2404:7;:19::i;:::-;2396:38;;;;;-1:-1:-1;;;2396:38:0;;;;;;;;;;;;-1:-1:-1;;;2396:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;26766:16:0;::::1;26772:10;26766:16;26758:25;;;::::0;::::1;;26821:3;26802:22:::0;::::1;26794:79;;;;-1:-1:-1::0;;;26794:79:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26892:33:::0;;::::1;26884:85;;;;-1:-1:-1::0;;;26884:85:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26983:12;27017:6:::0;27013:90:::1;27027:20:::0;;::::1;27013:90;;;27082:6;;27089:1;27082:9;;;;;;;;;::::0;;;::::1;;27075:16:::0;;;::::1;::::0;-1:-1:-1;27049:3:0::1;;27013:90;;;;27143:4;27124:15;27134:4;27124:9;:15::i;:::-;:23;;27116:63;;;::::0;;-1:-1:-1;;;27116:63:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;27197:6;27193:269;27207:20:::0;;::::1;27193:269;;;27248:43;27263:4;27268:9;;27278:1;27268:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;27268:12:0::1;27281:6;;27288:1;27281:9;;;;;;;;;;;;;27248:14;:43::i;:::-;;27310:16;:30;27327:9;;27337:1;27327:12;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;27327:12:0::1;27310:30:::0;;-1:-1:-1;27310:30:0;::::1;::::0;;;;;;-1:-1:-1;27310:30:0;;::::1;;27306:145;;27365:11;::::0;-1:-1:-1;;;;;27365:11:0::1;:20;27386:9:::0;;27396:1;27386:12;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;27386:12:0::1;27400:9;:23;27410:9;;27420:1;27410:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;27410:12:0::1;-1:-1:-1::0;;;;;27400:23:0::1;-1:-1:-1::0;;;;;27400:23:0::1;;;;;;;;;;;;;27365:59;;;;;;;;;;;;;-1:-1:-1::0;;;;;27365:59:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;27361:75:::0;::::1;27229:3;;27193:269;;;-1:-1:-1::0;;;;;;27508:22:0;::::1;;::::0;;;:16:::1;:22;::::0;;;;;::::1;;27504:113;;27551:11;::::0;;-1:-1:-1;;;;;27578:15:0;;::::1;27551:11;27578:15:::0;;;:9:::1;:15:::0;;;;;;;;27551:43;;-1:-1:-1;;;27551:43:0;;::::1;::::0;::::1;::::0;;;;;;;;;:11;;;::::1;::::0;:20:::1;::::0;:43;;;;;;;;;;;:11;;:43;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;;;;;27547:59:::0;::::1;2436:1;26634:990:::0;;;;;:::o;20263:208::-;2495:24;2508:10;2495:12;:24::i;:::-;2487:48;;;;;-1:-1:-1;;;2487:48:0;;;;;;;;;;;;-1:-1:-1;;;2487:48:0;;;;;;;;;;;;;;;20399:64:::1;::::0;20367:21:::1;::::0;20407:10:::1;::::0;20459:3:::1;20428:28:::0;;::::1;:34;20399:64:::0;::::1;;;::::0;::::1;::::0;;;20428:34;20407:10;20399:64;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;2537:1;20263:208:::0;:::o;25587:183::-;2495:24;2508:10;2495:12;:24::i;:::-;2487:48;;;;;-1:-1:-1;;;2487:48:0;;;;;;;;;;;;-1:-1:-1;;;2487:48:0;;;;;;;;;;;;;;;25685:15:::1;:25:::0;;;;25721:26:::1;:41:::0;25587:183::o;15209:365::-;-1:-1:-1;;;;;15329:19:0;;15309:4;15329:19;;;:11;:19;;;;;;;;15349:10;15329:31;;;;;;;;-1:-1:-1;;15329:46:0;15326:180;;15425:69;;;;;;;;;;;-1:-1:-1;;;15425:69:0;;;;;;;;-1:-1:-1;;;;;15425:19:0;;-1:-1:-1;15425:19:0;;;:11;:19;;;;;15445:10;15425:31;;;;;;;;;;:69;;15461:6;;15425:35;:69::i;:::-;-1:-1:-1;;;;;15391:19:0;;;;;;:11;:19;;;;;;;;15411:10;15391:31;;;;;;;:103;15326:180;15526:40;15540:6;15548:9;15559:6;15526:13;:40::i;:::-;15519:47;;15209:365;;;;;;:::o;26116:142::-;26244:4;;26169:7;;26196:54;;26234:15;;-1:-1:-1;;;;;26244:4:0;26234:9;:15::i;:::-;26223:4;;26196:33;;26213:15;;-1:-1:-1;;;;;26223:4:0;26213:9;:15::i;:::-;26196:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;26189:61;;26116:142;:::o;25779:183::-;2495:24;2508:10;2495:12;:24::i;:::-;2487:48;;;;;-1:-1:-1;;;2487:48:0;;;;;;;;;;;;-1:-1:-1;;;2487:48:0;;;;;;;;;;;;;;;25889:11:::1;::::0;:65:::1;::::0;;-1:-1:-1;;;25889:65:0;;::::1;::::0;::::1;::::0;;;;;;;;;;;-1:-1:-1;;;;;25889:11:0;;::::1;::::0;:35:::1;::::0;:65;;;;;:11:::1;::::0;:65;;;;;;;;:11;;:65;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;21210:164:::0;2404:19;2412:10;2404:7;:19::i;:::-;2396:38;;;;;-1:-1:-1;;;2396:38:0;;;;;;;;;;;;-1:-1:-1;;;2396:38:0;;;;;;;;;;;;;;;21294:18:::1;:28:::0;;-1:-1:-1;;21294:28:0::1;::::0;::::1;;::::0;;;::::1;-1:-1:-1::0;;21333:33:0::1;21294:28;;21333:33:::0;;;::::1;::::0;;;::::1;;::::0;;21210:164::o;2764:103::-;2819:4;2854:5;-1:-1:-1;;;;;2854:5:0;;;2843:16;;;;2764:103::o;14095:80::-;11123:1;14095:80;:::o;27633:807::-;2404:19;2412:10;2404:7;:19::i;:::-;2396:38;;;;;-1:-1:-1;;;2396:38:0;;;;;;;;;;;;-1:-1:-1;;;2396:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;27760:16:0;::::1;27766:10;27760:16;27752:25;;;::::0;::::1;;27815:3;27796:22:::0;::::1;27788:79;;;;-1:-1:-1::0;;;27788:79:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27896:25:::0;;::::1;::::0;27943:15:::1;27953:4:::0;27943:9:::1;:15::i;:::-;:23;;27935:63;;;::::0;;-1:-1:-1;;;27935:63:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;28016:6;28012:266;28026:20:::0;;::::1;28012:266;;;28067:40;28082:4;28087:9;;28097:1;28087:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;28087:12:0::1;28100:6;28067:14;:40::i;:::-;;28126:16;:30;28143:9;;28153:1;28143:12;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;28143:12:0::1;28126:30:::0;;-1:-1:-1;28126:30:0;::::1;::::0;;;;;;-1:-1:-1;28126:30:0;;::::1;;28122:145;;28181:11;::::0;-1:-1:-1;;;;;28181:11:0::1;:20;28202:9:::0;;28212:1;28202:12;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;28202:12:0::1;28216:9;:23;28226:9;;28236:1;28226:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;28226:12:0::1;-1:-1:-1::0;;;;;28216:23:0::1;-1:-1:-1::0;;;;;28216:23:0::1;;;;;;;;;;;;;28181:59;;;;;;;;;;;;;-1:-1:-1::0;;;;;28181:59:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;28177:75:::0;::::1;28048:3;;28012:266;;;-1:-1:-1::0;;;;;;28324:22:0;::::1;;::::0;;;:16:::1;:22;::::0;;;;;::::1;;28320:113;;28367:11;::::0;;-1:-1:-1;;;;;28394:15:0;;::::1;28367:11;28394:15:::0;;;:9:::1;:15:::0;;;;;;;;28367:43;;-1:-1:-1;;;28367:43:0;;::::1;::::0;::::1;::::0;;;;;;;;;:11;;;::::1;::::0;:20:::1;::::0;:43;;;;;;;;;;;:11;;:43;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;;;28363:59;2436:1;27633:807:::0;;;;:::o;25027:386::-;2495:24;2508:10;2495:12;:24::i;:::-;2487:48;;;;;-1:-1:-1;;;2487:48:0;;;;;;;;;;;;-1:-1:-1;;;2487:48:0;;;;;;;;;;;;;;;25204:21:::1;:46:::0;;-1:-1:-1;;;;;25204:46:0;;::::1;-1:-1:-1::0;;;;;;25204:46:0;;::::1;;::::0;;;25261:20:::1;:44:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;25316:20:::1;:44:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;25371:15:::1;:34:::0;;;;;::::1;::::0;::::1;;::::0;;25027:386::o;24282:130::-;2495:24;2508:10;2495:12;:24::i;:::-;2487:48;;;;;-1:-1:-1;;;2487:48:0;;;;;;;;;;;;-1:-1:-1;;;2487:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;24371:24:0;;;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;24371:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24282:130::o;14919:116::-;14974:4;14998:29;15006:7;-1:-1:-1;;14998:7:0;:29::i;15947:96::-;2495:24;2508:10;2495:12;:24::i;:::-;2487:48;;;;;-1:-1:-1;;;2487:48:0;;;;;;;;;;;;-1:-1:-1;;;2487:48:0;;;;;;;;;;;;;;;16014:12:::1;:21:::0;15947:96::o;23686:99::-;2404:19;2412:10;2404:7;:19::i;:::-;2396:38;;;;;-1:-1:-1;;;2396:38:0;;;;;;;;;;;;-1:-1:-1;;;2396:38:0;;;;;;;;;;;;;;;23754:13:::1;:23:::0;;-1:-1:-1;;23754:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23686:99::o;12587:38::-;;;;;;:::o;24016:120::-;2495:24;2508:10;2495:12;:24::i;:::-;2487:48;;;;;-1:-1:-1;;;2487:48:0;;;;;;;;;;;;-1:-1:-1;;;2487:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;24100:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;24100:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24016:120::o;11821:34::-;;;;:::o;12735:30::-;;;;;;:::o;14441:105::-;-1:-1:-1;;;;;14525:18:0;14507:7;14525:18;;;:9;:18;;;;;;;14441:105::o;12632:39::-;;;;;;;;;:::o;11264:61::-;;;;:::o;11199:58::-;;;;:::o;11780:34::-;;;;:::o;24421:597::-;2495:24;2508:10;2495:12;:24::i;:::-;2487:48;;;;;-1:-1:-1;;;2487:48:0;;;;;;;;;;;;-1:-1:-1;;;2487:48:0;;;;;;;;;;;;;;;24605:12:::1;:28:::0;;;24644:13:::1;:30:::0;;;24685:12:::1;:28:::0;;;24724:12:::1;:28:::0;;;24763:7:::1;:18:::0;;;24803:85:::1;24773:8:::0;24803:71:::1;24739:13:::0;24803:71;24700:13;24803:71;24620:13;24660:14;24803:17:::1;:33::i;:::-;:37:::0;::::1;:52::i;:85::-;24792:8;:96:::0;24899:14:::1;:32:::0;;;24976:1:::1;24916:15:::0;24961:16:::1;24950:8;;:27;24942:68;;;::::0;;-1:-1:-1;;;24942:68:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;14357:78:::0;14409:7;14427:5;-1:-1:-1;;;;;14427:5:0;14357:78;:::o;11451:32::-;;;;;;:::o;23794:210::-;2404:19;2412:10;2404:7;:19::i;:::-;2396:38;;;;;-1:-1:-1;;;2396:38:0;;;;;;;;;;;;-1:-1:-1;;;2396:38:0;;;;;;;;;;;;;;;23896:9:::1;23891:106;23907:20:::0;;::::1;23891:106;;;23979:6;23949:13;:27;23963:9;;23973:1;23963:12;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;23963:12:0::1;23949:27:::0;;-1:-1:-1;23949:27:0;::::1;::::0;;;;;;-1:-1:-1;23949:27:0;:36;;-1:-1:-1;;23949:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;23929:3:0::1;23891:106;;;;23794:210:::0;;;:::o;14181:84::-;14255:7;;;;;;;;;;;;-1:-1:-1;;;14255:7:0;;;;14181:84;:::o;11739:34::-;;;;:::o;25971:136::-;2495:24;2508:10;2495:12;:24::i;:::-;2487:48;;;;;-1:-1:-1;;;2487:48:0;;;;;;;;;;;;-1:-1:-1;;;2487:48:0;;;;;;;;;;;;;;;26061:6:::1;26055:3;:12;26047:21;;;::::0;::::1;;26079:14;:20:::0;25971:136::o;12431:19::-;;;-1:-1:-1;;;;;12431:19:0;;:::o;15044:156::-;15124:4;15148:44;15162:10;15174:9;15185:6;15148:13;:44::i;2555:94::-;2404:19;2412:10;2404:7;:19::i;:::-;2396:38;;;;;-1:-1:-1;;;2396:38:0;;;;;;;;;;;;-1:-1:-1;;;2396:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;2615:19:0::1;;::::0;;;2637:4:::1;2615:19;::::0;;;;;;;:26;;-1:-1:-1;;2615:26:0::1;::::0;;::::1;::::0;;2555:94::o;11862:34::-;;;;:::o;12501:38::-;;;-1:-1:-1;;;;;12501:38:0;;:::o;15583:177::-;2404:19;2412:10;2404:7;:19::i;:::-;2396:38;;;;;-1:-1:-1;;;2396:38:0;;;;;;;;;;;;-1:-1:-1;;;2396:38:0;;;;;;;;;;;;;;;15748:4:::1;15720:23;15705:12;;:38;15704:48;;;;;;15686:15;:66:::0;-1:-1:-1;15583:177:0:o;20951:211::-;2404:19;2412:10;2404:7;:19::i;:::-;2396:38;;;;;-1:-1:-1;;;2396:38:0;;;;;;;;;;;;-1:-1:-1;;;2396:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;21030:21:0;;::::1;;::::0;;;:11:::1;:21;::::0;;;;;;;:31;;;::::1;;-1:-1:-1::0;;21030:31:0;;::::1;::::0;::::1;::::0;;;21072:15:::1;:25:::0;;;;;:35;;;::::1;::::0;::::1;::::0;;21118:16:::1;:26:::0;;;;;;:36;;;;::::1;;::::0;;20951:211::o;26267:167::-;26335:7;26362:64;26403:22;:20;:22::i;:::-;26385:4;;26362:36;;26375:22;;26395:1;;26375:15;;-1:-1:-1;;;;;26385:4:0;26375:9;:15::i;:::-;:19;;:22::i;:::-;26362:8;;:12;:36::i;:::-;:40;;:64::i;14552:133::-;-1:-1:-1;;;;;14654:19:0;;;14636:7;14654:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;14552:133::o;25422:156::-;2495:24;2508:10;2495:12;:24::i;:::-;2487:48;;;;;-1:-1:-1;;;2487:48:0;;;;;;;;;;;;-1:-1:-1;;;2487:48:0;;;;;;;;;;;;;;;25514:11:::1;:22:::0;;-1:-1:-1;;25514:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;25547:13:::1;:23:::0;25422:156::o;12275:30::-;;;-1:-1:-1;;;;;12275:30:0;;:::o;19155:114::-;-1:-1:-1;;;;;19242:19:0;19217:4;19242:19;;;:11;:19;;;;;;;;19241:20;;19155:114::o;20704:113::-;2404:19;2412:10;2404:7;:19::i;:::-;2396:38;;;;;-1:-1:-1;;;2396:38:0;;;;;;;;;;;;-1:-1:-1;;;2396:38:0;;;;;;;;;;;;;;;20782:14:::1;:27:::0;20704:113::o;2658:97::-;2404:19;2412:10;2404:7;:19::i;:::-;2396:38;;;;;-1:-1:-1;;;2396:38:0;;;;;;;;;;;;-1:-1:-1;;;2396:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;2720:19:0::1;2742:5;2720:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;2720:27:0::1;::::0;;2658:97::o;2992:173::-;2404:19;2412:10;2404:7;:19::i;:::-;2396:38;;;;;-1:-1:-1;;;2396:38:0;;;;;;;;;;;;-1:-1:-1;;;2396:38:0;;;;;;;;;;;;;;;3068:5:::1;:11:::0;;-1:-1:-1;;;;;;3068:11:0::1;-1:-1:-1::0;;;;;3068:11:0;::::1;::::0;;::::1;::::0;;3090:19;;;-1:-1:-1;3090:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;3090:26:0::1;::::0;;::::1;::::0;;;3132:25;;;;;;;::::1;::::0;;;;;;;;;::::1;2992:173:::0;:::o;15766:172::-;2404:19;2412:10;2404:7;:19::i;:::-;2396:38;;;;;-1:-1:-1;;;2396:38:0;;;;;;;;;;;;-1:-1:-1;;;2396:38:0;;;;;;;;;;;;;;;15926:4:::1;15897:24;15882:12;;:39;15881:49;;;;;;15866:12;:64:::0;-1:-1:-1;15766:172:0:o;23330:347::-;2495:24;2508:10;2495:12;:24::i;:::-;2487:48;;;;;-1:-1:-1;;;2487:48:0;;;;;;;;;;;;-1:-1:-1;;;2487:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;23427:23:0;::::1;23445:4;23427:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;23464:4:0::1;::::0;-1:-1:-1;;;;;23454:14:0;;::::1;23464:4:::0;::::1;23454:14;;23427:41;23419:50;;;::::0;::::1;;-1:-1:-1::0;;;;;23480:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;23480:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;23524:146:::1;;23549:11;::::0;:31:::1;::::0;;-1:-1:-1;;;23549:31:0;;-1:-1:-1;;;;;23549:31:0;;::::1;;::::0;::::1;::::0;:11:::1;:31:::0;;;;;;;;:11;::::1;::::0;:20:::1;::::0;:31;;;;;:11;;:31;;;;;;:11;;:31;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23524:146;;;23611:11;::::0;;-1:-1:-1;;;;;23640:17:0;;::::1;23611:11;23640:17:::0;;;:9:::1;:17:::0;;;;;;;;23611:47;;-1:-1:-1;;;23611:47:0;;::::1;::::0;::::1;::::0;;;;;;;;;:11;;;::::1;::::0;:20:::1;::::0;:47;;;;;;;;;;;:11;;:47;::::1;;::::0;::::1;;;;::::0;::::1;23524:146;23330:347:::0;;:::o;24145:128::-;2495:24;2508:10;2495:12;:24::i;:::-;2487:48;;;;;-1:-1:-1;;;2487:48:0;;;;;;;;;;;;-1:-1:-1;;;2487:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;24233:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;24233:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24145:128::o;12400:24::-;;;-1:-1:-1;;;;;12400:24:0;;:::o;11903:34::-;;;;:::o;11490:46::-;;;;;;;;;;;;;;;:::o;2876:107::-;-1:-1:-1;;;;;2956:19:0;2932:4;2956:19;;;:14;:19;;;;;;;;;2876:107::o;12099:36::-;;;;:::o;12460:31::-;;;-1:-1:-1;;;12460:31:0;;;;;:::o;628:252::-;686:7;710:6;706:47;;-1:-1:-1;740:1:0;733:8;;706:47;778:5;;;782:1;778;:5;:1;802:5;;;;;:10;794:56;;;;-1:-1:-1;;;794:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;886:132;944:7;971:39;975:1;978;971:39;;;;;;;;;;;;;;;;;:3;:39::i;18641:330::-;18771:53;;;;;;;;;;;-1:-1:-1;;;18771:53:0;;;;;;;;-1:-1:-1;;;;;18771:17:0;;18734:4;18771:17;;;:9;:17;;;;;;;:53;;18793:6;;18771:21;:53::i;:::-;-1:-1:-1;;;;;18751:17:0;;;;;;;:9;:17;;;;;;:73;;;;18858:20;;;;;;;:32;;18883:6;18858:24;:32::i;:::-;-1:-1:-1;;;;;18835:20:0;;;;;;;:9;:20;;;;;;;;;:55;;;;18906:35;;;;;;;18835:20;;18906:35;;;;-1:-1:-1;;;;;;;;;;;18906:35:0;;;;;;;;-1:-1:-1;18959:4:0;18641:330;;;;;:::o;429:193::-;515:7;551:12;543:6;;;;535:29;;;;-1:-1:-1;;;535:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;587:5:0;;;429:193::o;16055:2577::-;16167:6;;16147:4;;16167:6;;16164:63;;;16183:41;16198:6;16206:9;16217:6;16183:14;:41::i;:::-;16176:48;;;;16164:63;-1:-1:-1;;;;;16244:22:0;;;;;;:14;:22;;;;;;;;16243:23;:53;;;;-1:-1:-1;;;;;;16271:25:0;;;;;;:14;:25;;;;;;;;16270:26;16243:53;16240:127;;;16320:11;;-1:-1:-1;;;16320:11:0;;;;16312:43;;;;;-1:-1:-1;;;16312:43:0;;;;;;;;;;;;-1:-1:-1;;;16312:43:0;;;;;;;;;;;;;;;16405:13;;;;16402:118;;;-1:-1:-1;;;;;16443:21:0;;;;;;:13;:21;;;;;;;;16442:22;:51;;;;-1:-1:-1;;;;;;16469:24:0;;;;;;:13;:24;;;;;;;;16468:25;16442:51;16434:74;;;;;-1:-1:-1;;;16434:74:0;;;;;;;;;;;;-1:-1:-1;;;16434:74:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;16541:22:0;;;;;;:14;:22;;;;;;;;16540:23;:53;;;;-1:-1:-1;;;;;;16567:26:0;;16588:4;16567:26;;16540:53;:84;;;;-1:-1:-1;16619:4:0;;-1:-1:-1;;;;;16598:26:0;;;16619:4;;16598:26;;16540:84;:105;;;;-1:-1:-1;16641:4:0;;-1:-1:-1;;;;;16628:17:0;;;16641:4;;16628:17;;16540:105;:142;;;;-1:-1:-1;16662:20:0;;-1:-1:-1;;;;;16649:33:0;;;16662:20;;16649:33;;16540:142;:179;;;;-1:-1:-1;16699:20:0;;-1:-1:-1;;;;;16686:33:0;;;16699:20;;16686:33;;16540:179;:218;;;;-1:-1:-1;16737:21:0;;-1:-1:-1;;;;;16724:34:0;;;16737:21;;16724:34;;16540:218;:250;;;;-1:-1:-1;16775:15:0;;-1:-1:-1;;;;;16762:28:0;;;16775:15;;16762:28;;16540:250;16536:442;;;16806:18;16827:20;16837:9;16827;:20::i;:::-;16806:41;;16895:15;;16884:6;16871:10;:19;16870:40;;16862:114;;;;-1:-1:-1;;;16862:114:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16536:442;;17005:4;;-1:-1:-1;;;;;16995:14:0;;;17005:4;;16995:14;:45;;;;-1:-1:-1;17022:18:0;;;;16995:45;:90;;;;-1:-1:-1;;;;;;17058:27:0;;;;;;:16;:27;;;;;;;;17057:28;16995:90;16991:295;;;-1:-1:-1;;;;;17110:24:0;;;;;;:13;:24;;;;;;17137:15;-1:-1:-1;17102:91:0;;;;-1:-1:-1;;;17102:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17253:21;;-1:-1:-1;;;;;17208:24:0;;;;;;:13;:24;;;;;17253:21;;;;;;17235:15;:39;17208:66;;16991:295;17340:28;17353:6;17361;17340:12;:28::i;:::-;17385:16;:14;:16::i;:::-;17382:35;;;17404:10;:8;:10::i;:::-;17477:53;;;;;;;;;;;-1:-1:-1;;;17477:53:0;;;;;;;;-1:-1:-1;;;;;17477:17:0;;-1:-1:-1;17477:17:0;;;:9;:17;;;;;;;;:53;;17499:6;;17477:21;:53::i;:::-;-1:-1:-1;;;;;17457:17:0;;;;;;;:9;:17;;;;;:73;;;;17599:4;;;;;17589:14;:38;;;;-1:-1:-1;;;;;;17608:19:0;;;;;;:11;:19;;;;;;;;17607:20;17589:38;:65;;;;-1:-1:-1;;;;;;17632:22:0;;;;;;:11;:22;;;;;;;;17631:23;17589:65;17586:365;;;17687:32;17695:6;17703;17712:5;17687:7;:32::i;:::-;17670:49;;17586:365;;;17764:4;;-1:-1:-1;;;;;17751:17:0;;;17764:4;;17751:17;:41;;;;-1:-1:-1;;;;;;17773:19:0;;;;;;:11;:19;;;;;;;;17772:20;17751:41;:68;;;;-1:-1:-1;;;;;;17797:22:0;;;;;;:11;:22;;;;;;;;17796:23;17751:68;17748:203;;;17853:31;17861:6;17869;17878:4;17853:7;:31::i;17748:203::-;-1:-1:-1;17933:6:0;17748:203;-1:-1:-1;;;;;18134:20:0;;;;;;:9;:20;;;;;;:40;;18159:14;18134:24;:40::i;:::-;-1:-1:-1;;;;;18111:20:0;;;;;;;:9;:20;;;;;;;;:63;;;;18221:24;;;;;:16;:24;;;;;;;18217:119;;18266:11;;;-1:-1:-1;;;;;18295:17:0;;;18266:11;18295:17;;;:9;:17;;;;;;;;18266:47;;-1:-1:-1;;;18266:47:0;;;;;;;;;;;;;;:11;;;;;:20;;:47;;;;;;;;;;;:11;;:47;;;;;;;;;;;;;;;;;;;;;;;;;18262:63;;-1:-1:-1;;;;;18353:27:0;;;;;;:16;:27;;;;;;;;18349:128;;18401:11;;;-1:-1:-1;;;;;18433:20:0;;;18401:11;18433:20;;;:9;:20;;;;;;;;18401:53;;-1:-1:-1;;;18401:53:0;;;;;;;;;;;;;;:11;;;;;:20;;:53;;;;;;;;;;;:11;;:53;;;;;;;;;;;;;;;;;;;;;;;;;18397:69;;18494:11;;18514:14;;18494:35;;;-1:-1:-1;;;;;;18494:35:0;;;;;;;;;;-1:-1:-1;;;;;18494:11:0;;;;:19;;:35;;;;;:11;;:35;;;;;;;;:11;;:35;;;;;;;;;;;;;;;;;;;;;;;;;18490:51;18576:9;-1:-1:-1;;;;;18559:43:0;18568:6;-1:-1:-1;;;;;18559:43:0;-1:-1:-1;;;;;;;;;;;18587:14:0;18559:43;;;;;;;;;;;;;;;;;;-1:-1:-1;18620:4:0;;16055:2577;-1:-1:-1;;;;16055:2577:0:o;287:136::-;345:7;372:43;376:1;379;372:43;;;;;;;;;;;;;;;;;:3;:43::i;99:182::-;157:7;189:5;;;213:6;;;;205:46;;;;;-1:-1:-1;;;205:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;1024:189;1110:7;1145:12;1138:5;1130:28;;;;-1:-1:-1;;;1130:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1169:9;1185:1;1181;:5;;;;;;;1024:189;-1:-1:-1;;;;;1024:189:0:o;18980:166::-;19077:12;;19067:6;:22;;:49;;;-1:-1:-1;;;;;;19093:23:0;;;;;;:15;:23;;;;;;;;19067:49;19059:79;;;;;-1:-1:-1;;;19059:79:0;;;;;;;;;;;;-1:-1:-1;;;19059:79:0;;;;;;;;;;;;;;20057:197;20144:4;;20106;;-1:-1:-1;;;;;20144:4:0;20130:10;:18;;;;:38;;-1:-1:-1;20162:6:0;;;;20161:7;20130:38;:62;;;;-1:-1:-1;20181:11:0;;;;20130:62;:116;;;;-1:-1:-1;;20233:13:0;;20223:4;20205:24;;;;:9;:24;;;;;;:41;;;20057:197::o;21383:1935::-;12876:6;:13;;-1:-1:-1;;12876:13:0;12885:4;12876:13;;;21478:15:::1;::::0;21495:26:::1;::::0;12876:6;;21462:60:::1;::::0;:15:::1;:60::i;:::-;:79;;21529:12;;21462:79;;;21525:1;21462:79;21432:109;;21552:23;21578:59;21635:1;21578:52;21621:8;;21578:38;21596:19;21578:13;;:17;;:38;;;;:::i;:59::-;21552:85;;21648:20;21671:34;21689:15;21671:13;;:17;;:34;;;;:::i;:::-;21743:16;::::0;;21757:1:::1;21743:16:::0;;;21719:21:::1;21743:16:::0;;::::1;::::0;;21648:57;;-1:-1:-1;21743:16:0;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;21743:16:0::1;21719:40;;21788:4;21770;21775:1;21770:7;;;;;;;;-1:-1:-1::0;;;;;21770:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;21814:4:::1;::::0;21804:7;;21814:4;::::1;::::0;21804;;21814;;21804:7;::::1;;;;;-1:-1:-1::0;;;;;21804:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:14;;;;21891:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;21891:188:0;;::::1;::::0;::::1;::::0;;;21832:21:::1;21891:188:::0;;;;;;22033:4:::1;21891:188:::0;;;;;;22053:15:::1;21891:188:::0;;;;;;;;;;;;;;;;;;;;;21856:21:::1;::::0;21891:6;;;::::1;::::0;:57:::1;::::0;21963:12;;21832:21;;22006:4;;21891:188;;;;;;;;;;::::1;::::0;::::1;::::0;;;21832:21;21891:188:::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22093:17;22113:40;22139:13;22113:21;:25;;:40;;;;:::i;:::-;22093:60:::0;-1:-1:-1;22167:19:0::1;22189:40;22202:26;:19:::0;22226:1:::1;22202:23;:26::i;:::-;22189:8;::::0;;:12:::1;:40::i;:::-;22167:62:::0;-1:-1:-1;22243:26:0::1;22272:58;22328:1;22272:51;22167:62:::0;22272:51;:9;22286:19;22272:13:::1;:34::i;:58::-;22243:87;;22341:27;22371:45;22404:11;22371:28;22385:13;;22371:9;:13;;:28;;;;:::i;:45::-;22341:75;;22427:26;22456:44;22488:11;22456:27;22470:12;;22456:9;:13;;:27;;;;:::i;:44::-;22427:73;;22511:20;22534:44;22566:11;22534:27;22548:12;;22534:9;:13;;:27;;;;:::i;:44::-;22511:67;;22596:11;;;;;;;;;-1:-1:-1::0;;;;;22596:11:0::1;-1:-1:-1::0;;;;;22596:19:0::1;;22623;22596:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;22592:65:::0;22696:20:::1;::::0;22688:77:::1;::::0;22668:15:::1;::::0;-1:-1:-1;;;;;22696:20:0::1;::::0;22755:5:::1;::::0;22730:18;;22668:15;22688:77;22668:15;22688:77;22730:18;22696:20;22755:5;22688:77:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;22800:20:0::1;::::0;22792:71:::1;::::0;22667:98;;-1:-1:-1;;;;;;22800:20:0::1;::::0;22853:5:::1;::::0;22834:12;;22800:20:::1;22792:71:::0;22800:20;22792:71;22834:12;22800:20;22853:5;22792:71:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;22930:5:0::1;::::0;-1:-1:-1;;22952:19:0;;;-1:-1:-1;22949:362:0::1;;22987:6;::::0;23161:21:::1;::::0;22987:244:::1;::::0;;-1:-1:-1;;;22987:244:0;;23063:4:::1;22987:244;::::0;::::1;::::0;;;;;;;:6:::1;:244:::0;;;;;;;;;;-1:-1:-1;;;;;23161:21:0;;::::1;22987:244:::0;;;;23201:15:::1;22987:244:::0;;;;;;:6;;;::::1;::::0;:22:::1;::::0;23017:18;;22987:244;;;;;::::1;::::0;;;;;;;;;23017:18;22987:6;:244;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;22987:244:0;23251:48;;;;;22987:244:::1;23251:48:::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;;::::1;22949:362;-1:-1:-1::0;;12894:6:0;:14;;-1:-1:-1;;12894:14:0;;;-1:-1:-1;;;;;;;;;;21383:1935:0:o;19278:770::-;19358:7;19381:18;19402:6;:29;;19428:3;19402:29;;;19411:14;;19402:29;19381:50;;19442:17;19462:62;19503:14;;19520:3;19503:20;19462:36;19487:10;19462:20;19473:8;;19462:6;:10;;:20;;;;:::i;:62::-;19442:82;;19542:18;19563:36;19590:8;;19563:22;19577:7;;19563:9;:13;;:22;;;;:::i;:36::-;19542:57;-1:-1:-1;19610:22:0;19635:25;:9;19542:57;19635:13;:25::i;:::-;19719:4;19701:24;;;;:9;:24;;;;;;19610:50;;-1:-1:-1;19701:44:0;;19610:50;19701:28;:44::i;:::-;19692:4;19674:24;;;;:9;:24;;;;;;:71;;;;19795:15;;-1:-1:-1;;;;;19795:15:0;19785:26;;;;:42;;19816:10;19785:30;:42::i;:::-;19766:15;;-1:-1:-1;;;;;19766:15:0;;;19756:26;;;;:9;:26;;;;;;;;;:71;;;;19843:47;;;;;;;19868:4;;19843:47;;;;-1:-1:-1;;;;;;;;;;;19843:47:0;;;;;;;19907:14;;19904:95;;19959:15;;19942:45;;;;;;;;-1:-1:-1;;;;;19959:15:0;;;;19942:45;;;-1:-1:-1;;;;;;;;;;;19942:45:0;;;;;;;;;19904:95;20019:21;:6;20030:9;20019:10;:21::i;:::-;20012:28;19278:770;-1:-1:-1;;;;;;;;19278:770:0:o

Swarm Source

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