ETH Price: $3,661.48 (+10.69%)

Token

DONGO AI ($DONGO)
 

Overview

Max Total Supply

1,000,000,000 $DONGO

Holders

3,212 ( -0.062%)

Market

Price

$0.00 @ 0.000000 ETH (+7.04%)

Onchain Market Cap

$202,938.83

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 9 Decimals)

Balance
23,646.419405889 $DONGO

Value
$4.80 ( ~0.00131094374962908 Eth) [0.0024%]
0x5b5073bcc906c7e22476da1f1374e73e4979cb19
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Dongo AI elevates your strategic decision-making, placing institutional-grade insights within reach.

Market

Volume (24H):$73.96
Market Capitalization:$0.00
Circulating Supply:0.00 $DONGO
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume
1
Uniswap V2 (Ethereum)
0X8C213AE332274E6314BF4CF989604E7F61162967-0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2$0.0002
0.0000001 Eth
$75.57
366,359.722 0X8C213AE332274E6314BF4CF989604E7F61162967
100.0000%

Contract Source Code Verified (Exact Match)

Contract Name:
DongoAI

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 200 runs

Other Settings:
paris EvmVersion
File 1 of 1 : DongoAI.sol
// SPDX-License-Identifier: MIT
// Telegram: https://t.me/dongo_ai
// Website: https://dongo.ai

pragma solidity >=0.6.0 <0.9.0;

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

interface IFactoryV2 {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

interface IV2Pair {
    function factory() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function sync() external;
}

interface IRouter01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function 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 swapExactETHForTokens(
        uint amountOutMin, 
        address[] calldata path, 
        address to, uint deadline
    ) external payable returns (uint[] memory amounts);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IRouter02 is IRouter01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        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 swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}

interface IInitializer {
    function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external;
    function getConfig() external returns (address, address);
    function getInits(uint256 amount) external returns (uint256, uint256);
    function setLpPair(address pair, bool enabled) external;
}

interface IStaking {
    function addRewards(uint256 rewardAmount) external;
}

contract DongoAI is IERC20 {
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromProtection;
    mapping (address => bool) private _isExcludedFromFees;
    uint256 constant private startingSupply = 1_000_000_000;
    string constant private _name = "DONGO AI";
    string constant private _symbol = "$DONGO";
    uint8 constant private _decimals = 9;
    uint256 constant private _tTotal = startingSupply * 10**_decimals;

    struct Fees {
        uint16 buyFee;
        uint16 sellFee;
        uint16 transferFee;
    }

    struct Ratios {
        uint16 marketing;
        uint16 development;
        uint16 staking;
        uint16 team;
        uint16 totalSwap;
    }

    Fees public _taxRates = Fees({
        buyFee: 400,
        sellFee: 400,
        transferFee: 0
    });

    Ratios public _ratios = Ratios({
        marketing: 1,
        development: 1,
        staking: 1,
        team: 1,
        totalSwap: 4
    });

    uint256 constant public maxBuyTaxes = 1000;
    uint256 constant public maxSellTaxes = 1000;
    uint256 constant public maxTransferTaxes = 1000;
    uint256 constant masterTaxDivisor = 10000;

    bool public taxesAreLocked;
    bool public addRewardsEnabled;

    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;

    struct TaxWallets {
        address payable marketing;
        address payable development;
        address payable team;
        address payable staking;
    }

    struct TokenDistributionWallets {
        address team_advisors;
        address marketing;
        address liquidity_operations;
    }

    TaxWallets public _taxWallets = TaxWallets({
        marketing: payable(0x67693c30B8eDb511D88DDD501748db02f7D3ab25),
        development: payable(0x1DB6189e47119865E4c3Ef2BD6FeDd22966e5807),
        team: payable(0x13E130e8c20019a59C75716E6dc05666e4B9845f),
        staking: payable(0x59e5AC90f04AE837ea9bd6c7d8683b4E503648cC)
    });

    TokenDistributionWallets public tokenDistributionWallets = TokenDistributionWallets({
        team_advisors: 0x13E130e8c20019a59C75716E6dc05666e4B9845f,
        marketing: 0x67693c30B8eDb511D88DDD501748db02f7D3ab25,
        liquidity_operations: 0xCF89B071C0b9206C276616F281E414b1fb66A899
    });
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent = 10;
    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    IInitializer initializer;
    uint256 public launchStamp;

    event ContractSwapEnabledUpdated(bool enabled);
    event AutoLiquify(uint256 amountCurrency, uint256 amountTokens);

    modifier inSwapFlag {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () payable {
        // Set the owner.
        _owner = msg.sender;

        _tOwned[tokenDistributionWallets.team_advisors] = _tTotal * 125 / 1000;
        _tOwned[tokenDistributionWallets.marketing] = _tTotal * 75 / 1000;
        _tOwned[tokenDistributionWallets.liquidity_operations] = _tTotal * 800 / 1000;

        emit Transfer(address(0), _owner, _tTotal);

        _isExcludedFromFees[_owner] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[DEAD] = true;
        _liquidityHolders[_owner] = true;

        _isExcludedFromFees[0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE] = true; // PinkLock
        _isExcludedFromFees[0x663A5C229c09b049E36dCc11a9B0d4a8Eb9db214] = true; // Unicrypt (ETH)
        _isExcludedFromFees[0xDba68f07d1b7Ca219f78ae8582C213d975c25cAf] = true; // Unicrypt (ETH)
    }

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and renouncements.
    // This allows for removal of ownership privileges from the owner once renounced or transferred.

    address private _owner;

    modifier onlyOwner() { require(_owner == msg.sender, "Caller =/= owner."); _; }
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    function transferOwner(address newOwner) external onlyOwner {
        require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address.");
        require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address.");
        setExcludedFromFees(_owner, false);
        setExcludedFromFees(newOwner, true);
        
        if (balanceOf(_owner) > 0) {
            finalizeTransfer(_owner, newOwner, balanceOf(_owner), false, false, true);
        }
        
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
        
    }

    function renounceOwnership() external onlyOwner {
        require(tradingEnabled, "Cannot renounce until trading has been enabled.");
        setExcludedFromFees(_owner, false);
        address oldOwner = _owner;
        _owner = address(0);
        emit OwnershipTransferred(oldOwner, address(0));
    }

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================

    receive() external payable {}
    function totalSupply() external pure override returns (uint256) { return _tTotal; }
    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 allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    function balanceOf(address account) public view override returns (uint256) {
        return _tOwned[account];
    }

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

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

    function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "ERC20: Zero Address");
        require(spender != address(0), "ERC20: Zero Address");

        _allowances[sender][spender] = amount;
        emit Approval(sender, spender, amount);
    }

    function approveContractContingency() external onlyOwner returns (bool) {
        _approve(address(this), address(dexRouter), type(uint256).max);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] -= amount;
        }

        return _transfer(sender, recipient, amount);
    }

    function setNewRouter(address newRouter) external onlyOwner {
        require(!_hasLiqBeenAdded, "Cannot change after liquidity.");
        IRouter02 _newRouter = IRouter02(newRouter);
        address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        lpPairs[lpPair] = false;
        if (get_pair == address(0)) {
            lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
        lpPairs[lpPair] = true;
        _approve(address(this), address(dexRouter), type(uint256).max);
    }

    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (!enabled) {
            lpPairs[pair] = false;
            initializer.setLpPair(pair, false);
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 3 days, "3 Day cooldown.");
            }
            require(!lpPairs[pair], "Pair already added to list.");
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
            initializer.setLpPair(pair, true);
        }
    }

    function setInitializer(address init) public onlyOwner {
        require(!tradingEnabled);
        require(init != address(this), "Can't be self.");
        initializer = IInitializer(init);
        try initializer.getConfig() returns (address router, address constructorLP) {
            dexRouter = IRouter02(router); lpPair = constructorLP; lpPairs[lpPair] = true; 
            _approve(_owner, address(dexRouter), type(uint256).max);
            _approve(address(this), address(dexRouter), type(uint256).max);
        } catch { revert(); }
    }

    function isExcludedFromFees(address account) external view returns(bool) {
        return _isExcludedFromFees[account];
    }

    function setExcludedFromFees(address account, bool enabled) public onlyOwner {
        _isExcludedFromFees[account] = enabled;
    }

    function isExcludedFromProtection(address account) external view returns (bool) {
        return _isExcludedFromProtection[account];
    }

    function setExcludedFromProtection(address account, bool enabled) external onlyOwner {
        _isExcludedFromProtection[account] = enabled;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return (_tTotal - (balanceOf(DEAD) + balanceOf(address(0))));
    }

    function lockTaxes() external onlyOwner {
        // This will lock taxes at their current value forever, do not call this unless you're sure.
        taxesAreLocked = true;
    }

    function setTaxes(uint16 buyFee, uint16 sellFee, uint16 transferFee) external onlyOwner {
        require(!taxesAreLocked, "Taxes are locked.");
        if (block.timestamp >= launchStamp + 1 hours && launchStamp != 0) {
            require(buyFee <= maxBuyTaxes
                    && sellFee <= maxSellTaxes
                    && transferFee <= maxTransferTaxes,
                    "Cannot exceed maximums.");
        }
        _taxRates.buyFee = buyFee;
        _taxRates.sellFee = sellFee;
        _taxRates.transferFee = transferFee;
    }

    function setRatios(uint16 marketing, uint16 development, uint16 team, uint16 staking) external onlyOwner {
        _ratios.marketing = marketing;
        _ratios.development = development;
        _ratios.team = team;
        _ratios.staking = staking;
        _ratios.totalSwap = marketing + staking + development + team;
        uint256 total = _taxRates.buyFee + _taxRates.sellFee;
        require(_ratios.totalSwap <= total, "Cannot exceed sum of buy and sell fees.");
    }

    function setWallets(address payable marketing, address payable staking, address payable development, address payable team) external onlyOwner {
        require(marketing != address(0) && staking != address(0) && development != address(0) && team != address(0), "Cannot be zero address.");
        _taxWallets.marketing = payable(marketing);
        _taxWallets.development = payable(development);
        _taxWallets.staking = payable(staking);
        _taxWallets.team = payable(team);
    }

    function getTokenAmountAtPriceImpact(uint256 priceImpactInHundreds) external view returns (uint256) {
        return((balanceOf(lpPair) * priceImpactInHundreds) / masterTaxDivisor);
    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
        require(swapThreshold <= swapAmount, "Threshold cannot be above amount.");
        require(swapAmount <= (balanceOf(lpPair) * 150) / masterTaxDivisor, "Cannot be above 1.5% of current PI.");
        require(swapAmount >= _tTotal / 1_000_000, "Cannot be lower than 0.00001% of total supply.");
        require(swapThreshold >= _tTotal / 1_000_000, "Cannot be lower than 0.00001% of total supply.");
    }

    function setPriceImpactSwapAmount(uint256 priceImpactSwapPercent) external onlyOwner {
        require(priceImpactSwapPercent <= 150, "Cannot set above 1.5%.");
        piSwapPercent = priceImpactSwapPercent;
    }

    function setContractSwapEnabled(bool swapEnabled, bool priceImpactSwapEnabled) external onlyOwner {
        contractSwapEnabled = swapEnabled;
        piContractSwapsEnabled = priceImpactSwapEnabled;
        emit ContractSwapEnabledUpdated(swapEnabled);
    }

    function _hasLimits(address from, address to) internal view returns (bool) {
        return from != _owner
            && to != _owner
            && tx.origin != _owner
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this)
            && from != address(initializer)
            && to != address(initializer);
    }

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        bool buy = false;
        bool sell = false;
        bool other = false;
        if (lpPairs[from]) {
            buy = true;
        } else if (lpPairs[to]) {
            sell = true;
        } else {
            other = true;
        }
        if (_hasLimits(from, to)) {
            if(!tradingEnabled) {
                if (!other) {
                    revert("Trading not yet enabled!");
                } else if (!_isExcludedFromProtection[from] && !_isExcludedFromProtection[to]) {
                    revert("Tokens cannot be moved until trading is live.");
                }
            }
        }

        if (sell) {
            if (!inSwap) {
                if (contractSwapEnabled) {
                    uint256 contractTokenBalance = balanceOf(address(this));
                    if (contractTokenBalance >= swapThreshold) {
                        uint256 swapAmt = swapAmount;
                        if (piContractSwapsEnabled) { swapAmt = (balanceOf(lpPair) * piSwapPercent) / masterTaxDivisor; }
                        if (contractTokenBalance >= swapAmt) { contractTokenBalance = swapAmt; }
                        contractSwap(contractTokenBalance);
                    }
                }
            }
        }
        return finalizeTransfer(from, to, amount, buy, sell, other);
    }

    function contractSwap(uint256 contractTokenBalance) internal inSwapFlag {
        Ratios memory ratios = _ratios;
        if (ratios.totalSwap == 0) {
            return;
        }

        if (_allowances[address(this)][address(dexRouter)] != type(uint256).max) {
            _allowances[address(this)][address(dexRouter)] = type(uint256).max;
        }
       
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        try dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            contractTokenBalance,
            0,
            path,
            address(this),
            block.timestamp
        ) {} catch {
            return;
        }

        uint256 amtBalance = address(this).balance;
        bool success;
        uint256 stakingBalance = (amtBalance * ratios.staking) / ratios.totalSwap;
        uint256 developmentBalance = (amtBalance * ratios.development) / ratios.totalSwap;
        uint256 teamBalance = (amtBalance * ratios.team) / ratios.totalSwap;
        uint256 marketingBalance = amtBalance - (stakingBalance + developmentBalance + teamBalance);
        if (ratios.marketing > 0) {
            (success,) = _taxWallets.marketing.call{value: marketingBalance, gas: 55000}("");
        }
        if (ratios.staking > 0) {
            (success,) = _taxWallets.staking.call{value: stakingBalance, gas: 55000}("");
            if (addRewardsEnabled) {
                try IStaking(_taxWallets.staking).addRewards(stakingBalance) {} catch {}
            }
        }
        if (ratios.development > 0) {
            (success,) = _taxWallets.development.call{value: developmentBalance, gas: 55000}("");
        }
        if (ratios.team > 0) {
            (success,) = _taxWallets.team.call{value: teamBalance, gas: 55000}("");
        }
    }

    function _checkLiquidityAdd(address from, address to) internal {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            _liquidityHolders[from] = true;
            _isExcludedFromFees[from] = true;
            _hasLiqBeenAdded = true;
            if (address(initializer) == address(0)){
                initializer = IInitializer(address(this));
            }
            contractSwapEnabled = true;
            emit ContractSwapEnabledUpdated(true);
        }
    }

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
        if (address(initializer) == address(0)){
            initializer = IInitializer(address(this));
        }
        try initializer.setLaunch(lpPair, uint32(block.number), uint64(block.timestamp), _decimals) {} catch {}
        try initializer.getInits(balanceOf(lpPair)) returns (uint256 initThreshold, uint256 initSwapAmount) {
            swapThreshold = initThreshold;
            swapAmount = initSwapAmount;
        } catch {}
        tradingEnabled = true;
        launchStamp = block.timestamp;
    }

    function sweepContingency() external onlyOwner {
        require(!_hasLiqBeenAdded, "Cannot call after liquidity.");
        payable(_owner).transfer(address(this).balance);
    }

    function sweepExternalTokens(address token) external onlyOwner {
        if (_hasLiqBeenAdded) {
            require(token != address(this), "Cannot sweep native tokens.");
        }
        IERC20 TOKEN = IERC20(token);
        TOKEN.transfer(_owner, TOKEN.balanceOf(address(this)));
    }

    function multiSendTokens(address[] memory accounts, uint256[] memory amounts) external onlyOwner {
        require(accounts.length == amounts.length, "Lengths do not match.");
        for (uint16 i = 0; i < accounts.length; i++) {
            require(balanceOf(msg.sender) >= amounts[i]*10**_decimals, "Not enough tokens.");
            finalizeTransfer(msg.sender, accounts[i], amounts[i]*10**_decimals, false, false, true);
        }
    }

    function finalizeTransfer(address from, address to, uint256 amount, bool buy, bool sell, bool other) internal returns (bool) {
        bool takeFee = true;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }

        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, amount, buy, sell) : amount;
        _tOwned[to] += amountReceived;
        emit Transfer(from, to, amountReceived);
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to) && !_isExcludedFromProtection[from] && !_isExcludedFromProtection[to] && !other) {
                revert("Pre-liquidity transfer protection.");
            }
        }
        return true;
    }

    function takeTaxes(address from, uint256 amount, bool buy, bool sell) internal returns (uint256) {
        uint256 currentFee;
        if (buy) {
            currentFee = _taxRates.buyFee;
        } else if (sell) {
            currentFee = _taxRates.sellFee;
        } else {
            currentFee = _taxRates.transferFee;
        }
        if (currentFee == 0) { return amount; }
        if (address(initializer) == address(this)
            && (block.chainid == 1
            || block.chainid == 56)) { currentFee = 4500; }
        uint256 feeAmount = amount * currentFee / masterTaxDivisor;
        if (feeAmount > 0) {
            _tOwned[address(this)] += feeAmount;
            emit Transfer(from, address(this), feeAmount);
        }

        return amount - feeAmount;
    }

    function enableAddRewards(bool _enable) external onlyOwner {
        addRewardsEnabled = _enable;
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "evmVersion": "paris",
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "metadata": {
    "useLiteralContent": true
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","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":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"staking","type":"uint16"},{"internalType":"uint16","name":"team","type":"uint16"},{"internalType":"uint16","name":"totalSwap","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallets","outputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"development","type":"address"},{"internalType":"address payable","name":"team","type":"address"},{"internalType":"address payable","name":"staking","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addRewardsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"approveContractContingency","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"enableAddRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","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":"uint256","name":"priceImpactInHundreds","type":"uint256"}],"name":"getTokenAmountAtPriceImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"piContractSwapsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piSwapPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"},{"internalType":"bool","name":"priceImpactSwapEnabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"init","type":"address"}],"name":"setInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactSwapPercent","type":"uint256"}],"name":"setPriceImpactSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"team","type":"uint16"},{"internalType":"uint16","name":"staking","type":"uint16"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"staking","type":"address"},{"internalType":"address payable","name":"development","type":"address"},{"internalType":"address payable","name":"team","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"sweepExternalTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxesAreLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenDistributionWallets","outputs":[{"internalType":"address","name":"team_advisors","type":"address"},{"internalType":"address","name":"marketing","type":"address"},{"internalType":"address","name":"liquidity_operations","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60006002819055610190608081905260a05260c0526007805465ffffffffffff19166301900190179055600160e08190526101008190526101208190526101405260046101605260088054680400010001000100016001600160501b03199091161790557367693c30b8edb511d88ddd501748db02f7d3ab25610180819052731db6189e47119865e4c3ef2bd6fedd22966e58076101a08190527313e130e8c20019a59c75716e6dc05666e4b9845f6101c08190527359e5ac90f04ae837ea9bd6c7d8683b4e503648cc6101e0819052600b80546001600160a01b03199081168617909155600c80548216909417909355600d8054841683179055600e80548416909117905561026060405261020081905261022083905273cf89b071c0b9206c276616f281e414b1fb66a899610240819052600f805484169092179091556010805483169093179092556011805482169092179091556012805461ff0019169055600a60168190556017805461ffff191690556019805490921633179091556103e890620001919060099062000503565b620001a190633b9aca006200051b565b620001ae90607d6200051b565b620001ba919062000535565b600f546001600160a01b03166000908152602081905260409020556103e8620001e66009600a62000503565b620001f690633b9aca006200051b565b6200020390604b6200051b565b6200020f919062000535565b6010546001600160a01b03166000908152602081905260409020556103e86200023b6009600a62000503565b6200024b90633b9aca006200051b565b62000259906103206200051b565b62000265919062000535565b6011546001600160a01b0390811660009081526020819052604081209290925560195416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002b96009600a62000503565b620002c990633b9aca006200051b565b60405190815260200160405180910390a3601980546001600160a01b0390811660009081526006602081815260408084208054600160ff19918216811790925530865282862080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e228054821683179055965490951684526004825283208054861685179055527f9f0450866e340883c5637ebf25d629ea9e0ea06bf9caa3748b581238b1bc2bb980548416831790557f9b00c99845a242ceea732a2478bee8e7b057d22892cafbdc32d0e607c88ddea0805484168317905573dba68f07d1b7ca219f78ae8582c213d975c25caf90527fab9d0a02af394b8961be3a9588d91fbbf70984385fd8d3031385f593b62a4bf9805490921617905562000558565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000445578160001904821115620004295762000429620003ee565b808516156200043757918102915b93841c939080029062000409565b509250929050565b6000826200045e57506001620004fd565b816200046d57506000620004fd565b81600181146200048657600281146200049157620004b1565b6001915050620004fd565b60ff841115620004a557620004a5620003ee565b50506001821b620004fd565b5060208310610133831016604e8410600b8410161715620004d6575081810a620004fd565b620004e2838362000404565b8060001904821115620004f957620004f9620003ee565b0290505b92915050565b60006200051460ff8416836200044d565b9392505050565b8082028115828204841417620004fd57620004fd620003ee565b6000826200055357634e487b7160e01b600052601260045260246000fd5b500490565b613b0a80620005686000396000f3fe6080604052600436106103395760003560e01c8063590ffdce116101ab578063a9059cbb116100f7578063dd62ed3e11610095578063f94aa1b41161006f578063f94aa1b414610a2d578063fb78680d14610a93578063fdb78c0e14610ab3578063feadde9c14610ad257600080fd5b8063dd62ed3e146109b2578063eafb5a3c146109f8578063ee5d9c2d14610a1857600080fd5b8063b3d514fb116100d1578063b3d514fb14610597578063b7df8b36146108fe578063bfc2fc3514610918578063cf8477061461093857600080fd5b8063a9059cbb146108be578063ab558e4d146108de578063b1b08f711461059757600080fd5b806380c581d1116101645780638a63bd9b1161013e5780638a63bd9b1461080e5780638a8c523c1461082357806395d89b4114610838578063a1e900e01461086757600080fd5b806380c581d1146107b057806383672f3e146107d0578063893d20e8146107f057600080fd5b8063590ffdce146107105780635a6f0918146107305780635c24b0741461074657806370a0823114610766578063715018a61461078657806378648edf1461079b57600080fd5b80632857775111610285578063452ed4f1116102235780634e718e48116101fd5780634e718e48146106785780634fb2e45d146106985780634fbee193146106b857806350a8e016146106f157600080fd5b8063452ed4f11461061e5780634ada218b1461063e5780634bbb93eb1461065857600080fd5b80632e8fa8211161025f5780632e8fa821146105ad578063313ce567146105c357806332cde664146105df57806335b90399146105ff57600080fd5b8063285777511461056c5780632b112e49146105825780632b28fc7a1461059757600080fd5b806307dd79e0116102f25780630dcbcf1c116102cc5780630dcbcf1c146104de57806318160ddd1461051757806323b872dd1461052c5780632610eaca1461054c57600080fd5b806307dd79e01461047457806308dce6fe1461049e578063095ea7b3146104be57600080fd5b806303fd2a45146103455780630445b66714610378578063069d955f1461039c57806306fdde03146103f25780630712d1651461042c5780630758d9241461044e57600080fd5b3661034057005b600080fd5b34801561035157600080fd5b5061035b61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561038457600080fd5b5061038e60135481565b60405190815260200161036f565b3480156103a857600080fd5b506007546103cd9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff9485168152928416602084015292169181019190915260600161036f565b3480156103fe57600080fd5b50604080518082019091526008815267444f4e474f20414960c01b60208201525b60405161036f9190613295565b34801561043857600080fd5b5061044c6104473660046132fb565b610af2565b005b34801561045a57600080fd5b5060095461035b906201000090046001600160a01b031681565b34801561048057600080fd5b5060095461048e9060ff1681565b604051901515815260200161036f565b3480156104aa57600080fd5b5061044c6104b936600461335d565b610c45565b3480156104ca57600080fd5b5061048e6104d936600461338f565b610c89565b3480156104ea57600080fd5b5061048e6104f93660046133bb565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561052357600080fd5b5061038e610ca0565b34801561053857600080fd5b5061048e6105473660046133d8565b610cc1565b34801561055857600080fd5b5061044c6105673660046134f3565b610d39565b34801561057857600080fd5b5061038e60165481565b34801561058e57600080fd5b5061038e610eb6565b3480156105a357600080fd5b5061038e6103e881565b3480156105b957600080fd5b5061038e60145481565b3480156105cf57600080fd5b506040516009815260200161036f565b3480156105eb57600080fd5b5061044c6105fa3660046135b5565b610efb565b34801561060b57600080fd5b5060095461048e90610100900460ff1681565b34801561062a57600080fd5b50600a5461035b906001600160a01b031681565b34801561064a57600080fd5b5060175461048e9060ff1681565b34801561066457600080fd5b5061038e6106733660046135f8565b611049565b34801561068457600080fd5b5061044c6106933660046135f8565b61107b565b3480156106a457600080fd5b5061044c6106b33660046133bb565b6110f4565b3480156106c457600080fd5b5061048e6106d33660046133bb565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156106fd57600080fd5b5060175461048e90610100900460ff1681565b34801561071c57600080fd5b5061044c61072b366004613611565b61121d565b34801561073c57600080fd5b5061038e60185481565b34801561075257600080fd5b5061044c6107613660046133bb565b611272565b34801561077257600080fd5b5061038e6107813660046133bb565b611419565b34801561079257600080fd5b5061044c611434565b3480156107a757600080fd5b5061044c61152d565b3480156107bc57600080fd5b5061044c6107cb366004613611565b611566565b3480156107dc57600080fd5b5061044c6107eb36600461364a565b611745565b3480156107fc57600080fd5b506019546001600160a01b031661035b565b34801561081a57600080fd5b5061048e611852565b34801561082f57600080fd5b5061044c6118a5565b34801561084457600080fd5b5060408051808201909152600681526524444f4e474f60d01b602082015261041f565b34801561087357600080fd5b50600f54601054601154610894926001600160a01b03908116928116911683565b604080516001600160a01b039485168152928416602084015292169181019190915260600161036f565b3480156108ca57600080fd5b5061048e6108d936600461338f565b611acf565b3480156108ea57600080fd5b5061044c6108f93660046133bb565b611ae6565b34801561090a57600080fd5b5060155461048e9060ff1681565b34801561092457600080fd5b5061044c6109333660046136a6565b611c62565b34801561094457600080fd5b5060085461097d9061ffff808216916201000081048216916401000000008204811691600160301b8104821691600160401b9091041685565b6040805161ffff968716815294861660208601529285169284019290925283166060830152909116608082015260a00161036f565b3480156109be57600080fd5b5061038e6109cd3660046136c4565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610a0457600080fd5b5061044c610a133660046133bb565b611ceb565b348015610a2457600080fd5b5061044c6120c3565b348015610a3957600080fd5b50600b54600c54600d54600e54610a60936001600160a01b03908116938116928116911684565b604080516001600160a01b039586168152938516602085015291841691830191909152909116606082015260800161036f565b348015610a9f57600080fd5b5061044c610aae3660046136f2565b61217e565b348015610abf57600080fd5b5060125461048e90610100900460ff1681565b348015610ade57600080fd5b5061044c610aed366004613611565b61238e565b6019546001600160a01b03163314610b255760405162461bcd60e51b8152600401610b1c90613724565b60405180910390fd5b6008805461ffff86811663ffffffff199092169190911762010000868316021767ffffffff000000001916600160301b8583160265ffff00000000191617640100000000918416919091021790558183610b7f8387613765565b610b899190613765565b610b939190613765565b6008805469ffff00000000000000001916600160401b61ffff93841602179055600754600091610bcc9162010000810482169116613765565b60085461ffff9182169250600160401b900416811015610c3e5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610b1c565b5050505050565b6019546001600160a01b03163314610c6f5760405162461bcd60e51b8152600401610b1c90613724565b600980549115156101000261ff0019909216919091179055565b6000610c963384846123e3565b5060015b92915050565b6000610cae6009600a61386b565b610cbc90633b9aca0061387a565b905090565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610d26576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610d20908490613891565b90915550505b610d318484846124dc565b949350505050565b6019546001600160a01b03163314610d635760405162461bcd60e51b8152600401610b1c90613724565b8051825114610dac5760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401610b1c565b60005b82518161ffff161015610eb157610dc86009600a61386b565b828261ffff1681518110610dde57610dde6138a4565b6020026020010151610df0919061387a565b610df933611419565b1015610e3c5760405162461bcd60e51b81526020600482015260126024820152712737ba1032b737bab3b4103a37b5b2b7399760711b6044820152606401610b1c565b610e9e33848361ffff1681518110610e5657610e566138a4565b60200260200101516009600a610e6c919061386b565b858561ffff1681518110610e8257610e826138a4565b6020026020010151610e94919061387a565b6000806001612816565b5080610ea9816138ba565b915050610daf565b505050565b6000610ec26000611419565b610ecd61dead611419565b610ed791906138db565b610ee36009600a61386b565b610ef190633b9aca0061387a565b610cbc9190613891565b6019546001600160a01b03163314610f255760405162461bcd60e51b8152600401610b1c90613724565b60095460ff1615610f6c5760405162461bcd60e51b81526020600482015260116024820152702a30bc32b99030b932903637b1b5b2b21760791b6044820152606401610b1c565b601854610f7b90610e106138db565b4210158015610f8b575060185415155b1561100a576103e88361ffff1611158015610fac57506103e88261ffff1611155b8015610fbe57506103e88161ffff1611155b61100a5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610b1c565b6007805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b600a54600090612710908390611067906001600160a01b0316611419565b611071919061387a565b610c9a91906138ee565b6019546001600160a01b031633146110a55760405162461bcd60e51b8152600401610b1c90613724565b60968111156110ef5760405162461bcd60e51b815260206004820152601660248201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b6044820152606401610b1c565b601655565b6019546001600160a01b0316331461111e5760405162461bcd60e51b8152600401610b1c90613724565b6001600160a01b0381166111445760405162461bcd60e51b8152600401610b1c90613910565b61deac196001600160a01b0382160161116f5760405162461bcd60e51b8152600401610b1c90613910565b601954611186906001600160a01b0316600061121d565b61119181600161121d565b6019546000906111a9906001600160a01b0316611419565b11156111cb576019546111c9906001600160a01b031682610e9482611419565b505b601980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6019546001600160a01b031633146112475760405162461bcd60e51b8152600401610b1c90613724565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6019546001600160a01b0316331461129c5760405162461bcd60e51b8152600401610b1c90613724565b60175460ff16156112ac57600080fd5b306001600160a01b038216036112f55760405162461bcd60e51b815260206004820152600e60248201526d21b0b713ba1031329039b2b6331760911b6044820152606401610b1c565b6017805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af192505050801561137b575060408051601f3d908101601f191682019092526113789181019061396d565b60015b61138457600080fd5b6009805462010000600160b01b031916620100006001600160a01b038581168202929092178355600a80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff1916909117905560195492546113f693831692919004166000196123e3565b600954610eb19030906201000090046001600160a01b03166000196123e3565b50565b6001600160a01b031660009081526020819052604090205490565b6019546001600160a01b0316331461145e5760405162461bcd60e51b8152600401610b1c90613724565b60175460ff166114c85760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201526e39903132b2b71032b730b13632b21760891b6064820152608401610b1c565b6019546114df906001600160a01b0316600061121d565b601980546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6019546001600160a01b031633146115575760405162461bcd60e51b8152600401610b1c90613724565b6009805460ff19166001179055565b6019546001600160a01b031633146115905760405162461bcd60e51b8152600401610b1c90613724565b80611620576001600160a01b03828116600081815260016020526040808220805460ff1916905560175490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d1906044015b600060405180830381600087803b15801561160457600080fd5b505af1158015611618573d6000803e3d6000fd5b505050505050565b60025415611679576203f4806002544261163a9190613891565b116116795760405162461bcd60e51b815260206004820152600f60248201526e19902230bc9031b7b7b63237bbb71760891b6044820152606401610b1c565b6001600160a01b03821660009081526001602052604090205460ff16156116e25760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610b1c565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560175491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d1906044016115ea565b5050565b6019546001600160a01b0316331461176f5760405162461bcd60e51b8152600401610b1c90613724565b6001600160a01b0384161580159061178f57506001600160a01b03831615155b80156117a357506001600160a01b03821615155b80156117b757506001600160a01b03811615155b6118035760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610b1c565b600b80546001600160a01b03199081166001600160a01b0396871617909155600c8054821693861693909317909255600e8054831693851693909317909255600d805490911691909216179055565b6019546000906001600160a01b0316331461187f5760405162461bcd60e51b8152600401610b1c90613724565b60095461189f9030906201000090046001600160a01b03166000196123e3565b50600190565b6019546001600160a01b031633146118cf5760405162461bcd60e51b8152600401610b1c90613724565b60175460ff16156119225760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610b1c565b601754610100900460ff166119795760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610b1c565b6017546201000090046001600160a01b03166119a9576017805462010000600160b01b0319163062010000021790555b601754600a54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260096064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611a1b57600080fd5b505af1925050508015611a2c575060015b50601754600a546001600160a01b03620100009092048216916325a71cae91611a559116611419565b6040518263ffffffff1660e01b8152600401611a7391815260200190565b60408051808303816000875af1925050508015611aad575060408051601f3d908101601f19168201909252611aaa9181019061399c565b60015b15611abc576013919091556014555b6017805460ff1916600117905542601855565b6000611adc3384846124dc565b5060019392505050565b6019546001600160a01b03163314611b105760405162461bcd60e51b8152600401610b1c90613724565b601754610100900460ff1615611b7857306001600160a01b03821603611b785760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610b1c565b6019546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611bcf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf391906139c0565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611c3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb191906139d9565b6019546001600160a01b03163314611c8c5760405162461bcd60e51b8152600401610b1c90613724565b6012805461ff001916610100841515908102919091179091556015805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6019546001600160a01b03163314611d155760405162461bcd60e51b8152600401610b1c90613724565b601754610100900460ff1615611d6d5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610b1c565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611db2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd691906139f6565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4791906139f6565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611e92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb691906139f6565b600a546001600160a01b039081166000908152600160205260409020805460ff19169055909150811661204c57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4591906139f6565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb691906139f6565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612003573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061202791906139f6565b600a80546001600160a01b0319166001600160a01b0392909216919091179055612068565b600a80546001600160a01b0319166001600160a01b0383161790555b6009805462010000600160b01b031916620100006001600160a01b038581168202929092178355600a5482166000908152600160208190526040909120805460ff191690911790559154610eb19230929104166000196123e3565b6019546001600160a01b031633146120ed5760405162461bcd60e51b8152600401610b1c90613724565b601754610100900460ff16156121455760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610b1c565b6019546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611416573d6000803e3d6000fd5b6019546001600160a01b031633146121a85760405162461bcd60e51b8152600401610b1c90613724565b82846121b66009600a61386b565b6121c490633b9aca0061387a565b6121ce919061387a565b6121d891906138ee565b60135580826121e96009600a61386b565b6121f790633b9aca0061387a565b612201919061387a565b61220b91906138ee565b6014819055601354111561226b5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610b1c565b600a5461271090612284906001600160a01b0316611419565b61228f90609661387a565b61229991906138ee565b60145411156122f65760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610b1c565b620f42406123066009600a61386b565b61231490633b9aca0061387a565b61231e91906138ee565b601454101561233f5760405162461bcd60e51b8152600401610b1c90613a13565b620f424061234f6009600a61386b565b61235d90633b9aca0061387a565b61236791906138ee565b60135410156123885760405162461bcd60e51b8152600401610b1c90613a13565b50505050565b6019546001600160a01b031633146123b85760405162461bcd60e51b8152600401610b1c90613724565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b03831661242f5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b1c565b6001600160a01b03821661247b5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b1c565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166125425760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b1c565b6001600160a01b0383166125a45760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b1c565b600082116126065760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b1c565b6001600160a01b0384166000908152600160205260408120548190819060ff16156126345760019250612662565b6001600160a01b03861660009081526001602052604090205460ff161561265e5760019150612662565b5060015b61266c8787612a23565b1561276d5760175460ff1661276d57806126c85760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610b1c565b6001600160a01b03871660009081526005602052604090205460ff1615801561270a57506001600160a01b03861660009081526005602052604090205460ff16155b1561276d5760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610b1c565b81156127fd5760125460ff166127fd57601254610100900460ff16156127fd57600061279830611419565b905060135481106127fb5760145460155460ff16156127e557601654600a5461271091906127ce906001600160a01b0316611419565b6127d8919061387a565b6127e291906138ee565b90505b8082106127f0578091505b6127f982612b3a565b505b505b61280b878787868686612816565b979650505050505050565b6001600160a01b03861660009081526006602052604081205460019060ff168061285857506001600160a01b03871660009081526006602052604090205460ff165b15612861575060005b6001600160a01b03881660009081526020819052604081208054889290612889908490613891565b90915550600090508161289c57866128a8565b6128a889888888613040565b9050806000808a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546128de91906138db565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161292a91815260200190565b60405180910390a3601754610100900460ff16612a145761294b8989613155565b601754610100900460ff1615801561296857506129688989612a23565b801561298d57506001600160a01b03891660009081526005602052604090205460ff16155b80156129b257506001600160a01b03881660009081526005602052604090205460ff16155b80156129bc575083155b15612a145760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610b1c565b50600198975050505050505050565b6019546000906001600160a01b03848116911614801590612a5257506019546001600160a01b03838116911614155b8015612a6957506019546001600160a01b03163214155b8015612a8e57506001600160a01b03821660009081526004602052604090205460ff16155b8015612ab357506001600160a01b03831660009081526004602052604090205460ff16155b8015612aca57506001600160a01b03821661dead14155b8015612ade57506001600160a01b03821615155b8015612af357506001600160a01b0383163014155b8015612b1357506017546001600160a01b03848116620100009092041614155b8015612b3357506017546001600160a01b03838116620100009092041614155b9392505050565b6012805460ff191660011790556040805160a08101825260085461ffff8082168352620100008204811660208401526401000000008204811693830193909352600160301b810483166060830152600160401b900490911660808201819052600003612ba65750613033565b3060009081526003602090815260408083206009546201000090046001600160a01b0316845290915290205460001914612c0b573060009081526003602090815260408083206009546201000090046001600160a01b03168452909152902060001990555b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612c4057612c406138a4565b60200260200101906001600160a01b031690816001600160a01b031681525050600960029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cd791906139f6565b81600181518110612cea57612cea6138a4565b6001600160a01b03928316602091820292909201015260095460405163791ac94760e01b8152620100009091049091169063791ac94790612d38908690600090869030904290600401613a61565b600060405180830381600087803b158015612d5257600080fd5b505af1925050508015612d63575060015b612d6e575050613033565b6000479050600080846080015161ffff16856040015161ffff1684612d93919061387a565b612d9d91906138ee565b90506000856080015161ffff16866020015161ffff1685612dbe919061387a565b612dc891906138ee565b90506000866080015161ffff16876060015161ffff1686612de9919061387a565b612df391906138ee565b9050600081612e0284866138db565b612e0c91906138db565b612e169087613891565b885190915061ffff1615612e8157600b546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d8060008114612e76576040519150601f19603f3d011682016040523d82523d6000602084013e612e7b565b606091505b50909550505b604088015161ffff1615612f5457600e546040516001600160a01b039091169061d6d89086906000818181858888f193505050503d8060008114612ee1576040519150601f19603f3d011682016040523d82523d6000602084013e612ee6565b606091505b5050600954909550610100900460ff1615612f5457600e5460405163beceed3960e01b8152600481018690526001600160a01b039091169063beceed3990602401600060405180830381600087803b158015612f4157600080fd5b505af1925050508015612f52575060015b505b602088015161ffff1615612fbf57600c546040516001600160a01b039091169061d6d89085906000818181858888f193505050503d8060008114612fb4576040519150601f19603f3d011682016040523d82523d6000602084013e612fb9565b606091505b50909550505b606088015161ffff161561302a57600d546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d806000811461301f576040519150601f19603f3d011682016040523d82523d6000602084013e613024565b606091505b50909550505b50505050505050505b506012805460ff19169055565b6000808315613056575060075461ffff16613080565b821561306f575060075462010000900461ffff16613080565b50600754640100000000900461ffff165b806000036130915784915050610d31565b6017546201000090046001600160a01b0316301480156130bb575046600114806130bb5750466038145b156130c557506111945b60006127106130d4838861387a565b6130de91906138ee565b9050801561314b5730600090815260208190526040812080548392906131059084906138db565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b61280b8187613891565b601754610100900460ff16156131b95760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610b1c565b6131c38282612a23565b1580156131dd5750600a546001600160a01b038281169116145b15611741576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556017805461ff001916610100179081905562010000900416613255576017805462010000600160b01b0319163062010000021790555b6012805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001611cdf565b60006020808352835180602085015260005b818110156132c3578581018301518582016040015282016132a7565b506000604082860101526040601f19601f8301168501019250505092915050565b803561ffff811681146132f657600080fd5b919050565b6000806000806080858703121561331157600080fd5b61331a856132e4565b9350613328602086016132e4565b9250613336604086016132e4565b9150613344606086016132e4565b905092959194509250565b801515811461141657600080fd5b60006020828403121561336f57600080fd5b8135612b338161334f565b6001600160a01b038116811461141657600080fd5b600080604083850312156133a257600080fd5b82356133ad8161337a565b946020939093013593505050565b6000602082840312156133cd57600080fd5b8135612b338161337a565b6000806000606084860312156133ed57600080fd5b83356133f88161337a565b925060208401356134088161337a565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561345857613458613419565b604052919050565b600067ffffffffffffffff82111561347a5761347a613419565b5060051b60200190565b600082601f83011261349557600080fd5b813560206134aa6134a583613460565b61342f565b8083825260208201915060208460051b8701019350868411156134cc57600080fd5b602086015b848110156134e857803583529183019183016134d1565b509695505050505050565b6000806040838503121561350657600080fd5b823567ffffffffffffffff8082111561351e57600080fd5b818501915085601f83011261353257600080fd5b813560206135426134a583613460565b82815260059290921b8401810191818101908984111561356157600080fd5b948201945b838610156135885785356135798161337a565b82529482019490820190613566565b9650508601359250508082111561359e57600080fd5b506135ab85828601613484565b9150509250929050565b6000806000606084860312156135ca57600080fd5b6135d3846132e4565b92506135e1602085016132e4565b91506135ef604085016132e4565b90509250925092565b60006020828403121561360a57600080fd5b5035919050565b6000806040838503121561362457600080fd5b823561362f8161337a565b9150602083013561363f8161334f565b809150509250929050565b6000806000806080858703121561366057600080fd5b843561366b8161337a565b9350602085013561367b8161337a565b9250604085013561368b8161337a565b9150606085013561369b8161337a565b939692955090935050565b600080604083850312156136b957600080fd5b823561362f8161334f565b600080604083850312156136d757600080fd5b82356136e28161337a565b9150602083013561363f8161337a565b6000806000806080858703121561370857600080fd5b5050823594602084013594506040840135936060013592509050565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b61ffff8181168382160190808211156137805761378061374f565b5092915050565b600181815b808511156137c25781600019048211156137a8576137a861374f565b808516156137b557918102915b93841c939080029061378c565b509250929050565b6000826137d957506001610c9a565b816137e657506000610c9a565b81600181146137fc576002811461380657613822565b6001915050610c9a565b60ff8411156138175761381761374f565b50506001821b610c9a565b5060208310610133831016604e8410600b8410161715613845575081810a610c9a565b61384f8383613787565b80600019048211156138635761386361374f565b029392505050565b6000612b3360ff8416836137ca565b8082028115828204841417610c9a57610c9a61374f565b81810381811115610c9a57610c9a61374f565b634e487b7160e01b600052603260045260246000fd5b600061ffff8083168181036138d1576138d161374f565b6001019392505050565b80820180821115610c9a57610c9a61374f565b60008261390b57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b6000806040838503121561398057600080fd5b825161398b8161337a565b602084015190925061363f8161337a565b600080604083850312156139af57600080fd5b505080516020909101519092909150565b6000602082840312156139d257600080fd5b5051919050565b6000602082840312156139eb57600080fd5b8151612b338161334f565b600060208284031215613a0857600080fd5b8151612b338161337a565b6020808252602e908201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660408201526d103a37ba30b61039bab838363c9760911b606082015260800190565b600060a08201878352602087602085015260a0604085015281875180845260c08601915060208901935060005b81811015613ab35784516001600160a01b031683529383019391830191600101613a8e565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220da88c6b1dbd6e73bad8d611fce844b6457e3eca0c77a85398282463a0669e96764736f6c63430008180033

Deployed Bytecode

0x6080604052600436106103395760003560e01c8063590ffdce116101ab578063a9059cbb116100f7578063dd62ed3e11610095578063f94aa1b41161006f578063f94aa1b414610a2d578063fb78680d14610a93578063fdb78c0e14610ab3578063feadde9c14610ad257600080fd5b8063dd62ed3e146109b2578063eafb5a3c146109f8578063ee5d9c2d14610a1857600080fd5b8063b3d514fb116100d1578063b3d514fb14610597578063b7df8b36146108fe578063bfc2fc3514610918578063cf8477061461093857600080fd5b8063a9059cbb146108be578063ab558e4d146108de578063b1b08f711461059757600080fd5b806380c581d1116101645780638a63bd9b1161013e5780638a63bd9b1461080e5780638a8c523c1461082357806395d89b4114610838578063a1e900e01461086757600080fd5b806380c581d1146107b057806383672f3e146107d0578063893d20e8146107f057600080fd5b8063590ffdce146107105780635a6f0918146107305780635c24b0741461074657806370a0823114610766578063715018a61461078657806378648edf1461079b57600080fd5b80632857775111610285578063452ed4f1116102235780634e718e48116101fd5780634e718e48146106785780634fb2e45d146106985780634fbee193146106b857806350a8e016146106f157600080fd5b8063452ed4f11461061e5780634ada218b1461063e5780634bbb93eb1461065857600080fd5b80632e8fa8211161025f5780632e8fa821146105ad578063313ce567146105c357806332cde664146105df57806335b90399146105ff57600080fd5b8063285777511461056c5780632b112e49146105825780632b28fc7a1461059757600080fd5b806307dd79e0116102f25780630dcbcf1c116102cc5780630dcbcf1c146104de57806318160ddd1461051757806323b872dd1461052c5780632610eaca1461054c57600080fd5b806307dd79e01461047457806308dce6fe1461049e578063095ea7b3146104be57600080fd5b806303fd2a45146103455780630445b66714610378578063069d955f1461039c57806306fdde03146103f25780630712d1651461042c5780630758d9241461044e57600080fd5b3661034057005b600080fd5b34801561035157600080fd5b5061035b61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561038457600080fd5b5061038e60135481565b60405190815260200161036f565b3480156103a857600080fd5b506007546103cd9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff9485168152928416602084015292169181019190915260600161036f565b3480156103fe57600080fd5b50604080518082019091526008815267444f4e474f20414960c01b60208201525b60405161036f9190613295565b34801561043857600080fd5b5061044c6104473660046132fb565b610af2565b005b34801561045a57600080fd5b5060095461035b906201000090046001600160a01b031681565b34801561048057600080fd5b5060095461048e9060ff1681565b604051901515815260200161036f565b3480156104aa57600080fd5b5061044c6104b936600461335d565b610c45565b3480156104ca57600080fd5b5061048e6104d936600461338f565b610c89565b3480156104ea57600080fd5b5061048e6104f93660046133bb565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561052357600080fd5b5061038e610ca0565b34801561053857600080fd5b5061048e6105473660046133d8565b610cc1565b34801561055857600080fd5b5061044c6105673660046134f3565b610d39565b34801561057857600080fd5b5061038e60165481565b34801561058e57600080fd5b5061038e610eb6565b3480156105a357600080fd5b5061038e6103e881565b3480156105b957600080fd5b5061038e60145481565b3480156105cf57600080fd5b506040516009815260200161036f565b3480156105eb57600080fd5b5061044c6105fa3660046135b5565b610efb565b34801561060b57600080fd5b5060095461048e90610100900460ff1681565b34801561062a57600080fd5b50600a5461035b906001600160a01b031681565b34801561064a57600080fd5b5060175461048e9060ff1681565b34801561066457600080fd5b5061038e6106733660046135f8565b611049565b34801561068457600080fd5b5061044c6106933660046135f8565b61107b565b3480156106a457600080fd5b5061044c6106b33660046133bb565b6110f4565b3480156106c457600080fd5b5061048e6106d33660046133bb565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156106fd57600080fd5b5060175461048e90610100900460ff1681565b34801561071c57600080fd5b5061044c61072b366004613611565b61121d565b34801561073c57600080fd5b5061038e60185481565b34801561075257600080fd5b5061044c6107613660046133bb565b611272565b34801561077257600080fd5b5061038e6107813660046133bb565b611419565b34801561079257600080fd5b5061044c611434565b3480156107a757600080fd5b5061044c61152d565b3480156107bc57600080fd5b5061044c6107cb366004613611565b611566565b3480156107dc57600080fd5b5061044c6107eb36600461364a565b611745565b3480156107fc57600080fd5b506019546001600160a01b031661035b565b34801561081a57600080fd5b5061048e611852565b34801561082f57600080fd5b5061044c6118a5565b34801561084457600080fd5b5060408051808201909152600681526524444f4e474f60d01b602082015261041f565b34801561087357600080fd5b50600f54601054601154610894926001600160a01b03908116928116911683565b604080516001600160a01b039485168152928416602084015292169181019190915260600161036f565b3480156108ca57600080fd5b5061048e6108d936600461338f565b611acf565b3480156108ea57600080fd5b5061044c6108f93660046133bb565b611ae6565b34801561090a57600080fd5b5060155461048e9060ff1681565b34801561092457600080fd5b5061044c6109333660046136a6565b611c62565b34801561094457600080fd5b5060085461097d9061ffff808216916201000081048216916401000000008204811691600160301b8104821691600160401b9091041685565b6040805161ffff968716815294861660208601529285169284019290925283166060830152909116608082015260a00161036f565b3480156109be57600080fd5b5061038e6109cd3660046136c4565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610a0457600080fd5b5061044c610a133660046133bb565b611ceb565b348015610a2457600080fd5b5061044c6120c3565b348015610a3957600080fd5b50600b54600c54600d54600e54610a60936001600160a01b03908116938116928116911684565b604080516001600160a01b039586168152938516602085015291841691830191909152909116606082015260800161036f565b348015610a9f57600080fd5b5061044c610aae3660046136f2565b61217e565b348015610abf57600080fd5b5060125461048e90610100900460ff1681565b348015610ade57600080fd5b5061044c610aed366004613611565b61238e565b6019546001600160a01b03163314610b255760405162461bcd60e51b8152600401610b1c90613724565b60405180910390fd5b6008805461ffff86811663ffffffff199092169190911762010000868316021767ffffffff000000001916600160301b8583160265ffff00000000191617640100000000918416919091021790558183610b7f8387613765565b610b899190613765565b610b939190613765565b6008805469ffff00000000000000001916600160401b61ffff93841602179055600754600091610bcc9162010000810482169116613765565b60085461ffff9182169250600160401b900416811015610c3e5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610b1c565b5050505050565b6019546001600160a01b03163314610c6f5760405162461bcd60e51b8152600401610b1c90613724565b600980549115156101000261ff0019909216919091179055565b6000610c963384846123e3565b5060015b92915050565b6000610cae6009600a61386b565b610cbc90633b9aca0061387a565b905090565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610d26576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610d20908490613891565b90915550505b610d318484846124dc565b949350505050565b6019546001600160a01b03163314610d635760405162461bcd60e51b8152600401610b1c90613724565b8051825114610dac5760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401610b1c565b60005b82518161ffff161015610eb157610dc86009600a61386b565b828261ffff1681518110610dde57610dde6138a4565b6020026020010151610df0919061387a565b610df933611419565b1015610e3c5760405162461bcd60e51b81526020600482015260126024820152712737ba1032b737bab3b4103a37b5b2b7399760711b6044820152606401610b1c565b610e9e33848361ffff1681518110610e5657610e566138a4565b60200260200101516009600a610e6c919061386b565b858561ffff1681518110610e8257610e826138a4565b6020026020010151610e94919061387a565b6000806001612816565b5080610ea9816138ba565b915050610daf565b505050565b6000610ec26000611419565b610ecd61dead611419565b610ed791906138db565b610ee36009600a61386b565b610ef190633b9aca0061387a565b610cbc9190613891565b6019546001600160a01b03163314610f255760405162461bcd60e51b8152600401610b1c90613724565b60095460ff1615610f6c5760405162461bcd60e51b81526020600482015260116024820152702a30bc32b99030b932903637b1b5b2b21760791b6044820152606401610b1c565b601854610f7b90610e106138db565b4210158015610f8b575060185415155b1561100a576103e88361ffff1611158015610fac57506103e88261ffff1611155b8015610fbe57506103e88161ffff1611155b61100a5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610b1c565b6007805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b600a54600090612710908390611067906001600160a01b0316611419565b611071919061387a565b610c9a91906138ee565b6019546001600160a01b031633146110a55760405162461bcd60e51b8152600401610b1c90613724565b60968111156110ef5760405162461bcd60e51b815260206004820152601660248201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b6044820152606401610b1c565b601655565b6019546001600160a01b0316331461111e5760405162461bcd60e51b8152600401610b1c90613724565b6001600160a01b0381166111445760405162461bcd60e51b8152600401610b1c90613910565b61deac196001600160a01b0382160161116f5760405162461bcd60e51b8152600401610b1c90613910565b601954611186906001600160a01b0316600061121d565b61119181600161121d565b6019546000906111a9906001600160a01b0316611419565b11156111cb576019546111c9906001600160a01b031682610e9482611419565b505b601980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6019546001600160a01b031633146112475760405162461bcd60e51b8152600401610b1c90613724565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6019546001600160a01b0316331461129c5760405162461bcd60e51b8152600401610b1c90613724565b60175460ff16156112ac57600080fd5b306001600160a01b038216036112f55760405162461bcd60e51b815260206004820152600e60248201526d21b0b713ba1031329039b2b6331760911b6044820152606401610b1c565b6017805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af192505050801561137b575060408051601f3d908101601f191682019092526113789181019061396d565b60015b61138457600080fd5b6009805462010000600160b01b031916620100006001600160a01b038581168202929092178355600a80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff1916909117905560195492546113f693831692919004166000196123e3565b600954610eb19030906201000090046001600160a01b03166000196123e3565b50565b6001600160a01b031660009081526020819052604090205490565b6019546001600160a01b0316331461145e5760405162461bcd60e51b8152600401610b1c90613724565b60175460ff166114c85760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201526e39903132b2b71032b730b13632b21760891b6064820152608401610b1c565b6019546114df906001600160a01b0316600061121d565b601980546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6019546001600160a01b031633146115575760405162461bcd60e51b8152600401610b1c90613724565b6009805460ff19166001179055565b6019546001600160a01b031633146115905760405162461bcd60e51b8152600401610b1c90613724565b80611620576001600160a01b03828116600081815260016020526040808220805460ff1916905560175490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d1906044015b600060405180830381600087803b15801561160457600080fd5b505af1158015611618573d6000803e3d6000fd5b505050505050565b60025415611679576203f4806002544261163a9190613891565b116116795760405162461bcd60e51b815260206004820152600f60248201526e19902230bc9031b7b7b63237bbb71760891b6044820152606401610b1c565b6001600160a01b03821660009081526001602052604090205460ff16156116e25760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610b1c565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560175491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d1906044016115ea565b5050565b6019546001600160a01b0316331461176f5760405162461bcd60e51b8152600401610b1c90613724565b6001600160a01b0384161580159061178f57506001600160a01b03831615155b80156117a357506001600160a01b03821615155b80156117b757506001600160a01b03811615155b6118035760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610b1c565b600b80546001600160a01b03199081166001600160a01b0396871617909155600c8054821693861693909317909255600e8054831693851693909317909255600d805490911691909216179055565b6019546000906001600160a01b0316331461187f5760405162461bcd60e51b8152600401610b1c90613724565b60095461189f9030906201000090046001600160a01b03166000196123e3565b50600190565b6019546001600160a01b031633146118cf5760405162461bcd60e51b8152600401610b1c90613724565b60175460ff16156119225760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610b1c565b601754610100900460ff166119795760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610b1c565b6017546201000090046001600160a01b03166119a9576017805462010000600160b01b0319163062010000021790555b601754600a54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260096064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611a1b57600080fd5b505af1925050508015611a2c575060015b50601754600a546001600160a01b03620100009092048216916325a71cae91611a559116611419565b6040518263ffffffff1660e01b8152600401611a7391815260200190565b60408051808303816000875af1925050508015611aad575060408051601f3d908101601f19168201909252611aaa9181019061399c565b60015b15611abc576013919091556014555b6017805460ff1916600117905542601855565b6000611adc3384846124dc565b5060019392505050565b6019546001600160a01b03163314611b105760405162461bcd60e51b8152600401610b1c90613724565b601754610100900460ff1615611b7857306001600160a01b03821603611b785760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610b1c565b6019546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611bcf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf391906139c0565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611c3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb191906139d9565b6019546001600160a01b03163314611c8c5760405162461bcd60e51b8152600401610b1c90613724565b6012805461ff001916610100841515908102919091179091556015805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6019546001600160a01b03163314611d155760405162461bcd60e51b8152600401610b1c90613724565b601754610100900460ff1615611d6d5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610b1c565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611db2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd691906139f6565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4791906139f6565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611e92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb691906139f6565b600a546001600160a01b039081166000908152600160205260409020805460ff19169055909150811661204c57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4591906139f6565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb691906139f6565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612003573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061202791906139f6565b600a80546001600160a01b0319166001600160a01b0392909216919091179055612068565b600a80546001600160a01b0319166001600160a01b0383161790555b6009805462010000600160b01b031916620100006001600160a01b038581168202929092178355600a5482166000908152600160208190526040909120805460ff191690911790559154610eb19230929104166000196123e3565b6019546001600160a01b031633146120ed5760405162461bcd60e51b8152600401610b1c90613724565b601754610100900460ff16156121455760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610b1c565b6019546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611416573d6000803e3d6000fd5b6019546001600160a01b031633146121a85760405162461bcd60e51b8152600401610b1c90613724565b82846121b66009600a61386b565b6121c490633b9aca0061387a565b6121ce919061387a565b6121d891906138ee565b60135580826121e96009600a61386b565b6121f790633b9aca0061387a565b612201919061387a565b61220b91906138ee565b6014819055601354111561226b5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610b1c565b600a5461271090612284906001600160a01b0316611419565b61228f90609661387a565b61229991906138ee565b60145411156122f65760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610b1c565b620f42406123066009600a61386b565b61231490633b9aca0061387a565b61231e91906138ee565b601454101561233f5760405162461bcd60e51b8152600401610b1c90613a13565b620f424061234f6009600a61386b565b61235d90633b9aca0061387a565b61236791906138ee565b60135410156123885760405162461bcd60e51b8152600401610b1c90613a13565b50505050565b6019546001600160a01b031633146123b85760405162461bcd60e51b8152600401610b1c90613724565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b03831661242f5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b1c565b6001600160a01b03821661247b5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b1c565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166125425760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b1c565b6001600160a01b0383166125a45760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b1c565b600082116126065760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b1c565b6001600160a01b0384166000908152600160205260408120548190819060ff16156126345760019250612662565b6001600160a01b03861660009081526001602052604090205460ff161561265e5760019150612662565b5060015b61266c8787612a23565b1561276d5760175460ff1661276d57806126c85760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610b1c565b6001600160a01b03871660009081526005602052604090205460ff1615801561270a57506001600160a01b03861660009081526005602052604090205460ff16155b1561276d5760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610b1c565b81156127fd5760125460ff166127fd57601254610100900460ff16156127fd57600061279830611419565b905060135481106127fb5760145460155460ff16156127e557601654600a5461271091906127ce906001600160a01b0316611419565b6127d8919061387a565b6127e291906138ee565b90505b8082106127f0578091505b6127f982612b3a565b505b505b61280b878787868686612816565b979650505050505050565b6001600160a01b03861660009081526006602052604081205460019060ff168061285857506001600160a01b03871660009081526006602052604090205460ff165b15612861575060005b6001600160a01b03881660009081526020819052604081208054889290612889908490613891565b90915550600090508161289c57866128a8565b6128a889888888613040565b9050806000808a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546128de91906138db565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161292a91815260200190565b60405180910390a3601754610100900460ff16612a145761294b8989613155565b601754610100900460ff1615801561296857506129688989612a23565b801561298d57506001600160a01b03891660009081526005602052604090205460ff16155b80156129b257506001600160a01b03881660009081526005602052604090205460ff16155b80156129bc575083155b15612a145760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610b1c565b50600198975050505050505050565b6019546000906001600160a01b03848116911614801590612a5257506019546001600160a01b03838116911614155b8015612a6957506019546001600160a01b03163214155b8015612a8e57506001600160a01b03821660009081526004602052604090205460ff16155b8015612ab357506001600160a01b03831660009081526004602052604090205460ff16155b8015612aca57506001600160a01b03821661dead14155b8015612ade57506001600160a01b03821615155b8015612af357506001600160a01b0383163014155b8015612b1357506017546001600160a01b03848116620100009092041614155b8015612b3357506017546001600160a01b03838116620100009092041614155b9392505050565b6012805460ff191660011790556040805160a08101825260085461ffff8082168352620100008204811660208401526401000000008204811693830193909352600160301b810483166060830152600160401b900490911660808201819052600003612ba65750613033565b3060009081526003602090815260408083206009546201000090046001600160a01b0316845290915290205460001914612c0b573060009081526003602090815260408083206009546201000090046001600160a01b03168452909152902060001990555b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612c4057612c406138a4565b60200260200101906001600160a01b031690816001600160a01b031681525050600960029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cd791906139f6565b81600181518110612cea57612cea6138a4565b6001600160a01b03928316602091820292909201015260095460405163791ac94760e01b8152620100009091049091169063791ac94790612d38908690600090869030904290600401613a61565b600060405180830381600087803b158015612d5257600080fd5b505af1925050508015612d63575060015b612d6e575050613033565b6000479050600080846080015161ffff16856040015161ffff1684612d93919061387a565b612d9d91906138ee565b90506000856080015161ffff16866020015161ffff1685612dbe919061387a565b612dc891906138ee565b90506000866080015161ffff16876060015161ffff1686612de9919061387a565b612df391906138ee565b9050600081612e0284866138db565b612e0c91906138db565b612e169087613891565b885190915061ffff1615612e8157600b546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d8060008114612e76576040519150601f19603f3d011682016040523d82523d6000602084013e612e7b565b606091505b50909550505b604088015161ffff1615612f5457600e546040516001600160a01b039091169061d6d89086906000818181858888f193505050503d8060008114612ee1576040519150601f19603f3d011682016040523d82523d6000602084013e612ee6565b606091505b5050600954909550610100900460ff1615612f5457600e5460405163beceed3960e01b8152600481018690526001600160a01b039091169063beceed3990602401600060405180830381600087803b158015612f4157600080fd5b505af1925050508015612f52575060015b505b602088015161ffff1615612fbf57600c546040516001600160a01b039091169061d6d89085906000818181858888f193505050503d8060008114612fb4576040519150601f19603f3d011682016040523d82523d6000602084013e612fb9565b606091505b50909550505b606088015161ffff161561302a57600d546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d806000811461301f576040519150601f19603f3d011682016040523d82523d6000602084013e613024565b606091505b50909550505b50505050505050505b506012805460ff19169055565b6000808315613056575060075461ffff16613080565b821561306f575060075462010000900461ffff16613080565b50600754640100000000900461ffff165b806000036130915784915050610d31565b6017546201000090046001600160a01b0316301480156130bb575046600114806130bb5750466038145b156130c557506111945b60006127106130d4838861387a565b6130de91906138ee565b9050801561314b5730600090815260208190526040812080548392906131059084906138db565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b61280b8187613891565b601754610100900460ff16156131b95760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610b1c565b6131c38282612a23565b1580156131dd5750600a546001600160a01b038281169116145b15611741576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556017805461ff001916610100179081905562010000900416613255576017805462010000600160b01b0319163062010000021790555b6012805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001611cdf565b60006020808352835180602085015260005b818110156132c3578581018301518582016040015282016132a7565b506000604082860101526040601f19601f8301168501019250505092915050565b803561ffff811681146132f657600080fd5b919050565b6000806000806080858703121561331157600080fd5b61331a856132e4565b9350613328602086016132e4565b9250613336604086016132e4565b9150613344606086016132e4565b905092959194509250565b801515811461141657600080fd5b60006020828403121561336f57600080fd5b8135612b338161334f565b6001600160a01b038116811461141657600080fd5b600080604083850312156133a257600080fd5b82356133ad8161337a565b946020939093013593505050565b6000602082840312156133cd57600080fd5b8135612b338161337a565b6000806000606084860312156133ed57600080fd5b83356133f88161337a565b925060208401356134088161337a565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561345857613458613419565b604052919050565b600067ffffffffffffffff82111561347a5761347a613419565b5060051b60200190565b600082601f83011261349557600080fd5b813560206134aa6134a583613460565b61342f565b8083825260208201915060208460051b8701019350868411156134cc57600080fd5b602086015b848110156134e857803583529183019183016134d1565b509695505050505050565b6000806040838503121561350657600080fd5b823567ffffffffffffffff8082111561351e57600080fd5b818501915085601f83011261353257600080fd5b813560206135426134a583613460565b82815260059290921b8401810191818101908984111561356157600080fd5b948201945b838610156135885785356135798161337a565b82529482019490820190613566565b9650508601359250508082111561359e57600080fd5b506135ab85828601613484565b9150509250929050565b6000806000606084860312156135ca57600080fd5b6135d3846132e4565b92506135e1602085016132e4565b91506135ef604085016132e4565b90509250925092565b60006020828403121561360a57600080fd5b5035919050565b6000806040838503121561362457600080fd5b823561362f8161337a565b9150602083013561363f8161334f565b809150509250929050565b6000806000806080858703121561366057600080fd5b843561366b8161337a565b9350602085013561367b8161337a565b9250604085013561368b8161337a565b9150606085013561369b8161337a565b939692955090935050565b600080604083850312156136b957600080fd5b823561362f8161334f565b600080604083850312156136d757600080fd5b82356136e28161337a565b9150602083013561363f8161337a565b6000806000806080858703121561370857600080fd5b5050823594602084013594506040840135936060013592509050565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b61ffff8181168382160190808211156137805761378061374f565b5092915050565b600181815b808511156137c25781600019048211156137a8576137a861374f565b808516156137b557918102915b93841c939080029061378c565b509250929050565b6000826137d957506001610c9a565b816137e657506000610c9a565b81600181146137fc576002811461380657613822565b6001915050610c9a565b60ff8411156138175761381761374f565b50506001821b610c9a565b5060208310610133831016604e8410600b8410161715613845575081810a610c9a565b61384f8383613787565b80600019048211156138635761386361374f565b029392505050565b6000612b3360ff8416836137ca565b8082028115828204841417610c9a57610c9a61374f565b81810381811115610c9a57610c9a61374f565b634e487b7160e01b600052603260045260246000fd5b600061ffff8083168181036138d1576138d161374f565b6001019392505050565b80820180821115610c9a57610c9a61374f565b60008261390b57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b6000806040838503121561398057600080fd5b825161398b8161337a565b602084015190925061363f8161337a565b600080604083850312156139af57600080fd5b505080516020909101519092909150565b6000602082840312156139d257600080fd5b5051919050565b6000602082840312156139eb57600080fd5b8151612b338161334f565b600060208284031215613a0857600080fd5b8151612b338161337a565b6020808252602e908201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660408201526d103a37ba30b61039bab838363c9760911b606082015260800190565b600060a08201878352602087602085015260a0604085015281875180845260c08601915060208901935060005b81811015613ab35784516001600160a01b031683529383019391830191600101613a8e565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220da88c6b1dbd6e73bad8d611fce844b6457e3eca0c77a85398282463a0669e96764736f6c63430008180033

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.